html2canvas-pro 1.5.6 → 1.5.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/dist/html2canvas-pro.esm.js +21 -15
- package/dist/html2canvas-pro.esm.js.map +1 -1
- package/dist/html2canvas-pro.js +21 -15
- package/dist/html2canvas-pro.js.map +1 -1
- package/dist/html2canvas-pro.min.js +2 -2
- package/dist/lib/dom/node-parser.js +2 -1
- package/dist/lib/dom/node-parser.js.map +1 -1
- package/dist/lib/render/canvas/canvas-renderer.js +18 -13
- package/dist/lib/render/canvas/canvas-renderer.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"html2canvas-pro.esm.js","sources":["../node_modules/tslib/tslib.es6.js","../../src/css/layout/bounds.ts","../node_modules/src/Util.ts","../node_modules/css-line-break/node_modules/src/Util.ts","../node_modules/css-line-break/node_modules/src/Trie.ts","../node_modules/css-line-break/node_modules/utrie/node_modules/src/index.ts","../node_modules/src/linebreak-trie.ts","../node_modules/src/LineBreak.ts","../../src/css/syntax/tokenizer.ts","../../src/css/syntax/parser.ts","../../src/css/types/length.ts","../../src/css/types/length-percentage.ts","../../src/css/types/angle.ts","../../src/css/types/color-utilities.ts","../../src/css/types/color-spaces/srgb.ts","../../src/css/types/color-spaces/p3.ts","../../src/css/types/color-spaces/a98.ts","../../src/css/types/color-spaces/pro-photo.ts","../../src/css/types/color-spaces/rec2020.ts","../../src/css/types/color.ts","../../src/css/property-descriptors/background-clip.ts","../../src/css/property-descriptors/background-color.ts","../../src/css/types/functions/gradient.ts","../../src/css/types/functions/linear-gradient.ts","../../src/css/types/functions/-prefix-linear-gradient.ts","../../src/css/types/functions/-webkit-gradient.ts","../../src/css/types/functions/radial-gradient.ts","../../src/css/types/functions/-prefix-radial-gradient.ts","../../src/css/types/image.ts","../../src/css/property-descriptors/background-image.ts","../../src/css/property-descriptors/background-origin.ts","../../src/css/property-descriptors/background-position.ts","../../src/css/property-descriptors/background-repeat.ts","../../src/css/property-descriptors/background-size.ts","../../src/css/property-descriptors/border-color.ts","../../src/css/property-descriptors/border-radius.ts","../../src/css/property-descriptors/border-style.ts","../../src/css/property-descriptors/border-width.ts","../../src/css/property-descriptors/color.ts","../../src/css/property-descriptors/direction.ts","../../src/css/property-descriptors/display.ts","../../src/css/property-descriptors/float.ts","../../src/css/property-descriptors/letter-spacing.ts","../../src/css/property-descriptors/line-break.ts","../../src/css/property-descriptors/line-height.ts","../../src/css/property-descriptors/list-style-image.ts","../../src/css/property-descriptors/list-style-position.ts","../../src/css/property-descriptors/list-style-type.ts","../../src/css/property-descriptors/margin.ts","../../src/css/property-descriptors/overflow.ts","../../src/css/property-descriptors/overflow-wrap.ts","../../src/css/property-descriptors/padding.ts","../../src/css/property-descriptors/text-align.ts","../../src/css/property-descriptors/position.ts","../../src/css/property-descriptors/text-shadow.ts","../../src/css/property-descriptors/text-transform.ts","../../src/css/property-descriptors/transform.ts","../../src/css/property-descriptors/transform-origin.ts","../../src/css/property-descriptors/visibility.ts","../../src/css/property-descriptors/word-break.ts","../../src/css/property-descriptors/z-index.ts","../../src/css/types/time.ts","../../src/css/property-descriptors/opacity.ts","../../src/css/property-descriptors/text-decoration-color.ts","../../src/css/property-descriptors/text-decoration-line.ts","../../src/css/property-descriptors/font-family.ts","../../src/css/property-descriptors/font-size.ts","../../src/css/property-descriptors/font-weight.ts","../../src/css/property-descriptors/font-variant.ts","../../src/css/property-descriptors/font-style.ts","../../src/core/bitwise.ts","../../src/css/property-descriptors/content.ts","../../src/css/property-descriptors/counter-increment.ts","../../src/css/property-descriptors/counter-reset.ts","../../src/css/property-descriptors/duration.ts","../../src/css/property-descriptors/quotes.ts","../../src/css/property-descriptors/box-shadow.ts","../../src/css/property-descriptors/paint-order.ts","../../src/css/property-descriptors/webkit-text-stroke-color.ts","../../src/css/property-descriptors/webkit-text-stroke-width.ts","../../src/css/property-descriptors/object-fit.ts","../../src/css/index.ts","../../src/core/debugger.ts","../../src/dom/element-container.ts","../node_modules/src/grapheme-break-trie.ts","../node_modules/text-segmentation/node_modules/src/Util.ts","../node_modules/text-segmentation/node_modules/src/Trie.ts","../node_modules/text-segmentation/node_modules/utrie/node_modules/src/index.ts","../node_modules/src/GraphemeBreak.ts","../../src/core/features.ts","../../src/css/layout/text.ts","../../src/dom/text-container.ts","../../src/dom/replaced-elements/image-element-container.ts","../../src/dom/replaced-elements/canvas-element-container.ts","../../src/dom/replaced-elements/svg-element-container.ts","../../src/dom/elements/li-element-container.ts","../../src/dom/elements/ol-element-container.ts","../../src/dom/replaced-elements/input-element-container.ts","../../src/dom/elements/select-element-container.ts","../../src/dom/elements/textarea-element-container.ts","../../src/dom/replaced-elements/iframe-element-container.ts","../../src/dom/node-parser.ts","../../src/css/types/functions/counter.ts","../../src/dom/document-cloner.ts","../../src/core/cache-storage.ts","../../src/render/vector.ts","../../src/render/bezier-curve.ts","../../src/render/bound-curves.ts","../../src/render/effects.ts","../../src/render/path.ts","../../src/render/stacking-context.ts","../../src/render/border.ts","../../src/render/box-sizing.ts","../../src/render/background.ts","../../src/core/util.ts","../../src/render/font-metrics.ts","../../src/render/renderer.ts","../../src/render/canvas/canvas-renderer.ts","../../src/render/canvas/foreignobject-renderer.ts","../../src/core/logger.ts","../../src/core/context.ts","../../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","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","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","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 {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","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","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<number> = {\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 { Context } from '../../core/context';\nimport { CSSValue, isDimensionToken, isNumberToken, nonFunctionArgSeparator } from '../syntax/parser';\nimport { rgb2rgbLinear, rgbLinear2xyz, srgbLinear2rgb, xyz2rgbLinear } from './color-spaces/srgb';\nimport { TokenType } from '../syntax/tokenizer';\nimport { angle, deg } from './angle';\nimport { getAbsoluteValue, isLengthPercentage } from './length-percentage';\n\ntype Color = number;\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\nexport const 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\nexport const isRelativeTransform = (tokens: CSSValue[]): boolean =>\n (tokens[0].type === TokenType.IDENT_TOKEN ? tokens[0].value : 'unknown') === 'from';\n\nexport const clamp = (value: number, min: number, max: number) => {\n return Math.min(Math.max(value, min), max);\n};\n\nexport const multiplyMatrices = (A: number[], B: number[]): [number, number, number] => {\n return [\n A[0] * B[0] + A[1] * B[1] + A[2] * B[2],\n A[3] * B[0] + A[4] * B[1] + A[5] * B[2],\n A[6] * B[0] + A[7] * B[1] + A[8] * B[2]\n ];\n};\n\nexport const packSrgb = (args: number[]): number => {\n return pack(\n clamp(Math.round(args[0] * 255), 0, 255),\n clamp(Math.round(args[1] * 255), 0, 255),\n clamp(Math.round(args[2] * 255), 0, 255),\n clamp(args[3], 0, 1)\n );\n};\n\nexport const packSrgbLinear = ([r, g, b, a]: [number, number, number, number]): number => {\n const rgb = srgbLinear2rgb([r, g, b]);\n return pack(\n clamp(Math.round(rgb[0] * 255), 0, 255),\n clamp(Math.round(rgb[1] * 255), 0, 255),\n clamp(Math.round(rgb[2] * 255), 0, 255),\n a\n );\n};\n\nexport const packXYZ = (args: number[]): number => {\n const srgb_linear = xyz2rgbLinear([args[0], args[1], args[2]]);\n return packSrgbLinear([srgb_linear[0], srgb_linear[1], srgb_linear[2], args[3]]);\n};\n\nexport const packLab = (_context: Context, args: CSSValue[]): number => {\n if (isRelativeTransform(args.filter(nonFunctionArgSeparator))) {\n throw new Error('Relative color not supported for lab()');\n }\n const [l, a, b, alpha] = extractLabComponents(args),\n rgb = srgbLinear2rgb(xyz2rgbLinear(lab2xyz([l, a, b])));\n\n return pack(\n clamp(Math.round(rgb[0] * 255), 0, 255),\n clamp(Math.round(rgb[1] * 255), 0, 255),\n clamp(Math.round(rgb[2] * 255), 0, 255),\n alpha\n );\n};\n\nexport const packOkLab = (_context: Context, args: CSSValue[]): number => {\n if (isRelativeTransform(args.filter(nonFunctionArgSeparator))) {\n throw new Error('Relative color not supported for oklab()');\n }\n const [l, a, b, alpha] = extractLabComponents(args),\n rgb = srgbLinear2rgb(xyz2rgbLinear(oklab2xyz([l, a, b])));\n\n return pack(\n clamp(Math.round(rgb[0] * 255), 0, 255),\n clamp(Math.round(rgb[1] * 255), 0, 255),\n clamp(Math.round(rgb[2] * 255), 0, 255),\n alpha\n );\n};\n\nexport const packOkLch = (_context: Context, args: CSSValue[]): number => {\n if (isRelativeTransform(args.filter(nonFunctionArgSeparator))) {\n throw new Error('Relative color not supported for oklch()');\n }\n const [l, c, h, alpha] = extractOkLchComponents(args),\n rgb = srgbLinear2rgb(xyz2rgbLinear(oklab2xyz(lch2lab([l, c, h]))));\n\n return pack(\n clamp(Math.round(rgb[0] * 255), 0, 255),\n clamp(Math.round(rgb[1] * 255), 0, 255),\n clamp(Math.round(rgb[2] * 255), 0, 255),\n alpha\n );\n};\n\nexport const packLch = (_context: Context, args: CSSValue[]): number => {\n if (isRelativeTransform(args.filter(nonFunctionArgSeparator))) {\n throw new Error('Relative color not supported for lch()');\n }\n const [l, c, h, a] = extractLchComponents(args),\n rgb = srgbLinear2rgb(xyz2rgbLinear(lab2xyz(lch2lab([l, c, h]))));\n\n return pack(\n clamp(Math.round(rgb[0] * 255), 0, 255),\n clamp(Math.round(rgb[1] * 255), 0, 255),\n clamp(Math.round(rgb[2] * 255), 0, 255),\n a\n );\n};\n\nexport const extractHslComponents = (context: Context, args: CSSValue[]): [number, number, number, number] => {\n const tokens = args.filter(nonFunctionArgSeparator),\n [hue, saturation, lightness, alpha] = tokens,\n h = (hue.type === TokenType.NUMBER_TOKEN ? deg(hue.number) : angle.parse(context, hue)) / (Math.PI * 2),\n s = isLengthPercentage(saturation) ? saturation.number / 100 : 0,\n l = isLengthPercentage(lightness) ? lightness.number / 100 : 0,\n a = typeof alpha !== 'undefined' && isLengthPercentage(alpha) ? getAbsoluteValue(alpha, 1) : 1;\n return [h, s, l, a];\n};\n\nexport const packHSL = (context: Context, args: CSSValue[]): number => {\n if (isRelativeTransform(args)) {\n throw new Error('Relative color not supported for hsl()');\n }\n const [h, s, l, a] = extractHslComponents(context, args),\n rgb = hsl2rgb([h, s, l]);\n return pack(rgb[0] * 255, rgb[1] * 255, rgb[2] * 255, s === 0 ? 1 : a);\n};\n\nexport const extractLchComponents = (args: CSSValue[]): [number, number, number, number] => {\n const tokens = args.filter(nonFunctionArgSeparator),\n l = isLengthPercentage(tokens[0]) ? tokens[0].number : 0,\n c = isLengthPercentage(tokens[1]) ? tokens[1].number : 0,\n h = isNumberToken(tokens[2]) || isDimensionToken(tokens[2]) ? tokens[2].number : 0,\n a = typeof tokens[4] !== 'undefined' && isLengthPercentage(tokens[4]) ? getAbsoluteValue(tokens[4], 1) : 1;\n\n return [l, c, h, a];\n};\n\nexport const extractLabComponents = (args: CSSValue[]): [number, number, number, number] => {\n const tokens = args.filter(nonFunctionArgSeparator),\n // eslint-disable-next-line prettier/prettier\n l =\n tokens[0].type === TokenType.PERCENTAGE_TOKEN\n ? tokens[0].number / 100\n : isNumberToken(tokens[0])\n ? tokens[0].number\n : 0,\n // eslint-disable-next-line prettier/prettier\n a =\n tokens[1].type === TokenType.PERCENTAGE_TOKEN\n ? tokens[1].number / 100\n : isNumberToken(tokens[1])\n ? tokens[1].number\n : 0,\n b = isNumberToken(tokens[2]) || isDimensionToken(tokens[2]) ? tokens[2].number : 0,\n alpha = typeof tokens[4] !== 'undefined' && isLengthPercentage(tokens[4]) ? getAbsoluteValue(tokens[4], 1) : 1;\n\n return [l, a, b, alpha];\n};\n\nexport const extractOkLchComponents = (args: CSSValue[]): [number, number, number, number] => {\n const tokens = args.filter(nonFunctionArgSeparator),\n // eslint-disable-next-line prettier/prettier\n l =\n tokens[0].type === TokenType.PERCENTAGE_TOKEN\n ? tokens[0].number / 100\n : isNumberToken(tokens[0])\n ? tokens[0].number\n : 0,\n // eslint-disable-next-line prettier/prettier\n c =\n tokens[1].type === TokenType.PERCENTAGE_TOKEN\n ? tokens[1].number / 100\n : isNumberToken(tokens[1])\n ? tokens[1].number\n : 0,\n h = isNumberToken(tokens[2]) || isDimensionToken(tokens[2]) ? tokens[2].number : 0,\n a = typeof tokens[4] !== 'undefined' && isLengthPercentage(tokens[4]) ? getAbsoluteValue(tokens[4], 1) : 1;\n\n return [l, c, h, a];\n};\n\n/**\n * Convert D65 to D50\n *\n * @param xyz\n */\nexport const d65toD50 = (xyz: [number, number, number]): [number, number, number] => {\n return multiplyMatrices(\n // eslint-disable-next-line prettier/prettier\n [\n 1.0479297925449969, 0.022946870601609652, -0.05019226628920524, 0.02962780877005599, 0.9904344267538799,\n -0.017073799063418826, -0.009243040646204504, 0.015055191490298152, 0.7518742814281371\n ],\n xyz\n );\n};\n\n/**\n * Convert D50 to D65\n *\n * @param xyz\n */\nexport const d50toD65 = (xyz: [number, number, number]): [number, number, number] => {\n return multiplyMatrices(\n // eslint-disable-next-line prettier/prettier\n [\n 0.955473421488075, -0.02309845494876471, 0.06325924320057072, -0.0283697093338637, 1.0099953980813041,\n 0.021041441191917323, 0.012314014864481998, -0.020507649298898964, 1.330365926242124\n ],\n xyz\n );\n};\n\nexport const 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 hsl2rgb = ([h, s, l]: [number, number, number]): [number, number, number] => {\n if (s === 0) {\n return [l * 255, l * 255, l * 255];\n }\n const t2 = l <= 0.5 ? l * (s + 1) : l + s - l * s,\n t1 = l * 2 - t2,\n r = hue2rgb(t1, t2, h + 1 / 3),\n g = hue2rgb(t1, t2, h),\n b = hue2rgb(t1, t2, h - 1 / 3);\n\n return [r, g, b];\n};\n\n/**\n * Convert lch to OKLab\n *\n * @param l\n * @param c\n * @param h\n */\nconst lch2lab = ([l, c, h]: [number, number, number]): [number, number, number] => {\n if (c < 0) {\n c = 0;\n }\n if (isNaN(h)) {\n h = 0;\n }\n return [l, c * Math.cos((h * Math.PI) / 180), c * Math.sin((h * Math.PI) / 180)];\n};\n\n/**\n * Convert OKLab to XYZ relative to D65\n *\n * @param lab\n */\nconst oklab2xyz = (lab: [number, number, number]): [number, number, number] => {\n const LMSg = multiplyMatrices(\n // eslint-disable-next-line prettier/prettier\n [\n 1, 0.3963377773761749, 0.2158037573099136, 1, -0.1055613458156586, -0.0638541728258133, 1,\n -0.0894841775298119, -1.2914855480194092\n ],\n lab\n ),\n LMS = LMSg.map((val: number) => val ** 3);\n\n return multiplyMatrices(\n // eslint-disable-next-line prettier/prettier\n [\n 1.2268798758459243, -0.5578149944602171, 0.2813910456659647, -0.0405757452148008, 1.112286803280317,\n -0.0717110580655164, -0.0763729366746601, -0.4214933324022432, 1.5869240198367816\n ],\n LMS\n );\n};\n\n/**\n * Convert Lab to D50-adapted XYZ\n *\n * @param lab\n */\nconst lab2xyz = (lab: [number, number, number]): [number, number, number] => {\n const fy = (lab[0] + 16) / 116,\n fx = lab[1] / 500 + fy,\n fz = fy - lab[2] / 200,\n k = 24389 / 27,\n e = 24 / 116,\n xyz = [\n ((fx > e ? fx ** 3 : (116 * fx - 16) / k) * 0.3457) / 0.3585,\n lab[0] > 8 ? fy ** 3 : lab[0] / k,\n ((fz > e ? fz ** 3 : (116 * fz - 16) / k) * (1.0 - 0.3457 - 0.3585)) / 0.3585\n ];\n\n return d50toD65([xyz[0], xyz[1], xyz[2]]);\n};\n\n/**\n * Convert RGB to XYZ\n *\n * @param _context\n * @param args\n */\nexport const rgbToXyz = (_context: Context, args: CSSValue[]): [number, number, number, number] => {\n const tokens = args.filter(nonFunctionArgSeparator);\n\n if (tokens.length === 3) {\n const [r, g, b] = tokens.map(getTokenColorValue),\n rgb_linear = rgb2rgbLinear([r / 255, g / 255, b / 255]),\n [x, y, z] = rgbLinear2xyz([rgb_linear[0], rgb_linear[1], rgb_linear[2]]);\n return [x, y, z, 1];\n }\n\n if (tokens.length === 4) {\n const [r, g, b, a] = tokens.map(getTokenColorValue),\n rgb_linear = rgb2rgbLinear([r / 255, g / 255, b / 255]),\n [x, y, z] = rgbLinear2xyz([rgb_linear[0], rgb_linear[1], rgb_linear[2]]);\n return [x, y, z, a];\n }\n\n return [0, 0, 0, 1];\n};\n\n/**\n * HSL to XYZ\n *\n * @param context\n * @param args\n */\nexport const hslToXyz = (context: Context, args: CSSValue[]): [number, number, number, number] => {\n const [h, s, l, a] = extractHslComponents(context, args),\n rgb_linear = rgb2rgbLinear(hsl2rgb([h, s, l])),\n [x, y, z] = rgbLinear2xyz([rgb_linear[0], rgb_linear[1], rgb_linear[2]]);\n\n return [x, y, z, a];\n};\n\n/**\n * LAB to XYZ\n *\n * @param _context\n * @param args\n */\nexport const labToXyz = (_context: Context, args: CSSValue[]): [number, number, number, number] => {\n const [l, a, b, alpha] = extractLabComponents(args),\n [x, y, z] = lab2xyz([l, a, b]);\n return [x, y, z, alpha];\n};\n\n/**\n * LCH to XYZ\n *\n * @param _context\n * @param args\n */\nexport const lchToXyz = (_context: Context, args: CSSValue[]): [number, number, number, number] => {\n const [l, c, h, alpha] = extractLchComponents(args),\n [x, y, z] = lab2xyz(lch2lab([l, c, h]));\n return [x, y, z, alpha];\n};\n\n/**\n * OKLch to XYZ\n *\n * @param _context\n * @param args\n */\nexport const oklchToXyz = (_context: Context, args: CSSValue[]): [number, number, number, number] => {\n const [l, c, h, alpha] = extractOkLchComponents(args),\n [x, y, z] = oklab2xyz(lch2lab([l, c, h]));\n return [x, y, z, alpha];\n};\n\n/**\n * OKLab to XYZ\n *\n * @param _context\n * @param args\n */\nexport const oklabToXyz = (_context: Context, args: CSSValue[]): [number, number, number, number] => {\n const [l, c, h, alpha] = extractLabComponents(args),\n [x, y, z] = oklab2xyz([l, c, h]);\n return [x, y, z, alpha];\n};\n\n/**\n * XYZ-50 to XYZ\n *\n * @param args\n */\nexport const xyz50ToXYZ = (args: number[]): [number, number, number] => {\n return d50toD65([args[0], args[1], args[2]]);\n};\n\n/**\n * Does nothing, required for SUPPORTED_COLOR_SPACES_FROM_XYZ in the _color() function\n *\n * @param args\n */\nexport const xyzFromXYZ = (args: [number, number, number, number]): [number, number, number, number] => {\n return args;\n};\n\n/**\n * XYZ-65 to XYZ-50\n *\n * @param args\n */\nexport const xyz50FromXYZ = (args: [number, number, number, number]): [number, number, number, number] => {\n const [x, y, z] = d65toD50([args[0], args[2], args[3]]);\n return [x, y, z, args[3]];\n};\n\n/**\n * Convert XYZ to SRGB and Pack\n *\n * @param args\n */\nexport const convertXyz = (args: number[]): number => {\n return packXYZ([args[0], args[1], args[2], args[3]]);\n};\n\n/**\n * Convert XYZ-50 to SRGB and Pack\n *\n * @param args\n */\nexport const convertXyz50 = (args: number[]): number => {\n const xyz = xyz50ToXYZ([args[0], args[1], args[2]]);\n return packXYZ([xyz[0], xyz[1], xyz[2], args[3]]);\n};\n","/**\n * SRGB related functions\n */\n\nimport { clamp, multiplyMatrices } from '../color-utilities';\n\n/**\n * Convert XYZ to linear-light sRGB\n *\n * @param xyz\n */\nexport const xyz2rgbLinear = (xyz: [number, number, number]): [number, number, number] => {\n return multiplyMatrices(\n // eslint-disable-next-line prettier/prettier\n [\n 3.2409699419045226, -1.537383177570094, -0.4986107602930034, -0.9692436362808796, 1.8759675015077202,\n 0.04155505740717559, 0.05563007969699366, -0.20397695888897652, 1.0569715142428786\n ],\n xyz\n );\n};\n\n/**\n * Convert XYZ to linear-light sRGB\n *\n * @param xyz\n */\nexport const rgbLinear2xyz = (xyz: [number, number, number]): [number, number, number] => {\n return multiplyMatrices(\n // eslint-disable-next-line prettier/prettier\n [\n 0.41239079926595934, 0.357584339383878, 0.1804807884018343, 0.21263900587151027, 0.715168678767756,\n 0.07219231536073371, 0.01933081871559182, 0.11919477979462598, 0.9505321522496607\n ],\n xyz\n );\n};\n\n/**\n * Convert sRGB to RGB\n *\n * @param rgb\n */\nexport const srgbLinear2rgb = (rgb: [number, number, number]): number[] => {\n return rgb.map((c: number) => {\n const sign = c < 0 ? -1 : 1,\n abs = Math.abs(c);\n // eslint-disable-next-line prettier/prettier\n return abs > 0.0031308 ? sign * (1.055 * abs ** (1 / 2.4) - 0.055) : 12.92 * c;\n });\n};\n\n/**\n * Convert RGB to sRGB\n *\n * @param rgb\n */\nexport const rgb2rgbLinear = (rgb: [number, number, number]): number[] => {\n return rgb.map((c: number) => {\n const sign = c < 0 ? -1 : 1,\n abs = Math.abs(c);\n // eslint-disable-next-line prettier/prettier\n return abs <= 0.04045 ? c / 12.92 : sign * ((abs + 0.055) / 1.055) ** 2.4;\n });\n};\n\n/**\n * XYZ to SRGB\n *\n * @param args\n */\nexport const srgbFromXYZ = (args: [number, number, number, number]): [number, number, number, number] => {\n const [r, g, b] = srgbLinear2rgb(xyz2rgbLinear([args[0], args[1], args[2]]));\n return [r, g, b, args[3]];\n};\n\n/**\n * XYZ to SRGB-Linear\n * @param args\n */\nexport const srgbLinearFromXYZ = (args: [number, number, number, number]): [number, number, number, number] => {\n const [r, g, b] = xyz2rgbLinear([args[0], args[1], args[2]]);\n return [\n clamp(Math.round(r * 255), 0, 255),\n clamp(Math.round(g * 255), 0, 255),\n clamp(Math.round(b * 255), 0, 255),\n args[3]\n ];\n};\n","/**\n * Display-P3 related functions\n */\n\nimport { srgbLinear2rgb } from './srgb';\nimport { multiplyMatrices, packXYZ } from '../color-utilities';\n\n/**\n * Convert P3 Linear to xyz\n *\n * @param p3l\n */\nexport const p3LinearToXyz = (p3l: [number, number, number]): [number, number, number] => {\n return multiplyMatrices(\n // eslint-disable-next-line prettier/prettier\n [\n 0.4865709486482162, 0.26566769316909306, 0.1982172852343625, 0.2289745640697488, 0.6917385218365064,\n 0.079286914093745, 0.0, 0.04511338185890264, 1.043944368900976\n ],\n p3l\n );\n};\n/**\n * Convert XYZ to P3 Linear\n *\n * @param xyz\n */\nexport const xyzToP3Linear = (xyz: [number, number, number]): [number, number, number] => {\n return multiplyMatrices(\n // eslint-disable-next-line prettier/prettier\n [\n 2.493496911941425, -0.9313836179191239, -0.40271078445071684, -0.8294889695615747, 1.7626640603183463,\n 0.023624685841943577, 0.03584583024378447, -0.07617238926804182, 0.9568845240076872\n ],\n xyz\n );\n};\n\n/**\n * Convert P3 to P3 linear\n *\n * @param p3\n */\nexport const p32p3Linear = (p3: [number, number, number]): number[] => {\n return p3.map((c: number) => {\n const sign = c < 0 ? -1 : 1,\n abs = c * sign;\n\n if (abs <= 0.04045) {\n return c / 12.92;\n }\n\n // eslint-disable-next-line prettier/prettier\n return sign * ((c + 0.055) / 1.055) ** 2.4 || 0;\n });\n};\n\n/**\n * Convert P3 Linear to P3\n *\n * @param p3l\n */\nexport const p3Linear2p3 = (p3l: [number, number, number]): number[] => {\n return srgbLinear2rgb(p3l);\n};\n\n/**\n * Convert P3 to XYZ\n *\n * @param args\n */\nexport const p3ToXYZ = (args: number[]): number[] => {\n const p3_linear = p32p3Linear([args[0], args[1], args[2]]);\n return p3LinearToXyz([p3_linear[0], p3_linear[1], p3_linear[2]]);\n};\n\n/**\n * Convert XYZ to P3\n *\n * @param args\n */\nexport const p3FromXYZ = (args: [number, number, number, number]): [number, number, number, number] => {\n const [r, g, b] = p3Linear2p3(xyzToP3Linear([args[0], args[1], args[2]]));\n return [r, g, b, args[3]];\n};\n\n/**\n * Convert P3 to SRGB and Pack\n *\n * @param args\n */\nexport const convertP3 = (args: number[]): number => {\n const xyz = p3ToXYZ([args[0], args[1], args[2]]);\n return packXYZ([xyz[0], xyz[1], xyz[2], args[3]]);\n};\n","/**\n * A98-RGB related functions\n */\n\nimport { multiplyMatrices, packSrgbLinear } from '../color-utilities';\nimport { xyz2rgbLinear } from './srgb';\n\n/**\n * Convert XYZ to a98 linear\n *\n * @param xyz\n */\nexport const xyz2a98Linear = (xyz: [number, number, number]): [number, number, number] => {\n return multiplyMatrices(\n // eslint-disable-next-line prettier/prettier\n [\n 2.0415879038107465, -0.5650069742788596, -0.34473135077832956, -0.9692436362808795, 1.8759675015077202,\n 0.04155505740717557, 0.013444280632031142, -0.11836239223101838, 1.0151749943912054\n ],\n xyz\n );\n};\n\n/**\n * Convert XYZ to a98 linear\n *\n * @param a98\n */\nexport const a98Linear2xyz = (a98: [number, number, number]): [number, number, number] => {\n return multiplyMatrices(\n // eslint-disable-next-line prettier/prettier\n [\n 0.5766690429101305, 0.1855582379065463, 0.1882286462349947, 0.29734497525053605, 0.6273635662554661,\n 0.0752914584939978, 0.02703136138641234, 0.07068885253582723, 0.9913375368376388\n ],\n a98\n );\n};\n\n/**\n * Convert A98 RGB to rgb linear\n *\n * @param rgb\n */\nexport const a982a98Linear = (rgb: [number, number, number]): [number, number, number] => {\n const mapped = rgb.map((c: number) => {\n const sign = c < 0 ? -1 : 1,\n abs = Math.abs(c);\n return sign * abs ** (563 / 256);\n });\n\n return [mapped[0], mapped[1], mapped[2]];\n};\n\n/**\n * Convert A98 RGB Linear to A98\n *\n * @param rgb\n */\nexport const a98Linear2a98 = (rgb: [number, number, number]): [number, number, number] => {\n const mapped = rgb.map((c: number) => {\n const sign = c < 0 ? -1 : 1,\n abs = Math.abs(c);\n return sign * abs ** (256 / 563);\n });\n\n return [mapped[0], mapped[1], mapped[2]];\n};\n\n/**\n * Convert XYZ to A98\n *\n * @param args\n */\nexport const a98FromXYZ = (args: [number, number, number, number]): [number, number, number, number] => {\n const [r, g, b] = a98Linear2a98(xyz2a98Linear([args[0], args[1], args[2]]));\n return [r, g, b, args[3]];\n};\n\n/**\n * Convert A98 to XYZ and Pack\n *\n * @param args\n */\nexport const convertA98rgb = (args: number[]): number => {\n const srgb_linear = xyz2rgbLinear(a98Linear2xyz(a982a98Linear([args[0], args[1], args[2]])));\n return packSrgbLinear([srgb_linear[0], srgb_linear[1], srgb_linear[2], args[3]]);\n};\n","/**\n * Pro Photo related functions\n */\n\nimport { d50toD65, d65toD50, multiplyMatrices, packXYZ } from '../color-utilities';\n\n/**\n * Convert linear-light display-p3 to XYZ D65\n *\n * @param p3\n */\nexport const proPhotoLinearToXyz = (p3: [number, number, number]): [number, number, number] => {\n return multiplyMatrices(\n // eslint-disable-next-line prettier/prettier\n [\n 0.7977666449006423, 0.13518129740053308, 0.0313477341283922, 0.2880748288194013, 0.711835234241873,\n 0.00008993693872564, 0.0, 0.0, 0.8251046025104602\n ],\n p3\n );\n};\n\n/**\n * Convert XYZ D65 to linear-light display-p3\n *\n * @param xyz\n */\nexport const xyzToProPhotoLinear = (xyz: [number, number, number]): [number, number, number] => {\n return multiplyMatrices(\n // eslint-disable-next-line prettier/prettier\n [\n 1.3457868816471583, -0.25557208737979464, -0.05110186497554526, -0.5446307051249019, 1.5082477428451468,\n 0.02052744743642139, 0.0, 0.0, 1.2119675456389452\n ],\n xyz\n );\n};\n\n/**\n * Convert Pro-Photo to Pro-Photo Linear\n *\n * @param p3\n */\nexport const proPhotoToProPhotoLinear = (p3: [number, number, number]): number[] => {\n return p3.map((c: number) => {\n return c < 16 / 512 ? c / 16 : c ** 1.8;\n });\n};\n\n/**\n * Convert Pro-Photo Linear to Pro-Photo\n *\n * @param p3\n */\nexport const proPhotoLinearToProPhoto = (p3: [number, number, number]): number[] => {\n return p3.map((c: number) => {\n return c > 1 / 512 ? c ** (1 / 1.8) : c * 16;\n });\n};\n\n/**\n * Convert Pro-Photo to XYZ\n *\n * @param args\n */\nexport const proPhotoToXYZ = (args: number[]): [number, number, number] => {\n const prophoto_linear = proPhotoToProPhotoLinear([args[0], args[1], args[2]]);\n return d50toD65(proPhotoLinearToXyz([prophoto_linear[0], prophoto_linear[1], prophoto_linear[2]]));\n};\n\n/**\n * Convert XYZ to Pro-Photo\n *\n * @param args\n */\nexport const proPhotoFromXYZ = (args: [number, number, number, number]): [number, number, number, number] => {\n const [r, g, b] = proPhotoLinearToProPhoto(xyzToProPhotoLinear(d65toD50([args[0], args[1], args[2]])));\n return [r, g, b, args[3]];\n};\n\n/**\n * Convert Pro-Photo to XYZ and Pack\n *\n * @param args\n */\nexport const convertProPhoto = (args: number[]): number => {\n const xyz = proPhotoToXYZ([args[0], args[1], args[2]]);\n return packXYZ([xyz[0], xyz[1], xyz[2], args[3]]);\n};\n","/**\n * REC2020 related functions\n */\n\nimport { multiplyMatrices, packXYZ } from '../color-utilities';\n\nconst _a = 1.09929682680944;\nconst _b = 0.018053968510807;\n\n/**\n * Convert rec2020 to rec2020 linear\n *\n * @param rgb\n */\nexport const rec20202rec2020Linear = (rgb: [number, number, number]): number[] => {\n return rgb.map(function (c) {\n return c < _b * 4.5 ? c / 4.5 : Math.pow((c + _a - 1) / _a, 1 / 0.45);\n });\n};\n\n/**\n * Convert rec2020 linear to rec2020\n *\n * @param rgb\n */\nexport const rec2020Linear2rec2020 = (rgb: [number, number, number]): number[] => {\n return rgb.map(function (c) {\n return c >= _b ? _a * Math.pow(c, 0.45) - (_a - 1) : 4.5 * c;\n });\n};\n\n/**\n * Convert rec2020 linear to XYZ D65\n *\n * @param rec\n */\nexport const rec2020LinearToXyz = (rec: [number, number, number]): [number, number, number] => {\n return multiplyMatrices(\n // eslint-disable-next-line prettier/prettier\n [\n 0.6369580483012914, 0.14461690358620832, 0.1688809751641721, 0.2627002120112671, 0.6779980715188708,\n 0.05930171646986196, 0.0, 0.028072693049087428, 1.060985057710791\n ],\n rec\n );\n};\n\n/**\n * Convert XYZ D65 to rec2020 linear\n *\n * @param xyz\n */\nexport const xyzToRec2020Linear = (xyz: [number, number, number]): [number, number, number] => {\n return multiplyMatrices(\n // eslint-disable-next-line prettier/prettier\n [\n 1.716651187971268, -0.355670783776392, -0.25336628137366, -0.666684351832489, 1.616481236634939,\n 0.0157685458139111, 0.017639857445311, -0.042770613257809, 0.942103121235474\n ],\n xyz\n );\n};\n\n/**\n * Convert Rec2020 to XYZ\n *\n * @param args\n */\nexport const rec2020ToXYZ = (args: number[]): [number, number, number] => {\n const rec2020_linear = rec20202rec2020Linear([args[0], args[1], args[2]]);\n return rec2020LinearToXyz([rec2020_linear[0], rec2020_linear[1], rec2020_linear[2]]);\n};\n\n/**\n * Convert XYZ to Rec2020\n *\n * @param args\n */\nexport const rec2020FromXYZ = (args: [number, number, number, number]): [number, number, number, number] => {\n const [r, g, b] = rec2020Linear2rec2020(xyzToRec2020Linear([args[0], args[1], args[2]]));\n return [r, g, b, args[3]];\n};\n\n/**\n * Convert Rec2020 to SRGB and Pack\n *\n * @param args\n */\nexport const convertRec2020 = (args: number[]): number => {\n const xyz = rec2020ToXYZ([args[0], args[1], args[2]]);\n return packXYZ([xyz[0], xyz[1], xyz[2], args[3]]);\n};\n","import { CSSValue, isIdentToken, isNumberToken, nonFunctionArgSeparator, Parser } from '../syntax/parser';\nimport { HashToken, TokenType } from '../syntax/tokenizer';\nimport { ITypeDescriptor } from '../ITypeDescriptor';\nimport { Context } from '../../core/context';\nimport { srgbFromXYZ, srgbLinearFromXYZ } from './color-spaces/srgb';\nimport {\n packSrgbLinear,\n packSrgb,\n packHSL,\n packLch,\n packOkLch,\n packOkLab,\n packLab,\n isRelativeTransform,\n pack,\n getTokenColorValue,\n convertXyz,\n convertXyz50,\n rgbToXyz,\n hslToXyz,\n labToXyz,\n lchToXyz,\n oklabToXyz,\n oklchToXyz,\n xyzFromXYZ,\n xyz50FromXYZ\n} from './color-utilities';\nimport { convertP3, p3FromXYZ } from './color-spaces/p3';\nimport { a98FromXYZ, convertA98rgb } from './color-spaces/a98';\nimport { convertProPhoto, proPhotoFromXYZ } from './color-spaces/pro-photo';\nimport { convertRec2020, rec2020FromXYZ } from './color-spaces/rec2020';\n\nexport type Color = number;\n\nexport const color: ITypeDescriptor<Color> = {\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 const [r, g, b, a] = hash2rgb(value);\n return pack(r, g, b, a);\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\nconst hash2rgb = (token: HashToken): [number, number, number, number] => {\n if (token.value.length === 3) {\n const r = token.value.substring(0, 1);\n const g = token.value.substring(1, 2);\n const b = token.value.substring(2, 3);\n return [parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), 1];\n }\n\n if (token.value.length === 4) {\n const r = token.value.substring(0, 1);\n const g = token.value.substring(1, 2);\n const b = token.value.substring(2, 3);\n const a = token.value.substring(3, 4);\n return [parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), parseInt(a + a, 16) / 255];\n }\n\n if (token.value.length === 6) {\n const r = token.value.substring(0, 2);\n const g = token.value.substring(2, 4);\n const b = token.value.substring(4, 6);\n return [parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), 1];\n }\n\n if (token.value.length === 8) {\n const r = token.value.substring(0, 2);\n const g = token.value.substring(2, 4);\n const b = token.value.substring(4, 6);\n const a = token.value.substring(6, 8);\n return [parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), parseInt(a, 16) / 255];\n }\n\n return [0, 0, 0, 1];\n};\n\nconst rgb = (_context: Context, args: CSSValue[]): number => {\n const tokens = args.filter(nonFunctionArgSeparator);\n\n if (isRelativeTransform(tokens)) {\n throw new Error('Relative color not supported for rgb()');\n }\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\n/**\n * Handle the CSS color() function\n *\n * @param context\n * @param args\n */\nconst _color = (context: Context, args: CSSValue[]) => {\n const tokens = args.filter(nonFunctionArgSeparator),\n token_1_value = tokens[0].type === TokenType.IDENT_TOKEN ? tokens[0].value : 'unknown',\n is_absolute = !isRelativeTransform(tokens);\n\n if (is_absolute) {\n const color_space = token_1_value,\n colorSpaceFunction = SUPPORTED_COLOR_SPACES_ABSOLUTE[color_space];\n if (typeof colorSpaceFunction === 'undefined') {\n throw new Error(`Attempting to parse an unsupported color space \"${color_space}\" for color() function`);\n }\n const c1 = isNumberToken(tokens[1]) ? tokens[1].number : 0,\n c2 = isNumberToken(tokens[2]) ? tokens[2].number : 0,\n c3 = isNumberToken(tokens[3]) ? tokens[3].number : 0,\n a =\n tokens.length > 4 &&\n tokens[4].type === TokenType.DELIM_TOKEN &&\n tokens[4].value === '/' &&\n isNumberToken(tokens[5])\n ? tokens[5].number\n : 1;\n\n return colorSpaceFunction([c1, c2, c3, a]);\n } else {\n const extractComponent = (color: [number, number, number, number], token: CSSValue) => {\n if (isNumberToken(token)) {\n return token.number;\n }\n\n const posFromVal = (value: string): number => {\n return value === 'r' || value === 'x' ? 0 : value === 'g' || value === 'y' ? 1 : 2;\n };\n\n if (isIdentToken(token)) {\n const position = posFromVal(token.value);\n return color[position];\n }\n\n const parseCalc = (args: CSSValue[]): string => {\n const parts = args.filter(nonFunctionArgSeparator);\n let expression = '(';\n for (const part of parts) {\n expression +=\n part.type === TokenType.FUNCTION && part.name === 'calc'\n ? parseCalc(part.values)\n : isNumberToken(part)\n ? part.number\n : part.type === TokenType.DELIM_TOKEN || isIdentToken(part)\n ? part.value\n : '';\n }\n expression += ')';\n return expression;\n };\n\n if (token.type === TokenType.FUNCTION) {\n const args = token.values.filter(nonFunctionArgSeparator);\n if (token.name === 'calc') {\n const expression = parseCalc(args)\n .replace(/r|x/, color[0].toString())\n .replace(/g|y/, color[1].toString())\n .replace(/b|z/, color[2].toString());\n\n return new Function('return ' + expression)();\n }\n }\n\n return null;\n };\n\n const from_colorspace =\n tokens[1].type === TokenType.FUNCTION\n ? tokens[1].name\n : isIdentToken(tokens[1]) || tokens[1].type === TokenType.HASH_TOKEN\n ? 'rgb'\n : 'unknown',\n to_colorspace = isIdentToken(tokens[2]) ? tokens[2].value : 'unknown';\n\n let from =\n tokens[1].type === TokenType.FUNCTION ? tokens[1].values : isIdentToken(tokens[1]) ? [tokens[1]] : [];\n\n if (isIdentToken(tokens[1])) {\n const named_color = COLORS[tokens[1].value.toUpperCase()];\n if (typeof named_color === 'undefined') {\n throw new Error(`Attempting to use unknown color in relative color 'from'`);\n } else {\n const _c = parseColor(context, tokens[1].value),\n alpha = 0xff & _c,\n blue = 0xff & (_c >> 8),\n green = 0xff & (_c >> 16),\n red = 0xff & (_c >> 24);\n from = [\n { type: TokenType.NUMBER_TOKEN, number: red, flags: 1 },\n { type: TokenType.NUMBER_TOKEN, number: green, flags: 1 },\n { type: TokenType.NUMBER_TOKEN, number: blue, flags: 1 },\n { type: TokenType.NUMBER_TOKEN, number: alpha > 1 ? alpha / 255 : alpha, flags: 1 }\n ];\n }\n } else if (tokens[1].type === TokenType.HASH_TOKEN) {\n const [red, green, blue, alpha] = hash2rgb(tokens[1]);\n from = [\n { type: TokenType.NUMBER_TOKEN, number: red, flags: 1 },\n { type: TokenType.NUMBER_TOKEN, number: green, flags: 1 },\n { type: TokenType.NUMBER_TOKEN, number: blue, flags: 1 },\n { type: TokenType.NUMBER_TOKEN, number: alpha > 1 ? alpha / 255 : alpha, flags: 1 }\n ];\n }\n\n if (from.length === 0) {\n throw new Error(`Attempting to use unknown color in relative color 'from'`);\n }\n\n if (to_colorspace === 'unknown') {\n throw new Error(`Attempting to use unknown colorspace in relative color 'to'`);\n }\n\n const fromColorToXyz = SUPPORTED_COLOR_SPACES_TO_XYZ[from_colorspace],\n toColorFromXyz = SUPPORTED_COLOR_SPACES_FROM_XYZ[to_colorspace],\n toColorPack = SUPPORTED_COLOR_SPACES_ABSOLUTE[to_colorspace];\n\n if (typeof fromColorToXyz === 'undefined') {\n throw new Error(`Attempting to parse an unsupported color space \"${from_colorspace}\" for color() function`);\n }\n if (typeof toColorFromXyz === 'undefined') {\n throw new Error(`Attempting to parse an unsupported color space \"${to_colorspace}\" for color() function`);\n }\n\n const from_color: [number, number, number, number] = fromColorToXyz(context, from),\n from_final_colorspace: [number, number, number, number] = toColorFromXyz(from_color),\n c1 = extractComponent(from_final_colorspace, tokens[3]),\n c2 = extractComponent(from_final_colorspace, tokens[4]),\n c3 = extractComponent(from_final_colorspace, tokens[5]),\n a =\n tokens.length > 6 &&\n tokens[6].type === TokenType.DELIM_TOKEN &&\n tokens[6].value === '/' &&\n isNumberToken(tokens[7])\n ? tokens[7].number\n : 1;\n if (c1 === null || c2 === null || c3 === null) {\n throw new Error(`Invalid relative color in color() function`);\n }\n\n return toColorPack([c1, c2, c3, a]);\n }\n};\n\nconst SUPPORTED_COLOR_SPACES_ABSOLUTE: {\n [key: string]: (args: number[]) => number;\n} = {\n srgb: packSrgb,\n 'srgb-linear': packSrgbLinear,\n 'display-p3': convertP3,\n 'a98-rgb': convertA98rgb,\n 'prophoto-rgb': convertProPhoto,\n xyz: convertXyz,\n 'xyz-d50': convertXyz50,\n 'xyz-d65': convertXyz,\n rec2020: convertRec2020\n};\n\nconst SUPPORTED_COLOR_SPACES_TO_XYZ: {\n [key: string]: (context: Context, args: CSSValue[]) => [number, number, number, number];\n} = {\n rgb: rgbToXyz,\n hsl: hslToXyz,\n lab: labToXyz,\n lch: lchToXyz,\n oklab: oklabToXyz,\n oklch: oklchToXyz\n};\n\nconst SUPPORTED_COLOR_SPACES_FROM_XYZ: {\n [key: string]: (args: [number, number, number, number]) => [number, number, number, number];\n} = {\n srgb: srgbFromXYZ,\n 'srgb-linear': srgbLinearFromXYZ,\n 'display-p3': p3FromXYZ,\n 'a98-rgb': a98FromXYZ,\n 'prophoto-rgb': proPhotoFromXYZ,\n xyz: xyzFromXYZ,\n 'xyz-d50': xyz50FromXYZ,\n 'xyz-d65': xyzFromXYZ,\n rec2020: rec2020FromXYZ\n};\n\nconst SUPPORTED_COLOR_FUNCTIONS: {\n [key: string]: (context: Context, args: CSSValue[]) => number;\n} = {\n hsl: packHSL,\n hsla: packHSL,\n rgb: rgb,\n rgba: rgb,\n lch: packLch,\n oklch: packOkLch,\n oklab: packOkLab,\n lab: packLab,\n color: _color\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<BackgroundClip> = {\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 { 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, 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, 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 { 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 {\n FIFTY_PERCENT,\n HUNDRED_PERCENT,\n isLengthPercentage,\n LengthPercentage,\n ZERO_LENGTH\n} 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 {\n FIFTY_PERCENT,\n HUNDRED_PERCENT,\n isLengthPercentage,\n LengthPercentage,\n ZERO_LENGTH\n} 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<ICSSImage> = {\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<string, (context: Context, args: CSSValue[]) => 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 { 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<ICSSImage[]> = {\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<BackgroundOrigin> = {\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<BackgroundPosition> = {\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<BackgroundRepeat> = {\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 { 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<BackgroundSize> = {\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 { 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<BorderRadius> => ({\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<BorderRadius> = borderRadiusForSide('top-left');\nexport const borderTopRightRadius: IPropertyListDescriptor<BorderRadius> = borderRadiusForSide('top-right');\nexport const borderBottomRightRadius: IPropertyListDescriptor<BorderRadius> = borderRadiusForSide('bottom-right');\nexport const borderBottomLeftRadius: IPropertyListDescriptor<BorderRadius> = 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<BORDER_STYLE> => ({\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<BORDER_STYLE> = borderStyleForSide('top');\nexport const borderRightStyle: IPropertyIdentValueDescriptor<BORDER_STYLE> = borderStyleForSide('right');\nexport const borderBottomStyle: IPropertyIdentValueDescriptor<BORDER_STYLE> = borderStyleForSide('bottom');\nexport const borderLeftStyle: IPropertyIdentValueDescriptor<BORDER_STYLE> = borderStyleForSide('left');\n","import { IPropertyValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { CSSValue, isDimensionToken } from '../syntax/parser';\nimport { Context } from '../../core/context';\nconst borderWidthForSide = (side: string): IPropertyValueDescriptor<number> => ({\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<number> = borderWidthForSide('top');\nexport const borderRightWidth: IPropertyValueDescriptor<number> = borderWidthForSide('right');\nexport const borderBottomWidth: IPropertyValueDescriptor<number> = borderWidthForSide('bottom');\nexport const borderLeftWidth: IPropertyValueDescriptor<number> = 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<DIRECTION> = {\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<Display> = {\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<FLOAT> = {\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<number> = {\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 LINE_BREAK {\n NORMAL = 'normal',\n STRICT = 'strict'\n}\n\nexport const lineBreak: IPropertyIdentValueDescriptor<LINE_BREAK> = {\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 { 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<ICSSImage | null> = {\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<LIST_STYLE_POSITION> = {\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<LIST_STYLE_TYPE> = {\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<OVERFLOW[]> = {\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<OVERFLOW_WRAP> = {\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<TEXT_ALIGN> = {\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<POSITION> = {\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<TextShadow> = {\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<TEXT_TRANSFORM> = {\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<Transform> = {\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<TransformOrigin> = {\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<VISIBILITY> = {\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","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<WORD_BREAK> = {\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 { 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<zIndex> = {\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<number> = {\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<number> = {\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<TextDecorationLine> = {\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<FontFamily> = {\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<number> = {\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<string[]> = {\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<FONT_STYLE> = {\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<Content> = {\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<CounterIncrement> = {\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<CounterReset> = {\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<number[]> = {\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<Quotes> = {\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<BoxShadow> = {\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<PaintOrder> = {\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<number> = {\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 { IPropertyListDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { CSSValue, isIdentToken } from '../syntax/parser';\nimport { Context } from '../../core/context';\nexport const enum OBJECT_FIT {\n FILL = 0,\n CONTAIN = 1 << 1,\n COVER = 1 << 2,\n NONE = 1 << 3,\n SCALE_DOWN = 1 << 4\n}\n\nexport type ObjectFit = number;\n\nexport const objectFit: IPropertyListDescriptor<ObjectFit> = {\n name: 'objectFit',\n initialValue: 'fill',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): ObjectFit => {\n return tokens.filter(isIdentToken).reduce((bit, token) => {\n return bit | parseDisplayValue(token.value);\n }, OBJECT_FIT.FILL);\n }\n};\n\nconst parseDisplayValue = (display: string): ObjectFit => {\n switch (display) {\n case 'contain':\n return OBJECT_FIT.CONTAIN;\n case 'cover':\n return OBJECT_FIT.COVER;\n case 'none':\n return OBJECT_FIT.NONE;\n case 'scale-down':\n return OBJECT_FIT.SCALE_DOWN;\n }\n\n return OBJECT_FIT.FILL;\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 } from './types/color';\nimport { isTransparent } from './types/color-utilities';\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';\nimport { objectFit } from './property-descriptors/object-fit';\n\nexport class CSSParsedDeclaration {\n animationDuration: ReturnType<typeof duration.parse>;\n backgroundClip: ReturnType<typeof backgroundClip.parse>;\n backgroundColor: Color;\n backgroundImage: ReturnType<typeof backgroundImage.parse>;\n backgroundOrigin: ReturnType<typeof backgroundOrigin.parse>;\n backgroundPosition: ReturnType<typeof backgroundPosition.parse>;\n backgroundRepeat: ReturnType<typeof backgroundRepeat.parse>;\n backgroundSize: ReturnType<typeof backgroundSize.parse>;\n borderTopColor: Color;\n borderRightColor: Color;\n borderBottomColor: Color;\n borderLeftColor: Color;\n borderTopLeftRadius: ReturnType<typeof borderTopLeftRadius.parse>;\n borderTopRightRadius: ReturnType<typeof borderTopRightRadius.parse>;\n borderBottomRightRadius: ReturnType<typeof borderBottomRightRadius.parse>;\n borderBottomLeftRadius: ReturnType<typeof borderBottomLeftRadius.parse>;\n borderTopStyle: ReturnType<typeof borderTopStyle.parse>;\n borderRightStyle: ReturnType<typeof borderRightStyle.parse>;\n borderBottomStyle: ReturnType<typeof borderBottomStyle.parse>;\n borderLeftStyle: ReturnType<typeof borderLeftStyle.parse>;\n borderTopWidth: ReturnType<typeof borderTopWidth.parse>;\n borderRightWidth: ReturnType<typeof borderRightWidth.parse>;\n borderBottomWidth: ReturnType<typeof borderBottomWidth.parse>;\n borderLeftWidth: ReturnType<typeof borderLeftWidth.parse>;\n boxShadow: ReturnType<typeof boxShadow.parse>;\n color: Color;\n direction: ReturnType<typeof direction.parse>;\n display: ReturnType<typeof display.parse>;\n float: ReturnType<typeof float.parse>;\n fontFamily: ReturnType<typeof fontFamily.parse>;\n fontSize: LengthPercentage;\n fontStyle: ReturnType<typeof fontStyle.parse>;\n fontVariant: ReturnType<typeof fontVariant.parse>;\n fontWeight: ReturnType<typeof fontWeight.parse>;\n letterSpacing: ReturnType<typeof letterSpacing.parse>;\n lineBreak: ReturnType<typeof lineBreak.parse>;\n lineHeight: CSSValue;\n listStyleImage: ReturnType<typeof listStyleImage.parse>;\n listStylePosition: ReturnType<typeof listStylePosition.parse>;\n listStyleType: ReturnType<typeof listStyleType.parse>;\n marginTop: CSSValue;\n marginRight: CSSValue;\n marginBottom: CSSValue;\n marginLeft: CSSValue;\n opacity: ReturnType<typeof opacity.parse>;\n overflowX: OVERFLOW;\n overflowY: OVERFLOW;\n overflowWrap: ReturnType<typeof overflowWrap.parse>;\n paddingTop: LengthPercentage;\n paddingRight: LengthPercentage;\n paddingBottom: LengthPercentage;\n paddingLeft: LengthPercentage;\n paintOrder: ReturnType<typeof paintOrder.parse>;\n position: ReturnType<typeof position.parse>;\n textAlign: ReturnType<typeof textAlign.parse>;\n textDecorationColor: Color;\n textDecorationLine: ReturnType<typeof textDecorationLine.parse>;\n textShadow: ReturnType<typeof textShadow.parse>;\n textTransform: ReturnType<typeof textTransform.parse>;\n transform: ReturnType<typeof transform.parse>;\n transformOrigin: ReturnType<typeof transformOrigin.parse>;\n visibility: ReturnType<typeof visibility.parse>;\n webkitTextStrokeColor: Color;\n webkitTextStrokeWidth: ReturnType<typeof webkitTextStrokeWidth.parse>;\n wordBreak: ReturnType<typeof wordBreak.parse>;\n zIndex: ReturnType<typeof zIndex.parse>;\n objectFit: ReturnType<typeof objectFit.parse>;\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 this.objectFit = parse(context, objectFit, declaration.objectFit);\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<typeof content.parse>;\n quotes: ReturnType<typeof quotes.parse>;\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<typeof counterIncrement.parse>;\n counterReset: ReturnType<typeof counterReset.parse>;\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<any>, 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<DebuggerType, DebuggerType.NONE>): 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 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 {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","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 {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 { fromCodePoint, toCodePoints } from 'css-line-break';\n\nconst testRangeBounds = (document: Document) => {\n const TEST_HEIGHT = 123;\n\n if (document.createRange) {\n const range = document.createRange();\n if (range.getBoundingClientRect) {\n const testElement = document.createElement('boundtest');\n testElement.style.height = `${TEST_HEIGHT}px`;\n testElement.style.display = 'block';\n document.body.appendChild(testElement);\n\n range.selectNode(testElement);\n const rangeBounds = range.getBoundingClientRect();\n const rangeHeight = Math.round(rangeBounds.height);\n document.body.removeChild(testElement);\n if (rangeHeight === TEST_HEIGHT) {\n return true;\n }\n }\n }\n\n return false;\n};\n\nconst testIOSLineBreak = (document: Document) => {\n const testElement = document.createElement('boundtest');\n testElement.style.width = '50px';\n testElement.style.display = 'block';\n testElement.style.fontSize = '12px';\n testElement.style.letterSpacing = '0px';\n testElement.style.wordSpacing = '0px';\n document.body.appendChild(testElement);\n const range = document.createRange();\n\n testElement.innerHTML = typeof ''.repeat === 'function' ? '👨'.repeat(10) : '';\n\n const node = testElement.firstChild as Text;\n\n const textList = toCodePoints(node.data).map((i) => fromCodePoint(i));\n let offset = 0;\n let prev: DOMRect = {} as DOMRect;\n\n // ios 13 does not handle range getBoundingClientRect line changes correctly #2177\n const supports = textList.every((text, i) => {\n range.setStart(node, offset);\n range.setEnd(node, offset + text.length);\n const rect = range.getBoundingClientRect();\n\n offset += text.length;\n const boundAhead = rect.x > prev.x || rect.y > prev.y;\n\n prev = rect;\n if (i === 0) {\n return true;\n }\n\n return boundAhead;\n });\n\n document.body.removeChild(testElement);\n return supports;\n};\n\nconst testCORS = (): boolean => typeof new Image().crossOrigin !== 'undefined';\n\nconst testResponseType = (): boolean => typeof new XMLHttpRequest().responseType === 'string';\n\nconst testSVG = (document: Document): boolean => {\n const img = new Image();\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n if (!ctx) {\n return false;\n }\n\n img.src = `data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'></svg>`;\n\n try {\n ctx.drawImage(img, 0, 0);\n canvas.toDataURL();\n } catch (e) {\n return false;\n }\n return true;\n};\n\nconst isGreenPixel = (data: Uint8ClampedArray): boolean =>\n data[0] === 0 && data[1] === 255 && data[2] === 0 && data[3] === 255;\n\nconst testForeignObject = (document: Document): Promise<boolean> => {\n const canvas = document.createElement('canvas');\n const size = 100;\n canvas.width = size;\n canvas.height = size;\n const ctx = canvas.getContext('2d');\n if (!ctx) {\n return Promise.reject(false);\n }\n ctx.fillStyle = 'rgb(0, 255, 0)';\n ctx.fillRect(0, 0, size, size);\n\n const img = new Image();\n const greenImageSrc = canvas.toDataURL();\n img.src = greenImageSrc;\n const svg = createForeignObjectSVG(size, size, 0, 0, img);\n ctx.fillStyle = 'red';\n ctx.fillRect(0, 0, size, size);\n\n return loadSerializedSVG(svg)\n .then((img: HTMLImageElement) => {\n ctx.drawImage(img, 0, 0);\n const data = ctx.getImageData(0, 0, size, size).data;\n ctx.fillStyle = 'red';\n ctx.fillRect(0, 0, size, size);\n\n const node = document.createElement('div');\n node.style.backgroundImage = `url(${greenImageSrc})`;\n node.style.height = `${size}px`;\n // Firefox 55 does not render inline <img /> tags\n return isGreenPixel(data)\n ? loadSerializedSVG(createForeignObjectSVG(size, size, 0, 0, node))\n : Promise.reject(false);\n })\n .then((img: HTMLImageElement) => {\n ctx.drawImage(img, 0, 0);\n // Edge does not render background-images\n return isGreenPixel(ctx.getImageData(0, 0, size, size).data);\n })\n .catch(() => false);\n};\n\nexport const createForeignObjectSVG = (\n width: number,\n height: number,\n x: number,\n y: number,\n node: Node\n): SVGForeignObjectElement => {\n const xmlns = 'http://www.w3.org/2000/svg';\n const svg = document.createElementNS(xmlns, 'svg');\n const foreignObject = document.createElementNS(xmlns, 'foreignObject');\n svg.setAttributeNS(null, 'width', width.toString());\n svg.setAttributeNS(null, 'height', height.toString());\n\n foreignObject.setAttributeNS(null, 'width', '100%');\n foreignObject.setAttributeNS(null, 'height', '100%');\n foreignObject.setAttributeNS(null, 'x', x.toString());\n foreignObject.setAttributeNS(null, 'y', y.toString());\n foreignObject.setAttributeNS(null, 'externalResourcesRequired', 'true');\n svg.appendChild(foreignObject);\n\n foreignObject.appendChild(node);\n\n return svg;\n};\n\nexport const loadSerializedSVG = (svg: Node): Promise<HTMLImageElement> => {\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.onload = () => resolve(img);\n img.onerror = reject;\n\n img.src = `data:image/svg+xml;charset=utf-8,${encodeURIComponent(new XMLSerializer().serializeToString(svg))}`;\n });\n};\n\nexport const FEATURES = {\n get SUPPORT_RANGE_BOUNDS(): boolean {\n 'use strict';\n const value = testRangeBounds(document);\n Object.defineProperty(FEATURES, 'SUPPORT_RANGE_BOUNDS', { value });\n return value;\n },\n get SUPPORT_WORD_BREAKING(): boolean {\n 'use strict';\n const value = FEATURES.SUPPORT_RANGE_BOUNDS && testIOSLineBreak(document);\n Object.defineProperty(FEATURES, 'SUPPORT_WORD_BREAKING', { value });\n return value;\n },\n get SUPPORT_SVG_DRAWING(): boolean {\n 'use strict';\n const value = testSVG(document);\n Object.defineProperty(FEATURES, 'SUPPORT_SVG_DRAWING', { value });\n return value;\n },\n get SUPPORT_FOREIGNOBJECT_DRAWING(): Promise<boolean> {\n 'use strict';\n const value =\n typeof Array.from === 'function' && typeof window.fetch === 'function'\n ? testForeignObject(document)\n : Promise.resolve(false);\n Object.defineProperty(FEATURES, 'SUPPORT_FOREIGNOBJECT_DRAWING', { value });\n return value;\n },\n get SUPPORT_CORS_IMAGES(): boolean {\n 'use strict';\n const value = testCORS();\n Object.defineProperty(FEATURES, 'SUPPORT_CORS_IMAGES', { value });\n return value;\n },\n get SUPPORT_RESPONSE_TYPE(): boolean {\n 'use strict';\n const value = testResponseType();\n Object.defineProperty(FEATURES, 'SUPPORT_RESPONSE_TYPE', { value });\n return value;\n },\n get SUPPORT_CORS_XHR(): boolean {\n 'use strict';\n const value = 'withCredentials' in new XMLHttpRequest();\n Object.defineProperty(FEATURES, 'SUPPORT_CORS_XHR', { value });\n return value;\n },\n get SUPPORT_NATIVE_TEXT_SEGMENTATION(): boolean {\n 'use strict';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const value = !!(typeof Intl !== 'undefined' && (Intl as any).Segmenter);\n Object.defineProperty(FEATURES, 'SUPPORT_NATIVE_TEXT_SEGMENTATION', { value });\n return value;\n }\n};\n","import { OVERFLOW_WRAP } from '../property-descriptors/overflow-wrap';\nimport { CSSParsedDeclaration } from '../index';\nimport { fromCodePoint, LineBreaker, toCodePoints } from 'css-line-break';\nimport { splitGraphemes } from 'text-segmentation';\nimport { Bounds, parseBounds } from './bounds';\nimport { FEATURES } from '../../core/features';\nimport { Context } from '../../core/context';\n\nexport class TextBounds {\n readonly text: string;\n readonly bounds: Bounds;\n\n constructor(text: string, bounds: Bounds) {\n this.text = text;\n this.bounds = bounds;\n }\n}\n\nexport const parseTextBounds = (\n context: Context,\n value: string,\n styles: CSSParsedDeclaration,\n node: Text\n): TextBounds[] => {\n const textList = breakText(value, styles);\n const textBounds: TextBounds[] = [];\n let offset = 0;\n textList.forEach((text) => {\n if (styles.textDecorationLine.length || text.trim().length > 0) {\n if (FEATURES.SUPPORT_RANGE_BOUNDS) {\n const clientRects = createRange(node, offset, text.length).getClientRects();\n if (clientRects.length > 1) {\n const subSegments = segmentGraphemes(text);\n let subOffset = 0;\n subSegments.forEach((subSegment) => {\n textBounds.push(\n new TextBounds(\n subSegment,\n Bounds.fromDOMRectList(\n context,\n createRange(node, subOffset + offset, subSegment.length).getClientRects()\n )\n )\n );\n subOffset += subSegment.length;\n });\n } else {\n textBounds.push(new TextBounds(text, Bounds.fromDOMRectList(context, clientRects)));\n }\n } else {\n const replacementNode = node.splitText(text.length);\n textBounds.push(new TextBounds(text, getWrapperBounds(context, node)));\n node = replacementNode;\n }\n } else if (!FEATURES.SUPPORT_RANGE_BOUNDS) {\n node = node.splitText(text.length);\n }\n offset += text.length;\n });\n\n return textBounds;\n};\n\nconst getWrapperBounds = (context: Context, node: Text): Bounds => {\n const ownerDocument = node.ownerDocument;\n if (ownerDocument) {\n const wrapper = ownerDocument.createElement('html2canvaswrapper');\n wrapper.appendChild(node.cloneNode(true));\n const parentNode = node.parentNode;\n if (parentNode) {\n parentNode.replaceChild(wrapper, node);\n const bounds = parseBounds(context, wrapper);\n if (wrapper.firstChild) {\n parentNode.replaceChild(wrapper.firstChild, wrapper);\n }\n return bounds;\n }\n }\n\n return Bounds.EMPTY;\n};\n\nconst createRange = (node: Text, offset: number, length: number): Range => {\n const ownerDocument = node.ownerDocument;\n if (!ownerDocument) {\n throw new Error('Node has no owner document');\n }\n const range = ownerDocument.createRange();\n range.setStart(node, offset);\n range.setEnd(node, offset + length);\n return range;\n};\n\nexport const segmentGraphemes = (value: string): string[] => {\n if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const segmenter = new (Intl as any).Segmenter(void 0, { granularity: 'grapheme' });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return Array.from(segmenter.segment(value)).map((segment: any) => segment.segment);\n }\n\n return splitGraphemes(value);\n};\n\nconst segmentWords = (value: string, styles: CSSParsedDeclaration): string[] => {\n if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const segmenter = new (Intl as any).Segmenter(void 0, {\n granularity: 'word'\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return Array.from(segmenter.segment(value)).map((segment: any) => segment.segment);\n }\n\n return breakWords(value, styles);\n};\n\nconst breakText = (value: string, styles: CSSParsedDeclaration): string[] => {\n return styles.letterSpacing !== 0 ? segmentGraphemes(value) : segmentWords(value, styles);\n};\n\n// https://drafts.csswg.org/css-text/#word-separator\nconst wordSeparators = [0x0020, 0x00a0, 0x1361, 0x10100, 0x10101, 0x1039, 0x1091];\n\nconst breakWords = (str: string, styles: CSSParsedDeclaration): string[] => {\n const breaker = LineBreaker(str, {\n lineBreak: styles.lineBreak,\n wordBreak: styles.overflowWrap === OVERFLOW_WRAP.BREAK_WORD ? 'break-word' : styles.wordBreak\n });\n\n const words = [];\n let bk;\n\n while (!(bk = breaker.next()).done) {\n if (bk.value) {\n const value = bk.value.slice();\n const codePoints = toCodePoints(value);\n let word = '';\n codePoints.forEach((codePoint) => {\n if (wordSeparators.indexOf(codePoint) === -1) {\n word += fromCodePoint(codePoint);\n } else {\n if (word.length) {\n words.push(word);\n }\n words.push(fromCodePoint(codePoint));\n word = '';\n }\n });\n\n if (word.length) {\n words.push(word);\n }\n }\n }\n\n return words;\n};\n","import { CSSParsedDeclaration } from '../css/index';\nimport { TEXT_TRANSFORM } from '../css/property-descriptors/text-transform';\nimport { parseTextBounds, TextBounds } from '../css/layout/text';\nimport { Context } from '../core/context';\n\nexport class TextContainer {\n text: string;\n textBounds: TextBounds[];\n\n constructor(context: Context, node: Text, styles: CSSParsedDeclaration) {\n this.text = transform(node.data, styles.textTransform);\n this.textBounds = parseTextBounds(context, this.text, styles, node);\n }\n}\n\nconst transform = (text: string, transform: TEXT_TRANSFORM) => {\n switch (transform) {\n case TEXT_TRANSFORM.LOWERCASE:\n return text.toLowerCase();\n case TEXT_TRANSFORM.CAPITALIZE:\n return text.replace(CAPITALIZE, capitalize);\n case TEXT_TRANSFORM.UPPERCASE:\n return text.toUpperCase();\n default:\n return text;\n }\n};\n\nconst CAPITALIZE = /(^|\\s|:|-|\\(|\\))([a-z])/g;\n\nconst capitalize = (m: string, p1: string, p2: string) => {\n if (m.length > 0) {\n return p1 + p2.toUpperCase();\n }\n\n return m;\n};\n","import { ElementContainer } from '../element-container';\nimport { Context } from '../../core/context';\n\nexport class ImageElementContainer extends ElementContainer {\n src: string;\n intrinsicWidth: number;\n intrinsicHeight: number;\n\n constructor(context: Context, img: HTMLImageElement) {\n super(context, img);\n this.src = img.currentSrc || img.src;\n this.intrinsicWidth = img.naturalWidth;\n this.intrinsicHeight = img.naturalHeight;\n this.context.cache.addImage(this.src);\n }\n}\n","import { ElementContainer } from '../element-container';\nimport { Context } from '../../core/context';\n\nexport class CanvasElementContainer extends ElementContainer {\n canvas: HTMLCanvasElement;\n intrinsicWidth: number;\n intrinsicHeight: number;\n\n constructor(context: Context, canvas: HTMLCanvasElement) {\n super(context, canvas);\n this.canvas = canvas;\n this.intrinsicWidth = canvas.width;\n this.intrinsicHeight = canvas.height;\n }\n}\n","import { ElementContainer } from '../element-container';\nimport { parseBounds } from '../../css/layout/bounds';\nimport { Context } from '../../core/context';\n\nexport class SVGElementContainer extends ElementContainer {\n svg: string;\n intrinsicWidth: number;\n intrinsicHeight: number;\n\n constructor(context: Context, img: SVGSVGElement) {\n super(context, img);\n const s = new XMLSerializer();\n const bounds = parseBounds(context, img);\n img.setAttribute('width', `${bounds.width}px`);\n img.setAttribute('height', `${bounds.height}px`);\n\n this.svg = `data:image/svg+xml,${encodeURIComponent(s.serializeToString(img))}`;\n this.intrinsicWidth = img.width.baseVal.value;\n this.intrinsicHeight = img.height.baseVal.value;\n\n this.context.cache.addImage(this.svg);\n }\n}\n","import { ElementContainer } from '../element-container';\nimport { Context } from '../../core/context';\nexport class LIElementContainer extends ElementContainer {\n readonly value: number;\n\n constructor(context: Context, element: HTMLLIElement) {\n super(context, element);\n this.value = element.value;\n }\n}\n","import { ElementContainer } from '../element-container';\nimport { Context } from '../../core/context';\nexport class OLElementContainer extends ElementContainer {\n readonly start: number;\n readonly reversed: boolean;\n\n constructor(context: Context, element: HTMLOListElement) {\n super(context, element);\n this.start = element.start;\n this.reversed = typeof element.reversed === 'boolean' && element.reversed === true;\n }\n}\n","import { ElementContainer } from '../element-container';\nimport { BORDER_STYLE } from '../../css/property-descriptors/border-style';\nimport { BACKGROUND_CLIP } from '../../css/property-descriptors/background-clip';\nimport { BACKGROUND_ORIGIN } from '../../css/property-descriptors/background-origin';\nimport { TokenType } from '../../css/syntax/tokenizer';\nimport { LengthPercentageTuple } from '../../css/types/length-percentage';\nimport { Bounds } from '../../css/layout/bounds';\nimport { Context } from '../../core/context';\n\nconst CHECKBOX_BORDER_RADIUS: LengthPercentageTuple = [\n {\n type: TokenType.DIMENSION_TOKEN,\n flags: 0,\n unit: 'px',\n number: 3\n }\n];\n\nconst RADIO_BORDER_RADIUS: LengthPercentageTuple = [\n {\n type: TokenType.PERCENTAGE_TOKEN,\n flags: 0,\n number: 50\n }\n];\n\nconst reformatInputBounds = (bounds: Bounds): Bounds => {\n if (bounds.width > bounds.height) {\n return new Bounds(bounds.left + (bounds.width - bounds.height) / 2, bounds.top, bounds.height, bounds.height);\n } else if (bounds.width < bounds.height) {\n return new Bounds(bounds.left, bounds.top + (bounds.height - bounds.width) / 2, bounds.width, bounds.width);\n }\n return bounds;\n};\n\nconst getInputValue = (node: HTMLInputElement): string => {\n const value = node.type === PASSWORD ? new Array(node.value.length + 1).join('\\u2022') : node.value;\n\n return value.length === 0 ? node.placeholder || '' : value;\n};\n\nexport const CHECKBOX = 'checkbox';\nexport const RADIO = 'radio';\nexport const PASSWORD = 'password';\nexport const INPUT_COLOR = 0x2a2a2aff;\n\nexport class InputElementContainer extends ElementContainer {\n readonly type: string;\n readonly checked: boolean;\n readonly value: string;\n\n constructor(context: Context, input: HTMLInputElement) {\n super(context, input);\n this.type = input.type.toLowerCase();\n this.checked = input.checked;\n this.value = getInputValue(input);\n\n if (this.type === CHECKBOX || this.type === RADIO) {\n this.styles.backgroundColor = 0xdededeff;\n this.styles.borderTopColor =\n this.styles.borderRightColor =\n this.styles.borderBottomColor =\n this.styles.borderLeftColor =\n 0xa5a5a5ff;\n this.styles.borderTopWidth =\n this.styles.borderRightWidth =\n this.styles.borderBottomWidth =\n this.styles.borderLeftWidth =\n 1;\n this.styles.borderTopStyle =\n this.styles.borderRightStyle =\n this.styles.borderBottomStyle =\n this.styles.borderLeftStyle =\n BORDER_STYLE.SOLID;\n this.styles.backgroundClip = [BACKGROUND_CLIP.BORDER_BOX];\n this.styles.backgroundOrigin = [BACKGROUND_ORIGIN.BORDER_BOX];\n this.bounds = reformatInputBounds(this.bounds);\n }\n\n switch (this.type) {\n case CHECKBOX:\n this.styles.borderTopRightRadius =\n this.styles.borderTopLeftRadius =\n this.styles.borderBottomRightRadius =\n this.styles.borderBottomLeftRadius =\n CHECKBOX_BORDER_RADIUS;\n break;\n case RADIO:\n this.styles.borderTopRightRadius =\n this.styles.borderTopLeftRadius =\n this.styles.borderBottomRightRadius =\n this.styles.borderBottomLeftRadius =\n RADIO_BORDER_RADIUS;\n break;\n }\n }\n}\n","import { ElementContainer } from '../element-container';\nimport { Context } from '../../core/context';\nexport class SelectElementContainer extends ElementContainer {\n readonly value: string;\n constructor(context: Context, element: HTMLSelectElement) {\n super(context, element);\n const option = element.options[element.selectedIndex || 0];\n this.value = option ? option.text || '' : '';\n }\n}\n","import { ElementContainer } from '../element-container';\nimport { Context } from '../../core/context';\nexport class TextareaElementContainer extends ElementContainer {\n readonly value: string;\n constructor(context: Context, element: HTMLTextAreaElement) {\n super(context, element);\n this.value = element.value;\n }\n}\n","import { ElementContainer } from '../element-container';\nimport { parseTree } from '../node-parser';\nimport { Color, parseColor, COLORS } from '../../css/types/color';\nimport { isTransparent } from '../../css/types/color-utilities';\nimport { Context } from '../../core/context';\n\nexport class IFrameElementContainer extends ElementContainer {\n src: string;\n width: number;\n height: number;\n tree?: ElementContainer;\n backgroundColor: Color;\n\n constructor(context: Context, iframe: HTMLIFrameElement) {\n super(context, iframe);\n this.src = iframe.src;\n this.width = parseInt(iframe.width, 10) || 0;\n this.height = parseInt(iframe.height, 10) || 0;\n this.backgroundColor = this.styles.backgroundColor;\n try {\n if (\n iframe.contentWindow &&\n iframe.contentWindow.document &&\n iframe.contentWindow.document.documentElement\n ) {\n this.tree = parseTree(context, iframe.contentWindow.document.documentElement);\n\n // http://www.w3.org/TR/css3-background/#special-backgrounds\n const documentBackgroundColor = iframe.contentWindow.document.documentElement\n ? parseColor(\n context,\n getComputedStyle(iframe.contentWindow.document.documentElement).backgroundColor as string\n )\n : COLORS.TRANSPARENT;\n const bodyBackgroundColor = iframe.contentWindow.document.body\n ? parseColor(\n context,\n getComputedStyle(iframe.contentWindow.document.body).backgroundColor as string\n )\n : COLORS.TRANSPARENT;\n\n this.backgroundColor = isTransparent(documentBackgroundColor)\n ? isTransparent(bodyBackgroundColor)\n ? this.styles.backgroundColor\n : bodyBackgroundColor\n : documentBackgroundColor;\n }\n } catch (e) {}\n }\n}\n","import { CSSParsedDeclaration } from '../css';\nimport { ElementContainer, FLAGS } from './element-container';\nimport { TextContainer } from './text-container';\nimport { ImageElementContainer } from './replaced-elements/image-element-container';\nimport { CanvasElementContainer } from './replaced-elements/canvas-element-container';\nimport { SVGElementContainer } from './replaced-elements/svg-element-container';\nimport { LIElementContainer } from './elements/li-element-container';\nimport { OLElementContainer } from './elements/ol-element-container';\nimport { InputElementContainer } from './replaced-elements/input-element-container';\nimport { SelectElementContainer } from './elements/select-element-container';\nimport { TextareaElementContainer } from './elements/textarea-element-container';\nimport { IFrameElementContainer } from './replaced-elements/iframe-element-container';\nimport { Context } from '../core/context';\n\nconst LIST_OWNERS = ['OL', 'UL', 'MENU'];\n\nconst parseNodeTree = (context: Context, node: Node, parent: ElementContainer, root: ElementContainer) => {\n for (let childNode = node.firstChild, nextNode; childNode; childNode = nextNode) {\n nextNode = childNode.nextSibling;\n\n if (isTextNode(childNode) && childNode.data.trim().length > 0) {\n parent.textNodes.push(new TextContainer(context, childNode, parent.styles));\n } else if (isElementNode(childNode)) {\n if (isSlotElement(childNode) && childNode.assignedNodes) {\n childNode.assignedNodes().forEach((childNode) => parseNodeTree(context, childNode, parent, root));\n } else {\n const container = createContainer(context, childNode);\n if (container.styles.isVisible()) {\n if (createsRealStackingContext(childNode, container, root)) {\n container.flags |= FLAGS.CREATES_REAL_STACKING_CONTEXT;\n } else if (createsStackingContext(container.styles)) {\n container.flags |= FLAGS.CREATES_STACKING_CONTEXT;\n }\n\n if (LIST_OWNERS.indexOf(childNode.tagName) !== -1) {\n container.flags |= FLAGS.IS_LIST_OWNER;\n }\n\n parent.elements.push(container);\n childNode.slot;\n if (childNode.shadowRoot) {\n parseNodeTree(context, childNode.shadowRoot, container, root);\n } else if (\n !isTextareaElement(childNode) &&\n !isSVGElement(childNode) &&\n !isSelectElement(childNode)\n ) {\n parseNodeTree(context, childNode, container, root);\n }\n }\n }\n }\n }\n};\n\nconst createContainer = (context: Context, element: Element): ElementContainer => {\n if (isImageElement(element)) {\n return new ImageElementContainer(context, element);\n }\n\n if (isCanvasElement(element)) {\n return new CanvasElementContainer(context, element);\n }\n\n if (isSVGElement(element)) {\n return new SVGElementContainer(context, element);\n }\n\n if (isLIElement(element)) {\n return new LIElementContainer(context, element);\n }\n\n if (isOLElement(element)) {\n return new OLElementContainer(context, element);\n }\n\n if (isInputElement(element)) {\n return new InputElementContainer(context, element);\n }\n\n if (isSelectElement(element)) {\n return new SelectElementContainer(context, element);\n }\n\n if (isTextareaElement(element)) {\n return new TextareaElementContainer(context, element);\n }\n\n if (isIFrameElement(element)) {\n return new IFrameElementContainer(context, element);\n }\n\n return new ElementContainer(context, element);\n};\n\nexport const parseTree = (context: Context, element: HTMLElement): ElementContainer => {\n const container = createContainer(context, element);\n container.flags |= FLAGS.CREATES_REAL_STACKING_CONTEXT;\n parseNodeTree(context, element, container, container);\n return container;\n};\n\nconst createsRealStackingContext = (node: Element, container: ElementContainer, root: ElementContainer): boolean => {\n return (\n container.styles.isPositionedWithZIndex() ||\n container.styles.opacity < 1 ||\n container.styles.isTransformed() ||\n (isBodyElement(node) && root.styles.isTransparent())\n );\n};\n\nconst createsStackingContext = (styles: CSSParsedDeclaration): boolean => styles.isPositioned() || styles.isFloating();\n\nexport const isTextNode = (node: Node): node is Text => node.nodeType === Node.TEXT_NODE;\nexport const isElementNode = (node: Node): node is Element => node.nodeType === Node.ELEMENT_NODE;\nexport const isHTMLElementNode = (node: Node): node is HTMLElement =>\n isElementNode(node) && typeof (node as HTMLElement).style !== 'undefined' && !isSVGElementNode(node);\nexport const isSVGElementNode = (element: Element): element is SVGElement =>\n typeof (element as SVGElement).className === 'object';\nexport const isLIElement = (node: Element): node is HTMLLIElement => node.tagName === 'LI';\nexport const isOLElement = (node: Element): node is HTMLOListElement => node.tagName === 'OL';\nexport const isInputElement = (node: Element): node is HTMLInputElement => node.tagName === 'INPUT';\nexport const isHTMLElement = (node: Element): node is HTMLHtmlElement => node.tagName === 'HTML';\nexport const isSVGElement = (node: Element): node is SVGSVGElement => node.tagName === 'svg';\nexport const isBodyElement = (node: Element): node is HTMLBodyElement => node.tagName === 'BODY';\nexport const isCanvasElement = (node: Element): node is HTMLCanvasElement => node.tagName === 'CANVAS';\nexport const isVideoElement = (node: Element): node is HTMLVideoElement => node.tagName === 'VIDEO';\nexport const isImageElement = (node: Element): node is HTMLImageElement => node.tagName === 'IMG';\nexport const isIFrameElement = (node: Element): node is HTMLIFrameElement => node.tagName === 'IFRAME';\nexport const isStyleElement = (node: Element): node is HTMLStyleElement => node.tagName === 'STYLE';\nexport const isScriptElement = (node: Element): node is HTMLScriptElement => node.tagName === 'SCRIPT';\nexport const isTextareaElement = (node: Element): node is HTMLTextAreaElement => node.tagName === 'TEXTAREA';\nexport const isSelectElement = (node: Element): node is HTMLSelectElement => node.tagName === 'SELECT';\nexport const isSlotElement = (node: Element): node is HTMLSlotElement => node.tagName === 'SLOT';\n// https://html.spec.whatwg.org/multipage/custom-elements.html#valid-custom-element-name\nexport const isCustomElement = (node: Element): node is HTMLElement => node.tagName.indexOf('-') > 0;\n","import { LIST_STYLE_TYPE } from '../../property-descriptors/list-style-type';\nimport { fromCodePoint } from 'css-line-break';\nimport { contains } from '../../../core/bitwise';\nimport { CSSParsedCounterDeclaration } from '../../index';\n\nexport class CounterState {\n private readonly counters: { [key: string]: number[] } = {};\n\n getCounterValue(name: string): number {\n const counter = this.counters[name];\n\n if (counter && counter.length) {\n return counter[counter.length - 1];\n }\n return 1;\n }\n\n getCounterValues(name: string): readonly number[] {\n const counter = this.counters[name];\n return counter ? counter : [];\n }\n\n pop(counters: string[]): void {\n counters.forEach((counter) => this.counters[counter].pop());\n }\n\n parse(style: CSSParsedCounterDeclaration): string[] {\n const counterIncrement = style.counterIncrement;\n const counterReset = style.counterReset;\n let canReset = true;\n\n if (counterIncrement !== null) {\n counterIncrement.forEach((entry) => {\n const counter = this.counters[entry.counter];\n if (counter && entry.increment !== 0) {\n canReset = false;\n if (!counter.length) {\n counter.push(1);\n }\n counter[Math.max(0, counter.length - 1)] += entry.increment;\n }\n });\n }\n\n const counterNames: string[] = [];\n if (canReset) {\n counterReset.forEach((entry) => {\n let counter = this.counters[entry.counter];\n counterNames.push(entry.counter);\n if (!counter) {\n counter = this.counters[entry.counter] = [];\n }\n counter.push(entry.reset);\n });\n }\n\n return counterNames;\n }\n}\n\ninterface CounterSymbols {\n integers: number[];\n values: string[];\n}\n\nconst ROMAN_UPPER: CounterSymbols = {\n integers: [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1],\n values: ['M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I']\n};\n\nconst ARMENIAN: CounterSymbols = {\n integers: [\n 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90, 80, 70,\n 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1\n ],\n values: [\n 'Ք',\n 'Փ',\n 'Ւ',\n 'Ց',\n 'Ր',\n 'Տ',\n 'Վ',\n 'Ս',\n 'Ռ',\n 'Ջ',\n 'Պ',\n 'Չ',\n 'Ո',\n 'Շ',\n 'Ն',\n 'Յ',\n 'Մ',\n 'Ճ',\n 'Ղ',\n 'Ձ',\n 'Հ',\n 'Կ',\n 'Ծ',\n 'Խ',\n 'Լ',\n 'Ի',\n 'Ժ',\n 'Թ',\n 'Ը',\n 'Է',\n 'Զ',\n 'Ե',\n 'Դ',\n 'Գ',\n 'Բ',\n 'Ա'\n ]\n};\n\nconst HEBREW: CounterSymbols = {\n integers: [\n 10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20,\n 19, 18, 17, 16, 15, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1\n ],\n values: [\n 'י׳',\n 'ט׳',\n 'ח׳',\n 'ז׳',\n 'ו׳',\n 'ה׳',\n 'ד׳',\n 'ג׳',\n 'ב׳',\n 'א׳',\n 'ת',\n 'ש',\n 'ר',\n 'ק',\n 'צ',\n 'פ',\n 'ע',\n 'ס',\n 'נ',\n 'מ',\n 'ל',\n 'כ',\n 'יט',\n 'יח',\n 'יז',\n 'טז',\n 'טו',\n 'י',\n 'ט',\n 'ח',\n 'ז',\n 'ו',\n 'ה',\n 'ד',\n 'ג',\n 'ב',\n 'א'\n ]\n};\n\nconst GEORGIAN: CounterSymbols = {\n integers: [\n 10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90,\n 80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1\n ],\n values: [\n 'ჵ',\n 'ჰ',\n 'ჯ',\n 'ჴ',\n 'ხ',\n 'ჭ',\n 'წ',\n 'ძ',\n 'ც',\n 'ჩ',\n 'შ',\n 'ყ',\n 'ღ',\n 'ქ',\n 'ფ',\n 'ჳ',\n 'ტ',\n 'ს',\n 'რ',\n 'ჟ',\n 'პ',\n 'ო',\n 'ჲ',\n 'ნ',\n 'მ',\n 'ლ',\n 'კ',\n 'ი',\n 'თ',\n 'ჱ',\n 'ზ',\n 'ვ',\n 'ე',\n 'დ',\n 'გ',\n 'ბ',\n 'ა'\n ]\n};\n\nconst createAdditiveCounter = (\n value: number,\n min: number,\n max: number,\n symbols: CounterSymbols,\n fallback: LIST_STYLE_TYPE,\n suffix: string\n) => {\n if (value < min || value > max) {\n return createCounterText(value, fallback, suffix.length > 0);\n }\n\n return (\n symbols.integers.reduce((string, integer, index) => {\n while (value >= integer) {\n value -= integer;\n string += symbols.values[index];\n }\n return string;\n }, '') + suffix\n );\n};\n\nconst createCounterStyleWithSymbolResolver = (\n value: number,\n codePointRangeLength: number,\n isNumeric: boolean,\n resolver: (codePoint: number) => string\n): string => {\n let string = '';\n\n do {\n if (!isNumeric) {\n value--;\n }\n string = resolver(value) + string;\n value /= codePointRangeLength;\n } while (value * codePointRangeLength >= codePointRangeLength);\n\n return string;\n};\n\nconst createCounterStyleFromRange = (\n value: number,\n codePointRangeStart: number,\n codePointRangeEnd: number,\n isNumeric: boolean,\n suffix: string\n): string => {\n const codePointRangeLength = codePointRangeEnd - codePointRangeStart + 1;\n\n return (\n (value < 0 ? '-' : '') +\n (createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, isNumeric, (codePoint) =>\n fromCodePoint(Math.floor(codePoint % codePointRangeLength) + codePointRangeStart)\n ) +\n suffix)\n );\n};\n\nconst createCounterStyleFromSymbols = (value: number, symbols: string, suffix = '. '): string => {\n const codePointRangeLength = symbols.length;\n return (\n createCounterStyleWithSymbolResolver(\n Math.abs(value),\n codePointRangeLength,\n false,\n (codePoint) => symbols[Math.floor(codePoint % codePointRangeLength)]\n ) + suffix\n );\n};\n\nconst CJK_ZEROS = 1 << 0;\nconst CJK_TEN_COEFFICIENTS = 1 << 1;\nconst CJK_TEN_HIGH_COEFFICIENTS = 1 << 2;\nconst CJK_HUNDRED_COEFFICIENTS = 1 << 3;\n\nconst createCJKCounter = (\n value: number,\n numbers: string,\n multipliers: string,\n negativeSign: string,\n suffix: string,\n flags: number\n): string => {\n if (value < -9999 || value > 9999) {\n return createCounterText(value, LIST_STYLE_TYPE.CJK_DECIMAL, suffix.length > 0);\n }\n let tmp = Math.abs(value);\n let string = suffix;\n\n if (tmp === 0) {\n return numbers[0] + string;\n }\n\n for (let digit = 0; tmp > 0 && digit <= 4; digit++) {\n const coefficient = tmp % 10;\n\n if (coefficient === 0 && contains(flags, CJK_ZEROS) && string !== '') {\n string = numbers[coefficient] + string;\n } else if (\n coefficient > 1 ||\n (coefficient === 1 && digit === 0) ||\n (coefficient === 1 && digit === 1 && contains(flags, CJK_TEN_COEFFICIENTS)) ||\n (coefficient === 1 && digit === 1 && contains(flags, CJK_TEN_HIGH_COEFFICIENTS) && value > 100) ||\n (coefficient === 1 && digit > 1 && contains(flags, CJK_HUNDRED_COEFFICIENTS))\n ) {\n string = numbers[coefficient] + (digit > 0 ? multipliers[digit - 1] : '') + string;\n } else if (coefficient === 1 && digit > 0) {\n string = multipliers[digit - 1] + string;\n }\n tmp = Math.floor(tmp / 10);\n }\n\n return (value < 0 ? negativeSign : '') + string;\n};\n\nconst CHINESE_INFORMAL_MULTIPLIERS = '十百千萬';\nconst CHINESE_FORMAL_MULTIPLIERS = '拾佰仟萬';\nconst JAPANESE_NEGATIVE = 'マイナス';\nconst KOREAN_NEGATIVE = '마이너스';\n\nexport const createCounterText = (value: number, type: LIST_STYLE_TYPE, appendSuffix: boolean): string => {\n const defaultSuffix = appendSuffix ? '. ' : '';\n const cjkSuffix = appendSuffix ? '、' : '';\n const koreanSuffix = appendSuffix ? ', ' : '';\n const spaceSuffix = appendSuffix ? ' ' : '';\n switch (type) {\n case LIST_STYLE_TYPE.DISC:\n return '•' + spaceSuffix;\n case LIST_STYLE_TYPE.CIRCLE:\n return '◦' + spaceSuffix;\n case LIST_STYLE_TYPE.SQUARE:\n return '◾' + spaceSuffix;\n case LIST_STYLE_TYPE.DECIMAL_LEADING_ZERO:\n const string = createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);\n return string.length < 4 ? `0${string}` : string;\n case LIST_STYLE_TYPE.CJK_DECIMAL:\n return createCounterStyleFromSymbols(value, '〇一二三四五六七八九', cjkSuffix);\n case LIST_STYLE_TYPE.LOWER_ROMAN:\n return createAdditiveCounter(\n value,\n 1,\n 3999,\n ROMAN_UPPER,\n LIST_STYLE_TYPE.DECIMAL,\n defaultSuffix\n ).toLowerCase();\n case LIST_STYLE_TYPE.UPPER_ROMAN:\n return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);\n case LIST_STYLE_TYPE.LOWER_GREEK:\n return createCounterStyleFromRange(value, 945, 969, false, defaultSuffix);\n case LIST_STYLE_TYPE.LOWER_ALPHA:\n return createCounterStyleFromRange(value, 97, 122, false, defaultSuffix);\n case LIST_STYLE_TYPE.UPPER_ALPHA:\n return createCounterStyleFromRange(value, 65, 90, false, defaultSuffix);\n case LIST_STYLE_TYPE.ARABIC_INDIC:\n return createCounterStyleFromRange(value, 1632, 1641, true, defaultSuffix);\n case LIST_STYLE_TYPE.ARMENIAN:\n case LIST_STYLE_TYPE.UPPER_ARMENIAN:\n return createAdditiveCounter(value, 1, 9999, ARMENIAN, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);\n case LIST_STYLE_TYPE.LOWER_ARMENIAN:\n return createAdditiveCounter(\n value,\n 1,\n 9999,\n ARMENIAN,\n LIST_STYLE_TYPE.DECIMAL,\n defaultSuffix\n ).toLowerCase();\n case LIST_STYLE_TYPE.BENGALI:\n return createCounterStyleFromRange(value, 2534, 2543, true, defaultSuffix);\n case LIST_STYLE_TYPE.CAMBODIAN:\n case LIST_STYLE_TYPE.KHMER:\n return createCounterStyleFromRange(value, 6112, 6121, true, defaultSuffix);\n case LIST_STYLE_TYPE.CJK_EARTHLY_BRANCH:\n return createCounterStyleFromSymbols(value, '子丑寅卯辰巳午未申酉戌亥', cjkSuffix);\n case LIST_STYLE_TYPE.CJK_HEAVENLY_STEM:\n return createCounterStyleFromSymbols(value, '甲乙丙丁戊己庚辛壬癸', cjkSuffix);\n case LIST_STYLE_TYPE.CJK_IDEOGRAPHIC:\n case LIST_STYLE_TYPE.TRAD_CHINESE_INFORMAL:\n return createCJKCounter(\n value,\n '零一二三四五六七八九',\n CHINESE_INFORMAL_MULTIPLIERS,\n '負',\n cjkSuffix,\n CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS\n );\n case LIST_STYLE_TYPE.TRAD_CHINESE_FORMAL:\n return createCJKCounter(\n value,\n '零壹貳參肆伍陸柒捌玖',\n CHINESE_FORMAL_MULTIPLIERS,\n '負',\n cjkSuffix,\n CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS\n );\n case LIST_STYLE_TYPE.SIMP_CHINESE_INFORMAL:\n return createCJKCounter(\n value,\n '零一二三四五六七八九',\n CHINESE_INFORMAL_MULTIPLIERS,\n '负',\n cjkSuffix,\n CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS\n );\n case LIST_STYLE_TYPE.SIMP_CHINESE_FORMAL:\n return createCJKCounter(\n value,\n '零壹贰叁肆伍陆柒捌玖',\n CHINESE_FORMAL_MULTIPLIERS,\n '负',\n cjkSuffix,\n CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS\n );\n case LIST_STYLE_TYPE.JAPANESE_INFORMAL:\n return createCJKCounter(value, '〇一二三四五六七八九', '十百千万', JAPANESE_NEGATIVE, cjkSuffix, 0);\n case LIST_STYLE_TYPE.JAPANESE_FORMAL:\n return createCJKCounter(\n value,\n '零壱弐参四伍六七八九',\n '拾百千万',\n JAPANESE_NEGATIVE,\n cjkSuffix,\n CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS\n );\n case LIST_STYLE_TYPE.KOREAN_HANGUL_FORMAL:\n return createCJKCounter(\n value,\n '영일이삼사오육칠팔구',\n '십백천만',\n KOREAN_NEGATIVE,\n koreanSuffix,\n CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS\n );\n case LIST_STYLE_TYPE.KOREAN_HANJA_INFORMAL:\n return createCJKCounter(value, '零一二三四五六七八九', '十百千萬', KOREAN_NEGATIVE, koreanSuffix, 0);\n case LIST_STYLE_TYPE.KOREAN_HANJA_FORMAL:\n return createCJKCounter(\n value,\n '零壹貳參四五六七八九',\n '拾百千',\n KOREAN_NEGATIVE,\n koreanSuffix,\n CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS\n );\n case LIST_STYLE_TYPE.DEVANAGARI:\n return createCounterStyleFromRange(value, 0x966, 0x96f, true, defaultSuffix);\n case LIST_STYLE_TYPE.GEORGIAN:\n return createAdditiveCounter(value, 1, 19999, GEORGIAN, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);\n case LIST_STYLE_TYPE.GUJARATI:\n return createCounterStyleFromRange(value, 0xae6, 0xaef, true, defaultSuffix);\n case LIST_STYLE_TYPE.GURMUKHI:\n return createCounterStyleFromRange(value, 0xa66, 0xa6f, true, defaultSuffix);\n case LIST_STYLE_TYPE.HEBREW:\n return createAdditiveCounter(value, 1, 10999, HEBREW, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);\n case LIST_STYLE_TYPE.HIRAGANA:\n return createCounterStyleFromSymbols(\n value,\n 'あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん'\n );\n case LIST_STYLE_TYPE.HIRAGANA_IROHA:\n return createCounterStyleFromSymbols(\n value,\n 'いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやまけふこえてあさきゆめみしゑひもせす'\n );\n case LIST_STYLE_TYPE.KANNADA:\n return createCounterStyleFromRange(value, 0xce6, 0xcef, true, defaultSuffix);\n case LIST_STYLE_TYPE.KATAKANA:\n return createCounterStyleFromSymbols(\n value,\n 'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン',\n cjkSuffix\n );\n case LIST_STYLE_TYPE.KATAKANA_IROHA:\n return createCounterStyleFromSymbols(\n value,\n 'イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス',\n cjkSuffix\n );\n case LIST_STYLE_TYPE.LAO:\n return createCounterStyleFromRange(value, 0xed0, 0xed9, true, defaultSuffix);\n case LIST_STYLE_TYPE.MONGOLIAN:\n return createCounterStyleFromRange(value, 0x1810, 0x1819, true, defaultSuffix);\n case LIST_STYLE_TYPE.MYANMAR:\n return createCounterStyleFromRange(value, 0x1040, 0x1049, true, defaultSuffix);\n case LIST_STYLE_TYPE.ORIYA:\n return createCounterStyleFromRange(value, 0xb66, 0xb6f, true, defaultSuffix);\n case LIST_STYLE_TYPE.PERSIAN:\n return createCounterStyleFromRange(value, 0x6f0, 0x6f9, true, defaultSuffix);\n case LIST_STYLE_TYPE.TAMIL:\n return createCounterStyleFromRange(value, 0xbe6, 0xbef, true, defaultSuffix);\n case LIST_STYLE_TYPE.TELUGU:\n return createCounterStyleFromRange(value, 0xc66, 0xc6f, true, defaultSuffix);\n case LIST_STYLE_TYPE.THAI:\n return createCounterStyleFromRange(value, 0xe50, 0xe59, true, defaultSuffix);\n case LIST_STYLE_TYPE.TIBETAN:\n return createCounterStyleFromRange(value, 0xf20, 0xf29, true, defaultSuffix);\n case LIST_STYLE_TYPE.DECIMAL:\n default:\n return createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);\n }\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<HTMLIFrameElement> {\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 <style> sheets when fetched through getComputedStyle\n if window url is about:blank, we can assign the url to current by writing onto the document\n */\n\n const iframeLoad = iframeLoader(iframe).then(async () => {\n this.scrolledElements.forEach(restoreNodeScroll);\n if (cloneWindow) {\n cloneWindow.scrollTo(windowSize.left, windowSize.top);\n if (\n /(iPad|iPhone|iPod)/g.test(navigator.userAgent) &&\n (cloneWindow.scrollY !== windowSize.top || cloneWindow.scrollX !== windowSize.left)\n ) {\n this.context.logger.warn('Unable to restore scroll position for cloned document');\n this.context.windowBounds = this.context.windowBounds.add(\n cloneWindow.scrollX - windowSize.left,\n cloneWindow.scrollY - windowSize.top,\n 0,\n 0\n );\n }\n }\n\n const onclone = this.options.onclone;\n\n const referenceElement = this.clonedReferenceElement;\n\n if (typeof referenceElement === 'undefined') {\n return Promise.reject(`Error finding the ${this.referenceElement.nodeName} in the cloned document`);\n }\n\n if (documentClone.fonts && documentClone.fonts.ready) {\n await documentClone.fonts.ready;\n }\n\n if (/(AppleWebKit)/g.test(navigator.userAgent)) {\n await imagesReady(documentClone);\n }\n\n if (typeof onclone === 'function') {\n return Promise.resolve()\n .then(() => onclone(documentClone, referenceElement))\n .then(() => iframe);\n }\n\n return iframe;\n });\n\n const adoptedNode = documentClone.adoptNode(this.documentElement);\n /**\n * The baseURI of the document will be lost after documentClone.open().\n * We can avoid it by adding <base> element.\n * */\n addBase(adoptedNode, documentClone);\n documentClone.open();\n documentClone.write(`${serializeDoctype(document.doctype)}<html></html>`);\n // Chrome scrolls the parent document for some reason after the write to the cloned window???\n restoreOwnerScroll(this.referenceElement.ownerDocument, scrollX, scrollY);\n documentClone.replaceChild(adoptedNode, documentClone.documentElement);\n documentClone.close();\n\n return iframeLoad;\n }\n\n createElementClone<T extends HTMLElement | SVGElement>(node: T): HTMLElement | SVGElement {\n if (isDebugging(node, DebuggerType.CLONE)) {\n debugger;\n }\n if (isCanvasElement(node)) {\n return this.createCanvasClone(node);\n }\n if (isVideoElement(node)) {\n return this.createVideoClone(node);\n }\n if (isStyleElement(node)) {\n return this.createStyleClone(node);\n }\n\n const clone = node.cloneNode(false) as T;\n if (isImageElement(clone)) {\n if (isImageElement(node) && node.currentSrc && node.currentSrc !== node.src) {\n clone.src = node.currentSrc;\n clone.srcset = '';\n }\n\n if (clone.loading === 'lazy') {\n clone.loading = 'eager';\n }\n }\n\n if (isCustomElement(clone)) {\n return this.createCustomElementClone(clone);\n }\n\n return clone;\n }\n\n createCustomElementClone(node: HTMLElement): HTMLElement {\n const clone = document.createElement('html2canvascustomelement');\n copyCSSStyles(node.style, clone);\n\n return clone;\n }\n\n createStyleClone(node: HTMLStyleElement): HTMLStyleElement {\n try {\n const sheet = node.sheet as CSSStyleSheet | undefined;\n if (sheet && sheet.cssRules) {\n const css: string = [].slice.call(sheet.cssRules, 0).reduce((css: string, rule: CSSRule) => {\n if (rule && typeof rule.cssText === 'string') {\n return css + rule.cssText;\n }\n return css;\n }, '');\n const style = node.cloneNode(false) as HTMLStyleElement;\n style.textContent = css;\n return style;\n }\n } catch (e) {\n // accessing node.sheet.cssRules throws a DOMException\n this.context.logger.error('Unable to access cssRules property', e);\n if (e.name !== 'SecurityError') {\n throw e;\n }\n }\n return node.cloneNode(false) as HTMLStyleElement;\n }\n\n createCanvasClone(canvas: HTMLCanvasElement): HTMLImageElement | HTMLCanvasElement {\n if (this.options.inlineImages && canvas.ownerDocument) {\n const img = canvas.ownerDocument.createElement('img');\n try {\n img.src = canvas.toDataURL();\n return img;\n } catch (e) {\n this.context.logger.info(`Unable to inline canvas contents, canvas is tainted`, canvas);\n }\n }\n\n const clonedCanvas = canvas.cloneNode(false) as HTMLCanvasElement;\n\n try {\n clonedCanvas.width = canvas.width;\n clonedCanvas.height = canvas.height;\n const ctx = canvas.getContext('2d');\n const clonedCtx = clonedCanvas.getContext('2d', { willReadFrequently: true }) as CanvasRenderingContext2D;\n if (clonedCtx) {\n if (!this.options.allowTaint && ctx) {\n clonedCtx.putImageData(ctx.getImageData(0, 0, canvas.width, canvas.height), 0, 0);\n } else {\n const gl = canvas.getContext('webgl2') ?? canvas.getContext('webgl');\n if (gl) {\n const attribs = gl.getContextAttributes();\n if (attribs?.preserveDrawingBuffer === false) {\n this.context.logger.warn(\n 'Unable to clone WebGL context as it has preserveDrawingBuffer=false',\n canvas\n );\n }\n }\n\n clonedCtx.drawImage(canvas, 0, 0);\n }\n }\n return clonedCanvas;\n } catch (e) {\n this.context.logger.info(`Unable to clone canvas as it is tainted`, canvas);\n }\n\n return clonedCanvas;\n }\n\n createVideoClone(video: HTMLVideoElement): HTMLCanvasElement {\n const canvas = video.ownerDocument.createElement('canvas');\n\n canvas.width = video.offsetWidth;\n canvas.height = video.offsetHeight;\n const ctx = canvas.getContext('2d');\n\n try {\n if (ctx) {\n ctx.drawImage(video, 0, 0, canvas.width, canvas.height);\n if (!this.options.allowTaint) {\n ctx.getImageData(0, 0, canvas.width, canvas.height);\n }\n }\n return canvas;\n } catch (e) {\n this.context.logger.info(`Unable to clone video as it is tainted`, video);\n }\n\n const blankCanvas = video.ownerDocument.createElement('canvas');\n\n blankCanvas.width = video.offsetWidth;\n blankCanvas.height = video.offsetHeight;\n return blankCanvas;\n }\n\n appendChildNode(clone: HTMLElement | SVGElement, child: Node, copyStyles: boolean): void {\n if (\n !isElementNode(child) ||\n (!isScriptElement(child) &&\n !child.hasAttribute(IGNORE_ATTRIBUTE) &&\n (typeof this.options.ignoreElements !== 'function' || !this.options.ignoreElements(child)))\n ) {\n if (!this.options.copyStyles || !isElementNode(child) || !isStyleElement(child)) {\n clone.appendChild(this.cloneNode(child, copyStyles));\n }\n }\n }\n\n cloneChildNodes(node: Element, clone: HTMLElement | SVGElement, copyStyles: boolean): void {\n for (\n let child = node.shadowRoot ? node.shadowRoot.firstChild : node.firstChild;\n child;\n child = child.nextSibling\n ) {\n if (isElementNode(child) && isSlotElement(child) && typeof child.assignedNodes === 'function') {\n const assignedNodes = child.assignedNodes() as ChildNode[];\n if (assignedNodes.length) {\n assignedNodes.forEach((assignedNode) => this.appendChildNode(clone, assignedNode, copyStyles));\n }\n } else {\n this.appendChildNode(clone, child, copyStyles);\n }\n }\n }\n\n cloneNode(node: Node, copyStyles: boolean): Node {\n if (isTextNode(node)) {\n return document.createTextNode(node.data);\n }\n\n if (!node.ownerDocument) {\n return node.cloneNode(false);\n }\n\n const window = node.ownerDocument.defaultView;\n\n if (window && isElementNode(node) && (isHTMLElementNode(node) || isSVGElementNode(node))) {\n const clone = this.createElementClone(node);\n clone.style.transitionProperty = 'none';\n\n const style = window.getComputedStyle(node);\n const styleBefore = window.getComputedStyle(node, ':before');\n const styleAfter = window.getComputedStyle(node, ':after');\n\n if (this.referenceElement === node && isHTMLElementNode(clone)) {\n this.clonedReferenceElement = clone;\n }\n if (isBodyElement(clone)) {\n createPseudoHideStyles(clone);\n }\n\n const counters = this.counters.parse(new CSSParsedCounterDeclaration(this.context, style));\n const before = this.resolvePseudoContent(node, clone, styleBefore, PseudoElementType.BEFORE);\n\n if (isCustomElement(node)) {\n copyStyles = true;\n }\n\n if (!isVideoElement(node)) {\n this.cloneChildNodes(node, clone, copyStyles);\n }\n\n if (before) {\n clone.insertBefore(before, clone.firstChild);\n }\n\n const after = this.resolvePseudoContent(node, clone, styleAfter, PseudoElementType.AFTER);\n if (after) {\n clone.appendChild(after);\n }\n\n this.counters.pop(counters);\n\n if (\n (style && (this.options.copyStyles || isSVGElementNode(node)) && !isIFrameElement(node)) ||\n copyStyles\n ) {\n copyCSSStyles(style, clone);\n }\n\n if (node.scrollTop !== 0 || node.scrollLeft !== 0) {\n this.scrolledElements.push([clone, node.scrollLeft, node.scrollTop]);\n }\n\n if (\n (isTextareaElement(node) || isSelectElement(node)) &&\n (isTextareaElement(clone) || isSelectElement(clone))\n ) {\n clone.value = node.value;\n }\n\n return clone;\n }\n\n return node.cloneNode(false);\n }\n\n resolvePseudoContent(\n node: Element,\n clone: Element,\n style: CSSStyleDeclaration,\n pseudoElt: PseudoElementType\n ): HTMLElement | void {\n if (!style) {\n return;\n }\n\n const value = style.content;\n const document = clone.ownerDocument;\n if (!document || !value || value === 'none' || value === '-moz-alt-content' || style.display === 'none') {\n return;\n }\n\n this.counters.parse(new CSSParsedCounterDeclaration(this.context, style));\n const declaration = new CSSParsedPseudoDeclaration(this.context, style);\n\n const anonymousReplacedElement = document.createElement('html2canvaspseudoelement');\n copyCSSStyles(style, anonymousReplacedElement);\n\n declaration.content.forEach((token) => {\n if (token.type === TokenType.STRING_TOKEN) {\n anonymousReplacedElement.appendChild(document.createTextNode(token.value));\n } else if (token.type === TokenType.URL_TOKEN) {\n const img = document.createElement('img');\n img.src = token.value;\n img.style.opacity = '1';\n anonymousReplacedElement.appendChild(img);\n } else if (token.type === TokenType.FUNCTION) {\n if (token.name === 'attr') {\n const attr = token.values.filter(isIdentToken);\n if (attr.length) {\n anonymousReplacedElement.appendChild(\n document.createTextNode(node.getAttribute(attr[0].value) || '')\n );\n }\n } else if (token.name === 'counter') {\n const [counter, counterStyle] = token.values.filter(nonFunctionArgSeparator);\n if (counter && isIdentToken(counter)) {\n const counterState = this.counters.getCounterValue(counter.value);\n const counterType =\n counterStyle && isIdentToken(counterStyle)\n ? listStyleType.parse(this.context, counterStyle.value)\n : LIST_STYLE_TYPE.DECIMAL;\n\n anonymousReplacedElement.appendChild(\n document.createTextNode(createCounterText(counterState, counterType, false))\n );\n }\n } else if (token.name === 'counters') {\n const [counter, delim, counterStyle] = token.values.filter(nonFunctionArgSeparator);\n if (counter && isIdentToken(counter)) {\n const counterStates = this.counters.getCounterValues(counter.value);\n const counterType =\n counterStyle && isIdentToken(counterStyle)\n ? listStyleType.parse(this.context, counterStyle.value)\n : LIST_STYLE_TYPE.DECIMAL;\n const separator = delim && delim.type === TokenType.STRING_TOKEN ? delim.value : '';\n const text = counterStates\n .map((value) => createCounterText(value, counterType, false))\n .join(separator);\n\n anonymousReplacedElement.appendChild(document.createTextNode(text));\n }\n } else {\n // console.log('FUNCTION_TOKEN', token);\n }\n } else if (token.type === TokenType.IDENT_TOKEN) {\n switch (token.value) {\n case 'open-quote':\n anonymousReplacedElement.appendChild(\n document.createTextNode(getQuote(declaration.quotes, this.quoteDepth++, true))\n );\n break;\n case 'close-quote':\n anonymousReplacedElement.appendChild(\n document.createTextNode(getQuote(declaration.quotes, --this.quoteDepth, false))\n );\n break;\n default:\n // safari doesn't parse string tokens correctly because of lack of quotes\n anonymousReplacedElement.appendChild(document.createTextNode(token.value));\n }\n }\n });\n\n anonymousReplacedElement.className = `${PSEUDO_HIDE_ELEMENT_CLASS_BEFORE} ${PSEUDO_HIDE_ELEMENT_CLASS_AFTER}`;\n const newClassName =\n pseudoElt === PseudoElementType.BEFORE\n ? ` ${PSEUDO_HIDE_ELEMENT_CLASS_BEFORE}`\n : ` ${PSEUDO_HIDE_ELEMENT_CLASS_AFTER}`;\n\n if (isSVGElementNode(clone)) {\n clone.className.baseValue += newClassName;\n } else {\n clone.className += newClassName;\n }\n\n return anonymousReplacedElement;\n }\n\n static destroy(container: HTMLIFrameElement): boolean {\n if (container.parentNode) {\n container.parentNode.removeChild(container);\n return true;\n }\n return false;\n }\n}\n\nenum PseudoElementType {\n BEFORE,\n AFTER\n}\n\nconst createIFrameContainer = (ownerDocument: Document, bounds: Bounds): HTMLIFrameElement => {\n const cloneIframeContainer = ownerDocument.createElement('iframe');\n\n cloneIframeContainer.className = 'html2canvas-container';\n cloneIframeContainer.style.visibility = 'hidden';\n cloneIframeContainer.style.position = 'fixed';\n cloneIframeContainer.style.left = '-10000px';\n cloneIframeContainer.style.top = '0px';\n cloneIframeContainer.style.border = '0';\n cloneIframeContainer.width = bounds.width.toString();\n cloneIframeContainer.height = bounds.height.toString();\n cloneIframeContainer.scrolling = 'no'; // ios won't scroll without it\n cloneIframeContainer.setAttribute(IGNORE_ATTRIBUTE, 'true');\n ownerDocument.body.appendChild(cloneIframeContainer);\n\n return cloneIframeContainer;\n};\n\nconst imageReady = (img: HTMLImageElement): Promise<Event | void | string> => {\n return new Promise((resolve) => {\n if (img.complete) {\n resolve();\n return;\n }\n if (!img.src) {\n resolve();\n return;\n }\n img.onload = resolve;\n img.onerror = resolve;\n });\n};\n\nconst imagesReady = (document: HTMLDocument): Promise<unknown[]> => {\n return Promise.all([].slice.call(document.images, 0).map(imageReady));\n};\n\nconst iframeLoader = (iframe: HTMLIFrameElement): Promise<HTMLIFrameElement> => {\n return new Promise((resolve, reject) => {\n const cloneWindow = iframe.contentWindow;\n\n if (!cloneWindow) {\n return reject(`No window assigned for iframe`);\n }\n\n const documentClone = cloneWindow.document;\n\n cloneWindow.onload = iframe.onload = () => {\n cloneWindow.onload = iframe.onload = null;\n const interval = setInterval(() => {\n if (documentClone.body.childNodes.length > 0 && documentClone.readyState === 'complete') {\n clearInterval(interval);\n resolve(iframe);\n }\n }, 50);\n };\n });\n};\n\nconst ignoredStyleProperties = [\n 'all', // #2476\n 'd', // #2483\n 'content' // Safari shows pseudoelements if content is set\n];\n\nexport const copyCSSStyles = <T extends HTMLElement | SVGElement>(style: CSSStyleDeclaration, target: T): T => {\n // Edge does not provide value for cssText\n for (let i = style.length - 1; i >= 0; i--) {\n const property = style.item(i);\n if (ignoredStyleProperties.indexOf(property) === -1) {\n target.style.setProperty(property, style.getPropertyValue(property));\n }\n }\n return target;\n};\n\nconst serializeDoctype = (doctype?: DocumentType | null): string => {\n let str = '';\n if (doctype) {\n str += '<!DOCTYPE ';\n if (doctype.name) {\n str += doctype.name;\n }\n\n if (doctype.internalSubset) {\n str += doctype.internalSubset;\n }\n\n if (doctype.publicId) {\n str += `\"${doctype.publicId}\"`;\n }\n\n if (doctype.systemId) {\n str += `\"${doctype.systemId}\"`;\n }\n\n str += '>';\n }\n\n return str;\n};\n\nconst restoreOwnerScroll = (ownerDocument: Document | null, x: number, y: number) => {\n if (\n ownerDocument &&\n ownerDocument.defaultView &&\n (x !== ownerDocument.defaultView.pageXOffset || y !== ownerDocument.defaultView.pageYOffset)\n ) {\n ownerDocument.defaultView.scrollTo(x, y);\n }\n};\n\nconst restoreNodeScroll = ([element, x, y]: [HTMLElement, number, number]) => {\n element.scrollLeft = x;\n element.scrollTop = y;\n};\n\nconst PSEUDO_BEFORE = ':before';\nconst PSEUDO_AFTER = ':after';\nconst PSEUDO_HIDE_ELEMENT_CLASS_BEFORE = '___html2canvas___pseudoelement_before';\nconst PSEUDO_HIDE_ELEMENT_CLASS_AFTER = '___html2canvas___pseudoelement_after';\n\nconst PSEUDO_HIDE_ELEMENT_STYLE = `{\n content: \"\" !important;\n display: none !important;\n}`;\n\nconst createPseudoHideStyles = (body: HTMLElement) => {\n createStyles(\n body,\n `.${PSEUDO_HIDE_ELEMENT_CLASS_BEFORE}${PSEUDO_BEFORE}${PSEUDO_HIDE_ELEMENT_STYLE}\n .${PSEUDO_HIDE_ELEMENT_CLASS_AFTER}${PSEUDO_AFTER}${PSEUDO_HIDE_ELEMENT_STYLE}`\n );\n};\n\nconst createStyles = (body: HTMLElement, styles: string) => {\n const document = body.ownerDocument;\n if (document) {\n const style = document.createElement('style');\n style.textContent = styles;\n body.appendChild(style);\n }\n};\n\nconst addBase = (targetELement: HTMLElement, referenceDocument: Document) => {\n const baseNode = referenceDocument.createElement('base');\n baseNode.href = referenceDocument.baseURI;\n const headEle = targetELement.getElementsByTagName('head').item(0);\n headEle?.insertBefore(baseNode, headEle?.firstChild ?? null);\n};\n","import { FEATURES } from './features';\nimport { Context } from './context';\n\nexport class CacheStorage {\n private static _link?: HTMLAnchorElement;\n private static _origin = 'about:blank';\n\n static getOrigin(url: string): string {\n const link = CacheStorage._link;\n if (!link) {\n return 'about:blank';\n }\n\n link.href = url;\n link.href = link.href; // IE9, LOL! - http://jsfiddle.net/niklasvh/2e48b/\n return link.protocol + link.hostname + link.port;\n }\n\n static isSameOrigin(src: string): boolean {\n return CacheStorage.getOrigin(src) === CacheStorage._origin;\n }\n\n static setContext(window: Window): void {\n CacheStorage._link = window.document.createElement('a');\n CacheStorage._origin = CacheStorage.getOrigin(window.location.href);\n }\n}\n\nexport interface ResourceOptions {\n imageTimeout: number;\n useCORS: boolean;\n allowTaint: boolean;\n proxy?: string;\n}\n\nexport class Cache {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private readonly _cache: { [key: string]: Promise<any> } = {};\n\n constructor(private readonly context: Context, private readonly _options: ResourceOptions) {}\n\n addImage(src: string): Promise<void> {\n const result = Promise.resolve();\n if (this.has(src)) {\n return result;\n }\n\n if (isBlobImage(src) || isRenderable(src)) {\n (this._cache[src] = this.loadImage(src)).catch(() => {\n // prevent unhandled rejection\n });\n return result;\n }\n\n return result;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n match(src: string): Promise<any> {\n return this._cache[src];\n }\n\n private async loadImage(key: string) {\n const isSameOrigin = CacheStorage.isSameOrigin(key);\n const useCORS =\n !isInlineImage(key) && this._options.useCORS === true && FEATURES.SUPPORT_CORS_IMAGES && !isSameOrigin;\n const useProxy =\n !isInlineImage(key) &&\n !isSameOrigin &&\n !isBlobImage(key) &&\n typeof this._options.proxy === 'string' &&\n FEATURES.SUPPORT_CORS_XHR &&\n !useCORS;\n if (\n !isSameOrigin &&\n this._options.allowTaint === false &&\n !isInlineImage(key) &&\n !isBlobImage(key) &&\n !useProxy &&\n !useCORS\n ) {\n return;\n }\n\n let src = key;\n if (useProxy) {\n src = await this.proxy(src);\n }\n\n this.context.logger.debug(`Added image ${key.substring(0, 256)}`);\n\n return await new Promise((resolve, reject) => {\n const img = new Image();\n img.onload = () => resolve(img);\n img.onerror = reject;\n //ios safari 10.3 taints canvas with data urls unless crossOrigin is set to anonymous\n if (isInlineBase64Image(src) || useCORS) {\n img.crossOrigin = 'anonymous';\n }\n img.src = src;\n if (img.complete === true) {\n // Inline XML images may fail to parse, throwing an Error later on\n setTimeout(() => resolve(img), 500);\n }\n if (this._options.imageTimeout > 0) {\n setTimeout(\n () => reject(`Timed out (${this._options.imageTimeout}ms) loading image`),\n this._options.imageTimeout\n );\n }\n });\n }\n\n private has(key: string): boolean {\n return typeof this._cache[key] !== 'undefined';\n }\n\n keys(): Promise<string[]> {\n return Promise.resolve(Object.keys(this._cache));\n }\n\n private proxy(src: string): Promise<string> {\n const proxy = this._options.proxy;\n\n if (!proxy) {\n throw new Error('No proxy defined');\n }\n\n const key = src.substring(0, 256);\n\n return new Promise((resolve, reject) => {\n const responseType = FEATURES.SUPPORT_RESPONSE_TYPE ? 'blob' : 'text';\n const xhr = new XMLHttpRequest();\n xhr.onload = () => {\n if (xhr.status === 200) {\n if (responseType === 'text') {\n resolve(xhr.response);\n } else {\n const reader = new FileReader();\n reader.addEventListener('load', () => resolve(reader.result as string), false);\n reader.addEventListener('error', (e) => reject(e), false);\n reader.readAsDataURL(xhr.response);\n }\n } else {\n reject(`Failed to proxy resource ${key} with status code ${xhr.status}`);\n }\n };\n\n xhr.onerror = reject;\n const queryString = proxy.indexOf('?') > -1 ? '&' : '?';\n xhr.open('GET', `${proxy}${queryString}url=${encodeURIComponent(src)}&responseType=${responseType}`);\n\n if (responseType !== 'text' && xhr instanceof XMLHttpRequest) {\n xhr.responseType = responseType;\n }\n\n if (this._options.imageTimeout) {\n const timeout = this._options.imageTimeout;\n xhr.timeout = timeout;\n xhr.ontimeout = () => reject(`Timed out (${timeout}ms) proxying ${key}`);\n }\n\n xhr.send();\n });\n }\n}\n\nconst INLINE_SVG = /^data:image\\/svg\\+xml/i;\nconst INLINE_BASE64 = /^data:image\\/.*;base64,/i;\nconst INLINE_IMG = /^data:image\\/.*/i;\n\nconst isRenderable = (src: string): boolean => FEATURES.SUPPORT_SVG_DRAWING || !isSVG(src);\nconst isInlineImage = (src: string): boolean => INLINE_IMG.test(src);\nconst isInlineBase64Image = (src: string): boolean => INLINE_BASE64.test(src);\nconst isBlobImage = (src: string): boolean => src.substr(0, 4) === 'blob';\n\nconst isSVG = (src: string): boolean => src.substr(-3).toLowerCase() === 'svg' || INLINE_SVG.test(src);\n","import { IPath, Path, PathType } from './path';\n\nexport class Vector implements IPath {\n type: PathType;\n x: number;\n y: number;\n\n constructor(x: number, y: number) {\n this.type = PathType.VECTOR;\n this.x = x;\n this.y = y;\n }\n\n add(deltaX: number, deltaY: number): Vector {\n return new Vector(this.x + deltaX, this.y + deltaY);\n }\n}\n\nexport const isVector = (path: Path): path is Vector => path.type === PathType.VECTOR;\n","import { Vector } from './vector';\nimport { IPath, PathType, Path } from './path';\n\nconst lerp = (a: Vector, b: Vector, t: number): Vector => {\n return new Vector(a.x + (b.x - a.x) * t, a.y + (b.y - a.y) * t);\n};\n\nexport class BezierCurve implements IPath {\n type: PathType;\n start: Vector;\n startControl: Vector;\n endControl: Vector;\n end: Vector;\n\n constructor(start: Vector, startControl: Vector, endControl: Vector, end: Vector) {\n this.type = PathType.BEZIER_CURVE;\n this.start = start;\n this.startControl = startControl;\n this.endControl = endControl;\n this.end = end;\n }\n\n subdivide(t: number, firstHalf: boolean): BezierCurve {\n const ab = lerp(this.start, this.startControl, t);\n const bc = lerp(this.startControl, this.endControl, t);\n const cd = lerp(this.endControl, this.end, t);\n const abbc = lerp(ab, bc, t);\n const bccd = lerp(bc, cd, t);\n const dest = lerp(abbc, bccd, t);\n return firstHalf ? new BezierCurve(this.start, ab, abbc, dest) : new BezierCurve(dest, bccd, cd, this.end);\n }\n\n add(deltaX: number, deltaY: number): BezierCurve {\n return new BezierCurve(\n this.start.add(deltaX, deltaY),\n this.startControl.add(deltaX, deltaY),\n this.endControl.add(deltaX, deltaY),\n this.end.add(deltaX, deltaY)\n );\n }\n\n reverse(): BezierCurve {\n return new BezierCurve(this.end, this.endControl, this.startControl, this.start);\n }\n}\n\nexport const isBezierCurve = (path: Path): path is BezierCurve => path.type === PathType.BEZIER_CURVE;\n","import { ElementContainer } from '../dom/element-container';\nimport { getAbsoluteValue, getAbsoluteValueForTuple } from '../css/types/length-percentage';\nimport { Vector } from './vector';\nimport { BezierCurve } from './bezier-curve';\nimport { Path } from './path';\n\nexport class BoundCurves {\n readonly topLeftBorderDoubleOuterBox: Path;\n readonly topRightBorderDoubleOuterBox: Path;\n readonly bottomRightBorderDoubleOuterBox: Path;\n readonly bottomLeftBorderDoubleOuterBox: Path;\n readonly topLeftBorderDoubleInnerBox: Path;\n readonly topRightBorderDoubleInnerBox: Path;\n readonly bottomRightBorderDoubleInnerBox: Path;\n readonly bottomLeftBorderDoubleInnerBox: Path;\n readonly topLeftBorderStroke: Path;\n readonly topRightBorderStroke: Path;\n readonly bottomRightBorderStroke: Path;\n readonly bottomLeftBorderStroke: Path;\n readonly topLeftBorderBox: Path;\n readonly topRightBorderBox: Path;\n readonly bottomRightBorderBox: Path;\n readonly bottomLeftBorderBox: Path;\n readonly topLeftPaddingBox: Path;\n readonly topRightPaddingBox: Path;\n readonly bottomRightPaddingBox: Path;\n readonly bottomLeftPaddingBox: Path;\n readonly topLeftContentBox: Path;\n readonly topRightContentBox: Path;\n readonly bottomRightContentBox: Path;\n readonly bottomLeftContentBox: Path;\n\n constructor(element: ElementContainer) {\n const styles = element.styles;\n const bounds = element.bounds;\n\n let [tlh, tlv] = getAbsoluteValueForTuple(styles.borderTopLeftRadius, bounds.width, bounds.height);\n let [trh, trv] = getAbsoluteValueForTuple(styles.borderTopRightRadius, bounds.width, bounds.height);\n let [brh, brv] = getAbsoluteValueForTuple(styles.borderBottomRightRadius, bounds.width, bounds.height);\n let [blh, blv] = getAbsoluteValueForTuple(styles.borderBottomLeftRadius, bounds.width, bounds.height);\n\n const factors = [];\n factors.push((tlh + trh) / bounds.width);\n factors.push((blh + brh) / bounds.width);\n factors.push((tlv + blv) / bounds.height);\n factors.push((trv + brv) / bounds.height);\n const maxFactor = Math.max(...factors);\n\n if (maxFactor > 1) {\n tlh /= maxFactor;\n tlv /= maxFactor;\n trh /= maxFactor;\n trv /= maxFactor;\n brh /= maxFactor;\n brv /= maxFactor;\n blh /= maxFactor;\n blv /= maxFactor;\n }\n\n const topWidth = bounds.width - trh;\n const rightHeight = bounds.height - brv;\n const bottomWidth = bounds.width - brh;\n const leftHeight = bounds.height - blv;\n\n const borderTopWidth = styles.borderTopWidth;\n const borderRightWidth = styles.borderRightWidth;\n const borderBottomWidth = styles.borderBottomWidth;\n const borderLeftWidth = styles.borderLeftWidth;\n\n const paddingTop = getAbsoluteValue(styles.paddingTop, element.bounds.width);\n const paddingRight = getAbsoluteValue(styles.paddingRight, element.bounds.width);\n const paddingBottom = getAbsoluteValue(styles.paddingBottom, element.bounds.width);\n const paddingLeft = getAbsoluteValue(styles.paddingLeft, element.bounds.width);\n\n this.topLeftBorderDoubleOuterBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(\n bounds.left + borderLeftWidth / 3,\n bounds.top + borderTopWidth / 3,\n tlh - borderLeftWidth / 3,\n tlv - borderTopWidth / 3,\n CORNER.TOP_LEFT\n )\n : new Vector(bounds.left + borderLeftWidth / 3, bounds.top + borderTopWidth / 3);\n this.topRightBorderDoubleOuterBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(\n bounds.left + topWidth,\n bounds.top + borderTopWidth / 3,\n trh - borderRightWidth / 3,\n trv - borderTopWidth / 3,\n CORNER.TOP_RIGHT\n )\n : new Vector(bounds.left + bounds.width - borderRightWidth / 3, bounds.top + borderTopWidth / 3);\n this.bottomRightBorderDoubleOuterBox =\n brh > 0 || brv > 0\n ? getCurvePoints(\n bounds.left + bottomWidth,\n bounds.top + rightHeight,\n brh - borderRightWidth / 3,\n brv - borderBottomWidth / 3,\n CORNER.BOTTOM_RIGHT\n )\n : new Vector(\n bounds.left + bounds.width - borderRightWidth / 3,\n bounds.top + bounds.height - borderBottomWidth / 3\n );\n this.bottomLeftBorderDoubleOuterBox =\n blh > 0 || blv > 0\n ? getCurvePoints(\n bounds.left + borderLeftWidth / 3,\n bounds.top + leftHeight,\n blh - borderLeftWidth / 3,\n blv - borderBottomWidth / 3,\n CORNER.BOTTOM_LEFT\n )\n : new Vector(bounds.left + borderLeftWidth / 3, bounds.top + bounds.height - borderBottomWidth / 3);\n this.topLeftBorderDoubleInnerBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(\n bounds.left + (borderLeftWidth * 2) / 3,\n bounds.top + (borderTopWidth * 2) / 3,\n tlh - (borderLeftWidth * 2) / 3,\n tlv - (borderTopWidth * 2) / 3,\n CORNER.TOP_LEFT\n )\n : new Vector(bounds.left + (borderLeftWidth * 2) / 3, bounds.top + (borderTopWidth * 2) / 3);\n this.topRightBorderDoubleInnerBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(\n bounds.left + topWidth,\n bounds.top + (borderTopWidth * 2) / 3,\n trh - (borderRightWidth * 2) / 3,\n trv - (borderTopWidth * 2) / 3,\n CORNER.TOP_RIGHT\n )\n : new Vector(\n bounds.left + bounds.width - (borderRightWidth * 2) / 3,\n bounds.top + (borderTopWidth * 2) / 3\n );\n this.bottomRightBorderDoubleInnerBox =\n brh > 0 || brv > 0\n ? getCurvePoints(\n bounds.left + bottomWidth,\n bounds.top + rightHeight,\n brh - (borderRightWidth * 2) / 3,\n brv - (borderBottomWidth * 2) / 3,\n CORNER.BOTTOM_RIGHT\n )\n : new Vector(\n bounds.left + bounds.width - (borderRightWidth * 2) / 3,\n bounds.top + bounds.height - (borderBottomWidth * 2) / 3\n );\n this.bottomLeftBorderDoubleInnerBox =\n blh > 0 || blv > 0\n ? getCurvePoints(\n bounds.left + (borderLeftWidth * 2) / 3,\n bounds.top + leftHeight,\n blh - (borderLeftWidth * 2) / 3,\n blv - (borderBottomWidth * 2) / 3,\n CORNER.BOTTOM_LEFT\n )\n : new Vector(\n bounds.left + (borderLeftWidth * 2) / 3,\n bounds.top + bounds.height - (borderBottomWidth * 2) / 3\n );\n this.topLeftBorderStroke =\n tlh > 0 || tlv > 0\n ? getCurvePoints(\n bounds.left + borderLeftWidth / 2,\n bounds.top + borderTopWidth / 2,\n tlh - borderLeftWidth / 2,\n tlv - borderTopWidth / 2,\n CORNER.TOP_LEFT\n )\n : new Vector(bounds.left + borderLeftWidth / 2, bounds.top + borderTopWidth / 2);\n this.topRightBorderStroke =\n tlh > 0 || tlv > 0\n ? getCurvePoints(\n bounds.left + topWidth,\n bounds.top + borderTopWidth / 2,\n trh - borderRightWidth / 2,\n trv - borderTopWidth / 2,\n CORNER.TOP_RIGHT\n )\n : new Vector(bounds.left + bounds.width - borderRightWidth / 2, bounds.top + borderTopWidth / 2);\n this.bottomRightBorderStroke =\n brh > 0 || brv > 0\n ? getCurvePoints(\n bounds.left + bottomWidth,\n bounds.top + rightHeight,\n brh - borderRightWidth / 2,\n brv - borderBottomWidth / 2,\n CORNER.BOTTOM_RIGHT\n )\n : new Vector(\n bounds.left + bounds.width - borderRightWidth / 2,\n bounds.top + bounds.height - borderBottomWidth / 2\n );\n this.bottomLeftBorderStroke =\n blh > 0 || blv > 0\n ? getCurvePoints(\n bounds.left + borderLeftWidth / 2,\n bounds.top + leftHeight,\n blh - borderLeftWidth / 2,\n blv - borderBottomWidth / 2,\n CORNER.BOTTOM_LEFT\n )\n : new Vector(bounds.left + borderLeftWidth / 2, bounds.top + bounds.height - borderBottomWidth / 2);\n this.topLeftBorderBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(bounds.left, bounds.top, tlh, tlv, CORNER.TOP_LEFT)\n : new Vector(bounds.left, bounds.top);\n this.topRightBorderBox =\n trh > 0 || trv > 0\n ? getCurvePoints(bounds.left + topWidth, bounds.top, trh, trv, CORNER.TOP_RIGHT)\n : new Vector(bounds.left + bounds.width, bounds.top);\n this.bottomRightBorderBox =\n brh > 0 || brv > 0\n ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh, brv, CORNER.BOTTOM_RIGHT)\n : new Vector(bounds.left + bounds.width, bounds.top + bounds.height);\n this.bottomLeftBorderBox =\n blh > 0 || blv > 0\n ? getCurvePoints(bounds.left, bounds.top + leftHeight, blh, blv, CORNER.BOTTOM_LEFT)\n : new Vector(bounds.left, bounds.top + bounds.height);\n this.topLeftPaddingBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(\n bounds.left + borderLeftWidth,\n bounds.top + borderTopWidth,\n Math.max(0, tlh - borderLeftWidth),\n Math.max(0, tlv - borderTopWidth),\n CORNER.TOP_LEFT\n )\n : new Vector(bounds.left + borderLeftWidth, bounds.top + borderTopWidth);\n this.topRightPaddingBox =\n trh > 0 || trv > 0\n ? getCurvePoints(\n bounds.left + Math.min(topWidth, bounds.width - borderRightWidth),\n bounds.top + borderTopWidth,\n topWidth > bounds.width + borderRightWidth ? 0 : Math.max(0, trh - borderRightWidth),\n Math.max(0, trv - borderTopWidth),\n CORNER.TOP_RIGHT\n )\n : new Vector(bounds.left + bounds.width - borderRightWidth, bounds.top + borderTopWidth);\n this.bottomRightPaddingBox =\n brh > 0 || brv > 0\n ? getCurvePoints(\n bounds.left + Math.min(bottomWidth, bounds.width - borderLeftWidth),\n bounds.top + Math.min(rightHeight, bounds.height - borderBottomWidth),\n Math.max(0, brh - borderRightWidth),\n Math.max(0, brv - borderBottomWidth),\n CORNER.BOTTOM_RIGHT\n )\n : new Vector(\n bounds.left + bounds.width - borderRightWidth,\n bounds.top + bounds.height - borderBottomWidth\n );\n this.bottomLeftPaddingBox =\n blh > 0 || blv > 0\n ? getCurvePoints(\n bounds.left + borderLeftWidth,\n bounds.top + Math.min(leftHeight, bounds.height - borderBottomWidth),\n Math.max(0, blh - borderLeftWidth),\n Math.max(0, blv - borderBottomWidth),\n CORNER.BOTTOM_LEFT\n )\n : new Vector(bounds.left + borderLeftWidth, bounds.top + bounds.height - borderBottomWidth);\n this.topLeftContentBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(\n bounds.left + borderLeftWidth + paddingLeft,\n bounds.top + borderTopWidth + paddingTop,\n Math.max(0, tlh - (borderLeftWidth + paddingLeft)),\n Math.max(0, tlv - (borderTopWidth + paddingTop)),\n CORNER.TOP_LEFT\n )\n : new Vector(bounds.left + borderLeftWidth + paddingLeft, bounds.top + borderTopWidth + paddingTop);\n this.topRightContentBox =\n trh > 0 || trv > 0\n ? getCurvePoints(\n bounds.left + Math.min(topWidth, bounds.width + borderLeftWidth + paddingLeft),\n bounds.top + borderTopWidth + paddingTop,\n topWidth > bounds.width + borderLeftWidth + paddingLeft ? 0 : trh - borderLeftWidth + paddingLeft,\n trv - (borderTopWidth + paddingTop),\n CORNER.TOP_RIGHT\n )\n : new Vector(\n bounds.left + bounds.width - (borderRightWidth + paddingRight),\n bounds.top + borderTopWidth + paddingTop\n );\n this.bottomRightContentBox =\n brh > 0 || brv > 0\n ? getCurvePoints(\n bounds.left + Math.min(bottomWidth, bounds.width - (borderLeftWidth + paddingLeft)),\n bounds.top + Math.min(rightHeight, bounds.height + borderTopWidth + paddingTop),\n Math.max(0, brh - (borderRightWidth + paddingRight)),\n brv - (borderBottomWidth + paddingBottom),\n CORNER.BOTTOM_RIGHT\n )\n : new Vector(\n bounds.left + bounds.width - (borderRightWidth + paddingRight),\n bounds.top + bounds.height - (borderBottomWidth + paddingBottom)\n );\n this.bottomLeftContentBox =\n blh > 0 || blv > 0\n ? getCurvePoints(\n bounds.left + borderLeftWidth + paddingLeft,\n bounds.top + leftHeight,\n Math.max(0, blh - (borderLeftWidth + paddingLeft)),\n blv - (borderBottomWidth + paddingBottom),\n CORNER.BOTTOM_LEFT\n )\n : new Vector(\n bounds.left + borderLeftWidth + paddingLeft,\n bounds.top + bounds.height - (borderBottomWidth + paddingBottom)\n );\n }\n}\n\nenum CORNER {\n TOP_LEFT = 0,\n TOP_RIGHT = 1,\n BOTTOM_RIGHT = 2,\n BOTTOM_LEFT = 3\n}\n\nconst getCurvePoints = (x: number, y: number, r1: number, r2: number, position: CORNER): BezierCurve => {\n const kappa = 4 * ((Math.sqrt(2) - 1) / 3);\n const ox = r1 * kappa; // control point offset horizontal\n const oy = r2 * kappa; // control point offset vertical\n const xm = x + r1; // x-middle\n const ym = y + r2; // y-middle\n\n switch (position) {\n case CORNER.TOP_LEFT:\n return new BezierCurve(\n new Vector(x, ym),\n new Vector(x, ym - oy),\n new Vector(xm - ox, y),\n new Vector(xm, y)\n );\n case CORNER.TOP_RIGHT:\n return new BezierCurve(\n new Vector(x, y),\n new Vector(x + ox, y),\n new Vector(xm, ym - oy),\n new Vector(xm, ym)\n );\n case CORNER.BOTTOM_RIGHT:\n return new BezierCurve(\n new Vector(xm, y),\n new Vector(xm, y + oy),\n new Vector(x + ox, ym),\n new Vector(x, ym)\n );\n case CORNER.BOTTOM_LEFT:\n default:\n return new BezierCurve(\n new Vector(xm, ym),\n new Vector(xm - ox, ym),\n new Vector(x, y + oy),\n new Vector(x, y)\n );\n }\n};\n\nexport const calculateBorderBoxPath = (curves: BoundCurves): Path[] => {\n return [curves.topLeftBorderBox, curves.topRightBorderBox, curves.bottomRightBorderBox, curves.bottomLeftBorderBox];\n};\n\nexport const calculateContentBoxPath = (curves: BoundCurves): Path[] => {\n return [\n curves.topLeftContentBox,\n curves.topRightContentBox,\n curves.bottomRightContentBox,\n curves.bottomLeftContentBox\n ];\n};\n\nexport const calculatePaddingBoxPath = (curves: BoundCurves): Path[] => {\n return [\n curves.topLeftPaddingBox,\n curves.topRightPaddingBox,\n curves.bottomRightPaddingBox,\n curves.bottomLeftPaddingBox\n ];\n};\n","import { Matrix } from '../css/property-descriptors/transform';\nimport { Path } from './path';\n\nexport const enum EffectType {\n TRANSFORM = 0,\n CLIP = 1,\n OPACITY = 2\n}\n\nexport const enum EffectTarget {\n BACKGROUND_BORDERS = 1 << 1,\n CONTENT = 1 << 2\n}\n\nexport interface IElementEffect {\n readonly type: EffectType;\n readonly target: number;\n}\n\nexport class TransformEffect implements IElementEffect {\n readonly type: EffectType = EffectType.TRANSFORM;\n readonly target: number = EffectTarget.BACKGROUND_BORDERS | EffectTarget.CONTENT;\n\n constructor(readonly offsetX: number, readonly offsetY: number, readonly matrix: Matrix) {}\n}\n\nexport class ClipEffect implements IElementEffect {\n readonly type: EffectType = EffectType.CLIP;\n\n constructor(readonly path: Path[], readonly target: EffectTarget) {}\n}\n\nexport class OpacityEffect implements IElementEffect {\n readonly type: EffectType = EffectType.OPACITY;\n readonly target: number = EffectTarget.BACKGROUND_BORDERS | EffectTarget.CONTENT;\n\n constructor(readonly opacity: number) {}\n}\n\nexport const isTransformEffect = (effect: IElementEffect): effect is TransformEffect =>\n effect.type === EffectType.TRANSFORM;\nexport const isClipEffect = (effect: IElementEffect): effect is ClipEffect => effect.type === EffectType.CLIP;\nexport const isOpacityEffect = (effect: IElementEffect): effect is OpacityEffect => effect.type === EffectType.OPACITY;\n","import { BezierCurve } from './bezier-curve';\nimport { Vector } from './vector';\nexport const enum PathType {\n VECTOR = 0,\n BEZIER_CURVE = 1\n}\n\nexport interface IPath {\n type: PathType;\n add(deltaX: number, deltaY: number): IPath;\n}\n\nexport const equalPath = (a: Path[], b: Path[]): boolean => {\n if (a.length === b.length) {\n return a.some((v, i) => v === b[i]);\n }\n\n return false;\n};\n\nexport const transformPath = (path: Path[], deltaX: number, deltaY: number, deltaW: number, deltaH: number): Path[] => {\n return path.map((point, index) => {\n switch (index) {\n case 0:\n return point.add(deltaX, deltaY);\n case 1:\n return point.add(deltaX + deltaW, deltaY);\n case 2:\n return point.add(deltaX + deltaW, deltaY + deltaH);\n case 3:\n return point.add(deltaX, deltaY + deltaH);\n }\n return point;\n });\n};\n\nexport type Path = Vector | BezierCurve;\n","import { ElementContainer, FLAGS } from '../dom/element-container';\nimport { contains } from '../core/bitwise';\nimport { BoundCurves, calculateBorderBoxPath, calculatePaddingBoxPath } from './bound-curves';\nimport { ClipEffect, EffectTarget, IElementEffect, isClipEffect, OpacityEffect, TransformEffect } from './effects';\nimport { OVERFLOW } from '../css/property-descriptors/overflow';\nimport { equalPath } from './path';\nimport { DISPLAY } from '../css/property-descriptors/display';\nimport { OLElementContainer } from '../dom/elements/ol-element-container';\nimport { LIElementContainer } from '../dom/elements/li-element-container';\nimport { createCounterText } from '../css/types/functions/counter';\nimport { POSITION } from '../css/property-descriptors/position';\n\nexport class StackingContext {\n element: ElementPaint;\n negativeZIndex: StackingContext[];\n zeroOrAutoZIndexOrTransformedOrOpacity: StackingContext[];\n positiveZIndex: StackingContext[];\n nonPositionedFloats: StackingContext[];\n nonPositionedInlineLevel: StackingContext[];\n inlineLevel: ElementPaint[];\n nonInlineLevel: ElementPaint[];\n\n constructor(container: ElementPaint) {\n this.element = container;\n this.inlineLevel = [];\n this.nonInlineLevel = [];\n this.negativeZIndex = [];\n this.zeroOrAutoZIndexOrTransformedOrOpacity = [];\n this.positiveZIndex = [];\n this.nonPositionedFloats = [];\n this.nonPositionedInlineLevel = [];\n }\n}\n\nexport class ElementPaint {\n readonly effects: IElementEffect[] = [];\n readonly curves: BoundCurves;\n listValue?: string;\n\n constructor(readonly container: ElementContainer, readonly parent: ElementPaint | null) {\n this.curves = new BoundCurves(this.container);\n if (this.container.styles.opacity < 1) {\n this.effects.push(new OpacityEffect(this.container.styles.opacity));\n }\n\n if (this.container.styles.transform !== null) {\n const offsetX = this.container.bounds.left + this.container.styles.transformOrigin[0].number;\n const offsetY = this.container.bounds.top + this.container.styles.transformOrigin[1].number;\n const matrix = this.container.styles.transform;\n this.effects.push(new TransformEffect(offsetX, offsetY, matrix));\n }\n\n if (this.container.styles.overflowX !== OVERFLOW.VISIBLE) {\n const borderBox = calculateBorderBoxPath(this.curves);\n const paddingBox = calculatePaddingBoxPath(this.curves);\n\n if (equalPath(borderBox, paddingBox)) {\n this.effects.push(new ClipEffect(borderBox, EffectTarget.BACKGROUND_BORDERS | EffectTarget.CONTENT));\n } else {\n this.effects.push(new ClipEffect(borderBox, EffectTarget.BACKGROUND_BORDERS));\n this.effects.push(new ClipEffect(paddingBox, EffectTarget.CONTENT));\n }\n }\n }\n\n getEffects(target: EffectTarget): IElementEffect[] {\n let inFlow = [POSITION.ABSOLUTE, POSITION.FIXED].indexOf(this.container.styles.position) === -1;\n let parent = this.parent;\n const effects = this.effects.slice(0);\n while (parent) {\n const croplessEffects = parent.effects.filter((effect) => !isClipEffect(effect));\n if (inFlow || parent.container.styles.position !== POSITION.STATIC || !parent.parent) {\n inFlow = [POSITION.ABSOLUTE, POSITION.FIXED].indexOf(parent.container.styles.position) === -1;\n if (parent.container.styles.overflowX !== OVERFLOW.VISIBLE) {\n const borderBox = calculateBorderBoxPath(parent.curves);\n const paddingBox = calculatePaddingBoxPath(parent.curves);\n if (!equalPath(borderBox, paddingBox)) {\n effects.unshift(\n new ClipEffect(paddingBox, EffectTarget.BACKGROUND_BORDERS | EffectTarget.CONTENT)\n );\n }\n }\n effects.unshift(...croplessEffects);\n } else {\n effects.unshift(...croplessEffects);\n }\n\n parent = parent.parent;\n }\n\n return effects.filter((effect) => contains(effect.target, target));\n }\n}\n\nconst parseStackTree = (\n parent: ElementPaint,\n stackingContext: StackingContext,\n realStackingContext: StackingContext,\n listItems: ElementPaint[]\n) => {\n parent.container.elements.forEach((child) => {\n const treatAsRealStackingContext = contains(child.flags, FLAGS.CREATES_REAL_STACKING_CONTEXT);\n const createsStackingContext = contains(child.flags, FLAGS.CREATES_STACKING_CONTEXT);\n const paintContainer = new ElementPaint(child, parent);\n if (contains(child.styles.display, DISPLAY.LIST_ITEM)) {\n listItems.push(paintContainer);\n }\n\n const listOwnerItems = contains(child.flags, FLAGS.IS_LIST_OWNER) ? [] : listItems;\n\n if (treatAsRealStackingContext || createsStackingContext) {\n const parentStack =\n treatAsRealStackingContext || child.styles.isPositioned() ? realStackingContext : stackingContext;\n\n const stack = new StackingContext(paintContainer);\n\n if (child.styles.isPositioned() || child.styles.opacity < 1 || child.styles.isTransformed()) {\n const order = child.styles.zIndex.order;\n if (order < 0) {\n let index = 0;\n\n parentStack.negativeZIndex.some((current, i) => {\n if (order > current.element.container.styles.zIndex.order) {\n index = i;\n return false;\n } else if (index > 0) {\n return true;\n }\n\n return false;\n });\n parentStack.negativeZIndex.splice(index, 0, stack);\n } else if (order > 0) {\n let index = 0;\n parentStack.positiveZIndex.some((current, i) => {\n if (order >= current.element.container.styles.zIndex.order) {\n index = i + 1;\n return false;\n } else if (index > 0) {\n return true;\n }\n\n return false;\n });\n parentStack.positiveZIndex.splice(index, 0, stack);\n } else {\n parentStack.zeroOrAutoZIndexOrTransformedOrOpacity.push(stack);\n }\n } else {\n if (child.styles.isFloating()) {\n parentStack.nonPositionedFloats.push(stack);\n } else {\n parentStack.nonPositionedInlineLevel.push(stack);\n }\n }\n\n parseStackTree(\n paintContainer,\n stack,\n treatAsRealStackingContext ? stack : realStackingContext,\n listOwnerItems\n );\n } else {\n if (child.styles.isInlineLevel()) {\n stackingContext.inlineLevel.push(paintContainer);\n } else {\n stackingContext.nonInlineLevel.push(paintContainer);\n }\n\n parseStackTree(paintContainer, stackingContext, realStackingContext, listOwnerItems);\n }\n\n if (contains(child.flags, FLAGS.IS_LIST_OWNER)) {\n processListItems(child, listOwnerItems);\n }\n });\n};\n\nconst processListItems = (owner: ElementContainer, elements: ElementPaint[]) => {\n let numbering = owner instanceof OLElementContainer ? owner.start : 1;\n const reversed = owner instanceof OLElementContainer ? owner.reversed : false;\n for (let i = 0; i < elements.length; i++) {\n const item = elements[i];\n if (\n item.container instanceof LIElementContainer &&\n typeof item.container.value === 'number' &&\n item.container.value !== 0\n ) {\n numbering = item.container.value;\n }\n\n item.listValue = createCounterText(numbering, item.container.styles.listStyleType, true);\n\n numbering += reversed ? -1 : 1;\n }\n};\n\nexport const parseStackingContexts = (container: ElementContainer): StackingContext => {\n const paintContainer = new ElementPaint(container, null);\n const root = new StackingContext(paintContainer);\n const listItems: ElementPaint[] = [];\n parseStackTree(paintContainer, root, root, listItems);\n processListItems(paintContainer.container, listItems);\n return root;\n};\n","import { Path } from './path';\nimport { BoundCurves } from './bound-curves';\nimport { isBezierCurve } from './bezier-curve';\n\nexport const parsePathForBorder = (curves: BoundCurves, borderSide: number): Path[] => {\n switch (borderSide) {\n case 0:\n return createPathFromCurves(\n curves.topLeftBorderBox,\n curves.topLeftPaddingBox,\n curves.topRightBorderBox,\n curves.topRightPaddingBox\n );\n case 1:\n return createPathFromCurves(\n curves.topRightBorderBox,\n curves.topRightPaddingBox,\n curves.bottomRightBorderBox,\n curves.bottomRightPaddingBox\n );\n case 2:\n return createPathFromCurves(\n curves.bottomRightBorderBox,\n curves.bottomRightPaddingBox,\n curves.bottomLeftBorderBox,\n curves.bottomLeftPaddingBox\n );\n case 3:\n default:\n return createPathFromCurves(\n curves.bottomLeftBorderBox,\n curves.bottomLeftPaddingBox,\n curves.topLeftBorderBox,\n curves.topLeftPaddingBox\n );\n }\n};\n\nexport const parsePathForBorderDoubleOuter = (curves: BoundCurves, borderSide: number): Path[] => {\n switch (borderSide) {\n case 0:\n return createPathFromCurves(\n curves.topLeftBorderBox,\n curves.topLeftBorderDoubleOuterBox,\n curves.topRightBorderBox,\n curves.topRightBorderDoubleOuterBox\n );\n case 1:\n return createPathFromCurves(\n curves.topRightBorderBox,\n curves.topRightBorderDoubleOuterBox,\n curves.bottomRightBorderBox,\n curves.bottomRightBorderDoubleOuterBox\n );\n case 2:\n return createPathFromCurves(\n curves.bottomRightBorderBox,\n curves.bottomRightBorderDoubleOuterBox,\n curves.bottomLeftBorderBox,\n curves.bottomLeftBorderDoubleOuterBox\n );\n case 3:\n default:\n return createPathFromCurves(\n curves.bottomLeftBorderBox,\n curves.bottomLeftBorderDoubleOuterBox,\n curves.topLeftBorderBox,\n curves.topLeftBorderDoubleOuterBox\n );\n }\n};\n\nexport const parsePathForBorderDoubleInner = (curves: BoundCurves, borderSide: number): Path[] => {\n switch (borderSide) {\n case 0:\n return createPathFromCurves(\n curves.topLeftBorderDoubleInnerBox,\n curves.topLeftPaddingBox,\n curves.topRightBorderDoubleInnerBox,\n curves.topRightPaddingBox\n );\n case 1:\n return createPathFromCurves(\n curves.topRightBorderDoubleInnerBox,\n curves.topRightPaddingBox,\n curves.bottomRightBorderDoubleInnerBox,\n curves.bottomRightPaddingBox\n );\n case 2:\n return createPathFromCurves(\n curves.bottomRightBorderDoubleInnerBox,\n curves.bottomRightPaddingBox,\n curves.bottomLeftBorderDoubleInnerBox,\n curves.bottomLeftPaddingBox\n );\n case 3:\n default:\n return createPathFromCurves(\n curves.bottomLeftBorderDoubleInnerBox,\n curves.bottomLeftPaddingBox,\n curves.topLeftBorderDoubleInnerBox,\n curves.topLeftPaddingBox\n );\n }\n};\n\nexport const parsePathForBorderStroke = (curves: BoundCurves, borderSide: number): Path[] => {\n switch (borderSide) {\n case 0:\n return createStrokePathFromCurves(curves.topLeftBorderStroke, curves.topRightBorderStroke);\n case 1:\n return createStrokePathFromCurves(curves.topRightBorderStroke, curves.bottomRightBorderStroke);\n case 2:\n return createStrokePathFromCurves(curves.bottomRightBorderStroke, curves.bottomLeftBorderStroke);\n case 3:\n default:\n return createStrokePathFromCurves(curves.bottomLeftBorderStroke, curves.topLeftBorderStroke);\n }\n};\n\nconst createStrokePathFromCurves = (outer1: Path, outer2: Path): Path[] => {\n const path = [];\n if (isBezierCurve(outer1)) {\n path.push(outer1.subdivide(0.5, false));\n } else {\n path.push(outer1);\n }\n\n if (isBezierCurve(outer2)) {\n path.push(outer2.subdivide(0.5, true));\n } else {\n path.push(outer2);\n }\n\n return path;\n};\n\nconst createPathFromCurves = (outer1: Path, inner1: Path, outer2: Path, inner2: Path): Path[] => {\n const path = [];\n if (isBezierCurve(outer1)) {\n path.push(outer1.subdivide(0.5, false));\n } else {\n path.push(outer1);\n }\n\n if (isBezierCurve(outer2)) {\n path.push(outer2.subdivide(0.5, true));\n } else {\n path.push(outer2);\n }\n\n if (isBezierCurve(inner2)) {\n path.push(inner2.subdivide(0.5, true).reverse());\n } else {\n path.push(inner2);\n }\n\n if (isBezierCurve(inner1)) {\n path.push(inner1.subdivide(0.5, false).reverse());\n } else {\n path.push(inner1);\n }\n\n return path;\n};\n","import { getAbsoluteValue } from '../css/types/length-percentage';\nimport { Bounds } from '../css/layout/bounds';\nimport { ElementContainer } from '../dom/element-container';\n\nexport const paddingBox = (element: ElementContainer): Bounds => {\n const bounds = element.bounds;\n const styles = element.styles;\n return bounds.add(\n styles.borderLeftWidth,\n styles.borderTopWidth,\n -(styles.borderRightWidth + styles.borderLeftWidth),\n -(styles.borderTopWidth + styles.borderBottomWidth)\n );\n};\n\nexport const contentBox = (element: ElementContainer): Bounds => {\n const styles = element.styles;\n const bounds = element.bounds;\n\n const paddingLeft = getAbsoluteValue(styles.paddingLeft, bounds.width);\n const paddingRight = getAbsoluteValue(styles.paddingRight, bounds.width);\n const paddingTop = getAbsoluteValue(styles.paddingTop, bounds.width);\n const paddingBottom = getAbsoluteValue(styles.paddingBottom, bounds.width);\n\n return bounds.add(\n paddingLeft + styles.borderLeftWidth,\n paddingTop + styles.borderTopWidth,\n -(styles.borderRightWidth + styles.borderLeftWidth + paddingLeft + paddingRight),\n -(styles.borderTopWidth + styles.borderBottomWidth + paddingTop + paddingBottom)\n );\n};\n","import { Bounds } from '../css/layout/bounds';\nimport { BACKGROUND_ORIGIN } from '../css/property-descriptors/background-origin';\nimport { ElementContainer } from '../dom/element-container';\nimport { BACKGROUND_SIZE, BackgroundSizeInfo } from '../css/property-descriptors/background-size';\nimport { Vector } from './vector';\nimport { BACKGROUND_REPEAT } from '../css/property-descriptors/background-repeat';\nimport { getAbsoluteValue, getAbsoluteValueForTuple, isLengthPercentage } from '../css/types/length-percentage';\nimport { CSSValue, isIdentToken } from '../css/syntax/parser';\nimport { contentBox, paddingBox } from './box-sizing';\nimport { Path } from './path';\nimport { BACKGROUND_CLIP } from '../css/property-descriptors/background-clip';\n\nexport const calculateBackgroundPositioningArea = (\n backgroundOrigin: BACKGROUND_ORIGIN,\n element: ElementContainer\n): Bounds => {\n if (backgroundOrigin === BACKGROUND_ORIGIN.BORDER_BOX) {\n return element.bounds;\n }\n\n if (backgroundOrigin === BACKGROUND_ORIGIN.CONTENT_BOX) {\n return contentBox(element);\n }\n\n return paddingBox(element);\n};\n\nexport const calculateBackgroundPaintingArea = (backgroundClip: BACKGROUND_CLIP, element: ElementContainer): Bounds => {\n if (backgroundClip === BACKGROUND_CLIP.BORDER_BOX) {\n return element.bounds;\n }\n\n if (backgroundClip === BACKGROUND_CLIP.CONTENT_BOX) {\n return contentBox(element);\n }\n\n return paddingBox(element);\n};\n\nexport const calculateBackgroundRendering = (\n container: ElementContainer,\n index: number,\n intrinsicSize: [number | null, number | null, number | null]\n): [Path[], number, number, number, number] => {\n const backgroundPositioningArea = calculateBackgroundPositioningArea(\n getBackgroundValueForIndex(container.styles.backgroundOrigin, index),\n container\n );\n\n const backgroundPaintingArea = calculateBackgroundPaintingArea(\n getBackgroundValueForIndex(container.styles.backgroundClip, index),\n container\n );\n\n const backgroundImageSize = calculateBackgroundSize(\n getBackgroundValueForIndex(container.styles.backgroundSize, index),\n intrinsicSize,\n backgroundPositioningArea\n );\n\n let [sizeWidth, sizeHeight] = backgroundImageSize;\n\n const position = getAbsoluteValueForTuple(\n getBackgroundValueForIndex(container.styles.backgroundPosition, index),\n backgroundPositioningArea.width - sizeWidth,\n backgroundPositioningArea.height - sizeHeight\n );\n\n const path = calculateBackgroundRepeatPath(\n getBackgroundValueForIndex(container.styles.backgroundRepeat, index),\n position,\n backgroundImageSize,\n backgroundPositioningArea,\n backgroundPaintingArea\n );\n\n const offsetX = Math.round(backgroundPositioningArea.left + position[0]);\n const offsetY = Math.round(backgroundPositioningArea.top + position[1]);\n\n sizeWidth = Math.max(1, sizeWidth);\n sizeHeight = Math.max(1, sizeHeight);\n\n return [path, offsetX, offsetY, sizeWidth, sizeHeight];\n};\n\nexport const isAuto = (token: CSSValue): boolean => isIdentToken(token) && token.value === BACKGROUND_SIZE.AUTO;\n\nconst hasIntrinsicValue = (value: number | null): value is number => typeof value === 'number';\n\nexport const calculateBackgroundSize = (\n size: BackgroundSizeInfo[],\n [intrinsicWidth, intrinsicHeight, intrinsicProportion]: [number | null, number | null, number | null],\n bounds: Bounds\n): [number, number] => {\n const [first, second] = size;\n\n if (!first) {\n return [0, 0];\n }\n\n if (isLengthPercentage(first) && second && isLengthPercentage(second)) {\n return [getAbsoluteValue(first, bounds.width), getAbsoluteValue(second, bounds.height)];\n }\n\n const hasIntrinsicProportion = hasIntrinsicValue(intrinsicProportion);\n\n if (isIdentToken(first) && (first.value === BACKGROUND_SIZE.CONTAIN || first.value === BACKGROUND_SIZE.COVER)) {\n if (hasIntrinsicValue(intrinsicProportion)) {\n const targetRatio = bounds.width / bounds.height;\n\n return targetRatio < intrinsicProportion !== (first.value === BACKGROUND_SIZE.COVER)\n ? [bounds.width, bounds.width / intrinsicProportion]\n : [bounds.height * intrinsicProportion, bounds.height];\n }\n\n return [bounds.width, bounds.height];\n }\n\n const hasIntrinsicWidth = hasIntrinsicValue(intrinsicWidth);\n const hasIntrinsicHeight = hasIntrinsicValue(intrinsicHeight);\n const hasIntrinsicDimensions = hasIntrinsicWidth || hasIntrinsicHeight;\n\n // If the background-size is auto or auto auto:\n if (isAuto(first) && (!second || isAuto(second))) {\n // If the image has both horizontal and vertical intrinsic dimensions, it's rendered at that size.\n if (hasIntrinsicWidth && hasIntrinsicHeight) {\n return [intrinsicWidth as number, intrinsicHeight as number];\n }\n\n // If the image has no intrinsic dimensions and has no intrinsic proportions,\n // it's rendered at the size of the background positioning area.\n\n if (!hasIntrinsicProportion && !hasIntrinsicDimensions) {\n return [bounds.width, bounds.height];\n }\n\n // TODO If the image has no intrinsic dimensions but has intrinsic proportions, it's rendered as if contain had been specified instead.\n\n // If the image has only one intrinsic dimension and has intrinsic proportions, it's rendered at the size corresponding to that one dimension.\n // The other dimension is computed using the specified dimension and the intrinsic proportions.\n if (hasIntrinsicDimensions && hasIntrinsicProportion) {\n const width = hasIntrinsicWidth\n ? (intrinsicWidth as number)\n : (intrinsicHeight as number) * (intrinsicProportion as number);\n const height = hasIntrinsicHeight\n ? (intrinsicHeight as number)\n : (intrinsicWidth as number) / (intrinsicProportion as number);\n return [width, height];\n }\n\n // If the image has only one intrinsic dimension but has no intrinsic proportions,\n // it's rendered using the specified dimension and the other dimension of the background positioning area.\n const width = hasIntrinsicWidth ? (intrinsicWidth as number) : bounds.width;\n const height = hasIntrinsicHeight ? (intrinsicHeight as number) : bounds.height;\n return [width, height];\n }\n\n // If the image has intrinsic proportions, it's stretched to the specified dimension.\n // The unspecified dimension is computed using the specified dimension and the intrinsic proportions.\n if (hasIntrinsicProportion) {\n let width = 0;\n let height = 0;\n if (isLengthPercentage(first)) {\n width = getAbsoluteValue(first, bounds.width);\n } else if (isLengthPercentage(second)) {\n height = getAbsoluteValue(second, bounds.height);\n }\n\n if (isAuto(first)) {\n width = height * (intrinsicProportion as number);\n } else if (!second || isAuto(second)) {\n height = width / (intrinsicProportion as number);\n }\n\n return [width, height];\n }\n\n // If the image has no intrinsic proportions, it's stretched to the specified dimension.\n // The unspecified dimension is computed using the image's corresponding intrinsic dimension,\n // if there is one. If there is no such intrinsic dimension,\n // it becomes the corresponding dimension of the background positioning area.\n\n let width = null;\n let height = null;\n\n if (isLengthPercentage(first)) {\n width = getAbsoluteValue(first, bounds.width);\n } else if (second && isLengthPercentage(second)) {\n height = getAbsoluteValue(second, bounds.height);\n }\n\n if (width !== null && (!second || isAuto(second))) {\n height =\n hasIntrinsicWidth && hasIntrinsicHeight\n ? (width / (intrinsicWidth as number)) * (intrinsicHeight as number)\n : bounds.height;\n }\n\n if (height !== null && isAuto(first)) {\n width =\n hasIntrinsicWidth && hasIntrinsicHeight\n ? (height / (intrinsicHeight as number)) * (intrinsicWidth as number)\n : bounds.width;\n }\n\n if (width !== null && height !== null) {\n return [width, height];\n }\n\n throw new Error(`Unable to calculate background-size for element`);\n};\n\nexport const getBackgroundValueForIndex = <T>(values: T[], index: number): T => {\n const value = values[index];\n if (typeof value === 'undefined') {\n return values[0];\n }\n\n return value;\n};\n\nexport const calculateBackgroundRepeatPath = (\n repeat: BACKGROUND_REPEAT,\n [x, y]: [number, number],\n [width, height]: [number, number],\n backgroundPositioningArea: Bounds,\n backgroundPaintingArea: Bounds\n): [Vector, Vector, Vector, Vector] => {\n switch (repeat) {\n case BACKGROUND_REPEAT.REPEAT_X:\n return [\n new Vector(Math.round(backgroundPositioningArea.left), Math.round(backgroundPositioningArea.top + y)),\n new Vector(\n Math.round(backgroundPositioningArea.left + backgroundPositioningArea.width),\n Math.round(backgroundPositioningArea.top + y)\n ),\n new Vector(\n Math.round(backgroundPositioningArea.left + backgroundPositioningArea.width),\n Math.round(height + backgroundPositioningArea.top + y)\n ),\n new Vector(\n Math.round(backgroundPositioningArea.left),\n Math.round(height + backgroundPositioningArea.top + y)\n )\n ];\n case BACKGROUND_REPEAT.REPEAT_Y:\n return [\n new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.top)),\n new Vector(\n Math.round(backgroundPositioningArea.left + x + width),\n Math.round(backgroundPositioningArea.top)\n ),\n new Vector(\n Math.round(backgroundPositioningArea.left + x + width),\n Math.round(backgroundPositioningArea.height + backgroundPositioningArea.top)\n ),\n new Vector(\n Math.round(backgroundPositioningArea.left + x),\n Math.round(backgroundPositioningArea.height + backgroundPositioningArea.top)\n )\n ];\n case BACKGROUND_REPEAT.NO_REPEAT:\n return [\n new Vector(\n Math.round(backgroundPositioningArea.left + x),\n Math.round(backgroundPositioningArea.top + y)\n ),\n new Vector(\n Math.round(backgroundPositioningArea.left + x + width),\n Math.round(backgroundPositioningArea.top + y)\n ),\n new Vector(\n Math.round(backgroundPositioningArea.left + x + width),\n Math.round(backgroundPositioningArea.top + y + height)\n ),\n new Vector(\n Math.round(backgroundPositioningArea.left + x),\n Math.round(backgroundPositioningArea.top + y + height)\n )\n ];\n default:\n return [\n new Vector(Math.round(backgroundPaintingArea.left), Math.round(backgroundPaintingArea.top)),\n new Vector(\n Math.round(backgroundPaintingArea.left + backgroundPaintingArea.width),\n Math.round(backgroundPaintingArea.top)\n ),\n new Vector(\n Math.round(backgroundPaintingArea.left + backgroundPaintingArea.width),\n Math.round(backgroundPaintingArea.height + backgroundPaintingArea.top)\n ),\n new Vector(\n Math.round(backgroundPaintingArea.left),\n Math.round(backgroundPaintingArea.height + backgroundPaintingArea.top)\n )\n ];\n }\n};\n","export const SMALL_IMAGE = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';\n","import { SMALL_IMAGE } from '../core/util';\nexport interface FontMetric {\n baseline: number;\n middle: number;\n}\n\nconst SAMPLE_TEXT = 'Hidden Text';\n\nexport class FontMetrics {\n private readonly _data: { [key: string]: FontMetric };\n private readonly _document: Document;\n\n constructor(document: Document) {\n this._data = {};\n this._document = document;\n }\n\n private parseMetrics(fontFamily: string, fontSize: string): FontMetric {\n const container = this._document.createElement('div');\n const img = this._document.createElement('img');\n const span = this._document.createElement('span');\n\n const body = this._document.body as HTMLBodyElement;\n\n container.style.visibility = 'hidden';\n container.style.fontFamily = fontFamily;\n container.style.fontSize = fontSize;\n container.style.margin = '0';\n container.style.padding = '0';\n container.style.whiteSpace = 'nowrap';\n\n body.appendChild(container);\n\n img.src = SMALL_IMAGE;\n img.width = 1;\n img.height = 1;\n\n img.style.margin = '0';\n img.style.padding = '0';\n img.style.verticalAlign = 'baseline';\n\n span.style.fontFamily = fontFamily;\n span.style.fontSize = fontSize;\n span.style.margin = '0';\n span.style.padding = '0';\n\n span.appendChild(this._document.createTextNode(SAMPLE_TEXT));\n container.appendChild(span);\n container.appendChild(img);\n const baseline = img.offsetTop - span.offsetTop + 2;\n\n container.removeChild(span);\n container.appendChild(this._document.createTextNode(SAMPLE_TEXT));\n\n container.style.lineHeight = 'normal';\n img.style.verticalAlign = 'super';\n\n const middle = img.offsetTop - container.offsetTop + 2;\n\n body.removeChild(container);\n\n return { baseline, middle };\n }\n getMetrics(fontFamily: string, fontSize: string): FontMetric {\n const key = `${fontFamily} ${fontSize}`;\n if (typeof this._data[key] === 'undefined') {\n this._data[key] = this.parseMetrics(fontFamily, fontSize);\n }\n\n return this._data[key];\n }\n}\n","import { Context } from '../core/context';\nimport { RenderConfigurations } from './canvas/canvas-renderer';\n\nexport class Renderer {\n constructor(protected readonly context: Context, protected readonly options: RenderConfigurations) {}\n}\n","import { ElementPaint, parseStackingContexts, StackingContext } from '../stacking-context';\nimport { Color } from '../../css/types/color';\nimport { asString, isTransparent } from '../../css/types/color-utilities';\nimport { ElementContainer, FLAGS } from '../../dom/element-container';\nimport { BORDER_STYLE } from '../../css/property-descriptors/border-style';\nimport { CSSParsedDeclaration } from '../../css';\nimport { TextContainer } from '../../dom/text-container';\nimport { Path, transformPath } from '../path';\nimport { BACKGROUND_CLIP } from '../../css/property-descriptors/background-clip';\nimport { BoundCurves, calculateBorderBoxPath, calculateContentBoxPath, calculatePaddingBoxPath } from '../bound-curves';\nimport { BezierCurve, isBezierCurve } from '../bezier-curve';\nimport { Vector } from '../vector';\nimport { CSSImageType, CSSURLImage, isLinearGradient, isRadialGradient } from '../../css/types/image';\nimport {\n parsePathForBorder,\n parsePathForBorderDoubleInner,\n parsePathForBorderDoubleOuter,\n parsePathForBorderStroke\n} from '../border';\nimport { calculateBackgroundRendering, getBackgroundValueForIndex } from '../background';\nimport { isDimensionToken } from '../../css/syntax/parser';\nimport { segmentGraphemes, TextBounds } from '../../css/layout/text';\nimport { ImageElementContainer } from '../../dom/replaced-elements/image-element-container';\nimport { contentBox } from '../box-sizing';\nimport { CanvasElementContainer } from '../../dom/replaced-elements/canvas-element-container';\nimport { SVGElementContainer } from '../../dom/replaced-elements/svg-element-container';\nimport { ReplacedElementContainer } from '../../dom/replaced-elements';\nimport { EffectTarget, IElementEffect, isClipEffect, isOpacityEffect, isTransformEffect } from '../effects';\nimport { contains } from '../../core/bitwise';\nimport { calculateGradientDirection, calculateRadius, processColorStops } from '../../css/types/functions/gradient';\nimport { FIFTY_PERCENT, getAbsoluteValue } from '../../css/types/length-percentage';\nimport { TEXT_DECORATION_LINE } from '../../css/property-descriptors/text-decoration-line';\nimport { FontMetrics } from '../font-metrics';\nimport { DISPLAY } from '../../css/property-descriptors/display';\nimport { Bounds } from '../../css/layout/bounds';\nimport { LIST_STYLE_TYPE } from '../../css/property-descriptors/list-style-type';\nimport { computeLineHeight } from '../../css/property-descriptors/line-height';\nimport {\n CHECKBOX,\n INPUT_COLOR,\n InputElementContainer,\n RADIO\n} from '../../dom/replaced-elements/input-element-container';\nimport { TEXT_ALIGN } from '../../css/property-descriptors/text-align';\nimport { TextareaElementContainer } from '../../dom/elements/textarea-element-container';\nimport { SelectElementContainer } from '../../dom/elements/select-element-container';\nimport { IFrameElementContainer } from '../../dom/replaced-elements/iframe-element-container';\nimport { TextShadow } from '../../css/property-descriptors/text-shadow';\nimport { PAINT_ORDER_LAYER } from '../../css/property-descriptors/paint-order';\nimport { Renderer } from '../renderer';\nimport { Context } from '../../core/context';\nimport { DIRECTION } from '../../css/property-descriptors/direction';\nimport { OBJECT_FIT } from '../../css/property-descriptors/object-fit';\n\nexport type RenderConfigurations = RenderOptions & {\n backgroundColor: Color | null;\n};\n\nexport interface RenderOptions {\n scale: number;\n canvas?: HTMLCanvasElement;\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\nconst MASK_OFFSET = 10000;\n\nexport class CanvasRenderer extends Renderer {\n canvas: HTMLCanvasElement;\n ctx: CanvasRenderingContext2D;\n private readonly _activeEffects: IElementEffect[] = [];\n private readonly fontMetrics: FontMetrics;\n\n constructor(context: Context, options: RenderConfigurations) {\n super(context, options);\n this.canvas = options.canvas ? options.canvas : document.createElement('canvas');\n this.ctx = this.canvas.getContext('2d') as CanvasRenderingContext2D;\n if (!options.canvas) {\n this.canvas.width = Math.floor(options.width * options.scale);\n this.canvas.height = Math.floor(options.height * options.scale);\n this.canvas.style.width = `${options.width}px`;\n this.canvas.style.height = `${options.height}px`;\n }\n this.fontMetrics = new FontMetrics(document);\n this.ctx.scale(this.options.scale, this.options.scale);\n this.ctx.translate(-options.x, -options.y);\n this.ctx.textBaseline = 'bottom';\n this._activeEffects = [];\n this.context.logger.debug(\n `Canvas renderer initialized (${options.width}x${options.height}) with scale ${options.scale}`\n );\n }\n\n applyEffects(effects: IElementEffect[]): void {\n while (this._activeEffects.length) {\n this.popEffect();\n }\n\n effects.forEach((effect) => this.applyEffect(effect));\n }\n\n applyEffect(effect: IElementEffect): void {\n this.ctx.save();\n if (isOpacityEffect(effect)) {\n this.ctx.globalAlpha = effect.opacity;\n }\n\n if (isTransformEffect(effect)) {\n this.ctx.translate(effect.offsetX, effect.offsetY);\n this.ctx.transform(\n effect.matrix[0],\n effect.matrix[1],\n effect.matrix[2],\n effect.matrix[3],\n effect.matrix[4],\n effect.matrix[5]\n );\n this.ctx.translate(-effect.offsetX, -effect.offsetY);\n }\n\n if (isClipEffect(effect)) {\n this.path(effect.path);\n this.ctx.clip();\n }\n\n this._activeEffects.push(effect);\n }\n\n popEffect(): void {\n this._activeEffects.pop();\n this.ctx.restore();\n }\n\n async renderStack(stack: StackingContext): Promise<void> {\n const styles = stack.element.container.styles;\n if (styles.isVisible()) {\n await this.renderStackContent(stack);\n }\n }\n\n async renderNode(paint: ElementPaint): Promise<void> {\n if (contains(paint.container.flags, FLAGS.DEBUG_RENDER)) {\n debugger;\n }\n\n if (paint.container.styles.isVisible()) {\n await this.renderNodeBackgroundAndBorders(paint);\n await this.renderNodeContent(paint);\n }\n }\n\n renderTextWithLetterSpacing(text: TextBounds, letterSpacing: number, baseline: number): void {\n if (letterSpacing === 0) {\n this.ctx.fillText(text.text, text.bounds.left, text.bounds.top + baseline);\n } else {\n const letters = segmentGraphemes(text.text);\n letters.reduce((left, letter) => {\n this.ctx.fillText(letter, left, text.bounds.top + baseline);\n\n return left + this.ctx.measureText(letter).width;\n }, text.bounds.left);\n }\n }\n\n private createFontStyle(styles: CSSParsedDeclaration): string[] {\n const fontVariant = styles.fontVariant\n .filter((variant) => variant === 'normal' || variant === 'small-caps')\n .join('');\n const fontFamily = fixIOSSystemFonts(styles.fontFamily).join(', ');\n const fontSize = isDimensionToken(styles.fontSize)\n ? `${styles.fontSize.number}${styles.fontSize.unit}`\n : `${styles.fontSize.number}px`;\n\n return [\n [styles.fontStyle, fontVariant, styles.fontWeight, fontSize, fontFamily].join(' '),\n fontFamily,\n fontSize\n ];\n }\n\n async renderTextNode(text: TextContainer, styles: CSSParsedDeclaration): Promise<void> {\n const [font, fontFamily, fontSize] = this.createFontStyle(styles);\n\n this.ctx.font = font;\n\n this.ctx.direction = styles.direction === DIRECTION.RTL ? 'rtl' : 'ltr';\n this.ctx.textAlign = 'left';\n this.ctx.textBaseline = 'alphabetic';\n const { baseline, middle } = this.fontMetrics.getMetrics(fontFamily, fontSize);\n const paintOrder = styles.paintOrder;\n\n text.textBounds.forEach((text) => {\n paintOrder.forEach((paintOrderLayer) => {\n switch (paintOrderLayer) {\n case PAINT_ORDER_LAYER.FILL:\n this.ctx.fillStyle = asString(styles.color);\n this.renderTextWithLetterSpacing(text, styles.letterSpacing, styles.fontSize.number);\n const textShadows: TextShadow = styles.textShadow;\n\n if (textShadows.length && text.text.trim().length) {\n textShadows\n .slice(0)\n .reverse()\n .forEach((textShadow) => {\n this.ctx.shadowColor = asString(textShadow.color);\n this.ctx.shadowOffsetX = textShadow.offsetX.number * this.options.scale;\n this.ctx.shadowOffsetY = textShadow.offsetY.number * this.options.scale;\n this.ctx.shadowBlur = textShadow.blur.number;\n\n this.renderTextWithLetterSpacing(\n text,\n styles.letterSpacing,\n styles.fontSize.number\n );\n });\n\n this.ctx.shadowColor = '';\n this.ctx.shadowOffsetX = 0;\n this.ctx.shadowOffsetY = 0;\n this.ctx.shadowBlur = 0;\n }\n\n if (styles.textDecorationLine.length) {\n this.ctx.fillStyle = asString(styles.textDecorationColor || styles.color);\n styles.textDecorationLine.forEach((textDecorationLine) => {\n switch (textDecorationLine) {\n case TEXT_DECORATION_LINE.UNDERLINE:\n // Draws a line at the baseline of the font\n // TODO As some browsers display the line as more than 1px if the font-size is big,\n // need to take that into account both in position and size\n this.ctx.fillRect(\n text.bounds.left,\n Math.round(text.bounds.top + baseline),\n text.bounds.width,\n 1\n );\n\n break;\n case TEXT_DECORATION_LINE.OVERLINE:\n this.ctx.fillRect(\n text.bounds.left,\n Math.round(text.bounds.top),\n text.bounds.width,\n 1\n );\n break;\n case TEXT_DECORATION_LINE.LINE_THROUGH:\n // TODO try and find exact position for line-through\n this.ctx.fillRect(\n text.bounds.left,\n Math.ceil(text.bounds.top + middle),\n text.bounds.width,\n 1\n );\n break;\n }\n });\n }\n break;\n case PAINT_ORDER_LAYER.STROKE:\n if (styles.webkitTextStrokeWidth && text.text.trim().length) {\n this.ctx.strokeStyle = asString(styles.webkitTextStrokeColor);\n this.ctx.lineWidth = styles.webkitTextStrokeWidth;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.ctx.lineJoin = !!(window as any).chrome ? 'miter' : 'round';\n this.ctx.strokeText(text.text, text.bounds.left, text.bounds.top + baseline);\n }\n this.ctx.strokeStyle = '';\n this.ctx.lineWidth = 0;\n this.ctx.lineJoin = 'miter';\n break;\n }\n });\n });\n }\n\n renderReplacedElement(\n container: ReplacedElementContainer,\n curves: BoundCurves,\n image: HTMLImageElement | HTMLCanvasElement\n ): void {\n const intrinsicWidth = (image as HTMLImageElement).naturalWidth || container.intrinsicWidth;\n const intrinsicHeight = (image as HTMLImageElement).naturalHeight || container.intrinsicHeight;\n if (image && intrinsicWidth > 0 && intrinsicHeight > 0) {\n const box = contentBox(container);\n const path = calculatePaddingBoxPath(curves);\n this.path(path);\n this.ctx.save();\n this.ctx.clip();\n let sx = 0,\n sy = 0,\n sw: number = intrinsicWidth,\n sh: number = intrinsicHeight,\n dx: number = box.left,\n dy: number = box.top,\n dw: number = box.width,\n dh: number = box.height;\n const { objectFit } = container.styles;\n const boxRatio = dw / dh;\n const imgRatio = sw / sh;\n if (objectFit === OBJECT_FIT.CONTAIN) {\n if (imgRatio > boxRatio) {\n dh = dw / imgRatio;\n dy += (box.height - dh) / 2;\n } else {\n dw = dh * imgRatio;\n dx += (box.width - dw) / 2;\n }\n } else if (objectFit === OBJECT_FIT.COVER) {\n if (imgRatio > boxRatio) {\n sw = sh * boxRatio;\n sx += (intrinsicWidth - sw) / 2;\n } else {\n sh = sw / boxRatio;\n sy += (intrinsicHeight - sh) / 2;\n }\n } else if (objectFit === OBJECT_FIT.NONE) {\n if (sw > dw) {\n sx += (sw - dw) / 2;\n sw = dw;\n } else {\n dx += (dw - sw) / 2;\n dw = sw;\n }\n if (sh > dh) {\n sy += (sh - dh) / 2;\n sh = dh;\n } else {\n dy += (dh - sh) / 2;\n dh = sh;\n }\n } else if (objectFit === OBJECT_FIT.SCALE_DOWN) {\n const containW = imgRatio > boxRatio ? dw : dh * imgRatio;\n const noneW = sw > dw ? sw : dw;\n if (containW < noneW) {\n if (imgRatio > boxRatio) {\n dh = dw / imgRatio;\n dy += (box.height - dh) / 2;\n } else {\n dw = dh * imgRatio;\n dx += (box.width - dw) / 2;\n }\n } else {\n if (sw > dw) {\n sx += (sw - dw) / 2;\n sw = dw;\n } else {\n dx += (dw - sw) / 2;\n dw = sw;\n }\n if (sh > dh) {\n sy += (sh - dh) / 2;\n sh = dh;\n } else {\n dy += (dh - sh) / 2;\n dh = sh;\n }\n }\n }\n this.ctx.drawImage(image, sx, sy, sw, sh, dx, dy, dw, dh);\n this.ctx.restore();\n }\n }\n\n async renderNodeContent(paint: ElementPaint): Promise<void> {\n this.applyEffects(paint.getEffects(EffectTarget.CONTENT));\n const container = paint.container;\n const curves = paint.curves;\n const styles = container.styles;\n for (const child of container.textNodes) {\n await this.renderTextNode(child, styles);\n }\n\n if (container instanceof ImageElementContainer) {\n try {\n const image = await this.context.cache.match(container.src);\n this.renderReplacedElement(container, curves, image);\n } catch (e) {\n this.context.logger.error(`Error loading image ${container.src}`);\n }\n }\n\n if (container instanceof CanvasElementContainer) {\n this.renderReplacedElement(container, curves, container.canvas);\n }\n\n if (container instanceof SVGElementContainer) {\n try {\n const image = await this.context.cache.match(container.svg);\n this.renderReplacedElement(container, curves, image);\n } catch (e) {\n this.context.logger.error(`Error loading svg ${container.svg.substring(0, 255)}`);\n }\n }\n\n if (container instanceof IFrameElementContainer && container.tree) {\n const iframeRenderer = new CanvasRenderer(this.context, {\n scale: this.options.scale,\n backgroundColor: container.backgroundColor,\n x: 0,\n y: 0,\n width: container.width,\n height: container.height\n });\n\n const canvas = await iframeRenderer.render(container.tree);\n if (container.width && container.height) {\n this.ctx.drawImage(\n canvas,\n 0,\n 0,\n container.width,\n container.height,\n container.bounds.left,\n container.bounds.top,\n container.bounds.width,\n container.bounds.height\n );\n }\n }\n\n if (container instanceof InputElementContainer) {\n const size = Math.min(container.bounds.width, container.bounds.height);\n\n if (container.type === CHECKBOX) {\n if (container.checked) {\n this.ctx.save();\n this.path([\n new Vector(container.bounds.left + size * 0.39363, container.bounds.top + size * 0.79),\n new Vector(container.bounds.left + size * 0.16, container.bounds.top + size * 0.5549),\n new Vector(container.bounds.left + size * 0.27347, container.bounds.top + size * 0.44071),\n new Vector(container.bounds.left + size * 0.39694, container.bounds.top + size * 0.5649),\n new Vector(container.bounds.left + size * 0.72983, container.bounds.top + size * 0.23),\n new Vector(container.bounds.left + size * 0.84, container.bounds.top + size * 0.34085),\n new Vector(container.bounds.left + size * 0.39363, container.bounds.top + size * 0.79)\n ]);\n\n this.ctx.fillStyle = asString(INPUT_COLOR);\n this.ctx.fill();\n this.ctx.restore();\n }\n } else if (container.type === RADIO) {\n if (container.checked) {\n this.ctx.save();\n this.ctx.beginPath();\n this.ctx.arc(\n container.bounds.left + size / 2,\n container.bounds.top + size / 2,\n size / 4,\n 0,\n Math.PI * 2,\n true\n );\n this.ctx.fillStyle = asString(INPUT_COLOR);\n this.ctx.fill();\n this.ctx.restore();\n }\n }\n }\n\n if (isTextInputElement(container) && container.value.length) {\n const [fontFamily, fontSize] = this.createFontStyle(styles);\n const { baseline } = this.fontMetrics.getMetrics(fontFamily, fontSize);\n\n this.ctx.font = fontFamily;\n this.ctx.fillStyle = asString(styles.color);\n\n this.ctx.textBaseline = 'alphabetic';\n this.ctx.textAlign = canvasTextAlign(container.styles.textAlign);\n\n const bounds = contentBox(container);\n\n let x = 0;\n\n switch (container.styles.textAlign) {\n case TEXT_ALIGN.CENTER:\n x += bounds.width / 2;\n break;\n case TEXT_ALIGN.RIGHT:\n x += bounds.width;\n break;\n }\n\n const textBounds = bounds.add(x, 0, 0, -bounds.height / 2 + 1);\n\n this.ctx.save();\n this.path([\n new Vector(bounds.left, bounds.top),\n new Vector(bounds.left + bounds.width, bounds.top),\n new Vector(bounds.left + bounds.width, bounds.top + bounds.height),\n new Vector(bounds.left, bounds.top + bounds.height)\n ]);\n\n this.ctx.clip();\n this.renderTextWithLetterSpacing(\n new TextBounds(container.value, textBounds),\n styles.letterSpacing,\n baseline\n );\n this.ctx.restore();\n this.ctx.textBaseline = 'alphabetic';\n this.ctx.textAlign = 'left';\n }\n\n if (contains(container.styles.display, DISPLAY.LIST_ITEM)) {\n if (container.styles.listStyleImage !== null) {\n const img = container.styles.listStyleImage;\n if (img.type === CSSImageType.URL) {\n let image;\n const url = (img as CSSURLImage).url;\n try {\n image = await this.context.cache.match(url);\n this.ctx.drawImage(image, container.bounds.left - (image.width + 10), container.bounds.top);\n } catch (e) {\n this.context.logger.error(`Error loading list-style-image ${url}`);\n }\n }\n } else if (paint.listValue && container.styles.listStyleType !== LIST_STYLE_TYPE.NONE) {\n const [fontFamily] = this.createFontStyle(styles);\n\n this.ctx.font = fontFamily;\n this.ctx.fillStyle = asString(styles.color);\n\n this.ctx.textBaseline = 'middle';\n this.ctx.textAlign = 'right';\n const bounds = new Bounds(\n container.bounds.left,\n container.bounds.top + getAbsoluteValue(container.styles.paddingTop, container.bounds.width),\n container.bounds.width,\n computeLineHeight(styles.lineHeight, styles.fontSize.number) / 2 + 1\n );\n\n this.renderTextWithLetterSpacing(\n new TextBounds(paint.listValue, bounds),\n styles.letterSpacing,\n computeLineHeight(styles.lineHeight, styles.fontSize.number) / 2 + 2\n );\n this.ctx.textBaseline = 'bottom';\n this.ctx.textAlign = 'left';\n }\n }\n }\n\n async renderStackContent(stack: StackingContext): Promise<void> {\n if (contains(stack.element.container.flags, FLAGS.DEBUG_RENDER)) {\n debugger;\n }\n // https://www.w3.org/TR/css-position-3/#painting-order\n // 1. the background and borders of the element forming the stacking context.\n await this.renderNodeBackgroundAndBorders(stack.element);\n // 2. the child stacking contexts with negative stack levels (most negative first).\n for (const child of stack.negativeZIndex) {\n await this.renderStack(child);\n }\n // 3. For all its in-flow, non-positioned, block-level descendants in tree order:\n await this.renderNodeContent(stack.element);\n\n for (const child of stack.nonInlineLevel) {\n await this.renderNode(child);\n }\n // 4. All non-positioned floating descendants, in tree order. For each one of these,\n // treat the element as if it created a new stacking context, but any positioned descendants and descendants\n // which actually create a new stacking context should be considered part of the parent stacking context,\n // not this new one.\n for (const child of stack.nonPositionedFloats) {\n await this.renderStack(child);\n }\n // 5. the in-flow, inline-level, non-positioned descendants, including inline tables and inline blocks.\n for (const child of stack.nonPositionedInlineLevel) {\n await this.renderStack(child);\n }\n for (const child of stack.inlineLevel) {\n await this.renderNode(child);\n }\n // 6. All positioned, opacity or transform descendants, in tree order that fall into the following categories:\n // All positioned descendants with 'z-index: auto' or 'z-index: 0', in tree order.\n // For those with 'z-index: auto', treat the element as if it created a new stacking context,\n // but any positioned descendants and descendants which actually create a new stacking context should be\n // considered part of the parent stacking context, not this new one. For those with 'z-index: 0',\n // treat the stacking context generated atomically.\n //\n // All opacity descendants with opacity less than 1\n //\n // All transform descendants with transform other than none\n for (const child of stack.zeroOrAutoZIndexOrTransformedOrOpacity) {\n await this.renderStack(child);\n }\n // 7. Stacking contexts formed by positioned descendants with z-indices greater than or equal to 1 in z-index\n // order (smallest first) then tree order.\n for (const child of stack.positiveZIndex) {\n await this.renderStack(child);\n }\n }\n\n mask(paths: Path[]): void {\n this.ctx.beginPath();\n this.ctx.moveTo(0, 0);\n this.ctx.lineTo(this.canvas.width, 0);\n this.ctx.lineTo(this.canvas.width, this.canvas.height);\n this.ctx.lineTo(0, this.canvas.height);\n this.ctx.lineTo(0, 0);\n this.formatPath(paths.slice(0).reverse());\n this.ctx.closePath();\n }\n\n path(paths: Path[]): void {\n this.ctx.beginPath();\n this.formatPath(paths);\n this.ctx.closePath();\n }\n\n formatPath(paths: Path[]): void {\n paths.forEach((point, index) => {\n const start: Vector = isBezierCurve(point) ? point.start : point;\n if (index === 0) {\n this.ctx.moveTo(start.x, start.y);\n } else {\n this.ctx.lineTo(start.x, start.y);\n }\n\n if (isBezierCurve(point)) {\n this.ctx.bezierCurveTo(\n point.startControl.x,\n point.startControl.y,\n point.endControl.x,\n point.endControl.y,\n point.end.x,\n point.end.y\n );\n }\n });\n }\n\n renderRepeat(path: Path[], pattern: CanvasPattern | CanvasGradient, offsetX: number, offsetY: number): void {\n this.path(path);\n this.ctx.fillStyle = pattern;\n this.ctx.translate(offsetX, offsetY);\n this.ctx.fill();\n this.ctx.translate(-offsetX, -offsetY);\n }\n\n resizeImage(image: HTMLImageElement, width: number, height: number): HTMLCanvasElement | HTMLImageElement {\n // https://github.com/niklasvh/html2canvas/pull/2911\n // if (image.width === width && image.height === height) {\n // return image;\n // }\n\n const ownerDocument = this.canvas.ownerDocument ?? document;\n const canvas = ownerDocument.createElement('canvas');\n canvas.width = Math.max(1, width);\n canvas.height = Math.max(1, height);\n const ctx = canvas.getContext('2d') as CanvasRenderingContext2D;\n ctx.drawImage(image, 0, 0, image.width, image.height, 0, 0, width, height);\n return canvas;\n }\n\n async renderBackgroundImage(container: ElementContainer): Promise<void> {\n let index = container.styles.backgroundImage.length - 1;\n for (const backgroundImage of container.styles.backgroundImage.slice(0).reverse()) {\n if (backgroundImage.type === CSSImageType.URL) {\n let image;\n const url = (backgroundImage as CSSURLImage).url;\n try {\n image = await this.context.cache.match(url);\n } catch (e) {\n this.context.logger.error(`Error loading background-image ${url}`);\n }\n\n if (image) {\n const imageWidth = isNaN(image.width) || image.width === 0 ? 1 : image.width;\n const imageHeight = isNaN(image.height) || image.height === 0 ? 1 : image.height;\n const [path, x, y, width, height] = calculateBackgroundRendering(container, index, [\n imageWidth,\n imageHeight,\n imageWidth / imageHeight\n ]);\n const pattern = this.ctx.createPattern(\n this.resizeImage(image, width, height),\n 'repeat'\n ) as CanvasPattern;\n this.renderRepeat(path, pattern, x, y);\n }\n } else if (isLinearGradient(backgroundImage)) {\n const [path, x, y, width, height] = calculateBackgroundRendering(container, index, [null, null, null]);\n const [lineLength, x0, x1, y0, y1] = calculateGradientDirection(backgroundImage.angle, width, height);\n\n const canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n const ctx = canvas.getContext('2d') as CanvasRenderingContext2D;\n const gradient = ctx.createLinearGradient(x0, y0, x1, y1);\n\n processColorStops(backgroundImage.stops, lineLength).forEach((colorStop) =>\n gradient.addColorStop(colorStop.stop, asString(colorStop.color))\n );\n\n ctx.fillStyle = gradient;\n ctx.fillRect(0, 0, width, height);\n if (width > 0 && height > 0) {\n const pattern = this.ctx.createPattern(canvas, 'repeat') as CanvasPattern;\n this.renderRepeat(path, pattern, x, y);\n }\n } else if (isRadialGradient(backgroundImage)) {\n const [path, left, top, width, height] = calculateBackgroundRendering(container, index, [\n null,\n null,\n null\n ]);\n const position = backgroundImage.position.length === 0 ? [FIFTY_PERCENT] : backgroundImage.position;\n const x = getAbsoluteValue(position[0], width);\n const y = getAbsoluteValue(position[position.length - 1], height);\n\n const [rx, ry] = calculateRadius(backgroundImage, x, y, width, height);\n if (rx > 0 && ry > 0) {\n const radialGradient = this.ctx.createRadialGradient(left + x, top + y, 0, left + x, top + y, rx);\n\n processColorStops(backgroundImage.stops, rx * 2).forEach((colorStop) =>\n radialGradient.addColorStop(colorStop.stop, asString(colorStop.color))\n );\n\n this.path(path);\n this.ctx.fillStyle = radialGradient;\n if (rx !== ry) {\n // transforms for elliptical radial gradient\n const midX = container.bounds.left + 0.5 * container.bounds.width;\n const midY = container.bounds.top + 0.5 * container.bounds.height;\n const f = ry / rx;\n const invF = 1 / f;\n\n this.ctx.save();\n this.ctx.translate(midX, midY);\n this.ctx.transform(1, 0, 0, f, 0, 0);\n this.ctx.translate(-midX, -midY);\n\n this.ctx.fillRect(left, invF * (top - midY) + midY, width, height * invF);\n this.ctx.restore();\n } else {\n this.ctx.fill();\n }\n }\n }\n index--;\n }\n }\n\n async renderSolidBorder(color: Color, side: number, curvePoints: BoundCurves): Promise<void> {\n this.path(parsePathForBorder(curvePoints, side));\n this.ctx.fillStyle = asString(color);\n this.ctx.fill();\n }\n\n async renderDoubleBorder(color: Color, width: number, side: number, curvePoints: BoundCurves): Promise<void> {\n if (width < 3) {\n await this.renderSolidBorder(color, side, curvePoints);\n return;\n }\n\n const outerPaths = parsePathForBorderDoubleOuter(curvePoints, side);\n this.path(outerPaths);\n this.ctx.fillStyle = asString(color);\n this.ctx.fill();\n const innerPaths = parsePathForBorderDoubleInner(curvePoints, side);\n this.path(innerPaths);\n this.ctx.fill();\n }\n\n async renderNodeBackgroundAndBorders(paint: ElementPaint): Promise<void> {\n this.applyEffects(paint.getEffects(EffectTarget.BACKGROUND_BORDERS));\n const styles = paint.container.styles;\n const hasBackground = !isTransparent(styles.backgroundColor) || styles.backgroundImage.length;\n\n const borders = [\n { style: styles.borderTopStyle, color: styles.borderTopColor, width: styles.borderTopWidth },\n { style: styles.borderRightStyle, color: styles.borderRightColor, width: styles.borderRightWidth },\n { style: styles.borderBottomStyle, color: styles.borderBottomColor, width: styles.borderBottomWidth },\n { style: styles.borderLeftStyle, color: styles.borderLeftColor, width: styles.borderLeftWidth }\n ];\n\n const backgroundPaintingArea = calculateBackgroundCurvedPaintingArea(\n getBackgroundValueForIndex(styles.backgroundClip, 0),\n paint.curves\n );\n\n if (hasBackground || styles.boxShadow.length) {\n this.ctx.save();\n this.path(backgroundPaintingArea);\n this.ctx.clip();\n\n if (!isTransparent(styles.backgroundColor)) {\n this.ctx.fillStyle = asString(styles.backgroundColor);\n this.ctx.fill();\n }\n\n await this.renderBackgroundImage(paint.container);\n\n this.ctx.restore();\n\n styles.boxShadow\n .slice(0)\n .reverse()\n .forEach((shadow) => {\n this.ctx.save();\n const borderBoxArea = calculateBorderBoxPath(paint.curves);\n const maskOffset = shadow.inset ? 0 : MASK_OFFSET;\n const shadowPaintingArea = transformPath(\n borderBoxArea,\n -maskOffset + (shadow.inset ? 1 : -1) * shadow.spread.number,\n (shadow.inset ? 1 : -1) * shadow.spread.number,\n shadow.spread.number * (shadow.inset ? -2 : 2),\n shadow.spread.number * (shadow.inset ? -2 : 2)\n );\n\n if (shadow.inset) {\n this.path(borderBoxArea);\n this.ctx.clip();\n this.mask(shadowPaintingArea);\n } else {\n this.mask(borderBoxArea);\n this.ctx.clip();\n this.path(shadowPaintingArea);\n }\n\n this.ctx.shadowOffsetX = shadow.offsetX.number + maskOffset;\n this.ctx.shadowOffsetY = shadow.offsetY.number;\n this.ctx.shadowColor = asString(shadow.color);\n this.ctx.shadowBlur = shadow.blur.number;\n this.ctx.fillStyle = shadow.inset ? asString(shadow.color) : 'rgba(0,0,0,1)';\n\n this.ctx.fill();\n this.ctx.restore();\n });\n }\n\n let side = 0;\n for (const border of borders) {\n if (border.style !== BORDER_STYLE.NONE && !isTransparent(border.color) && border.width > 0) {\n if (border.style === BORDER_STYLE.DASHED) {\n await this.renderDashedDottedBorder(\n border.color,\n border.width,\n side,\n paint.curves,\n BORDER_STYLE.DASHED\n );\n } else if (border.style === BORDER_STYLE.DOTTED) {\n await this.renderDashedDottedBorder(\n border.color,\n border.width,\n side,\n paint.curves,\n BORDER_STYLE.DOTTED\n );\n } else if (border.style === BORDER_STYLE.DOUBLE) {\n await this.renderDoubleBorder(border.color, border.width, side, paint.curves);\n } else {\n await this.renderSolidBorder(border.color, side, paint.curves);\n }\n }\n side++;\n }\n }\n\n async renderDashedDottedBorder(\n color: Color,\n width: number,\n side: number,\n curvePoints: BoundCurves,\n style: BORDER_STYLE\n ): Promise<void> {\n this.ctx.save();\n\n const strokePaths = parsePathForBorderStroke(curvePoints, side);\n const boxPaths = parsePathForBorder(curvePoints, side);\n\n if (style === BORDER_STYLE.DASHED) {\n this.path(boxPaths);\n this.ctx.clip();\n }\n\n let startX, startY, endX, endY;\n if (isBezierCurve(boxPaths[0])) {\n startX = (boxPaths[0] as BezierCurve).start.x;\n startY = (boxPaths[0] as BezierCurve).start.y;\n } else {\n startX = (boxPaths[0] as Vector).x;\n startY = (boxPaths[0] as Vector).y;\n }\n if (isBezierCurve(boxPaths[1])) {\n endX = (boxPaths[1] as BezierCurve).end.x;\n endY = (boxPaths[1] as BezierCurve).end.y;\n } else {\n endX = (boxPaths[1] as Vector).x;\n endY = (boxPaths[1] as Vector).y;\n }\n\n let length;\n if (side === 0 || side === 2) {\n length = Math.abs(startX - endX);\n } else {\n length = Math.abs(startY - endY);\n }\n\n this.ctx.beginPath();\n if (style === BORDER_STYLE.DOTTED) {\n this.formatPath(strokePaths);\n } else {\n this.formatPath(boxPaths.slice(0, 2));\n }\n\n let dashLength = width < 3 ? width * 3 : width * 2;\n let spaceLength = width < 3 ? width * 2 : width;\n if (style === BORDER_STYLE.DOTTED) {\n dashLength = width;\n spaceLength = width;\n }\n\n let useLineDash = true;\n if (length <= dashLength * 2) {\n useLineDash = false;\n } else if (length <= dashLength * 2 + spaceLength) {\n const multiplier = length / (2 * dashLength + spaceLength);\n dashLength *= multiplier;\n spaceLength *= multiplier;\n } else {\n const numberOfDashes = Math.floor((length + spaceLength) / (dashLength + spaceLength));\n const minSpace = (length - numberOfDashes * dashLength) / (numberOfDashes - 1);\n const maxSpace = (length - (numberOfDashes + 1) * dashLength) / numberOfDashes;\n spaceLength =\n maxSpace <= 0 || Math.abs(spaceLength - minSpace) < Math.abs(spaceLength - maxSpace)\n ? minSpace\n : maxSpace;\n }\n\n if (useLineDash) {\n if (style === BORDER_STYLE.DOTTED) {\n this.ctx.setLineDash([0, dashLength + spaceLength]);\n } else {\n this.ctx.setLineDash([dashLength, spaceLength]);\n }\n }\n\n if (style === BORDER_STYLE.DOTTED) {\n this.ctx.lineCap = 'round';\n this.ctx.lineWidth = width;\n } else {\n this.ctx.lineWidth = width * 2 + 1.1;\n }\n this.ctx.strokeStyle = asString(color);\n this.ctx.stroke();\n this.ctx.setLineDash([]);\n\n // dashed round edge gap\n if (style === BORDER_STYLE.DASHED) {\n if (isBezierCurve(boxPaths[0])) {\n const path1 = boxPaths[3] as BezierCurve;\n const path2 = boxPaths[0] as BezierCurve;\n this.ctx.beginPath();\n this.formatPath([new Vector(path1.end.x, path1.end.y), new Vector(path2.start.x, path2.start.y)]);\n this.ctx.stroke();\n }\n if (isBezierCurve(boxPaths[1])) {\n const path1 = boxPaths[1] as BezierCurve;\n const path2 = boxPaths[2] as BezierCurve;\n this.ctx.beginPath();\n this.formatPath([new Vector(path1.end.x, path1.end.y), new Vector(path2.start.x, path2.start.y)]);\n this.ctx.stroke();\n }\n }\n\n this.ctx.restore();\n }\n\n async render(element: ElementContainer): Promise<HTMLCanvasElement> {\n if (this.options.backgroundColor) {\n this.ctx.fillStyle = asString(this.options.backgroundColor);\n this.ctx.fillRect(this.options.x, this.options.y, this.options.width, this.options.height);\n }\n\n const stack = parseStackingContexts(element);\n\n await this.renderStack(stack);\n this.applyEffects([]);\n return this.canvas;\n }\n}\n\nconst isTextInputElement = (\n container: ElementContainer\n): container is InputElementContainer | TextareaElementContainer | SelectElementContainer => {\n if (container instanceof TextareaElementContainer) {\n return true;\n } else if (container instanceof SelectElementContainer) {\n return true;\n } else if (container instanceof InputElementContainer && container.type !== RADIO && container.type !== CHECKBOX) {\n return true;\n }\n return false;\n};\n\nconst calculateBackgroundCurvedPaintingArea = (clip: BACKGROUND_CLIP, curves: BoundCurves): Path[] => {\n switch (clip) {\n case BACKGROUND_CLIP.BORDER_BOX:\n return calculateBorderBoxPath(curves);\n case BACKGROUND_CLIP.CONTENT_BOX:\n return calculateContentBoxPath(curves);\n case BACKGROUND_CLIP.PADDING_BOX:\n default:\n return calculatePaddingBoxPath(curves);\n }\n};\n\nconst canvasTextAlign = (textAlign: TEXT_ALIGN): CanvasTextAlign => {\n switch (textAlign) {\n case TEXT_ALIGN.CENTER:\n return 'center';\n case TEXT_ALIGN.RIGHT:\n return 'right';\n case TEXT_ALIGN.LEFT:\n default:\n return 'left';\n }\n};\n\n// see https://github.com/niklasvh/html2canvas/pull/2645\nconst iOSBrokenFonts = ['-apple-system', 'system-ui'];\n\nconst fixIOSSystemFonts = (fontFamilies: string[]): string[] => {\n return /iPhone OS 15_(0|1)/.test(window.navigator.userAgent)\n ? fontFamilies.filter((fontFamily) => iOSBrokenFonts.indexOf(fontFamily) === -1)\n : fontFamilies;\n};\n","import { RenderConfigurations } from './canvas-renderer';\nimport { createForeignObjectSVG } from '../../core/features';\nimport { asString } from '../../css/types/color-utilities';\nimport { Renderer } from '../renderer';\nimport { Context } from '../../core/context';\n\nexport class ForeignObjectRenderer extends Renderer {\n canvas: HTMLCanvasElement;\n ctx: CanvasRenderingContext2D;\n options: RenderConfigurations;\n\n constructor(context: Context, options: RenderConfigurations) {\n super(context, options);\n this.canvas = options.canvas ? options.canvas : document.createElement('canvas');\n this.ctx = this.canvas.getContext('2d') as CanvasRenderingContext2D;\n this.options = options;\n this.canvas.width = Math.floor(options.width * options.scale);\n this.canvas.height = Math.floor(options.height * options.scale);\n this.canvas.style.width = `${options.width}px`;\n this.canvas.style.height = `${options.height}px`;\n\n this.ctx.scale(this.options.scale, this.options.scale);\n this.ctx.translate(-options.x, -options.y);\n this.context.logger.debug(\n `EXPERIMENTAL ForeignObject renderer initialized (${options.width}x${options.height} at ${options.x},${options.y}) with scale ${options.scale}`\n );\n }\n\n async render(element: HTMLElement): Promise<HTMLCanvasElement> {\n const svg = createForeignObjectSVG(\n this.options.width * this.options.scale,\n this.options.height * this.options.scale,\n this.options.scale,\n this.options.scale,\n element\n );\n\n const img = await loadSerializedSVG(svg);\n\n if (this.options.backgroundColor) {\n this.ctx.fillStyle = asString(this.options.backgroundColor);\n this.ctx.fillRect(0, 0, this.options.width * this.options.scale, this.options.height * this.options.scale);\n }\n\n this.ctx.drawImage(img, -this.options.x * this.options.scale, -this.options.y * this.options.scale);\n\n return this.canvas;\n }\n}\n\nexport const loadSerializedSVG = (svg: Node): Promise<HTMLImageElement> =>\n new Promise((resolve, reject) => {\n const img = new Image();\n img.onload = () => {\n resolve(img);\n };\n img.onerror = reject;\n\n img.src = `data:image/svg+xml;charset=utf-8,${encodeURIComponent(new XMLSerializer().serializeToString(svg))}`;\n });\n","export interface LoggerOptions {\n id: string;\n enabled: boolean;\n}\n\nexport class Logger {\n static instances: { [key: string]: Logger } = {};\n\n private readonly id: string;\n private readonly enabled: boolean;\n private readonly start: number;\n\n constructor({ id, enabled }: LoggerOptions) {\n this.id = id;\n this.enabled = enabled;\n this.start = Date.now();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n debug(...args: unknown[]): void {\n if (this.enabled) {\n // eslint-disable-next-line no-console\n if (typeof window !== 'undefined' && window.console && typeof console.debug === 'function') {\n // eslint-disable-next-line no-console\n console.debug(this.id, `${this.getTime()}ms`, ...args);\n } else {\n this.info(...args);\n }\n }\n }\n\n getTime(): number {\n return Date.now() - this.start;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n info(...args: unknown[]): void {\n if (this.enabled) {\n // eslint-disable-next-line no-console\n if (typeof window !== 'undefined' && window.console && typeof console.info === 'function') {\n // eslint-disable-next-line no-console\n console.info(this.id, `${this.getTime()}ms`, ...args);\n }\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n warn(...args: unknown[]): void {\n if (this.enabled) {\n // eslint-disable-next-line no-console\n if (typeof window !== 'undefined' && window.console && typeof console.warn === 'function') {\n // eslint-disable-next-line no-console\n console.warn(this.id, `${this.getTime()}ms`, ...args);\n } else {\n this.info(...args);\n }\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n error(...args: unknown[]): void {\n if (this.enabled) {\n // eslint-disable-next-line no-console\n if (typeof window !== 'undefined' && window.console && typeof console.error === 'function') {\n // eslint-disable-next-line no-console\n console.error(this.id, `${this.getTime()}ms`, ...args);\n } else {\n this.info(...args);\n }\n }\n }\n}\n","import { Logger } from './logger';\nimport { Cache, ResourceOptions } from './cache-storage';\nimport { Bounds } from '../css/layout/bounds';\n\nexport type ContextOptions = {\n logging: boolean;\n cache?: Cache;\n} & ResourceOptions;\n\nexport class Context {\n private readonly instanceName = `#${Context.instanceCount++}`;\n readonly logger: Logger;\n readonly cache: Cache;\n\n private static instanceCount = 1;\n\n constructor(options: ContextOptions, public windowBounds: Bounds) {\n this.logger = new Logger({ id: this.instanceName, enabled: options.logging });\n this.cache = options.cache ?? new Cache(this, options);\n }\n}\n","import { Bounds, parseBounds, parseDocumentSize } from './css/layout/bounds';\nimport { COLORS, parseColor } from './css/types/color';\nimport { isTransparent } from './css/types/color-utilities';\nimport { CloneConfigurations, CloneOptions, DocumentCloner, WindowOptions } from './dom/document-cloner';\nimport { isBodyElement, isHTMLElement, parseTree } from './dom/node-parser';\nimport { CacheStorage } from './core/cache-storage';\nimport { CanvasRenderer, RenderConfigurations, RenderOptions } from './render/canvas/canvas-renderer';\nimport { ForeignObjectRenderer } from './render/canvas/foreignobject-renderer';\nimport { Context, ContextOptions } from './core/context';\n\nexport type Options = CloneOptions &\n WindowOptions &\n RenderOptions &\n ContextOptions & {\n backgroundColor: string | null;\n foreignObjectRendering: boolean;\n removeContainer?: boolean;\n };\n\nconst html2canvas = (element: HTMLElement, options: Partial<Options> = {}): Promise<HTMLCanvasElement> => {\n return renderElement(element, options);\n};\n\nexport default html2canvas;\n\nif (typeof window !== 'undefined') {\n CacheStorage.setContext(window);\n}\n\nconst renderElement = async (element: HTMLElement, opts: Partial<Options>): Promise<HTMLCanvasElement> => {\n if (!element || typeof element !== 'object') {\n return Promise.reject('Invalid element provided as first argument');\n }\n const ownerDocument = element.ownerDocument;\n\n if (!ownerDocument) {\n throw new Error(`Element is not attached to a Document`);\n }\n\n const defaultView = ownerDocument.defaultView;\n\n if (!defaultView) {\n throw new Error(`Document is not attached to a Window`);\n }\n\n const resourceOptions = {\n allowTaint: opts.allowTaint ?? false,\n imageTimeout: opts.imageTimeout ?? 15000,\n proxy: opts.proxy,\n useCORS: opts.useCORS ?? false\n };\n\n const contextOptions = {\n logging: opts.logging ?? true,\n cache: opts.cache,\n ...resourceOptions\n };\n\n const windowOptions = {\n windowWidth: opts.windowWidth ?? defaultView.innerWidth,\n windowHeight: opts.windowHeight ?? defaultView.innerHeight,\n scrollX: opts.scrollX ?? defaultView.pageXOffset,\n scrollY: opts.scrollY ?? defaultView.pageYOffset\n };\n\n const windowBounds = new Bounds(\n windowOptions.scrollX,\n windowOptions.scrollY,\n windowOptions.windowWidth,\n windowOptions.windowHeight\n );\n\n const context = new Context(contextOptions, windowBounds);\n\n const foreignObjectRendering = opts.foreignObjectRendering ?? false;\n\n const cloneOptions: CloneConfigurations = {\n allowTaint: opts.allowTaint ?? false,\n onclone: opts.onclone,\n ignoreElements: opts.ignoreElements,\n inlineImages: foreignObjectRendering,\n copyStyles: foreignObjectRendering\n };\n\n context.logger.debug(\n `Starting document clone with size ${windowBounds.width}x${\n windowBounds.height\n } scrolled to ${-windowBounds.left},${-windowBounds.top}`\n );\n\n const documentCloner = new DocumentCloner(context, element, cloneOptions);\n const clonedElement = documentCloner.clonedReferenceElement;\n if (!clonedElement) {\n return Promise.reject(`Unable to find element in cloned iframe`);\n }\n\n const container = await documentCloner.toIFrame(ownerDocument, windowBounds);\n\n const { width, height, left, top } =\n isBodyElement(clonedElement) || isHTMLElement(clonedElement)\n ? parseDocumentSize(clonedElement.ownerDocument)\n : parseBounds(context, clonedElement);\n\n const backgroundColor = parseBackgroundColor(context, clonedElement, opts.backgroundColor);\n\n const renderOptions: RenderConfigurations = {\n canvas: opts.canvas,\n backgroundColor,\n scale: opts.scale ?? defaultView.devicePixelRatio ?? 1,\n x: (opts.x ?? 0) + left,\n y: (opts.y ?? 0) + top,\n width: opts.width ?? Math.ceil(width),\n height: opts.height ?? Math.ceil(height)\n };\n\n let canvas;\n\n if (foreignObjectRendering) {\n context.logger.debug(`Document cloned, using foreign object rendering`);\n const renderer = new ForeignObjectRenderer(context, renderOptions);\n canvas = await renderer.render(clonedElement);\n } else {\n context.logger.debug(\n `Document cloned, element located at ${left},${top} with size ${width}x${height} using computed rendering`\n );\n\n context.logger.debug(`Starting DOM parsing`);\n const root = parseTree(context, clonedElement);\n\n if (backgroundColor === root.styles.backgroundColor) {\n root.styles.backgroundColor = COLORS.TRANSPARENT;\n }\n\n context.logger.debug(\n `Starting renderer for element at ${renderOptions.x},${renderOptions.y} with size ${renderOptions.width}x${renderOptions.height}`\n );\n\n const renderer = new CanvasRenderer(context, renderOptions);\n canvas = await renderer.render(root);\n }\n\n if (opts.removeContainer ?? true) {\n if (!DocumentCloner.destroy(container)) {\n context.logger.error(`Cannot detach cloned iframe as it is not in the DOM anymore`);\n }\n }\n\n context.logger.debug(`Finished rendering`);\n return canvas;\n};\n\nconst parseBackgroundColor = (context: Context, element: HTMLElement, backgroundColorOverride?: string | null) => {\n const ownerDocument = element.ownerDocument;\n // http://www.w3.org/TR/css3-background/#special-backgrounds\n const documentBackgroundColor = ownerDocument.documentElement\n ? parseColor(context, getComputedStyle(ownerDocument.documentElement).backgroundColor as string)\n : COLORS.TRANSPARENT;\n const bodyBackgroundColor = ownerDocument.body\n ? parseColor(context, getComputedStyle(ownerDocument.body).backgroundColor as string)\n : COLORS.TRANSPARENT;\n\n const defaultBackgroundColor =\n typeof backgroundColorOverride === 'string'\n ? parseColor(context, backgroundColorOverride)\n : backgroundColorOverride === null\n ? COLORS.TRANSPARENT\n : 0xffffffff;\n\n return element === ownerDocument.documentElement\n ? isTransparent(documentBackgroundColor)\n ? isTransparent(bodyBackgroundColor)\n ? defaultBackgroundColor\n : bodyBackgroundColor\n : documentBackgroundColor\n : defaultBackgroundColor;\n};\n"],"names":["toCodePoints","fromCodePoint","chars","lookup","i","decode","polyUint16Array","polyUint32Array","UTRIE2_SHIFT_2","UTRIE2_SHIFT_1","UTRIE2_INDEX_SHIFT","UTRIE2_SHIFT_1_2","UTRIE2_LSCP_INDEX_2_OFFSET","UTRIE2_DATA_BLOCK_LENGTH","UTRIE2_DATA_MASK","UTRIE2_LSCP_INDEX_2_LENGTH","UTRIE2_INDEX_2_BMP_LENGTH","UTRIE2_UTF8_2B_INDEX_2_OFFSET","UTRIE2_UTF8_2B_INDEX_2_LENGTH","UTRIE2_INDEX_1_OFFSET","UTRIE2_OMITTED_BMP_INDEX_1_LENGTH","UTRIE2_INDEX_2_BLOCK_LENGTH","UTRIE2_INDEX_2_MASK","slice16","slice32","createTrieFromBase64","Trie","base64","CR","LF","ZWJ","RI","BREAK_NOT_ALLOWED","BREAK_ALLOWED","UnicodeTrie","SPACE","color","colorType","angle","angleType","parseDisplayValue","transform","loadSerializedSVG"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"html2canvas-pro.esm.js","sources":["../node_modules/tslib/tslib.es6.js","../../src/css/layout/bounds.ts","../node_modules/src/Util.ts","../node_modules/css-line-break/node_modules/src/Util.ts","../node_modules/css-line-break/node_modules/src/Trie.ts","../node_modules/css-line-break/node_modules/utrie/node_modules/src/index.ts","../node_modules/src/linebreak-trie.ts","../node_modules/src/LineBreak.ts","../../src/css/syntax/tokenizer.ts","../../src/css/syntax/parser.ts","../../src/css/types/length.ts","../../src/css/types/length-percentage.ts","../../src/css/types/angle.ts","../../src/css/types/color-utilities.ts","../../src/css/types/color-spaces/srgb.ts","../../src/css/types/color-spaces/p3.ts","../../src/css/types/color-spaces/a98.ts","../../src/css/types/color-spaces/pro-photo.ts","../../src/css/types/color-spaces/rec2020.ts","../../src/css/types/color.ts","../../src/css/property-descriptors/background-clip.ts","../../src/css/property-descriptors/background-color.ts","../../src/css/types/functions/gradient.ts","../../src/css/types/functions/linear-gradient.ts","../../src/css/types/functions/-prefix-linear-gradient.ts","../../src/css/types/functions/-webkit-gradient.ts","../../src/css/types/functions/radial-gradient.ts","../../src/css/types/functions/-prefix-radial-gradient.ts","../../src/css/types/image.ts","../../src/css/property-descriptors/background-image.ts","../../src/css/property-descriptors/background-origin.ts","../../src/css/property-descriptors/background-position.ts","../../src/css/property-descriptors/background-repeat.ts","../../src/css/property-descriptors/background-size.ts","../../src/css/property-descriptors/border-color.ts","../../src/css/property-descriptors/border-radius.ts","../../src/css/property-descriptors/border-style.ts","../../src/css/property-descriptors/border-width.ts","../../src/css/property-descriptors/color.ts","../../src/css/property-descriptors/direction.ts","../../src/css/property-descriptors/display.ts","../../src/css/property-descriptors/float.ts","../../src/css/property-descriptors/letter-spacing.ts","../../src/css/property-descriptors/line-break.ts","../../src/css/property-descriptors/line-height.ts","../../src/css/property-descriptors/list-style-image.ts","../../src/css/property-descriptors/list-style-position.ts","../../src/css/property-descriptors/list-style-type.ts","../../src/css/property-descriptors/margin.ts","../../src/css/property-descriptors/overflow.ts","../../src/css/property-descriptors/overflow-wrap.ts","../../src/css/property-descriptors/padding.ts","../../src/css/property-descriptors/text-align.ts","../../src/css/property-descriptors/position.ts","../../src/css/property-descriptors/text-shadow.ts","../../src/css/property-descriptors/text-transform.ts","../../src/css/property-descriptors/transform.ts","../../src/css/property-descriptors/transform-origin.ts","../../src/css/property-descriptors/visibility.ts","../../src/css/property-descriptors/word-break.ts","../../src/css/property-descriptors/z-index.ts","../../src/css/types/time.ts","../../src/css/property-descriptors/opacity.ts","../../src/css/property-descriptors/text-decoration-color.ts","../../src/css/property-descriptors/text-decoration-line.ts","../../src/css/property-descriptors/font-family.ts","../../src/css/property-descriptors/font-size.ts","../../src/css/property-descriptors/font-weight.ts","../../src/css/property-descriptors/font-variant.ts","../../src/css/property-descriptors/font-style.ts","../../src/core/bitwise.ts","../../src/css/property-descriptors/content.ts","../../src/css/property-descriptors/counter-increment.ts","../../src/css/property-descriptors/counter-reset.ts","../../src/css/property-descriptors/duration.ts","../../src/css/property-descriptors/quotes.ts","../../src/css/property-descriptors/box-shadow.ts","../../src/css/property-descriptors/paint-order.ts","../../src/css/property-descriptors/webkit-text-stroke-color.ts","../../src/css/property-descriptors/webkit-text-stroke-width.ts","../../src/css/property-descriptors/object-fit.ts","../../src/css/index.ts","../../src/core/debugger.ts","../../src/dom/element-container.ts","../node_modules/src/grapheme-break-trie.ts","../node_modules/text-segmentation/node_modules/src/Util.ts","../node_modules/text-segmentation/node_modules/src/Trie.ts","../node_modules/text-segmentation/node_modules/utrie/node_modules/src/index.ts","../node_modules/src/GraphemeBreak.ts","../../src/core/features.ts","../../src/css/layout/text.ts","../../src/dom/text-container.ts","../../src/dom/replaced-elements/image-element-container.ts","../../src/dom/replaced-elements/canvas-element-container.ts","../../src/dom/replaced-elements/svg-element-container.ts","../../src/dom/elements/li-element-container.ts","../../src/dom/elements/ol-element-container.ts","../../src/dom/replaced-elements/input-element-container.ts","../../src/dom/elements/select-element-container.ts","../../src/dom/elements/textarea-element-container.ts","../../src/dom/replaced-elements/iframe-element-container.ts","../../src/dom/node-parser.ts","../../src/css/types/functions/counter.ts","../../src/dom/document-cloner.ts","../../src/core/cache-storage.ts","../../src/render/vector.ts","../../src/render/bezier-curve.ts","../../src/render/bound-curves.ts","../../src/render/effects.ts","../../src/render/path.ts","../../src/render/stacking-context.ts","../../src/render/border.ts","../../src/render/box-sizing.ts","../../src/render/background.ts","../../src/core/util.ts","../../src/render/font-metrics.ts","../../src/render/renderer.ts","../../src/render/canvas/canvas-renderer.ts","../../src/render/canvas/foreignobject-renderer.ts","../../src/core/logger.ts","../../src/core/context.ts","../../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","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","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","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 {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","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","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<number> = {\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 { Context } from '../../core/context';\nimport { CSSValue, isDimensionToken, isNumberToken, nonFunctionArgSeparator } from '../syntax/parser';\nimport { rgb2rgbLinear, rgbLinear2xyz, srgbLinear2rgb, xyz2rgbLinear } from './color-spaces/srgb';\nimport { TokenType } from '../syntax/tokenizer';\nimport { angle, deg } from './angle';\nimport { getAbsoluteValue, isLengthPercentage } from './length-percentage';\n\ntype Color = number;\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\nexport const 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\nexport const isRelativeTransform = (tokens: CSSValue[]): boolean =>\n (tokens[0].type === TokenType.IDENT_TOKEN ? tokens[0].value : 'unknown') === 'from';\n\nexport const clamp = (value: number, min: number, max: number) => {\n return Math.min(Math.max(value, min), max);\n};\n\nexport const multiplyMatrices = (A: number[], B: number[]): [number, number, number] => {\n return [\n A[0] * B[0] + A[1] * B[1] + A[2] * B[2],\n A[3] * B[0] + A[4] * B[1] + A[5] * B[2],\n A[6] * B[0] + A[7] * B[1] + A[8] * B[2]\n ];\n};\n\nexport const packSrgb = (args: number[]): number => {\n return pack(\n clamp(Math.round(args[0] * 255), 0, 255),\n clamp(Math.round(args[1] * 255), 0, 255),\n clamp(Math.round(args[2] * 255), 0, 255),\n clamp(args[3], 0, 1)\n );\n};\n\nexport const packSrgbLinear = ([r, g, b, a]: [number, number, number, number]): number => {\n const rgb = srgbLinear2rgb([r, g, b]);\n return pack(\n clamp(Math.round(rgb[0] * 255), 0, 255),\n clamp(Math.round(rgb[1] * 255), 0, 255),\n clamp(Math.round(rgb[2] * 255), 0, 255),\n a\n );\n};\n\nexport const packXYZ = (args: number[]): number => {\n const srgb_linear = xyz2rgbLinear([args[0], args[1], args[2]]);\n return packSrgbLinear([srgb_linear[0], srgb_linear[1], srgb_linear[2], args[3]]);\n};\n\nexport const packLab = (_context: Context, args: CSSValue[]): number => {\n if (isRelativeTransform(args.filter(nonFunctionArgSeparator))) {\n throw new Error('Relative color not supported for lab()');\n }\n const [l, a, b, alpha] = extractLabComponents(args),\n rgb = srgbLinear2rgb(xyz2rgbLinear(lab2xyz([l, a, b])));\n\n return pack(\n clamp(Math.round(rgb[0] * 255), 0, 255),\n clamp(Math.round(rgb[1] * 255), 0, 255),\n clamp(Math.round(rgb[2] * 255), 0, 255),\n alpha\n );\n};\n\nexport const packOkLab = (_context: Context, args: CSSValue[]): number => {\n if (isRelativeTransform(args.filter(nonFunctionArgSeparator))) {\n throw new Error('Relative color not supported for oklab()');\n }\n const [l, a, b, alpha] = extractLabComponents(args),\n rgb = srgbLinear2rgb(xyz2rgbLinear(oklab2xyz([l, a, b])));\n\n return pack(\n clamp(Math.round(rgb[0] * 255), 0, 255),\n clamp(Math.round(rgb[1] * 255), 0, 255),\n clamp(Math.round(rgb[2] * 255), 0, 255),\n alpha\n );\n};\n\nexport const packOkLch = (_context: Context, args: CSSValue[]): number => {\n if (isRelativeTransform(args.filter(nonFunctionArgSeparator))) {\n throw new Error('Relative color not supported for oklch()');\n }\n const [l, c, h, alpha] = extractOkLchComponents(args),\n rgb = srgbLinear2rgb(xyz2rgbLinear(oklab2xyz(lch2lab([l, c, h]))));\n\n return pack(\n clamp(Math.round(rgb[0] * 255), 0, 255),\n clamp(Math.round(rgb[1] * 255), 0, 255),\n clamp(Math.round(rgb[2] * 255), 0, 255),\n alpha\n );\n};\n\nexport const packLch = (_context: Context, args: CSSValue[]): number => {\n if (isRelativeTransform(args.filter(nonFunctionArgSeparator))) {\n throw new Error('Relative color not supported for lch()');\n }\n const [l, c, h, a] = extractLchComponents(args),\n rgb = srgbLinear2rgb(xyz2rgbLinear(lab2xyz(lch2lab([l, c, h]))));\n\n return pack(\n clamp(Math.round(rgb[0] * 255), 0, 255),\n clamp(Math.round(rgb[1] * 255), 0, 255),\n clamp(Math.round(rgb[2] * 255), 0, 255),\n a\n );\n};\n\nexport const extractHslComponents = (context: Context, args: CSSValue[]): [number, number, number, number] => {\n const tokens = args.filter(nonFunctionArgSeparator),\n [hue, saturation, lightness, alpha] = tokens,\n h = (hue.type === TokenType.NUMBER_TOKEN ? deg(hue.number) : angle.parse(context, hue)) / (Math.PI * 2),\n s = isLengthPercentage(saturation) ? saturation.number / 100 : 0,\n l = isLengthPercentage(lightness) ? lightness.number / 100 : 0,\n a = typeof alpha !== 'undefined' && isLengthPercentage(alpha) ? getAbsoluteValue(alpha, 1) : 1;\n return [h, s, l, a];\n};\n\nexport const packHSL = (context: Context, args: CSSValue[]): number => {\n if (isRelativeTransform(args)) {\n throw new Error('Relative color not supported for hsl()');\n }\n const [h, s, l, a] = extractHslComponents(context, args),\n rgb = hsl2rgb([h, s, l]);\n return pack(rgb[0] * 255, rgb[1] * 255, rgb[2] * 255, s === 0 ? 1 : a);\n};\n\nexport const extractLchComponents = (args: CSSValue[]): [number, number, number, number] => {\n const tokens = args.filter(nonFunctionArgSeparator),\n l = isLengthPercentage(tokens[0]) ? tokens[0].number : 0,\n c = isLengthPercentage(tokens[1]) ? tokens[1].number : 0,\n h = isNumberToken(tokens[2]) || isDimensionToken(tokens[2]) ? tokens[2].number : 0,\n a = typeof tokens[4] !== 'undefined' && isLengthPercentage(tokens[4]) ? getAbsoluteValue(tokens[4], 1) : 1;\n\n return [l, c, h, a];\n};\n\nexport const extractLabComponents = (args: CSSValue[]): [number, number, number, number] => {\n const tokens = args.filter(nonFunctionArgSeparator),\n // eslint-disable-next-line prettier/prettier\n l =\n tokens[0].type === TokenType.PERCENTAGE_TOKEN\n ? tokens[0].number / 100\n : isNumberToken(tokens[0])\n ? tokens[0].number\n : 0,\n // eslint-disable-next-line prettier/prettier\n a =\n tokens[1].type === TokenType.PERCENTAGE_TOKEN\n ? tokens[1].number / 100\n : isNumberToken(tokens[1])\n ? tokens[1].number\n : 0,\n b = isNumberToken(tokens[2]) || isDimensionToken(tokens[2]) ? tokens[2].number : 0,\n alpha = typeof tokens[4] !== 'undefined' && isLengthPercentage(tokens[4]) ? getAbsoluteValue(tokens[4], 1) : 1;\n\n return [l, a, b, alpha];\n};\n\nexport const extractOkLchComponents = (args: CSSValue[]): [number, number, number, number] => {\n const tokens = args.filter(nonFunctionArgSeparator),\n // eslint-disable-next-line prettier/prettier\n l =\n tokens[0].type === TokenType.PERCENTAGE_TOKEN\n ? tokens[0].number / 100\n : isNumberToken(tokens[0])\n ? tokens[0].number\n : 0,\n // eslint-disable-next-line prettier/prettier\n c =\n tokens[1].type === TokenType.PERCENTAGE_TOKEN\n ? tokens[1].number / 100\n : isNumberToken(tokens[1])\n ? tokens[1].number\n : 0,\n h = isNumberToken(tokens[2]) || isDimensionToken(tokens[2]) ? tokens[2].number : 0,\n a = typeof tokens[4] !== 'undefined' && isLengthPercentage(tokens[4]) ? getAbsoluteValue(tokens[4], 1) : 1;\n\n return [l, c, h, a];\n};\n\n/**\n * Convert D65 to D50\n *\n * @param xyz\n */\nexport const d65toD50 = (xyz: [number, number, number]): [number, number, number] => {\n return multiplyMatrices(\n // eslint-disable-next-line prettier/prettier\n [\n 1.0479297925449969, 0.022946870601609652, -0.05019226628920524, 0.02962780877005599, 0.9904344267538799,\n -0.017073799063418826, -0.009243040646204504, 0.015055191490298152, 0.7518742814281371\n ],\n xyz\n );\n};\n\n/**\n * Convert D50 to D65\n *\n * @param xyz\n */\nexport const d50toD65 = (xyz: [number, number, number]): [number, number, number] => {\n return multiplyMatrices(\n // eslint-disable-next-line prettier/prettier\n [\n 0.955473421488075, -0.02309845494876471, 0.06325924320057072, -0.0283697093338637, 1.0099953980813041,\n 0.021041441191917323, 0.012314014864481998, -0.020507649298898964, 1.330365926242124\n ],\n xyz\n );\n};\n\nexport const 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 hsl2rgb = ([h, s, l]: [number, number, number]): [number, number, number] => {\n if (s === 0) {\n return [l * 255, l * 255, l * 255];\n }\n const t2 = l <= 0.5 ? l * (s + 1) : l + s - l * s,\n t1 = l * 2 - t2,\n r = hue2rgb(t1, t2, h + 1 / 3),\n g = hue2rgb(t1, t2, h),\n b = hue2rgb(t1, t2, h - 1 / 3);\n\n return [r, g, b];\n};\n\n/**\n * Convert lch to OKLab\n *\n * @param l\n * @param c\n * @param h\n */\nconst lch2lab = ([l, c, h]: [number, number, number]): [number, number, number] => {\n if (c < 0) {\n c = 0;\n }\n if (isNaN(h)) {\n h = 0;\n }\n return [l, c * Math.cos((h * Math.PI) / 180), c * Math.sin((h * Math.PI) / 180)];\n};\n\n/**\n * Convert OKLab to XYZ relative to D65\n *\n * @param lab\n */\nconst oklab2xyz = (lab: [number, number, number]): [number, number, number] => {\n const LMSg = multiplyMatrices(\n // eslint-disable-next-line prettier/prettier\n [\n 1, 0.3963377773761749, 0.2158037573099136, 1, -0.1055613458156586, -0.0638541728258133, 1,\n -0.0894841775298119, -1.2914855480194092\n ],\n lab\n ),\n LMS = LMSg.map((val: number) => val ** 3);\n\n return multiplyMatrices(\n // eslint-disable-next-line prettier/prettier\n [\n 1.2268798758459243, -0.5578149944602171, 0.2813910456659647, -0.0405757452148008, 1.112286803280317,\n -0.0717110580655164, -0.0763729366746601, -0.4214933324022432, 1.5869240198367816\n ],\n LMS\n );\n};\n\n/**\n * Convert Lab to D50-adapted XYZ\n *\n * @param lab\n */\nconst lab2xyz = (lab: [number, number, number]): [number, number, number] => {\n const fy = (lab[0] + 16) / 116,\n fx = lab[1] / 500 + fy,\n fz = fy - lab[2] / 200,\n k = 24389 / 27,\n e = 24 / 116,\n xyz = [\n ((fx > e ? fx ** 3 : (116 * fx - 16) / k) * 0.3457) / 0.3585,\n lab[0] > 8 ? fy ** 3 : lab[0] / k,\n ((fz > e ? fz ** 3 : (116 * fz - 16) / k) * (1.0 - 0.3457 - 0.3585)) / 0.3585\n ];\n\n return d50toD65([xyz[0], xyz[1], xyz[2]]);\n};\n\n/**\n * Convert RGB to XYZ\n *\n * @param _context\n * @param args\n */\nexport const rgbToXyz = (_context: Context, args: CSSValue[]): [number, number, number, number] => {\n const tokens = args.filter(nonFunctionArgSeparator);\n\n if (tokens.length === 3) {\n const [r, g, b] = tokens.map(getTokenColorValue),\n rgb_linear = rgb2rgbLinear([r / 255, g / 255, b / 255]),\n [x, y, z] = rgbLinear2xyz([rgb_linear[0], rgb_linear[1], rgb_linear[2]]);\n return [x, y, z, 1];\n }\n\n if (tokens.length === 4) {\n const [r, g, b, a] = tokens.map(getTokenColorValue),\n rgb_linear = rgb2rgbLinear([r / 255, g / 255, b / 255]),\n [x, y, z] = rgbLinear2xyz([rgb_linear[0], rgb_linear[1], rgb_linear[2]]);\n return [x, y, z, a];\n }\n\n return [0, 0, 0, 1];\n};\n\n/**\n * HSL to XYZ\n *\n * @param context\n * @param args\n */\nexport const hslToXyz = (context: Context, args: CSSValue[]): [number, number, number, number] => {\n const [h, s, l, a] = extractHslComponents(context, args),\n rgb_linear = rgb2rgbLinear(hsl2rgb([h, s, l])),\n [x, y, z] = rgbLinear2xyz([rgb_linear[0], rgb_linear[1], rgb_linear[2]]);\n\n return [x, y, z, a];\n};\n\n/**\n * LAB to XYZ\n *\n * @param _context\n * @param args\n */\nexport const labToXyz = (_context: Context, args: CSSValue[]): [number, number, number, number] => {\n const [l, a, b, alpha] = extractLabComponents(args),\n [x, y, z] = lab2xyz([l, a, b]);\n return [x, y, z, alpha];\n};\n\n/**\n * LCH to XYZ\n *\n * @param _context\n * @param args\n */\nexport const lchToXyz = (_context: Context, args: CSSValue[]): [number, number, number, number] => {\n const [l, c, h, alpha] = extractLchComponents(args),\n [x, y, z] = lab2xyz(lch2lab([l, c, h]));\n return [x, y, z, alpha];\n};\n\n/**\n * OKLch to XYZ\n *\n * @param _context\n * @param args\n */\nexport const oklchToXyz = (_context: Context, args: CSSValue[]): [number, number, number, number] => {\n const [l, c, h, alpha] = extractOkLchComponents(args),\n [x, y, z] = oklab2xyz(lch2lab([l, c, h]));\n return [x, y, z, alpha];\n};\n\n/**\n * OKLab to XYZ\n *\n * @param _context\n * @param args\n */\nexport const oklabToXyz = (_context: Context, args: CSSValue[]): [number, number, number, number] => {\n const [l, c, h, alpha] = extractLabComponents(args),\n [x, y, z] = oklab2xyz([l, c, h]);\n return [x, y, z, alpha];\n};\n\n/**\n * XYZ-50 to XYZ\n *\n * @param args\n */\nexport const xyz50ToXYZ = (args: number[]): [number, number, number] => {\n return d50toD65([args[0], args[1], args[2]]);\n};\n\n/**\n * Does nothing, required for SUPPORTED_COLOR_SPACES_FROM_XYZ in the _color() function\n *\n * @param args\n */\nexport const xyzFromXYZ = (args: [number, number, number, number]): [number, number, number, number] => {\n return args;\n};\n\n/**\n * XYZ-65 to XYZ-50\n *\n * @param args\n */\nexport const xyz50FromXYZ = (args: [number, number, number, number]): [number, number, number, number] => {\n const [x, y, z] = d65toD50([args[0], args[2], args[3]]);\n return [x, y, z, args[3]];\n};\n\n/**\n * Convert XYZ to SRGB and Pack\n *\n * @param args\n */\nexport const convertXyz = (args: number[]): number => {\n return packXYZ([args[0], args[1], args[2], args[3]]);\n};\n\n/**\n * Convert XYZ-50 to SRGB and Pack\n *\n * @param args\n */\nexport const convertXyz50 = (args: number[]): number => {\n const xyz = xyz50ToXYZ([args[0], args[1], args[2]]);\n return packXYZ([xyz[0], xyz[1], xyz[2], args[3]]);\n};\n","/**\n * SRGB related functions\n */\n\nimport { clamp, multiplyMatrices } from '../color-utilities';\n\n/**\n * Convert XYZ to linear-light sRGB\n *\n * @param xyz\n */\nexport const xyz2rgbLinear = (xyz: [number, number, number]): [number, number, number] => {\n return multiplyMatrices(\n // eslint-disable-next-line prettier/prettier\n [\n 3.2409699419045226, -1.537383177570094, -0.4986107602930034, -0.9692436362808796, 1.8759675015077202,\n 0.04155505740717559, 0.05563007969699366, -0.20397695888897652, 1.0569715142428786\n ],\n xyz\n );\n};\n\n/**\n * Convert XYZ to linear-light sRGB\n *\n * @param xyz\n */\nexport const rgbLinear2xyz = (xyz: [number, number, number]): [number, number, number] => {\n return multiplyMatrices(\n // eslint-disable-next-line prettier/prettier\n [\n 0.41239079926595934, 0.357584339383878, 0.1804807884018343, 0.21263900587151027, 0.715168678767756,\n 0.07219231536073371, 0.01933081871559182, 0.11919477979462598, 0.9505321522496607\n ],\n xyz\n );\n};\n\n/**\n * Convert sRGB to RGB\n *\n * @param rgb\n */\nexport const srgbLinear2rgb = (rgb: [number, number, number]): number[] => {\n return rgb.map((c: number) => {\n const sign = c < 0 ? -1 : 1,\n abs = Math.abs(c);\n // eslint-disable-next-line prettier/prettier\n return abs > 0.0031308 ? sign * (1.055 * abs ** (1 / 2.4) - 0.055) : 12.92 * c;\n });\n};\n\n/**\n * Convert RGB to sRGB\n *\n * @param rgb\n */\nexport const rgb2rgbLinear = (rgb: [number, number, number]): number[] => {\n return rgb.map((c: number) => {\n const sign = c < 0 ? -1 : 1,\n abs = Math.abs(c);\n // eslint-disable-next-line prettier/prettier\n return abs <= 0.04045 ? c / 12.92 : sign * ((abs + 0.055) / 1.055) ** 2.4;\n });\n};\n\n/**\n * XYZ to SRGB\n *\n * @param args\n */\nexport const srgbFromXYZ = (args: [number, number, number, number]): [number, number, number, number] => {\n const [r, g, b] = srgbLinear2rgb(xyz2rgbLinear([args[0], args[1], args[2]]));\n return [r, g, b, args[3]];\n};\n\n/**\n * XYZ to SRGB-Linear\n * @param args\n */\nexport const srgbLinearFromXYZ = (args: [number, number, number, number]): [number, number, number, number] => {\n const [r, g, b] = xyz2rgbLinear([args[0], args[1], args[2]]);\n return [\n clamp(Math.round(r * 255), 0, 255),\n clamp(Math.round(g * 255), 0, 255),\n clamp(Math.round(b * 255), 0, 255),\n args[3]\n ];\n};\n","/**\n * Display-P3 related functions\n */\n\nimport { srgbLinear2rgb } from './srgb';\nimport { multiplyMatrices, packXYZ } from '../color-utilities';\n\n/**\n * Convert P3 Linear to xyz\n *\n * @param p3l\n */\nexport const p3LinearToXyz = (p3l: [number, number, number]): [number, number, number] => {\n return multiplyMatrices(\n // eslint-disable-next-line prettier/prettier\n [\n 0.4865709486482162, 0.26566769316909306, 0.1982172852343625, 0.2289745640697488, 0.6917385218365064,\n 0.079286914093745, 0.0, 0.04511338185890264, 1.043944368900976\n ],\n p3l\n );\n};\n/**\n * Convert XYZ to P3 Linear\n *\n * @param xyz\n */\nexport const xyzToP3Linear = (xyz: [number, number, number]): [number, number, number] => {\n return multiplyMatrices(\n // eslint-disable-next-line prettier/prettier\n [\n 2.493496911941425, -0.9313836179191239, -0.40271078445071684, -0.8294889695615747, 1.7626640603183463,\n 0.023624685841943577, 0.03584583024378447, -0.07617238926804182, 0.9568845240076872\n ],\n xyz\n );\n};\n\n/**\n * Convert P3 to P3 linear\n *\n * @param p3\n */\nexport const p32p3Linear = (p3: [number, number, number]): number[] => {\n return p3.map((c: number) => {\n const sign = c < 0 ? -1 : 1,\n abs = c * sign;\n\n if (abs <= 0.04045) {\n return c / 12.92;\n }\n\n // eslint-disable-next-line prettier/prettier\n return sign * ((c + 0.055) / 1.055) ** 2.4 || 0;\n });\n};\n\n/**\n * Convert P3 Linear to P3\n *\n * @param p3l\n */\nexport const p3Linear2p3 = (p3l: [number, number, number]): number[] => {\n return srgbLinear2rgb(p3l);\n};\n\n/**\n * Convert P3 to XYZ\n *\n * @param args\n */\nexport const p3ToXYZ = (args: number[]): number[] => {\n const p3_linear = p32p3Linear([args[0], args[1], args[2]]);\n return p3LinearToXyz([p3_linear[0], p3_linear[1], p3_linear[2]]);\n};\n\n/**\n * Convert XYZ to P3\n *\n * @param args\n */\nexport const p3FromXYZ = (args: [number, number, number, number]): [number, number, number, number] => {\n const [r, g, b] = p3Linear2p3(xyzToP3Linear([args[0], args[1], args[2]]));\n return [r, g, b, args[3]];\n};\n\n/**\n * Convert P3 to SRGB and Pack\n *\n * @param args\n */\nexport const convertP3 = (args: number[]): number => {\n const xyz = p3ToXYZ([args[0], args[1], args[2]]);\n return packXYZ([xyz[0], xyz[1], xyz[2], args[3]]);\n};\n","/**\n * A98-RGB related functions\n */\n\nimport { multiplyMatrices, packSrgbLinear } from '../color-utilities';\nimport { xyz2rgbLinear } from './srgb';\n\n/**\n * Convert XYZ to a98 linear\n *\n * @param xyz\n */\nexport const xyz2a98Linear = (xyz: [number, number, number]): [number, number, number] => {\n return multiplyMatrices(\n // eslint-disable-next-line prettier/prettier\n [\n 2.0415879038107465, -0.5650069742788596, -0.34473135077832956, -0.9692436362808795, 1.8759675015077202,\n 0.04155505740717557, 0.013444280632031142, -0.11836239223101838, 1.0151749943912054\n ],\n xyz\n );\n};\n\n/**\n * Convert XYZ to a98 linear\n *\n * @param a98\n */\nexport const a98Linear2xyz = (a98: [number, number, number]): [number, number, number] => {\n return multiplyMatrices(\n // eslint-disable-next-line prettier/prettier\n [\n 0.5766690429101305, 0.1855582379065463, 0.1882286462349947, 0.29734497525053605, 0.6273635662554661,\n 0.0752914584939978, 0.02703136138641234, 0.07068885253582723, 0.9913375368376388\n ],\n a98\n );\n};\n\n/**\n * Convert A98 RGB to rgb linear\n *\n * @param rgb\n */\nexport const a982a98Linear = (rgb: [number, number, number]): [number, number, number] => {\n const mapped = rgb.map((c: number) => {\n const sign = c < 0 ? -1 : 1,\n abs = Math.abs(c);\n return sign * abs ** (563 / 256);\n });\n\n return [mapped[0], mapped[1], mapped[2]];\n};\n\n/**\n * Convert A98 RGB Linear to A98\n *\n * @param rgb\n */\nexport const a98Linear2a98 = (rgb: [number, number, number]): [number, number, number] => {\n const mapped = rgb.map((c: number) => {\n const sign = c < 0 ? -1 : 1,\n abs = Math.abs(c);\n return sign * abs ** (256 / 563);\n });\n\n return [mapped[0], mapped[1], mapped[2]];\n};\n\n/**\n * Convert XYZ to A98\n *\n * @param args\n */\nexport const a98FromXYZ = (args: [number, number, number, number]): [number, number, number, number] => {\n const [r, g, b] = a98Linear2a98(xyz2a98Linear([args[0], args[1], args[2]]));\n return [r, g, b, args[3]];\n};\n\n/**\n * Convert A98 to XYZ and Pack\n *\n * @param args\n */\nexport const convertA98rgb = (args: number[]): number => {\n const srgb_linear = xyz2rgbLinear(a98Linear2xyz(a982a98Linear([args[0], args[1], args[2]])));\n return packSrgbLinear([srgb_linear[0], srgb_linear[1], srgb_linear[2], args[3]]);\n};\n","/**\n * Pro Photo related functions\n */\n\nimport { d50toD65, d65toD50, multiplyMatrices, packXYZ } from '../color-utilities';\n\n/**\n * Convert linear-light display-p3 to XYZ D65\n *\n * @param p3\n */\nexport const proPhotoLinearToXyz = (p3: [number, number, number]): [number, number, number] => {\n return multiplyMatrices(\n // eslint-disable-next-line prettier/prettier\n [\n 0.7977666449006423, 0.13518129740053308, 0.0313477341283922, 0.2880748288194013, 0.711835234241873,\n 0.00008993693872564, 0.0, 0.0, 0.8251046025104602\n ],\n p3\n );\n};\n\n/**\n * Convert XYZ D65 to linear-light display-p3\n *\n * @param xyz\n */\nexport const xyzToProPhotoLinear = (xyz: [number, number, number]): [number, number, number] => {\n return multiplyMatrices(\n // eslint-disable-next-line prettier/prettier\n [\n 1.3457868816471583, -0.25557208737979464, -0.05110186497554526, -0.5446307051249019, 1.5082477428451468,\n 0.02052744743642139, 0.0, 0.0, 1.2119675456389452\n ],\n xyz\n );\n};\n\n/**\n * Convert Pro-Photo to Pro-Photo Linear\n *\n * @param p3\n */\nexport const proPhotoToProPhotoLinear = (p3: [number, number, number]): number[] => {\n return p3.map((c: number) => {\n return c < 16 / 512 ? c / 16 : c ** 1.8;\n });\n};\n\n/**\n * Convert Pro-Photo Linear to Pro-Photo\n *\n * @param p3\n */\nexport const proPhotoLinearToProPhoto = (p3: [number, number, number]): number[] => {\n return p3.map((c: number) => {\n return c > 1 / 512 ? c ** (1 / 1.8) : c * 16;\n });\n};\n\n/**\n * Convert Pro-Photo to XYZ\n *\n * @param args\n */\nexport const proPhotoToXYZ = (args: number[]): [number, number, number] => {\n const prophoto_linear = proPhotoToProPhotoLinear([args[0], args[1], args[2]]);\n return d50toD65(proPhotoLinearToXyz([prophoto_linear[0], prophoto_linear[1], prophoto_linear[2]]));\n};\n\n/**\n * Convert XYZ to Pro-Photo\n *\n * @param args\n */\nexport const proPhotoFromXYZ = (args: [number, number, number, number]): [number, number, number, number] => {\n const [r, g, b] = proPhotoLinearToProPhoto(xyzToProPhotoLinear(d65toD50([args[0], args[1], args[2]])));\n return [r, g, b, args[3]];\n};\n\n/**\n * Convert Pro-Photo to XYZ and Pack\n *\n * @param args\n */\nexport const convertProPhoto = (args: number[]): number => {\n const xyz = proPhotoToXYZ([args[0], args[1], args[2]]);\n return packXYZ([xyz[0], xyz[1], xyz[2], args[3]]);\n};\n","/**\n * REC2020 related functions\n */\n\nimport { multiplyMatrices, packXYZ } from '../color-utilities';\n\nconst _a = 1.09929682680944;\nconst _b = 0.018053968510807;\n\n/**\n * Convert rec2020 to rec2020 linear\n *\n * @param rgb\n */\nexport const rec20202rec2020Linear = (rgb: [number, number, number]): number[] => {\n return rgb.map(function (c) {\n return c < _b * 4.5 ? c / 4.5 : Math.pow((c + _a - 1) / _a, 1 / 0.45);\n });\n};\n\n/**\n * Convert rec2020 linear to rec2020\n *\n * @param rgb\n */\nexport const rec2020Linear2rec2020 = (rgb: [number, number, number]): number[] => {\n return rgb.map(function (c) {\n return c >= _b ? _a * Math.pow(c, 0.45) - (_a - 1) : 4.5 * c;\n });\n};\n\n/**\n * Convert rec2020 linear to XYZ D65\n *\n * @param rec\n */\nexport const rec2020LinearToXyz = (rec: [number, number, number]): [number, number, number] => {\n return multiplyMatrices(\n // eslint-disable-next-line prettier/prettier\n [\n 0.6369580483012914, 0.14461690358620832, 0.1688809751641721, 0.2627002120112671, 0.6779980715188708,\n 0.05930171646986196, 0.0, 0.028072693049087428, 1.060985057710791\n ],\n rec\n );\n};\n\n/**\n * Convert XYZ D65 to rec2020 linear\n *\n * @param xyz\n */\nexport const xyzToRec2020Linear = (xyz: [number, number, number]): [number, number, number] => {\n return multiplyMatrices(\n // eslint-disable-next-line prettier/prettier\n [\n 1.716651187971268, -0.355670783776392, -0.25336628137366, -0.666684351832489, 1.616481236634939,\n 0.0157685458139111, 0.017639857445311, -0.042770613257809, 0.942103121235474\n ],\n xyz\n );\n};\n\n/**\n * Convert Rec2020 to XYZ\n *\n * @param args\n */\nexport const rec2020ToXYZ = (args: number[]): [number, number, number] => {\n const rec2020_linear = rec20202rec2020Linear([args[0], args[1], args[2]]);\n return rec2020LinearToXyz([rec2020_linear[0], rec2020_linear[1], rec2020_linear[2]]);\n};\n\n/**\n * Convert XYZ to Rec2020\n *\n * @param args\n */\nexport const rec2020FromXYZ = (args: [number, number, number, number]): [number, number, number, number] => {\n const [r, g, b] = rec2020Linear2rec2020(xyzToRec2020Linear([args[0], args[1], args[2]]));\n return [r, g, b, args[3]];\n};\n\n/**\n * Convert Rec2020 to SRGB and Pack\n *\n * @param args\n */\nexport const convertRec2020 = (args: number[]): number => {\n const xyz = rec2020ToXYZ([args[0], args[1], args[2]]);\n return packXYZ([xyz[0], xyz[1], xyz[2], args[3]]);\n};\n","import { CSSValue, isIdentToken, isNumberToken, nonFunctionArgSeparator, Parser } from '../syntax/parser';\nimport { HashToken, TokenType } from '../syntax/tokenizer';\nimport { ITypeDescriptor } from '../ITypeDescriptor';\nimport { Context } from '../../core/context';\nimport { srgbFromXYZ, srgbLinearFromXYZ } from './color-spaces/srgb';\nimport {\n packSrgbLinear,\n packSrgb,\n packHSL,\n packLch,\n packOkLch,\n packOkLab,\n packLab,\n isRelativeTransform,\n pack,\n getTokenColorValue,\n convertXyz,\n convertXyz50,\n rgbToXyz,\n hslToXyz,\n labToXyz,\n lchToXyz,\n oklabToXyz,\n oklchToXyz,\n xyzFromXYZ,\n xyz50FromXYZ\n} from './color-utilities';\nimport { convertP3, p3FromXYZ } from './color-spaces/p3';\nimport { a98FromXYZ, convertA98rgb } from './color-spaces/a98';\nimport { convertProPhoto, proPhotoFromXYZ } from './color-spaces/pro-photo';\nimport { convertRec2020, rec2020FromXYZ } from './color-spaces/rec2020';\n\nexport type Color = number;\n\nexport const color: ITypeDescriptor<Color> = {\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 const [r, g, b, a] = hash2rgb(value);\n return pack(r, g, b, a);\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\nconst hash2rgb = (token: HashToken): [number, number, number, number] => {\n if (token.value.length === 3) {\n const r = token.value.substring(0, 1);\n const g = token.value.substring(1, 2);\n const b = token.value.substring(2, 3);\n return [parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), 1];\n }\n\n if (token.value.length === 4) {\n const r = token.value.substring(0, 1);\n const g = token.value.substring(1, 2);\n const b = token.value.substring(2, 3);\n const a = token.value.substring(3, 4);\n return [parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), parseInt(a + a, 16) / 255];\n }\n\n if (token.value.length === 6) {\n const r = token.value.substring(0, 2);\n const g = token.value.substring(2, 4);\n const b = token.value.substring(4, 6);\n return [parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), 1];\n }\n\n if (token.value.length === 8) {\n const r = token.value.substring(0, 2);\n const g = token.value.substring(2, 4);\n const b = token.value.substring(4, 6);\n const a = token.value.substring(6, 8);\n return [parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), parseInt(a, 16) / 255];\n }\n\n return [0, 0, 0, 1];\n};\n\nconst rgb = (_context: Context, args: CSSValue[]): number => {\n const tokens = args.filter(nonFunctionArgSeparator);\n\n if (isRelativeTransform(tokens)) {\n throw new Error('Relative color not supported for rgb()');\n }\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\n/**\n * Handle the CSS color() function\n *\n * @param context\n * @param args\n */\nconst _color = (context: Context, args: CSSValue[]) => {\n const tokens = args.filter(nonFunctionArgSeparator),\n token_1_value = tokens[0].type === TokenType.IDENT_TOKEN ? tokens[0].value : 'unknown',\n is_absolute = !isRelativeTransform(tokens);\n\n if (is_absolute) {\n const color_space = token_1_value,\n colorSpaceFunction = SUPPORTED_COLOR_SPACES_ABSOLUTE[color_space];\n if (typeof colorSpaceFunction === 'undefined') {\n throw new Error(`Attempting to parse an unsupported color space \"${color_space}\" for color() function`);\n }\n const c1 = isNumberToken(tokens[1]) ? tokens[1].number : 0,\n c2 = isNumberToken(tokens[2]) ? tokens[2].number : 0,\n c3 = isNumberToken(tokens[3]) ? tokens[3].number : 0,\n a =\n tokens.length > 4 &&\n tokens[4].type === TokenType.DELIM_TOKEN &&\n tokens[4].value === '/' &&\n isNumberToken(tokens[5])\n ? tokens[5].number\n : 1;\n\n return colorSpaceFunction([c1, c2, c3, a]);\n } else {\n const extractComponent = (color: [number, number, number, number], token: CSSValue) => {\n if (isNumberToken(token)) {\n return token.number;\n }\n\n const posFromVal = (value: string): number => {\n return value === 'r' || value === 'x' ? 0 : value === 'g' || value === 'y' ? 1 : 2;\n };\n\n if (isIdentToken(token)) {\n const position = posFromVal(token.value);\n return color[position];\n }\n\n const parseCalc = (args: CSSValue[]): string => {\n const parts = args.filter(nonFunctionArgSeparator);\n let expression = '(';\n for (const part of parts) {\n expression +=\n part.type === TokenType.FUNCTION && part.name === 'calc'\n ? parseCalc(part.values)\n : isNumberToken(part)\n ? part.number\n : part.type === TokenType.DELIM_TOKEN || isIdentToken(part)\n ? part.value\n : '';\n }\n expression += ')';\n return expression;\n };\n\n if (token.type === TokenType.FUNCTION) {\n const args = token.values.filter(nonFunctionArgSeparator);\n if (token.name === 'calc') {\n const expression = parseCalc(args)\n .replace(/r|x/, color[0].toString())\n .replace(/g|y/, color[1].toString())\n .replace(/b|z/, color[2].toString());\n\n return new Function('return ' + expression)();\n }\n }\n\n return null;\n };\n\n const from_colorspace =\n tokens[1].type === TokenType.FUNCTION\n ? tokens[1].name\n : isIdentToken(tokens[1]) || tokens[1].type === TokenType.HASH_TOKEN\n ? 'rgb'\n : 'unknown',\n to_colorspace = isIdentToken(tokens[2]) ? tokens[2].value : 'unknown';\n\n let from =\n tokens[1].type === TokenType.FUNCTION ? tokens[1].values : isIdentToken(tokens[1]) ? [tokens[1]] : [];\n\n if (isIdentToken(tokens[1])) {\n const named_color = COLORS[tokens[1].value.toUpperCase()];\n if (typeof named_color === 'undefined') {\n throw new Error(`Attempting to use unknown color in relative color 'from'`);\n } else {\n const _c = parseColor(context, tokens[1].value),\n alpha = 0xff & _c,\n blue = 0xff & (_c >> 8),\n green = 0xff & (_c >> 16),\n red = 0xff & (_c >> 24);\n from = [\n { type: TokenType.NUMBER_TOKEN, number: red, flags: 1 },\n { type: TokenType.NUMBER_TOKEN, number: green, flags: 1 },\n { type: TokenType.NUMBER_TOKEN, number: blue, flags: 1 },\n { type: TokenType.NUMBER_TOKEN, number: alpha > 1 ? alpha / 255 : alpha, flags: 1 }\n ];\n }\n } else if (tokens[1].type === TokenType.HASH_TOKEN) {\n const [red, green, blue, alpha] = hash2rgb(tokens[1]);\n from = [\n { type: TokenType.NUMBER_TOKEN, number: red, flags: 1 },\n { type: TokenType.NUMBER_TOKEN, number: green, flags: 1 },\n { type: TokenType.NUMBER_TOKEN, number: blue, flags: 1 },\n { type: TokenType.NUMBER_TOKEN, number: alpha > 1 ? alpha / 255 : alpha, flags: 1 }\n ];\n }\n\n if (from.length === 0) {\n throw new Error(`Attempting to use unknown color in relative color 'from'`);\n }\n\n if (to_colorspace === 'unknown') {\n throw new Error(`Attempting to use unknown colorspace in relative color 'to'`);\n }\n\n const fromColorToXyz = SUPPORTED_COLOR_SPACES_TO_XYZ[from_colorspace],\n toColorFromXyz = SUPPORTED_COLOR_SPACES_FROM_XYZ[to_colorspace],\n toColorPack = SUPPORTED_COLOR_SPACES_ABSOLUTE[to_colorspace];\n\n if (typeof fromColorToXyz === 'undefined') {\n throw new Error(`Attempting to parse an unsupported color space \"${from_colorspace}\" for color() function`);\n }\n if (typeof toColorFromXyz === 'undefined') {\n throw new Error(`Attempting to parse an unsupported color space \"${to_colorspace}\" for color() function`);\n }\n\n const from_color: [number, number, number, number] = fromColorToXyz(context, from),\n from_final_colorspace: [number, number, number, number] = toColorFromXyz(from_color),\n c1 = extractComponent(from_final_colorspace, tokens[3]),\n c2 = extractComponent(from_final_colorspace, tokens[4]),\n c3 = extractComponent(from_final_colorspace, tokens[5]),\n a =\n tokens.length > 6 &&\n tokens[6].type === TokenType.DELIM_TOKEN &&\n tokens[6].value === '/' &&\n isNumberToken(tokens[7])\n ? tokens[7].number\n : 1;\n if (c1 === null || c2 === null || c3 === null) {\n throw new Error(`Invalid relative color in color() function`);\n }\n\n return toColorPack([c1, c2, c3, a]);\n }\n};\n\nconst SUPPORTED_COLOR_SPACES_ABSOLUTE: {\n [key: string]: (args: number[]) => number;\n} = {\n srgb: packSrgb,\n 'srgb-linear': packSrgbLinear,\n 'display-p3': convertP3,\n 'a98-rgb': convertA98rgb,\n 'prophoto-rgb': convertProPhoto,\n xyz: convertXyz,\n 'xyz-d50': convertXyz50,\n 'xyz-d65': convertXyz,\n rec2020: convertRec2020\n};\n\nconst SUPPORTED_COLOR_SPACES_TO_XYZ: {\n [key: string]: (context: Context, args: CSSValue[]) => [number, number, number, number];\n} = {\n rgb: rgbToXyz,\n hsl: hslToXyz,\n lab: labToXyz,\n lch: lchToXyz,\n oklab: oklabToXyz,\n oklch: oklchToXyz\n};\n\nconst SUPPORTED_COLOR_SPACES_FROM_XYZ: {\n [key: string]: (args: [number, number, number, number]) => [number, number, number, number];\n} = {\n srgb: srgbFromXYZ,\n 'srgb-linear': srgbLinearFromXYZ,\n 'display-p3': p3FromXYZ,\n 'a98-rgb': a98FromXYZ,\n 'prophoto-rgb': proPhotoFromXYZ,\n xyz: xyzFromXYZ,\n 'xyz-d50': xyz50FromXYZ,\n 'xyz-d65': xyzFromXYZ,\n rec2020: rec2020FromXYZ\n};\n\nconst SUPPORTED_COLOR_FUNCTIONS: {\n [key: string]: (context: Context, args: CSSValue[]) => number;\n} = {\n hsl: packHSL,\n hsla: packHSL,\n rgb: rgb,\n rgba: rgb,\n lch: packLch,\n oklch: packOkLch,\n oklab: packOkLab,\n lab: packLab,\n color: _color\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<BackgroundClip> = {\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 { 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, 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, 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 { 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 {\n FIFTY_PERCENT,\n HUNDRED_PERCENT,\n isLengthPercentage,\n LengthPercentage,\n ZERO_LENGTH\n} 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 {\n FIFTY_PERCENT,\n HUNDRED_PERCENT,\n isLengthPercentage,\n LengthPercentage,\n ZERO_LENGTH\n} 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<ICSSImage> = {\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<string, (context: Context, args: CSSValue[]) => 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 { 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<ICSSImage[]> = {\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<BackgroundOrigin> = {\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<BackgroundPosition> = {\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<BackgroundRepeat> = {\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 { 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<BackgroundSize> = {\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 { 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<BorderRadius> => ({\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<BorderRadius> = borderRadiusForSide('top-left');\nexport const borderTopRightRadius: IPropertyListDescriptor<BorderRadius> = borderRadiusForSide('top-right');\nexport const borderBottomRightRadius: IPropertyListDescriptor<BorderRadius> = borderRadiusForSide('bottom-right');\nexport const borderBottomLeftRadius: IPropertyListDescriptor<BorderRadius> = 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<BORDER_STYLE> => ({\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<BORDER_STYLE> = borderStyleForSide('top');\nexport const borderRightStyle: IPropertyIdentValueDescriptor<BORDER_STYLE> = borderStyleForSide('right');\nexport const borderBottomStyle: IPropertyIdentValueDescriptor<BORDER_STYLE> = borderStyleForSide('bottom');\nexport const borderLeftStyle: IPropertyIdentValueDescriptor<BORDER_STYLE> = borderStyleForSide('left');\n","import { IPropertyValueDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { CSSValue, isDimensionToken } from '../syntax/parser';\nimport { Context } from '../../core/context';\nconst borderWidthForSide = (side: string): IPropertyValueDescriptor<number> => ({\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<number> = borderWidthForSide('top');\nexport const borderRightWidth: IPropertyValueDescriptor<number> = borderWidthForSide('right');\nexport const borderBottomWidth: IPropertyValueDescriptor<number> = borderWidthForSide('bottom');\nexport const borderLeftWidth: IPropertyValueDescriptor<number> = 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<DIRECTION> = {\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<Display> = {\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<FLOAT> = {\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<number> = {\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 LINE_BREAK {\n NORMAL = 'normal',\n STRICT = 'strict'\n}\n\nexport const lineBreak: IPropertyIdentValueDescriptor<LINE_BREAK> = {\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 { 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<ICSSImage | null> = {\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<LIST_STYLE_POSITION> = {\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<LIST_STYLE_TYPE> = {\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<OVERFLOW[]> = {\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<OVERFLOW_WRAP> = {\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<TEXT_ALIGN> = {\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<POSITION> = {\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<TextShadow> = {\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<TEXT_TRANSFORM> = {\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<Transform> = {\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<TransformOrigin> = {\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<VISIBILITY> = {\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","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<WORD_BREAK> = {\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 { 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<zIndex> = {\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<number> = {\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<number> = {\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<TextDecorationLine> = {\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<FontFamily> = {\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<number> = {\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<string[]> = {\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<FONT_STYLE> = {\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<Content> = {\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<CounterIncrement> = {\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<CounterReset> = {\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<number[]> = {\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<Quotes> = {\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<BoxShadow> = {\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<PaintOrder> = {\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<number> = {\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 { IPropertyListDescriptor, PropertyDescriptorParsingType } from '../IPropertyDescriptor';\nimport { CSSValue, isIdentToken } from '../syntax/parser';\nimport { Context } from '../../core/context';\nexport const enum OBJECT_FIT {\n FILL = 0,\n CONTAIN = 1 << 1,\n COVER = 1 << 2,\n NONE = 1 << 3,\n SCALE_DOWN = 1 << 4\n}\n\nexport type ObjectFit = number;\n\nexport const objectFit: IPropertyListDescriptor<ObjectFit> = {\n name: 'objectFit',\n initialValue: 'fill',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): ObjectFit => {\n return tokens.filter(isIdentToken).reduce((bit, token) => {\n return bit | parseDisplayValue(token.value);\n }, OBJECT_FIT.FILL);\n }\n};\n\nconst parseDisplayValue = (display: string): ObjectFit => {\n switch (display) {\n case 'contain':\n return OBJECT_FIT.CONTAIN;\n case 'cover':\n return OBJECT_FIT.COVER;\n case 'none':\n return OBJECT_FIT.NONE;\n case 'scale-down':\n return OBJECT_FIT.SCALE_DOWN;\n }\n\n return OBJECT_FIT.FILL;\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 } from './types/color';\nimport { isTransparent } from './types/color-utilities';\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';\nimport { objectFit } from './property-descriptors/object-fit';\n\nexport class CSSParsedDeclaration {\n animationDuration: ReturnType<typeof duration.parse>;\n backgroundClip: ReturnType<typeof backgroundClip.parse>;\n backgroundColor: Color;\n backgroundImage: ReturnType<typeof backgroundImage.parse>;\n backgroundOrigin: ReturnType<typeof backgroundOrigin.parse>;\n backgroundPosition: ReturnType<typeof backgroundPosition.parse>;\n backgroundRepeat: ReturnType<typeof backgroundRepeat.parse>;\n backgroundSize: ReturnType<typeof backgroundSize.parse>;\n borderTopColor: Color;\n borderRightColor: Color;\n borderBottomColor: Color;\n borderLeftColor: Color;\n borderTopLeftRadius: ReturnType<typeof borderTopLeftRadius.parse>;\n borderTopRightRadius: ReturnType<typeof borderTopRightRadius.parse>;\n borderBottomRightRadius: ReturnType<typeof borderBottomRightRadius.parse>;\n borderBottomLeftRadius: ReturnType<typeof borderBottomLeftRadius.parse>;\n borderTopStyle: ReturnType<typeof borderTopStyle.parse>;\n borderRightStyle: ReturnType<typeof borderRightStyle.parse>;\n borderBottomStyle: ReturnType<typeof borderBottomStyle.parse>;\n borderLeftStyle: ReturnType<typeof borderLeftStyle.parse>;\n borderTopWidth: ReturnType<typeof borderTopWidth.parse>;\n borderRightWidth: ReturnType<typeof borderRightWidth.parse>;\n borderBottomWidth: ReturnType<typeof borderBottomWidth.parse>;\n borderLeftWidth: ReturnType<typeof borderLeftWidth.parse>;\n boxShadow: ReturnType<typeof boxShadow.parse>;\n color: Color;\n direction: ReturnType<typeof direction.parse>;\n display: ReturnType<typeof display.parse>;\n float: ReturnType<typeof float.parse>;\n fontFamily: ReturnType<typeof fontFamily.parse>;\n fontSize: LengthPercentage;\n fontStyle: ReturnType<typeof fontStyle.parse>;\n fontVariant: ReturnType<typeof fontVariant.parse>;\n fontWeight: ReturnType<typeof fontWeight.parse>;\n letterSpacing: ReturnType<typeof letterSpacing.parse>;\n lineBreak: ReturnType<typeof lineBreak.parse>;\n lineHeight: CSSValue;\n listStyleImage: ReturnType<typeof listStyleImage.parse>;\n listStylePosition: ReturnType<typeof listStylePosition.parse>;\n listStyleType: ReturnType<typeof listStyleType.parse>;\n marginTop: CSSValue;\n marginRight: CSSValue;\n marginBottom: CSSValue;\n marginLeft: CSSValue;\n opacity: ReturnType<typeof opacity.parse>;\n overflowX: OVERFLOW;\n overflowY: OVERFLOW;\n overflowWrap: ReturnType<typeof overflowWrap.parse>;\n paddingTop: LengthPercentage;\n paddingRight: LengthPercentage;\n paddingBottom: LengthPercentage;\n paddingLeft: LengthPercentage;\n paintOrder: ReturnType<typeof paintOrder.parse>;\n position: ReturnType<typeof position.parse>;\n textAlign: ReturnType<typeof textAlign.parse>;\n textDecorationColor: Color;\n textDecorationLine: ReturnType<typeof textDecorationLine.parse>;\n textShadow: ReturnType<typeof textShadow.parse>;\n textTransform: ReturnType<typeof textTransform.parse>;\n transform: ReturnType<typeof transform.parse>;\n transformOrigin: ReturnType<typeof transformOrigin.parse>;\n visibility: ReturnType<typeof visibility.parse>;\n webkitTextStrokeColor: Color;\n webkitTextStrokeWidth: ReturnType<typeof webkitTextStrokeWidth.parse>;\n wordBreak: ReturnType<typeof wordBreak.parse>;\n zIndex: ReturnType<typeof zIndex.parse>;\n objectFit: ReturnType<typeof objectFit.parse>;\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 this.objectFit = parse(context, objectFit, declaration.objectFit);\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<typeof content.parse>;\n quotes: ReturnType<typeof quotes.parse>;\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<typeof counterIncrement.parse>;\n counterReset: ReturnType<typeof counterReset.parse>;\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<any>, 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<DebuggerType, DebuggerType.NONE>): 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 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 {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","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 {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 { fromCodePoint, toCodePoints } from 'css-line-break';\n\nconst testRangeBounds = (document: Document) => {\n const TEST_HEIGHT = 123;\n\n if (document.createRange) {\n const range = document.createRange();\n if (range.getBoundingClientRect) {\n const testElement = document.createElement('boundtest');\n testElement.style.height = `${TEST_HEIGHT}px`;\n testElement.style.display = 'block';\n document.body.appendChild(testElement);\n\n range.selectNode(testElement);\n const rangeBounds = range.getBoundingClientRect();\n const rangeHeight = Math.round(rangeBounds.height);\n document.body.removeChild(testElement);\n if (rangeHeight === TEST_HEIGHT) {\n return true;\n }\n }\n }\n\n return false;\n};\n\nconst testIOSLineBreak = (document: Document) => {\n const testElement = document.createElement('boundtest');\n testElement.style.width = '50px';\n testElement.style.display = 'block';\n testElement.style.fontSize = '12px';\n testElement.style.letterSpacing = '0px';\n testElement.style.wordSpacing = '0px';\n document.body.appendChild(testElement);\n const range = document.createRange();\n\n testElement.innerHTML = typeof ''.repeat === 'function' ? '👨'.repeat(10) : '';\n\n const node = testElement.firstChild as Text;\n\n const textList = toCodePoints(node.data).map((i) => fromCodePoint(i));\n let offset = 0;\n let prev: DOMRect = {} as DOMRect;\n\n // ios 13 does not handle range getBoundingClientRect line changes correctly #2177\n const supports = textList.every((text, i) => {\n range.setStart(node, offset);\n range.setEnd(node, offset + text.length);\n const rect = range.getBoundingClientRect();\n\n offset += text.length;\n const boundAhead = rect.x > prev.x || rect.y > prev.y;\n\n prev = rect;\n if (i === 0) {\n return true;\n }\n\n return boundAhead;\n });\n\n document.body.removeChild(testElement);\n return supports;\n};\n\nconst testCORS = (): boolean => typeof new Image().crossOrigin !== 'undefined';\n\nconst testResponseType = (): boolean => typeof new XMLHttpRequest().responseType === 'string';\n\nconst testSVG = (document: Document): boolean => {\n const img = new Image();\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n if (!ctx) {\n return false;\n }\n\n img.src = `data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'></svg>`;\n\n try {\n ctx.drawImage(img, 0, 0);\n canvas.toDataURL();\n } catch (e) {\n return false;\n }\n return true;\n};\n\nconst isGreenPixel = (data: Uint8ClampedArray): boolean =>\n data[0] === 0 && data[1] === 255 && data[2] === 0 && data[3] === 255;\n\nconst testForeignObject = (document: Document): Promise<boolean> => {\n const canvas = document.createElement('canvas');\n const size = 100;\n canvas.width = size;\n canvas.height = size;\n const ctx = canvas.getContext('2d');\n if (!ctx) {\n return Promise.reject(false);\n }\n ctx.fillStyle = 'rgb(0, 255, 0)';\n ctx.fillRect(0, 0, size, size);\n\n const img = new Image();\n const greenImageSrc = canvas.toDataURL();\n img.src = greenImageSrc;\n const svg = createForeignObjectSVG(size, size, 0, 0, img);\n ctx.fillStyle = 'red';\n ctx.fillRect(0, 0, size, size);\n\n return loadSerializedSVG(svg)\n .then((img: HTMLImageElement) => {\n ctx.drawImage(img, 0, 0);\n const data = ctx.getImageData(0, 0, size, size).data;\n ctx.fillStyle = 'red';\n ctx.fillRect(0, 0, size, size);\n\n const node = document.createElement('div');\n node.style.backgroundImage = `url(${greenImageSrc})`;\n node.style.height = `${size}px`;\n // Firefox 55 does not render inline <img /> tags\n return isGreenPixel(data)\n ? loadSerializedSVG(createForeignObjectSVG(size, size, 0, 0, node))\n : Promise.reject(false);\n })\n .then((img: HTMLImageElement) => {\n ctx.drawImage(img, 0, 0);\n // Edge does not render background-images\n return isGreenPixel(ctx.getImageData(0, 0, size, size).data);\n })\n .catch(() => false);\n};\n\nexport const createForeignObjectSVG = (\n width: number,\n height: number,\n x: number,\n y: number,\n node: Node\n): SVGForeignObjectElement => {\n const xmlns = 'http://www.w3.org/2000/svg';\n const svg = document.createElementNS(xmlns, 'svg');\n const foreignObject = document.createElementNS(xmlns, 'foreignObject');\n svg.setAttributeNS(null, 'width', width.toString());\n svg.setAttributeNS(null, 'height', height.toString());\n\n foreignObject.setAttributeNS(null, 'width', '100%');\n foreignObject.setAttributeNS(null, 'height', '100%');\n foreignObject.setAttributeNS(null, 'x', x.toString());\n foreignObject.setAttributeNS(null, 'y', y.toString());\n foreignObject.setAttributeNS(null, 'externalResourcesRequired', 'true');\n svg.appendChild(foreignObject);\n\n foreignObject.appendChild(node);\n\n return svg;\n};\n\nexport const loadSerializedSVG = (svg: Node): Promise<HTMLImageElement> => {\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.onload = () => resolve(img);\n img.onerror = reject;\n\n img.src = `data:image/svg+xml;charset=utf-8,${encodeURIComponent(new XMLSerializer().serializeToString(svg))}`;\n });\n};\n\nexport const FEATURES = {\n get SUPPORT_RANGE_BOUNDS(): boolean {\n 'use strict';\n const value = testRangeBounds(document);\n Object.defineProperty(FEATURES, 'SUPPORT_RANGE_BOUNDS', { value });\n return value;\n },\n get SUPPORT_WORD_BREAKING(): boolean {\n 'use strict';\n const value = FEATURES.SUPPORT_RANGE_BOUNDS && testIOSLineBreak(document);\n Object.defineProperty(FEATURES, 'SUPPORT_WORD_BREAKING', { value });\n return value;\n },\n get SUPPORT_SVG_DRAWING(): boolean {\n 'use strict';\n const value = testSVG(document);\n Object.defineProperty(FEATURES, 'SUPPORT_SVG_DRAWING', { value });\n return value;\n },\n get SUPPORT_FOREIGNOBJECT_DRAWING(): Promise<boolean> {\n 'use strict';\n const value =\n typeof Array.from === 'function' && typeof window.fetch === 'function'\n ? testForeignObject(document)\n : Promise.resolve(false);\n Object.defineProperty(FEATURES, 'SUPPORT_FOREIGNOBJECT_DRAWING', { value });\n return value;\n },\n get SUPPORT_CORS_IMAGES(): boolean {\n 'use strict';\n const value = testCORS();\n Object.defineProperty(FEATURES, 'SUPPORT_CORS_IMAGES', { value });\n return value;\n },\n get SUPPORT_RESPONSE_TYPE(): boolean {\n 'use strict';\n const value = testResponseType();\n Object.defineProperty(FEATURES, 'SUPPORT_RESPONSE_TYPE', { value });\n return value;\n },\n get SUPPORT_CORS_XHR(): boolean {\n 'use strict';\n const value = 'withCredentials' in new XMLHttpRequest();\n Object.defineProperty(FEATURES, 'SUPPORT_CORS_XHR', { value });\n return value;\n },\n get SUPPORT_NATIVE_TEXT_SEGMENTATION(): boolean {\n 'use strict';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const value = !!(typeof Intl !== 'undefined' && (Intl as any).Segmenter);\n Object.defineProperty(FEATURES, 'SUPPORT_NATIVE_TEXT_SEGMENTATION', { value });\n return value;\n }\n};\n","import { OVERFLOW_WRAP } from '../property-descriptors/overflow-wrap';\nimport { CSSParsedDeclaration } from '../index';\nimport { fromCodePoint, LineBreaker, toCodePoints } from 'css-line-break';\nimport { splitGraphemes } from 'text-segmentation';\nimport { Bounds, parseBounds } from './bounds';\nimport { FEATURES } from '../../core/features';\nimport { Context } from '../../core/context';\n\nexport class TextBounds {\n readonly text: string;\n readonly bounds: Bounds;\n\n constructor(text: string, bounds: Bounds) {\n this.text = text;\n this.bounds = bounds;\n }\n}\n\nexport const parseTextBounds = (\n context: Context,\n value: string,\n styles: CSSParsedDeclaration,\n node: Text\n): TextBounds[] => {\n const textList = breakText(value, styles);\n const textBounds: TextBounds[] = [];\n let offset = 0;\n textList.forEach((text) => {\n if (styles.textDecorationLine.length || text.trim().length > 0) {\n if (FEATURES.SUPPORT_RANGE_BOUNDS) {\n const clientRects = createRange(node, offset, text.length).getClientRects();\n if (clientRects.length > 1) {\n const subSegments = segmentGraphemes(text);\n let subOffset = 0;\n subSegments.forEach((subSegment) => {\n textBounds.push(\n new TextBounds(\n subSegment,\n Bounds.fromDOMRectList(\n context,\n createRange(node, subOffset + offset, subSegment.length).getClientRects()\n )\n )\n );\n subOffset += subSegment.length;\n });\n } else {\n textBounds.push(new TextBounds(text, Bounds.fromDOMRectList(context, clientRects)));\n }\n } else {\n const replacementNode = node.splitText(text.length);\n textBounds.push(new TextBounds(text, getWrapperBounds(context, node)));\n node = replacementNode;\n }\n } else if (!FEATURES.SUPPORT_RANGE_BOUNDS) {\n node = node.splitText(text.length);\n }\n offset += text.length;\n });\n\n return textBounds;\n};\n\nconst getWrapperBounds = (context: Context, node: Text): Bounds => {\n const ownerDocument = node.ownerDocument;\n if (ownerDocument) {\n const wrapper = ownerDocument.createElement('html2canvaswrapper');\n wrapper.appendChild(node.cloneNode(true));\n const parentNode = node.parentNode;\n if (parentNode) {\n parentNode.replaceChild(wrapper, node);\n const bounds = parseBounds(context, wrapper);\n if (wrapper.firstChild) {\n parentNode.replaceChild(wrapper.firstChild, wrapper);\n }\n return bounds;\n }\n }\n\n return Bounds.EMPTY;\n};\n\nconst createRange = (node: Text, offset: number, length: number): Range => {\n const ownerDocument = node.ownerDocument;\n if (!ownerDocument) {\n throw new Error('Node has no owner document');\n }\n const range = ownerDocument.createRange();\n range.setStart(node, offset);\n range.setEnd(node, offset + length);\n return range;\n};\n\nexport const segmentGraphemes = (value: string): string[] => {\n if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const segmenter = new (Intl as any).Segmenter(void 0, { granularity: 'grapheme' });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return Array.from(segmenter.segment(value)).map((segment: any) => segment.segment);\n }\n\n return splitGraphemes(value);\n};\n\nconst segmentWords = (value: string, styles: CSSParsedDeclaration): string[] => {\n if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const segmenter = new (Intl as any).Segmenter(void 0, {\n granularity: 'word'\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return Array.from(segmenter.segment(value)).map((segment: any) => segment.segment);\n }\n\n return breakWords(value, styles);\n};\n\nconst breakText = (value: string, styles: CSSParsedDeclaration): string[] => {\n return styles.letterSpacing !== 0 ? segmentGraphemes(value) : segmentWords(value, styles);\n};\n\n// https://drafts.csswg.org/css-text/#word-separator\nconst wordSeparators = [0x0020, 0x00a0, 0x1361, 0x10100, 0x10101, 0x1039, 0x1091];\n\nconst breakWords = (str: string, styles: CSSParsedDeclaration): string[] => {\n const breaker = LineBreaker(str, {\n lineBreak: styles.lineBreak,\n wordBreak: styles.overflowWrap === OVERFLOW_WRAP.BREAK_WORD ? 'break-word' : styles.wordBreak\n });\n\n const words = [];\n let bk;\n\n while (!(bk = breaker.next()).done) {\n if (bk.value) {\n const value = bk.value.slice();\n const codePoints = toCodePoints(value);\n let word = '';\n codePoints.forEach((codePoint) => {\n if (wordSeparators.indexOf(codePoint) === -1) {\n word += fromCodePoint(codePoint);\n } else {\n if (word.length) {\n words.push(word);\n }\n words.push(fromCodePoint(codePoint));\n word = '';\n }\n });\n\n if (word.length) {\n words.push(word);\n }\n }\n }\n\n return words;\n};\n","import { CSSParsedDeclaration } from '../css/index';\nimport { TEXT_TRANSFORM } from '../css/property-descriptors/text-transform';\nimport { parseTextBounds, TextBounds } from '../css/layout/text';\nimport { Context } from '../core/context';\n\nexport class TextContainer {\n text: string;\n textBounds: TextBounds[];\n\n constructor(context: Context, node: Text, styles: CSSParsedDeclaration) {\n this.text = transform(node.data, styles.textTransform);\n this.textBounds = parseTextBounds(context, this.text, styles, node);\n }\n}\n\nconst transform = (text: string, transform: TEXT_TRANSFORM) => {\n switch (transform) {\n case TEXT_TRANSFORM.LOWERCASE:\n return text.toLowerCase();\n case TEXT_TRANSFORM.CAPITALIZE:\n return text.replace(CAPITALIZE, capitalize);\n case TEXT_TRANSFORM.UPPERCASE:\n return text.toUpperCase();\n default:\n return text;\n }\n};\n\nconst CAPITALIZE = /(^|\\s|:|-|\\(|\\))([a-z])/g;\n\nconst capitalize = (m: string, p1: string, p2: string) => {\n if (m.length > 0) {\n return p1 + p2.toUpperCase();\n }\n\n return m;\n};\n","import { ElementContainer } from '../element-container';\nimport { Context } from '../../core/context';\n\nexport class ImageElementContainer extends ElementContainer {\n src: string;\n intrinsicWidth: number;\n intrinsicHeight: number;\n\n constructor(context: Context, img: HTMLImageElement) {\n super(context, img);\n this.src = img.currentSrc || img.src;\n this.intrinsicWidth = img.naturalWidth;\n this.intrinsicHeight = img.naturalHeight;\n this.context.cache.addImage(this.src);\n }\n}\n","import { ElementContainer } from '../element-container';\nimport { Context } from '../../core/context';\n\nexport class CanvasElementContainer extends ElementContainer {\n canvas: HTMLCanvasElement;\n intrinsicWidth: number;\n intrinsicHeight: number;\n\n constructor(context: Context, canvas: HTMLCanvasElement) {\n super(context, canvas);\n this.canvas = canvas;\n this.intrinsicWidth = canvas.width;\n this.intrinsicHeight = canvas.height;\n }\n}\n","import { ElementContainer } from '../element-container';\nimport { parseBounds } from '../../css/layout/bounds';\nimport { Context } from '../../core/context';\n\nexport class SVGElementContainer extends ElementContainer {\n svg: string;\n intrinsicWidth: number;\n intrinsicHeight: number;\n\n constructor(context: Context, img: SVGSVGElement) {\n super(context, img);\n const s = new XMLSerializer();\n const bounds = parseBounds(context, img);\n img.setAttribute('width', `${bounds.width}px`);\n img.setAttribute('height', `${bounds.height}px`);\n\n this.svg = `data:image/svg+xml,${encodeURIComponent(s.serializeToString(img))}`;\n this.intrinsicWidth = img.width.baseVal.value;\n this.intrinsicHeight = img.height.baseVal.value;\n\n this.context.cache.addImage(this.svg);\n }\n}\n","import { ElementContainer } from '../element-container';\nimport { Context } from '../../core/context';\nexport class LIElementContainer extends ElementContainer {\n readonly value: number;\n\n constructor(context: Context, element: HTMLLIElement) {\n super(context, element);\n this.value = element.value;\n }\n}\n","import { ElementContainer } from '../element-container';\nimport { Context } from '../../core/context';\nexport class OLElementContainer extends ElementContainer {\n readonly start: number;\n readonly reversed: boolean;\n\n constructor(context: Context, element: HTMLOListElement) {\n super(context, element);\n this.start = element.start;\n this.reversed = typeof element.reversed === 'boolean' && element.reversed === true;\n }\n}\n","import { ElementContainer } from '../element-container';\nimport { BORDER_STYLE } from '../../css/property-descriptors/border-style';\nimport { BACKGROUND_CLIP } from '../../css/property-descriptors/background-clip';\nimport { BACKGROUND_ORIGIN } from '../../css/property-descriptors/background-origin';\nimport { TokenType } from '../../css/syntax/tokenizer';\nimport { LengthPercentageTuple } from '../../css/types/length-percentage';\nimport { Bounds } from '../../css/layout/bounds';\nimport { Context } from '../../core/context';\n\nconst CHECKBOX_BORDER_RADIUS: LengthPercentageTuple = [\n {\n type: TokenType.DIMENSION_TOKEN,\n flags: 0,\n unit: 'px',\n number: 3\n }\n];\n\nconst RADIO_BORDER_RADIUS: LengthPercentageTuple = [\n {\n type: TokenType.PERCENTAGE_TOKEN,\n flags: 0,\n number: 50\n }\n];\n\nconst reformatInputBounds = (bounds: Bounds): Bounds => {\n if (bounds.width > bounds.height) {\n return new Bounds(bounds.left + (bounds.width - bounds.height) / 2, bounds.top, bounds.height, bounds.height);\n } else if (bounds.width < bounds.height) {\n return new Bounds(bounds.left, bounds.top + (bounds.height - bounds.width) / 2, bounds.width, bounds.width);\n }\n return bounds;\n};\n\nconst getInputValue = (node: HTMLInputElement): string => {\n const value = node.type === PASSWORD ? new Array(node.value.length + 1).join('\\u2022') : node.value;\n\n return value.length === 0 ? node.placeholder || '' : value;\n};\n\nexport const CHECKBOX = 'checkbox';\nexport const RADIO = 'radio';\nexport const PASSWORD = 'password';\nexport const INPUT_COLOR = 0x2a2a2aff;\n\nexport class InputElementContainer extends ElementContainer {\n readonly type: string;\n readonly checked: boolean;\n readonly value: string;\n\n constructor(context: Context, input: HTMLInputElement) {\n super(context, input);\n this.type = input.type.toLowerCase();\n this.checked = input.checked;\n this.value = getInputValue(input);\n\n if (this.type === CHECKBOX || this.type === RADIO) {\n this.styles.backgroundColor = 0xdededeff;\n this.styles.borderTopColor =\n this.styles.borderRightColor =\n this.styles.borderBottomColor =\n this.styles.borderLeftColor =\n 0xa5a5a5ff;\n this.styles.borderTopWidth =\n this.styles.borderRightWidth =\n this.styles.borderBottomWidth =\n this.styles.borderLeftWidth =\n 1;\n this.styles.borderTopStyle =\n this.styles.borderRightStyle =\n this.styles.borderBottomStyle =\n this.styles.borderLeftStyle =\n BORDER_STYLE.SOLID;\n this.styles.backgroundClip = [BACKGROUND_CLIP.BORDER_BOX];\n this.styles.backgroundOrigin = [BACKGROUND_ORIGIN.BORDER_BOX];\n this.bounds = reformatInputBounds(this.bounds);\n }\n\n switch (this.type) {\n case CHECKBOX:\n this.styles.borderTopRightRadius =\n this.styles.borderTopLeftRadius =\n this.styles.borderBottomRightRadius =\n this.styles.borderBottomLeftRadius =\n CHECKBOX_BORDER_RADIUS;\n break;\n case RADIO:\n this.styles.borderTopRightRadius =\n this.styles.borderTopLeftRadius =\n this.styles.borderBottomRightRadius =\n this.styles.borderBottomLeftRadius =\n RADIO_BORDER_RADIUS;\n break;\n }\n }\n}\n","import { ElementContainer } from '../element-container';\nimport { Context } from '../../core/context';\nexport class SelectElementContainer extends ElementContainer {\n readonly value: string;\n constructor(context: Context, element: HTMLSelectElement) {\n super(context, element);\n const option = element.options[element.selectedIndex || 0];\n this.value = option ? option.text || '' : '';\n }\n}\n","import { ElementContainer } from '../element-container';\nimport { Context } from '../../core/context';\nexport class TextareaElementContainer extends ElementContainer {\n readonly value: string;\n constructor(context: Context, element: HTMLTextAreaElement) {\n super(context, element);\n this.value = element.value;\n }\n}\n","import { ElementContainer } from '../element-container';\nimport { parseTree } from '../node-parser';\nimport { Color, parseColor, COLORS } from '../../css/types/color';\nimport { isTransparent } from '../../css/types/color-utilities';\nimport { Context } from '../../core/context';\n\nexport class IFrameElementContainer extends ElementContainer {\n src: string;\n width: number;\n height: number;\n tree?: ElementContainer;\n backgroundColor: Color;\n\n constructor(context: Context, iframe: HTMLIFrameElement) {\n super(context, iframe);\n this.src = iframe.src;\n this.width = parseInt(iframe.width, 10) || 0;\n this.height = parseInt(iframe.height, 10) || 0;\n this.backgroundColor = this.styles.backgroundColor;\n try {\n if (\n iframe.contentWindow &&\n iframe.contentWindow.document &&\n iframe.contentWindow.document.documentElement\n ) {\n this.tree = parseTree(context, iframe.contentWindow.document.documentElement);\n\n // http://www.w3.org/TR/css3-background/#special-backgrounds\n const documentBackgroundColor = iframe.contentWindow.document.documentElement\n ? parseColor(\n context,\n getComputedStyle(iframe.contentWindow.document.documentElement).backgroundColor as string\n )\n : COLORS.TRANSPARENT;\n const bodyBackgroundColor = iframe.contentWindow.document.body\n ? parseColor(\n context,\n getComputedStyle(iframe.contentWindow.document.body).backgroundColor as string\n )\n : COLORS.TRANSPARENT;\n\n this.backgroundColor = isTransparent(documentBackgroundColor)\n ? isTransparent(bodyBackgroundColor)\n ? this.styles.backgroundColor\n : bodyBackgroundColor\n : documentBackgroundColor;\n }\n } catch (e) {}\n }\n}\n","import { CSSParsedDeclaration } from '../css';\nimport { ElementContainer, FLAGS } from './element-container';\nimport { TextContainer } from './text-container';\nimport { ImageElementContainer } from './replaced-elements/image-element-container';\nimport { CanvasElementContainer } from './replaced-elements/canvas-element-container';\nimport { SVGElementContainer } from './replaced-elements/svg-element-container';\nimport { LIElementContainer } from './elements/li-element-container';\nimport { OLElementContainer } from './elements/ol-element-container';\nimport { InputElementContainer } from './replaced-elements/input-element-container';\nimport { SelectElementContainer } from './elements/select-element-container';\nimport { TextareaElementContainer } from './elements/textarea-element-container';\nimport { IFrameElementContainer } from './replaced-elements/iframe-element-container';\nimport { Context } from '../core/context';\n\nconst LIST_OWNERS = ['OL', 'UL', 'MENU'];\n\nconst parseNodeTree = (context: Context, node: Node, parent: ElementContainer, root: ElementContainer) => {\n for (let childNode = node.firstChild, nextNode; childNode; childNode = nextNode) {\n nextNode = childNode.nextSibling;\n\n // Fixes #2238 #1624 - Fix the issue of TextNode content being overlooked in rendering due to being perceived as blank by trim().\n if (isTextNode(childNode) && childNode.data.length > 0) {\n parent.textNodes.push(new TextContainer(context, childNode, parent.styles));\n } else if (isElementNode(childNode)) {\n if (isSlotElement(childNode) && childNode.assignedNodes) {\n childNode.assignedNodes().forEach((childNode) => parseNodeTree(context, childNode, parent, root));\n } else {\n const container = createContainer(context, childNode);\n if (container.styles.isVisible()) {\n if (createsRealStackingContext(childNode, container, root)) {\n container.flags |= FLAGS.CREATES_REAL_STACKING_CONTEXT;\n } else if (createsStackingContext(container.styles)) {\n container.flags |= FLAGS.CREATES_STACKING_CONTEXT;\n }\n\n if (LIST_OWNERS.indexOf(childNode.tagName) !== -1) {\n container.flags |= FLAGS.IS_LIST_OWNER;\n }\n\n parent.elements.push(container);\n childNode.slot;\n if (childNode.shadowRoot) {\n parseNodeTree(context, childNode.shadowRoot, container, root);\n } else if (\n !isTextareaElement(childNode) &&\n !isSVGElement(childNode) &&\n !isSelectElement(childNode)\n ) {\n parseNodeTree(context, childNode, container, root);\n }\n }\n }\n }\n }\n};\n\nconst createContainer = (context: Context, element: Element): ElementContainer => {\n if (isImageElement(element)) {\n return new ImageElementContainer(context, element);\n }\n\n if (isCanvasElement(element)) {\n return new CanvasElementContainer(context, element);\n }\n\n if (isSVGElement(element)) {\n return new SVGElementContainer(context, element);\n }\n\n if (isLIElement(element)) {\n return new LIElementContainer(context, element);\n }\n\n if (isOLElement(element)) {\n return new OLElementContainer(context, element);\n }\n\n if (isInputElement(element)) {\n return new InputElementContainer(context, element);\n }\n\n if (isSelectElement(element)) {\n return new SelectElementContainer(context, element);\n }\n\n if (isTextareaElement(element)) {\n return new TextareaElementContainer(context, element);\n }\n\n if (isIFrameElement(element)) {\n return new IFrameElementContainer(context, element);\n }\n\n return new ElementContainer(context, element);\n};\n\nexport const parseTree = (context: Context, element: HTMLElement): ElementContainer => {\n const container = createContainer(context, element);\n container.flags |= FLAGS.CREATES_REAL_STACKING_CONTEXT;\n parseNodeTree(context, element, container, container);\n return container;\n};\n\nconst createsRealStackingContext = (node: Element, container: ElementContainer, root: ElementContainer): boolean => {\n return (\n container.styles.isPositionedWithZIndex() ||\n container.styles.opacity < 1 ||\n container.styles.isTransformed() ||\n (isBodyElement(node) && root.styles.isTransparent())\n );\n};\n\nconst createsStackingContext = (styles: CSSParsedDeclaration): boolean => styles.isPositioned() || styles.isFloating();\n\nexport const isTextNode = (node: Node): node is Text => node.nodeType === Node.TEXT_NODE;\nexport const isElementNode = (node: Node): node is Element => node.nodeType === Node.ELEMENT_NODE;\nexport const isHTMLElementNode = (node: Node): node is HTMLElement =>\n isElementNode(node) && typeof (node as HTMLElement).style !== 'undefined' && !isSVGElementNode(node);\nexport const isSVGElementNode = (element: Element): element is SVGElement =>\n typeof (element as SVGElement).className === 'object';\nexport const isLIElement = (node: Element): node is HTMLLIElement => node.tagName === 'LI';\nexport const isOLElement = (node: Element): node is HTMLOListElement => node.tagName === 'OL';\nexport const isInputElement = (node: Element): node is HTMLInputElement => node.tagName === 'INPUT';\nexport const isHTMLElement = (node: Element): node is HTMLHtmlElement => node.tagName === 'HTML';\nexport const isSVGElement = (node: Element): node is SVGSVGElement => node.tagName === 'svg';\nexport const isBodyElement = (node: Element): node is HTMLBodyElement => node.tagName === 'BODY';\nexport const isCanvasElement = (node: Element): node is HTMLCanvasElement => node.tagName === 'CANVAS';\nexport const isVideoElement = (node: Element): node is HTMLVideoElement => node.tagName === 'VIDEO';\nexport const isImageElement = (node: Element): node is HTMLImageElement => node.tagName === 'IMG';\nexport const isIFrameElement = (node: Element): node is HTMLIFrameElement => node.tagName === 'IFRAME';\nexport const isStyleElement = (node: Element): node is HTMLStyleElement => node.tagName === 'STYLE';\nexport const isScriptElement = (node: Element): node is HTMLScriptElement => node.tagName === 'SCRIPT';\nexport const isTextareaElement = (node: Element): node is HTMLTextAreaElement => node.tagName === 'TEXTAREA';\nexport const isSelectElement = (node: Element): node is HTMLSelectElement => node.tagName === 'SELECT';\nexport const isSlotElement = (node: Element): node is HTMLSlotElement => node.tagName === 'SLOT';\n// https://html.spec.whatwg.org/multipage/custom-elements.html#valid-custom-element-name\nexport const isCustomElement = (node: Element): node is HTMLElement => node.tagName.indexOf('-') > 0;\n","import { LIST_STYLE_TYPE } from '../../property-descriptors/list-style-type';\nimport { fromCodePoint } from 'css-line-break';\nimport { contains } from '../../../core/bitwise';\nimport { CSSParsedCounterDeclaration } from '../../index';\n\nexport class CounterState {\n private readonly counters: { [key: string]: number[] } = {};\n\n getCounterValue(name: string): number {\n const counter = this.counters[name];\n\n if (counter && counter.length) {\n return counter[counter.length - 1];\n }\n return 1;\n }\n\n getCounterValues(name: string): readonly number[] {\n const counter = this.counters[name];\n return counter ? counter : [];\n }\n\n pop(counters: string[]): void {\n counters.forEach((counter) => this.counters[counter].pop());\n }\n\n parse(style: CSSParsedCounterDeclaration): string[] {\n const counterIncrement = style.counterIncrement;\n const counterReset = style.counterReset;\n let canReset = true;\n\n if (counterIncrement !== null) {\n counterIncrement.forEach((entry) => {\n const counter = this.counters[entry.counter];\n if (counter && entry.increment !== 0) {\n canReset = false;\n if (!counter.length) {\n counter.push(1);\n }\n counter[Math.max(0, counter.length - 1)] += entry.increment;\n }\n });\n }\n\n const counterNames: string[] = [];\n if (canReset) {\n counterReset.forEach((entry) => {\n let counter = this.counters[entry.counter];\n counterNames.push(entry.counter);\n if (!counter) {\n counter = this.counters[entry.counter] = [];\n }\n counter.push(entry.reset);\n });\n }\n\n return counterNames;\n }\n}\n\ninterface CounterSymbols {\n integers: number[];\n values: string[];\n}\n\nconst ROMAN_UPPER: CounterSymbols = {\n integers: [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1],\n values: ['M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I']\n};\n\nconst ARMENIAN: CounterSymbols = {\n integers: [\n 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90, 80, 70,\n 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1\n ],\n values: [\n 'Ք',\n 'Փ',\n 'Ւ',\n 'Ց',\n 'Ր',\n 'Տ',\n 'Վ',\n 'Ս',\n 'Ռ',\n 'Ջ',\n 'Պ',\n 'Չ',\n 'Ո',\n 'Շ',\n 'Ն',\n 'Յ',\n 'Մ',\n 'Ճ',\n 'Ղ',\n 'Ձ',\n 'Հ',\n 'Կ',\n 'Ծ',\n 'Խ',\n 'Լ',\n 'Ի',\n 'Ժ',\n 'Թ',\n 'Ը',\n 'Է',\n 'Զ',\n 'Ե',\n 'Դ',\n 'Գ',\n 'Բ',\n 'Ա'\n ]\n};\n\nconst HEBREW: CounterSymbols = {\n integers: [\n 10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20,\n 19, 18, 17, 16, 15, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1\n ],\n values: [\n 'י׳',\n 'ט׳',\n 'ח׳',\n 'ז׳',\n 'ו׳',\n 'ה׳',\n 'ד׳',\n 'ג׳',\n 'ב׳',\n 'א׳',\n 'ת',\n 'ש',\n 'ר',\n 'ק',\n 'צ',\n 'פ',\n 'ע',\n 'ס',\n 'נ',\n 'מ',\n 'ל',\n 'כ',\n 'יט',\n 'יח',\n 'יז',\n 'טז',\n 'טו',\n 'י',\n 'ט',\n 'ח',\n 'ז',\n 'ו',\n 'ה',\n 'ד',\n 'ג',\n 'ב',\n 'א'\n ]\n};\n\nconst GEORGIAN: CounterSymbols = {\n integers: [\n 10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90,\n 80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1\n ],\n values: [\n 'ჵ',\n 'ჰ',\n 'ჯ',\n 'ჴ',\n 'ხ',\n 'ჭ',\n 'წ',\n 'ძ',\n 'ც',\n 'ჩ',\n 'შ',\n 'ყ',\n 'ღ',\n 'ქ',\n 'ფ',\n 'ჳ',\n 'ტ',\n 'ს',\n 'რ',\n 'ჟ',\n 'პ',\n 'ო',\n 'ჲ',\n 'ნ',\n 'მ',\n 'ლ',\n 'კ',\n 'ი',\n 'თ',\n 'ჱ',\n 'ზ',\n 'ვ',\n 'ე',\n 'დ',\n 'გ',\n 'ბ',\n 'ა'\n ]\n};\n\nconst createAdditiveCounter = (\n value: number,\n min: number,\n max: number,\n symbols: CounterSymbols,\n fallback: LIST_STYLE_TYPE,\n suffix: string\n) => {\n if (value < min || value > max) {\n return createCounterText(value, fallback, suffix.length > 0);\n }\n\n return (\n symbols.integers.reduce((string, integer, index) => {\n while (value >= integer) {\n value -= integer;\n string += symbols.values[index];\n }\n return string;\n }, '') + suffix\n );\n};\n\nconst createCounterStyleWithSymbolResolver = (\n value: number,\n codePointRangeLength: number,\n isNumeric: boolean,\n resolver: (codePoint: number) => string\n): string => {\n let string = '';\n\n do {\n if (!isNumeric) {\n value--;\n }\n string = resolver(value) + string;\n value /= codePointRangeLength;\n } while (value * codePointRangeLength >= codePointRangeLength);\n\n return string;\n};\n\nconst createCounterStyleFromRange = (\n value: number,\n codePointRangeStart: number,\n codePointRangeEnd: number,\n isNumeric: boolean,\n suffix: string\n): string => {\n const codePointRangeLength = codePointRangeEnd - codePointRangeStart + 1;\n\n return (\n (value < 0 ? '-' : '') +\n (createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, isNumeric, (codePoint) =>\n fromCodePoint(Math.floor(codePoint % codePointRangeLength) + codePointRangeStart)\n ) +\n suffix)\n );\n};\n\nconst createCounterStyleFromSymbols = (value: number, symbols: string, suffix = '. '): string => {\n const codePointRangeLength = symbols.length;\n return (\n createCounterStyleWithSymbolResolver(\n Math.abs(value),\n codePointRangeLength,\n false,\n (codePoint) => symbols[Math.floor(codePoint % codePointRangeLength)]\n ) + suffix\n );\n};\n\nconst CJK_ZEROS = 1 << 0;\nconst CJK_TEN_COEFFICIENTS = 1 << 1;\nconst CJK_TEN_HIGH_COEFFICIENTS = 1 << 2;\nconst CJK_HUNDRED_COEFFICIENTS = 1 << 3;\n\nconst createCJKCounter = (\n value: number,\n numbers: string,\n multipliers: string,\n negativeSign: string,\n suffix: string,\n flags: number\n): string => {\n if (value < -9999 || value > 9999) {\n return createCounterText(value, LIST_STYLE_TYPE.CJK_DECIMAL, suffix.length > 0);\n }\n let tmp = Math.abs(value);\n let string = suffix;\n\n if (tmp === 0) {\n return numbers[0] + string;\n }\n\n for (let digit = 0; tmp > 0 && digit <= 4; digit++) {\n const coefficient = tmp % 10;\n\n if (coefficient === 0 && contains(flags, CJK_ZEROS) && string !== '') {\n string = numbers[coefficient] + string;\n } else if (\n coefficient > 1 ||\n (coefficient === 1 && digit === 0) ||\n (coefficient === 1 && digit === 1 && contains(flags, CJK_TEN_COEFFICIENTS)) ||\n (coefficient === 1 && digit === 1 && contains(flags, CJK_TEN_HIGH_COEFFICIENTS) && value > 100) ||\n (coefficient === 1 && digit > 1 && contains(flags, CJK_HUNDRED_COEFFICIENTS))\n ) {\n string = numbers[coefficient] + (digit > 0 ? multipliers[digit - 1] : '') + string;\n } else if (coefficient === 1 && digit > 0) {\n string = multipliers[digit - 1] + string;\n }\n tmp = Math.floor(tmp / 10);\n }\n\n return (value < 0 ? negativeSign : '') + string;\n};\n\nconst CHINESE_INFORMAL_MULTIPLIERS = '十百千萬';\nconst CHINESE_FORMAL_MULTIPLIERS = '拾佰仟萬';\nconst JAPANESE_NEGATIVE = 'マイナス';\nconst KOREAN_NEGATIVE = '마이너스';\n\nexport const createCounterText = (value: number, type: LIST_STYLE_TYPE, appendSuffix: boolean): string => {\n const defaultSuffix = appendSuffix ? '. ' : '';\n const cjkSuffix = appendSuffix ? '、' : '';\n const koreanSuffix = appendSuffix ? ', ' : '';\n const spaceSuffix = appendSuffix ? ' ' : '';\n switch (type) {\n case LIST_STYLE_TYPE.DISC:\n return '•' + spaceSuffix;\n case LIST_STYLE_TYPE.CIRCLE:\n return '◦' + spaceSuffix;\n case LIST_STYLE_TYPE.SQUARE:\n return '◾' + spaceSuffix;\n case LIST_STYLE_TYPE.DECIMAL_LEADING_ZERO:\n const string = createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);\n return string.length < 4 ? `0${string}` : string;\n case LIST_STYLE_TYPE.CJK_DECIMAL:\n return createCounterStyleFromSymbols(value, '〇一二三四五六七八九', cjkSuffix);\n case LIST_STYLE_TYPE.LOWER_ROMAN:\n return createAdditiveCounter(\n value,\n 1,\n 3999,\n ROMAN_UPPER,\n LIST_STYLE_TYPE.DECIMAL,\n defaultSuffix\n ).toLowerCase();\n case LIST_STYLE_TYPE.UPPER_ROMAN:\n return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);\n case LIST_STYLE_TYPE.LOWER_GREEK:\n return createCounterStyleFromRange(value, 945, 969, false, defaultSuffix);\n case LIST_STYLE_TYPE.LOWER_ALPHA:\n return createCounterStyleFromRange(value, 97, 122, false, defaultSuffix);\n case LIST_STYLE_TYPE.UPPER_ALPHA:\n return createCounterStyleFromRange(value, 65, 90, false, defaultSuffix);\n case LIST_STYLE_TYPE.ARABIC_INDIC:\n return createCounterStyleFromRange(value, 1632, 1641, true, defaultSuffix);\n case LIST_STYLE_TYPE.ARMENIAN:\n case LIST_STYLE_TYPE.UPPER_ARMENIAN:\n return createAdditiveCounter(value, 1, 9999, ARMENIAN, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);\n case LIST_STYLE_TYPE.LOWER_ARMENIAN:\n return createAdditiveCounter(\n value,\n 1,\n 9999,\n ARMENIAN,\n LIST_STYLE_TYPE.DECIMAL,\n defaultSuffix\n ).toLowerCase();\n case LIST_STYLE_TYPE.BENGALI:\n return createCounterStyleFromRange(value, 2534, 2543, true, defaultSuffix);\n case LIST_STYLE_TYPE.CAMBODIAN:\n case LIST_STYLE_TYPE.KHMER:\n return createCounterStyleFromRange(value, 6112, 6121, true, defaultSuffix);\n case LIST_STYLE_TYPE.CJK_EARTHLY_BRANCH:\n return createCounterStyleFromSymbols(value, '子丑寅卯辰巳午未申酉戌亥', cjkSuffix);\n case LIST_STYLE_TYPE.CJK_HEAVENLY_STEM:\n return createCounterStyleFromSymbols(value, '甲乙丙丁戊己庚辛壬癸', cjkSuffix);\n case LIST_STYLE_TYPE.CJK_IDEOGRAPHIC:\n case LIST_STYLE_TYPE.TRAD_CHINESE_INFORMAL:\n return createCJKCounter(\n value,\n '零一二三四五六七八九',\n CHINESE_INFORMAL_MULTIPLIERS,\n '負',\n cjkSuffix,\n CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS\n );\n case LIST_STYLE_TYPE.TRAD_CHINESE_FORMAL:\n return createCJKCounter(\n value,\n '零壹貳參肆伍陸柒捌玖',\n CHINESE_FORMAL_MULTIPLIERS,\n '負',\n cjkSuffix,\n CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS\n );\n case LIST_STYLE_TYPE.SIMP_CHINESE_INFORMAL:\n return createCJKCounter(\n value,\n '零一二三四五六七八九',\n CHINESE_INFORMAL_MULTIPLIERS,\n '负',\n cjkSuffix,\n CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS\n );\n case LIST_STYLE_TYPE.SIMP_CHINESE_FORMAL:\n return createCJKCounter(\n value,\n '零壹贰叁肆伍陆柒捌玖',\n CHINESE_FORMAL_MULTIPLIERS,\n '负',\n cjkSuffix,\n CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS\n );\n case LIST_STYLE_TYPE.JAPANESE_INFORMAL:\n return createCJKCounter(value, '〇一二三四五六七八九', '十百千万', JAPANESE_NEGATIVE, cjkSuffix, 0);\n case LIST_STYLE_TYPE.JAPANESE_FORMAL:\n return createCJKCounter(\n value,\n '零壱弐参四伍六七八九',\n '拾百千万',\n JAPANESE_NEGATIVE,\n cjkSuffix,\n CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS\n );\n case LIST_STYLE_TYPE.KOREAN_HANGUL_FORMAL:\n return createCJKCounter(\n value,\n '영일이삼사오육칠팔구',\n '십백천만',\n KOREAN_NEGATIVE,\n koreanSuffix,\n CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS\n );\n case LIST_STYLE_TYPE.KOREAN_HANJA_INFORMAL:\n return createCJKCounter(value, '零一二三四五六七八九', '十百千萬', KOREAN_NEGATIVE, koreanSuffix, 0);\n case LIST_STYLE_TYPE.KOREAN_HANJA_FORMAL:\n return createCJKCounter(\n value,\n '零壹貳參四五六七八九',\n '拾百千',\n KOREAN_NEGATIVE,\n koreanSuffix,\n CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS\n );\n case LIST_STYLE_TYPE.DEVANAGARI:\n return createCounterStyleFromRange(value, 0x966, 0x96f, true, defaultSuffix);\n case LIST_STYLE_TYPE.GEORGIAN:\n return createAdditiveCounter(value, 1, 19999, GEORGIAN, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);\n case LIST_STYLE_TYPE.GUJARATI:\n return createCounterStyleFromRange(value, 0xae6, 0xaef, true, defaultSuffix);\n case LIST_STYLE_TYPE.GURMUKHI:\n return createCounterStyleFromRange(value, 0xa66, 0xa6f, true, defaultSuffix);\n case LIST_STYLE_TYPE.HEBREW:\n return createAdditiveCounter(value, 1, 10999, HEBREW, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);\n case LIST_STYLE_TYPE.HIRAGANA:\n return createCounterStyleFromSymbols(\n value,\n 'あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん'\n );\n case LIST_STYLE_TYPE.HIRAGANA_IROHA:\n return createCounterStyleFromSymbols(\n value,\n 'いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやまけふこえてあさきゆめみしゑひもせす'\n );\n case LIST_STYLE_TYPE.KANNADA:\n return createCounterStyleFromRange(value, 0xce6, 0xcef, true, defaultSuffix);\n case LIST_STYLE_TYPE.KATAKANA:\n return createCounterStyleFromSymbols(\n value,\n 'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン',\n cjkSuffix\n );\n case LIST_STYLE_TYPE.KATAKANA_IROHA:\n return createCounterStyleFromSymbols(\n value,\n 'イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス',\n cjkSuffix\n );\n case LIST_STYLE_TYPE.LAO:\n return createCounterStyleFromRange(value, 0xed0, 0xed9, true, defaultSuffix);\n case LIST_STYLE_TYPE.MONGOLIAN:\n return createCounterStyleFromRange(value, 0x1810, 0x1819, true, defaultSuffix);\n case LIST_STYLE_TYPE.MYANMAR:\n return createCounterStyleFromRange(value, 0x1040, 0x1049, true, defaultSuffix);\n case LIST_STYLE_TYPE.ORIYA:\n return createCounterStyleFromRange(value, 0xb66, 0xb6f, true, defaultSuffix);\n case LIST_STYLE_TYPE.PERSIAN:\n return createCounterStyleFromRange(value, 0x6f0, 0x6f9, true, defaultSuffix);\n case LIST_STYLE_TYPE.TAMIL:\n return createCounterStyleFromRange(value, 0xbe6, 0xbef, true, defaultSuffix);\n case LIST_STYLE_TYPE.TELUGU:\n return createCounterStyleFromRange(value, 0xc66, 0xc6f, true, defaultSuffix);\n case LIST_STYLE_TYPE.THAI:\n return createCounterStyleFromRange(value, 0xe50, 0xe59, true, defaultSuffix);\n case LIST_STYLE_TYPE.TIBETAN:\n return createCounterStyleFromRange(value, 0xf20, 0xf29, true, defaultSuffix);\n case LIST_STYLE_TYPE.DECIMAL:\n default:\n return createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);\n }\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<HTMLIFrameElement> {\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 <style> sheets when fetched through getComputedStyle\n if window url is about:blank, we can assign the url to current by writing onto the document\n */\n\n const iframeLoad = iframeLoader(iframe).then(async () => {\n this.scrolledElements.forEach(restoreNodeScroll);\n if (cloneWindow) {\n cloneWindow.scrollTo(windowSize.left, windowSize.top);\n if (\n /(iPad|iPhone|iPod)/g.test(navigator.userAgent) &&\n (cloneWindow.scrollY !== windowSize.top || cloneWindow.scrollX !== windowSize.left)\n ) {\n this.context.logger.warn('Unable to restore scroll position for cloned document');\n this.context.windowBounds = this.context.windowBounds.add(\n cloneWindow.scrollX - windowSize.left,\n cloneWindow.scrollY - windowSize.top,\n 0,\n 0\n );\n }\n }\n\n const onclone = this.options.onclone;\n\n const referenceElement = this.clonedReferenceElement;\n\n if (typeof referenceElement === 'undefined') {\n return Promise.reject(`Error finding the ${this.referenceElement.nodeName} in the cloned document`);\n }\n\n if (documentClone.fonts && documentClone.fonts.ready) {\n await documentClone.fonts.ready;\n }\n\n if (/(AppleWebKit)/g.test(navigator.userAgent)) {\n await imagesReady(documentClone);\n }\n\n if (typeof onclone === 'function') {\n return Promise.resolve()\n .then(() => onclone(documentClone, referenceElement))\n .then(() => iframe);\n }\n\n return iframe;\n });\n\n const adoptedNode = documentClone.adoptNode(this.documentElement);\n /**\n * The baseURI of the document will be lost after documentClone.open().\n * We can avoid it by adding <base> element.\n * */\n addBase(adoptedNode, documentClone);\n documentClone.open();\n documentClone.write(`${serializeDoctype(document.doctype)}<html></html>`);\n // Chrome scrolls the parent document for some reason after the write to the cloned window???\n restoreOwnerScroll(this.referenceElement.ownerDocument, scrollX, scrollY);\n documentClone.replaceChild(adoptedNode, documentClone.documentElement);\n documentClone.close();\n\n return iframeLoad;\n }\n\n createElementClone<T extends HTMLElement | SVGElement>(node: T): HTMLElement | SVGElement {\n if (isDebugging(node, DebuggerType.CLONE)) {\n debugger;\n }\n if (isCanvasElement(node)) {\n return this.createCanvasClone(node);\n }\n if (isVideoElement(node)) {\n return this.createVideoClone(node);\n }\n if (isStyleElement(node)) {\n return this.createStyleClone(node);\n }\n\n const clone = node.cloneNode(false) as T;\n if (isImageElement(clone)) {\n if (isImageElement(node) && node.currentSrc && node.currentSrc !== node.src) {\n clone.src = node.currentSrc;\n clone.srcset = '';\n }\n\n if (clone.loading === 'lazy') {\n clone.loading = 'eager';\n }\n }\n\n if (isCustomElement(clone)) {\n return this.createCustomElementClone(clone);\n }\n\n return clone;\n }\n\n createCustomElementClone(node: HTMLElement): HTMLElement {\n const clone = document.createElement('html2canvascustomelement');\n copyCSSStyles(node.style, clone);\n\n return clone;\n }\n\n createStyleClone(node: HTMLStyleElement): HTMLStyleElement {\n try {\n const sheet = node.sheet as CSSStyleSheet | undefined;\n if (sheet && sheet.cssRules) {\n const css: string = [].slice.call(sheet.cssRules, 0).reduce((css: string, rule: CSSRule) => {\n if (rule && typeof rule.cssText === 'string') {\n return css + rule.cssText;\n }\n return css;\n }, '');\n const style = node.cloneNode(false) as HTMLStyleElement;\n style.textContent = css;\n return style;\n }\n } catch (e) {\n // accessing node.sheet.cssRules throws a DOMException\n this.context.logger.error('Unable to access cssRules property', e);\n if (e.name !== 'SecurityError') {\n throw e;\n }\n }\n return node.cloneNode(false) as HTMLStyleElement;\n }\n\n createCanvasClone(canvas: HTMLCanvasElement): HTMLImageElement | HTMLCanvasElement {\n if (this.options.inlineImages && canvas.ownerDocument) {\n const img = canvas.ownerDocument.createElement('img');\n try {\n img.src = canvas.toDataURL();\n return img;\n } catch (e) {\n this.context.logger.info(`Unable to inline canvas contents, canvas is tainted`, canvas);\n }\n }\n\n const clonedCanvas = canvas.cloneNode(false) as HTMLCanvasElement;\n\n try {\n clonedCanvas.width = canvas.width;\n clonedCanvas.height = canvas.height;\n const ctx = canvas.getContext('2d');\n const clonedCtx = clonedCanvas.getContext('2d', { willReadFrequently: true }) as CanvasRenderingContext2D;\n if (clonedCtx) {\n if (!this.options.allowTaint && ctx) {\n clonedCtx.putImageData(ctx.getImageData(0, 0, canvas.width, canvas.height), 0, 0);\n } else {\n const gl = canvas.getContext('webgl2') ?? canvas.getContext('webgl');\n if (gl) {\n const attribs = gl.getContextAttributes();\n if (attribs?.preserveDrawingBuffer === false) {\n this.context.logger.warn(\n 'Unable to clone WebGL context as it has preserveDrawingBuffer=false',\n canvas\n );\n }\n }\n\n clonedCtx.drawImage(canvas, 0, 0);\n }\n }\n return clonedCanvas;\n } catch (e) {\n this.context.logger.info(`Unable to clone canvas as it is tainted`, canvas);\n }\n\n return clonedCanvas;\n }\n\n createVideoClone(video: HTMLVideoElement): HTMLCanvasElement {\n const canvas = video.ownerDocument.createElement('canvas');\n\n canvas.width = video.offsetWidth;\n canvas.height = video.offsetHeight;\n const ctx = canvas.getContext('2d');\n\n try {\n if (ctx) {\n ctx.drawImage(video, 0, 0, canvas.width, canvas.height);\n if (!this.options.allowTaint) {\n ctx.getImageData(0, 0, canvas.width, canvas.height);\n }\n }\n return canvas;\n } catch (e) {\n this.context.logger.info(`Unable to clone video as it is tainted`, video);\n }\n\n const blankCanvas = video.ownerDocument.createElement('canvas');\n\n blankCanvas.width = video.offsetWidth;\n blankCanvas.height = video.offsetHeight;\n return blankCanvas;\n }\n\n appendChildNode(clone: HTMLElement | SVGElement, child: Node, copyStyles: boolean): void {\n if (\n !isElementNode(child) ||\n (!isScriptElement(child) &&\n !child.hasAttribute(IGNORE_ATTRIBUTE) &&\n (typeof this.options.ignoreElements !== 'function' || !this.options.ignoreElements(child)))\n ) {\n if (!this.options.copyStyles || !isElementNode(child) || !isStyleElement(child)) {\n clone.appendChild(this.cloneNode(child, copyStyles));\n }\n }\n }\n\n cloneChildNodes(node: Element, clone: HTMLElement | SVGElement, copyStyles: boolean): void {\n for (\n let child = node.shadowRoot ? node.shadowRoot.firstChild : node.firstChild;\n child;\n child = child.nextSibling\n ) {\n if (isElementNode(child) && isSlotElement(child) && typeof child.assignedNodes === 'function') {\n const assignedNodes = child.assignedNodes() as ChildNode[];\n if (assignedNodes.length) {\n assignedNodes.forEach((assignedNode) => this.appendChildNode(clone, assignedNode, copyStyles));\n }\n } else {\n this.appendChildNode(clone, child, copyStyles);\n }\n }\n }\n\n cloneNode(node: Node, copyStyles: boolean): Node {\n if (isTextNode(node)) {\n return document.createTextNode(node.data);\n }\n\n if (!node.ownerDocument) {\n return node.cloneNode(false);\n }\n\n const window = node.ownerDocument.defaultView;\n\n if (window && isElementNode(node) && (isHTMLElementNode(node) || isSVGElementNode(node))) {\n const clone = this.createElementClone(node);\n clone.style.transitionProperty = 'none';\n\n const style = window.getComputedStyle(node);\n const styleBefore = window.getComputedStyle(node, ':before');\n const styleAfter = window.getComputedStyle(node, ':after');\n\n if (this.referenceElement === node && isHTMLElementNode(clone)) {\n this.clonedReferenceElement = clone;\n }\n if (isBodyElement(clone)) {\n createPseudoHideStyles(clone);\n }\n\n const counters = this.counters.parse(new CSSParsedCounterDeclaration(this.context, style));\n const before = this.resolvePseudoContent(node, clone, styleBefore, PseudoElementType.BEFORE);\n\n if (isCustomElement(node)) {\n copyStyles = true;\n }\n\n if (!isVideoElement(node)) {\n this.cloneChildNodes(node, clone, copyStyles);\n }\n\n if (before) {\n clone.insertBefore(before, clone.firstChild);\n }\n\n const after = this.resolvePseudoContent(node, clone, styleAfter, PseudoElementType.AFTER);\n if (after) {\n clone.appendChild(after);\n }\n\n this.counters.pop(counters);\n\n if (\n (style && (this.options.copyStyles || isSVGElementNode(node)) && !isIFrameElement(node)) ||\n copyStyles\n ) {\n copyCSSStyles(style, clone);\n }\n\n if (node.scrollTop !== 0 || node.scrollLeft !== 0) {\n this.scrolledElements.push([clone, node.scrollLeft, node.scrollTop]);\n }\n\n if (\n (isTextareaElement(node) || isSelectElement(node)) &&\n (isTextareaElement(clone) || isSelectElement(clone))\n ) {\n clone.value = node.value;\n }\n\n return clone;\n }\n\n return node.cloneNode(false);\n }\n\n resolvePseudoContent(\n node: Element,\n clone: Element,\n style: CSSStyleDeclaration,\n pseudoElt: PseudoElementType\n ): HTMLElement | void {\n if (!style) {\n return;\n }\n\n const value = style.content;\n const document = clone.ownerDocument;\n if (!document || !value || value === 'none' || value === '-moz-alt-content' || style.display === 'none') {\n return;\n }\n\n this.counters.parse(new CSSParsedCounterDeclaration(this.context, style));\n const declaration = new CSSParsedPseudoDeclaration(this.context, style);\n\n const anonymousReplacedElement = document.createElement('html2canvaspseudoelement');\n copyCSSStyles(style, anonymousReplacedElement);\n\n declaration.content.forEach((token) => {\n if (token.type === TokenType.STRING_TOKEN) {\n anonymousReplacedElement.appendChild(document.createTextNode(token.value));\n } else if (token.type === TokenType.URL_TOKEN) {\n const img = document.createElement('img');\n img.src = token.value;\n img.style.opacity = '1';\n anonymousReplacedElement.appendChild(img);\n } else if (token.type === TokenType.FUNCTION) {\n if (token.name === 'attr') {\n const attr = token.values.filter(isIdentToken);\n if (attr.length) {\n anonymousReplacedElement.appendChild(\n document.createTextNode(node.getAttribute(attr[0].value) || '')\n );\n }\n } else if (token.name === 'counter') {\n const [counter, counterStyle] = token.values.filter(nonFunctionArgSeparator);\n if (counter && isIdentToken(counter)) {\n const counterState = this.counters.getCounterValue(counter.value);\n const counterType =\n counterStyle && isIdentToken(counterStyle)\n ? listStyleType.parse(this.context, counterStyle.value)\n : LIST_STYLE_TYPE.DECIMAL;\n\n anonymousReplacedElement.appendChild(\n document.createTextNode(createCounterText(counterState, counterType, false))\n );\n }\n } else if (token.name === 'counters') {\n const [counter, delim, counterStyle] = token.values.filter(nonFunctionArgSeparator);\n if (counter && isIdentToken(counter)) {\n const counterStates = this.counters.getCounterValues(counter.value);\n const counterType =\n counterStyle && isIdentToken(counterStyle)\n ? listStyleType.parse(this.context, counterStyle.value)\n : LIST_STYLE_TYPE.DECIMAL;\n const separator = delim && delim.type === TokenType.STRING_TOKEN ? delim.value : '';\n const text = counterStates\n .map((value) => createCounterText(value, counterType, false))\n .join(separator);\n\n anonymousReplacedElement.appendChild(document.createTextNode(text));\n }\n } else {\n // console.log('FUNCTION_TOKEN', token);\n }\n } else if (token.type === TokenType.IDENT_TOKEN) {\n switch (token.value) {\n case 'open-quote':\n anonymousReplacedElement.appendChild(\n document.createTextNode(getQuote(declaration.quotes, this.quoteDepth++, true))\n );\n break;\n case 'close-quote':\n anonymousReplacedElement.appendChild(\n document.createTextNode(getQuote(declaration.quotes, --this.quoteDepth, false))\n );\n break;\n default:\n // safari doesn't parse string tokens correctly because of lack of quotes\n anonymousReplacedElement.appendChild(document.createTextNode(token.value));\n }\n }\n });\n\n anonymousReplacedElement.className = `${PSEUDO_HIDE_ELEMENT_CLASS_BEFORE} ${PSEUDO_HIDE_ELEMENT_CLASS_AFTER}`;\n const newClassName =\n pseudoElt === PseudoElementType.BEFORE\n ? ` ${PSEUDO_HIDE_ELEMENT_CLASS_BEFORE}`\n : ` ${PSEUDO_HIDE_ELEMENT_CLASS_AFTER}`;\n\n if (isSVGElementNode(clone)) {\n clone.className.baseValue += newClassName;\n } else {\n clone.className += newClassName;\n }\n\n return anonymousReplacedElement;\n }\n\n static destroy(container: HTMLIFrameElement): boolean {\n if (container.parentNode) {\n container.parentNode.removeChild(container);\n return true;\n }\n return false;\n }\n}\n\nenum PseudoElementType {\n BEFORE,\n AFTER\n}\n\nconst createIFrameContainer = (ownerDocument: Document, bounds: Bounds): HTMLIFrameElement => {\n const cloneIframeContainer = ownerDocument.createElement('iframe');\n\n cloneIframeContainer.className = 'html2canvas-container';\n cloneIframeContainer.style.visibility = 'hidden';\n cloneIframeContainer.style.position = 'fixed';\n cloneIframeContainer.style.left = '-10000px';\n cloneIframeContainer.style.top = '0px';\n cloneIframeContainer.style.border = '0';\n cloneIframeContainer.width = bounds.width.toString();\n cloneIframeContainer.height = bounds.height.toString();\n cloneIframeContainer.scrolling = 'no'; // ios won't scroll without it\n cloneIframeContainer.setAttribute(IGNORE_ATTRIBUTE, 'true');\n ownerDocument.body.appendChild(cloneIframeContainer);\n\n return cloneIframeContainer;\n};\n\nconst imageReady = (img: HTMLImageElement): Promise<Event | void | string> => {\n return new Promise((resolve) => {\n if (img.complete) {\n resolve();\n return;\n }\n if (!img.src) {\n resolve();\n return;\n }\n img.onload = resolve;\n img.onerror = resolve;\n });\n};\n\nconst imagesReady = (document: HTMLDocument): Promise<unknown[]> => {\n return Promise.all([].slice.call(document.images, 0).map(imageReady));\n};\n\nconst iframeLoader = (iframe: HTMLIFrameElement): Promise<HTMLIFrameElement> => {\n return new Promise((resolve, reject) => {\n const cloneWindow = iframe.contentWindow;\n\n if (!cloneWindow) {\n return reject(`No window assigned for iframe`);\n }\n\n const documentClone = cloneWindow.document;\n\n cloneWindow.onload = iframe.onload = () => {\n cloneWindow.onload = iframe.onload = null;\n const interval = setInterval(() => {\n if (documentClone.body.childNodes.length > 0 && documentClone.readyState === 'complete') {\n clearInterval(interval);\n resolve(iframe);\n }\n }, 50);\n };\n });\n};\n\nconst ignoredStyleProperties = [\n 'all', // #2476\n 'd', // #2483\n 'content' // Safari shows pseudoelements if content is set\n];\n\nexport const copyCSSStyles = <T extends HTMLElement | SVGElement>(style: CSSStyleDeclaration, target: T): T => {\n // Edge does not provide value for cssText\n for (let i = style.length - 1; i >= 0; i--) {\n const property = style.item(i);\n if (ignoredStyleProperties.indexOf(property) === -1) {\n target.style.setProperty(property, style.getPropertyValue(property));\n }\n }\n return target;\n};\n\nconst serializeDoctype = (doctype?: DocumentType | null): string => {\n let str = '';\n if (doctype) {\n str += '<!DOCTYPE ';\n if (doctype.name) {\n str += doctype.name;\n }\n\n if (doctype.internalSubset) {\n str += doctype.internalSubset;\n }\n\n if (doctype.publicId) {\n str += `\"${doctype.publicId}\"`;\n }\n\n if (doctype.systemId) {\n str += `\"${doctype.systemId}\"`;\n }\n\n str += '>';\n }\n\n return str;\n};\n\nconst restoreOwnerScroll = (ownerDocument: Document | null, x: number, y: number) => {\n if (\n ownerDocument &&\n ownerDocument.defaultView &&\n (x !== ownerDocument.defaultView.pageXOffset || y !== ownerDocument.defaultView.pageYOffset)\n ) {\n ownerDocument.defaultView.scrollTo(x, y);\n }\n};\n\nconst restoreNodeScroll = ([element, x, y]: [HTMLElement, number, number]) => {\n element.scrollLeft = x;\n element.scrollTop = y;\n};\n\nconst PSEUDO_BEFORE = ':before';\nconst PSEUDO_AFTER = ':after';\nconst PSEUDO_HIDE_ELEMENT_CLASS_BEFORE = '___html2canvas___pseudoelement_before';\nconst PSEUDO_HIDE_ELEMENT_CLASS_AFTER = '___html2canvas___pseudoelement_after';\n\nconst PSEUDO_HIDE_ELEMENT_STYLE = `{\n content: \"\" !important;\n display: none !important;\n}`;\n\nconst createPseudoHideStyles = (body: HTMLElement) => {\n createStyles(\n body,\n `.${PSEUDO_HIDE_ELEMENT_CLASS_BEFORE}${PSEUDO_BEFORE}${PSEUDO_HIDE_ELEMENT_STYLE}\n .${PSEUDO_HIDE_ELEMENT_CLASS_AFTER}${PSEUDO_AFTER}${PSEUDO_HIDE_ELEMENT_STYLE}`\n );\n};\n\nconst createStyles = (body: HTMLElement, styles: string) => {\n const document = body.ownerDocument;\n if (document) {\n const style = document.createElement('style');\n style.textContent = styles;\n body.appendChild(style);\n }\n};\n\nconst addBase = (targetELement: HTMLElement, referenceDocument: Document) => {\n const baseNode = referenceDocument.createElement('base');\n baseNode.href = referenceDocument.baseURI;\n const headEle = targetELement.getElementsByTagName('head').item(0);\n headEle?.insertBefore(baseNode, headEle?.firstChild ?? null);\n};\n","import { FEATURES } from './features';\nimport { Context } from './context';\n\nexport class CacheStorage {\n private static _link?: HTMLAnchorElement;\n private static _origin = 'about:blank';\n\n static getOrigin(url: string): string {\n const link = CacheStorage._link;\n if (!link) {\n return 'about:blank';\n }\n\n link.href = url;\n link.href = link.href; // IE9, LOL! - http://jsfiddle.net/niklasvh/2e48b/\n return link.protocol + link.hostname + link.port;\n }\n\n static isSameOrigin(src: string): boolean {\n return CacheStorage.getOrigin(src) === CacheStorage._origin;\n }\n\n static setContext(window: Window): void {\n CacheStorage._link = window.document.createElement('a');\n CacheStorage._origin = CacheStorage.getOrigin(window.location.href);\n }\n}\n\nexport interface ResourceOptions {\n imageTimeout: number;\n useCORS: boolean;\n allowTaint: boolean;\n proxy?: string;\n}\n\nexport class Cache {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private readonly _cache: { [key: string]: Promise<any> } = {};\n\n constructor(private readonly context: Context, private readonly _options: ResourceOptions) {}\n\n addImage(src: string): Promise<void> {\n const result = Promise.resolve();\n if (this.has(src)) {\n return result;\n }\n\n if (isBlobImage(src) || isRenderable(src)) {\n (this._cache[src] = this.loadImage(src)).catch(() => {\n // prevent unhandled rejection\n });\n return result;\n }\n\n return result;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n match(src: string): Promise<any> {\n return this._cache[src];\n }\n\n private async loadImage(key: string) {\n const isSameOrigin = CacheStorage.isSameOrigin(key);\n const useCORS =\n !isInlineImage(key) && this._options.useCORS === true && FEATURES.SUPPORT_CORS_IMAGES && !isSameOrigin;\n const useProxy =\n !isInlineImage(key) &&\n !isSameOrigin &&\n !isBlobImage(key) &&\n typeof this._options.proxy === 'string' &&\n FEATURES.SUPPORT_CORS_XHR &&\n !useCORS;\n if (\n !isSameOrigin &&\n this._options.allowTaint === false &&\n !isInlineImage(key) &&\n !isBlobImage(key) &&\n !useProxy &&\n !useCORS\n ) {\n return;\n }\n\n let src = key;\n if (useProxy) {\n src = await this.proxy(src);\n }\n\n this.context.logger.debug(`Added image ${key.substring(0, 256)}`);\n\n return await new Promise((resolve, reject) => {\n const img = new Image();\n img.onload = () => resolve(img);\n img.onerror = reject;\n //ios safari 10.3 taints canvas with data urls unless crossOrigin is set to anonymous\n if (isInlineBase64Image(src) || useCORS) {\n img.crossOrigin = 'anonymous';\n }\n img.src = src;\n if (img.complete === true) {\n // Inline XML images may fail to parse, throwing an Error later on\n setTimeout(() => resolve(img), 500);\n }\n if (this._options.imageTimeout > 0) {\n setTimeout(\n () => reject(`Timed out (${this._options.imageTimeout}ms) loading image`),\n this._options.imageTimeout\n );\n }\n });\n }\n\n private has(key: string): boolean {\n return typeof this._cache[key] !== 'undefined';\n }\n\n keys(): Promise<string[]> {\n return Promise.resolve(Object.keys(this._cache));\n }\n\n private proxy(src: string): Promise<string> {\n const proxy = this._options.proxy;\n\n if (!proxy) {\n throw new Error('No proxy defined');\n }\n\n const key = src.substring(0, 256);\n\n return new Promise((resolve, reject) => {\n const responseType = FEATURES.SUPPORT_RESPONSE_TYPE ? 'blob' : 'text';\n const xhr = new XMLHttpRequest();\n xhr.onload = () => {\n if (xhr.status === 200) {\n if (responseType === 'text') {\n resolve(xhr.response);\n } else {\n const reader = new FileReader();\n reader.addEventListener('load', () => resolve(reader.result as string), false);\n reader.addEventListener('error', (e) => reject(e), false);\n reader.readAsDataURL(xhr.response);\n }\n } else {\n reject(`Failed to proxy resource ${key} with status code ${xhr.status}`);\n }\n };\n\n xhr.onerror = reject;\n const queryString = proxy.indexOf('?') > -1 ? '&' : '?';\n xhr.open('GET', `${proxy}${queryString}url=${encodeURIComponent(src)}&responseType=${responseType}`);\n\n if (responseType !== 'text' && xhr instanceof XMLHttpRequest) {\n xhr.responseType = responseType;\n }\n\n if (this._options.imageTimeout) {\n const timeout = this._options.imageTimeout;\n xhr.timeout = timeout;\n xhr.ontimeout = () => reject(`Timed out (${timeout}ms) proxying ${key}`);\n }\n\n xhr.send();\n });\n }\n}\n\nconst INLINE_SVG = /^data:image\\/svg\\+xml/i;\nconst INLINE_BASE64 = /^data:image\\/.*;base64,/i;\nconst INLINE_IMG = /^data:image\\/.*/i;\n\nconst isRenderable = (src: string): boolean => FEATURES.SUPPORT_SVG_DRAWING || !isSVG(src);\nconst isInlineImage = (src: string): boolean => INLINE_IMG.test(src);\nconst isInlineBase64Image = (src: string): boolean => INLINE_BASE64.test(src);\nconst isBlobImage = (src: string): boolean => src.substr(0, 4) === 'blob';\n\nconst isSVG = (src: string): boolean => src.substr(-3).toLowerCase() === 'svg' || INLINE_SVG.test(src);\n","import { IPath, Path, PathType } from './path';\n\nexport class Vector implements IPath {\n type: PathType;\n x: number;\n y: number;\n\n constructor(x: number, y: number) {\n this.type = PathType.VECTOR;\n this.x = x;\n this.y = y;\n }\n\n add(deltaX: number, deltaY: number): Vector {\n return new Vector(this.x + deltaX, this.y + deltaY);\n }\n}\n\nexport const isVector = (path: Path): path is Vector => path.type === PathType.VECTOR;\n","import { Vector } from './vector';\nimport { IPath, PathType, Path } from './path';\n\nconst lerp = (a: Vector, b: Vector, t: number): Vector => {\n return new Vector(a.x + (b.x - a.x) * t, a.y + (b.y - a.y) * t);\n};\n\nexport class BezierCurve implements IPath {\n type: PathType;\n start: Vector;\n startControl: Vector;\n endControl: Vector;\n end: Vector;\n\n constructor(start: Vector, startControl: Vector, endControl: Vector, end: Vector) {\n this.type = PathType.BEZIER_CURVE;\n this.start = start;\n this.startControl = startControl;\n this.endControl = endControl;\n this.end = end;\n }\n\n subdivide(t: number, firstHalf: boolean): BezierCurve {\n const ab = lerp(this.start, this.startControl, t);\n const bc = lerp(this.startControl, this.endControl, t);\n const cd = lerp(this.endControl, this.end, t);\n const abbc = lerp(ab, bc, t);\n const bccd = lerp(bc, cd, t);\n const dest = lerp(abbc, bccd, t);\n return firstHalf ? new BezierCurve(this.start, ab, abbc, dest) : new BezierCurve(dest, bccd, cd, this.end);\n }\n\n add(deltaX: number, deltaY: number): BezierCurve {\n return new BezierCurve(\n this.start.add(deltaX, deltaY),\n this.startControl.add(deltaX, deltaY),\n this.endControl.add(deltaX, deltaY),\n this.end.add(deltaX, deltaY)\n );\n }\n\n reverse(): BezierCurve {\n return new BezierCurve(this.end, this.endControl, this.startControl, this.start);\n }\n}\n\nexport const isBezierCurve = (path: Path): path is BezierCurve => path.type === PathType.BEZIER_CURVE;\n","import { ElementContainer } from '../dom/element-container';\nimport { getAbsoluteValue, getAbsoluteValueForTuple } from '../css/types/length-percentage';\nimport { Vector } from './vector';\nimport { BezierCurve } from './bezier-curve';\nimport { Path } from './path';\n\nexport class BoundCurves {\n readonly topLeftBorderDoubleOuterBox: Path;\n readonly topRightBorderDoubleOuterBox: Path;\n readonly bottomRightBorderDoubleOuterBox: Path;\n readonly bottomLeftBorderDoubleOuterBox: Path;\n readonly topLeftBorderDoubleInnerBox: Path;\n readonly topRightBorderDoubleInnerBox: Path;\n readonly bottomRightBorderDoubleInnerBox: Path;\n readonly bottomLeftBorderDoubleInnerBox: Path;\n readonly topLeftBorderStroke: Path;\n readonly topRightBorderStroke: Path;\n readonly bottomRightBorderStroke: Path;\n readonly bottomLeftBorderStroke: Path;\n readonly topLeftBorderBox: Path;\n readonly topRightBorderBox: Path;\n readonly bottomRightBorderBox: Path;\n readonly bottomLeftBorderBox: Path;\n readonly topLeftPaddingBox: Path;\n readonly topRightPaddingBox: Path;\n readonly bottomRightPaddingBox: Path;\n readonly bottomLeftPaddingBox: Path;\n readonly topLeftContentBox: Path;\n readonly topRightContentBox: Path;\n readonly bottomRightContentBox: Path;\n readonly bottomLeftContentBox: Path;\n\n constructor(element: ElementContainer) {\n const styles = element.styles;\n const bounds = element.bounds;\n\n let [tlh, tlv] = getAbsoluteValueForTuple(styles.borderTopLeftRadius, bounds.width, bounds.height);\n let [trh, trv] = getAbsoluteValueForTuple(styles.borderTopRightRadius, bounds.width, bounds.height);\n let [brh, brv] = getAbsoluteValueForTuple(styles.borderBottomRightRadius, bounds.width, bounds.height);\n let [blh, blv] = getAbsoluteValueForTuple(styles.borderBottomLeftRadius, bounds.width, bounds.height);\n\n const factors = [];\n factors.push((tlh + trh) / bounds.width);\n factors.push((blh + brh) / bounds.width);\n factors.push((tlv + blv) / bounds.height);\n factors.push((trv + brv) / bounds.height);\n const maxFactor = Math.max(...factors);\n\n if (maxFactor > 1) {\n tlh /= maxFactor;\n tlv /= maxFactor;\n trh /= maxFactor;\n trv /= maxFactor;\n brh /= maxFactor;\n brv /= maxFactor;\n blh /= maxFactor;\n blv /= maxFactor;\n }\n\n const topWidth = bounds.width - trh;\n const rightHeight = bounds.height - brv;\n const bottomWidth = bounds.width - brh;\n const leftHeight = bounds.height - blv;\n\n const borderTopWidth = styles.borderTopWidth;\n const borderRightWidth = styles.borderRightWidth;\n const borderBottomWidth = styles.borderBottomWidth;\n const borderLeftWidth = styles.borderLeftWidth;\n\n const paddingTop = getAbsoluteValue(styles.paddingTop, element.bounds.width);\n const paddingRight = getAbsoluteValue(styles.paddingRight, element.bounds.width);\n const paddingBottom = getAbsoluteValue(styles.paddingBottom, element.bounds.width);\n const paddingLeft = getAbsoluteValue(styles.paddingLeft, element.bounds.width);\n\n this.topLeftBorderDoubleOuterBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(\n bounds.left + borderLeftWidth / 3,\n bounds.top + borderTopWidth / 3,\n tlh - borderLeftWidth / 3,\n tlv - borderTopWidth / 3,\n CORNER.TOP_LEFT\n )\n : new Vector(bounds.left + borderLeftWidth / 3, bounds.top + borderTopWidth / 3);\n this.topRightBorderDoubleOuterBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(\n bounds.left + topWidth,\n bounds.top + borderTopWidth / 3,\n trh - borderRightWidth / 3,\n trv - borderTopWidth / 3,\n CORNER.TOP_RIGHT\n )\n : new Vector(bounds.left + bounds.width - borderRightWidth / 3, bounds.top + borderTopWidth / 3);\n this.bottomRightBorderDoubleOuterBox =\n brh > 0 || brv > 0\n ? getCurvePoints(\n bounds.left + bottomWidth,\n bounds.top + rightHeight,\n brh - borderRightWidth / 3,\n brv - borderBottomWidth / 3,\n CORNER.BOTTOM_RIGHT\n )\n : new Vector(\n bounds.left + bounds.width - borderRightWidth / 3,\n bounds.top + bounds.height - borderBottomWidth / 3\n );\n this.bottomLeftBorderDoubleOuterBox =\n blh > 0 || blv > 0\n ? getCurvePoints(\n bounds.left + borderLeftWidth / 3,\n bounds.top + leftHeight,\n blh - borderLeftWidth / 3,\n blv - borderBottomWidth / 3,\n CORNER.BOTTOM_LEFT\n )\n : new Vector(bounds.left + borderLeftWidth / 3, bounds.top + bounds.height - borderBottomWidth / 3);\n this.topLeftBorderDoubleInnerBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(\n bounds.left + (borderLeftWidth * 2) / 3,\n bounds.top + (borderTopWidth * 2) / 3,\n tlh - (borderLeftWidth * 2) / 3,\n tlv - (borderTopWidth * 2) / 3,\n CORNER.TOP_LEFT\n )\n : new Vector(bounds.left + (borderLeftWidth * 2) / 3, bounds.top + (borderTopWidth * 2) / 3);\n this.topRightBorderDoubleInnerBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(\n bounds.left + topWidth,\n bounds.top + (borderTopWidth * 2) / 3,\n trh - (borderRightWidth * 2) / 3,\n trv - (borderTopWidth * 2) / 3,\n CORNER.TOP_RIGHT\n )\n : new Vector(\n bounds.left + bounds.width - (borderRightWidth * 2) / 3,\n bounds.top + (borderTopWidth * 2) / 3\n );\n this.bottomRightBorderDoubleInnerBox =\n brh > 0 || brv > 0\n ? getCurvePoints(\n bounds.left + bottomWidth,\n bounds.top + rightHeight,\n brh - (borderRightWidth * 2) / 3,\n brv - (borderBottomWidth * 2) / 3,\n CORNER.BOTTOM_RIGHT\n )\n : new Vector(\n bounds.left + bounds.width - (borderRightWidth * 2) / 3,\n bounds.top + bounds.height - (borderBottomWidth * 2) / 3\n );\n this.bottomLeftBorderDoubleInnerBox =\n blh > 0 || blv > 0\n ? getCurvePoints(\n bounds.left + (borderLeftWidth * 2) / 3,\n bounds.top + leftHeight,\n blh - (borderLeftWidth * 2) / 3,\n blv - (borderBottomWidth * 2) / 3,\n CORNER.BOTTOM_LEFT\n )\n : new Vector(\n bounds.left + (borderLeftWidth * 2) / 3,\n bounds.top + bounds.height - (borderBottomWidth * 2) / 3\n );\n this.topLeftBorderStroke =\n tlh > 0 || tlv > 0\n ? getCurvePoints(\n bounds.left + borderLeftWidth / 2,\n bounds.top + borderTopWidth / 2,\n tlh - borderLeftWidth / 2,\n tlv - borderTopWidth / 2,\n CORNER.TOP_LEFT\n )\n : new Vector(bounds.left + borderLeftWidth / 2, bounds.top + borderTopWidth / 2);\n this.topRightBorderStroke =\n tlh > 0 || tlv > 0\n ? getCurvePoints(\n bounds.left + topWidth,\n bounds.top + borderTopWidth / 2,\n trh - borderRightWidth / 2,\n trv - borderTopWidth / 2,\n CORNER.TOP_RIGHT\n )\n : new Vector(bounds.left + bounds.width - borderRightWidth / 2, bounds.top + borderTopWidth / 2);\n this.bottomRightBorderStroke =\n brh > 0 || brv > 0\n ? getCurvePoints(\n bounds.left + bottomWidth,\n bounds.top + rightHeight,\n brh - borderRightWidth / 2,\n brv - borderBottomWidth / 2,\n CORNER.BOTTOM_RIGHT\n )\n : new Vector(\n bounds.left + bounds.width - borderRightWidth / 2,\n bounds.top + bounds.height - borderBottomWidth / 2\n );\n this.bottomLeftBorderStroke =\n blh > 0 || blv > 0\n ? getCurvePoints(\n bounds.left + borderLeftWidth / 2,\n bounds.top + leftHeight,\n blh - borderLeftWidth / 2,\n blv - borderBottomWidth / 2,\n CORNER.BOTTOM_LEFT\n )\n : new Vector(bounds.left + borderLeftWidth / 2, bounds.top + bounds.height - borderBottomWidth / 2);\n this.topLeftBorderBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(bounds.left, bounds.top, tlh, tlv, CORNER.TOP_LEFT)\n : new Vector(bounds.left, bounds.top);\n this.topRightBorderBox =\n trh > 0 || trv > 0\n ? getCurvePoints(bounds.left + topWidth, bounds.top, trh, trv, CORNER.TOP_RIGHT)\n : new Vector(bounds.left + bounds.width, bounds.top);\n this.bottomRightBorderBox =\n brh > 0 || brv > 0\n ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh, brv, CORNER.BOTTOM_RIGHT)\n : new Vector(bounds.left + bounds.width, bounds.top + bounds.height);\n this.bottomLeftBorderBox =\n blh > 0 || blv > 0\n ? getCurvePoints(bounds.left, bounds.top + leftHeight, blh, blv, CORNER.BOTTOM_LEFT)\n : new Vector(bounds.left, bounds.top + bounds.height);\n this.topLeftPaddingBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(\n bounds.left + borderLeftWidth,\n bounds.top + borderTopWidth,\n Math.max(0, tlh - borderLeftWidth),\n Math.max(0, tlv - borderTopWidth),\n CORNER.TOP_LEFT\n )\n : new Vector(bounds.left + borderLeftWidth, bounds.top + borderTopWidth);\n this.topRightPaddingBox =\n trh > 0 || trv > 0\n ? getCurvePoints(\n bounds.left + Math.min(topWidth, bounds.width - borderRightWidth),\n bounds.top + borderTopWidth,\n topWidth > bounds.width + borderRightWidth ? 0 : Math.max(0, trh - borderRightWidth),\n Math.max(0, trv - borderTopWidth),\n CORNER.TOP_RIGHT\n )\n : new Vector(bounds.left + bounds.width - borderRightWidth, bounds.top + borderTopWidth);\n this.bottomRightPaddingBox =\n brh > 0 || brv > 0\n ? getCurvePoints(\n bounds.left + Math.min(bottomWidth, bounds.width - borderLeftWidth),\n bounds.top + Math.min(rightHeight, bounds.height - borderBottomWidth),\n Math.max(0, brh - borderRightWidth),\n Math.max(0, brv - borderBottomWidth),\n CORNER.BOTTOM_RIGHT\n )\n : new Vector(\n bounds.left + bounds.width - borderRightWidth,\n bounds.top + bounds.height - borderBottomWidth\n );\n this.bottomLeftPaddingBox =\n blh > 0 || blv > 0\n ? getCurvePoints(\n bounds.left + borderLeftWidth,\n bounds.top + Math.min(leftHeight, bounds.height - borderBottomWidth),\n Math.max(0, blh - borderLeftWidth),\n Math.max(0, blv - borderBottomWidth),\n CORNER.BOTTOM_LEFT\n )\n : new Vector(bounds.left + borderLeftWidth, bounds.top + bounds.height - borderBottomWidth);\n this.topLeftContentBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(\n bounds.left + borderLeftWidth + paddingLeft,\n bounds.top + borderTopWidth + paddingTop,\n Math.max(0, tlh - (borderLeftWidth + paddingLeft)),\n Math.max(0, tlv - (borderTopWidth + paddingTop)),\n CORNER.TOP_LEFT\n )\n : new Vector(bounds.left + borderLeftWidth + paddingLeft, bounds.top + borderTopWidth + paddingTop);\n this.topRightContentBox =\n trh > 0 || trv > 0\n ? getCurvePoints(\n bounds.left + Math.min(topWidth, bounds.width + borderLeftWidth + paddingLeft),\n bounds.top + borderTopWidth + paddingTop,\n topWidth > bounds.width + borderLeftWidth + paddingLeft ? 0 : trh - borderLeftWidth + paddingLeft,\n trv - (borderTopWidth + paddingTop),\n CORNER.TOP_RIGHT\n )\n : new Vector(\n bounds.left + bounds.width - (borderRightWidth + paddingRight),\n bounds.top + borderTopWidth + paddingTop\n );\n this.bottomRightContentBox =\n brh > 0 || brv > 0\n ? getCurvePoints(\n bounds.left + Math.min(bottomWidth, bounds.width - (borderLeftWidth + paddingLeft)),\n bounds.top + Math.min(rightHeight, bounds.height + borderTopWidth + paddingTop),\n Math.max(0, brh - (borderRightWidth + paddingRight)),\n brv - (borderBottomWidth + paddingBottom),\n CORNER.BOTTOM_RIGHT\n )\n : new Vector(\n bounds.left + bounds.width - (borderRightWidth + paddingRight),\n bounds.top + bounds.height - (borderBottomWidth + paddingBottom)\n );\n this.bottomLeftContentBox =\n blh > 0 || blv > 0\n ? getCurvePoints(\n bounds.left + borderLeftWidth + paddingLeft,\n bounds.top + leftHeight,\n Math.max(0, blh - (borderLeftWidth + paddingLeft)),\n blv - (borderBottomWidth + paddingBottom),\n CORNER.BOTTOM_LEFT\n )\n : new Vector(\n bounds.left + borderLeftWidth + paddingLeft,\n bounds.top + bounds.height - (borderBottomWidth + paddingBottom)\n );\n }\n}\n\nenum CORNER {\n TOP_LEFT = 0,\n TOP_RIGHT = 1,\n BOTTOM_RIGHT = 2,\n BOTTOM_LEFT = 3\n}\n\nconst getCurvePoints = (x: number, y: number, r1: number, r2: number, position: CORNER): BezierCurve => {\n const kappa = 4 * ((Math.sqrt(2) - 1) / 3);\n const ox = r1 * kappa; // control point offset horizontal\n const oy = r2 * kappa; // control point offset vertical\n const xm = x + r1; // x-middle\n const ym = y + r2; // y-middle\n\n switch (position) {\n case CORNER.TOP_LEFT:\n return new BezierCurve(\n new Vector(x, ym),\n new Vector(x, ym - oy),\n new Vector(xm - ox, y),\n new Vector(xm, y)\n );\n case CORNER.TOP_RIGHT:\n return new BezierCurve(\n new Vector(x, y),\n new Vector(x + ox, y),\n new Vector(xm, ym - oy),\n new Vector(xm, ym)\n );\n case CORNER.BOTTOM_RIGHT:\n return new BezierCurve(\n new Vector(xm, y),\n new Vector(xm, y + oy),\n new Vector(x + ox, ym),\n new Vector(x, ym)\n );\n case CORNER.BOTTOM_LEFT:\n default:\n return new BezierCurve(\n new Vector(xm, ym),\n new Vector(xm - ox, ym),\n new Vector(x, y + oy),\n new Vector(x, y)\n );\n }\n};\n\nexport const calculateBorderBoxPath = (curves: BoundCurves): Path[] => {\n return [curves.topLeftBorderBox, curves.topRightBorderBox, curves.bottomRightBorderBox, curves.bottomLeftBorderBox];\n};\n\nexport const calculateContentBoxPath = (curves: BoundCurves): Path[] => {\n return [\n curves.topLeftContentBox,\n curves.topRightContentBox,\n curves.bottomRightContentBox,\n curves.bottomLeftContentBox\n ];\n};\n\nexport const calculatePaddingBoxPath = (curves: BoundCurves): Path[] => {\n return [\n curves.topLeftPaddingBox,\n curves.topRightPaddingBox,\n curves.bottomRightPaddingBox,\n curves.bottomLeftPaddingBox\n ];\n};\n","import { Matrix } from '../css/property-descriptors/transform';\nimport { Path } from './path';\n\nexport const enum EffectType {\n TRANSFORM = 0,\n CLIP = 1,\n OPACITY = 2\n}\n\nexport const enum EffectTarget {\n BACKGROUND_BORDERS = 1 << 1,\n CONTENT = 1 << 2\n}\n\nexport interface IElementEffect {\n readonly type: EffectType;\n readonly target: number;\n}\n\nexport class TransformEffect implements IElementEffect {\n readonly type: EffectType = EffectType.TRANSFORM;\n readonly target: number = EffectTarget.BACKGROUND_BORDERS | EffectTarget.CONTENT;\n\n constructor(readonly offsetX: number, readonly offsetY: number, readonly matrix: Matrix) {}\n}\n\nexport class ClipEffect implements IElementEffect {\n readonly type: EffectType = EffectType.CLIP;\n\n constructor(readonly path: Path[], readonly target: EffectTarget) {}\n}\n\nexport class OpacityEffect implements IElementEffect {\n readonly type: EffectType = EffectType.OPACITY;\n readonly target: number = EffectTarget.BACKGROUND_BORDERS | EffectTarget.CONTENT;\n\n constructor(readonly opacity: number) {}\n}\n\nexport const isTransformEffect = (effect: IElementEffect): effect is TransformEffect =>\n effect.type === EffectType.TRANSFORM;\nexport const isClipEffect = (effect: IElementEffect): effect is ClipEffect => effect.type === EffectType.CLIP;\nexport const isOpacityEffect = (effect: IElementEffect): effect is OpacityEffect => effect.type === EffectType.OPACITY;\n","import { BezierCurve } from './bezier-curve';\nimport { Vector } from './vector';\nexport const enum PathType {\n VECTOR = 0,\n BEZIER_CURVE = 1\n}\n\nexport interface IPath {\n type: PathType;\n add(deltaX: number, deltaY: number): IPath;\n}\n\nexport const equalPath = (a: Path[], b: Path[]): boolean => {\n if (a.length === b.length) {\n return a.some((v, i) => v === b[i]);\n }\n\n return false;\n};\n\nexport const transformPath = (path: Path[], deltaX: number, deltaY: number, deltaW: number, deltaH: number): Path[] => {\n return path.map((point, index) => {\n switch (index) {\n case 0:\n return point.add(deltaX, deltaY);\n case 1:\n return point.add(deltaX + deltaW, deltaY);\n case 2:\n return point.add(deltaX + deltaW, deltaY + deltaH);\n case 3:\n return point.add(deltaX, deltaY + deltaH);\n }\n return point;\n });\n};\n\nexport type Path = Vector | BezierCurve;\n","import { ElementContainer, FLAGS } from '../dom/element-container';\nimport { contains } from '../core/bitwise';\nimport { BoundCurves, calculateBorderBoxPath, calculatePaddingBoxPath } from './bound-curves';\nimport { ClipEffect, EffectTarget, IElementEffect, isClipEffect, OpacityEffect, TransformEffect } from './effects';\nimport { OVERFLOW } from '../css/property-descriptors/overflow';\nimport { equalPath } from './path';\nimport { DISPLAY } from '../css/property-descriptors/display';\nimport { OLElementContainer } from '../dom/elements/ol-element-container';\nimport { LIElementContainer } from '../dom/elements/li-element-container';\nimport { createCounterText } from '../css/types/functions/counter';\nimport { POSITION } from '../css/property-descriptors/position';\n\nexport class StackingContext {\n element: ElementPaint;\n negativeZIndex: StackingContext[];\n zeroOrAutoZIndexOrTransformedOrOpacity: StackingContext[];\n positiveZIndex: StackingContext[];\n nonPositionedFloats: StackingContext[];\n nonPositionedInlineLevel: StackingContext[];\n inlineLevel: ElementPaint[];\n nonInlineLevel: ElementPaint[];\n\n constructor(container: ElementPaint) {\n this.element = container;\n this.inlineLevel = [];\n this.nonInlineLevel = [];\n this.negativeZIndex = [];\n this.zeroOrAutoZIndexOrTransformedOrOpacity = [];\n this.positiveZIndex = [];\n this.nonPositionedFloats = [];\n this.nonPositionedInlineLevel = [];\n }\n}\n\nexport class ElementPaint {\n readonly effects: IElementEffect[] = [];\n readonly curves: BoundCurves;\n listValue?: string;\n\n constructor(readonly container: ElementContainer, readonly parent: ElementPaint | null) {\n this.curves = new BoundCurves(this.container);\n if (this.container.styles.opacity < 1) {\n this.effects.push(new OpacityEffect(this.container.styles.opacity));\n }\n\n if (this.container.styles.transform !== null) {\n const offsetX = this.container.bounds.left + this.container.styles.transformOrigin[0].number;\n const offsetY = this.container.bounds.top + this.container.styles.transformOrigin[1].number;\n const matrix = this.container.styles.transform;\n this.effects.push(new TransformEffect(offsetX, offsetY, matrix));\n }\n\n if (this.container.styles.overflowX !== OVERFLOW.VISIBLE) {\n const borderBox = calculateBorderBoxPath(this.curves);\n const paddingBox = calculatePaddingBoxPath(this.curves);\n\n if (equalPath(borderBox, paddingBox)) {\n this.effects.push(new ClipEffect(borderBox, EffectTarget.BACKGROUND_BORDERS | EffectTarget.CONTENT));\n } else {\n this.effects.push(new ClipEffect(borderBox, EffectTarget.BACKGROUND_BORDERS));\n this.effects.push(new ClipEffect(paddingBox, EffectTarget.CONTENT));\n }\n }\n }\n\n getEffects(target: EffectTarget): IElementEffect[] {\n let inFlow = [POSITION.ABSOLUTE, POSITION.FIXED].indexOf(this.container.styles.position) === -1;\n let parent = this.parent;\n const effects = this.effects.slice(0);\n while (parent) {\n const croplessEffects = parent.effects.filter((effect) => !isClipEffect(effect));\n if (inFlow || parent.container.styles.position !== POSITION.STATIC || !parent.parent) {\n inFlow = [POSITION.ABSOLUTE, POSITION.FIXED].indexOf(parent.container.styles.position) === -1;\n if (parent.container.styles.overflowX !== OVERFLOW.VISIBLE) {\n const borderBox = calculateBorderBoxPath(parent.curves);\n const paddingBox = calculatePaddingBoxPath(parent.curves);\n if (!equalPath(borderBox, paddingBox)) {\n effects.unshift(\n new ClipEffect(paddingBox, EffectTarget.BACKGROUND_BORDERS | EffectTarget.CONTENT)\n );\n }\n }\n effects.unshift(...croplessEffects);\n } else {\n effects.unshift(...croplessEffects);\n }\n\n parent = parent.parent;\n }\n\n return effects.filter((effect) => contains(effect.target, target));\n }\n}\n\nconst parseStackTree = (\n parent: ElementPaint,\n stackingContext: StackingContext,\n realStackingContext: StackingContext,\n listItems: ElementPaint[]\n) => {\n parent.container.elements.forEach((child) => {\n const treatAsRealStackingContext = contains(child.flags, FLAGS.CREATES_REAL_STACKING_CONTEXT);\n const createsStackingContext = contains(child.flags, FLAGS.CREATES_STACKING_CONTEXT);\n const paintContainer = new ElementPaint(child, parent);\n if (contains(child.styles.display, DISPLAY.LIST_ITEM)) {\n listItems.push(paintContainer);\n }\n\n const listOwnerItems = contains(child.flags, FLAGS.IS_LIST_OWNER) ? [] : listItems;\n\n if (treatAsRealStackingContext || createsStackingContext) {\n const parentStack =\n treatAsRealStackingContext || child.styles.isPositioned() ? realStackingContext : stackingContext;\n\n const stack = new StackingContext(paintContainer);\n\n if (child.styles.isPositioned() || child.styles.opacity < 1 || child.styles.isTransformed()) {\n const order = child.styles.zIndex.order;\n if (order < 0) {\n let index = 0;\n\n parentStack.negativeZIndex.some((current, i) => {\n if (order > current.element.container.styles.zIndex.order) {\n index = i;\n return false;\n } else if (index > 0) {\n return true;\n }\n\n return false;\n });\n parentStack.negativeZIndex.splice(index, 0, stack);\n } else if (order > 0) {\n let index = 0;\n parentStack.positiveZIndex.some((current, i) => {\n if (order >= current.element.container.styles.zIndex.order) {\n index = i + 1;\n return false;\n } else if (index > 0) {\n return true;\n }\n\n return false;\n });\n parentStack.positiveZIndex.splice(index, 0, stack);\n } else {\n parentStack.zeroOrAutoZIndexOrTransformedOrOpacity.push(stack);\n }\n } else {\n if (child.styles.isFloating()) {\n parentStack.nonPositionedFloats.push(stack);\n } else {\n parentStack.nonPositionedInlineLevel.push(stack);\n }\n }\n\n parseStackTree(\n paintContainer,\n stack,\n treatAsRealStackingContext ? stack : realStackingContext,\n listOwnerItems\n );\n } else {\n if (child.styles.isInlineLevel()) {\n stackingContext.inlineLevel.push(paintContainer);\n } else {\n stackingContext.nonInlineLevel.push(paintContainer);\n }\n\n parseStackTree(paintContainer, stackingContext, realStackingContext, listOwnerItems);\n }\n\n if (contains(child.flags, FLAGS.IS_LIST_OWNER)) {\n processListItems(child, listOwnerItems);\n }\n });\n};\n\nconst processListItems = (owner: ElementContainer, elements: ElementPaint[]) => {\n let numbering = owner instanceof OLElementContainer ? owner.start : 1;\n const reversed = owner instanceof OLElementContainer ? owner.reversed : false;\n for (let i = 0; i < elements.length; i++) {\n const item = elements[i];\n if (\n item.container instanceof LIElementContainer &&\n typeof item.container.value === 'number' &&\n item.container.value !== 0\n ) {\n numbering = item.container.value;\n }\n\n item.listValue = createCounterText(numbering, item.container.styles.listStyleType, true);\n\n numbering += reversed ? -1 : 1;\n }\n};\n\nexport const parseStackingContexts = (container: ElementContainer): StackingContext => {\n const paintContainer = new ElementPaint(container, null);\n const root = new StackingContext(paintContainer);\n const listItems: ElementPaint[] = [];\n parseStackTree(paintContainer, root, root, listItems);\n processListItems(paintContainer.container, listItems);\n return root;\n};\n","import { Path } from './path';\nimport { BoundCurves } from './bound-curves';\nimport { isBezierCurve } from './bezier-curve';\n\nexport const parsePathForBorder = (curves: BoundCurves, borderSide: number): Path[] => {\n switch (borderSide) {\n case 0:\n return createPathFromCurves(\n curves.topLeftBorderBox,\n curves.topLeftPaddingBox,\n curves.topRightBorderBox,\n curves.topRightPaddingBox\n );\n case 1:\n return createPathFromCurves(\n curves.topRightBorderBox,\n curves.topRightPaddingBox,\n curves.bottomRightBorderBox,\n curves.bottomRightPaddingBox\n );\n case 2:\n return createPathFromCurves(\n curves.bottomRightBorderBox,\n curves.bottomRightPaddingBox,\n curves.bottomLeftBorderBox,\n curves.bottomLeftPaddingBox\n );\n case 3:\n default:\n return createPathFromCurves(\n curves.bottomLeftBorderBox,\n curves.bottomLeftPaddingBox,\n curves.topLeftBorderBox,\n curves.topLeftPaddingBox\n );\n }\n};\n\nexport const parsePathForBorderDoubleOuter = (curves: BoundCurves, borderSide: number): Path[] => {\n switch (borderSide) {\n case 0:\n return createPathFromCurves(\n curves.topLeftBorderBox,\n curves.topLeftBorderDoubleOuterBox,\n curves.topRightBorderBox,\n curves.topRightBorderDoubleOuterBox\n );\n case 1:\n return createPathFromCurves(\n curves.topRightBorderBox,\n curves.topRightBorderDoubleOuterBox,\n curves.bottomRightBorderBox,\n curves.bottomRightBorderDoubleOuterBox\n );\n case 2:\n return createPathFromCurves(\n curves.bottomRightBorderBox,\n curves.bottomRightBorderDoubleOuterBox,\n curves.bottomLeftBorderBox,\n curves.bottomLeftBorderDoubleOuterBox\n );\n case 3:\n default:\n return createPathFromCurves(\n curves.bottomLeftBorderBox,\n curves.bottomLeftBorderDoubleOuterBox,\n curves.topLeftBorderBox,\n curves.topLeftBorderDoubleOuterBox\n );\n }\n};\n\nexport const parsePathForBorderDoubleInner = (curves: BoundCurves, borderSide: number): Path[] => {\n switch (borderSide) {\n case 0:\n return createPathFromCurves(\n curves.topLeftBorderDoubleInnerBox,\n curves.topLeftPaddingBox,\n curves.topRightBorderDoubleInnerBox,\n curves.topRightPaddingBox\n );\n case 1:\n return createPathFromCurves(\n curves.topRightBorderDoubleInnerBox,\n curves.topRightPaddingBox,\n curves.bottomRightBorderDoubleInnerBox,\n curves.bottomRightPaddingBox\n );\n case 2:\n return createPathFromCurves(\n curves.bottomRightBorderDoubleInnerBox,\n curves.bottomRightPaddingBox,\n curves.bottomLeftBorderDoubleInnerBox,\n curves.bottomLeftPaddingBox\n );\n case 3:\n default:\n return createPathFromCurves(\n curves.bottomLeftBorderDoubleInnerBox,\n curves.bottomLeftPaddingBox,\n curves.topLeftBorderDoubleInnerBox,\n curves.topLeftPaddingBox\n );\n }\n};\n\nexport const parsePathForBorderStroke = (curves: BoundCurves, borderSide: number): Path[] => {\n switch (borderSide) {\n case 0:\n return createStrokePathFromCurves(curves.topLeftBorderStroke, curves.topRightBorderStroke);\n case 1:\n return createStrokePathFromCurves(curves.topRightBorderStroke, curves.bottomRightBorderStroke);\n case 2:\n return createStrokePathFromCurves(curves.bottomRightBorderStroke, curves.bottomLeftBorderStroke);\n case 3:\n default:\n return createStrokePathFromCurves(curves.bottomLeftBorderStroke, curves.topLeftBorderStroke);\n }\n};\n\nconst createStrokePathFromCurves = (outer1: Path, outer2: Path): Path[] => {\n const path = [];\n if (isBezierCurve(outer1)) {\n path.push(outer1.subdivide(0.5, false));\n } else {\n path.push(outer1);\n }\n\n if (isBezierCurve(outer2)) {\n path.push(outer2.subdivide(0.5, true));\n } else {\n path.push(outer2);\n }\n\n return path;\n};\n\nconst createPathFromCurves = (outer1: Path, inner1: Path, outer2: Path, inner2: Path): Path[] => {\n const path = [];\n if (isBezierCurve(outer1)) {\n path.push(outer1.subdivide(0.5, false));\n } else {\n path.push(outer1);\n }\n\n if (isBezierCurve(outer2)) {\n path.push(outer2.subdivide(0.5, true));\n } else {\n path.push(outer2);\n }\n\n if (isBezierCurve(inner2)) {\n path.push(inner2.subdivide(0.5, true).reverse());\n } else {\n path.push(inner2);\n }\n\n if (isBezierCurve(inner1)) {\n path.push(inner1.subdivide(0.5, false).reverse());\n } else {\n path.push(inner1);\n }\n\n return path;\n};\n","import { getAbsoluteValue } from '../css/types/length-percentage';\nimport { Bounds } from '../css/layout/bounds';\nimport { ElementContainer } from '../dom/element-container';\n\nexport const paddingBox = (element: ElementContainer): Bounds => {\n const bounds = element.bounds;\n const styles = element.styles;\n return bounds.add(\n styles.borderLeftWidth,\n styles.borderTopWidth,\n -(styles.borderRightWidth + styles.borderLeftWidth),\n -(styles.borderTopWidth + styles.borderBottomWidth)\n );\n};\n\nexport const contentBox = (element: ElementContainer): Bounds => {\n const styles = element.styles;\n const bounds = element.bounds;\n\n const paddingLeft = getAbsoluteValue(styles.paddingLeft, bounds.width);\n const paddingRight = getAbsoluteValue(styles.paddingRight, bounds.width);\n const paddingTop = getAbsoluteValue(styles.paddingTop, bounds.width);\n const paddingBottom = getAbsoluteValue(styles.paddingBottom, bounds.width);\n\n return bounds.add(\n paddingLeft + styles.borderLeftWidth,\n paddingTop + styles.borderTopWidth,\n -(styles.borderRightWidth + styles.borderLeftWidth + paddingLeft + paddingRight),\n -(styles.borderTopWidth + styles.borderBottomWidth + paddingTop + paddingBottom)\n );\n};\n","import { Bounds } from '../css/layout/bounds';\nimport { BACKGROUND_ORIGIN } from '../css/property-descriptors/background-origin';\nimport { ElementContainer } from '../dom/element-container';\nimport { BACKGROUND_SIZE, BackgroundSizeInfo } from '../css/property-descriptors/background-size';\nimport { Vector } from './vector';\nimport { BACKGROUND_REPEAT } from '../css/property-descriptors/background-repeat';\nimport { getAbsoluteValue, getAbsoluteValueForTuple, isLengthPercentage } from '../css/types/length-percentage';\nimport { CSSValue, isIdentToken } from '../css/syntax/parser';\nimport { contentBox, paddingBox } from './box-sizing';\nimport { Path } from './path';\nimport { BACKGROUND_CLIP } from '../css/property-descriptors/background-clip';\n\nexport const calculateBackgroundPositioningArea = (\n backgroundOrigin: BACKGROUND_ORIGIN,\n element: ElementContainer\n): Bounds => {\n if (backgroundOrigin === BACKGROUND_ORIGIN.BORDER_BOX) {\n return element.bounds;\n }\n\n if (backgroundOrigin === BACKGROUND_ORIGIN.CONTENT_BOX) {\n return contentBox(element);\n }\n\n return paddingBox(element);\n};\n\nexport const calculateBackgroundPaintingArea = (backgroundClip: BACKGROUND_CLIP, element: ElementContainer): Bounds => {\n if (backgroundClip === BACKGROUND_CLIP.BORDER_BOX) {\n return element.bounds;\n }\n\n if (backgroundClip === BACKGROUND_CLIP.CONTENT_BOX) {\n return contentBox(element);\n }\n\n return paddingBox(element);\n};\n\nexport const calculateBackgroundRendering = (\n container: ElementContainer,\n index: number,\n intrinsicSize: [number | null, number | null, number | null]\n): [Path[], number, number, number, number] => {\n const backgroundPositioningArea = calculateBackgroundPositioningArea(\n getBackgroundValueForIndex(container.styles.backgroundOrigin, index),\n container\n );\n\n const backgroundPaintingArea = calculateBackgroundPaintingArea(\n getBackgroundValueForIndex(container.styles.backgroundClip, index),\n container\n );\n\n const backgroundImageSize = calculateBackgroundSize(\n getBackgroundValueForIndex(container.styles.backgroundSize, index),\n intrinsicSize,\n backgroundPositioningArea\n );\n\n let [sizeWidth, sizeHeight] = backgroundImageSize;\n\n const position = getAbsoluteValueForTuple(\n getBackgroundValueForIndex(container.styles.backgroundPosition, index),\n backgroundPositioningArea.width - sizeWidth,\n backgroundPositioningArea.height - sizeHeight\n );\n\n const path = calculateBackgroundRepeatPath(\n getBackgroundValueForIndex(container.styles.backgroundRepeat, index),\n position,\n backgroundImageSize,\n backgroundPositioningArea,\n backgroundPaintingArea\n );\n\n const offsetX = Math.round(backgroundPositioningArea.left + position[0]);\n const offsetY = Math.round(backgroundPositioningArea.top + position[1]);\n\n sizeWidth = Math.max(1, sizeWidth);\n sizeHeight = Math.max(1, sizeHeight);\n\n return [path, offsetX, offsetY, sizeWidth, sizeHeight];\n};\n\nexport const isAuto = (token: CSSValue): boolean => isIdentToken(token) && token.value === BACKGROUND_SIZE.AUTO;\n\nconst hasIntrinsicValue = (value: number | null): value is number => typeof value === 'number';\n\nexport const calculateBackgroundSize = (\n size: BackgroundSizeInfo[],\n [intrinsicWidth, intrinsicHeight, intrinsicProportion]: [number | null, number | null, number | null],\n bounds: Bounds\n): [number, number] => {\n const [first, second] = size;\n\n if (!first) {\n return [0, 0];\n }\n\n if (isLengthPercentage(first) && second && isLengthPercentage(second)) {\n return [getAbsoluteValue(first, bounds.width), getAbsoluteValue(second, bounds.height)];\n }\n\n const hasIntrinsicProportion = hasIntrinsicValue(intrinsicProportion);\n\n if (isIdentToken(first) && (first.value === BACKGROUND_SIZE.CONTAIN || first.value === BACKGROUND_SIZE.COVER)) {\n if (hasIntrinsicValue(intrinsicProportion)) {\n const targetRatio = bounds.width / bounds.height;\n\n return targetRatio < intrinsicProportion !== (first.value === BACKGROUND_SIZE.COVER)\n ? [bounds.width, bounds.width / intrinsicProportion]\n : [bounds.height * intrinsicProportion, bounds.height];\n }\n\n return [bounds.width, bounds.height];\n }\n\n const hasIntrinsicWidth = hasIntrinsicValue(intrinsicWidth);\n const hasIntrinsicHeight = hasIntrinsicValue(intrinsicHeight);\n const hasIntrinsicDimensions = hasIntrinsicWidth || hasIntrinsicHeight;\n\n // If the background-size is auto or auto auto:\n if (isAuto(first) && (!second || isAuto(second))) {\n // If the image has both horizontal and vertical intrinsic dimensions, it's rendered at that size.\n if (hasIntrinsicWidth && hasIntrinsicHeight) {\n return [intrinsicWidth as number, intrinsicHeight as number];\n }\n\n // If the image has no intrinsic dimensions and has no intrinsic proportions,\n // it's rendered at the size of the background positioning area.\n\n if (!hasIntrinsicProportion && !hasIntrinsicDimensions) {\n return [bounds.width, bounds.height];\n }\n\n // TODO If the image has no intrinsic dimensions but has intrinsic proportions, it's rendered as if contain had been specified instead.\n\n // If the image has only one intrinsic dimension and has intrinsic proportions, it's rendered at the size corresponding to that one dimension.\n // The other dimension is computed using the specified dimension and the intrinsic proportions.\n if (hasIntrinsicDimensions && hasIntrinsicProportion) {\n const width = hasIntrinsicWidth\n ? (intrinsicWidth as number)\n : (intrinsicHeight as number) * (intrinsicProportion as number);\n const height = hasIntrinsicHeight\n ? (intrinsicHeight as number)\n : (intrinsicWidth as number) / (intrinsicProportion as number);\n return [width, height];\n }\n\n // If the image has only one intrinsic dimension but has no intrinsic proportions,\n // it's rendered using the specified dimension and the other dimension of the background positioning area.\n const width = hasIntrinsicWidth ? (intrinsicWidth as number) : bounds.width;\n const height = hasIntrinsicHeight ? (intrinsicHeight as number) : bounds.height;\n return [width, height];\n }\n\n // If the image has intrinsic proportions, it's stretched to the specified dimension.\n // The unspecified dimension is computed using the specified dimension and the intrinsic proportions.\n if (hasIntrinsicProportion) {\n let width = 0;\n let height = 0;\n if (isLengthPercentage(first)) {\n width = getAbsoluteValue(first, bounds.width);\n } else if (isLengthPercentage(second)) {\n height = getAbsoluteValue(second, bounds.height);\n }\n\n if (isAuto(first)) {\n width = height * (intrinsicProportion as number);\n } else if (!second || isAuto(second)) {\n height = width / (intrinsicProportion as number);\n }\n\n return [width, height];\n }\n\n // If the image has no intrinsic proportions, it's stretched to the specified dimension.\n // The unspecified dimension is computed using the image's corresponding intrinsic dimension,\n // if there is one. If there is no such intrinsic dimension,\n // it becomes the corresponding dimension of the background positioning area.\n\n let width = null;\n let height = null;\n\n if (isLengthPercentage(first)) {\n width = getAbsoluteValue(first, bounds.width);\n } else if (second && isLengthPercentage(second)) {\n height = getAbsoluteValue(second, bounds.height);\n }\n\n if (width !== null && (!second || isAuto(second))) {\n height =\n hasIntrinsicWidth && hasIntrinsicHeight\n ? (width / (intrinsicWidth as number)) * (intrinsicHeight as number)\n : bounds.height;\n }\n\n if (height !== null && isAuto(first)) {\n width =\n hasIntrinsicWidth && hasIntrinsicHeight\n ? (height / (intrinsicHeight as number)) * (intrinsicWidth as number)\n : bounds.width;\n }\n\n if (width !== null && height !== null) {\n return [width, height];\n }\n\n throw new Error(`Unable to calculate background-size for element`);\n};\n\nexport const getBackgroundValueForIndex = <T>(values: T[], index: number): T => {\n const value = values[index];\n if (typeof value === 'undefined') {\n return values[0];\n }\n\n return value;\n};\n\nexport const calculateBackgroundRepeatPath = (\n repeat: BACKGROUND_REPEAT,\n [x, y]: [number, number],\n [width, height]: [number, number],\n backgroundPositioningArea: Bounds,\n backgroundPaintingArea: Bounds\n): [Vector, Vector, Vector, Vector] => {\n switch (repeat) {\n case BACKGROUND_REPEAT.REPEAT_X:\n return [\n new Vector(Math.round(backgroundPositioningArea.left), Math.round(backgroundPositioningArea.top + y)),\n new Vector(\n Math.round(backgroundPositioningArea.left + backgroundPositioningArea.width),\n Math.round(backgroundPositioningArea.top + y)\n ),\n new Vector(\n Math.round(backgroundPositioningArea.left + backgroundPositioningArea.width),\n Math.round(height + backgroundPositioningArea.top + y)\n ),\n new Vector(\n Math.round(backgroundPositioningArea.left),\n Math.round(height + backgroundPositioningArea.top + y)\n )\n ];\n case BACKGROUND_REPEAT.REPEAT_Y:\n return [\n new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.top)),\n new Vector(\n Math.round(backgroundPositioningArea.left + x + width),\n Math.round(backgroundPositioningArea.top)\n ),\n new Vector(\n Math.round(backgroundPositioningArea.left + x + width),\n Math.round(backgroundPositioningArea.height + backgroundPositioningArea.top)\n ),\n new Vector(\n Math.round(backgroundPositioningArea.left + x),\n Math.round(backgroundPositioningArea.height + backgroundPositioningArea.top)\n )\n ];\n case BACKGROUND_REPEAT.NO_REPEAT:\n return [\n new Vector(\n Math.round(backgroundPositioningArea.left + x),\n Math.round(backgroundPositioningArea.top + y)\n ),\n new Vector(\n Math.round(backgroundPositioningArea.left + x + width),\n Math.round(backgroundPositioningArea.top + y)\n ),\n new Vector(\n Math.round(backgroundPositioningArea.left + x + width),\n Math.round(backgroundPositioningArea.top + y + height)\n ),\n new Vector(\n Math.round(backgroundPositioningArea.left + x),\n Math.round(backgroundPositioningArea.top + y + height)\n )\n ];\n default:\n return [\n new Vector(Math.round(backgroundPaintingArea.left), Math.round(backgroundPaintingArea.top)),\n new Vector(\n Math.round(backgroundPaintingArea.left + backgroundPaintingArea.width),\n Math.round(backgroundPaintingArea.top)\n ),\n new Vector(\n Math.round(backgroundPaintingArea.left + backgroundPaintingArea.width),\n Math.round(backgroundPaintingArea.height + backgroundPaintingArea.top)\n ),\n new Vector(\n Math.round(backgroundPaintingArea.left),\n Math.round(backgroundPaintingArea.height + backgroundPaintingArea.top)\n )\n ];\n }\n};\n","export const SMALL_IMAGE = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';\n","import { SMALL_IMAGE } from '../core/util';\nexport interface FontMetric {\n baseline: number;\n middle: number;\n}\n\nconst SAMPLE_TEXT = 'Hidden Text';\n\nexport class FontMetrics {\n private readonly _data: { [key: string]: FontMetric };\n private readonly _document: Document;\n\n constructor(document: Document) {\n this._data = {};\n this._document = document;\n }\n\n private parseMetrics(fontFamily: string, fontSize: string): FontMetric {\n const container = this._document.createElement('div');\n const img = this._document.createElement('img');\n const span = this._document.createElement('span');\n\n const body = this._document.body as HTMLBodyElement;\n\n container.style.visibility = 'hidden';\n container.style.fontFamily = fontFamily;\n container.style.fontSize = fontSize;\n container.style.margin = '0';\n container.style.padding = '0';\n container.style.whiteSpace = 'nowrap';\n\n body.appendChild(container);\n\n img.src = SMALL_IMAGE;\n img.width = 1;\n img.height = 1;\n\n img.style.margin = '0';\n img.style.padding = '0';\n img.style.verticalAlign = 'baseline';\n\n span.style.fontFamily = fontFamily;\n span.style.fontSize = fontSize;\n span.style.margin = '0';\n span.style.padding = '0';\n\n span.appendChild(this._document.createTextNode(SAMPLE_TEXT));\n container.appendChild(span);\n container.appendChild(img);\n const baseline = img.offsetTop - span.offsetTop + 2;\n\n container.removeChild(span);\n container.appendChild(this._document.createTextNode(SAMPLE_TEXT));\n\n container.style.lineHeight = 'normal';\n img.style.verticalAlign = 'super';\n\n const middle = img.offsetTop - container.offsetTop + 2;\n\n body.removeChild(container);\n\n return { baseline, middle };\n }\n getMetrics(fontFamily: string, fontSize: string): FontMetric {\n const key = `${fontFamily} ${fontSize}`;\n if (typeof this._data[key] === 'undefined') {\n this._data[key] = this.parseMetrics(fontFamily, fontSize);\n }\n\n return this._data[key];\n }\n}\n","import { Context } from '../core/context';\nimport { RenderConfigurations } from './canvas/canvas-renderer';\n\nexport class Renderer {\n constructor(protected readonly context: Context, protected readonly options: RenderConfigurations) {}\n}\n","import { ElementPaint, parseStackingContexts, StackingContext } from '../stacking-context';\nimport { Color } from '../../css/types/color';\nimport { asString, isTransparent } from '../../css/types/color-utilities';\nimport { ElementContainer, FLAGS } from '../../dom/element-container';\nimport { BORDER_STYLE } from '../../css/property-descriptors/border-style';\nimport { CSSParsedDeclaration } from '../../css';\nimport { TextContainer } from '../../dom/text-container';\nimport { Path, transformPath } from '../path';\nimport { BACKGROUND_CLIP } from '../../css/property-descriptors/background-clip';\nimport { BoundCurves, calculateBorderBoxPath, calculateContentBoxPath, calculatePaddingBoxPath } from '../bound-curves';\nimport { BezierCurve, isBezierCurve } from '../bezier-curve';\nimport { Vector } from '../vector';\nimport { CSSImageType, CSSURLImage, isLinearGradient, isRadialGradient } from '../../css/types/image';\nimport {\n parsePathForBorder,\n parsePathForBorderDoubleInner,\n parsePathForBorderDoubleOuter,\n parsePathForBorderStroke\n} from '../border';\nimport { calculateBackgroundRendering, getBackgroundValueForIndex } from '../background';\nimport { isDimensionToken } from '../../css/syntax/parser';\nimport { segmentGraphemes, TextBounds } from '../../css/layout/text';\nimport { ImageElementContainer } from '../../dom/replaced-elements/image-element-container';\nimport { contentBox } from '../box-sizing';\nimport { CanvasElementContainer } from '../../dom/replaced-elements/canvas-element-container';\nimport { SVGElementContainer } from '../../dom/replaced-elements/svg-element-container';\nimport { ReplacedElementContainer } from '../../dom/replaced-elements';\nimport { EffectTarget, IElementEffect, isClipEffect, isOpacityEffect, isTransformEffect } from '../effects';\nimport { contains } from '../../core/bitwise';\nimport { calculateGradientDirection, calculateRadius, processColorStops } from '../../css/types/functions/gradient';\nimport { FIFTY_PERCENT, getAbsoluteValue } from '../../css/types/length-percentage';\nimport { TEXT_DECORATION_LINE } from '../../css/property-descriptors/text-decoration-line';\nimport { FontMetrics } from '../font-metrics';\nimport { DISPLAY } from '../../css/property-descriptors/display';\nimport { Bounds } from '../../css/layout/bounds';\nimport { LIST_STYLE_TYPE } from '../../css/property-descriptors/list-style-type';\nimport { computeLineHeight } from '../../css/property-descriptors/line-height';\nimport {\n CHECKBOX,\n INPUT_COLOR,\n InputElementContainer,\n RADIO\n} from '../../dom/replaced-elements/input-element-container';\nimport { TEXT_ALIGN } from '../../css/property-descriptors/text-align';\nimport { TextareaElementContainer } from '../../dom/elements/textarea-element-container';\nimport { SelectElementContainer } from '../../dom/elements/select-element-container';\nimport { IFrameElementContainer } from '../../dom/replaced-elements/iframe-element-container';\nimport { TextShadow } from '../../css/property-descriptors/text-shadow';\nimport { PAINT_ORDER_LAYER } from '../../css/property-descriptors/paint-order';\nimport { Renderer } from '../renderer';\nimport { Context } from '../../core/context';\nimport { DIRECTION } from '../../css/property-descriptors/direction';\nimport { OBJECT_FIT } from '../../css/property-descriptors/object-fit';\n\nexport type RenderConfigurations = RenderOptions & {\n backgroundColor: Color | null;\n};\n\nexport interface RenderOptions {\n scale: number;\n canvas?: HTMLCanvasElement;\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\nconst MASK_OFFSET = 10000;\n\nexport class CanvasRenderer extends Renderer {\n canvas: HTMLCanvasElement;\n ctx: CanvasRenderingContext2D;\n private readonly _activeEffects: IElementEffect[] = [];\n private readonly fontMetrics: FontMetrics;\n\n constructor(context: Context, options: RenderConfigurations) {\n super(context, options);\n this.canvas = options.canvas ? options.canvas : document.createElement('canvas');\n this.ctx = this.canvas.getContext('2d') as CanvasRenderingContext2D;\n if (!options.canvas) {\n this.canvas.width = Math.floor(options.width * options.scale);\n this.canvas.height = Math.floor(options.height * options.scale);\n this.canvas.style.width = `${options.width}px`;\n this.canvas.style.height = `${options.height}px`;\n }\n this.fontMetrics = new FontMetrics(document);\n this.ctx.scale(this.options.scale, this.options.scale);\n this.ctx.translate(-options.x, -options.y);\n this.ctx.textBaseline = 'bottom';\n this._activeEffects = [];\n this.context.logger.debug(\n `Canvas renderer initialized (${options.width}x${options.height}) with scale ${options.scale}`\n );\n }\n\n applyEffects(effects: IElementEffect[]): void {\n while (this._activeEffects.length) {\n this.popEffect();\n }\n\n effects.forEach((effect) => this.applyEffect(effect));\n }\n\n applyEffect(effect: IElementEffect): void {\n this.ctx.save();\n if (isOpacityEffect(effect)) {\n this.ctx.globalAlpha = effect.opacity;\n }\n\n if (isTransformEffect(effect)) {\n this.ctx.translate(effect.offsetX, effect.offsetY);\n this.ctx.transform(\n effect.matrix[0],\n effect.matrix[1],\n effect.matrix[2],\n effect.matrix[3],\n effect.matrix[4],\n effect.matrix[5]\n );\n this.ctx.translate(-effect.offsetX, -effect.offsetY);\n }\n\n if (isClipEffect(effect)) {\n this.path(effect.path);\n this.ctx.clip();\n }\n\n this._activeEffects.push(effect);\n }\n\n popEffect(): void {\n this._activeEffects.pop();\n this.ctx.restore();\n }\n\n async renderStack(stack: StackingContext): Promise<void> {\n const styles = stack.element.container.styles;\n if (styles.isVisible()) {\n await this.renderStackContent(stack);\n }\n }\n\n async renderNode(paint: ElementPaint): Promise<void> {\n if (contains(paint.container.flags, FLAGS.DEBUG_RENDER)) {\n debugger;\n }\n\n if (paint.container.styles.isVisible()) {\n await this.renderNodeBackgroundAndBorders(paint);\n await this.renderNodeContent(paint);\n }\n }\n\n renderTextWithLetterSpacing(text: TextBounds, letterSpacing: number, baseline: number): void {\n if (letterSpacing === 0) {\n // Fixed an issue with characters moving up in non-Firefox.\n // https://github.com/niklasvh/html2canvas/issues/2107#issuecomment-692462900\n if (navigator.userAgent.indexOf('Firefox') === -1) {\n this.ctx.textBaseline = 'ideographic';\n this.ctx.fillText(text.text, text.bounds.left, text.bounds.top + text.bounds.height);\n } else {\n this.ctx.fillText(text.text, text.bounds.left, text.bounds.top + baseline);\n }\n } else {\n const letters = segmentGraphemes(text.text);\n letters.reduce((left, letter) => {\n this.ctx.fillText(letter, left, text.bounds.top + baseline);\n\n return left + this.ctx.measureText(letter).width;\n }, text.bounds.left);\n }\n }\n\n private createFontStyle(styles: CSSParsedDeclaration): string[] {\n const fontVariant = styles.fontVariant\n .filter((variant) => variant === 'normal' || variant === 'small-caps')\n .join('');\n const fontFamily = fixIOSSystemFonts(styles.fontFamily).join(', ');\n const fontSize = isDimensionToken(styles.fontSize)\n ? `${styles.fontSize.number}${styles.fontSize.unit}`\n : `${styles.fontSize.number}px`;\n\n return [\n [styles.fontStyle, fontVariant, styles.fontWeight, fontSize, fontFamily].join(' '),\n fontFamily,\n fontSize\n ];\n }\n\n async renderTextNode(text: TextContainer, styles: CSSParsedDeclaration): Promise<void> {\n const [font] = this.createFontStyle(styles);\n\n this.ctx.font = font;\n\n this.ctx.direction = styles.direction === DIRECTION.RTL ? 'rtl' : 'ltr';\n this.ctx.textAlign = 'left';\n this.ctx.textBaseline = 'alphabetic';\n const paintOrder = styles.paintOrder;\n\n text.textBounds.forEach((text) => {\n paintOrder.forEach((paintOrderLayer) => {\n switch (paintOrderLayer) {\n case PAINT_ORDER_LAYER.FILL:\n this.ctx.fillStyle = asString(styles.color);\n this.renderTextWithLetterSpacing(text, styles.letterSpacing, styles.fontSize.number);\n const textShadows: TextShadow = styles.textShadow;\n\n if (textShadows.length && text.text.trim().length) {\n textShadows\n .slice(0)\n .reverse()\n .forEach((textShadow) => {\n this.ctx.shadowColor = asString(textShadow.color);\n this.ctx.shadowOffsetX = textShadow.offsetX.number * this.options.scale;\n this.ctx.shadowOffsetY = textShadow.offsetY.number * this.options.scale;\n this.ctx.shadowBlur = textShadow.blur.number;\n\n this.renderTextWithLetterSpacing(\n text,\n styles.letterSpacing,\n styles.fontSize.number\n );\n });\n\n this.ctx.shadowColor = '';\n this.ctx.shadowOffsetX = 0;\n this.ctx.shadowOffsetY = 0;\n this.ctx.shadowBlur = 0;\n }\n\n if (styles.textDecorationLine.length) {\n this.ctx.fillStyle = asString(styles.textDecorationColor || styles.color);\n const decorationLineHeight = 1;\n styles.textDecorationLine.forEach((textDecorationLine) => {\n // Fix the issue where textDecorationLine exhibits x-axis positioning errors on high-resolution devices due to varying devicePixelRatio, corrected by using relative values of element heights.\n switch (textDecorationLine) {\n case TEXT_DECORATION_LINE.UNDERLINE:\n this.ctx.fillRect(\n text.bounds.left,\n text.bounds.top + text.bounds.height - decorationLineHeight,\n text.bounds.width,\n decorationLineHeight\n );\n break;\n case TEXT_DECORATION_LINE.OVERLINE:\n this.ctx.fillRect(\n text.bounds.left,\n text.bounds.top,\n text.bounds.width,\n decorationLineHeight\n );\n break;\n case TEXT_DECORATION_LINE.LINE_THROUGH:\n this.ctx.fillRect(\n text.bounds.left,\n text.bounds.top + (text.bounds.height / 2 - decorationLineHeight / 2),\n text.bounds.width,\n decorationLineHeight\n );\n break;\n }\n });\n }\n break;\n case PAINT_ORDER_LAYER.STROKE:\n if (styles.webkitTextStrokeWidth && text.text.trim().length) {\n this.ctx.strokeStyle = asString(styles.webkitTextStrokeColor);\n this.ctx.lineWidth = styles.webkitTextStrokeWidth;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.ctx.lineJoin = !!(window as any).chrome ? 'miter' : 'round';\n this.ctx.strokeText(text.text, text.bounds.left, text.bounds.top + text.bounds.height);\n }\n this.ctx.strokeStyle = '';\n this.ctx.lineWidth = 0;\n this.ctx.lineJoin = 'miter';\n break;\n }\n });\n });\n }\n\n renderReplacedElement(\n container: ReplacedElementContainer,\n curves: BoundCurves,\n image: HTMLImageElement | HTMLCanvasElement\n ): void {\n const intrinsicWidth = (image as HTMLImageElement).naturalWidth || container.intrinsicWidth;\n const intrinsicHeight = (image as HTMLImageElement).naturalHeight || container.intrinsicHeight;\n if (image && intrinsicWidth > 0 && intrinsicHeight > 0) {\n const box = contentBox(container);\n const path = calculatePaddingBoxPath(curves);\n this.path(path);\n this.ctx.save();\n this.ctx.clip();\n let sx = 0,\n sy = 0,\n sw: number = intrinsicWidth,\n sh: number = intrinsicHeight,\n dx: number = box.left,\n dy: number = box.top,\n dw: number = box.width,\n dh: number = box.height;\n const { objectFit } = container.styles;\n const boxRatio = dw / dh;\n const imgRatio = sw / sh;\n if (objectFit === OBJECT_FIT.CONTAIN) {\n if (imgRatio > boxRatio) {\n dh = dw / imgRatio;\n dy += (box.height - dh) / 2;\n } else {\n dw = dh * imgRatio;\n dx += (box.width - dw) / 2;\n }\n } else if (objectFit === OBJECT_FIT.COVER) {\n if (imgRatio > boxRatio) {\n sw = sh * boxRatio;\n sx += (intrinsicWidth - sw) / 2;\n } else {\n sh = sw / boxRatio;\n sy += (intrinsicHeight - sh) / 2;\n }\n } else if (objectFit === OBJECT_FIT.NONE) {\n if (sw > dw) {\n sx += (sw - dw) / 2;\n sw = dw;\n } else {\n dx += (dw - sw) / 2;\n dw = sw;\n }\n if (sh > dh) {\n sy += (sh - dh) / 2;\n sh = dh;\n } else {\n dy += (dh - sh) / 2;\n dh = sh;\n }\n } else if (objectFit === OBJECT_FIT.SCALE_DOWN) {\n const containW = imgRatio > boxRatio ? dw : dh * imgRatio;\n const noneW = sw > dw ? sw : dw;\n if (containW < noneW) {\n if (imgRatio > boxRatio) {\n dh = dw / imgRatio;\n dy += (box.height - dh) / 2;\n } else {\n dw = dh * imgRatio;\n dx += (box.width - dw) / 2;\n }\n } else {\n if (sw > dw) {\n sx += (sw - dw) / 2;\n sw = dw;\n } else {\n dx += (dw - sw) / 2;\n dw = sw;\n }\n if (sh > dh) {\n sy += (sh - dh) / 2;\n sh = dh;\n } else {\n dy += (dh - sh) / 2;\n dh = sh;\n }\n }\n }\n this.ctx.drawImage(image, sx, sy, sw, sh, dx, dy, dw, dh);\n this.ctx.restore();\n }\n }\n\n async renderNodeContent(paint: ElementPaint): Promise<void> {\n this.applyEffects(paint.getEffects(EffectTarget.CONTENT));\n const container = paint.container;\n const curves = paint.curves;\n const styles = container.styles;\n for (const child of container.textNodes) {\n await this.renderTextNode(child, styles);\n }\n\n if (container instanceof ImageElementContainer) {\n try {\n const image = await this.context.cache.match(container.src);\n this.renderReplacedElement(container, curves, image);\n } catch (e) {\n this.context.logger.error(`Error loading image ${container.src}`);\n }\n }\n\n if (container instanceof CanvasElementContainer) {\n this.renderReplacedElement(container, curves, container.canvas);\n }\n\n if (container instanceof SVGElementContainer) {\n try {\n const image = await this.context.cache.match(container.svg);\n this.renderReplacedElement(container, curves, image);\n } catch (e) {\n this.context.logger.error(`Error loading svg ${container.svg.substring(0, 255)}`);\n }\n }\n\n if (container instanceof IFrameElementContainer && container.tree) {\n const iframeRenderer = new CanvasRenderer(this.context, {\n scale: this.options.scale,\n backgroundColor: container.backgroundColor,\n x: 0,\n y: 0,\n width: container.width,\n height: container.height\n });\n\n const canvas = await iframeRenderer.render(container.tree);\n if (container.width && container.height) {\n this.ctx.drawImage(\n canvas,\n 0,\n 0,\n container.width,\n container.height,\n container.bounds.left,\n container.bounds.top,\n container.bounds.width,\n container.bounds.height\n );\n }\n }\n\n if (container instanceof InputElementContainer) {\n const size = Math.min(container.bounds.width, container.bounds.height);\n\n if (container.type === CHECKBOX) {\n if (container.checked) {\n this.ctx.save();\n this.path([\n new Vector(container.bounds.left + size * 0.39363, container.bounds.top + size * 0.79),\n new Vector(container.bounds.left + size * 0.16, container.bounds.top + size * 0.5549),\n new Vector(container.bounds.left + size * 0.27347, container.bounds.top + size * 0.44071),\n new Vector(container.bounds.left + size * 0.39694, container.bounds.top + size * 0.5649),\n new Vector(container.bounds.left + size * 0.72983, container.bounds.top + size * 0.23),\n new Vector(container.bounds.left + size * 0.84, container.bounds.top + size * 0.34085),\n new Vector(container.bounds.left + size * 0.39363, container.bounds.top + size * 0.79)\n ]);\n\n this.ctx.fillStyle = asString(INPUT_COLOR);\n this.ctx.fill();\n this.ctx.restore();\n }\n } else if (container.type === RADIO) {\n if (container.checked) {\n this.ctx.save();\n this.ctx.beginPath();\n this.ctx.arc(\n container.bounds.left + size / 2,\n container.bounds.top + size / 2,\n size / 4,\n 0,\n Math.PI * 2,\n true\n );\n this.ctx.fillStyle = asString(INPUT_COLOR);\n this.ctx.fill();\n this.ctx.restore();\n }\n }\n }\n\n if (isTextInputElement(container) && container.value.length) {\n const [fontFamily, fontSize] = this.createFontStyle(styles);\n const { baseline } = this.fontMetrics.getMetrics(fontFamily, fontSize);\n\n this.ctx.font = fontFamily;\n this.ctx.fillStyle = asString(styles.color);\n\n this.ctx.textBaseline = 'alphabetic';\n this.ctx.textAlign = canvasTextAlign(container.styles.textAlign);\n\n const bounds = contentBox(container);\n\n let x = 0;\n\n switch (container.styles.textAlign) {\n case TEXT_ALIGN.CENTER:\n x += bounds.width / 2;\n break;\n case TEXT_ALIGN.RIGHT:\n x += bounds.width;\n break;\n }\n\n const textBounds = bounds.add(x, 0, 0, -bounds.height / 2 + 1);\n\n this.ctx.save();\n this.path([\n new Vector(bounds.left, bounds.top),\n new Vector(bounds.left + bounds.width, bounds.top),\n new Vector(bounds.left + bounds.width, bounds.top + bounds.height),\n new Vector(bounds.left, bounds.top + bounds.height)\n ]);\n\n this.ctx.clip();\n this.renderTextWithLetterSpacing(\n new TextBounds(container.value, textBounds),\n styles.letterSpacing,\n baseline\n );\n this.ctx.restore();\n this.ctx.textBaseline = 'alphabetic';\n this.ctx.textAlign = 'left';\n }\n\n if (contains(container.styles.display, DISPLAY.LIST_ITEM)) {\n if (container.styles.listStyleImage !== null) {\n const img = container.styles.listStyleImage;\n if (img.type === CSSImageType.URL) {\n let image;\n const url = (img as CSSURLImage).url;\n try {\n image = await this.context.cache.match(url);\n this.ctx.drawImage(image, container.bounds.left - (image.width + 10), container.bounds.top);\n } catch (e) {\n this.context.logger.error(`Error loading list-style-image ${url}`);\n }\n }\n } else if (paint.listValue && container.styles.listStyleType !== LIST_STYLE_TYPE.NONE) {\n const [fontFamily] = this.createFontStyle(styles);\n\n this.ctx.font = fontFamily;\n this.ctx.fillStyle = asString(styles.color);\n\n this.ctx.textBaseline = 'middle';\n this.ctx.textAlign = 'right';\n const bounds = new Bounds(\n container.bounds.left,\n container.bounds.top + getAbsoluteValue(container.styles.paddingTop, container.bounds.width),\n container.bounds.width,\n computeLineHeight(styles.lineHeight, styles.fontSize.number) / 2 + 1\n );\n\n this.renderTextWithLetterSpacing(\n new TextBounds(paint.listValue, bounds),\n styles.letterSpacing,\n computeLineHeight(styles.lineHeight, styles.fontSize.number) / 2 + 2\n );\n this.ctx.textBaseline = 'bottom';\n this.ctx.textAlign = 'left';\n }\n }\n }\n\n async renderStackContent(stack: StackingContext): Promise<void> {\n if (contains(stack.element.container.flags, FLAGS.DEBUG_RENDER)) {\n debugger;\n }\n // https://www.w3.org/TR/css-position-3/#painting-order\n // 1. the background and borders of the element forming the stacking context.\n await this.renderNodeBackgroundAndBorders(stack.element);\n // 2. the child stacking contexts with negative stack levels (most negative first).\n for (const child of stack.negativeZIndex) {\n await this.renderStack(child);\n }\n // 3. For all its in-flow, non-positioned, block-level descendants in tree order:\n await this.renderNodeContent(stack.element);\n\n for (const child of stack.nonInlineLevel) {\n await this.renderNode(child);\n }\n // 4. All non-positioned floating descendants, in tree order. For each one of these,\n // treat the element as if it created a new stacking context, but any positioned descendants and descendants\n // which actually create a new stacking context should be considered part of the parent stacking context,\n // not this new one.\n for (const child of stack.nonPositionedFloats) {\n await this.renderStack(child);\n }\n // 5. the in-flow, inline-level, non-positioned descendants, including inline tables and inline blocks.\n for (const child of stack.nonPositionedInlineLevel) {\n await this.renderStack(child);\n }\n for (const child of stack.inlineLevel) {\n await this.renderNode(child);\n }\n // 6. All positioned, opacity or transform descendants, in tree order that fall into the following categories:\n // All positioned descendants with 'z-index: auto' or 'z-index: 0', in tree order.\n // For those with 'z-index: auto', treat the element as if it created a new stacking context,\n // but any positioned descendants and descendants which actually create a new stacking context should be\n // considered part of the parent stacking context, not this new one. For those with 'z-index: 0',\n // treat the stacking context generated atomically.\n //\n // All opacity descendants with opacity less than 1\n //\n // All transform descendants with transform other than none\n for (const child of stack.zeroOrAutoZIndexOrTransformedOrOpacity) {\n await this.renderStack(child);\n }\n // 7. Stacking contexts formed by positioned descendants with z-indices greater than or equal to 1 in z-index\n // order (smallest first) then tree order.\n for (const child of stack.positiveZIndex) {\n await this.renderStack(child);\n }\n }\n\n mask(paths: Path[]): void {\n this.ctx.beginPath();\n this.ctx.moveTo(0, 0);\n this.ctx.lineTo(this.canvas.width, 0);\n this.ctx.lineTo(this.canvas.width, this.canvas.height);\n this.ctx.lineTo(0, this.canvas.height);\n this.ctx.lineTo(0, 0);\n this.formatPath(paths.slice(0).reverse());\n this.ctx.closePath();\n }\n\n path(paths: Path[]): void {\n this.ctx.beginPath();\n this.formatPath(paths);\n this.ctx.closePath();\n }\n\n formatPath(paths: Path[]): void {\n paths.forEach((point, index) => {\n const start: Vector = isBezierCurve(point) ? point.start : point;\n if (index === 0) {\n this.ctx.moveTo(start.x, start.y);\n } else {\n this.ctx.lineTo(start.x, start.y);\n }\n\n if (isBezierCurve(point)) {\n this.ctx.bezierCurveTo(\n point.startControl.x,\n point.startControl.y,\n point.endControl.x,\n point.endControl.y,\n point.end.x,\n point.end.y\n );\n }\n });\n }\n\n renderRepeat(path: Path[], pattern: CanvasPattern | CanvasGradient, offsetX: number, offsetY: number): void {\n this.path(path);\n this.ctx.fillStyle = pattern;\n this.ctx.translate(offsetX, offsetY);\n this.ctx.fill();\n this.ctx.translate(-offsetX, -offsetY);\n }\n\n resizeImage(image: HTMLImageElement, width: number, height: number): HTMLCanvasElement | HTMLImageElement {\n // https://github.com/niklasvh/html2canvas/pull/2911\n // if (image.width === width && image.height === height) {\n // return image;\n // }\n\n const ownerDocument = this.canvas.ownerDocument ?? document;\n const canvas = ownerDocument.createElement('canvas');\n canvas.width = Math.max(1, width);\n canvas.height = Math.max(1, height);\n const ctx = canvas.getContext('2d') as CanvasRenderingContext2D;\n ctx.drawImage(image, 0, 0, image.width, image.height, 0, 0, width, height);\n return canvas;\n }\n\n async renderBackgroundImage(container: ElementContainer): Promise<void> {\n let index = container.styles.backgroundImage.length - 1;\n for (const backgroundImage of container.styles.backgroundImage.slice(0).reverse()) {\n if (backgroundImage.type === CSSImageType.URL) {\n let image;\n const url = (backgroundImage as CSSURLImage).url;\n try {\n image = await this.context.cache.match(url);\n } catch (e) {\n this.context.logger.error(`Error loading background-image ${url}`);\n }\n\n if (image) {\n const imageWidth = isNaN(image.width) || image.width === 0 ? 1 : image.width;\n const imageHeight = isNaN(image.height) || image.height === 0 ? 1 : image.height;\n const [path, x, y, width, height] = calculateBackgroundRendering(container, index, [\n imageWidth,\n imageHeight,\n imageWidth / imageHeight\n ]);\n const pattern = this.ctx.createPattern(\n this.resizeImage(image, width, height),\n 'repeat'\n ) as CanvasPattern;\n this.renderRepeat(path, pattern, x, y);\n }\n } else if (isLinearGradient(backgroundImage)) {\n const [path, x, y, width, height] = calculateBackgroundRendering(container, index, [null, null, null]);\n const [lineLength, x0, x1, y0, y1] = calculateGradientDirection(backgroundImage.angle, width, height);\n\n const canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n const ctx = canvas.getContext('2d') as CanvasRenderingContext2D;\n const gradient = ctx.createLinearGradient(x0, y0, x1, y1);\n\n processColorStops(backgroundImage.stops, lineLength).forEach((colorStop) =>\n gradient.addColorStop(colorStop.stop, asString(colorStop.color))\n );\n\n ctx.fillStyle = gradient;\n ctx.fillRect(0, 0, width, height);\n if (width > 0 && height > 0) {\n const pattern = this.ctx.createPattern(canvas, 'repeat') as CanvasPattern;\n this.renderRepeat(path, pattern, x, y);\n }\n } else if (isRadialGradient(backgroundImage)) {\n const [path, left, top, width, height] = calculateBackgroundRendering(container, index, [\n null,\n null,\n null\n ]);\n const position = backgroundImage.position.length === 0 ? [FIFTY_PERCENT] : backgroundImage.position;\n const x = getAbsoluteValue(position[0], width);\n const y = getAbsoluteValue(position[position.length - 1], height);\n\n const [rx, ry] = calculateRadius(backgroundImage, x, y, width, height);\n if (rx > 0 && ry > 0) {\n const radialGradient = this.ctx.createRadialGradient(left + x, top + y, 0, left + x, top + y, rx);\n\n processColorStops(backgroundImage.stops, rx * 2).forEach((colorStop) =>\n radialGradient.addColorStop(colorStop.stop, asString(colorStop.color))\n );\n\n this.path(path);\n this.ctx.fillStyle = radialGradient;\n if (rx !== ry) {\n // transforms for elliptical radial gradient\n const midX = container.bounds.left + 0.5 * container.bounds.width;\n const midY = container.bounds.top + 0.5 * container.bounds.height;\n const f = ry / rx;\n const invF = 1 / f;\n\n this.ctx.save();\n this.ctx.translate(midX, midY);\n this.ctx.transform(1, 0, 0, f, 0, 0);\n this.ctx.translate(-midX, -midY);\n\n this.ctx.fillRect(left, invF * (top - midY) + midY, width, height * invF);\n this.ctx.restore();\n } else {\n this.ctx.fill();\n }\n }\n }\n index--;\n }\n }\n\n async renderSolidBorder(color: Color, side: number, curvePoints: BoundCurves): Promise<void> {\n this.path(parsePathForBorder(curvePoints, side));\n this.ctx.fillStyle = asString(color);\n this.ctx.fill();\n }\n\n async renderDoubleBorder(color: Color, width: number, side: number, curvePoints: BoundCurves): Promise<void> {\n if (width < 3) {\n await this.renderSolidBorder(color, side, curvePoints);\n return;\n }\n\n const outerPaths = parsePathForBorderDoubleOuter(curvePoints, side);\n this.path(outerPaths);\n this.ctx.fillStyle = asString(color);\n this.ctx.fill();\n const innerPaths = parsePathForBorderDoubleInner(curvePoints, side);\n this.path(innerPaths);\n this.ctx.fill();\n }\n\n async renderNodeBackgroundAndBorders(paint: ElementPaint): Promise<void> {\n this.applyEffects(paint.getEffects(EffectTarget.BACKGROUND_BORDERS));\n const styles = paint.container.styles;\n const hasBackground = !isTransparent(styles.backgroundColor) || styles.backgroundImage.length;\n\n const borders = [\n { style: styles.borderTopStyle, color: styles.borderTopColor, width: styles.borderTopWidth },\n { style: styles.borderRightStyle, color: styles.borderRightColor, width: styles.borderRightWidth },\n { style: styles.borderBottomStyle, color: styles.borderBottomColor, width: styles.borderBottomWidth },\n { style: styles.borderLeftStyle, color: styles.borderLeftColor, width: styles.borderLeftWidth }\n ];\n\n const backgroundPaintingArea = calculateBackgroundCurvedPaintingArea(\n getBackgroundValueForIndex(styles.backgroundClip, 0),\n paint.curves\n );\n\n if (hasBackground || styles.boxShadow.length) {\n this.ctx.save();\n this.path(backgroundPaintingArea);\n this.ctx.clip();\n\n if (!isTransparent(styles.backgroundColor)) {\n this.ctx.fillStyle = asString(styles.backgroundColor);\n this.ctx.fill();\n }\n\n await this.renderBackgroundImage(paint.container);\n\n this.ctx.restore();\n\n styles.boxShadow\n .slice(0)\n .reverse()\n .forEach((shadow) => {\n this.ctx.save();\n const borderBoxArea = calculateBorderBoxPath(paint.curves);\n const maskOffset = shadow.inset ? 0 : MASK_OFFSET;\n const shadowPaintingArea = transformPath(\n borderBoxArea,\n -maskOffset + (shadow.inset ? 1 : -1) * shadow.spread.number,\n (shadow.inset ? 1 : -1) * shadow.spread.number,\n shadow.spread.number * (shadow.inset ? -2 : 2),\n shadow.spread.number * (shadow.inset ? -2 : 2)\n );\n\n if (shadow.inset) {\n this.path(borderBoxArea);\n this.ctx.clip();\n this.mask(shadowPaintingArea);\n } else {\n this.mask(borderBoxArea);\n this.ctx.clip();\n this.path(shadowPaintingArea);\n }\n\n this.ctx.shadowOffsetX = shadow.offsetX.number + maskOffset;\n this.ctx.shadowOffsetY = shadow.offsetY.number;\n this.ctx.shadowColor = asString(shadow.color);\n this.ctx.shadowBlur = shadow.blur.number;\n this.ctx.fillStyle = shadow.inset ? asString(shadow.color) : 'rgba(0,0,0,1)';\n\n this.ctx.fill();\n this.ctx.restore();\n });\n }\n\n let side = 0;\n for (const border of borders) {\n if (border.style !== BORDER_STYLE.NONE && !isTransparent(border.color) && border.width > 0) {\n if (border.style === BORDER_STYLE.DASHED) {\n await this.renderDashedDottedBorder(\n border.color,\n border.width,\n side,\n paint.curves,\n BORDER_STYLE.DASHED\n );\n } else if (border.style === BORDER_STYLE.DOTTED) {\n await this.renderDashedDottedBorder(\n border.color,\n border.width,\n side,\n paint.curves,\n BORDER_STYLE.DOTTED\n );\n } else if (border.style === BORDER_STYLE.DOUBLE) {\n await this.renderDoubleBorder(border.color, border.width, side, paint.curves);\n } else {\n await this.renderSolidBorder(border.color, side, paint.curves);\n }\n }\n side++;\n }\n }\n\n async renderDashedDottedBorder(\n color: Color,\n width: number,\n side: number,\n curvePoints: BoundCurves,\n style: BORDER_STYLE\n ): Promise<void> {\n this.ctx.save();\n\n const strokePaths = parsePathForBorderStroke(curvePoints, side);\n const boxPaths = parsePathForBorder(curvePoints, side);\n\n if (style === BORDER_STYLE.DASHED) {\n this.path(boxPaths);\n this.ctx.clip();\n }\n\n let startX, startY, endX, endY;\n if (isBezierCurve(boxPaths[0])) {\n startX = (boxPaths[0] as BezierCurve).start.x;\n startY = (boxPaths[0] as BezierCurve).start.y;\n } else {\n startX = (boxPaths[0] as Vector).x;\n startY = (boxPaths[0] as Vector).y;\n }\n if (isBezierCurve(boxPaths[1])) {\n endX = (boxPaths[1] as BezierCurve).end.x;\n endY = (boxPaths[1] as BezierCurve).end.y;\n } else {\n endX = (boxPaths[1] as Vector).x;\n endY = (boxPaths[1] as Vector).y;\n }\n\n let length;\n if (side === 0 || side === 2) {\n length = Math.abs(startX - endX);\n } else {\n length = Math.abs(startY - endY);\n }\n\n this.ctx.beginPath();\n if (style === BORDER_STYLE.DOTTED) {\n this.formatPath(strokePaths);\n } else {\n this.formatPath(boxPaths.slice(0, 2));\n }\n\n let dashLength = width < 3 ? width * 3 : width * 2;\n let spaceLength = width < 3 ? width * 2 : width;\n if (style === BORDER_STYLE.DOTTED) {\n dashLength = width;\n spaceLength = width;\n }\n\n let useLineDash = true;\n if (length <= dashLength * 2) {\n useLineDash = false;\n } else if (length <= dashLength * 2 + spaceLength) {\n const multiplier = length / (2 * dashLength + spaceLength);\n dashLength *= multiplier;\n spaceLength *= multiplier;\n } else {\n const numberOfDashes = Math.floor((length + spaceLength) / (dashLength + spaceLength));\n const minSpace = (length - numberOfDashes * dashLength) / (numberOfDashes - 1);\n const maxSpace = (length - (numberOfDashes + 1) * dashLength) / numberOfDashes;\n spaceLength =\n maxSpace <= 0 || Math.abs(spaceLength - minSpace) < Math.abs(spaceLength - maxSpace)\n ? minSpace\n : maxSpace;\n }\n\n if (useLineDash) {\n if (style === BORDER_STYLE.DOTTED) {\n this.ctx.setLineDash([0, dashLength + spaceLength]);\n } else {\n this.ctx.setLineDash([dashLength, spaceLength]);\n }\n }\n\n if (style === BORDER_STYLE.DOTTED) {\n this.ctx.lineCap = 'round';\n this.ctx.lineWidth = width;\n } else {\n this.ctx.lineWidth = width * 2 + 1.1;\n }\n this.ctx.strokeStyle = asString(color);\n this.ctx.stroke();\n this.ctx.setLineDash([]);\n\n // dashed round edge gap\n if (style === BORDER_STYLE.DASHED) {\n if (isBezierCurve(boxPaths[0])) {\n const path1 = boxPaths[3] as BezierCurve;\n const path2 = boxPaths[0] as BezierCurve;\n this.ctx.beginPath();\n this.formatPath([new Vector(path1.end.x, path1.end.y), new Vector(path2.start.x, path2.start.y)]);\n this.ctx.stroke();\n }\n if (isBezierCurve(boxPaths[1])) {\n const path1 = boxPaths[1] as BezierCurve;\n const path2 = boxPaths[2] as BezierCurve;\n this.ctx.beginPath();\n this.formatPath([new Vector(path1.end.x, path1.end.y), new Vector(path2.start.x, path2.start.y)]);\n this.ctx.stroke();\n }\n }\n\n this.ctx.restore();\n }\n\n async render(element: ElementContainer): Promise<HTMLCanvasElement> {\n if (this.options.backgroundColor) {\n this.ctx.fillStyle = asString(this.options.backgroundColor);\n this.ctx.fillRect(this.options.x, this.options.y, this.options.width, this.options.height);\n }\n\n const stack = parseStackingContexts(element);\n\n await this.renderStack(stack);\n this.applyEffects([]);\n return this.canvas;\n }\n}\n\nconst isTextInputElement = (\n container: ElementContainer\n): container is InputElementContainer | TextareaElementContainer | SelectElementContainer => {\n if (container instanceof TextareaElementContainer) {\n return true;\n } else if (container instanceof SelectElementContainer) {\n return true;\n } else if (container instanceof InputElementContainer && container.type !== RADIO && container.type !== CHECKBOX) {\n return true;\n }\n return false;\n};\n\nconst calculateBackgroundCurvedPaintingArea = (clip: BACKGROUND_CLIP, curves: BoundCurves): Path[] => {\n switch (clip) {\n case BACKGROUND_CLIP.BORDER_BOX:\n return calculateBorderBoxPath(curves);\n case BACKGROUND_CLIP.CONTENT_BOX:\n return calculateContentBoxPath(curves);\n case BACKGROUND_CLIP.PADDING_BOX:\n default:\n return calculatePaddingBoxPath(curves);\n }\n};\n\nconst canvasTextAlign = (textAlign: TEXT_ALIGN): CanvasTextAlign => {\n switch (textAlign) {\n case TEXT_ALIGN.CENTER:\n return 'center';\n case TEXT_ALIGN.RIGHT:\n return 'right';\n case TEXT_ALIGN.LEFT:\n default:\n return 'left';\n }\n};\n\n// see https://github.com/niklasvh/html2canvas/pull/2645\nconst iOSBrokenFonts = ['-apple-system', 'system-ui'];\n\nconst fixIOSSystemFonts = (fontFamilies: string[]): string[] => {\n return /iPhone OS 15_(0|1)/.test(window.navigator.userAgent)\n ? fontFamilies.filter((fontFamily) => iOSBrokenFonts.indexOf(fontFamily) === -1)\n : fontFamilies;\n};\n","import { RenderConfigurations } from './canvas-renderer';\nimport { createForeignObjectSVG } from '../../core/features';\nimport { asString } from '../../css/types/color-utilities';\nimport { Renderer } from '../renderer';\nimport { Context } from '../../core/context';\n\nexport class ForeignObjectRenderer extends Renderer {\n canvas: HTMLCanvasElement;\n ctx: CanvasRenderingContext2D;\n options: RenderConfigurations;\n\n constructor(context: Context, options: RenderConfigurations) {\n super(context, options);\n this.canvas = options.canvas ? options.canvas : document.createElement('canvas');\n this.ctx = this.canvas.getContext('2d') as CanvasRenderingContext2D;\n this.options = options;\n this.canvas.width = Math.floor(options.width * options.scale);\n this.canvas.height = Math.floor(options.height * options.scale);\n this.canvas.style.width = `${options.width}px`;\n this.canvas.style.height = `${options.height}px`;\n\n this.ctx.scale(this.options.scale, this.options.scale);\n this.ctx.translate(-options.x, -options.y);\n this.context.logger.debug(\n `EXPERIMENTAL ForeignObject renderer initialized (${options.width}x${options.height} at ${options.x},${options.y}) with scale ${options.scale}`\n );\n }\n\n async render(element: HTMLElement): Promise<HTMLCanvasElement> {\n const svg = createForeignObjectSVG(\n this.options.width * this.options.scale,\n this.options.height * this.options.scale,\n this.options.scale,\n this.options.scale,\n element\n );\n\n const img = await loadSerializedSVG(svg);\n\n if (this.options.backgroundColor) {\n this.ctx.fillStyle = asString(this.options.backgroundColor);\n this.ctx.fillRect(0, 0, this.options.width * this.options.scale, this.options.height * this.options.scale);\n }\n\n this.ctx.drawImage(img, -this.options.x * this.options.scale, -this.options.y * this.options.scale);\n\n return this.canvas;\n }\n}\n\nexport const loadSerializedSVG = (svg: Node): Promise<HTMLImageElement> =>\n new Promise((resolve, reject) => {\n const img = new Image();\n img.onload = () => {\n resolve(img);\n };\n img.onerror = reject;\n\n img.src = `data:image/svg+xml;charset=utf-8,${encodeURIComponent(new XMLSerializer().serializeToString(svg))}`;\n });\n","export interface LoggerOptions {\n id: string;\n enabled: boolean;\n}\n\nexport class Logger {\n static instances: { [key: string]: Logger } = {};\n\n private readonly id: string;\n private readonly enabled: boolean;\n private readonly start: number;\n\n constructor({ id, enabled }: LoggerOptions) {\n this.id = id;\n this.enabled = enabled;\n this.start = Date.now();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n debug(...args: unknown[]): void {\n if (this.enabled) {\n // eslint-disable-next-line no-console\n if (typeof window !== 'undefined' && window.console && typeof console.debug === 'function') {\n // eslint-disable-next-line no-console\n console.debug(this.id, `${this.getTime()}ms`, ...args);\n } else {\n this.info(...args);\n }\n }\n }\n\n getTime(): number {\n return Date.now() - this.start;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n info(...args: unknown[]): void {\n if (this.enabled) {\n // eslint-disable-next-line no-console\n if (typeof window !== 'undefined' && window.console && typeof console.info === 'function') {\n // eslint-disable-next-line no-console\n console.info(this.id, `${this.getTime()}ms`, ...args);\n }\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n warn(...args: unknown[]): void {\n if (this.enabled) {\n // eslint-disable-next-line no-console\n if (typeof window !== 'undefined' && window.console && typeof console.warn === 'function') {\n // eslint-disable-next-line no-console\n console.warn(this.id, `${this.getTime()}ms`, ...args);\n } else {\n this.info(...args);\n }\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n error(...args: unknown[]): void {\n if (this.enabled) {\n // eslint-disable-next-line no-console\n if (typeof window !== 'undefined' && window.console && typeof console.error === 'function') {\n // eslint-disable-next-line no-console\n console.error(this.id, `${this.getTime()}ms`, ...args);\n } else {\n this.info(...args);\n }\n }\n }\n}\n","import { Logger } from './logger';\nimport { Cache, ResourceOptions } from './cache-storage';\nimport { Bounds } from '../css/layout/bounds';\n\nexport type ContextOptions = {\n logging: boolean;\n cache?: Cache;\n} & ResourceOptions;\n\nexport class Context {\n private readonly instanceName = `#${Context.instanceCount++}`;\n readonly logger: Logger;\n readonly cache: Cache;\n\n private static instanceCount = 1;\n\n constructor(options: ContextOptions, public windowBounds: Bounds) {\n this.logger = new Logger({ id: this.instanceName, enabled: options.logging });\n this.cache = options.cache ?? new Cache(this, options);\n }\n}\n","import { Bounds, parseBounds, parseDocumentSize } from './css/layout/bounds';\nimport { COLORS, parseColor } from './css/types/color';\nimport { isTransparent } from './css/types/color-utilities';\nimport { CloneConfigurations, CloneOptions, DocumentCloner, WindowOptions } from './dom/document-cloner';\nimport { isBodyElement, isHTMLElement, parseTree } from './dom/node-parser';\nimport { CacheStorage } from './core/cache-storage';\nimport { CanvasRenderer, RenderConfigurations, RenderOptions } from './render/canvas/canvas-renderer';\nimport { ForeignObjectRenderer } from './render/canvas/foreignobject-renderer';\nimport { Context, ContextOptions } from './core/context';\n\nexport type Options = CloneOptions &\n WindowOptions &\n RenderOptions &\n ContextOptions & {\n backgroundColor: string | null;\n foreignObjectRendering: boolean;\n removeContainer?: boolean;\n };\n\nconst html2canvas = (element: HTMLElement, options: Partial<Options> = {}): Promise<HTMLCanvasElement> => {\n return renderElement(element, options);\n};\n\nexport default html2canvas;\n\nif (typeof window !== 'undefined') {\n CacheStorage.setContext(window);\n}\n\nconst renderElement = async (element: HTMLElement, opts: Partial<Options>): Promise<HTMLCanvasElement> => {\n if (!element || typeof element !== 'object') {\n return Promise.reject('Invalid element provided as first argument');\n }\n const ownerDocument = element.ownerDocument;\n\n if (!ownerDocument) {\n throw new Error(`Element is not attached to a Document`);\n }\n\n const defaultView = ownerDocument.defaultView;\n\n if (!defaultView) {\n throw new Error(`Document is not attached to a Window`);\n }\n\n const resourceOptions = {\n allowTaint: opts.allowTaint ?? false,\n imageTimeout: opts.imageTimeout ?? 15000,\n proxy: opts.proxy,\n useCORS: opts.useCORS ?? false\n };\n\n const contextOptions = {\n logging: opts.logging ?? true,\n cache: opts.cache,\n ...resourceOptions\n };\n\n const windowOptions = {\n windowWidth: opts.windowWidth ?? defaultView.innerWidth,\n windowHeight: opts.windowHeight ?? defaultView.innerHeight,\n scrollX: opts.scrollX ?? defaultView.pageXOffset,\n scrollY: opts.scrollY ?? defaultView.pageYOffset\n };\n\n const windowBounds = new Bounds(\n windowOptions.scrollX,\n windowOptions.scrollY,\n windowOptions.windowWidth,\n windowOptions.windowHeight\n );\n\n const context = new Context(contextOptions, windowBounds);\n\n const foreignObjectRendering = opts.foreignObjectRendering ?? false;\n\n const cloneOptions: CloneConfigurations = {\n allowTaint: opts.allowTaint ?? false,\n onclone: opts.onclone,\n ignoreElements: opts.ignoreElements,\n inlineImages: foreignObjectRendering,\n copyStyles: foreignObjectRendering\n };\n\n context.logger.debug(\n `Starting document clone with size ${windowBounds.width}x${\n windowBounds.height\n } scrolled to ${-windowBounds.left},${-windowBounds.top}`\n );\n\n const documentCloner = new DocumentCloner(context, element, cloneOptions);\n const clonedElement = documentCloner.clonedReferenceElement;\n if (!clonedElement) {\n return Promise.reject(`Unable to find element in cloned iframe`);\n }\n\n const container = await documentCloner.toIFrame(ownerDocument, windowBounds);\n\n const { width, height, left, top } =\n isBodyElement(clonedElement) || isHTMLElement(clonedElement)\n ? parseDocumentSize(clonedElement.ownerDocument)\n : parseBounds(context, clonedElement);\n\n const backgroundColor = parseBackgroundColor(context, clonedElement, opts.backgroundColor);\n\n const renderOptions: RenderConfigurations = {\n canvas: opts.canvas,\n backgroundColor,\n scale: opts.scale ?? defaultView.devicePixelRatio ?? 1,\n x: (opts.x ?? 0) + left,\n y: (opts.y ?? 0) + top,\n width: opts.width ?? Math.ceil(width),\n height: opts.height ?? Math.ceil(height)\n };\n\n let canvas;\n\n if (foreignObjectRendering) {\n context.logger.debug(`Document cloned, using foreign object rendering`);\n const renderer = new ForeignObjectRenderer(context, renderOptions);\n canvas = await renderer.render(clonedElement);\n } else {\n context.logger.debug(\n `Document cloned, element located at ${left},${top} with size ${width}x${height} using computed rendering`\n );\n\n context.logger.debug(`Starting DOM parsing`);\n const root = parseTree(context, clonedElement);\n\n if (backgroundColor === root.styles.backgroundColor) {\n root.styles.backgroundColor = COLORS.TRANSPARENT;\n }\n\n context.logger.debug(\n `Starting renderer for element at ${renderOptions.x},${renderOptions.y} with size ${renderOptions.width}x${renderOptions.height}`\n );\n\n const renderer = new CanvasRenderer(context, renderOptions);\n canvas = await renderer.render(root);\n }\n\n if (opts.removeContainer ?? true) {\n if (!DocumentCloner.destroy(container)) {\n context.logger.error(`Cannot detach cloned iframe as it is not in the DOM anymore`);\n }\n }\n\n context.logger.debug(`Finished rendering`);\n return canvas;\n};\n\nconst parseBackgroundColor = (context: Context, element: HTMLElement, backgroundColorOverride?: string | null) => {\n const ownerDocument = element.ownerDocument;\n // http://www.w3.org/TR/css3-background/#special-backgrounds\n const documentBackgroundColor = ownerDocument.documentElement\n ? parseColor(context, getComputedStyle(ownerDocument.documentElement).backgroundColor as string)\n : COLORS.TRANSPARENT;\n const bodyBackgroundColor = ownerDocument.body\n ? parseColor(context, getComputedStyle(ownerDocument.body).backgroundColor as string)\n : COLORS.TRANSPARENT;\n\n const defaultBackgroundColor =\n typeof backgroundColorOverride === 'string'\n ? parseColor(context, backgroundColorOverride)\n : backgroundColorOverride === null\n ? COLORS.TRANSPARENT\n : 0xffffffff;\n\n return element === ownerDocument.documentElement\n ? isTransparent(documentBackgroundColor)\n ? isTransparent(bodyBackgroundColor)\n ? defaultBackgroundColor\n : bodyBackgroundColor\n : documentBackgroundColor\n : defaultBackgroundColor;\n};\n"],"names":["toCodePoints","fromCodePoint","chars","lookup","i","decode","polyUint16Array","polyUint32Array","UTRIE2_SHIFT_2","UTRIE2_SHIFT_1","UTRIE2_INDEX_SHIFT","UTRIE2_SHIFT_1_2","UTRIE2_LSCP_INDEX_2_OFFSET","UTRIE2_DATA_BLOCK_LENGTH","UTRIE2_DATA_MASK","UTRIE2_LSCP_INDEX_2_LENGTH","UTRIE2_INDEX_2_BMP_LENGTH","UTRIE2_UTF8_2B_INDEX_2_OFFSET","UTRIE2_UTF8_2B_INDEX_2_LENGTH","UTRIE2_INDEX_1_OFFSET","UTRIE2_OMITTED_BMP_INDEX_1_LENGTH","UTRIE2_INDEX_2_BLOCK_LENGTH","UTRIE2_INDEX_2_MASK","slice16","slice32","createTrieFromBase64","Trie","base64","CR","LF","ZWJ","RI","BREAK_NOT_ALLOWED","BREAK_ALLOWED","UnicodeTrie","SPACE","color","colorType","angle","angleType","parseDisplayValue","transform","loadSerializedSVG"],"mappings":"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"}
|