{"version":3,"file":"static/js/vendors-954aa3d8.d832b4e3.js","mappings":"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I,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAEpD2F,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,MAIFsrB,GAAyB,CAC3BjxB,SAAU,CACN,IAAO,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC7G,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAEpD2F,OAAQ,CACJ,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,MAIFurB,GAA2B,CAC7BlxB,SAAU,CACN,IAAO,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAC1G,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAE5D2F,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,MAIFwrB,GAAwB,SAC1BnkC,EACAwX,EACAxT,EACAogC,EACAC,EACAC,GAEA,OAAItkC,EAAQwX,GAAOxX,EAAQgE,EAChBugC,GAAkBvkC,EAAOqkC,EAAU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","sources":["../node_modules/html2canvas/node_modules/tslib/tslib.es6.js","../node_modules/html2canvas/node_modules/src/Util.ts","../node_modules/src/css/layout/bounds.ts","../node_modules/html2canvas/node_modules/css-line-break/node_modules/src/Util.ts","../node_modules/html2canvas/node_modules/css-line-break/node_modules/utrie/node_modules/src/index.ts","../node_modules/html2canvas/node_modules/css-line-break/node_modules/src/Trie.ts","../node_modules/html2canvas/node_modules/src/linebreak-trie.ts","../node_modules/html2canvas/node_modules/src/LineBreak.ts","../node_modules/src/css/syntax/tokenizer.ts","../node_modules/src/css/syntax/parser.ts","../node_modules/src/css/types/length.ts","../node_modules/src/css/types/length-percentage.ts","../node_modules/src/css/types/angle.ts","../node_modules/src/css/types/color.ts","../node_modules/src/css/property-descriptors/background-clip.ts","../node_modules/src/css/property-descriptors/background-color.ts","../node_modules/src/css/types/functions/gradient.ts","../node_modules/src/css/types/functions/-prefix-linear-gradient.ts","../node_modules/src/css/types/functions/radial-gradient.ts","../node_modules/src/css/types/functions/-prefix-radial-gradient.ts","../node_modules/src/css/types/image.ts","../node_modules/src/css/property-descriptors/background-size.ts","../node_modules/src/css/types/functions/linear-gradient.ts","../node_modules/src/css/types/functions/-webkit-gradient.ts","../node_modules/src/css/property-descriptors/background-image.ts","../node_modules/src/css/property-descriptors/background-origin.ts","../node_modules/src/css/property-descriptors/background-position.ts","../node_modules/src/css/property-descriptors/background-repeat.ts","../node_modules/src/css/property-descriptors/line-break.ts","../node_modules/src/css/property-descriptors/border-color.ts","../node_modules/src/css/property-descriptors/border-radius.ts","../node_modules/src/css/property-descriptors/border-style.ts","../node_modules/src/css/property-descriptors/border-width.ts","../node_modules/src/css/property-descriptors/color.ts","../node_modules/src/css/property-descriptors/direction.ts","../node_modules/src/css/property-descriptors/display.ts","../node_modules/src/css/property-descriptors/float.ts","../node_modules/src/css/property-descriptors/letter-spacing.ts","../node_modules/src/css/property-descriptors/word-break.ts","../node_modules/src/css/property-descriptors/line-height.ts","../node_modules/src/css/property-descriptors/list-style-image.ts","../node_modules/src/css/property-descriptors/list-style-position.ts","../node_modules/src/css/property-descriptors/list-style-type.ts","../node_modules/src/css/property-descriptors/margin.ts","../node_modules/src/css/property-descriptors/overflow.ts","../node_modules/src/css/property-descriptors/overflow-wrap.ts","../node_modules/src/css/property-descriptors/padding.ts","../node_modules/src/css/property-descriptors/text-align.ts","../node_modules/src/css/property-descriptors/position.ts","../node_modules/src/css/property-descriptors/text-shadow.ts","../node_modules/src/css/property-descriptors/text-transform.ts","../node_modules/src/css/property-descriptors/transform.ts","../node_modules/src/css/property-descriptors/transform-origin.ts","../node_modules/src/css/property-descriptors/visibility.ts","../node_modules/html2canvas/node_modules/text-segmentation/node_modules/src/Util.ts","../node_modules/src/css/property-descriptors/z-index.ts","../node_modules/src/css/types/time.ts","../node_modules/src/css/property-descriptors/opacity.ts","../node_modules/src/css/property-descriptors/text-decoration-color.ts","../node_modules/src/css/property-descriptors/text-decoration-line.ts","../node_modules/src/css/property-descriptors/font-family.ts","../node_modules/src/css/property-descriptors/font-size.ts","../node_modules/src/css/property-descriptors/font-weight.ts","../node_modules/src/css/property-descriptors/font-variant.ts","../node_modules/src/css/property-descriptors/font-style.ts","../node_modules/src/core/bitwise.ts","../node_modules/src/css/property-descriptors/content.ts","../node_modules/src/css/property-descriptors/counter-increment.ts","../node_modules/src/css/property-descriptors/counter-reset.ts","../node_modules/src/css/property-descriptors/duration.ts","../node_modules/src/css/property-descriptors/quotes.ts","../node_modules/src/css/property-descriptors/box-shadow.ts","../node_modules/src/css/property-descriptors/paint-order.ts","../node_modules/src/css/property-descriptors/webkit-text-stroke-color.ts","../node_modules/src/css/property-descriptors/webkit-text-stroke-width.ts","../node_modules/src/css/index.ts","../node_modules/src/core/debugger.ts","../node_modules/src/dom/element-container.ts","../node_modules/html2canvas/node_modules/src/grapheme-break-trie.ts","../node_modules/html2canvas/node_modules/text-segmentation/node_modules/utrie/node_modules/src/index.ts","../node_modules/html2canvas/node_modules/text-segmentation/node_modules/src/Trie.ts","../node_modules/html2canvas/node_modules/src/GraphemeBreak.ts","../node_modules/src/dom/document-cloner.ts","../node_modules/src/core/features.ts","../node_modules/src/css/layout/text.ts","../node_modules/src/dom/text-container.ts","../node_modules/src/dom/replaced-elements/image-element-container.ts","../node_modules/src/dom/replaced-elements/canvas-element-container.ts","../node_modules/src/dom/replaced-elements/svg-element-container.ts","../node_modules/src/dom/elements/li-element-container.ts","../node_modules/src/dom/elements/ol-element-container.ts","../node_modules/src/dom/replaced-elements/input-element-container.ts","../node_modules/src/dom/elements/select-element-container.ts","../node_modules/src/dom/elements/textarea-element-container.ts","../node_modules/src/dom/replaced-elements/iframe-element-container.ts","../node_modules/src/dom/node-parser.ts","../node_modules/src/css/types/functions/counter.ts","../node_modules/src/render/bound-curves.ts","../node_modules/src/core/cache-storage.ts","../node_modules/src/render/vector.ts","../node_modules/src/render/bezier-curve.ts","../node_modules/src/render/effects.ts","../node_modules/src/render/path.ts","../node_modules/src/render/stacking-context.ts","../node_modules/src/render/border.ts","../node_modules/src/render/box-sizing.ts","../node_modules/src/render/background.ts","../node_modules/src/core/util.ts","../node_modules/src/render/font-metrics.ts","../node_modules/src/render/renderer.ts","../node_modules/src/render/canvas/canvas-renderer.ts","../node_modules/src/render/canvas/foreignobject-renderer.ts","../node_modules/src/core/logger.ts","../node_modules/src/core/context.ts","../node_modules/src/index.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || from);\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","export const toCodePoints = (str: string): number[] => {\n const codePoints = [];\n let i = 0;\n const length = str.length;\n while (i < length) {\n const value = str.charCodeAt(i++);\n if (value >= 0xd800 && value <= 0xdbff && i < length) {\n const extra = str.charCodeAt(i++);\n if ((extra & 0xfc00) === 0xdc00) {\n codePoints.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000);\n } else {\n codePoints.push(value);\n i--;\n }\n } else {\n codePoints.push(value);\n }\n }\n return codePoints;\n};\n\nexport const fromCodePoint = (...codePoints: number[]): string => {\n if (String.fromCodePoint) {\n return String.fromCodePoint(...codePoints);\n }\n\n const length = codePoints.length;\n if (!length) {\n return '';\n }\n\n const codeUnits = [];\n\n let index = -1;\n let result = '';\n while (++index < length) {\n let codePoint = codePoints[index];\n if (codePoint <= 0xffff) {\n codeUnits.push(codePoint);\n } else {\n codePoint -= 0x10000;\n codeUnits.push((codePoint >> 10) + 0xd800, (codePoint % 0x400) + 0xdc00);\n }\n if (index + 1 === length || codeUnits.length > 0x4000) {\n result += String.fromCharCode(...codeUnits);\n codeUnits.length = 0;\n }\n }\n return result;\n};\n\nconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const decode = (base64: string): ArrayBuffer | number[] => {\n let bufferLength = base64.length * 0.75,\n len = base64.length,\n i,\n p = 0,\n encoded1,\n encoded2,\n encoded3,\n encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const buffer =\n typeof ArrayBuffer !== 'undefined' &&\n typeof Uint8Array !== 'undefined' &&\n typeof Uint8Array.prototype.slice !== 'undefined'\n ? new ArrayBuffer(bufferLength)\n : new Array(bufferLength);\n const bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return buffer;\n};\n\nexport const polyUint16Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 2) {\n bytes.push((buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n\nexport const polyUint32Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 4) {\n bytes.push((buffer[i + 3] << 24) | (buffer[i + 2] << 16) | (buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n","import {Context} from '../../core/context';\n\nexport class Bounds {\n constructor(readonly left: number, readonly top: number, readonly width: number, readonly height: number) {}\n\n add(x: number, y: number, w: number, h: number): Bounds {\n return new Bounds(this.left + x, this.top + y, this.width + w, this.height + h);\n }\n\n static fromClientRect(context: Context, clientRect: ClientRect): Bounds {\n return new Bounds(\n clientRect.left + context.windowBounds.left,\n clientRect.top + context.windowBounds.top,\n clientRect.width,\n clientRect.height\n );\n }\n\n static fromDOMRectList(context: Context, domRectList: DOMRectList): Bounds {\n const domRect = Array.from(domRectList).find((rect) => rect.width !== 0);\n return domRect\n ? new Bounds(\n domRect.left + context.windowBounds.left,\n domRect.top + context.windowBounds.top,\n domRect.width,\n domRect.height\n )\n : Bounds.EMPTY;\n }\n\n static EMPTY = new Bounds(0, 0, 0, 0);\n}\n\nexport const parseBounds = (context: Context, node: Element): Bounds => {\n return Bounds.fromClientRect(context, node.getBoundingClientRect());\n};\n\nexport const parseDocumentSize = (document: Document): Bounds => {\n const body = document.body;\n const documentElement = document.documentElement;\n\n if (!body || !documentElement) {\n throw new Error(`Unable to get document size`);\n }\n const width = Math.max(\n Math.max(body.scrollWidth, documentElement.scrollWidth),\n Math.max(body.offsetWidth, documentElement.offsetWidth),\n Math.max(body.clientWidth, documentElement.clientWidth)\n );\n\n const height = Math.max(\n Math.max(body.scrollHeight, documentElement.scrollHeight),\n Math.max(body.offsetHeight, documentElement.offsetHeight),\n Math.max(body.clientHeight, documentElement.clientHeight)\n );\n\n return new Bounds(0, 0, width, height);\n};\n","const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const decode = (base64: string): ArrayBuffer | number[] => {\n let bufferLength = base64.length * 0.75,\n len = base64.length,\n i,\n p = 0,\n encoded1,\n encoded2,\n encoded3,\n encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const buffer =\n typeof ArrayBuffer !== 'undefined' &&\n typeof Uint8Array !== 'undefined' &&\n typeof Uint8Array.prototype.slice !== 'undefined'\n ? new ArrayBuffer(bufferLength)\n : new Array(bufferLength);\n const bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return buffer;\n};\n\nexport const polyUint16Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 2) {\n bytes.push((buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n\nexport const polyUint32Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 4) {\n bytes.push((buffer[i + 3] << 24) | (buffer[i + 2] << 16) | (buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n","const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const encode = (arraybuffer: ArrayBuffer): string => {\n let bytes = new Uint8Array(arraybuffer),\n i,\n len = bytes.length,\n base64 = '';\n\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n\n return base64;\n};\n\nexport const decode = (base64: string): ArrayBuffer => {\n let bufferLength = base64.length * 0.75,\n len = base64.length,\n i,\n p = 0,\n encoded1,\n encoded2,\n encoded3,\n encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const arraybuffer = new ArrayBuffer(bufferLength),\n bytes = new Uint8Array(arraybuffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return arraybuffer;\n};\n","import {decode, polyUint16Array, polyUint32Array} from './Util';\n\nexport type int = number;\n\n/** Shift size for getting the index-2 table offset. */\nexport const UTRIE2_SHIFT_2 = 5;\n\n/** Shift size for getting the index-1 table offset. */\nexport const UTRIE2_SHIFT_1 = 6 + 5;\n\n/**\n * Shift size for shifting left the index array values.\n * Increases possible data size with 16-bit index values at the cost\n * of compactability.\n * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY.\n */\nexport const UTRIE2_INDEX_SHIFT = 2;\n\n/**\n * Difference between the two shift sizes,\n * for getting an index-1 offset from an index-2 offset. 6=11-5\n */\nexport const UTRIE2_SHIFT_1_2 = UTRIE2_SHIFT_1 - UTRIE2_SHIFT_2;\n\n/**\n * The part of the index-2 table for U+D800..U+DBFF stores values for\n * lead surrogate code _units_ not code _points_.\n * Values for lead surrogate code _points_ are indexed with this portion of the table.\n * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.)\n */\nexport const UTRIE2_LSCP_INDEX_2_OFFSET = 0x10000 >> UTRIE2_SHIFT_2;\n\n/** Number of entries in a data block. 32=0x20 */\nexport const UTRIE2_DATA_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_2;\n/** Mask for getting the lower bits for the in-data-block offset. */\nexport const UTRIE2_DATA_MASK = UTRIE2_DATA_BLOCK_LENGTH - 1;\n\nexport const UTRIE2_LSCP_INDEX_2_LENGTH = 0x400 >> UTRIE2_SHIFT_2;\n/** Count the lengths of both BMP pieces. 2080=0x820 */\nexport const UTRIE2_INDEX_2_BMP_LENGTH = UTRIE2_LSCP_INDEX_2_OFFSET + UTRIE2_LSCP_INDEX_2_LENGTH;\n/**\n * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.\n * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2.\n */\nexport const UTRIE2_UTF8_2B_INDEX_2_OFFSET = UTRIE2_INDEX_2_BMP_LENGTH;\nexport const UTRIE2_UTF8_2B_INDEX_2_LENGTH = 0x800 >> 6; /* U+0800 is the first code point after 2-byte UTF-8 */\n/**\n * The index-1 table, only used for supplementary code points, at offset 2112=0x840.\n * Variable length, for code points up to highStart, where the last single-value range starts.\n * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1.\n * (For 0x100000 supplementary code points U+10000..U+10ffff.)\n *\n * The part of the index-2 table for supplementary code points starts\n * after this index-1 table.\n *\n * Both the index-1 table and the following part of the index-2 table\n * are omitted completely if there is only BMP data.\n */\nexport const UTRIE2_INDEX_1_OFFSET = UTRIE2_UTF8_2B_INDEX_2_OFFSET + UTRIE2_UTF8_2B_INDEX_2_LENGTH;\n\n/**\n * Number of index-1 entries for the BMP. 32=0x20\n * This part of the index-1 table is omitted from the serialized form.\n */\nexport const UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> UTRIE2_SHIFT_1;\n\n/** Number of entries in an index-2 block. 64=0x40 */\nexport const UTRIE2_INDEX_2_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_1_2;\n/** Mask for getting the lower bits for the in-index-2-block offset. */\nexport const UTRIE2_INDEX_2_MASK = UTRIE2_INDEX_2_BLOCK_LENGTH - 1;\n\nconst slice16 = (view: number[] | Uint16Array, start: number, end?: number) => {\n if (view.slice) {\n return view.slice(start, end);\n }\n\n return new Uint16Array(Array.prototype.slice.call(view, start, end));\n};\n\nconst slice32 = (view: number[] | Uint32Array, start: number, end?: number) => {\n if (view.slice) {\n return view.slice(start, end);\n }\n\n return new Uint32Array(Array.prototype.slice.call(view, start, end));\n};\n\nexport const createTrieFromBase64 = (base64: string, _byteLength: number): Trie => {\n const buffer = decode(base64);\n const view32 = Array.isArray(buffer) ? polyUint32Array(buffer) : new Uint32Array(buffer);\n const view16 = Array.isArray(buffer) ? polyUint16Array(buffer) : new Uint16Array(buffer);\n const headerLength = 24;\n\n const index = slice16(view16, headerLength / 2, view32[4] / 2);\n const data =\n view32[5] === 2\n ? slice16(view16, (headerLength + view32[4]) / 2)\n : slice32(view32, Math.ceil((headerLength + view32[4]) / 4));\n\n return new Trie(view32[0], view32[1], view32[2], view32[3], index, data);\n};\n\nexport class Trie {\n initialValue: int;\n errorValue: int;\n highStart: int;\n highValueIndex: int;\n index: Uint16Array | number[];\n data: Uint32Array | Uint16Array | number[];\n\n constructor(\n initialValue: int,\n errorValue: int,\n highStart: int,\n highValueIndex: int,\n index: Uint16Array | number[],\n data: Uint32Array | Uint16Array | number[]\n ) {\n this.initialValue = initialValue;\n this.errorValue = errorValue;\n this.highStart = highStart;\n this.highValueIndex = highValueIndex;\n this.index = index;\n this.data = data;\n }\n\n /**\n * Get the value for a code point as stored in the Trie.\n *\n * @param codePoint the code point\n * @return the value\n */\n get(codePoint: number): number {\n let ix;\n if (codePoint >= 0) {\n if (codePoint < 0x0d800 || (codePoint > 0x0dbff && codePoint <= 0x0ffff)) {\n // Ordinary BMP code point, excluding leading surrogates.\n // BMP uses a single level lookup. BMP index starts at offset 0 in the Trie2 index.\n // 16 bit data is stored in the index array itself.\n ix = this.index[codePoint >> UTRIE2_SHIFT_2];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n\n if (codePoint <= 0xffff) {\n // Lead Surrogate Code Point. A Separate index section is stored for\n // lead surrogate code units and code points.\n // The main index has the code unit data.\n // For this function, we need the code point data.\n // Note: this expression could be refactored for slightly improved efficiency, but\n // surrogate code points will be so rare in practice that it's not worth it.\n ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET + ((codePoint - 0xd800) >> UTRIE2_SHIFT_2)];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n\n if (codePoint < this.highStart) {\n // Supplemental code point, use two-level lookup.\n ix = UTRIE2_INDEX_1_OFFSET - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH + (codePoint >> UTRIE2_SHIFT_1);\n ix = this.index[ix];\n ix += (codePoint >> UTRIE2_SHIFT_2) & UTRIE2_INDEX_2_MASK;\n ix = this.index[ix];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n if (codePoint <= 0x10ffff) {\n return this.data[this.highValueIndex];\n }\n }\n\n // Fall through. The code point is outside of the legal range of 0..0x10ffff.\n return this.errorValue;\n }\n}\n","export const base64 =\n 'KwAAAAAAAAAACA4AUD0AADAgAAACAAAAAAAIABAAGABAAEgAUABYAGAAaABgAGgAYgBqAF8AZwBgAGgAcQB5AHUAfQCFAI0AlQCdAKIAqgCyALoAYABoAGAAaABgAGgAwgDKAGAAaADGAM4A0wDbAOEA6QDxAPkAAQEJAQ8BFwF1AH0AHAEkASwBNAE6AUIBQQFJAVEBWQFhAWgBcAF4ATAAgAGGAY4BlQGXAZ8BpwGvAbUBvQHFAc0B0wHbAeMB6wHxAfkBAQIJAvEBEQIZAiECKQIxAjgCQAJGAk4CVgJeAmQCbAJ0AnwCgQKJApECmQKgAqgCsAK4ArwCxAIwAMwC0wLbAjAA4wLrAvMC+AIAAwcDDwMwABcDHQMlAy0DNQN1AD0DQQNJA0kDSQNRA1EDVwNZA1kDdQB1AGEDdQBpA20DdQN1AHsDdQCBA4kDkQN1AHUAmQOhA3UAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AKYDrgN1AHUAtgO+A8YDzgPWAxcD3gPjA+sD8wN1AHUA+wMDBAkEdQANBBUEHQQlBCoEFwMyBDgEYABABBcDSARQBFgEYARoBDAAcAQzAXgEgASIBJAEdQCXBHUAnwSnBK4EtgS6BMIEyAR1AHUAdQB1AHUAdQCVANAEYABgAGAAYABgAGAAYABgANgEYADcBOQEYADsBPQE/AQEBQwFFAUcBSQFLAU0BWQEPAVEBUsFUwVbBWAAYgVgAGoFcgV6BYIFigWRBWAAmQWfBaYFYABgAGAAYABgAKoFYACxBbAFuQW6BcEFwQXHBcEFwQXPBdMF2wXjBeoF8gX6BQIGCgYSBhoGIgYqBjIGOgZgAD4GRgZMBmAAUwZaBmAAYABgAGAAYABgAGAAYABgAGAAYABgAGIGYABpBnAGYABgAGAAYABgAGAAYABgAGAAYAB4Bn8GhQZgAGAAYAB1AHcDFQSLBmAAYABgAJMGdQA9A3UAmwajBqsGqwaVALMGuwbDBjAAywbSBtIG1QbSBtIG0gbSBtIG0gbdBuMG6wbzBvsGAwcLBxMHAwcbByMHJwcsBywHMQcsB9IGOAdAB0gHTgfSBkgHVgfSBtIG0gbSBtIG0gbSBtIG0gbSBiwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdgAGAALAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdbB2MHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB2kH0gZwB64EdQB1AHUAdQB1AHUAdQB1AHUHfQdgAIUHjQd1AHUAlQedB2AAYAClB6sHYACzB7YHvgfGB3UAzgfWBzMB3gfmB1EB7gf1B/0HlQENAQUIDQh1ABUIHQglCBcDLQg1CD0IRQhNCEEDUwh1AHUAdQBbCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIcAh3CHoIMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIgggwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAALAcsBywHLAcsBywHLAcsBywHLAcsB4oILAcsB44I0gaWCJ4Ipgh1AHUAqgiyCHUAdQB1AHUAdQB1AHUAdQB1AHUAtwh8AXUAvwh1AMUIyQjRCNkI4AjoCHUAdQB1AO4I9gj+CAYJDgkTCS0HGwkjCYIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiAAIAAAAFAAYABgAGIAXwBgAHEAdQBFAJUAogCyAKAAYABgAEIA4ABGANMA4QDxAMEBDwE1AFwBLAE6AQEBUQF4QkhCmEKoQrhCgAHIQsAB0MLAAcABwAHAAeDC6ABoAHDCwMMAAcABwAHAAdDDGMMAAcAB6MM4wwjDWMNow3jDaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAEjDqABWw6bDqABpg6gAaABoAHcDvwOPA+gAaABfA/8DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DpcPAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcAB9cPKwkyCToJMAB1AHUAdQBCCUoJTQl1AFUJXAljCWcJawkwADAAMAAwAHMJdQB2CX4JdQCECYoJjgmWCXUAngkwAGAAYABxAHUApgn3A64JtAl1ALkJdQDACTAAMAAwADAAdQB1AHUAdQB1AHUAdQB1AHUAowYNBMUIMAAwADAAMADICcsJ0wnZCRUE4QkwAOkJ8An4CTAAMAB1AAAKvwh1AAgKDwoXCh8KdQAwACcKLgp1ADYKqAmICT4KRgowADAAdQB1AE4KMAB1AFYKdQBeCnUAZQowADAAMAAwADAAMAAwADAAMAAVBHUAbQowADAAdQC5CXUKMAAwAHwBxAijBogEMgF9CoQKiASMCpQKmgqIBKIKqgquCogEDQG2Cr4KxgrLCjAAMADTCtsKCgHjCusK8Qr5CgELMAAwADAAMAB1AIsECQsRC3UANAEZCzAAMAAwADAAMAB1ACELKQswAHUANAExCzkLdQBBC0kLMABRC1kLMAAwADAAMAAwADAAdQBhCzAAMAAwAGAAYABpC3ELdwt/CzAAMACHC4sLkwubC58Lpwt1AK4Ltgt1APsDMAAwADAAMAAwADAAMAAwAL4LwwvLC9IL1wvdCzAAMADlC+kL8Qv5C/8LSQswADAAMAAwADAAMAAwADAAMAAHDDAAMAAwADAAMAAODBYMHgx1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1ACYMMAAwADAAdQB1AHUALgx1AHUAdQB1AHUAdQA2DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AD4MdQBGDHUAdQB1AHUAdQB1AEkMdQB1AHUAdQB1AFAMMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQBYDHUAdQB1AF8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUA+wMVBGcMMAAwAHwBbwx1AHcMfwyHDI8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAYABgAJcMMAAwADAAdQB1AJ8MlQClDDAAMACtDCwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB7UMLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AA0EMAC9DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAsBywHLAcsBywHLAcsBywHLQcwAMEMyAwsBywHLAcsBywHLAcsBywHLAcsBywHzAwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1ANQM2QzhDDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMABgAGAAYABgAGAAYABgAOkMYADxDGAA+AwADQYNYABhCWAAYAAODTAAMAAwADAAFg1gAGAAHg37AzAAMAAwADAAYABgACYNYAAsDTQNPA1gAEMNPg1LDWAAYABgAGAAYABgAGAAYABgAGAAUg1aDYsGVglhDV0NcQBnDW0NdQ15DWAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAlQCBDZUAiA2PDZcNMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAnw2nDTAAMAAwADAAMAAwAHUArw23DTAAMAAwADAAMAAwADAAMAAwADAAMAB1AL8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQDHDTAAYABgAM8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA1w11ANwNMAAwAD0B5A0wADAAMAAwADAAMADsDfQN/A0EDgwOFA4wABsOMAAwADAAMAAwADAAMAAwANIG0gbSBtIG0gbSBtIG0gYjDigOwQUuDsEFMw7SBjoO0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGQg5KDlIOVg7SBtIGXg5lDm0OdQ7SBtIGfQ6EDooOjQ6UDtIGmg6hDtIG0gaoDqwO0ga0DrwO0gZgAGAAYADEDmAAYAAkBtIGzA5gANIOYADaDokO0gbSBt8O5w7SBu8O0gb1DvwO0gZgAGAAxA7SBtIG0gbSBtIGYABgAGAAYAAED2AAsAUMD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHJA8sBywHLAcsBywHLAccDywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywPLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAc0D9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHPA/SBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gYUD0QPlQCVAJUAMAAwADAAMACVAJUAlQCVAJUAlQCVAEwPMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA//8EAAQABAAEAAQABAAEAAQABAANAAMAAQABAAIABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQACgATABcAHgAbABoAHgAXABYAEgAeABsAGAAPABgAHABLAEsASwBLAEsASwBLAEsASwBLABgAGAAeAB4AHgATAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYAGwASAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWAA0AEQAeAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAFAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJABYAGgAbABsAGwAeAB0AHQAeAE8AFwAeAA0AHgAeABoAGwBPAE8ADgBQAB0AHQAdAE8ATwAXAE8ATwBPABYAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAFAATwBAAE8ATwBPAEAATwBQAFAATwBQAB4AHgAeAB4AHgAeAB0AHQAdAB0AHgAdAB4ADgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgBQAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkACQAJAAkACQAJAAkABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAFAAHgAeAB4AKwArAFAAUABQAFAAGABQACsAKwArACsAHgAeAFAAHgBQAFAAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUAAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAYAA0AKwArAB4AHgAbACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAB4ABAAEAB4ABAAEABMABAArACsAKwArACsAKwArACsAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAKwArACsAKwBWAFYAVgBWAB4AHgArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AGgAaABoAGAAYAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQAEwAEACsAEwATAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABLAEsASwBLAEsASwBLAEsASwBLABoAGQAZAB4AUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABMAUAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABABQAFAABAAEAB4ABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUAAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAFAABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQAUABQAB4AHgAYABMAUAArACsABAAbABsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAFAABAAEAAQABAAEAFAABAAEAAQAUAAEAAQABAAEAAQAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArACsAHgArAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAUAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEAA0ADQBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUAArACsAKwBQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABABQACsAKwArACsAKwArACsAKwAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUAAaABoAUABQAFAAUABQAEwAHgAbAFAAHgAEACsAKwAEAAQABAArAFAAUABQAFAAUABQACsAKwArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQACsAUABQACsAKwAEACsABAAEAAQABAAEACsAKwArACsABAAEACsAKwAEAAQABAArACsAKwAEACsAKwArACsAKwArACsAUABQAFAAUAArAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLAAQABABQAFAAUAAEAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAArACsAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AGwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAKwArACsAKwArAAQABAAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAAQAUAArAFAAUABQAFAAUABQACsAKwArAFAAUABQACsAUABQAFAAUAArACsAKwBQAFAAKwBQACsAUABQACsAKwArAFAAUAArACsAKwBQAFAAUAArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAAQABAAEAAQABAArACsAKwAEAAQABAArAAQABAAEAAQAKwArAFAAKwArACsAKwArACsABAArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAHgAeAB4AHgAeAB4AGwAeACsAKwArACsAKwAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAUABQAFAAKwArACsAKwArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwAOAFAAUABQAFAAUABQAFAAHgBQAAQABAAEAA4AUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAKwArAAQAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAKwArACsAKwArACsAUAArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABABQAB4AKwArACsAKwBQAFAAUAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQABoAUABQAFAAUABQAFAAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQACsAUAArACsAUABQAFAAUABQAFAAUAArACsAKwAEACsAKwArACsABAAEAAQABAAEAAQAKwAEACsABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgAqACsAKwArACsAGwBcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAeAEsASwBLAEsASwBLAEsASwBLAEsADQANACsAKwArACsAKwBcAFwAKwBcACsAXABcAFwAXABcACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAXAArAFwAXABcAFwAXABcAFwAXABcAFwAKgBcAFwAKgAqACoAKgAqACoAKgAqACoAXAArACsAXABcAFwAXABcACsAXAArACoAKgAqACoAKgAqACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwBcAFwAXABcAFAADgAOAA4ADgAeAA4ADgAJAA4ADgANAAkAEwATABMAEwATAAkAHgATAB4AHgAeAAQABAAeAB4AHgAeAB4AHgBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQAFAADQAEAB4ABAAeAAQAFgARABYAEQAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAAQABAAEAAQADQAEAAQAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAA0ADQAeAB4AHgAeAB4AHgAEAB4AHgAeAB4AHgAeACsAHgAeAA4ADgANAA4AHgAeAB4AHgAeAAkACQArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgBcAEsASwBLAEsASwBLAEsASwBLAEsADQANAB4AHgAeAB4AXABcAFwAXABcAFwAKgAqACoAKgBcAFwAXABcACoAKgAqAFwAKgAqACoAXABcACoAKgAqACoAKgAqACoAXABcAFwAKgAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqAFwAKgBLAEsASwBLAEsASwBLAEsASwBLACoAKgAqACoAKgAqAFAAUABQAFAAUABQACsAUAArACsAKwArACsAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAKwBQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsABAAEAAQAHgANAB4AHgAeAB4AHgAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUAArACsADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWABEAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQANAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAANAA0AKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUAArAAQABAArACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqAA0ADQAVAFwADQAeAA0AGwBcACoAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwAeAB4AEwATAA0ADQAOAB4AEwATAB4ABAAEAAQACQArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAHgArACsAKwATABMASwBLAEsASwBLAEsASwBLAEsASwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAXABcAFwAXABcACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAXAArACsAKwAqACoAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsAHgAeAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKwAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKwArAAQASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACoAKgAqACoAKgAqACoAXAAqACoAKgAqACoAKgArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABABQAFAAUABQAFAAUABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwANAA0AHgANAA0ADQANAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwAeAB4AHgAeAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArAA0ADQANAA0ADQBLAEsASwBLAEsASwBLAEsASwBLACsAKwArAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUAAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAAQAUABQAFAAUABQAFAABABQAFAABAAEAAQAUAArACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQACsAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQACsAKwAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQACsAHgAeAB4AHgAeAB4AHgAOAB4AKwANAA0ADQANAA0ADQANAAkADQANAA0ACAAEAAsABAAEAA0ACQANAA0ADAAdAB0AHgAXABcAFgAXABcAFwAWABcAHQAdAB4AHgAUABQAFAANAAEAAQAEAAQABAAEAAQACQAaABoAGgAaABoAGgAaABoAHgAXABcAHQAVABUAHgAeAB4AHgAeAB4AGAAWABEAFQAVABUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ADQAeAA0ADQANAA0AHgANAA0ADQAHAB4AHgAeAB4AKwAEAAQABAAEAAQABAAEAAQABAAEAFAAUAArACsATwBQAFAAUABQAFAAHgAeAB4AFgARAE8AUABPAE8ATwBPAFAAUABQAFAAUAAeAB4AHgAWABEAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArABsAGwAbABsAGwAbABsAGgAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGgAbABsAGwAbABoAGwAbABoAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAHgAeAFAAGgAeAB0AHgBQAB4AGgAeAB4AHgAeAB4AHgAeAB4AHgBPAB4AUAAbAB4AHgBQAFAAUABQAFAAHgAeAB4AHQAdAB4AUAAeAFAAHgBQAB4AUABPAFAAUAAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgBQAFAAUABQAE8ATwBQAFAAUABQAFAATwBQAFAATwBQAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAUABQAFAATwBPAE8ATwBPAE8ATwBPAE8ATwBQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABPAB4AHgArACsAKwArAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHQAdAB4AHgAeAB0AHQAeAB4AHQAeAB4AHgAdAB4AHQAbABsAHgAdAB4AHgAeAB4AHQAeAB4AHQAdAB0AHQAeAB4AHQAeAB0AHgAdAB0AHQAdAB0AHQAeAB0AHgAeAB4AHgAeAB0AHQAdAB0AHgAeAB4AHgAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB0AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAdAB0AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAWABEAHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AHQAdAB0AHgAeAB0AHgAeAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlAB4AHQAdAB4AHgAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AJQAlAB0AHQAlAB4AJQAlACUAIAAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAdAB0AHQAeAB0AJQAdAB0AHgAdAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAdAB0AHQAdACUAHgAlACUAJQAdACUAJQAdAB0AHQAlACUAHQAdACUAHQAdACUAJQAlAB4AHQAeAB4AHgAeAB0AHQAlAB0AHQAdAB0AHQAdACUAJQAlACUAJQAdACUAJQAgACUAHQAdACUAJQAlACUAJQAlACUAJQAeAB4AHgAlACUAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AFwAXABcAFwAXABcAHgATABMAJQAeAB4AHgAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARABYAEQAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAeAB4AKwArACsAKwArABMADQANAA0AUAATAA0AUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUAANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAA0ADQANAA0ADQANAA0ADQAeAA0AFgANAB4AHgAXABcAHgAeABcAFwAWABEAFgARABYAEQAWABEADQANAA0ADQATAFAADQANAB4ADQANAB4AHgAeAB4AHgAMAAwADQANAA0AHgANAA0AFgANAA0ADQANAA0ADQANAA0AHgANAB4ADQANAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArAA0AEQARACUAJQBHAFcAVwAWABEAFgARABYAEQAWABEAFgARACUAJQAWABEAFgARABYAEQAWABEAFQAWABEAEQAlAFcAVwBXAFcAVwBXAFcAVwBXAAQABAAEAAQABAAEACUAVwBXAFcAVwA2ACUAJQBXAFcAVwBHAEcAJQAlACUAKwBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBRAFcAUQBXAFEAVwBXAFcAVwBXAFcAUQBXAFcAVwBXAFcAVwBRAFEAKwArAAQABAAVABUARwBHAFcAFQBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBRAFcAVwBXAFcAVwBXAFEAUQBXAFcAVwBXABUAUQBHAEcAVwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwAlACUAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACsAKwArACsAKwArACsAKwArACsAKwArAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBPAE8ATwBPAE8ATwBPAE8AJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADQATAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQAHgBQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAeAA0ADQANAA0ADQArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAAQAUABQAFAABABQAFAAUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAeAB4AHgAeAAQAKwArACsAUABQAFAAUABQAFAAHgAeABoAHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADgAOABMAEwArACsAKwArACsAKwArACsABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUAAeAB4AHgBQAA4AUABQAAQAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAB4AWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYACsAKwArAAQAHgAeAB4AHgAeAB4ADQANAA0AHgAeAB4AHgArAFAASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArAB4AHgBcAFwAXABcAFwAKgBcAFwAXABcAFwAXABcAFwAXABcAEsASwBLAEsASwBLAEsASwBLAEsAXABcAFwAXABcACsAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAFAAUABQAAQAUABQAFAAUABQAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAHgANAA0ADQBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAKgAqACoAXABcACoAKgBcAFwAXABcAFwAKgAqAFwAKgBcACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAA0ADQBQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQADQAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAVABVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBUAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVACsAKwArACsAKwArACsAKwArACsAKwArAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAKwArACsAKwBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAKwArACsAKwAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArACsAKwArAFYABABWAFYAVgBWAFYAVgBWAFYAVgBWAB4AVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgArAFYAVgBWAFYAVgArAFYAKwBWAFYAKwBWAFYAKwBWAFYAVgBWAFYAVgBWAFYAVgBWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAEQAWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAaAB4AKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAGAARABEAGAAYABMAEwAWABEAFAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACUAJQAlACUAJQAWABEAFgARABYAEQAWABEAFgARABYAEQAlACUAFgARACUAJQAlACUAJQAlACUAEQAlABEAKwAVABUAEwATACUAFgARABYAEQAWABEAJQAlACUAJQAlACUAJQAlACsAJQAbABoAJQArACsAKwArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAcAKwATACUAJQAbABoAJQAlABYAEQAlACUAEQAlABEAJQBXAFcAVwBXAFcAVwBXAFcAVwBXABUAFQAlACUAJQATACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXABYAJQARACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAWACUAEQAlABYAEQARABYAEQARABUAVwBRAFEAUQBRAFEAUQBRAFEAUQBRAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcARwArACsAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXACsAKwBXAFcAVwBXAFcAVwArACsAVwBXAFcAKwArACsAGgAbACUAJQAlABsAGwArAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAAQAB0AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsADQANAA0AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAA0AUABQAFAAUAArACsAKwArAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwBQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAUABQAFAAUABQAAQABAAEACsABAAEACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAKwBQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAA0ADQANAA0ADQANAA0ADQAeACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAArACsAKwArAFAAUABQAFAAUAANAA0ADQANAA0ADQAUACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsADQANAA0ADQANAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArAAQABAANACsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAB4AHgAeAB4AHgArACsAKwArACsAKwAEAAQABAAEAAQABAAEAA0ADQAeAB4AHgAeAB4AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsASwBLAEsASwBLAEsASwBLAEsASwANAA0ADQANAFAABAAEAFAAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAeAA4AUAArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAADQANAB4ADQAEAAQABAAEAB4ABAAEAEsASwBLAEsASwBLAEsASwBLAEsAUAAOAFAADQANAA0AKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAA0AHgANAA0AHgAEACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAA0AKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsABAAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAUAArACsAKwArACsAKwAEACsAKwArACsAKwBQAFAAUABQAFAABAAEACsAKwAEAAQABAAEAAQABAAEACsAKwArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABABQAFAAUABQAA0ADQANAA0AHgBLAEsASwBLAEsASwBLAEsASwBLAA0ADQArAB4ABABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUAAeAFAAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABAAEAAQADgANAA0AEwATAB4AHgAeAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAFAAUABQAFAABAAEACsAKwAEAA0ADQAeAFAAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKwArACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBcAFwADQANAA0AKgBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQAKwAEAAQAKwArAAQABAAEAAQAUAAEAFAABAAEAA0ADQANACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABABQAA4AUAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAOAB4ADQANAA0ADQAOAB4ABAArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAA0ADQANAFAADgAOAA4ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAFAADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAOABMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAArACsAKwAEACsABAAEACsABAAEAAQABAAEAAQABABQAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAaABoAGgAaAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABIAEgAQwBDAEMAUABQAFAAUABDAFAAUABQAEgAQwBIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABDAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAJAAkACQAJAAkACQAJABYAEQArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwANAA0AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAANACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQANAB4AHgAeAB4AHgAeAFAAUABQAFAADQAeACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAA0AHgAeACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAARwBHABUARwAJACsAKwArACsAKwArACsAKwArACsAKwAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUQBRAFEAKwArACsAKwArACsAKwArACsAKwArACsAKwBRAFEAUQBRACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAHgAEAAQADQAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQABAAEAAQABAAeAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQAHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAKwArAFAAKwArAFAAUAArACsAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUAArAFAAUABQAFAAUABQAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAHgAeAFAAUABQAFAAUAArAFAAKwArACsAUABQAFAAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeACsAKwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4ABAAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAHgAeAA0ADQANAA0AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArAAQABAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwBQAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArABsAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAB4AHgAeAB4ABAAEAAQABAAEAAQABABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArABYAFgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAGgBQAFAAUAAaAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUAArACsAKwArACsAKwBQACsAKwArACsAUAArAFAAKwBQACsAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUAArAFAAKwBQACsAUAArAFAAUAArAFAAKwArAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAKwBQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AJQAlACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeACUAJQAlAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAlACUAJQAlACUAHgAlACUAJQAlACUAIAAgACAAJQAlACAAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACEAIQAhACEAIQAlACUAIAAgACUAJQAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAIAAlACUAJQAlACAAIAAgACUAIAAgACAAJQAlACUAJQAlACUAJQAgACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAlAB4AJQAeACUAJQAlACUAJQAgACUAJQAlACUAHgAlAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACAAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABcAFwAXABUAFQAVAB4AHgAeAB4AJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAgACUAJQAgACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAIAAgACUAJQAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACAAIAAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACAAIAAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAA==';\nexport const byteLength = 39664;\n","'use strict';\n\nimport {createTrieFromBase64} from 'utrie';\nimport {base64, byteLength} from './linebreak-trie';\nimport {fromCodePoint, toCodePoints} from './Util';\n\nexport const LETTER_NUMBER_MODIFIER = 50;\n\n// Non-tailorable Line Breaking Classes\nconst BK = 1; // Cause a line break (after)\nconst CR = 2; // Cause a line break (after), except between CR and LF\nconst LF = 3; // Cause a line break (after)\nconst CM = 4; // Prohibit a line break between the character and the preceding character\nconst NL = 5; // Cause a line break (after)\nconst SG = 6; // Do not occur in well-formed text\nconst WJ = 7; // Prohibit line breaks before and after\nconst ZW = 8; // Provide a break opportunity\nconst GL = 9; // Prohibit line breaks before and after\nconst SP = 10; // Enable indirect line breaks\nconst ZWJ = 11; // Prohibit line breaks within joiner sequences\n// Break Opportunities\nconst B2 = 12; // Provide a line break opportunity before and after the character\nconst BA = 13; // Generally provide a line break opportunity after the character\nconst BB = 14; // Generally provide a line break opportunity before the character\nconst HY = 15; // Provide a line break opportunity after the character, except in numeric context\nconst CB = 16; // Provide a line break opportunity contingent on additional information\n// Characters Prohibiting Certain Breaks\nconst CL = 17; // Prohibit line breaks before\nconst CP = 18; // Prohibit line breaks before\nconst EX = 19; // Prohibit line breaks before\nconst IN = 20; // Allow only indirect line breaks between pairs\nconst NS = 21; // Allow only indirect line breaks before\nconst OP = 22; // Prohibit line breaks after\nconst QU = 23; // Act like they are both opening and closing\n// Numeric Context\nconst IS = 24; // Prevent breaks after any and before numeric\nconst NU = 25; // Form numeric expressions for line breaking purposes\nconst PO = 26; // Do not break following a numeric expression\nconst PR = 27; // Do not break in front of a numeric expression\nconst SY = 28; // Prevent a break before; and allow a break after\n// Other Characters\nconst AI = 29; // Act like AL when the resolvedEAW is N; otherwise; act as ID\nconst AL = 30; // Are alphabetic characters or symbols that are used with alphabetic characters\nconst CJ = 31; // Treat as NS or ID for strict or normal breaking.\nconst EB = 32; // Do not break from following Emoji Modifier\nconst EM = 33; // Do not break from preceding Emoji Base\nconst H2 = 34; // Form Korean syllable blocks\nconst H3 = 35; // Form Korean syllable blocks\nconst HL = 36; // Do not break around a following hyphen; otherwise act as Alphabetic\nconst ID = 37; // Break before or after; except in some numeric context\nconst JL = 38; // Form Korean syllable blocks\nconst JV = 39; // Form Korean syllable blocks\nconst JT = 40; // Form Korean syllable blocks\nconst RI = 41; // Keep pairs together. For pairs; break before and after other classes\nconst SA = 42; // Provide a line break opportunity contingent on additional, language-specific context analysis\nconst XX = 43; // Have as yet unknown line breaking behavior or unassigned code positions\n\nconst ea_OP = [0x2329, 0xff08];\n\nexport const classes: {[key: string]: number} = {\n BK,\n CR,\n LF,\n CM,\n NL,\n SG,\n WJ,\n ZW,\n GL,\n SP,\n ZWJ,\n B2,\n BA,\n BB,\n HY,\n CB,\n CL,\n CP,\n EX,\n IN,\n NS,\n OP,\n QU,\n IS,\n NU,\n PO,\n PR,\n SY,\n AI,\n AL,\n CJ,\n EB,\n EM,\n H2,\n H3,\n HL,\n ID,\n JL,\n JV,\n JT,\n RI,\n SA,\n XX,\n};\n\nexport const BREAK_MANDATORY = '!';\nexport const BREAK_NOT_ALLOWED = '×';\nexport const BREAK_ALLOWED = '÷';\nexport const UnicodeTrie = createTrieFromBase64(base64, byteLength);\n\nconst ALPHABETICS = [AL, HL];\nconst HARD_LINE_BREAKS = [BK, CR, LF, NL];\nconst SPACE = [SP, ZW];\nconst PREFIX_POSTFIX = [PR, PO];\nconst LINE_BREAKS = HARD_LINE_BREAKS.concat(SPACE);\nconst KOREAN_SYLLABLE_BLOCK = [JL, JV, JT, H2, H3];\nconst HYPHEN = [HY, BA];\n\nexport const codePointsToCharacterClasses = (\n codePoints: number[],\n lineBreak: string = 'strict'\n): [number[], number[], boolean[]] => {\n const types: number[] = [];\n const indices: number[] = [];\n const categories: boolean[] = [];\n codePoints.forEach((codePoint, index) => {\n let classType = UnicodeTrie.get(codePoint);\n if (classType > LETTER_NUMBER_MODIFIER) {\n categories.push(true);\n classType -= LETTER_NUMBER_MODIFIER;\n } else {\n categories.push(false);\n }\n\n if (['normal', 'auto', 'loose'].indexOf(lineBreak) !== -1) {\n // U+2010, – U+2013, 〜 U+301C, ゠ U+30A0\n if ([0x2010, 0x2013, 0x301c, 0x30a0].indexOf(codePoint) !== -1) {\n indices.push(index);\n return types.push(CB);\n }\n }\n\n if (classType === CM || classType === ZWJ) {\n // LB10 Treat any remaining combining mark or ZWJ as AL.\n if (index === 0) {\n indices.push(index);\n return types.push(AL);\n }\n\n // LB9 Do not break a combining character sequence; treat it as if it has the line breaking class of\n // the base character in all of the following rules. Treat ZWJ as if it were CM.\n const prev = types[index - 1];\n if (LINE_BREAKS.indexOf(prev) === -1) {\n indices.push(indices[index - 1]);\n return types.push(prev);\n }\n indices.push(index);\n return types.push(AL);\n }\n\n indices.push(index);\n\n if (classType === CJ) {\n return types.push(lineBreak === 'strict' ? NS : ID);\n }\n\n if (classType === SA) {\n return types.push(AL);\n }\n\n if (classType === AI) {\n return types.push(AL);\n }\n\n // For supplementary characters, a useful default is to treat characters in the range 10000..1FFFD as AL\n // and characters in the ranges 20000..2FFFD and 30000..3FFFD as ID, until the implementation can be revised\n // to take into account the actual line breaking properties for these characters.\n if (classType === XX) {\n if ((codePoint >= 0x20000 && codePoint <= 0x2fffd) || (codePoint >= 0x30000 && codePoint <= 0x3fffd)) {\n return types.push(ID);\n } else {\n return types.push(AL);\n }\n }\n\n types.push(classType);\n });\n\n return [indices, types, categories];\n};\n\nconst isAdjacentWithSpaceIgnored = (\n a: number[] | number,\n b: number,\n currentIndex: number,\n classTypes: number[]\n): boolean => {\n const current = classTypes[currentIndex];\n if (Array.isArray(a) ? a.indexOf(current) !== -1 : a === current) {\n let i = currentIndex;\n while (i <= classTypes.length) {\n i++;\n let next = classTypes[i];\n\n if (next === b) {\n return true;\n }\n\n if (next !== SP) {\n break;\n }\n }\n }\n\n if (current === SP) {\n let i = currentIndex;\n\n while (i > 0) {\n i--;\n const prev = classTypes[i];\n\n if (Array.isArray(a) ? a.indexOf(prev) !== -1 : a === prev) {\n let n = currentIndex;\n while (n <= classTypes.length) {\n n++;\n let next = classTypes[n];\n\n if (next === b) {\n return true;\n }\n\n if (next !== SP) {\n break;\n }\n }\n }\n\n if (prev !== SP) {\n break;\n }\n }\n }\n return false;\n};\n\nconst previousNonSpaceClassType = (currentIndex: number, classTypes: number[]): number => {\n let i = currentIndex;\n while (i >= 0) {\n let type = classTypes[i];\n if (type === SP) {\n i--;\n } else {\n return type;\n }\n }\n return 0;\n};\n\nexport type BREAK_OPPORTUNITIES = typeof BREAK_NOT_ALLOWED | typeof BREAK_ALLOWED | typeof BREAK_MANDATORY;\n\nconst _lineBreakAtIndex = (\n codePoints: number[],\n classTypes: number[],\n indicies: number[],\n index: number,\n forbiddenBreaks?: boolean[]\n): BREAK_OPPORTUNITIES => {\n if (indicies[index] === 0) {\n return BREAK_NOT_ALLOWED;\n }\n\n let currentIndex = index - 1;\n if (Array.isArray(forbiddenBreaks) && forbiddenBreaks[currentIndex] === true) {\n return BREAK_NOT_ALLOWED;\n }\n\n let beforeIndex = currentIndex - 1;\n let afterIndex = currentIndex + 1;\n let current = classTypes[currentIndex];\n\n // LB4 Always break after hard line breaks.\n // LB5 Treat CR followed by LF, as well as CR, LF, and NL as hard line breaks.\n let before = beforeIndex >= 0 ? classTypes[beforeIndex] : 0;\n let next = classTypes[afterIndex];\n\n if (current === CR && next === LF) {\n return BREAK_NOT_ALLOWED;\n }\n\n if (HARD_LINE_BREAKS.indexOf(current) !== -1) {\n return BREAK_MANDATORY;\n }\n\n // LB6 Do not break before hard line breaks.\n if (HARD_LINE_BREAKS.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB7 Do not break before spaces or zero width space.\n if (SPACE.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB8 Break before any character following a zero-width space, even if one or more spaces intervene.\n if (previousNonSpaceClassType(currentIndex, classTypes) === ZW) {\n return BREAK_ALLOWED;\n }\n\n // LB8a Do not break after a zero width joiner.\n if (UnicodeTrie.get(codePoints[currentIndex]) === ZWJ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // zwj emojis\n if ((current === EB || current === EM) && UnicodeTrie.get(codePoints[afterIndex]) === ZWJ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB11 Do not break before or after Word joiner and related characters.\n if (current === WJ || next === WJ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB12 Do not break after NBSP and related characters.\n if (current === GL) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB12a Do not break before NBSP and related characters, except after spaces and hyphens.\n if ([SP, BA, HY].indexOf(current) === -1 && next === GL) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB13 Do not break before ‘]’ or ‘!’ or ‘;’ or ‘/’, even after spaces.\n if ([CL, CP, EX, IS, SY].indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB14 Do not break after ‘[’, even after spaces.\n if (previousNonSpaceClassType(currentIndex, classTypes) === OP) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB15 Do not break within ‘”[’, even with intervening spaces.\n if (isAdjacentWithSpaceIgnored(QU, OP, currentIndex, classTypes)) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB16 Do not break between closing punctuation and a nonstarter (lb=NS), even with intervening spaces.\n if (isAdjacentWithSpaceIgnored([CL, CP], NS, currentIndex, classTypes)) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB17 Do not break within ‘——’, even with intervening spaces.\n if (isAdjacentWithSpaceIgnored(B2, B2, currentIndex, classTypes)) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB18 Break after spaces.\n if (current === SP) {\n return BREAK_ALLOWED;\n }\n\n // LB19 Do not break before or after quotation marks, such as ‘ ” ’.\n if (current === QU || next === QU) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB20 Break before and after unresolved CB.\n if (next === CB || current === CB) {\n return BREAK_ALLOWED;\n }\n\n // LB21 Do not break before hyphen-minus, other hyphens, fixed-width spaces, small kana, and other non-starters, or after acute accents.\n if ([BA, HY, NS].indexOf(next) !== -1 || current === BB) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB21a Don't break after Hebrew + Hyphen.\n if (before === HL && HYPHEN.indexOf(current) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB21b Don’t break between Solidus and Hebrew letters.\n if (current === SY && next === HL) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB22 Do not break before ellipsis.\n if (next === IN) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB23 Do not break between digits and letters.\n if ((ALPHABETICS.indexOf(next) !== -1 && current === NU) || (ALPHABETICS.indexOf(current) !== -1 && next === NU)) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB23a Do not break between numeric prefixes and ideographs, or between ideographs and numeric postfixes.\n if (\n (current === PR && [ID, EB, EM].indexOf(next) !== -1) ||\n ([ID, EB, EM].indexOf(current) !== -1 && next === PO)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB24 Do not break between numeric prefix/postfix and letters, or between letters and prefix/postfix.\n if (\n (ALPHABETICS.indexOf(current) !== -1 && PREFIX_POSTFIX.indexOf(next) !== -1) ||\n (PREFIX_POSTFIX.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB25 Do not break between the following pairs of classes relevant to numbers:\n if (\n // (PR | PO) × ( OP | HY )? NU\n ([PR, PO].indexOf(current) !== -1 &&\n (next === NU || ([OP, HY].indexOf(next) !== -1 && classTypes[afterIndex + 1] === NU))) ||\n // ( OP | HY ) × NU\n ([OP, HY].indexOf(current) !== -1 && next === NU) ||\n // NU ×\t(NU | SY | IS)\n (current === NU && [NU, SY, IS].indexOf(next) !== -1)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // NU (NU | SY | IS)* × (NU | SY | IS | CL | CP)\n if ([NU, SY, IS, CL, CP].indexOf(next) !== -1) {\n let prevIndex = currentIndex;\n while (prevIndex >= 0) {\n let type = classTypes[prevIndex];\n if (type === NU) {\n return BREAK_NOT_ALLOWED;\n } else if ([SY, IS].indexOf(type) !== -1) {\n prevIndex--;\n } else {\n break;\n }\n }\n }\n\n // NU (NU | SY | IS)* (CL | CP)? × (PO | PR))\n if ([PR, PO].indexOf(next) !== -1) {\n let prevIndex = [CL, CP].indexOf(current) !== -1 ? beforeIndex : currentIndex;\n while (prevIndex >= 0) {\n let type = classTypes[prevIndex];\n if (type === NU) {\n return BREAK_NOT_ALLOWED;\n } else if ([SY, IS].indexOf(type) !== -1) {\n prevIndex--;\n } else {\n break;\n }\n }\n }\n\n // LB26 Do not break a Korean syllable.\n if (\n (JL === current && [JL, JV, H2, H3].indexOf(next) !== -1) ||\n ([JV, H2].indexOf(current) !== -1 && [JV, JT].indexOf(next) !== -1) ||\n ([JT, H3].indexOf(current) !== -1 && next === JT)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB27 Treat a Korean Syllable Block the same as ID.\n if (\n (KOREAN_SYLLABLE_BLOCK.indexOf(current) !== -1 && [IN, PO].indexOf(next) !== -1) ||\n (KOREAN_SYLLABLE_BLOCK.indexOf(next) !== -1 && current === PR)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB28 Do not break between alphabetics (“at”).\n if (ALPHABETICS.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB29 Do not break between numeric punctuation and alphabetics (“e.g.”).\n if (current === IS && ALPHABETICS.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB30 Do not break between letters, numbers, or ordinary symbols and opening or closing parentheses.\n if (\n (ALPHABETICS.concat(NU).indexOf(current) !== -1 &&\n next === OP &&\n ea_OP.indexOf(codePoints[afterIndex]) === -1) ||\n (ALPHABETICS.concat(NU).indexOf(next) !== -1 && current === CP)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB30a Break between two regional indicator symbols if and only if there are an even number of regional\n // indicators preceding the position of the break.\n if (current === RI && next === RI) {\n let i = indicies[currentIndex];\n let count = 1;\n while (i > 0) {\n i--;\n if (classTypes[i] === RI) {\n count++;\n } else {\n break;\n }\n }\n if (count % 2 !== 0) {\n return BREAK_NOT_ALLOWED;\n }\n }\n\n // LB30b Do not break between an emoji base and an emoji modifier.\n if (current === EB && next === EM) {\n return BREAK_NOT_ALLOWED;\n }\n\n return BREAK_ALLOWED;\n};\n\nexport const lineBreakAtIndex = (codePoints: number[], index: number): BREAK_OPPORTUNITIES => {\n // LB2 Never break at the start of text.\n if (index === 0) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB3 Always break at the end of text.\n if (index >= codePoints.length) {\n return BREAK_MANDATORY;\n }\n\n const [indices, classTypes] = codePointsToCharacterClasses(codePoints);\n\n return _lineBreakAtIndex(codePoints, classTypes, indices, index);\n};\n\nexport type LINE_BREAK = 'auto' | 'normal' | 'strict';\nexport type WORD_BREAK = 'normal' | 'break-all' | 'break-word' | 'keep-all';\n\ninterface IOptions {\n lineBreak?: LINE_BREAK;\n wordBreak?: WORD_BREAK;\n}\n\nconst cssFormattedClasses = (codePoints: number[], options?: IOptions): [number[], number[], boolean[] | undefined] => {\n if (!options) {\n options = {lineBreak: 'normal', wordBreak: 'normal'};\n }\n let [indicies, classTypes, isLetterNumber] = codePointsToCharacterClasses(codePoints, options.lineBreak);\n\n if (options.wordBreak === 'break-all' || options.wordBreak === 'break-word') {\n classTypes = classTypes.map((type) => ([NU, AL, SA].indexOf(type) !== -1 ? ID : type));\n }\n\n const forbiddenBreakpoints =\n options.wordBreak === 'keep-all'\n ? isLetterNumber.map((letterNumber, i) => {\n return letterNumber && codePoints[i] >= 0x4e00 && codePoints[i] <= 0x9fff;\n })\n : undefined;\n\n return [indicies, classTypes, forbiddenBreakpoints];\n};\n\nexport const inlineBreakOpportunities = (str: string, options?: IOptions): string => {\n const codePoints = toCodePoints(str);\n let output = BREAK_NOT_ALLOWED;\n const [indicies, classTypes, forbiddenBreakpoints] = cssFormattedClasses(codePoints, options);\n\n codePoints.forEach((codePoint, i) => {\n output +=\n fromCodePoint(codePoint) +\n (i >= codePoints.length - 1\n ? BREAK_MANDATORY\n : _lineBreakAtIndex(codePoints, classTypes, indicies, i + 1, forbiddenBreakpoints));\n });\n\n return output;\n};\n\nclass Break {\n private readonly codePoints: number[];\n readonly required: boolean;\n readonly start: number;\n readonly end: number;\n\n constructor(codePoints: number[], lineBreak: string, start: number, end: number) {\n this.codePoints = codePoints;\n this.required = lineBreak === BREAK_MANDATORY;\n this.start = start;\n this.end = end;\n }\n\n slice(): string {\n return fromCodePoint(...this.codePoints.slice(this.start, this.end));\n }\n}\n\nexport type LineBreak =\n | {\n done: true;\n value: null;\n }\n | {\n done: false;\n value: Break;\n };\n\ninterface ILineBreakIterator {\n next: () => LineBreak;\n}\n\nexport const LineBreaker = (str: string, options?: IOptions): ILineBreakIterator => {\n const codePoints = toCodePoints(str);\n const [indicies, classTypes, forbiddenBreakpoints] = cssFormattedClasses(codePoints, options);\n const length = codePoints.length;\n let lastEnd = 0;\n let nextIndex = 0;\n\n return {\n next: () => {\n if (nextIndex >= length) {\n return {done: true, value: null};\n }\n let lineBreak = BREAK_NOT_ALLOWED;\n while (\n nextIndex < length &&\n (lineBreak = _lineBreakAtIndex(codePoints, classTypes, indicies, ++nextIndex, forbiddenBreakpoints)) ===\n BREAK_NOT_ALLOWED\n ) {}\n\n if (lineBreak !== BREAK_NOT_ALLOWED || nextIndex === length) {\n const value = new Break(codePoints, lineBreak, lastEnd, nextIndex);\n lastEnd = nextIndex;\n return {value, done: false};\n }\n\n return {done: true, value: null};\n },\n };\n};\n","// https://www.w3.org/TR/css-syntax-3\n\nimport {fromCodePoint, toCodePoints} from 'css-line-break';\n\nexport const enum TokenType {\n STRING_TOKEN,\n BAD_STRING_TOKEN,\n LEFT_PARENTHESIS_TOKEN,\n RIGHT_PARENTHESIS_TOKEN,\n COMMA_TOKEN,\n HASH_TOKEN,\n DELIM_TOKEN,\n AT_KEYWORD_TOKEN,\n PREFIX_MATCH_TOKEN,\n DASH_MATCH_TOKEN,\n INCLUDE_MATCH_TOKEN,\n LEFT_CURLY_BRACKET_TOKEN,\n RIGHT_CURLY_BRACKET_TOKEN,\n SUFFIX_MATCH_TOKEN,\n SUBSTRING_MATCH_TOKEN,\n DIMENSION_TOKEN,\n PERCENTAGE_TOKEN,\n NUMBER_TOKEN,\n FUNCTION,\n FUNCTION_TOKEN,\n IDENT_TOKEN,\n COLUMN_TOKEN,\n URL_TOKEN,\n BAD_URL_TOKEN,\n CDC_TOKEN,\n CDO_TOKEN,\n COLON_TOKEN,\n SEMICOLON_TOKEN,\n LEFT_SQUARE_BRACKET_TOKEN,\n RIGHT_SQUARE_BRACKET_TOKEN,\n UNICODE_RANGE_TOKEN,\n WHITESPACE_TOKEN,\n EOF_TOKEN\n}\n\ninterface IToken {\n type: TokenType;\n}\n\nexport interface Token extends IToken {\n type:\n | TokenType.BAD_URL_TOKEN\n | TokenType.BAD_STRING_TOKEN\n | TokenType.LEFT_PARENTHESIS_TOKEN\n | TokenType.RIGHT_PARENTHESIS_TOKEN\n | TokenType.COMMA_TOKEN\n | TokenType.SUBSTRING_MATCH_TOKEN\n | TokenType.PREFIX_MATCH_TOKEN\n | TokenType.SUFFIX_MATCH_TOKEN\n | TokenType.COLON_TOKEN\n | TokenType.SEMICOLON_TOKEN\n | TokenType.LEFT_SQUARE_BRACKET_TOKEN\n | TokenType.RIGHT_SQUARE_BRACKET_TOKEN\n | TokenType.LEFT_CURLY_BRACKET_TOKEN\n | TokenType.RIGHT_CURLY_BRACKET_TOKEN\n | TokenType.DASH_MATCH_TOKEN\n | TokenType.INCLUDE_MATCH_TOKEN\n | TokenType.COLUMN_TOKEN\n | TokenType.WHITESPACE_TOKEN\n | TokenType.CDC_TOKEN\n | TokenType.CDO_TOKEN\n | TokenType.EOF_TOKEN;\n}\n\nexport interface StringValueToken extends IToken {\n type:\n | TokenType.STRING_TOKEN\n | TokenType.DELIM_TOKEN\n | TokenType.FUNCTION_TOKEN\n | TokenType.IDENT_TOKEN\n | TokenType.URL_TOKEN\n | TokenType.AT_KEYWORD_TOKEN;\n value: string;\n}\n\nexport interface HashToken extends IToken {\n type: TokenType.HASH_TOKEN;\n flags: number;\n value: string;\n}\n\nexport interface NumberValueToken extends IToken {\n type: TokenType.PERCENTAGE_TOKEN | TokenType.NUMBER_TOKEN;\n flags: number;\n number: number;\n}\n\nexport interface DimensionToken extends IToken {\n type: TokenType.DIMENSION_TOKEN;\n flags: number;\n unit: string;\n number: number;\n}\n\nexport interface UnicodeRangeToken extends IToken {\n type: TokenType.UNICODE_RANGE_TOKEN;\n start: number;\n end: number;\n}\n\nexport type CSSToken = Token | StringValueToken | NumberValueToken | DimensionToken | UnicodeRangeToken | HashToken;\n\nexport const FLAG_UNRESTRICTED = 1 << 0;\nexport const FLAG_ID = 1 << 1;\nexport const FLAG_INTEGER = 1 << 2;\nexport const FLAG_NUMBER = 1 << 3;\n\nconst LINE_FEED = 0x000a;\nconst SOLIDUS = 0x002f;\nconst REVERSE_SOLIDUS = 0x005c;\nconst CHARACTER_TABULATION = 0x0009;\nconst SPACE = 0x0020;\nconst QUOTATION_MARK = 0x0022;\nconst EQUALS_SIGN = 0x003d;\nconst NUMBER_SIGN = 0x0023;\nconst DOLLAR_SIGN = 0x0024;\nconst PERCENTAGE_SIGN = 0x0025;\nconst APOSTROPHE = 0x0027;\nconst LEFT_PARENTHESIS = 0x0028;\nconst RIGHT_PARENTHESIS = 0x0029;\nconst LOW_LINE = 0x005f;\nconst HYPHEN_MINUS = 0x002d;\nconst EXCLAMATION_MARK = 0x0021;\nconst LESS_THAN_SIGN = 0x003c;\nconst GREATER_THAN_SIGN = 0x003e;\nconst COMMERCIAL_AT = 0x0040;\nconst LEFT_SQUARE_BRACKET = 0x005b;\nconst RIGHT_SQUARE_BRACKET = 0x005d;\nconst CIRCUMFLEX_ACCENT = 0x003d;\nconst LEFT_CURLY_BRACKET = 0x007b;\nconst QUESTION_MARK = 0x003f;\nconst RIGHT_CURLY_BRACKET = 0x007d;\nconst VERTICAL_LINE = 0x007c;\nconst TILDE = 0x007e;\nconst CONTROL = 0x0080;\nconst REPLACEMENT_CHARACTER = 0xfffd;\nconst ASTERISK = 0x002a;\nconst PLUS_SIGN = 0x002b;\nconst COMMA = 0x002c;\nconst COLON = 0x003a;\nconst SEMICOLON = 0x003b;\nconst FULL_STOP = 0x002e;\nconst NULL = 0x0000;\nconst BACKSPACE = 0x0008;\nconst LINE_TABULATION = 0x000b;\nconst SHIFT_OUT = 0x000e;\nconst INFORMATION_SEPARATOR_ONE = 0x001f;\nconst DELETE = 0x007f;\nconst EOF = -1;\nconst ZERO = 0x0030;\nconst a = 0x0061;\nconst e = 0x0065;\nconst f = 0x0066;\nconst u = 0x0075;\nconst z = 0x007a;\nconst A = 0x0041;\nconst E = 0x0045;\nconst F = 0x0046;\nconst U = 0x0055;\nconst Z = 0x005a;\n\nconst isDigit = (codePoint: number) => codePoint >= ZERO && codePoint <= 0x0039;\nconst isSurrogateCodePoint = (codePoint: number) => codePoint >= 0xd800 && codePoint <= 0xdfff;\nconst isHex = (codePoint: number) =>\n isDigit(codePoint) || (codePoint >= A && codePoint <= F) || (codePoint >= a && codePoint <= f);\nconst isLowerCaseLetter = (codePoint: number) => codePoint >= a && codePoint <= z;\nconst isUpperCaseLetter = (codePoint: number) => codePoint >= A && codePoint <= Z;\nconst isLetter = (codePoint: number) => isLowerCaseLetter(codePoint) || isUpperCaseLetter(codePoint);\nconst isNonASCIICodePoint = (codePoint: number) => codePoint >= CONTROL;\nconst isWhiteSpace = (codePoint: number): boolean =>\n codePoint === LINE_FEED || codePoint === CHARACTER_TABULATION || codePoint === SPACE;\nconst isNameStartCodePoint = (codePoint: number): boolean =>\n isLetter(codePoint) || isNonASCIICodePoint(codePoint) || codePoint === LOW_LINE;\nconst isNameCodePoint = (codePoint: number): boolean =>\n isNameStartCodePoint(codePoint) || isDigit(codePoint) || codePoint === HYPHEN_MINUS;\nconst isNonPrintableCodePoint = (codePoint: number): boolean => {\n return (\n (codePoint >= NULL && codePoint <= BACKSPACE) ||\n codePoint === LINE_TABULATION ||\n (codePoint >= SHIFT_OUT && codePoint <= INFORMATION_SEPARATOR_ONE) ||\n codePoint === DELETE\n );\n};\nconst isValidEscape = (c1: number, c2: number): boolean => {\n if (c1 !== REVERSE_SOLIDUS) {\n return false;\n }\n\n return c2 !== LINE_FEED;\n};\nconst isIdentifierStart = (c1: number, c2: number, c3: number): boolean => {\n if (c1 === HYPHEN_MINUS) {\n return isNameStartCodePoint(c2) || isValidEscape(c2, c3);\n } else if (isNameStartCodePoint(c1)) {\n return true;\n } else if (c1 === REVERSE_SOLIDUS && isValidEscape(c1, c2)) {\n return true;\n }\n return false;\n};\n\nconst isNumberStart = (c1: number, c2: number, c3: number): boolean => {\n if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {\n if (isDigit(c2)) {\n return true;\n }\n\n return c2 === FULL_STOP && isDigit(c3);\n }\n\n if (c1 === FULL_STOP) {\n return isDigit(c2);\n }\n\n return isDigit(c1);\n};\n\nconst stringToNumber = (codePoints: number[]): number => {\n let c = 0;\n let sign = 1;\n if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {\n if (codePoints[c] === HYPHEN_MINUS) {\n sign = -1;\n }\n c++;\n }\n\n const integers = [];\n\n while (isDigit(codePoints[c])) {\n integers.push(codePoints[c++]);\n }\n\n const int = integers.length ? parseInt(fromCodePoint(...integers), 10) : 0;\n\n if (codePoints[c] === FULL_STOP) {\n c++;\n }\n\n const fraction = [];\n while (isDigit(codePoints[c])) {\n fraction.push(codePoints[c++]);\n }\n\n const fracd = fraction.length;\n const frac = fracd ? parseInt(fromCodePoint(...fraction), 10) : 0;\n\n if (codePoints[c] === E || codePoints[c] === e) {\n c++;\n }\n\n let expsign = 1;\n\n if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {\n if (codePoints[c] === HYPHEN_MINUS) {\n expsign = -1;\n }\n c++;\n }\n\n const exponent = [];\n\n while (isDigit(codePoints[c])) {\n exponent.push(codePoints[c++]);\n }\n\n const exp = exponent.length ? parseInt(fromCodePoint(...exponent), 10) : 0;\n\n return sign * (int + frac * Math.pow(10, -fracd)) * Math.pow(10, expsign * exp);\n};\n\nconst LEFT_PARENTHESIS_TOKEN: Token = {\n type: TokenType.LEFT_PARENTHESIS_TOKEN\n};\nconst RIGHT_PARENTHESIS_TOKEN: Token = {\n type: TokenType.RIGHT_PARENTHESIS_TOKEN\n};\nconst COMMA_TOKEN: Token = {type: TokenType.COMMA_TOKEN};\nconst SUFFIX_MATCH_TOKEN: Token = {type: TokenType.SUFFIX_MATCH_TOKEN};\nconst PREFIX_MATCH_TOKEN: Token = {type: TokenType.PREFIX_MATCH_TOKEN};\nconst COLUMN_TOKEN: Token = {type: TokenType.COLUMN_TOKEN};\nconst DASH_MATCH_TOKEN: Token = {type: TokenType.DASH_MATCH_TOKEN};\nconst INCLUDE_MATCH_TOKEN: Token = {type: TokenType.INCLUDE_MATCH_TOKEN};\nconst LEFT_CURLY_BRACKET_TOKEN: Token = {\n type: TokenType.LEFT_CURLY_BRACKET_TOKEN\n};\nconst RIGHT_CURLY_BRACKET_TOKEN: Token = {\n type: TokenType.RIGHT_CURLY_BRACKET_TOKEN\n};\nconst SUBSTRING_MATCH_TOKEN: Token = {type: TokenType.SUBSTRING_MATCH_TOKEN};\nconst BAD_URL_TOKEN: Token = {type: TokenType.BAD_URL_TOKEN};\nconst BAD_STRING_TOKEN: Token = {type: TokenType.BAD_STRING_TOKEN};\nconst CDO_TOKEN: Token = {type: TokenType.CDO_TOKEN};\nconst CDC_TOKEN: Token = {type: TokenType.CDC_TOKEN};\nconst COLON_TOKEN: Token = {type: TokenType.COLON_TOKEN};\nconst SEMICOLON_TOKEN: Token = {type: TokenType.SEMICOLON_TOKEN};\nconst LEFT_SQUARE_BRACKET_TOKEN: Token = {\n type: TokenType.LEFT_SQUARE_BRACKET_TOKEN\n};\nconst RIGHT_SQUARE_BRACKET_TOKEN: Token = {\n type: TokenType.RIGHT_SQUARE_BRACKET_TOKEN\n};\nconst WHITESPACE_TOKEN: Token = {type: TokenType.WHITESPACE_TOKEN};\nexport const EOF_TOKEN: Token = {type: TokenType.EOF_TOKEN};\n\nexport class Tokenizer {\n private _value: number[];\n\n constructor() {\n this._value = [];\n }\n\n write(chunk: string): void {\n this._value = this._value.concat(toCodePoints(chunk));\n }\n\n read(): CSSToken[] {\n const tokens = [];\n let token = this.consumeToken();\n while (token !== EOF_TOKEN) {\n tokens.push(token);\n token = this.consumeToken();\n }\n return tokens;\n }\n\n private consumeToken(): CSSToken {\n const codePoint = this.consumeCodePoint();\n\n switch (codePoint) {\n case QUOTATION_MARK:\n return this.consumeStringToken(QUOTATION_MARK);\n case NUMBER_SIGN:\n const c1 = this.peekCodePoint(0);\n const c2 = this.peekCodePoint(1);\n const c3 = this.peekCodePoint(2);\n if (isNameCodePoint(c1) || isValidEscape(c2, c3)) {\n const flags = isIdentifierStart(c1, c2, c3) ? FLAG_ID : FLAG_UNRESTRICTED;\n const value = this.consumeName();\n\n return {type: TokenType.HASH_TOKEN, value, flags};\n }\n break;\n case DOLLAR_SIGN:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return SUFFIX_MATCH_TOKEN;\n }\n break;\n case APOSTROPHE:\n return this.consumeStringToken(APOSTROPHE);\n case LEFT_PARENTHESIS:\n return LEFT_PARENTHESIS_TOKEN;\n case RIGHT_PARENTHESIS:\n return RIGHT_PARENTHESIS_TOKEN;\n case ASTERISK:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return SUBSTRING_MATCH_TOKEN;\n }\n break;\n case PLUS_SIGN:\n if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n break;\n case COMMA:\n return COMMA_TOKEN;\n case HYPHEN_MINUS:\n const e1 = codePoint;\n const e2 = this.peekCodePoint(0);\n const e3 = this.peekCodePoint(1);\n\n if (isNumberStart(e1, e2, e3)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n\n if (isIdentifierStart(e1, e2, e3)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n }\n\n if (e2 === HYPHEN_MINUS && e3 === GREATER_THAN_SIGN) {\n this.consumeCodePoint();\n this.consumeCodePoint();\n return CDC_TOKEN;\n }\n break;\n\n case FULL_STOP:\n if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n break;\n case SOLIDUS:\n if (this.peekCodePoint(0) === ASTERISK) {\n this.consumeCodePoint();\n while (true) {\n let c = this.consumeCodePoint();\n if (c === ASTERISK) {\n c = this.consumeCodePoint();\n if (c === SOLIDUS) {\n return this.consumeToken();\n }\n }\n if (c === EOF) {\n return this.consumeToken();\n }\n }\n }\n break;\n case COLON:\n return COLON_TOKEN;\n case SEMICOLON:\n return SEMICOLON_TOKEN;\n case LESS_THAN_SIGN:\n if (\n this.peekCodePoint(0) === EXCLAMATION_MARK &&\n this.peekCodePoint(1) === HYPHEN_MINUS &&\n this.peekCodePoint(2) === HYPHEN_MINUS\n ) {\n this.consumeCodePoint();\n this.consumeCodePoint();\n return CDO_TOKEN;\n }\n break;\n case COMMERCIAL_AT:\n const a1 = this.peekCodePoint(0);\n const a2 = this.peekCodePoint(1);\n const a3 = this.peekCodePoint(2);\n if (isIdentifierStart(a1, a2, a3)) {\n const value = this.consumeName();\n return {type: TokenType.AT_KEYWORD_TOKEN, value};\n }\n break;\n case LEFT_SQUARE_BRACKET:\n return LEFT_SQUARE_BRACKET_TOKEN;\n case REVERSE_SOLIDUS:\n if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n }\n break;\n case RIGHT_SQUARE_BRACKET:\n return RIGHT_SQUARE_BRACKET_TOKEN;\n case CIRCUMFLEX_ACCENT:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return PREFIX_MATCH_TOKEN;\n }\n break;\n case LEFT_CURLY_BRACKET:\n return LEFT_CURLY_BRACKET_TOKEN;\n case RIGHT_CURLY_BRACKET:\n return RIGHT_CURLY_BRACKET_TOKEN;\n case u:\n case U:\n const u1 = this.peekCodePoint(0);\n const u2 = this.peekCodePoint(1);\n if (u1 === PLUS_SIGN && (isHex(u2) || u2 === QUESTION_MARK)) {\n this.consumeCodePoint();\n this.consumeUnicodeRangeToken();\n }\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n case VERTICAL_LINE:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return DASH_MATCH_TOKEN;\n }\n if (this.peekCodePoint(0) === VERTICAL_LINE) {\n this.consumeCodePoint();\n return COLUMN_TOKEN;\n }\n break;\n case TILDE:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return INCLUDE_MATCH_TOKEN;\n }\n break;\n case EOF:\n return EOF_TOKEN;\n }\n\n if (isWhiteSpace(codePoint)) {\n this.consumeWhiteSpace();\n return WHITESPACE_TOKEN;\n }\n\n if (isDigit(codePoint)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n\n if (isNameStartCodePoint(codePoint)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n }\n\n return {type: TokenType.DELIM_TOKEN, value: fromCodePoint(codePoint)};\n }\n\n private consumeCodePoint(): number {\n const value = this._value.shift();\n\n return typeof value === 'undefined' ? -1 : value;\n }\n\n private reconsumeCodePoint(codePoint: number) {\n this._value.unshift(codePoint);\n }\n\n private peekCodePoint(delta: number): number {\n if (delta >= this._value.length) {\n return -1;\n }\n\n return this._value[delta];\n }\n\n private consumeUnicodeRangeToken(): UnicodeRangeToken {\n const digits = [];\n let codePoint = this.consumeCodePoint();\n while (isHex(codePoint) && digits.length < 6) {\n digits.push(codePoint);\n codePoint = this.consumeCodePoint();\n }\n let questionMarks = false;\n while (codePoint === QUESTION_MARK && digits.length < 6) {\n digits.push(codePoint);\n codePoint = this.consumeCodePoint();\n questionMarks = true;\n }\n\n if (questionMarks) {\n const start = parseInt(\n fromCodePoint(...digits.map((digit) => (digit === QUESTION_MARK ? ZERO : digit))),\n 16\n );\n const end = parseInt(fromCodePoint(...digits.map((digit) => (digit === QUESTION_MARK ? F : digit))), 16);\n return {type: TokenType.UNICODE_RANGE_TOKEN, start, end};\n }\n\n const start = parseInt(fromCodePoint(...digits), 16);\n if (this.peekCodePoint(0) === HYPHEN_MINUS && isHex(this.peekCodePoint(1))) {\n this.consumeCodePoint();\n codePoint = this.consumeCodePoint();\n const endDigits = [];\n while (isHex(codePoint) && endDigits.length < 6) {\n endDigits.push(codePoint);\n codePoint = this.consumeCodePoint();\n }\n const end = parseInt(fromCodePoint(...endDigits), 16);\n\n return {type: TokenType.UNICODE_RANGE_TOKEN, start, end};\n } else {\n return {type: TokenType.UNICODE_RANGE_TOKEN, start, end: start};\n }\n }\n\n private consumeIdentLikeToken(): StringValueToken | Token {\n const value = this.consumeName();\n if (value.toLowerCase() === 'url' && this.peekCodePoint(0) === LEFT_PARENTHESIS) {\n this.consumeCodePoint();\n return this.consumeUrlToken();\n } else if (this.peekCodePoint(0) === LEFT_PARENTHESIS) {\n this.consumeCodePoint();\n return {type: TokenType.FUNCTION_TOKEN, value};\n }\n\n return {type: TokenType.IDENT_TOKEN, value};\n }\n\n private consumeUrlToken(): StringValueToken | Token {\n const value = [];\n this.consumeWhiteSpace();\n\n if (this.peekCodePoint(0) === EOF) {\n return {type: TokenType.URL_TOKEN, value: ''};\n }\n\n const next = this.peekCodePoint(0);\n if (next === APOSTROPHE || next === QUOTATION_MARK) {\n const stringToken = this.consumeStringToken(this.consumeCodePoint());\n if (stringToken.type === TokenType.STRING_TOKEN) {\n this.consumeWhiteSpace();\n\n if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {\n this.consumeCodePoint();\n return {type: TokenType.URL_TOKEN, value: stringToken.value};\n }\n }\n\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n }\n\n while (true) {\n const codePoint = this.consumeCodePoint();\n if (codePoint === EOF || codePoint === RIGHT_PARENTHESIS) {\n return {type: TokenType.URL_TOKEN, value: fromCodePoint(...value)};\n } else if (isWhiteSpace(codePoint)) {\n this.consumeWhiteSpace();\n if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {\n this.consumeCodePoint();\n return {type: TokenType.URL_TOKEN, value: fromCodePoint(...value)};\n }\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n } else if (\n codePoint === QUOTATION_MARK ||\n codePoint === APOSTROPHE ||\n codePoint === LEFT_PARENTHESIS ||\n isNonPrintableCodePoint(codePoint)\n ) {\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n } else if (codePoint === REVERSE_SOLIDUS) {\n if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n value.push(this.consumeEscapedCodePoint());\n } else {\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n }\n } else {\n value.push(codePoint);\n }\n }\n }\n\n private consumeWhiteSpace(): void {\n while (isWhiteSpace(this.peekCodePoint(0))) {\n this.consumeCodePoint();\n }\n }\n\n private consumeBadUrlRemnants(): void {\n while (true) {\n const codePoint = this.consumeCodePoint();\n if (codePoint === RIGHT_PARENTHESIS || codePoint === EOF) {\n return;\n }\n\n if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n this.consumeEscapedCodePoint();\n }\n }\n }\n\n private consumeStringSlice(count: number): string {\n const SLICE_STACK_SIZE = 50000;\n let value = '';\n while (count > 0) {\n const amount = Math.min(SLICE_STACK_SIZE, count);\n value += fromCodePoint(...this._value.splice(0, amount));\n count -= amount;\n }\n this._value.shift();\n\n return value;\n }\n\n private consumeStringToken(endingCodePoint: number): StringValueToken | Token {\n let value = '';\n let i = 0;\n\n do {\n const codePoint = this._value[i];\n if (codePoint === EOF || codePoint === undefined || codePoint === endingCodePoint) {\n value += this.consumeStringSlice(i);\n return {type: TokenType.STRING_TOKEN, value};\n }\n\n if (codePoint === LINE_FEED) {\n this._value.splice(0, i);\n return BAD_STRING_TOKEN;\n }\n\n if (codePoint === REVERSE_SOLIDUS) {\n const next = this._value[i + 1];\n if (next !== EOF && next !== undefined) {\n if (next === LINE_FEED) {\n value += this.consumeStringSlice(i);\n i = -1;\n this._value.shift();\n } else if (isValidEscape(codePoint, next)) {\n value += this.consumeStringSlice(i);\n value += fromCodePoint(this.consumeEscapedCodePoint());\n i = -1;\n }\n }\n }\n\n i++;\n } while (true);\n }\n\n private consumeNumber() {\n const repr = [];\n let type = FLAG_INTEGER;\n let c1 = this.peekCodePoint(0);\n if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {\n repr.push(this.consumeCodePoint());\n }\n\n while (isDigit(this.peekCodePoint(0))) {\n repr.push(this.consumeCodePoint());\n }\n c1 = this.peekCodePoint(0);\n let c2 = this.peekCodePoint(1);\n if (c1 === FULL_STOP && isDigit(c2)) {\n repr.push(this.consumeCodePoint(), this.consumeCodePoint());\n type = FLAG_NUMBER;\n while (isDigit(this.peekCodePoint(0))) {\n repr.push(this.consumeCodePoint());\n }\n }\n\n c1 = this.peekCodePoint(0);\n c2 = this.peekCodePoint(1);\n const c3 = this.peekCodePoint(2);\n if ((c1 === E || c1 === e) && (((c2 === PLUS_SIGN || c2 === HYPHEN_MINUS) && isDigit(c3)) || isDigit(c2))) {\n repr.push(this.consumeCodePoint(), this.consumeCodePoint());\n type = FLAG_NUMBER;\n while (isDigit(this.peekCodePoint(0))) {\n repr.push(this.consumeCodePoint());\n }\n }\n\n return [stringToNumber(repr), type];\n }\n\n private consumeNumericToken(): NumberValueToken | DimensionToken {\n const [number, flags] = this.consumeNumber();\n const c1 = this.peekCodePoint(0);\n const c2 = this.peekCodePoint(1);\n const c3 = this.peekCodePoint(2);\n\n if (isIdentifierStart(c1, c2, c3)) {\n const unit = this.consumeName();\n return {type: TokenType.DIMENSION_TOKEN, number, flags, unit};\n }\n\n if (c1 === PERCENTAGE_SIGN) {\n this.consumeCodePoint();\n return {type: TokenType.PERCENTAGE_TOKEN, number, flags};\n }\n\n return {type: TokenType.NUMBER_TOKEN, number, flags};\n }\n\n private consumeEscapedCodePoint(): number {\n const codePoint = this.consumeCodePoint();\n\n if (isHex(codePoint)) {\n let hex = fromCodePoint(codePoint);\n while (isHex(this.peekCodePoint(0)) && hex.length < 6) {\n hex += fromCodePoint(this.consumeCodePoint());\n }\n\n if (isWhiteSpace(this.peekCodePoint(0))) {\n this.consumeCodePoint();\n }\n\n const hexCodePoint = parseInt(hex, 16);\n\n if (hexCodePoint === 0 || isSurrogateCodePoint(hexCodePoint) || hexCodePoint > 0x10ffff) {\n return REPLACEMENT_CHARACTER;\n }\n\n return hexCodePoint;\n }\n\n if (codePoint === EOF) {\n return REPLACEMENT_CHARACTER;\n }\n\n return codePoint;\n }\n\n private consumeName(): string {\n let result = '';\n while (true) {\n const codePoint = this.consumeCodePoint();\n if (isNameCodePoint(codePoint)) {\n result += fromCodePoint(codePoint);\n } else if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n result += fromCodePoint(this.consumeEscapedCodePoint());\n } else {\n this.reconsumeCodePoint(codePoint);\n return result;\n }\n }\n }\n}\n","import {\n CSSToken,\n DimensionToken,\n EOF_TOKEN,\n NumberValueToken,\n StringValueToken,\n Tokenizer,\n TokenType\n} from './tokenizer';\n\nexport type CSSBlockType =\n | TokenType.LEFT_PARENTHESIS_TOKEN\n | TokenType.LEFT_SQUARE_BRACKET_TOKEN\n | TokenType.LEFT_CURLY_BRACKET_TOKEN;\n\nexport interface CSSBlock {\n type: CSSBlockType;\n values: CSSValue[];\n}\n\nexport interface CSSFunction {\n type: TokenType.FUNCTION;\n name: string;\n values: CSSValue[];\n}\n\nexport type CSSValue = CSSFunction | CSSToken | CSSBlock;\n\nexport class Parser {\n private _tokens: CSSToken[];\n\n constructor(tokens: CSSToken[]) {\n this._tokens = tokens;\n }\n\n static create(value: string): Parser {\n const tokenizer = new Tokenizer();\n tokenizer.write(value);\n return new Parser(tokenizer.read());\n }\n\n static parseValue(value: string): CSSValue {\n return Parser.create(value).parseComponentValue();\n }\n\n static parseValues(value: string): CSSValue[] {\n return Parser.create(value).parseComponentValues();\n }\n\n parseComponentValue(): CSSValue {\n let token = this.consumeToken();\n while (token.type === TokenType.WHITESPACE_TOKEN) {\n token = this.consumeToken();\n }\n\n if (token.type === TokenType.EOF_TOKEN) {\n throw new SyntaxError(`Error parsing CSS component value, unexpected EOF`);\n }\n\n this.reconsumeToken(token);\n const value = this.consumeComponentValue();\n\n do {\n token = this.consumeToken();\n } while (token.type === TokenType.WHITESPACE_TOKEN);\n\n if (token.type === TokenType.EOF_TOKEN) {\n return value;\n }\n\n throw new SyntaxError(`Error parsing CSS component value, multiple values found when expecting only one`);\n }\n\n parseComponentValues(): CSSValue[] {\n const values = [];\n while (true) {\n const value = this.consumeComponentValue();\n if (value.type === TokenType.EOF_TOKEN) {\n return values;\n }\n values.push(value);\n values.push();\n }\n }\n\n private consumeComponentValue(): CSSValue {\n const token = this.consumeToken();\n\n switch (token.type) {\n case TokenType.LEFT_CURLY_BRACKET_TOKEN:\n case TokenType.LEFT_SQUARE_BRACKET_TOKEN:\n case TokenType.LEFT_PARENTHESIS_TOKEN:\n return this.consumeSimpleBlock(token.type);\n case TokenType.FUNCTION_TOKEN:\n return this.consumeFunction(token);\n }\n\n return token;\n }\n\n private consumeSimpleBlock(type: CSSBlockType): CSSBlock {\n const block: CSSBlock = {type, values: []};\n\n let token = this.consumeToken();\n while (true) {\n if (token.type === TokenType.EOF_TOKEN || isEndingTokenFor(token, type)) {\n return block;\n }\n\n this.reconsumeToken(token);\n block.values.push(this.consumeComponentValue());\n token = this.consumeToken();\n }\n }\n\n private consumeFunction(functionToken: StringValueToken): CSSFunction {\n const cssFunction: CSSFunction = {\n name: functionToken.value,\n values: [],\n type: TokenType.FUNCTION\n };\n\n while (true) {\n const token = this.consumeToken();\n if (token.type === TokenType.EOF_TOKEN || token.type === TokenType.RIGHT_PARENTHESIS_TOKEN) {\n return cssFunction;\n }\n\n this.reconsumeToken(token);\n cssFunction.values.push(this.consumeComponentValue());\n }\n }\n\n private consumeToken(): CSSToken {\n const token = this._tokens.shift();\n return typeof token === 'undefined' ? EOF_TOKEN : token;\n }\n\n private reconsumeToken(token: CSSToken): void {\n this._tokens.unshift(token);\n }\n}\n\nexport const isDimensionToken = (token: CSSValue): token is DimensionToken => token.type === TokenType.DIMENSION_TOKEN;\nexport const isNumberToken = (token: CSSValue): token is NumberValueToken => token.type === TokenType.NUMBER_TOKEN;\nexport const isIdentToken = (token: CSSValue): token is StringValueToken => token.type === TokenType.IDENT_TOKEN;\nexport const isStringToken = (token: CSSValue): token is StringValueToken => token.type === TokenType.STRING_TOKEN;\nexport const isIdentWithValue = (token: CSSValue, value: string): boolean =>\n isIdentToken(token) && token.value === value;\n\nexport const nonWhiteSpace = (token: CSSValue): boolean => token.type !== TokenType.WHITESPACE_TOKEN;\nexport const nonFunctionArgSeparator = (token: CSSValue): boolean =>\n token.type !== TokenType.WHITESPACE_TOKEN && token.type !== TokenType.COMMA_TOKEN;\n\nexport const parseFunctionArgs = (tokens: CSSValue[]): CSSValue[][] => {\n const args: CSSValue[][] = [];\n let arg: CSSValue[] = [];\n tokens.forEach((token) => {\n if (token.type === TokenType.COMMA_TOKEN) {\n if (arg.length === 0) {\n throw new Error(`Error parsing function args, zero tokens for arg`);\n }\n args.push(arg);\n arg = [];\n return;\n }\n\n if (token.type !== TokenType.WHITESPACE_TOKEN) {\n arg.push(token);\n }\n });\n if (arg.length) {\n args.push(arg);\n }\n\n return args;\n};\n\nconst isEndingTokenFor = (token: CSSToken, type: CSSBlockType): boolean => {\n if (type === TokenType.LEFT_CURLY_BRACKET_TOKEN && token.type === TokenType.RIGHT_CURLY_BRACKET_TOKEN) {\n return true;\n }\n if (type === TokenType.LEFT_SQUARE_BRACKET_TOKEN && token.type === TokenType.RIGHT_SQUARE_BRACKET_TOKEN) {\n return true;\n }\n\n return type === TokenType.LEFT_PARENTHESIS_TOKEN && token.type === TokenType.RIGHT_PARENTHESIS_TOKEN;\n};\n","import {CSSValue} from '../syntax/parser';\nimport {DimensionToken, NumberValueToken, TokenType} from '../syntax/tokenizer';\n\nexport type Length = DimensionToken | NumberValueToken;\n\nexport const isLength = (token: CSSValue): token is Length =>\n token.type === TokenType.NUMBER_TOKEN || token.type === TokenType.DIMENSION_TOKEN;\n","import {DimensionToken, FLAG_INTEGER, NumberValueToken, TokenType} from '../syntax/tokenizer';\nimport {CSSValue, isDimensionToken} from '../syntax/parser';\nimport {isLength} from './length';\nexport type LengthPercentage = DimensionToken | NumberValueToken;\nexport type LengthPercentageTuple = [LengthPercentage] | [LengthPercentage, LengthPercentage];\n\nexport const isLengthPercentage = (token: CSSValue): token is LengthPercentage =>\n token.type === TokenType.PERCENTAGE_TOKEN || isLength(token);\nexport const parseLengthPercentageTuple = (tokens: LengthPercentage[]): LengthPercentageTuple =>\n tokens.length > 1 ? [tokens[0], tokens[1]] : [tokens[0]];\nexport const ZERO_LENGTH: NumberValueToken = {\n type: TokenType.NUMBER_TOKEN,\n number: 0,\n flags: FLAG_INTEGER\n};\n\nexport const FIFTY_PERCENT: NumberValueToken = {\n type: TokenType.PERCENTAGE_TOKEN,\n number: 50,\n flags: FLAG_INTEGER\n};\n\nexport const HUNDRED_PERCENT: NumberValueToken = {\n type: TokenType.PERCENTAGE_TOKEN,\n number: 100,\n flags: FLAG_INTEGER\n};\n\nexport const getAbsoluteValueForTuple = (\n tuple: LengthPercentageTuple,\n width: number,\n height: number\n): [number, number] => {\n const [x, y] = tuple;\n return [getAbsoluteValue(x, width), getAbsoluteValue(typeof y !== 'undefined' ? y : x, height)];\n};\nexport const getAbsoluteValue = (token: LengthPercentage, parent: number): number => {\n if (token.type === TokenType.PERCENTAGE_TOKEN) {\n return (token.number / 100) * parent;\n }\n\n if (isDimensionToken(token)) {\n switch (token.unit) {\n case 'rem':\n case 'em':\n return 16 * token.number; // TODO use correct font-size\n case 'px':\n default:\n return token.number;\n }\n }\n\n return token.number;\n};\n","import {CSSValue, isIdentToken} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {ITypeDescriptor} from '../ITypeDescriptor';\nimport {HUNDRED_PERCENT, ZERO_LENGTH} from './length-percentage';\nimport {GradientCorner} from './image';\nimport {Context} from '../../core/context';\n\nconst DEG = 'deg';\nconst GRAD = 'grad';\nconst RAD = 'rad';\nconst TURN = 'turn';\n\nexport const angle: ITypeDescriptor = {\n name: 'angle',\n parse: (_context: Context, value: CSSValue): number => {\n if (value.type === TokenType.DIMENSION_TOKEN) {\n switch (value.unit) {\n case DEG:\n return (Math.PI * value.number) / 180;\n case GRAD:\n return (Math.PI / 200) * value.number;\n case RAD:\n return value.number;\n case TURN:\n return Math.PI * 2 * value.number;\n }\n }\n\n throw new Error(`Unsupported angle type`);\n }\n};\n\nexport const isAngle = (value: CSSValue): boolean => {\n if (value.type === TokenType.DIMENSION_TOKEN) {\n if (value.unit === DEG || value.unit === GRAD || value.unit === RAD || value.unit === TURN) {\n return true;\n }\n }\n return false;\n};\n\nexport const parseNamedSide = (tokens: CSSValue[]): number | GradientCorner => {\n const sideOrCorner = tokens\n .filter(isIdentToken)\n .map((ident) => ident.value)\n .join(' ');\n\n switch (sideOrCorner) {\n case 'to bottom right':\n case 'to right bottom':\n case 'left top':\n case 'top left':\n return [ZERO_LENGTH, ZERO_LENGTH];\n case 'to top':\n case 'bottom':\n return deg(0);\n case 'to bottom left':\n case 'to left bottom':\n case 'right top':\n case 'top right':\n return [ZERO_LENGTH, HUNDRED_PERCENT];\n case 'to right':\n case 'left':\n return deg(90);\n case 'to top left':\n case 'to left top':\n case 'right bottom':\n case 'bottom right':\n return [HUNDRED_PERCENT, HUNDRED_PERCENT];\n case 'to bottom':\n case 'top':\n return deg(180);\n case 'to top right':\n case 'to right top':\n case 'left bottom':\n case 'bottom left':\n return [HUNDRED_PERCENT, ZERO_LENGTH];\n case 'to left':\n case 'right':\n return deg(270);\n }\n\n return 0;\n};\n\nexport const deg = (deg: number): number => (Math.PI * deg) / 180;\n","import {CSSValue, nonFunctionArgSeparator, Parser} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {ITypeDescriptor} from '../ITypeDescriptor';\nimport {angle, deg} from './angle';\nimport {getAbsoluteValue, isLengthPercentage} from './length-percentage';\nimport {Context} from '../../core/context';\nexport type Color = number;\n\nexport const color: ITypeDescriptor = {\n name: 'color',\n parse: (context: Context, value: CSSValue): Color => {\n if (value.type === TokenType.FUNCTION) {\n const colorFunction = SUPPORTED_COLOR_FUNCTIONS[value.name];\n if (typeof colorFunction === 'undefined') {\n throw new Error(`Attempting to parse an unsupported color function \"${value.name}\"`);\n }\n return colorFunction(context, value.values);\n }\n\n if (value.type === TokenType.HASH_TOKEN) {\n if (value.value.length === 3) {\n const r = value.value.substring(0, 1);\n const g = value.value.substring(1, 2);\n const b = value.value.substring(2, 3);\n return pack(parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), 1);\n }\n\n if (value.value.length === 4) {\n const r = value.value.substring(0, 1);\n const g = value.value.substring(1, 2);\n const b = value.value.substring(2, 3);\n const a = value.value.substring(3, 4);\n return pack(parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), parseInt(a + a, 16) / 255);\n }\n\n if (value.value.length === 6) {\n const r = value.value.substring(0, 2);\n const g = value.value.substring(2, 4);\n const b = value.value.substring(4, 6);\n return pack(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), 1);\n }\n\n if (value.value.length === 8) {\n const r = value.value.substring(0, 2);\n const g = value.value.substring(2, 4);\n const b = value.value.substring(4, 6);\n const a = value.value.substring(6, 8);\n return pack(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), parseInt(a, 16) / 255);\n }\n }\n\n if (value.type === TokenType.IDENT_TOKEN) {\n const namedColor = COLORS[value.value.toUpperCase()];\n if (typeof namedColor !== 'undefined') {\n return namedColor;\n }\n }\n\n return COLORS.TRANSPARENT;\n }\n};\n\nexport const isTransparent = (color: Color): boolean => (0xff & color) === 0;\n\nexport const asString = (color: Color): string => {\n const alpha = 0xff & color;\n const blue = 0xff & (color >> 8);\n const green = 0xff & (color >> 16);\n const red = 0xff & (color >> 24);\n return alpha < 255 ? `rgba(${red},${green},${blue},${alpha / 255})` : `rgb(${red},${green},${blue})`;\n};\n\nexport const pack = (r: number, g: number, b: number, a: number): Color =>\n ((r << 24) | (g << 16) | (b << 8) | (Math.round(a * 255) << 0)) >>> 0;\n\nconst getTokenColorValue = (token: CSSValue, i: number): number => {\n if (token.type === TokenType.NUMBER_TOKEN) {\n return token.number;\n }\n\n if (token.type === TokenType.PERCENTAGE_TOKEN) {\n const max = i === 3 ? 1 : 255;\n return i === 3 ? (token.number / 100) * max : Math.round((token.number / 100) * max);\n }\n\n return 0;\n};\n\nconst rgb = (_context: Context, args: CSSValue[]): number => {\n const tokens = args.filter(nonFunctionArgSeparator);\n\n if (tokens.length === 3) {\n const [r, g, b] = tokens.map(getTokenColorValue);\n return pack(r, g, b, 1);\n }\n\n if (tokens.length === 4) {\n const [r, g, b, a] = tokens.map(getTokenColorValue);\n return pack(r, g, b, a);\n }\n\n return 0;\n};\n\nfunction hue2rgb(t1: number, t2: number, hue: number): number {\n if (hue < 0) {\n hue += 1;\n }\n if (hue >= 1) {\n hue -= 1;\n }\n\n if (hue < 1 / 6) {\n return (t2 - t1) * hue * 6 + t1;\n } else if (hue < 1 / 2) {\n return t2;\n } else if (hue < 2 / 3) {\n return (t2 - t1) * 6 * (2 / 3 - hue) + t1;\n } else {\n return t1;\n }\n}\n\nconst hsl = (context: Context, args: CSSValue[]): number => {\n const tokens = args.filter(nonFunctionArgSeparator);\n const [hue, saturation, lightness, alpha] = tokens;\n\n const h = (hue.type === TokenType.NUMBER_TOKEN ? deg(hue.number) : angle.parse(context, hue)) / (Math.PI * 2);\n const s = isLengthPercentage(saturation) ? saturation.number / 100 : 0;\n const l = isLengthPercentage(lightness) ? lightness.number / 100 : 0;\n const a = typeof alpha !== 'undefined' && isLengthPercentage(alpha) ? getAbsoluteValue(alpha, 1) : 1;\n\n if (s === 0) {\n return pack(l * 255, l * 255, l * 255, 1);\n }\n\n const t2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n\n const t1 = l * 2 - t2;\n const r = hue2rgb(t1, t2, h + 1 / 3);\n const g = hue2rgb(t1, t2, h);\n const b = hue2rgb(t1, t2, h - 1 / 3);\n return pack(r * 255, g * 255, b * 255, a);\n};\n\nconst SUPPORTED_COLOR_FUNCTIONS: {\n [key: string]: (context: Context, args: CSSValue[]) => number;\n} = {\n hsl: hsl,\n hsla: hsl,\n rgb: rgb,\n rgba: rgb\n};\n\nexport const parseColor = (context: Context, value: string): Color =>\n color.parse(context, Parser.create(value).parseComponentValue());\n\nexport const COLORS: {[key: string]: Color} = {\n ALICEBLUE: 0xf0f8ffff,\n ANTIQUEWHITE: 0xfaebd7ff,\n AQUA: 0x00ffffff,\n AQUAMARINE: 0x7fffd4ff,\n AZURE: 0xf0ffffff,\n BEIGE: 0xf5f5dcff,\n BISQUE: 0xffe4c4ff,\n BLACK: 0x000000ff,\n BLANCHEDALMOND: 0xffebcdff,\n BLUE: 0x0000ffff,\n BLUEVIOLET: 0x8a2be2ff,\n BROWN: 0xa52a2aff,\n BURLYWOOD: 0xdeb887ff,\n CADETBLUE: 0x5f9ea0ff,\n CHARTREUSE: 0x7fff00ff,\n CHOCOLATE: 0xd2691eff,\n CORAL: 0xff7f50ff,\n CORNFLOWERBLUE: 0x6495edff,\n CORNSILK: 0xfff8dcff,\n CRIMSON: 0xdc143cff,\n CYAN: 0x00ffffff,\n DARKBLUE: 0x00008bff,\n DARKCYAN: 0x008b8bff,\n DARKGOLDENROD: 0xb886bbff,\n DARKGRAY: 0xa9a9a9ff,\n DARKGREEN: 0x006400ff,\n DARKGREY: 0xa9a9a9ff,\n DARKKHAKI: 0xbdb76bff,\n DARKMAGENTA: 0x8b008bff,\n DARKOLIVEGREEN: 0x556b2fff,\n DARKORANGE: 0xff8c00ff,\n DARKORCHID: 0x9932ccff,\n DARKRED: 0x8b0000ff,\n DARKSALMON: 0xe9967aff,\n DARKSEAGREEN: 0x8fbc8fff,\n DARKSLATEBLUE: 0x483d8bff,\n DARKSLATEGRAY: 0x2f4f4fff,\n DARKSLATEGREY: 0x2f4f4fff,\n DARKTURQUOISE: 0x00ced1ff,\n DARKVIOLET: 0x9400d3ff,\n DEEPPINK: 0xff1493ff,\n DEEPSKYBLUE: 0x00bfffff,\n DIMGRAY: 0x696969ff,\n DIMGREY: 0x696969ff,\n DODGERBLUE: 0x1e90ffff,\n FIREBRICK: 0xb22222ff,\n FLORALWHITE: 0xfffaf0ff,\n FORESTGREEN: 0x228b22ff,\n FUCHSIA: 0xff00ffff,\n GAINSBORO: 0xdcdcdcff,\n GHOSTWHITE: 0xf8f8ffff,\n GOLD: 0xffd700ff,\n GOLDENROD: 0xdaa520ff,\n GRAY: 0x808080ff,\n GREEN: 0x008000ff,\n GREENYELLOW: 0xadff2fff,\n GREY: 0x808080ff,\n HONEYDEW: 0xf0fff0ff,\n HOTPINK: 0xff69b4ff,\n INDIANRED: 0xcd5c5cff,\n INDIGO: 0x4b0082ff,\n IVORY: 0xfffff0ff,\n KHAKI: 0xf0e68cff,\n LAVENDER: 0xe6e6faff,\n LAVENDERBLUSH: 0xfff0f5ff,\n LAWNGREEN: 0x7cfc00ff,\n LEMONCHIFFON: 0xfffacdff,\n LIGHTBLUE: 0xadd8e6ff,\n LIGHTCORAL: 0xf08080ff,\n LIGHTCYAN: 0xe0ffffff,\n LIGHTGOLDENRODYELLOW: 0xfafad2ff,\n LIGHTGRAY: 0xd3d3d3ff,\n LIGHTGREEN: 0x90ee90ff,\n LIGHTGREY: 0xd3d3d3ff,\n LIGHTPINK: 0xffb6c1ff,\n LIGHTSALMON: 0xffa07aff,\n LIGHTSEAGREEN: 0x20b2aaff,\n LIGHTSKYBLUE: 0x87cefaff,\n LIGHTSLATEGRAY: 0x778899ff,\n LIGHTSLATEGREY: 0x778899ff,\n LIGHTSTEELBLUE: 0xb0c4deff,\n LIGHTYELLOW: 0xffffe0ff,\n LIME: 0x00ff00ff,\n LIMEGREEN: 0x32cd32ff,\n LINEN: 0xfaf0e6ff,\n MAGENTA: 0xff00ffff,\n MAROON: 0x800000ff,\n MEDIUMAQUAMARINE: 0x66cdaaff,\n MEDIUMBLUE: 0x0000cdff,\n MEDIUMORCHID: 0xba55d3ff,\n MEDIUMPURPLE: 0x9370dbff,\n MEDIUMSEAGREEN: 0x3cb371ff,\n MEDIUMSLATEBLUE: 0x7b68eeff,\n MEDIUMSPRINGGREEN: 0x00fa9aff,\n MEDIUMTURQUOISE: 0x48d1ccff,\n MEDIUMVIOLETRED: 0xc71585ff,\n MIDNIGHTBLUE: 0x191970ff,\n MINTCREAM: 0xf5fffaff,\n MISTYROSE: 0xffe4e1ff,\n MOCCASIN: 0xffe4b5ff,\n NAVAJOWHITE: 0xffdeadff,\n NAVY: 0x000080ff,\n OLDLACE: 0xfdf5e6ff,\n OLIVE: 0x808000ff,\n OLIVEDRAB: 0x6b8e23ff,\n ORANGE: 0xffa500ff,\n ORANGERED: 0xff4500ff,\n ORCHID: 0xda70d6ff,\n PALEGOLDENROD: 0xeee8aaff,\n PALEGREEN: 0x98fb98ff,\n PALETURQUOISE: 0xafeeeeff,\n PALEVIOLETRED: 0xdb7093ff,\n PAPAYAWHIP: 0xffefd5ff,\n PEACHPUFF: 0xffdab9ff,\n PERU: 0xcd853fff,\n PINK: 0xffc0cbff,\n PLUM: 0xdda0ddff,\n POWDERBLUE: 0xb0e0e6ff,\n PURPLE: 0x800080ff,\n REBECCAPURPLE: 0x663399ff,\n RED: 0xff0000ff,\n ROSYBROWN: 0xbc8f8fff,\n ROYALBLUE: 0x4169e1ff,\n SADDLEBROWN: 0x8b4513ff,\n SALMON: 0xfa8072ff,\n SANDYBROWN: 0xf4a460ff,\n SEAGREEN: 0x2e8b57ff,\n SEASHELL: 0xfff5eeff,\n SIENNA: 0xa0522dff,\n SILVER: 0xc0c0c0ff,\n SKYBLUE: 0x87ceebff,\n SLATEBLUE: 0x6a5acdff,\n SLATEGRAY: 0x708090ff,\n SLATEGREY: 0x708090ff,\n SNOW: 0xfffafaff,\n SPRINGGREEN: 0x00ff7fff,\n STEELBLUE: 0x4682b4ff,\n TAN: 0xd2b48cff,\n TEAL: 0x008080ff,\n THISTLE: 0xd8bfd8ff,\n TOMATO: 0xff6347ff,\n TRANSPARENT: 0x00000000,\n TURQUOISE: 0x40e0d0ff,\n VIOLET: 0xee82eeff,\n WHEAT: 0xf5deb3ff,\n WHITE: 0xffffffff,\n WHITESMOKE: 0xf5f5f5ff,\n YELLOW: 0xffff00ff,\n YELLOWGREEN: 0x9acd32ff\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const enum BACKGROUND_CLIP {\n BORDER_BOX = 0,\n PADDING_BOX = 1,\n CONTENT_BOX = 2\n}\n\nexport type BackgroundClip = BACKGROUND_CLIP[];\n\nexport const backgroundClip: IPropertyListDescriptor = {\n name: 'background-clip',\n initialValue: 'border-box',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): BackgroundClip => {\n return tokens.map((token) => {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'padding-box':\n return BACKGROUND_CLIP.PADDING_BOX;\n case 'content-box':\n return BACKGROUND_CLIP.CONTENT_BOX;\n }\n }\n return BACKGROUND_CLIP.BORDER_BOX;\n });\n }\n};\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nexport const backgroundColor: IPropertyTypeValueDescriptor = {\n name: `background-color`,\n initialValue: 'transparent',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n};\n","import {CSSValue} from '../../syntax/parser';\nimport {\n CSSRadialExtent,\n CSSRadialGradientImage,\n CSSRadialShape,\n GradientColorStop,\n GradientCorner,\n UnprocessedGradientColorStop\n} from '../image';\nimport {color as colorType} from '../color';\nimport {getAbsoluteValue, HUNDRED_PERCENT, isLengthPercentage, ZERO_LENGTH} from '../length-percentage';\nimport {Context} from '../../../core/context';\n\nexport const parseColorStop = (context: Context, args: CSSValue[]): UnprocessedGradientColorStop => {\n const color = colorType.parse(context, args[0]);\n const stop = args[1];\n return stop && isLengthPercentage(stop) ? {color, stop} : {color, stop: null};\n};\n\nexport const processColorStops = (stops: UnprocessedGradientColorStop[], lineLength: number): GradientColorStop[] => {\n const first = stops[0];\n const last = stops[stops.length - 1];\n if (first.stop === null) {\n first.stop = ZERO_LENGTH;\n }\n\n if (last.stop === null) {\n last.stop = HUNDRED_PERCENT;\n }\n\n const processStops: (number | null)[] = [];\n let previous = 0;\n for (let i = 0; i < stops.length; i++) {\n const stop = stops[i].stop;\n if (stop !== null) {\n const absoluteValue = getAbsoluteValue(stop, lineLength);\n if (absoluteValue > previous) {\n processStops.push(absoluteValue);\n } else {\n processStops.push(previous);\n }\n previous = absoluteValue;\n } else {\n processStops.push(null);\n }\n }\n\n let gapBegin = null;\n for (let i = 0; i < processStops.length; i++) {\n const stop = processStops[i];\n if (stop === null) {\n if (gapBegin === null) {\n gapBegin = i;\n }\n } else if (gapBegin !== null) {\n const gapLength = i - gapBegin;\n const beforeGap = processStops[gapBegin - 1] as number;\n const gapValue = (stop - beforeGap) / (gapLength + 1);\n for (let g = 1; g <= gapLength; g++) {\n processStops[gapBegin + g - 1] = gapValue * g;\n }\n gapBegin = null;\n }\n }\n\n return stops.map(({color}, i) => {\n return {color, stop: Math.max(Math.min(1, (processStops[i] as number) / lineLength), 0)};\n });\n};\n\nconst getAngleFromCorner = (corner: GradientCorner, width: number, height: number): number => {\n const centerX = width / 2;\n const centerY = height / 2;\n const x = getAbsoluteValue(corner[0], width) - centerX;\n const y = centerY - getAbsoluteValue(corner[1], height);\n\n return (Math.atan2(y, x) + Math.PI * 2) % (Math.PI * 2);\n};\n\nexport const calculateGradientDirection = (\n angle: number | GradientCorner,\n width: number,\n height: number\n): [number, number, number, number, number] => {\n const radian = typeof angle === 'number' ? angle : getAngleFromCorner(angle, width, height);\n\n const lineLength = Math.abs(width * Math.sin(radian)) + Math.abs(height * Math.cos(radian));\n\n const halfWidth = width / 2;\n const halfHeight = height / 2;\n const halfLineLength = lineLength / 2;\n\n const yDiff = Math.sin(radian - Math.PI / 2) * halfLineLength;\n const xDiff = Math.cos(radian - Math.PI / 2) * halfLineLength;\n\n return [lineLength, halfWidth - xDiff, halfWidth + xDiff, halfHeight - yDiff, halfHeight + yDiff];\n};\n\nconst distance = (a: number, b: number): number => Math.sqrt(a * a + b * b);\n\nconst findCorner = (width: number, height: number, x: number, y: number, closest: boolean): [number, number] => {\n const corners = [\n [0, 0],\n [0, height],\n [width, 0],\n [width, height]\n ];\n\n return corners.reduce(\n (stat, corner) => {\n const [cx, cy] = corner;\n const d = distance(x - cx, y - cy);\n if (closest ? d < stat.optimumDistance : d > stat.optimumDistance) {\n return {\n optimumCorner: corner,\n optimumDistance: d\n };\n }\n\n return stat;\n },\n {\n optimumDistance: closest ? Infinity : -Infinity,\n optimumCorner: null\n }\n ).optimumCorner as [number, number];\n};\n\nexport const calculateRadius = (\n gradient: CSSRadialGradientImage,\n x: number,\n y: number,\n width: number,\n height: number\n): [number, number] => {\n let rx = 0;\n let ry = 0;\n\n switch (gradient.size) {\n case CSSRadialExtent.CLOSEST_SIDE:\n // The ending shape is sized so that that it exactly meets the side of the gradient box closest to the gradient’s center.\n // If the shape is an ellipse, it exactly meets the closest side in each dimension.\n if (gradient.shape === CSSRadialShape.CIRCLE) {\n rx = ry = Math.min(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height));\n } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n rx = Math.min(Math.abs(x), Math.abs(x - width));\n ry = Math.min(Math.abs(y), Math.abs(y - height));\n }\n break;\n\n case CSSRadialExtent.CLOSEST_CORNER:\n // The ending shape is sized so that that it passes through the corner of the gradient box closest to the gradient’s center.\n // If the shape is an ellipse, the ending shape is given the same aspect-ratio it would have if closest-side were specified.\n if (gradient.shape === CSSRadialShape.CIRCLE) {\n rx = ry = Math.min(\n distance(x, y),\n distance(x, y - height),\n distance(x - width, y),\n distance(x - width, y - height)\n );\n } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n // Compute the ratio ry/rx (which is to be the same as for \"closest-side\")\n const c = Math.min(Math.abs(y), Math.abs(y - height)) / Math.min(Math.abs(x), Math.abs(x - width));\n const [cx, cy] = findCorner(width, height, x, y, true);\n rx = distance(cx - x, (cy - y) / c);\n ry = c * rx;\n }\n break;\n\n case CSSRadialExtent.FARTHEST_SIDE:\n // Same as closest-side, except the ending shape is sized based on the farthest side(s)\n if (gradient.shape === CSSRadialShape.CIRCLE) {\n rx = ry = Math.max(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height));\n } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n rx = Math.max(Math.abs(x), Math.abs(x - width));\n ry = Math.max(Math.abs(y), Math.abs(y - height));\n }\n break;\n\n case CSSRadialExtent.FARTHEST_CORNER:\n // Same as closest-corner, except the ending shape is sized based on the farthest corner.\n // If the shape is an ellipse, the ending shape is given the same aspect ratio it would have if farthest-side were specified.\n if (gradient.shape === CSSRadialShape.CIRCLE) {\n rx = ry = Math.max(\n distance(x, y),\n distance(x, y - height),\n distance(x - width, y),\n distance(x - width, y - height)\n );\n } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n // Compute the ratio ry/rx (which is to be the same as for \"farthest-side\")\n const c = Math.max(Math.abs(y), Math.abs(y - height)) / Math.max(Math.abs(x), Math.abs(x - width));\n const [cx, cy] = findCorner(width, height, x, y, false);\n rx = distance(cx - x, (cy - y) / c);\n ry = c * rx;\n }\n break;\n }\n\n if (Array.isArray(gradient.size)) {\n rx = getAbsoluteValue(gradient.size[0], width);\n ry = gradient.size.length === 2 ? getAbsoluteValue(gradient.size[1], height) : rx;\n }\n\n return [rx, ry];\n};\n","import {CSSValue, parseFunctionArgs} from '../../syntax/parser';\nimport {CSSImageType, CSSLinearGradientImage, GradientCorner, UnprocessedGradientColorStop} from '../image';\nimport {TokenType} from '../../syntax/tokenizer';\nimport {isAngle, angle as angleType, parseNamedSide, deg} from '../angle';\nimport {parseColorStop} from './gradient';\nimport {Context} from '../../../core/context';\n\nexport const prefixLinearGradient = (context: Context, tokens: CSSValue[]): CSSLinearGradientImage => {\n let angle: number | GradientCorner = deg(180);\n const stops: UnprocessedGradientColorStop[] = [];\n\n parseFunctionArgs(tokens).forEach((arg, i) => {\n if (i === 0) {\n const firstToken = arg[0];\n if (\n firstToken.type === TokenType.IDENT_TOKEN &&\n ['top', 'left', 'right', 'bottom'].indexOf(firstToken.value) !== -1\n ) {\n angle = parseNamedSide(arg);\n return;\n } else if (isAngle(firstToken)) {\n angle = (angleType.parse(context, firstToken) + deg(270)) % deg(360);\n return;\n }\n }\n const colorStop = parseColorStop(context, arg);\n stops.push(colorStop);\n });\n\n return {\n angle,\n stops,\n type: CSSImageType.LINEAR_GRADIENT\n };\n};\n","import {CSSValue, isIdentToken, parseFunctionArgs} from '../../syntax/parser';\nimport {\n CSSImageType,\n CSSRadialExtent,\n CSSRadialGradientImage,\n CSSRadialShape,\n CSSRadialSize,\n UnprocessedGradientColorStop\n} from '../image';\nimport {parseColorStop} from './gradient';\nimport {FIFTY_PERCENT, HUNDRED_PERCENT, isLengthPercentage, LengthPercentage, ZERO_LENGTH} from '../length-percentage';\nimport {isLength} from '../length';\nimport {Context} from '../../../core/context';\nexport const CLOSEST_SIDE = 'closest-side';\nexport const FARTHEST_SIDE = 'farthest-side';\nexport const CLOSEST_CORNER = 'closest-corner';\nexport const FARTHEST_CORNER = 'farthest-corner';\nexport const CIRCLE = 'circle';\nexport const ELLIPSE = 'ellipse';\nexport const COVER = 'cover';\nexport const CONTAIN = 'contain';\n\nexport const radialGradient = (context: Context, tokens: CSSValue[]): CSSRadialGradientImage => {\n let shape: CSSRadialShape = CSSRadialShape.CIRCLE;\n let size: CSSRadialSize = CSSRadialExtent.FARTHEST_CORNER;\n const stops: UnprocessedGradientColorStop[] = [];\n const position: LengthPercentage[] = [];\n parseFunctionArgs(tokens).forEach((arg, i) => {\n let isColorStop = true;\n if (i === 0) {\n let isAtPosition = false;\n isColorStop = arg.reduce((acc, token) => {\n if (isAtPosition) {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'center':\n position.push(FIFTY_PERCENT);\n return acc;\n case 'top':\n case 'left':\n position.push(ZERO_LENGTH);\n return acc;\n case 'right':\n case 'bottom':\n position.push(HUNDRED_PERCENT);\n return acc;\n }\n } else if (isLengthPercentage(token) || isLength(token)) {\n position.push(token);\n }\n } else if (isIdentToken(token)) {\n switch (token.value) {\n case CIRCLE:\n shape = CSSRadialShape.CIRCLE;\n return false;\n case ELLIPSE:\n shape = CSSRadialShape.ELLIPSE;\n return false;\n case 'at':\n isAtPosition = true;\n return false;\n case CLOSEST_SIDE:\n size = CSSRadialExtent.CLOSEST_SIDE;\n return false;\n case COVER:\n case FARTHEST_SIDE:\n size = CSSRadialExtent.FARTHEST_SIDE;\n return false;\n case CONTAIN:\n case CLOSEST_CORNER:\n size = CSSRadialExtent.CLOSEST_CORNER;\n return false;\n case FARTHEST_CORNER:\n size = CSSRadialExtent.FARTHEST_CORNER;\n return false;\n }\n } else if (isLength(token) || isLengthPercentage(token)) {\n if (!Array.isArray(size)) {\n size = [];\n }\n size.push(token);\n return false;\n }\n return acc;\n }, isColorStop);\n }\n\n if (isColorStop) {\n const colorStop = parseColorStop(context, arg);\n stops.push(colorStop);\n }\n });\n\n return {size, shape, stops, position, type: CSSImageType.RADIAL_GRADIENT};\n};\n","import {CSSValue, isIdentToken, parseFunctionArgs} from '../../syntax/parser';\nimport {\n CSSImageType,\n CSSRadialExtent,\n CSSRadialGradientImage,\n CSSRadialShape,\n CSSRadialSize,\n UnprocessedGradientColorStop\n} from '../image';\nimport {parseColorStop} from './gradient';\nimport {FIFTY_PERCENT, HUNDRED_PERCENT, isLengthPercentage, LengthPercentage, ZERO_LENGTH} from '../length-percentage';\nimport {isLength} from '../length';\nimport {\n CIRCLE,\n CLOSEST_CORNER,\n CLOSEST_SIDE,\n CONTAIN,\n COVER,\n ELLIPSE,\n FARTHEST_CORNER,\n FARTHEST_SIDE\n} from './radial-gradient';\nimport {Context} from '../../../core/context';\n\nexport const prefixRadialGradient = (context: Context, tokens: CSSValue[]): CSSRadialGradientImage => {\n let shape: CSSRadialShape = CSSRadialShape.CIRCLE;\n let size: CSSRadialSize = CSSRadialExtent.FARTHEST_CORNER;\n const stops: UnprocessedGradientColorStop[] = [];\n const position: LengthPercentage[] = [];\n\n parseFunctionArgs(tokens).forEach((arg, i) => {\n let isColorStop = true;\n if (i === 0) {\n isColorStop = arg.reduce((acc, token) => {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'center':\n position.push(FIFTY_PERCENT);\n return false;\n case 'top':\n case 'left':\n position.push(ZERO_LENGTH);\n return false;\n case 'right':\n case 'bottom':\n position.push(HUNDRED_PERCENT);\n return false;\n }\n } else if (isLengthPercentage(token) || isLength(token)) {\n position.push(token);\n return false;\n }\n\n return acc;\n }, isColorStop);\n } else if (i === 1) {\n isColorStop = arg.reduce((acc, token) => {\n if (isIdentToken(token)) {\n switch (token.value) {\n case CIRCLE:\n shape = CSSRadialShape.CIRCLE;\n return false;\n case ELLIPSE:\n shape = CSSRadialShape.ELLIPSE;\n return false;\n case CONTAIN:\n case CLOSEST_SIDE:\n size = CSSRadialExtent.CLOSEST_SIDE;\n return false;\n case FARTHEST_SIDE:\n size = CSSRadialExtent.FARTHEST_SIDE;\n return false;\n case CLOSEST_CORNER:\n size = CSSRadialExtent.CLOSEST_CORNER;\n return false;\n case COVER:\n case FARTHEST_CORNER:\n size = CSSRadialExtent.FARTHEST_CORNER;\n return false;\n }\n } else if (isLength(token) || isLengthPercentage(token)) {\n if (!Array.isArray(size)) {\n size = [];\n }\n size.push(token);\n return false;\n }\n\n return acc;\n }, isColorStop);\n }\n\n if (isColorStop) {\n const colorStop = parseColorStop(context, arg);\n stops.push(colorStop);\n }\n });\n\n return {size, shape, stops, position, type: CSSImageType.RADIAL_GRADIENT};\n};\n","import {CSSValue} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Color} from './color';\nimport {linearGradient} from './functions/linear-gradient';\nimport {prefixLinearGradient} from './functions/-prefix-linear-gradient';\nimport {ITypeDescriptor} from '../ITypeDescriptor';\nimport {LengthPercentage} from './length-percentage';\nimport {webkitGradient} from './functions/-webkit-gradient';\nimport {radialGradient} from './functions/radial-gradient';\nimport {prefixRadialGradient} from './functions/-prefix-radial-gradient';\nimport {Context} from '../../core/context';\n\nexport const enum CSSImageType {\n URL,\n LINEAR_GRADIENT,\n RADIAL_GRADIENT\n}\n\nexport const isLinearGradient = (background: ICSSImage): background is CSSLinearGradientImage => {\n return background.type === CSSImageType.LINEAR_GRADIENT;\n};\n\nexport const isRadialGradient = (background: ICSSImage): background is CSSRadialGradientImage => {\n return background.type === CSSImageType.RADIAL_GRADIENT;\n};\n\nexport interface UnprocessedGradientColorStop {\n color: Color;\n stop: LengthPercentage | null;\n}\n\nexport interface GradientColorStop {\n color: Color;\n stop: number;\n}\n\nexport interface ICSSImage {\n type: CSSImageType;\n}\n\nexport interface CSSURLImage extends ICSSImage {\n url: string;\n type: CSSImageType.URL;\n}\n\n// interface ICSSGeneratedImage extends ICSSImage {}\n\nexport type GradientCorner = [LengthPercentage, LengthPercentage];\n\ninterface ICSSGradientImage extends ICSSImage {\n stops: UnprocessedGradientColorStop[];\n}\n\nexport interface CSSLinearGradientImage extends ICSSGradientImage {\n angle: number | GradientCorner;\n type: CSSImageType.LINEAR_GRADIENT;\n}\n\nexport const enum CSSRadialShape {\n CIRCLE,\n ELLIPSE\n}\n\nexport const enum CSSRadialExtent {\n CLOSEST_SIDE,\n FARTHEST_SIDE,\n CLOSEST_CORNER,\n FARTHEST_CORNER\n}\n\nexport type CSSRadialSize = CSSRadialExtent | LengthPercentage[];\n\nexport interface CSSRadialGradientImage extends ICSSGradientImage {\n type: CSSImageType.RADIAL_GRADIENT;\n shape: CSSRadialShape;\n size: CSSRadialSize;\n position: LengthPercentage[];\n}\n\nexport const image: ITypeDescriptor = {\n name: 'image',\n parse: (context: Context, value: CSSValue): ICSSImage => {\n if (value.type === TokenType.URL_TOKEN) {\n const image: CSSURLImage = {url: value.value, type: CSSImageType.URL};\n context.cache.addImage(value.value);\n return image;\n }\n\n if (value.type === TokenType.FUNCTION) {\n const imageFunction = SUPPORTED_IMAGE_FUNCTIONS[value.name];\n if (typeof imageFunction === 'undefined') {\n throw new Error(`Attempting to parse an unsupported image function \"${value.name}\"`);\n }\n return imageFunction(context, value.values);\n }\n\n throw new Error(`Unsupported image type ${value.type}`);\n }\n};\n\nexport function isSupportedImage(value: CSSValue): boolean {\n return (\n !(value.type === TokenType.IDENT_TOKEN && value.value === 'none') &&\n (value.type !== TokenType.FUNCTION || !!SUPPORTED_IMAGE_FUNCTIONS[value.name])\n );\n}\n\nconst SUPPORTED_IMAGE_FUNCTIONS: Record ICSSImage> = {\n 'linear-gradient': linearGradient,\n '-moz-linear-gradient': prefixLinearGradient,\n '-ms-linear-gradient': prefixLinearGradient,\n '-o-linear-gradient': prefixLinearGradient,\n '-webkit-linear-gradient': prefixLinearGradient,\n 'radial-gradient': radialGradient,\n '-moz-radial-gradient': prefixRadialGradient,\n '-ms-radial-gradient': prefixRadialGradient,\n '-o-radial-gradient': prefixRadialGradient,\n '-webkit-radial-gradient': prefixRadialGradient,\n '-webkit-gradient': webkitGradient\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken, parseFunctionArgs} from '../syntax/parser';\nimport {isLengthPercentage, LengthPercentage} from '../types/length-percentage';\nimport {StringValueToken} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\n\nexport enum BACKGROUND_SIZE {\n AUTO = 'auto',\n CONTAIN = 'contain',\n COVER = 'cover'\n}\n\nexport type BackgroundSizeInfo = LengthPercentage | StringValueToken;\nexport type BackgroundSize = BackgroundSizeInfo[][];\n\nexport const backgroundSize: IPropertyListDescriptor = {\n name: 'background-size',\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): BackgroundSize => {\n return parseFunctionArgs(tokens).map((values) => values.filter(isBackgroundSizeInfoToken));\n }\n};\n\nconst isBackgroundSizeInfoToken = (value: CSSValue): value is BackgroundSizeInfo =>\n isIdentToken(value) || isLengthPercentage(value);\n","import {CSSValue, parseFunctionArgs} from '../../syntax/parser';\nimport {TokenType} from '../../syntax/tokenizer';\nimport {isAngle, angle as angleType, parseNamedSide, deg} from '../angle';\nimport {CSSImageType, CSSLinearGradientImage, GradientCorner, UnprocessedGradientColorStop} from '../image';\nimport {parseColorStop} from './gradient';\nimport {Context} from '../../../core/context';\n\nexport const linearGradient = (context: Context, tokens: CSSValue[]): CSSLinearGradientImage => {\n let angle: number | GradientCorner = deg(180);\n const stops: UnprocessedGradientColorStop[] = [];\n\n parseFunctionArgs(tokens).forEach((arg, i) => {\n if (i === 0) {\n const firstToken = arg[0];\n if (firstToken.type === TokenType.IDENT_TOKEN && firstToken.value === 'to') {\n angle = parseNamedSide(arg);\n return;\n } else if (isAngle(firstToken)) {\n angle = angleType.parse(context, firstToken);\n return;\n }\n }\n const colorStop = parseColorStop(context, arg);\n stops.push(colorStop);\n });\n\n return {angle, stops, type: CSSImageType.LINEAR_GRADIENT};\n};\n","import {CSSValue, isIdentToken, isNumberToken, nonFunctionArgSeparator, parseFunctionArgs} from '../../syntax/parser';\nimport {\n CSSImageType,\n CSSLinearGradientImage,\n CSSRadialExtent,\n CSSRadialGradientImage,\n CSSRadialShape,\n CSSRadialSize,\n UnprocessedGradientColorStop\n} from '../image';\nimport {deg} from '../angle';\nimport {TokenType} from '../../syntax/tokenizer';\nimport {color as colorType} from '../color';\nimport {HUNDRED_PERCENT, LengthPercentage, ZERO_LENGTH} from '../length-percentage';\nimport {Context} from '../../../core/context';\n\nexport const webkitGradient = (\n context: Context,\n tokens: CSSValue[]\n): CSSLinearGradientImage | CSSRadialGradientImage => {\n const angle = deg(180);\n const stops: UnprocessedGradientColorStop[] = [];\n let type = CSSImageType.LINEAR_GRADIENT;\n const shape: CSSRadialShape = CSSRadialShape.CIRCLE;\n const size: CSSRadialSize = CSSRadialExtent.FARTHEST_CORNER;\n const position: LengthPercentage[] = [];\n parseFunctionArgs(tokens).forEach((arg, i) => {\n const firstToken = arg[0];\n if (i === 0) {\n if (isIdentToken(firstToken) && firstToken.value === 'linear') {\n type = CSSImageType.LINEAR_GRADIENT;\n return;\n } else if (isIdentToken(firstToken) && firstToken.value === 'radial') {\n type = CSSImageType.RADIAL_GRADIENT;\n return;\n }\n }\n\n if (firstToken.type === TokenType.FUNCTION) {\n if (firstToken.name === 'from') {\n const color = colorType.parse(context, firstToken.values[0]);\n stops.push({stop: ZERO_LENGTH, color});\n } else if (firstToken.name === 'to') {\n const color = colorType.parse(context, firstToken.values[0]);\n stops.push({stop: HUNDRED_PERCENT, color});\n } else if (firstToken.name === 'color-stop') {\n const values = firstToken.values.filter(nonFunctionArgSeparator);\n if (values.length === 2) {\n const color = colorType.parse(context, values[1]);\n const stop = values[0];\n if (isNumberToken(stop)) {\n stops.push({\n stop: {type: TokenType.PERCENTAGE_TOKEN, number: stop.number * 100, flags: stop.flags},\n color\n });\n }\n }\n }\n }\n });\n\n return type === CSSImageType.LINEAR_GRADIENT\n ? {\n angle: (angle + deg(180)) % deg(360),\n stops,\n type\n }\n : {size, shape, stops, position, type};\n};\n","import {TokenType} from '../syntax/tokenizer';\nimport {ICSSImage, image, isSupportedImage} from '../types/image';\nimport {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, nonFunctionArgSeparator} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport const backgroundImage: IPropertyListDescriptor = {\n name: 'background-image',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (context: Context, tokens: CSSValue[]) => {\n if (tokens.length === 0) {\n return [];\n }\n\n const first = tokens[0];\n\n if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n return [];\n }\n\n return tokens\n .filter((value) => nonFunctionArgSeparator(value) && isSupportedImage(value))\n .map((value) => image.parse(context, value));\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport const enum BACKGROUND_ORIGIN {\n BORDER_BOX = 0,\n PADDING_BOX = 1,\n CONTENT_BOX = 2\n}\n\nexport type BackgroundOrigin = BACKGROUND_ORIGIN[];\n\nexport const backgroundOrigin: IPropertyListDescriptor = {\n name: 'background-origin',\n initialValue: 'border-box',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): BackgroundOrigin => {\n return tokens.map((token) => {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'padding-box':\n return BACKGROUND_ORIGIN.PADDING_BOX;\n case 'content-box':\n return BACKGROUND_ORIGIN.CONTENT_BOX;\n }\n }\n return BACKGROUND_ORIGIN.BORDER_BOX;\n });\n }\n};\n","import {PropertyDescriptorParsingType, IPropertyListDescriptor} from '../IPropertyDescriptor';\nimport {CSSValue, parseFunctionArgs} from '../syntax/parser';\nimport {isLengthPercentage, LengthPercentageTuple, parseLengthPercentageTuple} from '../types/length-percentage';\nimport {Context} from '../../core/context';\nexport type BackgroundPosition = BackgroundImagePosition[];\n\nexport type BackgroundImagePosition = LengthPercentageTuple;\n\nexport const backgroundPosition: IPropertyListDescriptor = {\n name: 'background-position',\n initialValue: '0% 0%',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (_context: Context, tokens: CSSValue[]): BackgroundPosition => {\n return parseFunctionArgs(tokens)\n .map((values: CSSValue[]) => values.filter(isLengthPercentage))\n .map(parseLengthPercentageTuple);\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken, parseFunctionArgs} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport type BackgroundRepeat = BACKGROUND_REPEAT[];\n\nexport const enum BACKGROUND_REPEAT {\n REPEAT = 0,\n NO_REPEAT = 1,\n REPEAT_X = 2,\n REPEAT_Y = 3\n}\n\nexport const backgroundRepeat: IPropertyListDescriptor = {\n name: 'background-repeat',\n initialValue: 'repeat',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): BackgroundRepeat => {\n return parseFunctionArgs(tokens)\n .map((values) =>\n values\n .filter(isIdentToken)\n .map((token) => token.value)\n .join(' ')\n )\n .map(parseBackgroundRepeat);\n }\n};\n\nconst parseBackgroundRepeat = (value: string): BACKGROUND_REPEAT => {\n switch (value) {\n case 'no-repeat':\n return BACKGROUND_REPEAT.NO_REPEAT;\n case 'repeat-x':\n case 'repeat no-repeat':\n return BACKGROUND_REPEAT.REPEAT_X;\n case 'repeat-y':\n case 'no-repeat repeat':\n return BACKGROUND_REPEAT.REPEAT_Y;\n case 'repeat':\n default:\n return BACKGROUND_REPEAT.REPEAT;\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport enum LINE_BREAK {\n NORMAL = 'normal',\n STRICT = 'strict'\n}\n\nexport const lineBreak: IPropertyIdentValueDescriptor = {\n name: 'line-break',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, lineBreak: string): LINE_BREAK => {\n switch (lineBreak) {\n case 'strict':\n return LINE_BREAK.STRICT;\n case 'normal':\n default:\n return LINE_BREAK.NORMAL;\n }\n }\n};\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nconst borderColorForSide = (side: string): IPropertyTypeValueDescriptor => ({\n name: `border-${side}-color`,\n initialValue: 'transparent',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n});\n\nexport const borderTopColor: IPropertyTypeValueDescriptor = borderColorForSide('top');\nexport const borderRightColor: IPropertyTypeValueDescriptor = borderColorForSide('right');\nexport const borderBottomColor: IPropertyTypeValueDescriptor = borderColorForSide('bottom');\nexport const borderLeftColor: IPropertyTypeValueDescriptor = borderColorForSide('left');\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {isLengthPercentage, LengthPercentageTuple, parseLengthPercentageTuple} from '../types/length-percentage';\nimport {Context} from '../../core/context';\nexport type BorderRadius = LengthPercentageTuple;\n\nconst borderRadiusForSide = (side: string): IPropertyListDescriptor => ({\n name: `border-radius-${side}`,\n initialValue: '0 0',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): BorderRadius =>\n parseLengthPercentageTuple(tokens.filter(isLengthPercentage))\n});\n\nexport const borderTopLeftRadius: IPropertyListDescriptor = borderRadiusForSide('top-left');\nexport const borderTopRightRadius: IPropertyListDescriptor = borderRadiusForSide('top-right');\nexport const borderBottomRightRadius: IPropertyListDescriptor = borderRadiusForSide('bottom-right');\nexport const borderBottomLeftRadius: IPropertyListDescriptor = borderRadiusForSide('bottom-left');\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum BORDER_STYLE {\n NONE = 0,\n SOLID = 1,\n DASHED = 2,\n DOTTED = 3,\n DOUBLE = 4\n}\n\nconst borderStyleForSide = (side: string): IPropertyIdentValueDescriptor => ({\n name: `border-${side}-style`,\n initialValue: 'solid',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, style: string): BORDER_STYLE => {\n switch (style) {\n case 'none':\n return BORDER_STYLE.NONE;\n case 'dashed':\n return BORDER_STYLE.DASHED;\n case 'dotted':\n return BORDER_STYLE.DOTTED;\n case 'double':\n return BORDER_STYLE.DOUBLE;\n }\n return BORDER_STYLE.SOLID;\n }\n});\n\nexport const borderTopStyle: IPropertyIdentValueDescriptor = borderStyleForSide('top');\nexport const borderRightStyle: IPropertyIdentValueDescriptor = borderStyleForSide('right');\nexport const borderBottomStyle: IPropertyIdentValueDescriptor = borderStyleForSide('bottom');\nexport const borderLeftStyle: IPropertyIdentValueDescriptor = borderStyleForSide('left');\n","import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isDimensionToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nconst borderWidthForSide = (side: string): IPropertyValueDescriptor => ({\n name: `border-${side}-width`,\n initialValue: '0',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: (_context: Context, token: CSSValue): number => {\n if (isDimensionToken(token)) {\n return token.number;\n }\n return 0;\n }\n});\n\nexport const borderTopWidth: IPropertyValueDescriptor = borderWidthForSide('top');\nexport const borderRightWidth: IPropertyValueDescriptor = borderWidthForSide('right');\nexport const borderBottomWidth: IPropertyValueDescriptor = borderWidthForSide('bottom');\nexport const borderLeftWidth: IPropertyValueDescriptor = borderWidthForSide('left');\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nexport const color: IPropertyTypeValueDescriptor = {\n name: `color`,\n initialValue: 'transparent',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\n\nexport const enum DIRECTION {\n LTR = 0,\n RTL = 1\n}\n\nexport const direction: IPropertyIdentValueDescriptor = {\n name: 'direction',\n initialValue: 'ltr',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, direction: string) => {\n switch (direction) {\n case 'rtl':\n return DIRECTION.RTL;\n case 'ltr':\n default:\n return DIRECTION.LTR;\n }\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const enum DISPLAY {\n NONE = 0,\n BLOCK = 1 << 1,\n INLINE = 1 << 2,\n RUN_IN = 1 << 3,\n FLOW = 1 << 4,\n FLOW_ROOT = 1 << 5,\n TABLE = 1 << 6,\n FLEX = 1 << 7,\n GRID = 1 << 8,\n RUBY = 1 << 9,\n SUBGRID = 1 << 10,\n LIST_ITEM = 1 << 11,\n TABLE_ROW_GROUP = 1 << 12,\n TABLE_HEADER_GROUP = 1 << 13,\n TABLE_FOOTER_GROUP = 1 << 14,\n TABLE_ROW = 1 << 15,\n TABLE_CELL = 1 << 16,\n TABLE_COLUMN_GROUP = 1 << 17,\n TABLE_COLUMN = 1 << 18,\n TABLE_CAPTION = 1 << 19,\n RUBY_BASE = 1 << 20,\n RUBY_TEXT = 1 << 21,\n RUBY_BASE_CONTAINER = 1 << 22,\n RUBY_TEXT_CONTAINER = 1 << 23,\n CONTENTS = 1 << 24,\n INLINE_BLOCK = 1 << 25,\n INLINE_LIST_ITEM = 1 << 26,\n INLINE_TABLE = 1 << 27,\n INLINE_FLEX = 1 << 28,\n INLINE_GRID = 1 << 29\n}\n\nexport type Display = number;\n\nexport const display: IPropertyListDescriptor = {\n name: 'display',\n initialValue: 'inline-block',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): Display => {\n return tokens.filter(isIdentToken).reduce((bit, token) => {\n return bit | parseDisplayValue(token.value);\n }, DISPLAY.NONE);\n }\n};\n\nconst parseDisplayValue = (display: string): Display => {\n switch (display) {\n case 'block':\n case '-webkit-box':\n return DISPLAY.BLOCK;\n case 'inline':\n return DISPLAY.INLINE;\n case 'run-in':\n return DISPLAY.RUN_IN;\n case 'flow':\n return DISPLAY.FLOW;\n case 'flow-root':\n return DISPLAY.FLOW_ROOT;\n case 'table':\n return DISPLAY.TABLE;\n case 'flex':\n case '-webkit-flex':\n return DISPLAY.FLEX;\n case 'grid':\n case '-ms-grid':\n return DISPLAY.GRID;\n case 'ruby':\n return DISPLAY.RUBY;\n case 'subgrid':\n return DISPLAY.SUBGRID;\n case 'list-item':\n return DISPLAY.LIST_ITEM;\n case 'table-row-group':\n return DISPLAY.TABLE_ROW_GROUP;\n case 'table-header-group':\n return DISPLAY.TABLE_HEADER_GROUP;\n case 'table-footer-group':\n return DISPLAY.TABLE_FOOTER_GROUP;\n case 'table-row':\n return DISPLAY.TABLE_ROW;\n case 'table-cell':\n return DISPLAY.TABLE_CELL;\n case 'table-column-group':\n return DISPLAY.TABLE_COLUMN_GROUP;\n case 'table-column':\n return DISPLAY.TABLE_COLUMN;\n case 'table-caption':\n return DISPLAY.TABLE_CAPTION;\n case 'ruby-base':\n return DISPLAY.RUBY_BASE;\n case 'ruby-text':\n return DISPLAY.RUBY_TEXT;\n case 'ruby-base-container':\n return DISPLAY.RUBY_BASE_CONTAINER;\n case 'ruby-text-container':\n return DISPLAY.RUBY_TEXT_CONTAINER;\n case 'contents':\n return DISPLAY.CONTENTS;\n case 'inline-block':\n return DISPLAY.INLINE_BLOCK;\n case 'inline-list-item':\n return DISPLAY.INLINE_LIST_ITEM;\n case 'inline-table':\n return DISPLAY.INLINE_TABLE;\n case 'inline-flex':\n return DISPLAY.INLINE_FLEX;\n case 'inline-grid':\n return DISPLAY.INLINE_GRID;\n }\n\n return DISPLAY.NONE;\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum FLOAT {\n NONE = 0,\n LEFT = 1,\n RIGHT = 2,\n INLINE_START = 3,\n INLINE_END = 4\n}\n\nexport const float: IPropertyIdentValueDescriptor = {\n name: 'float',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, float: string) => {\n switch (float) {\n case 'left':\n return FLOAT.LEFT;\n case 'right':\n return FLOAT.RIGHT;\n case 'inline-start':\n return FLOAT.INLINE_START;\n case 'inline-end':\n return FLOAT.INLINE_END;\n }\n return FLOAT.NONE;\n }\n};\n","import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\nexport const letterSpacing: IPropertyValueDescriptor = {\n name: 'letter-spacing',\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.VALUE,\n parse: (_context: Context, token: CSSValue) => {\n if (token.type === TokenType.IDENT_TOKEN && token.value === 'normal') {\n return 0;\n }\n\n if (token.type === TokenType.NUMBER_TOKEN) {\n return token.number;\n }\n\n if (token.type === TokenType.DIMENSION_TOKEN) {\n return token.number;\n }\n\n return 0;\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport enum WORD_BREAK {\n NORMAL = 'normal',\n BREAK_ALL = 'break-all',\n KEEP_ALL = 'keep-all'\n}\n\nexport const wordBreak: IPropertyIdentValueDescriptor = {\n name: 'word-break',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, wordBreak: string): WORD_BREAK => {\n switch (wordBreak) {\n case 'break-all':\n return WORD_BREAK.BREAK_ALL;\n case 'keep-all':\n return WORD_BREAK.KEEP_ALL;\n case 'normal':\n default:\n return WORD_BREAK.NORMAL;\n }\n }\n};\n","import {IPropertyTokenValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {getAbsoluteValue, isLengthPercentage} from '../types/length-percentage';\nexport const lineHeight: IPropertyTokenValueDescriptor = {\n name: 'line-height',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.TOKEN_VALUE\n};\n\nexport const computeLineHeight = (token: CSSValue, fontSize: number): number => {\n if (isIdentToken(token) && token.value === 'normal') {\n return 1.2 * fontSize;\n } else if (token.type === TokenType.NUMBER_TOKEN) {\n return fontSize * token.number;\n } else if (isLengthPercentage(token)) {\n return getAbsoluteValue(token, fontSize);\n }\n\n return fontSize;\n};\n","import {TokenType} from '../syntax/tokenizer';\nimport {ICSSImage, image} from '../types/image';\nimport {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport const listStyleImage: IPropertyValueDescriptor = {\n name: 'list-style-image',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: (context: Context, token: CSSValue) => {\n if (token.type === TokenType.IDENT_TOKEN && token.value === 'none') {\n return null;\n }\n\n return image.parse(context, token);\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum LIST_STYLE_POSITION {\n INSIDE = 0,\n OUTSIDE = 1\n}\n\nexport const listStylePosition: IPropertyIdentValueDescriptor = {\n name: 'list-style-position',\n initialValue: 'outside',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, position: string) => {\n switch (position) {\n case 'inside':\n return LIST_STYLE_POSITION.INSIDE;\n case 'outside':\n default:\n return LIST_STYLE_POSITION.OUTSIDE;\n }\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum LIST_STYLE_TYPE {\n NONE = -1,\n DISC = 0,\n CIRCLE = 1,\n SQUARE = 2,\n DECIMAL = 3,\n CJK_DECIMAL = 4,\n DECIMAL_LEADING_ZERO = 5,\n LOWER_ROMAN = 6,\n UPPER_ROMAN = 7,\n LOWER_GREEK = 8,\n LOWER_ALPHA = 9,\n UPPER_ALPHA = 10,\n ARABIC_INDIC = 11,\n ARMENIAN = 12,\n BENGALI = 13,\n CAMBODIAN = 14,\n CJK_EARTHLY_BRANCH = 15,\n CJK_HEAVENLY_STEM = 16,\n CJK_IDEOGRAPHIC = 17,\n DEVANAGARI = 18,\n ETHIOPIC_NUMERIC = 19,\n GEORGIAN = 20,\n GUJARATI = 21,\n GURMUKHI = 22,\n HEBREW = 22,\n HIRAGANA = 23,\n HIRAGANA_IROHA = 24,\n JAPANESE_FORMAL = 25,\n JAPANESE_INFORMAL = 26,\n KANNADA = 27,\n KATAKANA = 28,\n KATAKANA_IROHA = 29,\n KHMER = 30,\n KOREAN_HANGUL_FORMAL = 31,\n KOREAN_HANJA_FORMAL = 32,\n KOREAN_HANJA_INFORMAL = 33,\n LAO = 34,\n LOWER_ARMENIAN = 35,\n MALAYALAM = 36,\n MONGOLIAN = 37,\n MYANMAR = 38,\n ORIYA = 39,\n PERSIAN = 40,\n SIMP_CHINESE_FORMAL = 41,\n SIMP_CHINESE_INFORMAL = 42,\n TAMIL = 43,\n TELUGU = 44,\n THAI = 45,\n TIBETAN = 46,\n TRAD_CHINESE_FORMAL = 47,\n TRAD_CHINESE_INFORMAL = 48,\n UPPER_ARMENIAN = 49,\n DISCLOSURE_OPEN = 50,\n DISCLOSURE_CLOSED = 51\n}\n\nexport const listStyleType: IPropertyIdentValueDescriptor = {\n name: 'list-style-type',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, type: string) => {\n switch (type) {\n case 'disc':\n return LIST_STYLE_TYPE.DISC;\n case 'circle':\n return LIST_STYLE_TYPE.CIRCLE;\n case 'square':\n return LIST_STYLE_TYPE.SQUARE;\n case 'decimal':\n return LIST_STYLE_TYPE.DECIMAL;\n case 'cjk-decimal':\n return LIST_STYLE_TYPE.CJK_DECIMAL;\n case 'decimal-leading-zero':\n return LIST_STYLE_TYPE.DECIMAL_LEADING_ZERO;\n case 'lower-roman':\n return LIST_STYLE_TYPE.LOWER_ROMAN;\n case 'upper-roman':\n return LIST_STYLE_TYPE.UPPER_ROMAN;\n case 'lower-greek':\n return LIST_STYLE_TYPE.LOWER_GREEK;\n case 'lower-alpha':\n return LIST_STYLE_TYPE.LOWER_ALPHA;\n case 'upper-alpha':\n return LIST_STYLE_TYPE.UPPER_ALPHA;\n case 'arabic-indic':\n return LIST_STYLE_TYPE.ARABIC_INDIC;\n case 'armenian':\n return LIST_STYLE_TYPE.ARMENIAN;\n case 'bengali':\n return LIST_STYLE_TYPE.BENGALI;\n case 'cambodian':\n return LIST_STYLE_TYPE.CAMBODIAN;\n case 'cjk-earthly-branch':\n return LIST_STYLE_TYPE.CJK_EARTHLY_BRANCH;\n case 'cjk-heavenly-stem':\n return LIST_STYLE_TYPE.CJK_HEAVENLY_STEM;\n case 'cjk-ideographic':\n return LIST_STYLE_TYPE.CJK_IDEOGRAPHIC;\n case 'devanagari':\n return LIST_STYLE_TYPE.DEVANAGARI;\n case 'ethiopic-numeric':\n return LIST_STYLE_TYPE.ETHIOPIC_NUMERIC;\n case 'georgian':\n return LIST_STYLE_TYPE.GEORGIAN;\n case 'gujarati':\n return LIST_STYLE_TYPE.GUJARATI;\n case 'gurmukhi':\n return LIST_STYLE_TYPE.GURMUKHI;\n case 'hebrew':\n return LIST_STYLE_TYPE.HEBREW;\n case 'hiragana':\n return LIST_STYLE_TYPE.HIRAGANA;\n case 'hiragana-iroha':\n return LIST_STYLE_TYPE.HIRAGANA_IROHA;\n case 'japanese-formal':\n return LIST_STYLE_TYPE.JAPANESE_FORMAL;\n case 'japanese-informal':\n return LIST_STYLE_TYPE.JAPANESE_INFORMAL;\n case 'kannada':\n return LIST_STYLE_TYPE.KANNADA;\n case 'katakana':\n return LIST_STYLE_TYPE.KATAKANA;\n case 'katakana-iroha':\n return LIST_STYLE_TYPE.KATAKANA_IROHA;\n case 'khmer':\n return LIST_STYLE_TYPE.KHMER;\n case 'korean-hangul-formal':\n return LIST_STYLE_TYPE.KOREAN_HANGUL_FORMAL;\n case 'korean-hanja-formal':\n return LIST_STYLE_TYPE.KOREAN_HANJA_FORMAL;\n case 'korean-hanja-informal':\n return LIST_STYLE_TYPE.KOREAN_HANJA_INFORMAL;\n case 'lao':\n return LIST_STYLE_TYPE.LAO;\n case 'lower-armenian':\n return LIST_STYLE_TYPE.LOWER_ARMENIAN;\n case 'malayalam':\n return LIST_STYLE_TYPE.MALAYALAM;\n case 'mongolian':\n return LIST_STYLE_TYPE.MONGOLIAN;\n case 'myanmar':\n return LIST_STYLE_TYPE.MYANMAR;\n case 'oriya':\n return LIST_STYLE_TYPE.ORIYA;\n case 'persian':\n return LIST_STYLE_TYPE.PERSIAN;\n case 'simp-chinese-formal':\n return LIST_STYLE_TYPE.SIMP_CHINESE_FORMAL;\n case 'simp-chinese-informal':\n return LIST_STYLE_TYPE.SIMP_CHINESE_INFORMAL;\n case 'tamil':\n return LIST_STYLE_TYPE.TAMIL;\n case 'telugu':\n return LIST_STYLE_TYPE.TELUGU;\n case 'thai':\n return LIST_STYLE_TYPE.THAI;\n case 'tibetan':\n return LIST_STYLE_TYPE.TIBETAN;\n case 'trad-chinese-formal':\n return LIST_STYLE_TYPE.TRAD_CHINESE_FORMAL;\n case 'trad-chinese-informal':\n return LIST_STYLE_TYPE.TRAD_CHINESE_INFORMAL;\n case 'upper-armenian':\n return LIST_STYLE_TYPE.UPPER_ARMENIAN;\n case 'disclosure-open':\n return LIST_STYLE_TYPE.DISCLOSURE_OPEN;\n case 'disclosure-closed':\n return LIST_STYLE_TYPE.DISCLOSURE_CLOSED;\n case 'none':\n default:\n return LIST_STYLE_TYPE.NONE;\n }\n }\n};\n","import {IPropertyTokenValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nconst marginForSide = (side: string): IPropertyTokenValueDescriptor => ({\n name: `margin-${side}`,\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.TOKEN_VALUE\n});\n\nexport const marginTop: IPropertyTokenValueDescriptor = marginForSide('top');\nexport const marginRight: IPropertyTokenValueDescriptor = marginForSide('right');\nexport const marginBottom: IPropertyTokenValueDescriptor = marginForSide('bottom');\nexport const marginLeft: IPropertyTokenValueDescriptor = marginForSide('left');\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const enum OVERFLOW {\n VISIBLE = 0,\n HIDDEN = 1,\n SCROLL = 2,\n CLIP = 3,\n AUTO = 4\n}\n\nexport const overflow: IPropertyListDescriptor = {\n name: 'overflow',\n initialValue: 'visible',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): OVERFLOW[] => {\n return tokens.filter(isIdentToken).map((overflow) => {\n switch (overflow.value) {\n case 'hidden':\n return OVERFLOW.HIDDEN;\n case 'scroll':\n return OVERFLOW.SCROLL;\n case 'clip':\n return OVERFLOW.CLIP;\n case 'auto':\n return OVERFLOW.AUTO;\n case 'visible':\n default:\n return OVERFLOW.VISIBLE;\n }\n });\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum OVERFLOW_WRAP {\n NORMAL = 'normal',\n BREAK_WORD = 'break-word'\n}\n\nexport const overflowWrap: IPropertyIdentValueDescriptor = {\n name: 'overflow-wrap',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, overflow: string) => {\n switch (overflow) {\n case 'break-word':\n return OVERFLOW_WRAP.BREAK_WORD;\n case 'normal':\n default:\n return OVERFLOW_WRAP.NORMAL;\n }\n }\n};\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nconst paddingForSide = (side: string): IPropertyTypeValueDescriptor => ({\n name: `padding-${side}`,\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'length-percentage'\n});\n\nexport const paddingTop: IPropertyTypeValueDescriptor = paddingForSide('top');\nexport const paddingRight: IPropertyTypeValueDescriptor = paddingForSide('right');\nexport const paddingBottom: IPropertyTypeValueDescriptor = paddingForSide('bottom');\nexport const paddingLeft: IPropertyTypeValueDescriptor = paddingForSide('left');\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum TEXT_ALIGN {\n LEFT = 0,\n CENTER = 1,\n RIGHT = 2\n}\n\nexport const textAlign: IPropertyIdentValueDescriptor = {\n name: 'text-align',\n initialValue: 'left',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, textAlign: string) => {\n switch (textAlign) {\n case 'right':\n return TEXT_ALIGN.RIGHT;\n case 'center':\n case 'justify':\n return TEXT_ALIGN.CENTER;\n case 'left':\n default:\n return TEXT_ALIGN.LEFT;\n }\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum POSITION {\n STATIC = 0,\n RELATIVE = 1,\n ABSOLUTE = 2,\n FIXED = 3,\n STICKY = 4\n}\n\nexport const position: IPropertyIdentValueDescriptor = {\n name: 'position',\n initialValue: 'static',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, position: string) => {\n switch (position) {\n case 'relative':\n return POSITION.RELATIVE;\n case 'absolute':\n return POSITION.ABSOLUTE;\n case 'fixed':\n return POSITION.FIXED;\n case 'sticky':\n return POSITION.STICKY;\n }\n\n return POSITION.STATIC;\n }\n};\n","import {PropertyDescriptorParsingType, IPropertyListDescriptor} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentWithValue, parseFunctionArgs} from '../syntax/parser';\nimport {ZERO_LENGTH} from '../types/length-percentage';\nimport {color, Color, COLORS} from '../types/color';\nimport {isLength, Length} from '../types/length';\nimport {Context} from '../../core/context';\n\nexport type TextShadow = TextShadowItem[];\ninterface TextShadowItem {\n color: Color;\n offsetX: Length;\n offsetY: Length;\n blur: Length;\n}\n\nexport const textShadow: IPropertyListDescriptor = {\n name: 'text-shadow',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (context: Context, tokens: CSSValue[]): TextShadow => {\n if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) {\n return [];\n }\n\n return parseFunctionArgs(tokens).map((values: CSSValue[]) => {\n const shadow: TextShadowItem = {\n color: COLORS.TRANSPARENT,\n offsetX: ZERO_LENGTH,\n offsetY: ZERO_LENGTH,\n blur: ZERO_LENGTH\n };\n let c = 0;\n for (let i = 0; i < values.length; i++) {\n const token = values[i];\n if (isLength(token)) {\n if (c === 0) {\n shadow.offsetX = token;\n } else if (c === 1) {\n shadow.offsetY = token;\n } else {\n shadow.blur = token;\n }\n c++;\n } else {\n shadow.color = color.parse(context, token);\n }\n }\n return shadow;\n });\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum TEXT_TRANSFORM {\n NONE = 0,\n LOWERCASE = 1,\n UPPERCASE = 2,\n CAPITALIZE = 3\n}\n\nexport const textTransform: IPropertyIdentValueDescriptor = {\n name: 'text-transform',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, textTransform: string) => {\n switch (textTransform) {\n case 'uppercase':\n return TEXT_TRANSFORM.UPPERCASE;\n case 'lowercase':\n return TEXT_TRANSFORM.LOWERCASE;\n case 'capitalize':\n return TEXT_TRANSFORM.CAPITALIZE;\n }\n\n return TEXT_TRANSFORM.NONE;\n }\n};\n","import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {NumberValueToken, TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\nexport type Matrix = [number, number, number, number, number, number];\nexport type Transform = Matrix | null;\n\nexport const transform: IPropertyValueDescriptor = {\n name: 'transform',\n initialValue: 'none',\n prefix: true,\n type: PropertyDescriptorParsingType.VALUE,\n parse: (_context: Context, token: CSSValue) => {\n if (token.type === TokenType.IDENT_TOKEN && token.value === 'none') {\n return null;\n }\n\n if (token.type === TokenType.FUNCTION) {\n const transformFunction = SUPPORTED_TRANSFORM_FUNCTIONS[token.name];\n if (typeof transformFunction === 'undefined') {\n throw new Error(`Attempting to parse an unsupported transform function \"${token.name}\"`);\n }\n return transformFunction(token.values);\n }\n\n return null;\n }\n};\n\nconst matrix = (args: CSSValue[]): Transform => {\n const values = args.filter((arg) => arg.type === TokenType.NUMBER_TOKEN).map((arg: NumberValueToken) => arg.number);\n\n return values.length === 6 ? (values as Matrix) : null;\n};\n\n// doesn't support 3D transforms at the moment\nconst matrix3d = (args: CSSValue[]): Transform => {\n const values = args.filter((arg) => arg.type === TokenType.NUMBER_TOKEN).map((arg: NumberValueToken) => arg.number);\n\n const [a1, b1, {}, {}, a2, b2, {}, {}, {}, {}, {}, {}, a4, b4, {}, {}] = values;\n\n return values.length === 16 ? [a1, b1, a2, b2, a4, b4] : null;\n};\n\nconst SUPPORTED_TRANSFORM_FUNCTIONS: {\n [key: string]: (args: CSSValue[]) => Transform;\n} = {\n matrix: matrix,\n matrix3d: matrix3d\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {isLengthPercentage, LengthPercentage} from '../types/length-percentage';\nimport {FLAG_INTEGER, TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\nexport type TransformOrigin = [LengthPercentage, LengthPercentage];\n\nconst DEFAULT_VALUE: LengthPercentage = {\n type: TokenType.PERCENTAGE_TOKEN,\n number: 50,\n flags: FLAG_INTEGER\n};\nconst DEFAULT: TransformOrigin = [DEFAULT_VALUE, DEFAULT_VALUE];\n\nexport const transformOrigin: IPropertyListDescriptor = {\n name: 'transform-origin',\n initialValue: '50% 50%',\n prefix: true,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]) => {\n const origins: LengthPercentage[] = tokens.filter(isLengthPercentage);\n\n if (origins.length !== 2) {\n return DEFAULT;\n }\n\n return [origins[0], origins[1]];\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum VISIBILITY {\n VISIBLE = 0,\n HIDDEN = 1,\n COLLAPSE = 2\n}\n\nexport const visibility: IPropertyIdentValueDescriptor = {\n name: 'visible',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, visibility: string) => {\n switch (visibility) {\n case 'hidden':\n return VISIBILITY.HIDDEN;\n case 'collapse':\n return VISIBILITY.COLLAPSE;\n case 'visible':\n default:\n return VISIBILITY.VISIBLE;\n }\n }\n};\n","const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const decode = (base64: string): ArrayBuffer | number[] => {\n let bufferLength = base64.length * 0.75,\n len = base64.length,\n i,\n p = 0,\n encoded1,\n encoded2,\n encoded3,\n encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const buffer =\n typeof ArrayBuffer !== 'undefined' &&\n typeof Uint8Array !== 'undefined' &&\n typeof Uint8Array.prototype.slice !== 'undefined'\n ? new ArrayBuffer(bufferLength)\n : new Array(bufferLength);\n const bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return buffer;\n};\n\nexport const polyUint16Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 2) {\n bytes.push((buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n\nexport const polyUint32Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 4) {\n bytes.push((buffer[i + 3] << 24) | (buffer[i + 2] << 16) | (buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n","import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isNumberToken} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\n\ninterface zIndex {\n order: number;\n auto: boolean;\n}\n\nexport const zIndex: IPropertyValueDescriptor = {\n name: 'z-index',\n initialValue: 'auto',\n prefix: false,\n type: PropertyDescriptorParsingType.VALUE,\n parse: (_context: Context, token: CSSValue): zIndex => {\n if (token.type === TokenType.IDENT_TOKEN) {\n return {auto: true, order: 0};\n }\n\n if (isNumberToken(token)) {\n return {auto: false, order: token.number};\n }\n\n throw new Error(`Invalid z-index number parsed`);\n }\n};\n","import {CSSValue} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {ITypeDescriptor} from '../ITypeDescriptor';\nimport {Context} from '../../core/context';\n\nexport const time: ITypeDescriptor = {\n name: 'time',\n parse: (_context: Context, value: CSSValue): number => {\n if (value.type === TokenType.DIMENSION_TOKEN) {\n switch (value.unit.toLowerCase()) {\n case 's':\n return 1000 * value.number;\n case 'ms':\n return value.number;\n }\n }\n\n throw new Error(`Unsupported time type`);\n }\n};\n","import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isNumberToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const opacity: IPropertyValueDescriptor = {\n name: 'opacity',\n initialValue: '1',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: (_context: Context, token: CSSValue): number => {\n if (isNumberToken(token)) {\n return token.number;\n }\n return 1;\n }\n};\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nexport const textDecorationColor: IPropertyTypeValueDescriptor = {\n name: `text-decoration-color`,\n initialValue: 'transparent',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport const enum TEXT_DECORATION_LINE {\n NONE = 0,\n UNDERLINE = 1,\n OVERLINE = 2,\n LINE_THROUGH = 3,\n BLINK = 4\n}\n\nexport type TextDecorationLine = TEXT_DECORATION_LINE[];\n\nexport const textDecorationLine: IPropertyListDescriptor = {\n name: 'text-decoration-line',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): TextDecorationLine => {\n return tokens\n .filter(isIdentToken)\n .map((token) => {\n switch (token.value) {\n case 'underline':\n return TEXT_DECORATION_LINE.UNDERLINE;\n case 'overline':\n return TEXT_DECORATION_LINE.OVERLINE;\n case 'line-through':\n return TEXT_DECORATION_LINE.LINE_THROUGH;\n case 'none':\n return TEXT_DECORATION_LINE.BLINK;\n }\n return TEXT_DECORATION_LINE.NONE;\n })\n .filter((line) => line !== TEXT_DECORATION_LINE.NONE);\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\n\nexport type FONT_FAMILY = string;\n\nexport type FontFamily = FONT_FAMILY[];\n\nexport const fontFamily: IPropertyListDescriptor = {\n name: `font-family`,\n initialValue: '',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]) => {\n const accumulator: string[] = [];\n const results: string[] = [];\n tokens.forEach((token) => {\n switch (token.type) {\n case TokenType.IDENT_TOKEN:\n case TokenType.STRING_TOKEN:\n accumulator.push(token.value);\n break;\n case TokenType.NUMBER_TOKEN:\n accumulator.push(token.number.toString());\n break;\n case TokenType.COMMA_TOKEN:\n results.push(accumulator.join(' '));\n accumulator.length = 0;\n break;\n }\n });\n if (accumulator.length) {\n results.push(accumulator.join(' '));\n }\n return results.map((result) => (result.indexOf(' ') === -1 ? result : `'${result}'`));\n }\n};\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nexport const fontSize: IPropertyTypeValueDescriptor = {\n name: `font-size`,\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'length'\n};\n","import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken, isNumberToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const fontWeight: IPropertyValueDescriptor = {\n name: 'font-weight',\n initialValue: 'normal',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: (_context: Context, token: CSSValue): number => {\n if (isNumberToken(token)) {\n return token.number;\n }\n\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'bold':\n return 700;\n case 'normal':\n default:\n return 400;\n }\n }\n\n return 400;\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const fontVariant: IPropertyListDescriptor = {\n name: 'font-variant',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (_context: Context, tokens: CSSValue[]): string[] => {\n return tokens.filter(isIdentToken).map((token) => token.value);\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum FONT_STYLE {\n NORMAL = 'normal',\n ITALIC = 'italic',\n OBLIQUE = 'oblique'\n}\n\nexport const fontStyle: IPropertyIdentValueDescriptor = {\n name: 'font-style',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, overflow: string) => {\n switch (overflow) {\n case 'oblique':\n return FONT_STYLE.OBLIQUE;\n case 'italic':\n return FONT_STYLE.ITALIC;\n case 'normal':\n default:\n return FONT_STYLE.NORMAL;\n }\n }\n};\n","export const contains = (bit: number, value: number): boolean => (bit & value) !== 0;\n","import {TokenType} from '../syntax/tokenizer';\nimport {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport type Content = CSSValue[];\n\nexport const content: IPropertyListDescriptor = {\n name: 'content',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (_context: Context, tokens: CSSValue[]) => {\n if (tokens.length === 0) {\n return [];\n }\n\n const first = tokens[0];\n\n if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n return [];\n }\n\n return tokens;\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isNumberToken, nonWhiteSpace} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\n\nexport interface COUNTER_INCREMENT {\n counter: string;\n increment: number;\n}\n\nexport type CounterIncrement = COUNTER_INCREMENT[] | null;\n\nexport const counterIncrement: IPropertyListDescriptor = {\n name: 'counter-increment',\n initialValue: 'none',\n prefix: true,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]) => {\n if (tokens.length === 0) {\n return null;\n }\n\n const first = tokens[0];\n\n if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n return null;\n }\n\n const increments = [];\n const filtered = tokens.filter(nonWhiteSpace);\n\n for (let i = 0; i < filtered.length; i++) {\n const counter = filtered[i];\n const next = filtered[i + 1];\n if (counter.type === TokenType.IDENT_TOKEN) {\n const increment = next && isNumberToken(next) ? next.number : 1;\n increments.push({counter: counter.value, increment});\n }\n }\n\n return increments;\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken, isNumberToken, nonWhiteSpace} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport interface COUNTER_RESET {\n counter: string;\n reset: number;\n}\n\nexport type CounterReset = COUNTER_RESET[];\n\nexport const counterReset: IPropertyListDescriptor = {\n name: 'counter-reset',\n initialValue: 'none',\n prefix: true,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]) => {\n if (tokens.length === 0) {\n return [];\n }\n\n const resets = [];\n const filtered = tokens.filter(nonWhiteSpace);\n\n for (let i = 0; i < filtered.length; i++) {\n const counter = filtered[i];\n const next = filtered[i + 1];\n if (isIdentToken(counter) && counter.value !== 'none') {\n const reset = next && isNumberToken(next) ? next.number : 0;\n resets.push({counter: counter.value, reset});\n }\n }\n\n return resets;\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nimport {CSSValue, isDimensionToken} from '../syntax/parser';\nimport {time} from '../types/time';\n\nexport const duration: IPropertyListDescriptor = {\n name: 'duration',\n initialValue: '0s',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (context: Context, tokens: CSSValue[]) => {\n return tokens.filter(isDimensionToken).map((token) => time.parse(context, token));\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isStringToken} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\n\nexport interface QUOTE {\n open: string;\n close: string;\n}\n\nexport type Quotes = QUOTE[] | null;\n\nexport const quotes: IPropertyListDescriptor = {\n name: 'quotes',\n initialValue: 'none',\n prefix: true,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]) => {\n if (tokens.length === 0) {\n return null;\n }\n\n const first = tokens[0];\n\n if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n return null;\n }\n\n const quotes = [];\n const filtered = tokens.filter(isStringToken);\n\n if (filtered.length % 2 !== 0) {\n return null;\n }\n\n for (let i = 0; i < filtered.length; i += 2) {\n const open = filtered[i].value;\n const close = filtered[i + 1].value;\n quotes.push({open, close});\n }\n\n return quotes;\n }\n};\n\nexport const getQuote = (quotes: Quotes, depth: number, open: boolean): string => {\n if (!quotes) {\n return '';\n }\n\n const quote = quotes[Math.min(depth, quotes.length - 1)];\n if (!quote) {\n return '';\n }\n\n return open ? quote.open : quote.close;\n};\n","import {PropertyDescriptorParsingType, IPropertyListDescriptor} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentWithValue, parseFunctionArgs} from '../syntax/parser';\nimport {ZERO_LENGTH} from '../types/length-percentage';\nimport {color, Color} from '../types/color';\nimport {isLength, Length} from '../types/length';\nimport {Context} from '../../core/context';\n\nexport type BoxShadow = BoxShadowItem[];\ninterface BoxShadowItem {\n inset: boolean;\n color: Color;\n offsetX: Length;\n offsetY: Length;\n blur: Length;\n spread: Length;\n}\n\nexport const boxShadow: IPropertyListDescriptor = {\n name: 'box-shadow',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (context: Context, tokens: CSSValue[]): BoxShadow => {\n if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) {\n return [];\n }\n\n return parseFunctionArgs(tokens).map((values: CSSValue[]) => {\n const shadow: BoxShadowItem = {\n color: 0x000000ff,\n offsetX: ZERO_LENGTH,\n offsetY: ZERO_LENGTH,\n blur: ZERO_LENGTH,\n spread: ZERO_LENGTH,\n inset: false\n };\n let c = 0;\n for (let i = 0; i < values.length; i++) {\n const token = values[i];\n if (isIdentWithValue(token, 'inset')) {\n shadow.inset = true;\n } else if (isLength(token)) {\n if (c === 0) {\n shadow.offsetX = token;\n } else if (c === 1) {\n shadow.offsetY = token;\n } else if (c === 2) {\n shadow.blur = token;\n } else {\n shadow.spread = token;\n }\n c++;\n } else {\n shadow.color = color.parse(context, token);\n }\n }\n return shadow;\n });\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const enum PAINT_ORDER_LAYER {\n FILL,\n STROKE,\n MARKERS\n}\n\nexport type PaintOrder = PAINT_ORDER_LAYER[];\n\nexport const paintOrder: IPropertyListDescriptor = {\n name: 'paint-order',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): PaintOrder => {\n const DEFAULT_VALUE = [PAINT_ORDER_LAYER.FILL, PAINT_ORDER_LAYER.STROKE, PAINT_ORDER_LAYER.MARKERS];\n const layers: PaintOrder = [];\n\n tokens.filter(isIdentToken).forEach((token) => {\n switch (token.value) {\n case 'stroke':\n layers.push(PAINT_ORDER_LAYER.STROKE);\n break;\n case 'fill':\n layers.push(PAINT_ORDER_LAYER.FILL);\n break;\n case 'markers':\n layers.push(PAINT_ORDER_LAYER.MARKERS);\n break;\n }\n });\n DEFAULT_VALUE.forEach((value) => {\n if (layers.indexOf(value) === -1) {\n layers.push(value);\n }\n });\n\n return layers;\n }\n};\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nexport const webkitTextStrokeColor: IPropertyTypeValueDescriptor = {\n name: `-webkit-text-stroke-color`,\n initialValue: 'currentcolor',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n};\n","import {CSSValue, isDimensionToken} from '../syntax/parser';\nimport {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const webkitTextStrokeWidth: IPropertyValueDescriptor = {\n name: `-webkit-text-stroke-width`,\n initialValue: '0',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: (_context: Context, token: CSSValue): number => {\n if (isDimensionToken(token)) {\n return token.number;\n }\n return 0;\n }\n};\n","import {CSSPropertyDescriptor, PropertyDescriptorParsingType} from './IPropertyDescriptor';\nimport {backgroundClip} from './property-descriptors/background-clip';\nimport {backgroundColor} from './property-descriptors/background-color';\nimport {backgroundImage} from './property-descriptors/background-image';\nimport {backgroundOrigin} from './property-descriptors/background-origin';\nimport {backgroundPosition} from './property-descriptors/background-position';\nimport {backgroundRepeat} from './property-descriptors/background-repeat';\nimport {backgroundSize} from './property-descriptors/background-size';\nimport {\n borderBottomColor,\n borderLeftColor,\n borderRightColor,\n borderTopColor\n} from './property-descriptors/border-color';\nimport {\n borderBottomLeftRadius,\n borderBottomRightRadius,\n borderTopLeftRadius,\n borderTopRightRadius\n} from './property-descriptors/border-radius';\nimport {\n borderBottomStyle,\n borderLeftStyle,\n borderRightStyle,\n borderTopStyle\n} from './property-descriptors/border-style';\nimport {\n borderBottomWidth,\n borderLeftWidth,\n borderRightWidth,\n borderTopWidth\n} from './property-descriptors/border-width';\nimport {color} from './property-descriptors/color';\nimport {direction} from './property-descriptors/direction';\nimport {display, DISPLAY} from './property-descriptors/display';\nimport {float, FLOAT} from './property-descriptors/float';\nimport {letterSpacing} from './property-descriptors/letter-spacing';\nimport {lineBreak} from './property-descriptors/line-break';\nimport {lineHeight} from './property-descriptors/line-height';\nimport {listStyleImage} from './property-descriptors/list-style-image';\nimport {listStylePosition} from './property-descriptors/list-style-position';\nimport {listStyleType} from './property-descriptors/list-style-type';\nimport {marginBottom, marginLeft, marginRight, marginTop} from './property-descriptors/margin';\nimport {overflow, OVERFLOW} from './property-descriptors/overflow';\nimport {overflowWrap} from './property-descriptors/overflow-wrap';\nimport {paddingBottom, paddingLeft, paddingRight, paddingTop} from './property-descriptors/padding';\nimport {textAlign} from './property-descriptors/text-align';\nimport {position, POSITION} from './property-descriptors/position';\nimport {textShadow} from './property-descriptors/text-shadow';\nimport {textTransform} from './property-descriptors/text-transform';\nimport {transform} from './property-descriptors/transform';\nimport {transformOrigin} from './property-descriptors/transform-origin';\nimport {visibility, VISIBILITY} from './property-descriptors/visibility';\nimport {wordBreak} from './property-descriptors/word-break';\nimport {zIndex} from './property-descriptors/z-index';\nimport {CSSValue, isIdentToken, Parser} from './syntax/parser';\nimport {Tokenizer} from './syntax/tokenizer';\nimport {Color, color as colorType, isTransparent} from './types/color';\nimport {angle} from './types/angle';\nimport {image} from './types/image';\nimport {time} from './types/time';\nimport {opacity} from './property-descriptors/opacity';\nimport {textDecorationColor} from './property-descriptors/text-decoration-color';\nimport {textDecorationLine} from './property-descriptors/text-decoration-line';\nimport {isLengthPercentage, LengthPercentage, ZERO_LENGTH} from './types/length-percentage';\nimport {fontFamily} from './property-descriptors/font-family';\nimport {fontSize} from './property-descriptors/font-size';\nimport {isLength} from './types/length';\nimport {fontWeight} from './property-descriptors/font-weight';\nimport {fontVariant} from './property-descriptors/font-variant';\nimport {fontStyle} from './property-descriptors/font-style';\nimport {contains} from '../core/bitwise';\nimport {content} from './property-descriptors/content';\nimport {counterIncrement} from './property-descriptors/counter-increment';\nimport {counterReset} from './property-descriptors/counter-reset';\nimport {duration} from './property-descriptors/duration';\nimport {quotes} from './property-descriptors/quotes';\nimport {boxShadow} from './property-descriptors/box-shadow';\nimport {paintOrder} from './property-descriptors/paint-order';\nimport {webkitTextStrokeColor} from './property-descriptors/webkit-text-stroke-color';\nimport {webkitTextStrokeWidth} from './property-descriptors/webkit-text-stroke-width';\nimport {Context} from '../core/context';\n\nexport class CSSParsedDeclaration {\n animationDuration: ReturnType;\n backgroundClip: ReturnType;\n backgroundColor: Color;\n backgroundImage: ReturnType;\n backgroundOrigin: ReturnType;\n backgroundPosition: ReturnType;\n backgroundRepeat: ReturnType;\n backgroundSize: ReturnType;\n borderTopColor: Color;\n borderRightColor: Color;\n borderBottomColor: Color;\n borderLeftColor: Color;\n borderTopLeftRadius: ReturnType;\n borderTopRightRadius: ReturnType;\n borderBottomRightRadius: ReturnType;\n borderBottomLeftRadius: ReturnType;\n borderTopStyle: ReturnType;\n borderRightStyle: ReturnType;\n borderBottomStyle: ReturnType;\n borderLeftStyle: ReturnType;\n borderTopWidth: ReturnType;\n borderRightWidth: ReturnType;\n borderBottomWidth: ReturnType;\n borderLeftWidth: ReturnType;\n boxShadow: ReturnType;\n color: Color;\n direction: ReturnType;\n display: ReturnType;\n float: ReturnType;\n fontFamily: ReturnType;\n fontSize: LengthPercentage;\n fontStyle: ReturnType;\n fontVariant: ReturnType;\n fontWeight: ReturnType;\n letterSpacing: ReturnType;\n lineBreak: ReturnType;\n lineHeight: CSSValue;\n listStyleImage: ReturnType;\n listStylePosition: ReturnType;\n listStyleType: ReturnType;\n marginTop: CSSValue;\n marginRight: CSSValue;\n marginBottom: CSSValue;\n marginLeft: CSSValue;\n opacity: ReturnType;\n overflowX: OVERFLOW;\n overflowY: OVERFLOW;\n overflowWrap: ReturnType;\n paddingTop: LengthPercentage;\n paddingRight: LengthPercentage;\n paddingBottom: LengthPercentage;\n paddingLeft: LengthPercentage;\n paintOrder: ReturnType;\n position: ReturnType;\n textAlign: ReturnType;\n textDecorationColor: Color;\n textDecorationLine: ReturnType;\n textShadow: ReturnType;\n textTransform: ReturnType;\n transform: ReturnType;\n transformOrigin: ReturnType;\n visibility: ReturnType;\n webkitTextStrokeColor: Color;\n webkitTextStrokeWidth: ReturnType;\n wordBreak: ReturnType;\n zIndex: ReturnType;\n\n constructor(context: Context, declaration: CSSStyleDeclaration) {\n this.animationDuration = parse(context, duration, declaration.animationDuration);\n this.backgroundClip = parse(context, backgroundClip, declaration.backgroundClip);\n this.backgroundColor = parse(context, backgroundColor, declaration.backgroundColor);\n this.backgroundImage = parse(context, backgroundImage, declaration.backgroundImage);\n this.backgroundOrigin = parse(context, backgroundOrigin, declaration.backgroundOrigin);\n this.backgroundPosition = parse(context, backgroundPosition, declaration.backgroundPosition);\n this.backgroundRepeat = parse(context, backgroundRepeat, declaration.backgroundRepeat);\n this.backgroundSize = parse(context, backgroundSize, declaration.backgroundSize);\n this.borderTopColor = parse(context, borderTopColor, declaration.borderTopColor);\n this.borderRightColor = parse(context, borderRightColor, declaration.borderRightColor);\n this.borderBottomColor = parse(context, borderBottomColor, declaration.borderBottomColor);\n this.borderLeftColor = parse(context, borderLeftColor, declaration.borderLeftColor);\n this.borderTopLeftRadius = parse(context, borderTopLeftRadius, declaration.borderTopLeftRadius);\n this.borderTopRightRadius = parse(context, borderTopRightRadius, declaration.borderTopRightRadius);\n this.borderBottomRightRadius = parse(context, borderBottomRightRadius, declaration.borderBottomRightRadius);\n this.borderBottomLeftRadius = parse(context, borderBottomLeftRadius, declaration.borderBottomLeftRadius);\n this.borderTopStyle = parse(context, borderTopStyle, declaration.borderTopStyle);\n this.borderRightStyle = parse(context, borderRightStyle, declaration.borderRightStyle);\n this.borderBottomStyle = parse(context, borderBottomStyle, declaration.borderBottomStyle);\n this.borderLeftStyle = parse(context, borderLeftStyle, declaration.borderLeftStyle);\n this.borderTopWidth = parse(context, borderTopWidth, declaration.borderTopWidth);\n this.borderRightWidth = parse(context, borderRightWidth, declaration.borderRightWidth);\n this.borderBottomWidth = parse(context, borderBottomWidth, declaration.borderBottomWidth);\n this.borderLeftWidth = parse(context, borderLeftWidth, declaration.borderLeftWidth);\n this.boxShadow = parse(context, boxShadow, declaration.boxShadow);\n this.color = parse(context, color, declaration.color);\n this.direction = parse(context, direction, declaration.direction);\n this.display = parse(context, display, declaration.display);\n this.float = parse(context, float, declaration.cssFloat);\n this.fontFamily = parse(context, fontFamily, declaration.fontFamily);\n this.fontSize = parse(context, fontSize, declaration.fontSize);\n this.fontStyle = parse(context, fontStyle, declaration.fontStyle);\n this.fontVariant = parse(context, fontVariant, declaration.fontVariant);\n this.fontWeight = parse(context, fontWeight, declaration.fontWeight);\n this.letterSpacing = parse(context, letterSpacing, declaration.letterSpacing);\n this.lineBreak = parse(context, lineBreak, declaration.lineBreak);\n this.lineHeight = parse(context, lineHeight, declaration.lineHeight);\n this.listStyleImage = parse(context, listStyleImage, declaration.listStyleImage);\n this.listStylePosition = parse(context, listStylePosition, declaration.listStylePosition);\n this.listStyleType = parse(context, listStyleType, declaration.listStyleType);\n this.marginTop = parse(context, marginTop, declaration.marginTop);\n this.marginRight = parse(context, marginRight, declaration.marginRight);\n this.marginBottom = parse(context, marginBottom, declaration.marginBottom);\n this.marginLeft = parse(context, marginLeft, declaration.marginLeft);\n this.opacity = parse(context, opacity, declaration.opacity);\n const overflowTuple = parse(context, overflow, declaration.overflow);\n this.overflowX = overflowTuple[0];\n this.overflowY = overflowTuple[overflowTuple.length > 1 ? 1 : 0];\n this.overflowWrap = parse(context, overflowWrap, declaration.overflowWrap);\n this.paddingTop = parse(context, paddingTop, declaration.paddingTop);\n this.paddingRight = parse(context, paddingRight, declaration.paddingRight);\n this.paddingBottom = parse(context, paddingBottom, declaration.paddingBottom);\n this.paddingLeft = parse(context, paddingLeft, declaration.paddingLeft);\n this.paintOrder = parse(context, paintOrder, declaration.paintOrder);\n this.position = parse(context, position, declaration.position);\n this.textAlign = parse(context, textAlign, declaration.textAlign);\n this.textDecorationColor = parse(\n context,\n textDecorationColor,\n declaration.textDecorationColor ?? declaration.color\n );\n this.textDecorationLine = parse(\n context,\n textDecorationLine,\n declaration.textDecorationLine ?? declaration.textDecoration\n );\n this.textShadow = parse(context, textShadow, declaration.textShadow);\n this.textTransform = parse(context, textTransform, declaration.textTransform);\n this.transform = parse(context, transform, declaration.transform);\n this.transformOrigin = parse(context, transformOrigin, declaration.transformOrigin);\n this.visibility = parse(context, visibility, declaration.visibility);\n this.webkitTextStrokeColor = parse(context, webkitTextStrokeColor, declaration.webkitTextStrokeColor);\n this.webkitTextStrokeWidth = parse(context, webkitTextStrokeWidth, declaration.webkitTextStrokeWidth);\n this.wordBreak = parse(context, wordBreak, declaration.wordBreak);\n this.zIndex = parse(context, zIndex, declaration.zIndex);\n }\n\n isVisible(): boolean {\n return this.display > 0 && this.opacity > 0 && this.visibility === VISIBILITY.VISIBLE;\n }\n\n isTransparent(): boolean {\n return isTransparent(this.backgroundColor);\n }\n\n isTransformed(): boolean {\n return this.transform !== null;\n }\n\n isPositioned(): boolean {\n return this.position !== POSITION.STATIC;\n }\n\n isPositionedWithZIndex(): boolean {\n return this.isPositioned() && !this.zIndex.auto;\n }\n\n isFloating(): boolean {\n return this.float !== FLOAT.NONE;\n }\n\n isInlineLevel(): boolean {\n return (\n contains(this.display, DISPLAY.INLINE) ||\n contains(this.display, DISPLAY.INLINE_BLOCK) ||\n contains(this.display, DISPLAY.INLINE_FLEX) ||\n contains(this.display, DISPLAY.INLINE_GRID) ||\n contains(this.display, DISPLAY.INLINE_LIST_ITEM) ||\n contains(this.display, DISPLAY.INLINE_TABLE)\n );\n }\n}\n\nexport class CSSParsedPseudoDeclaration {\n content: ReturnType;\n quotes: ReturnType;\n\n constructor(context: Context, declaration: CSSStyleDeclaration) {\n this.content = parse(context, content, declaration.content);\n this.quotes = parse(context, quotes, declaration.quotes);\n }\n}\n\nexport class CSSParsedCounterDeclaration {\n counterIncrement: ReturnType;\n counterReset: ReturnType;\n\n constructor(context: Context, declaration: CSSStyleDeclaration) {\n this.counterIncrement = parse(context, counterIncrement, declaration.counterIncrement);\n this.counterReset = parse(context, counterReset, declaration.counterReset);\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst parse = (context: Context, descriptor: CSSPropertyDescriptor, style?: string | null) => {\n const tokenizer = new Tokenizer();\n const value = style !== null && typeof style !== 'undefined' ? style.toString() : descriptor.initialValue;\n tokenizer.write(value);\n const parser = new Parser(tokenizer.read());\n switch (descriptor.type) {\n case PropertyDescriptorParsingType.IDENT_VALUE:\n const token = parser.parseComponentValue();\n return descriptor.parse(context, isIdentToken(token) ? token.value : descriptor.initialValue);\n case PropertyDescriptorParsingType.VALUE:\n return descriptor.parse(context, parser.parseComponentValue());\n case PropertyDescriptorParsingType.LIST:\n return descriptor.parse(context, parser.parseComponentValues());\n case PropertyDescriptorParsingType.TOKEN_VALUE:\n return parser.parseComponentValue();\n case PropertyDescriptorParsingType.TYPE_VALUE:\n switch (descriptor.format) {\n case 'angle':\n return angle.parse(context, parser.parseComponentValue());\n case 'color':\n return colorType.parse(context, parser.parseComponentValue());\n case 'image':\n return image.parse(context, parser.parseComponentValue());\n case 'length':\n const length = parser.parseComponentValue();\n return isLength(length) ? length : ZERO_LENGTH;\n case 'length-percentage':\n const value = parser.parseComponentValue();\n return isLengthPercentage(value) ? value : ZERO_LENGTH;\n case 'time':\n return time.parse(context, parser.parseComponentValue());\n }\n break;\n }\n};\n","const elementDebuggerAttribute = 'data-html2canvas-debug';\nexport const enum DebuggerType {\n NONE,\n ALL,\n CLONE,\n PARSE,\n RENDER\n}\n\nconst getElementDebugType = (element: Element): DebuggerType => {\n const attribute = element.getAttribute(elementDebuggerAttribute);\n switch (attribute) {\n case 'all':\n return DebuggerType.ALL;\n case 'clone':\n return DebuggerType.CLONE;\n case 'parse':\n return DebuggerType.PARSE;\n case 'render':\n return DebuggerType.RENDER;\n default:\n return DebuggerType.NONE;\n }\n};\n\nexport const isDebugging = (element: Element, type: Omit): boolean => {\n const elementType = getElementDebugType(element);\n return elementType === DebuggerType.ALL || type === elementType;\n};\n","import {CSSParsedDeclaration} from '../css/index';\nimport {TextContainer} from './text-container';\nimport {Bounds, parseBounds} from '../css/layout/bounds';\nimport {isHTMLElementNode} from './node-parser';\nimport {Context} from '../core/context';\nimport {DebuggerType, isDebugging} from '../core/debugger';\n\nexport const enum FLAGS {\n CREATES_STACKING_CONTEXT = 1 << 1,\n CREATES_REAL_STACKING_CONTEXT = 1 << 2,\n IS_LIST_OWNER = 1 << 3,\n DEBUG_RENDER = 1 << 4\n}\n\nexport class ElementContainer {\n readonly styles: CSSParsedDeclaration;\n readonly textNodes: TextContainer[] = [];\n readonly elements: ElementContainer[] = [];\n bounds: Bounds;\n flags = 0;\n\n constructor(protected readonly context: Context, element: Element) {\n if (isDebugging(element, DebuggerType.PARSE)) {\n debugger;\n }\n\n this.styles = new CSSParsedDeclaration(context, window.getComputedStyle(element, null));\n\n if (isHTMLElementNode(element)) {\n if (this.styles.animationDuration.some((duration) => duration > 0)) {\n element.style.animationDuration = '0s';\n }\n\n if (this.styles.transform !== null) {\n // getBoundingClientRect takes transforms into account\n element.style.transform = 'none';\n }\n }\n\n this.bounds = parseBounds(this.context, element);\n\n if (isDebugging(element, DebuggerType.RENDER)) {\n this.flags |= FLAGS.DEBUG_RENDER;\n }\n }\n}\n","export const base64 =\n 'AAAAAAAAAAAAEA4AGBkAAFAaAAACAAAAAAAIABAAGAAwADgACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAAQABIAEQATAAIABAACAAQAAgAEAAIABAAVABcAAgAEAAIABAACAAQAGAAaABwAHgAgACIAI4AlgAIABAAmwCjAKgAsAC2AL4AvQDFAMoA0gBPAVYBWgEIAAgACACMANoAYgFkAWwBdAF8AX0BhQGNAZUBlgGeAaMBlQGWAasBswF8AbsBwwF0AcsBYwHTAQgA2wG/AOMBdAF8AekB8QF0AfkB+wHiAHQBfAEIAAMC5gQIAAsCEgIIAAgAFgIeAggAIgIpAggAMQI5AkACygEIAAgASAJQAlgCYAIIAAgACAAKBQoFCgUTBRMFGQUrBSsFCAAIAAgACAAIAAgACAAIAAgACABdAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABoAmgCrwGvAQgAbgJ2AggAHgEIAAgACADnAXsCCAAIAAgAgwIIAAgACAAIAAgACACKAggAkQKZAggAPADJAAgAoQKkAqwCsgK6AsICCADJAggA0AIIAAgACAAIANYC3gIIAAgACAAIAAgACABAAOYCCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAkASoB+QIEAAgACAA8AEMCCABCBQgACABJBVAFCAAIAAgACAAIAAgACAAIAAgACABTBVoFCAAIAFoFCABfBWUFCAAIAAgACAAIAAgAbQUIAAgACAAIAAgACABzBXsFfQWFBYoFigWKBZEFigWKBYoFmAWfBaYFrgWxBbkFCAAIAAgACAAIAAgACAAIAAgACAAIAMEFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAMgFCADQBQgACAAIAAgACAAIAAgACAAIAAgACAAIAO4CCAAIAAgAiQAIAAgACABAAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAD0AggACAD8AggACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIANYFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAMDvwAIAAgAJAIIAAgACAAIAAgACAAIAAgACwMTAwgACAB9BOsEGwMjAwgAKwMyAwsFYgE3A/MEPwMIAEUDTQNRAwgAWQOsAGEDCAAIAAgACAAIAAgACABpAzQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFIQUoBSwFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABtAwgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABMAEwACAAIAAgACAAIABgACAAIAAgACAC/AAgACAAyAQgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACAAIAAwAAgACAAIAAgACAAIAAgACAAIAAAARABIAAgACAAIABQASAAIAAgAIABwAEAAjgCIABsAqAC2AL0AigDQAtwC+IJIQqVAZUBWQqVAZUBlQGVAZUBlQGrC5UBlQGVAZUBlQGVAZUBlQGVAXsKlQGVAbAK6wsrDGUMpQzlDJUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAfAKAAuZA64AtwCJALoC6ADwAAgAuACgA/oEpgO6AqsD+AAIAAgAswMIAAgACAAIAIkAuwP5AfsBwwPLAwgACAAIAAgACADRA9kDCAAIAOED6QMIAAgACAAIAAgACADuA/YDCAAIAP4DyQAIAAgABgQIAAgAXQAOBAgACAAIAAgACAAIABMECAAIAAgACAAIAAgACAD8AAQBCAAIAAgAGgQiBCoECAExBAgAEAEIAAgACAAIAAgACAAIAAgACAAIAAgACAA4BAgACABABEYECAAIAAgATAQYAQgAVAQIAAgACAAIAAgACAAIAAgACAAIAFoECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAOQEIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAB+BAcACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAEABhgSMBAgACAAIAAgAlAQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAwAEAAQABAADAAMAAwADAAQABAAEAAQABAAEAAQABHATAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAdQMIAAgACAAIAAgACAAIAMkACAAIAAgAfQMIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACFA4kDCAAIAAgACAAIAOcBCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAIcDCAAIAAgACAAIAAgACAAIAAgACAAIAJEDCAAIAAgACADFAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABgBAgAZgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAbAQCBXIECAAIAHkECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABAAJwEQACjBKoEsgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAC6BMIECAAIAAgACAAIAAgACABmBAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAxwQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAGYECAAIAAgAzgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBd0FXwUIAOIF6gXxBYoF3gT5BQAGCAaKBYoFigWKBYoFigWKBYoFigWKBYoFigXWBIoFigWKBYoFigWKBYoFigWKBYsFEAaKBYoFigWKBYoFigWKBRQGCACKBYoFigWKBQgACAAIANEECAAIABgGigUgBggAJgYIAC4GMwaKBYoF0wQ3Bj4GigWKBYoFigWKBYoFigWKBYoFigWKBYoFigUIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWLBf///////wQABAAEAAQABAAEAAQABAAEAAQAAwAEAAQAAgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAQADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUAAAAFAAUAAAAFAAUAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAQAAAAUABQAFAAUABQAFAAAAAAAFAAUAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAFAAUAAQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAAABwAHAAcAAAAHAAcABwAFAAEAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAcABwAFAAUAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQABAAAAAAAAAAAAAAAFAAUABQAFAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAHAAcAAAAHAAcAAAAAAAUABQAHAAUAAQAHAAEABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwABAAUABQAFAAUAAAAAAAAAAAAAAAEAAQABAAEAAQABAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABQANAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAABQAHAAUABQAFAAAAAAAAAAcABQAFAAUABQAFAAQABAAEAAQABAAEAAQABAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUAAAAFAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAUAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAcABwAFAAcABwAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUABwAHAAUABQAFAAUAAAAAAAcABwAAAAAABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAAAAAAAAAAABQAFAAAAAAAFAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAFAAUABQAFAAUAAAAFAAUABwAAAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABwAFAAUABQAFAAAAAAAHAAcAAAAAAAcABwAFAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAAAAAAAAAHAAcABwAAAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAUABQAFAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAHAAcABQAHAAcAAAAFAAcABwAAAAcABwAFAAUAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAFAAcABwAFAAUABQAAAAUAAAAHAAcABwAHAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAHAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUAAAAFAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAUAAAAFAAUAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABwAFAAUABQAFAAUABQAAAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABQAFAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAFAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAHAAUABQAFAAUABQAFAAUABwAHAAcABwAHAAcABwAHAAUABwAHAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABwAHAAcABwAFAAUABwAHAAcAAAAAAAAAAAAHAAcABQAHAAcABwAHAAcABwAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAUABQAFAAUABQAFAAUAAAAFAAAABQAAAAAABQAFAAUABQAFAAUABQAFAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAUABQAFAAUABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABwAFAAcABwAHAAcABwAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAUABQAFAAUABwAHAAUABQAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABQAFAAcABwAHAAUABwAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAcABQAFAAUABQAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAAAAAABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAUABQAHAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAFAAUABQAFAAcABwAFAAUABwAHAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAcABwAFAAUABwAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABQAAAAAABQAFAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAcABwAAAAAAAAAAAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAcABwAFAAcABwAAAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAFAAUABQAAAAUABQAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABwAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAHAAcABQAHAAUABQAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAAABwAHAAAAAAAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAFAAUABwAFAAcABwAFAAcABQAFAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAAAAAABwAHAAcABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAFAAcABwAFAAUABQAFAAUABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAUABQAFAAcABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABQAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAAAAAAFAAUABwAHAAcABwAFAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAHAAUABQAFAAUABQAFAAUABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAABQAAAAUABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAHAAcAAAAFAAUAAAAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABQAFAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAABQAFAAUABQAFAAUABQAAAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAFAAUABQAFAAUADgAOAA4ADgAOAA4ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAMAAwADAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAAAAAAAAAAAAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAAAAAAAAAAAAsADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwACwAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAADgAOAA4AAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAAAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4AAAAOAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAAAAAAAAAAAA4AAAAOAAAAAAAAAAAADgAOAA4AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAA=';\nexport const byteLength = 19616;\n","const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const encode = (arraybuffer: ArrayBuffer): string => {\n let bytes = new Uint8Array(arraybuffer),\n i,\n len = bytes.length,\n base64 = '';\n\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n\n return base64;\n};\n\nexport const decode = (base64: string): ArrayBuffer => {\n let bufferLength = base64.length * 0.75,\n len = base64.length,\n i,\n p = 0,\n encoded1,\n encoded2,\n encoded3,\n encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const arraybuffer = new ArrayBuffer(bufferLength),\n bytes = new Uint8Array(arraybuffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return arraybuffer;\n};\n","import {decode, polyUint16Array, polyUint32Array} from './Util';\n\nexport type int = number;\n\n/** Shift size for getting the index-2 table offset. */\nexport const UTRIE2_SHIFT_2 = 5;\n\n/** Shift size for getting the index-1 table offset. */\nexport const UTRIE2_SHIFT_1 = 6 + 5;\n\n/**\n * Shift size for shifting left the index array values.\n * Increases possible data size with 16-bit index values at the cost\n * of compactability.\n * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY.\n */\nexport const UTRIE2_INDEX_SHIFT = 2;\n\n/**\n * Difference between the two shift sizes,\n * for getting an index-1 offset from an index-2 offset. 6=11-5\n */\nexport const UTRIE2_SHIFT_1_2 = UTRIE2_SHIFT_1 - UTRIE2_SHIFT_2;\n\n/**\n * The part of the index-2 table for U+D800..U+DBFF stores values for\n * lead surrogate code _units_ not code _points_.\n * Values for lead surrogate code _points_ are indexed with this portion of the table.\n * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.)\n */\nexport const UTRIE2_LSCP_INDEX_2_OFFSET = 0x10000 >> UTRIE2_SHIFT_2;\n\n/** Number of entries in a data block. 32=0x20 */\nexport const UTRIE2_DATA_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_2;\n/** Mask for getting the lower bits for the in-data-block offset. */\nexport const UTRIE2_DATA_MASK = UTRIE2_DATA_BLOCK_LENGTH - 1;\n\nexport const UTRIE2_LSCP_INDEX_2_LENGTH = 0x400 >> UTRIE2_SHIFT_2;\n/** Count the lengths of both BMP pieces. 2080=0x820 */\nexport const UTRIE2_INDEX_2_BMP_LENGTH = UTRIE2_LSCP_INDEX_2_OFFSET + UTRIE2_LSCP_INDEX_2_LENGTH;\n/**\n * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.\n * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2.\n */\nexport const UTRIE2_UTF8_2B_INDEX_2_OFFSET = UTRIE2_INDEX_2_BMP_LENGTH;\nexport const UTRIE2_UTF8_2B_INDEX_2_LENGTH = 0x800 >> 6; /* U+0800 is the first code point after 2-byte UTF-8 */\n/**\n * The index-1 table, only used for supplementary code points, at offset 2112=0x840.\n * Variable length, for code points up to highStart, where the last single-value range starts.\n * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1.\n * (For 0x100000 supplementary code points U+10000..U+10ffff.)\n *\n * The part of the index-2 table for supplementary code points starts\n * after this index-1 table.\n *\n * Both the index-1 table and the following part of the index-2 table\n * are omitted completely if there is only BMP data.\n */\nexport const UTRIE2_INDEX_1_OFFSET = UTRIE2_UTF8_2B_INDEX_2_OFFSET + UTRIE2_UTF8_2B_INDEX_2_LENGTH;\n\n/**\n * Number of index-1 entries for the BMP. 32=0x20\n * This part of the index-1 table is omitted from the serialized form.\n */\nexport const UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> UTRIE2_SHIFT_1;\n\n/** Number of entries in an index-2 block. 64=0x40 */\nexport const UTRIE2_INDEX_2_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_1_2;\n/** Mask for getting the lower bits for the in-index-2-block offset. */\nexport const UTRIE2_INDEX_2_MASK = UTRIE2_INDEX_2_BLOCK_LENGTH - 1;\n\nconst slice16 = (view: number[] | Uint16Array, start: number, end?: number) => {\n if (view.slice) {\n return view.slice(start, end);\n }\n\n return new Uint16Array(Array.prototype.slice.call(view, start, end));\n};\n\nconst slice32 = (view: number[] | Uint32Array, start: number, end?: number) => {\n if (view.slice) {\n return view.slice(start, end);\n }\n\n return new Uint32Array(Array.prototype.slice.call(view, start, end));\n};\n\nexport const createTrieFromBase64 = (base64: string, _byteLength: number): Trie => {\n const buffer = decode(base64);\n const view32 = Array.isArray(buffer) ? polyUint32Array(buffer) : new Uint32Array(buffer);\n const view16 = Array.isArray(buffer) ? polyUint16Array(buffer) : new Uint16Array(buffer);\n const headerLength = 24;\n\n const index = slice16(view16, headerLength / 2, view32[4] / 2);\n const data =\n view32[5] === 2\n ? slice16(view16, (headerLength + view32[4]) / 2)\n : slice32(view32, Math.ceil((headerLength + view32[4]) / 4));\n\n return new Trie(view32[0], view32[1], view32[2], view32[3], index, data);\n};\n\nexport class Trie {\n initialValue: int;\n errorValue: int;\n highStart: int;\n highValueIndex: int;\n index: Uint16Array | number[];\n data: Uint32Array | Uint16Array | number[];\n\n constructor(\n initialValue: int,\n errorValue: int,\n highStart: int,\n highValueIndex: int,\n index: Uint16Array | number[],\n data: Uint32Array | Uint16Array | number[]\n ) {\n this.initialValue = initialValue;\n this.errorValue = errorValue;\n this.highStart = highStart;\n this.highValueIndex = highValueIndex;\n this.index = index;\n this.data = data;\n }\n\n /**\n * Get the value for a code point as stored in the Trie.\n *\n * @param codePoint the code point\n * @return the value\n */\n get(codePoint: number): number {\n let ix;\n if (codePoint >= 0) {\n if (codePoint < 0x0d800 || (codePoint > 0x0dbff && codePoint <= 0x0ffff)) {\n // Ordinary BMP code point, excluding leading surrogates.\n // BMP uses a single level lookup. BMP index starts at offset 0 in the Trie2 index.\n // 16 bit data is stored in the index array itself.\n ix = this.index[codePoint >> UTRIE2_SHIFT_2];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n\n if (codePoint <= 0xffff) {\n // Lead Surrogate Code Point. A Separate index section is stored for\n // lead surrogate code units and code points.\n // The main index has the code unit data.\n // For this function, we need the code point data.\n // Note: this expression could be refactored for slightly improved efficiency, but\n // surrogate code points will be so rare in practice that it's not worth it.\n ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET + ((codePoint - 0xd800) >> UTRIE2_SHIFT_2)];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n\n if (codePoint < this.highStart) {\n // Supplemental code point, use two-level lookup.\n ix = UTRIE2_INDEX_1_OFFSET - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH + (codePoint >> UTRIE2_SHIFT_1);\n ix = this.index[ix];\n ix += (codePoint >> UTRIE2_SHIFT_2) & UTRIE2_INDEX_2_MASK;\n ix = this.index[ix];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n if (codePoint <= 0x10ffff) {\n return this.data[this.highValueIndex];\n }\n }\n\n // Fall through. The code point is outside of the legal range of 0..0x10ffff.\n return this.errorValue;\n }\n}\n","import {base64, byteLength} from './grapheme-break-trie';\nimport {createTrieFromBase64} from 'utrie';\n\nconst Other = 0;\nconst Prepend = 1;\nconst CR = 2;\nconst LF = 3;\nconst Control = 4;\nconst Extend = 5;\nconst Regional_Indicator = 6;\nconst SpacingMark = 7;\nconst L = 8;\nconst V = 9;\nconst T = 10;\nconst LV = 11;\nconst LVT = 12;\nconst ZWJ = 13;\nconst Extended_Pictographic = 14;\nconst RI = 15;\n\nexport const classes: {[key: string]: number} = {\n Other,\n Prepend,\n CR,\n LF,\n Control,\n Extend,\n Regional_Indicator,\n SpacingMark,\n L,\n V,\n T,\n LV,\n LVT,\n ZWJ,\n Extended_Pictographic,\n RI,\n};\n\nexport const toCodePoints = (str: string): number[] => {\n const codePoints = [];\n let i = 0;\n const length = str.length;\n while (i < length) {\n const value = str.charCodeAt(i++);\n if (value >= 0xd800 && value <= 0xdbff && i < length) {\n const extra = str.charCodeAt(i++);\n if ((extra & 0xfc00) === 0xdc00) {\n codePoints.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000);\n } else {\n codePoints.push(value);\n i--;\n }\n } else {\n codePoints.push(value);\n }\n }\n return codePoints;\n};\n\nexport const fromCodePoint = (...codePoints: number[]): string => {\n if (String.fromCodePoint) {\n return String.fromCodePoint(...codePoints);\n }\n\n const length = codePoints.length;\n if (!length) {\n return '';\n }\n\n const codeUnits = [];\n\n let index = -1;\n let result = '';\n while (++index < length) {\n let codePoint = codePoints[index];\n if (codePoint <= 0xffff) {\n codeUnits.push(codePoint);\n } else {\n codePoint -= 0x10000;\n codeUnits.push((codePoint >> 10) + 0xd800, (codePoint % 0x400) + 0xdc00);\n }\n if (index + 1 === length || codeUnits.length > 0x4000) {\n result += String.fromCharCode(...codeUnits);\n codeUnits.length = 0;\n }\n }\n return result;\n};\n\nexport const UnicodeTrie = createTrieFromBase64(base64, byteLength);\n\nexport const BREAK_NOT_ALLOWED = '×';\nexport const BREAK_ALLOWED = '÷';\n\nexport type BREAK_OPPORTUNITIES = typeof BREAK_NOT_ALLOWED | typeof BREAK_ALLOWED;\n\nexport const codePointToClass = (codePoint: number): number => UnicodeTrie.get(codePoint);\n\nconst _graphemeBreakAtIndex = (_codePoints: number[], classTypes: number[], index: number): BREAK_OPPORTUNITIES => {\n let prevIndex = index - 2;\n let prev = classTypes[prevIndex];\n const current = classTypes[index - 1];\n const next = classTypes[index];\n // GB3 Do not break between a CR and LF\n if (current === CR && next === LF) {\n return BREAK_NOT_ALLOWED;\n }\n\n // GB4 Otherwise, break before and after controls.\n if (current === CR || current === LF || current === Control) {\n return BREAK_ALLOWED;\n }\n\n // GB5\n if (next === CR || next === LF || next === Control) {\n return BREAK_ALLOWED;\n }\n\n // Do not break Hangul syllable sequences.\n // GB6\n if (current === L && [L, V, LV, LVT].indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // GB7\n if ((current === LV || current === V) && (next === V || next === T)) {\n return BREAK_NOT_ALLOWED;\n }\n\n // GB8\n if ((current === LVT || current === T) && next === T) {\n return BREAK_NOT_ALLOWED;\n }\n\n // GB9 Do not break before extending characters or ZWJ.\n if (next === ZWJ || next === Extend) {\n return BREAK_NOT_ALLOWED;\n }\n // Do not break before SpacingMarks, or after Prepend characters.\n // GB9a\n if (next === SpacingMark) {\n return BREAK_NOT_ALLOWED;\n }\n\n // GB9a\n if (current === Prepend) {\n return BREAK_NOT_ALLOWED;\n }\n\n // GB11 Do not break within emoji modifier sequences or emoji zwj sequences.\n if (current === ZWJ && next === Extended_Pictographic) {\n while (prev === Extend) {\n prev = classTypes[--prevIndex];\n }\n if (prev === Extended_Pictographic) {\n return BREAK_NOT_ALLOWED;\n }\n }\n\n // GB12 Do not break within emoji flag sequences.\n // That is, do not break between regional indicator (RI) symbols\n // if there is an odd number of RI characters before the break point.\n if (current === RI && next === RI) {\n let countRI = 0;\n while (prev === RI) {\n countRI++;\n prev = classTypes[--prevIndex];\n }\n if (countRI % 2 === 0) {\n return BREAK_NOT_ALLOWED;\n }\n }\n\n return BREAK_ALLOWED;\n};\n\nexport const graphemeBreakAtIndex = (codePoints: number[], index: number): BREAK_OPPORTUNITIES => {\n // GB1 Break at the start and end of text, unless the text is empty.\n if (index === 0) {\n return BREAK_ALLOWED;\n }\n\n // GB2\n if (index >= codePoints.length) {\n return BREAK_ALLOWED;\n }\n\n const classTypes = codePoints.map(codePointToClass);\n return _graphemeBreakAtIndex(codePoints, classTypes, index);\n};\n\nexport const GraphemeBreaker = (str: string) => {\n const codePoints = toCodePoints(str);\n const length = codePoints.length;\n let index = 0;\n let lastEnd = 0;\n const classTypes = codePoints.map(codePointToClass);\n\n return {\n next: () => {\n if (index >= length) {\n return {done: true, value: null};\n }\n\n let graphemeBreak = BREAK_NOT_ALLOWED;\n while (\n index < length &&\n (graphemeBreak = _graphemeBreakAtIndex(codePoints, classTypes, ++index)) === BREAK_NOT_ALLOWED\n ) {}\n\n if (graphemeBreak !== BREAK_NOT_ALLOWED || index === length) {\n const value = fromCodePoint.apply(null, codePoints.slice(lastEnd, index));\n lastEnd = index;\n return {value, done: false};\n }\n\n return {done: true, value: null};\n while (index < length) {}\n\n return {done: true, value: null};\n },\n };\n};\n\nexport const splitGraphemes = (str: string): string[] => {\n const breaker = GraphemeBreaker(str);\n\n const graphemes = [];\n let bk;\n\n while (!(bk = breaker.next()).done) {\n if (bk.value) {\n graphemes.push(bk.value.slice());\n }\n }\n\n return graphemes;\n};\n","import {Bounds} from '../css/layout/bounds';\nimport {\n isBodyElement,\n isCanvasElement,\n isCustomElement,\n isElementNode,\n isHTMLElementNode,\n isIFrameElement,\n isImageElement,\n isScriptElement,\n isSelectElement,\n isSlotElement,\n isStyleElement,\n isSVGElementNode,\n isTextareaElement,\n isTextNode,\n isVideoElement\n} from './node-parser';\nimport {isIdentToken, nonFunctionArgSeparator} from '../css/syntax/parser';\nimport {TokenType} from '../css/syntax/tokenizer';\nimport {CounterState, createCounterText} from '../css/types/functions/counter';\nimport {LIST_STYLE_TYPE, listStyleType} from '../css/property-descriptors/list-style-type';\nimport {CSSParsedCounterDeclaration, CSSParsedPseudoDeclaration} from '../css/index';\nimport {getQuote} from '../css/property-descriptors/quotes';\nimport {Context} from '../core/context';\nimport {DebuggerType, isDebugging} from '../core/debugger';\n\nexport interface CloneOptions {\n ignoreElements?: (element: Element) => boolean;\n onclone?: (document: Document, element: HTMLElement) => void;\n allowTaint?: boolean;\n}\n\nexport interface WindowOptions {\n scrollX: number;\n scrollY: number;\n windowWidth: number;\n windowHeight: number;\n}\n\nexport type CloneConfigurations = CloneOptions & {\n inlineImages: boolean;\n copyStyles: boolean;\n};\n\nconst IGNORE_ATTRIBUTE = 'data-html2canvas-ignore';\n\nexport class DocumentCloner {\n private readonly scrolledElements: [Element, number, number][];\n private readonly referenceElement: HTMLElement;\n clonedReferenceElement?: HTMLElement;\n private readonly documentElement: HTMLElement;\n private readonly counters: CounterState;\n private quoteDepth: number;\n\n constructor(\n private readonly context: Context,\n element: HTMLElement,\n private readonly options: CloneConfigurations\n ) {\n this.scrolledElements = [];\n this.referenceElement = element;\n this.counters = new CounterState();\n this.quoteDepth = 0;\n if (!element.ownerDocument) {\n throw new Error('Cloned element does not have an owner document');\n }\n\n this.documentElement = this.cloneNode(element.ownerDocument.documentElement, false) as HTMLElement;\n }\n\n toIFrame(ownerDocument: Document, windowSize: Bounds): Promise {\n const iframe: HTMLIFrameElement = createIFrameContainer(ownerDocument, windowSize);\n\n if (!iframe.contentWindow) {\n return Promise.reject(`Unable to find iframe window`);\n }\n\n const scrollX = (ownerDocument.defaultView as Window).pageXOffset;\n const scrollY = (ownerDocument.defaultView as Window).pageYOffset;\n\n const cloneWindow = iframe.contentWindow;\n const documentClone: Document = cloneWindow.document;\n\n /* Chrome doesn't detect relative background-images assigned in inline