/* commonmark 0.31.0 https://github.com/commonmark/commonmark.js @license BSD3 */ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'], factory) : (global = global || self, factory(global.commonmark = {})); }(this, (function (exports) { 'use strict'; function isContainer(node) { switch (node._type) { case "document": case "block_quote": case "list": case "item": case "paragraph": case "heading": case "emph": case "strong": case "link": case "image": case "custom_inline": case "custom_block": return true; default: return false; } } var resumeAt = function(node, entering) { this.current = node; this.entering = entering === true; }; var next = function() { var cur = this.current; var entering = this.entering; if (cur === null) { return null; } var container = isContainer(cur); if (entering && container) { if (cur._firstChild) { this.current = cur._firstChild; this.entering = true; } else { // stay on node but exit this.entering = false; } } else if (cur === this.root) { this.current = null; } else if (cur._next === null) { this.current = cur._parent; this.entering = false; } else { this.current = cur._next; this.entering = true; } return { entering: entering, node: cur }; }; var NodeWalker = function(root) { return { current: root, root: root, entering: true, next: next, resumeAt: resumeAt }; }; var Node = function(nodeType, sourcepos) { this._type = nodeType; this._parent = null; this._firstChild = null; this._lastChild = null; this._prev = null; this._next = null; this._sourcepos = sourcepos; this._open = true; this._string_content = null; this._literal = null; this._listData = {}; this._info = null; this._destination = null; this._title = null; this._isFenced = false; this._fenceChar = null; this._fenceLength = 0; this._fenceOffset = null; this._level = null; this._onEnter = null; this._onExit = null; }; var proto = Node.prototype; Object.defineProperty(proto, "isContainer", { get: function() { return isContainer(this); } }); Object.defineProperty(proto, "type", { get: function() { return this._type; } }); Object.defineProperty(proto, "firstChild", { get: function() { return this._firstChild; } }); Object.defineProperty(proto, "lastChild", { get: function() { return this._lastChild; } }); Object.defineProperty(proto, "next", { get: function() { return this._next; } }); Object.defineProperty(proto, "prev", { get: function() { return this._prev; } }); Object.defineProperty(proto, "parent", { get: function() { return this._parent; } }); Object.defineProperty(proto, "sourcepos", { get: function() { return this._sourcepos; } }); Object.defineProperty(proto, "literal", { get: function() { return this._literal; }, set: function(s) { this._literal = s; } }); Object.defineProperty(proto, "destination", { get: function() { return this._destination; }, set: function(s) { this._destination = s; } }); Object.defineProperty(proto, "title", { get: function() { return this._title; }, set: function(s) { this._title = s; } }); Object.defineProperty(proto, "info", { get: function() { return this._info; }, set: function(s) { this._info = s; } }); Object.defineProperty(proto, "level", { get: function() { return this._level; }, set: function(s) { this._level = s; } }); Object.defineProperty(proto, "listType", { get: function() { return this._listData.type; }, set: function(t) { this._listData.type = t; } }); Object.defineProperty(proto, "listTight", { get: function() { return this._listData.tight; }, set: function(t) { this._listData.tight = t; } }); Object.defineProperty(proto, "listStart", { get: function() { return this._listData.start; }, set: function(n) { this._listData.start = n; } }); Object.defineProperty(proto, "listDelimiter", { get: function() { return this._listData.delimiter; }, set: function(delim) { this._listData.delimiter = delim; } }); Object.defineProperty(proto, "onEnter", { get: function() { return this._onEnter; }, set: function(s) { this._onEnter = s; } }); Object.defineProperty(proto, "onExit", { get: function() { return this._onExit; }, set: function(s) { this._onExit = s; } }); Node.prototype.appendChild = function(child) { child.unlink(); child._parent = this; if (this._lastChild) { this._lastChild._next = child; child._prev = this._lastChild; this._lastChild = child; } else { this._firstChild = child; this._lastChild = child; } }; Node.prototype.prependChild = function(child) { child.unlink(); child._parent = this; if (this._firstChild) { this._firstChild._prev = child; child._next = this._firstChild; this._firstChild = child; } else { this._firstChild = child; this._lastChild = child; } }; Node.prototype.unlink = function() { if (this._prev) { this._prev._next = this._next; } else if (this._parent) { this._parent._firstChild = this._next; } if (this._next) { this._next._prev = this._prev; } else if (this._parent) { this._parent._lastChild = this._prev; } this._parent = null; this._next = null; this._prev = null; }; Node.prototype.insertAfter = function(sibling) { sibling.unlink(); sibling._next = this._next; if (sibling._next) { sibling._next._prev = sibling; } sibling._prev = this; this._next = sibling; sibling._parent = this._parent; if (!sibling._next) { sibling._parent._lastChild = sibling; } }; Node.prototype.insertBefore = function(sibling) { sibling.unlink(); sibling._prev = this._prev; if (sibling._prev) { sibling._prev._next = sibling; } sibling._next = this; this._prev = sibling; sibling._parent = this._parent; if (!sibling._prev) { sibling._parent._firstChild = sibling; } }; Node.prototype.walker = function() { var walker = new NodeWalker(this); return walker; }; /* Example of use of walker: var walker = w.walker(); var event; while (event = walker.next()) { console.log(event.entering, event.node.type); } */ var encodeCache = {}; // Create a lookup array where anything but characters in `chars` string // and alphanumeric chars is percent-encoded. // function getEncodeCache(exclude) { var i, ch, cache = encodeCache[exclude]; if (cache) { return cache; } cache = encodeCache[exclude] = []; for (i = 0; i < 128; i++) { ch = String.fromCharCode(i); if (/^[0-9a-z]$/i.test(ch)) { // always allow unencoded alphanumeric characters cache.push(ch); } else { cache.push('%' + ('0' + i.toString(16).toUpperCase()).slice(-2)); } } for (i = 0; i < exclude.length; i++) { cache[exclude.charCodeAt(i)] = exclude[i]; } return cache; } // Encode unsafe characters with percent-encoding, skipping already // encoded sequences. // // - string - string to encode // - exclude - list of characters to ignore (in addition to a-zA-Z0-9) // - keepEscaped - don't encode '%' in a correct escape sequence (default: true) // function encode(string, exclude, keepEscaped) { var i, l, code, nextCode, cache, result = ''; if (typeof exclude !== 'string') { // encode(string, keepEscaped) keepEscaped = exclude; exclude = encode.defaultChars; } if (typeof keepEscaped === 'undefined') { keepEscaped = true; } cache = getEncodeCache(exclude); for (i = 0, l = string.length; i < l; i++) { code = string.charCodeAt(i); if (keepEscaped && code === 0x25 /* % */ && i + 2 < l) { if (/^[0-9a-f]{2}$/i.test(string.slice(i + 1, i + 3))) { result += string.slice(i, i + 3); i += 2; continue; } } if (code < 128) { result += cache[code]; continue; } if (code >= 0xD800 && code <= 0xDFFF) { if (code >= 0xD800 && code <= 0xDBFF && i + 1 < l) { nextCode = string.charCodeAt(i + 1); if (nextCode >= 0xDC00 && nextCode <= 0xDFFF) { result += encodeURIComponent(string[i] + string[i + 1]); i++; continue; } } result += '%EF%BF%BD'; continue; } result += encodeURIComponent(string[i]); } return result; } encode.defaultChars = ";/?:@&=+$,-_.!~*'()#"; encode.componentChars = "-_.!~*'()"; var encode_1 = encode; var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; function unwrapExports (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } function createCommonjsModule(fn, module) { return module = { exports: {} }, fn(module, module.exports), module.exports; } function getCjsExportFromNamespace (n) { return n && n['default'] || n; } var decodeDataHtml = createCommonjsModule(function (module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); // Generated using scripts/write-decode-map.ts // prettier-ignore exports.default = new Uint16Array([14866, 60, 237, 340, 721, 1312, 1562, 1654, 1838, 1957, 2183, 2239, 2301, 2958, 3037, 3893, 4123, 4298, 4330, 4801, 5191, 5395, 5752, 5903, 5943, 5972, 6050, 0, 0, 0, 0, 0, 0, 6135, 6565, 7422, 8183, 8738, 9242, 9503, 9938, 10189, 10573, 10637, 10715, 11950, 12246, 13539, 13950, 14445, 14533, 15364, 16514, 16980, 17390, 17763, 17849, 18036, 18125, 4096, 69, 77, 97, 98, 99, 102, 103, 108, 109, 110, 111, 112, 114, 115, 116, 117, 92, 100, 106, 115, 122, 137, 142, 151, 157, 163, 167, 182, 196, 204, 220, 229, 108, 105, 103, 33024, 198, 59, 32768, 198, 80, 33024, 38, 59, 32768, 38, 99, 117, 116, 101, 33024, 193, 59, 32768, 193, 114, 101, 118, 101, 59, 32768, 258, 512, 105, 121, 127, 134, 114, 99, 33024, 194, 59, 32768, 194, 59, 32768, 1040, 114, 59, 32896, 55349, 56580, 114, 97, 118, 101, 33024, 192, 59, 32768, 192, 112, 104, 97, 59, 32768, 913, 97, 99, 114, 59, 32768, 256, 100, 59, 32768, 10835, 512, 103, 112, 172, 177, 111, 110, 59, 32768, 260, 102, 59, 32896, 55349, 56632, 112, 108, 121, 70, 117, 110, 99, 116, 105, 111, 110, 59, 32768, 8289, 105, 110, 103, 33024, 197, 59, 32768, 197, 512, 99, 115, 209, 214, 114, 59, 32896, 55349, 56476, 105, 103, 110, 59, 32768, 8788, 105, 108, 100, 101, 33024, 195, 59, 32768, 195, 109, 108, 33024, 196, 59, 32768, 196, 2048, 97, 99, 101, 102, 111, 114, 115, 117, 253, 278, 282, 310, 315, 321, 327, 332, 512, 99, 114, 258, 267, 107, 115, 108, 97, 115, 104, 59, 32768, 8726, 583, 271, 274, 59, 32768, 10983, 101, 100, 59, 32768, 8966, 121, 59, 32768, 1041, 768, 99, 114, 116, 289, 296, 306, 97, 117, 115, 101, 59, 32768, 8757, 110, 111, 117, 108, 108, 105, 115, 59, 32768, 8492, 97, 59, 32768, 914, 114, 59, 32896, 55349, 56581, 112, 102, 59, 32896, 55349, 56633, 101, 118, 101, 59, 32768, 728, 99, 114, 59, 32768, 8492, 109, 112, 101, 113, 59, 32768, 8782, 3584, 72, 79, 97, 99, 100, 101, 102, 104, 105, 108, 111, 114, 115, 117, 368, 373, 380, 426, 461, 466, 487, 491, 495, 533, 593, 695, 701, 707, 99, 121, 59, 32768, 1063, 80, 89, 33024, 169, 59, 32768, 169, 768, 99, 112, 121, 387, 393, 419, 117, 116, 101, 59, 32768, 262, 512, 59, 105, 398, 400, 32768, 8914, 116, 97, 108, 68, 105, 102, 102, 101, 114, 101, 110, 116, 105, 97, 108, 68, 59, 32768, 8517, 108, 101, 121, 115, 59, 32768, 8493, 1024, 97, 101, 105, 111, 435, 441, 449, 454, 114, 111, 110, 59, 32768, 268, 100, 105, 108, 33024, 199, 59, 32768, 199, 114, 99, 59, 32768, 264, 110, 105, 110, 116, 59, 32768, 8752, 111, 116, 59, 32768, 266, 512, 100, 110, 471, 478, 105, 108, 108, 97, 59, 32768, 184, 116, 101, 114, 68, 111, 116, 59, 32768, 183, 114, 59, 32768, 8493, 105, 59, 32768, 935, 114, 99, 108, 101, 1024, 68, 77, 80, 84, 508, 513, 520, 526, 111, 116, 59, 32768, 8857, 105, 110, 117, 115, 59, 32768, 8854, 108, 117, 115, 59, 32768, 8853, 105, 109, 101, 115, 59, 32768, 8855, 111, 512, 99, 115, 539, 562, 107, 119, 105, 115, 101, 67, 111, 110, 116, 111, 117, 114, 73, 110, 116, 101, 103, 114, 97, 108, 59, 32768, 8754, 101, 67, 117, 114, 108, 121, 512, 68, 81, 573, 586, 111, 117, 98, 108, 101, 81, 117, 111, 116, 101, 59, 32768, 8221, 117, 111, 116, 101, 59, 32768, 8217, 1024, 108, 110, 112, 117, 602, 614, 648, 664, 111, 110, 512, 59, 101, 609, 611, 32768, 8759, 59, 32768, 10868, 768, 103, 105, 116, 621, 629, 634, 114, 117, 101, 110, 116, 59, 32768, 8801, 110, 116, 59, 32768, 8751, 111, 117, 114, 73, 110, 116, 101, 103, 114, 97, 108, 59, 32768, 8750, 512, 102, 114, 653, 656, 59, 32768, 8450, 111, 100, 117, 99, 116, 59, 32768, 8720, 110, 116, 101, 114, 67, 108, 111, 99, 107, 119, 105, 115, 101, 67, 111, 110, 116, 111, 117, 114, 73, 110, 116, 101, 103, 114, 97, 108, 59, 32768, 8755, 111, 115, 115, 59, 32768, 10799, 99, 114, 59, 32896, 55349, 56478, 112, 512, 59, 67, 713, 715, 32768, 8915, 97, 112, 59, 32768, 8781, 2816, 68, 74, 83, 90, 97, 99, 101, 102, 105, 111, 115, 743, 758, 763, 768, 773, 795, 809, 821, 826, 910, 1295, 512, 59, 111, 748, 750, 32768, 8517, 116, 114, 97, 104, 100, 59, 32768, 10513, 99, 121, 59, 32768, 1026, 99, 121, 59, 32768, 1029, 99, 121, 59, 32768, 1039, 768, 103, 114, 115, 780, 786, 790, 103, 101, 114, 59, 32768, 8225, 114, 59, 32768, 8609, 104, 118, 59, 32768, 10980, 512, 97, 121, 800, 806, 114, 111, 110, 59, 32768, 270, 59, 32768, 1044, 108, 512, 59, 116, 815, 817, 32768, 8711, 97, 59, 32768, 916, 114, 59, 32896, 55349, 56583, 512, 97, 102, 831, 897, 512, 99, 109, 836, 891, 114, 105, 116, 105, 99, 97, 108, 1024, 65, 68, 71, 84, 852, 859, 877, 884, 99, 117, 116, 101, 59, 32768, 180, 111, 581, 864, 867, 59, 32768, 729, 98, 108, 101, 65, 99, 117, 116, 101, 59, 32768, 733, 114, 97, 118, 101, 59, 32768, 96, 105, 108, 100, 101, 59, 32768, 732, 111, 110, 100, 59, 32768, 8900, 102, 101, 114, 101, 110, 116, 105, 97, 108, 68, 59, 32768, 8518, 2113, 920, 0, 0, 0, 925, 946, 0, 1139, 102, 59, 32896, 55349, 56635, 768, 59, 68, 69, 931, 933, 938, 32768, 168, 111, 116, 59, 32768, 8412, 113, 117, 97, 108, 59, 32768, 8784, 98, 108, 101, 1536, 67, 68, 76, 82, 85, 86, 961, 978, 996, 1080, 1101, 1125, 111, 110, 116, 111, 117, 114, 73, 110, 116, 101, 103, 114, 97, 108, 59, 32768, 8751, 111, 1093, 985, 0, 0, 988, 59, 32768, 168, 110, 65, 114, 114, 111, 119, 59, 32768, 8659, 512, 101, 111, 1001, 1034, 102, 116, 768, 65, 82, 84, 1010, 1017, 1029, 114, 114, 111, 119, 59, 32768, 8656, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 32768, 8660, 101, 101, 59, 32768, 10980, 110, 103, 512, 76, 82, 1041, 1068, 101, 102, 116, 512, 65, 82, 1049, 1056, 114, 114, 111, 119, 59, 32768, 10232, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 32768, 10234, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 32768, 10233, 105, 103, 104, 116, 512, 65, 84, 1089, 1096, 114, 114, 111, 119, 59, 32768, 8658, 101, 101, 59, 32768, 8872, 112, 1042, 1108, 0, 0, 1115, 114, 114, 111, 119, 59, 32768, 8657, 111, 119, 110, 65, 114, 114, 111, 119, 59, 32768, 8661, 101, 114, 116, 105, 99, 97, 108, 66, 97, 114, 59, 32768, 8741, 110, 1536, 65, 66, 76, 82, 84, 97, 1152, 1179, 1186, 1236, 1272, 1288, 114, 114, 111, 119, 768, 59, 66, 85, 1163, 1165, 1170, 32768, 8595, 97, 114, 59, 32768, 10515, 112, 65, 114, 114, 111, 119, 59, 32768, 8693, 114, 101, 118, 101, 59, 32768, 785, 101, 102, 116, 1315, 1196, 0, 1209, 0, 1220, 105, 103, 104, 116, 86, 101, 99, 116, 111, 114, 59, 32768, 10576, 101, 101, 86, 101, 99, 116, 111, 114, 59, 32768, 10590, 101, 99, 116, 111, 114, 512, 59, 66, 1229, 1231, 32768, 8637, 97, 114, 59, 32768, 10582, 105, 103, 104, 116, 805, 1245, 0, 1256, 101, 101, 86, 101, 99, 116, 111, 114, 59, 32768, 10591, 101, 99, 116, 111, 114, 512, 59, 66, 1265, 1267, 32768, 8641, 97, 114, 59, 32768, 10583, 101, 101, 512, 59, 65, 1279, 1281, 32768, 8868, 114, 114, 111, 119, 59, 32768, 8615, 114, 114, 111, 119, 59, 32768, 8659, 512, 99, 116, 1300, 1305, 114, 59, 32896, 55349, 56479, 114, 111, 107, 59, 32768, 272, 4096, 78, 84, 97, 99, 100, 102, 103, 108, 109, 111, 112, 113, 115, 116, 117, 120, 1344, 1348, 1354, 1363, 1386, 1391, 1396, 1405, 1413, 1460, 1475, 1483, 1514, 1527, 1531, 1538, 71, 59, 32768, 330, 72, 33024, 208, 59, 32768, 208, 99, 117, 116, 101, 33024, 201, 59, 32768, 201, 768, 97, 105, 121, 1370, 1376, 1383, 114, 111, 110, 59, 32768, 282, 114, 99, 33024, 202, 59, 32768, 202, 59, 32768, 1069, 111, 116, 59, 32768, 278, 114, 59, 32896, 55349, 56584, 114, 97, 118, 101, 33024, 200, 59, 32768, 200, 101, 109, 101, 110, 116, 59, 32768, 8712, 512, 97, 112, 1418, 1423, 99, 114, 59, 32768, 274, 116, 121, 1060, 1431, 0, 0, 1444, 109, 97, 108, 108, 83, 113, 117, 97, 114, 101, 59, 32768, 9723, 101, 114, 121, 83, 109, 97, 108, 108, 83, 113, 117, 97, 114, 101, 59, 32768, 9643, 512, 103, 112, 1465, 1470, 111, 110, 59, 32768, 280, 102, 59, 32896, 55349, 56636, 115, 105, 108, 111, 110, 59, 32768, 917, 117, 512, 97, 105, 1489, 1504, 108, 512, 59, 84, 1495, 1497, 32768, 10869, 105, 108, 100, 101, 59, 32768, 8770, 108, 105, 98, 114, 105, 117, 109, 59, 32768, 8652, 512, 99, 105, 1519, 1523, 114, 59, 32768, 8496, 109, 59, 32768, 10867, 97, 59, 32768, 919, 109, 108, 33024, 203, 59, 32768, 203, 512, 105, 112, 1543, 1549, 115, 116, 115, 59, 32768, 8707, 111, 110, 101, 110, 116, 105, 97, 108, 69, 59, 32768, 8519, 1280, 99, 102, 105, 111, 115, 1572, 1576, 1581, 1620, 1648, 121, 59, 32768, 1060, 114, 59, 32896, 55349, 56585, 108, 108, 101, 100, 1060, 1591, 0, 0, 1604, 109, 97, 108, 108, 83, 113, 117, 97, 114, 101, 59, 32768, 9724, 101, 114, 121, 83, 109, 97, 108, 108, 83, 113, 117, 97, 114, 101, 59, 32768, 9642, 1601, 1628, 0, 1633, 0, 0, 1639, 102, 59, 32896, 55349, 56637, 65, 108, 108, 59, 32768, 8704, 114, 105, 101, 114, 116, 114, 102, 59, 32768, 8497, 99, 114, 59, 32768, 8497, 3072, 74, 84, 97, 98, 99, 100, 102, 103, 111, 114, 115, 116, 1678, 1683, 1688, 1701, 1708, 1729, 1734, 1739, 1742, 1748, 1828, 1834, 99, 121, 59, 32768, 1027, 33024, 62, 59, 32768, 62, 109, 109, 97, 512, 59, 100, 1696, 1698, 32768, 915, 59, 32768, 988, 114, 101, 118, 101, 59, 32768, 286, 768, 101, 105, 121, 1715, 1721, 1726, 100, 105, 108, 59, 32768, 290, 114, 99, 59, 32768, 284, 59, 32768, 1043, 111, 116, 59, 32768, 288, 114, 59, 32896, 55349, 56586, 59, 32768, 8921, 112, 102, 59, 32896, 55349, 56638, 101, 97, 116, 101, 114, 1536, 69, 70, 71, 76, 83, 84, 1766, 1783, 1794, 1803, 1809, 1821, 113, 117, 97, 108, 512, 59, 76, 1775, 1777, 32768, 8805, 101, 115, 115, 59, 32768, 8923, 117, 108, 108, 69, 113, 117, 97, 108, 59, 32768, 8807, 114, 101, 97, 116, 101, 114, 59, 32768, 10914, 101, 115, 115, 59, 32768, 8823, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 32768, 10878, 105, 108, 100, 101, 59, 32768, 8819, 99, 114, 59, 32896, 55349, 56482, 59, 32768, 8811, 2048, 65, 97, 99, 102, 105, 111, 115, 117, 1854, 1861, 1874, 1880, 1884, 1897, 1919, 1934, 82, 68, 99, 121, 59, 32768, 1066, 512, 99, 116, 1866, 1871, 101, 107, 59, 32768, 711, 59, 32768, 94, 105, 114, 99, 59, 32768, 292, 114, 59, 32768, 8460, 108, 98, 101, 114, 116, 83, 112, 97, 99, 101, 59, 32768, 8459, 833, 1902, 0, 1906, 102, 59, 32768, 8461, 105, 122, 111, 110, 116, 97, 108, 76, 105, 110, 101, 59, 32768, 9472, 512, 99, 116, 1924, 1928, 114, 59, 32768, 8459, 114, 111, 107, 59, 32768, 294, 109, 112, 533, 1940, 1950, 111, 119, 110, 72, 117, 109, 112, 59, 32768, 8782, 113, 117, 97, 108, 59, 32768, 8783, 3584, 69, 74, 79, 97, 99, 100, 102, 103, 109, 110, 111, 115, 116, 117, 1985, 1990, 1996, 2001, 2010, 2025, 2030, 2034, 2043, 2077, 2134, 2155, 2160, 2167, 99, 121, 59, 32768, 1045, 108, 105, 103, 59, 32768, 306, 99, 121, 59, 32768, 1025, 99, 117, 116, 101, 33024, 205, 59, 32768, 205, 512, 105, 121, 2015, 2022, 114, 99, 33024, 206, 59, 32768, 206, 59, 32768, 1048, 111, 116, 59, 32768, 304, 114, 59, 32768, 8465, 114, 97, 118, 101, 33024, 204, 59, 32768, 204, 768, 59, 97, 112, 2050, 2052, 2070, 32768, 8465, 512, 99, 103, 2057, 2061, 114, 59, 32768, 298, 105, 110, 97, 114, 121, 73, 59, 32768, 8520, 108, 105, 101, 115, 59, 32768, 8658, 837, 2082, 0, 2110, 512, 59, 101, 2086, 2088, 32768, 8748, 512, 103, 114, 2093, 2099, 114, 97, 108, 59, 32768, 8747, 115, 101, 99, 116, 105, 111, 110, 59, 32768, 8898, 105, 115, 105, 98, 108, 101, 512, 67, 84, 2120, 2127, 111, 109, 109, 97, 59, 32768, 8291, 105, 109, 101, 115, 59, 32768, 8290, 768, 103, 112, 116, 2141, 2146, 2151, 111, 110, 59, 32768, 302, 102, 59, 32896, 55349, 56640, 97, 59, 32768, 921, 99, 114, 59, 32768, 8464, 105, 108, 100, 101, 59, 32768, 296, 828, 2172, 0, 2177, 99, 121, 59, 32768, 1030, 108, 33024, 207, 59, 32768, 207, 1280, 99, 102, 111, 115, 117, 2193, 2206, 2211, 2217, 2232, 512, 105, 121, 2198, 2203, 114, 99, 59, 32768, 308, 59, 32768, 1049, 114, 59, 32896, 55349, 56589, 112, 102, 59, 32896, 55349, 56641, 820, 2222, 0, 2227, 114, 59, 32896, 55349, 56485, 114, 99, 121, 59, 32768, 1032, 107, 99, 121, 59, 32768, 1028, 1792, 72, 74, 97, 99, 102, 111, 115, 2253, 2258, 2263, 2269, 2283, 2288, 2294, 99, 121, 59, 32768, 1061, 99, 121, 59, 32768, 1036, 112, 112, 97, 59, 32768, 922, 512, 101, 121, 2274, 2280, 100, 105, 108, 59, 32768, 310, 59, 32768, 1050, 114, 59, 32896, 55349, 56590, 112, 102, 59, 32896, 55349, 56642, 99, 114, 59, 32896, 55349, 56486, 2816, 74, 84, 97, 99, 101, 102, 108, 109, 111, 115, 116, 2323, 2328, 2333, 2374, 2396, 2775, 2780, 2797, 2804, 2934, 2954, 99, 121, 59, 32768, 1033, 33024, 60, 59, 32768, 60, 1280, 99, 109, 110, 112, 114, 2344, 2350, 2356, 2360, 2370, 117, 116, 101, 59, 32768, 313, 98, 100, 97, 59, 32768, 923, 103, 59, 32768, 10218, 108, 97, 99, 101, 116, 114, 102, 59, 32768, 8466, 114, 59, 32768, 8606, 768, 97, 101, 121, 2381, 2387, 2393, 114, 111, 110, 59, 32768, 317, 100, 105, 108, 59, 32768, 315, 59, 32768, 1051, 512, 102, 115, 2401, 2702, 116, 2560, 65, 67, 68, 70, 82, 84, 85, 86, 97, 114, 2423, 2470, 2479, 2530, 2537, 2561, 2618, 2666, 2683, 2690, 512, 110, 114, 2428, 2441, 103, 108, 101, 66, 114, 97, 99, 107, 101, 116, 59, 32768, 10216, 114, 111, 119, 768, 59, 66, 82, 2451, 2453, 2458, 32768, 8592, 97, 114, 59, 32768, 8676, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 32768, 8646, 101, 105, 108, 105, 110, 103, 59, 32768, 8968, 111, 838, 2485, 0, 2498, 98, 108, 101, 66, 114, 97, 99, 107, 101, 116, 59, 32768, 10214, 110, 805, 2503, 0, 2514, 101, 101, 86, 101, 99, 116, 111, 114, 59, 32768, 10593, 101, 99, 116, 111, 114, 512, 59, 66, 2523, 2525, 32768, 8643, 97, 114, 59, 32768, 10585, 108, 111, 111, 114, 59, 32768, 8970, 105, 103, 104, 116, 512, 65, 86, 2546, 2553, 114, 114, 111, 119, 59, 32768, 8596, 101, 99, 116, 111, 114, 59, 32768, 10574, 512, 101, 114, 2566, 2591, 101, 768, 59, 65, 86, 2574, 2576, 2583, 32768, 8867, 114, 114, 111, 119, 59, 32768, 8612, 101, 99, 116, 111, 114, 59, 32768, 10586, 105, 97, 110, 103, 108, 101, 768, 59, 66, 69, 2604, 2606, 2611, 32768, 8882, 97, 114, 59, 32768, 10703, 113, 117, 97, 108, 59, 32768, 8884, 112, 768, 68, 84, 86, 2626, 2638, 2649, 111, 119, 110, 86, 101, 99, 116, 111, 114, 59, 32768, 10577, 101, 101, 86, 101, 99, 116, 111, 114, 59, 32768, 10592, 101, 99, 116, 111, 114, 512, 59, 66, 2659, 2661, 32768, 8639, 97, 114, 59, 32768, 10584, 101, 99, 116, 111, 114, 512, 59, 66, 2676, 2678, 32768, 8636, 97, 114, 59, 32768, 10578, 114, 114, 111, 119, 59, 32768, 8656, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 32768, 8660, 115, 1536, 69, 70, 71, 76, 83, 84, 2716, 2730, 2741, 2750, 2756, 2768, 113, 117, 97, 108, 71, 114, 101, 97, 116, 101, 114, 59, 32768, 8922, 117, 108, 108, 69, 113, 117, 97, 108, 59, 32768, 8806, 114, 101, 97, 116, 101, 114, 59, 32768, 8822, 101, 115, 115, 59, 32768, 10913, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 32768, 10877, 105, 108, 100, 101, 59, 32768, 8818, 114, 59, 32896, 55349, 56591, 512, 59, 101, 2785, 2787, 32768, 8920, 102, 116, 97, 114, 114, 111, 119, 59, 32768, 8666, 105, 100, 111, 116, 59, 32768, 319, 768, 110, 112, 119, 2811, 2899, 2904, 103, 1024, 76, 82, 108, 114, 2821, 2848, 2860, 2887, 101, 102, 116, 512, 65, 82, 2829, 2836, 114, 114, 111, 119, 59, 32768, 10229, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 32768, 10231, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 32768, 10230, 101, 102, 116, 512, 97, 114, 2868, 2875, 114, 114, 111, 119, 59, 32768, 10232, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 32768, 10234, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 32768, 10233, 102, 59, 32896, 55349, 56643, 101, 114, 512, 76, 82, 2911, 2922, 101, 102, 116, 65, 114, 114, 111, 119, 59, 32768, 8601, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 32768, 8600, 768, 99, 104, 116, 2941, 2945, 2948, 114, 59, 32768, 8466, 59, 32768, 8624, 114, 111, 107, 59, 32768, 321, 59, 32768, 8810, 2048, 97, 99, 101, 102, 105, 111, 115, 117, 2974, 2978, 2982, 3007, 3012, 3022, 3028, 3033, 112, 59, 32768, 10501, 121, 59, 32768, 1052, 512, 100, 108, 2987, 2998, 105, 117, 109, 83, 112, 97, 99, 101, 59, 32768, 8287, 108, 105, 110, 116, 114, 102, 59, 32768, 8499, 114, 59, 32896, 55349, 56592, 110, 117, 115, 80, 108, 117, 115, 59, 32768, 8723, 112, 102, 59, 32896, 55349, 56644, 99, 114, 59, 32768, 8499, 59, 32768, 924, 2304, 74, 97, 99, 101, 102, 111, 115, 116, 117, 3055, 3060, 3067, 3089, 3201, 3206, 3874, 3880, 3889, 99, 121, 59, 32768, 1034, 99, 117, 116, 101, 59, 32768, 323, 768, 97, 101, 121, 3074, 3080, 3086, 114, 111, 110, 59, 32768, 327, 100, 105, 108, 59, 32768, 325, 59, 32768, 1053, 768, 103, 115, 119, 3096, 3160, 3194, 97, 116, 105, 118, 101, 768, 77, 84, 86, 3108, 3121, 3145, 101, 100, 105, 117, 109, 83, 112, 97, 99, 101, 59, 32768, 8203, 104, 105, 512, 99, 110, 3128, 3137, 107, 83, 112, 97, 99, 101, 59, 32768, 8203, 83, 112, 97, 99, 101, 59, 32768, 8203, 101, 114, 121, 84, 104, 105, 110, 83, 112, 97, 99, 101, 59, 32768, 8203, 116, 101, 100, 512, 71, 76, 3168, 3184, 114, 101, 97, 116, 101, 114, 71, 114, 101, 97, 116, 101, 114, 59, 32768, 8811, 101, 115, 115, 76, 101, 115, 115, 59, 32768, 8810, 76, 105, 110, 101, 59, 32768, 10, 114, 59, 32896, 55349, 56593, 1024, 66, 110, 112, 116, 3215, 3222, 3238, 3242, 114, 101, 97, 107, 59, 32768, 8288, 66, 114, 101, 97, 107, 105, 110, 103, 83, 112, 97, 99, 101, 59, 32768, 160, 102, 59, 32768, 8469, 3328, 59, 67, 68, 69, 71, 72, 76, 78, 80, 82, 83, 84, 86, 3269, 3271, 3293, 3312, 3352, 3430, 3455, 3551, 3589, 3625, 3678, 3821, 3861, 32768, 10988, 512, 111, 117, 3276, 3286, 110, 103, 114, 117, 101, 110, 116, 59, 32768, 8802, 112, 67, 97, 112, 59, 32768, 8813, 111, 117, 98, 108, 101, 86, 101, 114, 116, 105, 99, 97, 108, 66, 97, 114, 59, 32768, 8742, 768, 108, 113, 120, 3319, 3327, 3345, 101, 109, 101, 110, 116, 59, 32768, 8713, 117, 97, 108, 512, 59, 84, 3335, 3337, 32768, 8800, 105, 108, 100, 101, 59, 32896, 8770, 824, 105, 115, 116, 115, 59, 32768, 8708, 114, 101, 97, 116, 101, 114, 1792, 59, 69, 70, 71, 76, 83, 84, 3373, 3375, 3382, 3394, 3404, 3410, 3423, 32768, 8815, 113, 117, 97, 108, 59, 32768, 8817, 117, 108, 108, 69, 113, 117, 97, 108, 59, 32896, 8807, 824, 114, 101, 97, 116, 101, 114, 59, 32896, 8811, 824, 101, 115, 115, 59, 32768, 8825, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 32896, 10878, 824, 105, 108, 100, 101, 59, 32768, 8821, 117, 109, 112, 533, 3437, 3448, 111, 119, 110, 72, 117, 109, 112, 59, 32896, 8782, 824, 113, 117, 97, 108, 59, 32896, 8783, 824, 101, 512, 102, 115, 3461, 3492, 116, 84, 114, 105, 97, 110, 103, 108, 101, 768, 59, 66, 69, 3477, 3479, 3485, 32768, 8938, 97, 114, 59, 32896, 10703, 824, 113, 117, 97, 108, 59, 32768, 8940, 115, 1536, 59, 69, 71, 76, 83, 84, 3506, 3508, 3515, 3524, 3531, 3544, 32768, 8814, 113, 117, 97, 108, 59, 32768, 8816, 114, 101, 97, 116, 101, 114, 59, 32768, 8824, 101, 115, 115, 59, 32896, 8810, 824, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 32896, 10877, 824, 105, 108, 100, 101, 59, 32768, 8820, 101, 115, 116, 101, 100, 512, 71, 76, 3561, 3578, 114, 101, 97, 116, 101, 114, 71, 114, 101, 97, 116, 101, 114, 59, 32896, 10914, 824, 101, 115, 115, 76, 101, 115, 115, 59, 32896, 10913, 824, 114, 101, 99, 101, 100, 101, 115, 768, 59, 69, 83, 3603, 3605, 3613, 32768, 8832, 113, 117, 97, 108, 59, 32896, 10927, 824, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 32768, 8928, 512, 101, 105, 3630, 3645, 118, 101, 114, 115, 101, 69, 108, 101, 109, 101, 110, 116, 59, 32768, 8716, 103, 104, 116, 84, 114, 105, 97, 110, 103, 108, 101, 768, 59, 66, 69, 3663, 3665, 3671, 32768, 8939, 97, 114, 59, 32896, 10704, 824, 113, 117, 97, 108, 59, 32768, 8941, 512, 113, 117, 3683, 3732, 117, 97, 114, 101, 83, 117, 512, 98, 112, 3694, 3712, 115, 101, 116, 512, 59, 69, 3702, 3705, 32896, 8847, 824, 113, 117, 97, 108, 59, 32768, 8930, 101, 114, 115, 101, 116, 512, 59, 69, 3722, 3725, 32896, 8848, 824, 113, 117, 97, 108, 59, 32768, 8931, 768, 98, 99, 112, 3739, 3757, 3801, 115, 101, 116, 512, 59, 69, 3747, 3750, 32896, 8834, 8402, 113, 117, 97, 108, 59, 32768, 8840, 99, 101, 101, 100, 115, 1024, 59, 69, 83, 84, 3771, 3773, 3781, 3793, 32768, 8833, 113, 117, 97, 108, 59, 32896, 10928, 824, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 32768, 8929, 105, 108, 100, 101, 59, 32896, 8831, 824, 101, 114, 115, 101, 116, 512, 59, 69, 3811, 3814, 32896, 8835, 8402, 113, 117, 97, 108, 59, 32768, 8841, 105, 108, 100, 101, 1024, 59, 69, 70, 84, 3834, 3836, 3843, 3854, 32768, 8769, 113, 117, 97, 108, 59, 32768, 8772, 117, 108, 108, 69, 113, 117, 97, 108, 59, 32768, 8775, 105, 108, 100, 101, 59, 32768, 8777, 101, 114, 116, 105, 99, 97, 108, 66, 97, 114, 59, 32768, 8740, 99, 114, 59, 32896, 55349, 56489, 105, 108, 100, 101, 33024, 209, 59, 32768, 209, 59, 32768, 925, 3584, 69, 97, 99, 100, 102, 103, 109, 111, 112, 114, 115, 116, 117, 118, 3921, 3927, 3936, 3951, 3958, 3963, 3972, 3996, 4002, 4034, 4037, 4055, 4071, 4078, 108, 105, 103, 59, 32768, 338, 99, 117, 116, 101, 33024, 211, 59, 32768, 211, 512, 105, 121, 3941, 3948, 114, 99, 33024, 212, 59, 32768, 212, 59, 32768, 1054, 98, 108, 97, 99, 59, 32768, 336, 114, 59, 32896, 55349, 56594, 114, 97, 118, 101, 33024, 210, 59, 32768, 210, 768, 97, 101, 105, 3979, 3984, 3989, 99, 114, 59, 32768, 332, 103, 97, 59, 32768, 937, 99, 114, 111, 110, 59, 32768, 927, 112, 102, 59, 32896, 55349, 56646, 101, 110, 67, 117, 114, 108, 121, 512, 68, 81, 4014, 4027, 111, 117, 98, 108, 101, 81, 117, 111, 116, 101, 59, 32768, 8220, 117, 111, 116, 101, 59, 32768, 8216, 59, 32768, 10836, 512, 99, 108, 4042, 4047, 114, 59, 32896, 55349, 56490, 97, 115, 104, 33024, 216, 59, 32768, 216, 105, 573, 4060, 4067, 100, 101, 33024, 213, 59, 32768, 213, 101, 115, 59, 32768, 10807, 109, 108, 33024, 214, 59, 32768, 214, 101, 114, 512, 66, 80, 4085, 4109, 512, 97, 114, 4090, 4094, 114, 59, 32768, 8254, 97, 99, 512, 101, 107, 4101, 4104, 59, 32768, 9182, 101, 116, 59, 32768, 9140, 97, 114, 101, 110, 116, 104, 101, 115, 105, 115, 59, 32768, 9180, 2304, 97, 99, 102, 104, 105, 108, 111, 114, 115, 4141, 4150, 4154, 4159, 4163, 4166, 4176, 4198, 4284, 114, 116, 105, 97, 108, 68, 59, 32768, 8706, 121, 59, 32768, 1055, 114, 59, 32896, 55349, 56595, 105, 59, 32768, 934, 59, 32768, 928, 117, 115, 77, 105, 110, 117, 115, 59, 32768, 177, 512, 105, 112, 4181, 4194, 110, 99, 97, 114, 101, 112, 108, 97, 110, 101, 59, 32768, 8460, 102, 59, 32768, 8473, 1024, 59, 101, 105, 111, 4207, 4209, 4251, 4256, 32768, 10939, 99, 101, 100, 101, 115, 1024, 59, 69, 83, 84, 4223, 4225, 4232, 4244, 32768, 8826, 113, 117, 97, 108, 59, 32768, 10927, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 32768, 8828, 105, 108, 100, 101, 59, 32768, 8830, 109, 101, 59, 32768, 8243, 512, 100, 112, 4261, 4267, 117, 99, 116, 59, 32768, 8719, 111, 114, 116, 105, 111, 110, 512, 59, 97, 4278, 4280, 32768, 8759, 108, 59, 32768, 8733, 512, 99, 105, 4289, 4294, 114, 59, 32896, 55349, 56491, 59, 32768, 936, 1024, 85, 102, 111, 115, 4306, 4313, 4318, 4323, 79, 84, 33024, 34, 59, 32768, 34, 114, 59, 32896, 55349, 56596, 112, 102, 59, 32768, 8474, 99, 114, 59, 32896, 55349, 56492, 3072, 66, 69, 97, 99, 101, 102, 104, 105, 111, 114, 115, 117, 4354, 4360, 4366, 4395, 4417, 4473, 4477, 4481, 4743, 4764, 4776, 4788, 97, 114, 114, 59, 32768, 10512, 71, 33024, 174, 59, 32768, 174, 768, 99, 110, 114, 4373, 4379, 4383, 117, 116, 101, 59, 32768, 340, 103, 59, 32768, 10219, 114, 512, 59, 116, 4389, 4391, 32768, 8608, 108, 59, 32768, 10518, 768, 97, 101, 121, 4402, 4408, 4414, 114, 111, 110, 59, 32768, 344, 100, 105, 108, 59, 32768, 342, 59, 32768, 1056, 512, 59, 118, 4422, 4424, 32768, 8476, 101, 114, 115, 101, 512, 69, 85, 4433, 4458, 512, 108, 113, 4438, 4446, 101, 109, 101, 110, 116, 59, 32768, 8715, 117, 105, 108, 105, 98, 114, 105, 117, 109, 59, 32768, 8651, 112, 69, 113, 117, 105, 108, 105, 98, 114, 105, 117, 109, 59, 32768, 10607, 114, 59, 32768, 8476, 111, 59, 32768, 929, 103, 104, 116, 2048, 65, 67, 68, 70, 84, 85, 86, 97, 4501, 4547, 4556, 4607, 4614, 4671, 4719, 4736, 512, 110, 114, 4506, 4519, 103, 108, 101, 66, 114, 97, 99, 107, 101, 116, 59, 32768, 10217, 114, 111, 119, 768, 59, 66, 76, 4529, 4531, 4536, 32768, 8594, 97, 114, 59, 32768, 8677, 101, 102, 116, 65, 114, 114, 111, 119, 59, 32768, 8644, 101, 105, 108, 105, 110, 103, 59, 32768, 8969, 111, 838, 4562, 0, 4575, 98, 108, 101, 66, 114, 97, 99, 107, 101, 116, 59, 32768, 10215, 110, 805, 4580, 0, 4591, 101, 101, 86, 101, 99, 116, 111, 114, 59, 32768, 10589, 101, 99, 116, 111, 114, 512, 59, 66, 4600, 4602, 32768, 8642, 97, 114, 59, 32768, 10581, 108, 111, 111, 114, 59, 32768, 8971, 512, 101, 114, 4619, 4644, 101, 768, 59, 65, 86, 4627, 4629, 4636, 32768, 8866, 114, 114, 111, 119, 59, 32768, 8614, 101, 99, 116, 111, 114, 59, 32768, 10587, 105, 97, 110, 103, 108, 101, 768, 59, 66, 69, 4657, 4659, 4664, 32768, 8883, 97, 114, 59, 32768, 10704, 113, 117, 97, 108, 59, 32768, 8885, 112, 768, 68, 84, 86, 4679, 4691, 4702, 111, 119, 110, 86, 101, 99, 116, 111, 114, 59, 32768, 10575, 101, 101, 86, 101, 99, 116, 111, 114, 59, 32768, 10588, 101, 99, 116, 111, 114, 512, 59, 66, 4712, 4714, 32768, 8638, 97, 114, 59, 32768, 10580, 101, 99, 116, 111, 114, 512, 59, 66, 4729, 4731, 32768, 8640, 97, 114, 59, 32768, 10579, 114, 114, 111, 119, 59, 32768, 8658, 512, 112, 117, 4748, 4752, 102, 59, 32768, 8477, 110, 100, 73, 109, 112, 108, 105, 101, 115, 59, 32768, 10608, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 32768, 8667, 512, 99, 104, 4781, 4785, 114, 59, 32768, 8475, 59, 32768, 8625, 108, 101, 68, 101, 108, 97, 121, 101, 100, 59, 32768, 10740, 3328, 72, 79, 97, 99, 102, 104, 105, 109, 111, 113, 115, 116, 117, 4827, 4842, 4849, 4856, 4889, 4894, 4949, 4955, 4967, 4973, 5059, 5065, 5070, 512, 67, 99, 4832, 4838, 72, 99, 121, 59, 32768, 1065, 121, 59, 32768, 1064, 70, 84, 99, 121, 59, 32768, 1068, 99, 117, 116, 101, 59, 32768, 346, 1280, 59, 97, 101, 105, 121, 4867, 4869, 4875, 4881, 4886, 32768, 10940, 114, 111, 110, 59, 32768, 352, 100, 105, 108, 59, 32768, 350, 114, 99, 59, 32768, 348, 59, 32768, 1057, 114, 59, 32896, 55349, 56598, 111, 114, 116, 1024, 68, 76, 82, 85, 4906, 4917, 4928, 4940, 111, 119, 110, 65, 114, 114, 111, 119, 59, 32768, 8595, 101, 102, 116, 65, 114, 114, 111, 119, 59, 32768, 8592, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 32768, 8594, 112, 65, 114, 114, 111, 119, 59, 32768, 8593, 103, 109, 97, 59, 32768, 931, 97, 108, 108, 67, 105, 114, 99, 108, 101, 59, 32768, 8728, 112, 102, 59, 32896, 55349, 56650, 1091, 4979, 0, 0, 4983, 116, 59, 32768, 8730, 97, 114, 101, 1024, 59, 73, 83, 85, 4994, 4996, 5010, 5052, 32768, 9633, 110, 116, 101, 114, 115, 101, 99, 116, 105, 111, 110, 59, 32768, 8851, 117, 512, 98, 112, 5016, 5033, 115, 101, 116, 512, 59, 69, 5024, 5026, 32768, 8847, 113, 117, 97, 108, 59, 32768, 8849, 101, 114, 115, 101, 116, 512, 59, 69, 5043, 5045, 32768, 8848, 113, 117, 97, 108, 59, 32768, 8850, 110, 105, 111, 110, 59, 32768, 8852, 99, 114, 59, 32896, 55349, 56494, 97, 114, 59, 32768, 8902, 1024, 98, 99, 109, 112, 5079, 5102, 5155, 5158, 512, 59, 115, 5084, 5086, 32768, 8912, 101, 116, 512, 59, 69, 5093, 5095, 32768, 8912, 113, 117, 97, 108, 59, 32768, 8838, 512, 99, 104, 5107, 5148, 101, 101, 100, 115, 1024, 59, 69, 83, 84, 5120, 5122, 5129, 5141, 32768, 8827, 113, 117, 97, 108, 59, 32768, 10928, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 32768, 8829, 105, 108, 100, 101, 59, 32768, 8831, 84, 104, 97, 116, 59, 32768, 8715, 59, 32768, 8721, 768, 59, 101, 115, 5165, 5167, 5185, 32768, 8913, 114, 115, 101, 116, 512, 59, 69, 5176, 5178, 32768, 8835, 113, 117, 97, 108, 59, 32768, 8839, 101, 116, 59, 32768, 8913, 2816, 72, 82, 83, 97, 99, 102, 104, 105, 111, 114, 115, 5213, 5221, 5227, 5241, 5252, 5274, 5279, 5323, 5362, 5368, 5378, 79, 82, 78, 33024, 222, 59, 32768, 222, 65, 68, 69, 59, 32768, 8482, 512, 72, 99, 5232, 5237, 99, 121, 59, 32768, 1035, 121, 59, 32768, 1062, 512, 98, 117, 5246, 5249, 59, 32768, 9, 59, 32768, 932, 768, 97, 101, 121, 5259, 5265, 5271, 114, 111, 110, 59, 32768, 356, 100, 105, 108, 59, 32768, 354, 59, 32768, 1058, 114, 59, 32896, 55349, 56599, 512, 101, 105, 5284, 5300, 835, 5289, 0, 5297, 101, 102, 111, 114, 101, 59, 32768, 8756, 97, 59, 32768, 920, 512, 99, 110, 5305, 5315, 107, 83, 112, 97, 99, 101, 59, 32896, 8287, 8202, 83, 112, 97, 99, 101, 59, 32768, 8201, 108, 100, 101, 1024, 59, 69, 70, 84, 5335, 5337, 5344, 5355, 32768, 8764, 113, 117, 97, 108, 59, 32768, 8771, 117, 108, 108, 69, 113, 117, 97, 108, 59, 32768, 8773, 105, 108, 100, 101, 59, 32768, 8776, 112, 102, 59, 32896, 55349, 56651, 105, 112, 108, 101, 68, 111, 116, 59, 32768, 8411, 512, 99, 116, 5383, 5388, 114, 59, 32896, 55349, 56495, 114, 111, 107, 59, 32768, 358, 5426, 5417, 5444, 5458, 5473, 0, 5480, 5485, 0, 0, 0, 0, 0, 5494, 5500, 5564, 5579, 0, 5726, 5732, 5738, 5745, 512, 99, 114, 5421, 5429, 117, 116, 101, 33024, 218, 59, 32768, 218, 114, 512, 59, 111, 5435, 5437, 32768, 8607, 99, 105, 114, 59, 32768, 10569, 114, 820, 5449, 0, 5453, 121, 59, 32768, 1038, 118, 101, 59, 32768, 364, 512, 105, 121, 5462, 5469, 114, 99, 33024, 219, 59, 32768, 219, 59, 32768, 1059, 98, 108, 97, 99, 59, 32768, 368, 114, 59, 32896, 55349, 56600, 114, 97, 118, 101, 33024, 217, 59, 32768, 217, 97, 99, 114, 59, 32768, 362, 512, 100, 105, 5504, 5548, 101, 114, 512, 66, 80, 5511, 5535, 512, 97, 114, 5516, 5520, 114, 59, 32768, 95, 97, 99, 512, 101, 107, 5527, 5530, 59, 32768, 9183, 101, 116, 59, 32768, 9141, 97, 114, 101, 110, 116, 104, 101, 115, 105, 115, 59, 32768, 9181, 111, 110, 512, 59, 80, 5555, 5557, 32768, 8899, 108, 117, 115, 59, 32768, 8846, 512, 103, 112, 5568, 5573, 111, 110, 59, 32768, 370, 102, 59, 32896, 55349, 56652, 2048, 65, 68, 69, 84, 97, 100, 112, 115, 5595, 5624, 5635, 5648, 5664, 5671, 5682, 5712, 114, 114, 111, 119, 768, 59, 66, 68, 5606, 5608, 5613, 32768, 8593, 97, 114, 59, 32768, 10514, 111, 119, 110, 65, 114, 114, 111, 119, 59, 32768, 8645, 111, 119, 110, 65, 114, 114, 111, 119, 59, 32768, 8597, 113, 117, 105, 108, 105, 98, 114, 105, 117, 109, 59, 32768, 10606, 101, 101, 512, 59, 65, 5655, 5657, 32768, 8869, 114, 114, 111, 119, 59, 32768, 8613, 114, 114, 111, 119, 59, 32768, 8657, 111, 119, 110, 97, 114, 114, 111, 119, 59, 32768, 8661, 101, 114, 512, 76, 82, 5689, 5700, 101, 102, 116, 65, 114, 114, 111, 119, 59, 32768, 8598, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 32768, 8599, 105, 512, 59, 108, 5718, 5720, 32768, 978, 111, 110, 59, 32768, 933, 105, 110, 103, 59, 32768, 366, 99, 114, 59, 32896, 55349, 56496, 105, 108, 100, 101, 59, 32768, 360, 109, 108, 33024, 220, 59, 32768, 220, 2304, 68, 98, 99, 100, 101, 102, 111, 115, 118, 5770, 5776, 5781, 5785, 5798, 5878, 5883, 5889, 5895, 97, 115, 104, 59, 32768, 8875, 97, 114, 59, 32768, 10987, 121, 59, 32768, 1042, 97, 115, 104, 512, 59, 108, 5793, 5795, 32768, 8873, 59, 32768, 10982, 512, 101, 114, 5803, 5806, 59, 32768, 8897, 768, 98, 116, 121, 5813, 5818, 5866, 97, 114, 59, 32768, 8214, 512, 59, 105, 5823, 5825, 32768, 8214, 99, 97, 108, 1024, 66, 76, 83, 84, 5837, 5842, 5848, 5859, 97, 114, 59, 32768, 8739, 105, 110, 101, 59, 32768, 124, 101, 112, 97, 114, 97, 116, 111, 114, 59, 32768, 10072, 105, 108, 100, 101, 59, 32768, 8768, 84, 104, 105, 110, 83, 112, 97, 99, 101, 59, 32768, 8202, 114, 59, 32896, 55349, 56601, 112, 102, 59, 32896, 55349, 56653, 99, 114, 59, 32896, 55349, 56497, 100, 97, 115, 104, 59, 32768, 8874, 1280, 99, 101, 102, 111, 115, 5913, 5919, 5925, 5930, 5936, 105, 114, 99, 59, 32768, 372, 100, 103, 101, 59, 32768, 8896, 114, 59, 32896, 55349, 56602, 112, 102, 59, 32896, 55349, 56654, 99, 114, 59, 32896, 55349, 56498, 1024, 102, 105, 111, 115, 5951, 5956, 5959, 5965, 114, 59, 32896, 55349, 56603, 59, 32768, 926, 112, 102, 59, 32896, 55349, 56655, 99, 114, 59, 32896, 55349, 56499, 2304, 65, 73, 85, 97, 99, 102, 111, 115, 117, 5990, 5995, 6000, 6005, 6014, 6027, 6032, 6038, 6044, 99, 121, 59, 32768, 1071, 99, 121, 59, 32768, 1031, 99, 121, 59, 32768, 1070, 99, 117, 116, 101, 33024, 221, 59, 32768, 221, 512, 105, 121, 6019, 6024, 114, 99, 59, 32768, 374, 59, 32768, 1067, 114, 59, 32896, 55349, 56604, 112, 102, 59, 32896, 55349, 56656, 99, 114, 59, 32896, 55349, 56500, 109, 108, 59, 32768, 376, 2048, 72, 97, 99, 100, 101, 102, 111, 115, 6066, 6071, 6078, 6092, 6097, 6119, 6123, 6128, 99, 121, 59, 32768, 1046, 99, 117, 116, 101, 59, 32768, 377, 512, 97, 121, 6083, 6089, 114, 111, 110, 59, 32768, 381, 59, 32768, 1047, 111, 116, 59, 32768, 379, 835, 6102, 0, 6116, 111, 87, 105, 100, 116, 104, 83, 112, 97, 99, 101, 59, 32768, 8203, 97, 59, 32768, 918, 114, 59, 32768, 8488, 112, 102, 59, 32768, 8484, 99, 114, 59, 32896, 55349, 56501, 5938, 6159, 6168, 6175, 0, 6214, 6222, 6233, 0, 0, 0, 0, 6242, 6267, 6290, 6429, 6444, 0, 6495, 6503, 6531, 6540, 0, 6547, 99, 117, 116, 101, 33024, 225, 59, 32768, 225, 114, 101, 118, 101, 59, 32768, 259, 1536, 59, 69, 100, 105, 117, 121, 6187, 6189, 6193, 6196, 6203, 6210, 32768, 8766, 59, 32896, 8766, 819, 59, 32768, 8767, 114, 99, 33024, 226, 59, 32768, 226, 116, 101, 33024, 180, 59, 32768, 180, 59, 32768, 1072, 108, 105, 103, 33024, 230, 59, 32768, 230, 512, 59, 114, 6226, 6228, 32768, 8289, 59, 32896, 55349, 56606, 114, 97, 118, 101, 33024, 224, 59, 32768, 224, 512, 101, 112, 6246, 6261, 512, 102, 112, 6251, 6257, 115, 121, 109, 59, 32768, 8501, 104, 59, 32768, 8501, 104, 97, 59, 32768, 945, 512, 97, 112, 6271, 6284, 512, 99, 108, 6276, 6280, 114, 59, 32768, 257, 103, 59, 32768, 10815, 33024, 38, 59, 32768, 38, 1077, 6295, 0, 0, 6326, 1280, 59, 97, 100, 115, 118, 6305, 6307, 6312, 6315, 6322, 32768, 8743, 110, 100, 59, 32768, 10837, 59, 32768, 10844, 108, 111, 112, 101, 59, 32768, 10840, 59, 32768, 10842, 1792, 59, 101, 108, 109, 114, 115, 122, 6340, 6342, 6345, 6349, 6391, 6410, 6422, 32768, 8736, 59, 32768, 10660, 101, 59, 32768, 8736, 115, 100, 512, 59, 97, 6356, 6358, 32768, 8737, 2098, 6368, 6371, 6374, 6377, 6380, 6383, 6386, 6389, 59, 32768, 10664, 59, 32768, 10665, 59, 32768, 10666, 59, 32768, 10667, 59, 32768, 10668, 59, 32768, 10669, 59, 32768, 10670, 59, 32768, 10671, 116, 512, 59, 118, 6397, 6399, 32768, 8735, 98, 512, 59, 100, 6405, 6407, 32768, 8894, 59, 32768, 10653, 512, 112, 116, 6415, 6419, 104, 59, 32768, 8738, 59, 32768, 197, 97, 114, 114, 59, 32768, 9084, 512, 103, 112, 6433, 6438, 111, 110, 59, 32768, 261, 102, 59, 32896, 55349, 56658, 1792, 59, 69, 97, 101, 105, 111, 112, 6458, 6460, 6463, 6469, 6472, 6476, 6480, 32768, 8776, 59, 32768, 10864, 99, 105, 114, 59, 32768, 10863, 59, 32768, 8778, 100, 59, 32768, 8779, 115, 59, 32768, 39, 114, 111, 120, 512, 59, 101, 6488, 6490, 32768, 8776, 113, 59, 32768, 8778, 105, 110, 103, 33024, 229, 59, 32768, 229, 768, 99, 116, 121, 6509, 6514, 6517, 114, 59, 32896, 55349, 56502, 59, 32768, 42, 109, 112, 512, 59, 101, 6524, 6526, 32768, 8776, 113, 59, 32768, 8781, 105, 108, 100, 101, 33024, 227, 59, 32768, 227, 109, 108, 33024, 228, 59, 32768, 228, 512, 99, 105, 6551, 6559, 111, 110, 105, 110, 116, 59, 32768, 8755, 110, 116, 59, 32768, 10769, 4096, 78, 97, 98, 99, 100, 101, 102, 105, 107, 108, 110, 111, 112, 114, 115, 117, 6597, 6602, 6673, 6688, 6701, 6707, 6768, 6773, 6891, 6898, 6999, 7023, 7309, 7316, 7334, 7383, 111, 116, 59, 32768, 10989, 512, 99, 114, 6607, 6652, 107, 1024, 99, 101, 112, 115, 6617, 6623, 6632, 6639, 111, 110, 103, 59, 32768, 8780, 112, 115, 105, 108, 111, 110, 59, 32768, 1014, 114, 105, 109, 101, 59, 32768, 8245, 105, 109, 512, 59, 101, 6646, 6648, 32768, 8765, 113, 59, 32768, 8909, 583, 6656, 6661, 101, 101, 59, 32768, 8893, 101, 100, 512, 59, 103, 6667, 6669, 32768, 8965, 101, 59, 32768, 8965, 114, 107, 512, 59, 116, 6680, 6682, 32768, 9141, 98, 114, 107, 59, 32768, 9142, 512, 111, 121, 6693, 6698, 110, 103, 59, 32768, 8780, 59, 32768, 1073, 113, 117, 111, 59, 32768, 8222, 1280, 99, 109, 112, 114, 116, 6718, 6731, 6738, 6743, 6749, 97, 117, 115, 512, 59, 101, 6726, 6728, 32768, 8757, 59, 32768, 8757, 112, 116, 121, 118, 59, 32768, 10672, 115, 105, 59, 32768, 1014, 110, 111, 117, 59, 32768, 8492, 768, 97, 104, 119, 6756, 6759, 6762, 59, 32768, 946, 59, 32768, 8502, 101, 101, 110, 59, 32768, 8812, 114, 59, 32896, 55349, 56607, 103, 1792, 99, 111, 115, 116, 117, 118, 119, 6789, 6809, 6834, 6850, 6872, 6879, 6884, 768, 97, 105, 117, 6796, 6800, 6805, 112, 59, 32768, 8898, 114, 99, 59, 32768, 9711, 112, 59, 32768, 8899, 768, 100, 112, 116, 6816, 6821, 6827, 111, 116, 59, 32768, 10752, 108, 117, 115, 59, 32768, 10753, 105, 109, 101, 115, 59, 32768, 10754, 1090, 6840, 0, 0, 6846, 99, 117, 112, 59, 32768, 10758, 97, 114, 59, 32768, 9733, 114, 105, 97, 110, 103, 108, 101, 512, 100, 117, 6862, 6868, 111, 119, 110, 59, 32768, 9661, 112, 59, 32768, 9651, 112, 108, 117, 115, 59, 32768, 10756, 101, 101, 59, 32768, 8897, 101, 100, 103, 101, 59, 32768, 8896, 97, 114, 111, 119, 59, 32768, 10509, 768, 97, 107, 111, 6905, 6976, 6994, 512, 99, 110, 6910, 6972, 107, 768, 108, 115, 116, 6918, 6927, 6935, 111, 122, 101, 110, 103, 101, 59, 32768, 10731, 113, 117, 97, 114, 101, 59, 32768, 9642, 114, 105, 97, 110, 103, 108, 101, 1024, 59, 100, 108, 114, 6951, 6953, 6959, 6965, 32768, 9652, 111, 119, 110, 59, 32768, 9662, 101, 102, 116, 59, 32768, 9666, 105, 103, 104, 116, 59, 32768, 9656, 107, 59, 32768, 9251, 770, 6981, 0, 6991, 771, 6985, 0, 6988, 59, 32768, 9618, 59, 32768, 9617, 52, 59, 32768, 9619, 99, 107, 59, 32768, 9608, 512, 101, 111, 7004, 7019, 512, 59, 113, 7009, 7012, 32896, 61, 8421, 117, 105, 118, 59, 32896, 8801, 8421, 116, 59, 32768, 8976, 1024, 112, 116, 119, 120, 7032, 7037, 7049, 7055, 102, 59, 32896, 55349, 56659, 512, 59, 116, 7042, 7044, 32768, 8869, 111, 109, 59, 32768, 8869, 116, 105, 101, 59, 32768, 8904, 3072, 68, 72, 85, 86, 98, 100, 104, 109, 112, 116, 117, 118, 7080, 7101, 7126, 7147, 7182, 7187, 7208, 7233, 7240, 7246, 7253, 7274, 1024, 76, 82, 108, 114, 7089, 7092, 7095, 7098, 59, 32768, 9559, 59, 32768, 9556, 59, 32768, 9558, 59, 32768, 9555, 1280, 59, 68, 85, 100, 117, 7112, 7114, 7117, 7120, 7123, 32768, 9552, 59, 32768, 9574, 59, 32768, 9577, 59, 32768, 9572, 59, 32768, 9575, 1024, 76, 82, 108, 114, 7135, 7138, 7141, 7144, 59, 32768, 9565, 59, 32768, 9562, 59, 32768, 9564, 59, 32768, 9561, 1792, 59, 72, 76, 82, 104, 108, 114, 7162, 7164, 7167, 7170, 7173, 7176, 7179, 32768, 9553, 59, 32768, 9580, 59, 32768, 9571, 59, 32768, 9568, 59, 32768, 9579, 59, 32768, 9570, 59, 32768, 9567, 111, 120, 59, 32768, 10697, 1024, 76, 82, 108, 114, 7196, 7199, 7202, 7205, 59, 32768, 9557, 59, 32768, 9554, 59, 32768, 9488, 59, 32768, 9484, 1280, 59, 68, 85, 100, 117, 7219, 7221, 7224, 7227, 7230, 32768, 9472, 59, 32768, 9573, 59, 32768, 9576, 59, 32768, 9516, 59, 32768, 9524, 105, 110, 117, 115, 59, 32768, 8863, 108, 117, 115, 59, 32768, 8862, 105, 109, 101, 115, 59, 32768, 8864, 1024, 76, 82, 108, 114, 7262, 7265, 7268, 7271, 59, 32768, 9563, 59, 32768, 9560, 59, 32768, 9496, 59, 32768, 9492, 1792, 59, 72, 76, 82, 104, 108, 114, 7289, 7291, 7294, 7297, 7300, 7303, 7306, 32768, 9474, 59, 32768, 9578, 59, 32768, 9569, 59, 32768, 9566, 59, 32768, 9532, 59, 32768, 9508, 59, 32768, 9500, 114, 105, 109, 101, 59, 32768, 8245, 512, 101, 118, 7321, 7326, 118, 101, 59, 32768, 728, 98, 97, 114, 33024, 166, 59, 32768, 166, 1024, 99, 101, 105, 111, 7343, 7348, 7353, 7364, 114, 59, 32896, 55349, 56503, 109, 105, 59, 32768, 8271, 109, 512, 59, 101, 7359, 7361, 32768, 8765, 59, 32768, 8909, 108, 768, 59, 98, 104, 7372, 7374, 7377, 32768, 92, 59, 32768, 10693, 115, 117, 98, 59, 32768, 10184, 573, 7387, 7399, 108, 512, 59, 101, 7392, 7394, 32768, 8226, 116, 59, 32768, 8226, 112, 768, 59, 69, 101, 7406, 7408, 7411, 32768, 8782, 59, 32768, 10926, 512, 59, 113, 7416, 7418, 32768, 8783, 59, 32768, 8783, 6450, 7448, 0, 7523, 7571, 7576, 7613, 0, 7618, 7647, 0, 0, 7764, 0, 0, 7779, 0, 0, 7899, 7914, 7949, 7955, 0, 8158, 0, 8176, 768, 99, 112, 114, 7454, 7460, 7509, 117, 116, 101, 59, 32768, 263, 1536, 59, 97, 98, 99, 100, 115, 7473, 7475, 7480, 7487, 7500, 7505, 32768, 8745, 110, 100, 59, 32768, 10820, 114, 99, 117, 112, 59, 32768, 10825, 512, 97, 117, 7492, 7496, 112, 59, 32768, 10827, 112, 59, 32768, 10823, 111, 116, 59, 32768, 10816, 59, 32896, 8745, 65024, 512, 101, 111, 7514, 7518, 116, 59, 32768, 8257, 110, 59, 32768, 711, 1024, 97, 101, 105, 117, 7531, 7544, 7552, 7557, 833, 7536, 0, 7540, 115, 59, 32768, 10829, 111, 110, 59, 32768, 269, 100, 105, 108, 33024, 231, 59, 32768, 231, 114, 99, 59, 32768, 265, 112, 115, 512, 59, 115, 7564, 7566, 32768, 10828, 109, 59, 32768, 10832, 111, 116, 59, 32768, 267, 768, 100, 109, 110, 7582, 7589, 7596, 105, 108, 33024, 184, 59, 32768, 184, 112, 116, 121, 118, 59, 32768, 10674, 116, 33280, 162, 59, 101, 7603, 7605, 32768, 162, 114, 100, 111, 116, 59, 32768, 183, 114, 59, 32896, 55349, 56608, 768, 99, 101, 105, 7624, 7628, 7643, 121, 59, 32768, 1095, 99, 107, 512, 59, 109, 7635, 7637, 32768, 10003, 97, 114, 107, 59, 32768, 10003, 59, 32768, 967, 114, 1792, 59, 69, 99, 101, 102, 109, 115, 7662, 7664, 7667, 7742, 7745, 7752, 7757, 32768, 9675, 59, 32768, 10691, 768, 59, 101, 108, 7674, 7676, 7680, 32768, 710, 113, 59, 32768, 8791, 101, 1074, 7687, 0, 0, 7709, 114, 114, 111, 119, 512, 108, 114, 7695, 7701, 101, 102, 116, 59, 32768, 8634, 105, 103, 104, 116, 59, 32768, 8635, 1280, 82, 83, 97, 99, 100, 7719, 7722, 7725, 7730, 7736, 59, 32768, 174, 59, 32768, 9416, 115, 116, 59, 32768, 8859, 105, 114, 99, 59, 32768, 8858, 97, 115, 104, 59, 32768, 8861, 59, 32768, 8791, 110, 105, 110, 116, 59, 32768, 10768, 105, 100, 59, 32768, 10991, 99, 105, 114, 59, 32768, 10690, 117, 98, 115, 512, 59, 117, 7771, 7773, 32768, 9827, 105, 116, 59, 32768, 9827, 1341, 7785, 7804, 7850, 0, 7871, 111, 110, 512, 59, 101, 7791, 7793, 32768, 58, 512, 59, 113, 7798, 7800, 32768, 8788, 59, 32768, 8788, 1086, 7809, 0, 0, 7820, 97, 512, 59, 116, 7814, 7816, 32768, 44, 59, 32768, 64, 768, 59, 102, 108, 7826, 7828, 7832, 32768, 8705, 110, 59, 32768, 8728, 101, 512, 109, 120, 7838, 7844, 101, 110, 116, 59, 32768, 8705, 101, 115, 59, 32768, 8450, 824, 7854, 0, 7866, 512, 59, 100, 7858, 7860, 32768, 8773, 111, 116, 59, 32768, 10861, 110, 116, 59, 32768, 8750, 768, 102, 114, 121, 7877, 7881, 7886, 59, 32896, 55349, 56660, 111, 100, 59, 32768, 8720, 33280, 169, 59, 115, 7892, 7894, 32768, 169, 114, 59, 32768, 8471, 512, 97, 111, 7903, 7908, 114, 114, 59, 32768, 8629, 115, 115, 59, 32768, 10007, 512, 99, 117, 7918, 7923, 114, 59, 32896, 55349, 56504, 512, 98, 112, 7928, 7938, 512, 59, 101, 7933, 7935, 32768, 10959, 59, 32768, 10961, 512, 59, 101, 7943, 7945, 32768, 10960, 59, 32768, 10962, 100, 111, 116, 59, 32768, 8943, 1792, 100, 101, 108, 112, 114, 118, 119, 7969, 7983, 7996, 8009, 8057, 8147, 8152, 97, 114, 114, 512, 108, 114, 7977, 7980, 59, 32768, 10552, 59, 32768, 10549, 1089, 7989, 0, 0, 7993, 114, 59, 32768, 8926, 99, 59, 32768, 8927, 97, 114, 114, 512, 59, 112, 8004, 8006, 32768, 8630, 59, 32768, 10557, 1536, 59, 98, 99, 100, 111, 115, 8022, 8024, 8031, 8044, 8049, 8053, 32768, 8746, 114, 99, 97, 112, 59, 32768, 10824, 512, 97, 117, 8036, 8040, 112, 59, 32768, 10822, 112, 59, 32768, 10826, 111, 116, 59, 32768, 8845, 114, 59, 32768, 10821, 59, 32896, 8746, 65024, 1024, 97, 108, 114, 118, 8066, 8078, 8116, 8123, 114, 114, 512, 59, 109, 8073, 8075, 32768, 8631, 59, 32768, 10556, 121, 768, 101, 118, 119, 8086, 8104, 8109, 113, 1089, 8093, 0, 0, 8099, 114, 101, 99, 59, 32768, 8926, 117, 99, 99, 59, 32768, 8927, 101, 101, 59, 32768, 8910, 101, 100, 103, 101, 59, 32768, 8911, 101, 110, 33024, 164, 59, 32768, 164, 101, 97, 114, 114, 111, 119, 512, 108, 114, 8134, 8140, 101, 102, 116, 59, 32768, 8630, 105, 103, 104, 116, 59, 32768, 8631, 101, 101, 59, 32768, 8910, 101, 100, 59, 32768, 8911, 512, 99, 105, 8162, 8170, 111, 110, 105, 110, 116, 59, 32768, 8754, 110, 116, 59, 32768, 8753, 108, 99, 116, 121, 59, 32768, 9005, 4864, 65, 72, 97, 98, 99, 100, 101, 102, 104, 105, 106, 108, 111, 114, 115, 116, 117, 119, 122, 8221, 8226, 8231, 8267, 8282, 8296, 8327, 8351, 8366, 8379, 8466, 8471, 8487, 8621, 8647, 8676, 8697, 8712, 8720, 114, 114, 59, 32768, 8659, 97, 114, 59, 32768, 10597, 1024, 103, 108, 114, 115, 8240, 8246, 8252, 8256, 103, 101, 114, 59, 32768, 8224, 101, 116, 104, 59, 32768, 8504, 114, 59, 32768, 8595, 104, 512, 59, 118, 8262, 8264, 32768, 8208, 59, 32768, 8867, 572, 8271, 8278, 97, 114, 111, 119, 59, 32768, 10511, 97, 99, 59, 32768, 733, 512, 97, 121, 8287, 8293, 114, 111, 110, 59, 32768, 271, 59, 32768, 1076, 768, 59, 97, 111, 8303, 8305, 8320, 32768, 8518, 512, 103, 114, 8310, 8316, 103, 101, 114, 59, 32768, 8225, 114, 59, 32768, 8650, 116, 115, 101, 113, 59, 32768, 10871, 768, 103, 108, 109, 8334, 8339, 8344, 33024, 176, 59, 32768, 176, 116, 97, 59, 32768, 948, 112, 116, 121, 118, 59, 32768, 10673, 512, 105, 114, 8356, 8362, 115, 104, 116, 59, 32768, 10623, 59, 32896, 55349, 56609, 97, 114, 512, 108, 114, 8373, 8376, 59, 32768, 8643, 59, 32768, 8642, 1280, 97, 101, 103, 115, 118, 8390, 8418, 8421, 8428, 8433, 109, 768, 59, 111, 115, 8398, 8400, 8415, 32768, 8900, 110, 100, 512, 59, 115, 8407, 8409, 32768, 8900, 117, 105, 116, 59, 32768, 9830, 59, 32768, 9830, 59, 32768, 168, 97, 109, 109, 97, 59, 32768, 989, 105, 110, 59, 32768, 8946, 768, 59, 105, 111, 8440, 8442, 8461, 32768, 247, 100, 101, 33280, 247, 59, 111, 8450, 8452, 32768, 247, 110, 116, 105, 109, 101, 115, 59, 32768, 8903, 110, 120, 59, 32768, 8903, 99, 121, 59, 32768, 1106, 99, 1088, 8478, 0, 0, 8483, 114, 110, 59, 32768, 8990, 111, 112, 59, 32768, 8973, 1280, 108, 112, 116, 117, 119, 8498, 8504, 8509, 8556, 8570, 108, 97, 114, 59, 32768, 36, 102, 59, 32896, 55349, 56661, 1280, 59, 101, 109, 112, 115, 8520, 8522, 8535, 8542, 8548, 32768, 729, 113, 512, 59, 100, 8528, 8530, 32768, 8784, 111, 116, 59, 32768, 8785, 105, 110, 117, 115, 59, 32768, 8760, 108, 117, 115, 59, 32768, 8724, 113, 117, 97, 114, 101, 59, 32768, 8865, 98, 108, 101, 98, 97, 114, 119, 101, 100, 103, 101, 59, 32768, 8966, 110, 768, 97, 100, 104, 8578, 8585, 8597, 114, 114, 111, 119, 59, 32768, 8595, 111, 119, 110, 97, 114, 114, 111, 119, 115, 59, 32768, 8650, 97, 114, 112, 111, 111, 110, 512, 108, 114, 8608, 8614, 101, 102, 116, 59, 32768, 8643, 105, 103, 104, 116, 59, 32768, 8642, 563, 8625, 8633, 107, 97, 114, 111, 119, 59, 32768, 10512, 1088, 8638, 0, 0, 8643, 114, 110, 59, 32768, 8991, 111, 112, 59, 32768, 8972, 768, 99, 111, 116, 8654, 8666, 8670, 512, 114, 121, 8659, 8663, 59, 32896, 55349, 56505, 59, 32768, 1109, 108, 59, 32768, 10742, 114, 111, 107, 59, 32768, 273, 512, 100, 114, 8681, 8686, 111, 116, 59, 32768, 8945, 105, 512, 59, 102, 8692, 8694, 32768, 9663, 59, 32768, 9662, 512, 97, 104, 8702, 8707, 114, 114, 59, 32768, 8693, 97, 114, 59, 32768, 10607, 97, 110, 103, 108, 101, 59, 32768, 10662, 512, 99, 105, 8725, 8729, 121, 59, 32768, 1119, 103, 114, 97, 114, 114, 59, 32768, 10239, 4608, 68, 97, 99, 100, 101, 102, 103, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 120, 8774, 8788, 8807, 8844, 8849, 8852, 8866, 8895, 8929, 8977, 8989, 9004, 9046, 9136, 9151, 9171, 9184, 9199, 512, 68, 111, 8779, 8784, 111, 116, 59, 32768, 10871, 116, 59, 32768, 8785, 512, 99, 115, 8793, 8801, 117, 116, 101, 33024, 233, 59, 32768, 233, 116, 101, 114, 59, 32768, 10862, 1024, 97, 105, 111, 121, 8816, 8822, 8835, 8841, 114, 111, 110, 59, 32768, 283, 114, 512, 59, 99, 8828, 8830, 32768, 8790, 33024, 234, 59, 32768, 234, 108, 111, 110, 59, 32768, 8789, 59, 32768, 1101, 111, 116, 59, 32768, 279, 59, 32768, 8519, 512, 68, 114, 8857, 8862, 111, 116, 59, 32768, 8786, 59, 32896, 55349, 56610, 768, 59, 114, 115, 8873, 8875, 8883, 32768, 10906, 97, 118, 101, 33024, 232, 59, 32768, 232, 512, 59, 100, 8888, 8890, 32768, 10902, 111, 116, 59, 32768, 10904, 1024, 59, 105, 108, 115, 8904, 8906, 8914, 8917, 32768, 10905, 110, 116, 101, 114, 115, 59, 32768, 9191, 59, 32768, 8467, 512, 59, 100, 8922, 8924, 32768, 10901, 111, 116, 59, 32768, 10903, 768, 97, 112, 115, 8936, 8941, 8960, 99, 114, 59, 32768, 275, 116, 121, 768, 59, 115, 118, 8950, 8952, 8957, 32768, 8709, 101, 116, 59, 32768, 8709, 59, 32768, 8709, 112, 512, 49, 59, 8966, 8975, 516, 8970, 8973, 59, 32768, 8196, 59, 32768, 8197, 32768, 8195, 512, 103, 115, 8982, 8985, 59, 32768, 331, 112, 59, 32768, 8194, 512, 103, 112, 8994, 8999, 111, 110, 59, 32768, 281, 102, 59, 32896, 55349, 56662, 768, 97, 108, 115, 9011, 9023, 9028, 114, 512, 59, 115, 9017, 9019, 32768, 8917, 108, 59, 32768, 10723, 117, 115, 59, 32768, 10865, 105, 768, 59, 108, 118, 9036, 9038, 9043, 32768, 949, 111, 110, 59, 32768, 949, 59, 32768, 1013, 1024, 99, 115, 117, 118, 9055, 9071, 9099, 9128, 512, 105, 111, 9060, 9065, 114, 99, 59, 32768, 8790, 108, 111, 110, 59, 32768, 8789, 1082, 9077, 0, 0, 9081, 109, 59, 32768, 8770, 97, 110, 116, 512, 103, 108, 9088, 9093, 116, 114, 59, 32768, 10902, 101, 115, 115, 59, 32768, 10901, 768, 97, 101, 105, 9106, 9111, 9116, 108, 115, 59, 32768, 61, 115, 116, 59, 32768, 8799, 118, 512, 59, 68, 9122, 9124, 32768, 8801, 68, 59, 32768, 10872, 112, 97, 114, 115, 108, 59, 32768, 10725, 512, 68, 97, 9141, 9146, 111, 116, 59, 32768, 8787, 114, 114, 59, 32768, 10609, 768, 99, 100, 105, 9158, 9162, 9167, 114, 59, 32768, 8495, 111, 116, 59, 32768, 8784, 109, 59, 32768, 8770, 512, 97, 104, 9176, 9179, 59, 32768, 951, 33024, 240, 59, 32768, 240, 512, 109, 114, 9189, 9195, 108, 33024, 235, 59, 32768, 235, 111, 59, 32768, 8364, 768, 99, 105, 112, 9206, 9210, 9215, 108, 59, 32768, 33, 115, 116, 59, 32768, 8707, 512, 101, 111, 9220, 9230, 99, 116, 97, 116, 105, 111, 110, 59, 32768, 8496, 110, 101, 110, 116, 105, 97, 108, 101, 59, 32768, 8519, 4914, 9262, 0, 9276, 0, 9280, 9287, 0, 0, 9318, 9324, 0, 9331, 0, 9352, 9357, 9386, 0, 9395, 9497, 108, 108, 105, 110, 103, 100, 111, 116, 115, 101, 113, 59, 32768, 8786, 121, 59, 32768, 1092, 109, 97, 108, 101, 59, 32768, 9792, 768, 105, 108, 114, 9293, 9299, 9313, 108, 105, 103, 59, 32768, 64259, 1082, 9305, 0, 0, 9309, 103, 59, 32768, 64256, 105, 103, 59, 32768, 64260, 59, 32896, 55349, 56611, 108, 105, 103, 59, 32768, 64257, 108, 105, 103, 59, 32896, 102, 106, 768, 97, 108, 116, 9337, 9341, 9346, 116, 59, 32768, 9837, 105, 103, 59, 32768, 64258, 110, 115, 59, 32768, 9649, 111, 102, 59, 32768, 402, 833, 9361, 0, 9366, 102, 59, 32896, 55349, 56663, 512, 97, 107, 9370, 9375, 108, 108, 59, 32768, 8704, 512, 59, 118, 9380, 9382, 32768, 8916, 59, 32768, 10969, 97, 114, 116, 105, 110, 116, 59, 32768, 10765, 512, 97, 111, 9399, 9491, 512, 99, 115, 9404, 9487, 1794, 9413, 9443, 9453, 9470, 9474, 0, 9484, 1795, 9421, 9426, 9429, 9434, 9437, 0, 9440, 33024, 189, 59, 32768, 189, 59, 32768, 8531, 33024, 188, 59, 32768, 188, 59, 32768, 8533, 59, 32768, 8537, 59, 32768, 8539, 772, 9447, 0, 9450, 59, 32768, 8532, 59, 32768, 8534, 1285, 9459, 9464, 0, 0, 9467, 33024, 190, 59, 32768, 190, 59, 32768, 8535, 59, 32768, 8540, 53, 59, 32768, 8536, 775, 9478, 0, 9481, 59, 32768, 8538, 59, 32768, 8541, 56, 59, 32768, 8542, 108, 59, 32768, 8260, 119, 110, 59, 32768, 8994, 99, 114, 59, 32896, 55349, 56507, 4352, 69, 97, 98, 99, 100, 101, 102, 103, 105, 106, 108, 110, 111, 114, 115, 116, 118, 9537, 9547, 9575, 9582, 9595, 9600, 9679, 9684, 9694, 9700, 9705, 9725, 9773, 9779, 9785, 9810, 9917, 512, 59, 108, 9542, 9544, 32768, 8807, 59, 32768, 10892, 768, 99, 109, 112, 9554, 9560, 9572, 117, 116, 101, 59, 32768, 501, 109, 97, 512, 59, 100, 9567, 9569, 32768, 947, 59, 32768, 989, 59, 32768, 10886, 114, 101, 118, 101, 59, 32768, 287, 512, 105, 121, 9587, 9592, 114, 99, 59, 32768, 285, 59, 32768, 1075, 111, 116, 59, 32768, 289, 1024, 59, 108, 113, 115, 9609, 9611, 9614, 9633, 32768, 8805, 59, 32768, 8923, 768, 59, 113, 115, 9621, 9623, 9626, 32768, 8805, 59, 32768, 8807, 108, 97, 110, 116, 59, 32768, 10878, 1024, 59, 99, 100, 108, 9642, 9644, 9648, 9667, 32768, 10878, 99, 59, 32768, 10921, 111, 116, 512, 59, 111, 9655, 9657, 32768, 10880, 512, 59, 108, 9662, 9664, 32768, 10882, 59, 32768, 10884, 512, 59, 101, 9672, 9675, 32896, 8923, 65024, 115, 59, 32768, 10900, 114, 59, 32896, 55349, 56612, 512, 59, 103, 9689, 9691, 32768, 8811, 59, 32768, 8921, 109, 101, 108, 59, 32768, 8503, 99, 121, 59, 32768, 1107, 1024, 59, 69, 97, 106, 9714, 9716, 9719, 9722, 32768, 8823, 59, 32768, 10898, 59, 32768, 10917, 59, 32768, 10916, 1024, 69, 97, 101, 115, 9734, 9737, 9751, 9768, 59, 32768, 8809, 112, 512, 59, 112, 9743, 9745, 32768, 10890, 114, 111, 120, 59, 32768, 10890, 512, 59, 113, 9756, 9758, 32768, 10888, 512, 59, 113, 9763, 9765, 32768, 10888, 59, 32768, 8809, 105, 109, 59, 32768, 8935, 112, 102, 59, 32896, 55349, 56664, 97, 118, 101, 59, 32768, 96, 512, 99, 105, 9790, 9794, 114, 59, 32768, 8458, 109, 768, 59, 101, 108, 9802, 9804, 9807, 32768, 8819, 59, 32768, 10894, 59, 32768, 10896, 34304, 62, 59, 99, 100, 108, 113, 114, 9824, 9826, 9838, 9843, 9849, 9856, 32768, 62, 512, 99, 105, 9831, 9834, 59, 32768, 10919, 114, 59, 32768, 10874, 111, 116, 59, 32768, 8919, 80, 97, 114, 59, 32768, 10645, 117, 101, 115, 116, 59, 32768, 10876, 1280, 97, 100, 101, 108, 115, 9867, 9882, 9887, 9906, 9912, 833, 9872, 0, 9879, 112, 114, 111, 120, 59, 32768, 10886, 114, 59, 32768, 10616, 111, 116, 59, 32768, 8919, 113, 512, 108, 113, 9893, 9899, 101, 115, 115, 59, 32768, 8923, 108, 101, 115, 115, 59, 32768, 10892, 101, 115, 115, 59, 32768, 8823, 105, 109, 59, 32768, 8819, 512, 101, 110, 9922, 9932, 114, 116, 110, 101, 113, 113, 59, 32896, 8809, 65024, 69, 59, 32896, 8809, 65024, 2560, 65, 97, 98, 99, 101, 102, 107, 111, 115, 121, 9958, 9963, 10015, 10020, 10026, 10060, 10065, 10085, 10147, 10171, 114, 114, 59, 32768, 8660, 1024, 105, 108, 109, 114, 9972, 9978, 9982, 9988, 114, 115, 112, 59, 32768, 8202, 102, 59, 32768, 189, 105, 108, 116, 59, 32768, 8459, 512, 100, 114, 9993, 9998, 99, 121, 59, 32768, 1098, 768, 59, 99, 119, 10005, 10007, 10012, 32768, 8596, 105, 114, 59, 32768, 10568, 59, 32768, 8621, 97, 114, 59, 32768, 8463, 105, 114, 99, 59, 32768, 293, 768, 97, 108, 114, 10033, 10048, 10054, 114, 116, 115, 512, 59, 117, 10041, 10043, 32768, 9829, 105, 116, 59, 32768, 9829, 108, 105, 112, 59, 32768, 8230, 99, 111, 110, 59, 32768, 8889, 114, 59, 32896, 55349, 56613, 115, 512, 101, 119, 10071, 10078, 97, 114, 111, 119, 59, 32768, 10533, 97, 114, 111, 119, 59, 32768, 10534, 1280, 97, 109, 111, 112, 114, 10096, 10101, 10107, 10136, 10141, 114, 114, 59, 32768, 8703, 116, 104, 116, 59, 32768, 8763, 107, 512, 108, 114, 10113, 10124, 101, 102, 116, 97, 114, 114, 111, 119, 59, 32768, 8617, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 32768, 8618, 102, 59, 32896, 55349, 56665, 98, 97, 114, 59, 32768, 8213, 768, 99, 108, 116, 10154, 10159, 10165, 114, 59, 32896, 55349, 56509, 97, 115, 104, 59, 32768, 8463, 114, 111, 107, 59, 32768, 295, 512, 98, 112, 10176, 10182, 117, 108, 108, 59, 32768, 8259, 104, 101, 110, 59, 32768, 8208, 5426, 10211, 0, 10220, 0, 10239, 10255, 10267, 0, 10276, 10312, 0, 0, 10318, 10371, 10458, 10485, 10491, 0, 10500, 10545, 10558, 99, 117, 116, 101, 33024, 237, 59, 32768, 237, 768, 59, 105, 121, 10226, 10228, 10235, 32768, 8291, 114, 99, 33024, 238, 59, 32768, 238, 59, 32768, 1080, 512, 99, 120, 10243, 10247, 121, 59, 32768, 1077, 99, 108, 33024, 161, 59, 32768, 161, 512, 102, 114, 10259, 10262, 59, 32768, 8660, 59, 32896, 55349, 56614, 114, 97, 118, 101, 33024, 236, 59, 32768, 236, 1024, 59, 105, 110, 111, 10284, 10286, 10300, 10306, 32768, 8520, 512, 105, 110, 10291, 10296, 110, 116, 59, 32768, 10764, 116, 59, 32768, 8749, 102, 105, 110, 59, 32768, 10716, 116, 97, 59, 32768, 8489, 108, 105, 103, 59, 32768, 307, 768, 97, 111, 112, 10324, 10361, 10365, 768, 99, 103, 116, 10331, 10335, 10357, 114, 59, 32768, 299, 768, 101, 108, 112, 10342, 10345, 10351, 59, 32768, 8465, 105, 110, 101, 59, 32768, 8464, 97, 114, 116, 59, 32768, 8465, 104, 59, 32768, 305, 102, 59, 32768, 8887, 101, 100, 59, 32768, 437, 1280, 59, 99, 102, 111, 116, 10381, 10383, 10389, 10403, 10409, 32768, 8712, 97, 114, 101, 59, 32768, 8453, 105, 110, 512, 59, 116, 10396, 10398, 32768, 8734, 105, 101, 59, 32768, 10717, 100, 111, 116, 59, 32768, 305, 1280, 59, 99, 101, 108, 112, 10420, 10422, 10427, 10444, 10451, 32768, 8747, 97, 108, 59, 32768, 8890, 512, 103, 114, 10432, 10438, 101, 114, 115, 59, 32768, 8484, 99, 97, 108, 59, 32768, 8890, 97, 114, 104, 107, 59, 32768, 10775, 114, 111, 100, 59, 32768, 10812, 1024, 99, 103, 112, 116, 10466, 10470, 10475, 10480, 121, 59, 32768, 1105, 111, 110, 59, 32768, 303, 102, 59, 32896, 55349, 56666, 97, 59, 32768, 953, 114, 111, 100, 59, 32768, 10812, 117, 101, 115, 116, 33024, 191, 59, 32768, 191, 512, 99, 105, 10504, 10509, 114, 59, 32896, 55349, 56510, 110, 1280, 59, 69, 100, 115, 118, 10521, 10523, 10526, 10531, 10541, 32768, 8712, 59, 32768, 8953, 111, 116, 59, 32768, 8949, 512, 59, 118, 10536, 10538, 32768, 8948, 59, 32768, 8947, 59, 32768, 8712, 512, 59, 105, 10549, 10551, 32768, 8290, 108, 100, 101, 59, 32768, 297, 828, 10562, 0, 10567, 99, 121, 59, 32768, 1110, 108, 33024, 239, 59, 32768, 239, 1536, 99, 102, 109, 111, 115, 117, 10585, 10598, 10603, 10609, 10615, 10630, 512, 105, 121, 10590, 10595, 114, 99, 59, 32768, 309, 59, 32768, 1081, 114, 59, 32896, 55349, 56615, 97, 116, 104, 59, 32768, 567, 112, 102, 59, 32896, 55349, 56667, 820, 10620, 0, 10625, 114, 59, 32896, 55349, 56511, 114, 99, 121, 59, 32768, 1112, 107, 99, 121, 59, 32768, 1108, 2048, 97, 99, 102, 103, 104, 106, 111, 115, 10653, 10666, 10680, 10685, 10692, 10697, 10702, 10708, 112, 112, 97, 512, 59, 118, 10661, 10663, 32768, 954, 59, 32768, 1008, 512, 101, 121, 10671, 10677, 100, 105, 108, 59, 32768, 311, 59, 32768, 1082, 114, 59, 32896, 55349, 56616, 114, 101, 101, 110, 59, 32768, 312, 99, 121, 59, 32768, 1093, 99, 121, 59, 32768, 1116, 112, 102, 59, 32896, 55349, 56668, 99, 114, 59, 32896, 55349, 56512, 5888, 65, 66, 69, 72, 97, 98, 99, 100, 101, 102, 103, 104, 106, 108, 109, 110, 111, 112, 114, 115, 116, 117, 118, 10761, 10783, 10789, 10799, 10804, 10957, 11011, 11047, 11094, 11349, 11372, 11382, 11409, 11414, 11451, 11478, 11526, 11698, 11711, 11755, 11823, 11910, 11929, 768, 97, 114, 116, 10768, 10773, 10777, 114, 114, 59, 32768, 8666, 114, 59, 32768, 8656, 97, 105, 108, 59, 32768, 10523, 97, 114, 114, 59, 32768, 10510, 512, 59, 103, 10794, 10796, 32768, 8806, 59, 32768, 10891, 97, 114, 59, 32768, 10594, 4660, 10824, 0, 10830, 0, 10838, 0, 0, 0, 0, 0, 10844, 10850, 0, 10867, 10870, 10877, 0, 10933, 117, 116, 101, 59, 32768, 314, 109, 112, 116, 121, 118, 59, 32768, 10676, 114, 97, 110, 59, 32768, 8466, 98, 100, 97, 59, 32768, 955, 103, 768, 59, 100, 108, 10857, 10859, 10862, 32768, 10216, 59, 32768, 10641, 101, 59, 32768, 10216, 59, 32768, 10885, 117, 111, 33024, 171, 59, 32768, 171, 114, 2048, 59, 98, 102, 104, 108, 112, 115, 116, 10894, 10896, 10907, 10911, 10915, 10919, 10923, 10928, 32768, 8592, 512, 59, 102, 10901, 10903, 32768, 8676, 115, 59, 32768, 10527, 115, 59, 32768, 10525, 107, 59, 32768, 8617, 112, 59, 32768, 8619, 108, 59, 32768, 10553, 105, 109, 59, 32768, 10611, 108, 59, 32768, 8610, 768, 59, 97, 101, 10939, 10941, 10946, 32768, 10923, 105, 108, 59, 32768, 10521, 512, 59, 115, 10951, 10953, 32768, 10925, 59, 32896, 10925, 65024, 768, 97, 98, 114, 10964, 10969, 10974, 114, 114, 59, 32768, 10508, 114, 107, 59, 32768, 10098, 512, 97, 107, 10979, 10991, 99, 512, 101, 107, 10985, 10988, 59, 32768, 123, 59, 32768, 91, 512, 101, 115, 10996, 10999, 59, 32768, 10635, 108, 512, 100, 117, 11005, 11008, 59, 32768, 10639, 59, 32768, 10637, 1024, 97, 101, 117, 121, 11020, 11026, 11040, 11044, 114, 111, 110, 59, 32768, 318, 512, 100, 105, 11031, 11036, 105, 108, 59, 32768, 316, 108, 59, 32768, 8968, 98, 59, 32768, 123, 59, 32768, 1083, 1024, 99, 113, 114, 115, 11056, 11060, 11072, 11090, 97, 59, 32768, 10550, 117, 111, 512, 59, 114, 11067, 11069, 32768, 8220, 59, 32768, 8222, 512, 100, 117, 11077, 11083, 104, 97, 114, 59, 32768, 10599, 115, 104, 97, 114, 59, 32768, 10571, 104, 59, 32768, 8626, 1280, 59, 102, 103, 113, 115, 11105, 11107, 11228, 11231, 11250, 32768, 8804, 116, 1280, 97, 104, 108, 114, 116, 11119, 11136, 11157, 11169, 11216, 114, 114, 111, 119, 512, 59, 116, 11128, 11130, 32768, 8592, 97, 105, 108, 59, 32768, 8610, 97, 114, 112, 111, 111, 110, 512, 100, 117, 11147, 11153, 111, 119, 110, 59, 32768, 8637, 112, 59, 32768, 8636, 101, 102, 116, 97, 114, 114, 111, 119, 115, 59, 32768, 8647, 105, 103, 104, 116, 768, 97, 104, 115, 11180, 11194, 11204, 114, 114, 111, 119, 512, 59, 115, 11189, 11191, 32768, 8596, 59, 32768, 8646, 97, 114, 112, 111, 111, 110, 115, 59, 32768, 8651, 113, 117, 105, 103, 97, 114, 114, 111, 119, 59, 32768, 8621, 104, 114, 101, 101, 116, 105, 109, 101, 115, 59, 32768, 8907, 59, 32768, 8922, 768, 59, 113, 115, 11238, 11240, 11243, 32768, 8804, 59, 32768, 8806, 108, 97, 110, 116, 59, 32768, 10877, 1280, 59, 99, 100, 103, 115, 11261, 11263, 11267, 11286, 11298, 32768, 10877, 99, 59, 32768, 10920, 111, 116, 512, 59, 111, 11274, 11276, 32768, 10879, 512, 59, 114, 11281, 11283, 32768, 10881, 59, 32768, 10883, 512, 59, 101, 11291, 11294, 32896, 8922, 65024, 115, 59, 32768, 10899, 1280, 97, 100, 101, 103, 115, 11309, 11317, 11322, 11339, 11344, 112, 112, 114, 111, 120, 59, 32768, 10885, 111, 116, 59, 32768, 8918, 113, 512, 103, 113, 11328, 11333, 116, 114, 59, 32768, 8922, 103, 116, 114, 59, 32768, 10891, 116, 114, 59, 32768, 8822, 105, 109, 59, 32768, 8818, 768, 105, 108, 114, 11356, 11362, 11368, 115, 104, 116, 59, 32768, 10620, 111, 111, 114, 59, 32768, 8970, 59, 32896, 55349, 56617, 512, 59, 69, 11377, 11379, 32768, 8822, 59, 32768, 10897, 562, 11386, 11405, 114, 512, 100, 117, 11391, 11394, 59, 32768, 8637, 512, 59, 108, 11399, 11401, 32768, 8636, 59, 32768, 10602, 108, 107, 59, 32768, 9604, 99, 121, 59, 32768, 1113, 1280, 59, 97, 99, 104, 116, 11425, 11427, 11432, 11440, 11446, 32768, 8810, 114, 114, 59, 32768, 8647, 111, 114, 110, 101, 114, 59, 32768, 8990, 97, 114, 100, 59, 32768, 10603, 114, 105, 59, 32768, 9722, 512, 105, 111, 11456, 11462, 100, 111, 116, 59, 32768, 320, 117, 115, 116, 512, 59, 97, 11470, 11472, 32768, 9136, 99, 104, 101, 59, 32768, 9136, 1024, 69, 97, 101, 115, 11487, 11490, 11504, 11521, 59, 32768, 8808, 112, 512, 59, 112, 11496, 11498, 32768, 10889, 114, 111, 120, 59, 32768, 10889, 512, 59, 113, 11509, 11511, 32768, 10887, 512, 59, 113, 11516, 11518, 32768, 10887, 59, 32768, 8808, 105, 109, 59, 32768, 8934, 2048, 97, 98, 110, 111, 112, 116, 119, 122, 11543, 11556, 11561, 11616, 11640, 11660, 11667, 11680, 512, 110, 114, 11548, 11552, 103, 59, 32768, 10220, 114, 59, 32768, 8701, 114, 107, 59, 32768, 10214, 103, 768, 108, 109, 114, 11569, 11596, 11604, 101, 102, 116, 512, 97, 114, 11577, 11584, 114, 114, 111, 119, 59, 32768, 10229, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 32768, 10231, 97, 112, 115, 116, 111, 59, 32768, 10236, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 32768, 10230, 112, 97, 114, 114, 111, 119, 512, 108, 114, 11627, 11633, 101, 102, 116, 59, 32768, 8619, 105, 103, 104, 116, 59, 32768, 8620, 768, 97, 102, 108, 11647, 11651, 11655, 114, 59, 32768, 10629, 59, 32896, 55349, 56669, 117, 115, 59, 32768, 10797, 105, 109, 101, 115, 59, 32768, 10804, 562, 11671, 11676, 115, 116, 59, 32768, 8727, 97, 114, 59, 32768, 95, 768, 59, 101, 102, 11687, 11689, 11695, 32768, 9674, 110, 103, 101, 59, 32768, 9674, 59, 32768, 10731, 97, 114, 512, 59, 108, 11705, 11707, 32768, 40, 116, 59, 32768, 10643, 1280, 97, 99, 104, 109, 116, 11722, 11727, 11735, 11747, 11750, 114, 114, 59, 32768, 8646, 111, 114, 110, 101, 114, 59, 32768, 8991, 97, 114, 512, 59, 100, 11742, 11744, 32768, 8651, 59, 32768, 10605, 59, 32768, 8206, 114, 105, 59, 32768, 8895, 1536, 97, 99, 104, 105, 113, 116, 11768, 11774, 11779, 11782, 11798, 11817, 113, 117, 111, 59, 32768, 8249, 114, 59, 32896, 55349, 56513, 59, 32768, 8624, 109, 768, 59, 101, 103, 11790, 11792, 11795, 32768, 8818, 59, 32768, 10893, 59, 32768, 10895, 512, 98, 117, 11803, 11806, 59, 32768, 91, 111, 512, 59, 114, 11812, 11814, 32768, 8216, 59, 32768, 8218, 114, 111, 107, 59, 32768, 322, 34816, 60, 59, 99, 100, 104, 105, 108, 113, 114, 11841, 11843, 11855, 11860, 11866, 11872, 11878, 11885, 32768, 60, 512, 99, 105, 11848, 11851, 59, 32768, 10918, 114, 59, 32768, 10873, 111, 116, 59, 32768, 8918, 114, 101, 101, 59, 32768, 8907, 109, 101, 115, 59, 32768, 8905, 97, 114, 114, 59, 32768, 10614, 117, 101, 115, 116, 59, 32768, 10875, 512, 80, 105, 11890, 11895, 97, 114, 59, 32768, 10646, 768, 59, 101, 102, 11902, 11904, 11907, 32768, 9667, 59, 32768, 8884, 59, 32768, 9666, 114, 512, 100, 117, 11916, 11923, 115, 104, 97, 114, 59, 32768, 10570, 104, 97, 114, 59, 32768, 10598, 512, 101, 110, 11934, 11944, 114, 116, 110, 101, 113, 113, 59, 32896, 8808, 65024, 69, 59, 32896, 8808, 65024, 3584, 68, 97, 99, 100, 101, 102, 104, 105, 108, 110, 111, 112, 115, 117, 11978, 11984, 12061, 12075, 12081, 12095, 12100, 12104, 12170, 12181, 12188, 12204, 12207, 12223, 68, 111, 116, 59, 32768, 8762, 1024, 99, 108, 112, 114, 11993, 11999, 12019, 12055, 114, 33024, 175, 59, 32768, 175, 512, 101, 116, 12004, 12007, 59, 32768, 9794, 512, 59, 101, 12012, 12014, 32768, 10016, 115, 101, 59, 32768, 10016, 512, 59, 115, 12024, 12026, 32768, 8614, 116, 111, 1024, 59, 100, 108, 117, 12037, 12039, 12045, 12051, 32768, 8614, 111, 119, 110, 59, 32768, 8615, 101, 102, 116, 59, 32768, 8612, 112, 59, 32768, 8613, 107, 101, 114, 59, 32768, 9646, 512, 111, 121, 12066, 12072, 109, 109, 97, 59, 32768, 10793, 59, 32768, 1084, 97, 115, 104, 59, 32768, 8212, 97, 115, 117, 114, 101, 100, 97, 110, 103, 108, 101, 59, 32768, 8737, 114, 59, 32896, 55349, 56618, 111, 59, 32768, 8487, 768, 99, 100, 110, 12111, 12118, 12146, 114, 111, 33024, 181, 59, 32768, 181, 1024, 59, 97, 99, 100, 12127, 12129, 12134, 12139, 32768, 8739, 115, 116, 59, 32768, 42, 105, 114, 59, 32768, 10992, 111, 116, 33024, 183, 59, 32768, 183, 117, 115, 768, 59, 98, 100, 12155, 12157, 12160, 32768, 8722, 59, 32768, 8863, 512, 59, 117, 12165, 12167, 32768, 8760, 59, 32768, 10794, 564, 12174, 12178, 112, 59, 32768, 10971, 114, 59, 32768, 8230, 112, 108, 117, 115, 59, 32768, 8723, 512, 100, 112, 12193, 12199, 101, 108, 115, 59, 32768, 8871, 102, 59, 32896, 55349, 56670, 59, 32768, 8723, 512, 99, 116, 12212, 12217, 114, 59, 32896, 55349, 56514, 112, 111, 115, 59, 32768, 8766, 768, 59, 108, 109, 12230, 12232, 12240, 32768, 956, 116, 105, 109, 97, 112, 59, 32768, 8888, 97, 112, 59, 32768, 8888, 6144, 71, 76, 82, 86, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 108, 109, 111, 112, 114, 115, 116, 117, 118, 119, 12294, 12315, 12364, 12376, 12393, 12472, 12496, 12547, 12553, 12636, 12641, 12703, 12725, 12747, 12752, 12876, 12881, 12957, 13033, 13089, 13294, 13359, 13384, 13499, 512, 103, 116, 12299, 12303, 59, 32896, 8921, 824, 512, 59, 118, 12308, 12311, 32896, 8811, 8402, 59, 32896, 8811, 824, 768, 101, 108, 116, 12322, 12348, 12352, 102, 116, 512, 97, 114, 12329, 12336, 114, 114, 111, 119, 59, 32768, 8653, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 32768, 8654, 59, 32896, 8920, 824, 512, 59, 118, 12357, 12360, 32896, 8810, 8402, 59, 32896, 8810, 824, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 32768, 8655, 512, 68, 100, 12381, 12387, 97, 115, 104, 59, 32768, 8879, 97, 115, 104, 59, 32768, 8878, 1280, 98, 99, 110, 112, 116, 12404, 12409, 12415, 12420, 12452, 108, 97, 59, 32768, 8711, 117, 116, 101, 59, 32768, 324, 103, 59, 32896, 8736, 8402, 1280, 59, 69, 105, 111, 112, 12431, 12433, 12437, 12442, 12446, 32768, 8777, 59, 32896, 10864, 824, 100, 59, 32896, 8779, 824, 115, 59, 32768, 329, 114, 111, 120, 59, 32768, 8777, 117, 114, 512, 59, 97, 12459, 12461, 32768, 9838, 108, 512, 59, 115, 12467, 12469, 32768, 9838, 59, 32768, 8469, 836, 12477, 0, 12483, 112, 33024, 160, 59, 32768, 160, 109, 112, 512, 59, 101, 12489, 12492, 32896, 8782, 824, 59, 32896, 8783, 824, 1280, 97, 101, 111, 117, 121, 12507, 12519, 12525, 12540, 12544, 833, 12512, 0, 12515, 59, 32768, 10819, 111, 110, 59, 32768, 328, 100, 105, 108, 59, 32768, 326, 110, 103, 512, 59, 100, 12532, 12534, 32768, 8775, 111, 116, 59, 32896, 10861, 824, 112, 59, 32768, 10818, 59, 32768, 1085, 97, 115, 104, 59, 32768, 8211, 1792, 59, 65, 97, 100, 113, 115, 120, 12568, 12570, 12575, 12596, 12602, 12608, 12623, 32768, 8800, 114, 114, 59, 32768, 8663, 114, 512, 104, 114, 12581, 12585, 107, 59, 32768, 10532, 512, 59, 111, 12590, 12592, 32768, 8599, 119, 59, 32768, 8599, 111, 116, 59, 32896, 8784, 824, 117, 105, 118, 59, 32768, 8802, 512, 101, 105, 12613, 12618, 97, 114, 59, 32768, 10536, 109, 59, 32896, 8770, 824, 105, 115, 116, 512, 59, 115, 12631, 12633, 32768, 8708, 59, 32768, 8708, 114, 59, 32896, 55349, 56619, 1024, 69, 101, 115, 116, 12650, 12654, 12688, 12693, 59, 32896, 8807, 824, 768, 59, 113, 115, 12661, 12663, 12684, 32768, 8817, 768, 59, 113, 115, 12670, 12672, 12676, 32768, 8817, 59, 32896, 8807, 824, 108, 97, 110, 116, 59, 32896, 10878, 824, 59, 32896, 10878, 824, 105, 109, 59, 32768, 8821, 512, 59, 114, 12698, 12700, 32768, 8815, 59, 32768, 8815, 768, 65, 97, 112, 12710, 12715, 12720, 114, 114, 59, 32768, 8654, 114, 114, 59, 32768, 8622, 97, 114, 59, 32768, 10994, 768, 59, 115, 118, 12732, 12734, 12744, 32768, 8715, 512, 59, 100, 12739, 12741, 32768, 8956, 59, 32768, 8954, 59, 32768, 8715, 99, 121, 59, 32768, 1114, 1792, 65, 69, 97, 100, 101, 115, 116, 12767, 12772, 12776, 12781, 12785, 12853, 12858, 114, 114, 59, 32768, 8653, 59, 32896, 8806, 824, 114, 114, 59, 32768, 8602, 114, 59, 32768, 8229, 1024, 59, 102, 113, 115, 12794, 12796, 12821, 12842, 32768, 8816, 116, 512, 97, 114, 12802, 12809, 114, 114, 111, 119, 59, 32768, 8602, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 32768, 8622, 768, 59, 113, 115, 12828, 12830, 12834, 32768, 8816, 59, 32896, 8806, 824, 108, 97, 110, 116, 59, 32896, 10877, 824, 512, 59, 115, 12847, 12850, 32896, 10877, 824, 59, 32768, 8814, 105, 109, 59, 32768, 8820, 512, 59, 114, 12863, 12865, 32768, 8814, 105, 512, 59, 101, 12871, 12873, 32768, 8938, 59, 32768, 8940, 105, 100, 59, 32768, 8740, 512, 112, 116, 12886, 12891, 102, 59, 32896, 55349, 56671, 33536, 172, 59, 105, 110, 12899, 12901, 12936, 32768, 172, 110, 1024, 59, 69, 100, 118, 12911, 12913, 12917, 12923, 32768, 8713, 59, 32896, 8953, 824, 111, 116, 59, 32896, 8949, 824, 818, 12928, 12931, 12934, 59, 32768, 8713, 59, 32768, 8951, 59, 32768, 8950, 105, 512, 59, 118, 12942, 12944, 32768, 8716, 818, 12949, 12952, 12955, 59, 32768, 8716, 59, 32768, 8958, 59, 32768, 8957, 768, 97, 111, 114, 12964, 12992, 12999, 114, 1024, 59, 97, 115, 116, 12974, 12976, 12983, 12988, 32768, 8742, 108, 108, 101, 108, 59, 32768, 8742, 108, 59, 32896, 11005, 8421, 59, 32896, 8706, 824, 108, 105, 110, 116, 59, 32768, 10772, 768, 59, 99, 101, 13006, 13008, 13013, 32768, 8832, 117, 101, 59, 32768, 8928, 512, 59, 99, 13018, 13021, 32896, 10927, 824, 512, 59, 101, 13026, 13028, 32768, 8832, 113, 59, 32896, 10927, 824, 1024, 65, 97, 105, 116, 13042, 13047, 13066, 13077, 114, 114, 59, 32768, 8655, 114, 114, 768, 59, 99, 119, 13056, 13058, 13062, 32768, 8603, 59, 32896, 10547, 824, 59, 32896, 8605, 824, 103, 104, 116, 97, 114, 114, 111, 119, 59, 32768, 8603, 114, 105, 512, 59, 101, 13084, 13086, 32768, 8939, 59, 32768, 8941, 1792, 99, 104, 105, 109, 112, 113, 117, 13104, 13128, 13151, 13169, 13174, 13179, 13194, 1024, 59, 99, 101, 114, 13113, 13115, 13120, 13124, 32768, 8833, 117, 101, 59, 32768, 8929, 59, 32896, 10928, 824, 59, 32896, 55349, 56515, 111, 114, 116, 1086, 13137, 0, 0, 13142, 105, 100, 59, 32768, 8740, 97, 114, 97, 108, 108, 101, 108, 59, 32768, 8742, 109, 512, 59, 101, 13157, 13159, 32768, 8769, 512, 59, 113, 13164, 13166, 32768, 8772, 59, 32768, 8772, 105, 100, 59, 32768, 8740, 97, 114, 59, 32768, 8742, 115, 117, 512, 98, 112, 13186, 13190, 101, 59, 32768, 8930, 101, 59, 32768, 8931, 768, 98, 99, 112, 13201, 13241, 13254, 1024, 59, 69, 101, 115, 13210, 13212, 13216, 13219, 32768, 8836, 59, 32896, 10949, 824, 59, 32768, 8840, 101, 116, 512, 59, 101, 13226, 13229, 32896, 8834, 8402, 113, 512, 59, 113, 13235, 13237, 32768, 8840, 59, 32896, 10949, 824, 99, 512, 59, 101, 13247, 13249, 32768, 8833, 113, 59, 32896, 10928, 824, 1024, 59, 69, 101, 115, 13263, 13265, 13269, 13272, 32768, 8837, 59, 32896, 10950, 824, 59, 32768, 8841, 101, 116, 512, 59, 101, 13279, 13282, 32896, 8835, 8402, 113, 512, 59, 113, 13288, 13290, 32768, 8841, 59, 32896, 10950, 824, 1024, 103, 105, 108, 114, 13303, 13307, 13315, 13319, 108, 59, 32768, 8825, 108, 100, 101, 33024, 241, 59, 32768, 241, 103, 59, 32768, 8824, 105, 97, 110, 103, 108, 101, 512, 108, 114, 13330, 13344, 101, 102, 116, 512, 59, 101, 13338, 13340, 32768, 8938, 113, 59, 32768, 8940, 105, 103, 104, 116, 512, 59, 101, 13353, 13355, 32768, 8939, 113, 59, 32768, 8941, 512, 59, 109, 13364, 13366, 32768, 957, 768, 59, 101, 115, 13373, 13375, 13380, 32768, 35, 114, 111, 59, 32768, 8470, 112, 59, 32768, 8199, 2304, 68, 72, 97, 100, 103, 105, 108, 114, 115, 13403, 13409, 13415, 13420, 13426, 13439, 13446, 13476, 13493, 97, 115, 104, 59, 32768, 8877, 97, 114, 114, 59, 32768, 10500, 112, 59, 32896, 8781, 8402, 97, 115, 104, 59, 32768, 8876, 512, 101, 116, 13431, 13435, 59, 32896, 8805, 8402, 59, 32896, 62, 8402, 110, 102, 105, 110, 59, 32768, 10718, 768, 65, 101, 116, 13453, 13458, 13462, 114, 114, 59, 32768, 10498, 59, 32896, 8804, 8402, 512, 59, 114, 13467, 13470, 32896, 60, 8402, 105, 101, 59, 32896, 8884, 8402, 512, 65, 116, 13481, 13486, 114, 114, 59, 32768, 10499, 114, 105, 101, 59, 32896, 8885, 8402, 105, 109, 59, 32896, 8764, 8402, 768, 65, 97, 110, 13506, 13511, 13532, 114, 114, 59, 32768, 8662, 114, 512, 104, 114, 13517, 13521, 107, 59, 32768, 10531, 512, 59, 111, 13526, 13528, 32768, 8598, 119, 59, 32768, 8598, 101, 97, 114, 59, 32768, 10535, 9252, 13576, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13579, 0, 13596, 13617, 13653, 13659, 13673, 13695, 13708, 0, 0, 13713, 13750, 0, 13788, 13794, 0, 13815, 13890, 13913, 13937, 13944, 59, 32768, 9416, 512, 99, 115, 13583, 13591, 117, 116, 101, 33024, 243, 59, 32768, 243, 116, 59, 32768, 8859, 512, 105, 121, 13600, 13613, 114, 512, 59, 99, 13606, 13608, 32768, 8858, 33024, 244, 59, 32768, 244, 59, 32768, 1086, 1280, 97, 98, 105, 111, 115, 13627, 13632, 13638, 13642, 13646, 115, 104, 59, 32768, 8861, 108, 97, 99, 59, 32768, 337, 118, 59, 32768, 10808, 116, 59, 32768, 8857, 111, 108, 100, 59, 32768, 10684, 108, 105, 103, 59, 32768, 339, 512, 99, 114, 13663, 13668, 105, 114, 59, 32768, 10687, 59, 32896, 55349, 56620, 1600, 13680, 0, 0, 13684, 0, 13692, 110, 59, 32768, 731, 97, 118, 101, 33024, 242, 59, 32768, 242, 59, 32768, 10689, 512, 98, 109, 13699, 13704, 97, 114, 59, 32768, 10677, 59, 32768, 937, 110, 116, 59, 32768, 8750, 1024, 97, 99, 105, 116, 13721, 13726, 13741, 13746, 114, 114, 59, 32768, 8634, 512, 105, 114, 13731, 13735, 114, 59, 32768, 10686, 111, 115, 115, 59, 32768, 10683, 110, 101, 59, 32768, 8254, 59, 32768, 10688, 768, 97, 101, 105, 13756, 13761, 13766, 99, 114, 59, 32768, 333, 103, 97, 59, 32768, 969, 768, 99, 100, 110, 13773, 13779, 13782, 114, 111, 110, 59, 32768, 959, 59, 32768, 10678, 117, 115, 59, 32768, 8854, 112, 102, 59, 32896, 55349, 56672, 768, 97, 101, 108, 13800, 13804, 13809, 114, 59, 32768, 10679, 114, 112, 59, 32768, 10681, 117, 115, 59, 32768, 8853, 1792, 59, 97, 100, 105, 111, 115, 118, 13829, 13831, 13836, 13869, 13875, 13879, 13886, 32768, 8744, 114, 114, 59, 32768, 8635, 1024, 59, 101, 102, 109, 13845, 13847, 13859, 13864, 32768, 10845, 114, 512, 59, 111, 13853, 13855, 32768, 8500, 102, 59, 32768, 8500, 33024, 170, 59, 32768, 170, 33024, 186, 59, 32768, 186, 103, 111, 102, 59, 32768, 8886, 114, 59, 32768, 10838, 108, 111, 112, 101, 59, 32768, 10839, 59, 32768, 10843, 768, 99, 108, 111, 13896, 13900, 13908, 114, 59, 32768, 8500, 97, 115, 104, 33024, 248, 59, 32768, 248, 108, 59, 32768, 8856, 105, 573, 13917, 13924, 100, 101, 33024, 245, 59, 32768, 245, 101, 115, 512, 59, 97, 13930, 13932, 32768, 8855, 115, 59, 32768, 10806, 109, 108, 33024, 246, 59, 32768, 246, 98, 97, 114, 59, 32768, 9021, 5426, 13972, 0, 14013, 0, 14017, 14053, 0, 14058, 14086, 0, 0, 14107, 14199, 0, 14202, 0, 0, 14229, 14425, 0, 14438, 114, 1024, 59, 97, 115, 116, 13981, 13983, 13997, 14009, 32768, 8741, 33280, 182, 59, 108, 13989, 13991, 32768, 182, 108, 101, 108, 59, 32768, 8741, 1082, 14003, 0, 0, 14007, 109, 59, 32768, 10995, 59, 32768, 11005, 59, 32768, 8706, 121, 59, 32768, 1087, 114, 1280, 99, 105, 109, 112, 116, 14028, 14033, 14038, 14043, 14046, 110, 116, 59, 32768, 37, 111, 100, 59, 32768, 46, 105, 108, 59, 32768, 8240, 59, 32768, 8869, 101, 110, 107, 59, 32768, 8241, 114, 59, 32896, 55349, 56621, 768, 105, 109, 111, 14064, 14074, 14080, 512, 59, 118, 14069, 14071, 32768, 966, 59, 32768, 981, 109, 97, 116, 59, 32768, 8499, 110, 101, 59, 32768, 9742, 768, 59, 116, 118, 14092, 14094, 14103, 32768, 960, 99, 104, 102, 111, 114, 107, 59, 32768, 8916, 59, 32768, 982, 512, 97, 117, 14111, 14132, 110, 512, 99, 107, 14117, 14128, 107, 512, 59, 104, 14123, 14125, 32768, 8463, 59, 32768, 8462, 118, 59, 32768, 8463, 115, 2304, 59, 97, 98, 99, 100, 101, 109, 115, 116, 14152, 14154, 14160, 14163, 14168, 14179, 14182, 14188, 14193, 32768, 43, 99, 105, 114, 59, 32768, 10787, 59, 32768, 8862, 105, 114, 59, 32768, 10786, 512, 111, 117, 14173, 14176, 59, 32768, 8724, 59, 32768, 10789, 59, 32768, 10866, 110, 33024, 177, 59, 32768, 177, 105, 109, 59, 32768, 10790, 119, 111, 59, 32768, 10791, 59, 32768, 177, 768, 105, 112, 117, 14208, 14216, 14221, 110, 116, 105, 110, 116, 59, 32768, 10773, 102, 59, 32896, 55349, 56673, 110, 100, 33024, 163, 59, 32768, 163, 2560, 59, 69, 97, 99, 101, 105, 110, 111, 115, 117, 14249, 14251, 14254, 14258, 14263, 14336, 14348, 14367, 14413, 14418, 32768, 8826, 59, 32768, 10931, 112, 59, 32768, 10935, 117, 101, 59, 32768, 8828, 512, 59, 99, 14268, 14270, 32768, 10927, 1536, 59, 97, 99, 101, 110, 115, 14283, 14285, 14293, 14302, 14306, 14331, 32768, 8826, 112, 112, 114, 111, 120, 59, 32768, 10935, 117, 114, 108, 121, 101, 113, 59, 32768, 8828, 113, 59, 32768, 10927, 768, 97, 101, 115, 14313, 14321, 14326, 112, 112, 114, 111, 120, 59, 32768, 10937, 113, 113, 59, 32768, 10933, 105, 109, 59, 32768, 8936, 105, 109, 59, 32768, 8830, 109, 101, 512, 59, 115, 14343, 14345, 32768, 8242, 59, 32768, 8473, 768, 69, 97, 115, 14355, 14358, 14362, 59, 32768, 10933, 112, 59, 32768, 10937, 105, 109, 59, 32768, 8936, 768, 100, 102, 112, 14374, 14377, 14402, 59, 32768, 8719, 768, 97, 108, 115, 14384, 14390, 14396, 108, 97, 114, 59, 32768, 9006, 105, 110, 101, 59, 32768, 8978, 117, 114, 102, 59, 32768, 8979, 512, 59, 116, 14407, 14409, 32768, 8733, 111, 59, 32768, 8733, 105, 109, 59, 32768, 8830, 114, 101, 108, 59, 32768, 8880, 512, 99, 105, 14429, 14434, 114, 59, 32896, 55349, 56517, 59, 32768, 968, 110, 99, 115, 112, 59, 32768, 8200, 1536, 102, 105, 111, 112, 115, 117, 14457, 14462, 14467, 14473, 14480, 14486, 114, 59, 32896, 55349, 56622, 110, 116, 59, 32768, 10764, 112, 102, 59, 32896, 55349, 56674, 114, 105, 109, 101, 59, 32768, 8279, 99, 114, 59, 32896, 55349, 56518, 768, 97, 101, 111, 14493, 14513, 14526, 116, 512, 101, 105, 14499, 14508, 114, 110, 105, 111, 110, 115, 59, 32768, 8461, 110, 116, 59, 32768, 10774, 115, 116, 512, 59, 101, 14520, 14522, 32768, 63, 113, 59, 32768, 8799, 116, 33024, 34, 59, 32768, 34, 5376, 65, 66, 72, 97, 98, 99, 100, 101, 102, 104, 105, 108, 109, 110, 111, 112, 114, 115, 116, 117, 120, 14575, 14597, 14603, 14608, 14775, 14829, 14865, 14901, 14943, 14966, 15000, 15139, 15159, 15176, 15182, 15236, 15261, 15267, 15309, 15352, 15360, 768, 97, 114, 116, 14582, 14587, 14591, 114, 114, 59, 32768, 8667, 114, 59, 32768, 8658, 97, 105, 108, 59, 32768, 10524, 97, 114, 114, 59, 32768, 10511, 97, 114, 59, 32768, 10596, 1792, 99, 100, 101, 110, 113, 114, 116, 14623, 14637, 14642, 14650, 14672, 14679, 14751, 512, 101, 117, 14628, 14632, 59, 32896, 8765, 817, 116, 101, 59, 32768, 341, 105, 99, 59, 32768, 8730, 109, 112, 116, 121, 118, 59, 32768, 10675, 103, 1024, 59, 100, 101, 108, 14660, 14662, 14665, 14668, 32768, 10217, 59, 32768, 10642, 59, 32768, 10661, 101, 59, 32768, 10217, 117, 111, 33024, 187, 59, 32768, 187, 114, 2816, 59, 97, 98, 99, 102, 104, 108, 112, 115, 116, 119, 14703, 14705, 14709, 14720, 14723, 14727, 14731, 14735, 14739, 14744, 14748, 32768, 8594, 112, 59, 32768, 10613, 512, 59, 102, 14714, 14716, 32768, 8677, 115, 59, 32768, 10528, 59, 32768, 10547, 115, 59, 32768, 10526, 107, 59, 32768, 8618, 112, 59, 32768, 8620, 108, 59, 32768, 10565, 105, 109, 59, 32768, 10612, 108, 59, 32768, 8611, 59, 32768, 8605, 512, 97, 105, 14756, 14761, 105, 108, 59, 32768, 10522, 111, 512, 59, 110, 14767, 14769, 32768, 8758, 97, 108, 115, 59, 32768, 8474, 768, 97, 98, 114, 14782, 14787, 14792, 114, 114, 59, 32768, 10509, 114, 107, 59, 32768, 10099, 512, 97, 107, 14797, 14809, 99, 512, 101, 107, 14803, 14806, 59, 32768, 125, 59, 32768, 93, 512, 101, 115, 14814, 14817, 59, 32768, 10636, 108, 512, 100, 117, 14823, 14826, 59, 32768, 10638, 59, 32768, 10640, 1024, 97, 101, 117, 121, 14838, 14844, 14858, 14862, 114, 111, 110, 59, 32768, 345, 512, 100, 105, 14849, 14854, 105, 108, 59, 32768, 343, 108, 59, 32768, 8969, 98, 59, 32768, 125, 59, 32768, 1088, 1024, 99, 108, 113, 115, 14874, 14878, 14885, 14897, 97, 59, 32768, 10551, 100, 104, 97, 114, 59, 32768, 10601, 117, 111, 512, 59, 114, 14892, 14894, 32768, 8221, 59, 32768, 8221, 104, 59, 32768, 8627, 768, 97, 99, 103, 14908, 14934, 14938, 108, 1024, 59, 105, 112, 115, 14918, 14920, 14925, 14931, 32768, 8476, 110, 101, 59, 32768, 8475, 97, 114, 116, 59, 32768, 8476, 59, 32768, 8477, 116, 59, 32768, 9645, 33024, 174, 59, 32768, 174, 768, 105, 108, 114, 14950, 14956, 14962, 115, 104, 116, 59, 32768, 10621, 111, 111, 114, 59, 32768, 8971, 59, 32896, 55349, 56623, 512, 97, 111, 14971, 14990, 114, 512, 100, 117, 14977, 14980, 59, 32768, 8641, 512, 59, 108, 14985, 14987, 32768, 8640, 59, 32768, 10604, 512, 59, 118, 14995, 14997, 32768, 961, 59, 32768, 1009, 768, 103, 110, 115, 15007, 15123, 15127, 104, 116, 1536, 97, 104, 108, 114, 115, 116, 15022, 15039, 15060, 15086, 15099, 15111, 114, 114, 111, 119, 512, 59, 116, 15031, 15033, 32768, 8594, 97, 105, 108, 59, 32768, 8611, 97, 114, 112, 111, 111, 110, 512, 100, 117, 15050, 15056, 111, 119, 110, 59, 32768, 8641, 112, 59, 32768, 8640, 101, 102, 116, 512, 97, 104, 15068, 15076, 114, 114, 111, 119, 115, 59, 32768, 8644, 97, 114, 112, 111, 111, 110, 115, 59, 32768, 8652, 105, 103, 104, 116, 97, 114, 114, 111, 119, 115, 59, 32768, 8649, 113, 117, 105, 103, 97, 114, 114, 111, 119, 59, 32768, 8605, 104, 114, 101, 101, 116, 105, 109, 101, 115, 59, 32768, 8908, 103, 59, 32768, 730, 105, 110, 103, 100, 111, 116, 115, 101, 113, 59, 32768, 8787, 768, 97, 104, 109, 15146, 15151, 15156, 114, 114, 59, 32768, 8644, 97, 114, 59, 32768, 8652, 59, 32768, 8207, 111, 117, 115, 116, 512, 59, 97, 15168, 15170, 32768, 9137, 99, 104, 101, 59, 32768, 9137, 109, 105, 100, 59, 32768, 10990, 1024, 97, 98, 112, 116, 15191, 15204, 15209, 15229, 512, 110, 114, 15196, 15200, 103, 59, 32768, 10221, 114, 59, 32768, 8702, 114, 107, 59, 32768, 10215, 768, 97, 102, 108, 15216, 15220, 15224, 114, 59, 32768, 10630, 59, 32896, 55349, 56675, 117, 115, 59, 32768, 10798, 105, 109, 101, 115, 59, 32768, 10805, 512, 97, 112, 15241, 15253, 114, 512, 59, 103, 15247, 15249, 32768, 41, 116, 59, 32768, 10644, 111, 108, 105, 110, 116, 59, 32768, 10770, 97, 114, 114, 59, 32768, 8649, 1024, 97, 99, 104, 113, 15276, 15282, 15287, 15290, 113, 117, 111, 59, 32768, 8250, 114, 59, 32896, 55349, 56519, 59, 32768, 8625, 512, 98, 117, 15295, 15298, 59, 32768, 93, 111, 512, 59, 114, 15304, 15306, 32768, 8217, 59, 32768, 8217, 768, 104, 105, 114, 15316, 15322, 15328, 114, 101, 101, 59, 32768, 8908, 109, 101, 115, 59, 32768, 8906, 105, 1024, 59, 101, 102, 108, 15338, 15340, 15343, 15346, 32768, 9657, 59, 32768, 8885, 59, 32768, 9656, 116, 114, 105, 59, 32768, 10702, 108, 117, 104, 97, 114, 59, 32768, 10600, 59, 32768, 8478, 6706, 15391, 15398, 15404, 15499, 15516, 15592, 0, 15606, 15660, 0, 0, 15752, 15758, 0, 15827, 15863, 15886, 16000, 16006, 16038, 16086, 0, 16467, 0, 0, 16506, 99, 117, 116, 101, 59, 32768, 347, 113, 117, 111, 59, 32768, 8218, 2560, 59, 69, 97, 99, 101, 105, 110, 112, 115, 121, 15424, 15426, 15429, 15441, 15446, 15458, 15463, 15482, 15490, 15495, 32768, 8827, 59, 32768, 10932, 833, 15434, 0, 15437, 59, 32768, 10936, 111, 110, 59, 32768, 353, 117, 101, 59, 32768, 8829, 512, 59, 100, 15451, 15453, 32768, 10928, 105, 108, 59, 32768, 351, 114, 99, 59, 32768, 349, 768, 69, 97, 115, 15470, 15473, 15477, 59, 32768, 10934, 112, 59, 32768, 10938, 105, 109, 59, 32768, 8937, 111, 108, 105, 110, 116, 59, 32768, 10771, 105, 109, 59, 32768, 8831, 59, 32768, 1089, 111, 116, 768, 59, 98, 101, 15507, 15509, 15512, 32768, 8901, 59, 32768, 8865, 59, 32768, 10854, 1792, 65, 97, 99, 109, 115, 116, 120, 15530, 15535, 15556, 15562, 15566, 15572, 15587, 114, 114, 59, 32768, 8664, 114, 512, 104, 114, 15541, 15545, 107, 59, 32768, 10533, 512, 59, 111, 15550, 15552, 32768, 8600, 119, 59, 32768, 8600, 116, 33024, 167, 59, 32768, 167, 105, 59, 32768, 59, 119, 97, 114, 59, 32768, 10537, 109, 512, 105, 110, 15578, 15584, 110, 117, 115, 59, 32768, 8726, 59, 32768, 8726, 116, 59, 32768, 10038, 114, 512, 59, 111, 15597, 15600, 32896, 55349, 56624, 119, 110, 59, 32768, 8994, 1024, 97, 99, 111, 121, 15614, 15619, 15632, 15654, 114, 112, 59, 32768, 9839, 512, 104, 121, 15624, 15629, 99, 121, 59, 32768, 1097, 59, 32768, 1096, 114, 116, 1086, 15640, 0, 0, 15645, 105, 100, 59, 32768, 8739, 97, 114, 97, 108, 108, 101, 108, 59, 32768, 8741, 33024, 173, 59, 32768, 173, 512, 103, 109, 15664, 15681, 109, 97, 768, 59, 102, 118, 15673, 15675, 15678, 32768, 963, 59, 32768, 962, 59, 32768, 962, 2048, 59, 100, 101, 103, 108, 110, 112, 114, 15698, 15700, 15705, 15715, 15725, 15735, 15739, 15745, 32768, 8764, 111, 116, 59, 32768, 10858, 512, 59, 113, 15710, 15712, 32768, 8771, 59, 32768, 8771, 512, 59, 69, 15720, 15722, 32768, 10910, 59, 32768, 10912, 512, 59, 69, 15730, 15732, 32768, 10909, 59, 32768, 10911, 101, 59, 32768, 8774, 108, 117, 115, 59, 32768, 10788, 97, 114, 114, 59, 32768, 10610, 97, 114, 114, 59, 32768, 8592, 1024, 97, 101, 105, 116, 15766, 15788, 15796, 15808, 512, 108, 115, 15771, 15783, 108, 115, 101, 116, 109, 105, 110, 117, 115, 59, 32768, 8726, 104, 112, 59, 32768, 10803, 112, 97, 114, 115, 108, 59, 32768, 10724, 512, 100, 108, 15801, 15804, 59, 32768, 8739, 101, 59, 32768, 8995, 512, 59, 101, 15813, 15815, 32768, 10922, 512, 59, 115, 15820, 15822, 32768, 10924, 59, 32896, 10924, 65024, 768, 102, 108, 112, 15833, 15839, 15857, 116, 99, 121, 59, 32768, 1100, 512, 59, 98, 15844, 15846, 32768, 47, 512, 59, 97, 15851, 15853, 32768, 10692, 114, 59, 32768, 9023, 102, 59, 32896, 55349, 56676, 97, 512, 100, 114, 15868, 15882, 101, 115, 512, 59, 117, 15875, 15877, 32768, 9824, 105, 116, 59, 32768, 9824, 59, 32768, 8741, 768, 99, 115, 117, 15892, 15921, 15977, 512, 97, 117, 15897, 15909, 112, 512, 59, 115, 15903, 15905, 32768, 8851, 59, 32896, 8851, 65024, 112, 512, 59, 115, 15915, 15917, 32768, 8852, 59, 32896, 8852, 65024, 117, 512, 98, 112, 15927, 15952, 768, 59, 101, 115, 15934, 15936, 15939, 32768, 8847, 59, 32768, 8849, 101, 116, 512, 59, 101, 15946, 15948, 32768, 8847, 113, 59, 32768, 8849, 768, 59, 101, 115, 15959, 15961, 15964, 32768, 8848, 59, 32768, 8850, 101, 116, 512, 59, 101, 15971, 15973, 32768, 8848, 113, 59, 32768, 8850, 768, 59, 97, 102, 15984, 15986, 15996, 32768, 9633, 114, 566, 15991, 15994, 59, 32768, 9633, 59, 32768, 9642, 59, 32768, 9642, 97, 114, 114, 59, 32768, 8594, 1024, 99, 101, 109, 116, 16014, 16019, 16025, 16031, 114, 59, 32896, 55349, 56520, 116, 109, 110, 59, 32768, 8726, 105, 108, 101, 59, 32768, 8995, 97, 114, 102, 59, 32768, 8902, 512, 97, 114, 16042, 16053, 114, 512, 59, 102, 16048, 16050, 32768, 9734, 59, 32768, 9733, 512, 97, 110, 16058, 16081, 105, 103, 104, 116, 512, 101, 112, 16067, 16076, 112, 115, 105, 108, 111, 110, 59, 32768, 1013, 104, 105, 59, 32768, 981, 115, 59, 32768, 175, 1280, 98, 99, 109, 110, 112, 16096, 16221, 16288, 16291, 16295, 2304, 59, 69, 100, 101, 109, 110, 112, 114, 115, 16115, 16117, 16120, 16125, 16137, 16143, 16154, 16160, 16166, 32768, 8834, 59, 32768, 10949, 111, 116, 59, 32768, 10941, 512, 59, 100, 16130, 16132, 32768, 8838, 111, 116, 59, 32768, 10947, 117, 108, 116, 59, 32768, 10945, 512, 69, 101, 16148, 16151, 59, 32768, 10955, 59, 32768, 8842, 108, 117, 115, 59, 32768, 10943, 97, 114, 114, 59, 32768, 10617, 768, 101, 105, 117, 16173, 16206, 16210, 116, 768, 59, 101, 110, 16181, 16183, 16194, 32768, 8834, 113, 512, 59, 113, 16189, 16191, 32768, 8838, 59, 32768, 10949, 101, 113, 512, 59, 113, 16201, 16203, 32768, 8842, 59, 32768, 10955, 109, 59, 32768, 10951, 512, 98, 112, 16215, 16218, 59, 32768, 10965, 59, 32768, 10963, 99, 1536, 59, 97, 99, 101, 110, 115, 16235, 16237, 16245, 16254, 16258, 16283, 32768, 8827, 112, 112, 114, 111, 120, 59, 32768, 10936, 117, 114, 108, 121, 101, 113, 59, 32768, 8829, 113, 59, 32768, 10928, 768, 97, 101, 115, 16265, 16273, 16278, 112, 112, 114, 111, 120, 59, 32768, 10938, 113, 113, 59, 32768, 10934, 105, 109, 59, 32768, 8937, 105, 109, 59, 32768, 8831, 59, 32768, 8721, 103, 59, 32768, 9834, 3328, 49, 50, 51, 59, 69, 100, 101, 104, 108, 109, 110, 112, 115, 16322, 16327, 16332, 16337, 16339, 16342, 16356, 16368, 16382, 16388, 16394, 16405, 16411, 33024, 185, 59, 32768, 185, 33024, 178, 59, 32768, 178, 33024, 179, 59, 32768, 179, 32768, 8835, 59, 32768, 10950, 512, 111, 115, 16347, 16351, 116, 59, 32768, 10942, 117, 98, 59, 32768, 10968, 512, 59, 100, 16361, 16363, 32768, 8839, 111, 116, 59, 32768, 10948, 115, 512, 111, 117, 16374, 16378, 108, 59, 32768, 10185, 98, 59, 32768, 10967, 97, 114, 114, 59, 32768, 10619, 117, 108, 116, 59, 32768, 10946, 512, 69, 101, 16399, 16402, 59, 32768, 10956, 59, 32768, 8843, 108, 117, 115, 59, 32768, 10944, 768, 101, 105, 117, 16418, 16451, 16455, 116, 768, 59, 101, 110, 16426, 16428, 16439, 32768, 8835, 113, 512, 59, 113, 16434, 16436, 32768, 8839, 59, 32768, 10950, 101, 113, 512, 59, 113, 16446, 16448, 32768, 8843, 59, 32768, 10956, 109, 59, 32768, 10952, 512, 98, 112, 16460, 16463, 59, 32768, 10964, 59, 32768, 10966, 768, 65, 97, 110, 16473, 16478, 16499, 114, 114, 59, 32768, 8665, 114, 512, 104, 114, 16484, 16488, 107, 59, 32768, 10534, 512, 59, 111, 16493, 16495, 32768, 8601, 119, 59, 32768, 8601, 119, 97, 114, 59, 32768, 10538, 108, 105, 103, 33024, 223, 59, 32768, 223, 5938, 16538, 16552, 16557, 16579, 16584, 16591, 0, 16596, 16692, 0, 0, 0, 0, 0, 16731, 16780, 0, 16787, 16908, 0, 0, 0, 16938, 1091, 16543, 0, 0, 16549, 103, 101, 116, 59, 32768, 8982, 59, 32768, 964, 114, 107, 59, 32768, 9140, 768, 97, 101, 121, 16563, 16569, 16575, 114, 111, 110, 59, 32768, 357, 100, 105, 108, 59, 32768, 355, 59, 32768, 1090, 111, 116, 59, 32768, 8411, 108, 114, 101, 99, 59, 32768, 8981, 114, 59, 32896, 55349, 56625, 1024, 101, 105, 107, 111, 16604, 16641, 16670, 16684, 835, 16609, 0, 16624, 101, 512, 52, 102, 16614, 16617, 59, 32768, 8756, 111, 114, 101, 59, 32768, 8756, 97, 768, 59, 115, 118, 16631, 16633, 16638, 32768, 952, 121, 109, 59, 32768, 977, 59, 32768, 977, 512, 99, 110, 16646, 16665, 107, 512, 97, 115, 16652, 16660, 112, 112, 114, 111, 120, 59, 32768, 8776, 105, 109, 59, 32768, 8764, 115, 112, 59, 32768, 8201, 512, 97, 115, 16675, 16679, 112, 59, 32768, 8776, 105, 109, 59, 32768, 8764, 114, 110, 33024, 254, 59, 32768, 254, 829, 16696, 16701, 16727, 100, 101, 59, 32768, 732, 101, 115, 33536, 215, 59, 98, 100, 16710, 16712, 16723, 32768, 215, 512, 59, 97, 16717, 16719, 32768, 8864, 114, 59, 32768, 10801, 59, 32768, 10800, 116, 59, 32768, 8749, 768, 101, 112, 115, 16737, 16741, 16775, 97, 59, 32768, 10536, 1024, 59, 98, 99, 102, 16750, 16752, 16757, 16762, 32768, 8868, 111, 116, 59, 32768, 9014, 105, 114, 59, 32768, 10993, 512, 59, 111, 16767, 16770, 32896, 55349, 56677, 114, 107, 59, 32768, 10970, 97, 59, 32768, 10537, 114, 105, 109, 101, 59, 32768, 8244, 768, 97, 105, 112, 16793, 16798, 16899, 100, 101, 59, 32768, 8482, 1792, 97, 100, 101, 109, 112, 115, 116, 16813, 16868, 16873, 16876, 16883, 16889, 16893, 110, 103, 108, 101, 1280, 59, 100, 108, 113, 114, 16828, 16830, 16836, 16850, 16853, 32768, 9653, 111, 119, 110, 59, 32768, 9663, 101, 102, 116, 512, 59, 101, 16844, 16846, 32768, 9667, 113, 59, 32768, 8884, 59, 32768, 8796, 105, 103, 104, 116, 512, 59, 101, 16862, 16864, 32768, 9657, 113, 59, 32768, 8885, 111, 116, 59, 32768, 9708, 59, 32768, 8796, 105, 110, 117, 115, 59, 32768, 10810, 108, 117, 115, 59, 32768, 10809, 98, 59, 32768, 10701, 105, 109, 101, 59, 32768, 10811, 101, 122, 105, 117, 109, 59, 32768, 9186, 768, 99, 104, 116, 16914, 16926, 16931, 512, 114, 121, 16919, 16923, 59, 32896, 55349, 56521, 59, 32768, 1094, 99, 121, 59, 32768, 1115, 114, 111, 107, 59, 32768, 359, 512, 105, 111, 16942, 16947, 120, 116, 59, 32768, 8812, 104, 101, 97, 100, 512, 108, 114, 16956, 16967, 101, 102, 116, 97, 114, 114, 111, 119, 59, 32768, 8606, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 32768, 8608, 4608, 65, 72, 97, 98, 99, 100, 102, 103, 104, 108, 109, 111, 112, 114, 115, 116, 117, 119, 17016, 17021, 17026, 17043, 17057, 17072, 17095, 17110, 17119, 17139, 17172, 17187, 17202, 17290, 17330, 17336, 17365, 17381, 114, 114, 59, 32768, 8657, 97, 114, 59, 32768, 10595, 512, 99, 114, 17031, 17039, 117, 116, 101, 33024, 250, 59, 32768, 250, 114, 59, 32768, 8593, 114, 820, 17049, 0, 17053, 121, 59, 32768, 1118, 118, 101, 59, 32768, 365, 512, 105, 121, 17062, 17069, 114, 99, 33024, 251, 59, 32768, 251, 59, 32768, 1091, 768, 97, 98, 104, 17079, 17084, 17090, 114, 114, 59, 32768, 8645, 108, 97, 99, 59, 32768, 369, 97, 114, 59, 32768, 10606, 512, 105, 114, 17100, 17106, 115, 104, 116, 59, 32768, 10622, 59, 32896, 55349, 56626, 114, 97, 118, 101, 33024, 249, 59, 32768, 249, 562, 17123, 17135, 114, 512, 108, 114, 17128, 17131, 59, 32768, 8639, 59, 32768, 8638, 108, 107, 59, 32768, 9600, 512, 99, 116, 17144, 17167, 1088, 17150, 0, 0, 17163, 114, 110, 512, 59, 101, 17156, 17158, 32768, 8988, 114, 59, 32768, 8988, 111, 112, 59, 32768, 8975, 114, 105, 59, 32768, 9720, 512, 97, 108, 17177, 17182, 99, 114, 59, 32768, 363, 33024, 168, 59, 32768, 168, 512, 103, 112, 17192, 17197, 111, 110, 59, 32768, 371, 102, 59, 32896, 55349, 56678, 1536, 97, 100, 104, 108, 115, 117, 17215, 17222, 17233, 17257, 17262, 17280, 114, 114, 111, 119, 59, 32768, 8593, 111, 119, 110, 97, 114, 114, 111, 119, 59, 32768, 8597, 97, 114, 112, 111, 111, 110, 512, 108, 114, 17244, 17250, 101, 102, 116, 59, 32768, 8639, 105, 103, 104, 116, 59, 32768, 8638, 117, 115, 59, 32768, 8846, 105, 768, 59, 104, 108, 17270, 17272, 17275, 32768, 965, 59, 32768, 978, 111, 110, 59, 32768, 965, 112, 97, 114, 114, 111, 119, 115, 59, 32768, 8648, 768, 99, 105, 116, 17297, 17320, 17325, 1088, 17303, 0, 0, 17316, 114, 110, 512, 59, 101, 17309, 17311, 32768, 8989, 114, 59, 32768, 8989, 111, 112, 59, 32768, 8974, 110, 103, 59, 32768, 367, 114, 105, 59, 32768, 9721, 99, 114, 59, 32896, 55349, 56522, 768, 100, 105, 114, 17343, 17348, 17354, 111, 116, 59, 32768, 8944, 108, 100, 101, 59, 32768, 361, 105, 512, 59, 102, 17360, 17362, 32768, 9653, 59, 32768, 9652, 512, 97, 109, 17370, 17375, 114, 114, 59, 32768, 8648, 108, 33024, 252, 59, 32768, 252, 97, 110, 103, 108, 101, 59, 32768, 10663, 3840, 65, 66, 68, 97, 99, 100, 101, 102, 108, 110, 111, 112, 114, 115, 122, 17420, 17425, 17437, 17443, 17613, 17617, 17623, 17667, 17672, 17678, 17693, 17699, 17705, 17711, 17754, 114, 114, 59, 32768, 8661, 97, 114, 512, 59, 118, 17432, 17434, 32768, 10984, 59, 32768, 10985, 97, 115, 104, 59, 32768, 8872, 512, 110, 114, 17448, 17454, 103, 114, 116, 59, 32768, 10652, 1792, 101, 107, 110, 112, 114, 115, 116, 17469, 17478, 17485, 17494, 17515, 17526, 17578, 112, 115, 105, 108, 111, 110, 59, 32768, 1013, 97, 112, 112, 97, 59, 32768, 1008, 111, 116, 104, 105, 110, 103, 59, 32768, 8709, 768, 104, 105, 114, 17501, 17505, 17508, 105, 59, 32768, 981, 59, 32768, 982, 111, 112, 116, 111, 59, 32768, 8733, 512, 59, 104, 17520, 17522, 32768, 8597, 111, 59, 32768, 1009, 512, 105, 117, 17531, 17537, 103, 109, 97, 59, 32768, 962, 512, 98, 112, 17542, 17560, 115, 101, 116, 110, 101, 113, 512, 59, 113, 17553, 17556, 32896, 8842, 65024, 59, 32896, 10955, 65024, 115, 101, 116, 110, 101, 113, 512, 59, 113, 17571, 17574, 32896, 8843, 65024, 59, 32896, 10956, 65024, 512, 104, 114, 17583, 17589, 101, 116, 97, 59, 32768, 977, 105, 97, 110, 103, 108, 101, 512, 108, 114, 17600, 17606, 101, 102, 116, 59, 32768, 8882, 105, 103, 104, 116, 59, 32768, 8883, 121, 59, 32768, 1074, 97, 115, 104, 59, 32768, 8866, 768, 101, 108, 114, 17630, 17648, 17654, 768, 59, 98, 101, 17637, 17639, 17644, 32768, 8744, 97, 114, 59, 32768, 8891, 113, 59, 32768, 8794, 108, 105, 112, 59, 32768, 8942, 512, 98, 116, 17659, 17664, 97, 114, 59, 32768, 124, 59, 32768, 124, 114, 59, 32896, 55349, 56627, 116, 114, 105, 59, 32768, 8882, 115, 117, 512, 98, 112, 17685, 17689, 59, 32896, 8834, 8402, 59, 32896, 8835, 8402, 112, 102, 59, 32896, 55349, 56679, 114, 111, 112, 59, 32768, 8733, 116, 114, 105, 59, 32768, 8883, 512, 99, 117, 17716, 17721, 114, 59, 32896, 55349, 56523, 512, 98, 112, 17726, 17740, 110, 512, 69, 101, 17732, 17736, 59, 32896, 10955, 65024, 59, 32896, 8842, 65024, 110, 512, 69, 101, 17746, 17750, 59, 32896, 10956, 65024, 59, 32896, 8843, 65024, 105, 103, 122, 97, 103, 59, 32768, 10650, 1792, 99, 101, 102, 111, 112, 114, 115, 17777, 17783, 17815, 17820, 17826, 17829, 17842, 105, 114, 99, 59, 32768, 373, 512, 100, 105, 17788, 17809, 512, 98, 103, 17793, 17798, 97, 114, 59, 32768, 10847, 101, 512, 59, 113, 17804, 17806, 32768, 8743, 59, 32768, 8793, 101, 114, 112, 59, 32768, 8472, 114, 59, 32896, 55349, 56628, 112, 102, 59, 32896, 55349, 56680, 59, 32768, 8472, 512, 59, 101, 17834, 17836, 32768, 8768, 97, 116, 104, 59, 32768, 8768, 99, 114, 59, 32896, 55349, 56524, 5428, 17871, 17891, 0, 17897, 0, 17902, 17917, 0, 0, 17920, 17935, 17940, 17945, 0, 0, 17977, 17992, 0, 18008, 18024, 18029, 768, 97, 105, 117, 17877, 17881, 17886, 112, 59, 32768, 8898, 114, 99, 59, 32768, 9711, 112, 59, 32768, 8899, 116, 114, 105, 59, 32768, 9661, 114, 59, 32896, 55349, 56629, 512, 65, 97, 17906, 17911, 114, 114, 59, 32768, 10234, 114, 114, 59, 32768, 10231, 59, 32768, 958, 512, 65, 97, 17924, 17929, 114, 114, 59, 32768, 10232, 114, 114, 59, 32768, 10229, 97, 112, 59, 32768, 10236, 105, 115, 59, 32768, 8955, 768, 100, 112, 116, 17951, 17956, 17970, 111, 116, 59, 32768, 10752, 512, 102, 108, 17961, 17965, 59, 32896, 55349, 56681, 117, 115, 59, 32768, 10753, 105, 109, 101, 59, 32768, 10754, 512, 65, 97, 17981, 17986, 114, 114, 59, 32768, 10233, 114, 114, 59, 32768, 10230, 512, 99, 113, 17996, 18001, 114, 59, 32896, 55349, 56525, 99, 117, 112, 59, 32768, 10758, 512, 112, 116, 18012, 18018, 108, 117, 115, 59, 32768, 10756, 114, 105, 59, 32768, 9651, 101, 101, 59, 32768, 8897, 101, 100, 103, 101, 59, 32768, 8896, 2048, 97, 99, 101, 102, 105, 111, 115, 117, 18052, 18068, 18081, 18087, 18092, 18097, 18103, 18109, 99, 512, 117, 121, 18058, 18065, 116, 101, 33024, 253, 59, 32768, 253, 59, 32768, 1103, 512, 105, 121, 18073, 18078, 114, 99, 59, 32768, 375, 59, 32768, 1099, 110, 33024, 165, 59, 32768, 165, 114, 59, 32896, 55349, 56630, 99, 121, 59, 32768, 1111, 112, 102, 59, 32896, 55349, 56682, 99, 114, 59, 32896, 55349, 56526, 512, 99, 109, 18114, 18118, 121, 59, 32768, 1102, 108, 33024, 255, 59, 32768, 255, 2560, 97, 99, 100, 101, 102, 104, 105, 111, 115, 119, 18145, 18152, 18166, 18171, 18186, 18191, 18196, 18204, 18210, 18216, 99, 117, 116, 101, 59, 32768, 378, 512, 97, 121, 18157, 18163, 114, 111, 110, 59, 32768, 382, 59, 32768, 1079, 111, 116, 59, 32768, 380, 512, 101, 116, 18176, 18182, 116, 114, 102, 59, 32768, 8488, 97, 59, 32768, 950, 114, 59, 32896, 55349, 56631, 99, 121, 59, 32768, 1078, 103, 114, 97, 114, 114, 59, 32768, 8669, 112, 102, 59, 32896, 55349, 56683, 99, 114, 59, 32896, 55349, 56527, 512, 106, 110, 18221, 18224, 59, 32768, 8205, 106, 59, 32768, 8204]); }); unwrapExports(decodeDataHtml); var decodeDataXml = createCommonjsModule(function (module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); // Generated using scripts/write-decode-map.ts // prettier-ignore exports.default = new Uint16Array([1024, 97, 103, 108, 113, 9, 23, 27, 31, 1086, 15, 0, 0, 19, 112, 59, 32768, 38, 111, 115, 59, 32768, 39, 116, 59, 32768, 62, 116, 59, 32768, 60, 117, 111, 116, 59, 32768, 34]); }); unwrapExports(decodeDataXml); var decode_codepoint = createCommonjsModule(function (module, exports) { // Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134 Object.defineProperty(exports, "__esModule", { value: true }); var decodeMap = new Map([ [0, 65533], [128, 8364], [130, 8218], [131, 402], [132, 8222], [133, 8230], [134, 8224], [135, 8225], [136, 710], [137, 8240], [138, 352], [139, 8249], [140, 338], [142, 381], [145, 8216], [146, 8217], [147, 8220], [148, 8221], [149, 8226], [150, 8211], [151, 8212], [152, 732], [153, 8482], [154, 353], [155, 8250], [156, 339], [158, 382], [159, 376], ]); var fromCodePoint = // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins String.fromCodePoint || function (codePoint) { var output = ""; if (codePoint > 0xffff) { codePoint -= 0x10000; output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800); codePoint = 0xdc00 | (codePoint & 0x3ff); } output += String.fromCharCode(codePoint); return output; }; function decodeCodePoint(codePoint) { var _a; if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) { return "\uFFFD"; } return fromCodePoint((_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint); } exports.default = decodeCodePoint; }); unwrapExports(decode_codepoint); var decode = createCommonjsModule(function (module, exports) { var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.decodeXML = exports.decodeHTMLStrict = exports.decodeHTML = exports.determineBranch = exports.JUMP_OFFSET_BASE = exports.BinTrieFlags = exports.xmlDecodeTree = exports.htmlDecodeTree = void 0; var decode_data_html_1 = __importDefault(decodeDataHtml); exports.htmlDecodeTree = decode_data_html_1.default; var decode_data_xml_1 = __importDefault(decodeDataXml); exports.xmlDecodeTree = decode_data_xml_1.default; var decode_codepoint_1 = __importDefault(decode_codepoint); var BinTrieFlags; (function (BinTrieFlags) { BinTrieFlags[BinTrieFlags["HAS_VALUE"] = 32768] = "HAS_VALUE"; BinTrieFlags[BinTrieFlags["BRANCH_LENGTH"] = 32512] = "BRANCH_LENGTH"; BinTrieFlags[BinTrieFlags["MULTI_BYTE"] = 128] = "MULTI_BYTE"; BinTrieFlags[BinTrieFlags["JUMP_TABLE"] = 127] = "JUMP_TABLE"; })(BinTrieFlags = exports.BinTrieFlags || (exports.BinTrieFlags = {})); exports.JUMP_OFFSET_BASE = 48 /* ZERO */ - 1; function getDecoder(decodeTree) { return function decodeHTMLBinary(str, strict) { var ret = ""; var lastIdx = 0; var strIdx = 0; while ((strIdx = str.indexOf("&", strIdx)) >= 0) { ret += str.slice(lastIdx, strIdx); lastIdx = strIdx; // Skip the "&" strIdx += 1; // If we have a numeric entity, handle this separately. if (str.charCodeAt(strIdx) === 35 /* NUM */) { // Skip the leading "&#". For hex entities, also skip the leading "x". var start = strIdx + 1; var base = 10; var cp = str.charCodeAt(start); if ((cp | 32 /* To_LOWER_BIT */) === 120 /* LOWER_X */) { base = 16; strIdx += 1; start += 1; } while (((cp = str.charCodeAt(++strIdx)) >= 48 /* ZERO */ && cp <= 57 /* NINE */) || (base === 16 && (cp | 32 /* To_LOWER_BIT */) >= 97 /* LOWER_A */ && (cp | 32 /* To_LOWER_BIT */) <= 102 /* LOWER_F */)) ; if (start !== strIdx) { var entity = str.substring(start, strIdx); var parsed = parseInt(entity, base); if (str.charCodeAt(strIdx) === 59 /* SEMI */) { strIdx += 1; } else if (strict) { continue; } ret += decode_codepoint_1.default(parsed); lastIdx = strIdx; } continue; } var result = null; var excess = 1; var treeIdx = 0; var current = decodeTree[treeIdx]; for (; strIdx < str.length; strIdx++, excess++) { treeIdx = determineBranch(decodeTree, current, treeIdx + 1, str.charCodeAt(strIdx)); if (treeIdx < 0) break; current = decodeTree[treeIdx]; // If the branch is a value, store it and continue if (current & BinTrieFlags.HAS_VALUE) { // If we have a legacy entity while parsing strictly, just skip the number of bytes if (strict && str.charCodeAt(strIdx) !== 59 /* SEMI */) { // No need to consider multi-byte values, as the legacy entity is always a single byte treeIdx += 1; } else { // If this is a surrogate pair, combine the higher bits from the node with the next byte result = current & BinTrieFlags.MULTI_BYTE ? String.fromCharCode(decodeTree[++treeIdx], decodeTree[++treeIdx]) : String.fromCharCode(decodeTree[++treeIdx]); excess = 0; } } } if (result != null) { ret += result; lastIdx = strIdx - excess + 1; } } return ret + str.slice(lastIdx); }; } function determineBranch(decodeTree, current, nodeIdx, char) { if (current <= 128) { return char === current ? nodeIdx : -1; } var branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 8; if (branchCount === 0) { return -1; } if (branchCount === 1) { return char === decodeTree[nodeIdx] ? nodeIdx + 1 : -1; } var jumpOffset = current & BinTrieFlags.JUMP_TABLE; if (jumpOffset) { var value = char - exports.JUMP_OFFSET_BASE - jumpOffset; return value < 0 || value > branchCount ? -1 : decodeTree[nodeIdx + value] - 1; } // Binary search for the character. var lo = nodeIdx; var hi = lo + branchCount - 1; while (lo <= hi) { var mid = (lo + hi) >>> 1; var midVal = decodeTree[mid]; if (midVal < char) { lo = mid + 1; } else if (midVal > char) { hi = mid - 1; } else { return decodeTree[mid + branchCount]; } } return -1; } exports.determineBranch = determineBranch; var htmlDecoder = getDecoder(decode_data_html_1.default); var xmlDecoder = getDecoder(decode_data_xml_1.default); function decodeHTML(str) { return htmlDecoder(str, false); } exports.decodeHTML = decodeHTML; function decodeHTMLStrict(str) { return htmlDecoder(str, true); } exports.decodeHTMLStrict = decodeHTMLStrict; function decodeXML(str) { return xmlDecoder(str, true); } exports.decodeXML = decodeXML; }); unwrapExports(decode); var decode_1 = decode.decodeXML; var decode_2 = decode.decodeHTMLStrict; var decode_3 = decode.decodeHTML; var decode_4 = decode.determineBranch; var decode_5 = decode.JUMP_OFFSET_BASE; var decode_6 = decode.BinTrieFlags; var decode_7 = decode.xmlDecodeTree; var decode_8 = decode.htmlDecodeTree; var amp = "&"; var apos = "'"; var gt = ">"; var lt = "<"; var quot = "\""; var xml = { amp: amp, apos: apos, gt: gt, lt: lt, quot: quot }; var xml$1 = /*#__PURE__*/Object.freeze({ __proto__: null, amp: amp, apos: apos, gt: gt, lt: lt, quot: quot, 'default': xml }); var Aacute = "Á"; var aacute = "á"; var Abreve = "Ă"; var abreve = "ă"; var ac = "∾"; var acd = "∿"; var acE = "∾̳"; var Acirc = "Â"; var acirc = "â"; var acute = "´"; var Acy = "А"; var acy = "а"; var AElig = "Æ"; var aelig = "æ"; var af = "⁡"; var Afr = "𝔄"; var afr = "𝔞"; var Agrave = "À"; var agrave = "à"; var alefsym = "ℵ"; var aleph = "ℵ"; var Alpha = "Α"; var alpha = "α"; var Amacr = "Ā"; var amacr = "ā"; var amalg = "⨿"; var amp$1 = "&"; var AMP = "&"; var andand = "⩕"; var And = "⩓"; var and = "∧"; var andd = "⩜"; var andslope = "⩘"; var andv = "⩚"; var ang = "∠"; var ange = "⦤"; var angle = "∠"; var angmsdaa = "⦨"; var angmsdab = "⦩"; var angmsdac = "⦪"; var angmsdad = "⦫"; var angmsdae = "⦬"; var angmsdaf = "⦭"; var angmsdag = "⦮"; var angmsdah = "⦯"; var angmsd = "∡"; var angrt = "∟"; var angrtvb = "⊾"; var angrtvbd = "⦝"; var angsph = "∢"; var angst = "Å"; var angzarr = "⍼"; var Aogon = "Ą"; var aogon = "ą"; var Aopf = "𝔸"; var aopf = "𝕒"; var apacir = "⩯"; var ap = "≈"; var apE = "⩰"; var ape = "≊"; var apid = "≋"; var apos$1 = "'"; var ApplyFunction = "⁡"; var approx = "≈"; var approxeq = "≊"; var Aring = "Å"; var aring = "å"; var Ascr = "𝒜"; var ascr = "𝒶"; var Assign = "≔"; var ast = "*"; var asymp = "≈"; var asympeq = "≍"; var Atilde = "Ã"; var atilde = "ã"; var Auml = "Ä"; var auml = "ä"; var awconint = "∳"; var awint = "⨑"; var backcong = "≌"; var backepsilon = "϶"; var backprime = "‵"; var backsim = "∽"; var backsimeq = "⋍"; var Backslash = "∖"; var Barv = "⫧"; var barvee = "⊽"; var barwed = "⌅"; var Barwed = "⌆"; var barwedge = "⌅"; var bbrk = "⎵"; var bbrktbrk = "⎶"; var bcong = "≌"; var Bcy = "Б"; var bcy = "б"; var bdquo = "„"; var becaus = "∵"; var because = "∵"; var Because = "∵"; var bemptyv = "⦰"; var bepsi = "϶"; var bernou = "ℬ"; var Bernoullis = "ℬ"; var Beta = "Β"; var beta = "β"; var beth = "ℶ"; var between = "≬"; var Bfr = "𝔅"; var bfr = "𝔟"; var bigcap = "⋂"; var bigcirc = "◯"; var bigcup = "⋃"; var bigodot = "⨀"; var bigoplus = "⨁"; var bigotimes = "⨂"; var bigsqcup = "⨆"; var bigstar = "★"; var bigtriangledown = "▽"; var bigtriangleup = "△"; var biguplus = "⨄"; var bigvee = "⋁"; var bigwedge = "⋀"; var bkarow = "⤍"; var blacklozenge = "⧫"; var blacksquare = "▪"; var blacktriangle = "▴"; var blacktriangledown = "▾"; var blacktriangleleft = "◂"; var blacktriangleright = "▸"; var blank = "␣"; var blk12 = "▒"; var blk14 = "░"; var blk34 = "▓"; var block = "█"; var bne = "=⃥"; var bnequiv = "≡⃥"; var bNot = "⫭"; var bnot = "⌐"; var Bopf = "𝔹"; var bopf = "𝕓"; var bot = "⊥"; var bottom = "⊥"; var bowtie = "⋈"; var boxbox = "⧉"; var boxdl = "┐"; var boxdL = "╕"; var boxDl = "╖"; var boxDL = "╗"; var boxdr = "┌"; var boxdR = "╒"; var boxDr = "╓"; var boxDR = "╔"; var boxh = "─"; var boxH = "═"; var boxhd = "┬"; var boxHd = "╤"; var boxhD = "╥"; var boxHD = "╦"; var boxhu = "┴"; var boxHu = "╧"; var boxhU = "╨"; var boxHU = "╩"; var boxminus = "⊟"; var boxplus = "⊞"; var boxtimes = "⊠"; var boxul = "┘"; var boxuL = "╛"; var boxUl = "╜"; var boxUL = "╝"; var boxur = "└"; var boxuR = "╘"; var boxUr = "╙"; var boxUR = "╚"; var boxv = "│"; var boxV = "║"; var boxvh = "┼"; var boxvH = "╪"; var boxVh = "╫"; var boxVH = "╬"; var boxvl = "┤"; var boxvL = "╡"; var boxVl = "╢"; var boxVL = "╣"; var boxvr = "├"; var boxvR = "╞"; var boxVr = "╟"; var boxVR = "╠"; var bprime = "‵"; var breve = "˘"; var Breve = "˘"; var brvbar = "¦"; var bscr = "𝒷"; var Bscr = "ℬ"; var bsemi = "⁏"; var bsim = "∽"; var bsime = "⋍"; var bsolb = "⧅"; var bsol = "\\"; var bsolhsub = "⟈"; var bull = "•"; var bullet = "•"; var bump = "≎"; var bumpE = "⪮"; var bumpe = "≏"; var Bumpeq = "≎"; var bumpeq = "≏"; var Cacute = "Ć"; var cacute = "ć"; var capand = "⩄"; var capbrcup = "⩉"; var capcap = "⩋"; var cap = "∩"; var Cap = "⋒"; var capcup = "⩇"; var capdot = "⩀"; var CapitalDifferentialD = "ⅅ"; var caps = "∩︀"; var caret = "⁁"; var caron = "ˇ"; var Cayleys = "ℭ"; var ccaps = "⩍"; var Ccaron = "Č"; var ccaron = "č"; var Ccedil = "Ç"; var ccedil = "ç"; var Ccirc = "Ĉ"; var ccirc = "ĉ"; var Cconint = "∰"; var ccups = "⩌"; var ccupssm = "⩐"; var Cdot = "Ċ"; var cdot = "ċ"; var cedil = "¸"; var Cedilla = "¸"; var cemptyv = "⦲"; var cent = "¢"; var centerdot = "·"; var CenterDot = "·"; var cfr = "𝔠"; var Cfr = "ℭ"; var CHcy = "Ч"; var chcy = "ч"; var check = "✓"; var checkmark = "✓"; var Chi = "Χ"; var chi = "χ"; var circ = "ˆ"; var circeq = "≗"; var circlearrowleft = "↺"; var circlearrowright = "↻"; var circledast = "⊛"; var circledcirc = "⊚"; var circleddash = "⊝"; var CircleDot = "⊙"; var circledR = "®"; var circledS = "Ⓢ"; var CircleMinus = "⊖"; var CirclePlus = "⊕"; var CircleTimes = "⊗"; var cir = "○"; var cirE = "⧃"; var cire = "≗"; var cirfnint = "⨐"; var cirmid = "⫯"; var cirscir = "⧂"; var ClockwiseContourIntegral = "∲"; var CloseCurlyDoubleQuote = "”"; var CloseCurlyQuote = "’"; var clubs = "♣"; var clubsuit = "♣"; var colon = ":"; var Colon = "∷"; var Colone = "⩴"; var colone = "≔"; var coloneq = "≔"; var comma = ","; var commat = "@"; var comp = "∁"; var compfn = "∘"; var complement = "∁"; var complexes = "ℂ"; var cong = "≅"; var congdot = "⩭"; var Congruent = "≡"; var conint = "∮"; var Conint = "∯"; var ContourIntegral = "∮"; var copf = "𝕔"; var Copf = "ℂ"; var coprod = "∐"; var Coproduct = "∐"; var copy = "©"; var COPY = "©"; var copysr = "℗"; var CounterClockwiseContourIntegral = "∳"; var crarr = "↵"; var cross = "✗"; var Cross = "⨯"; var Cscr = "𝒞"; var cscr = "𝒸"; var csub = "⫏"; var csube = "⫑"; var csup = "⫐"; var csupe = "⫒"; var ctdot = "⋯"; var cudarrl = "⤸"; var cudarrr = "⤵"; var cuepr = "⋞"; var cuesc = "⋟"; var cularr = "↶"; var cularrp = "⤽"; var cupbrcap = "⩈"; var cupcap = "⩆"; var CupCap = "≍"; var cup = "∪"; var Cup = "⋓"; var cupcup = "⩊"; var cupdot = "⊍"; var cupor = "⩅"; var cups = "∪︀"; var curarr = "↷"; var curarrm = "⤼"; var curlyeqprec = "⋞"; var curlyeqsucc = "⋟"; var curlyvee = "⋎"; var curlywedge = "⋏"; var curren = "¤"; var curvearrowleft = "↶"; var curvearrowright = "↷"; var cuvee = "⋎"; var cuwed = "⋏"; var cwconint = "∲"; var cwint = "∱"; var cylcty = "⌭"; var dagger = "†"; var Dagger = "‡"; var daleth = "ℸ"; var darr = "↓"; var Darr = "↡"; var dArr = "⇓"; var dash = "‐"; var Dashv = "⫤"; var dashv = "⊣"; var dbkarow = "⤏"; var dblac = "˝"; var Dcaron = "Ď"; var dcaron = "ď"; var Dcy = "Д"; var dcy = "д"; var ddagger = "‡"; var ddarr = "⇊"; var DD = "ⅅ"; var dd = "ⅆ"; var DDotrahd = "⤑"; var ddotseq = "⩷"; var deg = "°"; var Del = "∇"; var Delta = "Δ"; var delta = "δ"; var demptyv = "⦱"; var dfisht = "⥿"; var Dfr = "𝔇"; var dfr = "𝔡"; var dHar = "⥥"; var dharl = "⇃"; var dharr = "⇂"; var DiacriticalAcute = "´"; var DiacriticalDot = "˙"; var DiacriticalDoubleAcute = "˝"; var DiacriticalGrave = "`"; var DiacriticalTilde = "˜"; var diam = "⋄"; var diamond = "⋄"; var Diamond = "⋄"; var diamondsuit = "♦"; var diams = "♦"; var die = "¨"; var DifferentialD = "ⅆ"; var digamma = "ϝ"; var disin = "⋲"; var div = "÷"; var divide = "÷"; var divideontimes = "⋇"; var divonx = "⋇"; var DJcy = "Ђ"; var djcy = "ђ"; var dlcorn = "⌞"; var dlcrop = "⌍"; var dollar = "$"; var Dopf = "𝔻"; var dopf = "𝕕"; var Dot = "¨"; var dot = "˙"; var DotDot = "⃜"; var doteq = "≐"; var doteqdot = "≑"; var DotEqual = "≐"; var dotminus = "∸"; var dotplus = "∔"; var dotsquare = "⊡"; var doublebarwedge = "⌆"; var DoubleContourIntegral = "∯"; var DoubleDot = "¨"; var DoubleDownArrow = "⇓"; var DoubleLeftArrow = "⇐"; var DoubleLeftRightArrow = "⇔"; var DoubleLeftTee = "⫤"; var DoubleLongLeftArrow = "⟸"; var DoubleLongLeftRightArrow = "⟺"; var DoubleLongRightArrow = "⟹"; var DoubleRightArrow = "⇒"; var DoubleRightTee = "⊨"; var DoubleUpArrow = "⇑"; var DoubleUpDownArrow = "⇕"; var DoubleVerticalBar = "∥"; var DownArrowBar = "⤓"; var downarrow = "↓"; var DownArrow = "↓"; var Downarrow = "⇓"; var DownArrowUpArrow = "⇵"; var DownBreve = "̑"; var downdownarrows = "⇊"; var downharpoonleft = "⇃"; var downharpoonright = "⇂"; var DownLeftRightVector = "⥐"; var DownLeftTeeVector = "⥞"; var DownLeftVectorBar = "⥖"; var DownLeftVector = "↽"; var DownRightTeeVector = "⥟"; var DownRightVectorBar = "⥗"; var DownRightVector = "⇁"; var DownTeeArrow = "↧"; var DownTee = "⊤"; var drbkarow = "⤐"; var drcorn = "⌟"; var drcrop = "⌌"; var Dscr = "𝒟"; var dscr = "𝒹"; var DScy = "Ѕ"; var dscy = "ѕ"; var dsol = "⧶"; var Dstrok = "Đ"; var dstrok = "đ"; var dtdot = "⋱"; var dtri = "▿"; var dtrif = "▾"; var duarr = "⇵"; var duhar = "⥯"; var dwangle = "⦦"; var DZcy = "Џ"; var dzcy = "џ"; var dzigrarr = "⟿"; var Eacute = "É"; var eacute = "é"; var easter = "⩮"; var Ecaron = "Ě"; var ecaron = "ě"; var Ecirc = "Ê"; var ecirc = "ê"; var ecir = "≖"; var ecolon = "≕"; var Ecy = "Э"; var ecy = "э"; var eDDot = "⩷"; var Edot = "Ė"; var edot = "ė"; var eDot = "≑"; var ee = "ⅇ"; var efDot = "≒"; var Efr = "𝔈"; var efr = "𝔢"; var eg = "⪚"; var Egrave = "È"; var egrave = "è"; var egs = "⪖"; var egsdot = "⪘"; var el = "⪙"; var Element = "∈"; var elinters = "⏧"; var ell = "ℓ"; var els = "⪕"; var elsdot = "⪗"; var Emacr = "Ē"; var emacr = "ē"; var empty = "∅"; var emptyset = "∅"; var EmptySmallSquare = "◻"; var emptyv = "∅"; var EmptyVerySmallSquare = "▫"; var emsp13 = " "; var emsp14 = " "; var emsp = " "; var ENG = "Ŋ"; var eng = "ŋ"; var ensp = " "; var Eogon = "Ę"; var eogon = "ę"; var Eopf = "𝔼"; var eopf = "𝕖"; var epar = "⋕"; var eparsl = "⧣"; var eplus = "⩱"; var epsi = "ε"; var Epsilon = "Ε"; var epsilon = "ε"; var epsiv = "ϵ"; var eqcirc = "≖"; var eqcolon = "≕"; var eqsim = "≂"; var eqslantgtr = "⪖"; var eqslantless = "⪕"; var Equal = "⩵"; var equals = "="; var EqualTilde = "≂"; var equest = "≟"; var Equilibrium = "⇌"; var equiv = "≡"; var equivDD = "⩸"; var eqvparsl = "⧥"; var erarr = "⥱"; var erDot = "≓"; var escr = "ℯ"; var Escr = "ℰ"; var esdot = "≐"; var Esim = "⩳"; var esim = "≂"; var Eta = "Η"; var eta = "η"; var ETH = "Ð"; var eth = "ð"; var Euml = "Ë"; var euml = "ë"; var euro = "€"; var excl = "!"; var exist = "∃"; var Exists = "∃"; var expectation = "ℰ"; var exponentiale = "ⅇ"; var ExponentialE = "ⅇ"; var fallingdotseq = "≒"; var Fcy = "Ф"; var fcy = "ф"; var female = "♀"; var ffilig = "ffi"; var fflig = "ff"; var ffllig = "ffl"; var Ffr = "𝔉"; var ffr = "𝔣"; var filig = "fi"; var FilledSmallSquare = "◼"; var FilledVerySmallSquare = "▪"; var fjlig = "fj"; var flat = "♭"; var fllig = "fl"; var fltns = "▱"; var fnof = "ƒ"; var Fopf = "𝔽"; var fopf = "𝕗"; var forall = "∀"; var ForAll = "∀"; var fork = "⋔"; var forkv = "⫙"; var Fouriertrf = "ℱ"; var fpartint = "⨍"; var frac12 = "½"; var frac13 = "⅓"; var frac14 = "¼"; var frac15 = "⅕"; var frac16 = "⅙"; var frac18 = "⅛"; var frac23 = "⅔"; var frac25 = "⅖"; var frac34 = "¾"; var frac35 = "⅗"; var frac38 = "⅜"; var frac45 = "⅘"; var frac56 = "⅚"; var frac58 = "⅝"; var frac78 = "⅞"; var frasl = "⁄"; var frown = "⌢"; var fscr = "𝒻"; var Fscr = "ℱ"; var gacute = "ǵ"; var Gamma = "Γ"; var gamma = "γ"; var Gammad = "Ϝ"; var gammad = "ϝ"; var gap = "⪆"; var Gbreve = "Ğ"; var gbreve = "ğ"; var Gcedil = "Ģ"; var Gcirc = "Ĝ"; var gcirc = "ĝ"; var Gcy = "Г"; var gcy = "г"; var Gdot = "Ġ"; var gdot = "ġ"; var ge = "≥"; var gE = "≧"; var gEl = "⪌"; var gel = "⋛"; var geq = "≥"; var geqq = "≧"; var geqslant = "⩾"; var gescc = "⪩"; var ges = "⩾"; var gesdot = "⪀"; var gesdoto = "⪂"; var gesdotol = "⪄"; var gesl = "⋛︀"; var gesles = "⪔"; var Gfr = "𝔊"; var gfr = "𝔤"; var gg = "≫"; var Gg = "⋙"; var ggg = "⋙"; var gimel = "ℷ"; var GJcy = "Ѓ"; var gjcy = "ѓ"; var gla = "⪥"; var gl = "≷"; var glE = "⪒"; var glj = "⪤"; var gnap = "⪊"; var gnapprox = "⪊"; var gne = "⪈"; var gnE = "≩"; var gneq = "⪈"; var gneqq = "≩"; var gnsim = "⋧"; var Gopf = "𝔾"; var gopf = "𝕘"; var grave = "`"; var GreaterEqual = "≥"; var GreaterEqualLess = "⋛"; var GreaterFullEqual = "≧"; var GreaterGreater = "⪢"; var GreaterLess = "≷"; var GreaterSlantEqual = "⩾"; var GreaterTilde = "≳"; var Gscr = "𝒢"; var gscr = "ℊ"; var gsim = "≳"; var gsime = "⪎"; var gsiml = "⪐"; var gtcc = "⪧"; var gtcir = "⩺"; var gt$1 = ">"; var GT = ">"; var Gt = "≫"; var gtdot = "⋗"; var gtlPar = "⦕"; var gtquest = "⩼"; var gtrapprox = "⪆"; var gtrarr = "⥸"; var gtrdot = "⋗"; var gtreqless = "⋛"; var gtreqqless = "⪌"; var gtrless = "≷"; var gtrsim = "≳"; var gvertneqq = "≩︀"; var gvnE = "≩︀"; var Hacek = "ˇ"; var hairsp = " "; var half = "½"; var hamilt = "ℋ"; var HARDcy = "Ъ"; var hardcy = "ъ"; var harrcir = "⥈"; var harr = "↔"; var hArr = "⇔"; var harrw = "↭"; var Hat = "^"; var hbar = "ℏ"; var Hcirc = "Ĥ"; var hcirc = "ĥ"; var hearts = "♥"; var heartsuit = "♥"; var hellip = "…"; var hercon = "⊹"; var hfr = "𝔥"; var Hfr = "ℌ"; var HilbertSpace = "ℋ"; var hksearow = "⤥"; var hkswarow = "⤦"; var hoarr = "⇿"; var homtht = "∻"; var hookleftarrow = "↩"; var hookrightarrow = "↪"; var hopf = "𝕙"; var Hopf = "ℍ"; var horbar = "―"; var HorizontalLine = "─"; var hscr = "𝒽"; var Hscr = "ℋ"; var hslash = "ℏ"; var Hstrok = "Ħ"; var hstrok = "ħ"; var HumpDownHump = "≎"; var HumpEqual = "≏"; var hybull = "⁃"; var hyphen = "‐"; var Iacute = "Í"; var iacute = "í"; var ic = "⁣"; var Icirc = "Î"; var icirc = "î"; var Icy = "И"; var icy = "и"; var Idot = "İ"; var IEcy = "Е"; var iecy = "е"; var iexcl = "¡"; var iff = "⇔"; var ifr = "𝔦"; var Ifr = "ℑ"; var Igrave = "Ì"; var igrave = "ì"; var ii = "ⅈ"; var iiiint = "⨌"; var iiint = "∭"; var iinfin = "⧜"; var iiota = "℩"; var IJlig = "IJ"; var ijlig = "ij"; var Imacr = "Ī"; var imacr = "ī"; var image = "ℑ"; var ImaginaryI = "ⅈ"; var imagline = "ℐ"; var imagpart = "ℑ"; var imath = "ı"; var Im = "ℑ"; var imof = "⊷"; var imped = "Ƶ"; var Implies = "⇒"; var incare = "℅"; var infin = "∞"; var infintie = "⧝"; var inodot = "ı"; var intcal = "⊺"; var int = "∫"; var Int = "∬"; var integers = "ℤ"; var Integral = "∫"; var intercal = "⊺"; var Intersection = "⋂"; var intlarhk = "⨗"; var intprod = "⨼"; var InvisibleComma = "⁣"; var InvisibleTimes = "⁢"; var IOcy = "Ё"; var iocy = "ё"; var Iogon = "Į"; var iogon = "į"; var Iopf = "𝕀"; var iopf = "𝕚"; var Iota = "Ι"; var iota = "ι"; var iprod = "⨼"; var iquest = "¿"; var iscr = "𝒾"; var Iscr = "ℐ"; var isin = "∈"; var isindot = "⋵"; var isinE = "⋹"; var isins = "⋴"; var isinsv = "⋳"; var isinv = "∈"; var it = "⁢"; var Itilde = "Ĩ"; var itilde = "ĩ"; var Iukcy = "І"; var iukcy = "і"; var Iuml = "Ï"; var iuml = "ï"; var Jcirc = "Ĵ"; var jcirc = "ĵ"; var Jcy = "Й"; var jcy = "й"; var Jfr = "𝔍"; var jfr = "𝔧"; var jmath = "ȷ"; var Jopf = "𝕁"; var jopf = "𝕛"; var Jscr = "𝒥"; var jscr = "𝒿"; var Jsercy = "Ј"; var jsercy = "ј"; var Jukcy = "Є"; var jukcy = "є"; var Kappa = "Κ"; var kappa = "κ"; var kappav = "ϰ"; var Kcedil = "Ķ"; var kcedil = "ķ"; var Kcy = "К"; var kcy = "к"; var Kfr = "𝔎"; var kfr = "𝔨"; var kgreen = "ĸ"; var KHcy = "Х"; var khcy = "х"; var KJcy = "Ќ"; var kjcy = "ќ"; var Kopf = "𝕂"; var kopf = "𝕜"; var Kscr = "𝒦"; var kscr = "𝓀"; var lAarr = "⇚"; var Lacute = "Ĺ"; var lacute = "ĺ"; var laemptyv = "⦴"; var lagran = "ℒ"; var Lambda = "Λ"; var lambda = "λ"; var lang = "⟨"; var Lang = "⟪"; var langd = "⦑"; var langle = "⟨"; var lap = "⪅"; var Laplacetrf = "ℒ"; var laquo = "«"; var larrb = "⇤"; var larrbfs = "⤟"; var larr = "←"; var Larr = "↞"; var lArr = "⇐"; var larrfs = "⤝"; var larrhk = "↩"; var larrlp = "↫"; var larrpl = "⤹"; var larrsim = "⥳"; var larrtl = "↢"; var latail = "⤙"; var lAtail = "⤛"; var lat = "⪫"; var late = "⪭"; var lates = "⪭︀"; var lbarr = "⤌"; var lBarr = "⤎"; var lbbrk = "❲"; var lbrace = "{"; var lbrack = "["; var lbrke = "⦋"; var lbrksld = "⦏"; var lbrkslu = "⦍"; var Lcaron = "Ľ"; var lcaron = "ľ"; var Lcedil = "Ļ"; var lcedil = "ļ"; var lceil = "⌈"; var lcub = "{"; var Lcy = "Л"; var lcy = "л"; var ldca = "⤶"; var ldquo = "“"; var ldquor = "„"; var ldrdhar = "⥧"; var ldrushar = "⥋"; var ldsh = "↲"; var le = "≤"; var lE = "≦"; var LeftAngleBracket = "⟨"; var LeftArrowBar = "⇤"; var leftarrow = "←"; var LeftArrow = "←"; var Leftarrow = "⇐"; var LeftArrowRightArrow = "⇆"; var leftarrowtail = "↢"; var LeftCeiling = "⌈"; var LeftDoubleBracket = "⟦"; var LeftDownTeeVector = "⥡"; var LeftDownVectorBar = "⥙"; var LeftDownVector = "⇃"; var LeftFloor = "⌊"; var leftharpoondown = "↽"; var leftharpoonup = "↼"; var leftleftarrows = "⇇"; var leftrightarrow = "↔"; var LeftRightArrow = "↔"; var Leftrightarrow = "⇔"; var leftrightarrows = "⇆"; var leftrightharpoons = "⇋"; var leftrightsquigarrow = "↭"; var LeftRightVector = "⥎"; var LeftTeeArrow = "↤"; var LeftTee = "⊣"; var LeftTeeVector = "⥚"; var leftthreetimes = "⋋"; var LeftTriangleBar = "⧏"; var LeftTriangle = "⊲"; var LeftTriangleEqual = "⊴"; var LeftUpDownVector = "⥑"; var LeftUpTeeVector = "⥠"; var LeftUpVectorBar = "⥘"; var LeftUpVector = "↿"; var LeftVectorBar = "⥒"; var LeftVector = "↼"; var lEg = "⪋"; var leg = "⋚"; var leq = "≤"; var leqq = "≦"; var leqslant = "⩽"; var lescc = "⪨"; var les = "⩽"; var lesdot = "⩿"; var lesdoto = "⪁"; var lesdotor = "⪃"; var lesg = "⋚︀"; var lesges = "⪓"; var lessapprox = "⪅"; var lessdot = "⋖"; var lesseqgtr = "⋚"; var lesseqqgtr = "⪋"; var LessEqualGreater = "⋚"; var LessFullEqual = "≦"; var LessGreater = "≶"; var lessgtr = "≶"; var LessLess = "⪡"; var lesssim = "≲"; var LessSlantEqual = "⩽"; var LessTilde = "≲"; var lfisht = "⥼"; var lfloor = "⌊"; var Lfr = "𝔏"; var lfr = "𝔩"; var lg = "≶"; var lgE = "⪑"; var lHar = "⥢"; var lhard = "↽"; var lharu = "↼"; var lharul = "⥪"; var lhblk = "▄"; var LJcy = "Љ"; var ljcy = "љ"; var llarr = "⇇"; var ll = "≪"; var Ll = "⋘"; var llcorner = "⌞"; var Lleftarrow = "⇚"; var llhard = "⥫"; var lltri = "◺"; var Lmidot = "Ŀ"; var lmidot = "ŀ"; var lmoustache = "⎰"; var lmoust = "⎰"; var lnap = "⪉"; var lnapprox = "⪉"; var lne = "⪇"; var lnE = "≨"; var lneq = "⪇"; var lneqq = "≨"; var lnsim = "⋦"; var loang = "⟬"; var loarr = "⇽"; var lobrk = "⟦"; var longleftarrow = "⟵"; var LongLeftArrow = "⟵"; var Longleftarrow = "⟸"; var longleftrightarrow = "⟷"; var LongLeftRightArrow = "⟷"; var Longleftrightarrow = "⟺"; var longmapsto = "⟼"; var longrightarrow = "⟶"; var LongRightArrow = "⟶"; var Longrightarrow = "⟹"; var looparrowleft = "↫"; var looparrowright = "↬"; var lopar = "⦅"; var Lopf = "𝕃"; var lopf = "𝕝"; var loplus = "⨭"; var lotimes = "⨴"; var lowast = "∗"; var lowbar = "_"; var LowerLeftArrow = "↙"; var LowerRightArrow = "↘"; var loz = "◊"; var lozenge = "◊"; var lozf = "⧫"; var lpar = "("; var lparlt = "⦓"; var lrarr = "⇆"; var lrcorner = "⌟"; var lrhar = "⇋"; var lrhard = "⥭"; var lrm = "‎"; var lrtri = "⊿"; var lsaquo = "‹"; var lscr = "𝓁"; var Lscr = "ℒ"; var lsh = "↰"; var Lsh = "↰"; var lsim = "≲"; var lsime = "⪍"; var lsimg = "⪏"; var lsqb = "["; var lsquo = "‘"; var lsquor = "‚"; var Lstrok = "Ł"; var lstrok = "ł"; var ltcc = "⪦"; var ltcir = "⩹"; var lt$1 = "<"; var LT = "<"; var Lt = "≪"; var ltdot = "⋖"; var lthree = "⋋"; var ltimes = "⋉"; var ltlarr = "⥶"; var ltquest = "⩻"; var ltri = "◃"; var ltrie = "⊴"; var ltrif = "◂"; var ltrPar = "⦖"; var lurdshar = "⥊"; var luruhar = "⥦"; var lvertneqq = "≨︀"; var lvnE = "≨︀"; var macr = "¯"; var male = "♂"; var malt = "✠"; var maltese = "✠"; var map = "↦"; var mapsto = "↦"; var mapstodown = "↧"; var mapstoleft = "↤"; var mapstoup = "↥"; var marker = "▮"; var mcomma = "⨩"; var Mcy = "М"; var mcy = "м"; var mdash = "—"; var mDDot = "∺"; var measuredangle = "∡"; var MediumSpace = " "; var Mellintrf = "ℳ"; var Mfr = "𝔐"; var mfr = "𝔪"; var mho = "℧"; var micro = "µ"; var midast = "*"; var midcir = "⫰"; var mid = "∣"; var middot = "·"; var minusb = "⊟"; var minus = "−"; var minusd = "∸"; var minusdu = "⨪"; var MinusPlus = "∓"; var mlcp = "⫛"; var mldr = "…"; var mnplus = "∓"; var models = "⊧"; var Mopf = "𝕄"; var mopf = "𝕞"; var mp = "∓"; var mscr = "𝓂"; var Mscr = "ℳ"; var mstpos = "∾"; var Mu = "Μ"; var mu = "μ"; var multimap = "⊸"; var mumap = "⊸"; var nabla = "∇"; var Nacute = "Ń"; var nacute = "ń"; var nang = "∠⃒"; var nap = "≉"; var napE = "⩰̸"; var napid = "≋̸"; var napos = "ʼn"; var napprox = "≉"; var natural = "♮"; var naturals = "ℕ"; var natur = "♮"; var nbsp = " "; var nbump = "≎̸"; var nbumpe = "≏̸"; var ncap = "⩃"; var Ncaron = "Ň"; var ncaron = "ň"; var Ncedil = "Ņ"; var ncedil = "ņ"; var ncong = "≇"; var ncongdot = "⩭̸"; var ncup = "⩂"; var Ncy = "Н"; var ncy = "н"; var ndash = "–"; var nearhk = "⤤"; var nearr = "↗"; var neArr = "⇗"; var nearrow = "↗"; var ne = "≠"; var nedot = "≐̸"; var NegativeMediumSpace = "​"; var NegativeThickSpace = "​"; var NegativeThinSpace = "​"; var NegativeVeryThinSpace = "​"; var nequiv = "≢"; var nesear = "⤨"; var nesim = "≂̸"; var NestedGreaterGreater = "≫"; var NestedLessLess = "≪"; var NewLine = "\n"; var nexist = "∄"; var nexists = "∄"; var Nfr = "𝔑"; var nfr = "𝔫"; var ngE = "≧̸"; var nge = "≱"; var ngeq = "≱"; var ngeqq = "≧̸"; var ngeqslant = "⩾̸"; var nges = "⩾̸"; var nGg = "⋙̸"; var ngsim = "≵"; var nGt = "≫⃒"; var ngt = "≯"; var ngtr = "≯"; var nGtv = "≫̸"; var nharr = "↮"; var nhArr = "⇎"; var nhpar = "⫲"; var ni = "∋"; var nis = "⋼"; var nisd = "⋺"; var niv = "∋"; var NJcy = "Њ"; var njcy = "њ"; var nlarr = "↚"; var nlArr = "⇍"; var nldr = "‥"; var nlE = "≦̸"; var nle = "≰"; var nleftarrow = "↚"; var nLeftarrow = "⇍"; var nleftrightarrow = "↮"; var nLeftrightarrow = "⇎"; var nleq = "≰"; var nleqq = "≦̸"; var nleqslant = "⩽̸"; var nles = "⩽̸"; var nless = "≮"; var nLl = "⋘̸"; var nlsim = "≴"; var nLt = "≪⃒"; var nlt = "≮"; var nltri = "⋪"; var nltrie = "⋬"; var nLtv = "≪̸"; var nmid = "∤"; var NoBreak = "⁠"; var NonBreakingSpace = " "; var nopf = "𝕟"; var Nopf = "ℕ"; var Not = "⫬"; var not = "¬"; var NotCongruent = "≢"; var NotCupCap = "≭"; var NotDoubleVerticalBar = "∦"; var NotElement = "∉"; var NotEqual = "≠"; var NotEqualTilde = "≂̸"; var NotExists = "∄"; var NotGreater = "≯"; var NotGreaterEqual = "≱"; var NotGreaterFullEqual = "≧̸"; var NotGreaterGreater = "≫̸"; var NotGreaterLess = "≹"; var NotGreaterSlantEqual = "⩾̸"; var NotGreaterTilde = "≵"; var NotHumpDownHump = "≎̸"; var NotHumpEqual = "≏̸"; var notin = "∉"; var notindot = "⋵̸"; var notinE = "⋹̸"; var notinva = "∉"; var notinvb = "⋷"; var notinvc = "⋶"; var NotLeftTriangleBar = "⧏̸"; var NotLeftTriangle = "⋪"; var NotLeftTriangleEqual = "⋬"; var NotLess = "≮"; var NotLessEqual = "≰"; var NotLessGreater = "≸"; var NotLessLess = "≪̸"; var NotLessSlantEqual = "⩽̸"; var NotLessTilde = "≴"; var NotNestedGreaterGreater = "⪢̸"; var NotNestedLessLess = "⪡̸"; var notni = "∌"; var notniva = "∌"; var notnivb = "⋾"; var notnivc = "⋽"; var NotPrecedes = "⊀"; var NotPrecedesEqual = "⪯̸"; var NotPrecedesSlantEqual = "⋠"; var NotReverseElement = "∌"; var NotRightTriangleBar = "⧐̸"; var NotRightTriangle = "⋫"; var NotRightTriangleEqual = "⋭"; var NotSquareSubset = "⊏̸"; var NotSquareSubsetEqual = "⋢"; var NotSquareSuperset = "⊐̸"; var NotSquareSupersetEqual = "⋣"; var NotSubset = "⊂⃒"; var NotSubsetEqual = "⊈"; var NotSucceeds = "⊁"; var NotSucceedsEqual = "⪰̸"; var NotSucceedsSlantEqual = "⋡"; var NotSucceedsTilde = "≿̸"; var NotSuperset = "⊃⃒"; var NotSupersetEqual = "⊉"; var NotTilde = "≁"; var NotTildeEqual = "≄"; var NotTildeFullEqual = "≇"; var NotTildeTilde = "≉"; var NotVerticalBar = "∤"; var nparallel = "∦"; var npar = "∦"; var nparsl = "⫽⃥"; var npart = "∂̸"; var npolint = "⨔"; var npr = "⊀"; var nprcue = "⋠"; var nprec = "⊀"; var npreceq = "⪯̸"; var npre = "⪯̸"; var nrarrc = "⤳̸"; var nrarr = "↛"; var nrArr = "⇏"; var nrarrw = "↝̸"; var nrightarrow = "↛"; var nRightarrow = "⇏"; var nrtri = "⋫"; var nrtrie = "⋭"; var nsc = "⊁"; var nsccue = "⋡"; var nsce = "⪰̸"; var Nscr = "𝒩"; var nscr = "𝓃"; var nshortmid = "∤"; var nshortparallel = "∦"; var nsim = "≁"; var nsime = "≄"; var nsimeq = "≄"; var nsmid = "∤"; var nspar = "∦"; var nsqsube = "⋢"; var nsqsupe = "⋣"; var nsub = "⊄"; var nsubE = "⫅̸"; var nsube = "⊈"; var nsubset = "⊂⃒"; var nsubseteq = "⊈"; var nsubseteqq = "⫅̸"; var nsucc = "⊁"; var nsucceq = "⪰̸"; var nsup = "⊅"; var nsupE = "⫆̸"; var nsupe = "⊉"; var nsupset = "⊃⃒"; var nsupseteq = "⊉"; var nsupseteqq = "⫆̸"; var ntgl = "≹"; var Ntilde = "Ñ"; var ntilde = "ñ"; var ntlg = "≸"; var ntriangleleft = "⋪"; var ntrianglelefteq = "⋬"; var ntriangleright = "⋫"; var ntrianglerighteq = "⋭"; var Nu = "Ν"; var nu = "ν"; var num = "#"; var numero = "№"; var numsp = " "; var nvap = "≍⃒"; var nvdash = "⊬"; var nvDash = "⊭"; var nVdash = "⊮"; var nVDash = "⊯"; var nvge = "≥⃒"; var nvgt = ">⃒"; var nvHarr = "⤄"; var nvinfin = "⧞"; var nvlArr = "⤂"; var nvle = "≤⃒"; var nvlt = "<⃒"; var nvltrie = "⊴⃒"; var nvrArr = "⤃"; var nvrtrie = "⊵⃒"; var nvsim = "∼⃒"; var nwarhk = "⤣"; var nwarr = "↖"; var nwArr = "⇖"; var nwarrow = "↖"; var nwnear = "⤧"; var Oacute = "Ó"; var oacute = "ó"; var oast = "⊛"; var Ocirc = "Ô"; var ocirc = "ô"; var ocir = "⊚"; var Ocy = "О"; var ocy = "о"; var odash = "⊝"; var Odblac = "Ő"; var odblac = "ő"; var odiv = "⨸"; var odot = "⊙"; var odsold = "⦼"; var OElig = "Œ"; var oelig = "œ"; var ofcir = "⦿"; var Ofr = "𝔒"; var ofr = "𝔬"; var ogon = "˛"; var Ograve = "Ò"; var ograve = "ò"; var ogt = "⧁"; var ohbar = "⦵"; var ohm = "Ω"; var oint = "∮"; var olarr = "↺"; var olcir = "⦾"; var olcross = "⦻"; var oline = "‾"; var olt = "⧀"; var Omacr = "Ō"; var omacr = "ō"; var Omega = "Ω"; var omega = "ω"; var Omicron = "Ο"; var omicron = "ο"; var omid = "⦶"; var ominus = "⊖"; var Oopf = "𝕆"; var oopf = "𝕠"; var opar = "⦷"; var OpenCurlyDoubleQuote = "“"; var OpenCurlyQuote = "‘"; var operp = "⦹"; var oplus = "⊕"; var orarr = "↻"; var Or = "⩔"; var or = "∨"; var ord = "⩝"; var order = "ℴ"; var orderof = "ℴ"; var ordf = "ª"; var ordm = "º"; var origof = "⊶"; var oror = "⩖"; var orslope = "⩗"; var orv = "⩛"; var oS = "Ⓢ"; var Oscr = "𝒪"; var oscr = "ℴ"; var Oslash = "Ø"; var oslash = "ø"; var osol = "⊘"; var Otilde = "Õ"; var otilde = "õ"; var otimesas = "⨶"; var Otimes = "⨷"; var otimes = "⊗"; var Ouml = "Ö"; var ouml = "ö"; var ovbar = "⌽"; var OverBar = "‾"; var OverBrace = "⏞"; var OverBracket = "⎴"; var OverParenthesis = "⏜"; var para = "¶"; var parallel = "∥"; var par = "∥"; var parsim = "⫳"; var parsl = "⫽"; var part = "∂"; var PartialD = "∂"; var Pcy = "П"; var pcy = "п"; var percnt = "%"; var period = "."; var permil = "‰"; var perp = "⊥"; var pertenk = "‱"; var Pfr = "𝔓"; var pfr = "𝔭"; var Phi = "Φ"; var phi = "φ"; var phiv = "ϕ"; var phmmat = "ℳ"; var phone = "☎"; var Pi = "Π"; var pi = "π"; var pitchfork = "⋔"; var piv = "ϖ"; var planck = "ℏ"; var planckh = "ℎ"; var plankv = "ℏ"; var plusacir = "⨣"; var plusb = "⊞"; var pluscir = "⨢"; var plus = "+"; var plusdo = "∔"; var plusdu = "⨥"; var pluse = "⩲"; var PlusMinus = "±"; var plusmn = "±"; var plussim = "⨦"; var plustwo = "⨧"; var pm = "±"; var Poincareplane = "ℌ"; var pointint = "⨕"; var popf = "𝕡"; var Popf = "ℙ"; var pound = "£"; var prap = "⪷"; var Pr = "⪻"; var pr = "≺"; var prcue = "≼"; var precapprox = "⪷"; var prec = "≺"; var preccurlyeq = "≼"; var Precedes = "≺"; var PrecedesEqual = "⪯"; var PrecedesSlantEqual = "≼"; var PrecedesTilde = "≾"; var preceq = "⪯"; var precnapprox = "⪹"; var precneqq = "⪵"; var precnsim = "⋨"; var pre = "⪯"; var prE = "⪳"; var precsim = "≾"; var prime = "′"; var Prime = "″"; var primes = "ℙ"; var prnap = "⪹"; var prnE = "⪵"; var prnsim = "⋨"; var prod = "∏"; var Product = "∏"; var profalar = "⌮"; var profline = "⌒"; var profsurf = "⌓"; var prop = "∝"; var Proportional = "∝"; var Proportion = "∷"; var propto = "∝"; var prsim = "≾"; var prurel = "⊰"; var Pscr = "𝒫"; var pscr = "𝓅"; var Psi = "Ψ"; var psi = "ψ"; var puncsp = " "; var Qfr = "𝔔"; var qfr = "𝔮"; var qint = "⨌"; var qopf = "𝕢"; var Qopf = "ℚ"; var qprime = "⁗"; var Qscr = "𝒬"; var qscr = "𝓆"; var quaternions = "ℍ"; var quatint = "⨖"; var quest = "?"; var questeq = "≟"; var quot$1 = "\""; var QUOT = "\""; var rAarr = "⇛"; var race = "∽̱"; var Racute = "Ŕ"; var racute = "ŕ"; var radic = "√"; var raemptyv = "⦳"; var rang = "⟩"; var Rang = "⟫"; var rangd = "⦒"; var range = "⦥"; var rangle = "⟩"; var raquo = "»"; var rarrap = "⥵"; var rarrb = "⇥"; var rarrbfs = "⤠"; var rarrc = "⤳"; var rarr = "→"; var Rarr = "↠"; var rArr = "⇒"; var rarrfs = "⤞"; var rarrhk = "↪"; var rarrlp = "↬"; var rarrpl = "⥅"; var rarrsim = "⥴"; var Rarrtl = "⤖"; var rarrtl = "↣"; var rarrw = "↝"; var ratail = "⤚"; var rAtail = "⤜"; var ratio = "∶"; var rationals = "ℚ"; var rbarr = "⤍"; var rBarr = "⤏"; var RBarr = "⤐"; var rbbrk = "❳"; var rbrace = "}"; var rbrack = "]"; var rbrke = "⦌"; var rbrksld = "⦎"; var rbrkslu = "⦐"; var Rcaron = "Ř"; var rcaron = "ř"; var Rcedil = "Ŗ"; var rcedil = "ŗ"; var rceil = "⌉"; var rcub = "}"; var Rcy = "Р"; var rcy = "р"; var rdca = "⤷"; var rdldhar = "⥩"; var rdquo = "”"; var rdquor = "”"; var rdsh = "↳"; var real = "ℜ"; var realine = "ℛ"; var realpart = "ℜ"; var reals = "ℝ"; var Re = "ℜ"; var rect = "▭"; var reg = "®"; var REG = "®"; var ReverseElement = "∋"; var ReverseEquilibrium = "⇋"; var ReverseUpEquilibrium = "⥯"; var rfisht = "⥽"; var rfloor = "⌋"; var rfr = "𝔯"; var Rfr = "ℜ"; var rHar = "⥤"; var rhard = "⇁"; var rharu = "⇀"; var rharul = "⥬"; var Rho = "Ρ"; var rho = "ρ"; var rhov = "ϱ"; var RightAngleBracket = "⟩"; var RightArrowBar = "⇥"; var rightarrow = "→"; var RightArrow = "→"; var Rightarrow = "⇒"; var RightArrowLeftArrow = "⇄"; var rightarrowtail = "↣"; var RightCeiling = "⌉"; var RightDoubleBracket = "⟧"; var RightDownTeeVector = "⥝"; var RightDownVectorBar = "⥕"; var RightDownVector = "⇂"; var RightFloor = "⌋"; var rightharpoondown = "⇁"; var rightharpoonup = "⇀"; var rightleftarrows = "⇄"; var rightleftharpoons = "⇌"; var rightrightarrows = "⇉"; var rightsquigarrow = "↝"; var RightTeeArrow = "↦"; var RightTee = "⊢"; var RightTeeVector = "⥛"; var rightthreetimes = "⋌"; var RightTriangleBar = "⧐"; var RightTriangle = "⊳"; var RightTriangleEqual = "⊵"; var RightUpDownVector = "⥏"; var RightUpTeeVector = "⥜"; var RightUpVectorBar = "⥔"; var RightUpVector = "↾"; var RightVectorBar = "⥓"; var RightVector = "⇀"; var ring = "˚"; var risingdotseq = "≓"; var rlarr = "⇄"; var rlhar = "⇌"; var rlm = "‏"; var rmoustache = "⎱"; var rmoust = "⎱"; var rnmid = "⫮"; var roang = "⟭"; var roarr = "⇾"; var robrk = "⟧"; var ropar = "⦆"; var ropf = "𝕣"; var Ropf = "ℝ"; var roplus = "⨮"; var rotimes = "⨵"; var RoundImplies = "⥰"; var rpar = ")"; var rpargt = "⦔"; var rppolint = "⨒"; var rrarr = "⇉"; var Rrightarrow = "⇛"; var rsaquo = "›"; var rscr = "𝓇"; var Rscr = "ℛ"; var rsh = "↱"; var Rsh = "↱"; var rsqb = "]"; var rsquo = "’"; var rsquor = "’"; var rthree = "⋌"; var rtimes = "⋊"; var rtri = "▹"; var rtrie = "⊵"; var rtrif = "▸"; var rtriltri = "⧎"; var RuleDelayed = "⧴"; var ruluhar = "⥨"; var rx = "℞"; var Sacute = "Ś"; var sacute = "ś"; var sbquo = "‚"; var scap = "⪸"; var Scaron = "Š"; var scaron = "š"; var Sc = "⪼"; var sc = "≻"; var sccue = "≽"; var sce = "⪰"; var scE = "⪴"; var Scedil = "Ş"; var scedil = "ş"; var Scirc = "Ŝ"; var scirc = "ŝ"; var scnap = "⪺"; var scnE = "⪶"; var scnsim = "⋩"; var scpolint = "⨓"; var scsim = "≿"; var Scy = "С"; var scy = "с"; var sdotb = "⊡"; var sdot = "⋅"; var sdote = "⩦"; var searhk = "⤥"; var searr = "↘"; var seArr = "⇘"; var searrow = "↘"; var sect = "§"; var semi = ";"; var seswar = "⤩"; var setminus = "∖"; var setmn = "∖"; var sext = "✶"; var Sfr = "𝔖"; var sfr = "𝔰"; var sfrown = "⌢"; var sharp = "♯"; var SHCHcy = "Щ"; var shchcy = "щ"; var SHcy = "Ш"; var shcy = "ш"; var ShortDownArrow = "↓"; var ShortLeftArrow = "←"; var shortmid = "∣"; var shortparallel = "∥"; var ShortRightArrow = "→"; var ShortUpArrow = "↑"; var shy = "­"; var Sigma = "Σ"; var sigma = "σ"; var sigmaf = "ς"; var sigmav = "ς"; var sim = "∼"; var simdot = "⩪"; var sime = "≃"; var simeq = "≃"; var simg = "⪞"; var simgE = "⪠"; var siml = "⪝"; var simlE = "⪟"; var simne = "≆"; var simplus = "⨤"; var simrarr = "⥲"; var slarr = "←"; var SmallCircle = "∘"; var smallsetminus = "∖"; var smashp = "⨳"; var smeparsl = "⧤"; var smid = "∣"; var smile = "⌣"; var smt = "⪪"; var smte = "⪬"; var smtes = "⪬︀"; var SOFTcy = "Ь"; var softcy = "ь"; var solbar = "⌿"; var solb = "⧄"; var sol = "/"; var Sopf = "𝕊"; var sopf = "𝕤"; var spades = "♠"; var spadesuit = "♠"; var spar = "∥"; var sqcap = "⊓"; var sqcaps = "⊓︀"; var sqcup = "⊔"; var sqcups = "⊔︀"; var Sqrt = "√"; var sqsub = "⊏"; var sqsube = "⊑"; var sqsubset = "⊏"; var sqsubseteq = "⊑"; var sqsup = "⊐"; var sqsupe = "⊒"; var sqsupset = "⊐"; var sqsupseteq = "⊒"; var square = "□"; var Square = "□"; var SquareIntersection = "⊓"; var SquareSubset = "⊏"; var SquareSubsetEqual = "⊑"; var SquareSuperset = "⊐"; var SquareSupersetEqual = "⊒"; var SquareUnion = "⊔"; var squarf = "▪"; var squ = "□"; var squf = "▪"; var srarr = "→"; var Sscr = "𝒮"; var sscr = "𝓈"; var ssetmn = "∖"; var ssmile = "⌣"; var sstarf = "⋆"; var Star = "⋆"; var star = "☆"; var starf = "★"; var straightepsilon = "ϵ"; var straightphi = "ϕ"; var strns = "¯"; var sub = "⊂"; var Sub = "⋐"; var subdot = "⪽"; var subE = "⫅"; var sube = "⊆"; var subedot = "⫃"; var submult = "⫁"; var subnE = "⫋"; var subne = "⊊"; var subplus = "⪿"; var subrarr = "⥹"; var subset = "⊂"; var Subset = "⋐"; var subseteq = "⊆"; var subseteqq = "⫅"; var SubsetEqual = "⊆"; var subsetneq = "⊊"; var subsetneqq = "⫋"; var subsim = "⫇"; var subsub = "⫕"; var subsup = "⫓"; var succapprox = "⪸"; var succ = "≻"; var succcurlyeq = "≽"; var Succeeds = "≻"; var SucceedsEqual = "⪰"; var SucceedsSlantEqual = "≽"; var SucceedsTilde = "≿"; var succeq = "⪰"; var succnapprox = "⪺"; var succneqq = "⪶"; var succnsim = "⋩"; var succsim = "≿"; var SuchThat = "∋"; var sum = "∑"; var Sum = "∑"; var sung = "♪"; var sup1 = "¹"; var sup2 = "²"; var sup3 = "³"; var sup = "⊃"; var Sup = "⋑"; var supdot = "⪾"; var supdsub = "⫘"; var supE = "⫆"; var supe = "⊇"; var supedot = "⫄"; var Superset = "⊃"; var SupersetEqual = "⊇"; var suphsol = "⟉"; var suphsub = "⫗"; var suplarr = "⥻"; var supmult = "⫂"; var supnE = "⫌"; var supne = "⊋"; var supplus = "⫀"; var supset = "⊃"; var Supset = "⋑"; var supseteq = "⊇"; var supseteqq = "⫆"; var supsetneq = "⊋"; var supsetneqq = "⫌"; var supsim = "⫈"; var supsub = "⫔"; var supsup = "⫖"; var swarhk = "⤦"; var swarr = "↙"; var swArr = "⇙"; var swarrow = "↙"; var swnwar = "⤪"; var szlig = "ß"; var Tab = "\t"; var target = "⌖"; var Tau = "Τ"; var tau = "τ"; var tbrk = "⎴"; var Tcaron = "Ť"; var tcaron = "ť"; var Tcedil = "Ţ"; var tcedil = "ţ"; var Tcy = "Т"; var tcy = "т"; var tdot = "⃛"; var telrec = "⌕"; var Tfr = "𝔗"; var tfr = "𝔱"; var there4 = "∴"; var therefore = "∴"; var Therefore = "∴"; var Theta = "Θ"; var theta = "θ"; var thetasym = "ϑ"; var thetav = "ϑ"; var thickapprox = "≈"; var thicksim = "∼"; var ThickSpace = "  "; var ThinSpace = " "; var thinsp = " "; var thkap = "≈"; var thksim = "∼"; var THORN = "Þ"; var thorn = "þ"; var tilde = "˜"; var Tilde = "∼"; var TildeEqual = "≃"; var TildeFullEqual = "≅"; var TildeTilde = "≈"; var timesbar = "⨱"; var timesb = "⊠"; var times = "×"; var timesd = "⨰"; var tint = "∭"; var toea = "⤨"; var topbot = "⌶"; var topcir = "⫱"; var top = "⊤"; var Topf = "𝕋"; var topf = "𝕥"; var topfork = "⫚"; var tosa = "⤩"; var tprime = "‴"; var trade = "™"; var TRADE = "™"; var triangle = "▵"; var triangledown = "▿"; var triangleleft = "◃"; var trianglelefteq = "⊴"; var triangleq = "≜"; var triangleright = "▹"; var trianglerighteq = "⊵"; var tridot = "◬"; var trie = "≜"; var triminus = "⨺"; var TripleDot = "⃛"; var triplus = "⨹"; var trisb = "⧍"; var tritime = "⨻"; var trpezium = "⏢"; var Tscr = "𝒯"; var tscr = "𝓉"; var TScy = "Ц"; var tscy = "ц"; var TSHcy = "Ћ"; var tshcy = "ћ"; var Tstrok = "Ŧ"; var tstrok = "ŧ"; var twixt = "≬"; var twoheadleftarrow = "↞"; var twoheadrightarrow = "↠"; var Uacute = "Ú"; var uacute = "ú"; var uarr = "↑"; var Uarr = "↟"; var uArr = "⇑"; var Uarrocir = "⥉"; var Ubrcy = "Ў"; var ubrcy = "ў"; var Ubreve = "Ŭ"; var ubreve = "ŭ"; var Ucirc = "Û"; var ucirc = "û"; var Ucy = "У"; var ucy = "у"; var udarr = "⇅"; var Udblac = "Ű"; var udblac = "ű"; var udhar = "⥮"; var ufisht = "⥾"; var Ufr = "𝔘"; var ufr = "𝔲"; var Ugrave = "Ù"; var ugrave = "ù"; var uHar = "⥣"; var uharl = "↿"; var uharr = "↾"; var uhblk = "▀"; var ulcorn = "⌜"; var ulcorner = "⌜"; var ulcrop = "⌏"; var ultri = "◸"; var Umacr = "Ū"; var umacr = "ū"; var uml = "¨"; var UnderBar = "_"; var UnderBrace = "⏟"; var UnderBracket = "⎵"; var UnderParenthesis = "⏝"; var Union = "⋃"; var UnionPlus = "⊎"; var Uogon = "Ų"; var uogon = "ų"; var Uopf = "𝕌"; var uopf = "𝕦"; var UpArrowBar = "⤒"; var uparrow = "↑"; var UpArrow = "↑"; var Uparrow = "⇑"; var UpArrowDownArrow = "⇅"; var updownarrow = "↕"; var UpDownArrow = "↕"; var Updownarrow = "⇕"; var UpEquilibrium = "⥮"; var upharpoonleft = "↿"; var upharpoonright = "↾"; var uplus = "⊎"; var UpperLeftArrow = "↖"; var UpperRightArrow = "↗"; var upsi = "υ"; var Upsi = "ϒ"; var upsih = "ϒ"; var Upsilon = "Υ"; var upsilon = "υ"; var UpTeeArrow = "↥"; var UpTee = "⊥"; var upuparrows = "⇈"; var urcorn = "⌝"; var urcorner = "⌝"; var urcrop = "⌎"; var Uring = "Ů"; var uring = "ů"; var urtri = "◹"; var Uscr = "𝒰"; var uscr = "𝓊"; var utdot = "⋰"; var Utilde = "Ũ"; var utilde = "ũ"; var utri = "▵"; var utrif = "▴"; var uuarr = "⇈"; var Uuml = "Ü"; var uuml = "ü"; var uwangle = "⦧"; var vangrt = "⦜"; var varepsilon = "ϵ"; var varkappa = "ϰ"; var varnothing = "∅"; var varphi = "ϕ"; var varpi = "ϖ"; var varpropto = "∝"; var varr = "↕"; var vArr = "⇕"; var varrho = "ϱ"; var varsigma = "ς"; var varsubsetneq = "⊊︀"; var varsubsetneqq = "⫋︀"; var varsupsetneq = "⊋︀"; var varsupsetneqq = "⫌︀"; var vartheta = "ϑ"; var vartriangleleft = "⊲"; var vartriangleright = "⊳"; var vBar = "⫨"; var Vbar = "⫫"; var vBarv = "⫩"; var Vcy = "В"; var vcy = "в"; var vdash = "⊢"; var vDash = "⊨"; var Vdash = "⊩"; var VDash = "⊫"; var Vdashl = "⫦"; var veebar = "⊻"; var vee = "∨"; var Vee = "⋁"; var veeeq = "≚"; var vellip = "⋮"; var verbar = "|"; var Verbar = "‖"; var vert = "|"; var Vert = "‖"; var VerticalBar = "∣"; var VerticalLine = "|"; var VerticalSeparator = "❘"; var VerticalTilde = "≀"; var VeryThinSpace = " "; var Vfr = "𝔙"; var vfr = "𝔳"; var vltri = "⊲"; var vnsub = "⊂⃒"; var vnsup = "⊃⃒"; var Vopf = "𝕍"; var vopf = "𝕧"; var vprop = "∝"; var vrtri = "⊳"; var Vscr = "𝒱"; var vscr = "𝓋"; var vsubnE = "⫋︀"; var vsubne = "⊊︀"; var vsupnE = "⫌︀"; var vsupne = "⊋︀"; var Vvdash = "⊪"; var vzigzag = "⦚"; var Wcirc = "Ŵ"; var wcirc = "ŵ"; var wedbar = "⩟"; var wedge = "∧"; var Wedge = "⋀"; var wedgeq = "≙"; var weierp = "℘"; var Wfr = "𝔚"; var wfr = "𝔴"; var Wopf = "𝕎"; var wopf = "𝕨"; var wp = "℘"; var wr = "≀"; var wreath = "≀"; var Wscr = "𝒲"; var wscr = "𝓌"; var xcap = "⋂"; var xcirc = "◯"; var xcup = "⋃"; var xdtri = "▽"; var Xfr = "𝔛"; var xfr = "𝔵"; var xharr = "⟷"; var xhArr = "⟺"; var Xi = "Ξ"; var xi = "ξ"; var xlarr = "⟵"; var xlArr = "⟸"; var xmap = "⟼"; var xnis = "⋻"; var xodot = "⨀"; var Xopf = "𝕏"; var xopf = "𝕩"; var xoplus = "⨁"; var xotime = "⨂"; var xrarr = "⟶"; var xrArr = "⟹"; var Xscr = "𝒳"; var xscr = "𝓍"; var xsqcup = "⨆"; var xuplus = "⨄"; var xutri = "△"; var xvee = "⋁"; var xwedge = "⋀"; var Yacute = "Ý"; var yacute = "ý"; var YAcy = "Я"; var yacy = "я"; var Ycirc = "Ŷ"; var ycirc = "ŷ"; var Ycy = "Ы"; var ycy = "ы"; var yen = "¥"; var Yfr = "𝔜"; var yfr = "𝔶"; var YIcy = "Ї"; var yicy = "ї"; var Yopf = "𝕐"; var yopf = "𝕪"; var Yscr = "𝒴"; var yscr = "𝓎"; var YUcy = "Ю"; var yucy = "ю"; var yuml = "ÿ"; var Yuml = "Ÿ"; var Zacute = "Ź"; var zacute = "ź"; var Zcaron = "Ž"; var zcaron = "ž"; var Zcy = "З"; var zcy = "з"; var Zdot = "Ż"; var zdot = "ż"; var zeetrf = "ℨ"; var ZeroWidthSpace = "​"; var Zeta = "Ζ"; var zeta = "ζ"; var zfr = "𝔷"; var Zfr = "ℨ"; var ZHcy = "Ж"; var zhcy = "ж"; var zigrarr = "⇝"; var zopf = "𝕫"; var Zopf = "ℤ"; var Zscr = "𝒵"; var zscr = "𝓏"; var zwj = "‍"; var zwnj = "‌"; var entities = { Aacute: Aacute, aacute: aacute, Abreve: Abreve, abreve: abreve, ac: ac, acd: acd, acE: acE, Acirc: Acirc, acirc: acirc, acute: acute, Acy: Acy, acy: acy, AElig: AElig, aelig: aelig, af: af, Afr: Afr, afr: afr, Agrave: Agrave, agrave: agrave, alefsym: alefsym, aleph: aleph, Alpha: Alpha, alpha: alpha, Amacr: Amacr, amacr: amacr, amalg: amalg, amp: amp$1, AMP: AMP, andand: andand, And: And, and: and, andd: andd, andslope: andslope, andv: andv, ang: ang, ange: ange, angle: angle, angmsdaa: angmsdaa, angmsdab: angmsdab, angmsdac: angmsdac, angmsdad: angmsdad, angmsdae: angmsdae, angmsdaf: angmsdaf, angmsdag: angmsdag, angmsdah: angmsdah, angmsd: angmsd, angrt: angrt, angrtvb: angrtvb, angrtvbd: angrtvbd, angsph: angsph, angst: angst, angzarr: angzarr, Aogon: Aogon, aogon: aogon, Aopf: Aopf, aopf: aopf, apacir: apacir, ap: ap, apE: apE, ape: ape, apid: apid, apos: apos$1, ApplyFunction: ApplyFunction, approx: approx, approxeq: approxeq, Aring: Aring, aring: aring, Ascr: Ascr, ascr: ascr, Assign: Assign, ast: ast, asymp: asymp, asympeq: asympeq, Atilde: Atilde, atilde: atilde, Auml: Auml, auml: auml, awconint: awconint, awint: awint, backcong: backcong, backepsilon: backepsilon, backprime: backprime, backsim: backsim, backsimeq: backsimeq, Backslash: Backslash, Barv: Barv, barvee: barvee, barwed: barwed, Barwed: Barwed, barwedge: barwedge, bbrk: bbrk, bbrktbrk: bbrktbrk, bcong: bcong, Bcy: Bcy, bcy: bcy, bdquo: bdquo, becaus: becaus, because: because, Because: Because, bemptyv: bemptyv, bepsi: bepsi, bernou: bernou, Bernoullis: Bernoullis, Beta: Beta, beta: beta, beth: beth, between: between, Bfr: Bfr, bfr: bfr, bigcap: bigcap, bigcirc: bigcirc, bigcup: bigcup, bigodot: bigodot, bigoplus: bigoplus, bigotimes: bigotimes, bigsqcup: bigsqcup, bigstar: bigstar, bigtriangledown: bigtriangledown, bigtriangleup: bigtriangleup, biguplus: biguplus, bigvee: bigvee, bigwedge: bigwedge, bkarow: bkarow, blacklozenge: blacklozenge, blacksquare: blacksquare, blacktriangle: blacktriangle, blacktriangledown: blacktriangledown, blacktriangleleft: blacktriangleleft, blacktriangleright: blacktriangleright, blank: blank, blk12: blk12, blk14: blk14, blk34: blk34, block: block, bne: bne, bnequiv: bnequiv, bNot: bNot, bnot: bnot, Bopf: Bopf, bopf: bopf, bot: bot, bottom: bottom, bowtie: bowtie, boxbox: boxbox, boxdl: boxdl, boxdL: boxdL, boxDl: boxDl, boxDL: boxDL, boxdr: boxdr, boxdR: boxdR, boxDr: boxDr, boxDR: boxDR, boxh: boxh, boxH: boxH, boxhd: boxhd, boxHd: boxHd, boxhD: boxhD, boxHD: boxHD, boxhu: boxhu, boxHu: boxHu, boxhU: boxhU, boxHU: boxHU, boxminus: boxminus, boxplus: boxplus, boxtimes: boxtimes, boxul: boxul, boxuL: boxuL, boxUl: boxUl, boxUL: boxUL, boxur: boxur, boxuR: boxuR, boxUr: boxUr, boxUR: boxUR, boxv: boxv, boxV: boxV, boxvh: boxvh, boxvH: boxvH, boxVh: boxVh, boxVH: boxVH, boxvl: boxvl, boxvL: boxvL, boxVl: boxVl, boxVL: boxVL, boxvr: boxvr, boxvR: boxvR, boxVr: boxVr, boxVR: boxVR, bprime: bprime, breve: breve, Breve: Breve, brvbar: brvbar, bscr: bscr, Bscr: Bscr, bsemi: bsemi, bsim: bsim, bsime: bsime, bsolb: bsolb, bsol: bsol, bsolhsub: bsolhsub, bull: bull, bullet: bullet, bump: bump, bumpE: bumpE, bumpe: bumpe, Bumpeq: Bumpeq, bumpeq: bumpeq, Cacute: Cacute, cacute: cacute, capand: capand, capbrcup: capbrcup, capcap: capcap, cap: cap, Cap: Cap, capcup: capcup, capdot: capdot, CapitalDifferentialD: CapitalDifferentialD, caps: caps, caret: caret, caron: caron, Cayleys: Cayleys, ccaps: ccaps, Ccaron: Ccaron, ccaron: ccaron, Ccedil: Ccedil, ccedil: ccedil, Ccirc: Ccirc, ccirc: ccirc, Cconint: Cconint, ccups: ccups, ccupssm: ccupssm, Cdot: Cdot, cdot: cdot, cedil: cedil, Cedilla: Cedilla, cemptyv: cemptyv, cent: cent, centerdot: centerdot, CenterDot: CenterDot, cfr: cfr, Cfr: Cfr, CHcy: CHcy, chcy: chcy, check: check, checkmark: checkmark, Chi: Chi, chi: chi, circ: circ, circeq: circeq, circlearrowleft: circlearrowleft, circlearrowright: circlearrowright, circledast: circledast, circledcirc: circledcirc, circleddash: circleddash, CircleDot: CircleDot, circledR: circledR, circledS: circledS, CircleMinus: CircleMinus, CirclePlus: CirclePlus, CircleTimes: CircleTimes, cir: cir, cirE: cirE, cire: cire, cirfnint: cirfnint, cirmid: cirmid, cirscir: cirscir, ClockwiseContourIntegral: ClockwiseContourIntegral, CloseCurlyDoubleQuote: CloseCurlyDoubleQuote, CloseCurlyQuote: CloseCurlyQuote, clubs: clubs, clubsuit: clubsuit, colon: colon, Colon: Colon, Colone: Colone, colone: colone, coloneq: coloneq, comma: comma, commat: commat, comp: comp, compfn: compfn, complement: complement, complexes: complexes, cong: cong, congdot: congdot, Congruent: Congruent, conint: conint, Conint: Conint, ContourIntegral: ContourIntegral, copf: copf, Copf: Copf, coprod: coprod, Coproduct: Coproduct, copy: copy, COPY: COPY, copysr: copysr, CounterClockwiseContourIntegral: CounterClockwiseContourIntegral, crarr: crarr, cross: cross, Cross: Cross, Cscr: Cscr, cscr: cscr, csub: csub, csube: csube, csup: csup, csupe: csupe, ctdot: ctdot, cudarrl: cudarrl, cudarrr: cudarrr, cuepr: cuepr, cuesc: cuesc, cularr: cularr, cularrp: cularrp, cupbrcap: cupbrcap, cupcap: cupcap, CupCap: CupCap, cup: cup, Cup: Cup, cupcup: cupcup, cupdot: cupdot, cupor: cupor, cups: cups, curarr: curarr, curarrm: curarrm, curlyeqprec: curlyeqprec, curlyeqsucc: curlyeqsucc, curlyvee: curlyvee, curlywedge: curlywedge, curren: curren, curvearrowleft: curvearrowleft, curvearrowright: curvearrowright, cuvee: cuvee, cuwed: cuwed, cwconint: cwconint, cwint: cwint, cylcty: cylcty, dagger: dagger, Dagger: Dagger, daleth: daleth, darr: darr, Darr: Darr, dArr: dArr, dash: dash, Dashv: Dashv, dashv: dashv, dbkarow: dbkarow, dblac: dblac, Dcaron: Dcaron, dcaron: dcaron, Dcy: Dcy, dcy: dcy, ddagger: ddagger, ddarr: ddarr, DD: DD, dd: dd, DDotrahd: DDotrahd, ddotseq: ddotseq, deg: deg, Del: Del, Delta: Delta, delta: delta, demptyv: demptyv, dfisht: dfisht, Dfr: Dfr, dfr: dfr, dHar: dHar, dharl: dharl, dharr: dharr, DiacriticalAcute: DiacriticalAcute, DiacriticalDot: DiacriticalDot, DiacriticalDoubleAcute: DiacriticalDoubleAcute, DiacriticalGrave: DiacriticalGrave, DiacriticalTilde: DiacriticalTilde, diam: diam, diamond: diamond, Diamond: Diamond, diamondsuit: diamondsuit, diams: diams, die: die, DifferentialD: DifferentialD, digamma: digamma, disin: disin, div: div, divide: divide, divideontimes: divideontimes, divonx: divonx, DJcy: DJcy, djcy: djcy, dlcorn: dlcorn, dlcrop: dlcrop, dollar: dollar, Dopf: Dopf, dopf: dopf, Dot: Dot, dot: dot, DotDot: DotDot, doteq: doteq, doteqdot: doteqdot, DotEqual: DotEqual, dotminus: dotminus, dotplus: dotplus, dotsquare: dotsquare, doublebarwedge: doublebarwedge, DoubleContourIntegral: DoubleContourIntegral, DoubleDot: DoubleDot, DoubleDownArrow: DoubleDownArrow, DoubleLeftArrow: DoubleLeftArrow, DoubleLeftRightArrow: DoubleLeftRightArrow, DoubleLeftTee: DoubleLeftTee, DoubleLongLeftArrow: DoubleLongLeftArrow, DoubleLongLeftRightArrow: DoubleLongLeftRightArrow, DoubleLongRightArrow: DoubleLongRightArrow, DoubleRightArrow: DoubleRightArrow, DoubleRightTee: DoubleRightTee, DoubleUpArrow: DoubleUpArrow, DoubleUpDownArrow: DoubleUpDownArrow, DoubleVerticalBar: DoubleVerticalBar, DownArrowBar: DownArrowBar, downarrow: downarrow, DownArrow: DownArrow, Downarrow: Downarrow, DownArrowUpArrow: DownArrowUpArrow, DownBreve: DownBreve, downdownarrows: downdownarrows, downharpoonleft: downharpoonleft, downharpoonright: downharpoonright, DownLeftRightVector: DownLeftRightVector, DownLeftTeeVector: DownLeftTeeVector, DownLeftVectorBar: DownLeftVectorBar, DownLeftVector: DownLeftVector, DownRightTeeVector: DownRightTeeVector, DownRightVectorBar: DownRightVectorBar, DownRightVector: DownRightVector, DownTeeArrow: DownTeeArrow, DownTee: DownTee, drbkarow: drbkarow, drcorn: drcorn, drcrop: drcrop, Dscr: Dscr, dscr: dscr, DScy: DScy, dscy: dscy, dsol: dsol, Dstrok: Dstrok, dstrok: dstrok, dtdot: dtdot, dtri: dtri, dtrif: dtrif, duarr: duarr, duhar: duhar, dwangle: dwangle, DZcy: DZcy, dzcy: dzcy, dzigrarr: dzigrarr, Eacute: Eacute, eacute: eacute, easter: easter, Ecaron: Ecaron, ecaron: ecaron, Ecirc: Ecirc, ecirc: ecirc, ecir: ecir, ecolon: ecolon, Ecy: Ecy, ecy: ecy, eDDot: eDDot, Edot: Edot, edot: edot, eDot: eDot, ee: ee, efDot: efDot, Efr: Efr, efr: efr, eg: eg, Egrave: Egrave, egrave: egrave, egs: egs, egsdot: egsdot, el: el, Element: Element, elinters: elinters, ell: ell, els: els, elsdot: elsdot, Emacr: Emacr, emacr: emacr, empty: empty, emptyset: emptyset, EmptySmallSquare: EmptySmallSquare, emptyv: emptyv, EmptyVerySmallSquare: EmptyVerySmallSquare, emsp13: emsp13, emsp14: emsp14, emsp: emsp, ENG: ENG, eng: eng, ensp: ensp, Eogon: Eogon, eogon: eogon, Eopf: Eopf, eopf: eopf, epar: epar, eparsl: eparsl, eplus: eplus, epsi: epsi, Epsilon: Epsilon, epsilon: epsilon, epsiv: epsiv, eqcirc: eqcirc, eqcolon: eqcolon, eqsim: eqsim, eqslantgtr: eqslantgtr, eqslantless: eqslantless, Equal: Equal, equals: equals, EqualTilde: EqualTilde, equest: equest, Equilibrium: Equilibrium, equiv: equiv, equivDD: equivDD, eqvparsl: eqvparsl, erarr: erarr, erDot: erDot, escr: escr, Escr: Escr, esdot: esdot, Esim: Esim, esim: esim, Eta: Eta, eta: eta, ETH: ETH, eth: eth, Euml: Euml, euml: euml, euro: euro, excl: excl, exist: exist, Exists: Exists, expectation: expectation, exponentiale: exponentiale, ExponentialE: ExponentialE, fallingdotseq: fallingdotseq, Fcy: Fcy, fcy: fcy, female: female, ffilig: ffilig, fflig: fflig, ffllig: ffllig, Ffr: Ffr, ffr: ffr, filig: filig, FilledSmallSquare: FilledSmallSquare, FilledVerySmallSquare: FilledVerySmallSquare, fjlig: fjlig, flat: flat, fllig: fllig, fltns: fltns, fnof: fnof, Fopf: Fopf, fopf: fopf, forall: forall, ForAll: ForAll, fork: fork, forkv: forkv, Fouriertrf: Fouriertrf, fpartint: fpartint, frac12: frac12, frac13: frac13, frac14: frac14, frac15: frac15, frac16: frac16, frac18: frac18, frac23: frac23, frac25: frac25, frac34: frac34, frac35: frac35, frac38: frac38, frac45: frac45, frac56: frac56, frac58: frac58, frac78: frac78, frasl: frasl, frown: frown, fscr: fscr, Fscr: Fscr, gacute: gacute, Gamma: Gamma, gamma: gamma, Gammad: Gammad, gammad: gammad, gap: gap, Gbreve: Gbreve, gbreve: gbreve, Gcedil: Gcedil, Gcirc: Gcirc, gcirc: gcirc, Gcy: Gcy, gcy: gcy, Gdot: Gdot, gdot: gdot, ge: ge, gE: gE, gEl: gEl, gel: gel, geq: geq, geqq: geqq, geqslant: geqslant, gescc: gescc, ges: ges, gesdot: gesdot, gesdoto: gesdoto, gesdotol: gesdotol, gesl: gesl, gesles: gesles, Gfr: Gfr, gfr: gfr, gg: gg, Gg: Gg, ggg: ggg, gimel: gimel, GJcy: GJcy, gjcy: gjcy, gla: gla, gl: gl, glE: glE, glj: glj, gnap: gnap, gnapprox: gnapprox, gne: gne, gnE: gnE, gneq: gneq, gneqq: gneqq, gnsim: gnsim, Gopf: Gopf, gopf: gopf, grave: grave, GreaterEqual: GreaterEqual, GreaterEqualLess: GreaterEqualLess, GreaterFullEqual: GreaterFullEqual, GreaterGreater: GreaterGreater, GreaterLess: GreaterLess, GreaterSlantEqual: GreaterSlantEqual, GreaterTilde: GreaterTilde, Gscr: Gscr, gscr: gscr, gsim: gsim, gsime: gsime, gsiml: gsiml, gtcc: gtcc, gtcir: gtcir, gt: gt$1, GT: GT, Gt: Gt, gtdot: gtdot, gtlPar: gtlPar, gtquest: gtquest, gtrapprox: gtrapprox, gtrarr: gtrarr, gtrdot: gtrdot, gtreqless: gtreqless, gtreqqless: gtreqqless, gtrless: gtrless, gtrsim: gtrsim, gvertneqq: gvertneqq, gvnE: gvnE, Hacek: Hacek, hairsp: hairsp, half: half, hamilt: hamilt, HARDcy: HARDcy, hardcy: hardcy, harrcir: harrcir, harr: harr, hArr: hArr, harrw: harrw, Hat: Hat, hbar: hbar, Hcirc: Hcirc, hcirc: hcirc, hearts: hearts, heartsuit: heartsuit, hellip: hellip, hercon: hercon, hfr: hfr, Hfr: Hfr, HilbertSpace: HilbertSpace, hksearow: hksearow, hkswarow: hkswarow, hoarr: hoarr, homtht: homtht, hookleftarrow: hookleftarrow, hookrightarrow: hookrightarrow, hopf: hopf, Hopf: Hopf, horbar: horbar, HorizontalLine: HorizontalLine, hscr: hscr, Hscr: Hscr, hslash: hslash, Hstrok: Hstrok, hstrok: hstrok, HumpDownHump: HumpDownHump, HumpEqual: HumpEqual, hybull: hybull, hyphen: hyphen, Iacute: Iacute, iacute: iacute, ic: ic, Icirc: Icirc, icirc: icirc, Icy: Icy, icy: icy, Idot: Idot, IEcy: IEcy, iecy: iecy, iexcl: iexcl, iff: iff, ifr: ifr, Ifr: Ifr, Igrave: Igrave, igrave: igrave, ii: ii, iiiint: iiiint, iiint: iiint, iinfin: iinfin, iiota: iiota, IJlig: IJlig, ijlig: ijlig, Imacr: Imacr, imacr: imacr, image: image, ImaginaryI: ImaginaryI, imagline: imagline, imagpart: imagpart, imath: imath, Im: Im, imof: imof, imped: imped, Implies: Implies, incare: incare, "in": "∈", infin: infin, infintie: infintie, inodot: inodot, intcal: intcal, int: int, Int: Int, integers: integers, Integral: Integral, intercal: intercal, Intersection: Intersection, intlarhk: intlarhk, intprod: intprod, InvisibleComma: InvisibleComma, InvisibleTimes: InvisibleTimes, IOcy: IOcy, iocy: iocy, Iogon: Iogon, iogon: iogon, Iopf: Iopf, iopf: iopf, Iota: Iota, iota: iota, iprod: iprod, iquest: iquest, iscr: iscr, Iscr: Iscr, isin: isin, isindot: isindot, isinE: isinE, isins: isins, isinsv: isinsv, isinv: isinv, it: it, Itilde: Itilde, itilde: itilde, Iukcy: Iukcy, iukcy: iukcy, Iuml: Iuml, iuml: iuml, Jcirc: Jcirc, jcirc: jcirc, Jcy: Jcy, jcy: jcy, Jfr: Jfr, jfr: jfr, jmath: jmath, Jopf: Jopf, jopf: jopf, Jscr: Jscr, jscr: jscr, Jsercy: Jsercy, jsercy: jsercy, Jukcy: Jukcy, jukcy: jukcy, Kappa: Kappa, kappa: kappa, kappav: kappav, Kcedil: Kcedil, kcedil: kcedil, Kcy: Kcy, kcy: kcy, Kfr: Kfr, kfr: kfr, kgreen: kgreen, KHcy: KHcy, khcy: khcy, KJcy: KJcy, kjcy: kjcy, Kopf: Kopf, kopf: kopf, Kscr: Kscr, kscr: kscr, lAarr: lAarr, Lacute: Lacute, lacute: lacute, laemptyv: laemptyv, lagran: lagran, Lambda: Lambda, lambda: lambda, lang: lang, Lang: Lang, langd: langd, langle: langle, lap: lap, Laplacetrf: Laplacetrf, laquo: laquo, larrb: larrb, larrbfs: larrbfs, larr: larr, Larr: Larr, lArr: lArr, larrfs: larrfs, larrhk: larrhk, larrlp: larrlp, larrpl: larrpl, larrsim: larrsim, larrtl: larrtl, latail: latail, lAtail: lAtail, lat: lat, late: late, lates: lates, lbarr: lbarr, lBarr: lBarr, lbbrk: lbbrk, lbrace: lbrace, lbrack: lbrack, lbrke: lbrke, lbrksld: lbrksld, lbrkslu: lbrkslu, Lcaron: Lcaron, lcaron: lcaron, Lcedil: Lcedil, lcedil: lcedil, lceil: lceil, lcub: lcub, Lcy: Lcy, lcy: lcy, ldca: ldca, ldquo: ldquo, ldquor: ldquor, ldrdhar: ldrdhar, ldrushar: ldrushar, ldsh: ldsh, le: le, lE: lE, LeftAngleBracket: LeftAngleBracket, LeftArrowBar: LeftArrowBar, leftarrow: leftarrow, LeftArrow: LeftArrow, Leftarrow: Leftarrow, LeftArrowRightArrow: LeftArrowRightArrow, leftarrowtail: leftarrowtail, LeftCeiling: LeftCeiling, LeftDoubleBracket: LeftDoubleBracket, LeftDownTeeVector: LeftDownTeeVector, LeftDownVectorBar: LeftDownVectorBar, LeftDownVector: LeftDownVector, LeftFloor: LeftFloor, leftharpoondown: leftharpoondown, leftharpoonup: leftharpoonup, leftleftarrows: leftleftarrows, leftrightarrow: leftrightarrow, LeftRightArrow: LeftRightArrow, Leftrightarrow: Leftrightarrow, leftrightarrows: leftrightarrows, leftrightharpoons: leftrightharpoons, leftrightsquigarrow: leftrightsquigarrow, LeftRightVector: LeftRightVector, LeftTeeArrow: LeftTeeArrow, LeftTee: LeftTee, LeftTeeVector: LeftTeeVector, leftthreetimes: leftthreetimes, LeftTriangleBar: LeftTriangleBar, LeftTriangle: LeftTriangle, LeftTriangleEqual: LeftTriangleEqual, LeftUpDownVector: LeftUpDownVector, LeftUpTeeVector: LeftUpTeeVector, LeftUpVectorBar: LeftUpVectorBar, LeftUpVector: LeftUpVector, LeftVectorBar: LeftVectorBar, LeftVector: LeftVector, lEg: lEg, leg: leg, leq: leq, leqq: leqq, leqslant: leqslant, lescc: lescc, les: les, lesdot: lesdot, lesdoto: lesdoto, lesdotor: lesdotor, lesg: lesg, lesges: lesges, lessapprox: lessapprox, lessdot: lessdot, lesseqgtr: lesseqgtr, lesseqqgtr: lesseqqgtr, LessEqualGreater: LessEqualGreater, LessFullEqual: LessFullEqual, LessGreater: LessGreater, lessgtr: lessgtr, LessLess: LessLess, lesssim: lesssim, LessSlantEqual: LessSlantEqual, LessTilde: LessTilde, lfisht: lfisht, lfloor: lfloor, Lfr: Lfr, lfr: lfr, lg: lg, lgE: lgE, lHar: lHar, lhard: lhard, lharu: lharu, lharul: lharul, lhblk: lhblk, LJcy: LJcy, ljcy: ljcy, llarr: llarr, ll: ll, Ll: Ll, llcorner: llcorner, Lleftarrow: Lleftarrow, llhard: llhard, lltri: lltri, Lmidot: Lmidot, lmidot: lmidot, lmoustache: lmoustache, lmoust: lmoust, lnap: lnap, lnapprox: lnapprox, lne: lne, lnE: lnE, lneq: lneq, lneqq: lneqq, lnsim: lnsim, loang: loang, loarr: loarr, lobrk: lobrk, longleftarrow: longleftarrow, LongLeftArrow: LongLeftArrow, Longleftarrow: Longleftarrow, longleftrightarrow: longleftrightarrow, LongLeftRightArrow: LongLeftRightArrow, Longleftrightarrow: Longleftrightarrow, longmapsto: longmapsto, longrightarrow: longrightarrow, LongRightArrow: LongRightArrow, Longrightarrow: Longrightarrow, looparrowleft: looparrowleft, looparrowright: looparrowright, lopar: lopar, Lopf: Lopf, lopf: lopf, loplus: loplus, lotimes: lotimes, lowast: lowast, lowbar: lowbar, LowerLeftArrow: LowerLeftArrow, LowerRightArrow: LowerRightArrow, loz: loz, lozenge: lozenge, lozf: lozf, lpar: lpar, lparlt: lparlt, lrarr: lrarr, lrcorner: lrcorner, lrhar: lrhar, lrhard: lrhard, lrm: lrm, lrtri: lrtri, lsaquo: lsaquo, lscr: lscr, Lscr: Lscr, lsh: lsh, Lsh: Lsh, lsim: lsim, lsime: lsime, lsimg: lsimg, lsqb: lsqb, lsquo: lsquo, lsquor: lsquor, Lstrok: Lstrok, lstrok: lstrok, ltcc: ltcc, ltcir: ltcir, lt: lt$1, LT: LT, Lt: Lt, ltdot: ltdot, lthree: lthree, ltimes: ltimes, ltlarr: ltlarr, ltquest: ltquest, ltri: ltri, ltrie: ltrie, ltrif: ltrif, ltrPar: ltrPar, lurdshar: lurdshar, luruhar: luruhar, lvertneqq: lvertneqq, lvnE: lvnE, macr: macr, male: male, malt: malt, maltese: maltese, "Map": "⤅", map: map, mapsto: mapsto, mapstodown: mapstodown, mapstoleft: mapstoleft, mapstoup: mapstoup, marker: marker, mcomma: mcomma, Mcy: Mcy, mcy: mcy, mdash: mdash, mDDot: mDDot, measuredangle: measuredangle, MediumSpace: MediumSpace, Mellintrf: Mellintrf, Mfr: Mfr, mfr: mfr, mho: mho, micro: micro, midast: midast, midcir: midcir, mid: mid, middot: middot, minusb: minusb, minus: minus, minusd: minusd, minusdu: minusdu, MinusPlus: MinusPlus, mlcp: mlcp, mldr: mldr, mnplus: mnplus, models: models, Mopf: Mopf, mopf: mopf, mp: mp, mscr: mscr, Mscr: Mscr, mstpos: mstpos, Mu: Mu, mu: mu, multimap: multimap, mumap: mumap, nabla: nabla, Nacute: Nacute, nacute: nacute, nang: nang, nap: nap, napE: napE, napid: napid, napos: napos, napprox: napprox, natural: natural, naturals: naturals, natur: natur, nbsp: nbsp, nbump: nbump, nbumpe: nbumpe, ncap: ncap, Ncaron: Ncaron, ncaron: ncaron, Ncedil: Ncedil, ncedil: ncedil, ncong: ncong, ncongdot: ncongdot, ncup: ncup, Ncy: Ncy, ncy: ncy, ndash: ndash, nearhk: nearhk, nearr: nearr, neArr: neArr, nearrow: nearrow, ne: ne, nedot: nedot, NegativeMediumSpace: NegativeMediumSpace, NegativeThickSpace: NegativeThickSpace, NegativeThinSpace: NegativeThinSpace, NegativeVeryThinSpace: NegativeVeryThinSpace, nequiv: nequiv, nesear: nesear, nesim: nesim, NestedGreaterGreater: NestedGreaterGreater, NestedLessLess: NestedLessLess, NewLine: NewLine, nexist: nexist, nexists: nexists, Nfr: Nfr, nfr: nfr, ngE: ngE, nge: nge, ngeq: ngeq, ngeqq: ngeqq, ngeqslant: ngeqslant, nges: nges, nGg: nGg, ngsim: ngsim, nGt: nGt, ngt: ngt, ngtr: ngtr, nGtv: nGtv, nharr: nharr, nhArr: nhArr, nhpar: nhpar, ni: ni, nis: nis, nisd: nisd, niv: niv, NJcy: NJcy, njcy: njcy, nlarr: nlarr, nlArr: nlArr, nldr: nldr, nlE: nlE, nle: nle, nleftarrow: nleftarrow, nLeftarrow: nLeftarrow, nleftrightarrow: nleftrightarrow, nLeftrightarrow: nLeftrightarrow, nleq: nleq, nleqq: nleqq, nleqslant: nleqslant, nles: nles, nless: nless, nLl: nLl, nlsim: nlsim, nLt: nLt, nlt: nlt, nltri: nltri, nltrie: nltrie, nLtv: nLtv, nmid: nmid, NoBreak: NoBreak, NonBreakingSpace: NonBreakingSpace, nopf: nopf, Nopf: Nopf, Not: Not, not: not, NotCongruent: NotCongruent, NotCupCap: NotCupCap, NotDoubleVerticalBar: NotDoubleVerticalBar, NotElement: NotElement, NotEqual: NotEqual, NotEqualTilde: NotEqualTilde, NotExists: NotExists, NotGreater: NotGreater, NotGreaterEqual: NotGreaterEqual, NotGreaterFullEqual: NotGreaterFullEqual, NotGreaterGreater: NotGreaterGreater, NotGreaterLess: NotGreaterLess, NotGreaterSlantEqual: NotGreaterSlantEqual, NotGreaterTilde: NotGreaterTilde, NotHumpDownHump: NotHumpDownHump, NotHumpEqual: NotHumpEqual, notin: notin, notindot: notindot, notinE: notinE, notinva: notinva, notinvb: notinvb, notinvc: notinvc, NotLeftTriangleBar: NotLeftTriangleBar, NotLeftTriangle: NotLeftTriangle, NotLeftTriangleEqual: NotLeftTriangleEqual, NotLess: NotLess, NotLessEqual: NotLessEqual, NotLessGreater: NotLessGreater, NotLessLess: NotLessLess, NotLessSlantEqual: NotLessSlantEqual, NotLessTilde: NotLessTilde, NotNestedGreaterGreater: NotNestedGreaterGreater, NotNestedLessLess: NotNestedLessLess, notni: notni, notniva: notniva, notnivb: notnivb, notnivc: notnivc, NotPrecedes: NotPrecedes, NotPrecedesEqual: NotPrecedesEqual, NotPrecedesSlantEqual: NotPrecedesSlantEqual, NotReverseElement: NotReverseElement, NotRightTriangleBar: NotRightTriangleBar, NotRightTriangle: NotRightTriangle, NotRightTriangleEqual: NotRightTriangleEqual, NotSquareSubset: NotSquareSubset, NotSquareSubsetEqual: NotSquareSubsetEqual, NotSquareSuperset: NotSquareSuperset, NotSquareSupersetEqual: NotSquareSupersetEqual, NotSubset: NotSubset, NotSubsetEqual: NotSubsetEqual, NotSucceeds: NotSucceeds, NotSucceedsEqual: NotSucceedsEqual, NotSucceedsSlantEqual: NotSucceedsSlantEqual, NotSucceedsTilde: NotSucceedsTilde, NotSuperset: NotSuperset, NotSupersetEqual: NotSupersetEqual, NotTilde: NotTilde, NotTildeEqual: NotTildeEqual, NotTildeFullEqual: NotTildeFullEqual, NotTildeTilde: NotTildeTilde, NotVerticalBar: NotVerticalBar, nparallel: nparallel, npar: npar, nparsl: nparsl, npart: npart, npolint: npolint, npr: npr, nprcue: nprcue, nprec: nprec, npreceq: npreceq, npre: npre, nrarrc: nrarrc, nrarr: nrarr, nrArr: nrArr, nrarrw: nrarrw, nrightarrow: nrightarrow, nRightarrow: nRightarrow, nrtri: nrtri, nrtrie: nrtrie, nsc: nsc, nsccue: nsccue, nsce: nsce, Nscr: Nscr, nscr: nscr, nshortmid: nshortmid, nshortparallel: nshortparallel, nsim: nsim, nsime: nsime, nsimeq: nsimeq, nsmid: nsmid, nspar: nspar, nsqsube: nsqsube, nsqsupe: nsqsupe, nsub: nsub, nsubE: nsubE, nsube: nsube, nsubset: nsubset, nsubseteq: nsubseteq, nsubseteqq: nsubseteqq, nsucc: nsucc, nsucceq: nsucceq, nsup: nsup, nsupE: nsupE, nsupe: nsupe, nsupset: nsupset, nsupseteq: nsupseteq, nsupseteqq: nsupseteqq, ntgl: ntgl, Ntilde: Ntilde, ntilde: ntilde, ntlg: ntlg, ntriangleleft: ntriangleleft, ntrianglelefteq: ntrianglelefteq, ntriangleright: ntriangleright, ntrianglerighteq: ntrianglerighteq, Nu: Nu, nu: nu, num: num, numero: numero, numsp: numsp, nvap: nvap, nvdash: nvdash, nvDash: nvDash, nVdash: nVdash, nVDash: nVDash, nvge: nvge, nvgt: nvgt, nvHarr: nvHarr, nvinfin: nvinfin, nvlArr: nvlArr, nvle: nvle, nvlt: nvlt, nvltrie: nvltrie, nvrArr: nvrArr, nvrtrie: nvrtrie, nvsim: nvsim, nwarhk: nwarhk, nwarr: nwarr, nwArr: nwArr, nwarrow: nwarrow, nwnear: nwnear, Oacute: Oacute, oacute: oacute, oast: oast, Ocirc: Ocirc, ocirc: ocirc, ocir: ocir, Ocy: Ocy, ocy: ocy, odash: odash, Odblac: Odblac, odblac: odblac, odiv: odiv, odot: odot, odsold: odsold, OElig: OElig, oelig: oelig, ofcir: ofcir, Ofr: Ofr, ofr: ofr, ogon: ogon, Ograve: Ograve, ograve: ograve, ogt: ogt, ohbar: ohbar, ohm: ohm, oint: oint, olarr: olarr, olcir: olcir, olcross: olcross, oline: oline, olt: olt, Omacr: Omacr, omacr: omacr, Omega: Omega, omega: omega, Omicron: Omicron, omicron: omicron, omid: omid, ominus: ominus, Oopf: Oopf, oopf: oopf, opar: opar, OpenCurlyDoubleQuote: OpenCurlyDoubleQuote, OpenCurlyQuote: OpenCurlyQuote, operp: operp, oplus: oplus, orarr: orarr, Or: Or, or: or, ord: ord, order: order, orderof: orderof, ordf: ordf, ordm: ordm, origof: origof, oror: oror, orslope: orslope, orv: orv, oS: oS, Oscr: Oscr, oscr: oscr, Oslash: Oslash, oslash: oslash, osol: osol, Otilde: Otilde, otilde: otilde, otimesas: otimesas, Otimes: Otimes, otimes: otimes, Ouml: Ouml, ouml: ouml, ovbar: ovbar, OverBar: OverBar, OverBrace: OverBrace, OverBracket: OverBracket, OverParenthesis: OverParenthesis, para: para, parallel: parallel, par: par, parsim: parsim, parsl: parsl, part: part, PartialD: PartialD, Pcy: Pcy, pcy: pcy, percnt: percnt, period: period, permil: permil, perp: perp, pertenk: pertenk, Pfr: Pfr, pfr: pfr, Phi: Phi, phi: phi, phiv: phiv, phmmat: phmmat, phone: phone, Pi: Pi, pi: pi, pitchfork: pitchfork, piv: piv, planck: planck, planckh: planckh, plankv: plankv, plusacir: plusacir, plusb: plusb, pluscir: pluscir, plus: plus, plusdo: plusdo, plusdu: plusdu, pluse: pluse, PlusMinus: PlusMinus, plusmn: plusmn, plussim: plussim, plustwo: plustwo, pm: pm, Poincareplane: Poincareplane, pointint: pointint, popf: popf, Popf: Popf, pound: pound, prap: prap, Pr: Pr, pr: pr, prcue: prcue, precapprox: precapprox, prec: prec, preccurlyeq: preccurlyeq, Precedes: Precedes, PrecedesEqual: PrecedesEqual, PrecedesSlantEqual: PrecedesSlantEqual, PrecedesTilde: PrecedesTilde, preceq: preceq, precnapprox: precnapprox, precneqq: precneqq, precnsim: precnsim, pre: pre, prE: prE, precsim: precsim, prime: prime, Prime: Prime, primes: primes, prnap: prnap, prnE: prnE, prnsim: prnsim, prod: prod, Product: Product, profalar: profalar, profline: profline, profsurf: profsurf, prop: prop, Proportional: Proportional, Proportion: Proportion, propto: propto, prsim: prsim, prurel: prurel, Pscr: Pscr, pscr: pscr, Psi: Psi, psi: psi, puncsp: puncsp, Qfr: Qfr, qfr: qfr, qint: qint, qopf: qopf, Qopf: Qopf, qprime: qprime, Qscr: Qscr, qscr: qscr, quaternions: quaternions, quatint: quatint, quest: quest, questeq: questeq, quot: quot$1, QUOT: QUOT, rAarr: rAarr, race: race, Racute: Racute, racute: racute, radic: radic, raemptyv: raemptyv, rang: rang, Rang: Rang, rangd: rangd, range: range, rangle: rangle, raquo: raquo, rarrap: rarrap, rarrb: rarrb, rarrbfs: rarrbfs, rarrc: rarrc, rarr: rarr, Rarr: Rarr, rArr: rArr, rarrfs: rarrfs, rarrhk: rarrhk, rarrlp: rarrlp, rarrpl: rarrpl, rarrsim: rarrsim, Rarrtl: Rarrtl, rarrtl: rarrtl, rarrw: rarrw, ratail: ratail, rAtail: rAtail, ratio: ratio, rationals: rationals, rbarr: rbarr, rBarr: rBarr, RBarr: RBarr, rbbrk: rbbrk, rbrace: rbrace, rbrack: rbrack, rbrke: rbrke, rbrksld: rbrksld, rbrkslu: rbrkslu, Rcaron: Rcaron, rcaron: rcaron, Rcedil: Rcedil, rcedil: rcedil, rceil: rceil, rcub: rcub, Rcy: Rcy, rcy: rcy, rdca: rdca, rdldhar: rdldhar, rdquo: rdquo, rdquor: rdquor, rdsh: rdsh, real: real, realine: realine, realpart: realpart, reals: reals, Re: Re, rect: rect, reg: reg, REG: REG, ReverseElement: ReverseElement, ReverseEquilibrium: ReverseEquilibrium, ReverseUpEquilibrium: ReverseUpEquilibrium, rfisht: rfisht, rfloor: rfloor, rfr: rfr, Rfr: Rfr, rHar: rHar, rhard: rhard, rharu: rharu, rharul: rharul, Rho: Rho, rho: rho, rhov: rhov, RightAngleBracket: RightAngleBracket, RightArrowBar: RightArrowBar, rightarrow: rightarrow, RightArrow: RightArrow, Rightarrow: Rightarrow, RightArrowLeftArrow: RightArrowLeftArrow, rightarrowtail: rightarrowtail, RightCeiling: RightCeiling, RightDoubleBracket: RightDoubleBracket, RightDownTeeVector: RightDownTeeVector, RightDownVectorBar: RightDownVectorBar, RightDownVector: RightDownVector, RightFloor: RightFloor, rightharpoondown: rightharpoondown, rightharpoonup: rightharpoonup, rightleftarrows: rightleftarrows, rightleftharpoons: rightleftharpoons, rightrightarrows: rightrightarrows, rightsquigarrow: rightsquigarrow, RightTeeArrow: RightTeeArrow, RightTee: RightTee, RightTeeVector: RightTeeVector, rightthreetimes: rightthreetimes, RightTriangleBar: RightTriangleBar, RightTriangle: RightTriangle, RightTriangleEqual: RightTriangleEqual, RightUpDownVector: RightUpDownVector, RightUpTeeVector: RightUpTeeVector, RightUpVectorBar: RightUpVectorBar, RightUpVector: RightUpVector, RightVectorBar: RightVectorBar, RightVector: RightVector, ring: ring, risingdotseq: risingdotseq, rlarr: rlarr, rlhar: rlhar, rlm: rlm, rmoustache: rmoustache, rmoust: rmoust, rnmid: rnmid, roang: roang, roarr: roarr, robrk: robrk, ropar: ropar, ropf: ropf, Ropf: Ropf, roplus: roplus, rotimes: rotimes, RoundImplies: RoundImplies, rpar: rpar, rpargt: rpargt, rppolint: rppolint, rrarr: rrarr, Rrightarrow: Rrightarrow, rsaquo: rsaquo, rscr: rscr, Rscr: Rscr, rsh: rsh, Rsh: Rsh, rsqb: rsqb, rsquo: rsquo, rsquor: rsquor, rthree: rthree, rtimes: rtimes, rtri: rtri, rtrie: rtrie, rtrif: rtrif, rtriltri: rtriltri, RuleDelayed: RuleDelayed, ruluhar: ruluhar, rx: rx, Sacute: Sacute, sacute: sacute, sbquo: sbquo, scap: scap, Scaron: Scaron, scaron: scaron, Sc: Sc, sc: sc, sccue: sccue, sce: sce, scE: scE, Scedil: Scedil, scedil: scedil, Scirc: Scirc, scirc: scirc, scnap: scnap, scnE: scnE, scnsim: scnsim, scpolint: scpolint, scsim: scsim, Scy: Scy, scy: scy, sdotb: sdotb, sdot: sdot, sdote: sdote, searhk: searhk, searr: searr, seArr: seArr, searrow: searrow, sect: sect, semi: semi, seswar: seswar, setminus: setminus, setmn: setmn, sext: sext, Sfr: Sfr, sfr: sfr, sfrown: sfrown, sharp: sharp, SHCHcy: SHCHcy, shchcy: shchcy, SHcy: SHcy, shcy: shcy, ShortDownArrow: ShortDownArrow, ShortLeftArrow: ShortLeftArrow, shortmid: shortmid, shortparallel: shortparallel, ShortRightArrow: ShortRightArrow, ShortUpArrow: ShortUpArrow, shy: shy, Sigma: Sigma, sigma: sigma, sigmaf: sigmaf, sigmav: sigmav, sim: sim, simdot: simdot, sime: sime, simeq: simeq, simg: simg, simgE: simgE, siml: siml, simlE: simlE, simne: simne, simplus: simplus, simrarr: simrarr, slarr: slarr, SmallCircle: SmallCircle, smallsetminus: smallsetminus, smashp: smashp, smeparsl: smeparsl, smid: smid, smile: smile, smt: smt, smte: smte, smtes: smtes, SOFTcy: SOFTcy, softcy: softcy, solbar: solbar, solb: solb, sol: sol, Sopf: Sopf, sopf: sopf, spades: spades, spadesuit: spadesuit, spar: spar, sqcap: sqcap, sqcaps: sqcaps, sqcup: sqcup, sqcups: sqcups, Sqrt: Sqrt, sqsub: sqsub, sqsube: sqsube, sqsubset: sqsubset, sqsubseteq: sqsubseteq, sqsup: sqsup, sqsupe: sqsupe, sqsupset: sqsupset, sqsupseteq: sqsupseteq, square: square, Square: Square, SquareIntersection: SquareIntersection, SquareSubset: SquareSubset, SquareSubsetEqual: SquareSubsetEqual, SquareSuperset: SquareSuperset, SquareSupersetEqual: SquareSupersetEqual, SquareUnion: SquareUnion, squarf: squarf, squ: squ, squf: squf, srarr: srarr, Sscr: Sscr, sscr: sscr, ssetmn: ssetmn, ssmile: ssmile, sstarf: sstarf, Star: Star, star: star, starf: starf, straightepsilon: straightepsilon, straightphi: straightphi, strns: strns, sub: sub, Sub: Sub, subdot: subdot, subE: subE, sube: sube, subedot: subedot, submult: submult, subnE: subnE, subne: subne, subplus: subplus, subrarr: subrarr, subset: subset, Subset: Subset, subseteq: subseteq, subseteqq: subseteqq, SubsetEqual: SubsetEqual, subsetneq: subsetneq, subsetneqq: subsetneqq, subsim: subsim, subsub: subsub, subsup: subsup, succapprox: succapprox, succ: succ, succcurlyeq: succcurlyeq, Succeeds: Succeeds, SucceedsEqual: SucceedsEqual, SucceedsSlantEqual: SucceedsSlantEqual, SucceedsTilde: SucceedsTilde, succeq: succeq, succnapprox: succnapprox, succneqq: succneqq, succnsim: succnsim, succsim: succsim, SuchThat: SuchThat, sum: sum, Sum: Sum, sung: sung, sup1: sup1, sup2: sup2, sup3: sup3, sup: sup, Sup: Sup, supdot: supdot, supdsub: supdsub, supE: supE, supe: supe, supedot: supedot, Superset: Superset, SupersetEqual: SupersetEqual, suphsol: suphsol, suphsub: suphsub, suplarr: suplarr, supmult: supmult, supnE: supnE, supne: supne, supplus: supplus, supset: supset, Supset: Supset, supseteq: supseteq, supseteqq: supseteqq, supsetneq: supsetneq, supsetneqq: supsetneqq, supsim: supsim, supsub: supsub, supsup: supsup, swarhk: swarhk, swarr: swarr, swArr: swArr, swarrow: swarrow, swnwar: swnwar, szlig: szlig, Tab: Tab, target: target, Tau: Tau, tau: tau, tbrk: tbrk, Tcaron: Tcaron, tcaron: tcaron, Tcedil: Tcedil, tcedil: tcedil, Tcy: Tcy, tcy: tcy, tdot: tdot, telrec: telrec, Tfr: Tfr, tfr: tfr, there4: there4, therefore: therefore, Therefore: Therefore, Theta: Theta, theta: theta, thetasym: thetasym, thetav: thetav, thickapprox: thickapprox, thicksim: thicksim, ThickSpace: ThickSpace, ThinSpace: ThinSpace, thinsp: thinsp, thkap: thkap, thksim: thksim, THORN: THORN, thorn: thorn, tilde: tilde, Tilde: Tilde, TildeEqual: TildeEqual, TildeFullEqual: TildeFullEqual, TildeTilde: TildeTilde, timesbar: timesbar, timesb: timesb, times: times, timesd: timesd, tint: tint, toea: toea, topbot: topbot, topcir: topcir, top: top, Topf: Topf, topf: topf, topfork: topfork, tosa: tosa, tprime: tprime, trade: trade, TRADE: TRADE, triangle: triangle, triangledown: triangledown, triangleleft: triangleleft, trianglelefteq: trianglelefteq, triangleq: triangleq, triangleright: triangleright, trianglerighteq: trianglerighteq, tridot: tridot, trie: trie, triminus: triminus, TripleDot: TripleDot, triplus: triplus, trisb: trisb, tritime: tritime, trpezium: trpezium, Tscr: Tscr, tscr: tscr, TScy: TScy, tscy: tscy, TSHcy: TSHcy, tshcy: tshcy, Tstrok: Tstrok, tstrok: tstrok, twixt: twixt, twoheadleftarrow: twoheadleftarrow, twoheadrightarrow: twoheadrightarrow, Uacute: Uacute, uacute: uacute, uarr: uarr, Uarr: Uarr, uArr: uArr, Uarrocir: Uarrocir, Ubrcy: Ubrcy, ubrcy: ubrcy, Ubreve: Ubreve, ubreve: ubreve, Ucirc: Ucirc, ucirc: ucirc, Ucy: Ucy, ucy: ucy, udarr: udarr, Udblac: Udblac, udblac: udblac, udhar: udhar, ufisht: ufisht, Ufr: Ufr, ufr: ufr, Ugrave: Ugrave, ugrave: ugrave, uHar: uHar, uharl: uharl, uharr: uharr, uhblk: uhblk, ulcorn: ulcorn, ulcorner: ulcorner, ulcrop: ulcrop, ultri: ultri, Umacr: Umacr, umacr: umacr, uml: uml, UnderBar: UnderBar, UnderBrace: UnderBrace, UnderBracket: UnderBracket, UnderParenthesis: UnderParenthesis, Union: Union, UnionPlus: UnionPlus, Uogon: Uogon, uogon: uogon, Uopf: Uopf, uopf: uopf, UpArrowBar: UpArrowBar, uparrow: uparrow, UpArrow: UpArrow, Uparrow: Uparrow, UpArrowDownArrow: UpArrowDownArrow, updownarrow: updownarrow, UpDownArrow: UpDownArrow, Updownarrow: Updownarrow, UpEquilibrium: UpEquilibrium, upharpoonleft: upharpoonleft, upharpoonright: upharpoonright, uplus: uplus, UpperLeftArrow: UpperLeftArrow, UpperRightArrow: UpperRightArrow, upsi: upsi, Upsi: Upsi, upsih: upsih, Upsilon: Upsilon, upsilon: upsilon, UpTeeArrow: UpTeeArrow, UpTee: UpTee, upuparrows: upuparrows, urcorn: urcorn, urcorner: urcorner, urcrop: urcrop, Uring: Uring, uring: uring, urtri: urtri, Uscr: Uscr, uscr: uscr, utdot: utdot, Utilde: Utilde, utilde: utilde, utri: utri, utrif: utrif, uuarr: uuarr, Uuml: Uuml, uuml: uuml, uwangle: uwangle, vangrt: vangrt, varepsilon: varepsilon, varkappa: varkappa, varnothing: varnothing, varphi: varphi, varpi: varpi, varpropto: varpropto, varr: varr, vArr: vArr, varrho: varrho, varsigma: varsigma, varsubsetneq: varsubsetneq, varsubsetneqq: varsubsetneqq, varsupsetneq: varsupsetneq, varsupsetneqq: varsupsetneqq, vartheta: vartheta, vartriangleleft: vartriangleleft, vartriangleright: vartriangleright, vBar: vBar, Vbar: Vbar, vBarv: vBarv, Vcy: Vcy, vcy: vcy, vdash: vdash, vDash: vDash, Vdash: Vdash, VDash: VDash, Vdashl: Vdashl, veebar: veebar, vee: vee, Vee: Vee, veeeq: veeeq, vellip: vellip, verbar: verbar, Verbar: Verbar, vert: vert, Vert: Vert, VerticalBar: VerticalBar, VerticalLine: VerticalLine, VerticalSeparator: VerticalSeparator, VerticalTilde: VerticalTilde, VeryThinSpace: VeryThinSpace, Vfr: Vfr, vfr: vfr, vltri: vltri, vnsub: vnsub, vnsup: vnsup, Vopf: Vopf, vopf: vopf, vprop: vprop, vrtri: vrtri, Vscr: Vscr, vscr: vscr, vsubnE: vsubnE, vsubne: vsubne, vsupnE: vsupnE, vsupne: vsupne, Vvdash: Vvdash, vzigzag: vzigzag, Wcirc: Wcirc, wcirc: wcirc, wedbar: wedbar, wedge: wedge, Wedge: Wedge, wedgeq: wedgeq, weierp: weierp, Wfr: Wfr, wfr: wfr, Wopf: Wopf, wopf: wopf, wp: wp, wr: wr, wreath: wreath, Wscr: Wscr, wscr: wscr, xcap: xcap, xcirc: xcirc, xcup: xcup, xdtri: xdtri, Xfr: Xfr, xfr: xfr, xharr: xharr, xhArr: xhArr, Xi: Xi, xi: xi, xlarr: xlarr, xlArr: xlArr, xmap: xmap, xnis: xnis, xodot: xodot, Xopf: Xopf, xopf: xopf, xoplus: xoplus, xotime: xotime, xrarr: xrarr, xrArr: xrArr, Xscr: Xscr, xscr: xscr, xsqcup: xsqcup, xuplus: xuplus, xutri: xutri, xvee: xvee, xwedge: xwedge, Yacute: Yacute, yacute: yacute, YAcy: YAcy, yacy: yacy, Ycirc: Ycirc, ycirc: ycirc, Ycy: Ycy, ycy: ycy, yen: yen, Yfr: Yfr, yfr: yfr, YIcy: YIcy, yicy: yicy, Yopf: Yopf, yopf: yopf, Yscr: Yscr, yscr: yscr, YUcy: YUcy, yucy: yucy, yuml: yuml, Yuml: Yuml, Zacute: Zacute, zacute: zacute, Zcaron: Zcaron, zcaron: zcaron, Zcy: Zcy, zcy: zcy, Zdot: Zdot, zdot: zdot, zeetrf: zeetrf, ZeroWidthSpace: ZeroWidthSpace, Zeta: Zeta, zeta: zeta, zfr: zfr, Zfr: Zfr, ZHcy: ZHcy, zhcy: zhcy, zigrarr: zigrarr, zopf: zopf, Zopf: Zopf, Zscr: Zscr, zscr: zscr, zwj: zwj, zwnj: zwnj }; var entities$1 = /*#__PURE__*/Object.freeze({ __proto__: null, Aacute: Aacute, aacute: aacute, Abreve: Abreve, abreve: abreve, ac: ac, acd: acd, acE: acE, Acirc: Acirc, acirc: acirc, acute: acute, Acy: Acy, acy: acy, AElig: AElig, aelig: aelig, af: af, Afr: Afr, afr: afr, Agrave: Agrave, agrave: agrave, alefsym: alefsym, aleph: aleph, Alpha: Alpha, alpha: alpha, Amacr: Amacr, amacr: amacr, amalg: amalg, amp: amp$1, AMP: AMP, andand: andand, And: And, and: and, andd: andd, andslope: andslope, andv: andv, ang: ang, ange: ange, angle: angle, angmsdaa: angmsdaa, angmsdab: angmsdab, angmsdac: angmsdac, angmsdad: angmsdad, angmsdae: angmsdae, angmsdaf: angmsdaf, angmsdag: angmsdag, angmsdah: angmsdah, angmsd: angmsd, angrt: angrt, angrtvb: angrtvb, angrtvbd: angrtvbd, angsph: angsph, angst: angst, angzarr: angzarr, Aogon: Aogon, aogon: aogon, Aopf: Aopf, aopf: aopf, apacir: apacir, ap: ap, apE: apE, ape: ape, apid: apid, apos: apos$1, ApplyFunction: ApplyFunction, approx: approx, approxeq: approxeq, Aring: Aring, aring: aring, Ascr: Ascr, ascr: ascr, Assign: Assign, ast: ast, asymp: asymp, asympeq: asympeq, Atilde: Atilde, atilde: atilde, Auml: Auml, auml: auml, awconint: awconint, awint: awint, backcong: backcong, backepsilon: backepsilon, backprime: backprime, backsim: backsim, backsimeq: backsimeq, Backslash: Backslash, Barv: Barv, barvee: barvee, barwed: barwed, Barwed: Barwed, barwedge: barwedge, bbrk: bbrk, bbrktbrk: bbrktbrk, bcong: bcong, Bcy: Bcy, bcy: bcy, bdquo: bdquo, becaus: becaus, because: because, Because: Because, bemptyv: bemptyv, bepsi: bepsi, bernou: bernou, Bernoullis: Bernoullis, Beta: Beta, beta: beta, beth: beth, between: between, Bfr: Bfr, bfr: bfr, bigcap: bigcap, bigcirc: bigcirc, bigcup: bigcup, bigodot: bigodot, bigoplus: bigoplus, bigotimes: bigotimes, bigsqcup: bigsqcup, bigstar: bigstar, bigtriangledown: bigtriangledown, bigtriangleup: bigtriangleup, biguplus: biguplus, bigvee: bigvee, bigwedge: bigwedge, bkarow: bkarow, blacklozenge: blacklozenge, blacksquare: blacksquare, blacktriangle: blacktriangle, blacktriangledown: blacktriangledown, blacktriangleleft: blacktriangleleft, blacktriangleright: blacktriangleright, blank: blank, blk12: blk12, blk14: blk14, blk34: blk34, block: block, bne: bne, bnequiv: bnequiv, bNot: bNot, bnot: bnot, Bopf: Bopf, bopf: bopf, bot: bot, bottom: bottom, bowtie: bowtie, boxbox: boxbox, boxdl: boxdl, boxdL: boxdL, boxDl: boxDl, boxDL: boxDL, boxdr: boxdr, boxdR: boxdR, boxDr: boxDr, boxDR: boxDR, boxh: boxh, boxH: boxH, boxhd: boxhd, boxHd: boxHd, boxhD: boxhD, boxHD: boxHD, boxhu: boxhu, boxHu: boxHu, boxhU: boxhU, boxHU: boxHU, boxminus: boxminus, boxplus: boxplus, boxtimes: boxtimes, boxul: boxul, boxuL: boxuL, boxUl: boxUl, boxUL: boxUL, boxur: boxur, boxuR: boxuR, boxUr: boxUr, boxUR: boxUR, boxv: boxv, boxV: boxV, boxvh: boxvh, boxvH: boxvH, boxVh: boxVh, boxVH: boxVH, boxvl: boxvl, boxvL: boxvL, boxVl: boxVl, boxVL: boxVL, boxvr: boxvr, boxvR: boxvR, boxVr: boxVr, boxVR: boxVR, bprime: bprime, breve: breve, Breve: Breve, brvbar: brvbar, bscr: bscr, Bscr: Bscr, bsemi: bsemi, bsim: bsim, bsime: bsime, bsolb: bsolb, bsol: bsol, bsolhsub: bsolhsub, bull: bull, bullet: bullet, bump: bump, bumpE: bumpE, bumpe: bumpe, Bumpeq: Bumpeq, bumpeq: bumpeq, Cacute: Cacute, cacute: cacute, capand: capand, capbrcup: capbrcup, capcap: capcap, cap: cap, Cap: Cap, capcup: capcup, capdot: capdot, CapitalDifferentialD: CapitalDifferentialD, caps: caps, caret: caret, caron: caron, Cayleys: Cayleys, ccaps: ccaps, Ccaron: Ccaron, ccaron: ccaron, Ccedil: Ccedil, ccedil: ccedil, Ccirc: Ccirc, ccirc: ccirc, Cconint: Cconint, ccups: ccups, ccupssm: ccupssm, Cdot: Cdot, cdot: cdot, cedil: cedil, Cedilla: Cedilla, cemptyv: cemptyv, cent: cent, centerdot: centerdot, CenterDot: CenterDot, cfr: cfr, Cfr: Cfr, CHcy: CHcy, chcy: chcy, check: check, checkmark: checkmark, Chi: Chi, chi: chi, circ: circ, circeq: circeq, circlearrowleft: circlearrowleft, circlearrowright: circlearrowright, circledast: circledast, circledcirc: circledcirc, circleddash: circleddash, CircleDot: CircleDot, circledR: circledR, circledS: circledS, CircleMinus: CircleMinus, CirclePlus: CirclePlus, CircleTimes: CircleTimes, cir: cir, cirE: cirE, cire: cire, cirfnint: cirfnint, cirmid: cirmid, cirscir: cirscir, ClockwiseContourIntegral: ClockwiseContourIntegral, CloseCurlyDoubleQuote: CloseCurlyDoubleQuote, CloseCurlyQuote: CloseCurlyQuote, clubs: clubs, clubsuit: clubsuit, colon: colon, Colon: Colon, Colone: Colone, colone: colone, coloneq: coloneq, comma: comma, commat: commat, comp: comp, compfn: compfn, complement: complement, complexes: complexes, cong: cong, congdot: congdot, Congruent: Congruent, conint: conint, Conint: Conint, ContourIntegral: ContourIntegral, copf: copf, Copf: Copf, coprod: coprod, Coproduct: Coproduct, copy: copy, COPY: COPY, copysr: copysr, CounterClockwiseContourIntegral: CounterClockwiseContourIntegral, crarr: crarr, cross: cross, Cross: Cross, Cscr: Cscr, cscr: cscr, csub: csub, csube: csube, csup: csup, csupe: csupe, ctdot: ctdot, cudarrl: cudarrl, cudarrr: cudarrr, cuepr: cuepr, cuesc: cuesc, cularr: cularr, cularrp: cularrp, cupbrcap: cupbrcap, cupcap: cupcap, CupCap: CupCap, cup: cup, Cup: Cup, cupcup: cupcup, cupdot: cupdot, cupor: cupor, cups: cups, curarr: curarr, curarrm: curarrm, curlyeqprec: curlyeqprec, curlyeqsucc: curlyeqsucc, curlyvee: curlyvee, curlywedge: curlywedge, curren: curren, curvearrowleft: curvearrowleft, curvearrowright: curvearrowright, cuvee: cuvee, cuwed: cuwed, cwconint: cwconint, cwint: cwint, cylcty: cylcty, dagger: dagger, Dagger: Dagger, daleth: daleth, darr: darr, Darr: Darr, dArr: dArr, dash: dash, Dashv: Dashv, dashv: dashv, dbkarow: dbkarow, dblac: dblac, Dcaron: Dcaron, dcaron: dcaron, Dcy: Dcy, dcy: dcy, ddagger: ddagger, ddarr: ddarr, DD: DD, dd: dd, DDotrahd: DDotrahd, ddotseq: ddotseq, deg: deg, Del: Del, Delta: Delta, delta: delta, demptyv: demptyv, dfisht: dfisht, Dfr: Dfr, dfr: dfr, dHar: dHar, dharl: dharl, dharr: dharr, DiacriticalAcute: DiacriticalAcute, DiacriticalDot: DiacriticalDot, DiacriticalDoubleAcute: DiacriticalDoubleAcute, DiacriticalGrave: DiacriticalGrave, DiacriticalTilde: DiacriticalTilde, diam: diam, diamond: diamond, Diamond: Diamond, diamondsuit: diamondsuit, diams: diams, die: die, DifferentialD: DifferentialD, digamma: digamma, disin: disin, div: div, divide: divide, divideontimes: divideontimes, divonx: divonx, DJcy: DJcy, djcy: djcy, dlcorn: dlcorn, dlcrop: dlcrop, dollar: dollar, Dopf: Dopf, dopf: dopf, Dot: Dot, dot: dot, DotDot: DotDot, doteq: doteq, doteqdot: doteqdot, DotEqual: DotEqual, dotminus: dotminus, dotplus: dotplus, dotsquare: dotsquare, doublebarwedge: doublebarwedge, DoubleContourIntegral: DoubleContourIntegral, DoubleDot: DoubleDot, DoubleDownArrow: DoubleDownArrow, DoubleLeftArrow: DoubleLeftArrow, DoubleLeftRightArrow: DoubleLeftRightArrow, DoubleLeftTee: DoubleLeftTee, DoubleLongLeftArrow: DoubleLongLeftArrow, DoubleLongLeftRightArrow: DoubleLongLeftRightArrow, DoubleLongRightArrow: DoubleLongRightArrow, DoubleRightArrow: DoubleRightArrow, DoubleRightTee: DoubleRightTee, DoubleUpArrow: DoubleUpArrow, DoubleUpDownArrow: DoubleUpDownArrow, DoubleVerticalBar: DoubleVerticalBar, DownArrowBar: DownArrowBar, downarrow: downarrow, DownArrow: DownArrow, Downarrow: Downarrow, DownArrowUpArrow: DownArrowUpArrow, DownBreve: DownBreve, downdownarrows: downdownarrows, downharpoonleft: downharpoonleft, downharpoonright: downharpoonright, DownLeftRightVector: DownLeftRightVector, DownLeftTeeVector: DownLeftTeeVector, DownLeftVectorBar: DownLeftVectorBar, DownLeftVector: DownLeftVector, DownRightTeeVector: DownRightTeeVector, DownRightVectorBar: DownRightVectorBar, DownRightVector: DownRightVector, DownTeeArrow: DownTeeArrow, DownTee: DownTee, drbkarow: drbkarow, drcorn: drcorn, drcrop: drcrop, Dscr: Dscr, dscr: dscr, DScy: DScy, dscy: dscy, dsol: dsol, Dstrok: Dstrok, dstrok: dstrok, dtdot: dtdot, dtri: dtri, dtrif: dtrif, duarr: duarr, duhar: duhar, dwangle: dwangle, DZcy: DZcy, dzcy: dzcy, dzigrarr: dzigrarr, Eacute: Eacute, eacute: eacute, easter: easter, Ecaron: Ecaron, ecaron: ecaron, Ecirc: Ecirc, ecirc: ecirc, ecir: ecir, ecolon: ecolon, Ecy: Ecy, ecy: ecy, eDDot: eDDot, Edot: Edot, edot: edot, eDot: eDot, ee: ee, efDot: efDot, Efr: Efr, efr: efr, eg: eg, Egrave: Egrave, egrave: egrave, egs: egs, egsdot: egsdot, el: el, Element: Element, elinters: elinters, ell: ell, els: els, elsdot: elsdot, Emacr: Emacr, emacr: emacr, empty: empty, emptyset: emptyset, EmptySmallSquare: EmptySmallSquare, emptyv: emptyv, EmptyVerySmallSquare: EmptyVerySmallSquare, emsp13: emsp13, emsp14: emsp14, emsp: emsp, ENG: ENG, eng: eng, ensp: ensp, Eogon: Eogon, eogon: eogon, Eopf: Eopf, eopf: eopf, epar: epar, eparsl: eparsl, eplus: eplus, epsi: epsi, Epsilon: Epsilon, epsilon: epsilon, epsiv: epsiv, eqcirc: eqcirc, eqcolon: eqcolon, eqsim: eqsim, eqslantgtr: eqslantgtr, eqslantless: eqslantless, Equal: Equal, equals: equals, EqualTilde: EqualTilde, equest: equest, Equilibrium: Equilibrium, equiv: equiv, equivDD: equivDD, eqvparsl: eqvparsl, erarr: erarr, erDot: erDot, escr: escr, Escr: Escr, esdot: esdot, Esim: Esim, esim: esim, Eta: Eta, eta: eta, ETH: ETH, eth: eth, Euml: Euml, euml: euml, euro: euro, excl: excl, exist: exist, Exists: Exists, expectation: expectation, exponentiale: exponentiale, ExponentialE: ExponentialE, fallingdotseq: fallingdotseq, Fcy: Fcy, fcy: fcy, female: female, ffilig: ffilig, fflig: fflig, ffllig: ffllig, Ffr: Ffr, ffr: ffr, filig: filig, FilledSmallSquare: FilledSmallSquare, FilledVerySmallSquare: FilledVerySmallSquare, fjlig: fjlig, flat: flat, fllig: fllig, fltns: fltns, fnof: fnof, Fopf: Fopf, fopf: fopf, forall: forall, ForAll: ForAll, fork: fork, forkv: forkv, Fouriertrf: Fouriertrf, fpartint: fpartint, frac12: frac12, frac13: frac13, frac14: frac14, frac15: frac15, frac16: frac16, frac18: frac18, frac23: frac23, frac25: frac25, frac34: frac34, frac35: frac35, frac38: frac38, frac45: frac45, frac56: frac56, frac58: frac58, frac78: frac78, frasl: frasl, frown: frown, fscr: fscr, Fscr: Fscr, gacute: gacute, Gamma: Gamma, gamma: gamma, Gammad: Gammad, gammad: gammad, gap: gap, Gbreve: Gbreve, gbreve: gbreve, Gcedil: Gcedil, Gcirc: Gcirc, gcirc: gcirc, Gcy: Gcy, gcy: gcy, Gdot: Gdot, gdot: gdot, ge: ge, gE: gE, gEl: gEl, gel: gel, geq: geq, geqq: geqq, geqslant: geqslant, gescc: gescc, ges: ges, gesdot: gesdot, gesdoto: gesdoto, gesdotol: gesdotol, gesl: gesl, gesles: gesles, Gfr: Gfr, gfr: gfr, gg: gg, Gg: Gg, ggg: ggg, gimel: gimel, GJcy: GJcy, gjcy: gjcy, gla: gla, gl: gl, glE: glE, glj: glj, gnap: gnap, gnapprox: gnapprox, gne: gne, gnE: gnE, gneq: gneq, gneqq: gneqq, gnsim: gnsim, Gopf: Gopf, gopf: gopf, grave: grave, GreaterEqual: GreaterEqual, GreaterEqualLess: GreaterEqualLess, GreaterFullEqual: GreaterFullEqual, GreaterGreater: GreaterGreater, GreaterLess: GreaterLess, GreaterSlantEqual: GreaterSlantEqual, GreaterTilde: GreaterTilde, Gscr: Gscr, gscr: gscr, gsim: gsim, gsime: gsime, gsiml: gsiml, gtcc: gtcc, gtcir: gtcir, gt: gt$1, GT: GT, Gt: Gt, gtdot: gtdot, gtlPar: gtlPar, gtquest: gtquest, gtrapprox: gtrapprox, gtrarr: gtrarr, gtrdot: gtrdot, gtreqless: gtreqless, gtreqqless: gtreqqless, gtrless: gtrless, gtrsim: gtrsim, gvertneqq: gvertneqq, gvnE: gvnE, Hacek: Hacek, hairsp: hairsp, half: half, hamilt: hamilt, HARDcy: HARDcy, hardcy: hardcy, harrcir: harrcir, harr: harr, hArr: hArr, harrw: harrw, Hat: Hat, hbar: hbar, Hcirc: Hcirc, hcirc: hcirc, hearts: hearts, heartsuit: heartsuit, hellip: hellip, hercon: hercon, hfr: hfr, Hfr: Hfr, HilbertSpace: HilbertSpace, hksearow: hksearow, hkswarow: hkswarow, hoarr: hoarr, homtht: homtht, hookleftarrow: hookleftarrow, hookrightarrow: hookrightarrow, hopf: hopf, Hopf: Hopf, horbar: horbar, HorizontalLine: HorizontalLine, hscr: hscr, Hscr: Hscr, hslash: hslash, Hstrok: Hstrok, hstrok: hstrok, HumpDownHump: HumpDownHump, HumpEqual: HumpEqual, hybull: hybull, hyphen: hyphen, Iacute: Iacute, iacute: iacute, ic: ic, Icirc: Icirc, icirc: icirc, Icy: Icy, icy: icy, Idot: Idot, IEcy: IEcy, iecy: iecy, iexcl: iexcl, iff: iff, ifr: ifr, Ifr: Ifr, Igrave: Igrave, igrave: igrave, ii: ii, iiiint: iiiint, iiint: iiint, iinfin: iinfin, iiota: iiota, IJlig: IJlig, ijlig: ijlig, Imacr: Imacr, imacr: imacr, image: image, ImaginaryI: ImaginaryI, imagline: imagline, imagpart: imagpart, imath: imath, Im: Im, imof: imof, imped: imped, Implies: Implies, incare: incare, infin: infin, infintie: infintie, inodot: inodot, intcal: intcal, int: int, Int: Int, integers: integers, Integral: Integral, intercal: intercal, Intersection: Intersection, intlarhk: intlarhk, intprod: intprod, InvisibleComma: InvisibleComma, InvisibleTimes: InvisibleTimes, IOcy: IOcy, iocy: iocy, Iogon: Iogon, iogon: iogon, Iopf: Iopf, iopf: iopf, Iota: Iota, iota: iota, iprod: iprod, iquest: iquest, iscr: iscr, Iscr: Iscr, isin: isin, isindot: isindot, isinE: isinE, isins: isins, isinsv: isinsv, isinv: isinv, it: it, Itilde: Itilde, itilde: itilde, Iukcy: Iukcy, iukcy: iukcy, Iuml: Iuml, iuml: iuml, Jcirc: Jcirc, jcirc: jcirc, Jcy: Jcy, jcy: jcy, Jfr: Jfr, jfr: jfr, jmath: jmath, Jopf: Jopf, jopf: jopf, Jscr: Jscr, jscr: jscr, Jsercy: Jsercy, jsercy: jsercy, Jukcy: Jukcy, jukcy: jukcy, Kappa: Kappa, kappa: kappa, kappav: kappav, Kcedil: Kcedil, kcedil: kcedil, Kcy: Kcy, kcy: kcy, Kfr: Kfr, kfr: kfr, kgreen: kgreen, KHcy: KHcy, khcy: khcy, KJcy: KJcy, kjcy: kjcy, Kopf: Kopf, kopf: kopf, Kscr: Kscr, kscr: kscr, lAarr: lAarr, Lacute: Lacute, lacute: lacute, laemptyv: laemptyv, lagran: lagran, Lambda: Lambda, lambda: lambda, lang: lang, Lang: Lang, langd: langd, langle: langle, lap: lap, Laplacetrf: Laplacetrf, laquo: laquo, larrb: larrb, larrbfs: larrbfs, larr: larr, Larr: Larr, lArr: lArr, larrfs: larrfs, larrhk: larrhk, larrlp: larrlp, larrpl: larrpl, larrsim: larrsim, larrtl: larrtl, latail: latail, lAtail: lAtail, lat: lat, late: late, lates: lates, lbarr: lbarr, lBarr: lBarr, lbbrk: lbbrk, lbrace: lbrace, lbrack: lbrack, lbrke: lbrke, lbrksld: lbrksld, lbrkslu: lbrkslu, Lcaron: Lcaron, lcaron: lcaron, Lcedil: Lcedil, lcedil: lcedil, lceil: lceil, lcub: lcub, Lcy: Lcy, lcy: lcy, ldca: ldca, ldquo: ldquo, ldquor: ldquor, ldrdhar: ldrdhar, ldrushar: ldrushar, ldsh: ldsh, le: le, lE: lE, LeftAngleBracket: LeftAngleBracket, LeftArrowBar: LeftArrowBar, leftarrow: leftarrow, LeftArrow: LeftArrow, Leftarrow: Leftarrow, LeftArrowRightArrow: LeftArrowRightArrow, leftarrowtail: leftarrowtail, LeftCeiling: LeftCeiling, LeftDoubleBracket: LeftDoubleBracket, LeftDownTeeVector: LeftDownTeeVector, LeftDownVectorBar: LeftDownVectorBar, LeftDownVector: LeftDownVector, LeftFloor: LeftFloor, leftharpoondown: leftharpoondown, leftharpoonup: leftharpoonup, leftleftarrows: leftleftarrows, leftrightarrow: leftrightarrow, LeftRightArrow: LeftRightArrow, Leftrightarrow: Leftrightarrow, leftrightarrows: leftrightarrows, leftrightharpoons: leftrightharpoons, leftrightsquigarrow: leftrightsquigarrow, LeftRightVector: LeftRightVector, LeftTeeArrow: LeftTeeArrow, LeftTee: LeftTee, LeftTeeVector: LeftTeeVector, leftthreetimes: leftthreetimes, LeftTriangleBar: LeftTriangleBar, LeftTriangle: LeftTriangle, LeftTriangleEqual: LeftTriangleEqual, LeftUpDownVector: LeftUpDownVector, LeftUpTeeVector: LeftUpTeeVector, LeftUpVectorBar: LeftUpVectorBar, LeftUpVector: LeftUpVector, LeftVectorBar: LeftVectorBar, LeftVector: LeftVector, lEg: lEg, leg: leg, leq: leq, leqq: leqq, leqslant: leqslant, lescc: lescc, les: les, lesdot: lesdot, lesdoto: lesdoto, lesdotor: lesdotor, lesg: lesg, lesges: lesges, lessapprox: lessapprox, lessdot: lessdot, lesseqgtr: lesseqgtr, lesseqqgtr: lesseqqgtr, LessEqualGreater: LessEqualGreater, LessFullEqual: LessFullEqual, LessGreater: LessGreater, lessgtr: lessgtr, LessLess: LessLess, lesssim: lesssim, LessSlantEqual: LessSlantEqual, LessTilde: LessTilde, lfisht: lfisht, lfloor: lfloor, Lfr: Lfr, lfr: lfr, lg: lg, lgE: lgE, lHar: lHar, lhard: lhard, lharu: lharu, lharul: lharul, lhblk: lhblk, LJcy: LJcy, ljcy: ljcy, llarr: llarr, ll: ll, Ll: Ll, llcorner: llcorner, Lleftarrow: Lleftarrow, llhard: llhard, lltri: lltri, Lmidot: Lmidot, lmidot: lmidot, lmoustache: lmoustache, lmoust: lmoust, lnap: lnap, lnapprox: lnapprox, lne: lne, lnE: lnE, lneq: lneq, lneqq: lneqq, lnsim: lnsim, loang: loang, loarr: loarr, lobrk: lobrk, longleftarrow: longleftarrow, LongLeftArrow: LongLeftArrow, Longleftarrow: Longleftarrow, longleftrightarrow: longleftrightarrow, LongLeftRightArrow: LongLeftRightArrow, Longleftrightarrow: Longleftrightarrow, longmapsto: longmapsto, longrightarrow: longrightarrow, LongRightArrow: LongRightArrow, Longrightarrow: Longrightarrow, looparrowleft: looparrowleft, looparrowright: looparrowright, lopar: lopar, Lopf: Lopf, lopf: lopf, loplus: loplus, lotimes: lotimes, lowast: lowast, lowbar: lowbar, LowerLeftArrow: LowerLeftArrow, LowerRightArrow: LowerRightArrow, loz: loz, lozenge: lozenge, lozf: lozf, lpar: lpar, lparlt: lparlt, lrarr: lrarr, lrcorner: lrcorner, lrhar: lrhar, lrhard: lrhard, lrm: lrm, lrtri: lrtri, lsaquo: lsaquo, lscr: lscr, Lscr: Lscr, lsh: lsh, Lsh: Lsh, lsim: lsim, lsime: lsime, lsimg: lsimg, lsqb: lsqb, lsquo: lsquo, lsquor: lsquor, Lstrok: Lstrok, lstrok: lstrok, ltcc: ltcc, ltcir: ltcir, lt: lt$1, LT: LT, Lt: Lt, ltdot: ltdot, lthree: lthree, ltimes: ltimes, ltlarr: ltlarr, ltquest: ltquest, ltri: ltri, ltrie: ltrie, ltrif: ltrif, ltrPar: ltrPar, lurdshar: lurdshar, luruhar: luruhar, lvertneqq: lvertneqq, lvnE: lvnE, macr: macr, male: male, malt: malt, maltese: maltese, map: map, mapsto: mapsto, mapstodown: mapstodown, mapstoleft: mapstoleft, mapstoup: mapstoup, marker: marker, mcomma: mcomma, Mcy: Mcy, mcy: mcy, mdash: mdash, mDDot: mDDot, measuredangle: measuredangle, MediumSpace: MediumSpace, Mellintrf: Mellintrf, Mfr: Mfr, mfr: mfr, mho: mho, micro: micro, midast: midast, midcir: midcir, mid: mid, middot: middot, minusb: minusb, minus: minus, minusd: minusd, minusdu: minusdu, MinusPlus: MinusPlus, mlcp: mlcp, mldr: mldr, mnplus: mnplus, models: models, Mopf: Mopf, mopf: mopf, mp: mp, mscr: mscr, Mscr: Mscr, mstpos: mstpos, Mu: Mu, mu: mu, multimap: multimap, mumap: mumap, nabla: nabla, Nacute: Nacute, nacute: nacute, nang: nang, nap: nap, napE: napE, napid: napid, napos: napos, napprox: napprox, natural: natural, naturals: naturals, natur: natur, nbsp: nbsp, nbump: nbump, nbumpe: nbumpe, ncap: ncap, Ncaron: Ncaron, ncaron: ncaron, Ncedil: Ncedil, ncedil: ncedil, ncong: ncong, ncongdot: ncongdot, ncup: ncup, Ncy: Ncy, ncy: ncy, ndash: ndash, nearhk: nearhk, nearr: nearr, neArr: neArr, nearrow: nearrow, ne: ne, nedot: nedot, NegativeMediumSpace: NegativeMediumSpace, NegativeThickSpace: NegativeThickSpace, NegativeThinSpace: NegativeThinSpace, NegativeVeryThinSpace: NegativeVeryThinSpace, nequiv: nequiv, nesear: nesear, nesim: nesim, NestedGreaterGreater: NestedGreaterGreater, NestedLessLess: NestedLessLess, NewLine: NewLine, nexist: nexist, nexists: nexists, Nfr: Nfr, nfr: nfr, ngE: ngE, nge: nge, ngeq: ngeq, ngeqq: ngeqq, ngeqslant: ngeqslant, nges: nges, nGg: nGg, ngsim: ngsim, nGt: nGt, ngt: ngt, ngtr: ngtr, nGtv: nGtv, nharr: nharr, nhArr: nhArr, nhpar: nhpar, ni: ni, nis: nis, nisd: nisd, niv: niv, NJcy: NJcy, njcy: njcy, nlarr: nlarr, nlArr: nlArr, nldr: nldr, nlE: nlE, nle: nle, nleftarrow: nleftarrow, nLeftarrow: nLeftarrow, nleftrightarrow: nleftrightarrow, nLeftrightarrow: nLeftrightarrow, nleq: nleq, nleqq: nleqq, nleqslant: nleqslant, nles: nles, nless: nless, nLl: nLl, nlsim: nlsim, nLt: nLt, nlt: nlt, nltri: nltri, nltrie: nltrie, nLtv: nLtv, nmid: nmid, NoBreak: NoBreak, NonBreakingSpace: NonBreakingSpace, nopf: nopf, Nopf: Nopf, Not: Not, not: not, NotCongruent: NotCongruent, NotCupCap: NotCupCap, NotDoubleVerticalBar: NotDoubleVerticalBar, NotElement: NotElement, NotEqual: NotEqual, NotEqualTilde: NotEqualTilde, NotExists: NotExists, NotGreater: NotGreater, NotGreaterEqual: NotGreaterEqual, NotGreaterFullEqual: NotGreaterFullEqual, NotGreaterGreater: NotGreaterGreater, NotGreaterLess: NotGreaterLess, NotGreaterSlantEqual: NotGreaterSlantEqual, NotGreaterTilde: NotGreaterTilde, NotHumpDownHump: NotHumpDownHump, NotHumpEqual: NotHumpEqual, notin: notin, notindot: notindot, notinE: notinE, notinva: notinva, notinvb: notinvb, notinvc: notinvc, NotLeftTriangleBar: NotLeftTriangleBar, NotLeftTriangle: NotLeftTriangle, NotLeftTriangleEqual: NotLeftTriangleEqual, NotLess: NotLess, NotLessEqual: NotLessEqual, NotLessGreater: NotLessGreater, NotLessLess: NotLessLess, NotLessSlantEqual: NotLessSlantEqual, NotLessTilde: NotLessTilde, NotNestedGreaterGreater: NotNestedGreaterGreater, NotNestedLessLess: NotNestedLessLess, notni: notni, notniva: notniva, notnivb: notnivb, notnivc: notnivc, NotPrecedes: NotPrecedes, NotPrecedesEqual: NotPrecedesEqual, NotPrecedesSlantEqual: NotPrecedesSlantEqual, NotReverseElement: NotReverseElement, NotRightTriangleBar: NotRightTriangleBar, NotRightTriangle: NotRightTriangle, NotRightTriangleEqual: NotRightTriangleEqual, NotSquareSubset: NotSquareSubset, NotSquareSubsetEqual: NotSquareSubsetEqual, NotSquareSuperset: NotSquareSuperset, NotSquareSupersetEqual: NotSquareSupersetEqual, NotSubset: NotSubset, NotSubsetEqual: NotSubsetEqual, NotSucceeds: NotSucceeds, NotSucceedsEqual: NotSucceedsEqual, NotSucceedsSlantEqual: NotSucceedsSlantEqual, NotSucceedsTilde: NotSucceedsTilde, NotSuperset: NotSuperset, NotSupersetEqual: NotSupersetEqual, NotTilde: NotTilde, NotTildeEqual: NotTildeEqual, NotTildeFullEqual: NotTildeFullEqual, NotTildeTilde: NotTildeTilde, NotVerticalBar: NotVerticalBar, nparallel: nparallel, npar: npar, nparsl: nparsl, npart: npart, npolint: npolint, npr: npr, nprcue: nprcue, nprec: nprec, npreceq: npreceq, npre: npre, nrarrc: nrarrc, nrarr: nrarr, nrArr: nrArr, nrarrw: nrarrw, nrightarrow: nrightarrow, nRightarrow: nRightarrow, nrtri: nrtri, nrtrie: nrtrie, nsc: nsc, nsccue: nsccue, nsce: nsce, Nscr: Nscr, nscr: nscr, nshortmid: nshortmid, nshortparallel: nshortparallel, nsim: nsim, nsime: nsime, nsimeq: nsimeq, nsmid: nsmid, nspar: nspar, nsqsube: nsqsube, nsqsupe: nsqsupe, nsub: nsub, nsubE: nsubE, nsube: nsube, nsubset: nsubset, nsubseteq: nsubseteq, nsubseteqq: nsubseteqq, nsucc: nsucc, nsucceq: nsucceq, nsup: nsup, nsupE: nsupE, nsupe: nsupe, nsupset: nsupset, nsupseteq: nsupseteq, nsupseteqq: nsupseteqq, ntgl: ntgl, Ntilde: Ntilde, ntilde: ntilde, ntlg: ntlg, ntriangleleft: ntriangleleft, ntrianglelefteq: ntrianglelefteq, ntriangleright: ntriangleright, ntrianglerighteq: ntrianglerighteq, Nu: Nu, nu: nu, num: num, numero: numero, numsp: numsp, nvap: nvap, nvdash: nvdash, nvDash: nvDash, nVdash: nVdash, nVDash: nVDash, nvge: nvge, nvgt: nvgt, nvHarr: nvHarr, nvinfin: nvinfin, nvlArr: nvlArr, nvle: nvle, nvlt: nvlt, nvltrie: nvltrie, nvrArr: nvrArr, nvrtrie: nvrtrie, nvsim: nvsim, nwarhk: nwarhk, nwarr: nwarr, nwArr: nwArr, nwarrow: nwarrow, nwnear: nwnear, Oacute: Oacute, oacute: oacute, oast: oast, Ocirc: Ocirc, ocirc: ocirc, ocir: ocir, Ocy: Ocy, ocy: ocy, odash: odash, Odblac: Odblac, odblac: odblac, odiv: odiv, odot: odot, odsold: odsold, OElig: OElig, oelig: oelig, ofcir: ofcir, Ofr: Ofr, ofr: ofr, ogon: ogon, Ograve: Ograve, ograve: ograve, ogt: ogt, ohbar: ohbar, ohm: ohm, oint: oint, olarr: olarr, olcir: olcir, olcross: olcross, oline: oline, olt: olt, Omacr: Omacr, omacr: omacr, Omega: Omega, omega: omega, Omicron: Omicron, omicron: omicron, omid: omid, ominus: ominus, Oopf: Oopf, oopf: oopf, opar: opar, OpenCurlyDoubleQuote: OpenCurlyDoubleQuote, OpenCurlyQuote: OpenCurlyQuote, operp: operp, oplus: oplus, orarr: orarr, Or: Or, or: or, ord: ord, order: order, orderof: orderof, ordf: ordf, ordm: ordm, origof: origof, oror: oror, orslope: orslope, orv: orv, oS: oS, Oscr: Oscr, oscr: oscr, Oslash: Oslash, oslash: oslash, osol: osol, Otilde: Otilde, otilde: otilde, otimesas: otimesas, Otimes: Otimes, otimes: otimes, Ouml: Ouml, ouml: ouml, ovbar: ovbar, OverBar: OverBar, OverBrace: OverBrace, OverBracket: OverBracket, OverParenthesis: OverParenthesis, para: para, parallel: parallel, par: par, parsim: parsim, parsl: parsl, part: part, PartialD: PartialD, Pcy: Pcy, pcy: pcy, percnt: percnt, period: period, permil: permil, perp: perp, pertenk: pertenk, Pfr: Pfr, pfr: pfr, Phi: Phi, phi: phi, phiv: phiv, phmmat: phmmat, phone: phone, Pi: Pi, pi: pi, pitchfork: pitchfork, piv: piv, planck: planck, planckh: planckh, plankv: plankv, plusacir: plusacir, plusb: plusb, pluscir: pluscir, plus: plus, plusdo: plusdo, plusdu: plusdu, pluse: pluse, PlusMinus: PlusMinus, plusmn: plusmn, plussim: plussim, plustwo: plustwo, pm: pm, Poincareplane: Poincareplane, pointint: pointint, popf: popf, Popf: Popf, pound: pound, prap: prap, Pr: Pr, pr: pr, prcue: prcue, precapprox: precapprox, prec: prec, preccurlyeq: preccurlyeq, Precedes: Precedes, PrecedesEqual: PrecedesEqual, PrecedesSlantEqual: PrecedesSlantEqual, PrecedesTilde: PrecedesTilde, preceq: preceq, precnapprox: precnapprox, precneqq: precneqq, precnsim: precnsim, pre: pre, prE: prE, precsim: precsim, prime: prime, Prime: Prime, primes: primes, prnap: prnap, prnE: prnE, prnsim: prnsim, prod: prod, Product: Product, profalar: profalar, profline: profline, profsurf: profsurf, prop: prop, Proportional: Proportional, Proportion: Proportion, propto: propto, prsim: prsim, prurel: prurel, Pscr: Pscr, pscr: pscr, Psi: Psi, psi: psi, puncsp: puncsp, Qfr: Qfr, qfr: qfr, qint: qint, qopf: qopf, Qopf: Qopf, qprime: qprime, Qscr: Qscr, qscr: qscr, quaternions: quaternions, quatint: quatint, quest: quest, questeq: questeq, quot: quot$1, QUOT: QUOT, rAarr: rAarr, race: race, Racute: Racute, racute: racute, radic: radic, raemptyv: raemptyv, rang: rang, Rang: Rang, rangd: rangd, range: range, rangle: rangle, raquo: raquo, rarrap: rarrap, rarrb: rarrb, rarrbfs: rarrbfs, rarrc: rarrc, rarr: rarr, Rarr: Rarr, rArr: rArr, rarrfs: rarrfs, rarrhk: rarrhk, rarrlp: rarrlp, rarrpl: rarrpl, rarrsim: rarrsim, Rarrtl: Rarrtl, rarrtl: rarrtl, rarrw: rarrw, ratail: ratail, rAtail: rAtail, ratio: ratio, rationals: rationals, rbarr: rbarr, rBarr: rBarr, RBarr: RBarr, rbbrk: rbbrk, rbrace: rbrace, rbrack: rbrack, rbrke: rbrke, rbrksld: rbrksld, rbrkslu: rbrkslu, Rcaron: Rcaron, rcaron: rcaron, Rcedil: Rcedil, rcedil: rcedil, rceil: rceil, rcub: rcub, Rcy: Rcy, rcy: rcy, rdca: rdca, rdldhar: rdldhar, rdquo: rdquo, rdquor: rdquor, rdsh: rdsh, real: real, realine: realine, realpart: realpart, reals: reals, Re: Re, rect: rect, reg: reg, REG: REG, ReverseElement: ReverseElement, ReverseEquilibrium: ReverseEquilibrium, ReverseUpEquilibrium: ReverseUpEquilibrium, rfisht: rfisht, rfloor: rfloor, rfr: rfr, Rfr: Rfr, rHar: rHar, rhard: rhard, rharu: rharu, rharul: rharul, Rho: Rho, rho: rho, rhov: rhov, RightAngleBracket: RightAngleBracket, RightArrowBar: RightArrowBar, rightarrow: rightarrow, RightArrow: RightArrow, Rightarrow: Rightarrow, RightArrowLeftArrow: RightArrowLeftArrow, rightarrowtail: rightarrowtail, RightCeiling: RightCeiling, RightDoubleBracket: RightDoubleBracket, RightDownTeeVector: RightDownTeeVector, RightDownVectorBar: RightDownVectorBar, RightDownVector: RightDownVector, RightFloor: RightFloor, rightharpoondown: rightharpoondown, rightharpoonup: rightharpoonup, rightleftarrows: rightleftarrows, rightleftharpoons: rightleftharpoons, rightrightarrows: rightrightarrows, rightsquigarrow: rightsquigarrow, RightTeeArrow: RightTeeArrow, RightTee: RightTee, RightTeeVector: RightTeeVector, rightthreetimes: rightthreetimes, RightTriangleBar: RightTriangleBar, RightTriangle: RightTriangle, RightTriangleEqual: RightTriangleEqual, RightUpDownVector: RightUpDownVector, RightUpTeeVector: RightUpTeeVector, RightUpVectorBar: RightUpVectorBar, RightUpVector: RightUpVector, RightVectorBar: RightVectorBar, RightVector: RightVector, ring: ring, risingdotseq: risingdotseq, rlarr: rlarr, rlhar: rlhar, rlm: rlm, rmoustache: rmoustache, rmoust: rmoust, rnmid: rnmid, roang: roang, roarr: roarr, robrk: robrk, ropar: ropar, ropf: ropf, Ropf: Ropf, roplus: roplus, rotimes: rotimes, RoundImplies: RoundImplies, rpar: rpar, rpargt: rpargt, rppolint: rppolint, rrarr: rrarr, Rrightarrow: Rrightarrow, rsaquo: rsaquo, rscr: rscr, Rscr: Rscr, rsh: rsh, Rsh: Rsh, rsqb: rsqb, rsquo: rsquo, rsquor: rsquor, rthree: rthree, rtimes: rtimes, rtri: rtri, rtrie: rtrie, rtrif: rtrif, rtriltri: rtriltri, RuleDelayed: RuleDelayed, ruluhar: ruluhar, rx: rx, Sacute: Sacute, sacute: sacute, sbquo: sbquo, scap: scap, Scaron: Scaron, scaron: scaron, Sc: Sc, sc: sc, sccue: sccue, sce: sce, scE: scE, Scedil: Scedil, scedil: scedil, Scirc: Scirc, scirc: scirc, scnap: scnap, scnE: scnE, scnsim: scnsim, scpolint: scpolint, scsim: scsim, Scy: Scy, scy: scy, sdotb: sdotb, sdot: sdot, sdote: sdote, searhk: searhk, searr: searr, seArr: seArr, searrow: searrow, sect: sect, semi: semi, seswar: seswar, setminus: setminus, setmn: setmn, sext: sext, Sfr: Sfr, sfr: sfr, sfrown: sfrown, sharp: sharp, SHCHcy: SHCHcy, shchcy: shchcy, SHcy: SHcy, shcy: shcy, ShortDownArrow: ShortDownArrow, ShortLeftArrow: ShortLeftArrow, shortmid: shortmid, shortparallel: shortparallel, ShortRightArrow: ShortRightArrow, ShortUpArrow: ShortUpArrow, shy: shy, Sigma: Sigma, sigma: sigma, sigmaf: sigmaf, sigmav: sigmav, sim: sim, simdot: simdot, sime: sime, simeq: simeq, simg: simg, simgE: simgE, siml: siml, simlE: simlE, simne: simne, simplus: simplus, simrarr: simrarr, slarr: slarr, SmallCircle: SmallCircle, smallsetminus: smallsetminus, smashp: smashp, smeparsl: smeparsl, smid: smid, smile: smile, smt: smt, smte: smte, smtes: smtes, SOFTcy: SOFTcy, softcy: softcy, solbar: solbar, solb: solb, sol: sol, Sopf: Sopf, sopf: sopf, spades: spades, spadesuit: spadesuit, spar: spar, sqcap: sqcap, sqcaps: sqcaps, sqcup: sqcup, sqcups: sqcups, Sqrt: Sqrt, sqsub: sqsub, sqsube: sqsube, sqsubset: sqsubset, sqsubseteq: sqsubseteq, sqsup: sqsup, sqsupe: sqsupe, sqsupset: sqsupset, sqsupseteq: sqsupseteq, square: square, Square: Square, SquareIntersection: SquareIntersection, SquareSubset: SquareSubset, SquareSubsetEqual: SquareSubsetEqual, SquareSuperset: SquareSuperset, SquareSupersetEqual: SquareSupersetEqual, SquareUnion: SquareUnion, squarf: squarf, squ: squ, squf: squf, srarr: srarr, Sscr: Sscr, sscr: sscr, ssetmn: ssetmn, ssmile: ssmile, sstarf: sstarf, Star: Star, star: star, starf: starf, straightepsilon: straightepsilon, straightphi: straightphi, strns: strns, sub: sub, Sub: Sub, subdot: subdot, subE: subE, sube: sube, subedot: subedot, submult: submult, subnE: subnE, subne: subne, subplus: subplus, subrarr: subrarr, subset: subset, Subset: Subset, subseteq: subseteq, subseteqq: subseteqq, SubsetEqual: SubsetEqual, subsetneq: subsetneq, subsetneqq: subsetneqq, subsim: subsim, subsub: subsub, subsup: subsup, succapprox: succapprox, succ: succ, succcurlyeq: succcurlyeq, Succeeds: Succeeds, SucceedsEqual: SucceedsEqual, SucceedsSlantEqual: SucceedsSlantEqual, SucceedsTilde: SucceedsTilde, succeq: succeq, succnapprox: succnapprox, succneqq: succneqq, succnsim: succnsim, succsim: succsim, SuchThat: SuchThat, sum: sum, Sum: Sum, sung: sung, sup1: sup1, sup2: sup2, sup3: sup3, sup: sup, Sup: Sup, supdot: supdot, supdsub: supdsub, supE: supE, supe: supe, supedot: supedot, Superset: Superset, SupersetEqual: SupersetEqual, suphsol: suphsol, suphsub: suphsub, suplarr: suplarr, supmult: supmult, supnE: supnE, supne: supne, supplus: supplus, supset: supset, Supset: Supset, supseteq: supseteq, supseteqq: supseteqq, supsetneq: supsetneq, supsetneqq: supsetneqq, supsim: supsim, supsub: supsub, supsup: supsup, swarhk: swarhk, swarr: swarr, swArr: swArr, swarrow: swarrow, swnwar: swnwar, szlig: szlig, Tab: Tab, target: target, Tau: Tau, tau: tau, tbrk: tbrk, Tcaron: Tcaron, tcaron: tcaron, Tcedil: Tcedil, tcedil: tcedil, Tcy: Tcy, tcy: tcy, tdot: tdot, telrec: telrec, Tfr: Tfr, tfr: tfr, there4: there4, therefore: therefore, Therefore: Therefore, Theta: Theta, theta: theta, thetasym: thetasym, thetav: thetav, thickapprox: thickapprox, thicksim: thicksim, ThickSpace: ThickSpace, ThinSpace: ThinSpace, thinsp: thinsp, thkap: thkap, thksim: thksim, THORN: THORN, thorn: thorn, tilde: tilde, Tilde: Tilde, TildeEqual: TildeEqual, TildeFullEqual: TildeFullEqual, TildeTilde: TildeTilde, timesbar: timesbar, timesb: timesb, times: times, timesd: timesd, tint: tint, toea: toea, topbot: topbot, topcir: topcir, top: top, Topf: Topf, topf: topf, topfork: topfork, tosa: tosa, tprime: tprime, trade: trade, TRADE: TRADE, triangle: triangle, triangledown: triangledown, triangleleft: triangleleft, trianglelefteq: trianglelefteq, triangleq: triangleq, triangleright: triangleright, trianglerighteq: trianglerighteq, tridot: tridot, trie: trie, triminus: triminus, TripleDot: TripleDot, triplus: triplus, trisb: trisb, tritime: tritime, trpezium: trpezium, Tscr: Tscr, tscr: tscr, TScy: TScy, tscy: tscy, TSHcy: TSHcy, tshcy: tshcy, Tstrok: Tstrok, tstrok: tstrok, twixt: twixt, twoheadleftarrow: twoheadleftarrow, twoheadrightarrow: twoheadrightarrow, Uacute: Uacute, uacute: uacute, uarr: uarr, Uarr: Uarr, uArr: uArr, Uarrocir: Uarrocir, Ubrcy: Ubrcy, ubrcy: ubrcy, Ubreve: Ubreve, ubreve: ubreve, Ucirc: Ucirc, ucirc: ucirc, Ucy: Ucy, ucy: ucy, udarr: udarr, Udblac: Udblac, udblac: udblac, udhar: udhar, ufisht: ufisht, Ufr: Ufr, ufr: ufr, Ugrave: Ugrave, ugrave: ugrave, uHar: uHar, uharl: uharl, uharr: uharr, uhblk: uhblk, ulcorn: ulcorn, ulcorner: ulcorner, ulcrop: ulcrop, ultri: ultri, Umacr: Umacr, umacr: umacr, uml: uml, UnderBar: UnderBar, UnderBrace: UnderBrace, UnderBracket: UnderBracket, UnderParenthesis: UnderParenthesis, Union: Union, UnionPlus: UnionPlus, Uogon: Uogon, uogon: uogon, Uopf: Uopf, uopf: uopf, UpArrowBar: UpArrowBar, uparrow: uparrow, UpArrow: UpArrow, Uparrow: Uparrow, UpArrowDownArrow: UpArrowDownArrow, updownarrow: updownarrow, UpDownArrow: UpDownArrow, Updownarrow: Updownarrow, UpEquilibrium: UpEquilibrium, upharpoonleft: upharpoonleft, upharpoonright: upharpoonright, uplus: uplus, UpperLeftArrow: UpperLeftArrow, UpperRightArrow: UpperRightArrow, upsi: upsi, Upsi: Upsi, upsih: upsih, Upsilon: Upsilon, upsilon: upsilon, UpTeeArrow: UpTeeArrow, UpTee: UpTee, upuparrows: upuparrows, urcorn: urcorn, urcorner: urcorner, urcrop: urcrop, Uring: Uring, uring: uring, urtri: urtri, Uscr: Uscr, uscr: uscr, utdot: utdot, Utilde: Utilde, utilde: utilde, utri: utri, utrif: utrif, uuarr: uuarr, Uuml: Uuml, uuml: uuml, uwangle: uwangle, vangrt: vangrt, varepsilon: varepsilon, varkappa: varkappa, varnothing: varnothing, varphi: varphi, varpi: varpi, varpropto: varpropto, varr: varr, vArr: vArr, varrho: varrho, varsigma: varsigma, varsubsetneq: varsubsetneq, varsubsetneqq: varsubsetneqq, varsupsetneq: varsupsetneq, varsupsetneqq: varsupsetneqq, vartheta: vartheta, vartriangleleft: vartriangleleft, vartriangleright: vartriangleright, vBar: vBar, Vbar: Vbar, vBarv: vBarv, Vcy: Vcy, vcy: vcy, vdash: vdash, vDash: vDash, Vdash: Vdash, VDash: VDash, Vdashl: Vdashl, veebar: veebar, vee: vee, Vee: Vee, veeeq: veeeq, vellip: vellip, verbar: verbar, Verbar: Verbar, vert: vert, Vert: Vert, VerticalBar: VerticalBar, VerticalLine: VerticalLine, VerticalSeparator: VerticalSeparator, VerticalTilde: VerticalTilde, VeryThinSpace: VeryThinSpace, Vfr: Vfr, vfr: vfr, vltri: vltri, vnsub: vnsub, vnsup: vnsup, Vopf: Vopf, vopf: vopf, vprop: vprop, vrtri: vrtri, Vscr: Vscr, vscr: vscr, vsubnE: vsubnE, vsubne: vsubne, vsupnE: vsupnE, vsupne: vsupne, Vvdash: Vvdash, vzigzag: vzigzag, Wcirc: Wcirc, wcirc: wcirc, wedbar: wedbar, wedge: wedge, Wedge: Wedge, wedgeq: wedgeq, weierp: weierp, Wfr: Wfr, wfr: wfr, Wopf: Wopf, wopf: wopf, wp: wp, wr: wr, wreath: wreath, Wscr: Wscr, wscr: wscr, xcap: xcap, xcirc: xcirc, xcup: xcup, xdtri: xdtri, Xfr: Xfr, xfr: xfr, xharr: xharr, xhArr: xhArr, Xi: Xi, xi: xi, xlarr: xlarr, xlArr: xlArr, xmap: xmap, xnis: xnis, xodot: xodot, Xopf: Xopf, xopf: xopf, xoplus: xoplus, xotime: xotime, xrarr: xrarr, xrArr: xrArr, Xscr: Xscr, xscr: xscr, xsqcup: xsqcup, xuplus: xuplus, xutri: xutri, xvee: xvee, xwedge: xwedge, Yacute: Yacute, yacute: yacute, YAcy: YAcy, yacy: yacy, Ycirc: Ycirc, ycirc: ycirc, Ycy: Ycy, ycy: ycy, yen: yen, Yfr: Yfr, yfr: yfr, YIcy: YIcy, yicy: yicy, Yopf: Yopf, yopf: yopf, Yscr: Yscr, yscr: yscr, YUcy: YUcy, yucy: yucy, yuml: yuml, Yuml: Yuml, Zacute: Zacute, zacute: zacute, Zcaron: Zcaron, zcaron: zcaron, Zcy: Zcy, zcy: zcy, Zdot: Zdot, zdot: zdot, zeetrf: zeetrf, ZeroWidthSpace: ZeroWidthSpace, Zeta: Zeta, zeta: zeta, zfr: zfr, Zfr: Zfr, ZHcy: ZHcy, zhcy: zhcy, zigrarr: zigrarr, zopf: zopf, Zopf: Zopf, Zscr: Zscr, zscr: zscr, zwj: zwj, zwnj: zwnj, 'default': entities }); var require$$1 = getCjsExportFromNamespace(entities$1); var encodeTrie = createCommonjsModule(function (module, exports) { var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getTrie = exports.encodeHTMLTrieRe = exports.getCodePoint = void 0; var entities_json_1 = __importDefault(require$$1); function isHighSurrugate(c) { return (c & 64512 /* Mask */) === 55296 /* High */; } // For compatibility with node < 4, we wrap `codePointAt` exports.getCodePoint = // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition String.prototype.codePointAt != null ? function (str, index) { return str.codePointAt(index); } : // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae function (c, index) { return isHighSurrugate(c.charCodeAt(index)) ? (c.charCodeAt(index) - 55296 /* High */) * 0x400 + c.charCodeAt(index + 1) - 0xdc00 + 0x10000 : c.charCodeAt(index); }; var htmlTrie = getTrie(entities_json_1.default); function encodeHTMLTrieRe(regExp, str) { var _a; var ret = ""; var lastIdx = 0; var match; while ((match = regExp.exec(str)) !== null) { var i = match.index; var char = str.charCodeAt(i); var next = htmlTrie.get(char); if (next) { if (next.next != null && i + 1 < str.length) { var value = (_a = next.next.get(str.charCodeAt(i + 1))) === null || _a === void 0 ? void 0 : _a.value; if (value != null) { ret += str.substring(lastIdx, i) + value; regExp.lastIndex += 1; lastIdx = i + 2; continue; } } ret += str.substring(lastIdx, i) + next.value; lastIdx = i + 1; } else { ret += str.substring(lastIdx, i) + "&#x" + exports.getCodePoint(str, i).toString(16) + ";"; // Increase by 1 if we have a surrogate pair lastIdx = regExp.lastIndex += Number(isHighSurrugate(char)); } } return ret + str.substr(lastIdx); } exports.encodeHTMLTrieRe = encodeHTMLTrieRe; function getTrie(map) { var _a, _b, _c, _d; var trie = new Map(); for (var _i = 0, _e = Object.keys(map); _i < _e.length; _i++) { var value = _e[_i]; var key = map[value]; // Resolve the key var lastMap = trie; for (var i = 0; i < key.length - 1; i++) { var char = key.charCodeAt(i); var next = (_a = lastMap.get(char)) !== null && _a !== void 0 ? _a : {}; lastMap.set(char, next); lastMap = (_b = next.next) !== null && _b !== void 0 ? _b : (next.next = new Map()); } var val = (_c = lastMap.get(key.charCodeAt(key.length - 1))) !== null && _c !== void 0 ? _c : {}; (_d = val.value) !== null && _d !== void 0 ? _d : (val.value = "&" + value + ";"); lastMap.set(key.charCodeAt(key.length - 1), val); } return trie; } exports.getTrie = getTrie; }); unwrapExports(encodeTrie); var encodeTrie_1 = encodeTrie.getTrie; var encodeTrie_2 = encodeTrie.encodeHTMLTrieRe; var encodeTrie_3 = encodeTrie.getCodePoint; var require$$0 = getCjsExportFromNamespace(xml$1); var encode$1 = createCommonjsModule(function (module, exports) { var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.escapeUTF8 = exports.escape = exports.encodeNonAsciiHTML = exports.encodeHTML = exports.encodeXML = void 0; var xml_json_1 = __importDefault(require$$0); var entities_json_1 = __importDefault(require$$1); var htmlReplacer = getCharRegExp(entities_json_1.default, true); var xmlReplacer = getCharRegExp(xml_json_1.default, true); var xmlInvalidChars = getCharRegExp(xml_json_1.default, false); var xmlCodeMap = new Map(Object.keys(xml_json_1.default).map(function (k) { return [ xml_json_1.default[k].charCodeAt(0), "&" + k + ";", ]; })); /** * Encodes all non-ASCII characters, as well as characters not valid in XML * documents using XML entities. * * If a character has no equivalent entity, a * numeric hexadecimal reference (eg. `ü`) will be used. */ function encodeXML(str) { var ret = ""; var lastIdx = 0; var match; while ((match = xmlReplacer.exec(str)) !== null) { var i = match.index; var char = str.charCodeAt(i); var next = xmlCodeMap.get(char); if (next) { ret += str.substring(lastIdx, i) + next; lastIdx = i + 1; } else { ret += str.substring(lastIdx, i) + "&#x" + encodeTrie.getCodePoint(str, i).toString(16) + ";"; // Increase by 1 if we have a surrogate pair lastIdx = xmlReplacer.lastIndex += Number((char & 65408) === 0xd800); } } return ret + str.substr(lastIdx); } exports.encodeXML = encodeXML; /** * Encodes all entities and non-ASCII characters in the input. * * This includes characters that are valid ASCII characters in HTML documents. * For example `#` will be encoded as `#`. To get a more compact output, * consider using the `encodeNonAsciiHTML` function. * * If a character has no equivalent entity, a * numeric hexadecimal reference (eg. `ü`) will be used. */ function encodeHTML(data) { return encodeTrie.encodeHTMLTrieRe(htmlReplacer, data); } exports.encodeHTML = encodeHTML; /** * Encodes all non-ASCII characters, as well as characters not valid in HTML * documents using HTML entities. * * If a character has no equivalent entity, a * numeric hexadecimal reference (eg. `ü`) will be used. */ function encodeNonAsciiHTML(data) { return encodeTrie.encodeHTMLTrieRe(xmlReplacer, data); } exports.encodeNonAsciiHTML = encodeNonAsciiHTML; function getCharRegExp(map, nonAscii) { // Collect the start characters of all entities var chars = Object.keys(map) .map(function (k) { return "\\" + map[k].charAt(0); }) .filter(function (v) { return !nonAscii || v.charCodeAt(1) < 128; }) .sort(function (a, b) { return a.charCodeAt(1) - b.charCodeAt(1); }) // Remove duplicates .filter(function (v, i, a) { return v !== a[i + 1]; }); // Add ranges to single characters. for (var start = 0; start < chars.length - 1; start++) { // Find the end of a run of characters var end = start; while (end < chars.length - 1 && chars[end].charCodeAt(1) + 1 === chars[end + 1].charCodeAt(1)) { end += 1; } var count = 1 + end - start; // We want to replace at least three characters if (count < 3) continue; chars.splice(start, count, chars[start] + "-" + chars[end]); } return new RegExp("[" + chars.join("") + (nonAscii ? "\\x80-\\uFFFF" : "") + "]", "g"); } /** * Encodes all non-ASCII characters, as well as characters not valid in XML * documents using numeric hexadecimal reference (eg. `ü`). * * Have a look at `escapeUTF8` if you want a more concise output at the expense * of reduced transportability. * * @param data String to escape. */ exports.escape = encodeXML; /** * Encodes all characters not valid in XML documents using XML entities. * * Note that the output will be character-set dependent. * * @param data String to escape. */ function escapeUTF8(data) { var match; var lastIdx = 0; var result = ""; while ((match = xmlInvalidChars.exec(data))) { if (lastIdx !== match.index) { result += data.substring(lastIdx, match.index); } // We know that this chararcter will be in `inverseXML` result += xmlCodeMap.get(match[0].charCodeAt(0)); // Every match will be of length 1 lastIdx = match.index + 1; } return result + data.substring(lastIdx); } exports.escapeUTF8 = escapeUTF8; }); unwrapExports(encode$1); var encode_1$1 = encode$1.escapeUTF8; var encode_2 = encode$1.escape; var encode_3 = encode$1.encodeNonAsciiHTML; var encode_4 = encode$1.encodeHTML; var encode_5 = encode$1.encodeXML; var lib = createCommonjsModule(function (module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.decodeXMLStrict = exports.decodeHTML5Strict = exports.decodeHTML4Strict = exports.decodeHTML5 = exports.decodeHTML4 = exports.decodeHTMLStrict = exports.decodeHTML = exports.decodeXML = exports.encodeHTML5 = exports.encodeHTML4 = exports.escapeUTF8 = exports.escape = exports.encodeNonAsciiHTML = exports.encodeHTML = exports.encodeXML = exports.encode = exports.decodeStrict = exports.decode = exports.EncodingMode = exports.DecodingMode = exports.EntityLevel = void 0; /** The level of entities to support. */ var EntityLevel; (function (EntityLevel) { /** Support only XML entities. */ EntityLevel[EntityLevel["XML"] = 0] = "XML"; /** Support HTML entities, which are a superset of XML entities. */ EntityLevel[EntityLevel["HTML"] = 1] = "HTML"; })(EntityLevel = exports.EntityLevel || (exports.EntityLevel = {})); /** Determines whether some entities are allowed to be written without a trailing `;`. */ var DecodingMode; (function (DecodingMode) { /** Support legacy HTML entities. */ DecodingMode[DecodingMode["Legacy"] = 0] = "Legacy"; /** Do not support legacy HTML entities. */ DecodingMode[DecodingMode["Strict"] = 1] = "Strict"; })(DecodingMode = exports.DecodingMode || (exports.DecodingMode = {})); var EncodingMode; (function (EncodingMode) { /** * The output is UTF-8 encoded. Only characters that need escaping within * HTML will be escaped. */ EncodingMode[EncodingMode["UTF8"] = 0] = "UTF8"; /** * The output consists only of ASCII characters. Characters that need * escaping within HTML, and characters that aren't ASCII characters will * be escaped. */ EncodingMode[EncodingMode["ASCII"] = 1] = "ASCII"; /** * Encode all characters that have an equivalent entity, as well as all * characters that are not ASCII characters. */ EncodingMode[EncodingMode["Extensive"] = 2] = "Extensive"; })(EncodingMode = exports.EncodingMode || (exports.EncodingMode = {})); /** * Decodes a string with entities. * * @param data String to decode. * @param options Decoding options. */ function decode$1(data, options) { if (options === void 0) { options = EntityLevel.XML; } var opts = typeof options === "number" ? { level: options } : options; if (opts.level === EntityLevel.HTML) { if (opts.mode === DecodingMode.Strict) { return decode.decodeHTMLStrict(data); } return decode.decodeHTML(data); } return decode.decodeXML(data); } exports.decode = decode$1; /** * Decodes a string with entities. Does not allow missing trailing semicolons for entities. * * @param data String to decode. * @param options Decoding options. * @deprecated Use `decode` with the `mode` set to `Strict`. */ function decodeStrict(data, options) { if (options === void 0) { options = EntityLevel.XML; } var opts = typeof options === "number" ? { level: options } : options; if (opts.level === EntityLevel.HTML) { if (opts.mode === DecodingMode.Legacy) { return decode.decodeHTML(data); } return decode.decodeHTMLStrict(data); } return decode.decodeXML(data); } exports.decodeStrict = decodeStrict; /** * Encodes a string with entities. * * @param data String to encode. * @param options Encoding options. */ function encode(data, options) { if (options === void 0) { options = EntityLevel.XML; } var opts = typeof options === "number" ? { level: options } : options; // Mode `UTF8` just escapes XML entities if (opts.mode === EncodingMode.UTF8) return encode$1.escapeUTF8(data); if (opts.level === EntityLevel.HTML) { if (opts.mode === EncodingMode.ASCII) { return encode$1.encodeNonAsciiHTML(data); } return encode$1.encodeHTML(data); } // ASCII and Extensive are equivalent return encode$1.encodeXML(data); } exports.encode = encode; var encode_2 = encode$1; Object.defineProperty(exports, "encodeXML", { enumerable: true, get: function () { return encode_2.encodeXML; } }); Object.defineProperty(exports, "encodeHTML", { enumerable: true, get: function () { return encode_2.encodeHTML; } }); Object.defineProperty(exports, "encodeNonAsciiHTML", { enumerable: true, get: function () { return encode_2.encodeNonAsciiHTML; } }); Object.defineProperty(exports, "escape", { enumerable: true, get: function () { return encode_2.escape; } }); Object.defineProperty(exports, "escapeUTF8", { enumerable: true, get: function () { return encode_2.escapeUTF8; } }); // Legacy aliases (deprecated) Object.defineProperty(exports, "encodeHTML4", { enumerable: true, get: function () { return encode_2.encodeHTML; } }); Object.defineProperty(exports, "encodeHTML5", { enumerable: true, get: function () { return encode_2.encodeHTML; } }); var decode_2 = decode; Object.defineProperty(exports, "decodeXML", { enumerable: true, get: function () { return decode_2.decodeXML; } }); Object.defineProperty(exports, "decodeHTML", { enumerable: true, get: function () { return decode_2.decodeHTML; } }); Object.defineProperty(exports, "decodeHTMLStrict", { enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } }); // Legacy aliases (deprecated) Object.defineProperty(exports, "decodeHTML4", { enumerable: true, get: function () { return decode_2.decodeHTML; } }); Object.defineProperty(exports, "decodeHTML5", { enumerable: true, get: function () { return decode_2.decodeHTML; } }); Object.defineProperty(exports, "decodeHTML4Strict", { enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } }); Object.defineProperty(exports, "decodeHTML5Strict", { enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } }); Object.defineProperty(exports, "decodeXMLStrict", { enumerable: true, get: function () { return decode_2.decodeXML; } }); }); unwrapExports(lib); var lib_1 = lib.decodeXMLStrict; var lib_2 = lib.decodeHTML5Strict; var lib_3 = lib.decodeHTML4Strict; var lib_4 = lib.decodeHTML5; var lib_5 = lib.decodeHTML4; var lib_6 = lib.decodeHTMLStrict; var lib_7 = lib.decodeHTML; var lib_8 = lib.decodeXML; var lib_9 = lib.encodeHTML5; var lib_10 = lib.encodeHTML4; var lib_11 = lib.escapeUTF8; var lib_12 = lib.escape; var lib_13 = lib.encodeNonAsciiHTML; var lib_14 = lib.encodeHTML; var lib_15 = lib.encodeXML; var lib_16 = lib.encode; var lib_17 = lib.decodeStrict; var lib_18 = lib.decode; var lib_19 = lib.EncodingMode; var lib_20 = lib.DecodingMode; var lib_21 = lib.EntityLevel; var C_BACKSLASH = 92; var ENTITY = "&(?:#x[a-f0-9]{1,6}|#[0-9]{1,7}|[a-z][a-z0-9]{1,31});"; var TAGNAME = "[A-Za-z][A-Za-z0-9-]*"; var ATTRIBUTENAME = "[a-zA-Z_:][a-zA-Z0-9:._-]*"; var UNQUOTEDVALUE = "[^\"'=<>`\\x00-\\x20]+"; var SINGLEQUOTEDVALUE = "'[^']*'"; var DOUBLEQUOTEDVALUE = '"[^"]*"'; var ATTRIBUTEVALUE = "(?:" + UNQUOTEDVALUE + "|" + SINGLEQUOTEDVALUE + "|" + DOUBLEQUOTEDVALUE + ")"; var ATTRIBUTEVALUESPEC = "(?:" + "\\s*=" + "\\s*" + ATTRIBUTEVALUE + ")"; var ATTRIBUTE = "(?:" + "\\s+" + ATTRIBUTENAME + ATTRIBUTEVALUESPEC + "?)"; var OPENTAG = "<" + TAGNAME + ATTRIBUTE + "*" + "\\s*/?>"; var CLOSETAG = "]"; var HTMLCOMMENT = "||"; var PROCESSINGINSTRUCTION = "[<][?][\\s\\S]*?[?][>]"; var DECLARATION = "]*>"; var CDATA = ""; var HTMLTAG = "(?:" + OPENTAG + "|" + CLOSETAG + "|" + HTMLCOMMENT + "|" + PROCESSINGINSTRUCTION + "|" + DECLARATION + "|" + CDATA + ")"; var reHtmlTag = new RegExp("^" + HTMLTAG); var reBackslashOrAmp = /[\\&]/; var ESCAPABLE = "[!\"#$%&'()*+,./:;<=>?@[\\\\\\]^_`{|}~-]"; var reEntityOrEscapedChar = new RegExp("\\\\" + ESCAPABLE + "|" + ENTITY, "gi"); var XMLSPECIAL = '[&<>"]'; var reXmlSpecial = new RegExp(XMLSPECIAL, "g"); var unescapeChar = function(s) { if (s.charCodeAt(0) === C_BACKSLASH) { return s.charAt(1); } else { return lib_6(s); } }; // Replace entities and backslash escapes with literal characters. var unescapeString = function(s) { if (reBackslashOrAmp.test(s)) { return s.replace(reEntityOrEscapedChar, unescapeChar); } else { return s; } }; var normalizeURI = function(uri) { try { return encode_1(uri); } catch (err) { return uri; } }; var replaceUnsafeChar = function(s) { switch (s) { case "&": return "&"; case "<": return "<"; case ">": return ">"; case '"': return """; default: return s; } }; var escapeXml = function(s) { if (reXmlSpecial.test(s)) { return s.replace(reXmlSpecial, replaceUnsafeChar); } else { return s; } }; // derived from https://github.com/mathiasbynens/String.fromCodePoint /*! http://mths.be/fromcodepoint v0.2.1 by @mathias */ var _fromCodePoint; function fromCodePoint(_) { return _fromCodePoint(_); } if (String.fromCodePoint) { _fromCodePoint = function(_) { try { return String.fromCodePoint(_); } catch (e) { if (e instanceof RangeError) { return String.fromCharCode(0xfffd); } throw e; } }; } else { var stringFromCharCode = String.fromCharCode; var floor = Math.floor; _fromCodePoint = function() { var MAX_SIZE = 0x4000; var codeUnits = []; var highSurrogate; var lowSurrogate; var index = -1; var length = arguments.length; if (!length) { return ""; } var result = ""; while (++index < length) { var codePoint = Number(arguments[index]); if ( !isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity` codePoint < 0 || // not a valid Unicode code point codePoint > 0x10ffff || // not a valid Unicode code point floor(codePoint) !== codePoint // not an integer ) { return String.fromCharCode(0xfffd); } if (codePoint <= 0xffff) { // BMP code point codeUnits.push(codePoint); } else { // Astral code point; split in surrogate halves // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae codePoint -= 0x10000; highSurrogate = (codePoint >> 10) + 0xd800; lowSurrogate = (codePoint % 0x400) + 0xdc00; codeUnits.push(highSurrogate, lowSurrogate); } if (index + 1 === length || codeUnits.length > MAX_SIZE) { result += stringFromCharCode.apply(null, codeUnits); codeUnits.length = 0; } } return result; }; } /* eslint no-invalid-this: 1 */ var ERROR_MESSAGE = 'Function.prototype.bind called on incompatible '; var slice = Array.prototype.slice; var toStr = Object.prototype.toString; var funcType = '[object Function]'; var implementation = function bind(that) { var target = this; if (typeof target !== 'function' || toStr.call(target) !== funcType) { throw new TypeError(ERROR_MESSAGE + target); } var args = slice.call(arguments, 1); var bound; var binder = function () { if (this instanceof bound) { var result = target.apply( this, args.concat(slice.call(arguments)) ); if (Object(result) === result) { return result; } return this; } else { return target.apply( that, args.concat(slice.call(arguments)) ); } }; var boundLength = Math.max(0, target.length - args.length); var boundArgs = []; for (var i = 0; i < boundLength; i++) { boundArgs.push('$' + i); } bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder); if (target.prototype) { var Empty = function Empty() {}; Empty.prototype = target.prototype; bound.prototype = new Empty(); Empty.prototype = null; } return bound; }; var functionBind = Function.prototype.bind || implementation; /* eslint complexity: [2, 18], max-statements: [2, 33] */ var shams = function hasSymbols() { if (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; } if (typeof Symbol.iterator === 'symbol') { return true; } var obj = {}; var sym = Symbol('test'); var symObj = Object(sym); if (typeof sym === 'string') { return false; } if (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; } if (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; } // temp disabled per https://github.com/ljharb/object.assign/issues/17 // if (sym instanceof Symbol) { return false; } // temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4 // if (!(symObj instanceof Symbol)) { return false; } // if (typeof Symbol.prototype.toString !== 'function') { return false; } // if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; } var symVal = 42; obj[sym] = symVal; for (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop if (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; } if (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; } var syms = Object.getOwnPropertySymbols(obj); if (syms.length !== 1 || syms[0] !== sym) { return false; } if (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; } if (typeof Object.getOwnPropertyDescriptor === 'function') { var descriptor = Object.getOwnPropertyDescriptor(obj, sym); if (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; } } return true; }; var origSymbol = typeof Symbol !== 'undefined' && Symbol; var hasSymbols = function hasNativeSymbols() { if (typeof origSymbol !== 'function') { return false; } if (typeof Symbol !== 'function') { return false; } if (typeof origSymbol('foo') !== 'symbol') { return false; } if (typeof Symbol('bar') !== 'symbol') { return false; } return shams(); }; var src = functionBind.call(Function.call, Object.prototype.hasOwnProperty); var undefined$1; var $SyntaxError = SyntaxError; var $Function = Function; var $TypeError = TypeError; // eslint-disable-next-line consistent-return var getEvalledConstructor = function (expressionSyntax) { try { return $Function('"use strict"; return (' + expressionSyntax + ').constructor;')(); } catch (e) {} }; var $gOPD = Object.getOwnPropertyDescriptor; if ($gOPD) { try { $gOPD({}, ''); } catch (e) { $gOPD = null; // this is IE 8, which has a broken gOPD } } var throwTypeError = function () { throw new $TypeError(); }; var ThrowTypeError = $gOPD ? (function () { try { // eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties arguments.callee; // IE 8 does not throw here return throwTypeError; } catch (calleeThrows) { try { // IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '') return $gOPD(arguments, 'callee').get; } catch (gOPDthrows) { return throwTypeError; } } }()) : throwTypeError; var hasSymbols$1 = hasSymbols(); var getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto var needsEval = {}; var TypedArray = typeof Uint8Array === 'undefined' ? undefined$1 : getProto(Uint8Array); var INTRINSICS = { '%AggregateError%': typeof AggregateError === 'undefined' ? undefined$1 : AggregateError, '%Array%': Array, '%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined$1 : ArrayBuffer, '%ArrayIteratorPrototype%': hasSymbols$1 ? getProto([][Symbol.iterator]()) : undefined$1, '%AsyncFromSyncIteratorPrototype%': undefined$1, '%AsyncFunction%': needsEval, '%AsyncGenerator%': needsEval, '%AsyncGeneratorFunction%': needsEval, '%AsyncIteratorPrototype%': needsEval, '%Atomics%': typeof Atomics === 'undefined' ? undefined$1 : Atomics, '%BigInt%': typeof BigInt === 'undefined' ? undefined$1 : BigInt, '%Boolean%': Boolean, '%DataView%': typeof DataView === 'undefined' ? undefined$1 : DataView, '%Date%': Date, '%decodeURI%': decodeURI, '%decodeURIComponent%': decodeURIComponent, '%encodeURI%': encodeURI, '%encodeURIComponent%': encodeURIComponent, '%Error%': Error, '%eval%': eval, // eslint-disable-line no-eval '%EvalError%': EvalError, '%Float32Array%': typeof Float32Array === 'undefined' ? undefined$1 : Float32Array, '%Float64Array%': typeof Float64Array === 'undefined' ? undefined$1 : Float64Array, '%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined$1 : FinalizationRegistry, '%Function%': $Function, '%GeneratorFunction%': needsEval, '%Int8Array%': typeof Int8Array === 'undefined' ? undefined$1 : Int8Array, '%Int16Array%': typeof Int16Array === 'undefined' ? undefined$1 : Int16Array, '%Int32Array%': typeof Int32Array === 'undefined' ? undefined$1 : Int32Array, '%isFinite%': isFinite, '%isNaN%': isNaN, '%IteratorPrototype%': hasSymbols$1 ? getProto(getProto([][Symbol.iterator]())) : undefined$1, '%JSON%': typeof JSON === 'object' ? JSON : undefined$1, '%Map%': typeof Map === 'undefined' ? undefined$1 : Map, '%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols$1 ? undefined$1 : getProto(new Map()[Symbol.iterator]()), '%Math%': Math, '%Number%': Number, '%Object%': Object, '%parseFloat%': parseFloat, '%parseInt%': parseInt, '%Promise%': typeof Promise === 'undefined' ? undefined$1 : Promise, '%Proxy%': typeof Proxy === 'undefined' ? undefined$1 : Proxy, '%RangeError%': RangeError, '%ReferenceError%': ReferenceError, '%Reflect%': typeof Reflect === 'undefined' ? undefined$1 : Reflect, '%RegExp%': RegExp, '%Set%': typeof Set === 'undefined' ? undefined$1 : Set, '%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols$1 ? undefined$1 : getProto(new Set()[Symbol.iterator]()), '%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined$1 : SharedArrayBuffer, '%String%': String, '%StringIteratorPrototype%': hasSymbols$1 ? getProto(''[Symbol.iterator]()) : undefined$1, '%Symbol%': hasSymbols$1 ? Symbol : undefined$1, '%SyntaxError%': $SyntaxError, '%ThrowTypeError%': ThrowTypeError, '%TypedArray%': TypedArray, '%TypeError%': $TypeError, '%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined$1 : Uint8Array, '%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined$1 : Uint8ClampedArray, '%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined$1 : Uint16Array, '%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined$1 : Uint32Array, '%URIError%': URIError, '%WeakMap%': typeof WeakMap === 'undefined' ? undefined$1 : WeakMap, '%WeakRef%': typeof WeakRef === 'undefined' ? undefined$1 : WeakRef, '%WeakSet%': typeof WeakSet === 'undefined' ? undefined$1 : WeakSet }; var doEval = function doEval(name) { var value; if (name === '%AsyncFunction%') { value = getEvalledConstructor('async function () {}'); } else if (name === '%GeneratorFunction%') { value = getEvalledConstructor('function* () {}'); } else if (name === '%AsyncGeneratorFunction%') { value = getEvalledConstructor('async function* () {}'); } else if (name === '%AsyncGenerator%') { var fn = doEval('%AsyncGeneratorFunction%'); if (fn) { value = fn.prototype; } } else if (name === '%AsyncIteratorPrototype%') { var gen = doEval('%AsyncGenerator%'); if (gen) { value = getProto(gen.prototype); } } INTRINSICS[name] = value; return value; }; var LEGACY_ALIASES = { '%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'], '%ArrayPrototype%': ['Array', 'prototype'], '%ArrayProto_entries%': ['Array', 'prototype', 'entries'], '%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'], '%ArrayProto_keys%': ['Array', 'prototype', 'keys'], '%ArrayProto_values%': ['Array', 'prototype', 'values'], '%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'], '%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'], '%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'], '%BooleanPrototype%': ['Boolean', 'prototype'], '%DataViewPrototype%': ['DataView', 'prototype'], '%DatePrototype%': ['Date', 'prototype'], '%ErrorPrototype%': ['Error', 'prototype'], '%EvalErrorPrototype%': ['EvalError', 'prototype'], '%Float32ArrayPrototype%': ['Float32Array', 'prototype'], '%Float64ArrayPrototype%': ['Float64Array', 'prototype'], '%FunctionPrototype%': ['Function', 'prototype'], '%Generator%': ['GeneratorFunction', 'prototype'], '%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'], '%Int8ArrayPrototype%': ['Int8Array', 'prototype'], '%Int16ArrayPrototype%': ['Int16Array', 'prototype'], '%Int32ArrayPrototype%': ['Int32Array', 'prototype'], '%JSONParse%': ['JSON', 'parse'], '%JSONStringify%': ['JSON', 'stringify'], '%MapPrototype%': ['Map', 'prototype'], '%NumberPrototype%': ['Number', 'prototype'], '%ObjectPrototype%': ['Object', 'prototype'], '%ObjProto_toString%': ['Object', 'prototype', 'toString'], '%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'], '%PromisePrototype%': ['Promise', 'prototype'], '%PromiseProto_then%': ['Promise', 'prototype', 'then'], '%Promise_all%': ['Promise', 'all'], '%Promise_reject%': ['Promise', 'reject'], '%Promise_resolve%': ['Promise', 'resolve'], '%RangeErrorPrototype%': ['RangeError', 'prototype'], '%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'], '%RegExpPrototype%': ['RegExp', 'prototype'], '%SetPrototype%': ['Set', 'prototype'], '%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'], '%StringPrototype%': ['String', 'prototype'], '%SymbolPrototype%': ['Symbol', 'prototype'], '%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'], '%TypedArrayPrototype%': ['TypedArray', 'prototype'], '%TypeErrorPrototype%': ['TypeError', 'prototype'], '%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'], '%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'], '%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'], '%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'], '%URIErrorPrototype%': ['URIError', 'prototype'], '%WeakMapPrototype%': ['WeakMap', 'prototype'], '%WeakSetPrototype%': ['WeakSet', 'prototype'] }; var $concat = functionBind.call(Function.call, Array.prototype.concat); var $spliceApply = functionBind.call(Function.apply, Array.prototype.splice); var $replace = functionBind.call(Function.call, String.prototype.replace); var $strSlice = functionBind.call(Function.call, String.prototype.slice); /* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */ var rePropName = /[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g; var reEscapeChar = /\\(\\)?/g; /** Used to match backslashes in property paths. */ var stringToPath = function stringToPath(string) { var first = $strSlice(string, 0, 1); var last = $strSlice(string, -1); if (first === '%' && last !== '%') { throw new $SyntaxError('invalid intrinsic syntax, expected closing `%`'); } else if (last === '%' && first !== '%') { throw new $SyntaxError('invalid intrinsic syntax, expected opening `%`'); } var result = []; $replace(string, rePropName, function (match, number, quote, subString) { result[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match; }); return result; }; /* end adaptation */ var getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) { var intrinsicName = name; var alias; if (src(LEGACY_ALIASES, intrinsicName)) { alias = LEGACY_ALIASES[intrinsicName]; intrinsicName = '%' + alias[0] + '%'; } if (src(INTRINSICS, intrinsicName)) { var value = INTRINSICS[intrinsicName]; if (value === needsEval) { value = doEval(intrinsicName); } if (typeof value === 'undefined' && !allowMissing) { throw new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!'); } return { alias: alias, name: intrinsicName, value: value }; } throw new $SyntaxError('intrinsic ' + name + ' does not exist!'); }; var getIntrinsic = function GetIntrinsic(name, allowMissing) { if (typeof name !== 'string' || name.length === 0) { throw new $TypeError('intrinsic name must be a non-empty string'); } if (arguments.length > 1 && typeof allowMissing !== 'boolean') { throw new $TypeError('"allowMissing" argument must be a boolean'); } var parts = stringToPath(name); var intrinsicBaseName = parts.length > 0 ? parts[0] : ''; var intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing); var intrinsicRealName = intrinsic.name; var value = intrinsic.value; var skipFurtherCaching = false; var alias = intrinsic.alias; if (alias) { intrinsicBaseName = alias[0]; $spliceApply(parts, $concat([0, 1], alias)); } for (var i = 1, isOwn = true; i < parts.length; i += 1) { var part = parts[i]; var first = $strSlice(part, 0, 1); var last = $strSlice(part, -1); if ( ( (first === '"' || first === "'" || first === '`') || (last === '"' || last === "'" || last === '`') ) && first !== last ) { throw new $SyntaxError('property names with quotes must have matching quotes'); } if (part === 'constructor' || !isOwn) { skipFurtherCaching = true; } intrinsicBaseName += '.' + part; intrinsicRealName = '%' + intrinsicBaseName + '%'; if (src(INTRINSICS, intrinsicRealName)) { value = INTRINSICS[intrinsicRealName]; } else if (value != null) { if (!(part in value)) { if (!allowMissing) { throw new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.'); } return void undefined$1; } if ($gOPD && (i + 1) >= parts.length) { var desc = $gOPD(value, part); isOwn = !!desc; // By convention, when a data property is converted to an accessor // property to emulate a data property that does not suffer from // the override mistake, that accessor's getter is marked with // an `originalValue` property. Here, when we detect this, we // uphold the illusion by pretending to see that original data // property, i.e., returning the value rather than the getter // itself. if (isOwn && 'get' in desc && !('originalValue' in desc.get)) { value = desc.get; } else { value = value[part]; } } else { isOwn = src(value, part); value = value[part]; } if (isOwn && !skipFurtherCaching) { INTRINSICS[intrinsicRealName] = value; } } } return value; }; var callBind = createCommonjsModule(function (module) { var $apply = getIntrinsic('%Function.prototype.apply%'); var $call = getIntrinsic('%Function.prototype.call%'); var $reflectApply = getIntrinsic('%Reflect.apply%', true) || functionBind.call($call, $apply); var $gOPD = getIntrinsic('%Object.getOwnPropertyDescriptor%', true); var $defineProperty = getIntrinsic('%Object.defineProperty%', true); var $max = getIntrinsic('%Math.max%'); if ($defineProperty) { try { $defineProperty({}, 'a', { value: 1 }); } catch (e) { // IE 8 has a broken defineProperty $defineProperty = null; } } module.exports = function callBind(originalFunction) { var func = $reflectApply(functionBind, $call, arguments); if ($gOPD && $defineProperty) { var desc = $gOPD(func, 'length'); if (desc.configurable) { // original length, plus the receiver, minus any additional arguments (after the receiver) $defineProperty( func, 'length', { value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) } ); } } return func; }; var applyBind = function applyBind() { return $reflectApply(functionBind, $apply, arguments); }; if ($defineProperty) { $defineProperty(module.exports, 'apply', { value: applyBind }); } else { module.exports.apply = applyBind; } }); var callBind_1 = callBind.apply; // TODO; semver-major: remove var callBind$1 = callBind; var toStr$1 = Object.prototype.toString; var isArguments = function isArguments(value) { var str = toStr$1.call(value); var isArgs = str === '[object Arguments]'; if (!isArgs) { isArgs = str !== '[object Array]' && value !== null && typeof value === 'object' && typeof value.length === 'number' && value.length >= 0 && toStr$1.call(value.callee) === '[object Function]'; } return isArgs; }; var keysShim; if (!Object.keys) { // modified from https://github.com/es-shims/es5-shim var has = Object.prototype.hasOwnProperty; var toStr$2 = Object.prototype.toString; var isArgs = isArguments; // eslint-disable-line global-require var isEnumerable = Object.prototype.propertyIsEnumerable; var hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString'); var hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype'); var dontEnums = [ 'toString', 'toLocaleString', 'valueOf', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'constructor' ]; var equalsConstructorPrototype = function (o) { var ctor = o.constructor; return ctor && ctor.prototype === o; }; var excludedKeys = { $applicationCache: true, $console: true, $external: true, $frame: true, $frameElement: true, $frames: true, $innerHeight: true, $innerWidth: true, $onmozfullscreenchange: true, $onmozfullscreenerror: true, $outerHeight: true, $outerWidth: true, $pageXOffset: true, $pageYOffset: true, $parent: true, $scrollLeft: true, $scrollTop: true, $scrollX: true, $scrollY: true, $self: true, $webkitIndexedDB: true, $webkitStorageInfo: true, $window: true }; var hasAutomationEqualityBug = (function () { /* global window */ if (typeof window === 'undefined') { return false; } for (var k in window) { try { if (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') { try { equalsConstructorPrototype(window[k]); } catch (e) { return true; } } } catch (e) { return true; } } return false; }()); var equalsConstructorPrototypeIfNotBuggy = function (o) { /* global window */ if (typeof window === 'undefined' || !hasAutomationEqualityBug) { return equalsConstructorPrototype(o); } try { return equalsConstructorPrototype(o); } catch (e) { return false; } }; keysShim = function keys(object) { var isObject = object !== null && typeof object === 'object'; var isFunction = toStr$2.call(object) === '[object Function]'; var isArguments = isArgs(object); var isString = isObject && toStr$2.call(object) === '[object String]'; var theKeys = []; if (!isObject && !isFunction && !isArguments) { throw new TypeError('Object.keys called on a non-object'); } var skipProto = hasProtoEnumBug && isFunction; if (isString && object.length > 0 && !has.call(object, 0)) { for (var i = 0; i < object.length; ++i) { theKeys.push(String(i)); } } if (isArguments && object.length > 0) { for (var j = 0; j < object.length; ++j) { theKeys.push(String(j)); } } else { for (var name in object) { if (!(skipProto && name === 'prototype') && has.call(object, name)) { theKeys.push(String(name)); } } } if (hasDontEnumBug) { var skipConstructor = equalsConstructorPrototypeIfNotBuggy(object); for (var k = 0; k < dontEnums.length; ++k) { if (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) { theKeys.push(dontEnums[k]); } } } return theKeys; }; } var implementation$1 = keysShim; var slice$1 = Array.prototype.slice; var origKeys = Object.keys; var keysShim$1 = origKeys ? function keys(o) { return origKeys(o); } : implementation$1; var originalKeys = Object.keys; keysShim$1.shim = function shimObjectKeys() { if (Object.keys) { var keysWorksWithArguments = (function () { // Safari 5.0 bug var args = Object.keys(arguments); return args && args.length === arguments.length; }(1, 2)); if (!keysWorksWithArguments) { Object.keys = function keys(object) { // eslint-disable-line func-name-matching if (isArguments(object)) { return originalKeys(slice$1.call(object)); } return originalKeys(object); }; } } else { Object.keys = keysShim$1; } return Object.keys || keysShim$1; }; var objectKeys = keysShim$1; var $defineProperty = getIntrinsic('%Object.defineProperty%', true); var hasPropertyDescriptors = function hasPropertyDescriptors() { if ($defineProperty) { try { $defineProperty({}, 'a', { value: 1 }); return true; } catch (e) { // IE 8 has a broken defineProperty return false; } } return false; }; hasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() { // node v0.6 has a bug where array lengths can be Set but not Defined if (!hasPropertyDescriptors()) { return null; } try { return $defineProperty([], 'length', { value: 1 }).length !== 1; } catch (e) { // In Firefox 4-22, defining length on an array throws an exception. return true; } }; var hasPropertyDescriptors_1 = hasPropertyDescriptors; var hasSymbols$2 = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol'; var toStr$3 = Object.prototype.toString; var concat = Array.prototype.concat; var origDefineProperty = Object.defineProperty; var isFunction = function (fn) { return typeof fn === 'function' && toStr$3.call(fn) === '[object Function]'; }; var hasPropertyDescriptors$1 = hasPropertyDescriptors_1(); var supportsDescriptors = origDefineProperty && hasPropertyDescriptors$1; var defineProperty = function (object, name, value, predicate) { if (name in object && (!isFunction(predicate) || !predicate())) { return; } if (supportsDescriptors) { origDefineProperty(object, name, { configurable: true, enumerable: false, value: value, writable: true }); } else { object[name] = value; // eslint-disable-line no-param-reassign } }; var defineProperties = function (object, map) { var predicates = arguments.length > 2 ? arguments[2] : {}; var props = objectKeys(map); if (hasSymbols$2) { props = concat.call(props, Object.getOwnPropertySymbols(map)); } for (var i = 0; i < props.length; i += 1) { defineProperty(object, props[i], map[props[i]], predicates[props[i]]); } }; defineProperties.supportsDescriptors = !!supportsDescriptors; var defineProperties_1 = defineProperties; var $TypeError$1 = getIntrinsic('%TypeError%'); // http://262.ecma-international.org/5.1/#sec-9.10 var CheckObjectCoercible = function CheckObjectCoercible(value, optMessage) { if (value == null) { throw new $TypeError$1(optMessage || ('Cannot call method on ' + value)); } return value; }; var RequireObjectCoercible = CheckObjectCoercible; var $String = getIntrinsic('%String%'); var $TypeError$2 = getIntrinsic('%TypeError%'); // https://ecma-international.org/ecma-262/6.0/#sec-tostring var ToString = function ToString(argument) { if (typeof argument === 'symbol') { throw new $TypeError$2('Cannot convert a Symbol value to a string'); } return $String(argument); }; var $abs = getIntrinsic('%Math.abs%'); // http://262.ecma-international.org/5.1/#sec-5.2 var abs = function abs(x) { return $abs(x); }; // var modulo = require('./modulo'); var $floor = Math.floor; // http://262.ecma-international.org/5.1/#sec-5.2 var floor$1 = function floor(x) { // return x - modulo(x, 1); return $floor(x); }; var isPrimitive = function isPrimitive(value) { return value === null || (typeof value !== 'function' && typeof value !== 'object'); }; var fnToStr = Function.prototype.toString; var reflectApply = typeof Reflect === 'object' && Reflect !== null && Reflect.apply; var badArrayLike; var isCallableMarker; if (typeof reflectApply === 'function' && typeof Object.defineProperty === 'function') { try { badArrayLike = Object.defineProperty({}, 'length', { get: function () { throw isCallableMarker; } }); isCallableMarker = {}; // eslint-disable-next-line no-throw-literal reflectApply(function () { throw 42; }, null, badArrayLike); } catch (_) { if (_ !== isCallableMarker) { reflectApply = null; } } } else { reflectApply = null; } var constructorRegex = /^\s*class\b/; var isES6ClassFn = function isES6ClassFunction(value) { try { var fnStr = fnToStr.call(value); return constructorRegex.test(fnStr); } catch (e) { return false; // not a function } }; var tryFunctionObject = function tryFunctionToStr(value) { try { if (isES6ClassFn(value)) { return false; } fnToStr.call(value); return true; } catch (e) { return false; } }; var toStr$4 = Object.prototype.toString; var fnClass = '[object Function]'; var genClass = '[object GeneratorFunction]'; var hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag; // better: use `has-tostringtag` /* globals document: false */ var documentDotAll = typeof document === 'object' && typeof document.all === 'undefined' && document.all !== undefined ? document.all : {}; var isCallable = reflectApply ? function isCallable(value) { if (value === documentDotAll) { return true; } if (!value) { return false; } if (typeof value !== 'function' && typeof value !== 'object') { return false; } if (typeof value === 'function' && !value.prototype) { return true; } try { reflectApply(value, null, badArrayLike); } catch (e) { if (e !== isCallableMarker) { return false; } } return !isES6ClassFn(value); } : function isCallable(value) { if (value === documentDotAll) { return true; } if (!value) { return false; } if (typeof value !== 'function' && typeof value !== 'object') { return false; } if (typeof value === 'function' && !value.prototype) { return true; } if (hasToStringTag) { return tryFunctionObject(value); } if (isES6ClassFn(value)) { return false; } var strClass = toStr$4.call(value); return strClass === fnClass || strClass === genClass; }; var toStr$5 = Object.prototype.toString; // http://ecma-international.org/ecma-262/5.1/#sec-8.12.8 var ES5internalSlots = { '[[DefaultValue]]': function (O) { var actualHint; if (arguments.length > 1) { actualHint = arguments[1]; } else { actualHint = toStr$5.call(O) === '[object Date]' ? String : Number; } if (actualHint === String || actualHint === Number) { var methods = actualHint === String ? ['toString', 'valueOf'] : ['valueOf', 'toString']; var value, i; for (i = 0; i < methods.length; ++i) { if (isCallable(O[methods[i]])) { value = O[methods[i]](); if (isPrimitive(value)) { return value; } } } throw new TypeError('No default value'); } throw new TypeError('invalid [[DefaultValue]] hint supplied'); } }; // http://ecma-international.org/ecma-262/5.1/#sec-9.1 var es5 = function ToPrimitive(input) { if (isPrimitive(input)) { return input; } if (arguments.length > 1) { return ES5internalSlots['[[DefaultValue]]'](input, arguments[1]); } return ES5internalSlots['[[DefaultValue]]'](input); }; // http://262.ecma-international.org/5.1/#sec-9.1 var ToPrimitive = es5; // http://262.ecma-international.org/5.1/#sec-9.3 var ToNumber = function ToNumber(value) { var prim = ToPrimitive(value, Number); if (typeof prim !== 'string') { return +prim; // eslint-disable-line no-implicit-coercion } // eslint-disable-next-line no-control-regex var trimmed = prim.replace(/^[ \t\x0b\f\xa0\ufeff\n\r\u2028\u2029\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u0085]+|[ \t\x0b\f\xa0\ufeff\n\r\u2028\u2029\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u0085]+$/g, ''); if ((/^0[ob]|^[+-]0x/).test(trimmed)) { return NaN; } return +trimmed; // eslint-disable-line no-implicit-coercion }; var _isNaN = Number.isNaN || function isNaN(a) { return a !== a; }; var $isNaN = Number.isNaN || function (a) { return a !== a; }; var _isFinite = Number.isFinite || function (x) { return typeof x === 'number' && !$isNaN(x) && x !== Infinity && x !== -Infinity; }; var sign = function sign(number) { return number >= 0 ? 1 : -1; }; // http://262.ecma-international.org/5.1/#sec-9.4 var ToInteger = function ToInteger(value) { var number = ToNumber(value); if (_isNaN(number)) { return 0; } if (number === 0 || !_isFinite(number)) { return number; } return sign(number) * floor$1(abs(number)); }; var $indexOf = callBind(getIntrinsic('String.prototype.indexOf')); var callBound = function callBoundIntrinsic(name, allowMissing) { var intrinsic = getIntrinsic(name, !!allowMissing); if (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) { return callBind(intrinsic); } return intrinsic; }; var $exec = callBound('RegExp.prototype.exec'); var regexTester = function regexTester(regex) { return function test(s) { return $exec(regex, s) !== null; }; }; var isPrimitive$1 = function isPrimitive(value) { return value === null || (typeof value !== 'function' && typeof value !== 'object'); }; var shams$1 = function hasToStringTagShams() { return shams() && !!Symbol.toStringTag; }; var getDay = Date.prototype.getDay; var tryDateObject = function tryDateGetDayCall(value) { try { getDay.call(value); return true; } catch (e) { return false; } }; var toStr$6 = Object.prototype.toString; var dateClass = '[object Date]'; var hasToStringTag$1 = shams$1(); var isDateObject = function isDateObject(value) { if (typeof value !== 'object' || value === null) { return false; } return hasToStringTag$1 ? tryDateObject(value) : toStr$6.call(value) === dateClass; }; var isSymbol = createCommonjsModule(function (module) { var toStr = Object.prototype.toString; var hasSymbols$1 = hasSymbols(); if (hasSymbols$1) { var symToStr = Symbol.prototype.toString; var symStringRegex = /^Symbol\(.*\)$/; var isSymbolObject = function isRealSymbolObject(value) { if (typeof value.valueOf() !== 'symbol') { return false; } return symStringRegex.test(symToStr.call(value)); }; module.exports = function isSymbol(value) { if (typeof value === 'symbol') { return true; } if (toStr.call(value) !== '[object Symbol]') { return false; } try { return isSymbolObject(value); } catch (e) { return false; } }; } else { module.exports = function isSymbol(value) { // this environment does not support Symbols. return false ; }; } }); var hasSymbols$3 = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol'; var ordinaryToPrimitive = function OrdinaryToPrimitive(O, hint) { if (typeof O === 'undefined' || O === null) { throw new TypeError('Cannot call method on ' + O); } if (typeof hint !== 'string' || (hint !== 'number' && hint !== 'string')) { throw new TypeError('hint must be "string" or "number"'); } var methodNames = hint === 'string' ? ['toString', 'valueOf'] : ['valueOf', 'toString']; var method, result, i; for (i = 0; i < methodNames.length; ++i) { method = O[methodNames[i]]; if (isCallable(method)) { result = method.call(O); if (isPrimitive(result)) { return result; } } } throw new TypeError('No default value'); }; var GetMethod = function GetMethod(O, P) { var func = O[P]; if (func !== null && typeof func !== 'undefined') { if (!isCallable(func)) { throw new TypeError(func + ' returned for property ' + P + ' of object ' + O + ' is not a function'); } return func; } return void 0; }; // http://www.ecma-international.org/ecma-262/6.0/#sec-toprimitive var es2015 = function ToPrimitive(input) { if (isPrimitive(input)) { return input; } var hint = 'default'; if (arguments.length > 1) { if (arguments[1] === String) { hint = 'string'; } else if (arguments[1] === Number) { hint = 'number'; } } var exoticToPrim; if (hasSymbols$3) { if (Symbol.toPrimitive) { exoticToPrim = GetMethod(input, Symbol.toPrimitive); } else if (isSymbol(input)) { exoticToPrim = Symbol.prototype.valueOf; } } if (typeof exoticToPrim !== 'undefined') { var result = exoticToPrim.call(input, hint); if (isPrimitive(result)) { return result; } throw new TypeError('unable to convert exotic object to primitive'); } if (hint === 'default' && (isDateObject(input) || isSymbol(input))) { hint = 'string'; } return ordinaryToPrimitive(input, hint === 'default' ? 'number' : hint); }; // https://ecma-international.org/ecma-262/6.0/#sec-toprimitive var ToPrimitive$1 = function ToPrimitive(input) { if (arguments.length > 1) { return es2015(input, arguments[1]); } return es2015(input); }; var $TypeError$3 = getIntrinsic('%TypeError%'); var $Number = getIntrinsic('%Number%'); var $RegExp = getIntrinsic('%RegExp%'); var $parseInteger = getIntrinsic('%parseInt%'); var $strSlice$1 = callBound('String.prototype.slice'); var isBinary = regexTester(/^0b[01]+$/i); var isOctal = regexTester(/^0o[0-7]+$/i); var isInvalidHexLiteral = regexTester(/^[-+]0x[0-9a-f]+$/i); var nonWS = ['\u0085', '\u200b', '\ufffe'].join(''); var nonWSregex = new $RegExp('[' + nonWS + ']', 'g'); var hasNonWS = regexTester(nonWSregex); // whitespace from: https://es5.github.io/#x15.5.4.20 // implementation from https://github.com/es-shims/es5-shim/blob/v3.4.0/es5-shim.js#L1304-L1324 var ws = [ '\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003', '\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028', '\u2029\uFEFF' ].join(''); var trimRegex = new RegExp('(^[' + ws + ']+)|([' + ws + ']+$)', 'g'); var $replace$1 = callBound('String.prototype.replace'); var $trim = function (value) { return $replace$1(value, trimRegex, ''); }; // https://ecma-international.org/ecma-262/6.0/#sec-tonumber var ToNumber$1 = function ToNumber(argument) { var value = isPrimitive$1(argument) ? argument : ToPrimitive$1(argument, $Number); if (typeof value === 'symbol') { throw new $TypeError$3('Cannot convert a Symbol value to a number'); } if (typeof value === 'string') { if (isBinary(value)) { return ToNumber($parseInteger($strSlice$1(value, 2), 2)); } else if (isOctal(value)) { return ToNumber($parseInteger($strSlice$1(value, 2), 8)); } else if (hasNonWS(value) || isInvalidHexLiteral(value)) { return NaN; } var trimmed = $trim(value); if (trimmed !== value) { return ToNumber(trimmed); } } return $Number(value); }; // https://ecma-international.org/ecma-262/6.0/#sec-tointeger var ToInteger$1 = function ToInteger$1(value) { var number = ToNumber$1(value); return ToInteger(number); }; var implementation$2 = function repeat(count) { var O = RequireObjectCoercible(this); var string = ToString(O); var n = ToInteger$1(count); // Account for out-of-bounds indices if (n < 0 || n == Infinity) { throw RangeError('String.prototype.repeat argument must be greater than or equal to 0 and not be Infinity'); } var result = ''; while (n) { if (n % 2 == 1) { result += string; } if (n > 1) { string += string; } n >>= 1; } return result; }; var polyfill = function getPolyfill() { return String.prototype.repeat || implementation$2; }; var shim = function shimRepeat() { var polyfill$1 = polyfill(); if (String.prototype.repeat !== polyfill$1) { defineProperties_1(String.prototype, { repeat: polyfill$1 }); } return polyfill$1; }; var boundRepeat = callBind$1(polyfill()); defineProperties_1(boundRepeat, { getPolyfill: polyfill, implementation: implementation$2, shim: shim }); var normalizeURI$1 = normalizeURI; var unescapeString$1 = unescapeString; // Constants for character codes: var C_NEWLINE = 10; var C_ASTERISK = 42; var C_UNDERSCORE = 95; var C_BACKTICK = 96; var C_OPEN_BRACKET = 91; var C_CLOSE_BRACKET = 93; var C_LESSTHAN = 60; var C_BANG = 33; var C_BACKSLASH$1 = 92; var C_AMPERSAND = 38; var C_OPEN_PAREN = 40; var C_CLOSE_PAREN = 41; var C_COLON = 58; var C_SINGLEQUOTE = 39; var C_DOUBLEQUOTE = 34; // Some regexps used in inline parser: var ESCAPABLE$1 = ESCAPABLE; var ESCAPED_CHAR = "\\\\" + ESCAPABLE$1; var ENTITY$1 = ENTITY; var reHtmlTag$1 = reHtmlTag; var rePunctuation = new RegExp( /^[!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~\p{P}\p{S}]/u); var reLinkTitle = new RegExp( '^(?:"(' + ESCAPED_CHAR + '|\\\\[^\\\\]' + '|[^\\\\"\\x00])*"' + "|" + "'(" + ESCAPED_CHAR + '|\\\\[^\\\\]' + "|[^\\\\'\\x00])*'" + "|" + "\\((" + ESCAPED_CHAR + '|\\\\[^\\\\]' + "|[^\\\\()\\x00])*\\))" ); var reLinkDestinationBraces = /^(?:<(?:[^<>\n\\\x00]|\\.)*>)/; var reEscapable = new RegExp("^" + ESCAPABLE$1); var reEntityHere = new RegExp("^" + ENTITY$1, "i"); var reTicks = /`+/; var reTicksHere = /^`+/; var reEllipses = /\.\.\./g; var reDash = /--+/g; var reEmailAutolink = /^<([a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)>/; var reAutolink = /^<[A-Za-z][A-Za-z0-9.+-]{1,31}:[^<>\x00-\x20]*>/i; var reSpnl = /^ *(?:\n *)?/; var reWhitespaceChar = /^[ \t\n\x0b\x0c\x0d]/; var reUnicodeWhitespaceChar = /^\s/; var reFinalSpace = / *$/; var reInitialSpace = /^ */; var reSpaceAtEndOfLine = /^ *(?:\n|$)/; var reLinkLabel = /^\[(?:[^\\\[\]]|\\.){0,1000}\]/s; // Matches a string of non-special characters. var reMain = /^[^\n`\[\]\\!<&*_'"]+/m; var text = function(s) { var node = new Node("text"); node._literal = s; return node; }; // normalize a reference in reference link (remove []s, trim, // collapse internal space, unicode case fold. // See commonmark/commonmark.js#168. var normalizeReference = function(string) { return string .slice(1, string.length - 1) .trim() .replace(/[ \t\r\n]+/g, " ") .toLowerCase() .toUpperCase(); }; // INLINE PARSER // These are methods of an InlineParser object, defined below. // An InlineParser keeps track of a subject (a string to be // parsed) and a position in that subject. // If re matches at current position in the subject, advance // position in subject and return the match; otherwise return null. var match = function(re) { var m = re.exec(this.subject.slice(this.pos)); if (m === null) { return null; } else { this.pos += m.index + m[0].length; return m[0]; } }; // Returns the code for the character at the current subject position, or -1 // there are no more characters. var peek = function() { if (this.pos < this.subject.length) { return this.subject.charCodeAt(this.pos); } else { return -1; } }; // Parse zero or more space characters, including at most one newline var spnl = function() { this.match(reSpnl); return true; }; // All of the parsers below try to match something at the current position // in the subject. If they succeed in matching anything, they // return the inline matched, advancing the subject. // Attempt to parse backticks, adding either a backtick code span or a // literal sequence of backticks. var parseBackticks = function(block) { var ticks = this.match(reTicksHere); if (ticks === null) { return false; } var afterOpenTicks = this.pos; var matched; var node; var contents; while ((matched = this.match(reTicks)) !== null) { if (matched === ticks) { node = new Node("code"); contents = this.subject .slice(afterOpenTicks, this.pos - ticks.length) .replace(/\n/gm, " "); if ( contents.length > 0 && contents.match(/[^ ]/) !== null && contents[0] == " " && contents[contents.length - 1] == " " ) { node._literal = contents.slice(1, contents.length - 1); } else { node._literal = contents; } block.appendChild(node); return true; } } // If we got here, we didn't match a closing backtick sequence. this.pos = afterOpenTicks; block.appendChild(text(ticks)); return true; }; // Parse a backslash-escaped special character, adding either the escaped // character, a hard line break (if the backslash is followed by a newline), // or a literal backslash to the block's children. Assumes current character // is a backslash. var parseBackslash = function(block) { var subj = this.subject; var node; this.pos += 1; if (this.peek() === C_NEWLINE) { this.pos += 1; node = new Node("linebreak"); block.appendChild(node); } else if (reEscapable.test(subj.charAt(this.pos))) { block.appendChild(text(subj.charAt(this.pos))); this.pos += 1; } else { block.appendChild(text("\\")); } return true; }; // Attempt to parse an autolink (URL or email in pointy brackets). var parseAutolink = function(block) { var m; var dest; var node; if ((m = this.match(reEmailAutolink))) { dest = m.slice(1, m.length - 1); node = new Node("link"); node._destination = normalizeURI$1("mailto:" + dest); node._title = ""; node.appendChild(text(dest)); block.appendChild(node); return true; } else if ((m = this.match(reAutolink))) { dest = m.slice(1, m.length - 1); node = new Node("link"); node._destination = normalizeURI$1(dest); node._title = ""; node.appendChild(text(dest)); block.appendChild(node); return true; } else { return false; } }; // Attempt to parse a raw HTML tag. var parseHtmlTag = function(block) { var m = this.match(reHtmlTag$1); if (m === null) { return false; } else { var node = new Node("html_inline"); node._literal = m; block.appendChild(node); return true; } }; // Scan a sequence of characters with code cc, and return information about // the number of delimiters and whether they are positioned such that // they can open and/or close emphasis or strong emphasis. A utility // function for strong/emph parsing. var scanDelims = function(cc) { var numdelims = 0; var char_before, char_after, cc_after; var startpos = this.pos; var left_flanking, right_flanking, can_open, can_close; var after_is_whitespace, after_is_punctuation, before_is_whitespace, before_is_punctuation; if (cc === C_SINGLEQUOTE || cc === C_DOUBLEQUOTE) { numdelims++; this.pos++; } else { while (this.peek() === cc) { numdelims++; this.pos++; } } if (numdelims === 0) { return null; } char_before = startpos === 0 ? "\n" : this.subject.charAt(startpos - 1); cc_after = this.peek(); if (cc_after === -1) { char_after = "\n"; } else { char_after = fromCodePoint(cc_after); } after_is_whitespace = reUnicodeWhitespaceChar.test(char_after); after_is_punctuation = rePunctuation.test(char_after); before_is_whitespace = reUnicodeWhitespaceChar.test(char_before); before_is_punctuation = rePunctuation.test(char_before); left_flanking = !after_is_whitespace && (!after_is_punctuation || before_is_whitespace || before_is_punctuation); right_flanking = !before_is_whitespace && (!before_is_punctuation || after_is_whitespace || after_is_punctuation); if (cc === C_UNDERSCORE) { can_open = left_flanking && (!right_flanking || before_is_punctuation); can_close = right_flanking && (!left_flanking || after_is_punctuation); } else if (cc === C_SINGLEQUOTE || cc === C_DOUBLEQUOTE) { can_open = left_flanking && !right_flanking; can_close = right_flanking; } else { can_open = left_flanking; can_close = right_flanking; } this.pos = startpos; return { numdelims: numdelims, can_open: can_open, can_close: can_close }; }; // Handle a delimiter marker for emphasis or a quote. var handleDelim = function(cc, block) { var res = this.scanDelims(cc); if (!res) { return false; } var numdelims = res.numdelims; var startpos = this.pos; var contents; this.pos += numdelims; if (cc === C_SINGLEQUOTE) { contents = "\u2019"; } else if (cc === C_DOUBLEQUOTE) { contents = "\u201C"; } else { contents = this.subject.slice(startpos, this.pos); } var node = text(contents); block.appendChild(node); // Add entry to stack for this opener if ( (res.can_open || res.can_close) && (this.options.smart || (cc !== C_SINGLEQUOTE && cc !== C_DOUBLEQUOTE)) ) { this.delimiters = { cc: cc, numdelims: numdelims, origdelims: numdelims, node: node, previous: this.delimiters, next: null, can_open: res.can_open, can_close: res.can_close }; if (this.delimiters.previous !== null) { this.delimiters.previous.next = this.delimiters; } } return true; }; var removeDelimiter = function(delim) { if (delim.previous !== null) { delim.previous.next = delim.next; } if (delim.next === null) { // top of stack this.delimiters = delim.previous; } else { delim.next.previous = delim.previous; } }; var removeDelimitersBetween = function(bottom, top) { if (bottom.next !== top) { bottom.next = top; top.previous = bottom; } }; var processEmphasis = function(stack_bottom) { var opener, closer, old_closer; var opener_inl, closer_inl; var tempstack; var use_delims; var tmp, next; var opener_found; var openers_bottom = []; var openers_bottom_index; var odd_match = false; for (var i = 0; i < 14; i++) { openers_bottom[i] = stack_bottom; } // find first closer above stack_bottom: closer = this.delimiters; while (closer !== null && closer.previous !== stack_bottom) { closer = closer.previous; } // move forward, looking for closers, and handling each while (closer !== null) { var closercc = closer.cc; if (!closer.can_close) { closer = closer.next; } else { // found emphasis closer. now look back for first matching opener: opener = closer.previous; opener_found = false; switch (closercc) { case C_SINGLEQUOTE: openers_bottom_index = 0; break; case C_DOUBLEQUOTE: openers_bottom_index = 1; break; case C_UNDERSCORE: openers_bottom_index = 2 + (closer.can_open ? 3 : 0) + (closer.origdelims % 3); break; case C_ASTERISK: openers_bottom_index = 8 + (closer.can_open ? 3 : 0) + (closer.origdelims % 3); break; } while ( opener !== null && opener !== stack_bottom && opener !== openers_bottom[openers_bottom_index] ) { odd_match = (closer.can_open || opener.can_close) && closer.origdelims % 3 !== 0 && (opener.origdelims + closer.origdelims) % 3 === 0; if (opener.cc === closer.cc && opener.can_open && !odd_match) { opener_found = true; break; } opener = opener.previous; } old_closer = closer; if (closercc === C_ASTERISK || closercc === C_UNDERSCORE) { if (!opener_found) { closer = closer.next; } else { // calculate actual number of delimiters used from closer use_delims = closer.numdelims >= 2 && opener.numdelims >= 2 ? 2 : 1; opener_inl = opener.node; closer_inl = closer.node; // remove used delimiters from stack elts and inlines opener.numdelims -= use_delims; closer.numdelims -= use_delims; opener_inl._literal = opener_inl._literal.slice( 0, opener_inl._literal.length - use_delims ); closer_inl._literal = closer_inl._literal.slice( 0, closer_inl._literal.length - use_delims ); // build contents for new emph element var emph = new Node(use_delims === 1 ? "emph" : "strong"); tmp = opener_inl._next; while (tmp && tmp !== closer_inl) { next = tmp._next; tmp.unlink(); emph.appendChild(tmp); tmp = next; } opener_inl.insertAfter(emph); // remove elts between opener and closer in delimiters stack removeDelimitersBetween(opener, closer); // if opener has 0 delims, remove it and the inline if (opener.numdelims === 0) { opener_inl.unlink(); this.removeDelimiter(opener); } if (closer.numdelims === 0) { closer_inl.unlink(); tempstack = closer.next; this.removeDelimiter(closer); closer = tempstack; } } } else if (closercc === C_SINGLEQUOTE) { closer.node._literal = "\u2019"; if (opener_found) { opener.node._literal = "\u2018"; } closer = closer.next; } else if (closercc === C_DOUBLEQUOTE) { closer.node._literal = "\u201D"; if (opener_found) { opener.node.literal = "\u201C"; } closer = closer.next; } if (!opener_found) { // Set lower bound for future searches for openers: openers_bottom[openers_bottom_index] = old_closer.previous; if (!old_closer.can_open) { // We can remove a closer that can't be an opener, // once we've seen there's no matching opener: this.removeDelimiter(old_closer); } } } } // remove all delimiters while (this.delimiters !== null && this.delimiters !== stack_bottom) { this.removeDelimiter(this.delimiters); } }; // Attempt to parse link title (sans quotes), returning the string // or null if no match. var parseLinkTitle = function() { var title = this.match(reLinkTitle); if (title === null) { return null; } else { // chop off quotes from title and unescape: return unescapeString$1(title.slice(1, -1)); } }; // Attempt to parse link destination, returning the string or // null if no match. var parseLinkDestination = function() { var res = this.match(reLinkDestinationBraces); if (res === null) { if (this.peek() === C_LESSTHAN) { return null; } // TODO handrolled parser; res should be null or the string var savepos = this.pos; var openparens = 0; var c; while ((c = this.peek()) !== -1) { if ( c === C_BACKSLASH$1 && reEscapable.test(this.subject.charAt(this.pos + 1)) ) { this.pos += 1; if (this.peek() !== -1) { this.pos += 1; } } else if (c === C_OPEN_PAREN) { this.pos += 1; openparens += 1; } else if (c === C_CLOSE_PAREN) { if (openparens < 1) { break; } else { this.pos += 1; openparens -= 1; } } else if (reWhitespaceChar.exec(fromCodePoint(c)) !== null) { break; } else { this.pos += 1; } } if (this.pos === savepos && c !== C_CLOSE_PAREN) { return null; } if (openparens !== 0) { return null; } res = this.subject.slice(savepos, this.pos); return normalizeURI$1(unescapeString$1(res)); } else { // chop off surrounding <..>: return normalizeURI$1(unescapeString$1(res.slice(1, -1))); } }; // Attempt to parse a link label, returning number of characters parsed. var parseLinkLabel = function() { var m = this.match(reLinkLabel); if (m === null || m.length > 1001) { return 0; } else { return m.length; } }; // Add open bracket to delimiter stack and add a text node to block's children. var parseOpenBracket = function(block) { var startpos = this.pos; this.pos += 1; var node = text("["); block.appendChild(node); // Add entry to stack for this opener this.addBracket(node, startpos, false); return true; }; // IF next character is [, and ! delimiter to delimiter stack and // add a text node to block's children. Otherwise just add a text node. var parseBang = function(block) { var startpos = this.pos; this.pos += 1; if (this.peek() === C_OPEN_BRACKET) { this.pos += 1; var node = text("!["); block.appendChild(node); // Add entry to stack for this opener this.addBracket(node, startpos + 1, true); } else { block.appendChild(text("!")); } return true; }; // Try to match close bracket against an opening in the delimiter // stack. Add either a link or image, or a plain [ character, // to block's children. If there is a matching delimiter, // remove it from the delimiter stack. var parseCloseBracket = function(block) { var startpos; var is_image; var dest; var title; var matched = false; var reflabel; var opener; this.pos += 1; startpos = this.pos; // get last [ or ![ opener = this.brackets; if (opener === null) { // no matched opener, just return a literal block.appendChild(text("]")); return true; } if (!opener.active) { // no matched opener, just return a literal block.appendChild(text("]")); // take opener off brackets stack this.removeBracket(); return true; } // If we got here, open is a potential opener is_image = opener.image; // Check to see if we have a link/image var savepos = this.pos; // Inline link? if (this.peek() === C_OPEN_PAREN) { this.pos++; if ( this.spnl() && (dest = this.parseLinkDestination()) !== null && this.spnl() && // make sure there's a space before the title: ((reWhitespaceChar.test(this.subject.charAt(this.pos - 1)) && (title = this.parseLinkTitle())) || true) && this.spnl() && this.peek() === C_CLOSE_PAREN ) { this.pos += 1; matched = true; } else { this.pos = savepos; } } if (!matched) { // Next, see if there's a link label var beforelabel = this.pos; var n = this.parseLinkLabel(); if (n > 2) { reflabel = this.subject.slice(beforelabel, beforelabel + n); } else if (!opener.bracketAfter) { // Empty or missing second label means to use the first label as the reference. // The reference must not contain a bracket. If we know there's a bracket, we don't even bother checking it. reflabel = this.subject.slice(opener.index, startpos); } if (n === 0) { // If shortcut reference link, rewind before spaces we skipped. this.pos = savepos; } if (reflabel) { // lookup rawlabel in refmap var link = this.refmap[normalizeReference(reflabel)]; if (link) { dest = link.destination; title = link.title; matched = true; } } } if (matched) { var node = new Node(is_image ? "image" : "link"); node._destination = dest; node._title = title || ""; var tmp, next; tmp = opener.node._next; while (tmp) { next = tmp._next; tmp.unlink(); node.appendChild(tmp); tmp = next; } block.appendChild(node); this.processEmphasis(opener.previousDelimiter); this.removeBracket(); opener.node.unlink(); // We remove this bracket and processEmphasis will remove later delimiters. // Now, for a link, we also deactivate earlier link openers. // (no links in links) if (!is_image) { opener = this.brackets; while (opener !== null) { if (!opener.image) { opener.active = false; // deactivate this opener } opener = opener.previous; } } return true; } else { // no match this.removeBracket(); // remove this opener from stack this.pos = startpos; block.appendChild(text("]")); return true; } }; var addBracket = function(node, index, image) { if (this.brackets !== null) { this.brackets.bracketAfter = true; } this.brackets = { node: node, previous: this.brackets, previousDelimiter: this.delimiters, index: index, image: image, active: true }; }; var removeBracket = function() { this.brackets = this.brackets.previous; }; // Attempt to parse an entity. var parseEntity = function(block) { var m; if ((m = this.match(reEntityHere))) { block.appendChild(text(lib_6(m))); return true; } else { return false; } }; // Parse a run of ordinary characters, or a single character with // a special meaning in markdown, as a plain string. var parseString = function(block) { var m; if ((m = this.match(reMain))) { if (this.options.smart) { block.appendChild( text( m .replace(reEllipses, "\u2026") .replace(reDash, function(chars) { var enCount = 0; var emCount = 0; if (chars.length % 3 === 0) { // If divisible by 3, use all em dashes emCount = chars.length / 3; } else if (chars.length % 2 === 0) { // If divisible by 2, use all en dashes enCount = chars.length / 2; } else if (chars.length % 3 === 2) { // If 2 extra dashes, use en dash for last 2; em dashes for rest enCount = 1; emCount = (chars.length - 2) / 3; } else { // Use en dashes for last 4 hyphens; em dashes for rest enCount = 2; emCount = (chars.length - 4) / 3; } return ( "\u2014".repeat(emCount) + "\u2013".repeat(enCount) ); }) ) ); } else { block.appendChild(text(m)); } return true; } else { return false; } }; // Parse a newline. If it was preceded by two spaces, return a hard // line break; otherwise a soft line break. var parseNewline = function(block) { this.pos += 1; // assume we're at a \n // check previous node for trailing spaces var lastc = block._lastChild; if ( lastc && lastc.type === "text" && lastc._literal[lastc._literal.length - 1] === " " ) { var hardbreak = lastc._literal[lastc._literal.length - 2] === " "; lastc._literal = lastc._literal.replace(reFinalSpace, ""); block.appendChild(new Node(hardbreak ? "linebreak" : "softbreak")); } else { block.appendChild(new Node("softbreak")); } this.match(reInitialSpace); // gobble leading spaces in next line return true; }; // Attempt to parse a link reference, modifying refmap. var parseReference = function(s, refmap) { this.subject = s; this.pos = 0; var rawlabel; var dest; var title; var matchChars; var startpos = this.pos; // label: matchChars = this.parseLinkLabel(); if (matchChars === 0) { return 0; } else { rawlabel = this.subject.slice(0, matchChars); } // colon: if (this.peek() === C_COLON) { this.pos++; } else { this.pos = startpos; return 0; } // link url this.spnl(); dest = this.parseLinkDestination(); if (dest === null) { this.pos = startpos; return 0; } var beforetitle = this.pos; this.spnl(); if (this.pos !== beforetitle) { title = this.parseLinkTitle(); } if (title === null) { title = ""; // rewind before spaces this.pos = beforetitle; } // make sure we're at line end: var atLineEnd = true; if (this.match(reSpaceAtEndOfLine) === null) { if (title === "") { atLineEnd = false; } else { // the potential title we found is not at the line end, // but it could still be a legal link reference if we // discard the title title = ""; // rewind before spaces this.pos = beforetitle; // and instead check if the link URL is at the line end atLineEnd = this.match(reSpaceAtEndOfLine) !== null; } } if (!atLineEnd) { this.pos = startpos; return 0; } var normlabel = normalizeReference(rawlabel); if (normlabel === "") { // label must contain non-whitespace characters this.pos = startpos; return 0; } if (!refmap[normlabel]) { refmap[normlabel] = { destination: dest, title: title }; } return this.pos - startpos; }; // Parse the next inline element in subject, advancing subject position. // On success, add the result to block's children and return true. // On failure, return false. var parseInline = function(block) { var res = false; var c = this.peek(); if (c === -1) { return false; } switch (c) { case C_NEWLINE: res = this.parseNewline(block); break; case C_BACKSLASH$1: res = this.parseBackslash(block); break; case C_BACKTICK: res = this.parseBackticks(block); break; case C_ASTERISK: case C_UNDERSCORE: res = this.handleDelim(c, block); break; case C_SINGLEQUOTE: case C_DOUBLEQUOTE: res = this.options.smart && this.handleDelim(c, block); break; case C_OPEN_BRACKET: res = this.parseOpenBracket(block); break; case C_BANG: res = this.parseBang(block); break; case C_CLOSE_BRACKET: res = this.parseCloseBracket(block); break; case C_LESSTHAN: res = this.parseAutolink(block) || this.parseHtmlTag(block); break; case C_AMPERSAND: res = this.parseEntity(block); break; default: res = this.parseString(block); break; } if (!res) { this.pos += 1; block.appendChild(text(fromCodePoint(c))); } return true; }; // Parse string content in block into inline children, // using refmap to resolve references. var parseInlines = function(block) { this.subject = block._string_content.trim(); this.pos = 0; this.delimiters = null; this.brackets = null; while (this.parseInline(block)) {} block._string_content = null; // allow raw string to be garbage collected this.processEmphasis(null); }; // The InlineParser object. function InlineParser(options) { return { subject: "", delimiters: null, // used by handleDelim method brackets: null, pos: 0, refmap: {}, match: match, peek: peek, spnl: spnl, parseBackticks: parseBackticks, parseBackslash: parseBackslash, parseAutolink: parseAutolink, parseHtmlTag: parseHtmlTag, scanDelims: scanDelims, handleDelim: handleDelim, parseLinkTitle: parseLinkTitle, parseLinkDestination: parseLinkDestination, parseLinkLabel: parseLinkLabel, parseOpenBracket: parseOpenBracket, parseBang: parseBang, parseCloseBracket: parseCloseBracket, addBracket: addBracket, removeBracket: removeBracket, parseEntity: parseEntity, parseString: parseString, parseNewline: parseNewline, parseReference: parseReference, parseInline: parseInline, processEmphasis: processEmphasis, removeDelimiter: removeDelimiter, options: options || {}, parse: parseInlines }; } var CODE_INDENT = 4; var C_TAB = 9; var C_NEWLINE$1 = 10; var C_GREATERTHAN = 62; var C_LESSTHAN$1 = 60; var C_SPACE = 32; var C_OPEN_BRACKET$1 = 91; var reHtmlBlockOpen = [ /./, // dummy for 0 /^<(?:script|pre|textarea|style)(?:\s|>|$)/i, /^/, /\?>/, />/, /\]\]>/ ]; var reThematicBreak = /^(?:\*[ \t]*){3,}$|^(?:_[ \t]*){3,}$|^(?:-[ \t]*){3,}$/; var reMaybeSpecial = /^[#`~*+_=<>0-9-]/; var reNonSpace = /[^ \t\f\v\r\n]/; var reBulletListMarker = /^[*+-]/; var reOrderedListMarker = /^(\d{1,9})([.)])/; var reATXHeadingMarker = /^#{1,6}(?:[ \t]+|$)/; var reCodeFence = /^`{3,}(?!.*`)|^~{3,}/; var reClosingCodeFence = /^(?:`{3,}|~{3,})(?=[ \t]*$)/; var reSetextHeadingLine = /^(?:=+|-+)[ \t]*$/; var reLineEnding = /\r\n|\n|\r/; // Returns true if string contains only space characters. var isBlank = function(s) { return !reNonSpace.test(s); }; var isSpaceOrTab = function(c) { return c === C_SPACE || c === C_TAB; }; var peek$1 = function(ln, pos) { if (pos < ln.length) { return ln.charCodeAt(pos); } else { return -1; } }; // DOC PARSER // These are methods of a Parser object, defined below. // Returns true if block ends with a blank line. var endsWithBlankLine = function(block) { return block.next && block.sourcepos[1][0] !== block.next.sourcepos[0][0] - 1; }; // Add a line to the block at the tip. We assume the tip // can accept lines -- that check should be done before calling this. var addLine = function() { if (this.partiallyConsumedTab) { this.offset += 1; // skip over tab // add space characters: var charsToTab = 4 - (this.column % 4); this.tip._string_content += " ".repeat(charsToTab); } this.tip._string_content += this.currentLine.slice(this.offset) + "\n"; }; // Add block of type tag as a child of the tip. If the tip can't // accept children, close and finalize it and try its parent, // and so on til we find a block that can accept children. var addChild = function(tag, offset) { while (!this.blocks[this.tip.type].canContain(tag)) { this.finalize(this.tip, this.lineNumber - 1); } var column_number = offset + 1; // offset 0 = column 1 var newBlock = new Node(tag, [ [this.lineNumber, column_number], [0, 0] ]); newBlock._string_content = ""; this.tip.appendChild(newBlock); this.tip = newBlock; return newBlock; }; // Parse a list marker and return data on the marker (type, // start, delimiter, bullet character, padding) or null. var parseListMarker = function(parser, container) { var rest = parser.currentLine.slice(parser.nextNonspace); var match; var nextc; var spacesStartCol; var spacesStartOffset; var data = { type: null, tight: true, // lists are tight by default bulletChar: null, start: null, delimiter: null, padding: null, markerOffset: parser.indent }; if (parser.indent >= 4) { return null; } if ((match = rest.match(reBulletListMarker))) { data.type = "bullet"; data.bulletChar = match[0][0]; } else if ( (match = rest.match(reOrderedListMarker)) && (container.type !== "paragraph" || match[1] == 1) ) { data.type = "ordered"; data.start = parseInt(match[1]); data.delimiter = match[2]; } else { return null; } // make sure we have spaces after nextc = peek$1(parser.currentLine, parser.nextNonspace + match[0].length); if (!(nextc === -1 || nextc === C_TAB || nextc === C_SPACE)) { return null; } // if it interrupts paragraph, make sure first line isn't blank if ( container.type === "paragraph" && !parser.currentLine .slice(parser.nextNonspace + match[0].length) .match(reNonSpace) ) { return null; } // we've got a match! advance offset and calculate padding parser.advanceNextNonspace(); // to start of marker parser.advanceOffset(match[0].length, true); // to end of marker spacesStartCol = parser.column; spacesStartOffset = parser.offset; do { parser.advanceOffset(1, true); nextc = peek$1(parser.currentLine, parser.offset); } while (parser.column - spacesStartCol < 5 && isSpaceOrTab(nextc)); var blank_item = peek$1(parser.currentLine, parser.offset) === -1; var spaces_after_marker = parser.column - spacesStartCol; if (spaces_after_marker >= 5 || spaces_after_marker < 1 || blank_item) { data.padding = match[0].length + 1; parser.column = spacesStartCol; parser.offset = spacesStartOffset; if (isSpaceOrTab(peek$1(parser.currentLine, parser.offset))) { parser.advanceOffset(1, true); } } else { data.padding = match[0].length + spaces_after_marker; } return data; }; // Returns true if the two list items are of the same type, // with the same delimiter and bullet character. This is used // in agglomerating list items into lists. var listsMatch = function(list_data, item_data) { return ( list_data.type === item_data.type && list_data.delimiter === item_data.delimiter && list_data.bulletChar === item_data.bulletChar ); }; // Finalize and close any unmatched blocks. var closeUnmatchedBlocks = function() { if (!this.allClosed) { // finalize any blocks not matched while (this.oldtip !== this.lastMatchedContainer) { var parent = this.oldtip._parent; this.finalize(this.oldtip, this.lineNumber - 1); this.oldtip = parent; } this.allClosed = true; } }; // Remove link reference definitions from given tree. var removeLinkReferenceDefinitions = function(parser, tree) { var event, node; var walker = tree.walker(); var emptyNodes = []; while ((event = walker.next())) { node = event.node; if (event.entering && node.type === "paragraph") { var pos; var hasReferenceDefs = false; // Try parsing the beginning as link reference definitions; // Note that link reference definitions must be the beginning of a // paragraph node since link reference definitions cannot interrupt // paragraphs. while ( peek$1(node._string_content, 0) === C_OPEN_BRACKET$1 && (pos = parser.inlineParser.parseReference( node._string_content, parser.refmap )) ) { const removedText = node._string_content.slice(0, pos); node._string_content = node._string_content.slice(pos); hasReferenceDefs = true; const lines = removedText.split("\n"); // -1 for final newline. node.sourcepos[0][0] += lines.length - 1; } if (hasReferenceDefs && isBlank(node._string_content)) { emptyNodes.push(node); } } } for (node of emptyNodes) { node.unlink(); } }; // 'finalize' is run when the block is closed. // 'continue' is run to check whether the block is continuing // at a certain line and offset (e.g. whether a block quote // contains a `>`. It returns 0 for matched, 1 for not matched, // and 2 for "we've dealt with this line completely, go to next." var blocks = { document: { continue: function() { return 0; }, finalize: function(parser, block) { removeLinkReferenceDefinitions(parser, block); return; }, canContain: function(t) { return t !== "item"; }, acceptsLines: false }, list: { continue: function() { return 0; }, finalize: function(parser, block) { var item = block._firstChild; while (item) { // check for non-final list item ending with blank line: if (item._next && endsWithBlankLine(item)) { block._listData.tight = false; break; } // recurse into children of list item, to see if there are // spaces between any of them: var subitem = item._firstChild; while (subitem) { if ( subitem._next && endsWithBlankLine(subitem) ) { block._listData.tight = false; break; } subitem = subitem._next; } item = item._next; } block.sourcepos[1] = block._lastChild.sourcepos[1]; }, canContain: function(t) { return t === "item"; }, acceptsLines: false }, block_quote: { continue: function(parser) { var ln = parser.currentLine; if ( !parser.indented && peek$1(ln, parser.nextNonspace) === C_GREATERTHAN ) { parser.advanceNextNonspace(); parser.advanceOffset(1, false); if (isSpaceOrTab(peek$1(ln, parser.offset))) { parser.advanceOffset(1, true); } } else { return 1; } return 0; }, finalize: function() { return; }, canContain: function(t) { return t !== "item"; }, acceptsLines: false }, item: { continue: function(parser, container) { if (parser.blank) { if (container._firstChild == null) { // Blank line after empty list item return 1; } else { parser.advanceNextNonspace(); } } else if ( parser.indent >= container._listData.markerOffset + container._listData.padding ) { parser.advanceOffset( container._listData.markerOffset + container._listData.padding, true ); } else { return 1; } return 0; }, finalize: function(parser, block) { if (block._lastChild) { block.sourcepos[1] = block._lastChild.sourcepos[1]; } else { // Empty list item block.sourcepos[1][0] = block.sourcepos[0][0]; block.sourcepos[1][1] = block._listData.markerOffset + block._listData.padding; } return; }, canContain: function(t) { return t !== "item"; }, acceptsLines: false }, heading: { continue: function() { // a heading can never container > 1 line, so fail to match: return 1; }, finalize: function() { return; }, canContain: function() { return false; }, acceptsLines: false }, thematic_break: { continue: function() { // a thematic break can never container > 1 line, so fail to match: return 1; }, finalize: function() { return; }, canContain: function() { return false; }, acceptsLines: false }, code_block: { continue: function(parser, container) { var ln = parser.currentLine; var indent = parser.indent; if (container._isFenced) { // fenced var match = indent <= 3 && ln.charAt(parser.nextNonspace) === container._fenceChar && ln.slice(parser.nextNonspace).match(reClosingCodeFence); if (match && match[0].length >= container._fenceLength) { // closing fence - we're at end of line, so we can return parser.lastLineLength = parser.offset + indent + match[0].length; parser.finalize(container, parser.lineNumber); return 2; } else { // skip optional spaces of fence offset var i = container._fenceOffset; while (i > 0 && isSpaceOrTab(peek$1(ln, parser.offset))) { parser.advanceOffset(1, true); i--; } } } else { // indented if (indent >= CODE_INDENT) { parser.advanceOffset(CODE_INDENT, true); } else if (parser.blank) { parser.advanceNextNonspace(); } else { return 1; } } return 0; }, finalize: function(parser, block) { if (block._isFenced) { // fenced // first line becomes info string var content = block._string_content; var newlinePos = content.indexOf("\n"); var firstLine = content.slice(0, newlinePos); var rest = content.slice(newlinePos + 1); block.info = unescapeString(firstLine.trim()); block._literal = rest; } else { // indented var lines = block._string_content.split("\n"); // Note that indented code block cannot be empty, so // lines.length cannot be zero. while (/^[ \t]*$/.test(lines[lines.length - 1])) { lines.pop(); } block._literal = lines.join("\n") + "\n"; block.sourcepos[1][0] = block.sourcepos[0][0] + lines.length - 1; block.sourcepos[1][1] = block.sourcepos[0][1] + lines[lines.length - 1].length - 1; } block._string_content = null; // allow GC }, canContain: function() { return false; }, acceptsLines: true }, html_block: { continue: function(parser, container) { return parser.blank && (container._htmlBlockType === 6 || container._htmlBlockType === 7) ? 1 : 0; }, finalize: function(parser, block) { block._literal = block._string_content.replace(/\n$/, ''); block._string_content = null; // allow GC }, canContain: function() { return false; }, acceptsLines: true }, paragraph: { continue: function(parser) { return parser.blank ? 1 : 0; }, finalize: function() { return; }, canContain: function() { return false; }, acceptsLines: true } }; // block start functions. Return values: // 0 = no match // 1 = matched container, keep going // 2 = matched leaf, no more block starts var blockStarts = [ // block quote function(parser) { if ( !parser.indented && peek$1(parser.currentLine, parser.nextNonspace) === C_GREATERTHAN ) { parser.advanceNextNonspace(); parser.advanceOffset(1, false); // optional following space if (isSpaceOrTab(peek$1(parser.currentLine, parser.offset))) { parser.advanceOffset(1, true); } parser.closeUnmatchedBlocks(); parser.addChild("block_quote", parser.nextNonspace); return 1; } else { return 0; } }, // ATX heading function(parser) { var match; if ( !parser.indented && (match = parser.currentLine .slice(parser.nextNonspace) .match(reATXHeadingMarker)) ) { parser.advanceNextNonspace(); parser.advanceOffset(match[0].length, false); parser.closeUnmatchedBlocks(); var container = parser.addChild("heading", parser.nextNonspace); container.level = match[0].trim().length; // number of #s // remove trailing ###s: container._string_content = parser.currentLine .slice(parser.offset) .replace(/^[ \t]*#+[ \t]*$/, "") .replace(/[ \t]+#+[ \t]*$/, ""); parser.advanceOffset(parser.currentLine.length - parser.offset); return 2; } else { return 0; } }, // Fenced code block function(parser) { var match; if ( !parser.indented && (match = parser.currentLine .slice(parser.nextNonspace) .match(reCodeFence)) ) { var fenceLength = match[0].length; parser.closeUnmatchedBlocks(); var container = parser.addChild("code_block", parser.nextNonspace); container._isFenced = true; container._fenceLength = fenceLength; container._fenceChar = match[0][0]; container._fenceOffset = parser.indent; parser.advanceNextNonspace(); parser.advanceOffset(fenceLength, false); return 2; } else { return 0; } }, // HTML block function(parser, container) { if ( !parser.indented && peek$1(parser.currentLine, parser.nextNonspace) === C_LESSTHAN$1 ) { var s = parser.currentLine.slice(parser.nextNonspace); var blockType; for (blockType = 1; blockType <= 7; blockType++) { if ( reHtmlBlockOpen[blockType].test(s) && (blockType < 7 || (container.type !== "paragraph" && !(!parser.allClosed && !parser.blank && parser.tip.type === "paragraph") // maybe lazy )) ) { parser.closeUnmatchedBlocks(); // We don't adjust parser.offset; // spaces are part of the HTML block: var b = parser.addChild("html_block", parser.offset); b._htmlBlockType = blockType; return 2; } } } return 0; }, // Setext heading function(parser, container) { var match; if ( !parser.indented && container.type === "paragraph" && (match = parser.currentLine .slice(parser.nextNonspace) .match(reSetextHeadingLine)) ) { parser.closeUnmatchedBlocks(); // resolve reference link definitiosn var pos; while ( peek$1(container._string_content, 0) === C_OPEN_BRACKET$1 && (pos = parser.inlineParser.parseReference( container._string_content, parser.refmap )) ) { container._string_content = container._string_content.slice( pos ); } if (container._string_content.length > 0) { var heading = new Node("heading", container.sourcepos); heading.level = match[0][0] === "=" ? 1 : 2; heading._string_content = container._string_content; container.insertAfter(heading); container.unlink(); parser.tip = heading; parser.advanceOffset( parser.currentLine.length - parser.offset, false ); return 2; } else { return 0; } } else { return 0; } }, // thematic break function(parser) { if ( !parser.indented && reThematicBreak.test(parser.currentLine.slice(parser.nextNonspace)) ) { parser.closeUnmatchedBlocks(); parser.addChild("thematic_break", parser.nextNonspace); parser.advanceOffset( parser.currentLine.length - parser.offset, false ); return 2; } else { return 0; } }, // list item function(parser, container) { var data; if ( (!parser.indented || container.type === "list") && (data = parseListMarker(parser, container)) ) { parser.closeUnmatchedBlocks(); // add the list if needed if ( parser.tip.type !== "list" || !listsMatch(container._listData, data) ) { container = parser.addChild("list", parser.nextNonspace); container._listData = data; } // add the list item container = parser.addChild("item", parser.nextNonspace); container._listData = data; return 1; } else { return 0; } }, // indented code block function(parser) { if ( parser.indented && parser.tip.type !== "paragraph" && !parser.blank ) { // indented code parser.advanceOffset(CODE_INDENT, true); parser.closeUnmatchedBlocks(); parser.addChild("code_block", parser.offset); return 2; } else { return 0; } } ]; var advanceOffset = function(count, columns) { var currentLine = this.currentLine; var charsToTab, charsToAdvance; var c; while (count > 0 && (c = currentLine[this.offset])) { if (c === "\t") { charsToTab = 4 - (this.column % 4); if (columns) { this.partiallyConsumedTab = charsToTab > count; charsToAdvance = charsToTab > count ? count : charsToTab; this.column += charsToAdvance; this.offset += this.partiallyConsumedTab ? 0 : 1; count -= charsToAdvance; } else { this.partiallyConsumedTab = false; this.column += charsToTab; this.offset += 1; count -= 1; } } else { this.partiallyConsumedTab = false; this.offset += 1; this.column += 1; // assume ascii; block starts are ascii count -= 1; } } }; var advanceNextNonspace = function() { this.offset = this.nextNonspace; this.column = this.nextNonspaceColumn; this.partiallyConsumedTab = false; }; var findNextNonspace = function() { var currentLine = this.currentLine; var i = this.offset; var cols = this.column; var c; while ((c = currentLine.charAt(i)) !== "") { if (c === " ") { i++; cols++; } else if (c === "\t") { i++; cols += 4 - (cols % 4); } else { break; } } this.blank = c === "\n" || c === "\r" || c === ""; this.nextNonspace = i; this.nextNonspaceColumn = cols; this.indent = this.nextNonspaceColumn - this.column; this.indented = this.indent >= CODE_INDENT; }; // Analyze a line of text and update the document appropriately. // We parse markdown text by calling this on each line of input, // then finalizing the document. var incorporateLine = function(ln) { var all_matched = true; var t; var container = this.doc; this.oldtip = this.tip; this.offset = 0; this.column = 0; this.blank = false; this.partiallyConsumedTab = false; this.lineNumber += 1; // replace NUL characters for security if (ln.indexOf("\u0000") !== -1) { ln = ln.replace(/\0/g, "\uFFFD"); } this.currentLine = ln; // For each containing block, try to parse the associated line start. // Bail out on failure: container will point to the last matching block. // Set all_matched to false if not all containers match. var lastChild; while ((lastChild = container._lastChild) && lastChild._open) { container = lastChild; this.findNextNonspace(); switch (this.blocks[container.type].continue(this, container)) { case 0: // we've matched, keep going break; case 1: // we've failed to match a block all_matched = false; break; case 2: // we've hit end of line for fenced code close and can return return; default: throw "continue returned illegal value, must be 0, 1, or 2"; } if (!all_matched) { container = container._parent; // back up to last matching block break; } } this.allClosed = container === this.oldtip; this.lastMatchedContainer = container; var matchedLeaf = container.type !== "paragraph" && blocks[container.type].acceptsLines; var starts = this.blockStarts; var startsLen = starts.length; // Unless last matched container is a code block, try new container starts, // adding children to the last matched container: while (!matchedLeaf) { this.findNextNonspace(); // this is a little performance optimization: if ( !this.indented && !reMaybeSpecial.test(ln.slice(this.nextNonspace)) ) { this.advanceNextNonspace(); break; } var i = 0; while (i < startsLen) { var res = starts[i](this, container); if (res === 1) { container = this.tip; break; } else if (res === 2) { container = this.tip; matchedLeaf = true; break; } else { i++; } } if (i === startsLen) { // nothing matched this.advanceNextNonspace(); break; } } // What remains at the offset is a text line. Add the text to the // appropriate container. // First check for a lazy paragraph continuation: if (!this.allClosed && !this.blank && this.tip.type === "paragraph") { // lazy paragraph continuation this.addLine(); } else { // not a lazy continuation // finalize any blocks not matched this.closeUnmatchedBlocks(); t = container.type; if (this.blocks[t].acceptsLines) { this.addLine(); // if HtmlBlock, check for end condition if ( t === "html_block" && container._htmlBlockType >= 1 && container._htmlBlockType <= 5 && reHtmlBlockClose[container._htmlBlockType].test( this.currentLine.slice(this.offset) ) ) { this.lastLineLength = ln.length; this.finalize(container, this.lineNumber); } } else if (this.offset < ln.length && !this.blank) { // create paragraph container for line container = this.addChild("paragraph", this.offset); this.advanceNextNonspace(); this.addLine(); } } this.lastLineLength = ln.length; }; // Finalize a block. Close it and do any necessary postprocessing, // e.g. creating string_content from strings, setting the 'tight' // or 'loose' status of a list, and parsing the beginnings // of paragraphs for reference definitions. Reset the tip to the // parent of the closed block. var finalize = function(block, lineNumber) { var above = block._parent; block._open = false; block.sourcepos[1] = [lineNumber, this.lastLineLength]; this.blocks[block.type].finalize(this, block); this.tip = above; }; // Walk through a block & children recursively, parsing string content // into inline content where appropriate. var processInlines = function(block) { var node, event, t; var walker = block.walker(); this.inlineParser.refmap = this.refmap; this.inlineParser.options = this.options; while ((event = walker.next())) { node = event.node; t = node.type; if (!event.entering && (t === "paragraph" || t === "heading")) { this.inlineParser.parse(node); } } }; var Document = function() { var doc = new Node("document", [ [1, 1], [0, 0] ]); return doc; }; // The main parsing function. Returns a parsed document AST. var parse = function(input) { this.doc = new Document(); this.tip = this.doc; this.refmap = {}; this.lineNumber = 0; this.lastLineLength = 0; this.offset = 0; this.column = 0; this.lastMatchedContainer = this.doc; this.currentLine = ""; if (this.options.time) { console.time("preparing input"); } var lines = input.split(reLineEnding); var len = lines.length; if (input.charCodeAt(input.length - 1) === C_NEWLINE$1) { // ignore last blank line created by final newline len -= 1; } if (this.options.time) { console.timeEnd("preparing input"); } if (this.options.time) { console.time("block parsing"); } for (var i = 0; i < len; i++) { this.incorporateLine(lines[i]); } while (this.tip) { this.finalize(this.tip, len); } if (this.options.time) { console.timeEnd("block parsing"); } if (this.options.time) { console.time("inline parsing"); } this.processInlines(this.doc); if (this.options.time) { console.timeEnd("inline parsing"); } return this.doc; }; // The Parser object. function Parser(options) { return { doc: new Document(), blocks: blocks, blockStarts: blockStarts, tip: this.doc, oldtip: this.doc, currentLine: "", lineNumber: 0, offset: 0, column: 0, nextNonspace: 0, nextNonspaceColumn: 0, indent: 0, indented: false, blank: false, partiallyConsumedTab: false, allClosed: true, lastMatchedContainer: this.doc, refmap: {}, lastLineLength: 0, inlineParser: new InlineParser(options), findNextNonspace: findNextNonspace, advanceOffset: advanceOffset, advanceNextNonspace: advanceNextNonspace, addLine: addLine, addChild: addChild, incorporateLine: incorporateLine, finalize: finalize, processInlines: processInlines, closeUnmatchedBlocks: closeUnmatchedBlocks, parse: parse, options: options || {} }; } function Renderer() {} /** * Walks the AST and calls member methods for each Node type. * * @param ast {Node} The root of the abstract syntax tree. */ function render(ast) { var walker = ast.walker(), event, type; this.buffer = ""; this.lastOut = "\n"; while ((event = walker.next())) { type = event.node.type; if (this[type]) { this[type](event.node, event.entering); } } return this.buffer; } /** * Concatenate a literal string to the buffer. * * @param str {String} The string to concatenate. */ function lit(str) { this.buffer += str; this.lastOut = str; } /** * Output a newline to the buffer. */ function cr() { if (this.lastOut !== "\n") { this.lit("\n"); } } /** * Concatenate a string to the buffer possibly escaping the content. * * Concrete renderer implementations should override this method. * * @param str {String} The string to concatenate. */ function out(str) { this.lit(str); } /** * Escape a string for the target renderer. * * Abstract function that should be implemented by concrete * renderer implementations. * * @param str {String} The string to escape. */ function esc(str) { return str; } Renderer.prototype.render = render; Renderer.prototype.out = out; Renderer.prototype.lit = lit; Renderer.prototype.cr = cr; Renderer.prototype.esc = esc; var reUnsafeProtocol = /^javascript:|vbscript:|file:|data:/i; var reSafeDataProtocol = /^data:image\/(?:png|gif|jpeg|webp)/i; var potentiallyUnsafe = function(url) { return reUnsafeProtocol.test(url) && !reSafeDataProtocol.test(url); }; // Helper function to produce an HTML tag. function tag(name, attrs, selfclosing) { if (this.disableTags > 0) { return; } this.buffer += "<" + name; if (attrs && attrs.length > 0) { var i = 0; var attrib; while ((attrib = attrs[i]) !== undefined) { this.buffer += " " + attrib[0] + '="' + attrib[1] + '"'; i++; } } if (selfclosing) { this.buffer += " /"; } this.buffer += ">"; this.lastOut = ">"; } function HtmlRenderer(options) { options = options || {}; // by default, soft breaks are rendered as newlines in HTML options.softbreak = options.softbreak || "\n"; // set to "
" to make them hard breaks // set to " " if you want to ignore line wrapping in source this.esc = options.esc || escapeXml; // escape html with a custom function // else use escapeXml this.disableTags = 0; this.lastOut = "\n"; this.options = options; } /* Node methods */ function text$1(node) { this.out(node.literal); } function softbreak() { this.lit(this.options.softbreak); } function linebreak() { this.tag("br", [], true); this.cr(); } function link(node, entering) { var attrs = this.attrs(node); if (entering) { if (!(this.options.safe && potentiallyUnsafe(node.destination))) { attrs.push(["href", this.esc(node.destination)]); } if (node.title) { attrs.push(["title", this.esc(node.title)]); } this.tag("a", attrs); } else { this.tag("/a"); } } function image$1(node, entering) { if (entering) { if (this.disableTags === 0) { if (this.options.safe && potentiallyUnsafe(node.destination)) { this.lit('');
                } else {
                    this.lit('<img src='); } } } function emph(node, entering) { this.tag(entering ? "em" : "/em"); } function strong(node, entering) { this.tag(entering ? "strong" : "/strong"); } function paragraph(node, entering) { var grandparent = node.parent.parent, attrs = this.attrs(node); if (grandparent !== null && grandparent.type === "list") { if (grandparent.listTight) { return; } } if (entering) { this.cr(); this.tag("p", attrs); } else { this.tag("/p"); this.cr(); } } function heading(node, entering) { var tagname = "h" + node.level, attrs = this.attrs(node); if (entering) { this.cr(); this.tag(tagname, attrs); } else { this.tag("/" + tagname); this.cr(); } } function code(node) { this.tag("code"); this.out(node.literal); this.tag("/code"); } function code_block(node) { var info_words = node.info ? node.info.split(/\s+/) : [], attrs = this.attrs(node); if (info_words.length > 0 && info_words[0].length > 0) { var cls = this.esc(info_words[0]); if (!/^language-/.exec(cls)) { cls = "language-" + cls; } attrs.push(["class", cls]); } this.cr(); this.tag("pre"); this.tag("code", attrs); this.out(node.literal); this.tag("/code"); this.tag("/pre"); this.cr(); } function thematic_break(node) { var attrs = this.attrs(node); this.cr(); this.tag("hr", attrs, true); this.cr(); } function block_quote(node, entering) { var attrs = this.attrs(node); if (entering) { this.cr(); this.tag("blockquote", attrs); this.cr(); } else { this.cr(); this.tag("/blockquote"); this.cr(); } } function list(node, entering) { var tagname = node.listType === "bullet" ? "ul" : "ol", attrs = this.attrs(node); if (entering) { var start = node.listStart; if (start !== null && start !== 1) { attrs.push(["start", start.toString()]); } this.cr(); this.tag(tagname, attrs); this.cr(); } else { this.cr(); this.tag("/" + tagname); this.cr(); } } function item(node, entering) { var attrs = this.attrs(node); if (entering) { this.tag("li", attrs); } else { this.tag("/li"); this.cr(); } } function html_inline(node) { if (this.options.safe) { this.lit(""); } else { this.lit(node.literal); } } function html_block(node) { this.cr(); if (this.options.safe) { this.lit(""); } else { this.lit(node.literal); } this.cr(); } function custom_inline(node, entering) { if (entering && node.onEnter) { this.lit(node.onEnter); } else if (!entering && node.onExit) { this.lit(node.onExit); } } function custom_block(node, entering) { this.cr(); if (entering && node.onEnter) { this.lit(node.onEnter); } else if (!entering && node.onExit) { this.lit(node.onExit); } this.cr(); } /* Helper methods */ function out$1(s) { this.lit(this.esc(s)); } function attrs(node) { var att = []; if (this.options.sourcepos) { var pos = node.sourcepos; if (pos) { att.push([ "data-sourcepos", String(pos[0][0]) + ":" + String(pos[0][1]) + "-" + String(pos[1][0]) + ":" + String(pos[1][1]) ]); } } return att; } // quick browser-compatible inheritance HtmlRenderer.prototype = Object.create(Renderer.prototype); HtmlRenderer.prototype.text = text$1; HtmlRenderer.prototype.html_inline = html_inline; HtmlRenderer.prototype.html_block = html_block; HtmlRenderer.prototype.softbreak = softbreak; HtmlRenderer.prototype.linebreak = linebreak; HtmlRenderer.prototype.link = link; HtmlRenderer.prototype.image = image$1; HtmlRenderer.prototype.emph = emph; HtmlRenderer.prototype.strong = strong; HtmlRenderer.prototype.paragraph = paragraph; HtmlRenderer.prototype.heading = heading; HtmlRenderer.prototype.code = code; HtmlRenderer.prototype.code_block = code_block; HtmlRenderer.prototype.thematic_break = thematic_break; HtmlRenderer.prototype.block_quote = block_quote; HtmlRenderer.prototype.list = list; HtmlRenderer.prototype.item = item; HtmlRenderer.prototype.custom_inline = custom_inline; HtmlRenderer.prototype.custom_block = custom_block; HtmlRenderer.prototype.esc = escapeXml; HtmlRenderer.prototype.out = out$1; HtmlRenderer.prototype.tag = tag; HtmlRenderer.prototype.attrs = attrs; var reXMLTag = /\<[^>]*\>/; function toTagName(s) { return s.replace(/([a-z])([A-Z])/g, "$1_$2").toLowerCase(); } function XmlRenderer(options) { options = options || {}; this.disableTags = 0; this.lastOut = "\n"; this.indentLevel = 0; this.indent = " "; this.esc = options.esc || escapeXml; // escape html with a custom function // else use escapeXml this.options = options; } function render$1(ast) { this.buffer = ""; var attrs; var tagname; var walker = ast.walker(); var event, node, entering; var container; var selfClosing; var nodetype; var options = this.options; if (options.time) { console.time("rendering"); } this.buffer += '\n'; this.buffer += '\n'; while ((event = walker.next())) { entering = event.entering; node = event.node; nodetype = node.type; container = node.isContainer; selfClosing = nodetype === "thematic_break" || nodetype === "linebreak" || nodetype === "softbreak"; tagname = toTagName(nodetype); if (entering) { attrs = []; switch (nodetype) { case "document": attrs.push(["xmlns", "http://commonmark.org/xml/1.0"]); break; case "list": if (node.listType !== null) { attrs.push(["type", node.listType.toLowerCase()]); } if (node.listStart !== null) { attrs.push(["start", String(node.listStart)]); } if (node.listTight !== null) { attrs.push([ "tight", node.listTight ? "true" : "false" ]); } var delim = node.listDelimiter; if (delim !== null) { var delimword = ""; if (delim === ".") { delimword = "period"; } else { delimword = "paren"; } attrs.push(["delimiter", delimword]); } break; case "code_block": if (node.info) { attrs.push(["info", node.info]); } break; case "heading": attrs.push(["level", String(node.level)]); break; case "link": case "image": attrs.push(["destination", node.destination]); attrs.push(["title", node.title]); break; case "custom_inline": case "custom_block": attrs.push(["on_enter", node.onEnter]); attrs.push(["on_exit", node.onExit]); break; } if (options.sourcepos) { var pos = node.sourcepos; if (pos) { attrs.push([ "sourcepos", String(pos[0][0]) + ":" + String(pos[0][1]) + "-" + String(pos[1][0]) + ":" + String(pos[1][1]) ]); } } this.cr(); this.out(this.tag(tagname, attrs, selfClosing)); if (container) { this.indentLevel += 1; } else if (!container && !selfClosing) { var lit = node.literal; if (lit) { this.out(this.esc(lit)); } this.out(this.tag("/" + tagname)); } } else { this.indentLevel -= 1; this.cr(); this.out(this.tag("/" + tagname)); } } if (options.time) { console.timeEnd("rendering"); } this.buffer += "\n"; return this.buffer; } function out$2(s) { if (this.disableTags > 0) { this.buffer += s.replace(reXMLTag, ""); } else { this.buffer += s; } this.lastOut = s; } function cr$1() { if (this.lastOut !== "\n") { this.buffer += "\n"; this.lastOut = "\n"; for (var i = this.indentLevel; i > 0; i--) { this.buffer += this.indent; } } } // Helper function to produce an XML tag. function tag$1(name, attrs, selfclosing) { var result = "<" + name; if (attrs && attrs.length > 0) { var i = 0; var attrib; while ((attrib = attrs[i]) !== undefined) { result += " " + attrib[0] + '="' + this.esc(attrib[1]) + '"'; i++; } } if (selfclosing) { result += " /"; } result += ">"; return result; } // quick browser-compatible inheritance XmlRenderer.prototype = Object.create(Renderer.prototype); XmlRenderer.prototype.render = render$1; XmlRenderer.prototype.out = out$2; XmlRenderer.prototype.cr = cr$1; XmlRenderer.prototype.tag = tag$1; XmlRenderer.prototype.esc = escapeXml; exports.HtmlRenderer = HtmlRenderer; exports.Node = Node; exports.Parser = Parser; exports.Renderer = Renderer; exports.XmlRenderer = XmlRenderer; Object.defineProperty(exports, '__esModule', { value: true }); })));