app/assets/build/coco/app.js in coveragebook_components-0.5.1 vs app/assets/build/coco/app.js in coveragebook_components-0.5.2
- old
+ new
@@ -1191,12 +1191,12 @@
function baseValues(object, props) {
return arrayMap(props, function(key) {
return object[key];
});
}
- function cacheHas(cache3, key) {
- return cache3.has(key);
+ function cacheHas(cache2, key) {
+ return cache2.has(key);
}
function charsStartIndex(strSymbols, chrSymbols) {
var index = -1, length = strSymbols.length;
while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {
}
@@ -2007,12 +2007,12 @@
var value = array[index], computed = iteratee2 ? iteratee2(value) : value;
value = comparator || value !== 0 ? value : 0;
if (!(seen ? cacheHas(seen, computed) : includes2(result2, computed, comparator))) {
othIndex = othLength;
while (--othIndex) {
- var cache3 = caches[othIndex];
- if (!(cache3 ? cacheHas(cache3, computed) : includes2(arrays[othIndex], computed, comparator))) {
+ var cache2 = caches[othIndex];
+ if (!(cache2 ? cacheHas(cache2, computed) : includes2(arrays[othIndex], computed, comparator))) {
continue outer;
}
}
if (seen) {
seen.push(computed);
@@ -3582,16 +3582,16 @@
return object[key] === srcValue && (srcValue !== undefined2 || key in Object2(object));
};
}
function memoizeCapped(func) {
var result2 = memoize(func, function(key) {
- if (cache3.size === MAX_MEMOIZE_SIZE) {
- cache3.clear();
+ if (cache2.size === MAX_MEMOIZE_SIZE) {
+ cache2.clear();
}
return key;
});
- var cache3 = result2.cache;
+ var cache2 = result2.cache;
return result2;
}
function mergeData(data2, source) {
var bitmask = data2[1], srcBitmask = source[1], newBitmask = bitmask | srcBitmask, isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);
var isCombo = srcBitmask == WRAP_ARY_FLAG && bitmask == WRAP_CURRY_FLAG || srcBitmask == WRAP_ARY_FLAG && bitmask == WRAP_REARG_FLAG && data2[7].length <= source[8] || srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG) && source[7].length <= source[8] && bitmask == WRAP_CURRY_FLAG;
@@ -4191,11 +4191,11 @@
function wrapperCommit() {
return new LodashWrapper(this.value(), this.__chain__);
}
function wrapperNext() {
if (this.__values__ === undefined2) {
- this.__values__ = toArray3(this.value());
+ this.__values__ = toArray2(this.value());
}
var done = this.__index__ >= this.__values__.length, value = done ? undefined2 : this.__values__[this.__index__++];
return { "done": done, "value": value };
}
function wrapperToIterator() {
@@ -4541,16 +4541,16 @@
function memoize(func, resolver) {
if (typeof func != "function" || resolver != null && typeof resolver != "function") {
throw new TypeError2(FUNC_ERROR_TEXT);
}
var memoized = function() {
- var args = arguments, key = resolver ? resolver.apply(this, args) : args[0], cache3 = memoized.cache;
- if (cache3.has(key)) {
- return cache3.get(key);
+ var args = arguments, key = resolver ? resolver.apply(this, args) : args[0], cache2 = memoized.cache;
+ if (cache2.has(key)) {
+ return cache2.get(key);
}
var result2 = func.apply(this, args);
- memoized.cache = cache3.set(key, result2) || cache3;
+ memoized.cache = cache2.set(key, result2) || cache2;
return result2;
};
memoized.cache = new (memoize.Cache || MapCache)();
return memoized;
}
@@ -4811,11 +4811,11 @@
}
var lt2 = createRelationalOperation(baseLt);
var lte = createRelationalOperation(function(value, other) {
return value <= other;
});
- function toArray3(value) {
+ function toArray2(value) {
if (!value) {
return [];
}
if (isArrayLike(value)) {
return isString2(value) ? stringToArray(value) : copyArray(value);
@@ -5736,11 +5736,11 @@
lodash.takeRightWhile = takeRightWhile;
lodash.takeWhile = takeWhile;
lodash.tap = tap;
lodash.throttle = throttle2;
lodash.thru = thru;
- lodash.toArray = toArray3;
+ lodash.toArray = toArray2;
lodash.toPairs = toPairs2;
lodash.toPairsIn = toPairsIn;
lodash.toPath = toPath;
lodash.toPlainObject = toPlainObject;
lodash.transform = transform;
@@ -6771,10 +6771,7837 @@
}
};
}
});
+ // ../../../node_modules/html2canvas/dist/html2canvas.js
+ var require_html2canvas = __commonJS({
+ "../../../node_modules/html2canvas/dist/html2canvas.js"(exports, module) {
+ (function(global2, factory) {
+ typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory() : typeof define === "function" && define.amd ? define(factory) : (global2 = typeof globalThis !== "undefined" ? globalThis : global2 || self, global2.html2canvas = factory());
+ })(exports, function() {
+ "use strict";
+ var extendStatics = function(d3, b3) {
+ extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d4, b4) {
+ d4.__proto__ = b4;
+ } || function(d4, b4) {
+ for (var p2 in b4)
+ if (Object.prototype.hasOwnProperty.call(b4, p2))
+ d4[p2] = b4[p2];
+ };
+ return extendStatics(d3, b3);
+ };
+ function __extends(d3, b3) {
+ if (typeof b3 !== "function" && b3 !== null)
+ throw new TypeError("Class extends value " + String(b3) + " is not a constructor or null");
+ extendStatics(d3, b3);
+ function __() {
+ this.constructor = d3;
+ }
+ d3.prototype = b3 === null ? Object.create(b3) : (__.prototype = b3.prototype, new __());
+ }
+ var __assign = function() {
+ __assign = Object.assign || function __assign2(t3) {
+ for (var s3, i4 = 1, n3 = arguments.length; i4 < n3; i4++) {
+ s3 = arguments[i4];
+ for (var p2 in s3)
+ if (Object.prototype.hasOwnProperty.call(s3, p2))
+ t3[p2] = s3[p2];
+ }
+ return t3;
+ };
+ return __assign.apply(this, arguments);
+ };
+ function __awaiter(thisArg, _arguments, P3, generator) {
+ function adopt(value) {
+ return value instanceof P3 ? value : new P3(function(resolve) {
+ resolve(value);
+ });
+ }
+ return new (P3 || (P3 = Promise))(function(resolve, reject) {
+ function fulfilled(value) {
+ try {
+ step(generator.next(value));
+ } catch (e4) {
+ reject(e4);
+ }
+ }
+ function rejected(value) {
+ try {
+ step(generator["throw"](value));
+ } catch (e4) {
+ reject(e4);
+ }
+ }
+ function step(result) {
+ result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
+ }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+ }
+ function __generator(thisArg, body) {
+ var _3 = { label: 0, sent: function() {
+ if (t3[0] & 1)
+ throw t3[1];
+ return t3[1];
+ }, trys: [], ops: [] }, f4, y3, t3, g3;
+ return g3 = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g3[Symbol.iterator] = function() {
+ return this;
+ }), g3;
+ function verb(n3) {
+ return function(v3) {
+ return step([n3, v3]);
+ };
+ }
+ function step(op) {
+ if (f4)
+ throw new TypeError("Generator is already executing.");
+ while (_3)
+ try {
+ if (f4 = 1, y3 && (t3 = op[0] & 2 ? y3["return"] : op[0] ? y3["throw"] || ((t3 = y3["return"]) && t3.call(y3), 0) : y3.next) && !(t3 = t3.call(y3, op[1])).done)
+ return t3;
+ if (y3 = 0, t3)
+ op = [op[0] & 2, t3.value];
+ switch (op[0]) {
+ case 0:
+ case 1:
+ t3 = op;
+ break;
+ case 4:
+ _3.label++;
+ return { value: op[1], done: false };
+ case 5:
+ _3.label++;
+ y3 = op[1];
+ op = [0];
+ continue;
+ case 7:
+ op = _3.ops.pop();
+ _3.trys.pop();
+ continue;
+ default:
+ if (!(t3 = _3.trys, t3 = t3.length > 0 && t3[t3.length - 1]) && (op[0] === 6 || op[0] === 2)) {
+ _3 = 0;
+ continue;
+ }
+ if (op[0] === 3 && (!t3 || op[1] > t3[0] && op[1] < t3[3])) {
+ _3.label = op[1];
+ break;
+ }
+ if (op[0] === 6 && _3.label < t3[1]) {
+ _3.label = t3[1];
+ t3 = op;
+ break;
+ }
+ if (t3 && _3.label < t3[2]) {
+ _3.label = t3[2];
+ _3.ops.push(op);
+ break;
+ }
+ if (t3[2])
+ _3.ops.pop();
+ _3.trys.pop();
+ continue;
+ }
+ op = body.call(thisArg, _3);
+ } catch (e4) {
+ op = [6, e4];
+ y3 = 0;
+ } finally {
+ f4 = t3 = 0;
+ }
+ if (op[0] & 5)
+ throw op[1];
+ return { value: op[0] ? op[1] : void 0, done: true };
+ }
+ }
+ function __spreadArray(to, from, pack2) {
+ if (pack2 || arguments.length === 2)
+ for (var i4 = 0, l3 = from.length, ar; i4 < l3; i4++) {
+ if (ar || !(i4 in from)) {
+ if (!ar)
+ ar = Array.prototype.slice.call(from, 0, i4);
+ ar[i4] = from[i4];
+ }
+ }
+ return to.concat(ar || from);
+ }
+ var Bounds = (
+ /** @class */
+ function() {
+ function Bounds2(left2, top2, width, height) {
+ this.left = left2;
+ this.top = top2;
+ this.width = width;
+ this.height = height;
+ }
+ Bounds2.prototype.add = function(x3, y3, w3, h3) {
+ return new Bounds2(this.left + x3, this.top + y3, this.width + w3, this.height + h3);
+ };
+ Bounds2.fromClientRect = function(context, clientRect) {
+ return new Bounds2(clientRect.left + context.windowBounds.left, clientRect.top + context.windowBounds.top, clientRect.width, clientRect.height);
+ };
+ Bounds2.fromDOMRectList = function(context, domRectList) {
+ var domRect = Array.from(domRectList).find(function(rect) {
+ return rect.width !== 0;
+ });
+ return domRect ? new Bounds2(domRect.left + context.windowBounds.left, domRect.top + context.windowBounds.top, domRect.width, domRect.height) : Bounds2.EMPTY;
+ };
+ Bounds2.EMPTY = new Bounds2(0, 0, 0, 0);
+ return Bounds2;
+ }()
+ );
+ var parseBounds = function(context, node) {
+ return Bounds.fromClientRect(context, node.getBoundingClientRect());
+ };
+ var parseDocumentSize = function(document2) {
+ var body = document2.body;
+ var documentElement = document2.documentElement;
+ if (!body || !documentElement) {
+ throw new Error("Unable to get document size");
+ }
+ var width = Math.max(Math.max(body.scrollWidth, documentElement.scrollWidth), Math.max(body.offsetWidth, documentElement.offsetWidth), Math.max(body.clientWidth, documentElement.clientWidth));
+ var height = Math.max(Math.max(body.scrollHeight, documentElement.scrollHeight), Math.max(body.offsetHeight, documentElement.offsetHeight), Math.max(body.clientHeight, documentElement.clientHeight));
+ return new Bounds(0, 0, width, height);
+ };
+ var toCodePoints$1 = function(str) {
+ var codePoints = [];
+ var i4 = 0;
+ var length = str.length;
+ while (i4 < length) {
+ var value = str.charCodeAt(i4++);
+ if (value >= 55296 && value <= 56319 && i4 < length) {
+ var extra = str.charCodeAt(i4++);
+ if ((extra & 64512) === 56320) {
+ codePoints.push(((value & 1023) << 10) + (extra & 1023) + 65536);
+ } else {
+ codePoints.push(value);
+ i4--;
+ }
+ } else {
+ codePoints.push(value);
+ }
+ }
+ return codePoints;
+ };
+ var fromCodePoint$1 = function() {
+ var codePoints = [];
+ for (var _i = 0; _i < arguments.length; _i++) {
+ codePoints[_i] = arguments[_i];
+ }
+ if (String.fromCodePoint) {
+ return String.fromCodePoint.apply(String, codePoints);
+ }
+ var length = codePoints.length;
+ if (!length) {
+ return "";
+ }
+ var codeUnits = [];
+ var index = -1;
+ var result = "";
+ while (++index < length) {
+ var codePoint = codePoints[index];
+ if (codePoint <= 65535) {
+ codeUnits.push(codePoint);
+ } else {
+ codePoint -= 65536;
+ codeUnits.push((codePoint >> 10) + 55296, codePoint % 1024 + 56320);
+ }
+ if (index + 1 === length || codeUnits.length > 16384) {
+ result += String.fromCharCode.apply(String, codeUnits);
+ codeUnits.length = 0;
+ }
+ }
+ return result;
+ };
+ var chars$2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+ var lookup$2 = typeof Uint8Array === "undefined" ? [] : new Uint8Array(256);
+ for (var i$2 = 0; i$2 < chars$2.length; i$2++) {
+ lookup$2[chars$2.charCodeAt(i$2)] = i$2;
+ }
+ var chars$1$1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+ var lookup$1$1 = typeof Uint8Array === "undefined" ? [] : new Uint8Array(256);
+ for (var i$1$1 = 0; i$1$1 < chars$1$1.length; i$1$1++) {
+ lookup$1$1[chars$1$1.charCodeAt(i$1$1)] = i$1$1;
+ }
+ var decode$1 = function(base642) {
+ var bufferLength = base642.length * 0.75, len = base642.length, i4, p2 = 0, encoded1, encoded2, encoded3, encoded4;
+ if (base642[base642.length - 1] === "=") {
+ bufferLength--;
+ if (base642[base642.length - 2] === "=") {
+ bufferLength--;
+ }
+ }
+ var buffer = typeof ArrayBuffer !== "undefined" && typeof Uint8Array !== "undefined" && typeof Uint8Array.prototype.slice !== "undefined" ? new ArrayBuffer(bufferLength) : new Array(bufferLength);
+ var bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);
+ for (i4 = 0; i4 < len; i4 += 4) {
+ encoded1 = lookup$1$1[base642.charCodeAt(i4)];
+ encoded2 = lookup$1$1[base642.charCodeAt(i4 + 1)];
+ encoded3 = lookup$1$1[base642.charCodeAt(i4 + 2)];
+ encoded4 = lookup$1$1[base642.charCodeAt(i4 + 3)];
+ bytes[p2++] = encoded1 << 2 | encoded2 >> 4;
+ bytes[p2++] = (encoded2 & 15) << 4 | encoded3 >> 2;
+ bytes[p2++] = (encoded3 & 3) << 6 | encoded4 & 63;
+ }
+ return buffer;
+ };
+ var polyUint16Array$1 = function(buffer) {
+ var length = buffer.length;
+ var bytes = [];
+ for (var i4 = 0; i4 < length; i4 += 2) {
+ bytes.push(buffer[i4 + 1] << 8 | buffer[i4]);
+ }
+ return bytes;
+ };
+ var polyUint32Array$1 = function(buffer) {
+ var length = buffer.length;
+ var bytes = [];
+ for (var i4 = 0; i4 < length; i4 += 4) {
+ bytes.push(buffer[i4 + 3] << 24 | buffer[i4 + 2] << 16 | buffer[i4 + 1] << 8 | buffer[i4]);
+ }
+ return bytes;
+ };
+ var UTRIE2_SHIFT_2$1 = 5;
+ var UTRIE2_SHIFT_1$1 = 6 + 5;
+ var UTRIE2_INDEX_SHIFT$1 = 2;
+ var UTRIE2_SHIFT_1_2$1 = UTRIE2_SHIFT_1$1 - UTRIE2_SHIFT_2$1;
+ var UTRIE2_LSCP_INDEX_2_OFFSET$1 = 65536 >> UTRIE2_SHIFT_2$1;
+ var UTRIE2_DATA_BLOCK_LENGTH$1 = 1 << UTRIE2_SHIFT_2$1;
+ var UTRIE2_DATA_MASK$1 = UTRIE2_DATA_BLOCK_LENGTH$1 - 1;
+ var UTRIE2_LSCP_INDEX_2_LENGTH$1 = 1024 >> UTRIE2_SHIFT_2$1;
+ var UTRIE2_INDEX_2_BMP_LENGTH$1 = UTRIE2_LSCP_INDEX_2_OFFSET$1 + UTRIE2_LSCP_INDEX_2_LENGTH$1;
+ var UTRIE2_UTF8_2B_INDEX_2_OFFSET$1 = UTRIE2_INDEX_2_BMP_LENGTH$1;
+ var UTRIE2_UTF8_2B_INDEX_2_LENGTH$1 = 2048 >> 6;
+ var UTRIE2_INDEX_1_OFFSET$1 = UTRIE2_UTF8_2B_INDEX_2_OFFSET$1 + UTRIE2_UTF8_2B_INDEX_2_LENGTH$1;
+ var UTRIE2_OMITTED_BMP_INDEX_1_LENGTH$1 = 65536 >> UTRIE2_SHIFT_1$1;
+ var UTRIE2_INDEX_2_BLOCK_LENGTH$1 = 1 << UTRIE2_SHIFT_1_2$1;
+ var UTRIE2_INDEX_2_MASK$1 = UTRIE2_INDEX_2_BLOCK_LENGTH$1 - 1;
+ var slice16$1 = function(view, start5, end2) {
+ if (view.slice) {
+ return view.slice(start5, end2);
+ }
+ return new Uint16Array(Array.prototype.slice.call(view, start5, end2));
+ };
+ var slice32$1 = function(view, start5, end2) {
+ if (view.slice) {
+ return view.slice(start5, end2);
+ }
+ return new Uint32Array(Array.prototype.slice.call(view, start5, end2));
+ };
+ var createTrieFromBase64$1 = function(base642, _byteLength) {
+ var buffer = decode$1(base642);
+ var view32 = Array.isArray(buffer) ? polyUint32Array$1(buffer) : new Uint32Array(buffer);
+ var view16 = Array.isArray(buffer) ? polyUint16Array$1(buffer) : new Uint16Array(buffer);
+ var headerLength = 24;
+ var index = slice16$1(view16, headerLength / 2, view32[4] / 2);
+ var data2 = view32[5] === 2 ? slice16$1(view16, (headerLength + view32[4]) / 2) : slice32$1(view32, Math.ceil((headerLength + view32[4]) / 4));
+ return new Trie$1(view32[0], view32[1], view32[2], view32[3], index, data2);
+ };
+ var Trie$1 = (
+ /** @class */
+ function() {
+ function Trie2(initialValue, errorValue, highStart, highValueIndex, index, data2) {
+ this.initialValue = initialValue;
+ this.errorValue = errorValue;
+ this.highStart = highStart;
+ this.highValueIndex = highValueIndex;
+ this.index = index;
+ this.data = data2;
+ }
+ Trie2.prototype.get = function(codePoint) {
+ var ix;
+ if (codePoint >= 0) {
+ if (codePoint < 55296 || codePoint > 56319 && codePoint <= 65535) {
+ ix = this.index[codePoint >> UTRIE2_SHIFT_2$1];
+ ix = (ix << UTRIE2_INDEX_SHIFT$1) + (codePoint & UTRIE2_DATA_MASK$1);
+ return this.data[ix];
+ }
+ if (codePoint <= 65535) {
+ ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET$1 + (codePoint - 55296 >> UTRIE2_SHIFT_2$1)];
+ ix = (ix << UTRIE2_INDEX_SHIFT$1) + (codePoint & UTRIE2_DATA_MASK$1);
+ return this.data[ix];
+ }
+ if (codePoint < this.highStart) {
+ ix = UTRIE2_INDEX_1_OFFSET$1 - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH$1 + (codePoint >> UTRIE2_SHIFT_1$1);
+ ix = this.index[ix];
+ ix += codePoint >> UTRIE2_SHIFT_2$1 & UTRIE2_INDEX_2_MASK$1;
+ ix = this.index[ix];
+ ix = (ix << UTRIE2_INDEX_SHIFT$1) + (codePoint & UTRIE2_DATA_MASK$1);
+ return this.data[ix];
+ }
+ if (codePoint <= 1114111) {
+ return this.data[this.highValueIndex];
+ }
+ }
+ return this.errorValue;
+ };
+ return Trie2;
+ }()
+ );
+ var chars$3 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+ var lookup$3 = typeof Uint8Array === "undefined" ? [] : new Uint8Array(256);
+ for (var i$3 = 0; i$3 < chars$3.length; i$3++) {
+ lookup$3[chars$3.charCodeAt(i$3)] = i$3;
+ }
+ var base64$1 = "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==";
+ var LETTER_NUMBER_MODIFIER = 50;
+ var BK = 1;
+ var CR$1 = 2;
+ var LF$1 = 3;
+ var CM = 4;
+ var NL = 5;
+ var WJ = 7;
+ var ZW = 8;
+ var GL = 9;
+ var SP = 10;
+ var ZWJ$1 = 11;
+ var B2 = 12;
+ var BA = 13;
+ var BB = 14;
+ var HY = 15;
+ var CB = 16;
+ var CL = 17;
+ var CP = 18;
+ var EX = 19;
+ var IN = 20;
+ var NS = 21;
+ var OP = 22;
+ var QU = 23;
+ var IS = 24;
+ var NU = 25;
+ var PO = 26;
+ var PR = 27;
+ var SY = 28;
+ var AI = 29;
+ var AL = 30;
+ var CJ = 31;
+ var EB = 32;
+ var EM = 33;
+ var H22 = 34;
+ var H3 = 35;
+ var HL = 36;
+ var ID = 37;
+ var JL = 38;
+ var JV = 39;
+ var JT = 40;
+ var RI$1 = 41;
+ var SA = 42;
+ var XX = 43;
+ var ea_OP = [9001, 65288];
+ var BREAK_MANDATORY = "!";
+ var BREAK_NOT_ALLOWED$1 = "\xD7";
+ var BREAK_ALLOWED$1 = "\xF7";
+ var UnicodeTrie$1 = createTrieFromBase64$1(base64$1);
+ var ALPHABETICS = [AL, HL];
+ var HARD_LINE_BREAKS = [BK, CR$1, LF$1, NL];
+ var SPACE$1 = [SP, ZW];
+ var PREFIX_POSTFIX = [PR, PO];
+ var LINE_BREAKS = HARD_LINE_BREAKS.concat(SPACE$1);
+ var KOREAN_SYLLABLE_BLOCK = [JL, JV, JT, H22, H3];
+ var HYPHEN = [HY, BA];
+ var codePointsToCharacterClasses = function(codePoints, lineBreak2) {
+ if (lineBreak2 === void 0) {
+ lineBreak2 = "strict";
+ }
+ var types = [];
+ var indices = [];
+ var categories = [];
+ codePoints.forEach(function(codePoint, index) {
+ var classType = UnicodeTrie$1.get(codePoint);
+ if (classType > LETTER_NUMBER_MODIFIER) {
+ categories.push(true);
+ classType -= LETTER_NUMBER_MODIFIER;
+ } else {
+ categories.push(false);
+ }
+ if (["normal", "auto", "loose"].indexOf(lineBreak2) !== -1) {
+ if ([8208, 8211, 12316, 12448].indexOf(codePoint) !== -1) {
+ indices.push(index);
+ return types.push(CB);
+ }
+ }
+ if (classType === CM || classType === ZWJ$1) {
+ if (index === 0) {
+ indices.push(index);
+ return types.push(AL);
+ }
+ var prev = types[index - 1];
+ if (LINE_BREAKS.indexOf(prev) === -1) {
+ indices.push(indices[index - 1]);
+ return types.push(prev);
+ }
+ indices.push(index);
+ return types.push(AL);
+ }
+ indices.push(index);
+ if (classType === CJ) {
+ return types.push(lineBreak2 === "strict" ? NS : ID);
+ }
+ if (classType === SA) {
+ return types.push(AL);
+ }
+ if (classType === AI) {
+ return types.push(AL);
+ }
+ if (classType === XX) {
+ if (codePoint >= 131072 && codePoint <= 196605 || codePoint >= 196608 && codePoint <= 262141) {
+ return types.push(ID);
+ } else {
+ return types.push(AL);
+ }
+ }
+ types.push(classType);
+ });
+ return [indices, types, categories];
+ };
+ var isAdjacentWithSpaceIgnored = function(a4, b3, currentIndex, classTypes) {
+ var current = classTypes[currentIndex];
+ if (Array.isArray(a4) ? a4.indexOf(current) !== -1 : a4 === current) {
+ var i4 = currentIndex;
+ while (i4 <= classTypes.length) {
+ i4++;
+ var next = classTypes[i4];
+ if (next === b3) {
+ return true;
+ }
+ if (next !== SP) {
+ break;
+ }
+ }
+ }
+ if (current === SP) {
+ var i4 = currentIndex;
+ while (i4 > 0) {
+ i4--;
+ var prev = classTypes[i4];
+ if (Array.isArray(a4) ? a4.indexOf(prev) !== -1 : a4 === prev) {
+ var n3 = currentIndex;
+ while (n3 <= classTypes.length) {
+ n3++;
+ var next = classTypes[n3];
+ if (next === b3) {
+ return true;
+ }
+ if (next !== SP) {
+ break;
+ }
+ }
+ }
+ if (prev !== SP) {
+ break;
+ }
+ }
+ }
+ return false;
+ };
+ var previousNonSpaceClassType = function(currentIndex, classTypes) {
+ var i4 = currentIndex;
+ while (i4 >= 0) {
+ var type = classTypes[i4];
+ if (type === SP) {
+ i4--;
+ } else {
+ return type;
+ }
+ }
+ return 0;
+ };
+ var _lineBreakAtIndex = function(codePoints, classTypes, indicies, index, forbiddenBreaks) {
+ if (indicies[index] === 0) {
+ return BREAK_NOT_ALLOWED$1;
+ }
+ var currentIndex = index - 1;
+ if (Array.isArray(forbiddenBreaks) && forbiddenBreaks[currentIndex] === true) {
+ return BREAK_NOT_ALLOWED$1;
+ }
+ var beforeIndex = currentIndex - 1;
+ var afterIndex = currentIndex + 1;
+ var current = classTypes[currentIndex];
+ var before = beforeIndex >= 0 ? classTypes[beforeIndex] : 0;
+ var next = classTypes[afterIndex];
+ if (current === CR$1 && next === LF$1) {
+ return BREAK_NOT_ALLOWED$1;
+ }
+ if (HARD_LINE_BREAKS.indexOf(current) !== -1) {
+ return BREAK_MANDATORY;
+ }
+ if (HARD_LINE_BREAKS.indexOf(next) !== -1) {
+ return BREAK_NOT_ALLOWED$1;
+ }
+ if (SPACE$1.indexOf(next) !== -1) {
+ return BREAK_NOT_ALLOWED$1;
+ }
+ if (previousNonSpaceClassType(currentIndex, classTypes) === ZW) {
+ return BREAK_ALLOWED$1;
+ }
+ if (UnicodeTrie$1.get(codePoints[currentIndex]) === ZWJ$1) {
+ return BREAK_NOT_ALLOWED$1;
+ }
+ if ((current === EB || current === EM) && UnicodeTrie$1.get(codePoints[afterIndex]) === ZWJ$1) {
+ return BREAK_NOT_ALLOWED$1;
+ }
+ if (current === WJ || next === WJ) {
+ return BREAK_NOT_ALLOWED$1;
+ }
+ if (current === GL) {
+ return BREAK_NOT_ALLOWED$1;
+ }
+ if ([SP, BA, HY].indexOf(current) === -1 && next === GL) {
+ return BREAK_NOT_ALLOWED$1;
+ }
+ if ([CL, CP, EX, IS, SY].indexOf(next) !== -1) {
+ return BREAK_NOT_ALLOWED$1;
+ }
+ if (previousNonSpaceClassType(currentIndex, classTypes) === OP) {
+ return BREAK_NOT_ALLOWED$1;
+ }
+ if (isAdjacentWithSpaceIgnored(QU, OP, currentIndex, classTypes)) {
+ return BREAK_NOT_ALLOWED$1;
+ }
+ if (isAdjacentWithSpaceIgnored([CL, CP], NS, currentIndex, classTypes)) {
+ return BREAK_NOT_ALLOWED$1;
+ }
+ if (isAdjacentWithSpaceIgnored(B2, B2, currentIndex, classTypes)) {
+ return BREAK_NOT_ALLOWED$1;
+ }
+ if (current === SP) {
+ return BREAK_ALLOWED$1;
+ }
+ if (current === QU || next === QU) {
+ return BREAK_NOT_ALLOWED$1;
+ }
+ if (next === CB || current === CB) {
+ return BREAK_ALLOWED$1;
+ }
+ if ([BA, HY, NS].indexOf(next) !== -1 || current === BB) {
+ return BREAK_NOT_ALLOWED$1;
+ }
+ if (before === HL && HYPHEN.indexOf(current) !== -1) {
+ return BREAK_NOT_ALLOWED$1;
+ }
+ if (current === SY && next === HL) {
+ return BREAK_NOT_ALLOWED$1;
+ }
+ if (next === IN) {
+ return BREAK_NOT_ALLOWED$1;
+ }
+ if (ALPHABETICS.indexOf(next) !== -1 && current === NU || ALPHABETICS.indexOf(current) !== -1 && next === NU) {
+ return BREAK_NOT_ALLOWED$1;
+ }
+ if (current === PR && [ID, EB, EM].indexOf(next) !== -1 || [ID, EB, EM].indexOf(current) !== -1 && next === PO) {
+ return BREAK_NOT_ALLOWED$1;
+ }
+ if (ALPHABETICS.indexOf(current) !== -1 && PREFIX_POSTFIX.indexOf(next) !== -1 || PREFIX_POSTFIX.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1) {
+ return BREAK_NOT_ALLOWED$1;
+ }
+ if (
+ // (PR | PO) × ( OP | HY )? NU
+ [PR, PO].indexOf(current) !== -1 && (next === NU || [OP, HY].indexOf(next) !== -1 && classTypes[afterIndex + 1] === NU) || // ( OP | HY ) × NU
+ [OP, HY].indexOf(current) !== -1 && next === NU || // NU × (NU | SY | IS)
+ current === NU && [NU, SY, IS].indexOf(next) !== -1
+ ) {
+ return BREAK_NOT_ALLOWED$1;
+ }
+ if ([NU, SY, IS, CL, CP].indexOf(next) !== -1) {
+ var prevIndex = currentIndex;
+ while (prevIndex >= 0) {
+ var type = classTypes[prevIndex];
+ if (type === NU) {
+ return BREAK_NOT_ALLOWED$1;
+ } else if ([SY, IS].indexOf(type) !== -1) {
+ prevIndex--;
+ } else {
+ break;
+ }
+ }
+ }
+ if ([PR, PO].indexOf(next) !== -1) {
+ var prevIndex = [CL, CP].indexOf(current) !== -1 ? beforeIndex : currentIndex;
+ while (prevIndex >= 0) {
+ var type = classTypes[prevIndex];
+ if (type === NU) {
+ return BREAK_NOT_ALLOWED$1;
+ } else if ([SY, IS].indexOf(type) !== -1) {
+ prevIndex--;
+ } else {
+ break;
+ }
+ }
+ }
+ if (JL === current && [JL, JV, H22, H3].indexOf(next) !== -1 || [JV, H22].indexOf(current) !== -1 && [JV, JT].indexOf(next) !== -1 || [JT, H3].indexOf(current) !== -1 && next === JT) {
+ return BREAK_NOT_ALLOWED$1;
+ }
+ if (KOREAN_SYLLABLE_BLOCK.indexOf(current) !== -1 && [IN, PO].indexOf(next) !== -1 || KOREAN_SYLLABLE_BLOCK.indexOf(next) !== -1 && current === PR) {
+ return BREAK_NOT_ALLOWED$1;
+ }
+ if (ALPHABETICS.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1) {
+ return BREAK_NOT_ALLOWED$1;
+ }
+ if (current === IS && ALPHABETICS.indexOf(next) !== -1) {
+ return BREAK_NOT_ALLOWED$1;
+ }
+ if (ALPHABETICS.concat(NU).indexOf(current) !== -1 && next === OP && ea_OP.indexOf(codePoints[afterIndex]) === -1 || ALPHABETICS.concat(NU).indexOf(next) !== -1 && current === CP) {
+ return BREAK_NOT_ALLOWED$1;
+ }
+ if (current === RI$1 && next === RI$1) {
+ var i4 = indicies[currentIndex];
+ var count = 1;
+ while (i4 > 0) {
+ i4--;
+ if (classTypes[i4] === RI$1) {
+ count++;
+ } else {
+ break;
+ }
+ }
+ if (count % 2 !== 0) {
+ return BREAK_NOT_ALLOWED$1;
+ }
+ }
+ if (current === EB && next === EM) {
+ return BREAK_NOT_ALLOWED$1;
+ }
+ return BREAK_ALLOWED$1;
+ };
+ var cssFormattedClasses = function(codePoints, options) {
+ if (!options) {
+ options = { lineBreak: "normal", wordBreak: "normal" };
+ }
+ var _a = codePointsToCharacterClasses(codePoints, options.lineBreak), indicies = _a[0], classTypes = _a[1], isLetterNumber = _a[2];
+ if (options.wordBreak === "break-all" || options.wordBreak === "break-word") {
+ classTypes = classTypes.map(function(type) {
+ return [NU, AL, SA].indexOf(type) !== -1 ? ID : type;
+ });
+ }
+ var forbiddenBreakpoints = options.wordBreak === "keep-all" ? isLetterNumber.map(function(letterNumber, i4) {
+ return letterNumber && codePoints[i4] >= 19968 && codePoints[i4] <= 40959;
+ }) : void 0;
+ return [indicies, classTypes, forbiddenBreakpoints];
+ };
+ var Break = (
+ /** @class */
+ function() {
+ function Break2(codePoints, lineBreak2, start5, end2) {
+ this.codePoints = codePoints;
+ this.required = lineBreak2 === BREAK_MANDATORY;
+ this.start = start5;
+ this.end = end2;
+ }
+ Break2.prototype.slice = function() {
+ return fromCodePoint$1.apply(void 0, this.codePoints.slice(this.start, this.end));
+ };
+ return Break2;
+ }()
+ );
+ var LineBreaker = function(str, options) {
+ var codePoints = toCodePoints$1(str);
+ var _a = cssFormattedClasses(codePoints, options), indicies = _a[0], classTypes = _a[1], forbiddenBreakpoints = _a[2];
+ var length = codePoints.length;
+ var lastEnd = 0;
+ var nextIndex = 0;
+ return {
+ next: function() {
+ if (nextIndex >= length) {
+ return { done: true, value: null };
+ }
+ var lineBreak2 = BREAK_NOT_ALLOWED$1;
+ while (nextIndex < length && (lineBreak2 = _lineBreakAtIndex(codePoints, classTypes, indicies, ++nextIndex, forbiddenBreakpoints)) === BREAK_NOT_ALLOWED$1) {
+ }
+ if (lineBreak2 !== BREAK_NOT_ALLOWED$1 || nextIndex === length) {
+ var value = new Break(codePoints, lineBreak2, lastEnd, nextIndex);
+ lastEnd = nextIndex;
+ return { value, done: false };
+ }
+ return { done: true, value: null };
+ }
+ };
+ };
+ var FLAG_UNRESTRICTED = 1 << 0;
+ var FLAG_ID = 1 << 1;
+ var FLAG_INTEGER = 1 << 2;
+ var FLAG_NUMBER = 1 << 3;
+ var LINE_FEED = 10;
+ var SOLIDUS = 47;
+ var REVERSE_SOLIDUS = 92;
+ var CHARACTER_TABULATION = 9;
+ var SPACE = 32;
+ var QUOTATION_MARK = 34;
+ var EQUALS_SIGN = 61;
+ var NUMBER_SIGN = 35;
+ var DOLLAR_SIGN = 36;
+ var PERCENTAGE_SIGN = 37;
+ var APOSTROPHE = 39;
+ var LEFT_PARENTHESIS = 40;
+ var RIGHT_PARENTHESIS = 41;
+ var LOW_LINE = 95;
+ var HYPHEN_MINUS = 45;
+ var EXCLAMATION_MARK = 33;
+ var LESS_THAN_SIGN = 60;
+ var GREATER_THAN_SIGN = 62;
+ var COMMERCIAL_AT = 64;
+ var LEFT_SQUARE_BRACKET = 91;
+ var RIGHT_SQUARE_BRACKET = 93;
+ var CIRCUMFLEX_ACCENT = 61;
+ var LEFT_CURLY_BRACKET = 123;
+ var QUESTION_MARK = 63;
+ var RIGHT_CURLY_BRACKET = 125;
+ var VERTICAL_LINE = 124;
+ var TILDE = 126;
+ var CONTROL = 128;
+ var REPLACEMENT_CHARACTER = 65533;
+ var ASTERISK = 42;
+ var PLUS_SIGN = 43;
+ var COMMA = 44;
+ var COLON = 58;
+ var SEMICOLON = 59;
+ var FULL_STOP = 46;
+ var NULL = 0;
+ var BACKSPACE = 8;
+ var LINE_TABULATION = 11;
+ var SHIFT_OUT = 14;
+ var INFORMATION_SEPARATOR_ONE = 31;
+ var DELETE = 127;
+ var EOF = -1;
+ var ZERO = 48;
+ var a3 = 97;
+ var e3 = 101;
+ var f3 = 102;
+ var u3 = 117;
+ var z3 = 122;
+ var A3 = 65;
+ var E2 = 69;
+ var F2 = 70;
+ var U2 = 85;
+ var Z2 = 90;
+ var isDigit = function(codePoint) {
+ return codePoint >= ZERO && codePoint <= 57;
+ };
+ var isSurrogateCodePoint = function(codePoint) {
+ return codePoint >= 55296 && codePoint <= 57343;
+ };
+ var isHex = function(codePoint) {
+ return isDigit(codePoint) || codePoint >= A3 && codePoint <= F2 || codePoint >= a3 && codePoint <= f3;
+ };
+ var isLowerCaseLetter = function(codePoint) {
+ return codePoint >= a3 && codePoint <= z3;
+ };
+ var isUpperCaseLetter = function(codePoint) {
+ return codePoint >= A3 && codePoint <= Z2;
+ };
+ var isLetter = function(codePoint) {
+ return isLowerCaseLetter(codePoint) || isUpperCaseLetter(codePoint);
+ };
+ var isNonASCIICodePoint = function(codePoint) {
+ return codePoint >= CONTROL;
+ };
+ var isWhiteSpace = function(codePoint) {
+ return codePoint === LINE_FEED || codePoint === CHARACTER_TABULATION || codePoint === SPACE;
+ };
+ var isNameStartCodePoint = function(codePoint) {
+ return isLetter(codePoint) || isNonASCIICodePoint(codePoint) || codePoint === LOW_LINE;
+ };
+ var isNameCodePoint = function(codePoint) {
+ return isNameStartCodePoint(codePoint) || isDigit(codePoint) || codePoint === HYPHEN_MINUS;
+ };
+ var isNonPrintableCodePoint = function(codePoint) {
+ return codePoint >= NULL && codePoint <= BACKSPACE || codePoint === LINE_TABULATION || codePoint >= SHIFT_OUT && codePoint <= INFORMATION_SEPARATOR_ONE || codePoint === DELETE;
+ };
+ var isValidEscape = function(c1, c22) {
+ if (c1 !== REVERSE_SOLIDUS) {
+ return false;
+ }
+ return c22 !== LINE_FEED;
+ };
+ var isIdentifierStart = function(c1, c22, c3) {
+ if (c1 === HYPHEN_MINUS) {
+ return isNameStartCodePoint(c22) || isValidEscape(c22, c3);
+ } else if (isNameStartCodePoint(c1)) {
+ return true;
+ } else if (c1 === REVERSE_SOLIDUS && isValidEscape(c1, c22)) {
+ return true;
+ }
+ return false;
+ };
+ var isNumberStart = function(c1, c22, c3) {
+ if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {
+ if (isDigit(c22)) {
+ return true;
+ }
+ return c22 === FULL_STOP && isDigit(c3);
+ }
+ if (c1 === FULL_STOP) {
+ return isDigit(c22);
+ }
+ return isDigit(c1);
+ };
+ var stringToNumber = function(codePoints) {
+ var c3 = 0;
+ var sign = 1;
+ if (codePoints[c3] === PLUS_SIGN || codePoints[c3] === HYPHEN_MINUS) {
+ if (codePoints[c3] === HYPHEN_MINUS) {
+ sign = -1;
+ }
+ c3++;
+ }
+ var integers = [];
+ while (isDigit(codePoints[c3])) {
+ integers.push(codePoints[c3++]);
+ }
+ var int = integers.length ? parseInt(fromCodePoint$1.apply(void 0, integers), 10) : 0;
+ if (codePoints[c3] === FULL_STOP) {
+ c3++;
+ }
+ var fraction = [];
+ while (isDigit(codePoints[c3])) {
+ fraction.push(codePoints[c3++]);
+ }
+ var fracd = fraction.length;
+ var frac = fracd ? parseInt(fromCodePoint$1.apply(void 0, fraction), 10) : 0;
+ if (codePoints[c3] === E2 || codePoints[c3] === e3) {
+ c3++;
+ }
+ var expsign = 1;
+ if (codePoints[c3] === PLUS_SIGN || codePoints[c3] === HYPHEN_MINUS) {
+ if (codePoints[c3] === HYPHEN_MINUS) {
+ expsign = -1;
+ }
+ c3++;
+ }
+ var exponent = [];
+ while (isDigit(codePoints[c3])) {
+ exponent.push(codePoints[c3++]);
+ }
+ var exp = exponent.length ? parseInt(fromCodePoint$1.apply(void 0, exponent), 10) : 0;
+ return sign * (int + frac * Math.pow(10, -fracd)) * Math.pow(10, expsign * exp);
+ };
+ var LEFT_PARENTHESIS_TOKEN = {
+ type: 2
+ /* LEFT_PARENTHESIS_TOKEN */
+ };
+ var RIGHT_PARENTHESIS_TOKEN = {
+ type: 3
+ /* RIGHT_PARENTHESIS_TOKEN */
+ };
+ var COMMA_TOKEN = {
+ type: 4
+ /* COMMA_TOKEN */
+ };
+ var SUFFIX_MATCH_TOKEN = {
+ type: 13
+ /* SUFFIX_MATCH_TOKEN */
+ };
+ var PREFIX_MATCH_TOKEN = {
+ type: 8
+ /* PREFIX_MATCH_TOKEN */
+ };
+ var COLUMN_TOKEN = {
+ type: 21
+ /* COLUMN_TOKEN */
+ };
+ var DASH_MATCH_TOKEN = {
+ type: 9
+ /* DASH_MATCH_TOKEN */
+ };
+ var INCLUDE_MATCH_TOKEN = {
+ type: 10
+ /* INCLUDE_MATCH_TOKEN */
+ };
+ var LEFT_CURLY_BRACKET_TOKEN = {
+ type: 11
+ /* LEFT_CURLY_BRACKET_TOKEN */
+ };
+ var RIGHT_CURLY_BRACKET_TOKEN = {
+ type: 12
+ /* RIGHT_CURLY_BRACKET_TOKEN */
+ };
+ var SUBSTRING_MATCH_TOKEN = {
+ type: 14
+ /* SUBSTRING_MATCH_TOKEN */
+ };
+ var BAD_URL_TOKEN = {
+ type: 23
+ /* BAD_URL_TOKEN */
+ };
+ var BAD_STRING_TOKEN = {
+ type: 1
+ /* BAD_STRING_TOKEN */
+ };
+ var CDO_TOKEN = {
+ type: 25
+ /* CDO_TOKEN */
+ };
+ var CDC_TOKEN = {
+ type: 24
+ /* CDC_TOKEN */
+ };
+ var COLON_TOKEN = {
+ type: 26
+ /* COLON_TOKEN */
+ };
+ var SEMICOLON_TOKEN = {
+ type: 27
+ /* SEMICOLON_TOKEN */
+ };
+ var LEFT_SQUARE_BRACKET_TOKEN = {
+ type: 28
+ /* LEFT_SQUARE_BRACKET_TOKEN */
+ };
+ var RIGHT_SQUARE_BRACKET_TOKEN = {
+ type: 29
+ /* RIGHT_SQUARE_BRACKET_TOKEN */
+ };
+ var WHITESPACE_TOKEN = {
+ type: 31
+ /* WHITESPACE_TOKEN */
+ };
+ var EOF_TOKEN = {
+ type: 32
+ /* EOF_TOKEN */
+ };
+ var Tokenizer = (
+ /** @class */
+ function() {
+ function Tokenizer2() {
+ this._value = [];
+ }
+ Tokenizer2.prototype.write = function(chunk) {
+ this._value = this._value.concat(toCodePoints$1(chunk));
+ };
+ Tokenizer2.prototype.read = function() {
+ var tokens2 = [];
+ var token = this.consumeToken();
+ while (token !== EOF_TOKEN) {
+ tokens2.push(token);
+ token = this.consumeToken();
+ }
+ return tokens2;
+ };
+ Tokenizer2.prototype.consumeToken = function() {
+ var codePoint = this.consumeCodePoint();
+ switch (codePoint) {
+ case QUOTATION_MARK:
+ return this.consumeStringToken(QUOTATION_MARK);
+ case NUMBER_SIGN:
+ var c1 = this.peekCodePoint(0);
+ var c22 = this.peekCodePoint(1);
+ var c3 = this.peekCodePoint(2);
+ if (isNameCodePoint(c1) || isValidEscape(c22, c3)) {
+ var flags = isIdentifierStart(c1, c22, c3) ? FLAG_ID : FLAG_UNRESTRICTED;
+ var value = this.consumeName();
+ return { type: 5, value, flags };
+ }
+ break;
+ case DOLLAR_SIGN:
+ if (this.peekCodePoint(0) === EQUALS_SIGN) {
+ this.consumeCodePoint();
+ return SUFFIX_MATCH_TOKEN;
+ }
+ break;
+ case APOSTROPHE:
+ return this.consumeStringToken(APOSTROPHE);
+ case LEFT_PARENTHESIS:
+ return LEFT_PARENTHESIS_TOKEN;
+ case RIGHT_PARENTHESIS:
+ return RIGHT_PARENTHESIS_TOKEN;
+ case ASTERISK:
+ if (this.peekCodePoint(0) === EQUALS_SIGN) {
+ this.consumeCodePoint();
+ return SUBSTRING_MATCH_TOKEN;
+ }
+ break;
+ case PLUS_SIGN:
+ if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {
+ this.reconsumeCodePoint(codePoint);
+ return this.consumeNumericToken();
+ }
+ break;
+ case COMMA:
+ return COMMA_TOKEN;
+ case HYPHEN_MINUS:
+ var e1 = codePoint;
+ var e22 = this.peekCodePoint(0);
+ var e32 = this.peekCodePoint(1);
+ if (isNumberStart(e1, e22, e32)) {
+ this.reconsumeCodePoint(codePoint);
+ return this.consumeNumericToken();
+ }
+ if (isIdentifierStart(e1, e22, e32)) {
+ this.reconsumeCodePoint(codePoint);
+ return this.consumeIdentLikeToken();
+ }
+ if (e22 === HYPHEN_MINUS && e32 === GREATER_THAN_SIGN) {
+ this.consumeCodePoint();
+ this.consumeCodePoint();
+ return CDC_TOKEN;
+ }
+ break;
+ case FULL_STOP:
+ if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {
+ this.reconsumeCodePoint(codePoint);
+ return this.consumeNumericToken();
+ }
+ break;
+ case SOLIDUS:
+ if (this.peekCodePoint(0) === ASTERISK) {
+ this.consumeCodePoint();
+ while (true) {
+ var c4 = this.consumeCodePoint();
+ if (c4 === ASTERISK) {
+ c4 = this.consumeCodePoint();
+ if (c4 === SOLIDUS) {
+ return this.consumeToken();
+ }
+ }
+ if (c4 === EOF) {
+ return this.consumeToken();
+ }
+ }
+ }
+ break;
+ case COLON:
+ return COLON_TOKEN;
+ case SEMICOLON:
+ return SEMICOLON_TOKEN;
+ case LESS_THAN_SIGN:
+ if (this.peekCodePoint(0) === EXCLAMATION_MARK && this.peekCodePoint(1) === HYPHEN_MINUS && this.peekCodePoint(2) === HYPHEN_MINUS) {
+ this.consumeCodePoint();
+ this.consumeCodePoint();
+ return CDO_TOKEN;
+ }
+ break;
+ case COMMERCIAL_AT:
+ var a1 = this.peekCodePoint(0);
+ var a22 = this.peekCodePoint(1);
+ var a32 = this.peekCodePoint(2);
+ if (isIdentifierStart(a1, a22, a32)) {
+ var value = this.consumeName();
+ return { type: 7, value };
+ }
+ break;
+ case LEFT_SQUARE_BRACKET:
+ return LEFT_SQUARE_BRACKET_TOKEN;
+ case REVERSE_SOLIDUS:
+ if (isValidEscape(codePoint, this.peekCodePoint(0))) {
+ this.reconsumeCodePoint(codePoint);
+ return this.consumeIdentLikeToken();
+ }
+ break;
+ case RIGHT_SQUARE_BRACKET:
+ return RIGHT_SQUARE_BRACKET_TOKEN;
+ case CIRCUMFLEX_ACCENT:
+ if (this.peekCodePoint(0) === EQUALS_SIGN) {
+ this.consumeCodePoint();
+ return PREFIX_MATCH_TOKEN;
+ }
+ break;
+ case LEFT_CURLY_BRACKET:
+ return LEFT_CURLY_BRACKET_TOKEN;
+ case RIGHT_CURLY_BRACKET:
+ return RIGHT_CURLY_BRACKET_TOKEN;
+ case u3:
+ case U2:
+ var u1 = this.peekCodePoint(0);
+ var u22 = this.peekCodePoint(1);
+ if (u1 === PLUS_SIGN && (isHex(u22) || u22 === QUESTION_MARK)) {
+ this.consumeCodePoint();
+ this.consumeUnicodeRangeToken();
+ }
+ this.reconsumeCodePoint(codePoint);
+ return this.consumeIdentLikeToken();
+ case VERTICAL_LINE:
+ if (this.peekCodePoint(0) === EQUALS_SIGN) {
+ this.consumeCodePoint();
+ return DASH_MATCH_TOKEN;
+ }
+ if (this.peekCodePoint(0) === VERTICAL_LINE) {
+ this.consumeCodePoint();
+ return COLUMN_TOKEN;
+ }
+ break;
+ case TILDE:
+ if (this.peekCodePoint(0) === EQUALS_SIGN) {
+ this.consumeCodePoint();
+ return INCLUDE_MATCH_TOKEN;
+ }
+ break;
+ case EOF:
+ return EOF_TOKEN;
+ }
+ if (isWhiteSpace(codePoint)) {
+ this.consumeWhiteSpace();
+ return WHITESPACE_TOKEN;
+ }
+ if (isDigit(codePoint)) {
+ this.reconsumeCodePoint(codePoint);
+ return this.consumeNumericToken();
+ }
+ if (isNameStartCodePoint(codePoint)) {
+ this.reconsumeCodePoint(codePoint);
+ return this.consumeIdentLikeToken();
+ }
+ return { type: 6, value: fromCodePoint$1(codePoint) };
+ };
+ Tokenizer2.prototype.consumeCodePoint = function() {
+ var value = this._value.shift();
+ return typeof value === "undefined" ? -1 : value;
+ };
+ Tokenizer2.prototype.reconsumeCodePoint = function(codePoint) {
+ this._value.unshift(codePoint);
+ };
+ Tokenizer2.prototype.peekCodePoint = function(delta) {
+ if (delta >= this._value.length) {
+ return -1;
+ }
+ return this._value[delta];
+ };
+ Tokenizer2.prototype.consumeUnicodeRangeToken = function() {
+ var digits = [];
+ var codePoint = this.consumeCodePoint();
+ while (isHex(codePoint) && digits.length < 6) {
+ digits.push(codePoint);
+ codePoint = this.consumeCodePoint();
+ }
+ var questionMarks = false;
+ while (codePoint === QUESTION_MARK && digits.length < 6) {
+ digits.push(codePoint);
+ codePoint = this.consumeCodePoint();
+ questionMarks = true;
+ }
+ if (questionMarks) {
+ var start_1 = parseInt(fromCodePoint$1.apply(void 0, digits.map(function(digit) {
+ return digit === QUESTION_MARK ? ZERO : digit;
+ })), 16);
+ var end2 = parseInt(fromCodePoint$1.apply(void 0, digits.map(function(digit) {
+ return digit === QUESTION_MARK ? F2 : digit;
+ })), 16);
+ return { type: 30, start: start_1, end: end2 };
+ }
+ var start5 = parseInt(fromCodePoint$1.apply(void 0, digits), 16);
+ if (this.peekCodePoint(0) === HYPHEN_MINUS && isHex(this.peekCodePoint(1))) {
+ this.consumeCodePoint();
+ codePoint = this.consumeCodePoint();
+ var endDigits = [];
+ while (isHex(codePoint) && endDigits.length < 6) {
+ endDigits.push(codePoint);
+ codePoint = this.consumeCodePoint();
+ }
+ var end2 = parseInt(fromCodePoint$1.apply(void 0, endDigits), 16);
+ return { type: 30, start: start5, end: end2 };
+ } else {
+ return { type: 30, start: start5, end: start5 };
+ }
+ };
+ Tokenizer2.prototype.consumeIdentLikeToken = function() {
+ var value = this.consumeName();
+ if (value.toLowerCase() === "url" && this.peekCodePoint(0) === LEFT_PARENTHESIS) {
+ this.consumeCodePoint();
+ return this.consumeUrlToken();
+ } else if (this.peekCodePoint(0) === LEFT_PARENTHESIS) {
+ this.consumeCodePoint();
+ return { type: 19, value };
+ }
+ return { type: 20, value };
+ };
+ Tokenizer2.prototype.consumeUrlToken = function() {
+ var value = [];
+ this.consumeWhiteSpace();
+ if (this.peekCodePoint(0) === EOF) {
+ return { type: 22, value: "" };
+ }
+ var next = this.peekCodePoint(0);
+ if (next === APOSTROPHE || next === QUOTATION_MARK) {
+ var stringToken = this.consumeStringToken(this.consumeCodePoint());
+ if (stringToken.type === 0) {
+ this.consumeWhiteSpace();
+ if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {
+ this.consumeCodePoint();
+ return { type: 22, value: stringToken.value };
+ }
+ }
+ this.consumeBadUrlRemnants();
+ return BAD_URL_TOKEN;
+ }
+ while (true) {
+ var codePoint = this.consumeCodePoint();
+ if (codePoint === EOF || codePoint === RIGHT_PARENTHESIS) {
+ return { type: 22, value: fromCodePoint$1.apply(void 0, value) };
+ } else if (isWhiteSpace(codePoint)) {
+ this.consumeWhiteSpace();
+ if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {
+ this.consumeCodePoint();
+ return { type: 22, value: fromCodePoint$1.apply(void 0, value) };
+ }
+ this.consumeBadUrlRemnants();
+ return BAD_URL_TOKEN;
+ } else if (codePoint === QUOTATION_MARK || codePoint === APOSTROPHE || codePoint === LEFT_PARENTHESIS || isNonPrintableCodePoint(codePoint)) {
+ this.consumeBadUrlRemnants();
+ return BAD_URL_TOKEN;
+ } else if (codePoint === REVERSE_SOLIDUS) {
+ if (isValidEscape(codePoint, this.peekCodePoint(0))) {
+ value.push(this.consumeEscapedCodePoint());
+ } else {
+ this.consumeBadUrlRemnants();
+ return BAD_URL_TOKEN;
+ }
+ } else {
+ value.push(codePoint);
+ }
+ }
+ };
+ Tokenizer2.prototype.consumeWhiteSpace = function() {
+ while (isWhiteSpace(this.peekCodePoint(0))) {
+ this.consumeCodePoint();
+ }
+ };
+ Tokenizer2.prototype.consumeBadUrlRemnants = function() {
+ while (true) {
+ var codePoint = this.consumeCodePoint();
+ if (codePoint === RIGHT_PARENTHESIS || codePoint === EOF) {
+ return;
+ }
+ if (isValidEscape(codePoint, this.peekCodePoint(0))) {
+ this.consumeEscapedCodePoint();
+ }
+ }
+ };
+ Tokenizer2.prototype.consumeStringSlice = function(count) {
+ var SLICE_STACK_SIZE = 5e4;
+ var value = "";
+ while (count > 0) {
+ var amount = Math.min(SLICE_STACK_SIZE, count);
+ value += fromCodePoint$1.apply(void 0, this._value.splice(0, amount));
+ count -= amount;
+ }
+ this._value.shift();
+ return value;
+ };
+ Tokenizer2.prototype.consumeStringToken = function(endingCodePoint) {
+ var value = "";
+ var i4 = 0;
+ do {
+ var codePoint = this._value[i4];
+ if (codePoint === EOF || codePoint === void 0 || codePoint === endingCodePoint) {
+ value += this.consumeStringSlice(i4);
+ return { type: 0, value };
+ }
+ if (codePoint === LINE_FEED) {
+ this._value.splice(0, i4);
+ return BAD_STRING_TOKEN;
+ }
+ if (codePoint === REVERSE_SOLIDUS) {
+ var next = this._value[i4 + 1];
+ if (next !== EOF && next !== void 0) {
+ if (next === LINE_FEED) {
+ value += this.consumeStringSlice(i4);
+ i4 = -1;
+ this._value.shift();
+ } else if (isValidEscape(codePoint, next)) {
+ value += this.consumeStringSlice(i4);
+ value += fromCodePoint$1(this.consumeEscapedCodePoint());
+ i4 = -1;
+ }
+ }
+ }
+ i4++;
+ } while (true);
+ };
+ Tokenizer2.prototype.consumeNumber = function() {
+ var repr = [];
+ var type = FLAG_INTEGER;
+ var c1 = this.peekCodePoint(0);
+ if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {
+ repr.push(this.consumeCodePoint());
+ }
+ while (isDigit(this.peekCodePoint(0))) {
+ repr.push(this.consumeCodePoint());
+ }
+ c1 = this.peekCodePoint(0);
+ var c22 = this.peekCodePoint(1);
+ if (c1 === FULL_STOP && isDigit(c22)) {
+ repr.push(this.consumeCodePoint(), this.consumeCodePoint());
+ type = FLAG_NUMBER;
+ while (isDigit(this.peekCodePoint(0))) {
+ repr.push(this.consumeCodePoint());
+ }
+ }
+ c1 = this.peekCodePoint(0);
+ c22 = this.peekCodePoint(1);
+ var c3 = this.peekCodePoint(2);
+ if ((c1 === E2 || c1 === e3) && ((c22 === PLUS_SIGN || c22 === HYPHEN_MINUS) && isDigit(c3) || isDigit(c22))) {
+ repr.push(this.consumeCodePoint(), this.consumeCodePoint());
+ type = FLAG_NUMBER;
+ while (isDigit(this.peekCodePoint(0))) {
+ repr.push(this.consumeCodePoint());
+ }
+ }
+ return [stringToNumber(repr), type];
+ };
+ Tokenizer2.prototype.consumeNumericToken = function() {
+ var _a = this.consumeNumber(), number = _a[0], flags = _a[1];
+ var c1 = this.peekCodePoint(0);
+ var c22 = this.peekCodePoint(1);
+ var c3 = this.peekCodePoint(2);
+ if (isIdentifierStart(c1, c22, c3)) {
+ var unit = this.consumeName();
+ return { type: 15, number, flags, unit };
+ }
+ if (c1 === PERCENTAGE_SIGN) {
+ this.consumeCodePoint();
+ return { type: 16, number, flags };
+ }
+ return { type: 17, number, flags };
+ };
+ Tokenizer2.prototype.consumeEscapedCodePoint = function() {
+ var codePoint = this.consumeCodePoint();
+ if (isHex(codePoint)) {
+ var hex = fromCodePoint$1(codePoint);
+ while (isHex(this.peekCodePoint(0)) && hex.length < 6) {
+ hex += fromCodePoint$1(this.consumeCodePoint());
+ }
+ if (isWhiteSpace(this.peekCodePoint(0))) {
+ this.consumeCodePoint();
+ }
+ var hexCodePoint = parseInt(hex, 16);
+ if (hexCodePoint === 0 || isSurrogateCodePoint(hexCodePoint) || hexCodePoint > 1114111) {
+ return REPLACEMENT_CHARACTER;
+ }
+ return hexCodePoint;
+ }
+ if (codePoint === EOF) {
+ return REPLACEMENT_CHARACTER;
+ }
+ return codePoint;
+ };
+ Tokenizer2.prototype.consumeName = function() {
+ var result = "";
+ while (true) {
+ var codePoint = this.consumeCodePoint();
+ if (isNameCodePoint(codePoint)) {
+ result += fromCodePoint$1(codePoint);
+ } else if (isValidEscape(codePoint, this.peekCodePoint(0))) {
+ result += fromCodePoint$1(this.consumeEscapedCodePoint());
+ } else {
+ this.reconsumeCodePoint(codePoint);
+ return result;
+ }
+ }
+ };
+ return Tokenizer2;
+ }()
+ );
+ var Parser = (
+ /** @class */
+ function() {
+ function Parser2(tokens2) {
+ this._tokens = tokens2;
+ }
+ Parser2.create = function(value) {
+ var tokenizer = new Tokenizer();
+ tokenizer.write(value);
+ return new Parser2(tokenizer.read());
+ };
+ Parser2.parseValue = function(value) {
+ return Parser2.create(value).parseComponentValue();
+ };
+ Parser2.parseValues = function(value) {
+ return Parser2.create(value).parseComponentValues();
+ };
+ Parser2.prototype.parseComponentValue = function() {
+ var token = this.consumeToken();
+ while (token.type === 31) {
+ token = this.consumeToken();
+ }
+ if (token.type === 32) {
+ throw new SyntaxError("Error parsing CSS component value, unexpected EOF");
+ }
+ this.reconsumeToken(token);
+ var value = this.consumeComponentValue();
+ do {
+ token = this.consumeToken();
+ } while (token.type === 31);
+ if (token.type === 32) {
+ return value;
+ }
+ throw new SyntaxError("Error parsing CSS component value, multiple values found when expecting only one");
+ };
+ Parser2.prototype.parseComponentValues = function() {
+ var values = [];
+ while (true) {
+ var value = this.consumeComponentValue();
+ if (value.type === 32) {
+ return values;
+ }
+ values.push(value);
+ values.push();
+ }
+ };
+ Parser2.prototype.consumeComponentValue = function() {
+ var token = this.consumeToken();
+ switch (token.type) {
+ case 11:
+ case 28:
+ case 2:
+ return this.consumeSimpleBlock(token.type);
+ case 19:
+ return this.consumeFunction(token);
+ }
+ return token;
+ };
+ Parser2.prototype.consumeSimpleBlock = function(type) {
+ var block = { type, values: [] };
+ var token = this.consumeToken();
+ while (true) {
+ if (token.type === 32 || isEndingTokenFor(token, type)) {
+ return block;
+ }
+ this.reconsumeToken(token);
+ block.values.push(this.consumeComponentValue());
+ token = this.consumeToken();
+ }
+ };
+ Parser2.prototype.consumeFunction = function(functionToken) {
+ var cssFunction = {
+ name: functionToken.value,
+ values: [],
+ type: 18
+ /* FUNCTION */
+ };
+ while (true) {
+ var token = this.consumeToken();
+ if (token.type === 32 || token.type === 3) {
+ return cssFunction;
+ }
+ this.reconsumeToken(token);
+ cssFunction.values.push(this.consumeComponentValue());
+ }
+ };
+ Parser2.prototype.consumeToken = function() {
+ var token = this._tokens.shift();
+ return typeof token === "undefined" ? EOF_TOKEN : token;
+ };
+ Parser2.prototype.reconsumeToken = function(token) {
+ this._tokens.unshift(token);
+ };
+ return Parser2;
+ }()
+ );
+ var isDimensionToken = function(token) {
+ return token.type === 15;
+ };
+ var isNumberToken = function(token) {
+ return token.type === 17;
+ };
+ var isIdentToken = function(token) {
+ return token.type === 20;
+ };
+ var isStringToken = function(token) {
+ return token.type === 0;
+ };
+ var isIdentWithValue = function(token, value) {
+ return isIdentToken(token) && token.value === value;
+ };
+ var nonWhiteSpace = function(token) {
+ return token.type !== 31;
+ };
+ var nonFunctionArgSeparator = function(token) {
+ return token.type !== 31 && token.type !== 4;
+ };
+ var parseFunctionArgs = function(tokens2) {
+ var args = [];
+ var arg = [];
+ tokens2.forEach(function(token) {
+ if (token.type === 4) {
+ if (arg.length === 0) {
+ throw new Error("Error parsing function args, zero tokens for arg");
+ }
+ args.push(arg);
+ arg = [];
+ return;
+ }
+ if (token.type !== 31) {
+ arg.push(token);
+ }
+ });
+ if (arg.length) {
+ args.push(arg);
+ }
+ return args;
+ };
+ var isEndingTokenFor = function(token, type) {
+ if (type === 11 && token.type === 12) {
+ return true;
+ }
+ if (type === 28 && token.type === 29) {
+ return true;
+ }
+ return type === 2 && token.type === 3;
+ };
+ var isLength = function(token) {
+ return token.type === 17 || token.type === 15;
+ };
+ var isLengthPercentage = function(token) {
+ return token.type === 16 || isLength(token);
+ };
+ var parseLengthPercentageTuple = function(tokens2) {
+ return tokens2.length > 1 ? [tokens2[0], tokens2[1]] : [tokens2[0]];
+ };
+ var ZERO_LENGTH = {
+ type: 17,
+ number: 0,
+ flags: FLAG_INTEGER
+ };
+ var FIFTY_PERCENT = {
+ type: 16,
+ number: 50,
+ flags: FLAG_INTEGER
+ };
+ var HUNDRED_PERCENT = {
+ type: 16,
+ number: 100,
+ flags: FLAG_INTEGER
+ };
+ var getAbsoluteValueForTuple = function(tuple, width, height) {
+ var x3 = tuple[0], y3 = tuple[1];
+ return [getAbsoluteValue(x3, width), getAbsoluteValue(typeof y3 !== "undefined" ? y3 : x3, height)];
+ };
+ var getAbsoluteValue = function(token, parent) {
+ if (token.type === 16) {
+ return token.number / 100 * parent;
+ }
+ if (isDimensionToken(token)) {
+ switch (token.unit) {
+ case "rem":
+ case "em":
+ return 16 * token.number;
+ case "px":
+ default:
+ return token.number;
+ }
+ }
+ return token.number;
+ };
+ var DEG = "deg";
+ var GRAD = "grad";
+ var RAD = "rad";
+ var TURN = "turn";
+ var angle = {
+ name: "angle",
+ parse: function(_context, value) {
+ if (value.type === 15) {
+ switch (value.unit) {
+ case DEG:
+ return Math.PI * value.number / 180;
+ case GRAD:
+ return Math.PI / 200 * value.number;
+ case RAD:
+ return value.number;
+ case TURN:
+ return Math.PI * 2 * value.number;
+ }
+ }
+ throw new Error("Unsupported angle type");
+ }
+ };
+ var isAngle = function(value) {
+ if (value.type === 15) {
+ if (value.unit === DEG || value.unit === GRAD || value.unit === RAD || value.unit === TURN) {
+ return true;
+ }
+ }
+ return false;
+ };
+ var parseNamedSide = function(tokens2) {
+ var sideOrCorner = tokens2.filter(isIdentToken).map(function(ident) {
+ return ident.value;
+ }).join(" ");
+ switch (sideOrCorner) {
+ case "to bottom right":
+ case "to right bottom":
+ case "left top":
+ case "top left":
+ return [ZERO_LENGTH, ZERO_LENGTH];
+ case "to top":
+ case "bottom":
+ return deg(0);
+ case "to bottom left":
+ case "to left bottom":
+ case "right top":
+ case "top right":
+ return [ZERO_LENGTH, HUNDRED_PERCENT];
+ case "to right":
+ case "left":
+ return deg(90);
+ case "to top left":
+ case "to left top":
+ case "right bottom":
+ case "bottom right":
+ return [HUNDRED_PERCENT, HUNDRED_PERCENT];
+ case "to bottom":
+ case "top":
+ return deg(180);
+ case "to top right":
+ case "to right top":
+ case "left bottom":
+ case "bottom left":
+ return [HUNDRED_PERCENT, ZERO_LENGTH];
+ case "to left":
+ case "right":
+ return deg(270);
+ }
+ return 0;
+ };
+ var deg = function(deg2) {
+ return Math.PI * deg2 / 180;
+ };
+ var color$1 = {
+ name: "color",
+ parse: function(context, value) {
+ if (value.type === 18) {
+ var colorFunction = SUPPORTED_COLOR_FUNCTIONS[value.name];
+ if (typeof colorFunction === "undefined") {
+ throw new Error('Attempting to parse an unsupported color function "' + value.name + '"');
+ }
+ return colorFunction(context, value.values);
+ }
+ if (value.type === 5) {
+ if (value.value.length === 3) {
+ var r3 = value.value.substring(0, 1);
+ var g3 = value.value.substring(1, 2);
+ var b3 = value.value.substring(2, 3);
+ return pack(parseInt(r3 + r3, 16), parseInt(g3 + g3, 16), parseInt(b3 + b3, 16), 1);
+ }
+ if (value.value.length === 4) {
+ var r3 = value.value.substring(0, 1);
+ var g3 = value.value.substring(1, 2);
+ var b3 = value.value.substring(2, 3);
+ var a4 = value.value.substring(3, 4);
+ return pack(parseInt(r3 + r3, 16), parseInt(g3 + g3, 16), parseInt(b3 + b3, 16), parseInt(a4 + a4, 16) / 255);
+ }
+ if (value.value.length === 6) {
+ var r3 = value.value.substring(0, 2);
+ var g3 = value.value.substring(2, 4);
+ var b3 = value.value.substring(4, 6);
+ return pack(parseInt(r3, 16), parseInt(g3, 16), parseInt(b3, 16), 1);
+ }
+ if (value.value.length === 8) {
+ var r3 = value.value.substring(0, 2);
+ var g3 = value.value.substring(2, 4);
+ var b3 = value.value.substring(4, 6);
+ var a4 = value.value.substring(6, 8);
+ return pack(parseInt(r3, 16), parseInt(g3, 16), parseInt(b3, 16), parseInt(a4, 16) / 255);
+ }
+ }
+ if (value.type === 20) {
+ var namedColor = COLORS[value.value.toUpperCase()];
+ if (typeof namedColor !== "undefined") {
+ return namedColor;
+ }
+ }
+ return COLORS.TRANSPARENT;
+ }
+ };
+ var isTransparent = function(color2) {
+ return (255 & color2) === 0;
+ };
+ var asString = function(color2) {
+ var alpha = 255 & color2;
+ var blue = 255 & color2 >> 8;
+ var green = 255 & color2 >> 16;
+ var red = 255 & color2 >> 24;
+ return alpha < 255 ? "rgba(" + red + "," + green + "," + blue + "," + alpha / 255 + ")" : "rgb(" + red + "," + green + "," + blue + ")";
+ };
+ var pack = function(r3, g3, b3, a4) {
+ return (r3 << 24 | g3 << 16 | b3 << 8 | Math.round(a4 * 255) << 0) >>> 0;
+ };
+ var getTokenColorValue = function(token, i4) {
+ if (token.type === 17) {
+ return token.number;
+ }
+ if (token.type === 16) {
+ var max2 = i4 === 3 ? 1 : 255;
+ return i4 === 3 ? token.number / 100 * max2 : Math.round(token.number / 100 * max2);
+ }
+ return 0;
+ };
+ var rgb = function(_context, args) {
+ var tokens2 = args.filter(nonFunctionArgSeparator);
+ if (tokens2.length === 3) {
+ var _a = tokens2.map(getTokenColorValue), r3 = _a[0], g3 = _a[1], b3 = _a[2];
+ return pack(r3, g3, b3, 1);
+ }
+ if (tokens2.length === 4) {
+ var _b = tokens2.map(getTokenColorValue), r3 = _b[0], g3 = _b[1], b3 = _b[2], a4 = _b[3];
+ return pack(r3, g3, b3, a4);
+ }
+ return 0;
+ };
+ function hue2rgb(t1, t22, hue) {
+ if (hue < 0) {
+ hue += 1;
+ }
+ if (hue >= 1) {
+ hue -= 1;
+ }
+ if (hue < 1 / 6) {
+ return (t22 - t1) * hue * 6 + t1;
+ } else if (hue < 1 / 2) {
+ return t22;
+ } else if (hue < 2 / 3) {
+ return (t22 - t1) * 6 * (2 / 3 - hue) + t1;
+ } else {
+ return t1;
+ }
+ }
+ var hsl = function(context, args) {
+ var tokens2 = args.filter(nonFunctionArgSeparator);
+ var hue = tokens2[0], saturation = tokens2[1], lightness = tokens2[2], alpha = tokens2[3];
+ var h3 = (hue.type === 17 ? deg(hue.number) : angle.parse(context, hue)) / (Math.PI * 2);
+ var s3 = isLengthPercentage(saturation) ? saturation.number / 100 : 0;
+ var l3 = isLengthPercentage(lightness) ? lightness.number / 100 : 0;
+ var a4 = typeof alpha !== "undefined" && isLengthPercentage(alpha) ? getAbsoluteValue(alpha, 1) : 1;
+ if (s3 === 0) {
+ return pack(l3 * 255, l3 * 255, l3 * 255, 1);
+ }
+ var t22 = l3 <= 0.5 ? l3 * (s3 + 1) : l3 + s3 - l3 * s3;
+ var t1 = l3 * 2 - t22;
+ var r3 = hue2rgb(t1, t22, h3 + 1 / 3);
+ var g3 = hue2rgb(t1, t22, h3);
+ var b3 = hue2rgb(t1, t22, h3 - 1 / 3);
+ return pack(r3 * 255, g3 * 255, b3 * 255, a4);
+ };
+ var SUPPORTED_COLOR_FUNCTIONS = {
+ hsl,
+ hsla: hsl,
+ rgb,
+ rgba: rgb
+ };
+ var parseColor = function(context, value) {
+ return color$1.parse(context, Parser.create(value).parseComponentValue());
+ };
+ var COLORS = {
+ ALICEBLUE: 4042850303,
+ ANTIQUEWHITE: 4209760255,
+ AQUA: 16777215,
+ AQUAMARINE: 2147472639,
+ AZURE: 4043309055,
+ BEIGE: 4126530815,
+ BISQUE: 4293182719,
+ BLACK: 255,
+ BLANCHEDALMOND: 4293643775,
+ BLUE: 65535,
+ BLUEVIOLET: 2318131967,
+ BROWN: 2771004159,
+ BURLYWOOD: 3736635391,
+ CADETBLUE: 1604231423,
+ CHARTREUSE: 2147418367,
+ CHOCOLATE: 3530104575,
+ CORAL: 4286533887,
+ CORNFLOWERBLUE: 1687547391,
+ CORNSILK: 4294499583,
+ CRIMSON: 3692313855,
+ CYAN: 16777215,
+ DARKBLUE: 35839,
+ DARKCYAN: 9145343,
+ DARKGOLDENROD: 3095837695,
+ DARKGRAY: 2846468607,
+ DARKGREEN: 6553855,
+ DARKGREY: 2846468607,
+ DARKKHAKI: 3182914559,
+ DARKMAGENTA: 2332068863,
+ DARKOLIVEGREEN: 1433087999,
+ DARKORANGE: 4287365375,
+ DARKORCHID: 2570243327,
+ DARKRED: 2332033279,
+ DARKSALMON: 3918953215,
+ DARKSEAGREEN: 2411499519,
+ DARKSLATEBLUE: 1211993087,
+ DARKSLATEGRAY: 793726975,
+ DARKSLATEGREY: 793726975,
+ DARKTURQUOISE: 13554175,
+ DARKVIOLET: 2483082239,
+ DEEPPINK: 4279538687,
+ DEEPSKYBLUE: 12582911,
+ DIMGRAY: 1768516095,
+ DIMGREY: 1768516095,
+ DODGERBLUE: 512819199,
+ FIREBRICK: 2988581631,
+ FLORALWHITE: 4294635775,
+ FORESTGREEN: 579543807,
+ FUCHSIA: 4278255615,
+ GAINSBORO: 3705462015,
+ GHOSTWHITE: 4177068031,
+ GOLD: 4292280575,
+ GOLDENROD: 3668254975,
+ GRAY: 2155905279,
+ GREEN: 8388863,
+ GREENYELLOW: 2919182335,
+ GREY: 2155905279,
+ HONEYDEW: 4043305215,
+ HOTPINK: 4285117695,
+ INDIANRED: 3445382399,
+ INDIGO: 1258324735,
+ IVORY: 4294963455,
+ KHAKI: 4041641215,
+ LAVENDER: 3873897215,
+ LAVENDERBLUSH: 4293981695,
+ LAWNGREEN: 2096890111,
+ LEMONCHIFFON: 4294626815,
+ LIGHTBLUE: 2916673279,
+ LIGHTCORAL: 4034953471,
+ LIGHTCYAN: 3774873599,
+ LIGHTGOLDENRODYELLOW: 4210742015,
+ LIGHTGRAY: 3553874943,
+ LIGHTGREEN: 2431553791,
+ LIGHTGREY: 3553874943,
+ LIGHTPINK: 4290167295,
+ LIGHTSALMON: 4288707327,
+ LIGHTSEAGREEN: 548580095,
+ LIGHTSKYBLUE: 2278488831,
+ LIGHTSLATEGRAY: 2005441023,
+ LIGHTSLATEGREY: 2005441023,
+ LIGHTSTEELBLUE: 2965692159,
+ LIGHTYELLOW: 4294959359,
+ LIME: 16711935,
+ LIMEGREEN: 852308735,
+ LINEN: 4210091775,
+ MAGENTA: 4278255615,
+ MAROON: 2147483903,
+ MEDIUMAQUAMARINE: 1724754687,
+ MEDIUMBLUE: 52735,
+ MEDIUMORCHID: 3126187007,
+ MEDIUMPURPLE: 2473647103,
+ MEDIUMSEAGREEN: 1018393087,
+ MEDIUMSLATEBLUE: 2070474495,
+ MEDIUMSPRINGGREEN: 16423679,
+ MEDIUMTURQUOISE: 1221709055,
+ MEDIUMVIOLETRED: 3340076543,
+ MIDNIGHTBLUE: 421097727,
+ MINTCREAM: 4127193855,
+ MISTYROSE: 4293190143,
+ MOCCASIN: 4293178879,
+ NAVAJOWHITE: 4292783615,
+ NAVY: 33023,
+ OLDLACE: 4260751103,
+ OLIVE: 2155872511,
+ OLIVEDRAB: 1804477439,
+ ORANGE: 4289003775,
+ ORANGERED: 4282712319,
+ ORCHID: 3664828159,
+ PALEGOLDENROD: 4008225535,
+ PALEGREEN: 2566625535,
+ PALETURQUOISE: 2951671551,
+ PALEVIOLETRED: 3681588223,
+ PAPAYAWHIP: 4293907967,
+ PEACHPUFF: 4292524543,
+ PERU: 3448061951,
+ PINK: 4290825215,
+ PLUM: 3718307327,
+ POWDERBLUE: 2967529215,
+ PURPLE: 2147516671,
+ REBECCAPURPLE: 1714657791,
+ RED: 4278190335,
+ ROSYBROWN: 3163525119,
+ ROYALBLUE: 1097458175,
+ SADDLEBROWN: 2336560127,
+ SALMON: 4202722047,
+ SANDYBROWN: 4104413439,
+ SEAGREEN: 780883967,
+ SEASHELL: 4294307583,
+ SIENNA: 2689740287,
+ SILVER: 3233857791,
+ SKYBLUE: 2278484991,
+ SLATEBLUE: 1784335871,
+ SLATEGRAY: 1887473919,
+ SLATEGREY: 1887473919,
+ SNOW: 4294638335,
+ SPRINGGREEN: 16744447,
+ STEELBLUE: 1182971135,
+ TAN: 3535047935,
+ TEAL: 8421631,
+ THISTLE: 3636451583,
+ TOMATO: 4284696575,
+ TRANSPARENT: 0,
+ TURQUOISE: 1088475391,
+ VIOLET: 4001558271,
+ WHEAT: 4125012991,
+ WHITE: 4294967295,
+ WHITESMOKE: 4126537215,
+ YELLOW: 4294902015,
+ YELLOWGREEN: 2597139199
+ };
+ var backgroundClip = {
+ name: "background-clip",
+ initialValue: "border-box",
+ prefix: false,
+ type: 1,
+ parse: function(_context, tokens2) {
+ return tokens2.map(function(token) {
+ if (isIdentToken(token)) {
+ switch (token.value) {
+ case "padding-box":
+ return 1;
+ case "content-box":
+ return 2;
+ }
+ }
+ return 0;
+ });
+ }
+ };
+ var backgroundColor = {
+ name: "background-color",
+ initialValue: "transparent",
+ prefix: false,
+ type: 3,
+ format: "color"
+ };
+ var parseColorStop = function(context, args) {
+ var color2 = color$1.parse(context, args[0]);
+ var stop2 = args[1];
+ return stop2 && isLengthPercentage(stop2) ? { color: color2, stop: stop2 } : { color: color2, stop: null };
+ };
+ var processColorStops = function(stops, lineLength) {
+ var first = stops[0];
+ var last = stops[stops.length - 1];
+ if (first.stop === null) {
+ first.stop = ZERO_LENGTH;
+ }
+ if (last.stop === null) {
+ last.stop = HUNDRED_PERCENT;
+ }
+ var processStops = [];
+ var previous = 0;
+ for (var i4 = 0; i4 < stops.length; i4++) {
+ var stop_1 = stops[i4].stop;
+ if (stop_1 !== null) {
+ var absoluteValue = getAbsoluteValue(stop_1, lineLength);
+ if (absoluteValue > previous) {
+ processStops.push(absoluteValue);
+ } else {
+ processStops.push(previous);
+ }
+ previous = absoluteValue;
+ } else {
+ processStops.push(null);
+ }
+ }
+ var gapBegin = null;
+ for (var i4 = 0; i4 < processStops.length; i4++) {
+ var stop_2 = processStops[i4];
+ if (stop_2 === null) {
+ if (gapBegin === null) {
+ gapBegin = i4;
+ }
+ } else if (gapBegin !== null) {
+ var gapLength = i4 - gapBegin;
+ var beforeGap = processStops[gapBegin - 1];
+ var gapValue = (stop_2 - beforeGap) / (gapLength + 1);
+ for (var g3 = 1; g3 <= gapLength; g3++) {
+ processStops[gapBegin + g3 - 1] = gapValue * g3;
+ }
+ gapBegin = null;
+ }
+ }
+ return stops.map(function(_a, i5) {
+ var color2 = _a.color;
+ return { color: color2, stop: Math.max(Math.min(1, processStops[i5] / lineLength), 0) };
+ });
+ };
+ var getAngleFromCorner = function(corner, width, height) {
+ var centerX = width / 2;
+ var centerY = height / 2;
+ var x3 = getAbsoluteValue(corner[0], width) - centerX;
+ var y3 = centerY - getAbsoluteValue(corner[1], height);
+ return (Math.atan2(y3, x3) + Math.PI * 2) % (Math.PI * 2);
+ };
+ var calculateGradientDirection = function(angle2, width, height) {
+ var radian = typeof angle2 === "number" ? angle2 : getAngleFromCorner(angle2, width, height);
+ var lineLength = Math.abs(width * Math.sin(radian)) + Math.abs(height * Math.cos(radian));
+ var halfWidth = width / 2;
+ var halfHeight = height / 2;
+ var halfLineLength = lineLength / 2;
+ var yDiff = Math.sin(radian - Math.PI / 2) * halfLineLength;
+ var xDiff = Math.cos(radian - Math.PI / 2) * halfLineLength;
+ return [lineLength, halfWidth - xDiff, halfWidth + xDiff, halfHeight - yDiff, halfHeight + yDiff];
+ };
+ var distance = function(a4, b3) {
+ return Math.sqrt(a4 * a4 + b3 * b3);
+ };
+ var findCorner = function(width, height, x3, y3, closest) {
+ var corners = [
+ [0, 0],
+ [0, height],
+ [width, 0],
+ [width, height]
+ ];
+ return corners.reduce(function(stat, corner) {
+ var cx = corner[0], cy = corner[1];
+ var d3 = distance(x3 - cx, y3 - cy);
+ if (closest ? d3 < stat.optimumDistance : d3 > stat.optimumDistance) {
+ return {
+ optimumCorner: corner,
+ optimumDistance: d3
+ };
+ }
+ return stat;
+ }, {
+ optimumDistance: closest ? Infinity : -Infinity,
+ optimumCorner: null
+ }).optimumCorner;
+ };
+ var calculateRadius = function(gradient, x3, y3, width, height) {
+ var rx = 0;
+ var ry = 0;
+ switch (gradient.size) {
+ case 0:
+ if (gradient.shape === 0) {
+ rx = ry = Math.min(Math.abs(x3), Math.abs(x3 - width), Math.abs(y3), Math.abs(y3 - height));
+ } else if (gradient.shape === 1) {
+ rx = Math.min(Math.abs(x3), Math.abs(x3 - width));
+ ry = Math.min(Math.abs(y3), Math.abs(y3 - height));
+ }
+ break;
+ case 2:
+ if (gradient.shape === 0) {
+ rx = ry = Math.min(distance(x3, y3), distance(x3, y3 - height), distance(x3 - width, y3), distance(x3 - width, y3 - height));
+ } else if (gradient.shape === 1) {
+ var c3 = Math.min(Math.abs(y3), Math.abs(y3 - height)) / Math.min(Math.abs(x3), Math.abs(x3 - width));
+ var _a = findCorner(width, height, x3, y3, true), cx = _a[0], cy = _a[1];
+ rx = distance(cx - x3, (cy - y3) / c3);
+ ry = c3 * rx;
+ }
+ break;
+ case 1:
+ if (gradient.shape === 0) {
+ rx = ry = Math.max(Math.abs(x3), Math.abs(x3 - width), Math.abs(y3), Math.abs(y3 - height));
+ } else if (gradient.shape === 1) {
+ rx = Math.max(Math.abs(x3), Math.abs(x3 - width));
+ ry = Math.max(Math.abs(y3), Math.abs(y3 - height));
+ }
+ break;
+ case 3:
+ if (gradient.shape === 0) {
+ rx = ry = Math.max(distance(x3, y3), distance(x3, y3 - height), distance(x3 - width, y3), distance(x3 - width, y3 - height));
+ } else if (gradient.shape === 1) {
+ var c3 = Math.max(Math.abs(y3), Math.abs(y3 - height)) / Math.max(Math.abs(x3), Math.abs(x3 - width));
+ var _b = findCorner(width, height, x3, y3, false), cx = _b[0], cy = _b[1];
+ rx = distance(cx - x3, (cy - y3) / c3);
+ ry = c3 * rx;
+ }
+ break;
+ }
+ if (Array.isArray(gradient.size)) {
+ rx = getAbsoluteValue(gradient.size[0], width);
+ ry = gradient.size.length === 2 ? getAbsoluteValue(gradient.size[1], height) : rx;
+ }
+ return [rx, ry];
+ };
+ var linearGradient = function(context, tokens2) {
+ var angle$1 = deg(180);
+ var stops = [];
+ parseFunctionArgs(tokens2).forEach(function(arg, i4) {
+ if (i4 === 0) {
+ var firstToken = arg[0];
+ if (firstToken.type === 20 && firstToken.value === "to") {
+ angle$1 = parseNamedSide(arg);
+ return;
+ } else if (isAngle(firstToken)) {
+ angle$1 = angle.parse(context, firstToken);
+ return;
+ }
+ }
+ var colorStop = parseColorStop(context, arg);
+ stops.push(colorStop);
+ });
+ return {
+ angle: angle$1,
+ stops,
+ type: 1
+ /* LINEAR_GRADIENT */
+ };
+ };
+ var prefixLinearGradient = function(context, tokens2) {
+ var angle$1 = deg(180);
+ var stops = [];
+ parseFunctionArgs(tokens2).forEach(function(arg, i4) {
+ if (i4 === 0) {
+ var firstToken = arg[0];
+ if (firstToken.type === 20 && ["top", "left", "right", "bottom"].indexOf(firstToken.value) !== -1) {
+ angle$1 = parseNamedSide(arg);
+ return;
+ } else if (isAngle(firstToken)) {
+ angle$1 = (angle.parse(context, firstToken) + deg(270)) % deg(360);
+ return;
+ }
+ }
+ var colorStop = parseColorStop(context, arg);
+ stops.push(colorStop);
+ });
+ return {
+ angle: angle$1,
+ stops,
+ type: 1
+ /* LINEAR_GRADIENT */
+ };
+ };
+ var webkitGradient = function(context, tokens2) {
+ var angle2 = deg(180);
+ var stops = [];
+ var type = 1;
+ var shape = 0;
+ var size2 = 3;
+ var position2 = [];
+ parseFunctionArgs(tokens2).forEach(function(arg, i4) {
+ var firstToken = arg[0];
+ if (i4 === 0) {
+ if (isIdentToken(firstToken) && firstToken.value === "linear") {
+ type = 1;
+ return;
+ } else if (isIdentToken(firstToken) && firstToken.value === "radial") {
+ type = 2;
+ return;
+ }
+ }
+ if (firstToken.type === 18) {
+ if (firstToken.name === "from") {
+ var color2 = color$1.parse(context, firstToken.values[0]);
+ stops.push({ stop: ZERO_LENGTH, color: color2 });
+ } else if (firstToken.name === "to") {
+ var color2 = color$1.parse(context, firstToken.values[0]);
+ stops.push({ stop: HUNDRED_PERCENT, color: color2 });
+ } else if (firstToken.name === "color-stop") {
+ var values = firstToken.values.filter(nonFunctionArgSeparator);
+ if (values.length === 2) {
+ var color2 = color$1.parse(context, values[1]);
+ var stop_1 = values[0];
+ if (isNumberToken(stop_1)) {
+ stops.push({
+ stop: { type: 16, number: stop_1.number * 100, flags: stop_1.flags },
+ color: color2
+ });
+ }
+ }
+ }
+ }
+ });
+ return type === 1 ? {
+ angle: (angle2 + deg(180)) % deg(360),
+ stops,
+ type
+ } : { size: size2, shape, stops, position: position2, type };
+ };
+ var CLOSEST_SIDE = "closest-side";
+ var FARTHEST_SIDE = "farthest-side";
+ var CLOSEST_CORNER = "closest-corner";
+ var FARTHEST_CORNER = "farthest-corner";
+ var CIRCLE = "circle";
+ var ELLIPSE = "ellipse";
+ var COVER = "cover";
+ var CONTAIN = "contain";
+ var radialGradient = function(context, tokens2) {
+ var shape = 0;
+ var size2 = 3;
+ var stops = [];
+ var position2 = [];
+ parseFunctionArgs(tokens2).forEach(function(arg, i4) {
+ var isColorStop = true;
+ if (i4 === 0) {
+ var isAtPosition_1 = false;
+ isColorStop = arg.reduce(function(acc, token) {
+ if (isAtPosition_1) {
+ if (isIdentToken(token)) {
+ switch (token.value) {
+ case "center":
+ position2.push(FIFTY_PERCENT);
+ return acc;
+ case "top":
+ case "left":
+ position2.push(ZERO_LENGTH);
+ return acc;
+ case "right":
+ case "bottom":
+ position2.push(HUNDRED_PERCENT);
+ return acc;
+ }
+ } else if (isLengthPercentage(token) || isLength(token)) {
+ position2.push(token);
+ }
+ } else if (isIdentToken(token)) {
+ switch (token.value) {
+ case CIRCLE:
+ shape = 0;
+ return false;
+ case ELLIPSE:
+ shape = 1;
+ return false;
+ case "at":
+ isAtPosition_1 = true;
+ return false;
+ case CLOSEST_SIDE:
+ size2 = 0;
+ return false;
+ case COVER:
+ case FARTHEST_SIDE:
+ size2 = 1;
+ return false;
+ case CONTAIN:
+ case CLOSEST_CORNER:
+ size2 = 2;
+ return false;
+ case FARTHEST_CORNER:
+ size2 = 3;
+ return false;
+ }
+ } else if (isLength(token) || isLengthPercentage(token)) {
+ if (!Array.isArray(size2)) {
+ size2 = [];
+ }
+ size2.push(token);
+ return false;
+ }
+ return acc;
+ }, isColorStop);
+ }
+ if (isColorStop) {
+ var colorStop = parseColorStop(context, arg);
+ stops.push(colorStop);
+ }
+ });
+ return {
+ size: size2,
+ shape,
+ stops,
+ position: position2,
+ type: 2
+ /* RADIAL_GRADIENT */
+ };
+ };
+ var prefixRadialGradient = function(context, tokens2) {
+ var shape = 0;
+ var size2 = 3;
+ var stops = [];
+ var position2 = [];
+ parseFunctionArgs(tokens2).forEach(function(arg, i4) {
+ var isColorStop = true;
+ if (i4 === 0) {
+ isColorStop = arg.reduce(function(acc, token) {
+ if (isIdentToken(token)) {
+ switch (token.value) {
+ case "center":
+ position2.push(FIFTY_PERCENT);
+ return false;
+ case "top":
+ case "left":
+ position2.push(ZERO_LENGTH);
+ return false;
+ case "right":
+ case "bottom":
+ position2.push(HUNDRED_PERCENT);
+ return false;
+ }
+ } else if (isLengthPercentage(token) || isLength(token)) {
+ position2.push(token);
+ return false;
+ }
+ return acc;
+ }, isColorStop);
+ } else if (i4 === 1) {
+ isColorStop = arg.reduce(function(acc, token) {
+ if (isIdentToken(token)) {
+ switch (token.value) {
+ case CIRCLE:
+ shape = 0;
+ return false;
+ case ELLIPSE:
+ shape = 1;
+ return false;
+ case CONTAIN:
+ case CLOSEST_SIDE:
+ size2 = 0;
+ return false;
+ case FARTHEST_SIDE:
+ size2 = 1;
+ return false;
+ case CLOSEST_CORNER:
+ size2 = 2;
+ return false;
+ case COVER:
+ case FARTHEST_CORNER:
+ size2 = 3;
+ return false;
+ }
+ } else if (isLength(token) || isLengthPercentage(token)) {
+ if (!Array.isArray(size2)) {
+ size2 = [];
+ }
+ size2.push(token);
+ return false;
+ }
+ return acc;
+ }, isColorStop);
+ }
+ if (isColorStop) {
+ var colorStop = parseColorStop(context, arg);
+ stops.push(colorStop);
+ }
+ });
+ return {
+ size: size2,
+ shape,
+ stops,
+ position: position2,
+ type: 2
+ /* RADIAL_GRADIENT */
+ };
+ };
+ var isLinearGradient = function(background) {
+ return background.type === 1;
+ };
+ var isRadialGradient = function(background) {
+ return background.type === 2;
+ };
+ var image = {
+ name: "image",
+ parse: function(context, value) {
+ if (value.type === 22) {
+ var image_1 = {
+ url: value.value,
+ type: 0
+ /* URL */
+ };
+ context.cache.addImage(value.value);
+ return image_1;
+ }
+ if (value.type === 18) {
+ var imageFunction = SUPPORTED_IMAGE_FUNCTIONS[value.name];
+ if (typeof imageFunction === "undefined") {
+ throw new Error('Attempting to parse an unsupported image function "' + value.name + '"');
+ }
+ return imageFunction(context, value.values);
+ }
+ throw new Error("Unsupported image type " + value.type);
+ }
+ };
+ function isSupportedImage(value) {
+ return !(value.type === 20 && value.value === "none") && (value.type !== 18 || !!SUPPORTED_IMAGE_FUNCTIONS[value.name]);
+ }
+ var SUPPORTED_IMAGE_FUNCTIONS = {
+ "linear-gradient": linearGradient,
+ "-moz-linear-gradient": prefixLinearGradient,
+ "-ms-linear-gradient": prefixLinearGradient,
+ "-o-linear-gradient": prefixLinearGradient,
+ "-webkit-linear-gradient": prefixLinearGradient,
+ "radial-gradient": radialGradient,
+ "-moz-radial-gradient": prefixRadialGradient,
+ "-ms-radial-gradient": prefixRadialGradient,
+ "-o-radial-gradient": prefixRadialGradient,
+ "-webkit-radial-gradient": prefixRadialGradient,
+ "-webkit-gradient": webkitGradient
+ };
+ var backgroundImage = {
+ name: "background-image",
+ initialValue: "none",
+ type: 1,
+ prefix: false,
+ parse: function(context, tokens2) {
+ if (tokens2.length === 0) {
+ return [];
+ }
+ var first = tokens2[0];
+ if (first.type === 20 && first.value === "none") {
+ return [];
+ }
+ return tokens2.filter(function(value) {
+ return nonFunctionArgSeparator(value) && isSupportedImage(value);
+ }).map(function(value) {
+ return image.parse(context, value);
+ });
+ }
+ };
+ var backgroundOrigin = {
+ name: "background-origin",
+ initialValue: "border-box",
+ prefix: false,
+ type: 1,
+ parse: function(_context, tokens2) {
+ return tokens2.map(function(token) {
+ if (isIdentToken(token)) {
+ switch (token.value) {
+ case "padding-box":
+ return 1;
+ case "content-box":
+ return 2;
+ }
+ }
+ return 0;
+ });
+ }
+ };
+ var backgroundPosition = {
+ name: "background-position",
+ initialValue: "0% 0%",
+ type: 1,
+ prefix: false,
+ parse: function(_context, tokens2) {
+ return parseFunctionArgs(tokens2).map(function(values) {
+ return values.filter(isLengthPercentage);
+ }).map(parseLengthPercentageTuple);
+ }
+ };
+ var backgroundRepeat = {
+ name: "background-repeat",
+ initialValue: "repeat",
+ prefix: false,
+ type: 1,
+ parse: function(_context, tokens2) {
+ return parseFunctionArgs(tokens2).map(function(values) {
+ return values.filter(isIdentToken).map(function(token) {
+ return token.value;
+ }).join(" ");
+ }).map(parseBackgroundRepeat);
+ }
+ };
+ var parseBackgroundRepeat = function(value) {
+ switch (value) {
+ case "no-repeat":
+ return 1;
+ case "repeat-x":
+ case "repeat no-repeat":
+ return 2;
+ case "repeat-y":
+ case "no-repeat repeat":
+ return 3;
+ case "repeat":
+ default:
+ return 0;
+ }
+ };
+ var BACKGROUND_SIZE;
+ (function(BACKGROUND_SIZE2) {
+ BACKGROUND_SIZE2["AUTO"] = "auto";
+ BACKGROUND_SIZE2["CONTAIN"] = "contain";
+ BACKGROUND_SIZE2["COVER"] = "cover";
+ })(BACKGROUND_SIZE || (BACKGROUND_SIZE = {}));
+ var backgroundSize = {
+ name: "background-size",
+ initialValue: "0",
+ prefix: false,
+ type: 1,
+ parse: function(_context, tokens2) {
+ return parseFunctionArgs(tokens2).map(function(values) {
+ return values.filter(isBackgroundSizeInfoToken);
+ });
+ }
+ };
+ var isBackgroundSizeInfoToken = function(value) {
+ return isIdentToken(value) || isLengthPercentage(value);
+ };
+ var borderColorForSide = function(side) {
+ return {
+ name: "border-" + side + "-color",
+ initialValue: "transparent",
+ prefix: false,
+ type: 3,
+ format: "color"
+ };
+ };
+ var borderTopColor = borderColorForSide("top");
+ var borderRightColor = borderColorForSide("right");
+ var borderBottomColor = borderColorForSide("bottom");
+ var borderLeftColor = borderColorForSide("left");
+ var borderRadiusForSide = function(side) {
+ return {
+ name: "border-radius-" + side,
+ initialValue: "0 0",
+ prefix: false,
+ type: 1,
+ parse: function(_context, tokens2) {
+ return parseLengthPercentageTuple(tokens2.filter(isLengthPercentage));
+ }
+ };
+ };
+ var borderTopLeftRadius = borderRadiusForSide("top-left");
+ var borderTopRightRadius = borderRadiusForSide("top-right");
+ var borderBottomRightRadius = borderRadiusForSide("bottom-right");
+ var borderBottomLeftRadius = borderRadiusForSide("bottom-left");
+ var borderStyleForSide = function(side) {
+ return {
+ name: "border-" + side + "-style",
+ initialValue: "solid",
+ prefix: false,
+ type: 2,
+ parse: function(_context, style) {
+ switch (style) {
+ case "none":
+ return 0;
+ case "dashed":
+ return 2;
+ case "dotted":
+ return 3;
+ case "double":
+ return 4;
+ }
+ return 1;
+ }
+ };
+ };
+ var borderTopStyle = borderStyleForSide("top");
+ var borderRightStyle = borderStyleForSide("right");
+ var borderBottomStyle = borderStyleForSide("bottom");
+ var borderLeftStyle = borderStyleForSide("left");
+ var borderWidthForSide = function(side) {
+ return {
+ name: "border-" + side + "-width",
+ initialValue: "0",
+ type: 0,
+ prefix: false,
+ parse: function(_context, token) {
+ if (isDimensionToken(token)) {
+ return token.number;
+ }
+ return 0;
+ }
+ };
+ };
+ var borderTopWidth = borderWidthForSide("top");
+ var borderRightWidth = borderWidthForSide("right");
+ var borderBottomWidth = borderWidthForSide("bottom");
+ var borderLeftWidth = borderWidthForSide("left");
+ var color = {
+ name: "color",
+ initialValue: "transparent",
+ prefix: false,
+ type: 3,
+ format: "color"
+ };
+ var direction = {
+ name: "direction",
+ initialValue: "ltr",
+ prefix: false,
+ type: 2,
+ parse: function(_context, direction2) {
+ switch (direction2) {
+ case "rtl":
+ return 1;
+ case "ltr":
+ default:
+ return 0;
+ }
+ }
+ };
+ var display = {
+ name: "display",
+ initialValue: "inline-block",
+ prefix: false,
+ type: 1,
+ parse: function(_context, tokens2) {
+ return tokens2.filter(isIdentToken).reduce(
+ function(bit, token) {
+ return bit | parseDisplayValue(token.value);
+ },
+ 0
+ /* NONE */
+ );
+ }
+ };
+ var parseDisplayValue = function(display2) {
+ switch (display2) {
+ case "block":
+ case "-webkit-box":
+ return 2;
+ case "inline":
+ return 4;
+ case "run-in":
+ return 8;
+ case "flow":
+ return 16;
+ case "flow-root":
+ return 32;
+ case "table":
+ return 64;
+ case "flex":
+ case "-webkit-flex":
+ return 128;
+ case "grid":
+ case "-ms-grid":
+ return 256;
+ case "ruby":
+ return 512;
+ case "subgrid":
+ return 1024;
+ case "list-item":
+ return 2048;
+ case "table-row-group":
+ return 4096;
+ case "table-header-group":
+ return 8192;
+ case "table-footer-group":
+ return 16384;
+ case "table-row":
+ return 32768;
+ case "table-cell":
+ return 65536;
+ case "table-column-group":
+ return 131072;
+ case "table-column":
+ return 262144;
+ case "table-caption":
+ return 524288;
+ case "ruby-base":
+ return 1048576;
+ case "ruby-text":
+ return 2097152;
+ case "ruby-base-container":
+ return 4194304;
+ case "ruby-text-container":
+ return 8388608;
+ case "contents":
+ return 16777216;
+ case "inline-block":
+ return 33554432;
+ case "inline-list-item":
+ return 67108864;
+ case "inline-table":
+ return 134217728;
+ case "inline-flex":
+ return 268435456;
+ case "inline-grid":
+ return 536870912;
+ }
+ return 0;
+ };
+ var float = {
+ name: "float",
+ initialValue: "none",
+ prefix: false,
+ type: 2,
+ parse: function(_context, float2) {
+ switch (float2) {
+ case "left":
+ return 1;
+ case "right":
+ return 2;
+ case "inline-start":
+ return 3;
+ case "inline-end":
+ return 4;
+ }
+ return 0;
+ }
+ };
+ var letterSpacing = {
+ name: "letter-spacing",
+ initialValue: "0",
+ prefix: false,
+ type: 0,
+ parse: function(_context, token) {
+ if (token.type === 20 && token.value === "normal") {
+ return 0;
+ }
+ if (token.type === 17) {
+ return token.number;
+ }
+ if (token.type === 15) {
+ return token.number;
+ }
+ return 0;
+ }
+ };
+ var LINE_BREAK;
+ (function(LINE_BREAK2) {
+ LINE_BREAK2["NORMAL"] = "normal";
+ LINE_BREAK2["STRICT"] = "strict";
+ })(LINE_BREAK || (LINE_BREAK = {}));
+ var lineBreak = {
+ name: "line-break",
+ initialValue: "normal",
+ prefix: false,
+ type: 2,
+ parse: function(_context, lineBreak2) {
+ switch (lineBreak2) {
+ case "strict":
+ return LINE_BREAK.STRICT;
+ case "normal":
+ default:
+ return LINE_BREAK.NORMAL;
+ }
+ }
+ };
+ var lineHeight = {
+ name: "line-height",
+ initialValue: "normal",
+ prefix: false,
+ type: 4
+ /* TOKEN_VALUE */
+ };
+ var computeLineHeight = function(token, fontSize2) {
+ if (isIdentToken(token) && token.value === "normal") {
+ return 1.2 * fontSize2;
+ } else if (token.type === 17) {
+ return fontSize2 * token.number;
+ } else if (isLengthPercentage(token)) {
+ return getAbsoluteValue(token, fontSize2);
+ }
+ return fontSize2;
+ };
+ var listStyleImage = {
+ name: "list-style-image",
+ initialValue: "none",
+ type: 0,
+ prefix: false,
+ parse: function(context, token) {
+ if (token.type === 20 && token.value === "none") {
+ return null;
+ }
+ return image.parse(context, token);
+ }
+ };
+ var listStylePosition = {
+ name: "list-style-position",
+ initialValue: "outside",
+ prefix: false,
+ type: 2,
+ parse: function(_context, position2) {
+ switch (position2) {
+ case "inside":
+ return 0;
+ case "outside":
+ default:
+ return 1;
+ }
+ }
+ };
+ var listStyleType = {
+ name: "list-style-type",
+ initialValue: "none",
+ prefix: false,
+ type: 2,
+ parse: function(_context, type) {
+ switch (type) {
+ case "disc":
+ return 0;
+ case "circle":
+ return 1;
+ case "square":
+ return 2;
+ case "decimal":
+ return 3;
+ case "cjk-decimal":
+ return 4;
+ case "decimal-leading-zero":
+ return 5;
+ case "lower-roman":
+ return 6;
+ case "upper-roman":
+ return 7;
+ case "lower-greek":
+ return 8;
+ case "lower-alpha":
+ return 9;
+ case "upper-alpha":
+ return 10;
+ case "arabic-indic":
+ return 11;
+ case "armenian":
+ return 12;
+ case "bengali":
+ return 13;
+ case "cambodian":
+ return 14;
+ case "cjk-earthly-branch":
+ return 15;
+ case "cjk-heavenly-stem":
+ return 16;
+ case "cjk-ideographic":
+ return 17;
+ case "devanagari":
+ return 18;
+ case "ethiopic-numeric":
+ return 19;
+ case "georgian":
+ return 20;
+ case "gujarati":
+ return 21;
+ case "gurmukhi":
+ return 22;
+ case "hebrew":
+ return 22;
+ case "hiragana":
+ return 23;
+ case "hiragana-iroha":
+ return 24;
+ case "japanese-formal":
+ return 25;
+ case "japanese-informal":
+ return 26;
+ case "kannada":
+ return 27;
+ case "katakana":
+ return 28;
+ case "katakana-iroha":
+ return 29;
+ case "khmer":
+ return 30;
+ case "korean-hangul-formal":
+ return 31;
+ case "korean-hanja-formal":
+ return 32;
+ case "korean-hanja-informal":
+ return 33;
+ case "lao":
+ return 34;
+ case "lower-armenian":
+ return 35;
+ case "malayalam":
+ return 36;
+ case "mongolian":
+ return 37;
+ case "myanmar":
+ return 38;
+ case "oriya":
+ return 39;
+ case "persian":
+ return 40;
+ case "simp-chinese-formal":
+ return 41;
+ case "simp-chinese-informal":
+ return 42;
+ case "tamil":
+ return 43;
+ case "telugu":
+ return 44;
+ case "thai":
+ return 45;
+ case "tibetan":
+ return 46;
+ case "trad-chinese-formal":
+ return 47;
+ case "trad-chinese-informal":
+ return 48;
+ case "upper-armenian":
+ return 49;
+ case "disclosure-open":
+ return 50;
+ case "disclosure-closed":
+ return 51;
+ case "none":
+ default:
+ return -1;
+ }
+ }
+ };
+ var marginForSide = function(side) {
+ return {
+ name: "margin-" + side,
+ initialValue: "0",
+ prefix: false,
+ type: 4
+ /* TOKEN_VALUE */
+ };
+ };
+ var marginTop = marginForSide("top");
+ var marginRight = marginForSide("right");
+ var marginBottom = marginForSide("bottom");
+ var marginLeft = marginForSide("left");
+ var overflow = {
+ name: "overflow",
+ initialValue: "visible",
+ prefix: false,
+ type: 1,
+ parse: function(_context, tokens2) {
+ return tokens2.filter(isIdentToken).map(function(overflow2) {
+ switch (overflow2.value) {
+ case "hidden":
+ return 1;
+ case "scroll":
+ return 2;
+ case "clip":
+ return 3;
+ case "auto":
+ return 4;
+ case "visible":
+ default:
+ return 0;
+ }
+ });
+ }
+ };
+ var overflowWrap = {
+ name: "overflow-wrap",
+ initialValue: "normal",
+ prefix: false,
+ type: 2,
+ parse: function(_context, overflow2) {
+ switch (overflow2) {
+ case "break-word":
+ return "break-word";
+ case "normal":
+ default:
+ return "normal";
+ }
+ }
+ };
+ var paddingForSide = function(side) {
+ return {
+ name: "padding-" + side,
+ initialValue: "0",
+ prefix: false,
+ type: 3,
+ format: "length-percentage"
+ };
+ };
+ var paddingTop = paddingForSide("top");
+ var paddingRight = paddingForSide("right");
+ var paddingBottom = paddingForSide("bottom");
+ var paddingLeft = paddingForSide("left");
+ var textAlign = {
+ name: "text-align",
+ initialValue: "left",
+ prefix: false,
+ type: 2,
+ parse: function(_context, textAlign2) {
+ switch (textAlign2) {
+ case "right":
+ return 2;
+ case "center":
+ case "justify":
+ return 1;
+ case "left":
+ default:
+ return 0;
+ }
+ }
+ };
+ var position = {
+ name: "position",
+ initialValue: "static",
+ prefix: false,
+ type: 2,
+ parse: function(_context, position2) {
+ switch (position2) {
+ case "relative":
+ return 1;
+ case "absolute":
+ return 2;
+ case "fixed":
+ return 3;
+ case "sticky":
+ return 4;
+ }
+ return 0;
+ }
+ };
+ var textShadow = {
+ name: "text-shadow",
+ initialValue: "none",
+ type: 1,
+ prefix: false,
+ parse: function(context, tokens2) {
+ if (tokens2.length === 1 && isIdentWithValue(tokens2[0], "none")) {
+ return [];
+ }
+ return parseFunctionArgs(tokens2).map(function(values) {
+ var shadow = {
+ color: COLORS.TRANSPARENT,
+ offsetX: ZERO_LENGTH,
+ offsetY: ZERO_LENGTH,
+ blur: ZERO_LENGTH
+ };
+ var c3 = 0;
+ for (var i4 = 0; i4 < values.length; i4++) {
+ var token = values[i4];
+ if (isLength(token)) {
+ if (c3 === 0) {
+ shadow.offsetX = token;
+ } else if (c3 === 1) {
+ shadow.offsetY = token;
+ } else {
+ shadow.blur = token;
+ }
+ c3++;
+ } else {
+ shadow.color = color$1.parse(context, token);
+ }
+ }
+ return shadow;
+ });
+ }
+ };
+ var textTransform = {
+ name: "text-transform",
+ initialValue: "none",
+ prefix: false,
+ type: 2,
+ parse: function(_context, textTransform2) {
+ switch (textTransform2) {
+ case "uppercase":
+ return 2;
+ case "lowercase":
+ return 1;
+ case "capitalize":
+ return 3;
+ }
+ return 0;
+ }
+ };
+ var transform$1 = {
+ name: "transform",
+ initialValue: "none",
+ prefix: true,
+ type: 0,
+ parse: function(_context, token) {
+ if (token.type === 20 && token.value === "none") {
+ return null;
+ }
+ if (token.type === 18) {
+ var transformFunction = SUPPORTED_TRANSFORM_FUNCTIONS[token.name];
+ if (typeof transformFunction === "undefined") {
+ throw new Error('Attempting to parse an unsupported transform function "' + token.name + '"');
+ }
+ return transformFunction(token.values);
+ }
+ return null;
+ }
+ };
+ var matrix = function(args) {
+ var values = args.filter(function(arg) {
+ return arg.type === 17;
+ }).map(function(arg) {
+ return arg.number;
+ });
+ return values.length === 6 ? values : null;
+ };
+ var matrix3d = function(args) {
+ var values = args.filter(function(arg) {
+ return arg.type === 17;
+ }).map(function(arg) {
+ return arg.number;
+ });
+ var a1 = values[0], b1 = values[1];
+ values[2];
+ values[3];
+ var a22 = values[4], b22 = values[5];
+ values[6];
+ values[7];
+ values[8];
+ values[9];
+ values[10];
+ values[11];
+ var a4 = values[12], b4 = values[13];
+ values[14];
+ values[15];
+ return values.length === 16 ? [a1, b1, a22, b22, a4, b4] : null;
+ };
+ var SUPPORTED_TRANSFORM_FUNCTIONS = {
+ matrix,
+ matrix3d
+ };
+ var DEFAULT_VALUE = {
+ type: 16,
+ number: 50,
+ flags: FLAG_INTEGER
+ };
+ var DEFAULT2 = [DEFAULT_VALUE, DEFAULT_VALUE];
+ var transformOrigin = {
+ name: "transform-origin",
+ initialValue: "50% 50%",
+ prefix: true,
+ type: 1,
+ parse: function(_context, tokens2) {
+ var origins = tokens2.filter(isLengthPercentage);
+ if (origins.length !== 2) {
+ return DEFAULT2;
+ }
+ return [origins[0], origins[1]];
+ }
+ };
+ var visibility = {
+ name: "visible",
+ initialValue: "none",
+ prefix: false,
+ type: 2,
+ parse: function(_context, visibility2) {
+ switch (visibility2) {
+ case "hidden":
+ return 1;
+ case "collapse":
+ return 2;
+ case "visible":
+ default:
+ return 0;
+ }
+ }
+ };
+ var WORD_BREAK;
+ (function(WORD_BREAK2) {
+ WORD_BREAK2["NORMAL"] = "normal";
+ WORD_BREAK2["BREAK_ALL"] = "break-all";
+ WORD_BREAK2["KEEP_ALL"] = "keep-all";
+ })(WORD_BREAK || (WORD_BREAK = {}));
+ var wordBreak = {
+ name: "word-break",
+ initialValue: "normal",
+ prefix: false,
+ type: 2,
+ parse: function(_context, wordBreak2) {
+ switch (wordBreak2) {
+ case "break-all":
+ return WORD_BREAK.BREAK_ALL;
+ case "keep-all":
+ return WORD_BREAK.KEEP_ALL;
+ case "normal":
+ default:
+ return WORD_BREAK.NORMAL;
+ }
+ }
+ };
+ var zIndex = {
+ name: "z-index",
+ initialValue: "auto",
+ prefix: false,
+ type: 0,
+ parse: function(_context, token) {
+ if (token.type === 20) {
+ return { auto: true, order: 0 };
+ }
+ if (isNumberToken(token)) {
+ return { auto: false, order: token.number };
+ }
+ throw new Error("Invalid z-index number parsed");
+ }
+ };
+ var time = {
+ name: "time",
+ parse: function(_context, value) {
+ if (value.type === 15) {
+ switch (value.unit.toLowerCase()) {
+ case "s":
+ return 1e3 * value.number;
+ case "ms":
+ return value.number;
+ }
+ }
+ throw new Error("Unsupported time type");
+ }
+ };
+ var opacity = {
+ name: "opacity",
+ initialValue: "1",
+ type: 0,
+ prefix: false,
+ parse: function(_context, token) {
+ if (isNumberToken(token)) {
+ return token.number;
+ }
+ return 1;
+ }
+ };
+ var textDecorationColor = {
+ name: "text-decoration-color",
+ initialValue: "transparent",
+ prefix: false,
+ type: 3,
+ format: "color"
+ };
+ var textDecorationLine = {
+ name: "text-decoration-line",
+ initialValue: "none",
+ prefix: false,
+ type: 1,
+ parse: function(_context, tokens2) {
+ return tokens2.filter(isIdentToken).map(function(token) {
+ switch (token.value) {
+ case "underline":
+ return 1;
+ case "overline":
+ return 2;
+ case "line-through":
+ return 3;
+ case "none":
+ return 4;
+ }
+ return 0;
+ }).filter(function(line) {
+ return line !== 0;
+ });
+ }
+ };
+ var fontFamily = {
+ name: "font-family",
+ initialValue: "",
+ prefix: false,
+ type: 1,
+ parse: function(_context, tokens2) {
+ var accumulator = [];
+ var results = [];
+ tokens2.forEach(function(token) {
+ switch (token.type) {
+ case 20:
+ case 0:
+ accumulator.push(token.value);
+ break;
+ case 17:
+ accumulator.push(token.number.toString());
+ break;
+ case 4:
+ results.push(accumulator.join(" "));
+ accumulator.length = 0;
+ break;
+ }
+ });
+ if (accumulator.length) {
+ results.push(accumulator.join(" "));
+ }
+ return results.map(function(result) {
+ return result.indexOf(" ") === -1 ? result : "'" + result + "'";
+ });
+ }
+ };
+ var fontSize = {
+ name: "font-size",
+ initialValue: "0",
+ prefix: false,
+ type: 3,
+ format: "length"
+ };
+ var fontWeight = {
+ name: "font-weight",
+ initialValue: "normal",
+ type: 0,
+ prefix: false,
+ parse: function(_context, token) {
+ if (isNumberToken(token)) {
+ return token.number;
+ }
+ if (isIdentToken(token)) {
+ switch (token.value) {
+ case "bold":
+ return 700;
+ case "normal":
+ default:
+ return 400;
+ }
+ }
+ return 400;
+ }
+ };
+ var fontVariant = {
+ name: "font-variant",
+ initialValue: "none",
+ type: 1,
+ prefix: false,
+ parse: function(_context, tokens2) {
+ return tokens2.filter(isIdentToken).map(function(token) {
+ return token.value;
+ });
+ }
+ };
+ var fontStyle = {
+ name: "font-style",
+ initialValue: "normal",
+ prefix: false,
+ type: 2,
+ parse: function(_context, overflow2) {
+ switch (overflow2) {
+ case "oblique":
+ return "oblique";
+ case "italic":
+ return "italic";
+ case "normal":
+ default:
+ return "normal";
+ }
+ }
+ };
+ var contains2 = function(bit, value) {
+ return (bit & value) !== 0;
+ };
+ var content2 = {
+ name: "content",
+ initialValue: "none",
+ type: 1,
+ prefix: false,
+ parse: function(_context, tokens2) {
+ if (tokens2.length === 0) {
+ return [];
+ }
+ var first = tokens2[0];
+ if (first.type === 20 && first.value === "none") {
+ return [];
+ }
+ return tokens2;
+ }
+ };
+ var counterIncrement = {
+ name: "counter-increment",
+ initialValue: "none",
+ prefix: true,
+ type: 1,
+ parse: function(_context, tokens2) {
+ if (tokens2.length === 0) {
+ return null;
+ }
+ var first = tokens2[0];
+ if (first.type === 20 && first.value === "none") {
+ return null;
+ }
+ var increments = [];
+ var filtered = tokens2.filter(nonWhiteSpace);
+ for (var i4 = 0; i4 < filtered.length; i4++) {
+ var counter = filtered[i4];
+ var next = filtered[i4 + 1];
+ if (counter.type === 20) {
+ var increment = next && isNumberToken(next) ? next.number : 1;
+ increments.push({ counter: counter.value, increment });
+ }
+ }
+ return increments;
+ }
+ };
+ var counterReset = {
+ name: "counter-reset",
+ initialValue: "none",
+ prefix: true,
+ type: 1,
+ parse: function(_context, tokens2) {
+ if (tokens2.length === 0) {
+ return [];
+ }
+ var resets = [];
+ var filtered = tokens2.filter(nonWhiteSpace);
+ for (var i4 = 0; i4 < filtered.length; i4++) {
+ var counter = filtered[i4];
+ var next = filtered[i4 + 1];
+ if (isIdentToken(counter) && counter.value !== "none") {
+ var reset = next && isNumberToken(next) ? next.number : 0;
+ resets.push({ counter: counter.value, reset });
+ }
+ }
+ return resets;
+ }
+ };
+ var duration = {
+ name: "duration",
+ initialValue: "0s",
+ prefix: false,
+ type: 1,
+ parse: function(context, tokens2) {
+ return tokens2.filter(isDimensionToken).map(function(token) {
+ return time.parse(context, token);
+ });
+ }
+ };
+ var quotes = {
+ name: "quotes",
+ initialValue: "none",
+ prefix: true,
+ type: 1,
+ parse: function(_context, tokens2) {
+ if (tokens2.length === 0) {
+ return null;
+ }
+ var first = tokens2[0];
+ if (first.type === 20 && first.value === "none") {
+ return null;
+ }
+ var quotes2 = [];
+ var filtered = tokens2.filter(isStringToken);
+ if (filtered.length % 2 !== 0) {
+ return null;
+ }
+ for (var i4 = 0; i4 < filtered.length; i4 += 2) {
+ var open_1 = filtered[i4].value;
+ var close_1 = filtered[i4 + 1].value;
+ quotes2.push({ open: open_1, close: close_1 });
+ }
+ return quotes2;
+ }
+ };
+ var getQuote = function(quotes2, depth, open) {
+ if (!quotes2) {
+ return "";
+ }
+ var quote = quotes2[Math.min(depth, quotes2.length - 1)];
+ if (!quote) {
+ return "";
+ }
+ return open ? quote.open : quote.close;
+ };
+ var boxShadow = {
+ name: "box-shadow",
+ initialValue: "none",
+ type: 1,
+ prefix: false,
+ parse: function(context, tokens2) {
+ if (tokens2.length === 1 && isIdentWithValue(tokens2[0], "none")) {
+ return [];
+ }
+ return parseFunctionArgs(tokens2).map(function(values) {
+ var shadow = {
+ color: 255,
+ offsetX: ZERO_LENGTH,
+ offsetY: ZERO_LENGTH,
+ blur: ZERO_LENGTH,
+ spread: ZERO_LENGTH,
+ inset: false
+ };
+ var c3 = 0;
+ for (var i4 = 0; i4 < values.length; i4++) {
+ var token = values[i4];
+ if (isIdentWithValue(token, "inset")) {
+ shadow.inset = true;
+ } else if (isLength(token)) {
+ if (c3 === 0) {
+ shadow.offsetX = token;
+ } else if (c3 === 1) {
+ shadow.offsetY = token;
+ } else if (c3 === 2) {
+ shadow.blur = token;
+ } else {
+ shadow.spread = token;
+ }
+ c3++;
+ } else {
+ shadow.color = color$1.parse(context, token);
+ }
+ }
+ return shadow;
+ });
+ }
+ };
+ var paintOrder = {
+ name: "paint-order",
+ initialValue: "normal",
+ prefix: false,
+ type: 1,
+ parse: function(_context, tokens2) {
+ var DEFAULT_VALUE2 = [
+ 0,
+ 1,
+ 2
+ /* MARKERS */
+ ];
+ var layers = [];
+ tokens2.filter(isIdentToken).forEach(function(token) {
+ switch (token.value) {
+ case "stroke":
+ layers.push(
+ 1
+ /* STROKE */
+ );
+ break;
+ case "fill":
+ layers.push(
+ 0
+ /* FILL */
+ );
+ break;
+ case "markers":
+ layers.push(
+ 2
+ /* MARKERS */
+ );
+ break;
+ }
+ });
+ DEFAULT_VALUE2.forEach(function(value) {
+ if (layers.indexOf(value) === -1) {
+ layers.push(value);
+ }
+ });
+ return layers;
+ }
+ };
+ var webkitTextStrokeColor = {
+ name: "-webkit-text-stroke-color",
+ initialValue: "currentcolor",
+ prefix: false,
+ type: 3,
+ format: "color"
+ };
+ var webkitTextStrokeWidth = {
+ name: "-webkit-text-stroke-width",
+ initialValue: "0",
+ type: 0,
+ prefix: false,
+ parse: function(_context, token) {
+ if (isDimensionToken(token)) {
+ return token.number;
+ }
+ return 0;
+ }
+ };
+ var CSSParsedDeclaration = (
+ /** @class */
+ function() {
+ function CSSParsedDeclaration2(context, declaration) {
+ var _a, _b;
+ this.animationDuration = parse(context, duration, declaration.animationDuration);
+ this.backgroundClip = parse(context, backgroundClip, declaration.backgroundClip);
+ this.backgroundColor = parse(context, backgroundColor, declaration.backgroundColor);
+ this.backgroundImage = parse(context, backgroundImage, declaration.backgroundImage);
+ this.backgroundOrigin = parse(context, backgroundOrigin, declaration.backgroundOrigin);
+ this.backgroundPosition = parse(context, backgroundPosition, declaration.backgroundPosition);
+ this.backgroundRepeat = parse(context, backgroundRepeat, declaration.backgroundRepeat);
+ this.backgroundSize = parse(context, backgroundSize, declaration.backgroundSize);
+ this.borderTopColor = parse(context, borderTopColor, declaration.borderTopColor);
+ this.borderRightColor = parse(context, borderRightColor, declaration.borderRightColor);
+ this.borderBottomColor = parse(context, borderBottomColor, declaration.borderBottomColor);
+ this.borderLeftColor = parse(context, borderLeftColor, declaration.borderLeftColor);
+ this.borderTopLeftRadius = parse(context, borderTopLeftRadius, declaration.borderTopLeftRadius);
+ this.borderTopRightRadius = parse(context, borderTopRightRadius, declaration.borderTopRightRadius);
+ this.borderBottomRightRadius = parse(context, borderBottomRightRadius, declaration.borderBottomRightRadius);
+ this.borderBottomLeftRadius = parse(context, borderBottomLeftRadius, declaration.borderBottomLeftRadius);
+ this.borderTopStyle = parse(context, borderTopStyle, declaration.borderTopStyle);
+ this.borderRightStyle = parse(context, borderRightStyle, declaration.borderRightStyle);
+ this.borderBottomStyle = parse(context, borderBottomStyle, declaration.borderBottomStyle);
+ this.borderLeftStyle = parse(context, borderLeftStyle, declaration.borderLeftStyle);
+ this.borderTopWidth = parse(context, borderTopWidth, declaration.borderTopWidth);
+ this.borderRightWidth = parse(context, borderRightWidth, declaration.borderRightWidth);
+ this.borderBottomWidth = parse(context, borderBottomWidth, declaration.borderBottomWidth);
+ this.borderLeftWidth = parse(context, borderLeftWidth, declaration.borderLeftWidth);
+ this.boxShadow = parse(context, boxShadow, declaration.boxShadow);
+ this.color = parse(context, color, declaration.color);
+ this.direction = parse(context, direction, declaration.direction);
+ this.display = parse(context, display, declaration.display);
+ this.float = parse(context, float, declaration.cssFloat);
+ this.fontFamily = parse(context, fontFamily, declaration.fontFamily);
+ this.fontSize = parse(context, fontSize, declaration.fontSize);
+ this.fontStyle = parse(context, fontStyle, declaration.fontStyle);
+ this.fontVariant = parse(context, fontVariant, declaration.fontVariant);
+ this.fontWeight = parse(context, fontWeight, declaration.fontWeight);
+ this.letterSpacing = parse(context, letterSpacing, declaration.letterSpacing);
+ this.lineBreak = parse(context, lineBreak, declaration.lineBreak);
+ this.lineHeight = parse(context, lineHeight, declaration.lineHeight);
+ this.listStyleImage = parse(context, listStyleImage, declaration.listStyleImage);
+ this.listStylePosition = parse(context, listStylePosition, declaration.listStylePosition);
+ this.listStyleType = parse(context, listStyleType, declaration.listStyleType);
+ this.marginTop = parse(context, marginTop, declaration.marginTop);
+ this.marginRight = parse(context, marginRight, declaration.marginRight);
+ this.marginBottom = parse(context, marginBottom, declaration.marginBottom);
+ this.marginLeft = parse(context, marginLeft, declaration.marginLeft);
+ this.opacity = parse(context, opacity, declaration.opacity);
+ var overflowTuple = parse(context, overflow, declaration.overflow);
+ this.overflowX = overflowTuple[0];
+ this.overflowY = overflowTuple[overflowTuple.length > 1 ? 1 : 0];
+ this.overflowWrap = parse(context, overflowWrap, declaration.overflowWrap);
+ this.paddingTop = parse(context, paddingTop, declaration.paddingTop);
+ this.paddingRight = parse(context, paddingRight, declaration.paddingRight);
+ this.paddingBottom = parse(context, paddingBottom, declaration.paddingBottom);
+ this.paddingLeft = parse(context, paddingLeft, declaration.paddingLeft);
+ this.paintOrder = parse(context, paintOrder, declaration.paintOrder);
+ this.position = parse(context, position, declaration.position);
+ this.textAlign = parse(context, textAlign, declaration.textAlign);
+ this.textDecorationColor = parse(context, textDecorationColor, (_a = declaration.textDecorationColor) !== null && _a !== void 0 ? _a : declaration.color);
+ this.textDecorationLine = parse(context, textDecorationLine, (_b = declaration.textDecorationLine) !== null && _b !== void 0 ? _b : declaration.textDecoration);
+ this.textShadow = parse(context, textShadow, declaration.textShadow);
+ this.textTransform = parse(context, textTransform, declaration.textTransform);
+ this.transform = parse(context, transform$1, declaration.transform);
+ this.transformOrigin = parse(context, transformOrigin, declaration.transformOrigin);
+ this.visibility = parse(context, visibility, declaration.visibility);
+ this.webkitTextStrokeColor = parse(context, webkitTextStrokeColor, declaration.webkitTextStrokeColor);
+ this.webkitTextStrokeWidth = parse(context, webkitTextStrokeWidth, declaration.webkitTextStrokeWidth);
+ this.wordBreak = parse(context, wordBreak, declaration.wordBreak);
+ this.zIndex = parse(context, zIndex, declaration.zIndex);
+ }
+ CSSParsedDeclaration2.prototype.isVisible = function() {
+ return this.display > 0 && this.opacity > 0 && this.visibility === 0;
+ };
+ CSSParsedDeclaration2.prototype.isTransparent = function() {
+ return isTransparent(this.backgroundColor);
+ };
+ CSSParsedDeclaration2.prototype.isTransformed = function() {
+ return this.transform !== null;
+ };
+ CSSParsedDeclaration2.prototype.isPositioned = function() {
+ return this.position !== 0;
+ };
+ CSSParsedDeclaration2.prototype.isPositionedWithZIndex = function() {
+ return this.isPositioned() && !this.zIndex.auto;
+ };
+ CSSParsedDeclaration2.prototype.isFloating = function() {
+ return this.float !== 0;
+ };
+ CSSParsedDeclaration2.prototype.isInlineLevel = function() {
+ return contains2(
+ this.display,
+ 4
+ /* INLINE */
+ ) || contains2(
+ this.display,
+ 33554432
+ /* INLINE_BLOCK */
+ ) || contains2(
+ this.display,
+ 268435456
+ /* INLINE_FLEX */
+ ) || contains2(
+ this.display,
+ 536870912
+ /* INLINE_GRID */
+ ) || contains2(
+ this.display,
+ 67108864
+ /* INLINE_LIST_ITEM */
+ ) || contains2(
+ this.display,
+ 134217728
+ /* INLINE_TABLE */
+ );
+ };
+ return CSSParsedDeclaration2;
+ }()
+ );
+ var CSSParsedPseudoDeclaration = (
+ /** @class */
+ function() {
+ function CSSParsedPseudoDeclaration2(context, declaration) {
+ this.content = parse(context, content2, declaration.content);
+ this.quotes = parse(context, quotes, declaration.quotes);
+ }
+ return CSSParsedPseudoDeclaration2;
+ }()
+ );
+ var CSSParsedCounterDeclaration = (
+ /** @class */
+ function() {
+ function CSSParsedCounterDeclaration2(context, declaration) {
+ this.counterIncrement = parse(context, counterIncrement, declaration.counterIncrement);
+ this.counterReset = parse(context, counterReset, declaration.counterReset);
+ }
+ return CSSParsedCounterDeclaration2;
+ }()
+ );
+ var parse = function(context, descriptor, style) {
+ var tokenizer = new Tokenizer();
+ var value = style !== null && typeof style !== "undefined" ? style.toString() : descriptor.initialValue;
+ tokenizer.write(value);
+ var parser = new Parser(tokenizer.read());
+ switch (descriptor.type) {
+ case 2:
+ var token = parser.parseComponentValue();
+ return descriptor.parse(context, isIdentToken(token) ? token.value : descriptor.initialValue);
+ case 0:
+ return descriptor.parse(context, parser.parseComponentValue());
+ case 1:
+ return descriptor.parse(context, parser.parseComponentValues());
+ case 4:
+ return parser.parseComponentValue();
+ case 3:
+ switch (descriptor.format) {
+ case "angle":
+ return angle.parse(context, parser.parseComponentValue());
+ case "color":
+ return color$1.parse(context, parser.parseComponentValue());
+ case "image":
+ return image.parse(context, parser.parseComponentValue());
+ case "length":
+ var length_1 = parser.parseComponentValue();
+ return isLength(length_1) ? length_1 : ZERO_LENGTH;
+ case "length-percentage":
+ var value_1 = parser.parseComponentValue();
+ return isLengthPercentage(value_1) ? value_1 : ZERO_LENGTH;
+ case "time":
+ return time.parse(context, parser.parseComponentValue());
+ }
+ break;
+ }
+ };
+ var elementDebuggerAttribute = "data-html2canvas-debug";
+ var getElementDebugType = function(element) {
+ var attribute = element.getAttribute(elementDebuggerAttribute);
+ switch (attribute) {
+ case "all":
+ return 1;
+ case "clone":
+ return 2;
+ case "parse":
+ return 3;
+ case "render":
+ return 4;
+ default:
+ return 0;
+ }
+ };
+ var isDebugging = function(element, type) {
+ var elementType2 = getElementDebugType(element);
+ return elementType2 === 1 || type === elementType2;
+ };
+ var ElementContainer = (
+ /** @class */
+ function() {
+ function ElementContainer2(context, element) {
+ this.context = context;
+ this.textNodes = [];
+ this.elements = [];
+ this.flags = 0;
+ if (isDebugging(
+ element,
+ 3
+ /* PARSE */
+ )) {
+ debugger;
+ }
+ this.styles = new CSSParsedDeclaration(context, window.getComputedStyle(element, null));
+ if (isHTMLElementNode(element)) {
+ if (this.styles.animationDuration.some(function(duration2) {
+ return duration2 > 0;
+ })) {
+ element.style.animationDuration = "0s";
+ }
+ if (this.styles.transform !== null) {
+ element.style.transform = "none";
+ }
+ }
+ this.bounds = parseBounds(this.context, element);
+ if (isDebugging(
+ element,
+ 4
+ /* RENDER */
+ )) {
+ this.flags |= 16;
+ }
+ }
+ return ElementContainer2;
+ }()
+ );
+ var base64 = "AAAAAAAAAAAAEA4AGBkAAFAaAAACAAAAAAAIABAAGAAwADgACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAAQABIAEQATAAIABAACAAQAAgAEAAIABAAVABcAAgAEAAIABAACAAQAGAAaABwAHgAgACIAI4AlgAIABAAmwCjAKgAsAC2AL4AvQDFAMoA0gBPAVYBWgEIAAgACACMANoAYgFkAWwBdAF8AX0BhQGNAZUBlgGeAaMBlQGWAasBswF8AbsBwwF0AcsBYwHTAQgA2wG/AOMBdAF8AekB8QF0AfkB+wHiAHQBfAEIAAMC5gQIAAsCEgIIAAgAFgIeAggAIgIpAggAMQI5AkACygEIAAgASAJQAlgCYAIIAAgACAAKBQoFCgUTBRMFGQUrBSsFCAAIAAgACAAIAAgACAAIAAgACABdAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABoAmgCrwGvAQgAbgJ2AggAHgEIAAgACADnAXsCCAAIAAgAgwIIAAgACAAIAAgACACKAggAkQKZAggAPADJAAgAoQKkAqwCsgK6AsICCADJAggA0AIIAAgACAAIANYC3gIIAAgACAAIAAgACABAAOYCCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAkASoB+QIEAAgACAA8AEMCCABCBQgACABJBVAFCAAIAAgACAAIAAgACAAIAAgACABTBVoFCAAIAFoFCABfBWUFCAAIAAgACAAIAAgAbQUIAAgACAAIAAgACABzBXsFfQWFBYoFigWKBZEFigWKBYoFmAWfBaYFrgWxBbkFCAAIAAgACAAIAAgACAAIAAgACAAIAMEFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAMgFCADQBQgACAAIAAgACAAIAAgACAAIAAgACAAIAO4CCAAIAAgAiQAIAAgACABAAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAD0AggACAD8AggACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIANYFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAMDvwAIAAgAJAIIAAgACAAIAAgACAAIAAgACwMTAwgACAB9BOsEGwMjAwgAKwMyAwsFYgE3A/MEPwMIAEUDTQNRAwgAWQOsAGEDCAAIAAgACAAIAAgACABpAzQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFIQUoBSwFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABtAwgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABMAEwACAAIAAgACAAIABgACAAIAAgACAC/AAgACAAyAQgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACAAIAAwAAgACAAIAAgACAAIAAgACAAIAAAARABIAAgACAAIABQASAAIAAgAIABwAEAAjgCIABsAqAC2AL0AigDQAtwC+IJIQqVAZUBWQqVAZUBlQGVAZUBlQGrC5UBlQGVAZUBlQGVAZUBlQGVAXsKlQGVAbAK6wsrDGUMpQzlDJUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAfAKAAuZA64AtwCJALoC6ADwAAgAuACgA/oEpgO6AqsD+AAIAAgAswMIAAgACAAIAIkAuwP5AfsBwwPLAwgACAAIAAgACADRA9kDCAAIAOED6QMIAAgACAAIAAgACADuA/YDCAAIAP4DyQAIAAgABgQIAAgAXQAOBAgACAAIAAgACAAIABMECAAIAAgACAAIAAgACAD8AAQBCAAIAAgAGgQiBCoECAExBAgAEAEIAAgACAAIAAgACAAIAAgACAAIAAgACAA4BAgACABABEYECAAIAAgATAQYAQgAVAQIAAgACAAIAAgACAAIAAgACAAIAFoECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAOQEIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAB+BAcACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAEABhgSMBAgACAAIAAgAlAQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAwAEAAQABAADAAMAAwADAAQABAAEAAQABAAEAAQABHATAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAdQMIAAgACAAIAAgACAAIAMkACAAIAAgAfQMIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACFA4kDCAAIAAgACAAIAOcBCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAIcDCAAIAAgACAAIAAgACAAIAAgACAAIAJEDCAAIAAgACADFAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABgBAgAZgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAbAQCBXIECAAIAHkECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABAAJwEQACjBKoEsgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAC6BMIECAAIAAgACAAIAAgACABmBAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAxwQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAGYECAAIAAgAzgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBd0FXwUIAOIF6gXxBYoF3gT5BQAGCAaKBYoFigWKBYoFigWKBYoFigWKBYoFigXWBIoFigWKBYoFigWKBYoFigWKBYsFEAaKBYoFigWKBYoFigWKBRQGCACKBYoFigWKBQgACAAIANEECAAIABgGigUgBggAJgYIAC4GMwaKBYoF0wQ3Bj4GigWKBYoFigWKBYoFigWKBYoFigWKBYoFigUIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWLBf///////wQABAAEAAQABAAEAAQABAAEAAQAAwAEAAQAAgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAQADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUAAAAFAAUAAAAFAAUAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAQAAAAUABQAFAAUABQAFAAAAAAAFAAUAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAFAAUAAQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAAABwAHAAcAAAAHAAcABwAFAAEAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAcABwAFAAUAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQABAAAAAAAAAAAAAAAFAAUABQAFAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAHAAcAAAAHAAcAAAAAAAUABQAHAAUAAQAHAAEABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwABAAUABQAFAAUAAAAAAAAAAAAAAAEAAQABAAEAAQABAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABQANAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAABQAHAAUABQAFAAAAAAAAAAcABQAFAAUABQAFAAQABAAEAAQABAAEAAQABAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUAAAAFAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAUAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAcABwAFAAcABwAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUABwAHAAUABQAFAAUAAAAAAAcABwAAAAAABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAAAAAAAAAAABQAFAAAAAAAFAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAFAAUABQAFAAUAAAAFAAUABwAAAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABwAFAAUABQAFAAAAAAAHAAcAAAAAAAcABwAFAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAAAAAAAAAHAAcABwAAAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAUABQAFAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAHAAcABQAHAAcAAAAFAAcABwAAAAcABwAFAAUAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAFAAcABwAFAAUABQAAAAUAAAAHAAcABwAHAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAHAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUAAAAFAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAUAAAAFAAUAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABwAFAAUABQAFAAUABQAAAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABQAFAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAFAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAHAAUABQAFAAUABQAFAAUABwAHAAcABwAHAAcABwAHAAUABwAHAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABwAHAAcABwAFAAUABwAHAAcAAAAAAAAAAAAHAAcABQAHAAcABwAHAAcABwAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAUABQAFAAUABQAFAAUAAAAFAAAABQAAAAAABQAFAAUABQAFAAUABQAFAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAUABQAFAAUABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABwAFAAcABwAHAAcABwAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAUABQAFAAUABwAHAAUABQAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABQAFAAcABwAHAAUABwAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAcABQAFAAUABQAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAAAAAABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAUABQAHAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAFAAUABQAFAAcABwAFAAUABwAHAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAcABwAFAAUABwAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABQAAAAAABQAFAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAcABwAAAAAAAAAAAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAcABwAFAAcABwAAAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAFAAUABQAAAAUABQAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABwAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAHAAcABQAHAAUABQAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAAABwAHAAAAAAAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAFAAUABwAFAAcABwAFAAcABQAFAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAAAAAABwAHAAcABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAFAAcABwAFAAUABQAFAAUABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAUABQAFAAcABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABQAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAAAAAAFAAUABwAHAAcABwAFAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAHAAUABQAFAAUABQAFAAUABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAABQAAAAUABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAHAAcAAAAFAAUAAAAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABQAFAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAABQAFAAUABQAFAAUABQAAAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAFAAUABQAFAAUADgAOAA4ADgAOAA4ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAMAAwADAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAAAAAAAAAAAAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAAAAAAAAAAAAsADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwACwAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAADgAOAA4AAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAAAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4AAAAOAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAAAAAAAAAAAA4AAAAOAAAAAAAAAAAADgAOAA4AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAA=";
+ var chars$1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+ var lookup$1 = typeof Uint8Array === "undefined" ? [] : new Uint8Array(256);
+ for (var i$1 = 0; i$1 < chars$1.length; i$1++) {
+ lookup$1[chars$1.charCodeAt(i$1)] = i$1;
+ }
+ var decode = function(base642) {
+ var bufferLength = base642.length * 0.75, len = base642.length, i4, p2 = 0, encoded1, encoded2, encoded3, encoded4;
+ if (base642[base642.length - 1] === "=") {
+ bufferLength--;
+ if (base642[base642.length - 2] === "=") {
+ bufferLength--;
+ }
+ }
+ var buffer = typeof ArrayBuffer !== "undefined" && typeof Uint8Array !== "undefined" && typeof Uint8Array.prototype.slice !== "undefined" ? new ArrayBuffer(bufferLength) : new Array(bufferLength);
+ var bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);
+ for (i4 = 0; i4 < len; i4 += 4) {
+ encoded1 = lookup$1[base642.charCodeAt(i4)];
+ encoded2 = lookup$1[base642.charCodeAt(i4 + 1)];
+ encoded3 = lookup$1[base642.charCodeAt(i4 + 2)];
+ encoded4 = lookup$1[base642.charCodeAt(i4 + 3)];
+ bytes[p2++] = encoded1 << 2 | encoded2 >> 4;
+ bytes[p2++] = (encoded2 & 15) << 4 | encoded3 >> 2;
+ bytes[p2++] = (encoded3 & 3) << 6 | encoded4 & 63;
+ }
+ return buffer;
+ };
+ var polyUint16Array = function(buffer) {
+ var length = buffer.length;
+ var bytes = [];
+ for (var i4 = 0; i4 < length; i4 += 2) {
+ bytes.push(buffer[i4 + 1] << 8 | buffer[i4]);
+ }
+ return bytes;
+ };
+ var polyUint32Array = function(buffer) {
+ var length = buffer.length;
+ var bytes = [];
+ for (var i4 = 0; i4 < length; i4 += 4) {
+ bytes.push(buffer[i4 + 3] << 24 | buffer[i4 + 2] << 16 | buffer[i4 + 1] << 8 | buffer[i4]);
+ }
+ return bytes;
+ };
+ var UTRIE2_SHIFT_2 = 5;
+ var UTRIE2_SHIFT_1 = 6 + 5;
+ var UTRIE2_INDEX_SHIFT = 2;
+ var UTRIE2_SHIFT_1_2 = UTRIE2_SHIFT_1 - UTRIE2_SHIFT_2;
+ var UTRIE2_LSCP_INDEX_2_OFFSET = 65536 >> UTRIE2_SHIFT_2;
+ var UTRIE2_DATA_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_2;
+ var UTRIE2_DATA_MASK = UTRIE2_DATA_BLOCK_LENGTH - 1;
+ var UTRIE2_LSCP_INDEX_2_LENGTH = 1024 >> UTRIE2_SHIFT_2;
+ var UTRIE2_INDEX_2_BMP_LENGTH = UTRIE2_LSCP_INDEX_2_OFFSET + UTRIE2_LSCP_INDEX_2_LENGTH;
+ var UTRIE2_UTF8_2B_INDEX_2_OFFSET = UTRIE2_INDEX_2_BMP_LENGTH;
+ var UTRIE2_UTF8_2B_INDEX_2_LENGTH = 2048 >> 6;
+ var UTRIE2_INDEX_1_OFFSET = UTRIE2_UTF8_2B_INDEX_2_OFFSET + UTRIE2_UTF8_2B_INDEX_2_LENGTH;
+ var UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = 65536 >> UTRIE2_SHIFT_1;
+ var UTRIE2_INDEX_2_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_1_2;
+ var UTRIE2_INDEX_2_MASK = UTRIE2_INDEX_2_BLOCK_LENGTH - 1;
+ var slice16 = function(view, start5, end2) {
+ if (view.slice) {
+ return view.slice(start5, end2);
+ }
+ return new Uint16Array(Array.prototype.slice.call(view, start5, end2));
+ };
+ var slice32 = function(view, start5, end2) {
+ if (view.slice) {
+ return view.slice(start5, end2);
+ }
+ return new Uint32Array(Array.prototype.slice.call(view, start5, end2));
+ };
+ var createTrieFromBase64 = function(base642, _byteLength) {
+ var buffer = decode(base642);
+ var view32 = Array.isArray(buffer) ? polyUint32Array(buffer) : new Uint32Array(buffer);
+ var view16 = Array.isArray(buffer) ? polyUint16Array(buffer) : new Uint16Array(buffer);
+ var headerLength = 24;
+ var index = slice16(view16, headerLength / 2, view32[4] / 2);
+ var data2 = view32[5] === 2 ? slice16(view16, (headerLength + view32[4]) / 2) : slice32(view32, Math.ceil((headerLength + view32[4]) / 4));
+ return new Trie(view32[0], view32[1], view32[2], view32[3], index, data2);
+ };
+ var Trie = (
+ /** @class */
+ function() {
+ function Trie2(initialValue, errorValue, highStart, highValueIndex, index, data2) {
+ this.initialValue = initialValue;
+ this.errorValue = errorValue;
+ this.highStart = highStart;
+ this.highValueIndex = highValueIndex;
+ this.index = index;
+ this.data = data2;
+ }
+ Trie2.prototype.get = function(codePoint) {
+ var ix;
+ if (codePoint >= 0) {
+ if (codePoint < 55296 || codePoint > 56319 && codePoint <= 65535) {
+ ix = this.index[codePoint >> UTRIE2_SHIFT_2];
+ ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);
+ return this.data[ix];
+ }
+ if (codePoint <= 65535) {
+ ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET + (codePoint - 55296 >> UTRIE2_SHIFT_2)];
+ ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);
+ return this.data[ix];
+ }
+ if (codePoint < this.highStart) {
+ ix = UTRIE2_INDEX_1_OFFSET - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH + (codePoint >> UTRIE2_SHIFT_1);
+ ix = this.index[ix];
+ ix += codePoint >> UTRIE2_SHIFT_2 & UTRIE2_INDEX_2_MASK;
+ ix = this.index[ix];
+ ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);
+ return this.data[ix];
+ }
+ if (codePoint <= 1114111) {
+ return this.data[this.highValueIndex];
+ }
+ }
+ return this.errorValue;
+ };
+ return Trie2;
+ }()
+ );
+ var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+ var lookup = typeof Uint8Array === "undefined" ? [] : new Uint8Array(256);
+ for (var i3 = 0; i3 < chars.length; i3++) {
+ lookup[chars.charCodeAt(i3)] = i3;
+ }
+ var Prepend = 1;
+ var CR = 2;
+ var LF = 3;
+ var Control = 4;
+ var Extend = 5;
+ var SpacingMark = 7;
+ var L2 = 8;
+ var V2 = 9;
+ var T3 = 10;
+ var LV = 11;
+ var LVT = 12;
+ var ZWJ = 13;
+ var Extended_Pictographic = 14;
+ var RI = 15;
+ var toCodePoints = function(str) {
+ var codePoints = [];
+ var i4 = 0;
+ var length = str.length;
+ while (i4 < length) {
+ var value = str.charCodeAt(i4++);
+ if (value >= 55296 && value <= 56319 && i4 < length) {
+ var extra = str.charCodeAt(i4++);
+ if ((extra & 64512) === 56320) {
+ codePoints.push(((value & 1023) << 10) + (extra & 1023) + 65536);
+ } else {
+ codePoints.push(value);
+ i4--;
+ }
+ } else {
+ codePoints.push(value);
+ }
+ }
+ return codePoints;
+ };
+ var fromCodePoint = function() {
+ var codePoints = [];
+ for (var _i = 0; _i < arguments.length; _i++) {
+ codePoints[_i] = arguments[_i];
+ }
+ if (String.fromCodePoint) {
+ return String.fromCodePoint.apply(String, codePoints);
+ }
+ var length = codePoints.length;
+ if (!length) {
+ return "";
+ }
+ var codeUnits = [];
+ var index = -1;
+ var result = "";
+ while (++index < length) {
+ var codePoint = codePoints[index];
+ if (codePoint <= 65535) {
+ codeUnits.push(codePoint);
+ } else {
+ codePoint -= 65536;
+ codeUnits.push((codePoint >> 10) + 55296, codePoint % 1024 + 56320);
+ }
+ if (index + 1 === length || codeUnits.length > 16384) {
+ result += String.fromCharCode.apply(String, codeUnits);
+ codeUnits.length = 0;
+ }
+ }
+ return result;
+ };
+ var UnicodeTrie = createTrieFromBase64(base64);
+ var BREAK_NOT_ALLOWED = "\xD7";
+ var BREAK_ALLOWED = "\xF7";
+ var codePointToClass = function(codePoint) {
+ return UnicodeTrie.get(codePoint);
+ };
+ var _graphemeBreakAtIndex = function(_codePoints, classTypes, index) {
+ var prevIndex = index - 2;
+ var prev = classTypes[prevIndex];
+ var current = classTypes[index - 1];
+ var next = classTypes[index];
+ if (current === CR && next === LF) {
+ return BREAK_NOT_ALLOWED;
+ }
+ if (current === CR || current === LF || current === Control) {
+ return BREAK_ALLOWED;
+ }
+ if (next === CR || next === LF || next === Control) {
+ return BREAK_ALLOWED;
+ }
+ if (current === L2 && [L2, V2, LV, LVT].indexOf(next) !== -1) {
+ return BREAK_NOT_ALLOWED;
+ }
+ if ((current === LV || current === V2) && (next === V2 || next === T3)) {
+ return BREAK_NOT_ALLOWED;
+ }
+ if ((current === LVT || current === T3) && next === T3) {
+ return BREAK_NOT_ALLOWED;
+ }
+ if (next === ZWJ || next === Extend) {
+ return BREAK_NOT_ALLOWED;
+ }
+ if (next === SpacingMark) {
+ return BREAK_NOT_ALLOWED;
+ }
+ if (current === Prepend) {
+ return BREAK_NOT_ALLOWED;
+ }
+ if (current === ZWJ && next === Extended_Pictographic) {
+ while (prev === Extend) {
+ prev = classTypes[--prevIndex];
+ }
+ if (prev === Extended_Pictographic) {
+ return BREAK_NOT_ALLOWED;
+ }
+ }
+ if (current === RI && next === RI) {
+ var countRI = 0;
+ while (prev === RI) {
+ countRI++;
+ prev = classTypes[--prevIndex];
+ }
+ if (countRI % 2 === 0) {
+ return BREAK_NOT_ALLOWED;
+ }
+ }
+ return BREAK_ALLOWED;
+ };
+ var GraphemeBreaker = function(str) {
+ var codePoints = toCodePoints(str);
+ var length = codePoints.length;
+ var index = 0;
+ var lastEnd = 0;
+ var classTypes = codePoints.map(codePointToClass);
+ return {
+ next: function() {
+ if (index >= length) {
+ return { done: true, value: null };
+ }
+ var graphemeBreak = BREAK_NOT_ALLOWED;
+ while (index < length && (graphemeBreak = _graphemeBreakAtIndex(codePoints, classTypes, ++index)) === BREAK_NOT_ALLOWED) {
+ }
+ if (graphemeBreak !== BREAK_NOT_ALLOWED || index === length) {
+ var value = fromCodePoint.apply(null, codePoints.slice(lastEnd, index));
+ lastEnd = index;
+ return { value, done: false };
+ }
+ return { done: true, value: null };
+ }
+ };
+ };
+ var splitGraphemes = function(str) {
+ var breaker = GraphemeBreaker(str);
+ var graphemes = [];
+ var bk;
+ while (!(bk = breaker.next()).done) {
+ if (bk.value) {
+ graphemes.push(bk.value.slice());
+ }
+ }
+ return graphemes;
+ };
+ var testRangeBounds = function(document2) {
+ var TEST_HEIGHT = 123;
+ if (document2.createRange) {
+ var range = document2.createRange();
+ if (range.getBoundingClientRect) {
+ var testElement = document2.createElement("boundtest");
+ testElement.style.height = TEST_HEIGHT + "px";
+ testElement.style.display = "block";
+ document2.body.appendChild(testElement);
+ range.selectNode(testElement);
+ var rangeBounds = range.getBoundingClientRect();
+ var rangeHeight = Math.round(rangeBounds.height);
+ document2.body.removeChild(testElement);
+ if (rangeHeight === TEST_HEIGHT) {
+ return true;
+ }
+ }
+ }
+ return false;
+ };
+ var testIOSLineBreak = function(document2) {
+ var testElement = document2.createElement("boundtest");
+ testElement.style.width = "50px";
+ testElement.style.display = "block";
+ testElement.style.fontSize = "12px";
+ testElement.style.letterSpacing = "0px";
+ testElement.style.wordSpacing = "0px";
+ document2.body.appendChild(testElement);
+ var range = document2.createRange();
+ testElement.innerHTML = typeof "".repeat === "function" ? "👨".repeat(10) : "";
+ var node = testElement.firstChild;
+ var textList = toCodePoints$1(node.data).map(function(i4) {
+ return fromCodePoint$1(i4);
+ });
+ var offset2 = 0;
+ var prev = {};
+ var supports = textList.every(function(text, i4) {
+ range.setStart(node, offset2);
+ range.setEnd(node, offset2 + text.length);
+ var rect = range.getBoundingClientRect();
+ offset2 += text.length;
+ var boundAhead = rect.x > prev.x || rect.y > prev.y;
+ prev = rect;
+ if (i4 === 0) {
+ return true;
+ }
+ return boundAhead;
+ });
+ document2.body.removeChild(testElement);
+ return supports;
+ };
+ var testCORS = function() {
+ return typeof new Image().crossOrigin !== "undefined";
+ };
+ var testResponseType = function() {
+ return typeof new XMLHttpRequest().responseType === "string";
+ };
+ var testSVG = function(document2) {
+ var img = new Image();
+ var canvas = document2.createElement("canvas");
+ var ctx = canvas.getContext("2d");
+ if (!ctx) {
+ return false;
+ }
+ img.src = "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'></svg>";
+ try {
+ ctx.drawImage(img, 0, 0);
+ canvas.toDataURL();
+ } catch (e4) {
+ return false;
+ }
+ return true;
+ };
+ var isGreenPixel = function(data2) {
+ return data2[0] === 0 && data2[1] === 255 && data2[2] === 0 && data2[3] === 255;
+ };
+ var testForeignObject = function(document2) {
+ var canvas = document2.createElement("canvas");
+ var size2 = 100;
+ canvas.width = size2;
+ canvas.height = size2;
+ var ctx = canvas.getContext("2d");
+ if (!ctx) {
+ return Promise.reject(false);
+ }
+ ctx.fillStyle = "rgb(0, 255, 0)";
+ ctx.fillRect(0, 0, size2, size2);
+ var img = new Image();
+ var greenImageSrc = canvas.toDataURL();
+ img.src = greenImageSrc;
+ var svg = createForeignObjectSVG(size2, size2, 0, 0, img);
+ ctx.fillStyle = "red";
+ ctx.fillRect(0, 0, size2, size2);
+ return loadSerializedSVG$1(svg).then(function(img2) {
+ ctx.drawImage(img2, 0, 0);
+ var data2 = ctx.getImageData(0, 0, size2, size2).data;
+ ctx.fillStyle = "red";
+ ctx.fillRect(0, 0, size2, size2);
+ var node = document2.createElement("div");
+ node.style.backgroundImage = "url(" + greenImageSrc + ")";
+ node.style.height = size2 + "px";
+ return isGreenPixel(data2) ? loadSerializedSVG$1(createForeignObjectSVG(size2, size2, 0, 0, node)) : Promise.reject(false);
+ }).then(function(img2) {
+ ctx.drawImage(img2, 0, 0);
+ return isGreenPixel(ctx.getImageData(0, 0, size2, size2).data);
+ }).catch(function() {
+ return false;
+ });
+ };
+ var createForeignObjectSVG = function(width, height, x3, y3, node) {
+ var xmlns = "http://www.w3.org/2000/svg";
+ var svg = document.createElementNS(xmlns, "svg");
+ var foreignObject = document.createElementNS(xmlns, "foreignObject");
+ svg.setAttributeNS(null, "width", width.toString());
+ svg.setAttributeNS(null, "height", height.toString());
+ foreignObject.setAttributeNS(null, "width", "100%");
+ foreignObject.setAttributeNS(null, "height", "100%");
+ foreignObject.setAttributeNS(null, "x", x3.toString());
+ foreignObject.setAttributeNS(null, "y", y3.toString());
+ foreignObject.setAttributeNS(null, "externalResourcesRequired", "true");
+ svg.appendChild(foreignObject);
+ foreignObject.appendChild(node);
+ return svg;
+ };
+ var loadSerializedSVG$1 = function(svg) {
+ return new Promise(function(resolve, reject) {
+ var img = new Image();
+ img.onload = function() {
+ return resolve(img);
+ };
+ img.onerror = reject;
+ img.src = "data:image/svg+xml;charset=utf-8," + encodeURIComponent(new XMLSerializer().serializeToString(svg));
+ });
+ };
+ var FEATURES = {
+ get SUPPORT_RANGE_BOUNDS() {
+ var value = testRangeBounds(document);
+ Object.defineProperty(FEATURES, "SUPPORT_RANGE_BOUNDS", { value });
+ return value;
+ },
+ get SUPPORT_WORD_BREAKING() {
+ var value = FEATURES.SUPPORT_RANGE_BOUNDS && testIOSLineBreak(document);
+ Object.defineProperty(FEATURES, "SUPPORT_WORD_BREAKING", { value });
+ return value;
+ },
+ get SUPPORT_SVG_DRAWING() {
+ var value = testSVG(document);
+ Object.defineProperty(FEATURES, "SUPPORT_SVG_DRAWING", { value });
+ return value;
+ },
+ get SUPPORT_FOREIGNOBJECT_DRAWING() {
+ var value = typeof Array.from === "function" && typeof window.fetch === "function" ? testForeignObject(document) : Promise.resolve(false);
+ Object.defineProperty(FEATURES, "SUPPORT_FOREIGNOBJECT_DRAWING", { value });
+ return value;
+ },
+ get SUPPORT_CORS_IMAGES() {
+ var value = testCORS();
+ Object.defineProperty(FEATURES, "SUPPORT_CORS_IMAGES", { value });
+ return value;
+ },
+ get SUPPORT_RESPONSE_TYPE() {
+ var value = testResponseType();
+ Object.defineProperty(FEATURES, "SUPPORT_RESPONSE_TYPE", { value });
+ return value;
+ },
+ get SUPPORT_CORS_XHR() {
+ var value = "withCredentials" in new XMLHttpRequest();
+ Object.defineProperty(FEATURES, "SUPPORT_CORS_XHR", { value });
+ return value;
+ },
+ get SUPPORT_NATIVE_TEXT_SEGMENTATION() {
+ var value = !!(typeof Intl !== "undefined" && Intl.Segmenter);
+ Object.defineProperty(FEATURES, "SUPPORT_NATIVE_TEXT_SEGMENTATION", { value });
+ return value;
+ }
+ };
+ var TextBounds = (
+ /** @class */
+ function() {
+ function TextBounds2(text, bounds) {
+ this.text = text;
+ this.bounds = bounds;
+ }
+ return TextBounds2;
+ }()
+ );
+ var parseTextBounds = function(context, value, styles, node) {
+ var textList = breakText(value, styles);
+ var textBounds = [];
+ var offset2 = 0;
+ textList.forEach(function(text) {
+ if (styles.textDecorationLine.length || text.trim().length > 0) {
+ if (FEATURES.SUPPORT_RANGE_BOUNDS) {
+ var clientRects = createRange(node, offset2, text.length).getClientRects();
+ if (clientRects.length > 1) {
+ var subSegments = segmentGraphemes(text);
+ var subOffset_1 = 0;
+ subSegments.forEach(function(subSegment) {
+ textBounds.push(new TextBounds(subSegment, Bounds.fromDOMRectList(context, createRange(node, subOffset_1 + offset2, subSegment.length).getClientRects())));
+ subOffset_1 += subSegment.length;
+ });
+ } else {
+ textBounds.push(new TextBounds(text, Bounds.fromDOMRectList(context, clientRects)));
+ }
+ } else {
+ var replacementNode = node.splitText(text.length);
+ textBounds.push(new TextBounds(text, getWrapperBounds(context, node)));
+ node = replacementNode;
+ }
+ } else if (!FEATURES.SUPPORT_RANGE_BOUNDS) {
+ node = node.splitText(text.length);
+ }
+ offset2 += text.length;
+ });
+ return textBounds;
+ };
+ var getWrapperBounds = function(context, node) {
+ var ownerDocument = node.ownerDocument;
+ if (ownerDocument) {
+ var wrapper = ownerDocument.createElement("html2canvaswrapper");
+ wrapper.appendChild(node.cloneNode(true));
+ var parentNode = node.parentNode;
+ if (parentNode) {
+ parentNode.replaceChild(wrapper, node);
+ var bounds = parseBounds(context, wrapper);
+ if (wrapper.firstChild) {
+ parentNode.replaceChild(wrapper.firstChild, wrapper);
+ }
+ return bounds;
+ }
+ }
+ return Bounds.EMPTY;
+ };
+ var createRange = function(node, offset2, length) {
+ var ownerDocument = node.ownerDocument;
+ if (!ownerDocument) {
+ throw new Error("Node has no owner document");
+ }
+ var range = ownerDocument.createRange();
+ range.setStart(node, offset2);
+ range.setEnd(node, offset2 + length);
+ return range;
+ };
+ var segmentGraphemes = function(value) {
+ if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) {
+ var segmenter = new Intl.Segmenter(void 0, { granularity: "grapheme" });
+ return Array.from(segmenter.segment(value)).map(function(segment) {
+ return segment.segment;
+ });
+ }
+ return splitGraphemes(value);
+ };
+ var segmentWords = function(value, styles) {
+ if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) {
+ var segmenter = new Intl.Segmenter(void 0, {
+ granularity: "word"
+ });
+ return Array.from(segmenter.segment(value)).map(function(segment) {
+ return segment.segment;
+ });
+ }
+ return breakWords(value, styles);
+ };
+ var breakText = function(value, styles) {
+ return styles.letterSpacing !== 0 ? segmentGraphemes(value) : segmentWords(value, styles);
+ };
+ var wordSeparators = [32, 160, 4961, 65792, 65793, 4153, 4241];
+ var breakWords = function(str, styles) {
+ var breaker = LineBreaker(str, {
+ lineBreak: styles.lineBreak,
+ wordBreak: styles.overflowWrap === "break-word" ? "break-word" : styles.wordBreak
+ });
+ var words = [];
+ var bk;
+ var _loop_1 = function() {
+ if (bk.value) {
+ var value = bk.value.slice();
+ var codePoints = toCodePoints$1(value);
+ var word_1 = "";
+ codePoints.forEach(function(codePoint) {
+ if (wordSeparators.indexOf(codePoint) === -1) {
+ word_1 += fromCodePoint$1(codePoint);
+ } else {
+ if (word_1.length) {
+ words.push(word_1);
+ }
+ words.push(fromCodePoint$1(codePoint));
+ word_1 = "";
+ }
+ });
+ if (word_1.length) {
+ words.push(word_1);
+ }
+ }
+ };
+ while (!(bk = breaker.next()).done) {
+ _loop_1();
+ }
+ return words;
+ };
+ var TextContainer = (
+ /** @class */
+ function() {
+ function TextContainer2(context, node, styles) {
+ this.text = transform(node.data, styles.textTransform);
+ this.textBounds = parseTextBounds(context, this.text, styles, node);
+ }
+ return TextContainer2;
+ }()
+ );
+ var transform = function(text, transform2) {
+ switch (transform2) {
+ case 1:
+ return text.toLowerCase();
+ case 3:
+ return text.replace(CAPITALIZE, capitalize2);
+ case 2:
+ return text.toUpperCase();
+ default:
+ return text;
+ }
+ };
+ var CAPITALIZE = /(^|\s|:|-|\(|\))([a-z])/g;
+ var capitalize2 = function(m3, p1, p2) {
+ if (m3.length > 0) {
+ return p1 + p2.toUpperCase();
+ }
+ return m3;
+ };
+ var ImageElementContainer = (
+ /** @class */
+ function(_super) {
+ __extends(ImageElementContainer2, _super);
+ function ImageElementContainer2(context, img) {
+ var _this = _super.call(this, context, img) || this;
+ _this.src = img.currentSrc || img.src;
+ _this.intrinsicWidth = img.naturalWidth;
+ _this.intrinsicHeight = img.naturalHeight;
+ _this.context.cache.addImage(_this.src);
+ return _this;
+ }
+ return ImageElementContainer2;
+ }(ElementContainer)
+ );
+ var CanvasElementContainer = (
+ /** @class */
+ function(_super) {
+ __extends(CanvasElementContainer2, _super);
+ function CanvasElementContainer2(context, canvas) {
+ var _this = _super.call(this, context, canvas) || this;
+ _this.canvas = canvas;
+ _this.intrinsicWidth = canvas.width;
+ _this.intrinsicHeight = canvas.height;
+ return _this;
+ }
+ return CanvasElementContainer2;
+ }(ElementContainer)
+ );
+ var SVGElementContainer = (
+ /** @class */
+ function(_super) {
+ __extends(SVGElementContainer2, _super);
+ function SVGElementContainer2(context, img) {
+ var _this = _super.call(this, context, img) || this;
+ var s3 = new XMLSerializer();
+ var bounds = parseBounds(context, img);
+ img.setAttribute("width", bounds.width + "px");
+ img.setAttribute("height", bounds.height + "px");
+ _this.svg = "data:image/svg+xml," + encodeURIComponent(s3.serializeToString(img));
+ _this.intrinsicWidth = img.width.baseVal.value;
+ _this.intrinsicHeight = img.height.baseVal.value;
+ _this.context.cache.addImage(_this.svg);
+ return _this;
+ }
+ return SVGElementContainer2;
+ }(ElementContainer)
+ );
+ var LIElementContainer = (
+ /** @class */
+ function(_super) {
+ __extends(LIElementContainer2, _super);
+ function LIElementContainer2(context, element) {
+ var _this = _super.call(this, context, element) || this;
+ _this.value = element.value;
+ return _this;
+ }
+ return LIElementContainer2;
+ }(ElementContainer)
+ );
+ var OLElementContainer = (
+ /** @class */
+ function(_super) {
+ __extends(OLElementContainer2, _super);
+ function OLElementContainer2(context, element) {
+ var _this = _super.call(this, context, element) || this;
+ _this.start = element.start;
+ _this.reversed = typeof element.reversed === "boolean" && element.reversed === true;
+ return _this;
+ }
+ return OLElementContainer2;
+ }(ElementContainer)
+ );
+ var CHECKBOX_BORDER_RADIUS = [
+ {
+ type: 15,
+ flags: 0,
+ unit: "px",
+ number: 3
+ }
+ ];
+ var RADIO_BORDER_RADIUS = [
+ {
+ type: 16,
+ flags: 0,
+ number: 50
+ }
+ ];
+ var reformatInputBounds = function(bounds) {
+ if (bounds.width > bounds.height) {
+ return new Bounds(bounds.left + (bounds.width - bounds.height) / 2, bounds.top, bounds.height, bounds.height);
+ } else if (bounds.width < bounds.height) {
+ return new Bounds(bounds.left, bounds.top + (bounds.height - bounds.width) / 2, bounds.width, bounds.width);
+ }
+ return bounds;
+ };
+ var getInputValue2 = function(node) {
+ var value = node.type === PASSWORD ? new Array(node.value.length + 1).join("\u2022") : node.value;
+ return value.length === 0 ? node.placeholder || "" : value;
+ };
+ var CHECKBOX = "checkbox";
+ var RADIO = "radio";
+ var PASSWORD = "password";
+ var INPUT_COLOR = 707406591;
+ var InputElementContainer = (
+ /** @class */
+ function(_super) {
+ __extends(InputElementContainer2, _super);
+ function InputElementContainer2(context, input) {
+ var _this = _super.call(this, context, input) || this;
+ _this.type = input.type.toLowerCase();
+ _this.checked = input.checked;
+ _this.value = getInputValue2(input);
+ if (_this.type === CHECKBOX || _this.type === RADIO) {
+ _this.styles.backgroundColor = 3739148031;
+ _this.styles.borderTopColor = _this.styles.borderRightColor = _this.styles.borderBottomColor = _this.styles.borderLeftColor = 2779096575;
+ _this.styles.borderTopWidth = _this.styles.borderRightWidth = _this.styles.borderBottomWidth = _this.styles.borderLeftWidth = 1;
+ _this.styles.borderTopStyle = _this.styles.borderRightStyle = _this.styles.borderBottomStyle = _this.styles.borderLeftStyle = 1;
+ _this.styles.backgroundClip = [
+ 0
+ /* BORDER_BOX */
+ ];
+ _this.styles.backgroundOrigin = [
+ 0
+ /* BORDER_BOX */
+ ];
+ _this.bounds = reformatInputBounds(_this.bounds);
+ }
+ switch (_this.type) {
+ case CHECKBOX:
+ _this.styles.borderTopRightRadius = _this.styles.borderTopLeftRadius = _this.styles.borderBottomRightRadius = _this.styles.borderBottomLeftRadius = CHECKBOX_BORDER_RADIUS;
+ break;
+ case RADIO:
+ _this.styles.borderTopRightRadius = _this.styles.borderTopLeftRadius = _this.styles.borderBottomRightRadius = _this.styles.borderBottomLeftRadius = RADIO_BORDER_RADIUS;
+ break;
+ }
+ return _this;
+ }
+ return InputElementContainer2;
+ }(ElementContainer)
+ );
+ var SelectElementContainer = (
+ /** @class */
+ function(_super) {
+ __extends(SelectElementContainer2, _super);
+ function SelectElementContainer2(context, element) {
+ var _this = _super.call(this, context, element) || this;
+ var option = element.options[element.selectedIndex || 0];
+ _this.value = option ? option.text || "" : "";
+ return _this;
+ }
+ return SelectElementContainer2;
+ }(ElementContainer)
+ );
+ var TextareaElementContainer = (
+ /** @class */
+ function(_super) {
+ __extends(TextareaElementContainer2, _super);
+ function TextareaElementContainer2(context, element) {
+ var _this = _super.call(this, context, element) || this;
+ _this.value = element.value;
+ return _this;
+ }
+ return TextareaElementContainer2;
+ }(ElementContainer)
+ );
+ var IFrameElementContainer = (
+ /** @class */
+ function(_super) {
+ __extends(IFrameElementContainer2, _super);
+ function IFrameElementContainer2(context, iframe) {
+ var _this = _super.call(this, context, iframe) || this;
+ _this.src = iframe.src;
+ _this.width = parseInt(iframe.width, 10) || 0;
+ _this.height = parseInt(iframe.height, 10) || 0;
+ _this.backgroundColor = _this.styles.backgroundColor;
+ try {
+ if (iframe.contentWindow && iframe.contentWindow.document && iframe.contentWindow.document.documentElement) {
+ _this.tree = parseTree(context, iframe.contentWindow.document.documentElement);
+ var documentBackgroundColor = iframe.contentWindow.document.documentElement ? parseColor(context, getComputedStyle(iframe.contentWindow.document.documentElement).backgroundColor) : COLORS.TRANSPARENT;
+ var bodyBackgroundColor = iframe.contentWindow.document.body ? parseColor(context, getComputedStyle(iframe.contentWindow.document.body).backgroundColor) : COLORS.TRANSPARENT;
+ _this.backgroundColor = isTransparent(documentBackgroundColor) ? isTransparent(bodyBackgroundColor) ? _this.styles.backgroundColor : bodyBackgroundColor : documentBackgroundColor;
+ }
+ } catch (e4) {
+ }
+ return _this;
+ }
+ return IFrameElementContainer2;
+ }(ElementContainer)
+ );
+ var LIST_OWNERS = ["OL", "UL", "MENU"];
+ var parseNodeTree = function(context, node, parent, root) {
+ for (var childNode = node.firstChild, nextNode = void 0; childNode; childNode = nextNode) {
+ nextNode = childNode.nextSibling;
+ if (isTextNode(childNode) && childNode.data.trim().length > 0) {
+ parent.textNodes.push(new TextContainer(context, childNode, parent.styles));
+ } else if (isElementNode(childNode)) {
+ if (isSlotElement(childNode) && childNode.assignedNodes) {
+ childNode.assignedNodes().forEach(function(childNode2) {
+ return parseNodeTree(context, childNode2, parent, root);
+ });
+ } else {
+ var container = createContainer(context, childNode);
+ if (container.styles.isVisible()) {
+ if (createsRealStackingContext(childNode, container, root)) {
+ container.flags |= 4;
+ } else if (createsStackingContext(container.styles)) {
+ container.flags |= 2;
+ }
+ if (LIST_OWNERS.indexOf(childNode.tagName) !== -1) {
+ container.flags |= 8;
+ }
+ parent.elements.push(container);
+ childNode.slot;
+ if (childNode.shadowRoot) {
+ parseNodeTree(context, childNode.shadowRoot, container, root);
+ } else if (!isTextareaElement(childNode) && !isSVGElement(childNode) && !isSelectElement(childNode)) {
+ parseNodeTree(context, childNode, container, root);
+ }
+ }
+ }
+ }
+ }
+ };
+ var createContainer = function(context, element) {
+ if (isImageElement(element)) {
+ return new ImageElementContainer(context, element);
+ }
+ if (isCanvasElement(element)) {
+ return new CanvasElementContainer(context, element);
+ }
+ if (isSVGElement(element)) {
+ return new SVGElementContainer(context, element);
+ }
+ if (isLIElement(element)) {
+ return new LIElementContainer(context, element);
+ }
+ if (isOLElement(element)) {
+ return new OLElementContainer(context, element);
+ }
+ if (isInputElement(element)) {
+ return new InputElementContainer(context, element);
+ }
+ if (isSelectElement(element)) {
+ return new SelectElementContainer(context, element);
+ }
+ if (isTextareaElement(element)) {
+ return new TextareaElementContainer(context, element);
+ }
+ if (isIFrameElement(element)) {
+ return new IFrameElementContainer(context, element);
+ }
+ return new ElementContainer(context, element);
+ };
+ var parseTree = function(context, element) {
+ var container = createContainer(context, element);
+ container.flags |= 4;
+ parseNodeTree(context, element, container, container);
+ return container;
+ };
+ var createsRealStackingContext = function(node, container, root) {
+ return container.styles.isPositionedWithZIndex() || container.styles.opacity < 1 || container.styles.isTransformed() || isBodyElement(node) && root.styles.isTransparent();
+ };
+ var createsStackingContext = function(styles) {
+ return styles.isPositioned() || styles.isFloating();
+ };
+ var isTextNode = function(node) {
+ return node.nodeType === Node.TEXT_NODE;
+ };
+ var isElementNode = function(node) {
+ return node.nodeType === Node.ELEMENT_NODE;
+ };
+ var isHTMLElementNode = function(node) {
+ return isElementNode(node) && typeof node.style !== "undefined" && !isSVGElementNode(node);
+ };
+ var isSVGElementNode = function(element) {
+ return typeof element.className === "object";
+ };
+ var isLIElement = function(node) {
+ return node.tagName === "LI";
+ };
+ var isOLElement = function(node) {
+ return node.tagName === "OL";
+ };
+ var isInputElement = function(node) {
+ return node.tagName === "INPUT";
+ };
+ var isHTMLElement2 = function(node) {
+ return node.tagName === "HTML";
+ };
+ var isSVGElement = function(node) {
+ return node.tagName === "svg";
+ };
+ var isBodyElement = function(node) {
+ return node.tagName === "BODY";
+ };
+ var isCanvasElement = function(node) {
+ return node.tagName === "CANVAS";
+ };
+ var isVideoElement = function(node) {
+ return node.tagName === "VIDEO";
+ };
+ var isImageElement = function(node) {
+ return node.tagName === "IMG";
+ };
+ var isIFrameElement = function(node) {
+ return node.tagName === "IFRAME";
+ };
+ var isStyleElement = function(node) {
+ return node.tagName === "STYLE";
+ };
+ var isScriptElement = function(node) {
+ return node.tagName === "SCRIPT";
+ };
+ var isTextareaElement = function(node) {
+ return node.tagName === "TEXTAREA";
+ };
+ var isSelectElement = function(node) {
+ return node.tagName === "SELECT";
+ };
+ var isSlotElement = function(node) {
+ return node.tagName === "SLOT";
+ };
+ var isCustomElement = function(node) {
+ return node.tagName.indexOf("-") > 0;
+ };
+ var CounterState = (
+ /** @class */
+ function() {
+ function CounterState2() {
+ this.counters = {};
+ }
+ CounterState2.prototype.getCounterValue = function(name) {
+ var counter = this.counters[name];
+ if (counter && counter.length) {
+ return counter[counter.length - 1];
+ }
+ return 1;
+ };
+ CounterState2.prototype.getCounterValues = function(name) {
+ var counter = this.counters[name];
+ return counter ? counter : [];
+ };
+ CounterState2.prototype.pop = function(counters) {
+ var _this = this;
+ counters.forEach(function(counter) {
+ return _this.counters[counter].pop();
+ });
+ };
+ CounterState2.prototype.parse = function(style) {
+ var _this = this;
+ var counterIncrement2 = style.counterIncrement;
+ var counterReset2 = style.counterReset;
+ var canReset = true;
+ if (counterIncrement2 !== null) {
+ counterIncrement2.forEach(function(entry) {
+ var counter = _this.counters[entry.counter];
+ if (counter && entry.increment !== 0) {
+ canReset = false;
+ if (!counter.length) {
+ counter.push(1);
+ }
+ counter[Math.max(0, counter.length - 1)] += entry.increment;
+ }
+ });
+ }
+ var counterNames = [];
+ if (canReset) {
+ counterReset2.forEach(function(entry) {
+ var counter = _this.counters[entry.counter];
+ counterNames.push(entry.counter);
+ if (!counter) {
+ counter = _this.counters[entry.counter] = [];
+ }
+ counter.push(entry.reset);
+ });
+ }
+ return counterNames;
+ };
+ return CounterState2;
+ }()
+ );
+ var ROMAN_UPPER = {
+ integers: [1e3, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1],
+ values: ["M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"]
+ };
+ var ARMENIAN = {
+ integers: [
+ 9e3,
+ 8e3,
+ 7e3,
+ 6e3,
+ 5e3,
+ 4e3,
+ 3e3,
+ 2e3,
+ 1e3,
+ 900,
+ 800,
+ 700,
+ 600,
+ 500,
+ 400,
+ 300,
+ 200,
+ 100,
+ 90,
+ 80,
+ 70,
+ 60,
+ 50,
+ 40,
+ 30,
+ 20,
+ 10,
+ 9,
+ 8,
+ 7,
+ 6,
+ 5,
+ 4,
+ 3,
+ 2,
+ 1
+ ],
+ values: [
+ "\u0554",
+ "\u0553",
+ "\u0552",
+ "\u0551",
+ "\u0550",
+ "\u054F",
+ "\u054E",
+ "\u054D",
+ "\u054C",
+ "\u054B",
+ "\u054A",
+ "\u0549",
+ "\u0548",
+ "\u0547",
+ "\u0546",
+ "\u0545",
+ "\u0544",
+ "\u0543",
+ "\u0542",
+ "\u0541",
+ "\u0540",
+ "\u053F",
+ "\u053E",
+ "\u053D",
+ "\u053C",
+ "\u053B",
+ "\u053A",
+ "\u0539",
+ "\u0538",
+ "\u0537",
+ "\u0536",
+ "\u0535",
+ "\u0534",
+ "\u0533",
+ "\u0532",
+ "\u0531"
+ ]
+ };
+ var HEBREW = {
+ integers: [
+ 1e4,
+ 9e3,
+ 8e3,
+ 7e3,
+ 6e3,
+ 5e3,
+ 4e3,
+ 3e3,
+ 2e3,
+ 1e3,
+ 400,
+ 300,
+ 200,
+ 100,
+ 90,
+ 80,
+ 70,
+ 60,
+ 50,
+ 40,
+ 30,
+ 20,
+ 19,
+ 18,
+ 17,
+ 16,
+ 15,
+ 10,
+ 9,
+ 8,
+ 7,
+ 6,
+ 5,
+ 4,
+ 3,
+ 2,
+ 1
+ ],
+ values: [
+ "\u05D9\u05F3",
+ "\u05D8\u05F3",
+ "\u05D7\u05F3",
+ "\u05D6\u05F3",
+ "\u05D5\u05F3",
+ "\u05D4\u05F3",
+ "\u05D3\u05F3",
+ "\u05D2\u05F3",
+ "\u05D1\u05F3",
+ "\u05D0\u05F3",
+ "\u05EA",
+ "\u05E9",
+ "\u05E8",
+ "\u05E7",
+ "\u05E6",
+ "\u05E4",
+ "\u05E2",
+ "\u05E1",
+ "\u05E0",
+ "\u05DE",
+ "\u05DC",
+ "\u05DB",
+ "\u05D9\u05D8",
+ "\u05D9\u05D7",
+ "\u05D9\u05D6",
+ "\u05D8\u05D6",
+ "\u05D8\u05D5",
+ "\u05D9",
+ "\u05D8",
+ "\u05D7",
+ "\u05D6",
+ "\u05D5",
+ "\u05D4",
+ "\u05D3",
+ "\u05D2",
+ "\u05D1",
+ "\u05D0"
+ ]
+ };
+ var GEORGIAN = {
+ integers: [
+ 1e4,
+ 9e3,
+ 8e3,
+ 7e3,
+ 6e3,
+ 5e3,
+ 4e3,
+ 3e3,
+ 2e3,
+ 1e3,
+ 900,
+ 800,
+ 700,
+ 600,
+ 500,
+ 400,
+ 300,
+ 200,
+ 100,
+ 90,
+ 80,
+ 70,
+ 60,
+ 50,
+ 40,
+ 30,
+ 20,
+ 10,
+ 9,
+ 8,
+ 7,
+ 6,
+ 5,
+ 4,
+ 3,
+ 2,
+ 1
+ ],
+ values: [
+ "\u10F5",
+ "\u10F0",
+ "\u10EF",
+ "\u10F4",
+ "\u10EE",
+ "\u10ED",
+ "\u10EC",
+ "\u10EB",
+ "\u10EA",
+ "\u10E9",
+ "\u10E8",
+ "\u10E7",
+ "\u10E6",
+ "\u10E5",
+ "\u10E4",
+ "\u10F3",
+ "\u10E2",
+ "\u10E1",
+ "\u10E0",
+ "\u10DF",
+ "\u10DE",
+ "\u10DD",
+ "\u10F2",
+ "\u10DC",
+ "\u10DB",
+ "\u10DA",
+ "\u10D9",
+ "\u10D8",
+ "\u10D7",
+ "\u10F1",
+ "\u10D6",
+ "\u10D5",
+ "\u10D4",
+ "\u10D3",
+ "\u10D2",
+ "\u10D1",
+ "\u10D0"
+ ]
+ };
+ var createAdditiveCounter = function(value, min2, max2, symbols, fallback, suffix) {
+ if (value < min2 || value > max2) {
+ return createCounterText(value, fallback, suffix.length > 0);
+ }
+ return symbols.integers.reduce(function(string, integer, index) {
+ while (value >= integer) {
+ value -= integer;
+ string += symbols.values[index];
+ }
+ return string;
+ }, "") + suffix;
+ };
+ var createCounterStyleWithSymbolResolver = function(value, codePointRangeLength, isNumeric5, resolver) {
+ var string = "";
+ do {
+ if (!isNumeric5) {
+ value--;
+ }
+ string = resolver(value) + string;
+ value /= codePointRangeLength;
+ } while (value * codePointRangeLength >= codePointRangeLength);
+ return string;
+ };
+ var createCounterStyleFromRange = function(value, codePointRangeStart, codePointRangeEnd, isNumeric5, suffix) {
+ var codePointRangeLength = codePointRangeEnd - codePointRangeStart + 1;
+ return (value < 0 ? "-" : "") + (createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, isNumeric5, function(codePoint) {
+ return fromCodePoint$1(Math.floor(codePoint % codePointRangeLength) + codePointRangeStart);
+ }) + suffix);
+ };
+ var createCounterStyleFromSymbols = function(value, symbols, suffix) {
+ if (suffix === void 0) {
+ suffix = ". ";
+ }
+ var codePointRangeLength = symbols.length;
+ return createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, false, function(codePoint) {
+ return symbols[Math.floor(codePoint % codePointRangeLength)];
+ }) + suffix;
+ };
+ var CJK_ZEROS = 1 << 0;
+ var CJK_TEN_COEFFICIENTS = 1 << 1;
+ var CJK_TEN_HIGH_COEFFICIENTS = 1 << 2;
+ var CJK_HUNDRED_COEFFICIENTS = 1 << 3;
+ var createCJKCounter = function(value, numbers, multipliers, negativeSign, suffix, flags) {
+ if (value < -9999 || value > 9999) {
+ return createCounterText(value, 4, suffix.length > 0);
+ }
+ var tmp = Math.abs(value);
+ var string = suffix;
+ if (tmp === 0) {
+ return numbers[0] + string;
+ }
+ for (var digit = 0; tmp > 0 && digit <= 4; digit++) {
+ var coefficient = tmp % 10;
+ if (coefficient === 0 && contains2(flags, CJK_ZEROS) && string !== "") {
+ string = numbers[coefficient] + string;
+ } else if (coefficient > 1 || coefficient === 1 && digit === 0 || coefficient === 1 && digit === 1 && contains2(flags, CJK_TEN_COEFFICIENTS) || coefficient === 1 && digit === 1 && contains2(flags, CJK_TEN_HIGH_COEFFICIENTS) && value > 100 || coefficient === 1 && digit > 1 && contains2(flags, CJK_HUNDRED_COEFFICIENTS)) {
+ string = numbers[coefficient] + (digit > 0 ? multipliers[digit - 1] : "") + string;
+ } else if (coefficient === 1 && digit > 0) {
+ string = multipliers[digit - 1] + string;
+ }
+ tmp = Math.floor(tmp / 10);
+ }
+ return (value < 0 ? negativeSign : "") + string;
+ };
+ var CHINESE_INFORMAL_MULTIPLIERS = "\u5341\u767E\u5343\u842C";
+ var CHINESE_FORMAL_MULTIPLIERS = "\u62FE\u4F70\u4EDF\u842C";
+ var JAPANESE_NEGATIVE = "\u30DE\u30A4\u30CA\u30B9";
+ var KOREAN_NEGATIVE = "\uB9C8\uC774\uB108\uC2A4";
+ var createCounterText = function(value, type, appendSuffix) {
+ var defaultSuffix = appendSuffix ? ". " : "";
+ var cjkSuffix = appendSuffix ? "\u3001" : "";
+ var koreanSuffix = appendSuffix ? ", " : "";
+ var spaceSuffix = appendSuffix ? " " : "";
+ switch (type) {
+ case 0:
+ return "\u2022" + spaceSuffix;
+ case 1:
+ return "\u25E6" + spaceSuffix;
+ case 2:
+ return "\u25FE" + spaceSuffix;
+ case 5:
+ var string = createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);
+ return string.length < 4 ? "0" + string : string;
+ case 4:
+ return createCounterStyleFromSymbols(value, "\u3007\u4E00\u4E8C\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D", cjkSuffix);
+ case 6:
+ return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, 3, defaultSuffix).toLowerCase();
+ case 7:
+ return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, 3, defaultSuffix);
+ case 8:
+ return createCounterStyleFromRange(value, 945, 969, false, defaultSuffix);
+ case 9:
+ return createCounterStyleFromRange(value, 97, 122, false, defaultSuffix);
+ case 10:
+ return createCounterStyleFromRange(value, 65, 90, false, defaultSuffix);
+ case 11:
+ return createCounterStyleFromRange(value, 1632, 1641, true, defaultSuffix);
+ case 12:
+ case 49:
+ return createAdditiveCounter(value, 1, 9999, ARMENIAN, 3, defaultSuffix);
+ case 35:
+ return createAdditiveCounter(value, 1, 9999, ARMENIAN, 3, defaultSuffix).toLowerCase();
+ case 13:
+ return createCounterStyleFromRange(value, 2534, 2543, true, defaultSuffix);
+ case 14:
+ case 30:
+ return createCounterStyleFromRange(value, 6112, 6121, true, defaultSuffix);
+ case 15:
+ return createCounterStyleFromSymbols(value, "\u5B50\u4E11\u5BC5\u536F\u8FB0\u5DF3\u5348\u672A\u7533\u9149\u620C\u4EA5", cjkSuffix);
+ case 16:
+ return createCounterStyleFromSymbols(value, "\u7532\u4E59\u4E19\u4E01\u620A\u5DF1\u5E9A\u8F9B\u58EC\u7678", cjkSuffix);
+ case 17:
+ case 48:
+ return createCJKCounter(value, "\u96F6\u4E00\u4E8C\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D", CHINESE_INFORMAL_MULTIPLIERS, "\u8CA0", cjkSuffix, CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);
+ case 47:
+ return createCJKCounter(value, "\u96F6\u58F9\u8CB3\u53C3\u8086\u4F0D\u9678\u67D2\u634C\u7396", CHINESE_FORMAL_MULTIPLIERS, "\u8CA0", cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);
+ case 42:
+ return createCJKCounter(value, "\u96F6\u4E00\u4E8C\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D", CHINESE_INFORMAL_MULTIPLIERS, "\u8D1F", cjkSuffix, CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);
+ case 41:
+ return createCJKCounter(value, "\u96F6\u58F9\u8D30\u53C1\u8086\u4F0D\u9646\u67D2\u634C\u7396", CHINESE_FORMAL_MULTIPLIERS, "\u8D1F", cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);
+ case 26:
+ return createCJKCounter(value, "\u3007\u4E00\u4E8C\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D", "\u5341\u767E\u5343\u4E07", JAPANESE_NEGATIVE, cjkSuffix, 0);
+ case 25:
+ return createCJKCounter(value, "\u96F6\u58F1\u5F10\u53C2\u56DB\u4F0D\u516D\u4E03\u516B\u4E5D", "\u62FE\u767E\u5343\u4E07", JAPANESE_NEGATIVE, cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);
+ case 31:
+ return createCJKCounter(value, "\uC601\uC77C\uC774\uC0BC\uC0AC\uC624\uC721\uCE60\uD314\uAD6C", "\uC2ED\uBC31\uCC9C\uB9CC", KOREAN_NEGATIVE, koreanSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);
+ case 33:
+ return createCJKCounter(value, "\u96F6\u4E00\u4E8C\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D", "\u5341\u767E\u5343\u842C", KOREAN_NEGATIVE, koreanSuffix, 0);
+ case 32:
+ return createCJKCounter(value, "\u96F6\u58F9\u8CB3\u53C3\u56DB\u4E94\u516D\u4E03\u516B\u4E5D", "\u62FE\u767E\u5343", KOREAN_NEGATIVE, koreanSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);
+ case 18:
+ return createCounterStyleFromRange(value, 2406, 2415, true, defaultSuffix);
+ case 20:
+ return createAdditiveCounter(value, 1, 19999, GEORGIAN, 3, defaultSuffix);
+ case 21:
+ return createCounterStyleFromRange(value, 2790, 2799, true, defaultSuffix);
+ case 22:
+ return createCounterStyleFromRange(value, 2662, 2671, true, defaultSuffix);
+ case 22:
+ return createAdditiveCounter(value, 1, 10999, HEBREW, 3, defaultSuffix);
+ case 23:
+ return createCounterStyleFromSymbols(value, "\u3042\u3044\u3046\u3048\u304A\u304B\u304D\u304F\u3051\u3053\u3055\u3057\u3059\u305B\u305D\u305F\u3061\u3064\u3066\u3068\u306A\u306B\u306C\u306D\u306E\u306F\u3072\u3075\u3078\u307B\u307E\u307F\u3080\u3081\u3082\u3084\u3086\u3088\u3089\u308A\u308B\u308C\u308D\u308F\u3090\u3091\u3092\u3093");
+ case 24:
+ return createCounterStyleFromSymbols(value, "\u3044\u308D\u306F\u306B\u307B\u3078\u3068\u3061\u308A\u306C\u308B\u3092\u308F\u304B\u3088\u305F\u308C\u305D\u3064\u306D\u306A\u3089\u3080\u3046\u3090\u306E\u304A\u304F\u3084\u307E\u3051\u3075\u3053\u3048\u3066\u3042\u3055\u304D\u3086\u3081\u307F\u3057\u3091\u3072\u3082\u305B\u3059");
+ case 27:
+ return createCounterStyleFromRange(value, 3302, 3311, true, defaultSuffix);
+ case 28:
+ return createCounterStyleFromSymbols(value, "\u30A2\u30A4\u30A6\u30A8\u30AA\u30AB\u30AD\u30AF\u30B1\u30B3\u30B5\u30B7\u30B9\u30BB\u30BD\u30BF\u30C1\u30C4\u30C6\u30C8\u30CA\u30CB\u30CC\u30CD\u30CE\u30CF\u30D2\u30D5\u30D8\u30DB\u30DE\u30DF\u30E0\u30E1\u30E2\u30E4\u30E6\u30E8\u30E9\u30EA\u30EB\u30EC\u30ED\u30EF\u30F0\u30F1\u30F2\u30F3", cjkSuffix);
+ case 29:
+ return createCounterStyleFromSymbols(value, "\u30A4\u30ED\u30CF\u30CB\u30DB\u30D8\u30C8\u30C1\u30EA\u30CC\u30EB\u30F2\u30EF\u30AB\u30E8\u30BF\u30EC\u30BD\u30C4\u30CD\u30CA\u30E9\u30E0\u30A6\u30F0\u30CE\u30AA\u30AF\u30E4\u30DE\u30B1\u30D5\u30B3\u30A8\u30C6\u30A2\u30B5\u30AD\u30E6\u30E1\u30DF\u30B7\u30F1\u30D2\u30E2\u30BB\u30B9", cjkSuffix);
+ case 34:
+ return createCounterStyleFromRange(value, 3792, 3801, true, defaultSuffix);
+ case 37:
+ return createCounterStyleFromRange(value, 6160, 6169, true, defaultSuffix);
+ case 38:
+ return createCounterStyleFromRange(value, 4160, 4169, true, defaultSuffix);
+ case 39:
+ return createCounterStyleFromRange(value, 2918, 2927, true, defaultSuffix);
+ case 40:
+ return createCounterStyleFromRange(value, 1776, 1785, true, defaultSuffix);
+ case 43:
+ return createCounterStyleFromRange(value, 3046, 3055, true, defaultSuffix);
+ case 44:
+ return createCounterStyleFromRange(value, 3174, 3183, true, defaultSuffix);
+ case 45:
+ return createCounterStyleFromRange(value, 3664, 3673, true, defaultSuffix);
+ case 46:
+ return createCounterStyleFromRange(value, 3872, 3881, true, defaultSuffix);
+ case 3:
+ default:
+ return createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);
+ }
+ };
+ var IGNORE_ATTRIBUTE = "data-html2canvas-ignore";
+ var DocumentCloner = (
+ /** @class */
+ function() {
+ function DocumentCloner2(context, element, options) {
+ this.context = context;
+ this.options = options;
+ this.scrolledElements = [];
+ this.referenceElement = element;
+ this.counters = new CounterState();
+ this.quoteDepth = 0;
+ if (!element.ownerDocument) {
+ throw new Error("Cloned element does not have an owner document");
+ }
+ this.documentElement = this.cloneNode(element.ownerDocument.documentElement, false);
+ }
+ DocumentCloner2.prototype.toIFrame = function(ownerDocument, windowSize) {
+ var _this = this;
+ var iframe = createIFrameContainer(ownerDocument, windowSize);
+ if (!iframe.contentWindow) {
+ return Promise.reject("Unable to find iframe window");
+ }
+ var scrollX = ownerDocument.defaultView.pageXOffset;
+ var scrollY = ownerDocument.defaultView.pageYOffset;
+ var cloneWindow = iframe.contentWindow;
+ var documentClone = cloneWindow.document;
+ var iframeLoad = iframeLoader(iframe).then(function() {
+ return __awaiter(_this, void 0, void 0, function() {
+ var onclone, referenceElement;
+ return __generator(this, function(_a) {
+ switch (_a.label) {
+ case 0:
+ this.scrolledElements.forEach(restoreNodeScroll);
+ if (cloneWindow) {
+ cloneWindow.scrollTo(windowSize.left, windowSize.top);
+ if (/(iPad|iPhone|iPod)/g.test(navigator.userAgent) && (cloneWindow.scrollY !== windowSize.top || cloneWindow.scrollX !== windowSize.left)) {
+ this.context.logger.warn("Unable to restore scroll position for cloned document");
+ this.context.windowBounds = this.context.windowBounds.add(cloneWindow.scrollX - windowSize.left, cloneWindow.scrollY - windowSize.top, 0, 0);
+ }
+ }
+ onclone = this.options.onclone;
+ referenceElement = this.clonedReferenceElement;
+ if (typeof referenceElement === "undefined") {
+ return [2, Promise.reject("Error finding the " + this.referenceElement.nodeName + " in the cloned document")];
+ }
+ if (!(documentClone.fonts && documentClone.fonts.ready))
+ return [3, 2];
+ return [4, documentClone.fonts.ready];
+ case 1:
+ _a.sent();
+ _a.label = 2;
+ case 2:
+ if (!/(AppleWebKit)/g.test(navigator.userAgent))
+ return [3, 4];
+ return [4, imagesReady(documentClone)];
+ case 3:
+ _a.sent();
+ _a.label = 4;
+ case 4:
+ if (typeof onclone === "function") {
+ return [2, Promise.resolve().then(function() {
+ return onclone(documentClone, referenceElement);
+ }).then(function() {
+ return iframe;
+ })];
+ }
+ return [2, iframe];
+ }
+ });
+ });
+ });
+ documentClone.open();
+ documentClone.write(serializeDoctype(document.doctype) + "<html></html>");
+ restoreOwnerScroll(this.referenceElement.ownerDocument, scrollX, scrollY);
+ documentClone.replaceChild(documentClone.adoptNode(this.documentElement), documentClone.documentElement);
+ documentClone.close();
+ return iframeLoad;
+ };
+ DocumentCloner2.prototype.createElementClone = function(node) {
+ if (isDebugging(
+ node,
+ 2
+ /* CLONE */
+ )) {
+ debugger;
+ }
+ if (isCanvasElement(node)) {
+ return this.createCanvasClone(node);
+ }
+ if (isVideoElement(node)) {
+ return this.createVideoClone(node);
+ }
+ if (isStyleElement(node)) {
+ return this.createStyleClone(node);
+ }
+ var clone2 = node.cloneNode(false);
+ if (isImageElement(clone2)) {
+ if (isImageElement(node) && node.currentSrc && node.currentSrc !== node.src) {
+ clone2.src = node.currentSrc;
+ clone2.srcset = "";
+ }
+ if (clone2.loading === "lazy") {
+ clone2.loading = "eager";
+ }
+ }
+ if (isCustomElement(clone2)) {
+ return this.createCustomElementClone(clone2);
+ }
+ return clone2;
+ };
+ DocumentCloner2.prototype.createCustomElementClone = function(node) {
+ var clone2 = document.createElement("html2canvascustomelement");
+ copyCSSStyles(node.style, clone2);
+ return clone2;
+ };
+ DocumentCloner2.prototype.createStyleClone = function(node) {
+ try {
+ var sheet = node.sheet;
+ if (sheet && sheet.cssRules) {
+ var css = [].slice.call(sheet.cssRules, 0).reduce(function(css2, rule) {
+ if (rule && typeof rule.cssText === "string") {
+ return css2 + rule.cssText;
+ }
+ return css2;
+ }, "");
+ var style = node.cloneNode(false);
+ style.textContent = css;
+ return style;
+ }
+ } catch (e4) {
+ this.context.logger.error("Unable to access cssRules property", e4);
+ if (e4.name !== "SecurityError") {
+ throw e4;
+ }
+ }
+ return node.cloneNode(false);
+ };
+ DocumentCloner2.prototype.createCanvasClone = function(canvas) {
+ var _a;
+ if (this.options.inlineImages && canvas.ownerDocument) {
+ var img = canvas.ownerDocument.createElement("img");
+ try {
+ img.src = canvas.toDataURL();
+ return img;
+ } catch (e4) {
+ this.context.logger.info("Unable to inline canvas contents, canvas is tainted", canvas);
+ }
+ }
+ var clonedCanvas = canvas.cloneNode(false);
+ try {
+ clonedCanvas.width = canvas.width;
+ clonedCanvas.height = canvas.height;
+ var ctx = canvas.getContext("2d");
+ var clonedCtx = clonedCanvas.getContext("2d");
+ if (clonedCtx) {
+ if (!this.options.allowTaint && ctx) {
+ clonedCtx.putImageData(ctx.getImageData(0, 0, canvas.width, canvas.height), 0, 0);
+ } else {
+ var gl = (_a = canvas.getContext("webgl2")) !== null && _a !== void 0 ? _a : canvas.getContext("webgl");
+ if (gl) {
+ var attribs = gl.getContextAttributes();
+ if ((attribs === null || attribs === void 0 ? void 0 : attribs.preserveDrawingBuffer) === false) {
+ this.context.logger.warn("Unable to clone WebGL context as it has preserveDrawingBuffer=false", canvas);
+ }
+ }
+ clonedCtx.drawImage(canvas, 0, 0);
+ }
+ }
+ return clonedCanvas;
+ } catch (e4) {
+ this.context.logger.info("Unable to clone canvas as it is tainted", canvas);
+ }
+ return clonedCanvas;
+ };
+ DocumentCloner2.prototype.createVideoClone = function(video) {
+ var canvas = video.ownerDocument.createElement("canvas");
+ canvas.width = video.offsetWidth;
+ canvas.height = video.offsetHeight;
+ var ctx = canvas.getContext("2d");
+ try {
+ if (ctx) {
+ ctx.drawImage(video, 0, 0, canvas.width, canvas.height);
+ if (!this.options.allowTaint) {
+ ctx.getImageData(0, 0, canvas.width, canvas.height);
+ }
+ }
+ return canvas;
+ } catch (e4) {
+ this.context.logger.info("Unable to clone video as it is tainted", video);
+ }
+ var blankCanvas = video.ownerDocument.createElement("canvas");
+ blankCanvas.width = video.offsetWidth;
+ blankCanvas.height = video.offsetHeight;
+ return blankCanvas;
+ };
+ DocumentCloner2.prototype.appendChildNode = function(clone2, child, copyStyles) {
+ if (!isElementNode(child) || !isScriptElement(child) && !child.hasAttribute(IGNORE_ATTRIBUTE) && (typeof this.options.ignoreElements !== "function" || !this.options.ignoreElements(child))) {
+ if (!this.options.copyStyles || !isElementNode(child) || !isStyleElement(child)) {
+ clone2.appendChild(this.cloneNode(child, copyStyles));
+ }
+ }
+ };
+ DocumentCloner2.prototype.cloneChildNodes = function(node, clone2, copyStyles) {
+ var _this = this;
+ for (var child = node.shadowRoot ? node.shadowRoot.firstChild : node.firstChild; child; child = child.nextSibling) {
+ if (isElementNode(child) && isSlotElement(child) && typeof child.assignedNodes === "function") {
+ var assignedNodes = child.assignedNodes();
+ if (assignedNodes.length) {
+ assignedNodes.forEach(function(assignedNode) {
+ return _this.appendChildNode(clone2, assignedNode, copyStyles);
+ });
+ }
+ } else {
+ this.appendChildNode(clone2, child, copyStyles);
+ }
+ }
+ };
+ DocumentCloner2.prototype.cloneNode = function(node, copyStyles) {
+ if (isTextNode(node)) {
+ return document.createTextNode(node.data);
+ }
+ if (!node.ownerDocument) {
+ return node.cloneNode(false);
+ }
+ var window2 = node.ownerDocument.defaultView;
+ if (window2 && isElementNode(node) && (isHTMLElementNode(node) || isSVGElementNode(node))) {
+ var clone2 = this.createElementClone(node);
+ clone2.style.transitionProperty = "none";
+ var style = window2.getComputedStyle(node);
+ var styleBefore = window2.getComputedStyle(node, ":before");
+ var styleAfter = window2.getComputedStyle(node, ":after");
+ if (this.referenceElement === node && isHTMLElementNode(clone2)) {
+ this.clonedReferenceElement = clone2;
+ }
+ if (isBodyElement(clone2)) {
+ createPseudoHideStyles(clone2);
+ }
+ var counters = this.counters.parse(new CSSParsedCounterDeclaration(this.context, style));
+ var before = this.resolvePseudoContent(node, clone2, styleBefore, PseudoElementType.BEFORE);
+ if (isCustomElement(node)) {
+ copyStyles = true;
+ }
+ if (!isVideoElement(node)) {
+ this.cloneChildNodes(node, clone2, copyStyles);
+ }
+ if (before) {
+ clone2.insertBefore(before, clone2.firstChild);
+ }
+ var after = this.resolvePseudoContent(node, clone2, styleAfter, PseudoElementType.AFTER);
+ if (after) {
+ clone2.appendChild(after);
+ }
+ this.counters.pop(counters);
+ if (style && (this.options.copyStyles || isSVGElementNode(node)) && !isIFrameElement(node) || copyStyles) {
+ copyCSSStyles(style, clone2);
+ }
+ if (node.scrollTop !== 0 || node.scrollLeft !== 0) {
+ this.scrolledElements.push([clone2, node.scrollLeft, node.scrollTop]);
+ }
+ if ((isTextareaElement(node) || isSelectElement(node)) && (isTextareaElement(clone2) || isSelectElement(clone2))) {
+ clone2.value = node.value;
+ }
+ return clone2;
+ }
+ return node.cloneNode(false);
+ };
+ DocumentCloner2.prototype.resolvePseudoContent = function(node, clone2, style, pseudoElt) {
+ var _this = this;
+ if (!style) {
+ return;
+ }
+ var value = style.content;
+ var document2 = clone2.ownerDocument;
+ if (!document2 || !value || value === "none" || value === "-moz-alt-content" || style.display === "none") {
+ return;
+ }
+ this.counters.parse(new CSSParsedCounterDeclaration(this.context, style));
+ var declaration = new CSSParsedPseudoDeclaration(this.context, style);
+ var anonymousReplacedElement = document2.createElement("html2canvaspseudoelement");
+ copyCSSStyles(style, anonymousReplacedElement);
+ declaration.content.forEach(function(token) {
+ if (token.type === 0) {
+ anonymousReplacedElement.appendChild(document2.createTextNode(token.value));
+ } else if (token.type === 22) {
+ var img = document2.createElement("img");
+ img.src = token.value;
+ img.style.opacity = "1";
+ anonymousReplacedElement.appendChild(img);
+ } else if (token.type === 18) {
+ if (token.name === "attr") {
+ var attr = token.values.filter(isIdentToken);
+ if (attr.length) {
+ anonymousReplacedElement.appendChild(document2.createTextNode(node.getAttribute(attr[0].value) || ""));
+ }
+ } else if (token.name === "counter") {
+ var _a = token.values.filter(nonFunctionArgSeparator), counter = _a[0], counterStyle = _a[1];
+ if (counter && isIdentToken(counter)) {
+ var counterState = _this.counters.getCounterValue(counter.value);
+ var counterType = counterStyle && isIdentToken(counterStyle) ? listStyleType.parse(_this.context, counterStyle.value) : 3;
+ anonymousReplacedElement.appendChild(document2.createTextNode(createCounterText(counterState, counterType, false)));
+ }
+ } else if (token.name === "counters") {
+ var _b = token.values.filter(nonFunctionArgSeparator), counter = _b[0], delim = _b[1], counterStyle = _b[2];
+ if (counter && isIdentToken(counter)) {
+ var counterStates = _this.counters.getCounterValues(counter.value);
+ var counterType_1 = counterStyle && isIdentToken(counterStyle) ? listStyleType.parse(_this.context, counterStyle.value) : 3;
+ var separator = delim && delim.type === 0 ? delim.value : "";
+ var text = counterStates.map(function(value2) {
+ return createCounterText(value2, counterType_1, false);
+ }).join(separator);
+ anonymousReplacedElement.appendChild(document2.createTextNode(text));
+ }
+ } else
+ ;
+ } else if (token.type === 20) {
+ switch (token.value) {
+ case "open-quote":
+ anonymousReplacedElement.appendChild(document2.createTextNode(getQuote(declaration.quotes, _this.quoteDepth++, true)));
+ break;
+ case "close-quote":
+ anonymousReplacedElement.appendChild(document2.createTextNode(getQuote(declaration.quotes, --_this.quoteDepth, false)));
+ break;
+ default:
+ anonymousReplacedElement.appendChild(document2.createTextNode(token.value));
+ }
+ }
+ });
+ anonymousReplacedElement.className = PSEUDO_HIDE_ELEMENT_CLASS_BEFORE + " " + PSEUDO_HIDE_ELEMENT_CLASS_AFTER;
+ var newClassName = pseudoElt === PseudoElementType.BEFORE ? " " + PSEUDO_HIDE_ELEMENT_CLASS_BEFORE : " " + PSEUDO_HIDE_ELEMENT_CLASS_AFTER;
+ if (isSVGElementNode(clone2)) {
+ clone2.className.baseValue += newClassName;
+ } else {
+ clone2.className += newClassName;
+ }
+ return anonymousReplacedElement;
+ };
+ DocumentCloner2.destroy = function(container) {
+ if (container.parentNode) {
+ container.parentNode.removeChild(container);
+ return true;
+ }
+ return false;
+ };
+ return DocumentCloner2;
+ }()
+ );
+ var PseudoElementType;
+ (function(PseudoElementType2) {
+ PseudoElementType2[PseudoElementType2["BEFORE"] = 0] = "BEFORE";
+ PseudoElementType2[PseudoElementType2["AFTER"] = 1] = "AFTER";
+ })(PseudoElementType || (PseudoElementType = {}));
+ var createIFrameContainer = function(ownerDocument, bounds) {
+ var cloneIframeContainer = ownerDocument.createElement("iframe");
+ cloneIframeContainer.className = "html2canvas-container";
+ cloneIframeContainer.style.visibility = "hidden";
+ cloneIframeContainer.style.position = "fixed";
+ cloneIframeContainer.style.left = "-10000px";
+ cloneIframeContainer.style.top = "0px";
+ cloneIframeContainer.style.border = "0";
+ cloneIframeContainer.width = bounds.width.toString();
+ cloneIframeContainer.height = bounds.height.toString();
+ cloneIframeContainer.scrolling = "no";
+ cloneIframeContainer.setAttribute(IGNORE_ATTRIBUTE, "true");
+ ownerDocument.body.appendChild(cloneIframeContainer);
+ return cloneIframeContainer;
+ };
+ var imageReady = function(img) {
+ return new Promise(function(resolve) {
+ if (img.complete) {
+ resolve();
+ return;
+ }
+ if (!img.src) {
+ resolve();
+ return;
+ }
+ img.onload = resolve;
+ img.onerror = resolve;
+ });
+ };
+ var imagesReady = function(document2) {
+ return Promise.all([].slice.call(document2.images, 0).map(imageReady));
+ };
+ var iframeLoader = function(iframe) {
+ return new Promise(function(resolve, reject) {
+ var cloneWindow = iframe.contentWindow;
+ if (!cloneWindow) {
+ return reject("No window assigned for iframe");
+ }
+ var documentClone = cloneWindow.document;
+ cloneWindow.onload = iframe.onload = function() {
+ cloneWindow.onload = iframe.onload = null;
+ var interval = setInterval(function() {
+ if (documentClone.body.childNodes.length > 0 && documentClone.readyState === "complete") {
+ clearInterval(interval);
+ resolve(iframe);
+ }
+ }, 50);
+ };
+ });
+ };
+ var ignoredStyleProperties = [
+ "all",
+ "d",
+ "content"
+ // Safari shows pseudoelements if content is set
+ ];
+ var copyCSSStyles = function(style, target) {
+ for (var i4 = style.length - 1; i4 >= 0; i4--) {
+ var property = style.item(i4);
+ if (ignoredStyleProperties.indexOf(property) === -1) {
+ target.style.setProperty(property, style.getPropertyValue(property));
+ }
+ }
+ return target;
+ };
+ var serializeDoctype = function(doctype) {
+ var str = "";
+ if (doctype) {
+ str += "<!DOCTYPE ";
+ if (doctype.name) {
+ str += doctype.name;
+ }
+ if (doctype.internalSubset) {
+ str += doctype.internalSubset;
+ }
+ if (doctype.publicId) {
+ str += '"' + doctype.publicId + '"';
+ }
+ if (doctype.systemId) {
+ str += '"' + doctype.systemId + '"';
+ }
+ str += ">";
+ }
+ return str;
+ };
+ var restoreOwnerScroll = function(ownerDocument, x3, y3) {
+ if (ownerDocument && ownerDocument.defaultView && (x3 !== ownerDocument.defaultView.pageXOffset || y3 !== ownerDocument.defaultView.pageYOffset)) {
+ ownerDocument.defaultView.scrollTo(x3, y3);
+ }
+ };
+ var restoreNodeScroll = function(_a) {
+ var element = _a[0], x3 = _a[1], y3 = _a[2];
+ element.scrollLeft = x3;
+ element.scrollTop = y3;
+ };
+ var PSEUDO_BEFORE = ":before";
+ var PSEUDO_AFTER = ":after";
+ var PSEUDO_HIDE_ELEMENT_CLASS_BEFORE = "___html2canvas___pseudoelement_before";
+ var PSEUDO_HIDE_ELEMENT_CLASS_AFTER = "___html2canvas___pseudoelement_after";
+ var PSEUDO_HIDE_ELEMENT_STYLE = '{\n content: "" !important;\n display: none !important;\n}';
+ var createPseudoHideStyles = function(body) {
+ createStyles(body, "." + PSEUDO_HIDE_ELEMENT_CLASS_BEFORE + PSEUDO_BEFORE + PSEUDO_HIDE_ELEMENT_STYLE + "\n ." + PSEUDO_HIDE_ELEMENT_CLASS_AFTER + PSEUDO_AFTER + PSEUDO_HIDE_ELEMENT_STYLE);
+ };
+ var createStyles = function(body, styles) {
+ var document2 = body.ownerDocument;
+ if (document2) {
+ var style = document2.createElement("style");
+ style.textContent = styles;
+ body.appendChild(style);
+ }
+ };
+ var CacheStorage = (
+ /** @class */
+ function() {
+ function CacheStorage2() {
+ }
+ CacheStorage2.getOrigin = function(url) {
+ var link = CacheStorage2._link;
+ if (!link) {
+ return "about:blank";
+ }
+ link.href = url;
+ link.href = link.href;
+ return link.protocol + link.hostname + link.port;
+ };
+ CacheStorage2.isSameOrigin = function(src) {
+ return CacheStorage2.getOrigin(src) === CacheStorage2._origin;
+ };
+ CacheStorage2.setContext = function(window2) {
+ CacheStorage2._link = window2.document.createElement("a");
+ CacheStorage2._origin = CacheStorage2.getOrigin(window2.location.href);
+ };
+ CacheStorage2._origin = "about:blank";
+ return CacheStorage2;
+ }()
+ );
+ var Cache2 = (
+ /** @class */
+ function() {
+ function Cache3(context, _options) {
+ this.context = context;
+ this._options = _options;
+ this._cache = {};
+ }
+ Cache3.prototype.addImage = function(src) {
+ var result = Promise.resolve();
+ if (this.has(src)) {
+ return result;
+ }
+ if (isBlobImage(src) || isRenderable(src)) {
+ (this._cache[src] = this.loadImage(src)).catch(function() {
+ });
+ return result;
+ }
+ return result;
+ };
+ Cache3.prototype.match = function(src) {
+ return this._cache[src];
+ };
+ Cache3.prototype.loadImage = function(key) {
+ return __awaiter(this, void 0, void 0, function() {
+ var isSameOrigin, useCORS, useProxy, src;
+ var _this = this;
+ return __generator(this, function(_a) {
+ switch (_a.label) {
+ case 0:
+ isSameOrigin = CacheStorage.isSameOrigin(key);
+ useCORS = !isInlineImage(key) && this._options.useCORS === true && FEATURES.SUPPORT_CORS_IMAGES && !isSameOrigin;
+ useProxy = !isInlineImage(key) && !isSameOrigin && !isBlobImage(key) && typeof this._options.proxy === "string" && FEATURES.SUPPORT_CORS_XHR && !useCORS;
+ if (!isSameOrigin && this._options.allowTaint === false && !isInlineImage(key) && !isBlobImage(key) && !useProxy && !useCORS) {
+ return [
+ 2
+ /*return*/
+ ];
+ }
+ src = key;
+ if (!useProxy)
+ return [3, 2];
+ return [4, this.proxy(src)];
+ case 1:
+ src = _a.sent();
+ _a.label = 2;
+ case 2:
+ this.context.logger.debug("Added image " + key.substring(0, 256));
+ return [4, new Promise(function(resolve, reject) {
+ var img = new Image();
+ img.onload = function() {
+ return resolve(img);
+ };
+ img.onerror = reject;
+ if (isInlineBase64Image(src) || useCORS) {
+ img.crossOrigin = "anonymous";
+ }
+ img.src = src;
+ if (img.complete === true) {
+ setTimeout(function() {
+ return resolve(img);
+ }, 500);
+ }
+ if (_this._options.imageTimeout > 0) {
+ setTimeout(function() {
+ return reject("Timed out (" + _this._options.imageTimeout + "ms) loading image");
+ }, _this._options.imageTimeout);
+ }
+ })];
+ case 3:
+ return [2, _a.sent()];
+ }
+ });
+ });
+ };
+ Cache3.prototype.has = function(key) {
+ return typeof this._cache[key] !== "undefined";
+ };
+ Cache3.prototype.keys = function() {
+ return Promise.resolve(Object.keys(this._cache));
+ };
+ Cache3.prototype.proxy = function(src) {
+ var _this = this;
+ var proxy = this._options.proxy;
+ if (!proxy) {
+ throw new Error("No proxy defined");
+ }
+ var key = src.substring(0, 256);
+ return new Promise(function(resolve, reject) {
+ var responseType = FEATURES.SUPPORT_RESPONSE_TYPE ? "blob" : "text";
+ var xhr = new XMLHttpRequest();
+ xhr.onload = function() {
+ if (xhr.status === 200) {
+ if (responseType === "text") {
+ resolve(xhr.response);
+ } else {
+ var reader_1 = new FileReader();
+ reader_1.addEventListener("load", function() {
+ return resolve(reader_1.result);
+ }, false);
+ reader_1.addEventListener("error", function(e4) {
+ return reject(e4);
+ }, false);
+ reader_1.readAsDataURL(xhr.response);
+ }
+ } else {
+ reject("Failed to proxy resource " + key + " with status code " + xhr.status);
+ }
+ };
+ xhr.onerror = reject;
+ var queryString = proxy.indexOf("?") > -1 ? "&" : "?";
+ xhr.open("GET", "" + proxy + queryString + "url=" + encodeURIComponent(src) + "&responseType=" + responseType);
+ if (responseType !== "text" && xhr instanceof XMLHttpRequest) {
+ xhr.responseType = responseType;
+ }
+ if (_this._options.imageTimeout) {
+ var timeout_1 = _this._options.imageTimeout;
+ xhr.timeout = timeout_1;
+ xhr.ontimeout = function() {
+ return reject("Timed out (" + timeout_1 + "ms) proxying " + key);
+ };
+ }
+ xhr.send();
+ });
+ };
+ return Cache3;
+ }()
+ );
+ var INLINE_SVG = /^data:image\/svg\+xml/i;
+ var INLINE_BASE64 = /^data:image\/.*;base64,/i;
+ var INLINE_IMG = /^data:image\/.*/i;
+ var isRenderable = function(src) {
+ return FEATURES.SUPPORT_SVG_DRAWING || !isSVG(src);
+ };
+ var isInlineImage = function(src) {
+ return INLINE_IMG.test(src);
+ };
+ var isInlineBase64Image = function(src) {
+ return INLINE_BASE64.test(src);
+ };
+ var isBlobImage = function(src) {
+ return src.substr(0, 4) === "blob";
+ };
+ var isSVG = function(src) {
+ return src.substr(-3).toLowerCase() === "svg" || INLINE_SVG.test(src);
+ };
+ var Vector = (
+ /** @class */
+ function() {
+ function Vector2(x3, y3) {
+ this.type = 0;
+ this.x = x3;
+ this.y = y3;
+ }
+ Vector2.prototype.add = function(deltaX, deltaY) {
+ return new Vector2(this.x + deltaX, this.y + deltaY);
+ };
+ return Vector2;
+ }()
+ );
+ var lerp = function(a4, b3, t3) {
+ return new Vector(a4.x + (b3.x - a4.x) * t3, a4.y + (b3.y - a4.y) * t3);
+ };
+ var BezierCurve = (
+ /** @class */
+ function() {
+ function BezierCurve2(start5, startControl, endControl, end2) {
+ this.type = 1;
+ this.start = start5;
+ this.startControl = startControl;
+ this.endControl = endControl;
+ this.end = end2;
+ }
+ BezierCurve2.prototype.subdivide = function(t3, firstHalf) {
+ var ab = lerp(this.start, this.startControl, t3);
+ var bc = lerp(this.startControl, this.endControl, t3);
+ var cd = lerp(this.endControl, this.end, t3);
+ var abbc = lerp(ab, bc, t3);
+ var bccd = lerp(bc, cd, t3);
+ var dest = lerp(abbc, bccd, t3);
+ return firstHalf ? new BezierCurve2(this.start, ab, abbc, dest) : new BezierCurve2(dest, bccd, cd, this.end);
+ };
+ BezierCurve2.prototype.add = function(deltaX, deltaY) {
+ return new BezierCurve2(this.start.add(deltaX, deltaY), this.startControl.add(deltaX, deltaY), this.endControl.add(deltaX, deltaY), this.end.add(deltaX, deltaY));
+ };
+ BezierCurve2.prototype.reverse = function() {
+ return new BezierCurve2(this.end, this.endControl, this.startControl, this.start);
+ };
+ return BezierCurve2;
+ }()
+ );
+ var isBezierCurve = function(path) {
+ return path.type === 1;
+ };
+ var BoundCurves = (
+ /** @class */
+ function() {
+ function BoundCurves2(element) {
+ var styles = element.styles;
+ var bounds = element.bounds;
+ var _a = getAbsoluteValueForTuple(styles.borderTopLeftRadius, bounds.width, bounds.height), tlh = _a[0], tlv = _a[1];
+ var _b = getAbsoluteValueForTuple(styles.borderTopRightRadius, bounds.width, bounds.height), trh = _b[0], trv = _b[1];
+ var _c = getAbsoluteValueForTuple(styles.borderBottomRightRadius, bounds.width, bounds.height), brh = _c[0], brv = _c[1];
+ var _d = getAbsoluteValueForTuple(styles.borderBottomLeftRadius, bounds.width, bounds.height), blh = _d[0], blv = _d[1];
+ var factors = [];
+ factors.push((tlh + trh) / bounds.width);
+ factors.push((blh + brh) / bounds.width);
+ factors.push((tlv + blv) / bounds.height);
+ factors.push((trv + brv) / bounds.height);
+ var maxFactor = Math.max.apply(Math, factors);
+ if (maxFactor > 1) {
+ tlh /= maxFactor;
+ tlv /= maxFactor;
+ trh /= maxFactor;
+ trv /= maxFactor;
+ brh /= maxFactor;
+ brv /= maxFactor;
+ blh /= maxFactor;
+ blv /= maxFactor;
+ }
+ var topWidth = bounds.width - trh;
+ var rightHeight = bounds.height - brv;
+ var bottomWidth = bounds.width - brh;
+ var leftHeight = bounds.height - blv;
+ var borderTopWidth2 = styles.borderTopWidth;
+ var borderRightWidth2 = styles.borderRightWidth;
+ var borderBottomWidth2 = styles.borderBottomWidth;
+ var borderLeftWidth2 = styles.borderLeftWidth;
+ var paddingTop2 = getAbsoluteValue(styles.paddingTop, element.bounds.width);
+ var paddingRight2 = getAbsoluteValue(styles.paddingRight, element.bounds.width);
+ var paddingBottom2 = getAbsoluteValue(styles.paddingBottom, element.bounds.width);
+ var paddingLeft2 = getAbsoluteValue(styles.paddingLeft, element.bounds.width);
+ this.topLeftBorderDoubleOuterBox = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2 / 3, bounds.top + borderTopWidth2 / 3, tlh - borderLeftWidth2 / 3, tlv - borderTopWidth2 / 3, CORNER.TOP_LEFT) : new Vector(bounds.left + borderLeftWidth2 / 3, bounds.top + borderTopWidth2 / 3);
+ this.topRightBorderDoubleOuterBox = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + topWidth, bounds.top + borderTopWidth2 / 3, trh - borderRightWidth2 / 3, trv - borderTopWidth2 / 3, CORNER.TOP_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth2 / 3, bounds.top + borderTopWidth2 / 3);
+ this.bottomRightBorderDoubleOuterBox = brh > 0 || brv > 0 ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh - borderRightWidth2 / 3, brv - borderBottomWidth2 / 3, CORNER.BOTTOM_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth2 / 3, bounds.top + bounds.height - borderBottomWidth2 / 3);
+ this.bottomLeftBorderDoubleOuterBox = blh > 0 || blv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2 / 3, bounds.top + leftHeight, blh - borderLeftWidth2 / 3, blv - borderBottomWidth2 / 3, CORNER.BOTTOM_LEFT) : new Vector(bounds.left + borderLeftWidth2 / 3, bounds.top + bounds.height - borderBottomWidth2 / 3);
+ this.topLeftBorderDoubleInnerBox = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2 * 2 / 3, bounds.top + borderTopWidth2 * 2 / 3, tlh - borderLeftWidth2 * 2 / 3, tlv - borderTopWidth2 * 2 / 3, CORNER.TOP_LEFT) : new Vector(bounds.left + borderLeftWidth2 * 2 / 3, bounds.top + borderTopWidth2 * 2 / 3);
+ this.topRightBorderDoubleInnerBox = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + topWidth, bounds.top + borderTopWidth2 * 2 / 3, trh - borderRightWidth2 * 2 / 3, trv - borderTopWidth2 * 2 / 3, CORNER.TOP_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth2 * 2 / 3, bounds.top + borderTopWidth2 * 2 / 3);
+ this.bottomRightBorderDoubleInnerBox = brh > 0 || brv > 0 ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh - borderRightWidth2 * 2 / 3, brv - borderBottomWidth2 * 2 / 3, CORNER.BOTTOM_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth2 * 2 / 3, bounds.top + bounds.height - borderBottomWidth2 * 2 / 3);
+ this.bottomLeftBorderDoubleInnerBox = blh > 0 || blv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2 * 2 / 3, bounds.top + leftHeight, blh - borderLeftWidth2 * 2 / 3, blv - borderBottomWidth2 * 2 / 3, CORNER.BOTTOM_LEFT) : new Vector(bounds.left + borderLeftWidth2 * 2 / 3, bounds.top + bounds.height - borderBottomWidth2 * 2 / 3);
+ this.topLeftBorderStroke = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2 / 2, bounds.top + borderTopWidth2 / 2, tlh - borderLeftWidth2 / 2, tlv - borderTopWidth2 / 2, CORNER.TOP_LEFT) : new Vector(bounds.left + borderLeftWidth2 / 2, bounds.top + borderTopWidth2 / 2);
+ this.topRightBorderStroke = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + topWidth, bounds.top + borderTopWidth2 / 2, trh - borderRightWidth2 / 2, trv - borderTopWidth2 / 2, CORNER.TOP_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth2 / 2, bounds.top + borderTopWidth2 / 2);
+ this.bottomRightBorderStroke = brh > 0 || brv > 0 ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh - borderRightWidth2 / 2, brv - borderBottomWidth2 / 2, CORNER.BOTTOM_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth2 / 2, bounds.top + bounds.height - borderBottomWidth2 / 2);
+ this.bottomLeftBorderStroke = blh > 0 || blv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2 / 2, bounds.top + leftHeight, blh - borderLeftWidth2 / 2, blv - borderBottomWidth2 / 2, CORNER.BOTTOM_LEFT) : new Vector(bounds.left + borderLeftWidth2 / 2, bounds.top + bounds.height - borderBottomWidth2 / 2);
+ this.topLeftBorderBox = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left, bounds.top, tlh, tlv, CORNER.TOP_LEFT) : new Vector(bounds.left, bounds.top);
+ this.topRightBorderBox = trh > 0 || trv > 0 ? getCurvePoints(bounds.left + topWidth, bounds.top, trh, trv, CORNER.TOP_RIGHT) : new Vector(bounds.left + bounds.width, bounds.top);
+ this.bottomRightBorderBox = brh > 0 || brv > 0 ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh, brv, CORNER.BOTTOM_RIGHT) : new Vector(bounds.left + bounds.width, bounds.top + bounds.height);
+ this.bottomLeftBorderBox = blh > 0 || blv > 0 ? getCurvePoints(bounds.left, bounds.top + leftHeight, blh, blv, CORNER.BOTTOM_LEFT) : new Vector(bounds.left, bounds.top + bounds.height);
+ this.topLeftPaddingBox = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2, bounds.top + borderTopWidth2, Math.max(0, tlh - borderLeftWidth2), Math.max(0, tlv - borderTopWidth2), CORNER.TOP_LEFT) : new Vector(bounds.left + borderLeftWidth2, bounds.top + borderTopWidth2);
+ this.topRightPaddingBox = trh > 0 || trv > 0 ? getCurvePoints(bounds.left + Math.min(topWidth, bounds.width - borderRightWidth2), bounds.top + borderTopWidth2, topWidth > bounds.width + borderRightWidth2 ? 0 : Math.max(0, trh - borderRightWidth2), Math.max(0, trv - borderTopWidth2), CORNER.TOP_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth2, bounds.top + borderTopWidth2);
+ this.bottomRightPaddingBox = brh > 0 || brv > 0 ? getCurvePoints(bounds.left + Math.min(bottomWidth, bounds.width - borderLeftWidth2), bounds.top + Math.min(rightHeight, bounds.height - borderBottomWidth2), Math.max(0, brh - borderRightWidth2), Math.max(0, brv - borderBottomWidth2), CORNER.BOTTOM_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth2, bounds.top + bounds.height - borderBottomWidth2);
+ this.bottomLeftPaddingBox = blh > 0 || blv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2, bounds.top + Math.min(leftHeight, bounds.height - borderBottomWidth2), Math.max(0, blh - borderLeftWidth2), Math.max(0, blv - borderBottomWidth2), CORNER.BOTTOM_LEFT) : new Vector(bounds.left + borderLeftWidth2, bounds.top + bounds.height - borderBottomWidth2);
+ this.topLeftContentBox = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2 + paddingLeft2, bounds.top + borderTopWidth2 + paddingTop2, Math.max(0, tlh - (borderLeftWidth2 + paddingLeft2)), Math.max(0, tlv - (borderTopWidth2 + paddingTop2)), CORNER.TOP_LEFT) : new Vector(bounds.left + borderLeftWidth2 + paddingLeft2, bounds.top + borderTopWidth2 + paddingTop2);
+ this.topRightContentBox = trh > 0 || trv > 0 ? getCurvePoints(bounds.left + Math.min(topWidth, bounds.width + borderLeftWidth2 + paddingLeft2), bounds.top + borderTopWidth2 + paddingTop2, topWidth > bounds.width + borderLeftWidth2 + paddingLeft2 ? 0 : trh - borderLeftWidth2 + paddingLeft2, trv - (borderTopWidth2 + paddingTop2), CORNER.TOP_RIGHT) : new Vector(bounds.left + bounds.width - (borderRightWidth2 + paddingRight2), bounds.top + borderTopWidth2 + paddingTop2);
+ this.bottomRightContentBox = brh > 0 || brv > 0 ? getCurvePoints(bounds.left + Math.min(bottomWidth, bounds.width - (borderLeftWidth2 + paddingLeft2)), bounds.top + Math.min(rightHeight, bounds.height + borderTopWidth2 + paddingTop2), Math.max(0, brh - (borderRightWidth2 + paddingRight2)), brv - (borderBottomWidth2 + paddingBottom2), CORNER.BOTTOM_RIGHT) : new Vector(bounds.left + bounds.width - (borderRightWidth2 + paddingRight2), bounds.top + bounds.height - (borderBottomWidth2 + paddingBottom2));
+ this.bottomLeftContentBox = blh > 0 || blv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2 + paddingLeft2, bounds.top + leftHeight, Math.max(0, blh - (borderLeftWidth2 + paddingLeft2)), blv - (borderBottomWidth2 + paddingBottom2), CORNER.BOTTOM_LEFT) : new Vector(bounds.left + borderLeftWidth2 + paddingLeft2, bounds.top + bounds.height - (borderBottomWidth2 + paddingBottom2));
+ }
+ return BoundCurves2;
+ }()
+ );
+ var CORNER;
+ (function(CORNER2) {
+ CORNER2[CORNER2["TOP_LEFT"] = 0] = "TOP_LEFT";
+ CORNER2[CORNER2["TOP_RIGHT"] = 1] = "TOP_RIGHT";
+ CORNER2[CORNER2["BOTTOM_RIGHT"] = 2] = "BOTTOM_RIGHT";
+ CORNER2[CORNER2["BOTTOM_LEFT"] = 3] = "BOTTOM_LEFT";
+ })(CORNER || (CORNER = {}));
+ var getCurvePoints = function(x3, y3, r1, r22, position2) {
+ var kappa = 4 * ((Math.sqrt(2) - 1) / 3);
+ var ox = r1 * kappa;
+ var oy = r22 * kappa;
+ var xm = x3 + r1;
+ var ym = y3 + r22;
+ switch (position2) {
+ case CORNER.TOP_LEFT:
+ return new BezierCurve(new Vector(x3, ym), new Vector(x3, ym - oy), new Vector(xm - ox, y3), new Vector(xm, y3));
+ case CORNER.TOP_RIGHT:
+ return new BezierCurve(new Vector(x3, y3), new Vector(x3 + ox, y3), new Vector(xm, ym - oy), new Vector(xm, ym));
+ case CORNER.BOTTOM_RIGHT:
+ return new BezierCurve(new Vector(xm, y3), new Vector(xm, y3 + oy), new Vector(x3 + ox, ym), new Vector(x3, ym));
+ case CORNER.BOTTOM_LEFT:
+ default:
+ return new BezierCurve(new Vector(xm, ym), new Vector(xm - ox, ym), new Vector(x3, y3 + oy), new Vector(x3, y3));
+ }
+ };
+ var calculateBorderBoxPath = function(curves) {
+ return [curves.topLeftBorderBox, curves.topRightBorderBox, curves.bottomRightBorderBox, curves.bottomLeftBorderBox];
+ };
+ var calculateContentBoxPath = function(curves) {
+ return [
+ curves.topLeftContentBox,
+ curves.topRightContentBox,
+ curves.bottomRightContentBox,
+ curves.bottomLeftContentBox
+ ];
+ };
+ var calculatePaddingBoxPath = function(curves) {
+ return [
+ curves.topLeftPaddingBox,
+ curves.topRightPaddingBox,
+ curves.bottomRightPaddingBox,
+ curves.bottomLeftPaddingBox
+ ];
+ };
+ var TransformEffect = (
+ /** @class */
+ function() {
+ function TransformEffect2(offsetX, offsetY, matrix2) {
+ this.offsetX = offsetX;
+ this.offsetY = offsetY;
+ this.matrix = matrix2;
+ this.type = 0;
+ this.target = 2 | 4;
+ }
+ return TransformEffect2;
+ }()
+ );
+ var ClipEffect = (
+ /** @class */
+ function() {
+ function ClipEffect2(path, target) {
+ this.path = path;
+ this.target = target;
+ this.type = 1;
+ }
+ return ClipEffect2;
+ }()
+ );
+ var OpacityEffect = (
+ /** @class */
+ function() {
+ function OpacityEffect2(opacity2) {
+ this.opacity = opacity2;
+ this.type = 2;
+ this.target = 2 | 4;
+ }
+ return OpacityEffect2;
+ }()
+ );
+ var isTransformEffect = function(effect7) {
+ return effect7.type === 0;
+ };
+ var isClipEffect = function(effect7) {
+ return effect7.type === 1;
+ };
+ var isOpacityEffect = function(effect7) {
+ return effect7.type === 2;
+ };
+ var equalPath = function(a4, b3) {
+ if (a4.length === b3.length) {
+ return a4.some(function(v3, i4) {
+ return v3 === b3[i4];
+ });
+ }
+ return false;
+ };
+ var transformPath = function(path, deltaX, deltaY, deltaW, deltaH) {
+ return path.map(function(point, index) {
+ switch (index) {
+ case 0:
+ return point.add(deltaX, deltaY);
+ case 1:
+ return point.add(deltaX + deltaW, deltaY);
+ case 2:
+ return point.add(deltaX + deltaW, deltaY + deltaH);
+ case 3:
+ return point.add(deltaX, deltaY + deltaH);
+ }
+ return point;
+ });
+ };
+ var StackingContext = (
+ /** @class */
+ function() {
+ function StackingContext2(container) {
+ this.element = container;
+ this.inlineLevel = [];
+ this.nonInlineLevel = [];
+ this.negativeZIndex = [];
+ this.zeroOrAutoZIndexOrTransformedOrOpacity = [];
+ this.positiveZIndex = [];
+ this.nonPositionedFloats = [];
+ this.nonPositionedInlineLevel = [];
+ }
+ return StackingContext2;
+ }()
+ );
+ var ElementPaint = (
+ /** @class */
+ function() {
+ function ElementPaint2(container, parent) {
+ this.container = container;
+ this.parent = parent;
+ this.effects = [];
+ this.curves = new BoundCurves(this.container);
+ if (this.container.styles.opacity < 1) {
+ this.effects.push(new OpacityEffect(this.container.styles.opacity));
+ }
+ if (this.container.styles.transform !== null) {
+ var offsetX = this.container.bounds.left + this.container.styles.transformOrigin[0].number;
+ var offsetY = this.container.bounds.top + this.container.styles.transformOrigin[1].number;
+ var matrix2 = this.container.styles.transform;
+ this.effects.push(new TransformEffect(offsetX, offsetY, matrix2));
+ }
+ if (this.container.styles.overflowX !== 0) {
+ var borderBox = calculateBorderBoxPath(this.curves);
+ var paddingBox2 = calculatePaddingBoxPath(this.curves);
+ if (equalPath(borderBox, paddingBox2)) {
+ this.effects.push(new ClipEffect(
+ borderBox,
+ 2 | 4
+ /* CONTENT */
+ ));
+ } else {
+ this.effects.push(new ClipEffect(
+ borderBox,
+ 2
+ /* BACKGROUND_BORDERS */
+ ));
+ this.effects.push(new ClipEffect(
+ paddingBox2,
+ 4
+ /* CONTENT */
+ ));
+ }
+ }
+ }
+ ElementPaint2.prototype.getEffects = function(target) {
+ var inFlow = [
+ 2,
+ 3
+ /* FIXED */
+ ].indexOf(this.container.styles.position) === -1;
+ var parent = this.parent;
+ var effects = this.effects.slice(0);
+ while (parent) {
+ var croplessEffects = parent.effects.filter(function(effect7) {
+ return !isClipEffect(effect7);
+ });
+ if (inFlow || parent.container.styles.position !== 0 || !parent.parent) {
+ effects.unshift.apply(effects, croplessEffects);
+ inFlow = [
+ 2,
+ 3
+ /* FIXED */
+ ].indexOf(parent.container.styles.position) === -1;
+ if (parent.container.styles.overflowX !== 0) {
+ var borderBox = calculateBorderBoxPath(parent.curves);
+ var paddingBox2 = calculatePaddingBoxPath(parent.curves);
+ if (!equalPath(borderBox, paddingBox2)) {
+ effects.unshift(new ClipEffect(
+ paddingBox2,
+ 2 | 4
+ /* CONTENT */
+ ));
+ }
+ }
+ } else {
+ effects.unshift.apply(effects, croplessEffects);
+ }
+ parent = parent.parent;
+ }
+ return effects.filter(function(effect7) {
+ return contains2(effect7.target, target);
+ });
+ };
+ return ElementPaint2;
+ }()
+ );
+ var parseStackTree = function(parent, stackingContext, realStackingContext, listItems) {
+ parent.container.elements.forEach(function(child) {
+ var treatAsRealStackingContext = contains2(
+ child.flags,
+ 4
+ /* CREATES_REAL_STACKING_CONTEXT */
+ );
+ var createsStackingContext2 = contains2(
+ child.flags,
+ 2
+ /* CREATES_STACKING_CONTEXT */
+ );
+ var paintContainer = new ElementPaint(child, parent);
+ if (contains2(
+ child.styles.display,
+ 2048
+ /* LIST_ITEM */
+ )) {
+ listItems.push(paintContainer);
+ }
+ var listOwnerItems = contains2(
+ child.flags,
+ 8
+ /* IS_LIST_OWNER */
+ ) ? [] : listItems;
+ if (treatAsRealStackingContext || createsStackingContext2) {
+ var parentStack = treatAsRealStackingContext || child.styles.isPositioned() ? realStackingContext : stackingContext;
+ var stack = new StackingContext(paintContainer);
+ if (child.styles.isPositioned() || child.styles.opacity < 1 || child.styles.isTransformed()) {
+ var order_1 = child.styles.zIndex.order;
+ if (order_1 < 0) {
+ var index_1 = 0;
+ parentStack.negativeZIndex.some(function(current, i4) {
+ if (order_1 > current.element.container.styles.zIndex.order) {
+ index_1 = i4;
+ return false;
+ } else if (index_1 > 0) {
+ return true;
+ }
+ return false;
+ });
+ parentStack.negativeZIndex.splice(index_1, 0, stack);
+ } else if (order_1 > 0) {
+ var index_2 = 0;
+ parentStack.positiveZIndex.some(function(current, i4) {
+ if (order_1 >= current.element.container.styles.zIndex.order) {
+ index_2 = i4 + 1;
+ return false;
+ } else if (index_2 > 0) {
+ return true;
+ }
+ return false;
+ });
+ parentStack.positiveZIndex.splice(index_2, 0, stack);
+ } else {
+ parentStack.zeroOrAutoZIndexOrTransformedOrOpacity.push(stack);
+ }
+ } else {
+ if (child.styles.isFloating()) {
+ parentStack.nonPositionedFloats.push(stack);
+ } else {
+ parentStack.nonPositionedInlineLevel.push(stack);
+ }
+ }
+ parseStackTree(paintContainer, stack, treatAsRealStackingContext ? stack : realStackingContext, listOwnerItems);
+ } else {
+ if (child.styles.isInlineLevel()) {
+ stackingContext.inlineLevel.push(paintContainer);
+ } else {
+ stackingContext.nonInlineLevel.push(paintContainer);
+ }
+ parseStackTree(paintContainer, stackingContext, realStackingContext, listOwnerItems);
+ }
+ if (contains2(
+ child.flags,
+ 8
+ /* IS_LIST_OWNER */
+ )) {
+ processListItems(child, listOwnerItems);
+ }
+ });
+ };
+ var processListItems = function(owner, elements) {
+ var numbering = owner instanceof OLElementContainer ? owner.start : 1;
+ var reversed = owner instanceof OLElementContainer ? owner.reversed : false;
+ for (var i4 = 0; i4 < elements.length; i4++) {
+ var item = elements[i4];
+ if (item.container instanceof LIElementContainer && typeof item.container.value === "number" && item.container.value !== 0) {
+ numbering = item.container.value;
+ }
+ item.listValue = createCounterText(numbering, item.container.styles.listStyleType, true);
+ numbering += reversed ? -1 : 1;
+ }
+ };
+ var parseStackingContexts = function(container) {
+ var paintContainer = new ElementPaint(container, null);
+ var root = new StackingContext(paintContainer);
+ var listItems = [];
+ parseStackTree(paintContainer, root, root, listItems);
+ processListItems(paintContainer.container, listItems);
+ return root;
+ };
+ var parsePathForBorder = function(curves, borderSide) {
+ switch (borderSide) {
+ case 0:
+ return createPathFromCurves(curves.topLeftBorderBox, curves.topLeftPaddingBox, curves.topRightBorderBox, curves.topRightPaddingBox);
+ case 1:
+ return createPathFromCurves(curves.topRightBorderBox, curves.topRightPaddingBox, curves.bottomRightBorderBox, curves.bottomRightPaddingBox);
+ case 2:
+ return createPathFromCurves(curves.bottomRightBorderBox, curves.bottomRightPaddingBox, curves.bottomLeftBorderBox, curves.bottomLeftPaddingBox);
+ case 3:
+ default:
+ return createPathFromCurves(curves.bottomLeftBorderBox, curves.bottomLeftPaddingBox, curves.topLeftBorderBox, curves.topLeftPaddingBox);
+ }
+ };
+ var parsePathForBorderDoubleOuter = function(curves, borderSide) {
+ switch (borderSide) {
+ case 0:
+ return createPathFromCurves(curves.topLeftBorderBox, curves.topLeftBorderDoubleOuterBox, curves.topRightBorderBox, curves.topRightBorderDoubleOuterBox);
+ case 1:
+ return createPathFromCurves(curves.topRightBorderBox, curves.topRightBorderDoubleOuterBox, curves.bottomRightBorderBox, curves.bottomRightBorderDoubleOuterBox);
+ case 2:
+ return createPathFromCurves(curves.bottomRightBorderBox, curves.bottomRightBorderDoubleOuterBox, curves.bottomLeftBorderBox, curves.bottomLeftBorderDoubleOuterBox);
+ case 3:
+ default:
+ return createPathFromCurves(curves.bottomLeftBorderBox, curves.bottomLeftBorderDoubleOuterBox, curves.topLeftBorderBox, curves.topLeftBorderDoubleOuterBox);
+ }
+ };
+ var parsePathForBorderDoubleInner = function(curves, borderSide) {
+ switch (borderSide) {
+ case 0:
+ return createPathFromCurves(curves.topLeftBorderDoubleInnerBox, curves.topLeftPaddingBox, curves.topRightBorderDoubleInnerBox, curves.topRightPaddingBox);
+ case 1:
+ return createPathFromCurves(curves.topRightBorderDoubleInnerBox, curves.topRightPaddingBox, curves.bottomRightBorderDoubleInnerBox, curves.bottomRightPaddingBox);
+ case 2:
+ return createPathFromCurves(curves.bottomRightBorderDoubleInnerBox, curves.bottomRightPaddingBox, curves.bottomLeftBorderDoubleInnerBox, curves.bottomLeftPaddingBox);
+ case 3:
+ default:
+ return createPathFromCurves(curves.bottomLeftBorderDoubleInnerBox, curves.bottomLeftPaddingBox, curves.topLeftBorderDoubleInnerBox, curves.topLeftPaddingBox);
+ }
+ };
+ var parsePathForBorderStroke = function(curves, borderSide) {
+ switch (borderSide) {
+ case 0:
+ return createStrokePathFromCurves(curves.topLeftBorderStroke, curves.topRightBorderStroke);
+ case 1:
+ return createStrokePathFromCurves(curves.topRightBorderStroke, curves.bottomRightBorderStroke);
+ case 2:
+ return createStrokePathFromCurves(curves.bottomRightBorderStroke, curves.bottomLeftBorderStroke);
+ case 3:
+ default:
+ return createStrokePathFromCurves(curves.bottomLeftBorderStroke, curves.topLeftBorderStroke);
+ }
+ };
+ var createStrokePathFromCurves = function(outer1, outer2) {
+ var path = [];
+ if (isBezierCurve(outer1)) {
+ path.push(outer1.subdivide(0.5, false));
+ } else {
+ path.push(outer1);
+ }
+ if (isBezierCurve(outer2)) {
+ path.push(outer2.subdivide(0.5, true));
+ } else {
+ path.push(outer2);
+ }
+ return path;
+ };
+ var createPathFromCurves = function(outer1, inner1, outer2, inner2) {
+ var path = [];
+ if (isBezierCurve(outer1)) {
+ path.push(outer1.subdivide(0.5, false));
+ } else {
+ path.push(outer1);
+ }
+ if (isBezierCurve(outer2)) {
+ path.push(outer2.subdivide(0.5, true));
+ } else {
+ path.push(outer2);
+ }
+ if (isBezierCurve(inner2)) {
+ path.push(inner2.subdivide(0.5, true).reverse());
+ } else {
+ path.push(inner2);
+ }
+ if (isBezierCurve(inner1)) {
+ path.push(inner1.subdivide(0.5, false).reverse());
+ } else {
+ path.push(inner1);
+ }
+ return path;
+ };
+ var paddingBox = function(element) {
+ var bounds = element.bounds;
+ var styles = element.styles;
+ return bounds.add(styles.borderLeftWidth, styles.borderTopWidth, -(styles.borderRightWidth + styles.borderLeftWidth), -(styles.borderTopWidth + styles.borderBottomWidth));
+ };
+ var contentBox = function(element) {
+ var styles = element.styles;
+ var bounds = element.bounds;
+ var paddingLeft2 = getAbsoluteValue(styles.paddingLeft, bounds.width);
+ var paddingRight2 = getAbsoluteValue(styles.paddingRight, bounds.width);
+ var paddingTop2 = getAbsoluteValue(styles.paddingTop, bounds.width);
+ var paddingBottom2 = getAbsoluteValue(styles.paddingBottom, bounds.width);
+ return bounds.add(paddingLeft2 + styles.borderLeftWidth, paddingTop2 + styles.borderTopWidth, -(styles.borderRightWidth + styles.borderLeftWidth + paddingLeft2 + paddingRight2), -(styles.borderTopWidth + styles.borderBottomWidth + paddingTop2 + paddingBottom2));
+ };
+ var calculateBackgroundPositioningArea = function(backgroundOrigin2, element) {
+ if (backgroundOrigin2 === 0) {
+ return element.bounds;
+ }
+ if (backgroundOrigin2 === 2) {
+ return contentBox(element);
+ }
+ return paddingBox(element);
+ };
+ var calculateBackgroundPaintingArea = function(backgroundClip2, element) {
+ if (backgroundClip2 === 0) {
+ return element.bounds;
+ }
+ if (backgroundClip2 === 2) {
+ return contentBox(element);
+ }
+ return paddingBox(element);
+ };
+ var calculateBackgroundRendering = function(container, index, intrinsicSize) {
+ var backgroundPositioningArea = calculateBackgroundPositioningArea(getBackgroundValueForIndex(container.styles.backgroundOrigin, index), container);
+ var backgroundPaintingArea = calculateBackgroundPaintingArea(getBackgroundValueForIndex(container.styles.backgroundClip, index), container);
+ var backgroundImageSize = calculateBackgroundSize(getBackgroundValueForIndex(container.styles.backgroundSize, index), intrinsicSize, backgroundPositioningArea);
+ var sizeWidth = backgroundImageSize[0], sizeHeight = backgroundImageSize[1];
+ var position2 = getAbsoluteValueForTuple(getBackgroundValueForIndex(container.styles.backgroundPosition, index), backgroundPositioningArea.width - sizeWidth, backgroundPositioningArea.height - sizeHeight);
+ var path = calculateBackgroundRepeatPath(getBackgroundValueForIndex(container.styles.backgroundRepeat, index), position2, backgroundImageSize, backgroundPositioningArea, backgroundPaintingArea);
+ var offsetX = Math.round(backgroundPositioningArea.left + position2[0]);
+ var offsetY = Math.round(backgroundPositioningArea.top + position2[1]);
+ return [path, offsetX, offsetY, sizeWidth, sizeHeight];
+ };
+ var isAuto = function(token) {
+ return isIdentToken(token) && token.value === BACKGROUND_SIZE.AUTO;
+ };
+ var hasIntrinsicValue = function(value) {
+ return typeof value === "number";
+ };
+ var calculateBackgroundSize = function(size2, _a, bounds) {
+ var intrinsicWidth = _a[0], intrinsicHeight = _a[1], intrinsicProportion = _a[2];
+ var first = size2[0], second = size2[1];
+ if (!first) {
+ return [0, 0];
+ }
+ if (isLengthPercentage(first) && second && isLengthPercentage(second)) {
+ return [getAbsoluteValue(first, bounds.width), getAbsoluteValue(second, bounds.height)];
+ }
+ var hasIntrinsicProportion = hasIntrinsicValue(intrinsicProportion);
+ if (isIdentToken(first) && (first.value === BACKGROUND_SIZE.CONTAIN || first.value === BACKGROUND_SIZE.COVER)) {
+ if (hasIntrinsicValue(intrinsicProportion)) {
+ var targetRatio = bounds.width / bounds.height;
+ return targetRatio < intrinsicProportion !== (first.value === BACKGROUND_SIZE.COVER) ? [bounds.width, bounds.width / intrinsicProportion] : [bounds.height * intrinsicProportion, bounds.height];
+ }
+ return [bounds.width, bounds.height];
+ }
+ var hasIntrinsicWidth = hasIntrinsicValue(intrinsicWidth);
+ var hasIntrinsicHeight = hasIntrinsicValue(intrinsicHeight);
+ var hasIntrinsicDimensions = hasIntrinsicWidth || hasIntrinsicHeight;
+ if (isAuto(first) && (!second || isAuto(second))) {
+ if (hasIntrinsicWidth && hasIntrinsicHeight) {
+ return [intrinsicWidth, intrinsicHeight];
+ }
+ if (!hasIntrinsicProportion && !hasIntrinsicDimensions) {
+ return [bounds.width, bounds.height];
+ }
+ if (hasIntrinsicDimensions && hasIntrinsicProportion) {
+ var width_1 = hasIntrinsicWidth ? intrinsicWidth : intrinsicHeight * intrinsicProportion;
+ var height_1 = hasIntrinsicHeight ? intrinsicHeight : intrinsicWidth / intrinsicProportion;
+ return [width_1, height_1];
+ }
+ var width_2 = hasIntrinsicWidth ? intrinsicWidth : bounds.width;
+ var height_2 = hasIntrinsicHeight ? intrinsicHeight : bounds.height;
+ return [width_2, height_2];
+ }
+ if (hasIntrinsicProportion) {
+ var width_3 = 0;
+ var height_3 = 0;
+ if (isLengthPercentage(first)) {
+ width_3 = getAbsoluteValue(first, bounds.width);
+ } else if (isLengthPercentage(second)) {
+ height_3 = getAbsoluteValue(second, bounds.height);
+ }
+ if (isAuto(first)) {
+ width_3 = height_3 * intrinsicProportion;
+ } else if (!second || isAuto(second)) {
+ height_3 = width_3 / intrinsicProportion;
+ }
+ return [width_3, height_3];
+ }
+ var width = null;
+ var height = null;
+ if (isLengthPercentage(first)) {
+ width = getAbsoluteValue(first, bounds.width);
+ } else if (second && isLengthPercentage(second)) {
+ height = getAbsoluteValue(second, bounds.height);
+ }
+ if (width !== null && (!second || isAuto(second))) {
+ height = hasIntrinsicWidth && hasIntrinsicHeight ? width / intrinsicWidth * intrinsicHeight : bounds.height;
+ }
+ if (height !== null && isAuto(first)) {
+ width = hasIntrinsicWidth && hasIntrinsicHeight ? height / intrinsicHeight * intrinsicWidth : bounds.width;
+ }
+ if (width !== null && height !== null) {
+ return [width, height];
+ }
+ throw new Error("Unable to calculate background-size for element");
+ };
+ var getBackgroundValueForIndex = function(values, index) {
+ var value = values[index];
+ if (typeof value === "undefined") {
+ return values[0];
+ }
+ return value;
+ };
+ var calculateBackgroundRepeatPath = function(repeat, _a, _b, backgroundPositioningArea, backgroundPaintingArea) {
+ var x3 = _a[0], y3 = _a[1];
+ var width = _b[0], height = _b[1];
+ switch (repeat) {
+ case 2:
+ return [
+ new Vector(Math.round(backgroundPositioningArea.left), Math.round(backgroundPositioningArea.top + y3)),
+ new Vector(Math.round(backgroundPositioningArea.left + backgroundPositioningArea.width), Math.round(backgroundPositioningArea.top + y3)),
+ new Vector(Math.round(backgroundPositioningArea.left + backgroundPositioningArea.width), Math.round(height + backgroundPositioningArea.top + y3)),
+ new Vector(Math.round(backgroundPositioningArea.left), Math.round(height + backgroundPositioningArea.top + y3))
+ ];
+ case 3:
+ return [
+ new Vector(Math.round(backgroundPositioningArea.left + x3), Math.round(backgroundPositioningArea.top)),
+ new Vector(Math.round(backgroundPositioningArea.left + x3 + width), Math.round(backgroundPositioningArea.top)),
+ new Vector(Math.round(backgroundPositioningArea.left + x3 + width), Math.round(backgroundPositioningArea.height + backgroundPositioningArea.top)),
+ new Vector(Math.round(backgroundPositioningArea.left + x3), Math.round(backgroundPositioningArea.height + backgroundPositioningArea.top))
+ ];
+ case 1:
+ return [
+ new Vector(Math.round(backgroundPositioningArea.left + x3), Math.round(backgroundPositioningArea.top + y3)),
+ new Vector(Math.round(backgroundPositioningArea.left + x3 + width), Math.round(backgroundPositioningArea.top + y3)),
+ new Vector(Math.round(backgroundPositioningArea.left + x3 + width), Math.round(backgroundPositioningArea.top + y3 + height)),
+ new Vector(Math.round(backgroundPositioningArea.left + x3), Math.round(backgroundPositioningArea.top + y3 + height))
+ ];
+ default:
+ return [
+ new Vector(Math.round(backgroundPaintingArea.left), Math.round(backgroundPaintingArea.top)),
+ new Vector(Math.round(backgroundPaintingArea.left + backgroundPaintingArea.width), Math.round(backgroundPaintingArea.top)),
+ new Vector(Math.round(backgroundPaintingArea.left + backgroundPaintingArea.width), Math.round(backgroundPaintingArea.height + backgroundPaintingArea.top)),
+ new Vector(Math.round(backgroundPaintingArea.left), Math.round(backgroundPaintingArea.height + backgroundPaintingArea.top))
+ ];
+ }
+ };
+ var SMALL_IMAGE = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7";
+ var SAMPLE_TEXT = "Hidden Text";
+ var FontMetrics = (
+ /** @class */
+ function() {
+ function FontMetrics2(document2) {
+ this._data = {};
+ this._document = document2;
+ }
+ FontMetrics2.prototype.parseMetrics = function(fontFamily2, fontSize2) {
+ var container = this._document.createElement("div");
+ var img = this._document.createElement("img");
+ var span = this._document.createElement("span");
+ var body = this._document.body;
+ container.style.visibility = "hidden";
+ container.style.fontFamily = fontFamily2;
+ container.style.fontSize = fontSize2;
+ container.style.margin = "0";
+ container.style.padding = "0";
+ container.style.whiteSpace = "nowrap";
+ body.appendChild(container);
+ img.src = SMALL_IMAGE;
+ img.width = 1;
+ img.height = 1;
+ img.style.margin = "0";
+ img.style.padding = "0";
+ img.style.verticalAlign = "baseline";
+ span.style.fontFamily = fontFamily2;
+ span.style.fontSize = fontSize2;
+ span.style.margin = "0";
+ span.style.padding = "0";
+ span.appendChild(this._document.createTextNode(SAMPLE_TEXT));
+ container.appendChild(span);
+ container.appendChild(img);
+ var baseline = img.offsetTop - span.offsetTop + 2;
+ container.removeChild(span);
+ container.appendChild(this._document.createTextNode(SAMPLE_TEXT));
+ container.style.lineHeight = "normal";
+ img.style.verticalAlign = "super";
+ var middle = img.offsetTop - container.offsetTop + 2;
+ body.removeChild(container);
+ return { baseline, middle };
+ };
+ FontMetrics2.prototype.getMetrics = function(fontFamily2, fontSize2) {
+ var key = fontFamily2 + " " + fontSize2;
+ if (typeof this._data[key] === "undefined") {
+ this._data[key] = this.parseMetrics(fontFamily2, fontSize2);
+ }
+ return this._data[key];
+ };
+ return FontMetrics2;
+ }()
+ );
+ var Renderer2 = (
+ /** @class */
+ function() {
+ function Renderer3(context, options) {
+ this.context = context;
+ this.options = options;
+ }
+ return Renderer3;
+ }()
+ );
+ var MASK_OFFSET = 1e4;
+ var CanvasRenderer = (
+ /** @class */
+ function(_super) {
+ __extends(CanvasRenderer2, _super);
+ function CanvasRenderer2(context, options) {
+ var _this = _super.call(this, context, options) || this;
+ _this._activeEffects = [];
+ _this.canvas = options.canvas ? options.canvas : document.createElement("canvas");
+ _this.ctx = _this.canvas.getContext("2d");
+ if (!options.canvas) {
+ _this.canvas.width = Math.floor(options.width * options.scale);
+ _this.canvas.height = Math.floor(options.height * options.scale);
+ _this.canvas.style.width = options.width + "px";
+ _this.canvas.style.height = options.height + "px";
+ }
+ _this.fontMetrics = new FontMetrics(document);
+ _this.ctx.scale(_this.options.scale, _this.options.scale);
+ _this.ctx.translate(-options.x, -options.y);
+ _this.ctx.textBaseline = "bottom";
+ _this._activeEffects = [];
+ _this.context.logger.debug("Canvas renderer initialized (" + options.width + "x" + options.height + ") with scale " + options.scale);
+ return _this;
+ }
+ CanvasRenderer2.prototype.applyEffects = function(effects) {
+ var _this = this;
+ while (this._activeEffects.length) {
+ this.popEffect();
+ }
+ effects.forEach(function(effect7) {
+ return _this.applyEffect(effect7);
+ });
+ };
+ CanvasRenderer2.prototype.applyEffect = function(effect7) {
+ this.ctx.save();
+ if (isOpacityEffect(effect7)) {
+ this.ctx.globalAlpha = effect7.opacity;
+ }
+ if (isTransformEffect(effect7)) {
+ this.ctx.translate(effect7.offsetX, effect7.offsetY);
+ this.ctx.transform(effect7.matrix[0], effect7.matrix[1], effect7.matrix[2], effect7.matrix[3], effect7.matrix[4], effect7.matrix[5]);
+ this.ctx.translate(-effect7.offsetX, -effect7.offsetY);
+ }
+ if (isClipEffect(effect7)) {
+ this.path(effect7.path);
+ this.ctx.clip();
+ }
+ this._activeEffects.push(effect7);
+ };
+ CanvasRenderer2.prototype.popEffect = function() {
+ this._activeEffects.pop();
+ this.ctx.restore();
+ };
+ CanvasRenderer2.prototype.renderStack = function(stack) {
+ return __awaiter(this, void 0, void 0, function() {
+ var styles;
+ return __generator(this, function(_a) {
+ switch (_a.label) {
+ case 0:
+ styles = stack.element.container.styles;
+ if (!styles.isVisible())
+ return [3, 2];
+ return [4, this.renderStackContent(stack)];
+ case 1:
+ _a.sent();
+ _a.label = 2;
+ case 2:
+ return [
+ 2
+ /*return*/
+ ];
+ }
+ });
+ });
+ };
+ CanvasRenderer2.prototype.renderNode = function(paint) {
+ return __awaiter(this, void 0, void 0, function() {
+ return __generator(this, function(_a) {
+ switch (_a.label) {
+ case 0:
+ if (contains2(
+ paint.container.flags,
+ 16
+ /* DEBUG_RENDER */
+ )) {
+ debugger;
+ }
+ if (!paint.container.styles.isVisible())
+ return [3, 3];
+ return [4, this.renderNodeBackgroundAndBorders(paint)];
+ case 1:
+ _a.sent();
+ return [4, this.renderNodeContent(paint)];
+ case 2:
+ _a.sent();
+ _a.label = 3;
+ case 3:
+ return [
+ 2
+ /*return*/
+ ];
+ }
+ });
+ });
+ };
+ CanvasRenderer2.prototype.renderTextWithLetterSpacing = function(text, letterSpacing2, baseline) {
+ var _this = this;
+ if (letterSpacing2 === 0) {
+ this.ctx.fillText(text.text, text.bounds.left, text.bounds.top + baseline);
+ } else {
+ var letters = segmentGraphemes(text.text);
+ letters.reduce(function(left2, letter) {
+ _this.ctx.fillText(letter, left2, text.bounds.top + baseline);
+ return left2 + _this.ctx.measureText(letter).width;
+ }, text.bounds.left);
+ }
+ };
+ CanvasRenderer2.prototype.createFontStyle = function(styles) {
+ var fontVariant2 = styles.fontVariant.filter(function(variant) {
+ return variant === "normal" || variant === "small-caps";
+ }).join("");
+ var fontFamily2 = fixIOSSystemFonts(styles.fontFamily).join(", ");
+ var fontSize2 = isDimensionToken(styles.fontSize) ? "" + styles.fontSize.number + styles.fontSize.unit : styles.fontSize.number + "px";
+ return [
+ [styles.fontStyle, fontVariant2, styles.fontWeight, fontSize2, fontFamily2].join(" "),
+ fontFamily2,
+ fontSize2
+ ];
+ };
+ CanvasRenderer2.prototype.renderTextNode = function(text, styles) {
+ return __awaiter(this, void 0, void 0, function() {
+ var _a, font, fontFamily2, fontSize2, _b, baseline, middle, paintOrder2;
+ var _this = this;
+ return __generator(this, function(_c) {
+ _a = this.createFontStyle(styles), font = _a[0], fontFamily2 = _a[1], fontSize2 = _a[2];
+ this.ctx.font = font;
+ this.ctx.direction = styles.direction === 1 ? "rtl" : "ltr";
+ this.ctx.textAlign = "left";
+ this.ctx.textBaseline = "alphabetic";
+ _b = this.fontMetrics.getMetrics(fontFamily2, fontSize2), baseline = _b.baseline, middle = _b.middle;
+ paintOrder2 = styles.paintOrder;
+ text.textBounds.forEach(function(text2) {
+ paintOrder2.forEach(function(paintOrderLayer) {
+ switch (paintOrderLayer) {
+ case 0:
+ _this.ctx.fillStyle = asString(styles.color);
+ _this.renderTextWithLetterSpacing(text2, styles.letterSpacing, baseline);
+ var textShadows = styles.textShadow;
+ if (textShadows.length && text2.text.trim().length) {
+ textShadows.slice(0).reverse().forEach(function(textShadow2) {
+ _this.ctx.shadowColor = asString(textShadow2.color);
+ _this.ctx.shadowOffsetX = textShadow2.offsetX.number * _this.options.scale;
+ _this.ctx.shadowOffsetY = textShadow2.offsetY.number * _this.options.scale;
+ _this.ctx.shadowBlur = textShadow2.blur.number;
+ _this.renderTextWithLetterSpacing(text2, styles.letterSpacing, baseline);
+ });
+ _this.ctx.shadowColor = "";
+ _this.ctx.shadowOffsetX = 0;
+ _this.ctx.shadowOffsetY = 0;
+ _this.ctx.shadowBlur = 0;
+ }
+ if (styles.textDecorationLine.length) {
+ _this.ctx.fillStyle = asString(styles.textDecorationColor || styles.color);
+ styles.textDecorationLine.forEach(function(textDecorationLine2) {
+ switch (textDecorationLine2) {
+ case 1:
+ _this.ctx.fillRect(text2.bounds.left, Math.round(text2.bounds.top + baseline), text2.bounds.width, 1);
+ break;
+ case 2:
+ _this.ctx.fillRect(text2.bounds.left, Math.round(text2.bounds.top), text2.bounds.width, 1);
+ break;
+ case 3:
+ _this.ctx.fillRect(text2.bounds.left, Math.ceil(text2.bounds.top + middle), text2.bounds.width, 1);
+ break;
+ }
+ });
+ }
+ break;
+ case 1:
+ if (styles.webkitTextStrokeWidth && text2.text.trim().length) {
+ _this.ctx.strokeStyle = asString(styles.webkitTextStrokeColor);
+ _this.ctx.lineWidth = styles.webkitTextStrokeWidth;
+ _this.ctx.lineJoin = !!window.chrome ? "miter" : "round";
+ _this.ctx.strokeText(text2.text, text2.bounds.left, text2.bounds.top + baseline);
+ }
+ _this.ctx.strokeStyle = "";
+ _this.ctx.lineWidth = 0;
+ _this.ctx.lineJoin = "miter";
+ break;
+ }
+ });
+ });
+ return [
+ 2
+ /*return*/
+ ];
+ });
+ });
+ };
+ CanvasRenderer2.prototype.renderReplacedElement = function(container, curves, image2) {
+ if (image2 && container.intrinsicWidth > 0 && container.intrinsicHeight > 0) {
+ var box = contentBox(container);
+ var path = calculatePaddingBoxPath(curves);
+ this.path(path);
+ this.ctx.save();
+ this.ctx.clip();
+ this.ctx.drawImage(image2, 0, 0, container.intrinsicWidth, container.intrinsicHeight, box.left, box.top, box.width, box.height);
+ this.ctx.restore();
+ }
+ };
+ CanvasRenderer2.prototype.renderNodeContent = function(paint) {
+ return __awaiter(this, void 0, void 0, function() {
+ var container, curves, styles, _i, _a, child, image2, image2, iframeRenderer, canvas, size2, _b, fontFamily2, fontSize2, baseline, bounds, x3, textBounds, img, image2, url, fontFamily2, bounds;
+ return __generator(this, function(_c) {
+ switch (_c.label) {
+ case 0:
+ this.applyEffects(paint.getEffects(
+ 4
+ /* CONTENT */
+ ));
+ container = paint.container;
+ curves = paint.curves;
+ styles = container.styles;
+ _i = 0, _a = container.textNodes;
+ _c.label = 1;
+ case 1:
+ if (!(_i < _a.length))
+ return [3, 4];
+ child = _a[_i];
+ return [4, this.renderTextNode(child, styles)];
+ case 2:
+ _c.sent();
+ _c.label = 3;
+ case 3:
+ _i++;
+ return [3, 1];
+ case 4:
+ if (!(container instanceof ImageElementContainer))
+ return [3, 8];
+ _c.label = 5;
+ case 5:
+ _c.trys.push([5, 7, , 8]);
+ return [4, this.context.cache.match(container.src)];
+ case 6:
+ image2 = _c.sent();
+ this.renderReplacedElement(container, curves, image2);
+ return [3, 8];
+ case 7:
+ _c.sent();
+ this.context.logger.error("Error loading image " + container.src);
+ return [3, 8];
+ case 8:
+ if (container instanceof CanvasElementContainer) {
+ this.renderReplacedElement(container, curves, container.canvas);
+ }
+ if (!(container instanceof SVGElementContainer))
+ return [3, 12];
+ _c.label = 9;
+ case 9:
+ _c.trys.push([9, 11, , 12]);
+ return [4, this.context.cache.match(container.svg)];
+ case 10:
+ image2 = _c.sent();
+ this.renderReplacedElement(container, curves, image2);
+ return [3, 12];
+ case 11:
+ _c.sent();
+ this.context.logger.error("Error loading svg " + container.svg.substring(0, 255));
+ return [3, 12];
+ case 12:
+ if (!(container instanceof IFrameElementContainer && container.tree))
+ return [3, 14];
+ iframeRenderer = new CanvasRenderer2(this.context, {
+ scale: this.options.scale,
+ backgroundColor: container.backgroundColor,
+ x: 0,
+ y: 0,
+ width: container.width,
+ height: container.height
+ });
+ return [4, iframeRenderer.render(container.tree)];
+ case 13:
+ canvas = _c.sent();
+ if (container.width && container.height) {
+ this.ctx.drawImage(canvas, 0, 0, container.width, container.height, container.bounds.left, container.bounds.top, container.bounds.width, container.bounds.height);
+ }
+ _c.label = 14;
+ case 14:
+ if (container instanceof InputElementContainer) {
+ size2 = Math.min(container.bounds.width, container.bounds.height);
+ if (container.type === CHECKBOX) {
+ if (container.checked) {
+ this.ctx.save();
+ this.path([
+ new Vector(container.bounds.left + size2 * 0.39363, container.bounds.top + size2 * 0.79),
+ new Vector(container.bounds.left + size2 * 0.16, container.bounds.top + size2 * 0.5549),
+ new Vector(container.bounds.left + size2 * 0.27347, container.bounds.top + size2 * 0.44071),
+ new Vector(container.bounds.left + size2 * 0.39694, container.bounds.top + size2 * 0.5649),
+ new Vector(container.bounds.left + size2 * 0.72983, container.bounds.top + size2 * 0.23),
+ new Vector(container.bounds.left + size2 * 0.84, container.bounds.top + size2 * 0.34085),
+ new Vector(container.bounds.left + size2 * 0.39363, container.bounds.top + size2 * 0.79)
+ ]);
+ this.ctx.fillStyle = asString(INPUT_COLOR);
+ this.ctx.fill();
+ this.ctx.restore();
+ }
+ } else if (container.type === RADIO) {
+ if (container.checked) {
+ this.ctx.save();
+ this.ctx.beginPath();
+ this.ctx.arc(container.bounds.left + size2 / 2, container.bounds.top + size2 / 2, size2 / 4, 0, Math.PI * 2, true);
+ this.ctx.fillStyle = asString(INPUT_COLOR);
+ this.ctx.fill();
+ this.ctx.restore();
+ }
+ }
+ }
+ if (isTextInputElement(container) && container.value.length) {
+ _b = this.createFontStyle(styles), fontFamily2 = _b[0], fontSize2 = _b[1];
+ baseline = this.fontMetrics.getMetrics(fontFamily2, fontSize2).baseline;
+ this.ctx.font = fontFamily2;
+ this.ctx.fillStyle = asString(styles.color);
+ this.ctx.textBaseline = "alphabetic";
+ this.ctx.textAlign = canvasTextAlign(container.styles.textAlign);
+ bounds = contentBox(container);
+ x3 = 0;
+ switch (container.styles.textAlign) {
+ case 1:
+ x3 += bounds.width / 2;
+ break;
+ case 2:
+ x3 += bounds.width;
+ break;
+ }
+ textBounds = bounds.add(x3, 0, 0, -bounds.height / 2 + 1);
+ this.ctx.save();
+ this.path([
+ new Vector(bounds.left, bounds.top),
+ new Vector(bounds.left + bounds.width, bounds.top),
+ new Vector(bounds.left + bounds.width, bounds.top + bounds.height),
+ new Vector(bounds.left, bounds.top + bounds.height)
+ ]);
+ this.ctx.clip();
+ this.renderTextWithLetterSpacing(new TextBounds(container.value, textBounds), styles.letterSpacing, baseline);
+ this.ctx.restore();
+ this.ctx.textBaseline = "alphabetic";
+ this.ctx.textAlign = "left";
+ }
+ if (!contains2(
+ container.styles.display,
+ 2048
+ /* LIST_ITEM */
+ ))
+ return [3, 20];
+ if (!(container.styles.listStyleImage !== null))
+ return [3, 19];
+ img = container.styles.listStyleImage;
+ if (!(img.type === 0))
+ return [3, 18];
+ image2 = void 0;
+ url = img.url;
+ _c.label = 15;
+ case 15:
+ _c.trys.push([15, 17, , 18]);
+ return [4, this.context.cache.match(url)];
+ case 16:
+ image2 = _c.sent();
+ this.ctx.drawImage(image2, container.bounds.left - (image2.width + 10), container.bounds.top);
+ return [3, 18];
+ case 17:
+ _c.sent();
+ this.context.logger.error("Error loading list-style-image " + url);
+ return [3, 18];
+ case 18:
+ return [3, 20];
+ case 19:
+ if (paint.listValue && container.styles.listStyleType !== -1) {
+ fontFamily2 = this.createFontStyle(styles)[0];
+ this.ctx.font = fontFamily2;
+ this.ctx.fillStyle = asString(styles.color);
+ this.ctx.textBaseline = "middle";
+ this.ctx.textAlign = "right";
+ bounds = new Bounds(container.bounds.left, container.bounds.top + getAbsoluteValue(container.styles.paddingTop, container.bounds.width), container.bounds.width, computeLineHeight(styles.lineHeight, styles.fontSize.number) / 2 + 1);
+ this.renderTextWithLetterSpacing(new TextBounds(paint.listValue, bounds), styles.letterSpacing, computeLineHeight(styles.lineHeight, styles.fontSize.number) / 2 + 2);
+ this.ctx.textBaseline = "bottom";
+ this.ctx.textAlign = "left";
+ }
+ _c.label = 20;
+ case 20:
+ return [
+ 2
+ /*return*/
+ ];
+ }
+ });
+ });
+ };
+ CanvasRenderer2.prototype.renderStackContent = function(stack) {
+ return __awaiter(this, void 0, void 0, function() {
+ var _i, _a, child, _b, _c, child, _d, _e2, child, _f, _g, child, _h, _j, child, _k, _l, child, _m, _o, child;
+ return __generator(this, function(_p) {
+ switch (_p.label) {
+ case 0:
+ if (contains2(
+ stack.element.container.flags,
+ 16
+ /* DEBUG_RENDER */
+ )) {
+ debugger;
+ }
+ return [4, this.renderNodeBackgroundAndBorders(stack.element)];
+ case 1:
+ _p.sent();
+ _i = 0, _a = stack.negativeZIndex;
+ _p.label = 2;
+ case 2:
+ if (!(_i < _a.length))
+ return [3, 5];
+ child = _a[_i];
+ return [4, this.renderStack(child)];
+ case 3:
+ _p.sent();
+ _p.label = 4;
+ case 4:
+ _i++;
+ return [3, 2];
+ case 5:
+ return [4, this.renderNodeContent(stack.element)];
+ case 6:
+ _p.sent();
+ _b = 0, _c = stack.nonInlineLevel;
+ _p.label = 7;
+ case 7:
+ if (!(_b < _c.length))
+ return [3, 10];
+ child = _c[_b];
+ return [4, this.renderNode(child)];
+ case 8:
+ _p.sent();
+ _p.label = 9;
+ case 9:
+ _b++;
+ return [3, 7];
+ case 10:
+ _d = 0, _e2 = stack.nonPositionedFloats;
+ _p.label = 11;
+ case 11:
+ if (!(_d < _e2.length))
+ return [3, 14];
+ child = _e2[_d];
+ return [4, this.renderStack(child)];
+ case 12:
+ _p.sent();
+ _p.label = 13;
+ case 13:
+ _d++;
+ return [3, 11];
+ case 14:
+ _f = 0, _g = stack.nonPositionedInlineLevel;
+ _p.label = 15;
+ case 15:
+ if (!(_f < _g.length))
+ return [3, 18];
+ child = _g[_f];
+ return [4, this.renderStack(child)];
+ case 16:
+ _p.sent();
+ _p.label = 17;
+ case 17:
+ _f++;
+ return [3, 15];
+ case 18:
+ _h = 0, _j = stack.inlineLevel;
+ _p.label = 19;
+ case 19:
+ if (!(_h < _j.length))
+ return [3, 22];
+ child = _j[_h];
+ return [4, this.renderNode(child)];
+ case 20:
+ _p.sent();
+ _p.label = 21;
+ case 21:
+ _h++;
+ return [3, 19];
+ case 22:
+ _k = 0, _l = stack.zeroOrAutoZIndexOrTransformedOrOpacity;
+ _p.label = 23;
+ case 23:
+ if (!(_k < _l.length))
+ return [3, 26];
+ child = _l[_k];
+ return [4, this.renderStack(child)];
+ case 24:
+ _p.sent();
+ _p.label = 25;
+ case 25:
+ _k++;
+ return [3, 23];
+ case 26:
+ _m = 0, _o = stack.positiveZIndex;
+ _p.label = 27;
+ case 27:
+ if (!(_m < _o.length))
+ return [3, 30];
+ child = _o[_m];
+ return [4, this.renderStack(child)];
+ case 28:
+ _p.sent();
+ _p.label = 29;
+ case 29:
+ _m++;
+ return [3, 27];
+ case 30:
+ return [
+ 2
+ /*return*/
+ ];
+ }
+ });
+ });
+ };
+ CanvasRenderer2.prototype.mask = function(paths) {
+ this.ctx.beginPath();
+ this.ctx.moveTo(0, 0);
+ this.ctx.lineTo(this.canvas.width, 0);
+ this.ctx.lineTo(this.canvas.width, this.canvas.height);
+ this.ctx.lineTo(0, this.canvas.height);
+ this.ctx.lineTo(0, 0);
+ this.formatPath(paths.slice(0).reverse());
+ this.ctx.closePath();
+ };
+ CanvasRenderer2.prototype.path = function(paths) {
+ this.ctx.beginPath();
+ this.formatPath(paths);
+ this.ctx.closePath();
+ };
+ CanvasRenderer2.prototype.formatPath = function(paths) {
+ var _this = this;
+ paths.forEach(function(point, index) {
+ var start5 = isBezierCurve(point) ? point.start : point;
+ if (index === 0) {
+ _this.ctx.moveTo(start5.x, start5.y);
+ } else {
+ _this.ctx.lineTo(start5.x, start5.y);
+ }
+ if (isBezierCurve(point)) {
+ _this.ctx.bezierCurveTo(point.startControl.x, point.startControl.y, point.endControl.x, point.endControl.y, point.end.x, point.end.y);
+ }
+ });
+ };
+ CanvasRenderer2.prototype.renderRepeat = function(path, pattern, offsetX, offsetY) {
+ this.path(path);
+ this.ctx.fillStyle = pattern;
+ this.ctx.translate(offsetX, offsetY);
+ this.ctx.fill();
+ this.ctx.translate(-offsetX, -offsetY);
+ };
+ CanvasRenderer2.prototype.resizeImage = function(image2, width, height) {
+ var _a;
+ if (image2.width === width && image2.height === height) {
+ return image2;
+ }
+ var ownerDocument = (_a = this.canvas.ownerDocument) !== null && _a !== void 0 ? _a : document;
+ var canvas = ownerDocument.createElement("canvas");
+ canvas.width = Math.max(1, width);
+ canvas.height = Math.max(1, height);
+ var ctx = canvas.getContext("2d");
+ ctx.drawImage(image2, 0, 0, image2.width, image2.height, 0, 0, width, height);
+ return canvas;
+ };
+ CanvasRenderer2.prototype.renderBackgroundImage = function(container) {
+ return __awaiter(this, void 0, void 0, function() {
+ var index, _loop_1, this_1, _i, _a, backgroundImage2;
+ return __generator(this, function(_b) {
+ switch (_b.label) {
+ case 0:
+ index = container.styles.backgroundImage.length - 1;
+ _loop_1 = function(backgroundImage3) {
+ var image2, url, _c, path, x3, y3, width, height, pattern, _d, path, x3, y3, width, height, _e2, lineLength, x0, x1, y0, y1, canvas, ctx, gradient_1, pattern, _f, path, left2, top_1, width, height, position2, x3, y3, _g, rx, ry, radialGradient_1, midX, midY, f4, invF;
+ return __generator(this, function(_h) {
+ switch (_h.label) {
+ case 0:
+ if (!(backgroundImage3.type === 0))
+ return [3, 5];
+ image2 = void 0;
+ url = backgroundImage3.url;
+ _h.label = 1;
+ case 1:
+ _h.trys.push([1, 3, , 4]);
+ return [4, this_1.context.cache.match(url)];
+ case 2:
+ image2 = _h.sent();
+ return [3, 4];
+ case 3:
+ _h.sent();
+ this_1.context.logger.error("Error loading background-image " + url);
+ return [3, 4];
+ case 4:
+ if (image2) {
+ _c = calculateBackgroundRendering(container, index, [
+ image2.width,
+ image2.height,
+ image2.width / image2.height
+ ]), path = _c[0], x3 = _c[1], y3 = _c[2], width = _c[3], height = _c[4];
+ pattern = this_1.ctx.createPattern(this_1.resizeImage(image2, width, height), "repeat");
+ this_1.renderRepeat(path, pattern, x3, y3);
+ }
+ return [3, 6];
+ case 5:
+ if (isLinearGradient(backgroundImage3)) {
+ _d = calculateBackgroundRendering(container, index, [null, null, null]), path = _d[0], x3 = _d[1], y3 = _d[2], width = _d[3], height = _d[4];
+ _e2 = calculateGradientDirection(backgroundImage3.angle, width, height), lineLength = _e2[0], x0 = _e2[1], x1 = _e2[2], y0 = _e2[3], y1 = _e2[4];
+ canvas = document.createElement("canvas");
+ canvas.width = width;
+ canvas.height = height;
+ ctx = canvas.getContext("2d");
+ gradient_1 = ctx.createLinearGradient(x0, y0, x1, y1);
+ processColorStops(backgroundImage3.stops, lineLength).forEach(function(colorStop) {
+ return gradient_1.addColorStop(colorStop.stop, asString(colorStop.color));
+ });
+ ctx.fillStyle = gradient_1;
+ ctx.fillRect(0, 0, width, height);
+ if (width > 0 && height > 0) {
+ pattern = this_1.ctx.createPattern(canvas, "repeat");
+ this_1.renderRepeat(path, pattern, x3, y3);
+ }
+ } else if (isRadialGradient(backgroundImage3)) {
+ _f = calculateBackgroundRendering(container, index, [
+ null,
+ null,
+ null
+ ]), path = _f[0], left2 = _f[1], top_1 = _f[2], width = _f[3], height = _f[4];
+ position2 = backgroundImage3.position.length === 0 ? [FIFTY_PERCENT] : backgroundImage3.position;
+ x3 = getAbsoluteValue(position2[0], width);
+ y3 = getAbsoluteValue(position2[position2.length - 1], height);
+ _g = calculateRadius(backgroundImage3, x3, y3, width, height), rx = _g[0], ry = _g[1];
+ if (rx > 0 && ry > 0) {
+ radialGradient_1 = this_1.ctx.createRadialGradient(left2 + x3, top_1 + y3, 0, left2 + x3, top_1 + y3, rx);
+ processColorStops(backgroundImage3.stops, rx * 2).forEach(function(colorStop) {
+ return radialGradient_1.addColorStop(colorStop.stop, asString(colorStop.color));
+ });
+ this_1.path(path);
+ this_1.ctx.fillStyle = radialGradient_1;
+ if (rx !== ry) {
+ midX = container.bounds.left + 0.5 * container.bounds.width;
+ midY = container.bounds.top + 0.5 * container.bounds.height;
+ f4 = ry / rx;
+ invF = 1 / f4;
+ this_1.ctx.save();
+ this_1.ctx.translate(midX, midY);
+ this_1.ctx.transform(1, 0, 0, f4, 0, 0);
+ this_1.ctx.translate(-midX, -midY);
+ this_1.ctx.fillRect(left2, invF * (top_1 - midY) + midY, width, height * invF);
+ this_1.ctx.restore();
+ } else {
+ this_1.ctx.fill();
+ }
+ }
+ }
+ _h.label = 6;
+ case 6:
+ index--;
+ return [
+ 2
+ /*return*/
+ ];
+ }
+ });
+ };
+ this_1 = this;
+ _i = 0, _a = container.styles.backgroundImage.slice(0).reverse();
+ _b.label = 1;
+ case 1:
+ if (!(_i < _a.length))
+ return [3, 4];
+ backgroundImage2 = _a[_i];
+ return [5, _loop_1(backgroundImage2)];
+ case 2:
+ _b.sent();
+ _b.label = 3;
+ case 3:
+ _i++;
+ return [3, 1];
+ case 4:
+ return [
+ 2
+ /*return*/
+ ];
+ }
+ });
+ });
+ };
+ CanvasRenderer2.prototype.renderSolidBorder = function(color2, side, curvePoints) {
+ return __awaiter(this, void 0, void 0, function() {
+ return __generator(this, function(_a) {
+ this.path(parsePathForBorder(curvePoints, side));
+ this.ctx.fillStyle = asString(color2);
+ this.ctx.fill();
+ return [
+ 2
+ /*return*/
+ ];
+ });
+ });
+ };
+ CanvasRenderer2.prototype.renderDoubleBorder = function(color2, width, side, curvePoints) {
+ return __awaiter(this, void 0, void 0, function() {
+ var outerPaths, innerPaths;
+ return __generator(this, function(_a) {
+ switch (_a.label) {
+ case 0:
+ if (!(width < 3))
+ return [3, 2];
+ return [4, this.renderSolidBorder(color2, side, curvePoints)];
+ case 1:
+ _a.sent();
+ return [
+ 2
+ /*return*/
+ ];
+ case 2:
+ outerPaths = parsePathForBorderDoubleOuter(curvePoints, side);
+ this.path(outerPaths);
+ this.ctx.fillStyle = asString(color2);
+ this.ctx.fill();
+ innerPaths = parsePathForBorderDoubleInner(curvePoints, side);
+ this.path(innerPaths);
+ this.ctx.fill();
+ return [
+ 2
+ /*return*/
+ ];
+ }
+ });
+ });
+ };
+ CanvasRenderer2.prototype.renderNodeBackgroundAndBorders = function(paint) {
+ return __awaiter(this, void 0, void 0, function() {
+ var styles, hasBackground, borders, backgroundPaintingArea, side, _i, borders_1, border;
+ var _this = this;
+ return __generator(this, function(_a) {
+ switch (_a.label) {
+ case 0:
+ this.applyEffects(paint.getEffects(
+ 2
+ /* BACKGROUND_BORDERS */
+ ));
+ styles = paint.container.styles;
+ hasBackground = !isTransparent(styles.backgroundColor) || styles.backgroundImage.length;
+ borders = [
+ { style: styles.borderTopStyle, color: styles.borderTopColor, width: styles.borderTopWidth },
+ { style: styles.borderRightStyle, color: styles.borderRightColor, width: styles.borderRightWidth },
+ { style: styles.borderBottomStyle, color: styles.borderBottomColor, width: styles.borderBottomWidth },
+ { style: styles.borderLeftStyle, color: styles.borderLeftColor, width: styles.borderLeftWidth }
+ ];
+ backgroundPaintingArea = calculateBackgroundCurvedPaintingArea(getBackgroundValueForIndex(styles.backgroundClip, 0), paint.curves);
+ if (!(hasBackground || styles.boxShadow.length))
+ return [3, 2];
+ this.ctx.save();
+ this.path(backgroundPaintingArea);
+ this.ctx.clip();
+ if (!isTransparent(styles.backgroundColor)) {
+ this.ctx.fillStyle = asString(styles.backgroundColor);
+ this.ctx.fill();
+ }
+ return [4, this.renderBackgroundImage(paint.container)];
+ case 1:
+ _a.sent();
+ this.ctx.restore();
+ styles.boxShadow.slice(0).reverse().forEach(function(shadow) {
+ _this.ctx.save();
+ var borderBoxArea = calculateBorderBoxPath(paint.curves);
+ var maskOffset = shadow.inset ? 0 : MASK_OFFSET;
+ var shadowPaintingArea = transformPath(borderBoxArea, -maskOffset + (shadow.inset ? 1 : -1) * shadow.spread.number, (shadow.inset ? 1 : -1) * shadow.spread.number, shadow.spread.number * (shadow.inset ? -2 : 2), shadow.spread.number * (shadow.inset ? -2 : 2));
+ if (shadow.inset) {
+ _this.path(borderBoxArea);
+ _this.ctx.clip();
+ _this.mask(shadowPaintingArea);
+ } else {
+ _this.mask(borderBoxArea);
+ _this.ctx.clip();
+ _this.path(shadowPaintingArea);
+ }
+ _this.ctx.shadowOffsetX = shadow.offsetX.number + maskOffset;
+ _this.ctx.shadowOffsetY = shadow.offsetY.number;
+ _this.ctx.shadowColor = asString(shadow.color);
+ _this.ctx.shadowBlur = shadow.blur.number;
+ _this.ctx.fillStyle = shadow.inset ? asString(shadow.color) : "rgba(0,0,0,1)";
+ _this.ctx.fill();
+ _this.ctx.restore();
+ });
+ _a.label = 2;
+ case 2:
+ side = 0;
+ _i = 0, borders_1 = borders;
+ _a.label = 3;
+ case 3:
+ if (!(_i < borders_1.length))
+ return [3, 13];
+ border = borders_1[_i];
+ if (!(border.style !== 0 && !isTransparent(border.color) && border.width > 0))
+ return [3, 11];
+ if (!(border.style === 2))
+ return [3, 5];
+ return [4, this.renderDashedDottedBorder(
+ border.color,
+ border.width,
+ side,
+ paint.curves,
+ 2
+ /* DASHED */
+ )];
+ case 4:
+ _a.sent();
+ return [3, 11];
+ case 5:
+ if (!(border.style === 3))
+ return [3, 7];
+ return [4, this.renderDashedDottedBorder(
+ border.color,
+ border.width,
+ side,
+ paint.curves,
+ 3
+ /* DOTTED */
+ )];
+ case 6:
+ _a.sent();
+ return [3, 11];
+ case 7:
+ if (!(border.style === 4))
+ return [3, 9];
+ return [4, this.renderDoubleBorder(border.color, border.width, side, paint.curves)];
+ case 8:
+ _a.sent();
+ return [3, 11];
+ case 9:
+ return [4, this.renderSolidBorder(border.color, side, paint.curves)];
+ case 10:
+ _a.sent();
+ _a.label = 11;
+ case 11:
+ side++;
+ _a.label = 12;
+ case 12:
+ _i++;
+ return [3, 3];
+ case 13:
+ return [
+ 2
+ /*return*/
+ ];
+ }
+ });
+ });
+ };
+ CanvasRenderer2.prototype.renderDashedDottedBorder = function(color2, width, side, curvePoints, style) {
+ return __awaiter(this, void 0, void 0, function() {
+ var strokePaths, boxPaths, startX, startY, endX, endY, length, dashLength, spaceLength, useLineDash, multiplier, numberOfDashes, minSpace, maxSpace, path1, path2, path1, path2;
+ return __generator(this, function(_a) {
+ this.ctx.save();
+ strokePaths = parsePathForBorderStroke(curvePoints, side);
+ boxPaths = parsePathForBorder(curvePoints, side);
+ if (style === 2) {
+ this.path(boxPaths);
+ this.ctx.clip();
+ }
+ if (isBezierCurve(boxPaths[0])) {
+ startX = boxPaths[0].start.x;
+ startY = boxPaths[0].start.y;
+ } else {
+ startX = boxPaths[0].x;
+ startY = boxPaths[0].y;
+ }
+ if (isBezierCurve(boxPaths[1])) {
+ endX = boxPaths[1].end.x;
+ endY = boxPaths[1].end.y;
+ } else {
+ endX = boxPaths[1].x;
+ endY = boxPaths[1].y;
+ }
+ if (side === 0 || side === 2) {
+ length = Math.abs(startX - endX);
+ } else {
+ length = Math.abs(startY - endY);
+ }
+ this.ctx.beginPath();
+ if (style === 3) {
+ this.formatPath(strokePaths);
+ } else {
+ this.formatPath(boxPaths.slice(0, 2));
+ }
+ dashLength = width < 3 ? width * 3 : width * 2;
+ spaceLength = width < 3 ? width * 2 : width;
+ if (style === 3) {
+ dashLength = width;
+ spaceLength = width;
+ }
+ useLineDash = true;
+ if (length <= dashLength * 2) {
+ useLineDash = false;
+ } else if (length <= dashLength * 2 + spaceLength) {
+ multiplier = length / (2 * dashLength + spaceLength);
+ dashLength *= multiplier;
+ spaceLength *= multiplier;
+ } else {
+ numberOfDashes = Math.floor((length + spaceLength) / (dashLength + spaceLength));
+ minSpace = (length - numberOfDashes * dashLength) / (numberOfDashes - 1);
+ maxSpace = (length - (numberOfDashes + 1) * dashLength) / numberOfDashes;
+ spaceLength = maxSpace <= 0 || Math.abs(spaceLength - minSpace) < Math.abs(spaceLength - maxSpace) ? minSpace : maxSpace;
+ }
+ if (useLineDash) {
+ if (style === 3) {
+ this.ctx.setLineDash([0, dashLength + spaceLength]);
+ } else {
+ this.ctx.setLineDash([dashLength, spaceLength]);
+ }
+ }
+ if (style === 3) {
+ this.ctx.lineCap = "round";
+ this.ctx.lineWidth = width;
+ } else {
+ this.ctx.lineWidth = width * 2 + 1.1;
+ }
+ this.ctx.strokeStyle = asString(color2);
+ this.ctx.stroke();
+ this.ctx.setLineDash([]);
+ if (style === 2) {
+ if (isBezierCurve(boxPaths[0])) {
+ path1 = boxPaths[3];
+ path2 = boxPaths[0];
+ this.ctx.beginPath();
+ this.formatPath([new Vector(path1.end.x, path1.end.y), new Vector(path2.start.x, path2.start.y)]);
+ this.ctx.stroke();
+ }
+ if (isBezierCurve(boxPaths[1])) {
+ path1 = boxPaths[1];
+ path2 = boxPaths[2];
+ this.ctx.beginPath();
+ this.formatPath([new Vector(path1.end.x, path1.end.y), new Vector(path2.start.x, path2.start.y)]);
+ this.ctx.stroke();
+ }
+ }
+ this.ctx.restore();
+ return [
+ 2
+ /*return*/
+ ];
+ });
+ });
+ };
+ CanvasRenderer2.prototype.render = function(element) {
+ return __awaiter(this, void 0, void 0, function() {
+ var stack;
+ return __generator(this, function(_a) {
+ switch (_a.label) {
+ case 0:
+ if (this.options.backgroundColor) {
+ this.ctx.fillStyle = asString(this.options.backgroundColor);
+ this.ctx.fillRect(this.options.x, this.options.y, this.options.width, this.options.height);
+ }
+ stack = parseStackingContexts(element);
+ return [4, this.renderStack(stack)];
+ case 1:
+ _a.sent();
+ this.applyEffects([]);
+ return [2, this.canvas];
+ }
+ });
+ });
+ };
+ return CanvasRenderer2;
+ }(Renderer2)
+ );
+ var isTextInputElement = function(container) {
+ if (container instanceof TextareaElementContainer) {
+ return true;
+ } else if (container instanceof SelectElementContainer) {
+ return true;
+ } else if (container instanceof InputElementContainer && container.type !== RADIO && container.type !== CHECKBOX) {
+ return true;
+ }
+ return false;
+ };
+ var calculateBackgroundCurvedPaintingArea = function(clip, curves) {
+ switch (clip) {
+ case 0:
+ return calculateBorderBoxPath(curves);
+ case 2:
+ return calculateContentBoxPath(curves);
+ case 1:
+ default:
+ return calculatePaddingBoxPath(curves);
+ }
+ };
+ var canvasTextAlign = function(textAlign2) {
+ switch (textAlign2) {
+ case 1:
+ return "center";
+ case 2:
+ return "right";
+ case 0:
+ default:
+ return "left";
+ }
+ };
+ var iOSBrokenFonts = ["-apple-system", "system-ui"];
+ var fixIOSSystemFonts = function(fontFamilies) {
+ return /iPhone OS 15_(0|1)/.test(window.navigator.userAgent) ? fontFamilies.filter(function(fontFamily2) {
+ return iOSBrokenFonts.indexOf(fontFamily2) === -1;
+ }) : fontFamilies;
+ };
+ var ForeignObjectRenderer = (
+ /** @class */
+ function(_super) {
+ __extends(ForeignObjectRenderer2, _super);
+ function ForeignObjectRenderer2(context, options) {
+ var _this = _super.call(this, context, options) || this;
+ _this.canvas = options.canvas ? options.canvas : document.createElement("canvas");
+ _this.ctx = _this.canvas.getContext("2d");
+ _this.options = options;
+ _this.canvas.width = Math.floor(options.width * options.scale);
+ _this.canvas.height = Math.floor(options.height * options.scale);
+ _this.canvas.style.width = options.width + "px";
+ _this.canvas.style.height = options.height + "px";
+ _this.ctx.scale(_this.options.scale, _this.options.scale);
+ _this.ctx.translate(-options.x, -options.y);
+ _this.context.logger.debug("EXPERIMENTAL ForeignObject renderer initialized (" + options.width + "x" + options.height + " at " + options.x + "," + options.y + ") with scale " + options.scale);
+ return _this;
+ }
+ ForeignObjectRenderer2.prototype.render = function(element) {
+ return __awaiter(this, void 0, void 0, function() {
+ var svg, img;
+ return __generator(this, function(_a) {
+ switch (_a.label) {
+ case 0:
+ svg = createForeignObjectSVG(this.options.width * this.options.scale, this.options.height * this.options.scale, this.options.scale, this.options.scale, element);
+ return [4, loadSerializedSVG(svg)];
+ case 1:
+ img = _a.sent();
+ if (this.options.backgroundColor) {
+ this.ctx.fillStyle = asString(this.options.backgroundColor);
+ this.ctx.fillRect(0, 0, this.options.width * this.options.scale, this.options.height * this.options.scale);
+ }
+ this.ctx.drawImage(img, -this.options.x * this.options.scale, -this.options.y * this.options.scale);
+ return [2, this.canvas];
+ }
+ });
+ });
+ };
+ return ForeignObjectRenderer2;
+ }(Renderer2)
+ );
+ var loadSerializedSVG = function(svg) {
+ return new Promise(function(resolve, reject) {
+ var img = new Image();
+ img.onload = function() {
+ resolve(img);
+ };
+ img.onerror = reject;
+ img.src = "data:image/svg+xml;charset=utf-8," + encodeURIComponent(new XMLSerializer().serializeToString(svg));
+ });
+ };
+ var Logger = (
+ /** @class */
+ function() {
+ function Logger2(_a) {
+ var id2 = _a.id, enabled = _a.enabled;
+ this.id = id2;
+ this.enabled = enabled;
+ this.start = Date.now();
+ }
+ Logger2.prototype.debug = function() {
+ var args = [];
+ for (var _i = 0; _i < arguments.length; _i++) {
+ args[_i] = arguments[_i];
+ }
+ if (this.enabled) {
+ if (typeof window !== "undefined" && window.console && typeof console.debug === "function") {
+ console.debug.apply(console, __spreadArray([this.id, this.getTime() + "ms"], args));
+ } else {
+ this.info.apply(this, args);
+ }
+ }
+ };
+ Logger2.prototype.getTime = function() {
+ return Date.now() - this.start;
+ };
+ Logger2.prototype.info = function() {
+ var args = [];
+ for (var _i = 0; _i < arguments.length; _i++) {
+ args[_i] = arguments[_i];
+ }
+ if (this.enabled) {
+ if (typeof window !== "undefined" && window.console && typeof console.info === "function") {
+ console.info.apply(console, __spreadArray([this.id, this.getTime() + "ms"], args));
+ }
+ }
+ };
+ Logger2.prototype.warn = function() {
+ var args = [];
+ for (var _i = 0; _i < arguments.length; _i++) {
+ args[_i] = arguments[_i];
+ }
+ if (this.enabled) {
+ if (typeof window !== "undefined" && window.console && typeof console.warn === "function") {
+ console.warn.apply(console, __spreadArray([this.id, this.getTime() + "ms"], args));
+ } else {
+ this.info.apply(this, args);
+ }
+ }
+ };
+ Logger2.prototype.error = function() {
+ var args = [];
+ for (var _i = 0; _i < arguments.length; _i++) {
+ args[_i] = arguments[_i];
+ }
+ if (this.enabled) {
+ if (typeof window !== "undefined" && window.console && typeof console.error === "function") {
+ console.error.apply(console, __spreadArray([this.id, this.getTime() + "ms"], args));
+ } else {
+ this.info.apply(this, args);
+ }
+ }
+ };
+ Logger2.instances = {};
+ return Logger2;
+ }()
+ );
+ var Context = (
+ /** @class */
+ function() {
+ function Context2(options, windowBounds) {
+ var _a;
+ this.windowBounds = windowBounds;
+ this.instanceName = "#" + Context2.instanceCount++;
+ this.logger = new Logger({ id: this.instanceName, enabled: options.logging });
+ this.cache = (_a = options.cache) !== null && _a !== void 0 ? _a : new Cache2(this, options);
+ }
+ Context2.instanceCount = 1;
+ return Context2;
+ }()
+ );
+ var html2canvas2 = function(element, options) {
+ if (options === void 0) {
+ options = {};
+ }
+ return renderElement(element, options);
+ };
+ if (typeof window !== "undefined") {
+ CacheStorage.setContext(window);
+ }
+ var renderElement = function(element, opts) {
+ return __awaiter(void 0, void 0, void 0, function() {
+ var ownerDocument, defaultView, resourceOptions, contextOptions, windowOptions, windowBounds, context, foreignObjectRendering, cloneOptions, documentCloner, clonedElement, container, _a, width, height, left2, top2, backgroundColor2, renderOptions, canvas, renderer, root, renderer;
+ var _b, _c, _d, _e2, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
+ return __generator(this, function(_u) {
+ switch (_u.label) {
+ case 0:
+ if (!element || typeof element !== "object") {
+ return [2, Promise.reject("Invalid element provided as first argument")];
+ }
+ ownerDocument = element.ownerDocument;
+ if (!ownerDocument) {
+ throw new Error("Element is not attached to a Document");
+ }
+ defaultView = ownerDocument.defaultView;
+ if (!defaultView) {
+ throw new Error("Document is not attached to a Window");
+ }
+ resourceOptions = {
+ allowTaint: (_b = opts.allowTaint) !== null && _b !== void 0 ? _b : false,
+ imageTimeout: (_c = opts.imageTimeout) !== null && _c !== void 0 ? _c : 15e3,
+ proxy: opts.proxy,
+ useCORS: (_d = opts.useCORS) !== null && _d !== void 0 ? _d : false
+ };
+ contextOptions = __assign({ logging: (_e2 = opts.logging) !== null && _e2 !== void 0 ? _e2 : true, cache: opts.cache }, resourceOptions);
+ windowOptions = {
+ windowWidth: (_f = opts.windowWidth) !== null && _f !== void 0 ? _f : defaultView.innerWidth,
+ windowHeight: (_g = opts.windowHeight) !== null && _g !== void 0 ? _g : defaultView.innerHeight,
+ scrollX: (_h = opts.scrollX) !== null && _h !== void 0 ? _h : defaultView.pageXOffset,
+ scrollY: (_j = opts.scrollY) !== null && _j !== void 0 ? _j : defaultView.pageYOffset
+ };
+ windowBounds = new Bounds(windowOptions.scrollX, windowOptions.scrollY, windowOptions.windowWidth, windowOptions.windowHeight);
+ context = new Context(contextOptions, windowBounds);
+ foreignObjectRendering = (_k = opts.foreignObjectRendering) !== null && _k !== void 0 ? _k : false;
+ cloneOptions = {
+ allowTaint: (_l = opts.allowTaint) !== null && _l !== void 0 ? _l : false,
+ onclone: opts.onclone,
+ ignoreElements: opts.ignoreElements,
+ inlineImages: foreignObjectRendering,
+ copyStyles: foreignObjectRendering
+ };
+ context.logger.debug("Starting document clone with size " + windowBounds.width + "x" + windowBounds.height + " scrolled to " + -windowBounds.left + "," + -windowBounds.top);
+ documentCloner = new DocumentCloner(context, element, cloneOptions);
+ clonedElement = documentCloner.clonedReferenceElement;
+ if (!clonedElement) {
+ return [2, Promise.reject("Unable to find element in cloned iframe")];
+ }
+ return [4, documentCloner.toIFrame(ownerDocument, windowBounds)];
+ case 1:
+ container = _u.sent();
+ _a = isBodyElement(clonedElement) || isHTMLElement2(clonedElement) ? parseDocumentSize(clonedElement.ownerDocument) : parseBounds(context, clonedElement), width = _a.width, height = _a.height, left2 = _a.left, top2 = _a.top;
+ backgroundColor2 = parseBackgroundColor(context, clonedElement, opts.backgroundColor);
+ renderOptions = {
+ canvas: opts.canvas,
+ backgroundColor: backgroundColor2,
+ scale: (_o = (_m = opts.scale) !== null && _m !== void 0 ? _m : defaultView.devicePixelRatio) !== null && _o !== void 0 ? _o : 1,
+ x: ((_p = opts.x) !== null && _p !== void 0 ? _p : 0) + left2,
+ y: ((_q = opts.y) !== null && _q !== void 0 ? _q : 0) + top2,
+ width: (_r = opts.width) !== null && _r !== void 0 ? _r : Math.ceil(width),
+ height: (_s = opts.height) !== null && _s !== void 0 ? _s : Math.ceil(height)
+ };
+ if (!foreignObjectRendering)
+ return [3, 3];
+ context.logger.debug("Document cloned, using foreign object rendering");
+ renderer = new ForeignObjectRenderer(context, renderOptions);
+ return [4, renderer.render(clonedElement)];
+ case 2:
+ canvas = _u.sent();
+ return [3, 5];
+ case 3:
+ context.logger.debug("Document cloned, element located at " + left2 + "," + top2 + " with size " + width + "x" + height + " using computed rendering");
+ context.logger.debug("Starting DOM parsing");
+ root = parseTree(context, clonedElement);
+ if (backgroundColor2 === root.styles.backgroundColor) {
+ root.styles.backgroundColor = COLORS.TRANSPARENT;
+ }
+ context.logger.debug("Starting renderer for element at " + renderOptions.x + "," + renderOptions.y + " with size " + renderOptions.width + "x" + renderOptions.height);
+ renderer = new CanvasRenderer(context, renderOptions);
+ return [4, renderer.render(root)];
+ case 4:
+ canvas = _u.sent();
+ _u.label = 5;
+ case 5:
+ if ((_t = opts.removeContainer) !== null && _t !== void 0 ? _t : true) {
+ if (!DocumentCloner.destroy(container)) {
+ context.logger.error("Cannot detach cloned iframe as it is not in the DOM anymore");
+ }
+ }
+ context.logger.debug("Finished rendering");
+ return [2, canvas];
+ }
+ });
+ });
+ };
+ var parseBackgroundColor = function(context, element, backgroundColorOverride) {
+ var ownerDocument = element.ownerDocument;
+ var documentBackgroundColor = ownerDocument.documentElement ? parseColor(context, getComputedStyle(ownerDocument.documentElement).backgroundColor) : COLORS.TRANSPARENT;
+ var bodyBackgroundColor = ownerDocument.body ? parseColor(context, getComputedStyle(ownerDocument.body).backgroundColor) : COLORS.TRANSPARENT;
+ var defaultBackgroundColor = typeof backgroundColorOverride === "string" ? parseColor(context, backgroundColorOverride) : backgroundColorOverride === null ? COLORS.TRANSPARENT : 4294967295;
+ return element === ownerDocument.documentElement ? isTransparent(documentBackgroundColor) ? isTransparent(bodyBackgroundColor) ? defaultBackgroundColor : bodyBackgroundColor : documentBackgroundColor : defaultBackgroundColor;
+ };
+ return html2canvas2;
+ });
+ }
+ });
+
// ../../../node_modules/@rails/activestorage/app/assets/javascripts/activestorage.esm.js
var sparkMd5 = {
exports: {}
};
(function(module, exports) {
@@ -13112,10 +20939,44 @@
}
// ../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/index.js
addEventListener("turbo:before-fetch-request", encodeMethodIntoRequestBody);
+ // base/polyfills/request-submit.js
+ (function(prototype) {
+ if (typeof prototype.requestSubmit == "function")
+ return;
+ prototype.requestSubmit = function(submitter) {
+ if (submitter) {
+ validateSubmitter(submitter, this);
+ submitter.click();
+ } else {
+ submitter = document.createElement("input");
+ submitter.type = "submit";
+ submitter.hidden = true;
+ this.appendChild(submitter);
+ submitter.click();
+ this.removeChild(submitter);
+ }
+ };
+ function validateSubmitter(submitter, form) {
+ submitter instanceof HTMLElement || raise(TypeError, "parameter 1 is not of type 'HTMLElement'");
+ submitter.type == "submit" || raise(TypeError, "The specified element is not a submit button");
+ submitter.form == form || raise(
+ DOMException,
+ "The specified element is not owned by this form element",
+ "NotFoundError"
+ );
+ }
+ function raise(errorConstructor, message2, name) {
+ throw new errorConstructor(
+ "Failed to execute 'requestSubmit' on 'HTMLFormElement': " + message2 + ".",
+ name
+ );
+ }
+ })(HTMLFormElement.prototype);
+
// ../../../node_modules/alpinejs/dist/module.esm.js
var flushPending = false;
var flushing = false;
var queue = [];
var lastFlushedIndex = -1;
@@ -13528,14 +21389,14 @@
throw error2;
}, 0);
}
var shouldAutoEvaluateFunctions = true;
function dontAutoEvaluateFunctions(callback) {
- let cache3 = shouldAutoEvaluateFunctions;
+ let cache2 = shouldAutoEvaluateFunctions;
shouldAutoEvaluateFunctions = false;
callback();
- shouldAutoEvaluateFunctions = cache3;
+ shouldAutoEvaluateFunctions = cache2;
}
function evaluate(el, expression, extras = {}) {
let result;
evaluateLater(el, expression)((value) => result = value, extras);
return result;
@@ -13966,14 +21827,14 @@
return () => {
setStyles(el, previousStyles);
};
}
function setStylesFromString(el, value) {
- let cache3 = el.getAttribute("style", value);
+ let cache2 = el.getAttribute("style", value);
el.setAttribute("style", value);
return () => {
- el.setAttribute("style", cache3 || "");
+ el.setAttribute("style", cache2 || "");
};
}
function kebabCase(subject) {
return subject.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase();
}
@@ -14292,19 +22153,19 @@
});
};
initTree(el, shallowWalker);
}
function dontRegisterReactiveSideEffects(callback) {
- let cache3 = effect;
+ let cache2 = effect;
overrideEffect((callback2, el) => {
- let storedEffect = cache3(callback2);
+ let storedEffect = cache2(callback2);
release(storedEffect);
return () => {
};
});
callback();
- overrideEffect(cache3);
+ overrideEffect(cache2);
}
function bind(el, name, value, modifiers = []) {
if (!el._x_bindings)
el._x_bindings = reactive({});
el._x_bindings[name] = value;
@@ -14637,14 +22498,14 @@
var toRawType = (value) => {
return toTypeString(value).slice(8, -1);
};
var isIntegerKey = (key) => isString(key) && key !== "NaN" && key[0] !== "-" && "" + parseInt(key, 10) === key;
var cacheStringFunction = (fn3) => {
- const cache3 = /* @__PURE__ */ Object.create(null);
+ const cache2 = /* @__PURE__ */ Object.create(null);
return (str) => {
- const hit = cache3[str];
- return hit || (cache3[str] = fn3(str));
+ const hit = cache2[str];
+ return hit || (cache2[str] = fn3(str));
};
};
var camelizeRE = /-(\w)/g;
var camelize = cacheStringFunction((str) => {
return str.replace(camelizeRE, (_3, c3) => c3 ? c3.toUpperCase() : "");
@@ -15435,19 +23296,19 @@
initTree(clone2);
clone2._x_ignore = true;
});
cleanup2(() => clone2.remove());
});
- var handler2 = () => {
+ var handler = () => {
};
- handler2.inline = (el, { modifiers }, { cleanup: cleanup2 }) => {
+ handler.inline = (el, { modifiers }, { cleanup: cleanup2 }) => {
modifiers.includes("self") ? el._x_ignoreSelf = true : el._x_ignore = true;
cleanup2(() => {
modifiers.includes("self") ? delete el._x_ignoreSelf : delete el._x_ignore;
});
};
- directive("ignore", handler2);
+ directive("ignore", handler);
directive("effect", (el, { expression }, { effect: effect32 }) => effect32(evaluateLater(el, expression)));
function on(el, event, modifiers, callback) {
let listenerTarget = el;
let handler3 = (e3) => callback(e3);
let options = {};
@@ -16001,20 +23862,20 @@
return scopeVariables;
}
function isNumeric3(subject) {
return !Array.isArray(subject) && !isNaN(subject);
}
- function handler22() {
+ function handler2() {
}
- handler22.inline = (el, { expression }, { cleanup: cleanup2 }) => {
+ handler2.inline = (el, { expression }, { cleanup: cleanup2 }) => {
let root = closestRoot(el);
if (!root._x_refs)
root._x_refs = {};
root._x_refs[expression] = el;
cleanup2(() => delete root._x_refs[expression]);
};
- directive("ref", handler22);
+ directive("ref", handler2);
directive("if", (el, { expression }, { effect: effect32, cleanup: cleanup2 }) => {
let evaluate2 = evaluateLater(el, expression);
let show = () => {
if (el._x_currentIfEl)
return el._x_currentIfEl;
@@ -17500,13 +25361,13 @@
}));
}
function setInert(el) {
let undos = [];
crawlSiblingsUp(el, (sibling) => {
- let cache3 = sibling.hasAttribute("aria-hidden");
+ let cache2 = sibling.hasAttribute("aria-hidden");
sibling.setAttribute("aria-hidden", "true");
- undos.push(() => cache3 || sibling.removeAttribute("aria-hidden"));
+ undos.push(() => cache2 || sibling.removeAttribute("aria-hidden"));
});
return () => {
while (undos.length)
undos.pop()();
};
@@ -21362,14 +29223,12 @@
this.$watch("collapsed", (collapsed) => {
if (collapsed && !this.collapsible) {
this.collapsed = false;
return;
}
- this.setTooltipText();
this.$root.setAttribute("data-collapsed", collapsed ? "true" : "false");
});
- this.$watch("$options.state", () => this.setTooltipText());
},
setTooltipText() {
if (this.disabled) {
this.tooltipText = null;
return;
@@ -21468,10 +29327,11 @@
},
/* bindings */
root: {
"x-options": "options",
"x-tooltip": "tooltipText",
+ "x-effect": "setTooltipText",
"@confirmation:confirm": "approveAndRun",
"@confirmation:cancel": "cancelConfirmation",
"@dropdown:show": "setState('active')",
"@dropdown:hide": "resetState()"
}
@@ -21647,782 +29507,13 @@
var slide_editor_exports = {};
__export(slide_editor_exports, {
default: () => slide_editor_default
});
- // ../../../node_modules/html-to-image/es/util.js
- function resolveUrl(url, baseUrl) {
- if (url.match(/^[a-z]+:\/\//i)) {
- return url;
- }
- if (url.match(/^\/\//)) {
- return window.location.protocol + url;
- }
- if (url.match(/^[a-z]+:/i)) {
- return url;
- }
- const doc = document.implementation.createHTMLDocument();
- const base = doc.createElement("base");
- const a3 = doc.createElement("a");
- doc.head.appendChild(base);
- doc.body.appendChild(a3);
- if (baseUrl) {
- base.href = baseUrl;
- }
- a3.href = url;
- return a3.href;
- }
- var uuid2 = (() => {
- let counter = 0;
- const random = () => (
- // eslint-disable-next-line no-bitwise
- `0000${(Math.random() * 36 ** 4 << 0).toString(36)}`.slice(-4)
- );
- return () => {
- counter += 1;
- return `u${random()}${counter}`;
- };
- })();
- function toArray2(arrayLike) {
- const arr = [];
- for (let i3 = 0, l3 = arrayLike.length; i3 < l3; i3++) {
- arr.push(arrayLike[i3]);
- }
- return arr;
- }
- function px(node, styleProperty) {
- const win = node.ownerDocument.defaultView || window;
- const val = win.getComputedStyle(node).getPropertyValue(styleProperty);
- return val ? parseFloat(val.replace("px", "")) : 0;
- }
- function getNodeWidth(node) {
- const leftBorder = px(node, "border-left-width");
- const rightBorder = px(node, "border-right-width");
- return node.clientWidth + leftBorder + rightBorder;
- }
- function getNodeHeight(node) {
- const topBorder = px(node, "border-top-width");
- const bottomBorder = px(node, "border-bottom-width");
- return node.clientHeight + topBorder + bottomBorder;
- }
- function getImageSize(targetNode, options = {}) {
- const width = options.width || getNodeWidth(targetNode);
- const height = options.height || getNodeHeight(targetNode);
- return { width, height };
- }
- function getPixelRatio() {
- let ratio;
- let FINAL_PROCESS;
- try {
- FINAL_PROCESS = process;
- } catch (e3) {
- }
- const val = FINAL_PROCESS && FINAL_PROCESS.env ? FINAL_PROCESS.env.devicePixelRatio : null;
- if (val) {
- ratio = parseInt(val, 10);
- if (Number.isNaN(ratio)) {
- ratio = 1;
- }
- }
- return ratio || window.devicePixelRatio || 1;
- }
- var canvasDimensionLimit = 16384;
- function checkCanvasDimensions(canvas) {
- if (canvas.width > canvasDimensionLimit || canvas.height > canvasDimensionLimit) {
- if (canvas.width > canvasDimensionLimit && canvas.height > canvasDimensionLimit) {
- if (canvas.width > canvas.height) {
- canvas.height *= canvasDimensionLimit / canvas.width;
- canvas.width = canvasDimensionLimit;
- } else {
- canvas.width *= canvasDimensionLimit / canvas.height;
- canvas.height = canvasDimensionLimit;
- }
- } else if (canvas.width > canvasDimensionLimit) {
- canvas.height *= canvasDimensionLimit / canvas.width;
- canvas.width = canvasDimensionLimit;
- } else {
- canvas.width *= canvasDimensionLimit / canvas.height;
- canvas.height = canvasDimensionLimit;
- }
- }
- }
- function canvasToBlob(canvas, options = {}) {
- if (canvas.toBlob) {
- return new Promise((resolve) => {
- canvas.toBlob(resolve, options.type ? options.type : "image/png", options.quality ? options.quality : 1);
- });
- }
- return new Promise((resolve) => {
- const binaryString = window.atob(canvas.toDataURL(options.type ? options.type : void 0, options.quality ? options.quality : void 0).split(",")[1]);
- const len = binaryString.length;
- const binaryArray = new Uint8Array(len);
- for (let i3 = 0; i3 < len; i3 += 1) {
- binaryArray[i3] = binaryString.charCodeAt(i3);
- }
- resolve(new Blob([binaryArray], {
- type: options.type ? options.type : "image/png"
- }));
- });
- }
- function createImage(url) {
- return new Promise((resolve, reject) => {
- const img = new Image();
- img.decode = () => resolve(img);
- img.onload = () => resolve(img);
- img.onerror = reject;
- img.crossOrigin = "anonymous";
- img.decoding = "async";
- img.src = url;
- });
- }
- async function svgToDataURL(svg) {
- return Promise.resolve().then(() => new XMLSerializer().serializeToString(svg)).then(encodeURIComponent).then((html) => `data:image/svg+xml;charset=utf-8,${html}`);
- }
- async function nodeToDataURL(node, width, height) {
- const xmlns = "http://www.w3.org/2000/svg";
- const svg = document.createElementNS(xmlns, "svg");
- const foreignObject = document.createElementNS(xmlns, "foreignObject");
- svg.setAttribute("width", `${width}`);
- svg.setAttribute("height", `${height}`);
- svg.setAttribute("viewBox", `0 0 ${width} ${height}`);
- foreignObject.setAttribute("width", "100%");
- foreignObject.setAttribute("height", "100%");
- foreignObject.setAttribute("x", "0");
- foreignObject.setAttribute("y", "0");
- foreignObject.setAttribute("externalResourcesRequired", "true");
- svg.appendChild(foreignObject);
- foreignObject.appendChild(node);
- return svgToDataURL(svg);
- }
- var isInstanceOfElement = (node, instance) => {
- if (node instanceof instance)
- return true;
- const nodePrototype = Object.getPrototypeOf(node);
- if (nodePrototype === null)
- return false;
- return nodePrototype.constructor.name === instance.name || isInstanceOfElement(nodePrototype, instance);
- };
+ // helpers/screenshot.js
+ var import_html2canvas = __toESM(require_html2canvas(), 1);
- // ../../../node_modules/html-to-image/es/clone-pseudos.js
- function formatCSSText(style) {
- const content2 = style.getPropertyValue("content");
- return `${style.cssText} content: '${content2.replace(/'|"/g, "")}';`;
- }
- function formatCSSProperties(style) {
- return toArray2(style).map((name) => {
- const value = style.getPropertyValue(name);
- const priority = style.getPropertyPriority(name);
- return `${name}: ${value}${priority ? " !important" : ""};`;
- }).join(" ");
- }
- function getPseudoElementStyle(className, pseudo, style) {
- const selector = `.${className}:${pseudo}`;
- const cssText = style.cssText ? formatCSSText(style) : formatCSSProperties(style);
- return document.createTextNode(`${selector}{${cssText}}`);
- }
- function clonePseudoElement(nativeNode, clonedNode, pseudo) {
- const style = window.getComputedStyle(nativeNode, pseudo);
- const content2 = style.getPropertyValue("content");
- if (content2 === "" || content2 === "none") {
- return;
- }
- const className = uuid2();
- try {
- clonedNode.className = `${clonedNode.className} ${className}`;
- } catch (err) {
- return;
- }
- const styleElement = document.createElement("style");
- styleElement.appendChild(getPseudoElementStyle(className, pseudo, style));
- clonedNode.appendChild(styleElement);
- }
- function clonePseudoElements(nativeNode, clonedNode) {
- clonePseudoElement(nativeNode, clonedNode, ":before");
- clonePseudoElement(nativeNode, clonedNode, ":after");
- }
-
- // ../../../node_modules/html-to-image/es/mimes.js
- var WOFF = "application/font-woff";
- var JPEG = "image/jpeg";
- var mimes = {
- woff: WOFF,
- woff2: WOFF,
- ttf: "application/font-truetype",
- eot: "application/vnd.ms-fontobject",
- png: "image/png",
- jpg: JPEG,
- jpeg: JPEG,
- gif: "image/gif",
- tiff: "image/tiff",
- svg: "image/svg+xml",
- webp: "image/webp"
- };
- function getExtension2(url) {
- const match = /\.([^./]*?)$/g.exec(url);
- return match ? match[1] : "";
- }
- function getMimeType(url) {
- const extension = getExtension2(url).toLowerCase();
- return mimes[extension] || "";
- }
-
- // ../../../node_modules/html-to-image/es/dataurl.js
- function getContentFromDataUrl(dataURL) {
- return dataURL.split(/,/)[1];
- }
- function isDataUrl(url) {
- return url.search(/^(data:)/) !== -1;
- }
- function makeDataUrl(content2, mimeType) {
- return `data:${mimeType};base64,${content2}`;
- }
- async function fetchAsDataURL(url, init, process2) {
- const res = await fetch(url, init);
- if (res.status === 404) {
- throw new Error(`Resource "${res.url}" not found`);
- }
- const blob = await res.blob();
- return new Promise((resolve, reject) => {
- const reader = new FileReader();
- reader.onerror = reject;
- reader.onloadend = () => {
- try {
- resolve(process2({ res, result: reader.result }));
- } catch (error2) {
- reject(error2);
- }
- };
- reader.readAsDataURL(blob);
- });
- }
- var cache2 = {};
- function getCacheKey(url, contentType, includeQueryParams) {
- let key = url.replace(/\?.*/, "");
- if (includeQueryParams) {
- key = url;
- }
- if (/ttf|otf|eot|woff2?/i.test(key)) {
- key = key.replace(/.*\//, "");
- }
- return contentType ? `[${contentType}]${key}` : key;
- }
- async function resourceToDataURL(resourceUrl, contentType, options) {
- const cacheKey = getCacheKey(resourceUrl, contentType, options.includeQueryParams);
- if (cache2[cacheKey] != null) {
- return cache2[cacheKey];
- }
- if (options.cacheBust) {
- resourceUrl += (/\?/.test(resourceUrl) ? "&" : "?") + (/* @__PURE__ */ new Date()).getTime();
- }
- let dataURL;
- try {
- const content2 = await fetchAsDataURL(resourceUrl, options.fetchRequestInit, ({ res, result }) => {
- if (!contentType) {
- contentType = res.headers.get("Content-Type") || "";
- }
- return getContentFromDataUrl(result);
- });
- dataURL = makeDataUrl(content2, contentType);
- } catch (error2) {
- dataURL = options.imagePlaceholder || "";
- let msg = `Failed to fetch resource: ${resourceUrl}`;
- if (error2) {
- msg = typeof error2 === "string" ? error2 : error2.message;
- }
- if (msg) {
- console.warn(msg);
- }
- }
- cache2[cacheKey] = dataURL;
- return dataURL;
- }
-
- // ../../../node_modules/html-to-image/es/clone-node.js
- async function cloneCanvasElement(canvas) {
- const dataURL = canvas.toDataURL();
- if (dataURL === "data:,") {
- return canvas.cloneNode(false);
- }
- return createImage(dataURL);
- }
- async function cloneVideoElement(video, options) {
- if (video.currentSrc) {
- const canvas = document.createElement("canvas");
- const ctx = canvas.getContext("2d");
- canvas.width = video.clientWidth;
- canvas.height = video.clientHeight;
- ctx === null || ctx === void 0 ? void 0 : ctx.drawImage(video, 0, 0, canvas.width, canvas.height);
- const dataURL2 = canvas.toDataURL();
- return createImage(dataURL2);
- }
- const poster = video.poster;
- const contentType = getMimeType(poster);
- const dataURL = await resourceToDataURL(poster, contentType, options);
- return createImage(dataURL);
- }
- async function cloneIFrameElement(iframe) {
- var _a;
- try {
- if ((_a = iframe === null || iframe === void 0 ? void 0 : iframe.contentDocument) === null || _a === void 0 ? void 0 : _a.body) {
- return await cloneNode(iframe.contentDocument.body, {}, true);
- }
- } catch (_b) {
- }
- return iframe.cloneNode(false);
- }
- async function cloneSingleNode(node, options) {
- if (isInstanceOfElement(node, HTMLCanvasElement)) {
- return cloneCanvasElement(node);
- }
- if (isInstanceOfElement(node, HTMLVideoElement)) {
- return cloneVideoElement(node, options);
- }
- if (isInstanceOfElement(node, HTMLIFrameElement)) {
- return cloneIFrameElement(node);
- }
- return node.cloneNode(false);
- }
- var isSlotElement = (node) => node.tagName != null && node.tagName.toUpperCase() === "SLOT";
- async function cloneChildren(nativeNode, clonedNode, options) {
- var _a, _b;
- let children = [];
- if (isSlotElement(nativeNode) && nativeNode.assignedNodes) {
- children = toArray2(nativeNode.assignedNodes());
- } else if (isInstanceOfElement(nativeNode, HTMLIFrameElement) && ((_a = nativeNode.contentDocument) === null || _a === void 0 ? void 0 : _a.body)) {
- children = toArray2(nativeNode.contentDocument.body.childNodes);
- } else {
- children = toArray2(((_b = nativeNode.shadowRoot) !== null && _b !== void 0 ? _b : nativeNode).childNodes);
- }
- if (children.length === 0 || isInstanceOfElement(nativeNode, HTMLVideoElement)) {
- return clonedNode;
- }
- await children.reduce((deferred, child) => deferred.then(() => cloneNode(child, options)).then((clonedChild) => {
- if (clonedChild) {
- clonedNode.appendChild(clonedChild);
- }
- }), Promise.resolve());
- return clonedNode;
- }
- function cloneCSSStyle(nativeNode, clonedNode) {
- const targetStyle = clonedNode.style;
- if (!targetStyle) {
- return;
- }
- const sourceStyle = window.getComputedStyle(nativeNode);
- if (sourceStyle.cssText) {
- targetStyle.cssText = sourceStyle.cssText;
- targetStyle.transformOrigin = sourceStyle.transformOrigin;
- } else {
- toArray2(sourceStyle).forEach((name) => {
- let value = sourceStyle.getPropertyValue(name);
- if (name === "font-size" && value.endsWith("px")) {
- const reducedFont = Math.floor(parseFloat(value.substring(0, value.length - 2))) - 0.1;
- value = `${reducedFont}px`;
- }
- if (isInstanceOfElement(nativeNode, HTMLIFrameElement) && name === "display" && value === "inline") {
- value = "block";
- }
- if (name === "d" && clonedNode.getAttribute("d")) {
- value = `path(${clonedNode.getAttribute("d")})`;
- }
- targetStyle.setProperty(name, value, sourceStyle.getPropertyPriority(name));
- });
- }
- }
- function cloneInputValue(nativeNode, clonedNode) {
- if (isInstanceOfElement(nativeNode, HTMLTextAreaElement)) {
- clonedNode.innerHTML = nativeNode.value;
- }
- if (isInstanceOfElement(nativeNode, HTMLInputElement)) {
- clonedNode.setAttribute("value", nativeNode.value);
- }
- }
- function cloneSelectValue(nativeNode, clonedNode) {
- if (isInstanceOfElement(nativeNode, HTMLSelectElement)) {
- const clonedSelect = clonedNode;
- const selectedOption = Array.from(clonedSelect.children).find((child) => nativeNode.value === child.getAttribute("value"));
- if (selectedOption) {
- selectedOption.setAttribute("selected", "");
- }
- }
- }
- function decorate(nativeNode, clonedNode) {
- if (isInstanceOfElement(clonedNode, Element)) {
- cloneCSSStyle(nativeNode, clonedNode);
- clonePseudoElements(nativeNode, clonedNode);
- cloneInputValue(nativeNode, clonedNode);
- cloneSelectValue(nativeNode, clonedNode);
- }
- return clonedNode;
- }
- async function ensureSVGSymbols(clone2, options) {
- const uses = clone2.querySelectorAll ? clone2.querySelectorAll("use") : [];
- if (uses.length === 0) {
- return clone2;
- }
- const processedDefs = {};
- for (let i3 = 0; i3 < uses.length; i3++) {
- const use = uses[i3];
- const id2 = use.getAttribute("xlink:href");
- if (id2) {
- const exist = clone2.querySelector(id2);
- const definition = document.querySelector(id2);
- if (!exist && definition && !processedDefs[id2]) {
- processedDefs[id2] = await cloneNode(definition, options, true);
- }
- }
- }
- const nodes = Object.values(processedDefs);
- if (nodes.length) {
- const ns = "http://www.w3.org/1999/xhtml";
- const svg = document.createElementNS(ns, "svg");
- svg.setAttribute("xmlns", ns);
- svg.style.position = "absolute";
- svg.style.width = "0";
- svg.style.height = "0";
- svg.style.overflow = "hidden";
- svg.style.display = "none";
- const defs = document.createElementNS(ns, "defs");
- svg.appendChild(defs);
- for (let i3 = 0; i3 < nodes.length; i3++) {
- defs.appendChild(nodes[i3]);
- }
- clone2.appendChild(svg);
- }
- return clone2;
- }
- async function cloneNode(node, options, isRoot2) {
- if (!isRoot2 && options.filter && !options.filter(node)) {
- return null;
- }
- return Promise.resolve(node).then((clonedNode) => cloneSingleNode(clonedNode, options)).then((clonedNode) => cloneChildren(node, clonedNode, options)).then((clonedNode) => decorate(node, clonedNode)).then((clonedNode) => ensureSVGSymbols(clonedNode, options));
- }
-
- // ../../../node_modules/html-to-image/es/embed-resources.js
- var URL_REGEX = /url\((['"]?)([^'"]+?)\1\)/g;
- var URL_WITH_FORMAT_REGEX = /url\([^)]+\)\s*format\((["']?)([^"']+)\1\)/g;
- var FONT_SRC_REGEX = /src:\s*(?:url\([^)]+\)\s*format\([^)]+\)[,;]\s*)+/g;
- function toRegex(url) {
- const escaped = url.replace(/([.*+?^${}()|\[\]\/\\])/g, "\\$1");
- return new RegExp(`(url\\(['"]?)(${escaped})(['"]?\\))`, "g");
- }
- function parseURLs(cssText) {
- const urls = [];
- cssText.replace(URL_REGEX, (raw2, quotation, url) => {
- urls.push(url);
- return raw2;
- });
- return urls.filter((url) => !isDataUrl(url));
- }
- async function embed(cssText, resourceURL, baseURL, options, getContentFromUrl) {
- try {
- const resolvedURL = baseURL ? resolveUrl(resourceURL, baseURL) : resourceURL;
- const contentType = getMimeType(resourceURL);
- let dataURL;
- if (getContentFromUrl) {
- const content2 = await getContentFromUrl(resolvedURL);
- dataURL = makeDataUrl(content2, contentType);
- } else {
- dataURL = await resourceToDataURL(resolvedURL, contentType, options);
- }
- return cssText.replace(toRegex(resourceURL), `$1${dataURL}$3`);
- } catch (error2) {
- }
- return cssText;
- }
- function filterPreferredFontFormat(str, { preferredFontFormat }) {
- return !preferredFontFormat ? str : str.replace(FONT_SRC_REGEX, (match) => {
- while (true) {
- const [src, , format] = URL_WITH_FORMAT_REGEX.exec(match) || [];
- if (!format) {
- return "";
- }
- if (format === preferredFontFormat) {
- return `src: ${src};`;
- }
- }
- });
- }
- function shouldEmbed(url) {
- return url.search(URL_REGEX) !== -1;
- }
- async function embedResources(cssText, baseUrl, options) {
- if (!shouldEmbed(cssText)) {
- return cssText;
- }
- const filteredCSSText = filterPreferredFontFormat(cssText, options);
- const urls = parseURLs(filteredCSSText);
- return urls.reduce((deferred, url) => deferred.then((css) => embed(css, url, baseUrl, options)), Promise.resolve(filteredCSSText));
- }
-
- // ../../../node_modules/html-to-image/es/embed-images.js
- async function embedProp(propName, node, options) {
- var _a;
- const propValue = (_a = node.style) === null || _a === void 0 ? void 0 : _a.getPropertyValue(propName);
- if (propValue) {
- const cssString = await embedResources(propValue, null, options);
- node.style.setProperty(propName, cssString, node.style.getPropertyPriority(propName));
- return true;
- }
- return false;
- }
- async function embedBackground(clonedNode, options) {
- if (!await embedProp("background", clonedNode, options)) {
- await embedProp("background-image", clonedNode, options);
- }
- if (!await embedProp("mask", clonedNode, options)) {
- await embedProp("mask-image", clonedNode, options);
- }
- }
- async function embedImageNode(clonedNode, options) {
- const isImageElement = isInstanceOfElement(clonedNode, HTMLImageElement);
- if (!(isImageElement && !isDataUrl(clonedNode.src)) && !(isInstanceOfElement(clonedNode, SVGImageElement) && !isDataUrl(clonedNode.href.baseVal))) {
- return;
- }
- const url = isImageElement ? clonedNode.src : clonedNode.href.baseVal;
- const dataURL = await resourceToDataURL(url, getMimeType(url), options);
- await new Promise((resolve, reject) => {
- clonedNode.onload = resolve;
- clonedNode.onerror = reject;
- const image = clonedNode;
- if (image.decode) {
- image.decode = resolve;
- }
- if (image.loading === "lazy") {
- image.loading = "eager";
- }
- if (isImageElement) {
- clonedNode.srcset = "";
- clonedNode.src = dataURL;
- } else {
- clonedNode.href.baseVal = dataURL;
- }
- });
- }
- async function embedChildren(clonedNode, options) {
- const children = toArray2(clonedNode.childNodes);
- const deferreds = children.map((child) => embedImages(child, options));
- await Promise.all(deferreds).then(() => clonedNode);
- }
- async function embedImages(clonedNode, options) {
- if (isInstanceOfElement(clonedNode, Element)) {
- await embedBackground(clonedNode, options);
- await embedImageNode(clonedNode, options);
- await embedChildren(clonedNode, options);
- }
- }
-
- // ../../../node_modules/html-to-image/es/apply-style.js
- function applyStyle(node, options) {
- const { style } = node;
- if (options.backgroundColor) {
- style.backgroundColor = options.backgroundColor;
- }
- if (options.width) {
- style.width = `${options.width}px`;
- }
- if (options.height) {
- style.height = `${options.height}px`;
- }
- const manual = options.style;
- if (manual != null) {
- Object.keys(manual).forEach((key) => {
- style[key] = manual[key];
- });
- }
- return node;
- }
-
- // ../../../node_modules/html-to-image/es/embed-webfonts.js
- var cssFetchCache = {};
- async function fetchCSS(url) {
- let cache3 = cssFetchCache[url];
- if (cache3 != null) {
- return cache3;
- }
- const res = await fetch(url);
- const cssText = await res.text();
- cache3 = { url, cssText };
- cssFetchCache[url] = cache3;
- return cache3;
- }
- async function embedFonts(data2, options) {
- let cssText = data2.cssText;
- const regexUrl = /url\(["']?([^"')]+)["']?\)/g;
- const fontLocs = cssText.match(/url\([^)]+\)/g) || [];
- const loadFonts = fontLocs.map(async (loc) => {
- let url = loc.replace(regexUrl, "$1");
- if (!url.startsWith("https://")) {
- url = new URL(url, data2.url).href;
- }
- return fetchAsDataURL(url, options.fetchRequestInit, ({ result }) => {
- cssText = cssText.replace(loc, `url(${result})`);
- return [loc, result];
- });
- });
- return Promise.all(loadFonts).then(() => cssText);
- }
- function parseCSS(source) {
- if (source == null) {
- return [];
- }
- const result = [];
- const commentsRegex = /(\/\*[\s\S]*?\*\/)/gi;
- let cssText = source.replace(commentsRegex, "");
- const keyframesRegex = new RegExp("((@.*?keyframes [\\s\\S]*?){([\\s\\S]*?}\\s*?)})", "gi");
- while (true) {
- const matches2 = keyframesRegex.exec(cssText);
- if (matches2 === null) {
- break;
- }
- result.push(matches2[0]);
- }
- cssText = cssText.replace(keyframesRegex, "");
- const importRegex = /@import[\s\S]*?url\([^)]*\)[\s\S]*?;/gi;
- const combinedCSSRegex = "((\\s*?(?:\\/\\*[\\s\\S]*?\\*\\/)?\\s*?@media[\\s\\S]*?){([\\s\\S]*?)}\\s*?})|(([\\s\\S]*?){([\\s\\S]*?)})";
- const unifiedRegex = new RegExp(combinedCSSRegex, "gi");
- while (true) {
- let matches2 = importRegex.exec(cssText);
- if (matches2 === null) {
- matches2 = unifiedRegex.exec(cssText);
- if (matches2 === null) {
- break;
- } else {
- importRegex.lastIndex = unifiedRegex.lastIndex;
- }
- } else {
- unifiedRegex.lastIndex = importRegex.lastIndex;
- }
- result.push(matches2[0]);
- }
- return result;
- }
- async function getCSSRules(styleSheets, options) {
- const ret = [];
- const deferreds = [];
- styleSheets.forEach((sheet) => {
- if ("cssRules" in sheet) {
- try {
- toArray2(sheet.cssRules || []).forEach((item, index) => {
- if (item.type === CSSRule.IMPORT_RULE) {
- let importIndex = index + 1;
- const url = item.href;
- const deferred = fetchCSS(url).then((metadata) => embedFonts(metadata, options)).then((cssText) => parseCSS(cssText).forEach((rule) => {
- try {
- sheet.insertRule(rule, rule.startsWith("@import") ? importIndex += 1 : sheet.cssRules.length);
- } catch (error2) {
- console.error("Error inserting rule from remote css", {
- rule,
- error: error2
- });
- }
- })).catch((e3) => {
- console.error("Error loading remote css", e3.toString());
- });
- deferreds.push(deferred);
- }
- });
- } catch (e3) {
- const inline = styleSheets.find((a3) => a3.href == null) || document.styleSheets[0];
- if (sheet.href != null) {
- deferreds.push(fetchCSS(sheet.href).then((metadata) => embedFonts(metadata, options)).then((cssText) => parseCSS(cssText).forEach((rule) => {
- inline.insertRule(rule, sheet.cssRules.length);
- })).catch((err) => {
- console.error("Error loading remote stylesheet", err);
- }));
- }
- console.error("Error inlining remote css file", e3);
- }
- }
- });
- return Promise.all(deferreds).then(() => {
- styleSheets.forEach((sheet) => {
- if ("cssRules" in sheet) {
- try {
- toArray2(sheet.cssRules || []).forEach((item) => {
- ret.push(item);
- });
- } catch (e3) {
- console.error(`Error while reading CSS rules from ${sheet.href}`, e3);
- }
- }
- });
- return ret;
- });
- }
- function getWebFontRules(cssRules) {
- return cssRules.filter((rule) => rule.type === CSSRule.FONT_FACE_RULE).filter((rule) => shouldEmbed(rule.style.getPropertyValue("src")));
- }
- async function parseWebFontRules(node, options) {
- if (node.ownerDocument == null) {
- throw new Error("Provided element is not within a Document");
- }
- const styleSheets = toArray2(node.ownerDocument.styleSheets);
- const cssRules = await getCSSRules(styleSheets, options);
- return getWebFontRules(cssRules);
- }
- async function getWebFontCSS(node, options) {
- const rules = await parseWebFontRules(node, options);
- const cssTexts = await Promise.all(rules.map((rule) => {
- const baseUrl = rule.parentStyleSheet ? rule.parentStyleSheet.href : null;
- return embedResources(rule.cssText, baseUrl, options);
- }));
- return cssTexts.join("\n");
- }
- async function embedWebFonts(clonedNode, options) {
- const cssText = options.fontEmbedCSS != null ? options.fontEmbedCSS : options.skipFonts ? null : await getWebFontCSS(clonedNode, options);
- if (cssText) {
- const styleNode = document.createElement("style");
- const sytleContent = document.createTextNode(cssText);
- styleNode.appendChild(sytleContent);
- if (clonedNode.firstChild) {
- clonedNode.insertBefore(styleNode, clonedNode.firstChild);
- } else {
- clonedNode.appendChild(styleNode);
- }
- }
- }
-
- // ../../../node_modules/html-to-image/es/index.js
- async function toSvg(node, options = {}) {
- const { width, height } = getImageSize(node, options);
- const clonedNode = await cloneNode(node, options, true);
- await embedWebFonts(clonedNode, options);
- await embedImages(clonedNode, options);
- applyStyle(clonedNode, options);
- const datauri = await nodeToDataURL(clonedNode, width, height);
- return datauri;
- }
- async function toCanvas(node, options = {}) {
- const { width, height } = getImageSize(node, options);
- const svg = await toSvg(node, options);
- const img = await createImage(svg);
- const canvas = document.createElement("canvas");
- const context = canvas.getContext("2d");
- const ratio = options.pixelRatio || getPixelRatio();
- const canvasWidth = options.canvasWidth || width;
- const canvasHeight = options.canvasHeight || height;
- canvas.width = canvasWidth * ratio;
- canvas.height = canvasHeight * ratio;
- if (!options.skipAutoScale) {
- checkCanvasDimensions(canvas);
- }
- canvas.style.width = `${canvasWidth}`;
- canvas.style.height = `${canvasHeight}`;
- if (options.backgroundColor) {
- context.fillStyle = options.backgroundColor;
- context.fillRect(0, 0, canvas.width, canvas.height);
- }
- context.drawImage(img, 0, 0, canvas.width, canvas.height);
- return canvas;
- }
- async function toBlob(node, options = {}) {
- const canvas = await toCanvas(node, options);
- const blob = await canvasToBlob(canvas);
- return blob;
- }
-
// helpers/path.js
function stripExtension(filename) {
return filename.substring(0, filename.lastIndexOf(".")) || filename;
}
function basename(path) {
@@ -22433,22 +29524,32 @@
function blobToFile(blob, fileName, type) {
return new File([blob], fileName, { type });
}
// helpers/screenshot.js
+ var screenshotDefaultOptions = {
+ useCORS: true,
+ logging: false
+ };
function generateScreenshotFilename(name = null, ext = null) {
name = [stripExtension(name || "screenshot"), (/* @__PURE__ */ new Date()).getTime()].join("-");
return ext ? `${name}.${ext}` : name;
}
async function captureElementScreenshot(el, filename, opts = {}) {
if (isObject2(filename)) {
filename = null;
opts = filename;
}
- filename = generateScreenshotFilename(filename, "jpg");
- const imageBlob = await toBlob(el, opts);
- return blobToFile(imageBlob, filename, "image/jpg");
+ const screenshotFilename = generateScreenshotFilename(filename, "jpg");
+ const screenshotOptions = __spreadValues(__spreadValues({}, screenshotDefaultOptions), opts);
+ const canvas = await (0, import_html2canvas.default)(el, screenshotOptions);
+ const imageBlob = await new Promise((resolve, reject) => {
+ canvas.toBlob((result) => {
+ return result ? resolve(result) : reject(new Error("Screenshot could not be created"));
+ });
+ });
+ return blobToFile(imageBlob, screenshotFilename, "image/jpg");
}
// helpers/color.js
function isDark(color) {
let r3;
@@ -22483,25 +29584,11 @@
}
function formatHex(str) {
return `#${str.toUpperCase().replace("#", "")}`;
}
- // helpers/turbo_events.js
- function wasSuccessful(event) {
- return getEventDetail(event).success;
- }
- function getEventDetail(obj) {
- return obj instanceof CustomEvent ? obj.detail : obj;
- }
-
// ../../components/coco/app/blocks/slide_editor/slide_editor.js
- var thumbnailOpts = {
- canvasWidth: 800,
- canvasHeight: 500,
- quality: 0.7,
- pixelRatio: 1
- };
var slide_editor_default = CocoComponent("appSlideEditor", (data2) => {
const initialData = {
layout: data2.layout,
title: data2.title,
text1: data2.text1,
@@ -22523,11 +29610,10 @@
thumbnailFile: null,
get bgImagePicker() {
return getData(this.$root.querySelector("[data-role='bg-image-picker']"));
},
init() {
- this.$watch("thumbnailFile", () => this._syncThumbnailField());
this.$watch("errors", (errors) => {
errors.forEach((error2) => console.error(error2.message));
});
this.$nextTick(() => {
this._fields.forEach((name) => {
@@ -22552,126 +29638,111 @@
} else {
event.preventDefault();
}
},
async save() {
- this.errors.length = 0;
+ if (this.saving)
+ return;
+ this.clearErrors();
this.saving = true;
- if (this.shouldGenerateThumbnail) {
+ if (this.$refs.thumbnail) {
try {
await this._generateThumbnail();
} catch (error2) {
this.thumbnailFile = null;
message = error2.message || "Error generating slide thumbnail";
this._handleSaveError(message, { error: error2 });
return;
}
}
- if (this.$refs.form) {
- this.$refs.form.querySelector("form").requestSubmit();
+ const form = this.$refs.form && this.$refs.form.querySelector("form");
+ if (form && form.dataset.submit !== "false") {
+ form.requestSubmit();
} else {
this.submitSuccess();
}
},
- submitEnd(event) {
- handler = wasSuccessful(event) ? "submitSuccess" : "submitError";
- this[handler](event);
- },
submitSuccess() {
this.history.clear();
this._fields.forEach((name) => this.saved[name] = this[name]);
this.saving = false;
- console.info("Custom slide saved");
+ console.info("Slide changes saved");
this.$dispatch("slide:save-end", { success: true });
},
submitError($event) {
message = "Error saving slide";
this._handleSaveError(message, { event: $event });
},
directUploadError($event) {
$event.preventDefault();
this._handleSaveError($event.detail.error, { event: $event });
},
- syncImageField(el, image) {
+ clearErrors() {
+ this.errors.length = 0;
+ },
+ syncFileInput(input, file) {
const dataTransfer = new DataTransfer();
- if (image.file && image.file instanceof File) {
- dataTransfer.items.add(image.file);
+ if (file && file instanceof File) {
+ dataTransfer.items.add(file);
}
- el.files = dataTransfer.files;
+ input.files = dataTransfer.files;
},
- input: {
- layout: { "x-model.fill": "layout" },
- title: { "x-model.fill": "title" },
- text1: { "x-model.fill": "text1" },
- bgColor: { "x-model.fill": "bgColorHex" },
- textColor: { "x-model.fill": "textColorHex" },
- bgImage: { "x-effect": "syncImageField($el, bgImage)" },
- bgImagePurge: { ":checked": "!hasBgImage" }
- },
get hasBgImage() {
return !!(this.bgImage && this.bgImage.data);
},
get bgColorHex() {
return this.bgColor.replace("#", "");
},
get textColorHex() {
return this.textColor.replace("#", "");
},
- get slideStyles() {
- return {
- backgroundColor: this.bgColor,
- color: this.textColor,
- backgroundImage: this.hasBgImage ? `url('${this.bgImage.data}')` : "none"
- };
- },
- get slideClasses() {
- return {
- "slide-bg-dark": this.isDarkBg,
- "slide-bg-light": !this.isDarkBg
- };
- },
get isDarkBg() {
return this.hasBgImage || this.bgColor ? isDark(this.bgColor) : false;
},
- get shouldGenerateThumbnail() {
- return !!this.$refs.thumbnail;
- },
get _fields() {
return Object.keys(initialData);
},
async _generateThumbnail() {
- const screenshotSlide = this.$refs.screenshot.firstElementChild;
- for (const [key, value] of Object.entries(this.slideStyles)) {
- screenshotSlide.style[key] = value;
- }
this.thumbnailFile = await captureElementScreenshot(
- screenshotSlide,
- "slide-thumbnail",
- thumbnailOpts
+ this.$refs.thumbnail.firstElementChild,
+ "slide-thumbnail"
);
console.info(
"Slide thumbnail generated",
`${this.thumbnailFile.size / 1e3}KiB`
);
},
- // Called whenever a new thumbnail is generated,
- // adds the thumbnail file to the hidden thumbnail file
- // input upload field.
- _syncThumbnailField() {
- const dataTransfer = new DataTransfer();
- if (this.thumbnailFile instanceof File) {
- dataTransfer.items.add(this.thumbnailFile);
- }
- this.$refs.thumbnail.files = dataTransfer.files;
- },
_handleSaveError(message2 = "Error saving slide", context = {}) {
this.errors.push({ message: message2, context });
- this.errors.forEach((err) => {
- console.log(err.message);
- });
this.saving = false;
this.$dispatch("slide:save-end", { success: false });
+ },
+ /* bindings */
+ slide: {
+ [":style"]() {
+ return {
+ backgroundColor: this.bgColor,
+ color: this.textColor,
+ backgroundImage: this.hasBgImage ? `url('${this.bgImage.data}')` : "none"
+ };
+ },
+ [":class"]() {
+ return {
+ "slide-bg-dark": this.isDarkBg,
+ "slide-bg-light": !this.isDarkBg
+ };
+ }
+ },
+ input: {
+ layout: { "x-model.fill": "layout" },
+ title: { "x-model.fill": "title" },
+ text1: { "x-model.fill": "text1" },
+ bgColor: { "x-model.fill": "bgColorHex" },
+ textColor: { "x-model.fill": "textColorHex" },
+ bgImage: { "x-effect": "syncFileInput($el, bgImage.file)" },
+ bgImagePurge: { ":checked": "!hasBgImage" },
+ thumbnailImage: { "x-effect": "syncFileInput($el, thumbnailFile)" }
}
});
});
// ../../components/coco/app/elements/alert/alert.js
@@ -24895,9 +31966,30 @@
* Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
* Released under MIT license <https://lodash.com/license>
* Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
* Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
*)
+
+html2canvas/dist/html2canvas.js:
+ (*!
+ * html2canvas 1.4.1 <https://html2canvas.hertzen.com>
+ * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>
+ * Released under MIT License
+ *)
+ (*! *****************************************************************************
+ Copyright (c) Microsoft Corporation.
+
+ Permission to use, copy, modify, and/or distribute this software for any
+ purpose with or without fee is hereby granted.
+
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ PERFORMANCE OF THIS SOFTWARE.
+ ***************************************************************************** *)
@alpinejs/focus/dist/module.esm.js:
(*!
* tabbable 5.2.1
* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE