speedy-entities 1.1.3 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # speedy-entities [![build](https://github.com/smikhalevski/speedy-entities/actions/workflows/master.yml/badge.svg?branch=master&event=push)](https://github.com/smikhalevski/speedy-entities/actions/workflows/master.yml)
1
+ # speedy-entities 🏎💨 [![build](https://github.com/smikhalevski/speedy-entities/actions/workflows/master.yml/badge.svg?branch=master&event=push)](https://github.com/smikhalevski/speedy-entities/actions/workflows/master.yml)
2
2
 
3
3
  [The fastest](#performance) XML/HTML entity decoder that supports customizable named character references.
4
4
 
@@ -8,7 +8,7 @@ npm install --save-prod speedy-entities
8
8
 
9
9
  # Usage
10
10
 
11
- ⚠️ [API documentation is available here.](https://smikhalevski.github.io/speedy-entities/)
11
+ [API documentation is available here.](https://smikhalevski.github.io/speedy-entities/)
12
12
 
13
13
  ## Preconfigured decoders
14
14
 
@@ -18,40 +18,14 @@ There are two preconfigured decoders: `decodeXml` and `decodeHtml`.
18
18
  import {decodeXml, decodeHtml} from 'speedy-entities';
19
19
 
20
20
  decodeXml('ab<'); // → "ab&lt"
21
- decodeHtml('&ltfoo&AElig'); // → "<foo\u00c6"
22
- ```
23
-
24
- By default, `decodeHtml` supports only legacy HTML entities. This allowed to reduce the bundle size to just
25
- [2.3 kB gzipped](https://bundlephobia.com/package/speedy-entities).
26
-
27
- <details>
28
- <summary>The list of legacy HTML entities</summary>
29
- <p>
30
-
31
- > `aacute` `Aacute` `acirc` `Acirc` `acute` `aelig` `AElig` `agrave` `Agrave` `amp` `AMP` `aring` `Aring` `atilde`
32
- > `Atilde` `auml` `Auml` `brvbar` `ccedil` `Ccedil` `cedil` `cent` `copy` `COPY` `curren` `deg` `divide` `eacute`
33
- > `Eacute` `ecirc` `Ecirc` `egrave` `Egrave` `eth` `ETH` `euml` `Euml` `frac12` `frac14` `frac34` `gt` `GT` `iacute`
34
- > `Iacute` `icirc` `Icirc` `iexcl` `igrave` `Igrave` `iquest` `iuml` `Iuml` `laquo` `lt` `LT` `macr` `micro` `middot`
35
- > `nbsp` `not` `ntilde` `Ntilde` `oacute` `Oacute` `ocirc` `Ocirc` `ograve` `Ograve` `ordf` `ordm` `oslash` `Oslash`
36
- > `otilde` `Otilde` `ouml` `Ouml` `para` `plusmn` `pound` `quot` `QUOT` `raquo` `reg` `REG` `sect` `shy` `sup1` `sup2`
37
- > `sup3` `szlig` `thorn` `THORN` `times` `uacute` `Uacute` `ucirc` `Ucirc` `ugrave` `Ugrave` `uml` `uuml` `Uuml`
38
- > `yacute` `Yacute` `yen` `yuml`
39
21
 
40
- </p>
41
- </details>
42
-
43
- To decode [all HTML entities](https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references)
44
- import from `speedy-entities/lib/full`. The size of this bundle is 12.5 kB gzipped.
45
-
46
- ```ts
47
- import {decodeXml, decodeHtml} from 'speedy-entities/lib/full';
22
+ decodeHtml('&ltfoo&AElig'); // → "<foo\u00c6"
48
23
 
49
- decodeXml('&#X61;&#98;&lt;'); // → "ab&lt"
50
24
  decodeHtml('&NotNestedGreaterGreater;&CounterClockwiseContourIntegral;');
51
25
  // → "\u2aa2\u0338\u2233"
52
26
  ```
53
27
 
54
- You can manually add entities that `decodeXml` and `decodeHtml` would recognize:
28
+ You can add custom entities that `decodeXml` and `decodeHtml` would recognize:
55
29
 
56
30
  ```ts
57
31
  import {decodeXml, decodeHtml, xmlEntityManager, htmlEntityManager} from 'speedy-entities';
@@ -65,13 +39,13 @@ decodeHtml('&bar;'); // → "nope"
65
39
 
66
40
  ## Custom decoders
67
41
 
68
- You can create a custom decoder that would recognize custom entities.
42
+ You can create a custom decoder that would recognize numeric and custom entities.
69
43
 
70
44
  ```ts
71
- import {createEntityDecoder, createEntityManager} from 'speedy-entities';
45
+ import {createEntityDecoder, EntityManager} from 'speedy-entities';
72
46
 
73
47
  // Create an entity manager
74
- const entityManager = createEntityManager();
48
+ const entityManager = new EntityManager();
75
49
 
76
50
  // Register a new entity
77
51
  entityManager.set('foo', 'okay');
@@ -106,13 +80,13 @@ Clone this repo and use `npm ci && npm run perf` to run the performance testsuit
106
80
 
107
81
  Results are in millions of operations per second. The higher number is better.
108
82
 
109
- | | speedy-entities <br/>`decodeXml` | [fb55/entities](https://github.com/fb55/entities) <br/>`decodeXML` | speedy-entities <br/>`decodeHtml` | [fb55/entities](https://github.com/fb55/entities) <br/>`decodeHTML` |
110
- | ----------------------------- | ---: | ---: | ---: | ---: |
111
- | `"&#X61;&#x62;&#x63;"` | 2.36 | 1.25 | 2.29 | 0.88 |
112
- | `"&#X61&#x62&#x63"` | 4.61 | 3.00 | 2.39 | 0.72 |
113
- | `"&#97;&#98;&#99;"` | 2.24 | 0.71 | 2.25 | 0.92 |
114
- | `"&#97&#98&#99"` | 5.09 | 3.07 | 2.21 | 0.88 |
115
- | `"&amp;&lt;&gt;"` | 3.98 | 1.28 | 3.34 | 1.06 |
116
- | `"&amp&lt&gt"` | 4.08 | 3.10 | 3.46 | 1.02 |
117
- | `"&NotNestedGreaterGreater;"` | 6.47 | 1.84 | 3.80 | 1.64 |
118
- | `"&NotNestedGreaterGreater"` | 6.44 | 2.74 | 4.00 | 2.41 |
83
+ | | speedy-entities <br/>`decodeXml` | [fb55/entities](https://github.com/fb55/entities) <br/>`decodeXML` | speedy-entities <br/>`decodeHtml` | [fb55/entities](https://github.com/fb55/entities) <br/>`decodeHTML` |
84
+ |-------------------------------|---------------------------------:| ---: | ---: | ---: |
85
+ | `"&#X61;&#x62;&#x63;"` | 3.9 | 2.5 | 4.3 | 2.5 |
86
+ | `"&#X61&#x62&#x63"` | 5.1 | 2.7 | 4.3 | 2.4 |
87
+ | `"&#97;&#98;&#99;"` | 4.5 | 2.4 | 4.5 | 2.4 |
88
+ | `"&#97&#98&#99"` | 5.5 | 2.4 | 4.2 | 2.3 |
89
+ | `"&amp;&lt;&gt;"` | 3.8 | 3.3 | 3.7 | 3.1 |
90
+ | `"&amp&lt&gt"` | 3.6 | 3.4 | 3.6 | 3.3 |
91
+ | `"&NotNestedGreaterGreater;"` | 5.3 | 4.6 | 3.9 | 3.2 |
92
+ | `"&NotNestedGreaterGreater"` | 5.3 | 4.6 | 3.9 | 3.3 |
@@ -3,7 +3,8 @@ export interface IEntity {
3
3
  value: string;
4
4
  legacy: boolean;
5
5
  }
6
- export interface IEntityManager {
6
+ export declare class EntityManager {
7
+ private _trie;
7
8
  /**
8
9
  * Sets a new mapping from entity name to a replacement value.
9
10
  *
@@ -23,7 +24,7 @@ export interface IEntityManager {
23
24
  * Searches an entity name in the `input` string staring from `offset`.
24
25
  *
25
26
  * ```ts
26
- * const entityManager = createEntityManager();
27
+ * const entityManager = new EntityManager();
27
28
  *
28
29
  * entityManager.set('foo', 'bar');
29
30
  *
@@ -36,7 +37,3 @@ export interface IEntityManager {
36
37
  */
37
38
  search(input: string, offset: number): IEntity | undefined;
38
39
  }
39
- /**
40
- * Creates a new {@link IEntityManager}.
41
- */
42
- export declare function createEntityManager(): IEntityManager;
@@ -0,0 +1,49 @@
1
+ import { createTrieNode, searchTrie, setTrie } from '@smikhalevski/trie';
2
+ var EntityManager = /** @class */ (function () {
3
+ function EntityManager() {
4
+ this._trie = createTrieNode();
5
+ }
6
+ /**
7
+ * Sets a new mapping from entity name to a replacement value.
8
+ *
9
+ * @param name The entity name.
10
+ * @param value The value that the entity reference is replaced with.
11
+ * @param legacy If `true` then entity reference doesn't require a trailing semicolon.
12
+ */
13
+ EntityManager.prototype.set = function (name, value, legacy) {
14
+ return setTrie(this._trie, name, { name: name, value: value, legacy: legacy || false });
15
+ };
16
+ /**
17
+ * Sets multiple entity mappings.
18
+ *
19
+ * @param entities The map from an entity name to a value.
20
+ * @param legacy If `true` then entity reference doesn't require a trailing semicolon.
21
+ */
22
+ EntityManager.prototype.setAll = function (entities, legacy) {
23
+ for (var _i = 0, _a = Object.entries(entities); _i < _a.length; _i++) {
24
+ var _b = _a[_i], name_1 = _b[0], value = _b[1];
25
+ this.set(name_1, value, legacy);
26
+ }
27
+ };
28
+ /**
29
+ * Searches an entity name in the `input` string staring from `offset`.
30
+ *
31
+ * ```ts
32
+ * const entityManager = new EntityManager();
33
+ *
34
+ * entityManager.set('foo', 'bar');
35
+ *
36
+ * entityManager.search('__foo__', 2);
37
+ * // → {key: "foo", value: "bar", legacy: false}
38
+ * ```
39
+ *
40
+ * @param input The string to search entity names in.
41
+ * @param offset The offset in the `input` to start searching from.
42
+ */
43
+ EntityManager.prototype.search = function (input, offset) {
44
+ var _a;
45
+ return (_a = searchTrie(this._trie, input, offset)) === null || _a === void 0 ? void 0 : _a.value;
46
+ };
47
+ return EntityManager;
48
+ }());
49
+ export { EntityManager };
@@ -1,4 +1,4 @@
1
- import { IEntityManager } from './createEntityManager';
1
+ import { EntityManager } from './EntityManager';
2
2
  export interface IEntityDecoderOptions {
3
3
  /**
4
4
  * If `true` then numeric character references must be terminated with a semicolon.
@@ -26,4 +26,4 @@ export interface IEntityDecoderOptions {
26
26
  * @param entityManager An entity manager that defines named entities.
27
27
  * @param options The decoder options.
28
28
  */
29
- export declare function createEntityDecoder(entityManager: IEntityManager, options?: IEntityDecoderOptions): (input: string) => string;
29
+ export declare function createEntityDecoder(entityManager: EntityManager, options?: IEntityDecoderOptions): (input: string) => string;
@@ -1,15 +1,4 @@
1
- import { all, char } from 'tokenizer-dsl';
2
1
  import { fromCodePoint } from './fromCodePoint';
3
- // [0-9]
4
- var isDecNumberChar = function (charCode) { return charCode >= 48 /* '0' */ && charCode <= 57 /* '9' */; };
5
- // [0-9A-Fa-f]
6
- var isHexNumberChar = function (charCode) {
7
- return charCode >= 48 /* '0' */ && charCode <= 57 /* '9' */
8
- || charCode >= 97 /* 'a' */ && charCode <= 102 /* 'f' */
9
- || charCode >= 65 /* 'A' */ && charCode <= 70 /* 'F' */;
10
- };
11
- var takeDecNumber = all(char(isDecNumberChar), { minimumCount: 2, maximumCount: 6 });
12
- var takeHexNumber = all(char(isHexNumberChar), { minimumCount: 2, maximumCount: 6 });
13
2
  /**
14
3
  * Creates an entity decoder that rewrites numeric and named entities found in input to their respective values.
15
4
  *
@@ -18,13 +7,13 @@ var takeHexNumber = all(char(isHexNumberChar), { minimumCount: 2, maximumCount:
18
7
  */
19
8
  export function createEntityDecoder(entityManager, options) {
20
9
  options || (options = {});
21
- var numericCharacterReferenceTerminated = options.numericCharacterReferenceTerminated, illegalCodePointsForbidden = options.illegalCodePointsForbidden, replacementChar = options.replacementChar;
10
+ var _a = options.numericCharacterReferenceTerminated, numericCharacterReferenceTerminated = _a === void 0 ? false : _a, _b = options.illegalCodePointsForbidden, illegalCodePointsForbidden = _b === void 0 ? false : _b, _c = options.replacementChar, replacementChar = _c === void 0 ? '\ufffd' : _c;
22
11
  return function (input) {
23
12
  var output = '';
24
13
  var textIndex = 0;
25
14
  var charIndex = 0;
26
- var charCount = input.length;
27
- while (charIndex < charCount) {
15
+ var inputLength = input.length;
16
+ while (charIndex < inputLength) {
28
17
  var startIndex = input.indexOf('&', charIndex);
29
18
  if (startIndex === -1) {
30
19
  break;
@@ -33,39 +22,65 @@ export function createEntityDecoder(entityManager, options) {
33
22
  var entityValue = void 0;
34
23
  var endIndex = void 0;
35
24
  // Numeric character reference
36
- if (input.charCodeAt(++startIndex) === 35 /* '#' */) {
37
- var radix = void 0;
25
+ if (input.charCodeAt(++startIndex) === 35 /* # */) {
38
26
  var radixCharCode = input.charCodeAt(++startIndex);
39
- if (radixCharCode === 120 /* 'x' */ || radixCharCode === 88 /* 'X' */) {
40
- endIndex = takeHexNumber(input, ++startIndex);
41
- radix = 16;
27
+ var charCode = void 0;
28
+ var digitCount = 0;
29
+ var codePoint = 0;
30
+ if (radixCharCode === 120 /* x */ || radixCharCode === 88 /* X */) {
31
+ endIndex = ++startIndex;
32
+ // Parse hexadecimal
33
+ while (digitCount < 6 && endIndex < inputLength) {
34
+ charCode = input.charCodeAt(endIndex);
35
+ if (charCode >= 48 /* 0 */ && charCode <= 57 /* 9 */) {
36
+ codePoint = codePoint * 16 + (charCode - (charCode & 112));
37
+ ++digitCount;
38
+ ++endIndex;
39
+ }
40
+ else if (charCode >= 97 /* a */ && charCode <= 102 /* f */ || charCode >= 65 /* A */ && charCode <= 70 /* F */) {
41
+ codePoint = codePoint * 16 + (charCode - (charCode & 112)) + 9;
42
+ ++digitCount;
43
+ ++endIndex;
44
+ }
45
+ else {
46
+ break;
47
+ }
48
+ }
42
49
  }
43
50
  else {
44
- endIndex = takeDecNumber(input, startIndex);
45
- radix = 10;
51
+ endIndex = startIndex;
52
+ // Parse decimal
53
+ while (digitCount < 6 && endIndex < inputLength) {
54
+ charCode = input.charCodeAt(endIndex);
55
+ if (charCode >= 48 /* 0 */ && charCode <= 57 /* 9 */) {
56
+ codePoint = codePoint * 10 + (charCode - (charCode & 112));
57
+ ++digitCount;
58
+ ++endIndex;
59
+ }
60
+ else {
61
+ break;
62
+ }
63
+ }
46
64
  }
47
- if (endIndex !== -1 /* NO_MATCH */) {
48
- var terminated = input.charCodeAt(endIndex) === 59 /* ';' */;
65
+ if (digitCount >= 2) {
66
+ var terminated = input.charCodeAt(endIndex) === 59 /* ; */;
49
67
  if (terminated || !numericCharacterReferenceTerminated) {
50
- entityValue = fromCodePoint(parseInt(input.substring(startIndex, endIndex), radix), replacementChar, illegalCodePointsForbidden);
68
+ entityValue = fromCodePoint(codePoint, replacementChar, illegalCodePointsForbidden);
51
69
  }
52
70
  if (terminated) {
53
- endIndex++;
71
+ ++endIndex;
54
72
  }
55
73
  }
56
- else {
57
- endIndex = startIndex;
58
- }
59
74
  }
60
75
  else {
61
76
  // Named character reference
62
77
  endIndex = startIndex;
63
78
  var entity = entityManager.search(input, startIndex);
64
79
  if (entity != null) {
65
- endIndex = startIndex + entity.name.length;
66
- var terminated = input.charCodeAt(endIndex) === 59 /* ';' */;
80
+ endIndex += entity.name.length;
81
+ var terminated = input.charCodeAt(endIndex) === 59 /* ; */;
67
82
  if (terminated) {
68
- endIndex++;
83
+ ++endIndex;
69
84
  }
70
85
  if (terminated || entity.legacy) {
71
86
  entityValue = entity.value;
@@ -81,8 +96,8 @@ export function createEntityDecoder(entityManager, options) {
81
96
  if (textIndex === 0) {
82
97
  return input;
83
98
  }
84
- if (textIndex !== charCount) {
85
- output += input.substr(textIndex);
99
+ if (textIndex !== inputLength) {
100
+ output += input.substring(textIndex);
86
101
  }
87
102
  return output;
88
103
  };
@@ -1,6 +1,8 @@
1
+ import { EntityManager } from './EntityManager';
2
+ export declare const htmlEntities: Record<string, string>;
1
3
  export declare const legacyHtmlEntities: Record<string, string>;
2
4
  /**
3
5
  * An entity manager that supports HTML entities.
4
6
  */
5
- export declare const htmlEntityManager: import("./createEntityManager").IEntityManager;
7
+ export declare const htmlEntityManager: EntityManager;
6
8
  export declare const decodeHtml: (input: string) => string;
package/lib/decodeHtml.js CHANGED
@@ -1,11 +1,14 @@
1
+ import entitiesData from './gen/entities.json';
1
2
  import legacyEntitiesData from './gen/legacy-entities.json';
2
3
  import { createEntityDecoder } from './createEntityDecoder';
3
- import { createEntityManager } from './createEntityManager';
4
+ import { EntityManager } from './EntityManager';
4
5
  import { unpackMap } from './unpackMap';
6
+ export var htmlEntities = unpackMap(entitiesData);
5
7
  export var legacyHtmlEntities = unpackMap(legacyEntitiesData);
6
8
  /**
7
9
  * An entity manager that supports HTML entities.
8
10
  */
9
- export var htmlEntityManager = createEntityManager();
11
+ export var htmlEntityManager = new EntityManager();
12
+ htmlEntityManager.setAll(htmlEntities);
10
13
  htmlEntityManager.setAll(legacyHtmlEntities, true);
11
14
  export var decodeHtml = createEntityDecoder(htmlEntityManager);
@@ -1,8 +1,9 @@
1
+ import { EntityManager } from './EntityManager';
1
2
  export declare const xmlEntities: Record<string, string>;
2
3
  /**
3
4
  * An entity manager that supports XML entities.
4
5
  */
5
- export declare const xmlEntityManager: import("./createEntityManager").IEntityManager;
6
+ export declare const xmlEntityManager: EntityManager;
6
7
  /**
7
8
  * Decodes XML entities in a string.
8
9
  */
package/lib/decodeXml.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { createEntityDecoder } from './createEntityDecoder';
2
- import { createEntityManager } from './createEntityManager';
2
+ import { EntityManager } from './EntityManager';
3
3
  export var xmlEntities = {
4
4
  amp: '&',
5
5
  apos: '\'',
@@ -10,7 +10,7 @@ export var xmlEntities = {
10
10
  /**
11
11
  * An entity manager that supports XML entities.
12
12
  */
13
- export var xmlEntityManager = createEntityManager();
13
+ export var xmlEntityManager = new EntityManager();
14
14
  xmlEntityManager.setAll(xmlEntities);
15
15
  /**
16
16
  * Decodes XML entities in a string.
@@ -2,4 +2,4 @@
2
2
  * @see https://github.com/mathiasbynens/he/blob/master/data/decode-map-overrides.json
3
3
  * @see https://github.com/mathiasbynens/he/blob/master/data/invalid-character-reference-code-points.json
4
4
  */
5
- export declare function fromCodePoint(codePoint: number, replacementChar?: string, strict?: boolean): string;
5
+ export declare function fromCodePoint(codePoint: number, replacementChar: string, illegalCodePointsForbidden: boolean): string;
@@ -7,22 +7,23 @@ var overridesMap = unpackMap(overridesData);
7
7
  * @see https://github.com/mathiasbynens/he/blob/master/data/decode-map-overrides.json
8
8
  * @see https://github.com/mathiasbynens/he/blob/master/data/invalid-character-reference-code-points.json
9
9
  */
10
- export function fromCodePoint(codePoint, replacementChar, strict) {
11
- replacementChar || (replacementChar = '\ufffd');
10
+ export function fromCodePoint(codePoint, replacementChar, illegalCodePointsForbidden) {
12
11
  if (codePoint >= 0xd800 && codePoint <= 0xdfff || codePoint > 0x10ffff) {
13
- if (strict) {
12
+ if (illegalCodePointsForbidden) {
14
13
  die('Character reference outside the permissible Unicode range');
15
14
  }
16
15
  return replacementChar;
17
16
  }
18
- var overrideChar = overridesMap[codePoint];
19
- if (overrideChar != null) {
20
- if (strict) {
21
- die('Disallowed character reference');
17
+ if (codePoint === 0 || codePoint >= 128 && codePoint <= 159) {
18
+ var overrideChar = overridesMap[codePoint];
19
+ if (overrideChar != null) {
20
+ if (illegalCodePointsForbidden) {
21
+ die('Disallowed character reference');
22
+ }
23
+ return overrideChar;
22
24
  }
23
- return overrideChar;
24
25
  }
25
- if (strict && illegalCodePoints.indexOf(codePoint) !== -1) {
26
+ if (illegalCodePointsForbidden && illegalCodePoints.includes(codePoint)) {
26
27
  die('Disallowed character reference');
27
28
  }
28
29
  if (codePoint > 0xffff) {
package/lib/index-cjs.js CHANGED
@@ -1 +1,388 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("tokenizer-dsl"),r=require("@smikhalevski/trie"),t=[1,2,3,4,5,6,7,8,11,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,64976,64977,64978,64979,64980,64981,64982,64983,64984,64985,64986,64987,64988,64989,64990,64991,64992,64993,64994,64995,64996,64997,64998,64999,65e3,65001,65002,65003,65004,65005,65006,65007,65534,65535,131070,131071,196606,196607,262142,262143,327678,327679,393214,393215,458750,458751,524286,524287,589822,589823,655358,655359,720894,720895,786430,786431,851966,851967,917502,917503,983038,983039,1048574,1048575,1114110,1114111],a="0 1ekd 128 6gc 130 6ca 131 b6 132 6ce 133 6cm 134 6cg 135 6ch 136 jq 137 6cw 138 9s 139 6d5 140 9e 142 al 145 6c8 146 6c9 147 6cc 148 6cd 149 6ci 150 6c3 151 6c4 152 kc 153 6jm 154 9t 155 6d6 156 9f 158 am 159 ag";function c(e){throw new Error(e)}var i=String.fromCharCode,n=65535;function u(e){for(var r={},t=e.split(" "),a=0;a<t.length;a+=2)r[t[a]]=l(t[a+1]);return r}function l(e){for(var r="",t=parseInt(e,36);t>0;)r+=i(t%n),t=(t-t%n)/n;return r}var o=u(a);function s(e,r,a){if(r||(r="�"),e>=55296&&e<=57343||e>1114111)return a&&c("Character reference outside the permissible Unicode range"),r;var n=o[e];return null!=n?(a&&c("Disallowed character reference"),n):(a&&-1!==t.indexOf(e)&&c("Disallowed character reference"),e>65535?i((e-=65536)>>>10&1023|55296)+i(56320|1023&e):i(e))}var d=function(e){return e>=48&&e<=57},m=function(e){return e>=48&&e<=57||e>=97&&e<=102||e>=65&&e<=70},v=e.all(e.char(d),{minimumCount:2,maximumCount:6}),g=e.all(e.char(m),{minimumCount:2,maximumCount:6});function f(e,r){r||(r={});var t=r.numericCharacterReferenceTerminated,a=r.illegalCodePointsForbidden,c=r.replacementChar;return function(r){for(var i="",n=0,u=0,l=r.length;u<l;){var o=r.indexOf("&",u);if(-1===o)break;u=o;var d=void 0,m=void 0;if(35===r.charCodeAt(++o)){var f=void 0,h=r.charCodeAt(++o);if(120===h||88===h?(m=g(r,++o),f=16):(m=v(r,o),f=10),-1!==m)!(p=59===r.charCodeAt(m))&&t||(d=s(parseInt(r.substring(o,m),f),c,a)),p&&m++;else m=o}else{m=o;var p,x=e.search(r,o);if(null!=x)m=o+x.name.length,(p=59===r.charCodeAt(m))&&m++,(p||x.legacy)&&(d=x.value)}null!=d&&(i+=n!==u?r.substring(n,u)+d:d,n=m),u=m}return 0===n?r:(n!==l&&(i+=r.substr(n)),i)}}function h(){var e=r.createTrieNode(),t=function(t,a,c){return void 0===c&&(c=!1),r.setTrie(e,t,{name:t,value:a,legacy:c})};return{set:t,setAll:function(e,r){void 0===r&&(r=!1);for(var a=0,c=Object.entries(e);a<c.length;a++){var i=c[a],n=i[0],u=i[1];t(n,u,r)}},search:function(t,a){var c;return null===(c=r.searchTrie(e,t,a))||void 0===c?void 0:c.value}}}var p="aacute 69 Aacute 5d acirc 6a Acirc 5e acute 50 aelig 6e AElig 5i agrave 68 Agrave 5c amp 12 AMP 12 aring 6d Aring 5h atilde 6b Atilde 5f auml 6c Auml 5g brvbar 4m ccedil 6f Ccedil 5j cedil 54 cent 4i copy 4p COPY 4p curren 4k deg 4w divide 6v eacute 6h Eacute 5l ecirc 6i Ecirc 5m egrave 6g Egrave 5k eth 6o ETH 5s euml 6j Euml 5n frac12 59 frac14 58 frac34 5a gt 1q GT 1q iacute 6l Iacute 5p icirc 6m Icirc 5q iexcl 4h igrave 6k Igrave 5o iquest 5b iuml 6n Iuml 5r laquo 4r lt 1o LT 1o macr 4v micro 51 middot 53 nbsp 4g not 4s ntilde 6p Ntilde 5t oacute 6r Oacute 5v ocirc 6s Ocirc 5w ograve 6q Ograve 5u ordf 4q ordm 56 oslash 6w Oslash 60 otilde 6t Otilde 5x ouml 6u Ouml 5y para 52 plusmn 4x pound 4j quot y QUOT y raquo 57 reg 4u REG 4u sect 4n shy 4t sup1 55 sup2 4y sup3 4z szlig 67 thorn 72 THORN 66 times 5z uacute 6y Uacute 62 ucirc 6z Ucirc 63 ugrave 6x Ugrave 61 uml 4o uuml 70 Uuml 64 yacute 71 Yacute 65 yen 4l yuml 73",x=u(p),y=h();y.setAll(x,!0);var C=f(y),A={amp:"&",apos:"'",gt:">",lt:"<",quot:'"'},b=h();b.setAll(A);var E=f(b,{numericCharacterReferenceTerminated:!0});exports.createEntityDecoder=f,exports.createEntityManager=h,exports.decodeHtml=C,exports.decodeXml=E,exports.htmlEntityManager=y,exports.legacyHtmlEntities=x,exports.xmlEntities=A,exports.xmlEntityManager=b;
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var trie = require('@smikhalevski/trie');
6
+
7
+ var illegalCodePoints = [
8
+ 1,
9
+ 2,
10
+ 3,
11
+ 4,
12
+ 5,
13
+ 6,
14
+ 7,
15
+ 8,
16
+ 11,
17
+ 13,
18
+ 14,
19
+ 15,
20
+ 16,
21
+ 17,
22
+ 18,
23
+ 19,
24
+ 20,
25
+ 21,
26
+ 22,
27
+ 23,
28
+ 24,
29
+ 25,
30
+ 26,
31
+ 27,
32
+ 28,
33
+ 29,
34
+ 30,
35
+ 31,
36
+ 127,
37
+ 128,
38
+ 129,
39
+ 130,
40
+ 131,
41
+ 132,
42
+ 133,
43
+ 134,
44
+ 135,
45
+ 136,
46
+ 137,
47
+ 138,
48
+ 139,
49
+ 140,
50
+ 141,
51
+ 142,
52
+ 143,
53
+ 144,
54
+ 145,
55
+ 146,
56
+ 147,
57
+ 148,
58
+ 149,
59
+ 150,
60
+ 151,
61
+ 152,
62
+ 153,
63
+ 154,
64
+ 155,
65
+ 156,
66
+ 157,
67
+ 158,
68
+ 159,
69
+ 64976,
70
+ 64977,
71
+ 64978,
72
+ 64979,
73
+ 64980,
74
+ 64981,
75
+ 64982,
76
+ 64983,
77
+ 64984,
78
+ 64985,
79
+ 64986,
80
+ 64987,
81
+ 64988,
82
+ 64989,
83
+ 64990,
84
+ 64991,
85
+ 64992,
86
+ 64993,
87
+ 64994,
88
+ 64995,
89
+ 64996,
90
+ 64997,
91
+ 64998,
92
+ 64999,
93
+ 65000,
94
+ 65001,
95
+ 65002,
96
+ 65003,
97
+ 65004,
98
+ 65005,
99
+ 65006,
100
+ 65007,
101
+ 65534,
102
+ 65535,
103
+ 131070,
104
+ 131071,
105
+ 196606,
106
+ 196607,
107
+ 262142,
108
+ 262143,
109
+ 327678,
110
+ 327679,
111
+ 393214,
112
+ 393215,
113
+ 458750,
114
+ 458751,
115
+ 524286,
116
+ 524287,
117
+ 589822,
118
+ 589823,
119
+ 655358,
120
+ 655359,
121
+ 720894,
122
+ 720895,
123
+ 786430,
124
+ 786431,
125
+ 851966,
126
+ 851967,
127
+ 917502,
128
+ 917503,
129
+ 983038,
130
+ 983039,
131
+ 1048574,
132
+ 1048575,
133
+ 1114110,
134
+ 1114111
135
+ ];
136
+
137
+ var overridesData = "0 1ekd 128 6gc 130 6ca 131 b6 132 6ce 133 6cm 134 6cg 135 6ch 136 jq 137 6cw 138 9s 139 6d5 140 9e 142 al 145 6c8 146 6c9 147 6cc 148 6cd 149 6ci 150 6c3 151 6c4 152 kc 153 6jm 154 9t 155 6d6 156 9f 158 am 159 ag";
138
+
139
+ function die(message) {
140
+ throw new Error(message);
141
+ }
142
+ var fromCharCode = String.fromCharCode;
143
+
144
+ var OFFSET = 0xffff;
145
+ /**
146
+ * Unpacks mapping created at build time.
147
+ */
148
+ function unpackMap(data) {
149
+ var unpackedMap = {};
150
+ var tokens = data.split(' ');
151
+ for (var i = 0; i < tokens.length; i += 2) {
152
+ unpackedMap[tokens[i]] = unpackValue(tokens[i + 1]);
153
+ }
154
+ return unpackedMap;
155
+ }
156
+ function unpackValue(data) {
157
+ var value = '';
158
+ var packedValue = parseInt(data, 36);
159
+ while (packedValue > 0) {
160
+ value += fromCharCode(packedValue % OFFSET);
161
+ packedValue = (packedValue - packedValue % OFFSET) / OFFSET;
162
+ }
163
+ return value;
164
+ }
165
+
166
+ var overridesMap = unpackMap(overridesData);
167
+ /**
168
+ * @see https://github.com/mathiasbynens/he/blob/master/data/decode-map-overrides.json
169
+ * @see https://github.com/mathiasbynens/he/blob/master/data/invalid-character-reference-code-points.json
170
+ */
171
+ function fromCodePoint(codePoint, replacementChar, illegalCodePointsForbidden) {
172
+ if (codePoint >= 0xd800 && codePoint <= 0xdfff || codePoint > 0x10ffff) {
173
+ if (illegalCodePointsForbidden) {
174
+ die('Character reference outside the permissible Unicode range');
175
+ }
176
+ return replacementChar;
177
+ }
178
+ if (codePoint === 0 || codePoint >= 128 && codePoint <= 159) {
179
+ var overrideChar = overridesMap[codePoint];
180
+ if (overrideChar != null) {
181
+ if (illegalCodePointsForbidden) {
182
+ die('Disallowed character reference');
183
+ }
184
+ return overrideChar;
185
+ }
186
+ }
187
+ if (illegalCodePointsForbidden && illegalCodePoints.includes(codePoint)) {
188
+ die('Disallowed character reference');
189
+ }
190
+ if (codePoint > 0xffff) {
191
+ codePoint -= 0x10000;
192
+ return fromCharCode(codePoint >>> 10 & 0x3ff | 0xd800) + fromCharCode(0xdc00 | codePoint & 0x3ff);
193
+ }
194
+ return fromCharCode(codePoint);
195
+ }
196
+
197
+ /**
198
+ * Creates an entity decoder that rewrites numeric and named entities found in input to their respective values.
199
+ *
200
+ * @param entityManager An entity manager that defines named entities.
201
+ * @param options The decoder options.
202
+ */
203
+ function createEntityDecoder(entityManager, options) {
204
+ options || (options = {});
205
+ var _a = options.numericCharacterReferenceTerminated, numericCharacterReferenceTerminated = _a === void 0 ? false : _a, _b = options.illegalCodePointsForbidden, illegalCodePointsForbidden = _b === void 0 ? false : _b, _c = options.replacementChar, replacementChar = _c === void 0 ? '\ufffd' : _c;
206
+ return function (input) {
207
+ var output = '';
208
+ var textIndex = 0;
209
+ var charIndex = 0;
210
+ var inputLength = input.length;
211
+ while (charIndex < inputLength) {
212
+ var startIndex = input.indexOf('&', charIndex);
213
+ if (startIndex === -1) {
214
+ break;
215
+ }
216
+ charIndex = startIndex;
217
+ var entityValue = void 0;
218
+ var endIndex = void 0;
219
+ // Numeric character reference
220
+ if (input.charCodeAt(++startIndex) === 35 /* # */) {
221
+ var radixCharCode = input.charCodeAt(++startIndex);
222
+ var charCode = void 0;
223
+ var digitCount = 0;
224
+ var codePoint = 0;
225
+ if (radixCharCode === 120 /* x */ || radixCharCode === 88 /* X */) {
226
+ endIndex = ++startIndex;
227
+ // Parse hexadecimal
228
+ while (digitCount < 6 && endIndex < inputLength) {
229
+ charCode = input.charCodeAt(endIndex);
230
+ if (charCode >= 48 /* 0 */ && charCode <= 57 /* 9 */) {
231
+ codePoint = codePoint * 16 + (charCode - (charCode & 112));
232
+ ++digitCount;
233
+ ++endIndex;
234
+ }
235
+ else if (charCode >= 97 /* a */ && charCode <= 102 /* f */ || charCode >= 65 /* A */ && charCode <= 70 /* F */) {
236
+ codePoint = codePoint * 16 + (charCode - (charCode & 112)) + 9;
237
+ ++digitCount;
238
+ ++endIndex;
239
+ }
240
+ else {
241
+ break;
242
+ }
243
+ }
244
+ }
245
+ else {
246
+ endIndex = startIndex;
247
+ // Parse decimal
248
+ while (digitCount < 6 && endIndex < inputLength) {
249
+ charCode = input.charCodeAt(endIndex);
250
+ if (charCode >= 48 /* 0 */ && charCode <= 57 /* 9 */) {
251
+ codePoint = codePoint * 10 + (charCode - (charCode & 112));
252
+ ++digitCount;
253
+ ++endIndex;
254
+ }
255
+ else {
256
+ break;
257
+ }
258
+ }
259
+ }
260
+ if (digitCount >= 2) {
261
+ var terminated = input.charCodeAt(endIndex) === 59 /* ; */;
262
+ if (terminated || !numericCharacterReferenceTerminated) {
263
+ entityValue = fromCodePoint(codePoint, replacementChar, illegalCodePointsForbidden);
264
+ }
265
+ if (terminated) {
266
+ ++endIndex;
267
+ }
268
+ }
269
+ }
270
+ else {
271
+ // Named character reference
272
+ endIndex = startIndex;
273
+ var entity = entityManager.search(input, startIndex);
274
+ if (entity != null) {
275
+ endIndex += entity.name.length;
276
+ var terminated = input.charCodeAt(endIndex) === 59 /* ; */;
277
+ if (terminated) {
278
+ ++endIndex;
279
+ }
280
+ if (terminated || entity.legacy) {
281
+ entityValue = entity.value;
282
+ }
283
+ }
284
+ }
285
+ if (entityValue != null) {
286
+ output += textIndex !== charIndex ? input.substring(textIndex, charIndex) + entityValue : entityValue;
287
+ textIndex = endIndex;
288
+ }
289
+ charIndex = endIndex;
290
+ }
291
+ if (textIndex === 0) {
292
+ return input;
293
+ }
294
+ if (textIndex !== inputLength) {
295
+ output += input.substring(textIndex);
296
+ }
297
+ return output;
298
+ };
299
+ }
300
+
301
+ var EntityManager = /** @class */ (function () {
302
+ function EntityManager() {
303
+ this._trie = trie.createTrieNode();
304
+ }
305
+ /**
306
+ * Sets a new mapping from entity name to a replacement value.
307
+ *
308
+ * @param name The entity name.
309
+ * @param value The value that the entity reference is replaced with.
310
+ * @param legacy If `true` then entity reference doesn't require a trailing semicolon.
311
+ */
312
+ EntityManager.prototype.set = function (name, value, legacy) {
313
+ return trie.setTrie(this._trie, name, { name: name, value: value, legacy: legacy || false });
314
+ };
315
+ /**
316
+ * Sets multiple entity mappings.
317
+ *
318
+ * @param entities The map from an entity name to a value.
319
+ * @param legacy If `true` then entity reference doesn't require a trailing semicolon.
320
+ */
321
+ EntityManager.prototype.setAll = function (entities, legacy) {
322
+ for (var _i = 0, _a = Object.entries(entities); _i < _a.length; _i++) {
323
+ var _b = _a[_i], name_1 = _b[0], value = _b[1];
324
+ this.set(name_1, value, legacy);
325
+ }
326
+ };
327
+ /**
328
+ * Searches an entity name in the `input` string staring from `offset`.
329
+ *
330
+ * ```ts
331
+ * const entityManager = new EntityManager();
332
+ *
333
+ * entityManager.set('foo', 'bar');
334
+ *
335
+ * entityManager.search('__foo__', 2);
336
+ * // → {key: "foo", value: "bar", legacy: false}
337
+ * ```
338
+ *
339
+ * @param input The string to search entity names in.
340
+ * @param offset The offset in the `input` to start searching from.
341
+ */
342
+ EntityManager.prototype.search = function (input, offset) {
343
+ var _a;
344
+ return (_a = trie.searchTrie(this._trie, input, offset)) === null || _a === void 0 ? void 0 : _a.value;
345
+ };
346
+ return EntityManager;
347
+ }());
348
+
349
+ var entitiesData = "abreve 77 Abreve 76 ac 6ri acd 6rj acE vyl8r acy ts Acy sw af 6e9 afr 1pcodnb Afr 1pbnuwh alefsym 6k5 aleph 6k5 alpha q9 Alpha pd amacr 75 Amacr 74 amalg 8cf and 6qv And 8cz andand 8d1 andd 8d8 andslope 8d4 andv 8d6 ang 6qo ange 884 angle 6qo angmsd 6qp angmsdaa 888 angmsdab 889 angmsdac 88a angmsdad 88b angmsdae 88c angmsdaf 88d angmsdag 88e angmsdah 88f angrt 6qn angrtvb 6v2 angrtvbd 87x angsph 6qq angst 5h angzarr 70c aogon 79 Aogon 78 aopf 1pepf4z Aopf 1pdowe5 ap 6rs apacir 8dr ape 6ru apE 8ds apid 6rv apos 13 ApplyFunction 6e9 approx 6rs approxeq 6ru ascr 1p8manz Ascr 1p7lrx5 Assign 6s4 ast 16 asymp 6rs asympeq 6rx awconint 6r7 awint 8b5 backcong 6rw backepsilon s6 backprime 6d1 backsim 6rh backsimeq 6vh Backslash 6qe Barv 8h3 barvee 6v1 barwed 6x1 Barwed 6x2 barwedge 6x1 bbrk 71x bbrktbrk 71y bcong 6rw bcy tt Bcy sx bdquo 6ce becaus 6r9 because 6r9 Because 6r9 bemptyv 88g bepsi s6 bernou 6jw Bernoullis 6jw beta qa Beta pe beth 6k6 between 6ss bfr 1pcps7q Bfr 1pbp9gw bigcap 6v6 bigcirc 7hr bigcup 6v7 bigodot 8ao bigoplus 8ap bigotimes 8aq bigsqcup 8au bigstar 7id bigtriangledown 7gd bigtriangleup 7g3 biguplus 8as bigvee 6v5 bigwedge 6v4 bkarow 83x blacklozenge 8a3 blacksquare 7fu blacktriangle 7g4 blacktriangledown 7ge blacktriangleleft 7gi blacktriangleright 7g8 blank 74z blk12 7f6 blk14 7f5 blk34 7f7 block 7ew bne 94khug bnequiv 94kol8 bnot 6xc bNot 8h9 bopf 1peqtpe Bopf 1pdqayk bot 6ud bottom 6ud bowtie 6vc boxbox 895 boxdl 7bk boxdL 7dh boxDl 7di boxDL 7dj boxdr 7bg boxdR 7de boxDr 7df boxDR 7dg boxh 7b4 boxH 7dc boxhd 7cc boxhD 7dx boxHd 7dw boxHD 7dy boxhu 7ck boxhU 7e0 boxHu 7dz boxHU 7e1 boxminus 6u7 boxplus 6u6 boxtimes 6u8 boxul 7bs boxuL 7dn boxUl 7do boxUL 7dp boxur 7bo boxuR 7dk boxUr 7dl boxUR 7dm boxv 7b6 boxV 7dd boxvh 7cs boxvH 7e2 boxVh 7e3 boxVH 7e4 boxvl 7c4 boxvL 7dt boxVl 7du boxVL 7dv boxvr 7bw boxvR 7dq boxVr 7dr boxVR 7ds bprime 6d1 breve k8 Breve k8 bscr 1p8np8e Bscr 6jw bsemi 6dr bsim 6rh bsime 6vh bsol 2k bsolb 891 bsolhsub 7uw bull 6ci bullet 6ci bump 6ry bumpe 6rz bumpE 8fi bumpeq 6rz Bumpeq 6ry cacute 7b Cacute 7a cap 6qx Cap 6vm capand 8ck capbrcup 8cp capcap 8cr capcup 8cn capdot 8cg CapitalDifferentialD 6kl caps 1yh3ns9 caret 6dd caron jr Cayleys 6jx ccaps 8ct ccaron 7h Ccaron 7g ccirc 7d Ccirc 7c Cconint 6r4 ccups 8cs ccupssm 8cw cdot 7f Cdot 7e Cedilla 54 cemptyv 88i centerdot 53 CenterDot 53 cfr 1pcr6s5 Cfr 6jx chcy uf CHcy tj check 7pv checkmark 7pv chi qv Chi pz cir 7gr circ jq circeq 6s7 circlearrowleft 6nu circlearrowright 6nv circledast 6u3 circledcirc 6u2 circleddash 6u5 CircleDot 6u1 circledR 4u circledS 79k CircleMinus 6ty CirclePlus 6tx CircleTimes 6tz cire 6s7 cirE 88z cirfnint 8b4 cirmid 8hb cirscir 88y ClockwiseContourIntegral 6r6 CloseCurlyDoubleQuote 6cd CloseCurlyQuote 6c9 clubs 7kz clubsuit 7kz colon 1m Colon 6rb colone 6s4 Colone 8dw coloneq 6s4 comma 18 commat 1s comp 6pt compfn 6qg complement 6pt complexes 6iq cong 6rp congdot 8dp Congruent 6sh conint 6r2 Conint 6r3 ContourIntegral 6r2 copf 1pes89t Copf 6iq coprod 6q8 Coproduct 6q8 copysr 6jb CounterClockwiseContourIntegral 6r7 crarr 6np cross 7pz Cross 8bz cscr 1p8p3st Cscr 1p7ol1z csub 8gf csube 8gh csup 8gg csupe 8gi ctdot 6wf cudarrl 854 cudarrr 851 cuepr 6vy cuesc 6vz cularr 6nq cularrp 859 cup 6qy Cup 6vn cupbrcap 8co cupcap 8cm CupCap 6rx cupcup 8cq cupdot 6tp cupor 8cl cups 1yh3nsa curarr 6nr curarrm 858 curlyeqprec 6vy curlyeqsucc 6vz curlyvee 6vi curlywedge 6vj curvearrowleft 6nq curvearrowright 6nr cuvee 6vi cuwed 6vj cwconint 6r6 cwint 6r5 cylcty 6y5 dagger 6cg Dagger 6ch daleth 6k8 darr 6mr dArr 6oj Darr 6n5 dash 6c0 dashv 6ub Dashv 8h0 dbkarow 83z dblac kd dcaron 7j Dcaron 7i dcy tw Dcy t0 dd 6km DD 6kl ddagger 6ch ddarr 6oa DDotrahd 841 ddotseq 8dz Del 6pz delta qc Delta pg demptyv 88h dfisht 873 dfr 1pcslck Dfr 1pbs2lq dHar 86d dharl 6o3 dharr 6o2 DiacriticalAcute 50 DiacriticalDot k9 DiacriticalDoubleAcute kd DiacriticalGrave 2o DiacriticalTilde kc diam 6v8 diamond 6v8 Diamond 6v8 diamondsuit 7l2 diams 7l2 die 4o DifferentialD 6km digamma rh disin 6wi div 6v divideontimes 6vb divonx 6vb djcy uq DJcy si dlcorn 6xq dlcrop 6x9 dollar 10 dopf 1petmu8 Dopf 1pdt43e dot k9 Dot 4o DotDot 6ho doteq 6s0 doteqdot 6s1 DotEqual 6s0 dotminus 6rc dotplus 6qc dotsquare 6u9 doublebarwedge 6x2 DoubleContourIntegral 6r3 DoubleDot 4o DoubleDownArrow 6oj DoubleLeftArrow 6og DoubleLeftRightArrow 6ok DoubleLeftTee 8h0 DoubleLongLeftArrow 7w8 DoubleLongLeftRightArrow 7wa DoubleLongRightArrow 7w9 DoubleRightArrow 6oi DoubleRightTee 6ug DoubleUpArrow 6oh DoubleUpDownArrow 6ol DoubleVerticalBar 6qt downarrow 6mr Downarrow 6oj DownArrow 6mr DownArrowBar 843 DownArrowUpArrow 6ph DownBreve lt downdownarrows 6oa downharpoonleft 6o3 downharpoonright 6o2 DownLeftRightVector 85s DownLeftTeeVector 866 DownLeftVector 6nx DownLeftVectorBar 85y DownRightTeeVector 867 DownRightVector 6o1 DownRightVectorBar 85z DownTee 6uc DownTeeArrow 6nb drbkarow 840 drcorn 6xr drcrop 6x8 dscr 1p8qid8 Dscr 1p7pzme dscy ut DScy sl dsol 8ae dstrok 7l Dstrok 7k dtdot 6wh dtri 7gf dtrif 7ge duarr 6ph duhar 86n dwangle 886 dzcy v3 DZcy sv dzigrarr 7wf easter 8dq ecaron 7v Ecaron 7u ecir 6s6 ecolon 6s5 ecy ul Ecy tp eDDot 8dz edot 7r eDot 6s1 Edot 7q ee 6kn efDot 6s2 efr 1pctzwz Efr 1pbth65 eg 8ey egs 8eu egsdot 8ew el 8ex Element 6q0 elinters 73b ell 6j7 els 8et elsdot 8ev emacr 7n Emacr 7m empty 6px emptyset 6px EmptySmallSquare 7i3 emptyv 6px EmptyVerySmallSquare 7fv emsp 6bn emsp13 6bo emsp14 6bp eng 97 ENG 96 ensp 6bm eogon 7t Eogon 7s eopf 1pev1en Eopf 1pduint epar 6vp eparsl 89v eplus 8dt epsi qd epsilon qd Epsilon ph epsiv s5 eqcirc 6s6 eqcolon 6s5 eqsim 6rm eqslantgtr 8eu eqslantless 8et Equal 8dx equals 1p EqualTilde 6rm equest 6sf Equilibrium 6oc equiv 6sh equivDD 8e0 eqvparsl 89x erarr 86p erDot 6s3 escr 6jz Escr 6k0 esdot 6s0 esim 6rm Esim 8dv eta qf Eta pj euro 6gc excl x exist 6pv Exists 6pv expectation 6k0 exponentiale 6kn ExponentialE 6kn fallingdotseq 6s2 fcy uc Fcy tg female 7k0 ffilig 1dkz fflig 1dkw ffllig 1dl0 ffr 1pcvehe Ffr 1pbuvqk filig 1dkx FilledSmallSquare 7i4 FilledVerySmallSquare 7fu fjlig 44w70 flat 7l9 fllig 1dky fltns 7g1 fnof b6 fopf 1pewfz2 Fopf 1pdvx88 forall 6ps ForAll 6ps fork 6vo forkv 8gp Fouriertrf 6k1 fpartint 8b1 frac13 6kz frac15 6l1 frac16 6l5 frac18 6l7 frac23 6l0 frac25 6l2 frac35 6l3 frac38 6l8 frac45 6l4 frac56 6l6 frac58 6l9 frac78 6la frasl 6dg frown 6xu fscr 1p8tbi2 Fscr 6k1 gacute dx gamma qb Gamma pf gammad rh Gammad rg gap 8ee gbreve 7z Gbreve 7y Gcedil 82 gcirc 7x Gcirc 7w gcy tv Gcy sz gdot 81 Gdot 80 ge 6sl gE 6sn gel 6vv gEl 8ek geq 6sl geqq 6sn geqslant 8e6 ges 8e6 gescc 8fd gesdot 8e8 gesdoto 8ea gesdotol 8ec gesl 1yh3nx7 gesles 8es gfr 1pcwt1t Gfr 1pbwaaz gg 6sr Gg 6vt ggg 6vt gimel 6k7 gjcy ur GJcy sj gl 6t3 gla 8f9 glE 8eq glj 8f8 gnap 8ei gnapprox 8ei gne 8eg gnE 6sp gneq 8eg gneqq 6sp gnsim 6w7 gopf 1pexujh Gopf 1pdxbsn grave 2o GreaterEqual 6sl GreaterEqualLess 6vv GreaterFullEqual 6sn GreaterGreater 8f6 GreaterLess 6t3 GreaterSlantEqual 8e6 GreaterTilde 6sz gscr 6iy Gscr 1p7u7bn gsim 6sz gsime 8em gsiml 8eo Gt 6sr gtcc 8fb gtcir 8e2 gtdot 6vr gtlPar 87p gtquest 8e4 gtrapprox 8ee gtrarr 86w gtrdot 6vr gtreqless 6vv gtreqqless 8ek gtrless 6t3 gtrsim 6sz gvertneqq 1yh3nu1 gvnE 1yh3nu1 Hacek jr hairsp 6bu half 59 hamilt 6iz hardcy ui HARDcy tm harr 6ms hArr 6ok harrcir 85k harrw 6nh Hat 2m hbar 6j3 hcirc 85 Hcirc 84 hearts 7l1 heartsuit 7l1 hellip 6cm hercon 6ux hfr 1pcy7m8 Hfr 6j0 HilbertSpace 6iz hksearow 84l hkswarow 84m hoarr 6pr homtht 6rf hookleftarrow 6nd hookrightarrow 6ne hopf 1pez93w Hopf 6j1 horbar 6c5 HorizontalLine 7b4 hscr 1p8w4mw Hscr 6iz hslash 6j3 hstrok 87 Hstrok 86 HumpDownHump 6ry HumpEqual 6rz hybull 6df hyphen 6c0 ic 6eb icy u0 Icy t4 Idot 8g iecy tx IEcy t1 iff 6ok ifr 1pczm6n Ifr 6j5 ii 6ko iiiint 8b0 iiint 6r1 iinfin 89o iiota 6jt ijlig 8j IJlig 8i Im 6j5 imacr 8b Imacr 8a image 6j5 ImaginaryI 6ko imagline 6j4 imagpart 6j5 imath 8h imof 6uv imped c5 Implies 6oi in 6q0 incare 6it infin 6qm infintie 89p inodot 8h int 6qz Int 6r0 intcal 6uy integers 6jo Integral 6qz intercal 6uy Intersection 6v6 intlarhk 8bb intprod 8cc InvisibleComma 6eb InvisibleTimes 6ea iocy up IOcy sh iogon 8f Iogon 8e iopf 1pf0nob Iopf 1pe04xh iota qh Iota pl iprod 8cc iscr 1p8xj7b Iscr 6j4 isin 6q0 isindot 6wl isinE 6wp isins 6wk isinsv 6wj isinv 6q0 it 6ea itilde 89 Itilde 88 iukcy uu Iukcy sm jcirc 8l Jcirc 8k jcy u1 Jcy t5 jfr 1pd10r2 Jfr 1pc0i08 jmath fr jopf 1pf228q Jopf 1pe1jhw jscr 1p8yxrq Jscr 1p7yf0w jsercy uw Jsercy so jukcy us Jukcy sk kappa qi Kappa pm kappav s0 kcedil 8n Kcedil 8m kcy u2 Kcy t6 kfr 1pd2fbh Kfr 1pc1wkn kgreen 8o khcy ud KHcy th kjcy v0 KJcy ss kopf 1pf3gt5 Kopf 1pe2y2b kscr 1p90cc5 Kscr 1p7ztlb lAarr 6oq lacute 8q Lacute 8p laemptyv 88k lagran 6j6 lambda qj Lambda pn lang 7vs Lang 7vu langd 87l langle 7vs lap 8ed Laplacetrf 6j6 larr 6mo lArr 6og Larr 6n2 larrb 6p0 larrbfs 84f larrfs 84d larrhk 6nd larrlp 6nf larrpl 855 larrsim 86r larrtl 6n6 lat 8ff latail 849 lAtail 84b late 8fh lates 1yh3pgt lbarr 83w lBarr 83y lbbrk 7si lbrace 3f lbrack 2j lbrke 87f lbrksld 87j lbrkslu 87h lcaron 8u Lcaron 8t lcedil 8s Lcedil 8r lceil 6x4 lcub 3f lcy u3 Lcy t7 ldca 852 ldquo 6cc ldquor 6ce ldrdhar 86f ldrushar 85n ldsh 6nm le 6sk lE 6sm LeftAngleBracket 7vs leftarrow 6mo Leftarrow 6og LeftArrow 6mo LeftArrowBar 6p0 LeftArrowRightArrow 6o6 leftarrowtail 6n6 LeftCeiling 6x4 LeftDoubleBracket 7vq LeftDownTeeVector 869 LeftDownVector 6o3 LeftDownVectorBar 861 LeftFloor 6x6 leftharpoondown 6nx leftharpoonup 6nw leftleftarrows 6o7 leftrightarrow 6ms Leftrightarrow 6ok LeftRightArrow 6ms leftrightarrows 6o6 leftrightharpoons 6ob leftrightsquigarrow 6nh LeftRightVector 85q LeftTee 6ub LeftTeeArrow 6n8 LeftTeeVector 862 leftthreetimes 6vf LeftTriangle 6uq LeftTriangleBar 89b LeftTriangleEqual 6us LeftUpDownVector 85t LeftUpTeeVector 868 LeftUpVector 6nz LeftUpVectorBar 860 LeftVector 6nw LeftVectorBar 85u leg 6vu lEg 8ej leq 6sk leqq 6sm leqslant 8e5 les 8e5 lescc 8fc lesdot 8e7 lesdoto 8e9 lesdotor 8eb lesg 1yh3nx6 lesges 8er lessapprox 8ed lessdot 6vq lesseqgtr 6vu lesseqqgtr 8ej LessEqualGreater 6vu LessFullEqual 6sm LessGreater 6t2 lessgtr 6t2 LessLess 8f5 lesssim 6sy LessSlantEqual 8e5 LessTilde 6sy lfisht 870 lfloor 6x6 lfr 1pd3tvw Lfr 1pc3b52 lg 6t2 lgE 8ep lHar 86a lhard 6nx lharu 6nw lharul 86i lhblk 7es ljcy ux LJcy sp ll 6sq Ll 6vs llarr 6o7 llcorner 6xq Lleftarrow 6oq llhard 86j lltri 7i2 lmidot 8w Lmidot 8v lmoust 71s lmoustache 71s lnap 8eh lnapprox 8eh lne 8ef lnE 6so lneq 8ef lneqq 6so lnsim 6w6 loang 7vw loarr 6pp lobrk 7vq longleftarrow 7w5 Longleftarrow 7w8 LongLeftArrow 7w5 longleftrightarrow 7w7 Longleftrightarrow 7wa LongLeftRightArrow 7w7 longmapsto 7wc longrightarrow 7w6 Longrightarrow 7w9 LongRightArrow 7w6 looparrowleft 6nf looparrowright 6ng lopar 879 lopf 1pf4vdk Lopf 1pe4cmq loplus 8bx lotimes 8c4 lowast 6qf lowbar 2n LowerLeftArrow 6mx LowerRightArrow 6mw loz 7gq lozenge 7gq lozf 8a3 lpar 14 lparlt 87n lrarr 6o6 lrcorner 6xr lrhar 6ob lrhard 86l lrm 6by lrtri 6v3 lsaquo 6d5 lscr 1p91qwk Lscr 6j6 lsh 6nk Lsh 6nk lsim 6sy lsime 8el lsimg 8en lsqb 2j lsquo 6c8 lsquor 6ca lstrok 8y Lstrok 8x Lt 6sq ltcc 8fa ltcir 8e1 ltdot 6vq lthree 6vf ltimes 6vd ltlarr 86u ltquest 8e3 ltri 7gj ltrie 6us ltrif 7gi ltrPar 87q lurdshar 85m luruhar 86e lvertneqq 1yh3nu0 lvnE 1yh3nu0 male 7k2 malt 7q8 maltese 7q8 map 6na Map 83p mapsto 6na mapstodown 6nb mapstoleft 6n8 mapstoup 6n9 marker 7fy mcomma 8bt mcy u4 Mcy t8 mdash 6c4 mDDot 6re measuredangle 6qp MediumSpace 6e7 Mellintrf 6k3 mfr 1pd58gb Mfr 1pc4pph mho 6jr mid 6qr midast 16 midcir 8hc minus 6qa minusb 6u7 minusd 6rc minusdu 8bu MinusPlus 6qb mlcp 8gr mldr 6cm mnplus 6qb models 6uf mopf 1pf69xz Mopf 1pe5r75 mp 6qb mscr 1p935gz Mscr 6k3 mstpos 6ri mu qk Mu po multimap 6uw mumap 6uw nabla 6pz nacute 90 Nacute 8z nang 93tzri nap 6rt napE w5np4 napid w5m37 napos 95 napprox 6rt natur 7la natural 7la naturals 6j9 nbump w5m3a nbumpe w5m3b ncap 8cj ncaron 94 Ncaron 93 ncedil 92 Ncedil 91 ncong 6rr ncongdot w5np1 ncup 8ci ncy u5 Ncy t9 ndash 6c3 ne 6sg nearhk 84k nearr 6mv neArr 6on nearrow 6mv nedot w5m3c NegativeMediumSpace 6bv NegativeThickSpace 6bv NegativeThinSpace 6bv NegativeVeryThinSpace 6bv nequiv 6si nesear 84o nesim w5m2y NestedGreaterGreater 6sr NestedLessLess 6sq NewLine a nexist 6pw nexists 6pw nfr 1pd6n0q Nfr 1pc649w nge 6sx ngE w5m3z ngeq 6sx ngeqq w5m3z ngeqslant w5npi nges w5npi nGg w5m75 ngsim 6t1 ngt 6sv nGt 93tztl ngtr 6sv nGtv w5m43 nharr 6ni nhArr 6oe nhpar 8he ni 6q3 nis 6ws nisd 6wq niv 6q3 njcy uy NJcy sq nlarr 6my nlArr 6od nldr 6cl nle 6sw nlE w5m3y nleftarrow 6my nLeftarrow 6od nleftrightarrow 6ni nLeftrightarrow 6oe nleq 6sw nleqq w5m3y nleqslant w5nph nles w5nph nless 6su nLl w5m74 nlsim 6t0 nlt 6su nLt 93tztk nltri 6wa nltrie 6wc nLtv w5m42 nmid 6qs NoBreak 6e8 NonBreakingSpace 4g nopf 1pf7oie Nopf 6j9 Not 8h8 NotCongruent 6si NotCupCap 6st NotDoubleVerticalBar 6qu NotElement 6q1 NotEqual 6sg NotEqualTilde w5m2y NotExists 6pw NotGreater 6sv NotGreaterEqual 6sx NotGreaterFullEqual w5m3z NotGreaterGreater w5m43 NotGreaterLess 6t5 NotGreaterSlantEqual w5npi NotGreaterTilde 6t1 NotHumpDownHump w5m3a NotHumpEqual w5m3b notin 6q1 notindot w5m7x notinE w5m81 notinva 6q1 notinvb 6wn notinvc 6wm NotLeftTriangle 6wa NotLeftTriangleBar w5nkn NotLeftTriangleEqual 6wc NotLess 6su NotLessEqual 6sw NotLessGreater 6t4 NotLessLess w5m42 NotLessSlantEqual w5nph NotLessTilde 6t0 NotNestedGreaterGreater w5nqi NotNestedLessLess w5nqh notni 6q4 notniva 6q4 notnivb 6wu notnivc 6wt NotPrecedes 6tc NotPrecedesEqual w5nqv NotPrecedesSlantEqual 6w0 NotReverseElement 6q4 NotRightTriangle 6wb NotRightTriangleBar w5nko NotRightTriangleEqual 6wd NotSquareSubset w5m53 NotSquareSubsetEqual 6w2 NotSquareSuperset w5m54 NotSquareSupersetEqual 6w3 NotSubset 93tzu8 NotSubsetEqual 6tk NotSucceeds 6td NotSucceedsEqual w5nqw NotSucceedsSlantEqual 6w1 NotSucceedsTilde w5m4n NotSuperset 93tzu9 NotSupersetEqual 6tl NotTilde 6rl NotTildeEqual 6ro NotTildeFullEqual 6rr NotTildeTilde 6rt NotVerticalBar 6qs npar 6qu nparallel 6qu nparsl 94kqag npart w5m16 npolint 8b8 npr 6tc nprcue 6w0 npre w5nqv nprec 6tc npreceq w5nqv nrarr 6mz nrArr 6of nrarrc w5ngb nrarrw w5lyd nrightarrow 6mz nRightarrow 6of nrtri 6wb nrtrie 6wd nsc 6td nsccue 6w1 nsce w5nqw nscr 1p94k1e Nscr 1p841ak nshortmid 6qs nshortparallel 6qu nsim 6rl nsime 6ro nsimeq 6ro nsmid 6qs nspar 6qu nsqsube 6w2 nsqsupe 6w3 nsub 6tg nsube 6tk nsubE w5nrh nsubset 93tzu8 nsubseteq 6tk nsubseteqq w5nrh nsucc 6td nsucceq w5nqw nsup 6th nsupe 6tl nsupE w5nri nsupset 93tzu9 nsupseteq 6tl nsupseteqq w5nri ntgl 6t5 ntlg 6t4 ntriangleleft 6wa ntrianglelefteq 6wc ntriangleright 6wb ntrianglerighteq 6wd nu ql Nu pp num z numero 6ja numsp 6br nvap 93tzsr nvdash 6uk nvDash 6ul nVdash 6um nVDash 6un nvge 93tztf nvgt 93tt2k nvHarr 83o nvinfin 89q nvlArr 83m nvle 93tzte nvlt 93tt2i nvltrie 93tzvm nvrArr 83n nvrtrie 93tzvn nvsim 93tzsa nwarhk 84j nwarr 6mu nwArr 6om nwarrow 6mu nwnear 84n oast 6u3 ocir 6u2 ocy u6 Ocy ta odash 6u5 odblac 9d Odblac 9c odiv 8c8 odot 6u1 odsold 88s oelig 9f OElig 9e ofcir 88v ofr 1pd81l5 Ofr 1pc7iub ogon kb ogt 88x ohbar 88l ohm q1 oint 6r2 olarr 6nu olcir 88u olcross 88r oline 6da olt 88w omacr 99 Omacr 98 omega qx Omega q1 omicron qn Omicron pr omid 88m ominus 6ty oopf 1pf932t Oopf 1pe8kbz opar 88n OpenCurlyDoubleQuote 6cc OpenCurlyQuote 6c8 operp 88p oplus 6tx or 6qw Or 8d0 orarr 6nv ord 8d9 order 6k4 orderof 6k4 origof 6uu oror 8d2 orslope 8d3 orv 8d7 oS 79k oscr 6k4 Oscr 1p85fuz osol 6u0 otimes 6tz Otimes 8c7 otimesas 8c6 ovbar 6yl OverBar 6da OverBrace 732 OverBracket 71w OverParenthesis 730 par 6qt parallel 6qt parsim 8hf parsl 8hp part 6pu PartialD 6pu pcy u7 Pcy tb percnt 11 period 1a permil 6cw perp 6ud pertenk 6cx pfr 1pd9g5k Pfr 1pc8xeq phi qu Phi py phiv r9 phmmat 6k3 phone 7im pi qo Pi ps pitchfork 6vo piv ra planck 6j3 planckh 6j2 plankv 6j3 plus 17 plusacir 8bn plusb 6u6 pluscir 8bm plusdo 6qc plusdu 8bp pluse 8du PlusMinus 4x plussim 8bq plustwo 8br pm 4x Poincareplane 6j0 pointint 8b9 popf 1pfahn8 Popf 6jd pr 6t6 Pr 8fv prap 8fr prcue 6t8 pre 8fj prE 8fn prec 6t6 precapprox 8fr preccurlyeq 6t8 Precedes 6t6 PrecedesEqual 8fj PrecedesSlantEqual 6t8 PrecedesTilde 6ta preceq 8fj precnapprox 8ft precneqq 8fp precnsim 6w8 precsim 6ta prime 6cy Prime 6cz primes 6jd prnap 8ft prnE 8fp prnsim 6w8 prod 6q7 Product 6q7 profalar 6y6 profline 6xe profsurf 6xf prop 6ql Proportion 6rb Proportional 6ql propto 6ql prsim 6ta prurel 6uo pscr 1p97d68 Pscr 1p86ufe psi qw Psi q0 puncsp 6bs qfr 1pdaupz Qfr 1pcabz5 qint 8b0 qopf 1pfbw7n Qopf 6je qprime 6dz qscr 1p98rqn Qscr 1p888zt quaternions 6j1 quatint 8ba quest 1r questeq 6sf rAarr 6or race vvs3w racute 9h Racute 9g radic 6qi raemptyv 88j rang 7vt Rang 7vv rangd 87m range 885 rangle 7vt rarr 6mq rArr 6oi Rarr 6n4 rarrap 86t rarrb 6p1 rarrbfs 84g rarrc 84z rarrfs 84e rarrhk 6ne rarrlp 6ng rarrpl 85h rarrsim 86s rarrtl 6n7 Rarrtl 846 rarrw 6n1 ratail 84a rAtail 84c ratio 6ra rationals 6je rbarr 83x rBarr 83z RBarr 840 rbbrk 7sj rbrace 3h rbrack 2l rbrke 87g rbrksld 87i rbrkslu 87k rcaron 9l Rcaron 9k rcedil 9j Rcedil 9i rceil 6x5 rcub 3h rcy u8 Rcy tc rdca 853 rdldhar 86h rdquo 6cd rdquor 6cd rdsh 6nn Re 6jg real 6jg realine 6jf realpart 6jg reals 6jh rect 7fx ReverseElement 6q3 ReverseEquilibrium 6ob ReverseUpEquilibrium 86n rfisht 871 rfloor 6x7 rfr 1pdc9ae Rfr 6jg rHar 86c rhard 6o1 rharu 6o0 rharul 86k rho qp Rho pt rhov s1 RightAngleBracket 7vt rightarrow 6mq Rightarrow 6oi RightArrow 6mq RightArrowBar 6p1 RightArrowLeftArrow 6o4 rightarrowtail 6n7 RightCeiling 6x5 RightDoubleBracket 7vr RightDownTeeVector 865 RightDownVector 6o2 RightDownVectorBar 85x RightFloor 6x7 rightharpoondown 6o1 rightharpoonup 6o0 rightleftarrows 6o4 rightleftharpoons 6oc rightrightarrows 6o9 rightsquigarrow 6n1 RightTee 6ua RightTeeArrow 6na RightTeeVector 863 rightthreetimes 6vg RightTriangle 6ur RightTriangleBar 89c RightTriangleEqual 6ut RightUpDownVector 85r RightUpTeeVector 864 RightUpVector 6ny RightUpVectorBar 85w RightVector 6o0 RightVectorBar 85v ring ka risingdotseq 6s3 rlarr 6o4 rlhar 6oc rlm 6bz rmoust 71t rmoustache 71t rnmid 8ha roang 7vx roarr 6pq robrk 7vr ropar 87a ropf 1pfdas2 Ropf 6jh roplus 8by rotimes 8c5 RoundImplies 86o rpar 15 rpargt 87o rppolint 8b6 rrarr 6o9 Rrightarrow 6or rsaquo 6d6 rscr 1p9a6b2 Rscr 6jf rsh 6nl Rsh 6nl rsqb 2l rsquo 6c9 rsquor 6c9 rthree 6vg rtimes 6ve rtri 7g9 rtrie 6ut rtrif 7g8 rtriltri 89a RuleDelayed 8ac ruluhar 86g rx 6ji sacute 9n Sacute 9m sbquo 6ca sc 6t7 Sc 8fw scap 8fs scaron 9t Scaron 9s sccue 6t9 sce 8fk scE 8fo scedil 9r Scedil 9q scirc 9p Scirc 9o scnap 8fu scnE 8fq scnsim 6w9 scpolint 8b7 scsim 6tb scy u9 Scy td sdot 6v9 sdotb 6u9 sdote 8di searhk 84l searr 6mw seArr 6oo searrow 6mw semi 1n seswar 84p setminus 6qe setmn 6qe sext 7qu sfr 1pddnut Sfr 1pcd53z sfrown 6xu sharp 7lb shchcy uh SHCHcy tl shcy ug SHcy tk ShortDownArrow 6mr ShortLeftArrow 6mo shortmid 6qr shortparallel 6qt ShortRightArrow 6mq ShortUpArrow 6mp sigma qr Sigma pv sigmaf qq sigmav qq sim 6rg simdot 8dm sime 6rn simeq 6rn simg 8f2 simgE 8f4 siml 8f1 simlE 8f3 simne 6rq simplus 8bo simrarr 86q slarr 6mo SmallCircle 6qg smallsetminus 6qe smashp 8c3 smeparsl 89w smid 6qr smile 6xv smt 8fe smte 8fg smtes 1yh3pgs softcy uk SOFTcy to sol 1b solb 890 solbar 6yn sopf 1pfepch Sopf 1pee6ln spades 7kw spadesuit 7kw spar 6qt sqcap 6tv sqcaps 1yh3nv7 sqcup 6tw sqcups 1yh3nv8 Sqrt 6qi sqsub 6tr sqsube 6tt sqsubset 6tr sqsubseteq 6tt sqsup 6ts sqsupe 6tu sqsupset 6ts sqsupseteq 6tu squ 7fl square 7fl Square 7fl SquareIntersection 6tv SquareSubset 6tr SquareSubsetEqual 6tt SquareSuperset 6ts SquareSupersetEqual 6tu SquareUnion 6tw squarf 7fu squf 7fu srarr 6mq sscr 1p9bkvh Sscr 1p8b24n ssetmn 6qe ssmile 6xv sstarf 6va star 7ie Star 6va starf 7id straightepsilon s5 straightphi r9 strns 4v sub 6te Sub 6vk subdot 8fx sube 6ti subE 8g5 subedot 8g3 submult 8g1 subne 6tm subnE 8gb subplus 8fz subrarr 86x subset 6te Subset 6vk subseteq 6ti subseteqq 8g5 SubsetEqual 6ti subsetneq 6tm subsetneqq 8gb subsim 8g7 subsub 8gl subsup 8gj succ 6t7 succapprox 8fs succcurlyeq 6t9 Succeeds 6t7 SucceedsEqual 8fk SucceedsSlantEqual 6t9 SucceedsTilde 6tb succeq 8fk succnapprox 8fu succneqq 8fq succnsim 6w9 succsim 6tb SuchThat 6q3 sum 6q9 Sum 6q9 sung 7l6 sup 6tf Sup 6vl supdot 8fy supdsub 8go supe 6tj supE 8g6 supedot 8g4 Superset 6tf SupersetEqual 6tj suphsol 7ux suphsub 8gn suplarr 86z supmult 8g2 supne 6tn supnE 8gc supplus 8g0 supset 6tf Supset 6vl supseteq 6tj supseteqq 8g6 supsetneq 6tn supsetneqq 8gc supsim 8g8 supsub 8gk supsup 8gm swarhk 84m swarr 6mx swArr 6op swarrow 6mx swnwar 84q Tab 9 target 6xi tau qs Tau pw tbrk 71w tcaron 9x Tcaron 9w tcedil 9v Tcedil 9u tcy ua Tcy te tdot 6hn telrec 6xh tfr 1pdf2f8 Tfr 1pcejoe there4 6r8 therefore 6r8 Therefore 6r8 theta qg Theta pk thetasym r5 thetav r5 thickapprox 6rs thicksim 6rg ThickSpace 8w11zp thinsp 6bt ThinSpace 6bt thkap 6rs thksim 6rg tilde kc Tilde 6rg TildeEqual 6rn TildeFullEqual 6rp TildeTilde 6rs timesb 6u8 timesbar 8c1 timesd 8c0 tint 6r1 toea 84o top 6uc topbot 6ye topcir 8hd topf 1pfg3ww Topf 1pefl62 topfork 8gq tosa 84p tprime 6d0 trade 6jm TRADE 6jm triangle 7g5 triangledown 7gf triangleleft 7gj trianglelefteq 6us triangleq 6sc triangleright 7g9 trianglerighteq 6ut tridot 7ho trie 6sc triminus 8ca TripleDot 6hn triplus 8c9 trisb 899 tritime 8cb trpezium 736 tscr 1p9czfw Tscr 1p8cgp2 tscy ue TScy ti tshcy uz TSHcy sr tstrok 9z Tstrok 9y twixt 6ss twoheadleftarrow 6n2 twoheadrightarrow 6n4 uarr 6mp uArr 6oh Uarr 6n3 Uarrocir 85l ubrcy v2 Ubrcy su ubreve a5 Ubreve a4 ucy ub Ucy tf udarr 6o5 udblac a9 Udblac a8 udhar 86m ufisht 872 ufr 1pdggzn Ufr 1pcfy8t uHar 86b uharl 6nz uharr 6ny uhblk 7eo ulcorn 6xo ulcorner 6xo ulcrop 6xb ultri 7i0 umacr a3 Umacr a2 UnderBar 2n UnderBrace 733 UnderBracket 71x UnderParenthesis 731 Union 6v7 UnionPlus 6tq uogon ab Uogon aa uopf 1pfhihb Uopf 1pegzqh uparrow 6mp Uparrow 6oh UpArrow 6mp UpArrowBar 842 UpArrowDownArrow 6o5 updownarrow 6mt Updownarrow 6ol UpDownArrow 6mt UpEquilibrium 86m upharpoonleft 6nz upharpoonright 6ny uplus 6tq UpperLeftArrow 6mu UpperRightArrow 6mv upsi qt Upsi r6 upsih r6 upsilon qt Upsilon px UpTee 6ud UpTeeArrow 6n9 upuparrows 6o8 urcorn 6xp urcorner 6xp urcrop 6xa uring a7 Uring a6 urtri 7i1 uscr 1p9ee0b Uscr 1p8dv9h utdot 6wg utilde a1 Utilde a0 utri 7g5 utrif 7g4 uuarr 6o8 uwangle 887 vangrt 87w varepsilon s5 varkappa s0 varnothing 6px varphi r9 varpi ra varpropto 6ql varr 6mt vArr 6ol varrho s1 varsigma qq varsubsetneq 1yh3nuy varsubsetneqq 1yh3phn varsupsetneq 1yh3nuz varsupsetneqq 1yh3pho vartheta r5 vartriangleleft 6uq vartriangleright 6ur vBar 8h4 Vbar 8h7 vBarv 8h5 vcy tu Vcy sy vdash 6ua vDash 6ug Vdash 6uh VDash 6uj Vdashl 8h2 vee 6qw Vee 6v5 veebar 6uz veeeq 6sa vellip 6we verbar 3g Verbar 6c6 vert 3g Vert 6c6 VerticalBar 6qr VerticalLine 3g VerticalSeparator 7rs VerticalTilde 6rk VeryThinSpace 6bu vfr 1pdhvk2 Vfr 1pchct8 vltri 6uq vnsub 93tzu8 vnsup 93tzu9 vopf 1pfix1q Vopf 1peieaw vprop 6ql vrtri 6ur vscr 1p9fskq Vscr 1p8f9tw vsubne 1yh3nuy vsubnE 1yh3phn vsupne 1yh3nuz vsupnE 1yh3pho Vvdash 6ui vzigzag 87u wcirc ad Wcirc ac wedbar 8db wedge 6qv Wedge 6v4 wedgeq 6s9 weierp 6jc wfr 1pdja4h Wfr 1pcirdn wopf 1pfkbm5 Wopf 1pejsvb wp 6jc wr 6rk wreath 6rk wscr 1p9h755 Wscr 1p8goeb xcap 6v6 xcirc 7hr xcup 6v7 xdtri 7gd xfr 1pdkoow Xfr 1pck5y2 xharr 7w7 xhArr 7wa xi qm Xi pq xlarr 7w5 xlArr 7w8 xmap 7wc xnis 6wr xodot 8ao xopf 1pflq6k Xopf 1pel7fq xoplus 8ap xotime 8aq xrarr 7w6 xrArr 7w9 xscr 1p9ilpk Xscr 1p8i2yq xsqcup 8au xuplus 8as xutri 7g3 xvee 6v5 xwedge 6v4 yacy un YAcy tr ycirc af Ycirc ae ycy uj Ycy tn yfr 1pdm39b Yfr 1pclkih yicy uv YIcy sn yopf 1pfn4qz Yopf 1pemm05 yscr 1p9k09z Yscr 1p8jhj5 yucy um YUcy tq Yuml ag zacute ai Zacute ah zcaron am Zcaron al zcy tz Zcy t3 zdot ak Zdot aj zeetrf 6js ZeroWidthSpace 6bv zeta qe Zeta pi zfr 1pdnhtq Zfr 6js zhcy ty ZHcy t2 zigrarr 6ot zopf 1pfojbe Zopf 6jo zscr 1p9leue Zscr 1p8kw3k zwj 6bx zwnj 6bw";
350
+
351
+ var legacyEntitiesData = "aacute 69 Aacute 5d acirc 6a Acirc 5e acute 50 aelig 6e AElig 5i agrave 68 Agrave 5c amp 12 AMP 12 aring 6d Aring 5h atilde 6b Atilde 5f auml 6c Auml 5g brvbar 4m ccedil 6f Ccedil 5j cedil 54 cent 4i copy 4p COPY 4p curren 4k deg 4w divide 6v eacute 6h Eacute 5l ecirc 6i Ecirc 5m egrave 6g Egrave 5k eth 6o ETH 5s euml 6j Euml 5n frac12 59 frac14 58 frac34 5a gt 1q GT 1q iacute 6l Iacute 5p icirc 6m Icirc 5q iexcl 4h igrave 6k Igrave 5o iquest 5b iuml 6n Iuml 5r laquo 4r lt 1o LT 1o macr 4v micro 51 middot 53 nbsp 4g not 4s ntilde 6p Ntilde 5t oacute 6r Oacute 5v ocirc 6s Ocirc 5w ograve 6q Ograve 5u ordf 4q ordm 56 oslash 6w Oslash 60 otilde 6t Otilde 5x ouml 6u Ouml 5y para 52 plusmn 4x pound 4j quot y QUOT y raquo 57 reg 4u REG 4u sect 4n shy 4t sup1 55 sup2 4y sup3 4z szlig 67 thorn 72 THORN 66 times 5z uacute 6y Uacute 62 ucirc 6z Ucirc 63 ugrave 6x Ugrave 61 uml 4o uuml 70 Uuml 64 yacute 71 Yacute 65 yen 4l yuml 73";
352
+
353
+ var htmlEntities = unpackMap(entitiesData);
354
+ var legacyHtmlEntities = unpackMap(legacyEntitiesData);
355
+ /**
356
+ * An entity manager that supports HTML entities.
357
+ */
358
+ var htmlEntityManager = new EntityManager();
359
+ htmlEntityManager.setAll(htmlEntities);
360
+ htmlEntityManager.setAll(legacyHtmlEntities, true);
361
+ var decodeHtml = createEntityDecoder(htmlEntityManager);
362
+
363
+ var xmlEntities = {
364
+ amp: '&',
365
+ apos: '\'',
366
+ gt: '>',
367
+ lt: '<',
368
+ quot: '"',
369
+ };
370
+ /**
371
+ * An entity manager that supports XML entities.
372
+ */
373
+ var xmlEntityManager = new EntityManager();
374
+ xmlEntityManager.setAll(xmlEntities);
375
+ /**
376
+ * Decodes XML entities in a string.
377
+ */
378
+ var decodeXml = createEntityDecoder(xmlEntityManager, { numericCharacterReferenceTerminated: true });
379
+
380
+ exports.EntityManager = EntityManager;
381
+ exports.createEntityDecoder = createEntityDecoder;
382
+ exports.decodeHtml = decodeHtml;
383
+ exports.decodeXml = decodeXml;
384
+ exports.htmlEntities = htmlEntities;
385
+ exports.htmlEntityManager = htmlEntityManager;
386
+ exports.legacyHtmlEntities = legacyHtmlEntities;
387
+ exports.xmlEntities = xmlEntities;
388
+ exports.xmlEntityManager = xmlEntityManager;
package/lib/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  export * from './createEntityDecoder';
2
- export * from './createEntityManager';
2
+ export * from './EntityManager';
3
3
  export * from './decodeHtml';
4
4
  export * from './decodeXml';
package/lib/index.js CHANGED
@@ -1,4 +1,4 @@
1
1
  export * from './createEntityDecoder';
2
- export * from './createEntityManager';
2
+ export * from './EntityManager';
3
3
  export * from './decodeHtml';
4
4
  export * from './decodeXml';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "speedy-entities",
3
- "version": "1.1.3",
3
+ "version": "2.0.0",
4
4
  "description": "The fastest XML/HTML entities decoder.",
5
5
  "main": "./lib/index-cjs.js",
6
6
  "module": "./lib/index.js",
@@ -10,16 +10,13 @@
10
10
  "lib"
11
11
  ],
12
12
  "scripts": {
13
- "build": "npm run encode-data && tsc && rimraf './lib/CharCode.*' && npm run rollup && npm run terser",
14
- "encode-data": "node encode-data.js",
15
- "rollup": "for p in ./lib/index.js ./lib/full.js; do rollup --external @smikhalevski/trie,tokenizer-dsl --input $p --file ${p%.js}-cjs.js --format cjs --plugin @rollup/plugin-node-resolve --plugin @rollup/plugin-json || exit 1; done",
16
- "terser": "for p in ./lib/index-cjs.js ./lib/full-cjs.js; do terser --compress --mangle toplevel --output $p -- $p || exit 1; done",
13
+ "build": "node encode-data.js && tsc && rimraf './lib/CharCode.*' && rollup --external @smikhalevski/trie --input ./lib/index.js --file ./lib/index-cjs.js --format cjs --plugin @rollup/plugin-node-resolve --plugin @rollup/plugin-json",
17
14
  "clean": "rimraf ./src/main/gen ./lib ./docs",
18
15
  "test": "jest --detectOpenHandles",
19
16
  "perf": "[ -d ./lib ] || npm run build && toofast ./src/test/perf.js",
20
- "docs": "typedoc ./src/main/full.ts",
17
+ "docs": "typedoc ./src/main/index.ts",
21
18
  "publish-docs": "[ -d ./docs ] && [[ ! $(git status --porcelain) ]] && branch=$(git rev-parse --abbrev-ref HEAD) && sha=$(git rev-parse --short HEAD) && t=$(mktemp -d) && cp -R ./docs/ $t && git checkout ghpages && ls -A | grep -wv .git | xargs rm -rf && cp -R $t/ . && git add . && git commit -m \"Updated docs ($sha)\" && git push && git checkout $branch",
22
- "release-docs": "npm run clean && npm run encode-data && npm run docs && npm run publish-docs"
19
+ "release-docs": "npm run clean && node encode-data.js && npm run docs && npm run publish-docs"
23
20
  },
24
21
  "repository": {
25
22
  "type": "git",
@@ -41,20 +38,18 @@
41
38
  },
42
39
  "devDependencies": {
43
40
  "@rollup/plugin-json": "^4.1.0",
44
- "@rollup/plugin-node-resolve": "^13.1.3",
45
- "@types/jest": "^27.4.1",
46
- "entities": "^3.0.1",
41
+ "@rollup/plugin-node-resolve": "^13.3.0",
42
+ "@types/jest": "^27.5.1",
43
+ "entities": "^4.3.0",
47
44
  "jest": "^27.5.1",
48
45
  "rimraf": "^3.0.2",
49
- "rollup": "^2.70.1",
50
- "terser": "^5.12.1",
51
- "toofast": "^1.0.0",
46
+ "rollup": "^2.74.1",
47
+ "toofast": "^1.3.0",
52
48
  "ts-jest": "^27.1.3",
53
- "typedoc": "^0.22.13",
49
+ "typedoc": "^0.22.15",
54
50
  "typescript": "^4.6.2"
55
51
  },
56
52
  "dependencies": {
57
- "@smikhalevski/trie": "^1.0.1",
58
- "tokenizer-dsl": "^3.0.0"
53
+ "@smikhalevski/trie": "^1.0.1"
59
54
  }
60
55
  }
@@ -1,24 +0,0 @@
1
- import { createTrieNode, searchTrie, setTrie } from '@smikhalevski/trie';
2
- /**
3
- * Creates a new {@link IEntityManager}.
4
- */
5
- export function createEntityManager() {
6
- var rootNode = createTrieNode();
7
- var set = function (name, value, legacy) {
8
- if (legacy === void 0) { legacy = false; }
9
- return setTrie(rootNode, name, { name: name, value: value, legacy: legacy });
10
- };
11
- var setAll = function (entities, legacy) {
12
- if (legacy === void 0) { legacy = false; }
13
- for (var _i = 0, _a = Object.entries(entities); _i < _a.length; _i++) {
14
- var _b = _a[_i], name_1 = _b[0], value = _b[1];
15
- set(name_1, value, legacy);
16
- }
17
- };
18
- var search = function (input, offset) { var _a; return (_a = searchTrie(rootNode, input, offset)) === null || _a === void 0 ? void 0 : _a.value; };
19
- return {
20
- set: set,
21
- setAll: setAll,
22
- search: search,
23
- };
24
- }
package/lib/full-cjs.js DELETED
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var r=require("@smikhalevski/trie"),e=require("tokenizer-dsl"),t="abreve 77 Abreve 76 ac 6ri acd 6rj acE vyl8r acy ts Acy sw af 6e9 afr 1pcodnb Afr 1pbnuwh alefsym 6k5 aleph 6k5 alpha q9 Alpha pd amacr 75 Amacr 74 amalg 8cf and 6qv And 8cz andand 8d1 andd 8d8 andslope 8d4 andv 8d6 ang 6qo ange 884 angle 6qo angmsd 6qp angmsdaa 888 angmsdab 889 angmsdac 88a angmsdad 88b angmsdae 88c angmsdaf 88d angmsdag 88e angmsdah 88f angrt 6qn angrtvb 6v2 angrtvbd 87x angsph 6qq angst 5h angzarr 70c aogon 79 Aogon 78 aopf 1pepf4z Aopf 1pdowe5 ap 6rs apacir 8dr ape 6ru apE 8ds apid 6rv apos 13 ApplyFunction 6e9 approx 6rs approxeq 6ru ascr 1p8manz Ascr 1p7lrx5 Assign 6s4 ast 16 asymp 6rs asympeq 6rx awconint 6r7 awint 8b5 backcong 6rw backepsilon s6 backprime 6d1 backsim 6rh backsimeq 6vh Backslash 6qe Barv 8h3 barvee 6v1 barwed 6x1 Barwed 6x2 barwedge 6x1 bbrk 71x bbrktbrk 71y bcong 6rw bcy tt Bcy sx bdquo 6ce becaus 6r9 because 6r9 Because 6r9 bemptyv 88g bepsi s6 bernou 6jw Bernoullis 6jw beta qa Beta pe beth 6k6 between 6ss bfr 1pcps7q Bfr 1pbp9gw bigcap 6v6 bigcirc 7hr bigcup 6v7 bigodot 8ao bigoplus 8ap bigotimes 8aq bigsqcup 8au bigstar 7id bigtriangledown 7gd bigtriangleup 7g3 biguplus 8as bigvee 6v5 bigwedge 6v4 bkarow 83x blacklozenge 8a3 blacksquare 7fu blacktriangle 7g4 blacktriangledown 7ge blacktriangleleft 7gi blacktriangleright 7g8 blank 74z blk12 7f6 blk14 7f5 blk34 7f7 block 7ew bne 94khug bnequiv 94kol8 bnot 6xc bNot 8h9 bopf 1peqtpe Bopf 1pdqayk bot 6ud bottom 6ud bowtie 6vc boxbox 895 boxdl 7bk boxdL 7dh boxDl 7di boxDL 7dj boxdr 7bg boxdR 7de boxDr 7df boxDR 7dg boxh 7b4 boxH 7dc boxhd 7cc boxhD 7dx boxHd 7dw boxHD 7dy boxhu 7ck boxhU 7e0 boxHu 7dz boxHU 7e1 boxminus 6u7 boxplus 6u6 boxtimes 6u8 boxul 7bs boxuL 7dn boxUl 7do boxUL 7dp boxur 7bo boxuR 7dk boxUr 7dl boxUR 7dm boxv 7b6 boxV 7dd boxvh 7cs boxvH 7e2 boxVh 7e3 boxVH 7e4 boxvl 7c4 boxvL 7dt boxVl 7du boxVL 7dv boxvr 7bw boxvR 7dq boxVr 7dr boxVR 7ds bprime 6d1 breve k8 Breve k8 bscr 1p8np8e Bscr 6jw bsemi 6dr bsim 6rh bsime 6vh bsol 2k bsolb 891 bsolhsub 7uw bull 6ci bullet 6ci bump 6ry bumpe 6rz bumpE 8fi bumpeq 6rz Bumpeq 6ry cacute 7b Cacute 7a cap 6qx Cap 6vm capand 8ck capbrcup 8cp capcap 8cr capcup 8cn capdot 8cg CapitalDifferentialD 6kl caps 1yh3ns9 caret 6dd caron jr Cayleys 6jx ccaps 8ct ccaron 7h Ccaron 7g ccirc 7d Ccirc 7c Cconint 6r4 ccups 8cs ccupssm 8cw cdot 7f Cdot 7e Cedilla 54 cemptyv 88i centerdot 53 CenterDot 53 cfr 1pcr6s5 Cfr 6jx chcy uf CHcy tj check 7pv checkmark 7pv chi qv Chi pz cir 7gr circ jq circeq 6s7 circlearrowleft 6nu circlearrowright 6nv circledast 6u3 circledcirc 6u2 circleddash 6u5 CircleDot 6u1 circledR 4u circledS 79k CircleMinus 6ty CirclePlus 6tx CircleTimes 6tz cire 6s7 cirE 88z cirfnint 8b4 cirmid 8hb cirscir 88y ClockwiseContourIntegral 6r6 CloseCurlyDoubleQuote 6cd CloseCurlyQuote 6c9 clubs 7kz clubsuit 7kz colon 1m Colon 6rb colone 6s4 Colone 8dw coloneq 6s4 comma 18 commat 1s comp 6pt compfn 6qg complement 6pt complexes 6iq cong 6rp congdot 8dp Congruent 6sh conint 6r2 Conint 6r3 ContourIntegral 6r2 copf 1pes89t Copf 6iq coprod 6q8 Coproduct 6q8 copysr 6jb CounterClockwiseContourIntegral 6r7 crarr 6np cross 7pz Cross 8bz cscr 1p8p3st Cscr 1p7ol1z csub 8gf csube 8gh csup 8gg csupe 8gi ctdot 6wf cudarrl 854 cudarrr 851 cuepr 6vy cuesc 6vz cularr 6nq cularrp 859 cup 6qy Cup 6vn cupbrcap 8co cupcap 8cm CupCap 6rx cupcup 8cq cupdot 6tp cupor 8cl cups 1yh3nsa curarr 6nr curarrm 858 curlyeqprec 6vy curlyeqsucc 6vz curlyvee 6vi curlywedge 6vj curvearrowleft 6nq curvearrowright 6nr cuvee 6vi cuwed 6vj cwconint 6r6 cwint 6r5 cylcty 6y5 dagger 6cg Dagger 6ch daleth 6k8 darr 6mr dArr 6oj Darr 6n5 dash 6c0 dashv 6ub Dashv 8h0 dbkarow 83z dblac kd dcaron 7j Dcaron 7i dcy tw Dcy t0 dd 6km DD 6kl ddagger 6ch ddarr 6oa DDotrahd 841 ddotseq 8dz Del 6pz delta qc Delta pg demptyv 88h dfisht 873 dfr 1pcslck Dfr 1pbs2lq dHar 86d dharl 6o3 dharr 6o2 DiacriticalAcute 50 DiacriticalDot k9 DiacriticalDoubleAcute kd DiacriticalGrave 2o DiacriticalTilde kc diam 6v8 diamond 6v8 Diamond 6v8 diamondsuit 7l2 diams 7l2 die 4o DifferentialD 6km digamma rh disin 6wi div 6v divideontimes 6vb divonx 6vb djcy uq DJcy si dlcorn 6xq dlcrop 6x9 dollar 10 dopf 1petmu8 Dopf 1pdt43e dot k9 Dot 4o DotDot 6ho doteq 6s0 doteqdot 6s1 DotEqual 6s0 dotminus 6rc dotplus 6qc dotsquare 6u9 doublebarwedge 6x2 DoubleContourIntegral 6r3 DoubleDot 4o DoubleDownArrow 6oj DoubleLeftArrow 6og DoubleLeftRightArrow 6ok DoubleLeftTee 8h0 DoubleLongLeftArrow 7w8 DoubleLongLeftRightArrow 7wa DoubleLongRightArrow 7w9 DoubleRightArrow 6oi DoubleRightTee 6ug DoubleUpArrow 6oh DoubleUpDownArrow 6ol DoubleVerticalBar 6qt downarrow 6mr Downarrow 6oj DownArrow 6mr DownArrowBar 843 DownArrowUpArrow 6ph DownBreve lt downdownarrows 6oa downharpoonleft 6o3 downharpoonright 6o2 DownLeftRightVector 85s DownLeftTeeVector 866 DownLeftVector 6nx DownLeftVectorBar 85y DownRightTeeVector 867 DownRightVector 6o1 DownRightVectorBar 85z DownTee 6uc DownTeeArrow 6nb drbkarow 840 drcorn 6xr drcrop 6x8 dscr 1p8qid8 Dscr 1p7pzme dscy ut DScy sl dsol 8ae dstrok 7l Dstrok 7k dtdot 6wh dtri 7gf dtrif 7ge duarr 6ph duhar 86n dwangle 886 dzcy v3 DZcy sv dzigrarr 7wf easter 8dq ecaron 7v Ecaron 7u ecir 6s6 ecolon 6s5 ecy ul Ecy tp eDDot 8dz edot 7r eDot 6s1 Edot 7q ee 6kn efDot 6s2 efr 1pctzwz Efr 1pbth65 eg 8ey egs 8eu egsdot 8ew el 8ex Element 6q0 elinters 73b ell 6j7 els 8et elsdot 8ev emacr 7n Emacr 7m empty 6px emptyset 6px EmptySmallSquare 7i3 emptyv 6px EmptyVerySmallSquare 7fv emsp 6bn emsp13 6bo emsp14 6bp eng 97 ENG 96 ensp 6bm eogon 7t Eogon 7s eopf 1pev1en Eopf 1pduint epar 6vp eparsl 89v eplus 8dt epsi qd epsilon qd Epsilon ph epsiv s5 eqcirc 6s6 eqcolon 6s5 eqsim 6rm eqslantgtr 8eu eqslantless 8et Equal 8dx equals 1p EqualTilde 6rm equest 6sf Equilibrium 6oc equiv 6sh equivDD 8e0 eqvparsl 89x erarr 86p erDot 6s3 escr 6jz Escr 6k0 esdot 6s0 esim 6rm Esim 8dv eta qf Eta pj euro 6gc excl x exist 6pv Exists 6pv expectation 6k0 exponentiale 6kn ExponentialE 6kn fallingdotseq 6s2 fcy uc Fcy tg female 7k0 ffilig 1dkz fflig 1dkw ffllig 1dl0 ffr 1pcvehe Ffr 1pbuvqk filig 1dkx FilledSmallSquare 7i4 FilledVerySmallSquare 7fu fjlig 44w70 flat 7l9 fllig 1dky fltns 7g1 fnof b6 fopf 1pewfz2 Fopf 1pdvx88 forall 6ps ForAll 6ps fork 6vo forkv 8gp Fouriertrf 6k1 fpartint 8b1 frac13 6kz frac15 6l1 frac16 6l5 frac18 6l7 frac23 6l0 frac25 6l2 frac35 6l3 frac38 6l8 frac45 6l4 frac56 6l6 frac58 6l9 frac78 6la frasl 6dg frown 6xu fscr 1p8tbi2 Fscr 6k1 gacute dx gamma qb Gamma pf gammad rh Gammad rg gap 8ee gbreve 7z Gbreve 7y Gcedil 82 gcirc 7x Gcirc 7w gcy tv Gcy sz gdot 81 Gdot 80 ge 6sl gE 6sn gel 6vv gEl 8ek geq 6sl geqq 6sn geqslant 8e6 ges 8e6 gescc 8fd gesdot 8e8 gesdoto 8ea gesdotol 8ec gesl 1yh3nx7 gesles 8es gfr 1pcwt1t Gfr 1pbwaaz gg 6sr Gg 6vt ggg 6vt gimel 6k7 gjcy ur GJcy sj gl 6t3 gla 8f9 glE 8eq glj 8f8 gnap 8ei gnapprox 8ei gne 8eg gnE 6sp gneq 8eg gneqq 6sp gnsim 6w7 gopf 1pexujh Gopf 1pdxbsn grave 2o GreaterEqual 6sl GreaterEqualLess 6vv GreaterFullEqual 6sn GreaterGreater 8f6 GreaterLess 6t3 GreaterSlantEqual 8e6 GreaterTilde 6sz gscr 6iy Gscr 1p7u7bn gsim 6sz gsime 8em gsiml 8eo Gt 6sr gtcc 8fb gtcir 8e2 gtdot 6vr gtlPar 87p gtquest 8e4 gtrapprox 8ee gtrarr 86w gtrdot 6vr gtreqless 6vv gtreqqless 8ek gtrless 6t3 gtrsim 6sz gvertneqq 1yh3nu1 gvnE 1yh3nu1 Hacek jr hairsp 6bu half 59 hamilt 6iz hardcy ui HARDcy tm harr 6ms hArr 6ok harrcir 85k harrw 6nh Hat 2m hbar 6j3 hcirc 85 Hcirc 84 hearts 7l1 heartsuit 7l1 hellip 6cm hercon 6ux hfr 1pcy7m8 Hfr 6j0 HilbertSpace 6iz hksearow 84l hkswarow 84m hoarr 6pr homtht 6rf hookleftarrow 6nd hookrightarrow 6ne hopf 1pez93w Hopf 6j1 horbar 6c5 HorizontalLine 7b4 hscr 1p8w4mw Hscr 6iz hslash 6j3 hstrok 87 Hstrok 86 HumpDownHump 6ry HumpEqual 6rz hybull 6df hyphen 6c0 ic 6eb icy u0 Icy t4 Idot 8g iecy tx IEcy t1 iff 6ok ifr 1pczm6n Ifr 6j5 ii 6ko iiiint 8b0 iiint 6r1 iinfin 89o iiota 6jt ijlig 8j IJlig 8i Im 6j5 imacr 8b Imacr 8a image 6j5 ImaginaryI 6ko imagline 6j4 imagpart 6j5 imath 8h imof 6uv imped c5 Implies 6oi in 6q0 incare 6it infin 6qm infintie 89p inodot 8h int 6qz Int 6r0 intcal 6uy integers 6jo Integral 6qz intercal 6uy Intersection 6v6 intlarhk 8bb intprod 8cc InvisibleComma 6eb InvisibleTimes 6ea iocy up IOcy sh iogon 8f Iogon 8e iopf 1pf0nob Iopf 1pe04xh iota qh Iota pl iprod 8cc iscr 1p8xj7b Iscr 6j4 isin 6q0 isindot 6wl isinE 6wp isins 6wk isinsv 6wj isinv 6q0 it 6ea itilde 89 Itilde 88 iukcy uu Iukcy sm jcirc 8l Jcirc 8k jcy u1 Jcy t5 jfr 1pd10r2 Jfr 1pc0i08 jmath fr jopf 1pf228q Jopf 1pe1jhw jscr 1p8yxrq Jscr 1p7yf0w jsercy uw Jsercy so jukcy us Jukcy sk kappa qi Kappa pm kappav s0 kcedil 8n Kcedil 8m kcy u2 Kcy t6 kfr 1pd2fbh Kfr 1pc1wkn kgreen 8o khcy ud KHcy th kjcy v0 KJcy ss kopf 1pf3gt5 Kopf 1pe2y2b kscr 1p90cc5 Kscr 1p7ztlb lAarr 6oq lacute 8q Lacute 8p laemptyv 88k lagran 6j6 lambda qj Lambda pn lang 7vs Lang 7vu langd 87l langle 7vs lap 8ed Laplacetrf 6j6 larr 6mo lArr 6og Larr 6n2 larrb 6p0 larrbfs 84f larrfs 84d larrhk 6nd larrlp 6nf larrpl 855 larrsim 86r larrtl 6n6 lat 8ff latail 849 lAtail 84b late 8fh lates 1yh3pgt lbarr 83w lBarr 83y lbbrk 7si lbrace 3f lbrack 2j lbrke 87f lbrksld 87j lbrkslu 87h lcaron 8u Lcaron 8t lcedil 8s Lcedil 8r lceil 6x4 lcub 3f lcy u3 Lcy t7 ldca 852 ldquo 6cc ldquor 6ce ldrdhar 86f ldrushar 85n ldsh 6nm le 6sk lE 6sm LeftAngleBracket 7vs leftarrow 6mo Leftarrow 6og LeftArrow 6mo LeftArrowBar 6p0 LeftArrowRightArrow 6o6 leftarrowtail 6n6 LeftCeiling 6x4 LeftDoubleBracket 7vq LeftDownTeeVector 869 LeftDownVector 6o3 LeftDownVectorBar 861 LeftFloor 6x6 leftharpoondown 6nx leftharpoonup 6nw leftleftarrows 6o7 leftrightarrow 6ms Leftrightarrow 6ok LeftRightArrow 6ms leftrightarrows 6o6 leftrightharpoons 6ob leftrightsquigarrow 6nh LeftRightVector 85q LeftTee 6ub LeftTeeArrow 6n8 LeftTeeVector 862 leftthreetimes 6vf LeftTriangle 6uq LeftTriangleBar 89b LeftTriangleEqual 6us LeftUpDownVector 85t LeftUpTeeVector 868 LeftUpVector 6nz LeftUpVectorBar 860 LeftVector 6nw LeftVectorBar 85u leg 6vu lEg 8ej leq 6sk leqq 6sm leqslant 8e5 les 8e5 lescc 8fc lesdot 8e7 lesdoto 8e9 lesdotor 8eb lesg 1yh3nx6 lesges 8er lessapprox 8ed lessdot 6vq lesseqgtr 6vu lesseqqgtr 8ej LessEqualGreater 6vu LessFullEqual 6sm LessGreater 6t2 lessgtr 6t2 LessLess 8f5 lesssim 6sy LessSlantEqual 8e5 LessTilde 6sy lfisht 870 lfloor 6x6 lfr 1pd3tvw Lfr 1pc3b52 lg 6t2 lgE 8ep lHar 86a lhard 6nx lharu 6nw lharul 86i lhblk 7es ljcy ux LJcy sp ll 6sq Ll 6vs llarr 6o7 llcorner 6xq Lleftarrow 6oq llhard 86j lltri 7i2 lmidot 8w Lmidot 8v lmoust 71s lmoustache 71s lnap 8eh lnapprox 8eh lne 8ef lnE 6so lneq 8ef lneqq 6so lnsim 6w6 loang 7vw loarr 6pp lobrk 7vq longleftarrow 7w5 Longleftarrow 7w8 LongLeftArrow 7w5 longleftrightarrow 7w7 Longleftrightarrow 7wa LongLeftRightArrow 7w7 longmapsto 7wc longrightarrow 7w6 Longrightarrow 7w9 LongRightArrow 7w6 looparrowleft 6nf looparrowright 6ng lopar 879 lopf 1pf4vdk Lopf 1pe4cmq loplus 8bx lotimes 8c4 lowast 6qf lowbar 2n LowerLeftArrow 6mx LowerRightArrow 6mw loz 7gq lozenge 7gq lozf 8a3 lpar 14 lparlt 87n lrarr 6o6 lrcorner 6xr lrhar 6ob lrhard 86l lrm 6by lrtri 6v3 lsaquo 6d5 lscr 1p91qwk Lscr 6j6 lsh 6nk Lsh 6nk lsim 6sy lsime 8el lsimg 8en lsqb 2j lsquo 6c8 lsquor 6ca lstrok 8y Lstrok 8x Lt 6sq ltcc 8fa ltcir 8e1 ltdot 6vq lthree 6vf ltimes 6vd ltlarr 86u ltquest 8e3 ltri 7gj ltrie 6us ltrif 7gi ltrPar 87q lurdshar 85m luruhar 86e lvertneqq 1yh3nu0 lvnE 1yh3nu0 male 7k2 malt 7q8 maltese 7q8 map 6na Map 83p mapsto 6na mapstodown 6nb mapstoleft 6n8 mapstoup 6n9 marker 7fy mcomma 8bt mcy u4 Mcy t8 mdash 6c4 mDDot 6re measuredangle 6qp MediumSpace 6e7 Mellintrf 6k3 mfr 1pd58gb Mfr 1pc4pph mho 6jr mid 6qr midast 16 midcir 8hc minus 6qa minusb 6u7 minusd 6rc minusdu 8bu MinusPlus 6qb mlcp 8gr mldr 6cm mnplus 6qb models 6uf mopf 1pf69xz Mopf 1pe5r75 mp 6qb mscr 1p935gz Mscr 6k3 mstpos 6ri mu qk Mu po multimap 6uw mumap 6uw nabla 6pz nacute 90 Nacute 8z nang 93tzri nap 6rt napE w5np4 napid w5m37 napos 95 napprox 6rt natur 7la natural 7la naturals 6j9 nbump w5m3a nbumpe w5m3b ncap 8cj ncaron 94 Ncaron 93 ncedil 92 Ncedil 91 ncong 6rr ncongdot w5np1 ncup 8ci ncy u5 Ncy t9 ndash 6c3 ne 6sg nearhk 84k nearr 6mv neArr 6on nearrow 6mv nedot w5m3c NegativeMediumSpace 6bv NegativeThickSpace 6bv NegativeThinSpace 6bv NegativeVeryThinSpace 6bv nequiv 6si nesear 84o nesim w5m2y NestedGreaterGreater 6sr NestedLessLess 6sq NewLine a nexist 6pw nexists 6pw nfr 1pd6n0q Nfr 1pc649w nge 6sx ngE w5m3z ngeq 6sx ngeqq w5m3z ngeqslant w5npi nges w5npi nGg w5m75 ngsim 6t1 ngt 6sv nGt 93tztl ngtr 6sv nGtv w5m43 nharr 6ni nhArr 6oe nhpar 8he ni 6q3 nis 6ws nisd 6wq niv 6q3 njcy uy NJcy sq nlarr 6my nlArr 6od nldr 6cl nle 6sw nlE w5m3y nleftarrow 6my nLeftarrow 6od nleftrightarrow 6ni nLeftrightarrow 6oe nleq 6sw nleqq w5m3y nleqslant w5nph nles w5nph nless 6su nLl w5m74 nlsim 6t0 nlt 6su nLt 93tztk nltri 6wa nltrie 6wc nLtv w5m42 nmid 6qs NoBreak 6e8 NonBreakingSpace 4g nopf 1pf7oie Nopf 6j9 Not 8h8 NotCongruent 6si NotCupCap 6st NotDoubleVerticalBar 6qu NotElement 6q1 NotEqual 6sg NotEqualTilde w5m2y NotExists 6pw NotGreater 6sv NotGreaterEqual 6sx NotGreaterFullEqual w5m3z NotGreaterGreater w5m43 NotGreaterLess 6t5 NotGreaterSlantEqual w5npi NotGreaterTilde 6t1 NotHumpDownHump w5m3a NotHumpEqual w5m3b notin 6q1 notindot w5m7x notinE w5m81 notinva 6q1 notinvb 6wn notinvc 6wm NotLeftTriangle 6wa NotLeftTriangleBar w5nkn NotLeftTriangleEqual 6wc NotLess 6su NotLessEqual 6sw NotLessGreater 6t4 NotLessLess w5m42 NotLessSlantEqual w5nph NotLessTilde 6t0 NotNestedGreaterGreater w5nqi NotNestedLessLess w5nqh notni 6q4 notniva 6q4 notnivb 6wu notnivc 6wt NotPrecedes 6tc NotPrecedesEqual w5nqv NotPrecedesSlantEqual 6w0 NotReverseElement 6q4 NotRightTriangle 6wb NotRightTriangleBar w5nko NotRightTriangleEqual 6wd NotSquareSubset w5m53 NotSquareSubsetEqual 6w2 NotSquareSuperset w5m54 NotSquareSupersetEqual 6w3 NotSubset 93tzu8 NotSubsetEqual 6tk NotSucceeds 6td NotSucceedsEqual w5nqw NotSucceedsSlantEqual 6w1 NotSucceedsTilde w5m4n NotSuperset 93tzu9 NotSupersetEqual 6tl NotTilde 6rl NotTildeEqual 6ro NotTildeFullEqual 6rr NotTildeTilde 6rt NotVerticalBar 6qs npar 6qu nparallel 6qu nparsl 94kqag npart w5m16 npolint 8b8 npr 6tc nprcue 6w0 npre w5nqv nprec 6tc npreceq w5nqv nrarr 6mz nrArr 6of nrarrc w5ngb nrarrw w5lyd nrightarrow 6mz nRightarrow 6of nrtri 6wb nrtrie 6wd nsc 6td nsccue 6w1 nsce w5nqw nscr 1p94k1e Nscr 1p841ak nshortmid 6qs nshortparallel 6qu nsim 6rl nsime 6ro nsimeq 6ro nsmid 6qs nspar 6qu nsqsube 6w2 nsqsupe 6w3 nsub 6tg nsube 6tk nsubE w5nrh nsubset 93tzu8 nsubseteq 6tk nsubseteqq w5nrh nsucc 6td nsucceq w5nqw nsup 6th nsupe 6tl nsupE w5nri nsupset 93tzu9 nsupseteq 6tl nsupseteqq w5nri ntgl 6t5 ntlg 6t4 ntriangleleft 6wa ntrianglelefteq 6wc ntriangleright 6wb ntrianglerighteq 6wd nu ql Nu pp num z numero 6ja numsp 6br nvap 93tzsr nvdash 6uk nvDash 6ul nVdash 6um nVDash 6un nvge 93tztf nvgt 93tt2k nvHarr 83o nvinfin 89q nvlArr 83m nvle 93tzte nvlt 93tt2i nvltrie 93tzvm nvrArr 83n nvrtrie 93tzvn nvsim 93tzsa nwarhk 84j nwarr 6mu nwArr 6om nwarrow 6mu nwnear 84n oast 6u3 ocir 6u2 ocy u6 Ocy ta odash 6u5 odblac 9d Odblac 9c odiv 8c8 odot 6u1 odsold 88s oelig 9f OElig 9e ofcir 88v ofr 1pd81l5 Ofr 1pc7iub ogon kb ogt 88x ohbar 88l ohm q1 oint 6r2 olarr 6nu olcir 88u olcross 88r oline 6da olt 88w omacr 99 Omacr 98 omega qx Omega q1 omicron qn Omicron pr omid 88m ominus 6ty oopf 1pf932t Oopf 1pe8kbz opar 88n OpenCurlyDoubleQuote 6cc OpenCurlyQuote 6c8 operp 88p oplus 6tx or 6qw Or 8d0 orarr 6nv ord 8d9 order 6k4 orderof 6k4 origof 6uu oror 8d2 orslope 8d3 orv 8d7 oS 79k oscr 6k4 Oscr 1p85fuz osol 6u0 otimes 6tz Otimes 8c7 otimesas 8c6 ovbar 6yl OverBar 6da OverBrace 732 OverBracket 71w OverParenthesis 730 par 6qt parallel 6qt parsim 8hf parsl 8hp part 6pu PartialD 6pu pcy u7 Pcy tb percnt 11 period 1a permil 6cw perp 6ud pertenk 6cx pfr 1pd9g5k Pfr 1pc8xeq phi qu Phi py phiv r9 phmmat 6k3 phone 7im pi qo Pi ps pitchfork 6vo piv ra planck 6j3 planckh 6j2 plankv 6j3 plus 17 plusacir 8bn plusb 6u6 pluscir 8bm plusdo 6qc plusdu 8bp pluse 8du PlusMinus 4x plussim 8bq plustwo 8br pm 4x Poincareplane 6j0 pointint 8b9 popf 1pfahn8 Popf 6jd pr 6t6 Pr 8fv prap 8fr prcue 6t8 pre 8fj prE 8fn prec 6t6 precapprox 8fr preccurlyeq 6t8 Precedes 6t6 PrecedesEqual 8fj PrecedesSlantEqual 6t8 PrecedesTilde 6ta preceq 8fj precnapprox 8ft precneqq 8fp precnsim 6w8 precsim 6ta prime 6cy Prime 6cz primes 6jd prnap 8ft prnE 8fp prnsim 6w8 prod 6q7 Product 6q7 profalar 6y6 profline 6xe profsurf 6xf prop 6ql Proportion 6rb Proportional 6ql propto 6ql prsim 6ta prurel 6uo pscr 1p97d68 Pscr 1p86ufe psi qw Psi q0 puncsp 6bs qfr 1pdaupz Qfr 1pcabz5 qint 8b0 qopf 1pfbw7n Qopf 6je qprime 6dz qscr 1p98rqn Qscr 1p888zt quaternions 6j1 quatint 8ba quest 1r questeq 6sf rAarr 6or race vvs3w racute 9h Racute 9g radic 6qi raemptyv 88j rang 7vt Rang 7vv rangd 87m range 885 rangle 7vt rarr 6mq rArr 6oi Rarr 6n4 rarrap 86t rarrb 6p1 rarrbfs 84g rarrc 84z rarrfs 84e rarrhk 6ne rarrlp 6ng rarrpl 85h rarrsim 86s rarrtl 6n7 Rarrtl 846 rarrw 6n1 ratail 84a rAtail 84c ratio 6ra rationals 6je rbarr 83x rBarr 83z RBarr 840 rbbrk 7sj rbrace 3h rbrack 2l rbrke 87g rbrksld 87i rbrkslu 87k rcaron 9l Rcaron 9k rcedil 9j Rcedil 9i rceil 6x5 rcub 3h rcy u8 Rcy tc rdca 853 rdldhar 86h rdquo 6cd rdquor 6cd rdsh 6nn Re 6jg real 6jg realine 6jf realpart 6jg reals 6jh rect 7fx ReverseElement 6q3 ReverseEquilibrium 6ob ReverseUpEquilibrium 86n rfisht 871 rfloor 6x7 rfr 1pdc9ae Rfr 6jg rHar 86c rhard 6o1 rharu 6o0 rharul 86k rho qp Rho pt rhov s1 RightAngleBracket 7vt rightarrow 6mq Rightarrow 6oi RightArrow 6mq RightArrowBar 6p1 RightArrowLeftArrow 6o4 rightarrowtail 6n7 RightCeiling 6x5 RightDoubleBracket 7vr RightDownTeeVector 865 RightDownVector 6o2 RightDownVectorBar 85x RightFloor 6x7 rightharpoondown 6o1 rightharpoonup 6o0 rightleftarrows 6o4 rightleftharpoons 6oc rightrightarrows 6o9 rightsquigarrow 6n1 RightTee 6ua RightTeeArrow 6na RightTeeVector 863 rightthreetimes 6vg RightTriangle 6ur RightTriangleBar 89c RightTriangleEqual 6ut RightUpDownVector 85r RightUpTeeVector 864 RightUpVector 6ny RightUpVectorBar 85w RightVector 6o0 RightVectorBar 85v ring ka risingdotseq 6s3 rlarr 6o4 rlhar 6oc rlm 6bz rmoust 71t rmoustache 71t rnmid 8ha roang 7vx roarr 6pq robrk 7vr ropar 87a ropf 1pfdas2 Ropf 6jh roplus 8by rotimes 8c5 RoundImplies 86o rpar 15 rpargt 87o rppolint 8b6 rrarr 6o9 Rrightarrow 6or rsaquo 6d6 rscr 1p9a6b2 Rscr 6jf rsh 6nl Rsh 6nl rsqb 2l rsquo 6c9 rsquor 6c9 rthree 6vg rtimes 6ve rtri 7g9 rtrie 6ut rtrif 7g8 rtriltri 89a RuleDelayed 8ac ruluhar 86g rx 6ji sacute 9n Sacute 9m sbquo 6ca sc 6t7 Sc 8fw scap 8fs scaron 9t Scaron 9s sccue 6t9 sce 8fk scE 8fo scedil 9r Scedil 9q scirc 9p Scirc 9o scnap 8fu scnE 8fq scnsim 6w9 scpolint 8b7 scsim 6tb scy u9 Scy td sdot 6v9 sdotb 6u9 sdote 8di searhk 84l searr 6mw seArr 6oo searrow 6mw semi 1n seswar 84p setminus 6qe setmn 6qe sext 7qu sfr 1pddnut Sfr 1pcd53z sfrown 6xu sharp 7lb shchcy uh SHCHcy tl shcy ug SHcy tk ShortDownArrow 6mr ShortLeftArrow 6mo shortmid 6qr shortparallel 6qt ShortRightArrow 6mq ShortUpArrow 6mp sigma qr Sigma pv sigmaf qq sigmav qq sim 6rg simdot 8dm sime 6rn simeq 6rn simg 8f2 simgE 8f4 siml 8f1 simlE 8f3 simne 6rq simplus 8bo simrarr 86q slarr 6mo SmallCircle 6qg smallsetminus 6qe smashp 8c3 smeparsl 89w smid 6qr smile 6xv smt 8fe smte 8fg smtes 1yh3pgs softcy uk SOFTcy to sol 1b solb 890 solbar 6yn sopf 1pfepch Sopf 1pee6ln spades 7kw spadesuit 7kw spar 6qt sqcap 6tv sqcaps 1yh3nv7 sqcup 6tw sqcups 1yh3nv8 Sqrt 6qi sqsub 6tr sqsube 6tt sqsubset 6tr sqsubseteq 6tt sqsup 6ts sqsupe 6tu sqsupset 6ts sqsupseteq 6tu squ 7fl square 7fl Square 7fl SquareIntersection 6tv SquareSubset 6tr SquareSubsetEqual 6tt SquareSuperset 6ts SquareSupersetEqual 6tu SquareUnion 6tw squarf 7fu squf 7fu srarr 6mq sscr 1p9bkvh Sscr 1p8b24n ssetmn 6qe ssmile 6xv sstarf 6va star 7ie Star 6va starf 7id straightepsilon s5 straightphi r9 strns 4v sub 6te Sub 6vk subdot 8fx sube 6ti subE 8g5 subedot 8g3 submult 8g1 subne 6tm subnE 8gb subplus 8fz subrarr 86x subset 6te Subset 6vk subseteq 6ti subseteqq 8g5 SubsetEqual 6ti subsetneq 6tm subsetneqq 8gb subsim 8g7 subsub 8gl subsup 8gj succ 6t7 succapprox 8fs succcurlyeq 6t9 Succeeds 6t7 SucceedsEqual 8fk SucceedsSlantEqual 6t9 SucceedsTilde 6tb succeq 8fk succnapprox 8fu succneqq 8fq succnsim 6w9 succsim 6tb SuchThat 6q3 sum 6q9 Sum 6q9 sung 7l6 sup 6tf Sup 6vl supdot 8fy supdsub 8go supe 6tj supE 8g6 supedot 8g4 Superset 6tf SupersetEqual 6tj suphsol 7ux suphsub 8gn suplarr 86z supmult 8g2 supne 6tn supnE 8gc supplus 8g0 supset 6tf Supset 6vl supseteq 6tj supseteqq 8g6 supsetneq 6tn supsetneqq 8gc supsim 8g8 supsub 8gk supsup 8gm swarhk 84m swarr 6mx swArr 6op swarrow 6mx swnwar 84q Tab 9 target 6xi tau qs Tau pw tbrk 71w tcaron 9x Tcaron 9w tcedil 9v Tcedil 9u tcy ua Tcy te tdot 6hn telrec 6xh tfr 1pdf2f8 Tfr 1pcejoe there4 6r8 therefore 6r8 Therefore 6r8 theta qg Theta pk thetasym r5 thetav r5 thickapprox 6rs thicksim 6rg ThickSpace 8w11zp thinsp 6bt ThinSpace 6bt thkap 6rs thksim 6rg tilde kc Tilde 6rg TildeEqual 6rn TildeFullEqual 6rp TildeTilde 6rs timesb 6u8 timesbar 8c1 timesd 8c0 tint 6r1 toea 84o top 6uc topbot 6ye topcir 8hd topf 1pfg3ww Topf 1pefl62 topfork 8gq tosa 84p tprime 6d0 trade 6jm TRADE 6jm triangle 7g5 triangledown 7gf triangleleft 7gj trianglelefteq 6us triangleq 6sc triangleright 7g9 trianglerighteq 6ut tridot 7ho trie 6sc triminus 8ca TripleDot 6hn triplus 8c9 trisb 899 tritime 8cb trpezium 736 tscr 1p9czfw Tscr 1p8cgp2 tscy ue TScy ti tshcy uz TSHcy sr tstrok 9z Tstrok 9y twixt 6ss twoheadleftarrow 6n2 twoheadrightarrow 6n4 uarr 6mp uArr 6oh Uarr 6n3 Uarrocir 85l ubrcy v2 Ubrcy su ubreve a5 Ubreve a4 ucy ub Ucy tf udarr 6o5 udblac a9 Udblac a8 udhar 86m ufisht 872 ufr 1pdggzn Ufr 1pcfy8t uHar 86b uharl 6nz uharr 6ny uhblk 7eo ulcorn 6xo ulcorner 6xo ulcrop 6xb ultri 7i0 umacr a3 Umacr a2 UnderBar 2n UnderBrace 733 UnderBracket 71x UnderParenthesis 731 Union 6v7 UnionPlus 6tq uogon ab Uogon aa uopf 1pfhihb Uopf 1pegzqh uparrow 6mp Uparrow 6oh UpArrow 6mp UpArrowBar 842 UpArrowDownArrow 6o5 updownarrow 6mt Updownarrow 6ol UpDownArrow 6mt UpEquilibrium 86m upharpoonleft 6nz upharpoonright 6ny uplus 6tq UpperLeftArrow 6mu UpperRightArrow 6mv upsi qt Upsi r6 upsih r6 upsilon qt Upsilon px UpTee 6ud UpTeeArrow 6n9 upuparrows 6o8 urcorn 6xp urcorner 6xp urcrop 6xa uring a7 Uring a6 urtri 7i1 uscr 1p9ee0b Uscr 1p8dv9h utdot 6wg utilde a1 Utilde a0 utri 7g5 utrif 7g4 uuarr 6o8 uwangle 887 vangrt 87w varepsilon s5 varkappa s0 varnothing 6px varphi r9 varpi ra varpropto 6ql varr 6mt vArr 6ol varrho s1 varsigma qq varsubsetneq 1yh3nuy varsubsetneqq 1yh3phn varsupsetneq 1yh3nuz varsupsetneqq 1yh3pho vartheta r5 vartriangleleft 6uq vartriangleright 6ur vBar 8h4 Vbar 8h7 vBarv 8h5 vcy tu Vcy sy vdash 6ua vDash 6ug Vdash 6uh VDash 6uj Vdashl 8h2 vee 6qw Vee 6v5 veebar 6uz veeeq 6sa vellip 6we verbar 3g Verbar 6c6 vert 3g Vert 6c6 VerticalBar 6qr VerticalLine 3g VerticalSeparator 7rs VerticalTilde 6rk VeryThinSpace 6bu vfr 1pdhvk2 Vfr 1pchct8 vltri 6uq vnsub 93tzu8 vnsup 93tzu9 vopf 1pfix1q Vopf 1peieaw vprop 6ql vrtri 6ur vscr 1p9fskq Vscr 1p8f9tw vsubne 1yh3nuy vsubnE 1yh3phn vsupne 1yh3nuz vsupnE 1yh3pho Vvdash 6ui vzigzag 87u wcirc ad Wcirc ac wedbar 8db wedge 6qv Wedge 6v4 wedgeq 6s9 weierp 6jc wfr 1pdja4h Wfr 1pcirdn wopf 1pfkbm5 Wopf 1pejsvb wp 6jc wr 6rk wreath 6rk wscr 1p9h755 Wscr 1p8goeb xcap 6v6 xcirc 7hr xcup 6v7 xdtri 7gd xfr 1pdkoow Xfr 1pck5y2 xharr 7w7 xhArr 7wa xi qm Xi pq xlarr 7w5 xlArr 7w8 xmap 7wc xnis 6wr xodot 8ao xopf 1pflq6k Xopf 1pel7fq xoplus 8ap xotime 8aq xrarr 7w6 xrArr 7w9 xscr 1p9ilpk Xscr 1p8i2yq xsqcup 8au xuplus 8as xutri 7g3 xvee 6v5 xwedge 6v4 yacy un YAcy tr ycirc af Ycirc ae ycy uj Ycy tn yfr 1pdm39b Yfr 1pclkih yicy uv YIcy sn yopf 1pfn4qz Yopf 1pemm05 yscr 1p9k09z Yscr 1p8jhj5 yucy um YUcy tq Yuml ag zacute ai Zacute ah zcaron am Zcaron al zcy tz Zcy t3 zdot ak Zdot aj zeetrf 6js ZeroWidthSpace 6bv zeta qe Zeta pi zfr 1pdnhtq Zfr 6js zhcy ty ZHcy t2 zigrarr 6ot zopf 1pfojbe Zopf 6jo zscr 1p9leue Zscr 1p8kw3k zwj 6bx zwnj 6bw";function a(r){throw new Error(r)}var o=String.fromCharCode,s=65535;function l(r){for(var e={},t=r.split(" "),a=0;a<t.length;a+=2)e[t[a]]=c(t[a+1]);return e}function c(r){for(var e="",t=parseInt(r,36);t>0;)e+=o(t%s),t=(t-t%s)/s;return e}function n(){var e=r.createTrieNode(),t=function(t,a,o){return void 0===o&&(o=!1),r.setTrie(e,t,{name:t,value:a,legacy:o})};return{set:t,setAll:function(r,e){void 0===e&&(e=!1);for(var a=0,o=Object.entries(r);a<o.length;a++){var s=o[a],l=s[0],c=s[1];t(l,c,e)}},search:function(t,a){var o;return null===(o=r.searchTrie(e,t,a))||void 0===o?void 0:o.value}}}var i="aacute 69 Aacute 5d acirc 6a Acirc 5e acute 50 aelig 6e AElig 5i agrave 68 Agrave 5c amp 12 AMP 12 aring 6d Aring 5h atilde 6b Atilde 5f auml 6c Auml 5g brvbar 4m ccedil 6f Ccedil 5j cedil 54 cent 4i copy 4p COPY 4p curren 4k deg 4w divide 6v eacute 6h Eacute 5l ecirc 6i Ecirc 5m egrave 6g Egrave 5k eth 6o ETH 5s euml 6j Euml 5n frac12 59 frac14 58 frac34 5a gt 1q GT 1q iacute 6l Iacute 5p icirc 6m Icirc 5q iexcl 4h igrave 6k Igrave 5o iquest 5b iuml 6n Iuml 5r laquo 4r lt 1o LT 1o macr 4v micro 51 middot 53 nbsp 4g not 4s ntilde 6p Ntilde 5t oacute 6r Oacute 5v ocirc 6s Ocirc 5w ograve 6q Ograve 5u ordf 4q ordm 56 oslash 6w Oslash 60 otilde 6t Otilde 5x ouml 6u Ouml 5y para 52 plusmn 4x pound 4j quot y QUOT y raquo 57 reg 4u REG 4u sect 4n shy 4t sup1 55 sup2 4y sup3 4z szlig 67 thorn 72 THORN 66 times 5z uacute 6y Uacute 62 ucirc 6z Ucirc 63 ugrave 6x Ugrave 61 uml 4o uuml 70 Uuml 64 yacute 71 Yacute 65 yen 4l yuml 73",p=[1,2,3,4,5,6,7,8,11,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,64976,64977,64978,64979,64980,64981,64982,64983,64984,64985,64986,64987,64988,64989,64990,64991,64992,64993,64994,64995,64996,64997,64998,64999,65e3,65001,65002,65003,65004,65005,65006,65007,65534,65535,131070,131071,196606,196607,262142,262143,327678,327679,393214,393215,458750,458751,524286,524287,589822,589823,655358,655359,720894,720895,786430,786431,851966,851967,917502,917503,983038,983039,1048574,1048575,1114110,1114111],u="0 1ekd 128 6gc 130 6ca 131 b6 132 6ce 133 6cm 134 6cg 135 6ch 136 jq 137 6cw 138 9s 139 6d5 140 9e 142 al 145 6c8 146 6c9 147 6cc 148 6cd 149 6ci 150 6c3 151 6c4 152 kc 153 6jm 154 9t 155 6d6 156 9f 158 am 159 ag",d=l(u);function g(r,e,t){if(e||(e="�"),r>=55296&&r<=57343||r>1114111)return t&&a("Character reference outside the permissible Unicode range"),e;var s=d[r];return null!=s?(t&&a("Disallowed character reference"),s):(t&&-1!==p.indexOf(r)&&a("Disallowed character reference"),r>65535?o((r-=65536)>>>10&1023|55296)+o(56320|1023&r):o(r))}var m=function(r){return r>=48&&r<=57},f=function(r){return r>=48&&r<=57||r>=97&&r<=102||r>=65&&r<=70},h=e.all(e.char(m),{minimumCount:2,maximumCount:6}),q=e.all(e.char(f),{minimumCount:2,maximumCount:6});function b(r,e){e||(e={});var t=e.numericCharacterReferenceTerminated,a=e.illegalCodePointsForbidden,o=e.replacementChar;return function(e){for(var s="",l=0,c=0,n=e.length;c<n;){var i=e.indexOf("&",c);if(-1===i)break;c=i;var p=void 0,u=void 0;if(35===e.charCodeAt(++i)){var d=void 0,m=e.charCodeAt(++i);if(120===m||88===m?(u=q(e,++i),d=16):(u=h(e,i),d=10),-1!==u)!(f=59===e.charCodeAt(u))&&t||(p=g(parseInt(e.substring(i,u),d),o,a)),f&&u++;else u=i}else{u=i;var f,b=r.search(e,i);if(null!=b)u=i+b.name.length,(f=59===e.charCodeAt(u))&&u++,(f||b.legacy)&&(p=b.value)}null!=p&&(s+=l!==c?e.substring(l,c)+p:p,l=u),c=u}return 0===l?e:(l!==n&&(s+=e.substr(l)),s)}}var w={amp:"&",apos:"'",gt:">",lt:"<",quot:'"'},v=n();v.setAll(w);var y=b(v,{numericCharacterReferenceTerminated:!0}),k=l(t),x=l(i),z=n();z.setAll(k),z.setAll(x,!0);var j=b(z);exports.createEntityDecoder=b,exports.createEntityManager=n,exports.decodeHtml=j,exports.decodeXml=y,exports.htmlEntities=k,exports.htmlEntityManager=z,exports.legacyHtmlEntities=x,exports.xmlEntities=w,exports.xmlEntityManager=v;
package/lib/full.d.ts DELETED
@@ -1,10 +0,0 @@
1
- export * from './createEntityDecoder';
2
- export * from './createEntityManager';
3
- export * from './decodeXml';
4
- export declare const htmlEntities: Record<string, string>;
5
- export declare const legacyHtmlEntities: Record<string, string>;
6
- /**
7
- * An entity manager that supports HTML entities.
8
- */
9
- export declare const htmlEntityManager: import("./createEntityManager").IEntityManager;
10
- export declare const decodeHtml: (input: string) => string;
package/lib/full.js DELETED
@@ -1,17 +0,0 @@
1
- import entitiesData from './gen/entities.json';
2
- import { unpackMap } from './unpackMap';
3
- import { createEntityManager } from './createEntityManager';
4
- import legacyEntitiesData from './gen/legacy-entities.json';
5
- import { createEntityDecoder } from './createEntityDecoder';
6
- export * from './createEntityDecoder';
7
- export * from './createEntityManager';
8
- export * from './decodeXml';
9
- export var htmlEntities = unpackMap(entitiesData);
10
- export var legacyHtmlEntities = unpackMap(legacyEntitiesData);
11
- /**
12
- * An entity manager that supports HTML entities.
13
- */
14
- export var htmlEntityManager = createEntityManager();
15
- htmlEntityManager.setAll(htmlEntities);
16
- htmlEntityManager.setAll(legacyHtmlEntities, true);
17
- export var decodeHtml = createEntityDecoder(htmlEntityManager);