summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/standard/basic_functions.c5
-rw-r--r--ext/standard/basic_functions.h4
-rw-r--r--ext/standard/html.c1573
-rw-r--r--ext/standard/html.h39
-rw-r--r--ext/standard/html_tables.h7753
-rw-r--r--ext/standard/html_tables/ents_basic.txt5
-rw-r--r--ext/standard/html_tables/ents_basic_apos.txt5
-rw-r--r--ext/standard/html_tables/ents_html401.txt253
-rw-r--r--ext/standard/html_tables/ents_html5.txt2125
-rw-r--r--ext/standard/html_tables/ents_xhtml.txt253
-rw-r--r--ext/standard/html_tables/html_table_gen.php820
-rw-r--r--ext/standard/html_tables/mappings/8859-1.TXT303
-rw-r--r--ext/standard/html_tables/mappings/8859-15.TXT303
-rw-r--r--ext/standard/html_tables/mappings/8859-5.TXT303
-rw-r--r--ext/standard/html_tables/mappings/CP1251.TXT274
-rw-r--r--ext/standard/html_tables/mappings/CP1252.TXT274
-rw-r--r--ext/standard/html_tables/mappings/CP866.TXT275
-rw-r--r--ext/standard/html_tables/mappings/KOI8-R.TXT302
-rw-r--r--ext/standard/html_tables/mappings/ROMAN.TXT370
-rw-r--r--ext/standard/tests/strings/bug49785.phpt293
-rw-r--r--ext/standard/tests/strings/get_html_translation_table_basic1.phpt1094
-rw-r--r--ext/standard/tests/strings/get_html_translation_table_basic2.phpt2494
-rw-r--r--ext/standard/tests/strings/get_html_translation_table_basic3.phpt36
-rw-r--r--ext/standard/tests/strings/get_html_translation_table_basic4.phpt352
-rw-r--r--ext/standard/tests/strings/get_html_translation_table_basic5.phpt1598
-rw-r--r--ext/standard/tests/strings/get_html_translation_table_basic6.phpt249
-rw-r--r--ext/standard/tests/strings/get_html_translation_table_basic7.phpt342
-rw-r--r--ext/standard/tests/strings/get_html_translation_table_basic8.phpt93
-rw-r--r--ext/standard/tests/strings/get_html_translation_table_basic9.phpt95
-rw-r--r--ext/standard/tests/strings/get_html_translation_table_variation1.phpt108
-rw-r--r--ext/standard/tests/strings/html_entity_decode1.phpt67
-rw-r--r--ext/standard/tests/strings/html_entity_decode2.phpt33
-rw-r--r--ext/standard/tests/strings/html_entity_decode3.phpt193
-rw-r--r--ext/standard/tests/strings/html_entity_decode_cp866.phpt4
-rw-r--r--ext/standard/tests/strings/html_entity_decode_html4.phpt504
-rw-r--r--ext/standard/tests/strings/html_entity_decode_html5.phpt4264
-rw-r--r--ext/standard/tests/strings/htmlentities13.phpt4
-rw-r--r--ext/standard/tests/strings/htmlentities14.phpt4
-rw-r--r--ext/standard/tests/strings/htmlentities16.phpt6
-rw-r--r--ext/standard/tests/strings/htmlentities18.phpt4
-rw-r--r--ext/standard/tests/strings/htmlentities19.phpt30
-rw-r--r--ext/standard/tests/strings/htmlentities20.phpt199
-rw-r--r--ext/standard/tests/strings/htmlentities21.phpt198
-rw-r--r--ext/standard/tests/strings/htmlentities22.phpt283
-rw-r--r--ext/standard/tests/strings/htmlentities23.phpt95
-rw-r--r--ext/standard/tests/strings/htmlentities_html5.phpt1623
-rw-r--r--ext/standard/tests/strings/htmlspecialchars_decode_variation7.phpt192
47 files changed, 24857 insertions, 4839 deletions
diff --git a/ext/standard/basic_functions.c b/ext/standard/basic_functions.c
index 6991972119..930bb30332 100644
--- a/ext/standard/basic_functions.c
+++ b/ext/standard/basic_functions.c
@@ -3433,7 +3433,6 @@ static void basic_globals_ctor(php_basic_globals *basic_globals_p TSRMLS_DC) /*
BG(left) = -1;
BG(user_tick_functions) = NULL;
BG(user_filter_map) = NULL;
- BG(inverse_ent_maps) = NULL;
memset(&BG(serialize), 0, sizeof(BG(serialize)));
memset(&BG(unserialize), 0, sizeof(BG(unserialize)));
@@ -3456,10 +3455,6 @@ static void basic_globals_dtor(php_basic_globals *basic_globals_p TSRMLS_DC) /*
zend_hash_destroy(BG(url_adapt_state_ex).tags);
free(BG(url_adapt_state_ex).tags);
}
- if (BG(inverse_ent_maps)) {
- zend_hash_destroy(BG(inverse_ent_maps));
- pefree(BG(inverse_ent_maps), 1);
- }
}
/* }}} */
diff --git a/ext/standard/basic_functions.h b/ext/standard/basic_functions.h
index edc5846e0a..4498e6cf8f 100644
--- a/ext/standard/basic_functions.h
+++ b/ext/standard/basic_functions.h
@@ -220,10 +220,6 @@ typedef struct _php_basic_globals {
HashTable *user_filter_map;
- /* html.c */
- /* map entities to characters. Stores hash table pointers for each charset */
- HashTable *inverse_ent_maps;
-
/* file.c */
#if defined(_REENTRANT) && defined(HAVE_MBRLEN) && defined(HAVE_MBSTATE_T)
mbstate_t mblen_state;
diff --git a/ext/standard/html.c b/ext/standard/html.c
index 5d683e237b..7ca8416fe3 100644
--- a/ext/standard/html.c
+++ b/ext/standard/html.c
@@ -24,16 +24,18 @@
/*
* HTML entity resources:
*
- * http://msdn.microsoft.com/workshop/author/dhtml/reference/charsets/charset2.asp
- * http://msdn.microsoft.com/workshop/author/dhtml/reference/charsets/charset3.asp
* http://www.unicode.org/Public/MAPPINGS/OBSOLETE/UNI2SGML.TXT
*
+ * XHTML 1.0 DTD
* http://www.w3.org/TR/2002/REC-xhtml1-20020801/dtds.html#h-A2
*
* From HTML 4.01 strict DTD:
* http://www.w3.org/TR/html4/HTMLlat1.ent
* http://www.w3.org/TR/html4/HTMLsymbol.ent
* http://www.w3.org/TR/html4/HTMLspecial.ent
+ *
+ * HTML 5:
+ * http://dev.w3.org/html5/spec/Overview.html#named-character-references
*/
#include "php.h"
@@ -57,244 +59,296 @@
ZEND_EXTERN_MODULE_GLOBALS(mbstring)
#endif
+#include <zend_hash.h>
#include "html_tables.h"
-#define MB_RETURN { \
- *newpos = pos; \
- mbseq[mbpos] = '\0'; \
- *mbseqlen = mbpos; \
- return this_char; }
-
-#define MB_WRITE(mbchar) { \
- mbspace--; \
- if (mbspace == 0) { \
- MB_RETURN; \
- } \
- mbseq[mbpos++] = (mbchar); }
-
-/* skip one byte and return */
-#define MB_FAILURE(pos) do { \
- *newpos = pos + 1; \
+/* Macro for disabling flag of translation of non-basic entities where this isn't supported.
+ * Not appropriate for html_entity_decode/htmlspecialchars_decode */
+#define LIMIT_ALL(all, doctype, charset) do { \
+ if ((all) && (CHARSET_PARTIAL_SUPPORT((charset)) || (doctype) == ENT_HTML_DOC_XML1)) \
+ (all) = 0; \
+} while (0)
+
+#define MB_FAILURE(pos, advance) do { \
+ *cursor = pos + (advance); \
*status = FAILURE; \
return 0; \
} while (0)
-#define CHECK_LEN(pos, chars_need) \
- if (chars_need < 1) { \
- if((str_len - (pos)) < chars_need) { \
- *newpos = pos; \
- *status = FAILURE; \
- return 0; \
- } \
- } else { \
- if((str_len - (pos)) < chars_need) { \
- *newpos = pos + 1; \
- *status = FAILURE; \
- return 0; \
- } \
- }
+#define CHECK_LEN(pos, chars_need) ((str_len - (pos)) >= (chars_need))
+
+/* valid as single byte character or leading byte */
+#define utf8_lead(c) ((c) < 0x80 || ((c) >= 0xC2 && (c) <= 0xF4))
+/* whether it's actually valid depends on other stuff;
+ * this macro cannot check for non-shortest forms, surrogates or
+ * code points above 0x10FFFF */
+#define utf8_trail(c) ((c) >= 0x80 && (c) <= 0xBF)
+
+#define gb2312_lead(c) ((c) != 0x8E && (c) != 0x8F && (c) != 0xA0 && (c) != 0xFF)
+#define gb2312_trail(c) ((c) >= 0xA1 && (c) <= 0xFE)
+
+#define sjis_lead(c) ((c) != 0x80 && (c) != 0xA0 && (c) < 0xFD)
+#define sjis_trail(c) ((c) >= 0x40 && (c) != 0x7F && (c) < 0xFD)
/* {{{ get_next_char
*/
-inline static unsigned int get_next_char(enum entity_charset charset,
- unsigned char * str,
- int str_len,
- int * newpos,
- unsigned char * mbseq,
- int * mbseqlen,
+static unsigned int get_next_char(
+ enum entity_charset charset,
+ unsigned char *str,
+ size_t str_len,
+ size_t *cursor,
int *status)
{
- int pos = *newpos;
- int mbpos = 0;
- int mbspace = *mbseqlen;
+ size_t pos = *cursor;
unsigned int this_char = 0;
- unsigned char next_char;
*status = SUCCESS;
+ assert(pos <= str_len);
- if (mbspace <= 0) {
- *mbseqlen = 0;
- CHECK_LEN(pos, 1);
- *newpos = pos + 1;
- return str[pos];
- }
+ if (!CHECK_LEN(pos, 1))
+ MB_FAILURE(pos, 1);
switch (charset) {
- case cs_utf_8:
- {
- unsigned char c;
- CHECK_LEN(pos, 1);
- c = str[pos];
- if (c < 0x80) {
- MB_WRITE(c);
- this_char = c;
- pos++;
- } else if (c < 0xc2) {
- MB_FAILURE(pos);
- } else if (c < 0xe0) {
- CHECK_LEN(pos, 2);
- if (str[pos + 1] < 0x80 || str[pos + 1] > 0xbf) {
- MB_FAILURE(pos);
- }
- this_char = ((c & 0x1f) << 6) | (str[pos + 1] & 0x3f);
- if (this_char < 0x80) {
- MB_FAILURE(pos);
- }
- MB_WRITE((unsigned char)c);
- MB_WRITE((unsigned char)str[pos + 1]);
- pos += 2;
- } else if (c < 0xf0) {
- CHECK_LEN(pos, 3);
- if (str[pos + 1] < 0x80 || str[pos + 1] > 0xbf) {
- MB_FAILURE(pos);
- }
- if (str[pos + 2] < 0x80 || str[pos + 2] > 0xbf) {
- MB_FAILURE(pos);
- }
- this_char = ((c & 0x0f) << 12) | ((str[pos + 1] & 0x3f) << 6) | (str[pos + 2] & 0x3f);
- if (this_char < 0x800) {
- MB_FAILURE(pos);
- } else if (this_char >= 0xd800 && this_char <= 0xdfff) {
- MB_FAILURE(pos);
- }
- MB_WRITE((unsigned char)c);
- MB_WRITE((unsigned char)str[pos + 1]);
- MB_WRITE((unsigned char)str[pos + 2]);
- pos += 3;
- } else if (c < 0xf5) {
- CHECK_LEN(pos, 4);
- if (str[pos + 1] < 0x80 || str[pos + 1] > 0xbf) {
- MB_FAILURE(pos);
- }
- if (str[pos + 2] < 0x80 || str[pos + 2] > 0xbf) {
- MB_FAILURE(pos);
- }
- if (str[pos + 3] < 0x80 || str[pos + 3] > 0xbf) {
- MB_FAILURE(pos);
- }
- this_char = ((c & 0x07) << 18) | ((str[pos + 1] & 0x3f) << 12) | ((str[pos + 2] & 0x3f) << 6) | (str[pos + 3] & 0x3f);
- if (this_char < 0x10000 || this_char > 0x10FFFF) {
- MB_FAILURE(pos);
- }
- MB_WRITE((unsigned char)c);
- MB_WRITE((unsigned char)str[pos + 1]);
- MB_WRITE((unsigned char)str[pos + 2]);
- MB_WRITE((unsigned char)str[pos + 3]);
- pos += 4;
+ case cs_utf_8:
+ {
+ /* We'll follow strategy 2. from section 3.6.1 of UTR #36:
+ * "In a reported illegal byte sequence, do not include any
+ * non-initial byte that encodes a valid character or is a leading
+ * byte for a valid sequence.» */
+ unsigned char c;
+ c = str[pos];
+ if (c < 0x80) {
+ this_char = c;
+ pos++;
+ } else if (c < 0xc2) {
+ MB_FAILURE(pos, 1);
+ } else if (c < 0xe0) {
+ if (!CHECK_LEN(pos, 2))
+ MB_FAILURE(pos, 1);
+
+ if (!utf8_trail(str[pos + 1])) {
+ MB_FAILURE(pos, utf8_lead(str[pos + 1]) ? 1 : 2);
+ }
+ this_char = ((c & 0x1f) << 6) | (str[pos + 1] & 0x3f);
+ if (this_char < 0x80) { /* non-shortest form */
+ MB_FAILURE(pos, 2);
+ }
+ pos += 2;
+ } else if (c < 0xf0) {
+ size_t avail = str_len - pos;
+
+ if (avail < 3 ||
+ !utf8_trail(str[pos + 1]) || !utf8_trail(str[pos + 2])) {
+ if (avail < 2 || utf8_lead(str[pos + 1]))
+ MB_FAILURE(pos, 1);
+ else if (avail < 3 || utf8_lead(str[pos + 2]))
+ MB_FAILURE(pos, 2);
+ else
+ MB_FAILURE(pos, 3);
+ }
+
+ this_char = ((c & 0x0f) << 12) | ((str[pos + 1] & 0x3f) << 6) | (str[pos + 2] & 0x3f);
+ if (this_char < 0x800) { /* non-shortest form */
+ MB_FAILURE(pos, 3);
+ } else if (this_char >= 0xd800 && this_char <= 0xdfff) { /* surrogate */
+ MB_FAILURE(pos, 3);
+ }
+ pos += 3;
+ } else if (c < 0xf5) {
+ size_t avail = str_len - pos;
+
+ if (avail < 4 ||
+ !utf8_trail(str[pos + 1]) || !utf8_trail(str[pos + 2]) ||
+ !utf8_trail(str[pos + 3])) {
+ if (avail < 2 || utf8_lead(str[pos + 1]))
+ MB_FAILURE(pos, 1);
+ else if (avail < 3 || utf8_lead(str[pos + 2]))
+ MB_FAILURE(pos, 2);
+ else if (avail < 4 || utf8_lead(str[pos + 3]))
+ MB_FAILURE(pos, 3);
+ else
+ MB_FAILURE(pos, 4);
+ }
+
+ this_char = ((c & 0x07) << 18) | ((str[pos + 1] & 0x3f) << 12) | ((str[pos + 2] & 0x3f) << 6) | (str[pos + 3] & 0x3f);
+ if (this_char < 0x10000 || this_char > 0x10FFFF) { /* non-shortest form or outside range */
+ MB_FAILURE(pos, 4);
+ }
+ pos += 4;
+ } else {
+ MB_FAILURE(pos, 1);
+ }
+ }
+ break;
+
+ case cs_big5:
+ /* reference http://demo.icu-project.org/icu-bin/convexp?conv=big5 */
+ {
+ unsigned char c = str[pos];
+ if (c >= 0x81 && c <= 0xFE) {
+ unsigned char next;
+ if (!CHECK_LEN(pos, 2))
+ MB_FAILURE(pos, 1);
+
+ next = str[pos + 1];
+
+ if ((next >= 0x40 && next <= 0x7E) ||
+ (next >= 0xA1 && next <= 0xFE)) {
+ this_char = (c << 8) | next;
} else {
- MB_FAILURE(pos);
+ MB_FAILURE(pos, 1);
}
+ pos += 2;
+ } else {
+ this_char = c;
+ pos += 1;
}
- break;
- case cs_big5:
- case cs_gb2312:
- case cs_big5hkscs:
- {
- CHECK_LEN(pos, 1);
- this_char = str[pos++];
- /* check if this is the first of a 2-byte sequence */
- if (this_char >= 0x81 && this_char <= 0xfe) {
- /* peek at the next char */
- CHECK_LEN(pos, 1);
- next_char = str[pos++];
- if ((next_char >= 0x40 && next_char <= 0x7e) ||
- (next_char >= 0xa1 && next_char <= 0xfe)) {
- /* yes, this a wide char */
- MB_WRITE(this_char);
- MB_WRITE(next_char);
- this_char = (this_char << 8) | next_char;
- } else {
- MB_FAILURE(pos);
- }
+ }
+ break;
+
+ case cs_big5hkscs:
+ {
+ unsigned char c = str[pos];
+ if (c >= 0x81 && c <= 0xFE) {
+ unsigned char next;
+ if (!CHECK_LEN(pos, 2))
+ MB_FAILURE(pos, 1);
+
+ next = str[pos + 1];
+
+ if ((next >= 0x40 && next <= 0x7E) ||
+ (next >= 0xA1 && next <= 0xFE)) {
+ this_char = (c << 8) | next;
+ } else if (next != 0x80 && next != 0xFF) {
+ MB_FAILURE(pos, 1);
+ } else {
+ MB_FAILURE(pos, 2);
+ }
+ pos += 2;
+ } else {
+ this_char = c;
+ pos += 1;
+ }
+ }
+ break;
+
+ case cs_gb2312: /* EUC-CN */
+ {
+ unsigned char c = str[pos];
+ if (c >= 0xA1 && c <= 0xFE) {
+ unsigned char next;
+ if (!CHECK_LEN(pos, 2))
+ MB_FAILURE(pos, 1);
+
+ next = str[pos + 1];
+
+ if (gb2312_trail(next)) {
+ this_char = (c << 8) | next;
+ } else if (gb2312_lead(next)) {
+ MB_FAILURE(pos, 1);
} else {
- MB_WRITE(this_char);
+ MB_FAILURE(pos, 2);
}
+ pos += 2;
+ } else if (gb2312_lead(c)) {
+ this_char = c;
+ pos += 1;
+ } else {
+ MB_FAILURE(pos, 1);
}
- break;
- case cs_sjis:
- {
- CHECK_LEN(pos, 1);
- this_char = str[pos++];
- /* check if this is the first of a 2-byte sequence */
- if ((this_char >= 0x81 && this_char <= 0x9f) ||
- (this_char >= 0xe0 && this_char <= 0xfc)) {
- /* peek at the next char */
- CHECK_LEN(pos, 1);
- next_char = str[pos++];
- if ((next_char >= 0x40 && next_char <= 0x7e) ||
- (next_char >= 0x80 && next_char <= 0xfc))
- {
- /* yes, this a wide char */
- MB_WRITE(this_char);
- MB_WRITE(next_char);
- this_char = (this_char << 8) | next_char;
- } else {
- MB_FAILURE(pos);
- }
+ }
+ break;
+
+ case cs_sjis:
+ {
+ unsigned char c = str[pos];
+ if ((c >= 0x81 && c <= 0x9F) || (c >= 0xE0 && c <= 0xFC)) {
+ unsigned char next;
+ if (!CHECK_LEN(pos, 2))
+ MB_FAILURE(pos, 1);
+
+ next = str[pos + 1];
+
+ if (sjis_trail(next)) {
+ this_char = (c << 8) | next;
+ } else if (sjis_lead(next)) {
+ MB_FAILURE(pos, 1);
} else {
- MB_WRITE(this_char);
+ MB_FAILURE(pos, 2);
}
- break;
+ pos += 2;
+ } else if (c < 0x80 || c >= 0xA1 && c <= 0xDF) {
+ this_char = c;
+ pos += 1;
+ } else {
+ MB_FAILURE(pos, 1);
}
- case cs_eucjp:
- {
- CHECK_LEN(pos, 1);
- this_char = str[pos++];
- /* check if this is the first of a multi-byte sequence */
- if (this_char >= 0xa1 && this_char <= 0xfe) {
- /* peek at the next char */
- CHECK_LEN(pos, 1);
- next_char = str[pos++];
- if (next_char >= 0xa1 && next_char <= 0xfe) {
- /* yes, this a jis kanji char */
- MB_WRITE(this_char);
- MB_WRITE(next_char);
- this_char = (this_char << 8) | next_char;
- } else {
- MB_FAILURE(pos);
- }
- } else if (this_char == 0x8e) {
- /* peek at the next char */
- CHECK_LEN(pos, 1);
- next_char = str[pos++];
- if (next_char >= 0xa1 && next_char <= 0xdf) {
- /* JIS X 0201 kana */
- MB_WRITE(this_char);
- MB_WRITE(next_char);
- this_char = (this_char << 8) | next_char;
- } else {
- MB_FAILURE(pos);
- }
- } else if (this_char == 0x8f) {
- /* peek at the next two char */
- unsigned char next2_char;
- CHECK_LEN(pos, 2);
- next_char = str[pos];
- next2_char = str[pos + 1];
- pos += 2;
- if ((next_char >= 0xa1 && next_char <= 0xfe) &&
- (next2_char >= 0xa1 && next2_char <= 0xfe)) {
- /* JIS X 0212 hojo-kanji */
- MB_WRITE(this_char);
- MB_WRITE(next_char);
- MB_WRITE(next2_char);
- this_char = (this_char << 16) | (next_char << 8) | next2_char;
- } else {
- MB_FAILURE(pos);
- }
+ }
+ break;
+
+ case cs_eucjp:
+ {
+ unsigned char c = str[pos];
+
+ if (c >= 0xA1 && c <= 0xFE) {
+ unsigned next;
+ if (!CHECK_LEN(pos, 2))
+ MB_FAILURE(pos, 1);
+ next = str[pos + 1];
+
+ if (next >= 0xA1 && next <= 0xFE) {
+ /* this a jis kanji char */
+ this_char = (c << 8) | next;
} else {
- MB_WRITE(this_char);
+ MB_FAILURE(pos, (next != 0xA0 && next != 0xFF) ? 1 : 2);
}
- break;
+ pos += 2;
+ } else if (c == 0x8E) {
+ unsigned next;
+ if (!CHECK_LEN(pos, 2))
+ MB_FAILURE(pos, 1);
+
+ next = str[pos + 1];
+ if (next >= 0xA1 && next <= 0xDF) {
+ /* JIS X 0201 kana */
+ this_char = (c << 8) | next;
+ } else {
+ MB_FAILURE(pos, (next != 0xA0 && next != 0xFF) ? 1 : 2);
+ }
+ pos += 2;
+ } else if (c == 0x8F) {
+ size_t avail = str_len - pos;
+
+ if (avail < 3 || !(str[pos + 1] >= 0xA1 && str[pos + 1] <= 0xFE) ||
+ !(str[pos + 2] >= 0xA1 && str[pos + 2] <= 0xFE)) {
+ if (avail < 2 || (str[pos + 1] != 0xA0 && str[pos + 1] != 0xFF))
+ MB_FAILURE(pos, 1);
+ else if (avail < 3 || (str[pos + 2] != 0xA0 && str[pos + 2] != 0xFF))
+ MB_FAILURE(pos, 2);
+ else
+ MB_FAILURE(pos, 3);
+ } else {
+ /* JIS X 0212 hojo-kanji */
+ this_char = (c << 16) | (str[pos + 1] << 8) | str[pos + 2];
+ }
+ pos += 3;
+ } else if (c != 0xA0 && c != 0xFF) {
+ /* character encoded in 1 code unit */
+ this_char = c;
+ pos += 1;
+ } else {
+ MB_FAILURE(pos, 1);
}
- default:
- /* single-byte charsets */
- CHECK_LEN(pos, 1);
- this_char = str[pos++];
- MB_WRITE(this_char);
- break;
+ }
+ break;
+ default:
+ /* single-byte charsets */
+ this_char = str[pos++];
+ break;
}
- MB_RETURN;
+
+ *cursor = pos;
+ return this_char;
}
/* }}} */
@@ -374,16 +428,16 @@ static enum entity_charset determine_charset(char *charset_hint TSRMLS_DC)
charset_hint = Z_STRVAL_P(uf_result);
len = Z_STRLEN_P(uf_result);
- if (len == 4) { /* sizeof(none|auto|pass)-1 */
- if (!memcmp("pass", charset_hint, sizeof("pass") - 1) ||
- !memcmp("auto", charset_hint, sizeof("auto") - 1) ||
- !memcmp("none", charset_hint, sizeof("none") - 1)) {
+ if ((len == 4) && /* sizeof(none|auto|pass)-1 */
+ (!memcmp("pass", charset_hint, sizeof("pass") - 1) ||
+ !memcmp("auto", charset_hint, sizeof("auto") - 1) ||
+ !memcmp("none", charset_hint, sizeof("none") - 1))) {
- charset_hint = NULL;
- len = 0;
- }
+ charset_hint = NULL;
+ len = 0;
+ } else {
+ goto det_charset;
}
- goto det_charset;
}
}
#endif
@@ -456,7 +510,7 @@ det_charset:
/* }}} */
/* {{{ php_utf32_utf8 */
-static size_t php_utf32_utf8(unsigned char *buf, unsigned k)
+static inline size_t php_utf32_utf8(unsigned char *buf, unsigned k)
{
size_t retval = 0;
@@ -489,7 +543,7 @@ static size_t php_utf32_utf8(unsigned char *buf, unsigned k)
/* {{{ php_mb2_int_to_char
* Convert back big endian int representation of sequence of one or two 8-bit code units. */
-static size_t php_mb2_int_to_char(unsigned char *buf, unsigned k)
+static inline size_t php_mb2_int_to_char(unsigned char *buf, unsigned k)
{
assert(k <= 0xFFFFU);
/* one or two bytes */
@@ -507,7 +561,7 @@ static size_t php_mb2_int_to_char(unsigned char *buf, unsigned k)
/* {{{ php_mb3_int_to_char
* Convert back big endian int representation of sequence of one to three 8-bit code units.
* For EUC-JP. */
-static size_t php_mb3_int_to_char(unsigned char *buf, unsigned k)
+static inline size_t php_mb3_int_to_char(unsigned char *buf, unsigned k)
{
assert(k <= 0xFFFFFFU);
/* one to three bytes */
@@ -533,11 +587,11 @@ static size_t php_mb3_int_to_char(unsigned char *buf, unsigned k)
* Returns the code point in the target charset (whose mapping table was given) or 0 if
* the unicode code point is not in the table.
*/
-static unsigned char unimap_bsearch(const unicode_mapping *table, unsigned code_key_a, size_t num)
+static inline unsigned char unimap_bsearch(const uni_to_enc *table, unsigned code_key_a, size_t num)
{
- const unicode_mapping *l = table,
- *h = &table[num-1],
- *m;
+ const uni_to_enc *l = table,
+ *h = &table[num-1],
+ *m;
unsigned short code_key;
/* we have no mappings outside the BMP */
@@ -545,7 +599,7 @@ static unsigned char unimap_bsearch(const unicode_mapping *table, unsigned code_
return 0;
code_key = (unsigned short) code_key_a;
-
+
while (l <= h) {
m = l + (h - l) / 2;
if (code_key < m->un_code_point)
@@ -560,10 +614,10 @@ static unsigned char unimap_bsearch(const unicode_mapping *table, unsigned code_
/* }}} */
/* {{{ map_from_unicode */
-static int map_from_unicode(unsigned code, enum entity_charset charset, unsigned *res)
+static inline int map_from_unicode(unsigned code, enum entity_charset charset, unsigned *res)
{
unsigned char found;
- const unicode_mapping *table;
+ const uni_to_enc *table;
size_t table_size;
switch (charset) {
@@ -652,8 +706,10 @@ table_over_7F:
* See <http://www.unicode.org/Public/6.0.0/ucd/Unihan.zip> */
case cs_sjis:
case cs_eucjp:
+ /* we interpret 0x5C as the Yen symbol. This is not universal.
+ * See <http://www.w3.org/Submission/japanese-xml/#ambiguity_of_yen> */
if (code >= 0x20 && code <= 0x7D) {
- if (code == 0x5C) /* 0x5C is mapped to the yen symbol */
+ if (code == 0x5C)
return FAILURE;
*res = code;
} else {
@@ -679,17 +735,108 @@ table_over_7F:
}
/* }}} */
+/* {{{ */
+static inline void map_to_unicode(unsigned code, const enc_to_uni *table, unsigned *res)
+{
+ /* only single byte encodings are currently supported; assumed code <= 0xFF */
+ *res = table->inner[ENT_ENC_TO_UNI_STAGE1(code)]->uni_cp[ENT_ENC_TO_UNI_STAGE2(code)];
+}
+/* }}} */
+
+/* {{{ unicode_cp_is_allowed */
+static inline int unicode_cp_is_allowed(unsigned uni_cp, int document_type)
+{
+ /* XML 1.0 HTML 4.01 HTML 5
+ * 0x09..0x0A 0x09..0x0A 0x09..0x0A
+ * 0x0D 0x0D 0x0C..0x0D
+ * 0x0020..0xD7FF 0x20..0x7E 0x20..0x7E
+ * 0x00A0..0xD7FF 0x00A0..0xD7FF
+ * 0xE000..0xFFFD 0xE000..0x10FFFF 0xE000..0xFDCF
+ * 0x010000..0x10FFFF 0xFDF0..0x10FFFF (*)
+ *
+ * (*) exclude code points where ((code & 0xFFFF) >= 0xFFFE)
+ *
+ * References:
+ * XML 1.0: <http://www.w3.org/TR/REC-xml/#charsets>
+ * HTML 4.01: <http://www.w3.org/TR/1999/PR-html40-19990824/sgml/sgmldecl.html>
+ * HTML 5: <http://dev.w3.org/html5/spec/Overview.html#preprocessing-the-input-stream>
+ *
+ * Not sure this is the relevant part for HTML 5, though. I opted to
+ * disallow the characters that would result in a parse error when
+ * preprocessing of the input stream. See also section 8.1.3.
+ *
+ * It's unclear if XHTML 1.0 allows C1 characters. I'll opt to apply to
+ * XHTML 1.0 the same rules as for XML 1.0.
+ * See <http://cmsmcq.com/2007/C1.xml>.
+ */
+
+ switch (document_type) {
+ case ENT_HTML_DOC_HTML401:
+ return (uni_cp >= 0x20 && uni_cp <= 0x7E) ||
+ (uni_cp == 0x0A || uni_cp == 0x09 || uni_cp == 0x0D) ||
+ (uni_cp >= 0xA0 && uni_cp <= 0xD7FF) ||
+ (uni_cp >= 0xE000 && uni_cp <= 0x10FFFF);
+ case ENT_HTML_DOC_HTML5:
+ return (uni_cp >= 0x20 && uni_cp <= 0x7E) ||
+ (uni_cp >= 0x09 && uni_cp <= 0x0D && uni_cp != 0x0B) || /* form feed U+0C allowed */
+ (uni_cp >= 0xA0 && uni_cp <= 0xD7FF) ||
+ (uni_cp >= 0xE000 && uni_cp <= 0x10FFFF &&
+ ((uni_cp & 0xFFFF) < 0xFFFE) && /* last two of each plane (nonchars) disallowed */
+ (uni_cp < 0xFDD0 || uni_cp > 0xFDEF)); /* U+FDD0-U+FDEF (nonchars) disallowed */
+ case ENT_HTML_DOC_XHTML:
+ case ENT_HTML_DOC_XML1:
+ return (uni_cp >= 0x20 && uni_cp <= 0xD7FF) ||
+ (uni_cp == 0x0A || uni_cp == 0x09 || uni_cp == 0x0D) ||
+ (uni_cp >= 0xE000 && uni_cp <= 0x10FFFF && uni_cp != 0xFFFE && uni_cp != 0xFFFF);
+ default:
+ return 1;
+ }
+}
+/* }}} */
+
+/* {{{ unicode_cp_is_allowed */
+static inline int numeric_entity_is_allowed(unsigned uni_cp, int document_type)
+{
+ /* less restrictive than unicode_cp_is_allowed */
+ switch (document_type) {
+ case ENT_HTML_DOC_HTML401:
+ /* all non-SGML characters (those marked with UNUSED in DESCSET) should be
+ * representable with numeric entities */
+ return uni_cp <= 0x10FFFF;
+ case ENT_HTML_DOC_HTML5:
+ /* 8.1.4. The numeric character reference forms described above are allowed to
+ * reference any Unicode code point other than U+0000, U+000D, permanently
+ * undefined Unicode characters (noncharacters), and control characters other
+ * than space characters (U+0009, U+000A, U+000C and U+000D) */
+ /* seems to allow surrogate characters, then */
+ return (uni_cp >= 0x20 && uni_cp <= 0x7E) ||
+ (uni_cp >= 0x09 && uni_cp <= 0x0C && uni_cp != 0x0B) || /* form feed U+0C allowed, but not U+0D */
+ (uni_cp >= 0xA0 && uni_cp <= 0x10FFFF &&
+ ((uni_cp & 0xFFFF) < 0xFFFE) && /* last two of each plane (nonchars) disallowed */
+ (uni_cp < 0xFDD0 || uni_cp > 0xFDEF)); /* U+FDD0-U+FDEF (nonchars) disallowed */
+ case ENT_HTML_DOC_XHTML:
+ case ENT_HTML_DOC_XML1:
+ /* OTOH, XML 1.0 requires "character references to match the production for Char
+ * See <http://www.w3.org/TR/REC-xml/#NT-CharRef> */
+ return unicode_cp_is_allowed(uni_cp, document_type);
+ default:
+ return 1;
+ }
+}
+/* }}} */
+
/* {{{ process_numeric_entity
* Auxiliary function to traverse_for_entities.
* On input, *buf should point to the first character after # and on output, it's the last
* byte read, no matter if there was success or insuccess.
*/
-static int process_numeric_entity(char **buf, unsigned *code_point, int all)
+static inline int process_numeric_entity(const char **buf, unsigned *code_point)
{
long code_l;
- int hexadecimal = (**buf == 'x' || **buf == 'X');
+ int hexadecimal = (**buf == 'x' || **buf == 'X'); /* TODO: XML apparently disallows "X" */
+ char *endptr;
- if (hexadecimal)
+ if (hexadecimal && (**buf != '\0'))
(*buf)++;
/* strtol allows whitespace and other stuff in the beginning
@@ -699,34 +846,29 @@ static int process_numeric_entity(char **buf, unsigned *code_point, int all)
return FAILURE;
}
- code_l = strtol(*buf, buf, hexadecimal ? 16 : 10);
+ code_l = strtol(*buf, &endptr, hexadecimal ? 16 : 10);
+ /* we're guaranteed there were valid digits, so *endptr > buf */
+ *buf = endptr;
if (**buf != ';')
return FAILURE;
/* many more are invalid, but that depends on whether it's HTML
- * (and which version) or XML. Rejecting 0 is handy because that's
- * the return of strtol if no character was read */
- if (code_l <= 0L || code_l > 0x10FFFFL)
+ * (and which version) or XML. */
+ if (code_l > 0x10FFFFL)
return FAILURE;
-
- *code_point = (unsigned)code_l;
- if (!all) {
- if (*code_point != '\'' && *code_point != '"')
- return FAILURE;
- }
+ if (code_point != NULL)
+ *code_point = (unsigned)code_l;
return SUCCESS;
}
/* }}} */
/* {{{ process_named_entity */
-static int process_named_entity(char **buf, unsigned *code_unit_seq, HashTable *inv_map)
+static inline int process_named_entity_html(const char **buf, const char **start, size_t *length)
{
- size_t length;
- char *start = *buf;
- unsigned *stored_code;
+ *start = *buf;
/* "&" is represented by a 0x26 in all supported encodings. That means
* the byte after represents a character or is the leading byte of an
@@ -743,53 +885,117 @@ static int process_named_entity(char **buf, unsigned *code_unit_seq, HashTable *
return FAILURE;
/* cast to size_t OK as the quantity is always non-negative */
- length = *buf - start;
- if (length == 0 || length > 31) /* 31 is arbitrary */
- return FAILURE;
+ *length = *buf - *start;
- if (zend_hash_find(inv_map, start, (uint)length, (void**)&stored_code) == FAILURE)
+ if (*length == 0)
return FAILURE;
- *code_unit_seq = *stored_code;
-
return SUCCESS;
}
/* }}} */
+/* {{{ resolve_named_entity_html */
+static inline int resolve_named_entity_html(const char *start, size_t length, const entity_ht *ht, unsigned *uni_cp1, unsigned *uni_cp2)
+{
+ const entity_cp_map *s;
+ ulong hash = zend_inline_hash_func(start, length);
+
+ s = ht->buckets[hash % ht->num_elems];
+ while (s->entity) {
+ if (s->entity_len == length) {
+ if (memcmp(start, s->entity, length) == 0) {
+ *uni_cp1 = s->codepoint1;
+ *uni_cp2 = s->codepoint2;
+ return SUCCESS;
+ }
+ }
+ s++;
+ }
+ return FAILURE;
+}
+/* }}} */
+
+static inline size_t write_octet_sequence(unsigned char *buf, enum entity_charset charset, unsigned code) {
+ /* code is not necessarily a unicode code point */
+ switch (charset) {
+ case cs_utf_8:
+ return php_utf32_utf8(buf, code);
+
+ case cs_8859_1:
+ case cs_cp1252:
+ case cs_8859_15:
+ case cs_koi8r:
+ case cs_cp1251:
+ case cs_8859_5:
+ case cs_cp866:
+ case cs_macroman:
+ /* single byte stuff */
+ *buf = code;
+ return 1;
+
+ case cs_big5:
+ case cs_big5hkscs:
+ case cs_sjis:
+ case cs_gb2312:
+ /* we don't have complete unicode mappings for these yet in entity_decode,
+ * and we opt to pass through the octet sequences for these in htmlentities
+ * instead of converting to an int and then converting back. */
+#if 0
+ return php_mb2_int_to_char(buf, code);
+#else
+#ifdef ZEND_DEBUG
+ assert(code <= 0xFFU);
+#endif
+ *buf = code;
+ return 1;
+#endif
+
+ case cs_eucjp:
+#if 0 /* idem */
+ return php_mb2_int_to_char(buf, code);
+#else
+#ifdef ZEND_DEBUG
+ assert(code <= 0xFFU);
+#endif
+ *buf = code;
+ return 1;
+#endif
+
+ default:
+ assert(0);
+ return 0;
+ }
+}
+
/* {{{ traverse_for_entities
* Auxiliary function to php_unescape_html_entities().
* - The argument "all" determines if all numeric entities are decode or only those
- * that correspond to quotes (depending on quote_style). Typically used with the inv_map
- * stored under the key 0 in BG(inverse_ent_maps).
- * - Using cs_terminator as charset is legal and has the effect of defaulting to UTF-8. Used
- * when the encoding doesn't (or shouldn't...) matter.
+ * that correspond to quotes (depending on quote_style).
*/
-static void traverse_for_entities(char *ret, int *retlen_p, int all, int quote_style, HashTable *inv_map, enum entity_charset charset)
+/* maximum expansion (factor 1.2) for HTML 5 with &nGt; and &nLt; */
+/* +2 is 1 because of rest (probably unnecessary), 1 because of terminating 0 */
+#define TRAVERSE_FOR_ENTITIES_EXPAND_SIZE(oldlen) ((oldlen) + (oldlen) / 5 + 2)
+static void traverse_for_entities(
+ const char *old,
+ size_t oldlen,
+ char *ret, /* should have allocated TRAVERSE_FOR_ENTITIES_EXPAND_SIZE(olden) */
+ size_t *retlen,
+ int all,
+ int flags,
+ const entity_ht *inv_map,
+ enum entity_charset charset)
{
- int retlen;
- char *p, *q, *lim;
-
- /* note: this function assumes the entities always take equal or more space
- * than the characters they represent in whatever supported external encoding.
- * The supported encoding that can generate the longest code unit sequences is
- * UTF-8 (4 bytes). Theoretically, there could be entities with only 3 chars
- * (e.g. &z;) that would map to outside-the-BMP unicode code points and hence
- * needed 4 bytes and would overflow, but we have no such thing. */
-
- if (charset == cs_terminator) /* caller doesn't care; we choose one */
- charset = cs_utf_8;
-
- retlen = *retlen_p;
+ const char *p,
+ *lim;
+ char *q;
+ int doctype = flags & ENT_HTML_DOC_TYPE_MASK;
- lim = ret + retlen; /* terminator address */
+ lim = old + oldlen; /* terminator address */
assert(*lim == '\0');
- for (p = ret, q = ret; p < lim;) {
- unsigned code;
- char *next = NULL;
- /* code is unicode code point or a set of 8-bit code units packed into
- * an integer with the least significant bit being the last byte? */
- int unicode;
+ for (p = old, q = ret; p < lim;) {
+ unsigned code, code2 = 0;
+ const char *next = NULL; /* when set, next > p, otherwise possible inf loop */
/* Shift JIS, Big5 and HKSCS use multi-byte encodings where an
* ASCII range byte can be part of a multi-byte sequence.
@@ -807,80 +1013,61 @@ static void traverse_for_entities(char *ret, int *retlen_p, int all, int quote_s
/* numerical entity */
if (p[1] == '#') {
next = &p[2];
- if (process_numeric_entity(&next, &code, all) == FAILURE)
+ if (process_numeric_entity(&next, &code) == FAILURE)
goto invalid_code;
- unicode = 1;
- } else if (inv_map != NULL) {
- next = &p[1];
- if (process_named_entity(&next, &code, inv_map) == FAILURE)
+
+ /* If we're in htmlspecialchars_decode, we're only decoding entities
+ * that represent &, <, >, " and '. Is this one of them? */
+ if (!all && (code > 63U ||
+ stage3_table_be_apos_00000[code].data.ent.entity == NULL))
+ goto invalid_code;
+
+ /* are we allowed to decode this entity in this document type?
+ * HTML 5 is the only that has a character that cannot be used in
+ * a numeric entity but is allowed literally (U+000D). The
+ * unoptimized version would be ... || !numeric_entity_is_allowed(code) */
+ if (!unicode_cp_is_allowed(code, doctype) ||
+ (doctype == ENT_HTML_DOC_HTML5 && code == 0x0D))
goto invalid_code;
- unicode = 0;
} else {
- goto invalid_code;
+ const char *start;
+ size_t ent_len;
+
+ next = &p[1];
+ start = next;
+
+ if (process_named_entity_html(&next, &start, &ent_len) == FAILURE)
+ goto invalid_code;
+
+ if (resolve_named_entity_html(start, ent_len, inv_map, &code, &code2) == FAILURE) {
+ if (doctype == ENT_HTML_DOC_XHTML && ent_len == 4 && start[0] == 'a'
+ && start[1] == 'p' && start[2] == 'o' && start[3] == 's') {
+ /* uses html4 inv_map, which doesn't include apos;. This is a
+ * hack to support it */
+ code = (unsigned) '\'';
+ } else {
+ goto invalid_code;
+ }
+ }
}
assert(*next == ';');
- if (code == '\'' && !(quote_style & ENT_HTML_QUOTE_SINGLE) ||
- code == '"' && !(quote_style & ENT_HTML_QUOTE_DOUBLE))
+ if (((code == '\'' && !(flags & ENT_HTML_QUOTE_SINGLE)) ||
+ (code == '"' && !(flags & ENT_HTML_QUOTE_DOUBLE)))
+ /* && code2 == '\0' always true for current maps */)
goto invalid_code;
- if (unicode && charset != cs_utf_8) {
+ /* deal with encodings other than utf-8/iso-8859-1 */
+ if (!CHARSET_UNICODE_COMPAT(charset)) {
/* replace unicode code point */
- if (map_from_unicode(code, charset, &code) == FAILURE)
+ if (map_from_unicode(code, charset, &code) == FAILURE || code2 != 0)
goto invalid_code; /* not representable in target charset */
}
-
- switch (charset) {
- case cs_utf_8:
- {
- size_t written;
- written = php_utf32_utf8((unsigned char*)q, code);
- q += written;
- /* Since we're writing in place, we hope we didn't write more than we read */
- assert(written <= (size_t)(next - p) + 1);
- break;
- }
-
- case cs_8859_1:
- case cs_cp1252:
- case cs_8859_15:
- case cs_koi8r:
- case cs_cp1251:
- case cs_8859_5:
- case cs_cp866:
- case cs_macroman:
- /* single byte stuff */
- *(q++) = code;
- break;
-
- case cs_big5:
- case cs_big5hkscs:
- case cs_sjis:
- case cs_gb2312:
- /* we don't have named entity or unicode mappings for these yet,
- * so we're guaranteed code <= 0xFF */
-#if 0
- q += php_mb2_int_to_char((unsigned char*)q, code);
-#else
- assert(code <= 0xFFU);
- *(q++) = code;
-#endif
- break;
-
- case cs_eucjp:
-#if 0 /* idem */
- q += php_mb2_int_to_char((unsigned char*)q, code);
-#else
- assert(code <= 0xFFU);
- *(q++) = code;
-#endif
- break;
- default:
- /* for backwards compatilibity */
- goto invalid_code;
- break;
+ q += write_octet_sequence(q, charset, code);
+ if (code2) {
+ q += write_octet_sequence(q, charset, code2);
}
/* jump over the valid entity; may go beyond size of buffer; np */
@@ -894,114 +1081,94 @@ invalid_code:
}
*q = '\0';
- *retlen_p = (size_t)(q - ret);
-}
-/* }}} */
-
-/* {{{ inv_ent_maps_dtor
- * Hash table destructor for BG(inverse_ent_maps)
- */
-static void inv_ent_maps_dtor(HashTable **ht) {
- zend_hash_destroy(*ht);
- pefree(*ht, 1);
+ *retlen = (size_t)(q - ret);
}
/* }}} */
-/* {{{ unescape_inverse_map
- * Auxiliary function to php_unescape_html_entities()
- * charset can be cs_terminator for only basic entities.
- */
-static HashTable *unescape_inverse_map(enum entity_charset charset TSRMLS_DC)
+/* {{{ unescape_inverse_map */
+static const entity_ht *unescape_inverse_map(int all, int flags)
{
- HashTable **inverse_map;
-
- /* we accept charset = cs_terminator (for specialchars) */
-
- if (!BG(inverse_ent_maps)) {
- BG(inverse_ent_maps) = pemalloc(sizeof *BG(inverse_ent_maps), 1);
- zend_hash_init(BG(inverse_ent_maps), cs_numelems, NULL, (dtor_func_t)inv_ent_maps_dtor, 1);
- }
- if (zend_hash_index_find(BG(inverse_ent_maps), (ulong)charset, (void**)&inverse_map) == FAILURE) {
- HashTable *ht = pemalloc(sizeof *ht, 1);
- uint capacity = 0;
- int j, t;
-
- /* determine upper bound for capacity of hashtable */
- for (j = 0; entity_map[j].charset != cs_terminator; j++) {
- if (entity_map[j].charset == charset)
- capacity += entity_map[j].endchar - entity_map[j].basechar + 1;
- }
-
- /* no destructor as we'll be storing ints */
- zend_hash_init(ht, capacity, NULL, NULL, 1);
-
- /* store new hash table */
- t = zend_hash_index_update(BG(inverse_ent_maps), (ulong)charset, &ht, sizeof(ht), (void**)&inverse_map);
- assert(t == SUCCESS);
-
- /* build inverse map */
- for (j = 0; entity_map[j].charset != cs_terminator; j++) {
- unsigned k;
-
- if (entity_map[j].charset != charset)
- continue;
-
- for (k = entity_map[j].basechar; k <= entity_map[j].endchar; k++) {
- unsigned table_offset = k - entity_map[j].basechar;
- const char* entity_name = entity_map[j].table[table_offset];
+ int document_type = flags & ENT_HTML_DOC_TYPE_MASK;
- if (entity_name == NULL || *entity_name == '#')
- continue;
-
- t = zend_hash_update(ht, entity_name, strlen(entity_name), &k, sizeof(k), NULL);
- assert(t == SUCCESS);
- }
+ if (all) {
+ switch (document_type) {
+ case ENT_HTML_DOC_HTML401:
+ case ENT_HTML_DOC_XHTML: /* but watch out for &apos;...*/
+ return &ent_ht_html4;
+ case ENT_HTML_DOC_HTML5:
+ return &ent_ht_html5;
+ default:
+ return &ent_ht_be_apos;
}
-
- /* and add the basic entitites */
- for (j = 0; basic_entities_ex[j].charcode != 0; j++) {
- const basic_entity_t *ent = &basic_entities_ex[j];
- unsigned k = ent->charcode;
-
- t = zend_hash_update(ht, &ent->entity[1] /* skip & */,
- ent->entitylen - 2 /* skip & and ; */, &k, sizeof(k), NULL);
- assert(t == SUCCESS);
+ } else {
+ switch (document_type) {
+ case ENT_HTML_DOC_HTML401:
+ return &ent_ht_be_noapos;
+ default:
+ return &ent_ht_be_apos;
}
}
+}
+/* }}} */
+
+/* {{{ determine_entity_table
+ * Entity table to use. Note that entity tables are defined in terms of
+ * unicode code points */
+static entity_table_opt determine_entity_table(int all, int doctype)
+{
+ entity_table_opt retval = {NULL};
- return *inverse_map;
+ assert(!(doctype == ENT_HTML_DOC_XML1 && all));
+
+ if (all) {
+ retval.ms_table = (doctype == ENT_HTML_DOC_HTML5) ?
+ entity_ms_table_html5 : entity_ms_table_html4;
+ } else {
+ retval.table = (doctype == ENT_HTML_DOC_HTML401) ?
+ stage3_table_be_noapos_00000 : stage3_table_be_apos_00000;
+ }
+ return retval;
}
+/* }}} */
/* {{{ php_unescape_html_entities
* The parameter "all" should be true to decode all possible entities, false to decode
* only the basic ones, i.e., those in basic_entities_ex + the numeric entities
* that correspond to quotes.
*/
-PHPAPI char *php_unescape_html_entities(unsigned char *old, int oldlen, int *newlen, int all, int quote_style, char *hint_charset TSRMLS_DC)
+PHPAPI char *php_unescape_html_entities(unsigned char *old, size_t oldlen, size_t *newlen, int all, int flags, char *hint_charset TSRMLS_DC)
{
- int retlen;
+ size_t retlen;
char *ret;
enum entity_charset charset;
- HashTable *inverse_map = NULL;
+ const entity_ht *inverse_map = NULL;
+ size_t new_size = TRAVERSE_FOR_ENTITIES_EXPAND_SIZE(oldlen);
if (all) {
charset = determine_charset(hint_charset TSRMLS_CC);
} else {
- charset = cs_terminator;
+ charset = cs_8859_1; /* charset shouldn't matter, use ISO-8859-1 for performance */
}
- ret = estrndup(old, oldlen);
+ /* don't use LIMIT_ALL! */
+
+ if (oldlen > new_size) {
+ /* overflow, refuse to do anything */
+ ret = estrndup((char*)old, oldlen);
+ retlen = oldlen;
+ goto empty_source;
+ }
+ ret = emalloc(new_size);
+ *ret = '\0';
retlen = oldlen;
if (retlen == 0) {
goto empty_source;
}
-
- /* charset == cs_terminator if !all */
- inverse_map = unescape_inverse_map(charset TSRMLS_CC);
+
+ inverse_map = unescape_inverse_map(all, flags);
/* replace numeric entities */
- /* !all implies charset == cs_terminator && inverse_map == BG(inverse_ent_maps)[0] */
- traverse_for_entities(ret, &retlen, all, quote_style, inverse_map, charset);
+ traverse_for_entities(old, oldlen, ret, &retlen, all, flags, inverse_map, charset);
empty_source:
*newlen = retlen;
@@ -1009,152 +1176,287 @@ empty_source:
}
/* }}} */
-PHPAPI char *php_escape_html_entities(unsigned char *old, int oldlen, int *newlen, int all, int quote_style, char *hint_charset TSRMLS_DC)
+PHPAPI char *php_escape_html_entities(unsigned char *old, size_t oldlen, size_t *newlen, int all, int flags, char *hint_charset TSRMLS_DC)
{
- return php_escape_html_entities_ex(old, oldlen, newlen, all, quote_style, hint_charset, 1 TSRMLS_CC);
+ return php_escape_html_entities_ex(old, oldlen, newlen, all, flags, hint_charset, 1 TSRMLS_CC);
+}
+
+/* {{{ find_entity_for_char */
+static inline void find_entity_for_char(
+ unsigned int k,
+ enum entity_charset charset,
+ const entity_stage1_row *table,
+ const unsigned char **entity,
+ size_t *entity_len,
+ unsigned char *old,
+ size_t oldlen,
+ size_t *cursor)
+{
+ unsigned stage1_idx = ENT_STAGE1_INDEX(k);
+ const entity_stage3_row *c;
+
+ if (stage1_idx > 0x1D) {
+ *entity = NULL;
+ *entity_len = 0;
+ return;
+ }
+
+ c = &table[stage1_idx][ENT_STAGE2_INDEX(k)][ENT_STAGE3_INDEX(k)];
+
+ if (!c->ambiguous) {
+ *entity = (const unsigned char *)c->data.ent.entity;
+ *entity_len = c->data.ent.entity_len;
+ } else {
+ /* peek at next char */
+ size_t cursor_before = *cursor;
+ int status = SUCCESS;
+ unsigned next_char;
+
+ if (!(*cursor < oldlen))
+ goto no_suitable_2nd;
+
+ next_char = get_next_char(charset, old, oldlen, cursor, &status);
+
+ if (status == FAILURE)
+ goto no_suitable_2nd;
+
+ {
+ const entity_multicodepoint_row *s, *e;
+
+ s = &c->data.multicodepoint_table[1];
+ e = s - 1 + c->data.multicodepoint_table[0].leading_entry.size;
+ /* we could do a binary search but it's not worth it since we have
+ * at most two entries... */
+ for ( ; s <= e; s++) {
+ if (s->normal_entry.second_cp == next_char) {
+ *entity = s->normal_entry.entity;
+ *entity_len = s->normal_entry.entity_len;
+ return;
+ }
+ }
+ }
+no_suitable_2nd:
+ *cursor = cursor_before;
+ *entity = (const unsigned char *)
+ c->data.multicodepoint_table[0].leading_entry.default_entity;
+ *entity_len = c->data.multicodepoint_table[0].leading_entry.default_entity_len;
+ }
}
+/* }}} */
+
+/* {{{ find_entity_for_char_basic */
+static inline void find_entity_for_char_basic(
+ unsigned int k,
+ const entity_stage3_row *table,
+ const unsigned char **entity,
+ size_t *entity_len)
+{
+ if (k >= 64U) {
+ *entity = NULL;
+ *entity_len = 0;
+ return;
+ }
+ *entity = table[k].data.ent.entity;
+ *entity_len = table[k].data.ent.entity_len;
+}
+/* }}} */
/* {{{ php_escape_html_entities
*/
-PHPAPI char *php_escape_html_entities_ex(unsigned char *old, int oldlen, int *newlen, int all, int quote_style, char *hint_charset, zend_bool double_encode TSRMLS_DC)
+PHPAPI char *php_escape_html_entities_ex(unsigned char *old, size_t oldlen, size_t *newlen, int all, int flags, char *hint_charset, zend_bool double_encode TSRMLS_DC)
{
- int i, j, maxlen, len;
+ size_t cursor, maxlen, len;
char *replaced;
enum entity_charset charset = determine_charset(hint_charset TSRMLS_CC);
int matches_map;
+ int doctype = flags & ENT_HTML_DOC_TYPE_MASK;
+ entity_table_opt entity_table;
+ const enc_to_uni *to_uni_table = NULL;
+ const entity_ht *inv_map = NULL; /* used for !double_encode */
+ /* only used if flags includes ENT_HTML_IGNORE_ERRORS or ENT_HTML_SUBSTITUTE_DISALLOWED_CHARS */
+ const unsigned char *replacement;
+ size_t replacement_len;
+
+ if (all) { /* replace with all named entities */
+ if (CHARSET_PARTIAL_SUPPORT(charset)) {
+ php_error_docref0(NULL TSRMLS_CC, E_STRICT, "Only basic entities "
+ "substitution is supported for multi-byte encodings other than UTF-8; "
+ "functionality is equivalent to htmlspecialchars");
+ }
+ LIMIT_ALL(all, doctype, charset);
+ }
+ entity_table = determine_entity_table(all, doctype);
+ if (all && !CHARSET_UNICODE_COMPAT(charset)) {
+ to_uni_table = enc_to_uni_index[charset];
+ }
+
+ if (!double_encode) {
+ /* first arg is 1 because we want to identify valid named entities
+ * even if we are only encoding the basic ones */
+ inv_map = unescape_inverse_map(1, flags);
+ }
+
+ if (flags & (ENT_HTML_SUBSTITUTE_ERRORS | ENT_HTML_SUBSTITUTE_DISALLOWED_CHARS)) {
+ if (charset == cs_utf_8) {
+ replacement = (const unsigned char*)"\xEF\xBF\xBD";
+ replacement_len = sizeof("\xEF\xBF\xBD") - 1;
+ } else {
+ replacement = (const unsigned char*)"&#xFFFD;";
+ replacement_len = sizeof("&#xFFFD;") - 1;
+ }
+ }
maxlen = 2 * oldlen;
if (maxlen < 128)
maxlen = 128;
- replaced = emalloc (maxlen);
+ replaced = emalloc(maxlen);
len = 0;
- i = 0;
- while (i < oldlen) {
- unsigned char mbsequence[16]; /* allow up to 15 characters in a multibyte sequence */
- int mbseqlen = sizeof(mbsequence);
- int status = SUCCESS;
- unsigned int this_char = get_next_char(charset, old, oldlen, &i, mbsequence, &mbseqlen, &status);
-
- if(status == FAILURE) {
+ cursor = 0;
+ while (cursor < oldlen) {
+ const unsigned char *mbsequence = NULL;
+ size_t mbseqlen = 0,
+ cursor_before = cursor;
+ int status = SUCCESS;
+ unsigned int this_char = get_next_char(charset, old, oldlen, &cursor, &status);
+
+ /* guarantee we have at least 40 bytes to write.
+ * In HTML5, entities may take up to 33 bytes */
+ if (len + 40 > maxlen)
+ replaced = erealloc(replaced, maxlen += 128);
+
+ if (status == FAILURE) {
/* invalid MB sequence */
- if (quote_style & ENT_HTML_IGNORE_ERRORS) {
+ if (flags & ENT_HTML_IGNORE_ERRORS) {
continue;
+ } else if (flags & ENT_HTML_SUBSTITUTE_ERRORS) {
+ memcpy(&replaced[len], replacement, replacement_len);
+ len += replacement_len;
+ continue;
+ } else {
+ efree(replaced);
+ if(!PG(display_errors)) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid multibyte sequence in argument");
+ }
+ *newlen = 0;
+ return STR_EMPTY_ALLOC();
}
- efree(replaced);
- if(!PG(display_errors)) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid multibyte sequence in argument");
- }
- *newlen = 0;
- return STR_EMPTY_ALLOC();
+ } else { /* SUCCESS */
+ mbsequence = &old[cursor_before];
+ mbseqlen = cursor - cursor_before;
}
matches_map = 0;
- if (len + 16 > maxlen)
- replaced = erealloc (replaced, maxlen += 128);
-
- if (all) {
- /* look for a match in the maps for this charset */
- unsigned char *rep = NULL;
-
-
- for (j = 0; entity_map[j].charset != cs_terminator; j++) {
- if (entity_map[j].charset == charset
- && this_char >= entity_map[j].basechar
- && this_char <= entity_map[j].endchar) {
- rep = (unsigned char*)entity_map[j].table[this_char - entity_map[j].basechar];
- if (rep == NULL) {
- /* there is no entity for this position; fall through and
- * just output the character itself */
- break;
- }
-
- matches_map = 1;
- break;
+ if (this_char != '&') { /* no entity on this position */
+ int found = 0;
+ const unsigned char *rep = NULL;
+ size_t rep_len = 0;
+
+ if (((this_char == '\'' && !(flags & ENT_HTML_QUOTE_SINGLE)) ||
+ (this_char == '"' && !(flags & ENT_HTML_QUOTE_DOUBLE))))
+ goto pass_char_through;
+
+ if (all) { /* false that CHARSET_PARTIAL_SUPPORT(charset) */
+ /* look for entity for this char */
+ if (to_uni_table != NULL) {
+ map_to_unicode(this_char, to_uni_table, &this_char);
+ if (this_char == 0xFFFF) /* no mapping; pass through */
+ goto pass_char_through;
}
+ find_entity_for_char(this_char, charset, entity_table.ms_table, &rep,
+ &rep_len, old, oldlen, &cursor);
+ } else {
+ find_entity_for_char_basic(this_char, entity_table.table, &rep, &rep_len);
}
- if (matches_map) {
- int l = strlen(rep);
- /* increase the buffer size */
- if (len + 2 + l >= maxlen) {
- replaced = erealloc(replaced, maxlen += 128);
- }
-
+ if (rep != NULL) {
replaced[len++] = '&';
- strlcpy(replaced + len, rep, maxlen);
- len += l;
+ memcpy(&replaced[len], rep, rep_len);
+ len += rep_len;
replaced[len++] = ';';
- }
- }
- if (!matches_map) {
- int is_basic = 0;
-
- if (this_char == '&') {
- if (double_encode) {
-encode_amp:
- memcpy(replaced + len, "&amp;", sizeof("&amp;") - 1);
- len += sizeof("&amp;") - 1;
- } else {
- char *e = memchr(old + i, ';', oldlen - i);
- char *s = old + i;
-
- if (!e || (e - s) > 10) { /* minor optimization to avoid "entities" over 10 chars in length */
- goto encode_amp;
+ } else {
+ /* we did not find an entity for this char.
+ * check for its validity, if its valid pass it unchanged */
+ if (flags & ENT_HTML_SUBSTITUTE_DISALLOWED_CHARS) {
+ if (CHARSET_UNICODE_COMPAT(charset)) {
+ if (!unicode_cp_is_allowed(this_char, doctype)) {
+ mbsequence = replacement;
+ mbseqlen = replacement_len;
+ }
+ } else if (to_uni_table) {
+ if (!all) /* otherwise we already did this */
+ map_to_unicode(this_char, to_uni_table, &this_char);
+ if (!unicode_cp_is_allowed(this_char, doctype)) {
+ mbsequence = replacement;
+ mbseqlen = replacement_len;
+ }
} else {
- if (*s == '#') { /* numeric entities */
- s++;
- /* Hex (&#x5A;) */
- if (*s == 'x' || *s == 'X') {
- s++;
- while (s < e) {
- if (!isxdigit((int)*(unsigned char *)s++)) {
- goto encode_amp;
- }
- }
- /* Dec (&#90;)*/
- } else {
- while (s < e) {
- if (!isdigit((int)*(unsigned char *)s++)) {
- goto encode_amp;
- }
- }
- }
- } else { /* text entities */
- while (s < e) {
- if (!isalnum((int)*(unsigned char *)s++)) {
- goto encode_amp;
- }
- }
+ /* not a unicode code point, unless, coincidentally, it's in
+ * the 0x20..0x7D range (except 0x5C in sjis). We know nothing
+ * about other code points, because we have no tables. Since
+ * Unicode code points in that range are not disallowed in any
+ * document type, we could do nothing. However, conversion
+ * tables frequently map 0x00-0x1F to the respective C0 code
+ * points. Let's play it safe and admit that's the case */
+ if (this_char <= 0x7D &&
+ !unicode_cp_is_allowed(this_char, doctype)) {
+ mbsequence = replacement;
+ mbseqlen = replacement_len;
}
- replaced[len++] = '&';
- }
- }
- is_basic = 1;
- } else {
- for (j = 0; basic_entities[j].charcode != 0; j++) {
- if ((basic_entities[j].charcode != this_char) ||
- (basic_entities[j].flags &&
- (quote_style & basic_entities[j].flags) == 0)) {
- continue;
}
-
- memcpy(replaced + len, basic_entities[j].entity, basic_entities[j].entitylen);
- len += basic_entities[j].entitylen;
-
- is_basic = 1;
- break;
}
- }
-
- if (!is_basic) {
- /* a wide char without a named entity; pass through the original sequence */
+pass_char_through:
if (mbseqlen > 1) {
memcpy(replaced + len, mbsequence, mbseqlen);
len += mbseqlen;
} else {
- replaced[len++] = (unsigned char)this_char;
+ replaced[len++] = mbsequence[0];
+ }
+ }
+ } else { /* this_char == '&' */
+ if (double_encode) {
+encode_amp:
+ memcpy(&replaced[len], "&amp;", sizeof("&amp;") - 1);
+ len += sizeof("&amp;") - 1;
+ } else { /* no double encode */
+ /* check if entity is valid */
+ size_t ent_len; /* not counting & or ; */
+ /* peek at next char */
+ if (old[cursor] == '#') { /* numeric entity */
+ unsigned code_point;
+ int valid;
+ char *pos = (char*)&old[cursor+1];
+ valid = process_numeric_entity(&pos, &code_point);
+ if (valid == FAILURE)
+ goto encode_amp;
+ if (flags & ENT_HTML_SUBSTITUTE_DISALLOWED_CHARS) {
+ if (!numeric_entity_is_allowed(code_point, doctype))
+ goto encode_amp;
+ }
+ ent_len = pos - (char*)&old[cursor];
+ } else { /* named entity */
+ /* check for vality of named entity */
+ const char *start = &old[cursor],
+ *next = start;
+ unsigned dummy1, dummy2;
+
+ if (process_named_entity_html(&next, &start, &ent_len) == FAILURE)
+ goto encode_amp;
+ if (resolve_named_entity_html(start, ent_len, inv_map, &dummy1, &dummy2) == FAILURE) {
+ if (!(doctype == ENT_HTML_DOC_XHTML && ent_len == 4 && start[0] == 'a'
+ && start[1] == 'p' && start[2] == 'o' && start[3] == 's')) {
+ /* uses html4 inv_map, which doesn't include apos;. This is a
+ * hack to support it */
+ goto encode_amp;
+ }
+ }
}
+ /* checks passed; copy entity to result */
+ replaced[len++] = '&';
+ memcpy(&replaced[len], &old[cursor], ent_len);
+ len += ent_len;
+ replaced[len++] = ';';
+ cursor += ent_len + 1;
}
}
}
@@ -1162,8 +1464,6 @@ encode_amp:
*newlen = len;
return replaced;
-
-
}
/* }}} */
@@ -1174,15 +1474,15 @@ static void php_html_entities(INTERNAL_FUNCTION_PARAMETERS, int all)
char *str, *hint_charset = NULL;
int str_len, hint_charset_len = 0;
int len;
- long quote_style = ENT_COMPAT;
+ long flags = ENT_COMPAT;
char *replaced;
zend_bool double_encode = 1;
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|ls!b", &str, &str_len, &quote_style, &hint_charset, &hint_charset_len, &double_encode) == FAILURE) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|ls!b", &str, &str_len, &flags, &hint_charset, &hint_charset_len, &double_encode) == FAILURE) {
return;
}
- replaced = php_escape_html_entities_ex(str, str_len, &len, all, quote_style, hint_charset, double_encode TSRMLS_CC);
+ replaced = php_escape_html_entities_ex(str, str_len, &len, all, (int) flags, hint_charset, double_encode TSRMLS_CC);
RETVAL_STRINGL(replaced, len, 0);
}
/* }}} */
@@ -1200,6 +1500,12 @@ void register_html_constants(INIT_FUNC_ARGS)
REGISTER_LONG_CONSTANT("ENT_QUOTES", ENT_QUOTES, CONST_PERSISTENT|CONST_CS);
REGISTER_LONG_CONSTANT("ENT_NOQUOTES", ENT_NOQUOTES, CONST_PERSISTENT|CONST_CS);
REGISTER_LONG_CONSTANT("ENT_IGNORE", ENT_IGNORE, CONST_PERSISTENT|CONST_CS);
+ REGISTER_LONG_CONSTANT("ENT_SUBSTITUTE", ENT_SUBSTITUTE, CONST_PERSISTENT|CONST_CS);
+ REGISTER_LONG_CONSTANT("ENT_DISALLOWED", ENT_DISALLOWED, CONST_PERSISTENT|CONST_CS);
+ REGISTER_LONG_CONSTANT("ENT_HTML401", ENT_HTML401, CONST_PERSISTENT|CONST_CS);
+ REGISTER_LONG_CONSTANT("ENT_XML1", ENT_XML1, CONST_PERSISTENT|CONST_CS);
+ REGISTER_LONG_CONSTANT("ENT_XHTML", ENT_XHTML, CONST_PERSISTENT|CONST_CS);
+ REGISTER_LONG_CONSTANT("ENT_HTML5", ENT_HTML5, CONST_PERSISTENT|CONST_CS);
}
/* }}} */
@@ -1263,91 +1569,172 @@ PHP_FUNCTION(htmlentities)
}
/* }}} */
-/* {{{ proto array get_html_translation_table([int table [, int quote_style [, string charset_hint]]])
+/* {{{ write_s3row_data */
+static inline void write_s3row_data(
+ const entity_stage3_row *r,
+ unsigned orig_cp,
+ unsigned uni_cp,
+ enum entity_charset charset,
+ zval *arr)
+{
+ char key[8]; /* two unicode code points in UTF-8 */
+ char entity[LONGEST_ENTITY_LENGTH + 2] = {'&'};
+ size_t written_k1;
+
+ written_k1 = write_octet_sequence(key, charset, orig_cp);
+
+ if (!r->ambiguous) {
+ size_t l = r->data.ent.entity_len;
+ memcpy(&entity[1], r->data.ent.entity, l);
+ entity[l + 1] = ';';
+ add_assoc_stringl_ex(arr, key, written_k1 + 1, entity, l + 2, 1);
+ } else {
+ unsigned i,
+ num_entries;
+ const entity_multicodepoint_row *mcpr = r->data.multicodepoint_table;
+
+ if (mcpr[0].leading_entry.default_entity != NULL) {
+ size_t l = mcpr[0].leading_entry.default_entity_len;
+ memcpy(&entity[1], mcpr[0].leading_entry.default_entity, l);
+ entity[l + 1] = ';';
+ add_assoc_stringl_ex(arr, key, written_k1 + 1, entity, l + 2, 1);
+ }
+ num_entries = mcpr[0].leading_entry.size;
+ for (i = 1; i <= num_entries; i++) {
+ size_t l,
+ written_k2;
+ unsigned uni_cp,
+ spe_cp;
+
+ uni_cp = mcpr[i].normal_entry.second_cp;
+ l = mcpr[i].normal_entry.entity_len;
+
+ if (!CHARSET_UNICODE_COMPAT(charset)) {
+ if (map_from_unicode(uni_cp, charset, &spe_cp) == FAILURE)
+ continue; /* non representable in this charset */
+ } else {
+ spe_cp = uni_cp;
+ }
+
+ written_k2 = write_octet_sequence(&key[written_k1], charset, spe_cp);
+ memcpy(&entity[1], mcpr[i].normal_entry.entity, l);
+ entity[l + 1] = ';';
+ entity[l + 1] = '\0';
+ add_assoc_stringl_ex(arr, key, written_k1 + written_k2 + 1, entity, l + 1, 1);
+ }
+ }
+}
+/* }}} */
+
+/* {{{ proto array get_html_translation_table([int table [, int flags [, string charset_hint]]])
Returns the internal translation table used by htmlspecialchars and htmlentities */
PHP_FUNCTION(get_html_translation_table)
{
- long which = HTML_SPECIALCHARS, quote_style = ENT_COMPAT;
- unsigned int i;
- int j;
- unsigned char ind[5]; /* max # of 8-bit code units (4; for UTF-8) + 1 for \0 */
- void *dummy;
+ long all = HTML_SPECIALCHARS,
+ flags = ENT_COMPAT;
+ int doctype;
+ entity_table_opt entity_table;
+ const enc_to_uni *to_uni_table;
char *charset_hint = NULL;
int charset_hint_len;
enum entity_charset charset;
+ /* in this function we have to jump through some loops because we're
+ * getting the translated table from data structures that are optimized for
+ * random access, not traversal */
+
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|lls",
- &which, &quote_style, &charset_hint, &charset_hint_len) == FAILURE) {
+ &all, &flags, &charset_hint, &charset_hint_len) == FAILURE) {
return;
}
charset = determine_charset(charset_hint TSRMLS_CC);
+ doctype = flags & ENT_HTML_DOC_TYPE_MASK;
+ LIMIT_ALL(all, doctype, charset);
array_init(return_value);
- switch (which) {
- case HTML_ENTITIES:
- for (j = 0; entity_map[j].charset != cs_terminator; j++) {
- if (entity_map[j].charset != charset)
- continue;
- for (i = 0; i <= entity_map[j].endchar - entity_map[j].basechar; i++) {
- char buffer[16];
- unsigned k;
- size_t written;
+ if (CHARSET_PARTIAL_SUPPORT(charset)) {
+ all = 0;
+ }
+ entity_table = determine_entity_table(all, doctype);
+ if (all && !CHARSET_UNICODE_COMPAT(charset)) {
+ to_uni_table = enc_to_uni_index[charset];
+ }
+
+ if (all) { /* HTML_ENTITIES (actually, any non-zero value for 1st param) */
+ const entity_stage1_row *ms_table = entity_table.ms_table;
- if (entity_map[j].table[i] == NULL)
+ if (CHARSET_UNICODE_COMPAT(charset)) {
+ unsigned i, j, k,
+ max_i, max_j, max_k;
+ /* no mapping to unicode required */
+ if (CHARSET_SINGLE_BYTE(charset)) {
+ max_i = 1; max_j = 1; max_k = 64;
+ } else {
+ max_i = 0x1E; max_j = 64; max_k = 64;
+ }
+
+ for (i = 0; i < max_i; i++) {
+ if (ms_table[i] == empty_stage2_table)
continue;
-
- k = i + entity_map[j].basechar;
-
- switch (charset) {
- case cs_utf_8:
- written = php_utf32_utf8(ind, k);
- ind[written] = '\0';
- break;
- /* we have no mappings for these, but if we had... */
- case cs_big5:
- case cs_gb2312:
- case cs_big5hkscs:
- case cs_sjis:
- written = php_mb2_int_to_char(ind, k);
- ind[written] = '\0';
- break;
- case cs_eucjp:
- written = php_mb3_int_to_char(ind, k);
- ind[written] = '\0';
- break;
- default: /* one byte */
- written = 1;
- ind[0] = (unsigned char)k;
- ind[1] = '\0';
- break;
+ for (j = 0; j < max_j; j++) {
+ if (ms_table[i][j] == empty_stage3_table)
+ continue;
+ for (k = 0; k < max_k; k++) {
+ const entity_stage3_row *r = &ms_table[i][j][k];
+ unsigned code;
+
+ if (r->data.ent.entity == NULL)
+ continue;
+
+ code = ENT_CODE_POINT_FROM_STAGES(i, j, k);
+ if (((code == '\'' && !(flags & ENT_HTML_QUOTE_SINGLE)) ||
+ (code == '"' && !(flags & ENT_HTML_QUOTE_DOUBLE))))
+ continue;
+ write_s3row_data(r, code, code, charset, return_value);
+ }
}
+ }
+ } else {
+ /* we have to iterate through the set of code points for this
+ * encoding and map them to unicode code points */
+ unsigned i;
+ for (i = 0; i <= 0xFF; i++) {
+ const entity_stage3_row *r;
+ unsigned uni_cp;
+
+ /* can be done before mapping, they're invariant */
+ if (((i == '\'' && !(flags & ENT_HTML_QUOTE_SINGLE)) ||
+ (i == '"' && !(flags & ENT_HTML_QUOTE_DOUBLE))))
+ continue;
- snprintf(buffer, sizeof(buffer), "&%s;", entity_map[j].table[i]);
- if (zend_hash_find(Z_ARRVAL_P(return_value), (const char*)ind, written+1, &dummy) == FAILURE) {
- /* in case of the single quote, which is repeated, the first one wins,
- * so don't replace the existint mapping */
- add_assoc_string(return_value, (const char*)ind, buffer, 1);
- }
+ map_to_unicode(i, to_uni_table, &uni_cp);
+ r = &ms_table[ENT_STAGE1_INDEX(uni_cp)][ENT_STAGE2_INDEX(uni_cp)][ENT_STAGE3_INDEX(uni_cp)];
+ if (r->data.ent.entity == NULL)
+ continue;
+
+ write_s3row_data(r, i, uni_cp, charset, return_value);
}
}
- /* break thru */
+ } else {
+ /* we could use sizeof(stage3_table_be_apos_00000) as well */
+ unsigned j,
+ numelems = sizeof(stage3_table_be_noapos_00000) /
+ sizeof(*stage3_table_be_noapos_00000);
+
+ for (j = 0; j < numelems; j++) {
+ const entity_stage3_row *r = &entity_table.table[j];
+ if (r->data.ent.entity == NULL)
+ continue;
- case HTML_SPECIALCHARS:
- for (j = 0; basic_entities_ex[j].charcode != 0; j++) {
- if (basic_entities_ex[j].flags && (quote_style & basic_entities_ex[j].flags) == 0)
+ if (((j == '\'' && !(flags & ENT_HTML_QUOTE_SINGLE)) ||
+ (j == '"' && !(flags & ENT_HTML_QUOTE_DOUBLE))))
continue;
-
- ind[0] = (unsigned char)basic_entities_ex[j].charcode;
- ind[1] = '\0';
- if (zend_hash_find(Z_ARRVAL_P(return_value), (const char*)ind, 2, &dummy) == FAILURE) {
- add_assoc_stringl(return_value, ind, basic_entities_ex[j].entity,
- basic_entities_ex[j].entitylen, 1);
- }
- }
- break;
+ /* charset is indifferent, used cs_8859_1 for efficiency */
+ write_s3row_data(r, j, j, cs_8859_1, return_value);
+ }
}
}
/* }}} */
diff --git a/ext/standard/html.h b/ext/standard/html.h
index c50a1be20b..4915e171cb 100644
--- a/ext/standard/html.h
+++ b/ext/standard/html.h
@@ -21,15 +21,30 @@
#ifndef HTML_H
#define HTML_H
-#define ENT_HTML_QUOTE_NONE 0
-#define ENT_HTML_QUOTE_SINGLE 1
-#define ENT_HTML_QUOTE_DOUBLE 2
-#define ENT_HTML_IGNORE_ERRORS 4
-
-#define ENT_COMPAT ENT_HTML_QUOTE_DOUBLE
-#define ENT_QUOTES (ENT_HTML_QUOTE_DOUBLE | ENT_HTML_QUOTE_SINGLE)
-#define ENT_NOQUOTES ENT_HTML_QUOTE_NONE
-#define ENT_IGNORE ENT_HTML_IGNORE_ERRORS
+#define ENT_HTML_QUOTE_NONE 0
+#define ENT_HTML_QUOTE_SINGLE 1
+#define ENT_HTML_QUOTE_DOUBLE 2
+#define ENT_HTML_IGNORE_ERRORS 4
+#define ENT_HTML_SUBSTITUTE_ERRORS 8
+#define ENT_HTML_DOC_TYPE_MASK (16|32)
+#define ENT_HTML_DOC_HTML401 0
+#define ENT_HTML_DOC_XML1 16
+#define ENT_HTML_DOC_XHTML 32
+#define ENT_HTML_DOC_HTML5 (16|32)
+/* reserve bit 6 */
+#define ENT_HTML_SUBSTITUTE_DISALLOWED_CHARS 128
+
+
+#define ENT_COMPAT ENT_HTML_QUOTE_DOUBLE
+#define ENT_QUOTES (ENT_HTML_QUOTE_DOUBLE | ENT_HTML_QUOTE_SINGLE)
+#define ENT_NOQUOTES ENT_HTML_QUOTE_NONE
+#define ENT_IGNORE ENT_HTML_IGNORE_ERRORS
+#define ENT_SUBSTITUTE ENT_HTML_SUBSTITUTE_ERRORS
+#define ENT_HTML401 0
+#define ENT_XML1 16
+#define ENT_XHTML 32
+#define ENT_HTML5 (16|32)
+#define ENT_DISALLOWED 128
void register_html_constants(INIT_FUNC_ARGS);
@@ -39,8 +54,8 @@ PHP_FUNCTION(htmlspecialchars_decode);
PHP_FUNCTION(html_entity_decode);
PHP_FUNCTION(get_html_translation_table);
-PHPAPI char *php_escape_html_entities(unsigned char *old, int oldlen, int *newlen, int all, int quote_style, char *hint_charset TSRMLS_DC);
-PHPAPI char *php_escape_html_entities_ex(unsigned char *old, int oldlen, int *newlen, int all, int quote_style, char *hint_charset, zend_bool double_encode TSRMLS_DC);
-PHPAPI char *php_unescape_html_entities(unsigned char *old, int oldlen, int *newlen, int all, int quote_style, char *hint_charset TSRMLS_DC);
+PHPAPI char *php_escape_html_entities(unsigned char *old, size_t oldlen, size_t *newlen, int all, int flags, char *hint_charset TSRMLS_DC);
+PHPAPI char *php_escape_html_entities_ex(unsigned char *old, size_t oldlen, size_t *newlen, int all, int flags, char *hint_charset, zend_bool double_encode TSRMLS_DC);
+PHPAPI char *php_unescape_html_entities(unsigned char *old, size_t oldlen, size_t *newlen, int all, int flags, char *hint_charset TSRMLS_DC);
#endif /* HTML_H */
diff --git a/ext/standard/html_tables.h b/ext/standard/html_tables.h
index d3a638b695..8d4de82c5a 100644
--- a/ext/standard/html_tables.h
+++ b/ext/standard/html_tables.h
@@ -1,4 +1,4 @@
-/*
+/*
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
@@ -12,15 +12,22 @@
| obtain it through the world-wide-web, please send a note to |
| license@php.net so we can mail you a copy immediately. |
+----------------------------------------------------------------------+
- | Author: Rasmus Lerdorf <rasmus@lerdorf.on.ca> |
- +----------------------------------------------------------------------+
*/
-/* $Id: html.h 293036 2010-01-03 09:23:27Z sebastian $ */
+/* $Id$ */
#ifndef HTML_TABLES_H
#define HTML_TABLES_H
+/**************************************************************************
+***************************************************************************
+** THIS FILE IS AUTOMATICALLY GENERATED. DO NOT MODIFY IT. **
+***************************************************************************
+** Please change html_tables/html_table_gen.php instead and then **
+** run it in order to generate this file **
+***************************************************************************
+**************************************************************************/
+
/* cs_terminator is overloaded in the following fashion:
* - It terminates the list entity maps.
* - In BG(inverse_ent_maps), it's the key of the inverse map that stores
@@ -29,367 +36,14 @@
* we don't care about the encoding (UTF-8 is chosen, but it should be used
* when it doesn't matter).
*/
-enum entity_charset { cs_terminator, cs_8859_1, cs_cp1252,
- cs_8859_15, cs_utf_8, cs_big5, cs_gb2312,
- cs_big5hkscs, cs_sjis, cs_eucjp, cs_koi8r,
- cs_cp1251, cs_8859_5, cs_cp866, cs_macroman,
+enum entity_charset { cs_terminator, cs_utf_8, cs_8859_1, cs_cp1252, cs_8859_15,
+ cs_cp1251, cs_8859_5, cs_cp866, cs_macroman, cs_koi8r,
+ cs_big5, cs_gb2312, cs_big5hkscs, cs_sjis, cs_eucjp,
cs_numelems /* used to count the number of charsets */
};
-typedef const char *const entity_table_t;
-
-/* codepage 1252 is a Windows extension to iso-8859-1. */
-static entity_table_t ent_cp_1252[] = {
- "euro", NULL, "sbquo", "fnof", "bdquo", "hellip", "dagger",
- "Dagger", "circ", "permil", "Scaron", "lsaquo", "OElig",
- NULL, NULL, NULL, NULL, "lsquo", "rsquo", "ldquo", "rdquo",
- "bull", "ndash", "mdash", "tilde", "trade", "scaron", "rsaquo",
- "oelig", NULL, NULL, "Yuml"
-};
-
-static entity_table_t ent_iso_8859_1[] = {
- "nbsp", "iexcl", "cent", "pound", "curren", "yen", "brvbar",
- "sect", "uml", "copy", "ordf", "laquo", "not", "shy", "reg",
- "macr", "deg", "plusmn", "sup2", "sup3", "acute", "micro",
- "para", "middot", "cedil", "sup1", "ordm", "raquo", "frac14",
- "frac12", "frac34", "iquest", "Agrave", "Aacute", "Acirc",
- "Atilde", "Auml", "Aring", "AElig", "Ccedil", "Egrave",
- "Eacute", "Ecirc", "Euml", "Igrave", "Iacute", "Icirc",
- "Iuml", "ETH", "Ntilde", "Ograve", "Oacute", "Ocirc", "Otilde",
- "Ouml", "times", "Oslash", "Ugrave", "Uacute", "Ucirc", "Uuml",
- "Yacute", "THORN", "szlig", "agrave", "aacute", "acirc",
- "atilde", "auml", "aring", "aelig", "ccedil", "egrave",
- "eacute", "ecirc", "euml", "igrave", "iacute", "icirc",
- "iuml", "eth", "ntilde", "ograve", "oacute", "ocirc", "otilde",
- "ouml", "divide", "oslash", "ugrave", "uacute", "ucirc",
- "uuml", "yacute", "thorn", "yuml"
-};
-
-static entity_table_t ent_iso_8859_15[] = {
- "nbsp", "iexcl", "cent", "pound", "euro", "yen", "Scaron",
- "sect", "scaron", "copy", "ordf", "laquo", "not", "shy", "reg",
- "macr", "deg", "plusmn", "sup2", "sup3", NULL, /* Zcaron */
- "micro", "para", "middot", NULL, /* zcaron */ "sup1", "ordm",
- "raquo", "OElig", "oelig", "Yuml", "iquest", "Agrave", "Aacute",
- "Acirc", "Atilde", "Auml", "Aring", "AElig", "Ccedil", "Egrave",
- "Eacute", "Ecirc", "Euml", "Igrave", "Iacute", "Icirc",
- "Iuml", "ETH", "Ntilde", "Ograve", "Oacute", "Ocirc", "Otilde",
- "Ouml", "times", "Oslash", "Ugrave", "Uacute", "Ucirc", "Uuml",
- "Yacute", "THORN", "szlig", "agrave", "aacute", "acirc",
- "atilde", "auml", "aring", "aelig", "ccedil", "egrave",
- "eacute", "ecirc", "euml", "igrave", "iacute", "icirc",
- "iuml", "eth", "ntilde", "ograve", "oacute", "ocirc", "otilde",
- "ouml", "divide", "oslash", "ugrave", "uacute", "ucirc",
- "uuml", "yacute", "thorn", "yuml"
-};
-
-static entity_table_t ent_uni_338_402[] = {
- /* 338 (0x0152) */
- "OElig", "oelig", NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- /* 352 (0x0160) */
- "Scaron", "scaron", NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- /* 376 (0x0178) */
- "Yuml", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- /* 400 (0x0190) */
- NULL, NULL, "fnof"
-};
-
-static entity_table_t ent_uni_spacing[] = {
- /* 710 */
- "circ",
- /* 711 - 730 */
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- /* 731 - 732 */
- NULL, "tilde"
-};
-
-static entity_table_t ent_uni_greek[] = {
- /* 913 */
- "Alpha", "Beta", "Gamma", "Delta", "Epsilon", "Zeta", "Eta", "Theta",
- "Iota", "Kappa", "Lambda", "Mu", "Nu", "Xi", "Omicron", "Pi", "Rho",
- NULL, "Sigma", "Tau", "Upsilon", "Phi", "Chi", "Psi", "Omega",
- /* 938 - 944 are not mapped */
- NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- "alpha", "beta", "gamma", "delta", "epsilon", "zeta", "eta", "theta",
- "iota", "kappa", "lambda", "mu", "nu", "xi", "omicron", "pi", "rho",
- "sigmaf", "sigma", "tau", "upsilon", "phi", "chi", "psi", "omega",
- /* 970 - 976 are not mapped */
- NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- "thetasym", "upsih",
- NULL, NULL, NULL,
- "piv"
-};
-
-static entity_table_t ent_uni_punct[] = {
- /* 8194 */
- "ensp", "emsp", NULL, NULL, NULL, NULL, NULL,
- "thinsp", NULL, NULL, "zwnj", "zwj", "lrm", "rlm",
- NULL, NULL, NULL, "ndash", "mdash", NULL, NULL, NULL,
- /* 8216 */
- "lsquo", "rsquo", "sbquo", NULL, "ldquo", "rdquo", "bdquo", NULL,
- "dagger", "Dagger", "bull", NULL, NULL, NULL, "hellip",
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, "permil", NULL,
- /* 8242 */
- "prime", "Prime", NULL, NULL, NULL, NULL, NULL, "lsaquo", "rsaquo", NULL,
- NULL, NULL, "oline", NULL, NULL, NULL, NULL, NULL,
- "frasl"
-};
-
-static entity_table_t ent_uni_euro[] = {
- "euro"
-};
-
-static entity_table_t ent_uni_8465_8501[] = {
- /* 8465 */
- "image", NULL, NULL, NULL, NULL, NULL, NULL,
- /* 8472 */
- "weierp", NULL, NULL, NULL,
- /* 8476 */
- "real", NULL, NULL, NULL, NULL, NULL,
- /* 8482 */
- "trade", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- /* 8501 */
- "alefsym",
-};
-
-static entity_table_t ent_uni_8592_9002[] = {
- /* 8592 (0x2190) */
- "larr", "uarr", "rarr", "darr", "harr", NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- /* 8608 (0x21a0) */
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- /* 8624 (0x21b0) */
- NULL, NULL, NULL, NULL, NULL, "crarr", NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- /* 8640 (0x21c0) */
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- /* 8656 (0x21d0) */
- "lArr", "uArr", "rArr", "dArr", "hArr", NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- /* 8672 (0x21e0) */
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- /* 8704 (0x2200) */
- "forall", NULL, "part", "exist", NULL, "empty", NULL, "nabla",
- "isin", "notin", NULL, "ni", NULL, NULL, NULL, "prod",
- /* 8720 (0x2210) */
- NULL, "sum", "minus", NULL, NULL, NULL, NULL, "lowast",
- NULL, NULL, "radic", NULL, NULL, "prop", "infin", NULL,
- /* 8736 (0x2220) */
- "ang", NULL, NULL, NULL, NULL, NULL, NULL, "and",
- "or", "cap", "cup", "int", NULL, NULL, NULL, NULL,
- /* 8752 (0x2230) */
- NULL, NULL, NULL, NULL, "there4", NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, "sim", NULL, NULL, NULL,
- /* 8768 (0x2240) */
- NULL, NULL, NULL, NULL, NULL, "cong", NULL, NULL,
- "asymp", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- /* 8784 (0x2250) */
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- /* 8800 (0x2260) */
- "ne", "equiv", NULL, NULL, "le", "ge", NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- /* 8816 (0x2270) */
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- /* 8832 (0x2280) */
- NULL, NULL, "sub", "sup", "nsub", NULL, "sube", "supe",
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- /* 8848 (0x2290) */
- NULL, NULL, NULL, NULL, NULL, "oplus", NULL, "otimes",
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- /* 8864 (0x22a0) */
- NULL, NULL, NULL, NULL, NULL, "perp", NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- /* 8880 (0x22b0) */
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- /* 8896 (0x22c0) */
- NULL, NULL, NULL, NULL, NULL, "sdot", NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- /* 8912 (0x22d0) */
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- /* 8928 (0x22e0) */
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- /* 8944 (0x22f0) */
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- /* 8960 (0x2300) */
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- "lceil", "rceil", "lfloor", "rfloor", NULL, NULL, NULL, NULL,
- /* 8976 (0x2310) */
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- /* 8992 (0x2320) */
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, "lang", "rang"
-};
-
-static entity_table_t ent_uni_9674[] = {
- /* 9674 */
- "loz"
-};
-
-static entity_table_t ent_uni_9824_9830[] = {
- /* 9824 */
- "spades", NULL, NULL, "clubs", NULL, "hearts", "diams"
-};
-
-static entity_table_t ent_koi8r[] = {
- "#1105", /* "jo "*/
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, "#1025", /* "JO" */
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- "#1102", "#1072", "#1073", "#1094", "#1076", "#1077", "#1092",
- "#1075", "#1093", "#1080", "#1081", "#1082", "#1083", "#1084",
- "#1085", "#1086", "#1087", "#1103", "#1088", "#1089", "#1090",
- "#1091", "#1078", "#1074", "#1100", "#1099", "#1079", "#1096",
- "#1101", "#1097", "#1095", "#1098", "#1070", "#1040", "#1041",
- "#1062", "#1044", "#1045", "#1060", "#1043", "#1061", "#1048",
- "#1049", "#1050", "#1051", "#1052", "#1053", "#1054", "#1055",
- "#1071", "#1056", "#1057", "#1058", "#1059", "#1046", "#1042",
- "#1068", "#1067", "#1047", "#1064", "#1069", "#1065", "#1063",
- "#1066"
-};
-
-static entity_table_t ent_cp_1251[] = {
- "#1026", "#1027", "#8218", "#1107", "#8222", "hellip", "dagger",
- "Dagger", "euro", "permil", "#1033", "#8249", "#1034", "#1036",
- "#1035", "#1039", "#1106", "#8216", "#8217", "#8219", "#8220",
- "bull", "ndash", "mdash", NULL, "trade", "#1113", "#8250",
- "#1114", "#1116", "#1115", "#1119", "nbsp", "#1038", "#1118",
- "#1032", "curren", "#1168", "brvbar", "sect", "#1025", "copy",
- "#1028", "laquo", "not", "shy", "reg", "#1031", "deg", "plusmn",
- "#1030", "#1110", "#1169", "micro", "para", "middot", "#1105",
- "#8470", "#1108", "raquo", "#1112", "#1029", "#1109", "#1111",
- "#1040", "#1041", "#1042", "#1043", "#1044", "#1045", "#1046",
- "#1047", "#1048", "#1049", "#1050", "#1051", "#1052", "#1053",
- "#1054", "#1055", "#1056", "#1057", "#1058", "#1059", "#1060",
- "#1061", "#1062", "#1063", "#1064", "#1065", "#1066", "#1067",
- "#1068", "#1069", "#1070", "#1071", "#1072", "#1073", "#1074",
- "#1075", "#1076", "#1077", "#1078", "#1079", "#1080", "#1081",
- "#1082", "#1083", "#1084", "#1085", "#1086", "#1087", "#1088",
- "#1089", "#1090", "#1091", "#1092", "#1093", "#1094", "#1095",
- "#1096", "#1097", "#1098", "#1099", "#1100", "#1101", "#1102",
- "#1103"
-};
-
-static entity_table_t ent_iso_8859_5[] = {
- "#1056", "#1057", "#1058", "#1059", "#1060", "#1061", "#1062",
- "#1063", "#1064", "#1065", "#1066", "#1067", "#1068", "#1069",
- "#1070", "#1071", "#1072", "#1073", "#1074", "#1075", "#1076",
- "#1077", "#1078", "#1079", "#1080", "#1081", "#1082", "#1083",
- "#1084", "#1085", "#1086", "#1087", "#1088", "#1089", "#1090",
- "#1091", "#1092", "#1093", "#1094", "#1095", "#1096", "#1097",
- "#1098", "#1099", "#1100", "#1101", "#1102", "#1103", "#1104",
- "#1105", "#1106", "#1107", "#1108", "#1109", "#1110", "#1111",
- "#1112", "#1113", "#1114", "#1115", "#1116", "#1117", "#1118",
- "#1119"
-};
-
-static entity_table_t ent_cp_866[] = {
-
- "#9492", "#9524", "#9516", "#9500", "#9472", "#9532", "#9566",
- "#9567", "#9562", "#9556", "#9577", "#9574", "#9568", "#9552",
- "#9580", "#9575", "#9576", "#9572", "#9573", "#9561", "#9560",
- "#9554", "#9555", "#9579", "#9578", "#9496", "#9484", "#9608",
- "#9604", "#9612", "#9616", "#9600", "#1088", "#1089", "#1090",
- "#1091", "#1092", "#1093", "#1094", "#1095", "#1096", "#1097",
- "#1098", "#1099", "#1100", "#1101", "#1102", "#1103", "#1025",
- "#1105", "#1028", "#1108", "#1031", "#1111", "#1038", "#1118",
- "#176", "#8729", "#183", "#8730", "#8470", "#164", "#9632",
- "#160"
-};
-
-/* MacRoman has a couple of low-ascii chars that need mapping too */
-/* Vertical tab (ASCII 11) is often used to store line breaks inside */
-/* DB exports, this mapping changes it to a space */
-static entity_table_t ent_macroman[] = {
- "sp", NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, "quot", NULL,
- NULL, NULL, "amp", NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, "lt", NULL, "gt", NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, "Auml", "Aring", "Ccedil", "Eacute", "Ntilde", "Ouml",
- "Uuml", "aacute", "agrave", "acirc", "auml", "atilde", "aring",
- "ccedil", "eacute", "egrave", "ecirc", "euml", "iacute", "igrave",
- "icirc", "iuml", "ntilde", "oacute", "ograve", "ocirc", "ouml",
- "otilde", "uacute", "ugrave", "ucirc", "uuml", "dagger", "deg",
- "cent", "pound", "sect", "bull", "para", "szlig", "reg",
- "copy", "trade", "acute", "uml", "ne", "AElig", "Oslash",
- "infin", "plusmn", "le", "ge", "yen", "micro", "part",
- "sum", "prod", "pi", "int", "ordf", "ordm", "Omega",
- "aelig", "oslash", "iquest", "iexcl", "not", "radic", "fnof",
- "asymp", "#8710", "laquo", "raquo", "hellip", "nbsp", "Agrave",
- "Atilde", "Otilde", "OElig", "oelig", "ndash", "mdash", "ldquo",
- "rdquo", "lsquo", "rsquo", "divide", "loz", "yuml", "Yuml",
- "frasl", "euro", "lsaquo", "rsaquo", "#xFB01", "#xFB02", "Dagger",
- "middot", "sbquo", "bdquo", "permil", "Acirc", "Ecirc", "Aacute",
- "Euml", "Egrave", "Iacute", "Icirc", "Iuml", "Igrave", "Oacute",
- "Ocirc", "#xF8FF", "Ograve", "Uacute", "Ucirc", "Ugrave", "#305",
- "circ", "tilde", "macr", "#728", "#729", "#730", "cedil",
- "#733", "#731", "#711"
-};
-
-struct html_entity_map {
- enum entity_charset charset; /* charset identifier */
- unsigned int basechar; /* char code at start of table */
- unsigned int endchar; /* last char code in the table */
- entity_table_t *table; /* the table of mappings */
-};
-
-static const struct html_entity_map entity_map[] = {
- { cs_cp1252, 0x80, 0x9f, ent_cp_1252 },
- { cs_cp1252, 0xa0, 0xff, ent_iso_8859_1 },
- { cs_8859_1, 0xa0, 0xff, ent_iso_8859_1 },
- { cs_8859_15, 0xa0, 0xff, ent_iso_8859_15 },
- { cs_utf_8, 0xa0, 0xff, ent_iso_8859_1 },
- { cs_utf_8, 338, 402, ent_uni_338_402 },
- { cs_utf_8, 710, 732, ent_uni_spacing },
- { cs_utf_8, 913, 982, ent_uni_greek },
- { cs_utf_8, 8194, 8260, ent_uni_punct },
- { cs_utf_8, 8364, 8364, ent_uni_euro },
- { cs_utf_8, 8465, 8501, ent_uni_8465_8501 },
- { cs_utf_8, 8592, 9002, ent_uni_8592_9002 },
- { cs_utf_8, 9674, 9674, ent_uni_9674 },
- { cs_utf_8, 9824, 9830, ent_uni_9824_9830 },
- { cs_big5, 0xa0, 0xff, ent_iso_8859_1 },
- { cs_gb2312, 0xa0, 0xff, ent_iso_8859_1 },
- { cs_big5hkscs, 0xa0, 0xff, ent_iso_8859_1 },
- { cs_sjis, 0xa0, 0xff, ent_iso_8859_1 },
- { cs_eucjp, 0xa0, 0xff, ent_iso_8859_1 },
- { cs_koi8r, 0xa3, 0xff, ent_koi8r },
- { cs_cp1251, 0x80, 0xff, ent_cp_1251 },
- { cs_8859_5, 0xc0, 0xff, ent_iso_8859_5 },
- { cs_cp866, 0xc0, 0xff, ent_cp_866 },
- { cs_macroman, 0x0b, 0xff, ent_macroman },
- { cs_terminator }
-};
+#define CHARSET_UNICODE_COMPAT(cs) ((cs) <= cs_utf_8)
+#define CHARSET_SINGLE_BYTE(cs) ((cs) > cs_utf_8 && (cs) < cs_big5)
+#define CHARSET_PARTIAL_SUPPORT(cs) ((cs) >= cs_big5)
static const struct {
const char *codeset;
@@ -428,74 +82,463 @@ static const struct {
{ NULL }
};
+/* longest entity name length excluding & and ; */
+#define LONGEST_ENTITY_LENGTH 31
+
+/* Definitions for mappings *to* Unicode.
+ * The origin charset must have at most 256 code points.
+ * The multi-byte encodings are not supported */
typedef struct {
- unsigned short charcode;
- char *entity;
- int entitylen;
- int flags;
-} basic_entity_t;
-
-static const basic_entity_t basic_entities_ex[] = {
- { '&', "&amp;", 5, 0 },
- { '"', "&quot;", 6, ENT_HTML_QUOTE_DOUBLE },
- /* PHP traditionally encodes ' as &#039;, not &apos;, so leave this entry here */
- { '\'', "&#039;", 6, ENT_HTML_QUOTE_SINGLE },
- { '\'', "&apos;", 6, ENT_HTML_QUOTE_SINGLE },
- { '<', "&lt;", 4, 0 },
- { '>', "&gt;", 4, 0 },
- { 0, NULL, 0, 0 }
-};
-
-/* In some cases, we need to give special treatment to &, so we
- * use this instead */
-static const basic_entity_t *basic_entities = &basic_entities_ex[1];
+ unsigned short uni_cp[64];
+} enc_to_uni_stage2;
+
+typedef struct {
+ const enc_to_uni_stage2 *inner[4];
+} enc_to_uni;
+
+/* bits 7-8 bits (only single bytes encodings supported )*/
+#define ENT_ENC_TO_UNI_STAGE1(k) ((k & 0xC0) >> 6)
+/* bits 1-6 */
+#define ENT_ENC_TO_UNI_STAGE2(k) ((k) & 0x3F)
+
+/* {{{ Mappings *to* Unicode for ISO-8859-1 */
+
+/* {{{ Stage 2 tables for ISO-8859-1 */
+
+static const enc_to_uni_stage2 enc_to_uni_s2_iso88591_00 = {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005,
+ 0x0006, 0x0007, 0x0008, 0x0009, 0x000A, 0x000B,
+ 0x000C, 0x000D, 0x000E, 0x000F, 0x0010, 0x0011,
+ 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D,
+ 0x001E, 0x001F, 0x0020, 0x0021, 0x0022, 0x0023,
+ 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029,
+ 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035,
+ 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, 0x003B,
+ 0x003C, 0x003D, 0x003E, 0x003F,
+};
+
+static const enc_to_uni_stage2 enc_to_uni_s2_iso88591_40 = {
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045,
+ 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B,
+ 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, 0x0051,
+ 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D,
+ 0x005E, 0x005F, 0x0060, 0x0061, 0x0062, 0x0063,
+ 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069,
+ 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075,
+ 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007B,
+ 0x007C, 0x007D, 0x007E, 0x007F,
+};
+
+static const enc_to_uni_stage2 enc_to_uni_s2_iso88591_80 = {
+ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085,
+ 0x0086, 0x0087, 0x0088, 0x0089, 0x008A, 0x008B,
+ 0x008C, 0x008D, 0x008E, 0x008F, 0x0090, 0x0091,
+ 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+ 0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D,
+ 0x009E, 0x009F, 0x00A0, 0x00A1, 0x00A2, 0x00A3,
+ 0x00A4, 0x00A5, 0x00A6, 0x00A7, 0x00A8, 0x00A9,
+ 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF,
+ 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5,
+ 0x00B6, 0x00B7, 0x00B8, 0x00B9, 0x00BA, 0x00BB,
+ 0x00BC, 0x00BD, 0x00BE, 0x00BF,
+};
+
+static const enc_to_uni_stage2 enc_to_uni_s2_iso88591_C0 = {
+ 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5,
+ 0x00C6, 0x00C7, 0x00C8, 0x00C9, 0x00CA, 0x00CB,
+ 0x00CC, 0x00CD, 0x00CE, 0x00CF, 0x00D0, 0x00D1,
+ 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7,
+ 0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x00DD,
+ 0x00DE, 0x00DF, 0x00E0, 0x00E1, 0x00E2, 0x00E3,
+ 0x00E4, 0x00E5, 0x00E6, 0x00E7, 0x00E8, 0x00E9,
+ 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF,
+ 0x00F0, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5,
+ 0x00F6, 0x00F7, 0x00F8, 0x00F9, 0x00FA, 0x00FB,
+ 0x00FC, 0x00FD, 0x00FE, 0x00FF,
+};
+
+/* end of stage 2 tables for ISO-8859-1 }}} */
+
+/* {{{ Stage 1 table for ISO-8859-1 */
+static const enc_to_uni enc_to_uni_iso88591 = {
+ &enc_to_uni_s2_iso88591_00,
+ &enc_to_uni_s2_iso88591_40,
+ &enc_to_uni_s2_iso88591_80,
+ &enc_to_uni_s2_iso88591_C0,
+};
+/* end of stage 1 table for ISO-8859-1 }}} */
+
+/* {{{ Mappings *to* Unicode for ISO-8859-5 */
+
+/* {{{ Stage 2 tables for ISO-8859-5 */
+
+static const enc_to_uni_stage2 enc_to_uni_s2_iso88595_80 = {
+ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085,
+ 0x0086, 0x0087, 0x0088, 0x0089, 0x008A, 0x008B,
+ 0x008C, 0x008D, 0x008E, 0x008F, 0x0090, 0x0091,
+ 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+ 0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D,
+ 0x009E, 0x009F, 0x00A0, 0x0401, 0x0402, 0x0403,
+ 0x0404, 0x0405, 0x0406, 0x0407, 0x0408, 0x0409,
+ 0x040A, 0x040B, 0x040C, 0x00AD, 0x040E, 0x040F,
+ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415,
+ 0x0416, 0x0417, 0x0418, 0x0419, 0x041A, 0x041B,
+ 0x041C, 0x041D, 0x041E, 0x041F,
+};
+
+static const enc_to_uni_stage2 enc_to_uni_s2_iso88595_C0 = {
+ 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425,
+ 0x0426, 0x0427, 0x0428, 0x0429, 0x042A, 0x042B,
+ 0x042C, 0x042D, 0x042E, 0x042F, 0x0430, 0x0431,
+ 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
+ 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D,
+ 0x043E, 0x043F, 0x0440, 0x0441, 0x0442, 0x0443,
+ 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449,
+ 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F,
+ 0x2116, 0x0451, 0x0452, 0x0453, 0x0454, 0x0455,
+ 0x0456, 0x0457, 0x0458, 0x0459, 0x045A, 0x045B,
+ 0x045C, 0x00A7, 0x045E, 0x045F,
+};
+
+/* end of stage 2 tables for ISO-8859-5 }}} */
+
+/* {{{ Stage 1 table for ISO-8859-5 */
+static const enc_to_uni enc_to_uni_iso88595 = {
+ &enc_to_uni_s2_iso88591_00,
+ &enc_to_uni_s2_iso88591_40,
+ &enc_to_uni_s2_iso88595_80,
+ &enc_to_uni_s2_iso88595_C0,
+};
+/* end of stage 1 table for ISO-8859-5 }}} */
+
+/* {{{ Mappings *to* Unicode for ISO-8859-15 */
+
+/* {{{ Stage 2 tables for ISO-8859-15 */
+
+static const enc_to_uni_stage2 enc_to_uni_s2_iso885915_80 = {
+ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085,
+ 0x0086, 0x0087, 0x0088, 0x0089, 0x008A, 0x008B,
+ 0x008C, 0x008D, 0x008E, 0x008F, 0x0090, 0x0091,
+ 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+ 0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D,
+ 0x009E, 0x009F, 0x00A0, 0x00A1, 0x00A2, 0x00A3,
+ 0x20AC, 0x00A5, 0x0160, 0x00A7, 0x0161, 0x00A9,
+ 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF,
+ 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x017D, 0x00B5,
+ 0x00B6, 0x00B7, 0x017E, 0x00B9, 0x00BA, 0x00BB,
+ 0x0152, 0x0153, 0x0178, 0x00BF,
+};
+
+/* end of stage 2 tables for ISO-8859-15 }}} */
+
+/* {{{ Stage 1 table for ISO-8859-15 */
+static const enc_to_uni enc_to_uni_iso885915 = {
+ &enc_to_uni_s2_iso88591_00,
+ &enc_to_uni_s2_iso88591_40,
+ &enc_to_uni_s2_iso885915_80,
+ &enc_to_uni_s2_iso88591_C0,
+};
+/* end of stage 1 table for ISO-8859-15 }}} */
+
+/* {{{ Mappings *to* Unicode for Windows-1252 */
+
+/* {{{ Stage 2 tables for Windows-1252 */
+
+static const enc_to_uni_stage2 enc_to_uni_s2_win1252_80 = {
+ 0x20AC, 0xFFFF, 0x201A, 0x0192, 0x201E, 0x2026,
+ 0x2020, 0x2021, 0x02C6, 0x2030, 0x0160, 0x2039,
+ 0x0152, 0xFFFF, 0x017D, 0xFFFF, 0xFFFF, 0x2018,
+ 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
+ 0x02DC, 0x2122, 0x0161, 0x203A, 0x0153, 0xFFFF,
+ 0x017E, 0x0178, 0x00A0, 0x00A1, 0x00A2, 0x00A3,
+ 0x00A4, 0x00A5, 0x00A6, 0x00A7, 0x00A8, 0x00A9,
+ 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF,
+ 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5,
+ 0x00B6, 0x00B7, 0x00B8, 0x00B9, 0x00BA, 0x00BB,
+ 0x00BC, 0x00BD, 0x00BE, 0x00BF,
+};
+
+/* end of stage 2 tables for Windows-1252 }}} */
+
+/* {{{ Stage 1 table for Windows-1252 */
+static const enc_to_uni enc_to_uni_win1252 = {
+ &enc_to_uni_s2_iso88591_00,
+ &enc_to_uni_s2_iso88591_40,
+ &enc_to_uni_s2_win1252_80,
+ &enc_to_uni_s2_iso88591_C0,
+};
+/* end of stage 1 table for Windows-1252 }}} */
+
+/* {{{ Mappings *to* Unicode for Windows-1251 */
+
+/* {{{ Stage 2 tables for Windows-1251 */
+
+static const enc_to_uni_stage2 enc_to_uni_s2_win1251_80 = {
+ 0x0402, 0x0403, 0x201A, 0x0453, 0x201E, 0x2026,
+ 0x2020, 0x2021, 0x20AC, 0x2030, 0x0409, 0x2039,
+ 0x040A, 0x040C, 0x040B, 0x040F, 0x0452, 0x2018,
+ 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
+ 0xFFFF, 0x2122, 0x0459, 0x203A, 0x045A, 0x045C,
+ 0x045B, 0x045F, 0x00A0, 0x040E, 0x045E, 0x0408,
+ 0x00A4, 0x0490, 0x00A6, 0x00A7, 0x0401, 0x00A9,
+ 0x0404, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x0407,
+ 0x00B0, 0x00B1, 0x0406, 0x0456, 0x0491, 0x00B5,
+ 0x00B6, 0x00B7, 0x0451, 0x2116, 0x0454, 0x00BB,
+ 0x0458, 0x0405, 0x0455, 0x0457,
+};
+
+static const enc_to_uni_stage2 enc_to_uni_s2_win1251_C0 = {
+ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415,
+ 0x0416, 0x0417, 0x0418, 0x0419, 0x041A, 0x041B,
+ 0x041C, 0x041D, 0x041E, 0x041F, 0x0420, 0x0421,
+ 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
+ 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D,
+ 0x042E, 0x042F, 0x0430, 0x0431, 0x0432, 0x0433,
+ 0x0434, 0x0435, 0x0436, 0x0437, 0x0438, 0x0439,
+ 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F,
+ 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445,
+ 0x0446, 0x0447, 0x0448, 0x0449, 0x044A, 0x044B,
+ 0x044C, 0x044D, 0x044E, 0x044F,
+};
+
+/* end of stage 2 tables for Windows-1251 }}} */
+
+/* {{{ Stage 1 table for Windows-1251 */
+static const enc_to_uni enc_to_uni_win1251 = {
+ &enc_to_uni_s2_iso88591_00,
+ &enc_to_uni_s2_iso88591_40,
+ &enc_to_uni_s2_win1251_80,
+ &enc_to_uni_s2_win1251_C0,
+};
+/* end of stage 1 table for Windows-1251 }}} */
+
+/* {{{ Mappings *to* Unicode for KOI8-R */
+
+/* {{{ Stage 2 tables for KOI8-R */
+
+static const enc_to_uni_stage2 enc_to_uni_s2_koi8r_80 = {
+ 0x2500, 0x2502, 0x250C, 0x2510, 0x2514, 0x2518,
+ 0x251C, 0x2524, 0x252C, 0x2534, 0x253C, 0x2580,
+ 0x2584, 0x2588, 0x258C, 0x2590, 0x2591, 0x2592,
+ 0x2593, 0x2320, 0x25A0, 0x2219, 0x221A, 0x2248,
+ 0x2264, 0x2265, 0x00A0, 0x2321, 0x00B0, 0x00B2,
+ 0x00B7, 0x00F7, 0x2550, 0x2551, 0x2552, 0x0451,
+ 0x2553, 0x2554, 0x2555, 0x2556, 0x2557, 0x2558,
+ 0x2559, 0x255A, 0x255B, 0x255C, 0x255D, 0x255E,
+ 0x255F, 0x2560, 0x2561, 0x0401, 0x2562, 0x2563,
+ 0x2564, 0x2565, 0x2566, 0x2567, 0x2568, 0x2569,
+ 0x256A, 0x256B, 0x256C, 0x00A9,
+};
+
+static const enc_to_uni_stage2 enc_to_uni_s2_koi8r_C0 = {
+ 0x044E, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435,
+ 0x0444, 0x0433, 0x0445, 0x0438, 0x0439, 0x043A,
+ 0x043B, 0x043C, 0x043D, 0x043E, 0x043F, 0x044F,
+ 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432,
+ 0x044C, 0x044B, 0x0437, 0x0448, 0x044D, 0x0449,
+ 0x0447, 0x044A, 0x042E, 0x0410, 0x0411, 0x0426,
+ 0x0414, 0x0415, 0x0424, 0x0413, 0x0425, 0x0418,
+ 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E,
+ 0x041F, 0x042F, 0x0420, 0x0421, 0x0422, 0x0423,
+ 0x0416, 0x0412, 0x042C, 0x042B, 0x0417, 0x0428,
+ 0x042D, 0x0429, 0x0427, 0x042A,
+};
+
+/* end of stage 2 tables for KOI8-R }}} */
+
+/* {{{ Stage 1 table for KOI8-R */
+static const enc_to_uni enc_to_uni_koi8r = {
+ &enc_to_uni_s2_iso88591_00,
+ &enc_to_uni_s2_iso88591_40,
+ &enc_to_uni_s2_koi8r_80,
+ &enc_to_uni_s2_koi8r_C0,
+};
+/* end of stage 1 table for KOI8-R }}} */
+
+/* {{{ Mappings *to* Unicode for CP-866 */
+
+/* {{{ Stage 2 tables for CP-866 */
+
+static const enc_to_uni_stage2 enc_to_uni_s2_cp866_80 = {
+ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415,
+ 0x0416, 0x0417, 0x0418, 0x0419, 0x041A, 0x041B,
+ 0x041C, 0x041D, 0x041E, 0x041F, 0x0420, 0x0421,
+ 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
+ 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D,
+ 0x042E, 0x042F, 0x0430, 0x0431, 0x0432, 0x0433,
+ 0x0434, 0x0435, 0x0436, 0x0437, 0x0438, 0x0439,
+ 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F,
+ 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561,
+ 0x2562, 0x2556, 0x2555, 0x2563, 0x2551, 0x2557,
+ 0x255D, 0x255C, 0x255B, 0x2510,
+};
+
+static const enc_to_uni_stage2 enc_to_uni_s2_cp866_C0 = {
+ 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C,
+ 0x255E, 0x255F, 0x255A, 0x2554, 0x2569, 0x2566,
+ 0x2560, 0x2550, 0x256C, 0x2567, 0x2568, 0x2564,
+ 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B,
+ 0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C,
+ 0x2590, 0x2580, 0x0440, 0x0441, 0x0442, 0x0443,
+ 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449,
+ 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F,
+ 0x0401, 0x0451, 0x0404, 0x0454, 0x0407, 0x0457,
+ 0x040E, 0x045E, 0x00B0, 0x2219, 0x00B7, 0x221A,
+ 0x2116, 0x00A4, 0x25A0, 0x00A0,
+};
+
+/* end of stage 2 tables for CP-866 }}} */
+
+/* {{{ Stage 1 table for CP-866 */
+static const enc_to_uni enc_to_uni_cp866 = {
+ &enc_to_uni_s2_iso88591_00,
+ &enc_to_uni_s2_iso88591_40,
+ &enc_to_uni_s2_cp866_80,
+ &enc_to_uni_s2_cp866_C0,
+};
+/* end of stage 1 table for CP-866 }}} */
+
+/* {{{ Mappings *to* Unicode for MacRoman */
+
+/* {{{ Stage 2 tables for MacRoman */
+
+static const enc_to_uni_stage2 enc_to_uni_s2_macroman_00 = {
+ 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
+ 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
+ 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
+ 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
+ 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
+ 0xFFFF, 0xFFFF, 0x0020, 0x0021, 0x0022, 0x0023,
+ 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029,
+ 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035,
+ 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, 0x003B,
+ 0x003C, 0x003D, 0x003E, 0x003F,
+};
+
+static const enc_to_uni_stage2 enc_to_uni_s2_macroman_40 = {
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045,
+ 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B,
+ 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, 0x0051,
+ 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D,
+ 0x005E, 0x005F, 0x0060, 0x0061, 0x0062, 0x0063,
+ 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069,
+ 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075,
+ 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007B,
+ 0x007C, 0x007D, 0x007E, 0xFFFF,
+};
+
+static const enc_to_uni_stage2 enc_to_uni_s2_macroman_80 = {
+ 0x00C4, 0x00C5, 0x00C7, 0x00C9, 0x00D1, 0x00D6,
+ 0x00DC, 0x00E1, 0x00E0, 0x00E2, 0x00E4, 0x00E3,
+ 0x00E5, 0x00E7, 0x00E9, 0x00E8, 0x00EA, 0x00EB,
+ 0x00ED, 0x00EC, 0x00EE, 0x00EF, 0x00F1, 0x00F3,
+ 0x00F2, 0x00F4, 0x00F6, 0x00F5, 0x00FA, 0x00F9,
+ 0x00FB, 0x00FC, 0x2020, 0x00B0, 0x00A2, 0x00A3,
+ 0x00A7, 0x2022, 0x00B6, 0x00DF, 0x00AE, 0x00A9,
+ 0x2122, 0x00B4, 0x00A8, 0x2260, 0x00C6, 0x00D8,
+ 0x221E, 0x00B1, 0x2264, 0x2265, 0x00A5, 0x00B5,
+ 0x2202, 0x2211, 0x220F, 0x03C0, 0x222B, 0x00AA,
+ 0x00BA, 0x03A9, 0x00E6, 0x00F8,
+};
+
+static const enc_to_uni_stage2 enc_to_uni_s2_macroman_C0 = {
+ 0x00BF, 0x00A1, 0x00AC, 0x221A, 0x0192, 0x2248,
+ 0x2206, 0x00AB, 0x00BB, 0x2026, 0x00A0, 0x00C0,
+ 0x00C3, 0x00D5, 0x0152, 0x0153, 0x2013, 0x2014,
+ 0x201C, 0x201D, 0x2018, 0x2019, 0x00F7, 0x25CA,
+ 0x00FF, 0x0178, 0x2044, 0x20AC, 0x2039, 0x203A,
+ 0xFB01, 0xFB02, 0x2021, 0x00B7, 0x201A, 0x201E,
+ 0x2030, 0x00C2, 0x00CA, 0x00C1, 0x00CB, 0x00C8,
+ 0x00CD, 0x00CE, 0x00CF, 0x00CC, 0x00D3, 0x00D4,
+ 0xF8FF, 0x00D2, 0x00DA, 0x00DB, 0x00D9, 0x0131,
+ 0x02C6, 0x02DC, 0x00AF, 0x02D8, 0x02D9, 0x02DA,
+ 0x00B8, 0x02DD, 0x02DB, 0x02C7,
+};
+
+/* end of stage 2 tables for MacRoman }}} */
+
+/* {{{ Stage 1 table for MacRoman */
+static const enc_to_uni enc_to_uni_macroman = {
+ &enc_to_uni_s2_macroman_00,
+ &enc_to_uni_s2_macroman_40,
+ &enc_to_uni_s2_macroman_80,
+ &enc_to_uni_s2_macroman_C0,
+};
+/* end of stage 1 table for MacRoman }}} */
+
+/* {{{ Index of tables for encoding conversion */
+static const enc_to_uni *const enc_to_uni_index[cs_numelems] = {
+ NULL,
+ NULL,
+ &enc_to_uni_iso88591,
+ &enc_to_uni_win1252,
+ &enc_to_uni_iso885915,
+ &enc_to_uni_win1251,
+ &enc_to_uni_iso88595,
+ &enc_to_uni_cp866,
+ &enc_to_uni_macroman,
+ &enc_to_uni_koi8r,
+};
+/* }}} */
+
+/* Definitions for mappings *from* Unicode */
typedef struct {
unsigned short un_code_point; /* we don't need bigger */
unsigned char cs_code; /* currently, we only have maps to single-byte encodings */
-} unicode_mapping;
-
-static const unicode_mapping unimap_iso885915[] = {
- { 0xA5, 0xA5 }, /* yen sign */
- { 0xA7, 0xA7 }, /* section sign */
- { 0xA9, 0xA9 }, /* copyright sign */
- { 0xAA, 0xAA }, /* feminine ordinal indicator */
- { 0xAB, 0xAB }, /* left-pointing double angle quotation mark */
- { 0xAC, 0xAC }, /* not sign */
- { 0xAD, 0xAD }, /* soft hyphen */
- { 0xAE, 0xAE }, /* registered sign */
- { 0xAF, 0xAF }, /* macron */
- { 0xB0, 0xB0 }, /* degree sign */
- { 0xB1, 0xB1 }, /* plus-minus sign */
- { 0xB2, 0xB2 }, /* superscript two */
- { 0xB3, 0xB3 }, /* superscript three */
- { 0xB5, 0xB5 }, /* micro sign */
- { 0xB6, 0xB6 }, /* pilcrow sign */
- { 0xB7, 0xB7 }, /* middle dot */
- { 0xB9, 0xB9 }, /* superscript one */
- { 0xBA, 0xBA }, /* masculine ordinal indicator */
- { 0xBB, 0xBB }, /* right-pointing double angle quotation mark */
- { 0x152, 0xBC }, /* latin capital ligature oe */
- { 0x153, 0xBD }, /* latin small ligature oe */
- { 0x160, 0xA6 }, /* latin capital letter s with caron */
- { 0x161, 0xA8 }, /* latin small letter s with caron */
- { 0x178, 0xBE }, /* latin capital letter y with diaeresis */
- { 0x17D, 0xB4 }, /* latin capital letter z with caron */
- { 0x17E, 0xB8 }, /* latin small letter z with caron */
+} uni_to_enc;
+
+/* {{{ Mappings *from* Unicode for ISO-8859-15 */
+static const uni_to_enc unimap_iso885915[] = {
+ { 0x00A5, 0xA5 }, /* yen sign */
+ { 0x00A7, 0xA7 }, /* section sign */
+ { 0x00A9, 0xA9 }, /* copyright sign */
+ { 0x00AA, 0xAA }, /* feminine ordinal indicator */
+ { 0x00AB, 0xAB }, /* left-pointing double angle quotation mark */
+ { 0x00AC, 0xAC }, /* not sign */
+ { 0x00AD, 0xAD }, /* soft hyphen */
+ { 0x00AE, 0xAE }, /* registered sign */
+ { 0x00AF, 0xAF }, /* macron */
+ { 0x00B0, 0xB0 }, /* degree sign */
+ { 0x00B1, 0xB1 }, /* plus-minus sign */
+ { 0x00B2, 0xB2 }, /* superscript two */
+ { 0x00B3, 0xB3 }, /* superscript three */
+ { 0x00B5, 0xB5 }, /* micro sign */
+ { 0x00B6, 0xB6 }, /* pilcrow sign */
+ { 0x00B7, 0xB7 }, /* middle dot */
+ { 0x00B9, 0xB9 }, /* superscript one */
+ { 0x00BA, 0xBA }, /* masculine ordinal indicator */
+ { 0x00BB, 0xBB }, /* right-pointing double angle quotation mark */
+ { 0x0152, 0xBC }, /* latin capital ligature oe */
+ { 0x0153, 0xBD }, /* latin small ligature oe */
+ { 0x0160, 0xA6 }, /* latin capital letter s with caron */
+ { 0x0161, 0xA8 }, /* latin small letter s with caron */
+ { 0x0178, 0xBE }, /* latin capital letter y with diaeresis */
+ { 0x017D, 0xB4 }, /* latin capital letter z with caron */
+ { 0x017E, 0xB8 }, /* latin small letter z with caron */
{ 0x20AC, 0xA4 }, /* euro sign */
};
+/* {{{ end of mappings *from* Unicode for ISO-8859-15 */
-static const unicode_mapping unimap_win1252[] = {
- { 0x152, 0x8C }, /* latin capital ligature oe */
- { 0x153, 0x9C }, /* latin small ligature oe */
- { 0x160, 0x8A }, /* latin capital letter s with caron */
- { 0x161, 0x9A }, /* latin small letter s with caron */
- { 0x178, 0x9F }, /* latin capital letter y with diaeresis */
- { 0x17D, 0x8E }, /* latin capital letter z with caron */
- { 0x17E, 0x9E }, /* latin small letter z with caron */
- { 0x192, 0x83 }, /* latin small letter f with hook */
- { 0x2C6, 0x88 }, /* modifier letter circumflex accent */
- { 0x2DC, 0x98 }, /* small tilde */
+/* {{{ Mappings *from* Unicode for Windows-1252 */
+static const uni_to_enc unimap_win1252[] = {
+ { 0x0152, 0x8C }, /* latin capital ligature oe */
+ { 0x0153, 0x9C }, /* latin small ligature oe */
+ { 0x0160, 0x8A }, /* latin capital letter s with caron */
+ { 0x0161, 0x9A }, /* latin small letter s with caron */
+ { 0x0178, 0x9F }, /* latin capital letter y with diaeresis */
+ { 0x017D, 0x8E }, /* latin capital letter z with caron */
+ { 0x017E, 0x9E }, /* latin small letter z with caron */
+ { 0x0192, 0x83 }, /* latin small letter f with hook */
+ { 0x02C6, 0x88 }, /* modifier letter circumflex accent */
+ { 0x02DC, 0x98 }, /* small tilde */
{ 0x2013, 0x96 }, /* en dash */
{ 0x2014, 0x97 }, /* em dash */
{ 0x2018, 0x91 }, /* left single quotation mark */
@@ -514,117 +557,119 @@ static const unicode_mapping unimap_win1252[] = {
{ 0x20AC, 0x80 }, /* euro sign */
{ 0x2122, 0x99 }, /* trade mark sign */
};
+/* {{{ end of mappings *from* Unicode for Windows-1252 */
-static const unicode_mapping unimap_win1251[] = {
- { 0xA0, 0xA0 }, /* no-break space */
- { 0xA4, 0xA4 }, /* currency sign */
- { 0xA6, 0xA6 }, /* broken bar */
- { 0xA7, 0xA7 }, /* section sign */
- { 0xA9, 0xA9 }, /* copyright sign */
- { 0xAB, 0xAB }, /* left-pointing double angle quotation mark */
- { 0xAC, 0xAC }, /* not sign */
- { 0xAD, 0xAD }, /* soft hyphen */
- { 0xAE, 0xAE }, /* registered sign */
- { 0xB0, 0xB0 }, /* degree sign */
- { 0xB1, 0xB1 }, /* plus-minus sign */
- { 0xB5, 0xB5 }, /* micro sign */
- { 0xB6, 0xB6 }, /* pilcrow sign */
- { 0xB7, 0xB7 }, /* middle dot */
- { 0xBB, 0xBB }, /* right-pointing double angle quotation mark */
- { 0x401, 0xA8 }, /* cyrillic capital letter io */
- { 0x402, 0x80 }, /* cyrillic capital letter dje */
- { 0x403, 0x81 }, /* cyrillic capital letter gje */
- { 0x404, 0xAA }, /* cyrillic capital letter ukrainian ie */
- { 0x405, 0xBD }, /* cyrillic capital letter dze */
- { 0x406, 0xB2 }, /* cyrillic capital letter byelorussian-ukrainian i */
- { 0x407, 0xAF }, /* cyrillic capital letter yi */
- { 0x408, 0xA3 }, /* cyrillic capital letter je */
- { 0x409, 0x8A }, /* cyrillic capital letter lje */
- { 0x40A, 0x8C }, /* cyrillic capital letter nje */
- { 0x40B, 0x8E }, /* cyrillic capital letter tshe */
- { 0x40C, 0x8D }, /* cyrillic capital letter kje */
- { 0x40E, 0xA1 }, /* cyrillic capital letter short u */
- { 0x40F, 0x8F }, /* cyrillic capital letter dzhe */
- { 0x410, 0xC0 }, /* cyrillic capital letter a */
- { 0x411, 0xC1 }, /* cyrillic capital letter be */
- { 0x412, 0xC2 }, /* cyrillic capital letter ve */
- { 0x413, 0xC3 }, /* cyrillic capital letter ghe */
- { 0x414, 0xC4 }, /* cyrillic capital letter de */
- { 0x415, 0xC5 }, /* cyrillic capital letter ie */
- { 0x416, 0xC6 }, /* cyrillic capital letter zhe */
- { 0x417, 0xC7 }, /* cyrillic capital letter ze */
- { 0x418, 0xC8 }, /* cyrillic capital letter i */
- { 0x419, 0xC9 }, /* cyrillic capital letter short i */
- { 0x41A, 0xCA }, /* cyrillic capital letter ka */
- { 0x41B, 0xCB }, /* cyrillic capital letter el */
- { 0x41C, 0xCC }, /* cyrillic capital letter em */
- { 0x41D, 0xCD }, /* cyrillic capital letter en */
- { 0x41E, 0xCE }, /* cyrillic capital letter o */
- { 0x41F, 0xCF }, /* cyrillic capital letter pe */
- { 0x420, 0xD0 }, /* cyrillic capital letter er */
- { 0x421, 0xD1 }, /* cyrillic capital letter es */
- { 0x422, 0xD2 }, /* cyrillic capital letter te */
- { 0x423, 0xD3 }, /* cyrillic capital letter u */
- { 0x424, 0xD4 }, /* cyrillic capital letter ef */
- { 0x425, 0xD5 }, /* cyrillic capital letter ha */
- { 0x426, 0xD6 }, /* cyrillic capital letter tse */
- { 0x427, 0xD7 }, /* cyrillic capital letter che */
- { 0x428, 0xD8 }, /* cyrillic capital letter sha */
- { 0x429, 0xD9 }, /* cyrillic capital letter shcha */
- { 0x42A, 0xDA }, /* cyrillic capital letter hard sign */
- { 0x42B, 0xDB }, /* cyrillic capital letter yeru */
- { 0x42C, 0xDC }, /* cyrillic capital letter soft sign */
- { 0x42D, 0xDD }, /* cyrillic capital letter e */
- { 0x42E, 0xDE }, /* cyrillic capital letter yu */
- { 0x42F, 0xDF }, /* cyrillic capital letter ya */
- { 0x430, 0xE0 }, /* cyrillic small letter a */
- { 0x431, 0xE1 }, /* cyrillic small letter be */
- { 0x432, 0xE2 }, /* cyrillic small letter ve */
- { 0x433, 0xE3 }, /* cyrillic small letter ghe */
- { 0x434, 0xE4 }, /* cyrillic small letter de */
- { 0x435, 0xE5 }, /* cyrillic small letter ie */
- { 0x436, 0xE6 }, /* cyrillic small letter zhe */
- { 0x437, 0xE7 }, /* cyrillic small letter ze */
- { 0x438, 0xE8 }, /* cyrillic small letter i */
- { 0x439, 0xE9 }, /* cyrillic small letter short i */
- { 0x43A, 0xEA }, /* cyrillic small letter ka */
- { 0x43B, 0xEB }, /* cyrillic small letter el */
- { 0x43C, 0xEC }, /* cyrillic small letter em */
- { 0x43D, 0xED }, /* cyrillic small letter en */
- { 0x43E, 0xEE }, /* cyrillic small letter o */
- { 0x43F, 0xEF }, /* cyrillic small letter pe */
- { 0x440, 0xF0 }, /* cyrillic small letter er */
- { 0x441, 0xF1 }, /* cyrillic small letter es */
- { 0x442, 0xF2 }, /* cyrillic small letter te */
- { 0x443, 0xF3 }, /* cyrillic small letter u */
- { 0x444, 0xF4 }, /* cyrillic small letter ef */
- { 0x445, 0xF5 }, /* cyrillic small letter ha */
- { 0x446, 0xF6 }, /* cyrillic small letter tse */
- { 0x447, 0xF7 }, /* cyrillic small letter che */
- { 0x448, 0xF8 }, /* cyrillic small letter sha */
- { 0x449, 0xF9 }, /* cyrillic small letter shcha */
- { 0x44A, 0xFA }, /* cyrillic small letter hard sign */
- { 0x44B, 0xFB }, /* cyrillic small letter yeru */
- { 0x44C, 0xFC }, /* cyrillic small letter soft sign */
- { 0x44D, 0xFD }, /* cyrillic small letter e */
- { 0x44E, 0xFE }, /* cyrillic small letter yu */
- { 0x44F, 0xFF }, /* cyrillic small letter ya */
- { 0x451, 0xB8 }, /* cyrillic small letter io */
- { 0x452, 0x90 }, /* cyrillic small letter dje */
- { 0x453, 0x83 }, /* cyrillic small letter gje */
- { 0x454, 0xBA }, /* cyrillic small letter ukrainian ie */
- { 0x455, 0xBE }, /* cyrillic small letter dze */
- { 0x456, 0xB3 }, /* cyrillic small letter byelorussian-ukrainian i */
- { 0x457, 0xBF }, /* cyrillic small letter yi */
- { 0x458, 0xBC }, /* cyrillic small letter je */
- { 0x459, 0x9A }, /* cyrillic small letter lje */
- { 0x45A, 0x9C }, /* cyrillic small letter nje */
- { 0x45B, 0x9E }, /* cyrillic small letter tshe */
- { 0x45C, 0x9D }, /* cyrillic small letter kje */
- { 0x45E, 0xA2 }, /* cyrillic small letter short u */
- { 0x45F, 0x9F }, /* cyrillic small letter dzhe */
- { 0x490, 0xA5 }, /* cyrillic capital letter ghe with upturn */
- { 0x491, 0xB4 }, /* cyrillic small letter ghe with upturn */
+/* {{{ Mappings *from* Unicode for Windows-1251 */
+static const uni_to_enc unimap_win1251[] = {
+ { 0x00A0, 0xA0 }, /* no-break space */
+ { 0x00A4, 0xA4 }, /* currency sign */
+ { 0x00A6, 0xA6 }, /* broken bar */
+ { 0x00A7, 0xA7 }, /* section sign */
+ { 0x00A9, 0xA9 }, /* copyright sign */
+ { 0x00AB, 0xAB }, /* left-pointing double angle quotation mark */
+ { 0x00AC, 0xAC }, /* not sign */
+ { 0x00AD, 0xAD }, /* soft hyphen */
+ { 0x00AE, 0xAE }, /* registered sign */
+ { 0x00B0, 0xB0 }, /* degree sign */
+ { 0x00B1, 0xB1 }, /* plus-minus sign */
+ { 0x00B5, 0xB5 }, /* micro sign */
+ { 0x00B6, 0xB6 }, /* pilcrow sign */
+ { 0x00B7, 0xB7 }, /* middle dot */
+ { 0x00BB, 0xBB }, /* right-pointing double angle quotation mark */
+ { 0x0401, 0xA8 }, /* cyrillic capital letter io */
+ { 0x0402, 0x80 }, /* cyrillic capital letter dje */
+ { 0x0403, 0x81 }, /* cyrillic capital letter gje */
+ { 0x0404, 0xAA }, /* cyrillic capital letter ukrainian ie */
+ { 0x0405, 0xBD }, /* cyrillic capital letter dze */
+ { 0x0406, 0xB2 }, /* cyrillic capital letter byelorussian-ukrainian i */
+ { 0x0407, 0xAF }, /* cyrillic capital letter yi */
+ { 0x0408, 0xA3 }, /* cyrillic capital letter je */
+ { 0x0409, 0x8A }, /* cyrillic capital letter lje */
+ { 0x040A, 0x8C }, /* cyrillic capital letter nje */
+ { 0x040B, 0x8E }, /* cyrillic capital letter tshe */
+ { 0x040C, 0x8D }, /* cyrillic capital letter kje */
+ { 0x040E, 0xA1 }, /* cyrillic capital letter short u */
+ { 0x040F, 0x8F }, /* cyrillic capital letter dzhe */
+ { 0x0410, 0xC0 }, /* cyrillic capital letter a */
+ { 0x0411, 0xC1 }, /* cyrillic capital letter be */
+ { 0x0412, 0xC2 }, /* cyrillic capital letter ve */
+ { 0x0413, 0xC3 }, /* cyrillic capital letter ghe */
+ { 0x0414, 0xC4 }, /* cyrillic capital letter de */
+ { 0x0415, 0xC5 }, /* cyrillic capital letter ie */
+ { 0x0416, 0xC6 }, /* cyrillic capital letter zhe */
+ { 0x0417, 0xC7 }, /* cyrillic capital letter ze */
+ { 0x0418, 0xC8 }, /* cyrillic capital letter i */
+ { 0x0419, 0xC9 }, /* cyrillic capital letter short i */
+ { 0x041A, 0xCA }, /* cyrillic capital letter ka */
+ { 0x041B, 0xCB }, /* cyrillic capital letter el */
+ { 0x041C, 0xCC }, /* cyrillic capital letter em */
+ { 0x041D, 0xCD }, /* cyrillic capital letter en */
+ { 0x041E, 0xCE }, /* cyrillic capital letter o */
+ { 0x041F, 0xCF }, /* cyrillic capital letter pe */
+ { 0x0420, 0xD0 }, /* cyrillic capital letter er */
+ { 0x0421, 0xD1 }, /* cyrillic capital letter es */
+ { 0x0422, 0xD2 }, /* cyrillic capital letter te */
+ { 0x0423, 0xD3 }, /* cyrillic capital letter u */
+ { 0x0424, 0xD4 }, /* cyrillic capital letter ef */
+ { 0x0425, 0xD5 }, /* cyrillic capital letter ha */
+ { 0x0426, 0xD6 }, /* cyrillic capital letter tse */
+ { 0x0427, 0xD7 }, /* cyrillic capital letter che */
+ { 0x0428, 0xD8 }, /* cyrillic capital letter sha */
+ { 0x0429, 0xD9 }, /* cyrillic capital letter shcha */
+ { 0x042A, 0xDA }, /* cyrillic capital letter hard sign */
+ { 0x042B, 0xDB }, /* cyrillic capital letter yeru */
+ { 0x042C, 0xDC }, /* cyrillic capital letter soft sign */
+ { 0x042D, 0xDD }, /* cyrillic capital letter e */
+ { 0x042E, 0xDE }, /* cyrillic capital letter yu */
+ { 0x042F, 0xDF }, /* cyrillic capital letter ya */
+ { 0x0430, 0xE0 }, /* cyrillic small letter a */
+ { 0x0431, 0xE1 }, /* cyrillic small letter be */
+ { 0x0432, 0xE2 }, /* cyrillic small letter ve */
+ { 0x0433, 0xE3 }, /* cyrillic small letter ghe */
+ { 0x0434, 0xE4 }, /* cyrillic small letter de */
+ { 0x0435, 0xE5 }, /* cyrillic small letter ie */
+ { 0x0436, 0xE6 }, /* cyrillic small letter zhe */
+ { 0x0437, 0xE7 }, /* cyrillic small letter ze */
+ { 0x0438, 0xE8 }, /* cyrillic small letter i */
+ { 0x0439, 0xE9 }, /* cyrillic small letter short i */
+ { 0x043A, 0xEA }, /* cyrillic small letter ka */
+ { 0x043B, 0xEB }, /* cyrillic small letter el */
+ { 0x043C, 0xEC }, /* cyrillic small letter em */
+ { 0x043D, 0xED }, /* cyrillic small letter en */
+ { 0x043E, 0xEE }, /* cyrillic small letter o */
+ { 0x043F, 0xEF }, /* cyrillic small letter pe */
+ { 0x0440, 0xF0 }, /* cyrillic small letter er */
+ { 0x0441, 0xF1 }, /* cyrillic small letter es */
+ { 0x0442, 0xF2 }, /* cyrillic small letter te */
+ { 0x0443, 0xF3 }, /* cyrillic small letter u */
+ { 0x0444, 0xF4 }, /* cyrillic small letter ef */
+ { 0x0445, 0xF5 }, /* cyrillic small letter ha */
+ { 0x0446, 0xF6 }, /* cyrillic small letter tse */
+ { 0x0447, 0xF7 }, /* cyrillic small letter che */
+ { 0x0448, 0xF8 }, /* cyrillic small letter sha */
+ { 0x0449, 0xF9 }, /* cyrillic small letter shcha */
+ { 0x044A, 0xFA }, /* cyrillic small letter hard sign */
+ { 0x044B, 0xFB }, /* cyrillic small letter yeru */
+ { 0x044C, 0xFC }, /* cyrillic small letter soft sign */
+ { 0x044D, 0xFD }, /* cyrillic small letter e */
+ { 0x044E, 0xFE }, /* cyrillic small letter yu */
+ { 0x044F, 0xFF }, /* cyrillic small letter ya */
+ { 0x0451, 0xB8 }, /* cyrillic small letter io */
+ { 0x0452, 0x90 }, /* cyrillic small letter dje */
+ { 0x0453, 0x83 }, /* cyrillic small letter gje */
+ { 0x0454, 0xBA }, /* cyrillic small letter ukrainian ie */
+ { 0x0455, 0xBE }, /* cyrillic small letter dze */
+ { 0x0456, 0xB3 }, /* cyrillic small letter byelorussian-ukrainian i */
+ { 0x0457, 0xBF }, /* cyrillic small letter yi */
+ { 0x0458, 0xBC }, /* cyrillic small letter je */
+ { 0x0459, 0x9A }, /* cyrillic small letter lje */
+ { 0x045A, 0x9C }, /* cyrillic small letter nje */
+ { 0x045B, 0x9E }, /* cyrillic small letter tshe */
+ { 0x045C, 0x9D }, /* cyrillic small letter kje */
+ { 0x045E, 0xA2 }, /* cyrillic small letter short u */
+ { 0x045F, 0x9F }, /* cyrillic small letter dzhe */
+ { 0x0490, 0xA5 }, /* cyrillic capital letter ghe with upturn */
+ { 0x0491, 0xB4 }, /* cyrillic small letter ghe with upturn */
{ 0x2013, 0x96 }, /* en dash */
{ 0x2014, 0x97 }, /* em dash */
{ 0x2018, 0x91 }, /* left single quotation mark */
@@ -644,80 +689,82 @@ static const unicode_mapping unimap_win1251[] = {
{ 0x2116, 0xB9 }, /* numero sign */
{ 0x2122, 0x99 }, /* trade mark sign */
};
+/* {{{ end of mappings *from* Unicode for Windows-1251 */
-static const unicode_mapping unimap_koi8r[] = {
- { 0xA0, 0x9A }, /* no-break space */
- { 0xA9, 0xBF }, /* copyright sign */
- { 0xB0, 0x9C }, /* degree sign */
- { 0xB2, 0x9D }, /* superscript two */
- { 0xB7, 0x9E }, /* middle dot */
- { 0xF7, 0x9F }, /* division sign */
- { 0x401, 0xB3 }, /* cyrillic capital letter io */
- { 0x410, 0xE1 }, /* cyrillic capital letter a */
- { 0x411, 0xE2 }, /* cyrillic capital letter be */
- { 0x412, 0xF7 }, /* cyrillic capital letter ve */
- { 0x413, 0xE7 }, /* cyrillic capital letter ghe */
- { 0x414, 0xE4 }, /* cyrillic capital letter de */
- { 0x415, 0xE5 }, /* cyrillic capital letter ie */
- { 0x416, 0xF6 }, /* cyrillic capital letter zhe */
- { 0x417, 0xFA }, /* cyrillic capital letter ze */
- { 0x418, 0xE9 }, /* cyrillic capital letter i */
- { 0x419, 0xEA }, /* cyrillic capital letter short i */
- { 0x41A, 0xEB }, /* cyrillic capital letter ka */
- { 0x41B, 0xEC }, /* cyrillic capital letter el */
- { 0x41C, 0xED }, /* cyrillic capital letter em */
- { 0x41D, 0xEE }, /* cyrillic capital letter en */
- { 0x41E, 0xEF }, /* cyrillic capital letter o */
- { 0x41F, 0xF0 }, /* cyrillic capital letter pe */
- { 0x420, 0xF2 }, /* cyrillic capital letter er */
- { 0x421, 0xF3 }, /* cyrillic capital letter es */
- { 0x422, 0xF4 }, /* cyrillic capital letter te */
- { 0x423, 0xF5 }, /* cyrillic capital letter u */
- { 0x424, 0xE6 }, /* cyrillic capital letter ef */
- { 0x425, 0xE8 }, /* cyrillic capital letter ha */
- { 0x426, 0xE3 }, /* cyrillic capital letter tse */
- { 0x427, 0xFE }, /* cyrillic capital letter che */
- { 0x428, 0xFB }, /* cyrillic capital letter sha */
- { 0x429, 0xFD }, /* cyrillic capital letter shcha */
- { 0x42A, 0xFF }, /* cyrillic capital letter hard sign */
- { 0x42B, 0xF9 }, /* cyrillic capital letter yeru */
- { 0x42C, 0xF8 }, /* cyrillic capital letter soft sign */
- { 0x42D, 0xFC }, /* cyrillic capital letter e */
- { 0x42E, 0xE0 }, /* cyrillic capital letter yu */
- { 0x42F, 0xF1 }, /* cyrillic capital letter ya */
- { 0x430, 0xC1 }, /* cyrillic small letter a */
- { 0x431, 0xC2 }, /* cyrillic small letter be */
- { 0x432, 0xD7 }, /* cyrillic small letter ve */
- { 0x433, 0xC7 }, /* cyrillic small letter ghe */
- { 0x434, 0xC4 }, /* cyrillic small letter de */
- { 0x435, 0xC5 }, /* cyrillic small letter ie */
- { 0x436, 0xD6 }, /* cyrillic small letter zhe */
- { 0x437, 0xDA }, /* cyrillic small letter ze */
- { 0x438, 0xC9 }, /* cyrillic small letter i */
- { 0x439, 0xCA }, /* cyrillic small letter short i */
- { 0x43A, 0xCB }, /* cyrillic small letter ka */
- { 0x43B, 0xCC }, /* cyrillic small letter el */
- { 0x43C, 0xCD }, /* cyrillic small letter em */
- { 0x43D, 0xCE }, /* cyrillic small letter en */
- { 0x43E, 0xCF }, /* cyrillic small letter o */
- { 0x43F, 0xD0 }, /* cyrillic small letter pe */
- { 0x440, 0xD2 }, /* cyrillic small letter er */
- { 0x441, 0xD3 }, /* cyrillic small letter es */
- { 0x442, 0xD4 }, /* cyrillic small letter te */
- { 0x443, 0xD5 }, /* cyrillic small letter u */
- { 0x444, 0xC6 }, /* cyrillic small letter ef */
- { 0x445, 0xC8 }, /* cyrillic small letter ha */
- { 0x446, 0xC3 }, /* cyrillic small letter tse */
- { 0x447, 0xDE }, /* cyrillic small letter che */
- { 0x448, 0xDB }, /* cyrillic small letter sha */
- { 0x449, 0xDD }, /* cyrillic small letter shcha */
- { 0x44A, 0xDF }, /* cyrillic small letter hard sign */
- { 0x44B, 0xD9 }, /* cyrillic small letter yeru */
- { 0x44C, 0xD8 }, /* cyrillic small letter soft sign */
- { 0x44D, 0xDC }, /* cyrillic small letter e */
- { 0x44E, 0xC0 }, /* cyrillic small letter yu */
- { 0x44F, 0xD1 }, /* cyrillic small letter ya */
- { 0x451, 0xA3 }, /* cyrillic small letter io */
+/* {{{ Mappings *from* Unicode for KOI8-R */
+static const uni_to_enc unimap_koi8r[] = {
+ { 0x00A0, 0x9A }, /* no-break space */
+ { 0x00A9, 0xBF }, /* copyright sign */
+ { 0x00B0, 0x9C }, /* degree sign */
+ { 0x00B2, 0x9D }, /* superscript two */
+ { 0x00B7, 0x9E }, /* middle dot */
+ { 0x00F7, 0x9F }, /* division sign */
+ { 0x0401, 0xB3 }, /* cyrillic capital letter io */
+ { 0x0410, 0xE1 }, /* cyrillic capital letter a */
+ { 0x0411, 0xE2 }, /* cyrillic capital letter be */
+ { 0x0412, 0xF7 }, /* cyrillic capital letter ve */
+ { 0x0413, 0xE7 }, /* cyrillic capital letter ghe */
+ { 0x0414, 0xE4 }, /* cyrillic capital letter de */
+ { 0x0415, 0xE5 }, /* cyrillic capital letter ie */
+ { 0x0416, 0xF6 }, /* cyrillic capital letter zhe */
+ { 0x0417, 0xFA }, /* cyrillic capital letter ze */
+ { 0x0418, 0xE9 }, /* cyrillic capital letter i */
+ { 0x0419, 0xEA }, /* cyrillic capital letter short i */
+ { 0x041A, 0xEB }, /* cyrillic capital letter ka */
+ { 0x041B, 0xEC }, /* cyrillic capital letter el */
+ { 0x041C, 0xED }, /* cyrillic capital letter em */
+ { 0x041D, 0xEE }, /* cyrillic capital letter en */
+ { 0x041E, 0xEF }, /* cyrillic capital letter o */
+ { 0x041F, 0xF0 }, /* cyrillic capital letter pe */
+ { 0x0420, 0xF2 }, /* cyrillic capital letter er */
+ { 0x0421, 0xF3 }, /* cyrillic capital letter es */
+ { 0x0422, 0xF4 }, /* cyrillic capital letter te */
+ { 0x0423, 0xF5 }, /* cyrillic capital letter u */
+ { 0x0424, 0xE6 }, /* cyrillic capital letter ef */
+ { 0x0425, 0xE8 }, /* cyrillic capital letter ha */
+ { 0x0426, 0xE3 }, /* cyrillic capital letter tse */
+ { 0x0427, 0xFE }, /* cyrillic capital letter che */
+ { 0x0428, 0xFB }, /* cyrillic capital letter sha */
+ { 0x0429, 0xFD }, /* cyrillic capital letter shcha */
+ { 0x042A, 0xFF }, /* cyrillic capital letter hard sign */
+ { 0x042B, 0xF9 }, /* cyrillic capital letter yeru */
+ { 0x042C, 0xF8 }, /* cyrillic capital letter soft sign */
+ { 0x042D, 0xFC }, /* cyrillic capital letter e */
+ { 0x042E, 0xE0 }, /* cyrillic capital letter yu */
+ { 0x042F, 0xF1 }, /* cyrillic capital letter ya */
+ { 0x0430, 0xC1 }, /* cyrillic small letter a */
+ { 0x0431, 0xC2 }, /* cyrillic small letter be */
+ { 0x0432, 0xD7 }, /* cyrillic small letter ve */
+ { 0x0433, 0xC7 }, /* cyrillic small letter ghe */
+ { 0x0434, 0xC4 }, /* cyrillic small letter de */
+ { 0x0435, 0xC5 }, /* cyrillic small letter ie */
+ { 0x0436, 0xD6 }, /* cyrillic small letter zhe */
+ { 0x0437, 0xDA }, /* cyrillic small letter ze */
+ { 0x0438, 0xC9 }, /* cyrillic small letter i */
+ { 0x0439, 0xCA }, /* cyrillic small letter short i */
+ { 0x043A, 0xCB }, /* cyrillic small letter ka */
+ { 0x043B, 0xCC }, /* cyrillic small letter el */
+ { 0x043C, 0xCD }, /* cyrillic small letter em */
+ { 0x043D, 0xCE }, /* cyrillic small letter en */
+ { 0x043E, 0xCF }, /* cyrillic small letter o */
+ { 0x043F, 0xD0 }, /* cyrillic small letter pe */
+ { 0x0440, 0xD2 }, /* cyrillic small letter er */
+ { 0x0441, 0xD3 }, /* cyrillic small letter es */
+ { 0x0442, 0xD4 }, /* cyrillic small letter te */
+ { 0x0443, 0xD5 }, /* cyrillic small letter u */
+ { 0x0444, 0xC6 }, /* cyrillic small letter ef */
+ { 0x0445, 0xC8 }, /* cyrillic small letter ha */
+ { 0x0446, 0xC3 }, /* cyrillic small letter tse */
+ { 0x0447, 0xDE }, /* cyrillic small letter che */
+ { 0x0448, 0xDB }, /* cyrillic small letter sha */
+ { 0x0449, 0xDD }, /* cyrillic small letter shcha */
+ { 0x044A, 0xDF }, /* cyrillic small letter hard sign */
+ { 0x044B, 0xD9 }, /* cyrillic small letter yeru */
+ { 0x044C, 0xD8 }, /* cyrillic small letter soft sign */
+ { 0x044D, 0xDC }, /* cyrillic small letter e */
+ { 0x044E, 0xC0 }, /* cyrillic small letter yu */
+ { 0x044F, 0xD1 }, /* cyrillic small letter ya */
+ { 0x0451, 0xA3 }, /* cyrillic small letter io */
{ 0x2219, 0x95 }, /* bullet operator */
{ 0x221A, 0x96 }, /* square root */
{ 0x2248, 0x97 }, /* almost equal to */
@@ -775,83 +822,86 @@ static const unicode_mapping unimap_koi8r[] = {
{ 0x2593, 0x92 }, /* dark shade */
{ 0x25A0, 0x94 }, /* black square */
};
+/* {{{ end of mappings *from* Unicode for KOI8-R */
-static const unicode_mapping unimap_cp866[] = {
- { 0xA0, 0xFF }, /* no-break space */
- { 0xA4, 0xFD }, /* currency sign */
- { 0xB0, 0xF8 }, /* degree sign */
- { 0xB7, 0xFA }, /* middle dot */
- { 0x401, 0xF0 }, /* cyrillic capital letter io */
- { 0x404, 0xF2 }, /* cyrillic capital letter ukrainian ie */
- { 0x407, 0xF4 }, /* cyrillic capital letter yi */
- { 0x40E, 0xF6 }, /* cyrillic capital letter short u */
- { 0x410, 0x80 }, /* cyrillic capital letter a */
- { 0x411, 0x81 }, /* cyrillic capital letter be */
- { 0x412, 0x82 }, /* cyrillic capital letter ve */
- { 0x413, 0x83 }, /* cyrillic capital letter ghe */
- { 0x414, 0x84 }, /* cyrillic capital letter de */
- { 0x415, 0x85 }, /* cyrillic capital letter ie */
- { 0x416, 0x86 }, /* cyrillic capital letter zhe */
- { 0x417, 0x87 }, /* cyrillic capital letter ze */
- { 0x418, 0x88 }, /* cyrillic capital letter i */
- { 0x419, 0x89 }, /* cyrillic capital letter short i */
- { 0x41A, 0x8A }, /* cyrillic capital letter ka */
- { 0x41B, 0x8B }, /* cyrillic capital letter el */
- { 0x41C, 0x8C }, /* cyrillic capital letter em */
- { 0x41D, 0x8D }, /* cyrillic capital letter en */
- { 0x41E, 0x8E }, /* cyrillic capital letter o */
- { 0x41F, 0x8F }, /* cyrillic capital letter pe */
- { 0x420, 0x90 }, /* cyrillic capital letter er */
- { 0x421, 0x91 }, /* cyrillic capital letter es */
- { 0x422, 0x92 }, /* cyrillic capital letter te */
- { 0x423, 0x93 }, /* cyrillic capital letter u */
- { 0x424, 0x94 }, /* cyrillic capital letter ef */
- { 0x425, 0x95 }, /* cyrillic capital letter ha */
- { 0x426, 0x96 }, /* cyrillic capital letter tse */
- { 0x427, 0x97 }, /* cyrillic capital letter che */
- { 0x428, 0x98 }, /* cyrillic capital letter sha */
- { 0x429, 0x99 }, /* cyrillic capital letter shcha */
- { 0x42A, 0x9A }, /* cyrillic capital letter hard sign */
- { 0x42B, 0x9B }, /* cyrillic capital letter yeru */
- { 0x42C, 0x9C }, /* cyrillic capital letter soft sign */
- { 0x42D, 0x9D }, /* cyrillic capital letter e */
- { 0x42E, 0x9F }, /* cyrillic capital letter ya */
- { 0x430, 0xA0 }, /* cyrillic small letter a */
- { 0x431, 0xA1 }, /* cyrillic small letter be */
- { 0x432, 0xA2 }, /* cyrillic small letter ve */
- { 0x433, 0xA3 }, /* cyrillic small letter ghe */
- { 0x434, 0xA4 }, /* cyrillic small letter de */
- { 0x435, 0xA5 }, /* cyrillic small letter ie */
- { 0x436, 0xA6 }, /* cyrillic small letter zhe */
- { 0x437, 0xA7 }, /* cyrillic small letter ze */
- { 0x438, 0xA8 }, /* cyrillic small letter i */
- { 0x439, 0xA9 }, /* cyrillic small letter short i */
- { 0x43A, 0xAA }, /* cyrillic small letter ka */
- { 0x43B, 0xAB }, /* cyrillic small letter el */
- { 0x43C, 0xAC }, /* cyrillic small letter em */
- { 0x43D, 0xAD }, /* cyrillic small letter en */
- { 0x43E, 0xAE }, /* cyrillic small letter o */
- { 0x43F, 0xAF }, /* cyrillic small letter pe */
- { 0x440, 0xE0 }, /* cyrillic small letter er */
- { 0x441, 0xE1 }, /* cyrillic small letter es */
- { 0x442, 0xE2 }, /* cyrillic small letter te */
- { 0x443, 0xE3 }, /* cyrillic small letter u */
- { 0x444, 0xE4 }, /* cyrillic small letter ef */
- { 0x445, 0xE5 }, /* cyrillic small letter ha */
- { 0x446, 0xE6 }, /* cyrillic small letter tse */
- { 0x447, 0xE7 }, /* cyrillic small letter che */
- { 0x448, 0xE8 }, /* cyrillic small letter sha */
- { 0x449, 0xE9 }, /* cyrillic small letter shcha */
- { 0x44A, 0xEA }, /* cyrillic small letter hard sign */
- { 0x44B, 0xEB }, /* cyrillic small letter yeru */
- { 0x44C, 0xEC }, /* cyrillic small letter soft sign */
- { 0x44D, 0xED }, /* cyrillic small letter e */
- { 0x44E, 0xEE }, /* cyrillic small letter yu */
- { 0x44F, 0xEF }, /* cyrillic small letter ya */
- { 0x451, 0xF1 }, /* cyrillic small letter io */
- { 0x454, 0xF3 }, /* cyrillic small letter ukrainian ie */
- { 0x457, 0xF5 }, /* cyrillic small letter yi */
- { 0x45E, 0xF7 }, /* cyrillic small letter short u */
+/* {{{ Mappings *from* Unicode for CP-866 */
+static const uni_to_enc unimap_cp866[] = {
+ { 0x00A0, 0xFF }, /* no-break space */
+ { 0x00A4, 0xFD }, /* currency sign */
+ { 0x00B0, 0xF8 }, /* degree sign */
+ { 0x00B7, 0xFA }, /* middle dot */
+ { 0x0401, 0xF0 }, /* cyrillic capital letter io */
+ { 0x0404, 0xF2 }, /* cyrillic capital letter ukrainian ie */
+ { 0x0407, 0xF4 }, /* cyrillic capital letter yi */
+ { 0x040E, 0xF6 }, /* cyrillic capital letter short u */
+ { 0x0410, 0x80 }, /* cyrillic capital letter a */
+ { 0x0411, 0x81 }, /* cyrillic capital letter be */
+ { 0x0412, 0x82 }, /* cyrillic capital letter ve */
+ { 0x0413, 0x83 }, /* cyrillic capital letter ghe */
+ { 0x0414, 0x84 }, /* cyrillic capital letter de */
+ { 0x0415, 0x85 }, /* cyrillic capital letter ie */
+ { 0x0416, 0x86 }, /* cyrillic capital letter zhe */
+ { 0x0417, 0x87 }, /* cyrillic capital letter ze */
+ { 0x0418, 0x88 }, /* cyrillic capital letter i */
+ { 0x0419, 0x89 }, /* cyrillic capital letter short i */
+ { 0x041A, 0x8A }, /* cyrillic capital letter ka */
+ { 0x041B, 0x8B }, /* cyrillic capital letter el */
+ { 0x041C, 0x8C }, /* cyrillic capital letter em */
+ { 0x041D, 0x8D }, /* cyrillic capital letter en */
+ { 0x041E, 0x8E }, /* cyrillic capital letter o */
+ { 0x041F, 0x8F }, /* cyrillic capital letter pe */
+ { 0x0420, 0x90 }, /* cyrillic capital letter er */
+ { 0x0421, 0x91 }, /* cyrillic capital letter es */
+ { 0x0422, 0x92 }, /* cyrillic capital letter te */
+ { 0x0423, 0x93 }, /* cyrillic capital letter u */
+ { 0x0424, 0x94 }, /* cyrillic capital letter ef */
+ { 0x0425, 0x95 }, /* cyrillic capital letter ha */
+ { 0x0426, 0x96 }, /* cyrillic capital letter tse */
+ { 0x0427, 0x97 }, /* cyrillic capital letter che */
+ { 0x0428, 0x98 }, /* cyrillic capital letter sha */
+ { 0x0429, 0x99 }, /* cyrillic capital letter shcha */
+ { 0x042A, 0x9A }, /* cyrillic capital letter hard sign */
+ { 0x042B, 0x9B }, /* cyrillic capital letter yeru */
+ { 0x042C, 0x9C }, /* cyrillic capital letter soft sign */
+ { 0x042D, 0x9D }, /* cyrillic capital letter e */
+ { 0x042E, 0x9E }, /* cyrillic capital letter yu */
+ { 0x042F, 0x9F }, /* cyrillic capital letter ya */
+ { 0x0430, 0xA0 }, /* cyrillic small letter a */
+ { 0x0431, 0xA1 }, /* cyrillic small letter be */
+ { 0x0432, 0xA2 }, /* cyrillic small letter ve */
+ { 0x0433, 0xA3 }, /* cyrillic small letter ghe */
+ { 0x0434, 0xA4 }, /* cyrillic small letter de */
+ { 0x0435, 0xA5 }, /* cyrillic small letter ie */
+ { 0x0436, 0xA6 }, /* cyrillic small letter zhe */
+ { 0x0437, 0xA7 }, /* cyrillic small letter ze */
+ { 0x0438, 0xA8 }, /* cyrillic small letter i */
+ { 0x0439, 0xA9 }, /* cyrillic small letter short i */
+ { 0x043A, 0xAA }, /* cyrillic small letter ka */
+ { 0x043B, 0xAB }, /* cyrillic small letter el */
+ { 0x043C, 0xAC }, /* cyrillic small letter em */
+ { 0x043D, 0xAD }, /* cyrillic small letter en */
+ { 0x043E, 0xAE }, /* cyrillic small letter o */
+ { 0x043F, 0xAF }, /* cyrillic small letter pe */
+ { 0x0440, 0xE0 }, /* cyrillic small letter er */
+ { 0x0441, 0xE1 }, /* cyrillic small letter es */
+ { 0x0442, 0xE2 }, /* cyrillic small letter te */
+ { 0x0443, 0xE3 }, /* cyrillic small letter u */
+ { 0x0444, 0xE4 }, /* cyrillic small letter ef */
+ { 0x0445, 0xE5 }, /* cyrillic small letter ha */
+ { 0x0446, 0xE6 }, /* cyrillic small letter tse */
+ { 0x0447, 0xE7 }, /* cyrillic small letter che */
+ { 0x0448, 0xE8 }, /* cyrillic small letter sha */
+ { 0x0449, 0xE9 }, /* cyrillic small letter shcha */
+ { 0x044A, 0xEA }, /* cyrillic small letter hard sign */
+ { 0x044B, 0xEB }, /* cyrillic small letter yeru */
+ { 0x044C, 0xEC }, /* cyrillic small letter soft sign */
+ { 0x044D, 0xED }, /* cyrillic small letter e */
+ { 0x044E, 0xEE }, /* cyrillic small letter yu */
+ { 0x044F, 0xEF }, /* cyrillic small letter ya */
+ { 0x0451, 0xF1 }, /* cyrillic small letter io */
+ { 0x0454, 0xF3 }, /* cyrillic small letter ukrainian ie */
+ { 0x0457, 0xF5 }, /* cyrillic small letter yi */
+ { 0x045E, 0xF7 }, /* cyrillic small letter short u */
{ 0x2116, 0xFC }, /* numero sign */
{ 0x2219, 0xF9 }, /* bullet operator */
{ 0x221A, 0xFB }, /* square root */
@@ -905,103 +955,105 @@ static const unicode_mapping unimap_cp866[] = {
{ 0x2593, 0xB2 }, /* dark shade */
{ 0x25A0, 0xFE }, /* black square */
};
+/* {{{ end of mappings *from* Unicode for CP-866 */
-static const unicode_mapping unimap_macroman[] = {
- { 0xA0, 0xCA }, /* no-break space */
- { 0xA1, 0xC1 }, /* inverted exclamation mark */
- { 0xA2, 0xA2 }, /* cent sign */
- { 0xA3, 0xA3 }, /* pound sign */
- { 0xA5, 0xB4 }, /* yen sign */
- { 0xA7, 0xA4 }, /* section sign */
- { 0xA8, 0xAC }, /* diaeresis */
- { 0xA9, 0xA9 }, /* copyright sign */
- { 0xAA, 0xBB }, /* feminine ordinal indicator */
- { 0xAB, 0xC7 }, /* left-pointing double angle quotation mark */
- { 0xAC, 0xC2 }, /* not sign */
- { 0xAE, 0xA8 }, /* registered sign */
- { 0xAF, 0xF8 }, /* macron */
- { 0xB0, 0xA1 }, /* degree sign */
- { 0xB1, 0xB1 }, /* plus-minus sign */
- { 0xB4, 0xAB }, /* acute accent */
- { 0xB5, 0xB5 }, /* micro sign */
- { 0xB6, 0xA6 }, /* pilcrow sign */
- { 0xB7, 0xE1 }, /* middle dot */
- { 0xB8, 0xFC }, /* cedilla */
- { 0xBA, 0xBC }, /* masculine ordinal indicator */
- { 0xBB, 0xC8 }, /* right-pointing double angle quotation mark */
- { 0xBF, 0xC0 }, /* inverted question mark */
- { 0xC0, 0xCB }, /* latin capital letter a with grave */
- { 0xC1, 0xE7 }, /* latin capital letter a with acute */
- { 0xC2, 0xE5 }, /* latin capital letter a with circumflex */
- { 0xC3, 0xCC }, /* latin capital letter a with tilde */
- { 0xC4, 0x80 }, /* latin capital letter a with diaeresis */
- { 0xC5, 0x81 }, /* latin capital letter a with ring above */
- { 0xC6, 0xAE }, /* latin capital letter ae */
- { 0xC7, 0x82 }, /* latin capital letter c with cedilla */
- { 0xC8, 0xE9 }, /* latin capital letter e with grave */
- { 0xC9, 0x83 }, /* latin capital letter e with acute */
- { 0xCA, 0xE6 }, /* latin capital letter e with circumflex */
- { 0xCB, 0xE8 }, /* latin capital letter e with diaeresis */
- { 0xCC, 0xED }, /* latin capital letter i with grave */
- { 0xCD, 0xEA }, /* latin capital letter i with acute */
- { 0xCE, 0xEB }, /* latin capital letter i with circumflex */
- { 0xCF, 0xEC }, /* latin capital letter i with diaeresis */
- { 0xD1, 0x84 }, /* latin capital letter n with tilde */
- { 0xD2, 0xF1 }, /* latin capital letter o with grave */
- { 0xD3, 0xEE }, /* latin capital letter o with acute */
- { 0xD4, 0xEF }, /* latin capital letter o with circumflex */
- { 0xD5, 0xCD }, /* latin capital letter o with tilde */
- { 0xD6, 0x85 }, /* latin capital letter o with diaeresis */
- { 0xD8, 0xAF }, /* latin capital letter o with stroke */
- { 0xD9, 0xF4 }, /* latin capital letter u with grave */
- { 0xDA, 0xF2 }, /* latin capital letter u with acute */
- { 0xDB, 0xF3 }, /* latin capital letter u with circumflex */
- { 0xDC, 0x86 }, /* latin capital letter u with diaeresis */
- { 0xDF, 0xA7 }, /* latin small letter sharp s */
- { 0xE0, 0x88 }, /* latin small letter a with grave */
- { 0xE1, 0x87 }, /* latin small letter a with acute */
- { 0xE2, 0x89 }, /* latin small letter a with circumflex */
- { 0xE3, 0x8B }, /* latin small letter a with tilde */
- { 0xE4, 0x8A }, /* latin small letter a with diaeresis */
- { 0xE5, 0x8C }, /* latin small letter a with ring above */
- { 0xE6, 0xBE }, /* latin small letter ae */
- { 0xE7, 0x8D }, /* latin small letter c with cedilla */
- { 0xE8, 0x8F }, /* latin small letter e with grave */
- { 0xE9, 0x8E }, /* latin small letter e with acute */
- { 0xEA, 0x90 }, /* latin small letter e with circumflex */
- { 0xEB, 0x91 }, /* latin small letter e with diaeresis */
- { 0xEC, 0x93 }, /* latin small letter i with grave */
- { 0xED, 0x92 }, /* latin small letter i with acute */
- { 0xEE, 0x94 }, /* latin small letter i with circumflex */
- { 0xEF, 0x95 }, /* latin small letter i with diaeresis */
- { 0xF1, 0x96 }, /* latin small letter n with tilde */
- { 0xF2, 0x98 }, /* latin small letter o with grave */
- { 0xF3, 0x97 }, /* latin small letter o with acute */
- { 0xF4, 0x99 }, /* latin small letter o with circumflex */
- { 0xF5, 0x9B }, /* latin small letter o with tilde */
- { 0xF6, 0x9A }, /* latin small letter o with diaeresis */
- { 0xF7, 0xD6 }, /* division sign */
- { 0xF8, 0xBF }, /* latin small letter o with stroke */
- { 0xF9, 0x9D }, /* latin small letter u with grave */
- { 0xFA, 0x9C }, /* latin small letter u with acute */
- { 0xFB, 0x9E }, /* latin small letter u with circumflex */
- { 0xFC, 0x9F }, /* latin small letter u with diaeresis */
- { 0xFF, 0xD8 }, /* latin small letter y with diaeresis */
- { 0x131, 0xF5 }, /* latin small letter dotless i */
- { 0x152, 0xCE }, /* latin capital ligature oe */
- { 0x153, 0xCF }, /* latin small ligature oe */
- { 0x178, 0xD9 }, /* latin capital letter y with diaeresis */
- { 0x192, 0xC4 }, /* latin small letter f with hook */
- { 0x2C6, 0xF6 }, /* modifier letter circumflex accent */
- { 0x2C7, 0xFF }, /* caron */
- { 0x2D8, 0xF9 }, /* breve */
- { 0x2D9, 0xFA }, /* dot above */
- { 0x2DA, 0xFB }, /* ring above */
- { 0x2DB, 0xFE }, /* ogonek */
- { 0x2DC, 0xF7 }, /* small tilde */
- { 0x2DD, 0xFD }, /* double acute accent */
- { 0x3A9, 0xBD }, /* greek capital letter omega */
- { 0x3C0, 0xB9 }, /* greek small letter pi */
+/* {{{ Mappings *from* Unicode for MacRoman */
+static const uni_to_enc unimap_macroman[] = {
+ { 0x00A0, 0xCA }, /* no-break space */
+ { 0x00A1, 0xC1 }, /* inverted exclamation mark */
+ { 0x00A2, 0xA2 }, /* cent sign */
+ { 0x00A3, 0xA3 }, /* pound sign */
+ { 0x00A5, 0xB4 }, /* yen sign */
+ { 0x00A7, 0xA4 }, /* section sign */
+ { 0x00A8, 0xAC }, /* diaeresis */
+ { 0x00A9, 0xA9 }, /* copyright sign */
+ { 0x00AA, 0xBB }, /* feminine ordinal indicator */
+ { 0x00AB, 0xC7 }, /* left-pointing double angle quotation mark */
+ { 0x00AC, 0xC2 }, /* not sign */
+ { 0x00AE, 0xA8 }, /* registered sign */
+ { 0x00AF, 0xF8 }, /* macron */
+ { 0x00B0, 0xA1 }, /* degree sign */
+ { 0x00B1, 0xB1 }, /* plus-minus sign */
+ { 0x00B4, 0xAB }, /* acute accent */
+ { 0x00B5, 0xB5 }, /* micro sign */
+ { 0x00B6, 0xA6 }, /* pilcrow sign */
+ { 0x00B7, 0xE1 }, /* middle dot */
+ { 0x00B8, 0xFC }, /* cedilla */
+ { 0x00BA, 0xBC }, /* masculine ordinal indicator */
+ { 0x00BB, 0xC8 }, /* right-pointing double angle quotation mark */
+ { 0x00BF, 0xC0 }, /* inverted question mark */
+ { 0x00C0, 0xCB }, /* latin capital letter a with grave */
+ { 0x00C1, 0xE7 }, /* latin capital letter a with acute */
+ { 0x00C2, 0xE5 }, /* latin capital letter a with circumflex */
+ { 0x00C3, 0xCC }, /* latin capital letter a with tilde */
+ { 0x00C4, 0x80 }, /* latin capital letter a with diaeresis */
+ { 0x00C5, 0x81 }, /* latin capital letter a with ring above */
+ { 0x00C6, 0xAE }, /* latin capital letter ae */
+ { 0x00C7, 0x82 }, /* latin capital letter c with cedilla */
+ { 0x00C8, 0xE9 }, /* latin capital letter e with grave */
+ { 0x00C9, 0x83 }, /* latin capital letter e with acute */
+ { 0x00CA, 0xE6 }, /* latin capital letter e with circumflex */
+ { 0x00CB, 0xE8 }, /* latin capital letter e with diaeresis */
+ { 0x00CC, 0xED }, /* latin capital letter i with grave */
+ { 0x00CD, 0xEA }, /* latin capital letter i with acute */
+ { 0x00CE, 0xEB }, /* latin capital letter i with circumflex */
+ { 0x00CF, 0xEC }, /* latin capital letter i with diaeresis */
+ { 0x00D1, 0x84 }, /* latin capital letter n with tilde */
+ { 0x00D2, 0xF1 }, /* latin capital letter o with grave */
+ { 0x00D3, 0xEE }, /* latin capital letter o with acute */
+ { 0x00D4, 0xEF }, /* latin capital letter o with circumflex */
+ { 0x00D5, 0xCD }, /* latin capital letter o with tilde */
+ { 0x00D6, 0x85 }, /* latin capital letter o with diaeresis */
+ { 0x00D8, 0xAF }, /* latin capital letter o with stroke */
+ { 0x00D9, 0xF4 }, /* latin capital letter u with grave */
+ { 0x00DA, 0xF2 }, /* latin capital letter u with acute */
+ { 0x00DB, 0xF3 }, /* latin capital letter u with circumflex */
+ { 0x00DC, 0x86 }, /* latin capital letter u with diaeresis */
+ { 0x00DF, 0xA7 }, /* latin small letter sharp s */
+ { 0x00E0, 0x88 }, /* latin small letter a with grave */
+ { 0x00E1, 0x87 }, /* latin small letter a with acute */
+ { 0x00E2, 0x89 }, /* latin small letter a with circumflex */
+ { 0x00E3, 0x8B }, /* latin small letter a with tilde */
+ { 0x00E4, 0x8A }, /* latin small letter a with diaeresis */
+ { 0x00E5, 0x8C }, /* latin small letter a with ring above */
+ { 0x00E6, 0xBE }, /* latin small letter ae */
+ { 0x00E7, 0x8D }, /* latin small letter c with cedilla */
+ { 0x00E8, 0x8F }, /* latin small letter e with grave */
+ { 0x00E9, 0x8E }, /* latin small letter e with acute */
+ { 0x00EA, 0x90 }, /* latin small letter e with circumflex */
+ { 0x00EB, 0x91 }, /* latin small letter e with diaeresis */
+ { 0x00EC, 0x93 }, /* latin small letter i with grave */
+ { 0x00ED, 0x92 }, /* latin small letter i with acute */
+ { 0x00EE, 0x94 }, /* latin small letter i with circumflex */
+ { 0x00EF, 0x95 }, /* latin small letter i with diaeresis */
+ { 0x00F1, 0x96 }, /* latin small letter n with tilde */
+ { 0x00F2, 0x98 }, /* latin small letter o with grave */
+ { 0x00F3, 0x97 }, /* latin small letter o with acute */
+ { 0x00F4, 0x99 }, /* latin small letter o with circumflex */
+ { 0x00F5, 0x9B }, /* latin small letter o with tilde */
+ { 0x00F6, 0x9A }, /* latin small letter o with diaeresis */
+ { 0x00F7, 0xD6 }, /* division sign */
+ { 0x00F8, 0xBF }, /* latin small letter o with stroke */
+ { 0x00F9, 0x9D }, /* latin small letter u with grave */
+ { 0x00FA, 0x9C }, /* latin small letter u with acute */
+ { 0x00FB, 0x9E }, /* latin small letter u with circumflex */
+ { 0x00FC, 0x9F }, /* latin small letter u with diaeresis */
+ { 0x00FF, 0xD8 }, /* latin small letter y with diaeresis */
+ { 0x0131, 0xF5 }, /* latin small letter dotless i */
+ { 0x0152, 0xCE }, /* latin capital ligature oe */
+ { 0x0153, 0xCF }, /* latin small ligature oe */
+ { 0x0178, 0xD9 }, /* latin capital letter y with diaeresis */
+ { 0x0192, 0xC4 }, /* latin small letter f with hook */
+ { 0x02C6, 0xF6 }, /* modifier letter circumflex accent */
+ { 0x02C7, 0xFF }, /* caron */
+ { 0x02D8, 0xF9 }, /* breve */
+ { 0x02D9, 0xFA }, /* dot above */
+ { 0x02DA, 0xFB }, /* ring above */
+ { 0x02DB, 0xFE }, /* ogonek */
+ { 0x02DC, 0xF7 }, /* small tilde */
+ { 0x02DD, 0xFD }, /* double acute accent */
+ { 0x03A9, 0xBD }, /* greek capital letter omega */
+ { 0x03C0, 0xB9 }, /* greek small letter pi */
{ 0x2013, 0xD0 }, /* en dash */
{ 0x2014, 0xD1 }, /* em dash */
{ 0x2018, 0xD4 }, /* left single quotation mark */
@@ -1036,1045 +1088,5154 @@ static const unicode_mapping unimap_macroman[] = {
{ 0xFB01, 0xDE }, /* latin small ligature fi */
{ 0xFB02, 0xDF }, /* latin small ligature fl */
};
+/* {{{ end of mappings *from* Unicode for MacRoman */
-#endif /* HTML_TABLES_H */
-/*
- +----------------------------------------------------------------------+
- | PHP Version 5 |
- +----------------------------------------------------------------------+
- | Copyright (c) 1997-2010 The PHP Group |
- +----------------------------------------------------------------------+
- | This source file is subject to version 3.01 of the PHP license, |
- | that is bundled with this package in the file LICENSE, and is |
- | available through the world-wide-web at the following url: |
- | http://www.php.net/license/3_01.txt |
- | If you did not receive a copy of the PHP license and are unable to |
- | obtain it through the world-wide-web, please send a note to |
- | license@php.net so we can mail you a copy immediately. |
- +----------------------------------------------------------------------+
- | Author: Rasmus Lerdorf <rasmus@lerdorf.on.ca> |
- +----------------------------------------------------------------------+
-*/
+/* HTML 5 has many more named entities.
+ * Some of them map to two unicode code points, not one.
+ * We're going to use a three-stage table (with an extra one for the entities
+ * with two code points). */
-/* $Id: html.h 293036 2010-01-03 09:23:27Z sebastian $ */
+#define ENT_STAGE1_INDEX(k) (((k) & 0xFFF000) >> 12) /* > 1D, we have no mapping */
+#define ENT_STAGE2_INDEX(k) (((k) & 0xFC0) >> 6)
+#define ENT_STAGE3_INDEX(k) ((k) & 0x3F)
+#define ENT_CODE_POINT_FROM_STAGES(i,j,k) (((i) << 12) | ((j) << 6) | (k))
-#ifndef HTML_TABLES_H
-#define HTML_TABLES_H
+/* Table should be organized with a leading row telling the size of
+ * the table and the default entity (maybe NULL) and the rest being
+ * normal rows ordered by code point so that we can do a binary search */
+typedef union {
+ struct {
+ unsigned size; /* number of remaining entries in the table */
+ const char *default_entity;
+ unsigned short default_entity_len;
+ } leading_entry;
+ struct {
+ unsigned second_cp; /* second code point */
+ const char *entity;
+ unsigned short entity_len;
+ } normal_entry;
+} entity_multicodepoint_row;
-/* cs_terminator is overloaded in the following fashion:
- * - It terminates the list entity maps.
- * - In BG(inverse_ent_maps), it's the key of the inverse map that stores
- * only the basic entities.
- * - When passed to traverse_for_entities (or via php_unescape_entities with !all),
- * we don't care about the encoding (UTF-8 is chosen, but it should be used
- * when it doesn't matter).
- */
-enum entity_charset { cs_terminator, cs_8859_1, cs_cp1252,
- cs_8859_15, cs_utf_8, cs_big5, cs_gb2312,
- cs_big5hkscs, cs_sjis, cs_eucjp, cs_koi8r,
- cs_cp1251, cs_8859_5, cs_cp866, cs_macroman,
- cs_numelems /* used to count the number of charsets */
- };
-typedef const char *const entity_table_t;
-
-/* codepage 1252 is a Windows extension to iso-8859-1. */
-static entity_table_t ent_cp_1252[] = {
- "euro", NULL, "sbquo", "fnof", "bdquo", "hellip", "dagger",
- "Dagger", "circ", "permil", "Scaron", "lsaquo", "OElig",
- NULL, NULL, NULL, NULL, "lsquo", "rsquo", "ldquo", "rdquo",
- "bull", "ndash", "mdash", "tilde", "trade", "scaron", "rsaquo",
- "oelig", NULL, NULL, "Yuml"
-};
-
-static entity_table_t ent_iso_8859_1[] = {
- "nbsp", "iexcl", "cent", "pound", "curren", "yen", "brvbar",
- "sect", "uml", "copy", "ordf", "laquo", "not", "shy", "reg",
- "macr", "deg", "plusmn", "sup2", "sup3", "acute", "micro",
- "para", "middot", "cedil", "sup1", "ordm", "raquo", "frac14",
- "frac12", "frac34", "iquest", "Agrave", "Aacute", "Acirc",
- "Atilde", "Auml", "Aring", "AElig", "Ccedil", "Egrave",
- "Eacute", "Ecirc", "Euml", "Igrave", "Iacute", "Icirc",
- "Iuml", "ETH", "Ntilde", "Ograve", "Oacute", "Ocirc", "Otilde",
- "Ouml", "times", "Oslash", "Ugrave", "Uacute", "Ucirc", "Uuml",
- "Yacute", "THORN", "szlig", "agrave", "aacute", "acirc",
- "atilde", "auml", "aring", "aelig", "ccedil", "egrave",
- "eacute", "ecirc", "euml", "igrave", "iacute", "icirc",
- "iuml", "eth", "ntilde", "ograve", "oacute", "ocirc", "otilde",
- "ouml", "divide", "oslash", "ugrave", "uacute", "ucirc",
- "uuml", "yacute", "thorn", "yuml"
-};
-
-static entity_table_t ent_iso_8859_15[] = {
- "nbsp", "iexcl", "cent", "pound", "euro", "yen", "Scaron",
- "sect", "scaron", "copy", "ordf", "laquo", "not", "shy", "reg",
- "macr", "deg", "plusmn", "sup2", "sup3", NULL, /* Zcaron */
- "micro", "para", "middot", NULL, /* zcaron */ "sup1", "ordm",
- "raquo", "OElig", "oelig", "Yuml", "iquest", "Agrave", "Aacute",
- "Acirc", "Atilde", "Auml", "Aring", "AElig", "Ccedil", "Egrave",
- "Eacute", "Ecirc", "Euml", "Igrave", "Iacute", "Icirc",
- "Iuml", "ETH", "Ntilde", "Ograve", "Oacute", "Ocirc", "Otilde",
- "Ouml", "times", "Oslash", "Ugrave", "Uacute", "Ucirc", "Uuml",
- "Yacute", "THORN", "szlig", "agrave", "aacute", "acirc",
- "atilde", "auml", "aring", "aelig", "ccedil", "egrave",
- "eacute", "ecirc", "euml", "igrave", "iacute", "icirc",
- "iuml", "eth", "ntilde", "ograve", "oacute", "ocirc", "otilde",
- "ouml", "divide", "oslash", "ugrave", "uacute", "ucirc",
- "uuml", "yacute", "thorn", "yuml"
-};
-
-static entity_table_t ent_uni_338_402[] = {
- /* 338 (0x0152) */
- "OElig", "oelig", NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- /* 352 (0x0160) */
- "Scaron", "scaron", NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- /* 376 (0x0178) */
- "Yuml", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- /* 400 (0x0190) */
- NULL, NULL, "fnof"
-};
-
-static entity_table_t ent_uni_spacing[] = {
- /* 710 */
- "circ",
- /* 711 - 730 */
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- /* 731 - 732 */
- NULL, "tilde"
-};
-
-static entity_table_t ent_uni_greek[] = {
- /* 913 */
- "Alpha", "Beta", "Gamma", "Delta", "Epsilon", "Zeta", "Eta", "Theta",
- "Iota", "Kappa", "Lambda", "Mu", "Nu", "Xi", "Omicron", "Pi", "Rho",
- NULL, "Sigma", "Tau", "Upsilon", "Phi", "Chi", "Psi", "Omega",
- /* 938 - 944 are not mapped */
- NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- "alpha", "beta", "gamma", "delta", "epsilon", "zeta", "eta", "theta",
- "iota", "kappa", "lambda", "mu", "nu", "xi", "omicron", "pi", "rho",
- "sigmaf", "sigma", "tau", "upsilon", "phi", "chi", "psi", "omega",
- /* 970 - 976 are not mapped */
- NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- "thetasym", "upsih",
- NULL, NULL, NULL,
- "piv"
-};
-
-static entity_table_t ent_uni_punct[] = {
- /* 8194 */
- "ensp", "emsp", NULL, NULL, NULL, NULL, NULL,
- "thinsp", NULL, NULL, "zwnj", "zwj", "lrm", "rlm",
- NULL, NULL, NULL, "ndash", "mdash", NULL, NULL, NULL,
- /* 8216 */
- "lsquo", "rsquo", "sbquo", NULL, "ldquo", "rdquo", "bdquo", NULL,
- "dagger", "Dagger", "bull", NULL, NULL, NULL, "hellip",
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, "permil", NULL,
- /* 8242 */
- "prime", "Prime", NULL, NULL, NULL, NULL, NULL, "lsaquo", "rsaquo", NULL,
- NULL, NULL, "oline", NULL, NULL, NULL, NULL, NULL,
- "frasl"
-};
-
-static entity_table_t ent_uni_euro[] = {
- "euro"
-};
-
-static entity_table_t ent_uni_8465_8501[] = {
- /* 8465 */
- "image", NULL, NULL, NULL, NULL, NULL, NULL,
- /* 8472 */
- "weierp", NULL, NULL, NULL,
- /* 8476 */
- "real", NULL, NULL, NULL, NULL, NULL,
- /* 8482 */
- "trade", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- /* 8501 */
- "alefsym",
-};
-
-static entity_table_t ent_uni_8592_9002[] = {
- /* 8592 (0x2190) */
- "larr", "uarr", "rarr", "darr", "harr", NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- /* 8608 (0x21a0) */
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- /* 8624 (0x21b0) */
- NULL, NULL, NULL, NULL, NULL, "crarr", NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- /* 8640 (0x21c0) */
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- /* 8656 (0x21d0) */
- "lArr", "uArr", "rArr", "dArr", "hArr", NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- /* 8672 (0x21e0) */
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- /* 8704 (0x2200) */
- "forall", NULL, "part", "exist", NULL, "empty", NULL, "nabla",
- "isin", "notin", NULL, "ni", NULL, NULL, NULL, "prod",
- /* 8720 (0x2210) */
- NULL, "sum", "minus", NULL, NULL, NULL, NULL, "lowast",
- NULL, NULL, "radic", NULL, NULL, "prop", "infin", NULL,
- /* 8736 (0x2220) */
- "ang", NULL, NULL, NULL, NULL, NULL, NULL, "and",
- "or", "cap", "cup", "int", NULL, NULL, NULL, NULL,
- /* 8752 (0x2230) */
- NULL, NULL, NULL, NULL, "there4", NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, "sim", NULL, NULL, NULL,
- /* 8768 (0x2240) */
- NULL, NULL, NULL, NULL, NULL, "cong", NULL, NULL,
- "asymp", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- /* 8784 (0x2250) */
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- /* 8800 (0x2260) */
- "ne", "equiv", NULL, NULL, "le", "ge", NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- /* 8816 (0x2270) */
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- /* 8832 (0x2280) */
- NULL, NULL, "sub", "sup", "nsub", NULL, "sube", "supe",
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- /* 8848 (0x2290) */
- NULL, NULL, NULL, NULL, NULL, "oplus", NULL, "otimes",
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- /* 8864 (0x22a0) */
- NULL, NULL, NULL, NULL, NULL, "perp", NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- /* 8880 (0x22b0) */
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- /* 8896 (0x22c0) */
- NULL, NULL, NULL, NULL, NULL, "sdot", NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- /* 8912 (0x22d0) */
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- /* 8928 (0x22e0) */
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- /* 8944 (0x22f0) */
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- /* 8960 (0x2300) */
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- "lceil", "rceil", "lfloor", "rfloor", NULL, NULL, NULL, NULL,
- /* 8976 (0x2310) */
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- /* 8992 (0x2320) */
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, "lang", "rang"
-};
-
-static entity_table_t ent_uni_9674[] = {
- /* 9674 */
- "loz"
-};
-
-static entity_table_t ent_uni_9824_9830[] = {
- /* 9824 */
- "spades", NULL, NULL, "clubs", NULL, "hearts", "diams"
-};
-
-static entity_table_t ent_koi8r[] = {
- "#1105", /* "jo "*/
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, "#1025", /* "JO" */
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- "#1102", "#1072", "#1073", "#1094", "#1076", "#1077", "#1092",
- "#1075", "#1093", "#1080", "#1081", "#1082", "#1083", "#1084",
- "#1085", "#1086", "#1087", "#1103", "#1088", "#1089", "#1090",
- "#1091", "#1078", "#1074", "#1100", "#1099", "#1079", "#1096",
- "#1101", "#1097", "#1095", "#1098", "#1070", "#1040", "#1041",
- "#1062", "#1044", "#1045", "#1060", "#1043", "#1061", "#1048",
- "#1049", "#1050", "#1051", "#1052", "#1053", "#1054", "#1055",
- "#1071", "#1056", "#1057", "#1058", "#1059", "#1046", "#1042",
- "#1068", "#1067", "#1047", "#1064", "#1069", "#1065", "#1063",
- "#1066"
-};
-
-static entity_table_t ent_cp_1251[] = {
- "#1026", "#1027", "#8218", "#1107", "#8222", "hellip", "dagger",
- "Dagger", "euro", "permil", "#1033", "#8249", "#1034", "#1036",
- "#1035", "#1039", "#1106", "#8216", "#8217", "#8219", "#8220",
- "bull", "ndash", "mdash", NULL, "trade", "#1113", "#8250",
- "#1114", "#1116", "#1115", "#1119", "nbsp", "#1038", "#1118",
- "#1032", "curren", "#1168", "brvbar", "sect", "#1025", "copy",
- "#1028", "laquo", "not", "shy", "reg", "#1031", "deg", "plusmn",
- "#1030", "#1110", "#1169", "micro", "para", "middot", "#1105",
- "#8470", "#1108", "raquo", "#1112", "#1029", "#1109", "#1111",
- "#1040", "#1041", "#1042", "#1043", "#1044", "#1045", "#1046",
- "#1047", "#1048", "#1049", "#1050", "#1051", "#1052", "#1053",
- "#1054", "#1055", "#1056", "#1057", "#1058", "#1059", "#1060",
- "#1061", "#1062", "#1063", "#1064", "#1065", "#1066", "#1067",
- "#1068", "#1069", "#1070", "#1071", "#1072", "#1073", "#1074",
- "#1075", "#1076", "#1077", "#1078", "#1079", "#1080", "#1081",
- "#1082", "#1083", "#1084", "#1085", "#1086", "#1087", "#1088",
- "#1089", "#1090", "#1091", "#1092", "#1093", "#1094", "#1095",
- "#1096", "#1097", "#1098", "#1099", "#1100", "#1101", "#1102",
- "#1103"
-};
-
-static entity_table_t ent_iso_8859_5[] = {
- "#1056", "#1057", "#1058", "#1059", "#1060", "#1061", "#1062",
- "#1063", "#1064", "#1065", "#1066", "#1067", "#1068", "#1069",
- "#1070", "#1071", "#1072", "#1073", "#1074", "#1075", "#1076",
- "#1077", "#1078", "#1079", "#1080", "#1081", "#1082", "#1083",
- "#1084", "#1085", "#1086", "#1087", "#1088", "#1089", "#1090",
- "#1091", "#1092", "#1093", "#1094", "#1095", "#1096", "#1097",
- "#1098", "#1099", "#1100", "#1101", "#1102", "#1103", "#1104",
- "#1105", "#1106", "#1107", "#1108", "#1109", "#1110", "#1111",
- "#1112", "#1113", "#1114", "#1115", "#1116", "#1117", "#1118",
- "#1119"
-};
-
-static entity_table_t ent_cp_866[] = {
-
- "#9492", "#9524", "#9516", "#9500", "#9472", "#9532", "#9566",
- "#9567", "#9562", "#9556", "#9577", "#9574", "#9568", "#9552",
- "#9580", "#9575", "#9576", "#9572", "#9573", "#9561", "#9560",
- "#9554", "#9555", "#9579", "#9578", "#9496", "#9484", "#9608",
- "#9604", "#9612", "#9616", "#9600", "#1088", "#1089", "#1090",
- "#1091", "#1092", "#1093", "#1094", "#1095", "#1096", "#1097",
- "#1098", "#1099", "#1100", "#1101", "#1102", "#1103", "#1025",
- "#1105", "#1028", "#1108", "#1031", "#1111", "#1038", "#1118",
- "#176", "#8729", "#183", "#8730", "#8470", "#164", "#9632",
- "#160"
-};
-
-/* MacRoman has a couple of low-ascii chars that need mapping too */
-/* Vertical tab (ASCII 11) is often used to store line breaks inside */
-/* DB exports, this mapping changes it to a space */
-static entity_table_t ent_macroman[] = {
- "sp", NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, "quot", NULL,
- NULL, NULL, "amp", NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, "lt", NULL, "gt", NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, "Auml", "Aring", "Ccedil", "Eacute", "Ntilde", "Ouml",
- "Uuml", "aacute", "agrave", "acirc", "auml", "atilde", "aring",
- "ccedil", "eacute", "egrave", "ecirc", "euml", "iacute", "igrave",
- "icirc", "iuml", "ntilde", "oacute", "ograve", "ocirc", "ouml",
- "otilde", "uacute", "ugrave", "ucirc", "uuml", "dagger", "deg",
- "cent", "pound", "sect", "bull", "para", "szlig", "reg",
- "copy", "trade", "acute", "uml", "ne", "AElig", "Oslash",
- "infin", "plusmn", "le", "ge", "yen", "micro", "part",
- "sum", "prod", "pi", "int", "ordf", "ordm", "Omega",
- "aelig", "oslash", "iquest", "iexcl", "not", "radic", "fnof",
- "asymp", "#8710", "laquo", "raquo", "hellip", "nbsp", "Agrave",
- "Atilde", "Otilde", "OElig", "oelig", "ndash", "mdash", "ldquo",
- "rdquo", "lsquo", "rsquo", "divide", "loz", "yuml", "Yuml",
- "frasl", "euro", "lsaquo", "rsaquo", "#xFB01", "#xFB02", "Dagger",
- "middot", "sbquo", "bdquo", "permil", "Acirc", "Ecirc", "Aacute",
- "Euml", "Egrave", "Iacute", "Icirc", "Iuml", "Igrave", "Oacute",
- "Ocirc", "#xF8FF", "Ograve", "Uacute", "Ucirc", "Ugrave", "#305",
- "circ", "tilde", "macr", "#728", "#729", "#730", "cedil",
- "#733", "#731", "#711"
-};
-
-struct html_entity_map {
- enum entity_charset charset; /* charset identifier */
- unsigned int basechar; /* char code at start of table */
- unsigned int endchar; /* last char code in the table */
- entity_table_t *table; /* the table of mappings */
-};
-
-static const struct html_entity_map entity_map[] = {
- { cs_cp1252, 0x80, 0x9f, ent_cp_1252 },
- { cs_cp1252, 0xa0, 0xff, ent_iso_8859_1 },
- { cs_8859_1, 0xa0, 0xff, ent_iso_8859_1 },
- { cs_8859_15, 0xa0, 0xff, ent_iso_8859_15 },
- { cs_utf_8, 0xa0, 0xff, ent_iso_8859_1 },
- { cs_utf_8, 338, 402, ent_uni_338_402 },
- { cs_utf_8, 710, 732, ent_uni_spacing },
- { cs_utf_8, 913, 982, ent_uni_greek },
- { cs_utf_8, 8194, 8260, ent_uni_punct },
- { cs_utf_8, 8364, 8364, ent_uni_euro },
- { cs_utf_8, 8465, 8501, ent_uni_8465_8501 },
- { cs_utf_8, 8592, 9002, ent_uni_8592_9002 },
- { cs_utf_8, 9674, 9674, ent_uni_9674 },
- { cs_utf_8, 9824, 9830, ent_uni_9824_9830 },
- { cs_big5, 0xa0, 0xff, ent_iso_8859_1 },
- { cs_gb2312, 0xa0, 0xff, ent_iso_8859_1 },
- { cs_big5hkscs, 0xa0, 0xff, ent_iso_8859_1 },
- { cs_sjis, 0xa0, 0xff, ent_iso_8859_1 },
- { cs_eucjp, 0xa0, 0xff, ent_iso_8859_1 },
- { cs_koi8r, 0xa3, 0xff, ent_koi8r },
- { cs_cp1251, 0x80, 0xff, ent_cp_1251 },
- { cs_8859_5, 0xc0, 0xff, ent_iso_8859_5 },
- { cs_cp866, 0xc0, 0xff, ent_cp_866 },
- { cs_macroman, 0x0b, 0xff, ent_macroman },
- { cs_terminator }
+/* blocks of these should start at code points k where k % 0xFC0 == 0 */
+typedef struct {
+ char ambiguous; /* if 0 look into entity */
+ union {
+ struct {
+ const char *entity; /* may be NULL */
+ unsigned short entity_len;
+ } ent;
+ const entity_multicodepoint_row *multicodepoint_table;
+ } data;
+} entity_stage3_row;
+
+/* Calculate k & 0x3F Use as offset */
+typedef const entity_stage3_row *entity_stage2_row; /* 64 elements */
+
+/* Calculate k & 0xFC0 >> 6. Use as offset */
+typedef const entity_stage3_row *const *entity_stage1_row; /* 64 elements */
+
+/* For stage 1, Calculate k & 0xFFF000 >> 3*4.
+ * If larger than 1D, we have no mapping. Otherwise lookup that index */
+
+typedef struct {
+ const entity_stage1_row *ms_table;
+ /* for tables with only basic entities, this member is to be accessed
+ * directly for better performance: */
+ const entity_stage3_row *table;
+} entity_table_opt;
+
+/* Replaced "GT" > "gt" and "QUOT" > "quot" for consistentcy's sake. */
+
+/* {{{ Start of HTML5 multi-stage table for codepoint -> entity */
+
+/* {{{ Start of double code point tables for HTML5 */
+
+static const entity_multicodepoint_row multi_cp_html5_0003C[] = {
+ {01, "lt", 2},
+ {0x020D2, "nvlt", 4},
+};
+static const entity_multicodepoint_row multi_cp_html5_0003D[] = {
+ {01, "equals", 6},
+ {0x020E5, "bne", 3},
+};
+static const entity_multicodepoint_row multi_cp_html5_0003E[] = {
+ {01, "gt", 2},
+ {0x020D2, "nvgt", 4},
+};
+static const entity_multicodepoint_row multi_cp_html5_00066[] = {
+ {01, NULL , 0},
+ {0x0006A, "fjlig", 5},
+};
+static const entity_multicodepoint_row multi_cp_html5_0205F[] = {
+ {01, "MediumSpace", 11},
+ {0x0200A, "ThickSpace", 10},
+};
+static const entity_multicodepoint_row multi_cp_html5_0219D[] = {
+ {01, "rarrw", 5},
+ {0x00338, "nrarrw", 6},
+};
+static const entity_multicodepoint_row multi_cp_html5_02202[] = {
+ {01, "part", 4},
+ {0x00338, "npart", 5},
+};
+static const entity_multicodepoint_row multi_cp_html5_02220[] = {
+ {01, "angle", 5},
+ {0x020D2, "nang", 4},
+};
+static const entity_multicodepoint_row multi_cp_html5_02229[] = {
+ {01, "cap", 3},
+ {0x0FE00, "caps", 4},
+};
+static const entity_multicodepoint_row multi_cp_html5_0222A[] = {
+ {01, "cup", 3},
+ {0x0FE00, "cups", 4},
+};
+static const entity_multicodepoint_row multi_cp_html5_0223C[] = {
+ {01, "sim", 3},
+ {0x020D2, "nvsim", 5},
+};
+static const entity_multicodepoint_row multi_cp_html5_0223D[] = {
+ {01, "bsim", 4},
+ {0x00331, "race", 4},
+};
+static const entity_multicodepoint_row multi_cp_html5_0223E[] = {
+ {01, "ac", 2},
+ {0x00333, "acE", 3},
+};
+static const entity_multicodepoint_row multi_cp_html5_02242[] = {
+ {01, "esim", 4},
+ {0x00338, "nesim", 5},
+};
+static const entity_multicodepoint_row multi_cp_html5_0224B[] = {
+ {01, "apid", 4},
+ {0x00338, "napid", 5},
+};
+static const entity_multicodepoint_row multi_cp_html5_0224D[] = {
+ {01, "CupCap", 6},
+ {0x020D2, "nvap", 4},
+};
+static const entity_multicodepoint_row multi_cp_html5_0224E[] = {
+ {01, "bump", 4},
+ {0x00338, "nbump", 5},
+};
+static const entity_multicodepoint_row multi_cp_html5_0224F[] = {
+ {01, "HumpEqual", 9},
+ {0x00338, "nbumpe", 6},
+};
+static const entity_multicodepoint_row multi_cp_html5_02250[] = {
+ {01, "esdot", 5},
+ {0x00338, "nedot", 5},
+};
+static const entity_multicodepoint_row multi_cp_html5_02261[] = {
+ {01, "Congruent", 9},
+ {0x020E5, "bnequiv", 7},
+};
+static const entity_multicodepoint_row multi_cp_html5_02264[] = {
+ {01, "leq", 3},
+ {0x020D2, "nvle", 4},
+};
+static const entity_multicodepoint_row multi_cp_html5_02265[] = {
+ {01, "ge", 2},
+ {0x020D2, "nvge", 4},
+};
+static const entity_multicodepoint_row multi_cp_html5_02266[] = {
+ {01, "lE", 2},
+ {0x00338, "nlE", 3},
+};
+static const entity_multicodepoint_row multi_cp_html5_02267[] = {
+ {01, "geqq", 4},
+ {0x00338, "NotGreaterFullEqual", 19},
+};
+static const entity_multicodepoint_row multi_cp_html5_02268[] = {
+ {01, "lneqq", 5},
+ {0x0FE00, "lvertneqq", 9},
+};
+static const entity_multicodepoint_row multi_cp_html5_02269[] = {
+ {01, "gneqq", 5},
+ {0x0FE00, "gvertneqq", 9},
+};
+static const entity_multicodepoint_row multi_cp_html5_0226A[] = {
+ {02, "ll", 2},
+ {0x00338, "nLtv", 4},
+ {0x020D2, "nLt", 3},
+};
+static const entity_multicodepoint_row multi_cp_html5_0226B[] = {
+ {02, "gg", 2},
+ {0x00338, "NotGreaterGreater", 17},
+ {0x020D2, "nGt", 3},
+};
+static const entity_multicodepoint_row multi_cp_html5_0227F[] = {
+ {01, "SucceedsTilde", 13},
+ {0x00338, "NotSucceedsTilde", 16},
+};
+static const entity_multicodepoint_row multi_cp_html5_02282[] = {
+ {01, "sub", 3},
+ {0x020D2, "vnsub", 5},
+};
+static const entity_multicodepoint_row multi_cp_html5_02283[] = {
+ {01, "sup", 3},
+ {0x020D2, "nsupset", 7},
+};
+static const entity_multicodepoint_row multi_cp_html5_0228A[] = {
+ {01, "subsetneq", 9},
+ {0x0FE00, "vsubne", 6},
+};
+static const entity_multicodepoint_row multi_cp_html5_0228B[] = {
+ {01, "supsetneq", 9},
+ {0x0FE00, "vsupne", 6},
+};
+static const entity_multicodepoint_row multi_cp_html5_0228F[] = {
+ {01, "sqsub", 5},
+ {0x00338, "NotSquareSubset", 15},
+};
+static const entity_multicodepoint_row multi_cp_html5_02290[] = {
+ {01, "sqsupset", 8},
+ {0x00338, "NotSquareSuperset", 17},
+};
+static const entity_multicodepoint_row multi_cp_html5_02293[] = {
+ {01, "sqcap", 5},
+ {0x0FE00, "sqcaps", 6},
+};
+static const entity_multicodepoint_row multi_cp_html5_02294[] = {
+ {01, "sqcup", 5},
+ {0x0FE00, "sqcups", 6},
+};
+static const entity_multicodepoint_row multi_cp_html5_022B4[] = {
+ {01, "LeftTriangleEqual", 17},
+ {0x020D2, "nvltrie", 7},
+};
+static const entity_multicodepoint_row multi_cp_html5_022B5[] = {
+ {01, "RightTriangleEqual", 18},
+ {0x020D2, "nvrtrie", 7},
+};
+static const entity_multicodepoint_row multi_cp_html5_022D8[] = {
+ {01, "Ll", 2},
+ {0x00338, "nLl", 3},
+};
+static const entity_multicodepoint_row multi_cp_html5_022D9[] = {
+ {01, "Gg", 2},
+ {0x00338, "nGg", 3},
+};
+static const entity_multicodepoint_row multi_cp_html5_022DA[] = {
+ {01, "lesseqgtr", 9},
+ {0x0FE00, "lesg", 4},
+};
+static const entity_multicodepoint_row multi_cp_html5_022DB[] = {
+ {01, "gtreqless", 9},
+ {0x0FE00, "gesl", 4},
+};
+static const entity_multicodepoint_row multi_cp_html5_022F5[] = {
+ {01, "isindot", 7},
+ {0x00338, "notindot", 8},
+};
+static const entity_multicodepoint_row multi_cp_html5_022F9[] = {
+ {01, "isinE", 5},
+ {0x00338, "notinE", 6},
+};
+static const entity_multicodepoint_row multi_cp_html5_02933[] = {
+ {01, "rarrc", 5},
+ {0x00338, "nrarrc", 6},
+};
+static const entity_multicodepoint_row multi_cp_html5_029CF[] = {
+ {01, "LeftTriangleBar", 15},
+ {0x00338, "NotLeftTriangleBar", 18},
+};
+static const entity_multicodepoint_row multi_cp_html5_029D0[] = {
+ {01, "RightTriangleBar", 16},
+ {0x00338, "NotRightTriangleBar", 19},
+};
+static const entity_multicodepoint_row multi_cp_html5_02A6D[] = {
+ {01, "congdot", 7},
+ {0x00338, "ncongdot", 8},
+};
+static const entity_multicodepoint_row multi_cp_html5_02A70[] = {
+ {01, "apE", 3},
+ {0x00338, "napE", 4},
+};
+static const entity_multicodepoint_row multi_cp_html5_02A7D[] = {
+ {01, "les", 3},
+ {0x00338, "nles", 4},
+};
+static const entity_multicodepoint_row multi_cp_html5_02A7E[] = {
+ {01, "ges", 3},
+ {0x00338, "nges", 4},
+};
+static const entity_multicodepoint_row multi_cp_html5_02AA1[] = {
+ {01, "LessLess", 8},
+ {0x00338, "NotNestedLessLess", 17},
+};
+static const entity_multicodepoint_row multi_cp_html5_02AA2[] = {
+ {01, "GreaterGreater", 14},
+ {0x00338, "NotNestedGreaterGreater", 23},
+};
+static const entity_multicodepoint_row multi_cp_html5_02AAC[] = {
+ {01, "smte", 4},
+ {0x0FE00, "smtes", 5},
+};
+static const entity_multicodepoint_row multi_cp_html5_02AAD[] = {
+ {01, "late", 4},
+ {0x0FE00, "lates", 5},
+};
+static const entity_multicodepoint_row multi_cp_html5_02AAF[] = {
+ {01, "preceq", 6},
+ {0x00338, "NotPrecedesEqual", 16},
+};
+static const entity_multicodepoint_row multi_cp_html5_02AB0[] = {
+ {01, "SucceedsEqual", 13},
+ {0x00338, "NotSucceedsEqual", 16},
+};
+static const entity_multicodepoint_row multi_cp_html5_02AC5[] = {
+ {01, "subE", 4},
+ {0x00338, "nsubE", 5},
+};
+static const entity_multicodepoint_row multi_cp_html5_02AC6[] = {
+ {01, "supseteqq", 9},
+ {0x00338, "nsupseteqq", 10},
+};
+static const entity_multicodepoint_row multi_cp_html5_02ACB[] = {
+ {01, "subsetneqq", 10},
+ {0x0FE00, "vsubnE", 6},
+};
+static const entity_multicodepoint_row multi_cp_html5_02ACC[] = {
+ {01, "supnE", 5},
+ {0x0FE00, "varsupsetneqq", 13},
+};
+static const entity_multicodepoint_row multi_cp_html5_02AFD[] = {
+ {01, NULL , 0},
+ {0x0FE00, "varsupsetneqq", 13},
};
-static const struct {
- const char *codeset;
- enum entity_charset charset;
-} charset_map[] = {
- { "ISO-8859-1", cs_8859_1 },
- { "ISO8859-1", cs_8859_1 },
- { "ISO-8859-15", cs_8859_15 },
- { "ISO8859-15", cs_8859_15 },
- { "utf-8", cs_utf_8 },
- { "cp1252", cs_cp1252 },
- { "Windows-1252", cs_cp1252 },
- { "1252", cs_cp1252 },
- { "BIG5", cs_big5 },
- { "950", cs_big5 },
- { "GB2312", cs_gb2312 },
- { "936", cs_gb2312 },
- { "BIG5-HKSCS", cs_big5hkscs },
- { "Shift_JIS", cs_sjis },
- { "SJIS", cs_sjis },
- { "932", cs_sjis },
- { "EUCJP", cs_eucjp },
- { "EUC-JP", cs_eucjp },
- { "KOI8-R", cs_koi8r },
- { "koi8-ru", cs_koi8r },
- { "koi8r", cs_koi8r },
- { "cp1251", cs_cp1251 },
- { "Windows-1251", cs_cp1251 },
- { "win-1251", cs_cp1251 },
- { "iso8859-5", cs_8859_5 },
- { "iso-8859-5", cs_8859_5 },
- { "cp866", cs_cp866 },
- { "866", cs_cp866 },
- { "ibm866", cs_cp866 },
- { "MacRoman", cs_macroman },
- { NULL }
+/* End of double code point tables }}} */
+
+/* {{{ Stage 3 Tables for HTML5 */
+
+static const entity_stage3_row empty_stage3_table[] = {
+ /* 64 elements */
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+};
+static const entity_stage3_row stage3_table_html5_00000[] = {
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, "Tab", 3}, {0, "NewLine", 7}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, "excl", 4}, {0, "quot", 4}, {0, "num", 3},
+ {0, "dollar", 6}, {0, "percnt", 6}, {0, "amp", 3}, {0, "apos", 4},
+ {0, "lpar", 4}, {0, "rpar", 4}, {0, "ast", 3}, {0, "plus", 4},
+ {0, "comma", 5}, {0, NULL, 0}, {0, "period", 6}, {0, "sol", 3},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, "colon", 5}, {0, "semi", 4},
+ {1, (void*)multi_cp_html5_0003C}, {1, (void*)multi_cp_html5_0003D}, {1, (void*)multi_cp_html5_0003E}, {0, "quest", 5},
+};
+
+static const entity_stage3_row stage3_table_html5_00040[] = {
+ {0, "commat", 6}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, "lbrack", 6},
+ {0, "bsol", 4}, {0, "rsqb", 4}, {0, "Hat", 3}, {0, "lowbar", 6},
+ {0, "grave", 5}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {1, (void*)multi_cp_html5_00066}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, "lbrace", 6},
+ {0, "vert", 4}, {0, "rcub", 4}, {0, NULL, 0}, {0, NULL, 0},
+};
+
+static const entity_stage3_row stage3_table_html5_00080[] = {
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "nbsp", 4}, {0, "iexcl", 5}, {0, "cent", 4}, {0, "pound", 5},
+ {0, "curren", 6}, {0, "yen", 3}, {0, "brvbar", 6}, {0, "sect", 4},
+ {0, "DoubleDot", 9}, {0, "copy", 4}, {0, "ordf", 4}, {0, "laquo", 5},
+ {0, "not", 3}, {0, "shy", 3}, {0, "reg", 3}, {0, "macr", 4},
+ {0, "deg", 3}, {0, "plusmn", 6}, {0, "sup2", 4}, {0, "sup3", 4},
+ {0, "DiacriticalAcute", 16}, {0, "micro", 5}, {0, "para", 4}, {0, "CenterDot", 9},
+ {0, "Cedilla", 7}, {0, "sup1", 4}, {0, "ordm", 4}, {0, "raquo", 5},
+ {0, "frac14", 6}, {0, "half", 4}, {0, "frac34", 6}, {0, "iquest", 6},
+};
+
+static const entity_stage3_row stage3_table_html5_000C0[] = {
+ {0, "Agrave", 6}, {0, "Aacute", 6}, {0, "Acirc", 5}, {0, "Atilde", 6},
+ {0, "Auml", 4}, {0, "Aring", 5}, {0, "AElig", 5}, {0, "Ccedil", 6},
+ {0, "Egrave", 6}, {0, "Eacute", 6}, {0, "Ecirc", 5}, {0, "Euml", 4},
+ {0, "Igrave", 6}, {0, "Iacute", 6}, {0, "Icirc", 5}, {0, "Iuml", 4},
+ {0, "ETH", 3}, {0, "Ntilde", 6}, {0, "Ograve", 6}, {0, "Oacute", 6},
+ {0, "Ocirc", 5}, {0, "Otilde", 6}, {0, "Ouml", 4}, {0, "times", 5},
+ {0, "Oslash", 6}, {0, "Ugrave", 6}, {0, "Uacute", 6}, {0, "Ucirc", 5},
+ {0, "Uuml", 4}, {0, "Yacute", 6}, {0, "THORN", 5}, {0, "szlig", 5},
+ {0, "agrave", 6}, {0, "aacute", 6}, {0, "acirc", 5}, {0, "atilde", 6},
+ {0, "auml", 4}, {0, "aring", 5}, {0, "aelig", 5}, {0, "ccedil", 6},
+ {0, "egrave", 6}, {0, "eacute", 6}, {0, "ecirc", 5}, {0, "euml", 4},
+ {0, "igrave", 6}, {0, "iacute", 6}, {0, "icirc", 5}, {0, "iuml", 4},
+ {0, "eth", 3}, {0, "ntilde", 6}, {0, "ograve", 6}, {0, "oacute", 6},
+ {0, "ocirc", 5}, {0, "otilde", 6}, {0, "ouml", 4}, {0, "divide", 6},
+ {0, "oslash", 6}, {0, "ugrave", 6}, {0, "uacute", 6}, {0, "ucirc", 5},
+ {0, "uuml", 4}, {0, "yacute", 6}, {0, "thorn", 5}, {0, "yuml", 4},
+};
+
+static const entity_stage3_row stage3_table_html5_00100[] = {
+ {0, "Amacr", 5}, {0, "amacr", 5}, {0, "Abreve", 6}, {0, "abreve", 6},
+ {0, "Aogon", 5}, {0, "aogon", 5}, {0, "Cacute", 6}, {0, "cacute", 6},
+ {0, "Ccirc", 5}, {0, "ccirc", 5}, {0, "Cdot", 4}, {0, "cdot", 4},
+ {0, "Ccaron", 6}, {0, "ccaron", 6}, {0, "Dcaron", 6}, {0, "dcaron", 6},
+ {0, "Dstrok", 6}, {0, "dstrok", 6}, {0, "Emacr", 5}, {0, "emacr", 5},
+ {0, NULL, 0}, {0, NULL, 0}, {0, "Edot", 4}, {0, "edot", 4},
+ {0, "Eogon", 5}, {0, "eogon", 5}, {0, "Ecaron", 6}, {0, "ecaron", 6},
+ {0, "Gcirc", 5}, {0, "gcirc", 5}, {0, "Gbreve", 6}, {0, "gbreve", 6},
+ {0, "Gdot", 4}, {0, "gdot", 4}, {0, "Gcedil", 6}, {0, NULL, 0},
+ {0, "Hcirc", 5}, {0, "hcirc", 5}, {0, "Hstrok", 6}, {0, "hstrok", 6},
+ {0, "Itilde", 6}, {0, "itilde", 6}, {0, "Imacr", 5}, {0, "imacr", 5},
+ {0, NULL, 0}, {0, NULL, 0}, {0, "Iogon", 5}, {0, "iogon", 5},
+ {0, "Idot", 4}, {0, "inodot", 6}, {0, "IJlig", 5}, {0, "ijlig", 5},
+ {0, "Jcirc", 5}, {0, "jcirc", 5}, {0, "Kcedil", 6}, {0, "kcedil", 6},
+ {0, "kgreen", 6}, {0, "Lacute", 6}, {0, "lacute", 6}, {0, "Lcedil", 6},
+ {0, "lcedil", 6}, {0, "Lcaron", 6}, {0, "lcaron", 6}, {0, "Lmidot", 6},
+};
+
+static const entity_stage3_row stage3_table_html5_00140[] = {
+ {0, "lmidot", 6}, {0, "Lstrok", 6}, {0, "lstrok", 6}, {0, "Nacute", 6},
+ {0, "nacute", 6}, {0, "Ncedil", 6}, {0, "ncedil", 6}, {0, "Ncaron", 6},
+ {0, "ncaron", 6}, {0, "napos", 5}, {0, "ENG", 3}, {0, "eng", 3},
+ {0, "Omacr", 5}, {0, "omacr", 5}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "Odblac", 6}, {0, "odblac", 6}, {0, "OElig", 5}, {0, "oelig", 5},
+ {0, "Racute", 6}, {0, "racute", 6}, {0, "Rcedil", 6}, {0, "rcedil", 6},
+ {0, "Rcaron", 6}, {0, "rcaron", 6}, {0, "Sacute", 6}, {0, "sacute", 6},
+ {0, "Scirc", 5}, {0, "scirc", 5}, {0, "Scedil", 6}, {0, "scedil", 6},
+ {0, "Scaron", 6}, {0, "scaron", 6}, {0, "Tcedil", 6}, {0, "tcedil", 6},
+ {0, "Tcaron", 6}, {0, "tcaron", 6}, {0, "Tstrok", 6}, {0, "tstrok", 6},
+ {0, "Utilde", 6}, {0, "utilde", 6}, {0, "Umacr", 5}, {0, "umacr", 5},
+ {0, "Ubreve", 6}, {0, "ubreve", 6}, {0, "Uring", 5}, {0, "uring", 5},
+ {0, "Udblac", 6}, {0, "udblac", 6}, {0, "Uogon", 5}, {0, "uogon", 5},
+ {0, "Wcirc", 5}, {0, "wcirc", 5}, {0, "Ycirc", 5}, {0, "ycirc", 5},
+ {0, "Yuml", 4}, {0, "Zacute", 6}, {0, "zacute", 6}, {0, "Zdot", 4},
+ {0, "zdot", 4}, {0, "Zcaron", 6}, {0, "zcaron", 6}, {0, NULL, 0},
+};
+
+static const entity_stage3_row stage3_table_html5_00180[] = {
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, "fnof", 4}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, "imped", 5}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+};
+
+static const entity_stage3_row stage3_table_html5_001C0[] = {
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, "gacute", 6}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+};
+
+static const entity_stage3_row stage3_table_html5_00200[] = {
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, "jmath", 5},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+};
+
+static const entity_stage3_row stage3_table_html5_002C0[] = {
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, "circ", 4}, {0, "Hacek", 5},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "Breve", 5}, {0, "dot", 3}, {0, "ring", 4}, {0, "ogon", 4},
+ {0, "DiacriticalTilde", 16}, {0, "DiacriticalDoubleAcute", 22}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+};
+
+static const entity_stage3_row stage3_table_html5_00300[] = {
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, "DownBreve", 9}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+};
+
+static const entity_stage3_row stage3_table_html5_00380[] = {
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, "Alpha", 5}, {0, "Beta", 4}, {0, "Gamma", 5},
+ {0, "Delta", 5}, {0, "Epsilon", 7}, {0, "Zeta", 4}, {0, "Eta", 3},
+ {0, "Theta", 5}, {0, "Iota", 4}, {0, "Kappa", 5}, {0, "Lambda", 6},
+ {0, "Mu", 2}, {0, "Nu", 2}, {0, "Xi", 2}, {0, "Omicron", 7},
+ {0, "Pi", 2}, {0, "Rho", 3}, {0, NULL, 0}, {0, "Sigma", 5},
+ {0, "Tau", 3}, {0, "Upsilon", 7}, {0, "Phi", 3}, {0, "Chi", 3},
+ {0, "Psi", 3}, {0, "Omega", 5}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, "alpha", 5}, {0, "beta", 4}, {0, "gamma", 5},
+ {0, "delta", 5}, {0, "epsi", 4}, {0, "zeta", 4}, {0, "eta", 3},
+ {0, "theta", 5}, {0, "iota", 4}, {0, "kappa", 5}, {0, "lambda", 6},
+ {0, "mu", 2}, {0, "nu", 2}, {0, "xi", 2}, {0, "omicron", 7},
+};
+
+static const entity_stage3_row stage3_table_html5_003C0[] = {
+ {0, "pi", 2}, {0, "rho", 3}, {0, "sigmav", 6}, {0, "sigma", 5},
+ {0, "tau", 3}, {0, "upsi", 4}, {0, "phi", 3}, {0, "chi", 3},
+ {0, "psi", 3}, {0, "omega", 5}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, "thetasym", 8}, {0, "upsih", 5}, {0, NULL, 0},
+ {0, NULL, 0}, {0, "straightphi", 11}, {0, "piv", 3}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "Gammad", 6}, {0, "gammad", 6}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "varkappa", 8}, {0, "rhov", 4}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, "straightepsilon", 15}, {0, "backepsilon", 11}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+};
+
+static const entity_stage3_row stage3_table_html5_00400[] = {
+ {0, NULL, 0}, {0, "IOcy", 4}, {0, "DJcy", 4}, {0, "GJcy", 4},
+ {0, "Jukcy", 5}, {0, "DScy", 4}, {0, "Iukcy", 5}, {0, "YIcy", 4},
+ {0, "Jsercy", 6}, {0, "LJcy", 4}, {0, "NJcy", 4}, {0, "TSHcy", 5},
+ {0, "KJcy", 4}, {0, NULL, 0}, {0, "Ubrcy", 5}, {0, "DZcy", 4},
+ {0, "Acy", 3}, {0, "Bcy", 3}, {0, "Vcy", 3}, {0, "Gcy", 3},
+ {0, "Dcy", 3}, {0, "IEcy", 4}, {0, "ZHcy", 4}, {0, "Zcy", 3},
+ {0, "Icy", 3}, {0, "Jcy", 3}, {0, "Kcy", 3}, {0, "Lcy", 3},
+ {0, "Mcy", 3}, {0, "Ncy", 3}, {0, "Ocy", 3}, {0, "Pcy", 3},
+ {0, "Rcy", 3}, {0, "Scy", 3}, {0, "Tcy", 3}, {0, "Ucy", 3},
+ {0, "Fcy", 3}, {0, "KHcy", 4}, {0, "TScy", 4}, {0, "CHcy", 4},
+ {0, "SHcy", 4}, {0, "SHCHcy", 6}, {0, "HARDcy", 6}, {0, "Ycy", 3},
+ {0, "SOFTcy", 6}, {0, "Ecy", 3}, {0, "YUcy", 4}, {0, "YAcy", 4},
+ {0, "acy", 3}, {0, "bcy", 3}, {0, "vcy", 3}, {0, "gcy", 3},
+ {0, "dcy", 3}, {0, "iecy", 4}, {0, "zhcy", 4}, {0, "zcy", 3},
+ {0, "icy", 3}, {0, "jcy", 3}, {0, "kcy", 3}, {0, "lcy", 3},
+ {0, "mcy", 3}, {0, "ncy", 3}, {0, "ocy", 3}, {0, "pcy", 3},
+};
+
+static const entity_stage3_row stage3_table_html5_00440[] = {
+ {0, "rcy", 3}, {0, "scy", 3}, {0, "tcy", 3}, {0, "ucy", 3},
+ {0, "fcy", 3}, {0, "khcy", 4}, {0, "tscy", 4}, {0, "chcy", 4},
+ {0, "shcy", 4}, {0, "shchcy", 6}, {0, "hardcy", 6}, {0, "ycy", 3},
+ {0, "softcy", 6}, {0, "ecy", 3}, {0, "yucy", 4}, {0, "yacy", 4},
+ {0, NULL, 0}, {0, "iocy", 4}, {0, "djcy", 4}, {0, "gjcy", 4},
+ {0, "jukcy", 5}, {0, "dscy", 4}, {0, "iukcy", 5}, {0, "yicy", 4},
+ {0, "jsercy", 6}, {0, "ljcy", 4}, {0, "njcy", 4}, {0, "tshcy", 5},
+ {0, "kjcy", 4}, {0, NULL, 0}, {0, "ubrcy", 5}, {0, "dzcy", 4},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+};
+
+static const entity_stage3_row stage3_table_html5_02000[] = {
+ {0, NULL, 0}, {0, NULL, 0}, {0, "ensp", 4}, {0, "emsp", 4},
+ {0, "emsp13", 6}, {0, "emsp14", 6}, {0, NULL, 0}, {0, "numsp", 5},
+ {0, "puncsp", 6}, {0, "ThinSpace", 9}, {0, "hairsp", 6}, {0, "ZeroWidthSpace", 14},
+ {0, "zwnj", 4}, {0, "zwj", 3}, {0, "lrm", 3}, {0, "rlm", 3},
+ {0, "hyphen", 6}, {0, NULL, 0}, {0, NULL, 0}, {0, "ndash", 5},
+ {0, "mdash", 5}, {0, "horbar", 6}, {0, "Verbar", 6}, {0, NULL, 0},
+ {0, "OpenCurlyQuote", 14}, {0, "rsquo", 5}, {0, "sbquo", 5}, {0, NULL, 0},
+ {0, "OpenCurlyDoubleQuote", 20}, {0, "rdquo", 5}, {0, "bdquo", 5}, {0, NULL, 0},
+ {0, "dagger", 6}, {0, "Dagger", 6}, {0, "bull", 4}, {0, NULL, 0},
+ {0, NULL, 0}, {0, "nldr", 4}, {0, "hellip", 6}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "permil", 6}, {0, "pertenk", 7}, {0, "prime", 5}, {0, "Prime", 5},
+ {0, "tprime", 6}, {0, "backprime", 9}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, "lsaquo", 6}, {0, "rsaquo", 6}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, "oline", 5}, {0, NULL, 0},
+};
+
+static const entity_stage3_row stage3_table_html5_02040[] = {
+ {0, NULL, 0}, {0, "caret", 5}, {0, NULL, 0}, {0, "hybull", 6},
+ {0, "frasl", 5}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, "bsemi", 5},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, "qprime", 6},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {1, (void*)multi_cp_html5_0205F},
+ {0, "NoBreak", 7}, {0, "af", 2}, {0, "InvisibleTimes", 14}, {0, "ic", 2},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+};
+
+static const entity_stage3_row stage3_table_html5_02080[] = {
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "euro", 4}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+};
+
+static const entity_stage3_row stage3_table_html5_020C0[] = {
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, "TripleDot", 9},
+ {0, "DotDot", 6}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+};
+
+static const entity_stage3_row stage3_table_html5_02100[] = {
+ {0, NULL, 0}, {0, NULL, 0}, {0, "complexes", 9}, {0, NULL, 0},
+ {0, NULL, 0}, {0, "incare", 6}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, "gscr", 4}, {0, "HilbertSpace", 12},
+ {0, "Hfr", 3}, {0, "Hopf", 4}, {0, "planckh", 7}, {0, "planck", 6},
+ {0, "imagline", 8}, {0, "Ifr", 3}, {0, "lagran", 6}, {0, "ell", 3},
+ {0, NULL, 0}, {0, "naturals", 8}, {0, "numero", 6}, {0, "copysr", 6},
+ {0, "wp", 2}, {0, "primes", 6}, {0, "rationals", 9}, {0, "realine", 7},
+ {0, "Rfr", 3}, {0, "Ropf", 4}, {0, "rx", 2}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, "trade", 5}, {0, NULL, 0},
+ {0, "Zopf", 4}, {0, NULL, 0}, {0, NULL, 0}, {0, "mho", 3},
+ {0, "Zfr", 3}, {0, "iiota", 5}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "Bscr", 4}, {0, "Cfr", 3}, {0, NULL, 0}, {0, "escr", 4},
+ {0, "expectation", 11}, {0, "Fouriertrf", 10}, {0, NULL, 0}, {0, "Mellintrf", 9},
+ {0, "orderof", 7}, {0, "aleph", 5}, {0, "beth", 4}, {0, "gimel", 5},
+ {0, "daleth", 6}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+};
+
+static const entity_stage3_row stage3_table_html5_02140[] = {
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, "CapitalDifferentialD", 20}, {0, "DifferentialD", 13}, {0, "exponentiale", 12},
+ {0, "ImaginaryI", 10}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, "frac13", 6},
+ {0, "frac23", 6}, {0, "frac15", 6}, {0, "frac25", 6}, {0, "frac35", 6},
+ {0, "frac45", 6}, {0, "frac16", 6}, {0, "frac56", 6}, {0, "frac18", 6},
+ {0, "frac38", 6}, {0, "frac58", 6}, {0, "frac78", 6}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+};
+
+static const entity_stage3_row stage3_table_html5_02180[] = {
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "larr", 4}, {0, "uarr", 4}, {0, "srarr", 5}, {0, "darr", 4},
+ {0, "harr", 4}, {0, "UpDownArrow", 11}, {0, "nwarrow", 7}, {0, "UpperRightArrow", 15},
+ {0, "LowerRightArrow", 15}, {0, "swarr", 5}, {0, "nleftarrow", 10}, {0, "nrarr", 5},
+ {0, NULL, 0}, {1, (void*)multi_cp_html5_0219D}, {0, "Larr", 4}, {0, "Uarr", 4},
+ {0, "twoheadrightarrow", 17}, {0, "Darr", 4}, {0, "larrtl", 6}, {0, "rarrtl", 6},
+ {0, "LeftTeeArrow", 12}, {0, "UpTeeArrow", 10}, {0, "map", 3}, {0, "DownTeeArrow", 12},
+ {0, NULL, 0}, {0, "larrhk", 6}, {0, "rarrhk", 6}, {0, "larrlp", 6},
+ {0, "looparrowright", 14}, {0, "harrw", 5}, {0, "nleftrightarrow", 15}, {0, NULL, 0},
+ {0, "Lsh", 3}, {0, "rsh", 3}, {0, "ldsh", 4}, {0, "rdsh", 4},
+ {0, NULL, 0}, {0, "crarr", 5}, {0, "curvearrowleft", 14}, {0, "curarr", 6},
+ {0, NULL, 0}, {0, NULL, 0}, {0, "olarr", 5}, {0, "orarr", 5},
+ {0, "leftharpoonup", 13}, {0, "leftharpoondown", 15}, {0, "RightUpVector", 13}, {0, "uharl", 5},
+};
+
+static const entity_stage3_row stage3_table_html5_021C0[] = {
+ {0, "rharu", 5}, {0, "rhard", 5}, {0, "RightDownVector", 15}, {0, "dharl", 5},
+ {0, "rightleftarrows", 15}, {0, "udarr", 5}, {0, "lrarr", 5}, {0, "llarr", 5},
+ {0, "upuparrows", 10}, {0, "rrarr", 5}, {0, "downdownarrows", 14}, {0, "leftrightharpoons", 17},
+ {0, "rightleftharpoons", 17}, {0, "nLeftarrow", 10}, {0, "nhArr", 5}, {0, "nrArr", 5},
+ {0, "DoubleLeftArrow", 15}, {0, "DoubleUpArrow", 13}, {0, "Implies", 7}, {0, "Downarrow", 9},
+ {0, "hArr", 4}, {0, "Updownarrow", 11}, {0, "nwArr", 5}, {0, "neArr", 5},
+ {0, "seArr", 5}, {0, "swArr", 5}, {0, "lAarr", 5}, {0, "rAarr", 5},
+ {0, NULL, 0}, {0, "zigrarr", 7}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "LeftArrowBar", 12}, {0, "RightArrowBar", 13}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, "DownArrowUpArrow", 16}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, "loarr", 5}, {0, "roarr", 5}, {0, "hoarr", 5},
+};
+
+static const entity_stage3_row stage3_table_html5_02200[] = {
+ {0, "forall", 6}, {0, "comp", 4}, {1, (void*)multi_cp_html5_02202}, {0, "Exists", 6},
+ {0, "nexist", 6}, {0, "empty", 5}, {0, NULL, 0}, {0, "nabla", 5},
+ {0, "isinv", 5}, {0, "notin", 5}, {0, NULL, 0}, {0, "ReverseElement", 14},
+ {0, "notniva", 7}, {0, NULL, 0}, {0, NULL, 0}, {0, "prod", 4},
+ {0, "Coproduct", 9}, {0, "sum", 3}, {0, "minus", 5}, {0, "MinusPlus", 9},
+ {0, "plusdo", 6}, {0, NULL, 0}, {0, "ssetmn", 6}, {0, "lowast", 6},
+ {0, "compfn", 6}, {0, NULL, 0}, {0, "Sqrt", 4}, {0, NULL, 0},
+ {0, NULL, 0}, {0, "prop", 4}, {0, "infin", 5}, {0, "angrt", 5},
+ {1, (void*)multi_cp_html5_02220}, {0, "angmsd", 6}, {0, "angsph", 6}, {0, "mid", 3},
+ {0, "nshortmid", 9}, {0, "shortparallel", 13}, {0, "nparallel", 9}, {0, "and", 3},
+ {0, "or", 2}, {1, (void*)multi_cp_html5_02229}, {1, (void*)multi_cp_html5_0222A}, {0, "Integral", 8},
+ {0, "Int", 3}, {0, "tint", 4}, {0, "ContourIntegral", 15}, {0, "DoubleContourIntegral", 21},
+ {0, "Cconint", 7}, {0, "cwint", 5}, {0, "cwconint", 8}, {0, "awconint", 8},
+ {0, "there4", 6}, {0, "Because", 7}, {0, "ratio", 5}, {0, "Colon", 5},
+ {0, "minusd", 6}, {0, NULL, 0}, {0, "mDDot", 5}, {0, "homtht", 6},
+ {1, (void*)multi_cp_html5_0223C}, {1, (void*)multi_cp_html5_0223D}, {1, (void*)multi_cp_html5_0223E}, {0, "acd", 3},
+};
+
+static const entity_stage3_row stage3_table_html5_02240[] = {
+ {0, "wr", 2}, {0, "NotTilde", 8}, {1, (void*)multi_cp_html5_02242}, {0, "simeq", 5},
+ {0, "nsime", 5}, {0, "TildeFullEqual", 14}, {0, "simne", 5}, {0, "ncong", 5},
+ {0, "approx", 6}, {0, "napprox", 7}, {0, "ape", 3}, {1, (void*)multi_cp_html5_0224B},
+ {0, "bcong", 5}, {1, (void*)multi_cp_html5_0224D}, {1, (void*)multi_cp_html5_0224E}, {1, (void*)multi_cp_html5_0224F},
+ {1, (void*)multi_cp_html5_02250}, {0, "doteqdot", 8}, {0, "fallingdotseq", 13}, {0, "risingdotseq", 12},
+ {0, "coloneq", 7}, {0, "eqcolon", 7}, {0, "ecir", 4}, {0, "circeq", 6},
+ {0, NULL, 0}, {0, "wedgeq", 6}, {0, "veeeq", 5}, {0, NULL, 0},
+ {0, "triangleq", 9}, {0, NULL, 0}, {0, NULL, 0}, {0, "equest", 6},
+ {0, "NotEqual", 8}, {1, (void*)multi_cp_html5_02261}, {0, "NotCongruent", 12}, {0, NULL, 0},
+ {1, (void*)multi_cp_html5_02264}, {1, (void*)multi_cp_html5_02265}, {1, (void*)multi_cp_html5_02266}, {1, (void*)multi_cp_html5_02267},
+ {1, (void*)multi_cp_html5_02268}, {1, (void*)multi_cp_html5_02269}, {1, (void*)multi_cp_html5_0226A}, {1, (void*)multi_cp_html5_0226B},
+ {0, "between", 7}, {0, "NotCupCap", 9}, {0, "NotLess", 7}, {0, "ngtr", 4},
+ {0, "NotLessEqual", 12}, {0, "ngeq", 4}, {0, "LessTilde", 9}, {0, "GreaterTilde", 12},
+ {0, "nlsim", 5}, {0, "ngsim", 5}, {0, "lessgtr", 7}, {0, "gl", 2},
+ {0, "ntlg", 4}, {0, "NotGreaterLess", 14}, {0, "prec", 4}, {0, "succ", 4},
+ {0, "PrecedesSlantEqual", 18}, {0, "succcurlyeq", 11}, {0, "precsim", 7}, {1, (void*)multi_cp_html5_0227F},
+};
+
+static const entity_stage3_row stage3_table_html5_02280[] = {
+ {0, "npr", 3}, {0, "NotSucceeds", 11}, {1, (void*)multi_cp_html5_02282}, {1, (void*)multi_cp_html5_02283},
+ {0, "nsub", 4}, {0, "nsup", 4}, {0, "SubsetEqual", 11}, {0, "supe", 4},
+ {0, "NotSubsetEqual", 14}, {0, "NotSupersetEqual", 16}, {1, (void*)multi_cp_html5_0228A}, {1, (void*)multi_cp_html5_0228B},
+ {0, NULL, 0}, {0, "cupdot", 6}, {0, "UnionPlus", 9}, {1, (void*)multi_cp_html5_0228F},
+ {1, (void*)multi_cp_html5_02290}, {0, "SquareSubsetEqual", 17}, {0, "SquareSupersetEqual", 19}, {1, (void*)multi_cp_html5_02293},
+ {1, (void*)multi_cp_html5_02294}, {0, "CirclePlus", 10}, {0, "ominus", 6}, {0, "CircleTimes", 11},
+ {0, "osol", 4}, {0, "CircleDot", 9}, {0, "ocir", 4}, {0, "oast", 4},
+ {0, NULL, 0}, {0, "odash", 5}, {0, "boxplus", 7}, {0, "boxminus", 8},
+ {0, "timesb", 6}, {0, "sdotb", 5}, {0, "vdash", 5}, {0, "dashv", 5},
+ {0, "DownTee", 7}, {0, "perp", 4}, {0, NULL, 0}, {0, "models", 6},
+ {0, "DoubleRightTee", 14}, {0, "Vdash", 5}, {0, "Vvdash", 6}, {0, "VDash", 5},
+ {0, "nvdash", 6}, {0, "nvDash", 6}, {0, "nVdash", 6}, {0, "nVDash", 6},
+ {0, "prurel", 6}, {0, NULL, 0}, {0, "vartriangleleft", 15}, {0, "vrtri", 5},
+ {1, (void*)multi_cp_html5_022B4}, {1, (void*)multi_cp_html5_022B5}, {0, "origof", 6}, {0, "imof", 4},
+ {0, "mumap", 5}, {0, "hercon", 6}, {0, "intcal", 6}, {0, "veebar", 6},
+ {0, NULL, 0}, {0, "barvee", 6}, {0, "angrtvb", 7}, {0, "lrtri", 5},
+};
+
+static const entity_stage3_row stage3_table_html5_022C0[] = {
+ {0, "xwedge", 6}, {0, "xvee", 4}, {0, "bigcap", 6}, {0, "bigcup", 6},
+ {0, "diamond", 7}, {0, "sdot", 4}, {0, "Star", 4}, {0, "divonx", 6},
+ {0, "bowtie", 6}, {0, "ltimes", 6}, {0, "rtimes", 6}, {0, "lthree", 6},
+ {0, "rthree", 6}, {0, "backsimeq", 9}, {0, "curlyvee", 8}, {0, "curlywedge", 10},
+ {0, "Sub", 3}, {0, "Supset", 6}, {0, "Cap", 3}, {0, "Cup", 3},
+ {0, "pitchfork", 9}, {0, "epar", 4}, {0, "lessdot", 7}, {0, "gtrdot", 6},
+ {1, (void*)multi_cp_html5_022D8}, {1, (void*)multi_cp_html5_022D9}, {1, (void*)multi_cp_html5_022DA}, {1, (void*)multi_cp_html5_022DB},
+ {0, NULL, 0}, {0, NULL, 0}, {0, "curlyeqprec", 11}, {0, "cuesc", 5},
+ {0, "NotPrecedesSlantEqual", 21}, {0, "NotSucceedsSlantEqual", 21}, {0, "NotSquareSubsetEqual", 20}, {0, "NotSquareSupersetEqual", 22},
+ {0, NULL, 0}, {0, NULL, 0}, {0, "lnsim", 5}, {0, "gnsim", 5},
+ {0, "precnsim", 8}, {0, "scnsim", 6}, {0, "nltri", 5}, {0, "ntriangleright", 14},
+ {0, "nltrie", 6}, {0, "NotRightTriangleEqual", 21}, {0, "vellip", 6}, {0, "ctdot", 5},
+ {0, "utdot", 5}, {0, "dtdot", 5}, {0, "disin", 5}, {0, "isinsv", 6},
+ {0, "isins", 5}, {1, (void*)multi_cp_html5_022F5}, {0, "notinvc", 7}, {0, "notinvb", 7},
+ {0, NULL, 0}, {1, (void*)multi_cp_html5_022F9}, {0, "nisd", 4}, {0, "xnis", 4},
+ {0, "nis", 3}, {0, "notnivc", 7}, {0, "notnivb", 7}, {0, NULL, 0},
+};
+
+static const entity_stage3_row stage3_table_html5_02300[] = {
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, "barwed", 6}, {0, "doublebarwedge", 14}, {0, NULL, 0},
+ {0, "lceil", 5}, {0, "RightCeiling", 12}, {0, "LeftFloor", 9}, {0, "RightFloor", 10},
+ {0, "drcrop", 6}, {0, "dlcrop", 6}, {0, "urcrop", 6}, {0, "ulcrop", 6},
+ {0, "bnot", 4}, {0, NULL, 0}, {0, "profline", 8}, {0, "profsurf", 8},
+ {0, NULL, 0}, {0, "telrec", 6}, {0, "target", 6}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "ulcorner", 8}, {0, "urcorner", 8}, {0, "llcorner", 8}, {0, "drcorn", 6},
+ {0, NULL, 0}, {0, NULL, 0}, {0, "frown", 5}, {0, "smile", 5},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, "cylcty", 6}, {0, "profalar", 8}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, "topbot", 6}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, "ovbar", 5}, {0, NULL, 0}, {0, "solbar", 6},
+};
+
+static const entity_stage3_row stage3_table_html5_02340[] = {
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "angzarr", 7}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+};
+
+static const entity_stage3_row stage3_table_html5_02380[] = {
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "lmoust", 6}, {0, "rmoust", 6}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "OverBracket", 11}, {0, "bbrk", 4}, {0, "bbrktbrk", 8}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+};
+
+static const entity_stage3_row stage3_table_html5_023C0[] = {
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "OverParenthesis", 15}, {0, "UnderParenthesis", 16}, {0, "OverBrace", 9}, {0, "UnderBrace", 10},
+ {0, NULL, 0}, {0, NULL, 0}, {0, "trpezium", 8}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, "elinters", 8},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+};
+
+static const entity_stage3_row stage3_table_html5_02400[] = {
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, "blank", 5},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+};
+
+static const entity_stage3_row stage3_table_html5_024C0[] = {
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "oS", 2}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+};
+
+static const entity_stage3_row stage3_table_html5_02500[] = {
+ {0, "HorizontalLine", 14}, {0, NULL, 0}, {0, "boxv", 4}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "boxdr", 5}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "boxdl", 5}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "boxur", 5}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "boxul", 5}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "boxvr", 5}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "boxvl", 5}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "boxhd", 5}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "boxhu", 5}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "boxvh", 5}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+};
+
+static const entity_stage3_row stage3_table_html5_02540[] = {
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "boxH", 4}, {0, "boxV", 4}, {0, "boxdR", 5}, {0, "boxDr", 5},
+ {0, "boxDR", 5}, {0, "boxdL", 5}, {0, "boxDl", 5}, {0, "boxDL", 5},
+ {0, "boxuR", 5}, {0, "boxUr", 5}, {0, "boxUR", 5}, {0, "boxuL", 5},
+ {0, "boxUl", 5}, {0, "boxUL", 5}, {0, "boxvR", 5}, {0, "boxVr", 5},
+ {0, "boxVR", 5}, {0, "boxvL", 5}, {0, "boxVl", 5}, {0, "boxVL", 5},
+ {0, "boxHd", 5}, {0, "boxhD", 5}, {0, "boxHD", 5}, {0, "boxHu", 5},
+ {0, "boxhU", 5}, {0, "boxHU", 5}, {0, "boxvH", 5}, {0, "boxVh", 5},
+ {0, "boxVH", 5}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+};
+
+static const entity_stage3_row stage3_table_html5_02580[] = {
+ {0, "uhblk", 5}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "lhblk", 5}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "block", 5}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, "blk14", 5}, {0, "blk12", 5}, {0, "blk34", 5},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, "Square", 6}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, "squarf", 6}, {0, "EmptyVerySmallSquare", 20},
+ {0, NULL, 0}, {0, "rect", 4}, {0, "marker", 6}, {0, NULL, 0},
+ {0, NULL, 0}, {0, "fltns", 5}, {0, NULL, 0}, {0, "bigtriangleup", 13},
+ {0, "blacktriangle", 13}, {0, "triangle", 8}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "blacktriangleright", 18}, {0, "rtri", 4}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, "bigtriangledown", 15}, {0, "blacktriangledown", 17}, {0, "triangledown", 12},
+};
+
+static const entity_stage3_row stage3_table_html5_025C0[] = {
+ {0, NULL, 0}, {0, NULL, 0}, {0, "blacktriangleleft", 17}, {0, "ltri", 4},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, "lozenge", 7}, {0, "cir", 3},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "tridot", 6}, {0, NULL, 0}, {0, NULL, 0}, {0, "bigcirc", 7},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "ultri", 5}, {0, "urtri", 5}, {0, "lltri", 5}, {0, "EmptySmallSquare", 16},
+ {0, "FilledSmallSquare", 17}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+};
+
+static const entity_stage3_row stage3_table_html5_02600[] = {
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, "starf", 5}, {0, "star", 4}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, "phone", 5}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+};
+
+static const entity_stage3_row stage3_table_html5_02640[] = {
+ {0, "female", 6}, {0, NULL, 0}, {0, "male", 4}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "spadesuit", 9}, {0, NULL, 0}, {0, NULL, 0}, {0, "clubs", 5},
+ {0, NULL, 0}, {0, "hearts", 6}, {0, "diamondsuit", 11}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, "sung", 4}, {0, NULL, 0},
+ {0, NULL, 0}, {0, "flat", 4}, {0, "natur", 5}, {0, "sharp", 5},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+};
+
+static const entity_stage3_row stage3_table_html5_02700[] = {
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, "check", 5},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, "cross", 5},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "maltese", 7}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, "sext", 4}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
};
+static const entity_stage3_row stage3_table_html5_02740[] = {
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "VerticalSeparator", 17}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, "lbbrk", 5}, {0, "rbbrk", 5},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+};
+
+static const entity_stage3_row stage3_table_html5_027C0[] = {
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "bsolhsub", 8}, {0, "suphsol", 7}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, "LeftDoubleBracket", 17}, {0, "RightDoubleBracket", 18},
+ {0, "langle", 6}, {0, "RightAngleBracket", 17}, {0, "Lang", 4}, {0, "Rang", 4},
+ {0, "loang", 5}, {0, "roang", 5}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, "longleftarrow", 13}, {0, "LongRightArrow", 14}, {0, "LongLeftRightArrow", 18},
+ {0, "xlArr", 5}, {0, "DoubleLongRightArrow", 20}, {0, "xhArr", 5}, {0, NULL, 0},
+ {0, "xmap", 4}, {0, NULL, 0}, {0, NULL, 0}, {0, "dzigrarr", 8},
+};
+
+static const entity_stage3_row stage3_table_html5_02900[] = {
+ {0, NULL, 0}, {0, NULL, 0}, {0, "nvlArr", 6}, {0, "nvrArr", 6},
+ {0, "nvHarr", 6}, {0, "Map", 3}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "lbarr", 5}, {0, "bkarow", 6}, {0, "lBarr", 5}, {0, "dbkarow", 7},
+ {0, "drbkarow", 8}, {0, "DDotrahd", 8}, {0, "UpArrowBar", 10}, {0, "DownArrowBar", 12},
+ {0, NULL, 0}, {0, NULL, 0}, {0, "Rarrtl", 6}, {0, NULL, 0},
+ {0, NULL, 0}, {0, "latail", 6}, {0, "ratail", 6}, {0, "lAtail", 6},
+ {0, "rAtail", 6}, {0, "larrfs", 6}, {0, "rarrfs", 6}, {0, "larrbfs", 7},
+ {0, "rarrbfs", 7}, {0, NULL, 0}, {0, NULL, 0}, {0, "nwarhk", 6},
+ {0, "nearhk", 6}, {0, "searhk", 6}, {0, "swarhk", 6}, {0, "nwnear", 6},
+ {0, "toea", 4}, {0, "seswar", 6}, {0, "swnwar", 6}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {1, (void*)multi_cp_html5_02933},
+ {0, NULL, 0}, {0, "cudarrr", 7}, {0, "ldca", 4}, {0, "rdca", 4},
+ {0, "cudarrl", 7}, {0, "larrpl", 6}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "curarrm", 7}, {0, "cularrp", 7}, {0, NULL, 0}, {0, NULL, 0},
+};
+
+static const entity_stage3_row stage3_table_html5_02940[] = {
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, "rarrpl", 6}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "harrcir", 7}, {0, "Uarrocir", 8}, {0, "lurdshar", 8}, {0, "ldrushar", 8},
+ {0, NULL, 0}, {0, NULL, 0}, {0, "LeftRightVector", 15}, {0, "RightUpDownVector", 17},
+ {0, "DownLeftRightVector", 19}, {0, "LeftUpDownVector", 16}, {0, "LeftVectorBar", 13}, {0, "RightVectorBar", 14},
+ {0, "RightUpVectorBar", 16}, {0, "RightDownVectorBar", 18}, {0, "DownLeftVectorBar", 17}, {0, "DownRightVectorBar", 18},
+ {0, "LeftUpVectorBar", 15}, {0, "LeftDownVectorBar", 17}, {0, "LeftTeeVector", 13}, {0, "RightTeeVector", 14},
+ {0, "RightUpTeeVector", 16}, {0, "RightDownTeeVector", 18}, {0, "DownLeftTeeVector", 17}, {0, "DownRightTeeVector", 18},
+ {0, "LeftUpTeeVector", 15}, {0, "LeftDownTeeVector", 17}, {0, "lHar", 4}, {0, "uHar", 4},
+ {0, "rHar", 4}, {0, "dHar", 4}, {0, "luruhar", 7}, {0, "ldrdhar", 7},
+ {0, "ruluhar", 7}, {0, "rdldhar", 7}, {0, "lharul", 6}, {0, "llhard", 6},
+ {0, "rharul", 6}, {0, "lrhard", 6}, {0, "udhar", 5}, {0, "ReverseUpEquilibrium", 20},
+ {0, "RoundImplies", 12}, {0, "erarr", 5}, {0, "simrarr", 7}, {0, "larrsim", 7},
+ {0, "rarrsim", 7}, {0, "rarrap", 6}, {0, "ltlarr", 6}, {0, NULL, 0},
+ {0, "gtrarr", 6}, {0, "subrarr", 7}, {0, NULL, 0}, {0, "suplarr", 7},
+ {0, "lfisht", 6}, {0, "rfisht", 6}, {0, "ufisht", 6}, {0, "dfisht", 6},
+};
+
+static const entity_stage3_row stage3_table_html5_02980[] = {
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, "lopar", 5}, {0, "ropar", 5}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, "lbrke", 5},
+ {0, "rbrke", 5}, {0, "lbrkslu", 7}, {0, "rbrksld", 7}, {0, "lbrksld", 7},
+ {0, "rbrkslu", 7}, {0, "langd", 5}, {0, "rangd", 5}, {0, "lparlt", 6},
+ {0, "rpargt", 6}, {0, "gtlPar", 6}, {0, "ltrPar", 6}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, "vzigzag", 7}, {0, NULL, 0},
+ {0, "vangrt", 6}, {0, "angrtvbd", 8}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "ange", 4}, {0, "range", 5}, {0, "dwangle", 7}, {0, "uwangle", 7},
+ {0, "angmsdaa", 8}, {0, "angmsdab", 8}, {0, "angmsdac", 8}, {0, "angmsdad", 8},
+ {0, "angmsdae", 8}, {0, "angmsdaf", 8}, {0, "angmsdag", 8}, {0, "angmsdah", 8},
+ {0, "bemptyv", 7}, {0, "demptyv", 7}, {0, "cemptyv", 7}, {0, "raemptyv", 8},
+ {0, "laemptyv", 8}, {0, "ohbar", 5}, {0, "omid", 4}, {0, "opar", 4},
+ {0, NULL, 0}, {0, "operp", 5}, {0, NULL, 0}, {0, "olcross", 7},
+ {0, "odsold", 6}, {0, NULL, 0}, {0, "olcir", 5}, {0, "ofcir", 5},
+};
+
+static const entity_stage3_row stage3_table_html5_029C0[] = {
+ {0, "olt", 3}, {0, "ogt", 3}, {0, "cirscir", 7}, {0, "cirE", 4},
+ {0, "solb", 4}, {0, "bsolb", 5}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, "boxbox", 6}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, "trisb", 5}, {0, "rtriltri", 8}, {1, (void*)multi_cp_html5_029CF},
+ {1, (void*)multi_cp_html5_029D0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "iinfin", 6}, {0, "infintie", 8}, {0, "nvinfin", 7}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, "eparsl", 6},
+ {0, "smeparsl", 8}, {0, "eqvparsl", 8}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, "lozf", 4},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "RuleDelayed", 11}, {0, NULL, 0}, {0, "dsol", 4}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+};
+
+static const entity_stage3_row stage3_table_html5_02A00[] = {
+ {0, "xodot", 5}, {0, "bigoplus", 8}, {0, "bigotimes", 9}, {0, NULL, 0},
+ {0, "biguplus", 8}, {0, NULL, 0}, {0, "bigsqcup", 8}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "iiiint", 6}, {0, "fpartint", 8}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "cirfnint", 8}, {0, "awint", 5}, {0, "rppolint", 8}, {0, "scpolint", 8},
+ {0, "npolint", 7}, {0, "pointint", 8}, {0, "quatint", 7}, {0, "intlarhk", 8},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, "pluscir", 7}, {0, "plusacir", 8},
+ {0, "simplus", 7}, {0, "plusdu", 6}, {0, "plussim", 7}, {0, "plustwo", 7},
+ {0, NULL, 0}, {0, "mcomma", 6}, {0, "minusdu", 7}, {0, NULL, 0},
+ {0, NULL, 0}, {0, "loplus", 6}, {0, "roplus", 6}, {0, "Cross", 5},
+ {0, "timesd", 6}, {0, "timesbar", 8}, {0, NULL, 0}, {0, "smashp", 6},
+ {0, "lotimes", 7}, {0, "rotimes", 7}, {0, "otimesas", 8}, {0, "Otimes", 6},
+ {0, "odiv", 4}, {0, "triplus", 7}, {0, "triminus", 8}, {0, "tritime", 7},
+ {0, "iprod", 5}, {0, NULL, 0}, {0, NULL, 0}, {0, "amalg", 5},
+};
+
+static const entity_stage3_row stage3_table_html5_02A40[] = {
+ {0, "capdot", 6}, {0, NULL, 0}, {0, "ncup", 4}, {0, "ncap", 4},
+ {0, "capand", 6}, {0, "cupor", 5}, {0, "cupcap", 6}, {0, "capcup", 6},
+ {0, "cupbrcap", 8}, {0, "capbrcup", 8}, {0, "cupcup", 6}, {0, "capcap", 6},
+ {0, "ccups", 5}, {0, "ccaps", 5}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "ccupssm", 7}, {0, NULL, 0}, {0, NULL, 0}, {0, "And", 3},
+ {0, "Or", 2}, {0, "andand", 6}, {0, "oror", 4}, {0, "orslope", 7},
+ {0, "andslope", 8}, {0, NULL, 0}, {0, "andv", 4}, {0, "orv", 3},
+ {0, "andd", 4}, {0, "ord", 3}, {0, NULL, 0}, {0, "wedbar", 6},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, "sdote", 5}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, "simdot", 6}, {0, NULL, 0},
+ {0, NULL, 0}, {1, (void*)multi_cp_html5_02A6D}, {0, "easter", 6}, {0, "apacir", 6},
+ {1, (void*)multi_cp_html5_02A70}, {0, "eplus", 5}, {0, "pluse", 5}, {0, "Esim", 4},
+ {0, "Colone", 6}, {0, "Equal", 5}, {0, NULL, 0}, {0, "ddotseq", 7},
+ {0, "equivDD", 7}, {0, "ltcir", 5}, {0, "gtcir", 5}, {0, "ltquest", 7},
+ {0, "gtquest", 7}, {1, (void*)multi_cp_html5_02A7D}, {1, (void*)multi_cp_html5_02A7E}, {0, "lesdot", 6},
+};
+
+static const entity_stage3_row stage3_table_html5_02A80[] = {
+ {0, "gesdot", 6}, {0, "lesdoto", 7}, {0, "gesdoto", 7}, {0, "lesdotor", 8},
+ {0, "gesdotol", 8}, {0, "lap", 3}, {0, "gap", 3}, {0, "lne", 3},
+ {0, "gne", 3}, {0, "lnap", 4}, {0, "gnap", 4}, {0, "lesseqqgtr", 10},
+ {0, "gEl", 3}, {0, "lsime", 5}, {0, "gsime", 5}, {0, "lsimg", 5},
+ {0, "gsiml", 5}, {0, "lgE", 3}, {0, "glE", 3}, {0, "lesges", 6},
+ {0, "gesles", 6}, {0, "els", 3}, {0, "egs", 3}, {0, "elsdot", 6},
+ {0, "egsdot", 6}, {0, "el", 2}, {0, "eg", 2}, {0, NULL, 0},
+ {0, NULL, 0}, {0, "siml", 4}, {0, "simg", 4}, {0, "simlE", 5},
+ {0, "simgE", 5}, {1, (void*)multi_cp_html5_02AA1}, {1, (void*)multi_cp_html5_02AA2}, {0, NULL, 0},
+ {0, "glj", 3}, {0, "gla", 3}, {0, "ltcc", 4}, {0, "gtcc", 4},
+ {0, "lescc", 5}, {0, "gescc", 5}, {0, "smt", 3}, {0, "lat", 3},
+ {1, (void*)multi_cp_html5_02AAC}, {1, (void*)multi_cp_html5_02AAD}, {0, "bumpE", 5}, {1, (void*)multi_cp_html5_02AAF},
+ {1, (void*)multi_cp_html5_02AB0}, {0, NULL, 0}, {0, NULL, 0}, {0, "prE", 3},
+ {0, "scE", 3}, {0, "precneqq", 8}, {0, "scnE", 4}, {0, "precapprox", 10},
+ {0, "succapprox", 10}, {0, "precnapprox", 11}, {0, "succnapprox", 11}, {0, "Pr", 2},
+ {0, "Sc", 2}, {0, "subdot", 6}, {0, "supdot", 6}, {0, "subplus", 7},
+};
+
+static const entity_stage3_row stage3_table_html5_02AC0[] = {
+ {0, "supplus", 7}, {0, "submult", 7}, {0, "supmult", 7}, {0, "subedot", 7},
+ {0, "supedot", 7}, {1, (void*)multi_cp_html5_02AC5}, {1, (void*)multi_cp_html5_02AC6}, {0, "subsim", 6},
+ {0, "supsim", 6}, {0, NULL, 0}, {0, NULL, 0}, {1, (void*)multi_cp_html5_02ACB},
+ {1, (void*)multi_cp_html5_02ACC}, {0, NULL, 0}, {0, NULL, 0}, {0, "csub", 4},
+ {0, "csup", 4}, {0, "csube", 5}, {0, "csupe", 5}, {0, "subsup", 6},
+ {0, "supsub", 6}, {0, "subsub", 6}, {0, "supsup", 6}, {0, "suphsub", 7},
+ {0, "supdsub", 7}, {0, "forkv", 5}, {0, "topfork", 7}, {0, "mlcp", 4},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "Dashv", 5}, {0, NULL, 0}, {0, "Vdashl", 6}, {0, "Barv", 4},
+ {0, "vBar", 4}, {0, "vBarv", 5}, {0, NULL, 0}, {0, "Vbar", 4},
+ {0, "Not", 3}, {0, "bNot", 4}, {0, "rnmid", 5}, {0, "cirmid", 6},
+ {0, "midcir", 6}, {0, "topcir", 6}, {0, "nhpar", 5}, {0, "parsim", 6},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {1, (void*)multi_cp_html5_02AFD}, {0, NULL, 0}, {0, NULL, 0},
+};
+
+static const entity_stage3_row stage3_table_html5_0FB00[] = {
+ {0, "fflig", 5}, {0, "filig", 5}, {0, "fllig", 5}, {0, "ffilig", 6},
+ {0, "ffllig", 6}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+};
+
+static const entity_stage3_row stage3_table_html5_1D480[] = {
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "Ascr", 4}, {0, NULL, 0}, {0, "Cscr", 4}, {0, "Dscr", 4},
+ {0, NULL, 0}, {0, NULL, 0}, {0, "Gscr", 4}, {0, NULL, 0},
+ {0, NULL, 0}, {0, "Jscr", 4}, {0, "Kscr", 4}, {0, NULL, 0},
+ {0, NULL, 0}, {0, "Nscr", 4}, {0, "Oscr", 4}, {0, "Pscr", 4},
+ {0, "Qscr", 4}, {0, NULL, 0}, {0, "Sscr", 4}, {0, "Tscr", 4},
+ {0, "Uscr", 4}, {0, "Vscr", 4}, {0, "Wscr", 4}, {0, "Xscr", 4},
+ {0, "Yscr", 4}, {0, "Zscr", 4}, {0, "ascr", 4}, {0, "bscr", 4},
+ {0, "cscr", 4}, {0, "dscr", 4}, {0, NULL, 0}, {0, "fscr", 4},
+ {0, NULL, 0}, {0, "hscr", 4}, {0, "iscr", 4}, {0, "jscr", 4},
+};
+
+static const entity_stage3_row stage3_table_html5_1D4C0[] = {
+ {0, "kscr", 4}, {0, "lscr", 4}, {0, "mscr", 4}, {0, "nscr", 4},
+ {0, NULL, 0}, {0, "pscr", 4}, {0, "qscr", 4}, {0, "rscr", 4},
+ {0, "sscr", 4}, {0, "tscr", 4}, {0, "uscr", 4}, {0, "vscr", 4},
+ {0, "wscr", 4}, {0, "xscr", 4}, {0, "yscr", 4}, {0, "zscr", 4},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+};
+
+static const entity_stage3_row stage3_table_html5_1D500[] = {
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "Afr", 3}, {0, "Bfr", 3}, {0, NULL, 0}, {0, "Dfr", 3},
+ {0, "Efr", 3}, {0, "Ffr", 3}, {0, "Gfr", 3}, {0, NULL, 0},
+ {0, NULL, 0}, {0, "Jfr", 3}, {0, "Kfr", 3}, {0, "Lfr", 3},
+ {0, "Mfr", 3}, {0, "Nfr", 3}, {0, "Ofr", 3}, {0, "Pfr", 3},
+ {0, "Qfr", 3}, {0, NULL, 0}, {0, "Sfr", 3}, {0, "Tfr", 3},
+ {0, "Ufr", 3}, {0, "Vfr", 3}, {0, "Wfr", 3}, {0, "Xfr", 3},
+ {0, "Yfr", 3}, {0, NULL, 0}, {0, "afr", 3}, {0, "bfr", 3},
+ {0, "cfr", 3}, {0, "dfr", 3}, {0, "efr", 3}, {0, "ffr", 3},
+ {0, "gfr", 3}, {0, "hfr", 3}, {0, "ifr", 3}, {0, "jfr", 3},
+ {0, "kfr", 3}, {0, "lfr", 3}, {0, "mfr", 3}, {0, "nfr", 3},
+ {0, "ofr", 3}, {0, "pfr", 3}, {0, "qfr", 3}, {0, "rfr", 3},
+ {0, "sfr", 3}, {0, "tfr", 3}, {0, "ufr", 3}, {0, "vfr", 3},
+ {0, "wfr", 3}, {0, "xfr", 3}, {0, "yfr", 3}, {0, "zfr", 3},
+ {0, "Aopf", 4}, {0, "Bopf", 4}, {0, NULL, 0}, {0, "Dopf", 4},
+ {0, "Eopf", 4}, {0, "Fopf", 4}, {0, "Gopf", 4}, {0, NULL, 0},
+};
+
+static const entity_stage3_row stage3_table_html5_1D540[] = {
+ {0, "Iopf", 4}, {0, "Jopf", 4}, {0, "Kopf", 4}, {0, "Lopf", 4},
+ {0, "Mopf", 4}, {0, NULL, 0}, {0, "Oopf", 4}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, "Sopf", 4}, {0, "Topf", 4},
+ {0, "Uopf", 4}, {0, "Vopf", 4}, {0, "Wopf", 4}, {0, "Xopf", 4},
+ {0, "Yopf", 4}, {0, NULL, 0}, {0, "aopf", 4}, {0, "bopf", 4},
+ {0, "copf", 4}, {0, "dopf", 4}, {0, "eopf", 4}, {0, "fopf", 4},
+ {0, "gopf", 4}, {0, "hopf", 4}, {0, "iopf", 4}, {0, "jopf", 4},
+ {0, "kopf", 4}, {0, "lopf", 4}, {0, "mopf", 4}, {0, "nopf", 4},
+ {0, "oopf", 4}, {0, "popf", 4}, {0, "qopf", 4}, {0, "ropf", 4},
+ {0, "sopf", 4}, {0, "topf", 4}, {0, "uopf", 4}, {0, "vopf", 4},
+ {0, "wopf", 4}, {0, "xopf", 4}, {0, "yopf", 4}, {0, "zopf", 4},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+};
+
+/* end of stage 3 Tables for HTML5 }}} */
+
+/* {{{ Stage 2 Tables for HTML5 */
+
+static const entity_stage2_row empty_stage2_table[] = {
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+};
+static const entity_stage2_row stage2_table_html5_00000[] = {
+ stage3_table_html5_00000, stage3_table_html5_00040, stage3_table_html5_00080, stage3_table_html5_000C0,
+ stage3_table_html5_00100, stage3_table_html5_00140, stage3_table_html5_00180, stage3_table_html5_001C0,
+ stage3_table_html5_00200, empty_stage3_table, empty_stage3_table, stage3_table_html5_002C0,
+ stage3_table_html5_00300, empty_stage3_table, stage3_table_html5_00380, stage3_table_html5_003C0,
+ stage3_table_html5_00400, stage3_table_html5_00440, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+};
+
+static const entity_stage2_row stage2_table_html5_02000[] = {
+ stage3_table_html5_02000, stage3_table_html5_02040, stage3_table_html5_02080, stage3_table_html5_020C0,
+ stage3_table_html5_02100, stage3_table_html5_02140, stage3_table_html5_02180, stage3_table_html5_021C0,
+ stage3_table_html5_02200, stage3_table_html5_02240, stage3_table_html5_02280, stage3_table_html5_022C0,
+ stage3_table_html5_02300, stage3_table_html5_02340, stage3_table_html5_02380, stage3_table_html5_023C0,
+ stage3_table_html5_02400, empty_stage3_table, empty_stage3_table, stage3_table_html5_024C0,
+ stage3_table_html5_02500, stage3_table_html5_02540, stage3_table_html5_02580, stage3_table_html5_025C0,
+ stage3_table_html5_02600, stage3_table_html5_02640, empty_stage3_table, empty_stage3_table,
+ stage3_table_html5_02700, stage3_table_html5_02740, empty_stage3_table, stage3_table_html5_027C0,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ stage3_table_html5_02900, stage3_table_html5_02940, stage3_table_html5_02980, stage3_table_html5_029C0,
+ stage3_table_html5_02A00, stage3_table_html5_02A40, stage3_table_html5_02A80, stage3_table_html5_02AC0,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+};
+
+static const entity_stage2_row stage2_table_html5_0F000[] = {
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ stage3_table_html5_0FB00, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+};
+
+static const entity_stage2_row stage2_table_html5_1D000[] = {
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, stage3_table_html5_1D480, stage3_table_html5_1D4C0,
+ stage3_table_html5_1D500, stage3_table_html5_1D540, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+};
+
+/* end of stage 2 tables for HTML5 }}} */
+
+static const entity_stage1_row entity_ms_table_html5[] = {
+ stage2_table_html5_00000,
+ empty_stage2_table,
+ stage2_table_html5_02000,
+ empty_stage2_table,
+ empty_stage2_table,
+ empty_stage2_table,
+ empty_stage2_table,
+ empty_stage2_table,
+ empty_stage2_table,
+ empty_stage2_table,
+ empty_stage2_table,
+ empty_stage2_table,
+ empty_stage2_table,
+ empty_stage2_table,
+ empty_stage2_table,
+ stage2_table_html5_0F000,
+ empty_stage2_table,
+ empty_stage2_table,
+ empty_stage2_table,
+ empty_stage2_table,
+ empty_stage2_table,
+ empty_stage2_table,
+ empty_stage2_table,
+ empty_stage2_table,
+ empty_stage2_table,
+ empty_stage2_table,
+ empty_stage2_table,
+ empty_stage2_table,
+ empty_stage2_table,
+ stage2_table_html5_1D000,
+};
+
+/* end of HTML5 multi-stage table for codepoint -> entity }}} */
+
+/* {{{ HTML5 hash table for entity -> codepoint */
+
typedef struct {
- unsigned short charcode;
- char *entity;
- int entitylen;
- int flags;
-} basic_entity_t;
-
-static const basic_entity_t basic_entities_ex[] = {
- { '&', "&amp;", 5, 0 },
- { '"', "&quot;", 6, ENT_HTML_QUOTE_DOUBLE },
- /* PHP traditionally encodes ' as &#039;, not &apos;, so leave this entry here */
- { '\'', "&#039;", 6, ENT_HTML_QUOTE_SINGLE },
- { '\'', "&apos;", 6, ENT_HTML_QUOTE_SINGLE },
- { '<', "&lt;", 4, 0 },
- { '>', "&gt;", 4, 0 },
- { 0, NULL, 0, 0 }
-};
-
-/* In some cases, we need to give special treatment to &, so we
- * use this instead */
-static const basic_entity_t *basic_entities = &basic_entities_ex[1];
+ const char *entity;
+ unsigned short entity_len;
+ unsigned int codepoint1;
+ unsigned int codepoint2;
+} entity_cp_map;
+
+typedef const entity_cp_map *entity_ht_bucket;
typedef struct {
- unsigned short un_code_point; /* we don't need bigger */
- unsigned char cs_code; /* currently, we only have maps to single-byte encodings */
-} unicode_mapping;
-
-static const unicode_mapping unimap_iso885915[] = {
- { 0xA5, 0xA5 }, /* yen sign */
- { 0xA7, 0xA7 }, /* section sign */
- { 0xA9, 0xA9 }, /* copyright sign */
- { 0xAA, 0xAA }, /* feminine ordinal indicator */
- { 0xAB, 0xAB }, /* left-pointing double angle quotation mark */
- { 0xAC, 0xAC }, /* not sign */
- { 0xAD, 0xAD }, /* soft hyphen */
- { 0xAE, 0xAE }, /* registered sign */
- { 0xAF, 0xAF }, /* macron */
- { 0xB0, 0xB0 }, /* degree sign */
- { 0xB1, 0xB1 }, /* plus-minus sign */
- { 0xB2, 0xB2 }, /* superscript two */
- { 0xB3, 0xB3 }, /* superscript three */
- { 0xB5, 0xB5 }, /* micro sign */
- { 0xB6, 0xB6 }, /* pilcrow sign */
- { 0xB7, 0xB7 }, /* middle dot */
- { 0xB9, 0xB9 }, /* superscript one */
- { 0xBA, 0xBA }, /* masculine ordinal indicator */
- { 0xBB, 0xBB }, /* right-pointing double angle quotation mark */
- { 0x152, 0xBC }, /* latin capital ligature oe */
- { 0x153, 0xBD }, /* latin small ligature oe */
- { 0x160, 0xA6 }, /* latin capital letter s with caron */
- { 0x161, 0xA8 }, /* latin small letter s with caron */
- { 0x178, 0xBE }, /* latin capital letter y with diaeresis */
- { 0x17D, 0xB4 }, /* latin capital letter z with caron */
- { 0x17E, 0xB8 }, /* latin small letter z with caron */
- { 0x20AC, 0xA4 }, /* euro sign */
+ unsigned num_elems; /* power of 2 */
+ const entity_ht_bucket *buckets; /* .num_elems elements */
+} entity_ht;
+
+static const entity_cp_map ht_bucket_empty[] = { NULL };
+static const entity_cp_map ht_bucket_html5_000[] = { {"realpart", 8, 0x0211C, 0}, {"varr", 4, 0x02195, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_001[] = { {"angrt", 5, 0x0221F, 0}, {"iogon", 5, 0x0012F, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_003[] = { {"lessdot", 7, 0x022D6, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_005[] = { {"simrarr", 7, 0x02972, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_007[] = { {"Zscr", 4, 0x1D4B5, 0}, {"midast", 6, 0x0002A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_00D[] = { {"copf", 4, 0x1D554, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_00F[] = { {"female", 6, 0x02640, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_017[] = { {"NegativeThickSpace", 18, 0x0200B, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_020[] = { {"copy", 4, 0x000A9, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_022[] = { {"angst", 5, 0x000C5, 0}, {"searr", 5, 0x02198, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_024[] = { {"sqcups", 6, 0x02294, 0x0FE00}, {NULL} };
+static const entity_cp_map ht_bucket_html5_027[] = { {"Acirc", 5, 0x000C2, 0}, {"gtdot", 5, 0x022D7, 0}, {"varpi", 5, 0x003D6, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_028[] = { {"UpTee", 5, 0x022A5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_029[] = { {"TildeTilde", 10, 0x02248, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_02A[] = { {"mfr", 3, 0x1D52A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_02B[] = { {"RightVectorBar", 14, 0x02953, 0}, {"gesdot", 6, 0x02A80, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_02C[] = { {"Uarrocir", 8, 0x02949, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_02E[] = { {"RightTriangleBar", 16, 0x029D0, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_030[] = { {"Ocy", 3, 0x0041E, 0}, {"int", 3, 0x0222B, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_034[] = { {"preccurlyeq", 11, 0x0227C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_038[] = { {"sccue", 5, 0x0227D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_040[] = { {"DoubleContourIntegral", 21, 0x0222F, 0}, {"nexist", 6, 0x02204, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_047[] = { {"acirc", 5, 0x000E2, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_04C[] = { {"setmn", 5, 0x02216, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_04E[] = { {"Dopf", 4, 0x1D53B, 0}, {"LeftTee", 7, 0x022A3, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_051[] = { {"SquareSuperset", 14, 0x02290, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_059[] = { {"udhar", 5, 0x0296E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_05D[] = { {"Equal", 5, 0x02A75, 0}, {"pscr", 4, 0x1D4C5, 0}, {"xvee", 4, 0x022C1, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_05F[] = { {"approx", 6, 0x02248, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_060[] = { {"HARDcy", 6, 0x0042A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_061[] = { {"nGg", 3, 0x022D9, 0x00338}, {NULL} };
+static const entity_cp_map ht_bucket_html5_063[] = { {"yopf", 4, 0x1D56A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_064[] = { {"prcue", 5, 0x0227C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_065[] = { {"loarr", 5, 0x021FD, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_069[] = { {"mho", 3, 0x02127, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_06A[] = { {"otimesas", 8, 0x02A36, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_06D[] = { {"capcap", 6, 0x02A4B, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_06E[] = { {"eplus", 5, 0x02A71, 0}, {"nGt", 3, 0x0226B, 0x020D2}, {NULL} };
+static const entity_cp_map ht_bucket_html5_06F[] = { {"Bumpeq", 6, 0x0224E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_071[] = { {"submult", 7, 0x02AC1, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_073[] = { {"subplus", 7, 0x02ABF, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_074[] = { {"auml", 4, 0x000E4, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_07A[] = { {"RightDoubleBracket", 18, 0x027E7, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_07B[] = { {"varkappa", 8, 0x003F0, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_07C[] = { {"plusdo", 6, 0x02214, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_07F[] = { {"mid", 3, 0x02223, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_082[] = { {"plusdu", 6, 0x02A25, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_084[] = { {"notniva", 7, 0x0220C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_085[] = { {"notnivb", 7, 0x022FE, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_086[] = { {"notnivc", 7, 0x022FD, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_088[] = { {"varepsilon", 10, 0x003F5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_089[] = { {"nspar", 5, 0x02226, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_08C[] = { {"Ofr", 3, 0x1D512, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_08E[] = { {"Omega", 5, 0x003A9, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_090[] = { {"equals", 6, 0x0003D, 0}, {"harrcir", 7, 0x02948, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_094[] = { {"Succeeds", 8, 0x0227B, 0}, {"cupdot", 6, 0x0228D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_097[] = { {"lsqb", 4, 0x0005B, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_09E[] = { {"Qscr", 4, 0x1D4AC, 0}, {"urcorn", 6, 0x0231D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_0A4[] = { {"Zopf", 4, 0x02124, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_0A6[] = { {"triangleleft", 12, 0x025C3, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_0AB[] = { {"supdsub", 7, 0x02AD8, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_0AC[] = { {"chcy", 4, 0x00447, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_0AD[] = { {"sqsupset", 8, 0x02290, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_0AE[] = { {"omega", 5, 0x003C9, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_0AF[] = { {"rthree", 6, 0x022CC, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_0B0[] = { {"THORN", 5, 0x000DE, 0}, {"clubsuit", 8, 0x02663, 0}, {"filig", 5, 0x0FB01, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_0B2[] = { {"ocir", 4, 0x0229A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_0B8[] = { {"ShortDownArrow", 14, 0x02193, 0}, {"atilde", 6, 0x000E3, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_0B9[] = { {"DownLeftTeeVector", 17, 0x0295E, 0}, {"LeftTeeArrow", 12, 0x021A4, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_0BA[] = { {"GreaterFullEqual", 16, 0x02267, 0}, {"emsp", 4, 0x02003, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_0C0[] = { {"lozf", 4, 0x029EB, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_0C4[] = { {"ThinSpace", 9, 0x02009, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_0CE[] = { {"fnof", 4, 0x00192, 0}, {"multimap", 8, 0x022B8, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_0D1[] = { {"Zacute", 6, 0x00179, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_0D2[] = { {"mdash", 5, 0x02014, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_0D3[] = { {"minusb", 6, 0x0229F, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_0D5[] = { {"minusd", 6, 0x02238, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_0DF[] = { {"varsigma", 8, 0x003C2, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_0E5[] = { {"ntilde", 6, 0x000F1, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_0E6[] = { {"Lambda", 6, 0x0039B, 0}, {"integers", 8, 0x02124, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_0E8[] = { {"gesles", 6, 0x02A94, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_0EC[] = { {"NotSubset", 9, 0x02282, 0x020D2}, {NULL} };
+static const entity_cp_map ht_bucket_html5_0EF[] = { {"NotLeftTriangleEqual", 20, 0x022EC, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_0F3[] = { {"LessLess", 8, 0x02AA1, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_0F4[] = { {"gscr", 4, 0x0210A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_0FA[] = { {"popf", 4, 0x1D561, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_0FB[] = { {"Agrave", 6, 0x000C0, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_0FD[] = { {"nvinfin", 7, 0x029DE, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_0FE[] = { {"gacute", 6, 0x001F5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_100[] = { {"diam", 4, 0x022C4, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_101[] = { {"nesim", 5, 0x02242, 0x00338}, {NULL} };
+static const entity_cp_map ht_bucket_html5_103[] = { {"YIcy", 4, 0x00407, 0}, {"bcy", 3, 0x00431, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_105[] = { {"Exists", 6, 0x02203, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_106[] = { {"vert", 4, 0x0007C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_109[] = { {"ropar", 5, 0x02986, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_10A[] = { {"topfork", 7, 0x02ADA, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_10B[] = { {"nLl", 3, 0x022D8, 0x00338}, {NULL} };
+static const entity_cp_map ht_bucket_html5_10D[] = { {"notin", 5, 0x02209, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_10E[] = { {"SucceedsSlantEqual", 18, 0x0227D, 0}, {"toea", 4, 0x02928, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_10F[] = { {"ImaginaryI", 10, 0x02148, 0}, {"srarr", 5, 0x02192, 0}, {"ulcorner", 8, 0x0231C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_110[] = { {"LeftArrowBar", 12, 0x021E4, 0}, {"ldsh", 4, 0x021B2, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_111[] = { {"DownBreve", 9, 0x00311, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_113[] = { {"nLt", 3, 0x0226A, 0x020D2}, {NULL} };
+static const entity_cp_map ht_bucket_html5_116[] = { {"vltri", 5, 0x022B2, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_11B[] = { {"VDash", 5, 0x022AB, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_11C[] = { {"Dstrok", 6, 0x00110, 0}, {"Intersection", 12, 0x022C2, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_11E[] = { {"lrhar", 5, 0x021CB, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_121[] = { {"RightTee", 8, 0x022A2, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_124[] = { {"RightArrowLeftArrow", 19, 0x021C4, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_129[] = { {"Ccirc", 5, 0x00108, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_12A[] = { {"ntrianglelefteq", 15, 0x022EC, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_12C[] = { {"leftharpoonup", 13, 0x021BC, 0}, {"scap", 4, 0x02AB8, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_12E[] = { {"darr", 4, 0x02193, 0}, {"qfr", 3, 0x1D52E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_12F[] = { {"cdot", 4, 0x0010B, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_130[] = { {"supseteqq", 9, 0x02AC6, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_134[] = { {"Scy", 3, 0x00421, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_135[] = { {"Hscr", 4, 0x0210B, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_137[] = { {"LowerRightArrow", 15, 0x02198, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_13A[] = { {"divide", 6, 0x000F7, 0}, {"tcedil", 6, 0x00163, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_13B[] = { {"LeftArrow", 9, 0x02190, 0}, {"Qopf", 4, 0x0211A, 0}, {"vDash", 5, 0x022A8, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_145[] = { {"dash", 4, 0x02010, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_147[] = { {"oror", 4, 0x02A56, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_149[] = { {"ccirc", 5, 0x00109, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_14B[] = { {"LongLeftArrow", 13, 0x027F5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_14C[] = { {"straightphi", 11, 0x003D5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_14E[] = { {"xlarr", 5, 0x027F5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_14F[] = { {"DJcy", 4, 0x00402, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_158[] = { {"nbsp", 4, 0x000A0, 0}, {"succcurlyeq", 11, 0x0227D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_159[] = { {"njcy", 4, 0x0045A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_15B[] = { {"Leftarrow", 9, 0x021D0, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_15E[] = { {"dtrif", 5, 0x025BE, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_15F[] = { {"bfr", 3, 0x1D51F, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_161[] = { {"GreaterTilde", 12, 0x02273, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_164[] = { {"hamilt", 6, 0x0210B, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_165[] = { {"Dcy", 3, 0x00414, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_168[] = { {"LeftUpVector", 12, 0x021BF, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_16A[] = { {"bigoplus", 8, 0x02A01, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_170[] = { {"nwarhk", 6, 0x02923, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_173[] = { {"diams", 5, 0x02666, 0}, {"suphsol", 7, 0x027C9, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_17A[] = { {"boxminus", 8, 0x0229F, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_17B[] = { {"leftarrow", 9, 0x02190, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_17C[] = { {"andd", 4, 0x02A5C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_17F[] = { {"NonBreakingSpace", 16, 0x000A0, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_181[] = { {"xutri", 5, 0x025B3, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_189[] = { {"Longleftrightarrow", 18, 0x027FA, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_18B[] = { {"Longleftarrow", 13, 0x027F8, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_18C[] = { {"gtrapprox", 9, 0x02A86, 0}, {"phmmat", 6, 0x02133, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_18E[] = { {"andv", 4, 0x02A5A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_18F[] = { {"equiv", 5, 0x02261, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_190[] = { {"Sfr", 3, 0x1D516, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_191[] = { {"gopf", 4, 0x1D558, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_193[] = { {"sqsub", 5, 0x0228F, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_195[] = { {"approxeq", 8, 0x0224A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_19A[] = { {"Del", 3, 0x02207, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_19C[] = { {"nrightarrow", 11, 0x0219B, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_19F[] = { {"SquareUnion", 11, 0x02294, 0}, {"strns", 5, 0x000AF, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_1A0[] = { {"Itilde", 6, 0x00128, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_1A1[] = { {"sqsup", 5, 0x02290, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_1A2[] = { {"Ouml", 4, 0x000D6, 0}, {"PrecedesTilde", 13, 0x0227E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_1A3[] = { {"AMP", 3, 0x00026, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_1A4[] = { {"plusmn", 6, 0x000B1, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_1A5[] = { {"xcup", 4, 0x022C3, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_1A8[] = { {"radic", 5, 0x0221A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_1AB[] = { {"longleftarrow", 13, 0x027F5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_1AC[] = { {"lrcorner", 8, 0x0231F, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_1AD[] = { {"notni", 5, 0x0220C, 0}, {"updownarrow", 11, 0x02195, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_1AE[] = { {"szlig", 5, 0x000DF, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_1AF[] = { {"ugrave", 6, 0x000F9, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_1B0[] = { {"imof", 4, 0x022B7, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_1B2[] = { {"csub", 4, 0x02ACF, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_1B5[] = { {"gsim", 4, 0x02273, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_1B9[] = { {"leftleftarrows", 14, 0x021C7, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_1BD[] = { {"backcong", 8, 0x0224C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_1BE[] = { {"clubs", 5, 0x02663, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_1C0[] = { {"csup", 4, 0x02AD0, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_1C1[] = { {"Dfr", 3, 0x1D507, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_1C4[] = { {"profline", 8, 0x02312, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_1C6[] = { {"Zdot", 4, 0x0017B, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_1C9[] = { {"ClockwiseContourIntegral", 24, 0x02232, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_1CA[] = { {"roplus", 6, 0x02A2E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_1CD[] = { {"Rang", 4, 0x027EB, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_1CE[] = { {"bcong", 5, 0x0224C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_1D0[] = { {"tshcy", 5, 0x0045B, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_1D1[] = { {"eDot", 4, 0x02251, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_1D2[] = { {"Hopf", 4, 0x0210D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_1D4[] = { {"lpar", 4, 0x00028, 0}, {"odash", 5, 0x0229D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_1D5[] = { {"capbrcup", 8, 0x02A49, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_1D6[] = { {"ucy", 3, 0x00443, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_1D8[] = { {"ofcir", 5, 0x029BF, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_1D9[] = { {"Breve", 5, 0x002D8, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_1DA[] = { {"barvee", 6, 0x022BD, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_1DF[] = { {"backsim", 7, 0x0223D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_1E0[] = { {"ange", 4, 0x029A4, 0}, {"half", 4, 0x000BD, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_1E1[] = { {"tscr", 4, 0x1D4C9, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_1E5[] = { {"realine", 7, 0x0211B, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_1E6[] = { {"Oacute", 6, 0x000D3, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_1E7[] = { {"dfisht", 6, 0x0297F, 0}, {"swnwar", 6, 0x0292A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_1E8[] = { {"tscy", 4, 0x00446, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_1EB[] = { {"lsquor", 6, 0x0201A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_1EF[] = { {"naturals", 8, 0x02115, 0}, {"utrif", 5, 0x025B4, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_1F0[] = { {"DiacriticalTilde", 16, 0x002DC, 0}, {"RightUpVectorBar", 16, 0x02954, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_1F2[] = { {"rHar", 4, 0x02964, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_1F4[] = { {"curlyeqprec", 11, 0x022DE, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_1F8[] = { {"dtri", 4, 0x025BF, 0}, {"euml", 4, 0x000EB, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_1F9[] = { {"breve", 5, 0x002D8, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_1FA[] = { {"Barwed", 6, 0x02306, 0}, {"nvlArr", 6, 0x02902, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_1FC[] = { {"dcaron", 6, 0x0010F, 0}, {"natural", 7, 0x0266E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_1FE[] = { {"nsupseteqq", 10, 0x02AC6, 0x00338}, {NULL} };
+static const entity_cp_map ht_bucket_html5_1FF[] = { {"nedot", 5, 0x02250, 0x00338}, {NULL} };
+static const entity_cp_map ht_bucket_html5_205[] = { {"bigtriangledown", 15, 0x025BD, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_207[] = { {"fcy", 3, 0x00444, 0}, {"marker", 6, 0x025AE, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_20E[] = { {"Union", 5, 0x022C3, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_212[] = { {"varpropto", 9, 0x0221D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_213[] = { {"CloseCurlyDoubleQuote", 21, 0x0201D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_219[] = { {"DoubleLongRightArrow", 20, 0x027F9, 0}, {"GreaterGreater", 14, 0x02AA2, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_21D[] = { {"Umacr", 5, 0x0016A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_220[] = { {"Colon", 5, 0x02237, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_222[] = { {"Hat", 3, 0x0005E, 0}, {"Uscr", 4, 0x1D4B0, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_227[] = { {"SHCHcy", 6, 0x00429, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_229[] = { {"nLeftarrow", 10, 0x021CD, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_22B[] = { {"Ecirc", 5, 0x000CA, 0}, {"Jukcy", 5, 0x00404, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_22C[] = { {"nbumpe", 6, 0x0224F, 0x00338}, {NULL} };
+static const entity_cp_map ht_bucket_html5_22D[] = { {"NotLess", 7, 0x0226E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_22F[] = { {"gtlPar", 6, 0x02995, 0}, {"suphsub", 7, 0x02AD7, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_230[] = { {"gtreqqless", 10, 0x02A8C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_232[] = { {"ufr", 3, 0x1D532, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_234[] = { {"cirscir", 7, 0x029C2, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_239[] = { {"LeftDownTeeVector", 17, 0x02961, 0}, {"duhar", 5, 0x0296F, 0}, {"nrtrie", 6, 0x022ED, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_23C[] = { {"llhard", 6, 0x0296B, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_23D[] = { {"umacr", 5, 0x0016B, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_23E[] = { {"lates", 5, 0x02AAD, 0x0FE00}, {NULL} };
+static const entity_cp_map ht_bucket_html5_240[] = { {"colon", 5, 0x0003A, 0}, {"iacute", 6, 0x000ED, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_241[] = { {"NotPrecedes", 11, 0x02280, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_242[] = { {"cirfnint", 8, 0x02A10, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_246[] = { {"barwedge", 8, 0x02305, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_249[] = { {"nleftarrow", 10, 0x0219A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_24A[] = { {"Ubrcy", 5, 0x0040E, 0}, {"leftthreetimes", 14, 0x022CB, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_24B[] = { {"andand", 6, 0x02A55, 0}, {"ecirc", 5, 0x000EA, 0}, {"jukcy", 5, 0x00454, 0}, {"quatint", 7, 0x02A16, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_24D[] = { {"lharul", 6, 0x0296A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_251[] = { {"smtes", 5, 0x02AAC, 0x0FE00}, {NULL} };
+static const entity_cp_map ht_bucket_html5_252[] = { {"UnionPlus", 9, 0x0228E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_257[] = { {"NotLeftTriangle", 15, 0x022EA, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_25A[] = { {"bne", 3, 0x0003D, 0x020E5}, {NULL} };
+static const entity_cp_map ht_bucket_html5_25B[] = { {"gtrsim", 6, 0x02273, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_25C[] = { {"Rarr", 4, 0x021A0, 0}, {"ldquor", 6, 0x0201E, 0}, {"phiv", 4, 0x003D5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_25D[] = { {"because", 7, 0x02235, 0}, {"gEl", 3, 0x02A8C, 0}, {"setminus", 8, 0x02216, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_263[] = { {"ffr", 3, 0x1D523, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_26A[] = { {"ubrcy", 5, 0x0045E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_26B[] = { {"elinters", 8, 0x023E7, 0}, {"plusb", 5, 0x0229E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_26E[] = { {"pluse", 5, 0x02A72, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_274[] = { {"CapitalDifferentialD", 20, 0x02145, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_277[] = { {"daleth", 6, 0x02138, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_278[] = { {"kscr", 4, 0x1D4C0, 0}, {"ogon", 4, 0x002DB, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_27C[] = { {"SHcy", 4, 0x00428, 0}, {"equest", 6, 0x0225F, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_27E[] = { {"rbarr", 5, 0x0290D, 0}, {"topf", 4, 0x1D565, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_283[] = { {"tritime", 7, 0x02A3B, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_28A[] = { {"bot", 3, 0x022A5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_294[] = { {"Wfr", 3, 0x1D51A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_297[] = { {"HumpEqual", 9, 0x0224F, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_298[] = { {"rightleftharpoons", 17, 0x021CC, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_29D[] = { {"frasl", 5, 0x02044, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_29F[] = { {"UnderBracket", 12, 0x023B5, 0}, {"ovbar", 5, 0x0233D, 0}, {"upharpoonright", 14, 0x021BE, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_2A0[] = { {"euro", 4, 0x020AC, 0}, {"nhArr", 5, 0x021CE, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_2A9[] = { {"NotSupersetEqual", 16, 0x02289, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_2AE[] = { {"cularr", 6, 0x021B6, 0}, {"scnE", 4, 0x02AB6, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_2B1[] = { {"napid", 5, 0x0224B, 0x00338}, {NULL} };
+static const entity_cp_map ht_bucket_html5_2B2[] = { {"harr", 4, 0x02194, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_2B3[] = { {"gdot", 4, 0x00121, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_2B9[] = { {"Lscr", 4, 0x02112, 0}, {"zeta", 4, 0x003B6, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_2BF[] = { {"ENG", 3, 0x0014A, 0}, {"Uopf", 4, 0x1D54C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_2C4[] = { {"esdot", 5, 0x02250, 0}, {"scsim", 5, 0x0227F, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_2C5[] = { {"Hfr", 3, 0x0210C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_2CE[] = { {"RightArrow", 10, 0x02192, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_2CF[] = { {"Sqrt", 4, 0x0221A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_2D3[] = { {"xodot", 5, 0x02A00, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_2DA[] = { {"ycy", 3, 0x0044B, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_2DB[] = { {"hkswarow", 8, 0x02926, 0}, {"urtri", 5, 0x025F9, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_2DC[] = { {"roang", 5, 0x027ED, 0}, {"tosa", 4, 0x02929, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_2E3[] = { {"CircleMinus", 11, 0x02296, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_2E4[] = { {"Lcaron", 6, 0x0013D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_2EB[] = { {"ShortLeftArrow", 14, 0x02190, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_2EC[] = { {"Dot", 3, 0x000A8, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_2EE[] = { {"Rightarrow", 10, 0x021D2, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_2F0[] = { {"prsim", 5, 0x0227E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_2F2[] = { {"notinE", 6, 0x022F9, 0x00338}, {NULL} };
+static const entity_cp_map ht_bucket_html5_2F8[] = { {"becaus", 6, 0x02235, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_300[] = { {"NotEqualTilde", 13, 0x02242, 0x00338}, {"nparallel", 9, 0x02226, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_301[] = { {"capcup", 6, 0x02A47, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_304[] = { {"simeq", 5, 0x02243, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_305[] = { {"forall", 6, 0x02200, 0}, {"straightepsilon", 15, 0x003F5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_308[] = { {"ruluhar", 7, 0x02968, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_30B[] = { {"jcy", 3, 0x00439, 0}, {"ltcc", 4, 0x02AA6, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_30F[] = { {"bscr", 4, 0x1D4B7, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_311[] = { {"ExponentialE", 12, 0x02147, 0}, {"weierp", 6, 0x02118, 0}, {"yen", 3, 0x000A5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_313[] = { {"blacksquare", 11, 0x025AA, 0}, {"uml", 3, 0x000A8, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_315[] = { {"backsimeq", 9, 0x022CD, 0}, {"kopf", 4, 0x1D55C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_319[] = { {"NotPrecedesEqual", 16, 0x02AAF, 0x00338}, {NULL} };
+static const entity_cp_map ht_bucket_html5_31A[] = { {"simgE", 5, 0x02AA0, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_31B[] = { {"tridot", 6, 0x025EC, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_326[] = { {"DoubleLongLeftArrow", 19, 0x027F8, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_329[] = { {"models", 6, 0x022A7, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_32A[] = { {"emptyv", 6, 0x02205, 0}, {"eqslantgtr", 10, 0x02A96, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_32D[] = { {"Gcirc", 5, 0x0011C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_330[] = { {"bernou", 6, 0x0212C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_331[] = { {"HumpDownHump", 12, 0x0224E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_336[] = { {"yfr", 3, 0x1D536, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_338[] = { {"blacktriangle", 13, 0x025B4, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_33B[] = { {"yacy", 4, 0x0044F, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_33F[] = { {"lsime", 5, 0x02A8D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_340[] = { {"NotTildeEqual", 13, 0x02244, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_341[] = { {"lsimg", 5, 0x02A8F, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_347[] = { {"ncap", 4, 0x02A43, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_34D[] = { {"DD", 2, 0x02145, 0}, {"gcirc", 5, 0x0011D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_350[] = { {"Cscr", 4, 0x1D49E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_356[] = { {"Lopf", 4, 0x1D543, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_358[] = { {"lBarr", 5, 0x0290E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_359[] = { {"Leftrightarrow", 14, 0x021D4, 0}, {"gtrdot", 6, 0x022D7, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_35D[] = { {"NotSquareSubset", 15, 0x0228F, 0x00338}, {NULL} };
+static const entity_cp_map ht_bucket_html5_35F[] = { {"sqsubset", 8, 0x0228F, 0}, {"subsetneq", 9, 0x0228A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_361[] = { {"doublebarwedge", 14, 0x02306, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_363[] = { {"blacktriangleleft", 17, 0x025C2, 0}, {"hellip", 6, 0x02026, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_365[] = { {"xscr", 4, 0x1D4CD, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_367[] = { {"LessFullEqual", 13, 0x02266, 0}, {"jfr", 3, 0x1D527, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_369[] = { {"GreaterSlantEqual", 17, 0x02A7E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_36A[] = { {"Uring", 5, 0x0016E, 0}, {"VeryThinSpace", 13, 0x0200A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_36B[] = { {"roarr", 5, 0x021FE, 0}, {"scaron", 6, 0x00161, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_36D[] = { {"Lcy", 3, 0x0041B, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_36E[] = { {"RightDownVector", 15, 0x021C2, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_36F[] = { {"Sub", 3, 0x022D0, 0}, {"pitchfork", 9, 0x022D4, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_372[] = { {"nvsim", 5, 0x0223C, 0x020D2}, {NULL} };
+static const entity_cp_map ht_bucket_html5_374[] = { {"xrArr", 5, 0x027F9, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_378[] = { {"CloseCurlyQuote", 15, 0x02019, 0}, {"uwangle", 7, 0x029A7, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_37A[] = { {"Sum", 3, 0x02211, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_37C[] = { {"iuml", 4, 0x000EF, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_37D[] = { {"Sup", 3, 0x022D1, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_37E[] = { {"planck", 6, 0x0210F, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_37F[] = { {"Egrave", 6, 0x000C8, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_380[] = { {"curlywedge", 10, 0x022CF, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_382[] = { {"TildeFullEqual", 14, 0x02245, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_383[] = { {"searhk", 6, 0x02925, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_386[] = { {"ETH", 3, 0x000D0, 0}, {"napos", 5, 0x00149, 0}, {"upsi", 4, 0x003C5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_387[] = { {"twoheadleftarrow", 16, 0x0219E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_38A[] = { {"Assign", 6, 0x02254, 0}, {"uring", 5, 0x0016F, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_38D[] = { {"SquareIntersection", 18, 0x02293, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_38E[] = { {"lmidot", 6, 0x00140, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_391[] = { {"kcedil", 6, 0x00137, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_394[] = { {"curren", 6, 0x000A4, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_397[] = { {"acute", 5, 0x000B4, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_398[] = { {"curlyeqsucc", 11, 0x022DF, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_39C[] = { {"Omicron", 7, 0x0039F, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_39F[] = { {"uarr", 4, 0x02191, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_3A0[] = { {"Hstrok", 6, 0x00126, 0}, {"UnderBrace", 10, 0x023DF, 0}, {"tdot", 4, 0x020DB, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_3A1[] = { {"qint", 4, 0x02A0C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_3A4[] = { {"sfrown", 6, 0x02322, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_3A5[] = { {"trpezium", 8, 0x023E2, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_3A6[] = { {"Yscr", 4, 0x1D4B4, 0}, {"cedil", 5, 0x000B8, 0}, {"planckh", 7, 0x0210E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_3A7[] = { {"lang", 4, 0x027E8, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_3AC[] = { {"bopf", 4, 0x1D553, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_3B2[] = { {"lbbrk", 5, 0x02772, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_3B4[] = { {"khcy", 4, 0x00445, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_3BF[] = { {"Epsilon", 7, 0x00395, 0}, {"simlE", 5, 0x02A9F, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_3C0[] = { {"GT", 2, 0x0003E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_3C4[] = { {"nap", 3, 0x02249, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_3C9[] = { {"Lfr", 3, 0x1D50F, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_3CD[] = { {"succapprox", 10, 0x02AB8, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_3D0[] = { {"bsim", 4, 0x0223D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_3D3[] = { {"Gg", 2, 0x022D9, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_3D9[] = { {"angrtvb", 7, 0x022BE, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_3DE[] = { {"xcirc", 5, 0x025EF, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_3E0[] = { {"Gt", 2, 0x0226B, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_3E1[] = { {"LeftRightVector", 15, 0x0294E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_3E3[] = { {"circledast", 10, 0x0229B, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_3E4[] = { {"telrec", 6, 0x02315, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_3E6[] = { {"SucceedsTilde", 13, 0x0227F, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_3E9[] = { {"nLtv", 4, 0x0226A, 0x00338}, {NULL} };
+static const entity_cp_map ht_bucket_html5_3ED[] = { {"Copf", 4, 0x02102, 0}, {"napprox", 7, 0x02249, 0}, {"nsupseteq", 9, 0x02289, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_3F1[] = { {"VerticalTilde", 13, 0x02240, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_3F2[] = { {"parallel", 8, 0x02225, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_3F7[] = { {"precnapprox", 11, 0x02AB9, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_3FC[] = { {"oscr", 4, 0x02134, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_3FE[] = { {"supsetneqq", 10, 0x02ACC, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_402[] = { {"xopf", 4, 0x1D569, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_405[] = { {"mumap", 5, 0x022B8, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_407[] = { {"varsupsetneqq", 13, 0x02ACC, 0x0FE00}, {NULL} };
+static const entity_cp_map ht_bucket_html5_409[] = { {"ReverseEquilibrium", 18, 0x021CB, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_40E[] = { {"Ubreve", 6, 0x0016C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_40F[] = { {"YUcy", 4, 0x0042E, 0}, {"ncy", 3, 0x0043D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_413[] = { {"ltimes", 6, 0x022C9, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_41A[] = { {"UpperRightArrow", 15, 0x02197, 0}, {"nvap", 4, 0x0224D, 0x020D2}, {NULL} };
+static const entity_cp_map ht_bucket_html5_41B[] = { {"Im", 2, 0x02111, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_421[] = { {"simne", 5, 0x02246, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_423[] = { {"ccups", 5, 0x02A4C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_424[] = { {"nlArr", 5, 0x021CD, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_425[] = { {"rarrsim", 7, 0x02974, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_426[] = { {"Ncaron", 6, 0x00147, 0}, {"vsupnE", 6, 0x02ACC, 0x0FE00}, {NULL} };
+static const entity_cp_map ht_bucket_html5_429[] = { {"succeq", 6, 0x02AB0, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_42C[] = { {"Gammad", 6, 0x003DC, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_42F[] = { {"Icirc", 5, 0x000CE, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_430[] = { {"backepsilon", 11, 0x003F6, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_432[] = { {"ddarr", 5, 0x021CA, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_436[] = { {"larr", 4, 0x02190, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_439[] = { {"divideontimes", 13, 0x022C7, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_43C[] = { {"succsim", 7, 0x0227F, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_43D[] = { {"Pscr", 4, 0x1D4AB, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_43E[] = { {"puncsp", 6, 0x02008, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_43F[] = { {"gtreqless", 9, 0x022DB, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_440[] = { {"intcal", 6, 0x022BA, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_441[] = { {"nsime", 5, 0x02244, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_443[] = { {"Yopf", 4, 0x1D550, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_446[] = { {"angsph", 6, 0x02222, 0}, {"vsupne", 6, 0x0228B, 0x0FE00}, {NULL} };
+static const entity_cp_map ht_bucket_html5_447[] = { {"NotNestedLessLess", 17, 0x02AA1, 0x00338}, {NULL} };
+static const entity_cp_map ht_bucket_html5_44A[] = { {"PrecedesSlantEqual", 18, 0x0227C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_44F[] = { {"icirc", 5, 0x000EE, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_450[] = { {"DownLeftVectorBar", 17, 0x02956, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_454[] = { {"Auml", 4, 0x000C4, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_457[] = { {"LJcy", 4, 0x00409, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_458[] = { {"sqsube", 6, 0x02291, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_45D[] = { {"nprec", 5, 0x02280, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_45F[] = { {"ngE", 3, 0x02267, 0x00338}, {"smile", 5, 0x02323, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_465[] = { {"LT", 2, 0x0003C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_466[] = { {"ldrdhar", 7, 0x02967, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_469[] = { {"utri", 4, 0x025B5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_46A[] = { {"Sacute", 6, 0x0015A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_46B[] = { {"late", 4, 0x02AAD, 0}, {"nfr", 3, 0x1D52B, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_46D[] = { {"NotNestedGreaterGreater", 23, 0x02AA2, 0x00338}, {NULL} };
+static const entity_cp_map ht_bucket_html5_46F[] = { {"nwarr", 5, 0x02196, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_470[] = { {"biguplus", 8, 0x02A04, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_471[] = { {"Pcy", 3, 0x0041F, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_472[] = { {"bigtriangleup", 13, 0x025B3, 0}, {"rationals", 9, 0x0211A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_473[] = { {"congdot", 7, 0x02A6D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_475[] = { {"PlusMinus", 9, 0x000B1, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_479[] = { {"IOcy", 4, 0x00401, 0}, {"Scedil", 6, 0x0015E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_47C[] = { {"eqcirc", 6, 0x02256, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_47D[] = { {"Ll", 2, 0x022D8, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_47F[] = { {"Cayleys", 7, 0x0212D, 0}, {"nge", 3, 0x02271, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_480[] = { {"NotGreater", 10, 0x0226F, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_485[] = { {"Lt", 2, 0x0226A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_488[] = { {"rotimes", 7, 0x02A35, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_48C[] = { {"caps", 4, 0x02229, 0x0FE00}, {NULL} };
+static const entity_cp_map ht_bucket_html5_48E[] = { {"ngt", 3, 0x0226F, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_48F[] = { {"Cross", 5, 0x02A2F, 0}, {"bumpeq", 6, 0x0224F, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_490[] = { {"VerticalSeparator", 17, 0x02758, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_491[] = { {"plankv", 6, 0x0210F, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_493[] = { {"fscr", 4, 0x1D4BB, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_495[] = { {"bsol", 4, 0x0005C, 0}, {"sqsubseteq", 10, 0x02291, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_496[] = { {"boxH", 4, 0x02550, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_498[] = { {"rightarrowtail", 14, 0x021A3, 0}, {"ufisht", 6, 0x0297E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_499[] = { {"oopf", 4, 0x1D560, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_49F[] = { {"lobrk", 5, 0x027E6, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_4A2[] = { {"Acy", 3, 0x00410, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_4A4[] = { {"NotSubsetEqual", 14, 0x02288, 0}, {"boxV", 4, 0x02551, 0}, {"dHar", 4, 0x02965, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_4A6[] = { {"precnsim", 8, 0x022E8, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_4A7[] = { {"Mu", 2, 0x0039C, 0}, {"aelig", 5, 0x000E6, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_4AA[] = { {"gescc", 5, 0x02AA9, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_4AB[] = { {"origof", 6, 0x022B6, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_4AE[] = { {"upsih", 5, 0x003D2, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_4AF[] = { {"cross", 5, 0x02717, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_4B2[] = { {"LeftFloor", 9, 0x0230A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_4B6[] = { {"boxh", 4, 0x02500, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_4B8[] = { {"NotGreaterEqual", 15, 0x02271, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_4BC[] = { {"profalar", 8, 0x0232E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_4C0[] = { {"nsmid", 5, 0x02224, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_4C2[] = { {"hbar", 4, 0x0210F, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_4C3[] = { {"udarr", 5, 0x021C5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_4C4[] = { {"boxv", 4, 0x02502, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_4C5[] = { {"olarr", 5, 0x021BA, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_4C8[] = { {"Nu", 2, 0x0039D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_4CB[] = { {"NotCongruent", 12, 0x02262, 0}, {"bkarow", 6, 0x0290D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_4CD[] = { {"Pfr", 3, 0x1D513, 0}, {"forkv", 5, 0x02AD9, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_4CF[] = { {"nis", 3, 0x022FC, 0}, {"trianglerighteq", 15, 0x022B5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_4D0[] = { {"ngeq", 4, 0x02271, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_4D2[] = { {"cudarrl", 7, 0x02938, 0}, {"nges", 4, 0x02A7E, 0x00338}, {"niv", 3, 0x0220B, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_4D3[] = { {"SubsetEqual", 11, 0x02286, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_4D4[] = { {"Gscr", 4, 0x1D4A2, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_4D5[] = { {"complexes", 9, 0x02102, 0}, {"eDDot", 5, 0x02A77, 0}, {"nvge", 4, 0x02265, 0x020D2}, {NULL} };
+static const entity_cp_map ht_bucket_html5_4D8[] = { {"cudarrr", 7, 0x02935, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_4DA[] = { {"Popf", 4, 0x02119, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_4DE[] = { {"LongRightArrow", 14, 0x027F6, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_4DF[] = { {"supseteq", 8, 0x02287, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_4E3[] = { {"dollar", 6, 0x00024, 0}, {"gnsim", 5, 0x022E7, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_4E4[] = { {"nvgt", 4, 0x0003E, 0x020D2}, {NULL} };
+static const entity_cp_map ht_bucket_html5_4E6[] = { {"Or", 2, 0x02A54, 0}, {"Vert", 4, 0x02016, 0}, {"lneqq", 5, 0x02268, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_4E7[] = { {"nLeftrightarrow", 15, 0x021CE, 0}, {"nbump", 5, 0x0224E, 0x00338}, {"ntriangleright", 14, 0x022EB, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_4E8[] = { {"ecir", 4, 0x02256, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_4E9[] = { {"npolint", 7, 0x02A14, 0}, {"plus", 4, 0x0002B, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_4ED[] = { {"centerdot", 9, 0x000B7, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_4F1[] = { {"zacute", 6, 0x0017A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_4F7[] = { {"odiv", 4, 0x02A38, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_4F9[] = { {"cap", 3, 0x02229, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_4FB[] = { {"ensp", 4, 0x02002, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_4FE[] = { {"Afr", 3, 0x1D504, 0}, {"Pi", 2, 0x003A0, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_500[] = { {"iquest", 6, 0x000BF, 0}, {"ltri", 4, 0x025C3, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_504[] = { {"nlE", 3, 0x02266, 0x00338}, {NULL} };
+static const entity_cp_map ht_bucket_html5_506[] = { {"Phi", 3, 0x003A6, 0}, {"lambda", 6, 0x003BB, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_507[] = { {"Pr", 2, 0x02ABB, 0}, {"Vdashl", 6, 0x02AE6, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_509[] = { {"SuchThat", 8, 0x0220B, 0}, {"Supset", 6, 0x022D1, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_50E[] = { {"Darr", 4, 0x021A1, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_50F[] = { {"Cdot", 4, 0x0010A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_513[] = { {"rcy", 3, 0x00440, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_516[] = { {"orderof", 7, 0x02134, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_518[] = { {"leqq", 4, 0x02266, 0}, {"precsim", 7, 0x0227E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_519[] = { {"RightTriangle", 13, 0x022B3, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_51B[] = { {"agrave", 6, 0x000E0, 0}, {"succnapprox", 11, 0x02ABA, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_51C[] = { {"Tab", 3, 0x00009, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_524[] = { {"nle", 3, 0x02270, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_525[] = { {"spades", 6, 0x02660, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_526[] = { {"gtcc", 4, 0x02AA7, 0}, {"llcorner", 8, 0x0231E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_52F[] = { {"Oslash", 6, 0x000D8, 0}, {"Tau", 3, 0x003A4, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_530[] = { {"fopf", 4, 0x1D557, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_532[] = { {"Mellintrf", 9, 0x02133, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_533[] = { {"nlt", 3, 0x0226E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_534[] = { {"lparlt", 6, 0x02993, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_53B[] = { {"Ccaron", 6, 0x0010C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_53C[] = { {"Re", 2, 0x0211C, 0}, {"dstrok", 6, 0x00111, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_53F[] = { {"leftharpoondown", 15, 0x021BD, 0}, {"ssetmn", 6, 0x02216, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_542[] = { {"lrhard", 6, 0x0296D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_543[] = { {"reg", 3, 0x000AE, 0}, {"sharp", 5, 0x0266F, 0}, {"yicy", 4, 0x00457, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_545[] = { {"ShortUpArrow", 12, 0x02191, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_548[] = { {"plusacir", 8, 0x02A23, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_54F[] = { {"cent", 4, 0x000A2, 0}, {"natur", 5, 0x0266E, 0}, {"varphi", 6, 0x003D5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_550[] = { {"lesg", 4, 0x022DA, 0x0FE00}, {"supnE", 5, 0x02ACC, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_551[] = { {"ohbar", 5, 0x029B5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_557[] = { {"NotLessGreater", 14, 0x02278, 0}, {"nleqslant", 9, 0x02A7D, 0x00338}, {NULL} };
+static const entity_cp_map ht_bucket_html5_55B[] = { {"Sc", 2, 0x02ABC, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_55D[] = { {"NotSucceedsEqual", 16, 0x02AB0, 0x00338}, {NULL} };
+static const entity_cp_map ht_bucket_html5_55F[] = { {"DZcy", 4, 0x0040F, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_564[] = { {"vartheta", 8, 0x003D1, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_565[] = { {"ltrie", 5, 0x022B4, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_566[] = { {"Otilde", 6, 0x000D5, 0}, {"ltrif", 5, 0x025C2, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_56C[] = { {"Lsh", 3, 0x021B0, 0}, {"hookleftarrow", 13, 0x021A9, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_56F[] = { {"rfr", 3, 0x1D52F, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_570[] = { {"supne", 5, 0x0228B, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_571[] = { {"Gopf", 4, 0x1D53E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_572[] = { {"UpEquilibrium", 13, 0x0296E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_575[] = { {"Tcy", 3, 0x00422, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_576[] = { {"ffilig", 6, 0x0FB03, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_577[] = { {"fork", 4, 0x022D4, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_578[] = { {"oplus", 5, 0x02295, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_57A[] = { {"nvle", 4, 0x02264, 0x020D2}, {NULL} };
+static const entity_cp_map ht_bucket_html5_57B[] = { {"HilbertSpace", 12, 0x0210B, 0}, {"subedot", 7, 0x02AC3, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_57C[] = { {"TripleDot", 9, 0x020DB, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_580[] = { {"sscr", 4, 0x1D4C8, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_582[] = { {"osol", 4, 0x02298, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_583[] = { {"plustwo", 7, 0x02A27, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_586[] = { {"LessGreater", 11, 0x02276, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_588[] = { {"lrarr", 5, 0x021C6, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_589[] = { {"nvlt", 4, 0x0003C, 0x020D2}, {NULL} };
+static const entity_cp_map ht_bucket_html5_58D[] = { {"questeq", 7, 0x0225F, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_58E[] = { {"LessTilde", 9, 0x02272, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_58F[] = { {"djcy", 4, 0x00452, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_590[] = { {"xoplus", 6, 0x02A01, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_595[] = { {"primes", 6, 0x02119, 0}, {"solb", 4, 0x029C4, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_596[] = { {"not", 3, 0x000AC, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_59A[] = { {"angzarr", 7, 0x0237C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_59D[] = { {"nearr", 5, 0x02197, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_59F[] = { {"lowast", 6, 0x02217, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_5A0[] = { {"cfr", 3, 0x1D520, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_5A3[] = { {"ltcir", 5, 0x02A79, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_5A6[] = { {"Ecy", 3, 0x0042D, 0}, {"gesdotol", 8, 0x02A84, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_5A9[] = { {"longleftrightarrow", 18, 0x027F7, 0}, {"para", 4, 0x000B6, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_5AC[] = { {"Uacute", 6, 0x000DA, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_5AD[] = { {"blank", 5, 0x02423, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_5AE[] = { {"rho", 3, 0x003C1, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_5B0[] = { {"dharl", 5, 0x021C3, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_5B1[] = { {"rsquor", 6, 0x02019, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_5B5[] = { {"NotSquareSubsetEqual", 20, 0x022E2, 0}, {"npr", 3, 0x02280, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_5B6[] = { {"dharr", 5, 0x021C2, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_5B7[] = { {"NewLine", 7, 0x0000A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_5BB[] = { {"odot", 4, 0x02299, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_5BC[] = { {"part", 4, 0x02202, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_5BD[] = { {"cuvee", 5, 0x022CE, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_5BF[] = { {"lesdoto", 7, 0x02A81, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_5C0[] = { {"itilde", 6, 0x00129, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_5C1[] = { {"Tscr", 4, 0x1D4AF, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_5C2[] = { {"nsubE", 5, 0x02AC5, 0x00338}, {NULL} };
+static const entity_cp_map ht_bucket_html5_5C4[] = { {"ratio", 5, 0x02236, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_5D0[] = { {"Conint", 6, 0x0222F, 0}, {"LeftDownVectorBar", 17, 0x02959, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_5D1[] = { {"Tfr", 3, 0x1D517, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_5D3[] = { {"fllig", 5, 0x0FB02, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_5D5[] = { {"thksim", 6, 0x0223C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_5D8[] = { {"Euml", 4, 0x000CB, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_5D9[] = { {"chi", 3, 0x003C7, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_5DB[] = { {"ncup", 4, 0x02A42, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_5DD[] = { {"SOFTcy", 6, 0x0042C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_5DF[] = { {"bnequiv", 7, 0x02261, 0x020E5}, {NULL} };
+static const entity_cp_map ht_bucket_html5_5E2[] = { {"nsube", 5, 0x02288, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_5E4[] = { {"mapstoleft", 10, 0x021A4, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_5E7[] = { {"NotLessSlantEqual", 17, 0x02A7D, 0x00338}, {NULL} };
+static const entity_cp_map ht_bucket_html5_5EA[] = { {"ldrushar", 8, 0x0294B, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_5ED[] = { {"Equilibrium", 11, 0x021CC, 0}, {"Uogon", 5, 0x00172, 0}, {"supsetneq", 9, 0x0228B, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_5F0[] = { {"Vbar", 4, 0x02AEB, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_5F3[] = { {"vnsub", 5, 0x02282, 0x020D2}, {NULL} };
+static const entity_cp_map ht_bucket_html5_5F6[] = { {"Square", 6, 0x025A1, 0}, {"lessapprox", 10, 0x02A85, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_5F8[] = { {"And", 3, 0x02A53, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_5FA[] = { {"gesdoto", 7, 0x02A82, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_5FD[] = { {"gap", 3, 0x02A86, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_601[] = { {"nsucc", 5, 0x02281, 0}, {"thicksim", 8, 0x0223C, 0}, {"vnsup", 5, 0x02283, 0x020D2}, {NULL} };
+static const entity_cp_map ht_bucket_html5_602[] = { {"Efr", 3, 0x1D508, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_603[] = { {"Igrave", 6, 0x000CC, 0}, {"cir", 3, 0x025CB, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_606[] = { {"Xi", 2, 0x0039E, 0}, {"oacute", 6, 0x000F3, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_609[] = { {"nsc", 3, 0x02281, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_60D[] = { {"uogon", 5, 0x00173, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_613[] = { {"rharul", 6, 0x0296C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_615[] = { {"RuleDelayed", 11, 0x029F4, 0}, {"apacir", 6, 0x02A6F, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_617[] = { {"jscr", 4, 0x1D4BF, 0}, {"vcy", 3, 0x00432, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_61A[] = { {"barwed", 6, 0x02305, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_61D[] = { {"sopf", 4, 0x1D564, 0}, {"thkap", 5, 0x02248, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_61F[] = { {"lesseqgtr", 9, 0x022DA, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_622[] = { {"rdquor", 6, 0x0201D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_624[] = { {"Lstrok", 6, 0x00141, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_626[] = { {"Product", 7, 0x0220F, 0}, {"sqsupe", 6, 0x02292, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_628[] = { {"awconint", 8, 0x02233, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_62C[] = { {"hearts", 6, 0x02665, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_630[] = { {"rlm", 3, 0x0200F, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_632[] = { {"comma", 5, 0x0002C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_636[] = { {"PartialD", 8, 0x02202, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_63A[] = { {"wedbar", 6, 0x02A5F, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_63C[] = { {"oline", 5, 0x0203E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_63D[] = { {"OverBracket", 11, 0x023B4, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_63E[] = { {"RBarr", 5, 0x02910, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_641[] = { {"uharl", 5, 0x021BF, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_642[] = { {"leftrightsquigarrow", 19, 0x021AD, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_645[] = { {"RightFloor", 10, 0x0230B, 0}, {"intprod", 7, 0x02A3C, 0}, {"vee", 3, 0x02228, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_646[] = { {"zigrarr", 7, 0x021DD, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_647[] = { {"uharr", 5, 0x021BE, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_648[] = { {"gcy", 3, 0x00433, 0}, {"varsubsetneq", 12, 0x0228A, 0x0FE00}, {NULL} };
+static const entity_cp_map ht_bucket_html5_649[] = { {"leqslant", 8, 0x02A7D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_64A[] = { {"Odblac", 6, 0x00150, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_651[] = { {"minus", 5, 0x02212, 0}, {"scpolint", 8, 0x02A13, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_652[] = { {"lrtri", 5, 0x022BF, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_653[] = { {"DiacriticalGrave", 16, 0x00060, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_655[] = { {"num", 3, 0x00023, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_657[] = { {"quest", 5, 0x0003F, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_658[] = { {"Kscr", 4, 0x1D4A6, 0}, {"UnderBar", 8, 0x0005F, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_659[] = { {"lsquo", 5, 0x02018, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_65C[] = { {"rArr", 4, 0x021D2, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_65E[] = { {"Topf", 4, 0x1D54B, 0}, {"heartsuit", 9, 0x02665, 0}, {"rBarr", 5, 0x0290F, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_660[] = { {"emptyset", 8, 0x02205, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_669[] = { {"UnderParenthesis", 16, 0x023DD, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_670[] = { {"dotplus", 7, 0x02214, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_671[] = { {"Psi", 3, 0x003A8, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_672[] = { {"GJcy", 4, 0x00403, 0}, {"exist", 5, 0x02203, 0}, {"simplus", 7, 0x02A24, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_673[] = { {"vfr", 3, 0x1D533, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_676[] = { {"tprime", 6, 0x02034, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_678[] = { {"leftrightharpoons", 17, 0x021CB, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_679[] = { {"rbrksld", 7, 0x0298E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_67D[] = { {"Ecaron", 6, 0x0011A, 0}, {"gel", 3, 0x022DB, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_680[] = { {"capdot", 6, 0x02A40, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_682[] = { {"geq", 3, 0x02265, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_684[] = { {"LowerLeftArrow", 14, 0x02199, 0}, {"ges", 3, 0x02A7E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_685[] = { {"Colone", 6, 0x02A74, 0}, {"NotLessEqual", 12, 0x02270, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_68A[] = { {"nrarr", 5, 0x0219B, 0}, {"rbrkslu", 7, 0x02990, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_68C[] = { {"flat", 4, 0x0266D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_691[] = { {"there4", 6, 0x02234, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_693[] = { {"Gdot", 4, 0x00120, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_694[] = { {"ijlig", 5, 0x00133, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_696[] = { {"blacklozenge", 12, 0x029EB, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_699[] = { {"Zeta", 4, 0x00396, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_6A3[] = { {"duarr", 5, 0x021F5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_6A4[] = { {"DotEqual", 8, 0x02250, 0}, {"dtdot", 5, 0x022F1, 0}, {"gfr", 3, 0x1D524, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_6A8[] = { {"cirE", 4, 0x029C3, 0}, {"period", 6, 0x0002E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_6A9[] = { {"lmoust", 6, 0x023B0, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_6AA[] = { {"Icy", 3, 0x00418, 0}, {"Rcaron", 6, 0x00158, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_6AB[] = { {"LeftCeiling", 11, 0x02308, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_6AE[] = { {"ascr", 4, 0x1D4B6, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_6B0[] = { {"boxtimes", 8, 0x022A0, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_6B4[] = { {"jopf", 4, 0x1D55B, 0}, {"ntriangleleft", 13, 0x022EA, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_6B6[] = { {"eqcolon", 7, 0x02255, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_6B8[] = { {"rbbrk", 5, 0x02773, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_6B9[] = { {"homtht", 6, 0x0223B, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_6BA[] = { {"ggg", 3, 0x022D9, 0}, {"seswar", 6, 0x02929, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_6BC[] = { {"perp", 4, 0x022A5, 0}, {"shcy", 4, 0x00448, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_6BF[] = { {"phone", 5, 0x0260E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_6C0[] = { {"NotDoubleVerticalBar", 20, 0x02226, 0}, {"ngtr", 4, 0x0226F, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_6C4[] = { {"ThickSpace", 10, 0x0205F, 0x0200A}, {NULL} };
+static const entity_cp_map ht_bucket_html5_6C5[] = { {"ForAll", 6, 0x02200, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_6C6[] = { {"circ", 4, 0x002C6, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_6C7[] = { {"Verbar", 6, 0x02016, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_6C8[] = { {"cire", 4, 0x02257, 0}, {"lesges", 6, 0x02A93, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_6C9[] = { {"slarr", 5, 0x02190, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_6CC[] = { {"RightDownTeeVector", 18, 0x0295D, 0}, {"triangleq", 9, 0x0225C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_6CE[] = { {"checkmark", 9, 0x02713, 0}, {"quot", 4, 0x00022, 0}, {"suplarr", 7, 0x0297B, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_6D1[] = { {"Backslash", 9, 0x02216, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_6D2[] = { {"fallingdotseq", 13, 0x02252, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_6D4[] = { {"swArr", 5, 0x021D9, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_6D5[] = { {"Xfr", 3, 0x1D51B, 0}, {"lbrke", 5, 0x0298B, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_6D9[] = { {"jmath", 5, 0x00237, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_6DA[] = { {"lmoustache", 10, 0x023B0, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_6DB[] = { {"DownTee", 7, 0x022A4, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_6DC[] = { {"reals", 5, 0x0211D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_6DE[] = { {"quaternions", 11, 0x0210D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_6E7[] = { {"vzigzag", 7, 0x0299A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_6EB[] = { {"pound", 5, 0x000A3, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_6EE[] = { {"permil", 6, 0x02030, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_6EF[] = { {"Bscr", 4, 0x0212C, 0}, {"lfisht", 6, 0x0297C, 0}, {"vartriangleleft", 15, 0x022B2, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_6F5[] = { {"Kopf", 4, 0x1D542, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_6F7[] = { {"Tilde", 5, 0x0223C, 0}, {"gtrarr", 6, 0x02978, 0}, {"lAarr", 5, 0x021DA, 0}, {"opar", 4, 0x029B7, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_6FB[] = { {"triangle", 8, 0x025B5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_704[] = { {"lcaron", 6, 0x0013E, 0}, {"wscr", 4, 0x1D4CC, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_705[] = { {"asympeq", 7, 0x0224D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_706[] = { {"Ifr", 3, 0x02111, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_707[] = { {"DoubleDot", 9, 0x000A8, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_709[] = { {"nVdash", 6, 0x022AE, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_70C[] = { {"hairsp", 6, 0x0200A, 0}, {"leftrightarrows", 15, 0x021C6, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_70E[] = { {"lbrace", 6, 0x0007B, 0}, {"rightarrow", 10, 0x02192, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_70F[] = { {"Dagger", 6, 0x02021, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_712[] = { {"rsh", 3, 0x021B1, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_714[] = { {"eqslantless", 11, 0x02A95, 0}, {"gnapprox", 8, 0x02A8A, 0}, {"lbrack", 6, 0x0005B, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_715[] = { {"uHar", 4, 0x02963, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_717[] = { {"tilde", 5, 0x002DC, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_719[] = { {"complement", 10, 0x02201, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_71B[] = { {"zcy", 3, 0x00437, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_71E[] = { {"boxDL", 5, 0x02557, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_71F[] = { {"micro", 5, 0x000B5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_723[] = { {"horbar", 6, 0x02015, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_724[] = { {"boxDR", 5, 0x02554, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_727[] = { {"bsolhsub", 8, 0x027C8, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_729[] = { {"ac", 2, 0x0223E, 0}, {"nvdash", 6, 0x022AC, 0}, {"precapprox", 10, 0x02AB7, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_72C[] = { {"af", 2, 0x02061, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_72D[] = { {"bullet", 6, 0x02022, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_72E[] = { {"demptyv", 7, 0x029B1, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_733[] = { {"geqq", 4, 0x02267, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_734[] = { {"uuarr", 5, 0x021C8, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_735[] = { {"Ocirc", 5, 0x000D4, 0}, {"utdot", 5, 0x022F0, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_736[] = { {"ap", 2, 0x02248, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_738[] = { {"bNot", 4, 0x02AED, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_73B[] = { {"CirclePlus", 10, 0x02295, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_73D[] = { {"glE", 3, 0x02A92, 0}, {"midcir", 6, 0x02AF0, 0}, {"rppolint", 8, 0x02A12, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_73E[] = { {"boxDl", 5, 0x02556, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_73F[] = { {"sdot", 4, 0x022C5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_744[] = { {"boxDr", 5, 0x02553, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_745[] = { {"Xscr", 4, 0x1D4B3, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_749[] = { {"dlcrop", 6, 0x0230D, 0}, {"gtrless", 7, 0x02277, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_74B[] = { {"aopf", 4, 0x1D552, 0}, {"operp", 5, 0x029B9, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_74C[] = { {"kcy", 3, 0x0043A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_74F[] = { {"larrfs", 6, 0x0291D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_751[] = { {"rcub", 4, 0x0007D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_754[] = { {"nrtri", 5, 0x022EB, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_755[] = { {"nparsl", 6, 0x02AFD, 0x020E5}, {"ocirc", 5, 0x000F4, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_759[] = { {"gla", 3, 0x02AA5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_75C[] = { {"Iuml", 4, 0x000CF, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_75F[] = { {"mcomma", 6, 0x02A29, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_762[] = { {"glj", 3, 0x02AA4, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_763[] = { {"Map", 3, 0x02905, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_765[] = { {"copysr", 6, 0x02117, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_766[] = { {"DownTeeArrow", 12, 0x021A7, 0}, {"Upsi", 4, 0x003D2, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_768[] = { {"awint", 5, 0x02A11, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_76E[] = { {"DownRightVector", 15, 0x021C1, 0}, {"NotEqual", 8, 0x02260, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_770[] = { {"gesl", 4, 0x022DB, 0x0FE00}, {NULL} };
+static const entity_cp_map ht_bucket_html5_772[] = { {"NotCupCap", 9, 0x0226D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_776[] = { {"blacktriangleright", 18, 0x025B8, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_777[] = { {"zfr", 3, 0x1D537, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_779[] = { {"leftrightarrow", 14, 0x02194, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_77A[] = { {"Abreve", 6, 0x00102, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_77F[] = { {"Uarr", 4, 0x0219F, 0}, {"gnE", 3, 0x02269, 0}, {"supmult", 7, 0x02AC2, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_781[] = { {"supplus", 7, 0x02AC0, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_783[] = { {"nabla", 5, 0x02207, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_787[] = { {"Lang", 4, 0x027EA, 0}, {"laquo", 5, 0x000AB, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_789[] = { {"larrhk", 6, 0x021A9, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_78C[] = { {"Bopf", 4, 0x1D539, 0}, {"lowbar", 6, 0x0005F, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_78D[] = { {"cup", 3, 0x0222A, 0}, {"dd", 2, 0x02146, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_78E[] = { {"nsce", 4, 0x02AB0, 0x00338}, {NULL} };
+static const entity_cp_map ht_bucket_html5_790[] = { {"nshortparallel", 14, 0x02226, 0}, {"nsupE", 5, 0x02AC6, 0x00338}, {NULL} };
+static const entity_cp_map ht_bucket_html5_794[] = { {"OpenCurlyQuote", 14, 0x02018, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_797[] = { {"bsolb", 5, 0x029C5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_798[] = { {"DScy", 4, 0x00405, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_79A[] = { {"boxHD", 5, 0x02566, 0}, {"ltrPar", 6, 0x02996, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_79B[] = { {"nscr", 4, 0x1D4C3, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_79D[] = { {"lEg", 3, 0x02A8B, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_79F[] = { {"egrave", 6, 0x000E8, 0}, {"gne", 3, 0x02A88, 0}, {"larrsim", 7, 0x02973, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_7A0[] = { {"COPY", 4, 0x000A9, 0}, {"bdquo", 5, 0x0201E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_7A1[] = { {"wopf", 4, 0x1D568, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_7A2[] = { {"NotRightTriangleEqual", 21, 0x022ED, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_7A5[] = { {"robrk", 5, 0x027E7, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_7A8[] = { {"kfr", 3, 0x1D528, 0}, {"nlsim", 5, 0x02274, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_7AA[] = { {"xhArr", 5, 0x027FA, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_7AB[] = { {"boxHU", 5, 0x02569, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_7AC[] = { {"lHar", 4, 0x02962, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_7AE[] = { {"Mcy", 3, 0x0041C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_7AF[] = { {"ee", 2, 0x02147, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_7B0[] = { {"nsupe", 5, 0x02289, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_7B1[] = { {"eg", 2, 0x02A9A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_7B5[] = { {"trade", 5, 0x02122, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_7B6[] = { {"el", 2, 0x02A99, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_7B7[] = { {"nsucceq", 7, 0x02AB0, 0x00338}, {NULL} };
+static const entity_cp_map ht_bucket_html5_7B8[] = { {"langle", 6, 0x027E8, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_7BA[] = { {"boxHd", 5, 0x02564, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_7BB[] = { {"Subset", 6, 0x022D0, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_7BD[] = { {"DownArrowBar", 12, 0x02913, 0}, {"topbot", 6, 0x02336, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_7BE[] = { {"OverBrace", 9, 0x023DE, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_7BF[] = { {"Eta", 3, 0x00397, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_7C0[] = { {"hstrok", 6, 0x00127, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_7C1[] = { {"Hacek", 5, 0x002C7, 0}, {"diamond", 7, 0x022C4, 0}, {"isinsv", 6, 0x022F3, 0}, {"rtriltri", 8, 0x029CE, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_7C9[] = { {"nvltrie", 7, 0x022B4, 0x020D2}, {NULL} };
+static const entity_cp_map ht_bucket_html5_7CB[] = { {"boxHu", 5, 0x02567, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_7CD[] = { {"fpartint", 8, 0x02A0D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_7CE[] = { {"Proportional", 12, 0x0221D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_7D1[] = { {"NotSuperset", 11, 0x02283, 0x020D2}, {"gE", 2, 0x02267, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_7D2[] = { {"scnsim", 6, 0x022E9, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_7D5[] = { {"uparrow", 7, 0x02191, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_7D6[] = { {"ltlarr", 6, 0x02976, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_7D9[] = { {"rtimes", 6, 0x022CA, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_7DA[] = { {"ncong", 5, 0x02247, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_7DC[] = { {"Oscr", 4, 0x1D4AA, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_7E0[] = { {"vArr", 4, 0x021D5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_7E2[] = { {"Xopf", 4, 0x1D54F, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_7E4[] = { {"notinva", 7, 0x02209, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_7E5[] = { {"notinvb", 7, 0x022F7, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_7E6[] = { {"notinvc", 7, 0x022F6, 0}, {"nsqsube", 7, 0x022E2, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_7EC[] = { {"Tcaron", 6, 0x00164, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_7EF[] = { {"upsilon", 7, 0x003C5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_7F1[] = { {"ge", 2, 0x02265, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_7F3[] = { {"gg", 2, 0x0226B, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_7F6[] = { {"KJcy", 4, 0x0040C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_7F8[] = { {"gl", 2, 0x02277, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_7FB[] = { {"dblac", 5, 0x002DD, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_7FC[] = { {"lAtail", 6, 0x0291B, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_800[] = { {"gt", 2, 0x0003E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_802[] = { {"lotimes", 7, 0x02A34, 0}, {"seArr", 5, 0x021D8, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_803[] = { {"Lacute", 6, 0x00139, 0}, {"Laplacetrf", 10, 0x02112, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_808[] = { {"uuml", 4, 0x000FC, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_809[] = { {"Amacr", 5, 0x00100, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_80A[] = { {"Mfr", 3, 0x1D510, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_810[] = { {"Int", 3, 0x0222C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_811[] = { {"Vvdash", 6, 0x022AA, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_812[] = { {"Lcedil", 6, 0x0013B, 0}, {"larrlp", 6, 0x021AB, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_816[] = { {"Larr", 4, 0x0219E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_819[] = { {"CircleTimes", 11, 0x02297, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_81C[] = { {"NotReverseElement", 17, 0x0220C, 0}, {"latail", 6, 0x02919, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_81D[] = { {"ntrianglerighteq", 16, 0x022ED, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_821[] = { {"blk12", 5, 0x02592, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_822[] = { {"intlarhk", 8, 0x02A17, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_823[] = { {"blk14", 5, 0x02591, 0}, {"ccupssm", 7, 0x02A50, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_824[] = { {"hercon", 6, 0x022B9, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_828[] = { {"bigotimes", 9, 0x02A02, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_829[] = { {"amacr", 5, 0x00101, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_82D[] = { {"nrarrc", 6, 0x02933, 0x00338}, {NULL} };
+static const entity_cp_map ht_bucket_html5_82E[] = { {"ubreve", 6, 0x0016D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_830[] = { {"Yacute", 6, 0x000DD, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_831[] = { {"ic", 2, 0x02063, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_832[] = { {"escr", 4, 0x0212F, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_837[] = { {"ii", 2, 0x02148, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_838[] = { {"DownArrowUpArrow", 16, 0x021F5, 0}, {"nopf", 4, 0x1D55F, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_83C[] = { {"in", 2, 0x02208, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_83E[] = { {"bumpE", 5, 0x02AAE, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_83F[] = { {"rightharpoonup", 14, 0x021C0, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_841[] = { {"nrarrw", 6, 0x0219D, 0x00338}, {NULL} };
+static const entity_cp_map ht_bucket_html5_842[] = { {"it", 2, 0x02062, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_846[] = { {"ncaron", 6, 0x00148, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_84A[] = { {"succnsim", 8, 0x022E9, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_84C[] = { {"gammad", 6, 0x003DD, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_84F[] = { {"yucy", 4, 0x0044E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_850[] = { {"ocy", 3, 0x0043E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_855[] = { {"hybull", 6, 0x02043, 0}, {"rpargt", 6, 0x02994, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_857[] = { {"csube", 5, 0x02AD1, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_85B[] = { {"iiota", 5, 0x02129, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_85C[] = { {"nsim", 4, 0x02241, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_85E[] = { {"LeftTriangleEqual", 17, 0x022B4, 0}, {"bumpe", 5, 0x0224F, 0}, {"nearhk", 6, 0x02924, 0}, {"nhpar", 5, 0x02AF2, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_861[] = { {"risingdotseq", 12, 0x02253, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_865[] = { {"blk34", 5, 0x02593, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_866[] = { {"LeftTriangle", 12, 0x022B2, 0}, {"vBarv", 5, 0x02AE9, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_867[] = { {"AElig", 5, 0x000C6, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_868[] = { {"DoubleUpDownArrow", 17, 0x021D5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_86A[] = { {"cwint", 5, 0x02231, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_86B[] = { {"rtrie", 5, 0x022B5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_86C[] = { {"rtrif", 5, 0x025B8, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_873[] = { {"Fscr", 4, 0x02131, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_876[] = { {"lE", 2, 0x02266, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_879[] = { {"Oopf", 4, 0x1D546, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_87B[] = { {"spar", 4, 0x02225, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_87E[] = { {"uplus", 5, 0x0228E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_88A[] = { {"sacute", 6, 0x0015B, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_88C[] = { {"fltns", 5, 0x025B1, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_88E[] = { {"rrarr", 5, 0x021C9, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_892[] = { {"larrpl", 6, 0x02939, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_895[] = { {"ultri", 5, 0x025F8, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_896[] = { {"le", 2, 0x02264, 0}, {"xuplus", 6, 0x02A04, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_897[] = { {"ljcy", 4, 0x00459, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_898[] = { {"lg", 2, 0x02276, 0}, {"vsubnE", 6, 0x02ACB, 0x0FE00}, {NULL} };
+static const entity_cp_map ht_bucket_html5_899[] = { {"scedil", 6, 0x0015F, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_89D[] = { {"ll", 2, 0x0226A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_8A5[] = { {"lt", 2, 0x0003C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_8AC[] = { {"ofr", 3, 0x1D52C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_8B3[] = { {"nexists", 7, 0x02204, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_8B6[] = { {"smallsetminus", 13, 0x02216, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_8B7[] = { {"InvisibleComma", 14, 0x02063, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_8B8[] = { {"dotminus", 8, 0x02238, 0}, {"vsubne", 6, 0x0228A, 0x0FE00}, {NULL} };
+static const entity_cp_map ht_bucket_html5_8B9[] = { {"iocy", 4, 0x00451, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_8BA[] = { {"gsime", 5, 0x02A8E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_8BC[] = { {"Rarrtl", 6, 0x02916, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_8BD[] = { {"cirmid", 6, 0x02AEF, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_8C0[] = { {"ominus", 6, 0x02296, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_8C1[] = { {"gsiml", 5, 0x02A90, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_8C2[] = { {"Prime", 5, 0x02033, 0}, {"mp", 2, 0x02213, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_8C4[] = { {"tint", 4, 0x0222D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_8C7[] = { {"mu", 2, 0x003BC, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_8CF[] = { {"dbkarow", 7, 0x0290F, 0}, {"eopf", 4, 0x1D556, 0}, {"ogt", 3, 0x029C1, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_8D0[] = { {"Precedes", 8, 0x0227A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_8D3[] = { {"UpTeeArrow", 10, 0x021A5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_8D6[] = { {"varsupsetneq", 12, 0x0228B, 0x0FE00}, {NULL} };
+static const entity_cp_map ht_bucket_html5_8D8[] = { {"ne", 2, 0x02260, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_8DC[] = { {"ni", 2, 0x0220B, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_8DD[] = { {"mDDot", 5, 0x0223A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_8DE[] = { {"cularrp", 7, 0x0293D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_8DF[] = { {"rnmid", 5, 0x02AEE, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_8E0[] = { {"hardcy", 6, 0x0044A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_8E2[] = { {"prime", 5, 0x02032, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_8E3[] = { {"Bcy", 3, 0x00411, 0}, {"REG", 3, 0x000AE, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_8E7[] = { {"oS", 2, 0x024C8, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_8E8[] = { {"nu", 2, 0x003BD, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_8E9[] = { {"ohm", 3, 0x003A9, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_8EB[] = { {"langd", 5, 0x02991, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_8F3[] = { {"backprime", 9, 0x02035, 0}, {"esim", 4, 0x02242, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_8FB[] = { {"veeeq", 5, 0x0225A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_8FE[] = { {"RightCeiling", 12, 0x02309, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_8FF[] = { {"crarr", 5, 0x021B5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_904[] = { {"eqsim", 5, 0x02242, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_906[] = { {"or", 2, 0x02228, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_907[] = { {"OverParenthesis", 15, 0x023DC, 0}, {"UpperLeftArrow", 14, 0x02196, 0}, {"nleftrightarrow", 15, 0x021AE, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_909[] = { {"expectation", 11, 0x02130, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_90C[] = { {"coprod", 6, 0x02210, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_90E[] = { {"Qfr", 3, 0x1D514, 0}, {"dArr", 4, 0x021D3, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_910[] = { {"Fopf", 4, 0x1D53D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_913[] = { {"Cconint", 7, 0x02230, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_916[] = { {"larrtl", 6, 0x021A2, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_918[] = { {"Aacute", 6, 0x000C1, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_919[] = { {"DownLeftRightVector", 19, 0x02950, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_91B[] = { {"circleddash", 11, 0x0229D, 0}, {"thinsp", 6, 0x02009, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_91E[] = { {"Longrightarrow", 14, 0x027F9, 0}, {"pi", 2, 0x003C0, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_91F[] = { {"hookrightarrow", 14, 0x021AA, 0}, {"rscr", 4, 0x1D4C7, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_920[] = { {"scE", 3, 0x02AB4, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_922[] = { {"pm", 2, 0x000B1, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_923[] = { {"ZHcy", 4, 0x00416, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_927[] = { {"pr", 2, 0x0227A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_929[] = { {"LongLeftRightArrow", 18, 0x027F7, 0}, {"supset", 6, 0x02283, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_92A[] = { {"UpArrowBar", 10, 0x02912, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_92C[] = { {"Utilde", 6, 0x00168, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_92E[] = { {"xlArr", 5, 0x027F8, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_930[] = { {"DoubleUpArrow", 13, 0x021D1, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_936[] = { {"alefsym", 7, 0x02135, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_939[] = { {"Scirc", 5, 0x0015C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_93B[] = { {"xotime", 6, 0x02A02, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_93F[] = { {"Bfr", 3, 0x1D505, 0}, {"rdca", 4, 0x02937, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_940[] = { {"sce", 3, 0x02AB0, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_945[] = { {"Nacute", 6, 0x00143, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_947[] = { {"amalg", 5, 0x02A3F, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_94D[] = { {"UpDownArrow", 11, 0x02195, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_94F[] = { {"EqualTilde", 10, 0x02242, 0}, {"boxUL", 5, 0x0255D, 0}, {"oslash", 6, 0x000F8, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_950[] = { {"lnap", 4, 0x02A89, 0}, {"thorn", 5, 0x000FE, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_952[] = { {"ssmile", 6, 0x02323, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_953[] = { {"ndash", 5, 0x02013, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_954[] = { {"Ncedil", 6, 0x00145, 0}, {"scy", 3, 0x00441, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_955[] = { {"boxUR", 5, 0x0255A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_956[] = { {"Aring", 5, 0x000C5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_959[] = { {"scirc", 5, 0x0015D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_95B[] = { {"ccaron", 6, 0x0010D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_95D[] = { {"dotsquare", 9, 0x022A1, 0}, {"nshortmid", 9, 0x02224, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_95F[] = { {"rsquo", 5, 0x02019, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_960[] = { {"Sscr", 4, 0x1D4AE, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_963[] = { {"bigwedge", 8, 0x022C0, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_964[] = { {"Bernoullis", 10, 0x0212C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_969[] = { {"harrw", 5, 0x021AD, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_96C[] = { {"SquareSubset", 12, 0x0228F, 0}, {"boxVH", 5, 0x0256C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_96F[] = { {"boxUl", 5, 0x0255C, 0}, {"rx", 2, 0x0211E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_970[] = { {"boxVL", 5, 0x02563, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_974[] = { {"olt", 3, 0x029C0, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_975[] = { {"boxUr", 5, 0x02559, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_976[] = { {"aring", 5, 0x000E5, 0}, {"boxVR", 5, 0x02560, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_97B[] = { {"sc", 2, 0x0227B, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_97C[] = { {"NestedGreaterGreater", 20, 0x0226B, 0}, {"oast", 4, 0x0229B, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_97F[] = { {"star", 4, 0x02606, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_981[] = { {"LeftTeeVector", 13, 0x0295A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_983[] = { {"bigsqcup", 8, 0x02A06, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_985[] = { {"dcy", 3, 0x00434, 0}, {"preceq", 6, 0x02AAF, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_986[] = { {"otilde", 6, 0x000F5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_988[] = { {"luruhar", 7, 0x02966, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_98C[] = { {"boxVh", 5, 0x0256B, 0}, {"capand", 6, 0x02A44, 0}, {"yuml", 4, 0x000FF, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_98D[] = { {"Updownarrow", 11, 0x021D5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_98F[] = { {"TildeEqual", 10, 0x02243, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_990[] = { {"boxVl", 5, 0x02562, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_996[] = { {"boxVr", 5, 0x0255F, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_997[] = { {"HorizontalLine", 14, 0x02500, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_99B[] = { {"xmap", 4, 0x027FC, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_99C[] = { {"sigmaf", 6, 0x003C2, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_99E[] = { {"EmptySmallSquare", 16, 0x025FB, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_99F[] = { {"dzcy", 4, 0x0045F, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_9A0[] = { {"cups", 4, 0x0222A, 0x0FE00}, {"zwj", 3, 0x0200D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_9A1[] = { {"beta", 4, 0x003B2, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_9A6[] = { {"supsim", 6, 0x02AC8, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_9A8[] = { {"beth", 4, 0x02136, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_9AA[] = { {"Iukcy", 5, 0x00406, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_9AC[] = { {"eparsl", 6, 0x029E3, 0}, {"sigmav", 6, 0x003C2, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_9B0[] = { {"lhard", 5, 0x021BD, 0}, {"sfr", 3, 0x1D530, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_9B4[] = { {"nsqsupe", 7, 0x022E3, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_9B5[] = { {"Jsercy", 6, 0x00408, 0}, {"deg", 3, 0x000B0, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_9B6[] = { {"Ucy", 3, 0x00423, 0}, {"iscr", 4, 0x1D4BE, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_9B7[] = { {"efDot", 5, 0x02252, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_9BB[] = { {"uhblk", 5, 0x02580, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_9BC[] = { {"ropf", 4, 0x1D563, 0}, {"vprop", 5, 0x0221D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_9BD[] = { {"isinE", 5, 0x022F9, 0}, {"raemptyv", 8, 0x029B3, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_9C1[] = { {"lharu", 5, 0x021BC, 0}, {"ncongdot", 8, 0x02A6D, 0x00338}, {NULL} };
+static const entity_cp_map ht_bucket_html5_9C2[] = { {"subnE", 5, 0x02ACB, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_9C3[] = { {"ngsim", 5, 0x02275, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_9C5[] = { {"starf", 5, 0x02605, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_9C9[] = { {"Ograve", 6, 0x000D2, 0}, {"hksearow", 8, 0x02925, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_9CA[] = { {"iukcy", 5, 0x00456, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_9CC[] = { {"uacute", 6, 0x000FA, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_9CF[] = { {"asymp", 5, 0x02248, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_9D5[] = { {"lneq", 4, 0x02A87, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_9D6[] = { {"Otimes", 6, 0x02A37, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_9DA[] = { {"NotTildeTilde", 13, 0x02249, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_9DB[] = { {"Integral", 8, 0x0222B, 0}, {"rbrke", 5, 0x0298C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_9DD[] = { {"nsub", 4, 0x02284, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_9DE[] = { {"rlhar", 5, 0x021CC, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_9E1[] = { {"dfr", 3, 0x1D521, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_9E2[] = { {"subne", 5, 0x0228A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_9E5[] = { {"varnothing", 10, 0x02205, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_9E7[] = { {"Fcy", 3, 0x00424, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_9E9[] = { {"DoubleLeftTee", 13, 0x02AE4, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_9EB[] = { {"isins", 5, 0x022F4, 0}, {"nsup", 4, 0x02285, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_9ED[] = { {"circlearrowleft", 15, 0x021BA, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_9EE[] = { {"isinv", 5, 0x02208, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_9EF[] = { {"IEcy", 4, 0x00415, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_9F0[] = { {"conint", 6, 0x0222E, 0}, {"vBar", 4, 0x02AE8, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_9F1[] = { {"edot", 4, 0x00117, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_9F2[] = { {"Kappa", 5, 0x0039A, 0}, {"MediumSpace", 11, 0x0205F, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_9F3[] = { {"lbrksld", 7, 0x0298F, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_9F4[] = { {"sect", 4, 0x000A7, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_9F5[] = { {"nldr", 4, 0x02025, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_9F7[] = { {"Jscr", 4, 0x1D4A5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_9F9[] = { {"shy", 3, 0x000AD, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_9FA[] = { {"ulcrop", 6, 0x0230F, 0}, {"veebar", 6, 0x022BB, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_9FD[] = { {"Sopf", 4, 0x1D54A, 0}, {"cuwed", 5, 0x022CF, 0}, {"rAarr", 5, 0x021DB, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A01[] = { {"erarr", 5, 0x02971, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A04[] = { {"lbrkslu", 7, 0x0298D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A05[] = { {"NotSucceeds", 11, 0x02281, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A06[] = { {"nsccue", 6, 0x022E1, 0}, {"subrarr", 7, 0x02979, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A08[] = { {"looparrowright", 14, 0x021AC, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A0C[] = { {"wp", 2, 0x02118, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A0D[] = { {"Emacr", 5, 0x00112, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A0E[] = { {"sim", 3, 0x0223C, 0}, {"wr", 2, 0x02240, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A10[] = { {"Udblac", 6, 0x00170, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A12[] = { {"Ufr", 3, 0x1D518, 0}, {"kappa", 5, 0x003BA, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A14[] = { {"notindot", 8, 0x022F5, 0x00338}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A15[] = { {"nleq", 4, 0x02270, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A16[] = { {"NestedLessLess", 14, 0x0226A, 0}, {"square", 6, 0x025A1, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A17[] = { {"nles", 4, 0x02A7D, 0x00338}, {"squarf", 6, 0x025AA, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A21[] = { {"order", 5, 0x02134, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A23[] = { {"igrave", 6, 0x000EC, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A24[] = { {"precneqq", 8, 0x02AB5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A25[] = { {"csupe", 5, 0x02AD2, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A26[] = { {"xi", 2, 0x003BE, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A28[] = { {"NotHumpEqual", 12, 0x0224F, 0x00338}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A2A[] = { {"ord", 3, 0x02A5D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A2D[] = { {"emacr", 5, 0x00113, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A30[] = { {"nwnear", 6, 0x02927, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A32[] = { {"nprcue", 6, 0x022E0, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A36[] = { {"NotExists", 9, 0x02204, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A37[] = { {"die", 3, 0x000A8, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A39[] = { {"ddotseq", 7, 0x02A77, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A3B[] = { {"Dashv", 5, 0x02AE4, 0}, {"Ucirc", 5, 0x000DB, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A3C[] = { {"orv", 3, 0x02A5B, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A3D[] = { {"Because", 7, 0x02235, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A41[] = { {"kgreen", 6, 0x00138, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A43[] = { {"Ffr", 3, 0x1D509, 0}, {"LeftVector", 10, 0x021BC, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A44[] = { {"lstrok", 6, 0x00142, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A45[] = { {"twixt", 5, 0x0226C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A48[] = { {"compfn", 6, 0x02218, 0}, {"div", 3, 0x000F7, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A4F[] = { {"drcrop", 6, 0x0230C, 0}, {"shortmid", 8, 0x02223, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A53[] = { {"iopf", 4, 0x1D55A, 0}, {"triangledown", 12, 0x025BF, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A54[] = { {"IJlig", 5, 0x00132, 0}, {"thetasym", 8, 0x003D1, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A56[] = { {"Sigma", 5, 0x003A3, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A57[] = { {"equivDD", 7, 0x02A78, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A5A[] = { {"Cacute", 6, 0x00106, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A5B[] = { {"dashv", 5, 0x022A3, 0}, {"ucirc", 5, 0x000FB, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A61[] = { {"gneqq", 5, 0x02269, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A62[] = { {"gvertneqq", 9, 0x02269, 0x0FE00}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A63[] = { {"RightDownVectorBar", 18, 0x02955, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A64[] = { {"NotLessLess", 11, 0x0226A, 0x00338}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A69[] = { {"Ccedil", 6, 0x000C7, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A6A[] = { {"odblac", 6, 0x00151, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A6B[] = { {"mstpos", 6, 0x0223E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A6D[] = { {"cemptyv", 7, 0x029B2, 0}, {"rarrap", 6, 0x02975, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A6F[] = { {"rmoust", 6, 0x023B1, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A70[] = { {"elsdot", 6, 0x02A97, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A76[] = { {"sigma", 5, 0x003C3, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A78[] = { {"Implies", 7, 0x021D2, 0}, {"isin", 4, 0x02208, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A7A[] = { {"bottom", 6, 0x022A5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A7E[] = { {"ShortRightArrow", 15, 0x02192, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A81[] = { {"cupcap", 6, 0x02A46, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A82[] = { {"NotSquareSuperset", 17, 0x02290, 0x00338}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A84[] = { {"LeftArrowRightArrow", 19, 0x021C6, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A85[] = { {"FilledVerySmallSquare", 21, 0x025AA, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A86[] = { {"LeftUpTeeVector", 15, 0x02960, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A89[] = { {"DoubleRightArrow", 16, 0x021D2, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A8D[] = { {"raquo", 5, 0x000BB, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A8E[] = { {"Ascr", 4, 0x1D49C, 0}, {"ReverseUpEquilibrium", 20, 0x0296F, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A92[] = { {"hArr", 4, 0x021D4, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A94[] = { {"Jopf", 4, 0x1D541, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A96[] = { {"npar", 4, 0x02226, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A98[] = { {"SupersetEqual", 13, 0x02287, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A99[] = { {"ffllig", 6, 0x0FB04, 0}, {"smt", 3, 0x02AAA, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A9A[] = { {"twoheadrightarrow", 17, 0x021A0, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A9D[] = { {"ecaron", 6, 0x0011B, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_A9F[] = { {"NotRightTriangleBar", 19, 0x029D0, 0x00338}, {NULL} };
+static const entity_cp_map ht_bucket_html5_AA3[] = { {"apid", 4, 0x0224B, 0}, {"vscr", 4, 0x1D4CB, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_AA4[] = { {"supdot", 6, 0x02ABE, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_AA5[] = { {"colone", 6, 0x02254, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_AA7[] = { {"dwangle", 7, 0x029A6, 0}, {"shchcy", 6, 0x00449, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_AAC[] = { {"ltdot", 5, 0x022D6, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_AB2[] = { {"downharpoonright", 16, 0x021C2, 0}, {"gjcy", 4, 0x00453, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_AB4[] = { {"wfr", 3, 0x1D534, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_AB5[] = { {"rfisht", 6, 0x0297D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_ABA[] = { {"Ycy", 3, 0x0042B, 0}, {"swarrow", 7, 0x02199, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_AC0[] = { {"nharr", 5, 0x021AE, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_AC4[] = { {"frac12", 6, 0x000BD, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_AC5[] = { {"frac13", 6, 0x02153, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_AC6[] = { {"frac14", 6, 0x000BC, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_AC7[] = { {"GreaterEqual", 12, 0x02265, 0}, {"frac15", 6, 0x02155, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_AC8[] = { {"Gamma", 5, 0x00393, 0}, {"frac16", 6, 0x02159, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_ACA[] = { {"dzigrarr", 8, 0x027FF, 0}, {"frac18", 6, 0x0215B, 0}, {"rcaron", 6, 0x00159, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_ACC[] = { {"DownRightTeeVector", 18, 0x0295F, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_ACF[] = { {"nvrtrie", 7, 0x022B5, 0x020D2}, {NULL} };
+static const entity_cp_map ht_bucket_html5_AD2[] = { {"iota", 4, 0x003B9, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_AD3[] = { {"sol", 3, 0x0002F, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_AD4[] = { {"rbrace", 6, 0x0007D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_ADA[] = { {"rbrack", 6, 0x0005D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_ADD[] = { {"rsqb", 4, 0x0005D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_ADF[] = { {"oint", 4, 0x0222E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_AE4[] = { {"Wscr", 4, 0x1D4B2, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_AE5[] = { {"hfr", 3, 0x1D525, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_AE6[] = { {"frac23", 6, 0x02154, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_AE7[] = { {"dlcorn", 6, 0x0231E, 0}, {"verbar", 6, 0x0007C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_AE8[] = { {"frac25", 6, 0x02156, 0}, {"gamma", 5, 0x003B3, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_AE9[] = { {"nVDash", 6, 0x022AF, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_AEB[] = { {"Jcy", 3, 0x00419, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_AF5[] = { {"nwarrow", 7, 0x02196, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_AF6[] = { {"OverBar", 7, 0x0203E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_AF7[] = { {"rightsquigarrow", 15, 0x0219D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_AFA[] = { {"iexcl", 5, 0x000A1, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_AFD[] = { {"sqcap", 5, 0x02293, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_AFE[] = { {"pertenk", 7, 0x02031, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B08[] = { {"PrecedesEqual", 13, 0x02AAF, 0}, {"frac34", 6, 0x000BE, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B09[] = { {"Therefore", 9, 0x02234, 0}, {"frac35", 6, 0x02157, 0}, {"nvDash", 6, 0x022AD, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B0A[] = { {"odsold", 6, 0x029BC, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B0C[] = { {"dot", 3, 0x002D9, 0}, {"frac38", 6, 0x0215C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B10[] = { {"sqcaps", 6, 0x02293, 0x0FE00}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B11[] = { {"ZeroWidthSpace", 14, 0x0200B, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B15[] = { {"rarrfs", 6, 0x0291E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B16[] = { {"Yfr", 3, 0x1D51C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B1E[] = { {"CircleDot", 9, 0x02299, 0}, {"gtcir", 5, 0x02A7A, 0}, {"squ", 3, 0x025A1, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B1F[] = { {"angmsd", 6, 0x02221, 0}, {"nsubseteq", 9, 0x02288, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B23[] = { {"iprod", 5, 0x02A3C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B24[] = { {"bprime", 6, 0x02035, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B27[] = { {"supsub", 6, 0x02AD4, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B29[] = { {"SquareSupersetEqual", 19, 0x02292, 0}, {"therefore", 9, 0x02234, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B2A[] = { {"frac45", 6, 0x02158, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B2B[] = { {"Aopf", 4, 0x1D538, 0}, {"NotGreaterFullEqual", 19, 0x02267, 0x00338}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B2C[] = { {"Tstrok", 6, 0x00166, 0}, {"rightleftarrows", 15, 0x021C4, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B2D[] = { {"Fouriertrf", 10, 0x02131, 0}, {"epar", 4, 0x022D5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B2E[] = { {"omid", 4, 0x029B6, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B2F[] = { {"OpenCurlyDoubleQuote", 20, 0x0201C, 0}, {"dagger", 6, 0x02020, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B33[] = { {"semi", 4, 0x0003B, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B35[] = { {"supsup", 6, 0x02AD6, 0}, {"zeetrf", 6, 0x02128, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B36[] = { {"DifferentialD", 13, 0x02146, 0}, {"topcir", 6, 0x02AF1, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B3A[] = { {"mscr", 4, 0x1D4C2, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B3D[] = { {"Wcirc", 5, 0x00174, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B3E[] = { {"boxdL", 5, 0x02555, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B40[] = { {"Gbreve", 6, 0x0011E, 0}, {"vopf", 4, 0x1D567, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B42[] = { {"lap", 3, 0x02A85, 0}, {"llarr", 5, 0x021C7, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B44[] = { {"boxdR", 5, 0x02552, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B46[] = { {"RightAngleBracket", 17, 0x027E9, 0}, {"lat", 3, 0x02AAB, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B47[] = { {"Jfr", 3, 0x1D50D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B4C[] = { {"frac56", 6, 0x0215A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B4E[] = { {"frac58", 6, 0x0215D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B4F[] = { {"rarrhk", 6, 0x021AA, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B50[] = { {"lesdot", 6, 0x02A7F, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B51[] = { {"ApplyFunction", 13, 0x02061, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B52[] = { {"NotGreaterTilde", 15, 0x02275, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B53[] = { {"Cedilla", 7, 0x000B8, 0}, {"curvearrowright", 15, 0x021B7, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B56[] = { {"rdsh", 4, 0x021B3, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B58[] = { {"larrb", 5, 0x021E4, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B5C[] = { {"vrtri", 5, 0x022B3, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B5D[] = { {"nequiv", 6, 0x02262, 0}, {"wcirc", 5, 0x00175, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B5E[] = { {"boxdl", 5, 0x02510, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B63[] = { {"DoubleDownArrow", 15, 0x021D3, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B64[] = { {"boxdr", 5, 0x0250C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B67[] = { {"pluscir", 7, 0x02A22, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B69[] = { {"longmapsto", 10, 0x027FC, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B6B[] = { {"gnap", 4, 0x02A8A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B6D[] = { {"bigodot", 7, 0x02A00, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B72[] = { {"thickapprox", 11, 0x02248, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B73[] = { {"DotDot", 6, 0x020DC, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B77[] = { {"incare", 6, 0x02105, 0}, {"rarrbfs", 7, 0x02920, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B78[] = { {"apos", 4, 0x00027, 0}, {"tbrk", 4, 0x023B4, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B7A[] = { {"grave", 5, 0x00060, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B7B[] = { {"Nscr", 4, 0x1D4A9, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B7E[] = { {"rangle", 6, 0x027E9, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B7F[] = { {"uArr", 4, 0x021D1, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B81[] = { {"Wopf", 4, 0x1D54E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B82[] = { {"doteq", 5, 0x02250, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B87[] = { {"times", 5, 0x000D7, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B8D[] = { {"fflig", 5, 0x0FB00, 0}, {"lcy", 3, 0x0043B, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B8F[] = { {"sub", 3, 0x02282, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B90[] = { {"frac78", 6, 0x0215E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B94[] = { {"xrarr", 5, 0x027F6, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B98[] = { {"UpArrowDownArrow", 16, 0x021C5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B99[] = { {"bbrktbrk", 8, 0x023B6, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B9A[] = { {"abreve", 6, 0x00103, 0}, {"lsaquo", 6, 0x02039, 0}, {"sum", 3, 0x02211, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B9C[] = { {"Eacute", 6, 0x000C9, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_B9D[] = { {"sup", 3, 0x02283, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_BA5[] = { {"ContourIntegral", 15, 0x0222E, 0}, {"DiacriticalDot", 14, 0x002D9, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_BA9[] = { {"trisb", 5, 0x029CD, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_BAE[] = { {"Hcirc", 5, 0x00124, 0}, {"lceil", 5, 0x02308, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_BB2[] = { {"Zcaron", 6, 0x0017D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_BB5[] = { {"looparrowleft", 13, 0x021AB, 0}, {"oelig", 5, 0x00153, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_BB6[] = { {"LessSlantEqual", 14, 0x02A7D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_BB7[] = { {"NegativeThinSpace", 17, 0x0200B, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_BBA[] = { {"boxhD", 5, 0x02565, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_BBC[] = { {"omicron", 7, 0x003BF, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_BBD[] = { {"leg", 3, 0x022DA, 0}, {"rightthreetimes", 15, 0x022CC, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_BBF[] = { {"NotSucceedsSlantEqual", 21, 0x022E1, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_BC1[] = { {"angmsdaa", 8, 0x029A8, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_BC2[] = { {"angmsdab", 8, 0x029A9, 0}, {"rAtail", 6, 0x0291C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_BC3[] = { {"angmsdac", 8, 0x029AA, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_BC4[] = { {"angmsdad", 8, 0x029AB, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_BC5[] = { {"angmsdae", 8, 0x029AC, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_BC6[] = { {"angmsdaf", 8, 0x029AD, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_BC7[] = { {"angmsdag", 8, 0x029AE, 0}, {"leq", 3, 0x02264, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_BC8[] = { {"angmsdah", 8, 0x029AF, 0}, {"solbar", 6, 0x0233F, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_BC9[] = { {"Racute", 6, 0x00154, 0}, {"les", 3, 0x02A7D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_BCB[] = { {"boxhU", 5, 0x02568, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_BCE[] = { {"hcirc", 5, 0x00125, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_BD1[] = { {"dscr", 4, 0x1D4B9, 0}, {"smashp", 6, 0x02A33, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_BD7[] = { {"mopf", 4, 0x1D55E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_BD8[] = { {"Rcedil", 6, 0x00156, 0}, {"dscy", 4, 0x00455, 0}, {"prap", 4, 0x02AB7, 0}, {"rarrlp", 6, 0x021AC, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_BD9[] = { {"Aogon", 5, 0x00104, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_BDA[] = { {"boxhd", 5, 0x0252C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_BDB[] = { {"subset", 6, 0x02282, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_BDD[] = { {"lgE", 3, 0x02A91, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_BDF[] = { {"epsilon", 7, 0x003B5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_BE1[] = { {"curarrm", 7, 0x0293C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_BE2[] = { {"ratail", 6, 0x0291A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_BE4[] = { {"DoubleLongLeftRightArrow", 24, 0x027FA, 0}, {"rhov", 4, 0x003F1, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_BE7[] = { {"LeftDoubleBracket", 17, 0x027E6, 0}, {"Lleftarrow", 10, 0x021DA, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_BE8[] = { {"Uuml", 4, 0x000DC, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_BE9[] = { {"lfr", 3, 0x1D529, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_BEA[] = { {"minusdu", 7, 0x02A2A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_BEB[] = { {"boxhu", 5, 0x02534, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_BEF[] = { {"Ncy", 3, 0x0041D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_BF0[] = { {"gneq", 4, 0x02A88, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_BF1[] = { {"rangd", 5, 0x02992, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_BF2[] = { {"range", 5, 0x029A5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_BF3[] = { {"lfloor", 6, 0x0230A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_BF7[] = { {"NotSucceedsTilde", 16, 0x0227F, 0x00338}, {NULL} };
+static const entity_cp_map ht_bucket_html5_BF9[] = { {"aogon", 5, 0x00105, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_BFA[] = { {"NotGreaterSlantEqual", 20, 0x02A7E, 0x00338}, {"NotSquareSupersetEqual", 22, 0x022E3, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_BFC[] = { {"profsurf", 8, 0x02313, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_C02[] = { {"wedgeq", 6, 0x02259, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_C0B[] = { {"Alpha", 5, 0x00391, 0}, {"DiacriticalDoubleAcute", 22, 0x002DD, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_C0C[] = { {"lltri", 5, 0x025FA, 0}, {"tcaron", 6, 0x00165, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_C11[] = { {"Imacr", 5, 0x0012A, 0}, {"subseteq", 8, 0x02286, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_C12[] = { {"Escr", 4, 0x02130, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_C16[] = { {"lArr", 4, 0x021D0, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_C18[] = { {"Nopf", 4, 0x02115, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_C1A[] = { {"rpar", 4, 0x00029, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_C1D[] = { {"divonx", 6, 0x022C7, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_C1E[] = { {"olcir", 5, 0x029BE, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_C23[] = { {"lacute", 6, 0x0013A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_C27[] = { {"zscr", 4, 0x1D4CF, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_C2B[] = { {"alpha", 5, 0x003B1, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_C31[] = { {"imacr", 5, 0x0012B, 0}, {"vellip", 6, 0x022EE, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_C32[] = { {"lcedil", 6, 0x0013C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_C33[] = { {"sime", 4, 0x02243, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_C34[] = { {"empty", 5, 0x02205, 0}, {"imped", 5, 0x001B5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_C35[] = { {"simg", 4, 0x02A9E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_C36[] = { {"kjcy", 4, 0x0045C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_C3A[] = { {"siml", 4, 0x02A9D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_C3E[] = { {"LessEqualGreater", 16, 0x022DA, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_C3F[] = { {"Ycirc", 5, 0x00176, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_C40[] = { {"RoundImplies", 12, 0x02970, 0}, {"nvrArr", 6, 0x02903, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_C43[] = { {"check", 5, 0x02713, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_C44[] = { {"nlarr", 5, 0x0219A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_C46[] = { {"middot", 6, 0x000B7, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_C48[] = { {"par", 3, 0x02225, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_C4A[] = { {"NotGreaterGreater", 17, 0x0226B, 0x00338}, {NULL} };
+static const entity_cp_map ht_bucket_html5_C4B[] = { {"Nfr", 3, 0x1D511, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_C4F[] = { {"nwArr", 5, 0x021D6, 0}, {"prec", 4, 0x0227A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_C50[] = { {"Barv", 4, 0x02AE7, 0}, {"yacute", 6, 0x000FD, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_C54[] = { {"DoubleLeftRightArrow", 20, 0x021D4, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_C58[] = { {"Coproduct", 9, 0x02210, 0}, {"rarrpl", 6, 0x02945, 0}, {"subsim", 6, 0x02AC7, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_C5A[] = { {"ntgl", 4, 0x02279, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_C5B[] = { {"LeftTriangleBar", 15, 0x029CF, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_C5F[] = { {"ycirc", 5, 0x00177, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_C69[] = { {"doteqdot", 8, 0x02251, 0}, {"nang", 4, 0x02220, 0x020D2}, {NULL} };
+static const entity_cp_map ht_bucket_html5_C6B[] = { {"bigcap", 6, 0x022C2, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_C6C[] = { {"CHcy", 4, 0x00427, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_C6E[] = { {"dopf", 4, 0x1D555, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_C72[] = { {"inodot", 6, 0x00131, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_C76[] = { {"nvHarr", 6, 0x02904, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_C77[] = { {"laemptyv", 8, 0x029B4, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_C78[] = { {"bigcirc", 7, 0x025EF, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_C7A[] = { {"scnap", 5, 0x02ABA, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_C7B[] = { {"DownLeftVector", 14, 0x021BD, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_C80[] = { {"race", 4, 0x0223D, 0x00331}, {NULL} };
+static const entity_cp_map ht_bucket_html5_C82[] = { {"vartriangleright", 16, 0x022B3, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_C89[] = { {"napE", 4, 0x02A70, 0x00338}, {"supedot", 7, 0x02AC4, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_C8E[] = { {"acE", 3, 0x0223E, 0x00333}, {NULL} };
+static const entity_cp_map ht_bucket_html5_C91[] = { {"pcy", 3, 0x0043F, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_C93[] = { {"qprime", 6, 0x02057, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_C94[] = { {"RightTeeVector", 14, 0x0295B, 0}, {"curlyvee", 8, 0x022CE, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_C95[] = { {"swarhk", 6, 0x02926, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_C98[] = { {"Atilde", 6, 0x000C3, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_CA6[] = { {"bbrk", 4, 0x023B5, 0}, {"prnap", 5, 0x02AB9, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_CA8[] = { {"image", 5, 0x02111, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_CA9[] = { {"sext", 4, 0x02736, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_CAA[] = { {"ldquo", 5, 0x0201C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_CAC[] = { {"NotLeftTriangleBar", 18, 0x029CF, 0x00338}, {"epsiv", 5, 0x003F5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_CAD[] = { {"CenterDot", 9, 0x000B7, 0}, {"acd", 3, 0x0223F, 0}, {"upuparrows", 10, 0x021C8, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_CAF[] = { {"Eopf", 4, 0x1D53C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_CB0[] = { {"Jcirc", 5, 0x00134, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_CB2[] = { {"smid", 4, 0x02223, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_CB4[] = { {"bull", 4, 0x02022, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_CB6[] = { {"rhard", 5, 0x021C1, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_CB7[] = { {"nsupset", 7, 0x02283, 0x020D2}, {NULL} };
+static const entity_cp_map ht_bucket_html5_CBA[] = { {"npre", 4, 0x02AAF, 0x00338}, {NULL} };
+static const entity_cp_map ht_bucket_html5_CBE[] = { {"qscr", 4, 0x1D4C6, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_CC2[] = { {"acy", 3, 0x00430, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_CC4[] = { {"lnE", 3, 0x02268, 0}, {"zopf", 4, 0x1D56B, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_CC5[] = { {"Ntilde", 6, 0x000D1, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_CC7[] = { {"rharu", 5, 0x021C0, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_CC8[] = { {"kappav", 6, 0x003F0, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_CC9[] = { {"timesb", 6, 0x022A0, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_CCB[] = { {"iiiint", 6, 0x02A0C, 0}, {"timesd", 6, 0x02A30, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_CD0[] = { {"jcirc", 5, 0x00135, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_CD2[] = { {"nsimeq", 6, 0x02244, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_CD3[] = { {"Esim", 4, 0x02A73, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_CD9[] = { {"Cap", 3, 0x022D2, 0}, {"bump", 4, 0x0224E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_CDA[] = { {"lvnE", 4, 0x02268, 0x0FE00}, {NULL} };
+static const entity_cp_map ht_bucket_html5_CDC[] = { {"rarrtl", 6, 0x021A3, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_CE4[] = { {"lne", 3, 0x02A87, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_CE6[] = { {"commat", 6, 0x00040, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_CE8[] = { {"hslash", 6, 0x0210F, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_CE9[] = { {"lthree", 6, 0x022CB, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_CED[] = { {"Gcedil", 6, 0x00122, 0}, {"pfr", 3, 0x1D52D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_CF1[] = { {"RightTriangleEqual", 18, 0x022B5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_CF2[] = { {"ngeqslant", 9, 0x02A7E, 0x00338}, {NULL} };
+static const entity_cp_map ht_bucket_html5_CF3[] = { {"Rcy", 3, 0x00420, 0}, {"gimel", 5, 0x02137, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_CF4[] = { {"curarr", 6, 0x021B7, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_CFA[] = { {"ntlg", 4, 0x02278, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_CFF[] = { {"Rscr", 4, 0x0211B, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D00[] = { {"urcrop", 6, 0x0230E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D06[] = { {"Poincareplane", 13, 0x0210C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D07[] = { {"NoBreak", 7, 0x02060, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D0B[] = { {"lcub", 4, 0x0007B, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D0E[] = { {"nltri", 5, 0x022EA, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D10[] = { {"blacktriangledown", 17, 0x025BE, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D11[] = { {"fjlig", 5, 0x00066, 0x0006A}, {"percnt", 6, 0x00025, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D12[] = { {"rightharpoondown", 16, 0x021C1, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D13[] = { {"LeftAngleBracket", 16, 0x027E8, 0}, {"npreceq", 7, 0x02AAF, 0x00338}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D15[] = { {"cupcup", 6, 0x02A4A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D18[] = { {"LeftVectorBar", 13, 0x02952, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D19[] = { {"NJcy", 4, 0x0040A, 0}, {"triangleright", 13, 0x025B9, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D1A[] = { {"Tcedil", 6, 0x00162, 0}, {"loz", 3, 0x025CA, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D1E[] = { {"afr", 3, 0x1D51E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D1F[] = { {"NotLessTilde", 12, 0x02274, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D20[] = { {"NotElement", 10, 0x02209, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D22[] = { {"NotHumpDownHump", 15, 0x0224E, 0x00338}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D24[] = { {"SquareSubsetEqual", 17, 0x02291, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D26[] = { {"nleqq", 5, 0x02266, 0x00338}, {"phi", 3, 0x003C6, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D2A[] = { {"NotRightTriangle", 16, 0x022EB, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D32[] = { {"lhblk", 5, 0x02584, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D34[] = { {"caret", 5, 0x02041, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D35[] = { {"bsemi", 5, 0x0204F, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D38[] = { {"aacute", 6, 0x000E1, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D39[] = { {"mapsto", 6, 0x021A6, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D3A[] = { {"Congruent", 9, 0x02261, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D3B[] = { {"Vdash", 5, 0x022A9, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D3E[] = { {"longrightarrow", 14, 0x027F6, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D42[] = { {"iinfin", 6, 0x029DC, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D44[] = { {"EmptyVerySmallSquare", 20, 0x025AB, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D49[] = { {"real", 4, 0x0211C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D4C[] = { {"SucceedsEqual", 13, 0x02AB0, 0}, {"utilde", 6, 0x00169, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D4F[] = { {"Rfr", 3, 0x0211C, 0}, {"tau", 3, 0x003C4, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D51[] = { {"Wedge", 5, 0x022C0, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D54[] = { {"piv", 3, 0x003D6, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D55[] = { {"hscr", 4, 0x1D4BD, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D56[] = { {"subdot", 6, 0x02ABD, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D57[] = { {"dsol", 4, 0x029F6, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D5A[] = { {"prnE", 4, 0x02AB5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D5B[] = { {"qopf", 4, 0x1D562, 0}, {"vdash", 5, 0x022A2, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D5F[] = { {"Star", 4, 0x022C6, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D63[] = { {"sqsupseteq", 10, 0x02292, 0}, {"zhcy", 4, 0x00436, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D65[] = { {"nacute", 6, 0x00144, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D69[] = { {"lessgtr", 7, 0x02276, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D6A[] = { {"nless", 5, 0x0226E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D6C[] = { {"RightTeeArrow", 13, 0x021A6, 0}, {"Yuml", 4, 0x00178, 0}, {"target", 6, 0x02316, 0}, {"upharpoonleft", 13, 0x021BF, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D6F[] = { {"between", 7, 0x0226C, 0}, {"boxuL", 5, 0x0255B, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D70[] = { {"TSHcy", 5, 0x0040B, 0}, {"lrm", 3, 0x0200E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D71[] = { {"excl", 4, 0x00021, 0}, {"hyphen", 6, 0x02010, 0}, {"mlcp", 4, 0x02ADB, 0}, {"wedge", 5, 0x02227, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D74[] = { {"ncedil", 6, 0x00146, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D75[] = { {"boxuR", 5, 0x02558, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D76[] = { {"Not", 3, 0x02AEC, 0}, {"epsi", 4, 0x003B5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D7C[] = { {"disin", 5, 0x022F2, 0}, {"nRightarrow", 11, 0x021CF, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D7D[] = { {"cylcty", 6, 0x0232D, 0}, {"neArr", 5, 0x021D7, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D7E[] = { {"prnsim", 6, 0x022E8, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D80[] = { {"Cfr", 3, 0x0212D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D81[] = { {"Beta", 4, 0x00392, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D85[] = { {"leftarrowtail", 13, 0x021A2, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D87[] = { {"parsl", 5, 0x02AFD, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D89[] = { {"xwedge", 6, 0x022C0, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D8A[] = { {"olcross", 7, 0x029BB, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D8C[] = { {"boxvH", 5, 0x0256A, 0}, {"lsh", 3, 0x021B0, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D8D[] = { {"circledR", 8, 0x000AE, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D8E[] = { {"Rho", 3, 0x003A1, 0}, {"circledS", 8, 0x024C8, 0}, {"cupor", 5, 0x02A45, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D8F[] = { {"Ugrave", 6, 0x000D9, 0}, {"boxul", 5, 0x02518, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D90[] = { {"boxvL", 5, 0x02561, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D91[] = { {"sqcup", 5, 0x02294, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D93[] = { {"rect", 4, 0x025AD, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D94[] = { {"mldr", 4, 0x02026, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D95[] = { {"boxur", 5, 0x02514, 0}, {"digamma", 7, 0x003DD, 0}, {"tcy", 3, 0x00442, 0}, {"urcorner", 8, 0x0231D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D96[] = { {"DoubleLeftArrow", 15, 0x021D0, 0}, {"Iscr", 4, 0x02110, 0}, {"boxvR", 5, 0x0255E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D98[] = { {"ulcorn", 6, 0x0231C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D9A[] = { {"prod", 4, 0x0220F, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_D9C[] = { {"Ropf", 4, 0x0211D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_DA0[] = { {"rmoustache", 10, 0x023B1, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_DA5[] = { {"NegativeMediumSpace", 19, 0x0200B, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_DA6[] = { {"prop", 4, 0x0221D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_DA8[] = { {"TScy", 4, 0x00426, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_DA9[] = { {"xsqcup", 6, 0x02A06, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_DAC[] = { {"bemptyv", 7, 0x029B0, 0}, {"boxvh", 5, 0x0253C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_DB0[] = { {"boxvl", 5, 0x02524, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_DB3[] = { {"NotTildeFullEqual", 17, 0x02247, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_DB4[] = { {"subE", 4, 0x02AC5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_DB6[] = { {"boxvr", 5, 0x0251C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_DB7[] = { {"bigvee", 6, 0x022C1, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_DB9[] = { {"Chi", 3, 0x003A7, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_DBC[] = { {"circeq", 6, 0x02257, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_DBE[] = { {"emsp13", 6, 0x02004, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_DBF[] = { {"emsp14", 6, 0x02005, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_DC2[] = { {"ouml", 4, 0x000F6, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_DC3[] = { {"RightArrowBar", 13, 0x021E5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_DC6[] = { {"ecy", 3, 0x0044D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_DC8[] = { {"succneqq", 8, 0x02AB6, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_DCA[] = { {"npart", 5, 0x02202, 0x00338}, {NULL} };
+static const entity_cp_map ht_bucket_html5_DCF[] = { {"Element", 7, 0x02208, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_DD1[] = { {"Edot", 4, 0x00116, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_DD3[] = { {"RightUpDownVector", 17, 0x0294F, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_DD4[] = { {"sube", 4, 0x02286, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_DD5[] = { {"jsercy", 6, 0x00458, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_DD7[] = { {"varrho", 6, 0x003F1, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_DD9[] = { {"subsub", 6, 0x02AD5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_DDC[] = { {"Dcaron", 6, 0x0010E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_DDD[] = { {"Eogon", 5, 0x00118, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_DE4[] = { {"geqslant", 8, 0x02A7E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_DE6[] = { {"rdldhar", 7, 0x02969, 0}, {"zdot", 4, 0x0017C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_DE7[] = { {"subsup", 6, 0x02AD3, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_DE9[] = { {"ograve", 6, 0x000F2, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_DEB[] = { {"ReverseElement", 14, 0x0220B, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_DED[] = { {"drcorn", 6, 0x0231F, 0}, {"rang", 4, 0x027E9, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_DF1[] = { {"tfr", 3, 0x1D531, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_DF2[] = { {"hopf", 4, 0x1D559, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_DF3[] = { {"succ", 4, 0x0227B, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_DF6[] = { {"otimes", 6, 0x02297, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_DF7[] = { {"Vcy", 3, 0x00412, 0}, {"ltquest", 7, 0x02A7B, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_DF9[] = { {"lozenge", 7, 0x025CA, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_DFB[] = { {"LeftDownVector", 14, 0x021C3, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_DFD[] = { {"eogon", 5, 0x00119, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E03[] = { {"amp", 3, 0x00026, 0}, {"lopar", 5, 0x02985, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E04[] = { {"loplus", 6, 0x02A2D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E08[] = { {"NotTilde", 8, 0x02241, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E09[] = { {"CounterClockwiseContourIntegral", 31, 0x02233, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E0C[] = { {"InvisibleTimes", 14, 0x02062, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E11[] = { {"lesdotor", 8, 0x02A83, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E18[] = { {"and", 3, 0x02227, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E1B[] = { {"RightUpVector", 13, 0x021BE, 0}, {"ang", 3, 0x02220, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E1C[] = { {"DoubleRightTee", 14, 0x022A8, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E1D[] = { {"LeftUpVectorBar", 15, 0x02958, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E1E[] = { {"smte", 4, 0x02AAC, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E20[] = { {"Iacute", 6, 0x000CD, 0}, {"triminus", 8, 0x02A3A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E22[] = { {"efr", 3, 0x1D522, 0}, {"iiint", 5, 0x0222D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E23[] = { {"ctdot", 5, 0x022EF, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E24[] = { {"mnplus", 6, 0x02213, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E25[] = { {"Vee", 3, 0x022C1, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E28[] = { {"Gcy", 3, 0x00413, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E2A[] = { {"lurdshar", 8, 0x0294A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E2C[] = { {"smeparsl", 8, 0x029E4, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E2F[] = { {"DoubleVerticalBar", 17, 0x02225, 0}, {"iecy", 4, 0x00435, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E30[] = { {"udblac", 6, 0x00171, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E32[] = { {"gtquest", 7, 0x02A7C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E33[] = { {"Iopf", 4, 0x1D540, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E35[] = { {"bsime", 5, 0x022CD, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E36[] = { {"RightVector", 11, 0x021C0, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E37[] = { {"NotGreaterLess", 14, 0x02279, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E3B[] = { {"apE", 3, 0x02A70, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E41[] = { {"CupCap", 6, 0x0224D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E42[] = { {"uscr", 4, 0x1D4CA, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E43[] = { {"erDot", 5, 0x02253, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E44[] = { {"egs", 3, 0x02A96, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E48[] = { {"rlarr", 5, 0x021C4, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E4C[] = { {"prE", 3, 0x02AB3, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E4E[] = { {"QUOT", 4, 0x00022, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E53[] = { {"Vfr", 3, 0x1D519, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E55[] = { {"cupbrcap", 8, 0x02A48, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E57[] = { {"intercal", 8, 0x022BA, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E58[] = { {"imath", 5, 0x00131, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E59[] = { {"RightUpTeeVector", 16, 0x0295C, 0}, {"trie", 4, 0x0225C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E5B[] = { {"ape", 3, 0x0224A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E5D[] = { {"softcy", 6, 0x0044C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E5E[] = { {"rarrb", 5, 0x021E5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E5F[] = { {"FilledSmallSquare", 17, 0x025FC, 0}, {"rarrc", 5, 0x02933, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E60[] = { {"Superset", 8, 0x02283, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E61[] = { {"hoarr", 5, 0x021FF, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E63[] = { {"DownRightVectorBar", 18, 0x02957, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E64[] = { {"brvbar", 6, 0x000A6, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E65[] = { {"ecolon", 6, 0x02255, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E66[] = { {"GreaterLess", 11, 0x02277, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E6A[] = { {"nrArr", 5, 0x021CF, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E6C[] = { {"pre", 3, 0x02AAF, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E6F[] = { {"aleph", 5, 0x02135, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E70[] = { {"DiacriticalAcute", 16, 0x000B4, 0}, {"SmallCircle", 11, 0x02218, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E71[] = { {"parsim", 6, 0x02AF3, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E73[] = { {"rarrw", 5, 0x0219D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E78[] = { {"caron", 5, 0x002C7, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E7A[] = { {"cacute", 6, 0x00107, 0}, {"lagran", 6, 0x02112, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E7C[] = { {"rarr", 4, 0x02192, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E80[] = { {"Rrightarrow", 11, 0x021DB, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E83[] = { {"Vscr", 4, 0x1D4B1, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E84[] = { {"Gfr", 3, 0x1D50A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E89[] = { {"ccedil", 6, 0x000E7, 0}, {"propto", 6, 0x0221D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E8E[] = { {"zwnj", 4, 0x0200C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E91[] = { {"psi", 3, 0x003C8, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E99[] = { {"infin", 5, 0x0221E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_E9C[] = { {"circledcirc", 11, 0x0229A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_EA1[] = { {"Proportion", 10, 0x02237, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_EA2[] = { {"subseteqq", 9, 0x02AC5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_EA4[] = { {"nGtv", 4, 0x0226B, 0x00338}, {NULL} };
+static const entity_cp_map ht_bucket_html5_EA8[] = { {"macr", 4, 0x000AF, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_EA9[] = { {"orslope", 7, 0x02A57, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_EB1[] = { {"frown", 5, 0x02322, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_EB2[] = { {"Iota", 4, 0x00399, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_EB4[] = { {"rceil", 5, 0x02309, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_EB7[] = { {"spadesuit", 9, 0x02660, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_EB8[] = { {"sstarf", 6, 0x022C6, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_ECA[] = { {"icy", 3, 0x00438, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_ECD[] = { {"ast", 3, 0x0002A, 0}, {"nmid", 4, 0x02224, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_ECF[] = { {"bowtie", 6, 0x022C8, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_ED1[] = { {"thetav", 6, 0x003D1, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_ED7[] = { {"vangrt", 6, 0x0299C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_ED8[] = { {"numsp", 5, 0x02007, 0}, {"triplus", 7, 0x02A39, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_ED9[] = { {"lscr", 4, 0x1D4C1, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_EDA[] = { {"pointint", 8, 0x02A15, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_EDB[] = { {"Theta", 5, 0x00398, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_EDF[] = { {"rightrightarrows", 16, 0x021C9, 0}, {"uopf", 4, 0x1D566, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_EE2[] = { {"ell", 3, 0x02113, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_EE4[] = { {"cuepr", 5, 0x022DE, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_EE5[] = { {"NotVerticalBar", 14, 0x02224, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_EE7[] = { {"xnis", 4, 0x022FB, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_EE9[] = { {"els", 3, 0x02A95, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_EEF[] = { {"DDotrahd", 8, 0x02911, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_EF1[] = { {"larrbfs", 7, 0x0291F, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_EF2[] = { {"Rsh", 3, 0x021B1, 0}, {"boxplus", 7, 0x0229E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_EF4[] = { {"swarr", 5, 0x02199, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_EF5[] = { {"gvnE", 4, 0x02269, 0x0FE00}, {"xfr", 3, 0x1D535, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_EF9[] = { {"ldca", 4, 0x02936, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_EFB[] = { {"NotPrecedesSlantEqual", 21, 0x022E0, 0}, {"YAcy", 4, 0x0042F, 0}, {"Zcy", 3, 0x00417, 0}, {"andslope", 8, 0x02A58, 0}, {"numero", 6, 0x02116, 0}, {"theta", 5, 0x003B8, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_EFE[] = { {"mapstoup", 8, 0x021A5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_EFF[] = { {"bigcup", 6, 0x022C3, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F03[] = { {"nesear", 6, 0x02928, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F05[] = { {"lesssim", 7, 0x02272, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F08[] = { {"DownArrow", 9, 0x02193, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F0B[] = { {"orarr", 5, 0x021BB, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F0F[] = { {"ccaps", 5, 0x02A4D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F10[] = { {"xdtri", 5, 0x025BD, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F11[] = { {"xcap", 4, 0x022C2, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F13[] = { {"downdownarrows", 14, 0x021CA, 0}, {"nisd", 4, 0x022FA, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F14[] = { {"VerticalBar", 11, 0x02223, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F15[] = { {"TRADE", 5, 0x02122, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F17[] = { {"Omacr", 5, 0x0014C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F18[] = { {"top", 3, 0x022A4, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F19[] = { {"LeftRightArrow", 14, 0x02194, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F1A[] = { {"Mscr", 4, 0x02133, 0}, {"iff", 3, 0x021D4, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F1F[] = { {"downharpoonleft", 15, 0x021C3, 0}, {"eng", 3, 0x0014B, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F20[] = { {"Vopf", 4, 0x1D54D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F26[] = { {"ifr", 3, 0x1D526, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F28[] = { {"Downarrow", 9, 0x021D3, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F2C[] = { {"Kcy", 3, 0x0041A, 0}, {"angle", 5, 0x02220, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F2F[] = { {"lescc", 5, 0x02AA8, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F30[] = { {"lesseqqgtr", 10, 0x02A8B, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F31[] = { {"bigstar", 7, 0x02605, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F33[] = { {"ddagger", 7, 0x02021, 0}, {"nltrie", 6, 0x022EC, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F37[] = { {"omacr", 5, 0x0014D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F38[] = { {"cuesc", 5, 0x022DF, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F40[] = { {"circlearrowright", 16, 0x021BB, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F41[] = { {"ngeqq", 5, 0x02267, 0x00338}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F44[] = { {"squf", 4, 0x025AA, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F46[] = { {"rtri", 4, 0x025B9, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F47[] = { {"VerticalLine", 12, 0x0007C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F48[] = { {"downarrow", 9, 0x02193, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F4B[] = { {"Scaron", 6, 0x00160, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F4C[] = { {"tstrok", 6, 0x00167, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F50[] = { {"wreath", 6, 0x02240, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F51[] = { {"exponentiale", 12, 0x02147, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F55[] = { {"Idot", 4, 0x00130, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F57[] = { {"Zfr", 3, 0x02128, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F58[] = { {"bnot", 4, 0x02310, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F5B[] = { {"infintie", 8, 0x029DD, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F5D[] = { {"angrtvbd", 8, 0x0299D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F5F[] = { {"prurel", 6, 0x022B0, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F60[] = { {"gbreve", 6, 0x0011F, 0}, {"rsaquo", 6, 0x0203A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F62[] = { {"sung", 4, 0x0266A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F67[] = { {"lvertneqq", 9, 0x02268, 0x0FE00}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F68[] = { {"lnsim", 5, 0x022E6, 0}, {"searrow", 7, 0x02198, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F69[] = { {"nsubset", 7, 0x02282, 0x020D2}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F6D[] = { {"Cup", 3, 0x022D3, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F6E[] = { {"Lmidot", 6, 0x0013F, 0}, {"sup1", 4, 0x000B9, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F6F[] = { {"Delta", 5, 0x00394, 0}, {"sbquo", 5, 0x0201A, 0}, {"sup2", 4, 0x000B2, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F70[] = { {"cscr", 4, 0x1D4B8, 0}, {"nsubseteqq", 10, 0x02AC5, 0x00338}, {"sup3", 4, 0x000B3, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F71[] = { {"Kcedil", 6, 0x00136, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F72[] = { {"plussim", 7, 0x02A26, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F74[] = { {"KHcy", 4, 0x00425, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F75[] = { {"OElig", 5, 0x00152, 0}, {"simdot", 6, 0x02A6A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F76[] = { {"lopf", 4, 0x1D55D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F77[] = { {"boxbox", 6, 0x029C9, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F78[] = { {"bepsi", 5, 0x003F6, 0}, {"lbarr", 5, 0x0290C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F79[] = { {"lnapprox", 8, 0x02A89, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F81[] = { {"sdotb", 5, 0x022A1, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F82[] = { {"measuredangle", 13, 0x02221, 0}, {"supE", 4, 0x02AC6, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F83[] = { {"map", 3, 0x021A6, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F84[] = { {"sdote", 5, 0x02A66, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F86[] = { {"diamondsuit", 11, 0x02666, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F88[] = { {"Kfr", 3, 0x1D50E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F8B[] = { {"imagline", 8, 0x02110, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F8F[] = { {"delta", 5, 0x003B4, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F91[] = { {"mapstodown", 10, 0x021A7, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F93[] = { {"eqvparsl", 8, 0x029E5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F95[] = { {"UpArrow", 7, 0x02191, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F9A[] = { {"imagpart", 8, 0x02111, 0}, {"lsim", 4, 0x02272, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F9C[] = { {"trianglelefteq", 14, 0x022B4, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_F9F[] = { {"isindot", 7, 0x022F5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_FA0[] = { {"LeftUpDownVector", 16, 0x02951, 0}, {"curvearrowleft", 14, 0x021B6, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_FA1[] = { {"Diamond", 7, 0x022C4, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_FA2[] = { {"supe", 4, 0x02287, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_FA3[] = { {"nearrow", 7, 0x02197, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_FA9[] = { {"easter", 6, 0x02A6E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_FB0[] = { {"rdquo", 5, 0x0201D, 0}, {"subsetneqq", 10, 0x02ACB, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_FB1[] = { {"Dscr", 4, 0x1D49F, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_FB4[] = { {"comp", 4, 0x02201, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_FB5[] = { {"Uparrow", 7, 0x021D1, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_FB6[] = { {"coloneq", 7, 0x02254, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_FB7[] = { {"Mopf", 4, 0x1D544, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_FB9[] = { {"rfloor", 6, 0x0230B, 0}, {"varsubsetneqq", 13, 0x02ACB, 0x0FE00}, {NULL} };
+static const entity_cp_map ht_bucket_html5_FBC[] = { {"eacute", 6, 0x000E9, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_FC2[] = { {"shortparallel", 13, 0x02225, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_FC4[] = { {"male", 4, 0x02642, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_FC6[] = { {"yscr", 4, 0x1D4CE, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_FCA[] = { {"xharr", 5, 0x027F7, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_FCC[] = { {"cong", 4, 0x02245, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_FCE[] = { {"mcy", 3, 0x0043C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_FCF[] = { {"Upsilon", 7, 0x003A5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_FD0[] = { {"block", 5, 0x02588, 0}, {"maltese", 7, 0x02720, 0}, {"ordf", 4, 0x000AA, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_FD2[] = { {"zcaron", 6, 0x0017E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_FD3[] = { {"malt", 4, 0x02720, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_FD6[] = { {"loang", 5, 0x027EC, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_FD7[] = { {"ordm", 4, 0x000BA, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_FDD[] = { {"NegativeVeryThinSpace", 21, 0x0200B, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_FDF[] = { {"eta", 3, 0x003B7, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_FE1[] = { {"Iogon", 5, 0x0012E, 0}, {"drbkarow", 8, 0x02910, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_FE6[] = { {"eth", 3, 0x000F0, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_FE9[] = { {"racute", 6, 0x00155, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_FEA[] = { {"cwconint", 8, 0x02232, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_FEB[] = { {"egsdot", 6, 0x02A98, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_FF5[] = { {"MinusPlus", 9, 0x02213, 0}, {"ring", 4, 0x002DA, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_FF8[] = { {"rcedil", 6, 0x00157, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_FFC[] = { {"timesbar", 8, 0x02A31, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html5_FFE[] = { {"GreaterEqualLess", 16, 0x022DB, 0}, {NULL} };
+
+static const entity_cp_map *const ht_buckets_html5[] = {
+ ht_bucket_html5_000, ht_bucket_html5_001, ht_bucket_empty, ht_bucket_html5_003,
+ ht_bucket_empty, ht_bucket_html5_005, ht_bucket_empty, ht_bucket_html5_007,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_00D, ht_bucket_empty, ht_bucket_html5_00F,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_017,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_020, ht_bucket_empty, ht_bucket_html5_022, ht_bucket_empty,
+ ht_bucket_html5_024, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_027,
+ ht_bucket_html5_028, ht_bucket_html5_029, ht_bucket_html5_02A, ht_bucket_html5_02B,
+ ht_bucket_html5_02C, ht_bucket_empty, ht_bucket_html5_02E, ht_bucket_empty,
+ ht_bucket_html5_030, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_034, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_038, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_040, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_047,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_04C, ht_bucket_empty, ht_bucket_html5_04E, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_051, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_059, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_05D, ht_bucket_empty, ht_bucket_html5_05F,
+ ht_bucket_html5_060, ht_bucket_html5_061, ht_bucket_empty, ht_bucket_html5_063,
+ ht_bucket_html5_064, ht_bucket_html5_065, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_069, ht_bucket_html5_06A, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_06D, ht_bucket_html5_06E, ht_bucket_html5_06F,
+ ht_bucket_empty, ht_bucket_html5_071, ht_bucket_empty, ht_bucket_html5_073,
+ ht_bucket_html5_074, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_07A, ht_bucket_html5_07B,
+ ht_bucket_html5_07C, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_07F,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_082, ht_bucket_empty,
+ ht_bucket_html5_084, ht_bucket_html5_085, ht_bucket_html5_086, ht_bucket_empty,
+ ht_bucket_html5_088, ht_bucket_html5_089, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_08C, ht_bucket_empty, ht_bucket_html5_08E, ht_bucket_empty,
+ ht_bucket_html5_090, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_094, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_097,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_09E, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_0A4, ht_bucket_empty, ht_bucket_html5_0A6, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_0AB,
+ ht_bucket_html5_0AC, ht_bucket_html5_0AD, ht_bucket_html5_0AE, ht_bucket_html5_0AF,
+ ht_bucket_html5_0B0, ht_bucket_empty, ht_bucket_html5_0B2, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_0B8, ht_bucket_html5_0B9, ht_bucket_html5_0BA, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_0C0, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_0C4, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_0CE, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_0D1, ht_bucket_html5_0D2, ht_bucket_html5_0D3,
+ ht_bucket_empty, ht_bucket_html5_0D5, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_0DF,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_0E5, ht_bucket_html5_0E6, ht_bucket_empty,
+ ht_bucket_html5_0E8, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_0EC, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_0EF,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_0F3,
+ ht_bucket_html5_0F4, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_0FA, ht_bucket_html5_0FB,
+ ht_bucket_empty, ht_bucket_html5_0FD, ht_bucket_html5_0FE, ht_bucket_empty,
+ ht_bucket_html5_100, ht_bucket_html5_101, ht_bucket_empty, ht_bucket_html5_103,
+ ht_bucket_empty, ht_bucket_html5_105, ht_bucket_html5_106, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_109, ht_bucket_html5_10A, ht_bucket_html5_10B,
+ ht_bucket_empty, ht_bucket_html5_10D, ht_bucket_html5_10E, ht_bucket_html5_10F,
+ ht_bucket_html5_110, ht_bucket_html5_111, ht_bucket_empty, ht_bucket_html5_113,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_116, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_11B,
+ ht_bucket_html5_11C, ht_bucket_empty, ht_bucket_html5_11E, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_121, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_124, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_129, ht_bucket_html5_12A, ht_bucket_empty,
+ ht_bucket_html5_12C, ht_bucket_empty, ht_bucket_html5_12E, ht_bucket_html5_12F,
+ ht_bucket_html5_130, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_134, ht_bucket_html5_135, ht_bucket_empty, ht_bucket_html5_137,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_13A, ht_bucket_html5_13B,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_145, ht_bucket_empty, ht_bucket_html5_147,
+ ht_bucket_empty, ht_bucket_html5_149, ht_bucket_empty, ht_bucket_html5_14B,
+ ht_bucket_html5_14C, ht_bucket_empty, ht_bucket_html5_14E, ht_bucket_html5_14F,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_158, ht_bucket_html5_159, ht_bucket_empty, ht_bucket_html5_15B,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_15E, ht_bucket_html5_15F,
+ ht_bucket_empty, ht_bucket_html5_161, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_164, ht_bucket_html5_165, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_168, ht_bucket_empty, ht_bucket_html5_16A, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_170, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_173,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_17A, ht_bucket_html5_17B,
+ ht_bucket_html5_17C, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_17F,
+ ht_bucket_empty, ht_bucket_html5_181, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_189, ht_bucket_empty, ht_bucket_html5_18B,
+ ht_bucket_html5_18C, ht_bucket_empty, ht_bucket_html5_18E, ht_bucket_html5_18F,
+ ht_bucket_html5_190, ht_bucket_html5_191, ht_bucket_empty, ht_bucket_html5_193,
+ ht_bucket_empty, ht_bucket_html5_195, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_19A, ht_bucket_empty,
+ ht_bucket_html5_19C, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_19F,
+ ht_bucket_html5_1A0, ht_bucket_html5_1A1, ht_bucket_html5_1A2, ht_bucket_html5_1A3,
+ ht_bucket_html5_1A4, ht_bucket_html5_1A5, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_1A8, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_1AB,
+ ht_bucket_html5_1AC, ht_bucket_html5_1AD, ht_bucket_html5_1AE, ht_bucket_html5_1AF,
+ ht_bucket_html5_1B0, ht_bucket_empty, ht_bucket_html5_1B2, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_1B5, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_1B9, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_1BD, ht_bucket_html5_1BE, ht_bucket_empty,
+ ht_bucket_html5_1C0, ht_bucket_html5_1C1, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_1C4, ht_bucket_empty, ht_bucket_html5_1C6, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_1C9, ht_bucket_html5_1CA, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_1CD, ht_bucket_html5_1CE, ht_bucket_empty,
+ ht_bucket_html5_1D0, ht_bucket_html5_1D1, ht_bucket_html5_1D2, ht_bucket_empty,
+ ht_bucket_html5_1D4, ht_bucket_html5_1D5, ht_bucket_html5_1D6, ht_bucket_empty,
+ ht_bucket_html5_1D8, ht_bucket_html5_1D9, ht_bucket_html5_1DA, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_1DF,
+ ht_bucket_html5_1E0, ht_bucket_html5_1E1, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_1E5, ht_bucket_html5_1E6, ht_bucket_html5_1E7,
+ ht_bucket_html5_1E8, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_1EB,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_1EF,
+ ht_bucket_html5_1F0, ht_bucket_empty, ht_bucket_html5_1F2, ht_bucket_empty,
+ ht_bucket_html5_1F4, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_1F8, ht_bucket_html5_1F9, ht_bucket_html5_1FA, ht_bucket_empty,
+ ht_bucket_html5_1FC, ht_bucket_empty, ht_bucket_html5_1FE, ht_bucket_html5_1FF,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_205, ht_bucket_empty, ht_bucket_html5_207,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_20E, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_212, ht_bucket_html5_213,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_219, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_21D, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_220, ht_bucket_empty, ht_bucket_html5_222, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_227,
+ ht_bucket_empty, ht_bucket_html5_229, ht_bucket_empty, ht_bucket_html5_22B,
+ ht_bucket_html5_22C, ht_bucket_html5_22D, ht_bucket_empty, ht_bucket_html5_22F,
+ ht_bucket_html5_230, ht_bucket_empty, ht_bucket_html5_232, ht_bucket_empty,
+ ht_bucket_html5_234, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_239, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_23C, ht_bucket_html5_23D, ht_bucket_html5_23E, ht_bucket_empty,
+ ht_bucket_html5_240, ht_bucket_html5_241, ht_bucket_html5_242, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_246, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_249, ht_bucket_html5_24A, ht_bucket_html5_24B,
+ ht_bucket_empty, ht_bucket_html5_24D, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_251, ht_bucket_html5_252, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_257,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_25A, ht_bucket_html5_25B,
+ ht_bucket_html5_25C, ht_bucket_html5_25D, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_263,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_26A, ht_bucket_html5_26B,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_26E, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_274, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_277,
+ ht_bucket_html5_278, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_27C, ht_bucket_empty, ht_bucket_html5_27E, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_283,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_28A, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_294, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_297,
+ ht_bucket_html5_298, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_29D, ht_bucket_empty, ht_bucket_html5_29F,
+ ht_bucket_html5_2A0, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_2A9, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_2AE, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_2B1, ht_bucket_html5_2B2, ht_bucket_html5_2B3,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_2B9, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_2BF,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_2C4, ht_bucket_html5_2C5, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_2CE, ht_bucket_html5_2CF,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_2D3,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_2DA, ht_bucket_html5_2DB,
+ ht_bucket_html5_2DC, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_2E3,
+ ht_bucket_html5_2E4, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_2EB,
+ ht_bucket_html5_2EC, ht_bucket_empty, ht_bucket_html5_2EE, ht_bucket_empty,
+ ht_bucket_html5_2F0, ht_bucket_empty, ht_bucket_html5_2F2, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_2F8, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_300, ht_bucket_html5_301, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_304, ht_bucket_html5_305, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_308, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_30B,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_30F,
+ ht_bucket_empty, ht_bucket_html5_311, ht_bucket_empty, ht_bucket_html5_313,
+ ht_bucket_empty, ht_bucket_html5_315, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_319, ht_bucket_html5_31A, ht_bucket_html5_31B,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_326, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_329, ht_bucket_html5_32A, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_32D, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_330, ht_bucket_html5_331, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_336, ht_bucket_empty,
+ ht_bucket_html5_338, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_33B,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_33F,
+ ht_bucket_html5_340, ht_bucket_html5_341, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_347,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_34D, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_350, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_356, ht_bucket_empty,
+ ht_bucket_html5_358, ht_bucket_html5_359, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_35D, ht_bucket_empty, ht_bucket_html5_35F,
+ ht_bucket_empty, ht_bucket_html5_361, ht_bucket_empty, ht_bucket_html5_363,
+ ht_bucket_empty, ht_bucket_html5_365, ht_bucket_empty, ht_bucket_html5_367,
+ ht_bucket_empty, ht_bucket_html5_369, ht_bucket_html5_36A, ht_bucket_html5_36B,
+ ht_bucket_empty, ht_bucket_html5_36D, ht_bucket_html5_36E, ht_bucket_html5_36F,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_372, ht_bucket_empty,
+ ht_bucket_html5_374, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_378, ht_bucket_empty, ht_bucket_html5_37A, ht_bucket_empty,
+ ht_bucket_html5_37C, ht_bucket_html5_37D, ht_bucket_html5_37E, ht_bucket_html5_37F,
+ ht_bucket_html5_380, ht_bucket_empty, ht_bucket_html5_382, ht_bucket_html5_383,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_386, ht_bucket_html5_387,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_38A, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_38D, ht_bucket_html5_38E, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_391, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_394, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_397,
+ ht_bucket_html5_398, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_39C, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_39F,
+ ht_bucket_html5_3A0, ht_bucket_html5_3A1, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_3A4, ht_bucket_html5_3A5, ht_bucket_html5_3A6, ht_bucket_html5_3A7,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_3AC, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_3B2, ht_bucket_empty,
+ ht_bucket_html5_3B4, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_3BF,
+ ht_bucket_html5_3C0, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_3C4, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_3C9, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_3CD, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_3D0, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_3D3,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_3D9, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_3DE, ht_bucket_empty,
+ ht_bucket_html5_3E0, ht_bucket_html5_3E1, ht_bucket_empty, ht_bucket_html5_3E3,
+ ht_bucket_html5_3E4, ht_bucket_empty, ht_bucket_html5_3E6, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_3E9, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_3ED, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_3F1, ht_bucket_html5_3F2, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_3F7,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_3FC, ht_bucket_empty, ht_bucket_html5_3FE, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_402, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_405, ht_bucket_empty, ht_bucket_html5_407,
+ ht_bucket_empty, ht_bucket_html5_409, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_40E, ht_bucket_html5_40F,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_413,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_41A, ht_bucket_html5_41B,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_421, ht_bucket_empty, ht_bucket_html5_423,
+ ht_bucket_html5_424, ht_bucket_html5_425, ht_bucket_html5_426, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_429, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_42C, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_42F,
+ ht_bucket_html5_430, ht_bucket_empty, ht_bucket_html5_432, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_436, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_439, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_43C, ht_bucket_html5_43D, ht_bucket_html5_43E, ht_bucket_html5_43F,
+ ht_bucket_html5_440, ht_bucket_html5_441, ht_bucket_empty, ht_bucket_html5_443,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_446, ht_bucket_html5_447,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_44A, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_44F,
+ ht_bucket_html5_450, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_454, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_457,
+ ht_bucket_html5_458, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_45D, ht_bucket_empty, ht_bucket_html5_45F,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_465, ht_bucket_html5_466, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_469, ht_bucket_html5_46A, ht_bucket_html5_46B,
+ ht_bucket_empty, ht_bucket_html5_46D, ht_bucket_empty, ht_bucket_html5_46F,
+ ht_bucket_html5_470, ht_bucket_html5_471, ht_bucket_html5_472, ht_bucket_html5_473,
+ ht_bucket_empty, ht_bucket_html5_475, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_479, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_47C, ht_bucket_html5_47D, ht_bucket_empty, ht_bucket_html5_47F,
+ ht_bucket_html5_480, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_485, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_488, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_48C, ht_bucket_empty, ht_bucket_html5_48E, ht_bucket_html5_48F,
+ ht_bucket_html5_490, ht_bucket_html5_491, ht_bucket_empty, ht_bucket_html5_493,
+ ht_bucket_empty, ht_bucket_html5_495, ht_bucket_html5_496, ht_bucket_empty,
+ ht_bucket_html5_498, ht_bucket_html5_499, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_49F,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_4A2, ht_bucket_empty,
+ ht_bucket_html5_4A4, ht_bucket_empty, ht_bucket_html5_4A6, ht_bucket_html5_4A7,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_4AA, ht_bucket_html5_4AB,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_4AE, ht_bucket_html5_4AF,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_4B2, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_4B6, ht_bucket_empty,
+ ht_bucket_html5_4B8, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_4BC, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_4C0, ht_bucket_empty, ht_bucket_html5_4C2, ht_bucket_html5_4C3,
+ ht_bucket_html5_4C4, ht_bucket_html5_4C5, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_4C8, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_4CB,
+ ht_bucket_empty, ht_bucket_html5_4CD, ht_bucket_empty, ht_bucket_html5_4CF,
+ ht_bucket_html5_4D0, ht_bucket_empty, ht_bucket_html5_4D2, ht_bucket_html5_4D3,
+ ht_bucket_html5_4D4, ht_bucket_html5_4D5, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_4D8, ht_bucket_empty, ht_bucket_html5_4DA, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_4DE, ht_bucket_html5_4DF,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_4E3,
+ ht_bucket_html5_4E4, ht_bucket_empty, ht_bucket_html5_4E6, ht_bucket_html5_4E7,
+ ht_bucket_html5_4E8, ht_bucket_html5_4E9, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_4ED, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_4F1, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_4F7,
+ ht_bucket_empty, ht_bucket_html5_4F9, ht_bucket_empty, ht_bucket_html5_4FB,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_4FE, ht_bucket_empty,
+ ht_bucket_html5_500, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_504, ht_bucket_empty, ht_bucket_html5_506, ht_bucket_html5_507,
+ ht_bucket_empty, ht_bucket_html5_509, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_50E, ht_bucket_html5_50F,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_513,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_516, ht_bucket_empty,
+ ht_bucket_html5_518, ht_bucket_html5_519, ht_bucket_empty, ht_bucket_html5_51B,
+ ht_bucket_html5_51C, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_524, ht_bucket_html5_525, ht_bucket_html5_526, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_52F,
+ ht_bucket_html5_530, ht_bucket_empty, ht_bucket_html5_532, ht_bucket_html5_533,
+ ht_bucket_html5_534, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_53B,
+ ht_bucket_html5_53C, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_53F,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_542, ht_bucket_html5_543,
+ ht_bucket_empty, ht_bucket_html5_545, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_548, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_54F,
+ ht_bucket_html5_550, ht_bucket_html5_551, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_557,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_55B,
+ ht_bucket_empty, ht_bucket_html5_55D, ht_bucket_empty, ht_bucket_html5_55F,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_564, ht_bucket_html5_565, ht_bucket_html5_566, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_56C, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_56F,
+ ht_bucket_html5_570, ht_bucket_html5_571, ht_bucket_html5_572, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_575, ht_bucket_html5_576, ht_bucket_html5_577,
+ ht_bucket_html5_578, ht_bucket_empty, ht_bucket_html5_57A, ht_bucket_html5_57B,
+ ht_bucket_html5_57C, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_580, ht_bucket_empty, ht_bucket_html5_582, ht_bucket_html5_583,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_586, ht_bucket_empty,
+ ht_bucket_html5_588, ht_bucket_html5_589, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_58D, ht_bucket_html5_58E, ht_bucket_html5_58F,
+ ht_bucket_html5_590, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_595, ht_bucket_html5_596, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_59A, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_59D, ht_bucket_empty, ht_bucket_html5_59F,
+ ht_bucket_html5_5A0, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_5A3,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_5A6, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_5A9, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_5AC, ht_bucket_html5_5AD, ht_bucket_html5_5AE, ht_bucket_empty,
+ ht_bucket_html5_5B0, ht_bucket_html5_5B1, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_5B5, ht_bucket_html5_5B6, ht_bucket_html5_5B7,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_5BB,
+ ht_bucket_html5_5BC, ht_bucket_html5_5BD, ht_bucket_empty, ht_bucket_html5_5BF,
+ ht_bucket_html5_5C0, ht_bucket_html5_5C1, ht_bucket_html5_5C2, ht_bucket_empty,
+ ht_bucket_html5_5C4, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_5D0, ht_bucket_html5_5D1, ht_bucket_empty, ht_bucket_html5_5D3,
+ ht_bucket_empty, ht_bucket_html5_5D5, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_5D8, ht_bucket_html5_5D9, ht_bucket_empty, ht_bucket_html5_5DB,
+ ht_bucket_empty, ht_bucket_html5_5DD, ht_bucket_empty, ht_bucket_html5_5DF,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_5E2, ht_bucket_empty,
+ ht_bucket_html5_5E4, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_5E7,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_5EA, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_5ED, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_5F0, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_5F3,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_5F6, ht_bucket_empty,
+ ht_bucket_html5_5F8, ht_bucket_empty, ht_bucket_html5_5FA, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_5FD, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_601, ht_bucket_html5_602, ht_bucket_html5_603,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_606, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_609, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_60D, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_613,
+ ht_bucket_empty, ht_bucket_html5_615, ht_bucket_empty, ht_bucket_html5_617,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_61A, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_61D, ht_bucket_empty, ht_bucket_html5_61F,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_622, ht_bucket_empty,
+ ht_bucket_html5_624, ht_bucket_empty, ht_bucket_html5_626, ht_bucket_empty,
+ ht_bucket_html5_628, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_62C, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_630, ht_bucket_empty, ht_bucket_html5_632, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_636, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_63A, ht_bucket_empty,
+ ht_bucket_html5_63C, ht_bucket_html5_63D, ht_bucket_html5_63E, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_641, ht_bucket_html5_642, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_645, ht_bucket_html5_646, ht_bucket_html5_647,
+ ht_bucket_html5_648, ht_bucket_html5_649, ht_bucket_html5_64A, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_651, ht_bucket_html5_652, ht_bucket_html5_653,
+ ht_bucket_empty, ht_bucket_html5_655, ht_bucket_empty, ht_bucket_html5_657,
+ ht_bucket_html5_658, ht_bucket_html5_659, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_65C, ht_bucket_empty, ht_bucket_html5_65E, ht_bucket_empty,
+ ht_bucket_html5_660, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_669, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_670, ht_bucket_html5_671, ht_bucket_html5_672, ht_bucket_html5_673,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_676, ht_bucket_empty,
+ ht_bucket_html5_678, ht_bucket_html5_679, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_67D, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_680, ht_bucket_empty, ht_bucket_html5_682, ht_bucket_empty,
+ ht_bucket_html5_684, ht_bucket_html5_685, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_68A, ht_bucket_empty,
+ ht_bucket_html5_68C, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_691, ht_bucket_empty, ht_bucket_html5_693,
+ ht_bucket_html5_694, ht_bucket_empty, ht_bucket_html5_696, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_699, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_6A3,
+ ht_bucket_html5_6A4, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_6A8, ht_bucket_html5_6A9, ht_bucket_html5_6AA, ht_bucket_html5_6AB,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_6AE, ht_bucket_empty,
+ ht_bucket_html5_6B0, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_6B4, ht_bucket_empty, ht_bucket_html5_6B6, ht_bucket_empty,
+ ht_bucket_html5_6B8, ht_bucket_html5_6B9, ht_bucket_html5_6BA, ht_bucket_empty,
+ ht_bucket_html5_6BC, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_6BF,
+ ht_bucket_html5_6C0, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_6C4, ht_bucket_html5_6C5, ht_bucket_html5_6C6, ht_bucket_html5_6C7,
+ ht_bucket_html5_6C8, ht_bucket_html5_6C9, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_6CC, ht_bucket_empty, ht_bucket_html5_6CE, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_6D1, ht_bucket_html5_6D2, ht_bucket_empty,
+ ht_bucket_html5_6D4, ht_bucket_html5_6D5, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_6D9, ht_bucket_html5_6DA, ht_bucket_html5_6DB,
+ ht_bucket_html5_6DC, ht_bucket_empty, ht_bucket_html5_6DE, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_6E7,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_6EB,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_6EE, ht_bucket_html5_6EF,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_6F5, ht_bucket_empty, ht_bucket_html5_6F7,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_6FB,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_704, ht_bucket_html5_705, ht_bucket_html5_706, ht_bucket_html5_707,
+ ht_bucket_empty, ht_bucket_html5_709, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_70C, ht_bucket_empty, ht_bucket_html5_70E, ht_bucket_html5_70F,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_712, ht_bucket_empty,
+ ht_bucket_html5_714, ht_bucket_html5_715, ht_bucket_empty, ht_bucket_html5_717,
+ ht_bucket_empty, ht_bucket_html5_719, ht_bucket_empty, ht_bucket_html5_71B,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_71E, ht_bucket_html5_71F,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_723,
+ ht_bucket_html5_724, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_727,
+ ht_bucket_empty, ht_bucket_html5_729, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_72C, ht_bucket_html5_72D, ht_bucket_html5_72E, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_733,
+ ht_bucket_html5_734, ht_bucket_html5_735, ht_bucket_html5_736, ht_bucket_empty,
+ ht_bucket_html5_738, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_73B,
+ ht_bucket_empty, ht_bucket_html5_73D, ht_bucket_html5_73E, ht_bucket_html5_73F,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_744, ht_bucket_html5_745, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_749, ht_bucket_empty, ht_bucket_html5_74B,
+ ht_bucket_html5_74C, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_74F,
+ ht_bucket_empty, ht_bucket_html5_751, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_754, ht_bucket_html5_755, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_759, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_75C, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_75F,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_762, ht_bucket_html5_763,
+ ht_bucket_empty, ht_bucket_html5_765, ht_bucket_html5_766, ht_bucket_empty,
+ ht_bucket_html5_768, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_76E, ht_bucket_empty,
+ ht_bucket_html5_770, ht_bucket_empty, ht_bucket_html5_772, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_776, ht_bucket_html5_777,
+ ht_bucket_empty, ht_bucket_html5_779, ht_bucket_html5_77A, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_77F,
+ ht_bucket_empty, ht_bucket_html5_781, ht_bucket_empty, ht_bucket_html5_783,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_787,
+ ht_bucket_empty, ht_bucket_html5_789, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_78C, ht_bucket_html5_78D, ht_bucket_html5_78E, ht_bucket_empty,
+ ht_bucket_html5_790, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_794, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_797,
+ ht_bucket_html5_798, ht_bucket_empty, ht_bucket_html5_79A, ht_bucket_html5_79B,
+ ht_bucket_empty, ht_bucket_html5_79D, ht_bucket_empty, ht_bucket_html5_79F,
+ ht_bucket_html5_7A0, ht_bucket_html5_7A1, ht_bucket_html5_7A2, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_7A5, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_7A8, ht_bucket_empty, ht_bucket_html5_7AA, ht_bucket_html5_7AB,
+ ht_bucket_html5_7AC, ht_bucket_empty, ht_bucket_html5_7AE, ht_bucket_html5_7AF,
+ ht_bucket_html5_7B0, ht_bucket_html5_7B1, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_7B5, ht_bucket_html5_7B6, ht_bucket_html5_7B7,
+ ht_bucket_html5_7B8, ht_bucket_empty, ht_bucket_html5_7BA, ht_bucket_html5_7BB,
+ ht_bucket_empty, ht_bucket_html5_7BD, ht_bucket_html5_7BE, ht_bucket_html5_7BF,
+ ht_bucket_html5_7C0, ht_bucket_html5_7C1, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_7C9, ht_bucket_empty, ht_bucket_html5_7CB,
+ ht_bucket_empty, ht_bucket_html5_7CD, ht_bucket_html5_7CE, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_7D1, ht_bucket_html5_7D2, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_7D5, ht_bucket_html5_7D6, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_7D9, ht_bucket_html5_7DA, ht_bucket_empty,
+ ht_bucket_html5_7DC, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_7E0, ht_bucket_empty, ht_bucket_html5_7E2, ht_bucket_empty,
+ ht_bucket_html5_7E4, ht_bucket_html5_7E5, ht_bucket_html5_7E6, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_7EC, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_7EF,
+ ht_bucket_empty, ht_bucket_html5_7F1, ht_bucket_empty, ht_bucket_html5_7F3,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_7F6, ht_bucket_empty,
+ ht_bucket_html5_7F8, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_7FB,
+ ht_bucket_html5_7FC, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_800, ht_bucket_empty, ht_bucket_html5_802, ht_bucket_html5_803,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_808, ht_bucket_html5_809, ht_bucket_html5_80A, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_810, ht_bucket_html5_811, ht_bucket_html5_812, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_816, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_819, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_81C, ht_bucket_html5_81D, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_821, ht_bucket_html5_822, ht_bucket_html5_823,
+ ht_bucket_html5_824, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_828, ht_bucket_html5_829, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_82D, ht_bucket_html5_82E, ht_bucket_empty,
+ ht_bucket_html5_830, ht_bucket_html5_831, ht_bucket_html5_832, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_837,
+ ht_bucket_html5_838, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_83C, ht_bucket_empty, ht_bucket_html5_83E, ht_bucket_html5_83F,
+ ht_bucket_empty, ht_bucket_html5_841, ht_bucket_html5_842, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_846, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_84A, ht_bucket_empty,
+ ht_bucket_html5_84C, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_84F,
+ ht_bucket_html5_850, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_855, ht_bucket_empty, ht_bucket_html5_857,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_85B,
+ ht_bucket_html5_85C, ht_bucket_empty, ht_bucket_html5_85E, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_861, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_865, ht_bucket_html5_866, ht_bucket_html5_867,
+ ht_bucket_html5_868, ht_bucket_empty, ht_bucket_html5_86A, ht_bucket_html5_86B,
+ ht_bucket_html5_86C, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_873,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_876, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_879, ht_bucket_empty, ht_bucket_html5_87B,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_87E, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_88A, ht_bucket_empty,
+ ht_bucket_html5_88C, ht_bucket_empty, ht_bucket_html5_88E, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_892, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_895, ht_bucket_html5_896, ht_bucket_html5_897,
+ ht_bucket_html5_898, ht_bucket_html5_899, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_89D, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_8A5, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_8AC, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_8B3,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_8B6, ht_bucket_html5_8B7,
+ ht_bucket_html5_8B8, ht_bucket_html5_8B9, ht_bucket_html5_8BA, ht_bucket_empty,
+ ht_bucket_html5_8BC, ht_bucket_html5_8BD, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_8C0, ht_bucket_html5_8C1, ht_bucket_html5_8C2, ht_bucket_empty,
+ ht_bucket_html5_8C4, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_8C7,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_8CF,
+ ht_bucket_html5_8D0, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_8D3,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_8D6, ht_bucket_empty,
+ ht_bucket_html5_8D8, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_8DC, ht_bucket_html5_8DD, ht_bucket_html5_8DE, ht_bucket_html5_8DF,
+ ht_bucket_html5_8E0, ht_bucket_empty, ht_bucket_html5_8E2, ht_bucket_html5_8E3,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_8E7,
+ ht_bucket_html5_8E8, ht_bucket_html5_8E9, ht_bucket_empty, ht_bucket_html5_8EB,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_8F3,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_8FB,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_8FE, ht_bucket_html5_8FF,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_904, ht_bucket_empty, ht_bucket_html5_906, ht_bucket_html5_907,
+ ht_bucket_empty, ht_bucket_html5_909, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_90C, ht_bucket_empty, ht_bucket_html5_90E, ht_bucket_empty,
+ ht_bucket_html5_910, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_913,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_916, ht_bucket_empty,
+ ht_bucket_html5_918, ht_bucket_html5_919, ht_bucket_empty, ht_bucket_html5_91B,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_91E, ht_bucket_html5_91F,
+ ht_bucket_html5_920, ht_bucket_empty, ht_bucket_html5_922, ht_bucket_html5_923,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_927,
+ ht_bucket_empty, ht_bucket_html5_929, ht_bucket_html5_92A, ht_bucket_empty,
+ ht_bucket_html5_92C, ht_bucket_empty, ht_bucket_html5_92E, ht_bucket_empty,
+ ht_bucket_html5_930, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_936, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_939, ht_bucket_empty, ht_bucket_html5_93B,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_93F,
+ ht_bucket_html5_940, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_945, ht_bucket_empty, ht_bucket_html5_947,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_94D, ht_bucket_empty, ht_bucket_html5_94F,
+ ht_bucket_html5_950, ht_bucket_empty, ht_bucket_html5_952, ht_bucket_html5_953,
+ ht_bucket_html5_954, ht_bucket_html5_955, ht_bucket_html5_956, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_959, ht_bucket_empty, ht_bucket_html5_95B,
+ ht_bucket_empty, ht_bucket_html5_95D, ht_bucket_empty, ht_bucket_html5_95F,
+ ht_bucket_html5_960, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_963,
+ ht_bucket_html5_964, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_969, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_96C, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_96F,
+ ht_bucket_html5_970, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_974, ht_bucket_html5_975, ht_bucket_html5_976, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_97B,
+ ht_bucket_html5_97C, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_97F,
+ ht_bucket_empty, ht_bucket_html5_981, ht_bucket_empty, ht_bucket_html5_983,
+ ht_bucket_empty, ht_bucket_html5_985, ht_bucket_html5_986, ht_bucket_empty,
+ ht_bucket_html5_988, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_98C, ht_bucket_html5_98D, ht_bucket_empty, ht_bucket_html5_98F,
+ ht_bucket_html5_990, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_996, ht_bucket_html5_997,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_99B,
+ ht_bucket_html5_99C, ht_bucket_empty, ht_bucket_html5_99E, ht_bucket_html5_99F,
+ ht_bucket_html5_9A0, ht_bucket_html5_9A1, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_9A6, ht_bucket_empty,
+ ht_bucket_html5_9A8, ht_bucket_empty, ht_bucket_html5_9AA, ht_bucket_empty,
+ ht_bucket_html5_9AC, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_9B0, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_9B4, ht_bucket_html5_9B5, ht_bucket_html5_9B6, ht_bucket_html5_9B7,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_9BB,
+ ht_bucket_html5_9BC, ht_bucket_html5_9BD, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_9C1, ht_bucket_html5_9C2, ht_bucket_html5_9C3,
+ ht_bucket_empty, ht_bucket_html5_9C5, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_9C9, ht_bucket_html5_9CA, ht_bucket_empty,
+ ht_bucket_html5_9CC, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_9CF,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_9D5, ht_bucket_html5_9D6, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_9DA, ht_bucket_html5_9DB,
+ ht_bucket_empty, ht_bucket_html5_9DD, ht_bucket_html5_9DE, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_9E1, ht_bucket_html5_9E2, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_9E5, ht_bucket_empty, ht_bucket_html5_9E7,
+ ht_bucket_empty, ht_bucket_html5_9E9, ht_bucket_empty, ht_bucket_html5_9EB,
+ ht_bucket_empty, ht_bucket_html5_9ED, ht_bucket_html5_9EE, ht_bucket_html5_9EF,
+ ht_bucket_html5_9F0, ht_bucket_html5_9F1, ht_bucket_html5_9F2, ht_bucket_html5_9F3,
+ ht_bucket_html5_9F4, ht_bucket_html5_9F5, ht_bucket_empty, ht_bucket_html5_9F7,
+ ht_bucket_empty, ht_bucket_html5_9F9, ht_bucket_html5_9FA, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_9FD, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_A01, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_A04, ht_bucket_html5_A05, ht_bucket_html5_A06, ht_bucket_empty,
+ ht_bucket_html5_A08, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_A0C, ht_bucket_html5_A0D, ht_bucket_html5_A0E, ht_bucket_empty,
+ ht_bucket_html5_A10, ht_bucket_empty, ht_bucket_html5_A12, ht_bucket_empty,
+ ht_bucket_html5_A14, ht_bucket_html5_A15, ht_bucket_html5_A16, ht_bucket_html5_A17,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_A21, ht_bucket_empty, ht_bucket_html5_A23,
+ ht_bucket_html5_A24, ht_bucket_html5_A25, ht_bucket_html5_A26, ht_bucket_empty,
+ ht_bucket_html5_A28, ht_bucket_empty, ht_bucket_html5_A2A, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_A2D, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_A30, ht_bucket_empty, ht_bucket_html5_A32, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_A36, ht_bucket_html5_A37,
+ ht_bucket_empty, ht_bucket_html5_A39, ht_bucket_empty, ht_bucket_html5_A3B,
+ ht_bucket_html5_A3C, ht_bucket_html5_A3D, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_A41, ht_bucket_empty, ht_bucket_html5_A43,
+ ht_bucket_html5_A44, ht_bucket_html5_A45, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_A48, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_A4F,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_A53,
+ ht_bucket_html5_A54, ht_bucket_empty, ht_bucket_html5_A56, ht_bucket_html5_A57,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_A5A, ht_bucket_html5_A5B,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_A61, ht_bucket_html5_A62, ht_bucket_html5_A63,
+ ht_bucket_html5_A64, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_A69, ht_bucket_html5_A6A, ht_bucket_html5_A6B,
+ ht_bucket_empty, ht_bucket_html5_A6D, ht_bucket_empty, ht_bucket_html5_A6F,
+ ht_bucket_html5_A70, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_A76, ht_bucket_empty,
+ ht_bucket_html5_A78, ht_bucket_empty, ht_bucket_html5_A7A, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_A7E, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_A81, ht_bucket_html5_A82, ht_bucket_empty,
+ ht_bucket_html5_A84, ht_bucket_html5_A85, ht_bucket_html5_A86, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_A89, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_A8D, ht_bucket_html5_A8E, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_A92, ht_bucket_empty,
+ ht_bucket_html5_A94, ht_bucket_empty, ht_bucket_html5_A96, ht_bucket_empty,
+ ht_bucket_html5_A98, ht_bucket_html5_A99, ht_bucket_html5_A9A, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_A9D, ht_bucket_empty, ht_bucket_html5_A9F,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_AA3,
+ ht_bucket_html5_AA4, ht_bucket_html5_AA5, ht_bucket_empty, ht_bucket_html5_AA7,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_AAC, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_AB2, ht_bucket_empty,
+ ht_bucket_html5_AB4, ht_bucket_html5_AB5, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_ABA, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_AC0, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_AC4, ht_bucket_html5_AC5, ht_bucket_html5_AC6, ht_bucket_html5_AC7,
+ ht_bucket_html5_AC8, ht_bucket_empty, ht_bucket_html5_ACA, ht_bucket_empty,
+ ht_bucket_html5_ACC, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_ACF,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_AD2, ht_bucket_html5_AD3,
+ ht_bucket_html5_AD4, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_ADA, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_ADD, ht_bucket_empty, ht_bucket_html5_ADF,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_AE4, ht_bucket_html5_AE5, ht_bucket_html5_AE6, ht_bucket_html5_AE7,
+ ht_bucket_html5_AE8, ht_bucket_html5_AE9, ht_bucket_empty, ht_bucket_html5_AEB,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_AF5, ht_bucket_html5_AF6, ht_bucket_html5_AF7,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_AFA, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_AFD, ht_bucket_html5_AFE, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_B08, ht_bucket_html5_B09, ht_bucket_html5_B0A, ht_bucket_empty,
+ ht_bucket_html5_B0C, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_B10, ht_bucket_html5_B11, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_B15, ht_bucket_html5_B16, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_B1E, ht_bucket_html5_B1F,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_B23,
+ ht_bucket_html5_B24, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_B27,
+ ht_bucket_empty, ht_bucket_html5_B29, ht_bucket_html5_B2A, ht_bucket_html5_B2B,
+ ht_bucket_html5_B2C, ht_bucket_html5_B2D, ht_bucket_html5_B2E, ht_bucket_html5_B2F,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_B33,
+ ht_bucket_empty, ht_bucket_html5_B35, ht_bucket_html5_B36, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_B3A, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_B3D, ht_bucket_html5_B3E, ht_bucket_empty,
+ ht_bucket_html5_B40, ht_bucket_empty, ht_bucket_html5_B42, ht_bucket_empty,
+ ht_bucket_html5_B44, ht_bucket_empty, ht_bucket_html5_B46, ht_bucket_html5_B47,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_B4C, ht_bucket_empty, ht_bucket_html5_B4E, ht_bucket_html5_B4F,
+ ht_bucket_html5_B50, ht_bucket_html5_B51, ht_bucket_html5_B52, ht_bucket_html5_B53,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_B56, ht_bucket_empty,
+ ht_bucket_html5_B58, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_B5C, ht_bucket_html5_B5D, ht_bucket_html5_B5E, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_B63,
+ ht_bucket_html5_B64, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_B67,
+ ht_bucket_empty, ht_bucket_html5_B69, ht_bucket_empty, ht_bucket_html5_B6B,
+ ht_bucket_empty, ht_bucket_html5_B6D, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_B72, ht_bucket_html5_B73,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_B77,
+ ht_bucket_html5_B78, ht_bucket_empty, ht_bucket_html5_B7A, ht_bucket_html5_B7B,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_B7E, ht_bucket_html5_B7F,
+ ht_bucket_empty, ht_bucket_html5_B81, ht_bucket_html5_B82, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_B87,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_B8D, ht_bucket_empty, ht_bucket_html5_B8F,
+ ht_bucket_html5_B90, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_B94, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_B98, ht_bucket_html5_B99, ht_bucket_html5_B9A, ht_bucket_empty,
+ ht_bucket_html5_B9C, ht_bucket_html5_B9D, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_BA5, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_BA9, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_BAE, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_BB2, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_BB5, ht_bucket_html5_BB6, ht_bucket_html5_BB7,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_BBA, ht_bucket_empty,
+ ht_bucket_html5_BBC, ht_bucket_html5_BBD, ht_bucket_empty, ht_bucket_html5_BBF,
+ ht_bucket_empty, ht_bucket_html5_BC1, ht_bucket_html5_BC2, ht_bucket_html5_BC3,
+ ht_bucket_html5_BC4, ht_bucket_html5_BC5, ht_bucket_html5_BC6, ht_bucket_html5_BC7,
+ ht_bucket_html5_BC8, ht_bucket_html5_BC9, ht_bucket_empty, ht_bucket_html5_BCB,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_BCE, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_BD1, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_BD7,
+ ht_bucket_html5_BD8, ht_bucket_html5_BD9, ht_bucket_html5_BDA, ht_bucket_html5_BDB,
+ ht_bucket_empty, ht_bucket_html5_BDD, ht_bucket_empty, ht_bucket_html5_BDF,
+ ht_bucket_empty, ht_bucket_html5_BE1, ht_bucket_html5_BE2, ht_bucket_empty,
+ ht_bucket_html5_BE4, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_BE7,
+ ht_bucket_html5_BE8, ht_bucket_html5_BE9, ht_bucket_html5_BEA, ht_bucket_html5_BEB,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_BEF,
+ ht_bucket_html5_BF0, ht_bucket_html5_BF1, ht_bucket_html5_BF2, ht_bucket_html5_BF3,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_BF7,
+ ht_bucket_empty, ht_bucket_html5_BF9, ht_bucket_html5_BFA, ht_bucket_empty,
+ ht_bucket_html5_BFC, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_C02, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_C0B,
+ ht_bucket_html5_C0C, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_C11, ht_bucket_html5_C12, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_C16, ht_bucket_empty,
+ ht_bucket_html5_C18, ht_bucket_empty, ht_bucket_html5_C1A, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_C1D, ht_bucket_html5_C1E, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_C23,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_C27,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_C2B,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_C31, ht_bucket_html5_C32, ht_bucket_html5_C33,
+ ht_bucket_html5_C34, ht_bucket_html5_C35, ht_bucket_html5_C36, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_C3A, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_C3E, ht_bucket_html5_C3F,
+ ht_bucket_html5_C40, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_C43,
+ ht_bucket_html5_C44, ht_bucket_empty, ht_bucket_html5_C46, ht_bucket_empty,
+ ht_bucket_html5_C48, ht_bucket_empty, ht_bucket_html5_C4A, ht_bucket_html5_C4B,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_C4F,
+ ht_bucket_html5_C50, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_C54, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_C58, ht_bucket_empty, ht_bucket_html5_C5A, ht_bucket_html5_C5B,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_C5F,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_C69, ht_bucket_empty, ht_bucket_html5_C6B,
+ ht_bucket_html5_C6C, ht_bucket_empty, ht_bucket_html5_C6E, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_C72, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_C76, ht_bucket_html5_C77,
+ ht_bucket_html5_C78, ht_bucket_empty, ht_bucket_html5_C7A, ht_bucket_html5_C7B,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_C80, ht_bucket_empty, ht_bucket_html5_C82, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_C89, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_C8E, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_C91, ht_bucket_empty, ht_bucket_html5_C93,
+ ht_bucket_html5_C94, ht_bucket_html5_C95, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_C98, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_CA6, ht_bucket_empty,
+ ht_bucket_html5_CA8, ht_bucket_html5_CA9, ht_bucket_html5_CAA, ht_bucket_empty,
+ ht_bucket_html5_CAC, ht_bucket_html5_CAD, ht_bucket_empty, ht_bucket_html5_CAF,
+ ht_bucket_html5_CB0, ht_bucket_empty, ht_bucket_html5_CB2, ht_bucket_empty,
+ ht_bucket_html5_CB4, ht_bucket_empty, ht_bucket_html5_CB6, ht_bucket_html5_CB7,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_CBA, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_CBE, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_CC2, ht_bucket_empty,
+ ht_bucket_html5_CC4, ht_bucket_html5_CC5, ht_bucket_empty, ht_bucket_html5_CC7,
+ ht_bucket_html5_CC8, ht_bucket_html5_CC9, ht_bucket_empty, ht_bucket_html5_CCB,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_CD0, ht_bucket_empty, ht_bucket_html5_CD2, ht_bucket_html5_CD3,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_CD9, ht_bucket_html5_CDA, ht_bucket_empty,
+ ht_bucket_html5_CDC, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_CE4, ht_bucket_empty, ht_bucket_html5_CE6, ht_bucket_empty,
+ ht_bucket_html5_CE8, ht_bucket_html5_CE9, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_CED, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_CF1, ht_bucket_html5_CF2, ht_bucket_html5_CF3,
+ ht_bucket_html5_CF4, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_CFA, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_CFF,
+ ht_bucket_html5_D00, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_D06, ht_bucket_html5_D07,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_D0B,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_D0E, ht_bucket_empty,
+ ht_bucket_html5_D10, ht_bucket_html5_D11, ht_bucket_html5_D12, ht_bucket_html5_D13,
+ ht_bucket_empty, ht_bucket_html5_D15, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_D18, ht_bucket_html5_D19, ht_bucket_html5_D1A, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_D1E, ht_bucket_html5_D1F,
+ ht_bucket_html5_D20, ht_bucket_empty, ht_bucket_html5_D22, ht_bucket_empty,
+ ht_bucket_html5_D24, ht_bucket_empty, ht_bucket_html5_D26, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_D2A, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_D32, ht_bucket_empty,
+ ht_bucket_html5_D34, ht_bucket_html5_D35, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_D38, ht_bucket_html5_D39, ht_bucket_html5_D3A, ht_bucket_html5_D3B,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_D3E, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_D42, ht_bucket_empty,
+ ht_bucket_html5_D44, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_D49, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_D4C, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_D4F,
+ ht_bucket_empty, ht_bucket_html5_D51, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_D54, ht_bucket_html5_D55, ht_bucket_html5_D56, ht_bucket_html5_D57,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_D5A, ht_bucket_html5_D5B,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_D5F,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_D63,
+ ht_bucket_empty, ht_bucket_html5_D65, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_D69, ht_bucket_html5_D6A, ht_bucket_empty,
+ ht_bucket_html5_D6C, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_D6F,
+ ht_bucket_html5_D70, ht_bucket_html5_D71, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_D74, ht_bucket_html5_D75, ht_bucket_html5_D76, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_D7C, ht_bucket_html5_D7D, ht_bucket_html5_D7E, ht_bucket_empty,
+ ht_bucket_html5_D80, ht_bucket_html5_D81, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_D85, ht_bucket_empty, ht_bucket_html5_D87,
+ ht_bucket_empty, ht_bucket_html5_D89, ht_bucket_html5_D8A, ht_bucket_empty,
+ ht_bucket_html5_D8C, ht_bucket_html5_D8D, ht_bucket_html5_D8E, ht_bucket_html5_D8F,
+ ht_bucket_html5_D90, ht_bucket_html5_D91, ht_bucket_empty, ht_bucket_html5_D93,
+ ht_bucket_html5_D94, ht_bucket_html5_D95, ht_bucket_html5_D96, ht_bucket_empty,
+ ht_bucket_html5_D98, ht_bucket_empty, ht_bucket_html5_D9A, ht_bucket_empty,
+ ht_bucket_html5_D9C, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_DA0, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_DA5, ht_bucket_html5_DA6, ht_bucket_empty,
+ ht_bucket_html5_DA8, ht_bucket_html5_DA9, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_DAC, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_DB0, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_DB3,
+ ht_bucket_html5_DB4, ht_bucket_empty, ht_bucket_html5_DB6, ht_bucket_html5_DB7,
+ ht_bucket_empty, ht_bucket_html5_DB9, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_DBC, ht_bucket_empty, ht_bucket_html5_DBE, ht_bucket_html5_DBF,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_DC2, ht_bucket_html5_DC3,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_DC6, ht_bucket_empty,
+ ht_bucket_html5_DC8, ht_bucket_empty, ht_bucket_html5_DCA, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_DCF,
+ ht_bucket_empty, ht_bucket_html5_DD1, ht_bucket_empty, ht_bucket_html5_DD3,
+ ht_bucket_html5_DD4, ht_bucket_html5_DD5, ht_bucket_empty, ht_bucket_html5_DD7,
+ ht_bucket_empty, ht_bucket_html5_DD9, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_DDC, ht_bucket_html5_DDD, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_DE4, ht_bucket_empty, ht_bucket_html5_DE6, ht_bucket_html5_DE7,
+ ht_bucket_empty, ht_bucket_html5_DE9, ht_bucket_empty, ht_bucket_html5_DEB,
+ ht_bucket_empty, ht_bucket_html5_DED, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_DF1, ht_bucket_html5_DF2, ht_bucket_html5_DF3,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_DF6, ht_bucket_html5_DF7,
+ ht_bucket_empty, ht_bucket_html5_DF9, ht_bucket_empty, ht_bucket_html5_DFB,
+ ht_bucket_empty, ht_bucket_html5_DFD, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_E03,
+ ht_bucket_html5_E04, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_E08, ht_bucket_html5_E09, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_E0C, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_E11, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_E18, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_E1B,
+ ht_bucket_html5_E1C, ht_bucket_html5_E1D, ht_bucket_html5_E1E, ht_bucket_empty,
+ ht_bucket_html5_E20, ht_bucket_empty, ht_bucket_html5_E22, ht_bucket_html5_E23,
+ ht_bucket_html5_E24, ht_bucket_html5_E25, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_E28, ht_bucket_empty, ht_bucket_html5_E2A, ht_bucket_empty,
+ ht_bucket_html5_E2C, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_E2F,
+ ht_bucket_html5_E30, ht_bucket_empty, ht_bucket_html5_E32, ht_bucket_html5_E33,
+ ht_bucket_empty, ht_bucket_html5_E35, ht_bucket_html5_E36, ht_bucket_html5_E37,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_E3B,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_E41, ht_bucket_html5_E42, ht_bucket_html5_E43,
+ ht_bucket_html5_E44, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_E48, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_E4C, ht_bucket_empty, ht_bucket_html5_E4E, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_E53,
+ ht_bucket_empty, ht_bucket_html5_E55, ht_bucket_empty, ht_bucket_html5_E57,
+ ht_bucket_html5_E58, ht_bucket_html5_E59, ht_bucket_empty, ht_bucket_html5_E5B,
+ ht_bucket_empty, ht_bucket_html5_E5D, ht_bucket_html5_E5E, ht_bucket_html5_E5F,
+ ht_bucket_html5_E60, ht_bucket_html5_E61, ht_bucket_empty, ht_bucket_html5_E63,
+ ht_bucket_html5_E64, ht_bucket_html5_E65, ht_bucket_html5_E66, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_E6A, ht_bucket_empty,
+ ht_bucket_html5_E6C, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_E6F,
+ ht_bucket_html5_E70, ht_bucket_html5_E71, ht_bucket_empty, ht_bucket_html5_E73,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_E78, ht_bucket_empty, ht_bucket_html5_E7A, ht_bucket_empty,
+ ht_bucket_html5_E7C, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_E80, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_E83,
+ ht_bucket_html5_E84, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_E89, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_E8E, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_E91, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_E99, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_E9C, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_EA1, ht_bucket_html5_EA2, ht_bucket_empty,
+ ht_bucket_html5_EA4, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_EA8, ht_bucket_html5_EA9, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_EB1, ht_bucket_html5_EB2, ht_bucket_empty,
+ ht_bucket_html5_EB4, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_EB7,
+ ht_bucket_html5_EB8, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_ECA, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_ECD, ht_bucket_empty, ht_bucket_html5_ECF,
+ ht_bucket_empty, ht_bucket_html5_ED1, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_ED7,
+ ht_bucket_html5_ED8, ht_bucket_html5_ED9, ht_bucket_html5_EDA, ht_bucket_html5_EDB,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_EDF,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_EE2, ht_bucket_empty,
+ ht_bucket_html5_EE4, ht_bucket_html5_EE5, ht_bucket_empty, ht_bucket_html5_EE7,
+ ht_bucket_empty, ht_bucket_html5_EE9, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_EEF,
+ ht_bucket_empty, ht_bucket_html5_EF1, ht_bucket_html5_EF2, ht_bucket_empty,
+ ht_bucket_html5_EF4, ht_bucket_html5_EF5, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_EF9, ht_bucket_empty, ht_bucket_html5_EFB,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_EFE, ht_bucket_html5_EFF,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_F03,
+ ht_bucket_empty, ht_bucket_html5_F05, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_F08, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_F0B,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_F0F,
+ ht_bucket_html5_F10, ht_bucket_html5_F11, ht_bucket_empty, ht_bucket_html5_F13,
+ ht_bucket_html5_F14, ht_bucket_html5_F15, ht_bucket_empty, ht_bucket_html5_F17,
+ ht_bucket_html5_F18, ht_bucket_html5_F19, ht_bucket_html5_F1A, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_F1F,
+ ht_bucket_html5_F20, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_F26, ht_bucket_empty,
+ ht_bucket_html5_F28, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_F2C, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_F2F,
+ ht_bucket_html5_F30, ht_bucket_html5_F31, ht_bucket_empty, ht_bucket_html5_F33,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_F37,
+ ht_bucket_html5_F38, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_F40, ht_bucket_html5_F41, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_F44, ht_bucket_empty, ht_bucket_html5_F46, ht_bucket_html5_F47,
+ ht_bucket_html5_F48, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_F4B,
+ ht_bucket_html5_F4C, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_F50, ht_bucket_html5_F51, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_F55, ht_bucket_empty, ht_bucket_html5_F57,
+ ht_bucket_html5_F58, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_F5B,
+ ht_bucket_empty, ht_bucket_html5_F5D, ht_bucket_empty, ht_bucket_html5_F5F,
+ ht_bucket_html5_F60, ht_bucket_empty, ht_bucket_html5_F62, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_F67,
+ ht_bucket_html5_F68, ht_bucket_html5_F69, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_F6D, ht_bucket_html5_F6E, ht_bucket_html5_F6F,
+ ht_bucket_html5_F70, ht_bucket_html5_F71, ht_bucket_html5_F72, ht_bucket_empty,
+ ht_bucket_html5_F74, ht_bucket_html5_F75, ht_bucket_html5_F76, ht_bucket_html5_F77,
+ ht_bucket_html5_F78, ht_bucket_html5_F79, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_F81, ht_bucket_html5_F82, ht_bucket_html5_F83,
+ ht_bucket_html5_F84, ht_bucket_empty, ht_bucket_html5_F86, ht_bucket_empty,
+ ht_bucket_html5_F88, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_F8B,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_F8F,
+ ht_bucket_empty, ht_bucket_html5_F91, ht_bucket_empty, ht_bucket_html5_F93,
+ ht_bucket_empty, ht_bucket_html5_F95, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_F9A, ht_bucket_empty,
+ ht_bucket_html5_F9C, ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_F9F,
+ ht_bucket_html5_FA0, ht_bucket_html5_FA1, ht_bucket_html5_FA2, ht_bucket_html5_FA3,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_FA9, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_FB0, ht_bucket_html5_FB1, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_FB4, ht_bucket_html5_FB5, ht_bucket_html5_FB6, ht_bucket_html5_FB7,
+ ht_bucket_empty, ht_bucket_html5_FB9, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_FBC, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_FC2, ht_bucket_empty,
+ ht_bucket_html5_FC4, ht_bucket_empty, ht_bucket_html5_FC6, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_FCA, ht_bucket_empty,
+ ht_bucket_html5_FCC, ht_bucket_empty, ht_bucket_html5_FCE, ht_bucket_html5_FCF,
+ ht_bucket_html5_FD0, ht_bucket_empty, ht_bucket_html5_FD2, ht_bucket_html5_FD3,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_FD6, ht_bucket_html5_FD7,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_FDD, ht_bucket_empty, ht_bucket_html5_FDF,
+ ht_bucket_empty, ht_bucket_html5_FE1, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html5_FE6, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_FE9, ht_bucket_html5_FEA, ht_bucket_html5_FEB,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html5_FF5, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_FF8, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html5_FFC, ht_bucket_empty, ht_bucket_html5_FFE, ht_bucket_empty,
};
-static const unicode_mapping unimap_win1252[] = {
- { 0x152, 0x8C }, /* latin capital ligature oe */
- { 0x153, 0x9C }, /* latin small ligature oe */
- { 0x160, 0x8A }, /* latin capital letter s with caron */
- { 0x161, 0x9A }, /* latin small letter s with caron */
- { 0x178, 0x9F }, /* latin capital letter y with diaeresis */
- { 0x17D, 0x8E }, /* latin capital letter z with caron */
- { 0x17E, 0x9E }, /* latin small letter z with caron */
- { 0x192, 0x83 }, /* latin small letter f with hook */
- { 0x2C6, 0x88 }, /* modifier letter circumflex accent */
- { 0x2DC, 0x98 }, /* small tilde */
- { 0x2013, 0x96 }, /* en dash */
- { 0x2014, 0x97 }, /* em dash */
- { 0x2018, 0x91 }, /* left single quotation mark */
- { 0x2019, 0x92 }, /* right single quotation mark */
- { 0x201A, 0x82 }, /* single low-9 quotation mark */
- { 0x201C, 0x93 }, /* left double quotation mark */
- { 0x201D, 0x94 }, /* right double quotation mark */
- { 0x201E, 0x84 }, /* double low-9 quotation mark */
- { 0x2020, 0x86 }, /* dagger */
- { 0x2021, 0x87 }, /* double dagger */
- { 0x2022, 0x95 }, /* bullet */
- { 0x2026, 0x85 }, /* horizontal ellipsis */
- { 0x2030, 0x89 }, /* per mille sign */
- { 0x2039, 0x8B }, /* single left-pointing angle quotation mark */
- { 0x203A, 0x9B }, /* single right-pointing angle quotation mark */
- { 0x20AC, 0x80 }, /* euro sign */
- { 0x2122, 0x99 }, /* trade mark sign */
+static const entity_ht ent_ht_html5 = {
+ 0x1000,
+ ht_buckets_html5
};
-static const unicode_mapping unimap_win1251[] = {
- { 0xA0, 0xA0 }, /* no-break space */
- { 0xA4, 0xA4 }, /* currency sign */
- { 0xA6, 0xA6 }, /* broken bar */
- { 0xA7, 0xA7 }, /* section sign */
- { 0xA9, 0xA9 }, /* copyright sign */
- { 0xAB, 0xAB }, /* left-pointing double angle quotation mark */
- { 0xAC, 0xAC }, /* not sign */
- { 0xAD, 0xAD }, /* soft hyphen */
- { 0xAE, 0xAE }, /* registered sign */
- { 0xB0, 0xB0 }, /* degree sign */
- { 0xB1, 0xB1 }, /* plus-minus sign */
- { 0xB5, 0xB5 }, /* micro sign */
- { 0xB6, 0xB6 }, /* pilcrow sign */
- { 0xB7, 0xB7 }, /* middle dot */
- { 0xBB, 0xBB }, /* right-pointing double angle quotation mark */
- { 0x401, 0xA8 }, /* cyrillic capital letter io */
- { 0x402, 0x80 }, /* cyrillic capital letter dje */
- { 0x403, 0x81 }, /* cyrillic capital letter gje */
- { 0x404, 0xAA }, /* cyrillic capital letter ukrainian ie */
- { 0x405, 0xBD }, /* cyrillic capital letter dze */
- { 0x406, 0xB2 }, /* cyrillic capital letter byelorussian-ukrainian i */
- { 0x407, 0xAF }, /* cyrillic capital letter yi */
- { 0x408, 0xA3 }, /* cyrillic capital letter je */
- { 0x409, 0x8A }, /* cyrillic capital letter lje */
- { 0x40A, 0x8C }, /* cyrillic capital letter nje */
- { 0x40B, 0x8E }, /* cyrillic capital letter tshe */
- { 0x40C, 0x8D }, /* cyrillic capital letter kje */
- { 0x40E, 0xA1 }, /* cyrillic capital letter short u */
- { 0x40F, 0x8F }, /* cyrillic capital letter dzhe */
- { 0x410, 0xC0 }, /* cyrillic capital letter a */
- { 0x411, 0xC1 }, /* cyrillic capital letter be */
- { 0x412, 0xC2 }, /* cyrillic capital letter ve */
- { 0x413, 0xC3 }, /* cyrillic capital letter ghe */
- { 0x414, 0xC4 }, /* cyrillic capital letter de */
- { 0x415, 0xC5 }, /* cyrillic capital letter ie */
- { 0x416, 0xC6 }, /* cyrillic capital letter zhe */
- { 0x417, 0xC7 }, /* cyrillic capital letter ze */
- { 0x418, 0xC8 }, /* cyrillic capital letter i */
- { 0x419, 0xC9 }, /* cyrillic capital letter short i */
- { 0x41A, 0xCA }, /* cyrillic capital letter ka */
- { 0x41B, 0xCB }, /* cyrillic capital letter el */
- { 0x41C, 0xCC }, /* cyrillic capital letter em */
- { 0x41D, 0xCD }, /* cyrillic capital letter en */
- { 0x41E, 0xCE }, /* cyrillic capital letter o */
- { 0x41F, 0xCF }, /* cyrillic capital letter pe */
- { 0x420, 0xD0 }, /* cyrillic capital letter er */
- { 0x421, 0xD1 }, /* cyrillic capital letter es */
- { 0x422, 0xD2 }, /* cyrillic capital letter te */
- { 0x423, 0xD3 }, /* cyrillic capital letter u */
- { 0x424, 0xD4 }, /* cyrillic capital letter ef */
- { 0x425, 0xD5 }, /* cyrillic capital letter ha */
- { 0x426, 0xD6 }, /* cyrillic capital letter tse */
- { 0x427, 0xD7 }, /* cyrillic capital letter che */
- { 0x428, 0xD8 }, /* cyrillic capital letter sha */
- { 0x429, 0xD9 }, /* cyrillic capital letter shcha */
- { 0x42A, 0xDA }, /* cyrillic capital letter hard sign */
- { 0x42B, 0xDB }, /* cyrillic capital letter yeru */
- { 0x42C, 0xDC }, /* cyrillic capital letter soft sign */
- { 0x42D, 0xDD }, /* cyrillic capital letter e */
- { 0x42E, 0xDE }, /* cyrillic capital letter yu */
- { 0x42F, 0xDF }, /* cyrillic capital letter ya */
- { 0x430, 0xE0 }, /* cyrillic small letter a */
- { 0x431, 0xE1 }, /* cyrillic small letter be */
- { 0x432, 0xE2 }, /* cyrillic small letter ve */
- { 0x433, 0xE3 }, /* cyrillic small letter ghe */
- { 0x434, 0xE4 }, /* cyrillic small letter de */
- { 0x435, 0xE5 }, /* cyrillic small letter ie */
- { 0x436, 0xE6 }, /* cyrillic small letter zhe */
- { 0x437, 0xE7 }, /* cyrillic small letter ze */
- { 0x438, 0xE8 }, /* cyrillic small letter i */
- { 0x439, 0xE9 }, /* cyrillic small letter short i */
- { 0x43A, 0xEA }, /* cyrillic small letter ka */
- { 0x43B, 0xEB }, /* cyrillic small letter el */
- { 0x43C, 0xEC }, /* cyrillic small letter em */
- { 0x43D, 0xED }, /* cyrillic small letter en */
- { 0x43E, 0xEE }, /* cyrillic small letter o */
- { 0x43F, 0xEF }, /* cyrillic small letter pe */
- { 0x440, 0xF0 }, /* cyrillic small letter er */
- { 0x441, 0xF1 }, /* cyrillic small letter es */
- { 0x442, 0xF2 }, /* cyrillic small letter te */
- { 0x443, 0xF3 }, /* cyrillic small letter u */
- { 0x444, 0xF4 }, /* cyrillic small letter ef */
- { 0x445, 0xF5 }, /* cyrillic small letter ha */
- { 0x446, 0xF6 }, /* cyrillic small letter tse */
- { 0x447, 0xF7 }, /* cyrillic small letter che */
- { 0x448, 0xF8 }, /* cyrillic small letter sha */
- { 0x449, 0xF9 }, /* cyrillic small letter shcha */
- { 0x44A, 0xFA }, /* cyrillic small letter hard sign */
- { 0x44B, 0xFB }, /* cyrillic small letter yeru */
- { 0x44C, 0xFC }, /* cyrillic small letter soft sign */
- { 0x44D, 0xFD }, /* cyrillic small letter e */
- { 0x44E, 0xFE }, /* cyrillic small letter yu */
- { 0x44F, 0xFF }, /* cyrillic small letter ya */
- { 0x451, 0xB8 }, /* cyrillic small letter io */
- { 0x452, 0x90 }, /* cyrillic small letter dje */
- { 0x453, 0x83 }, /* cyrillic small letter gje */
- { 0x454, 0xBA }, /* cyrillic small letter ukrainian ie */
- { 0x455, 0xBE }, /* cyrillic small letter dze */
- { 0x456, 0xB3 }, /* cyrillic small letter byelorussian-ukrainian i */
- { 0x457, 0xBF }, /* cyrillic small letter yi */
- { 0x458, 0xBC }, /* cyrillic small letter je */
- { 0x459, 0x9A }, /* cyrillic small letter lje */
- { 0x45A, 0x9C }, /* cyrillic small letter nje */
- { 0x45B, 0x9E }, /* cyrillic small letter tshe */
- { 0x45C, 0x9D }, /* cyrillic small letter kje */
- { 0x45E, 0xA2 }, /* cyrillic small letter short u */
- { 0x45F, 0x9F }, /* cyrillic small letter dzhe */
- { 0x490, 0xA5 }, /* cyrillic capital letter ghe with upturn */
- { 0x491, 0xB4 }, /* cyrillic small letter ghe with upturn */
- { 0x2013, 0x96 }, /* en dash */
- { 0x2014, 0x97 }, /* em dash */
- { 0x2018, 0x91 }, /* left single quotation mark */
- { 0x2019, 0x92 }, /* right single quotation mark */
- { 0x201A, 0x82 }, /* single low-9 quotation mark */
- { 0x201C, 0x93 }, /* left double quotation mark */
- { 0x201D, 0x94 }, /* right double quotation mark */
- { 0x201E, 0x84 }, /* double low-9 quotation mark */
- { 0x2020, 0x86 }, /* dagger */
- { 0x2021, 0x87 }, /* double dagger */
- { 0x2022, 0x95 }, /* bullet */
- { 0x2026, 0x85 }, /* horizontal ellipsis */
- { 0x2030, 0x89 }, /* per mille sign */
- { 0x2039, 0x8B }, /* single left-pointing angle quotation mark */
- { 0x203A, 0x9B }, /* single right-pointing angle quotation mark */
- { 0x20AC, 0x88 }, /* euro sign */
- { 0x2116, 0xB9 }, /* numero sign */
- { 0x2122, 0x99 }, /* trade mark sign */
+/* end of HTML5 hash table for entity -> codepoint }}} */
+
+/* {{{ Start of HTML 4.01 multi-stage table for codepoint -> entity */
+
+/* {{{ Stage 3 Tables for HTML 4.01 */
+
+static const entity_stage3_row stage3_table_html4_00000[] = {
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, "quot", 4}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, "amp", 3}, {0, "#039", 4},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "lt", 2}, {0, NULL, 0}, {0, "gt", 2}, {0, NULL, 0},
};
-static const unicode_mapping unimap_koi8r[] = {
- { 0xA0, 0x9A }, /* no-break space */
- { 0xA9, 0xBF }, /* copyright sign */
- { 0xB0, 0x9C }, /* degree sign */
- { 0xB2, 0x9D }, /* superscript two */
- { 0xB7, 0x9E }, /* middle dot */
- { 0xF7, 0x9F }, /* division sign */
- { 0x401, 0xB3 }, /* cyrillic capital letter io */
- { 0x410, 0xE1 }, /* cyrillic capital letter a */
- { 0x411, 0xE2 }, /* cyrillic capital letter be */
- { 0x412, 0xF7 }, /* cyrillic capital letter ve */
- { 0x413, 0xE7 }, /* cyrillic capital letter ghe */
- { 0x414, 0xE4 }, /* cyrillic capital letter de */
- { 0x415, 0xE5 }, /* cyrillic capital letter ie */
- { 0x416, 0xF6 }, /* cyrillic capital letter zhe */
- { 0x417, 0xFA }, /* cyrillic capital letter ze */
- { 0x418, 0xE9 }, /* cyrillic capital letter i */
- { 0x419, 0xEA }, /* cyrillic capital letter short i */
- { 0x41A, 0xEB }, /* cyrillic capital letter ka */
- { 0x41B, 0xEC }, /* cyrillic capital letter el */
- { 0x41C, 0xED }, /* cyrillic capital letter em */
- { 0x41D, 0xEE }, /* cyrillic capital letter en */
- { 0x41E, 0xEF }, /* cyrillic capital letter o */
- { 0x41F, 0xF0 }, /* cyrillic capital letter pe */
- { 0x420, 0xF2 }, /* cyrillic capital letter er */
- { 0x421, 0xF3 }, /* cyrillic capital letter es */
- { 0x422, 0xF4 }, /* cyrillic capital letter te */
- { 0x423, 0xF5 }, /* cyrillic capital letter u */
- { 0x424, 0xE6 }, /* cyrillic capital letter ef */
- { 0x425, 0xE8 }, /* cyrillic capital letter ha */
- { 0x426, 0xE3 }, /* cyrillic capital letter tse */
- { 0x427, 0xFE }, /* cyrillic capital letter che */
- { 0x428, 0xFB }, /* cyrillic capital letter sha */
- { 0x429, 0xFD }, /* cyrillic capital letter shcha */
- { 0x42A, 0xFF }, /* cyrillic capital letter hard sign */
- { 0x42B, 0xF9 }, /* cyrillic capital letter yeru */
- { 0x42C, 0xF8 }, /* cyrillic capital letter soft sign */
- { 0x42D, 0xFC }, /* cyrillic capital letter e */
- { 0x42E, 0xE0 }, /* cyrillic capital letter yu */
- { 0x42F, 0xF1 }, /* cyrillic capital letter ya */
- { 0x430, 0xC1 }, /* cyrillic small letter a */
- { 0x431, 0xC2 }, /* cyrillic small letter be */
- { 0x432, 0xD7 }, /* cyrillic small letter ve */
- { 0x433, 0xC7 }, /* cyrillic small letter ghe */
- { 0x434, 0xC4 }, /* cyrillic small letter de */
- { 0x435, 0xC5 }, /* cyrillic small letter ie */
- { 0x436, 0xD6 }, /* cyrillic small letter zhe */
- { 0x437, 0xDA }, /* cyrillic small letter ze */
- { 0x438, 0xC9 }, /* cyrillic small letter i */
- { 0x439, 0xCA }, /* cyrillic small letter short i */
- { 0x43A, 0xCB }, /* cyrillic small letter ka */
- { 0x43B, 0xCC }, /* cyrillic small letter el */
- { 0x43C, 0xCD }, /* cyrillic small letter em */
- { 0x43D, 0xCE }, /* cyrillic small letter en */
- { 0x43E, 0xCF }, /* cyrillic small letter o */
- { 0x43F, 0xD0 }, /* cyrillic small letter pe */
- { 0x440, 0xD2 }, /* cyrillic small letter er */
- { 0x441, 0xD3 }, /* cyrillic small letter es */
- { 0x442, 0xD4 }, /* cyrillic small letter te */
- { 0x443, 0xD5 }, /* cyrillic small letter u */
- { 0x444, 0xC6 }, /* cyrillic small letter ef */
- { 0x445, 0xC8 }, /* cyrillic small letter ha */
- { 0x446, 0xC3 }, /* cyrillic small letter tse */
- { 0x447, 0xDE }, /* cyrillic small letter che */
- { 0x448, 0xDB }, /* cyrillic small letter sha */
- { 0x449, 0xDD }, /* cyrillic small letter shcha */
- { 0x44A, 0xDF }, /* cyrillic small letter hard sign */
- { 0x44B, 0xD9 }, /* cyrillic small letter yeru */
- { 0x44C, 0xD8 }, /* cyrillic small letter soft sign */
- { 0x44D, 0xDC }, /* cyrillic small letter e */
- { 0x44E, 0xC0 }, /* cyrillic small letter yu */
- { 0x44F, 0xD1 }, /* cyrillic small letter ya */
- { 0x451, 0xA3 }, /* cyrillic small letter io */
- { 0x2219, 0x95 }, /* bullet operator */
- { 0x221A, 0x96 }, /* square root */
- { 0x2248, 0x97 }, /* almost equal to */
- { 0x2264, 0x98 }, /* less-than or equal to */
- { 0x2265, 0x99 }, /* greater-than or equal to */
- { 0x2320, 0x93 }, /* top half integral */
- { 0x2321, 0x9B }, /* bottom half integral */
- { 0x2500, 0x80 }, /* box drawings light horizontal */
- { 0x2502, 0x81 }, /* box drawings light vertical */
- { 0x250C, 0x82 }, /* box drawings light down and right */
- { 0x2510, 0x83 }, /* box drawings light down and left */
- { 0x2514, 0x84 }, /* box drawings light up and right */
- { 0x2518, 0x85 }, /* box drawings light up and left */
- { 0x251C, 0x86 }, /* box drawings light vertical and right */
- { 0x2524, 0x87 }, /* box drawings light vertical and left */
- { 0x252C, 0x88 }, /* box drawings light down and horizontal */
- { 0x2534, 0x89 }, /* box drawings light up and horizontal */
- { 0x253C, 0x8A }, /* box drawings light vertical and horizontal */
- { 0x2550, 0xA0 }, /* box drawings double horizontal */
- { 0x2551, 0xA1 }, /* box drawings double vertical */
- { 0x2552, 0xA2 }, /* box drawings down single and right double */
- { 0x2553, 0xA4 }, /* box drawings down double and right single */
- { 0x2554, 0xA5 }, /* box drawings double down and right */
- { 0x2555, 0xA6 }, /* box drawings down single and left double */
- { 0x2556, 0xA7 }, /* box drawings down double and left single */
- { 0x2557, 0xA8 }, /* box drawings double down and left */
- { 0x2558, 0xA9 }, /* box drawings up single and right double */
- { 0x2559, 0xAA }, /* box drawings up double and right single */
- { 0x255A, 0xAB }, /* box drawings double up and right */
- { 0x255B, 0xAC }, /* box drawings up single and left double */
- { 0x255C, 0xAD }, /* box drawings up double and left single */
- { 0x255D, 0xAE }, /* box drawings double up and left */
- { 0x255E, 0xAF }, /* box drawings vertical single and right double */
- { 0x255F, 0xB0 }, /* box drawings vertical double and right single */
- { 0x2560, 0xB1 }, /* box drawings double vertical and right */
- { 0x2561, 0xB2 }, /* box drawings vertical single and left double */
- { 0x2562, 0xB4 }, /* box drawings vertical double and left single */
- { 0x2563, 0xB5 }, /* box drawings double vertical and left */
- { 0x2564, 0xB6 }, /* box drawings down single and horizontal double */
- { 0x2565, 0xB7 }, /* box drawings down double and horizontal single */
- { 0x2566, 0xB8 }, /* box drawings double down and horizontal */
- { 0x2567, 0xB9 }, /* box drawings up single and horizontal double */
- { 0x2568, 0xBA }, /* box drawings up double and horizontal single */
- { 0x2569, 0xBB }, /* box drawings double up and horizontal */
- { 0x256A, 0xBC }, /* box drawings vertical single and horizontal double */
- { 0x256B, 0xBD }, /* box drawings vertical double and horizontal single */
- { 0x256C, 0xBE }, /* box drawings double vertical and horizontal */
- { 0x2580, 0x8B }, /* upper half block */
- { 0x2584, 0x8C }, /* lower half block */
- { 0x2588, 0x8D }, /* full block */
- { 0x258C, 0x8E }, /* left half block */
- { 0x2590, 0x8F }, /* right half block */
- { 0x2591, 0x90 }, /* light shade */
- { 0x2592, 0x91 }, /* medium shade */
- { 0x2593, 0x92 }, /* dark shade */
- { 0x25A0, 0x94 }, /* black square */
+static const entity_stage3_row stage3_table_html4_00080[] = {
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "nbsp", 4}, {0, "iexcl", 5}, {0, "cent", 4}, {0, "pound", 5},
+ {0, "curren", 6}, {0, "yen", 3}, {0, "brvbar", 6}, {0, "sect", 4},
+ {0, "uml", 3}, {0, "copy", 4}, {0, "ordf", 4}, {0, "laquo", 5},
+ {0, "not", 3}, {0, "shy", 3}, {0, "reg", 3}, {0, "macr", 4},
+ {0, "deg", 3}, {0, "plusmn", 6}, {0, "sup2", 4}, {0, "sup3", 4},
+ {0, "acute", 5}, {0, "micro", 5}, {0, "para", 4}, {0, "middot", 6},
+ {0, "cedil", 5}, {0, "sup1", 4}, {0, "ordm", 4}, {0, "raquo", 5},
+ {0, "frac14", 6}, {0, "frac12", 6}, {0, "frac34", 6}, {0, "iquest", 6},
};
-static const unicode_mapping unimap_cp866[] = {
- { 0xA0, 0xFF }, /* no-break space */
- { 0xA4, 0xFD }, /* currency sign */
- { 0xB0, 0xF8 }, /* degree sign */
- { 0xB7, 0xFA }, /* middle dot */
- { 0x401, 0xF0 }, /* cyrillic capital letter io */
- { 0x404, 0xF2 }, /* cyrillic capital letter ukrainian ie */
- { 0x407, 0xF4 }, /* cyrillic capital letter yi */
- { 0x40E, 0xF6 }, /* cyrillic capital letter short u */
- { 0x410, 0x80 }, /* cyrillic capital letter a */
- { 0x411, 0x81 }, /* cyrillic capital letter be */
- { 0x412, 0x82 }, /* cyrillic capital letter ve */
- { 0x413, 0x83 }, /* cyrillic capital letter ghe */
- { 0x414, 0x84 }, /* cyrillic capital letter de */
- { 0x415, 0x85 }, /* cyrillic capital letter ie */
- { 0x416, 0x86 }, /* cyrillic capital letter zhe */
- { 0x417, 0x87 }, /* cyrillic capital letter ze */
- { 0x418, 0x88 }, /* cyrillic capital letter i */
- { 0x419, 0x89 }, /* cyrillic capital letter short i */
- { 0x41A, 0x8A }, /* cyrillic capital letter ka */
- { 0x41B, 0x8B }, /* cyrillic capital letter el */
- { 0x41C, 0x8C }, /* cyrillic capital letter em */
- { 0x41D, 0x8D }, /* cyrillic capital letter en */
- { 0x41E, 0x8E }, /* cyrillic capital letter o */
- { 0x41F, 0x8F }, /* cyrillic capital letter pe */
- { 0x420, 0x90 }, /* cyrillic capital letter er */
- { 0x421, 0x91 }, /* cyrillic capital letter es */
- { 0x422, 0x92 }, /* cyrillic capital letter te */
- { 0x423, 0x93 }, /* cyrillic capital letter u */
- { 0x424, 0x94 }, /* cyrillic capital letter ef */
- { 0x425, 0x95 }, /* cyrillic capital letter ha */
- { 0x426, 0x96 }, /* cyrillic capital letter tse */
- { 0x427, 0x97 }, /* cyrillic capital letter che */
- { 0x428, 0x98 }, /* cyrillic capital letter sha */
- { 0x429, 0x99 }, /* cyrillic capital letter shcha */
- { 0x42A, 0x9A }, /* cyrillic capital letter hard sign */
- { 0x42B, 0x9B }, /* cyrillic capital letter yeru */
- { 0x42C, 0x9C }, /* cyrillic capital letter soft sign */
- { 0x42D, 0x9D }, /* cyrillic capital letter e */
- { 0x42E, 0x9F }, /* cyrillic capital letter ya */
- { 0x430, 0xA0 }, /* cyrillic small letter a */
- { 0x431, 0xA1 }, /* cyrillic small letter be */
- { 0x432, 0xA2 }, /* cyrillic small letter ve */
- { 0x433, 0xA3 }, /* cyrillic small letter ghe */
- { 0x434, 0xA4 }, /* cyrillic small letter de */
- { 0x435, 0xA5 }, /* cyrillic small letter ie */
- { 0x436, 0xA6 }, /* cyrillic small letter zhe */
- { 0x437, 0xA7 }, /* cyrillic small letter ze */
- { 0x438, 0xA8 }, /* cyrillic small letter i */
- { 0x439, 0xA9 }, /* cyrillic small letter short i */
- { 0x43A, 0xAA }, /* cyrillic small letter ka */
- { 0x43B, 0xAB }, /* cyrillic small letter el */
- { 0x43C, 0xAC }, /* cyrillic small letter em */
- { 0x43D, 0xAD }, /* cyrillic small letter en */
- { 0x43E, 0xAE }, /* cyrillic small letter o */
- { 0x43F, 0xAF }, /* cyrillic small letter pe */
- { 0x440, 0xE0 }, /* cyrillic small letter er */
- { 0x441, 0xE1 }, /* cyrillic small letter es */
- { 0x442, 0xE2 }, /* cyrillic small letter te */
- { 0x443, 0xE3 }, /* cyrillic small letter u */
- { 0x444, 0xE4 }, /* cyrillic small letter ef */
- { 0x445, 0xE5 }, /* cyrillic small letter ha */
- { 0x446, 0xE6 }, /* cyrillic small letter tse */
- { 0x447, 0xE7 }, /* cyrillic small letter che */
- { 0x448, 0xE8 }, /* cyrillic small letter sha */
- { 0x449, 0xE9 }, /* cyrillic small letter shcha */
- { 0x44A, 0xEA }, /* cyrillic small letter hard sign */
- { 0x44B, 0xEB }, /* cyrillic small letter yeru */
- { 0x44C, 0xEC }, /* cyrillic small letter soft sign */
- { 0x44D, 0xED }, /* cyrillic small letter e */
- { 0x44E, 0xEE }, /* cyrillic small letter yu */
- { 0x44F, 0xEF }, /* cyrillic small letter ya */
- { 0x451, 0xF1 }, /* cyrillic small letter io */
- { 0x454, 0xF3 }, /* cyrillic small letter ukrainian ie */
- { 0x457, 0xF5 }, /* cyrillic small letter yi */
- { 0x45E, 0xF7 }, /* cyrillic small letter short u */
- { 0x2116, 0xFC }, /* numero sign */
- { 0x2219, 0xF9 }, /* bullet operator */
- { 0x221A, 0xFB }, /* square root */
- { 0x2500, 0xC4 }, /* box drawings light horizontal */
- { 0x2502, 0xB3 }, /* box drawings light vertical */
- { 0x250C, 0xDA }, /* box drawings light down and right */
- { 0x2510, 0xBF }, /* box drawings light down and left */
- { 0x2514, 0xC0 }, /* box drawings light up and right */
- { 0x2518, 0xD9 }, /* box drawings light up and left */
- { 0x251C, 0xC3 }, /* box drawings light vertical and right */
- { 0x2524, 0xB4 }, /* box drawings light vertical and left */
- { 0x252C, 0xC2 }, /* box drawings light down and horizontal */
- { 0x2534, 0xC1 }, /* box drawings light up and horizontal */
- { 0x253C, 0xC5 }, /* box drawings light vertical and horizontal */
- { 0x2550, 0xCD }, /* box drawings double horizontal */
- { 0x2551, 0xBA }, /* box drawings double vertical */
- { 0x2552, 0xD5 }, /* box drawings down single and right double */
- { 0x2553, 0xD6 }, /* box drawings down double and right single */
- { 0x2554, 0xC9 }, /* box drawings double down and right */
- { 0x2555, 0xB8 }, /* box drawings down single and left double */
- { 0x2556, 0xB7 }, /* box drawings down double and left single */
- { 0x2557, 0xBB }, /* box drawings double down and left */
- { 0x2558, 0xD4 }, /* box drawings up single and right double */
- { 0x2559, 0xD3 }, /* box drawings up double and right single */
- { 0x255A, 0xC8 }, /* box drawings double up and right */
- { 0x255B, 0xBE }, /* box drawings up single and left double */
- { 0x255C, 0xBD }, /* box drawings up double and left single */
- { 0x255D, 0xBC }, /* box drawings double up and left */
- { 0x255E, 0xC6 }, /* box drawings vertical single and right double */
- { 0x255F, 0xC7 }, /* box drawings vertical double and right single */
- { 0x2560, 0xCC }, /* box drawings double vertical and right */
- { 0x2561, 0xB5 }, /* box drawings vertical single and left double */
- { 0x2562, 0xB6 }, /* box drawings vertical double and left single */
- { 0x2563, 0xB9 }, /* box drawings double vertical and left */
- { 0x2564, 0xD1 }, /* box drawings down single and horizontal double */
- { 0x2565, 0xD2 }, /* box drawings down double and horizontal single */
- { 0x2566, 0xCB }, /* box drawings double down and horizontal */
- { 0x2567, 0xCF }, /* box drawings up single and horizontal double */
- { 0x2568, 0xD0 }, /* box drawings up double and horizontal single */
- { 0x2569, 0xCA }, /* box drawings double up and horizontal */
- { 0x256A, 0xD8 }, /* box drawings vertical single and horizontal double */
- { 0x256B, 0xD7 }, /* box drawings vertical double and horizontal single */
- { 0x256C, 0xCE }, /* box drawings double vertical and horizontal */
- { 0x2580, 0xDF }, /* upper half block */
- { 0x2584, 0xDC }, /* lower half block */
- { 0x2588, 0xDB }, /* full block */
- { 0x258C, 0xDD }, /* left half block */
- { 0x2590, 0xDE }, /* right half block */
- { 0x2591, 0xB0 }, /* light shade */
- { 0x2592, 0xB1 }, /* medium shade */
- { 0x2593, 0xB2 }, /* dark shade */
- { 0x25A0, 0xFE }, /* black square */
+static const entity_stage3_row stage3_table_html4_000C0[] = {
+ {0, "Agrave", 6}, {0, "Aacute", 6}, {0, "Acirc", 5}, {0, "Atilde", 6},
+ {0, "Auml", 4}, {0, "Aring", 5}, {0, "AElig", 5}, {0, "Ccedil", 6},
+ {0, "Egrave", 6}, {0, "Eacute", 6}, {0, "Ecirc", 5}, {0, "Euml", 4},
+ {0, "Igrave", 6}, {0, "Iacute", 6}, {0, "Icirc", 5}, {0, "Iuml", 4},
+ {0, "ETH", 3}, {0, "Ntilde", 6}, {0, "Ograve", 6}, {0, "Oacute", 6},
+ {0, "Ocirc", 5}, {0, "Otilde", 6}, {0, "Ouml", 4}, {0, "times", 5},
+ {0, "Oslash", 6}, {0, "Ugrave", 6}, {0, "Uacute", 6}, {0, "Ucirc", 5},
+ {0, "Uuml", 4}, {0, "Yacute", 6}, {0, "THORN", 5}, {0, "szlig", 5},
+ {0, "agrave", 6}, {0, "aacute", 6}, {0, "acirc", 5}, {0, "atilde", 6},
+ {0, "auml", 4}, {0, "aring", 5}, {0, "aelig", 5}, {0, "ccedil", 6},
+ {0, "egrave", 6}, {0, "eacute", 6}, {0, "ecirc", 5}, {0, "euml", 4},
+ {0, "igrave", 6}, {0, "iacute", 6}, {0, "icirc", 5}, {0, "iuml", 4},
+ {0, "eth", 3}, {0, "ntilde", 6}, {0, "ograve", 6}, {0, "oacute", 6},
+ {0, "ocirc", 5}, {0, "otilde", 6}, {0, "ouml", 4}, {0, "divide", 6},
+ {0, "oslash", 6}, {0, "ugrave", 6}, {0, "uacute", 6}, {0, "ucirc", 5},
+ {0, "uuml", 4}, {0, "yacute", 6}, {0, "thorn", 5}, {0, "yuml", 4},
};
-static const unicode_mapping unimap_macroman[] = {
- { 0xA0, 0xCA }, /* no-break space */
- { 0xA1, 0xC1 }, /* inverted exclamation mark */
- { 0xA2, 0xA2 }, /* cent sign */
- { 0xA3, 0xA3 }, /* pound sign */
- { 0xA5, 0xB4 }, /* yen sign */
- { 0xA7, 0xA4 }, /* section sign */
- { 0xA8, 0xAC }, /* diaeresis */
- { 0xA9, 0xA9 }, /* copyright sign */
- { 0xAA, 0xBB }, /* feminine ordinal indicator */
- { 0xAB, 0xC7 }, /* left-pointing double angle quotation mark */
- { 0xAC, 0xC2 }, /* not sign */
- { 0xAE, 0xA8 }, /* registered sign */
- { 0xAF, 0xF8 }, /* macron */
- { 0xB0, 0xA1 }, /* degree sign */
- { 0xB1, 0xB1 }, /* plus-minus sign */
- { 0xB4, 0xAB }, /* acute accent */
- { 0xB5, 0xB5 }, /* micro sign */
- { 0xB6, 0xA6 }, /* pilcrow sign */
- { 0xB7, 0xE1 }, /* middle dot */
- { 0xB8, 0xFC }, /* cedilla */
- { 0xBA, 0xBC }, /* masculine ordinal indicator */
- { 0xBB, 0xC8 }, /* right-pointing double angle quotation mark */
- { 0xBF, 0xC0 }, /* inverted question mark */
- { 0xC0, 0xCB }, /* latin capital letter a with grave */
- { 0xC1, 0xE7 }, /* latin capital letter a with acute */
- { 0xC2, 0xE5 }, /* latin capital letter a with circumflex */
- { 0xC3, 0xCC }, /* latin capital letter a with tilde */
- { 0xC4, 0x80 }, /* latin capital letter a with diaeresis */
- { 0xC5, 0x81 }, /* latin capital letter a with ring above */
- { 0xC6, 0xAE }, /* latin capital letter ae */
- { 0xC7, 0x82 }, /* latin capital letter c with cedilla */
- { 0xC8, 0xE9 }, /* latin capital letter e with grave */
- { 0xC9, 0x83 }, /* latin capital letter e with acute */
- { 0xCA, 0xE6 }, /* latin capital letter e with circumflex */
- { 0xCB, 0xE8 }, /* latin capital letter e with diaeresis */
- { 0xCC, 0xED }, /* latin capital letter i with grave */
- { 0xCD, 0xEA }, /* latin capital letter i with acute */
- { 0xCE, 0xEB }, /* latin capital letter i with circumflex */
- { 0xCF, 0xEC }, /* latin capital letter i with diaeresis */
- { 0xD1, 0x84 }, /* latin capital letter n with tilde */
- { 0xD2, 0xF1 }, /* latin capital letter o with grave */
- { 0xD3, 0xEE }, /* latin capital letter o with acute */
- { 0xD4, 0xEF }, /* latin capital letter o with circumflex */
- { 0xD5, 0xCD }, /* latin capital letter o with tilde */
- { 0xD6, 0x85 }, /* latin capital letter o with diaeresis */
- { 0xD8, 0xAF }, /* latin capital letter o with stroke */
- { 0xD9, 0xF4 }, /* latin capital letter u with grave */
- { 0xDA, 0xF2 }, /* latin capital letter u with acute */
- { 0xDB, 0xF3 }, /* latin capital letter u with circumflex */
- { 0xDC, 0x86 }, /* latin capital letter u with diaeresis */
- { 0xDF, 0xA7 }, /* latin small letter sharp s */
- { 0xE0, 0x88 }, /* latin small letter a with grave */
- { 0xE1, 0x87 }, /* latin small letter a with acute */
- { 0xE2, 0x89 }, /* latin small letter a with circumflex */
- { 0xE3, 0x8B }, /* latin small letter a with tilde */
- { 0xE4, 0x8A }, /* latin small letter a with diaeresis */
- { 0xE5, 0x8C }, /* latin small letter a with ring above */
- { 0xE6, 0xBE }, /* latin small letter ae */
- { 0xE7, 0x8D }, /* latin small letter c with cedilla */
- { 0xE8, 0x8F }, /* latin small letter e with grave */
- { 0xE9, 0x8E }, /* latin small letter e with acute */
- { 0xEA, 0x90 }, /* latin small letter e with circumflex */
- { 0xEB, 0x91 }, /* latin small letter e with diaeresis */
- { 0xEC, 0x93 }, /* latin small letter i with grave */
- { 0xED, 0x92 }, /* latin small letter i with acute */
- { 0xEE, 0x94 }, /* latin small letter i with circumflex */
- { 0xEF, 0x95 }, /* latin small letter i with diaeresis */
- { 0xF1, 0x96 }, /* latin small letter n with tilde */
- { 0xF2, 0x98 }, /* latin small letter o with grave */
- { 0xF3, 0x97 }, /* latin small letter o with acute */
- { 0xF4, 0x99 }, /* latin small letter o with circumflex */
- { 0xF5, 0x9B }, /* latin small letter o with tilde */
- { 0xF6, 0x9A }, /* latin small letter o with diaeresis */
- { 0xF7, 0xD6 }, /* division sign */
- { 0xF8, 0xBF }, /* latin small letter o with stroke */
- { 0xF9, 0x9D }, /* latin small letter u with grave */
- { 0xFA, 0x9C }, /* latin small letter u with acute */
- { 0xFB, 0x9E }, /* latin small letter u with circumflex */
- { 0xFC, 0x9F }, /* latin small letter u with diaeresis */
- { 0xFF, 0xD8 }, /* latin small letter y with diaeresis */
- { 0x131, 0xF5 }, /* latin small letter dotless i */
- { 0x152, 0xCE }, /* latin capital ligature oe */
- { 0x153, 0xCF }, /* latin small ligature oe */
- { 0x178, 0xD9 }, /* latin capital letter y with diaeresis */
- { 0x192, 0xC4 }, /* latin small letter f with hook */
- { 0x2C6, 0xF6 }, /* modifier letter circumflex accent */
- { 0x2C7, 0xFF }, /* caron */
- { 0x2D8, 0xF9 }, /* breve */
- { 0x2D9, 0xFA }, /* dot above */
- { 0x2DA, 0xFB }, /* ring above */
- { 0x2DB, 0xFE }, /* ogonek */
- { 0x2DC, 0xF7 }, /* small tilde */
- { 0x2DD, 0xFD }, /* double acute accent */
- { 0x3A9, 0xBD }, /* greek capital letter omega */
- { 0x3C0, 0xB9 }, /* greek small letter pi */
- { 0x2013, 0xD0 }, /* en dash */
- { 0x2014, 0xD1 }, /* em dash */
- { 0x2018, 0xD4 }, /* left single quotation mark */
- { 0x2019, 0xD5 }, /* right single quotation mark */
- { 0x201A, 0xE2 }, /* single low-9 quotation mark */
- { 0x201C, 0xD2 }, /* left double quotation mark */
- { 0x201D, 0xD3 }, /* right double quotation mark */
- { 0x201E, 0xE3 }, /* double low-9 quotation mark */
- { 0x2020, 0xA0 }, /* dagger */
- { 0x2021, 0xE0 }, /* double dagger */
- { 0x2022, 0xA5 }, /* bullet */
- { 0x2026, 0xC9 }, /* horizontal ellipsis */
- { 0x2030, 0xE4 }, /* per mille sign */
- { 0x2039, 0xDC }, /* single left-pointing angle quotation mark */
- { 0x203A, 0xDD }, /* single right-pointing angle quotation mark */
- { 0x2044, 0xDA }, /* fraction slash */
- { 0x20AC, 0xDB }, /* euro sign */
- { 0x2122, 0xAA }, /* trade mark sign */
- { 0x2202, 0xB6 }, /* partial differential */
- { 0x2206, 0xC6 }, /* increment */
- { 0x220F, 0xB8 }, /* n-ary product */
- { 0x2211, 0xB7 }, /* n-ary summation */
- { 0x221A, 0xC3 }, /* square root */
- { 0x221E, 0xB0 }, /* infinity */
- { 0x222B, 0xBA }, /* integral */
- { 0x2248, 0xC5 }, /* almost equal to */
- { 0x2260, 0xAD }, /* not equal to */
- { 0x2264, 0xB2 }, /* less-than or equal to */
- { 0x2265, 0xB3 }, /* greater-than or equal to */
- { 0x25CA, 0xD7 }, /* lozenge */
- { 0xF8FF, 0xF0 }, /* apple logo */
- { 0xFB01, 0xDE }, /* latin small ligature fi */
- { 0xFB02, 0xDF }, /* latin small ligature fl */
+static const entity_stage3_row stage3_table_html4_00140[] = {
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, "OElig", 5}, {0, "oelig", 5},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "Scaron", 6}, {0, "scaron", 6}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "Yuml", 4}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+};
+
+static const entity_stage3_row stage3_table_html4_00180[] = {
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, "fnof", 4}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+};
+
+static const entity_stage3_row stage3_table_html4_002C0[] = {
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, "circ", 4}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "tilde", 5}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+};
+
+static const entity_stage3_row stage3_table_html4_00380[] = {
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, "Alpha", 5}, {0, "Beta", 4}, {0, "Gamma", 5},
+ {0, "Delta", 5}, {0, "Epsilon", 7}, {0, "Zeta", 4}, {0, "Eta", 3},
+ {0, "Theta", 5}, {0, "Iota", 4}, {0, "Kappa", 5}, {0, "Lambda", 6},
+ {0, "Mu", 2}, {0, "Nu", 2}, {0, "Xi", 2}, {0, "Omicron", 7},
+ {0, "Pi", 2}, {0, "Rho", 3}, {0, NULL, 0}, {0, "Sigma", 5},
+ {0, "Tau", 3}, {0, "Upsilon", 7}, {0, "Phi", 3}, {0, "Chi", 3},
+ {0, "Psi", 3}, {0, "Omega", 5}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, "alpha", 5}, {0, "beta", 4}, {0, "gamma", 5},
+ {0, "delta", 5}, {0, "epsilon", 7}, {0, "zeta", 4}, {0, "eta", 3},
+ {0, "theta", 5}, {0, "iota", 4}, {0, "kappa", 5}, {0, "lambda", 6},
+ {0, "mu", 2}, {0, "nu", 2}, {0, "xi", 2}, {0, "omicron", 7},
+};
+
+static const entity_stage3_row stage3_table_html4_003C0[] = {
+ {0, "pi", 2}, {0, "rho", 3}, {0, "sigmaf", 6}, {0, "sigma", 5},
+ {0, "tau", 3}, {0, "upsilon", 7}, {0, "phi", 3}, {0, "chi", 3},
+ {0, "psi", 3}, {0, "omega", 5}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, "thetasym", 8}, {0, "upsih", 5}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, "piv", 3}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+};
+
+static const entity_stage3_row stage3_table_html4_02000[] = {
+ {0, NULL, 0}, {0, NULL, 0}, {0, "ensp", 4}, {0, "emsp", 4},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, "thinsp", 6}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "zwnj", 4}, {0, "zwj", 3}, {0, "lrm", 3}, {0, "rlm", 3},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, "ndash", 5},
+ {0, "mdash", 5}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "lsquo", 5}, {0, "rsquo", 5}, {0, "sbquo", 5}, {0, NULL, 0},
+ {0, "ldquo", 5}, {0, "rdquo", 5}, {0, "bdquo", 5}, {0, NULL, 0},
+ {0, "dagger", 6}, {0, "Dagger", 6}, {0, "bull", 4}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, "hellip", 6}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "permil", 6}, {0, NULL, 0}, {0, "prime", 5}, {0, "Prime", 5},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, "lsaquo", 6}, {0, "rsaquo", 6}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, "oline", 5}, {0, NULL, 0},
+};
+
+static const entity_stage3_row stage3_table_html4_02040[] = {
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "frasl", 5}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+};
+
+static const entity_stage3_row stage3_table_html4_02080[] = {
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "euro", 4}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+};
+
+static const entity_stage3_row stage3_table_html4_02100[] = {
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, "image", 5}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "weierp", 6}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "real", 4}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, "trade", 5}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, "alefsym", 7}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+};
+
+static const entity_stage3_row stage3_table_html4_02180[] = {
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "larr", 4}, {0, "uarr", 4}, {0, "rarr", 4}, {0, "darr", 4},
+ {0, "harr", 4}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, "crarr", 5}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+};
+
+static const entity_stage3_row stage3_table_html4_021C0[] = {
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "lArr", 4}, {0, "uArr", 4}, {0, "rArr", 4}, {0, "dArr", 4},
+ {0, "hArr", 4}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+};
+
+static const entity_stage3_row stage3_table_html4_02200[] = {
+ {0, "forall", 6}, {0, NULL, 0}, {0, "part", 4}, {0, "exist", 5},
+ {0, NULL, 0}, {0, "empty", 5}, {0, NULL, 0}, {0, "nabla", 5},
+ {0, "isin", 4}, {0, "notin", 5}, {0, NULL, 0}, {0, "ni", 2},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, "prod", 4},
+ {0, NULL, 0}, {0, "sum", 3}, {0, "minus", 5}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, "lowast", 6},
+ {0, NULL, 0}, {0, NULL, 0}, {0, "radic", 5}, {0, NULL, 0},
+ {0, NULL, 0}, {0, "prop", 4}, {0, "infin", 5}, {0, NULL, 0},
+ {0, "ang", 3}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, "and", 3},
+ {0, "or", 2}, {0, "cap", 3}, {0, "cup", 3}, {0, "int", 3},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "there4", 6}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "sim", 3}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+};
+
+static const entity_stage3_row stage3_table_html4_02240[] = {
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, "cong", 4}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "asymp", 5}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "ne", 2}, {0, "equiv", 5}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "le", 2}, {0, "ge", 2}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+};
+
+static const entity_stage3_row stage3_table_html4_02280[] = {
+ {0, NULL, 0}, {0, NULL, 0}, {0, "sub", 3}, {0, "sup", 3},
+ {0, "nsub", 4}, {0, NULL, 0}, {0, "sube", 4}, {0, "supe", 4},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, "oplus", 5}, {0, NULL, 0}, {0, "otimes", 6},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, "perp", 4}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+};
+
+static const entity_stage3_row stage3_table_html4_022C0[] = {
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, "sdot", 4}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+};
+
+static const entity_stage3_row stage3_table_html4_02300[] = {
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "lceil", 5}, {0, "rceil", 5}, {0, "lfloor", 6}, {0, "rfloor", 6},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, "lang", 4}, {0, "rang", 4}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+};
+
+static const entity_stage3_row stage3_table_html4_025C0[] = {
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, "loz", 3}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+};
+
+static const entity_stage3_row stage3_table_html4_02640[] = {
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "spades", 6}, {0, NULL, 0}, {0, NULL, 0}, {0, "clubs", 5},
+ {0, NULL, 0}, {0, "hearts", 6}, {0, "diams", 5}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
};
+/* end of stage 3 Tables for HTML 4.01 }}} */
+
+/* {{{ Stage 2 Tables for HTML 4.01 */
+
+static const entity_stage2_row stage2_table_html4_00000[] = {
+ stage3_table_html4_00000, empty_stage3_table, stage3_table_html4_00080, stage3_table_html4_000C0,
+ empty_stage3_table, stage3_table_html4_00140, stage3_table_html4_00180, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, stage3_table_html4_002C0,
+ empty_stage3_table, empty_stage3_table, stage3_table_html4_00380, stage3_table_html4_003C0,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+};
+
+static const entity_stage2_row stage2_table_html4_02000[] = {
+ stage3_table_html4_02000, stage3_table_html4_02040, stage3_table_html4_02080, empty_stage3_table,
+ stage3_table_html4_02100, empty_stage3_table, stage3_table_html4_02180, stage3_table_html4_021C0,
+ stage3_table_html4_02200, stage3_table_html4_02240, stage3_table_html4_02280, stage3_table_html4_022C0,
+ stage3_table_html4_02300, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, stage3_table_html4_025C0,
+ empty_stage3_table, stage3_table_html4_02640, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+};
+
+/* end of stage 2 tables for HTML 4.01 }}} */
+
+static const entity_stage1_row entity_ms_table_html4[] = {
+ stage2_table_html4_00000,
+ empty_stage2_table,
+ stage2_table_html4_02000,
+ empty_stage2_table,
+ empty_stage2_table,
+ empty_stage2_table,
+ empty_stage2_table,
+ empty_stage2_table,
+ empty_stage2_table,
+ empty_stage2_table,
+ empty_stage2_table,
+ empty_stage2_table,
+ empty_stage2_table,
+ empty_stage2_table,
+ empty_stage2_table,
+ empty_stage2_table,
+ empty_stage2_table,
+ empty_stage2_table,
+ empty_stage2_table,
+ empty_stage2_table,
+ empty_stage2_table,
+ empty_stage2_table,
+ empty_stage2_table,
+ empty_stage2_table,
+ empty_stage2_table,
+ empty_stage2_table,
+ empty_stage2_table,
+ empty_stage2_table,
+ empty_stage2_table,
+ empty_stage2_table,
+};
+
+/* end of HTML 4.01 multi-stage table for codepoint -> entity }}} */
+
+/* {{{ HTML 4.01 hash table for entity -> codepoint */
+
+static const entity_cp_map ht_bucket_html4_000[] = { {"gt", 2, 0x0003E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_003[] = { {"Igrave", 6, 0x000CC, 0}, {"amp", 3, 0x00026, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_006[] = { {"oacute", 6, 0x000F3, 0}, {"Xi", 2, 0x0039E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_008[] = { {"uuml", 4, 0x000FC, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_00B[] = { {"Alpha", 5, 0x00391, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_00E[] = { {"sim", 3, 0x0223C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_012[] = { {"kappa", 5, 0x003BA, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_016[] = { {"lArr", 4, 0x021D0, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_018[] = { {"and", 3, 0x02227, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_01B[] = { {"ang", 3, 0x02220, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_020[] = { {"copy", 4, 0x000A9, 0}, {"Iacute", 6, 0x000CD, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_023[] = { {"igrave", 6, 0x000EC, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_026[] = { {"xi", 2, 0x003BE, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_027[] = { {"Acirc", 5, 0x000C2, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_02B[] = { {"Ecirc", 5, 0x000CA, 0}, {"alpha", 5, 0x003B1, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_02C[] = { {"hearts", 6, 0x02665, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_02F[] = { {"Icirc", 5, 0x000CE, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_030[] = { {"Yacute", 6, 0x000DD, 0}, {"int", 3, 0x0222B, 0}, {"rlm", 3, 0x0200F, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_034[] = { {"empty", 5, 0x02205, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_036[] = { {"larr", 4, 0x02190, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_03B[] = { {"Ucirc", 5, 0x000DB, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_03C[] = { {"oline", 5, 0x0203E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_040[] = { {"iacute", 6, 0x000ED, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_046[] = { {"middot", 6, 0x000B7, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_047[] = { {"acirc", 5, 0x000E2, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_04B[] = { {"ecirc", 5, 0x000EA, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_04F[] = { {"icirc", 5, 0x000EE, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_050[] = { {"yacute", 6, 0x000FD, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_051[] = { {"minus", 5, 0x02212, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_054[] = { {"Auml", 4, 0x000C4, 0}, {"thetasym", 8, 0x003D1, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_056[] = { {"Sigma", 5, 0x003A3, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_059[] = { {"lsquo", 5, 0x02018, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_05B[] = { {"ucirc", 5, 0x000FB, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_05C[] = { {"rArr", 4, 0x021D2, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_064[] = { {"brvbar", 6, 0x000A6, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_067[] = { {"AElig", 5, 0x000C6, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_069[] = { {"Ccedil", 6, 0x000C7, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_071[] = { {"Psi", 3, 0x003A8, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_072[] = { {"exist", 5, 0x02203, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_074[] = { {"auml", 4, 0x000E4, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_076[] = { {"sigma", 5, 0x003C3, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_078[] = { {"isin", 4, 0x02208, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_07C[] = { {"rarr", 4, 0x02192, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_089[] = { {"ccedil", 6, 0x000E7, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_08D[] = { {"raquo", 5, 0x000BB, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_08E[] = { {"Omega", 5, 0x003A9, 0}, {"zwnj", 4, 0x0200C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_091[] = { {"psi", 3, 0x003C8, 0}, {"there4", 6, 0x02234, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_092[] = { {"hArr", 4, 0x021D4, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_096[] = { {"le", 2, 0x02264, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_098[] = { {"Atilde", 6, 0x000C3, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_099[] = { {"Zeta", 4, 0x00396, 0}, {"infin", 5, 0x0221E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_09D[] = { {"frasl", 5, 0x02044, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_0A0[] = { {"euro", 4, 0x020AC, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_0A5[] = { {"lt", 2, 0x0003C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_0A7[] = { {"aelig", 5, 0x000E6, 0}, {"Mu", 2, 0x0039C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_0A8[] = { {"macr", 4, 0x000AF, 0}, {"image", 5, 0x02111, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_0AA[] = { {"ldquo", 5, 0x0201C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_0AE[] = { {"omega", 5, 0x003C9, 0}, {"upsih", 5, 0x003D2, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_0B0[] = { {"THORN", 5, 0x000DE, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_0B2[] = { {"Iota", 4, 0x00399, 0}, {"harr", 4, 0x02194, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_0B4[] = { {"bull", 4, 0x02022, 0}, {"rceil", 5, 0x02309, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_0B8[] = { {"atilde", 6, 0x000E3, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_0B9[] = { {"zeta", 4, 0x003B6, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_0BA[] = { {"emsp", 4, 0x02003, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_0BC[] = { {"perp", 4, 0x022A5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_0C2[] = { {"Prime", 5, 0x02033, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_0C4[] = { {"frac12", 6, 0x000BD, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_0C5[] = { {"Ntilde", 6, 0x000D1, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_0C6[] = { {"frac14", 6, 0x000BC, 0}, {"circ", 4, 0x002C6, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_0C7[] = { {"mu", 2, 0x003BC, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_0C8[] = { {"Gamma", 5, 0x00393, 0}, {"Nu", 2, 0x0039D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_0CE[] = { {"fnof", 4, 0x00192, 0}, {"quot", 4, 0x00022, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_0D2[] = { {"iota", 4, 0x003B9, 0}, {"mdash", 5, 0x02014, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_0D8[] = { {"ne", 2, 0x02260, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_0DB[] = { {"Theta", 5, 0x00398, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_0DC[] = { {"ni", 2, 0x0220B, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_0E2[] = { {"prime", 5, 0x02032, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_0E5[] = { {"ntilde", 6, 0x000F1, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_0E6[] = { {"Lambda", 6, 0x0039B, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_0E8[] = { {"gamma", 5, 0x003B3, 0}, {"nu", 2, 0x003BD, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_0EB[] = { {"pound", 5, 0x000A3, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_0EE[] = { {"permil", 6, 0x02030, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_0F9[] = { {"cap", 3, 0x02229, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_0FA[] = { {"iexcl", 5, 0x000A1, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_0FB[] = { {"Agrave", 6, 0x000C0, 0}, {"theta", 5, 0x003B8, 0}, {"ensp", 4, 0x02002, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_0FE[] = { {"Pi", 2, 0x003A0, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_0FF[] = { {"crarr", 5, 0x021B5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_100[] = { {"iquest", 6, 0x000BF, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_105[] = { {"forall", 6, 0x02200, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_106[] = { {"Phi", 3, 0x003A6, 0}, {"lambda", 6, 0x003BB, 0}, {"or", 2, 0x02228, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_108[] = { {"frac34", 6, 0x000BE, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_10D[] = { {"notin", 5, 0x02209, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_10E[] = { {"dArr", 4, 0x021D3, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_10F[] = { {"Dagger", 6, 0x02021, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_111[] = { {"yen", 3, 0x000A5, 0}, {"weierp", 6, 0x02118, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_113[] = { {"uml", 3, 0x000A8, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_117[] = { {"tilde", 5, 0x002DC, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_118[] = { {"Aacute", 6, 0x000C1, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_11A[] = { {"loz", 3, 0x025CA, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_11B[] = { {"agrave", 6, 0x000E0, 0}, {"thinsp", 6, 0x02009, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_11E[] = { {"pi", 2, 0x003C0, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_11F[] = { {"micro", 5, 0x000B5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_125[] = { {"spades", 6, 0x02660, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_126[] = { {"phi", 3, 0x003C6, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_12E[] = { {"darr", 4, 0x02193, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_12F[] = { {"Oslash", 6, 0x000D8, 0}, {"Tau", 3, 0x003A4, 0}, {"dagger", 6, 0x02020, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_135[] = { {"Ocirc", 5, 0x000D4, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_136[] = { {"alefsym", 7, 0x02135, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_138[] = { {"aacute", 6, 0x000E1, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_13A[] = { {"divide", 6, 0x000F7, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_13F[] = { {"sdot", 4, 0x022C5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_143[] = { {"reg", 3, 0x000AE, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_149[] = { {"real", 4, 0x0211C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_14B[] = { {"Scaron", 6, 0x00160, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_14F[] = { {"cent", 4, 0x000A2, 0}, {"oslash", 6, 0x000F8, 0}, {"tau", 3, 0x003C4, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_150[] = { {"thorn", 5, 0x000FE, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_153[] = { {"ndash", 5, 0x02013, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_154[] = { {"piv", 3, 0x003D6, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_155[] = { {"ocirc", 5, 0x000F4, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_156[] = { {"Aring", 5, 0x000C5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_158[] = { {"nbsp", 4, 0x000A0, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_15C[] = { {"Iuml", 4, 0x000CF, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_15F[] = { {"rsquo", 5, 0x02019, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_160[] = { {"rsaquo", 6, 0x0203A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_163[] = { {"hellip", 6, 0x02026, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_166[] = { {"Otilde", 6, 0x000D5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_16B[] = { {"scaron", 6, 0x00161, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_16C[] = { {"Yuml", 4, 0x00178, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_16E[] = { {"sup1", 4, 0x000B9, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_16F[] = { {"sup2", 4, 0x000B2, 0}, {"Delta", 5, 0x00394, 0}, {"sbquo", 5, 0x0201A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_170[] = { {"sup3", 4, 0x000B3, 0}, {"lrm", 3, 0x0200E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_173[] = { {"diams", 5, 0x02666, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_175[] = { {"OElig", 5, 0x00152, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_176[] = { {"aring", 5, 0x000E5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_178[] = { {"oplus", 5, 0x02295, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_17C[] = { {"iuml", 4, 0x000EF, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_17F[] = { {"Egrave", 6, 0x000C8, 0}, {"uArr", 4, 0x021D1, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_181[] = { {"Beta", 4, 0x00392, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_183[] = { {"nabla", 5, 0x02207, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_186[] = { {"ETH", 3, 0x000D0, 0}, {"otilde", 6, 0x000F5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_187[] = { {"laquo", 5, 0x000AB, 0}, {"times", 5, 0x000D7, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_18C[] = { {"yuml", 4, 0x000FF, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_18D[] = { {"cup", 3, 0x0222A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_18E[] = { {"Rho", 3, 0x003A1, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_18F[] = { {"Ugrave", 6, 0x000D9, 0}, {"delta", 5, 0x003B4, 0}, {"equiv", 5, 0x02261, 0}, {"sub", 3, 0x02282, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_194[] = { {"curren", 6, 0x000A4, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_196[] = { {"not", 3, 0x000AC, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_197[] = { {"acute", 5, 0x000B4, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_19A[] = { {"prod", 4, 0x0220F, 0}, {"sum", 3, 0x02211, 0}, {"lsaquo", 6, 0x02039, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_19C[] = { {"Eacute", 6, 0x000C9, 0}, {"Omicron", 7, 0x0039F, 0}, {"sigmaf", 6, 0x003C2, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_19D[] = { {"sup", 3, 0x02283, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_19F[] = { {"egrave", 6, 0x000E8, 0}, {"uarr", 4, 0x02191, 0}, {"lowast", 6, 0x02217, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_1A0[] = { {"zwj", 3, 0x0200D, 0}, {"bdquo", 5, 0x0201E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_1A1[] = { {"beta", 4, 0x003B2, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_1A2[] = { {"Ouml", 4, 0x000D6, 0}, {"supe", 4, 0x02287, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_1A4[] = { {"plusmn", 6, 0x000B1, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_1A6[] = { {"cedil", 5, 0x000B8, 0}, {"prop", 4, 0x0221D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_1A7[] = { {"lang", 4, 0x02329, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_1A8[] = { {"radic", 5, 0x0221A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_1A9[] = { {"para", 4, 0x000B6, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_1AC[] = { {"Uacute", 6, 0x000DA, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_1AE[] = { {"szlig", 5, 0x000DF, 0}, {"rho", 3, 0x003C1, 0}, {"lceil", 5, 0x02308, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_1AF[] = { {"ugrave", 6, 0x000F9, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_1B0[] = { {"rdquo", 5, 0x0201D, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_1B5[] = { {"deg", 3, 0x000B0, 0}, {"trade", 5, 0x02122, 0}, {"oelig", 5, 0x00153, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_1B9[] = { {"Chi", 3, 0x003A7, 0}, {"rfloor", 6, 0x0230B, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_1BC[] = { {"eacute", 6, 0x000E9, 0}, {"omicron", 7, 0x003BF, 0}, {"part", 4, 0x02202, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_1BE[] = { {"clubs", 5, 0x02663, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_1BF[] = { {"Epsilon", 7, 0x00395, 0}, {"Eta", 3, 0x00397, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_1C2[] = { {"ouml", 4, 0x000F6, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_1C4[] = { {"#039", 4, 0x00027, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_1C9[] = { {"Ograve", 6, 0x000D2, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_1CC[] = { {"uacute", 6, 0x000FA, 0}, {"cong", 4, 0x02245, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_1CF[] = { {"Upsilon", 7, 0x003A5, 0}, {"asymp", 5, 0x02248, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_1D0[] = { {"ordf", 4, 0x000AA, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_1D4[] = { {"sube", 4, 0x02286, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_1D7[] = { {"ordm", 4, 0x000BA, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_1D8[] = { {"Euml", 4, 0x000CB, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_1D9[] = { {"chi", 3, 0x003C7, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_1DD[] = { {"nsub", 4, 0x02284, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_1DF[] = { {"epsilon", 7, 0x003B5, 0}, {"eta", 3, 0x003B7, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_1E6[] = { {"Oacute", 6, 0x000D3, 0}, {"eth", 3, 0x000F0, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_1E8[] = { {"Uuml", 4, 0x000DC, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_1E9[] = { {"ograve", 6, 0x000F2, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_1ED[] = { {"rang", 4, 0x0232A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_1EF[] = { {"upsilon", 7, 0x003C5, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_1F1[] = { {"ge", 2, 0x02265, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_1F2[] = { {"Kappa", 5, 0x0039A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_1F3[] = { {"lfloor", 6, 0x0230A, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_1F4[] = { {"sect", 4, 0x000A7, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_1F6[] = { {"otimes", 6, 0x02297, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_1F8[] = { {"euml", 4, 0x000EB, 0}, {NULL} };
+static const entity_cp_map ht_bucket_html4_1F9[] = { {"shy", 3, 0x000AD, 0}, {NULL} };
+
+static const entity_cp_map *const ht_buckets_html4[] = {
+ ht_bucket_html4_000, ht_bucket_empty, ht_bucket_empty, ht_bucket_html4_003,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html4_006, ht_bucket_empty,
+ ht_bucket_html4_008, ht_bucket_empty, ht_bucket_empty, ht_bucket_html4_00B,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html4_00E, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html4_012, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html4_016, ht_bucket_empty,
+ ht_bucket_html4_018, ht_bucket_empty, ht_bucket_empty, ht_bucket_html4_01B,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html4_020, ht_bucket_empty, ht_bucket_empty, ht_bucket_html4_023,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html4_026, ht_bucket_html4_027,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html4_02B,
+ ht_bucket_html4_02C, ht_bucket_empty, ht_bucket_empty, ht_bucket_html4_02F,
+ ht_bucket_html4_030, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html4_034, ht_bucket_empty, ht_bucket_html4_036, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html4_03B,
+ ht_bucket_html4_03C, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html4_040, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html4_046, ht_bucket_html4_047,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html4_04B,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html4_04F,
+ ht_bucket_html4_050, ht_bucket_html4_051, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html4_054, ht_bucket_empty, ht_bucket_html4_056, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html4_059, ht_bucket_empty, ht_bucket_html4_05B,
+ ht_bucket_html4_05C, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html4_064, ht_bucket_empty, ht_bucket_empty, ht_bucket_html4_067,
+ ht_bucket_empty, ht_bucket_html4_069, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html4_071, ht_bucket_html4_072, ht_bucket_empty,
+ ht_bucket_html4_074, ht_bucket_empty, ht_bucket_html4_076, ht_bucket_empty,
+ ht_bucket_html4_078, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html4_07C, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html4_089, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html4_08D, ht_bucket_html4_08E, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html4_091, ht_bucket_html4_092, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html4_096, ht_bucket_empty,
+ ht_bucket_html4_098, ht_bucket_html4_099, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html4_09D, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html4_0A0, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html4_0A5, ht_bucket_empty, ht_bucket_html4_0A7,
+ ht_bucket_html4_0A8, ht_bucket_empty, ht_bucket_html4_0AA, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html4_0AE, ht_bucket_empty,
+ ht_bucket_html4_0B0, ht_bucket_empty, ht_bucket_html4_0B2, ht_bucket_empty,
+ ht_bucket_html4_0B4, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html4_0B8, ht_bucket_html4_0B9, ht_bucket_html4_0BA, ht_bucket_empty,
+ ht_bucket_html4_0BC, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html4_0C2, ht_bucket_empty,
+ ht_bucket_html4_0C4, ht_bucket_html4_0C5, ht_bucket_html4_0C6, ht_bucket_html4_0C7,
+ ht_bucket_html4_0C8, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html4_0CE, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html4_0D2, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html4_0D8, ht_bucket_empty, ht_bucket_empty, ht_bucket_html4_0DB,
+ ht_bucket_html4_0DC, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html4_0E2, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html4_0E5, ht_bucket_html4_0E6, ht_bucket_empty,
+ ht_bucket_html4_0E8, ht_bucket_empty, ht_bucket_empty, ht_bucket_html4_0EB,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html4_0EE, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html4_0F9, ht_bucket_html4_0FA, ht_bucket_html4_0FB,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html4_0FE, ht_bucket_html4_0FF,
+ ht_bucket_html4_100, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html4_105, ht_bucket_html4_106, ht_bucket_empty,
+ ht_bucket_html4_108, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html4_10D, ht_bucket_html4_10E, ht_bucket_html4_10F,
+ ht_bucket_empty, ht_bucket_html4_111, ht_bucket_empty, ht_bucket_html4_113,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html4_117,
+ ht_bucket_html4_118, ht_bucket_empty, ht_bucket_html4_11A, ht_bucket_html4_11B,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html4_11E, ht_bucket_html4_11F,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html4_125, ht_bucket_html4_126, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html4_12E, ht_bucket_html4_12F,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html4_135, ht_bucket_html4_136, ht_bucket_empty,
+ ht_bucket_html4_138, ht_bucket_empty, ht_bucket_html4_13A, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html4_13F,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html4_143,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html4_149, ht_bucket_empty, ht_bucket_html4_14B,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html4_14F,
+ ht_bucket_html4_150, ht_bucket_empty, ht_bucket_empty, ht_bucket_html4_153,
+ ht_bucket_html4_154, ht_bucket_html4_155, ht_bucket_html4_156, ht_bucket_empty,
+ ht_bucket_html4_158, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html4_15C, ht_bucket_empty, ht_bucket_empty, ht_bucket_html4_15F,
+ ht_bucket_html4_160, ht_bucket_empty, ht_bucket_empty, ht_bucket_html4_163,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html4_166, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_html4_16B,
+ ht_bucket_html4_16C, ht_bucket_empty, ht_bucket_html4_16E, ht_bucket_html4_16F,
+ ht_bucket_html4_170, ht_bucket_empty, ht_bucket_empty, ht_bucket_html4_173,
+ ht_bucket_empty, ht_bucket_html4_175, ht_bucket_html4_176, ht_bucket_empty,
+ ht_bucket_html4_178, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html4_17C, ht_bucket_empty, ht_bucket_empty, ht_bucket_html4_17F,
+ ht_bucket_empty, ht_bucket_html4_181, ht_bucket_empty, ht_bucket_html4_183,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html4_186, ht_bucket_html4_187,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html4_18C, ht_bucket_html4_18D, ht_bucket_html4_18E, ht_bucket_html4_18F,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html4_194, ht_bucket_empty, ht_bucket_html4_196, ht_bucket_html4_197,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html4_19A, ht_bucket_empty,
+ ht_bucket_html4_19C, ht_bucket_html4_19D, ht_bucket_empty, ht_bucket_html4_19F,
+ ht_bucket_html4_1A0, ht_bucket_html4_1A1, ht_bucket_html4_1A2, ht_bucket_empty,
+ ht_bucket_html4_1A4, ht_bucket_empty, ht_bucket_html4_1A6, ht_bucket_html4_1A7,
+ ht_bucket_html4_1A8, ht_bucket_html4_1A9, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html4_1AC, ht_bucket_empty, ht_bucket_html4_1AE, ht_bucket_html4_1AF,
+ ht_bucket_html4_1B0, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html4_1B5, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html4_1B9, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html4_1BC, ht_bucket_empty, ht_bucket_html4_1BE, ht_bucket_html4_1BF,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html4_1C2, ht_bucket_empty,
+ ht_bucket_html4_1C4, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html4_1C9, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html4_1CC, ht_bucket_empty, ht_bucket_empty, ht_bucket_html4_1CF,
+ ht_bucket_html4_1D0, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_html4_1D4, ht_bucket_empty, ht_bucket_empty, ht_bucket_html4_1D7,
+ ht_bucket_html4_1D8, ht_bucket_html4_1D9, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html4_1DD, ht_bucket_empty, ht_bucket_html4_1DF,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_html4_1E6, ht_bucket_empty,
+ ht_bucket_html4_1E8, ht_bucket_html4_1E9, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_html4_1ED, ht_bucket_empty, ht_bucket_html4_1EF,
+ ht_bucket_empty, ht_bucket_html4_1F1, ht_bucket_html4_1F2, ht_bucket_html4_1F3,
+ ht_bucket_html4_1F4, ht_bucket_empty, ht_bucket_html4_1F6, ht_bucket_empty,
+ ht_bucket_html4_1F8, ht_bucket_html4_1F9, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+};
+
+static const entity_ht ent_ht_html4 = {
+ 0x200,
+ ht_buckets_html4
+};
+
+/* end of HTML 4.01 hash table for entity -> codepoint }}} */
+
+/* {{{ Start of Basic entities (no apos) table for codepoint -> entity */
+
+static const entity_stage3_row stage3_table_be_noapos_00000[] = {
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, "quot", 4}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, "amp", 3}, {0, "#039", 4},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "lt", 2}, {0, NULL, 0}, {0, "gt", 2}, {0, NULL, 0},
+};
+
+/* {{{ Basic entities (no apos) hash table for entity -> codepoint */
+
+static const entity_cp_map ht_bucket_be_noapos_000[] = { {"gt", 2, 0x0003E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_be_noapos_003[] = { {"amp", 3, 0x00026, 0}, {NULL} };
+static const entity_cp_map ht_bucket_be_noapos_004[] = { {"#039", 4, 0x00027, 0}, {NULL} };
+static const entity_cp_map ht_bucket_be_noapos_005[] = { {"lt", 2, 0x0003C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_be_noapos_00E[] = { {"quot", 4, 0x00022, 0}, {NULL} };
+
+static const entity_cp_map *const ht_buckets_be_noapos[] = {
+ ht_bucket_be_noapos_000, ht_bucket_empty, ht_bucket_empty, ht_bucket_be_noapos_003,
+ ht_bucket_be_noapos_004, ht_bucket_be_noapos_005, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_be_noapos_00E, ht_bucket_empty,
+};
+
+static const entity_ht ent_ht_be_noapos = {
+ 0x10,
+ ht_buckets_be_noapos
+};
+
+/* end of Basic entities (no apos) hash table for entity -> codepoint }}} */
+
+/* {{{ Start of Basic entities (with apos) table for codepoint -> entity */
+
+static const entity_stage3_row stage3_table_be_apos_00000[] = {
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, "quot", 4}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, "amp", 3}, {0, "apos", 4},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, "lt", 2}, {0, NULL, 0}, {0, "gt", 2}, {0, NULL, 0},
+};
+
+/* {{{ Basic entities (with apos) hash table for entity -> codepoint */
+
+static const entity_cp_map ht_bucket_be_apos_000[] = { {"gt", 2, 0x0003E, 0}, {NULL} };
+static const entity_cp_map ht_bucket_be_apos_003[] = { {"amp", 3, 0x00026, 0}, {NULL} };
+static const entity_cp_map ht_bucket_be_apos_005[] = { {"lt", 2, 0x0003C, 0}, {NULL} };
+static const entity_cp_map ht_bucket_be_apos_008[] = { {"apos", 4, 0x00027, 0}, {NULL} };
+static const entity_cp_map ht_bucket_be_apos_00E[] = { {"quot", 4, 0x00022, 0}, {NULL} };
+
+static const entity_cp_map *const ht_buckets_be_apos[] = {
+ ht_bucket_be_apos_000, ht_bucket_empty, ht_bucket_empty, ht_bucket_be_apos_003,
+ ht_bucket_empty, ht_bucket_be_apos_005, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_be_apos_008, ht_bucket_empty, ht_bucket_empty, ht_bucket_empty,
+ ht_bucket_empty, ht_bucket_empty, ht_bucket_be_apos_00E, ht_bucket_empty,
+};
+
+static const entity_ht ent_ht_be_apos = {
+ 0x10,
+ ht_buckets_be_apos
+};
+
+/* end of Basic entities (with apos) hash table for entity -> codepoint }}} */
+
#endif /* HTML_TABLES_H */
diff --git a/ext/standard/html_tables/ents_basic.txt b/ext/standard/html_tables/ents_basic.txt
new file mode 100644
index 0000000000..3a2ec93f4c
--- /dev/null
+++ b/ext/standard/html_tables/ents_basic.txt
@@ -0,0 +1,5 @@
+quot 22
+amp 26
+#039 27
+lt 3C
+gt 3E
diff --git a/ext/standard/html_tables/ents_basic_apos.txt b/ext/standard/html_tables/ents_basic_apos.txt
new file mode 100644
index 0000000000..6a0f307a0c
--- /dev/null
+++ b/ext/standard/html_tables/ents_basic_apos.txt
@@ -0,0 +1,5 @@
+quot 22
+amp 26
+apos 27
+lt 3C
+gt 3E
diff --git a/ext/standard/html_tables/ents_html401.txt b/ext/standard/html_tables/ents_html401.txt
new file mode 100644
index 0000000000..7e1564b229
--- /dev/null
+++ b/ext/standard/html_tables/ents_html401.txt
@@ -0,0 +1,253 @@
+#039 0027 //artifical; there's no &apos; in HTML 4.01
+nbsp 00A0
+iexcl 00A1
+cent 00A2
+pound 00A3
+curren 00A4
+yen 00A5
+brvbar 00A6
+sect 00A7
+uml 00A8
+copy 00A9
+ordf 00AA
+laquo 00AB
+not 00AC
+shy 00AD
+reg 00AE
+macr 00AF
+deg 00B0
+plusmn 00B1
+sup2 00B2
+sup3 00B3
+acute 00B4
+micro 00B5
+para 00B6
+middot 00B7
+cedil 00B8
+sup1 00B9
+ordm 00BA
+raquo 00BB
+frac14 00BC
+frac12 00BD
+frac34 00BE
+iquest 00BF
+Agrave 00C0
+Aacute 00C1
+Acirc 00C2
+Atilde 00C3
+Auml 00C4
+Aring 00C5
+AElig 00C6
+Ccedil 00C7
+Egrave 00C8
+Eacute 00C9
+Ecirc 00CA
+Euml 00CB
+Igrave 00CC
+Iacute 00CD
+Icirc 00CE
+Iuml 00CF
+ETH 00D0
+Ntilde 00D1
+Ograve 00D2
+Oacute 00D3
+Ocirc 00D4
+Otilde 00D5
+Ouml 00D6
+times 00D7
+Oslash 00D8
+Ugrave 00D9
+Uacute 00DA
+Ucirc 00DB
+Uuml 00DC
+Yacute 00DD
+THORN 00DE
+szlig 00DF
+agrave 00E0
+aacute 00E1
+acirc 00E2
+atilde 00E3
+auml 00E4
+aring 00E5
+aelig 00E6
+ccedil 00E7
+egrave 00E8
+eacute 00E9
+ecirc 00EA
+euml 00EB
+igrave 00EC
+iacute 00ED
+icirc 00EE
+iuml 00EF
+eth 00F0
+ntilde 00F1
+ograve 00F2
+oacute 00F3
+ocirc 00F4
+otilde 00F5
+ouml 00F6
+divide 00F7
+oslash 00F8
+ugrave 00F9
+uacute 00FA
+ucirc 00FB
+uuml 00FC
+yacute 00FD
+thorn 00FE
+yuml 00FF
+fnof 0192
+Alpha 0391
+Beta 0392
+Gamma 0393
+Delta 0394
+Epsilon 0395
+Zeta 0396
+Eta 0397
+Theta 0398
+Iota 0399
+Kappa 039A
+Lambda 039B
+Mu 039C
+Nu 039D
+Xi 039E
+Omicron 039F
+Pi 03A0
+Rho 03A1
+Sigma 03A3
+Tau 03A4
+Upsilon 03A5
+Phi 03A6
+Chi 03A7
+Psi 03A8
+Omega 03A9
+alpha 03B1
+beta 03B2
+gamma 03B3
+delta 03B4
+epsilon 03B5
+zeta 03B6
+eta 03B7
+theta 03B8
+iota 03B9
+kappa 03BA
+lambda 03BB
+mu 03BC
+nu 03BD
+xi 03BE
+omicron 03BF
+pi 03C0
+rho 03C1
+sigmaf 03C2
+sigma 03C3
+tau 03C4
+upsilon 03C5
+phi 03C6
+chi 03C7
+psi 03C8
+omega 03C9
+thetasym 03D1
+upsih 03D2
+piv 03D6
+bull 2022
+hellip 2026
+prime 2032
+Prime 2033
+oline 203E
+frasl 2044
+weierp 2118
+image 2111
+real 211C
+trade 2122
+alefsym 2135
+larr 2190
+uarr 2191
+rarr 2192
+darr 2193
+harr 2194
+crarr 21B5
+lArr 21D0
+uArr 21D1
+rArr 21D2
+dArr 21D3
+hArr 21D4
+forall 2200
+part 2202
+exist 2203
+empty 2205
+nabla 2207
+isin 2208
+notin 2209
+ni 220B
+prod 220F
+sum 2211
+minus 2212
+lowast 2217
+radic 221A
+prop 221D
+infin 221E
+ang 2220
+and 2227
+or 2228
+cap 2229
+cup 222A
+int 222B
+there4 2234
+sim 223C
+cong 2245
+asymp 2248
+ne 2260
+equiv 2261
+le 2264
+ge 2265
+sub 2282
+sup 2283
+nsub 2284
+sube 2286
+supe 2287
+oplus 2295
+otimes 2297
+perp 22A5
+sdot 22C5
+lceil 2308
+rceil 2309
+lfloor 230A
+rfloor 230B
+lang 2329
+rang 232A
+loz 25CA
+spades 2660
+clubs 2663
+hearts 2665
+diams 2666
+quot 0022
+amp 0026
+lt 003C
+gt 003E
+OElig 0152
+oelig 0153
+Scaron 0160
+scaron 0161
+Yuml 0178
+circ 02C6
+tilde 02DC
+ensp 2002
+emsp 2003
+thinsp 2009
+zwnj 200C
+zwj 200D
+lrm 200E
+rlm 200F
+ndash 2013
+mdash 2014
+lsquo 2018
+rsquo 2019
+sbquo 201A
+ldquo 201C
+rdquo 201D
+bdquo 201E
+dagger 2020
+Dagger 2021
+permil 2030
+lsaquo 2039
+rsaquo 203A
+euro 20AC \ No newline at end of file
diff --git a/ext/standard/html_tables/ents_html5.txt b/ext/standard/html_tables/ents_html5.txt
new file mode 100644
index 0000000000..18defb29b4
--- /dev/null
+++ b/ext/standard/html_tables/ents_html5.txt
@@ -0,0 +1,2125 @@
+AElig 000C6
+AMP 00026
+Aacute 000C1
+Abreve 00102
+Acirc 000C2
+Acy 00410
+Afr 1D504
+Agrave 000C0
+Alpha 00391
+Amacr 00100
+And 02A53
+Aogon 00104
+Aopf 1D538
+ApplyFunction 02061
+Aring 000C5
+Ascr 1D49C
+Assign 02254
+Atilde 000C3
+Auml 000C4
+Backslash 02216
+Barv 02AE7
+Barwed 02306
+Bcy 00411
+Because 02235
+Bernoullis 0212C
+Beta 00392
+Bfr 1D505
+Bopf 1D539
+Breve 002D8
+Bscr 0212C
+Bumpeq 0224E
+CHcy 00427
+COPY 000A9
+Cacute 00106
+Cap 022D2
+CapitalDifferentialD 02145
+Cayleys 0212D
+Ccaron 0010C
+Ccedil 000C7
+Ccirc 00108
+Cconint 02230
+Cdot 0010A
+Cedilla 000B8
+CenterDot 000B7
+Cfr 0212D
+Chi 003A7
+CircleDot 02299
+CircleMinus 02296
+CirclePlus 02295
+CircleTimes 02297
+ClockwiseContourIntegral 02232
+CloseCurlyDoubleQuote 0201D
+CloseCurlyQuote 02019
+Colon 02237
+Colone 02A74
+Congruent 02261
+Conint 0222F
+ContourIntegral 0222E
+Copf 02102
+Coproduct 02210
+CounterClockwiseContourIntegral 02233
+Cross 02A2F
+Cscr 1D49E
+Cup 022D3
+CupCap 0224D
+DD 02145
+DDotrahd 02911
+DJcy 00402
+DScy 00405
+DZcy 0040F
+Dagger 02021
+Darr 021A1
+Dashv 02AE4
+Dcaron 0010E
+Dcy 00414
+Del 02207
+Delta 00394
+Dfr 1D507
+DiacriticalAcute 000B4
+DiacriticalDot 002D9
+DiacriticalDoubleAcute 002DD
+DiacriticalGrave 00060
+DiacriticalTilde 002DC
+Diamond 022C4
+DifferentialD 02146
+Dopf 1D53B
+Dot 000A8
+DotDot 020DC
+DotEqual 02250
+DoubleContourIntegral 0222F
+DoubleDot 000A8
+DoubleDownArrow 021D3
+DoubleLeftArrow 021D0
+DoubleLeftRightArrow 021D4
+DoubleLeftTee 02AE4
+DoubleLongLeftArrow 027F8
+DoubleLongLeftRightArrow 027FA
+DoubleLongRightArrow 027F9
+DoubleRightArrow 021D2
+DoubleRightTee 022A8
+DoubleUpArrow 021D1
+DoubleUpDownArrow 021D5
+DoubleVerticalBar 02225
+DownArrow 02193
+DownArrowBar 02913
+DownArrowUpArrow 021F5
+DownBreve 00311
+DownLeftRightVector 02950
+DownLeftTeeVector 0295E
+DownLeftVector 021BD
+DownLeftVectorBar 02956
+DownRightTeeVector 0295F
+DownRightVector 021C1
+DownRightVectorBar 02957
+DownTee 022A4
+DownTeeArrow 021A7
+Downarrow 021D3
+Dscr 1D49F
+Dstrok 00110
+ENG 0014A
+ETH 000D0
+Eacute 000C9
+Ecaron 0011A
+Ecirc 000CA
+Ecy 0042D
+Edot 00116
+Efr 1D508
+Egrave 000C8
+Element 02208
+Emacr 00112
+EmptySmallSquare 025FB
+EmptyVerySmallSquare 025AB
+Eogon 00118
+Eopf 1D53C
+Epsilon 00395
+Equal 02A75
+EqualTilde 02242
+Equilibrium 021CC
+Escr 02130
+Esim 02A73
+Eta 00397
+Euml 000CB
+Exists 02203
+ExponentialE 02147
+Fcy 00424
+Ffr 1D509
+FilledSmallSquare 025FC
+FilledVerySmallSquare 025AA
+Fopf 1D53D
+ForAll 02200
+Fouriertrf 02131
+Fscr 02131
+GJcy 00403
+GT 0003E
+Gamma 00393
+Gammad 003DC
+Gbreve 0011E
+Gcedil 00122
+Gcirc 0011C
+Gcy 00413
+Gdot 00120
+Gfr 1D50A
+Gg 022D9
+Gopf 1D53E
+GreaterEqual 02265
+GreaterEqualLess 022DB
+GreaterFullEqual 02267
+GreaterGreater 02AA2
+GreaterLess 02277
+GreaterSlantEqual 02A7E
+GreaterTilde 02273
+Gscr 1D4A2
+Gt 0226B
+HARDcy 0042A
+Hacek 002C7
+Hat 0005E
+Hcirc 00124
+Hfr 0210C
+HilbertSpace 0210B
+Hopf 0210D
+HorizontalLine 02500
+Hscr 0210B
+Hstrok 00126
+HumpDownHump 0224E
+HumpEqual 0224F
+IEcy 00415
+IJlig 00132
+IOcy 00401
+Iacute 000CD
+Icirc 000CE
+Icy 00418
+Idot 00130
+Ifr 02111
+Igrave 000CC
+Im 02111
+Imacr 0012A
+ImaginaryI 02148
+Implies 021D2
+Int 0222C
+Integral 0222B
+Intersection 022C2
+InvisibleComma 02063
+InvisibleTimes 02062
+Iogon 0012E
+Iopf 1D540
+Iota 00399
+Iscr 02110
+Itilde 00128
+Iukcy 00406
+Iuml 000CF
+Jcirc 00134
+Jcy 00419
+Jfr 1D50D
+Jopf 1D541
+Jscr 1D4A5
+Jsercy 00408
+Jukcy 00404
+KHcy 00425
+KJcy 0040C
+Kappa 0039A
+Kcedil 00136
+Kcy 0041A
+Kfr 1D50E
+Kopf 1D542
+Kscr 1D4A6
+LJcy 00409
+LT 0003C
+Lacute 00139
+Lambda 0039B
+Lang 027EA
+Laplacetrf 02112
+Larr 0219E
+Lcaron 0013D
+Lcedil 0013B
+Lcy 0041B
+LeftAngleBracket 027E8
+LeftArrow 02190
+LeftArrowBar 021E4
+LeftArrowRightArrow 021C6
+LeftCeiling 02308
+LeftDoubleBracket 027E6
+LeftDownTeeVector 02961
+LeftDownVector 021C3
+LeftDownVectorBar 02959
+LeftFloor 0230A
+LeftRightArrow 02194
+LeftRightVector 0294E
+LeftTee 022A3
+LeftTeeArrow 021A4
+LeftTeeVector 0295A
+LeftTriangle 022B2
+LeftTriangleBar 029CF
+LeftTriangleEqual 022B4
+LeftUpDownVector 02951
+LeftUpTeeVector 02960
+LeftUpVector 021BF
+LeftUpVectorBar 02958
+LeftVector 021BC
+LeftVectorBar 02952
+Leftarrow 021D0
+Leftrightarrow 021D4
+LessEqualGreater 022DA
+LessFullEqual 02266
+LessGreater 02276
+LessLess 02AA1
+LessSlantEqual 02A7D
+LessTilde 02272
+Lfr 1D50F
+Ll 022D8
+Lleftarrow 021DA
+Lmidot 0013F
+LongLeftArrow 027F5
+LongLeftRightArrow 027F7
+LongRightArrow 027F6
+Longleftarrow 027F8
+Longleftrightarrow 027FA
+Longrightarrow 027F9
+Lopf 1D543
+LowerLeftArrow 02199
+LowerRightArrow 02198
+Lscr 02112
+Lsh 021B0
+Lstrok 00141
+Lt 0226A
+Map 02905
+Mcy 0041C
+MediumSpace 0205F
+Mellintrf 02133
+Mfr 1D510
+MinusPlus 02213
+Mopf 1D544
+Mscr 02133
+Mu 0039C
+NJcy 0040A
+Nacute 00143
+Ncaron 00147
+Ncedil 00145
+Ncy 0041D
+NegativeMediumSpace 0200B
+NegativeThickSpace 0200B
+NegativeThinSpace 0200B
+NegativeVeryThinSpace 0200B
+NestedGreaterGreater 0226B
+NestedLessLess 0226A
+NewLine 0000A
+Nfr 1D511
+NoBreak 02060
+NonBreakingSpace 000A0
+Nopf 02115
+Not 02AEC
+NotCongruent 02262
+NotCupCap 0226D
+NotDoubleVerticalBar 02226
+NotElement 02209
+NotEqual 02260
+NotEqualTilde 02242 00338
+NotExists 02204
+NotGreater 0226F
+NotGreaterEqual 02271
+NotGreaterFullEqual 02267 00338
+NotGreaterGreater 0226B 00338
+NotGreaterLess 02279
+NotGreaterSlantEqual 02A7E 00338
+NotGreaterTilde 02275
+NotHumpDownHump 0224E 00338
+NotHumpEqual 0224F 00338
+NotLeftTriangle 022EA
+NotLeftTriangleBar 029CF 00338
+NotLeftTriangleEqual 022EC
+NotLess 0226E
+NotLessEqual 02270
+NotLessGreater 02278
+NotLessLess 0226A 00338
+NotLessSlantEqual 02A7D 00338
+NotLessTilde 02274
+NotNestedGreaterGreater 02AA2 00338
+NotNestedLessLess 02AA1 00338
+NotPrecedes 02280
+NotPrecedesEqual 02AAF 00338
+NotPrecedesSlantEqual 022E0
+NotReverseElement 0220C
+NotRightTriangle 022EB
+NotRightTriangleBar 029D0 00338
+NotRightTriangleEqual 022ED
+NotSquareSubset 0228F 00338
+NotSquareSubsetEqual 022E2
+NotSquareSuperset 02290 00338
+NotSquareSupersetEqual 022E3
+NotSubset 02282 020D2
+NotSubsetEqual 02288
+NotSucceeds 02281
+NotSucceedsEqual 02AB0 00338
+NotSucceedsSlantEqual 022E1
+NotSucceedsTilde 0227F 00338
+NotSuperset 02283 020D2
+NotSupersetEqual 02289
+NotTilde 02241
+NotTildeEqual 02244
+NotTildeFullEqual 02247
+NotTildeTilde 02249
+NotVerticalBar 02224
+Nscr 1D4A9
+Ntilde 000D1
+Nu 0039D
+OElig 00152
+Oacute 000D3
+Ocirc 000D4
+Ocy 0041E
+Odblac 00150
+Ofr 1D512
+Ograve 000D2
+Omacr 0014C
+Omega 003A9
+Omicron 0039F
+Oopf 1D546
+OpenCurlyDoubleQuote 0201C
+OpenCurlyQuote 02018
+Or 02A54
+Oscr 1D4AA
+Oslash 000D8
+Otilde 000D5
+Otimes 02A37
+Ouml 000D6
+OverBar 0203E
+OverBrace 023DE
+OverBracket 023B4
+OverParenthesis 023DC
+PartialD 02202
+Pcy 0041F
+Pfr 1D513
+Phi 003A6
+Pi 003A0
+PlusMinus 000B1
+Poincareplane 0210C
+Popf 02119
+Pr 02ABB
+Precedes 0227A
+PrecedesEqual 02AAF
+PrecedesSlantEqual 0227C
+PrecedesTilde 0227E
+Prime 02033
+Product 0220F
+Proportion 02237
+Proportional 0221D
+Pscr 1D4AB
+Psi 003A8
+QUOT 00022
+Qfr 1D514
+Qopf 0211A
+Qscr 1D4AC
+RBarr 02910
+REG 000AE
+Racute 00154
+Rang 027EB
+Rarr 021A0
+Rarrtl 02916
+Rcaron 00158
+Rcedil 00156
+Rcy 00420
+Re 0211C
+ReverseElement 0220B
+ReverseEquilibrium 021CB
+ReverseUpEquilibrium 0296F
+Rfr 0211C
+Rho 003A1
+RightAngleBracket 027E9
+RightArrow 02192
+RightArrowBar 021E5
+RightArrowLeftArrow 021C4
+RightCeiling 02309
+RightDoubleBracket 027E7
+RightDownTeeVector 0295D
+RightDownVector 021C2
+RightDownVectorBar 02955
+RightFloor 0230B
+RightTee 022A2
+RightTeeArrow 021A6
+RightTeeVector 0295B
+RightTriangle 022B3
+RightTriangleBar 029D0
+RightTriangleEqual 022B5
+RightUpDownVector 0294F
+RightUpTeeVector 0295C
+RightUpVector 021BE
+RightUpVectorBar 02954
+RightVector 021C0
+RightVectorBar 02953
+Rightarrow 021D2
+Ropf 0211D
+RoundImplies 02970
+Rrightarrow 021DB
+Rscr 0211B
+Rsh 021B1
+RuleDelayed 029F4
+SHCHcy 00429
+SHcy 00428
+SOFTcy 0042C
+Sacute 0015A
+Sc 02ABC
+Scaron 00160
+Scedil 0015E
+Scirc 0015C
+Scy 00421
+Sfr 1D516
+ShortDownArrow 02193
+ShortLeftArrow 02190
+ShortRightArrow 02192
+ShortUpArrow 02191
+Sigma 003A3
+SmallCircle 02218
+Sopf 1D54A
+Sqrt 0221A
+Square 025A1
+SquareIntersection 02293
+SquareSubset 0228F
+SquareSubsetEqual 02291
+SquareSuperset 02290
+SquareSupersetEqual 02292
+SquareUnion 02294
+Sscr 1D4AE
+Star 022C6
+Sub 022D0
+Subset 022D0
+SubsetEqual 02286
+Succeeds 0227B
+SucceedsEqual 02AB0
+SucceedsSlantEqual 0227D
+SucceedsTilde 0227F
+SuchThat 0220B
+Sum 02211
+Sup 022D1
+Superset 02283
+SupersetEqual 02287
+Supset 022D1
+THORN 000DE
+TRADE 02122
+TSHcy 0040B
+TScy 00426
+Tab 00009
+Tau 003A4
+Tcaron 00164
+Tcedil 00162
+Tcy 00422
+Tfr 1D517
+Therefore 02234
+Theta 00398
+ThickSpace 0205F 0200A
+ThinSpace 02009
+Tilde 0223C
+TildeEqual 02243
+TildeFullEqual 02245
+TildeTilde 02248
+Topf 1D54B
+TripleDot 020DB
+Tscr 1D4AF
+Tstrok 00166
+Uacute 000DA
+Uarr 0219F
+Uarrocir 02949
+Ubrcy 0040E
+Ubreve 0016C
+Ucirc 000DB
+Ucy 00423
+Udblac 00170
+Ufr 1D518
+Ugrave 000D9
+Umacr 0016A
+UnderBar 0005F
+UnderBrace 023DF
+UnderBracket 023B5
+UnderParenthesis 023DD
+Union 022C3
+UnionPlus 0228E
+Uogon 00172
+Uopf 1D54C
+UpArrow 02191
+UpArrowBar 02912
+UpArrowDownArrow 021C5
+UpDownArrow 02195
+UpEquilibrium 0296E
+UpTee 022A5
+UpTeeArrow 021A5
+Uparrow 021D1
+Updownarrow 021D5
+UpperLeftArrow 02196
+UpperRightArrow 02197
+Upsi 003D2
+Upsilon 003A5
+Uring 0016E
+Uscr 1D4B0
+Utilde 00168
+Uuml 000DC
+VDash 022AB
+Vbar 02AEB
+Vcy 00412
+Vdash 022A9
+Vdashl 02AE6
+Vee 022C1
+Verbar 02016
+Vert 02016
+VerticalBar 02223
+VerticalLine 0007C
+VerticalSeparator 02758
+VerticalTilde 02240
+VeryThinSpace 0200A
+Vfr 1D519
+Vopf 1D54D
+Vscr 1D4B1
+Vvdash 022AA
+Wcirc 00174
+Wedge 022C0
+Wfr 1D51A
+Wopf 1D54E
+Wscr 1D4B2
+Xfr 1D51B
+Xi 0039E
+Xopf 1D54F
+Xscr 1D4B3
+YAcy 0042F
+YIcy 00407
+YUcy 0042E
+Yacute 000DD
+Ycirc 00176
+Ycy 0042B
+Yfr 1D51C
+Yopf 1D550
+Yscr 1D4B4
+Yuml 00178
+ZHcy 00416
+Zacute 00179
+Zcaron 0017D
+Zcy 00417
+Zdot 0017B
+ZeroWidthSpace 0200B
+Zeta 00396
+Zfr 02128
+Zopf 02124
+Zscr 1D4B5
+aacute 000E1
+abreve 00103
+ac 0223E
+acE 0223E 00333
+acd 0223F
+acirc 000E2
+acute 000B4
+acy 00430
+aelig 000E6
+af 02061
+afr 1D51E
+agrave 000E0
+alefsym 02135
+aleph 02135
+alpha 003B1
+amacr 00101
+amalg 02A3F
+amp 00026
+and 02227
+andand 02A55
+andd 02A5C
+andslope 02A58
+andv 02A5A
+ang 02220
+ange 029A4
+angle 02220
+angmsd 02221
+angmsdaa 029A8
+angmsdab 029A9
+angmsdac 029AA
+angmsdad 029AB
+angmsdae 029AC
+angmsdaf 029AD
+angmsdag 029AE
+angmsdah 029AF
+angrt 0221F
+angrtvb 022BE
+angrtvbd 0299D
+angsph 02222
+angst 000C5
+angzarr 0237C
+aogon 00105
+aopf 1D552
+ap 02248
+apE 02A70
+apacir 02A6F
+ape 0224A
+apid 0224B
+apos 00027
+approx 02248
+approxeq 0224A
+aring 000E5
+ascr 1D4B6
+ast 0002A
+asymp 02248
+asympeq 0224D
+atilde 000E3
+auml 000E4
+awconint 02233
+awint 02A11
+bNot 02AED
+backcong 0224C
+backepsilon 003F6
+backprime 02035
+backsim 0223D
+backsimeq 022CD
+barvee 022BD
+barwed 02305
+barwedge 02305
+bbrk 023B5
+bbrktbrk 023B6
+bcong 0224C
+bcy 00431
+bdquo 0201E
+becaus 02235
+because 02235
+bemptyv 029B0
+bepsi 003F6
+bernou 0212C
+beta 003B2
+beth 02136
+between 0226C
+bfr 1D51F
+bigcap 022C2
+bigcirc 025EF
+bigcup 022C3
+bigodot 02A00
+bigoplus 02A01
+bigotimes 02A02
+bigsqcup 02A06
+bigstar 02605
+bigtriangledown 025BD
+bigtriangleup 025B3
+biguplus 02A04
+bigvee 022C1
+bigwedge 022C0
+bkarow 0290D
+blacklozenge 029EB
+blacksquare 025AA
+blacktriangle 025B4
+blacktriangledown 025BE
+blacktriangleleft 025C2
+blacktriangleright 025B8
+blank 02423
+blk12 02592
+blk14 02591
+blk34 02593
+block 02588
+bne 0003D 020E5
+bnequiv 02261 020E5
+bnot 02310
+bopf 1D553
+bot 022A5
+bottom 022A5
+bowtie 022C8
+boxDL 02557
+boxDR 02554
+boxDl 02556
+boxDr 02553
+boxH 02550
+boxHD 02566
+boxHU 02569
+boxHd 02564
+boxHu 02567
+boxUL 0255D
+boxUR 0255A
+boxUl 0255C
+boxUr 02559
+boxV 02551
+boxVH 0256C
+boxVL 02563
+boxVR 02560
+boxVh 0256B
+boxVl 02562
+boxVr 0255F
+boxbox 029C9
+boxdL 02555
+boxdR 02552
+boxdl 02510
+boxdr 0250C
+boxh 02500
+boxhD 02565
+boxhU 02568
+boxhd 0252C
+boxhu 02534
+boxminus 0229F
+boxplus 0229E
+boxtimes 022A0
+boxuL 0255B
+boxuR 02558
+boxul 02518
+boxur 02514
+boxv 02502
+boxvH 0256A
+boxvL 02561
+boxvR 0255E
+boxvh 0253C
+boxvl 02524
+boxvr 0251C
+bprime 02035
+breve 002D8
+brvbar 000A6
+bscr 1D4B7
+bsemi 0204F
+bsim 0223D
+bsime 022CD
+bsol 0005C
+bsolb 029C5
+bsolhsub 027C8
+bull 02022
+bullet 02022
+bump 0224E
+bumpE 02AAE
+bumpe 0224F
+bumpeq 0224F
+cacute 00107
+cap 02229
+capand 02A44
+capbrcup 02A49
+capcap 02A4B
+capcup 02A47
+capdot 02A40
+caps 02229 0FE00
+caret 02041
+caron 002C7
+ccaps 02A4D
+ccaron 0010D
+ccedil 000E7
+ccirc 00109
+ccups 02A4C
+ccupssm 02A50
+cdot 0010B
+cedil 000B8
+cemptyv 029B2
+cent 000A2
+centerdot 000B7
+cfr 1D520
+chcy 00447
+check 02713
+checkmark 02713
+chi 003C7
+cir 025CB
+cirE 029C3
+circ 002C6
+circeq 02257
+circlearrowleft 021BA
+circlearrowright 021BB
+circledR 000AE
+circledS 024C8
+circledast 0229B
+circledcirc 0229A
+circleddash 0229D
+cire 02257
+cirfnint 02A10
+cirmid 02AEF
+cirscir 029C2
+clubs 02663
+clubsuit 02663
+colon 0003A
+colone 02254
+coloneq 02254
+comma 0002C
+commat 00040
+comp 02201
+compfn 02218
+complement 02201
+complexes 02102
+cong 02245
+congdot 02A6D
+conint 0222E
+copf 1D554
+coprod 02210
+copy 000A9
+copysr 02117
+crarr 021B5
+cross 02717
+cscr 1D4B8
+csub 02ACF
+csube 02AD1
+csup 02AD0
+csupe 02AD2
+ctdot 022EF
+cudarrl 02938
+cudarrr 02935
+cuepr 022DE
+cuesc 022DF
+cularr 021B6
+cularrp 0293D
+cup 0222A
+cupbrcap 02A48
+cupcap 02A46
+cupcup 02A4A
+cupdot 0228D
+cupor 02A45
+cups 0222A 0FE00
+curarr 021B7
+curarrm 0293C
+curlyeqprec 022DE
+curlyeqsucc 022DF
+curlyvee 022CE
+curlywedge 022CF
+curren 000A4
+curvearrowleft 021B6
+curvearrowright 021B7
+cuvee 022CE
+cuwed 022CF
+cwconint 02232
+cwint 02231
+cylcty 0232D
+dArr 021D3
+dHar 02965
+dagger 02020
+daleth 02138
+darr 02193
+dash 02010
+dashv 022A3
+dbkarow 0290F
+dblac 002DD
+dcaron 0010F
+dcy 00434
+dd 02146
+ddagger 02021
+ddarr 021CA
+ddotseq 02A77
+deg 000B0
+delta 003B4
+demptyv 029B1
+dfisht 0297F
+dfr 1D521
+dharl 021C3
+dharr 021C2
+diam 022C4
+diamond 022C4
+diamondsuit 02666
+diams 02666
+die 000A8
+digamma 003DD
+disin 022F2
+div 000F7
+divide 000F7
+divideontimes 022C7
+divonx 022C7
+djcy 00452
+dlcorn 0231E
+dlcrop 0230D
+dollar 00024
+dopf 1D555
+dot 002D9
+doteq 02250
+doteqdot 02251
+dotminus 02238
+dotplus 02214
+dotsquare 022A1
+doublebarwedge 02306
+downarrow 02193
+downdownarrows 021CA
+downharpoonleft 021C3
+downharpoonright 021C2
+drbkarow 02910
+drcorn 0231F
+drcrop 0230C
+dscr 1D4B9
+dscy 00455
+dsol 029F6
+dstrok 00111
+dtdot 022F1
+dtri 025BF
+dtrif 025BE
+duarr 021F5
+duhar 0296F
+dwangle 029A6
+dzcy 0045F
+dzigrarr 027FF
+eDDot 02A77
+eDot 02251
+eacute 000E9
+easter 02A6E
+ecaron 0011B
+ecir 02256
+ecirc 000EA
+ecolon 02255
+ecy 0044D
+edot 00117
+ee 02147
+efDot 02252
+efr 1D522
+eg 02A9A
+egrave 000E8
+egs 02A96
+egsdot 02A98
+el 02A99
+elinters 023E7
+ell 02113
+els 02A95
+elsdot 02A97
+emacr 00113
+empty 02205
+emptyset 02205
+emptyv 02205
+emsp 02003
+emsp13 02004
+emsp14 02005
+eng 0014B
+ensp 02002
+eogon 00119
+eopf 1D556
+epar 022D5
+eparsl 029E3
+eplus 02A71
+epsi 003B5
+epsilon 003B5
+epsiv 003F5
+eqcirc 02256
+eqcolon 02255
+eqsim 02242
+eqslantgtr 02A96
+eqslantless 02A95
+equals 0003D
+equest 0225F
+equiv 02261
+equivDD 02A78
+eqvparsl 029E5
+erDot 02253
+erarr 02971
+escr 0212F
+esdot 02250
+esim 02242
+eta 003B7
+eth 000F0
+euml 000EB
+euro 020AC
+excl 00021
+exist 02203
+expectation 02130
+exponentiale 02147
+fallingdotseq 02252
+fcy 00444
+female 02640
+ffilig 0FB03
+fflig 0FB00
+ffllig 0FB04
+ffr 1D523
+filig 0FB01
+fjlig 00066 0006A
+flat 0266D
+fllig 0FB02
+fltns 025B1
+fnof 00192
+fopf 1D557
+forall 02200
+fork 022D4
+forkv 02AD9
+fpartint 02A0D
+frac12 000BD
+frac13 02153
+frac14 000BC
+frac15 02155
+frac16 02159
+frac18 0215B
+frac23 02154
+frac25 02156
+frac34 000BE
+frac35 02157
+frac38 0215C
+frac45 02158
+frac56 0215A
+frac58 0215D
+frac78 0215E
+frasl 02044
+frown 02322
+fscr 1D4BB
+gE 02267
+gEl 02A8C
+gacute 001F5
+gamma 003B3
+gammad 003DD
+gap 02A86
+gbreve 0011F
+gcirc 0011D
+gcy 00433
+gdot 00121
+ge 02265
+gel 022DB
+geq 02265
+geqq 02267
+geqslant 02A7E
+ges 02A7E
+gescc 02AA9
+gesdot 02A80
+gesdoto 02A82
+gesdotol 02A84
+gesl 022DB 0FE00
+gesles 02A94
+gfr 1D524
+gg 0226B
+ggg 022D9
+gimel 02137
+gjcy 00453
+gl 02277
+glE 02A92
+gla 02AA5
+glj 02AA4
+gnE 02269
+gnap 02A8A
+gnapprox 02A8A
+gne 02A88
+gneq 02A88
+gneqq 02269
+gnsim 022E7
+gopf 1D558
+grave 00060
+gscr 0210A
+gsim 02273
+gsime 02A8E
+gsiml 02A90
+gt 0003E
+gtcc 02AA7
+gtcir 02A7A
+gtdot 022D7
+gtlPar 02995
+gtquest 02A7C
+gtrapprox 02A86
+gtrarr 02978
+gtrdot 022D7
+gtreqless 022DB
+gtreqqless 02A8C
+gtrless 02277
+gtrsim 02273
+gvertneqq 02269 0FE00
+gvnE 02269 0FE00
+hArr 021D4
+hairsp 0200A
+half 000BD
+hamilt 0210B
+hardcy 0044A
+harr 02194
+harrcir 02948
+harrw 021AD
+hbar 0210F
+hcirc 00125
+hearts 02665
+heartsuit 02665
+hellip 02026
+hercon 022B9
+hfr 1D525
+hksearow 02925
+hkswarow 02926
+hoarr 021FF
+homtht 0223B
+hookleftarrow 021A9
+hookrightarrow 021AA
+hopf 1D559
+horbar 02015
+hscr 1D4BD
+hslash 0210F
+hstrok 00127
+hybull 02043
+hyphen 02010
+iacute 000ED
+ic 02063
+icirc 000EE
+icy 00438
+iecy 00435
+iexcl 000A1
+iff 021D4
+ifr 1D526
+igrave 000EC
+ii 02148
+iiiint 02A0C
+iiint 0222D
+iinfin 029DC
+iiota 02129
+ijlig 00133
+imacr 0012B
+image 02111
+imagline 02110
+imagpart 02111
+imath 00131
+imof 022B7
+imped 001B5
+in 02208
+incare 02105
+infin 0221E
+infintie 029DD
+inodot 00131
+int 0222B
+intcal 022BA
+integers 02124
+intercal 022BA
+intlarhk 02A17
+intprod 02A3C
+iocy 00451
+iogon 0012F
+iopf 1D55A
+iota 003B9
+iprod 02A3C
+iquest 000BF
+iscr 1D4BE
+isin 02208
+isinE 022F9
+isindot 022F5
+isins 022F4
+isinsv 022F3
+isinv 02208
+it 02062
+itilde 00129
+iukcy 00456
+iuml 000EF
+jcirc 00135
+jcy 00439
+jfr 1D527
+jmath 00237
+jopf 1D55B
+jscr 1D4BF
+jsercy 00458
+jukcy 00454
+kappa 003BA
+kappav 003F0
+kcedil 00137
+kcy 0043A
+kfr 1D528
+kgreen 00138
+khcy 00445
+kjcy 0045C
+kopf 1D55C
+kscr 1D4C0
+lAarr 021DA
+lArr 021D0
+lAtail 0291B
+lBarr 0290E
+lE 02266
+lEg 02A8B
+lHar 02962
+lacute 0013A
+laemptyv 029B4
+lagran 02112
+lambda 003BB
+lang 027E8
+langd 02991
+langle 027E8
+lap 02A85
+laquo 000AB
+larr 02190
+larrb 021E4
+larrbfs 0291F
+larrfs 0291D
+larrhk 021A9
+larrlp 021AB
+larrpl 02939
+larrsim 02973
+larrtl 021A2
+lat 02AAB
+latail 02919
+late 02AAD
+lates 02AAD 0FE00
+lbarr 0290C
+lbbrk 02772
+lbrace 0007B
+lbrack 0005B
+lbrke 0298B
+lbrksld 0298F
+lbrkslu 0298D
+lcaron 0013E
+lcedil 0013C
+lceil 02308
+lcub 0007B
+lcy 0043B
+ldca 02936
+ldquo 0201C
+ldquor 0201E
+ldrdhar 02967
+ldrushar 0294B
+ldsh 021B2
+le 02264
+leftarrow 02190
+leftarrowtail 021A2
+leftharpoondown 021BD
+leftharpoonup 021BC
+leftleftarrows 021C7
+leftrightarrow 02194
+leftrightarrows 021C6
+leftrightharpoons 021CB
+leftrightsquigarrow 021AD
+leftthreetimes 022CB
+leg 022DA
+leq 02264
+leqq 02266
+leqslant 02A7D
+les 02A7D
+lescc 02AA8
+lesdot 02A7F
+lesdoto 02A81
+lesdotor 02A83
+lesg 022DA 0FE00
+lesges 02A93
+lessapprox 02A85
+lessdot 022D6
+lesseqgtr 022DA
+lesseqqgtr 02A8B
+lessgtr 02276
+lesssim 02272
+lfisht 0297C
+lfloor 0230A
+lfr 1D529
+lg 02276
+lgE 02A91
+lhard 021BD
+lharu 021BC
+lharul 0296A
+lhblk 02584
+ljcy 00459
+ll 0226A
+llarr 021C7
+llcorner 0231E
+llhard 0296B
+lltri 025FA
+lmidot 00140
+lmoust 023B0
+lmoustache 023B0
+lnE 02268
+lnap 02A89
+lnapprox 02A89
+lne 02A87
+lneq 02A87
+lneqq 02268
+lnsim 022E6
+loang 027EC
+loarr 021FD
+lobrk 027E6
+longleftarrow 027F5
+longleftrightarrow 027F7
+longmapsto 027FC
+longrightarrow 027F6
+looparrowleft 021AB
+looparrowright 021AC
+lopar 02985
+lopf 1D55D
+loplus 02A2D
+lotimes 02A34
+lowast 02217
+lowbar 0005F
+loz 025CA
+lozenge 025CA
+lozf 029EB
+lpar 00028
+lparlt 02993
+lrarr 021C6
+lrcorner 0231F
+lrhar 021CB
+lrhard 0296D
+lrm 0200E
+lrtri 022BF
+lsaquo 02039
+lscr 1D4C1
+lsh 021B0
+lsim 02272
+lsime 02A8D
+lsimg 02A8F
+lsqb 0005B
+lsquo 02018
+lsquor 0201A
+lstrok 00142
+lt 0003C
+ltcc 02AA6
+ltcir 02A79
+ltdot 022D6
+lthree 022CB
+ltimes 022C9
+ltlarr 02976
+ltquest 02A7B
+ltrPar 02996
+ltri 025C3
+ltrie 022B4
+ltrif 025C2
+lurdshar 0294A
+luruhar 02966
+lvertneqq 02268 0FE00
+lvnE 02268 0FE00
+mDDot 0223A
+macr 000AF
+male 02642
+malt 02720
+maltese 02720
+map 021A6
+mapsto 021A6
+mapstodown 021A7
+mapstoleft 021A4
+mapstoup 021A5
+marker 025AE
+mcomma 02A29
+mcy 0043C
+mdash 02014
+measuredangle 02221
+mfr 1D52A
+mho 02127
+micro 000B5
+mid 02223
+midast 0002A
+midcir 02AF0
+middot 000B7
+minus 02212
+minusb 0229F
+minusd 02238
+minusdu 02A2A
+mlcp 02ADB
+mldr 02026
+mnplus 02213
+models 022A7
+mopf 1D55E
+mp 02213
+mscr 1D4C2
+mstpos 0223E
+mu 003BC
+multimap 022B8
+mumap 022B8
+nGg 022D9 00338
+nGt 0226B 020D2
+nGtv 0226B 00338
+nLeftarrow 021CD
+nLeftrightarrow 021CE
+nLl 022D8 00338
+nLt 0226A 020D2
+nLtv 0226A 00338
+nRightarrow 021CF
+nVDash 022AF
+nVdash 022AE
+nabla 02207
+nacute 00144
+nang 02220 020D2
+nap 02249
+napE 02A70 00338
+napid 0224B 00338
+napos 00149
+napprox 02249
+natur 0266E
+natural 0266E
+naturals 02115
+nbsp 000A0
+nbump 0224E 00338
+nbumpe 0224F 00338
+ncap 02A43
+ncaron 00148
+ncedil 00146
+ncong 02247
+ncongdot 02A6D 00338
+ncup 02A42
+ncy 0043D
+ndash 02013
+ne 02260
+neArr 021D7
+nearhk 02924
+nearr 02197
+nearrow 02197
+nedot 02250 00338
+nequiv 02262
+nesear 02928
+nesim 02242 00338
+nexist 02204
+nexists 02204
+nfr 1D52B
+ngE 02267 00338
+nge 02271
+ngeq 02271
+ngeqq 02267 00338
+ngeqslant 02A7E 00338
+nges 02A7E 00338
+ngsim 02275
+ngt 0226F
+ngtr 0226F
+nhArr 021CE
+nharr 021AE
+nhpar 02AF2
+ni 0220B
+nis 022FC
+nisd 022FA
+niv 0220B
+njcy 0045A
+nlArr 021CD
+nlE 02266 00338
+nlarr 0219A
+nldr 02025
+nle 02270
+nleftarrow 0219A
+nleftrightarrow 021AE
+nleq 02270
+nleqq 02266 00338
+nleqslant 02A7D 00338
+nles 02A7D 00338
+nless 0226E
+nlsim 02274
+nlt 0226E
+nltri 022EA
+nltrie 022EC
+nmid 02224
+nopf 1D55F
+not 000AC
+notin 02209
+notinE 022F9 00338
+notindot 022F5 00338
+notinva 02209
+notinvb 022F7
+notinvc 022F6
+notni 0220C
+notniva 0220C
+notnivb 022FE
+notnivc 022FD
+npar 02226
+nparallel 02226
+nparsl 02AFD 020E5
+npart 02202 00338
+npolint 02A14
+npr 02280
+nprcue 022E0
+npre 02AAF 00338
+nprec 02280
+npreceq 02AAF 00338
+nrArr 021CF
+nrarr 0219B
+nrarrc 02933 00338
+nrarrw 0219D 00338
+nrightarrow 0219B
+nrtri 022EB
+nrtrie 022ED
+nsc 02281
+nsccue 022E1
+nsce 02AB0 00338
+nscr 1D4C3
+nshortmid 02224
+nshortparallel 02226
+nsim 02241
+nsime 02244
+nsimeq 02244
+nsmid 02224
+nspar 02226
+nsqsube 022E2
+nsqsupe 022E3
+nsub 02284
+nsubE 02AC5 00338
+nsube 02288
+nsubset 02282 020D2
+nsubseteq 02288
+nsubseteqq 02AC5 00338
+nsucc 02281
+nsucceq 02AB0 00338
+nsup 02285
+nsupE 02AC6 00338
+nsupe 02289
+nsupset 02283 020D2
+nsupseteq 02289
+nsupseteqq 02AC6 00338
+ntgl 02279
+ntilde 000F1
+ntlg 02278
+ntriangleleft 022EA
+ntrianglelefteq 022EC
+ntriangleright 022EB
+ntrianglerighteq 022ED
+nu 003BD
+num 00023
+numero 02116
+numsp 02007
+nvDash 022AD
+nvHarr 02904
+nvap 0224D 020D2
+nvdash 022AC
+nvge 02265 020D2
+nvgt 0003E 020D2
+nvinfin 029DE
+nvlArr 02902
+nvle 02264 020D2
+nvlt 0003C 020D2
+nvltrie 022B4 020D2
+nvrArr 02903
+nvrtrie 022B5 020D2
+nvsim 0223C 020D2
+nwArr 021D6
+nwarhk 02923
+nwarr 02196
+nwarrow 02196
+nwnear 02927
+oS 024C8
+oacute 000F3
+oast 0229B
+ocir 0229A
+ocirc 000F4
+ocy 0043E
+odash 0229D
+odblac 00151
+odiv 02A38
+odot 02299
+odsold 029BC
+oelig 00153
+ofcir 029BF
+ofr 1D52C
+ogon 002DB
+ograve 000F2
+ogt 029C1
+ohbar 029B5
+ohm 003A9
+oint 0222E
+olarr 021BA
+olcir 029BE
+olcross 029BB
+oline 0203E
+olt 029C0
+omacr 0014D
+omega 003C9
+omicron 003BF
+omid 029B6
+ominus 02296
+oopf 1D560
+opar 029B7
+operp 029B9
+oplus 02295
+or 02228
+orarr 021BB
+ord 02A5D
+order 02134
+orderof 02134
+ordf 000AA
+ordm 000BA
+origof 022B6
+oror 02A56
+orslope 02A57
+orv 02A5B
+oscr 02134
+oslash 000F8
+osol 02298
+otilde 000F5
+otimes 02297
+otimesas 02A36
+ouml 000F6
+ovbar 0233D
+par 02225
+para 000B6
+parallel 02225
+parsim 02AF3
+parsl 02AFD
+part 02202
+pcy 0043F
+percnt 00025
+period 0002E
+permil 02030
+perp 022A5
+pertenk 02031
+pfr 1D52D
+phi 003C6
+phiv 003D5
+phmmat 02133
+phone 0260E
+pi 003C0
+pitchfork 022D4
+piv 003D6
+planck 0210F
+planckh 0210E
+plankv 0210F
+plus 0002B
+plusacir 02A23
+plusb 0229E
+pluscir 02A22
+plusdo 02214
+plusdu 02A25
+pluse 02A72
+plusmn 000B1
+plussim 02A26
+plustwo 02A27
+pm 000B1
+pointint 02A15
+popf 1D561
+pound 000A3
+pr 0227A
+prE 02AB3
+prap 02AB7
+prcue 0227C
+pre 02AAF
+prec 0227A
+precapprox 02AB7
+preccurlyeq 0227C
+preceq 02AAF
+precnapprox 02AB9
+precneqq 02AB5
+precnsim 022E8
+precsim 0227E
+prime 02032
+primes 02119
+prnE 02AB5
+prnap 02AB9
+prnsim 022E8
+prod 0220F
+profalar 0232E
+profline 02312
+profsurf 02313
+prop 0221D
+propto 0221D
+prsim 0227E
+prurel 022B0
+pscr 1D4C5
+psi 003C8
+puncsp 02008
+qfr 1D52E
+qint 02A0C
+qopf 1D562
+qprime 02057
+qscr 1D4C6
+quaternions 0210D
+quatint 02A16
+quest 0003F
+questeq 0225F
+quot 00022
+rAarr 021DB
+rArr 021D2
+rAtail 0291C
+rBarr 0290F
+rHar 02964
+race 0223D 00331
+racute 00155
+radic 0221A
+raemptyv 029B3
+rang 027E9
+rangd 02992
+range 029A5
+rangle 027E9
+raquo 000BB
+rarr 02192
+rarrap 02975
+rarrb 021E5
+rarrbfs 02920
+rarrc 02933
+rarrfs 0291E
+rarrhk 021AA
+rarrlp 021AC
+rarrpl 02945
+rarrsim 02974
+rarrtl 021A3
+rarrw 0219D
+ratail 0291A
+ratio 02236
+rationals 0211A
+rbarr 0290D
+rbbrk 02773
+rbrace 0007D
+rbrack 0005D
+rbrke 0298C
+rbrksld 0298E
+rbrkslu 02990
+rcaron 00159
+rcedil 00157
+rceil 02309
+rcub 0007D
+rcy 00440
+rdca 02937
+rdldhar 02969
+rdquo 0201D
+rdquor 0201D
+rdsh 021B3
+real 0211C
+realine 0211B
+realpart 0211C
+reals 0211D
+rect 025AD
+reg 000AE
+rfisht 0297D
+rfloor 0230B
+rfr 1D52F
+rhard 021C1
+rharu 021C0
+rharul 0296C
+rho 003C1
+rhov 003F1
+rightarrow 02192
+rightarrowtail 021A3
+rightharpoondown 021C1
+rightharpoonup 021C0
+rightleftarrows 021C4
+rightleftharpoons 021CC
+rightrightarrows 021C9
+rightsquigarrow 0219D
+rightthreetimes 022CC
+ring 002DA
+risingdotseq 02253
+rlarr 021C4
+rlhar 021CC
+rlm 0200F
+rmoust 023B1
+rmoustache 023B1
+rnmid 02AEE
+roang 027ED
+roarr 021FE
+robrk 027E7
+ropar 02986
+ropf 1D563
+roplus 02A2E
+rotimes 02A35
+rpar 00029
+rpargt 02994
+rppolint 02A12
+rrarr 021C9
+rsaquo 0203A
+rscr 1D4C7
+rsh 021B1
+rsqb 0005D
+rsquo 02019
+rsquor 02019
+rthree 022CC
+rtimes 022CA
+rtri 025B9
+rtrie 022B5
+rtrif 025B8
+rtriltri 029CE
+ruluhar 02968
+rx 0211E
+sacute 0015B
+sbquo 0201A
+sc 0227B
+scE 02AB4
+scap 02AB8
+scaron 00161
+sccue 0227D
+sce 02AB0
+scedil 0015F
+scirc 0015D
+scnE 02AB6
+scnap 02ABA
+scnsim 022E9
+scpolint 02A13
+scsim 0227F
+scy 00441
+sdot 022C5
+sdotb 022A1
+sdote 02A66
+seArr 021D8
+searhk 02925
+searr 02198
+searrow 02198
+sect 000A7
+semi 0003B
+seswar 02929
+setminus 02216
+setmn 02216
+sext 02736
+sfr 1D530
+sfrown 02322
+sharp 0266F
+shchcy 00449
+shcy 00448
+shortmid 02223
+shortparallel 02225
+shy 000AD
+sigma 003C3
+sigmaf 003C2
+sigmav 003C2
+sim 0223C
+simdot 02A6A
+sime 02243
+simeq 02243
+simg 02A9E
+simgE 02AA0
+siml 02A9D
+simlE 02A9F
+simne 02246
+simplus 02A24
+simrarr 02972
+slarr 02190
+smallsetminus 02216
+smashp 02A33
+smeparsl 029E4
+smid 02223
+smile 02323
+smt 02AAA
+smte 02AAC
+smtes 02AAC 0FE00
+softcy 0044C
+sol 0002F
+solb 029C4
+solbar 0233F
+sopf 1D564
+spades 02660
+spadesuit 02660
+spar 02225
+sqcap 02293
+sqcaps 02293 0FE00
+sqcup 02294
+sqcups 02294 0FE00
+sqsub 0228F
+sqsube 02291
+sqsubset 0228F
+sqsubseteq 02291
+sqsup 02290
+sqsupe 02292
+sqsupset 02290
+sqsupseteq 02292
+squ 025A1
+square 025A1
+squarf 025AA
+squf 025AA
+srarr 02192
+sscr 1D4C8
+ssetmn 02216
+ssmile 02323
+sstarf 022C6
+star 02606
+starf 02605
+straightepsilon 003F5
+straightphi 003D5
+strns 000AF
+sub 02282
+subE 02AC5
+subdot 02ABD
+sube 02286
+subedot 02AC3
+submult 02AC1
+subnE 02ACB
+subne 0228A
+subplus 02ABF
+subrarr 02979
+subset 02282
+subseteq 02286
+subseteqq 02AC5
+subsetneq 0228A
+subsetneqq 02ACB
+subsim 02AC7
+subsub 02AD5
+subsup 02AD3
+succ 0227B
+succapprox 02AB8
+succcurlyeq 0227D
+succeq 02AB0
+succnapprox 02ABA
+succneqq 02AB6
+succnsim 022E9
+succsim 0227F
+sum 02211
+sung 0266A
+sup 02283
+sup1 000B9
+sup2 000B2
+sup3 000B3
+supE 02AC6
+supdot 02ABE
+supdsub 02AD8
+supe 02287
+supedot 02AC4
+suphsol 027C9
+suphsub 02AD7
+suplarr 0297B
+supmult 02AC2
+supnE 02ACC
+supne 0228B
+supplus 02AC0
+supset 02283
+supseteq 02287
+supseteqq 02AC6
+supsetneq 0228B
+supsetneqq 02ACC
+supsim 02AC8
+supsub 02AD4
+supsup 02AD6
+swArr 021D9
+swarhk 02926
+swarr 02199
+swarrow 02199
+swnwar 0292A
+szlig 000DF
+target 02316
+tau 003C4
+tbrk 023B4
+tcaron 00165
+tcedil 00163
+tcy 00442
+tdot 020DB
+telrec 02315
+tfr 1D531
+there4 02234
+therefore 02234
+theta 003B8
+thetasym 003D1
+thetav 003D1
+thickapprox 02248
+thicksim 0223C
+thinsp 02009
+thkap 02248
+thksim 0223C
+thorn 000FE
+tilde 002DC
+times 000D7
+timesb 022A0
+timesbar 02A31
+timesd 02A30
+tint 0222D
+toea 02928
+top 022A4
+topbot 02336
+topcir 02AF1
+topf 1D565
+topfork 02ADA
+tosa 02929
+tprime 02034
+trade 02122
+triangle 025B5
+triangledown 025BF
+triangleleft 025C3
+trianglelefteq 022B4
+triangleq 0225C
+triangleright 025B9
+trianglerighteq 022B5
+tridot 025EC
+trie 0225C
+triminus 02A3A
+triplus 02A39
+trisb 029CD
+tritime 02A3B
+trpezium 023E2
+tscr 1D4C9
+tscy 00446
+tshcy 0045B
+tstrok 00167
+twixt 0226C
+twoheadleftarrow 0219E
+twoheadrightarrow 021A0
+uArr 021D1
+uHar 02963
+uacute 000FA
+uarr 02191
+ubrcy 0045E
+ubreve 0016D
+ucirc 000FB
+ucy 00443
+udarr 021C5
+udblac 00171
+udhar 0296E
+ufisht 0297E
+ufr 1D532
+ugrave 000F9
+uharl 021BF
+uharr 021BE
+uhblk 02580
+ulcorn 0231C
+ulcorner 0231C
+ulcrop 0230F
+ultri 025F8
+umacr 0016B
+uml 000A8
+uogon 00173
+uopf 1D566
+uparrow 02191
+updownarrow 02195
+upharpoonleft 021BF
+upharpoonright 021BE
+uplus 0228E
+upsi 003C5
+upsih 003D2
+upsilon 003C5
+upuparrows 021C8
+urcorn 0231D
+urcorner 0231D
+urcrop 0230E
+uring 0016F
+urtri 025F9
+uscr 1D4CA
+utdot 022F0
+utilde 00169
+utri 025B5
+utrif 025B4
+uuarr 021C8
+uuml 000FC
+uwangle 029A7
+vArr 021D5
+vBar 02AE8
+vBarv 02AE9
+vDash 022A8
+vangrt 0299C
+varepsilon 003F5
+varkappa 003F0
+varnothing 02205
+varphi 003D5
+varpi 003D6
+varpropto 0221D
+varr 02195
+varrho 003F1
+varsigma 003C2
+varsubsetneq 0228A 0FE00
+varsubsetneqq 02ACB 0FE00
+varsupsetneq 0228B 0FE00
+varsupsetneqq 02ACC 0FE00
+vartheta 003D1
+vartriangleleft 022B2
+vartriangleright 022B3
+vcy 00432
+vdash 022A2
+vee 02228
+veebar 022BB
+veeeq 0225A
+vellip 022EE
+verbar 0007C
+vert 0007C
+vfr 1D533
+vltri 022B2
+vnsub 02282 020D2
+vnsup 02283 020D2
+vopf 1D567
+vprop 0221D
+vrtri 022B3
+vscr 1D4CB
+vsubnE 02ACB 0FE00
+vsubne 0228A 0FE00
+vsupnE 02ACC 0FE00
+vsupne 0228B 0FE00
+vzigzag 0299A
+wcirc 00175
+wedbar 02A5F
+wedge 02227
+wedgeq 02259
+weierp 02118
+wfr 1D534
+wopf 1D568
+wp 02118
+wr 02240
+wreath 02240
+wscr 1D4CC
+xcap 022C2
+xcirc 025EF
+xcup 022C3
+xdtri 025BD
+xfr 1D535
+xhArr 027FA
+xharr 027F7
+xi 003BE
+xlArr 027F8
+xlarr 027F5
+xmap 027FC
+xnis 022FB
+xodot 02A00
+xopf 1D569
+xoplus 02A01
+xotime 02A02
+xrArr 027F9
+xrarr 027F6
+xscr 1D4CD
+xsqcup 02A06
+xuplus 02A04
+xutri 025B3
+xvee 022C1
+xwedge 022C0
+yacute 000FD
+yacy 0044F
+ycirc 00177
+ycy 0044B
+yen 000A5
+yfr 1D536
+yicy 00457
+yopf 1D56A
+yscr 1D4CE
+yucy 0044E
+yuml 000FF
+zacute 0017A
+zcaron 0017E
+zcy 00437
+zdot 0017C
+zeetrf 02128
+zeta 003B6
+zfr 1D537
+zhcy 00436
+zigrarr 021DD
+zopf 1D56B
+zscr 1D4CF
+zwj 0200D
+zwnj 0200C \ No newline at end of file
diff --git a/ext/standard/html_tables/ents_xhtml.txt b/ext/standard/html_tables/ents_xhtml.txt
new file mode 100644
index 0000000000..81800bcd2d
--- /dev/null
+++ b/ext/standard/html_tables/ents_xhtml.txt
@@ -0,0 +1,253 @@
+nbsp 00A0
+iexcl 00A1
+cent 00A2
+pound 00A3
+curren 00A4
+yen 00A5
+brvbar 00A6
+sect 00A7
+uml 00A8
+copy 00A9
+ordf 00AA
+laquo 00AB
+not 00AC
+shy 00AD
+reg 00AE
+macr 00AF
+deg 00B0
+plusmn 00B1
+sup2 00B2
+sup3 00B3
+acute 00B4
+micro 00B5
+para 00B6
+middot 00B7
+cedil 00B8
+sup1 00B9
+ordm 00BA
+raquo 00BB
+frac14 00BC
+frac12 00BD
+frac34 00BE
+iquest 00BF
+Agrave 00C0
+Aacute 00C1
+Acirc 00C2
+Atilde 00C3
+Auml 00C4
+Aring 00C5
+AElig 00C6
+Ccedil 00C7
+Egrave 00C8
+Eacute 00C9
+Ecirc 00CA
+Euml 00CB
+Igrave 00CC
+Iacute 00CD
+Icirc 00CE
+Iuml 00CF
+ETH 00D0
+Ntilde 00D1
+Ograve 00D2
+Oacute 00D3
+Ocirc 00D4
+Otilde 00D5
+Ouml 00D6
+times 00D7
+Oslash 00D8
+Ugrave 00D9
+Uacute 00DA
+Ucirc 00DB
+Uuml 00DC
+Yacute 00DD
+THORN 00DE
+szlig 00DF
+agrave 00E0
+aacute 00E1
+acirc 00E2
+atilde 00E3
+auml 00E4
+aring 00E5
+aelig 00E6
+ccedil 00E7
+egrave 00E8
+eacute 00E9
+ecirc 00EA
+euml 00EB
+igrave 00EC
+iacute 00ED
+icirc 00EE
+iuml 00EF
+eth 00F0
+ntilde 00F1
+ograve 00F2
+oacute 00F3
+ocirc 00F4
+otilde 00F5
+ouml 00F6
+divide 00F7
+oslash 00F8
+ugrave 00F9
+uacute 00FA
+ucirc 00FB
+uuml 00FC
+yacute 00FD
+thorn 00FE
+yuml 00FF
+quot 0022
+amp 0026
+lt 003C
+gt 003E
+apos 0027
+OElig 0152
+oelig 0153
+Scaron 0160
+scaron 0161
+Yuml 0178
+circ 02C6
+tilde 02DC
+ensp 2002
+emsp 2003
+thinsp 2009
+zwnj 200C
+zwj 200D
+lrm 200E
+rlm 200F
+ndash 2013
+mdash 2014
+lsquo 2018
+rsquo 2019
+sbquo 201A
+ldquo 201C
+rdquo 201D
+bdquo 201E
+dagger 2020
+Dagger 2021
+permil 2030
+lsaquo 2039
+rsaquo 203A
+euro 20AC
+fnof 0192
+Alpha 0391
+Beta 0392
+Gamma 0393
+Delta 0394
+Epsilon 0395
+Zeta 0396
+Eta 0397
+Theta 0398
+Iota 0399
+Kappa 039A
+Lambda 039B
+Mu 039C
+Nu 039D
+Xi 039E
+Omicron 039F
+Pi 03A0
+Rho 03A1
+Sigma 03A3
+Tau 03A4
+Upsilon 03A5
+Phi 03A6
+Chi 03A7
+Psi 03A8
+Omega 03A9
+alpha 03B1
+beta 03B2
+gamma 03B3
+delta 03B4
+epsilon 03B5
+zeta 03B6
+eta 03B7
+theta 03B8
+iota 03B9
+kappa 03BA
+lambda 03BB
+mu 03BC
+nu 03BD
+xi 03BE
+omicron 03BF
+pi 03C0
+rho 03C1
+sigmaf 03C2
+sigma 03C3
+tau 03C4
+upsilon 03C5
+phi 03C6
+chi 03C7
+psi 03C8
+omega 03C9
+thetasym 03D1
+upsih 03D2
+piv 03D6
+bull 2022
+hellip 2026
+prime 2032
+Prime 2033
+oline 203E
+frasl 2044
+weierp 2118
+image 2111
+real 211C
+trade 2122
+alefsym 2135
+larr 2190
+uarr 2191
+rarr 2192
+darr 2193
+harr 2194
+crarr 21B5
+lArr 21D0
+uArr 21D1
+rArr 21D2
+dArr 21D3
+hArr 21D4
+forall 2200
+part 2202
+exist 2203
+empty 2205
+nabla 2207
+isin 2208
+notin 2209
+ni 220B
+prod 220F
+sum 2211
+minus 2212
+lowast 2217
+radic 221A
+prop 221D
+infin 221E
+ang 2220
+and 2227
+or 2228
+cap 2229
+cup 222A
+int 222B
+there4 2234
+sim 223C
+cong 2245
+asymp 2248
+ne 2260
+equiv 2261
+le 2264
+ge 2265
+sub 2282
+sup 2283
+nsub 2284
+sube 2286
+supe 2287
+oplus 2295
+otimes 2297
+perp 22A5
+sdot 22C5
+lceil 2308
+rceil 2309
+lfloor 230A
+rfloor 230B
+lang 2329
+rang 232A
+loz 25CA
+spades 2660
+clubs 2663
+hearts 2665
+diams 2666 \ No newline at end of file
diff --git a/ext/standard/html_tables/html_table_gen.php b/ext/standard/html_tables/html_table_gen.php
new file mode 100644
index 0000000000..35be2d9afc
--- /dev/null
+++ b/ext/standard/html_tables/html_table_gen.php
@@ -0,0 +1,820 @@
+<?php
+/*
+ +----------------------------------------------------------------------+
+ | PHP Version 5 |
+ +----------------------------------------------------------------------+
+ | Copyright (c) 1997-2010 The PHP Group |
+ +----------------------------------------------------------------------+
+ | This source file is subject to version 3.01 of the PHP license, |
+ | that is bundled with this package in the file LICENSE, and is |
+ | available through the world-wide-web at the following url: |
+ | http://www.php.net/license/3_01.txt |
+ | If you did not receive a copy of the PHP license and are unable to |
+ | obtain it through the world-wide-web, please send a note to |
+ | license@php.net so we can mail you a copy immediately. |
+ +----------------------------------------------------------------------+
+ | Authors: Gustavo Lopes <cataphract@php.net> |
+ +----------------------------------------------------------------------+
+*/
+
+/* This file prints to stdout the contents of ext/standard/html_tables.h */
+/* put together with glue; have patience */
+
+$t = <<<CODE
+/*
+ +----------------------------------------------------------------------+
+ | PHP Version 5 |
+ +----------------------------------------------------------------------+
+ | Copyright (c) 1997-2010 The PHP Group |
+ +----------------------------------------------------------------------+
+ | This source file is subject to version 3.01 of the PHP license, |
+ | that is bundled with this package in the file LICENSE, and is |
+ | available through the world-wide-web at the following url: |
+ | http://www.php.net/license/3_01.txt |
+ | If you did not receive a copy of the PHP license and are unable to |
+ | obtain it through the world-wide-web, please send a note to |
+ | license@php.net so we can mail you a copy immediately. |
+ +----------------------------------------------------------------------+
+*/
+
+/* \$Id$ */
+
+#ifndef HTML_TABLES_H
+#define HTML_TABLES_H
+
+/**************************************************************************
+***************************************************************************
+** THIS FILE IS AUTOMATICALLY GENERATED. DO NOT MODIFY IT. **
+***************************************************************************
+** Please change html_tables/html_table_gen.php instead and then **
+** run it in order to generate this file **
+***************************************************************************
+**************************************************************************/
+
+/* cs_terminator is overloaded in the following fashion:
+ * - It terminates the list entity maps.
+ * - In BG(inverse_ent_maps), it's the key of the inverse map that stores
+ * only the basic entities.
+ * - When passed to traverse_for_entities (or via php_unescape_entities with !all),
+ * we don't care about the encoding (UTF-8 is chosen, but it should be used
+ * when it doesn't matter).
+ */
+enum entity_charset { cs_terminator, cs_utf_8, cs_8859_1, cs_cp1252, cs_8859_15,
+ cs_cp1251, cs_8859_5, cs_cp866, cs_macroman, cs_koi8r,
+ cs_big5, cs_gb2312, cs_big5hkscs, cs_sjis, cs_eucjp,
+ cs_numelems /* used to count the number of charsets */
+ };
+#define CHARSET_UNICODE_COMPAT(cs) ((cs) <= cs_utf_8)
+#define CHARSET_SINGLE_BYTE(cs) ((cs) > cs_utf_8 && (cs) < cs_big5)
+#define CHARSET_PARTIAL_SUPPORT(cs) ((cs) >= cs_big5)
+
+static const struct {
+ const char *codeset;
+ enum entity_charset charset;
+} charset_map[] = {
+ { "ISO-8859-1", cs_8859_1 },
+ { "ISO8859-1", cs_8859_1 },
+ { "ISO-8859-15", cs_8859_15 },
+ { "ISO8859-15", cs_8859_15 },
+ { "utf-8", cs_utf_8 },
+ { "cp1252", cs_cp1252 },
+ { "Windows-1252", cs_cp1252 },
+ { "1252", cs_cp1252 },
+ { "BIG5", cs_big5 },
+ { "950", cs_big5 },
+ { "GB2312", cs_gb2312 },
+ { "936", cs_gb2312 },
+ { "BIG5-HKSCS", cs_big5hkscs },
+ { "Shift_JIS", cs_sjis },
+ { "SJIS", cs_sjis },
+ { "932", cs_sjis },
+ { "EUCJP", cs_eucjp },
+ { "EUC-JP", cs_eucjp },
+ { "KOI8-R", cs_koi8r },
+ { "koi8-ru", cs_koi8r },
+ { "koi8r", cs_koi8r },
+ { "cp1251", cs_cp1251 },
+ { "Windows-1251", cs_cp1251 },
+ { "win-1251", cs_cp1251 },
+ { "iso8859-5", cs_8859_5 },
+ { "iso-8859-5", cs_8859_5 },
+ { "cp866", cs_cp866 },
+ { "866", cs_cp866 },
+ { "ibm866", cs_cp866 },
+ { "MacRoman", cs_macroman },
+ { NULL }
+};
+
+/* longest entity name length excluding & and ; */
+#define LONGEST_ENTITY_LENGTH 31
+
+/* Definitions for mappings *to* Unicode.
+ * The origin charset must have at most 256 code points.
+ * The multi-byte encodings are not supported */
+typedef struct {
+ unsigned short uni_cp[64];
+} enc_to_uni_stage2;
+
+typedef struct {
+ const enc_to_uni_stage2 *inner[4];
+} enc_to_uni;
+
+/* bits 7-8 bits (only single bytes encodings supported )*/
+#define ENT_ENC_TO_UNI_STAGE1(k) ((k & 0xC0) >> 6)
+/* bits 1-6 */
+#define ENT_ENC_TO_UNI_STAGE2(k) ((k) & 0x3F)
+
+
+CODE;
+
+echo $t;
+
+$encodings = array(
+ array(
+ "ident" => "iso88591",
+ "enumid" => 2,
+ "name" => "ISO-8859-1",
+ "file" => "mappings/8859-1.TXT",
+ ),
+ array(
+ "ident" => "iso88595",
+ "enumid" => 6,
+ "name" => "ISO-8859-5",
+ "file" => "mappings/8859-5.TXT",
+ ),
+ array(
+ "ident" => "iso885915",
+ "enumid" => 4,
+ "name" => "ISO-8859-15",
+ "file" => "mappings/8859-15.TXT",
+ ),
+ array(
+ "ident" => "win1252",
+ "enumid" => 3,
+ "enumident" => "cp1252",
+ "name" => "Windows-1252",
+ "file" => "mappings/CP1252.TXT",
+ ),
+ array(
+ "ident" => "win1251",
+ "enumid" => 5,
+ "enumident" => "cp1252",
+ "name" => "Windows-1251",
+ "file" => "mappings/CP1251.TXT",
+ ),
+ array(
+ "ident" => "koi8r",
+ "enumid" => 9,
+ "name" => "KOI8-R",
+ "file" => "mappings/KOI8-R.TXT",
+ ),
+ array(
+ "ident" => "cp866",
+ "enumid" => 7,
+ "name" => "CP-866",
+ "file" => "mappings/CP866.TXT",
+ ),
+ array(
+ "ident" => "macroman",
+ "enumid" => 8,
+ "name" => "MacRoman",
+ "file" => "mappings/ROMAN.TXT",
+ ),
+);
+
+$prevStage2 = array();
+
+foreach ($encodings as $e) {
+ echo
+"/* {{{ Mappings *to* Unicode for {$e['name']} */\n\n";
+
+ /* process file */
+ $map = array();
+ $lines = explode("\n", file_get_contents($e{'file'}));
+ foreach ($lines as $l) {
+ if (preg_match("/^0x([0-9A-Z]{2})\t0x([0-9A-Z]{2,})/i", $l, $matches))
+ $map[] = array($matches[1], $matches[2]);
+ }
+
+ $mappy = array();
+ foreach ($map as $v) { $mappy[hexdec($v[0])] = hexdec($v[1]); }
+
+ $mstable = array("ident" => $e['ident']);
+ /* calculate two-stage tables */
+ for ($i = 0; $i < 4; $i++) {
+ for ($j = 0; $j < 64; $j++) {
+ $cp = $i << 6 | $j;
+ $mstable[$i][$j] = isset($mappy[$cp]) ? $mappy[$cp] : NULL;
+ }
+ }
+
+ echo
+"/* {{{ Stage 2 tables for {$e['name']} */\n\n";
+
+ $s2tables_idents = array();
+ for ($i = 0; $i < 4; $i++) {
+ if (($t = array_keys($prevStage2, $mstable[$i])) !== array()) {
+ $s2tables_idents[$i] = $encodings[$t[0]/5]["ident"];
+ continue;
+ }
+
+ $s2tables_idents[$i] = $e["ident"];
+
+ echo "static const enc_to_uni_stage2 enc_to_uni_s2_{$e['ident']}_".
+ sprintf("%02X", $i << 6)." = {\n";
+ for ($j = 0; $j < 64; $j++) {
+ if ($j == 0) echo "\t";
+ elseif ($j % 6 == 0) echo "\n\t";
+ else echo " ";
+ if ($mstable[$i][$j] !== NULL)
+ echo sprintf("0x%04X,", $mstable[$i][$j]);
+ else
+ echo "0xFFFF,"; /* special value; indicates no mapping */
+ }
+ echo "\n};\n\n";
+
+ $prevStage2[] = $mstable[$i];
+ }
+
+ echo
+"/* end of stage 2 tables for {$e['name']} }}} */\n\n";
+
+ echo
+"/* {{{ Stage 1 table for {$e['name']} */\n";
+
+ echo
+"static const enc_to_uni enc_to_uni_{$e['ident']} = {
+\t&enc_to_uni_s2_{$s2tables_idents[0]}_00,
+\t&enc_to_uni_s2_{$s2tables_idents[1]}_40,
+\t&enc_to_uni_s2_{$s2tables_idents[2]}_80,
+\t&enc_to_uni_s2_{$s2tables_idents[3]}_C0,
+};
+";
+
+ echo
+"/* end of stage 1 table for {$e['name']} }}} */\n\n";
+}
+
+$maxencnum = max(array_map(function($e) { return $e['enumid']; }, $encodings));
+$a = range(0, $maxencnum);
+foreach ($encodings as $e) { $a[$e['enumid']] = $e['ident']; }
+
+ echo
+"/* {{{ Index of tables for encoding conversion */
+static const enc_to_uni *const enc_to_uni_index[cs_numelems] = {\n";
+
+foreach ($a as $k => $v) {
+ if (is_numeric($v))
+ echo "\tNULL,\n";
+ else
+ echo "\t&enc_to_uni_$v,\n";
+}
+
+ echo
+"};
+/* }}} */\n";
+
+$t = <<<CODE
+
+/* Definitions for mappings *from* Unicode */
+
+typedef struct {
+ unsigned short un_code_point; /* we don't need bigger */
+ unsigned char cs_code; /* currently, we only have maps to single-byte encodings */
+} uni_to_enc;
+
+
+CODE;
+
+echo $t;
+
+$encodings = array(
+ array(
+ "ident" => "iso885915",
+ "name" => "ISO-8859-15",
+ "file" => "mappings/8859-15.TXT",
+ "range" => array(0xA4, 0xBE),
+ ),
+ array(
+ "ident" => "win1252",
+ "name" => "Windows-1252",
+ "file" => "mappings/CP1252.TXT",
+ "range" => array(0x80, 0x9F),
+ ),
+ array(
+ "ident" => "win1251",
+ "name" => "Windows-1251",
+ "file" => "mappings/CP1251.TXT",
+ "range" => array(0x80, 0xFF),
+ ),
+ array(
+ "ident" => "koi8r",
+ "name" => "KOI8-R",
+ "file" => "mappings/KOI8-R.TXT",
+ "range" => array(0x80, 0xFF),
+ ),
+ array(
+ "ident" => "cp866",
+ "name" => "CP-866",
+ "file" => "mappings/CP866.TXT",
+ "range" => array(0x80, 0xFF),
+ ),
+ array(
+ "ident" => "macroman",
+ "name" => "MacRoman",
+ "file" => "mappings/ROMAN.TXT",
+ "range" => array(0x80, 0xFF),
+ ),
+);
+
+foreach ($encodings as $e) {
+ echo
+"/* {{{ Mappings *from* Unicode for {$e['name']} */\n";
+
+ /* process file */
+ $map = array();
+ $lines = explode("\n", file_get_contents($e{'file'}));
+ foreach ($lines as $l) {
+ if (preg_match("/^0x([0-9A-Z]{2})\t0x([0-9A-Z]{2,})\s+#\s*(.*)$/i", $l, $matches))
+ $map[] = array($matches[1], $matches[2], $matches[3]);
+ }
+
+ $mappy = array();
+ foreach ($map as $v) {
+ if (hexdec($v[0]) >= $e['range'][0] && hexdec($v[0]) <= $e['range'][1])
+ $mappy[hexdec($v[1])] = array(hexdec($v[0]), strtolower($v[2]));
+ }
+ ksort($mappy);
+
+ echo
+"static const uni_to_enc unimap_{$e['ident']}[] = {\n";
+
+ foreach ($mappy as $k => $v) {
+ echo "\t{ ", sprintf("0x%04X", $k), ", ", sprintf("0x%02X", $v[0]), " },\t/* ",
+ $v[1], " */\n";
+ }
+ echo "};\n";
+
+ echo
+"/* {{{ end of mappings *from* Unicode for {$e['name']} */\n\n";
+}
+
+$data = file_get_contents("ents_html5.txt");
+$pass2 = false;
+$name = "HTML5";
+$ident = "html5";
+again:
+
+$t = <<<'CODE'
+/* HTML 5 has many more named entities.
+ * Some of them map to two unicode code points, not one.
+ * We're going to use a three-stage table (with an extra one for the entities
+ * with two code points). */
+
+#define ENT_STAGE1_INDEX(k) (((k) & 0xFFF000) >> 12) /* > 1D, we have no mapping */
+#define ENT_STAGE2_INDEX(k) (((k) & 0xFC0) >> 6)
+#define ENT_STAGE3_INDEX(k) ((k) & 0x3F)
+#define ENT_CODE_POINT_FROM_STAGES(i,j,k) (((i) << 12) | ((j) << 6) | (k))
+
+/* Table should be organized with a leading row telling the size of
+ * the table and the default entity (maybe NULL) and the rest being
+ * normal rows ordered by code point so that we can do a binary search */
+typedef union {
+ struct {
+ unsigned size; /* number of remaining entries in the table */
+ const char *default_entity;
+ unsigned short default_entity_len;
+ } leading_entry;
+ struct {
+ unsigned second_cp; /* second code point */
+ const char *entity;
+ unsigned short entity_len;
+ } normal_entry;
+} entity_multicodepoint_row;
+
+/* blocks of these should start at code points k where k % 0xFC0 == 0 */
+typedef struct {
+ char ambiguous; /* if 0 look into entity */
+ union {
+ struct {
+ const char *entity; /* may be NULL */
+ unsigned short entity_len;
+ } ent;
+ const entity_multicodepoint_row *multicodepoint_table;
+ } data;
+} entity_stage3_row;
+
+/* Calculate k & 0x3F Use as offset */
+typedef const entity_stage3_row *entity_stage2_row; /* 64 elements */
+
+/* Calculate k & 0xFC0 >> 6. Use as offset */
+typedef const entity_stage3_row *const *entity_stage1_row; /* 64 elements */
+
+/* For stage 1, Calculate k & 0xFFF000 >> 3*4.
+ * If larger than 1D, we have no mapping. Otherwise lookup that index */
+
+typedef struct {
+ const entity_stage1_row *ms_table;
+ /* for tables with only basic entities, this member is to be accessed
+ * directly for better performance: */
+ const entity_stage3_row *table;
+} entity_table_opt;
+
+/* Replaced "GT" > "gt" and "QUOT" > "quot" for consistentcy's sake. */
+
+
+CODE;
+
+if (!$pass2)
+ echo $t;
+
+$dp = array();
+
+foreach (explode("\n", $data) as $l) {
+ if (preg_match('/^(#?[a-z0-9]+)\s+([a-f0-9]+) ([a-f0-9]+)/i', $l, $matches)) {
+ //echo sprintf("\t{\"%-21s 1, 0x%05d},\n", $matches[1].",", $matches[2]);
+ $dp[] = array($matches[1], $matches[2], $matches[3]);
+ } else if (preg_match('/^(#?[a-z0-9]+)\s+([a-f0-9]+)/i', $l, $matches)) {
+ $dp[] = array($matches[1], $matches[2]);
+ }
+}
+
+$origdp = $dp;
+
+usort($dp, function($a, $b) { return hexdec($a[1])-hexdec($b[1]); });
+
+$multicp_rows = array();
+foreach ($dp as $el) {
+ if (count($el) == 3) {
+ $multicp_rows[$el[1]] = array();
+ }
+}
+
+foreach ($dp as $el) {
+ if (key_exists($el[1], $multicp_rows)) {
+ if (count($el) == 3)
+ $multicp_rows[$el[1]][$el[2]] = $el[0];
+ else
+ $multicp_rows[$el[1]]["default"] = $el[0];
+ }
+}
+
+if ($pass2 < 2)
+ echo "/* {{{ Start of $name multi-stage table for codepoint -> entity */", "\n\n";
+else
+ echo "/* {{{ Start of $name table for codepoint -> entity */", "\n\n";
+
+if (empty($multicp_rows))
+ goto skip_multicp;
+
+ksort($multicp_rows);
+foreach ($multicp_rows as &$v) { ksort($v); }
+
+echo
+"/* {{{ Start of double code point tables for $name */", "\n\n";
+
+foreach ($multicp_rows as $k => $v) {
+ echo "static const entity_multicodepoint_row multi_cp_{$ident}_",
+ sprintf("%05s", $k), "[] = {", "\n";
+ if (key_exists("default", $v)) {
+ if ($v['default'] == 'GT') /* hack to make > translate to &gt; not GT; */
+ $v['default'] = "gt";
+ echo "\t{", sprintf("%02d", count($v) - 1),
+ ",\t\t", sprintf("\"%-21s", $v["default"].'",'), "\t",
+ sprintf("% 2d", strlen($v["default"])), '},', "\n";
+ } else {
+ echo "\t{", sprintf("%02d", count($v)),
+ ",\t\t", sprintf("%-22s", 'NULL'), ",\t0},\n";
+ }
+ unset($v["default"]);
+ foreach ($v as $l => $w) {
+ echo "\t{", sprintf("0x%05s", $l), ",\t", sprintf("\"%-21s", $w.'",'), "\t",
+ sprintf("% 2d", strlen($w)), '},', "\n";
+ }
+ echo "};\n";
+}
+echo "\n/* End of double code point tables }}} */", "\n\n";
+
+skip_multicp:
+
+if ($pass2 < 2)
+ echo "/* {{{ Stage 3 Tables for $name */", "\n\n";
+
+$t = <<<CODE
+static const entity_stage3_row empty_stage3_table[] = {
+ /* 64 elements */
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+ {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0}, {0, NULL, 0},
+};
+
+CODE;
+
+if (!$pass2)
+ echo $t;
+
+$mstable = array();
+foreach ($dp as $el) {
+ $s1 = (hexdec($el[1]) & 0xFFF000) >> 12;
+ $s2 = (hexdec($el[1]) & 0xFC0) >> 6;
+ $s3 = hexdec($el[1]) & 0x3F;
+ if (key_exists($el[1], $multicp_rows)) {
+ $mstable[$s1][$s2][$s3] = "";
+ } else {
+ $mstable[$s1][$s2][$s3] = $el[0];
+ }
+}
+
+for ($i = 0; $i < 0x1E; $i++) {
+ for ($k = 0; $k < 64; $k++) {
+ $any3 = false;
+ $col3 = array();
+ for ($l = 0; $l < 64; $l++) {
+ if (isset($mstable[$i][$k][$l])) {
+ $any3 = true;
+ $col3[$l] = $mstable[$i][$k][$l];
+ } else {
+ $col3[$l] = null;
+ }
+ }
+ if ($any3) {
+ echo "static const entity_stage3_row stage3_table_{$ident}_",
+ sprintf("%02X%03X", $i, $k << 6), "[] = {\n";
+ foreach ($col3 as $y => $z) {
+ if ($y == 0) echo "\t";
+ elseif ($y % 4 == 0) echo "\n\t";
+ else echo " ";
+ if ($z === NULL)
+ echo "{0, NULL, 0},";
+ elseif ($z === "QUOT") /* hack to translate " into &quote;, not &QUOT; */
+ echo "{0, \"quot\", 4},";
+ elseif ($z !== "")
+ echo "{0, \"$z\", ", strlen($z), "},";
+ else
+ echo "{1, (void*)", sprintf("multi_cp_{$ident}_%05X",
+ ($i << 12) | ($k << 6) | $y ), "},";
+
+ }
+ echo "\n};\n\n";
+ }
+ }
+}
+
+if ($pass2 < 2)
+ echo "/* end of stage 3 Tables for $name }}} */", "\n\n";
+
+if ($pass2 > 1)
+ goto hashtables;
+
+echo
+"/* {{{ Stage 2 Tables for $name */", "\n\n";
+
+$t = <<<CODE
+static const entity_stage2_row empty_stage2_table[] = {
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+ empty_stage3_table, empty_stage3_table, empty_stage3_table, empty_stage3_table,
+};
+
+CODE;
+
+if (!$pass2)
+ echo $t;
+
+for ($i = 0; $i < 0x1E; $i++) {
+ $any = false;
+ for ($k = 0; $k < 64; $k++) {
+ if (isset($mstable[$i][$k]))
+ $any = true;
+ }
+ if ($any) {
+ echo "static const entity_stage2_row stage2_table_{$ident}_",
+ sprintf("%02X000", $i), "[] = {\n";
+ for ($k = 0; $k < 64; $k++) {
+ if ($k == 0) echo "\t";
+ elseif ($k % 4 == 0) echo "\n\t";
+ else echo " ";
+ if (isset($mstable[$i][$k])) {
+ echo sprintf("stage3_table_{$ident}_%05X", ($i << 12) | ($k << 6)), ",";
+ } else {
+ echo "empty_stage3_table", ",";
+ }
+ }
+ echo "\n};\n\n";
+ }
+}
+
+echo
+"/* end of stage 2 tables for $name }}} */", "\n\n";
+
+echo "static const entity_stage1_row entity_ms_table_{$ident}[] = {\n";
+for ($i = 0; $i < 0x1E; $i++) {
+ if (isset($mstable[$i]))
+ echo "\t", sprintf("stage2_table_{$ident}_%02X000", $i), ",\n";
+ else
+ echo "\tempty_stage2_table,\n";
+}
+echo "};\n\n";
+
+echo
+"/* end of $name multi-stage table for codepoint -> entity }}} */\n\n";
+
+/* commented-out; this enabled binary search, which turned out to be
+ * significantly slower than the hash tables for html 5 entities */
+//echo
+//"/* {{{ HTML 5 tables for entity -> codepoint */", "\n\n";
+
+//$t = <<<CODE
+//typedef struct {
+// const char *entity;
+// unsigned short entity_len;
+// unsigned int codepoint1;
+// unsigned int codepoint2;
+//} entity_cp_map;
+//
+//#define ENTITY_CP_MAP_CMP(l, lsize, r, rsize) \
+// ( ((lsize)==(rsize)) ? (memcmp((l), (r), (lsize))) : ((lsize)-(rsize)) )
+//
+//static const entity_cp_map html5_ent_cp_map[] = {
+//
+//CODE;
+//echo $t;
+//
+//$dp = $origdp;
+//usort($dp, function($a, $b) { $d = strlen($a[0])-strlen($b[0]);
+// return $d==0?strcmp($a[0], $b[0]):$d; });
+//
+//$k = 0;
+//foreach ($dp as $o) {
+// if ($k == 0) echo "\t";
+// elseif ($k % 3 == 0) echo "\n\t";
+// else echo " ";
+// if (isset($o[2]))
+// echo sprintf('{"%s", %d, 0x%X, 0x%X},', $o[0], strlen($o[0]),
+// hexdec($o[1]), hexdec($o[2]));
+// else
+// echo sprintf('{"%s", %d, 0x%X, 0},', $o[0], strlen($o[0]),
+// hexdec($o[1]));
+//
+// if (isset($o[2])) {
+// $entlen = strlen($o[0]) + 2;
+// $utf8len = strlen(
+// mb_convert_encoding("&#x{$o[1]};&#x{$o[2]};", "UTF-8", "HTML-ENTITIES"));
+// if ($utf8len > $entlen*1.2) {
+// die("violated assumption for traverse_for_entities");
+// }
+// }
+//
+// $k++;
+//}
+//echo "\n};\n\n";
+//
+//echo "static const size_t html5_ent_cp_map_size = $k;\n\n";
+//
+//echo
+//"/* end of HTML 5 tables for entity -> codepoint }}} */\n\n";
+
+hashtables:
+
+echo
+"/* {{{ $name hash table for entity -> codepoint */", "\n\n";
+
+$t = <<<CODE
+typedef struct {
+ const char *entity;
+ unsigned short entity_len;
+ unsigned int codepoint1;
+ unsigned int codepoint2;
+} entity_cp_map;
+
+typedef const entity_cp_map *entity_ht_bucket;
+
+typedef struct {
+ unsigned num_elems; /* power of 2 */
+ const entity_ht_bucket *buckets; /* .num_elems elements */
+} entity_ht;
+
+static const entity_cp_map ht_bucket_empty[] = { NULL };
+
+CODE;
+
+if (!$pass2)
+ echo $t;
+
+function hashfun($str)
+{
+
+ $hash = 5381;
+ $nKeyLength = strlen($str);
+ $pos = 0;
+
+ /* variant with the hash unrolled eight times */
+ for (; $nKeyLength > 0; $nKeyLength--) {
+ $hash = (int)(((int)(((int)($hash << 5)) + $hash)) + ord($str[$pos++]));
+ }
+ return $hash;
+
+}
+
+$numelems = max(pow(2, ceil(log(1.5*count($origdp))/log(2))),16);
+$mask = $numelems - 1;
+$hashes = array();
+foreach ($origdp as $e) {
+ $hashes[hashfun($e[0]) & $mask][] = $e;
+ if (isset($e[2])) {
+ $entlen = strlen($e[0]) + 2;
+ $utf8len = strlen(
+ mb_convert_encoding("&#x{$e[1]};&#x{$e[2]};", "UTF-8", "HTML-ENTITIES"));
+ if ($utf8len > $entlen*1.2) {
+ die("violated assumption for traverse_for_entities");
+ }
+ }
+}
+
+for ($i = 0; $i < $numelems; $i++) {
+ if (empty($hashes[$i]))
+ continue;
+ echo "static const entity_cp_map ht_bucket_{$ident}_", sprintf("%03X", $i) ,"[] = {";
+ foreach ($hashes[$i] as $h) {
+ if (isset($h[2])) {
+ echo sprintf(' {"%s", %d, 0x%05X, 0x%05X},',
+ $h[0], strlen($h[0]), hexdec($h[1]), hexdec($h[2]));
+ } else {
+ echo sprintf(' {"%s", %d, 0x%05X, 0},',
+ $h[0], strlen($h[0]), hexdec($h[1]));
+ }
+ }
+ echo " {NULL} };\n";
+}
+echo "\n";
+
+echo
+"static const entity_cp_map *const ht_buckets_{$ident}[] = {\n";
+
+for ($i = 0; $i < $numelems; $i++) {
+ if ($i == 0) echo "\t";
+ elseif ($i % 4 == 0) echo "\n\t";
+ else echo " ";
+ if (empty($hashes[$i]))
+ echo "ht_bucket_empty,";
+ else
+ echo "ht_bucket_{$ident}_", sprintf("%03X", $i), ",";
+}
+echo "\n};\n\n";
+
+echo
+"static const entity_ht ent_ht_{$ident} = {
+ ", sprintf("0x%X", $numelems), ",
+ ht_buckets_{$ident}
+};\n\n";
+
+echo
+"/* end of $name hash table for entity -> codepoint }}} */\n\n";
+
+if (!$pass2) {
+ $data = file_get_contents("ents_html401.txt");
+ $pass2 = 1;
+ $name = "HTML 4.01";
+ $ident = "html4";
+ goto again;
+} elseif ($pass2 == 1) {
+ $data = file_get_contents("ents_basic.txt");
+ $pass2 = 2;
+ $name = "Basic entities (no apos)";
+ $ident = "be_noapos";
+ goto again;
+} elseif ($pass2 == 2) {
+ $data = file_get_contents("ents_basic_apos.txt");
+ $pass2 = 3;
+ $name = "Basic entities (with apos)";
+ $ident = "be_apos";
+ goto again;
+}
+
+echo "#endif /* HTML_TABLES_H */\n";
diff --git a/ext/standard/html_tables/mappings/8859-1.TXT b/ext/standard/html_tables/mappings/8859-1.TXT
new file mode 100644
index 0000000000..473ecabc17
--- /dev/null
+++ b/ext/standard/html_tables/mappings/8859-1.TXT
@@ -0,0 +1,303 @@
+#
+# Name: ISO/IEC 8859-1:1998 to Unicode
+# Unicode version: 3.0
+# Table version: 1.0
+# Table format: Format A
+# Date: 1999 July 27
+# Authors: Ken Whistler <kenw@sybase.com>
+#
+# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
+#
+# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
+# No claims are made as to fitness for any particular purpose. No
+# warranties of any kind are expressed or implied. The recipient
+# agrees to determine applicability of information provided. If this
+# file has been provided on optical media by Unicode, Inc., the sole
+# remedy for any claim will be exchange of defective media within 90
+# days of receipt.
+#
+# Unicode, Inc. hereby grants the right to freely use the information
+# supplied in this file in the creation of products supporting the
+# Unicode Standard, and to make copies of this file in any form for
+# internal or external distribution as long as this notice remains
+# attached.
+#
+# General notes:
+#
+# This table contains the data the Unicode Consortium has on how
+# ISO/IEC 8859-1:1998 characters map into Unicode.
+#
+# Format: Three tab-separated columns
+# Column #1 is the ISO/IEC 8859-1 code (in hex as 0xXX)
+# Column #2 is the Unicode (in hex as 0xXXXX)
+# Column #3 the Unicode name (follows a comment sign, '#')
+#
+# The entries are in ISO/IEC 8859-1 order.
+#
+# Version history
+# 1.0 version updates 0.1 version by adding mappings for all
+# control characters.
+#
+# Updated versions of this file may be found in:
+# <ftp://ftp.unicode.org/Public/MAPPINGS/>
+#
+# Any comments or problems, contact <errata@unicode.org>
+# Please note that <errata@unicode.org> is an archival address;
+# notices will be checked, but do not expect an immediate response.
+#
+0x00 0x0000 # NULL
+0x01 0x0001 # START OF HEADING
+0x02 0x0002 # START OF TEXT
+0x03 0x0003 # END OF TEXT
+0x04 0x0004 # END OF TRANSMISSION
+0x05 0x0005 # ENQUIRY
+0x06 0x0006 # ACKNOWLEDGE
+0x07 0x0007 # BELL
+0x08 0x0008 # BACKSPACE
+0x09 0x0009 # HORIZONTAL TABULATION
+0x0A 0x000A # LINE FEED
+0x0B 0x000B # VERTICAL TABULATION
+0x0C 0x000C # FORM FEED
+0x0D 0x000D # CARRIAGE RETURN
+0x0E 0x000E # SHIFT OUT
+0x0F 0x000F # SHIFT IN
+0x10 0x0010 # DATA LINK ESCAPE
+0x11 0x0011 # DEVICE CONTROL ONE
+0x12 0x0012 # DEVICE CONTROL TWO
+0x13 0x0013 # DEVICE CONTROL THREE
+0x14 0x0014 # DEVICE CONTROL FOUR
+0x15 0x0015 # NEGATIVE ACKNOWLEDGE
+0x16 0x0016 # SYNCHRONOUS IDLE
+0x17 0x0017 # END OF TRANSMISSION BLOCK
+0x18 0x0018 # CANCEL
+0x19 0x0019 # END OF MEDIUM
+0x1A 0x001A # SUBSTITUTE
+0x1B 0x001B # ESCAPE
+0x1C 0x001C # FILE SEPARATOR
+0x1D 0x001D # GROUP SEPARATOR
+0x1E 0x001E # RECORD SEPARATOR
+0x1F 0x001F # UNIT SEPARATOR
+0x20 0x0020 # SPACE
+0x21 0x0021 # EXCLAMATION MARK
+0x22 0x0022 # QUOTATION MARK
+0x23 0x0023 # NUMBER SIGN
+0x24 0x0024 # DOLLAR SIGN
+0x25 0x0025 # PERCENT SIGN
+0x26 0x0026 # AMPERSAND
+0x27 0x0027 # APOSTROPHE
+0x28 0x0028 # LEFT PARENTHESIS
+0x29 0x0029 # RIGHT PARENTHESIS
+0x2A 0x002A # ASTERISK
+0x2B 0x002B # PLUS SIGN
+0x2C 0x002C # COMMA
+0x2D 0x002D # HYPHEN-MINUS
+0x2E 0x002E # FULL STOP
+0x2F 0x002F # SOLIDUS
+0x30 0x0030 # DIGIT ZERO
+0x31 0x0031 # DIGIT ONE
+0x32 0x0032 # DIGIT TWO
+0x33 0x0033 # DIGIT THREE
+0x34 0x0034 # DIGIT FOUR
+0x35 0x0035 # DIGIT FIVE
+0x36 0x0036 # DIGIT SIX
+0x37 0x0037 # DIGIT SEVEN
+0x38 0x0038 # DIGIT EIGHT
+0x39 0x0039 # DIGIT NINE
+0x3A 0x003A # COLON
+0x3B 0x003B # SEMICOLON
+0x3C 0x003C # LESS-THAN SIGN
+0x3D 0x003D # EQUALS SIGN
+0x3E 0x003E # GREATER-THAN SIGN
+0x3F 0x003F # QUESTION MARK
+0x40 0x0040 # COMMERCIAL AT
+0x41 0x0041 # LATIN CAPITAL LETTER A
+0x42 0x0042 # LATIN CAPITAL LETTER B
+0x43 0x0043 # LATIN CAPITAL LETTER C
+0x44 0x0044 # LATIN CAPITAL LETTER D
+0x45 0x0045 # LATIN CAPITAL LETTER E
+0x46 0x0046 # LATIN CAPITAL LETTER F
+0x47 0x0047 # LATIN CAPITAL LETTER G
+0x48 0x0048 # LATIN CAPITAL LETTER H
+0x49 0x0049 # LATIN CAPITAL LETTER I
+0x4A 0x004A # LATIN CAPITAL LETTER J
+0x4B 0x004B # LATIN CAPITAL LETTER K
+0x4C 0x004C # LATIN CAPITAL LETTER L
+0x4D 0x004D # LATIN CAPITAL LETTER M
+0x4E 0x004E # LATIN CAPITAL LETTER N
+0x4F 0x004F # LATIN CAPITAL LETTER O
+0x50 0x0050 # LATIN CAPITAL LETTER P
+0x51 0x0051 # LATIN CAPITAL LETTER Q
+0x52 0x0052 # LATIN CAPITAL LETTER R
+0x53 0x0053 # LATIN CAPITAL LETTER S
+0x54 0x0054 # LATIN CAPITAL LETTER T
+0x55 0x0055 # LATIN CAPITAL LETTER U
+0x56 0x0056 # LATIN CAPITAL LETTER V
+0x57 0x0057 # LATIN CAPITAL LETTER W
+0x58 0x0058 # LATIN CAPITAL LETTER X
+0x59 0x0059 # LATIN CAPITAL LETTER Y
+0x5A 0x005A # LATIN CAPITAL LETTER Z
+0x5B 0x005B # LEFT SQUARE BRACKET
+0x5C 0x005C # REVERSE SOLIDUS
+0x5D 0x005D # RIGHT SQUARE BRACKET
+0x5E 0x005E # CIRCUMFLEX ACCENT
+0x5F 0x005F # LOW LINE
+0x60 0x0060 # GRAVE ACCENT
+0x61 0x0061 # LATIN SMALL LETTER A
+0x62 0x0062 # LATIN SMALL LETTER B
+0x63 0x0063 # LATIN SMALL LETTER C
+0x64 0x0064 # LATIN SMALL LETTER D
+0x65 0x0065 # LATIN SMALL LETTER E
+0x66 0x0066 # LATIN SMALL LETTER F
+0x67 0x0067 # LATIN SMALL LETTER G
+0x68 0x0068 # LATIN SMALL LETTER H
+0x69 0x0069 # LATIN SMALL LETTER I
+0x6A 0x006A # LATIN SMALL LETTER J
+0x6B 0x006B # LATIN SMALL LETTER K
+0x6C 0x006C # LATIN SMALL LETTER L
+0x6D 0x006D # LATIN SMALL LETTER M
+0x6E 0x006E # LATIN SMALL LETTER N
+0x6F 0x006F # LATIN SMALL LETTER O
+0x70 0x0070 # LATIN SMALL LETTER P
+0x71 0x0071 # LATIN SMALL LETTER Q
+0x72 0x0072 # LATIN SMALL LETTER R
+0x73 0x0073 # LATIN SMALL LETTER S
+0x74 0x0074 # LATIN SMALL LETTER T
+0x75 0x0075 # LATIN SMALL LETTER U
+0x76 0x0076 # LATIN SMALL LETTER V
+0x77 0x0077 # LATIN SMALL LETTER W
+0x78 0x0078 # LATIN SMALL LETTER X
+0x79 0x0079 # LATIN SMALL LETTER Y
+0x7A 0x007A # LATIN SMALL LETTER Z
+0x7B 0x007B # LEFT CURLY BRACKET
+0x7C 0x007C # VERTICAL LINE
+0x7D 0x007D # RIGHT CURLY BRACKET
+0x7E 0x007E # TILDE
+0x7F 0x007F # DELETE
+0x80 0x0080 # <control>
+0x81 0x0081 # <control>
+0x82 0x0082 # <control>
+0x83 0x0083 # <control>
+0x84 0x0084 # <control>
+0x85 0x0085 # <control>
+0x86 0x0086 # <control>
+0x87 0x0087 # <control>
+0x88 0x0088 # <control>
+0x89 0x0089 # <control>
+0x8A 0x008A # <control>
+0x8B 0x008B # <control>
+0x8C 0x008C # <control>
+0x8D 0x008D # <control>
+0x8E 0x008E # <control>
+0x8F 0x008F # <control>
+0x90 0x0090 # <control>
+0x91 0x0091 # <control>
+0x92 0x0092 # <control>
+0x93 0x0093 # <control>
+0x94 0x0094 # <control>
+0x95 0x0095 # <control>
+0x96 0x0096 # <control>
+0x97 0x0097 # <control>
+0x98 0x0098 # <control>
+0x99 0x0099 # <control>
+0x9A 0x009A # <control>
+0x9B 0x009B # <control>
+0x9C 0x009C # <control>
+0x9D 0x009D # <control>
+0x9E 0x009E # <control>
+0x9F 0x009F # <control>
+0xA0 0x00A0 # NO-BREAK SPACE
+0xA1 0x00A1 # INVERTED EXCLAMATION MARK
+0xA2 0x00A2 # CENT SIGN
+0xA3 0x00A3 # POUND SIGN
+0xA4 0x00A4 # CURRENCY SIGN
+0xA5 0x00A5 # YEN SIGN
+0xA6 0x00A6 # BROKEN BAR
+0xA7 0x00A7 # SECTION SIGN
+0xA8 0x00A8 # DIAERESIS
+0xA9 0x00A9 # COPYRIGHT SIGN
+0xAA 0x00AA # FEMININE ORDINAL INDICATOR
+0xAB 0x00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+0xAC 0x00AC # NOT SIGN
+0xAD 0x00AD # SOFT HYPHEN
+0xAE 0x00AE # REGISTERED SIGN
+0xAF 0x00AF # MACRON
+0xB0 0x00B0 # DEGREE SIGN
+0xB1 0x00B1 # PLUS-MINUS SIGN
+0xB2 0x00B2 # SUPERSCRIPT TWO
+0xB3 0x00B3 # SUPERSCRIPT THREE
+0xB4 0x00B4 # ACUTE ACCENT
+0xB5 0x00B5 # MICRO SIGN
+0xB6 0x00B6 # PILCROW SIGN
+0xB7 0x00B7 # MIDDLE DOT
+0xB8 0x00B8 # CEDILLA
+0xB9 0x00B9 # SUPERSCRIPT ONE
+0xBA 0x00BA # MASCULINE ORDINAL INDICATOR
+0xBB 0x00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+0xBC 0x00BC # VULGAR FRACTION ONE QUARTER
+0xBD 0x00BD # VULGAR FRACTION ONE HALF
+0xBE 0x00BE # VULGAR FRACTION THREE QUARTERS
+0xBF 0x00BF # INVERTED QUESTION MARK
+0xC0 0x00C0 # LATIN CAPITAL LETTER A WITH GRAVE
+0xC1 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
+0xC2 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+0xC3 0x00C3 # LATIN CAPITAL LETTER A WITH TILDE
+0xC4 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
+0xC5 0x00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE
+0xC6 0x00C6 # LATIN CAPITAL LETTER AE
+0xC7 0x00C7 # LATIN CAPITAL LETTER C WITH CEDILLA
+0xC8 0x00C8 # LATIN CAPITAL LETTER E WITH GRAVE
+0xC9 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
+0xCA 0x00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+0xCB 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
+0xCC 0x00CC # LATIN CAPITAL LETTER I WITH GRAVE
+0xCD 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
+0xCE 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+0xCF 0x00CF # LATIN CAPITAL LETTER I WITH DIAERESIS
+0xD0 0x00D0 # LATIN CAPITAL LETTER ETH (Icelandic)
+0xD1 0x00D1 # LATIN CAPITAL LETTER N WITH TILDE
+0xD2 0x00D2 # LATIN CAPITAL LETTER O WITH GRAVE
+0xD3 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
+0xD4 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+0xD5 0x00D5 # LATIN CAPITAL LETTER O WITH TILDE
+0xD6 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
+0xD7 0x00D7 # MULTIPLICATION SIGN
+0xD8 0x00D8 # LATIN CAPITAL LETTER O WITH STROKE
+0xD9 0x00D9 # LATIN CAPITAL LETTER U WITH GRAVE
+0xDA 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
+0xDB 0x00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+0xDC 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
+0xDD 0x00DD # LATIN CAPITAL LETTER Y WITH ACUTE
+0xDE 0x00DE # LATIN CAPITAL LETTER THORN (Icelandic)
+0xDF 0x00DF # LATIN SMALL LETTER SHARP S (German)
+0xE0 0x00E0 # LATIN SMALL LETTER A WITH GRAVE
+0xE1 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
+0xE2 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
+0xE3 0x00E3 # LATIN SMALL LETTER A WITH TILDE
+0xE4 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
+0xE5 0x00E5 # LATIN SMALL LETTER A WITH RING ABOVE
+0xE6 0x00E6 # LATIN SMALL LETTER AE
+0xE7 0x00E7 # LATIN SMALL LETTER C WITH CEDILLA
+0xE8 0x00E8 # LATIN SMALL LETTER E WITH GRAVE
+0xE9 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
+0xEA 0x00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX
+0xEB 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
+0xEC 0x00EC # LATIN SMALL LETTER I WITH GRAVE
+0xED 0x00ED # LATIN SMALL LETTER I WITH ACUTE
+0xEE 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
+0xEF 0x00EF # LATIN SMALL LETTER I WITH DIAERESIS
+0xF0 0x00F0 # LATIN SMALL LETTER ETH (Icelandic)
+0xF1 0x00F1 # LATIN SMALL LETTER N WITH TILDE
+0xF2 0x00F2 # LATIN SMALL LETTER O WITH GRAVE
+0xF3 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
+0xF4 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
+0xF5 0x00F5 # LATIN SMALL LETTER O WITH TILDE
+0xF6 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
+0xF7 0x00F7 # DIVISION SIGN
+0xF8 0x00F8 # LATIN SMALL LETTER O WITH STROKE
+0xF9 0x00F9 # LATIN SMALL LETTER U WITH GRAVE
+0xFA 0x00FA # LATIN SMALL LETTER U WITH ACUTE
+0xFB 0x00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
+0xFC 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
+0xFD 0x00FD # LATIN SMALL LETTER Y WITH ACUTE
+0xFE 0x00FE # LATIN SMALL LETTER THORN (Icelandic)
+0xFF 0x00FF # LATIN SMALL LETTER Y WITH DIAERESIS
diff --git a/ext/standard/html_tables/mappings/8859-15.TXT b/ext/standard/html_tables/mappings/8859-15.TXT
new file mode 100644
index 0000000000..ab2f32fcea
--- /dev/null
+++ b/ext/standard/html_tables/mappings/8859-15.TXT
@@ -0,0 +1,303 @@
+#
+# Name: ISO/IEC 8859-15:1999 to Unicode
+# Unicode version: 3.0
+# Table version: 1.0
+# Table format: Format A
+# Date: 1999 July 27
+# Authors: Markus Kuhn <http://www.cl.cam.ac.uk/~mgk25/>
+# Ken Whistler <kenw@sybase.com>
+#
+# Copyright (c) 1998 - 1999 Unicode, Inc. All Rights reserved.
+#
+# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
+# No claims are made as to fitness for any particular purpose. No
+# warranties of any kind are expressed or implied. The recipient
+# agrees to determine applicability of information provided. If this
+# file has been provided on optical media by Unicode, Inc., the sole
+# remedy for any claim will be exchange of defective media within 90
+# days of receipt.
+#
+# Unicode, Inc. hereby grants the right to freely use the information
+# supplied in this file in the creation of products supporting the
+# Unicode Standard, and to make copies of this file in any form for
+# internal or external distribution as long as this notice remains
+# attached.
+#
+# General notes:
+#
+# This table contains the data the Unicode Consortium has on how
+# ISO/IEC 8859-15:1999 characters map into Unicode.
+#
+# Format: Three tab-separated columns
+# Column #1 is the ISO/IEC 8859-15 code (in hex as 0xXX)
+# Column #2 is the Unicode (in hex as 0xXXXX)
+# Column #3 the Unicode name (follows a comment sign, '#')
+#
+# The entries are in ISO/IEC 8859-15 order.
+#
+# Version history
+#
+# Updated versions of this file may be found in:
+# <ftp://ftp.unicode.org/Public/MAPPINGS/>
+#
+# Any comments or problems, contact <errata@unicode.org>
+# Please note that <errata@unicode.org> is an archival address;
+# notices will be checked, but do not expect an immediate response.
+#
+0x00 0x0000 # NULL
+0x01 0x0001 # START OF HEADING
+0x02 0x0002 # START OF TEXT
+0x03 0x0003 # END OF TEXT
+0x04 0x0004 # END OF TRANSMISSION
+0x05 0x0005 # ENQUIRY
+0x06 0x0006 # ACKNOWLEDGE
+0x07 0x0007 # BELL
+0x08 0x0008 # BACKSPACE
+0x09 0x0009 # HORIZONTAL TABULATION
+0x0A 0x000A # LINE FEED
+0x0B 0x000B # VERTICAL TABULATION
+0x0C 0x000C # FORM FEED
+0x0D 0x000D # CARRIAGE RETURN
+0x0E 0x000E # SHIFT OUT
+0x0F 0x000F # SHIFT IN
+0x10 0x0010 # DATA LINK ESCAPE
+0x11 0x0011 # DEVICE CONTROL ONE
+0x12 0x0012 # DEVICE CONTROL TWO
+0x13 0x0013 # DEVICE CONTROL THREE
+0x14 0x0014 # DEVICE CONTROL FOUR
+0x15 0x0015 # NEGATIVE ACKNOWLEDGE
+0x16 0x0016 # SYNCHRONOUS IDLE
+0x17 0x0017 # END OF TRANSMISSION BLOCK
+0x18 0x0018 # CANCEL
+0x19 0x0019 # END OF MEDIUM
+0x1A 0x001A # SUBSTITUTE
+0x1B 0x001B # ESCAPE
+0x1C 0x001C # FILE SEPARATOR
+0x1D 0x001D # GROUP SEPARATOR
+0x1E 0x001E # RECORD SEPARATOR
+0x1F 0x001F # UNIT SEPARATOR
+0x20 0x0020 # SPACE
+0x21 0x0021 # EXCLAMATION MARK
+0x22 0x0022 # QUOTATION MARK
+0x23 0x0023 # NUMBER SIGN
+0x24 0x0024 # DOLLAR SIGN
+0x25 0x0025 # PERCENT SIGN
+0x26 0x0026 # AMPERSAND
+0x27 0x0027 # APOSTROPHE
+0x28 0x0028 # LEFT PARENTHESIS
+0x29 0x0029 # RIGHT PARENTHESIS
+0x2A 0x002A # ASTERISK
+0x2B 0x002B # PLUS SIGN
+0x2C 0x002C # COMMA
+0x2D 0x002D # HYPHEN-MINUS
+0x2E 0x002E # FULL STOP
+0x2F 0x002F # SOLIDUS
+0x30 0x0030 # DIGIT ZERO
+0x31 0x0031 # DIGIT ONE
+0x32 0x0032 # DIGIT TWO
+0x33 0x0033 # DIGIT THREE
+0x34 0x0034 # DIGIT FOUR
+0x35 0x0035 # DIGIT FIVE
+0x36 0x0036 # DIGIT SIX
+0x37 0x0037 # DIGIT SEVEN
+0x38 0x0038 # DIGIT EIGHT
+0x39 0x0039 # DIGIT NINE
+0x3A 0x003A # COLON
+0x3B 0x003B # SEMICOLON
+0x3C 0x003C # LESS-THAN SIGN
+0x3D 0x003D # EQUALS SIGN
+0x3E 0x003E # GREATER-THAN SIGN
+0x3F 0x003F # QUESTION MARK
+0x40 0x0040 # COMMERCIAL AT
+0x41 0x0041 # LATIN CAPITAL LETTER A
+0x42 0x0042 # LATIN CAPITAL LETTER B
+0x43 0x0043 # LATIN CAPITAL LETTER C
+0x44 0x0044 # LATIN CAPITAL LETTER D
+0x45 0x0045 # LATIN CAPITAL LETTER E
+0x46 0x0046 # LATIN CAPITAL LETTER F
+0x47 0x0047 # LATIN CAPITAL LETTER G
+0x48 0x0048 # LATIN CAPITAL LETTER H
+0x49 0x0049 # LATIN CAPITAL LETTER I
+0x4A 0x004A # LATIN CAPITAL LETTER J
+0x4B 0x004B # LATIN CAPITAL LETTER K
+0x4C 0x004C # LATIN CAPITAL LETTER L
+0x4D 0x004D # LATIN CAPITAL LETTER M
+0x4E 0x004E # LATIN CAPITAL LETTER N
+0x4F 0x004F # LATIN CAPITAL LETTER O
+0x50 0x0050 # LATIN CAPITAL LETTER P
+0x51 0x0051 # LATIN CAPITAL LETTER Q
+0x52 0x0052 # LATIN CAPITAL LETTER R
+0x53 0x0053 # LATIN CAPITAL LETTER S
+0x54 0x0054 # LATIN CAPITAL LETTER T
+0x55 0x0055 # LATIN CAPITAL LETTER U
+0x56 0x0056 # LATIN CAPITAL LETTER V
+0x57 0x0057 # LATIN CAPITAL LETTER W
+0x58 0x0058 # LATIN CAPITAL LETTER X
+0x59 0x0059 # LATIN CAPITAL LETTER Y
+0x5A 0x005A # LATIN CAPITAL LETTER Z
+0x5B 0x005B # LEFT SQUARE BRACKET
+0x5C 0x005C # REVERSE SOLIDUS
+0x5D 0x005D # RIGHT SQUARE BRACKET
+0x5E 0x005E # CIRCUMFLEX ACCENT
+0x5F 0x005F # LOW LINE
+0x60 0x0060 # GRAVE ACCENT
+0x61 0x0061 # LATIN SMALL LETTER A
+0x62 0x0062 # LATIN SMALL LETTER B
+0x63 0x0063 # LATIN SMALL LETTER C
+0x64 0x0064 # LATIN SMALL LETTER D
+0x65 0x0065 # LATIN SMALL LETTER E
+0x66 0x0066 # LATIN SMALL LETTER F
+0x67 0x0067 # LATIN SMALL LETTER G
+0x68 0x0068 # LATIN SMALL LETTER H
+0x69 0x0069 # LATIN SMALL LETTER I
+0x6A 0x006A # LATIN SMALL LETTER J
+0x6B 0x006B # LATIN SMALL LETTER K
+0x6C 0x006C # LATIN SMALL LETTER L
+0x6D 0x006D # LATIN SMALL LETTER M
+0x6E 0x006E # LATIN SMALL LETTER N
+0x6F 0x006F # LATIN SMALL LETTER O
+0x70 0x0070 # LATIN SMALL LETTER P
+0x71 0x0071 # LATIN SMALL LETTER Q
+0x72 0x0072 # LATIN SMALL LETTER R
+0x73 0x0073 # LATIN SMALL LETTER S
+0x74 0x0074 # LATIN SMALL LETTER T
+0x75 0x0075 # LATIN SMALL LETTER U
+0x76 0x0076 # LATIN SMALL LETTER V
+0x77 0x0077 # LATIN SMALL LETTER W
+0x78 0x0078 # LATIN SMALL LETTER X
+0x79 0x0079 # LATIN SMALL LETTER Y
+0x7A 0x007A # LATIN SMALL LETTER Z
+0x7B 0x007B # LEFT CURLY BRACKET
+0x7C 0x007C # VERTICAL LINE
+0x7D 0x007D # RIGHT CURLY BRACKET
+0x7E 0x007E # TILDE
+0x7F 0x007F # DELETE
+0x80 0x0080 # <control>
+0x81 0x0081 # <control>
+0x82 0x0082 # <control>
+0x83 0x0083 # <control>
+0x84 0x0084 # <control>
+0x85 0x0085 # <control>
+0x86 0x0086 # <control>
+0x87 0x0087 # <control>
+0x88 0x0088 # <control>
+0x89 0x0089 # <control>
+0x8A 0x008A # <control>
+0x8B 0x008B # <control>
+0x8C 0x008C # <control>
+0x8D 0x008D # <control>
+0x8E 0x008E # <control>
+0x8F 0x008F # <control>
+0x90 0x0090 # <control>
+0x91 0x0091 # <control>
+0x92 0x0092 # <control>
+0x93 0x0093 # <control>
+0x94 0x0094 # <control>
+0x95 0x0095 # <control>
+0x96 0x0096 # <control>
+0x97 0x0097 # <control>
+0x98 0x0098 # <control>
+0x99 0x0099 # <control>
+0x9A 0x009A # <control>
+0x9B 0x009B # <control>
+0x9C 0x009C # <control>
+0x9D 0x009D # <control>
+0x9E 0x009E # <control>
+0x9F 0x009F # <control>
+0xA0 0x00A0 # NO-BREAK SPACE
+0xA1 0x00A1 # INVERTED EXCLAMATION MARK
+0xA2 0x00A2 # CENT SIGN
+0xA3 0x00A3 # POUND SIGN
+0xA4 0x20AC # EURO SIGN
+0xA5 0x00A5 # YEN SIGN
+0xA6 0x0160 # LATIN CAPITAL LETTER S WITH CARON
+0xA7 0x00A7 # SECTION SIGN
+0xA8 0x0161 # LATIN SMALL LETTER S WITH CARON
+0xA9 0x00A9 # COPYRIGHT SIGN
+0xAA 0x00AA # FEMININE ORDINAL INDICATOR
+0xAB 0x00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+0xAC 0x00AC # NOT SIGN
+0xAD 0x00AD # SOFT HYPHEN
+0xAE 0x00AE # REGISTERED SIGN
+0xAF 0x00AF # MACRON
+0xB0 0x00B0 # DEGREE SIGN
+0xB1 0x00B1 # PLUS-MINUS SIGN
+0xB2 0x00B2 # SUPERSCRIPT TWO
+0xB3 0x00B3 # SUPERSCRIPT THREE
+0xB4 0x017D # LATIN CAPITAL LETTER Z WITH CARON
+0xB5 0x00B5 # MICRO SIGN
+0xB6 0x00B6 # PILCROW SIGN
+0xB7 0x00B7 # MIDDLE DOT
+0xB8 0x017E # LATIN SMALL LETTER Z WITH CARON
+0xB9 0x00B9 # SUPERSCRIPT ONE
+0xBA 0x00BA # MASCULINE ORDINAL INDICATOR
+0xBB 0x00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+0xBC 0x0152 # LATIN CAPITAL LIGATURE OE
+0xBD 0x0153 # LATIN SMALL LIGATURE OE
+0xBE 0x0178 # LATIN CAPITAL LETTER Y WITH DIAERESIS
+0xBF 0x00BF # INVERTED QUESTION MARK
+0xC0 0x00C0 # LATIN CAPITAL LETTER A WITH GRAVE
+0xC1 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
+0xC2 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+0xC3 0x00C3 # LATIN CAPITAL LETTER A WITH TILDE
+0xC4 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
+0xC5 0x00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE
+0xC6 0x00C6 # LATIN CAPITAL LETTER AE
+0xC7 0x00C7 # LATIN CAPITAL LETTER C WITH CEDILLA
+0xC8 0x00C8 # LATIN CAPITAL LETTER E WITH GRAVE
+0xC9 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
+0xCA 0x00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+0xCB 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
+0xCC 0x00CC # LATIN CAPITAL LETTER I WITH GRAVE
+0xCD 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
+0xCE 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+0xCF 0x00CF # LATIN CAPITAL LETTER I WITH DIAERESIS
+0xD0 0x00D0 # LATIN CAPITAL LETTER ETH
+0xD1 0x00D1 # LATIN CAPITAL LETTER N WITH TILDE
+0xD2 0x00D2 # LATIN CAPITAL LETTER O WITH GRAVE
+0xD3 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
+0xD4 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+0xD5 0x00D5 # LATIN CAPITAL LETTER O WITH TILDE
+0xD6 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
+0xD7 0x00D7 # MULTIPLICATION SIGN
+0xD8 0x00D8 # LATIN CAPITAL LETTER O WITH STROKE
+0xD9 0x00D9 # LATIN CAPITAL LETTER U WITH GRAVE
+0xDA 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
+0xDB 0x00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+0xDC 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
+0xDD 0x00DD # LATIN CAPITAL LETTER Y WITH ACUTE
+0xDE 0x00DE # LATIN CAPITAL LETTER THORN
+0xDF 0x00DF # LATIN SMALL LETTER SHARP S
+0xE0 0x00E0 # LATIN SMALL LETTER A WITH GRAVE
+0xE1 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
+0xE2 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
+0xE3 0x00E3 # LATIN SMALL LETTER A WITH TILDE
+0xE4 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
+0xE5 0x00E5 # LATIN SMALL LETTER A WITH RING ABOVE
+0xE6 0x00E6 # LATIN SMALL LETTER AE
+0xE7 0x00E7 # LATIN SMALL LETTER C WITH CEDILLA
+0xE8 0x00E8 # LATIN SMALL LETTER E WITH GRAVE
+0xE9 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
+0xEA 0x00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX
+0xEB 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
+0xEC 0x00EC # LATIN SMALL LETTER I WITH GRAVE
+0xED 0x00ED # LATIN SMALL LETTER I WITH ACUTE
+0xEE 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
+0xEF 0x00EF # LATIN SMALL LETTER I WITH DIAERESIS
+0xF0 0x00F0 # LATIN SMALL LETTER ETH
+0xF1 0x00F1 # LATIN SMALL LETTER N WITH TILDE
+0xF2 0x00F2 # LATIN SMALL LETTER O WITH GRAVE
+0xF3 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
+0xF4 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
+0xF5 0x00F5 # LATIN SMALL LETTER O WITH TILDE
+0xF6 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
+0xF7 0x00F7 # DIVISION SIGN
+0xF8 0x00F8 # LATIN SMALL LETTER O WITH STROKE
+0xF9 0x00F9 # LATIN SMALL LETTER U WITH GRAVE
+0xFA 0x00FA # LATIN SMALL LETTER U WITH ACUTE
+0xFB 0x00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
+0xFC 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
+0xFD 0x00FD # LATIN SMALL LETTER Y WITH ACUTE
+0xFE 0x00FE # LATIN SMALL LETTER THORN
+0xFF 0x00FF # LATIN SMALL LETTER Y WITH DIAERESIS
+
diff --git a/ext/standard/html_tables/mappings/8859-5.TXT b/ext/standard/html_tables/mappings/8859-5.TXT
new file mode 100644
index 0000000000..a7ed1ce2ab
--- /dev/null
+++ b/ext/standard/html_tables/mappings/8859-5.TXT
@@ -0,0 +1,303 @@
+#
+# Name: ISO 8859-5:1999 to Unicode
+# Unicode version: 3.0
+# Table version: 1.0
+# Table format: Format A
+# Date: 1999 July 27
+# Authors: Ken Whistler <kenw@sybase.com>
+#
+# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
+#
+# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
+# No claims are made as to fitness for any particular purpose. No
+# warranties of any kind are expressed or implied. The recipient
+# agrees to determine applicability of information provided. If this
+# file has been provided on optical media by Unicode, Inc., the sole
+# remedy for any claim will be exchange of defective media within 90
+# days of receipt.
+#
+# Unicode, Inc. hereby grants the right to freely use the information
+# supplied in this file in the creation of products supporting the
+# Unicode Standard, and to make copies of this file in any form for
+# internal or external distribution as long as this notice remains
+# attached.
+#
+# General notes:
+#
+# This table contains the data the Unicode Consortium has on how
+# ISO/IEC 8859-5:1999 characters map into Unicode.
+#
+# Format: Three tab-separated columns
+# Column #1 is the ISO/IEC 8859-5 code (in hex as 0xXX)
+# Column #2 is the Unicode (in hex as 0xXXXX)
+# Column #3 the Unicode name (follows a comment sign, '#')
+#
+# The entries are in ISO/IEC 8859-5 order.
+#
+# Version history
+# 1.0 version updates 0.1 version by adding mappings for all
+# control characters.
+#
+# Updated versions of this file may be found in:
+# <ftp://ftp.unicode.org/Public/MAPPINGS/>
+#
+# Any comments or problems, contact <errata@unicode.org>
+# Please note that <errata@unicode.org> is an archival address;
+# notices will be checked, but do not expect an immediate response.
+#
+0x00 0x0000 # NULL
+0x01 0x0001 # START OF HEADING
+0x02 0x0002 # START OF TEXT
+0x03 0x0003 # END OF TEXT
+0x04 0x0004 # END OF TRANSMISSION
+0x05 0x0005 # ENQUIRY
+0x06 0x0006 # ACKNOWLEDGE
+0x07 0x0007 # BELL
+0x08 0x0008 # BACKSPACE
+0x09 0x0009 # HORIZONTAL TABULATION
+0x0A 0x000A # LINE FEED
+0x0B 0x000B # VERTICAL TABULATION
+0x0C 0x000C # FORM FEED
+0x0D 0x000D # CARRIAGE RETURN
+0x0E 0x000E # SHIFT OUT
+0x0F 0x000F # SHIFT IN
+0x10 0x0010 # DATA LINK ESCAPE
+0x11 0x0011 # DEVICE CONTROL ONE
+0x12 0x0012 # DEVICE CONTROL TWO
+0x13 0x0013 # DEVICE CONTROL THREE
+0x14 0x0014 # DEVICE CONTROL FOUR
+0x15 0x0015 # NEGATIVE ACKNOWLEDGE
+0x16 0x0016 # SYNCHRONOUS IDLE
+0x17 0x0017 # END OF TRANSMISSION BLOCK
+0x18 0x0018 # CANCEL
+0x19 0x0019 # END OF MEDIUM
+0x1A 0x001A # SUBSTITUTE
+0x1B 0x001B # ESCAPE
+0x1C 0x001C # FILE SEPARATOR
+0x1D 0x001D # GROUP SEPARATOR
+0x1E 0x001E # RECORD SEPARATOR
+0x1F 0x001F # UNIT SEPARATOR
+0x20 0x0020 # SPACE
+0x21 0x0021 # EXCLAMATION MARK
+0x22 0x0022 # QUOTATION MARK
+0x23 0x0023 # NUMBER SIGN
+0x24 0x0024 # DOLLAR SIGN
+0x25 0x0025 # PERCENT SIGN
+0x26 0x0026 # AMPERSAND
+0x27 0x0027 # APOSTROPHE
+0x28 0x0028 # LEFT PARENTHESIS
+0x29 0x0029 # RIGHT PARENTHESIS
+0x2A 0x002A # ASTERISK
+0x2B 0x002B # PLUS SIGN
+0x2C 0x002C # COMMA
+0x2D 0x002D # HYPHEN-MINUS
+0x2E 0x002E # FULL STOP
+0x2F 0x002F # SOLIDUS
+0x30 0x0030 # DIGIT ZERO
+0x31 0x0031 # DIGIT ONE
+0x32 0x0032 # DIGIT TWO
+0x33 0x0033 # DIGIT THREE
+0x34 0x0034 # DIGIT FOUR
+0x35 0x0035 # DIGIT FIVE
+0x36 0x0036 # DIGIT SIX
+0x37 0x0037 # DIGIT SEVEN
+0x38 0x0038 # DIGIT EIGHT
+0x39 0x0039 # DIGIT NINE
+0x3A 0x003A # COLON
+0x3B 0x003B # SEMICOLON
+0x3C 0x003C # LESS-THAN SIGN
+0x3D 0x003D # EQUALS SIGN
+0x3E 0x003E # GREATER-THAN SIGN
+0x3F 0x003F # QUESTION MARK
+0x40 0x0040 # COMMERCIAL AT
+0x41 0x0041 # LATIN CAPITAL LETTER A
+0x42 0x0042 # LATIN CAPITAL LETTER B
+0x43 0x0043 # LATIN CAPITAL LETTER C
+0x44 0x0044 # LATIN CAPITAL LETTER D
+0x45 0x0045 # LATIN CAPITAL LETTER E
+0x46 0x0046 # LATIN CAPITAL LETTER F
+0x47 0x0047 # LATIN CAPITAL LETTER G
+0x48 0x0048 # LATIN CAPITAL LETTER H
+0x49 0x0049 # LATIN CAPITAL LETTER I
+0x4A 0x004A # LATIN CAPITAL LETTER J
+0x4B 0x004B # LATIN CAPITAL LETTER K
+0x4C 0x004C # LATIN CAPITAL LETTER L
+0x4D 0x004D # LATIN CAPITAL LETTER M
+0x4E 0x004E # LATIN CAPITAL LETTER N
+0x4F 0x004F # LATIN CAPITAL LETTER O
+0x50 0x0050 # LATIN CAPITAL LETTER P
+0x51 0x0051 # LATIN CAPITAL LETTER Q
+0x52 0x0052 # LATIN CAPITAL LETTER R
+0x53 0x0053 # LATIN CAPITAL LETTER S
+0x54 0x0054 # LATIN CAPITAL LETTER T
+0x55 0x0055 # LATIN CAPITAL LETTER U
+0x56 0x0056 # LATIN CAPITAL LETTER V
+0x57 0x0057 # LATIN CAPITAL LETTER W
+0x58 0x0058 # LATIN CAPITAL LETTER X
+0x59 0x0059 # LATIN CAPITAL LETTER Y
+0x5A 0x005A # LATIN CAPITAL LETTER Z
+0x5B 0x005B # LEFT SQUARE BRACKET
+0x5C 0x005C # REVERSE SOLIDUS
+0x5D 0x005D # RIGHT SQUARE BRACKET
+0x5E 0x005E # CIRCUMFLEX ACCENT
+0x5F 0x005F # LOW LINE
+0x60 0x0060 # GRAVE ACCENT
+0x61 0x0061 # LATIN SMALL LETTER A
+0x62 0x0062 # LATIN SMALL LETTER B
+0x63 0x0063 # LATIN SMALL LETTER C
+0x64 0x0064 # LATIN SMALL LETTER D
+0x65 0x0065 # LATIN SMALL LETTER E
+0x66 0x0066 # LATIN SMALL LETTER F
+0x67 0x0067 # LATIN SMALL LETTER G
+0x68 0x0068 # LATIN SMALL LETTER H
+0x69 0x0069 # LATIN SMALL LETTER I
+0x6A 0x006A # LATIN SMALL LETTER J
+0x6B 0x006B # LATIN SMALL LETTER K
+0x6C 0x006C # LATIN SMALL LETTER L
+0x6D 0x006D # LATIN SMALL LETTER M
+0x6E 0x006E # LATIN SMALL LETTER N
+0x6F 0x006F # LATIN SMALL LETTER O
+0x70 0x0070 # LATIN SMALL LETTER P
+0x71 0x0071 # LATIN SMALL LETTER Q
+0x72 0x0072 # LATIN SMALL LETTER R
+0x73 0x0073 # LATIN SMALL LETTER S
+0x74 0x0074 # LATIN SMALL LETTER T
+0x75 0x0075 # LATIN SMALL LETTER U
+0x76 0x0076 # LATIN SMALL LETTER V
+0x77 0x0077 # LATIN SMALL LETTER W
+0x78 0x0078 # LATIN SMALL LETTER X
+0x79 0x0079 # LATIN SMALL LETTER Y
+0x7A 0x007A # LATIN SMALL LETTER Z
+0x7B 0x007B # LEFT CURLY BRACKET
+0x7C 0x007C # VERTICAL LINE
+0x7D 0x007D # RIGHT CURLY BRACKET
+0x7E 0x007E # TILDE
+0x7F 0x007F # DELETE
+0x80 0x0080 # <control>
+0x81 0x0081 # <control>
+0x82 0x0082 # <control>
+0x83 0x0083 # <control>
+0x84 0x0084 # <control>
+0x85 0x0085 # <control>
+0x86 0x0086 # <control>
+0x87 0x0087 # <control>
+0x88 0x0088 # <control>
+0x89 0x0089 # <control>
+0x8A 0x008A # <control>
+0x8B 0x008B # <control>
+0x8C 0x008C # <control>
+0x8D 0x008D # <control>
+0x8E 0x008E # <control>
+0x8F 0x008F # <control>
+0x90 0x0090 # <control>
+0x91 0x0091 # <control>
+0x92 0x0092 # <control>
+0x93 0x0093 # <control>
+0x94 0x0094 # <control>
+0x95 0x0095 # <control>
+0x96 0x0096 # <control>
+0x97 0x0097 # <control>
+0x98 0x0098 # <control>
+0x99 0x0099 # <control>
+0x9A 0x009A # <control>
+0x9B 0x009B # <control>
+0x9C 0x009C # <control>
+0x9D 0x009D # <control>
+0x9E 0x009E # <control>
+0x9F 0x009F # <control>
+0xA0 0x00A0 # NO-BREAK SPACE
+0xA1 0x0401 # CYRILLIC CAPITAL LETTER IO
+0xA2 0x0402 # CYRILLIC CAPITAL LETTER DJE
+0xA3 0x0403 # CYRILLIC CAPITAL LETTER GJE
+0xA4 0x0404 # CYRILLIC CAPITAL LETTER UKRAINIAN IE
+0xA5 0x0405 # CYRILLIC CAPITAL LETTER DZE
+0xA6 0x0406 # CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+0xA7 0x0407 # CYRILLIC CAPITAL LETTER YI
+0xA8 0x0408 # CYRILLIC CAPITAL LETTER JE
+0xA9 0x0409 # CYRILLIC CAPITAL LETTER LJE
+0xAA 0x040A # CYRILLIC CAPITAL LETTER NJE
+0xAB 0x040B # CYRILLIC CAPITAL LETTER TSHE
+0xAC 0x040C # CYRILLIC CAPITAL LETTER KJE
+0xAD 0x00AD # SOFT HYPHEN
+0xAE 0x040E # CYRILLIC CAPITAL LETTER SHORT U
+0xAF 0x040F # CYRILLIC CAPITAL LETTER DZHE
+0xB0 0x0410 # CYRILLIC CAPITAL LETTER A
+0xB1 0x0411 # CYRILLIC CAPITAL LETTER BE
+0xB2 0x0412 # CYRILLIC CAPITAL LETTER VE
+0xB3 0x0413 # CYRILLIC CAPITAL LETTER GHE
+0xB4 0x0414 # CYRILLIC CAPITAL LETTER DE
+0xB5 0x0415 # CYRILLIC CAPITAL LETTER IE
+0xB6 0x0416 # CYRILLIC CAPITAL LETTER ZHE
+0xB7 0x0417 # CYRILLIC CAPITAL LETTER ZE
+0xB8 0x0418 # CYRILLIC CAPITAL LETTER I
+0xB9 0x0419 # CYRILLIC CAPITAL LETTER SHORT I
+0xBA 0x041A # CYRILLIC CAPITAL LETTER KA
+0xBB 0x041B # CYRILLIC CAPITAL LETTER EL
+0xBC 0x041C # CYRILLIC CAPITAL LETTER EM
+0xBD 0x041D # CYRILLIC CAPITAL LETTER EN
+0xBE 0x041E # CYRILLIC CAPITAL LETTER O
+0xBF 0x041F # CYRILLIC CAPITAL LETTER PE
+0xC0 0x0420 # CYRILLIC CAPITAL LETTER ER
+0xC1 0x0421 # CYRILLIC CAPITAL LETTER ES
+0xC2 0x0422 # CYRILLIC CAPITAL LETTER TE
+0xC3 0x0423 # CYRILLIC CAPITAL LETTER U
+0xC4 0x0424 # CYRILLIC CAPITAL LETTER EF
+0xC5 0x0425 # CYRILLIC CAPITAL LETTER HA
+0xC6 0x0426 # CYRILLIC CAPITAL LETTER TSE
+0xC7 0x0427 # CYRILLIC CAPITAL LETTER CHE
+0xC8 0x0428 # CYRILLIC CAPITAL LETTER SHA
+0xC9 0x0429 # CYRILLIC CAPITAL LETTER SHCHA
+0xCA 0x042A # CYRILLIC CAPITAL LETTER HARD SIGN
+0xCB 0x042B # CYRILLIC CAPITAL LETTER YERU
+0xCC 0x042C # CYRILLIC CAPITAL LETTER SOFT SIGN
+0xCD 0x042D # CYRILLIC CAPITAL LETTER E
+0xCE 0x042E # CYRILLIC CAPITAL LETTER YU
+0xCF 0x042F # CYRILLIC CAPITAL LETTER YA
+0xD0 0x0430 # CYRILLIC SMALL LETTER A
+0xD1 0x0431 # CYRILLIC SMALL LETTER BE
+0xD2 0x0432 # CYRILLIC SMALL LETTER VE
+0xD3 0x0433 # CYRILLIC SMALL LETTER GHE
+0xD4 0x0434 # CYRILLIC SMALL LETTER DE
+0xD5 0x0435 # CYRILLIC SMALL LETTER IE
+0xD6 0x0436 # CYRILLIC SMALL LETTER ZHE
+0xD7 0x0437 # CYRILLIC SMALL LETTER ZE
+0xD8 0x0438 # CYRILLIC SMALL LETTER I
+0xD9 0x0439 # CYRILLIC SMALL LETTER SHORT I
+0xDA 0x043A # CYRILLIC SMALL LETTER KA
+0xDB 0x043B # CYRILLIC SMALL LETTER EL
+0xDC 0x043C # CYRILLIC SMALL LETTER EM
+0xDD 0x043D # CYRILLIC SMALL LETTER EN
+0xDE 0x043E # CYRILLIC SMALL LETTER O
+0xDF 0x043F # CYRILLIC SMALL LETTER PE
+0xE0 0x0440 # CYRILLIC SMALL LETTER ER
+0xE1 0x0441 # CYRILLIC SMALL LETTER ES
+0xE2 0x0442 # CYRILLIC SMALL LETTER TE
+0xE3 0x0443 # CYRILLIC SMALL LETTER U
+0xE4 0x0444 # CYRILLIC SMALL LETTER EF
+0xE5 0x0445 # CYRILLIC SMALL LETTER HA
+0xE6 0x0446 # CYRILLIC SMALL LETTER TSE
+0xE7 0x0447 # CYRILLIC SMALL LETTER CHE
+0xE8 0x0448 # CYRILLIC SMALL LETTER SHA
+0xE9 0x0449 # CYRILLIC SMALL LETTER SHCHA
+0xEA 0x044A # CYRILLIC SMALL LETTER HARD SIGN
+0xEB 0x044B # CYRILLIC SMALL LETTER YERU
+0xEC 0x044C # CYRILLIC SMALL LETTER SOFT SIGN
+0xED 0x044D # CYRILLIC SMALL LETTER E
+0xEE 0x044E # CYRILLIC SMALL LETTER YU
+0xEF 0x044F # CYRILLIC SMALL LETTER YA
+0xF0 0x2116 # NUMERO SIGN
+0xF1 0x0451 # CYRILLIC SMALL LETTER IO
+0xF2 0x0452 # CYRILLIC SMALL LETTER DJE
+0xF3 0x0453 # CYRILLIC SMALL LETTER GJE
+0xF4 0x0454 # CYRILLIC SMALL LETTER UKRAINIAN IE
+0xF5 0x0455 # CYRILLIC SMALL LETTER DZE
+0xF6 0x0456 # CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+0xF7 0x0457 # CYRILLIC SMALL LETTER YI
+0xF8 0x0458 # CYRILLIC SMALL LETTER JE
+0xF9 0x0459 # CYRILLIC SMALL LETTER LJE
+0xFA 0x045A # CYRILLIC SMALL LETTER NJE
+0xFB 0x045B # CYRILLIC SMALL LETTER TSHE
+0xFC 0x045C # CYRILLIC SMALL LETTER KJE
+0xFD 0x00A7 # SECTION SIGN
+0xFE 0x045E # CYRILLIC SMALL LETTER SHORT U
+0xFF 0x045F # CYRILLIC SMALL LETTER DZHE
diff --git a/ext/standard/html_tables/mappings/CP1251.TXT b/ext/standard/html_tables/mappings/CP1251.TXT
new file mode 100644
index 0000000000..4d9b3558ac
--- /dev/null
+++ b/ext/standard/html_tables/mappings/CP1251.TXT
@@ -0,0 +1,274 @@
+#
+# Name: cp1251 to Unicode table
+# Unicode version: 2.0
+# Table version: 2.01
+# Table format: Format A
+# Date: 04/15/98
+#
+# Contact: Shawn.Steele@microsoft.com
+#
+# General notes: none
+#
+# Format: Three tab-separated columns
+# Column #1 is the cp1251 code (in hex)
+# Column #2 is the Unicode (in hex as 0xXXXX)
+# Column #3 is the Unicode name (follows a comment sign, '#')
+#
+# The entries are in cp1251 order
+#
+0x00 0x0000 #NULL
+0x01 0x0001 #START OF HEADING
+0x02 0x0002 #START OF TEXT
+0x03 0x0003 #END OF TEXT
+0x04 0x0004 #END OF TRANSMISSION
+0x05 0x0005 #ENQUIRY
+0x06 0x0006 #ACKNOWLEDGE
+0x07 0x0007 #BELL
+0x08 0x0008 #BACKSPACE
+0x09 0x0009 #HORIZONTAL TABULATION
+0x0A 0x000A #LINE FEED
+0x0B 0x000B #VERTICAL TABULATION
+0x0C 0x000C #FORM FEED
+0x0D 0x000D #CARRIAGE RETURN
+0x0E 0x000E #SHIFT OUT
+0x0F 0x000F #SHIFT IN
+0x10 0x0010 #DATA LINK ESCAPE
+0x11 0x0011 #DEVICE CONTROL ONE
+0x12 0x0012 #DEVICE CONTROL TWO
+0x13 0x0013 #DEVICE CONTROL THREE
+0x14 0x0014 #DEVICE CONTROL FOUR
+0x15 0x0015 #NEGATIVE ACKNOWLEDGE
+0x16 0x0016 #SYNCHRONOUS IDLE
+0x17 0x0017 #END OF TRANSMISSION BLOCK
+0x18 0x0018 #CANCEL
+0x19 0x0019 #END OF MEDIUM
+0x1A 0x001A #SUBSTITUTE
+0x1B 0x001B #ESCAPE
+0x1C 0x001C #FILE SEPARATOR
+0x1D 0x001D #GROUP SEPARATOR
+0x1E 0x001E #RECORD SEPARATOR
+0x1F 0x001F #UNIT SEPARATOR
+0x20 0x0020 #SPACE
+0x21 0x0021 #EXCLAMATION MARK
+0x22 0x0022 #QUOTATION MARK
+0x23 0x0023 #NUMBER SIGN
+0x24 0x0024 #DOLLAR SIGN
+0x25 0x0025 #PERCENT SIGN
+0x26 0x0026 #AMPERSAND
+0x27 0x0027 #APOSTROPHE
+0x28 0x0028 #LEFT PARENTHESIS
+0x29 0x0029 #RIGHT PARENTHESIS
+0x2A 0x002A #ASTERISK
+0x2B 0x002B #PLUS SIGN
+0x2C 0x002C #COMMA
+0x2D 0x002D #HYPHEN-MINUS
+0x2E 0x002E #FULL STOP
+0x2F 0x002F #SOLIDUS
+0x30 0x0030 #DIGIT ZERO
+0x31 0x0031 #DIGIT ONE
+0x32 0x0032 #DIGIT TWO
+0x33 0x0033 #DIGIT THREE
+0x34 0x0034 #DIGIT FOUR
+0x35 0x0035 #DIGIT FIVE
+0x36 0x0036 #DIGIT SIX
+0x37 0x0037 #DIGIT SEVEN
+0x38 0x0038 #DIGIT EIGHT
+0x39 0x0039 #DIGIT NINE
+0x3A 0x003A #COLON
+0x3B 0x003B #SEMICOLON
+0x3C 0x003C #LESS-THAN SIGN
+0x3D 0x003D #EQUALS SIGN
+0x3E 0x003E #GREATER-THAN SIGN
+0x3F 0x003F #QUESTION MARK
+0x40 0x0040 #COMMERCIAL AT
+0x41 0x0041 #LATIN CAPITAL LETTER A
+0x42 0x0042 #LATIN CAPITAL LETTER B
+0x43 0x0043 #LATIN CAPITAL LETTER C
+0x44 0x0044 #LATIN CAPITAL LETTER D
+0x45 0x0045 #LATIN CAPITAL LETTER E
+0x46 0x0046 #LATIN CAPITAL LETTER F
+0x47 0x0047 #LATIN CAPITAL LETTER G
+0x48 0x0048 #LATIN CAPITAL LETTER H
+0x49 0x0049 #LATIN CAPITAL LETTER I
+0x4A 0x004A #LATIN CAPITAL LETTER J
+0x4B 0x004B #LATIN CAPITAL LETTER K
+0x4C 0x004C #LATIN CAPITAL LETTER L
+0x4D 0x004D #LATIN CAPITAL LETTER M
+0x4E 0x004E #LATIN CAPITAL LETTER N
+0x4F 0x004F #LATIN CAPITAL LETTER O
+0x50 0x0050 #LATIN CAPITAL LETTER P
+0x51 0x0051 #LATIN CAPITAL LETTER Q
+0x52 0x0052 #LATIN CAPITAL LETTER R
+0x53 0x0053 #LATIN CAPITAL LETTER S
+0x54 0x0054 #LATIN CAPITAL LETTER T
+0x55 0x0055 #LATIN CAPITAL LETTER U
+0x56 0x0056 #LATIN CAPITAL LETTER V
+0x57 0x0057 #LATIN CAPITAL LETTER W
+0x58 0x0058 #LATIN CAPITAL LETTER X
+0x59 0x0059 #LATIN CAPITAL LETTER Y
+0x5A 0x005A #LATIN CAPITAL LETTER Z
+0x5B 0x005B #LEFT SQUARE BRACKET
+0x5C 0x005C #REVERSE SOLIDUS
+0x5D 0x005D #RIGHT SQUARE BRACKET
+0x5E 0x005E #CIRCUMFLEX ACCENT
+0x5F 0x005F #LOW LINE
+0x60 0x0060 #GRAVE ACCENT
+0x61 0x0061 #LATIN SMALL LETTER A
+0x62 0x0062 #LATIN SMALL LETTER B
+0x63 0x0063 #LATIN SMALL LETTER C
+0x64 0x0064 #LATIN SMALL LETTER D
+0x65 0x0065 #LATIN SMALL LETTER E
+0x66 0x0066 #LATIN SMALL LETTER F
+0x67 0x0067 #LATIN SMALL LETTER G
+0x68 0x0068 #LATIN SMALL LETTER H
+0x69 0x0069 #LATIN SMALL LETTER I
+0x6A 0x006A #LATIN SMALL LETTER J
+0x6B 0x006B #LATIN SMALL LETTER K
+0x6C 0x006C #LATIN SMALL LETTER L
+0x6D 0x006D #LATIN SMALL LETTER M
+0x6E 0x006E #LATIN SMALL LETTER N
+0x6F 0x006F #LATIN SMALL LETTER O
+0x70 0x0070 #LATIN SMALL LETTER P
+0x71 0x0071 #LATIN SMALL LETTER Q
+0x72 0x0072 #LATIN SMALL LETTER R
+0x73 0x0073 #LATIN SMALL LETTER S
+0x74 0x0074 #LATIN SMALL LETTER T
+0x75 0x0075 #LATIN SMALL LETTER U
+0x76 0x0076 #LATIN SMALL LETTER V
+0x77 0x0077 #LATIN SMALL LETTER W
+0x78 0x0078 #LATIN SMALL LETTER X
+0x79 0x0079 #LATIN SMALL LETTER Y
+0x7A 0x007A #LATIN SMALL LETTER Z
+0x7B 0x007B #LEFT CURLY BRACKET
+0x7C 0x007C #VERTICAL LINE
+0x7D 0x007D #RIGHT CURLY BRACKET
+0x7E 0x007E #TILDE
+0x7F 0x007F #DELETE
+0x80 0x0402 #CYRILLIC CAPITAL LETTER DJE
+0x81 0x0403 #CYRILLIC CAPITAL LETTER GJE
+0x82 0x201A #SINGLE LOW-9 QUOTATION MARK
+0x83 0x0453 #CYRILLIC SMALL LETTER GJE
+0x84 0x201E #DOUBLE LOW-9 QUOTATION MARK
+0x85 0x2026 #HORIZONTAL ELLIPSIS
+0x86 0x2020 #DAGGER
+0x87 0x2021 #DOUBLE DAGGER
+0x88 0x20AC #EURO SIGN
+0x89 0x2030 #PER MILLE SIGN
+0x8A 0x0409 #CYRILLIC CAPITAL LETTER LJE
+0x8B 0x2039 #SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+0x8C 0x040A #CYRILLIC CAPITAL LETTER NJE
+0x8D 0x040C #CYRILLIC CAPITAL LETTER KJE
+0x8E 0x040B #CYRILLIC CAPITAL LETTER TSHE
+0x8F 0x040F #CYRILLIC CAPITAL LETTER DZHE
+0x90 0x0452 #CYRILLIC SMALL LETTER DJE
+0x91 0x2018 #LEFT SINGLE QUOTATION MARK
+0x92 0x2019 #RIGHT SINGLE QUOTATION MARK
+0x93 0x201C #LEFT DOUBLE QUOTATION MARK
+0x94 0x201D #RIGHT DOUBLE QUOTATION MARK
+0x95 0x2022 #BULLET
+0x96 0x2013 #EN DASH
+0x97 0x2014 #EM DASH
+0x98 #UNDEFINED
+0x99 0x2122 #TRADE MARK SIGN
+0x9A 0x0459 #CYRILLIC SMALL LETTER LJE
+0x9B 0x203A #SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+0x9C 0x045A #CYRILLIC SMALL LETTER NJE
+0x9D 0x045C #CYRILLIC SMALL LETTER KJE
+0x9E 0x045B #CYRILLIC SMALL LETTER TSHE
+0x9F 0x045F #CYRILLIC SMALL LETTER DZHE
+0xA0 0x00A0 #NO-BREAK SPACE
+0xA1 0x040E #CYRILLIC CAPITAL LETTER SHORT U
+0xA2 0x045E #CYRILLIC SMALL LETTER SHORT U
+0xA3 0x0408 #CYRILLIC CAPITAL LETTER JE
+0xA4 0x00A4 #CURRENCY SIGN
+0xA5 0x0490 #CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+0xA6 0x00A6 #BROKEN BAR
+0xA7 0x00A7 #SECTION SIGN
+0xA8 0x0401 #CYRILLIC CAPITAL LETTER IO
+0xA9 0x00A9 #COPYRIGHT SIGN
+0xAA 0x0404 #CYRILLIC CAPITAL LETTER UKRAINIAN IE
+0xAB 0x00AB #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+0xAC 0x00AC #NOT SIGN
+0xAD 0x00AD #SOFT HYPHEN
+0xAE 0x00AE #REGISTERED SIGN
+0xAF 0x0407 #CYRILLIC CAPITAL LETTER YI
+0xB0 0x00B0 #DEGREE SIGN
+0xB1 0x00B1 #PLUS-MINUS SIGN
+0xB2 0x0406 #CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+0xB3 0x0456 #CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+0xB4 0x0491 #CYRILLIC SMALL LETTER GHE WITH UPTURN
+0xB5 0x00B5 #MICRO SIGN
+0xB6 0x00B6 #PILCROW SIGN
+0xB7 0x00B7 #MIDDLE DOT
+0xB8 0x0451 #CYRILLIC SMALL LETTER IO
+0xB9 0x2116 #NUMERO SIGN
+0xBA 0x0454 #CYRILLIC SMALL LETTER UKRAINIAN IE
+0xBB 0x00BB #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+0xBC 0x0458 #CYRILLIC SMALL LETTER JE
+0xBD 0x0405 #CYRILLIC CAPITAL LETTER DZE
+0xBE 0x0455 #CYRILLIC SMALL LETTER DZE
+0xBF 0x0457 #CYRILLIC SMALL LETTER YI
+0xC0 0x0410 #CYRILLIC CAPITAL LETTER A
+0xC1 0x0411 #CYRILLIC CAPITAL LETTER BE
+0xC2 0x0412 #CYRILLIC CAPITAL LETTER VE
+0xC3 0x0413 #CYRILLIC CAPITAL LETTER GHE
+0xC4 0x0414 #CYRILLIC CAPITAL LETTER DE
+0xC5 0x0415 #CYRILLIC CAPITAL LETTER IE
+0xC6 0x0416 #CYRILLIC CAPITAL LETTER ZHE
+0xC7 0x0417 #CYRILLIC CAPITAL LETTER ZE
+0xC8 0x0418 #CYRILLIC CAPITAL LETTER I
+0xC9 0x0419 #CYRILLIC CAPITAL LETTER SHORT I
+0xCA 0x041A #CYRILLIC CAPITAL LETTER KA
+0xCB 0x041B #CYRILLIC CAPITAL LETTER EL
+0xCC 0x041C #CYRILLIC CAPITAL LETTER EM
+0xCD 0x041D #CYRILLIC CAPITAL LETTER EN
+0xCE 0x041E #CYRILLIC CAPITAL LETTER O
+0xCF 0x041F #CYRILLIC CAPITAL LETTER PE
+0xD0 0x0420 #CYRILLIC CAPITAL LETTER ER
+0xD1 0x0421 #CYRILLIC CAPITAL LETTER ES
+0xD2 0x0422 #CYRILLIC CAPITAL LETTER TE
+0xD3 0x0423 #CYRILLIC CAPITAL LETTER U
+0xD4 0x0424 #CYRILLIC CAPITAL LETTER EF
+0xD5 0x0425 #CYRILLIC CAPITAL LETTER HA
+0xD6 0x0426 #CYRILLIC CAPITAL LETTER TSE
+0xD7 0x0427 #CYRILLIC CAPITAL LETTER CHE
+0xD8 0x0428 #CYRILLIC CAPITAL LETTER SHA
+0xD9 0x0429 #CYRILLIC CAPITAL LETTER SHCHA
+0xDA 0x042A #CYRILLIC CAPITAL LETTER HARD SIGN
+0xDB 0x042B #CYRILLIC CAPITAL LETTER YERU
+0xDC 0x042C #CYRILLIC CAPITAL LETTER SOFT SIGN
+0xDD 0x042D #CYRILLIC CAPITAL LETTER E
+0xDE 0x042E #CYRILLIC CAPITAL LETTER YU
+0xDF 0x042F #CYRILLIC CAPITAL LETTER YA
+0xE0 0x0430 #CYRILLIC SMALL LETTER A
+0xE1 0x0431 #CYRILLIC SMALL LETTER BE
+0xE2 0x0432 #CYRILLIC SMALL LETTER VE
+0xE3 0x0433 #CYRILLIC SMALL LETTER GHE
+0xE4 0x0434 #CYRILLIC SMALL LETTER DE
+0xE5 0x0435 #CYRILLIC SMALL LETTER IE
+0xE6 0x0436 #CYRILLIC SMALL LETTER ZHE
+0xE7 0x0437 #CYRILLIC SMALL LETTER ZE
+0xE8 0x0438 #CYRILLIC SMALL LETTER I
+0xE9 0x0439 #CYRILLIC SMALL LETTER SHORT I
+0xEA 0x043A #CYRILLIC SMALL LETTER KA
+0xEB 0x043B #CYRILLIC SMALL LETTER EL
+0xEC 0x043C #CYRILLIC SMALL LETTER EM
+0xED 0x043D #CYRILLIC SMALL LETTER EN
+0xEE 0x043E #CYRILLIC SMALL LETTER O
+0xEF 0x043F #CYRILLIC SMALL LETTER PE
+0xF0 0x0440 #CYRILLIC SMALL LETTER ER
+0xF1 0x0441 #CYRILLIC SMALL LETTER ES
+0xF2 0x0442 #CYRILLIC SMALL LETTER TE
+0xF3 0x0443 #CYRILLIC SMALL LETTER U
+0xF4 0x0444 #CYRILLIC SMALL LETTER EF
+0xF5 0x0445 #CYRILLIC SMALL LETTER HA
+0xF6 0x0446 #CYRILLIC SMALL LETTER TSE
+0xF7 0x0447 #CYRILLIC SMALL LETTER CHE
+0xF8 0x0448 #CYRILLIC SMALL LETTER SHA
+0xF9 0x0449 #CYRILLIC SMALL LETTER SHCHA
+0xFA 0x044A #CYRILLIC SMALL LETTER HARD SIGN
+0xFB 0x044B #CYRILLIC SMALL LETTER YERU
+0xFC 0x044C #CYRILLIC SMALL LETTER SOFT SIGN
+0xFD 0x044D #CYRILLIC SMALL LETTER E
+0xFE 0x044E #CYRILLIC SMALL LETTER YU
+0xFF 0x044F #CYRILLIC SMALL LETTER YA
diff --git a/ext/standard/html_tables/mappings/CP1252.TXT b/ext/standard/html_tables/mappings/CP1252.TXT
new file mode 100644
index 0000000000..8ff4b204b7
--- /dev/null
+++ b/ext/standard/html_tables/mappings/CP1252.TXT
@@ -0,0 +1,274 @@
+#
+# Name: cp1252 to Unicode table
+# Unicode version: 2.0
+# Table version: 2.01
+# Table format: Format A
+# Date: 04/15/98
+#
+# Contact: Shawn.Steele@microsoft.com
+#
+# General notes: none
+#
+# Format: Three tab-separated columns
+# Column #1 is the cp1252 code (in hex)
+# Column #2 is the Unicode (in hex as 0xXXXX)
+# Column #3 is the Unicode name (follows a comment sign, '#')
+#
+# The entries are in cp1252 order
+#
+0x00 0x0000 #NULL
+0x01 0x0001 #START OF HEADING
+0x02 0x0002 #START OF TEXT
+0x03 0x0003 #END OF TEXT
+0x04 0x0004 #END OF TRANSMISSION
+0x05 0x0005 #ENQUIRY
+0x06 0x0006 #ACKNOWLEDGE
+0x07 0x0007 #BELL
+0x08 0x0008 #BACKSPACE
+0x09 0x0009 #HORIZONTAL TABULATION
+0x0A 0x000A #LINE FEED
+0x0B 0x000B #VERTICAL TABULATION
+0x0C 0x000C #FORM FEED
+0x0D 0x000D #CARRIAGE RETURN
+0x0E 0x000E #SHIFT OUT
+0x0F 0x000F #SHIFT IN
+0x10 0x0010 #DATA LINK ESCAPE
+0x11 0x0011 #DEVICE CONTROL ONE
+0x12 0x0012 #DEVICE CONTROL TWO
+0x13 0x0013 #DEVICE CONTROL THREE
+0x14 0x0014 #DEVICE CONTROL FOUR
+0x15 0x0015 #NEGATIVE ACKNOWLEDGE
+0x16 0x0016 #SYNCHRONOUS IDLE
+0x17 0x0017 #END OF TRANSMISSION BLOCK
+0x18 0x0018 #CANCEL
+0x19 0x0019 #END OF MEDIUM
+0x1A 0x001A #SUBSTITUTE
+0x1B 0x001B #ESCAPE
+0x1C 0x001C #FILE SEPARATOR
+0x1D 0x001D #GROUP SEPARATOR
+0x1E 0x001E #RECORD SEPARATOR
+0x1F 0x001F #UNIT SEPARATOR
+0x20 0x0020 #SPACE
+0x21 0x0021 #EXCLAMATION MARK
+0x22 0x0022 #QUOTATION MARK
+0x23 0x0023 #NUMBER SIGN
+0x24 0x0024 #DOLLAR SIGN
+0x25 0x0025 #PERCENT SIGN
+0x26 0x0026 #AMPERSAND
+0x27 0x0027 #APOSTROPHE
+0x28 0x0028 #LEFT PARENTHESIS
+0x29 0x0029 #RIGHT PARENTHESIS
+0x2A 0x002A #ASTERISK
+0x2B 0x002B #PLUS SIGN
+0x2C 0x002C #COMMA
+0x2D 0x002D #HYPHEN-MINUS
+0x2E 0x002E #FULL STOP
+0x2F 0x002F #SOLIDUS
+0x30 0x0030 #DIGIT ZERO
+0x31 0x0031 #DIGIT ONE
+0x32 0x0032 #DIGIT TWO
+0x33 0x0033 #DIGIT THREE
+0x34 0x0034 #DIGIT FOUR
+0x35 0x0035 #DIGIT FIVE
+0x36 0x0036 #DIGIT SIX
+0x37 0x0037 #DIGIT SEVEN
+0x38 0x0038 #DIGIT EIGHT
+0x39 0x0039 #DIGIT NINE
+0x3A 0x003A #COLON
+0x3B 0x003B #SEMICOLON
+0x3C 0x003C #LESS-THAN SIGN
+0x3D 0x003D #EQUALS SIGN
+0x3E 0x003E #GREATER-THAN SIGN
+0x3F 0x003F #QUESTION MARK
+0x40 0x0040 #COMMERCIAL AT
+0x41 0x0041 #LATIN CAPITAL LETTER A
+0x42 0x0042 #LATIN CAPITAL LETTER B
+0x43 0x0043 #LATIN CAPITAL LETTER C
+0x44 0x0044 #LATIN CAPITAL LETTER D
+0x45 0x0045 #LATIN CAPITAL LETTER E
+0x46 0x0046 #LATIN CAPITAL LETTER F
+0x47 0x0047 #LATIN CAPITAL LETTER G
+0x48 0x0048 #LATIN CAPITAL LETTER H
+0x49 0x0049 #LATIN CAPITAL LETTER I
+0x4A 0x004A #LATIN CAPITAL LETTER J
+0x4B 0x004B #LATIN CAPITAL LETTER K
+0x4C 0x004C #LATIN CAPITAL LETTER L
+0x4D 0x004D #LATIN CAPITAL LETTER M
+0x4E 0x004E #LATIN CAPITAL LETTER N
+0x4F 0x004F #LATIN CAPITAL LETTER O
+0x50 0x0050 #LATIN CAPITAL LETTER P
+0x51 0x0051 #LATIN CAPITAL LETTER Q
+0x52 0x0052 #LATIN CAPITAL LETTER R
+0x53 0x0053 #LATIN CAPITAL LETTER S
+0x54 0x0054 #LATIN CAPITAL LETTER T
+0x55 0x0055 #LATIN CAPITAL LETTER U
+0x56 0x0056 #LATIN CAPITAL LETTER V
+0x57 0x0057 #LATIN CAPITAL LETTER W
+0x58 0x0058 #LATIN CAPITAL LETTER X
+0x59 0x0059 #LATIN CAPITAL LETTER Y
+0x5A 0x005A #LATIN CAPITAL LETTER Z
+0x5B 0x005B #LEFT SQUARE BRACKET
+0x5C 0x005C #REVERSE SOLIDUS
+0x5D 0x005D #RIGHT SQUARE BRACKET
+0x5E 0x005E #CIRCUMFLEX ACCENT
+0x5F 0x005F #LOW LINE
+0x60 0x0060 #GRAVE ACCENT
+0x61 0x0061 #LATIN SMALL LETTER A
+0x62 0x0062 #LATIN SMALL LETTER B
+0x63 0x0063 #LATIN SMALL LETTER C
+0x64 0x0064 #LATIN SMALL LETTER D
+0x65 0x0065 #LATIN SMALL LETTER E
+0x66 0x0066 #LATIN SMALL LETTER F
+0x67 0x0067 #LATIN SMALL LETTER G
+0x68 0x0068 #LATIN SMALL LETTER H
+0x69 0x0069 #LATIN SMALL LETTER I
+0x6A 0x006A #LATIN SMALL LETTER J
+0x6B 0x006B #LATIN SMALL LETTER K
+0x6C 0x006C #LATIN SMALL LETTER L
+0x6D 0x006D #LATIN SMALL LETTER M
+0x6E 0x006E #LATIN SMALL LETTER N
+0x6F 0x006F #LATIN SMALL LETTER O
+0x70 0x0070 #LATIN SMALL LETTER P
+0x71 0x0071 #LATIN SMALL LETTER Q
+0x72 0x0072 #LATIN SMALL LETTER R
+0x73 0x0073 #LATIN SMALL LETTER S
+0x74 0x0074 #LATIN SMALL LETTER T
+0x75 0x0075 #LATIN SMALL LETTER U
+0x76 0x0076 #LATIN SMALL LETTER V
+0x77 0x0077 #LATIN SMALL LETTER W
+0x78 0x0078 #LATIN SMALL LETTER X
+0x79 0x0079 #LATIN SMALL LETTER Y
+0x7A 0x007A #LATIN SMALL LETTER Z
+0x7B 0x007B #LEFT CURLY BRACKET
+0x7C 0x007C #VERTICAL LINE
+0x7D 0x007D #RIGHT CURLY BRACKET
+0x7E 0x007E #TILDE
+0x7F 0x007F #DELETE
+0x80 0x20AC #EURO SIGN
+0x81 #UNDEFINED
+0x82 0x201A #SINGLE LOW-9 QUOTATION MARK
+0x83 0x0192 #LATIN SMALL LETTER F WITH HOOK
+0x84 0x201E #DOUBLE LOW-9 QUOTATION MARK
+0x85 0x2026 #HORIZONTAL ELLIPSIS
+0x86 0x2020 #DAGGER
+0x87 0x2021 #DOUBLE DAGGER
+0x88 0x02C6 #MODIFIER LETTER CIRCUMFLEX ACCENT
+0x89 0x2030 #PER MILLE SIGN
+0x8A 0x0160 #LATIN CAPITAL LETTER S WITH CARON
+0x8B 0x2039 #SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+0x8C 0x0152 #LATIN CAPITAL LIGATURE OE
+0x8D #UNDEFINED
+0x8E 0x017D #LATIN CAPITAL LETTER Z WITH CARON
+0x8F #UNDEFINED
+0x90 #UNDEFINED
+0x91 0x2018 #LEFT SINGLE QUOTATION MARK
+0x92 0x2019 #RIGHT SINGLE QUOTATION MARK
+0x93 0x201C #LEFT DOUBLE QUOTATION MARK
+0x94 0x201D #RIGHT DOUBLE QUOTATION MARK
+0x95 0x2022 #BULLET
+0x96 0x2013 #EN DASH
+0x97 0x2014 #EM DASH
+0x98 0x02DC #SMALL TILDE
+0x99 0x2122 #TRADE MARK SIGN
+0x9A 0x0161 #LATIN SMALL LETTER S WITH CARON
+0x9B 0x203A #SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+0x9C 0x0153 #LATIN SMALL LIGATURE OE
+0x9D #UNDEFINED
+0x9E 0x017E #LATIN SMALL LETTER Z WITH CARON
+0x9F 0x0178 #LATIN CAPITAL LETTER Y WITH DIAERESIS
+0xA0 0x00A0 #NO-BREAK SPACE
+0xA1 0x00A1 #INVERTED EXCLAMATION MARK
+0xA2 0x00A2 #CENT SIGN
+0xA3 0x00A3 #POUND SIGN
+0xA4 0x00A4 #CURRENCY SIGN
+0xA5 0x00A5 #YEN SIGN
+0xA6 0x00A6 #BROKEN BAR
+0xA7 0x00A7 #SECTION SIGN
+0xA8 0x00A8 #DIAERESIS
+0xA9 0x00A9 #COPYRIGHT SIGN
+0xAA 0x00AA #FEMININE ORDINAL INDICATOR
+0xAB 0x00AB #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+0xAC 0x00AC #NOT SIGN
+0xAD 0x00AD #SOFT HYPHEN
+0xAE 0x00AE #REGISTERED SIGN
+0xAF 0x00AF #MACRON
+0xB0 0x00B0 #DEGREE SIGN
+0xB1 0x00B1 #PLUS-MINUS SIGN
+0xB2 0x00B2 #SUPERSCRIPT TWO
+0xB3 0x00B3 #SUPERSCRIPT THREE
+0xB4 0x00B4 #ACUTE ACCENT
+0xB5 0x00B5 #MICRO SIGN
+0xB6 0x00B6 #PILCROW SIGN
+0xB7 0x00B7 #MIDDLE DOT
+0xB8 0x00B8 #CEDILLA
+0xB9 0x00B9 #SUPERSCRIPT ONE
+0xBA 0x00BA #MASCULINE ORDINAL INDICATOR
+0xBB 0x00BB #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+0xBC 0x00BC #VULGAR FRACTION ONE QUARTER
+0xBD 0x00BD #VULGAR FRACTION ONE HALF
+0xBE 0x00BE #VULGAR FRACTION THREE QUARTERS
+0xBF 0x00BF #INVERTED QUESTION MARK
+0xC0 0x00C0 #LATIN CAPITAL LETTER A WITH GRAVE
+0xC1 0x00C1 #LATIN CAPITAL LETTER A WITH ACUTE
+0xC2 0x00C2 #LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+0xC3 0x00C3 #LATIN CAPITAL LETTER A WITH TILDE
+0xC4 0x00C4 #LATIN CAPITAL LETTER A WITH DIAERESIS
+0xC5 0x00C5 #LATIN CAPITAL LETTER A WITH RING ABOVE
+0xC6 0x00C6 #LATIN CAPITAL LETTER AE
+0xC7 0x00C7 #LATIN CAPITAL LETTER C WITH CEDILLA
+0xC8 0x00C8 #LATIN CAPITAL LETTER E WITH GRAVE
+0xC9 0x00C9 #LATIN CAPITAL LETTER E WITH ACUTE
+0xCA 0x00CA #LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+0xCB 0x00CB #LATIN CAPITAL LETTER E WITH DIAERESIS
+0xCC 0x00CC #LATIN CAPITAL LETTER I WITH GRAVE
+0xCD 0x00CD #LATIN CAPITAL LETTER I WITH ACUTE
+0xCE 0x00CE #LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+0xCF 0x00CF #LATIN CAPITAL LETTER I WITH DIAERESIS
+0xD0 0x00D0 #LATIN CAPITAL LETTER ETH
+0xD1 0x00D1 #LATIN CAPITAL LETTER N WITH TILDE
+0xD2 0x00D2 #LATIN CAPITAL LETTER O WITH GRAVE
+0xD3 0x00D3 #LATIN CAPITAL LETTER O WITH ACUTE
+0xD4 0x00D4 #LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+0xD5 0x00D5 #LATIN CAPITAL LETTER O WITH TILDE
+0xD6 0x00D6 #LATIN CAPITAL LETTER O WITH DIAERESIS
+0xD7 0x00D7 #MULTIPLICATION SIGN
+0xD8 0x00D8 #LATIN CAPITAL LETTER O WITH STROKE
+0xD9 0x00D9 #LATIN CAPITAL LETTER U WITH GRAVE
+0xDA 0x00DA #LATIN CAPITAL LETTER U WITH ACUTE
+0xDB 0x00DB #LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+0xDC 0x00DC #LATIN CAPITAL LETTER U WITH DIAERESIS
+0xDD 0x00DD #LATIN CAPITAL LETTER Y WITH ACUTE
+0xDE 0x00DE #LATIN CAPITAL LETTER THORN
+0xDF 0x00DF #LATIN SMALL LETTER SHARP S
+0xE0 0x00E0 #LATIN SMALL LETTER A WITH GRAVE
+0xE1 0x00E1 #LATIN SMALL LETTER A WITH ACUTE
+0xE2 0x00E2 #LATIN SMALL LETTER A WITH CIRCUMFLEX
+0xE3 0x00E3 #LATIN SMALL LETTER A WITH TILDE
+0xE4 0x00E4 #LATIN SMALL LETTER A WITH DIAERESIS
+0xE5 0x00E5 #LATIN SMALL LETTER A WITH RING ABOVE
+0xE6 0x00E6 #LATIN SMALL LETTER AE
+0xE7 0x00E7 #LATIN SMALL LETTER C WITH CEDILLA
+0xE8 0x00E8 #LATIN SMALL LETTER E WITH GRAVE
+0xE9 0x00E9 #LATIN SMALL LETTER E WITH ACUTE
+0xEA 0x00EA #LATIN SMALL LETTER E WITH CIRCUMFLEX
+0xEB 0x00EB #LATIN SMALL LETTER E WITH DIAERESIS
+0xEC 0x00EC #LATIN SMALL LETTER I WITH GRAVE
+0xED 0x00ED #LATIN SMALL LETTER I WITH ACUTE
+0xEE 0x00EE #LATIN SMALL LETTER I WITH CIRCUMFLEX
+0xEF 0x00EF #LATIN SMALL LETTER I WITH DIAERESIS
+0xF0 0x00F0 #LATIN SMALL LETTER ETH
+0xF1 0x00F1 #LATIN SMALL LETTER N WITH TILDE
+0xF2 0x00F2 #LATIN SMALL LETTER O WITH GRAVE
+0xF3 0x00F3 #LATIN SMALL LETTER O WITH ACUTE
+0xF4 0x00F4 #LATIN SMALL LETTER O WITH CIRCUMFLEX
+0xF5 0x00F5 #LATIN SMALL LETTER O WITH TILDE
+0xF6 0x00F6 #LATIN SMALL LETTER O WITH DIAERESIS
+0xF7 0x00F7 #DIVISION SIGN
+0xF8 0x00F8 #LATIN SMALL LETTER O WITH STROKE
+0xF9 0x00F9 #LATIN SMALL LETTER U WITH GRAVE
+0xFA 0x00FA #LATIN SMALL LETTER U WITH ACUTE
+0xFB 0x00FB #LATIN SMALL LETTER U WITH CIRCUMFLEX
+0xFC 0x00FC #LATIN SMALL LETTER U WITH DIAERESIS
+0xFD 0x00FD #LATIN SMALL LETTER Y WITH ACUTE
+0xFE 0x00FE #LATIN SMALL LETTER THORN
+0xFF 0x00FF #LATIN SMALL LETTER Y WITH DIAERESIS
diff --git a/ext/standard/html_tables/mappings/CP866.TXT b/ext/standard/html_tables/mappings/CP866.TXT
new file mode 100644
index 0000000000..b0213a1e81
--- /dev/null
+++ b/ext/standard/html_tables/mappings/CP866.TXT
@@ -0,0 +1,275 @@
+#
+# Name: cp866_DOSCyrillicRussian to Unicode table
+# Unicode version: 2.0
+# Table version: 2.00
+# Table format: Format A
+# Date: 04/24/96
+# Contact: Shawn.Steele@microsoft.com
+#
+# General notes: none
+#
+# Format: Three tab-separated columns
+# Column #1 is the cp866_DOSCyrillicRussian code (in hex)
+# Column #2 is the Unicode (in hex as 0xXXXX)
+# Column #3 is the Unicode name (follows a comment sign, '#')
+#
+# The entries are in cp866_DOSCyrillicRussian order
+#
+0x00 0x0000 #NULL
+0x01 0x0001 #START OF HEADING
+0x02 0x0002 #START OF TEXT
+0x03 0x0003 #END OF TEXT
+0x04 0x0004 #END OF TRANSMISSION
+0x05 0x0005 #ENQUIRY
+0x06 0x0006 #ACKNOWLEDGE
+0x07 0x0007 #BELL
+0x08 0x0008 #BACKSPACE
+0x09 0x0009 #HORIZONTAL TABULATION
+0x0a 0x000a #LINE FEED
+0x0b 0x000b #VERTICAL TABULATION
+0x0c 0x000c #FORM FEED
+0x0d 0x000d #CARRIAGE RETURN
+0x0e 0x000e #SHIFT OUT
+0x0f 0x000f #SHIFT IN
+0x10 0x0010 #DATA LINK ESCAPE
+0x11 0x0011 #DEVICE CONTROL ONE
+0x12 0x0012 #DEVICE CONTROL TWO
+0x13 0x0013 #DEVICE CONTROL THREE
+0x14 0x0014 #DEVICE CONTROL FOUR
+0x15 0x0015 #NEGATIVE ACKNOWLEDGE
+0x16 0x0016 #SYNCHRONOUS IDLE
+0x17 0x0017 #END OF TRANSMISSION BLOCK
+0x18 0x0018 #CANCEL
+0x19 0x0019 #END OF MEDIUM
+0x1a 0x001a #SUBSTITUTE
+0x1b 0x001b #ESCAPE
+0x1c 0x001c #FILE SEPARATOR
+0x1d 0x001d #GROUP SEPARATOR
+0x1e 0x001e #RECORD SEPARATOR
+0x1f 0x001f #UNIT SEPARATOR
+0x20 0x0020 #SPACE
+0x21 0x0021 #EXCLAMATION MARK
+0x22 0x0022 #QUOTATION MARK
+0x23 0x0023 #NUMBER SIGN
+0x24 0x0024 #DOLLAR SIGN
+0x25 0x0025 #PERCENT SIGN
+0x26 0x0026 #AMPERSAND
+0x27 0x0027 #APOSTROPHE
+0x28 0x0028 #LEFT PARENTHESIS
+0x29 0x0029 #RIGHT PARENTHESIS
+0x2a 0x002a #ASTERISK
+0x2b 0x002b #PLUS SIGN
+0x2c 0x002c #COMMA
+0x2d 0x002d #HYPHEN-MINUS
+0x2e 0x002e #FULL STOP
+0x2f 0x002f #SOLIDUS
+0x30 0x0030 #DIGIT ZERO
+0x31 0x0031 #DIGIT ONE
+0x32 0x0032 #DIGIT TWO
+0x33 0x0033 #DIGIT THREE
+0x34 0x0034 #DIGIT FOUR
+0x35 0x0035 #DIGIT FIVE
+0x36 0x0036 #DIGIT SIX
+0x37 0x0037 #DIGIT SEVEN
+0x38 0x0038 #DIGIT EIGHT
+0x39 0x0039 #DIGIT NINE
+0x3a 0x003a #COLON
+0x3b 0x003b #SEMICOLON
+0x3c 0x003c #LESS-THAN SIGN
+0x3d 0x003d #EQUALS SIGN
+0x3e 0x003e #GREATER-THAN SIGN
+0x3f 0x003f #QUESTION MARK
+0x40 0x0040 #COMMERCIAL AT
+0x41 0x0041 #LATIN CAPITAL LETTER A
+0x42 0x0042 #LATIN CAPITAL LETTER B
+0x43 0x0043 #LATIN CAPITAL LETTER C
+0x44 0x0044 #LATIN CAPITAL LETTER D
+0x45 0x0045 #LATIN CAPITAL LETTER E
+0x46 0x0046 #LATIN CAPITAL LETTER F
+0x47 0x0047 #LATIN CAPITAL LETTER G
+0x48 0x0048 #LATIN CAPITAL LETTER H
+0x49 0x0049 #LATIN CAPITAL LETTER I
+0x4a 0x004a #LATIN CAPITAL LETTER J
+0x4b 0x004b #LATIN CAPITAL LETTER K
+0x4c 0x004c #LATIN CAPITAL LETTER L
+0x4d 0x004d #LATIN CAPITAL LETTER M
+0x4e 0x004e #LATIN CAPITAL LETTER N
+0x4f 0x004f #LATIN CAPITAL LETTER O
+0x50 0x0050 #LATIN CAPITAL LETTER P
+0x51 0x0051 #LATIN CAPITAL LETTER Q
+0x52 0x0052 #LATIN CAPITAL LETTER R
+0x53 0x0053 #LATIN CAPITAL LETTER S
+0x54 0x0054 #LATIN CAPITAL LETTER T
+0x55 0x0055 #LATIN CAPITAL LETTER U
+0x56 0x0056 #LATIN CAPITAL LETTER V
+0x57 0x0057 #LATIN CAPITAL LETTER W
+0x58 0x0058 #LATIN CAPITAL LETTER X
+0x59 0x0059 #LATIN CAPITAL LETTER Y
+0x5a 0x005a #LATIN CAPITAL LETTER Z
+0x5b 0x005b #LEFT SQUARE BRACKET
+0x5c 0x005c #REVERSE SOLIDUS
+0x5d 0x005d #RIGHT SQUARE BRACKET
+0x5e 0x005e #CIRCUMFLEX ACCENT
+0x5f 0x005f #LOW LINE
+0x60 0x0060 #GRAVE ACCENT
+0x61 0x0061 #LATIN SMALL LETTER A
+0x62 0x0062 #LATIN SMALL LETTER B
+0x63 0x0063 #LATIN SMALL LETTER C
+0x64 0x0064 #LATIN SMALL LETTER D
+0x65 0x0065 #LATIN SMALL LETTER E
+0x66 0x0066 #LATIN SMALL LETTER F
+0x67 0x0067 #LATIN SMALL LETTER G
+0x68 0x0068 #LATIN SMALL LETTER H
+0x69 0x0069 #LATIN SMALL LETTER I
+0x6a 0x006a #LATIN SMALL LETTER J
+0x6b 0x006b #LATIN SMALL LETTER K
+0x6c 0x006c #LATIN SMALL LETTER L
+0x6d 0x006d #LATIN SMALL LETTER M
+0x6e 0x006e #LATIN SMALL LETTER N
+0x6f 0x006f #LATIN SMALL LETTER O
+0x70 0x0070 #LATIN SMALL LETTER P
+0x71 0x0071 #LATIN SMALL LETTER Q
+0x72 0x0072 #LATIN SMALL LETTER R
+0x73 0x0073 #LATIN SMALL LETTER S
+0x74 0x0074 #LATIN SMALL LETTER T
+0x75 0x0075 #LATIN SMALL LETTER U
+0x76 0x0076 #LATIN SMALL LETTER V
+0x77 0x0077 #LATIN SMALL LETTER W
+0x78 0x0078 #LATIN SMALL LETTER X
+0x79 0x0079 #LATIN SMALL LETTER Y
+0x7a 0x007a #LATIN SMALL LETTER Z
+0x7b 0x007b #LEFT CURLY BRACKET
+0x7c 0x007c #VERTICAL LINE
+0x7d 0x007d #RIGHT CURLY BRACKET
+0x7e 0x007e #TILDE
+0x7f 0x007f #DELETE
+0x80 0x0410 #CYRILLIC CAPITAL LETTER A
+0x81 0x0411 #CYRILLIC CAPITAL LETTER BE
+0x82 0x0412 #CYRILLIC CAPITAL LETTER VE
+0x83 0x0413 #CYRILLIC CAPITAL LETTER GHE
+0x84 0x0414 #CYRILLIC CAPITAL LETTER DE
+0x85 0x0415 #CYRILLIC CAPITAL LETTER IE
+0x86 0x0416 #CYRILLIC CAPITAL LETTER ZHE
+0x87 0x0417 #CYRILLIC CAPITAL LETTER ZE
+0x88 0x0418 #CYRILLIC CAPITAL LETTER I
+0x89 0x0419 #CYRILLIC CAPITAL LETTER SHORT I
+0x8a 0x041a #CYRILLIC CAPITAL LETTER KA
+0x8b 0x041b #CYRILLIC CAPITAL LETTER EL
+0x8c 0x041c #CYRILLIC CAPITAL LETTER EM
+0x8d 0x041d #CYRILLIC CAPITAL LETTER EN
+0x8e 0x041e #CYRILLIC CAPITAL LETTER O
+0x8f 0x041f #CYRILLIC CAPITAL LETTER PE
+0x90 0x0420 #CYRILLIC CAPITAL LETTER ER
+0x91 0x0421 #CYRILLIC CAPITAL LETTER ES
+0x92 0x0422 #CYRILLIC CAPITAL LETTER TE
+0x93 0x0423 #CYRILLIC CAPITAL LETTER U
+0x94 0x0424 #CYRILLIC CAPITAL LETTER EF
+0x95 0x0425 #CYRILLIC CAPITAL LETTER HA
+0x96 0x0426 #CYRILLIC CAPITAL LETTER TSE
+0x97 0x0427 #CYRILLIC CAPITAL LETTER CHE
+0x98 0x0428 #CYRILLIC CAPITAL LETTER SHA
+0x99 0x0429 #CYRILLIC CAPITAL LETTER SHCHA
+0x9a 0x042a #CYRILLIC CAPITAL LETTER HARD SIGN
+0x9b 0x042b #CYRILLIC CAPITAL LETTER YERU
+0x9c 0x042c #CYRILLIC CAPITAL LETTER SOFT SIGN
+0x9d 0x042d #CYRILLIC CAPITAL LETTER E
+0x9e 0x042e #CYRILLIC CAPITAL LETTER YU
+0x9f 0x042f #CYRILLIC CAPITAL LETTER YA
+0xa0 0x0430 #CYRILLIC SMALL LETTER A
+0xa1 0x0431 #CYRILLIC SMALL LETTER BE
+0xa2 0x0432 #CYRILLIC SMALL LETTER VE
+0xa3 0x0433 #CYRILLIC SMALL LETTER GHE
+0xa4 0x0434 #CYRILLIC SMALL LETTER DE
+0xa5 0x0435 #CYRILLIC SMALL LETTER IE
+0xa6 0x0436 #CYRILLIC SMALL LETTER ZHE
+0xa7 0x0437 #CYRILLIC SMALL LETTER ZE
+0xa8 0x0438 #CYRILLIC SMALL LETTER I
+0xa9 0x0439 #CYRILLIC SMALL LETTER SHORT I
+0xaa 0x043a #CYRILLIC SMALL LETTER KA
+0xab 0x043b #CYRILLIC SMALL LETTER EL
+0xac 0x043c #CYRILLIC SMALL LETTER EM
+0xad 0x043d #CYRILLIC SMALL LETTER EN
+0xae 0x043e #CYRILLIC SMALL LETTER O
+0xaf 0x043f #CYRILLIC SMALL LETTER PE
+0xb0 0x2591 #LIGHT SHADE
+0xb1 0x2592 #MEDIUM SHADE
+0xb2 0x2593 #DARK SHADE
+0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL
+0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT
+0xb5 0x2561 #BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+0xb6 0x2562 #BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+0xb7 0x2556 #BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+0xb8 0x2555 #BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL
+0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT
+0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT
+0xbd 0x255c #BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+0xbe 0x255b #BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT
+0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT
+0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL
+0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL
+0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+0xc6 0x255e #BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+0xc7 0x255f #BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT
+0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT
+0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL
+0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+0xcf 0x2567 #BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+0xd0 0x2568 #BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+0xd1 0x2564 #BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+0xd2 0x2565 #BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+0xd3 0x2559 #BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+0xd4 0x2558 #BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+0xd5 0x2552 #BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+0xd6 0x2553 #BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+0xd7 0x256b #BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+0xd8 0x256a #BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT
+0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT
+0xdb 0x2588 #FULL BLOCK
+0xdc 0x2584 #LOWER HALF BLOCK
+0xdd 0x258c #LEFT HALF BLOCK
+0xde 0x2590 #RIGHT HALF BLOCK
+0xdf 0x2580 #UPPER HALF BLOCK
+0xe0 0x0440 #CYRILLIC SMALL LETTER ER
+0xe1 0x0441 #CYRILLIC SMALL LETTER ES
+0xe2 0x0442 #CYRILLIC SMALL LETTER TE
+0xe3 0x0443 #CYRILLIC SMALL LETTER U
+0xe4 0x0444 #CYRILLIC SMALL LETTER EF
+0xe5 0x0445 #CYRILLIC SMALL LETTER HA
+0xe6 0x0446 #CYRILLIC SMALL LETTER TSE
+0xe7 0x0447 #CYRILLIC SMALL LETTER CHE
+0xe8 0x0448 #CYRILLIC SMALL LETTER SHA
+0xe9 0x0449 #CYRILLIC SMALL LETTER SHCHA
+0xea 0x044a #CYRILLIC SMALL LETTER HARD SIGN
+0xeb 0x044b #CYRILLIC SMALL LETTER YERU
+0xec 0x044c #CYRILLIC SMALL LETTER SOFT SIGN
+0xed 0x044d #CYRILLIC SMALL LETTER E
+0xee 0x044e #CYRILLIC SMALL LETTER YU
+0xef 0x044f #CYRILLIC SMALL LETTER YA
+0xf0 0x0401 #CYRILLIC CAPITAL LETTER IO
+0xf1 0x0451 #CYRILLIC SMALL LETTER IO
+0xf2 0x0404 #CYRILLIC CAPITAL LETTER UKRAINIAN IE
+0xf3 0x0454 #CYRILLIC SMALL LETTER UKRAINIAN IE
+0xf4 0x0407 #CYRILLIC CAPITAL LETTER YI
+0xf5 0x0457 #CYRILLIC SMALL LETTER YI
+0xf6 0x040e #CYRILLIC CAPITAL LETTER SHORT U
+0xf7 0x045e #CYRILLIC SMALL LETTER SHORT U
+0xf8 0x00b0 #DEGREE SIGN
+0xf9 0x2219 #BULLET OPERATOR
+0xfa 0x00b7 #MIDDLE DOT
+0xfb 0x221a #SQUARE ROOT
+0xfc 0x2116 #NUMERO SIGN
+0xfd 0x00a4 #CURRENCY SIGN
+0xfe 0x25a0 #BLACK SQUARE
+0xff 0x00a0 #NO-BREAK SPACE
+
+ \ No newline at end of file
diff --git a/ext/standard/html_tables/mappings/KOI8-R.TXT b/ext/standard/html_tables/mappings/KOI8-R.TXT
new file mode 100644
index 0000000000..510561005c
--- /dev/null
+++ b/ext/standard/html_tables/mappings/KOI8-R.TXT
@@ -0,0 +1,302 @@
+#
+# Name: KOI8-R (RFC1489) to Unicode
+# Unicode version: 3.0
+# Table version: 1.0
+# Table format: Format A
+# Date: 18 August 1999
+# Authors: Helmut Richter <richter@lrz.de>
+#
+# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
+#
+# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
+# No claims are made as to fitness for any particular purpose. No
+# warranties of any kind are expressed or implied. The recipient
+# agrees to determine applicability of information provided. If this
+# file has been provided on optical media by Unicode, Inc., the sole
+# remedy for any claim will be exchange of defective media within 90
+# days of receipt.
+#
+# Unicode, Inc. hereby grants the right to freely use the information
+# supplied in this file in the creation of products supporting the
+# Unicode Standard, and to make copies of this file in any form for
+# internal or external distribution as long as this notice remains
+# attached.
+#
+# General notes:
+#
+# This table contains the data the Unicode Consortium has on how
+# KOI8-R characters map into Unicode. The underlying document is the
+# mapping described in RFC 1489. No statements are made as to whether
+# this mapping is the same as the mapping defined as "Code Page 878"
+# with some vendors.
+#
+# Format: Three tab-separated columns
+# Column #1 is the KOI8-R code (in hex as 0xXX)
+# Column #2 is the Unicode (in hex as 0xXXXX)
+# Column #3 the Unicode name (follows a comment sign, '#')
+#
+# The entries are in KOI8-R order.
+#
+# Version history
+# 1.0 version: created.
+#
+# Any comments or problems, contact <errata@unicode.org>
+# Please note that <errata@unicode.org> is an archival address;
+# notices will be checked, but do not expect an immediate response.
+#
+0x00 0x0000 # NULL
+0x01 0x0001 # START OF HEADING
+0x02 0x0002 # START OF TEXT
+0x03 0x0003 # END OF TEXT
+0x04 0x0004 # END OF TRANSMISSION
+0x05 0x0005 # ENQUIRY
+0x06 0x0006 # ACKNOWLEDGE
+0x07 0x0007 # BELL
+0x08 0x0008 # BACKSPACE
+0x09 0x0009 # HORIZONTAL TABULATION
+0x0A 0x000A # LINE FEED
+0x0B 0x000B # VERTICAL TABULATION
+0x0C 0x000C # FORM FEED
+0x0D 0x000D # CARRIAGE RETURN
+0x0E 0x000E # SHIFT OUT
+0x0F 0x000F # SHIFT IN
+0x10 0x0010 # DATA LINK ESCAPE
+0x11 0x0011 # DEVICE CONTROL ONE
+0x12 0x0012 # DEVICE CONTROL TWO
+0x13 0x0013 # DEVICE CONTROL THREE
+0x14 0x0014 # DEVICE CONTROL FOUR
+0x15 0x0015 # NEGATIVE ACKNOWLEDGE
+0x16 0x0016 # SYNCHRONOUS IDLE
+0x17 0x0017 # END OF TRANSMISSION BLOCK
+0x18 0x0018 # CANCEL
+0x19 0x0019 # END OF MEDIUM
+0x1A 0x001A # SUBSTITUTE
+0x1B 0x001B # ESCAPE
+0x1C 0x001C # FILE SEPARATOR
+0x1D 0x001D # GROUP SEPARATOR
+0x1E 0x001E # RECORD SEPARATOR
+0x1F 0x001F # UNIT SEPARATOR
+0x20 0x0020 # SPACE
+0x21 0x0021 # EXCLAMATION MARK
+0x22 0x0022 # QUOTATION MARK
+0x23 0x0023 # NUMBER SIGN
+0x24 0x0024 # DOLLAR SIGN
+0x25 0x0025 # PERCENT SIGN
+0x26 0x0026 # AMPERSAND
+0x27 0x0027 # APOSTROPHE
+0x28 0x0028 # LEFT PARENTHESIS
+0x29 0x0029 # RIGHT PARENTHESIS
+0x2A 0x002A # ASTERISK
+0x2B 0x002B # PLUS SIGN
+0x2C 0x002C # COMMA
+0x2D 0x002D # HYPHEN-MINUS
+0x2E 0x002E # FULL STOP
+0x2F 0x002F # SOLIDUS
+0x30 0x0030 # DIGIT ZERO
+0x31 0x0031 # DIGIT ONE
+0x32 0x0032 # DIGIT TWO
+0x33 0x0033 # DIGIT THREE
+0x34 0x0034 # DIGIT FOUR
+0x35 0x0035 # DIGIT FIVE
+0x36 0x0036 # DIGIT SIX
+0x37 0x0037 # DIGIT SEVEN
+0x38 0x0038 # DIGIT EIGHT
+0x39 0x0039 # DIGIT NINE
+0x3A 0x003A # COLON
+0x3B 0x003B # SEMICOLON
+0x3C 0x003C # LESS-THAN SIGN
+0x3D 0x003D # EQUALS SIGN
+0x3E 0x003E # GREATER-THAN SIGN
+0x3F 0x003F # QUESTION MARK
+0x40 0x0040 # COMMERCIAL AT
+0x41 0x0041 # LATIN CAPITAL LETTER A
+0x42 0x0042 # LATIN CAPITAL LETTER B
+0x43 0x0043 # LATIN CAPITAL LETTER C
+0x44 0x0044 # LATIN CAPITAL LETTER D
+0x45 0x0045 # LATIN CAPITAL LETTER E
+0x46 0x0046 # LATIN CAPITAL LETTER F
+0x47 0x0047 # LATIN CAPITAL LETTER G
+0x48 0x0048 # LATIN CAPITAL LETTER H
+0x49 0x0049 # LATIN CAPITAL LETTER I
+0x4A 0x004A # LATIN CAPITAL LETTER J
+0x4B 0x004B # LATIN CAPITAL LETTER K
+0x4C 0x004C # LATIN CAPITAL LETTER L
+0x4D 0x004D # LATIN CAPITAL LETTER M
+0x4E 0x004E # LATIN CAPITAL LETTER N
+0x4F 0x004F # LATIN CAPITAL LETTER O
+0x50 0x0050 # LATIN CAPITAL LETTER P
+0x51 0x0051 # LATIN CAPITAL LETTER Q
+0x52 0x0052 # LATIN CAPITAL LETTER R
+0x53 0x0053 # LATIN CAPITAL LETTER S
+0x54 0x0054 # LATIN CAPITAL LETTER T
+0x55 0x0055 # LATIN CAPITAL LETTER U
+0x56 0x0056 # LATIN CAPITAL LETTER V
+0x57 0x0057 # LATIN CAPITAL LETTER W
+0x58 0x0058 # LATIN CAPITAL LETTER X
+0x59 0x0059 # LATIN CAPITAL LETTER Y
+0x5A 0x005A # LATIN CAPITAL LETTER Z
+0x5B 0x005B # LEFT SQUARE BRACKET
+0x5C 0x005C # REVERSE SOLIDUS
+0x5D 0x005D # RIGHT SQUARE BRACKET
+0x5E 0x005E # CIRCUMFLEX ACCENT
+0x5F 0x005F # LOW LINE
+0x60 0x0060 # GRAVE ACCENT
+0x61 0x0061 # LATIN SMALL LETTER A
+0x62 0x0062 # LATIN SMALL LETTER B
+0x63 0x0063 # LATIN SMALL LETTER C
+0x64 0x0064 # LATIN SMALL LETTER D
+0x65 0x0065 # LATIN SMALL LETTER E
+0x66 0x0066 # LATIN SMALL LETTER F
+0x67 0x0067 # LATIN SMALL LETTER G
+0x68 0x0068 # LATIN SMALL LETTER H
+0x69 0x0069 # LATIN SMALL LETTER I
+0x6A 0x006A # LATIN SMALL LETTER J
+0x6B 0x006B # LATIN SMALL LETTER K
+0x6C 0x006C # LATIN SMALL LETTER L
+0x6D 0x006D # LATIN SMALL LETTER M
+0x6E 0x006E # LATIN SMALL LETTER N
+0x6F 0x006F # LATIN SMALL LETTER O
+0x70 0x0070 # LATIN SMALL LETTER P
+0x71 0x0071 # LATIN SMALL LETTER Q
+0x72 0x0072 # LATIN SMALL LETTER R
+0x73 0x0073 # LATIN SMALL LETTER S
+0x74 0x0074 # LATIN SMALL LETTER T
+0x75 0x0075 # LATIN SMALL LETTER U
+0x76 0x0076 # LATIN SMALL LETTER V
+0x77 0x0077 # LATIN SMALL LETTER W
+0x78 0x0078 # LATIN SMALL LETTER X
+0x79 0x0079 # LATIN SMALL LETTER Y
+0x7A 0x007A # LATIN SMALL LETTER Z
+0x7B 0x007B # LEFT CURLY BRACKET
+0x7C 0x007C # VERTICAL LINE
+0x7D 0x007D # RIGHT CURLY BRACKET
+0x7E 0x007E # TILDE
+0x7F 0x007F # DELETE
+0x80 0x2500 # BOX DRAWINGS LIGHT HORIZONTAL
+0x81 0x2502 # BOX DRAWINGS LIGHT VERTICAL
+0x82 0x250C # BOX DRAWINGS LIGHT DOWN AND RIGHT
+0x83 0x2510 # BOX DRAWINGS LIGHT DOWN AND LEFT
+0x84 0x2514 # BOX DRAWINGS LIGHT UP AND RIGHT
+0x85 0x2518 # BOX DRAWINGS LIGHT UP AND LEFT
+0x86 0x251C # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+0x87 0x2524 # BOX DRAWINGS LIGHT VERTICAL AND LEFT
+0x88 0x252C # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+0x89 0x2534 # BOX DRAWINGS LIGHT UP AND HORIZONTAL
+0x8A 0x253C # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+0x8B 0x2580 # UPPER HALF BLOCK
+0x8C 0x2584 # LOWER HALF BLOCK
+0x8D 0x2588 # FULL BLOCK
+0x8E 0x258C # LEFT HALF BLOCK
+0x8F 0x2590 # RIGHT HALF BLOCK
+0x90 0x2591 # LIGHT SHADE
+0x91 0x2592 # MEDIUM SHADE
+0x92 0x2593 # DARK SHADE
+0x93 0x2320 # TOP HALF INTEGRAL
+0x94 0x25A0 # BLACK SQUARE
+0x95 0x2219 # BULLET OPERATOR
+0x96 0x221A # SQUARE ROOT
+0x97 0x2248 # ALMOST EQUAL TO
+0x98 0x2264 # LESS-THAN OR EQUAL TO
+0x99 0x2265 # GREATER-THAN OR EQUAL TO
+0x9A 0x00A0 # NO-BREAK SPACE
+0x9B 0x2321 # BOTTOM HALF INTEGRAL
+0x9C 0x00B0 # DEGREE SIGN
+0x9D 0x00B2 # SUPERSCRIPT TWO
+0x9E 0x00B7 # MIDDLE DOT
+0x9F 0x00F7 # DIVISION SIGN
+0xA0 0x2550 # BOX DRAWINGS DOUBLE HORIZONTAL
+0xA1 0x2551 # BOX DRAWINGS DOUBLE VERTICAL
+0xA2 0x2552 # BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+0xA3 0x0451 # CYRILLIC SMALL LETTER IO
+0xA4 0x2553 # BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+0xA5 0x2554 # BOX DRAWINGS DOUBLE DOWN AND RIGHT
+0xA6 0x2555 # BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+0xA7 0x2556 # BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+0xA8 0x2557 # BOX DRAWINGS DOUBLE DOWN AND LEFT
+0xA9 0x2558 # BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+0xAA 0x2559 # BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+0xAB 0x255A # BOX DRAWINGS DOUBLE UP AND RIGHT
+0xAC 0x255B # BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+0xAD 0x255C # BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+0xAE 0x255D # BOX DRAWINGS DOUBLE UP AND LEFT
+0xAF 0x255E # BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+0xB0 0x255F # BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+0xB1 0x2560 # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+0xB2 0x2561 # BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+0xB3 0x0401 # CYRILLIC CAPITAL LETTER IO
+0xB4 0x2562 # BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+0xB5 0x2563 # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+0xB6 0x2564 # BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+0xB7 0x2565 # BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+0xB8 0x2566 # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+0xB9 0x2567 # BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+0xBA 0x2568 # BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+0xBB 0x2569 # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+0xBC 0x256A # BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+0xBD 0x256B # BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+0xBE 0x256C # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+0xBF 0x00A9 # COPYRIGHT SIGN
+0xC0 0x044E # CYRILLIC SMALL LETTER YU
+0xC1 0x0430 # CYRILLIC SMALL LETTER A
+0xC2 0x0431 # CYRILLIC SMALL LETTER BE
+0xC3 0x0446 # CYRILLIC SMALL LETTER TSE
+0xC4 0x0434 # CYRILLIC SMALL LETTER DE
+0xC5 0x0435 # CYRILLIC SMALL LETTER IE
+0xC6 0x0444 # CYRILLIC SMALL LETTER EF
+0xC7 0x0433 # CYRILLIC SMALL LETTER GHE
+0xC8 0x0445 # CYRILLIC SMALL LETTER HA
+0xC9 0x0438 # CYRILLIC SMALL LETTER I
+0xCA 0x0439 # CYRILLIC SMALL LETTER SHORT I
+0xCB 0x043A # CYRILLIC SMALL LETTER KA
+0xCC 0x043B # CYRILLIC SMALL LETTER EL
+0xCD 0x043C # CYRILLIC SMALL LETTER EM
+0xCE 0x043D # CYRILLIC SMALL LETTER EN
+0xCF 0x043E # CYRILLIC SMALL LETTER O
+0xD0 0x043F # CYRILLIC SMALL LETTER PE
+0xD1 0x044F # CYRILLIC SMALL LETTER YA
+0xD2 0x0440 # CYRILLIC SMALL LETTER ER
+0xD3 0x0441 # CYRILLIC SMALL LETTER ES
+0xD4 0x0442 # CYRILLIC SMALL LETTER TE
+0xD5 0x0443 # CYRILLIC SMALL LETTER U
+0xD6 0x0436 # CYRILLIC SMALL LETTER ZHE
+0xD7 0x0432 # CYRILLIC SMALL LETTER VE
+0xD8 0x044C # CYRILLIC SMALL LETTER SOFT SIGN
+0xD9 0x044B # CYRILLIC SMALL LETTER YERU
+0xDA 0x0437 # CYRILLIC SMALL LETTER ZE
+0xDB 0x0448 # CYRILLIC SMALL LETTER SHA
+0xDC 0x044D # CYRILLIC SMALL LETTER E
+0xDD 0x0449 # CYRILLIC SMALL LETTER SHCHA
+0xDE 0x0447 # CYRILLIC SMALL LETTER CHE
+0xDF 0x044A # CYRILLIC SMALL LETTER HARD SIGN
+0xE0 0x042E # CYRILLIC CAPITAL LETTER YU
+0xE1 0x0410 # CYRILLIC CAPITAL LETTER A
+0xE2 0x0411 # CYRILLIC CAPITAL LETTER BE
+0xE3 0x0426 # CYRILLIC CAPITAL LETTER TSE
+0xE4 0x0414 # CYRILLIC CAPITAL LETTER DE
+0xE5 0x0415 # CYRILLIC CAPITAL LETTER IE
+0xE6 0x0424 # CYRILLIC CAPITAL LETTER EF
+0xE7 0x0413 # CYRILLIC CAPITAL LETTER GHE
+0xE8 0x0425 # CYRILLIC CAPITAL LETTER HA
+0xE9 0x0418 # CYRILLIC CAPITAL LETTER I
+0xEA 0x0419 # CYRILLIC CAPITAL LETTER SHORT I
+0xEB 0x041A # CYRILLIC CAPITAL LETTER KA
+0xEC 0x041B # CYRILLIC CAPITAL LETTER EL
+0xED 0x041C # CYRILLIC CAPITAL LETTER EM
+0xEE 0x041D # CYRILLIC CAPITAL LETTER EN
+0xEF 0x041E # CYRILLIC CAPITAL LETTER O
+0xF0 0x041F # CYRILLIC CAPITAL LETTER PE
+0xF1 0x042F # CYRILLIC CAPITAL LETTER YA
+0xF2 0x0420 # CYRILLIC CAPITAL LETTER ER
+0xF3 0x0421 # CYRILLIC CAPITAL LETTER ES
+0xF4 0x0422 # CYRILLIC CAPITAL LETTER TE
+0xF5 0x0423 # CYRILLIC CAPITAL LETTER U
+0xF6 0x0416 # CYRILLIC CAPITAL LETTER ZHE
+0xF7 0x0412 # CYRILLIC CAPITAL LETTER VE
+0xF8 0x042C # CYRILLIC CAPITAL LETTER SOFT SIGN
+0xF9 0x042B # CYRILLIC CAPITAL LETTER YERU
+0xFA 0x0417 # CYRILLIC CAPITAL LETTER ZE
+0xFB 0x0428 # CYRILLIC CAPITAL LETTER SHA
+0xFC 0x042D # CYRILLIC CAPITAL LETTER E
+0xFD 0x0429 # CYRILLIC CAPITAL LETTER SHCHA
+0xFE 0x0427 # CYRILLIC CAPITAL LETTER CHE
+0xFF 0x042A # CYRILLIC CAPITAL LETTER HARD SIGN
diff --git a/ext/standard/html_tables/mappings/ROMAN.TXT b/ext/standard/html_tables/mappings/ROMAN.TXT
new file mode 100644
index 0000000000..5b3b8b4005
--- /dev/null
+++ b/ext/standard/html_tables/mappings/ROMAN.TXT
@@ -0,0 +1,370 @@
+#=======================================================================
+# File name: ROMAN.TXT
+#
+# Contents: Map (external version) from Mac OS Roman
+# character set to Unicode 2.1 and later.
+#
+# Copyright: (c) 1994-2002, 2005 by Apple Computer, Inc., all rights
+# reserved.
+#
+# Contact: charsets@apple.com
+#
+# Changes:
+#
+# c02 2005-Apr-05 Update header comments. Matches internal xml
+# <c1.1> and Text Encoding Converter 2.0.
+# b4,c1 2002-Dec-19 Update URLs, notes. Matches internal
+# utom<b5>.
+# b03 1999-Sep-22 Update contact e-mail address. Matches
+# internal utom<b4>, ufrm<b3>, and Text
+# Encoding Converter version 1.5.
+# b02 1998-Aug-18 Encoding changed for Mac OS 8.5; change
+# mapping of 0xDB from CURRENCY SIGN to
+# EURO SIGN. Matches internal utom<b3>,
+# ufrm<b3>.
+# n08 1998-Feb-05 Minor update to header comments
+# n06 1997-Dec-14 Add warning about future changes to 0xDB
+# from CURRENCY SIGN to EURO SIGN. Clarify
+# some header information
+# n04 1997-Dec-01 Update to match internal utom<n3>, ufrm<n22>:
+# Change standard mapping for 0xBD from U+2126
+# to its canonical decomposition, U+03A9.
+# n03 1995-Apr-15 First version (after fixing some typos).
+# Matches internal ufrm<n9>.
+#
+# Standard header:
+# ----------------
+#
+# Apple, the Apple logo, and Macintosh are trademarks of Apple
+# Computer, Inc., registered in the United States and other countries.
+# Unicode is a trademark of Unicode Inc. For the sake of brevity,
+# throughout this document, "Macintosh" can be used to refer to
+# Macintosh computers and "Unicode" can be used to refer to the
+# Unicode standard.
+#
+# Apple Computer, Inc. ("Apple") makes no warranty or representation,
+# either express or implied, with respect to this document and the
+# included data, its quality, accuracy, or fitness for a particular
+# purpose. In no event will Apple be liable for direct, indirect,
+# special, incidental, or consequential damages resulting from any
+# defect or inaccuracy in this document or the included data.
+#
+# These mapping tables and character lists are subject to change.
+# The latest tables should be available from the following:
+#
+# <http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/>
+#
+# For general information about Mac OS encodings and these mapping
+# tables, see the file "README.TXT".
+#
+# Format:
+# -------
+#
+# Three tab-separated columns;
+# '#' begins a comment which continues to the end of the line.
+# Column #1 is the Mac OS Roman code (in hex as 0xNN)
+# Column #2 is the corresponding Unicode (in hex as 0xNNNN)
+# Column #3 is a comment containing the Unicode name
+#
+# The entries are in Mac OS Roman code order.
+#
+# One of these mappings requires the use of a corporate character.
+# See the file "CORPCHAR.TXT" and notes below.
+#
+# Control character mappings are not shown in this table, following
+# the conventions of the standard UTC mapping tables. However, the
+# Mac OS Roman character set uses the standard control characters at
+# 0x00-0x1F and 0x7F.
+#
+# Notes on Mac OS Roman:
+# ----------------------
+#
+# This is a legacy Mac OS encoding; in the Mac OS X Carbon and Cocoa
+# environments, it is only supported directly in programming
+# interfaces for QuickDraw Text, the Script Manager, and related
+# Text Utilities. For other purposes it is supported via transcoding
+# to and from Unicode.
+#
+# This character set is used for at least the following Mac OS
+# localizations: U.S., British, Canadian French, French, Swiss
+# French, German, Swiss German, Italian, Swiss Italian, Dutch,
+# Swedish, Norwegian, Danish, Finnish, Spanish, Catalan,
+# Portuguese, Brazilian, and the default International system.
+#
+# Variants of Mac OS Roman are used for Croatian, Icelandic,
+# Turkish, Romanian, and other encodings. Separate mapping tables
+# are available for these encodings.
+#
+# Before Mac OS 8.5, code point 0xDB was CURRENCY SIGN, and was
+# mapped to U+00A4. In Mac OS 8.5 and later versions, code point
+# 0xDB is changed to EURO SIGN and maps to U+20AC; the standard
+# Apple fonts are updated for Mac OS 8.5 to reflect this. There is
+# a "currency sign" variant of the Mac OS Roman encoding that still
+# maps 0xDB to U+00A4; this can be used for older fonts.
+#
+# Before Mac OS 8.5, the ROM bitmap versions of the fonts Chicago,
+# New York, Geneva, and Monaco did not implement the full Mac OS
+# Roman character set; they only supported character codes up to
+# 0xD8. The TrueType versions of these fonts have always implemented
+# the full character set, as with the bitmap and TrueType versions
+# of the other standard Roman fonts.
+#
+# In all Mac OS encodings, fonts such as Chicago which are used
+# as "system" fonts (for menus, dialogs, etc.) have four glyphs
+# at code points 0x11-0x14 for transient use by the Menu Manager.
+# These glyphs are not intended as characters for use in normal
+# text, and the associated code points are not generally
+# interpreted as associated with these glyphs; they are usually
+# interpreted (if at all) as the control codes DC1-DC4.
+#
+# Unicode mapping issues and notes:
+# ---------------------------------
+#
+# The following corporate zone Unicode character is used in this
+# mapping:
+#
+# 0xF8FF Apple logo
+#
+# NOTE: The graphic image associated with the Apple logo character
+# is not authorized for use without permission of Apple, and
+# unauthorized use might constitute trademark infringement.
+#
+# Details of mapping changes in each version:
+# -------------------------------------------
+#
+# Changes from version n08 to version b02:
+#
+# - Encoding changed for Mac OS 8.5; change mapping of 0xDB from
+# CURRENCY SIGN (U+00A4) to EURO SIGN (U+20AC).
+#
+# Changes from version n03 to version n04:
+#
+# - Change mapping of 0xBD from U+2126 to its canonical
+# decomposition, U+03A9.
+#
+##################
+
+0x20 0x0020 # SPACE
+0x21 0x0021 # EXCLAMATION MARK
+0x22 0x0022 # QUOTATION MARK
+0x23 0x0023 # NUMBER SIGN
+0x24 0x0024 # DOLLAR SIGN
+0x25 0x0025 # PERCENT SIGN
+0x26 0x0026 # AMPERSAND
+0x27 0x0027 # APOSTROPHE
+0x28 0x0028 # LEFT PARENTHESIS
+0x29 0x0029 # RIGHT PARENTHESIS
+0x2A 0x002A # ASTERISK
+0x2B 0x002B # PLUS SIGN
+0x2C 0x002C # COMMA
+0x2D 0x002D # HYPHEN-MINUS
+0x2E 0x002E # FULL STOP
+0x2F 0x002F # SOLIDUS
+0x30 0x0030 # DIGIT ZERO
+0x31 0x0031 # DIGIT ONE
+0x32 0x0032 # DIGIT TWO
+0x33 0x0033 # DIGIT THREE
+0x34 0x0034 # DIGIT FOUR
+0x35 0x0035 # DIGIT FIVE
+0x36 0x0036 # DIGIT SIX
+0x37 0x0037 # DIGIT SEVEN
+0x38 0x0038 # DIGIT EIGHT
+0x39 0x0039 # DIGIT NINE
+0x3A 0x003A # COLON
+0x3B 0x003B # SEMICOLON
+0x3C 0x003C # LESS-THAN SIGN
+0x3D 0x003D # EQUALS SIGN
+0x3E 0x003E # GREATER-THAN SIGN
+0x3F 0x003F # QUESTION MARK
+0x40 0x0040 # COMMERCIAL AT
+0x41 0x0041 # LATIN CAPITAL LETTER A
+0x42 0x0042 # LATIN CAPITAL LETTER B
+0x43 0x0043 # LATIN CAPITAL LETTER C
+0x44 0x0044 # LATIN CAPITAL LETTER D
+0x45 0x0045 # LATIN CAPITAL LETTER E
+0x46 0x0046 # LATIN CAPITAL LETTER F
+0x47 0x0047 # LATIN CAPITAL LETTER G
+0x48 0x0048 # LATIN CAPITAL LETTER H
+0x49 0x0049 # LATIN CAPITAL LETTER I
+0x4A 0x004A # LATIN CAPITAL LETTER J
+0x4B 0x004B # LATIN CAPITAL LETTER K
+0x4C 0x004C # LATIN CAPITAL LETTER L
+0x4D 0x004D # LATIN CAPITAL LETTER M
+0x4E 0x004E # LATIN CAPITAL LETTER N
+0x4F 0x004F # LATIN CAPITAL LETTER O
+0x50 0x0050 # LATIN CAPITAL LETTER P
+0x51 0x0051 # LATIN CAPITAL LETTER Q
+0x52 0x0052 # LATIN CAPITAL LETTER R
+0x53 0x0053 # LATIN CAPITAL LETTER S
+0x54 0x0054 # LATIN CAPITAL LETTER T
+0x55 0x0055 # LATIN CAPITAL LETTER U
+0x56 0x0056 # LATIN CAPITAL LETTER V
+0x57 0x0057 # LATIN CAPITAL LETTER W
+0x58 0x0058 # LATIN CAPITAL LETTER X
+0x59 0x0059 # LATIN CAPITAL LETTER Y
+0x5A 0x005A # LATIN CAPITAL LETTER Z
+0x5B 0x005B # LEFT SQUARE BRACKET
+0x5C 0x005C # REVERSE SOLIDUS
+0x5D 0x005D # RIGHT SQUARE BRACKET
+0x5E 0x005E # CIRCUMFLEX ACCENT
+0x5F 0x005F # LOW LINE
+0x60 0x0060 # GRAVE ACCENT
+0x61 0x0061 # LATIN SMALL LETTER A
+0x62 0x0062 # LATIN SMALL LETTER B
+0x63 0x0063 # LATIN SMALL LETTER C
+0x64 0x0064 # LATIN SMALL LETTER D
+0x65 0x0065 # LATIN SMALL LETTER E
+0x66 0x0066 # LATIN SMALL LETTER F
+0x67 0x0067 # LATIN SMALL LETTER G
+0x68 0x0068 # LATIN SMALL LETTER H
+0x69 0x0069 # LATIN SMALL LETTER I
+0x6A 0x006A # LATIN SMALL LETTER J
+0x6B 0x006B # LATIN SMALL LETTER K
+0x6C 0x006C # LATIN SMALL LETTER L
+0x6D 0x006D # LATIN SMALL LETTER M
+0x6E 0x006E # LATIN SMALL LETTER N
+0x6F 0x006F # LATIN SMALL LETTER O
+0x70 0x0070 # LATIN SMALL LETTER P
+0x71 0x0071 # LATIN SMALL LETTER Q
+0x72 0x0072 # LATIN SMALL LETTER R
+0x73 0x0073 # LATIN SMALL LETTER S
+0x74 0x0074 # LATIN SMALL LETTER T
+0x75 0x0075 # LATIN SMALL LETTER U
+0x76 0x0076 # LATIN SMALL LETTER V
+0x77 0x0077 # LATIN SMALL LETTER W
+0x78 0x0078 # LATIN SMALL LETTER X
+0x79 0x0079 # LATIN SMALL LETTER Y
+0x7A 0x007A # LATIN SMALL LETTER Z
+0x7B 0x007B # LEFT CURLY BRACKET
+0x7C 0x007C # VERTICAL LINE
+0x7D 0x007D # RIGHT CURLY BRACKET
+0x7E 0x007E # TILDE
+#
+0x80 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
+0x81 0x00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE
+0x82 0x00C7 # LATIN CAPITAL LETTER C WITH CEDILLA
+0x83 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
+0x84 0x00D1 # LATIN CAPITAL LETTER N WITH TILDE
+0x85 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
+0x86 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
+0x87 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
+0x88 0x00E0 # LATIN SMALL LETTER A WITH GRAVE
+0x89 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
+0x8A 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
+0x8B 0x00E3 # LATIN SMALL LETTER A WITH TILDE
+0x8C 0x00E5 # LATIN SMALL LETTER A WITH RING ABOVE
+0x8D 0x00E7 # LATIN SMALL LETTER C WITH CEDILLA
+0x8E 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
+0x8F 0x00E8 # LATIN SMALL LETTER E WITH GRAVE
+0x90 0x00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX
+0x91 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
+0x92 0x00ED # LATIN SMALL LETTER I WITH ACUTE
+0x93 0x00EC # LATIN SMALL LETTER I WITH GRAVE
+0x94 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
+0x95 0x00EF # LATIN SMALL LETTER I WITH DIAERESIS
+0x96 0x00F1 # LATIN SMALL LETTER N WITH TILDE
+0x97 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
+0x98 0x00F2 # LATIN SMALL LETTER O WITH GRAVE
+0x99 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
+0x9A 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
+0x9B 0x00F5 # LATIN SMALL LETTER O WITH TILDE
+0x9C 0x00FA # LATIN SMALL LETTER U WITH ACUTE
+0x9D 0x00F9 # LATIN SMALL LETTER U WITH GRAVE
+0x9E 0x00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
+0x9F 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
+0xA0 0x2020 # DAGGER
+0xA1 0x00B0 # DEGREE SIGN
+0xA2 0x00A2 # CENT SIGN
+0xA3 0x00A3 # POUND SIGN
+0xA4 0x00A7 # SECTION SIGN
+0xA5 0x2022 # BULLET
+0xA6 0x00B6 # PILCROW SIGN
+0xA7 0x00DF # LATIN SMALL LETTER SHARP S
+0xA8 0x00AE # REGISTERED SIGN
+0xA9 0x00A9 # COPYRIGHT SIGN
+0xAA 0x2122 # TRADE MARK SIGN
+0xAB 0x00B4 # ACUTE ACCENT
+0xAC 0x00A8 # DIAERESIS
+0xAD 0x2260 # NOT EQUAL TO
+0xAE 0x00C6 # LATIN CAPITAL LETTER AE
+0xAF 0x00D8 # LATIN CAPITAL LETTER O WITH STROKE
+0xB0 0x221E # INFINITY
+0xB1 0x00B1 # PLUS-MINUS SIGN
+0xB2 0x2264 # LESS-THAN OR EQUAL TO
+0xB3 0x2265 # GREATER-THAN OR EQUAL TO
+0xB4 0x00A5 # YEN SIGN
+0xB5 0x00B5 # MICRO SIGN
+0xB6 0x2202 # PARTIAL DIFFERENTIAL
+0xB7 0x2211 # N-ARY SUMMATION
+0xB8 0x220F # N-ARY PRODUCT
+0xB9 0x03C0 # GREEK SMALL LETTER PI
+0xBA 0x222B # INTEGRAL
+0xBB 0x00AA # FEMININE ORDINAL INDICATOR
+0xBC 0x00BA # MASCULINE ORDINAL INDICATOR
+0xBD 0x03A9 # GREEK CAPITAL LETTER OMEGA
+0xBE 0x00E6 # LATIN SMALL LETTER AE
+0xBF 0x00F8 # LATIN SMALL LETTER O WITH STROKE
+0xC0 0x00BF # INVERTED QUESTION MARK
+0xC1 0x00A1 # INVERTED EXCLAMATION MARK
+0xC2 0x00AC # NOT SIGN
+0xC3 0x221A # SQUARE ROOT
+0xC4 0x0192 # LATIN SMALL LETTER F WITH HOOK
+0xC5 0x2248 # ALMOST EQUAL TO
+0xC6 0x2206 # INCREMENT
+0xC7 0x00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+0xC8 0x00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+0xC9 0x2026 # HORIZONTAL ELLIPSIS
+0xCA 0x00A0 # NO-BREAK SPACE
+0xCB 0x00C0 # LATIN CAPITAL LETTER A WITH GRAVE
+0xCC 0x00C3 # LATIN CAPITAL LETTER A WITH TILDE
+0xCD 0x00D5 # LATIN CAPITAL LETTER O WITH TILDE
+0xCE 0x0152 # LATIN CAPITAL LIGATURE OE
+0xCF 0x0153 # LATIN SMALL LIGATURE OE
+0xD0 0x2013 # EN DASH
+0xD1 0x2014 # EM DASH
+0xD2 0x201C # LEFT DOUBLE QUOTATION MARK
+0xD3 0x201D # RIGHT DOUBLE QUOTATION MARK
+0xD4 0x2018 # LEFT SINGLE QUOTATION MARK
+0xD5 0x2019 # RIGHT SINGLE QUOTATION MARK
+0xD6 0x00F7 # DIVISION SIGN
+0xD7 0x25CA # LOZENGE
+0xD8 0x00FF # LATIN SMALL LETTER Y WITH DIAERESIS
+0xD9 0x0178 # LATIN CAPITAL LETTER Y WITH DIAERESIS
+0xDA 0x2044 # FRACTION SLASH
+0xDB 0x20AC # EURO SIGN
+0xDC 0x2039 # SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+0xDD 0x203A # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+0xDE 0xFB01 # LATIN SMALL LIGATURE FI
+0xDF 0xFB02 # LATIN SMALL LIGATURE FL
+0xE0 0x2021 # DOUBLE DAGGER
+0xE1 0x00B7 # MIDDLE DOT
+0xE2 0x201A # SINGLE LOW-9 QUOTATION MARK
+0xE3 0x201E # DOUBLE LOW-9 QUOTATION MARK
+0xE4 0x2030 # PER MILLE SIGN
+0xE5 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+0xE6 0x00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+0xE7 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
+0xE8 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
+0xE9 0x00C8 # LATIN CAPITAL LETTER E WITH GRAVE
+0xEA 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
+0xEB 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+0xEC 0x00CF # LATIN CAPITAL LETTER I WITH DIAERESIS
+0xED 0x00CC # LATIN CAPITAL LETTER I WITH GRAVE
+0xEE 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
+0xEF 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+0xF0 0xF8FF # Apple logo
+0xF1 0x00D2 # LATIN CAPITAL LETTER O WITH GRAVE
+0xF2 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
+0xF3 0x00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+0xF4 0x00D9 # LATIN CAPITAL LETTER U WITH GRAVE
+0xF5 0x0131 # LATIN SMALL LETTER DOTLESS I
+0xF6 0x02C6 # MODIFIER LETTER CIRCUMFLEX ACCENT
+0xF7 0x02DC # SMALL TILDE
+0xF8 0x00AF # MACRON
+0xF9 0x02D8 # BREVE
+0xFA 0x02D9 # DOT ABOVE
+0xFB 0x02DA # RING ABOVE
+0xFC 0x00B8 # CEDILLA
+0xFD 0x02DD # DOUBLE ACUTE ACCENT
+0xFE 0x02DB # OGONEK
+0xFF 0x02C7 # CARON
diff --git a/ext/standard/tests/strings/bug49785.phpt b/ext/standard/tests/strings/bug49785.phpt
index 3c38afd8f6..78a1837280 100644
--- a/ext/standard/tests/strings/bug49785.phpt
+++ b/ext/standard/tests/strings/bug49785.phpt
@@ -6,7 +6,7 @@ function _bin2hex($val) {
return is_string($val) ? bin2hex($val): $val;
}
-// UTF-8: basic tests
+echo "UTF-8: basic tests\n";
var_dump(_bin2hex(htmlentities("\xc1\xbf", ENT_QUOTES, "UTF-8")));
var_dump(_bin2hex(htmlentities("\xc2\x80", ENT_QUOTES, "UTF-8")));
var_dump(_bin2hex(htmlentities("\xc2\x00", ENT_QUOTES, "UTF-8")));
@@ -36,13 +36,13 @@ var_dump(_bin2hex(htmlentities("\xf7\xbf\xbf\xff", ENT_QUOTES, "UTF-8")));
var_dump(_bin2hex(htmlentities("\xf8\x88\x80\x80\x80", ENT_QUOTES, "UTF-8")));
echo "--\n";
-// UTF-8: with ENT_IGNORE
+echo "UTF-8: with ENT_IGNORE\n";
var_dump(_bin2hex(htmlentities("\xc0\xa0\xc2\x80", ENT_QUOTES | ENT_IGNORE, "UTF-8")));
var_dump(_bin2hex(htmlentities("\xe0\x80\x80\xe0\xa0\x80", ENT_QUOTES | ENT_IGNORE, "UTF-8")));
var_dump(_bin2hex(htmlentities("\xf0\x80\x80\x80\xf0\x90\x80\x80", ENT_QUOTES | ENT_IGNORE, "UTF-8")));
echo "--\n";
-// UTF-8: alternative (invalid) UTF-8 sequence / surrogate pairs
+echo "UTF-8: alternative (invalid) UTF-8 sequence / surrogate pairs\n";
var_dump(_bin2hex(htmlspecialchars("\xc0\xa6", ENT_QUOTES, 'UTF-8')));
var_dump(_bin2hex(htmlspecialchars("\xe0\x80\xa6", ENT_QUOTES, 'UTF-8')));
var_dump(_bin2hex(htmlspecialchars("\xf0\x80\x80\xa6", ENT_QUOTES, 'UTF-8')));
@@ -51,7 +51,8 @@ var_dump(_bin2hex(htmlspecialchars("\xed\xa0\x80", ENT_QUOTES, 'UTF-8')));
var_dump(_bin2hex(htmlspecialchars("\xed\xbf\xbf", ENT_QUOTES, 'UTF-8')));
var_dump(_bin2hex(htmlspecialchars("\xee\x80\x80", ENT_QUOTES, 'UTF-8')));
-// Shift_JIS: non-lead byte >= 0x80
+echo "--\n";
+echo "Shift_JIS: non-lead byte >= 0x80\n";
var_dump(_bin2hex(htmlspecialchars("\x80", ENT_QUOTES, 'Shift_JIS')));
foreach (array_map('chr', range(0xa0, 0xdf)) as $c) {
var_dump(_bin2hex(htmlspecialchars($c, ENT_QUOTES, 'Shift_JIS')));
@@ -61,7 +62,7 @@ var_dump(_bin2hex(htmlspecialchars("\xfe", ENT_QUOTES, 'Shift_JIS')));
var_dump(_bin2hex(htmlspecialchars("\xff", ENT_QUOTES, 'Shift_JIS')));
echo "--\n";
-// Shift_JIS: incomplete / invalid multibyte sequences
+echo "Shift_JIS: incomplete / invalid multibyte sequences\n";
foreach (array_map('chr', array_merge(range(0x81, 0x9f), range(0xe0, 0xfc))) as $c) {
var_dump(_bin2hex(htmlspecialchars("$c", ENT_QUOTES, 'Shift_JIS')));
var_dump(_bin2hex(htmlspecialchars("$c\x3f", ENT_QUOTES, 'Shift_JIS')));
@@ -76,7 +77,7 @@ foreach (array_map('chr', array_merge(range(0x81, 0x9f), range(0xe0, 0xfc))) as
}
echo "--\n";
-// EUC-JP: non-lead byte >= 0x80
+echo "EUC-JP: non-lead byte >= 0x80\n";
foreach (array_map('chr', array_merge(range(0x80, 0x8d), range(0x90, 0x9f))) as $c) {
var_dump(_bin2hex(htmlspecialchars($c, ENT_QUOTES, 'EUC-JP')));
}
@@ -91,7 +92,7 @@ var_dump(_bin2hex(htmlspecialchars("\x8e\xa1\xa3", ENT_QUOTES, 'EUC-JP')));
var_dump(_bin2hex(htmlspecialchars("\x8f\xa1\xa3", ENT_QUOTES, 'EUC-JP')));
echo "--\n";
-// EUC-JP: incomplete / invalid multibyte sequences
+echo "EUC-JP: incomplete / invalid multibyte sequences\n";
foreach (array_map('chr', array_merge(range(0xa1, 0xfe))) as $c) {
var_dump(_bin2hex(htmlspecialchars("$c", ENT_QUOTES, 'EUC-JP')));
var_dump(_bin2hex(htmlspecialchars("$c\x26", ENT_QUOTES, 'EUC-JP')));
@@ -117,12 +118,12 @@ foreach (array_map('chr', array_merge(range(0xa1, 0xfe))) as $c) {
}
echo "--\n";
-// BIG5: non-lead byte >= 0x80
+echo "BIG5: non-lead byte >= 0x80\n";
var_dump(_bin2hex(htmlspecialchars("\x80", ENT_QUOTES, 'BIG5')));
var_dump(_bin2hex(htmlspecialchars("\xff", ENT_QUOTES, 'BIG5')));
echo "--\n";
-// BIG5: incomplete / invalid multibyte sequences
+echo "BIG5: incomplete / invalid multibyte sequences\n";
foreach (array_map('chr', range(0x81, 0xfe)) as $c) {
var_dump(_bin2hex(htmlspecialchars("$c", ENT_QUOTES, 'BIG5')));
var_dump(_bin2hex(htmlspecialchars("$c\x3f", ENT_QUOTES, 'BIG5')));
@@ -137,6 +138,7 @@ foreach (array_map('chr', range(0x81, 0xfe)) as $c) {
}
?>
--EXPECT--
+UTF-8: basic tests
string(0) ""
string(4) "c280"
string(0) ""
@@ -165,10 +167,12 @@ string(0) ""
string(0) ""
string(0) ""
--
+UTF-8: with ENT_IGNORE
string(4) "c280"
string(6) "e0a080"
string(8) "f0908080"
--
+UTF-8: alternative (invalid) UTF-8 sequence / surrogate pairs
string(0) ""
string(0) ""
string(0) ""
@@ -176,8 +180,10 @@ string(6) "ecbfbf"
string(0) ""
string(0) ""
string(6) "ee8080"
-string(2) "80"
-string(2) "a0"
+--
+Shift_JIS: non-lead byte >= 0x80
+string(0) ""
+string(0) ""
string(2) "a1"
string(2) "a2"
string(2) "a3"
@@ -241,10 +247,11 @@ string(2) "dc"
string(2) "dd"
string(2) "de"
string(2) "df"
-string(2) "fd"
-string(2) "fe"
-string(2) "ff"
+string(0) ""
+string(0) ""
+string(0) ""
--
+Shift_JIS: incomplete / invalid multibyte sequences
string(0) ""
string(0) ""
string(4) "8140"
@@ -846,6 +853,7 @@ string(0) ""
string(0) ""
string(0) ""
--
+EUC-JP: non-lead byte >= 0x80
string(2) "80"
string(2) "81"
string(2) "82"
@@ -876,7 +884,7 @@ string(2) "9c"
string(2) "9d"
string(2) "9e"
string(2) "9f"
-string(2) "ff"
+string(0) ""
string(0) ""
string(0) ""
string(4) "8ea1"
@@ -884,6 +892,7 @@ string(0) ""
string(0) ""
string(6) "8fa1a3"
--
+EUC-JP: incomplete / invalid multibyte sequences
string(0) ""
string(0) ""
string(0) ""
@@ -894,10 +903,10 @@ string(0) ""
string(4) "8ea1"
string(14) "8ea126616d703b"
string(6) "8ea180"
-string(6) "8ea1a0"
string(0) ""
string(0) ""
-string(6) "8ea1ff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -915,10 +924,10 @@ string(0) ""
string(4) "8ea2"
string(14) "8ea226616d703b"
string(6) "8ea280"
-string(6) "8ea2a0"
string(0) ""
string(0) ""
-string(6) "8ea2ff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -936,10 +945,10 @@ string(0) ""
string(4) "8ea3"
string(14) "8ea326616d703b"
string(6) "8ea380"
-string(6) "8ea3a0"
string(0) ""
string(0) ""
-string(6) "8ea3ff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -957,10 +966,10 @@ string(0) ""
string(4) "8ea4"
string(14) "8ea426616d703b"
string(6) "8ea480"
-string(6) "8ea4a0"
string(0) ""
string(0) ""
-string(6) "8ea4ff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -978,10 +987,10 @@ string(0) ""
string(4) "8ea5"
string(14) "8ea526616d703b"
string(6) "8ea580"
-string(6) "8ea5a0"
string(0) ""
string(0) ""
-string(6) "8ea5ff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -999,10 +1008,10 @@ string(0) ""
string(4) "8ea6"
string(14) "8ea626616d703b"
string(6) "8ea680"
-string(6) "8ea6a0"
string(0) ""
string(0) ""
-string(6) "8ea6ff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -1020,10 +1029,10 @@ string(0) ""
string(4) "8ea7"
string(14) "8ea726616d703b"
string(6) "8ea780"
-string(6) "8ea7a0"
string(0) ""
string(0) ""
-string(6) "8ea7ff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -1041,10 +1050,10 @@ string(0) ""
string(4) "8ea8"
string(14) "8ea826616d703b"
string(6) "8ea880"
-string(6) "8ea8a0"
string(0) ""
string(0) ""
-string(6) "8ea8ff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -1062,10 +1071,10 @@ string(0) ""
string(4) "8ea9"
string(14) "8ea926616d703b"
string(6) "8ea980"
-string(6) "8ea9a0"
string(0) ""
string(0) ""
-string(6) "8ea9ff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -1083,10 +1092,10 @@ string(0) ""
string(4) "8eaa"
string(14) "8eaa26616d703b"
string(6) "8eaa80"
-string(6) "8eaaa0"
string(0) ""
string(0) ""
-string(6) "8eaaff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -1104,10 +1113,10 @@ string(0) ""
string(4) "8eab"
string(14) "8eab26616d703b"
string(6) "8eab80"
-string(6) "8eaba0"
string(0) ""
string(0) ""
-string(6) "8eabff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -1125,10 +1134,10 @@ string(0) ""
string(4) "8eac"
string(14) "8eac26616d703b"
string(6) "8eac80"
-string(6) "8eaca0"
string(0) ""
string(0) ""
-string(6) "8eacff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -1146,10 +1155,10 @@ string(0) ""
string(4) "8ead"
string(14) "8ead26616d703b"
string(6) "8ead80"
-string(6) "8eada0"
string(0) ""
string(0) ""
-string(6) "8eadff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -1167,10 +1176,10 @@ string(0) ""
string(4) "8eae"
string(14) "8eae26616d703b"
string(6) "8eae80"
-string(6) "8eaea0"
string(0) ""
string(0) ""
-string(6) "8eaeff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -1188,10 +1197,10 @@ string(0) ""
string(4) "8eaf"
string(14) "8eaf26616d703b"
string(6) "8eaf80"
-string(6) "8eafa0"
string(0) ""
string(0) ""
-string(6) "8eafff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -1209,10 +1218,10 @@ string(0) ""
string(4) "8eb0"
string(14) "8eb026616d703b"
string(6) "8eb080"
-string(6) "8eb0a0"
string(0) ""
string(0) ""
-string(6) "8eb0ff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -1230,10 +1239,10 @@ string(0) ""
string(4) "8eb1"
string(14) "8eb126616d703b"
string(6) "8eb180"
-string(6) "8eb1a0"
string(0) ""
string(0) ""
-string(6) "8eb1ff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -1251,10 +1260,10 @@ string(0) ""
string(4) "8eb2"
string(14) "8eb226616d703b"
string(6) "8eb280"
-string(6) "8eb2a0"
string(0) ""
string(0) ""
-string(6) "8eb2ff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -1272,10 +1281,10 @@ string(0) ""
string(4) "8eb3"
string(14) "8eb326616d703b"
string(6) "8eb380"
-string(6) "8eb3a0"
string(0) ""
string(0) ""
-string(6) "8eb3ff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -1293,10 +1302,10 @@ string(0) ""
string(4) "8eb4"
string(14) "8eb426616d703b"
string(6) "8eb480"
-string(6) "8eb4a0"
string(0) ""
string(0) ""
-string(6) "8eb4ff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -1314,10 +1323,10 @@ string(0) ""
string(4) "8eb5"
string(14) "8eb526616d703b"
string(6) "8eb580"
-string(6) "8eb5a0"
string(0) ""
string(0) ""
-string(6) "8eb5ff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -1335,10 +1344,10 @@ string(0) ""
string(4) "8eb6"
string(14) "8eb626616d703b"
string(6) "8eb680"
-string(6) "8eb6a0"
string(0) ""
string(0) ""
-string(6) "8eb6ff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -1356,10 +1365,10 @@ string(0) ""
string(4) "8eb7"
string(14) "8eb726616d703b"
string(6) "8eb780"
-string(6) "8eb7a0"
string(0) ""
string(0) ""
-string(6) "8eb7ff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -1377,10 +1386,10 @@ string(0) ""
string(4) "8eb8"
string(14) "8eb826616d703b"
string(6) "8eb880"
-string(6) "8eb8a0"
string(0) ""
string(0) ""
-string(6) "8eb8ff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -1398,10 +1407,10 @@ string(0) ""
string(4) "8eb9"
string(14) "8eb926616d703b"
string(6) "8eb980"
-string(6) "8eb9a0"
string(0) ""
string(0) ""
-string(6) "8eb9ff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -1419,10 +1428,10 @@ string(0) ""
string(4) "8eba"
string(14) "8eba26616d703b"
string(6) "8eba80"
-string(6) "8ebaa0"
string(0) ""
string(0) ""
-string(6) "8ebaff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -1440,10 +1449,10 @@ string(0) ""
string(4) "8ebb"
string(14) "8ebb26616d703b"
string(6) "8ebb80"
-string(6) "8ebba0"
string(0) ""
string(0) ""
-string(6) "8ebbff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -1461,10 +1470,10 @@ string(0) ""
string(4) "8ebc"
string(14) "8ebc26616d703b"
string(6) "8ebc80"
-string(6) "8ebca0"
string(0) ""
string(0) ""
-string(6) "8ebcff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -1482,10 +1491,10 @@ string(0) ""
string(4) "8ebd"
string(14) "8ebd26616d703b"
string(6) "8ebd80"
-string(6) "8ebda0"
string(0) ""
string(0) ""
-string(6) "8ebdff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -1503,10 +1512,10 @@ string(0) ""
string(4) "8ebe"
string(14) "8ebe26616d703b"
string(6) "8ebe80"
-string(6) "8ebea0"
string(0) ""
string(0) ""
-string(6) "8ebeff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -1524,10 +1533,10 @@ string(0) ""
string(4) "8ebf"
string(14) "8ebf26616d703b"
string(6) "8ebf80"
-string(6) "8ebfa0"
string(0) ""
string(0) ""
-string(6) "8ebfff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -1545,10 +1554,10 @@ string(0) ""
string(4) "8ec0"
string(14) "8ec026616d703b"
string(6) "8ec080"
-string(6) "8ec0a0"
string(0) ""
string(0) ""
-string(6) "8ec0ff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -1566,10 +1575,10 @@ string(0) ""
string(4) "8ec1"
string(14) "8ec126616d703b"
string(6) "8ec180"
-string(6) "8ec1a0"
string(0) ""
string(0) ""
-string(6) "8ec1ff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -1587,10 +1596,10 @@ string(0) ""
string(4) "8ec2"
string(14) "8ec226616d703b"
string(6) "8ec280"
-string(6) "8ec2a0"
string(0) ""
string(0) ""
-string(6) "8ec2ff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -1608,10 +1617,10 @@ string(0) ""
string(4) "8ec3"
string(14) "8ec326616d703b"
string(6) "8ec380"
-string(6) "8ec3a0"
string(0) ""
string(0) ""
-string(6) "8ec3ff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -1629,10 +1638,10 @@ string(0) ""
string(4) "8ec4"
string(14) "8ec426616d703b"
string(6) "8ec480"
-string(6) "8ec4a0"
string(0) ""
string(0) ""
-string(6) "8ec4ff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -1650,10 +1659,10 @@ string(0) ""
string(4) "8ec5"
string(14) "8ec526616d703b"
string(6) "8ec580"
-string(6) "8ec5a0"
string(0) ""
string(0) ""
-string(6) "8ec5ff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -1671,10 +1680,10 @@ string(0) ""
string(4) "8ec6"
string(14) "8ec626616d703b"
string(6) "8ec680"
-string(6) "8ec6a0"
string(0) ""
string(0) ""
-string(6) "8ec6ff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -1692,10 +1701,10 @@ string(0) ""
string(4) "8ec7"
string(14) "8ec726616d703b"
string(6) "8ec780"
-string(6) "8ec7a0"
string(0) ""
string(0) ""
-string(6) "8ec7ff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -1713,10 +1722,10 @@ string(0) ""
string(4) "8ec8"
string(14) "8ec826616d703b"
string(6) "8ec880"
-string(6) "8ec8a0"
string(0) ""
string(0) ""
-string(6) "8ec8ff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -1734,10 +1743,10 @@ string(0) ""
string(4) "8ec9"
string(14) "8ec926616d703b"
string(6) "8ec980"
-string(6) "8ec9a0"
string(0) ""
string(0) ""
-string(6) "8ec9ff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -1755,10 +1764,10 @@ string(0) ""
string(4) "8eca"
string(14) "8eca26616d703b"
string(6) "8eca80"
-string(6) "8ecaa0"
string(0) ""
string(0) ""
-string(6) "8ecaff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -1776,10 +1785,10 @@ string(0) ""
string(4) "8ecb"
string(14) "8ecb26616d703b"
string(6) "8ecb80"
-string(6) "8ecba0"
string(0) ""
string(0) ""
-string(6) "8ecbff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -1797,10 +1806,10 @@ string(0) ""
string(4) "8ecc"
string(14) "8ecc26616d703b"
string(6) "8ecc80"
-string(6) "8ecca0"
string(0) ""
string(0) ""
-string(6) "8eccff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -1818,10 +1827,10 @@ string(0) ""
string(4) "8ecd"
string(14) "8ecd26616d703b"
string(6) "8ecd80"
-string(6) "8ecda0"
string(0) ""
string(0) ""
-string(6) "8ecdff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -1839,10 +1848,10 @@ string(0) ""
string(4) "8ece"
string(14) "8ece26616d703b"
string(6) "8ece80"
-string(6) "8ecea0"
string(0) ""
string(0) ""
-string(6) "8eceff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -1860,10 +1869,10 @@ string(0) ""
string(4) "8ecf"
string(14) "8ecf26616d703b"
string(6) "8ecf80"
-string(6) "8ecfa0"
string(0) ""
string(0) ""
-string(6) "8ecfff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -1881,10 +1890,10 @@ string(0) ""
string(4) "8ed0"
string(14) "8ed026616d703b"
string(6) "8ed080"
-string(6) "8ed0a0"
string(0) ""
string(0) ""
-string(6) "8ed0ff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -1902,10 +1911,10 @@ string(0) ""
string(4) "8ed1"
string(14) "8ed126616d703b"
string(6) "8ed180"
-string(6) "8ed1a0"
string(0) ""
string(0) ""
-string(6) "8ed1ff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -1923,10 +1932,10 @@ string(0) ""
string(4) "8ed2"
string(14) "8ed226616d703b"
string(6) "8ed280"
-string(6) "8ed2a0"
string(0) ""
string(0) ""
-string(6) "8ed2ff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -1944,10 +1953,10 @@ string(0) ""
string(4) "8ed3"
string(14) "8ed326616d703b"
string(6) "8ed380"
-string(6) "8ed3a0"
string(0) ""
string(0) ""
-string(6) "8ed3ff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -1965,10 +1974,10 @@ string(0) ""
string(4) "8ed4"
string(14) "8ed426616d703b"
string(6) "8ed480"
-string(6) "8ed4a0"
string(0) ""
string(0) ""
-string(6) "8ed4ff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -1986,10 +1995,10 @@ string(0) ""
string(4) "8ed5"
string(14) "8ed526616d703b"
string(6) "8ed580"
-string(6) "8ed5a0"
string(0) ""
string(0) ""
-string(6) "8ed5ff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -2007,10 +2016,10 @@ string(0) ""
string(4) "8ed6"
string(14) "8ed626616d703b"
string(6) "8ed680"
-string(6) "8ed6a0"
string(0) ""
string(0) ""
-string(6) "8ed6ff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -2028,10 +2037,10 @@ string(0) ""
string(4) "8ed7"
string(14) "8ed726616d703b"
string(6) "8ed780"
-string(6) "8ed7a0"
string(0) ""
string(0) ""
-string(6) "8ed7ff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -2049,10 +2058,10 @@ string(0) ""
string(4) "8ed8"
string(14) "8ed826616d703b"
string(6) "8ed880"
-string(6) "8ed8a0"
string(0) ""
string(0) ""
-string(6) "8ed8ff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -2070,10 +2079,10 @@ string(0) ""
string(4) "8ed9"
string(14) "8ed926616d703b"
string(6) "8ed980"
-string(6) "8ed9a0"
string(0) ""
string(0) ""
-string(6) "8ed9ff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -2091,10 +2100,10 @@ string(0) ""
string(4) "8eda"
string(14) "8eda26616d703b"
string(6) "8eda80"
-string(6) "8edaa0"
string(0) ""
string(0) ""
-string(6) "8edaff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -2112,10 +2121,10 @@ string(0) ""
string(4) "8edb"
string(14) "8edb26616d703b"
string(6) "8edb80"
-string(6) "8edba0"
string(0) ""
string(0) ""
-string(6) "8edbff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -2133,10 +2142,10 @@ string(0) ""
string(4) "8edc"
string(14) "8edc26616d703b"
string(6) "8edc80"
-string(6) "8edca0"
string(0) ""
string(0) ""
-string(6) "8edcff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -2154,10 +2163,10 @@ string(0) ""
string(4) "8edd"
string(14) "8edd26616d703b"
string(6) "8edd80"
-string(6) "8edda0"
string(0) ""
string(0) ""
-string(6) "8eddff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -2175,10 +2184,10 @@ string(0) ""
string(4) "8ede"
string(14) "8ede26616d703b"
string(6) "8ede80"
-string(6) "8edea0"
string(0) ""
string(0) ""
-string(6) "8edeff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -2196,10 +2205,10 @@ string(0) ""
string(4) "8edf"
string(14) "8edf26616d703b"
string(6) "8edf80"
-string(6) "8edfa0"
string(0) ""
string(0) ""
-string(6) "8edfff"
+string(0) ""
+string(0) ""
string(0) ""
string(0) ""
string(0) ""
@@ -2859,9 +2868,11 @@ string(6) "8ffea1"
string(6) "8ffefe"
string(0) ""
--
+BIG5: non-lead byte >= 0x80
string(2) "80"
string(2) "ff"
--
+BIG5: incomplete / invalid multibyte sequences
string(0) ""
string(0) ""
string(4) "8140"
diff --git a/ext/standard/tests/strings/get_html_translation_table_basic1.phpt b/ext/standard/tests/strings/get_html_translation_table_basic1.phpt
index 0adafa3385..87857d9cbd 100644
--- a/ext/standard/tests/strings/get_html_translation_table_basic1.phpt
+++ b/ext/standard/tests/strings/get_html_translation_table_basic1.phpt
@@ -1,545 +1,549 @@
---TEST--
-Test get_html_translation_table() function : basic functionality - with default args
---FILE--
-<?php
-/* Prototype : array get_html_translation_table ( [int $table [, int $quote_style [, string charset_hint]]] )
- * Description: Returns the internal translation table used by htmlspecialchars and htmlentities
- * Source code: ext/standard/html.c
-*/
-
-/* Test get_html_translation_table() when table is specified as HTML_ENTITIES */
-
-
-echo "*** Testing get_html_translation_table() : basic functionality ***\n";
-
-echo "-- with table = HTML_ENTITIES --\n";
-$table = HTML_ENTITIES;
-var_dump( get_html_translation_table($table, ENT_COMPAT, "UTF-8") );
-
-echo "-- with table = HTML_SPECIALCHARS --\n";
-$table = HTML_SPECIALCHARS;
-var_dump( get_html_translation_table($table, ENT_COMPAT, "UTF-8") );
-
-echo "Done\n";
-?>
---EXPECTF--
-*** Testing get_html_translation_table() : basic functionality ***
--- with table = HTML_ENTITIES --
-array(252) {
- [" "]=>
- string(6) "&nbsp;"
- ["¡"]=>
- string(7) "&iexcl;"
- ["¢"]=>
- string(6) "&cent;"
- ["£"]=>
- string(7) "&pound;"
- ["¤"]=>
- string(8) "&curren;"
- ["Â¥"]=>
- string(5) "&yen;"
- ["¦"]=>
- string(8) "&brvbar;"
- ["§"]=>
- string(6) "&sect;"
- ["¨"]=>
- string(5) "&uml;"
- ["©"]=>
- string(6) "&copy;"
- ["ª"]=>
- string(6) "&ordf;"
- ["«"]=>
- string(7) "&laquo;"
- ["¬"]=>
- string(5) "&not;"
- ["­"]=>
- string(5) "&shy;"
- ["®"]=>
- string(5) "&reg;"
- ["¯"]=>
- string(6) "&macr;"
- ["°"]=>
- string(5) "&deg;"
- ["±"]=>
- string(8) "&plusmn;"
- ["²"]=>
- string(6) "&sup2;"
- ["³"]=>
- string(6) "&sup3;"
- ["´"]=>
- string(7) "&acute;"
- ["µ"]=>
- string(7) "&micro;"
- ["¶"]=>
- string(6) "&para;"
- ["·"]=>
- string(8) "&middot;"
- ["¸"]=>
- string(7) "&cedil;"
- ["¹"]=>
- string(6) "&sup1;"
- ["º"]=>
- string(6) "&ordm;"
- ["»"]=>
- string(7) "&raquo;"
- ["¼"]=>
- string(8) "&frac14;"
- ["½"]=>
- string(8) "&frac12;"
- ["¾"]=>
- string(8) "&frac34;"
- ["¿"]=>
- string(8) "&iquest;"
- ["À"]=>
- string(8) "&Agrave;"
- ["Ã"]=>
- string(8) "&Aacute;"
- ["Â"]=>
- string(7) "&Acirc;"
- ["Ã"]=>
- string(8) "&Atilde;"
- ["Ä"]=>
- string(6) "&Auml;"
- ["Ã…"]=>
- string(7) "&Aring;"
- ["Æ"]=>
- string(7) "&AElig;"
- ["Ç"]=>
- string(8) "&Ccedil;"
- ["È"]=>
- string(8) "&Egrave;"
- ["É"]=>
- string(8) "&Eacute;"
- ["Ê"]=>
- string(7) "&Ecirc;"
- ["Ë"]=>
- string(6) "&Euml;"
- ["Ì"]=>
- string(8) "&Igrave;"
- ["Ã"]=>
- string(8) "&Iacute;"
- ["ÃŽ"]=>
- string(7) "&Icirc;"
- ["Ã"]=>
- string(6) "&Iuml;"
- ["Ã"]=>
- string(5) "&ETH;"
- ["Ñ"]=>
- string(8) "&Ntilde;"
- ["Ã’"]=>
- string(8) "&Ograve;"
- ["Ó"]=>
- string(8) "&Oacute;"
- ["Ô"]=>
- string(7) "&Ocirc;"
- ["Õ"]=>
- string(8) "&Otilde;"
- ["Ö"]=>
- string(6) "&Ouml;"
- ["×"]=>
- string(7) "&times;"
- ["Ø"]=>
- string(8) "&Oslash;"
- ["Ù"]=>
- string(8) "&Ugrave;"
- ["Ú"]=>
- string(8) "&Uacute;"
- ["Û"]=>
- string(7) "&Ucirc;"
- ["Ü"]=>
- string(6) "&Uuml;"
- ["Ã"]=>
- string(8) "&Yacute;"
- ["Þ"]=>
- string(7) "&THORN;"
- ["ß"]=>
- string(7) "&szlig;"
- ["à"]=>
- string(8) "&agrave;"
- ["á"]=>
- string(8) "&aacute;"
- ["â"]=>
- string(7) "&acirc;"
- ["ã"]=>
- string(8) "&atilde;"
- ["ä"]=>
- string(6) "&auml;"
- ["Ã¥"]=>
- string(7) "&aring;"
- ["æ"]=>
- string(7) "&aelig;"
- ["ç"]=>
- string(8) "&ccedil;"
- ["è"]=>
- string(8) "&egrave;"
- ["é"]=>
- string(8) "&eacute;"
- ["ê"]=>
- string(7) "&ecirc;"
- ["ë"]=>
- string(6) "&euml;"
- ["ì"]=>
- string(8) "&igrave;"
- ["í"]=>
- string(8) "&iacute;"
- ["î"]=>
- string(7) "&icirc;"
- ["ï"]=>
- string(6) "&iuml;"
- ["ð"]=>
- string(5) "&eth;"
- ["ñ"]=>
- string(8) "&ntilde;"
- ["ò"]=>
- string(8) "&ograve;"
- ["ó"]=>
- string(8) "&oacute;"
- ["ô"]=>
- string(7) "&ocirc;"
- ["õ"]=>
- string(8) "&otilde;"
- ["ö"]=>
- string(6) "&ouml;"
- ["÷"]=>
- string(8) "&divide;"
- ["ø"]=>
- string(8) "&oslash;"
- ["ù"]=>
- string(8) "&ugrave;"
- ["ú"]=>
- string(8) "&uacute;"
- ["û"]=>
- string(7) "&ucirc;"
- ["ü"]=>
- string(6) "&uuml;"
- ["ý"]=>
- string(8) "&yacute;"
- ["þ"]=>
- string(7) "&thorn;"
- ["ÿ"]=>
- string(6) "&yuml;"
- ["Å’"]=>
- string(7) "&OElig;"
- ["Å“"]=>
- string(7) "&oelig;"
- ["Å "]=>
- string(8) "&Scaron;"
- ["Å¡"]=>
- string(8) "&scaron;"
- ["Ÿ"]=>
- string(6) "&Yuml;"
- ["Æ’"]=>
- string(6) "&fnof;"
- ["ˆ"]=>
- string(6) "&circ;"
- ["˜"]=>
- string(7) "&tilde;"
- ["Α"]=>
- string(7) "&Alpha;"
- ["Î’"]=>
- string(6) "&Beta;"
- ["Γ"]=>
- string(7) "&Gamma;"
- ["Δ"]=>
- string(7) "&Delta;"
- ["Ε"]=>
- string(9) "&Epsilon;"
- ["Ζ"]=>
- string(6) "&Zeta;"
- ["Η"]=>
- string(5) "&Eta;"
- ["Θ"]=>
- string(7) "&Theta;"
- ["Ι"]=>
- string(6) "&Iota;"
- ["Κ"]=>
- string(7) "&Kappa;"
- ["Λ"]=>
- string(8) "&Lambda;"
- ["Μ"]=>
- string(4) "&Mu;"
- ["Î"]=>
- string(4) "&Nu;"
- ["Ξ"]=>
- string(4) "&Xi;"
- ["Ο"]=>
- string(9) "&Omicron;"
- ["Π"]=>
- string(4) "&Pi;"
- ["Ρ"]=>
- string(5) "&Rho;"
- ["Σ"]=>
- string(7) "&Sigma;"
- ["Τ"]=>
- string(5) "&Tau;"
- ["Î¥"]=>
- string(9) "&Upsilon;"
- ["Φ"]=>
- string(5) "&Phi;"
- ["Χ"]=>
- string(5) "&Chi;"
- ["Ψ"]=>
- string(5) "&Psi;"
- ["Ω"]=>
- string(7) "&Omega;"
- ["α"]=>
- string(7) "&alpha;"
- ["β"]=>
- string(6) "&beta;"
- ["γ"]=>
- string(7) "&gamma;"
- ["δ"]=>
- string(7) "&delta;"
- ["ε"]=>
- string(9) "&epsilon;"
- ["ζ"]=>
- string(6) "&zeta;"
- ["η"]=>
- string(5) "&eta;"
- ["θ"]=>
- string(7) "&theta;"
- ["ι"]=>
- string(6) "&iota;"
- ["κ"]=>
- string(7) "&kappa;"
- ["λ"]=>
- string(8) "&lambda;"
- ["μ"]=>
- string(4) "&mu;"
- ["ν"]=>
- string(4) "&nu;"
- ["ξ"]=>
- string(4) "&xi;"
- ["ο"]=>
- string(9) "&omicron;"
- ["Ï€"]=>
- string(4) "&pi;"
- ["Ï"]=>
- string(5) "&rho;"
- ["Ï‚"]=>
- string(8) "&sigmaf;"
- ["σ"]=>
- string(7) "&sigma;"
- ["Ï„"]=>
- string(5) "&tau;"
- ["Ï…"]=>
- string(9) "&upsilon;"
- ["φ"]=>
- string(5) "&phi;"
- ["χ"]=>
- string(5) "&chi;"
- ["ψ"]=>
- string(5) "&psi;"
- ["ω"]=>
- string(7) "&omega;"
- ["Ï‘"]=>
- string(10) "&thetasym;"
- ["Ï’"]=>
- string(7) "&upsih;"
- ["Ï–"]=>
- string(5) "&piv;"
- [" "]=>
- string(6) "&ensp;"
- [" "]=>
- string(6) "&emsp;"
- [" "]=>
- string(8) "&thinsp;"
- ["‌"]=>
- string(6) "&zwnj;"
- ["â€"]=>
- string(5) "&zwj;"
- ["‎"]=>
- string(5) "&lrm;"
- ["â€"]=>
- string(5) "&rlm;"
- ["–"]=>
- string(7) "&ndash;"
- ["—"]=>
- string(7) "&mdash;"
- ["‘"]=>
- string(7) "&lsquo;"
- ["’"]=>
- string(7) "&rsquo;"
- ["‚"]=>
- string(7) "&sbquo;"
- ["“"]=>
- string(7) "&ldquo;"
- ["â€"]=>
- string(7) "&rdquo;"
- ["„"]=>
- string(7) "&bdquo;"
- ["†"]=>
- string(8) "&dagger;"
- ["‡"]=>
- string(8) "&Dagger;"
- ["•"]=>
- string(6) "&bull;"
- ["…"]=>
- string(8) "&hellip;"
- ["‰"]=>
- string(8) "&permil;"
- ["′"]=>
- string(7) "&prime;"
- ["″"]=>
- string(7) "&Prime;"
- ["‹"]=>
- string(8) "&lsaquo;"
- ["›"]=>
- string(8) "&rsaquo;"
- ["‾"]=>
- string(7) "&oline;"
- ["â„"]=>
- string(7) "&frasl;"
- ["€"]=>
- string(6) "&euro;"
- ["â„‘"]=>
- string(7) "&image;"
- ["℘"]=>
- string(8) "&weierp;"
- ["ℜ"]=>
- string(6) "&real;"
- ["â„¢"]=>
- string(7) "&trade;"
- ["ℵ"]=>
- string(9) "&alefsym;"
- ["â†"]=>
- string(6) "&larr;"
- ["↑"]=>
- string(6) "&uarr;"
- ["→"]=>
- string(6) "&rarr;"
- ["↓"]=>
- string(6) "&darr;"
- ["↔"]=>
- string(6) "&harr;"
- ["↵"]=>
- string(7) "&crarr;"
- ["â‡"]=>
- string(6) "&lArr;"
- ["⇑"]=>
- string(6) "&uArr;"
- ["⇒"]=>
- string(6) "&rArr;"
- ["⇓"]=>
- string(6) "&dArr;"
- ["⇔"]=>
- string(6) "&hArr;"
- ["∀"]=>
- string(8) "&forall;"
- ["∂"]=>
- string(6) "&part;"
- ["∃"]=>
- string(7) "&exist;"
- ["∅"]=>
- string(7) "&empty;"
- ["∇"]=>
- string(7) "&nabla;"
- ["∈"]=>
- string(6) "&isin;"
- ["∉"]=>
- string(7) "&notin;"
- ["∋"]=>
- string(4) "&ni;"
- ["âˆ"]=>
- string(6) "&prod;"
- ["∑"]=>
- string(5) "&sum;"
- ["−"]=>
- string(7) "&minus;"
- ["∗"]=>
- string(8) "&lowast;"
- ["√"]=>
- string(7) "&radic;"
- ["âˆ"]=>
- string(6) "&prop;"
- ["∞"]=>
- string(7) "&infin;"
- ["∠"]=>
- string(5) "&ang;"
- ["∧"]=>
- string(5) "&and;"
- ["∨"]=>
- string(4) "&or;"
- ["∩"]=>
- string(5) "&cap;"
- ["∪"]=>
- string(5) "&cup;"
- ["∫"]=>
- string(5) "&int;"
- ["∴"]=>
- string(8) "&there4;"
- ["∼"]=>
- string(5) "&sim;"
- ["≅"]=>
- string(6) "&cong;"
- ["≈"]=>
- string(7) "&asymp;"
- ["≠"]=>
- string(4) "&ne;"
- ["≡"]=>
- string(7) "&equiv;"
- ["≤"]=>
- string(4) "&le;"
- ["≥"]=>
- string(4) "&ge;"
- ["⊂"]=>
- string(5) "&sub;"
- ["⊃"]=>
- string(5) "&sup;"
- ["⊄"]=>
- string(6) "&nsub;"
- ["⊆"]=>
- string(6) "&sube;"
- ["⊇"]=>
- string(6) "&supe;"
- ["⊕"]=>
- string(7) "&oplus;"
- ["⊗"]=>
- string(8) "&otimes;"
- ["⊥"]=>
- string(6) "&perp;"
- ["â‹…"]=>
- string(6) "&sdot;"
- ["⌈"]=>
- string(7) "&lceil;"
- ["⌉"]=>
- string(7) "&rceil;"
- ["⌊"]=>
- string(8) "&lfloor;"
- ["⌋"]=>
- string(8) "&rfloor;"
- ["〈"]=>
- string(6) "&lang;"
- ["〉"]=>
- string(6) "&rang;"
- ["â—Š"]=>
- string(5) "&loz;"
- ["â™ "]=>
- string(8) "&spades;"
- ["♣"]=>
- string(7) "&clubs;"
- ["♥"]=>
- string(8) "&hearts;"
- ["♦"]=>
- string(7) "&diams;"
- ["&"]=>
- string(5) "&amp;"
- ["""]=>
- string(6) "&quot;"
- ["<"]=>
- string(4) "&lt;"
- [">"]=>
- string(4) "&gt;"
-}
--- with table = HTML_SPECIALCHARS --
-array(4) {
- ["&"]=>
- string(5) "&amp;"
- ["""]=>
- string(6) "&quot;"
- ["<"]=>
- string(4) "&lt;"
- [">"]=>
- string(4) "&gt;"
-}
-Done
+--TEST--
+Test get_html_translation_table() function : basic functionality - with default args
+--FILE--
+<?php
+/* Prototype : array get_html_translation_table ( [int $table [, int $quote_style [, string charset_hint]]] )
+ * Description: Returns the internal translation table used by htmlspecialchars and htmlentities
+ * Source code: ext/standard/html.c
+*/
+
+/* Test get_html_translation_table() when table is specified as HTML_ENTITIES */
+
+
+echo "*** Testing get_html_translation_table() : basic functionality ***\n";
+
+echo "-- with table = HTML_ENTITIES --\n";
+$table = HTML_ENTITIES;
+$tt = get_html_translation_table($table, ENT_COMPAT, "UTF-8");
+asort($tt);
+var_dump( $tt );
+
+echo "-- with table = HTML_SPECIALCHARS --\n";
+$table = HTML_SPECIALCHARS;
+$tt = get_html_translation_table($table, ENT_COMPAT, "UTF-8");
+asort($tt);
+var_dump( $tt );
+
+echo "Done\n";
+?>
+--EXPECT--
+*** Testing get_html_translation_table() : basic functionality ***
+-- with table = HTML_ENTITIES --
+array(252) {
+ ["Æ"]=>
+ string(7) "&AElig;"
+ ["Ã"]=>
+ string(8) "&Aacute;"
+ ["Â"]=>
+ string(7) "&Acirc;"
+ ["À"]=>
+ string(8) "&Agrave;"
+ ["Α"]=>
+ string(7) "&Alpha;"
+ ["Ã…"]=>
+ string(7) "&Aring;"
+ ["Ã"]=>
+ string(8) "&Atilde;"
+ ["Ä"]=>
+ string(6) "&Auml;"
+ ["Î’"]=>
+ string(6) "&Beta;"
+ ["Ç"]=>
+ string(8) "&Ccedil;"
+ ["Χ"]=>
+ string(5) "&Chi;"
+ ["‡"]=>
+ string(8) "&Dagger;"
+ ["Δ"]=>
+ string(7) "&Delta;"
+ ["Ã"]=>
+ string(5) "&ETH;"
+ ["É"]=>
+ string(8) "&Eacute;"
+ ["Ê"]=>
+ string(7) "&Ecirc;"
+ ["È"]=>
+ string(8) "&Egrave;"
+ ["Ε"]=>
+ string(9) "&Epsilon;"
+ ["Η"]=>
+ string(5) "&Eta;"
+ ["Ë"]=>
+ string(6) "&Euml;"
+ ["Γ"]=>
+ string(7) "&Gamma;"
+ ["Ã"]=>
+ string(8) "&Iacute;"
+ ["ÃŽ"]=>
+ string(7) "&Icirc;"
+ ["Ì"]=>
+ string(8) "&Igrave;"
+ ["Ι"]=>
+ string(6) "&Iota;"
+ ["Ã"]=>
+ string(6) "&Iuml;"
+ ["Κ"]=>
+ string(7) "&Kappa;"
+ ["Λ"]=>
+ string(8) "&Lambda;"
+ ["Μ"]=>
+ string(4) "&Mu;"
+ ["Ñ"]=>
+ string(8) "&Ntilde;"
+ ["Î"]=>
+ string(4) "&Nu;"
+ ["Å’"]=>
+ string(7) "&OElig;"
+ ["Ó"]=>
+ string(8) "&Oacute;"
+ ["Ô"]=>
+ string(7) "&Ocirc;"
+ ["Ã’"]=>
+ string(8) "&Ograve;"
+ ["Ω"]=>
+ string(7) "&Omega;"
+ ["Ο"]=>
+ string(9) "&Omicron;"
+ ["Ø"]=>
+ string(8) "&Oslash;"
+ ["Õ"]=>
+ string(8) "&Otilde;"
+ ["Ö"]=>
+ string(6) "&Ouml;"
+ ["Φ"]=>
+ string(5) "&Phi;"
+ ["Π"]=>
+ string(4) "&Pi;"
+ ["″"]=>
+ string(7) "&Prime;"
+ ["Ψ"]=>
+ string(5) "&Psi;"
+ ["Ρ"]=>
+ string(5) "&Rho;"
+ ["Å "]=>
+ string(8) "&Scaron;"
+ ["Σ"]=>
+ string(7) "&Sigma;"
+ ["Þ"]=>
+ string(7) "&THORN;"
+ ["Τ"]=>
+ string(5) "&Tau;"
+ ["Θ"]=>
+ string(7) "&Theta;"
+ ["Ú"]=>
+ string(8) "&Uacute;"
+ ["Û"]=>
+ string(7) "&Ucirc;"
+ ["Ù"]=>
+ string(8) "&Ugrave;"
+ ["Î¥"]=>
+ string(9) "&Upsilon;"
+ ["Ü"]=>
+ string(6) "&Uuml;"
+ ["Ξ"]=>
+ string(4) "&Xi;"
+ ["Ã"]=>
+ string(8) "&Yacute;"
+ ["Ÿ"]=>
+ string(6) "&Yuml;"
+ ["Ζ"]=>
+ string(6) "&Zeta;"
+ ["á"]=>
+ string(8) "&aacute;"
+ ["â"]=>
+ string(7) "&acirc;"
+ ["´"]=>
+ string(7) "&acute;"
+ ["æ"]=>
+ string(7) "&aelig;"
+ ["à"]=>
+ string(8) "&agrave;"
+ ["ℵ"]=>
+ string(9) "&alefsym;"
+ ["α"]=>
+ string(7) "&alpha;"
+ ["&"]=>
+ string(5) "&amp;"
+ ["∧"]=>
+ string(5) "&and;"
+ ["∠"]=>
+ string(5) "&ang;"
+ ["Ã¥"]=>
+ string(7) "&aring;"
+ ["≈"]=>
+ string(7) "&asymp;"
+ ["ã"]=>
+ string(8) "&atilde;"
+ ["ä"]=>
+ string(6) "&auml;"
+ ["„"]=>
+ string(7) "&bdquo;"
+ ["β"]=>
+ string(6) "&beta;"
+ ["¦"]=>
+ string(8) "&brvbar;"
+ ["•"]=>
+ string(6) "&bull;"
+ ["∩"]=>
+ string(5) "&cap;"
+ ["ç"]=>
+ string(8) "&ccedil;"
+ ["¸"]=>
+ string(7) "&cedil;"
+ ["¢"]=>
+ string(6) "&cent;"
+ ["χ"]=>
+ string(5) "&chi;"
+ ["ˆ"]=>
+ string(6) "&circ;"
+ ["♣"]=>
+ string(7) "&clubs;"
+ ["≅"]=>
+ string(6) "&cong;"
+ ["©"]=>
+ string(6) "&copy;"
+ ["↵"]=>
+ string(7) "&crarr;"
+ ["∪"]=>
+ string(5) "&cup;"
+ ["¤"]=>
+ string(8) "&curren;"
+ ["⇓"]=>
+ string(6) "&dArr;"
+ ["†"]=>
+ string(8) "&dagger;"
+ ["↓"]=>
+ string(6) "&darr;"
+ ["°"]=>
+ string(5) "&deg;"
+ ["δ"]=>
+ string(7) "&delta;"
+ ["♦"]=>
+ string(7) "&diams;"
+ ["÷"]=>
+ string(8) "&divide;"
+ ["é"]=>
+ string(8) "&eacute;"
+ ["ê"]=>
+ string(7) "&ecirc;"
+ ["è"]=>
+ string(8) "&egrave;"
+ ["∅"]=>
+ string(7) "&empty;"
+ [" "]=>
+ string(6) "&emsp;"
+ [" "]=>
+ string(6) "&ensp;"
+ ["ε"]=>
+ string(9) "&epsilon;"
+ ["≡"]=>
+ string(7) "&equiv;"
+ ["η"]=>
+ string(5) "&eta;"
+ ["ð"]=>
+ string(5) "&eth;"
+ ["ë"]=>
+ string(6) "&euml;"
+ ["€"]=>
+ string(6) "&euro;"
+ ["∃"]=>
+ string(7) "&exist;"
+ ["Æ’"]=>
+ string(6) "&fnof;"
+ ["∀"]=>
+ string(8) "&forall;"
+ ["½"]=>
+ string(8) "&frac12;"
+ ["¼"]=>
+ string(8) "&frac14;"
+ ["¾"]=>
+ string(8) "&frac34;"
+ ["â„"]=>
+ string(7) "&frasl;"
+ ["γ"]=>
+ string(7) "&gamma;"
+ ["≥"]=>
+ string(4) "&ge;"
+ [">"]=>
+ string(4) "&gt;"
+ ["⇔"]=>
+ string(6) "&hArr;"
+ ["↔"]=>
+ string(6) "&harr;"
+ ["♥"]=>
+ string(8) "&hearts;"
+ ["…"]=>
+ string(8) "&hellip;"
+ ["í"]=>
+ string(8) "&iacute;"
+ ["î"]=>
+ string(7) "&icirc;"
+ ["¡"]=>
+ string(7) "&iexcl;"
+ ["ì"]=>
+ string(8) "&igrave;"
+ ["â„‘"]=>
+ string(7) "&image;"
+ ["∞"]=>
+ string(7) "&infin;"
+ ["∫"]=>
+ string(5) "&int;"
+ ["ι"]=>
+ string(6) "&iota;"
+ ["¿"]=>
+ string(8) "&iquest;"
+ ["∈"]=>
+ string(6) "&isin;"
+ ["ï"]=>
+ string(6) "&iuml;"
+ ["κ"]=>
+ string(7) "&kappa;"
+ ["â‡"]=>
+ string(6) "&lArr;"
+ ["λ"]=>
+ string(8) "&lambda;"
+ ["〈"]=>
+ string(6) "&lang;"
+ ["«"]=>
+ string(7) "&laquo;"
+ ["â†"]=>
+ string(6) "&larr;"
+ ["⌈"]=>
+ string(7) "&lceil;"
+ ["“"]=>
+ string(7) "&ldquo;"
+ ["≤"]=>
+ string(4) "&le;"
+ ["⌊"]=>
+ string(8) "&lfloor;"
+ ["∗"]=>
+ string(8) "&lowast;"
+ ["â—Š"]=>
+ string(5) "&loz;"
+ ["‎"]=>
+ string(5) "&lrm;"
+ ["‹"]=>
+ string(8) "&lsaquo;"
+ ["‘"]=>
+ string(7) "&lsquo;"
+ ["<"]=>
+ string(4) "&lt;"
+ ["¯"]=>
+ string(6) "&macr;"
+ ["—"]=>
+ string(7) "&mdash;"
+ ["µ"]=>
+ string(7) "&micro;"
+ ["·"]=>
+ string(8) "&middot;"
+ ["−"]=>
+ string(7) "&minus;"
+ ["μ"]=>
+ string(4) "&mu;"
+ ["∇"]=>
+ string(7) "&nabla;"
+ [" "]=>
+ string(6) "&nbsp;"
+ ["–"]=>
+ string(7) "&ndash;"
+ ["≠"]=>
+ string(4) "&ne;"
+ ["∋"]=>
+ string(4) "&ni;"
+ ["¬"]=>
+ string(5) "&not;"
+ ["∉"]=>
+ string(7) "&notin;"
+ ["⊄"]=>
+ string(6) "&nsub;"
+ ["ñ"]=>
+ string(8) "&ntilde;"
+ ["ν"]=>
+ string(4) "&nu;"
+ ["ó"]=>
+ string(8) "&oacute;"
+ ["ô"]=>
+ string(7) "&ocirc;"
+ ["Å“"]=>
+ string(7) "&oelig;"
+ ["ò"]=>
+ string(8) "&ograve;"
+ ["‾"]=>
+ string(7) "&oline;"
+ ["ω"]=>
+ string(7) "&omega;"
+ ["ο"]=>
+ string(9) "&omicron;"
+ ["⊕"]=>
+ string(7) "&oplus;"
+ ["∨"]=>
+ string(4) "&or;"
+ ["ª"]=>
+ string(6) "&ordf;"
+ ["º"]=>
+ string(6) "&ordm;"
+ ["ø"]=>
+ string(8) "&oslash;"
+ ["õ"]=>
+ string(8) "&otilde;"
+ ["⊗"]=>
+ string(8) "&otimes;"
+ ["ö"]=>
+ string(6) "&ouml;"
+ ["¶"]=>
+ string(6) "&para;"
+ ["∂"]=>
+ string(6) "&part;"
+ ["‰"]=>
+ string(8) "&permil;"
+ ["⊥"]=>
+ string(6) "&perp;"
+ ["φ"]=>
+ string(5) "&phi;"
+ ["Ï€"]=>
+ string(4) "&pi;"
+ ["Ï–"]=>
+ string(5) "&piv;"
+ ["±"]=>
+ string(8) "&plusmn;"
+ ["£"]=>
+ string(7) "&pound;"
+ ["′"]=>
+ string(7) "&prime;"
+ ["âˆ"]=>
+ string(6) "&prod;"
+ ["âˆ"]=>
+ string(6) "&prop;"
+ ["ψ"]=>
+ string(5) "&psi;"
+ ["""]=>
+ string(6) "&quot;"
+ ["⇒"]=>
+ string(6) "&rArr;"
+ ["√"]=>
+ string(7) "&radic;"
+ ["〉"]=>
+ string(6) "&rang;"
+ ["»"]=>
+ string(7) "&raquo;"
+ ["→"]=>
+ string(6) "&rarr;"
+ ["⌉"]=>
+ string(7) "&rceil;"
+ ["â€"]=>
+ string(7) "&rdquo;"
+ ["ℜ"]=>
+ string(6) "&real;"
+ ["®"]=>
+ string(5) "&reg;"
+ ["⌋"]=>
+ string(8) "&rfloor;"
+ ["Ï"]=>
+ string(5) "&rho;"
+ ["â€"]=>
+ string(5) "&rlm;"
+ ["›"]=>
+ string(8) "&rsaquo;"
+ ["’"]=>
+ string(7) "&rsquo;"
+ ["‚"]=>
+ string(7) "&sbquo;"
+ ["Å¡"]=>
+ string(8) "&scaron;"
+ ["â‹…"]=>
+ string(6) "&sdot;"
+ ["§"]=>
+ string(6) "&sect;"
+ ["­"]=>
+ string(5) "&shy;"
+ ["σ"]=>
+ string(7) "&sigma;"
+ ["Ï‚"]=>
+ string(8) "&sigmaf;"
+ ["∼"]=>
+ string(5) "&sim;"
+ ["â™ "]=>
+ string(8) "&spades;"
+ ["⊂"]=>
+ string(5) "&sub;"
+ ["⊆"]=>
+ string(6) "&sube;"
+ ["∑"]=>
+ string(5) "&sum;"
+ ["¹"]=>
+ string(6) "&sup1;"
+ ["²"]=>
+ string(6) "&sup2;"
+ ["³"]=>
+ string(6) "&sup3;"
+ ["⊃"]=>
+ string(5) "&sup;"
+ ["⊇"]=>
+ string(6) "&supe;"
+ ["ß"]=>
+ string(7) "&szlig;"
+ ["Ï„"]=>
+ string(5) "&tau;"
+ ["∴"]=>
+ string(8) "&there4;"
+ ["θ"]=>
+ string(7) "&theta;"
+ ["Ï‘"]=>
+ string(10) "&thetasym;"
+ [" "]=>
+ string(8) "&thinsp;"
+ ["þ"]=>
+ string(7) "&thorn;"
+ ["˜"]=>
+ string(7) "&tilde;"
+ ["×"]=>
+ string(7) "&times;"
+ ["â„¢"]=>
+ string(7) "&trade;"
+ ["⇑"]=>
+ string(6) "&uArr;"
+ ["ú"]=>
+ string(8) "&uacute;"
+ ["↑"]=>
+ string(6) "&uarr;"
+ ["û"]=>
+ string(7) "&ucirc;"
+ ["ù"]=>
+ string(8) "&ugrave;"
+ ["¨"]=>
+ string(5) "&uml;"
+ ["Ï’"]=>
+ string(7) "&upsih;"
+ ["Ï…"]=>
+ string(9) "&upsilon;"
+ ["ü"]=>
+ string(6) "&uuml;"
+ ["℘"]=>
+ string(8) "&weierp;"
+ ["ξ"]=>
+ string(4) "&xi;"
+ ["ý"]=>
+ string(8) "&yacute;"
+ ["Â¥"]=>
+ string(5) "&yen;"
+ ["ÿ"]=>
+ string(6) "&yuml;"
+ ["ζ"]=>
+ string(6) "&zeta;"
+ ["â€"]=>
+ string(5) "&zwj;"
+ ["‌"]=>
+ string(6) "&zwnj;"
+}
+-- with table = HTML_SPECIALCHARS --
+array(4) {
+ ["&"]=>
+ string(5) "&amp;"
+ [">"]=>
+ string(4) "&gt;"
+ ["<"]=>
+ string(4) "&lt;"
+ ["""]=>
+ string(6) "&quot;"
+}
+Done
diff --git a/ext/standard/tests/strings/get_html_translation_table_basic2.phpt b/ext/standard/tests/strings/get_html_translation_table_basic2.phpt
index 8d27e15ed8..1ab2ffab25 100644
--- a/ext/standard/tests/strings/get_html_translation_table_basic2.phpt
+++ b/ext/standard/tests/strings/get_html_translation_table_basic2.phpt
@@ -20,1540 +20,1546 @@ echo "*** Testing get_html_translation_table() : basic functionality ***\n";
echo "-- with table = HTML_ENTITIES & quote_style = ENT_COMPAT --\n";
$table = HTML_ENTITIES;
$quote_style = ENT_COMPAT;
-var_dump( get_html_translation_table($table, $quote_style, "UTF-8") );
+$tt = get_html_translation_table($table, $quote_style, "UTF-8");
+asort( $tt );
+var_dump( $tt );
echo "-- with table = HTML_ENTITIES & quote_style = ENT_QUOTES --\n";
$quote_style = ENT_QUOTES;
-var_dump( get_html_translation_table($table, $quote_style, "UTF-8") );
+$tt = get_html_translation_table($table, $quote_style, "UTF-8");
+asort( $tt );
+var_dump( $tt );
echo "-- with table = HTML_ENTITIES & quote_style = ENT_NOQUOTES --\n";
$quote_style = ENT_NOQUOTES;
-var_dump( get_html_translation_table($table, $quote_style, "UTF-8") );
+$tt = get_html_translation_table($table, $quote_style, "UTF-8");
+asort( $tt );
+var_dump( $tt );
echo "Done\n";
?>
---EXPECTF--
+--EXPECT--
*** Testing get_html_translation_table() : basic functionality ***
-- with table = HTML_ENTITIES & quote_style = ENT_COMPAT --
array(252) {
- [" "]=>
- string(6) "&nbsp;"
- ["¡"]=>
- string(7) "&iexcl;"
- ["¢"]=>
- string(6) "&cent;"
- ["£"]=>
- string(7) "&pound;"
- ["¤"]=>
- string(8) "&curren;"
- ["Â¥"]=>
- string(5) "&yen;"
- ["¦"]=>
- string(8) "&brvbar;"
- ["§"]=>
- string(6) "&sect;"
- ["¨"]=>
- string(5) "&uml;"
- ["©"]=>
- string(6) "&copy;"
- ["ª"]=>
- string(6) "&ordf;"
- ["«"]=>
- string(7) "&laquo;"
- ["¬"]=>
- string(5) "&not;"
- ["­"]=>
- string(5) "&shy;"
- ["®"]=>
- string(5) "&reg;"
- ["¯"]=>
- string(6) "&macr;"
- ["°"]=>
- string(5) "&deg;"
- ["±"]=>
- string(8) "&plusmn;"
- ["²"]=>
- string(6) "&sup2;"
- ["³"]=>
- string(6) "&sup3;"
- ["´"]=>
- string(7) "&acute;"
- ["µ"]=>
- string(7) "&micro;"
- ["¶"]=>
- string(6) "&para;"
- ["·"]=>
- string(8) "&middot;"
- ["¸"]=>
- string(7) "&cedil;"
- ["¹"]=>
- string(6) "&sup1;"
- ["º"]=>
- string(6) "&ordm;"
- ["»"]=>
- string(7) "&raquo;"
- ["¼"]=>
- string(8) "&frac14;"
- ["½"]=>
- string(8) "&frac12;"
- ["¾"]=>
- string(8) "&frac34;"
- ["¿"]=>
- string(8) "&iquest;"
- ["À"]=>
- string(8) "&Agrave;"
+ ["Æ"]=>
+ string(7) "&AElig;"
["Ã"]=>
string(8) "&Aacute;"
["Â"]=>
string(7) "&Acirc;"
+ ["À"]=>
+ string(8) "&Agrave;"
+ ["Α"]=>
+ string(7) "&Alpha;"
+ ["Ã…"]=>
+ string(7) "&Aring;"
["Ã"]=>
string(8) "&Atilde;"
["Ä"]=>
string(6) "&Auml;"
- ["Ã…"]=>
- string(7) "&Aring;"
- ["Æ"]=>
- string(7) "&AElig;"
+ ["Î’"]=>
+ string(6) "&Beta;"
["Ç"]=>
string(8) "&Ccedil;"
- ["È"]=>
- string(8) "&Egrave;"
+ ["Χ"]=>
+ string(5) "&Chi;"
+ ["‡"]=>
+ string(8) "&Dagger;"
+ ["Δ"]=>
+ string(7) "&Delta;"
+ ["Ã"]=>
+ string(5) "&ETH;"
["É"]=>
string(8) "&Eacute;"
["Ê"]=>
string(7) "&Ecirc;"
+ ["È"]=>
+ string(8) "&Egrave;"
+ ["Ε"]=>
+ string(9) "&Epsilon;"
+ ["Η"]=>
+ string(5) "&Eta;"
["Ë"]=>
string(6) "&Euml;"
- ["Ì"]=>
- string(8) "&Igrave;"
+ ["Γ"]=>
+ string(7) "&Gamma;"
["Ã"]=>
string(8) "&Iacute;"
["ÃŽ"]=>
string(7) "&Icirc;"
+ ["Ì"]=>
+ string(8) "&Igrave;"
+ ["Ι"]=>
+ string(6) "&Iota;"
["Ã"]=>
string(6) "&Iuml;"
- ["Ã"]=>
- string(5) "&ETH;"
+ ["Κ"]=>
+ string(7) "&Kappa;"
+ ["Λ"]=>
+ string(8) "&Lambda;"
+ ["Μ"]=>
+ string(4) "&Mu;"
["Ñ"]=>
string(8) "&Ntilde;"
- ["Ã’"]=>
- string(8) "&Ograve;"
+ ["Î"]=>
+ string(4) "&Nu;"
+ ["Å’"]=>
+ string(7) "&OElig;"
["Ó"]=>
string(8) "&Oacute;"
["Ô"]=>
string(7) "&Ocirc;"
+ ["Ã’"]=>
+ string(8) "&Ograve;"
+ ["Ω"]=>
+ string(7) "&Omega;"
+ ["Ο"]=>
+ string(9) "&Omicron;"
+ ["Ø"]=>
+ string(8) "&Oslash;"
["Õ"]=>
string(8) "&Otilde;"
["Ö"]=>
string(6) "&Ouml;"
- ["×"]=>
- string(7) "&times;"
- ["Ø"]=>
- string(8) "&Oslash;"
- ["Ù"]=>
- string(8) "&Ugrave;"
+ ["Φ"]=>
+ string(5) "&Phi;"
+ ["Π"]=>
+ string(4) "&Pi;"
+ ["″"]=>
+ string(7) "&Prime;"
+ ["Ψ"]=>
+ string(5) "&Psi;"
+ ["Ρ"]=>
+ string(5) "&Rho;"
+ ["Å "]=>
+ string(8) "&Scaron;"
+ ["Σ"]=>
+ string(7) "&Sigma;"
+ ["Þ"]=>
+ string(7) "&THORN;"
+ ["Τ"]=>
+ string(5) "&Tau;"
+ ["Θ"]=>
+ string(7) "&Theta;"
["Ú"]=>
string(8) "&Uacute;"
["Û"]=>
string(7) "&Ucirc;"
+ ["Ù"]=>
+ string(8) "&Ugrave;"
+ ["Î¥"]=>
+ string(9) "&Upsilon;"
["Ü"]=>
string(6) "&Uuml;"
+ ["Ξ"]=>
+ string(4) "&Xi;"
["Ã"]=>
string(8) "&Yacute;"
- ["Þ"]=>
- string(7) "&THORN;"
- ["ß"]=>
- string(7) "&szlig;"
- ["à"]=>
- string(8) "&agrave;"
+ ["Ÿ"]=>
+ string(6) "&Yuml;"
+ ["Ζ"]=>
+ string(6) "&Zeta;"
["á"]=>
string(8) "&aacute;"
["â"]=>
string(7) "&acirc;"
+ ["´"]=>
+ string(7) "&acute;"
+ ["æ"]=>
+ string(7) "&aelig;"
+ ["à"]=>
+ string(8) "&agrave;"
+ ["ℵ"]=>
+ string(9) "&alefsym;"
+ ["α"]=>
+ string(7) "&alpha;"
+ ["&"]=>
+ string(5) "&amp;"
+ ["∧"]=>
+ string(5) "&and;"
+ ["∠"]=>
+ string(5) "&ang;"
+ ["Ã¥"]=>
+ string(7) "&aring;"
+ ["≈"]=>
+ string(7) "&asymp;"
["ã"]=>
string(8) "&atilde;"
["ä"]=>
string(6) "&auml;"
- ["Ã¥"]=>
- string(7) "&aring;"
- ["æ"]=>
- string(7) "&aelig;"
+ ["„"]=>
+ string(7) "&bdquo;"
+ ["β"]=>
+ string(6) "&beta;"
+ ["¦"]=>
+ string(8) "&brvbar;"
+ ["•"]=>
+ string(6) "&bull;"
+ ["∩"]=>
+ string(5) "&cap;"
["ç"]=>
string(8) "&ccedil;"
- ["è"]=>
- string(8) "&egrave;"
+ ["¸"]=>
+ string(7) "&cedil;"
+ ["¢"]=>
+ string(6) "&cent;"
+ ["χ"]=>
+ string(5) "&chi;"
+ ["ˆ"]=>
+ string(6) "&circ;"
+ ["♣"]=>
+ string(7) "&clubs;"
+ ["≅"]=>
+ string(6) "&cong;"
+ ["©"]=>
+ string(6) "&copy;"
+ ["↵"]=>
+ string(7) "&crarr;"
+ ["∪"]=>
+ string(5) "&cup;"
+ ["¤"]=>
+ string(8) "&curren;"
+ ["⇓"]=>
+ string(6) "&dArr;"
+ ["†"]=>
+ string(8) "&dagger;"
+ ["↓"]=>
+ string(6) "&darr;"
+ ["°"]=>
+ string(5) "&deg;"
+ ["δ"]=>
+ string(7) "&delta;"
+ ["♦"]=>
+ string(7) "&diams;"
+ ["÷"]=>
+ string(8) "&divide;"
["é"]=>
string(8) "&eacute;"
["ê"]=>
string(7) "&ecirc;"
- ["ë"]=>
- string(6) "&euml;"
- ["ì"]=>
- string(8) "&igrave;"
- ["í"]=>
- string(8) "&iacute;"
- ["î"]=>
- string(7) "&icirc;"
- ["ï"]=>
- string(6) "&iuml;"
+ ["è"]=>
+ string(8) "&egrave;"
+ ["∅"]=>
+ string(7) "&empty;"
+ [" "]=>
+ string(6) "&emsp;"
+ [" "]=>
+ string(6) "&ensp;"
+ ["ε"]=>
+ string(9) "&epsilon;"
+ ["≡"]=>
+ string(7) "&equiv;"
+ ["η"]=>
+ string(5) "&eta;"
["ð"]=>
string(5) "&eth;"
- ["ñ"]=>
- string(8) "&ntilde;"
- ["ò"]=>
- string(8) "&ograve;"
- ["ó"]=>
- string(8) "&oacute;"
- ["ô"]=>
- string(7) "&ocirc;"
- ["õ"]=>
- string(8) "&otilde;"
- ["ö"]=>
- string(6) "&ouml;"
- ["÷"]=>
- string(8) "&divide;"
- ["ø"]=>
- string(8) "&oslash;"
- ["ù"]=>
- string(8) "&ugrave;"
- ["ú"]=>
- string(8) "&uacute;"
- ["û"]=>
- string(7) "&ucirc;"
- ["ü"]=>
- string(6) "&uuml;"
- ["ý"]=>
- string(8) "&yacute;"
- ["þ"]=>
- string(7) "&thorn;"
- ["ÿ"]=>
- string(6) "&yuml;"
- ["Å’"]=>
- string(7) "&OElig;"
- ["Å“"]=>
- string(7) "&oelig;"
- ["Å "]=>
- string(8) "&Scaron;"
- ["Å¡"]=>
- string(8) "&scaron;"
- ["Ÿ"]=>
- string(6) "&Yuml;"
+ ["ë"]=>
+ string(6) "&euml;"
+ ["€"]=>
+ string(6) "&euro;"
+ ["∃"]=>
+ string(7) "&exist;"
["Æ’"]=>
string(6) "&fnof;"
- ["ˆ"]=>
- string(6) "&circ;"
- ["˜"]=>
- string(7) "&tilde;"
- ["Α"]=>
- string(7) "&Alpha;"
- ["Î’"]=>
- string(6) "&Beta;"
- ["Γ"]=>
- string(7) "&Gamma;"
- ["Δ"]=>
- string(7) "&Delta;"
- ["Ε"]=>
- string(9) "&Epsilon;"
- ["Ζ"]=>
- string(6) "&Zeta;"
- ["Η"]=>
- string(5) "&Eta;"
- ["Θ"]=>
- string(7) "&Theta;"
- ["Ι"]=>
- string(6) "&Iota;"
- ["Κ"]=>
- string(7) "&Kappa;"
- ["Λ"]=>
- string(8) "&Lambda;"
- ["Μ"]=>
- string(4) "&Mu;"
- ["Î"]=>
- string(4) "&Nu;"
- ["Ξ"]=>
- string(4) "&Xi;"
- ["Ο"]=>
- string(9) "&Omicron;"
- ["Π"]=>
- string(4) "&Pi;"
- ["Ρ"]=>
- string(5) "&Rho;"
- ["Σ"]=>
- string(7) "&Sigma;"
- ["Τ"]=>
- string(5) "&Tau;"
- ["Î¥"]=>
- string(9) "&Upsilon;"
- ["Φ"]=>
- string(5) "&Phi;"
- ["Χ"]=>
- string(5) "&Chi;"
- ["Ψ"]=>
- string(5) "&Psi;"
- ["Ω"]=>
- string(7) "&Omega;"
- ["α"]=>
- string(7) "&alpha;"
- ["β"]=>
- string(6) "&beta;"
+ ["∀"]=>
+ string(8) "&forall;"
+ ["½"]=>
+ string(8) "&frac12;"
+ ["¼"]=>
+ string(8) "&frac14;"
+ ["¾"]=>
+ string(8) "&frac34;"
+ ["â„"]=>
+ string(7) "&frasl;"
["γ"]=>
string(7) "&gamma;"
- ["δ"]=>
- string(7) "&delta;"
- ["ε"]=>
- string(9) "&epsilon;"
- ["ζ"]=>
- string(6) "&zeta;"
- ["η"]=>
- string(5) "&eta;"
- ["θ"]=>
- string(7) "&theta;"
+ ["≥"]=>
+ string(4) "&ge;"
+ [">"]=>
+ string(4) "&gt;"
+ ["⇔"]=>
+ string(6) "&hArr;"
+ ["↔"]=>
+ string(6) "&harr;"
+ ["♥"]=>
+ string(8) "&hearts;"
+ ["…"]=>
+ string(8) "&hellip;"
+ ["í"]=>
+ string(8) "&iacute;"
+ ["î"]=>
+ string(7) "&icirc;"
+ ["¡"]=>
+ string(7) "&iexcl;"
+ ["ì"]=>
+ string(8) "&igrave;"
+ ["â„‘"]=>
+ string(7) "&image;"
+ ["∞"]=>
+ string(7) "&infin;"
+ ["∫"]=>
+ string(5) "&int;"
["ι"]=>
string(6) "&iota;"
+ ["¿"]=>
+ string(8) "&iquest;"
+ ["∈"]=>
+ string(6) "&isin;"
+ ["ï"]=>
+ string(6) "&iuml;"
["κ"]=>
string(7) "&kappa;"
+ ["â‡"]=>
+ string(6) "&lArr;"
["λ"]=>
string(8) "&lambda;"
- ["μ"]=>
- string(4) "&mu;"
- ["ν"]=>
- string(4) "&nu;"
- ["ξ"]=>
- string(4) "&xi;"
- ["ο"]=>
- string(9) "&omicron;"
- ["Ï€"]=>
- string(4) "&pi;"
- ["Ï"]=>
- string(5) "&rho;"
- ["Ï‚"]=>
- string(8) "&sigmaf;"
- ["σ"]=>
- string(7) "&sigma;"
- ["Ï„"]=>
- string(5) "&tau;"
- ["Ï…"]=>
- string(9) "&upsilon;"
- ["φ"]=>
- string(5) "&phi;"
- ["χ"]=>
- string(5) "&chi;"
- ["ψ"]=>
- string(5) "&psi;"
- ["ω"]=>
- string(7) "&omega;"
- ["Ï‘"]=>
- string(10) "&thetasym;"
- ["Ï’"]=>
- string(7) "&upsih;"
- ["Ï–"]=>
- string(5) "&piv;"
- [" "]=>
- string(6) "&ensp;"
- [" "]=>
- string(6) "&emsp;"
- [" "]=>
- string(8) "&thinsp;"
- ["‌"]=>
- string(6) "&zwnj;"
- ["â€"]=>
- string(5) "&zwj;"
- ["‎"]=>
- string(5) "&lrm;"
- ["â€"]=>
- string(5) "&rlm;"
- ["–"]=>
- string(7) "&ndash;"
- ["—"]=>
- string(7) "&mdash;"
- ["‘"]=>
- string(7) "&lsquo;"
- ["’"]=>
- string(7) "&rsquo;"
- ["‚"]=>
- string(7) "&sbquo;"
+ ["〈"]=>
+ string(6) "&lang;"
+ ["«"]=>
+ string(7) "&laquo;"
+ ["â†"]=>
+ string(6) "&larr;"
+ ["⌈"]=>
+ string(7) "&lceil;"
["“"]=>
string(7) "&ldquo;"
- ["â€"]=>
- string(7) "&rdquo;"
- ["„"]=>
- string(7) "&bdquo;"
- ["†"]=>
- string(8) "&dagger;"
- ["‡"]=>
- string(8) "&Dagger;"
- ["•"]=>
- string(6) "&bull;"
- ["…"]=>
- string(8) "&hellip;"
- ["‰"]=>
- string(8) "&permil;"
- ["′"]=>
- string(7) "&prime;"
- ["″"]=>
- string(7) "&Prime;"
+ ["≤"]=>
+ string(4) "&le;"
+ ["⌊"]=>
+ string(8) "&lfloor;"
+ ["∗"]=>
+ string(8) "&lowast;"
+ ["â—Š"]=>
+ string(5) "&loz;"
+ ["‎"]=>
+ string(5) "&lrm;"
["‹"]=>
string(8) "&lsaquo;"
- ["›"]=>
- string(8) "&rsaquo;"
- ["‾"]=>
- string(7) "&oline;"
- ["â„"]=>
- string(7) "&frasl;"
- ["€"]=>
- string(6) "&euro;"
- ["â„‘"]=>
- string(7) "&image;"
- ["℘"]=>
- string(8) "&weierp;"
- ["ℜ"]=>
- string(6) "&real;"
- ["â„¢"]=>
- string(7) "&trade;"
- ["ℵ"]=>
- string(9) "&alefsym;"
- ["â†"]=>
- string(6) "&larr;"
- ["↑"]=>
- string(6) "&uarr;"
- ["→"]=>
- string(6) "&rarr;"
- ["↓"]=>
- string(6) "&darr;"
- ["↔"]=>
- string(6) "&harr;"
- ["↵"]=>
- string(7) "&crarr;"
- ["â‡"]=>
- string(6) "&lArr;"
- ["⇑"]=>
- string(6) "&uArr;"
- ["⇒"]=>
- string(6) "&rArr;"
- ["⇓"]=>
- string(6) "&dArr;"
- ["⇔"]=>
- string(6) "&hArr;"
- ["∀"]=>
- string(8) "&forall;"
- ["∂"]=>
- string(6) "&part;"
- ["∃"]=>
- string(7) "&exist;"
- ["∅"]=>
- string(7) "&empty;"
- ["∇"]=>
- string(7) "&nabla;"
- ["∈"]=>
- string(6) "&isin;"
- ["∉"]=>
- string(7) "&notin;"
- ["∋"]=>
- string(4) "&ni;"
- ["âˆ"]=>
- string(6) "&prod;"
- ["∑"]=>
- string(5) "&sum;"
+ ["‘"]=>
+ string(7) "&lsquo;"
+ ["<"]=>
+ string(4) "&lt;"
+ ["¯"]=>
+ string(6) "&macr;"
+ ["—"]=>
+ string(7) "&mdash;"
+ ["µ"]=>
+ string(7) "&micro;"
+ ["·"]=>
+ string(8) "&middot;"
["−"]=>
string(7) "&minus;"
- ["∗"]=>
- string(8) "&lowast;"
- ["√"]=>
- string(7) "&radic;"
- ["âˆ"]=>
- string(6) "&prop;"
- ["∞"]=>
- string(7) "&infin;"
- ["∠"]=>
- string(5) "&ang;"
- ["∧"]=>
- string(5) "&and;"
- ["∨"]=>
- string(4) "&or;"
- ["∩"]=>
- string(5) "&cap;"
- ["∪"]=>
- string(5) "&cup;"
- ["∫"]=>
- string(5) "&int;"
- ["∴"]=>
- string(8) "&there4;"
- ["∼"]=>
- string(5) "&sim;"
- ["≅"]=>
- string(6) "&cong;"
- ["≈"]=>
- string(7) "&asymp;"
+ ["μ"]=>
+ string(4) "&mu;"
+ ["∇"]=>
+ string(7) "&nabla;"
+ [" "]=>
+ string(6) "&nbsp;"
+ ["–"]=>
+ string(7) "&ndash;"
["≠"]=>
string(4) "&ne;"
- ["≡"]=>
- string(7) "&equiv;"
- ["≤"]=>
- string(4) "&le;"
- ["≥"]=>
- string(4) "&ge;"
- ["⊂"]=>
- string(5) "&sub;"
- ["⊃"]=>
- string(5) "&sup;"
+ ["∋"]=>
+ string(4) "&ni;"
+ ["¬"]=>
+ string(5) "&not;"
+ ["∉"]=>
+ string(7) "&notin;"
["⊄"]=>
string(6) "&nsub;"
- ["⊆"]=>
- string(6) "&sube;"
- ["⊇"]=>
- string(6) "&supe;"
+ ["ñ"]=>
+ string(8) "&ntilde;"
+ ["ν"]=>
+ string(4) "&nu;"
+ ["ó"]=>
+ string(8) "&oacute;"
+ ["ô"]=>
+ string(7) "&ocirc;"
+ ["Å“"]=>
+ string(7) "&oelig;"
+ ["ò"]=>
+ string(8) "&ograve;"
+ ["‾"]=>
+ string(7) "&oline;"
+ ["ω"]=>
+ string(7) "&omega;"
+ ["ο"]=>
+ string(9) "&omicron;"
["⊕"]=>
string(7) "&oplus;"
+ ["∨"]=>
+ string(4) "&or;"
+ ["ª"]=>
+ string(6) "&ordf;"
+ ["º"]=>
+ string(6) "&ordm;"
+ ["ø"]=>
+ string(8) "&oslash;"
+ ["õ"]=>
+ string(8) "&otilde;"
["⊗"]=>
string(8) "&otimes;"
+ ["ö"]=>
+ string(6) "&ouml;"
+ ["¶"]=>
+ string(6) "&para;"
+ ["∂"]=>
+ string(6) "&part;"
+ ["‰"]=>
+ string(8) "&permil;"
["⊥"]=>
string(6) "&perp;"
- ["â‹…"]=>
- string(6) "&sdot;"
- ["⌈"]=>
- string(7) "&lceil;"
+ ["φ"]=>
+ string(5) "&phi;"
+ ["Ï€"]=>
+ string(4) "&pi;"
+ ["Ï–"]=>
+ string(5) "&piv;"
+ ["±"]=>
+ string(8) "&plusmn;"
+ ["£"]=>
+ string(7) "&pound;"
+ ["′"]=>
+ string(7) "&prime;"
+ ["âˆ"]=>
+ string(6) "&prod;"
+ ["âˆ"]=>
+ string(6) "&prop;"
+ ["ψ"]=>
+ string(5) "&psi;"
+ ["""]=>
+ string(6) "&quot;"
+ ["⇒"]=>
+ string(6) "&rArr;"
+ ["√"]=>
+ string(7) "&radic;"
+ ["〉"]=>
+ string(6) "&rang;"
+ ["»"]=>
+ string(7) "&raquo;"
+ ["→"]=>
+ string(6) "&rarr;"
["⌉"]=>
string(7) "&rceil;"
- ["⌊"]=>
- string(8) "&lfloor;"
+ ["â€"]=>
+ string(7) "&rdquo;"
+ ["ℜ"]=>
+ string(6) "&real;"
+ ["®"]=>
+ string(5) "&reg;"
["⌋"]=>
string(8) "&rfloor;"
- ["〈"]=>
- string(6) "&lang;"
- ["〉"]=>
- string(6) "&rang;"
- ["â—Š"]=>
- string(5) "&loz;"
- ["â™ "]=>
- string(8) "&spades;"
- ["♣"]=>
- string(7) "&clubs;"
- ["♥"]=>
- string(8) "&hearts;"
- ["♦"]=>
- string(7) "&diams;"
- ["&"]=>
- string(5) "&amp;"
- ["""]=>
- string(6) "&quot;"
- ["<"]=>
- string(4) "&lt;"
- [">"]=>
- string(4) "&gt;"
-}
--- with table = HTML_ENTITIES & quote_style = ENT_QUOTES --
-array(253) {
- [" "]=>
- string(6) "&nbsp;"
- ["¡"]=>
- string(7) "&iexcl;"
- ["¢"]=>
- string(6) "&cent;"
- ["£"]=>
- string(7) "&pound;"
- ["¤"]=>
- string(8) "&curren;"
- ["Â¥"]=>
- string(5) "&yen;"
- ["¦"]=>
- string(8) "&brvbar;"
+ ["Ï"]=>
+ string(5) "&rho;"
+ ["â€"]=>
+ string(5) "&rlm;"
+ ["›"]=>
+ string(8) "&rsaquo;"
+ ["’"]=>
+ string(7) "&rsquo;"
+ ["‚"]=>
+ string(7) "&sbquo;"
+ ["Å¡"]=>
+ string(8) "&scaron;"
+ ["â‹…"]=>
+ string(6) "&sdot;"
["§"]=>
string(6) "&sect;"
- ["¨"]=>
- string(5) "&uml;"
- ["©"]=>
- string(6) "&copy;"
- ["ª"]=>
- string(6) "&ordf;"
- ["«"]=>
- string(7) "&laquo;"
- ["¬"]=>
- string(5) "&not;"
["­"]=>
string(5) "&shy;"
- ["®"]=>
- string(5) "&reg;"
- ["¯"]=>
- string(6) "&macr;"
- ["°"]=>
- string(5) "&deg;"
- ["±"]=>
- string(8) "&plusmn;"
+ ["σ"]=>
+ string(7) "&sigma;"
+ ["Ï‚"]=>
+ string(8) "&sigmaf;"
+ ["∼"]=>
+ string(5) "&sim;"
+ ["â™ "]=>
+ string(8) "&spades;"
+ ["⊂"]=>
+ string(5) "&sub;"
+ ["⊆"]=>
+ string(6) "&sube;"
+ ["∑"]=>
+ string(5) "&sum;"
+ ["¹"]=>
+ string(6) "&sup1;"
["²"]=>
string(6) "&sup2;"
["³"]=>
string(6) "&sup3;"
- ["´"]=>
- string(7) "&acute;"
- ["µ"]=>
- string(7) "&micro;"
- ["¶"]=>
- string(6) "&para;"
- ["·"]=>
- string(8) "&middot;"
- ["¸"]=>
- string(7) "&cedil;"
- ["¹"]=>
- string(6) "&sup1;"
- ["º"]=>
- string(6) "&ordm;"
- ["»"]=>
- string(7) "&raquo;"
- ["¼"]=>
- string(8) "&frac14;"
- ["½"]=>
- string(8) "&frac12;"
- ["¾"]=>
- string(8) "&frac34;"
- ["¿"]=>
- string(8) "&iquest;"
- ["À"]=>
- string(8) "&Agrave;"
+ ["⊃"]=>
+ string(5) "&sup;"
+ ["⊇"]=>
+ string(6) "&supe;"
+ ["ß"]=>
+ string(7) "&szlig;"
+ ["Ï„"]=>
+ string(5) "&tau;"
+ ["∴"]=>
+ string(8) "&there4;"
+ ["θ"]=>
+ string(7) "&theta;"
+ ["Ï‘"]=>
+ string(10) "&thetasym;"
+ [" "]=>
+ string(8) "&thinsp;"
+ ["þ"]=>
+ string(7) "&thorn;"
+ ["˜"]=>
+ string(7) "&tilde;"
+ ["×"]=>
+ string(7) "&times;"
+ ["â„¢"]=>
+ string(7) "&trade;"
+ ["⇑"]=>
+ string(6) "&uArr;"
+ ["ú"]=>
+ string(8) "&uacute;"
+ ["↑"]=>
+ string(6) "&uarr;"
+ ["û"]=>
+ string(7) "&ucirc;"
+ ["ù"]=>
+ string(8) "&ugrave;"
+ ["¨"]=>
+ string(5) "&uml;"
+ ["Ï’"]=>
+ string(7) "&upsih;"
+ ["Ï…"]=>
+ string(9) "&upsilon;"
+ ["ü"]=>
+ string(6) "&uuml;"
+ ["℘"]=>
+ string(8) "&weierp;"
+ ["ξ"]=>
+ string(4) "&xi;"
+ ["ý"]=>
+ string(8) "&yacute;"
+ ["Â¥"]=>
+ string(5) "&yen;"
+ ["ÿ"]=>
+ string(6) "&yuml;"
+ ["ζ"]=>
+ string(6) "&zeta;"
+ ["â€"]=>
+ string(5) "&zwj;"
+ ["‌"]=>
+ string(6) "&zwnj;"
+}
+-- with table = HTML_ENTITIES & quote_style = ENT_QUOTES --
+array(253) {
+ ["'"]=>
+ string(6) "&#039;"
+ ["Æ"]=>
+ string(7) "&AElig;"
["Ã"]=>
string(8) "&Aacute;"
["Â"]=>
string(7) "&Acirc;"
+ ["À"]=>
+ string(8) "&Agrave;"
+ ["Α"]=>
+ string(7) "&Alpha;"
+ ["Ã…"]=>
+ string(7) "&Aring;"
["Ã"]=>
string(8) "&Atilde;"
["Ä"]=>
string(6) "&Auml;"
- ["Ã…"]=>
- string(7) "&Aring;"
- ["Æ"]=>
- string(7) "&AElig;"
+ ["Î’"]=>
+ string(6) "&Beta;"
["Ç"]=>
string(8) "&Ccedil;"
- ["È"]=>
- string(8) "&Egrave;"
+ ["Χ"]=>
+ string(5) "&Chi;"
+ ["‡"]=>
+ string(8) "&Dagger;"
+ ["Δ"]=>
+ string(7) "&Delta;"
+ ["Ã"]=>
+ string(5) "&ETH;"
["É"]=>
string(8) "&Eacute;"
["Ê"]=>
string(7) "&Ecirc;"
+ ["È"]=>
+ string(8) "&Egrave;"
+ ["Ε"]=>
+ string(9) "&Epsilon;"
+ ["Η"]=>
+ string(5) "&Eta;"
["Ë"]=>
string(6) "&Euml;"
- ["Ì"]=>
- string(8) "&Igrave;"
+ ["Γ"]=>
+ string(7) "&Gamma;"
["Ã"]=>
string(8) "&Iacute;"
["ÃŽ"]=>
string(7) "&Icirc;"
+ ["Ì"]=>
+ string(8) "&Igrave;"
+ ["Ι"]=>
+ string(6) "&Iota;"
["Ã"]=>
string(6) "&Iuml;"
- ["Ã"]=>
- string(5) "&ETH;"
+ ["Κ"]=>
+ string(7) "&Kappa;"
+ ["Λ"]=>
+ string(8) "&Lambda;"
+ ["Μ"]=>
+ string(4) "&Mu;"
["Ñ"]=>
string(8) "&Ntilde;"
- ["Ã’"]=>
- string(8) "&Ograve;"
+ ["Î"]=>
+ string(4) "&Nu;"
+ ["Å’"]=>
+ string(7) "&OElig;"
["Ó"]=>
string(8) "&Oacute;"
["Ô"]=>
string(7) "&Ocirc;"
+ ["Ã’"]=>
+ string(8) "&Ograve;"
+ ["Ω"]=>
+ string(7) "&Omega;"
+ ["Ο"]=>
+ string(9) "&Omicron;"
+ ["Ø"]=>
+ string(8) "&Oslash;"
["Õ"]=>
string(8) "&Otilde;"
["Ö"]=>
string(6) "&Ouml;"
- ["×"]=>
- string(7) "&times;"
- ["Ø"]=>
- string(8) "&Oslash;"
- ["Ù"]=>
- string(8) "&Ugrave;"
+ ["Φ"]=>
+ string(5) "&Phi;"
+ ["Π"]=>
+ string(4) "&Pi;"
+ ["″"]=>
+ string(7) "&Prime;"
+ ["Ψ"]=>
+ string(5) "&Psi;"
+ ["Ρ"]=>
+ string(5) "&Rho;"
+ ["Å "]=>
+ string(8) "&Scaron;"
+ ["Σ"]=>
+ string(7) "&Sigma;"
+ ["Þ"]=>
+ string(7) "&THORN;"
+ ["Τ"]=>
+ string(5) "&Tau;"
+ ["Θ"]=>
+ string(7) "&Theta;"
["Ú"]=>
string(8) "&Uacute;"
["Û"]=>
string(7) "&Ucirc;"
+ ["Ù"]=>
+ string(8) "&Ugrave;"
+ ["Î¥"]=>
+ string(9) "&Upsilon;"
["Ü"]=>
string(6) "&Uuml;"
+ ["Ξ"]=>
+ string(4) "&Xi;"
["Ã"]=>
string(8) "&Yacute;"
- ["Þ"]=>
- string(7) "&THORN;"
- ["ß"]=>
- string(7) "&szlig;"
- ["à"]=>
- string(8) "&agrave;"
+ ["Ÿ"]=>
+ string(6) "&Yuml;"
+ ["Ζ"]=>
+ string(6) "&Zeta;"
["á"]=>
string(8) "&aacute;"
["â"]=>
string(7) "&acirc;"
+ ["´"]=>
+ string(7) "&acute;"
+ ["æ"]=>
+ string(7) "&aelig;"
+ ["à"]=>
+ string(8) "&agrave;"
+ ["ℵ"]=>
+ string(9) "&alefsym;"
+ ["α"]=>
+ string(7) "&alpha;"
+ ["&"]=>
+ string(5) "&amp;"
+ ["∧"]=>
+ string(5) "&and;"
+ ["∠"]=>
+ string(5) "&ang;"
+ ["Ã¥"]=>
+ string(7) "&aring;"
+ ["≈"]=>
+ string(7) "&asymp;"
["ã"]=>
string(8) "&atilde;"
["ä"]=>
string(6) "&auml;"
- ["Ã¥"]=>
- string(7) "&aring;"
- ["æ"]=>
- string(7) "&aelig;"
+ ["„"]=>
+ string(7) "&bdquo;"
+ ["β"]=>
+ string(6) "&beta;"
+ ["¦"]=>
+ string(8) "&brvbar;"
+ ["•"]=>
+ string(6) "&bull;"
+ ["∩"]=>
+ string(5) "&cap;"
["ç"]=>
string(8) "&ccedil;"
- ["è"]=>
- string(8) "&egrave;"
+ ["¸"]=>
+ string(7) "&cedil;"
+ ["¢"]=>
+ string(6) "&cent;"
+ ["χ"]=>
+ string(5) "&chi;"
+ ["ˆ"]=>
+ string(6) "&circ;"
+ ["♣"]=>
+ string(7) "&clubs;"
+ ["≅"]=>
+ string(6) "&cong;"
+ ["©"]=>
+ string(6) "&copy;"
+ ["↵"]=>
+ string(7) "&crarr;"
+ ["∪"]=>
+ string(5) "&cup;"
+ ["¤"]=>
+ string(8) "&curren;"
+ ["⇓"]=>
+ string(6) "&dArr;"
+ ["†"]=>
+ string(8) "&dagger;"
+ ["↓"]=>
+ string(6) "&darr;"
+ ["°"]=>
+ string(5) "&deg;"
+ ["δ"]=>
+ string(7) "&delta;"
+ ["♦"]=>
+ string(7) "&diams;"
+ ["÷"]=>
+ string(8) "&divide;"
["é"]=>
string(8) "&eacute;"
["ê"]=>
string(7) "&ecirc;"
- ["ë"]=>
- string(6) "&euml;"
- ["ì"]=>
- string(8) "&igrave;"
- ["í"]=>
- string(8) "&iacute;"
- ["î"]=>
- string(7) "&icirc;"
- ["ï"]=>
- string(6) "&iuml;"
+ ["è"]=>
+ string(8) "&egrave;"
+ ["∅"]=>
+ string(7) "&empty;"
+ [" "]=>
+ string(6) "&emsp;"
+ [" "]=>
+ string(6) "&ensp;"
+ ["ε"]=>
+ string(9) "&epsilon;"
+ ["≡"]=>
+ string(7) "&equiv;"
+ ["η"]=>
+ string(5) "&eta;"
["ð"]=>
string(5) "&eth;"
- ["ñ"]=>
- string(8) "&ntilde;"
- ["ò"]=>
- string(8) "&ograve;"
- ["ó"]=>
- string(8) "&oacute;"
- ["ô"]=>
- string(7) "&ocirc;"
- ["õ"]=>
- string(8) "&otilde;"
- ["ö"]=>
- string(6) "&ouml;"
- ["÷"]=>
- string(8) "&divide;"
- ["ø"]=>
- string(8) "&oslash;"
- ["ù"]=>
- string(8) "&ugrave;"
- ["ú"]=>
- string(8) "&uacute;"
- ["û"]=>
- string(7) "&ucirc;"
- ["ü"]=>
- string(6) "&uuml;"
- ["ý"]=>
- string(8) "&yacute;"
- ["þ"]=>
- string(7) "&thorn;"
- ["ÿ"]=>
- string(6) "&yuml;"
- ["Å’"]=>
- string(7) "&OElig;"
- ["Å“"]=>
- string(7) "&oelig;"
- ["Å "]=>
- string(8) "&Scaron;"
- ["Å¡"]=>
- string(8) "&scaron;"
- ["Ÿ"]=>
- string(6) "&Yuml;"
+ ["ë"]=>
+ string(6) "&euml;"
+ ["€"]=>
+ string(6) "&euro;"
+ ["∃"]=>
+ string(7) "&exist;"
["Æ’"]=>
string(6) "&fnof;"
- ["ˆ"]=>
- string(6) "&circ;"
- ["˜"]=>
- string(7) "&tilde;"
- ["Α"]=>
- string(7) "&Alpha;"
- ["Î’"]=>
- string(6) "&Beta;"
- ["Γ"]=>
- string(7) "&Gamma;"
- ["Δ"]=>
- string(7) "&Delta;"
- ["Ε"]=>
- string(9) "&Epsilon;"
- ["Ζ"]=>
- string(6) "&Zeta;"
- ["Η"]=>
- string(5) "&Eta;"
- ["Θ"]=>
- string(7) "&Theta;"
- ["Ι"]=>
- string(6) "&Iota;"
- ["Κ"]=>
- string(7) "&Kappa;"
- ["Λ"]=>
- string(8) "&Lambda;"
- ["Μ"]=>
- string(4) "&Mu;"
- ["Î"]=>
- string(4) "&Nu;"
- ["Ξ"]=>
- string(4) "&Xi;"
- ["Ο"]=>
- string(9) "&Omicron;"
- ["Π"]=>
- string(4) "&Pi;"
- ["Ρ"]=>
- string(5) "&Rho;"
- ["Σ"]=>
- string(7) "&Sigma;"
- ["Τ"]=>
- string(5) "&Tau;"
- ["Î¥"]=>
- string(9) "&Upsilon;"
- ["Φ"]=>
- string(5) "&Phi;"
- ["Χ"]=>
- string(5) "&Chi;"
- ["Ψ"]=>
- string(5) "&Psi;"
- ["Ω"]=>
- string(7) "&Omega;"
- ["α"]=>
- string(7) "&alpha;"
- ["β"]=>
- string(6) "&beta;"
+ ["∀"]=>
+ string(8) "&forall;"
+ ["½"]=>
+ string(8) "&frac12;"
+ ["¼"]=>
+ string(8) "&frac14;"
+ ["¾"]=>
+ string(8) "&frac34;"
+ ["â„"]=>
+ string(7) "&frasl;"
["γ"]=>
string(7) "&gamma;"
- ["δ"]=>
- string(7) "&delta;"
- ["ε"]=>
- string(9) "&epsilon;"
- ["ζ"]=>
- string(6) "&zeta;"
- ["η"]=>
- string(5) "&eta;"
- ["θ"]=>
- string(7) "&theta;"
+ ["≥"]=>
+ string(4) "&ge;"
+ [">"]=>
+ string(4) "&gt;"
+ ["⇔"]=>
+ string(6) "&hArr;"
+ ["↔"]=>
+ string(6) "&harr;"
+ ["♥"]=>
+ string(8) "&hearts;"
+ ["…"]=>
+ string(8) "&hellip;"
+ ["í"]=>
+ string(8) "&iacute;"
+ ["î"]=>
+ string(7) "&icirc;"
+ ["¡"]=>
+ string(7) "&iexcl;"
+ ["ì"]=>
+ string(8) "&igrave;"
+ ["â„‘"]=>
+ string(7) "&image;"
+ ["∞"]=>
+ string(7) "&infin;"
+ ["∫"]=>
+ string(5) "&int;"
["ι"]=>
string(6) "&iota;"
+ ["¿"]=>
+ string(8) "&iquest;"
+ ["∈"]=>
+ string(6) "&isin;"
+ ["ï"]=>
+ string(6) "&iuml;"
["κ"]=>
string(7) "&kappa;"
+ ["â‡"]=>
+ string(6) "&lArr;"
["λ"]=>
string(8) "&lambda;"
- ["μ"]=>
- string(4) "&mu;"
- ["ν"]=>
- string(4) "&nu;"
- ["ξ"]=>
- string(4) "&xi;"
- ["ο"]=>
- string(9) "&omicron;"
- ["Ï€"]=>
- string(4) "&pi;"
- ["Ï"]=>
- string(5) "&rho;"
- ["Ï‚"]=>
- string(8) "&sigmaf;"
- ["σ"]=>
- string(7) "&sigma;"
- ["Ï„"]=>
- string(5) "&tau;"
- ["Ï…"]=>
- string(9) "&upsilon;"
- ["φ"]=>
- string(5) "&phi;"
- ["χ"]=>
- string(5) "&chi;"
- ["ψ"]=>
- string(5) "&psi;"
- ["ω"]=>
- string(7) "&omega;"
- ["Ï‘"]=>
- string(10) "&thetasym;"
- ["Ï’"]=>
- string(7) "&upsih;"
- ["Ï–"]=>
- string(5) "&piv;"
- [" "]=>
- string(6) "&ensp;"
- [" "]=>
- string(6) "&emsp;"
- [" "]=>
- string(8) "&thinsp;"
- ["‌"]=>
- string(6) "&zwnj;"
- ["â€"]=>
- string(5) "&zwj;"
- ["‎"]=>
- string(5) "&lrm;"
- ["â€"]=>
- string(5) "&rlm;"
- ["–"]=>
- string(7) "&ndash;"
- ["—"]=>
- string(7) "&mdash;"
- ["‘"]=>
- string(7) "&lsquo;"
- ["’"]=>
- string(7) "&rsquo;"
- ["‚"]=>
- string(7) "&sbquo;"
+ ["〈"]=>
+ string(6) "&lang;"
+ ["«"]=>
+ string(7) "&laquo;"
+ ["â†"]=>
+ string(6) "&larr;"
+ ["⌈"]=>
+ string(7) "&lceil;"
["“"]=>
string(7) "&ldquo;"
- ["â€"]=>
- string(7) "&rdquo;"
- ["„"]=>
- string(7) "&bdquo;"
- ["†"]=>
- string(8) "&dagger;"
- ["‡"]=>
- string(8) "&Dagger;"
- ["•"]=>
- string(6) "&bull;"
- ["…"]=>
- string(8) "&hellip;"
- ["‰"]=>
- string(8) "&permil;"
- ["′"]=>
- string(7) "&prime;"
- ["″"]=>
- string(7) "&Prime;"
+ ["≤"]=>
+ string(4) "&le;"
+ ["⌊"]=>
+ string(8) "&lfloor;"
+ ["∗"]=>
+ string(8) "&lowast;"
+ ["â—Š"]=>
+ string(5) "&loz;"
+ ["‎"]=>
+ string(5) "&lrm;"
["‹"]=>
string(8) "&lsaquo;"
- ["›"]=>
- string(8) "&rsaquo;"
- ["‾"]=>
- string(7) "&oline;"
- ["â„"]=>
- string(7) "&frasl;"
- ["€"]=>
- string(6) "&euro;"
- ["â„‘"]=>
- string(7) "&image;"
- ["℘"]=>
- string(8) "&weierp;"
- ["ℜ"]=>
- string(6) "&real;"
- ["â„¢"]=>
- string(7) "&trade;"
- ["ℵ"]=>
- string(9) "&alefsym;"
- ["â†"]=>
- string(6) "&larr;"
- ["↑"]=>
- string(6) "&uarr;"
- ["→"]=>
- string(6) "&rarr;"
- ["↓"]=>
- string(6) "&darr;"
- ["↔"]=>
- string(6) "&harr;"
- ["↵"]=>
- string(7) "&crarr;"
- ["â‡"]=>
- string(6) "&lArr;"
- ["⇑"]=>
- string(6) "&uArr;"
- ["⇒"]=>
- string(6) "&rArr;"
- ["⇓"]=>
- string(6) "&dArr;"
- ["⇔"]=>
- string(6) "&hArr;"
- ["∀"]=>
- string(8) "&forall;"
- ["∂"]=>
- string(6) "&part;"
- ["∃"]=>
- string(7) "&exist;"
- ["∅"]=>
- string(7) "&empty;"
- ["∇"]=>
- string(7) "&nabla;"
- ["∈"]=>
- string(6) "&isin;"
- ["∉"]=>
- string(7) "&notin;"
- ["∋"]=>
- string(4) "&ni;"
- ["âˆ"]=>
- string(6) "&prod;"
- ["∑"]=>
- string(5) "&sum;"
+ ["‘"]=>
+ string(7) "&lsquo;"
+ ["<"]=>
+ string(4) "&lt;"
+ ["¯"]=>
+ string(6) "&macr;"
+ ["—"]=>
+ string(7) "&mdash;"
+ ["µ"]=>
+ string(7) "&micro;"
+ ["·"]=>
+ string(8) "&middot;"
["−"]=>
string(7) "&minus;"
- ["∗"]=>
- string(8) "&lowast;"
- ["√"]=>
- string(7) "&radic;"
- ["âˆ"]=>
- string(6) "&prop;"
- ["∞"]=>
- string(7) "&infin;"
- ["∠"]=>
- string(5) "&ang;"
- ["∧"]=>
- string(5) "&and;"
- ["∨"]=>
- string(4) "&or;"
- ["∩"]=>
- string(5) "&cap;"
- ["∪"]=>
- string(5) "&cup;"
- ["∫"]=>
- string(5) "&int;"
- ["∴"]=>
- string(8) "&there4;"
- ["∼"]=>
- string(5) "&sim;"
- ["≅"]=>
- string(6) "&cong;"
- ["≈"]=>
- string(7) "&asymp;"
+ ["μ"]=>
+ string(4) "&mu;"
+ ["∇"]=>
+ string(7) "&nabla;"
+ [" "]=>
+ string(6) "&nbsp;"
+ ["–"]=>
+ string(7) "&ndash;"
["≠"]=>
string(4) "&ne;"
- ["≡"]=>
- string(7) "&equiv;"
- ["≤"]=>
- string(4) "&le;"
- ["≥"]=>
- string(4) "&ge;"
- ["⊂"]=>
- string(5) "&sub;"
- ["⊃"]=>
- string(5) "&sup;"
+ ["∋"]=>
+ string(4) "&ni;"
+ ["¬"]=>
+ string(5) "&not;"
+ ["∉"]=>
+ string(7) "&notin;"
["⊄"]=>
string(6) "&nsub;"
- ["⊆"]=>
- string(6) "&sube;"
- ["⊇"]=>
- string(6) "&supe;"
+ ["ñ"]=>
+ string(8) "&ntilde;"
+ ["ν"]=>
+ string(4) "&nu;"
+ ["ó"]=>
+ string(8) "&oacute;"
+ ["ô"]=>
+ string(7) "&ocirc;"
+ ["Å“"]=>
+ string(7) "&oelig;"
+ ["ò"]=>
+ string(8) "&ograve;"
+ ["‾"]=>
+ string(7) "&oline;"
+ ["ω"]=>
+ string(7) "&omega;"
+ ["ο"]=>
+ string(9) "&omicron;"
["⊕"]=>
string(7) "&oplus;"
+ ["∨"]=>
+ string(4) "&or;"
+ ["ª"]=>
+ string(6) "&ordf;"
+ ["º"]=>
+ string(6) "&ordm;"
+ ["ø"]=>
+ string(8) "&oslash;"
+ ["õ"]=>
+ string(8) "&otilde;"
["⊗"]=>
string(8) "&otimes;"
+ ["ö"]=>
+ string(6) "&ouml;"
+ ["¶"]=>
+ string(6) "&para;"
+ ["∂"]=>
+ string(6) "&part;"
+ ["‰"]=>
+ string(8) "&permil;"
["⊥"]=>
string(6) "&perp;"
- ["â‹…"]=>
- string(6) "&sdot;"
- ["⌈"]=>
- string(7) "&lceil;"
+ ["φ"]=>
+ string(5) "&phi;"
+ ["Ï€"]=>
+ string(4) "&pi;"
+ ["Ï–"]=>
+ string(5) "&piv;"
+ ["±"]=>
+ string(8) "&plusmn;"
+ ["£"]=>
+ string(7) "&pound;"
+ ["′"]=>
+ string(7) "&prime;"
+ ["âˆ"]=>
+ string(6) "&prod;"
+ ["âˆ"]=>
+ string(6) "&prop;"
+ ["ψ"]=>
+ string(5) "&psi;"
+ ["""]=>
+ string(6) "&quot;"
+ ["⇒"]=>
+ string(6) "&rArr;"
+ ["√"]=>
+ string(7) "&radic;"
+ ["〉"]=>
+ string(6) "&rang;"
+ ["»"]=>
+ string(7) "&raquo;"
+ ["→"]=>
+ string(6) "&rarr;"
["⌉"]=>
string(7) "&rceil;"
- ["⌊"]=>
- string(8) "&lfloor;"
+ ["â€"]=>
+ string(7) "&rdquo;"
+ ["ℜ"]=>
+ string(6) "&real;"
+ ["®"]=>
+ string(5) "&reg;"
["⌋"]=>
string(8) "&rfloor;"
- ["〈"]=>
- string(6) "&lang;"
- ["〉"]=>
- string(6) "&rang;"
- ["â—Š"]=>
- string(5) "&loz;"
- ["â™ "]=>
- string(8) "&spades;"
- ["♣"]=>
- string(7) "&clubs;"
- ["♥"]=>
- string(8) "&hearts;"
- ["♦"]=>
- string(7) "&diams;"
- ["&"]=>
- string(5) "&amp;"
- ["""]=>
- string(6) "&quot;"
- ["'"]=>
- string(6) "&#039;"
- ["<"]=>
- string(4) "&lt;"
- [">"]=>
- string(4) "&gt;"
-}
--- with table = HTML_ENTITIES & quote_style = ENT_NOQUOTES --
-array(251) {
- [" "]=>
- string(6) "&nbsp;"
- ["¡"]=>
- string(7) "&iexcl;"
- ["¢"]=>
- string(6) "&cent;"
- ["£"]=>
- string(7) "&pound;"
- ["¤"]=>
- string(8) "&curren;"
- ["Â¥"]=>
- string(5) "&yen;"
- ["¦"]=>
- string(8) "&brvbar;"
+ ["Ï"]=>
+ string(5) "&rho;"
+ ["â€"]=>
+ string(5) "&rlm;"
+ ["›"]=>
+ string(8) "&rsaquo;"
+ ["’"]=>
+ string(7) "&rsquo;"
+ ["‚"]=>
+ string(7) "&sbquo;"
+ ["Å¡"]=>
+ string(8) "&scaron;"
+ ["â‹…"]=>
+ string(6) "&sdot;"
["§"]=>
string(6) "&sect;"
- ["¨"]=>
- string(5) "&uml;"
- ["©"]=>
- string(6) "&copy;"
- ["ª"]=>
- string(6) "&ordf;"
- ["«"]=>
- string(7) "&laquo;"
- ["¬"]=>
- string(5) "&not;"
["­"]=>
string(5) "&shy;"
- ["®"]=>
- string(5) "&reg;"
- ["¯"]=>
- string(6) "&macr;"
- ["°"]=>
- string(5) "&deg;"
- ["±"]=>
- string(8) "&plusmn;"
+ ["σ"]=>
+ string(7) "&sigma;"
+ ["Ï‚"]=>
+ string(8) "&sigmaf;"
+ ["∼"]=>
+ string(5) "&sim;"
+ ["â™ "]=>
+ string(8) "&spades;"
+ ["⊂"]=>
+ string(5) "&sub;"
+ ["⊆"]=>
+ string(6) "&sube;"
+ ["∑"]=>
+ string(5) "&sum;"
+ ["¹"]=>
+ string(6) "&sup1;"
["²"]=>
string(6) "&sup2;"
["³"]=>
string(6) "&sup3;"
- ["´"]=>
- string(7) "&acute;"
- ["µ"]=>
- string(7) "&micro;"
- ["¶"]=>
- string(6) "&para;"
- ["·"]=>
- string(8) "&middot;"
- ["¸"]=>
- string(7) "&cedil;"
- ["¹"]=>
- string(6) "&sup1;"
- ["º"]=>
- string(6) "&ordm;"
- ["»"]=>
- string(7) "&raquo;"
- ["¼"]=>
- string(8) "&frac14;"
- ["½"]=>
- string(8) "&frac12;"
- ["¾"]=>
- string(8) "&frac34;"
- ["¿"]=>
- string(8) "&iquest;"
- ["À"]=>
- string(8) "&Agrave;"
+ ["⊃"]=>
+ string(5) "&sup;"
+ ["⊇"]=>
+ string(6) "&supe;"
+ ["ß"]=>
+ string(7) "&szlig;"
+ ["Ï„"]=>
+ string(5) "&tau;"
+ ["∴"]=>
+ string(8) "&there4;"
+ ["θ"]=>
+ string(7) "&theta;"
+ ["Ï‘"]=>
+ string(10) "&thetasym;"
+ [" "]=>
+ string(8) "&thinsp;"
+ ["þ"]=>
+ string(7) "&thorn;"
+ ["˜"]=>
+ string(7) "&tilde;"
+ ["×"]=>
+ string(7) "&times;"
+ ["â„¢"]=>
+ string(7) "&trade;"
+ ["⇑"]=>
+ string(6) "&uArr;"
+ ["ú"]=>
+ string(8) "&uacute;"
+ ["↑"]=>
+ string(6) "&uarr;"
+ ["û"]=>
+ string(7) "&ucirc;"
+ ["ù"]=>
+ string(8) "&ugrave;"
+ ["¨"]=>
+ string(5) "&uml;"
+ ["Ï’"]=>
+ string(7) "&upsih;"
+ ["Ï…"]=>
+ string(9) "&upsilon;"
+ ["ü"]=>
+ string(6) "&uuml;"
+ ["℘"]=>
+ string(8) "&weierp;"
+ ["ξ"]=>
+ string(4) "&xi;"
+ ["ý"]=>
+ string(8) "&yacute;"
+ ["Â¥"]=>
+ string(5) "&yen;"
+ ["ÿ"]=>
+ string(6) "&yuml;"
+ ["ζ"]=>
+ string(6) "&zeta;"
+ ["â€"]=>
+ string(5) "&zwj;"
+ ["‌"]=>
+ string(6) "&zwnj;"
+}
+-- with table = HTML_ENTITIES & quote_style = ENT_NOQUOTES --
+array(251) {
+ ["Æ"]=>
+ string(7) "&AElig;"
["Ã"]=>
string(8) "&Aacute;"
["Â"]=>
string(7) "&Acirc;"
+ ["À"]=>
+ string(8) "&Agrave;"
+ ["Α"]=>
+ string(7) "&Alpha;"
+ ["Ã…"]=>
+ string(7) "&Aring;"
["Ã"]=>
string(8) "&Atilde;"
["Ä"]=>
string(6) "&Auml;"
- ["Ã…"]=>
- string(7) "&Aring;"
- ["Æ"]=>
- string(7) "&AElig;"
+ ["Î’"]=>
+ string(6) "&Beta;"
["Ç"]=>
string(8) "&Ccedil;"
- ["È"]=>
- string(8) "&Egrave;"
+ ["Χ"]=>
+ string(5) "&Chi;"
+ ["‡"]=>
+ string(8) "&Dagger;"
+ ["Δ"]=>
+ string(7) "&Delta;"
+ ["Ã"]=>
+ string(5) "&ETH;"
["É"]=>
string(8) "&Eacute;"
["Ê"]=>
string(7) "&Ecirc;"
+ ["È"]=>
+ string(8) "&Egrave;"
+ ["Ε"]=>
+ string(9) "&Epsilon;"
+ ["Η"]=>
+ string(5) "&Eta;"
["Ë"]=>
string(6) "&Euml;"
- ["Ì"]=>
- string(8) "&Igrave;"
+ ["Γ"]=>
+ string(7) "&Gamma;"
["Ã"]=>
string(8) "&Iacute;"
["ÃŽ"]=>
string(7) "&Icirc;"
+ ["Ì"]=>
+ string(8) "&Igrave;"
+ ["Ι"]=>
+ string(6) "&Iota;"
["Ã"]=>
string(6) "&Iuml;"
- ["Ã"]=>
- string(5) "&ETH;"
+ ["Κ"]=>
+ string(7) "&Kappa;"
+ ["Λ"]=>
+ string(8) "&Lambda;"
+ ["Μ"]=>
+ string(4) "&Mu;"
["Ñ"]=>
string(8) "&Ntilde;"
- ["Ã’"]=>
- string(8) "&Ograve;"
+ ["Î"]=>
+ string(4) "&Nu;"
+ ["Å’"]=>
+ string(7) "&OElig;"
["Ó"]=>
string(8) "&Oacute;"
["Ô"]=>
string(7) "&Ocirc;"
+ ["Ã’"]=>
+ string(8) "&Ograve;"
+ ["Ω"]=>
+ string(7) "&Omega;"
+ ["Ο"]=>
+ string(9) "&Omicron;"
+ ["Ø"]=>
+ string(8) "&Oslash;"
["Õ"]=>
string(8) "&Otilde;"
["Ö"]=>
string(6) "&Ouml;"
- ["×"]=>
- string(7) "&times;"
- ["Ø"]=>
- string(8) "&Oslash;"
- ["Ù"]=>
- string(8) "&Ugrave;"
+ ["Φ"]=>
+ string(5) "&Phi;"
+ ["Π"]=>
+ string(4) "&Pi;"
+ ["″"]=>
+ string(7) "&Prime;"
+ ["Ψ"]=>
+ string(5) "&Psi;"
+ ["Ρ"]=>
+ string(5) "&Rho;"
+ ["Å "]=>
+ string(8) "&Scaron;"
+ ["Σ"]=>
+ string(7) "&Sigma;"
+ ["Þ"]=>
+ string(7) "&THORN;"
+ ["Τ"]=>
+ string(5) "&Tau;"
+ ["Θ"]=>
+ string(7) "&Theta;"
["Ú"]=>
string(8) "&Uacute;"
["Û"]=>
string(7) "&Ucirc;"
+ ["Ù"]=>
+ string(8) "&Ugrave;"
+ ["Î¥"]=>
+ string(9) "&Upsilon;"
["Ü"]=>
string(6) "&Uuml;"
+ ["Ξ"]=>
+ string(4) "&Xi;"
["Ã"]=>
string(8) "&Yacute;"
- ["Þ"]=>
- string(7) "&THORN;"
- ["ß"]=>
- string(7) "&szlig;"
- ["à"]=>
- string(8) "&agrave;"
+ ["Ÿ"]=>
+ string(6) "&Yuml;"
+ ["Ζ"]=>
+ string(6) "&Zeta;"
["á"]=>
string(8) "&aacute;"
["â"]=>
string(7) "&acirc;"
+ ["´"]=>
+ string(7) "&acute;"
+ ["æ"]=>
+ string(7) "&aelig;"
+ ["à"]=>
+ string(8) "&agrave;"
+ ["ℵ"]=>
+ string(9) "&alefsym;"
+ ["α"]=>
+ string(7) "&alpha;"
+ ["&"]=>
+ string(5) "&amp;"
+ ["∧"]=>
+ string(5) "&and;"
+ ["∠"]=>
+ string(5) "&ang;"
+ ["Ã¥"]=>
+ string(7) "&aring;"
+ ["≈"]=>
+ string(7) "&asymp;"
["ã"]=>
string(8) "&atilde;"
["ä"]=>
string(6) "&auml;"
- ["Ã¥"]=>
- string(7) "&aring;"
- ["æ"]=>
- string(7) "&aelig;"
+ ["„"]=>
+ string(7) "&bdquo;"
+ ["β"]=>
+ string(6) "&beta;"
+ ["¦"]=>
+ string(8) "&brvbar;"
+ ["•"]=>
+ string(6) "&bull;"
+ ["∩"]=>
+ string(5) "&cap;"
["ç"]=>
string(8) "&ccedil;"
- ["è"]=>
- string(8) "&egrave;"
+ ["¸"]=>
+ string(7) "&cedil;"
+ ["¢"]=>
+ string(6) "&cent;"
+ ["χ"]=>
+ string(5) "&chi;"
+ ["ˆ"]=>
+ string(6) "&circ;"
+ ["♣"]=>
+ string(7) "&clubs;"
+ ["≅"]=>
+ string(6) "&cong;"
+ ["©"]=>
+ string(6) "&copy;"
+ ["↵"]=>
+ string(7) "&crarr;"
+ ["∪"]=>
+ string(5) "&cup;"
+ ["¤"]=>
+ string(8) "&curren;"
+ ["⇓"]=>
+ string(6) "&dArr;"
+ ["†"]=>
+ string(8) "&dagger;"
+ ["↓"]=>
+ string(6) "&darr;"
+ ["°"]=>
+ string(5) "&deg;"
+ ["δ"]=>
+ string(7) "&delta;"
+ ["♦"]=>
+ string(7) "&diams;"
+ ["÷"]=>
+ string(8) "&divide;"
["é"]=>
string(8) "&eacute;"
["ê"]=>
string(7) "&ecirc;"
- ["ë"]=>
- string(6) "&euml;"
- ["ì"]=>
- string(8) "&igrave;"
- ["í"]=>
- string(8) "&iacute;"
- ["î"]=>
- string(7) "&icirc;"
- ["ï"]=>
- string(6) "&iuml;"
+ ["è"]=>
+ string(8) "&egrave;"
+ ["∅"]=>
+ string(7) "&empty;"
+ [" "]=>
+ string(6) "&emsp;"
+ [" "]=>
+ string(6) "&ensp;"
+ ["ε"]=>
+ string(9) "&epsilon;"
+ ["≡"]=>
+ string(7) "&equiv;"
+ ["η"]=>
+ string(5) "&eta;"
["ð"]=>
string(5) "&eth;"
- ["ñ"]=>
- string(8) "&ntilde;"
- ["ò"]=>
- string(8) "&ograve;"
- ["ó"]=>
- string(8) "&oacute;"
- ["ô"]=>
- string(7) "&ocirc;"
- ["õ"]=>
- string(8) "&otilde;"
- ["ö"]=>
- string(6) "&ouml;"
- ["÷"]=>
- string(8) "&divide;"
- ["ø"]=>
- string(8) "&oslash;"
- ["ù"]=>
- string(8) "&ugrave;"
- ["ú"]=>
- string(8) "&uacute;"
- ["û"]=>
- string(7) "&ucirc;"
- ["ü"]=>
- string(6) "&uuml;"
- ["ý"]=>
- string(8) "&yacute;"
- ["þ"]=>
- string(7) "&thorn;"
- ["ÿ"]=>
- string(6) "&yuml;"
- ["Å’"]=>
- string(7) "&OElig;"
- ["Å“"]=>
- string(7) "&oelig;"
- ["Å "]=>
- string(8) "&Scaron;"
- ["Å¡"]=>
- string(8) "&scaron;"
- ["Ÿ"]=>
- string(6) "&Yuml;"
+ ["ë"]=>
+ string(6) "&euml;"
+ ["€"]=>
+ string(6) "&euro;"
+ ["∃"]=>
+ string(7) "&exist;"
["Æ’"]=>
string(6) "&fnof;"
- ["ˆ"]=>
- string(6) "&circ;"
- ["˜"]=>
- string(7) "&tilde;"
- ["Α"]=>
- string(7) "&Alpha;"
- ["Î’"]=>
- string(6) "&Beta;"
- ["Γ"]=>
- string(7) "&Gamma;"
- ["Δ"]=>
- string(7) "&Delta;"
- ["Ε"]=>
- string(9) "&Epsilon;"
- ["Ζ"]=>
- string(6) "&Zeta;"
- ["Η"]=>
- string(5) "&Eta;"
- ["Θ"]=>
- string(7) "&Theta;"
- ["Ι"]=>
- string(6) "&Iota;"
- ["Κ"]=>
- string(7) "&Kappa;"
- ["Λ"]=>
- string(8) "&Lambda;"
- ["Μ"]=>
- string(4) "&Mu;"
- ["Î"]=>
- string(4) "&Nu;"
- ["Ξ"]=>
- string(4) "&Xi;"
- ["Ο"]=>
- string(9) "&Omicron;"
- ["Π"]=>
- string(4) "&Pi;"
- ["Ρ"]=>
- string(5) "&Rho;"
- ["Σ"]=>
- string(7) "&Sigma;"
- ["Τ"]=>
- string(5) "&Tau;"
- ["Î¥"]=>
- string(9) "&Upsilon;"
- ["Φ"]=>
- string(5) "&Phi;"
- ["Χ"]=>
- string(5) "&Chi;"
- ["Ψ"]=>
- string(5) "&Psi;"
- ["Ω"]=>
- string(7) "&Omega;"
- ["α"]=>
- string(7) "&alpha;"
- ["β"]=>
- string(6) "&beta;"
+ ["∀"]=>
+ string(8) "&forall;"
+ ["½"]=>
+ string(8) "&frac12;"
+ ["¼"]=>
+ string(8) "&frac14;"
+ ["¾"]=>
+ string(8) "&frac34;"
+ ["â„"]=>
+ string(7) "&frasl;"
["γ"]=>
string(7) "&gamma;"
- ["δ"]=>
- string(7) "&delta;"
- ["ε"]=>
- string(9) "&epsilon;"
- ["ζ"]=>
- string(6) "&zeta;"
- ["η"]=>
- string(5) "&eta;"
- ["θ"]=>
- string(7) "&theta;"
+ ["≥"]=>
+ string(4) "&ge;"
+ [">"]=>
+ string(4) "&gt;"
+ ["⇔"]=>
+ string(6) "&hArr;"
+ ["↔"]=>
+ string(6) "&harr;"
+ ["♥"]=>
+ string(8) "&hearts;"
+ ["…"]=>
+ string(8) "&hellip;"
+ ["í"]=>
+ string(8) "&iacute;"
+ ["î"]=>
+ string(7) "&icirc;"
+ ["¡"]=>
+ string(7) "&iexcl;"
+ ["ì"]=>
+ string(8) "&igrave;"
+ ["â„‘"]=>
+ string(7) "&image;"
+ ["∞"]=>
+ string(7) "&infin;"
+ ["∫"]=>
+ string(5) "&int;"
["ι"]=>
string(6) "&iota;"
+ ["¿"]=>
+ string(8) "&iquest;"
+ ["∈"]=>
+ string(6) "&isin;"
+ ["ï"]=>
+ string(6) "&iuml;"
["κ"]=>
string(7) "&kappa;"
+ ["â‡"]=>
+ string(6) "&lArr;"
["λ"]=>
string(8) "&lambda;"
+ ["〈"]=>
+ string(6) "&lang;"
+ ["«"]=>
+ string(7) "&laquo;"
+ ["â†"]=>
+ string(6) "&larr;"
+ ["⌈"]=>
+ string(7) "&lceil;"
+ ["“"]=>
+ string(7) "&ldquo;"
+ ["≤"]=>
+ string(4) "&le;"
+ ["⌊"]=>
+ string(8) "&lfloor;"
+ ["∗"]=>
+ string(8) "&lowast;"
+ ["â—Š"]=>
+ string(5) "&loz;"
+ ["‎"]=>
+ string(5) "&lrm;"
+ ["‹"]=>
+ string(8) "&lsaquo;"
+ ["‘"]=>
+ string(7) "&lsquo;"
+ ["<"]=>
+ string(4) "&lt;"
+ ["¯"]=>
+ string(6) "&macr;"
+ ["—"]=>
+ string(7) "&mdash;"
+ ["µ"]=>
+ string(7) "&micro;"
+ ["·"]=>
+ string(8) "&middot;"
+ ["−"]=>
+ string(7) "&minus;"
["μ"]=>
string(4) "&mu;"
+ ["∇"]=>
+ string(7) "&nabla;"
+ [" "]=>
+ string(6) "&nbsp;"
+ ["–"]=>
+ string(7) "&ndash;"
+ ["≠"]=>
+ string(4) "&ne;"
+ ["∋"]=>
+ string(4) "&ni;"
+ ["¬"]=>
+ string(5) "&not;"
+ ["∉"]=>
+ string(7) "&notin;"
+ ["⊄"]=>
+ string(6) "&nsub;"
+ ["ñ"]=>
+ string(8) "&ntilde;"
["ν"]=>
string(4) "&nu;"
- ["ξ"]=>
- string(4) "&xi;"
+ ["ó"]=>
+ string(8) "&oacute;"
+ ["ô"]=>
+ string(7) "&ocirc;"
+ ["Å“"]=>
+ string(7) "&oelig;"
+ ["ò"]=>
+ string(8) "&ograve;"
+ ["‾"]=>
+ string(7) "&oline;"
+ ["ω"]=>
+ string(7) "&omega;"
["ο"]=>
string(9) "&omicron;"
- ["Ï€"]=>
- string(4) "&pi;"
- ["Ï"]=>
- string(5) "&rho;"
- ["Ï‚"]=>
- string(8) "&sigmaf;"
- ["σ"]=>
- string(7) "&sigma;"
- ["Ï„"]=>
- string(5) "&tau;"
- ["Ï…"]=>
- string(9) "&upsilon;"
+ ["⊕"]=>
+ string(7) "&oplus;"
+ ["∨"]=>
+ string(4) "&or;"
+ ["ª"]=>
+ string(6) "&ordf;"
+ ["º"]=>
+ string(6) "&ordm;"
+ ["ø"]=>
+ string(8) "&oslash;"
+ ["õ"]=>
+ string(8) "&otilde;"
+ ["⊗"]=>
+ string(8) "&otimes;"
+ ["ö"]=>
+ string(6) "&ouml;"
+ ["¶"]=>
+ string(6) "&para;"
+ ["∂"]=>
+ string(6) "&part;"
+ ["‰"]=>
+ string(8) "&permil;"
+ ["⊥"]=>
+ string(6) "&perp;"
["φ"]=>
string(5) "&phi;"
- ["χ"]=>
- string(5) "&chi;"
- ["ψ"]=>
- string(5) "&psi;"
- ["ω"]=>
- string(7) "&omega;"
- ["Ï‘"]=>
- string(10) "&thetasym;"
- ["Ï’"]=>
- string(7) "&upsih;"
+ ["Ï€"]=>
+ string(4) "&pi;"
["Ï–"]=>
string(5) "&piv;"
- [" "]=>
- string(6) "&ensp;"
- [" "]=>
- string(6) "&emsp;"
- [" "]=>
- string(8) "&thinsp;"
- ["‌"]=>
- string(6) "&zwnj;"
- ["â€"]=>
- string(5) "&zwj;"
- ["‎"]=>
- string(5) "&lrm;"
- ["â€"]=>
- string(5) "&rlm;"
- ["–"]=>
- string(7) "&ndash;"
- ["—"]=>
- string(7) "&mdash;"
- ["‘"]=>
- string(7) "&lsquo;"
- ["’"]=>
- string(7) "&rsquo;"
- ["‚"]=>
- string(7) "&sbquo;"
- ["“"]=>
- string(7) "&ldquo;"
- ["â€"]=>
- string(7) "&rdquo;"
- ["„"]=>
- string(7) "&bdquo;"
- ["†"]=>
- string(8) "&dagger;"
- ["‡"]=>
- string(8) "&Dagger;"
- ["•"]=>
- string(6) "&bull;"
- ["…"]=>
- string(8) "&hellip;"
- ["‰"]=>
- string(8) "&permil;"
+ ["±"]=>
+ string(8) "&plusmn;"
+ ["£"]=>
+ string(7) "&pound;"
["′"]=>
string(7) "&prime;"
- ["″"]=>
- string(7) "&Prime;"
- ["‹"]=>
- string(8) "&lsaquo;"
- ["›"]=>
- string(8) "&rsaquo;"
- ["‾"]=>
- string(7) "&oline;"
- ["â„"]=>
- string(7) "&frasl;"
- ["€"]=>
- string(6) "&euro;"
- ["â„‘"]=>
- string(7) "&image;"
- ["℘"]=>
- string(8) "&weierp;"
- ["ℜ"]=>
- string(6) "&real;"
- ["â„¢"]=>
- string(7) "&trade;"
- ["ℵ"]=>
- string(9) "&alefsym;"
- ["â†"]=>
- string(6) "&larr;"
- ["↑"]=>
- string(6) "&uarr;"
- ["→"]=>
- string(6) "&rarr;"
- ["↓"]=>
- string(6) "&darr;"
- ["↔"]=>
- string(6) "&harr;"
- ["↵"]=>
- string(7) "&crarr;"
- ["â‡"]=>
- string(6) "&lArr;"
- ["⇑"]=>
- string(6) "&uArr;"
- ["⇒"]=>
- string(6) "&rArr;"
- ["⇓"]=>
- string(6) "&dArr;"
- ["⇔"]=>
- string(6) "&hArr;"
- ["∀"]=>
- string(8) "&forall;"
- ["∂"]=>
- string(6) "&part;"
- ["∃"]=>
- string(7) "&exist;"
- ["∅"]=>
- string(7) "&empty;"
- ["∇"]=>
- string(7) "&nabla;"
- ["∈"]=>
- string(6) "&isin;"
- ["∉"]=>
- string(7) "&notin;"
- ["∋"]=>
- string(4) "&ni;"
["âˆ"]=>
string(6) "&prod;"
- ["∑"]=>
- string(5) "&sum;"
- ["−"]=>
- string(7) "&minus;"
- ["∗"]=>
- string(8) "&lowast;"
- ["√"]=>
- string(7) "&radic;"
["âˆ"]=>
string(6) "&prop;"
- ["∞"]=>
- string(7) "&infin;"
- ["∠"]=>
- string(5) "&ang;"
- ["∧"]=>
- string(5) "&and;"
- ["∨"]=>
- string(4) "&or;"
- ["∩"]=>
- string(5) "&cap;"
- ["∪"]=>
- string(5) "&cup;"
- ["∫"]=>
- string(5) "&int;"
- ["∴"]=>
- string(8) "&there4;"
+ ["ψ"]=>
+ string(5) "&psi;"
+ ["⇒"]=>
+ string(6) "&rArr;"
+ ["√"]=>
+ string(7) "&radic;"
+ ["〉"]=>
+ string(6) "&rang;"
+ ["»"]=>
+ string(7) "&raquo;"
+ ["→"]=>
+ string(6) "&rarr;"
+ ["⌉"]=>
+ string(7) "&rceil;"
+ ["â€"]=>
+ string(7) "&rdquo;"
+ ["ℜ"]=>
+ string(6) "&real;"
+ ["®"]=>
+ string(5) "&reg;"
+ ["⌋"]=>
+ string(8) "&rfloor;"
+ ["Ï"]=>
+ string(5) "&rho;"
+ ["â€"]=>
+ string(5) "&rlm;"
+ ["›"]=>
+ string(8) "&rsaquo;"
+ ["’"]=>
+ string(7) "&rsquo;"
+ ["‚"]=>
+ string(7) "&sbquo;"
+ ["Å¡"]=>
+ string(8) "&scaron;"
+ ["â‹…"]=>
+ string(6) "&sdot;"
+ ["§"]=>
+ string(6) "&sect;"
+ ["­"]=>
+ string(5) "&shy;"
+ ["σ"]=>
+ string(7) "&sigma;"
+ ["Ï‚"]=>
+ string(8) "&sigmaf;"
["∼"]=>
string(5) "&sim;"
- ["≅"]=>
- string(6) "&cong;"
- ["≈"]=>
- string(7) "&asymp;"
- ["≠"]=>
- string(4) "&ne;"
- ["≡"]=>
- string(7) "&equiv;"
- ["≤"]=>
- string(4) "&le;"
- ["≥"]=>
- string(4) "&ge;"
+ ["â™ "]=>
+ string(8) "&spades;"
["⊂"]=>
string(5) "&sub;"
- ["⊃"]=>
- string(5) "&sup;"
- ["⊄"]=>
- string(6) "&nsub;"
["⊆"]=>
string(6) "&sube;"
+ ["∑"]=>
+ string(5) "&sum;"
+ ["¹"]=>
+ string(6) "&sup1;"
+ ["²"]=>
+ string(6) "&sup2;"
+ ["³"]=>
+ string(6) "&sup3;"
+ ["⊃"]=>
+ string(5) "&sup;"
["⊇"]=>
string(6) "&supe;"
- ["⊕"]=>
- string(7) "&oplus;"
- ["⊗"]=>
- string(8) "&otimes;"
- ["⊥"]=>
- string(6) "&perp;"
- ["â‹…"]=>
- string(6) "&sdot;"
- ["⌈"]=>
- string(7) "&lceil;"
- ["⌉"]=>
- string(7) "&rceil;"
- ["⌊"]=>
- string(8) "&lfloor;"
- ["⌋"]=>
- string(8) "&rfloor;"
- ["〈"]=>
- string(6) "&lang;"
- ["〉"]=>
- string(6) "&rang;"
- ["â—Š"]=>
- string(5) "&loz;"
- ["â™ "]=>
- string(8) "&spades;"
- ["♣"]=>
- string(7) "&clubs;"
- ["♥"]=>
- string(8) "&hearts;"
- ["♦"]=>
- string(7) "&diams;"
- ["&"]=>
- string(5) "&amp;"
- ["<"]=>
- string(4) "&lt;"
- [">"]=>
- string(4) "&gt;"
+ ["ß"]=>
+ string(7) "&szlig;"
+ ["Ï„"]=>
+ string(5) "&tau;"
+ ["∴"]=>
+ string(8) "&there4;"
+ ["θ"]=>
+ string(7) "&theta;"
+ ["Ï‘"]=>
+ string(10) "&thetasym;"
+ [" "]=>
+ string(8) "&thinsp;"
+ ["þ"]=>
+ string(7) "&thorn;"
+ ["˜"]=>
+ string(7) "&tilde;"
+ ["×"]=>
+ string(7) "&times;"
+ ["â„¢"]=>
+ string(7) "&trade;"
+ ["⇑"]=>
+ string(6) "&uArr;"
+ ["ú"]=>
+ string(8) "&uacute;"
+ ["↑"]=>
+ string(6) "&uarr;"
+ ["û"]=>
+ string(7) "&ucirc;"
+ ["ù"]=>
+ string(8) "&ugrave;"
+ ["¨"]=>
+ string(5) "&uml;"
+ ["Ï’"]=>
+ string(7) "&upsih;"
+ ["Ï…"]=>
+ string(9) "&upsilon;"
+ ["ü"]=>
+ string(6) "&uuml;"
+ ["℘"]=>
+ string(8) "&weierp;"
+ ["ξ"]=>
+ string(4) "&xi;"
+ ["ý"]=>
+ string(8) "&yacute;"
+ ["Â¥"]=>
+ string(5) "&yen;"
+ ["ÿ"]=>
+ string(6) "&yuml;"
+ ["ζ"]=>
+ string(6) "&zeta;"
+ ["â€"]=>
+ string(5) "&zwj;"
+ ["‌"]=>
+ string(6) "&zwnj;"
}
Done
diff --git a/ext/standard/tests/strings/get_html_translation_table_basic3.phpt b/ext/standard/tests/strings/get_html_translation_table_basic3.phpt
index e7c66b5b09..4e1cdddd29 100644
--- a/ext/standard/tests/strings/get_html_translation_table_basic3.phpt
+++ b/ext/standard/tests/strings/get_html_translation_table_basic3.phpt
@@ -15,15 +15,21 @@ echo "*** Testing get_html_translation_table() : basic functionality ***\n";
echo "-- with table = HTML_SPECIALCHARS & quote_style = ENT_COMPAT --\n";
$table = HTML_SPECIALCHARS;
$quote_style = ENT_COMPAT;
-var_dump( get_html_translation_table($table, $quote_style, "UTF-8") );
+$tt = get_html_translation_table($table, $quote_style, "UTF-8");
+asort( $tt );
+var_dump( $tt );
echo "-- with table = HTML_SPECIALCHARS & quote_style = ENT_QUOTES --\n";
$quote_style = ENT_QUOTES;
-var_dump( get_html_translation_table($table, $quote_style, "UTF-8") );
+$tt = get_html_translation_table($table, $quote_style, "UTF-8");
+asort( $tt );
+var_dump( $tt );
echo "-- with table = HTML_SPECIALCHARS & quote_style = ENT_NOQUOTES --\n";
$quote_style = ENT_NOQUOTES;
-var_dump( get_html_translation_table($table, $quote_style, "UTF-8") );
+$tt = get_html_translation_table($table, $quote_style, "UTF-8");
+asort( $tt );
+var_dump( $tt );
echo "Done\n";
?>
@@ -33,33 +39,33 @@ echo "Done\n";
array(4) {
["&"]=>
string(5) "&amp;"
- ["""]=>
- string(6) "&quot;"
- ["<"]=>
- string(4) "&lt;"
[">"]=>
string(4) "&gt;"
+ ["<"]=>
+ string(4) "&lt;"
+ ["""]=>
+ string(6) "&quot;"
}
-- with table = HTML_SPECIALCHARS & quote_style = ENT_QUOTES --
array(5) {
- ["&"]=>
- string(5) "&amp;"
- ["""]=>
- string(6) "&quot;"
["'"]=>
string(6) "&#039;"
- ["<"]=>
- string(4) "&lt;"
+ ["&"]=>
+ string(5) "&amp;"
[">"]=>
string(4) "&gt;"
+ ["<"]=>
+ string(4) "&lt;"
+ ["""]=>
+ string(6) "&quot;"
}
-- with table = HTML_SPECIALCHARS & quote_style = ENT_NOQUOTES --
array(3) {
["&"]=>
string(5) "&amp;"
- ["<"]=>
- string(4) "&lt;"
[">"]=>
string(4) "&gt;"
+ ["<"]=>
+ string(4) "&lt;"
}
Done
diff --git a/ext/standard/tests/strings/get_html_translation_table_basic4.phpt b/ext/standard/tests/strings/get_html_translation_table_basic4.phpt
index 938fff4f5c..1a908efdb4 100644
--- a/ext/standard/tests/strings/get_html_translation_table_basic4.phpt
+++ b/ext/standard/tests/strings/get_html_translation_table_basic4.phpt
@@ -12,11 +12,15 @@ echo "*** Testing get_html_translation_table() : basic functionality/Windows-125
echo "-- with table = HTML_ENTITIES --\n";
$table = HTML_ENTITIES;
-var_dump( get_html_translation_table($table, ENT_COMPAT, "WINDOWS-1252") );
+$tt = get_html_translation_table($table, ENT_COMPAT, "WINDOWS-1252");
+asort( $tt );
+var_dump( $tt );
echo "-- with table = HTML_SPECIALCHARS --\n";
$table = HTML_SPECIALCHARS;
-var_dump( get_html_translation_table($table, ENT_COMPAT, "WINDOWS-1252") );
+$tt = get_html_translation_table($table, ENT_COMPAT, "WINDOWS-1252");
+asort( $tt );
+var_dump( $tt );
echo "Done\n";
?>
@@ -24,266 +28,266 @@ echo "Done\n";
*** Testing get_html_translation_table() : basic functionality/Windows-1252 ***
-- with table = HTML_ENTITIES --
array(125) {
- ["€"]=>
- string(6) "&euro;"
- ["‚"]=>
- string(7) "&sbquo;"
- ["ƒ"]=>
- string(6) "&fnof;"
- ["„"]=>
- string(7) "&bdquo;"
- ["…"]=>
- string(8) "&hellip;"
- ["†"]=>
- string(8) "&dagger;"
- ["‡"]=>
- string(8) "&Dagger;"
- ["ˆ"]=>
- string(6) "&circ;"
- ["‰"]=>
- string(8) "&permil;"
- ["Š"]=>
- string(8) "&Scaron;"
- ["‹"]=>
- string(8) "&lsaquo;"
- ["Œ"]=>
- string(7) "&OElig;"
- ["‘"]=>
- string(7) "&lsquo;"
- ["’"]=>
- string(7) "&rsquo;"
- ["“"]=>
- string(7) "&ldquo;"
- ["”"]=>
- string(7) "&rdquo;"
- ["•"]=>
- string(6) "&bull;"
- ["–"]=>
- string(7) "&ndash;"
- ["—"]=>
- string(7) "&mdash;"
- ["˜"]=>
- string(7) "&tilde;"
- ["™"]=>
- string(7) "&trade;"
- ["š"]=>
- string(8) "&scaron;"
- ["›"]=>
- string(8) "&rsaquo;"
- ["œ"]=>
- string(7) "&oelig;"
- ["Ÿ"]=>
- string(6) "&Yuml;"
- [" "]=>
- string(6) "&nbsp;"
- ["¡"]=>
- string(7) "&iexcl;"
- ["¢"]=>
- string(6) "&cent;"
- ["£"]=>
- string(7) "&pound;"
- ["¤"]=>
- string(8) "&curren;"
- ["¥"]=>
- string(5) "&yen;"
- ["¦"]=>
- string(8) "&brvbar;"
- ["§"]=>
- string(6) "&sect;"
- ["¨"]=>
- string(5) "&uml;"
- ["©"]=>
- string(6) "&copy;"
- ["ª"]=>
- string(6) "&ordf;"
- ["«"]=>
- string(7) "&laquo;"
- ["¬"]=>
- string(5) "&not;"
- ["­"]=>
- string(5) "&shy;"
- ["®"]=>
- string(5) "&reg;"
- ["¯"]=>
- string(6) "&macr;"
- ["°"]=>
- string(5) "&deg;"
- ["±"]=>
- string(8) "&plusmn;"
- ["²"]=>
- string(6) "&sup2;"
- ["³"]=>
- string(6) "&sup3;"
- ["´"]=>
- string(7) "&acute;"
- ["µ"]=>
- string(7) "&micro;"
- ["¶"]=>
- string(6) "&para;"
- ["·"]=>
- string(8) "&middot;"
- ["¸"]=>
- string(7) "&cedil;"
- ["¹"]=>
- string(6) "&sup1;"
- ["º"]=>
- string(6) "&ordm;"
- ["»"]=>
- string(7) "&raquo;"
- ["¼"]=>
- string(8) "&frac14;"
- ["½"]=>
- string(8) "&frac12;"
- ["¾"]=>
- string(8) "&frac34;"
- ["¿"]=>
- string(8) "&iquest;"
- ["À"]=>
- string(8) "&Agrave;"
+ ["Æ"]=>
+ string(7) "&AElig;"
["Á"]=>
string(8) "&Aacute;"
["Â"]=>
string(7) "&Acirc;"
+ ["À"]=>
+ string(8) "&Agrave;"
+ ["Å"]=>
+ string(7) "&Aring;"
["Ã"]=>
string(8) "&Atilde;"
["Ä"]=>
string(6) "&Auml;"
- ["Å"]=>
- string(7) "&Aring;"
- ["Æ"]=>
- string(7) "&AElig;"
["Ç"]=>
string(8) "&Ccedil;"
- ["È"]=>
- string(8) "&Egrave;"
+ ["‡"]=>
+ string(8) "&Dagger;"
+ ["Ð"]=>
+ string(5) "&ETH;"
["É"]=>
string(8) "&Eacute;"
["Ê"]=>
string(7) "&Ecirc;"
+ ["È"]=>
+ string(8) "&Egrave;"
["Ë"]=>
string(6) "&Euml;"
- ["Ì"]=>
- string(8) "&Igrave;"
["Í"]=>
string(8) "&Iacute;"
["Î"]=>
string(7) "&Icirc;"
+ ["Ì"]=>
+ string(8) "&Igrave;"
["Ï"]=>
string(6) "&Iuml;"
- ["Ð"]=>
- string(5) "&ETH;"
["Ñ"]=>
string(8) "&Ntilde;"
- ["Ò"]=>
- string(8) "&Ograve;"
+ ["Œ"]=>
+ string(7) "&OElig;"
["Ó"]=>
string(8) "&Oacute;"
["Ô"]=>
string(7) "&Ocirc;"
+ ["Ò"]=>
+ string(8) "&Ograve;"
+ ["Ø"]=>
+ string(8) "&Oslash;"
["Õ"]=>
string(8) "&Otilde;"
["Ö"]=>
string(6) "&Ouml;"
- ["×"]=>
- string(7) "&times;"
- ["Ø"]=>
- string(8) "&Oslash;"
- ["Ù"]=>
- string(8) "&Ugrave;"
+ ["Š"]=>
+ string(8) "&Scaron;"
+ ["Þ"]=>
+ string(7) "&THORN;"
["Ú"]=>
string(8) "&Uacute;"
["Û"]=>
string(7) "&Ucirc;"
+ ["Ù"]=>
+ string(8) "&Ugrave;"
["Ü"]=>
string(6) "&Uuml;"
["Ý"]=>
string(8) "&Yacute;"
- ["Þ"]=>
- string(7) "&THORN;"
- ["ß"]=>
- string(7) "&szlig;"
- ["à"]=>
- string(8) "&agrave;"
+ ["Ÿ"]=>
+ string(6) "&Yuml;"
["á"]=>
string(8) "&aacute;"
["â"]=>
string(7) "&acirc;"
+ ["´"]=>
+ string(7) "&acute;"
+ ["æ"]=>
+ string(7) "&aelig;"
+ ["à"]=>
+ string(8) "&agrave;"
+ ["&"]=>
+ string(5) "&amp;"
+ ["å"]=>
+ string(7) "&aring;"
["ã"]=>
string(8) "&atilde;"
["ä"]=>
string(6) "&auml;"
- ["å"]=>
- string(7) "&aring;"
- ["æ"]=>
- string(7) "&aelig;"
+ ["„"]=>
+ string(7) "&bdquo;"
+ ["¦"]=>
+ string(8) "&brvbar;"
+ ["•"]=>
+ string(6) "&bull;"
["ç"]=>
string(8) "&ccedil;"
- ["è"]=>
- string(8) "&egrave;"
+ ["¸"]=>
+ string(7) "&cedil;"
+ ["¢"]=>
+ string(6) "&cent;"
+ ["ˆ"]=>
+ string(6) "&circ;"
+ ["©"]=>
+ string(6) "&copy;"
+ ["¤"]=>
+ string(8) "&curren;"
+ ["†"]=>
+ string(8) "&dagger;"
+ ["°"]=>
+ string(5) "&deg;"
+ ["÷"]=>
+ string(8) "&divide;"
["é"]=>
string(8) "&eacute;"
["ê"]=>
string(7) "&ecirc;"
+ ["è"]=>
+ string(8) "&egrave;"
+ ["ð"]=>
+ string(5) "&eth;"
["ë"]=>
string(6) "&euml;"
- ["ì"]=>
- string(8) "&igrave;"
+ ["€"]=>
+ string(6) "&euro;"
+ ["ƒ"]=>
+ string(6) "&fnof;"
+ ["½"]=>
+ string(8) "&frac12;"
+ ["¼"]=>
+ string(8) "&frac14;"
+ ["¾"]=>
+ string(8) "&frac34;"
+ [">"]=>
+ string(4) "&gt;"
+ ["…"]=>
+ string(8) "&hellip;"
["í"]=>
string(8) "&iacute;"
["î"]=>
string(7) "&icirc;"
+ ["¡"]=>
+ string(7) "&iexcl;"
+ ["ì"]=>
+ string(8) "&igrave;"
+ ["¿"]=>
+ string(8) "&iquest;"
["ï"]=>
string(6) "&iuml;"
- ["ð"]=>
- string(5) "&eth;"
+ ["«"]=>
+ string(7) "&laquo;"
+ ["“"]=>
+ string(7) "&ldquo;"
+ ["‹"]=>
+ string(8) "&lsaquo;"
+ ["‘"]=>
+ string(7) "&lsquo;"
+ ["<"]=>
+ string(4) "&lt;"
+ ["¯"]=>
+ string(6) "&macr;"
+ ["—"]=>
+ string(7) "&mdash;"
+ ["µ"]=>
+ string(7) "&micro;"
+ ["·"]=>
+ string(8) "&middot;"
+ [" "]=>
+ string(6) "&nbsp;"
+ ["–"]=>
+ string(7) "&ndash;"
+ ["¬"]=>
+ string(5) "&not;"
["ñ"]=>
string(8) "&ntilde;"
- ["ò"]=>
- string(8) "&ograve;"
["ó"]=>
string(8) "&oacute;"
["ô"]=>
string(7) "&ocirc;"
+ ["œ"]=>
+ string(7) "&oelig;"
+ ["ò"]=>
+ string(8) "&ograve;"
+ ["ª"]=>
+ string(6) "&ordf;"
+ ["º"]=>
+ string(6) "&ordm;"
+ ["ø"]=>
+ string(8) "&oslash;"
["õ"]=>
string(8) "&otilde;"
["ö"]=>
string(6) "&ouml;"
- ["÷"]=>
- string(8) "&divide;"
- ["ø"]=>
- string(8) "&oslash;"
- ["ù"]=>
- string(8) "&ugrave;"
+ ["¶"]=>
+ string(6) "&para;"
+ ["‰"]=>
+ string(8) "&permil;"
+ ["±"]=>
+ string(8) "&plusmn;"
+ ["£"]=>
+ string(7) "&pound;"
+ ["""]=>
+ string(6) "&quot;"
+ ["»"]=>
+ string(7) "&raquo;"
+ ["”"]=>
+ string(7) "&rdquo;"
+ ["®"]=>
+ string(5) "&reg;"
+ ["›"]=>
+ string(8) "&rsaquo;"
+ ["’"]=>
+ string(7) "&rsquo;"
+ ["‚"]=>
+ string(7) "&sbquo;"
+ ["š"]=>
+ string(8) "&scaron;"
+ ["§"]=>
+ string(6) "&sect;"
+ ["­"]=>
+ string(5) "&shy;"
+ ["¹"]=>
+ string(6) "&sup1;"
+ ["²"]=>
+ string(6) "&sup2;"
+ ["³"]=>
+ string(6) "&sup3;"
+ ["ß"]=>
+ string(7) "&szlig;"
+ ["þ"]=>
+ string(7) "&thorn;"
+ ["˜"]=>
+ string(7) "&tilde;"
+ ["×"]=>
+ string(7) "&times;"
+ ["™"]=>
+ string(7) "&trade;"
["ú"]=>
string(8) "&uacute;"
["û"]=>
string(7) "&ucirc;"
+ ["ù"]=>
+ string(8) "&ugrave;"
+ ["¨"]=>
+ string(5) "&uml;"
["ü"]=>
string(6) "&uuml;"
["ý"]=>
string(8) "&yacute;"
- ["þ"]=>
- string(7) "&thorn;"
+ ["¥"]=>
+ string(5) "&yen;"
["ÿ"]=>
string(6) "&yuml;"
- ["&"]=>
- string(5) "&amp;"
- ["""]=>
- string(6) "&quot;"
- ["<"]=>
- string(4) "&lt;"
- [">"]=>
- string(4) "&gt;"
}
-- with table = HTML_SPECIALCHARS --
array(4) {
["&"]=>
string(5) "&amp;"
- ["""]=>
- string(6) "&quot;"
- ["<"]=>
- string(4) "&lt;"
[">"]=>
string(4) "&gt;"
+ ["<"]=>
+ string(4) "&lt;"
+ ["""]=>
+ string(6) "&quot;"
}
Done
diff --git a/ext/standard/tests/strings/get_html_translation_table_basic5.phpt b/ext/standard/tests/strings/get_html_translation_table_basic5.phpt
new file mode 100644
index 0000000000..600ad43635
--- /dev/null
+++ b/ext/standard/tests/strings/get_html_translation_table_basic5.phpt
@@ -0,0 +1,1598 @@
+--TEST--
+Test get_html_translation_table() function : basic functionality - HTML 5
+--FILE--
+<?php
+echo "*** Testing get_html_translation_table() : basic functionality/HTML 5 ***\n";
+
+echo "-- with table = HTML_ENTITIES, ENT_COMPAT --\n";
+$table = HTML_ENTITIES;
+$tt = get_html_translation_table($table, ENT_COMPAT | ENT_HTML5, "UTF-8");
+asort( $tt );
+var_dump( count($tt) );
+print_r( $tt );
+
+echo "-- with table = HTML_ENTITIES, ENT_QUOTES --\n";
+$table = HTML_ENTITIES;
+$tt = get_html_translation_table($table, ENT_QUOTES | ENT_HTML5, "UTF-8");
+var_dump( count($tt) );
+
+echo "-- with table = HTML_ENTITIES, ENT_NOQUOTES --\n";
+$table = HTML_ENTITIES;
+$tt = get_html_translation_table($table, ENT_NOQUOTES | ENT_HTML5, "UTF-8");
+var_dump( count($tt) );
+
+echo "-- with table = HTML_SPECIALCHARS, ENT_COMPAT --\n";
+$table = HTML_SPECIALCHARS;
+$tt = get_html_translation_table($table, ENT_COMPAT, "UTF-8");
+asort( $tt );
+var_dump( count($tt) );
+print_r( $tt );
+
+echo "-- with table = HTML_SPECIALCHARS, ENT_QUOTES --\n";
+$table = HTML_SPECIALCHARS;
+$tt = get_html_translation_table($table, ENT_QUOTES | ENT_HTML5, "UTF-8");
+asort( $tt );
+var_dump( $tt );
+
+echo "-- with table = HTML_SPECIALCHARS, ENT_NOQUOTES --\n";
+$table = HTML_SPECIALCHARS;
+$tt = get_html_translation_table($table, ENT_NOQUOTES | ENT_HTML5, "UTF-8");
+asort( $tt );
+var_dump( $tt );
+
+
+echo "Done\n";
+?>
+--EXPECT--
+*** Testing get_html_translation_table() : basic functionality/HTML 5 ***
+-- with table = HTML_ENTITIES, ENT_COMPAT --
+int(1509)
+Array
+(
+ [Æ] => &AElig;
+ [Ã] => &Aacute;
+ [Ä‚] => &Abreve;
+ [Â] => &Acirc;
+ [Ð] => &Acy;
+ [ð”„] => &Afr;
+ [À] => &Agrave;
+ [Α] => &Alpha;
+ [Ä€] => &Amacr;
+ [â©“] => &And;
+ [Ä„] => &Aogon;
+ [ð”¸] => &Aopf;
+ [Ã…] => &Aring;
+ [ð’œ] => &Ascr;
+ [Ã] => &Atilde;
+ [Ä] => &Auml;
+ [⫧] => &Barv;
+ [Б] => &Bcy;
+ [∵] => &Because;
+ [Î’] => &Beta;
+ [ð”…] => &Bfr;
+ [ð”¹] => &Bopf;
+ [˘] => &Breve;
+ [ℬ] => &Bscr;
+ [Ч] => &CHcy;
+ [Ć] => &Cacute;
+ [â‹’] => &Cap;
+ [â……] => &CapitalDifferentialD;
+ [Č] => &Ccaron;
+ [Ç] => &Ccedil;
+ [Ĉ] => &Ccirc;
+ [∰] => &Cconint;
+ [ÄŠ] => &Cdot;
+ [¸] => &Cedilla;
+ [·] => &CenterDot;
+ [â„­] => &Cfr;
+ [Χ] => &Chi;
+ [⊙] => &CircleDot;
+ [⊕] => &CirclePlus;
+ [⊗] => &CircleTimes;
+ [∷] => &Colon;
+ [â©´] => &Colone;
+ [≡] => &Congruent;
+ [∮] => &ContourIntegral;
+ [âˆ] => &Coproduct;
+ [⨯] => &Cross;
+ [ð’ž] => &Cscr;
+ [â‹“] => &Cup;
+ [â‰] => &CupCap;
+ [⤑] => &DDotrahd;
+ [Ђ] => &DJcy;
+ [Ð…] => &DScy;
+ [Ð] => &DZcy;
+ [‡] => &Dagger;
+ [↡] => &Darr;
+ [⫤] => &Dashv;
+ [ÄŽ] => &Dcaron;
+ [Д] => &Dcy;
+ [Δ] => &Delta;
+ [ð”‡] => &Dfr;
+ [´] => &DiacriticalAcute;
+ [Ë] => &DiacriticalDoubleAcute;
+ [˜] => &DiacriticalTilde;
+ [â…†] => &DifferentialD;
+ [ð”»] => &Dopf;
+ [⃜] => &DotDot;
+ [∯] => &DoubleContourIntegral;
+ [¨] => &DoubleDot;
+ [â‡] => &DoubleLeftArrow;
+ [⟹] => &DoubleLongRightArrow;
+ [⊨] => &DoubleRightTee;
+ [⇑] => &DoubleUpArrow;
+ [⤓] => &DownArrowBar;
+ [⇵] => &DownArrowUpArrow;
+ [Ì‘] => &DownBreve;
+ [â¥] => &DownLeftRightVector;
+ [⥞] => &DownLeftTeeVector;
+ [⥖] => &DownLeftVectorBar;
+ [⥟] => &DownRightTeeVector;
+ [⥗] => &DownRightVectorBar;
+ [⊤] => &DownTee;
+ [↧] => &DownTeeArrow;
+ [⇓] => &Downarrow;
+ [ð’Ÿ] => &Dscr;
+ [Ä] => &Dstrok;
+ [ÅŠ] => &ENG;
+ [Ã] => &ETH;
+ [É] => &Eacute;
+ [Äš] => &Ecaron;
+ [Ê] => &Ecirc;
+ [Э] => &Ecy;
+ [Ä–] => &Edot;
+ [ð”ˆ] => &Efr;
+ [È] => &Egrave;
+ [Ä’] => &Emacr;
+ [â—»] => &EmptySmallSquare;
+ [â–«] => &EmptyVerySmallSquare;
+ [Ę] => &Eogon;
+ [ð”¼] => &Eopf;
+ [Ε] => &Epsilon;
+ [⩵] => &Equal;
+ [⩳] => &Esim;
+ [Η] => &Eta;
+ [Ë] => &Euml;
+ [∃] => &Exists;
+ [Ф] => &Fcy;
+ [ð”‰] => &Ffr;
+ [â—¼] => &FilledSmallSquare;
+ [ð”½] => &Fopf;
+ [ℱ] => &Fouriertrf;
+ [Ѓ] => &GJcy;
+ [Γ] => &Gamma;
+ [Ϝ] => &Gammad;
+ [Äž] => &Gbreve;
+ [Ä¢] => &Gcedil;
+ [Ĝ] => &Gcirc;
+ [Г] => &Gcy;
+ [Ä ] => &Gdot;
+ [ð”Š] => &Gfr;
+ [â‹™] => &Gg;
+ [ð”¾] => &Gopf;
+ [⪢] => &GreaterGreater;
+ [≳] => &GreaterTilde;
+ [ð’¢] => &Gscr;
+ [Ъ] => &HARDcy;
+ [ˇ] => &Hacek;
+ [^] => &Hat;
+ [Ĥ] => &Hcirc;
+ [ℌ] => &Hfr;
+ [â„‹] => &HilbertSpace;
+ [â„] => &Hopf;
+ [─] => &HorizontalLine;
+ [Ħ] => &Hstrok;
+ [â‰] => &HumpEqual;
+ [Е] => &IEcy;
+ [IJ] => &IJlig;
+ [Ð] => &IOcy;
+ [Ã] => &Iacute;
+ [ÃŽ] => &Icirc;
+ [И] => &Icy;
+ [Ä°] => &Idot;
+ [â„‘] => &Ifr;
+ [Ì] => &Igrave;
+ [Ī] => &Imacr;
+ [â…ˆ] => &ImaginaryI;
+ [⇒] => &Implies;
+ [∬] => &Int;
+ [∫] => &Integral;
+ [â¢] => &InvisibleTimes;
+ [Ä®] => &Iogon;
+ [ð•€] => &Iopf;
+ [Ι] => &Iota;
+ [Ĩ] => &Itilde;
+ [І] => &Iukcy;
+ [Ã] => &Iuml;
+ [Ä´] => &Jcirc;
+ [Й] => &Jcy;
+ [ð”] => &Jfr;
+ [ð•] => &Jopf;
+ [ð’¥] => &Jscr;
+ [Ј] => &Jsercy;
+ [Є] => &Jukcy;
+ [Ð¥] => &KHcy;
+ [Ќ] => &KJcy;
+ [Κ] => &Kappa;
+ [Ķ] => &Kcedil;
+ [К] => &Kcy;
+ [ð”Ž] => &Kfr;
+ [ð•‚] => &Kopf;
+ [ð’¦] => &Kscr;
+ [Љ] => &LJcy;
+ [Ĺ] => &Lacute;
+ [Λ] => &Lambda;
+ [⟪] => &Lang;
+ [↞] => &Larr;
+ [Ľ] => &Lcaron;
+ [Ä»] => &Lcedil;
+ [Л] => &Lcy;
+ [⇤] => &LeftArrowBar;
+ [⟦] => &LeftDoubleBracket;
+ [⥡] => &LeftDownTeeVector;
+ [⥙] => &LeftDownVectorBar;
+ [⌊] => &LeftFloor;
+ [⥎] => &LeftRightVector;
+ [↤] => &LeftTeeArrow;
+ [⥚] => &LeftTeeVector;
+ [â§] => &LeftTriangleBar;
+ [⊴] => &LeftTriangleEqual;
+ [⥑] => &LeftUpDownVector;
+ [⥠] => &LeftUpTeeVector;
+ [⥘] => &LeftUpVectorBar;
+ [⥒] => &LeftVectorBar;
+ [⪡] => &LessLess;
+ [≲] => &LessTilde;
+ [ð”] => &Lfr;
+ [⋘] => &Ll;
+ [Ä¿] => &Lmidot;
+ [⟷] => &LongLeftRightArrow;
+ [⟶] => &LongRightArrow;
+ [ð•ƒ] => &Lopf;
+ [↘] => &LowerRightArrow;
+ [↰] => &Lsh;
+ [Å] => &Lstrok;
+ [⤅] => &Map;
+ [М] => &Mcy;
+ [âŸ] => &MediumSpace;
+ [ℳ] => &Mellintrf;
+ [ð”] => &Mfr;
+ [∓] => &MinusPlus;
+ [ð•„] => &Mopf;
+ [Μ] => &Mu;
+ [Њ] => &NJcy;
+ [Ń] => &Nacute;
+ [Ň] => &Ncaron;
+ [Å…] => &Ncedil;
+ [Ð] => &Ncy;
+ [
+] => &NewLine;
+ [ð”‘] => &Nfr;
+ [â ] => &NoBreak;
+ [⫬] => &Not;
+ [≢] => &NotCongruent;
+ [≭] => &NotCupCap;
+ [≠] => &NotEqual;
+ [≧̸] => &NotGreaterFullEqual
+ [≫̸] => &NotGreaterGreater
+ [≹] => &NotGreaterLess;
+ [â§Ì¸] => &NotLeftTriangleBar
+ [≮] => &NotLess;
+ [≰] => &NotLessEqual;
+ [⪢̸] => &NotNestedGreaterGreater
+ [⪡̸] => &NotNestedLessLess
+ [⪯̸] => &NotPrecedesEqual
+ [â‹ ] => &NotPrecedesSlantEqual;
+ [â§Ì¸] => &NotRightTriangleBar
+ [â‹­] => &NotRightTriangleEqual;
+ [âŠÌ¸] => &NotSquareSubset
+ [â‹¢] => &NotSquareSubsetEqual;
+ [âŠÌ¸] => &NotSquareSuperset
+ [â‹£] => &NotSquareSupersetEqual;
+ [⊈] => &NotSubsetEqual;
+ [âŠ] => &NotSucceeds;
+ [⪰̸] => &NotSucceedsEqual
+ [â‹¡] => &NotSucceedsSlantEqual;
+ [≿̸] => &NotSucceedsTilde
+ [⊉] => &NotSupersetEqual;
+ [â‰] => &NotTilde;
+ [ð’©] => &Nscr;
+ [Ñ] => &Ntilde;
+ [Î] => &Nu;
+ [Å’] => &OElig;
+ [Ó] => &Oacute;
+ [Ô] => &Ocirc;
+ [О] => &Ocy;
+ [Å] => &Odblac;
+ [ð”’] => &Ofr;
+ [Ã’] => &Ograve;
+ [Ō] => &Omacr;
+ [Ω] => &Omega;
+ [Ο] => &Omicron;
+ [ð•†] => &Oopf;
+ [“] => &OpenCurlyDoubleQuote;
+ [‘] => &OpenCurlyQuote;
+ [â©”] => &Or;
+ [ð’ª] => &Oscr;
+ [Ø] => &Oslash;
+ [Õ] => &Otilde;
+ [⨷] => &Otimes;
+ [Ö] => &Ouml;
+ [âž] => &OverBrace;
+ [⎴] => &OverBracket;
+ [âœ] => &OverParenthesis;
+ [П] => &Pcy;
+ [ð”“] => &Pfr;
+ [Φ] => &Phi;
+ [Π] => &Pi;
+ [⪻] => &Pr;
+ [≼] => &PrecedesSlantEqual;
+ [″] => &Prime;
+ [ð’«] => &Pscr;
+ [Ψ] => &Psi;
+ [ð””] => &Qfr;
+ [ð’¬] => &Qscr;
+ [Å”] => &Racute;
+ [⟫] => &Rang;
+ [⤖] => &Rarrtl;
+ [Ř] => &Rcaron;
+ [Å–] => &Rcedil;
+ [Р] => &Rcy;
+ [∋] => &ReverseElement;
+ [⥯] => &ReverseUpEquilibrium;
+ [ℜ] => &Rfr;
+ [Ρ] => &Rho;
+ [⟩] => &RightAngleBracket;
+ [⇥] => &RightArrowBar;
+ [⌉] => &RightCeiling;
+ [⟧] => &RightDoubleBracket;
+ [â¥] => &RightDownTeeVector;
+ [⇂] => &RightDownVector;
+ [⥕] => &RightDownVectorBar;
+ [⌋] => &RightFloor;
+ [⥛] => &RightTeeVector;
+ [â§] => &RightTriangleBar;
+ [⊵] => &RightTriangleEqual;
+ [â¥] => &RightUpDownVector;
+ [⥜] => &RightUpTeeVector;
+ [↾] => &RightUpVector;
+ [⥔] => &RightUpVectorBar;
+ [⥓] => &RightVectorBar;
+ [â„] => &Ropf;
+ [⥰] => &RoundImplies;
+ [⧴] => &RuleDelayed;
+ [Щ] => &SHCHcy;
+ [Ш] => &SHcy;
+ [Ь] => &SOFTcy;
+ [Åš] => &Sacute;
+ [⪼] => &Sc;
+ [Å ] => &Scaron;
+ [Åž] => &Scedil;
+ [Ŝ] => &Scirc;
+ [С] => &Scy;
+ [ð”–] => &Sfr;
+ [Σ] => &Sigma;
+ [ð•Š] => &Sopf;
+ [√] => &Sqrt;
+ [â–¡] => &Square;
+ [⊑] => &SquareSubsetEqual;
+ [⊒] => &SquareSupersetEqual;
+ [ð’®] => &Sscr;
+ [⋆] => &Star;
+ [â‹] => &Sub;
+ [⊆] => &SubsetEqual;
+ [⪰] => &SucceedsEqual;
+ [≿] => &SucceedsTilde;
+ [â‹‘] => &Supset;
+ [Þ] => &THORN;
+ [Ћ] => &TSHcy;
+ [Ц] => &TScy;
+ [ ] => &Tab;
+ [Τ] => &Tau;
+ [Ť] => &Tcaron;
+ [Å¢] => &Tcedil;
+ [Т] => &Tcy;
+ [ð”—] => &Tfr;
+ [Θ] => &Theta;
+ [âŸâ€Š] => &ThickSpace
+ [ ] => &ThinSpace;
+ [≅] => &TildeFullEqual;
+ [ð•‹] => &Topf;
+ [⃛] => &TripleDot;
+ [ð’¯] => &Tscr;
+ [Ŧ] => &Tstrok;
+ [Ú] => &Uacute;
+ [↟] => &Uarr;
+ [⥉] => &Uarrocir;
+ [ÐŽ] => &Ubrcy;
+ [Ŭ] => &Ubreve;
+ [Û] => &Ucirc;
+ [У] => &Ucy;
+ [Å°] => &Udblac;
+ [ð”˜] => &Ufr;
+ [Ù] => &Ugrave;
+ [Ū] => &Umacr;
+ [âŸ] => &UnderBrace;
+ [â] => &UnderParenthesis;
+ [⊎] => &UnionPlus;
+ [Ų] => &Uogon;
+ [ð•Œ] => &Uopf;
+ [⤒] => &UpArrowBar;
+ [↕] => &UpDownArrow;
+ [↥] => &UpTeeArrow;
+ [⇕] => &Updownarrow;
+ [↗] => &UpperRightArrow;
+ [Î¥] => &Upsilon;
+ [Å®] => &Uring;
+ [ð’°] => &Uscr;
+ [Ũ] => &Utilde;
+ [Ü] => &Uuml;
+ [⊫] => &VDash;
+ [â««] => &Vbar;
+ [Ð’] => &Vcy;
+ [⊩] => &Vdash;
+ [⫦] => &Vdashl;
+ [‖] => &Verbar;
+ [â˜] => &VerticalSeparator;
+ [ð”™] => &Vfr;
+ [ð•] => &Vopf;
+ [ð’±] => &Vscr;
+ [⊪] => &Vvdash;
+ [Å´] => &Wcirc;
+ [ð”š] => &Wfr;
+ [ð•Ž] => &Wopf;
+ [ð’²] => &Wscr;
+ [ð”›] => &Xfr;
+ [Ξ] => &Xi;
+ [ð•] => &Xopf;
+ [ð’³] => &Xscr;
+ [Я] => &YAcy;
+ [Ї] => &YIcy;
+ [Ю] => &YUcy;
+ [Ã] => &Yacute;
+ [Ŷ] => &Ycirc;
+ [Ы] => &Ycy;
+ [ð”œ] => &Yfr;
+ [ð•] => &Yopf;
+ [ð’´] => &Yscr;
+ [Ÿ] => &Yuml;
+ [Ж] => &ZHcy;
+ [Ź] => &Zacute;
+ [Ž] => &Zcaron;
+ [З] => &Zcy;
+ [Å»] => &Zdot;
+ [​] => &ZeroWidthSpace;
+ [Ζ] => &Zeta;
+ [ℨ] => &Zfr;
+ [ℤ] => &Zopf;
+ [ð’µ] => &Zscr;
+ [á] => &aacute;
+ [ă] => &abreve;
+ [∾] => &ac;
+ [∾̳] => &acE
+ [∿] => &acd;
+ [â] => &acirc;
+ [а] => &acy;
+ [æ] => &aelig;
+ [â¡] => &af;
+ [ð”ž] => &afr;
+ [à] => &agrave;
+ [ℵ] => &aleph;
+ [α] => &alpha;
+ [Ä] => &amacr;
+ [⨿] => &amalg;
+ [&] => &amp;
+ [∧] => &and;
+ [â©•] => &andand;
+ [⩜] => &andd;
+ [⩘] => &andslope;
+ [â©š] => &andv;
+ [⦤] => &ange;
+ [∠] => &angle;
+ [∡] => &angmsd;
+ [⦨] => &angmsdaa;
+ [⦩] => &angmsdab;
+ [⦪] => &angmsdac;
+ [⦫] => &angmsdad;
+ [⦬] => &angmsdae;
+ [⦭] => &angmsdaf;
+ [⦮] => &angmsdag;
+ [⦯] => &angmsdah;
+ [∟] => &angrt;
+ [⊾] => &angrtvb;
+ [â¦] => &angrtvbd;
+ [∢] => &angsph;
+ [â¼] => &angzarr;
+ [Ä…] => &aogon;
+ [ð•’] => &aopf;
+ [â©°] => &apE;
+ [⩯] => &apacir;
+ [≊] => &ape;
+ [≋] => &apid;
+ [≈] => &approx;
+ [Ã¥] => &aring;
+ [ð’¶] => &ascr;
+ [*] => &ast;
+ [ã] => &atilde;
+ [ä] => &auml;
+ [∳] => &awconint;
+ [⨑] => &awint;
+ [â«­] => &bNot;
+ [϶] => &backepsilon;
+ [‵] => &backprime;
+ [â‹] => &backsimeq;
+ [⊽] => &barvee;
+ [⌅] => &barwed;
+ [⎵] => &bbrk;
+ [⎶] => &bbrktbrk;
+ [≌] => &bcong;
+ [б] => &bcy;
+ [„] => &bdquo;
+ [⦰] => &bemptyv;
+ [β] => &beta;
+ [ℶ] => &beth;
+ [≬] => &between;
+ [ð”Ÿ] => &bfr;
+ [â‹‚] => &bigcap;
+ [â—¯] => &bigcirc;
+ [⋃] => &bigcup;
+ [â¨] => &bigoplus;
+ [⨂] => &bigotimes;
+ [⨆] => &bigsqcup;
+ [â–½] => &bigtriangledown;
+ [â–³] => &bigtriangleup;
+ [⨄] => &biguplus;
+ [â¤] => &bkarow;
+ [â–´] => &blacktriangle;
+ [â–¾] => &blacktriangledown;
+ [â—‚] => &blacktriangleleft;
+ [â–¸] => &blacktriangleright;
+ [â£] => &blank;
+ [â–’] => &blk12;
+ [â–‘] => &blk14;
+ [â–“] => &blk34;
+ [â–ˆ] => &block;
+ [=⃥] => &bne
+ [≡⃥] => &bnequiv
+ [âŒ] => &bnot;
+ [ð•“] => &bopf;
+ [⋈] => &bowtie;
+ [â•—] => &boxDL;
+ [â•”] => &boxDR;
+ [â•–] => &boxDl;
+ [â•“] => &boxDr;
+ [â•] => &boxH;
+ [╦] => &boxHD;
+ [â•©] => &boxHU;
+ [╤] => &boxHd;
+ [╧] => &boxHu;
+ [â•] => &boxUL;
+ [â•š] => &boxUR;
+ [╜] => &boxUl;
+ [â•™] => &boxUr;
+ [â•‘] => &boxV;
+ [╬] => &boxVH;
+ [â•£] => &boxVL;
+ [â• ] => &boxVR;
+ [â•«] => &boxVh;
+ [â•¢] => &boxVl;
+ [â•Ÿ] => &boxVr;
+ [⧉] => &boxbox;
+ [â••] => &boxdL;
+ [â•’] => &boxdR;
+ [â”] => &boxdl;
+ [┌] => &boxdr;
+ [â•¥] => &boxhD;
+ [╨] => &boxhU;
+ [┬] => &boxhd;
+ [â”´] => &boxhu;
+ [⊟] => &boxminus;
+ [⊞] => &boxplus;
+ [â•›] => &boxuL;
+ [╘] => &boxuR;
+ [┘] => &boxul;
+ [â””] => &boxur;
+ [│] => &boxv;
+ [╪] => &boxvH;
+ [â•¡] => &boxvL;
+ [â•ž] => &boxvR;
+ [┼] => &boxvh;
+ [┤] => &boxvl;
+ [├] => &boxvr;
+ [¦] => &brvbar;
+ [ð’·] => &bscr;
+ [â] => &bsemi;
+ [∽] => &bsim;
+ [\] => &bsol;
+ [⧅] => &bsolb;
+ [⟈] => &bsolhsub;
+ [•] => &bull;
+ [≎] => &bump;
+ [⪮] => &bumpE;
+ [ć] => &cacute;
+ [∩] => &cap;
+ [â©„] => &capand;
+ [⩉] => &capbrcup;
+ [â©‹] => &capcap;
+ [⩇] => &capcup;
+ [â©€] => &capdot;
+ [∩︀] => &caps
+ [â] => &caret;
+ [â©] => &ccaps;
+ [Ä] => &ccaron;
+ [ç] => &ccedil;
+ [ĉ] => &ccirc;
+ [⩌] => &ccups;
+ [â©] => &ccupssm;
+ [Ä‹] => &cdot;
+ [⦲] => &cemptyv;
+ [¢] => &cent;
+ [ð” ] => &cfr;
+ [ч] => &chcy;
+ [✓] => &check;
+ [χ] => &chi;
+ [â—‹] => &cir;
+ [⧃] => &cirE;
+ [ˆ] => &circ;
+ [≗] => &circeq;
+ [â¨] => &cirfnint;
+ [⫯] => &cirmid;
+ [⧂] => &cirscir;
+ [♣] => &clubs;
+ [:] => &colon;
+ [≔] => &coloneq;
+ [,] => &comma;
+ [@] => &commat;
+ [âˆ] => &comp;
+ [∘] => &compfn;
+ [â„‚] => &complexes;
+ [â©­] => &congdot;
+ [ð•”] => &copf;
+ [©] => &copy;
+ [â„—] => &copysr;
+ [↵] => &crarr;
+ [✗] => &cross;
+ [ð’¸] => &cscr;
+ [â«] => &csub;
+ [â«‘] => &csube;
+ [â«] => &csup;
+ [â«’] => &csupe;
+ [⋯] => &ctdot;
+ [⤸] => &cudarrl;
+ [⤵] => &cudarrr;
+ [â‹Ÿ] => &cuesc;
+ [⤽] => &cularrp;
+ [∪] => &cup;
+ [⩈] => &cupbrcap;
+ [⩆] => &cupcap;
+ [â©Š] => &cupcup;
+ [âŠ] => &cupdot;
+ [â©…] => &cupor;
+ [∪︀] => &cups
+ [↷] => &curarr;
+ [⤼] => &curarrm;
+ [â‹ž] => &curlyeqprec;
+ [â‹Ž] => &curlyvee;
+ [â‹] => &curlywedge;
+ [¤] => &curren;
+ [↶] => &curvearrowleft;
+ [∲] => &cwconint;
+ [∱] => &cwint;
+ [⌭] => &cylcty;
+ [⥥] => &dHar;
+ [†] => &dagger;
+ [ℸ] => &daleth;
+ [↓] => &darr;
+ [⊣] => &dashv;
+ [â¤] => &dbkarow;
+ [Ä] => &dcaron;
+ [д] => &dcy;
+ [â©·] => &ddotseq;
+ [°] => &deg;
+ [δ] => &delta;
+ [⦱] => &demptyv;
+ [⥿] => &dfisht;
+ [ð”¡] => &dfr;
+ [⇃] => &dharl;
+ [â‹„] => &diamond;
+ [♦] => &diamondsuit;
+ [⋲] => &disin;
+ [÷] => &divide;
+ [⋇] => &divonx;
+ [Ñ’] => &djcy;
+ [âŒ] => &dlcrop;
+ [$] => &dollar;
+ [ð••] => &dopf;
+ [Ë™] => &dot;
+ [≑] => &doteqdot;
+ [⌆] => &doublebarwedge;
+ [⇊] => &downdownarrows;
+ [â¤] => &drbkarow;
+ [⌟] => &drcorn;
+ [⌌] => &drcrop;
+ [ð’¹] => &dscr;
+ [Ñ•] => &dscy;
+ [⧶] => &dsol;
+ [Ä‘] => &dstrok;
+ [⋱] => &dtdot;
+ [⦦] => &dwangle;
+ [ÑŸ] => &dzcy;
+ [⟿] => &dzigrarr;
+ [é] => &eacute;
+ [â©®] => &easter;
+ [Ä›] => &ecaron;
+ [≖] => &ecir;
+ [ê] => &ecirc;
+ [Ñ] => &ecy;
+ [Ä—] => &edot;
+ [ð”¢] => &efr;
+ [⪚] => &eg;
+ [è] => &egrave;
+ [⪖] => &egs;
+ [⪘] => &egsdot;
+ [⪙] => &el;
+ [â§] => &elinters;
+ [â„“] => &ell;
+ [⪕] => &els;
+ [⪗] => &elsdot;
+ [Ä“] => &emacr;
+ [∅] => &empty;
+ [ ] => &emsp13;
+ [ ] => &emsp14;
+ [ ] => &emsp;
+ [Å‹] => &eng;
+ [ ] => &ensp;
+ [Ä™] => &eogon;
+ [ð•–] => &eopf;
+ [â‹•] => &epar;
+ [⧣] => &eparsl;
+ [⩱] => &eplus;
+ [ε] => &epsi;
+ [≕] => &eqcolon;
+ [=] => &equals;
+ [≟] => &equest;
+ [⩸] => &equivDD;
+ [⧥] => &eqvparsl;
+ [⥱] => &erarr;
+ [ℯ] => &escr;
+ [â‰] => &esdot;
+ [≂] => &esim;
+ [η] => &eta;
+ [ð] => &eth;
+ [ë] => &euml;
+ [€] => &euro;
+ [!] => &excl;
+ [â„°] => &expectation;
+ [â…‡] => &exponentiale;
+ [≒] => &fallingdotseq;
+ [Ñ„] => &fcy;
+ [♀] => &female;
+ [ffi] => &ffilig;
+ [ff] => &fflig;
+ [ffl] => &ffllig;
+ [ð”£] => &ffr;
+ [ï¬] => &filig;
+ [fj] => &fjlig
+ [â™­] => &flat;
+ [fl] => &fllig;
+ [â–±] => &fltns;
+ [Æ’] => &fnof;
+ [ð•—] => &fopf;
+ [∀] => &forall;
+ [â«™] => &forkv;
+ [â¨] => &fpartint;
+ [â…“] => &frac13;
+ [¼] => &frac14;
+ [â…•] => &frac15;
+ [â…™] => &frac16;
+ [â…›] => &frac18;
+ [â…”] => &frac23;
+ [â…–] => &frac25;
+ [¾] => &frac34;
+ [â…—] => &frac35;
+ [⅜] => &frac38;
+ [â…˜] => &frac45;
+ [â…š] => &frac56;
+ [â…] => &frac58;
+ [â…ž] => &frac78;
+ [â„] => &frasl;
+ [⌢] => &frown;
+ [ð’»] => &fscr;
+ [⪌] => &gEl;
+ [ǵ] => &gacute;
+ [γ] => &gamma;
+ [Ï] => &gammad;
+ [⪆] => &gap;
+ [ÄŸ] => &gbreve;
+ [Ä] => &gcirc;
+ [г] => &gcy;
+ [Ä¡] => &gdot;
+ [≥] => &ge;
+ [≧] => &geqq;
+ [⩾] => &ges;
+ [⪩] => &gescc;
+ [⪀] => &gesdot;
+ [⪂] => &gesdoto;
+ [⪄] => &gesdotol;
+ [⋛︀] => &gesl
+ [⪔] => &gesles;
+ [ð”¤] => &gfr;
+ [≫] => &gg;
+ [â„·] => &gimel;
+ [Ñ“] => &gjcy;
+ [≷] => &gl;
+ [⪒] => &glE;
+ [⪥] => &gla;
+ [⪤] => &glj;
+ [⪊] => &gnap;
+ [⪈] => &gne;
+ [≩] => &gneqq;
+ [⋧] => &gnsim;
+ [ð•˜] => &gopf;
+ [`] => &grave;
+ [â„Š] => &gscr;
+ [⪎] => &gsime;
+ [âª] => &gsiml;
+ [>] => &gt;
+ [⪧] => &gtcc;
+ [⩺] => &gtcir;
+ [⦕] => &gtlPar;
+ [⩼] => &gtquest;
+ [⥸] => &gtrarr;
+ [â‹—] => &gtrdot;
+ [â‹›] => &gtreqless;
+ [≩︀] => &gvertneqq
+ [⇔] => &hArr;
+ [ ] => &hairsp;
+ [½] => &half;
+ [ÑŠ] => &hardcy;
+ [↔] => &harr;
+ [⥈] => &harrcir;
+ [↭] => &harrw;
+ [Ä¥] => &hcirc;
+ [♥] => &hearts;
+ […] => &hellip;
+ [⊹] => &hercon;
+ [ð”¥] => &hfr;
+ [⇿] => &hoarr;
+ [∻] => &homtht;
+ [ð•™] => &hopf;
+ [―] => &horbar;
+ [ð’½] => &hscr;
+ [ħ] => &hstrok;
+ [âƒ] => &hybull;
+ [â€] => &hyphen;
+ [í] => &iacute;
+ [â£] => &ic;
+ [î] => &icirc;
+ [и] => &icy;
+ [е] => &iecy;
+ [¡] => &iexcl;
+ [ð”¦] => &ifr;
+ [ì] => &igrave;
+ [⨌] => &iiiint;
+ [⧜] => &iinfin;
+ [â„©] => &iiota;
+ [ij] => &ijlig;
+ [Ä«] => &imacr;
+ [â„] => &imagline;
+ [⊷] => &imof;
+ [Ƶ] => &imped;
+ [â„…] => &incare;
+ [∞] => &infin;
+ [â§] => &infintie;
+ [ı] => &inodot;
+ [⊺] => &intcal;
+ [⨗] => &intlarhk;
+ [Ñ‘] => &iocy;
+ [į] => &iogon;
+ [ð•š] => &iopf;
+ [ι] => &iota;
+ [⨼] => &iprod;
+ [¿] => &iquest;
+ [ð’¾] => &iscr;
+ [⋹] => &isinE;
+ [⋵] => &isindot;
+ [â‹´] => &isins;
+ [⋳] => &isinsv;
+ [∈] => &isinv;
+ [Ä©] => &itilde;
+ [Ñ–] => &iukcy;
+ [ï] => &iuml;
+ [ĵ] => &jcirc;
+ [й] => &jcy;
+ [ð”§] => &jfr;
+ [È·] => &jmath;
+ [ð•›] => &jopf;
+ [ð’¿] => &jscr;
+ [ј] => &jsercy;
+ [Ñ”] => &jukcy;
+ [κ] => &kappa;
+ [Ä·] => &kcedil;
+ [к] => &kcy;
+ [ð”¨] => &kfr;
+ [ĸ] => &kgreen;
+ [Ñ…] => &khcy;
+ [ќ] => &kjcy;
+ [ð•œ] => &kopf;
+ [ð“€] => &kscr;
+ [⇚] => &lAarr;
+ [⤛] => &lAtail;
+ [⤎] => &lBarr;
+ [≦] => &lE;
+ [⥢] => &lHar;
+ [ĺ] => &lacute;
+ [⦴] => &laemptyv;
+ [â„’] => &lagran;
+ [λ] => &lambda;
+ [⦑] => &langd;
+ [⟨] => &langle;
+ [⪅] => &lap;
+ [«] => &laquo;
+ [â†] => &larr;
+ [⤟] => &larrbfs;
+ [â¤] => &larrfs;
+ [↩] => &larrhk;
+ [↫] => &larrlp;
+ [⤹] => &larrpl;
+ [⥳] => &larrsim;
+ [↢] => &larrtl;
+ [⪫] => &lat;
+ [⤙] => &latail;
+ [⪭] => &late;
+ [⪭︀] => &lates
+ [⤌] => &lbarr;
+ [â²] => &lbbrk;
+ [{] => &lbrace;
+ [[] => &lbrack;
+ [⦋] => &lbrke;
+ [â¦] => &lbrksld;
+ [â¦] => &lbrkslu;
+ [ľ] => &lcaron;
+ [ļ] => &lcedil;
+ [⌈] => &lceil;
+ [л] => &lcy;
+ [⤶] => &ldca;
+ [⥧] => &ldrdhar;
+ [⥋] => &ldrushar;
+ [↲] => &ldsh;
+ [↽] => &leftharpoondown;
+ [↼] => &leftharpoonup;
+ [⇋] => &leftrightharpoons;
+ [≤] => &leq;
+ [⩽] => &les;
+ [⪨] => &lescc;
+ [â©¿] => &lesdot;
+ [âª] => &lesdoto;
+ [⪃] => &lesdotor;
+ [⋚︀] => &lesg
+ [⪓] => &lesges;
+ [â‹–] => &lessdot;
+ [â‹š] => &lesseqgtr;
+ [⪋] => &lesseqqgtr;
+ [≶] => &lessgtr;
+ [⥼] => &lfisht;
+ [ð”©] => &lfr;
+ [⪑] => &lgE;
+ [⥪] => &lharul;
+ [â–„] => &lhblk;
+ [Ñ™] => &ljcy;
+ [≪] => &ll;
+ [⇇] => &llarr;
+ [⌞] => &llcorner;
+ [⥫] => &llhard;
+ [â—º] => &lltri;
+ [Å€] => &lmidot;
+ [⎰] => &lmoust;
+ [⪉] => &lnap;
+ [⪇] => &lne;
+ [≨] => &lneqq;
+ [⋦] => &lnsim;
+ [⟬] => &loang;
+ [⇽] => &loarr;
+ [⟵] => &longleftarrow;
+ [↬] => &looparrowright;
+ [⦅] => &lopar;
+ [ð•] => &lopf;
+ [⨭] => &loplus;
+ [⨴] => &lotimes;
+ [∗] => &lowast;
+ [_] => &lowbar;
+ [â—Š] => &lozenge;
+ [⧫] => &lozf;
+ [(] => &lpar;
+ [⦓] => &lparlt;
+ [⇆] => &lrarr;
+ [⥭] => &lrhard;
+ [‎] => &lrm;
+ [⊿] => &lrtri;
+ [‹] => &lsaquo;
+ [ð“] => &lscr;
+ [âª] => &lsime;
+ [âª] => &lsimg;
+ [Å‚] => &lstrok;
+ [<] => &lt;
+ [⪦] => &ltcc;
+ [⩹] => &ltcir;
+ [â‹‹] => &lthree;
+ [⋉] => &ltimes;
+ [⥶] => &ltlarr;
+ [â©»] => &ltquest;
+ [⦖] => &ltrPar;
+ [â—ƒ] => &ltri;
+ [⥊] => &lurdshar;
+ [⥦] => &luruhar;
+ [≨︀] => &lvertneqq
+ [∺] => &mDDot;
+ [¯] => &macr;
+ [♂] => &male;
+ [✠] => &maltese;
+ [↦] => &map;
+ [â–®] => &marker;
+ [⨩] => &mcomma;
+ [м] => &mcy;
+ [—] => &mdash;
+ [ð”ª] => &mfr;
+ [℧] => &mho;
+ [µ] => &micro;
+ [∣] => &mid;
+ [â«°] => &midcir;
+ [−] => &minus;
+ [∸] => &minusd;
+ [⨪] => &minusdu;
+ [â«›] => &mlcp;
+ [⊧] => &models;
+ [ð•ž] => &mopf;
+ [ð“‚] => &mscr;
+ [μ] => &mu;
+ [⊸] => &mumap;
+ [⋙̸] => &nGg
+ [≫⃒] => &nGt
+ [â‡] => &nLeftarrow;
+ [⋘̸] => &nLl
+ [≪⃒] => &nLt
+ [≪̸] => &nLtv
+ [⊯] => &nVDash;
+ [⊮] => &nVdash;
+ [∇] => &nabla;
+ [Å„] => &nacute;
+ [∠⃒] => &nang
+ [⩰̸] => &napE
+ [≋̸] => &napid
+ [ʼn] => &napos;
+ [≉] => &napprox;
+ [â™®] => &natur;
+ [â„•] => &naturals;
+ [ ] => &nbsp;
+ [≎̸] => &nbump
+ [â‰Ì¸] => &nbumpe
+ [⩃] => &ncap;
+ [ň] => &ncaron;
+ [ņ] => &ncedil;
+ [≇] => &ncong;
+ [⩭̸] => &ncongdot
+ [â©‚] => &ncup;
+ [н] => &ncy;
+ [–] => &ndash;
+ [⇗] => &neArr;
+ [⤤] => &nearhk;
+ [â‰Ì¸] => &nedot
+ [≂̸] => &nesim
+ [∄] => &nexist;
+ [ð”«] => &nfr;
+ [≱] => &ngeq;
+ [⩾̸] => &nges
+ [≵] => &ngsim;
+ [≯] => &ngtr;
+ [⇎] => &nhArr;
+ [⫲] => &nhpar;
+ [⋼] => &nis;
+ [⋺] => &nisd;
+ [Ñš] => &njcy;
+ [≦̸] => &nlE
+ [‥] => &nldr;
+ [↚] => &nleftarrow;
+ [↮] => &nleftrightarrow;
+ [⩽̸] => &nles
+ [≴] => &nlsim;
+ [⋪] => &nltri;
+ [⋬] => &nltrie;
+ [ð•Ÿ] => &nopf;
+ [¬] => &not;
+ [∉] => &notin;
+ [⋹̸] => &notinE
+ [⋵̸] => &notindot
+ [â‹·] => &notinvb;
+ [⋶] => &notinvc;
+ [∌] => &notniva;
+ [⋾] => &notnivb;
+ [⋽] => &notnivc;
+ [∦] => &nparallel;
+ [∂̸] => &npart
+ [⨔] => &npolint;
+ [⊀] => &npr;
+ [â‡] => &nrArr;
+ [↛] => &nrarr;
+ [⤳̸] => &nrarrc
+ [â†Ì¸] => &nrarrw
+ [ð“ƒ] => &nscr;
+ [∤] => &nshortmid;
+ [≄] => &nsime;
+ [⊄] => &nsub;
+ [⫅̸] => &nsubE
+ [⊅] => &nsup;
+ [⊃⃒] => &nsupset
+ [⫆̸] => &nsupseteqq
+ [ñ] => &ntilde;
+ [≸] => &ntlg;
+ [â‹«] => &ntriangleright;
+ [ν] => &nu;
+ [#] => &num;
+ [â„–] => &numero;
+ [ ] => &numsp;
+ [⊭] => &nvDash;
+ [⤄] => &nvHarr;
+ [â‰âƒ’] => &nvap
+ [⊬] => &nvdash;
+ [≥⃒] => &nvge
+ [>⃒] => &nvgt
+ [⧞] => &nvinfin;
+ [⤂] => &nvlArr;
+ [≤⃒] => &nvle
+ [<⃒] => &nvlt
+ [⊴⃒] => &nvltrie
+ [⤃] => &nvrArr;
+ [⊵⃒] => &nvrtrie
+ [∼⃒] => &nvsim
+ [⇖] => &nwArr;
+ [⤣] => &nwarhk;
+ [↖] => &nwarrow;
+ [⤧] => &nwnear;
+ [Ⓢ] => &oS;
+ [ó] => &oacute;
+ [⊛] => &oast;
+ [⊚] => &ocir;
+ [ô] => &ocirc;
+ [о] => &ocy;
+ [âŠ] => &odash;
+ [Å‘] => &odblac;
+ [⨸] => &odiv;
+ [⦼] => &odsold;
+ [Å“] => &oelig;
+ [⦿] => &ofcir;
+ [ð”¬] => &ofr;
+ [Ë›] => &ogon;
+ [ò] => &ograve;
+ [â§] => &ogt;
+ [⦵] => &ohbar;
+ [↺] => &olarr;
+ [⦾] => &olcir;
+ [⦻] => &olcross;
+ [‾] => &oline;
+ [⧀] => &olt;
+ [Å] => &omacr;
+ [ω] => &omega;
+ [ο] => &omicron;
+ [⦶] => &omid;
+ [⊖] => &ominus;
+ [ð• ] => &oopf;
+ [⦷] => &opar;
+ [⦹] => &operp;
+ [∨] => &or;
+ [↻] => &orarr;
+ [â©] => &ord;
+ [â„´] => &orderof;
+ [ª] => &ordf;
+ [º] => &ordm;
+ [⊶] => &origof;
+ [â©–] => &oror;
+ [â©—] => &orslope;
+ [â©›] => &orv;
+ [ø] => &oslash;
+ [⊘] => &osol;
+ [õ] => &otilde;
+ [⨶] => &otimesas;
+ [ö] => &ouml;
+ [⌽] => &ovbar;
+ [¶] => &para;
+ [⫳] => &parsim;
+ [∂] => &part;
+ [п] => &pcy;
+ [%] => &percnt;
+ [.] => &period;
+ [‰] => &permil;
+ [⊥] => &perp;
+ [‱] => &pertenk;
+ [ð”­] => &pfr;
+ [φ] => &phi;
+ [☎] => &phone;
+ [Ï€] => &pi;
+ [â‹”] => &pitchfork;
+ [Ï–] => &piv;
+ [â„] => &planck;
+ [â„Ž] => &planckh;
+ [+] => &plus;
+ [⨣] => &plusacir;
+ [⨢] => &pluscir;
+ [∔] => &plusdo;
+ [⨥] => &plusdu;
+ [⩲] => &pluse;
+ [±] => &plusmn;
+ [⨦] => &plussim;
+ [⨧] => &plustwo;
+ [⨕] => &pointint;
+ [ð•¡] => &popf;
+ [£] => &pound;
+ [⪳] => &prE;
+ [≺] => &prec;
+ [⪷] => &precapprox;
+ [⪯] => &preceq;
+ [⪹] => &precnapprox;
+ [⪵] => &precneqq;
+ [⋨] => &precnsim;
+ [≾] => &precsim;
+ [′] => &prime;
+ [â„™] => &primes;
+ [âˆ] => &prod;
+ [⌮] => &profalar;
+ [⌒] => &profline;
+ [⌓] => &profsurf;
+ [âˆ] => &prop;
+ [⊰] => &prurel;
+ [ð“…] => &pscr;
+ [ψ] => &psi;
+ [ ] => &puncsp;
+ [ð”®] => &qfr;
+ [ð•¢] => &qopf;
+ [â—] => &qprime;
+ [ð“†] => &qscr;
+ [⨖] => &quatint;
+ [?] => &quest;
+ ["] => &quot;
+ [⇛] => &rAarr;
+ [⤜] => &rAtail;
+ [⥤] => &rHar;
+ [∽̱] => &race
+ [Å•] => &racute;
+ [⦳] => &raemptyv;
+ [⦒] => &rangd;
+ [⦥] => &range;
+ [»] => &raquo;
+ [⥵] => &rarrap;
+ [⤠] => &rarrbfs;
+ [⤳] => &rarrc;
+ [⤞] => &rarrfs;
+ [↪] => &rarrhk;
+ [⥅] => &rarrpl;
+ [⥴] => &rarrsim;
+ [↣] => &rarrtl;
+ [â†] => &rarrw;
+ [⤚] => &ratail;
+ [∶] => &ratio;
+ [â„š] => &rationals;
+ [â³] => &rbbrk;
+ [⦌] => &rbrke;
+ [⦎] => &rbrksld;
+ [â¦] => &rbrkslu;
+ [Å™] => &rcaron;
+ [Å—] => &rcedil;
+ [}] => &rcub;
+ [Ñ€] => &rcy;
+ [⤷] => &rdca;
+ [⥩] => &rdldhar;
+ [â€] => &rdquo;
+ [↳] => &rdsh;
+ [â„›] => &realine;
+ [â–­] => &rect;
+ [®] => &reg;
+ [⥽] => &rfisht;
+ [ð”¯] => &rfr;
+ [â‡] => &rhard;
+ [⇀] => &rharu;
+ [⥬] => &rharul;
+ [Ï] => &rho;
+ [ϱ] => &rhov;
+ [⇄] => &rightleftarrows;
+ [⇌] => &rightleftharpoons;
+ [Ëš] => &ring;
+ [≓] => &risingdotseq;
+ [â€] => &rlm;
+ [⎱] => &rmoust;
+ [â«®] => &rnmid;
+ [⟭] => &roang;
+ [⇾] => &roarr;
+ [⦆] => &ropar;
+ [ð•£] => &ropf;
+ [⨮] => &roplus;
+ [⨵] => &rotimes;
+ [)] => &rpar;
+ [⦔] => &rpargt;
+ [⨒] => &rppolint;
+ [⇉] => &rrarr;
+ [›] => &rsaquo;
+ [ð“‡] => &rscr;
+ [↱] => &rsh;
+ []] => &rsqb;
+ [’] => &rsquo;
+ [⋌] => &rthree;
+ [â‹Š] => &rtimes;
+ [â–¹] => &rtri;
+ [⧎] => &rtriltri;
+ [⥨] => &ruluhar;
+ [â„ž] => &rx;
+ [Å›] => &sacute;
+ [‚] => &sbquo;
+ [⪴] => &scE;
+ [Å¡] => &scaron;
+ [ÅŸ] => &scedil;
+ [Å] => &scirc;
+ [⪶] => &scnE;
+ [â‹©] => &scnsim;
+ [⨓] => &scpolint;
+ [Ñ] => &scy;
+ [â‹…] => &sdot;
+ [⊡] => &sdotb;
+ [⩦] => &sdote;
+ [⇘] => &seArr;
+ [⤥] => &searhk;
+ [§] => &sect;
+ [;] => &semi;
+ [⤩] => &seswar;
+ [✶] => &sext;
+ [ð”°] => &sfr;
+ [♯] => &sharp;
+ [щ] => &shchcy;
+ [ш] => &shcy;
+ [∥] => &shortparallel;
+ [­] => &shy;
+ [σ] => &sigma;
+ [Ï‚] => &sigmav;
+ [∼] => &sim;
+ [⩪] => &simdot;
+ [≃] => &simeq;
+ [⪞] => &simg;
+ [⪠] => &simgE;
+ [âª] => &siml;
+ [⪟] => &simlE;
+ [≆] => &simne;
+ [⨤] => &simplus;
+ [⥲] => &simrarr;
+ [⨳] => &smashp;
+ [⧤] => &smeparsl;
+ [⌣] => &smile;
+ [⪪] => &smt;
+ [⪬] => &smte;
+ [⪬︀] => &smtes
+ [ь] => &softcy;
+ [/] => &sol;
+ [⧄] => &solb;
+ [⌿] => &solbar;
+ [ð•¤] => &sopf;
+ [â™ ] => &spadesuit;
+ [⊓] => &sqcap;
+ [⊓︀] => &sqcaps
+ [⊔] => &sqcup;
+ [⊔︀] => &sqcups
+ [âŠ] => &sqsub;
+ [âŠ] => &sqsupset;
+ [â–ª] => &squarf;
+ [→] => &srarr;
+ [ð“ˆ] => &sscr;
+ [∖] => &ssetmn;
+ [☆] => &star;
+ [★] => &starf;
+ [ϵ] => &straightepsilon;
+ [Ï•] => &straightphi;
+ [⊂] => &sub;
+ [â«…] => &subE;
+ [⪽] => &subdot;
+ [⫃] => &subedot;
+ [â«] => &submult;
+ [⪿] => &subplus;
+ [⥹] => &subrarr;
+ [⊊] => &subsetneq;
+ [â«‹] => &subsetneqq;
+ [⫇] => &subsim;
+ [â«•] => &subsub;
+ [â«“] => &subsup;
+ [≻] => &succ;
+ [⪸] => &succapprox;
+ [≽] => &succcurlyeq;
+ [⪺] => &succnapprox;
+ [∑] => &sum;
+ [♪] => &sung;
+ [¹] => &sup1;
+ [²] => &sup2;
+ [³] => &sup3;
+ [⊃] => &sup;
+ [⪾] => &supdot;
+ [⫘] => &supdsub;
+ [⊇] => &supe;
+ [â«„] => &supedot;
+ [⟉] => &suphsol;
+ [â«—] => &suphsub;
+ [⥻] => &suplarr;
+ [â«‚] => &supmult;
+ [⫌] => &supnE;
+ [â«€] => &supplus;
+ [⫆] => &supseteqq;
+ [⊋] => &supsetneq;
+ [⫈] => &supsim;
+ [â«”] => &supsub;
+ [â«–] => &supsup;
+ [⇙] => &swArr;
+ [⤦] => &swarhk;
+ [↙] => &swarr;
+ [⤪] => &swnwar;
+ [ß] => &szlig;
+ [⌖] => &target;
+ [Ï„] => &tau;
+ [Å¥] => &tcaron;
+ [Å£] => &tcedil;
+ [Ñ‚] => &tcy;
+ [⌕] => &telrec;
+ [ð”±] => &tfr;
+ [∴] => &there4;
+ [θ] => &theta;
+ [Ï‘] => &thetasym;
+ [þ] => &thorn;
+ [×] => &times;
+ [⊠] => &timesb;
+ [⨱] => &timesbar;
+ [⨰] => &timesd;
+ [∭] => &tint;
+ [⤨] => &toea;
+ [⌶] => &topbot;
+ [⫱] => &topcir;
+ [ð•¥] => &topf;
+ [â«š] => &topfork;
+ [‴] => &tprime;
+ [â„¢] => &trade;
+ [â–µ] => &triangle;
+ [â–¿] => &triangledown;
+ [≜] => &triangleq;
+ [â—¬] => &tridot;
+ [⨺] => &triminus;
+ [⨹] => &triplus;
+ [â§] => &trisb;
+ [⨻] => &tritime;
+ [â¢] => &trpezium;
+ [ð“‰] => &tscr;
+ [ц] => &tscy;
+ [Ñ›] => &tshcy;
+ [ŧ] => &tstrok;
+ [↠] => &twoheadrightarrow;
+ [⥣] => &uHar;
+ [ú] => &uacute;
+ [↑] => &uarr;
+ [Ñž] => &ubrcy;
+ [Å­] => &ubreve;
+ [û] => &ucirc;
+ [у] => &ucy;
+ [⇅] => &udarr;
+ [ű] => &udblac;
+ [⥮] => &udhar;
+ [⥾] => &ufisht;
+ [ð”²] => &ufr;
+ [ù] => &ugrave;
+ [↿] => &uharl;
+ [â–€] => &uhblk;
+ [⌜] => &ulcorner;
+ [âŒ] => &ulcrop;
+ [â—¸] => &ultri;
+ [Å«] => &umacr;
+ [ų] => &uogon;
+ [ð•¦] => &uopf;
+ [Ï…] => &upsi;
+ [Ï’] => &upsih;
+ [⇈] => &upuparrows;
+ [âŒ] => &urcorner;
+ [⌎] => &urcrop;
+ [ů] => &uring;
+ [â—¹] => &urtri;
+ [ð“Š] => &uscr;
+ [â‹°] => &utdot;
+ [Å©] => &utilde;
+ [ü] => &uuml;
+ [⦧] => &uwangle;
+ [⫨] => &vBar;
+ [â«©] => &vBarv;
+ [⦜] => &vangrt;
+ [Ï°] => &varkappa;
+ [⫌︀] => &varsupsetneqq
+ [⫽︀] => &varsupsetneqq
+ [⊲] => &vartriangleleft;
+ [в] => &vcy;
+ [⊢] => &vdash;
+ [⊻] => &veebar;
+ [≚] => &veeeq;
+ [â‹®] => &vellip;
+ [|] => &vert;
+ [ð”³] => &vfr;
+ [⊂⃒] => &vnsub
+ [ð•§] => &vopf;
+ [⊳] => &vrtri;
+ [ð“‹] => &vscr;
+ [⫋︀] => &vsubnE
+ [⊊︀] => &vsubne
+ [⊋︀] => &vsupne
+ [⦚] => &vzigzag;
+ [ŵ] => &wcirc;
+ [â©Ÿ] => &wedbar;
+ [≙] => &wedgeq;
+ [ð”´] => &wfr;
+ [ð•¨] => &wopf;
+ [℘] => &wp;
+ [≀] => &wr;
+ [ð“Œ] => &wscr;
+ [ð”µ] => &xfr;
+ [⟺] => &xhArr;
+ [ξ] => &xi;
+ [⟸] => &xlArr;
+ [⟼] => &xmap;
+ [â‹»] => &xnis;
+ [⨀] => &xodot;
+ [ð•©] => &xopf;
+ [ð“] => &xscr;
+ [â‹] => &xvee;
+ [â‹€] => &xwedge;
+ [ý] => &yacute;
+ [Ñ] => &yacy;
+ [Å·] => &ycirc;
+ [Ñ‹] => &ycy;
+ [Â¥] => &yen;
+ [ð”¶] => &yfr;
+ [Ñ—] => &yicy;
+ [ð•ª] => &yopf;
+ [ð“Ž] => &yscr;
+ [ÑŽ] => &yucy;
+ [ÿ] => &yuml;
+ [ź] => &zacute;
+ [ž] => &zcaron;
+ [з] => &zcy;
+ [ż] => &zdot;
+ [ζ] => &zeta;
+ [ð”·] => &zfr;
+ [ж] => &zhcy;
+ [â‡] => &zigrarr;
+ [ð•«] => &zopf;
+ [ð“] => &zscr;
+ [â€] => &zwj;
+ [‌] => &zwnj;
+)
+-- with table = HTML_ENTITIES, ENT_QUOTES --
+int(1510)
+-- with table = HTML_ENTITIES, ENT_NOQUOTES --
+int(1508)
+-- with table = HTML_SPECIALCHARS, ENT_COMPAT --
+int(4)
+Array
+(
+ [&] => &amp;
+ [>] => &gt;
+ [<] => &lt;
+ ["] => &quot;
+)
+-- with table = HTML_SPECIALCHARS, ENT_QUOTES --
+array(5) {
+ ["&"]=>
+ string(5) "&amp;"
+ ["'"]=>
+ string(6) "&apos;"
+ [">"]=>
+ string(4) "&gt;"
+ ["<"]=>
+ string(4) "&lt;"
+ ["""]=>
+ string(6) "&quot;"
+}
+-- with table = HTML_SPECIALCHARS, ENT_NOQUOTES --
+array(3) {
+ ["&"]=>
+ string(5) "&amp;"
+ [">"]=>
+ string(4) "&gt;"
+ ["<"]=>
+ string(4) "&lt;"
+}
+Done
diff --git a/ext/standard/tests/strings/get_html_translation_table_basic6.phpt b/ext/standard/tests/strings/get_html_translation_table_basic6.phpt
new file mode 100644
index 0000000000..a4b2909f23
--- /dev/null
+++ b/ext/standard/tests/strings/get_html_translation_table_basic6.phpt
@@ -0,0 +1,249 @@
+--TEST--
+Test get_html_translation_table() function : basic functionality - HTML 5/Windows-1251
+--FILE--
+<?php
+
+function so($a,$b) { return ord($a) - ord($b); }
+
+echo "*** Testing get_html_translation_table() : basic functionality - HTML 5/Windows-1251 ***\n";
+
+echo "-- with table = HTML_ENTITIES, ENT_COMPAT --\n";
+$table = HTML_ENTITIES;
+$tt = get_html_translation_table($table, ENT_COMPAT | ENT_HTML5, "Windows-1251");
+uksort( $tt, 'so' );
+var_dump( count($tt) );
+print_r( $tt );
+
+echo "-- with table = HTML_ENTITIES, ENT_QUOTES --\n";
+$table = HTML_ENTITIES;
+$tt = get_html_translation_table($table, ENT_QUOTES | ENT_HTML5, "Windows-1251");
+var_dump( count($tt) );
+
+echo "-- with table = HTML_ENTITIES, ENT_NOQUOTES --\n";
+$table = HTML_ENTITIES;
+$tt = get_html_translation_table($table, ENT_NOQUOTES | ENT_HTML5, "Windows-1251");
+var_dump( count($tt) );
+
+echo "-- with table = HTML_SPECIALCHARS, ENT_COMPAT --\n";
+$table = HTML_SPECIALCHARS;
+$tt = get_html_translation_table($table, ENT_COMPAT, "Windows-1251");
+uksort( $tt, 'so' );
+var_dump( count($tt) );
+print_r( $tt );
+
+echo "-- with table = HTML_SPECIALCHARS, ENT_QUOTES --\n";
+$table = HTML_SPECIALCHARS;
+$tt = get_html_translation_table($table, ENT_QUOTES | ENT_HTML5, "Windows-1251");
+uksort( $tt, 'so' );
+var_dump( $tt );
+
+echo "-- with table = HTML_SPECIALCHARS, ENT_NOQUOTES --\n";
+$table = HTML_SPECIALCHARS;
+$tt = get_html_translation_table($table, ENT_NOQUOTES | ENT_HTML5, "Windows-1251");
+uasort( $tt, 'so' );
+var_dump( $tt );
+
+
+echo "Done\n";
+?>
+--EXPECT--
+*** Testing get_html_translation_table() : basic functionality - HTML 5/Windows-1251 ***
+-- with table = HTML_ENTITIES, ENT_COMPAT --
+int(157)
+Array
+(
+ [ ] => &Tab;
+ [
+] => &NewLine;
+ [!] => &excl;
+ ["] => &quot;
+ [#] => &num;
+ [$] => &dollar;
+ [%] => &percnt;
+ [&] => &amp;
+ [(] => &lpar;
+ [)] => &rpar;
+ [*] => &ast;
+ [+] => &plus;
+ [,] => &comma;
+ [.] => &period;
+ [/] => &sol;
+ [:] => &colon;
+ [;] => &semi;
+ [<] => &lt;
+ [=] => &equals;
+ [>] => &gt;
+ [?] => &quest;
+ [@] => &commat;
+ [[] => &lbrack;
+ [\] => &bsol;
+ []] => &rsqb;
+ [^] => &Hat;
+ [_] => &lowbar;
+ [`] => &grave;
+ [fj] => &fjlig
+ [{] => &lbrace;
+ [|] => &vert;
+ [}] => &rcub;
+ [€] => &DJcy;
+ [] => &GJcy;
+ [‚] => &sbquo;
+ [ƒ] => &gjcy;
+ [„] => &bdquo;
+ […] => &hellip;
+ [†] => &dagger;
+ [‡] => &Dagger;
+ [ˆ] => &euro;
+ [‰] => &permil;
+ [Š] => &LJcy;
+ [‹] => &lsaquo;
+ [Œ] => &NJcy;
+ [] => &KJcy;
+ [Ž] => &TSHcy;
+ [] => &DZcy;
+ [] => &djcy;
+ [‘] => &OpenCurlyQuote;
+ [’] => &rsquo;
+ [“] => &OpenCurlyDoubleQuote;
+ [”] => &rdquo;
+ [•] => &bull;
+ [–] => &ndash;
+ [—] => &mdash;
+ [™] => &trade;
+ [š] => &ljcy;
+ [›] => &rsaquo;
+ [œ] => &njcy;
+ [] => &kjcy;
+ [ž] => &tshcy;
+ [Ÿ] => &dzcy;
+ [ ] => &nbsp;
+ [¡] => &Ubrcy;
+ [¢] => &ubrcy;
+ [£] => &Jsercy;
+ [¤] => &curren;
+ [¦] => &brvbar;
+ [§] => &sect;
+ [¨] => &IOcy;
+ [©] => &copy;
+ [ª] => &Jukcy;
+ [«] => &laquo;
+ [¬] => &not;
+ [­] => &shy;
+ [®] => &reg;
+ [¯] => &YIcy;
+ [°] => &deg;
+ [±] => &plusmn;
+ [²] => &Iukcy;
+ [³] => &iukcy;
+ [µ] => &micro;
+ [¶] => &para;
+ [·] => &CenterDot;
+ [¸] => &iocy;
+ [¹] => &numero;
+ [º] => &jukcy;
+ [»] => &raquo;
+ [¼] => &jsercy;
+ [½] => &DScy;
+ [¾] => &dscy;
+ [¿] => &yicy;
+ [À] => &Acy;
+ [Á] => &Bcy;
+ [Â] => &Vcy;
+ [Ã] => &Gcy;
+ [Ä] => &Dcy;
+ [Å] => &IEcy;
+ [Æ] => &ZHcy;
+ [Ç] => &Zcy;
+ [È] => &Icy;
+ [É] => &Jcy;
+ [Ê] => &Kcy;
+ [Ë] => &Lcy;
+ [Ì] => &Mcy;
+ [Í] => &Ncy;
+ [Î] => &Ocy;
+ [Ï] => &Pcy;
+ [Ð] => &Rcy;
+ [Ñ] => &Scy;
+ [Ò] => &Tcy;
+ [Ó] => &Ucy;
+ [Ô] => &Fcy;
+ [Õ] => &KHcy;
+ [Ö] => &TScy;
+ [×] => &CHcy;
+ [Ø] => &SHcy;
+ [Ù] => &SHCHcy;
+ [Ú] => &HARDcy;
+ [Û] => &Ycy;
+ [Ü] => &SOFTcy;
+ [Ý] => &Ecy;
+ [Þ] => &YUcy;
+ [ß] => &YAcy;
+ [à] => &acy;
+ [á] => &bcy;
+ [â] => &vcy;
+ [ã] => &gcy;
+ [ä] => &dcy;
+ [å] => &iecy;
+ [æ] => &zhcy;
+ [ç] => &zcy;
+ [è] => &icy;
+ [é] => &jcy;
+ [ê] => &kcy;
+ [ë] => &lcy;
+ [ì] => &mcy;
+ [í] => &ncy;
+ [î] => &ocy;
+ [ï] => &pcy;
+ [ð] => &rcy;
+ [ñ] => &scy;
+ [ò] => &tcy;
+ [ó] => &ucy;
+ [ô] => &fcy;
+ [õ] => &khcy;
+ [ö] => &tscy;
+ [÷] => &chcy;
+ [ø] => &shcy;
+ [ù] => &shchcy;
+ [ú] => &hardcy;
+ [û] => &ycy;
+ [ü] => &softcy;
+ [ý] => &ecy;
+ [þ] => &yucy;
+ [ÿ] => &yacy;
+)
+-- with table = HTML_ENTITIES, ENT_QUOTES --
+int(158)
+-- with table = HTML_ENTITIES, ENT_NOQUOTES --
+int(156)
+-- with table = HTML_SPECIALCHARS, ENT_COMPAT --
+int(4)
+Array
+(
+ ["] => &quot;
+ [&] => &amp;
+ [<] => &lt;
+ [>] => &gt;
+)
+-- with table = HTML_SPECIALCHARS, ENT_QUOTES --
+array(5) {
+ ["""]=>
+ string(6) "&quot;"
+ ["&"]=>
+ string(5) "&amp;"
+ ["'"]=>
+ string(6) "&apos;"
+ ["<"]=>
+ string(4) "&lt;"
+ [">"]=>
+ string(4) "&gt;"
+}
+-- with table = HTML_SPECIALCHARS, ENT_NOQUOTES --
+array(3) {
+ [">"]=>
+ string(4) "&gt;"
+ ["<"]=>
+ string(4) "&lt;"
+ ["&"]=>
+ string(5) "&amp;"
+}
+Done
diff --git a/ext/standard/tests/strings/get_html_translation_table_basic7.phpt b/ext/standard/tests/strings/get_html_translation_table_basic7.phpt
new file mode 100644
index 0000000000..98ebbb9ac4
--- /dev/null
+++ b/ext/standard/tests/strings/get_html_translation_table_basic7.phpt
@@ -0,0 +1,342 @@
+--TEST--
+Test get_html_translation_table() function : basic functionality - XHTML 1.0
+--FILE--
+<?php
+echo "*** Testing get_html_translation_table() : basic functionality/XHTML 1.0 ***\n";
+
+echo "-- with table = HTML_ENTITIES, ENT_QUOTES --\n";
+$table = HTML_ENTITIES;
+/* uses &#039; to share the code path with HTML 4.01 */
+$tt = get_html_translation_table($table, ENT_QUOTES | ENT_XHTML, "UTF-8");
+asort( $tt );
+var_dump( count($tt) );
+print_r( $tt );
+
+echo "-- with table = HTML_ENTITIES, ENT_COMPAT --\n";
+$table = HTML_ENTITIES;
+$tt = get_html_translation_table($table, ENT_COMPAT | ENT_XHTML, "UTF-8");
+var_dump( count($tt) );
+
+echo "-- with table = HTML_ENTITIES, ENT_NOQUOTES --\n";
+$table = HTML_ENTITIES;
+$tt = get_html_translation_table($table, ENT_NOQUOTES | ENT_XHTML, "UTF-8");
+var_dump( count($tt) );
+
+echo "-- with table = HTML_SPECIALCHARS, ENT_COMPAT --\n";
+$table = HTML_SPECIALCHARS;
+$tt = get_html_translation_table($table, ENT_COMPAT, "UTF-8");
+asort( $tt );
+var_dump( count($tt) );
+print_r( $tt );
+
+echo "-- with table = HTML_SPECIALCHARS, ENT_QUOTES --\n";
+$table = HTML_SPECIALCHARS;
+$tt = get_html_translation_table($table, ENT_QUOTES | ENT_XHTML, "UTF-8");
+asort( $tt );
+var_dump( $tt );
+
+echo "-- with table = HTML_SPECIALCHARS, ENT_NOQUOTES --\n";
+$table = HTML_SPECIALCHARS;
+$tt = get_html_translation_table($table, ENT_NOQUOTES | ENT_XHTML, "UTF-8");
+asort( $tt );
+var_dump( $tt );
+
+
+echo "Done\n";
+?>
+--EXPECT--
+*** Testing get_html_translation_table() : basic functionality/XHTML 1.0 ***
+-- with table = HTML_ENTITIES, ENT_QUOTES --
+int(253)
+Array
+(
+ ['] => &#039;
+ [Æ] => &AElig;
+ [Ã] => &Aacute;
+ [Â] => &Acirc;
+ [À] => &Agrave;
+ [Α] => &Alpha;
+ [Ã…] => &Aring;
+ [Ã] => &Atilde;
+ [Ä] => &Auml;
+ [Î’] => &Beta;
+ [Ç] => &Ccedil;
+ [Χ] => &Chi;
+ [‡] => &Dagger;
+ [Δ] => &Delta;
+ [Ã] => &ETH;
+ [É] => &Eacute;
+ [Ê] => &Ecirc;
+ [È] => &Egrave;
+ [Ε] => &Epsilon;
+ [Η] => &Eta;
+ [Ë] => &Euml;
+ [Γ] => &Gamma;
+ [Ã] => &Iacute;
+ [ÃŽ] => &Icirc;
+ [Ì] => &Igrave;
+ [Ι] => &Iota;
+ [Ã] => &Iuml;
+ [Κ] => &Kappa;
+ [Λ] => &Lambda;
+ [Μ] => &Mu;
+ [Ñ] => &Ntilde;
+ [Î] => &Nu;
+ [Å’] => &OElig;
+ [Ó] => &Oacute;
+ [Ô] => &Ocirc;
+ [Ã’] => &Ograve;
+ [Ω] => &Omega;
+ [Ο] => &Omicron;
+ [Ø] => &Oslash;
+ [Õ] => &Otilde;
+ [Ö] => &Ouml;
+ [Φ] => &Phi;
+ [Π] => &Pi;
+ [″] => &Prime;
+ [Ψ] => &Psi;
+ [Ρ] => &Rho;
+ [Å ] => &Scaron;
+ [Σ] => &Sigma;
+ [Þ] => &THORN;
+ [Τ] => &Tau;
+ [Θ] => &Theta;
+ [Ú] => &Uacute;
+ [Û] => &Ucirc;
+ [Ù] => &Ugrave;
+ [Î¥] => &Upsilon;
+ [Ü] => &Uuml;
+ [Ξ] => &Xi;
+ [Ã] => &Yacute;
+ [Ÿ] => &Yuml;
+ [Ζ] => &Zeta;
+ [á] => &aacute;
+ [â] => &acirc;
+ [´] => &acute;
+ [æ] => &aelig;
+ [à] => &agrave;
+ [ℵ] => &alefsym;
+ [α] => &alpha;
+ [&] => &amp;
+ [∧] => &and;
+ [∠] => &ang;
+ [Ã¥] => &aring;
+ [≈] => &asymp;
+ [ã] => &atilde;
+ [ä] => &auml;
+ [„] => &bdquo;
+ [β] => &beta;
+ [¦] => &brvbar;
+ [•] => &bull;
+ [∩] => &cap;
+ [ç] => &ccedil;
+ [¸] => &cedil;
+ [¢] => &cent;
+ [χ] => &chi;
+ [ˆ] => &circ;
+ [♣] => &clubs;
+ [≅] => &cong;
+ [©] => &copy;
+ [↵] => &crarr;
+ [∪] => &cup;
+ [¤] => &curren;
+ [⇓] => &dArr;
+ [†] => &dagger;
+ [↓] => &darr;
+ [°] => &deg;
+ [δ] => &delta;
+ [♦] => &diams;
+ [÷] => &divide;
+ [é] => &eacute;
+ [ê] => &ecirc;
+ [è] => &egrave;
+ [∅] => &empty;
+ [ ] => &emsp;
+ [ ] => &ensp;
+ [ε] => &epsilon;
+ [≡] => &equiv;
+ [η] => &eta;
+ [ð] => &eth;
+ [ë] => &euml;
+ [€] => &euro;
+ [∃] => &exist;
+ [Æ’] => &fnof;
+ [∀] => &forall;
+ [½] => &frac12;
+ [¼] => &frac14;
+ [¾] => &frac34;
+ [â„] => &frasl;
+ [γ] => &gamma;
+ [≥] => &ge;
+ [>] => &gt;
+ [⇔] => &hArr;
+ [↔] => &harr;
+ [♥] => &hearts;
+ […] => &hellip;
+ [í] => &iacute;
+ [î] => &icirc;
+ [¡] => &iexcl;
+ [ì] => &igrave;
+ [â„‘] => &image;
+ [∞] => &infin;
+ [∫] => &int;
+ [ι] => &iota;
+ [¿] => &iquest;
+ [∈] => &isin;
+ [ï] => &iuml;
+ [κ] => &kappa;
+ [â‡] => &lArr;
+ [λ] => &lambda;
+ [〈] => &lang;
+ [«] => &laquo;
+ [â†] => &larr;
+ [⌈] => &lceil;
+ [“] => &ldquo;
+ [≤] => &le;
+ [⌊] => &lfloor;
+ [∗] => &lowast;
+ [â—Š] => &loz;
+ [‎] => &lrm;
+ [‹] => &lsaquo;
+ [‘] => &lsquo;
+ [<] => &lt;
+ [¯] => &macr;
+ [—] => &mdash;
+ [µ] => &micro;
+ [·] => &middot;
+ [−] => &minus;
+ [μ] => &mu;
+ [∇] => &nabla;
+ [ ] => &nbsp;
+ [–] => &ndash;
+ [≠] => &ne;
+ [∋] => &ni;
+ [¬] => &not;
+ [∉] => &notin;
+ [⊄] => &nsub;
+ [ñ] => &ntilde;
+ [ν] => &nu;
+ [ó] => &oacute;
+ [ô] => &ocirc;
+ [Å“] => &oelig;
+ [ò] => &ograve;
+ [‾] => &oline;
+ [ω] => &omega;
+ [ο] => &omicron;
+ [⊕] => &oplus;
+ [∨] => &or;
+ [ª] => &ordf;
+ [º] => &ordm;
+ [ø] => &oslash;
+ [õ] => &otilde;
+ [⊗] => &otimes;
+ [ö] => &ouml;
+ [¶] => &para;
+ [∂] => &part;
+ [‰] => &permil;
+ [⊥] => &perp;
+ [φ] => &phi;
+ [Ï€] => &pi;
+ [Ï–] => &piv;
+ [±] => &plusmn;
+ [£] => &pound;
+ [′] => &prime;
+ [âˆ] => &prod;
+ [âˆ] => &prop;
+ [ψ] => &psi;
+ ["] => &quot;
+ [⇒] => &rArr;
+ [√] => &radic;
+ [〉] => &rang;
+ [»] => &raquo;
+ [→] => &rarr;
+ [⌉] => &rceil;
+ [â€] => &rdquo;
+ [ℜ] => &real;
+ [®] => &reg;
+ [⌋] => &rfloor;
+ [Ï] => &rho;
+ [â€] => &rlm;
+ [›] => &rsaquo;
+ [’] => &rsquo;
+ [‚] => &sbquo;
+ [Å¡] => &scaron;
+ [â‹…] => &sdot;
+ [§] => &sect;
+ [­] => &shy;
+ [σ] => &sigma;
+ [Ï‚] => &sigmaf;
+ [∼] => &sim;
+ [â™ ] => &spades;
+ [⊂] => &sub;
+ [⊆] => &sube;
+ [∑] => &sum;
+ [¹] => &sup1;
+ [²] => &sup2;
+ [³] => &sup3;
+ [⊃] => &sup;
+ [⊇] => &supe;
+ [ß] => &szlig;
+ [Ï„] => &tau;
+ [∴] => &there4;
+ [θ] => &theta;
+ [Ï‘] => &thetasym;
+ [ ] => &thinsp;
+ [þ] => &thorn;
+ [˜] => &tilde;
+ [×] => &times;
+ [â„¢] => &trade;
+ [⇑] => &uArr;
+ [ú] => &uacute;
+ [↑] => &uarr;
+ [û] => &ucirc;
+ [ù] => &ugrave;
+ [¨] => &uml;
+ [Ï’] => &upsih;
+ [Ï…] => &upsilon;
+ [ü] => &uuml;
+ [℘] => &weierp;
+ [ξ] => &xi;
+ [ý] => &yacute;
+ [Â¥] => &yen;
+ [ÿ] => &yuml;
+ [ζ] => &zeta;
+ [â€] => &zwj;
+ [‌] => &zwnj;
+)
+-- with table = HTML_ENTITIES, ENT_COMPAT --
+int(252)
+-- with table = HTML_ENTITIES, ENT_NOQUOTES --
+int(251)
+-- with table = HTML_SPECIALCHARS, ENT_COMPAT --
+int(4)
+Array
+(
+ [&] => &amp;
+ [>] => &gt;
+ [<] => &lt;
+ ["] => &quot;
+)
+-- with table = HTML_SPECIALCHARS, ENT_QUOTES --
+array(5) {
+ ["&"]=>
+ string(5) "&amp;"
+ ["'"]=>
+ string(6) "&apos;"
+ [">"]=>
+ string(4) "&gt;"
+ ["<"]=>
+ string(4) "&lt;"
+ ["""]=>
+ string(6) "&quot;"
+}
+-- with table = HTML_SPECIALCHARS, ENT_NOQUOTES --
+array(3) {
+ ["&"]=>
+ string(5) "&amp;"
+ [">"]=>
+ string(4) "&gt;"
+ ["<"]=>
+ string(4) "&lt;"
+}
+Done \ No newline at end of file
diff --git a/ext/standard/tests/strings/get_html_translation_table_basic8.phpt b/ext/standard/tests/strings/get_html_translation_table_basic8.phpt
new file mode 100644
index 0000000000..8f8ca580ea
--- /dev/null
+++ b/ext/standard/tests/strings/get_html_translation_table_basic8.phpt
@@ -0,0 +1,93 @@
+--TEST--
+Test get_html_translation_table() function : basic functionality - XML 1.0
+--FILE--
+<?php
+echo "*** Testing get_html_translation_table() : basic functionality/XML 1.0 ***\n";
+
+echo "-- with table = HTML_ENTITIES, ENT_QUOTES --\n";
+$table = HTML_ENTITIES;
+$tt = get_html_translation_table($table, ENT_QUOTES | ENT_XML1, "UTF-8");
+asort( $tt );
+var_dump( count($tt) );
+print_r( $tt );
+
+echo "-- with table = HTML_ENTITIES, ENT_COMPAT --\n";
+$table = HTML_ENTITIES;
+$tt = get_html_translation_table($table, ENT_COMPAT | ENT_XML1, "UTF-8");
+var_dump( count($tt) );
+
+echo "-- with table = HTML_ENTITIES, ENT_NOQUOTES --\n";
+$table = HTML_ENTITIES;
+$tt = get_html_translation_table($table, ENT_NOQUOTES | ENT_XML1, "UTF-8");
+var_dump( count($tt) );
+
+echo "-- with table = HTML_SPECIALCHARS, ENT_COMPAT --\n";
+$table = HTML_SPECIALCHARS;
+$tt = get_html_translation_table($table, ENT_COMPAT, "UTF-8");
+asort( $tt );
+var_dump( count($tt) );
+print_r( $tt );
+
+echo "-- with table = HTML_SPECIALCHARS, ENT_QUOTES --\n";
+$table = HTML_SPECIALCHARS;
+$tt = get_html_translation_table($table, ENT_QUOTES | ENT_XML1, "UTF-8");
+asort( $tt );
+var_dump( $tt );
+
+echo "-- with table = HTML_SPECIALCHARS, ENT_NOQUOTES --\n";
+$table = HTML_SPECIALCHARS;
+$tt = get_html_translation_table($table, ENT_NOQUOTES | ENT_XML1, "UTF-8");
+asort( $tt );
+var_dump( $tt );
+
+
+echo "Done\n";
+?>
+--EXPECT--
+*** Testing get_html_translation_table() : basic functionality/XML 1.0 ***
+-- with table = HTML_ENTITIES, ENT_QUOTES --
+int(5)
+Array
+(
+ [&] => &amp;
+ ['] => &apos;
+ [>] => &gt;
+ [<] => &lt;
+ ["] => &quot;
+)
+-- with table = HTML_ENTITIES, ENT_COMPAT --
+int(4)
+-- with table = HTML_ENTITIES, ENT_NOQUOTES --
+int(3)
+-- with table = HTML_SPECIALCHARS, ENT_COMPAT --
+int(4)
+Array
+(
+ [&] => &amp;
+ [>] => &gt;
+ [<] => &lt;
+ ["] => &quot;
+)
+-- with table = HTML_SPECIALCHARS, ENT_QUOTES --
+array(5) {
+ ["&"]=>
+ string(5) "&amp;"
+ ["'"]=>
+ string(6) "&apos;"
+ [">"]=>
+ string(4) "&gt;"
+ ["<"]=>
+ string(4) "&lt;"
+ ["""]=>
+ string(6) "&quot;"
+}
+-- with table = HTML_SPECIALCHARS, ENT_NOQUOTES --
+array(3) {
+ ["&"]=>
+ string(5) "&amp;"
+ [">"]=>
+ string(4) "&gt;"
+ ["<"]=>
+ string(4) "&lt;"
+}
+Done
diff --git a/ext/standard/tests/strings/get_html_translation_table_basic9.phpt b/ext/standard/tests/strings/get_html_translation_table_basic9.phpt
new file mode 100644
index 0000000000..cd32cccd5f
--- /dev/null
+++ b/ext/standard/tests/strings/get_html_translation_table_basic9.phpt
@@ -0,0 +1,95 @@
+--TEST--
+Test get_html_translation_table() function : basic functionality - HTML5 /sjis
+--FILE--
+<?php
+echo "*** Testing get_html_translation_table() : basic functionality/HTML5/SJIS ***\n";
+echo "*** Only basic entities supported! ***\n";
+
+echo "-- with table = HTML_ENTITIES, ENT_QUOTES --\n";
+$table = HTML_ENTITIES;
+$tt = get_html_translation_table($table, ENT_QUOTES | ENT_HTML5, "SJIS");
+asort( $tt );
+var_dump( count($tt) );
+print_r( $tt );
+
+echo "-- with table = HTML_ENTITIES, ENT_COMPAT --\n";
+$table = HTML_ENTITIES;
+$tt = get_html_translation_table($table, ENT_COMPAT | ENT_HTML5, "SJIS");
+var_dump( count($tt) );
+
+echo "-- with table = HTML_ENTITIES, ENT_NOQUOTES --\n";
+$table = HTML_ENTITIES;
+$tt = get_html_translation_table($table, ENT_NOQUOTES | ENT_HTML5, "SJIS");
+var_dump( count($tt) );
+
+echo "-- with table = HTML_SPECIALCHARS, ENT_COMPAT --\n";
+$table = HTML_SPECIALCHARS;
+$tt = get_html_translation_table($table, ENT_COMPAT, "SJIS");
+asort( $tt );
+var_dump( count($tt) );
+print_r( $tt );
+
+echo "-- with table = HTML_SPECIALCHARS, ENT_QUOTES --\n";
+$table = HTML_SPECIALCHARS;
+$tt = get_html_translation_table($table, ENT_QUOTES | ENT_HTML5, "SJIS");
+asort( $tt );
+var_dump( $tt );
+
+echo "-- with table = HTML_SPECIALCHARS, ENT_NOQUOTES --\n";
+$table = HTML_SPECIALCHARS;
+$tt = get_html_translation_table($table, ENT_NOQUOTES | ENT_HTML5, "SJIS");
+asort( $tt );
+var_dump( $tt );
+
+
+echo "Done\n";
+?>
+--EXPECT--
+*** Testing get_html_translation_table() : basic functionality/HTML5/SJIS ***
+*** Only basic entities supported! ***
+-- with table = HTML_ENTITIES, ENT_QUOTES --
+int(5)
+Array
+(
+ [&] => &amp;
+ ['] => &apos;
+ [>] => &gt;
+ [<] => &lt;
+ ["] => &quot;
+)
+-- with table = HTML_ENTITIES, ENT_COMPAT --
+int(4)
+-- with table = HTML_ENTITIES, ENT_NOQUOTES --
+int(3)
+-- with table = HTML_SPECIALCHARS, ENT_COMPAT --
+int(4)
+Array
+(
+ [&] => &amp;
+ [>] => &gt;
+ [<] => &lt;
+ ["] => &quot;
+)
+-- with table = HTML_SPECIALCHARS, ENT_QUOTES --
+array(5) {
+ ["&"]=>
+ string(5) "&amp;"
+ ["'"]=>
+ string(6) "&apos;"
+ [">"]=>
+ string(4) "&gt;"
+ ["<"]=>
+ string(4) "&lt;"
+ ["""]=>
+ string(6) "&quot;"
+}
+-- with table = HTML_SPECIALCHARS, ENT_NOQUOTES --
+array(3) {
+ ["&"]=>
+ string(5) "&amp;"
+ [">"]=>
+ string(4) "&gt;"
+ ["<"]=>
+ string(4) "&lt;"
+}
+Done \ No newline at end of file
diff --git a/ext/standard/tests/strings/get_html_translation_table_variation1.phpt b/ext/standard/tests/strings/get_html_translation_table_variation1.phpt
index edae95a2e8..7f7e229354 100644
--- a/ext/standard/tests/strings/get_html_translation_table_variation1.phpt
+++ b/ext/standard/tests/strings/get_html_translation_table_variation1.phpt
@@ -75,14 +75,22 @@ for($index = 0; $index < count($values); $index ++) {
$v = get_html_translation_table($table, ENT_COMPAT, "UTF-8");
if (is_array($v) && count($v) > 100)
var_dump(count($v));
- else
+ elseif (is_array($v)) {
+ asort($v);
var_dump($v);
+ } else {
+ var_dump($v);
+ }
$v = get_html_translation_table($table, $quote_style, "UTF-8");
if (is_array($v) && count($v) > 100)
var_dump(count($v));
- else
+ elseif (is_array($v)) {
+ asort($v);
+ var_dump($v);
+ } else {
var_dump($v);
+ }
$counter ++;
}
@@ -138,22 +146,22 @@ int(252)
array(4) {
["&"]=>
string(5) "&amp;"
- ["""]=>
- string(6) "&quot;"
- ["<"]=>
- string(4) "&lt;"
[">"]=>
string(4) "&gt;"
+ ["<"]=>
+ string(4) "&lt;"
+ ["""]=>
+ string(6) "&quot;"
}
array(4) {
["&"]=>
string(5) "&amp;"
- ["""]=>
- string(6) "&quot;"
- ["<"]=>
- string(4) "&lt;"
[">"]=>
string(4) "&gt;"
+ ["<"]=>
+ string(4) "&lt;"
+ ["""]=>
+ string(6) "&quot;"
}
-- Iteration 8 --
int(252)
@@ -162,22 +170,22 @@ int(252)
array(4) {
["&"]=>
string(5) "&amp;"
- ["""]=>
- string(6) "&quot;"
- ["<"]=>
- string(4) "&lt;"
[">"]=>
string(4) "&gt;"
+ ["<"]=>
+ string(4) "&lt;"
+ ["""]=>
+ string(6) "&quot;"
}
array(4) {
["&"]=>
string(5) "&amp;"
- ["""]=>
- string(6) "&quot;"
- ["<"]=>
- string(4) "&lt;"
[">"]=>
string(4) "&gt;"
+ ["<"]=>
+ string(4) "&lt;"
+ ["""]=>
+ string(6) "&quot;"
}
-- Iteration 10 --
@@ -218,43 +226,43 @@ NULL
array(4) {
["&"]=>
string(5) "&amp;"
- ["""]=>
- string(6) "&quot;"
- ["<"]=>
- string(4) "&lt;"
[">"]=>
string(4) "&gt;"
+ ["<"]=>
+ string(4) "&lt;"
+ ["""]=>
+ string(6) "&quot;"
}
array(4) {
["&"]=>
string(5) "&amp;"
- ["""]=>
- string(6) "&quot;"
- ["<"]=>
- string(4) "&lt;"
[">"]=>
string(4) "&gt;"
+ ["<"]=>
+ string(4) "&lt;"
+ ["""]=>
+ string(6) "&quot;"
}
-- Iteration 16 --
array(4) {
["&"]=>
string(5) "&amp;"
- ["""]=>
- string(6) "&quot;"
- ["<"]=>
- string(4) "&lt;"
[">"]=>
string(4) "&gt;"
+ ["<"]=>
+ string(4) "&lt;"
+ ["""]=>
+ string(6) "&quot;"
}
array(4) {
["&"]=>
string(5) "&amp;"
- ["""]=>
- string(6) "&quot;"
- ["<"]=>
- string(4) "&lt;"
[">"]=>
string(4) "&gt;"
+ ["<"]=>
+ string(4) "&lt;"
+ ["""]=>
+ string(6) "&quot;"
}
-- Iteration 17 --
@@ -267,42 +275,42 @@ NULL
array(4) {
["&"]=>
string(5) "&amp;"
- ["""]=>
- string(6) "&quot;"
- ["<"]=>
- string(4) "&lt;"
[">"]=>
string(4) "&gt;"
+ ["<"]=>
+ string(4) "&lt;"
+ ["""]=>
+ string(6) "&quot;"
}
array(4) {
["&"]=>
string(5) "&amp;"
- ["""]=>
- string(6) "&quot;"
- ["<"]=>
- string(4) "&lt;"
[">"]=>
string(4) "&gt;"
+ ["<"]=>
+ string(4) "&lt;"
+ ["""]=>
+ string(6) "&quot;"
}
-- Iteration 19 --
array(4) {
["&"]=>
string(5) "&amp;"
- ["""]=>
- string(6) "&quot;"
- ["<"]=>
- string(4) "&lt;"
[">"]=>
string(4) "&gt;"
+ ["<"]=>
+ string(4) "&lt;"
+ ["""]=>
+ string(6) "&quot;"
}
array(4) {
["&"]=>
string(5) "&amp;"
- ["""]=>
- string(6) "&quot;"
- ["<"]=>
- string(4) "&lt;"
[">"]=>
string(4) "&gt;"
+ ["<"]=>
+ string(4) "&lt;"
+ ["""]=>
+ string(6) "&quot;"
}
Done
diff --git a/ext/standard/tests/strings/html_entity_decode1.phpt b/ext/standard/tests/strings/html_entity_decode1.phpt
new file mode 100644
index 0000000000..5eabfc35a5
--- /dev/null
+++ b/ext/standard/tests/strings/html_entity_decode1.phpt
@@ -0,0 +1,67 @@
+--TEST--
+html_entity_decode: Decoding of entities after invalid entities
+--FILE--
+<?php
+$arr = array(
+ "&",
+ "&&amp;",
+ "&&#x24;",
+ "&#&amp;",
+ "&#&#x24;",
+ "&#x&amp;",
+ "&#x&#x24;",
+ "&#x1&amp;",
+ "&#x1&#x24;",
+ "&#x20&amp;",
+ "&#x20&#x24;",
+ "&#1&amp;",
+ "&#1&#x24;",
+ "&#20&amp;",
+ "&#20&#x24;",
+ "&a&amp;",
+ "&a&#x24;",
+ "&aa&amp;",
+ "&aa&#x24;",
+ "&aa;&amp;",
+ "&aa;&#x24;",
+ "&;&amp;",
+ "&;&#x24;",
+);
+
+$i = 0;
+foreach ($arr as $ent) {
+ if ($i % 2 == 1) {
+ if (($a = html_entity_decode($ent, ENT_QUOTES, 'UTF-8')) !=
+ ($b = htmlspecialchars_decode($ent, ENT_QUOTES))) {
+ echo "htmlspecialchars_decode <-> html_entity_decode inconsistency","\n",
+ "$b <-> $a","\n";
+ }
+ }
+ echo html_entity_decode($ent, ENT_QUOTES, 'UTF-8'), "\n";
+}
+echo "Done.\n";
+--EXPECT--
+&
+&&
+&$
+&#&
+&#$
+&#x&
+&#x$
+&#x1&
+&#x1$
+&#x20&
+&#x20$
+&#1&
+&#1$
+&#20&
+&#20$
+&a&
+&a$
+&aa&
+&aa$
+&aa;&
+&aa;$
+&;&
+&;$
+Done. \ No newline at end of file
diff --git a/ext/standard/tests/strings/html_entity_decode2.phpt b/ext/standard/tests/strings/html_entity_decode2.phpt
new file mode 100644
index 0000000000..b8a6e49eb3
--- /dev/null
+++ b/ext/standard/tests/strings/html_entity_decode2.phpt
@@ -0,0 +1,33 @@
+--TEST--
+html_entity_decode: Handling of &apos;
+--FILE--
+<?php
+
+echo "*** HTML 4.01 implicit (shouldn't decode) ***\n";
+echo html_entity_decode("&apos;", ENT_QUOTES, "UTF-8"), "\n";
+
+echo "*** HTML 4.01 (shouldn't decode) ***\n";
+echo html_entity_decode("&apos;", ENT_QUOTES | ENT_HTML401, "UTF-8"), "\n";
+
+echo "*** HTML 5 ***\n";
+echo html_entity_decode("&apos;", ENT_QUOTES | ENT_HTML5, "UTF-8"), "\n";
+
+echo "*** XHTML 1.0 ***\n";
+echo html_entity_decode("&apos;", ENT_QUOTES | ENT_XHTML, "UTF-8"), "\n";
+
+echo "*** XML 1.0 ***\n";
+echo html_entity_decode("&apos;", ENT_QUOTES | ENT_XML1, "UTF-8"), "\n";
+
+echo "Done.\n";
+--EXPECT--
+*** HTML 4.01 implicit (shouldn't decode) ***
+&apos;
+*** HTML 4.01 (shouldn't decode) ***
+&apos;
+*** HTML 5 ***
+'
+*** XHTML 1.0 ***
+'
+*** XML 1.0 ***
+'
+Done. \ No newline at end of file
diff --git a/ext/standard/tests/strings/html_entity_decode3.phpt b/ext/standard/tests/strings/html_entity_decode3.phpt
new file mode 100644
index 0000000000..fcf2710679
--- /dev/null
+++ b/ext/standard/tests/strings/html_entity_decode3.phpt
@@ -0,0 +1,193 @@
+--TEST--
+html_entity_decode: Do not decode numerical entities that refer to non-SGML or otherwise disallowed chars
+--FILE--
+<?php
+
+$tests = array(
+ "&#0;", //C0
+ "&#1;",
+ "&#x09;",
+ "&#x0A;",
+ "&#x0B;",
+ "&#x0C;",
+ "&#x0D;", //note that HTML5 is unique in that it forbids this entity, but allows a literal U+0D
+ "&#x0E;",
+ "&#x1F;",
+ "&#x20;", //allowed always
+ "&#x7F;", //DEL
+ "&#x80;", //C1
+ "&#x9F;",
+ "&#xA0;", //allowed always
+ "&#xD7FF;", //surrogates
+ "&#xD800;",
+ "&#xDFFF;",
+ "&#xE000;", //allowed always
+ "&#xFFFE;", //nonchar
+ "&#xFFFF;",
+ "&#xFDCF;", //allowed always
+ "&#xFDD0;", //nonchar
+ "&#xFDEF;",
+ "&#xFDF0;", //allowed always
+ "&#x2FFFE;", //nonchar
+ "&#x2FFFF;",
+);
+
+echo "*** HTML 4.01 ***\n";
+
+foreach ($tests as $t) {
+ $dec = html_entity_decode($t, ENT_QUOTES | ENT_HTML401, "UTF-8");
+ if ($t == $dec) {
+ echo "$t\tNOT DECODED\n";
+ } else {
+ echo "$t\tDECODED\n";
+ }
+}
+
+echo "\n*** XHTML 1.0 ***\n";
+
+foreach ($tests as $t) {
+ $dec = html_entity_decode($t, ENT_QUOTES | ENT_XHTML, "UTF-8");
+ if ($t == $dec) {
+ echo "$t\tNOT DECODED\n";
+ } else {
+ echo "$t\tDECODED\n";
+ }
+}
+
+echo "\n*** HTML5 ***\n";
+
+foreach ($tests as $t) {
+ $dec = html_entity_decode($t, ENT_QUOTES | ENT_HTML5, "UTF-8");
+ if ($t == $dec) {
+ echo "$t\tNOT DECODED\n";
+ } else {
+ echo "$t\tDECODED\n";
+ }
+}
+
+echo "\n*** XML 1.0 ***\n";
+
+foreach ($tests as $t) {
+ $dec = html_entity_decode($t, ENT_QUOTES | ENT_XML1, "UTF-8");
+ if ($t == $dec) {
+ echo "$t\tNOT DECODED\n";
+ } else {
+ echo "$t\tDECODED\n";
+ }
+}
+
+echo "\nDone.\n";
+--EXPECT--
+*** HTML 4.01 ***
+&#0; NOT DECODED
+&#1; NOT DECODED
+&#x09; DECODED
+&#x0A; DECODED
+&#x0B; NOT DECODED
+&#x0C; NOT DECODED
+&#x0D; DECODED
+&#x0E; NOT DECODED
+&#x1F; NOT DECODED
+&#x20; DECODED
+&#x7F; NOT DECODED
+&#x80; NOT DECODED
+&#x9F; NOT DECODED
+&#xA0; DECODED
+&#xD7FF; DECODED
+&#xD800; NOT DECODED
+&#xDFFF; NOT DECODED
+&#xE000; DECODED
+&#xFFFE; DECODED
+&#xFFFF; DECODED
+&#xFDCF; DECODED
+&#xFDD0; DECODED
+&#xFDEF; DECODED
+&#xFDF0; DECODED
+&#x2FFFE; DECODED
+&#x2FFFF; DECODED
+
+*** XHTML 1.0 ***
+&#0; NOT DECODED
+&#1; NOT DECODED
+&#x09; DECODED
+&#x0A; DECODED
+&#x0B; NOT DECODED
+&#x0C; NOT DECODED
+&#x0D; DECODED
+&#x0E; NOT DECODED
+&#x1F; NOT DECODED
+&#x20; DECODED
+&#x7F; DECODED
+&#x80; DECODED
+&#x9F; DECODED
+&#xA0; DECODED
+&#xD7FF; DECODED
+&#xD800; NOT DECODED
+&#xDFFF; NOT DECODED
+&#xE000; DECODED
+&#xFFFE; NOT DECODED
+&#xFFFF; NOT DECODED
+&#xFDCF; DECODED
+&#xFDD0; DECODED
+&#xFDEF; DECODED
+&#xFDF0; DECODED
+&#x2FFFE; DECODED
+&#x2FFFF; DECODED
+
+*** HTML5 ***
+&#0; NOT DECODED
+&#1; NOT DECODED
+&#x09; DECODED
+&#x0A; DECODED
+&#x0B; NOT DECODED
+&#x0C; DECODED
+&#x0D; NOT DECODED
+&#x0E; NOT DECODED
+&#x1F; NOT DECODED
+&#x20; DECODED
+&#x7F; NOT DECODED
+&#x80; NOT DECODED
+&#x9F; NOT DECODED
+&#xA0; DECODED
+&#xD7FF; DECODED
+&#xD800; NOT DECODED
+&#xDFFF; NOT DECODED
+&#xE000; DECODED
+&#xFFFE; NOT DECODED
+&#xFFFF; NOT DECODED
+&#xFDCF; DECODED
+&#xFDD0; NOT DECODED
+&#xFDEF; NOT DECODED
+&#xFDF0; DECODED
+&#x2FFFE; NOT DECODED
+&#x2FFFF; NOT DECODED
+
+*** XML 1.0 ***
+&#0; NOT DECODED
+&#1; NOT DECODED
+&#x09; DECODED
+&#x0A; DECODED
+&#x0B; NOT DECODED
+&#x0C; NOT DECODED
+&#x0D; DECODED
+&#x0E; NOT DECODED
+&#x1F; NOT DECODED
+&#x20; DECODED
+&#x7F; DECODED
+&#x80; DECODED
+&#x9F; DECODED
+&#xA0; DECODED
+&#xD7FF; DECODED
+&#xD800; NOT DECODED
+&#xDFFF; NOT DECODED
+&#xE000; DECODED
+&#xFFFE; NOT DECODED
+&#xFFFF; NOT DECODED
+&#xFDCF; DECODED
+&#xFDD0; DECODED
+&#xFDEF; DECODED
+&#xFDF0; DECODED
+&#x2FFFE; DECODED
+&#x2FFFF; DECODED
+
+Done.
diff --git a/ext/standard/tests/strings/html_entity_decode_cp866.phpt b/ext/standard/tests/strings/html_entity_decode_cp866.phpt
index 94b23b6660..76323be30b 100644
--- a/ext/standard/tests/strings/html_entity_decode_cp866.phpt
+++ b/ext/standard/tests/strings/html_entity_decode_cp866.phpt
@@ -236,10 +236,10 @@ CYRILLIC CAPITAL LETTER SOFT SIGN: &#x42C; => 9c
CYRILLIC CAPITAL LETTER E: &#x42D; => 9d
&#x9D; => &#x9D;
-CYRILLIC CAPITAL LETTER YU: &#x42E; => 9f
+CYRILLIC CAPITAL LETTER YU: &#x42E; => 9e
&#x9E; => &#x9E;
-CYRILLIC CAPITAL LETTER YA: &#x42F; => 2623783432463b
+CYRILLIC CAPITAL LETTER YA: &#x42F; => 9f
&#x9F; => &#x9F;
CYRILLIC SMALL LETTER A: &#x430; => a0
diff --git a/ext/standard/tests/strings/html_entity_decode_html4.phpt b/ext/standard/tests/strings/html_entity_decode_html4.phpt
index 3c92bf6fb7..34753396de 100644
--- a/ext/standard/tests/strings/html_entity_decode_html4.phpt
+++ b/ext/standard/tests/strings/html_entity_decode_html4.phpt
@@ -3,258 +3,258 @@ html_entity_decode() conformance check (HTML 4)
--FILE--
<?php
$map = array(
- "&quot;",
- "&amp;",
- "&lt;",
- "&gt;",
- "&nbsp;",
- "&iexcl;",
- "&cent;",
- "&pound;",
- "&curren;",
- "&yen;",
- "&brvbar;",
- "&sect;",
- "&uml;",
- "&copy;",
- "&ordf;",
- "&laquo;",
- "&not;",
- "&shy;",
- "&reg;",
- "&macr;",
- "&deg;",
- "&plusmn;",
- "&sup2;",
- "&sup3;",
- "&acute;",
- "&micro;",
- "&para;",
- "&middot;",
- "&cedil;",
- "&sup1;",
- "&ordm;",
- "&raquo;",
- "&frac14;",
- "&frac12;",
- "&frac34;",
- "&iquest;",
- "&Agrave;",
- "&Aacute;",
- "&Acirc;",
- "&Atilde;",
- "&Auml;",
- "&Aring;",
- "&AElig;",
- "&Ccedil;",
- "&Egrave;",
- "&Eacute;",
- "&Ecirc;",
- "&Euml;",
- "&Igrave;",
- "&Iacute;",
- "&Icirc;",
- "&Iuml;",
- "&ETH;",
- "&Ntilde;",
- "&Ograve;",
- "&Oacute;",
- "&Ocirc;",
- "&Otilde;",
- "&Ouml;",
- "&times;",
- "&Oslash;",
- "&Ugrave;",
- "&Uacute;",
- "&Ucirc;",
- "&Uuml;",
- "&Yacute;",
- "&THORN;",
- "&szlig;",
- "&agrave;",
- "&aacute;",
- "&acirc;",
- "&atilde;",
- "&auml;",
- "&aring;",
- "&aelig;",
- "&ccedil;",
- "&egrave;",
- "&eacute;",
- "&ecirc;",
- "&euml;",
- "&igrave;",
- "&iacute;",
- "&icirc;",
- "&iuml;",
- "&eth;",
- "&ntilde;",
- "&ograve;",
- "&oacute;",
- "&ocirc;",
- "&otilde;",
- "&ouml;",
- "&divide;",
- "&oslash;",
- "&ugrave;",
- "&uacute;",
- "&ucirc;",
- "&uuml;",
- "&yacute;",
- "&thorn;",
- "&yuml;",
- "&OElig;",
- "&oelig;",
- "&Scaron;",
- "&scaron;",
- "&Yuml;",
- "&fnof;",
- "&circ;",
- "&tilde;",
- "&Alpha;",
- "&Beta;",
- "&Gamma;",
- "&Delta;",
- "&Epsilon;",
- "&Zeta;",
- "&Eta;",
- "&Theta;",
- "&Iota;",
- "&Kappa;",
- "&Lambda;",
- "&Mu;",
- "&Nu;",
- "&Xi;",
- "&Omicron;",
- "&Pi;",
- "&Rho;",
- "&Sigma;",
- "&Tau;",
- "&Upsilon;",
- "&Phi;",
- "&Chi;",
- "&Psi;",
- "&Omega;",
- "&alpha;",
- "&beta;",
- "&gamma;",
- "&delta;",
- "&epsilon;",
- "&zeta;",
- "&eta;",
- "&theta;",
- "&iota;",
- "&kappa;",
- "&lambda;",
- "&mu;",
- "&nu;",
- "&xi;",
- "&omicron;",
- "&pi;",
- "&rho;",
- "&sigmaf;",
- "&sigma;",
- "&tau;",
- "&upsilon;",
- "&phi;",
- "&chi;",
- "&psi;",
- "&omega;",
- "&thetasym;",
- "&upsih;",
- "&piv;",
- "&ensp;",
- "&emsp;",
- "&thinsp;",
- "&zwnj;",
- "&zwj;",
- "&lrm;",
- "&rlm;",
- "&ndash;",
- "&mdash;",
- "&lsquo;",
- "&rsquo;",
- "&sbquo;",
- "&ldquo;",
- "&rdquo;",
- "&bdquo;",
- "&dagger;",
- "&Dagger;",
- "&bull;",
- "&hellip;",
- "&permil;",
- "&prime;",
- "&Prime;",
- "&lsaquo;",
- "&rsaquo;",
- "&oline;",
- "&frasl;",
- "&euro;",
- "&image;",
- "&weierp;",
- "&real;",
- "&trade;",
- "&alefsym;",
- "&larr;",
- "&uarr;",
- "&rarr;",
- "&darr;",
- "&harr;",
- "&crarr;",
- "&lArr;",
- "&uArr;",
- "&rArr;",
- "&dArr;",
- "&hArr;",
- "&forall;",
- "&part;",
- "&exist;",
- "&empty;",
- "&nabla;",
- "&isin;",
- "&notin;",
- "&ni;",
- "&prod;",
- "&sum;",
- "&minus;",
- "&lowast;",
- "&radic;",
- "&prop;",
- "&infin;",
- "&ang;",
- "&and;",
- "&or;",
- "&cap;",
- "&cup;",
- "&int;",
- "&there4;",
- "&sim;",
- "&cong;",
- "&asymp;",
- "&ne;",
- "&equiv;",
- "&le;",
- "&ge;",
- "&sub;",
- "&sup;",
- "&nsub;",
- "&sube;",
- "&supe;",
- "&oplus;",
- "&otimes;",
- "&perp;",
- "&sdot;",
- "&lceil;",
- "&rceil;",
- "&lfloor;",
- "&rfloor;",
- "&lang;",
- "&rang;",
- "&loz;",
- "&spades;",
- "&clubs;",
- "&hearts;",
- "&diams;",
+ "&quot;",
+ "&amp;",
+ "&lt;",
+ "&gt;",
+ "&nbsp;",
+ "&iexcl;",
+ "&cent;",
+ "&pound;",
+ "&curren;",
+ "&yen;",
+ "&brvbar;",
+ "&sect;",
+ "&uml;",
+ "&copy;",
+ "&ordf;",
+ "&laquo;",
+ "&not;",
+ "&shy;",
+ "&reg;",
+ "&macr;",
+ "&deg;",
+ "&plusmn;",
+ "&sup2;",
+ "&sup3;",
+ "&acute;",
+ "&micro;",
+ "&para;",
+ "&middot;",
+ "&cedil;",
+ "&sup1;",
+ "&ordm;",
+ "&raquo;",
+ "&frac14;",
+ "&frac12;",
+ "&frac34;",
+ "&iquest;",
+ "&Agrave;",
+ "&Aacute;",
+ "&Acirc;",
+ "&Atilde;",
+ "&Auml;",
+ "&Aring;",
+ "&AElig;",
+ "&Ccedil;",
+ "&Egrave;",
+ "&Eacute;",
+ "&Ecirc;",
+ "&Euml;",
+ "&Igrave;",
+ "&Iacute;",
+ "&Icirc;",
+ "&Iuml;",
+ "&ETH;",
+ "&Ntilde;",
+ "&Ograve;",
+ "&Oacute;",
+ "&Ocirc;",
+ "&Otilde;",
+ "&Ouml;",
+ "&times;",
+ "&Oslash;",
+ "&Ugrave;",
+ "&Uacute;",
+ "&Ucirc;",
+ "&Uuml;",
+ "&Yacute;",
+ "&THORN;",
+ "&szlig;",
+ "&agrave;",
+ "&aacute;",
+ "&acirc;",
+ "&atilde;",
+ "&auml;",
+ "&aring;",
+ "&aelig;",
+ "&ccedil;",
+ "&egrave;",
+ "&eacute;",
+ "&ecirc;",
+ "&euml;",
+ "&igrave;",
+ "&iacute;",
+ "&icirc;",
+ "&iuml;",
+ "&eth;",
+ "&ntilde;",
+ "&ograve;",
+ "&oacute;",
+ "&ocirc;",
+ "&otilde;",
+ "&ouml;",
+ "&divide;",
+ "&oslash;",
+ "&ugrave;",
+ "&uacute;",
+ "&ucirc;",
+ "&uuml;",
+ "&yacute;",
+ "&thorn;",
+ "&yuml;",
+ "&OElig;",
+ "&oelig;",
+ "&Scaron;",
+ "&scaron;",
+ "&Yuml;",
+ "&fnof;",
+ "&circ;",
+ "&tilde;",
+ "&Alpha;",
+ "&Beta;",
+ "&Gamma;",
+ "&Delta;",
+ "&Epsilon;",
+ "&Zeta;",
+ "&Eta;",
+ "&Theta;",
+ "&Iota;",
+ "&Kappa;",
+ "&Lambda;",
+ "&Mu;",
+ "&Nu;",
+ "&Xi;",
+ "&Omicron;",
+ "&Pi;",
+ "&Rho;",
+ "&Sigma;",
+ "&Tau;",
+ "&Upsilon;",
+ "&Phi;",
+ "&Chi;",
+ "&Psi;",
+ "&Omega;",
+ "&alpha;",
+ "&beta;",
+ "&gamma;",
+ "&delta;",
+ "&epsilon;",
+ "&zeta;",
+ "&eta;",
+ "&theta;",
+ "&iota;",
+ "&kappa;",
+ "&lambda;",
+ "&mu;",
+ "&nu;",
+ "&xi;",
+ "&omicron;",
+ "&pi;",
+ "&rho;",
+ "&sigmaf;",
+ "&sigma;",
+ "&tau;",
+ "&upsilon;",
+ "&phi;",
+ "&chi;",
+ "&psi;",
+ "&omega;",
+ "&thetasym;",
+ "&upsih;",
+ "&piv;",
+ "&ensp;",
+ "&emsp;",
+ "&thinsp;",
+ "&zwnj;",
+ "&zwj;",
+ "&lrm;",
+ "&rlm;",
+ "&ndash;",
+ "&mdash;",
+ "&lsquo;",
+ "&rsquo;",
+ "&sbquo;",
+ "&ldquo;",
+ "&rdquo;",
+ "&bdquo;",
+ "&dagger;",
+ "&Dagger;",
+ "&bull;",
+ "&hellip;",
+ "&permil;",
+ "&prime;",
+ "&Prime;",
+ "&lsaquo;",
+ "&rsaquo;",
+ "&oline;",
+ "&frasl;",
+ "&euro;",
+ "&image;",
+ "&weierp;",
+ "&real;",
+ "&trade;",
+ "&alefsym;",
+ "&larr;",
+ "&uarr;",
+ "&rarr;",
+ "&darr;",
+ "&harr;",
+ "&crarr;",
+ "&lArr;",
+ "&uArr;",
+ "&rArr;",
+ "&dArr;",
+ "&hArr;",
+ "&forall;",
+ "&part;",
+ "&exist;",
+ "&empty;",
+ "&nabla;",
+ "&isin;",
+ "&notin;",
+ "&ni;",
+ "&prod;",
+ "&sum;",
+ "&minus;",
+ "&lowast;",
+ "&radic;",
+ "&prop;",
+ "&infin;",
+ "&ang;",
+ "&and;",
+ "&or;",
+ "&cap;",
+ "&cup;",
+ "&int;",
+ "&there4;",
+ "&sim;",
+ "&cong;",
+ "&asymp;",
+ "&ne;",
+ "&equiv;",
+ "&le;",
+ "&ge;",
+ "&sub;",
+ "&sup;",
+ "&nsub;",
+ "&sube;",
+ "&supe;",
+ "&oplus;",
+ "&otimes;",
+ "&perp;",
+ "&sdot;",
+ "&lceil;",
+ "&rceil;",
+ "&lfloor;",
+ "&rfloor;",
+ "&lang;",
+ "&rang;",
+ "&loz;",
+ "&spades;",
+ "&clubs;",
+ "&hearts;",
+ "&diams;"
);
foreach ($map as $str) {
diff --git a/ext/standard/tests/strings/html_entity_decode_html5.phpt b/ext/standard/tests/strings/html_entity_decode_html5.phpt
new file mode 100644
index 0000000000..6e0d4cf167
--- /dev/null
+++ b/ext/standard/tests/strings/html_entity_decode_html5.phpt
@@ -0,0 +1,4264 @@
+--TEST--
+html_entity_decode() conformance check (HTML 5)
+--FILE--
+<?php
+$map = array(
+ "&AElig;",
+ "&AMP;",
+ "&Aacute;",
+ "&Abreve;",
+ "&Acirc;",
+ "&Acy;",
+ "&Afr;",
+ "&Agrave;",
+ "&Alpha;",
+ "&Amacr;",
+ "&And;",
+ "&Aogon;",
+ "&Aopf;",
+ "&ApplyFunction;",
+ "&Aring;",
+ "&Ascr;",
+ "&Assign;",
+ "&Atilde;",
+ "&Auml;",
+ "&Backslash;",
+ "&Barv;",
+ "&Barwed;",
+ "&Bcy;",
+ "&Because;",
+ "&Bernoullis;",
+ "&Beta;",
+ "&Bfr;",
+ "&Bopf;",
+ "&Breve;",
+ "&Bscr;",
+ "&Bumpeq;",
+ "&CHcy;",
+ "&COPY;",
+ "&Cacute;",
+ "&Cap;",
+ "&CapitalDifferentialD;",
+ "&Cayleys;",
+ "&Ccaron;",
+ "&Ccedil;",
+ "&Ccirc;",
+ "&Cconint;",
+ "&Cdot;",
+ "&Cedilla;",
+ "&CenterDot;",
+ "&Cfr;",
+ "&Chi;",
+ "&CircleDot;",
+ "&CircleMinus;",
+ "&CirclePlus;",
+ "&CircleTimes;",
+ "&ClockwiseContourIntegral;",
+ "&CloseCurlyDoubleQuote;",
+ "&CloseCurlyQuote;",
+ "&Colon;",
+ "&Colone;",
+ "&Congruent;",
+ "&Conint;",
+ "&ContourIntegral;",
+ "&Copf;",
+ "&Coproduct;",
+ "&CounterClockwiseContourIntegral;",
+ "&Cross;",
+ "&Cscr;",
+ "&Cup;",
+ "&CupCap;",
+ "&DD;",
+ "&DDotrahd;",
+ "&DJcy;",
+ "&DScy;",
+ "&DZcy;",
+ "&Dagger;",
+ "&Darr;",
+ "&Dashv;",
+ "&Dcaron;",
+ "&Dcy;",
+ "&Del;",
+ "&Delta;",
+ "&Dfr;",
+ "&DiacriticalAcute;",
+ "&DiacriticalDot;",
+ "&DiacriticalDoubleAcute;",
+ "&DiacriticalGrave;",
+ "&DiacriticalTilde;",
+ "&Diamond;",
+ "&DifferentialD;",
+ "&Dopf;",
+ "&Dot;",
+ "&DotDot;",
+ "&DotEqual;",
+ "&DoubleContourIntegral;",
+ "&DoubleDot;",
+ "&DoubleDownArrow;",
+ "&DoubleLeftArrow;",
+ "&DoubleLeftRightArrow;",
+ "&DoubleLeftTee;",
+ "&DoubleLongLeftArrow;",
+ "&DoubleLongLeftRightArrow;",
+ "&DoubleLongRightArrow;",
+ "&DoubleRightArrow;",
+ "&DoubleRightTee;",
+ "&DoubleUpArrow;",
+ "&DoubleUpDownArrow;",
+ "&DoubleVerticalBar;",
+ "&DownArrow;",
+ "&DownArrowBar;",
+ "&DownArrowUpArrow;",
+ "&DownBreve;",
+ "&DownLeftRightVector;",
+ "&DownLeftTeeVector;",
+ "&DownLeftVector;",
+ "&DownLeftVectorBar;",
+ "&DownRightTeeVector;",
+ "&DownRightVector;",
+ "&DownRightVectorBar;",
+ "&DownTee;",
+ "&DownTeeArrow;",
+ "&Downarrow;",
+ "&Dscr;",
+ "&Dstrok;",
+ "&ENG;",
+ "&ETH;",
+ "&Eacute;",
+ "&Ecaron;",
+ "&Ecirc;",
+ "&Ecy;",
+ "&Edot;",
+ "&Efr;",
+ "&Egrave;",
+ "&Element;",
+ "&Emacr;",
+ "&EmptySmallSquare;",
+ "&EmptyVerySmallSquare;",
+ "&Eogon;",
+ "&Eopf;",
+ "&Epsilon;",
+ "&Equal;",
+ "&EqualTilde;",
+ "&Equilibrium;",
+ "&Escr;",
+ "&Esim;",
+ "&Eta;",
+ "&Euml;",
+ "&Exists;",
+ "&ExponentialE;",
+ "&Fcy;",
+ "&Ffr;",
+ "&FilledSmallSquare;",
+ "&FilledVerySmallSquare;",
+ "&Fopf;",
+ "&ForAll;",
+ "&Fouriertrf;",
+ "&Fscr;",
+ "&GJcy;",
+ "&GT;",
+ "&Gamma;",
+ "&Gammad;",
+ "&Gbreve;",
+ "&Gcedil;",
+ "&Gcirc;",
+ "&Gcy;",
+ "&Gdot;",
+ "&Gfr;",
+ "&Gg;",
+ "&Gopf;",
+ "&GreaterEqual;",
+ "&GreaterEqualLess;",
+ "&GreaterFullEqual;",
+ "&GreaterGreater;",
+ "&GreaterLess;",
+ "&GreaterSlantEqual;",
+ "&GreaterTilde;",
+ "&Gscr;",
+ "&Gt;",
+ "&HARDcy;",
+ "&Hacek;",
+ "&Hat;",
+ "&Hcirc;",
+ "&Hfr;",
+ "&HilbertSpace;",
+ "&Hopf;",
+ "&HorizontalLine;",
+ "&Hscr;",
+ "&Hstrok;",
+ "&HumpDownHump;",
+ "&HumpEqual;",
+ "&IEcy;",
+ "&IJlig;",
+ "&IOcy;",
+ "&Iacute;",
+ "&Icirc;",
+ "&Icy;",
+ "&Idot;",
+ "&Ifr;",
+ "&Igrave;",
+ "&Im;",
+ "&Imacr;",
+ "&ImaginaryI;",
+ "&Implies;",
+ "&Int;",
+ "&Integral;",
+ "&Intersection;",
+ "&InvisibleComma;",
+ "&InvisibleTimes;",
+ "&Iogon;",
+ "&Iopf;",
+ "&Iota;",
+ "&Iscr;",
+ "&Itilde;",
+ "&Iukcy;",
+ "&Iuml;",
+ "&Jcirc;",
+ "&Jcy;",
+ "&Jfr;",
+ "&Jopf;",
+ "&Jscr;",
+ "&Jsercy;",
+ "&Jukcy;",
+ "&KHcy;",
+ "&KJcy;",
+ "&Kappa;",
+ "&Kcedil;",
+ "&Kcy;",
+ "&Kfr;",
+ "&Kopf;",
+ "&Kscr;",
+ "&LJcy;",
+ "&LT;",
+ "&Lacute;",
+ "&Lambda;",
+ "&Lang;",
+ "&Laplacetrf;",
+ "&Larr;",
+ "&Lcaron;",
+ "&Lcedil;",
+ "&Lcy;",
+ "&LeftAngleBracket;",
+ "&LeftArrow;",
+ "&LeftArrowBar;",
+ "&LeftArrowRightArrow;",
+ "&LeftCeiling;",
+ "&LeftDoubleBracket;",
+ "&LeftDownTeeVector;",
+ "&LeftDownVector;",
+ "&LeftDownVectorBar;",
+ "&LeftFloor;",
+ "&LeftRightArrow;",
+ "&LeftRightVector;",
+ "&LeftTee;",
+ "&LeftTeeArrow;",
+ "&LeftTeeVector;",
+ "&LeftTriangle;",
+ "&LeftTriangleBar;",
+ "&LeftTriangleEqual;",
+ "&LeftUpDownVector;",
+ "&LeftUpTeeVector;",
+ "&LeftUpVector;",
+ "&LeftUpVectorBar;",
+ "&LeftVector;",
+ "&LeftVectorBar;",
+ "&Leftarrow;",
+ "&Leftrightarrow;",
+ "&LessEqualGreater;",
+ "&LessFullEqual;",
+ "&LessGreater;",
+ "&LessLess;",
+ "&LessSlantEqual;",
+ "&LessTilde;",
+ "&Lfr;",
+ "&Ll;",
+ "&Lleftarrow;",
+ "&Lmidot;",
+ "&LongLeftArrow;",
+ "&LongLeftRightArrow;",
+ "&LongRightArrow;",
+ "&Longleftarrow;",
+ "&Longleftrightarrow;",
+ "&Longrightarrow;",
+ "&Lopf;",
+ "&LowerLeftArrow;",
+ "&LowerRightArrow;",
+ "&Lscr;",
+ "&Lsh;",
+ "&Lstrok;",
+ "&Lt;",
+ "&Map;",
+ "&Mcy;",
+ "&MediumSpace;",
+ "&Mellintrf;",
+ "&Mfr;",
+ "&MinusPlus;",
+ "&Mopf;",
+ "&Mscr;",
+ "&Mu;",
+ "&NJcy;",
+ "&Nacute;",
+ "&Ncaron;",
+ "&Ncedil;",
+ "&Ncy;",
+ "&NegativeMediumSpace;",
+ "&NegativeThickSpace;",
+ "&NegativeThinSpace;",
+ "&NegativeVeryThinSpace;",
+ "&NestedGreaterGreater;",
+ "&NestedLessLess;",
+ "&NewLine;",
+ "&Nfr;",
+ "&NoBreak;",
+ "&NonBreakingSpace;",
+ "&Nopf;",
+ "&Not;",
+ "&NotCongruent;",
+ "&NotCupCap;",
+ "&NotDoubleVerticalBar;",
+ "&NotElement;",
+ "&NotEqual;",
+ "&NotEqualTilde;",
+ "&NotExists;",
+ "&NotGreater;",
+ "&NotGreaterEqual;",
+ "&NotGreaterFullEqual;",
+ "&NotGreaterGreater;",
+ "&NotGreaterLess;",
+ "&NotGreaterSlantEqual;",
+ "&NotGreaterTilde;",
+ "&NotHumpDownHump;",
+ "&NotHumpEqual;",
+ "&NotLeftTriangle;",
+ "&NotLeftTriangleBar;",
+ "&NotLeftTriangleEqual;",
+ "&NotLess;",
+ "&NotLessEqual;",
+ "&NotLessGreater;",
+ "&NotLessLess;",
+ "&NotLessSlantEqual;",
+ "&NotLessTilde;",
+ "&NotNestedGreaterGreater;",
+ "&NotNestedLessLess;",
+ "&NotPrecedes;",
+ "&NotPrecedesEqual;",
+ "&NotPrecedesSlantEqual;",
+ "&NotReverseElement;",
+ "&NotRightTriangle;",
+ "&NotRightTriangleBar;",
+ "&NotRightTriangleEqual;",
+ "&NotSquareSubset;",
+ "&NotSquareSubsetEqual;",
+ "&NotSquareSuperset;",
+ "&NotSquareSupersetEqual;",
+ "&NotSubset;",
+ "&NotSubsetEqual;",
+ "&NotSucceeds;",
+ "&NotSucceedsEqual;",
+ "&NotSucceedsSlantEqual;",
+ "&NotSucceedsTilde;",
+ "&NotSuperset;",
+ "&NotSupersetEqual;",
+ "&NotTilde;",
+ "&NotTildeEqual;",
+ "&NotTildeFullEqual;",
+ "&NotTildeTilde;",
+ "&NotVerticalBar;",
+ "&Nscr;",
+ "&Ntilde;",
+ "&Nu;",
+ "&OElig;",
+ "&Oacute;",
+ "&Ocirc;",
+ "&Ocy;",
+ "&Odblac;",
+ "&Ofr;",
+ "&Ograve;",
+ "&Omacr;",
+ "&Omega;",
+ "&Omicron;",
+ "&Oopf;",
+ "&OpenCurlyDoubleQuote;",
+ "&OpenCurlyQuote;",
+ "&Or;",
+ "&Oscr;",
+ "&Oslash;",
+ "&Otilde;",
+ "&Otimes;",
+ "&Ouml;",
+ "&OverBar;",
+ "&OverBrace;",
+ "&OverBracket;",
+ "&OverParenthesis;",
+ "&PartialD;",
+ "&Pcy;",
+ "&Pfr;",
+ "&Phi;",
+ "&Pi;",
+ "&PlusMinus;",
+ "&Poincareplane;",
+ "&Popf;",
+ "&Pr;",
+ "&Precedes;",
+ "&PrecedesEqual;",
+ "&PrecedesSlantEqual;",
+ "&PrecedesTilde;",
+ "&Prime;",
+ "&Product;",
+ "&Proportion;",
+ "&Proportional;",
+ "&Pscr;",
+ "&Psi;",
+ "&QUOT;",
+ "&Qfr;",
+ "&Qopf;",
+ "&Qscr;",
+ "&RBarr;",
+ "&REG;",
+ "&Racute;",
+ "&Rang;",
+ "&Rarr;",
+ "&Rarrtl;",
+ "&Rcaron;",
+ "&Rcedil;",
+ "&Rcy;",
+ "&Re;",
+ "&ReverseElement;",
+ "&ReverseEquilibrium;",
+ "&ReverseUpEquilibrium;",
+ "&Rfr;",
+ "&Rho;",
+ "&RightAngleBracket;",
+ "&RightArrow;",
+ "&RightArrowBar;",
+ "&RightArrowLeftArrow;",
+ "&RightCeiling;",
+ "&RightDoubleBracket;",
+ "&RightDownTeeVector;",
+ "&RightDownVector;",
+ "&RightDownVectorBar;",
+ "&RightFloor;",
+ "&RightTee;",
+ "&RightTeeArrow;",
+ "&RightTeeVector;",
+ "&RightTriangle;",
+ "&RightTriangleBar;",
+ "&RightTriangleEqual;",
+ "&RightUpDownVector;",
+ "&RightUpTeeVector;",
+ "&RightUpVector;",
+ "&RightUpVectorBar;",
+ "&RightVector;",
+ "&RightVectorBar;",
+ "&Rightarrow;",
+ "&Ropf;",
+ "&RoundImplies;",
+ "&Rrightarrow;",
+ "&Rscr;",
+ "&Rsh;",
+ "&RuleDelayed;",
+ "&SHCHcy;",
+ "&SHcy;",
+ "&SOFTcy;",
+ "&Sacute;",
+ "&Sc;",
+ "&Scaron;",
+ "&Scedil;",
+ "&Scirc;",
+ "&Scy;",
+ "&Sfr;",
+ "&ShortDownArrow;",
+ "&ShortLeftArrow;",
+ "&ShortRightArrow;",
+ "&ShortUpArrow;",
+ "&Sigma;",
+ "&SmallCircle;",
+ "&Sopf;",
+ "&Sqrt;",
+ "&Square;",
+ "&SquareIntersection;",
+ "&SquareSubset;",
+ "&SquareSubsetEqual;",
+ "&SquareSuperset;",
+ "&SquareSupersetEqual;",
+ "&SquareUnion;",
+ "&Sscr;",
+ "&Star;",
+ "&Sub;",
+ "&Subset;",
+ "&SubsetEqual;",
+ "&Succeeds;",
+ "&SucceedsEqual;",
+ "&SucceedsSlantEqual;",
+ "&SucceedsTilde;",
+ "&SuchThat;",
+ "&Sum;",
+ "&Sup;",
+ "&Superset;",
+ "&SupersetEqual;",
+ "&Supset;",
+ "&THORN;",
+ "&TRADE;",
+ "&TSHcy;",
+ "&TScy;",
+ "&Tab;",
+ "&Tau;",
+ "&Tcaron;",
+ "&Tcedil;",
+ "&Tcy;",
+ "&Tfr;",
+ "&Therefore;",
+ "&Theta;",
+ "&ThickSpace;",
+ "&ThinSpace;",
+ "&Tilde;",
+ "&TildeEqual;",
+ "&TildeFullEqual;",
+ "&TildeTilde;",
+ "&Topf;",
+ "&TripleDot;",
+ "&Tscr;",
+ "&Tstrok;",
+ "&Uacute;",
+ "&Uarr;",
+ "&Uarrocir;",
+ "&Ubrcy;",
+ "&Ubreve;",
+ "&Ucirc;",
+ "&Ucy;",
+ "&Udblac;",
+ "&Ufr;",
+ "&Ugrave;",
+ "&Umacr;",
+ "&UnderBar;",
+ "&UnderBrace;",
+ "&UnderBracket;",
+ "&UnderParenthesis;",
+ "&Union;",
+ "&UnionPlus;",
+ "&Uogon;",
+ "&Uopf;",
+ "&UpArrow;",
+ "&UpArrowBar;",
+ "&UpArrowDownArrow;",
+ "&UpDownArrow;",
+ "&UpEquilibrium;",
+ "&UpTee;",
+ "&UpTeeArrow;",
+ "&Uparrow;",
+ "&Updownarrow;",
+ "&UpperLeftArrow;",
+ "&UpperRightArrow;",
+ "&Upsi;",
+ "&Upsilon;",
+ "&Uring;",
+ "&Uscr;",
+ "&Utilde;",
+ "&Uuml;",
+ "&VDash;",
+ "&Vbar;",
+ "&Vcy;",
+ "&Vdash;",
+ "&Vdashl;",
+ "&Vee;",
+ "&Verbar;",
+ "&Vert;",
+ "&VerticalBar;",
+ "&VerticalLine;",
+ "&VerticalSeparator;",
+ "&VerticalTilde;",
+ "&VeryThinSpace;",
+ "&Vfr;",
+ "&Vopf;",
+ "&Vscr;",
+ "&Vvdash;",
+ "&Wcirc;",
+ "&Wedge;",
+ "&Wfr;",
+ "&Wopf;",
+ "&Wscr;",
+ "&Xfr;",
+ "&Xi;",
+ "&Xopf;",
+ "&Xscr;",
+ "&YAcy;",
+ "&YIcy;",
+ "&YUcy;",
+ "&Yacute;",
+ "&Ycirc;",
+ "&Ycy;",
+ "&Yfr;",
+ "&Yopf;",
+ "&Yscr;",
+ "&Yuml;",
+ "&ZHcy;",
+ "&Zacute;",
+ "&Zcaron;",
+ "&Zcy;",
+ "&Zdot;",
+ "&ZeroWidthSpace;",
+ "&Zeta;",
+ "&Zfr;",
+ "&Zopf;",
+ "&Zscr;",
+ "&aacute;",
+ "&abreve;",
+ "&ac;",
+ "&acE;",
+ "&acd;",
+ "&acirc;",
+ "&acute;",
+ "&acy;",
+ "&aelig;",
+ "&af;",
+ "&afr;",
+ "&agrave;",
+ "&alefsym;",
+ "&aleph;",
+ "&alpha;",
+ "&amacr;",
+ "&amalg;",
+ "&amp;",
+ "&and;",
+ "&andand;",
+ "&andd;",
+ "&andslope;",
+ "&andv;",
+ "&ang;",
+ "&ange;",
+ "&angle;",
+ "&angmsd;",
+ "&angmsdaa;",
+ "&angmsdab;",
+ "&angmsdac;",
+ "&angmsdad;",
+ "&angmsdae;",
+ "&angmsdaf;",
+ "&angmsdag;",
+ "&angmsdah;",
+ "&angrt;",
+ "&angrtvb;",
+ "&angrtvbd;",
+ "&angsph;",
+ "&angst;",
+ "&angzarr;",
+ "&aogon;",
+ "&aopf;",
+ "&ap;",
+ "&apE;",
+ "&apacir;",
+ "&ape;",
+ "&apid;",
+ "&apos;",
+ "&approx;",
+ "&approxeq;",
+ "&aring;",
+ "&ascr;",
+ "&ast;",
+ "&asymp;",
+ "&asympeq;",
+ "&atilde;",
+ "&auml;",
+ "&awconint;",
+ "&awint;",
+ "&bNot;",
+ "&backcong;",
+ "&backepsilon;",
+ "&backprime;",
+ "&backsim;",
+ "&backsimeq;",
+ "&barvee;",
+ "&barwed;",
+ "&barwedge;",
+ "&bbrk;",
+ "&bbrktbrk;",
+ "&bcong;",
+ "&bcy;",
+ "&bdquo;",
+ "&becaus;",
+ "&because;",
+ "&bemptyv;",
+ "&bepsi;",
+ "&bernou;",
+ "&beta;",
+ "&beth;",
+ "&between;",
+ "&bfr;",
+ "&bigcap;",
+ "&bigcirc;",
+ "&bigcup;",
+ "&bigodot;",
+ "&bigoplus;",
+ "&bigotimes;",
+ "&bigsqcup;",
+ "&bigstar;",
+ "&bigtriangledown;",
+ "&bigtriangleup;",
+ "&biguplus;",
+ "&bigvee;",
+ "&bigwedge;",
+ "&bkarow;",
+ "&blacklozenge;",
+ "&blacksquare;",
+ "&blacktriangle;",
+ "&blacktriangledown;",
+ "&blacktriangleleft;",
+ "&blacktriangleright;",
+ "&blank;",
+ "&blk12;",
+ "&blk14;",
+ "&blk34;",
+ "&block;",
+ "&bne;",
+ "&bnequiv;",
+ "&bnot;",
+ "&bopf;",
+ "&bot;",
+ "&bottom;",
+ "&bowtie;",
+ "&boxDL;",
+ "&boxDR;",
+ "&boxDl;",
+ "&boxDr;",
+ "&boxH;",
+ "&boxHD;",
+ "&boxHU;",
+ "&boxHd;",
+ "&boxHu;",
+ "&boxUL;",
+ "&boxUR;",
+ "&boxUl;",
+ "&boxUr;",
+ "&boxV;",
+ "&boxVH;",
+ "&boxVL;",
+ "&boxVR;",
+ "&boxVh;",
+ "&boxVl;",
+ "&boxVr;",
+ "&boxbox;",
+ "&boxdL;",
+ "&boxdR;",
+ "&boxdl;",
+ "&boxdr;",
+ "&boxh;",
+ "&boxhD;",
+ "&boxhU;",
+ "&boxhd;",
+ "&boxhu;",
+ "&boxminus;",
+ "&boxplus;",
+ "&boxtimes;",
+ "&boxuL;",
+ "&boxuR;",
+ "&boxul;",
+ "&boxur;",
+ "&boxv;",
+ "&boxvH;",
+ "&boxvL;",
+ "&boxvR;",
+ "&boxvh;",
+ "&boxvl;",
+ "&boxvr;",
+ "&bprime;",
+ "&breve;",
+ "&brvbar;",
+ "&bscr;",
+ "&bsemi;",
+ "&bsim;",
+ "&bsime;",
+ "&bsol;",
+ "&bsolb;",
+ "&bsolhsub;",
+ "&bull;",
+ "&bullet;",
+ "&bump;",
+ "&bumpE;",
+ "&bumpe;",
+ "&bumpeq;",
+ "&cacute;",
+ "&cap;",
+ "&capand;",
+ "&capbrcup;",
+ "&capcap;",
+ "&capcup;",
+ "&capdot;",
+ "&caps;",
+ "&caret;",
+ "&caron;",
+ "&ccaps;",
+ "&ccaron;",
+ "&ccedil;",
+ "&ccirc;",
+ "&ccups;",
+ "&ccupssm;",
+ "&cdot;",
+ "&cedil;",
+ "&cemptyv;",
+ "&cent;",
+ "&centerdot;",
+ "&cfr;",
+ "&chcy;",
+ "&check;",
+ "&checkmark;",
+ "&chi;",
+ "&cir;",
+ "&cirE;",
+ "&circ;",
+ "&circeq;",
+ "&circlearrowleft;",
+ "&circlearrowright;",
+ "&circledR;",
+ "&circledS;",
+ "&circledast;",
+ "&circledcirc;",
+ "&circleddash;",
+ "&cire;",
+ "&cirfnint;",
+ "&cirmid;",
+ "&cirscir;",
+ "&clubs;",
+ "&clubsuit;",
+ "&colon;",
+ "&colone;",
+ "&coloneq;",
+ "&comma;",
+ "&commat;",
+ "&comp;",
+ "&compfn;",
+ "&complement;",
+ "&complexes;",
+ "&cong;",
+ "&congdot;",
+ "&conint;",
+ "&copf;",
+ "&coprod;",
+ "&copy;",
+ "&copysr;",
+ "&crarr;",
+ "&cross;",
+ "&cscr;",
+ "&csub;",
+ "&csube;",
+ "&csup;",
+ "&csupe;",
+ "&ctdot;",
+ "&cudarrl;",
+ "&cudarrr;",
+ "&cuepr;",
+ "&cuesc;",
+ "&cularr;",
+ "&cularrp;",
+ "&cup;",
+ "&cupbrcap;",
+ "&cupcap;",
+ "&cupcup;",
+ "&cupdot;",
+ "&cupor;",
+ "&cups;",
+ "&curarr;",
+ "&curarrm;",
+ "&curlyeqprec;",
+ "&curlyeqsucc;",
+ "&curlyvee;",
+ "&curlywedge;",
+ "&curren;",
+ "&curvearrowleft;",
+ "&curvearrowright;",
+ "&cuvee;",
+ "&cuwed;",
+ "&cwconint;",
+ "&cwint;",
+ "&cylcty;",
+ "&dArr;",
+ "&dHar;",
+ "&dagger;",
+ "&daleth;",
+ "&darr;",
+ "&dash;",
+ "&dashv;",
+ "&dbkarow;",
+ "&dblac;",
+ "&dcaron;",
+ "&dcy;",
+ "&dd;",
+ "&ddagger;",
+ "&ddarr;",
+ "&ddotseq;",
+ "&deg;",
+ "&delta;",
+ "&demptyv;",
+ "&dfisht;",
+ "&dfr;",
+ "&dharl;",
+ "&dharr;",
+ "&diam;",
+ "&diamond;",
+ "&diamondsuit;",
+ "&diams;",
+ "&die;",
+ "&digamma;",
+ "&disin;",
+ "&div;",
+ "&divide;",
+ "&divideontimes;",
+ "&divonx;",
+ "&djcy;",
+ "&dlcorn;",
+ "&dlcrop;",
+ "&dollar;",
+ "&dopf;",
+ "&dot;",
+ "&doteq;",
+ "&doteqdot;",
+ "&dotminus;",
+ "&dotplus;",
+ "&dotsquare;",
+ "&doublebarwedge;",
+ "&downarrow;",
+ "&downdownarrows;",
+ "&downharpoonleft;",
+ "&downharpoonright;",
+ "&drbkarow;",
+ "&drcorn;",
+ "&drcrop;",
+ "&dscr;",
+ "&dscy;",
+ "&dsol;",
+ "&dstrok;",
+ "&dtdot;",
+ "&dtri;",
+ "&dtrif;",
+ "&duarr;",
+ "&duhar;",
+ "&dwangle;",
+ "&dzcy;",
+ "&dzigrarr;",
+ "&eDDot;",
+ "&eDot;",
+ "&eacute;",
+ "&easter;",
+ "&ecaron;",
+ "&ecir;",
+ "&ecirc;",
+ "&ecolon;",
+ "&ecy;",
+ "&edot;",
+ "&ee;",
+ "&efDot;",
+ "&efr;",
+ "&eg;",
+ "&egrave;",
+ "&egs;",
+ "&egsdot;",
+ "&el;",
+ "&elinters;",
+ "&ell;",
+ "&els;",
+ "&elsdot;",
+ "&emacr;",
+ "&empty;",
+ "&emptyset;",
+ "&emptyv;",
+ "&emsp;",
+ "&emsp13;",
+ "&emsp14;",
+ "&eng;",
+ "&ensp;",
+ "&eogon;",
+ "&eopf;",
+ "&epar;",
+ "&eparsl;",
+ "&eplus;",
+ "&epsi;",
+ "&epsilon;",
+ "&epsiv;",
+ "&eqcirc;",
+ "&eqcolon;",
+ "&eqsim;",
+ "&eqslantgtr;",
+ "&eqslantless;",
+ "&equals;",
+ "&equest;",
+ "&equiv;",
+ "&equivDD;",
+ "&eqvparsl;",
+ "&erDot;",
+ "&erarr;",
+ "&escr;",
+ "&esdot;",
+ "&esim;",
+ "&eta;",
+ "&eth;",
+ "&euml;",
+ "&euro;",
+ "&excl;",
+ "&exist;",
+ "&expectation;",
+ "&exponentiale;",
+ "&fallingdotseq;",
+ "&fcy;",
+ "&female;",
+ "&ffilig;",
+ "&fflig;",
+ "&ffllig;",
+ "&ffr;",
+ "&filig;",
+ "&fjlig;",
+ "&flat;",
+ "&fllig;",
+ "&fltns;",
+ "&fnof;",
+ "&fopf;",
+ "&forall;",
+ "&fork;",
+ "&forkv;",
+ "&fpartint;",
+ "&frac12;",
+ "&frac13;",
+ "&frac14;",
+ "&frac15;",
+ "&frac16;",
+ "&frac18;",
+ "&frac23;",
+ "&frac25;",
+ "&frac34;",
+ "&frac35;",
+ "&frac38;",
+ "&frac45;",
+ "&frac56;",
+ "&frac58;",
+ "&frac78;",
+ "&frasl;",
+ "&frown;",
+ "&fscr;",
+ "&gE;",
+ "&gEl;",
+ "&gacute;",
+ "&gamma;",
+ "&gammad;",
+ "&gap;",
+ "&gbreve;",
+ "&gcirc;",
+ "&gcy;",
+ "&gdot;",
+ "&ge;",
+ "&gel;",
+ "&geq;",
+ "&geqq;",
+ "&geqslant;",
+ "&ges;",
+ "&gescc;",
+ "&gesdot;",
+ "&gesdoto;",
+ "&gesdotol;",
+ "&gesl;",
+ "&gesles;",
+ "&gfr;",
+ "&gg;",
+ "&ggg;",
+ "&gimel;",
+ "&gjcy;",
+ "&gl;",
+ "&glE;",
+ "&gla;",
+ "&glj;",
+ "&gnE;",
+ "&gnap;",
+ "&gnapprox;",
+ "&gne;",
+ "&gneq;",
+ "&gneqq;",
+ "&gnsim;",
+ "&gopf;",
+ "&grave;",
+ "&gscr;",
+ "&gsim;",
+ "&gsime;",
+ "&gsiml;",
+ "&gt;",
+ "&gtcc;",
+ "&gtcir;",
+ "&gtdot;",
+ "&gtlPar;",
+ "&gtquest;",
+ "&gtrapprox;",
+ "&gtrarr;",
+ "&gtrdot;",
+ "&gtreqless;",
+ "&gtreqqless;",
+ "&gtrless;",
+ "&gtrsim;",
+ "&gvertneqq;",
+ "&gvnE;",
+ "&hArr;",
+ "&hairsp;",
+ "&half;",
+ "&hamilt;",
+ "&hardcy;",
+ "&harr;",
+ "&harrcir;",
+ "&harrw;",
+ "&hbar;",
+ "&hcirc;",
+ "&hearts;",
+ "&heartsuit;",
+ "&hellip;",
+ "&hercon;",
+ "&hfr;",
+ "&hksearow;",
+ "&hkswarow;",
+ "&hoarr;",
+ "&homtht;",
+ "&hookleftarrow;",
+ "&hookrightarrow;",
+ "&hopf;",
+ "&horbar;",
+ "&hscr;",
+ "&hslash;",
+ "&hstrok;",
+ "&hybull;",
+ "&hyphen;",
+ "&iacute;",
+ "&ic;",
+ "&icirc;",
+ "&icy;",
+ "&iecy;",
+ "&iexcl;",
+ "&iff;",
+ "&ifr;",
+ "&igrave;",
+ "&ii;",
+ "&iiiint;",
+ "&iiint;",
+ "&iinfin;",
+ "&iiota;",
+ "&ijlig;",
+ "&imacr;",
+ "&image;",
+ "&imagline;",
+ "&imagpart;",
+ "&imath;",
+ "&imof;",
+ "&imped;",
+ "&in;",
+ "&incare;",
+ "&infin;",
+ "&infintie;",
+ "&inodot;",
+ "&int;",
+ "&intcal;",
+ "&integers;",
+ "&intercal;",
+ "&intlarhk;",
+ "&intprod;",
+ "&iocy;",
+ "&iogon;",
+ "&iopf;",
+ "&iota;",
+ "&iprod;",
+ "&iquest;",
+ "&iscr;",
+ "&isin;",
+ "&isinE;",
+ "&isindot;",
+ "&isins;",
+ "&isinsv;",
+ "&isinv;",
+ "&it;",
+ "&itilde;",
+ "&iukcy;",
+ "&iuml;",
+ "&jcirc;",
+ "&jcy;",
+ "&jfr;",
+ "&jmath;",
+ "&jopf;",
+ "&jscr;",
+ "&jsercy;",
+ "&jukcy;",
+ "&kappa;",
+ "&kappav;",
+ "&kcedil;",
+ "&kcy;",
+ "&kfr;",
+ "&kgreen;",
+ "&khcy;",
+ "&kjcy;",
+ "&kopf;",
+ "&kscr;",
+ "&lAarr;",
+ "&lArr;",
+ "&lAtail;",
+ "&lBarr;",
+ "&lE;",
+ "&lEg;",
+ "&lHar;",
+ "&lacute;",
+ "&laemptyv;",
+ "&lagran;",
+ "&lambda;",
+ "&lang;",
+ "&langd;",
+ "&langle;",
+ "&lap;",
+ "&laquo;",
+ "&larr;",
+ "&larrb;",
+ "&larrbfs;",
+ "&larrfs;",
+ "&larrhk;",
+ "&larrlp;",
+ "&larrpl;",
+ "&larrsim;",
+ "&larrtl;",
+ "&lat;",
+ "&latail;",
+ "&late;",
+ "&lates;",
+ "&lbarr;",
+ "&lbbrk;",
+ "&lbrace;",
+ "&lbrack;",
+ "&lbrke;",
+ "&lbrksld;",
+ "&lbrkslu;",
+ "&lcaron;",
+ "&lcedil;",
+ "&lceil;",
+ "&lcub;",
+ "&lcy;",
+ "&ldca;",
+ "&ldquo;",
+ "&ldquor;",
+ "&ldrdhar;",
+ "&ldrushar;",
+ "&ldsh;",
+ "&le;",
+ "&leftarrow;",
+ "&leftarrowtail;",
+ "&leftharpoondown;",
+ "&leftharpoonup;",
+ "&leftleftarrows;",
+ "&leftrightarrow;",
+ "&leftrightarrows;",
+ "&leftrightharpoons;",
+ "&leftrightsquigarrow;",
+ "&leftthreetimes;",
+ "&leg;",
+ "&leq;",
+ "&leqq;",
+ "&leqslant;",
+ "&les;",
+ "&lescc;",
+ "&lesdot;",
+ "&lesdoto;",
+ "&lesdotor;",
+ "&lesg;",
+ "&lesges;",
+ "&lessapprox;",
+ "&lessdot;",
+ "&lesseqgtr;",
+ "&lesseqqgtr;",
+ "&lessgtr;",
+ "&lesssim;",
+ "&lfisht;",
+ "&lfloor;",
+ "&lfr;",
+ "&lg;",
+ "&lgE;",
+ "&lhard;",
+ "&lharu;",
+ "&lharul;",
+ "&lhblk;",
+ "&ljcy;",
+ "&ll;",
+ "&llarr;",
+ "&llcorner;",
+ "&llhard;",
+ "&lltri;",
+ "&lmidot;",
+ "&lmoust;",
+ "&lmoustache;",
+ "&lnE;",
+ "&lnap;",
+ "&lnapprox;",
+ "&lne;",
+ "&lneq;",
+ "&lneqq;",
+ "&lnsim;",
+ "&loang;",
+ "&loarr;",
+ "&lobrk;",
+ "&longleftarrow;",
+ "&longleftrightarrow;",
+ "&longmapsto;",
+ "&longrightarrow;",
+ "&looparrowleft;",
+ "&looparrowright;",
+ "&lopar;",
+ "&lopf;",
+ "&loplus;",
+ "&lotimes;",
+ "&lowast;",
+ "&lowbar;",
+ "&loz;",
+ "&lozenge;",
+ "&lozf;",
+ "&lpar;",
+ "&lparlt;",
+ "&lrarr;",
+ "&lrcorner;",
+ "&lrhar;",
+ "&lrhard;",
+ "&lrm;",
+ "&lrtri;",
+ "&lsaquo;",
+ "&lscr;",
+ "&lsh;",
+ "&lsim;",
+ "&lsime;",
+ "&lsimg;",
+ "&lsqb;",
+ "&lsquo;",
+ "&lsquor;",
+ "&lstrok;",
+ "&lt;",
+ "&ltcc;",
+ "&ltcir;",
+ "&ltdot;",
+ "&lthree;",
+ "&ltimes;",
+ "&ltlarr;",
+ "&ltquest;",
+ "&ltrPar;",
+ "&ltri;",
+ "&ltrie;",
+ "&ltrif;",
+ "&lurdshar;",
+ "&luruhar;",
+ "&lvertneqq;",
+ "&lvnE;",
+ "&mDDot;",
+ "&macr;",
+ "&male;",
+ "&malt;",
+ "&maltese;",
+ "&map;",
+ "&mapsto;",
+ "&mapstodown;",
+ "&mapstoleft;",
+ "&mapstoup;",
+ "&marker;",
+ "&mcomma;",
+ "&mcy;",
+ "&mdash;",
+ "&measuredangle;",
+ "&mfr;",
+ "&mho;",
+ "&micro;",
+ "&mid;",
+ "&midast;",
+ "&midcir;",
+ "&middot;",
+ "&minus;",
+ "&minusb;",
+ "&minusd;",
+ "&minusdu;",
+ "&mlcp;",
+ "&mldr;",
+ "&mnplus;",
+ "&models;",
+ "&mopf;",
+ "&mp;",
+ "&mscr;",
+ "&mstpos;",
+ "&mu;",
+ "&multimap;",
+ "&mumap;",
+ "&nGg;",
+ "&nGt;",
+ "&nGtv;",
+ "&nLeftarrow;",
+ "&nLeftrightarrow;",
+ "&nLl;",
+ "&nLt;",
+ "&nLtv;",
+ "&nRightarrow;",
+ "&nVDash;",
+ "&nVdash;",
+ "&nabla;",
+ "&nacute;",
+ "&nang;",
+ "&nap;",
+ "&napE;",
+ "&napid;",
+ "&napos;",
+ "&napprox;",
+ "&natur;",
+ "&natural;",
+ "&naturals;",
+ "&nbsp;",
+ "&nbump;",
+ "&nbumpe;",
+ "&ncap;",
+ "&ncaron;",
+ "&ncedil;",
+ "&ncong;",
+ "&ncongdot;",
+ "&ncup;",
+ "&ncy;",
+ "&ndash;",
+ "&ne;",
+ "&neArr;",
+ "&nearhk;",
+ "&nearr;",
+ "&nearrow;",
+ "&nedot;",
+ "&nequiv;",
+ "&nesear;",
+ "&nesim;",
+ "&nexist;",
+ "&nexists;",
+ "&nfr;",
+ "&ngE;",
+ "&nge;",
+ "&ngeq;",
+ "&ngeqq;",
+ "&ngeqslant;",
+ "&nges;",
+ "&ngsim;",
+ "&ngt;",
+ "&ngtr;",
+ "&nhArr;",
+ "&nharr;",
+ "&nhpar;",
+ "&ni;",
+ "&nis;",
+ "&nisd;",
+ "&niv;",
+ "&njcy;",
+ "&nlArr;",
+ "&nlE;",
+ "&nlarr;",
+ "&nldr;",
+ "&nle;",
+ "&nleftarrow;",
+ "&nleftrightarrow;",
+ "&nleq;",
+ "&nleqq;",
+ "&nleqslant;",
+ "&nles;",
+ "&nless;",
+ "&nlsim;",
+ "&nlt;",
+ "&nltri;",
+ "&nltrie;",
+ "&nmid;",
+ "&nopf;",
+ "&not;",
+ "&notin;",
+ "&notinE;",
+ "&notindot;",
+ "&notinva;",
+ "&notinvb;",
+ "&notinvc;",
+ "&notni;",
+ "&notniva;",
+ "&notnivb;",
+ "&notnivc;",
+ "&npar;",
+ "&nparallel;",
+ "&nparsl;",
+ "&npart;",
+ "&npolint;",
+ "&npr;",
+ "&nprcue;",
+ "&npre;",
+ "&nprec;",
+ "&npreceq;",
+ "&nrArr;",
+ "&nrarr;",
+ "&nrarrc;",
+ "&nrarrw;",
+ "&nrightarrow;",
+ "&nrtri;",
+ "&nrtrie;",
+ "&nsc;",
+ "&nsccue;",
+ "&nsce;",
+ "&nscr;",
+ "&nshortmid;",
+ "&nshortparallel;",
+ "&nsim;",
+ "&nsime;",
+ "&nsimeq;",
+ "&nsmid;",
+ "&nspar;",
+ "&nsqsube;",
+ "&nsqsupe;",
+ "&nsub;",
+ "&nsubE;",
+ "&nsube;",
+ "&nsubset;",
+ "&nsubseteq;",
+ "&nsubseteqq;",
+ "&nsucc;",
+ "&nsucceq;",
+ "&nsup;",
+ "&nsupE;",
+ "&nsupe;",
+ "&nsupset;",
+ "&nsupseteq;",
+ "&nsupseteqq;",
+ "&ntgl;",
+ "&ntilde;",
+ "&ntlg;",
+ "&ntriangleleft;",
+ "&ntrianglelefteq;",
+ "&ntriangleright;",
+ "&ntrianglerighteq;",
+ "&nu;",
+ "&num;",
+ "&numero;",
+ "&numsp;",
+ "&nvDash;",
+ "&nvHarr;",
+ "&nvap;",
+ "&nvdash;",
+ "&nvge;",
+ "&nvgt;",
+ "&nvinfin;",
+ "&nvlArr;",
+ "&nvle;",
+ "&nvlt;",
+ "&nvltrie;",
+ "&nvrArr;",
+ "&nvrtrie;",
+ "&nvsim;",
+ "&nwArr;",
+ "&nwarhk;",
+ "&nwarr;",
+ "&nwarrow;",
+ "&nwnear;",
+ "&oS;",
+ "&oacute;",
+ "&oast;",
+ "&ocir;",
+ "&ocirc;",
+ "&ocy;",
+ "&odash;",
+ "&odblac;",
+ "&odiv;",
+ "&odot;",
+ "&odsold;",
+ "&oelig;",
+ "&ofcir;",
+ "&ofr;",
+ "&ogon;",
+ "&ograve;",
+ "&ogt;",
+ "&ohbar;",
+ "&ohm;",
+ "&oint;",
+ "&olarr;",
+ "&olcir;",
+ "&olcross;",
+ "&oline;",
+ "&olt;",
+ "&omacr;",
+ "&omega;",
+ "&omicron;",
+ "&omid;",
+ "&ominus;",
+ "&oopf;",
+ "&opar;",
+ "&operp;",
+ "&oplus;",
+ "&or;",
+ "&orarr;",
+ "&ord;",
+ "&order;",
+ "&orderof;",
+ "&ordf;",
+ "&ordm;",
+ "&origof;",
+ "&oror;",
+ "&orslope;",
+ "&orv;",
+ "&oscr;",
+ "&oslash;",
+ "&osol;",
+ "&otilde;",
+ "&otimes;",
+ "&otimesas;",
+ "&ouml;",
+ "&ovbar;",
+ "&par;",
+ "&para;",
+ "&parallel;",
+ "&parsim;",
+ "&parsl;",
+ "&part;",
+ "&pcy;",
+ "&percnt;",
+ "&period;",
+ "&permil;",
+ "&perp;",
+ "&pertenk;",
+ "&pfr;",
+ "&phi;",
+ "&phiv;",
+ "&phmmat;",
+ "&phone;",
+ "&pi;",
+ "&pitchfork;",
+ "&piv;",
+ "&planck;",
+ "&planckh;",
+ "&plankv;",
+ "&plus;",
+ "&plusacir;",
+ "&plusb;",
+ "&pluscir;",
+ "&plusdo;",
+ "&plusdu;",
+ "&pluse;",
+ "&plusmn;",
+ "&plussim;",
+ "&plustwo;",
+ "&pm;",
+ "&pointint;",
+ "&popf;",
+ "&pound;",
+ "&pr;",
+ "&prE;",
+ "&prap;",
+ "&prcue;",
+ "&pre;",
+ "&prec;",
+ "&precapprox;",
+ "&preccurlyeq;",
+ "&preceq;",
+ "&precnapprox;",
+ "&precneqq;",
+ "&precnsim;",
+ "&precsim;",
+ "&prime;",
+ "&primes;",
+ "&prnE;",
+ "&prnap;",
+ "&prnsim;",
+ "&prod;",
+ "&profalar;",
+ "&profline;",
+ "&profsurf;",
+ "&prop;",
+ "&propto;",
+ "&prsim;",
+ "&prurel;",
+ "&pscr;",
+ "&psi;",
+ "&puncsp;",
+ "&qfr;",
+ "&qint;",
+ "&qopf;",
+ "&qprime;",
+ "&qscr;",
+ "&quaternions;",
+ "&quatint;",
+ "&quest;",
+ "&questeq;",
+ "&quot;",
+ "&rAarr;",
+ "&rArr;",
+ "&rAtail;",
+ "&rBarr;",
+ "&rHar;",
+ "&race;",
+ "&racute;",
+ "&radic;",
+ "&raemptyv;",
+ "&rang;",
+ "&rangd;",
+ "&range;",
+ "&rangle;",
+ "&raquo;",
+ "&rarr;",
+ "&rarrap;",
+ "&rarrb;",
+ "&rarrbfs;",
+ "&rarrc;",
+ "&rarrfs;",
+ "&rarrhk;",
+ "&rarrlp;",
+ "&rarrpl;",
+ "&rarrsim;",
+ "&rarrtl;",
+ "&rarrw;",
+ "&ratail;",
+ "&ratio;",
+ "&rationals;",
+ "&rbarr;",
+ "&rbbrk;",
+ "&rbrace;",
+ "&rbrack;",
+ "&rbrke;",
+ "&rbrksld;",
+ "&rbrkslu;",
+ "&rcaron;",
+ "&rcedil;",
+ "&rceil;",
+ "&rcub;",
+ "&rcy;",
+ "&rdca;",
+ "&rdldhar;",
+ "&rdquo;",
+ "&rdquor;",
+ "&rdsh;",
+ "&real;",
+ "&realine;",
+ "&realpart;",
+ "&reals;",
+ "&rect;",
+ "&reg;",
+ "&rfisht;",
+ "&rfloor;",
+ "&rfr;",
+ "&rhard;",
+ "&rharu;",
+ "&rharul;",
+ "&rho;",
+ "&rhov;",
+ "&rightarrow;",
+ "&rightarrowtail;",
+ "&rightharpoondown;",
+ "&rightharpoonup;",
+ "&rightleftarrows;",
+ "&rightleftharpoons;",
+ "&rightrightarrows;",
+ "&rightsquigarrow;",
+ "&rightthreetimes;",
+ "&ring;",
+ "&risingdotseq;",
+ "&rlarr;",
+ "&rlhar;",
+ "&rlm;",
+ "&rmoust;",
+ "&rmoustache;",
+ "&rnmid;",
+ "&roang;",
+ "&roarr;",
+ "&robrk;",
+ "&ropar;",
+ "&ropf;",
+ "&roplus;",
+ "&rotimes;",
+ "&rpar;",
+ "&rpargt;",
+ "&rppolint;",
+ "&rrarr;",
+ "&rsaquo;",
+ "&rscr;",
+ "&rsh;",
+ "&rsqb;",
+ "&rsquo;",
+ "&rsquor;",
+ "&rthree;",
+ "&rtimes;",
+ "&rtri;",
+ "&rtrie;",
+ "&rtrif;",
+ "&rtriltri;",
+ "&ruluhar;",
+ "&rx;",
+ "&sacute;",
+ "&sbquo;",
+ "&sc;",
+ "&scE;",
+ "&scap;",
+ "&scaron;",
+ "&sccue;",
+ "&sce;",
+ "&scedil;",
+ "&scirc;",
+ "&scnE;",
+ "&scnap;",
+ "&scnsim;",
+ "&scpolint;",
+ "&scsim;",
+ "&scy;",
+ "&sdot;",
+ "&sdotb;",
+ "&sdote;",
+ "&seArr;",
+ "&searhk;",
+ "&searr;",
+ "&searrow;",
+ "&sect;",
+ "&semi;",
+ "&seswar;",
+ "&setminus;",
+ "&setmn;",
+ "&sext;",
+ "&sfr;",
+ "&sfrown;",
+ "&sharp;",
+ "&shchcy;",
+ "&shcy;",
+ "&shortmid;",
+ "&shortparallel;",
+ "&shy;",
+ "&sigma;",
+ "&sigmaf;",
+ "&sigmav;",
+ "&sim;",
+ "&simdot;",
+ "&sime;",
+ "&simeq;",
+ "&simg;",
+ "&simgE;",
+ "&siml;",
+ "&simlE;",
+ "&simne;",
+ "&simplus;",
+ "&simrarr;",
+ "&slarr;",
+ "&smallsetminus;",
+ "&smashp;",
+ "&smeparsl;",
+ "&smid;",
+ "&smile;",
+ "&smt;",
+ "&smte;",
+ "&smtes;",
+ "&softcy;",
+ "&sol;",
+ "&solb;",
+ "&solbar;",
+ "&sopf;",
+ "&spades;",
+ "&spadesuit;",
+ "&spar;",
+ "&sqcap;",
+ "&sqcaps;",
+ "&sqcup;",
+ "&sqcups;",
+ "&sqsub;",
+ "&sqsube;",
+ "&sqsubset;",
+ "&sqsubseteq;",
+ "&sqsup;",
+ "&sqsupe;",
+ "&sqsupset;",
+ "&sqsupseteq;",
+ "&squ;",
+ "&square;",
+ "&squarf;",
+ "&squf;",
+ "&srarr;",
+ "&sscr;",
+ "&ssetmn;",
+ "&ssmile;",
+ "&sstarf;",
+ "&star;",
+ "&starf;",
+ "&straightepsilon;",
+ "&straightphi;",
+ "&strns;",
+ "&sub;",
+ "&subE;",
+ "&subdot;",
+ "&sube;",
+ "&subedot;",
+ "&submult;",
+ "&subnE;",
+ "&subne;",
+ "&subplus;",
+ "&subrarr;",
+ "&subset;",
+ "&subseteq;",
+ "&subseteqq;",
+ "&subsetneq;",
+ "&subsetneqq;",
+ "&subsim;",
+ "&subsub;",
+ "&subsup;",
+ "&succ;",
+ "&succapprox;",
+ "&succcurlyeq;",
+ "&succeq;",
+ "&succnapprox;",
+ "&succneqq;",
+ "&succnsim;",
+ "&succsim;",
+ "&sum;",
+ "&sung;",
+ "&sup;",
+ "&sup1;",
+ "&sup2;",
+ "&sup3;",
+ "&supE;",
+ "&supdot;",
+ "&supdsub;",
+ "&supe;",
+ "&supedot;",
+ "&suphsol;",
+ "&suphsub;",
+ "&suplarr;",
+ "&supmult;",
+ "&supnE;",
+ "&supne;",
+ "&supplus;",
+ "&supset;",
+ "&supseteq;",
+ "&supseteqq;",
+ "&supsetneq;",
+ "&supsetneqq;",
+ "&supsim;",
+ "&supsub;",
+ "&supsup;",
+ "&swArr;",
+ "&swarhk;",
+ "&swarr;",
+ "&swarrow;",
+ "&swnwar;",
+ "&szlig;",
+ "&target;",
+ "&tau;",
+ "&tbrk;",
+ "&tcaron;",
+ "&tcedil;",
+ "&tcy;",
+ "&tdot;",
+ "&telrec;",
+ "&tfr;",
+ "&there4;",
+ "&therefore;",
+ "&theta;",
+ "&thetasym;",
+ "&thetav;",
+ "&thickapprox;",
+ "&thicksim;",
+ "&thinsp;",
+ "&thkap;",
+ "&thksim;",
+ "&thorn;",
+ "&tilde;",
+ "&times;",
+ "&timesb;",
+ "&timesbar;",
+ "&timesd;",
+ "&tint;",
+ "&toea;",
+ "&top;",
+ "&topbot;",
+ "&topcir;",
+ "&topf;",
+ "&topfork;",
+ "&tosa;",
+ "&tprime;",
+ "&trade;",
+ "&triangle;",
+ "&triangledown;",
+ "&triangleleft;",
+ "&trianglelefteq;",
+ "&triangleq;",
+ "&triangleright;",
+ "&trianglerighteq;",
+ "&tridot;",
+ "&trie;",
+ "&triminus;",
+ "&triplus;",
+ "&trisb;",
+ "&tritime;",
+ "&trpezium;",
+ "&tscr;",
+ "&tscy;",
+ "&tshcy;",
+ "&tstrok;",
+ "&twixt;",
+ "&twoheadleftarrow;",
+ "&twoheadrightarrow;",
+ "&uArr;",
+ "&uHar;",
+ "&uacute;",
+ "&uarr;",
+ "&ubrcy;",
+ "&ubreve;",
+ "&ucirc;",
+ "&ucy;",
+ "&udarr;",
+ "&udblac;",
+ "&udhar;",
+ "&ufisht;",
+ "&ufr;",
+ "&ugrave;",
+ "&uharl;",
+ "&uharr;",
+ "&uhblk;",
+ "&ulcorn;",
+ "&ulcorner;",
+ "&ulcrop;",
+ "&ultri;",
+ "&umacr;",
+ "&uml;",
+ "&uogon;",
+ "&uopf;",
+ "&uparrow;",
+ "&updownarrow;",
+ "&upharpoonleft;",
+ "&upharpoonright;",
+ "&uplus;",
+ "&upsi;",
+ "&upsih;",
+ "&upsilon;",
+ "&upuparrows;",
+ "&urcorn;",
+ "&urcorner;",
+ "&urcrop;",
+ "&uring;",
+ "&urtri;",
+ "&uscr;",
+ "&utdot;",
+ "&utilde;",
+ "&utri;",
+ "&utrif;",
+ "&uuarr;",
+ "&uuml;",
+ "&uwangle;",
+ "&vArr;",
+ "&vBar;",
+ "&vBarv;",
+ "&vDash;",
+ "&vangrt;",
+ "&varepsilon;",
+ "&varkappa;",
+ "&varnothing;",
+ "&varphi;",
+ "&varpi;",
+ "&varpropto;",
+ "&varr;",
+ "&varrho;",
+ "&varsigma;",
+ "&varsubsetneq;",
+ "&varsubsetneqq;",
+ "&varsupsetneq;",
+ "&varsupsetneqq;",
+ "&vartheta;",
+ "&vartriangleleft;",
+ "&vartriangleright;",
+ "&vcy;",
+ "&vdash;",
+ "&vee;",
+ "&veebar;",
+ "&veeeq;",
+ "&vellip;",
+ "&verbar;",
+ "&vert;",
+ "&vfr;",
+ "&vltri;",
+ "&vnsub;",
+ "&vnsup;",
+ "&vopf;",
+ "&vprop;",
+ "&vrtri;",
+ "&vscr;",
+ "&vsubnE;",
+ "&vsubne;",
+ "&vsupnE;",
+ "&vsupne;",
+ "&vzigzag;",
+ "&wcirc;",
+ "&wedbar;",
+ "&wedge;",
+ "&wedgeq;",
+ "&weierp;",
+ "&wfr;",
+ "&wopf;",
+ "&wp;",
+ "&wr;",
+ "&wreath;",
+ "&wscr;",
+ "&xcap;",
+ "&xcirc;",
+ "&xcup;",
+ "&xdtri;",
+ "&xfr;",
+ "&xhArr;",
+ "&xharr;",
+ "&xi;",
+ "&xlArr;",
+ "&xlarr;",
+ "&xmap;",
+ "&xnis;",
+ "&xodot;",
+ "&xopf;",
+ "&xoplus;",
+ "&xotime;",
+ "&xrArr;",
+ "&xrarr;",
+ "&xscr;",
+ "&xsqcup;",
+ "&xuplus;",
+ "&xutri;",
+ "&xvee;",
+ "&xwedge;",
+ "&yacute;",
+ "&yacy;",
+ "&ycirc;",
+ "&ycy;",
+ "&yen;",
+ "&yfr;",
+ "&yicy;",
+ "&yopf;",
+ "&yscr;",
+ "&yucy;",
+ "&yuml;",
+ "&zacute;",
+ "&zcaron;",
+ "&zcy;",
+ "&zdot;",
+ "&zeetrf;",
+ "&zeta;",
+ "&zfr;",
+ "&zhcy;",
+ "&zigrarr;",
+ "&zopf;",
+ "&zscr;",
+ "&zwj;",
+ "&zwnj;",
+);
+
+foreach ($map as $str) {
+ $de = html_entity_decode($str, ENT_QUOTES | ENT_HTML5, "UTF-8");
+ echo "$str => $de ", bin2hex($de), "\n";
+}
+?>
+--EXPECT--
+&AElig; => Æ c386
+&AMP; => & 26
+&Aacute; => Ã c381
+&Abreve; => Ä‚ c482
+&Acirc; => Â c382
+&Acy; => Ð d090
+&Afr; => 𔄠f09d9484
+&Agrave; => À c380
+&Alpha; => Α ce91
+&Amacr; => Ā c480
+&And; => â©“ e2a993
+&Aogon; => Ä„ c484
+&Aopf; => 𔸠f09d94b8
+&ApplyFunction; => â¡ e281a1
+&Aring; => Ã… c385
+&Ascr; => 𒜠f09d929c
+&Assign; => ≔ e28994
+&Atilde; => Ã c383
+&Auml; => Ä c384
+&Backslash; => ∖ e28896
+&Barv; => ⫧ e2aba7
+&Barwed; => ⌆ e28c86
+&Bcy; => Б d091
+&Because; => ∵ e288b5
+&Bernoullis; => ℬ e284ac
+&Beta; => Î’ ce92
+&Bfr; => ð”… f09d9485
+&Bopf; => 𔹠f09d94b9
+&Breve; => ˘ cb98
+&Bscr; => ℬ e284ac
+&Bumpeq; => ≎ e2898e
+&CHcy; => Ч d0a7
+&COPY; => © c2a9
+&Cacute; => Ć c486
+&Cap; => â‹’ e28b92
+&CapitalDifferentialD; => â…… e28585
+&Cayleys; => â„­ e284ad
+&Ccaron; => Č c48c
+&Ccedil; => Ç c387
+&Ccirc; => Ĉ c488
+&Cconint; => ∰ e288b0
+&Cdot; => ÄŠ c48a
+&Cedilla; => ¸ c2b8
+&CenterDot; => · c2b7
+&Cfr; => â„­ e284ad
+&Chi; => Χ cea7
+&CircleDot; => ⊙ e28a99
+&CircleMinus; => ⊖ e28a96
+&CirclePlus; => ⊕ e28a95
+&CircleTimes; => ⊗ e28a97
+&ClockwiseContourIntegral; => ∲ e288b2
+&CloseCurlyDoubleQuote; => †e2809d
+&CloseCurlyQuote; => ’ e28099
+&Colon; => ∷ e288b7
+&Colone; => â©´ e2a9b4
+&Congruent; => ≡ e289a1
+&Conint; => ∯ e288af
+&ContourIntegral; => ∮ e288ae
+&Copf; => â„‚ e28482
+&Coproduct; => ∠e28890
+&CounterClockwiseContourIntegral; => ∳ e288b3
+&Cross; => ⨯ e2a8af
+&Cscr; => ð’ž f09d929e
+&Cup; => â‹“ e28b93
+&CupCap; => ≠e2898d
+&DD; => â…… e28585
+&DDotrahd; => ⤑ e2a491
+&DJcy; => Ђ d082
+&DScy; => Ð… d085
+&DZcy; => Ð d08f
+&Dagger; => ‡ e280a1
+&Darr; => ↡ e286a1
+&Dashv; => ⫤ e2aba4
+&Dcaron; => ÄŽ c48e
+&Dcy; => Д d094
+&Del; => ∇ e28887
+&Delta; => Δ ce94
+&Dfr; => 𔇠f09d9487
+&DiacriticalAcute; => ´ c2b4
+&DiacriticalDot; => Ë™ cb99
+&DiacriticalDoubleAcute; => Ë cb9d
+&DiacriticalGrave; => ` 60
+&DiacriticalTilde; => ˜ cb9c
+&Diamond; => â‹„ e28b84
+&DifferentialD; => â…† e28586
+&Dopf; => ð”» f09d94bb
+&Dot; => ¨ c2a8
+&DotDot; => ⃜ e2839c
+&DotEqual; => ≠e28990
+&DoubleContourIntegral; => ∯ e288af
+&DoubleDot; => ¨ c2a8
+&DoubleDownArrow; => ⇓ e28793
+&DoubleLeftArrow; => ⇠e28790
+&DoubleLeftRightArrow; => ⇔ e28794
+&DoubleLeftTee; => ⫤ e2aba4
+&DoubleLongLeftArrow; => ⟸ e29fb8
+&DoubleLongLeftRightArrow; => ⟺ e29fba
+&DoubleLongRightArrow; => ⟹ e29fb9
+&DoubleRightArrow; => ⇒ e28792
+&DoubleRightTee; => ⊨ e28aa8
+&DoubleUpArrow; => ⇑ e28791
+&DoubleUpDownArrow; => ⇕ e28795
+&DoubleVerticalBar; => ∥ e288a5
+&DownArrow; => ↓ e28693
+&DownArrowBar; => ⤓ e2a493
+&DownArrowUpArrow; => ⇵ e287b5
+&DownBreve; => Ì‘ cc91
+&DownLeftRightVector; => ⥠e2a590
+&DownLeftTeeVector; => ⥞ e2a59e
+&DownLeftVector; => ↽ e286bd
+&DownLeftVectorBar; => ⥖ e2a596
+&DownRightTeeVector; => ⥟ e2a59f
+&DownRightVector; => ⇠e28781
+&DownRightVectorBar; => ⥗ e2a597
+&DownTee; => ⊤ e28aa4
+&DownTeeArrow; => ↧ e286a7
+&Downarrow; => ⇓ e28793
+&Dscr; => ð’Ÿ f09d929f
+&Dstrok; => Ä c490
+&ENG; => ÅŠ c58a
+&ETH; => Ã c390
+&Eacute; => É c389
+&Ecaron; => Äš c49a
+&Ecirc; => Ê c38a
+&Ecy; => Э d0ad
+&Edot; => Ä– c496
+&Efr; => 𔈠f09d9488
+&Egrave; => È c388
+&Element; => ∈ e28888
+&Emacr; => Ä’ c492
+&EmptySmallSquare; => â—» e297bb
+&EmptyVerySmallSquare; => â–« e296ab
+&Eogon; => Ę c498
+&Eopf; => 𔼠f09d94bc
+&Epsilon; => Ε ce95
+&Equal; => ⩵ e2a9b5
+&EqualTilde; => ≂ e28982
+&Equilibrium; => ⇌ e2878c
+&Escr; => â„° e284b0
+&Esim; => ⩳ e2a9b3
+&Eta; => Η ce97
+&Euml; => Ë c38b
+&Exists; => ∃ e28883
+&ExponentialE; => â…‡ e28587
+&Fcy; => Ф d0a4
+&Ffr; => 𔉠f09d9489
+&FilledSmallSquare; => â—¼ e297bc
+&FilledVerySmallSquare; => â–ª e296aa
+&Fopf; => 𔽠f09d94bd
+&ForAll; => ∀ e28880
+&Fouriertrf; => ℱ e284b1
+&Fscr; => ℱ e284b1
+&GJcy; => Ѓ d083
+&GT; => > 3e
+&Gamma; => Γ ce93
+&Gammad; => Ϝ cf9c
+&Gbreve; => Äž c49e
+&Gcedil; => Ģ c4a2
+&Gcirc; => Ĝ c49c
+&Gcy; => Г d093
+&Gdot; => Ä  c4a0
+&Gfr; => 𔊠f09d948a
+&Gg; => â‹™ e28b99
+&Gopf; => 𔾠f09d94be
+&GreaterEqual; => ≥ e289a5
+&GreaterEqualLess; => â‹› e28b9b
+&GreaterFullEqual; => ≧ e289a7
+&GreaterGreater; => ⪢ e2aaa2
+&GreaterLess; => ≷ e289b7
+&GreaterSlantEqual; => ⩾ e2a9be
+&GreaterTilde; => ≳ e289b3
+&Gscr; => ð’¢ f09d92a2
+&Gt; => ≫ e289ab
+&HARDcy; => Ъ d0aa
+&Hacek; => ˇ cb87
+&Hat; => ^ 5e
+&Hcirc; => Ĥ c4a4
+&Hfr; => ℌ e2848c
+&HilbertSpace; => â„‹ e2848b
+&Hopf; => â„ e2848d
+&HorizontalLine; => ─ e29480
+&Hscr; => â„‹ e2848b
+&Hstrok; => Ħ c4a6
+&HumpDownHump; => ≎ e2898e
+&HumpEqual; => ≠e2898f
+&IEcy; => Е d095
+&IJlig; => IJ c4b2
+&IOcy; => Ð d081
+&Iacute; => Ã c38d
+&Icirc; => ÃŽ c38e
+&Icy; => И d098
+&Idot; => Ä° c4b0
+&Ifr; => â„‘ e28491
+&Igrave; => Ì c38c
+&Im; => â„‘ e28491
+&Imacr; => Ī c4aa
+&ImaginaryI; => â…ˆ e28588
+&Implies; => ⇒ e28792
+&Int; => ∬ e288ac
+&Integral; => ∫ e288ab
+&Intersection; => â‹‚ e28b82
+&InvisibleComma; => ⣠e281a3
+&InvisibleTimes; => ⢠e281a2
+&Iogon; => Ä® c4ae
+&Iopf; => ð•€ f09d9580
+&Iota; => Ι ce99
+&Iscr; => â„ e28490
+&Itilde; => Ĩ c4a8
+&Iukcy; => І d086
+&Iuml; => Ã c38f
+&Jcirc; => Ä´ c4b4
+&Jcy; => Й d099
+&Jfr; => ð” f09d948d
+&Jopf; => ð• f09d9581
+&Jscr; => ð’¥ f09d92a5
+&Jsercy; => Ј d088
+&Jukcy; => Є d084
+&KHcy; => Х d0a5
+&KJcy; => Ќ d08c
+&Kappa; => Κ ce9a
+&Kcedil; => Ķ c4b6
+&Kcy; => К d09a
+&Kfr; => 𔎠f09d948e
+&Kopf; => ð•‚ f09d9582
+&Kscr; => ð’¦ f09d92a6
+&LJcy; => Љ d089
+&LT; => < 3c
+&Lacute; => Ĺ c4b9
+&Lambda; => Λ ce9b
+&Lang; => ⟪ e29faa
+&Laplacetrf; => â„’ e28492
+&Larr; => ↞ e2869e
+&Lcaron; => Ľ c4bd
+&Lcedil; => Ä» c4bb
+&Lcy; => Л d09b
+&LeftAngleBracket; => ⟨ e29fa8
+&LeftArrow; => ↠e28690
+&LeftArrowBar; => ⇤ e287a4
+&LeftArrowRightArrow; => ⇆ e28786
+&LeftCeiling; => ⌈ e28c88
+&LeftDoubleBracket; => ⟦ e29fa6
+&LeftDownTeeVector; => ⥡ e2a5a1
+&LeftDownVector; => ⇃ e28783
+&LeftDownVectorBar; => ⥙ e2a599
+&LeftFloor; => ⌊ e28c8a
+&LeftRightArrow; => ↔ e28694
+&LeftRightVector; => ⥎ e2a58e
+&LeftTee; => ⊣ e28aa3
+&LeftTeeArrow; => ↤ e286a4
+&LeftTeeVector; => ⥚ e2a59a
+&LeftTriangle; => ⊲ e28ab2
+&LeftTriangleBar; => ⧠e2a78f
+&LeftTriangleEqual; => ⊴ e28ab4
+&LeftUpDownVector; => ⥑ e2a591
+&LeftUpTeeVector; => ⥠ e2a5a0
+&LeftUpVector; => ↿ e286bf
+&LeftUpVectorBar; => ⥘ e2a598
+&LeftVector; => ↼ e286bc
+&LeftVectorBar; => ⥒ e2a592
+&Leftarrow; => ⇠e28790
+&Leftrightarrow; => ⇔ e28794
+&LessEqualGreater; => â‹š e28b9a
+&LessFullEqual; => ≦ e289a6
+&LessGreater; => ≶ e289b6
+&LessLess; => ⪡ e2aaa1
+&LessSlantEqual; => ⩽ e2a9bd
+&LessTilde; => ≲ e289b2
+&Lfr; => ð” f09d948f
+&Ll; => ⋘ e28b98
+&Lleftarrow; => ⇚ e2879a
+&Lmidot; => Ä¿ c4bf
+&LongLeftArrow; => ⟵ e29fb5
+&LongLeftRightArrow; => ⟷ e29fb7
+&LongRightArrow; => ⟶ e29fb6
+&Longleftarrow; => ⟸ e29fb8
+&Longleftrightarrow; => ⟺ e29fba
+&Longrightarrow; => ⟹ e29fb9
+&Lopf; => 𕃠f09d9583
+&LowerLeftArrow; => ↙ e28699
+&LowerRightArrow; => ↘ e28698
+&Lscr; => â„’ e28492
+&Lsh; => ↰ e286b0
+&Lstrok; => Å c581
+&Lt; => ≪ e289aa
+&Map; => ⤅ e2a485
+&Mcy; => М d09c
+&MediumSpace; => ⟠e2819f
+&Mellintrf; => ℳ e284b3
+&Mfr; => ð” f09d9490
+&MinusPlus; => ∓ e28893
+&Mopf; => ð•„ f09d9584
+&Mscr; => ℳ e284b3
+&Mu; => Μ ce9c
+&NJcy; => Њ d08a
+&Nacute; => Ń c583
+&Ncaron; => Ň c587
+&Ncedil; => Å… c585
+&Ncy; => Ð d09d
+&NegativeMediumSpace; => ​ e2808b
+&NegativeThickSpace; => ​ e2808b
+&NegativeThinSpace; => ​ e2808b
+&NegativeVeryThinSpace; => ​ e2808b
+&NestedGreaterGreater; => ≫ e289ab
+&NestedLessLess; => ≪ e289aa
+&NewLine; =>
+ 0a
+&Nfr; => 𔑠f09d9491
+&NoBreak; => â  e281a0
+&NonBreakingSpace; =>   c2a0
+&Nopf; => â„• e28495
+&Not; => ⫬ e2abac
+&NotCongruent; => ≢ e289a2
+&NotCupCap; => ≭ e289ad
+&NotDoubleVerticalBar; => ∦ e288a6
+&NotElement; => ∉ e28889
+&NotEqual; => ≠ e289a0
+&NotEqualTilde; => ≂̸ e28982ccb8
+&NotExists; => ∄ e28884
+&NotGreater; => ≯ e289af
+&NotGreaterEqual; => ≱ e289b1
+&NotGreaterFullEqual; => ≧̸ e289a7ccb8
+&NotGreaterGreater; => ≫̸ e289abccb8
+&NotGreaterLess; => ≹ e289b9
+&NotGreaterSlantEqual; => ⩾̸ e2a9beccb8
+&NotGreaterTilde; => ≵ e289b5
+&NotHumpDownHump; => ≎̸ e2898eccb8
+&NotHumpEqual; => â‰Ì¸ e2898fccb8
+&NotLeftTriangle; => ⋪ e28baa
+&NotLeftTriangleBar; => â§Ì¸ e2a78fccb8
+&NotLeftTriangleEqual; => ⋬ e28bac
+&NotLess; => ≮ e289ae
+&NotLessEqual; => ≰ e289b0
+&NotLessGreater; => ≸ e289b8
+&NotLessLess; => ≪̸ e289aaccb8
+&NotLessSlantEqual; => ⩽̸ e2a9bdccb8
+&NotLessTilde; => ≴ e289b4
+&NotNestedGreaterGreater; => ⪢̸ e2aaa2ccb8
+&NotNestedLessLess; => ⪡̸ e2aaa1ccb8
+&NotPrecedes; => ⊀ e28a80
+&NotPrecedesEqual; => ⪯̸ e2aaafccb8
+&NotPrecedesSlantEqual; => â‹  e28ba0
+&NotReverseElement; => ∌ e2888c
+&NotRightTriangle; => â‹« e28bab
+&NotRightTriangleBar; => â§Ì¸ e2a790ccb8
+&NotRightTriangleEqual; => â‹­ e28bad
+&NotSquareSubset; => âŠÌ¸ e28a8fccb8
+&NotSquareSubsetEqual; => â‹¢ e28ba2
+&NotSquareSuperset; => âŠÌ¸ e28a90ccb8
+&NotSquareSupersetEqual; => â‹£ e28ba3
+&NotSubset; => ⊂⃒ e28a82e28392
+&NotSubsetEqual; => ⊈ e28a88
+&NotSucceeds; => ⊠e28a81
+&NotSucceedsEqual; => ⪰̸ e2aab0ccb8
+&NotSucceedsSlantEqual; => â‹¡ e28ba1
+&NotSucceedsTilde; => ≿̸ e289bfccb8
+&NotSuperset; => ⊃⃒ e28a83e28392
+&NotSupersetEqual; => ⊉ e28a89
+&NotTilde; => ≠e28981
+&NotTildeEqual; => ≄ e28984
+&NotTildeFullEqual; => ≇ e28987
+&NotTildeTilde; => ≉ e28989
+&NotVerticalBar; => ∤ e288a4
+&Nscr; => ð’© f09d92a9
+&Ntilde; => Ñ c391
+&Nu; => Î ce9d
+&OElig; => Å’ c592
+&Oacute; => Ó c393
+&Ocirc; => Ô c394
+&Ocy; => О d09e
+&Odblac; => Å c590
+&Ofr; => ð”’ f09d9492
+&Ograve; => Ã’ c392
+&Omacr; => Ō c58c
+&Omega; => Ω cea9
+&Omicron; => Ο ce9f
+&Oopf; => 𕆠f09d9586
+&OpenCurlyDoubleQuote; => “ e2809c
+&OpenCurlyQuote; => ‘ e28098
+&Or; => â©” e2a994
+&Oscr; => ð’ª f09d92aa
+&Oslash; => Ø c398
+&Otilde; => Õ c395
+&Otimes; => ⨷ e2a8b7
+&Ouml; => Ö c396
+&OverBar; => ‾ e280be
+&OverBrace; => âž e28f9e
+&OverBracket; => ⎴ e28eb4
+&OverParenthesis; => ✠e28f9c
+&PartialD; => ∂ e28882
+&Pcy; => П d09f
+&Pfr; => 𔓠f09d9493
+&Phi; => Φ cea6
+&Pi; => Π cea0
+&PlusMinus; => ± c2b1
+&Poincareplane; => ℌ e2848c
+&Popf; => â„™ e28499
+&Pr; => ⪻ e2aabb
+&Precedes; => ≺ e289ba
+&PrecedesEqual; => ⪯ e2aaaf
+&PrecedesSlantEqual; => ≼ e289bc
+&PrecedesTilde; => ≾ e289be
+&Prime; => ″ e280b3
+&Product; => ∠e2888f
+&Proportion; => ∷ e288b7
+&Proportional; => ∠e2889d
+&Pscr; => ð’« f09d92ab
+&Psi; => Ψ cea8
+&QUOT; => " 22
+&Qfr; => ð”” f09d9494
+&Qopf; => â„š e2849a
+&Qscr; => ð’¬ f09d92ac
+&RBarr; => ⤠e2a490
+&REG; => ® c2ae
+&Racute; => Å” c594
+&Rang; => ⟫ e29fab
+&Rarr; => ↠ e286a0
+&Rarrtl; => ⤖ e2a496
+&Rcaron; => Ř c598
+&Rcedil; => Å– c596
+&Rcy; => Р d0a0
+&Re; => ℜ e2849c
+&ReverseElement; => ∋ e2888b
+&ReverseEquilibrium; => ⇋ e2878b
+&ReverseUpEquilibrium; => ⥯ e2a5af
+&Rfr; => ℜ e2849c
+&Rho; => Ρ cea1
+&RightAngleBracket; => ⟩ e29fa9
+&RightArrow; => → e28692
+&RightArrowBar; => ⇥ e287a5
+&RightArrowLeftArrow; => ⇄ e28784
+&RightCeiling; => ⌉ e28c89
+&RightDoubleBracket; => ⟧ e29fa7
+&RightDownTeeVector; => ⥠e2a59d
+&RightDownVector; => ⇂ e28782
+&RightDownVectorBar; => ⥕ e2a595
+&RightFloor; => ⌋ e28c8b
+&RightTee; => ⊢ e28aa2
+&RightTeeArrow; => ↦ e286a6
+&RightTeeVector; => ⥛ e2a59b
+&RightTriangle; => ⊳ e28ab3
+&RightTriangleBar; => ⧠e2a790
+&RightTriangleEqual; => ⊵ e28ab5
+&RightUpDownVector; => ⥠e2a58f
+&RightUpTeeVector; => ⥜ e2a59c
+&RightUpVector; => ↾ e286be
+&RightUpVectorBar; => ⥔ e2a594
+&RightVector; => ⇀ e28780
+&RightVectorBar; => ⥓ e2a593
+&Rightarrow; => ⇒ e28792
+&Ropf; => â„ e2849d
+&RoundImplies; => ⥰ e2a5b0
+&Rrightarrow; => ⇛ e2879b
+&Rscr; => â„› e2849b
+&Rsh; => ↱ e286b1
+&RuleDelayed; => ⧴ e2a7b4
+&SHCHcy; => Щ d0a9
+&SHcy; => Ш d0a8
+&SOFTcy; => Ь d0ac
+&Sacute; => Åš c59a
+&Sc; => ⪼ e2aabc
+&Scaron; => Å  c5a0
+&Scedil; => Åž c59e
+&Scirc; => Ŝ c59c
+&Scy; => С d0a1
+&Sfr; => ð”– f09d9496
+&ShortDownArrow; => ↓ e28693
+&ShortLeftArrow; => ↠e28690
+&ShortRightArrow; => → e28692
+&ShortUpArrow; => ↑ e28691
+&Sigma; => Σ cea3
+&SmallCircle; => ∘ e28898
+&Sopf; => ð•Š f09d958a
+&Sqrt; => √ e2889a
+&Square; => â–¡ e296a1
+&SquareIntersection; => ⊓ e28a93
+&SquareSubset; => ⊠e28a8f
+&SquareSubsetEqual; => ⊑ e28a91
+&SquareSuperset; => ⊠e28a90
+&SquareSupersetEqual; => ⊒ e28a92
+&SquareUnion; => ⊔ e28a94
+&Sscr; => ð’® f09d92ae
+&Star; => ⋆ e28b86
+&Sub; => â‹ e28b90
+&Subset; => â‹ e28b90
+&SubsetEqual; => ⊆ e28a86
+&Succeeds; => ≻ e289bb
+&SucceedsEqual; => ⪰ e2aab0
+&SucceedsSlantEqual; => ≽ e289bd
+&SucceedsTilde; => ≿ e289bf
+&SuchThat; => ∋ e2888b
+&Sum; => ∑ e28891
+&Sup; => â‹‘ e28b91
+&Superset; => ⊃ e28a83
+&SupersetEqual; => ⊇ e28a87
+&Supset; => â‹‘ e28b91
+&THORN; => Þ c39e
+&TRADE; => â„¢ e284a2
+&TSHcy; => Ћ d08b
+&TScy; => Ц d0a6
+&Tab; => 09
+&Tau; => Τ cea4
+&Tcaron; => Ť c5a4
+&Tcedil; => Ţ c5a2
+&Tcy; => Т d0a2
+&Tfr; => ð”— f09d9497
+&Therefore; => ∴ e288b4
+&Theta; => Θ ce98
+&ThickSpace; => âŸâ€Š e2819fe2808a
+&ThinSpace; =>   e28089
+&Tilde; => ∼ e288bc
+&TildeEqual; => ≃ e28983
+&TildeFullEqual; => ≅ e28985
+&TildeTilde; => ≈ e28988
+&Topf; => ð•‹ f09d958b
+&TripleDot; => ⃛ e2839b
+&Tscr; => ð’¯ f09d92af
+&Tstrok; => Ŧ c5a6
+&Uacute; => Ú c39a
+&Uarr; => ↟ e2869f
+&Uarrocir; => ⥉ e2a589
+&Ubrcy; => ÐŽ d08e
+&Ubreve; => Ŭ c5ac
+&Ucirc; => Û c39b
+&Ucy; => У d0a3
+&Udblac; => Å° c5b0
+&Ufr; => 𔘠f09d9498
+&Ugrave; => Ù c399
+&Umacr; => Ū c5aa
+&UnderBar; => _ 5f
+&UnderBrace; => ⟠e28f9f
+&UnderBracket; => ⎵ e28eb5
+&UnderParenthesis; => â e28f9d
+&Union; => ⋃ e28b83
+&UnionPlus; => ⊎ e28a8e
+&Uogon; => Ų c5b2
+&Uopf; => 𕌠f09d958c
+&UpArrow; => ↑ e28691
+&UpArrowBar; => ⤒ e2a492
+&UpArrowDownArrow; => ⇅ e28785
+&UpDownArrow; => ↕ e28695
+&UpEquilibrium; => ⥮ e2a5ae
+&UpTee; => ⊥ e28aa5
+&UpTeeArrow; => ↥ e286a5
+&Uparrow; => ⇑ e28791
+&Updownarrow; => ⇕ e28795
+&UpperLeftArrow; => ↖ e28696
+&UpperRightArrow; => ↗ e28697
+&Upsi; => Ï’ cf92
+&Upsilon; => Υ cea5
+&Uring; => Å® c5ae
+&Uscr; => ð’° f09d92b0
+&Utilde; => Ũ c5a8
+&Uuml; => Ü c39c
+&VDash; => ⊫ e28aab
+&Vbar; => â«« e2abab
+&Vcy; => Ð’ d092
+&Vdash; => ⊩ e28aa9
+&Vdashl; => ⫦ e2aba6
+&Vee; => â‹ e28b81
+&Verbar; => ‖ e28096
+&Vert; => ‖ e28096
+&VerticalBar; => ∣ e288a3
+&VerticalLine; => | 7c
+&VerticalSeparator; => ☠e29d98
+&VerticalTilde; => ≀ e28980
+&VeryThinSpace; =>   e2808a
+&Vfr; => ð”™ f09d9499
+&Vopf; => ð• f09d958d
+&Vscr; => ð’± f09d92b1
+&Vvdash; => ⊪ e28aaa
+&Wcirc; => Å´ c5b4
+&Wedge; => â‹€ e28b80
+&Wfr; => 𔚠f09d949a
+&Wopf; => ð•Ž f09d958e
+&Wscr; => ð’² f09d92b2
+&Xfr; => ð”› f09d949b
+&Xi; => Ξ ce9e
+&Xopf; => ð• f09d958f
+&Xscr; => ð’³ f09d92b3
+&YAcy; => Я d0af
+&YIcy; => Ї d087
+&YUcy; => Ю d0ae
+&Yacute; => Ã c39d
+&Ycirc; => Ŷ c5b6
+&Ycy; => Ы d0ab
+&Yfr; => 𔜠f09d949c
+&Yopf; => ð• f09d9590
+&Yscr; => ð’´ f09d92b4
+&Yuml; => Ÿ c5b8
+&ZHcy; => Ж d096
+&Zacute; => Ź c5b9
+&Zcaron; => Ž c5bd
+&Zcy; => З d097
+&Zdot; => Å» c5bb
+&ZeroWidthSpace; => ​ e2808b
+&Zeta; => Ζ ce96
+&Zfr; => ℨ e284a8
+&Zopf; => ℤ e284a4
+&Zscr; => ð’µ f09d92b5
+&aacute; => á c3a1
+&abreve; => ă c483
+&ac; => ∾ e288be
+&acE; => ∾̳ e288beccb3
+&acd; => ∿ e288bf
+&acirc; => â c3a2
+&acute; => ´ c2b4
+&acy; => а d0b0
+&aelig; => æ c3a6
+&af; => â¡ e281a1
+&afr; => 𔞠f09d949e
+&agrave; => à c3a0
+&alefsym; => ℵ e284b5
+&aleph; => ℵ e284b5
+&alpha; => α ceb1
+&amacr; => Ä c481
+&amalg; => ⨿ e2a8bf
+&amp; => & 26
+&and; => ∧ e288a7
+&andand; => â©• e2a995
+&andd; => ⩜ e2a99c
+&andslope; => ⩘ e2a998
+&andv; => â©š e2a99a
+&ang; => ∠ e288a0
+&ange; => ⦤ e2a6a4
+&angle; => ∠ e288a0
+&angmsd; => ∡ e288a1
+&angmsdaa; => ⦨ e2a6a8
+&angmsdab; => ⦩ e2a6a9
+&angmsdac; => ⦪ e2a6aa
+&angmsdad; => ⦫ e2a6ab
+&angmsdae; => ⦬ e2a6ac
+&angmsdaf; => ⦭ e2a6ad
+&angmsdag; => ⦮ e2a6ae
+&angmsdah; => ⦯ e2a6af
+&angrt; => ∟ e2889f
+&angrtvb; => ⊾ e28abe
+&angrtvbd; => ⦠e2a69d
+&angsph; => ∢ e288a2
+&angst; => Ã… c385
+&angzarr; => â¼ e28dbc
+&aogon; => Ä… c485
+&aopf; => ð•’ f09d9592
+&ap; => ≈ e28988
+&apE; => â©° e2a9b0
+&apacir; => ⩯ e2a9af
+&ape; => ≊ e2898a
+&apid; => ≋ e2898b
+&apos; => ' 27
+&approx; => ≈ e28988
+&approxeq; => ≊ e2898a
+&aring; => å c3a5
+&ascr; => ð’¶ f09d92b6
+&ast; => * 2a
+&asymp; => ≈ e28988
+&asympeq; => ≠e2898d
+&atilde; => ã c3a3
+&auml; => ä c3a4
+&awconint; => ∳ e288b3
+&awint; => ⨑ e2a891
+&bNot; => â«­ e2abad
+&backcong; => ≌ e2898c
+&backepsilon; => ϶ cfb6
+&backprime; => ‵ e280b5
+&backsim; => ∽ e288bd
+&backsimeq; => â‹ e28b8d
+&barvee; => ⊽ e28abd
+&barwed; => ⌅ e28c85
+&barwedge; => ⌅ e28c85
+&bbrk; => ⎵ e28eb5
+&bbrktbrk; => ⎶ e28eb6
+&bcong; => ≌ e2898c
+&bcy; => б d0b1
+&bdquo; => „ e2809e
+&becaus; => ∵ e288b5
+&because; => ∵ e288b5
+&bemptyv; => ⦰ e2a6b0
+&bepsi; => ϶ cfb6
+&bernou; => ℬ e284ac
+&beta; => β ceb2
+&beth; => ℶ e284b6
+&between; => ≬ e289ac
+&bfr; => 𔟠f09d949f
+&bigcap; => â‹‚ e28b82
+&bigcirc; => â—¯ e297af
+&bigcup; => ⋃ e28b83
+&bigodot; => ⨀ e2a880
+&bigoplus; => ⨠e2a881
+&bigotimes; => ⨂ e2a882
+&bigsqcup; => ⨆ e2a886
+&bigstar; => ★ e29885
+&bigtriangledown; => â–½ e296bd
+&bigtriangleup; => â–³ e296b3
+&biguplus; => ⨄ e2a884
+&bigvee; => â‹ e28b81
+&bigwedge; => â‹€ e28b80
+&bkarow; => ⤠e2a48d
+&blacklozenge; => ⧫ e2a7ab
+&blacksquare; => â–ª e296aa
+&blacktriangle; => â–´ e296b4
+&blacktriangledown; => â–¾ e296be
+&blacktriangleleft; => â—‚ e29782
+&blacktriangleright; => â–¸ e296b8
+&blank; => ⣠e290a3
+&blk12; => â–’ e29692
+&blk14; => â–‘ e29691
+&blk34; => â–“ e29693
+&block; => â–ˆ e29688
+&bne; => =⃥ 3de283a5
+&bnequiv; => ≡⃥ e289a1e283a5
+&bnot; => ⌠e28c90
+&bopf; => ð•“ f09d9593
+&bot; => ⊥ e28aa5
+&bottom; => ⊥ e28aa5
+&bowtie; => ⋈ e28b88
+&boxDL; => â•— e29597
+&boxDR; => â•” e29594
+&boxDl; => â•– e29596
+&boxDr; => â•“ e29593
+&boxH; => â• e29590
+&boxHD; => ╦ e295a6
+&boxHU; => â•© e295a9
+&boxHd; => ╤ e295a4
+&boxHu; => ╧ e295a7
+&boxUL; => â• e2959d
+&boxUR; => â•š e2959a
+&boxUl; => ╜ e2959c
+&boxUr; => â•™ e29599
+&boxV; => â•‘ e29591
+&boxVH; => ╬ e295ac
+&boxVL; => â•£ e295a3
+&boxVR; => â•  e295a0
+&boxVh; => â•« e295ab
+&boxVl; => â•¢ e295a2
+&boxVr; => â•Ÿ e2959f
+&boxbox; => ⧉ e2a789
+&boxdL; => â•• e29595
+&boxdR; => â•’ e29592
+&boxdl; => â” e29490
+&boxdr; => ┌ e2948c
+&boxh; => ─ e29480
+&boxhD; => â•¥ e295a5
+&boxhU; => ╨ e295a8
+&boxhd; => ┬ e294ac
+&boxhu; => â”´ e294b4
+&boxminus; => ⊟ e28a9f
+&boxplus; => ⊞ e28a9e
+&boxtimes; => ⊠ e28aa0
+&boxuL; => â•› e2959b
+&boxuR; => ╘ e29598
+&boxul; => ┘ e29498
+&boxur; => â”” e29494
+&boxv; => │ e29482
+&boxvH; => ╪ e295aa
+&boxvL; => â•¡ e295a1
+&boxvR; => â•ž e2959e
+&boxvh; => ┼ e294bc
+&boxvl; => ┤ e294a4
+&boxvr; => ├ e2949c
+&bprime; => ‵ e280b5
+&breve; => ˘ cb98
+&brvbar; => ¦ c2a6
+&bscr; => ð’· f09d92b7
+&bsemi; => â e2818f
+&bsim; => ∽ e288bd
+&bsime; => â‹ e28b8d
+&bsol; => \ 5c
+&bsolb; => ⧅ e2a785
+&bsolhsub; => ⟈ e29f88
+&bull; => • e280a2
+&bullet; => • e280a2
+&bump; => ≎ e2898e
+&bumpE; => ⪮ e2aaae
+&bumpe; => ≠e2898f
+&bumpeq; => ≠e2898f
+&cacute; => ć c487
+&cap; => ∩ e288a9
+&capand; => â©„ e2a984
+&capbrcup; => ⩉ e2a989
+&capcap; => â©‹ e2a98b
+&capcup; => ⩇ e2a987
+&capdot; => â©€ e2a980
+&caps; => ∩︀ e288a9efb880
+&caret; => â e28181
+&caron; => ˇ cb87
+&ccaps; => â© e2a98d
+&ccaron; => Ä c48d
+&ccedil; => ç c3a7
+&ccirc; => ĉ c489
+&ccups; => ⩌ e2a98c
+&ccupssm; => â© e2a990
+&cdot; => Ä‹ c48b
+&cedil; => ¸ c2b8
+&cemptyv; => ⦲ e2a6b2
+&cent; => ¢ c2a2
+&centerdot; => · c2b7
+&cfr; => ð”  f09d94a0
+&chcy; => ч d187
+&check; => ✓ e29c93
+&checkmark; => ✓ e29c93
+&chi; => χ cf87
+&cir; => â—‹ e2978b
+&cirE; => ⧃ e2a783
+&circ; => ˆ cb86
+&circeq; => ≗ e28997
+&circlearrowleft; => ↺ e286ba
+&circlearrowright; => ↻ e286bb
+&circledR; => ® c2ae
+&circledS; => Ⓢ e29388
+&circledast; => ⊛ e28a9b
+&circledcirc; => ⊚ e28a9a
+&circleddash; => ⊠e28a9d
+&cire; => ≗ e28997
+&cirfnint; => ⨠e2a890
+&cirmid; => ⫯ e2abaf
+&cirscir; => ⧂ e2a782
+&clubs; => ♣ e299a3
+&clubsuit; => ♣ e299a3
+&colon; => : 3a
+&colone; => ≔ e28994
+&coloneq; => ≔ e28994
+&comma; => , 2c
+&commat; => @ 40
+&comp; => ∠e28881
+&compfn; => ∘ e28898
+&complement; => ∠e28881
+&complexes; => â„‚ e28482
+&cong; => ≅ e28985
+&congdot; => â©­ e2a9ad
+&conint; => ∮ e288ae
+&copf; => ð•” f09d9594
+&coprod; => ∠e28890
+&copy; => © c2a9
+&copysr; => â„— e28497
+&crarr; => ↵ e286b5
+&cross; => ✗ e29c97
+&cscr; => ð’¸ f09d92b8
+&csub; => â« e2ab8f
+&csube; => â«‘ e2ab91
+&csup; => â« e2ab90
+&csupe; => â«’ e2ab92
+&ctdot; => ⋯ e28baf
+&cudarrl; => ⤸ e2a4b8
+&cudarrr; => ⤵ e2a4b5
+&cuepr; => â‹ž e28b9e
+&cuesc; => â‹Ÿ e28b9f
+&cularr; => ↶ e286b6
+&cularrp; => ⤽ e2a4bd
+&cup; => ∪ e288aa
+&cupbrcap; => ⩈ e2a988
+&cupcap; => ⩆ e2a986
+&cupcup; => â©Š e2a98a
+&cupdot; => ⊠e28a8d
+&cupor; => â©… e2a985
+&cups; => ∪︀ e288aaefb880
+&curarr; => ↷ e286b7
+&curarrm; => ⤼ e2a4bc
+&curlyeqprec; => â‹ž e28b9e
+&curlyeqsucc; => â‹Ÿ e28b9f
+&curlyvee; => â‹Ž e28b8e
+&curlywedge; => â‹ e28b8f
+&curren; => ¤ c2a4
+&curvearrowleft; => ↶ e286b6
+&curvearrowright; => ↷ e286b7
+&cuvee; => â‹Ž e28b8e
+&cuwed; => â‹ e28b8f
+&cwconint; => ∲ e288b2
+&cwint; => ∱ e288b1
+&cylcty; => ⌭ e28cad
+&dArr; => ⇓ e28793
+&dHar; => ⥥ e2a5a5
+&dagger; => † e280a0
+&daleth; => ℸ e284b8
+&darr; => ↓ e28693
+&dash; => †e28090
+&dashv; => ⊣ e28aa3
+&dbkarow; => ⤠e2a48f
+&dblac; => Ë cb9d
+&dcaron; => Ä c48f
+&dcy; => д d0b4
+&dd; => â…† e28586
+&ddagger; => ‡ e280a1
+&ddarr; => ⇊ e2878a
+&ddotseq; => â©· e2a9b7
+&deg; => ° c2b0
+&delta; => δ ceb4
+&demptyv; => ⦱ e2a6b1
+&dfisht; => ⥿ e2a5bf
+&dfr; => 𔡠f09d94a1
+&dharl; => ⇃ e28783
+&dharr; => ⇂ e28782
+&diam; => â‹„ e28b84
+&diamond; => â‹„ e28b84
+&diamondsuit; => ♦ e299a6
+&diams; => ♦ e299a6
+&die; => ¨ c2a8
+&digamma; => Ï cf9d
+&disin; => ⋲ e28bb2
+&div; => ÷ c3b7
+&divide; => ÷ c3b7
+&divideontimes; => ⋇ e28b87
+&divonx; => ⋇ e28b87
+&djcy; => Ñ’ d192
+&dlcorn; => ⌞ e28c9e
+&dlcrop; => ⌠e28c8d
+&dollar; => $ 24
+&dopf; => ð•• f09d9595
+&dot; => Ë™ cb99
+&doteq; => ≠e28990
+&doteqdot; => ≑ e28991
+&dotminus; => ∸ e288b8
+&dotplus; => ∔ e28894
+&dotsquare; => ⊡ e28aa1
+&doublebarwedge; => ⌆ e28c86
+&downarrow; => ↓ e28693
+&downdownarrows; => ⇊ e2878a
+&downharpoonleft; => ⇃ e28783
+&downharpoonright; => ⇂ e28782
+&drbkarow; => ⤠e2a490
+&drcorn; => ⌟ e28c9f
+&drcrop; => ⌌ e28c8c
+&dscr; => ð’¹ f09d92b9
+&dscy; => Ñ• d195
+&dsol; => ⧶ e2a7b6
+&dstrok; => Ä‘ c491
+&dtdot; => ⋱ e28bb1
+&dtri; => â–¿ e296bf
+&dtrif; => â–¾ e296be
+&duarr; => ⇵ e287b5
+&duhar; => ⥯ e2a5af
+&dwangle; => ⦦ e2a6a6
+&dzcy; => ÑŸ d19f
+&dzigrarr; => ⟿ e29fbf
+&eDDot; => â©· e2a9b7
+&eDot; => ≑ e28991
+&eacute; => é c3a9
+&easter; => â©® e2a9ae
+&ecaron; => Ä› c49b
+&ecir; => ≖ e28996
+&ecirc; => ê c3aa
+&ecolon; => ≕ e28995
+&ecy; => Ñ d18d
+&edot; => Ä— c497
+&ee; => â…‡ e28587
+&efDot; => ≒ e28992
+&efr; => 𔢠f09d94a2
+&eg; => ⪚ e2aa9a
+&egrave; => è c3a8
+&egs; => ⪖ e2aa96
+&egsdot; => ⪘ e2aa98
+&el; => ⪙ e2aa99
+&elinters; => ⧠e28fa7
+&ell; => â„“ e28493
+&els; => ⪕ e2aa95
+&elsdot; => ⪗ e2aa97
+&emacr; => Ä“ c493
+&empty; => ∅ e28885
+&emptyset; => ∅ e28885
+&emptyv; => ∅ e28885
+&emsp; =>   e28083
+&emsp13; =>   e28084
+&emsp14; =>   e28085
+&eng; => Å‹ c58b
+&ensp; =>   e28082
+&eogon; => Ä™ c499
+&eopf; => ð•– f09d9596
+&epar; => â‹• e28b95
+&eparsl; => ⧣ e2a7a3
+&eplus; => ⩱ e2a9b1
+&epsi; => ε ceb5
+&epsilon; => ε ceb5
+&epsiv; => ϵ cfb5
+&eqcirc; => ≖ e28996
+&eqcolon; => ≕ e28995
+&eqsim; => ≂ e28982
+&eqslantgtr; => ⪖ e2aa96
+&eqslantless; => ⪕ e2aa95
+&equals; => = 3d
+&equest; => ≟ e2899f
+&equiv; => ≡ e289a1
+&equivDD; => ⩸ e2a9b8
+&eqvparsl; => ⧥ e2a7a5
+&erDot; => ≓ e28993
+&erarr; => ⥱ e2a5b1
+&escr; => ℯ e284af
+&esdot; => ≠e28990
+&esim; => ≂ e28982
+&eta; => η ceb7
+&eth; => ð c3b0
+&euml; => ë c3ab
+&euro; => € e282ac
+&excl; => ! 21
+&exist; => ∃ e28883
+&expectation; => â„° e284b0
+&exponentiale; => â…‡ e28587
+&fallingdotseq; => ≒ e28992
+&fcy; => Ñ„ d184
+&female; => ♀ e29980
+&ffilig; => ffi efac83
+&fflig; => ff efac80
+&ffllig; => ffl efac84
+&ffr; => 𔣠f09d94a3
+&filig; => ï¬ efac81
+&fjlig; => fj 666a
+&flat; => â™­ e299ad
+&fllig; => fl efac82
+&fltns; => â–± e296b1
+&fnof; => Æ’ c692
+&fopf; => ð•— f09d9597
+&forall; => ∀ e28880
+&fork; => â‹” e28b94
+&forkv; => â«™ e2ab99
+&fpartint; => ⨠e2a88d
+&frac12; => ½ c2bd
+&frac13; => â…“ e28593
+&frac14; => ¼ c2bc
+&frac15; => â…• e28595
+&frac16; => â…™ e28599
+&frac18; => â…› e2859b
+&frac23; => â…” e28594
+&frac25; => â…– e28596
+&frac34; => ¾ c2be
+&frac35; => â…— e28597
+&frac38; => ⅜ e2859c
+&frac45; => â…˜ e28598
+&frac56; => â…š e2859a
+&frac58; => â… e2859d
+&frac78; => â…ž e2859e
+&frasl; => â„ e28184
+&frown; => ⌢ e28ca2
+&fscr; => ð’» f09d92bb
+&gE; => ≧ e289a7
+&gEl; => ⪌ e2aa8c
+&gacute; => ǵ c7b5
+&gamma; => γ ceb3
+&gammad; => Ï cf9d
+&gap; => ⪆ e2aa86
+&gbreve; => ÄŸ c49f
+&gcirc; => Ä c49d
+&gcy; => г d0b3
+&gdot; => Ä¡ c4a1
+&ge; => ≥ e289a5
+&gel; => â‹› e28b9b
+&geq; => ≥ e289a5
+&geqq; => ≧ e289a7
+&geqslant; => ⩾ e2a9be
+&ges; => ⩾ e2a9be
+&gescc; => ⪩ e2aaa9
+&gesdot; => ⪀ e2aa80
+&gesdoto; => ⪂ e2aa82
+&gesdotol; => ⪄ e2aa84
+&gesl; => ⋛︀ e28b9befb880
+&gesles; => ⪔ e2aa94
+&gfr; => 𔤠f09d94a4
+&gg; => ≫ e289ab
+&ggg; => â‹™ e28b99
+&gimel; => â„· e284b7
+&gjcy; => Ñ“ d193
+&gl; => ≷ e289b7
+&glE; => ⪒ e2aa92
+&gla; => ⪥ e2aaa5
+&glj; => ⪤ e2aaa4
+&gnE; => ≩ e289a9
+&gnap; => ⪊ e2aa8a
+&gnapprox; => ⪊ e2aa8a
+&gne; => ⪈ e2aa88
+&gneq; => ⪈ e2aa88
+&gneqq; => ≩ e289a9
+&gnsim; => ⋧ e28ba7
+&gopf; => 𕘠f09d9598
+&grave; => ` 60
+&gscr; => â„Š e2848a
+&gsim; => ≳ e289b3
+&gsime; => ⪎ e2aa8e
+&gsiml; => ⪠e2aa90
+&gt; => > 3e
+&gtcc; => ⪧ e2aaa7
+&gtcir; => ⩺ e2a9ba
+&gtdot; => â‹— e28b97
+&gtlPar; => ⦕ e2a695
+&gtquest; => ⩼ e2a9bc
+&gtrapprox; => ⪆ e2aa86
+&gtrarr; => ⥸ e2a5b8
+&gtrdot; => â‹— e28b97
+&gtreqless; => â‹› e28b9b
+&gtreqqless; => ⪌ e2aa8c
+&gtrless; => ≷ e289b7
+&gtrsim; => ≳ e289b3
+&gvertneqq; => ≩︀ e289a9efb880
+&gvnE; => ≩︀ e289a9efb880
+&hArr; => ⇔ e28794
+&hairsp; =>   e2808a
+&half; => ½ c2bd
+&hamilt; => â„‹ e2848b
+&hardcy; => ÑŠ d18a
+&harr; => ↔ e28694
+&harrcir; => ⥈ e2a588
+&harrw; => ↭ e286ad
+&hbar; => â„ e2848f
+&hcirc; => ĥ c4a5
+&hearts; => ♥ e299a5
+&heartsuit; => ♥ e299a5
+&hellip; => … e280a6
+&hercon; => ⊹ e28ab9
+&hfr; => 𔥠f09d94a5
+&hksearow; => ⤥ e2a4a5
+&hkswarow; => ⤦ e2a4a6
+&hoarr; => ⇿ e287bf
+&homtht; => ∻ e288bb
+&hookleftarrow; => ↩ e286a9
+&hookrightarrow; => ↪ e286aa
+&hopf; => ð•™ f09d9599
+&horbar; => ― e28095
+&hscr; => ð’½ f09d92bd
+&hslash; => â„ e2848f
+&hstrok; => ħ c4a7
+&hybull; => ⃠e28183
+&hyphen; => †e28090
+&iacute; => í c3ad
+&ic; => ⣠e281a3
+&icirc; => î c3ae
+&icy; => и d0b8
+&iecy; => е d0b5
+&iexcl; => ¡ c2a1
+&iff; => ⇔ e28794
+&ifr; => 𔦠f09d94a6
+&igrave; => ì c3ac
+&ii; => â…ˆ e28588
+&iiiint; => ⨌ e2a88c
+&iiint; => ∭ e288ad
+&iinfin; => ⧜ e2a79c
+&iiota; => â„© e284a9
+&ijlig; => ij c4b3
+&imacr; => Ä« c4ab
+&image; => â„‘ e28491
+&imagline; => â„ e28490
+&imagpart; => â„‘ e28491
+&imath; => ı c4b1
+&imof; => ⊷ e28ab7
+&imped; => Ƶ c6b5
+&in; => ∈ e28888
+&incare; => â„… e28485
+&infin; => ∞ e2889e
+&infintie; => ⧠e2a79d
+&inodot; => ı c4b1
+&int; => ∫ e288ab
+&intcal; => ⊺ e28aba
+&integers; => ℤ e284a4
+&intercal; => ⊺ e28aba
+&intlarhk; => ⨗ e2a897
+&intprod; => ⨼ e2a8bc
+&iocy; => Ñ‘ d191
+&iogon; => į c4af
+&iopf; => ð•š f09d959a
+&iota; => ι ceb9
+&iprod; => ⨼ e2a8bc
+&iquest; => ¿ c2bf
+&iscr; => ð’¾ f09d92be
+&isin; => ∈ e28888
+&isinE; => ⋹ e28bb9
+&isindot; => ⋵ e28bb5
+&isins; => â‹´ e28bb4
+&isinsv; => ⋳ e28bb3
+&isinv; => ∈ e28888
+&it; => ⢠e281a2
+&itilde; => Ä© c4a9
+&iukcy; => Ñ– d196
+&iuml; => ï c3af
+&jcirc; => ĵ c4b5
+&jcy; => й d0b9
+&jfr; => 𔧠f09d94a7
+&jmath; => È· c8b7
+&jopf; => ð•› f09d959b
+&jscr; => ð’¿ f09d92bf
+&jsercy; => ј d198
+&jukcy; => Ñ” d194
+&kappa; => κ ceba
+&kappav; => Ï° cfb0
+&kcedil; => Ä· c4b7
+&kcy; => к d0ba
+&kfr; => 𔨠f09d94a8
+&kgreen; => ĸ c4b8
+&khcy; => Ñ… d185
+&kjcy; => ќ d19c
+&kopf; => 𕜠f09d959c
+&kscr; => ð“€ f09d9380
+&lAarr; => ⇚ e2879a
+&lArr; => ⇠e28790
+&lAtail; => ⤛ e2a49b
+&lBarr; => ⤎ e2a48e
+&lE; => ≦ e289a6
+&lEg; => ⪋ e2aa8b
+&lHar; => ⥢ e2a5a2
+&lacute; => ĺ c4ba
+&laemptyv; => ⦴ e2a6b4
+&lagran; => â„’ e28492
+&lambda; => λ cebb
+&lang; => ⟨ e29fa8
+&langd; => ⦑ e2a691
+&langle; => ⟨ e29fa8
+&lap; => ⪅ e2aa85
+&laquo; => « c2ab
+&larr; => ↠e28690
+&larrb; => ⇤ e287a4
+&larrbfs; => ⤟ e2a49f
+&larrfs; => ⤠e2a49d
+&larrhk; => ↩ e286a9
+&larrlp; => ↫ e286ab
+&larrpl; => ⤹ e2a4b9
+&larrsim; => ⥳ e2a5b3
+&larrtl; => ↢ e286a2
+&lat; => ⪫ e2aaab
+&latail; => ⤙ e2a499
+&late; => ⪭ e2aaad
+&lates; => ⪭︀ e2aaadefb880
+&lbarr; => ⤌ e2a48c
+&lbbrk; => â² e29db2
+&lbrace; => { 7b
+&lbrack; => [ 5b
+&lbrke; => ⦋ e2a68b
+&lbrksld; => ⦠e2a68f
+&lbrkslu; => ⦠e2a68d
+&lcaron; => ľ c4be
+&lcedil; => ļ c4bc
+&lceil; => ⌈ e28c88
+&lcub; => { 7b
+&lcy; => л d0bb
+&ldca; => ⤶ e2a4b6
+&ldquo; => “ e2809c
+&ldquor; => „ e2809e
+&ldrdhar; => ⥧ e2a5a7
+&ldrushar; => ⥋ e2a58b
+&ldsh; => ↲ e286b2
+&le; => ≤ e289a4
+&leftarrow; => ↠e28690
+&leftarrowtail; => ↢ e286a2
+&leftharpoondown; => ↽ e286bd
+&leftharpoonup; => ↼ e286bc
+&leftleftarrows; => ⇇ e28787
+&leftrightarrow; => ↔ e28694
+&leftrightarrows; => ⇆ e28786
+&leftrightharpoons; => ⇋ e2878b
+&leftrightsquigarrow; => ↭ e286ad
+&leftthreetimes; => â‹‹ e28b8b
+&leg; => â‹š e28b9a
+&leq; => ≤ e289a4
+&leqq; => ≦ e289a6
+&leqslant; => ⩽ e2a9bd
+&les; => ⩽ e2a9bd
+&lescc; => ⪨ e2aaa8
+&lesdot; => â©¿ e2a9bf
+&lesdoto; => ⪠e2aa81
+&lesdotor; => ⪃ e2aa83
+&lesg; => ⋚︀ e28b9aefb880
+&lesges; => ⪓ e2aa93
+&lessapprox; => ⪅ e2aa85
+&lessdot; => â‹– e28b96
+&lesseqgtr; => â‹š e28b9a
+&lesseqqgtr; => ⪋ e2aa8b
+&lessgtr; => ≶ e289b6
+&lesssim; => ≲ e289b2
+&lfisht; => ⥼ e2a5bc
+&lfloor; => ⌊ e28c8a
+&lfr; => 𔩠f09d94a9
+&lg; => ≶ e289b6
+&lgE; => ⪑ e2aa91
+&lhard; => ↽ e286bd
+&lharu; => ↼ e286bc
+&lharul; => ⥪ e2a5aa
+&lhblk; => â–„ e29684
+&ljcy; => Ñ™ d199
+&ll; => ≪ e289aa
+&llarr; => ⇇ e28787
+&llcorner; => ⌞ e28c9e
+&llhard; => ⥫ e2a5ab
+&lltri; => â—º e297ba
+&lmidot; => ŀ c580
+&lmoust; => ⎰ e28eb0
+&lmoustache; => ⎰ e28eb0
+&lnE; => ≨ e289a8
+&lnap; => ⪉ e2aa89
+&lnapprox; => ⪉ e2aa89
+&lne; => ⪇ e2aa87
+&lneq; => ⪇ e2aa87
+&lneqq; => ≨ e289a8
+&lnsim; => ⋦ e28ba6
+&loang; => ⟬ e29fac
+&loarr; => ⇽ e287bd
+&lobrk; => ⟦ e29fa6
+&longleftarrow; => ⟵ e29fb5
+&longleftrightarrow; => ⟷ e29fb7
+&longmapsto; => ⟼ e29fbc
+&longrightarrow; => ⟶ e29fb6
+&looparrowleft; => ↫ e286ab
+&looparrowright; => ↬ e286ac
+&lopar; => ⦅ e2a685
+&lopf; => ð• f09d959d
+&loplus; => ⨭ e2a8ad
+&lotimes; => ⨴ e2a8b4
+&lowast; => ∗ e28897
+&lowbar; => _ 5f
+&loz; => â—Š e2978a
+&lozenge; => â—Š e2978a
+&lozf; => ⧫ e2a7ab
+&lpar; => ( 28
+&lparlt; => ⦓ e2a693
+&lrarr; => ⇆ e28786
+&lrcorner; => ⌟ e28c9f
+&lrhar; => ⇋ e2878b
+&lrhard; => ⥭ e2a5ad
+&lrm; => ‎ e2808e
+&lrtri; => ⊿ e28abf
+&lsaquo; => ‹ e280b9
+&lscr; => ð“ f09d9381
+&lsh; => ↰ e286b0
+&lsim; => ≲ e289b2
+&lsime; => ⪠e2aa8d
+&lsimg; => ⪠e2aa8f
+&lsqb; => [ 5b
+&lsquo; => ‘ e28098
+&lsquor; => ‚ e2809a
+&lstrok; => Å‚ c582
+&lt; => < 3c
+&ltcc; => ⪦ e2aaa6
+&ltcir; => ⩹ e2a9b9
+&ltdot; => â‹– e28b96
+&lthree; => â‹‹ e28b8b
+&ltimes; => ⋉ e28b89
+&ltlarr; => ⥶ e2a5b6
+&ltquest; => â©» e2a9bb
+&ltrPar; => ⦖ e2a696
+&ltri; => â—ƒ e29783
+&ltrie; => ⊴ e28ab4
+&ltrif; => â—‚ e29782
+&lurdshar; => ⥊ e2a58a
+&luruhar; => ⥦ e2a5a6
+&lvertneqq; => ≨︀ e289a8efb880
+&lvnE; => ≨︀ e289a8efb880
+&mDDot; => ∺ e288ba
+&macr; => ¯ c2af
+&male; => ♂ e29982
+&malt; => ✠ e29ca0
+&maltese; => ✠ e29ca0
+&map; => ↦ e286a6
+&mapsto; => ↦ e286a6
+&mapstodown; => ↧ e286a7
+&mapstoleft; => ↤ e286a4
+&mapstoup; => ↥ e286a5
+&marker; => â–® e296ae
+&mcomma; => ⨩ e2a8a9
+&mcy; => м d0bc
+&mdash; => — e28094
+&measuredangle; => ∡ e288a1
+&mfr; => 𔪠f09d94aa
+&mho; => ℧ e284a7
+&micro; => µ c2b5
+&mid; => ∣ e288a3
+&midast; => * 2a
+&midcir; => â«° e2abb0
+&middot; => · c2b7
+&minus; => − e28892
+&minusb; => ⊟ e28a9f
+&minusd; => ∸ e288b8
+&minusdu; => ⨪ e2a8aa
+&mlcp; => â«› e2ab9b
+&mldr; => … e280a6
+&mnplus; => ∓ e28893
+&models; => ⊧ e28aa7
+&mopf; => ð•ž f09d959e
+&mp; => ∓ e28893
+&mscr; => ð“‚ f09d9382
+&mstpos; => ∾ e288be
+&mu; => μ cebc
+&multimap; => ⊸ e28ab8
+&mumap; => ⊸ e28ab8
+&nGg; => ⋙̸ e28b99ccb8
+&nGt; => ≫⃒ e289abe28392
+&nGtv; => ≫̸ e289abccb8
+&nLeftarrow; => ⇠e2878d
+&nLeftrightarrow; => ⇎ e2878e
+&nLl; => ⋘̸ e28b98ccb8
+&nLt; => ≪⃒ e289aae28392
+&nLtv; => ≪̸ e289aaccb8
+&nRightarrow; => ⇠e2878f
+&nVDash; => ⊯ e28aaf
+&nVdash; => ⊮ e28aae
+&nabla; => ∇ e28887
+&nacute; => Å„ c584
+&nang; => ∠⃒ e288a0e28392
+&nap; => ≉ e28989
+&napE; => ⩰̸ e2a9b0ccb8
+&napid; => ≋̸ e2898bccb8
+&napos; => ʼn c589
+&napprox; => ≉ e28989
+&natur; => â™® e299ae
+&natural; => â™® e299ae
+&naturals; => â„• e28495
+&nbsp; =>   c2a0
+&nbump; => ≎̸ e2898eccb8
+&nbumpe; => â‰Ì¸ e2898fccb8
+&ncap; => ⩃ e2a983
+&ncaron; => ň c588
+&ncedil; => ņ c586
+&ncong; => ≇ e28987
+&ncongdot; => ⩭̸ e2a9adccb8
+&ncup; => â©‚ e2a982
+&ncy; => н d0bd
+&ndash; => – e28093
+&ne; => ≠ e289a0
+&neArr; => ⇗ e28797
+&nearhk; => ⤤ e2a4a4
+&nearr; => ↗ e28697
+&nearrow; => ↗ e28697
+&nedot; => â‰Ì¸ e28990ccb8
+&nequiv; => ≢ e289a2
+&nesear; => ⤨ e2a4a8
+&nesim; => ≂̸ e28982ccb8
+&nexist; => ∄ e28884
+&nexists; => ∄ e28884
+&nfr; => 𔫠f09d94ab
+&ngE; => ≧̸ e289a7ccb8
+&nge; => ≱ e289b1
+&ngeq; => ≱ e289b1
+&ngeqq; => ≧̸ e289a7ccb8
+&ngeqslant; => ⩾̸ e2a9beccb8
+&nges; => ⩾̸ e2a9beccb8
+&ngsim; => ≵ e289b5
+&ngt; => ≯ e289af
+&ngtr; => ≯ e289af
+&nhArr; => ⇎ e2878e
+&nharr; => ↮ e286ae
+&nhpar; => ⫲ e2abb2
+&ni; => ∋ e2888b
+&nis; => ⋼ e28bbc
+&nisd; => ⋺ e28bba
+&niv; => ∋ e2888b
+&njcy; => Ñš d19a
+&nlArr; => ⇠e2878d
+&nlE; => ≦̸ e289a6ccb8
+&nlarr; => ↚ e2869a
+&nldr; => ‥ e280a5
+&nle; => ≰ e289b0
+&nleftarrow; => ↚ e2869a
+&nleftrightarrow; => ↮ e286ae
+&nleq; => ≰ e289b0
+&nleqq; => ≦̸ e289a6ccb8
+&nleqslant; => ⩽̸ e2a9bdccb8
+&nles; => ⩽̸ e2a9bdccb8
+&nless; => ≮ e289ae
+&nlsim; => ≴ e289b4
+&nlt; => ≮ e289ae
+&nltri; => ⋪ e28baa
+&nltrie; => ⋬ e28bac
+&nmid; => ∤ e288a4
+&nopf; => ð•Ÿ f09d959f
+&not; => ¬ c2ac
+&notin; => ∉ e28889
+&notinE; => ⋹̸ e28bb9ccb8
+&notindot; => ⋵̸ e28bb5ccb8
+&notinva; => ∉ e28889
+&notinvb; => â‹· e28bb7
+&notinvc; => ⋶ e28bb6
+&notni; => ∌ e2888c
+&notniva; => ∌ e2888c
+&notnivb; => ⋾ e28bbe
+&notnivc; => ⋽ e28bbd
+&npar; => ∦ e288a6
+&nparallel; => ∦ e288a6
+&nparsl; => ⫽⃥ e2abbde283a5
+&npart; => ∂̸ e28882ccb8
+&npolint; => ⨔ e2a894
+&npr; => ⊀ e28a80
+&nprcue; => â‹  e28ba0
+&npre; => ⪯̸ e2aaafccb8
+&nprec; => ⊀ e28a80
+&npreceq; => ⪯̸ e2aaafccb8
+&nrArr; => ⇠e2878f
+&nrarr; => ↛ e2869b
+&nrarrc; => ⤳̸ e2a4b3ccb8
+&nrarrw; => â†Ì¸ e2869dccb8
+&nrightarrow; => ↛ e2869b
+&nrtri; => â‹« e28bab
+&nrtrie; => â‹­ e28bad
+&nsc; => ⊠e28a81
+&nsccue; => â‹¡ e28ba1
+&nsce; => ⪰̸ e2aab0ccb8
+&nscr; => 𓃠f09d9383
+&nshortmid; => ∤ e288a4
+&nshortparallel; => ∦ e288a6
+&nsim; => ≠e28981
+&nsime; => ≄ e28984
+&nsimeq; => ≄ e28984
+&nsmid; => ∤ e288a4
+&nspar; => ∦ e288a6
+&nsqsube; => â‹¢ e28ba2
+&nsqsupe; => â‹£ e28ba3
+&nsub; => ⊄ e28a84
+&nsubE; => ⫅̸ e2ab85ccb8
+&nsube; => ⊈ e28a88
+&nsubset; => ⊂⃒ e28a82e28392
+&nsubseteq; => ⊈ e28a88
+&nsubseteqq; => ⫅̸ e2ab85ccb8
+&nsucc; => ⊠e28a81
+&nsucceq; => ⪰̸ e2aab0ccb8
+&nsup; => ⊅ e28a85
+&nsupE; => ⫆̸ e2ab86ccb8
+&nsupe; => ⊉ e28a89
+&nsupset; => ⊃⃒ e28a83e28392
+&nsupseteq; => ⊉ e28a89
+&nsupseteqq; => ⫆̸ e2ab86ccb8
+&ntgl; => ≹ e289b9
+&ntilde; => ñ c3b1
+&ntlg; => ≸ e289b8
+&ntriangleleft; => ⋪ e28baa
+&ntrianglelefteq; => ⋬ e28bac
+&ntriangleright; => â‹« e28bab
+&ntrianglerighteq; => â‹­ e28bad
+&nu; => ν cebd
+&num; => # 23
+&numero; => â„– e28496
+&numsp; =>   e28087
+&nvDash; => ⊭ e28aad
+&nvHarr; => ⤄ e2a484
+&nvap; => â‰âƒ’ e2898de28392
+&nvdash; => ⊬ e28aac
+&nvge; => ≥⃒ e289a5e28392
+&nvgt; => >⃒ 3ee28392
+&nvinfin; => ⧞ e2a79e
+&nvlArr; => ⤂ e2a482
+&nvle; => ≤⃒ e289a4e28392
+&nvlt; => <⃒ 3ce28392
+&nvltrie; => ⊴⃒ e28ab4e28392
+&nvrArr; => ⤃ e2a483
+&nvrtrie; => ⊵⃒ e28ab5e28392
+&nvsim; => ∼⃒ e288bce28392
+&nwArr; => ⇖ e28796
+&nwarhk; => ⤣ e2a4a3
+&nwarr; => ↖ e28696
+&nwarrow; => ↖ e28696
+&nwnear; => ⤧ e2a4a7
+&oS; => Ⓢ e29388
+&oacute; => ó c3b3
+&oast; => ⊛ e28a9b
+&ocir; => ⊚ e28a9a
+&ocirc; => ô c3b4
+&ocy; => о d0be
+&odash; => ⊠e28a9d
+&odblac; => Å‘ c591
+&odiv; => ⨸ e2a8b8
+&odot; => ⊙ e28a99
+&odsold; => ⦼ e2a6bc
+&oelig; => Å“ c593
+&ofcir; => ⦿ e2a6bf
+&ofr; => 𔬠f09d94ac
+&ogon; => Ë› cb9b
+&ograve; => ò c3b2
+&ogt; => ⧠e2a781
+&ohbar; => ⦵ e2a6b5
+&ohm; => Ω cea9
+&oint; => ∮ e288ae
+&olarr; => ↺ e286ba
+&olcir; => ⦾ e2a6be
+&olcross; => ⦻ e2a6bb
+&oline; => ‾ e280be
+&olt; => ⧀ e2a780
+&omacr; => Å c58d
+&omega; => ω cf89
+&omicron; => ο cebf
+&omid; => ⦶ e2a6b6
+&ominus; => ⊖ e28a96
+&oopf; => ð•  f09d95a0
+&opar; => ⦷ e2a6b7
+&operp; => ⦹ e2a6b9
+&oplus; => ⊕ e28a95
+&or; => ∨ e288a8
+&orarr; => ↻ e286bb
+&ord; => â© e2a99d
+&order; => â„´ e284b4
+&orderof; => â„´ e284b4
+&ordf; => ª c2aa
+&ordm; => º c2ba
+&origof; => ⊶ e28ab6
+&oror; => â©– e2a996
+&orslope; => â©— e2a997
+&orv; => â©› e2a99b
+&oscr; => â„´ e284b4
+&oslash; => ø c3b8
+&osol; => ⊘ e28a98
+&otilde; => õ c3b5
+&otimes; => ⊗ e28a97
+&otimesas; => ⨶ e2a8b6
+&ouml; => ö c3b6
+&ovbar; => ⌽ e28cbd
+&par; => ∥ e288a5
+&para; => ¶ c2b6
+&parallel; => ∥ e288a5
+&parsim; => ⫳ e2abb3
+&parsl; => ⫽ e2abbd
+&part; => ∂ e28882
+&pcy; => п d0bf
+&percnt; => % 25
+&period; => . 2e
+&permil; => ‰ e280b0
+&perp; => ⊥ e28aa5
+&pertenk; => ‱ e280b1
+&pfr; => ð”­ f09d94ad
+&phi; => φ cf86
+&phiv; => Ï• cf95
+&phmmat; => ℳ e284b3
+&phone; => ☎ e2988e
+&pi; => π cf80
+&pitchfork; => â‹” e28b94
+&piv; => Ï– cf96
+&planck; => â„ e2848f
+&planckh; => â„Ž e2848e
+&plankv; => â„ e2848f
+&plus; => + 2b
+&plusacir; => ⨣ e2a8a3
+&plusb; => ⊞ e28a9e
+&pluscir; => ⨢ e2a8a2
+&plusdo; => ∔ e28894
+&plusdu; => ⨥ e2a8a5
+&pluse; => ⩲ e2a9b2
+&plusmn; => ± c2b1
+&plussim; => ⨦ e2a8a6
+&plustwo; => ⨧ e2a8a7
+&pm; => ± c2b1
+&pointint; => ⨕ e2a895
+&popf; => ð•¡ f09d95a1
+&pound; => £ c2a3
+&pr; => ≺ e289ba
+&prE; => ⪳ e2aab3
+&prap; => ⪷ e2aab7
+&prcue; => ≼ e289bc
+&pre; => ⪯ e2aaaf
+&prec; => ≺ e289ba
+&precapprox; => ⪷ e2aab7
+&preccurlyeq; => ≼ e289bc
+&preceq; => ⪯ e2aaaf
+&precnapprox; => ⪹ e2aab9
+&precneqq; => ⪵ e2aab5
+&precnsim; => ⋨ e28ba8
+&precsim; => ≾ e289be
+&prime; => ′ e280b2
+&primes; => â„™ e28499
+&prnE; => ⪵ e2aab5
+&prnap; => ⪹ e2aab9
+&prnsim; => ⋨ e28ba8
+&prod; => ∠e2888f
+&profalar; => ⌮ e28cae
+&profline; => ⌒ e28c92
+&profsurf; => ⌓ e28c93
+&prop; => ∠e2889d
+&propto; => ∠e2889d
+&prsim; => ≾ e289be
+&prurel; => ⊰ e28ab0
+&pscr; => ð“… f09d9385
+&psi; => ψ cf88
+&puncsp; =>   e28088
+&qfr; => ð”® f09d94ae
+&qint; => ⨌ e2a88c
+&qopf; => ð•¢ f09d95a2
+&qprime; => â— e28197
+&qscr; => 𓆠f09d9386
+&quaternions; => â„ e2848d
+&quatint; => ⨖ e2a896
+&quest; => ? 3f
+&questeq; => ≟ e2899f
+&quot; => " 22
+&rAarr; => ⇛ e2879b
+&rArr; => ⇒ e28792
+&rAtail; => ⤜ e2a49c
+&rBarr; => ⤠e2a48f
+&rHar; => ⥤ e2a5a4
+&race; => ∽̱ e288bdccb1
+&racute; => Å• c595
+&radic; => √ e2889a
+&raemptyv; => ⦳ e2a6b3
+&rang; => ⟩ e29fa9
+&rangd; => ⦒ e2a692
+&range; => ⦥ e2a6a5
+&rangle; => ⟩ e29fa9
+&raquo; => » c2bb
+&rarr; => → e28692
+&rarrap; => ⥵ e2a5b5
+&rarrb; => ⇥ e287a5
+&rarrbfs; => ⤠ e2a4a0
+&rarrc; => ⤳ e2a4b3
+&rarrfs; => ⤞ e2a49e
+&rarrhk; => ↪ e286aa
+&rarrlp; => ↬ e286ac
+&rarrpl; => ⥅ e2a585
+&rarrsim; => ⥴ e2a5b4
+&rarrtl; => ↣ e286a3
+&rarrw; => ↠e2869d
+&ratail; => ⤚ e2a49a
+&ratio; => ∶ e288b6
+&rationals; => â„š e2849a
+&rbarr; => ⤠e2a48d
+&rbbrk; => â³ e29db3
+&rbrace; => } 7d
+&rbrack; => ] 5d
+&rbrke; => ⦌ e2a68c
+&rbrksld; => ⦎ e2a68e
+&rbrkslu; => ⦠e2a690
+&rcaron; => Å™ c599
+&rcedil; => Å— c597
+&rceil; => ⌉ e28c89
+&rcub; => } 7d
+&rcy; => р d180
+&rdca; => ⤷ e2a4b7
+&rdldhar; => ⥩ e2a5a9
+&rdquo; => †e2809d
+&rdquor; => †e2809d
+&rdsh; => ↳ e286b3
+&real; => ℜ e2849c
+&realine; => â„› e2849b
+&realpart; => ℜ e2849c
+&reals; => â„ e2849d
+&rect; => â–­ e296ad
+&reg; => ® c2ae
+&rfisht; => ⥽ e2a5bd
+&rfloor; => ⌋ e28c8b
+&rfr; => 𔯠f09d94af
+&rhard; => ⇠e28781
+&rharu; => ⇀ e28780
+&rharul; => ⥬ e2a5ac
+&rho; => Ï cf81
+&rhov; => ϱ cfb1
+&rightarrow; => → e28692
+&rightarrowtail; => ↣ e286a3
+&rightharpoondown; => ⇠e28781
+&rightharpoonup; => ⇀ e28780
+&rightleftarrows; => ⇄ e28784
+&rightleftharpoons; => ⇌ e2878c
+&rightrightarrows; => ⇉ e28789
+&rightsquigarrow; => ↠e2869d
+&rightthreetimes; => ⋌ e28b8c
+&ring; => Ëš cb9a
+&risingdotseq; => ≓ e28993
+&rlarr; => ⇄ e28784
+&rlhar; => ⇌ e2878c
+&rlm; => †e2808f
+&rmoust; => ⎱ e28eb1
+&rmoustache; => ⎱ e28eb1
+&rnmid; => â«® e2abae
+&roang; => ⟭ e29fad
+&roarr; => ⇾ e287be
+&robrk; => ⟧ e29fa7
+&ropar; => ⦆ e2a686
+&ropf; => ð•£ f09d95a3
+&roplus; => ⨮ e2a8ae
+&rotimes; => ⨵ e2a8b5
+&rpar; => ) 29
+&rpargt; => ⦔ e2a694
+&rppolint; => ⨒ e2a892
+&rrarr; => ⇉ e28789
+&rsaquo; => › e280ba
+&rscr; => 𓇠f09d9387
+&rsh; => ↱ e286b1
+&rsqb; => ] 5d
+&rsquo; => ’ e28099
+&rsquor; => ’ e28099
+&rthree; => ⋌ e28b8c
+&rtimes; => â‹Š e28b8a
+&rtri; => â–¹ e296b9
+&rtrie; => ⊵ e28ab5
+&rtrif; => â–¸ e296b8
+&rtriltri; => ⧎ e2a78e
+&ruluhar; => ⥨ e2a5a8
+&rx; => â„ž e2849e
+&sacute; => Å› c59b
+&sbquo; => ‚ e2809a
+&sc; => ≻ e289bb
+&scE; => ⪴ e2aab4
+&scap; => ⪸ e2aab8
+&scaron; => Å¡ c5a1
+&sccue; => ≽ e289bd
+&sce; => ⪰ e2aab0
+&scedil; => ÅŸ c59f
+&scirc; => Å c59d
+&scnE; => ⪶ e2aab6
+&scnap; => ⪺ e2aaba
+&scnsim; => â‹© e28ba9
+&scpolint; => ⨓ e2a893
+&scsim; => ≿ e289bf
+&scy; => Ñ d181
+&sdot; => â‹… e28b85
+&sdotb; => ⊡ e28aa1
+&sdote; => ⩦ e2a9a6
+&seArr; => ⇘ e28798
+&searhk; => ⤥ e2a4a5
+&searr; => ↘ e28698
+&searrow; => ↘ e28698
+&sect; => § c2a7
+&semi; => ; 3b
+&seswar; => ⤩ e2a4a9
+&setminus; => ∖ e28896
+&setmn; => ∖ e28896
+&sext; => ✶ e29cb6
+&sfr; => ð”° f09d94b0
+&sfrown; => ⌢ e28ca2
+&sharp; => ♯ e299af
+&shchcy; => щ d189
+&shcy; => ш d188
+&shortmid; => ∣ e288a3
+&shortparallel; => ∥ e288a5
+&shy; => ­ c2ad
+&sigma; => σ cf83
+&sigmaf; => Ï‚ cf82
+&sigmav; => Ï‚ cf82
+&sim; => ∼ e288bc
+&simdot; => ⩪ e2a9aa
+&sime; => ≃ e28983
+&simeq; => ≃ e28983
+&simg; => ⪞ e2aa9e
+&simgE; => ⪠ e2aaa0
+&siml; => ⪠e2aa9d
+&simlE; => ⪟ e2aa9f
+&simne; => ≆ e28986
+&simplus; => ⨤ e2a8a4
+&simrarr; => ⥲ e2a5b2
+&slarr; => ↠e28690
+&smallsetminus; => ∖ e28896
+&smashp; => ⨳ e2a8b3
+&smeparsl; => ⧤ e2a7a4
+&smid; => ∣ e288a3
+&smile; => ⌣ e28ca3
+&smt; => ⪪ e2aaaa
+&smte; => ⪬ e2aaac
+&smtes; => ⪬︀ e2aaacefb880
+&softcy; => ь d18c
+&sol; => / 2f
+&solb; => ⧄ e2a784
+&solbar; => ⌿ e28cbf
+&sopf; => 𕤠f09d95a4
+&spades; => â™  e299a0
+&spadesuit; => â™  e299a0
+&spar; => ∥ e288a5
+&sqcap; => ⊓ e28a93
+&sqcaps; => ⊓︀ e28a93efb880
+&sqcup; => ⊔ e28a94
+&sqcups; => ⊔︀ e28a94efb880
+&sqsub; => ⊠e28a8f
+&sqsube; => ⊑ e28a91
+&sqsubset; => ⊠e28a8f
+&sqsubseteq; => ⊑ e28a91
+&sqsup; => ⊠e28a90
+&sqsupe; => ⊒ e28a92
+&sqsupset; => ⊠e28a90
+&sqsupseteq; => ⊒ e28a92
+&squ; => â–¡ e296a1
+&square; => â–¡ e296a1
+&squarf; => â–ª e296aa
+&squf; => â–ª e296aa
+&srarr; => → e28692
+&sscr; => 𓈠f09d9388
+&ssetmn; => ∖ e28896
+&ssmile; => ⌣ e28ca3
+&sstarf; => ⋆ e28b86
+&star; => ☆ e29886
+&starf; => ★ e29885
+&straightepsilon; => ϵ cfb5
+&straightphi; => Ï• cf95
+&strns; => ¯ c2af
+&sub; => ⊂ e28a82
+&subE; => â«… e2ab85
+&subdot; => ⪽ e2aabd
+&sube; => ⊆ e28a86
+&subedot; => ⫃ e2ab83
+&submult; => â« e2ab81
+&subnE; => â«‹ e2ab8b
+&subne; => ⊊ e28a8a
+&subplus; => ⪿ e2aabf
+&subrarr; => ⥹ e2a5b9
+&subset; => ⊂ e28a82
+&subseteq; => ⊆ e28a86
+&subseteqq; => â«… e2ab85
+&subsetneq; => ⊊ e28a8a
+&subsetneqq; => â«‹ e2ab8b
+&subsim; => ⫇ e2ab87
+&subsub; => â«• e2ab95
+&subsup; => â«“ e2ab93
+&succ; => ≻ e289bb
+&succapprox; => ⪸ e2aab8
+&succcurlyeq; => ≽ e289bd
+&succeq; => ⪰ e2aab0
+&succnapprox; => ⪺ e2aaba
+&succneqq; => ⪶ e2aab6
+&succnsim; => â‹© e28ba9
+&succsim; => ≿ e289bf
+&sum; => ∑ e28891
+&sung; => ♪ e299aa
+&sup; => ⊃ e28a83
+&sup1; => ¹ c2b9
+&sup2; => ² c2b2
+&sup3; => ³ c2b3
+&supE; => ⫆ e2ab86
+&supdot; => ⪾ e2aabe
+&supdsub; => ⫘ e2ab98
+&supe; => ⊇ e28a87
+&supedot; => â«„ e2ab84
+&suphsol; => ⟉ e29f89
+&suphsub; => â«— e2ab97
+&suplarr; => ⥻ e2a5bb
+&supmult; => â«‚ e2ab82
+&supnE; => ⫌ e2ab8c
+&supne; => ⊋ e28a8b
+&supplus; => â«€ e2ab80
+&supset; => ⊃ e28a83
+&supseteq; => ⊇ e28a87
+&supseteqq; => ⫆ e2ab86
+&supsetneq; => ⊋ e28a8b
+&supsetneqq; => ⫌ e2ab8c
+&supsim; => ⫈ e2ab88
+&supsub; => â«” e2ab94
+&supsup; => â«– e2ab96
+&swArr; => ⇙ e28799
+&swarhk; => ⤦ e2a4a6
+&swarr; => ↙ e28699
+&swarrow; => ↙ e28699
+&swnwar; => ⤪ e2a4aa
+&szlig; => ß c39f
+&target; => ⌖ e28c96
+&tau; => Ï„ cf84
+&tbrk; => ⎴ e28eb4
+&tcaron; => ť c5a5
+&tcedil; => ţ c5a3
+&tcy; => Ñ‚ d182
+&tdot; => ⃛ e2839b
+&telrec; => ⌕ e28c95
+&tfr; => ð”± f09d94b1
+&there4; => ∴ e288b4
+&therefore; => ∴ e288b4
+&theta; => θ ceb8
+&thetasym; => Ï‘ cf91
+&thetav; => Ï‘ cf91
+&thickapprox; => ≈ e28988
+&thicksim; => ∼ e288bc
+&thinsp; =>   e28089
+&thkap; => ≈ e28988
+&thksim; => ∼ e288bc
+&thorn; => þ c3be
+&tilde; => ˜ cb9c
+&times; => × c397
+&timesb; => ⊠ e28aa0
+&timesbar; => ⨱ e2a8b1
+&timesd; => ⨰ e2a8b0
+&tint; => ∭ e288ad
+&toea; => ⤨ e2a4a8
+&top; => ⊤ e28aa4
+&topbot; => ⌶ e28cb6
+&topcir; => ⫱ e2abb1
+&topf; => ð•¥ f09d95a5
+&topfork; => â«š e2ab9a
+&tosa; => ⤩ e2a4a9
+&tprime; => ‴ e280b4
+&trade; => â„¢ e284a2
+&triangle; => â–µ e296b5
+&triangledown; => â–¿ e296bf
+&triangleleft; => â—ƒ e29783
+&trianglelefteq; => ⊴ e28ab4
+&triangleq; => ≜ e2899c
+&triangleright; => â–¹ e296b9
+&trianglerighteq; => ⊵ e28ab5
+&tridot; => â—¬ e297ac
+&trie; => ≜ e2899c
+&triminus; => ⨺ e2a8ba
+&triplus; => ⨹ e2a8b9
+&trisb; => ⧠e2a78d
+&tritime; => ⨻ e2a8bb
+&trpezium; => ⢠e28fa2
+&tscr; => 𓉠f09d9389
+&tscy; => ц d186
+&tshcy; => Ñ› d19b
+&tstrok; => ŧ c5a7
+&twixt; => ≬ e289ac
+&twoheadleftarrow; => ↞ e2869e
+&twoheadrightarrow; => ↠ e286a0
+&uArr; => ⇑ e28791
+&uHar; => ⥣ e2a5a3
+&uacute; => ú c3ba
+&uarr; => ↑ e28691
+&ubrcy; => Ñž d19e
+&ubreve; => Å­ c5ad
+&ucirc; => û c3bb
+&ucy; => у d183
+&udarr; => ⇅ e28785
+&udblac; => ű c5b1
+&udhar; => ⥮ e2a5ae
+&ufisht; => ⥾ e2a5be
+&ufr; => 𔲠f09d94b2
+&ugrave; => ù c3b9
+&uharl; => ↿ e286bf
+&uharr; => ↾ e286be
+&uhblk; => â–€ e29680
+&ulcorn; => ⌜ e28c9c
+&ulcorner; => ⌜ e28c9c
+&ulcrop; => ⌠e28c8f
+&ultri; => â—¸ e297b8
+&umacr; => Å« c5ab
+&uml; => ¨ c2a8
+&uogon; => ų c5b3
+&uopf; => 𕦠f09d95a6
+&uparrow; => ↑ e28691
+&updownarrow; => ↕ e28695
+&upharpoonleft; => ↿ e286bf
+&upharpoonright; => ↾ e286be
+&uplus; => ⊎ e28a8e
+&upsi; => Ï… cf85
+&upsih; => Ï’ cf92
+&upsilon; => Ï… cf85
+&upuparrows; => ⇈ e28788
+&urcorn; => ⌠e28c9d
+&urcorner; => ⌠e28c9d
+&urcrop; => ⌎ e28c8e
+&uring; => ů c5af
+&urtri; => â—¹ e297b9
+&uscr; => ð“Š f09d938a
+&utdot; => â‹° e28bb0
+&utilde; => Å© c5a9
+&utri; => â–µ e296b5
+&utrif; => â–´ e296b4
+&uuarr; => ⇈ e28788
+&uuml; => ü c3bc
+&uwangle; => ⦧ e2a6a7
+&vArr; => ⇕ e28795
+&vBar; => ⫨ e2aba8
+&vBarv; => â«© e2aba9
+&vDash; => ⊨ e28aa8
+&vangrt; => ⦜ e2a69c
+&varepsilon; => ϵ cfb5
+&varkappa; => Ï° cfb0
+&varnothing; => ∅ e28885
+&varphi; => Ï• cf95
+&varpi; => Ï– cf96
+&varpropto; => ∠e2889d
+&varr; => ↕ e28695
+&varrho; => ϱ cfb1
+&varsigma; => Ï‚ cf82
+&varsubsetneq; => ⊊︀ e28a8aefb880
+&varsubsetneqq; => ⫋︀ e2ab8befb880
+&varsupsetneq; => ⊋︀ e28a8befb880
+&varsupsetneqq; => ⫌︀ e2ab8cefb880
+&vartheta; => Ï‘ cf91
+&vartriangleleft; => ⊲ e28ab2
+&vartriangleright; => ⊳ e28ab3
+&vcy; => в d0b2
+&vdash; => ⊢ e28aa2
+&vee; => ∨ e288a8
+&veebar; => ⊻ e28abb
+&veeeq; => ≚ e2899a
+&vellip; => â‹® e28bae
+&verbar; => | 7c
+&vert; => | 7c
+&vfr; => 𔳠f09d94b3
+&vltri; => ⊲ e28ab2
+&vnsub; => ⊂⃒ e28a82e28392
+&vnsup; => ⊃⃒ e28a83e28392
+&vopf; => 𕧠f09d95a7
+&vprop; => ∠e2889d
+&vrtri; => ⊳ e28ab3
+&vscr; => ð“‹ f09d938b
+&vsubnE; => ⫋︀ e2ab8befb880
+&vsubne; => ⊊︀ e28a8aefb880
+&vsupnE; => ⫌︀ e2ab8cefb880
+&vsupne; => ⊋︀ e28a8befb880
+&vzigzag; => ⦚ e2a69a
+&wcirc; => ŵ c5b5
+&wedbar; => â©Ÿ e2a99f
+&wedge; => ∧ e288a7
+&wedgeq; => ≙ e28999
+&weierp; => ℘ e28498
+&wfr; => ð”´ f09d94b4
+&wopf; => 𕨠f09d95a8
+&wp; => ℘ e28498
+&wr; => ≀ e28980
+&wreath; => ≀ e28980
+&wscr; => 𓌠f09d938c
+&xcap; => â‹‚ e28b82
+&xcirc; => â—¯ e297af
+&xcup; => ⋃ e28b83
+&xdtri; => â–½ e296bd
+&xfr; => 𔵠f09d94b5
+&xhArr; => ⟺ e29fba
+&xharr; => ⟷ e29fb7
+&xi; => ξ cebe
+&xlArr; => ⟸ e29fb8
+&xlarr; => ⟵ e29fb5
+&xmap; => ⟼ e29fbc
+&xnis; => â‹» e28bbb
+&xodot; => ⨀ e2a880
+&xopf; => ð•© f09d95a9
+&xoplus; => ⨠e2a881
+&xotime; => ⨂ e2a882
+&xrArr; => ⟹ e29fb9
+&xrarr; => ⟶ e29fb6
+&xscr; => ð“ f09d938d
+&xsqcup; => ⨆ e2a886
+&xuplus; => ⨄ e2a884
+&xutri; => â–³ e296b3
+&xvee; => â‹ e28b81
+&xwedge; => â‹€ e28b80
+&yacute; => ý c3bd
+&yacy; => Ñ d18f
+&ycirc; => Å· c5b7
+&ycy; => Ñ‹ d18b
+&yen; => ¥ c2a5
+&yfr; => 𔶠f09d94b6
+&yicy; => Ñ— d197
+&yopf; => 𕪠f09d95aa
+&yscr; => ð“Ž f09d938e
+&yucy; => ÑŽ d18e
+&yuml; => ÿ c3bf
+&zacute; => ź c5ba
+&zcaron; => ž c5be
+&zcy; => з d0b7
+&zdot; => ż c5bc
+&zeetrf; => ℨ e284a8
+&zeta; => ζ ceb6
+&zfr; => ð”· f09d94b7
+&zhcy; => ж d0b6
+&zigrarr; => ⇠e2879d
+&zopf; => ð•« f09d95ab
+&zscr; => ð“ f09d938f
+&zwj; => †e2808d
+&zwnj; => ‌ e2808c
diff --git a/ext/standard/tests/strings/htmlentities13.phpt b/ext/standard/tests/strings/htmlentities13.phpt
index 2c559916e9..73b630f60c 100644
--- a/ext/standard/tests/strings/htmlentities13.phpt
+++ b/ext/standard/tests/strings/htmlentities13.phpt
@@ -9,6 +9,8 @@ default_charset=EUC-JP
print ini_get('default_charset')."\n";
var_dump(htmlentities("\xa1\xa2\xa1\xa3\xa1\xa4", ENT_QUOTES, ''));
?>
---EXPECT--
+--EXPECTF--
EUC-JP
+
+Strict Standards: htmlentities(): Only basic entities substitution is supported for multi-byte encodings other than UTF-8; functionality is equivalent to htmlspecialchars in %s on line %d
string(6) "¡¢¡£¡¤"
diff --git a/ext/standard/tests/strings/htmlentities14.phpt b/ext/standard/tests/strings/htmlentities14.phpt
index 9190d26515..a97cac536d 100644
--- a/ext/standard/tests/strings/htmlentities14.phpt
+++ b/ext/standard/tests/strings/htmlentities14.phpt
@@ -9,6 +9,8 @@ default_charset=Shift_JIS
print ini_get('default_charset')."\n";
var_dump(htmlentities("\x81\x41\x81\x42\x81\x43", ENT_QUOTES, ''));
?>
---EXPECT--
+--EXPECTF--
Shift_JIS
+
+Strict Standards: htmlentities(): Only basic entities substitution is supported for multi-byte encodings other than UTF-8; functionality is equivalent to htmlspecialchars in %s on line %d
string(6) "ABC"
diff --git a/ext/standard/tests/strings/htmlentities16.phpt b/ext/standard/tests/strings/htmlentities16.phpt
index 438b0e490b..c49584e90f 100644
--- a/ext/standard/tests/strings/htmlentities16.phpt
+++ b/ext/standard/tests/strings/htmlentities16.phpt
@@ -14,10 +14,12 @@ output_handler=
<?php
mb_internal_encoding('cp1251');
$str = "\x88\xa9\xf0\xee\xf1\xea\xee\xf8\xed\xfb\xe9";
-var_dump(bin2hex($str), htmlentities($str, ENT_QUOTES, ''));
+var_dump(bin2hex($str), bin2hex(htmlentities($str, ENT_QUOTES, '')));
+var_dump(htmlentities($str, ENT_QUOTES | ENT_HTML5, ''));
?>
===DONE===
--EXPECT--
string(22) "88a9f0eef1eaeef8edfbe9"
-string(75) "&euro;&copy;&#1088;&#1086;&#1089;&#1082;&#1086;&#1096;&#1085;&#1099;&#1081;"
+string(42) "266575726f3b26636f70793bf0eef1eaeef8edfbe9"
+string(58) "&euro;&copy;&rcy;&ocy;&scy;&kcy;&ocy;&shcy;&ncy;&ycy;&jcy;"
===DONE===
diff --git a/ext/standard/tests/strings/htmlentities18.phpt b/ext/standard/tests/strings/htmlentities18.phpt
index 8970be8a08..d7bd2302c1 100644
--- a/ext/standard/tests/strings/htmlentities18.phpt
+++ b/ext/standard/tests/strings/htmlentities18.phpt
@@ -29,8 +29,8 @@ string(33) "test&#043;s &amp; some more &#68;"
string(33) "test&#043;s &amp; some more &#68;"
string(34) "test&#x2b;s &amp; some more &#X44;"
string(34) "test&#x2b;s &amp; some more &#X44;"
-string(35) "&; &amp;amp &amp;#a; &9; &amp;#xyz;"
-string(35) "&; &amp;amp &amp;#a; &9; &amp;#xyz;"
+string(43) "&amp;; &amp;amp &amp;#a; &amp;9; &amp;#xyz;"
+string(43) "&amp;; &amp;amp &amp;#a; &amp;9; &amp;#xyz;"
string(32) "&amp;kffjadfdhsjfhjasdhffasdfas;"
string(32) "&amp;kffjadfdhsjfhjasdhffasdfas;"
string(16) "&amp;#8787978789"
diff --git a/ext/standard/tests/strings/htmlentities19.phpt b/ext/standard/tests/strings/htmlentities19.phpt
new file mode 100644
index 0000000000..a90358c613
--- /dev/null
+++ b/ext/standard/tests/strings/htmlentities19.phpt
@@ -0,0 +1,30 @@
+--TEST--
+htmlentities() / htmlspecialchars() ENT_SUBSTITUTE
+--FILE--
+<?php
+$tests = array(
+ "\x41\xC2\x3E\x42", // Unicode TR #36, 3.1.1; do not consume valid successor bytes
+ "\xE3\x80\x22", // Unicode TR #36, 3.6.1; use strategy #2
+ "\x41\x98\xBA\x42\xE2\x98\x43\xE2\x98\xBA\xE2\x98", // example from HTML5, section 2.4
+);
+
+foreach ($tests as $test) {
+ $a = htmlentities($test, ENT_QUOTES | ENT_SUBSTITUTE, "UTF-8");
+ var_dump($a, bin2hex($a));
+ $a = htmlspecialchars($test, ENT_QUOTES | ENT_SUBSTITUTE, "UTF-8");
+ var_dump($a, bin2hex($a));
+}
+?>
+--EXPECT--
+string(9) "A�&gt;B"
+string(18) "41efbfbd2667743b42"
+string(9) "A�&gt;B"
+string(18) "41efbfbd2667743b42"
+string(9) "�&quot;"
+string(18) "efbfbd2671756f743b"
+string(9) "�&quot;"
+string(18) "efbfbd2671756f743b"
+string(18) "A��B�C☺�"
+string(36) "41efbfbdefbfbd42efbfbd43e298baefbfbd"
+string(18) "A��B�C☺�"
+string(36) "41efbfbdefbfbd42efbfbd43e298baefbfbd"
diff --git a/ext/standard/tests/strings/htmlentities20.phpt b/ext/standard/tests/strings/htmlentities20.phpt
new file mode 100644
index 0000000000..92c996bcb4
--- /dev/null
+++ b/ext/standard/tests/strings/htmlentities20.phpt
@@ -0,0 +1,199 @@
+--TEST--
+htmlentities() / htmlspecialchars() ENT_DISALLOWED
+--FILE--
+<?php
+function codepoint_to_utf8($k) {
+ if ($k < 0x80) {
+ $retval = pack('C', $k);
+ } else if ($k < 0x800) {
+ $retval = pack('C2',
+ 0xc0 | ($k >> 6),
+ 0x80 | ($k & 0x3f));
+ } else if ($k < 0x10000) {
+ $retval = pack('C3',
+ 0xe0 | ($k >> 12),
+ 0x80 | (($k >> 6) & 0x3f),
+ 0x80 | ($k & 0x3f));
+ } else {
+ $retval = pack('C4',
+ 0xf0 | ($k >> 18),
+ 0x80 | (($k >> 12) & 0x3f),
+ 0x80 | (($k >> 6) & 0x3f),
+ 0x80 | ($k & 0x3f));
+ }
+ return $retval;
+}
+
+$tests = array(
+ 0x00, //C0
+ 0x01,
+ 0x09,
+ 0x0A,
+ 0x0B,
+ 0x0C,
+ 0x0D,
+ 0x0E,
+ 0x1F,
+ 0x20, //allowed always
+ 0x7F, //DEL
+ 0x80, //C1
+ 0x9F,
+ 0xA0, //allowed always
+ 0xD7FF, //surrogates
+ 0xD800,
+ 0xDFFF,
+ 0xE000, //allowed always
+ 0xFFFE, //nonchar
+ 0xFFFF,
+ 0xFDCF, //allowed always
+ 0xFDD0, //nonchar
+ 0xFDEF,
+ 0xFDF0, //allowed always
+ 0x2FFFE, //nonchar
+ 0x2FFFF,
+);
+$tests2 = array_map('codepoint_to_utf8', $tests);
+
+$subchr = codepoint_to_utf8(0xFFFD);
+
+function test($flag) {
+ global $tests, $tests2;
+ $i = -1;
+ foreach ($tests2 as $test) {
+ $i++;
+ $a = htmlentities($test, $flag | ENT_DISALLOWED, "UTF-8");
+ $b = htmlspecialchars($test, $flag | ENT_DISALLOWED, "UTF-8");
+ if ($a == "" && $b == "") { echo sprintf("%05X", $tests[$i]), ": INVALID SEQUENCE\n"; continue; }
+ echo sprintf("%05X", $tests[$i]), ": ", bin2hex($a), " ", bin2hex($b), "\n";
+ }
+}
+
+echo "*** Testing HTML 4.01 ***\n";
+
+test(ENT_HTML401);
+
+echo "\n*** Testing XHTML 1.0 ***\n";
+
+test(ENT_XHTML);
+
+echo "\n*** Testing HTML 5 ***\n";
+
+test(ENT_HTML5);
+
+echo "\n*** Testing XML 1.0 ***\n";
+
+test(ENT_XML1);
+
+?>
+--EXPECT--
+*** Testing HTML 4.01 ***
+00000: efbfbd efbfbd
+00001: efbfbd efbfbd
+00009: 09 09
+0000A: 0a 0a
+0000B: efbfbd efbfbd
+0000C: efbfbd efbfbd
+0000D: 0d 0d
+0000E: efbfbd efbfbd
+0001F: efbfbd efbfbd
+00020: 20 20
+0007F: efbfbd efbfbd
+00080: efbfbd efbfbd
+0009F: efbfbd efbfbd
+000A0: 266e6273703b c2a0
+0D7FF: ed9fbf ed9fbf
+0D800: INVALID SEQUENCE
+0DFFF: INVALID SEQUENCE
+0E000: ee8080 ee8080
+0FFFE: efbfbe efbfbe
+0FFFF: efbfbf efbfbf
+0FDCF: efb78f efb78f
+0FDD0: efb790 efb790
+0FDEF: efb7af efb7af
+0FDF0: efb7b0 efb7b0
+2FFFE: f0afbfbe f0afbfbe
+2FFFF: f0afbfbf f0afbfbf
+
+*** Testing XHTML 1.0 ***
+00000: efbfbd efbfbd
+00001: efbfbd efbfbd
+00009: 09 09
+0000A: 0a 0a
+0000B: efbfbd efbfbd
+0000C: efbfbd efbfbd
+0000D: 0d 0d
+0000E: efbfbd efbfbd
+0001F: efbfbd efbfbd
+00020: 20 20
+0007F: 7f 7f
+00080: c280 c280
+0009F: c29f c29f
+000A0: 266e6273703b c2a0
+0D7FF: ed9fbf ed9fbf
+0D800: INVALID SEQUENCE
+0DFFF: INVALID SEQUENCE
+0E000: ee8080 ee8080
+0FFFE: efbfbd efbfbd
+0FFFF: efbfbd efbfbd
+0FDCF: efb78f efb78f
+0FDD0: efb790 efb790
+0FDEF: efb7af efb7af
+0FDF0: efb7b0 efb7b0
+2FFFE: f0afbfbe f0afbfbe
+2FFFF: f0afbfbf f0afbfbf
+
+*** Testing HTML 5 ***
+00000: efbfbd efbfbd
+00001: efbfbd efbfbd
+00009: 265461623b 09
+0000A: 264e65774c696e653b 0a
+0000B: efbfbd efbfbd
+0000C: 0c 0c
+0000D: 0d 0d
+0000E: efbfbd efbfbd
+0001F: efbfbd efbfbd
+00020: 20 20
+0007F: efbfbd efbfbd
+00080: efbfbd efbfbd
+0009F: efbfbd efbfbd
+000A0: 266e6273703b c2a0
+0D7FF: ed9fbf ed9fbf
+0D800: INVALID SEQUENCE
+0DFFF: INVALID SEQUENCE
+0E000: ee8080 ee8080
+0FFFE: efbfbd efbfbd
+0FFFF: efbfbd efbfbd
+0FDCF: efb78f efb78f
+0FDD0: efbfbd efbfbd
+0FDEF: efbfbd efbfbd
+0FDF0: efb7b0 efb7b0
+2FFFE: efbfbd efbfbd
+2FFFF: efbfbd efbfbd
+
+*** Testing XML 1.0 ***
+00000: efbfbd efbfbd
+00001: efbfbd efbfbd
+00009: 09 09
+0000A: 0a 0a
+0000B: efbfbd efbfbd
+0000C: efbfbd efbfbd
+0000D: 0d 0d
+0000E: efbfbd efbfbd
+0001F: efbfbd efbfbd
+00020: 20 20
+0007F: 7f 7f
+00080: c280 c280
+0009F: c29f c29f
+000A0: c2a0 c2a0
+0D7FF: ed9fbf ed9fbf
+0D800: INVALID SEQUENCE
+0DFFF: INVALID SEQUENCE
+0E000: ee8080 ee8080
+0FFFE: efbfbd efbfbd
+0FFFF: efbfbd efbfbd
+0FDCF: efb78f efb78f
+0FDD0: efb790 efb790
+0FDEF: efb7af efb7af
+0FDF0: efb7b0 efb7b0
+2FFFE: f0afbfbe f0afbfbe
+2FFFF: f0afbfbf f0afbfbf
diff --git a/ext/standard/tests/strings/htmlentities21.phpt b/ext/standard/tests/strings/htmlentities21.phpt
new file mode 100644
index 0000000000..f34ff26df0
--- /dev/null
+++ b/ext/standard/tests/strings/htmlentities21.phpt
@@ -0,0 +1,198 @@
+--TEST--
+htmlentities() / htmlspecialchars() ENT_DISALLOWED charset variation
+--FILE--
+<?php
+$tests = array(
+ 0x00, //C0
+ 0x01,
+ 0x09,
+ 0x0A,
+ 0x0B,
+ 0x0C,
+ 0x0D,
+ 0x0E,
+ 0x1F,
+ 0x20, //allowed always
+ 0x7F, //DEL
+ 0x80, //C1
+ 0x9F,
+ 0xA0, //allowed always
+);
+
+function test($flag, $charset) {
+ global $tests;
+ $i = -1;
+ error_reporting(-1 & ~E_STRICT);
+ foreach ($tests as $test) {
+ $test = chr($test);
+ $i++;
+ $a = htmlentities($test, $flag | ENT_DISALLOWED, $charset);
+ $b = htmlspecialchars($test, $flag | ENT_DISALLOWED, $charset);
+ if ($a == "" && $b == "") { echo sprintf("%05X", $tests[$i]), ": INVALID SEQUENCE\n"; continue; }
+ echo sprintf("%05X", $tests[$i]), ": ", bin2hex($a), " ", bin2hex($b), "\n";
+ }
+ error_reporting(-1);
+}
+
+echo "*** Testing HTML 4.01/Windows-1251 ***\n";
+
+test(ENT_HTML401, "Windows-1251");
+
+echo "\n*** Testing XHTML 1.0/Windows-1251 ***\n";
+
+test(ENT_XHTML, "Windows-1251");
+
+echo "\n*** Testing HTML 5/Windows-1251 ***\n";
+
+test(ENT_HTML5, "Windows-1251");
+
+echo "\n*** Testing XML 1.0/Windows-1251 ***\n";
+
+test(ENT_XML1, "Windows-1251");
+
+echo "\n*** Testing HTML 4.01/SJIS ***\n";
+
+test(ENT_HTML401, "SJIS");
+
+echo "\n*** Testing XHTML 1.0/SJIS ***\n";
+
+test(ENT_XHTML, "SJIS");
+
+echo "\n*** Testing HTML 5/SJIS ***\n";
+
+test(ENT_HTML5, "SJIS");
+
+echo "\n*** Testing XML 1.0/SJIS ***\n";
+
+test(ENT_XML1, "SJIS");
+
+
+?>
+--EXPECT--
+*** Testing HTML 4.01/Windows-1251 ***
+00000: 262378464646443b 262378464646443b
+00001: 262378464646443b 262378464646443b
+00009: 09 09
+0000A: 0a 0a
+0000B: 262378464646443b 262378464646443b
+0000C: 262378464646443b 262378464646443b
+0000D: 0d 0d
+0000E: 262378464646443b 262378464646443b
+0001F: 262378464646443b 262378464646443b
+00020: 20 20
+0007F: 262378464646443b 7f
+00080: 80 80
+0009F: 9f 9f
+000A0: 266e6273703b a0
+
+*** Testing XHTML 1.0/Windows-1251 ***
+00000: 262378464646443b 262378464646443b
+00001: 262378464646443b 262378464646443b
+00009: 09 09
+0000A: 0a 0a
+0000B: 262378464646443b 262378464646443b
+0000C: 262378464646443b 262378464646443b
+0000D: 0d 0d
+0000E: 262378464646443b 262378464646443b
+0001F: 262378464646443b 262378464646443b
+00020: 20 20
+0007F: 7f 7f
+00080: 80 80
+0009F: 9f 9f
+000A0: 266e6273703b a0
+
+*** Testing HTML 5/Windows-1251 ***
+00000: 262378464646443b 262378464646443b
+00001: 262378464646443b 262378464646443b
+00009: 265461623b 09
+0000A: 264e65774c696e653b 0a
+0000B: 262378464646443b 262378464646443b
+0000C: 0c 0c
+0000D: 0d 0d
+0000E: 262378464646443b 262378464646443b
+0001F: 262378464646443b 262378464646443b
+00020: 20 20
+0007F: 262378464646443b 7f
+00080: 26444a63793b 80
+0009F: 26647a63793b 9f
+000A0: 266e6273703b a0
+
+*** Testing XML 1.0/Windows-1251 ***
+00000: 262378464646443b 262378464646443b
+00001: 262378464646443b 262378464646443b
+00009: 09 09
+0000A: 0a 0a
+0000B: 262378464646443b 262378464646443b
+0000C: 262378464646443b 262378464646443b
+0000D: 0d 0d
+0000E: 262378464646443b 262378464646443b
+0001F: 262378464646443b 262378464646443b
+00020: 20 20
+0007F: 7f 7f
+00080: 80 80
+0009F: 9f 9f
+000A0: a0 a0
+
+*** Testing HTML 4.01/SJIS ***
+00000: 262378464646443b 262378464646443b
+00001: 262378464646443b 262378464646443b
+00009: 09 09
+0000A: 0a 0a
+0000B: 262378464646443b 262378464646443b
+0000C: 262378464646443b 262378464646443b
+0000D: 0d 0d
+0000E: 262378464646443b 262378464646443b
+0001F: 262378464646443b 262378464646443b
+00020: 20 20
+0007F: 7f 7f
+00080: INVALID SEQUENCE
+0009F: INVALID SEQUENCE
+000A0: INVALID SEQUENCE
+
+*** Testing XHTML 1.0/SJIS ***
+00000: 262378464646443b 262378464646443b
+00001: 262378464646443b 262378464646443b
+00009: 09 09
+0000A: 0a 0a
+0000B: 262378464646443b 262378464646443b
+0000C: 262378464646443b 262378464646443b
+0000D: 0d 0d
+0000E: 262378464646443b 262378464646443b
+0001F: 262378464646443b 262378464646443b
+00020: 20 20
+0007F: 7f 7f
+00080: INVALID SEQUENCE
+0009F: INVALID SEQUENCE
+000A0: INVALID SEQUENCE
+
+*** Testing HTML 5/SJIS ***
+00000: 262378464646443b 262378464646443b
+00001: 262378464646443b 262378464646443b
+00009: 09 09
+0000A: 0a 0a
+0000B: 262378464646443b 262378464646443b
+0000C: 0c 0c
+0000D: 0d 0d
+0000E: 262378464646443b 262378464646443b
+0001F: 262378464646443b 262378464646443b
+00020: 20 20
+0007F: 7f 7f
+00080: INVALID SEQUENCE
+0009F: INVALID SEQUENCE
+000A0: INVALID SEQUENCE
+
+*** Testing XML 1.0/SJIS ***
+00000: 262378464646443b 262378464646443b
+00001: 262378464646443b 262378464646443b
+00009: 09 09
+0000A: 0a 0a
+0000B: 262378464646443b 262378464646443b
+0000C: 262378464646443b 262378464646443b
+0000D: 0d 0d
+0000E: 262378464646443b 262378464646443b
+0001F: 262378464646443b 262378464646443b
+00020: 20 20
+0007F: 7f 7f
+00080: INVALID SEQUENCE
+0009F: INVALID SEQUENCE
+000A0: INVALID SEQUENCE
diff --git a/ext/standard/tests/strings/htmlentities22.phpt b/ext/standard/tests/strings/htmlentities22.phpt
new file mode 100644
index 0000000000..f11982044d
--- /dev/null
+++ b/ext/standard/tests/strings/htmlentities22.phpt
@@ -0,0 +1,283 @@
+--TEST--
+htmlentities() / htmlspecialchars() ENT_DISALLOWED with entities and no double encode
+--FILE--
+<?php
+$tests = array(
+ "&#0;", //C0
+ "&#1;",
+ "&#x09;",
+ "&#x0A;",
+ "&#x0B;",
+ "&#x0C;",
+ "&#x0D;", //note that HTML5 is unique in that it forbids this entity, but allows a literal U+0D
+ "&#x0E;",
+ "&#x1F;",
+ "&#x20;", //allowed always
+ "&#x7F;", //DEL
+ "&#x80;", //C1
+ "&#x9F;",
+ "&#xA0;", //allowed always
+ "&#xD7FF;", //surrogates
+ "&#xD800;",
+ "&#xDFFF;",
+ "&#xE000;", //allowed always
+ "&#xFFFE;", //nonchar
+ "&#xFFFF;",
+ "&#xFDCF;", //allowed always
+ "&#xFDD0;", //nonchar
+ "&#xFDEF;",
+ "&#xFDF0;", //allowed always
+ "&#x2FFFE;", //nonchar
+ "&#x2FFFF;",
+ "&#x110000;", //bad reference
+);
+
+function test($flag, $flag2=ENT_DISALLOWED, $charset="UTF-8") {
+ global $tests;
+ $i = -1;
+ error_reporting(-1 & ~E_STRICT);
+ foreach ($tests as $test) {
+ $i++;
+ $a = htmlentities($test, $flag | $flag2, $charset, FALSE);
+ $b = htmlspecialchars($test, $flag | $flag2, $charset, FALSE);
+
+ if ($a == $b)
+ echo sprintf("%s\t%s", $test, $a==$test?"NOT CHANGED":"CHANGED"), "\n";
+ else
+ echo sprintf("%s\tCHANGED (%s, %s)", $test, $a, $b), "\n";
+ }
+ error_reporting(-1);
+}
+
+echo "*** Testing HTML 4.01 ***\n";
+
+test(ENT_HTML401);
+
+echo "\n*** Testing XHTML 1.0 ***\n";
+
+test(ENT_XHTML);
+
+echo "\n*** Testing HTML 5 ***\n";
+
+test(ENT_HTML5);
+
+echo "\n*** Testing XML 1.0 ***\n";
+
+test(ENT_XML1);
+
+echo "\n*** Testing 5 without the flag ***\n";
+
+test(ENT_HTML5, 0);
+
+echo "\n*** Testing HTML 5 with another single-byte encoding ***\n";
+
+test(ENT_HTML5, ENT_DISALLOWED, "Windows-1251");
+
+echo "\n*** Testing HTML 5 with another multibyte-byte encoding ***\n";
+
+test(ENT_HTML5, ENT_DISALLOWED, "SJIS");
+
+?>
+--EXPECT--
+*** Testing HTML 4.01 ***
+&#0; NOT CHANGED
+&#1; NOT CHANGED
+&#x09; NOT CHANGED
+&#x0A; NOT CHANGED
+&#x0B; NOT CHANGED
+&#x0C; NOT CHANGED
+&#x0D; NOT CHANGED
+&#x0E; NOT CHANGED
+&#x1F; NOT CHANGED
+&#x20; NOT CHANGED
+&#x7F; NOT CHANGED
+&#x80; NOT CHANGED
+&#x9F; NOT CHANGED
+&#xA0; NOT CHANGED
+&#xD7FF; NOT CHANGED
+&#xD800; NOT CHANGED
+&#xDFFF; NOT CHANGED
+&#xE000; NOT CHANGED
+&#xFFFE; NOT CHANGED
+&#xFFFF; NOT CHANGED
+&#xFDCF; NOT CHANGED
+&#xFDD0; NOT CHANGED
+&#xFDEF; NOT CHANGED
+&#xFDF0; NOT CHANGED
+&#x2FFFE; NOT CHANGED
+&#x2FFFF; NOT CHANGED
+&#x110000; CHANGED
+
+*** Testing XHTML 1.0 ***
+&#0; CHANGED
+&#1; CHANGED
+&#x09; NOT CHANGED
+&#x0A; NOT CHANGED
+&#x0B; CHANGED
+&#x0C; CHANGED
+&#x0D; NOT CHANGED
+&#x0E; CHANGED
+&#x1F; CHANGED
+&#x20; NOT CHANGED
+&#x7F; NOT CHANGED
+&#x80; NOT CHANGED
+&#x9F; NOT CHANGED
+&#xA0; NOT CHANGED
+&#xD7FF; NOT CHANGED
+&#xD800; CHANGED
+&#xDFFF; CHANGED
+&#xE000; NOT CHANGED
+&#xFFFE; CHANGED
+&#xFFFF; CHANGED
+&#xFDCF; NOT CHANGED
+&#xFDD0; NOT CHANGED
+&#xFDEF; NOT CHANGED
+&#xFDF0; NOT CHANGED
+&#x2FFFE; NOT CHANGED
+&#x2FFFF; NOT CHANGED
+&#x110000; CHANGED
+
+*** Testing HTML 5 ***
+&#0; CHANGED (&amp;&num;0&semi;, &amp;#0;)
+&#1; CHANGED (&amp;&num;1&semi;, &amp;#1;)
+&#x09; NOT CHANGED
+&#x0A; NOT CHANGED
+&#x0B; CHANGED (&amp;&num;x0B&semi;, &amp;#x0B;)
+&#x0C; NOT CHANGED
+&#x0D; CHANGED (&amp;&num;x0D&semi;, &amp;#x0D;)
+&#x0E; CHANGED (&amp;&num;x0E&semi;, &amp;#x0E;)
+&#x1F; CHANGED (&amp;&num;x1F&semi;, &amp;#x1F;)
+&#x20; NOT CHANGED
+&#x7F; CHANGED (&amp;&num;x7F&semi;, &amp;#x7F;)
+&#x80; CHANGED (&amp;&num;x80&semi;, &amp;#x80;)
+&#x9F; CHANGED (&amp;&num;x9F&semi;, &amp;#x9F;)
+&#xA0; NOT CHANGED
+&#xD7FF; NOT CHANGED
+&#xD800; NOT CHANGED
+&#xDFFF; NOT CHANGED
+&#xE000; NOT CHANGED
+&#xFFFE; CHANGED (&amp;&num;xFFFE&semi;, &amp;#xFFFE;)
+&#xFFFF; CHANGED (&amp;&num;xFFFF&semi;, &amp;#xFFFF;)
+&#xFDCF; NOT CHANGED
+&#xFDD0; CHANGED (&amp;&num;xFDD0&semi;, &amp;#xFDD0;)
+&#xFDEF; CHANGED (&amp;&num;xFDEF&semi;, &amp;#xFDEF;)
+&#xFDF0; NOT CHANGED
+&#x2FFFE; CHANGED (&amp;&num;x2FFFE&semi;, &amp;#x2FFFE;)
+&#x2FFFF; CHANGED (&amp;&num;x2FFFF&semi;, &amp;#x2FFFF;)
+&#x110000; CHANGED (&amp;&num;x110000&semi;, &amp;#x110000;)
+
+*** Testing XML 1.0 ***
+&#0; CHANGED
+&#1; CHANGED
+&#x09; NOT CHANGED
+&#x0A; NOT CHANGED
+&#x0B; CHANGED
+&#x0C; CHANGED
+&#x0D; NOT CHANGED
+&#x0E; CHANGED
+&#x1F; CHANGED
+&#x20; NOT CHANGED
+&#x7F; NOT CHANGED
+&#x80; NOT CHANGED
+&#x9F; NOT CHANGED
+&#xA0; NOT CHANGED
+&#xD7FF; NOT CHANGED
+&#xD800; CHANGED
+&#xDFFF; CHANGED
+&#xE000; NOT CHANGED
+&#xFFFE; CHANGED
+&#xFFFF; CHANGED
+&#xFDCF; NOT CHANGED
+&#xFDD0; NOT CHANGED
+&#xFDEF; NOT CHANGED
+&#xFDF0; NOT CHANGED
+&#x2FFFE; NOT CHANGED
+&#x2FFFF; NOT CHANGED
+&#x110000; CHANGED
+
+*** Testing 5 without the flag ***
+&#0; NOT CHANGED
+&#1; NOT CHANGED
+&#x09; NOT CHANGED
+&#x0A; NOT CHANGED
+&#x0B; NOT CHANGED
+&#x0C; NOT CHANGED
+&#x0D; NOT CHANGED
+&#x0E; NOT CHANGED
+&#x1F; NOT CHANGED
+&#x20; NOT CHANGED
+&#x7F; NOT CHANGED
+&#x80; NOT CHANGED
+&#x9F; NOT CHANGED
+&#xA0; NOT CHANGED
+&#xD7FF; NOT CHANGED
+&#xD800; NOT CHANGED
+&#xDFFF; NOT CHANGED
+&#xE000; NOT CHANGED
+&#xFFFE; NOT CHANGED
+&#xFFFF; NOT CHANGED
+&#xFDCF; NOT CHANGED
+&#xFDD0; NOT CHANGED
+&#xFDEF; NOT CHANGED
+&#xFDF0; NOT CHANGED
+&#x2FFFE; NOT CHANGED
+&#x2FFFF; NOT CHANGED
+&#x110000; CHANGED (&amp;&num;x110000&semi;, &amp;#x110000;)
+
+*** Testing HTML 5 with another single-byte encoding ***
+&#0; CHANGED (&amp;&num;0&semi;, &amp;#0;)
+&#1; CHANGED (&amp;&num;1&semi;, &amp;#1;)
+&#x09; NOT CHANGED
+&#x0A; NOT CHANGED
+&#x0B; CHANGED (&amp;&num;x0B&semi;, &amp;#x0B;)
+&#x0C; NOT CHANGED
+&#x0D; CHANGED (&amp;&num;x0D&semi;, &amp;#x0D;)
+&#x0E; CHANGED (&amp;&num;x0E&semi;, &amp;#x0E;)
+&#x1F; CHANGED (&amp;&num;x1F&semi;, &amp;#x1F;)
+&#x20; NOT CHANGED
+&#x7F; CHANGED (&amp;&num;x7F&semi;, &amp;#x7F;)
+&#x80; CHANGED (&amp;&num;x80&semi;, &amp;#x80;)
+&#x9F; CHANGED (&amp;&num;x9F&semi;, &amp;#x9F;)
+&#xA0; NOT CHANGED
+&#xD7FF; NOT CHANGED
+&#xD800; NOT CHANGED
+&#xDFFF; NOT CHANGED
+&#xE000; NOT CHANGED
+&#xFFFE; CHANGED (&amp;&num;xFFFE&semi;, &amp;#xFFFE;)
+&#xFFFF; CHANGED (&amp;&num;xFFFF&semi;, &amp;#xFFFF;)
+&#xFDCF; NOT CHANGED
+&#xFDD0; CHANGED (&amp;&num;xFDD0&semi;, &amp;#xFDD0;)
+&#xFDEF; CHANGED (&amp;&num;xFDEF&semi;, &amp;#xFDEF;)
+&#xFDF0; NOT CHANGED
+&#x2FFFE; CHANGED (&amp;&num;x2FFFE&semi;, &amp;#x2FFFE;)
+&#x2FFFF; CHANGED (&amp;&num;x2FFFF&semi;, &amp;#x2FFFF;)
+&#x110000; CHANGED (&amp;&num;x110000&semi;, &amp;#x110000;)
+
+*** Testing HTML 5 with another multibyte-byte encoding ***
+&#0; CHANGED
+&#1; CHANGED
+&#x09; NOT CHANGED
+&#x0A; NOT CHANGED
+&#x0B; CHANGED
+&#x0C; NOT CHANGED
+&#x0D; CHANGED
+&#x0E; CHANGED
+&#x1F; CHANGED
+&#x20; NOT CHANGED
+&#x7F; CHANGED
+&#x80; CHANGED
+&#x9F; CHANGED
+&#xA0; NOT CHANGED
+&#xD7FF; NOT CHANGED
+&#xD800; NOT CHANGED
+&#xDFFF; NOT CHANGED
+&#xE000; NOT CHANGED
+&#xFFFE; CHANGED
+&#xFFFF; CHANGED
+&#xFDCF; NOT CHANGED
+&#xFDD0; CHANGED
+&#xFDEF; CHANGED
+&#xFDF0; NOT CHANGED
+&#x2FFFE; CHANGED
+&#x2FFFF; CHANGED
+&#x110000; CHANGED
diff --git a/ext/standard/tests/strings/htmlentities23.phpt b/ext/standard/tests/strings/htmlentities23.phpt
new file mode 100644
index 0000000000..bcfcd8d8f7
--- /dev/null
+++ b/ext/standard/tests/strings/htmlentities23.phpt
@@ -0,0 +1,95 @@
+--TEST--
+htmlentities() / htmlspecialchars() ENT_SUBSTITUTE EUC-JP
+--FILE--
+<?php
+$tests = array(
+ "\x8F\xA1\xFF", //2 sub as 2nd is potentially valid as lead
+ "\x8F\xA1", //2 sub, as 2nd is potentially valid as lead
+ "\x8F", //1 sub
+ "\x8F\xA0", //1 sub, A0 is not valid as sole/first byte
+ "\x8F\xA1\x21", //2 sub, no consume last
+ "\x8F\x21", //1 sub, no consume last
+ "\x8E\xAE", //valid
+ "\x8E", //1 sub
+ "\x8E\x21", //1 sub, no consume last
+ "\xB2\xFF", //1 sub
+ "\xB2", //1 sub
+ "\xB2\x21", //1 sub, no consume last
+ "\xA0", //1 sub
+);
+
+foreach ($tests as $test) {
+ error_reporting(~E_STRICT);
+ $a = htmlentities($test, ENT_QUOTES | ENT_SUBSTITUTE, "EUC-JP");
+ error_reporting(-1);
+ var_dump($a, bin2hex($a));
+ $a = htmlspecialchars($test, ENT_QUOTES | ENT_SUBSTITUTE, "EUC-JP");
+ var_dump($a, bin2hex($a));
+ echo "\n";
+}
+?>
+--EXPECT--
+string(16) "&#xFFFD;&#xFFFD;"
+string(32) "262378464646443b262378464646443b"
+string(16) "&#xFFFD;&#xFFFD;"
+string(32) "262378464646443b262378464646443b"
+
+string(16) "&#xFFFD;&#xFFFD;"
+string(32) "262378464646443b262378464646443b"
+string(16) "&#xFFFD;&#xFFFD;"
+string(32) "262378464646443b262378464646443b"
+
+string(8) "&#xFFFD;"
+string(16) "262378464646443b"
+string(8) "&#xFFFD;"
+string(16) "262378464646443b"
+
+string(8) "&#xFFFD;"
+string(16) "262378464646443b"
+string(8) "&#xFFFD;"
+string(16) "262378464646443b"
+
+string(17) "&#xFFFD;&#xFFFD;!"
+string(34) "262378464646443b262378464646443b21"
+string(17) "&#xFFFD;&#xFFFD;!"
+string(34) "262378464646443b262378464646443b21"
+
+string(9) "&#xFFFD;!"
+string(18) "262378464646443b21"
+string(9) "&#xFFFD;!"
+string(18) "262378464646443b21"
+
+string(2) "Ž®"
+string(4) "8eae"
+string(2) "Ž®"
+string(4) "8eae"
+
+string(8) "&#xFFFD;"
+string(16) "262378464646443b"
+string(8) "&#xFFFD;"
+string(16) "262378464646443b"
+
+string(9) "&#xFFFD;!"
+string(18) "262378464646443b21"
+string(9) "&#xFFFD;!"
+string(18) "262378464646443b21"
+
+string(8) "&#xFFFD;"
+string(16) "262378464646443b"
+string(8) "&#xFFFD;"
+string(16) "262378464646443b"
+
+string(8) "&#xFFFD;"
+string(16) "262378464646443b"
+string(8) "&#xFFFD;"
+string(16) "262378464646443b"
+
+string(9) "&#xFFFD;!"
+string(18) "262378464646443b21"
+string(9) "&#xFFFD;!"
+string(18) "262378464646443b21"
+
+string(8) "&#xFFFD;"
+string(16) "262378464646443b"
+string(8) "&#xFFFD;"
+string(16) "262378464646443b"
diff --git a/ext/standard/tests/strings/htmlentities_html5.phpt b/ext/standard/tests/strings/htmlentities_html5.phpt
new file mode 100644
index 0000000000..1f3409723e
--- /dev/null
+++ b/ext/standard/tests/strings/htmlentities_html5.phpt
@@ -0,0 +1,1623 @@
+--TEST--
+htmlentities() conformance check (HTML 5)
+--FILE--
+<?php
+function utf32_utf8($k) {
+ if ($k < 0x80) {
+ $retval = pack('C', $k);
+ } else if ($k < 0x800) {
+ $retval = pack('C2',
+ 0xc0 | ($k >> 6),
+ 0x80 | ($k & 0x3f));
+ } else if ($k < 0x10000) {
+ $retval = pack('C3',
+ 0xe0 | ($k >> 12),
+ 0x80 | (($k >> 6) & 0x3f),
+ 0x80 | ($k & 0x3f));
+ } else {
+ $retval = pack('C4',
+ 0xf0 | ($k >> 18),
+ 0x80 | (($k >> 12) & 0x3f),
+ 0x80 | (($k >> 6) & 0x3f),
+ 0x80 | ($k & 0x3f));
+ }
+ return $retval;
+}
+
+for ($i = 0; $i < 0x1DFFF; $i++) {
+ if ($i >= 0xd800 && $i < 0xe000) //surrogates
+ continue;
+ $str = utf32_utf8($i);
+ $result = htmlentities($str, ENT_QUOTES | ENT_HTML5, 'UTF-8');
+ if ($str != $result) {
+ printf("%s\tU+%05X\n", $result, $i);
+ }
+}
+
+/* multicodepoint entities */
+$mpcent = array(
+array(0x0003C, 0x20D2),
+array(0x0003D, 0x20E5),
+array(0x0003E, 0x20D2),
+array(0x00066, 0x6A),
+array(0x0205F, 0x200A),
+array(0x0219D, 0x338),
+array(0x02202, 0x338),
+array(0x02220, 0x20D2),
+array(0x02229, 0xFE00),
+array(0x0222A, 0xFE00),
+array(0x0223C, 0x020D2),
+array(0x0223D, 0x00331),
+array(0x0223E, 0x00333),
+array(0x02242, 0x338),
+array(0x0224B, 0x338),
+array(0x0224D, 0x020D2),
+array(0x0224E, 0x338),
+array(0x0224F, 0x338),
+array(0x02250, 0x338),
+array(0x02261, 0x020E5),
+array(0x02264, 0x20D2),
+array(0x02265, 0x020D2),
+array(0x02266, 0x338),
+array(0x02267, 0x00338),
+array(0x02268, 0xFE00),
+array(0x02269, 0xFE00),
+array(0x0226A, 0x338),
+array(0x0226A, 0x20D2),
+array(0x0226B, 0x338),
+array(0x0226B, 0x20D2),
+array(0x0227F, 0x338),
+array(0x02282, 0x20D2),
+array(0x02283, 0x20D2),
+array(0x0228A, 0xFE00),
+array(0x0228B, 0xFE00),
+array(0x0228F, 0x338),
+array(0x02290, 0x338),
+array(0x02293, 0xFE00),
+array(0x02294, 0xFE00),
+array(0x022B4, 0x20D2),
+array(0x022B5, 0x20D2),
+array(0x022D8, 0x338),
+array(0x022D9, 0x338),
+array(0x022DA, 0xFE00),
+array(0x022DB, 0xFE00),
+array(0x022F5, 0x338),
+array(0x022F9, 0x338),
+array(0x02933, 0x338),
+array(0x029CF, 0x338),
+array(0x029D0, 0x338),
+array(0x02A6D, 0x338),
+array(0x02A70, 0x338),
+array(0x02A7D, 0x338),
+array(0x02A7E, 0x338),
+array(0x02AA1, 0x338),
+array(0x02AA2, 0x338),
+array(0x02AAC, 0xFE00),
+array(0x02AAD, 0xFE00),
+array(0x02AAF, 0x338),
+array(0x02AB0, 0x338),
+array(0x02AC5, 0x338),
+array(0x02AC6, 0x338),
+array(0x02ACB, 0xFE00),
+array(0x02ACC, 0xFE00),
+array(0x02AFD, 0xFE00),
+);
+
+foreach ($mpcent as $i) {
+ $str = utf32_utf8($i[0]);
+ $str .= utf32_utf8($i[1]);
+ $result = htmlentities($str, ENT_QUOTES | ENT_HTML5, 'UTF-8');
+ printf("%s\tU+%05X U+%05X\n", $result, $i[0], $i[1]);
+}
+?>
+--EXPECT--
+&Tab; U+00009
+&NewLine; U+0000A
+&excl; U+00021
+&quot; U+00022
+&num; U+00023
+&dollar; U+00024
+&percnt; U+00025
+&amp; U+00026
+&apos; U+00027
+&lpar; U+00028
+&rpar; U+00029
+&ast; U+0002A
+&plus; U+0002B
+&comma; U+0002C
+&period; U+0002E
+&sol; U+0002F
+&colon; U+0003A
+&semi; U+0003B
+&lt; U+0003C
+&equals; U+0003D
+&gt; U+0003E
+&quest; U+0003F
+&commat; U+00040
+&lbrack; U+0005B
+&bsol; U+0005C
+&rsqb; U+0005D
+&Hat; U+0005E
+&lowbar; U+0005F
+&grave; U+00060
+&lbrace; U+0007B
+&vert; U+0007C
+&rcub; U+0007D
+&nbsp; U+000A0
+&iexcl; U+000A1
+&cent; U+000A2
+&pound; U+000A3
+&curren; U+000A4
+&yen; U+000A5
+&brvbar; U+000A6
+&sect; U+000A7
+&DoubleDot; U+000A8
+&copy; U+000A9
+&ordf; U+000AA
+&laquo; U+000AB
+&not; U+000AC
+&shy; U+000AD
+&reg; U+000AE
+&macr; U+000AF
+&deg; U+000B0
+&plusmn; U+000B1
+&sup2; U+000B2
+&sup3; U+000B3
+&DiacriticalAcute; U+000B4
+&micro; U+000B5
+&para; U+000B6
+&CenterDot; U+000B7
+&Cedilla; U+000B8
+&sup1; U+000B9
+&ordm; U+000BA
+&raquo; U+000BB
+&frac14; U+000BC
+&half; U+000BD
+&frac34; U+000BE
+&iquest; U+000BF
+&Agrave; U+000C0
+&Aacute; U+000C1
+&Acirc; U+000C2
+&Atilde; U+000C3
+&Auml; U+000C4
+&Aring; U+000C5
+&AElig; U+000C6
+&Ccedil; U+000C7
+&Egrave; U+000C8
+&Eacute; U+000C9
+&Ecirc; U+000CA
+&Euml; U+000CB
+&Igrave; U+000CC
+&Iacute; U+000CD
+&Icirc; U+000CE
+&Iuml; U+000CF
+&ETH; U+000D0
+&Ntilde; U+000D1
+&Ograve; U+000D2
+&Oacute; U+000D3
+&Ocirc; U+000D4
+&Otilde; U+000D5
+&Ouml; U+000D6
+&times; U+000D7
+&Oslash; U+000D8
+&Ugrave; U+000D9
+&Uacute; U+000DA
+&Ucirc; U+000DB
+&Uuml; U+000DC
+&Yacute; U+000DD
+&THORN; U+000DE
+&szlig; U+000DF
+&agrave; U+000E0
+&aacute; U+000E1
+&acirc; U+000E2
+&atilde; U+000E3
+&auml; U+000E4
+&aring; U+000E5
+&aelig; U+000E6
+&ccedil; U+000E7
+&egrave; U+000E8
+&eacute; U+000E9
+&ecirc; U+000EA
+&euml; U+000EB
+&igrave; U+000EC
+&iacute; U+000ED
+&icirc; U+000EE
+&iuml; U+000EF
+&eth; U+000F0
+&ntilde; U+000F1
+&ograve; U+000F2
+&oacute; U+000F3
+&ocirc; U+000F4
+&otilde; U+000F5
+&ouml; U+000F6
+&divide; U+000F7
+&oslash; U+000F8
+&ugrave; U+000F9
+&uacute; U+000FA
+&ucirc; U+000FB
+&uuml; U+000FC
+&yacute; U+000FD
+&thorn; U+000FE
+&yuml; U+000FF
+&Amacr; U+00100
+&amacr; U+00101
+&Abreve; U+00102
+&abreve; U+00103
+&Aogon; U+00104
+&aogon; U+00105
+&Cacute; U+00106
+&cacute; U+00107
+&Ccirc; U+00108
+&ccirc; U+00109
+&Cdot; U+0010A
+&cdot; U+0010B
+&Ccaron; U+0010C
+&ccaron; U+0010D
+&Dcaron; U+0010E
+&dcaron; U+0010F
+&Dstrok; U+00110
+&dstrok; U+00111
+&Emacr; U+00112
+&emacr; U+00113
+&Edot; U+00116
+&edot; U+00117
+&Eogon; U+00118
+&eogon; U+00119
+&Ecaron; U+0011A
+&ecaron; U+0011B
+&Gcirc; U+0011C
+&gcirc; U+0011D
+&Gbreve; U+0011E
+&gbreve; U+0011F
+&Gdot; U+00120
+&gdot; U+00121
+&Gcedil; U+00122
+&Hcirc; U+00124
+&hcirc; U+00125
+&Hstrok; U+00126
+&hstrok; U+00127
+&Itilde; U+00128
+&itilde; U+00129
+&Imacr; U+0012A
+&imacr; U+0012B
+&Iogon; U+0012E
+&iogon; U+0012F
+&Idot; U+00130
+&inodot; U+00131
+&IJlig; U+00132
+&ijlig; U+00133
+&Jcirc; U+00134
+&jcirc; U+00135
+&Kcedil; U+00136
+&kcedil; U+00137
+&kgreen; U+00138
+&Lacute; U+00139
+&lacute; U+0013A
+&Lcedil; U+0013B
+&lcedil; U+0013C
+&Lcaron; U+0013D
+&lcaron; U+0013E
+&Lmidot; U+0013F
+&lmidot; U+00140
+&Lstrok; U+00141
+&lstrok; U+00142
+&Nacute; U+00143
+&nacute; U+00144
+&Ncedil; U+00145
+&ncedil; U+00146
+&Ncaron; U+00147
+&ncaron; U+00148
+&napos; U+00149
+&ENG; U+0014A
+&eng; U+0014B
+&Omacr; U+0014C
+&omacr; U+0014D
+&Odblac; U+00150
+&odblac; U+00151
+&OElig; U+00152
+&oelig; U+00153
+&Racute; U+00154
+&racute; U+00155
+&Rcedil; U+00156
+&rcedil; U+00157
+&Rcaron; U+00158
+&rcaron; U+00159
+&Sacute; U+0015A
+&sacute; U+0015B
+&Scirc; U+0015C
+&scirc; U+0015D
+&Scedil; U+0015E
+&scedil; U+0015F
+&Scaron; U+00160
+&scaron; U+00161
+&Tcedil; U+00162
+&tcedil; U+00163
+&Tcaron; U+00164
+&tcaron; U+00165
+&Tstrok; U+00166
+&tstrok; U+00167
+&Utilde; U+00168
+&utilde; U+00169
+&Umacr; U+0016A
+&umacr; U+0016B
+&Ubreve; U+0016C
+&ubreve; U+0016D
+&Uring; U+0016E
+&uring; U+0016F
+&Udblac; U+00170
+&udblac; U+00171
+&Uogon; U+00172
+&uogon; U+00173
+&Wcirc; U+00174
+&wcirc; U+00175
+&Ycirc; U+00176
+&ycirc; U+00177
+&Yuml; U+00178
+&Zacute; U+00179
+&zacute; U+0017A
+&Zdot; U+0017B
+&zdot; U+0017C
+&Zcaron; U+0017D
+&zcaron; U+0017E
+&fnof; U+00192
+&imped; U+001B5
+&gacute; U+001F5
+&jmath; U+00237
+&circ; U+002C6
+&Hacek; U+002C7
+&Breve; U+002D8
+&dot; U+002D9
+&ring; U+002DA
+&ogon; U+002DB
+&DiacriticalTilde; U+002DC
+&DiacriticalDoubleAcute; U+002DD
+&DownBreve; U+00311
+&Alpha; U+00391
+&Beta; U+00392
+&Gamma; U+00393
+&Delta; U+00394
+&Epsilon; U+00395
+&Zeta; U+00396
+&Eta; U+00397
+&Theta; U+00398
+&Iota; U+00399
+&Kappa; U+0039A
+&Lambda; U+0039B
+&Mu; U+0039C
+&Nu; U+0039D
+&Xi; U+0039E
+&Omicron; U+0039F
+&Pi; U+003A0
+&Rho; U+003A1
+&Sigma; U+003A3
+&Tau; U+003A4
+&Upsilon; U+003A5
+&Phi; U+003A6
+&Chi; U+003A7
+&Psi; U+003A8
+&Omega; U+003A9
+&alpha; U+003B1
+&beta; U+003B2
+&gamma; U+003B3
+&delta; U+003B4
+&epsi; U+003B5
+&zeta; U+003B6
+&eta; U+003B7
+&theta; U+003B8
+&iota; U+003B9
+&kappa; U+003BA
+&lambda; U+003BB
+&mu; U+003BC
+&nu; U+003BD
+&xi; U+003BE
+&omicron; U+003BF
+&pi; U+003C0
+&rho; U+003C1
+&sigmav; U+003C2
+&sigma; U+003C3
+&tau; U+003C4
+&upsi; U+003C5
+&phi; U+003C6
+&chi; U+003C7
+&psi; U+003C8
+&omega; U+003C9
+&thetasym; U+003D1
+&upsih; U+003D2
+&straightphi; U+003D5
+&piv; U+003D6
+&Gammad; U+003DC
+&gammad; U+003DD
+&varkappa; U+003F0
+&rhov; U+003F1
+&straightepsilon; U+003F5
+&backepsilon; U+003F6
+&IOcy; U+00401
+&DJcy; U+00402
+&GJcy; U+00403
+&Jukcy; U+00404
+&DScy; U+00405
+&Iukcy; U+00406
+&YIcy; U+00407
+&Jsercy; U+00408
+&LJcy; U+00409
+&NJcy; U+0040A
+&TSHcy; U+0040B
+&KJcy; U+0040C
+&Ubrcy; U+0040E
+&DZcy; U+0040F
+&Acy; U+00410
+&Bcy; U+00411
+&Vcy; U+00412
+&Gcy; U+00413
+&Dcy; U+00414
+&IEcy; U+00415
+&ZHcy; U+00416
+&Zcy; U+00417
+&Icy; U+00418
+&Jcy; U+00419
+&Kcy; U+0041A
+&Lcy; U+0041B
+&Mcy; U+0041C
+&Ncy; U+0041D
+&Ocy; U+0041E
+&Pcy; U+0041F
+&Rcy; U+00420
+&Scy; U+00421
+&Tcy; U+00422
+&Ucy; U+00423
+&Fcy; U+00424
+&KHcy; U+00425
+&TScy; U+00426
+&CHcy; U+00427
+&SHcy; U+00428
+&SHCHcy; U+00429
+&HARDcy; U+0042A
+&Ycy; U+0042B
+&SOFTcy; U+0042C
+&Ecy; U+0042D
+&YUcy; U+0042E
+&YAcy; U+0042F
+&acy; U+00430
+&bcy; U+00431
+&vcy; U+00432
+&gcy; U+00433
+&dcy; U+00434
+&iecy; U+00435
+&zhcy; U+00436
+&zcy; U+00437
+&icy; U+00438
+&jcy; U+00439
+&kcy; U+0043A
+&lcy; U+0043B
+&mcy; U+0043C
+&ncy; U+0043D
+&ocy; U+0043E
+&pcy; U+0043F
+&rcy; U+00440
+&scy; U+00441
+&tcy; U+00442
+&ucy; U+00443
+&fcy; U+00444
+&khcy; U+00445
+&tscy; U+00446
+&chcy; U+00447
+&shcy; U+00448
+&shchcy; U+00449
+&hardcy; U+0044A
+&ycy; U+0044B
+&softcy; U+0044C
+&ecy; U+0044D
+&yucy; U+0044E
+&yacy; U+0044F
+&iocy; U+00451
+&djcy; U+00452
+&gjcy; U+00453
+&jukcy; U+00454
+&dscy; U+00455
+&iukcy; U+00456
+&yicy; U+00457
+&jsercy; U+00458
+&ljcy; U+00459
+&njcy; U+0045A
+&tshcy; U+0045B
+&kjcy; U+0045C
+&ubrcy; U+0045E
+&dzcy; U+0045F
+&ensp; U+02002
+&emsp; U+02003
+&emsp13; U+02004
+&emsp14; U+02005
+&numsp; U+02007
+&puncsp; U+02008
+&ThinSpace; U+02009
+&hairsp; U+0200A
+&ZeroWidthSpace; U+0200B
+&zwnj; U+0200C
+&zwj; U+0200D
+&lrm; U+0200E
+&rlm; U+0200F
+&hyphen; U+02010
+&ndash; U+02013
+&mdash; U+02014
+&horbar; U+02015
+&Verbar; U+02016
+&OpenCurlyQuote; U+02018
+&rsquo; U+02019
+&sbquo; U+0201A
+&OpenCurlyDoubleQuote; U+0201C
+&rdquo; U+0201D
+&bdquo; U+0201E
+&dagger; U+02020
+&Dagger; U+02021
+&bull; U+02022
+&nldr; U+02025
+&hellip; U+02026
+&permil; U+02030
+&pertenk; U+02031
+&prime; U+02032
+&Prime; U+02033
+&tprime; U+02034
+&backprime; U+02035
+&lsaquo; U+02039
+&rsaquo; U+0203A
+&oline; U+0203E
+&caret; U+02041
+&hybull; U+02043
+&frasl; U+02044
+&bsemi; U+0204F
+&qprime; U+02057
+&MediumSpace; U+0205F
+&NoBreak; U+02060
+&af; U+02061
+&InvisibleTimes; U+02062
+&ic; U+02063
+&euro; U+020AC
+&TripleDot; U+020DB
+&DotDot; U+020DC
+&complexes; U+02102
+&incare; U+02105
+&gscr; U+0210A
+&HilbertSpace; U+0210B
+&Hfr; U+0210C
+&Hopf; U+0210D
+&planckh; U+0210E
+&planck; U+0210F
+&imagline; U+02110
+&Ifr; U+02111
+&lagran; U+02112
+&ell; U+02113
+&naturals; U+02115
+&numero; U+02116
+&copysr; U+02117
+&wp; U+02118
+&primes; U+02119
+&rationals; U+0211A
+&realine; U+0211B
+&Rfr; U+0211C
+&Ropf; U+0211D
+&rx; U+0211E
+&trade; U+02122
+&Zopf; U+02124
+&mho; U+02127
+&Zfr; U+02128
+&iiota; U+02129
+&Bscr; U+0212C
+&Cfr; U+0212D
+&escr; U+0212F
+&expectation; U+02130
+&Fouriertrf; U+02131
+&Mellintrf; U+02133
+&orderof; U+02134
+&aleph; U+02135
+&beth; U+02136
+&gimel; U+02137
+&daleth; U+02138
+&CapitalDifferentialD; U+02145
+&DifferentialD; U+02146
+&exponentiale; U+02147
+&ImaginaryI; U+02148
+&frac13; U+02153
+&frac23; U+02154
+&frac15; U+02155
+&frac25; U+02156
+&frac35; U+02157
+&frac45; U+02158
+&frac16; U+02159
+&frac56; U+0215A
+&frac18; U+0215B
+&frac38; U+0215C
+&frac58; U+0215D
+&frac78; U+0215E
+&larr; U+02190
+&uarr; U+02191
+&srarr; U+02192
+&darr; U+02193
+&harr; U+02194
+&UpDownArrow; U+02195
+&nwarrow; U+02196
+&UpperRightArrow; U+02197
+&LowerRightArrow; U+02198
+&swarr; U+02199
+&nleftarrow; U+0219A
+&nrarr; U+0219B
+&rarrw; U+0219D
+&Larr; U+0219E
+&Uarr; U+0219F
+&twoheadrightarrow; U+021A0
+&Darr; U+021A1
+&larrtl; U+021A2
+&rarrtl; U+021A3
+&LeftTeeArrow; U+021A4
+&UpTeeArrow; U+021A5
+&map; U+021A6
+&DownTeeArrow; U+021A7
+&larrhk; U+021A9
+&rarrhk; U+021AA
+&larrlp; U+021AB
+&looparrowright; U+021AC
+&harrw; U+021AD
+&nleftrightarrow; U+021AE
+&Lsh; U+021B0
+&rsh; U+021B1
+&ldsh; U+021B2
+&rdsh; U+021B3
+&crarr; U+021B5
+&curvearrowleft; U+021B6
+&curarr; U+021B7
+&olarr; U+021BA
+&orarr; U+021BB
+&leftharpoonup; U+021BC
+&leftharpoondown; U+021BD
+&RightUpVector; U+021BE
+&uharl; U+021BF
+&rharu; U+021C0
+&rhard; U+021C1
+&RightDownVector; U+021C2
+&dharl; U+021C3
+&rightleftarrows; U+021C4
+&udarr; U+021C5
+&lrarr; U+021C6
+&llarr; U+021C7
+&upuparrows; U+021C8
+&rrarr; U+021C9
+&downdownarrows; U+021CA
+&leftrightharpoons; U+021CB
+&rightleftharpoons; U+021CC
+&nLeftarrow; U+021CD
+&nhArr; U+021CE
+&nrArr; U+021CF
+&DoubleLeftArrow; U+021D0
+&DoubleUpArrow; U+021D1
+&Implies; U+021D2
+&Downarrow; U+021D3
+&hArr; U+021D4
+&Updownarrow; U+021D5
+&nwArr; U+021D6
+&neArr; U+021D7
+&seArr; U+021D8
+&swArr; U+021D9
+&lAarr; U+021DA
+&rAarr; U+021DB
+&zigrarr; U+021DD
+&LeftArrowBar; U+021E4
+&RightArrowBar; U+021E5
+&DownArrowUpArrow; U+021F5
+&loarr; U+021FD
+&roarr; U+021FE
+&hoarr; U+021FF
+&forall; U+02200
+&comp; U+02201
+&part; U+02202
+&Exists; U+02203
+&nexist; U+02204
+&empty; U+02205
+&nabla; U+02207
+&isinv; U+02208
+&notin; U+02209
+&ReverseElement; U+0220B
+&notniva; U+0220C
+&prod; U+0220F
+&Coproduct; U+02210
+&sum; U+02211
+&minus; U+02212
+&MinusPlus; U+02213
+&plusdo; U+02214
+&ssetmn; U+02216
+&lowast; U+02217
+&compfn; U+02218
+&Sqrt; U+0221A
+&prop; U+0221D
+&infin; U+0221E
+&angrt; U+0221F
+&angle; U+02220
+&angmsd; U+02221
+&angsph; U+02222
+&mid; U+02223
+&nshortmid; U+02224
+&shortparallel; U+02225
+&nparallel; U+02226
+&and; U+02227
+&or; U+02228
+&cap; U+02229
+&cup; U+0222A
+&Integral; U+0222B
+&Int; U+0222C
+&tint; U+0222D
+&ContourIntegral; U+0222E
+&DoubleContourIntegral; U+0222F
+&Cconint; U+02230
+&cwint; U+02231
+&cwconint; U+02232
+&awconint; U+02233
+&there4; U+02234
+&Because; U+02235
+&ratio; U+02236
+&Colon; U+02237
+&minusd; U+02238
+&mDDot; U+0223A
+&homtht; U+0223B
+&sim; U+0223C
+&bsim; U+0223D
+&ac; U+0223E
+&acd; U+0223F
+&wr; U+02240
+&NotTilde; U+02241
+&esim; U+02242
+&simeq; U+02243
+&nsime; U+02244
+&TildeFullEqual; U+02245
+&simne; U+02246
+&ncong; U+02247
+&approx; U+02248
+&napprox; U+02249
+&ape; U+0224A
+&apid; U+0224B
+&bcong; U+0224C
+&CupCap; U+0224D
+&bump; U+0224E
+&HumpEqual; U+0224F
+&esdot; U+02250
+&doteqdot; U+02251
+&fallingdotseq; U+02252
+&risingdotseq; U+02253
+&coloneq; U+02254
+&eqcolon; U+02255
+&ecir; U+02256
+&circeq; U+02257
+&wedgeq; U+02259
+&veeeq; U+0225A
+&triangleq; U+0225C
+&equest; U+0225F
+&NotEqual; U+02260
+&Congruent; U+02261
+&NotCongruent; U+02262
+&leq; U+02264
+&ge; U+02265
+&lE; U+02266
+&geqq; U+02267
+&lneqq; U+02268
+&gneqq; U+02269
+&ll; U+0226A
+&gg; U+0226B
+&between; U+0226C
+&NotCupCap; U+0226D
+&NotLess; U+0226E
+&ngtr; U+0226F
+&NotLessEqual; U+02270
+&ngeq; U+02271
+&LessTilde; U+02272
+&GreaterTilde; U+02273
+&nlsim; U+02274
+&ngsim; U+02275
+&lessgtr; U+02276
+&gl; U+02277
+&ntlg; U+02278
+&NotGreaterLess; U+02279
+&prec; U+0227A
+&succ; U+0227B
+&PrecedesSlantEqual; U+0227C
+&succcurlyeq; U+0227D
+&precsim; U+0227E
+&SucceedsTilde; U+0227F
+&npr; U+02280
+&NotSucceeds; U+02281
+&sub; U+02282
+&sup; U+02283
+&nsub; U+02284
+&nsup; U+02285
+&SubsetEqual; U+02286
+&supe; U+02287
+&NotSubsetEqual; U+02288
+&NotSupersetEqual; U+02289
+&subsetneq; U+0228A
+&supsetneq; U+0228B
+&cupdot; U+0228D
+&UnionPlus; U+0228E
+&sqsub; U+0228F
+&sqsupset; U+02290
+&SquareSubsetEqual; U+02291
+&SquareSupersetEqual; U+02292
+&sqcap; U+02293
+&sqcup; U+02294
+&CirclePlus; U+02295
+&ominus; U+02296
+&CircleTimes; U+02297
+&osol; U+02298
+&CircleDot; U+02299
+&ocir; U+0229A
+&oast; U+0229B
+&odash; U+0229D
+&boxplus; U+0229E
+&boxminus; U+0229F
+&timesb; U+022A0
+&sdotb; U+022A1
+&vdash; U+022A2
+&dashv; U+022A3
+&DownTee; U+022A4
+&perp; U+022A5
+&models; U+022A7
+&DoubleRightTee; U+022A8
+&Vdash; U+022A9
+&Vvdash; U+022AA
+&VDash; U+022AB
+&nvdash; U+022AC
+&nvDash; U+022AD
+&nVdash; U+022AE
+&nVDash; U+022AF
+&prurel; U+022B0
+&vartriangleleft; U+022B2
+&vrtri; U+022B3
+&LeftTriangleEqual; U+022B4
+&RightTriangleEqual; U+022B5
+&origof; U+022B6
+&imof; U+022B7
+&mumap; U+022B8
+&hercon; U+022B9
+&intcal; U+022BA
+&veebar; U+022BB
+&barvee; U+022BD
+&angrtvb; U+022BE
+&lrtri; U+022BF
+&xwedge; U+022C0
+&xvee; U+022C1
+&bigcap; U+022C2
+&bigcup; U+022C3
+&diamond; U+022C4
+&sdot; U+022C5
+&Star; U+022C6
+&divonx; U+022C7
+&bowtie; U+022C8
+&ltimes; U+022C9
+&rtimes; U+022CA
+&lthree; U+022CB
+&rthree; U+022CC
+&backsimeq; U+022CD
+&curlyvee; U+022CE
+&curlywedge; U+022CF
+&Sub; U+022D0
+&Supset; U+022D1
+&Cap; U+022D2
+&Cup; U+022D3
+&pitchfork; U+022D4
+&epar; U+022D5
+&lessdot; U+022D6
+&gtrdot; U+022D7
+&Ll; U+022D8
+&Gg; U+022D9
+&lesseqgtr; U+022DA
+&gtreqless; U+022DB
+&curlyeqprec; U+022DE
+&cuesc; U+022DF
+&NotPrecedesSlantEqual; U+022E0
+&NotSucceedsSlantEqual; U+022E1
+&NotSquareSubsetEqual; U+022E2
+&NotSquareSupersetEqual; U+022E3
+&lnsim; U+022E6
+&gnsim; U+022E7
+&precnsim; U+022E8
+&scnsim; U+022E9
+&nltri; U+022EA
+&ntriangleright; U+022EB
+&nltrie; U+022EC
+&NotRightTriangleEqual; U+022ED
+&vellip; U+022EE
+&ctdot; U+022EF
+&utdot; U+022F0
+&dtdot; U+022F1
+&disin; U+022F2
+&isinsv; U+022F3
+&isins; U+022F4
+&isindot; U+022F5
+&notinvc; U+022F6
+&notinvb; U+022F7
+&isinE; U+022F9
+&nisd; U+022FA
+&xnis; U+022FB
+&nis; U+022FC
+&notnivc; U+022FD
+&notnivb; U+022FE
+&barwed; U+02305
+&doublebarwedge; U+02306
+&lceil; U+02308
+&RightCeiling; U+02309
+&LeftFloor; U+0230A
+&RightFloor; U+0230B
+&drcrop; U+0230C
+&dlcrop; U+0230D
+&urcrop; U+0230E
+&ulcrop; U+0230F
+&bnot; U+02310
+&profline; U+02312
+&profsurf; U+02313
+&telrec; U+02315
+&target; U+02316
+&ulcorner; U+0231C
+&urcorner; U+0231D
+&llcorner; U+0231E
+&drcorn; U+0231F
+&frown; U+02322
+&smile; U+02323
+&cylcty; U+0232D
+&profalar; U+0232E
+&topbot; U+02336
+&ovbar; U+0233D
+&solbar; U+0233F
+&angzarr; U+0237C
+&lmoust; U+023B0
+&rmoust; U+023B1
+&OverBracket; U+023B4
+&bbrk; U+023B5
+&bbrktbrk; U+023B6
+&OverParenthesis; U+023DC
+&UnderParenthesis; U+023DD
+&OverBrace; U+023DE
+&UnderBrace; U+023DF
+&trpezium; U+023E2
+&elinters; U+023E7
+&blank; U+02423
+&oS; U+024C8
+&HorizontalLine; U+02500
+&boxv; U+02502
+&boxdr; U+0250C
+&boxdl; U+02510
+&boxur; U+02514
+&boxul; U+02518
+&boxvr; U+0251C
+&boxvl; U+02524
+&boxhd; U+0252C
+&boxhu; U+02534
+&boxvh; U+0253C
+&boxH; U+02550
+&boxV; U+02551
+&boxdR; U+02552
+&boxDr; U+02553
+&boxDR; U+02554
+&boxdL; U+02555
+&boxDl; U+02556
+&boxDL; U+02557
+&boxuR; U+02558
+&boxUr; U+02559
+&boxUR; U+0255A
+&boxuL; U+0255B
+&boxUl; U+0255C
+&boxUL; U+0255D
+&boxvR; U+0255E
+&boxVr; U+0255F
+&boxVR; U+02560
+&boxvL; U+02561
+&boxVl; U+02562
+&boxVL; U+02563
+&boxHd; U+02564
+&boxhD; U+02565
+&boxHD; U+02566
+&boxHu; U+02567
+&boxhU; U+02568
+&boxHU; U+02569
+&boxvH; U+0256A
+&boxVh; U+0256B
+&boxVH; U+0256C
+&uhblk; U+02580
+&lhblk; U+02584
+&block; U+02588
+&blk14; U+02591
+&blk12; U+02592
+&blk34; U+02593
+&Square; U+025A1
+&squarf; U+025AA
+&EmptyVerySmallSquare; U+025AB
+&rect; U+025AD
+&marker; U+025AE
+&fltns; U+025B1
+&bigtriangleup; U+025B3
+&blacktriangle; U+025B4
+&triangle; U+025B5
+&blacktriangleright; U+025B8
+&rtri; U+025B9
+&bigtriangledown; U+025BD
+&blacktriangledown; U+025BE
+&triangledown; U+025BF
+&blacktriangleleft; U+025C2
+&ltri; U+025C3
+&lozenge; U+025CA
+&cir; U+025CB
+&tridot; U+025EC
+&bigcirc; U+025EF
+&ultri; U+025F8
+&urtri; U+025F9
+&lltri; U+025FA
+&EmptySmallSquare; U+025FB
+&FilledSmallSquare; U+025FC
+&starf; U+02605
+&star; U+02606
+&phone; U+0260E
+&female; U+02640
+&male; U+02642
+&spadesuit; U+02660
+&clubs; U+02663
+&hearts; U+02665
+&diamondsuit; U+02666
+&sung; U+0266A
+&flat; U+0266D
+&natur; U+0266E
+&sharp; U+0266F
+&check; U+02713
+&cross; U+02717
+&maltese; U+02720
+&sext; U+02736
+&VerticalSeparator; U+02758
+&lbbrk; U+02772
+&rbbrk; U+02773
+&bsolhsub; U+027C8
+&suphsol; U+027C9
+&LeftDoubleBracket; U+027E6
+&RightDoubleBracket; U+027E7
+&langle; U+027E8
+&RightAngleBracket; U+027E9
+&Lang; U+027EA
+&Rang; U+027EB
+&loang; U+027EC
+&roang; U+027ED
+&longleftarrow; U+027F5
+&LongRightArrow; U+027F6
+&LongLeftRightArrow; U+027F7
+&xlArr; U+027F8
+&DoubleLongRightArrow; U+027F9
+&xhArr; U+027FA
+&xmap; U+027FC
+&dzigrarr; U+027FF
+&nvlArr; U+02902
+&nvrArr; U+02903
+&nvHarr; U+02904
+&Map; U+02905
+&lbarr; U+0290C
+&bkarow; U+0290D
+&lBarr; U+0290E
+&dbkarow; U+0290F
+&drbkarow; U+02910
+&DDotrahd; U+02911
+&UpArrowBar; U+02912
+&DownArrowBar; U+02913
+&Rarrtl; U+02916
+&latail; U+02919
+&ratail; U+0291A
+&lAtail; U+0291B
+&rAtail; U+0291C
+&larrfs; U+0291D
+&rarrfs; U+0291E
+&larrbfs; U+0291F
+&rarrbfs; U+02920
+&nwarhk; U+02923
+&nearhk; U+02924
+&searhk; U+02925
+&swarhk; U+02926
+&nwnear; U+02927
+&toea; U+02928
+&seswar; U+02929
+&swnwar; U+0292A
+&rarrc; U+02933
+&cudarrr; U+02935
+&ldca; U+02936
+&rdca; U+02937
+&cudarrl; U+02938
+&larrpl; U+02939
+&curarrm; U+0293C
+&cularrp; U+0293D
+&rarrpl; U+02945
+&harrcir; U+02948
+&Uarrocir; U+02949
+&lurdshar; U+0294A
+&ldrushar; U+0294B
+&LeftRightVector; U+0294E
+&RightUpDownVector; U+0294F
+&DownLeftRightVector; U+02950
+&LeftUpDownVector; U+02951
+&LeftVectorBar; U+02952
+&RightVectorBar; U+02953
+&RightUpVectorBar; U+02954
+&RightDownVectorBar; U+02955
+&DownLeftVectorBar; U+02956
+&DownRightVectorBar; U+02957
+&LeftUpVectorBar; U+02958
+&LeftDownVectorBar; U+02959
+&LeftTeeVector; U+0295A
+&RightTeeVector; U+0295B
+&RightUpTeeVector; U+0295C
+&RightDownTeeVector; U+0295D
+&DownLeftTeeVector; U+0295E
+&DownRightTeeVector; U+0295F
+&LeftUpTeeVector; U+02960
+&LeftDownTeeVector; U+02961
+&lHar; U+02962
+&uHar; U+02963
+&rHar; U+02964
+&dHar; U+02965
+&luruhar; U+02966
+&ldrdhar; U+02967
+&ruluhar; U+02968
+&rdldhar; U+02969
+&lharul; U+0296A
+&llhard; U+0296B
+&rharul; U+0296C
+&lrhard; U+0296D
+&udhar; U+0296E
+&ReverseUpEquilibrium; U+0296F
+&RoundImplies; U+02970
+&erarr; U+02971
+&simrarr; U+02972
+&larrsim; U+02973
+&rarrsim; U+02974
+&rarrap; U+02975
+&ltlarr; U+02976
+&gtrarr; U+02978
+&subrarr; U+02979
+&suplarr; U+0297B
+&lfisht; U+0297C
+&rfisht; U+0297D
+&ufisht; U+0297E
+&dfisht; U+0297F
+&lopar; U+02985
+&ropar; U+02986
+&lbrke; U+0298B
+&rbrke; U+0298C
+&lbrkslu; U+0298D
+&rbrksld; U+0298E
+&lbrksld; U+0298F
+&rbrkslu; U+02990
+&langd; U+02991
+&rangd; U+02992
+&lparlt; U+02993
+&rpargt; U+02994
+&gtlPar; U+02995
+&ltrPar; U+02996
+&vzigzag; U+0299A
+&vangrt; U+0299C
+&angrtvbd; U+0299D
+&ange; U+029A4
+&range; U+029A5
+&dwangle; U+029A6
+&uwangle; U+029A7
+&angmsdaa; U+029A8
+&angmsdab; U+029A9
+&angmsdac; U+029AA
+&angmsdad; U+029AB
+&angmsdae; U+029AC
+&angmsdaf; U+029AD
+&angmsdag; U+029AE
+&angmsdah; U+029AF
+&bemptyv; U+029B0
+&demptyv; U+029B1
+&cemptyv; U+029B2
+&raemptyv; U+029B3
+&laemptyv; U+029B4
+&ohbar; U+029B5
+&omid; U+029B6
+&opar; U+029B7
+&operp; U+029B9
+&olcross; U+029BB
+&odsold; U+029BC
+&olcir; U+029BE
+&ofcir; U+029BF
+&olt; U+029C0
+&ogt; U+029C1
+&cirscir; U+029C2
+&cirE; U+029C3
+&solb; U+029C4
+&bsolb; U+029C5
+&boxbox; U+029C9
+&trisb; U+029CD
+&rtriltri; U+029CE
+&LeftTriangleBar; U+029CF
+&RightTriangleBar; U+029D0
+&iinfin; U+029DC
+&infintie; U+029DD
+&nvinfin; U+029DE
+&eparsl; U+029E3
+&smeparsl; U+029E4
+&eqvparsl; U+029E5
+&lozf; U+029EB
+&RuleDelayed; U+029F4
+&dsol; U+029F6
+&xodot; U+02A00
+&bigoplus; U+02A01
+&bigotimes; U+02A02
+&biguplus; U+02A04
+&bigsqcup; U+02A06
+&iiiint; U+02A0C
+&fpartint; U+02A0D
+&cirfnint; U+02A10
+&awint; U+02A11
+&rppolint; U+02A12
+&scpolint; U+02A13
+&npolint; U+02A14
+&pointint; U+02A15
+&quatint; U+02A16
+&intlarhk; U+02A17
+&pluscir; U+02A22
+&plusacir; U+02A23
+&simplus; U+02A24
+&plusdu; U+02A25
+&plussim; U+02A26
+&plustwo; U+02A27
+&mcomma; U+02A29
+&minusdu; U+02A2A
+&loplus; U+02A2D
+&roplus; U+02A2E
+&Cross; U+02A2F
+&timesd; U+02A30
+&timesbar; U+02A31
+&smashp; U+02A33
+&lotimes; U+02A34
+&rotimes; U+02A35
+&otimesas; U+02A36
+&Otimes; U+02A37
+&odiv; U+02A38
+&triplus; U+02A39
+&triminus; U+02A3A
+&tritime; U+02A3B
+&iprod; U+02A3C
+&amalg; U+02A3F
+&capdot; U+02A40
+&ncup; U+02A42
+&ncap; U+02A43
+&capand; U+02A44
+&cupor; U+02A45
+&cupcap; U+02A46
+&capcup; U+02A47
+&cupbrcap; U+02A48
+&capbrcup; U+02A49
+&cupcup; U+02A4A
+&capcap; U+02A4B
+&ccups; U+02A4C
+&ccaps; U+02A4D
+&ccupssm; U+02A50
+&And; U+02A53
+&Or; U+02A54
+&andand; U+02A55
+&oror; U+02A56
+&orslope; U+02A57
+&andslope; U+02A58
+&andv; U+02A5A
+&orv; U+02A5B
+&andd; U+02A5C
+&ord; U+02A5D
+&wedbar; U+02A5F
+&sdote; U+02A66
+&simdot; U+02A6A
+&congdot; U+02A6D
+&easter; U+02A6E
+&apacir; U+02A6F
+&apE; U+02A70
+&eplus; U+02A71
+&pluse; U+02A72
+&Esim; U+02A73
+&Colone; U+02A74
+&Equal; U+02A75
+&ddotseq; U+02A77
+&equivDD; U+02A78
+&ltcir; U+02A79
+&gtcir; U+02A7A
+&ltquest; U+02A7B
+&gtquest; U+02A7C
+&les; U+02A7D
+&ges; U+02A7E
+&lesdot; U+02A7F
+&gesdot; U+02A80
+&lesdoto; U+02A81
+&gesdoto; U+02A82
+&lesdotor; U+02A83
+&gesdotol; U+02A84
+&lap; U+02A85
+&gap; U+02A86
+&lne; U+02A87
+&gne; U+02A88
+&lnap; U+02A89
+&gnap; U+02A8A
+&lesseqqgtr; U+02A8B
+&gEl; U+02A8C
+&lsime; U+02A8D
+&gsime; U+02A8E
+&lsimg; U+02A8F
+&gsiml; U+02A90
+&lgE; U+02A91
+&glE; U+02A92
+&lesges; U+02A93
+&gesles; U+02A94
+&els; U+02A95
+&egs; U+02A96
+&elsdot; U+02A97
+&egsdot; U+02A98
+&el; U+02A99
+&eg; U+02A9A
+&siml; U+02A9D
+&simg; U+02A9E
+&simlE; U+02A9F
+&simgE; U+02AA0
+&LessLess; U+02AA1
+&GreaterGreater; U+02AA2
+&glj; U+02AA4
+&gla; U+02AA5
+&ltcc; U+02AA6
+&gtcc; U+02AA7
+&lescc; U+02AA8
+&gescc; U+02AA9
+&smt; U+02AAA
+&lat; U+02AAB
+&smte; U+02AAC
+&late; U+02AAD
+&bumpE; U+02AAE
+&preceq; U+02AAF
+&SucceedsEqual; U+02AB0
+&prE; U+02AB3
+&scE; U+02AB4
+&precneqq; U+02AB5
+&scnE; U+02AB6
+&precapprox; U+02AB7
+&succapprox; U+02AB8
+&precnapprox; U+02AB9
+&succnapprox; U+02ABA
+&Pr; U+02ABB
+&Sc; U+02ABC
+&subdot; U+02ABD
+&supdot; U+02ABE
+&subplus; U+02ABF
+&supplus; U+02AC0
+&submult; U+02AC1
+&supmult; U+02AC2
+&subedot; U+02AC3
+&supedot; U+02AC4
+&subE; U+02AC5
+&supseteqq; U+02AC6
+&subsim; U+02AC7
+&supsim; U+02AC8
+&subsetneqq; U+02ACB
+&supnE; U+02ACC
+&csub; U+02ACF
+&csup; U+02AD0
+&csube; U+02AD1
+&csupe; U+02AD2
+&subsup; U+02AD3
+&supsub; U+02AD4
+&subsub; U+02AD5
+&supsup; U+02AD6
+&suphsub; U+02AD7
+&supdsub; U+02AD8
+&forkv; U+02AD9
+&topfork; U+02ADA
+&mlcp; U+02ADB
+&Dashv; U+02AE4
+&Vdashl; U+02AE6
+&Barv; U+02AE7
+&vBar; U+02AE8
+&vBarv; U+02AE9
+&Vbar; U+02AEB
+&Not; U+02AEC
+&bNot; U+02AED
+&rnmid; U+02AEE
+&cirmid; U+02AEF
+&midcir; U+02AF0
+&topcir; U+02AF1
+&nhpar; U+02AF2
+&parsim; U+02AF3
+&fflig; U+0FB00
+&filig; U+0FB01
+&fllig; U+0FB02
+&ffilig; U+0FB03
+&ffllig; U+0FB04
+&Ascr; U+1D49C
+&Cscr; U+1D49E
+&Dscr; U+1D49F
+&Gscr; U+1D4A2
+&Jscr; U+1D4A5
+&Kscr; U+1D4A6
+&Nscr; U+1D4A9
+&Oscr; U+1D4AA
+&Pscr; U+1D4AB
+&Qscr; U+1D4AC
+&Sscr; U+1D4AE
+&Tscr; U+1D4AF
+&Uscr; U+1D4B0
+&Vscr; U+1D4B1
+&Wscr; U+1D4B2
+&Xscr; U+1D4B3
+&Yscr; U+1D4B4
+&Zscr; U+1D4B5
+&ascr; U+1D4B6
+&bscr; U+1D4B7
+&cscr; U+1D4B8
+&dscr; U+1D4B9
+&fscr; U+1D4BB
+&hscr; U+1D4BD
+&iscr; U+1D4BE
+&jscr; U+1D4BF
+&kscr; U+1D4C0
+&lscr; U+1D4C1
+&mscr; U+1D4C2
+&nscr; U+1D4C3
+&pscr; U+1D4C5
+&qscr; U+1D4C6
+&rscr; U+1D4C7
+&sscr; U+1D4C8
+&tscr; U+1D4C9
+&uscr; U+1D4CA
+&vscr; U+1D4CB
+&wscr; U+1D4CC
+&xscr; U+1D4CD
+&yscr; U+1D4CE
+&zscr; U+1D4CF
+&Afr; U+1D504
+&Bfr; U+1D505
+&Dfr; U+1D507
+&Efr; U+1D508
+&Ffr; U+1D509
+&Gfr; U+1D50A
+&Jfr; U+1D50D
+&Kfr; U+1D50E
+&Lfr; U+1D50F
+&Mfr; U+1D510
+&Nfr; U+1D511
+&Ofr; U+1D512
+&Pfr; U+1D513
+&Qfr; U+1D514
+&Sfr; U+1D516
+&Tfr; U+1D517
+&Ufr; U+1D518
+&Vfr; U+1D519
+&Wfr; U+1D51A
+&Xfr; U+1D51B
+&Yfr; U+1D51C
+&afr; U+1D51E
+&bfr; U+1D51F
+&cfr; U+1D520
+&dfr; U+1D521
+&efr; U+1D522
+&ffr; U+1D523
+&gfr; U+1D524
+&hfr; U+1D525
+&ifr; U+1D526
+&jfr; U+1D527
+&kfr; U+1D528
+&lfr; U+1D529
+&mfr; U+1D52A
+&nfr; U+1D52B
+&ofr; U+1D52C
+&pfr; U+1D52D
+&qfr; U+1D52E
+&rfr; U+1D52F
+&sfr; U+1D530
+&tfr; U+1D531
+&ufr; U+1D532
+&vfr; U+1D533
+&wfr; U+1D534
+&xfr; U+1D535
+&yfr; U+1D536
+&zfr; U+1D537
+&Aopf; U+1D538
+&Bopf; U+1D539
+&Dopf; U+1D53B
+&Eopf; U+1D53C
+&Fopf; U+1D53D
+&Gopf; U+1D53E
+&Iopf; U+1D540
+&Jopf; U+1D541
+&Kopf; U+1D542
+&Lopf; U+1D543
+&Mopf; U+1D544
+&Oopf; U+1D546
+&Sopf; U+1D54A
+&Topf; U+1D54B
+&Uopf; U+1D54C
+&Vopf; U+1D54D
+&Wopf; U+1D54E
+&Xopf; U+1D54F
+&Yopf; U+1D550
+&aopf; U+1D552
+&bopf; U+1D553
+&copf; U+1D554
+&dopf; U+1D555
+&eopf; U+1D556
+&fopf; U+1D557
+&gopf; U+1D558
+&hopf; U+1D559
+&iopf; U+1D55A
+&jopf; U+1D55B
+&kopf; U+1D55C
+&lopf; U+1D55D
+&mopf; U+1D55E
+&nopf; U+1D55F
+&oopf; U+1D560
+&popf; U+1D561
+&qopf; U+1D562
+&ropf; U+1D563
+&sopf; U+1D564
+&topf; U+1D565
+&uopf; U+1D566
+&vopf; U+1D567
+&wopf; U+1D568
+&xopf; U+1D569
+&yopf; U+1D56A
+&zopf; U+1D56B
+&nvlt; U+0003C U+020D2
+&bne; U+0003D U+020E5
+&nvgt; U+0003E U+020D2
+&fjlig; U+00066 U+0006A
+&ThickSpace; U+0205F U+0200A
+&nrarrw; U+0219D U+00338
+&npart; U+02202 U+00338
+&nang; U+02220 U+020D2
+&caps; U+02229 U+0FE00
+&cups; U+0222A U+0FE00
+&nvsim; U+0223C U+020D2
+&race; U+0223D U+00331
+&acE; U+0223E U+00333
+&nesim; U+02242 U+00338
+&napid; U+0224B U+00338
+&nvap; U+0224D U+020D2
+&nbump; U+0224E U+00338
+&nbumpe; U+0224F U+00338
+&nedot; U+02250 U+00338
+&bnequiv; U+02261 U+020E5
+&nvle; U+02264 U+020D2
+&nvge; U+02265 U+020D2
+&nlE; U+02266 U+00338
+&NotGreaterFullEqual; U+02267 U+00338
+&lvertneqq; U+02268 U+0FE00
+&gvertneqq; U+02269 U+0FE00
+&nLtv; U+0226A U+00338
+&nLt; U+0226A U+020D2
+&NotGreaterGreater; U+0226B U+00338
+&nGt; U+0226B U+020D2
+&NotSucceedsTilde; U+0227F U+00338
+&vnsub; U+02282 U+020D2
+&nsupset; U+02283 U+020D2
+&vsubne; U+0228A U+0FE00
+&vsupne; U+0228B U+0FE00
+&NotSquareSubset; U+0228F U+00338
+&NotSquareSuperset; U+02290 U+00338
+&sqcaps; U+02293 U+0FE00
+&sqcups; U+02294 U+0FE00
+&nvltrie; U+022B4 U+020D2
+&nvrtrie; U+022B5 U+020D2
+&nLl; U+022D8 U+00338
+&nGg; U+022D9 U+00338
+&lesg; U+022DA U+0FE00
+&gesl; U+022DB U+0FE00
+&notindot; U+022F5 U+00338
+&notinE; U+022F9 U+00338
+&nrarrc; U+02933 U+00338
+&NotLeftTriangleBar; U+029CF U+00338
+&NotRightTriangleBar; U+029D0 U+00338
+&ncongdot; U+02A6D U+00338
+&napE; U+02A70 U+00338
+&nles; U+02A7D U+00338
+&nges; U+02A7E U+00338
+&NotNestedLessLess; U+02AA1 U+00338
+&NotNestedGreaterGreater; U+02AA2 U+00338
+&smtes; U+02AAC U+0FE00
+&lates; U+02AAD U+0FE00
+&NotPrecedesEqual; U+02AAF U+00338
+&NotSucceedsEqual; U+02AB0 U+00338
+&nsubE; U+02AC5 U+00338
+&nsupseteqq; U+02AC6 U+00338
+&vsubnE; U+02ACB U+0FE00
+&varsupsetneqq; U+02ACC U+0FE00
+&varsupsetneqq; U+02AFD U+0FE00
diff --git a/ext/standard/tests/strings/htmlspecialchars_decode_variation7.phpt b/ext/standard/tests/strings/htmlspecialchars_decode_variation7.phpt
new file mode 100644
index 0000000000..20669b3513
--- /dev/null
+++ b/ext/standard/tests/strings/htmlspecialchars_decode_variation7.phpt
@@ -0,0 +1,192 @@
+--TEST--
+Test htmlspecialchars_decode() function : usage variations - numerical entities for basic characters
+--FILE--
+<?php
+$tests = array(
+ "&quot;", "&#x22;", "&#34;",
+ "&apos;", "&#39;", "&#x27;",
+ "&amp;", "&#x26;", "&lt;",
+ "&gt;", "&#x3C;", "&#60;",
+ "&lt;", "&#x3E;", "&#62;",
+ "&#63;"
+);
+
+echo "*** HTML 4.01/ENT_QUOTES ***\n";
+
+foreach ($tests as $t) {
+ $dec = htmlspecialchars_decode($t, ENT_QUOTES | ENT_HTML401);
+ if ($t == $dec) {
+ echo "$t\tNOT DECODED\n";
+ } else {
+ echo "$t\tDECODED\n";
+ }
+}
+
+echo "\n*** XHTML 1.0/ENT_QUOTES ***\n";
+
+foreach ($tests as $t) {
+ $dec = htmlspecialchars_decode($t, ENT_QUOTES | ENT_XHTML);
+ if ($t == $dec) {
+ echo "$t\tNOT DECODED\n";
+ } else {
+ echo "$t\tDECODED\n";
+ }
+}
+
+echo "\n*** HTML5/ENT_QUOTES ***\n";
+
+foreach ($tests as $t) {
+ $dec = htmlspecialchars_decode($t, ENT_QUOTES | ENT_HTML5);
+ if ($t == $dec) {
+ echo "$t\tNOT DECODED\n";
+ } else {
+ echo "$t\tDECODED\n";
+ }
+}
+
+echo "\n*** XML 1.0/ENT_QUOTES ***\n";
+
+foreach ($tests as $t) {
+ $dec = htmlspecialchars_decode($t, ENT_QUOTES | ENT_XML1);
+ if ($t == $dec) {
+ echo "$t\tNOT DECODED\n";
+ } else {
+ echo "$t\tDECODED\n";
+ }
+}
+
+echo "\n*** HTML5/ENT_NOQUOTES ***\n";
+
+foreach ($tests as $t) {
+ $dec = htmlspecialchars_decode($t, ENT_NOQUOTES | ENT_HTML5);
+ if ($t == $dec) {
+ echo "$t\tNOT DECODED\n";
+ } else {
+ echo "$t\tDECODED\n";
+ }
+}
+
+echo "\n*** HTML5/ENT_COMPAT ***\n";
+
+foreach ($tests as $t) {
+ $dec = htmlspecialchars_decode($t, ENT_COMPAT | ENT_HTML5);
+ if ($t == $dec) {
+ echo "$t\tNOT DECODED\n";
+ } else {
+ echo "$t\tDECODED\n";
+ }
+}
+
+
+echo "\nDone.\n";
+?>
+--EXPECT--
+*** HTML 4.01/ENT_QUOTES ***
+&quot; DECODED
+&#x22; DECODED
+&#34; DECODED
+&apos; NOT DECODED
+&#39; DECODED
+&#x27; DECODED
+&amp; DECODED
+&#x26; DECODED
+&lt; DECODED
+&gt; DECODED
+&#x3C; DECODED
+&#60; DECODED
+&lt; DECODED
+&#x3E; DECODED
+&#62; DECODED
+&#63; NOT DECODED
+
+*** XHTML 1.0/ENT_QUOTES ***
+&quot; DECODED
+&#x22; DECODED
+&#34; DECODED
+&apos; DECODED
+&#39; DECODED
+&#x27; DECODED
+&amp; DECODED
+&#x26; DECODED
+&lt; DECODED
+&gt; DECODED
+&#x3C; DECODED
+&#60; DECODED
+&lt; DECODED
+&#x3E; DECODED
+&#62; DECODED
+&#63; NOT DECODED
+
+*** HTML5/ENT_QUOTES ***
+&quot; DECODED
+&#x22; DECODED
+&#34; DECODED
+&apos; DECODED
+&#39; DECODED
+&#x27; DECODED
+&amp; DECODED
+&#x26; DECODED
+&lt; DECODED
+&gt; DECODED
+&#x3C; DECODED
+&#60; DECODED
+&lt; DECODED
+&#x3E; DECODED
+&#62; DECODED
+&#63; NOT DECODED
+
+*** XML 1.0/ENT_QUOTES ***
+&quot; DECODED
+&#x22; DECODED
+&#34; DECODED
+&apos; DECODED
+&#39; DECODED
+&#x27; DECODED
+&amp; DECODED
+&#x26; DECODED
+&lt; DECODED
+&gt; DECODED
+&#x3C; DECODED
+&#60; DECODED
+&lt; DECODED
+&#x3E; DECODED
+&#62; DECODED
+&#63; NOT DECODED
+
+*** HTML5/ENT_NOQUOTES ***
+&quot; NOT DECODED
+&#x22; NOT DECODED
+&#34; NOT DECODED
+&apos; NOT DECODED
+&#39; NOT DECODED
+&#x27; NOT DECODED
+&amp; DECODED
+&#x26; DECODED
+&lt; DECODED
+&gt; DECODED
+&#x3C; DECODED
+&#60; DECODED
+&lt; DECODED
+&#x3E; DECODED
+&#62; DECODED
+&#63; NOT DECODED
+
+*** HTML5/ENT_COMPAT ***
+&quot; DECODED
+&#x22; DECODED
+&#34; DECODED
+&apos; NOT DECODED
+&#39; NOT DECODED
+&#x27; NOT DECODED
+&amp; DECODED
+&#x26; DECODED
+&lt; DECODED
+&gt; DECODED
+&#x3C; DECODED
+&#60; DECODED
+&lt; DECODED
+&#x3E; DECODED
+&#62; DECODED
+&#63; NOT DECODED
+
+Done.