diff options
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 ≫⃒ and ≪⃒ */ +/* +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 '...*/ + 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*)"�"; + replacement_len = sizeof("�") - 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, "&", sizeof("&") - 1); - len += sizeof("&") - 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 (Z) */ - if (*s == 'x' || *s == 'X') { - s++; - while (s < e) { - if (!isxdigit((int)*(unsigned char *)s++)) { - goto encode_amp; - } - } - /* Dec (Z)*/ - } 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], "&", sizeof("&") - 1); + len += sizeof("&") - 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, "e_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, "e_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[] = { - { '&', "&", 5, 0 }, - { '"', """, 6, ENT_HTML_QUOTE_DOUBLE }, - /* PHP traditionally encodes ' as ', not ', so leave this entry here */ - { '\'', "'", 6, ENT_HTML_QUOTE_SINGLE }, - { '\'', "'", 6, ENT_HTML_QUOTE_SINGLE }, - { '<', "<", 4, 0 }, - { '>', ">", 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[] = { - { '&', "&", 5, 0 }, - { '"', """, 6, ENT_HTML_QUOTE_DOUBLE }, - /* PHP traditionally encodes ' as ', not ', so leave this entry here */ - { '\'', "'", 6, ENT_HTML_QUOTE_SINGLE }, - { '\'', "'", 6, ENT_HTML_QUOTE_SINGLE }, - { '<', "<", 4, 0 }, - { '>', ">", 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 ' 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 > 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 "e;, not " */ + 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) " " - ["¡"]=> - string(7) "¡" - ["¢"]=> - string(6) "¢" - ["£"]=> - string(7) "£" - ["¤"]=> - string(8) "¤" - ["Â¥"]=> - string(5) "¥" - ["¦"]=> - string(8) "¦" - ["§"]=> - string(6) "§" - ["¨"]=> - string(5) "¨" - ["©"]=> - string(6) "©" - ["ª"]=> - string(6) "ª" - ["«"]=> - string(7) "«" - ["¬"]=> - string(5) "¬" - ["Â"]=> - string(5) "­" - ["®"]=> - string(5) "®" - ["¯"]=> - string(6) "¯" - ["°"]=> - string(5) "°" - ["±"]=> - string(8) "±" - ["²"]=> - string(6) "²" - ["³"]=> - string(6) "³" - ["´"]=> - string(7) "´" - ["µ"]=> - string(7) "µ" - ["¶"]=> - string(6) "¶" - ["·"]=> - string(8) "·" - ["¸"]=> - string(7) "¸" - ["¹"]=> - string(6) "¹" - ["º"]=> - string(6) "º" - ["»"]=> - string(7) "»" - ["¼"]=> - string(8) "¼" - ["½"]=> - string(8) "½" - ["¾"]=> - string(8) "¾" - ["¿"]=> - string(8) "¿" - ["À"]=> - string(8) "À" - ["Ã"]=> - string(8) "Á" - ["Â"]=> - string(7) "Â" - ["Ã"]=> - string(8) "Ã" - ["Ä"]=> - string(6) "Ä" - ["Ã…"]=> - string(7) "Å" - ["Æ"]=> - string(7) "Æ" - ["Ç"]=> - string(8) "Ç" - ["È"]=> - string(8) "È" - ["É"]=> - string(8) "É" - ["Ê"]=> - string(7) "Ê" - ["Ë"]=> - string(6) "Ë" - ["ÃŒ"]=> - string(8) "Ì" - ["Ã"]=> - string(8) "Í" - ["ÃŽ"]=> - string(7) "Î" - ["Ã"]=> - string(6) "Ï" - ["Ã"]=> - string(5) "Ð" - ["Ñ"]=> - string(8) "Ñ" - ["Ã’"]=> - string(8) "Ò" - ["Ó"]=> - string(8) "Ó" - ["Ô"]=> - string(7) "Ô" - ["Õ"]=> - string(8) "Õ" - ["Ö"]=> - string(6) "Ö" - ["×"]=> - string(7) "×" - ["Ø"]=> - string(8) "Ø" - ["Ù"]=> - string(8) "Ù" - ["Ú"]=> - string(8) "Ú" - ["Û"]=> - string(7) "Û" - ["Ãœ"]=> - string(6) "Ü" - ["Ã"]=> - string(8) "Ý" - ["Þ"]=> - string(7) "Þ" - ["ß"]=> - string(7) "ß" - ["à "]=> - string(8) "à" - ["á"]=> - string(8) "á" - ["â"]=> - string(7) "â" - ["ã"]=> - string(8) "ã" - ["ä"]=> - string(6) "ä" - ["Ã¥"]=> - string(7) "å" - ["æ"]=> - string(7) "æ" - ["ç"]=> - string(8) "ç" - ["è"]=> - string(8) "è" - ["é"]=> - string(8) "é" - ["ê"]=> - string(7) "ê" - ["ë"]=> - string(6) "ë" - ["ì"]=> - string(8) "ì" - ["Ã"]=> - string(8) "í" - ["î"]=> - string(7) "î" - ["ï"]=> - string(6) "ï" - ["ð"]=> - string(5) "ð" - ["ñ"]=> - string(8) "ñ" - ["ò"]=> - string(8) "ò" - ["ó"]=> - string(8) "ó" - ["ô"]=> - string(7) "ô" - ["õ"]=> - string(8) "õ" - ["ö"]=> - string(6) "ö" - ["÷"]=> - string(8) "÷" - ["ø"]=> - string(8) "ø" - ["ù"]=> - string(8) "ù" - ["ú"]=> - string(8) "ú" - ["û"]=> - string(7) "û" - ["ü"]=> - string(6) "ü" - ["ý"]=> - string(8) "ý" - ["þ"]=> - string(7) "þ" - ["ÿ"]=> - string(6) "ÿ" - ["Å’"]=> - string(7) "Œ" - ["Å“"]=> - string(7) "œ" - ["Å "]=> - string(8) "Š" - ["Å¡"]=> - string(8) "š" - ["Ÿ"]=> - string(6) "Ÿ" - ["Æ’"]=> - string(6) "ƒ" - ["ˆ"]=> - string(6) "ˆ" - ["Ëœ"]=> - string(7) "˜" - ["Α"]=> - string(7) "Α" - ["Î’"]=> - string(6) "Β" - ["Γ"]=> - string(7) "Γ" - ["Δ"]=> - string(7) "Δ" - ["Ε"]=> - string(9) "Ε" - ["Ζ"]=> - string(6) "Ζ" - ["Η"]=> - string(5) "Η" - ["Θ"]=> - string(7) "Θ" - ["Ι"]=> - string(6) "Ι" - ["Κ"]=> - string(7) "Κ" - ["Λ"]=> - string(8) "Λ" - ["Îœ"]=> - string(4) "Μ" - ["Î"]=> - string(4) "Ν" - ["Ξ"]=> - string(4) "Ξ" - ["Ο"]=> - string(9) "Ο" - ["Î "]=> - string(4) "Π" - ["Ρ"]=> - string(5) "Ρ" - ["Σ"]=> - string(7) "Σ" - ["Τ"]=> - string(5) "Τ" - ["Î¥"]=> - string(9) "Υ" - ["Φ"]=> - string(5) "Φ" - ["Χ"]=> - string(5) "Χ" - ["Ψ"]=> - string(5) "Ψ" - ["Ω"]=> - string(7) "Ω" - ["α"]=> - string(7) "α" - ["β"]=> - string(6) "β" - ["γ"]=> - string(7) "γ" - ["δ"]=> - string(7) "δ" - ["ε"]=> - string(9) "ε" - ["ζ"]=> - string(6) "ζ" - ["η"]=> - string(5) "η" - ["θ"]=> - string(7) "θ" - ["ι"]=> - string(6) "ι" - ["κ"]=> - string(7) "κ" - ["λ"]=> - string(8) "λ" - ["μ"]=> - string(4) "μ" - ["ν"]=> - string(4) "ν" - ["ξ"]=> - string(4) "ξ" - ["ο"]=> - string(9) "ο" - ["Ï€"]=> - string(4) "π" - ["Ï"]=> - string(5) "ρ" - ["Ï‚"]=> - string(8) "ς" - ["σ"]=> - string(7) "σ" - ["Ï„"]=> - string(5) "τ" - ["Ï…"]=> - string(9) "υ" - ["φ"]=> - string(5) "φ" - ["χ"]=> - string(5) "χ" - ["ψ"]=> - string(5) "ψ" - ["ω"]=> - string(7) "ω" - ["Ï‘"]=> - string(10) "ϑ" - ["Ï’"]=> - string(7) "ϒ" - ["Ï–"]=> - string(5) "ϖ" - [" "]=> - string(6) " " - [" "]=> - string(6) " " - [" "]=> - string(8) " " - ["‌"]=> - string(6) "‌" - ["â€"]=> - string(5) "‍" - ["‎"]=> - string(5) "‎" - ["â€"]=> - string(5) "‏" - ["–"]=> - string(7) "–" - ["—"]=> - string(7) "—" - ["‘"]=> - string(7) "‘" - ["’"]=> - string(7) "’" - ["‚"]=> - string(7) "‚" - ["“"]=> - string(7) "“" - ["â€"]=> - string(7) "”" - ["„"]=> - string(7) "„" - ["†"]=> - string(8) "†" - ["‡"]=> - string(8) "‡" - ["•"]=> - string(6) "•" - ["…"]=> - string(8) "…" - ["‰"]=> - string(8) "‰" - ["′"]=> - string(7) "′" - ["″"]=> - string(7) "″" - ["‹"]=> - string(8) "‹" - ["›"]=> - string(8) "›" - ["‾"]=> - string(7) "‾" - ["â„"]=> - string(7) "⁄" - ["€"]=> - string(6) "€" - ["â„‘"]=> - string(7) "ℑ" - ["℘"]=> - string(8) "℘" - ["â„œ"]=> - string(6) "ℜ" - ["â„¢"]=> - string(7) "™" - ["ℵ"]=> - string(9) "ℵ" - ["â†"]=> - string(6) "←" - ["↑"]=> - string(6) "↑" - ["→"]=> - string(6) "→" - ["↓"]=> - string(6) "↓" - ["↔"]=> - string(6) "↔" - ["↵"]=> - string(7) "↵" - ["â‡"]=> - string(6) "⇐" - ["⇑"]=> - string(6) "⇑" - ["⇒"]=> - string(6) "⇒" - ["⇓"]=> - string(6) "⇓" - ["⇔"]=> - string(6) "⇔" - ["∀"]=> - string(8) "∀" - ["∂"]=> - string(6) "∂" - ["∃"]=> - string(7) "∃" - ["∅"]=> - string(7) "∅" - ["∇"]=> - string(7) "∇" - ["∈"]=> - string(6) "∈" - ["∉"]=> - string(7) "∉" - ["∋"]=> - string(4) "∋" - ["âˆ"]=> - string(6) "∏" - ["∑"]=> - string(5) "∑" - ["−"]=> - string(7) "−" - ["∗"]=> - string(8) "∗" - ["√"]=> - string(7) "√" - ["âˆ"]=> - string(6) "∝" - ["∞"]=> - string(7) "∞" - ["∠"]=> - string(5) "∠" - ["∧"]=> - string(5) "∧" - ["∨"]=> - string(4) "∨" - ["∩"]=> - string(5) "∩" - ["∪"]=> - string(5) "∪" - ["∫"]=> - string(5) "∫" - ["∴"]=> - string(8) "∴" - ["∼"]=> - string(5) "∼" - ["≅"]=> - string(6) "≅" - ["≈"]=> - string(7) "≈" - ["≠"]=> - string(4) "≠" - ["≡"]=> - string(7) "≡" - ["≤"]=> - string(4) "≤" - ["≥"]=> - string(4) "≥" - ["⊂"]=> - string(5) "⊂" - ["⊃"]=> - string(5) "⊃" - ["⊄"]=> - string(6) "⊄" - ["⊆"]=> - string(6) "⊆" - ["⊇"]=> - string(6) "⊇" - ["⊕"]=> - string(7) "⊕" - ["⊗"]=> - string(8) "⊗" - ["⊥"]=> - string(6) "⊥" - ["â‹…"]=> - string(6) "⋅" - ["⌈"]=> - string(7) "⌈" - ["⌉"]=> - string(7) "⌉" - ["⌊"]=> - string(8) "⌊" - ["⌋"]=> - string(8) "⌋" - ["〈"]=> - string(6) "⟨" - ["〉"]=> - string(6) "⟩" - ["â—Š"]=> - string(5) "◊" - ["â™ "]=> - string(8) "♠" - ["♣"]=> - string(7) "♣" - ["♥"]=> - string(8) "♥" - ["♦"]=> - string(7) "♦" - ["&"]=> - string(5) "&" - ["""]=> - string(6) """ - ["<"]=> - string(4) "<" - [">"]=> - string(4) ">" -} --- with table = HTML_SPECIALCHARS -- -array(4) { - ["&"]=> - string(5) "&" - ["""]=> - string(6) """ - ["<"]=> - string(4) "<" - [">"]=> - string(4) ">" -} -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) "Æ"
+ ["Ã"]=>
+ string(8) "Á"
+ ["Â"]=>
+ string(7) "Â"
+ ["À"]=>
+ string(8) "À"
+ ["Α"]=>
+ string(7) "Α"
+ ["Ã…"]=>
+ string(7) "Å"
+ ["Ã"]=>
+ string(8) "Ã"
+ ["Ä"]=>
+ string(6) "Ä"
+ ["Î’"]=>
+ string(6) "Β"
+ ["Ç"]=>
+ string(8) "Ç"
+ ["Χ"]=>
+ string(5) "Χ"
+ ["‡"]=>
+ string(8) "‡"
+ ["Δ"]=>
+ string(7) "Δ"
+ ["Ã"]=>
+ string(5) "Ð"
+ ["É"]=>
+ string(8) "É"
+ ["Ê"]=>
+ string(7) "Ê"
+ ["È"]=>
+ string(8) "È"
+ ["Ε"]=>
+ string(9) "Ε"
+ ["Η"]=>
+ string(5) "Η"
+ ["Ë"]=>
+ string(6) "Ë"
+ ["Γ"]=>
+ string(7) "Γ"
+ ["Ã"]=>
+ string(8) "Í"
+ ["ÃŽ"]=>
+ string(7) "Î"
+ ["Ì"]=>
+ string(8) "Ì"
+ ["Ι"]=>
+ string(6) "Ι"
+ ["Ã"]=>
+ string(6) "Ï"
+ ["Κ"]=>
+ string(7) "Κ"
+ ["Λ"]=>
+ string(8) "Λ"
+ ["Μ"]=>
+ string(4) "Μ"
+ ["Ñ"]=>
+ string(8) "Ñ"
+ ["Î"]=>
+ string(4) "Ν"
+ ["Å’"]=>
+ string(7) "Œ"
+ ["Ó"]=>
+ string(8) "Ó"
+ ["Ô"]=>
+ string(7) "Ô"
+ ["Ã’"]=>
+ string(8) "Ò"
+ ["Ω"]=>
+ string(7) "Ω"
+ ["Ο"]=>
+ string(9) "Ο"
+ ["Ø"]=>
+ string(8) "Ø"
+ ["Õ"]=>
+ string(8) "Õ"
+ ["Ö"]=>
+ string(6) "Ö"
+ ["Φ"]=>
+ string(5) "Φ"
+ ["Î "]=>
+ string(4) "Π"
+ ["″"]=>
+ string(7) "″"
+ ["Ψ"]=>
+ string(5) "Ψ"
+ ["Ρ"]=>
+ string(5) "Ρ"
+ ["Å "]=>
+ string(8) "Š"
+ ["Σ"]=>
+ string(7) "Σ"
+ ["Þ"]=>
+ string(7) "Þ"
+ ["Τ"]=>
+ string(5) "Τ"
+ ["Θ"]=>
+ string(7) "Θ"
+ ["Ú"]=>
+ string(8) "Ú"
+ ["Û"]=>
+ string(7) "Û"
+ ["Ù"]=>
+ string(8) "Ù"
+ ["Î¥"]=>
+ string(9) "Υ"
+ ["Ü"]=>
+ string(6) "Ü"
+ ["Ξ"]=>
+ string(4) "Ξ"
+ ["Ã"]=>
+ string(8) "Ý"
+ ["Ÿ"]=>
+ string(6) "Ÿ"
+ ["Ζ"]=>
+ string(6) "Ζ"
+ ["á"]=>
+ string(8) "á"
+ ["â"]=>
+ string(7) "â"
+ ["´"]=>
+ string(7) "´"
+ ["æ"]=>
+ string(7) "æ"
+ ["Ã "]=>
+ string(8) "à"
+ ["ℵ"]=>
+ string(9) "ℵ"
+ ["α"]=>
+ string(7) "α"
+ ["&"]=>
+ string(5) "&"
+ ["∧"]=>
+ string(5) "∧"
+ ["∠"]=>
+ string(5) "∠"
+ ["Ã¥"]=>
+ string(7) "å"
+ ["≈"]=>
+ string(7) "≈"
+ ["ã"]=>
+ string(8) "ã"
+ ["ä"]=>
+ string(6) "ä"
+ ["„"]=>
+ string(7) "„"
+ ["β"]=>
+ string(6) "β"
+ ["¦"]=>
+ string(8) "¦"
+ ["•"]=>
+ string(6) "•"
+ ["∩"]=>
+ string(5) "∩"
+ ["ç"]=>
+ string(8) "ç"
+ ["¸"]=>
+ string(7) "¸"
+ ["¢"]=>
+ string(6) "¢"
+ ["χ"]=>
+ string(5) "χ"
+ ["ˆ"]=>
+ string(6) "ˆ"
+ ["♣"]=>
+ string(7) "♣"
+ ["≅"]=>
+ string(6) "≅"
+ ["©"]=>
+ string(6) "©"
+ ["↵"]=>
+ string(7) "↵"
+ ["∪"]=>
+ string(5) "∪"
+ ["¤"]=>
+ string(8) "¤"
+ ["⇓"]=>
+ string(6) "⇓"
+ ["†"]=>
+ string(8) "†"
+ ["↓"]=>
+ string(6) "↓"
+ ["°"]=>
+ string(5) "°"
+ ["δ"]=>
+ string(7) "δ"
+ ["♦"]=>
+ string(7) "♦"
+ ["÷"]=>
+ string(8) "÷"
+ ["é"]=>
+ string(8) "é"
+ ["ê"]=>
+ string(7) "ê"
+ ["è"]=>
+ string(8) "è"
+ ["∅"]=>
+ string(7) "∅"
+ [" "]=>
+ string(6) " "
+ [" "]=>
+ string(6) " "
+ ["ε"]=>
+ string(9) "ε"
+ ["≡"]=>
+ string(7) "≡"
+ ["η"]=>
+ string(5) "η"
+ ["ð"]=>
+ string(5) "ð"
+ ["ë"]=>
+ string(6) "ë"
+ ["€"]=>
+ string(6) "€"
+ ["∃"]=>
+ string(7) "∃"
+ ["Æ’"]=>
+ string(6) "ƒ"
+ ["∀"]=>
+ string(8) "∀"
+ ["½"]=>
+ string(8) "½"
+ ["¼"]=>
+ string(8) "¼"
+ ["¾"]=>
+ string(8) "¾"
+ ["â„"]=>
+ string(7) "⁄"
+ ["γ"]=>
+ string(7) "γ"
+ ["≥"]=>
+ string(4) "≥"
+ [">"]=>
+ string(4) ">"
+ ["⇔"]=>
+ string(6) "⇔"
+ ["↔"]=>
+ string(6) "↔"
+ ["♥"]=>
+ string(8) "♥"
+ ["…"]=>
+ string(8) "…"
+ ["Ã"]=>
+ string(8) "í"
+ ["î"]=>
+ string(7) "î"
+ ["¡"]=>
+ string(7) "¡"
+ ["ì"]=>
+ string(8) "ì"
+ ["â„‘"]=>
+ string(7) "ℑ"
+ ["∞"]=>
+ string(7) "∞"
+ ["∫"]=>
+ string(5) "∫"
+ ["ι"]=>
+ string(6) "ι"
+ ["¿"]=>
+ string(8) "¿"
+ ["∈"]=>
+ string(6) "∈"
+ ["ï"]=>
+ string(6) "ï"
+ ["κ"]=>
+ string(7) "κ"
+ ["â‡"]=>
+ string(6) "⇐"
+ ["λ"]=>
+ string(8) "λ"
+ ["〈"]=>
+ string(6) "⟨"
+ ["«"]=>
+ string(7) "«"
+ ["â†"]=>
+ string(6) "←"
+ ["⌈"]=>
+ string(7) "⌈"
+ ["“"]=>
+ string(7) "“"
+ ["≤"]=>
+ string(4) "≤"
+ ["⌊"]=>
+ string(8) "⌊"
+ ["∗"]=>
+ string(8) "∗"
+ ["â—Š"]=>
+ string(5) "◊"
+ ["‎"]=>
+ string(5) "‎"
+ ["‹"]=>
+ string(8) "‹"
+ ["‘"]=>
+ string(7) "‘"
+ ["<"]=>
+ string(4) "<"
+ ["¯"]=>
+ string(6) "¯"
+ ["—"]=>
+ string(7) "—"
+ ["µ"]=>
+ string(7) "µ"
+ ["·"]=>
+ string(8) "·"
+ ["−"]=>
+ string(7) "−"
+ ["μ"]=>
+ string(4) "μ"
+ ["∇"]=>
+ string(7) "∇"
+ ["Â "]=>
+ string(6) " "
+ ["–"]=>
+ string(7) "–"
+ ["≠"]=>
+ string(4) "≠"
+ ["∋"]=>
+ string(4) "∋"
+ ["¬"]=>
+ string(5) "¬"
+ ["∉"]=>
+ string(7) "∉"
+ ["⊄"]=>
+ string(6) "⊄"
+ ["ñ"]=>
+ string(8) "ñ"
+ ["ν"]=>
+ string(4) "ν"
+ ["ó"]=>
+ string(8) "ó"
+ ["ô"]=>
+ string(7) "ô"
+ ["Å“"]=>
+ string(7) "œ"
+ ["ò"]=>
+ string(8) "ò"
+ ["‾"]=>
+ string(7) "‾"
+ ["ω"]=>
+ string(7) "ω"
+ ["ο"]=>
+ string(9) "ο"
+ ["⊕"]=>
+ string(7) "⊕"
+ ["∨"]=>
+ string(4) "∨"
+ ["ª"]=>
+ string(6) "ª"
+ ["º"]=>
+ string(6) "º"
+ ["ø"]=>
+ string(8) "ø"
+ ["õ"]=>
+ string(8) "õ"
+ ["⊗"]=>
+ string(8) "⊗"
+ ["ö"]=>
+ string(6) "ö"
+ ["¶"]=>
+ string(6) "¶"
+ ["∂"]=>
+ string(6) "∂"
+ ["‰"]=>
+ string(8) "‰"
+ ["⊥"]=>
+ string(6) "⊥"
+ ["φ"]=>
+ string(5) "φ"
+ ["Ï€"]=>
+ string(4) "π"
+ ["Ï–"]=>
+ string(5) "ϖ"
+ ["±"]=>
+ string(8) "±"
+ ["£"]=>
+ string(7) "£"
+ ["′"]=>
+ string(7) "′"
+ ["âˆ"]=>
+ string(6) "∏"
+ ["âˆ"]=>
+ string(6) "∝"
+ ["ψ"]=>
+ string(5) "ψ"
+ ["""]=>
+ string(6) """
+ ["⇒"]=>
+ string(6) "⇒"
+ ["√"]=>
+ string(7) "√"
+ ["〉"]=>
+ string(6) "⟩"
+ ["»"]=>
+ string(7) "»"
+ ["→"]=>
+ string(6) "→"
+ ["⌉"]=>
+ string(7) "⌉"
+ ["â€"]=>
+ string(7) "”"
+ ["ℜ"]=>
+ string(6) "ℜ"
+ ["®"]=>
+ string(5) "®"
+ ["⌋"]=>
+ string(8) "⌋"
+ ["Ï"]=>
+ string(5) "ρ"
+ ["â€"]=>
+ string(5) "‏"
+ ["›"]=>
+ string(8) "›"
+ ["’"]=>
+ string(7) "’"
+ ["‚"]=>
+ string(7) "‚"
+ ["Å¡"]=>
+ string(8) "š"
+ ["â‹…"]=>
+ string(6) "⋅"
+ ["§"]=>
+ string(6) "§"
+ ["Â"]=>
+ string(5) "­"
+ ["σ"]=>
+ string(7) "σ"
+ ["Ï‚"]=>
+ string(8) "ς"
+ ["∼"]=>
+ string(5) "∼"
+ ["â™ "]=>
+ string(8) "♠"
+ ["⊂"]=>
+ string(5) "⊂"
+ ["⊆"]=>
+ string(6) "⊆"
+ ["∑"]=>
+ string(5) "∑"
+ ["¹"]=>
+ string(6) "¹"
+ ["²"]=>
+ string(6) "²"
+ ["³"]=>
+ string(6) "³"
+ ["⊃"]=>
+ string(5) "⊃"
+ ["⊇"]=>
+ string(6) "⊇"
+ ["ß"]=>
+ string(7) "ß"
+ ["Ï„"]=>
+ string(5) "τ"
+ ["∴"]=>
+ string(8) "∴"
+ ["θ"]=>
+ string(7) "θ"
+ ["Ï‘"]=>
+ string(10) "ϑ"
+ [" "]=>
+ string(8) " "
+ ["þ"]=>
+ string(7) "þ"
+ ["˜"]=>
+ string(7) "˜"
+ ["×"]=>
+ string(7) "×"
+ ["â„¢"]=>
+ string(7) "™"
+ ["⇑"]=>
+ string(6) "⇑"
+ ["ú"]=>
+ string(8) "ú"
+ ["↑"]=>
+ string(6) "↑"
+ ["û"]=>
+ string(7) "û"
+ ["ù"]=>
+ string(8) "ù"
+ ["¨"]=>
+ string(5) "¨"
+ ["Ï’"]=>
+ string(7) "ϒ"
+ ["Ï…"]=>
+ string(9) "υ"
+ ["ü"]=>
+ string(6) "ü"
+ ["℘"]=>
+ string(8) "℘"
+ ["ξ"]=>
+ string(4) "ξ"
+ ["ý"]=>
+ string(8) "ý"
+ ["Â¥"]=>
+ string(5) "¥"
+ ["ÿ"]=>
+ string(6) "ÿ"
+ ["ζ"]=>
+ string(6) "ζ"
+ ["â€"]=>
+ string(5) "‍"
+ ["‌"]=>
+ string(6) "‌"
+}
+-- with table = HTML_SPECIALCHARS --
+array(4) {
+ ["&"]=>
+ string(5) "&"
+ [">"]=>
+ string(4) ">"
+ ["<"]=>
+ string(4) "<"
+ ["""]=>
+ string(6) """
+}
+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) " " - ["¡"]=> - string(7) "¡" - ["¢"]=> - string(6) "¢" - ["£"]=> - string(7) "£" - ["¤"]=> - string(8) "¤" - ["Â¥"]=> - string(5) "¥" - ["¦"]=> - string(8) "¦" - ["§"]=> - string(6) "§" - ["¨"]=> - string(5) "¨" - ["©"]=> - string(6) "©" - ["ª"]=> - string(6) "ª" - ["«"]=> - string(7) "«" - ["¬"]=> - string(5) "¬" - ["Â"]=> - string(5) "­" - ["®"]=> - string(5) "®" - ["¯"]=> - string(6) "¯" - ["°"]=> - string(5) "°" - ["±"]=> - string(8) "±" - ["²"]=> - string(6) "²" - ["³"]=> - string(6) "³" - ["´"]=> - string(7) "´" - ["µ"]=> - string(7) "µ" - ["¶"]=> - string(6) "¶" - ["·"]=> - string(8) "·" - ["¸"]=> - string(7) "¸" - ["¹"]=> - string(6) "¹" - ["º"]=> - string(6) "º" - ["»"]=> - string(7) "»" - ["¼"]=> - string(8) "¼" - ["½"]=> - string(8) "½" - ["¾"]=> - string(8) "¾" - ["¿"]=> - string(8) "¿" - ["À"]=> - string(8) "À" + ["Æ"]=> + string(7) "Æ" ["Ã"]=> string(8) "Á" ["Â"]=> string(7) "Â" + ["À"]=> + string(8) "À" + ["Α"]=> + string(7) "Α" + ["Ã…"]=> + string(7) "Å" ["Ã"]=> string(8) "Ã" ["Ä"]=> string(6) "Ä" - ["Ã…"]=> - string(7) "Å" - ["Æ"]=> - string(7) "Æ" + ["Î’"]=> + string(6) "Β" ["Ç"]=> string(8) "Ç" - ["È"]=> - string(8) "È" + ["Χ"]=> + string(5) "Χ" + ["‡"]=> + string(8) "‡" + ["Δ"]=> + string(7) "Δ" + ["Ã"]=> + string(5) "Ð" ["É"]=> string(8) "É" ["Ê"]=> string(7) "Ê" + ["È"]=> + string(8) "È" + ["Ε"]=> + string(9) "Ε" + ["Η"]=> + string(5) "Η" ["Ë"]=> string(6) "Ë" - ["ÃŒ"]=> - string(8) "Ì" + ["Γ"]=> + string(7) "Γ" ["Ã"]=> string(8) "Í" ["ÃŽ"]=> string(7) "Î" + ["ÃŒ"]=> + string(8) "Ì" + ["Ι"]=> + string(6) "Ι" ["Ã"]=> string(6) "Ï" - ["Ã"]=> - string(5) "Ð" + ["Κ"]=> + string(7) "Κ" + ["Λ"]=> + string(8) "Λ" + ["Îœ"]=> + string(4) "Μ" ["Ñ"]=> string(8) "Ñ" - ["Ã’"]=> - string(8) "Ò" + ["Î"]=> + string(4) "Ν" + ["Å’"]=> + string(7) "Œ" ["Ó"]=> string(8) "Ó" ["Ô"]=> string(7) "Ô" + ["Ã’"]=> + string(8) "Ò" + ["Ω"]=> + string(7) "Ω" + ["Ο"]=> + string(9) "Ο" + ["Ø"]=> + string(8) "Ø" ["Õ"]=> string(8) "Õ" ["Ö"]=> string(6) "Ö" - ["×"]=> - string(7) "×" - ["Ø"]=> - string(8) "Ø" - ["Ù"]=> - string(8) "Ù" + ["Φ"]=> + string(5) "Φ" + ["Î "]=> + string(4) "Π" + ["″"]=> + string(7) "″" + ["Ψ"]=> + string(5) "Ψ" + ["Ρ"]=> + string(5) "Ρ" + ["Å "]=> + string(8) "Š" + ["Σ"]=> + string(7) "Σ" + ["Þ"]=> + string(7) "Þ" + ["Τ"]=> + string(5) "Τ" + ["Θ"]=> + string(7) "Θ" ["Ú"]=> string(8) "Ú" ["Û"]=> string(7) "Û" + ["Ù"]=> + string(8) "Ù" + ["Î¥"]=> + string(9) "Υ" ["Ãœ"]=> string(6) "Ü" + ["Ξ"]=> + string(4) "Ξ" ["Ã"]=> string(8) "Ý" - ["Þ"]=> - string(7) "Þ" - ["ß"]=> - string(7) "ß" - ["à "]=> - string(8) "à" + ["Ÿ"]=> + string(6) "Ÿ" + ["Ζ"]=> + string(6) "Ζ" ["á"]=> string(8) "á" ["â"]=> string(7) "â" + ["´"]=> + string(7) "´" + ["æ"]=> + string(7) "æ" + ["à "]=> + string(8) "à" + ["ℵ"]=> + string(9) "ℵ" + ["α"]=> + string(7) "α" + ["&"]=> + string(5) "&" + ["∧"]=> + string(5) "∧" + ["∠"]=> + string(5) "∠" + ["Ã¥"]=> + string(7) "å" + ["≈"]=> + string(7) "≈" ["ã"]=> string(8) "ã" ["ä"]=> string(6) "ä" - ["Ã¥"]=> - string(7) "å" - ["æ"]=> - string(7) "æ" + ["„"]=> + string(7) "„" + ["β"]=> + string(6) "β" + ["¦"]=> + string(8) "¦" + ["•"]=> + string(6) "•" + ["∩"]=> + string(5) "∩" ["ç"]=> string(8) "ç" - ["è"]=> - string(8) "è" + ["¸"]=> + string(7) "¸" + ["¢"]=> + string(6) "¢" + ["χ"]=> + string(5) "χ" + ["ˆ"]=> + string(6) "ˆ" + ["♣"]=> + string(7) "♣" + ["≅"]=> + string(6) "≅" + ["©"]=> + string(6) "©" + ["↵"]=> + string(7) "↵" + ["∪"]=> + string(5) "∪" + ["¤"]=> + string(8) "¤" + ["⇓"]=> + string(6) "⇓" + ["†"]=> + string(8) "†" + ["↓"]=> + string(6) "↓" + ["°"]=> + string(5) "°" + ["δ"]=> + string(7) "δ" + ["♦"]=> + string(7) "♦" + ["÷"]=> + string(8) "÷" ["é"]=> string(8) "é" ["ê"]=> string(7) "ê" - ["ë"]=> - string(6) "ë" - ["ì"]=> - string(8) "ì" - ["Ã"]=> - string(8) "í" - ["î"]=> - string(7) "î" - ["ï"]=> - string(6) "ï" + ["è"]=> + string(8) "è" + ["∅"]=> + string(7) "∅" + [" "]=> + string(6) " " + [" "]=> + string(6) " " + ["ε"]=> + string(9) "ε" + ["≡"]=> + string(7) "≡" + ["η"]=> + string(5) "η" ["ð"]=> string(5) "ð" - ["ñ"]=> - string(8) "ñ" - ["ò"]=> - string(8) "ò" - ["ó"]=> - string(8) "ó" - ["ô"]=> - string(7) "ô" - ["õ"]=> - string(8) "õ" - ["ö"]=> - string(6) "ö" - ["÷"]=> - string(8) "÷" - ["ø"]=> - string(8) "ø" - ["ù"]=> - string(8) "ù" - ["ú"]=> - string(8) "ú" - ["û"]=> - string(7) "û" - ["ü"]=> - string(6) "ü" - ["ý"]=> - string(8) "ý" - ["þ"]=> - string(7) "þ" - ["ÿ"]=> - string(6) "ÿ" - ["Å’"]=> - string(7) "Œ" - ["Å“"]=> - string(7) "œ" - ["Å "]=> - string(8) "Š" - ["Å¡"]=> - string(8) "š" - ["Ÿ"]=> - string(6) "Ÿ" + ["ë"]=> + string(6) "ë" + ["€"]=> + string(6) "€" + ["∃"]=> + string(7) "∃" ["Æ’"]=> string(6) "ƒ" - ["ˆ"]=> - string(6) "ˆ" - ["Ëœ"]=> - string(7) "˜" - ["Α"]=> - string(7) "Α" - ["Î’"]=> - string(6) "Β" - ["Γ"]=> - string(7) "Γ" - ["Δ"]=> - string(7) "Δ" - ["Ε"]=> - string(9) "Ε" - ["Ζ"]=> - string(6) "Ζ" - ["Η"]=> - string(5) "Η" - ["Θ"]=> - string(7) "Θ" - ["Ι"]=> - string(6) "Ι" - ["Κ"]=> - string(7) "Κ" - ["Λ"]=> - string(8) "Λ" - ["Îœ"]=> - string(4) "Μ" - ["Î"]=> - string(4) "Ν" - ["Ξ"]=> - string(4) "Ξ" - ["Ο"]=> - string(9) "Ο" - ["Î "]=> - string(4) "Π" - ["Ρ"]=> - string(5) "Ρ" - ["Σ"]=> - string(7) "Σ" - ["Τ"]=> - string(5) "Τ" - ["Î¥"]=> - string(9) "Υ" - ["Φ"]=> - string(5) "Φ" - ["Χ"]=> - string(5) "Χ" - ["Ψ"]=> - string(5) "Ψ" - ["Ω"]=> - string(7) "Ω" - ["α"]=> - string(7) "α" - ["β"]=> - string(6) "β" + ["∀"]=> + string(8) "∀" + ["½"]=> + string(8) "½" + ["¼"]=> + string(8) "¼" + ["¾"]=> + string(8) "¾" + ["â„"]=> + string(7) "⁄" ["γ"]=> string(7) "γ" - ["δ"]=> - string(7) "δ" - ["ε"]=> - string(9) "ε" - ["ζ"]=> - string(6) "ζ" - ["η"]=> - string(5) "η" - ["θ"]=> - string(7) "θ" + ["≥"]=> + string(4) "≥" + [">"]=> + string(4) ">" + ["⇔"]=> + string(6) "⇔" + ["↔"]=> + string(6) "↔" + ["♥"]=> + string(8) "♥" + ["…"]=> + string(8) "…" + ["Ã"]=> + string(8) "í" + ["î"]=> + string(7) "î" + ["¡"]=> + string(7) "¡" + ["ì"]=> + string(8) "ì" + ["â„‘"]=> + string(7) "ℑ" + ["∞"]=> + string(7) "∞" + ["∫"]=> + string(5) "∫" ["ι"]=> string(6) "ι" + ["¿"]=> + string(8) "¿" + ["∈"]=> + string(6) "∈" + ["ï"]=> + string(6) "ï" ["κ"]=> string(7) "κ" + ["â‡"]=> + string(6) "⇐" ["λ"]=> string(8) "λ" - ["μ"]=> - string(4) "μ" - ["ν"]=> - string(4) "ν" - ["ξ"]=> - string(4) "ξ" - ["ο"]=> - string(9) "ο" - ["Ï€"]=> - string(4) "π" - ["Ï"]=> - string(5) "ρ" - ["Ï‚"]=> - string(8) "ς" - ["σ"]=> - string(7) "σ" - ["Ï„"]=> - string(5) "τ" - ["Ï…"]=> - string(9) "υ" - ["φ"]=> - string(5) "φ" - ["χ"]=> - string(5) "χ" - ["ψ"]=> - string(5) "ψ" - ["ω"]=> - string(7) "ω" - ["Ï‘"]=> - string(10) "ϑ" - ["Ï’"]=> - string(7) "ϒ" - ["Ï–"]=> - string(5) "ϖ" - [" "]=> - string(6) " " - [" "]=> - string(6) " " - [" "]=> - string(8) " " - ["‌"]=> - string(6) "‌" - ["â€"]=> - string(5) "‍" - ["‎"]=> - string(5) "‎" - ["â€"]=> - string(5) "‏" - ["–"]=> - string(7) "–" - ["—"]=> - string(7) "—" - ["‘"]=> - string(7) "‘" - ["’"]=> - string(7) "’" - ["‚"]=> - string(7) "‚" + ["〈"]=> + string(6) "⟨" + ["«"]=> + string(7) "«" + ["â†"]=> + string(6) "←" + ["⌈"]=> + string(7) "⌈" ["“"]=> string(7) "“" - ["â€"]=> - string(7) "”" - ["„"]=> - string(7) "„" - ["†"]=> - string(8) "†" - ["‡"]=> - string(8) "‡" - ["•"]=> - string(6) "•" - ["…"]=> - string(8) "…" - ["‰"]=> - string(8) "‰" - ["′"]=> - string(7) "′" - ["″"]=> - string(7) "″" + ["≤"]=> + string(4) "≤" + ["⌊"]=> + string(8) "⌊" + ["∗"]=> + string(8) "∗" + ["â—Š"]=> + string(5) "◊" + ["‎"]=> + string(5) "‎" ["‹"]=> string(8) "‹" - ["›"]=> - string(8) "›" - ["‾"]=> - string(7) "‾" - ["â„"]=> - string(7) "⁄" - ["€"]=> - string(6) "€" - ["â„‘"]=> - string(7) "ℑ" - ["℘"]=> - string(8) "℘" - ["â„œ"]=> - string(6) "ℜ" - ["â„¢"]=> - string(7) "™" - ["ℵ"]=> - string(9) "ℵ" - ["â†"]=> - string(6) "←" - ["↑"]=> - string(6) "↑" - ["→"]=> - string(6) "→" - ["↓"]=> - string(6) "↓" - ["↔"]=> - string(6) "↔" - ["↵"]=> - string(7) "↵" - ["â‡"]=> - string(6) "⇐" - ["⇑"]=> - string(6) "⇑" - ["⇒"]=> - string(6) "⇒" - ["⇓"]=> - string(6) "⇓" - ["⇔"]=> - string(6) "⇔" - ["∀"]=> - string(8) "∀" - ["∂"]=> - string(6) "∂" - ["∃"]=> - string(7) "∃" - ["∅"]=> - string(7) "∅" - ["∇"]=> - string(7) "∇" - ["∈"]=> - string(6) "∈" - ["∉"]=> - string(7) "∉" - ["∋"]=> - string(4) "∋" - ["âˆ"]=> - string(6) "∏" - ["∑"]=> - string(5) "∑" + ["‘"]=> + string(7) "‘" + ["<"]=> + string(4) "<" + ["¯"]=> + string(6) "¯" + ["—"]=> + string(7) "—" + ["µ"]=> + string(7) "µ" + ["·"]=> + string(8) "·" ["−"]=> string(7) "−" - ["∗"]=> - string(8) "∗" - ["√"]=> - string(7) "√" - ["âˆ"]=> - string(6) "∝" - ["∞"]=> - string(7) "∞" - ["∠"]=> - string(5) "∠" - ["∧"]=> - string(5) "∧" - ["∨"]=> - string(4) "∨" - ["∩"]=> - string(5) "∩" - ["∪"]=> - string(5) "∪" - ["∫"]=> - string(5) "∫" - ["∴"]=> - string(8) "∴" - ["∼"]=> - string(5) "∼" - ["≅"]=> - string(6) "≅" - ["≈"]=> - string(7) "≈" + ["μ"]=> + string(4) "μ" + ["∇"]=> + string(7) "∇" + [" "]=> + string(6) " " + ["–"]=> + string(7) "–" ["≠"]=> string(4) "≠" - ["≡"]=> - string(7) "≡" - ["≤"]=> - string(4) "≤" - ["≥"]=> - string(4) "≥" - ["⊂"]=> - string(5) "⊂" - ["⊃"]=> - string(5) "⊃" + ["∋"]=> + string(4) "∋" + ["¬"]=> + string(5) "¬" + ["∉"]=> + string(7) "∉" ["⊄"]=> string(6) "⊄" - ["⊆"]=> - string(6) "⊆" - ["⊇"]=> - string(6) "⊇" + ["ñ"]=> + string(8) "ñ" + ["ν"]=> + string(4) "ν" + ["ó"]=> + string(8) "ó" + ["ô"]=> + string(7) "ô" + ["Å“"]=> + string(7) "œ" + ["ò"]=> + string(8) "ò" + ["‾"]=> + string(7) "‾" + ["ω"]=> + string(7) "ω" + ["ο"]=> + string(9) "ο" ["⊕"]=> string(7) "⊕" + ["∨"]=> + string(4) "∨" + ["ª"]=> + string(6) "ª" + ["º"]=> + string(6) "º" + ["ø"]=> + string(8) "ø" + ["õ"]=> + string(8) "õ" ["⊗"]=> string(8) "⊗" + ["ö"]=> + string(6) "ö" + ["¶"]=> + string(6) "¶" + ["∂"]=> + string(6) "∂" + ["‰"]=> + string(8) "‰" ["⊥"]=> string(6) "⊥" - ["â‹…"]=> - string(6) "⋅" - ["⌈"]=> - string(7) "⌈" + ["φ"]=> + string(5) "φ" + ["Ï€"]=> + string(4) "π" + ["Ï–"]=> + string(5) "ϖ" + ["±"]=> + string(8) "±" + ["£"]=> + string(7) "£" + ["′"]=> + string(7) "′" + ["âˆ"]=> + string(6) "∏" + ["âˆ"]=> + string(6) "∝" + ["ψ"]=> + string(5) "ψ" + ["""]=> + string(6) """ + ["⇒"]=> + string(6) "⇒" + ["√"]=> + string(7) "√" + ["〉"]=> + string(6) "⟩" + ["»"]=> + string(7) "»" + ["→"]=> + string(6) "→" ["⌉"]=> string(7) "⌉" - ["⌊"]=> - string(8) "⌊" + ["â€"]=> + string(7) "”" + ["â„œ"]=> + string(6) "ℜ" + ["®"]=> + string(5) "®" ["⌋"]=> string(8) "⌋" - ["〈"]=> - string(6) "⟨" - ["〉"]=> - string(6) "⟩" - ["â—Š"]=> - string(5) "◊" - ["â™ "]=> - string(8) "♠" - ["♣"]=> - string(7) "♣" - ["♥"]=> - string(8) "♥" - ["♦"]=> - string(7) "♦" - ["&"]=> - string(5) "&" - ["""]=> - string(6) """ - ["<"]=> - string(4) "<" - [">"]=> - string(4) ">" -} --- with table = HTML_ENTITIES & quote_style = ENT_QUOTES -- -array(253) { - [" "]=> - string(6) " " - ["¡"]=> - string(7) "¡" - ["¢"]=> - string(6) "¢" - ["£"]=> - string(7) "£" - ["¤"]=> - string(8) "¤" - ["Â¥"]=> - string(5) "¥" - ["¦"]=> - string(8) "¦" + ["Ï"]=> + string(5) "ρ" + ["â€"]=> + string(5) "‏" + ["›"]=> + string(8) "›" + ["’"]=> + string(7) "’" + ["‚"]=> + string(7) "‚" + ["Å¡"]=> + string(8) "š" + ["â‹…"]=> + string(6) "⋅" ["§"]=> string(6) "§" - ["¨"]=> - string(5) "¨" - ["©"]=> - string(6) "©" - ["ª"]=> - string(6) "ª" - ["«"]=> - string(7) "«" - ["¬"]=> - string(5) "¬" ["Â"]=> string(5) "­" - ["®"]=> - string(5) "®" - ["¯"]=> - string(6) "¯" - ["°"]=> - string(5) "°" - ["±"]=> - string(8) "±" + ["σ"]=> + string(7) "σ" + ["Ï‚"]=> + string(8) "ς" + ["∼"]=> + string(5) "∼" + ["â™ "]=> + string(8) "♠" + ["⊂"]=> + string(5) "⊂" + ["⊆"]=> + string(6) "⊆" + ["∑"]=> + string(5) "∑" + ["¹"]=> + string(6) "¹" ["²"]=> string(6) "²" ["³"]=> string(6) "³" - ["´"]=> - string(7) "´" - ["µ"]=> - string(7) "µ" - ["¶"]=> - string(6) "¶" - ["·"]=> - string(8) "·" - ["¸"]=> - string(7) "¸" - ["¹"]=> - string(6) "¹" - ["º"]=> - string(6) "º" - ["»"]=> - string(7) "»" - ["¼"]=> - string(8) "¼" - ["½"]=> - string(8) "½" - ["¾"]=> - string(8) "¾" - ["¿"]=> - string(8) "¿" - ["À"]=> - string(8) "À" + ["⊃"]=> + string(5) "⊃" + ["⊇"]=> + string(6) "⊇" + ["ß"]=> + string(7) "ß" + ["Ï„"]=> + string(5) "τ" + ["∴"]=> + string(8) "∴" + ["θ"]=> + string(7) "θ" + ["Ï‘"]=> + string(10) "ϑ" + [" "]=> + string(8) " " + ["þ"]=> + string(7) "þ" + ["Ëœ"]=> + string(7) "˜" + ["×"]=> + string(7) "×" + ["â„¢"]=> + string(7) "™" + ["⇑"]=> + string(6) "⇑" + ["ú"]=> + string(8) "ú" + ["↑"]=> + string(6) "↑" + ["û"]=> + string(7) "û" + ["ù"]=> + string(8) "ù" + ["¨"]=> + string(5) "¨" + ["Ï’"]=> + string(7) "ϒ" + ["Ï…"]=> + string(9) "υ" + ["ü"]=> + string(6) "ü" + ["℘"]=> + string(8) "℘" + ["ξ"]=> + string(4) "ξ" + ["ý"]=> + string(8) "ý" + ["Â¥"]=> + string(5) "¥" + ["ÿ"]=> + string(6) "ÿ" + ["ζ"]=> + string(6) "ζ" + ["â€"]=> + string(5) "‍" + ["‌"]=> + string(6) "‌" +} +-- with table = HTML_ENTITIES & quote_style = ENT_QUOTES -- +array(253) { + ["'"]=> + string(6) "'" + ["Æ"]=> + string(7) "Æ" ["Ã"]=> string(8) "Á" ["Â"]=> string(7) "Â" + ["À"]=> + string(8) "À" + ["Α"]=> + string(7) "Α" + ["Ã…"]=> + string(7) "Å" ["Ã"]=> string(8) "Ã" ["Ä"]=> string(6) "Ä" - ["Ã…"]=> - string(7) "Å" - ["Æ"]=> - string(7) "Æ" + ["Î’"]=> + string(6) "Β" ["Ç"]=> string(8) "Ç" - ["È"]=> - string(8) "È" + ["Χ"]=> + string(5) "Χ" + ["‡"]=> + string(8) "‡" + ["Δ"]=> + string(7) "Δ" + ["Ã"]=> + string(5) "Ð" ["É"]=> string(8) "É" ["Ê"]=> string(7) "Ê" + ["È"]=> + string(8) "È" + ["Ε"]=> + string(9) "Ε" + ["Η"]=> + string(5) "Η" ["Ë"]=> string(6) "Ë" - ["ÃŒ"]=> - string(8) "Ì" + ["Γ"]=> + string(7) "Γ" ["Ã"]=> string(8) "Í" ["ÃŽ"]=> string(7) "Î" + ["ÃŒ"]=> + string(8) "Ì" + ["Ι"]=> + string(6) "Ι" ["Ã"]=> string(6) "Ï" - ["Ã"]=> - string(5) "Ð" + ["Κ"]=> + string(7) "Κ" + ["Λ"]=> + string(8) "Λ" + ["Îœ"]=> + string(4) "Μ" ["Ñ"]=> string(8) "Ñ" - ["Ã’"]=> - string(8) "Ò" + ["Î"]=> + string(4) "Ν" + ["Å’"]=> + string(7) "Œ" ["Ó"]=> string(8) "Ó" ["Ô"]=> string(7) "Ô" + ["Ã’"]=> + string(8) "Ò" + ["Ω"]=> + string(7) "Ω" + ["Ο"]=> + string(9) "Ο" + ["Ø"]=> + string(8) "Ø" ["Õ"]=> string(8) "Õ" ["Ö"]=> string(6) "Ö" - ["×"]=> - string(7) "×" - ["Ø"]=> - string(8) "Ø" - ["Ù"]=> - string(8) "Ù" + ["Φ"]=> + string(5) "Φ" + ["Î "]=> + string(4) "Π" + ["″"]=> + string(7) "″" + ["Ψ"]=> + string(5) "Ψ" + ["Ρ"]=> + string(5) "Ρ" + ["Å "]=> + string(8) "Š" + ["Σ"]=> + string(7) "Σ" + ["Þ"]=> + string(7) "Þ" + ["Τ"]=> + string(5) "Τ" + ["Θ"]=> + string(7) "Θ" ["Ú"]=> string(8) "Ú" ["Û"]=> string(7) "Û" + ["Ù"]=> + string(8) "Ù" + ["Î¥"]=> + string(9) "Υ" ["Ãœ"]=> string(6) "Ü" + ["Ξ"]=> + string(4) "Ξ" ["Ã"]=> string(8) "Ý" - ["Þ"]=> - string(7) "Þ" - ["ß"]=> - string(7) "ß" - ["à "]=> - string(8) "à" + ["Ÿ"]=> + string(6) "Ÿ" + ["Ζ"]=> + string(6) "Ζ" ["á"]=> string(8) "á" ["â"]=> string(7) "â" + ["´"]=> + string(7) "´" + ["æ"]=> + string(7) "æ" + ["à "]=> + string(8) "à" + ["ℵ"]=> + string(9) "ℵ" + ["α"]=> + string(7) "α" + ["&"]=> + string(5) "&" + ["∧"]=> + string(5) "∧" + ["∠"]=> + string(5) "∠" + ["Ã¥"]=> + string(7) "å" + ["≈"]=> + string(7) "≈" ["ã"]=> string(8) "ã" ["ä"]=> string(6) "ä" - ["Ã¥"]=> - string(7) "å" - ["æ"]=> - string(7) "æ" + ["„"]=> + string(7) "„" + ["β"]=> + string(6) "β" + ["¦"]=> + string(8) "¦" + ["•"]=> + string(6) "•" + ["∩"]=> + string(5) "∩" ["ç"]=> string(8) "ç" - ["è"]=> - string(8) "è" + ["¸"]=> + string(7) "¸" + ["¢"]=> + string(6) "¢" + ["χ"]=> + string(5) "χ" + ["ˆ"]=> + string(6) "ˆ" + ["♣"]=> + string(7) "♣" + ["≅"]=> + string(6) "≅" + ["©"]=> + string(6) "©" + ["↵"]=> + string(7) "↵" + ["∪"]=> + string(5) "∪" + ["¤"]=> + string(8) "¤" + ["⇓"]=> + string(6) "⇓" + ["†"]=> + string(8) "†" + ["↓"]=> + string(6) "↓" + ["°"]=> + string(5) "°" + ["δ"]=> + string(7) "δ" + ["♦"]=> + string(7) "♦" + ["÷"]=> + string(8) "÷" ["é"]=> string(8) "é" ["ê"]=> string(7) "ê" - ["ë"]=> - string(6) "ë" - ["ì"]=> - string(8) "ì" - ["Ã"]=> - string(8) "í" - ["î"]=> - string(7) "î" - ["ï"]=> - string(6) "ï" + ["è"]=> + string(8) "è" + ["∅"]=> + string(7) "∅" + [" "]=> + string(6) " " + [" "]=> + string(6) " " + ["ε"]=> + string(9) "ε" + ["≡"]=> + string(7) "≡" + ["η"]=> + string(5) "η" ["ð"]=> string(5) "ð" - ["ñ"]=> - string(8) "ñ" - ["ò"]=> - string(8) "ò" - ["ó"]=> - string(8) "ó" - ["ô"]=> - string(7) "ô" - ["õ"]=> - string(8) "õ" - ["ö"]=> - string(6) "ö" - ["÷"]=> - string(8) "÷" - ["ø"]=> - string(8) "ø" - ["ù"]=> - string(8) "ù" - ["ú"]=> - string(8) "ú" - ["û"]=> - string(7) "û" - ["ü"]=> - string(6) "ü" - ["ý"]=> - string(8) "ý" - ["þ"]=> - string(7) "þ" - ["ÿ"]=> - string(6) "ÿ" - ["Å’"]=> - string(7) "Œ" - ["Å“"]=> - string(7) "œ" - ["Å "]=> - string(8) "Š" - ["Å¡"]=> - string(8) "š" - ["Ÿ"]=> - string(6) "Ÿ" + ["ë"]=> + string(6) "ë" + ["€"]=> + string(6) "€" + ["∃"]=> + string(7) "∃" ["Æ’"]=> string(6) "ƒ" - ["ˆ"]=> - string(6) "ˆ" - ["Ëœ"]=> - string(7) "˜" - ["Α"]=> - string(7) "Α" - ["Î’"]=> - string(6) "Β" - ["Γ"]=> - string(7) "Γ" - ["Δ"]=> - string(7) "Δ" - ["Ε"]=> - string(9) "Ε" - ["Ζ"]=> - string(6) "Ζ" - ["Η"]=> - string(5) "Η" - ["Θ"]=> - string(7) "Θ" - ["Ι"]=> - string(6) "Ι" - ["Κ"]=> - string(7) "Κ" - ["Λ"]=> - string(8) "Λ" - ["Îœ"]=> - string(4) "Μ" - ["Î"]=> - string(4) "Ν" - ["Ξ"]=> - string(4) "Ξ" - ["Ο"]=> - string(9) "Ο" - ["Î "]=> - string(4) "Π" - ["Ρ"]=> - string(5) "Ρ" - ["Σ"]=> - string(7) "Σ" - ["Τ"]=> - string(5) "Τ" - ["Î¥"]=> - string(9) "Υ" - ["Φ"]=> - string(5) "Φ" - ["Χ"]=> - string(5) "Χ" - ["Ψ"]=> - string(5) "Ψ" - ["Ω"]=> - string(7) "Ω" - ["α"]=> - string(7) "α" - ["β"]=> - string(6) "β" + ["∀"]=> + string(8) "∀" + ["½"]=> + string(8) "½" + ["¼"]=> + string(8) "¼" + ["¾"]=> + string(8) "¾" + ["â„"]=> + string(7) "⁄" ["γ"]=> string(7) "γ" - ["δ"]=> - string(7) "δ" - ["ε"]=> - string(9) "ε" - ["ζ"]=> - string(6) "ζ" - ["η"]=> - string(5) "η" - ["θ"]=> - string(7) "θ" + ["≥"]=> + string(4) "≥" + [">"]=> + string(4) ">" + ["⇔"]=> + string(6) "⇔" + ["↔"]=> + string(6) "↔" + ["♥"]=> + string(8) "♥" + ["…"]=> + string(8) "…" + ["Ã"]=> + string(8) "í" + ["î"]=> + string(7) "î" + ["¡"]=> + string(7) "¡" + ["ì"]=> + string(8) "ì" + ["â„‘"]=> + string(7) "ℑ" + ["∞"]=> + string(7) "∞" + ["∫"]=> + string(5) "∫" ["ι"]=> string(6) "ι" + ["¿"]=> + string(8) "¿" + ["∈"]=> + string(6) "∈" + ["ï"]=> + string(6) "ï" ["κ"]=> string(7) "κ" + ["â‡"]=> + string(6) "⇐" ["λ"]=> string(8) "λ" - ["μ"]=> - string(4) "μ" - ["ν"]=> - string(4) "ν" - ["ξ"]=> - string(4) "ξ" - ["ο"]=> - string(9) "ο" - ["Ï€"]=> - string(4) "π" - ["Ï"]=> - string(5) "ρ" - ["Ï‚"]=> - string(8) "ς" - ["σ"]=> - string(7) "σ" - ["Ï„"]=> - string(5) "τ" - ["Ï…"]=> - string(9) "υ" - ["φ"]=> - string(5) "φ" - ["χ"]=> - string(5) "χ" - ["ψ"]=> - string(5) "ψ" - ["ω"]=> - string(7) "ω" - ["Ï‘"]=> - string(10) "ϑ" - ["Ï’"]=> - string(7) "ϒ" - ["Ï–"]=> - string(5) "ϖ" - [" "]=> - string(6) " " - [" "]=> - string(6) " " - [" "]=> - string(8) " " - ["‌"]=> - string(6) "‌" - ["â€"]=> - string(5) "‍" - ["‎"]=> - string(5) "‎" - ["â€"]=> - string(5) "‏" - ["–"]=> - string(7) "–" - ["—"]=> - string(7) "—" - ["‘"]=> - string(7) "‘" - ["’"]=> - string(7) "’" - ["‚"]=> - string(7) "‚" + ["〈"]=> + string(6) "⟨" + ["«"]=> + string(7) "«" + ["â†"]=> + string(6) "←" + ["⌈"]=> + string(7) "⌈" ["“"]=> string(7) "“" - ["â€"]=> - string(7) "”" - ["„"]=> - string(7) "„" - ["†"]=> - string(8) "†" - ["‡"]=> - string(8) "‡" - ["•"]=> - string(6) "•" - ["…"]=> - string(8) "…" - ["‰"]=> - string(8) "‰" - ["′"]=> - string(7) "′" - ["″"]=> - string(7) "″" + ["≤"]=> + string(4) "≤" + ["⌊"]=> + string(8) "⌊" + ["∗"]=> + string(8) "∗" + ["â—Š"]=> + string(5) "◊" + ["‎"]=> + string(5) "‎" ["‹"]=> string(8) "‹" - ["›"]=> - string(8) "›" - ["‾"]=> - string(7) "‾" - ["â„"]=> - string(7) "⁄" - ["€"]=> - string(6) "€" - ["â„‘"]=> - string(7) "ℑ" - ["℘"]=> - string(8) "℘" - ["â„œ"]=> - string(6) "ℜ" - ["â„¢"]=> - string(7) "™" - ["ℵ"]=> - string(9) "ℵ" - ["â†"]=> - string(6) "←" - ["↑"]=> - string(6) "↑" - ["→"]=> - string(6) "→" - ["↓"]=> - string(6) "↓" - ["↔"]=> - string(6) "↔" - ["↵"]=> - string(7) "↵" - ["â‡"]=> - string(6) "⇐" - ["⇑"]=> - string(6) "⇑" - ["⇒"]=> - string(6) "⇒" - ["⇓"]=> - string(6) "⇓" - ["⇔"]=> - string(6) "⇔" - ["∀"]=> - string(8) "∀" - ["∂"]=> - string(6) "∂" - ["∃"]=> - string(7) "∃" - ["∅"]=> - string(7) "∅" - ["∇"]=> - string(7) "∇" - ["∈"]=> - string(6) "∈" - ["∉"]=> - string(7) "∉" - ["∋"]=> - string(4) "∋" - ["âˆ"]=> - string(6) "∏" - ["∑"]=> - string(5) "∑" + ["‘"]=> + string(7) "‘" + ["<"]=> + string(4) "<" + ["¯"]=> + string(6) "¯" + ["—"]=> + string(7) "—" + ["µ"]=> + string(7) "µ" + ["·"]=> + string(8) "·" ["−"]=> string(7) "−" - ["∗"]=> - string(8) "∗" - ["√"]=> - string(7) "√" - ["âˆ"]=> - string(6) "∝" - ["∞"]=> - string(7) "∞" - ["∠"]=> - string(5) "∠" - ["∧"]=> - string(5) "∧" - ["∨"]=> - string(4) "∨" - ["∩"]=> - string(5) "∩" - ["∪"]=> - string(5) "∪" - ["∫"]=> - string(5) "∫" - ["∴"]=> - string(8) "∴" - ["∼"]=> - string(5) "∼" - ["≅"]=> - string(6) "≅" - ["≈"]=> - string(7) "≈" + ["μ"]=> + string(4) "μ" + ["∇"]=> + string(7) "∇" + [" "]=> + string(6) " " + ["–"]=> + string(7) "–" ["≠"]=> string(4) "≠" - ["≡"]=> - string(7) "≡" - ["≤"]=> - string(4) "≤" - ["≥"]=> - string(4) "≥" - ["⊂"]=> - string(5) "⊂" - ["⊃"]=> - string(5) "⊃" + ["∋"]=> + string(4) "∋" + ["¬"]=> + string(5) "¬" + ["∉"]=> + string(7) "∉" ["⊄"]=> string(6) "⊄" - ["⊆"]=> - string(6) "⊆" - ["⊇"]=> - string(6) "⊇" + ["ñ"]=> + string(8) "ñ" + ["ν"]=> + string(4) "ν" + ["ó"]=> + string(8) "ó" + ["ô"]=> + string(7) "ô" + ["Å“"]=> + string(7) "œ" + ["ò"]=> + string(8) "ò" + ["‾"]=> + string(7) "‾" + ["ω"]=> + string(7) "ω" + ["ο"]=> + string(9) "ο" ["⊕"]=> string(7) "⊕" + ["∨"]=> + string(4) "∨" + ["ª"]=> + string(6) "ª" + ["º"]=> + string(6) "º" + ["ø"]=> + string(8) "ø" + ["õ"]=> + string(8) "õ" ["⊗"]=> string(8) "⊗" + ["ö"]=> + string(6) "ö" + ["¶"]=> + string(6) "¶" + ["∂"]=> + string(6) "∂" + ["‰"]=> + string(8) "‰" ["⊥"]=> string(6) "⊥" - ["â‹…"]=> - string(6) "⋅" - ["⌈"]=> - string(7) "⌈" + ["φ"]=> + string(5) "φ" + ["Ï€"]=> + string(4) "π" + ["Ï–"]=> + string(5) "ϖ" + ["±"]=> + string(8) "±" + ["£"]=> + string(7) "£" + ["′"]=> + string(7) "′" + ["âˆ"]=> + string(6) "∏" + ["âˆ"]=> + string(6) "∝" + ["ψ"]=> + string(5) "ψ" + ["""]=> + string(6) """ + ["⇒"]=> + string(6) "⇒" + ["√"]=> + string(7) "√" + ["〉"]=> + string(6) "⟩" + ["»"]=> + string(7) "»" + ["→"]=> + string(6) "→" ["⌉"]=> string(7) "⌉" - ["⌊"]=> - string(8) "⌊" + ["â€"]=> + string(7) "”" + ["â„œ"]=> + string(6) "ℜ" + ["®"]=> + string(5) "®" ["⌋"]=> string(8) "⌋" - ["〈"]=> - string(6) "⟨" - ["〉"]=> - string(6) "⟩" - ["â—Š"]=> - string(5) "◊" - ["â™ "]=> - string(8) "♠" - ["♣"]=> - string(7) "♣" - ["♥"]=> - string(8) "♥" - ["♦"]=> - string(7) "♦" - ["&"]=> - string(5) "&" - ["""]=> - string(6) """ - ["'"]=> - string(6) "'" - ["<"]=> - string(4) "<" - [">"]=> - string(4) ">" -} --- with table = HTML_ENTITIES & quote_style = ENT_NOQUOTES -- -array(251) { - [" "]=> - string(6) " " - ["¡"]=> - string(7) "¡" - ["¢"]=> - string(6) "¢" - ["£"]=> - string(7) "£" - ["¤"]=> - string(8) "¤" - ["Â¥"]=> - string(5) "¥" - ["¦"]=> - string(8) "¦" + ["Ï"]=> + string(5) "ρ" + ["â€"]=> + string(5) "‏" + ["›"]=> + string(8) "›" + ["’"]=> + string(7) "’" + ["‚"]=> + string(7) "‚" + ["Å¡"]=> + string(8) "š" + ["â‹…"]=> + string(6) "⋅" ["§"]=> string(6) "§" - ["¨"]=> - string(5) "¨" - ["©"]=> - string(6) "©" - ["ª"]=> - string(6) "ª" - ["«"]=> - string(7) "«" - ["¬"]=> - string(5) "¬" ["Â"]=> string(5) "­" - ["®"]=> - string(5) "®" - ["¯"]=> - string(6) "¯" - ["°"]=> - string(5) "°" - ["±"]=> - string(8) "±" + ["σ"]=> + string(7) "σ" + ["Ï‚"]=> + string(8) "ς" + ["∼"]=> + string(5) "∼" + ["â™ "]=> + string(8) "♠" + ["⊂"]=> + string(5) "⊂" + ["⊆"]=> + string(6) "⊆" + ["∑"]=> + string(5) "∑" + ["¹"]=> + string(6) "¹" ["²"]=> string(6) "²" ["³"]=> string(6) "³" - ["´"]=> - string(7) "´" - ["µ"]=> - string(7) "µ" - ["¶"]=> - string(6) "¶" - ["·"]=> - string(8) "·" - ["¸"]=> - string(7) "¸" - ["¹"]=> - string(6) "¹" - ["º"]=> - string(6) "º" - ["»"]=> - string(7) "»" - ["¼"]=> - string(8) "¼" - ["½"]=> - string(8) "½" - ["¾"]=> - string(8) "¾" - ["¿"]=> - string(8) "¿" - ["À"]=> - string(8) "À" + ["⊃"]=> + string(5) "⊃" + ["⊇"]=> + string(6) "⊇" + ["ß"]=> + string(7) "ß" + ["Ï„"]=> + string(5) "τ" + ["∴"]=> + string(8) "∴" + ["θ"]=> + string(7) "θ" + ["Ï‘"]=> + string(10) "ϑ" + [" "]=> + string(8) " " + ["þ"]=> + string(7) "þ" + ["Ëœ"]=> + string(7) "˜" + ["×"]=> + string(7) "×" + ["â„¢"]=> + string(7) "™" + ["⇑"]=> + string(6) "⇑" + ["ú"]=> + string(8) "ú" + ["↑"]=> + string(6) "↑" + ["û"]=> + string(7) "û" + ["ù"]=> + string(8) "ù" + ["¨"]=> + string(5) "¨" + ["Ï’"]=> + string(7) "ϒ" + ["Ï…"]=> + string(9) "υ" + ["ü"]=> + string(6) "ü" + ["℘"]=> + string(8) "℘" + ["ξ"]=> + string(4) "ξ" + ["ý"]=> + string(8) "ý" + ["Â¥"]=> + string(5) "¥" + ["ÿ"]=> + string(6) "ÿ" + ["ζ"]=> + string(6) "ζ" + ["â€"]=> + string(5) "‍" + ["‌"]=> + string(6) "‌" +} +-- with table = HTML_ENTITIES & quote_style = ENT_NOQUOTES -- +array(251) { + ["Æ"]=> + string(7) "Æ" ["Ã"]=> string(8) "Á" ["Â"]=> string(7) "Â" + ["À"]=> + string(8) "À" + ["Α"]=> + string(7) "Α" + ["Ã…"]=> + string(7) "Å" ["Ã"]=> string(8) "Ã" ["Ä"]=> string(6) "Ä" - ["Ã…"]=> - string(7) "Å" - ["Æ"]=> - string(7) "Æ" + ["Î’"]=> + string(6) "Β" ["Ç"]=> string(8) "Ç" - ["È"]=> - string(8) "È" + ["Χ"]=> + string(5) "Χ" + ["‡"]=> + string(8) "‡" + ["Δ"]=> + string(7) "Δ" + ["Ã"]=> + string(5) "Ð" ["É"]=> string(8) "É" ["Ê"]=> string(7) "Ê" + ["È"]=> + string(8) "È" + ["Ε"]=> + string(9) "Ε" + ["Η"]=> + string(5) "Η" ["Ë"]=> string(6) "Ë" - ["ÃŒ"]=> - string(8) "Ì" + ["Γ"]=> + string(7) "Γ" ["Ã"]=> string(8) "Í" ["ÃŽ"]=> string(7) "Î" + ["ÃŒ"]=> + string(8) "Ì" + ["Ι"]=> + string(6) "Ι" ["Ã"]=> string(6) "Ï" - ["Ã"]=> - string(5) "Ð" + ["Κ"]=> + string(7) "Κ" + ["Λ"]=> + string(8) "Λ" + ["Îœ"]=> + string(4) "Μ" ["Ñ"]=> string(8) "Ñ" - ["Ã’"]=> - string(8) "Ò" + ["Î"]=> + string(4) "Ν" + ["Å’"]=> + string(7) "Œ" ["Ó"]=> string(8) "Ó" ["Ô"]=> string(7) "Ô" + ["Ã’"]=> + string(8) "Ò" + ["Ω"]=> + string(7) "Ω" + ["Ο"]=> + string(9) "Ο" + ["Ø"]=> + string(8) "Ø" ["Õ"]=> string(8) "Õ" ["Ö"]=> string(6) "Ö" - ["×"]=> - string(7) "×" - ["Ø"]=> - string(8) "Ø" - ["Ù"]=> - string(8) "Ù" + ["Φ"]=> + string(5) "Φ" + ["Î "]=> + string(4) "Π" + ["″"]=> + string(7) "″" + ["Ψ"]=> + string(5) "Ψ" + ["Ρ"]=> + string(5) "Ρ" + ["Å "]=> + string(8) "Š" + ["Σ"]=> + string(7) "Σ" + ["Þ"]=> + string(7) "Þ" + ["Τ"]=> + string(5) "Τ" + ["Θ"]=> + string(7) "Θ" ["Ú"]=> string(8) "Ú" ["Û"]=> string(7) "Û" + ["Ù"]=> + string(8) "Ù" + ["Î¥"]=> + string(9) "Υ" ["Ãœ"]=> string(6) "Ü" + ["Ξ"]=> + string(4) "Ξ" ["Ã"]=> string(8) "Ý" - ["Þ"]=> - string(7) "Þ" - ["ß"]=> - string(7) "ß" - ["à "]=> - string(8) "à" + ["Ÿ"]=> + string(6) "Ÿ" + ["Ζ"]=> + string(6) "Ζ" ["á"]=> string(8) "á" ["â"]=> string(7) "â" + ["´"]=> + string(7) "´" + ["æ"]=> + string(7) "æ" + ["à "]=> + string(8) "à" + ["ℵ"]=> + string(9) "ℵ" + ["α"]=> + string(7) "α" + ["&"]=> + string(5) "&" + ["∧"]=> + string(5) "∧" + ["∠"]=> + string(5) "∠" + ["Ã¥"]=> + string(7) "å" + ["≈"]=> + string(7) "≈" ["ã"]=> string(8) "ã" ["ä"]=> string(6) "ä" - ["Ã¥"]=> - string(7) "å" - ["æ"]=> - string(7) "æ" + ["„"]=> + string(7) "„" + ["β"]=> + string(6) "β" + ["¦"]=> + string(8) "¦" + ["•"]=> + string(6) "•" + ["∩"]=> + string(5) "∩" ["ç"]=> string(8) "ç" - ["è"]=> - string(8) "è" + ["¸"]=> + string(7) "¸" + ["¢"]=> + string(6) "¢" + ["χ"]=> + string(5) "χ" + ["ˆ"]=> + string(6) "ˆ" + ["♣"]=> + string(7) "♣" + ["≅"]=> + string(6) "≅" + ["©"]=> + string(6) "©" + ["↵"]=> + string(7) "↵" + ["∪"]=> + string(5) "∪" + ["¤"]=> + string(8) "¤" + ["⇓"]=> + string(6) "⇓" + ["†"]=> + string(8) "†" + ["↓"]=> + string(6) "↓" + ["°"]=> + string(5) "°" + ["δ"]=> + string(7) "δ" + ["♦"]=> + string(7) "♦" + ["÷"]=> + string(8) "÷" ["é"]=> string(8) "é" ["ê"]=> string(7) "ê" - ["ë"]=> - string(6) "ë" - ["ì"]=> - string(8) "ì" - ["Ã"]=> - string(8) "í" - ["î"]=> - string(7) "î" - ["ï"]=> - string(6) "ï" + ["è"]=> + string(8) "è" + ["∅"]=> + string(7) "∅" + [" "]=> + string(6) " " + [" "]=> + string(6) " " + ["ε"]=> + string(9) "ε" + ["≡"]=> + string(7) "≡" + ["η"]=> + string(5) "η" ["ð"]=> string(5) "ð" - ["ñ"]=> - string(8) "ñ" - ["ò"]=> - string(8) "ò" - ["ó"]=> - string(8) "ó" - ["ô"]=> - string(7) "ô" - ["õ"]=> - string(8) "õ" - ["ö"]=> - string(6) "ö" - ["÷"]=> - string(8) "÷" - ["ø"]=> - string(8) "ø" - ["ù"]=> - string(8) "ù" - ["ú"]=> - string(8) "ú" - ["û"]=> - string(7) "û" - ["ü"]=> - string(6) "ü" - ["ý"]=> - string(8) "ý" - ["þ"]=> - string(7) "þ" - ["ÿ"]=> - string(6) "ÿ" - ["Å’"]=> - string(7) "Œ" - ["Å“"]=> - string(7) "œ" - ["Å "]=> - string(8) "Š" - ["Å¡"]=> - string(8) "š" - ["Ÿ"]=> - string(6) "Ÿ" + ["ë"]=> + string(6) "ë" + ["€"]=> + string(6) "€" + ["∃"]=> + string(7) "∃" ["Æ’"]=> string(6) "ƒ" - ["ˆ"]=> - string(6) "ˆ" - ["Ëœ"]=> - string(7) "˜" - ["Α"]=> - string(7) "Α" - ["Î’"]=> - string(6) "Β" - ["Γ"]=> - string(7) "Γ" - ["Δ"]=> - string(7) "Δ" - ["Ε"]=> - string(9) "Ε" - ["Ζ"]=> - string(6) "Ζ" - ["Η"]=> - string(5) "Η" - ["Θ"]=> - string(7) "Θ" - ["Ι"]=> - string(6) "Ι" - ["Κ"]=> - string(7) "Κ" - ["Λ"]=> - string(8) "Λ" - ["Îœ"]=> - string(4) "Μ" - ["Î"]=> - string(4) "Ν" - ["Ξ"]=> - string(4) "Ξ" - ["Ο"]=> - string(9) "Ο" - ["Î "]=> - string(4) "Π" - ["Ρ"]=> - string(5) "Ρ" - ["Σ"]=> - string(7) "Σ" - ["Τ"]=> - string(5) "Τ" - ["Î¥"]=> - string(9) "Υ" - ["Φ"]=> - string(5) "Φ" - ["Χ"]=> - string(5) "Χ" - ["Ψ"]=> - string(5) "Ψ" - ["Ω"]=> - string(7) "Ω" - ["α"]=> - string(7) "α" - ["β"]=> - string(6) "β" + ["∀"]=> + string(8) "∀" + ["½"]=> + string(8) "½" + ["¼"]=> + string(8) "¼" + ["¾"]=> + string(8) "¾" + ["â„"]=> + string(7) "⁄" ["γ"]=> string(7) "γ" - ["δ"]=> - string(7) "δ" - ["ε"]=> - string(9) "ε" - ["ζ"]=> - string(6) "ζ" - ["η"]=> - string(5) "η" - ["θ"]=> - string(7) "θ" + ["≥"]=> + string(4) "≥" + [">"]=> + string(4) ">" + ["⇔"]=> + string(6) "⇔" + ["↔"]=> + string(6) "↔" + ["♥"]=> + string(8) "♥" + ["…"]=> + string(8) "…" + ["Ã"]=> + string(8) "í" + ["î"]=> + string(7) "î" + ["¡"]=> + string(7) "¡" + ["ì"]=> + string(8) "ì" + ["â„‘"]=> + string(7) "ℑ" + ["∞"]=> + string(7) "∞" + ["∫"]=> + string(5) "∫" ["ι"]=> string(6) "ι" + ["¿"]=> + string(8) "¿" + ["∈"]=> + string(6) "∈" + ["ï"]=> + string(6) "ï" ["κ"]=> string(7) "κ" + ["â‡"]=> + string(6) "⇐" ["λ"]=> string(8) "λ" + ["〈"]=> + string(6) "⟨" + ["«"]=> + string(7) "«" + ["â†"]=> + string(6) "←" + ["⌈"]=> + string(7) "⌈" + ["“"]=> + string(7) "“" + ["≤"]=> + string(4) "≤" + ["⌊"]=> + string(8) "⌊" + ["∗"]=> + string(8) "∗" + ["â—Š"]=> + string(5) "◊" + ["‎"]=> + string(5) "‎" + ["‹"]=> + string(8) "‹" + ["‘"]=> + string(7) "‘" + ["<"]=> + string(4) "<" + ["¯"]=> + string(6) "¯" + ["—"]=> + string(7) "—" + ["µ"]=> + string(7) "µ" + ["·"]=> + string(8) "·" + ["−"]=> + string(7) "−" ["μ"]=> string(4) "μ" + ["∇"]=> + string(7) "∇" + [" "]=> + string(6) " " + ["–"]=> + string(7) "–" + ["≠"]=> + string(4) "≠" + ["∋"]=> + string(4) "∋" + ["¬"]=> + string(5) "¬" + ["∉"]=> + string(7) "∉" + ["⊄"]=> + string(6) "⊄" + ["ñ"]=> + string(8) "ñ" ["ν"]=> string(4) "ν" - ["ξ"]=> - string(4) "ξ" + ["ó"]=> + string(8) "ó" + ["ô"]=> + string(7) "ô" + ["Å“"]=> + string(7) "œ" + ["ò"]=> + string(8) "ò" + ["‾"]=> + string(7) "‾" + ["ω"]=> + string(7) "ω" ["ο"]=> string(9) "ο" - ["Ï€"]=> - string(4) "π" - ["Ï"]=> - string(5) "ρ" - ["Ï‚"]=> - string(8) "ς" - ["σ"]=> - string(7) "σ" - ["Ï„"]=> - string(5) "τ" - ["Ï…"]=> - string(9) "υ" + ["⊕"]=> + string(7) "⊕" + ["∨"]=> + string(4) "∨" + ["ª"]=> + string(6) "ª" + ["º"]=> + string(6) "º" + ["ø"]=> + string(8) "ø" + ["õ"]=> + string(8) "õ" + ["⊗"]=> + string(8) "⊗" + ["ö"]=> + string(6) "ö" + ["¶"]=> + string(6) "¶" + ["∂"]=> + string(6) "∂" + ["‰"]=> + string(8) "‰" + ["⊥"]=> + string(6) "⊥" ["φ"]=> string(5) "φ" - ["χ"]=> - string(5) "χ" - ["ψ"]=> - string(5) "ψ" - ["ω"]=> - string(7) "ω" - ["Ï‘"]=> - string(10) "ϑ" - ["Ï’"]=> - string(7) "ϒ" + ["Ï€"]=> + string(4) "π" ["Ï–"]=> string(5) "ϖ" - [" "]=> - string(6) " " - [" "]=> - string(6) " " - [" "]=> - string(8) " " - ["‌"]=> - string(6) "‌" - ["â€"]=> - string(5) "‍" - ["‎"]=> - string(5) "‎" - ["â€"]=> - string(5) "‏" - ["–"]=> - string(7) "–" - ["—"]=> - string(7) "—" - ["‘"]=> - string(7) "‘" - ["’"]=> - string(7) "’" - ["‚"]=> - string(7) "‚" - ["“"]=> - string(7) "“" - ["â€"]=> - string(7) "”" - ["„"]=> - string(7) "„" - ["†"]=> - string(8) "†" - ["‡"]=> - string(8) "‡" - ["•"]=> - string(6) "•" - ["…"]=> - string(8) "…" - ["‰"]=> - string(8) "‰" + ["±"]=> + string(8) "±" + ["£"]=> + string(7) "£" ["′"]=> string(7) "′" - ["″"]=> - string(7) "″" - ["‹"]=> - string(8) "‹" - ["›"]=> - string(8) "›" - ["‾"]=> - string(7) "‾" - ["â„"]=> - string(7) "⁄" - ["€"]=> - string(6) "€" - ["â„‘"]=> - string(7) "ℑ" - ["℘"]=> - string(8) "℘" - ["â„œ"]=> - string(6) "ℜ" - ["â„¢"]=> - string(7) "™" - ["ℵ"]=> - string(9) "ℵ" - ["â†"]=> - string(6) "←" - ["↑"]=> - string(6) "↑" - ["→"]=> - string(6) "→" - ["↓"]=> - string(6) "↓" - ["↔"]=> - string(6) "↔" - ["↵"]=> - string(7) "↵" - ["â‡"]=> - string(6) "⇐" - ["⇑"]=> - string(6) "⇑" - ["⇒"]=> - string(6) "⇒" - ["⇓"]=> - string(6) "⇓" - ["⇔"]=> - string(6) "⇔" - ["∀"]=> - string(8) "∀" - ["∂"]=> - string(6) "∂" - ["∃"]=> - string(7) "∃" - ["∅"]=> - string(7) "∅" - ["∇"]=> - string(7) "∇" - ["∈"]=> - string(6) "∈" - ["∉"]=> - string(7) "∉" - ["∋"]=> - string(4) "∋" ["âˆ"]=> string(6) "∏" - ["∑"]=> - string(5) "∑" - ["−"]=> - string(7) "−" - ["∗"]=> - string(8) "∗" - ["√"]=> - string(7) "√" ["âˆ"]=> string(6) "∝" - ["∞"]=> - string(7) "∞" - ["∠"]=> - string(5) "∠" - ["∧"]=> - string(5) "∧" - ["∨"]=> - string(4) "∨" - ["∩"]=> - string(5) "∩" - ["∪"]=> - string(5) "∪" - ["∫"]=> - string(5) "∫" - ["∴"]=> - string(8) "∴" + ["ψ"]=> + string(5) "ψ" + ["⇒"]=> + string(6) "⇒" + ["√"]=> + string(7) "√" + ["〉"]=> + string(6) "⟩" + ["»"]=> + string(7) "»" + ["→"]=> + string(6) "→" + ["⌉"]=> + string(7) "⌉" + ["â€"]=> + string(7) "”" + ["â„œ"]=> + string(6) "ℜ" + ["®"]=> + string(5) "®" + ["⌋"]=> + string(8) "⌋" + ["Ï"]=> + string(5) "ρ" + ["â€"]=> + string(5) "‏" + ["›"]=> + string(8) "›" + ["’"]=> + string(7) "’" + ["‚"]=> + string(7) "‚" + ["Å¡"]=> + string(8) "š" + ["â‹…"]=> + string(6) "⋅" + ["§"]=> + string(6) "§" + ["Â"]=> + string(5) "­" + ["σ"]=> + string(7) "σ" + ["Ï‚"]=> + string(8) "ς" ["∼"]=> string(5) "∼" - ["≅"]=> - string(6) "≅" - ["≈"]=> - string(7) "≈" - ["≠"]=> - string(4) "≠" - ["≡"]=> - string(7) "≡" - ["≤"]=> - string(4) "≤" - ["≥"]=> - string(4) "≥" + ["â™ "]=> + string(8) "♠" ["⊂"]=> string(5) "⊂" - ["⊃"]=> - string(5) "⊃" - ["⊄"]=> - string(6) "⊄" ["⊆"]=> string(6) "⊆" + ["∑"]=> + string(5) "∑" + ["¹"]=> + string(6) "¹" + ["²"]=> + string(6) "²" + ["³"]=> + string(6) "³" + ["⊃"]=> + string(5) "⊃" ["⊇"]=> string(6) "⊇" - ["⊕"]=> - string(7) "⊕" - ["⊗"]=> - string(8) "⊗" - ["⊥"]=> - string(6) "⊥" - ["â‹…"]=> - string(6) "⋅" - ["⌈"]=> - string(7) "⌈" - ["⌉"]=> - string(7) "⌉" - ["⌊"]=> - string(8) "⌊" - ["⌋"]=> - string(8) "⌋" - ["〈"]=> - string(6) "⟨" - ["〉"]=> - string(6) "⟩" - ["â—Š"]=> - string(5) "◊" - ["â™ "]=> - string(8) "♠" - ["♣"]=> - string(7) "♣" - ["♥"]=> - string(8) "♥" - ["♦"]=> - string(7) "♦" - ["&"]=> - string(5) "&" - ["<"]=> - string(4) "<" - [">"]=> - string(4) ">" + ["ß"]=> + string(7) "ß" + ["Ï„"]=> + string(5) "τ" + ["∴"]=> + string(8) "∴" + ["θ"]=> + string(7) "θ" + ["Ï‘"]=> + string(10) "ϑ" + [" "]=> + string(8) " " + ["þ"]=> + string(7) "þ" + ["Ëœ"]=> + string(7) "˜" + ["×"]=> + string(7) "×" + ["â„¢"]=> + string(7) "™" + ["⇑"]=> + string(6) "⇑" + ["ú"]=> + string(8) "ú" + ["↑"]=> + string(6) "↑" + ["û"]=> + string(7) "û" + ["ù"]=> + string(8) "ù" + ["¨"]=> + string(5) "¨" + ["Ï’"]=> + string(7) "ϒ" + ["Ï…"]=> + string(9) "υ" + ["ü"]=> + string(6) "ü" + ["℘"]=> + string(8) "℘" + ["ξ"]=> + string(4) "ξ" + ["ý"]=> + string(8) "ý" + ["Â¥"]=> + string(5) "¥" + ["ÿ"]=> + string(6) "ÿ" + ["ζ"]=> + string(6) "ζ" + ["â€"]=> + string(5) "‍" + ["‌"]=> + string(6) "‌" } 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) "&" - ["""]=> - string(6) """ - ["<"]=> - string(4) "<" [">"]=> string(4) ">" + ["<"]=> + string(4) "<" + ["""]=> + string(6) """ } -- with table = HTML_SPECIALCHARS & quote_style = ENT_QUOTES -- array(5) { - ["&"]=> - string(5) "&" - ["""]=> - string(6) """ ["'"]=> string(6) "'" - ["<"]=> - string(4) "<" + ["&"]=> + string(5) "&" [">"]=> string(4) ">" + ["<"]=> + string(4) "<" + ["""]=> + string(6) """ } -- with table = HTML_SPECIALCHARS & quote_style = ENT_NOQUOTES -- array(3) { ["&"]=> string(5) "&" - ["<"]=> - string(4) "<" [">"]=> string(4) ">" + ["<"]=> + string(4) "<" } 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) "€" - ["‚"]=> - string(7) "‚" - ["ƒ"]=> - string(6) "ƒ" - ["„"]=> - string(7) "„" - ["…"]=> - string(8) "…" - ["†"]=> - string(8) "†" - ["‡"]=> - string(8) "‡" - ["ˆ"]=> - string(6) "ˆ" - ["‰"]=> - string(8) "‰" - ["Š"]=> - string(8) "Š" - ["‹"]=> - string(8) "‹" - ["Œ"]=> - string(7) "Œ" - ["‘"]=> - string(7) "‘" - ["’"]=> - string(7) "’" - ["“"]=> - string(7) "“" - ["”"]=> - string(7) "”" - ["•"]=> - string(6) "•" - ["–"]=> - string(7) "–" - ["—"]=> - string(7) "—" - ["˜"]=> - string(7) "˜" - ["™"]=> - string(7) "™" - ["š"]=> - string(8) "š" - ["›"]=> - string(8) "›" - ["œ"]=> - string(7) "œ" - ["Ÿ"]=> - string(6) "Ÿ" - [" "]=> - string(6) " " - ["¡"]=> - string(7) "¡" - ["¢"]=> - string(6) "¢" - ["£"]=> - string(7) "£" - ["¤"]=> - string(8) "¤" - ["¥"]=> - string(5) "¥" - ["¦"]=> - string(8) "¦" - ["§"]=> - string(6) "§" - ["¨"]=> - string(5) "¨" - ["©"]=> - string(6) "©" - ["ª"]=> - string(6) "ª" - ["«"]=> - string(7) "«" - ["¬"]=> - string(5) "¬" - [""]=> - string(5) "­" - ["®"]=> - string(5) "®" - ["¯"]=> - string(6) "¯" - ["°"]=> - string(5) "°" - ["±"]=> - string(8) "±" - ["²"]=> - string(6) "²" - ["³"]=> - string(6) "³" - ["´"]=> - string(7) "´" - ["µ"]=> - string(7) "µ" - ["¶"]=> - string(6) "¶" - ["·"]=> - string(8) "·" - ["¸"]=> - string(7) "¸" - ["¹"]=> - string(6) "¹" - ["º"]=> - string(6) "º" - ["»"]=> - string(7) "»" - ["¼"]=> - string(8) "¼" - ["½"]=> - string(8) "½" - ["¾"]=> - string(8) "¾" - ["¿"]=> - string(8) "¿" - ["À"]=> - string(8) "À" + ["Æ"]=> + string(7) "Æ" ["Á"]=> string(8) "Á" ["Â"]=> string(7) "Â" + ["À"]=> + string(8) "À" + ["Å"]=> + string(7) "Å" ["Ã"]=> string(8) "Ã" ["Ä"]=> string(6) "Ä" - ["Å"]=> - string(7) "Å" - ["Æ"]=> - string(7) "Æ" ["Ç"]=> string(8) "Ç" - ["È"]=> - string(8) "È" + ["‡"]=> + string(8) "‡" + ["Ð"]=> + string(5) "Ð" ["É"]=> string(8) "É" ["Ê"]=> string(7) "Ê" + ["È"]=> + string(8) "È" ["Ë"]=> string(6) "Ë" - ["Ì"]=> - string(8) "Ì" ["Í"]=> string(8) "Í" ["Î"]=> string(7) "Î" + ["Ì"]=> + string(8) "Ì" ["Ï"]=> string(6) "Ï" - ["Ð"]=> - string(5) "Ð" ["Ñ"]=> string(8) "Ñ" - ["Ò"]=> - string(8) "Ò" + ["Œ"]=> + string(7) "Œ" ["Ó"]=> string(8) "Ó" ["Ô"]=> string(7) "Ô" + ["Ò"]=> + string(8) "Ò" + ["Ø"]=> + string(8) "Ø" ["Õ"]=> string(8) "Õ" ["Ö"]=> string(6) "Ö" - ["×"]=> - string(7) "×" - ["Ø"]=> - string(8) "Ø" - ["Ù"]=> - string(8) "Ù" + ["Š"]=> + string(8) "Š" + ["Þ"]=> + string(7) "Þ" ["Ú"]=> string(8) "Ú" ["Û"]=> string(7) "Û" + ["Ù"]=> + string(8) "Ù" ["Ü"]=> string(6) "Ü" ["Ý"]=> string(8) "Ý" - ["Þ"]=> - string(7) "Þ" - ["ß"]=> - string(7) "ß" - ["à"]=> - string(8) "à" + ["Ÿ"]=> + string(6) "Ÿ" ["á"]=> string(8) "á" ["â"]=> string(7) "â" + ["´"]=> + string(7) "´" + ["æ"]=> + string(7) "æ" + ["à"]=> + string(8) "à" + ["&"]=> + string(5) "&" + ["å"]=> + string(7) "å" ["ã"]=> string(8) "ã" ["ä"]=> string(6) "ä" - ["å"]=> - string(7) "å" - ["æ"]=> - string(7) "æ" + ["„"]=> + string(7) "„" + ["¦"]=> + string(8) "¦" + ["•"]=> + string(6) "•" ["ç"]=> string(8) "ç" - ["è"]=> - string(8) "è" + ["¸"]=> + string(7) "¸" + ["¢"]=> + string(6) "¢" + ["ˆ"]=> + string(6) "ˆ" + ["©"]=> + string(6) "©" + ["¤"]=> + string(8) "¤" + ["†"]=> + string(8) "†" + ["°"]=> + string(5) "°" + ["÷"]=> + string(8) "÷" ["é"]=> string(8) "é" ["ê"]=> string(7) "ê" + ["è"]=> + string(8) "è" + ["ð"]=> + string(5) "ð" ["ë"]=> string(6) "ë" - ["ì"]=> - string(8) "ì" + ["€"]=> + string(6) "€" + ["ƒ"]=> + string(6) "ƒ" + ["½"]=> + string(8) "½" + ["¼"]=> + string(8) "¼" + ["¾"]=> + string(8) "¾" + [">"]=> + string(4) ">" + ["…"]=> + string(8) "…" ["í"]=> string(8) "í" ["î"]=> string(7) "î" + ["¡"]=> + string(7) "¡" + ["ì"]=> + string(8) "ì" + ["¿"]=> + string(8) "¿" ["ï"]=> string(6) "ï" - ["ð"]=> - string(5) "ð" + ["«"]=> + string(7) "«" + ["“"]=> + string(7) "“" + ["‹"]=> + string(8) "‹" + ["‘"]=> + string(7) "‘" + ["<"]=> + string(4) "<" + ["¯"]=> + string(6) "¯" + ["—"]=> + string(7) "—" + ["µ"]=> + string(7) "µ" + ["·"]=> + string(8) "·" + [" "]=> + string(6) " " + ["–"]=> + string(7) "–" + ["¬"]=> + string(5) "¬" ["ñ"]=> string(8) "ñ" - ["ò"]=> - string(8) "ò" ["ó"]=> string(8) "ó" ["ô"]=> string(7) "ô" + ["œ"]=> + string(7) "œ" + ["ò"]=> + string(8) "ò" + ["ª"]=> + string(6) "ª" + ["º"]=> + string(6) "º" + ["ø"]=> + string(8) "ø" ["õ"]=> string(8) "õ" ["ö"]=> string(6) "ö" - ["÷"]=> - string(8) "÷" - ["ø"]=> - string(8) "ø" - ["ù"]=> - string(8) "ù" + ["¶"]=> + string(6) "¶" + ["‰"]=> + string(8) "‰" + ["±"]=> + string(8) "±" + ["£"]=> + string(7) "£" + ["""]=> + string(6) """ + ["»"]=> + string(7) "»" + ["”"]=> + string(7) "”" + ["®"]=> + string(5) "®" + ["›"]=> + string(8) "›" + ["’"]=> + string(7) "’" + ["‚"]=> + string(7) "‚" + ["š"]=> + string(8) "š" + ["§"]=> + string(6) "§" + [""]=> + string(5) "­" + ["¹"]=> + string(6) "¹" + ["²"]=> + string(6) "²" + ["³"]=> + string(6) "³" + ["ß"]=> + string(7) "ß" + ["þ"]=> + string(7) "þ" + ["˜"]=> + string(7) "˜" + ["×"]=> + string(7) "×" + ["™"]=> + string(7) "™" ["ú"]=> string(8) "ú" ["û"]=> string(7) "û" + ["ù"]=> + string(8) "ù" + ["¨"]=> + string(5) "¨" ["ü"]=> string(6) "ü" ["ý"]=> string(8) "ý" - ["þ"]=> - string(7) "þ" + ["¥"]=> + string(5) "¥" ["ÿ"]=> string(6) "ÿ" - ["&"]=> - string(5) "&" - ["""]=> - string(6) """ - ["<"]=> - string(4) "<" - [">"]=> - string(4) ">" } -- with table = HTML_SPECIALCHARS -- array(4) { ["&"]=> string(5) "&" - ["""]=> - string(6) """ - ["<"]=> - string(4) "<" [">"]=> string(4) ">" + ["<"]=> + string(4) "<" + ["""]=> + string(6) """ } 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 +( + [Æ] => Æ + [Ã] => Á + [Ä‚] => Ă + [Â] =>  + [Ð] => А + [ð”„] => 𝔄 + [À] => À + [Α] => Α + [Ä€] => Ā + [â©“] => ⩓ + [Ä„] => Ą + [ð”¸] => 𝔸 + [Ã…] => Å + [ð’œ] => 𝒜 + [Ã] => à + [Ä] => Ä + [⫧] => ⫧ + [Б] => Б + [∵] => ∵ + [Î’] => Β + [ð”…] => 𝔅 + [ð”¹] => 𝔹 + [˘] => ˘ + [ℬ] => ℬ + [Ч] => Ч + [Ć] => Ć + [â‹’] => ⋒ + [â……] => ⅅ + [ÄŒ] => Č + [Ç] => Ç + [Ĉ] => Ĉ + [∰] => ∰ + [ÄŠ] => Ċ + [¸] => ¸ + [·] => · + [â„] => ℭ + [Χ] => Χ + [⊙] => ⊙ + [⊕] => ⊕ + [⊗] => ⊗ + [∷] => ∷ + [â©´] => ⩴ + [≡] => ≡ + [∮] => ∮ + [âˆ] => ∐ + [⨯] => ⨯ + [ð’ž] => 𝒞 + [â‹“] => ⋓ + [â‰] => ≍ + [⤑] => ⤑ + [Ђ] => Ђ + [Ð…] => Ѕ + [Ð] => Џ + [‡] => ‡ + [↡] => ↡ + [⫤] => ⫤ + [ÄŽ] => Ď + [Д] => Д + [Δ] => Δ + [ð”‡] => 𝔇 + [´] => ´ + [Ë] => ˝ + [Ëœ] => ˜ + [â…†] => ⅆ + [ð”»] => 𝔻 + [⃜] => ⃜ + [∯] => ∯ + [¨] => ¨ + [â‡] => ⇐ + [⟹] => ⟹ + [⊨] => ⊨ + [⇑] => ⇑ + [⤓] => ⤓ + [⇵] => ⇵ + [Ì‘] => ̑ + [â¥] => ⥐ + [⥞] => ⥞ + [⥖] => ⥖ + [⥟] => ⥟ + [⥗] => ⥗ + [⊤] => ⊤ + [↧] => ↧ + [⇓] => ⇓ + [ð’Ÿ] => 𝒟 + [Ä] => Đ + [ÅŠ] => Ŋ + [Ã] => Ð + [É] => É + [Äš] => Ě + [Ê] => Ê + [Ð] => Э + [Ä–] => Ė + [ð”ˆ] => 𝔈 + [È] => È + [Ä’] => Ē + [â—»] => ◻ + [â–«] => ▫ + [Ę] => Ę + [ð”¼] => 𝔼 + [Ε] => Ε + [⩵] => ⩵ + [⩳] => ⩳ + [Η] => Η + [Ë] => Ë + [∃] => ∃ + [Ф] => Ф + [ð”‰] => 𝔉 + [â—¼] => ◼ + [ð”½] => 𝔽 + [ℱ] => ℱ + [Ѓ] => Ѓ + [Γ] => Γ + [Ïœ] => Ϝ + [Äž] => Ğ + [Ä¢] => Ģ + [Äœ] => Ĝ + [Г] => Г + [Ä ] => Ġ + [ð”Š] => 𝔊 + [â‹™] => ⋙ + [ð”¾] => 𝔾 + [⪢] => ⪢ + [≳] => ≳ + [ð’¢] => 𝒢 + [Ъ] => Ъ + [ˇ] => ˇ + [^] => ^ + [Ĥ] => Ĥ + [â„Œ] => ℌ + [â„‹] => ℋ + [â„] => ℍ + [─] => ─ + [Ħ] => Ħ + [â‰] => ≏ + [Е] => Е + [IJ] => IJ + [Ð] => Ё + [Ã] => Í + [ÃŽ] => Î + [И] => И + [Ä°] => İ + [â„‘] => ℑ + [ÃŒ] => Ì + [Ī] => Ī + [â…ˆ] => ⅈ + [⇒] => ⇒ + [∬] => ∬ + [∫] => ∫ + [â¢] => ⁢ + [Ä®] => Į + [ð•€] => 𝕀 + [Ι] => Ι + [Ĩ] => Ĩ + [І] => І + [Ã] => Ï + [Ä´] => Ĵ + [Й] => Й + [ð”] => 𝔍 + [ð•] => 𝕁 + [ð’¥] => 𝒥 + [Ј] => Ј + [Є] => Є + [Ð¥] => Х + [ÐŒ] => Ќ + [Κ] => Κ + [Ķ] => Ķ + [К] => К + [ð”Ž] => 𝔎 + [ð•‚] => 𝕂 + [ð’¦] => 𝒦 + [Љ] => Љ + [Ĺ] => Ĺ + [Λ] => Λ + [⟪] => ⟪ + [↞] => ↞ + [Ľ] => Ľ + [Ä»] => Ļ + [Л] => Л + [⇤] => ⇤ + [⟦] => ⟦ + [⥡] => ⥡ + [⥙] => ⥙ + [⌊] => ⌊ + [⥎] => ⥎ + [↤] => ↤ + [⥚] => ⥚ + [â§] => ⧏ + [⊴] => ⊴ + [⥑] => ⥑ + [⥠] => ⥠ + [⥘] => ⥘ + [⥒] => ⥒ + [⪡] => ⪡ + [≲] => ≲ + [ð”] => 𝔏 + [⋘] => ⋘ + [Ä¿] => Ŀ + [⟷] => ⟷ + [⟶] => ⟶ + [ð•ƒ] => 𝕃 + [↘] => ↘ + [↰] => ↰ + [Å] => Ł + [⤅] => ⤅ + [Ðœ] => М + [âŸ] =>   + [ℳ] => ℳ + [ð”] => 𝔐 + [∓] => ∓ + [ð•„] => 𝕄 + [Îœ] => Μ + [Њ] => Њ + [Ń] => Ń + [Ň] => Ň + [Å…] => Ņ + [Ð] => Н + [ +] => 
 + [ð”‘] => 𝔑 + [â ] => ⁠ + [⫬] => ⫬ + [≢] => ≢ + [â‰] => ≭ + [≠] => ≠ + [≧̸] => &NotGreaterFullEqual + [≫̸] => &NotGreaterGreater + [≹] => ≹ + [â§Ì¸] => &NotLeftTriangleBar + [≮] => ≮ + [≰] => ≰ + [⪢̸] => &NotNestedGreaterGreater + [⪡̸] => &NotNestedLessLess + [⪯̸] => &NotPrecedesEqual + [â‹ ] => ⋠ + [â§Ì¸] => &NotRightTriangleBar + [â‹] => ⋭ + [âŠÌ¸] => &NotSquareSubset + [â‹¢] => ⋢ + [âŠÌ¸] => &NotSquareSuperset + [â‹£] => ⋣ + [⊈] => ⊈ + [âŠ] => ⊁ + [⪰̸] => &NotSucceedsEqual + [â‹¡] => ⋡ + [≿̸] => &NotSucceedsTilde + [⊉] => ⊉ + [â‰] => ≁ + [ð’©] => 𝒩 + [Ñ] => Ñ + [Î] => Ν + [Å’] => Œ + [Ó] => Ó + [Ô] => Ô + [О] => О + [Å] => Ő + [ð”’] => 𝔒 + [Ã’] => Ò + [ÅŒ] => Ō + [Ω] => Ω + [Ο] => Ο + [ð•†] => 𝕆 + [“] => “ + [‘] => ‘ + [â©”] => ⩔ + [ð’ª] => 𝒪 + [Ø] => Ø + [Õ] => Õ + [⨷] => ⨷ + [Ö] => Ö + [âž] => ⏞ + [⎴] => ⎴ + [âœ] => ⏜ + [П] => П + [ð”“] => 𝔓 + [Φ] => Φ + [Î ] => Π + [⪻] => ⪻ + [≼] => ≼ + [″] => ″ + [ð’«] => 𝒫 + [Ψ] => Ψ + [ð””] => 𝔔 + [ð’¬] => 𝒬 + [Å”] => Ŕ + [⟫] => ⟫ + [⤖] => ⤖ + [Ř] => Ř + [Å–] => Ŗ + [Ð ] => Р + [∋] => ∋ + [⥯] => ⥯ + [â„œ] => ℜ + [Ρ] => Ρ + [⟩] => ⟩ + [⇥] => ⇥ + [⌉] => ⌉ + [⟧] => ⟧ + [â¥] => ⥝ + [⇂] => ⇂ + [⥕] => ⥕ + [⌋] => ⌋ + [⥛] => ⥛ + [â§] => ⧐ + [⊵] => ⊵ + [â¥] => ⥏ + [⥜] => ⥜ + [↾] => ↾ + [⥔] => ⥔ + [⥓] => ⥓ + [â„] => ℝ + [⥰] => ⥰ + [⧴] => ⧴ + [Щ] => Щ + [Ш] => Ш + [Ь] => Ь + [Åš] => Ś + [⪼] => ⪼ + [Å ] => Š + [Åž] => Ş + [Åœ] => Ŝ + [С] => С + [ð”–] => 𝔖 + [Σ] => Σ + [ð•Š] => 𝕊 + [√] => √ + [â–¡] => □ + [⊑] => ⊑ + [⊒] => ⊒ + [ð’®] => 𝒮 + [⋆] => ⋆ + [â‹] => ⋐ + [⊆] => ⊆ + [⪰] => ⪰ + [≿] => ≿ + [â‹‘] => ⋑ + [Þ] => Þ + [Ћ] => Ћ + [Ц] => Ц + [ ] => 	 + [Τ] => Τ + [Ť] => Ť + [Å¢] => Ţ + [Т] => Т + [ð”—] => 𝔗 + [Θ] => Θ + [âŸâ€Š] => &ThickSpace + [ ] =>   + [≅] => ≅ + [ð•‹] => 𝕋 + [⃛] => ⃛ + [ð’¯] => 𝒯 + [Ŧ] => Ŧ + [Ú] => Ú + [↟] => ↟ + [⥉] => ⥉ + [ÐŽ] => Ў + [Ŭ] => Ŭ + [Û] => Û + [У] => У + [Å°] => Ű + [ð”˜] => 𝔘 + [Ù] => Ù + [Ū] => Ū + [âŸ] => ⏟ + [â] => ⏝ + [⊎] => ⊎ + [Ų] => Ų + [ð•Œ] => 𝕌 + [⤒] => ⤒ + [↕] => ↕ + [↥] => ↥ + [⇕] => ⇕ + [↗] => ↗ + [Î¥] => Υ + [Å®] => Ů + [ð’°] => 𝒰 + [Ũ] => Ũ + [Ãœ] => Ü + [⊫] => ⊫ + [â««] => ⫫ + [Ð’] => В + [⊩] => ⊩ + [⫦] => ⫦ + [‖] => ‖ + [â˜] => ❘ + [ð”™] => 𝔙 + [ð•] => 𝕍 + [ð’±] => 𝒱 + [⊪] => ⊪ + [Å´] => Ŵ + [ð”š] => 𝔚 + [ð•Ž] => 𝕎 + [ð’²] => 𝒲 + [ð”›] => 𝔛 + [Ξ] => Ξ + [ð•] => 𝕏 + [ð’³] => 𝒳 + [Я] => Я + [Ї] => Ї + [Ю] => Ю + [Ã] => Ý + [Ŷ] => Ŷ + [Ы] => Ы + [ð”œ] => 𝔜 + [ð•] => 𝕐 + [ð’´] => 𝒴 + [Ÿ] => Ÿ + [Ж] => Ж + [Ź] => Ź + [Ž] => Ž + [З] => З + [Å»] => Ż + [​] => ​ + [Ζ] => Ζ + [ℨ] => ℨ + [ℤ] => ℤ + [ð’µ] => 𝒵 + [á] => á + [ă] => ă + [∾] => ∾ + [∾̳] => &acE + [∿] => ∿ + [â] => â + [а] => а + [æ] => æ + [â¡] => ⁡ + [ð”ž] => 𝔞 + [à ] => à + [ℵ] => ℵ + [α] => α + [Ä] => ā + [⨿] => ⨿ + [&] => & + [∧] => ∧ + [â©•] => ⩕ + [â©œ] => ⩜ + [⩘] => ⩘ + [â©š] => ⩚ + [⦤] => ⦤ + [∠] => ∠ + [∡] => ∡ + [⦨] => ⦨ + [⦩] => ⦩ + [⦪] => ⦪ + [⦫] => ⦫ + [⦬] => ⦬ + [â¦] => ⦭ + [⦮] => ⦮ + [⦯] => ⦯ + [∟] => ∟ + [⊾] => ⊾ + [â¦] => ⦝ + [∢] => ∢ + [â¼] => ⍼ + [Ä…] => ą + [ð•’] => 𝕒 + [â©°] => ⩰ + [⩯] => ⩯ + [≊] => ≊ + [≋] => ≋ + [≈] => ≈ + [Ã¥] => å + [ð’¶] => 𝒶 + [*] => * + [ã] => ã + [ä] => ä + [∳] => ∳ + [⨑] => ⨑ + [â«] => ⫭ + [϶] => ϶ + [‵] => ‵ + [â‹] => ⋍ + [⊽] => ⊽ + [⌅] => ⌅ + [⎵] => ⎵ + [⎶] => ⎶ + [≌] => ≌ + [б] => б + [„] => „ + [⦰] => ⦰ + [β] => β + [ℶ] => ℶ + [≬] => ≬ + [ð”Ÿ] => 𝔟 + [â‹‚] => ⋂ + [â—¯] => ◯ + [⋃] => ⋃ + [â¨] => ⨁ + [⨂] => ⨂ + [⨆] => ⨆ + [â–½] => ▽ + [â–³] => △ + [⨄] => ⨄ + [â¤] => ⤍ + [â–´] => ▴ + [â–¾] => ▾ + [â—‚] => ◂ + [â–¸] => ▸ + [â£] => ␣ + [â–’] => ▒ + [â–‘] => ░ + [â–“] => ▓ + [â–ˆ] => █ + [=⃥] => &bne + [≡⃥] => &bnequiv + [âŒ] => ⌐ + [ð•“] => 𝕓 + [⋈] => ⋈ + [â•—] => ╗ + [â•”] => ╔ + [â•–] => ╖ + [â•“] => ╓ + [â•] => ═ + [╦] => ╦ + [â•©] => ╩ + [╤] => ╤ + [╧] => ╧ + [â•] => ╝ + [â•š] => ╚ + [â•œ] => ╜ + [â•™] => ╙ + [â•‘] => ║ + [╬] => ╬ + [â•£] => ╣ + [â• ] => ╠ + [â•«] => ╫ + [â•¢] => ╢ + [â•Ÿ] => ╟ + [⧉] => ⧉ + [â••] => ╕ + [â•’] => ╒ + [â”] => ┐ + [┌] => ┌ + [â•¥] => ╥ + [╨] => ╨ + [┬] => ┬ + [â”´] => ┴ + [⊟] => ⊟ + [⊞] => ⊞ + [â•›] => ╛ + [╘] => ╘ + [┘] => ┘ + [â””] => └ + [│] => │ + [╪] => ╪ + [â•¡] => ╡ + [â•ž] => ╞ + [┼] => ┼ + [┤] => ┤ + [├] => ├ + [¦] => ¦ + [ð’·] => 𝒷 + [â] => ⁏ + [∽] => ∽ + [\] => \ + [⧅] => ⧅ + [⟈] => ⟈ + [•] => • + [≎] => ≎ + [⪮] => ⪮ + [ć] => ć + [∩] => ∩ + [â©„] => ⩄ + [⩉] => ⩉ + [â©‹] => ⩋ + [⩇] => ⩇ + [â©€] => ⩀ + [∩︀] => &caps + [â] => ⁁ + [â©] => ⩍ + [Ä] => č + [ç] => ç + [ĉ] => ĉ + [â©Œ] => ⩌ + [â©] => ⩐ + [Ä‹] => ċ + [⦲] => ⦲ + [¢] => ¢ + [ð” ] => 𝔠 + [ч] => ч + [✓] => ✓ + [χ] => χ + [â—‹] => ○ + [⧃] => ⧃ + [ˆ] => ˆ + [≗] => ≗ + [â¨] => ⨐ + [⫯] => ⫯ + [⧂] => ⧂ + [♣] => ♣ + [:] => : + [≔] => ≔ + [,] => , + [@] => @ + [âˆ] => ∁ + [∘] => ∘ + [â„‚] => ℂ + [â©] => ⩭ + [ð•”] => 𝕔 + [©] => © + [â„—] => ℗ + [↵] => ↵ + [✗] => ✗ + [ð’¸] => 𝒸 + [â«] => ⫏ + [â«‘] => ⫑ + [â«] => ⫐ + [â«’] => ⫒ + [⋯] => ⋯ + [⤸] => ⤸ + [⤵] => ⤵ + [â‹Ÿ] => ⋟ + [⤽] => ⤽ + [∪] => ∪ + [⩈] => ⩈ + [⩆] => ⩆ + [â©Š] => ⩊ + [âŠ] => ⊍ + [â©…] => ⩅ + [∪︀] => &cups + [↷] => ↷ + [⤼] => ⤼ + [â‹ž] => ⋞ + [â‹Ž] => ⋎ + [â‹] => ⋏ + [¤] => ¤ + [↶] => ↶ + [∲] => ∲ + [∱] => ∱ + [âŒ] => ⌭ + [⥥] => ⥥ + [†] => † + [ℸ] => ℸ + [↓] => ↓ + [⊣] => ⊣ + [â¤] => ⤏ + [Ä] => ď + [д] => д + [â©·] => ⩷ + [°] => ° + [δ] => δ + [⦱] => ⦱ + [⥿] => ⥿ + [ð”¡] => 𝔡 + [⇃] => ⇃ + [â‹„] => ⋄ + [♦] => ♦ + [⋲] => ⋲ + [÷] => ÷ + [⋇] => ⋇ + [Ñ’] => ђ + [âŒ] => ⌍ + [$] => $ + [ð••] => 𝕕 + [Ë™] => ˙ + [≑] => ≑ + [⌆] => ⌆ + [⇊] => ⇊ + [â¤] => ⤐ + [⌟] => ⌟ + [⌌] => ⌌ + [ð’¹] => 𝒹 + [Ñ•] => ѕ + [⧶] => ⧶ + [Ä‘] => đ + [⋱] => ⋱ + [⦦] => ⦦ + [ÑŸ] => џ + [⟿] => ⟿ + [é] => é + [â©®] => ⩮ + [Ä›] => ě + [≖] => ≖ + [ê] => ê + [Ñ] => э + [Ä—] => ė + [ð”¢] => 𝔢 + [⪚] => ⪚ + [è] => è + [⪖] => ⪖ + [⪘] => ⪘ + [⪙] => ⪙ + [â§] => ⏧ + [â„“] => ℓ + [⪕] => ⪕ + [⪗] => ⪗ + [Ä“] => ē + [∅] => ∅ + [ ] =>   + [ ] =>   + [ ] =>   + [Å‹] => ŋ + [ ] =>   + [Ä™] => ę + [ð•–] => 𝕖 + [â‹•] => ⋕ + [⧣] => ⧣ + [⩱] => ⩱ + [ε] => ε + [≕] => ≕ + [=] => = + [≟] => ≟ + [⩸] => ⩸ + [⧥] => ⧥ + [⥱] => ⥱ + [ℯ] => ℯ + [â‰] => ≐ + [≂] => ≂ + [η] => η + [ð] => ð + [ë] => ë + [€] => € + [!] => ! + [â„°] => ℰ + [â…‡] => ⅇ + [≒] => ≒ + [Ñ„] => ф + [♀] => ♀ + [ffi] => ffi + [ff] => ff + [ffl] => ffl + [ð”£] => 𝔣 + [ï¬] => fi + [fj] => &fjlig + [â™] => ♭ + [fl] => fl + [â–±] => ▱ + [Æ’] => ƒ + [ð•—] => 𝕗 + [∀] => ∀ + [â«™] => ⫙ + [â¨] => ⨍ + [â…“] => ⅓ + [¼] => ¼ + [â…•] => ⅕ + [â…™] => ⅙ + [â…›] => ⅛ + [â…”] => ⅔ + [â…–] => ⅖ + [¾] => ¾ + [â…—] => ⅗ + [â…œ] => ⅜ + [â…˜] => ⅘ + [â…š] => ⅚ + [â…] => ⅝ + [â…ž] => ⅞ + [â„] => ⁄ + [⌢] => ⌢ + [ð’»] => 𝒻 + [⪌] => ⪌ + [ǵ] => ǵ + [γ] => γ + [Ï] => ϝ + [⪆] => ⪆ + [ÄŸ] => ğ + [Ä] => ĝ + [г] => г + [Ä¡] => ġ + [≥] => ≥ + [≧] => ≧ + [⩾] => ⩾ + [⪩] => ⪩ + [⪀] => ⪀ + [⪂] => ⪂ + [⪄] => ⪄ + [⋛︀] => &gesl + [⪔] => ⪔ + [ð”¤] => 𝔤 + [≫] => ≫ + [â„·] => ℷ + [Ñ“] => ѓ + [≷] => ≷ + [⪒] => ⪒ + [⪥] => ⪥ + [⪤] => ⪤ + [⪊] => ⪊ + [⪈] => ⪈ + [≩] => ≩ + [⋧] => ⋧ + [ð•˜] => 𝕘 + [`] => ` + [â„Š] => ℊ + [⪎] => ⪎ + [âª] => ⪐ + [>] => > + [⪧] => ⪧ + [⩺] => ⩺ + [⦕] => ⦕ + [⩼] => ⩼ + [⥸] => ⥸ + [â‹—] => ⋗ + [â‹›] => ⋛ + [≩︀] => &gvertneqq + [⇔] => ⇔ + [ ] =>   + [½] => ½ + [ÑŠ] => ъ + [↔] => ↔ + [⥈] => ⥈ + [â†] => ↭ + [Ä¥] => ĥ + [♥] => ♥ + […] => … + [⊹] => ⊹ + [ð”¥] => 𝔥 + [⇿] => ⇿ + [∻] => ∻ + [ð•™] => 𝕙 + [―] => ― + [ð’½] => 𝒽 + [ħ] => ħ + [âƒ] => ⁃ + [â€] => ‐ + [Ã] => í + [â£] => ⁣ + [î] => î + [и] => и + [е] => е + [¡] => ¡ + [ð”¦] => 𝔦 + [ì] => ì + [⨌] => ⨌ + [⧜] => ⧜ + [â„©] => ℩ + [ij] => ij + [Ä«] => ī + [â„] => ℐ + [⊷] => ⊷ + [Ƶ] => Ƶ + [â„…] => ℅ + [∞] => ∞ + [â§] => ⧝ + [ı] => ı + [⊺] => ⊺ + [⨗] => ⨗ + [Ñ‘] => ё + [į] => į + [ð•š] => 𝕚 + [ι] => ι + [⨼] => ⨼ + [¿] => ¿ + [ð’¾] => 𝒾 + [⋹] => ⋹ + [⋵] => ⋵ + [â‹´] => ⋴ + [⋳] => ⋳ + [∈] => ∈ + [Ä©] => ĩ + [Ñ–] => і + [ï] => ï + [ĵ] => ĵ + [й] => й + [ð”§] => 𝔧 + [È·] => ȷ + [ð•›] => 𝕛 + [ð’¿] => 𝒿 + [ј] => ј + [Ñ”] => є + [κ] => κ + [Ä·] => ķ + [к] => к + [ð”¨] => 𝔨 + [ĸ] => ĸ + [Ñ…] => х + [Ñœ] => ќ + [ð•œ] => 𝕜 + [ð“€] => 𝓀 + [⇚] => ⇚ + [⤛] => ⤛ + [⤎] => ⤎ + [≦] => ≦ + [⥢] => ⥢ + [ĺ] => ĺ + [⦴] => ⦴ + [â„’] => ℒ + [λ] => λ + [⦑] => ⦑ + [⟨] => ⟨ + [⪅] => ⪅ + [«] => « + [â†] => ← + [⤟] => ⤟ + [â¤] => ⤝ + [↩] => ↩ + [↫] => ↫ + [⤹] => ⤹ + [⥳] => ⥳ + [↢] => ↢ + [⪫] => ⪫ + [⤙] => ⤙ + [âª] => ⪭ + [âªï¸€] => &lates + [⤌] => ⤌ + [â²] => ❲ + [{] => { + [[] => [ + [⦋] => ⦋ + [â¦] => ⦏ + [â¦] => ⦍ + [ľ] => ľ + [ļ] => ļ + [⌈] => ⌈ + [л] => л + [⤶] => ⤶ + [⥧] => ⥧ + [⥋] => ⥋ + [↲] => ↲ + [↽] => ↽ + [↼] => ↼ + [⇋] => ⇋ + [≤] => ≤ + [⩽] => ⩽ + [⪨] => ⪨ + [â©¿] => ⩿ + [âª] => ⪁ + [⪃] => ⪃ + [⋚︀] => &lesg + [⪓] => ⪓ + [â‹–] => ⋖ + [â‹š] => ⋚ + [⪋] => ⪋ + [≶] => ≶ + [⥼] => ⥼ + [ð”©] => 𝔩 + [⪑] => ⪑ + [⥪] => ⥪ + [â–„] => ▄ + [Ñ™] => љ + [≪] => ≪ + [⇇] => ⇇ + [⌞] => ⌞ + [⥫] => ⥫ + [â—º] => ◺ + [Å€] => ŀ + [⎰] => ⎰ + [⪉] => ⪉ + [⪇] => ⪇ + [≨] => ≨ + [⋦] => ⋦ + [⟬] => ⟬ + [⇽] => ⇽ + [⟵] => ⟵ + [↬] => ↬ + [⦅] => ⦅ + [ð•] => 𝕝 + [â¨] => ⨭ + [⨴] => ⨴ + [∗] => ∗ + [_] => _ + [â—Š] => ◊ + [⧫] => ⧫ + [(] => ( + [⦓] => ⦓ + [⇆] => ⇆ + [â¥] => ⥭ + [‎] => ‎ + [⊿] => ⊿ + [‹] => ‹ + [ð“] => 𝓁 + [âª] => ⪍ + [âª] => ⪏ + [Å‚] => ł + [<] => < + [⪦] => ⪦ + [⩹] => ⩹ + [â‹‹] => ⋋ + [⋉] => ⋉ + [⥶] => ⥶ + [â©»] => ⩻ + [⦖] => ⦖ + [â—ƒ] => ◃ + [⥊] => ⥊ + [⥦] => ⥦ + [≨︀] => &lvertneqq + [∺] => ∺ + [¯] => ¯ + [♂] => ♂ + [✠] => ✠ + [↦] => ↦ + [â–®] => ▮ + [⨩] => ⨩ + [м] => м + [—] => — + [ð”ª] => 𝔪 + [℧] => ℧ + [µ] => µ + [∣] => ∣ + [â«°] => ⫰ + [−] => − + [∸] => ∸ + [⨪] => ⨪ + [â«›] => ⫛ + [⊧] => ⊧ + [ð•ž] => 𝕞 + [ð“‚] => 𝓂 + [μ] => μ + [⊸] => ⊸ + [⋙̸] => &nGg + [≫⃒] => &nGt + [â‡] => ⇍ + [⋘̸] => &nLl + [≪⃒] => &nLt + [≪̸] => &nLtv + [⊯] => ⊯ + [⊮] => ⊮ + [∇] => ∇ + [Å„] => ń + [∠⃒] => &nang + [⩰̸] => &napE + [≋̸] => &napid + [ʼn] => ʼn + [≉] => ≉ + [â™®] => ♮ + [â„•] => ℕ + [ ] => + [≎̸] => &nbump + [â‰Ì¸] => &nbumpe + [⩃] => ⩃ + [ň] => ň + [ņ] => ņ + [≇] => ≇ + [â©Ì¸] => &ncongdot + [â©‚] => ⩂ + [н] => н + [–] => – + [⇗] => ⇗ + [⤤] => ⤤ + [â‰Ì¸] => &nedot + [≂̸] => &nesim + [∄] => ∄ + [ð”«] => 𝔫 + [≱] => ≱ + [⩾̸] => &nges + [≵] => ≵ + [≯] => ≯ + [⇎] => ⇎ + [⫲] => ⫲ + [⋼] => ⋼ + [⋺] => ⋺ + [Ñš] => њ + [≦̸] => &nlE + [‥] => ‥ + [↚] => ↚ + [↮] => ↮ + [⩽̸] => &nles + [≴] => ≴ + [⋪] => ⋪ + [⋬] => ⋬ + [ð•Ÿ] => 𝕟 + [¬] => ¬ + [∉] => ∉ + [⋹̸] => ¬inE + [⋵̸] => ¬indot + [â‹·] => ⋷ + [⋶] => ⋶ + [∌] => ∌ + [⋾] => ⋾ + [⋽] => ⋽ + [∦] => ∦ + [∂̸] => &npart + [⨔] => ⨔ + [⊀] => ⊀ + [â‡] => ⇏ + [↛] => ↛ + [⤳̸] => &nrarrc + [â†Ì¸] => &nrarrw + [ð“ƒ] => 𝓃 + [∤] => ∤ + [≄] => ≄ + [⊄] => ⊄ + [⫅̸] => &nsubE + [⊅] => ⊅ + [⊃⃒] => &nsupset + [⫆̸] => &nsupseteqq + [ñ] => ñ + [≸] => ≸ + [â‹«] => ⋫ + [ν] => ν + [#] => # + [â„–] => № + [ ] =>   + [âŠ] => ⊭ + [⤄] => ⤄ + [â‰âƒ’] => &nvap + [⊬] => ⊬ + [≥⃒] => &nvge + [>⃒] => &nvgt + [⧞] => ⧞ + [⤂] => ⤂ + [≤⃒] => &nvle + [<⃒] => &nvlt + [⊴⃒] => &nvltrie + [⤃] => ⤃ + [⊵⃒] => &nvrtrie + [∼⃒] => &nvsim + [⇖] => ⇖ + [⤣] => ⤣ + [↖] => ↖ + [⤧] => ⤧ + [Ⓢ] => Ⓢ + [ó] => ó + [⊛] => ⊛ + [⊚] => ⊚ + [ô] => ô + [о] => о + [âŠ] => ⊝ + [Å‘] => ő + [⨸] => ⨸ + [⦼] => ⦼ + [Å“] => œ + [⦿] => ⦿ + [ð”¬] => 𝔬 + [Ë›] => ˛ + [ò] => ò + [â§] => ⧁ + [⦵] => ⦵ + [↺] => ↺ + [⦾] => ⦾ + [⦻] => ⦻ + [‾] => ‾ + [⧀] => ⧀ + [Å] => ō + [ω] => ω + [ο] => ο + [⦶] => ⦶ + [⊖] => ⊖ + [ð• ] => 𝕠 + [⦷] => ⦷ + [⦹] => ⦹ + [∨] => ∨ + [↻] => ↻ + [â©] => ⩝ + [â„´] => ℴ + [ª] => ª + [º] => º + [⊶] => ⊶ + [â©–] => ⩖ + [â©—] => ⩗ + [â©›] => ⩛ + [ø] => ø + [⊘] => ⊘ + [õ] => õ + [⨶] => ⨶ + [ö] => ö + [⌽] => ⌽ + [¶] => ¶ + [⫳] => ⫳ + [∂] => ∂ + [п] => п + [%] => % + [.] => . + [‰] => ‰ + [⊥] => ⊥ + [‱] => ‱ + [ð”] => 𝔭 + [φ] => φ + [☎] => ☎ + [Ï€] => π + [â‹”] => ⋔ + [Ï–] => ϖ + [â„] => ℏ + [â„Ž] => ℎ + [+] => + + [⨣] => ⨣ + [⨢] => ⨢ + [∔] => ∔ + [⨥] => ⨥ + [⩲] => ⩲ + [±] => ± + [⨦] => ⨦ + [⨧] => ⨧ + [⨕] => ⨕ + [ð•¡] => 𝕡 + [£] => £ + [⪳] => ⪳ + [≺] => ≺ + [⪷] => ⪷ + [⪯] => ⪯ + [⪹] => ⪹ + [⪵] => ⪵ + [⋨] => ⋨ + [≾] => ≾ + [′] => ′ + [â„™] => ℙ + [âˆ] => ∏ + [⌮] => ⌮ + [⌒] => ⌒ + [⌓] => ⌓ + [âˆ] => ∝ + [⊰] => ⊰ + [ð“…] => 𝓅 + [ψ] => ψ + [ ] =>   + [ð”®] => 𝔮 + [ð•¢] => 𝕢 + [â—] => ⁗ + [ð“†] => 𝓆 + [⨖] => ⨖ + [?] => ? + ["] => " + [⇛] => ⇛ + [⤜] => ⤜ + [⥤] => ⥤ + [∽̱] => &race + [Å•] => ŕ + [⦳] => ⦳ + [⦒] => ⦒ + [⦥] => ⦥ + [»] => » + [⥵] => ⥵ + [⤠] => ⤠ + [⤳] => ⤳ + [⤞] => ⤞ + [↪] => ↪ + [⥅] => ⥅ + [⥴] => ⥴ + [↣] => ↣ + [â†] => ↝ + [⤚] => ⤚ + [∶] => ∶ + [â„š] => ℚ + [â³] => ❳ + [⦌] => ⦌ + [⦎] => ⦎ + [â¦] => ⦐ + [Å™] => ř + [Å—] => ŗ + [}] => } + [Ñ€] => р + [⤷] => ⤷ + [⥩] => ⥩ + [â€] => ” + [↳] => ↳ + [â„›] => ℛ + [â–] => ▭ + [®] => ® + [⥽] => ⥽ + [ð”¯] => 𝔯 + [â‡] => ⇁ + [⇀] => ⇀ + [⥬] => ⥬ + [Ï] => ρ + [ϱ] => ϱ + [⇄] => ⇄ + [⇌] => ⇌ + [Ëš] => ˚ + [≓] => ≓ + [â€] => ‏ + [⎱] => ⎱ + [â«®] => ⫮ + [âŸ] => ⟭ + [⇾] => ⇾ + [⦆] => ⦆ + [ð•£] => 𝕣 + [⨮] => ⨮ + [⨵] => ⨵ + [)] => ) + [⦔] => ⦔ + [⨒] => ⨒ + [⇉] => ⇉ + [›] => › + [ð“‡] => 𝓇 + [↱] => ↱ + []] => ] + [’] => ’ + [â‹Œ] => ⋌ + [â‹Š] => ⋊ + [â–¹] => ▹ + [⧎] => ⧎ + [⥨] => ⥨ + [â„ž] => ℞ + [Å›] => ś + [‚] => ‚ + [⪴] => ⪴ + [Å¡] => š + [ÅŸ] => ş + [Å] => ŝ + [⪶] => ⪶ + [â‹©] => ⋩ + [⨓] => ⨓ + [Ñ] => с + [â‹…] => ⋅ + [⊡] => ⊡ + [⩦] => ⩦ + [⇘] => ⇘ + [⤥] => ⤥ + [§] => § + [;] => ; + [⤩] => ⤩ + [✶] => ✶ + [ð”°] => 𝔰 + [♯] => ♯ + [щ] => щ + [ш] => ш + [∥] => ∥ + [Â] => ­ + [σ] => σ + [Ï‚] => ς + [∼] => ∼ + [⩪] => ⩪ + [≃] => ≃ + [⪞] => ⪞ + [⪠] => ⪠ + [âª] => ⪝ + [⪟] => ⪟ + [≆] => ≆ + [⨤] => ⨤ + [⥲] => ⥲ + [⨳] => ⨳ + [⧤] => ⧤ + [⌣] => ⌣ + [⪪] => ⪪ + [⪬] => ⪬ + [⪬︀] => &smtes + [ÑŒ] => ь + [/] => / + [⧄] => ⧄ + [⌿] => ⌿ + [ð•¤] => 𝕤 + [â™ ] => ♠ + [⊓] => ⊓ + [⊓︀] => &sqcaps + [⊔] => ⊔ + [⊔︀] => &sqcups + [âŠ] => ⊏ + [âŠ] => ⊐ + [â–ª] => ▪ + [→] => → + [ð“ˆ] => 𝓈 + [∖] => ∖ + [☆] => ☆ + [★] => ★ + [ϵ] => ϵ + [Ï•] => ϕ + [⊂] => ⊂ + [â«…] => ⫅ + [⪽] => ⪽ + [⫃] => ⫃ + [â«] => ⫁ + [⪿] => ⪿ + [⥹] => ⥹ + [⊊] => ⊊ + [â«‹] => ⫋ + [⫇] => ⫇ + [â«•] => ⫕ + [â«“] => ⫓ + [≻] => ≻ + [⪸] => ⪸ + [≽] => ≽ + [⪺] => ⪺ + [∑] => ∑ + [♪] => ♪ + [¹] => ¹ + [²] => ² + [³] => ³ + [⊃] => ⊃ + [⪾] => ⪾ + [⫘] => ⫘ + [⊇] => ⊇ + [â«„] => ⫄ + [⟉] => ⟉ + [â«—] => ⫗ + [⥻] => ⥻ + [â«‚] => ⫂ + [â«Œ] => ⫌ + [â«€] => ⫀ + [⫆] => ⫆ + [⊋] => ⊋ + [⫈] => ⫈ + [â«”] => ⫔ + [â«–] => ⫖ + [⇙] => ⇙ + [⤦] => ⤦ + [↙] => ↙ + [⤪] => ⤪ + [ß] => ß + [⌖] => ⌖ + [Ï„] => τ + [Å¥] => ť + [Å£] => ţ + [Ñ‚] => т + [⌕] => ⌕ + [ð”±] => 𝔱 + [∴] => ∴ + [θ] => θ + [Ï‘] => ϑ + [þ] => þ + [×] => × + [⊠] => ⊠ + [⨱] => ⨱ + [⨰] => ⨰ + [âˆ] => ∭ + [⤨] => ⤨ + [⌶] => ⌶ + [⫱] => ⫱ + [ð•¥] => 𝕥 + [â«š] => ⫚ + [‴] => ‴ + [â„¢] => ™ + [â–µ] => ▵ + [â–¿] => ▿ + [≜] => ≜ + [â—¬] => ◬ + [⨺] => ⨺ + [⨹] => ⨹ + [â§] => ⧍ + [⨻] => ⨻ + [â¢] => ⏢ + [ð“‰] => 𝓉 + [ц] => ц + [Ñ›] => ћ + [ŧ] => ŧ + [↠] => ↠ + [⥣] => ⥣ + [ú] => ú + [↑] => ↑ + [Ñž] => ў + [Å] => ŭ + [û] => û + [у] => у + [⇅] => ⇅ + [ű] => ű + [⥮] => ⥮ + [⥾] => ⥾ + [ð”²] => 𝔲 + [ù] => ù + [↿] => ↿ + [â–€] => ▀ + [⌜] => ⌜ + [âŒ] => ⌏ + [â—¸] => ◸ + [Å«] => ū + [ų] => ų + [ð•¦] => 𝕦 + [Ï…] => υ + [Ï’] => ϒ + [⇈] => ⇈ + [âŒ] => ⌝ + [⌎] => ⌎ + [ů] => ů + [â—¹] => ◹ + [ð“Š] => 𝓊 + [â‹°] => ⋰ + [Å©] => ũ + [ü] => ü + [⦧] => ⦧ + [⫨] => ⫨ + [â«©] => ⫩ + [⦜] => ⦜ + [Ï°] => ϰ + [⫌︀] => &varsupsetneqq + [⫽︀] => &varsupsetneqq + [⊲] => ⊲ + [в] => в + [⊢] => ⊢ + [⊻] => ⊻ + [≚] => ≚ + [â‹®] => ⋮ + [|] => | + [ð”³] => 𝔳 + [⊂⃒] => &vnsub + [ð•§] => 𝕧 + [⊳] => ⊳ + [ð“‹] => 𝓋 + [⫋︀] => &vsubnE + [⊊︀] => &vsubne + [⊋︀] => &vsupne + [⦚] => ⦚ + [ŵ] => ŵ + [â©Ÿ] => ⩟ + [≙] => ≙ + [ð”´] => 𝔴 + [ð•¨] => 𝕨 + [℘] => ℘ + [≀] => ≀ + [ð“Œ] => 𝓌 + [ð”µ] => 𝔵 + [⟺] => ⟺ + [ξ] => ξ + [⟸] => ⟸ + [⟼] => ⟼ + [â‹»] => ⋻ + [⨀] => ⨀ + [ð•©] => 𝕩 + [ð“] => 𝓍 + [â‹] => ⋁ + [â‹€] => ⋀ + [ý] => ý + [Ñ] => я + [Å·] => ŷ + [Ñ‹] => ы + [Â¥] => ¥ + [ð”¶] => 𝔶 + [Ñ—] => ї + [ð•ª] => 𝕪 + [ð“Ž] => 𝓎 + [ÑŽ] => ю + [ÿ] => ÿ + [ź] => ź + [ž] => ž + [з] => з + [ż] => ż + [ζ] => ζ + [ð”·] => 𝔷 + [ж] => ж + [â‡] => ⇝ + [ð•«] => 𝕫 + [ð“] => 𝓏 + [â€] => ‍ + [‌] => ‌ +) +-- 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 +( + [&] => & + [>] => > + [<] => < + ["] => " +) +-- with table = HTML_SPECIALCHARS, ENT_QUOTES -- +array(5) { + ["&"]=> + string(5) "&" + ["'"]=> + string(6) "'" + [">"]=> + string(4) ">" + ["<"]=> + string(4) "<" + ["""]=> + string(6) """ +} +-- with table = HTML_SPECIALCHARS, ENT_NOQUOTES -- +array(3) { + ["&"]=> + string(5) "&" + [">"]=> + string(4) ">" + ["<"]=> + string(4) "<" +} +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 +( + [ ] => 	 + [ +] => 
 + [!] => ! + ["] => " + [#] => # + [$] => $ + [%] => % + [&] => & + [(] => ( + [)] => ) + [*] => * + [+] => + + [,] => , + [.] => . + [/] => / + [:] => : + [;] => ; + [<] => < + [=] => = + [>] => > + [?] => ? + [@] => @ + [[] => [ + [\] => \ + []] => ] + [^] => ^ + [_] => _ + [`] => ` + [fj] => &fjlig + [{] => { + [|] => | + [}] => } + [€] => Ђ + [] => Ѓ + [‚] => ‚ + [ƒ] => ѓ + [„] => „ + […] => … + [†] => † + [‡] => ‡ + [ˆ] => € + [‰] => ‰ + [Š] => Љ + [‹] => ‹ + [Œ] => Њ + [] => Ќ + [Ž] => Ћ + [] => Џ + [] => ђ + [‘] => ‘ + [’] => ’ + [“] => “ + [”] => ” + [•] => • + [–] => – + [—] => — + [™] => ™ + [š] => љ + [›] => › + [œ] => њ + [] => ќ + [ž] => ћ + [Ÿ] => џ + [ ] => + [¡] => Ў + [¢] => ў + [£] => Ј + [¤] => ¤ + [¦] => ¦ + [§] => § + [¨] => Ё + [©] => © + [ª] => Є + [«] => « + [¬] => ¬ + [] => ­ + [®] => ® + [¯] => Ї + [°] => ° + [±] => ± + [²] => І + [³] => і + [µ] => µ + [¶] => ¶ + [·] => · + [¸] => ё + [¹] => № + [º] => є + [»] => » + [¼] => ј + [½] => Ѕ + [¾] => ѕ + [¿] => ї + [À] => А + [Á] => Б + [Â] => В + [Ã] => Г + [Ä] => Д + [Å] => Е + [Æ] => Ж + [Ç] => З + [È] => И + [É] => Й + [Ê] => К + [Ë] => Л + [Ì] => М + [Í] => Н + [Î] => О + [Ï] => П + [Ð] => Р + [Ñ] => С + [Ò] => Т + [Ó] => У + [Ô] => Ф + [Õ] => Х + [Ö] => Ц + [×] => Ч + [Ø] => Ш + [Ù] => Щ + [Ú] => Ъ + [Û] => Ы + [Ü] => Ь + [Ý] => Э + [Þ] => Ю + [ß] => Я + [à] => а + [á] => б + [â] => в + [ã] => г + [ä] => д + [å] => е + [æ] => ж + [ç] => з + [è] => и + [é] => й + [ê] => к + [ë] => л + [ì] => м + [í] => н + [î] => о + [ï] => п + [ð] => р + [ñ] => с + [ò] => т + [ó] => у + [ô] => ф + [õ] => х + [ö] => ц + [÷] => ч + [ø] => ш + [ù] => щ + [ú] => ъ + [û] => ы + [ü] => ь + [ý] => э + [þ] => ю + [ÿ] => я +) +-- 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 +( + ["] => " + [&] => & + [<] => < + [>] => > +) +-- with table = HTML_SPECIALCHARS, ENT_QUOTES -- +array(5) { + ["""]=> + string(6) """ + ["&"]=> + string(5) "&" + ["'"]=> + string(6) "'" + ["<"]=> + string(4) "<" + [">"]=> + string(4) ">" +} +-- with table = HTML_SPECIALCHARS, ENT_NOQUOTES -- +array(3) { + [">"]=> + string(4) ">" + ["<"]=> + string(4) "<" + ["&"]=> + string(5) "&" +} +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 ' 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 +( + ['] => ' + [Æ] => Æ + [Ã] => Á + [Â] =>  + [À] => À + [Α] => Α + [Ã…] => Å + [Ã] => à + [Ä] => Ä + [Î’] => Β + [Ç] => Ç + [Χ] => Χ + [‡] => ‡ + [Δ] => Δ + [Ã] => Ð + [É] => É + [Ê] => Ê + [È] => È + [Ε] => Ε + [Η] => Η + [Ë] => Ë + [Γ] => Γ + [Ã] => Í + [ÃŽ] => Î + [ÃŒ] => Ì + [Ι] => Ι + [Ã] => Ï + [Κ] => Κ + [Λ] => Λ + [Îœ] => Μ + [Ñ] => Ñ + [Î] => Ν + [Å’] => Œ + [Ó] => Ó + [Ô] => Ô + [Ã’] => Ò + [Ω] => Ω + [Ο] => Ο + [Ø] => Ø + [Õ] => Õ + [Ö] => Ö + [Φ] => Φ + [Î ] => Π + [″] => ″ + [Ψ] => Ψ + [Ρ] => Ρ + [Å ] => Š + [Σ] => Σ + [Þ] => Þ + [Τ] => Τ + [Θ] => Θ + [Ú] => Ú + [Û] => Û + [Ù] => Ù + [Î¥] => Υ + [Ãœ] => Ü + [Ξ] => Ξ + [Ã] => Ý + [Ÿ] => Ÿ + [Ζ] => Ζ + [á] => á + [â] => â + [´] => ´ + [æ] => æ + [à ] => à + [ℵ] => ℵ + [α] => α + [&] => & + [∧] => ∧ + [∠] => ∠ + [Ã¥] => å + [≈] => ≈ + [ã] => ã + [ä] => ä + [„] => „ + [β] => β + [¦] => ¦ + [•] => • + [∩] => ∩ + [ç] => ç + [¸] => ¸ + [¢] => ¢ + [χ] => χ + [ˆ] => ˆ + [♣] => ♣ + [≅] => ≅ + [©] => © + [↵] => ↵ + [∪] => ∪ + [¤] => ¤ + [⇓] => ⇓ + [†] => † + [↓] => ↓ + [°] => ° + [δ] => δ + [♦] => ♦ + [÷] => ÷ + [é] => é + [ê] => ê + [è] => è + [∅] => ∅ + [ ] =>   + [ ] =>   + [ε] => ε + [≡] => ≡ + [η] => η + [ð] => ð + [ë] => ë + [€] => € + [∃] => ∃ + [Æ’] => ƒ + [∀] => ∀ + [½] => ½ + [¼] => ¼ + [¾] => ¾ + [â„] => ⁄ + [γ] => γ + [≥] => ≥ + [>] => > + [⇔] => ⇔ + [↔] => ↔ + [♥] => ♥ + […] => … + [Ã] => í + [î] => î + [¡] => ¡ + [ì] => ì + [â„‘] => ℑ + [∞] => ∞ + [∫] => ∫ + [ι] => ι + [¿] => ¿ + [∈] => ∈ + [ï] => ï + [κ] => κ + [â‡] => ⇐ + [λ] => λ + [〈] => ⟨ + [«] => « + [â†] => ← + [⌈] => ⌈ + [“] => “ + [≤] => ≤ + [⌊] => ⌊ + [∗] => ∗ + [â—Š] => ◊ + [‎] => ‎ + [‹] => ‹ + [‘] => ‘ + [<] => < + [¯] => ¯ + [—] => — + [µ] => µ + [·] => · + [−] => − + [μ] => μ + [∇] => ∇ + [ ] => + [–] => – + [≠] => ≠ + [∋] => ∋ + [¬] => ¬ + [∉] => ∉ + [⊄] => ⊄ + [ñ] => ñ + [ν] => ν + [ó] => ó + [ô] => ô + [Å“] => œ + [ò] => ò + [‾] => ‾ + [ω] => ω + [ο] => ο + [⊕] => ⊕ + [∨] => ∨ + [ª] => ª + [º] => º + [ø] => ø + [õ] => õ + [⊗] => ⊗ + [ö] => ö + [¶] => ¶ + [∂] => ∂ + [‰] => ‰ + [⊥] => ⊥ + [φ] => φ + [Ï€] => π + [Ï–] => ϖ + [±] => ± + [£] => £ + [′] => ′ + [âˆ] => ∏ + [âˆ] => ∝ + [ψ] => ψ + ["] => " + [⇒] => ⇒ + [√] => √ + [〉] => ⟩ + [»] => » + [→] => → + [⌉] => ⌉ + [â€] => ” + [â„œ] => ℜ + [®] => ® + [⌋] => ⌋ + [Ï] => ρ + [â€] => ‏ + [›] => › + [’] => ’ + [‚] => ‚ + [Å¡] => š + [â‹…] => ⋅ + [§] => § + [Â] => ­ + [σ] => σ + [Ï‚] => ς + [∼] => ∼ + [â™ ] => ♠ + [⊂] => ⊂ + [⊆] => ⊆ + [∑] => ∑ + [¹] => ¹ + [²] => ² + [³] => ³ + [⊃] => ⊃ + [⊇] => ⊇ + [ß] => ß + [Ï„] => τ + [∴] => ∴ + [θ] => θ + [Ï‘] => ϑ + [ ] =>   + [þ] => þ + [Ëœ] => ˜ + [×] => × + [â„¢] => ™ + [⇑] => ⇑ + [ú] => ú + [↑] => ↑ + [û] => û + [ù] => ù + [¨] => ¨ + [Ï’] => ϒ + [Ï…] => υ + [ü] => ü + [℘] => ℘ + [ξ] => ξ + [ý] => ý + [Â¥] => ¥ + [ÿ] => ÿ + [ζ] => ζ + [â€] => ‍ + [‌] => ‌ +) +-- 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 +( + [&] => & + [>] => > + [<] => < + ["] => " +) +-- with table = HTML_SPECIALCHARS, ENT_QUOTES -- +array(5) { + ["&"]=> + string(5) "&" + ["'"]=> + string(6) "'" + [">"]=> + string(4) ">" + ["<"]=> + string(4) "<" + ["""]=> + string(6) """ +} +-- with table = HTML_SPECIALCHARS, ENT_NOQUOTES -- +array(3) { + ["&"]=> + string(5) "&" + [">"]=> + string(4) ">" + ["<"]=> + string(4) "<" +} +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 +( + [&] => & + ['] => ' + [>] => > + [<] => < + ["] => " +) +-- 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 +( + [&] => & + [>] => > + [<] => < + ["] => " +) +-- with table = HTML_SPECIALCHARS, ENT_QUOTES -- +array(5) { + ["&"]=> + string(5) "&" + ["'"]=> + string(6) "'" + [">"]=> + string(4) ">" + ["<"]=> + string(4) "<" + ["""]=> + string(6) """ +} +-- with table = HTML_SPECIALCHARS, ENT_NOQUOTES -- +array(3) { + ["&"]=> + string(5) "&" + [">"]=> + string(4) ">" + ["<"]=> + string(4) "<" +} +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 +( + [&] => & + ['] => ' + [>] => > + [<] => < + ["] => " +) +-- 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 +( + [&] => & + [>] => > + [<] => < + ["] => " +) +-- with table = HTML_SPECIALCHARS, ENT_QUOTES -- +array(5) { + ["&"]=> + string(5) "&" + ["'"]=> + string(6) "'" + [">"]=> + string(4) ">" + ["<"]=> + string(4) "<" + ["""]=> + string(6) """ +} +-- with table = HTML_SPECIALCHARS, ENT_NOQUOTES -- +array(3) { + ["&"]=> + string(5) "&" + [">"]=> + string(4) ">" + ["<"]=> + string(4) "<" +} +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) "&" - ["""]=> - string(6) """ - ["<"]=> - string(4) "<" [">"]=> string(4) ">" + ["<"]=> + string(4) "<" + ["""]=> + string(6) """ } array(4) { ["&"]=> string(5) "&" - ["""]=> - string(6) """ - ["<"]=> - string(4) "<" [">"]=> string(4) ">" + ["<"]=> + string(4) "<" + ["""]=> + string(6) """ } -- Iteration 8 -- int(252) @@ -162,22 +170,22 @@ int(252) array(4) { ["&"]=> string(5) "&" - ["""]=> - string(6) """ - ["<"]=> - string(4) "<" [">"]=> string(4) ">" + ["<"]=> + string(4) "<" + ["""]=> + string(6) """ } array(4) { ["&"]=> string(5) "&" - ["""]=> - string(6) """ - ["<"]=> - string(4) "<" [">"]=> string(4) ">" + ["<"]=> + string(4) "<" + ["""]=> + string(6) """ } -- Iteration 10 -- @@ -218,43 +226,43 @@ NULL array(4) { ["&"]=> string(5) "&" - ["""]=> - string(6) """ - ["<"]=> - string(4) "<" [">"]=> string(4) ">" + ["<"]=> + string(4) "<" + ["""]=> + string(6) """ } array(4) { ["&"]=> string(5) "&" - ["""]=> - string(6) """ - ["<"]=> - string(4) "<" [">"]=> string(4) ">" + ["<"]=> + string(4) "<" + ["""]=> + string(6) """ } -- Iteration 16 -- array(4) { ["&"]=> string(5) "&" - ["""]=> - string(6) """ - ["<"]=> - string(4) "<" [">"]=> string(4) ">" + ["<"]=> + string(4) "<" + ["""]=> + string(6) """ } array(4) { ["&"]=> string(5) "&" - ["""]=> - string(6) """ - ["<"]=> - string(4) "<" [">"]=> string(4) ">" + ["<"]=> + string(4) "<" + ["""]=> + string(6) """ } -- Iteration 17 -- @@ -267,42 +275,42 @@ NULL array(4) { ["&"]=> string(5) "&" - ["""]=> - string(6) """ - ["<"]=> - string(4) "<" [">"]=> string(4) ">" + ["<"]=> + string(4) "<" + ["""]=> + string(6) """ } array(4) { ["&"]=> string(5) "&" - ["""]=> - string(6) """ - ["<"]=> - string(4) "<" [">"]=> string(4) ">" + ["<"]=> + string(4) "<" + ["""]=> + string(6) """ } -- Iteration 19 -- array(4) { ["&"]=> string(5) "&" - ["""]=> - string(6) """ - ["<"]=> - string(4) "<" [">"]=> string(4) ">" + ["<"]=> + string(4) "<" + ["""]=> + string(6) """ } array(4) { ["&"]=> string(5) "&" - ["""]=> - string(6) """ - ["<"]=> - string(4) "<" [">"]=> string(4) ">" + ["<"]=> + string(4) "<" + ["""]=> + string(6) """ } 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( + "&", + "&&", + "&$", + "&#&", + "&#$", + "&#x&", + "&#x$", + "&", + "$", + " &", + " $", + "&", + "$", + "&", + "$", + "&a&", + "&a$", + "&aa&", + "&aa$", + "&aa;&", + "&aa;$", + "&;&", + "&;$", +); + +$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$ +& +$ + & + $ +& +$ +& +$ +&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 ' +--FILE-- +<?php + +echo "*** HTML 4.01 implicit (shouldn't decode) ***\n"; +echo html_entity_decode("'", ENT_QUOTES, "UTF-8"), "\n"; + +echo "*** HTML 4.01 (shouldn't decode) ***\n"; +echo html_entity_decode("'", ENT_QUOTES | ENT_HTML401, "UTF-8"), "\n"; + +echo "*** HTML 5 ***\n"; +echo html_entity_decode("'", ENT_QUOTES | ENT_HTML5, "UTF-8"), "\n"; + +echo "*** XHTML 1.0 ***\n"; +echo html_entity_decode("'", ENT_QUOTES | ENT_XHTML, "UTF-8"), "\n"; + +echo "*** XML 1.0 ***\n"; +echo html_entity_decode("'", ENT_QUOTES | ENT_XML1, "UTF-8"), "\n"; + +echo "Done.\n"; +--EXPECT-- +*** HTML 4.01 implicit (shouldn't decode) *** +' +*** HTML 4.01 (shouldn't decode) *** +' +*** 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( + "�", //C0 + "", + "	", + "
", + "", + "", + "
", //note that HTML5 is unique in that it forbids this entity, but allows a literal U+0D + "", + "", + " ", //allowed always + "", //DEL + "€", //C1 + "Ÿ", + " ", //allowed always + "퟿", //surrogates + "�", + "�", + "", //allowed always + "", //nonchar + "", + "﷏", //allowed always + "", //nonchar + "", + "ﷰ", //allowed always + "", //nonchar + "", +); + +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 *** +� NOT DECODED + NOT DECODED +	 DECODED +
 DECODED + NOT DECODED + NOT DECODED +
 DECODED + NOT DECODED + NOT DECODED +  DECODED + NOT DECODED +€ NOT DECODED +Ÿ NOT DECODED +  DECODED +퟿ DECODED +� NOT DECODED +� NOT DECODED + DECODED + DECODED + DECODED +﷏ DECODED + DECODED + DECODED +ﷰ DECODED + DECODED + DECODED + +*** XHTML 1.0 *** +� NOT DECODED + NOT DECODED +	 DECODED +
 DECODED + NOT DECODED + NOT DECODED +
 DECODED + NOT DECODED + NOT DECODED +  DECODED + DECODED +€ DECODED +Ÿ DECODED +  DECODED +퟿ DECODED +� NOT DECODED +� NOT DECODED + DECODED + NOT DECODED + NOT DECODED +﷏ DECODED + DECODED + DECODED +ﷰ DECODED + DECODED + DECODED + +*** HTML5 *** +� NOT DECODED + NOT DECODED +	 DECODED +
 DECODED + NOT DECODED + DECODED +
 NOT DECODED + NOT DECODED + NOT DECODED +  DECODED + NOT DECODED +€ NOT DECODED +Ÿ NOT DECODED +  DECODED +퟿ DECODED +� NOT DECODED +� NOT DECODED + DECODED + NOT DECODED + NOT DECODED +﷏ DECODED + NOT DECODED + NOT DECODED +ﷰ DECODED + NOT DECODED + NOT DECODED + +*** XML 1.0 *** +� NOT DECODED + NOT DECODED +	 DECODED +
 DECODED + NOT DECODED + NOT DECODED +
 DECODED + NOT DECODED + NOT DECODED +  DECODED + DECODED +€ DECODED +Ÿ DECODED +  DECODED +퟿ DECODED +� NOT DECODED +� NOT DECODED + DECODED + NOT DECODED + NOT DECODED +﷏ DECODED + DECODED + DECODED +ﷰ DECODED + DECODED + 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: Ь => 9c CYRILLIC CAPITAL LETTER E: Э => 9d  =>  -CYRILLIC CAPITAL LETTER YU: Ю => 9f +CYRILLIC CAPITAL LETTER YU: Ю => 9e ž => ž -CYRILLIC CAPITAL LETTER YA: Я => 2623783432463b +CYRILLIC CAPITAL LETTER YA: Я => 9f Ÿ => Ÿ CYRILLIC SMALL LETTER A: а => 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( - """, - "&", - "<", - ">", - " ", - "¡", - "¢", - "£", - "¤", - "¥", - "¦", - "§", - "¨", - "©", - "ª", - "«", - "¬", - "­", - "®", - "¯", - "°", - "±", - "²", - "³", - "´", - "µ", - "¶", - "·", - "¸", - "¹", - "º", - "»", - "¼", - "½", - "¾", - "¿", - "À", - "Á", - "Â", - "Ã", - "Ä", - "Å", - "Æ", - "Ç", - "È", - "É", - "Ê", - "Ë", - "Ì", - "Í", - "Î", - "Ï", - "Ð", - "Ñ", - "Ò", - "Ó", - "Ô", - "Õ", - "Ö", - "×", - "Ø", - "Ù", - "Ú", - "Û", - "Ü", - "Ý", - "Þ", - "ß", - "à", - "á", - "â", - "ã", - "ä", - "å", - "æ", - "ç", - "è", - "é", - "ê", - "ë", - "ì", - "í", - "î", - "ï", - "ð", - "ñ", - "ò", - "ó", - "ô", - "õ", - "ö", - "÷", - "ø", - "ù", - "ú", - "û", - "ü", - "ý", - "þ", - "ÿ", - "Œ", - "œ", - "Š", - "š", - "Ÿ", - "ƒ", - "ˆ", - "˜", - "Α", - "Β", - "Γ", - "Δ", - "Ε", - "Ζ", - "Η", - "Θ", - "Ι", - "Κ", - "Λ", - "Μ", - "Ν", - "Ξ", - "Ο", - "Π", - "Ρ", - "Σ", - "Τ", - "Υ", - "Φ", - "Χ", - "Ψ", - "Ω", - "α", - "β", - "γ", - "δ", - "ε", - "ζ", - "η", - "θ", - "ι", - "κ", - "λ", - "μ", - "ν", - "ξ", - "ο", - "π", - "ρ", - "ς", - "σ", - "τ", - "υ", - "φ", - "χ", - "ψ", - "ω", - "ϑ", - "ϒ", - "ϖ", - " ", - " ", - " ", - "‌", - "‍", - "‎", - "‏", - "–", - "—", - "‘", - "’", - "‚", - "“", - "”", - "„", - "†", - "‡", - "•", - "…", - "‰", - "′", - "″", - "‹", - "›", - "‾", - "⁄", - "€", - "ℑ", - "℘", - "ℜ", - "™", - "ℵ", - "←", - "↑", - "→", - "↓", - "↔", - "↵", - "⇐", - "⇑", - "⇒", - "⇓", - "⇔", - "∀", - "∂", - "∃", - "∅", - "∇", - "∈", - "∉", - "∋", - "∏", - "∑", - "−", - "∗", - "√", - "∝", - "∞", - "∠", - "∧", - "∨", - "∩", - "∪", - "∫", - "∴", - "∼", - "≅", - "≈", - "≠", - "≡", - "≤", - "≥", - "⊂", - "⊃", - "⊄", - "⊆", - "⊇", - "⊕", - "⊗", - "⊥", - "⋅", - "⌈", - "⌉", - "⌊", - "⌋", - "⟨", - "⟩", - "◊", - "♠", - "♣", - "♥", - "♦", + """, + "&", + "<", + ">", + " ", + "¡", + "¢", + "£", + "¤", + "¥", + "¦", + "§", + "¨", + "©", + "ª", + "«", + "¬", + "­", + "®", + "¯", + "°", + "±", + "²", + "³", + "´", + "µ", + "¶", + "·", + "¸", + "¹", + "º", + "»", + "¼", + "½", + "¾", + "¿", + "À", + "Á", + "Â", + "Ã", + "Ä", + "Å", + "Æ", + "Ç", + "È", + "É", + "Ê", + "Ë", + "Ì", + "Í", + "Î", + "Ï", + "Ð", + "Ñ", + "Ò", + "Ó", + "Ô", + "Õ", + "Ö", + "×", + "Ø", + "Ù", + "Ú", + "Û", + "Ü", + "Ý", + "Þ", + "ß", + "à", + "á", + "â", + "ã", + "ä", + "å", + "æ", + "ç", + "è", + "é", + "ê", + "ë", + "ì", + "í", + "î", + "ï", + "ð", + "ñ", + "ò", + "ó", + "ô", + "õ", + "ö", + "÷", + "ø", + "ù", + "ú", + "û", + "ü", + "ý", + "þ", + "ÿ", + "Œ", + "œ", + "Š", + "š", + "Ÿ", + "ƒ", + "ˆ", + "˜", + "Α", + "Β", + "Γ", + "Δ", + "Ε", + "Ζ", + "Η", + "Θ", + "Ι", + "Κ", + "Λ", + "Μ", + "Ν", + "Ξ", + "Ο", + "Π", + "Ρ", + "Σ", + "Τ", + "Υ", + "Φ", + "Χ", + "Ψ", + "Ω", + "α", + "β", + "γ", + "δ", + "ε", + "ζ", + "η", + "θ", + "ι", + "κ", + "λ", + "μ", + "ν", + "ξ", + "ο", + "π", + "ρ", + "ς", + "σ", + "τ", + "υ", + "φ", + "χ", + "ψ", + "ω", + "ϑ", + "ϒ", + "ϖ", + " ", + " ", + " ", + "‌", + "‍", + "‎", + "‏", + "–", + "—", + "‘", + "’", + "‚", + "“", + "”", + "„", + "†", + "‡", + "•", + "…", + "‰", + "′", + "″", + "‹", + "›", + "‾", + "⁄", + "€", + "ℑ", + "℘", + "ℜ", + "™", + "ℵ", + "←", + "↑", + "→", + "↓", + "↔", + "↵", + "⇐", + "⇑", + "⇒", + "⇓", + "⇔", + "∀", + "∂", + "∃", + "∅", + "∇", + "∈", + "∉", + "∋", + "∏", + "∑", + "−", + "∗", + "√", + "∝", + "∞", + "∠", + "∧", + "∨", + "∩", + "∪", + "∫", + "∴", + "∼", + "≅", + "≈", + "≠", + "≡", + "≤", + "≥", + "⊂", + "⊃", + "⊄", + "⊆", + "⊇", + "⊕", + "⊗", + "⊥", + "⋅", + "⌈", + "⌉", + "⌊", + "⌋", + "⟨", + "⟩", + "◊", + "♠", + "♣", + "♥", + "♦" ); 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( + "Æ", + "&", + "Á", + "Ă", + "Â", + "А", + "𝔄", + "À", + "Α", + "Ā", + "⩓", + "Ą", + "𝔸", + "⁡", + "Å", + "𝒜", + "≔", + "Ã", + "Ä", + "∖", + "⫧", + "⌆", + "Б", + "∵", + "ℬ", + "Β", + "𝔅", + "𝔹", + "˘", + "ℬ", + "≎", + "Ч", + "©", + "Ć", + "⋒", + "ⅅ", + "ℭ", + "Č", + "Ç", + "Ĉ", + "∰", + "Ċ", + "¸", + "·", + "ℭ", + "Χ", + "⊙", + "⊖", + "⊕", + "⊗", + "∲", + "”", + "’", + "∷", + "⩴", + "≡", + "∯", + "∮", + "ℂ", + "∐", + "∳", + "⨯", + "𝒞", + "⋓", + "≍", + "ⅅ", + "⤑", + "Ђ", + "Ѕ", + "Џ", + "‡", + "↡", + "⫤", + "Ď", + "Д", + "∇", + "Δ", + "𝔇", + "´", + "˙", + "˝", + "`", + "˜", + "⋄", + "ⅆ", + "𝔻", + "¨", + "⃜", + "≐", + "∯", + "¨", + "⇓", + "⇐", + "⇔", + "⫤", + "⟸", + "⟺", + "⟹", + "⇒", + "⊨", + "⇑", + "⇕", + "∥", + "↓", + "⤓", + "⇵", + "̑", + "⥐", + "⥞", + "↽", + "⥖", + "⥟", + "⇁", + "⥗", + "⊤", + "↧", + "⇓", + "𝒟", + "Đ", + "Ŋ", + "Ð", + "É", + "Ě", + "Ê", + "Э", + "Ė", + "𝔈", + "È", + "∈", + "Ē", + "◻", + "▫", + "Ę", + "𝔼", + "Ε", + "⩵", + "≂", + "⇌", + "ℰ", + "⩳", + "Η", + "Ë", + "∃", + "ⅇ", + "Ф", + "𝔉", + "◼", + "▪", + "𝔽", + "∀", + "ℱ", + "ℱ", + "Ѓ", + ">", + "Γ", + "Ϝ", + "Ğ", + "Ģ", + "Ĝ", + "Г", + "Ġ", + "𝔊", + "⋙", + "𝔾", + "≥", + "⋛", + "≧", + "⪢", + "≷", + "⩾", + "≳", + "𝒢", + "≫", + "Ъ", + "ˇ", + "^", + "Ĥ", + "ℌ", + "ℋ", + "ℍ", + "─", + "ℋ", + "Ħ", + "≎", + "≏", + "Е", + "IJ", + "Ё", + "Í", + "Î", + "И", + "İ", + "ℑ", + "Ì", + "ℑ", + "Ī", + "ⅈ", + "⇒", + "∬", + "∫", + "⋂", + "⁣", + "⁢", + "Į", + "𝕀", + "Ι", + "ℐ", + "Ĩ", + "І", + "Ï", + "Ĵ", + "Й", + "𝔍", + "𝕁", + "𝒥", + "Ј", + "Є", + "Х", + "Ќ", + "Κ", + "Ķ", + "К", + "𝔎", + "𝕂", + "𝒦", + "Љ", + "<", + "Ĺ", + "Λ", + "⟪", + "ℒ", + "↞", + "Ľ", + "Ļ", + "Л", + "⟨", + "←", + "⇤", + "⇆", + "⌈", + "⟦", + "⥡", + "⇃", + "⥙", + "⌊", + "↔", + "⥎", + "⊣", + "↤", + "⥚", + "⊲", + "⧏", + "⊴", + "⥑", + "⥠", + "↿", + "⥘", + "↼", + "⥒", + "⇐", + "⇔", + "⋚", + "≦", + "≶", + "⪡", + "⩽", + "≲", + "𝔏", + "⋘", + "⇚", + "Ŀ", + "⟵", + "⟷", + "⟶", + "⟸", + "⟺", + "⟹", + "𝕃", + "↙", + "↘", + "ℒ", + "↰", + "Ł", + "≪", + "⤅", + "М", + " ", + "ℳ", + "𝔐", + "∓", + "𝕄", + "ℳ", + "Μ", + "Њ", + "Ń", + "Ň", + "Ņ", + "Н", + "​", + "​", + "​", + "​", + "≫", + "≪", + "
", + "𝔑", + "⁠", + " ", + "ℕ", + "⫬", + "≢", + "≭", + "∦", + "∉", + "≠", + "≂̸", + "∄", + "≯", + "≱", + "≧̸", + "≫̸", + "≹", + "⩾̸", + "≵", + "≎̸", + "≏̸", + "⋪", + "⧏̸", + "⋬", + "≮", + "≰", + "≸", + "≪̸", + "⩽̸", + "≴", + "⪢̸", + "⪡̸", + "⊀", + "⪯̸", + "⋠", + "∌", + "⋫", + "⧐̸", + "⋭", + "⊏̸", + "⋢", + "⊐̸", + "⋣", + "⊂⃒", + "⊈", + "⊁", + "⪰̸", + "⋡", + "≿̸", + "⊃⃒", + "⊉", + "≁", + "≄", + "≇", + "≉", + "∤", + "𝒩", + "Ñ", + "Ν", + "Œ", + "Ó", + "Ô", + "О", + "Ő", + "𝔒", + "Ò", + "Ō", + "Ω", + "Ο", + "𝕆", + "“", + "‘", + "⩔", + "𝒪", + "Ø", + "Õ", + "⨷", + "Ö", + "‾", + "⏞", + "⎴", + "⏜", + "∂", + "П", + "𝔓", + "Φ", + "Π", + "±", + "ℌ", + "ℙ", + "⪻", + "≺", + "⪯", + "≼", + "≾", + "″", + "∏", + "∷", + "∝", + "𝒫", + "Ψ", + """, + "𝔔", + "ℚ", + "𝒬", + "⤐", + "®", + "Ŕ", + "⟫", + "↠", + "⤖", + "Ř", + "Ŗ", + "Р", + "ℜ", + "∋", + "⇋", + "⥯", + "ℜ", + "Ρ", + "⟩", + "→", + "⇥", + "⇄", + "⌉", + "⟧", + "⥝", + "⇂", + "⥕", + "⌋", + "⊢", + "↦", + "⥛", + "⊳", + "⧐", + "⊵", + "⥏", + "⥜", + "↾", + "⥔", + "⇀", + "⥓", + "⇒", + "ℝ", + "⥰", + "⇛", + "ℛ", + "↱", + "⧴", + "Щ", + "Ш", + "Ь", + "Ś", + "⪼", + "Š", + "Ş", + "Ŝ", + "С", + "𝔖", + "↓", + "←", + "→", + "↑", + "Σ", + "∘", + "𝕊", + "√", + "□", + "⊓", + "⊏", + "⊑", + "⊐", + "⊒", + "⊔", + "𝒮", + "⋆", + "⋐", + "⋐", + "⊆", + "≻", + "⪰", + "≽", + "≿", + "∋", + "∑", + "⋑", + "⊃", + "⊇", + "⋑", + "Þ", + "™", + "Ћ", + "Ц", + "	", + "Τ", + "Ť", + "Ţ", + "Т", + "𝔗", + "∴", + "Θ", + "  ", + " ", + "∼", + "≃", + "≅", + "≈", + "𝕋", + "⃛", + "𝒯", + "Ŧ", + "Ú", + "↟", + "⥉", + "Ў", + "Ŭ", + "Û", + "У", + "Ű", + "𝔘", + "Ù", + "Ū", + "_", + "⏟", + "⎵", + "⏝", + "⋃", + "⊎", + "Ų", + "𝕌", + "↑", + "⤒", + "⇅", + "↕", + "⥮", + "⊥", + "↥", + "⇑", + "⇕", + "↖", + "↗", + "ϒ", + "Υ", + "Ů", + "𝒰", + "Ũ", + "Ü", + "⊫", + "⫫", + "В", + "⊩", + "⫦", + "⋁", + "‖", + "‖", + "∣", + "|", + "❘", + "≀", + " ", + "𝔙", + "𝕍", + "𝒱", + "⊪", + "Ŵ", + "⋀", + "𝔚", + "𝕎", + "𝒲", + "𝔛", + "Ξ", + "𝕏", + "𝒳", + "Я", + "Ї", + "Ю", + "Ý", + "Ŷ", + "Ы", + "𝔜", + "𝕐", + "𝒴", + "Ÿ", + "Ж", + "Ź", + "Ž", + "З", + "Ż", + "​", + "Ζ", + "ℨ", + "ℤ", + "𝒵", + "á", + "ă", + "∾", + "∾̳", + "∿", + "â", + "´", + "а", + "æ", + "⁡", + "𝔞", + "à", + "ℵ", + "ℵ", + "α", + "ā", + "⨿", + "&", + "∧", + "⩕", + "⩜", + "⩘", + "⩚", + "∠", + "⦤", + "∠", + "∡", + "⦨", + "⦩", + "⦪", + "⦫", + "⦬", + "⦭", + "⦮", + "⦯", + "∟", + "⊾", + "⦝", + "∢", + "Å", + "⍼", + "ą", + "𝕒", + "≈", + "⩰", + "⩯", + "≊", + "≋", + "'", + "≈", + "≊", + "å", + "𝒶", + "*", + "≈", + "≍", + "ã", + "ä", + "∳", + "⨑", + "⫭", + "≌", + "϶", + "‵", + "∽", + "⋍", + "⊽", + "⌅", + "⌅", + "⎵", + "⎶", + "≌", + "б", + "„", + "∵", + "∵", + "⦰", + "϶", + "ℬ", + "β", + "ℶ", + "≬", + "𝔟", + "⋂", + "◯", + "⋃", + "⨀", + "⨁", + "⨂", + "⨆", + "★", + "▽", + "△", + "⨄", + "⋁", + "⋀", + "⤍", + "⧫", + "▪", + "▴", + "▾", + "◂", + "▸", + "␣", + "▒", + "░", + "▓", + "█", + "=⃥", + "≡⃥", + "⌐", + "𝕓", + "⊥", + "⊥", + "⋈", + "╗", + "╔", + "╖", + "╓", + "═", + "╦", + "╩", + "╤", + "╧", + "╝", + "╚", + "╜", + "╙", + "║", + "╬", + "╣", + "╠", + "╫", + "╢", + "╟", + "⧉", + "╕", + "╒", + "┐", + "┌", + "─", + "╥", + "╨", + "┬", + "┴", + "⊟", + "⊞", + "⊠", + "╛", + "╘", + "┘", + "└", + "│", + "╪", + "╡", + "╞", + "┼", + "┤", + "├", + "‵", + "˘", + "¦", + "𝒷", + "⁏", + "∽", + "⋍", + "\", + "⧅", + "⟈", + "•", + "•", + "≎", + "⪮", + "≏", + "≏", + "ć", + "∩", + "⩄", + "⩉", + "⩋", + "⩇", + "⩀", + "∩︀", + "⁁", + "ˇ", + "⩍", + "č", + "ç", + "ĉ", + "⩌", + "⩐", + "ċ", + "¸", + "⦲", + "¢", + "·", + "𝔠", + "ч", + "✓", + "✓", + "χ", + "○", + "⧃", + "ˆ", + "≗", + "↺", + "↻", + "®", + "Ⓢ", + "⊛", + "⊚", + "⊝", + "≗", + "⨐", + "⫯", + "⧂", + "♣", + "♣", + ":", + "≔", + "≔", + ",", + "@", + "∁", + "∘", + "∁", + "ℂ", + "≅", + "⩭", + "∮", + "𝕔", + "∐", + "©", + "℗", + "↵", + "✗", + "𝒸", + "⫏", + "⫑", + "⫐", + "⫒", + "⋯", + "⤸", + "⤵", + "⋞", + "⋟", + "↶", + "⤽", + "∪", + "⩈", + "⩆", + "⩊", + "⊍", + "⩅", + "∪︀", + "↷", + "⤼", + "⋞", + "⋟", + "⋎", + "⋏", + "¤", + "↶", + "↷", + "⋎", + "⋏", + "∲", + "∱", + "⌭", + "⇓", + "⥥", + "†", + "ℸ", + "↓", + "‐", + "⊣", + "⤏", + "˝", + "ď", + "д", + "ⅆ", + "‡", + "⇊", + "⩷", + "°", + "δ", + "⦱", + "⥿", + "𝔡", + "⇃", + "⇂", + "⋄", + "⋄", + "♦", + "♦", + "¨", + "ϝ", + "⋲", + "÷", + "÷", + "⋇", + "⋇", + "ђ", + "⌞", + "⌍", + "$", + "𝕕", + "˙", + "≐", + "≑", + "∸", + "∔", + "⊡", + "⌆", + "↓", + "⇊", + "⇃", + "⇂", + "⤐", + "⌟", + "⌌", + "𝒹", + "ѕ", + "⧶", + "đ", + "⋱", + "▿", + "▾", + "⇵", + "⥯", + "⦦", + "џ", + "⟿", + "⩷", + "≑", + "é", + "⩮", + "ě", + "≖", + "ê", + "≕", + "э", + "ė", + "ⅇ", + "≒", + "𝔢", + "⪚", + "è", + "⪖", + "⪘", + "⪙", + "⏧", + "ℓ", + "⪕", + "⪗", + "ē", + "∅", + "∅", + "∅", + " ", + " ", + " ", + "ŋ", + " ", + "ę", + "𝕖", + "⋕", + "⧣", + "⩱", + "ε", + "ε", + "ϵ", + "≖", + "≕", + "≂", + "⪖", + "⪕", + "=", + "≟", + "≡", + "⩸", + "⧥", + "≓", + "⥱", + "ℯ", + "≐", + "≂", + "η", + "ð", + "ë", + "€", + "!", + "∃", + "ℰ", + "ⅇ", + "≒", + "ф", + "♀", + "ffi", + "ff", + "ffl", + "𝔣", + "fi", + "fj", + "♭", + "fl", + "▱", + "ƒ", + "𝕗", + "∀", + "⋔", + "⫙", + "⨍", + "½", + "⅓", + "¼", + "⅕", + "⅙", + "⅛", + "⅔", + "⅖", + "¾", + "⅗", + "⅜", + "⅘", + "⅚", + "⅝", + "⅞", + "⁄", + "⌢", + "𝒻", + "≧", + "⪌", + "ǵ", + "γ", + "ϝ", + "⪆", + "ğ", + "ĝ", + "г", + "ġ", + "≥", + "⋛", + "≥", + "≧", + "⩾", + "⩾", + "⪩", + "⪀", + "⪂", + "⪄", + "⋛︀", + "⪔", + "𝔤", + "≫", + "⋙", + "ℷ", + "ѓ", + "≷", + "⪒", + "⪥", + "⪤", + "≩", + "⪊", + "⪊", + "⪈", + "⪈", + "≩", + "⋧", + "𝕘", + "`", + "ℊ", + "≳", + "⪎", + "⪐", + ">", + "⪧", + "⩺", + "⋗", + "⦕", + "⩼", + "⪆", + "⥸", + "⋗", + "⋛", + "⪌", + "≷", + "≳", + "≩︀", + "≩︀", + "⇔", + " ", + "½", + "ℋ", + "ъ", + "↔", + "⥈", + "↭", + "ℏ", + "ĥ", + "♥", + "♥", + "…", + "⊹", + "𝔥", + "⤥", + "⤦", + "⇿", + "∻", + "↩", + "↪", + "𝕙", + "―", + "𝒽", + "ℏ", + "ħ", + "⁃", + "‐", + "í", + "⁣", + "î", + "и", + "е", + "¡", + "⇔", + "𝔦", + "ì", + "ⅈ", + "⨌", + "∭", + "⧜", + "℩", + "ij", + "ī", + "ℑ", + "ℐ", + "ℑ", + "ı", + "⊷", + "Ƶ", + "∈", + "℅", + "∞", + "⧝", + "ı", + "∫", + "⊺", + "ℤ", + "⊺", + "⨗", + "⨼", + "ё", + "į", + "𝕚", + "ι", + "⨼", + "¿", + "𝒾", + "∈", + "⋹", + "⋵", + "⋴", + "⋳", + "∈", + "⁢", + "ĩ", + "і", + "ï", + "ĵ", + "й", + "𝔧", + "ȷ", + "𝕛", + "𝒿", + "ј", + "є", + "κ", + "ϰ", + "ķ", + "к", + "𝔨", + "ĸ", + "х", + "ќ", + "𝕜", + "𝓀", + "⇚", + "⇐", + "⤛", + "⤎", + "≦", + "⪋", + "⥢", + "ĺ", + "⦴", + "ℒ", + "λ", + "⟨", + "⦑", + "⟨", + "⪅", + "«", + "←", + "⇤", + "⤟", + "⤝", + "↩", + "↫", + "⤹", + "⥳", + "↢", + "⪫", + "⤙", + "⪭", + "⪭︀", + "⤌", + "❲", + "{", + "[", + "⦋", + "⦏", + "⦍", + "ľ", + "ļ", + "⌈", + "{", + "л", + "⤶", + "“", + "„", + "⥧", + "⥋", + "↲", + "≤", + "←", + "↢", + "↽", + "↼", + "⇇", + "↔", + "⇆", + "⇋", + "↭", + "⋋", + "⋚", + "≤", + "≦", + "⩽", + "⩽", + "⪨", + "⩿", + "⪁", + "⪃", + "⋚︀", + "⪓", + "⪅", + "⋖", + "⋚", + "⪋", + "≶", + "≲", + "⥼", + "⌊", + "𝔩", + "≶", + "⪑", + "↽", + "↼", + "⥪", + "▄", + "љ", + "≪", + "⇇", + "⌞", + "⥫", + "◺", + "ŀ", + "⎰", + "⎰", + "≨", + "⪉", + "⪉", + "⪇", + "⪇", + "≨", + "⋦", + "⟬", + "⇽", + "⟦", + "⟵", + "⟷", + "⟼", + "⟶", + "↫", + "↬", + "⦅", + "𝕝", + "⨭", + "⨴", + "∗", + "_", + "◊", + "◊", + "⧫", + "(", + "⦓", + "⇆", + "⌟", + "⇋", + "⥭", + "‎", + "⊿", + "‹", + "𝓁", + "↰", + "≲", + "⪍", + "⪏", + "[", + "‘", + "‚", + "ł", + "<", + "⪦", + "⩹", + "⋖", + "⋋", + "⋉", + "⥶", + "⩻", + "⦖", + "◃", + "⊴", + "◂", + "⥊", + "⥦", + "≨︀", + "≨︀", + "∺", + "¯", + "♂", + "✠", + "✠", + "↦", + "↦", + "↧", + "↤", + "↥", + "▮", + "⨩", + "м", + "—", + "∡", + "𝔪", + "℧", + "µ", + "∣", + "*", + "⫰", + "·", + "−", + "⊟", + "∸", + "⨪", + "⫛", + "…", + "∓", + "⊧", + "𝕞", + "∓", + "𝓂", + "∾", + "μ", + "⊸", + "⊸", + "⋙̸", + "≫⃒", + "≫̸", + "⇍", + "⇎", + "⋘̸", + "≪⃒", + "≪̸", + "⇏", + "⊯", + "⊮", + "∇", + "ń", + "∠⃒", + "≉", + "⩰̸", + "≋̸", + "ʼn", + "≉", + "♮", + "♮", + "ℕ", + " ", + "≎̸", + "≏̸", + "⩃", + "ň", + "ņ", + "≇", + "⩭̸", + "⩂", + "н", + "–", + "≠", + "⇗", + "⤤", + "↗", + "↗", + "≐̸", + "≢", + "⤨", + "≂̸", + "∄", + "∄", + "𝔫", + "≧̸", + "≱", + "≱", + "≧̸", + "⩾̸", + "⩾̸", + "≵", + "≯", + "≯", + "⇎", + "↮", + "⫲", + "∋", + "⋼", + "⋺", + "∋", + "њ", + "⇍", + "≦̸", + "↚", + "‥", + "≰", + "↚", + "↮", + "≰", + "≦̸", + "⩽̸", + "⩽̸", + "≮", + "≴", + "≮", + "⋪", + "⋬", + "∤", + "𝕟", + "¬", + "∉", + "⋹̸", + "⋵̸", + "∉", + "⋷", + "⋶", + "∌", + "∌", + "⋾", + "⋽", + "∦", + "∦", + "⫽⃥", + "∂̸", + "⨔", + "⊀", + "⋠", + "⪯̸", + "⊀", + "⪯̸", + "⇏", + "↛", + "⤳̸", + "↝̸", + "↛", + "⋫", + "⋭", + "⊁", + "⋡", + "⪰̸", + "𝓃", + "∤", + "∦", + "≁", + "≄", + "≄", + "∤", + "∦", + "⋢", + "⋣", + "⊄", + "⫅̸", + "⊈", + "⊂⃒", + "⊈", + "⫅̸", + "⊁", + "⪰̸", + "⊅", + "⫆̸", + "⊉", + "⊃⃒", + "⊉", + "⫆̸", + "≹", + "ñ", + "≸", + "⋪", + "⋬", + "⋫", + "⋭", + "ν", + "#", + "№", + " ", + "⊭", + "⤄", + "≍⃒", + "⊬", + "≥⃒", + ">⃒", + "⧞", + "⤂", + "≤⃒", + "<⃒", + "⊴⃒", + "⤃", + "⊵⃒", + "∼⃒", + "⇖", + "⤣", + "↖", + "↖", + "⤧", + "Ⓢ", + "ó", + "⊛", + "⊚", + "ô", + "о", + "⊝", + "ő", + "⨸", + "⊙", + "⦼", + "œ", + "⦿", + "𝔬", + "˛", + "ò", + "⧁", + "⦵", + "Ω", + "∮", + "↺", + "⦾", + "⦻", + "‾", + "⧀", + "ō", + "ω", + "ο", + "⦶", + "⊖", + "𝕠", + "⦷", + "⦹", + "⊕", + "∨", + "↻", + "⩝", + "ℴ", + "ℴ", + "ª", + "º", + "⊶", + "⩖", + "⩗", + "⩛", + "ℴ", + "ø", + "⊘", + "õ", + "⊗", + "⨶", + "ö", + "⌽", + "∥", + "¶", + "∥", + "⫳", + "⫽", + "∂", + "п", + "%", + ".", + "‰", + "⊥", + "‱", + "𝔭", + "φ", + "ϕ", + "ℳ", + "☎", + "π", + "⋔", + "ϖ", + "ℏ", + "ℎ", + "ℏ", + "+", + "⨣", + "⊞", + "⨢", + "∔", + "⨥", + "⩲", + "±", + "⨦", + "⨧", + "±", + "⨕", + "𝕡", + "£", + "≺", + "⪳", + "⪷", + "≼", + "⪯", + "≺", + "⪷", + "≼", + "⪯", + "⪹", + "⪵", + "⋨", + "≾", + "′", + "ℙ", + "⪵", + "⪹", + "⋨", + "∏", + "⌮", + "⌒", + "⌓", + "∝", + "∝", + "≾", + "⊰", + "𝓅", + "ψ", + " ", + "𝔮", + "⨌", + "𝕢", + "⁗", + "𝓆", + "ℍ", + "⨖", + "?", + "≟", + """, + "⇛", + "⇒", + "⤜", + "⤏", + "⥤", + "∽̱", + "ŕ", + "√", + "⦳", + "⟩", + "⦒", + "⦥", + "⟩", + "»", + "→", + "⥵", + "⇥", + "⤠", + "⤳", + "⤞", + "↪", + "↬", + "⥅", + "⥴", + "↣", + "↝", + "⤚", + "∶", + "ℚ", + "⤍", + "❳", + "}", + "]", + "⦌", + "⦎", + "⦐", + "ř", + "ŗ", + "⌉", + "}", + "р", + "⤷", + "⥩", + "”", + "”", + "↳", + "ℜ", + "ℛ", + "ℜ", + "ℝ", + "▭", + "®", + "⥽", + "⌋", + "𝔯", + "⇁", + "⇀", + "⥬", + "ρ", + "ϱ", + "→", + "↣", + "⇁", + "⇀", + "⇄", + "⇌", + "⇉", + "↝", + "⋌", + "˚", + "≓", + "⇄", + "⇌", + "‏", + "⎱", + "⎱", + "⫮", + "⟭", + "⇾", + "⟧", + "⦆", + "𝕣", + "⨮", + "⨵", + ")", + "⦔", + "⨒", + "⇉", + "›", + "𝓇", + "↱", + "]", + "’", + "’", + "⋌", + "⋊", + "▹", + "⊵", + "▸", + "⧎", + "⥨", + "℞", + "ś", + "‚", + "≻", + "⪴", + "⪸", + "š", + "≽", + "⪰", + "ş", + "ŝ", + "⪶", + "⪺", + "⋩", + "⨓", + "≿", + "с", + "⋅", + "⊡", + "⩦", + "⇘", + "⤥", + "↘", + "↘", + "§", + ";", + "⤩", + "∖", + "∖", + "✶", + "𝔰", + "⌢", + "♯", + "щ", + "ш", + "∣", + "∥", + "­", + "σ", + "ς", + "ς", + "∼", + "⩪", + "≃", + "≃", + "⪞", + "⪠", + "⪝", + "⪟", + "≆", + "⨤", + "⥲", + "←", + "∖", + "⨳", + "⧤", + "∣", + "⌣", + "⪪", + "⪬", + "⪬︀", + "ь", + "/", + "⧄", + "⌿", + "𝕤", + "♠", + "♠", + "∥", + "⊓", + "⊓︀", + "⊔", + "⊔︀", + "⊏", + "⊑", + "⊏", + "⊑", + "⊐", + "⊒", + "⊐", + "⊒", + "□", + "□", + "▪", + "▪", + "→", + "𝓈", + "∖", + "⌣", + "⋆", + "☆", + "★", + "ϵ", + "ϕ", + "¯", + "⊂", + "⫅", + "⪽", + "⊆", + "⫃", + "⫁", + "⫋", + "⊊", + "⪿", + "⥹", + "⊂", + "⊆", + "⫅", + "⊊", + "⫋", + "⫇", + "⫕", + "⫓", + "≻", + "⪸", + "≽", + "⪰", + "⪺", + "⪶", + "⋩", + "≿", + "∑", + "♪", + "⊃", + "¹", + "²", + "³", + "⫆", + "⪾", + "⫘", + "⊇", + "⫄", + "⟉", + "⫗", + "⥻", + "⫂", + "⫌", + "⊋", + "⫀", + "⊃", + "⊇", + "⫆", + "⊋", + "⫌", + "⫈", + "⫔", + "⫖", + "⇙", + "⤦", + "↙", + "↙", + "⤪", + "ß", + "⌖", + "τ", + "⎴", + "ť", + "ţ", + "т", + "⃛", + "⌕", + "𝔱", + "∴", + "∴", + "θ", + "ϑ", + "ϑ", + "≈", + "∼", + " ", + "≈", + "∼", + "þ", + "˜", + "×", + "⊠", + "⨱", + "⨰", + "∭", + "⤨", + "⊤", + "⌶", + "⫱", + "𝕥", + "⫚", + "⤩", + "‴", + "™", + "▵", + "▿", + "◃", + "⊴", + "≜", + "▹", + "⊵", + "◬", + "≜", + "⨺", + "⨹", + "⧍", + "⨻", + "⏢", + "𝓉", + "ц", + "ћ", + "ŧ", + "≬", + "↞", + "↠", + "⇑", + "⥣", + "ú", + "↑", + "ў", + "ŭ", + "û", + "у", + "⇅", + "ű", + "⥮", + "⥾", + "𝔲", + "ù", + "↿", + "↾", + "▀", + "⌜", + "⌜", + "⌏", + "◸", + "ū", + "¨", + "ų", + "𝕦", + "↑", + "↕", + "↿", + "↾", + "⊎", + "υ", + "ϒ", + "υ", + "⇈", + "⌝", + "⌝", + "⌎", + "ů", + "◹", + "𝓊", + "⋰", + "ũ", + "▵", + "▴", + "⇈", + "ü", + "⦧", + "⇕", + "⫨", + "⫩", + "⊨", + "⦜", + "ϵ", + "ϰ", + "∅", + "ϕ", + "ϖ", + "∝", + "↕", + "ϱ", + "ς", + "⊊︀", + "⫋︀", + "⊋︀", + "⫌︀", + "ϑ", + "⊲", + "⊳", + "в", + "⊢", + "∨", + "⊻", + "≚", + "⋮", + "|", + "|", + "𝔳", + "⊲", + "⊂⃒", + "⊃⃒", + "𝕧", + "∝", + "⊳", + "𝓋", + "⫋︀", + "⊊︀", + "⫌︀", + "⊋︀", + "⦚", + "ŵ", + "⩟", + "∧", + "≙", + "℘", + "𝔴", + "𝕨", + "℘", + "≀", + "≀", + "𝓌", + "⋂", + "◯", + "⋃", + "▽", + "𝔵", + "⟺", + "⟷", + "ξ", + "⟸", + "⟵", + "⟼", + "⋻", + "⨀", + "𝕩", + "⨁", + "⨂", + "⟹", + "⟶", + "𝓍", + "⨆", + "⨄", + "△", + "⋁", + "⋀", + "ý", + "я", + "ŷ", + "ы", + "¥", + "𝔶", + "ї", + "𝕪", + "𝓎", + "ю", + "ÿ", + "ź", + "ž", + "з", + "ż", + "ℨ", + "ζ", + "𝔷", + "ж", + "⇝", + "𝕫", + "𝓏", + "‍", + "‌", +); + +foreach ($map as $str) { + $de = html_entity_decode($str, ENT_QUOTES | ENT_HTML5, "UTF-8"); + echo "$str => $de ", bin2hex($de), "\n"; +} +?> +--EXPECT-- +Æ => Æ c386 +& => & 26 +Á => à c381 +Ă => Ä‚ c482 + =>  c382 +А => Ð d090 +𝔄 => 𔄠f09d9484 +À => À c380 +Α => Α ce91 +Ā => Ä€ c480 +⩓ => â©“ e2a993 +Ą => Ä„ c484 +𝔸 => 𔸠f09d94b8 +⁡ => â¡ e281a1 +Å => Ã… c385 +𝒜 => 𒜠f09d929c +≔ => ≔ e28994 +à => à c383 +Ä => Ä c384 +∖ => ∖ e28896 +⫧ => ⫧ e2aba7 +⌆ => ⌆ e28c86 +Б => Б d091 +∵ => ∵ e288b5 +ℬ => ℬ e284ac +Β => Î’ ce92 +𝔅 => ð”… f09d9485 +𝔹 => 𔹠f09d94b9 +˘ => ˘ cb98 +ℬ => ℬ e284ac +≎ => ≎ e2898e +Ч => Ч d0a7 +© => © c2a9 +Ć => Ć c486 +⋒ => â‹’ e28b92 +ⅅ => â…… e28585 +ℭ => â„ e284ad +Č => ÄŒ c48c +Ç => Ç c387 +Ĉ => Ĉ c488 +∰ => ∰ e288b0 +Ċ => ÄŠ c48a +¸ => ¸ c2b8 +· => · c2b7 +ℭ => â„ e284ad +Χ => Χ cea7 +⊙ => ⊙ e28a99 +⊖ => ⊖ e28a96 +⊕ => ⊕ e28a95 +⊗ => ⊗ e28a97 +∲ => ∲ e288b2 +” => †e2809d +’ => ’ e28099 +∷ => ∷ e288b7 +⩴ => â©´ e2a9b4 +≡ => ≡ e289a1 +∯ => ∯ e288af +∮ => ∮ e288ae +ℂ => â„‚ e28482 +∐ => ∠e28890 +∳ => ∳ e288b3 +⨯ => ⨯ e2a8af +𝒞 => ð’ž f09d929e +⋓ => â‹“ e28b93 +≍ => ≠e2898d +ⅅ => â…… e28585 +⤑ => ⤑ e2a491 +Ђ => Ђ d082 +Ѕ => Ð… d085 +Џ => Ð d08f +‡ => ‡ e280a1 +↡ => ↡ e286a1 +⫤ => ⫤ e2aba4 +Ď => ÄŽ c48e +Д => Д d094 +∇ => ∇ e28887 +Δ => Δ ce94 +𝔇 => 𔇠f09d9487 +´ => ´ c2b4 +˙ => Ë™ cb99 +˝ => Ë cb9d +` => ` 60 +˜ => Ëœ cb9c +⋄ => â‹„ e28b84 +ⅆ => â…† e28586 +𝔻 => ð”» f09d94bb +¨ => ¨ c2a8 +⃜ => ⃜ e2839c +≐ => ≠e28990 +∯ => ∯ e288af +¨ => ¨ c2a8 +⇓ => ⇓ e28793 +⇐ => ⇠e28790 +⇔ => ⇔ e28794 +⫤ => ⫤ e2aba4 +⟸ => ⟸ e29fb8 +⟺ => ⟺ e29fba +⟹ => ⟹ e29fb9 +⇒ => ⇒ e28792 +⊨ => ⊨ e28aa8 +⇑ => ⇑ e28791 +⇕ => ⇕ e28795 +∥ => ∥ e288a5 +↓ => ↓ e28693 +⤓ => ⤓ e2a493 +⇵ => ⇵ e287b5 +̑ => Ì‘ cc91 +⥐ => ⥠e2a590 +⥞ => ⥞ e2a59e +↽ => ↽ e286bd +⥖ => ⥖ e2a596 +⥟ => ⥟ e2a59f +⇁ => ⇠e28781 +⥗ => ⥗ e2a597 +⊤ => ⊤ e28aa4 +↧ => ↧ e286a7 +⇓ => ⇓ e28793 +𝒟 => ð’Ÿ f09d929f +Đ => Ä c490 +Ŋ => ÅŠ c58a +Ð => à c390 +É => É c389 +Ě => Äš c49a +Ê => Ê c38a +Э => Ð d0ad +Ė => Ä– c496 +𝔈 => 𔈠f09d9488 +È => È c388 +∈ => ∈ e28888 +Ē => Ä’ c492 +◻ => â—» e297bb +▫ => â–« e296ab +Ę => Ę c498 +𝔼 => 𔼠f09d94bc +Ε => Ε ce95 +⩵ => ⩵ e2a9b5 +≂ => ≂ e28982 +⇌ => ⇌ e2878c +ℰ => â„° e284b0 +⩳ => ⩳ e2a9b3 +Η => Η ce97 +Ë => Ë c38b +∃ => ∃ e28883 +ⅇ => â…‡ e28587 +Ф => Ф d0a4 +𝔉 => 𔉠f09d9489 +◼ => â—¼ e297bc +▪ => â–ª e296aa +𝔽 => 𔽠f09d94bd +∀ => ∀ e28880 +ℱ => ℱ e284b1 +ℱ => ℱ e284b1 +Ѓ => Ѓ d083 +> => > 3e +Γ => Γ ce93 +Ϝ => Ïœ cf9c +Ğ => Äž c49e +Ģ => Ä¢ c4a2 +Ĝ => Äœ c49c +Г => Г d093 +Ġ => Ä c4a0 +𝔊 => 𔊠f09d948a +⋙ => â‹™ e28b99 +𝔾 => 𔾠f09d94be +≥ => ≥ e289a5 +⋛ => â‹› e28b9b +≧ => ≧ e289a7 +⪢ => ⪢ e2aaa2 +≷ => ≷ e289b7 +⩾ => ⩾ e2a9be +≳ => ≳ e289b3 +𝒢 => ð’¢ f09d92a2 +≫ => ≫ e289ab +Ъ => Ъ d0aa +ˇ => ˇ cb87 +^ => ^ 5e +Ĥ => Ĥ c4a4 +ℌ => â„Œ e2848c +ℋ => â„‹ e2848b +ℍ => â„ e2848d +─ => ─ e29480 +ℋ => â„‹ e2848b +Ħ => Ħ c4a6 +≎ => ≎ e2898e +≏ => ≠e2898f +Е => Е d095 +IJ => IJ c4b2 +Ё => Ð d081 +Í => à c38d +Î => ÃŽ c38e +И => И d098 +İ => Ä° c4b0 +ℑ => â„‘ e28491 +Ì => ÃŒ c38c +ℑ => â„‘ e28491 +Ī => Ī c4aa +ⅈ => â…ˆ e28588 +⇒ => ⇒ e28792 +∬ => ∬ e288ac +∫ => ∫ e288ab +⋂ => â‹‚ e28b82 +⁣ => ⣠e281a3 +⁢ => ⢠e281a2 +Į => Ä® c4ae +𝕀 => ð•€ f09d9580 +Ι => Ι ce99 +ℐ => â„ e28490 +Ĩ => Ĩ c4a8 +І => І d086 +Ï => à c38f +Ĵ => Ä´ c4b4 +Й => Й d099 +𝔍 => ð” f09d948d +𝕁 => ð• f09d9581 +𝒥 => ð’¥ f09d92a5 +Ј => Ј d088 +Є => Є d084 +Х => Ð¥ d0a5 +Ќ => ÐŒ d08c +Κ => Κ ce9a +Ķ => Ķ c4b6 +К => К d09a +𝔎 => 𔎠f09d948e +𝕂 => ð•‚ f09d9582 +𝒦 => ð’¦ f09d92a6 +Љ => Љ d089 +< => < 3c +Ĺ => Ĺ c4b9 +Λ => Λ ce9b +⟪ => ⟪ e29faa +ℒ => â„’ e28492 +↞ => ↞ e2869e +Ľ => Ľ c4bd +Ļ => Ä» c4bb +Л => Л d09b +⟨ => ⟨ e29fa8 +← => ↠e28690 +⇤ => ⇤ e287a4 +⇆ => ⇆ e28786 +⌈ => ⌈ e28c88 +⟦ => ⟦ e29fa6 +⥡ => ⥡ e2a5a1 +⇃ => ⇃ e28783 +⥙ => ⥙ e2a599 +⌊ => ⌊ e28c8a +↔ => ↔ e28694 +⥎ => ⥎ e2a58e +⊣ => ⊣ e28aa3 +↤ => ↤ e286a4 +⥚ => ⥚ e2a59a +⊲ => ⊲ e28ab2 +⧏ => ⧠e2a78f +⊴ => ⊴ e28ab4 +⥑ => ⥑ e2a591 +⥠ => ⥠e2a5a0 +↿ => ↿ e286bf +⥘ => ⥘ e2a598 +↼ => ↼ e286bc +⥒ => ⥒ e2a592 +⇐ => ⇠e28790 +⇔ => ⇔ e28794 +⋚ => â‹š e28b9a +≦ => ≦ e289a6 +≶ => ≶ e289b6 +⪡ => ⪡ e2aaa1 +⩽ => ⩽ e2a9bd +≲ => ≲ e289b2 +𝔏 => ð” f09d948f +⋘ => ⋘ e28b98 +⇚ => ⇚ e2879a +Ŀ => Ä¿ c4bf +⟵ => ⟵ e29fb5 +⟷ => ⟷ e29fb7 +⟶ => ⟶ e29fb6 +⟸ => ⟸ e29fb8 +⟺ => ⟺ e29fba +⟹ => ⟹ e29fb9 +𝕃 => 𕃠f09d9583 +↙ => ↙ e28699 +↘ => ↘ e28698 +ℒ => â„’ e28492 +↰ => ↰ e286b0 +Ł => Å c581 +≪ => ≪ e289aa +⤅ => ⤅ e2a485 +М => Ðœ d09c +  => ⟠e2819f +ℳ => ℳ e284b3 +𝔐 => ð” f09d9490 +∓ => ∓ e28893 +𝕄 => ð•„ f09d9584 +ℳ => ℳ e284b3 +Μ => Îœ ce9c +Њ => Њ d08a +Ń => Ń c583 +Ň => Ň c587 +Ņ => Å… c585 +Н => Ð d09d +​ => ​ e2808b +​ => ​ e2808b +​ => ​ e2808b +​ => ​ e2808b +≫ => ≫ e289ab +≪ => ≪ e289aa +
 => + 0a +𝔑 => 𔑠f09d9491 +⁠ => â e281a0 +  =>  c2a0 +ℕ => â„• e28495 +⫬ => ⫬ e2abac +≢ => ≢ e289a2 +≭ => ≠e289ad +∦ => ∦ e288a6 +∉ => ∉ e28889 +≠ => ≠e289a0 +≂̸ => ≂̸ e28982ccb8 +∄ => ∄ e28884 +≯ => ≯ e289af +≱ => ≱ e289b1 +≧̸ => ≧̸ e289a7ccb8 +≫̸ => ≫̸ e289abccb8 +≹ => ≹ e289b9 +⩾̸ => ⩾̸ e2a9beccb8 +≵ => ≵ e289b5 +≎̸ => ≎̸ e2898eccb8 +≏̸ => â‰Ì¸ e2898fccb8 +⋪ => ⋪ e28baa +⧏̸ => â§Ì¸ e2a78fccb8 +⋬ => ⋬ e28bac +≮ => ≮ e289ae +≰ => ≰ e289b0 +≸ => ≸ e289b8 +≪̸ => ≪̸ e289aaccb8 +⩽̸ => ⩽̸ e2a9bdccb8 +≴ => ≴ e289b4 +⪢̸ => ⪢̸ e2aaa2ccb8 +⪡̸ => ⪡̸ e2aaa1ccb8 +⊀ => ⊀ e28a80 +⪯̸ => ⪯̸ e2aaafccb8 +⋠ => â‹ e28ba0 +∌ => ∌ e2888c +⋫ => â‹« e28bab +⧐̸ => â§Ì¸ e2a790ccb8 +⋭ => â‹ e28bad +⊏̸ => âŠÌ¸ e28a8fccb8 +⋢ => â‹¢ e28ba2 +⊐̸ => âŠÌ¸ e28a90ccb8 +⋣ => â‹£ e28ba3 +⊂⃒ => ⊂⃒ e28a82e28392 +⊈ => ⊈ e28a88 +⊁ => ⊠e28a81 +⪰̸ => ⪰̸ e2aab0ccb8 +⋡ => â‹¡ e28ba1 +≿̸ => ≿̸ e289bfccb8 +⊃⃒ => ⊃⃒ e28a83e28392 +⊉ => ⊉ e28a89 +≁ => ≠e28981 +≄ => ≄ e28984 +≇ => ≇ e28987 +≉ => ≉ e28989 +∤ => ∤ e288a4 +𝒩 => ð’© f09d92a9 +Ñ => Ñ c391 +Ν => Î ce9d +Œ => Å’ c592 +Ó => Ó c393 +Ô => Ô c394 +О => О d09e +Ő => Å c590 +𝔒 => ð”’ f09d9492 +Ò => Ã’ c392 +Ō => ÅŒ c58c +Ω => Ω cea9 +Ο => Ο ce9f +𝕆 => 𕆠f09d9586 +“ => “ e2809c +‘ => ‘ e28098 +⩔ => â©” e2a994 +𝒪 => ð’ª f09d92aa +Ø => Ø c398 +Õ => Õ c395 +⨷ => ⨷ e2a8b7 +Ö => Ö c396 +‾ => ‾ e280be +⏞ => âž e28f9e +⎴ => ⎴ e28eb4 +⏜ => ✠e28f9c +∂ => ∂ e28882 +П => П d09f +𝔓 => 𔓠f09d9493 +Φ => Φ cea6 +Π => Î cea0 +± => ± c2b1 +ℌ => â„Œ e2848c +ℙ => â„™ e28499 +⪻ => ⪻ e2aabb +≺ => ≺ e289ba +⪯ => ⪯ e2aaaf +≼ => ≼ e289bc +≾ => ≾ e289be +″ => ″ e280b3 +∏ => ∠e2888f +∷ => ∷ e288b7 +∝ => ∠e2889d +𝒫 => ð’« f09d92ab +Ψ => Ψ cea8 +" => " 22 +𝔔 => ð”” f09d9494 +ℚ => â„š e2849a +𝒬 => ð’¬ f09d92ac +⤐ => ⤠e2a490 +® => ® c2ae +Ŕ => Å” c594 +⟫ => ⟫ e29fab +↠ => ↠e286a0 +⤖ => ⤖ e2a496 +Ř => Ř c598 +Ŗ => Å– c596 +Р => Ð d0a0 +ℜ => â„œ e2849c +∋ => ∋ e2888b +⇋ => ⇋ e2878b +⥯ => ⥯ e2a5af +ℜ => â„œ e2849c +Ρ => Ρ cea1 +⟩ => ⟩ e29fa9 +→ => → e28692 +⇥ => ⇥ e287a5 +⇄ => ⇄ e28784 +⌉ => ⌉ e28c89 +⟧ => ⟧ e29fa7 +⥝ => ⥠e2a59d +⇂ => ⇂ e28782 +⥕ => ⥕ e2a595 +⌋ => ⌋ e28c8b +⊢ => ⊢ e28aa2 +↦ => ↦ e286a6 +⥛ => ⥛ e2a59b +⊳ => ⊳ e28ab3 +⧐ => ⧠e2a790 +⊵ => ⊵ e28ab5 +⥏ => ⥠e2a58f +⥜ => ⥜ e2a59c +↾ => ↾ e286be +⥔ => ⥔ e2a594 +⇀ => ⇀ e28780 +⥓ => ⥓ e2a593 +⇒ => ⇒ e28792 +ℝ => â„ e2849d +⥰ => ⥰ e2a5b0 +⇛ => ⇛ e2879b +ℛ => â„› e2849b +↱ => ↱ e286b1 +⧴ => ⧴ e2a7b4 +Щ => Щ d0a9 +Ш => Ш d0a8 +Ь => Ь d0ac +Ś => Åš c59a +⪼ => ⪼ e2aabc +Š => Å c5a0 +Ş => Åž c59e +Ŝ => Åœ c59c +С => С d0a1 +𝔖 => ð”– f09d9496 +↓ => ↓ e28693 +← => ↠e28690 +→ => → e28692 +↑ => ↑ e28691 +Σ => Σ cea3 +∘ => ∘ e28898 +𝕊 => ð•Š f09d958a +√ => √ e2889a +□ => â–¡ e296a1 +⊓ => ⊓ e28a93 +⊏ => ⊠e28a8f +⊑ => ⊑ e28a91 +⊐ => ⊠e28a90 +⊒ => ⊒ e28a92 +⊔ => ⊔ e28a94 +𝒮 => ð’® f09d92ae +⋆ => ⋆ e28b86 +⋐ => â‹ e28b90 +⋐ => â‹ e28b90 +⊆ => ⊆ e28a86 +≻ => ≻ e289bb +⪰ => ⪰ e2aab0 +≽ => ≽ e289bd +≿ => ≿ e289bf +∋ => ∋ e2888b +∑ => ∑ e28891 +⋑ => â‹‘ e28b91 +⊃ => ⊃ e28a83 +⊇ => ⊇ e28a87 +⋑ => â‹‘ e28b91 +Þ => Þ c39e +™ => â„¢ e284a2 +Ћ => Ћ d08b +Ц => Ц d0a6 +	 => 09 +Τ => Τ cea4 +Ť => Ť c5a4 +Ţ => Å¢ c5a2 +Т => Т d0a2 +𝔗 => ð”— f09d9497 +∴ => ∴ e288b4 +Θ => Θ ce98 +   => âŸâ€Š e2819fe2808a +  =>   e28089 +∼ => ∼ e288bc +≃ => ≃ e28983 +≅ => ≅ e28985 +≈ => ≈ e28988 +𝕋 => ð•‹ f09d958b +⃛ => ⃛ e2839b +𝒯 => ð’¯ f09d92af +Ŧ => Ŧ c5a6 +Ú => Ú c39a +↟ => ↟ e2869f +⥉ => ⥉ e2a589 +Ў => ÐŽ d08e +Ŭ => Ŭ c5ac +Û => Û c39b +У => У d0a3 +Ű => Å° c5b0 +𝔘 => 𔘠f09d9498 +Ù => Ù c399 +Ū => Ū c5aa +_ => _ 5f +⏟ => ⟠e28f9f +⎵ => ⎵ e28eb5 +⏝ => â e28f9d +⋃ => ⋃ e28b83 +⊎ => ⊎ e28a8e +Ų => Ų c5b2 +𝕌 => 𕌠f09d958c +↑ => ↑ e28691 +⤒ => ⤒ e2a492 +⇅ => ⇅ e28785 +↕ => ↕ e28695 +⥮ => ⥮ e2a5ae +⊥ => ⊥ e28aa5 +↥ => ↥ e286a5 +⇑ => ⇑ e28791 +⇕ => ⇕ e28795 +↖ => ↖ e28696 +↗ => ↗ e28697 +ϒ => Ï’ cf92 +Υ => Î¥ cea5 +Ů => Å® c5ae +𝒰 => ð’° f09d92b0 +Ũ => Ũ c5a8 +Ü => Ãœ c39c +⊫ => ⊫ e28aab +⫫ => â«« e2abab +В => Ð’ d092 +⊩ => ⊩ e28aa9 +⫦ => ⫦ e2aba6 +⋁ => â‹ e28b81 +‖ => ‖ e28096 +‖ => ‖ e28096 +∣ => ∣ e288a3 +| => | 7c +❘ => ☠e29d98 +≀ => ≀ e28980 +  =>   e2808a +𝔙 => ð”™ f09d9499 +𝕍 => ð• f09d958d +𝒱 => ð’± f09d92b1 +⊪ => ⊪ e28aaa +Ŵ => Å´ c5b4 +⋀ => â‹€ e28b80 +𝔚 => 𔚠f09d949a +𝕎 => ð•Ž f09d958e +𝒲 => ð’² f09d92b2 +𝔛 => ð”› f09d949b +Ξ => Ξ ce9e +𝕏 => ð• f09d958f +𝒳 => ð’³ f09d92b3 +Я => Я d0af +Ї => Ї d087 +Ю => Ю d0ae +Ý => à c39d +Ŷ => Ŷ c5b6 +Ы => Ы d0ab +𝔜 => 𔜠f09d949c +𝕐 => ð• f09d9590 +𝒴 => ð’´ f09d92b4 +Ÿ => Ÿ c5b8 +Ж => Ж d096 +Ź => Ź c5b9 +Ž => Ž c5bd +З => З d097 +Ż => Å» c5bb +​ => ​ e2808b +Ζ => Ζ ce96 +ℨ => ℨ e284a8 +ℤ => ℤ e284a4 +𝒵 => ð’µ f09d92b5 +á => á c3a1 +ă => ă c483 +∾ => ∾ e288be +∾̳ => ∾̳ e288beccb3 +∿ => ∿ e288bf +â => â c3a2 +´ => ´ c2b4 +а => а d0b0 +æ => æ c3a6 +⁡ => â¡ e281a1 +𝔞 => 𔞠f09d949e +à => à c3a0 +ℵ => ℵ e284b5 +ℵ => ℵ e284b5 +α => α ceb1 +ā => Ä c481 +⨿ => ⨿ e2a8bf +& => & 26 +∧ => ∧ e288a7 +⩕ => â©• e2a995 +⩜ => â©œ e2a99c +⩘ => ⩘ e2a998 +⩚ => â©š e2a99a +∠ => ∠e288a0 +⦤ => ⦤ e2a6a4 +∠ => ∠e288a0 +∡ => ∡ e288a1 +⦨ => ⦨ e2a6a8 +⦩ => ⦩ e2a6a9 +⦪ => ⦪ e2a6aa +⦫ => ⦫ e2a6ab +⦬ => ⦬ e2a6ac +⦭ => ⦠e2a6ad +⦮ => ⦮ e2a6ae +⦯ => ⦯ e2a6af +∟ => ∟ e2889f +⊾ => ⊾ e28abe +⦝ => ⦠e2a69d +∢ => ∢ e288a2 +Å => Ã… c385 +⍼ => â¼ e28dbc +ą => Ä… c485 +𝕒 => ð•’ f09d9592 +≈ => ≈ e28988 +⩰ => â©° e2a9b0 +⩯ => ⩯ e2a9af +≊ => ≊ e2898a +≋ => ≋ e2898b +' => ' 27 +≈ => ≈ e28988 +≊ => ≊ e2898a +å => Ã¥ c3a5 +𝒶 => ð’¶ f09d92b6 +* => * 2a +≈ => ≈ e28988 +≍ => ≠e2898d +ã => ã c3a3 +ä => ä c3a4 +∳ => ∳ e288b3 +⨑ => ⨑ e2a891 +⫭ => â« e2abad +≌ => ≌ e2898c +϶ => ϶ cfb6 +‵ => ‵ e280b5 +∽ => ∽ e288bd +⋍ => â‹ e28b8d +⊽ => ⊽ e28abd +⌅ => ⌅ e28c85 +⌅ => ⌅ e28c85 +⎵ => ⎵ e28eb5 +⎶ => ⎶ e28eb6 +≌ => ≌ e2898c +б => б d0b1 +„ => „ e2809e +∵ => ∵ e288b5 +∵ => ∵ e288b5 +⦰ => ⦰ e2a6b0 +϶ => ϶ cfb6 +ℬ => ℬ e284ac +β => β ceb2 +ℶ => ℶ e284b6 +≬ => ≬ e289ac +𝔟 => 𔟠f09d949f +⋂ => â‹‚ e28b82 +◯ => â—¯ e297af +⋃ => ⋃ e28b83 +⨀ => ⨀ e2a880 +⨁ => ⨠e2a881 +⨂ => ⨂ e2a882 +⨆ => ⨆ e2a886 +★ => ★ e29885 +▽ => â–½ e296bd +△ => â–³ e296b3 +⨄ => ⨄ e2a884 +⋁ => â‹ e28b81 +⋀ => â‹€ e28b80 +⤍ => ⤠e2a48d +⧫ => ⧫ e2a7ab +▪ => â–ª e296aa +▴ => â–´ e296b4 +▾ => â–¾ e296be +◂ => â—‚ e29782 +▸ => â–¸ e296b8 +␣ => ⣠e290a3 +▒ => â–’ e29692 +░ => â–‘ e29691 +▓ => â–“ e29693 +█ => â–ˆ e29688 +=⃥ => =⃥ 3de283a5 +≡⃥ => ≡⃥ e289a1e283a5 +⌐ => ⌠e28c90 +𝕓 => ð•“ f09d9593 +⊥ => ⊥ e28aa5 +⊥ => ⊥ e28aa5 +⋈ => ⋈ e28b88 +╗ => â•— e29597 +╔ => â•” e29594 +╖ => â•– e29596 +╓ => â•“ e29593 +═ => â• e29590 +╦ => ╦ e295a6 +╩ => â•© e295a9 +╤ => ╤ e295a4 +╧ => ╧ e295a7 +╝ => â• e2959d +╚ => â•š e2959a +╜ => â•œ e2959c +╙ => â•™ e29599 +║ => â•‘ e29591 +╬ => ╬ e295ac +╣ => â•£ e295a3 +╠ => â• e295a0 +╫ => â•« e295ab +╢ => â•¢ e295a2 +╟ => â•Ÿ e2959f +⧉ => ⧉ e2a789 +╕ => â•• e29595 +╒ => â•’ e29592 +┐ => â” e29490 +┌ => ┌ e2948c +─ => ─ e29480 +╥ => â•¥ e295a5 +╨ => ╨ e295a8 +┬ => ┬ e294ac +┴ => â”´ e294b4 +⊟ => ⊟ e28a9f +⊞ => ⊞ e28a9e +⊠ => ⊠e28aa0 +╛ => â•› e2959b +╘ => ╘ e29598 +┘ => ┘ e29498 +└ => â”” e29494 +│ => │ e29482 +╪ => ╪ e295aa +╡ => â•¡ e295a1 +╞ => â•ž e2959e +┼ => ┼ e294bc +┤ => ┤ e294a4 +├ => ├ e2949c +‵ => ‵ e280b5 +˘ => ˘ cb98 +¦ => ¦ c2a6 +𝒷 => ð’· f09d92b7 +⁏ => â e2818f +∽ => ∽ e288bd +⋍ => â‹ e28b8d +\ => \ 5c +⧅ => ⧅ e2a785 +⟈ => ⟈ e29f88 +• => • e280a2 +• => • e280a2 +≎ => ≎ e2898e +⪮ => ⪮ e2aaae +≏ => ≠e2898f +≏ => ≠e2898f +ć => ć c487 +∩ => ∩ e288a9 +⩄ => â©„ e2a984 +⩉ => ⩉ e2a989 +⩋ => â©‹ e2a98b +⩇ => ⩇ e2a987 +⩀ => â©€ e2a980 +∩︀ => ∩︀ e288a9efb880 +⁁ => â e28181 +ˇ => ˇ cb87 +⩍ => â© e2a98d +č => Ä c48d +ç => ç c3a7 +ĉ => ĉ c489 +⩌ => â©Œ e2a98c +⩐ => â© e2a990 +ċ => Ä‹ c48b +¸ => ¸ c2b8 +⦲ => ⦲ e2a6b2 +¢ => ¢ c2a2 +· => · c2b7 +𝔠 => ð” f09d94a0 +ч => ч d187 +✓ => ✓ e29c93 +✓ => ✓ e29c93 +χ => χ cf87 +○ => â—‹ e2978b +⧃ => ⧃ e2a783 +ˆ => ˆ cb86 +≗ => ≗ e28997 +↺ => ↺ e286ba +↻ => ↻ e286bb +® => ® c2ae +Ⓢ => Ⓢ e29388 +⊛ => ⊛ e28a9b +⊚ => ⊚ e28a9a +⊝ => ⊠e28a9d +≗ => ≗ e28997 +⨐ => ⨠e2a890 +⫯ => ⫯ e2abaf +⧂ => ⧂ e2a782 +♣ => ♣ e299a3 +♣ => ♣ e299a3 +: => : 3a +≔ => ≔ e28994 +≔ => ≔ e28994 +, => , 2c +@ => @ 40 +∁ => ∠e28881 +∘ => ∘ e28898 +∁ => ∠e28881 +ℂ => â„‚ e28482 +≅ => ≅ e28985 +⩭ => â© e2a9ad +∮ => ∮ e288ae +𝕔 => ð•” f09d9594 +∐ => ∠e28890 +© => © c2a9 +℗ => â„— e28497 +↵ => ↵ e286b5 +✗ => ✗ e29c97 +𝒸 => ð’¸ f09d92b8 +⫏ => â« e2ab8f +⫑ => â«‘ e2ab91 +⫐ => â« e2ab90 +⫒ => â«’ e2ab92 +⋯ => ⋯ e28baf +⤸ => ⤸ e2a4b8 +⤵ => ⤵ e2a4b5 +⋞ => â‹ž e28b9e +⋟ => â‹Ÿ e28b9f +↶ => ↶ e286b6 +⤽ => ⤽ e2a4bd +∪ => ∪ e288aa +⩈ => ⩈ e2a988 +⩆ => ⩆ e2a986 +⩊ => â©Š e2a98a +⊍ => ⊠e28a8d +⩅ => â©… e2a985 +∪︀ => ∪︀ e288aaefb880 +↷ => ↷ e286b7 +⤼ => ⤼ e2a4bc +⋞ => â‹ž e28b9e +⋟ => â‹Ÿ e28b9f +⋎ => â‹Ž e28b8e +⋏ => â‹ e28b8f +¤ => ¤ c2a4 +↶ => ↶ e286b6 +↷ => ↷ e286b7 +⋎ => â‹Ž e28b8e +⋏ => â‹ e28b8f +∲ => ∲ e288b2 +∱ => ∱ e288b1 +⌭ => ⌠e28cad +⇓ => ⇓ e28793 +⥥ => ⥥ e2a5a5 +† => †e280a0 +ℸ => ℸ e284b8 +↓ => ↓ e28693 +‐ => †e28090 +⊣ => ⊣ e28aa3 +⤏ => ⤠e2a48f +˝ => Ë cb9d +ď => Ä c48f +д => д d0b4 +ⅆ => â…† e28586 +‡ => ‡ e280a1 +⇊ => ⇊ e2878a +⩷ => â©· e2a9b7 +° => ° c2b0 +δ => δ ceb4 +⦱ => ⦱ e2a6b1 +⥿ => ⥿ e2a5bf +𝔡 => 𔡠f09d94a1 +⇃ => ⇃ e28783 +⇂ => ⇂ e28782 +⋄ => â‹„ e28b84 +⋄ => â‹„ e28b84 +♦ => ♦ e299a6 +♦ => ♦ e299a6 +¨ => ¨ c2a8 +ϝ => Ï cf9d +⋲ => ⋲ e28bb2 +÷ => ÷ c3b7 +÷ => ÷ c3b7 +⋇ => ⋇ e28b87 +⋇ => ⋇ e28b87 +ђ => Ñ’ d192 +⌞ => ⌞ e28c9e +⌍ => ⌠e28c8d +$ => $ 24 +𝕕 => ð•• f09d9595 +˙ => Ë™ cb99 +≐ => ≠e28990 +≑ => ≑ e28991 +∸ => ∸ e288b8 +∔ => ∔ e28894 +⊡ => ⊡ e28aa1 +⌆ => ⌆ e28c86 +↓ => ↓ e28693 +⇊ => ⇊ e2878a +⇃ => ⇃ e28783 +⇂ => ⇂ e28782 +⤐ => ⤠e2a490 +⌟ => ⌟ e28c9f +⌌ => ⌌ e28c8c +𝒹 => ð’¹ f09d92b9 +ѕ => Ñ• d195 +⧶ => ⧶ e2a7b6 +đ => Ä‘ c491 +⋱ => ⋱ e28bb1 +▿ => â–¿ e296bf +▾ => â–¾ e296be +⇵ => ⇵ e287b5 +⥯ => ⥯ e2a5af +⦦ => ⦦ e2a6a6 +џ => ÑŸ d19f +⟿ => ⟿ e29fbf +⩷ => â©· e2a9b7 +≑ => ≑ e28991 +é => é c3a9 +⩮ => â©® e2a9ae +ě => Ä› c49b +≖ => ≖ e28996 +ê => ê c3aa +≕ => ≕ e28995 +э => Ñ d18d +ė => Ä— c497 +ⅇ => â…‡ e28587 +≒ => ≒ e28992 +𝔢 => 𔢠f09d94a2 +⪚ => ⪚ e2aa9a +è => è c3a8 +⪖ => ⪖ e2aa96 +⪘ => ⪘ e2aa98 +⪙ => ⪙ e2aa99 +⏧ => ⧠e28fa7 +ℓ => â„“ e28493 +⪕ => ⪕ e2aa95 +⪗ => ⪗ e2aa97 +ē => Ä“ c493 +∅ => ∅ e28885 +∅ => ∅ e28885 +∅ => ∅ e28885 +  =>   e28083 +  =>   e28084 +  =>   e28085 +ŋ => Å‹ c58b +  =>   e28082 +ę => Ä™ c499 +𝕖 => ð•– f09d9596 +⋕ => â‹• e28b95 +⧣ => ⧣ e2a7a3 +⩱ => ⩱ e2a9b1 +ε => ε ceb5 +ε => ε ceb5 +ϵ => ϵ cfb5 +≖ => ≖ e28996 +≕ => ≕ e28995 +≂ => ≂ e28982 +⪖ => ⪖ e2aa96 +⪕ => ⪕ e2aa95 += => = 3d +≟ => ≟ e2899f +≡ => ≡ e289a1 +⩸ => ⩸ e2a9b8 +⧥ => ⧥ e2a7a5 +≓ => ≓ e28993 +⥱ => ⥱ e2a5b1 +ℯ => ℯ e284af +≐ => ≠e28990 +≂ => ≂ e28982 +η => η ceb7 +ð => ð c3b0 +ë => ë c3ab +€ => € e282ac +! => ! 21 +∃ => ∃ e28883 +ℰ => â„° e284b0 +ⅇ => â…‡ e28587 +≒ => ≒ e28992 +ф => Ñ„ d184 +♀ => ♀ e29980 +ffi => ffi efac83 +ff => ff efac80 +ffl => ffl efac84 +𝔣 => 𔣠f09d94a3 +fi => ï¬ efac81 +fj => fj 666a +♭ => â™ e299ad +fl => fl efac82 +▱ => â–± e296b1 +ƒ => Æ’ c692 +𝕗 => ð•— f09d9597 +∀ => ∀ e28880 +⋔ => â‹” e28b94 +⫙ => â«™ e2ab99 +⨍ => ⨠e2a88d +½ => ½ c2bd +⅓ => â…“ e28593 +¼ => ¼ c2bc +⅕ => â…• e28595 +⅙ => â…™ e28599 +⅛ => â…› e2859b +⅔ => â…” e28594 +⅖ => â…– e28596 +¾ => ¾ c2be +⅗ => â…— e28597 +⅜ => â…œ e2859c +⅘ => â…˜ e28598 +⅚ => â…š e2859a +⅝ => â… e2859d +⅞ => â…ž e2859e +⁄ => â„ e28184 +⌢ => ⌢ e28ca2 +𝒻 => ð’» f09d92bb +≧ => ≧ e289a7 +⪌ => ⪌ e2aa8c +ǵ => ǵ c7b5 +γ => γ ceb3 +ϝ => Ï cf9d +⪆ => ⪆ e2aa86 +ğ => ÄŸ c49f +ĝ => Ä c49d +г => г d0b3 +ġ => Ä¡ c4a1 +≥ => ≥ e289a5 +⋛ => â‹› e28b9b +≥ => ≥ e289a5 +≧ => ≧ e289a7 +⩾ => ⩾ e2a9be +⩾ => ⩾ e2a9be +⪩ => ⪩ e2aaa9 +⪀ => ⪀ e2aa80 +⪂ => ⪂ e2aa82 +⪄ => ⪄ e2aa84 +⋛︀ => ⋛︀ e28b9befb880 +⪔ => ⪔ e2aa94 +𝔤 => 𔤠f09d94a4 +≫ => ≫ e289ab +⋙ => â‹™ e28b99 +ℷ => â„· e284b7 +ѓ => Ñ“ d193 +≷ => ≷ e289b7 +⪒ => ⪒ e2aa92 +⪥ => ⪥ e2aaa5 +⪤ => ⪤ e2aaa4 +≩ => ≩ e289a9 +⪊ => ⪊ e2aa8a +⪊ => ⪊ e2aa8a +⪈ => ⪈ e2aa88 +⪈ => ⪈ e2aa88 +≩ => ≩ e289a9 +⋧ => ⋧ e28ba7 +𝕘 => 𕘠f09d9598 +` => ` 60 +ℊ => â„Š e2848a +≳ => ≳ e289b3 +⪎ => ⪎ e2aa8e +⪐ => ⪠e2aa90 +> => > 3e +⪧ => ⪧ e2aaa7 +⩺ => ⩺ e2a9ba +⋗ => â‹— e28b97 +⦕ => ⦕ e2a695 +⩼ => ⩼ e2a9bc +⪆ => ⪆ e2aa86 +⥸ => ⥸ e2a5b8 +⋗ => â‹— e28b97 +⋛ => â‹› e28b9b +⪌ => ⪌ e2aa8c +≷ => ≷ e289b7 +≳ => ≳ e289b3 +≩︀ => ≩︀ e289a9efb880 +≩︀ => ≩︀ e289a9efb880 +⇔ => ⇔ e28794 +  =>   e2808a +½ => ½ c2bd +ℋ => â„‹ e2848b +ъ => ÑŠ d18a +↔ => ↔ e28694 +⥈ => ⥈ e2a588 +↭ => ↠e286ad +ℏ => â„ e2848f +ĥ => Ä¥ c4a5 +♥ => ♥ e299a5 +♥ => ♥ e299a5 +… => … e280a6 +⊹ => ⊹ e28ab9 +𝔥 => 𔥠f09d94a5 +⤥ => ⤥ e2a4a5 +⤦ => ⤦ e2a4a6 +⇿ => ⇿ e287bf +∻ => ∻ e288bb +↩ => ↩ e286a9 +↪ => ↪ e286aa +𝕙 => ð•™ f09d9599 +― => ― e28095 +𝒽 => ð’½ f09d92bd +ℏ => â„ e2848f +ħ => ħ c4a7 +⁃ => ⃠e28183 +‐ => †e28090 +í => à c3ad +⁣ => ⣠e281a3 +î => î c3ae +и => и d0b8 +е => е d0b5 +¡ => ¡ c2a1 +⇔ => ⇔ e28794 +𝔦 => 𔦠f09d94a6 +ì => ì c3ac +ⅈ => â…ˆ e28588 +⨌ => ⨌ e2a88c +∭ => ∠e288ad +⧜ => ⧜ e2a79c +℩ => â„© e284a9 +ij => ij c4b3 +ī => Ä« c4ab +ℑ => â„‘ e28491 +ℐ => â„ e28490 +ℑ => â„‘ e28491 +ı => ı c4b1 +⊷ => ⊷ e28ab7 +Ƶ => Ƶ c6b5 +∈ => ∈ e28888 +℅ => â„… e28485 +∞ => ∞ e2889e +⧝ => ⧠e2a79d +ı => ı c4b1 +∫ => ∫ e288ab +⊺ => ⊺ e28aba +ℤ => ℤ e284a4 +⊺ => ⊺ e28aba +⨗ => ⨗ e2a897 +⨼ => ⨼ e2a8bc +ё => Ñ‘ d191 +į => į c4af +𝕚 => ð•š f09d959a +ι => ι ceb9 +⨼ => ⨼ e2a8bc +¿ => ¿ c2bf +𝒾 => ð’¾ f09d92be +∈ => ∈ e28888 +⋹ => ⋹ e28bb9 +⋵ => ⋵ e28bb5 +⋴ => â‹´ e28bb4 +⋳ => ⋳ e28bb3 +∈ => ∈ e28888 +⁢ => ⢠e281a2 +ĩ => Ä© c4a9 +і => Ñ– d196 +ï => ï c3af +ĵ => ĵ c4b5 +й => й d0b9 +𝔧 => 𔧠f09d94a7 +ȷ => È· c8b7 +𝕛 => ð•› f09d959b +𝒿 => ð’¿ f09d92bf +ј => ј d198 +є => Ñ” d194 +κ => κ ceba +ϰ => Ï° cfb0 +ķ => Ä· c4b7 +к => к d0ba +𝔨 => 𔨠f09d94a8 +ĸ => ĸ c4b8 +х => Ñ… d185 +ќ => Ñœ d19c +𝕜 => 𕜠f09d959c +𝓀 => ð“€ f09d9380 +⇚ => ⇚ e2879a +⇐ => ⇠e28790 +⤛ => ⤛ e2a49b +⤎ => ⤎ e2a48e +≦ => ≦ e289a6 +⪋ => ⪋ e2aa8b +⥢ => ⥢ e2a5a2 +ĺ => ĺ c4ba +⦴ => ⦴ e2a6b4 +ℒ => â„’ e28492 +λ => λ cebb +⟨ => ⟨ e29fa8 +⦑ => ⦑ e2a691 +⟨ => ⟨ e29fa8 +⪅ => ⪅ e2aa85 +« => « c2ab +← => ↠e28690 +⇤ => ⇤ e287a4 +⤟ => ⤟ e2a49f +⤝ => ⤠e2a49d +↩ => ↩ e286a9 +↫ => ↫ e286ab +⤹ => ⤹ e2a4b9 +⥳ => ⥳ e2a5b3 +↢ => ↢ e286a2 +⪫ => ⪫ e2aaab +⤙ => ⤙ e2a499 +⪭ => ⪠e2aaad +⪭︀ => âªï¸€ e2aaadefb880 +⤌ => ⤌ e2a48c +❲ => â² e29db2 +{ => { 7b +[ => [ 5b +⦋ => ⦋ e2a68b +⦏ => ⦠e2a68f +⦍ => ⦠e2a68d +ľ => ľ c4be +ļ => ļ c4bc +⌈ => ⌈ e28c88 +{ => { 7b +л => л d0bb +⤶ => ⤶ e2a4b6 +“ => “ e2809c +„ => „ e2809e +⥧ => ⥧ e2a5a7 +⥋ => ⥋ e2a58b +↲ => ↲ e286b2 +≤ => ≤ e289a4 +← => ↠e28690 +↢ => ↢ e286a2 +↽ => ↽ e286bd +↼ => ↼ e286bc +⇇ => ⇇ e28787 +↔ => ↔ e28694 +⇆ => ⇆ e28786 +⇋ => ⇋ e2878b +↭ => ↠e286ad +⋋ => â‹‹ e28b8b +⋚ => â‹š e28b9a +≤ => ≤ e289a4 +≦ => ≦ e289a6 +⩽ => ⩽ e2a9bd +⩽ => ⩽ e2a9bd +⪨ => ⪨ e2aaa8 +⩿ => â©¿ e2a9bf +⪁ => ⪠e2aa81 +⪃ => ⪃ e2aa83 +⋚︀ => ⋚︀ e28b9aefb880 +⪓ => ⪓ e2aa93 +⪅ => ⪅ e2aa85 +⋖ => â‹– e28b96 +⋚ => â‹š e28b9a +⪋ => ⪋ e2aa8b +≶ => ≶ e289b6 +≲ => ≲ e289b2 +⥼ => ⥼ e2a5bc +⌊ => ⌊ e28c8a +𝔩 => 𔩠f09d94a9 +≶ => ≶ e289b6 +⪑ => ⪑ e2aa91 +↽ => ↽ e286bd +↼ => ↼ e286bc +⥪ => ⥪ e2a5aa +▄ => â–„ e29684 +љ => Ñ™ d199 +≪ => ≪ e289aa +⇇ => ⇇ e28787 +⌞ => ⌞ e28c9e +⥫ => ⥫ e2a5ab +◺ => â—º e297ba +ŀ => Å€ c580 +⎰ => ⎰ e28eb0 +⎰ => ⎰ e28eb0 +≨ => ≨ e289a8 +⪉ => ⪉ e2aa89 +⪉ => ⪉ e2aa89 +⪇ => ⪇ e2aa87 +⪇ => ⪇ e2aa87 +≨ => ≨ e289a8 +⋦ => ⋦ e28ba6 +⟬ => ⟬ e29fac +⇽ => ⇽ e287bd +⟦ => ⟦ e29fa6 +⟵ => ⟵ e29fb5 +⟷ => ⟷ e29fb7 +⟼ => ⟼ e29fbc +⟶ => ⟶ e29fb6 +↫ => ↫ e286ab +↬ => ↬ e286ac +⦅ => ⦅ e2a685 +𝕝 => ð• f09d959d +⨭ => ⨠e2a8ad +⨴ => ⨴ e2a8b4 +∗ => ∗ e28897 +_ => _ 5f +◊ => â—Š e2978a +◊ => â—Š e2978a +⧫ => ⧫ e2a7ab +( => ( 28 +⦓ => ⦓ e2a693 +⇆ => ⇆ e28786 +⌟ => ⌟ e28c9f +⇋ => ⇋ e2878b +⥭ => ⥠e2a5ad +‎ => ‎ e2808e +⊿ => ⊿ e28abf +‹ => ‹ e280b9 +𝓁 => ð“ f09d9381 +↰ => ↰ e286b0 +≲ => ≲ e289b2 +⪍ => ⪠e2aa8d +⪏ => ⪠e2aa8f +[ => [ 5b +‘ => ‘ e28098 +‚ => ‚ e2809a +ł => Å‚ c582 +< => < 3c +⪦ => ⪦ e2aaa6 +⩹ => ⩹ e2a9b9 +⋖ => â‹– e28b96 +⋋ => â‹‹ e28b8b +⋉ => ⋉ e28b89 +⥶ => ⥶ e2a5b6 +⩻ => â©» e2a9bb +⦖ => ⦖ e2a696 +◃ => â—ƒ e29783 +⊴ => ⊴ e28ab4 +◂ => â—‚ e29782 +⥊ => ⥊ e2a58a +⥦ => ⥦ e2a5a6 +≨︀ => ≨︀ e289a8efb880 +≨︀ => ≨︀ e289a8efb880 +∺ => ∺ e288ba +¯ => ¯ c2af +♂ => ♂ e29982 +✠ => ✠e29ca0 +✠ => ✠e29ca0 +↦ => ↦ e286a6 +↦ => ↦ e286a6 +↧ => ↧ e286a7 +↤ => ↤ e286a4 +↥ => ↥ e286a5 +▮ => â–® e296ae +⨩ => ⨩ e2a8a9 +м => м d0bc +— => — e28094 +∡ => ∡ e288a1 +𝔪 => 𔪠f09d94aa +℧ => ℧ e284a7 +µ => µ c2b5 +∣ => ∣ e288a3 +* => * 2a +⫰ => â«° e2abb0 +· => · c2b7 +− => − e28892 +⊟ => ⊟ e28a9f +∸ => ∸ e288b8 +⨪ => ⨪ e2a8aa +⫛ => â«› e2ab9b +… => … e280a6 +∓ => ∓ e28893 +⊧ => ⊧ e28aa7 +𝕞 => ð•ž f09d959e +∓ => ∓ e28893 +𝓂 => ð“‚ f09d9382 +∾ => ∾ e288be +μ => μ cebc +⊸ => ⊸ e28ab8 +⊸ => ⊸ e28ab8 +⋙̸ => ⋙̸ e28b99ccb8 +≫⃒ => ≫⃒ e289abe28392 +≫̸ => ≫̸ e289abccb8 +⇍ => ⇠e2878d +⇎ => ⇎ e2878e +⋘̸ => ⋘̸ e28b98ccb8 +≪⃒ => ≪⃒ e289aae28392 +≪̸ => ≪̸ e289aaccb8 +⇏ => ⇠e2878f +⊯ => ⊯ e28aaf +⊮ => ⊮ e28aae +∇ => ∇ e28887 +ń => Å„ c584 +∠⃒ => ∠⃒ e288a0e28392 +≉ => ≉ e28989 +⩰̸ => ⩰̸ e2a9b0ccb8 +≋̸ => ≋̸ e2898bccb8 +ʼn => ʼn c589 +≉ => ≉ e28989 +♮ => â™® e299ae +♮ => â™® e299ae +ℕ => â„• e28495 + =>  c2a0 +≎̸ => ≎̸ e2898eccb8 +≏̸ => â‰Ì¸ e2898fccb8 +⩃ => ⩃ e2a983 +ň => ň c588 +ņ => ņ c586 +≇ => ≇ e28987 +⩭̸ => â©Ì¸ e2a9adccb8 +⩂ => â©‚ e2a982 +н => н d0bd +– => – e28093 +≠ => ≠e289a0 +⇗ => ⇗ e28797 +⤤ => ⤤ e2a4a4 +↗ => ↗ e28697 +↗ => ↗ e28697 +≐̸ => â‰Ì¸ e28990ccb8 +≢ => ≢ e289a2 +⤨ => ⤨ e2a4a8 +≂̸ => ≂̸ e28982ccb8 +∄ => ∄ e28884 +∄ => ∄ e28884 +𝔫 => 𔫠f09d94ab +≧̸ => ≧̸ e289a7ccb8 +≱ => ≱ e289b1 +≱ => ≱ e289b1 +≧̸ => ≧̸ e289a7ccb8 +⩾̸ => ⩾̸ e2a9beccb8 +⩾̸ => ⩾̸ e2a9beccb8 +≵ => ≵ e289b5 +≯ => ≯ e289af +≯ => ≯ e289af +⇎ => ⇎ e2878e +↮ => ↮ e286ae +⫲ => ⫲ e2abb2 +∋ => ∋ e2888b +⋼ => ⋼ e28bbc +⋺ => ⋺ e28bba +∋ => ∋ e2888b +њ => Ñš d19a +⇍ => ⇠e2878d +≦̸ => ≦̸ e289a6ccb8 +↚ => ↚ e2869a +‥ => ‥ e280a5 +≰ => ≰ e289b0 +↚ => ↚ e2869a +↮ => ↮ e286ae +≰ => ≰ e289b0 +≦̸ => ≦̸ e289a6ccb8 +⩽̸ => ⩽̸ e2a9bdccb8 +⩽̸ => ⩽̸ e2a9bdccb8 +≮ => ≮ e289ae +≴ => ≴ e289b4 +≮ => ≮ e289ae +⋪ => ⋪ e28baa +⋬ => ⋬ e28bac +∤ => ∤ e288a4 +𝕟 => ð•Ÿ f09d959f +¬ => ¬ c2ac +∉ => ∉ e28889 +⋹̸ => ⋹̸ e28bb9ccb8 +⋵̸ => ⋵̸ e28bb5ccb8 +∉ => ∉ e28889 +⋷ => â‹· e28bb7 +⋶ => ⋶ e28bb6 +∌ => ∌ e2888c +∌ => ∌ e2888c +⋾ => ⋾ e28bbe +⋽ => ⋽ e28bbd +∦ => ∦ e288a6 +∦ => ∦ e288a6 +⫽⃥ => ⫽⃥ e2abbde283a5 +∂̸ => ∂̸ e28882ccb8 +⨔ => ⨔ e2a894 +⊀ => ⊀ e28a80 +⋠ => â‹ e28ba0 +⪯̸ => ⪯̸ e2aaafccb8 +⊀ => ⊀ e28a80 +⪯̸ => ⪯̸ e2aaafccb8 +⇏ => ⇠e2878f +↛ => ↛ e2869b +⤳̸ => ⤳̸ e2a4b3ccb8 +↝̸ => â†Ì¸ e2869dccb8 +↛ => ↛ e2869b +⋫ => â‹« e28bab +⋭ => â‹ e28bad +⊁ => ⊠e28a81 +⋡ => â‹¡ e28ba1 +⪰̸ => ⪰̸ e2aab0ccb8 +𝓃 => 𓃠f09d9383 +∤ => ∤ e288a4 +∦ => ∦ e288a6 +≁ => ≠e28981 +≄ => ≄ e28984 +≄ => ≄ e28984 +∤ => ∤ e288a4 +∦ => ∦ e288a6 +⋢ => â‹¢ e28ba2 +⋣ => â‹£ e28ba3 +⊄ => ⊄ e28a84 +⫅̸ => ⫅̸ e2ab85ccb8 +⊈ => ⊈ e28a88 +⊂⃒ => ⊂⃒ e28a82e28392 +⊈ => ⊈ e28a88 +⫅̸ => ⫅̸ e2ab85ccb8 +⊁ => ⊠e28a81 +⪰̸ => ⪰̸ e2aab0ccb8 +⊅ => ⊅ e28a85 +⫆̸ => ⫆̸ e2ab86ccb8 +⊉ => ⊉ e28a89 +⊃⃒ => ⊃⃒ e28a83e28392 +⊉ => ⊉ e28a89 +⫆̸ => ⫆̸ e2ab86ccb8 +≹ => ≹ e289b9 +ñ => ñ c3b1 +≸ => ≸ e289b8 +⋪ => ⋪ e28baa +⋬ => ⋬ e28bac +⋫ => â‹« e28bab +⋭ => â‹ e28bad +ν => ν cebd +# => # 23 +№ => â„– e28496 +  =>   e28087 +⊭ => ⊠e28aad +⤄ => ⤄ e2a484 +≍⃒ => â‰âƒ’ e2898de28392 +⊬ => ⊬ e28aac +≥⃒ => ≥⃒ e289a5e28392 +>⃒ => >⃒ 3ee28392 +⧞ => ⧞ e2a79e +⤂ => ⤂ e2a482 +≤⃒ => ≤⃒ e289a4e28392 +<⃒ => <⃒ 3ce28392 +⊴⃒ => ⊴⃒ e28ab4e28392 +⤃ => ⤃ e2a483 +⊵⃒ => ⊵⃒ e28ab5e28392 +∼⃒ => ∼⃒ e288bce28392 +⇖ => ⇖ e28796 +⤣ => ⤣ e2a4a3 +↖ => ↖ e28696 +↖ => ↖ e28696 +⤧ => ⤧ e2a4a7 +Ⓢ => Ⓢ e29388 +ó => ó c3b3 +⊛ => ⊛ e28a9b +⊚ => ⊚ e28a9a +ô => ô c3b4 +о => о d0be +⊝ => ⊠e28a9d +ő => Å‘ c591 +⨸ => ⨸ e2a8b8 +⊙ => ⊙ e28a99 +⦼ => ⦼ e2a6bc +œ => Å“ c593 +⦿ => ⦿ e2a6bf +𝔬 => 𔬠f09d94ac +˛ => Ë› cb9b +ò => ò c3b2 +⧁ => ⧠e2a781 +⦵ => ⦵ e2a6b5 +Ω => Ω cea9 +∮ => ∮ e288ae +↺ => ↺ e286ba +⦾ => ⦾ e2a6be +⦻ => ⦻ e2a6bb +‾ => ‾ e280be +⧀ => ⧀ e2a780 +ō => Å c58d +ω => ω cf89 +ο => ο cebf +⦶ => ⦶ e2a6b6 +⊖ => ⊖ e28a96 +𝕠 => ð• f09d95a0 +⦷ => ⦷ e2a6b7 +⦹ => ⦹ e2a6b9 +⊕ => ⊕ e28a95 +∨ => ∨ e288a8 +↻ => ↻ e286bb +⩝ => â© e2a99d +ℴ => â„´ e284b4 +ℴ => â„´ e284b4 +ª => ª c2aa +º => º c2ba +⊶ => ⊶ e28ab6 +⩖ => â©– e2a996 +⩗ => â©— e2a997 +⩛ => â©› e2a99b +ℴ => â„´ e284b4 +ø => ø c3b8 +⊘ => ⊘ e28a98 +õ => õ c3b5 +⊗ => ⊗ e28a97 +⨶ => ⨶ e2a8b6 +ö => ö c3b6 +⌽ => ⌽ e28cbd +∥ => ∥ e288a5 +¶ => ¶ c2b6 +∥ => ∥ e288a5 +⫳ => ⫳ e2abb3 +⫽ => ⫽ e2abbd +∂ => ∂ e28882 +п => п d0bf +% => % 25 +. => . 2e +‰ => ‰ e280b0 +⊥ => ⊥ e28aa5 +‱ => ‱ e280b1 +𝔭 => ð” f09d94ad +φ => φ cf86 +ϕ => Ï• cf95 +ℳ => ℳ e284b3 +☎ => ☎ e2988e +π => Ï€ cf80 +⋔ => â‹” e28b94 +ϖ => Ï– cf96 +ℏ => â„ e2848f +ℎ => â„Ž e2848e +ℏ => â„ e2848f ++ => + 2b +⨣ => ⨣ e2a8a3 +⊞ => ⊞ e28a9e +⨢ => ⨢ e2a8a2 +∔ => ∔ e28894 +⨥ => ⨥ e2a8a5 +⩲ => ⩲ e2a9b2 +± => ± c2b1 +⨦ => ⨦ e2a8a6 +⨧ => ⨧ e2a8a7 +± => ± c2b1 +⨕ => ⨕ e2a895 +𝕡 => ð•¡ f09d95a1 +£ => £ c2a3 +≺ => ≺ e289ba +⪳ => ⪳ e2aab3 +⪷ => ⪷ e2aab7 +≼ => ≼ e289bc +⪯ => ⪯ e2aaaf +≺ => ≺ e289ba +⪷ => ⪷ e2aab7 +≼ => ≼ e289bc +⪯ => ⪯ e2aaaf +⪹ => ⪹ e2aab9 +⪵ => ⪵ e2aab5 +⋨ => ⋨ e28ba8 +≾ => ≾ e289be +′ => ′ e280b2 +ℙ => â„™ e28499 +⪵ => ⪵ e2aab5 +⪹ => ⪹ e2aab9 +⋨ => ⋨ e28ba8 +∏ => ∠e2888f +⌮ => ⌮ e28cae +⌒ => ⌒ e28c92 +⌓ => ⌓ e28c93 +∝ => ∠e2889d +∝ => ∠e2889d +≾ => ≾ e289be +⊰ => ⊰ e28ab0 +𝓅 => ð“… f09d9385 +ψ => ψ cf88 +  =>   e28088 +𝔮 => ð”® f09d94ae +⨌ => ⨌ e2a88c +𝕢 => ð•¢ f09d95a2 +⁗ => â— e28197 +𝓆 => 𓆠f09d9386 +ℍ => â„ e2848d +⨖ => ⨖ e2a896 +? => ? 3f +≟ => ≟ e2899f +" => " 22 +⇛ => ⇛ e2879b +⇒ => ⇒ e28792 +⤜ => ⤜ e2a49c +⤏ => ⤠e2a48f +⥤ => ⥤ e2a5a4 +∽̱ => ∽̱ e288bdccb1 +ŕ => Å• c595 +√ => √ e2889a +⦳ => ⦳ e2a6b3 +⟩ => ⟩ e29fa9 +⦒ => ⦒ e2a692 +⦥ => ⦥ e2a6a5 +⟩ => ⟩ e29fa9 +» => » c2bb +→ => → e28692 +⥵ => ⥵ e2a5b5 +⇥ => ⇥ e287a5 +⤠ => ⤠e2a4a0 +⤳ => ⤳ e2a4b3 +⤞ => ⤞ e2a49e +↪ => ↪ e286aa +↬ => ↬ e286ac +⥅ => ⥅ e2a585 +⥴ => ⥴ e2a5b4 +↣ => ↣ e286a3 +↝ => ↠e2869d +⤚ => ⤚ e2a49a +∶ => ∶ e288b6 +ℚ => â„š e2849a +⤍ => ⤠e2a48d +❳ => â³ e29db3 +} => } 7d +] => ] 5d +⦌ => ⦌ e2a68c +⦎ => ⦎ e2a68e +⦐ => ⦠e2a690 +ř => Å™ c599 +ŗ => Å— c597 +⌉ => ⌉ e28c89 +} => } 7d +р => Ñ€ d180 +⤷ => ⤷ e2a4b7 +⥩ => ⥩ e2a5a9 +” => †e2809d +” => †e2809d +↳ => ↳ e286b3 +ℜ => â„œ e2849c +ℛ => â„› e2849b +ℜ => â„œ e2849c +ℝ => â„ e2849d +▭ => â– e296ad +® => ® c2ae +⥽ => ⥽ e2a5bd +⌋ => ⌋ e28c8b +𝔯 => 𔯠f09d94af +⇁ => ⇠e28781 +⇀ => ⇀ e28780 +⥬ => ⥬ e2a5ac +ρ => Ï cf81 +ϱ => ϱ cfb1 +→ => → e28692 +↣ => ↣ e286a3 +⇁ => ⇠e28781 +⇀ => ⇀ e28780 +⇄ => ⇄ e28784 +⇌ => ⇌ e2878c +⇉ => ⇉ e28789 +↝ => ↠e2869d +⋌ => â‹Œ e28b8c +˚ => Ëš cb9a +≓ => ≓ e28993 +⇄ => ⇄ e28784 +⇌ => ⇌ e2878c +‏ => †e2808f +⎱ => ⎱ e28eb1 +⎱ => ⎱ e28eb1 +⫮ => â«® e2abae +⟭ => ⟠e29fad +⇾ => ⇾ e287be +⟧ => ⟧ e29fa7 +⦆ => ⦆ e2a686 +𝕣 => ð•£ f09d95a3 +⨮ => ⨮ e2a8ae +⨵ => ⨵ e2a8b5 +) => ) 29 +⦔ => ⦔ e2a694 +⨒ => ⨒ e2a892 +⇉ => ⇉ e28789 +› => › e280ba +𝓇 => 𓇠f09d9387 +↱ => ↱ e286b1 +] => ] 5d +’ => ’ e28099 +’ => ’ e28099 +⋌ => â‹Œ e28b8c +⋊ => â‹Š e28b8a +▹ => â–¹ e296b9 +⊵ => ⊵ e28ab5 +▸ => â–¸ e296b8 +⧎ => ⧎ e2a78e +⥨ => ⥨ e2a5a8 +℞ => â„ž e2849e +ś => Å› c59b +‚ => ‚ e2809a +≻ => ≻ e289bb +⪴ => ⪴ e2aab4 +⪸ => ⪸ e2aab8 +š => Å¡ c5a1 +≽ => ≽ e289bd +⪰ => ⪰ e2aab0 +ş => ÅŸ c59f +ŝ => Å c59d +⪶ => ⪶ e2aab6 +⪺ => ⪺ e2aaba +⋩ => â‹© e28ba9 +⨓ => ⨓ e2a893 +≿ => ≿ e289bf +с => Ñ d181 +⋅ => â‹… e28b85 +⊡ => ⊡ e28aa1 +⩦ => ⩦ e2a9a6 +⇘ => ⇘ e28798 +⤥ => ⤥ e2a4a5 +↘ => ↘ e28698 +↘ => ↘ e28698 +§ => § c2a7 +; => ; 3b +⤩ => ⤩ e2a4a9 +∖ => ∖ e28896 +∖ => ∖ e28896 +✶ => ✶ e29cb6 +𝔰 => ð”° f09d94b0 +⌢ => ⌢ e28ca2 +♯ => ♯ e299af +щ => щ d189 +ш => ш d188 +∣ => ∣ e288a3 +∥ => ∥ e288a5 +­ =>  c2ad +σ => σ cf83 +ς => Ï‚ cf82 +ς => Ï‚ cf82 +∼ => ∼ e288bc +⩪ => ⩪ e2a9aa +≃ => ≃ e28983 +≃ => ≃ e28983 +⪞ => ⪞ e2aa9e +⪠ => ⪠e2aaa0 +⪝ => ⪠e2aa9d +⪟ => ⪟ e2aa9f +≆ => ≆ e28986 +⨤ => ⨤ e2a8a4 +⥲ => ⥲ e2a5b2 +← => ↠e28690 +∖ => ∖ e28896 +⨳ => ⨳ e2a8b3 +⧤ => ⧤ e2a7a4 +∣ => ∣ e288a3 +⌣ => ⌣ e28ca3 +⪪ => ⪪ e2aaaa +⪬ => ⪬ e2aaac +⪬︀ => ⪬︀ e2aaacefb880 +ь => ÑŒ d18c +/ => / 2f +⧄ => ⧄ e2a784 +⌿ => ⌿ e28cbf +𝕤 => 𕤠f09d95a4 +♠ => â™ e299a0 +♠ => â™ e299a0 +∥ => ∥ e288a5 +⊓ => ⊓ e28a93 +⊓︀ => ⊓︀ e28a93efb880 +⊔ => ⊔ e28a94 +⊔︀ => ⊔︀ e28a94efb880 +⊏ => ⊠e28a8f +⊑ => ⊑ e28a91 +⊏ => ⊠e28a8f +⊑ => ⊑ e28a91 +⊐ => ⊠e28a90 +⊒ => ⊒ e28a92 +⊐ => ⊠e28a90 +⊒ => ⊒ e28a92 +□ => â–¡ e296a1 +□ => â–¡ e296a1 +▪ => â–ª e296aa +▪ => â–ª e296aa +→ => → e28692 +𝓈 => 𓈠f09d9388 +∖ => ∖ e28896 +⌣ => ⌣ e28ca3 +⋆ => ⋆ e28b86 +☆ => ☆ e29886 +★ => ★ e29885 +ϵ => ϵ cfb5 +ϕ => Ï• cf95 +¯ => ¯ c2af +⊂ => ⊂ e28a82 +⫅ => â«… e2ab85 +⪽ => ⪽ e2aabd +⊆ => ⊆ e28a86 +⫃ => ⫃ e2ab83 +⫁ => â« e2ab81 +⫋ => â«‹ e2ab8b +⊊ => ⊊ e28a8a +⪿ => ⪿ e2aabf +⥹ => ⥹ e2a5b9 +⊂ => ⊂ e28a82 +⊆ => ⊆ e28a86 +⫅ => â«… e2ab85 +⊊ => ⊊ e28a8a +⫋ => â«‹ e2ab8b +⫇ => ⫇ e2ab87 +⫕ => â«• e2ab95 +⫓ => â«“ e2ab93 +≻ => ≻ e289bb +⪸ => ⪸ e2aab8 +≽ => ≽ e289bd +⪰ => ⪰ e2aab0 +⪺ => ⪺ e2aaba +⪶ => ⪶ e2aab6 +⋩ => â‹© e28ba9 +≿ => ≿ e289bf +∑ => ∑ e28891 +♪ => ♪ e299aa +⊃ => ⊃ e28a83 +¹ => ¹ c2b9 +² => ² c2b2 +³ => ³ c2b3 +⫆ => ⫆ e2ab86 +⪾ => ⪾ e2aabe +⫘ => ⫘ e2ab98 +⊇ => ⊇ e28a87 +⫄ => â«„ e2ab84 +⟉ => ⟉ e29f89 +⫗ => â«— e2ab97 +⥻ => ⥻ e2a5bb +⫂ => â«‚ e2ab82 +⫌ => â«Œ e2ab8c +⊋ => ⊋ e28a8b +⫀ => â«€ e2ab80 +⊃ => ⊃ e28a83 +⊇ => ⊇ e28a87 +⫆ => ⫆ e2ab86 +⊋ => ⊋ e28a8b +⫌ => â«Œ e2ab8c +⫈ => ⫈ e2ab88 +⫔ => â«” e2ab94 +⫖ => â«– e2ab96 +⇙ => ⇙ e28799 +⤦ => ⤦ e2a4a6 +↙ => ↙ e28699 +↙ => ↙ e28699 +⤪ => ⤪ e2a4aa +ß => ß c39f +⌖ => ⌖ e28c96 +τ => Ï„ cf84 +⎴ => ⎴ e28eb4 +ť => Å¥ c5a5 +ţ => Å£ c5a3 +т => Ñ‚ d182 +⃛ => ⃛ e2839b +⌕ => ⌕ e28c95 +𝔱 => ð”± f09d94b1 +∴ => ∴ e288b4 +∴ => ∴ e288b4 +θ => θ ceb8 +ϑ => Ï‘ cf91 +ϑ => Ï‘ cf91 +≈ => ≈ e28988 +∼ => ∼ e288bc +  =>   e28089 +≈ => ≈ e28988 +∼ => ∼ e288bc +þ => þ c3be +˜ => Ëœ cb9c +× => × c397 +⊠ => ⊠e28aa0 +⨱ => ⨱ e2a8b1 +⨰ => ⨰ e2a8b0 +∭ => ∠e288ad +⤨ => ⤨ e2a4a8 +⊤ => ⊤ e28aa4 +⌶ => ⌶ e28cb6 +⫱ => ⫱ e2abb1 +𝕥 => ð•¥ f09d95a5 +⫚ => â«š e2ab9a +⤩ => ⤩ e2a4a9 +‴ => ‴ e280b4 +™ => â„¢ e284a2 +▵ => â–µ e296b5 +▿ => â–¿ e296bf +◃ => â—ƒ e29783 +⊴ => ⊴ e28ab4 +≜ => ≜ e2899c +▹ => â–¹ e296b9 +⊵ => ⊵ e28ab5 +◬ => â—¬ e297ac +≜ => ≜ e2899c +⨺ => ⨺ e2a8ba +⨹ => ⨹ e2a8b9 +⧍ => ⧠e2a78d +⨻ => ⨻ e2a8bb +⏢ => ⢠e28fa2 +𝓉 => 𓉠f09d9389 +ц => ц d186 +ћ => Ñ› d19b +ŧ => ŧ c5a7 +≬ => ≬ e289ac +↞ => ↞ e2869e +↠ => ↠e286a0 +⇑ => ⇑ e28791 +⥣ => ⥣ e2a5a3 +ú => ú c3ba +↑ => ↑ e28691 +ў => Ñž d19e +ŭ => Å c5ad +û => û c3bb +у => у d183 +⇅ => ⇅ e28785 +ű => ű c5b1 +⥮ => ⥮ e2a5ae +⥾ => ⥾ e2a5be +𝔲 => 𔲠f09d94b2 +ù => ù c3b9 +↿ => ↿ e286bf +↾ => ↾ e286be +▀ => â–€ e29680 +⌜ => ⌜ e28c9c +⌜ => ⌜ e28c9c +⌏ => ⌠e28c8f +◸ => â—¸ e297b8 +ū => Å« c5ab +¨ => ¨ c2a8 +ų => ų c5b3 +𝕦 => 𕦠f09d95a6 +↑ => ↑ e28691 +↕ => ↕ e28695 +↿ => ↿ e286bf +↾ => ↾ e286be +⊎ => ⊎ e28a8e +υ => Ï… cf85 +ϒ => Ï’ cf92 +υ => Ï… cf85 +⇈ => ⇈ e28788 +⌝ => ⌠e28c9d +⌝ => ⌠e28c9d +⌎ => ⌎ e28c8e +ů => ů c5af +◹ => â—¹ e297b9 +𝓊 => ð“Š f09d938a +⋰ => â‹° e28bb0 +ũ => Å© c5a9 +▵ => â–µ e296b5 +▴ => â–´ e296b4 +⇈ => ⇈ e28788 +ü => ü c3bc +⦧ => ⦧ e2a6a7 +⇕ => ⇕ e28795 +⫨ => ⫨ e2aba8 +⫩ => â«© e2aba9 +⊨ => ⊨ e28aa8 +⦜ => ⦜ e2a69c +ϵ => ϵ cfb5 +ϰ => Ï° cfb0 +∅ => ∅ e28885 +ϕ => Ï• cf95 +ϖ => Ï– cf96 +∝ => ∠e2889d +↕ => ↕ e28695 +ϱ => ϱ cfb1 +ς => Ï‚ cf82 +⊊︀ => ⊊︀ e28a8aefb880 +⫋︀ => ⫋︀ e2ab8befb880 +⊋︀ => ⊋︀ e28a8befb880 +⫌︀ => ⫌︀ e2ab8cefb880 +ϑ => Ï‘ cf91 +⊲ => ⊲ e28ab2 +⊳ => ⊳ e28ab3 +в => в d0b2 +⊢ => ⊢ e28aa2 +∨ => ∨ e288a8 +⊻ => ⊻ e28abb +≚ => ≚ e2899a +⋮ => â‹® e28bae +| => | 7c +| => | 7c +𝔳 => 𔳠f09d94b3 +⊲ => ⊲ e28ab2 +⊂⃒ => ⊂⃒ e28a82e28392 +⊃⃒ => ⊃⃒ e28a83e28392 +𝕧 => 𕧠f09d95a7 +∝ => ∠e2889d +⊳ => ⊳ e28ab3 +𝓋 => ð“‹ f09d938b +⫋︀ => ⫋︀ e2ab8befb880 +⊊︀ => ⊊︀ e28a8aefb880 +⫌︀ => ⫌︀ e2ab8cefb880 +⊋︀ => ⊋︀ e28a8befb880 +⦚ => ⦚ e2a69a +ŵ => ŵ c5b5 +⩟ => â©Ÿ e2a99f +∧ => ∧ e288a7 +≙ => ≙ e28999 +℘ => ℘ e28498 +𝔴 => ð”´ f09d94b4 +𝕨 => 𕨠f09d95a8 +℘ => ℘ e28498 +≀ => ≀ e28980 +≀ => ≀ e28980 +𝓌 => 𓌠f09d938c +⋂ => â‹‚ e28b82 +◯ => â—¯ e297af +⋃ => ⋃ e28b83 +▽ => â–½ e296bd +𝔵 => 𔵠f09d94b5 +⟺ => ⟺ e29fba +⟷ => ⟷ e29fb7 +ξ => ξ cebe +⟸ => ⟸ e29fb8 +⟵ => ⟵ e29fb5 +⟼ => ⟼ e29fbc +⋻ => â‹» e28bbb +⨀ => ⨀ e2a880 +𝕩 => ð•© f09d95a9 +⨁ => ⨠e2a881 +⨂ => ⨂ e2a882 +⟹ => ⟹ e29fb9 +⟶ => ⟶ e29fb6 +𝓍 => ð“ f09d938d +⨆ => ⨆ e2a886 +⨄ => ⨄ e2a884 +△ => â–³ e296b3 +⋁ => â‹ e28b81 +⋀ => â‹€ e28b80 +ý => ý c3bd +я => Ñ d18f +ŷ => Å· c5b7 +ы => Ñ‹ d18b +¥ => Â¥ c2a5 +𝔶 => 𔶠f09d94b6 +ї => Ñ— d197 +𝕪 => 𕪠f09d95aa +𝓎 => ð“Ž f09d938e +ю => ÑŽ d18e +ÿ => ÿ c3bf +ź => ź c5ba +ž => ž c5be +з => з d0b7 +ż => ż c5bc +ℨ => ℨ e284a8 +ζ => ζ ceb6 +𝔷 => ð”· f09d94b7 +ж => ж d0b6 +⇝ => ⇠e2879d +𝕫 => ð•« f09d95ab +𝓏 => ð“ f09d938f +‍ => †e2808d +‌ => ‌ 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) "€©роскошный" +string(42) "266575726f3b26636f70793bf0eef1eaeef8edfbe9" +string(58) "€©роскошный" ===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+s & some more D" string(33) "test+s & some more D" string(34) "test+s & some more D" string(34) "test+s & some more D" -string(35) "&; &amp &#a; &9; &#xyz;" -string(35) "&; &amp &#a; &9; &#xyz;" +string(43) "&; &amp &#a; &9; &#xyz;" +string(43) "&; &amp &#a; &9; &#xyz;" string(32) "&kffjadfdhsjfhjasdhffasdfas;" string(32) "&kffjadfdhsjfhjasdhffasdfas;" string(16) "&#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�>B" +string(18) "41efbfbd2667743b42" +string(9) "A�>B" +string(18) "41efbfbd2667743b42" +string(9) "�"" +string(18) "efbfbd2671756f743b" +string(9) "�"" +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( + "�", //C0 + "", + "	", + "
", + "", + "", + "
", //note that HTML5 is unique in that it forbids this entity, but allows a literal U+0D + "", + "", + " ", //allowed always + "", //DEL + "€", //C1 + "Ÿ", + " ", //allowed always + "퟿", //surrogates + "�", + "�", + "", //allowed always + "", //nonchar + "", + "﷏", //allowed always + "", //nonchar + "", + "ﷰ", //allowed always + "", //nonchar + "", + "�", //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 *** +� NOT CHANGED + NOT CHANGED +	 NOT CHANGED +
 NOT CHANGED + NOT CHANGED + NOT CHANGED +
 NOT CHANGED + NOT CHANGED + NOT CHANGED +  NOT CHANGED + NOT CHANGED +€ NOT CHANGED +Ÿ NOT CHANGED +  NOT CHANGED +퟿ NOT CHANGED +� NOT CHANGED +� NOT CHANGED + NOT CHANGED + NOT CHANGED + NOT CHANGED +﷏ NOT CHANGED + NOT CHANGED + NOT CHANGED +ﷰ NOT CHANGED + NOT CHANGED + NOT CHANGED +� CHANGED + +*** Testing XHTML 1.0 *** +� CHANGED + CHANGED +	 NOT CHANGED +
 NOT CHANGED + CHANGED + CHANGED +
 NOT CHANGED + CHANGED + CHANGED +  NOT CHANGED + NOT CHANGED +€ NOT CHANGED +Ÿ NOT CHANGED +  NOT CHANGED +퟿ NOT CHANGED +� CHANGED +� CHANGED + NOT CHANGED + CHANGED + CHANGED +﷏ NOT CHANGED + NOT CHANGED + NOT CHANGED +ﷰ NOT CHANGED + NOT CHANGED + NOT CHANGED +� CHANGED + +*** Testing HTML 5 *** +� CHANGED (&#0;, &#0;) + CHANGED (&#1;, &#1;) +	 NOT CHANGED +
 NOT CHANGED + CHANGED (&#x0B;, &#x0B;) + NOT CHANGED +
 CHANGED (&#x0D;, &#x0D;) + CHANGED (&#x0E;, &#x0E;) + CHANGED (&#x1F;, &#x1F;) +  NOT CHANGED + CHANGED (&#x7F;, &#x7F;) +€ CHANGED (&#x80;, &#x80;) +Ÿ CHANGED (&#x9F;, &#x9F;) +  NOT CHANGED +퟿ NOT CHANGED +� NOT CHANGED +� NOT CHANGED + NOT CHANGED + CHANGED (&#xFFFE;, &#xFFFE;) + CHANGED (&#xFFFF;, &#xFFFF;) +﷏ NOT CHANGED + CHANGED (&#xFDD0;, &#xFDD0;) + CHANGED (&#xFDEF;, &#xFDEF;) +ﷰ NOT CHANGED + CHANGED (&#x2FFFE;, &#x2FFFE;) + CHANGED (&#x2FFFF;, &#x2FFFF;) +� CHANGED (&#x110000;, &#x110000;) + +*** Testing XML 1.0 *** +� CHANGED + CHANGED +	 NOT CHANGED +
 NOT CHANGED + CHANGED + CHANGED +
 NOT CHANGED + CHANGED + CHANGED +  NOT CHANGED + NOT CHANGED +€ NOT CHANGED +Ÿ NOT CHANGED +  NOT CHANGED +퟿ NOT CHANGED +� CHANGED +� CHANGED + NOT CHANGED + CHANGED + CHANGED +﷏ NOT CHANGED + NOT CHANGED + NOT CHANGED +ﷰ NOT CHANGED + NOT CHANGED + NOT CHANGED +� CHANGED + +*** Testing 5 without the flag *** +� NOT CHANGED + NOT CHANGED +	 NOT CHANGED +
 NOT CHANGED + NOT CHANGED + NOT CHANGED +
 NOT CHANGED + NOT CHANGED + NOT CHANGED +  NOT CHANGED + NOT CHANGED +€ NOT CHANGED +Ÿ NOT CHANGED +  NOT CHANGED +퟿ NOT CHANGED +� NOT CHANGED +� NOT CHANGED + NOT CHANGED + NOT CHANGED + NOT CHANGED +﷏ NOT CHANGED + NOT CHANGED + NOT CHANGED +ﷰ NOT CHANGED + NOT CHANGED + NOT CHANGED +� CHANGED (&#x110000;, &#x110000;) + +*** Testing HTML 5 with another single-byte encoding *** +� CHANGED (&#0;, &#0;) + CHANGED (&#1;, &#1;) +	 NOT CHANGED +
 NOT CHANGED + CHANGED (&#x0B;, &#x0B;) + NOT CHANGED +
 CHANGED (&#x0D;, &#x0D;) + CHANGED (&#x0E;, &#x0E;) + CHANGED (&#x1F;, &#x1F;) +  NOT CHANGED + CHANGED (&#x7F;, &#x7F;) +€ CHANGED (&#x80;, &#x80;) +Ÿ CHANGED (&#x9F;, &#x9F;) +  NOT CHANGED +퟿ NOT CHANGED +� NOT CHANGED +� NOT CHANGED + NOT CHANGED + CHANGED (&#xFFFE;, &#xFFFE;) + CHANGED (&#xFFFF;, &#xFFFF;) +﷏ NOT CHANGED + CHANGED (&#xFDD0;, &#xFDD0;) + CHANGED (&#xFDEF;, &#xFDEF;) +ﷰ NOT CHANGED + CHANGED (&#x2FFFE;, &#x2FFFE;) + CHANGED (&#x2FFFF;, &#x2FFFF;) +� CHANGED (&#x110000;, &#x110000;) + +*** Testing HTML 5 with another multibyte-byte encoding *** +� CHANGED + CHANGED +	 NOT CHANGED +
 NOT CHANGED + CHANGED + NOT CHANGED +
 CHANGED + CHANGED + CHANGED +  NOT CHANGED + CHANGED +€ CHANGED +Ÿ CHANGED +  NOT CHANGED +퟿ NOT CHANGED +� NOT CHANGED +� NOT CHANGED + NOT CHANGED + CHANGED + CHANGED +﷏ NOT CHANGED + CHANGED + CHANGED +ﷰ NOT CHANGED + CHANGED + CHANGED +� 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) "��" +string(32) "262378464646443b262378464646443b" +string(16) "��" +string(32) "262378464646443b262378464646443b" + +string(16) "��" +string(32) "262378464646443b262378464646443b" +string(16) "��" +string(32) "262378464646443b262378464646443b" + +string(8) "�" +string(16) "262378464646443b" +string(8) "�" +string(16) "262378464646443b" + +string(8) "�" +string(16) "262378464646443b" +string(8) "�" +string(16) "262378464646443b" + +string(17) "��!" +string(34) "262378464646443b262378464646443b21" +string(17) "��!" +string(34) "262378464646443b262378464646443b21" + +string(9) "�!" +string(18) "262378464646443b21" +string(9) "�!" +string(18) "262378464646443b21" + +string(2) "Ž®" +string(4) "8eae" +string(2) "Ž®" +string(4) "8eae" + +string(8) "�" +string(16) "262378464646443b" +string(8) "�" +string(16) "262378464646443b" + +string(9) "�!" +string(18) "262378464646443b21" +string(9) "�!" +string(18) "262378464646443b21" + +string(8) "�" +string(16) "262378464646443b" +string(8) "�" +string(16) "262378464646443b" + +string(8) "�" +string(16) "262378464646443b" +string(8) "�" +string(16) "262378464646443b" + +string(9) "�!" +string(18) "262378464646443b21" +string(9) "�!" +string(18) "262378464646443b21" + +string(8) "�" +string(16) "262378464646443b" +string(8) "�" +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-- +	 U+00009 +
 U+0000A +! U+00021 +" U+00022 +# U+00023 +$ U+00024 +% U+00025 +& U+00026 +' U+00027 +( U+00028 +) U+00029 +* U+0002A ++ U+0002B +, U+0002C +. U+0002E +/ U+0002F +: U+0003A +; U+0003B +< U+0003C += U+0003D +> U+0003E +? U+0003F +@ U+00040 +[ U+0005B +\ U+0005C +] U+0005D +^ U+0005E +_ U+0005F +` U+00060 +{ U+0007B +| U+0007C +} U+0007D + U+000A0 +¡ U+000A1 +¢ U+000A2 +£ U+000A3 +¤ U+000A4 +¥ U+000A5 +¦ U+000A6 +§ U+000A7 +¨ U+000A8 +© U+000A9 +ª U+000AA +« U+000AB +¬ U+000AC +­ U+000AD +® U+000AE +¯ U+000AF +° U+000B0 +± U+000B1 +² U+000B2 +³ U+000B3 +´ U+000B4 +µ U+000B5 +¶ U+000B6 +· U+000B7 +¸ U+000B8 +¹ U+000B9 +º U+000BA +» U+000BB +¼ U+000BC +½ U+000BD +¾ U+000BE +¿ U+000BF +À U+000C0 +Á U+000C1 + U+000C2 +à U+000C3 +Ä U+000C4 +Å U+000C5 +Æ U+000C6 +Ç U+000C7 +È U+000C8 +É U+000C9 +Ê U+000CA +Ë U+000CB +Ì U+000CC +Í U+000CD +Î U+000CE +Ï U+000CF +Ð U+000D0 +Ñ U+000D1 +Ò U+000D2 +Ó U+000D3 +Ô U+000D4 +Õ U+000D5 +Ö U+000D6 +× U+000D7 +Ø U+000D8 +Ù U+000D9 +Ú U+000DA +Û U+000DB +Ü U+000DC +Ý U+000DD +Þ U+000DE +ß U+000DF +à U+000E0 +á U+000E1 +â U+000E2 +ã U+000E3 +ä U+000E4 +å U+000E5 +æ U+000E6 +ç U+000E7 +è U+000E8 +é U+000E9 +ê U+000EA +ë U+000EB +ì U+000EC +í U+000ED +î U+000EE +ï U+000EF +ð U+000F0 +ñ U+000F1 +ò U+000F2 +ó U+000F3 +ô U+000F4 +õ U+000F5 +ö U+000F6 +÷ U+000F7 +ø U+000F8 +ù U+000F9 +ú U+000FA +û U+000FB +ü U+000FC +ý U+000FD +þ U+000FE +ÿ U+000FF +Ā U+00100 +ā U+00101 +Ă U+00102 +ă U+00103 +Ą U+00104 +ą U+00105 +Ć U+00106 +ć U+00107 +Ĉ U+00108 +ĉ U+00109 +Ċ U+0010A +ċ U+0010B +Č U+0010C +č U+0010D +Ď U+0010E +ď U+0010F +Đ U+00110 +đ U+00111 +Ē U+00112 +ē U+00113 +Ė U+00116 +ė U+00117 +Ę U+00118 +ę U+00119 +Ě U+0011A +ě U+0011B +Ĝ U+0011C +ĝ U+0011D +Ğ U+0011E +ğ U+0011F +Ġ U+00120 +ġ U+00121 +Ģ U+00122 +Ĥ U+00124 +ĥ U+00125 +Ħ U+00126 +ħ U+00127 +Ĩ U+00128 +ĩ U+00129 +Ī U+0012A +ī U+0012B +Į U+0012E +į U+0012F +İ U+00130 +ı U+00131 +IJ U+00132 +ij U+00133 +Ĵ U+00134 +ĵ U+00135 +Ķ U+00136 +ķ U+00137 +ĸ U+00138 +Ĺ U+00139 +ĺ U+0013A +Ļ U+0013B +ļ U+0013C +Ľ U+0013D +ľ U+0013E +Ŀ U+0013F +ŀ U+00140 +Ł U+00141 +ł U+00142 +Ń U+00143 +ń U+00144 +Ņ U+00145 +ņ U+00146 +Ň U+00147 +ň U+00148 +ʼn U+00149 +Ŋ U+0014A +ŋ U+0014B +Ō U+0014C +ō U+0014D +Ő U+00150 +ő U+00151 +Œ U+00152 +œ U+00153 +Ŕ U+00154 +ŕ U+00155 +Ŗ U+00156 +ŗ U+00157 +Ř U+00158 +ř U+00159 +Ś U+0015A +ś U+0015B +Ŝ U+0015C +ŝ U+0015D +Ş U+0015E +ş U+0015F +Š U+00160 +š U+00161 +Ţ U+00162 +ţ U+00163 +Ť U+00164 +ť U+00165 +Ŧ U+00166 +ŧ U+00167 +Ũ U+00168 +ũ U+00169 +Ū U+0016A +ū U+0016B +Ŭ U+0016C +ŭ U+0016D +Ů U+0016E +ů U+0016F +Ű U+00170 +ű U+00171 +Ų U+00172 +ų U+00173 +Ŵ U+00174 +ŵ U+00175 +Ŷ U+00176 +ŷ U+00177 +Ÿ U+00178 +Ź U+00179 +ź U+0017A +Ż U+0017B +ż U+0017C +Ž U+0017D +ž U+0017E +ƒ U+00192 +Ƶ U+001B5 +ǵ U+001F5 +ȷ U+00237 +ˆ U+002C6 +ˇ U+002C7 +˘ U+002D8 +˙ U+002D9 +˚ U+002DA +˛ U+002DB +˜ U+002DC +˝ U+002DD +̑ U+00311 +Α U+00391 +Β U+00392 +Γ U+00393 +Δ U+00394 +Ε U+00395 +Ζ U+00396 +Η U+00397 +Θ U+00398 +Ι U+00399 +Κ U+0039A +Λ U+0039B +Μ U+0039C +Ν U+0039D +Ξ U+0039E +Ο U+0039F +Π U+003A0 +Ρ U+003A1 +Σ U+003A3 +Τ U+003A4 +Υ U+003A5 +Φ U+003A6 +Χ U+003A7 +Ψ U+003A8 +Ω U+003A9 +α U+003B1 +β U+003B2 +γ U+003B3 +δ U+003B4 +ε U+003B5 +ζ U+003B6 +η U+003B7 +θ U+003B8 +ι U+003B9 +κ U+003BA +λ U+003BB +μ U+003BC +ν U+003BD +ξ U+003BE +ο U+003BF +π U+003C0 +ρ U+003C1 +ς U+003C2 +σ U+003C3 +τ U+003C4 +υ U+003C5 +φ U+003C6 +χ U+003C7 +ψ U+003C8 +ω U+003C9 +ϑ U+003D1 +ϒ U+003D2 +ϕ U+003D5 +ϖ U+003D6 +Ϝ U+003DC +ϝ U+003DD +ϰ U+003F0 +ϱ U+003F1 +ϵ U+003F5 +϶ U+003F6 +Ё U+00401 +Ђ U+00402 +Ѓ U+00403 +Є U+00404 +Ѕ U+00405 +І U+00406 +Ї U+00407 +Ј U+00408 +Љ U+00409 +Њ U+0040A +Ћ U+0040B +Ќ U+0040C +Ў U+0040E +Џ U+0040F +А U+00410 +Б U+00411 +В U+00412 +Г U+00413 +Д U+00414 +Е U+00415 +Ж U+00416 +З U+00417 +И U+00418 +Й U+00419 +К U+0041A +Л U+0041B +М U+0041C +Н U+0041D +О U+0041E +П U+0041F +Р U+00420 +С U+00421 +Т U+00422 +У U+00423 +Ф U+00424 +Х U+00425 +Ц U+00426 +Ч U+00427 +Ш U+00428 +Щ U+00429 +Ъ U+0042A +Ы U+0042B +Ь U+0042C +Э U+0042D +Ю U+0042E +Я U+0042F +а U+00430 +б U+00431 +в U+00432 +г U+00433 +д U+00434 +е U+00435 +ж U+00436 +з U+00437 +и U+00438 +й U+00439 +к U+0043A +л U+0043B +м U+0043C +н U+0043D +о U+0043E +п U+0043F +р U+00440 +с U+00441 +т U+00442 +у U+00443 +ф U+00444 +х U+00445 +ц U+00446 +ч U+00447 +ш U+00448 +щ U+00449 +ъ U+0044A +ы U+0044B +ь U+0044C +э U+0044D +ю U+0044E +я U+0044F +ё U+00451 +ђ U+00452 +ѓ U+00453 +є U+00454 +ѕ U+00455 +і U+00456 +ї U+00457 +ј U+00458 +љ U+00459 +њ U+0045A +ћ U+0045B +ќ U+0045C +ў U+0045E +џ U+0045F +  U+02002 +  U+02003 +  U+02004 +  U+02005 +  U+02007 +  U+02008 +  U+02009 +  U+0200A +​ U+0200B +‌ U+0200C +‍ U+0200D +‎ U+0200E +‏ U+0200F +‐ U+02010 +– U+02013 +— U+02014 +― U+02015 +‖ U+02016 +‘ U+02018 +’ U+02019 +‚ U+0201A +“ U+0201C +” U+0201D +„ U+0201E +† U+02020 +‡ U+02021 +• U+02022 +‥ U+02025 +… U+02026 +‰ U+02030 +‱ U+02031 +′ U+02032 +″ U+02033 +‴ U+02034 +‵ U+02035 +‹ U+02039 +› U+0203A +‾ U+0203E +⁁ U+02041 +⁃ U+02043 +⁄ U+02044 +⁏ U+0204F +⁗ U+02057 +  U+0205F +⁠ U+02060 +⁡ U+02061 +⁢ U+02062 +⁣ U+02063 +€ U+020AC +⃛ U+020DB +⃜ U+020DC +ℂ U+02102 +℅ U+02105 +ℊ U+0210A +ℋ U+0210B +ℌ U+0210C +ℍ U+0210D +ℎ U+0210E +ℏ U+0210F +ℐ U+02110 +ℑ U+02111 +ℒ U+02112 +ℓ U+02113 +ℕ U+02115 +№ U+02116 +℗ U+02117 +℘ U+02118 +ℙ U+02119 +ℚ U+0211A +ℛ U+0211B +ℜ U+0211C +ℝ U+0211D +℞ U+0211E +™ U+02122 +ℤ U+02124 +℧ U+02127 +ℨ U+02128 +℩ U+02129 +ℬ U+0212C +ℭ U+0212D +ℯ U+0212F +ℰ U+02130 +ℱ U+02131 +ℳ U+02133 +ℴ U+02134 +ℵ U+02135 +ℶ U+02136 +ℷ U+02137 +ℸ U+02138 +ⅅ U+02145 +ⅆ U+02146 +ⅇ U+02147 +ⅈ U+02148 +⅓ U+02153 +⅔ U+02154 +⅕ U+02155 +⅖ U+02156 +⅗ U+02157 +⅘ U+02158 +⅙ U+02159 +⅚ U+0215A +⅛ U+0215B +⅜ U+0215C +⅝ U+0215D +⅞ U+0215E +← U+02190 +↑ U+02191 +→ U+02192 +↓ U+02193 +↔ U+02194 +↕ U+02195 +↖ U+02196 +↗ U+02197 +↘ U+02198 +↙ U+02199 +↚ U+0219A +↛ U+0219B +↝ U+0219D +↞ U+0219E +↟ U+0219F +↠ U+021A0 +↡ U+021A1 +↢ U+021A2 +↣ U+021A3 +↤ U+021A4 +↥ U+021A5 +↦ U+021A6 +↧ U+021A7 +↩ U+021A9 +↪ U+021AA +↫ U+021AB +↬ U+021AC +↭ U+021AD +↮ U+021AE +↰ U+021B0 +↱ U+021B1 +↲ U+021B2 +↳ U+021B3 +↵ U+021B5 +↶ U+021B6 +↷ U+021B7 +↺ U+021BA +↻ U+021BB +↼ U+021BC +↽ U+021BD +↾ U+021BE +↿ U+021BF +⇀ U+021C0 +⇁ U+021C1 +⇂ U+021C2 +⇃ U+021C3 +⇄ U+021C4 +⇅ U+021C5 +⇆ U+021C6 +⇇ U+021C7 +⇈ U+021C8 +⇉ U+021C9 +⇊ U+021CA +⇋ U+021CB +⇌ U+021CC +⇍ U+021CD +⇎ U+021CE +⇏ U+021CF +⇐ U+021D0 +⇑ U+021D1 +⇒ U+021D2 +⇓ U+021D3 +⇔ U+021D4 +⇕ U+021D5 +⇖ U+021D6 +⇗ U+021D7 +⇘ U+021D8 +⇙ U+021D9 +⇚ U+021DA +⇛ U+021DB +⇝ U+021DD +⇤ U+021E4 +⇥ U+021E5 +⇵ U+021F5 +⇽ U+021FD +⇾ U+021FE +⇿ U+021FF +∀ U+02200 +∁ U+02201 +∂ U+02202 +∃ U+02203 +∄ U+02204 +∅ U+02205 +∇ U+02207 +∈ U+02208 +∉ U+02209 +∋ U+0220B +∌ U+0220C +∏ U+0220F +∐ U+02210 +∑ U+02211 +− U+02212 +∓ U+02213 +∔ U+02214 +∖ U+02216 +∗ U+02217 +∘ U+02218 +√ U+0221A +∝ U+0221D +∞ U+0221E +∟ U+0221F +∠ U+02220 +∡ U+02221 +∢ U+02222 +∣ U+02223 +∤ U+02224 +∥ U+02225 +∦ U+02226 +∧ U+02227 +∨ U+02228 +∩ U+02229 +∪ U+0222A +∫ U+0222B +∬ U+0222C +∭ U+0222D +∮ U+0222E +∯ U+0222F +∰ U+02230 +∱ U+02231 +∲ U+02232 +∳ U+02233 +∴ U+02234 +∵ U+02235 +∶ U+02236 +∷ U+02237 +∸ U+02238 +∺ U+0223A +∻ U+0223B +∼ U+0223C +∽ U+0223D +∾ U+0223E +∿ U+0223F +≀ U+02240 +≁ U+02241 +≂ U+02242 +≃ U+02243 +≄ U+02244 +≅ U+02245 +≆ U+02246 +≇ U+02247 +≈ U+02248 +≉ U+02249 +≊ U+0224A +≋ U+0224B +≌ U+0224C +≍ U+0224D +≎ U+0224E +≏ U+0224F +≐ U+02250 +≑ U+02251 +≒ U+02252 +≓ U+02253 +≔ U+02254 +≕ U+02255 +≖ U+02256 +≗ U+02257 +≙ U+02259 +≚ U+0225A +≜ U+0225C +≟ U+0225F +≠ U+02260 +≡ U+02261 +≢ U+02262 +≤ U+02264 +≥ U+02265 +≦ U+02266 +≧ U+02267 +≨ U+02268 +≩ U+02269 +≪ U+0226A +≫ U+0226B +≬ U+0226C +≭ U+0226D +≮ U+0226E +≯ U+0226F +≰ U+02270 +≱ U+02271 +≲ U+02272 +≳ U+02273 +≴ U+02274 +≵ U+02275 +≶ U+02276 +≷ U+02277 +≸ U+02278 +≹ U+02279 +≺ U+0227A +≻ U+0227B +≼ U+0227C +≽ U+0227D +≾ U+0227E +≿ U+0227F +⊀ U+02280 +⊁ U+02281 +⊂ U+02282 +⊃ U+02283 +⊄ U+02284 +⊅ U+02285 +⊆ U+02286 +⊇ U+02287 +⊈ U+02288 +⊉ U+02289 +⊊ U+0228A +⊋ U+0228B +⊍ U+0228D +⊎ U+0228E +⊏ U+0228F +⊐ U+02290 +⊑ U+02291 +⊒ U+02292 +⊓ U+02293 +⊔ U+02294 +⊕ U+02295 +⊖ U+02296 +⊗ U+02297 +⊘ U+02298 +⊙ U+02299 +⊚ U+0229A +⊛ U+0229B +⊝ U+0229D +⊞ U+0229E +⊟ U+0229F +⊠ U+022A0 +⊡ U+022A1 +⊢ U+022A2 +⊣ U+022A3 +⊤ U+022A4 +⊥ U+022A5 +⊧ U+022A7 +⊨ U+022A8 +⊩ U+022A9 +⊪ U+022AA +⊫ U+022AB +⊬ U+022AC +⊭ U+022AD +⊮ U+022AE +⊯ U+022AF +⊰ U+022B0 +⊲ U+022B2 +⊳ U+022B3 +⊴ U+022B4 +⊵ U+022B5 +⊶ U+022B6 +⊷ U+022B7 +⊸ U+022B8 +⊹ U+022B9 +⊺ U+022BA +⊻ U+022BB +⊽ U+022BD +⊾ U+022BE +⊿ U+022BF +⋀ U+022C0 +⋁ U+022C1 +⋂ U+022C2 +⋃ U+022C3 +⋄ U+022C4 +⋅ U+022C5 +⋆ U+022C6 +⋇ U+022C7 +⋈ U+022C8 +⋉ U+022C9 +⋊ U+022CA +⋋ U+022CB +⋌ U+022CC +⋍ U+022CD +⋎ U+022CE +⋏ U+022CF +⋐ U+022D0 +⋑ U+022D1 +⋒ U+022D2 +⋓ U+022D3 +⋔ U+022D4 +⋕ U+022D5 +⋖ U+022D6 +⋗ U+022D7 +⋘ U+022D8 +⋙ U+022D9 +⋚ U+022DA +⋛ U+022DB +⋞ U+022DE +⋟ U+022DF +⋠ U+022E0 +⋡ U+022E1 +⋢ U+022E2 +⋣ U+022E3 +⋦ U+022E6 +⋧ U+022E7 +⋨ U+022E8 +⋩ U+022E9 +⋪ U+022EA +⋫ U+022EB +⋬ U+022EC +⋭ U+022ED +⋮ U+022EE +⋯ U+022EF +⋰ U+022F0 +⋱ U+022F1 +⋲ U+022F2 +⋳ U+022F3 +⋴ U+022F4 +⋵ U+022F5 +⋶ U+022F6 +⋷ U+022F7 +⋹ U+022F9 +⋺ U+022FA +⋻ U+022FB +⋼ U+022FC +⋽ U+022FD +⋾ U+022FE +⌅ U+02305 +⌆ U+02306 +⌈ U+02308 +⌉ U+02309 +⌊ U+0230A +⌋ U+0230B +⌌ U+0230C +⌍ U+0230D +⌎ U+0230E +⌏ U+0230F +⌐ U+02310 +⌒ U+02312 +⌓ U+02313 +⌕ U+02315 +⌖ U+02316 +⌜ U+0231C +⌝ U+0231D +⌞ U+0231E +⌟ U+0231F +⌢ U+02322 +⌣ U+02323 +⌭ U+0232D +⌮ U+0232E +⌶ U+02336 +⌽ U+0233D +⌿ U+0233F +⍼ U+0237C +⎰ U+023B0 +⎱ U+023B1 +⎴ U+023B4 +⎵ U+023B5 +⎶ U+023B6 +⏜ U+023DC +⏝ U+023DD +⏞ U+023DE +⏟ U+023DF +⏢ U+023E2 +⏧ U+023E7 +␣ U+02423 +Ⓢ U+024C8 +─ U+02500 +│ U+02502 +┌ U+0250C +┐ U+02510 +└ U+02514 +┘ U+02518 +├ U+0251C +┤ U+02524 +┬ U+0252C +┴ U+02534 +┼ U+0253C +═ U+02550 +║ U+02551 +╒ U+02552 +╓ U+02553 +╔ U+02554 +╕ U+02555 +╖ U+02556 +╗ U+02557 +╘ U+02558 +╙ U+02559 +╚ U+0255A +╛ U+0255B +╜ U+0255C +╝ U+0255D +╞ U+0255E +╟ U+0255F +╠ U+02560 +╡ U+02561 +╢ U+02562 +╣ U+02563 +╤ U+02564 +╥ U+02565 +╦ U+02566 +╧ U+02567 +╨ U+02568 +╩ U+02569 +╪ U+0256A +╫ U+0256B +╬ U+0256C +▀ U+02580 +▄ U+02584 +█ U+02588 +░ U+02591 +▒ U+02592 +▓ U+02593 +□ U+025A1 +▪ U+025AA +▫ U+025AB +▭ U+025AD +▮ U+025AE +▱ U+025B1 +△ U+025B3 +▴ U+025B4 +▵ U+025B5 +▸ U+025B8 +▹ U+025B9 +▽ U+025BD +▾ U+025BE +▿ U+025BF +◂ U+025C2 +◃ U+025C3 +◊ U+025CA +○ U+025CB +◬ U+025EC +◯ U+025EF +◸ U+025F8 +◹ U+025F9 +◺ U+025FA +◻ U+025FB +◼ U+025FC +★ U+02605 +☆ U+02606 +☎ U+0260E +♀ U+02640 +♂ U+02642 +♠ U+02660 +♣ U+02663 +♥ U+02665 +♦ U+02666 +♪ U+0266A +♭ U+0266D +♮ U+0266E +♯ U+0266F +✓ U+02713 +✗ U+02717 +✠ U+02720 +✶ U+02736 +❘ U+02758 +❲ U+02772 +❳ U+02773 +⟈ U+027C8 +⟉ U+027C9 +⟦ U+027E6 +⟧ U+027E7 +⟨ U+027E8 +⟩ U+027E9 +⟪ U+027EA +⟫ U+027EB +⟬ U+027EC +⟭ U+027ED +⟵ U+027F5 +⟶ U+027F6 +⟷ U+027F7 +⟸ U+027F8 +⟹ U+027F9 +⟺ U+027FA +⟼ U+027FC +⟿ U+027FF +⤂ U+02902 +⤃ U+02903 +⤄ U+02904 +⤅ U+02905 +⤌ U+0290C +⤍ U+0290D +⤎ U+0290E +⤏ U+0290F +⤐ U+02910 +⤑ U+02911 +⤒ U+02912 +⤓ U+02913 +⤖ U+02916 +⤙ U+02919 +⤚ U+0291A +⤛ U+0291B +⤜ U+0291C +⤝ U+0291D +⤞ U+0291E +⤟ U+0291F +⤠ U+02920 +⤣ U+02923 +⤤ U+02924 +⤥ U+02925 +⤦ U+02926 +⤧ U+02927 +⤨ U+02928 +⤩ U+02929 +⤪ U+0292A +⤳ U+02933 +⤵ U+02935 +⤶ U+02936 +⤷ U+02937 +⤸ U+02938 +⤹ U+02939 +⤼ U+0293C +⤽ U+0293D +⥅ U+02945 +⥈ U+02948 +⥉ U+02949 +⥊ U+0294A +⥋ U+0294B +⥎ U+0294E +⥏ U+0294F +⥐ U+02950 +⥑ U+02951 +⥒ U+02952 +⥓ U+02953 +⥔ U+02954 +⥕ U+02955 +⥖ U+02956 +⥗ U+02957 +⥘ U+02958 +⥙ U+02959 +⥚ U+0295A +⥛ U+0295B +⥜ U+0295C +⥝ U+0295D +⥞ U+0295E +⥟ U+0295F +⥠ U+02960 +⥡ U+02961 +⥢ U+02962 +⥣ U+02963 +⥤ U+02964 +⥥ U+02965 +⥦ U+02966 +⥧ U+02967 +⥨ U+02968 +⥩ U+02969 +⥪ U+0296A +⥫ U+0296B +⥬ U+0296C +⥭ U+0296D +⥮ U+0296E +⥯ U+0296F +⥰ U+02970 +⥱ U+02971 +⥲ U+02972 +⥳ U+02973 +⥴ U+02974 +⥵ U+02975 +⥶ U+02976 +⥸ U+02978 +⥹ U+02979 +⥻ U+0297B +⥼ U+0297C +⥽ U+0297D +⥾ U+0297E +⥿ U+0297F +⦅ U+02985 +⦆ U+02986 +⦋ U+0298B +⦌ U+0298C +⦍ U+0298D +⦎ U+0298E +⦏ U+0298F +⦐ U+02990 +⦑ U+02991 +⦒ U+02992 +⦓ U+02993 +⦔ U+02994 +⦕ U+02995 +⦖ U+02996 +⦚ U+0299A +⦜ U+0299C +⦝ U+0299D +⦤ U+029A4 +⦥ U+029A5 +⦦ U+029A6 +⦧ U+029A7 +⦨ U+029A8 +⦩ U+029A9 +⦪ U+029AA +⦫ U+029AB +⦬ U+029AC +⦭ U+029AD +⦮ U+029AE +⦯ U+029AF +⦰ U+029B0 +⦱ U+029B1 +⦲ U+029B2 +⦳ U+029B3 +⦴ U+029B4 +⦵ U+029B5 +⦶ U+029B6 +⦷ U+029B7 +⦹ U+029B9 +⦻ U+029BB +⦼ U+029BC +⦾ U+029BE +⦿ U+029BF +⧀ U+029C0 +⧁ U+029C1 +⧂ U+029C2 +⧃ U+029C3 +⧄ U+029C4 +⧅ U+029C5 +⧉ U+029C9 +⧍ U+029CD +⧎ U+029CE +⧏ U+029CF +⧐ U+029D0 +⧜ U+029DC +⧝ U+029DD +⧞ U+029DE +⧣ U+029E3 +⧤ U+029E4 +⧥ U+029E5 +⧫ U+029EB +⧴ U+029F4 +⧶ U+029F6 +⨀ U+02A00 +⨁ U+02A01 +⨂ U+02A02 +⨄ U+02A04 +⨆ U+02A06 +⨌ U+02A0C +⨍ U+02A0D +⨐ U+02A10 +⨑ U+02A11 +⨒ U+02A12 +⨓ U+02A13 +⨔ U+02A14 +⨕ U+02A15 +⨖ U+02A16 +⨗ U+02A17 +⨢ U+02A22 +⨣ U+02A23 +⨤ U+02A24 +⨥ U+02A25 +⨦ U+02A26 +⨧ U+02A27 +⨩ U+02A29 +⨪ U+02A2A +⨭ U+02A2D +⨮ U+02A2E +⨯ U+02A2F +⨰ U+02A30 +⨱ U+02A31 +⨳ U+02A33 +⨴ U+02A34 +⨵ U+02A35 +⨶ U+02A36 +⨷ U+02A37 +⨸ U+02A38 +⨹ U+02A39 +⨺ U+02A3A +⨻ U+02A3B +⨼ U+02A3C +⨿ U+02A3F +⩀ U+02A40 +⩂ U+02A42 +⩃ U+02A43 +⩄ U+02A44 +⩅ U+02A45 +⩆ U+02A46 +⩇ U+02A47 +⩈ U+02A48 +⩉ U+02A49 +⩊ U+02A4A +⩋ U+02A4B +⩌ U+02A4C +⩍ U+02A4D +⩐ U+02A50 +⩓ U+02A53 +⩔ U+02A54 +⩕ U+02A55 +⩖ U+02A56 +⩗ U+02A57 +⩘ U+02A58 +⩚ U+02A5A +⩛ U+02A5B +⩜ U+02A5C +⩝ U+02A5D +⩟ U+02A5F +⩦ U+02A66 +⩪ U+02A6A +⩭ U+02A6D +⩮ U+02A6E +⩯ U+02A6F +⩰ U+02A70 +⩱ U+02A71 +⩲ U+02A72 +⩳ U+02A73 +⩴ U+02A74 +⩵ U+02A75 +⩷ U+02A77 +⩸ U+02A78 +⩹ U+02A79 +⩺ U+02A7A +⩻ U+02A7B +⩼ U+02A7C +⩽ U+02A7D +⩾ U+02A7E +⩿ U+02A7F +⪀ U+02A80 +⪁ U+02A81 +⪂ U+02A82 +⪃ U+02A83 +⪄ U+02A84 +⪅ U+02A85 +⪆ U+02A86 +⪇ U+02A87 +⪈ U+02A88 +⪉ U+02A89 +⪊ U+02A8A +⪋ U+02A8B +⪌ U+02A8C +⪍ U+02A8D +⪎ U+02A8E +⪏ U+02A8F +⪐ U+02A90 +⪑ U+02A91 +⪒ U+02A92 +⪓ U+02A93 +⪔ U+02A94 +⪕ U+02A95 +⪖ U+02A96 +⪗ U+02A97 +⪘ U+02A98 +⪙ U+02A99 +⪚ U+02A9A +⪝ U+02A9D +⪞ U+02A9E +⪟ U+02A9F +⪠ U+02AA0 +⪡ U+02AA1 +⪢ U+02AA2 +⪤ U+02AA4 +⪥ U+02AA5 +⪦ U+02AA6 +⪧ U+02AA7 +⪨ U+02AA8 +⪩ U+02AA9 +⪪ U+02AAA +⪫ U+02AAB +⪬ U+02AAC +⪭ U+02AAD +⪮ U+02AAE +⪯ U+02AAF +⪰ U+02AB0 +⪳ U+02AB3 +⪴ U+02AB4 +⪵ U+02AB5 +⪶ U+02AB6 +⪷ U+02AB7 +⪸ U+02AB8 +⪹ U+02AB9 +⪺ U+02ABA +⪻ U+02ABB +⪼ U+02ABC +⪽ U+02ABD +⪾ U+02ABE +⪿ U+02ABF +⫀ U+02AC0 +⫁ U+02AC1 +⫂ U+02AC2 +⫃ U+02AC3 +⫄ U+02AC4 +⫅ U+02AC5 +⫆ U+02AC6 +⫇ U+02AC7 +⫈ U+02AC8 +⫋ U+02ACB +⫌ U+02ACC +⫏ U+02ACF +⫐ U+02AD0 +⫑ U+02AD1 +⫒ U+02AD2 +⫓ U+02AD3 +⫔ U+02AD4 +⫕ U+02AD5 +⫖ U+02AD6 +⫗ U+02AD7 +⫘ U+02AD8 +⫙ U+02AD9 +⫚ U+02ADA +⫛ U+02ADB +⫤ U+02AE4 +⫦ U+02AE6 +⫧ U+02AE7 +⫨ U+02AE8 +⫩ U+02AE9 +⫫ U+02AEB +⫬ U+02AEC +⫭ U+02AED +⫮ U+02AEE +⫯ U+02AEF +⫰ U+02AF0 +⫱ U+02AF1 +⫲ U+02AF2 +⫳ U+02AF3 +ff U+0FB00 +fi U+0FB01 +fl U+0FB02 +ffi U+0FB03 +ffl U+0FB04 +𝒜 U+1D49C +𝒞 U+1D49E +𝒟 U+1D49F +𝒢 U+1D4A2 +𝒥 U+1D4A5 +𝒦 U+1D4A6 +𝒩 U+1D4A9 +𝒪 U+1D4AA +𝒫 U+1D4AB +𝒬 U+1D4AC +𝒮 U+1D4AE +𝒯 U+1D4AF +𝒰 U+1D4B0 +𝒱 U+1D4B1 +𝒲 U+1D4B2 +𝒳 U+1D4B3 +𝒴 U+1D4B4 +𝒵 U+1D4B5 +𝒶 U+1D4B6 +𝒷 U+1D4B7 +𝒸 U+1D4B8 +𝒹 U+1D4B9 +𝒻 U+1D4BB +𝒽 U+1D4BD +𝒾 U+1D4BE +𝒿 U+1D4BF +𝓀 U+1D4C0 +𝓁 U+1D4C1 +𝓂 U+1D4C2 +𝓃 U+1D4C3 +𝓅 U+1D4C5 +𝓆 U+1D4C6 +𝓇 U+1D4C7 +𝓈 U+1D4C8 +𝓉 U+1D4C9 +𝓊 U+1D4CA +𝓋 U+1D4CB +𝓌 U+1D4CC +𝓍 U+1D4CD +𝓎 U+1D4CE +𝓏 U+1D4CF +𝔄 U+1D504 +𝔅 U+1D505 +𝔇 U+1D507 +𝔈 U+1D508 +𝔉 U+1D509 +𝔊 U+1D50A +𝔍 U+1D50D +𝔎 U+1D50E +𝔏 U+1D50F +𝔐 U+1D510 +𝔑 U+1D511 +𝔒 U+1D512 +𝔓 U+1D513 +𝔔 U+1D514 +𝔖 U+1D516 +𝔗 U+1D517 +𝔘 U+1D518 +𝔙 U+1D519 +𝔚 U+1D51A +𝔛 U+1D51B +𝔜 U+1D51C +𝔞 U+1D51E +𝔟 U+1D51F +𝔠 U+1D520 +𝔡 U+1D521 +𝔢 U+1D522 +𝔣 U+1D523 +𝔤 U+1D524 +𝔥 U+1D525 +𝔦 U+1D526 +𝔧 U+1D527 +𝔨 U+1D528 +𝔩 U+1D529 +𝔪 U+1D52A +𝔫 U+1D52B +𝔬 U+1D52C +𝔭 U+1D52D +𝔮 U+1D52E +𝔯 U+1D52F +𝔰 U+1D530 +𝔱 U+1D531 +𝔲 U+1D532 +𝔳 U+1D533 +𝔴 U+1D534 +𝔵 U+1D535 +𝔶 U+1D536 +𝔷 U+1D537 +𝔸 U+1D538 +𝔹 U+1D539 +𝔻 U+1D53B +𝔼 U+1D53C +𝔽 U+1D53D +𝔾 U+1D53E +𝕀 U+1D540 +𝕁 U+1D541 +𝕂 U+1D542 +𝕃 U+1D543 +𝕄 U+1D544 +𝕆 U+1D546 +𝕊 U+1D54A +𝕋 U+1D54B +𝕌 U+1D54C +𝕍 U+1D54D +𝕎 U+1D54E +𝕏 U+1D54F +𝕐 U+1D550 +𝕒 U+1D552 +𝕓 U+1D553 +𝕔 U+1D554 +𝕕 U+1D555 +𝕖 U+1D556 +𝕗 U+1D557 +𝕘 U+1D558 +𝕙 U+1D559 +𝕚 U+1D55A +𝕛 U+1D55B +𝕜 U+1D55C +𝕝 U+1D55D +𝕞 U+1D55E +𝕟 U+1D55F +𝕠 U+1D560 +𝕡 U+1D561 +𝕢 U+1D562 +𝕣 U+1D563 +𝕤 U+1D564 +𝕥 U+1D565 +𝕦 U+1D566 +𝕧 U+1D567 +𝕨 U+1D568 +𝕩 U+1D569 +𝕪 U+1D56A +𝕫 U+1D56B +<⃒ U+0003C U+020D2 +=⃥ U+0003D U+020E5 +>⃒ U+0003E U+020D2 +fj U+00066 U+0006A +   U+0205F U+0200A +↝̸ U+0219D U+00338 +∂̸ U+02202 U+00338 +∠⃒ U+02220 U+020D2 +∩︀ U+02229 U+0FE00 +∪︀ U+0222A U+0FE00 +∼⃒ U+0223C U+020D2 +∽̱ U+0223D U+00331 +∾̳ U+0223E U+00333 +≂̸ U+02242 U+00338 +≋̸ U+0224B U+00338 +≍⃒ U+0224D U+020D2 +≎̸ U+0224E U+00338 +≏̸ U+0224F U+00338 +≐̸ U+02250 U+00338 +≡⃥ U+02261 U+020E5 +≤⃒ U+02264 U+020D2 +≥⃒ U+02265 U+020D2 +≦̸ U+02266 U+00338 +≧̸ U+02267 U+00338 +≨︀ U+02268 U+0FE00 +≩︀ U+02269 U+0FE00 +≪̸ U+0226A U+00338 +≪⃒ U+0226A U+020D2 +≫̸ U+0226B U+00338 +≫⃒ U+0226B U+020D2 +≿̸ U+0227F U+00338 +⊂⃒ U+02282 U+020D2 +⊃⃒ U+02283 U+020D2 +⊊︀ U+0228A U+0FE00 +⊋︀ U+0228B U+0FE00 +⊏̸ U+0228F U+00338 +⊐̸ U+02290 U+00338 +⊓︀ U+02293 U+0FE00 +⊔︀ U+02294 U+0FE00 +⊴⃒ U+022B4 U+020D2 +⊵⃒ U+022B5 U+020D2 +⋘̸ U+022D8 U+00338 +⋙̸ U+022D9 U+00338 +⋚︀ U+022DA U+0FE00 +⋛︀ U+022DB U+0FE00 +⋵̸ U+022F5 U+00338 +⋹̸ U+022F9 U+00338 +⤳̸ U+02933 U+00338 +⧏̸ U+029CF U+00338 +⧐̸ U+029D0 U+00338 +⩭̸ U+02A6D U+00338 +⩰̸ U+02A70 U+00338 +⩽̸ U+02A7D U+00338 +⩾̸ U+02A7E U+00338 +⪡̸ U+02AA1 U+00338 +⪢̸ U+02AA2 U+00338 +⪬︀ U+02AAC U+0FE00 +⪭︀ U+02AAD U+0FE00 +⪯̸ U+02AAF U+00338 +⪰̸ U+02AB0 U+00338 +⫅̸ U+02AC5 U+00338 +⫆̸ U+02AC6 U+00338 +⫋︀ U+02ACB U+0FE00 +⫌︀ U+02ACC U+0FE00 +⫌︀ 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( + """, """, """, + "'", "'", "'", + "&", "&", "<", + ">", "<", "<", + "<", ">", ">", + "?" +); + +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 *** +" DECODED +" DECODED +" DECODED +' NOT DECODED +' DECODED +' DECODED +& DECODED +& DECODED +< DECODED +> DECODED +< DECODED +< DECODED +< DECODED +> DECODED +> DECODED +? NOT DECODED + +*** XHTML 1.0/ENT_QUOTES *** +" DECODED +" DECODED +" DECODED +' DECODED +' DECODED +' DECODED +& DECODED +& DECODED +< DECODED +> DECODED +< DECODED +< DECODED +< DECODED +> DECODED +> DECODED +? NOT DECODED + +*** HTML5/ENT_QUOTES *** +" DECODED +" DECODED +" DECODED +' DECODED +' DECODED +' DECODED +& DECODED +& DECODED +< DECODED +> DECODED +< DECODED +< DECODED +< DECODED +> DECODED +> DECODED +? NOT DECODED + +*** XML 1.0/ENT_QUOTES *** +" DECODED +" DECODED +" DECODED +' DECODED +' DECODED +' DECODED +& DECODED +& DECODED +< DECODED +> DECODED +< DECODED +< DECODED +< DECODED +> DECODED +> DECODED +? NOT DECODED + +*** HTML5/ENT_NOQUOTES *** +" NOT DECODED +" NOT DECODED +" NOT DECODED +' NOT DECODED +' NOT DECODED +' NOT DECODED +& DECODED +& DECODED +< DECODED +> DECODED +< DECODED +< DECODED +< DECODED +> DECODED +> DECODED +? NOT DECODED + +*** HTML5/ENT_COMPAT *** +" DECODED +" DECODED +" DECODED +' NOT DECODED +' NOT DECODED +' NOT DECODED +& DECODED +& DECODED +< DECODED +> DECODED +< DECODED +< DECODED +< DECODED +> DECODED +> DECODED +? NOT DECODED + +Done. |