{"ast":null,"code":"/*!\n * html2canvas 1.4.1 <https://html2canvas.hertzen.com>\n * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>\n * Released under MIT License\n */\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.html2canvas = factory());\n})(this, function () {\n  'use strict';\n\n  /*! *****************************************************************************\r\n  Copyright (c) Microsoft Corporation.\r\n    Permission to use, copy, modify, and/or distribute this software for any\r\n  purpose with or without fee is hereby granted.\r\n    THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\n  REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\n  AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\n  INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\n  LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\n  OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\n  PERFORMANCE OF THIS SOFTWARE.\r\n  ***************************************************************************** */\n  /* global Reflect, Promise */\n  var extendStatics = function (d, b) {\n    extendStatics = Object.setPrototypeOf || {\n      __proto__: []\n    } instanceof Array && function (d, b) {\n      d.__proto__ = b;\n    } || function (d, b) {\n      for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n    };\n    return extendStatics(d, b);\n  };\n  function __extends(d, b) {\n    if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n    extendStatics(d, b);\n    function __() {\n      this.constructor = d;\n    }\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n  }\n  var __assign = function () {\n    __assign = Object.assign || function __assign(t) {\n      for (var s, i = 1, n = arguments.length; i < n; i++) {\n        s = arguments[i];\n        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n      return t;\n    };\n    return __assign.apply(this, arguments);\n  };\n  function __awaiter(thisArg, _arguments, P, generator) {\n    function adopt(value) {\n      return value instanceof P ? value : new P(function (resolve) {\n        resolve(value);\n      });\n    }\n    return new (P || (P = Promise))(function (resolve, reject) {\n      function fulfilled(value) {\n        try {\n          step(generator.next(value));\n        } catch (e) {\n          reject(e);\n        }\n      }\n      function rejected(value) {\n        try {\n          step(generator[\"throw\"](value));\n        } catch (e) {\n          reject(e);\n        }\n      }\n      function step(result) {\n        result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n      }\n      step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n  }\n  function __generator(thisArg, body) {\n    var _ = {\n        label: 0,\n        sent: function () {\n          if (t[0] & 1) throw t[1];\n          return t[1];\n        },\n        trys: [],\n        ops: []\n      },\n      f,\n      y,\n      t,\n      g;\n    return g = {\n      next: verb(0),\n      \"throw\": verb(1),\n      \"return\": verb(2)\n    }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n      return this;\n    }), g;\n    function verb(n) {\n      return function (v) {\n        return step([n, v]);\n      };\n    }\n    function step(op) {\n      if (f) throw new TypeError(\"Generator is already executing.\");\n      while (_) try {\n        if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n        if (y = 0, t) op = [op[0] & 2, t.value];\n        switch (op[0]) {\n          case 0:\n          case 1:\n            t = op;\n            break;\n          case 4:\n            _.label++;\n            return {\n              value: op[1],\n              done: false\n            };\n          case 5:\n            _.label++;\n            y = op[1];\n            op = [0];\n            continue;\n          case 7:\n            op = _.ops.pop();\n            _.trys.pop();\n            continue;\n          default:\n            if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n              _ = 0;\n              continue;\n            }\n            if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n              _.label = op[1];\n              break;\n            }\n            if (op[0] === 6 && _.label < t[1]) {\n              _.label = t[1];\n              t = op;\n              break;\n            }\n            if (t && _.label < t[2]) {\n              _.label = t[2];\n              _.ops.push(op);\n              break;\n            }\n            if (t[2]) _.ops.pop();\n            _.trys.pop();\n            continue;\n        }\n        op = body.call(thisArg, _);\n      } catch (e) {\n        op = [6, e];\n        y = 0;\n      } finally {\n        f = t = 0;\n      }\n      if (op[0] & 5) throw op[1];\n      return {\n        value: op[0] ? op[1] : void 0,\n        done: true\n      };\n    }\n  }\n  function __spreadArray(to, from, pack) {\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n      if (ar || !(i in from)) {\n        if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n        ar[i] = from[i];\n      }\n    }\n    return to.concat(ar || from);\n  }\n  var Bounds = /** @class */function () {\n    function Bounds(left, top, width, height) {\n      this.left = left;\n      this.top = top;\n      this.width = width;\n      this.height = height;\n    }\n    Bounds.prototype.add = function (x, y, w, h) {\n      return new Bounds(this.left + x, this.top + y, this.width + w, this.height + h);\n    };\n    Bounds.fromClientRect = function (context, clientRect) {\n      return new Bounds(clientRect.left + context.windowBounds.left, clientRect.top + context.windowBounds.top, clientRect.width, clientRect.height);\n    };\n    Bounds.fromDOMRectList = function (context, domRectList) {\n      var domRect = Array.from(domRectList).find(function (rect) {\n        return rect.width !== 0;\n      });\n      return domRect ? new Bounds(domRect.left + context.windowBounds.left, domRect.top + context.windowBounds.top, domRect.width, domRect.height) : Bounds.EMPTY;\n    };\n    Bounds.EMPTY = new Bounds(0, 0, 0, 0);\n    return Bounds;\n  }();\n  var parseBounds = function (context, node) {\n    return Bounds.fromClientRect(context, node.getBoundingClientRect());\n  };\n  var parseDocumentSize = function (document) {\n    var body = document.body;\n    var documentElement = document.documentElement;\n    if (!body || !documentElement) {\n      throw new Error(\"Unable to get document size\");\n    }\n    var width = Math.max(Math.max(body.scrollWidth, documentElement.scrollWidth), Math.max(body.offsetWidth, documentElement.offsetWidth), Math.max(body.clientWidth, documentElement.clientWidth));\n    var height = Math.max(Math.max(body.scrollHeight, documentElement.scrollHeight), Math.max(body.offsetHeight, documentElement.offsetHeight), Math.max(body.clientHeight, documentElement.clientHeight));\n    return new Bounds(0, 0, width, height);\n  };\n\n  /*\n   * css-line-break 2.1.0 <https://github.com/niklasvh/css-line-break#readme>\n   * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>\n   * Released under MIT License\n   */\n  var toCodePoints$1 = function (str) {\n    var codePoints = [];\n    var i = 0;\n    var length = str.length;\n    while (i < length) {\n      var value = str.charCodeAt(i++);\n      if (value >= 0xd800 && value <= 0xdbff && i < length) {\n        var extra = str.charCodeAt(i++);\n        if ((extra & 0xfc00) === 0xdc00) {\n          codePoints.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000);\n        } else {\n          codePoints.push(value);\n          i--;\n        }\n      } else {\n        codePoints.push(value);\n      }\n    }\n    return codePoints;\n  };\n  var fromCodePoint$1 = function () {\n    var codePoints = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n      codePoints[_i] = arguments[_i];\n    }\n    if (String.fromCodePoint) {\n      return String.fromCodePoint.apply(String, codePoints);\n    }\n    var length = codePoints.length;\n    if (!length) {\n      return '';\n    }\n    var codeUnits = [];\n    var index = -1;\n    var result = '';\n    while (++index < length) {\n      var codePoint = codePoints[index];\n      if (codePoint <= 0xffff) {\n        codeUnits.push(codePoint);\n      } else {\n        codePoint -= 0x10000;\n        codeUnits.push((codePoint >> 10) + 0xd800, codePoint % 0x400 + 0xdc00);\n      }\n      if (index + 1 === length || codeUnits.length > 0x4000) {\n        result += String.fromCharCode.apply(String, codeUnits);\n        codeUnits.length = 0;\n      }\n    }\n    return result;\n  };\n  var chars$2 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n  // Use a lookup table to find the index.\n  var lookup$2 = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\n  for (var i$2 = 0; i$2 < chars$2.length; i$2++) {\n    lookup$2[chars$2.charCodeAt(i$2)] = i$2;\n  }\n\n  /*\n   * utrie 1.0.2 <https://github.com/niklasvh/utrie>\n   * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>\n   * Released under MIT License\n   */\n  var chars$1$1 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n  // Use a lookup table to find the index.\n  var lookup$1$1 = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\n  for (var i$1$1 = 0; i$1$1 < chars$1$1.length; i$1$1++) {\n    lookup$1$1[chars$1$1.charCodeAt(i$1$1)] = i$1$1;\n  }\n  var decode$1 = function (base64) {\n    var bufferLength = base64.length * 0.75,\n      len = base64.length,\n      i,\n      p = 0,\n      encoded1,\n      encoded2,\n      encoded3,\n      encoded4;\n    if (base64[base64.length - 1] === '=') {\n      bufferLength--;\n      if (base64[base64.length - 2] === '=') {\n        bufferLength--;\n      }\n    }\n    var buffer = typeof ArrayBuffer !== 'undefined' && typeof Uint8Array !== 'undefined' && typeof Uint8Array.prototype.slice !== 'undefined' ? new ArrayBuffer(bufferLength) : new Array(bufferLength);\n    var bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\n    for (i = 0; i < len; i += 4) {\n      encoded1 = lookup$1$1[base64.charCodeAt(i)];\n      encoded2 = lookup$1$1[base64.charCodeAt(i + 1)];\n      encoded3 = lookup$1$1[base64.charCodeAt(i + 2)];\n      encoded4 = lookup$1$1[base64.charCodeAt(i + 3)];\n      bytes[p++] = encoded1 << 2 | encoded2 >> 4;\n      bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2;\n      bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63;\n    }\n    return buffer;\n  };\n  var polyUint16Array$1 = function (buffer) {\n    var length = buffer.length;\n    var bytes = [];\n    for (var i = 0; i < length; i += 2) {\n      bytes.push(buffer[i + 1] << 8 | buffer[i]);\n    }\n    return bytes;\n  };\n  var polyUint32Array$1 = function (buffer) {\n    var length = buffer.length;\n    var bytes = [];\n    for (var i = 0; i < length; i += 4) {\n      bytes.push(buffer[i + 3] << 24 | buffer[i + 2] << 16 | buffer[i + 1] << 8 | buffer[i]);\n    }\n    return bytes;\n  };\n\n  /** Shift size for getting the index-2 table offset. */\n  var UTRIE2_SHIFT_2$1 = 5;\n  /** Shift size for getting the index-1 table offset. */\n  var UTRIE2_SHIFT_1$1 = 6 + 5;\n  /**\n   * Shift size for shifting left the index array values.\n   * Increases possible data size with 16-bit index values at the cost\n   * of compactability.\n   * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY.\n   */\n  var UTRIE2_INDEX_SHIFT$1 = 2;\n  /**\n   * Difference between the two shift sizes,\n   * for getting an index-1 offset from an index-2 offset. 6=11-5\n   */\n  var UTRIE2_SHIFT_1_2$1 = UTRIE2_SHIFT_1$1 - UTRIE2_SHIFT_2$1;\n  /**\n   * The part of the index-2 table for U+D800..U+DBFF stores values for\n   * lead surrogate code _units_ not code _points_.\n   * Values for lead surrogate code _points_ are indexed with this portion of the table.\n   * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.)\n   */\n  var UTRIE2_LSCP_INDEX_2_OFFSET$1 = 0x10000 >> UTRIE2_SHIFT_2$1;\n  /** Number of entries in a data block. 32=0x20 */\n  var UTRIE2_DATA_BLOCK_LENGTH$1 = 1 << UTRIE2_SHIFT_2$1;\n  /** Mask for getting the lower bits for the in-data-block offset. */\n  var UTRIE2_DATA_MASK$1 = UTRIE2_DATA_BLOCK_LENGTH$1 - 1;\n  var UTRIE2_LSCP_INDEX_2_LENGTH$1 = 0x400 >> UTRIE2_SHIFT_2$1;\n  /** Count the lengths of both BMP pieces. 2080=0x820 */\n  var UTRIE2_INDEX_2_BMP_LENGTH$1 = UTRIE2_LSCP_INDEX_2_OFFSET$1 + UTRIE2_LSCP_INDEX_2_LENGTH$1;\n  /**\n   * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.\n   * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2.\n   */\n  var UTRIE2_UTF8_2B_INDEX_2_OFFSET$1 = UTRIE2_INDEX_2_BMP_LENGTH$1;\n  var UTRIE2_UTF8_2B_INDEX_2_LENGTH$1 = 0x800 >> 6; /* U+0800 is the first code point after 2-byte UTF-8 */\n  /**\n   * The index-1 table, only used for supplementary code points, at offset 2112=0x840.\n   * Variable length, for code points up to highStart, where the last single-value range starts.\n   * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1.\n   * (For 0x100000 supplementary code points U+10000..U+10ffff.)\n   *\n   * The part of the index-2 table for supplementary code points starts\n   * after this index-1 table.\n   *\n   * Both the index-1 table and the following part of the index-2 table\n   * are omitted completely if there is only BMP data.\n   */\n  var UTRIE2_INDEX_1_OFFSET$1 = UTRIE2_UTF8_2B_INDEX_2_OFFSET$1 + UTRIE2_UTF8_2B_INDEX_2_LENGTH$1;\n  /**\n   * Number of index-1 entries for the BMP. 32=0x20\n   * This part of the index-1 table is omitted from the serialized form.\n   */\n  var UTRIE2_OMITTED_BMP_INDEX_1_LENGTH$1 = 0x10000 >> UTRIE2_SHIFT_1$1;\n  /** Number of entries in an index-2 block. 64=0x40 */\n  var UTRIE2_INDEX_2_BLOCK_LENGTH$1 = 1 << UTRIE2_SHIFT_1_2$1;\n  /** Mask for getting the lower bits for the in-index-2-block offset. */\n  var UTRIE2_INDEX_2_MASK$1 = UTRIE2_INDEX_2_BLOCK_LENGTH$1 - 1;\n  var slice16$1 = function (view, start, end) {\n    if (view.slice) {\n      return view.slice(start, end);\n    }\n    return new Uint16Array(Array.prototype.slice.call(view, start, end));\n  };\n  var slice32$1 = function (view, start, end) {\n    if (view.slice) {\n      return view.slice(start, end);\n    }\n    return new Uint32Array(Array.prototype.slice.call(view, start, end));\n  };\n  var createTrieFromBase64$1 = function (base64, _byteLength) {\n    var buffer = decode$1(base64);\n    var view32 = Array.isArray(buffer) ? polyUint32Array$1(buffer) : new Uint32Array(buffer);\n    var view16 = Array.isArray(buffer) ? polyUint16Array$1(buffer) : new Uint16Array(buffer);\n    var headerLength = 24;\n    var index = slice16$1(view16, headerLength / 2, view32[4] / 2);\n    var data = view32[5] === 2 ? slice16$1(view16, (headerLength + view32[4]) / 2) : slice32$1(view32, Math.ceil((headerLength + view32[4]) / 4));\n    return new Trie$1(view32[0], view32[1], view32[2], view32[3], index, data);\n  };\n  var Trie$1 = /** @class */function () {\n    function Trie(initialValue, errorValue, highStart, highValueIndex, index, data) {\n      this.initialValue = initialValue;\n      this.errorValue = errorValue;\n      this.highStart = highStart;\n      this.highValueIndex = highValueIndex;\n      this.index = index;\n      this.data = data;\n    }\n    /**\n     * Get the value for a code point as stored in the Trie.\n     *\n     * @param codePoint the code point\n     * @return the value\n     */\n    Trie.prototype.get = function (codePoint) {\n      var ix;\n      if (codePoint >= 0) {\n        if (codePoint < 0x0d800 || codePoint > 0x0dbff && codePoint <= 0x0ffff) {\n          // Ordinary BMP code point, excluding leading surrogates.\n          // BMP uses a single level lookup.  BMP index starts at offset 0 in the Trie2 index.\n          // 16 bit data is stored in the index array itself.\n          ix = this.index[codePoint >> UTRIE2_SHIFT_2$1];\n          ix = (ix << UTRIE2_INDEX_SHIFT$1) + (codePoint & UTRIE2_DATA_MASK$1);\n          return this.data[ix];\n        }\n        if (codePoint <= 0xffff) {\n          // Lead Surrogate Code Point.  A Separate index section is stored for\n          // lead surrogate code units and code points.\n          //   The main index has the code unit data.\n          //   For this function, we need the code point data.\n          // Note: this expression could be refactored for slightly improved efficiency, but\n          //       surrogate code points will be so rare in practice that it's not worth it.\n          ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET$1 + (codePoint - 0xd800 >> UTRIE2_SHIFT_2$1)];\n          ix = (ix << UTRIE2_INDEX_SHIFT$1) + (codePoint & UTRIE2_DATA_MASK$1);\n          return this.data[ix];\n        }\n        if (codePoint < this.highStart) {\n          // Supplemental code point, use two-level lookup.\n          ix = UTRIE2_INDEX_1_OFFSET$1 - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH$1 + (codePoint >> UTRIE2_SHIFT_1$1);\n          ix = this.index[ix];\n          ix += codePoint >> UTRIE2_SHIFT_2$1 & UTRIE2_INDEX_2_MASK$1;\n          ix = this.index[ix];\n          ix = (ix << UTRIE2_INDEX_SHIFT$1) + (codePoint & UTRIE2_DATA_MASK$1);\n          return this.data[ix];\n        }\n        if (codePoint <= 0x10ffff) {\n          return this.data[this.highValueIndex];\n        }\n      }\n      // Fall through.  The code point is outside of the legal range of 0..0x10ffff.\n      return this.errorValue;\n    };\n    return Trie;\n  }();\n\n  /*\n   * base64-arraybuffer 1.0.2 <https://github.com/niklasvh/base64-arraybuffer>\n   * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>\n   * Released under MIT License\n   */\n  var chars$3 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n  // Use a lookup table to find the index.\n  var lookup$3 = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\n  for (var i$3 = 0; i$3 < chars$3.length; i$3++) {\n    lookup$3[chars$3.charCodeAt(i$3)] = i$3;\n  }\n  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==';\n  var LETTER_NUMBER_MODIFIER = 50;\n  // Non-tailorable Line Breaking Classes\n  var BK = 1; //  Cause a line break (after)\n  var CR$1 = 2; //  Cause a line break (after), except between CR and LF\n  var LF$1 = 3; //  Cause a line break (after)\n  var CM = 4; //  Prohibit a line break between the character and the preceding character\n  var NL = 5; //  Cause a line break (after)\n  var WJ = 7; //  Prohibit line breaks before and after\n  var ZW = 8; //  Provide a break opportunity\n  var GL = 9; //  Prohibit line breaks before and after\n  var SP = 10; // Enable indirect line breaks\n  var ZWJ$1 = 11; // Prohibit line breaks within joiner sequences\n  // Break Opportunities\n  var B2 = 12; //  Provide a line break opportunity before and after the character\n  var BA = 13; //  Generally provide a line break opportunity after the character\n  var BB = 14; //  Generally provide a line break opportunity before the character\n  var HY = 15; //  Provide a line break opportunity after the character, except in numeric context\n  var CB = 16; //   Provide a line break opportunity contingent on additional information\n  // Characters Prohibiting Certain Breaks\n  var CL = 17; //  Prohibit line breaks before\n  var CP = 18; //  Prohibit line breaks before\n  var EX = 19; //  Prohibit line breaks before\n  var IN = 20; //  Allow only indirect line breaks between pairs\n  var NS = 21; //  Allow only indirect line breaks before\n  var OP = 22; //  Prohibit line breaks after\n  var QU = 23; //  Act like they are both opening and closing\n  // Numeric Context\n  var IS = 24; //  Prevent breaks after any and before numeric\n  var NU = 25; //  Form numeric expressions for line breaking purposes\n  var PO = 26; //  Do not break following a numeric expression\n  var PR = 27; //  Do not break in front of a numeric expression\n  var SY = 28; //  Prevent a break before; and allow a break after\n  // Other Characters\n  var AI = 29; //  Act like AL when the resolvedEAW is N; otherwise; act as ID\n  var AL = 30; //  Are alphabetic characters or symbols that are used with alphabetic characters\n  var CJ = 31; //  Treat as NS or ID for strict or normal breaking.\n  var EB = 32; //  Do not break from following Emoji Modifier\n  var EM = 33; //  Do not break from preceding Emoji Base\n  var H2 = 34; //  Form Korean syllable blocks\n  var H3 = 35; //  Form Korean syllable blocks\n  var HL = 36; //  Do not break around a following hyphen; otherwise act as Alphabetic\n  var ID = 37; //  Break before or after; except in some numeric context\n  var JL = 38; //  Form Korean syllable blocks\n  var JV = 39; //  Form Korean syllable blocks\n  var JT = 40; //  Form Korean syllable blocks\n  var RI$1 = 41; //  Keep pairs together. For pairs; break before and after other classes\n  var SA = 42; //  Provide a line break opportunity contingent on additional, language-specific context analysis\n  var XX = 43; //  Have as yet unknown line breaking behavior or unassigned code positions\n  var ea_OP = [0x2329, 0xff08];\n  var BREAK_MANDATORY = '!';\n  var BREAK_NOT_ALLOWED$1 = '×';\n  var BREAK_ALLOWED$1 = '÷';\n  var UnicodeTrie$1 = createTrieFromBase64$1(base64$1);\n  var ALPHABETICS = [AL, HL];\n  var HARD_LINE_BREAKS = [BK, CR$1, LF$1, NL];\n  var SPACE$1 = [SP, ZW];\n  var PREFIX_POSTFIX = [PR, PO];\n  var LINE_BREAKS = HARD_LINE_BREAKS.concat(SPACE$1);\n  var KOREAN_SYLLABLE_BLOCK = [JL, JV, JT, H2, H3];\n  var HYPHEN = [HY, BA];\n  var codePointsToCharacterClasses = function (codePoints, lineBreak) {\n    if (lineBreak === void 0) {\n      lineBreak = 'strict';\n    }\n    var types = [];\n    var indices = [];\n    var categories = [];\n    codePoints.forEach(function (codePoint, index) {\n      var classType = UnicodeTrie$1.get(codePoint);\n      if (classType > LETTER_NUMBER_MODIFIER) {\n        categories.push(true);\n        classType -= LETTER_NUMBER_MODIFIER;\n      } else {\n        categories.push(false);\n      }\n      if (['normal', 'auto', 'loose'].indexOf(lineBreak) !== -1) {\n        // U+2010, – U+2013, 〜 U+301C, ゠ U+30A0\n        if ([0x2010, 0x2013, 0x301c, 0x30a0].indexOf(codePoint) !== -1) {\n          indices.push(index);\n          return types.push(CB);\n        }\n      }\n      if (classType === CM || classType === ZWJ$1) {\n        // LB10 Treat any remaining combining mark or ZWJ as AL.\n        if (index === 0) {\n          indices.push(index);\n          return types.push(AL);\n        }\n        // LB9 Do not break a combining character sequence; treat it as if it has the line breaking class of\n        // the base character in all of the following rules. Treat ZWJ as if it were CM.\n        var prev = types[index - 1];\n        if (LINE_BREAKS.indexOf(prev) === -1) {\n          indices.push(indices[index - 1]);\n          return types.push(prev);\n        }\n        indices.push(index);\n        return types.push(AL);\n      }\n      indices.push(index);\n      if (classType === CJ) {\n        return types.push(lineBreak === 'strict' ? NS : ID);\n      }\n      if (classType === SA) {\n        return types.push(AL);\n      }\n      if (classType === AI) {\n        return types.push(AL);\n      }\n      // For supplementary characters, a useful default is to treat characters in the range 10000..1FFFD as AL\n      // and characters in the ranges 20000..2FFFD and 30000..3FFFD as ID, until the implementation can be revised\n      // to take into account the actual line breaking properties for these characters.\n      if (classType === XX) {\n        if (codePoint >= 0x20000 && codePoint <= 0x2fffd || codePoint >= 0x30000 && codePoint <= 0x3fffd) {\n          return types.push(ID);\n        } else {\n          return types.push(AL);\n        }\n      }\n      types.push(classType);\n    });\n    return [indices, types, categories];\n  };\n  var isAdjacentWithSpaceIgnored = function (a, b, currentIndex, classTypes) {\n    var current = classTypes[currentIndex];\n    if (Array.isArray(a) ? a.indexOf(current) !== -1 : a === current) {\n      var i = currentIndex;\n      while (i <= classTypes.length) {\n        i++;\n        var next = classTypes[i];\n        if (next === b) {\n          return true;\n        }\n        if (next !== SP) {\n          break;\n        }\n      }\n    }\n    if (current === SP) {\n      var i = currentIndex;\n      while (i > 0) {\n        i--;\n        var prev = classTypes[i];\n        if (Array.isArray(a) ? a.indexOf(prev) !== -1 : a === prev) {\n          var n = currentIndex;\n          while (n <= classTypes.length) {\n            n++;\n            var next = classTypes[n];\n            if (next === b) {\n              return true;\n            }\n            if (next !== SP) {\n              break;\n            }\n          }\n        }\n        if (prev !== SP) {\n          break;\n        }\n      }\n    }\n    return false;\n  };\n  var previousNonSpaceClassType = function (currentIndex, classTypes) {\n    var i = currentIndex;\n    while (i >= 0) {\n      var type = classTypes[i];\n      if (type === SP) {\n        i--;\n      } else {\n        return type;\n      }\n    }\n    return 0;\n  };\n  var _lineBreakAtIndex = function (codePoints, classTypes, indicies, index, forbiddenBreaks) {\n    if (indicies[index] === 0) {\n      return BREAK_NOT_ALLOWED$1;\n    }\n    var currentIndex = index - 1;\n    if (Array.isArray(forbiddenBreaks) && forbiddenBreaks[currentIndex] === true) {\n      return BREAK_NOT_ALLOWED$1;\n    }\n    var beforeIndex = currentIndex - 1;\n    var afterIndex = currentIndex + 1;\n    var current = classTypes[currentIndex];\n    // LB4 Always break after hard line breaks.\n    // LB5 Treat CR followed by LF, as well as CR, LF, and NL as hard line breaks.\n    var before = beforeIndex >= 0 ? classTypes[beforeIndex] : 0;\n    var next = classTypes[afterIndex];\n    if (current === CR$1 && next === LF$1) {\n      return BREAK_NOT_ALLOWED$1;\n    }\n    if (HARD_LINE_BREAKS.indexOf(current) !== -1) {\n      return BREAK_MANDATORY;\n    }\n    // LB6 Do not break before hard line breaks.\n    if (HARD_LINE_BREAKS.indexOf(next) !== -1) {\n      return BREAK_NOT_ALLOWED$1;\n    }\n    // LB7 Do not break before spaces or zero width space.\n    if (SPACE$1.indexOf(next) !== -1) {\n      return BREAK_NOT_ALLOWED$1;\n    }\n    // LB8 Break before any character following a zero-width space, even if one or more spaces intervene.\n    if (previousNonSpaceClassType(currentIndex, classTypes) === ZW) {\n      return BREAK_ALLOWED$1;\n    }\n    // LB8a Do not break after a zero width joiner.\n    if (UnicodeTrie$1.get(codePoints[currentIndex]) === ZWJ$1) {\n      return BREAK_NOT_ALLOWED$1;\n    }\n    // zwj emojis\n    if ((current === EB || current === EM) && UnicodeTrie$1.get(codePoints[afterIndex]) === ZWJ$1) {\n      return BREAK_NOT_ALLOWED$1;\n    }\n    // LB11 Do not break before or after Word joiner and related characters.\n    if (current === WJ || next === WJ) {\n      return BREAK_NOT_ALLOWED$1;\n    }\n    // LB12 Do not break after NBSP and related characters.\n    if (current === GL) {\n      return BREAK_NOT_ALLOWED$1;\n    }\n    // LB12a Do not break before NBSP and related characters, except after spaces and hyphens.\n    if ([SP, BA, HY].indexOf(current) === -1 && next === GL) {\n      return BREAK_NOT_ALLOWED$1;\n    }\n    // LB13 Do not break before ‘]’ or ‘!’ or ‘;’ or ‘/’, even after spaces.\n    if ([CL, CP, EX, IS, SY].indexOf(next) !== -1) {\n      return BREAK_NOT_ALLOWED$1;\n    }\n    // LB14 Do not break after ‘[’, even after spaces.\n    if (previousNonSpaceClassType(currentIndex, classTypes) === OP) {\n      return BREAK_NOT_ALLOWED$1;\n    }\n    // LB15 Do not break within ‘”[’, even with intervening spaces.\n    if (isAdjacentWithSpaceIgnored(QU, OP, currentIndex, classTypes)) {\n      return BREAK_NOT_ALLOWED$1;\n    }\n    // LB16 Do not break between closing punctuation and a nonstarter (lb=NS), even with intervening spaces.\n    if (isAdjacentWithSpaceIgnored([CL, CP], NS, currentIndex, classTypes)) {\n      return BREAK_NOT_ALLOWED$1;\n    }\n    // LB17 Do not break within ‘——’, even with intervening spaces.\n    if (isAdjacentWithSpaceIgnored(B2, B2, currentIndex, classTypes)) {\n      return BREAK_NOT_ALLOWED$1;\n    }\n    // LB18 Break after spaces.\n    if (current === SP) {\n      return BREAK_ALLOWED$1;\n    }\n    // LB19 Do not break before or after quotation marks, such as ‘ ” ’.\n    if (current === QU || next === QU) {\n      return BREAK_NOT_ALLOWED$1;\n    }\n    // LB20 Break before and after unresolved CB.\n    if (next === CB || current === CB) {\n      return BREAK_ALLOWED$1;\n    }\n    // LB21 Do not break before hyphen-minus, other hyphens, fixed-width spaces, small kana, and other non-starters, or after acute accents.\n    if ([BA, HY, NS].indexOf(next) !== -1 || current === BB) {\n      return BREAK_NOT_ALLOWED$1;\n    }\n    // LB21a Don't break after Hebrew + Hyphen.\n    if (before === HL && HYPHEN.indexOf(current) !== -1) {\n      return BREAK_NOT_ALLOWED$1;\n    }\n    // LB21b Don’t break between Solidus and Hebrew letters.\n    if (current === SY && next === HL) {\n      return BREAK_NOT_ALLOWED$1;\n    }\n    // LB22 Do not break before ellipsis.\n    if (next === IN) {\n      return BREAK_NOT_ALLOWED$1;\n    }\n    // LB23 Do not break between digits and letters.\n    if (ALPHABETICS.indexOf(next) !== -1 && current === NU || ALPHABETICS.indexOf(current) !== -1 && next === NU) {\n      return BREAK_NOT_ALLOWED$1;\n    }\n    // LB23a Do not break between numeric prefixes and ideographs, or between ideographs and numeric postfixes.\n    if (current === PR && [ID, EB, EM].indexOf(next) !== -1 || [ID, EB, EM].indexOf(current) !== -1 && next === PO) {\n      return BREAK_NOT_ALLOWED$1;\n    }\n    // LB24 Do not break between numeric prefix/postfix and letters, or between letters and prefix/postfix.\n    if (ALPHABETICS.indexOf(current) !== -1 && PREFIX_POSTFIX.indexOf(next) !== -1 || PREFIX_POSTFIX.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1) {\n      return BREAK_NOT_ALLOWED$1;\n    }\n    // LB25 Do not break between the following pairs of classes relevant to numbers:\n    if (\n    // (PR | PO) × ( OP | HY )? NU\n    [PR, PO].indexOf(current) !== -1 && (next === NU || [OP, HY].indexOf(next) !== -1 && classTypes[afterIndex + 1] === NU) ||\n    // ( OP | HY ) × NU\n    [OP, HY].indexOf(current) !== -1 && next === NU ||\n    // NU ×\t(NU | SY | IS)\n    current === NU && [NU, SY, IS].indexOf(next) !== -1) {\n      return BREAK_NOT_ALLOWED$1;\n    }\n    // NU (NU | SY | IS)* × (NU | SY | IS | CL | CP)\n    if ([NU, SY, IS, CL, CP].indexOf(next) !== -1) {\n      var prevIndex = currentIndex;\n      while (prevIndex >= 0) {\n        var type = classTypes[prevIndex];\n        if (type === NU) {\n          return BREAK_NOT_ALLOWED$1;\n        } else if ([SY, IS].indexOf(type) !== -1) {\n          prevIndex--;\n        } else {\n          break;\n        }\n      }\n    }\n    // NU (NU | SY | IS)* (CL | CP)? × (PO | PR))\n    if ([PR, PO].indexOf(next) !== -1) {\n      var prevIndex = [CL, CP].indexOf(current) !== -1 ? beforeIndex : currentIndex;\n      while (prevIndex >= 0) {\n        var type = classTypes[prevIndex];\n        if (type === NU) {\n          return BREAK_NOT_ALLOWED$1;\n        } else if ([SY, IS].indexOf(type) !== -1) {\n          prevIndex--;\n        } else {\n          break;\n        }\n      }\n    }\n    // LB26 Do not break a Korean syllable.\n    if (JL === current && [JL, JV, H2, H3].indexOf(next) !== -1 || [JV, H2].indexOf(current) !== -1 && [JV, JT].indexOf(next) !== -1 || [JT, H3].indexOf(current) !== -1 && next === JT) {\n      return BREAK_NOT_ALLOWED$1;\n    }\n    // LB27 Treat a Korean Syllable Block the same as ID.\n    if (KOREAN_SYLLABLE_BLOCK.indexOf(current) !== -1 && [IN, PO].indexOf(next) !== -1 || KOREAN_SYLLABLE_BLOCK.indexOf(next) !== -1 && current === PR) {\n      return BREAK_NOT_ALLOWED$1;\n    }\n    // LB28 Do not break between alphabetics (“at”).\n    if (ALPHABETICS.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1) {\n      return BREAK_NOT_ALLOWED$1;\n    }\n    // LB29 Do not break between numeric punctuation and alphabetics (“e.g.”).\n    if (current === IS && ALPHABETICS.indexOf(next) !== -1) {\n      return BREAK_NOT_ALLOWED$1;\n    }\n    // LB30 Do not break between letters, numbers, or ordinary symbols and opening or closing parentheses.\n    if (ALPHABETICS.concat(NU).indexOf(current) !== -1 && next === OP && ea_OP.indexOf(codePoints[afterIndex]) === -1 || ALPHABETICS.concat(NU).indexOf(next) !== -1 && current === CP) {\n      return BREAK_NOT_ALLOWED$1;\n    }\n    // LB30a Break between two regional indicator symbols if and only if there are an even number of regional\n    // indicators preceding the position of the break.\n    if (current === RI$1 && next === RI$1) {\n      var i = indicies[currentIndex];\n      var count = 1;\n      while (i > 0) {\n        i--;\n        if (classTypes[i] === RI$1) {\n          count++;\n        } else {\n          break;\n        }\n      }\n      if (count % 2 !== 0) {\n        return BREAK_NOT_ALLOWED$1;\n      }\n    }\n    // LB30b Do not break between an emoji base and an emoji modifier.\n    if (current === EB && next === EM) {\n      return BREAK_NOT_ALLOWED$1;\n    }\n    return BREAK_ALLOWED$1;\n  };\n  var cssFormattedClasses = function (codePoints, options) {\n    if (!options) {\n      options = {\n        lineBreak: 'normal',\n        wordBreak: 'normal'\n      };\n    }\n    var _a = codePointsToCharacterClasses(codePoints, options.lineBreak),\n      indicies = _a[0],\n      classTypes = _a[1],\n      isLetterNumber = _a[2];\n    if (options.wordBreak === 'break-all' || options.wordBreak === 'break-word') {\n      classTypes = classTypes.map(function (type) {\n        return [NU, AL, SA].indexOf(type) !== -1 ? ID : type;\n      });\n    }\n    var forbiddenBreakpoints = options.wordBreak === 'keep-all' ? isLetterNumber.map(function (letterNumber, i) {\n      return letterNumber && codePoints[i] >= 0x4e00 && codePoints[i] <= 0x9fff;\n    }) : undefined;\n    return [indicies, classTypes, forbiddenBreakpoints];\n  };\n  var Break = /** @class */function () {\n    function Break(codePoints, lineBreak, start, end) {\n      this.codePoints = codePoints;\n      this.required = lineBreak === BREAK_MANDATORY;\n      this.start = start;\n      this.end = end;\n    }\n    Break.prototype.slice = function () {\n      return fromCodePoint$1.apply(void 0, this.codePoints.slice(this.start, this.end));\n    };\n    return Break;\n  }();\n  var LineBreaker = function (str, options) {\n    var codePoints = toCodePoints$1(str);\n    var _a = cssFormattedClasses(codePoints, options),\n      indicies = _a[0],\n      classTypes = _a[1],\n      forbiddenBreakpoints = _a[2];\n    var length = codePoints.length;\n    var lastEnd = 0;\n    var nextIndex = 0;\n    return {\n      next: function () {\n        if (nextIndex >= length) {\n          return {\n            done: true,\n            value: null\n          };\n        }\n        var lineBreak = BREAK_NOT_ALLOWED$1;\n        while (nextIndex < length && (lineBreak = _lineBreakAtIndex(codePoints, classTypes, indicies, ++nextIndex, forbiddenBreakpoints)) === BREAK_NOT_ALLOWED$1) {}\n        if (lineBreak !== BREAK_NOT_ALLOWED$1 || nextIndex === length) {\n          var value = new Break(codePoints, lineBreak, lastEnd, nextIndex);\n          lastEnd = nextIndex;\n          return {\n            value: value,\n            done: false\n          };\n        }\n        return {\n          done: true,\n          value: null\n        };\n      }\n    };\n  };\n\n  // https://www.w3.org/TR/css-syntax-3\n  var FLAG_UNRESTRICTED = 1 << 0;\n  var FLAG_ID = 1 << 1;\n  var FLAG_INTEGER = 1 << 2;\n  var FLAG_NUMBER = 1 << 3;\n  var LINE_FEED = 0x000a;\n  var SOLIDUS = 0x002f;\n  var REVERSE_SOLIDUS = 0x005c;\n  var CHARACTER_TABULATION = 0x0009;\n  var SPACE = 0x0020;\n  var QUOTATION_MARK = 0x0022;\n  var EQUALS_SIGN = 0x003d;\n  var NUMBER_SIGN = 0x0023;\n  var DOLLAR_SIGN = 0x0024;\n  var PERCENTAGE_SIGN = 0x0025;\n  var APOSTROPHE = 0x0027;\n  var LEFT_PARENTHESIS = 0x0028;\n  var RIGHT_PARENTHESIS = 0x0029;\n  var LOW_LINE = 0x005f;\n  var HYPHEN_MINUS = 0x002d;\n  var EXCLAMATION_MARK = 0x0021;\n  var LESS_THAN_SIGN = 0x003c;\n  var GREATER_THAN_SIGN = 0x003e;\n  var COMMERCIAL_AT = 0x0040;\n  var LEFT_SQUARE_BRACKET = 0x005b;\n  var RIGHT_SQUARE_BRACKET = 0x005d;\n  var CIRCUMFLEX_ACCENT = 0x003d;\n  var LEFT_CURLY_BRACKET = 0x007b;\n  var QUESTION_MARK = 0x003f;\n  var RIGHT_CURLY_BRACKET = 0x007d;\n  var VERTICAL_LINE = 0x007c;\n  var TILDE = 0x007e;\n  var CONTROL = 0x0080;\n  var REPLACEMENT_CHARACTER = 0xfffd;\n  var ASTERISK = 0x002a;\n  var PLUS_SIGN = 0x002b;\n  var COMMA = 0x002c;\n  var COLON = 0x003a;\n  var SEMICOLON = 0x003b;\n  var FULL_STOP = 0x002e;\n  var NULL = 0x0000;\n  var BACKSPACE = 0x0008;\n  var LINE_TABULATION = 0x000b;\n  var SHIFT_OUT = 0x000e;\n  var INFORMATION_SEPARATOR_ONE = 0x001f;\n  var DELETE = 0x007f;\n  var EOF = -1;\n  var ZERO = 0x0030;\n  var a = 0x0061;\n  var e = 0x0065;\n  var f = 0x0066;\n  var u = 0x0075;\n  var z = 0x007a;\n  var A = 0x0041;\n  var E = 0x0045;\n  var F = 0x0046;\n  var U = 0x0055;\n  var Z = 0x005a;\n  var isDigit = function (codePoint) {\n    return codePoint >= ZERO && codePoint <= 0x0039;\n  };\n  var isSurrogateCodePoint = function (codePoint) {\n    return codePoint >= 0xd800 && codePoint <= 0xdfff;\n  };\n  var isHex = function (codePoint) {\n    return isDigit(codePoint) || codePoint >= A && codePoint <= F || codePoint >= a && codePoint <= f;\n  };\n  var isLowerCaseLetter = function (codePoint) {\n    return codePoint >= a && codePoint <= z;\n  };\n  var isUpperCaseLetter = function (codePoint) {\n    return codePoint >= A && codePoint <= Z;\n  };\n  var isLetter = function (codePoint) {\n    return isLowerCaseLetter(codePoint) || isUpperCaseLetter(codePoint);\n  };\n  var isNonASCIICodePoint = function (codePoint) {\n    return codePoint >= CONTROL;\n  };\n  var isWhiteSpace = function (codePoint) {\n    return codePoint === LINE_FEED || codePoint === CHARACTER_TABULATION || codePoint === SPACE;\n  };\n  var isNameStartCodePoint = function (codePoint) {\n    return isLetter(codePoint) || isNonASCIICodePoint(codePoint) || codePoint === LOW_LINE;\n  };\n  var isNameCodePoint = function (codePoint) {\n    return isNameStartCodePoint(codePoint) || isDigit(codePoint) || codePoint === HYPHEN_MINUS;\n  };\n  var isNonPrintableCodePoint = function (codePoint) {\n    return codePoint >= NULL && codePoint <= BACKSPACE || codePoint === LINE_TABULATION || codePoint >= SHIFT_OUT && codePoint <= INFORMATION_SEPARATOR_ONE || codePoint === DELETE;\n  };\n  var isValidEscape = function (c1, c2) {\n    if (c1 !== REVERSE_SOLIDUS) {\n      return false;\n    }\n    return c2 !== LINE_FEED;\n  };\n  var isIdentifierStart = function (c1, c2, c3) {\n    if (c1 === HYPHEN_MINUS) {\n      return isNameStartCodePoint(c2) || isValidEscape(c2, c3);\n    } else if (isNameStartCodePoint(c1)) {\n      return true;\n    } else if (c1 === REVERSE_SOLIDUS && isValidEscape(c1, c2)) {\n      return true;\n    }\n    return false;\n  };\n  var isNumberStart = function (c1, c2, c3) {\n    if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {\n      if (isDigit(c2)) {\n        return true;\n      }\n      return c2 === FULL_STOP && isDigit(c3);\n    }\n    if (c1 === FULL_STOP) {\n      return isDigit(c2);\n    }\n    return isDigit(c1);\n  };\n  var stringToNumber = function (codePoints) {\n    var c = 0;\n    var sign = 1;\n    if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {\n      if (codePoints[c] === HYPHEN_MINUS) {\n        sign = -1;\n      }\n      c++;\n    }\n    var integers = [];\n    while (isDigit(codePoints[c])) {\n      integers.push(codePoints[c++]);\n    }\n    var int = integers.length ? parseInt(fromCodePoint$1.apply(void 0, integers), 10) : 0;\n    if (codePoints[c] === FULL_STOP) {\n      c++;\n    }\n    var fraction = [];\n    while (isDigit(codePoints[c])) {\n      fraction.push(codePoints[c++]);\n    }\n    var fracd = fraction.length;\n    var frac = fracd ? parseInt(fromCodePoint$1.apply(void 0, fraction), 10) : 0;\n    if (codePoints[c] === E || codePoints[c] === e) {\n      c++;\n    }\n    var expsign = 1;\n    if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {\n      if (codePoints[c] === HYPHEN_MINUS) {\n        expsign = -1;\n      }\n      c++;\n    }\n    var exponent = [];\n    while (isDigit(codePoints[c])) {\n      exponent.push(codePoints[c++]);\n    }\n    var exp = exponent.length ? parseInt(fromCodePoint$1.apply(void 0, exponent), 10) : 0;\n    return sign * (int + frac * Math.pow(10, -fracd)) * Math.pow(10, expsign * exp);\n  };\n  var LEFT_PARENTHESIS_TOKEN = {\n    type: 2 /* LEFT_PARENTHESIS_TOKEN */\n  };\n  var RIGHT_PARENTHESIS_TOKEN = {\n    type: 3 /* RIGHT_PARENTHESIS_TOKEN */\n  };\n  var COMMA_TOKEN = {\n    type: 4 /* COMMA_TOKEN */\n  };\n  var SUFFIX_MATCH_TOKEN = {\n    type: 13 /* SUFFIX_MATCH_TOKEN */\n  };\n  var PREFIX_MATCH_TOKEN = {\n    type: 8 /* PREFIX_MATCH_TOKEN */\n  };\n  var COLUMN_TOKEN = {\n    type: 21 /* COLUMN_TOKEN */\n  };\n  var DASH_MATCH_TOKEN = {\n    type: 9 /* DASH_MATCH_TOKEN */\n  };\n  var INCLUDE_MATCH_TOKEN = {\n    type: 10 /* INCLUDE_MATCH_TOKEN */\n  };\n  var LEFT_CURLY_BRACKET_TOKEN = {\n    type: 11 /* LEFT_CURLY_BRACKET_TOKEN */\n  };\n  var RIGHT_CURLY_BRACKET_TOKEN = {\n    type: 12 /* RIGHT_CURLY_BRACKET_TOKEN */\n  };\n  var SUBSTRING_MATCH_TOKEN = {\n    type: 14 /* SUBSTRING_MATCH_TOKEN */\n  };\n  var BAD_URL_TOKEN = {\n    type: 23 /* BAD_URL_TOKEN */\n  };\n  var BAD_STRING_TOKEN = {\n    type: 1 /* BAD_STRING_TOKEN */\n  };\n  var CDO_TOKEN = {\n    type: 25 /* CDO_TOKEN */\n  };\n  var CDC_TOKEN = {\n    type: 24 /* CDC_TOKEN */\n  };\n  var COLON_TOKEN = {\n    type: 26 /* COLON_TOKEN */\n  };\n  var SEMICOLON_TOKEN = {\n    type: 27 /* SEMICOLON_TOKEN */\n  };\n  var LEFT_SQUARE_BRACKET_TOKEN = {\n    type: 28 /* LEFT_SQUARE_BRACKET_TOKEN */\n  };\n  var RIGHT_SQUARE_BRACKET_TOKEN = {\n    type: 29 /* RIGHT_SQUARE_BRACKET_TOKEN */\n  };\n  var WHITESPACE_TOKEN = {\n    type: 31 /* WHITESPACE_TOKEN */\n  };\n  var EOF_TOKEN = {\n    type: 32 /* EOF_TOKEN */\n  };\n  var Tokenizer = /** @class */function () {\n    function Tokenizer() {\n      this._value = [];\n    }\n    Tokenizer.prototype.write = function (chunk) {\n      this._value = this._value.concat(toCodePoints$1(chunk));\n    };\n    Tokenizer.prototype.read = function () {\n      var tokens = [];\n      var token = this.consumeToken();\n      while (token !== EOF_TOKEN) {\n        tokens.push(token);\n        token = this.consumeToken();\n      }\n      return tokens;\n    };\n    Tokenizer.prototype.consumeToken = function () {\n      var codePoint = this.consumeCodePoint();\n      switch (codePoint) {\n        case QUOTATION_MARK:\n          return this.consumeStringToken(QUOTATION_MARK);\n        case NUMBER_SIGN:\n          var c1 = this.peekCodePoint(0);\n          var c2 = this.peekCodePoint(1);\n          var c3 = this.peekCodePoint(2);\n          if (isNameCodePoint(c1) || isValidEscape(c2, c3)) {\n            var flags = isIdentifierStart(c1, c2, c3) ? FLAG_ID : FLAG_UNRESTRICTED;\n            var value = this.consumeName();\n            return {\n              type: 5 /* HASH_TOKEN */,\n              value: value,\n              flags: flags\n            };\n          }\n          break;\n        case DOLLAR_SIGN:\n          if (this.peekCodePoint(0) === EQUALS_SIGN) {\n            this.consumeCodePoint();\n            return SUFFIX_MATCH_TOKEN;\n          }\n          break;\n        case APOSTROPHE:\n          return this.consumeStringToken(APOSTROPHE);\n        case LEFT_PARENTHESIS:\n          return LEFT_PARENTHESIS_TOKEN;\n        case RIGHT_PARENTHESIS:\n          return RIGHT_PARENTHESIS_TOKEN;\n        case ASTERISK:\n          if (this.peekCodePoint(0) === EQUALS_SIGN) {\n            this.consumeCodePoint();\n            return SUBSTRING_MATCH_TOKEN;\n          }\n          break;\n        case PLUS_SIGN:\n          if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {\n            this.reconsumeCodePoint(codePoint);\n            return this.consumeNumericToken();\n          }\n          break;\n        case COMMA:\n          return COMMA_TOKEN;\n        case HYPHEN_MINUS:\n          var e1 = codePoint;\n          var e2 = this.peekCodePoint(0);\n          var e3 = this.peekCodePoint(1);\n          if (isNumberStart(e1, e2, e3)) {\n            this.reconsumeCodePoint(codePoint);\n            return this.consumeNumericToken();\n          }\n          if (isIdentifierStart(e1, e2, e3)) {\n            this.reconsumeCodePoint(codePoint);\n            return this.consumeIdentLikeToken();\n          }\n          if (e2 === HYPHEN_MINUS && e3 === GREATER_THAN_SIGN) {\n            this.consumeCodePoint();\n            this.consumeCodePoint();\n            return CDC_TOKEN;\n          }\n          break;\n        case FULL_STOP:\n          if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {\n            this.reconsumeCodePoint(codePoint);\n            return this.consumeNumericToken();\n          }\n          break;\n        case SOLIDUS:\n          if (this.peekCodePoint(0) === ASTERISK) {\n            this.consumeCodePoint();\n            while (true) {\n              var c = this.consumeCodePoint();\n              if (c === ASTERISK) {\n                c = this.consumeCodePoint();\n                if (c === SOLIDUS) {\n                  return this.consumeToken();\n                }\n              }\n              if (c === EOF) {\n                return this.consumeToken();\n              }\n            }\n          }\n          break;\n        case COLON:\n          return COLON_TOKEN;\n        case SEMICOLON:\n          return SEMICOLON_TOKEN;\n        case LESS_THAN_SIGN:\n          if (this.peekCodePoint(0) === EXCLAMATION_MARK && this.peekCodePoint(1) === HYPHEN_MINUS && this.peekCodePoint(2) === HYPHEN_MINUS) {\n            this.consumeCodePoint();\n            this.consumeCodePoint();\n            return CDO_TOKEN;\n          }\n          break;\n        case COMMERCIAL_AT:\n          var a1 = this.peekCodePoint(0);\n          var a2 = this.peekCodePoint(1);\n          var a3 = this.peekCodePoint(2);\n          if (isIdentifierStart(a1, a2, a3)) {\n            var value = this.consumeName();\n            return {\n              type: 7 /* AT_KEYWORD_TOKEN */,\n              value: value\n            };\n          }\n          break;\n        case LEFT_SQUARE_BRACKET:\n          return LEFT_SQUARE_BRACKET_TOKEN;\n        case REVERSE_SOLIDUS:\n          if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n            this.reconsumeCodePoint(codePoint);\n            return this.consumeIdentLikeToken();\n          }\n          break;\n        case RIGHT_SQUARE_BRACKET:\n          return RIGHT_SQUARE_BRACKET_TOKEN;\n        case CIRCUMFLEX_ACCENT:\n          if (this.peekCodePoint(0) === EQUALS_SIGN) {\n            this.consumeCodePoint();\n            return PREFIX_MATCH_TOKEN;\n          }\n          break;\n        case LEFT_CURLY_BRACKET:\n          return LEFT_CURLY_BRACKET_TOKEN;\n        case RIGHT_CURLY_BRACKET:\n          return RIGHT_CURLY_BRACKET_TOKEN;\n        case u:\n        case U:\n          var u1 = this.peekCodePoint(0);\n          var u2 = this.peekCodePoint(1);\n          if (u1 === PLUS_SIGN && (isHex(u2) || u2 === QUESTION_MARK)) {\n            this.consumeCodePoint();\n            this.consumeUnicodeRangeToken();\n          }\n          this.reconsumeCodePoint(codePoint);\n          return this.consumeIdentLikeToken();\n        case VERTICAL_LINE:\n          if (this.peekCodePoint(0) === EQUALS_SIGN) {\n            this.consumeCodePoint();\n            return DASH_MATCH_TOKEN;\n          }\n          if (this.peekCodePoint(0) === VERTICAL_LINE) {\n            this.consumeCodePoint();\n            return COLUMN_TOKEN;\n          }\n          break;\n        case TILDE:\n          if (this.peekCodePoint(0) === EQUALS_SIGN) {\n            this.consumeCodePoint();\n            return INCLUDE_MATCH_TOKEN;\n          }\n          break;\n        case EOF:\n          return EOF_TOKEN;\n      }\n      if (isWhiteSpace(codePoint)) {\n        this.consumeWhiteSpace();\n        return WHITESPACE_TOKEN;\n      }\n      if (isDigit(codePoint)) {\n        this.reconsumeCodePoint(codePoint);\n        return this.consumeNumericToken();\n      }\n      if (isNameStartCodePoint(codePoint)) {\n        this.reconsumeCodePoint(codePoint);\n        return this.consumeIdentLikeToken();\n      }\n      return {\n        type: 6 /* DELIM_TOKEN */,\n        value: fromCodePoint$1(codePoint)\n      };\n    };\n    Tokenizer.prototype.consumeCodePoint = function () {\n      var value = this._value.shift();\n      return typeof value === 'undefined' ? -1 : value;\n    };\n    Tokenizer.prototype.reconsumeCodePoint = function (codePoint) {\n      this._value.unshift(codePoint);\n    };\n    Tokenizer.prototype.peekCodePoint = function (delta) {\n      if (delta >= this._value.length) {\n        return -1;\n      }\n      return this._value[delta];\n    };\n    Tokenizer.prototype.consumeUnicodeRangeToken = function () {\n      var digits = [];\n      var codePoint = this.consumeCodePoint();\n      while (isHex(codePoint) && digits.length < 6) {\n        digits.push(codePoint);\n        codePoint = this.consumeCodePoint();\n      }\n      var questionMarks = false;\n      while (codePoint === QUESTION_MARK && digits.length < 6) {\n        digits.push(codePoint);\n        codePoint = this.consumeCodePoint();\n        questionMarks = true;\n      }\n      if (questionMarks) {\n        var start_1 = parseInt(fromCodePoint$1.apply(void 0, digits.map(function (digit) {\n          return digit === QUESTION_MARK ? ZERO : digit;\n        })), 16);\n        var end = parseInt(fromCodePoint$1.apply(void 0, digits.map(function (digit) {\n          return digit === QUESTION_MARK ? F : digit;\n        })), 16);\n        return {\n          type: 30 /* UNICODE_RANGE_TOKEN */,\n          start: start_1,\n          end: end\n        };\n      }\n      var start = parseInt(fromCodePoint$1.apply(void 0, digits), 16);\n      if (this.peekCodePoint(0) === HYPHEN_MINUS && isHex(this.peekCodePoint(1))) {\n        this.consumeCodePoint();\n        codePoint = this.consumeCodePoint();\n        var endDigits = [];\n        while (isHex(codePoint) && endDigits.length < 6) {\n          endDigits.push(codePoint);\n          codePoint = this.consumeCodePoint();\n        }\n        var end = parseInt(fromCodePoint$1.apply(void 0, endDigits), 16);\n        return {\n          type: 30 /* UNICODE_RANGE_TOKEN */,\n          start: start,\n          end: end\n        };\n      } else {\n        return {\n          type: 30 /* UNICODE_RANGE_TOKEN */,\n          start: start,\n          end: start\n        };\n      }\n    };\n    Tokenizer.prototype.consumeIdentLikeToken = function () {\n      var value = this.consumeName();\n      if (value.toLowerCase() === 'url' && this.peekCodePoint(0) === LEFT_PARENTHESIS) {\n        this.consumeCodePoint();\n        return this.consumeUrlToken();\n      } else if (this.peekCodePoint(0) === LEFT_PARENTHESIS) {\n        this.consumeCodePoint();\n        return {\n          type: 19 /* FUNCTION_TOKEN */,\n          value: value\n        };\n      }\n      return {\n        type: 20 /* IDENT_TOKEN */,\n        value: value\n      };\n    };\n    Tokenizer.prototype.consumeUrlToken = function () {\n      var value = [];\n      this.consumeWhiteSpace();\n      if (this.peekCodePoint(0) === EOF) {\n        return {\n          type: 22 /* URL_TOKEN */,\n          value: ''\n        };\n      }\n      var next = this.peekCodePoint(0);\n      if (next === APOSTROPHE || next === QUOTATION_MARK) {\n        var stringToken = this.consumeStringToken(this.consumeCodePoint());\n        if (stringToken.type === 0 /* STRING_TOKEN */) {\n          this.consumeWhiteSpace();\n          if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {\n            this.consumeCodePoint();\n            return {\n              type: 22 /* URL_TOKEN */,\n              value: stringToken.value\n            };\n          }\n        }\n        this.consumeBadUrlRemnants();\n        return BAD_URL_TOKEN;\n      }\n      while (true) {\n        var codePoint = this.consumeCodePoint();\n        if (codePoint === EOF || codePoint === RIGHT_PARENTHESIS) {\n          return {\n            type: 22 /* URL_TOKEN */,\n            value: fromCodePoint$1.apply(void 0, value)\n          };\n        } else if (isWhiteSpace(codePoint)) {\n          this.consumeWhiteSpace();\n          if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {\n            this.consumeCodePoint();\n            return {\n              type: 22 /* URL_TOKEN */,\n              value: fromCodePoint$1.apply(void 0, value)\n            };\n          }\n          this.consumeBadUrlRemnants();\n          return BAD_URL_TOKEN;\n        } else if (codePoint === QUOTATION_MARK || codePoint === APOSTROPHE || codePoint === LEFT_PARENTHESIS || isNonPrintableCodePoint(codePoint)) {\n          this.consumeBadUrlRemnants();\n          return BAD_URL_TOKEN;\n        } else if (codePoint === REVERSE_SOLIDUS) {\n          if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n            value.push(this.consumeEscapedCodePoint());\n          } else {\n            this.consumeBadUrlRemnants();\n            return BAD_URL_TOKEN;\n          }\n        } else {\n          value.push(codePoint);\n        }\n      }\n    };\n    Tokenizer.prototype.consumeWhiteSpace = function () {\n      while (isWhiteSpace(this.peekCodePoint(0))) {\n        this.consumeCodePoint();\n      }\n    };\n    Tokenizer.prototype.consumeBadUrlRemnants = function () {\n      while (true) {\n        var codePoint = this.consumeCodePoint();\n        if (codePoint === RIGHT_PARENTHESIS || codePoint === EOF) {\n          return;\n        }\n        if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n          this.consumeEscapedCodePoint();\n        }\n      }\n    };\n    Tokenizer.prototype.consumeStringSlice = function (count) {\n      var SLICE_STACK_SIZE = 50000;\n      var value = '';\n      while (count > 0) {\n        var amount = Math.min(SLICE_STACK_SIZE, count);\n        value += fromCodePoint$1.apply(void 0, this._value.splice(0, amount));\n        count -= amount;\n      }\n      this._value.shift();\n      return value;\n    };\n    Tokenizer.prototype.consumeStringToken = function (endingCodePoint) {\n      var value = '';\n      var i = 0;\n      do {\n        var codePoint = this._value[i];\n        if (codePoint === EOF || codePoint === undefined || codePoint === endingCodePoint) {\n          value += this.consumeStringSlice(i);\n          return {\n            type: 0 /* STRING_TOKEN */,\n            value: value\n          };\n        }\n        if (codePoint === LINE_FEED) {\n          this._value.splice(0, i);\n          return BAD_STRING_TOKEN;\n        }\n        if (codePoint === REVERSE_SOLIDUS) {\n          var next = this._value[i + 1];\n          if (next !== EOF && next !== undefined) {\n            if (next === LINE_FEED) {\n              value += this.consumeStringSlice(i);\n              i = -1;\n              this._value.shift();\n            } else if (isValidEscape(codePoint, next)) {\n              value += this.consumeStringSlice(i);\n              value += fromCodePoint$1(this.consumeEscapedCodePoint());\n              i = -1;\n            }\n          }\n        }\n        i++;\n      } while (true);\n    };\n    Tokenizer.prototype.consumeNumber = function () {\n      var repr = [];\n      var type = FLAG_INTEGER;\n      var c1 = this.peekCodePoint(0);\n      if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {\n        repr.push(this.consumeCodePoint());\n      }\n      while (isDigit(this.peekCodePoint(0))) {\n        repr.push(this.consumeCodePoint());\n      }\n      c1 = this.peekCodePoint(0);\n      var c2 = this.peekCodePoint(1);\n      if (c1 === FULL_STOP && isDigit(c2)) {\n        repr.push(this.consumeCodePoint(), this.consumeCodePoint());\n        type = FLAG_NUMBER;\n        while (isDigit(this.peekCodePoint(0))) {\n          repr.push(this.consumeCodePoint());\n        }\n      }\n      c1 = this.peekCodePoint(0);\n      c2 = this.peekCodePoint(1);\n      var c3 = this.peekCodePoint(2);\n      if ((c1 === E || c1 === e) && ((c2 === PLUS_SIGN || c2 === HYPHEN_MINUS) && isDigit(c3) || isDigit(c2))) {\n        repr.push(this.consumeCodePoint(), this.consumeCodePoint());\n        type = FLAG_NUMBER;\n        while (isDigit(this.peekCodePoint(0))) {\n          repr.push(this.consumeCodePoint());\n        }\n      }\n      return [stringToNumber(repr), type];\n    };\n    Tokenizer.prototype.consumeNumericToken = function () {\n      var _a = this.consumeNumber(),\n        number = _a[0],\n        flags = _a[1];\n      var c1 = this.peekCodePoint(0);\n      var c2 = this.peekCodePoint(1);\n      var c3 = this.peekCodePoint(2);\n      if (isIdentifierStart(c1, c2, c3)) {\n        var unit = this.consumeName();\n        return {\n          type: 15 /* DIMENSION_TOKEN */,\n          number: number,\n          flags: flags,\n          unit: unit\n        };\n      }\n      if (c1 === PERCENTAGE_SIGN) {\n        this.consumeCodePoint();\n        return {\n          type: 16 /* PERCENTAGE_TOKEN */,\n          number: number,\n          flags: flags\n        };\n      }\n      return {\n        type: 17 /* NUMBER_TOKEN */,\n        number: number,\n        flags: flags\n      };\n    };\n    Tokenizer.prototype.consumeEscapedCodePoint = function () {\n      var codePoint = this.consumeCodePoint();\n      if (isHex(codePoint)) {\n        var hex = fromCodePoint$1(codePoint);\n        while (isHex(this.peekCodePoint(0)) && hex.length < 6) {\n          hex += fromCodePoint$1(this.consumeCodePoint());\n        }\n        if (isWhiteSpace(this.peekCodePoint(0))) {\n          this.consumeCodePoint();\n        }\n        var hexCodePoint = parseInt(hex, 16);\n        if (hexCodePoint === 0 || isSurrogateCodePoint(hexCodePoint) || hexCodePoint > 0x10ffff) {\n          return REPLACEMENT_CHARACTER;\n        }\n        return hexCodePoint;\n      }\n      if (codePoint === EOF) {\n        return REPLACEMENT_CHARACTER;\n      }\n      return codePoint;\n    };\n    Tokenizer.prototype.consumeName = function () {\n      var result = '';\n      while (true) {\n        var codePoint = this.consumeCodePoint();\n        if (isNameCodePoint(codePoint)) {\n          result += fromCodePoint$1(codePoint);\n        } else if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n          result += fromCodePoint$1(this.consumeEscapedCodePoint());\n        } else {\n          this.reconsumeCodePoint(codePoint);\n          return result;\n        }\n      }\n    };\n    return Tokenizer;\n  }();\n  var Parser = /** @class */function () {\n    function Parser(tokens) {\n      this._tokens = tokens;\n    }\n    Parser.create = function (value) {\n      var tokenizer = new Tokenizer();\n      tokenizer.write(value);\n      return new Parser(tokenizer.read());\n    };\n    Parser.parseValue = function (value) {\n      return Parser.create(value).parseComponentValue();\n    };\n    Parser.parseValues = function (value) {\n      return Parser.create(value).parseComponentValues();\n    };\n    Parser.prototype.parseComponentValue = function () {\n      var token = this.consumeToken();\n      while (token.type === 31 /* WHITESPACE_TOKEN */) {\n        token = this.consumeToken();\n      }\n      if (token.type === 32 /* EOF_TOKEN */) {\n        throw new SyntaxError(\"Error parsing CSS component value, unexpected EOF\");\n      }\n      this.reconsumeToken(token);\n      var value = this.consumeComponentValue();\n      do {\n        token = this.consumeToken();\n      } while (token.type === 31 /* WHITESPACE_TOKEN */);\n      if (token.type === 32 /* EOF_TOKEN */) {\n        return value;\n      }\n      throw new SyntaxError(\"Error parsing CSS component value, multiple values found when expecting only one\");\n    };\n    Parser.prototype.parseComponentValues = function () {\n      var values = [];\n      while (true) {\n        var value = this.consumeComponentValue();\n        if (value.type === 32 /* EOF_TOKEN */) {\n          return values;\n        }\n        values.push(value);\n        values.push();\n      }\n    };\n    Parser.prototype.consumeComponentValue = function () {\n      var token = this.consumeToken();\n      switch (token.type) {\n        case 11 /* LEFT_CURLY_BRACKET_TOKEN */:\n        case 28 /* LEFT_SQUARE_BRACKET_TOKEN */:\n        case 2 /* LEFT_PARENTHESIS_TOKEN */:\n          return this.consumeSimpleBlock(token.type);\n        case 19 /* FUNCTION_TOKEN */:\n          return this.consumeFunction(token);\n      }\n      return token;\n    };\n    Parser.prototype.consumeSimpleBlock = function (type) {\n      var block = {\n        type: type,\n        values: []\n      };\n      var token = this.consumeToken();\n      while (true) {\n        if (token.type === 32 /* EOF_TOKEN */ || isEndingTokenFor(token, type)) {\n          return block;\n        }\n        this.reconsumeToken(token);\n        block.values.push(this.consumeComponentValue());\n        token = this.consumeToken();\n      }\n    };\n    Parser.prototype.consumeFunction = function (functionToken) {\n      var cssFunction = {\n        name: functionToken.value,\n        values: [],\n        type: 18 /* FUNCTION */\n      };\n      while (true) {\n        var token = this.consumeToken();\n        if (token.type === 32 /* EOF_TOKEN */ || token.type === 3 /* RIGHT_PARENTHESIS_TOKEN */) {\n          return cssFunction;\n        }\n        this.reconsumeToken(token);\n        cssFunction.values.push(this.consumeComponentValue());\n      }\n    };\n    Parser.prototype.consumeToken = function () {\n      var token = this._tokens.shift();\n      return typeof token === 'undefined' ? EOF_TOKEN : token;\n    };\n    Parser.prototype.reconsumeToken = function (token) {\n      this._tokens.unshift(token);\n    };\n    return Parser;\n  }();\n  var isDimensionToken = function (token) {\n    return token.type === 15 /* DIMENSION_TOKEN */;\n  };\n  var isNumberToken = function (token) {\n    return token.type === 17 /* NUMBER_TOKEN */;\n  };\n  var isIdentToken = function (token) {\n    return token.type === 20 /* IDENT_TOKEN */;\n  };\n  var isStringToken = function (token) {\n    return token.type === 0 /* STRING_TOKEN */;\n  };\n  var isIdentWithValue = function (token, value) {\n    return isIdentToken(token) && token.value === value;\n  };\n  var nonWhiteSpace = function (token) {\n    return token.type !== 31 /* WHITESPACE_TOKEN */;\n  };\n  var nonFunctionArgSeparator = function (token) {\n    return token.type !== 31 /* WHITESPACE_TOKEN */ && token.type !== 4 /* COMMA_TOKEN */;\n  };\n  var parseFunctionArgs = function (tokens) {\n    var args = [];\n    var arg = [];\n    tokens.forEach(function (token) {\n      if (token.type === 4 /* COMMA_TOKEN */) {\n        if (arg.length === 0) {\n          throw new Error(\"Error parsing function args, zero tokens for arg\");\n        }\n        args.push(arg);\n        arg = [];\n        return;\n      }\n      if (token.type !== 31 /* WHITESPACE_TOKEN */) {\n        arg.push(token);\n      }\n    });\n    if (arg.length) {\n      args.push(arg);\n    }\n    return args;\n  };\n  var isEndingTokenFor = function (token, type) {\n    if (type === 11 /* LEFT_CURLY_BRACKET_TOKEN */ && token.type === 12 /* RIGHT_CURLY_BRACKET_TOKEN */) {\n      return true;\n    }\n    if (type === 28 /* LEFT_SQUARE_BRACKET_TOKEN */ && token.type === 29 /* RIGHT_SQUARE_BRACKET_TOKEN */) {\n      return true;\n    }\n    return type === 2 /* LEFT_PARENTHESIS_TOKEN */ && token.type === 3 /* RIGHT_PARENTHESIS_TOKEN */;\n  };\n  var isLength = function (token) {\n    return token.type === 17 /* NUMBER_TOKEN */ || token.type === 15 /* DIMENSION_TOKEN */;\n  };\n  var isLengthPercentage = function (token) {\n    return token.type === 16 /* PERCENTAGE_TOKEN */ || isLength(token);\n  };\n  var parseLengthPercentageTuple = function (tokens) {\n    return tokens.length > 1 ? [tokens[0], tokens[1]] : [tokens[0]];\n  };\n  var ZERO_LENGTH = {\n    type: 17 /* NUMBER_TOKEN */,\n    number: 0,\n    flags: FLAG_INTEGER\n  };\n  var FIFTY_PERCENT = {\n    type: 16 /* PERCENTAGE_TOKEN */,\n    number: 50,\n    flags: FLAG_INTEGER\n  };\n  var HUNDRED_PERCENT = {\n    type: 16 /* PERCENTAGE_TOKEN */,\n    number: 100,\n    flags: FLAG_INTEGER\n  };\n  var getAbsoluteValueForTuple = function (tuple, width, height) {\n    var x = tuple[0],\n      y = tuple[1];\n    return [getAbsoluteValue(x, width), getAbsoluteValue(typeof y !== 'undefined' ? y : x, height)];\n  };\n  var getAbsoluteValue = function (token, parent) {\n    if (token.type === 16 /* PERCENTAGE_TOKEN */) {\n      return token.number / 100 * parent;\n    }\n    if (isDimensionToken(token)) {\n      switch (token.unit) {\n        case 'rem':\n        case 'em':\n          return 16 * token.number;\n        // TODO use correct font-size\n        case 'px':\n        default:\n          return token.number;\n      }\n    }\n    return token.number;\n  };\n  var DEG = 'deg';\n  var GRAD = 'grad';\n  var RAD = 'rad';\n  var TURN = 'turn';\n  var angle = {\n    name: 'angle',\n    parse: function (_context, value) {\n      if (value.type === 15 /* DIMENSION_TOKEN */) {\n        switch (value.unit) {\n          case DEG:\n            return Math.PI * value.number / 180;\n          case GRAD:\n            return Math.PI / 200 * value.number;\n          case RAD:\n            return value.number;\n          case TURN:\n            return Math.PI * 2 * value.number;\n        }\n      }\n      throw new Error(\"Unsupported angle type\");\n    }\n  };\n  var isAngle = function (value) {\n    if (value.type === 15 /* DIMENSION_TOKEN */) {\n      if (value.unit === DEG || value.unit === GRAD || value.unit === RAD || value.unit === TURN) {\n        return true;\n      }\n    }\n    return false;\n  };\n  var parseNamedSide = function (tokens) {\n    var sideOrCorner = tokens.filter(isIdentToken).map(function (ident) {\n      return ident.value;\n    }).join(' ');\n    switch (sideOrCorner) {\n      case 'to bottom right':\n      case 'to right bottom':\n      case 'left top':\n      case 'top left':\n        return [ZERO_LENGTH, ZERO_LENGTH];\n      case 'to top':\n      case 'bottom':\n        return deg(0);\n      case 'to bottom left':\n      case 'to left bottom':\n      case 'right top':\n      case 'top right':\n        return [ZERO_LENGTH, HUNDRED_PERCENT];\n      case 'to right':\n      case 'left':\n        return deg(90);\n      case 'to top left':\n      case 'to left top':\n      case 'right bottom':\n      case 'bottom right':\n        return [HUNDRED_PERCENT, HUNDRED_PERCENT];\n      case 'to bottom':\n      case 'top':\n        return deg(180);\n      case 'to top right':\n      case 'to right top':\n      case 'left bottom':\n      case 'bottom left':\n        return [HUNDRED_PERCENT, ZERO_LENGTH];\n      case 'to left':\n      case 'right':\n        return deg(270);\n    }\n    return 0;\n  };\n  var deg = function (deg) {\n    return Math.PI * deg / 180;\n  };\n  var color$1 = {\n    name: 'color',\n    parse: function (context, value) {\n      if (value.type === 18 /* FUNCTION */) {\n        var colorFunction = SUPPORTED_COLOR_FUNCTIONS[value.name];\n        if (typeof colorFunction === 'undefined') {\n          throw new Error(\"Attempting to parse an unsupported color function \\\"\" + value.name + \"\\\"\");\n        }\n        return colorFunction(context, value.values);\n      }\n      if (value.type === 5 /* HASH_TOKEN */) {\n        if (value.value.length === 3) {\n          var r = value.value.substring(0, 1);\n          var g = value.value.substring(1, 2);\n          var b = value.value.substring(2, 3);\n          return pack(parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), 1);\n        }\n        if (value.value.length === 4) {\n          var r = value.value.substring(0, 1);\n          var g = value.value.substring(1, 2);\n          var b = value.value.substring(2, 3);\n          var a = value.value.substring(3, 4);\n          return pack(parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), parseInt(a + a, 16) / 255);\n        }\n        if (value.value.length === 6) {\n          var r = value.value.substring(0, 2);\n          var g = value.value.substring(2, 4);\n          var b = value.value.substring(4, 6);\n          return pack(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), 1);\n        }\n        if (value.value.length === 8) {\n          var r = value.value.substring(0, 2);\n          var g = value.value.substring(2, 4);\n          var b = value.value.substring(4, 6);\n          var a = value.value.substring(6, 8);\n          return pack(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), parseInt(a, 16) / 255);\n        }\n      }\n      if (value.type === 20 /* IDENT_TOKEN */) {\n        var namedColor = COLORS[value.value.toUpperCase()];\n        if (typeof namedColor !== 'undefined') {\n          return namedColor;\n        }\n      }\n      return COLORS.TRANSPARENT;\n    }\n  };\n  var isTransparent = function (color) {\n    return (0xff & color) === 0;\n  };\n  var asString = function (color) {\n    var alpha = 0xff & color;\n    var blue = 0xff & color >> 8;\n    var green = 0xff & color >> 16;\n    var red = 0xff & color >> 24;\n    return alpha < 255 ? \"rgba(\" + red + \",\" + green + \",\" + blue + \",\" + alpha / 255 + \")\" : \"rgb(\" + red + \",\" + green + \",\" + blue + \")\";\n  };\n  var pack = function (r, g, b, a) {\n    return (r << 24 | g << 16 | b << 8 | Math.round(a * 255) << 0) >>> 0;\n  };\n  var getTokenColorValue = function (token, i) {\n    if (token.type === 17 /* NUMBER_TOKEN */) {\n      return token.number;\n    }\n    if (token.type === 16 /* PERCENTAGE_TOKEN */) {\n      var max = i === 3 ? 1 : 255;\n      return i === 3 ? token.number / 100 * max : Math.round(token.number / 100 * max);\n    }\n    return 0;\n  };\n  var rgb = function (_context, args) {\n    var tokens = args.filter(nonFunctionArgSeparator);\n    if (tokens.length === 3) {\n      var _a = tokens.map(getTokenColorValue),\n        r = _a[0],\n        g = _a[1],\n        b = _a[2];\n      return pack(r, g, b, 1);\n    }\n    if (tokens.length === 4) {\n      var _b = tokens.map(getTokenColorValue),\n        r = _b[0],\n        g = _b[1],\n        b = _b[2],\n        a = _b[3];\n      return pack(r, g, b, a);\n    }\n    return 0;\n  };\n  function hue2rgb(t1, t2, hue) {\n    if (hue < 0) {\n      hue += 1;\n    }\n    if (hue >= 1) {\n      hue -= 1;\n    }\n    if (hue < 1 / 6) {\n      return (t2 - t1) * hue * 6 + t1;\n    } else if (hue < 1 / 2) {\n      return t2;\n    } else if (hue < 2 / 3) {\n      return (t2 - t1) * 6 * (2 / 3 - hue) + t1;\n    } else {\n      return t1;\n    }\n  }\n  var hsl = function (context, args) {\n    var tokens = args.filter(nonFunctionArgSeparator);\n    var hue = tokens[0],\n      saturation = tokens[1],\n      lightness = tokens[2],\n      alpha = tokens[3];\n    var h = (hue.type === 17 /* NUMBER_TOKEN */ ? deg(hue.number) : angle.parse(context, hue)) / (Math.PI * 2);\n    var s = isLengthPercentage(saturation) ? saturation.number / 100 : 0;\n    var l = isLengthPercentage(lightness) ? lightness.number / 100 : 0;\n    var a = typeof alpha !== 'undefined' && isLengthPercentage(alpha) ? getAbsoluteValue(alpha, 1) : 1;\n    if (s === 0) {\n      return pack(l * 255, l * 255, l * 255, 1);\n    }\n    var t2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n    var t1 = l * 2 - t2;\n    var r = hue2rgb(t1, t2, h + 1 / 3);\n    var g = hue2rgb(t1, t2, h);\n    var b = hue2rgb(t1, t2, h - 1 / 3);\n    return pack(r * 255, g * 255, b * 255, a);\n  };\n  var SUPPORTED_COLOR_FUNCTIONS = {\n    hsl: hsl,\n    hsla: hsl,\n    rgb: rgb,\n    rgba: rgb\n  };\n  var parseColor = function (context, value) {\n    return color$1.parse(context, Parser.create(value).parseComponentValue());\n  };\n  var COLORS = {\n    ALICEBLUE: 0xf0f8ffff,\n    ANTIQUEWHITE: 0xfaebd7ff,\n    AQUA: 0x00ffffff,\n    AQUAMARINE: 0x7fffd4ff,\n    AZURE: 0xf0ffffff,\n    BEIGE: 0xf5f5dcff,\n    BISQUE: 0xffe4c4ff,\n    BLACK: 0x000000ff,\n    BLANCHEDALMOND: 0xffebcdff,\n    BLUE: 0x0000ffff,\n    BLUEVIOLET: 0x8a2be2ff,\n    BROWN: 0xa52a2aff,\n    BURLYWOOD: 0xdeb887ff,\n    CADETBLUE: 0x5f9ea0ff,\n    CHARTREUSE: 0x7fff00ff,\n    CHOCOLATE: 0xd2691eff,\n    CORAL: 0xff7f50ff,\n    CORNFLOWERBLUE: 0x6495edff,\n    CORNSILK: 0xfff8dcff,\n    CRIMSON: 0xdc143cff,\n    CYAN: 0x00ffffff,\n    DARKBLUE: 0x00008bff,\n    DARKCYAN: 0x008b8bff,\n    DARKGOLDENROD: 0xb886bbff,\n    DARKGRAY: 0xa9a9a9ff,\n    DARKGREEN: 0x006400ff,\n    DARKGREY: 0xa9a9a9ff,\n    DARKKHAKI: 0xbdb76bff,\n    DARKMAGENTA: 0x8b008bff,\n    DARKOLIVEGREEN: 0x556b2fff,\n    DARKORANGE: 0xff8c00ff,\n    DARKORCHID: 0x9932ccff,\n    DARKRED: 0x8b0000ff,\n    DARKSALMON: 0xe9967aff,\n    DARKSEAGREEN: 0x8fbc8fff,\n    DARKSLATEBLUE: 0x483d8bff,\n    DARKSLATEGRAY: 0x2f4f4fff,\n    DARKSLATEGREY: 0x2f4f4fff,\n    DARKTURQUOISE: 0x00ced1ff,\n    DARKVIOLET: 0x9400d3ff,\n    DEEPPINK: 0xff1493ff,\n    DEEPSKYBLUE: 0x00bfffff,\n    DIMGRAY: 0x696969ff,\n    DIMGREY: 0x696969ff,\n    DODGERBLUE: 0x1e90ffff,\n    FIREBRICK: 0xb22222ff,\n    FLORALWHITE: 0xfffaf0ff,\n    FORESTGREEN: 0x228b22ff,\n    FUCHSIA: 0xff00ffff,\n    GAINSBORO: 0xdcdcdcff,\n    GHOSTWHITE: 0xf8f8ffff,\n    GOLD: 0xffd700ff,\n    GOLDENROD: 0xdaa520ff,\n    GRAY: 0x808080ff,\n    GREEN: 0x008000ff,\n    GREENYELLOW: 0xadff2fff,\n    GREY: 0x808080ff,\n    HONEYDEW: 0xf0fff0ff,\n    HOTPINK: 0xff69b4ff,\n    INDIANRED: 0xcd5c5cff,\n    INDIGO: 0x4b0082ff,\n    IVORY: 0xfffff0ff,\n    KHAKI: 0xf0e68cff,\n    LAVENDER: 0xe6e6faff,\n    LAVENDERBLUSH: 0xfff0f5ff,\n    LAWNGREEN: 0x7cfc00ff,\n    LEMONCHIFFON: 0xfffacdff,\n    LIGHTBLUE: 0xadd8e6ff,\n    LIGHTCORAL: 0xf08080ff,\n    LIGHTCYAN: 0xe0ffffff,\n    LIGHTGOLDENRODYELLOW: 0xfafad2ff,\n    LIGHTGRAY: 0xd3d3d3ff,\n    LIGHTGREEN: 0x90ee90ff,\n    LIGHTGREY: 0xd3d3d3ff,\n    LIGHTPINK: 0xffb6c1ff,\n    LIGHTSALMON: 0xffa07aff,\n    LIGHTSEAGREEN: 0x20b2aaff,\n    LIGHTSKYBLUE: 0x87cefaff,\n    LIGHTSLATEGRAY: 0x778899ff,\n    LIGHTSLATEGREY: 0x778899ff,\n    LIGHTSTEELBLUE: 0xb0c4deff,\n    LIGHTYELLOW: 0xffffe0ff,\n    LIME: 0x00ff00ff,\n    LIMEGREEN: 0x32cd32ff,\n    LINEN: 0xfaf0e6ff,\n    MAGENTA: 0xff00ffff,\n    MAROON: 0x800000ff,\n    MEDIUMAQUAMARINE: 0x66cdaaff,\n    MEDIUMBLUE: 0x0000cdff,\n    MEDIUMORCHID: 0xba55d3ff,\n    MEDIUMPURPLE: 0x9370dbff,\n    MEDIUMSEAGREEN: 0x3cb371ff,\n    MEDIUMSLATEBLUE: 0x7b68eeff,\n    MEDIUMSPRINGGREEN: 0x00fa9aff,\n    MEDIUMTURQUOISE: 0x48d1ccff,\n    MEDIUMVIOLETRED: 0xc71585ff,\n    MIDNIGHTBLUE: 0x191970ff,\n    MINTCREAM: 0xf5fffaff,\n    MISTYROSE: 0xffe4e1ff,\n    MOCCASIN: 0xffe4b5ff,\n    NAVAJOWHITE: 0xffdeadff,\n    NAVY: 0x000080ff,\n    OLDLACE: 0xfdf5e6ff,\n    OLIVE: 0x808000ff,\n    OLIVEDRAB: 0x6b8e23ff,\n    ORANGE: 0xffa500ff,\n    ORANGERED: 0xff4500ff,\n    ORCHID: 0xda70d6ff,\n    PALEGOLDENROD: 0xeee8aaff,\n    PALEGREEN: 0x98fb98ff,\n    PALETURQUOISE: 0xafeeeeff,\n    PALEVIOLETRED: 0xdb7093ff,\n    PAPAYAWHIP: 0xffefd5ff,\n    PEACHPUFF: 0xffdab9ff,\n    PERU: 0xcd853fff,\n    PINK: 0xffc0cbff,\n    PLUM: 0xdda0ddff,\n    POWDERBLUE: 0xb0e0e6ff,\n    PURPLE: 0x800080ff,\n    REBECCAPURPLE: 0x663399ff,\n    RED: 0xff0000ff,\n    ROSYBROWN: 0xbc8f8fff,\n    ROYALBLUE: 0x4169e1ff,\n    SADDLEBROWN: 0x8b4513ff,\n    SALMON: 0xfa8072ff,\n    SANDYBROWN: 0xf4a460ff,\n    SEAGREEN: 0x2e8b57ff,\n    SEASHELL: 0xfff5eeff,\n    SIENNA: 0xa0522dff,\n    SILVER: 0xc0c0c0ff,\n    SKYBLUE: 0x87ceebff,\n    SLATEBLUE: 0x6a5acdff,\n    SLATEGRAY: 0x708090ff,\n    SLATEGREY: 0x708090ff,\n    SNOW: 0xfffafaff,\n    SPRINGGREEN: 0x00ff7fff,\n    STEELBLUE: 0x4682b4ff,\n    TAN: 0xd2b48cff,\n    TEAL: 0x008080ff,\n    THISTLE: 0xd8bfd8ff,\n    TOMATO: 0xff6347ff,\n    TRANSPARENT: 0x00000000,\n    TURQUOISE: 0x40e0d0ff,\n    VIOLET: 0xee82eeff,\n    WHEAT: 0xf5deb3ff,\n    WHITE: 0xffffffff,\n    WHITESMOKE: 0xf5f5f5ff,\n    YELLOW: 0xffff00ff,\n    YELLOWGREEN: 0x9acd32ff\n  };\n  var backgroundClip = {\n    name: 'background-clip',\n    initialValue: 'border-box',\n    prefix: false,\n    type: 1 /* LIST */,\n    parse: function (_context, tokens) {\n      return tokens.map(function (token) {\n        if (isIdentToken(token)) {\n          switch (token.value) {\n            case 'padding-box':\n              return 1 /* PADDING_BOX */;\n            case 'content-box':\n              return 2 /* CONTENT_BOX */;\n          }\n        }\n        return 0 /* BORDER_BOX */;\n      });\n    }\n  };\n  var backgroundColor = {\n    name: \"background-color\",\n    initialValue: 'transparent',\n    prefix: false,\n    type: 3 /* TYPE_VALUE */,\n    format: 'color'\n  };\n  var parseColorStop = function (context, args) {\n    var color = color$1.parse(context, args[0]);\n    var stop = args[1];\n    return stop && isLengthPercentage(stop) ? {\n      color: color,\n      stop: stop\n    } : {\n      color: color,\n      stop: null\n    };\n  };\n  var processColorStops = function (stops, lineLength) {\n    var first = stops[0];\n    var last = stops[stops.length - 1];\n    if (first.stop === null) {\n      first.stop = ZERO_LENGTH;\n    }\n    if (last.stop === null) {\n      last.stop = HUNDRED_PERCENT;\n    }\n    var processStops = [];\n    var previous = 0;\n    for (var i = 0; i < stops.length; i++) {\n      var stop_1 = stops[i].stop;\n      if (stop_1 !== null) {\n        var absoluteValue = getAbsoluteValue(stop_1, lineLength);\n        if (absoluteValue > previous) {\n          processStops.push(absoluteValue);\n        } else {\n          processStops.push(previous);\n        }\n        previous = absoluteValue;\n      } else {\n        processStops.push(null);\n      }\n    }\n    var gapBegin = null;\n    for (var i = 0; i < processStops.length; i++) {\n      var stop_2 = processStops[i];\n      if (stop_2 === null) {\n        if (gapBegin === null) {\n          gapBegin = i;\n        }\n      } else if (gapBegin !== null) {\n        var gapLength = i - gapBegin;\n        var beforeGap = processStops[gapBegin - 1];\n        var gapValue = (stop_2 - beforeGap) / (gapLength + 1);\n        for (var g = 1; g <= gapLength; g++) {\n          processStops[gapBegin + g - 1] = gapValue * g;\n        }\n        gapBegin = null;\n      }\n    }\n    return stops.map(function (_a, i) {\n      var color = _a.color;\n      return {\n        color: color,\n        stop: Math.max(Math.min(1, processStops[i] / lineLength), 0)\n      };\n    });\n  };\n  var getAngleFromCorner = function (corner, width, height) {\n    var centerX = width / 2;\n    var centerY = height / 2;\n    var x = getAbsoluteValue(corner[0], width) - centerX;\n    var y = centerY - getAbsoluteValue(corner[1], height);\n    return (Math.atan2(y, x) + Math.PI * 2) % (Math.PI * 2);\n  };\n  var calculateGradientDirection = function (angle, width, height) {\n    var radian = typeof angle === 'number' ? angle : getAngleFromCorner(angle, width, height);\n    var lineLength = Math.abs(width * Math.sin(radian)) + Math.abs(height * Math.cos(radian));\n    var halfWidth = width / 2;\n    var halfHeight = height / 2;\n    var halfLineLength = lineLength / 2;\n    var yDiff = Math.sin(radian - Math.PI / 2) * halfLineLength;\n    var xDiff = Math.cos(radian - Math.PI / 2) * halfLineLength;\n    return [lineLength, halfWidth - xDiff, halfWidth + xDiff, halfHeight - yDiff, halfHeight + yDiff];\n  };\n  var distance = function (a, b) {\n    return Math.sqrt(a * a + b * b);\n  };\n  var findCorner = function (width, height, x, y, closest) {\n    var corners = [[0, 0], [0, height], [width, 0], [width, height]];\n    return corners.reduce(function (stat, corner) {\n      var cx = corner[0],\n        cy = corner[1];\n      var d = distance(x - cx, y - cy);\n      if (closest ? d < stat.optimumDistance : d > stat.optimumDistance) {\n        return {\n          optimumCorner: corner,\n          optimumDistance: d\n        };\n      }\n      return stat;\n    }, {\n      optimumDistance: closest ? Infinity : -Infinity,\n      optimumCorner: null\n    }).optimumCorner;\n  };\n  var calculateRadius = function (gradient, x, y, width, height) {\n    var rx = 0;\n    var ry = 0;\n    switch (gradient.size) {\n      case 0 /* CLOSEST_SIDE */:\n        // The ending shape is sized so that that it exactly meets the side of the gradient box closest to the gradient’s center.\n        // If the shape is an ellipse, it exactly meets the closest side in each dimension.\n        if (gradient.shape === 0 /* CIRCLE */) {\n          rx = ry = Math.min(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height));\n        } else if (gradient.shape === 1 /* ELLIPSE */) {\n          rx = Math.min(Math.abs(x), Math.abs(x - width));\n          ry = Math.min(Math.abs(y), Math.abs(y - height));\n        }\n        break;\n      case 2 /* CLOSEST_CORNER */:\n        // The ending shape is sized so that that it passes through the corner of the gradient box closest to the gradient’s center.\n        // If the shape is an ellipse, the ending shape is given the same aspect-ratio it would have if closest-side were specified.\n        if (gradient.shape === 0 /* CIRCLE */) {\n          rx = ry = Math.min(distance(x, y), distance(x, y - height), distance(x - width, y), distance(x - width, y - height));\n        } else if (gradient.shape === 1 /* ELLIPSE */) {\n          // Compute the ratio ry/rx (which is to be the same as for \"closest-side\")\n          var c = Math.min(Math.abs(y), Math.abs(y - height)) / Math.min(Math.abs(x), Math.abs(x - width));\n          var _a = findCorner(width, height, x, y, true),\n            cx = _a[0],\n            cy = _a[1];\n          rx = distance(cx - x, (cy - y) / c);\n          ry = c * rx;\n        }\n        break;\n      case 1 /* FARTHEST_SIDE */:\n        // Same as closest-side, except the ending shape is sized based on the farthest side(s)\n        if (gradient.shape === 0 /* CIRCLE */) {\n          rx = ry = Math.max(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height));\n        } else if (gradient.shape === 1 /* ELLIPSE */) {\n          rx = Math.max(Math.abs(x), Math.abs(x - width));\n          ry = Math.max(Math.abs(y), Math.abs(y - height));\n        }\n        break;\n      case 3 /* FARTHEST_CORNER */:\n        // Same as closest-corner, except the ending shape is sized based on the farthest corner.\n        // If the shape is an ellipse, the ending shape is given the same aspect ratio it would have if farthest-side were specified.\n        if (gradient.shape === 0 /* CIRCLE */) {\n          rx = ry = Math.max(distance(x, y), distance(x, y - height), distance(x - width, y), distance(x - width, y - height));\n        } else if (gradient.shape === 1 /* ELLIPSE */) {\n          // Compute the ratio ry/rx (which is to be the same as for \"farthest-side\")\n          var c = Math.max(Math.abs(y), Math.abs(y - height)) / Math.max(Math.abs(x), Math.abs(x - width));\n          var _b = findCorner(width, height, x, y, false),\n            cx = _b[0],\n            cy = _b[1];\n          rx = distance(cx - x, (cy - y) / c);\n          ry = c * rx;\n        }\n        break;\n    }\n    if (Array.isArray(gradient.size)) {\n      rx = getAbsoluteValue(gradient.size[0], width);\n      ry = gradient.size.length === 2 ? getAbsoluteValue(gradient.size[1], height) : rx;\n    }\n    return [rx, ry];\n  };\n  var linearGradient = function (context, tokens) {\n    var angle$1 = deg(180);\n    var stops = [];\n    parseFunctionArgs(tokens).forEach(function (arg, i) {\n      if (i === 0) {\n        var firstToken = arg[0];\n        if (firstToken.type === 20 /* IDENT_TOKEN */ && firstToken.value === 'to') {\n          angle$1 = parseNamedSide(arg);\n          return;\n        } else if (isAngle(firstToken)) {\n          angle$1 = angle.parse(context, firstToken);\n          return;\n        }\n      }\n      var colorStop = parseColorStop(context, arg);\n      stops.push(colorStop);\n    });\n    return {\n      angle: angle$1,\n      stops: stops,\n      type: 1 /* LINEAR_GRADIENT */\n    };\n  };\n  var prefixLinearGradient = function (context, tokens) {\n    var angle$1 = deg(180);\n    var stops = [];\n    parseFunctionArgs(tokens).forEach(function (arg, i) {\n      if (i === 0) {\n        var firstToken = arg[0];\n        if (firstToken.type === 20 /* IDENT_TOKEN */ && ['top', 'left', 'right', 'bottom'].indexOf(firstToken.value) !== -1) {\n          angle$1 = parseNamedSide(arg);\n          return;\n        } else if (isAngle(firstToken)) {\n          angle$1 = (angle.parse(context, firstToken) + deg(270)) % deg(360);\n          return;\n        }\n      }\n      var colorStop = parseColorStop(context, arg);\n      stops.push(colorStop);\n    });\n    return {\n      angle: angle$1,\n      stops: stops,\n      type: 1 /* LINEAR_GRADIENT */\n    };\n  };\n  var webkitGradient = function (context, tokens) {\n    var angle = deg(180);\n    var stops = [];\n    var type = 1 /* LINEAR_GRADIENT */;\n    var shape = 0 /* CIRCLE */;\n    var size = 3 /* FARTHEST_CORNER */;\n    var position = [];\n    parseFunctionArgs(tokens).forEach(function (arg, i) {\n      var firstToken = arg[0];\n      if (i === 0) {\n        if (isIdentToken(firstToken) && firstToken.value === 'linear') {\n          type = 1 /* LINEAR_GRADIENT */;\n          return;\n        } else if (isIdentToken(firstToken) && firstToken.value === 'radial') {\n          type = 2 /* RADIAL_GRADIENT */;\n          return;\n        }\n      }\n      if (firstToken.type === 18 /* FUNCTION */) {\n        if (firstToken.name === 'from') {\n          var color = color$1.parse(context, firstToken.values[0]);\n          stops.push({\n            stop: ZERO_LENGTH,\n            color: color\n          });\n        } else if (firstToken.name === 'to') {\n          var color = color$1.parse(context, firstToken.values[0]);\n          stops.push({\n            stop: HUNDRED_PERCENT,\n            color: color\n          });\n        } else if (firstToken.name === 'color-stop') {\n          var values = firstToken.values.filter(nonFunctionArgSeparator);\n          if (values.length === 2) {\n            var color = color$1.parse(context, values[1]);\n            var stop_1 = values[0];\n            if (isNumberToken(stop_1)) {\n              stops.push({\n                stop: {\n                  type: 16 /* PERCENTAGE_TOKEN */,\n                  number: stop_1.number * 100,\n                  flags: stop_1.flags\n                },\n                color: color\n              });\n            }\n          }\n        }\n      }\n    });\n    return type === 1 /* LINEAR_GRADIENT */ ? {\n      angle: (angle + deg(180)) % deg(360),\n      stops: stops,\n      type: type\n    } : {\n      size: size,\n      shape: shape,\n      stops: stops,\n      position: position,\n      type: type\n    };\n  };\n  var CLOSEST_SIDE = 'closest-side';\n  var FARTHEST_SIDE = 'farthest-side';\n  var CLOSEST_CORNER = 'closest-corner';\n  var FARTHEST_CORNER = 'farthest-corner';\n  var CIRCLE = 'circle';\n  var ELLIPSE = 'ellipse';\n  var COVER = 'cover';\n  var CONTAIN = 'contain';\n  var radialGradient = function (context, tokens) {\n    var shape = 0 /* CIRCLE */;\n    var size = 3 /* FARTHEST_CORNER */;\n    var stops = [];\n    var position = [];\n    parseFunctionArgs(tokens).forEach(function (arg, i) {\n      var isColorStop = true;\n      if (i === 0) {\n        var isAtPosition_1 = false;\n        isColorStop = arg.reduce(function (acc, token) {\n          if (isAtPosition_1) {\n            if (isIdentToken(token)) {\n              switch (token.value) {\n                case 'center':\n                  position.push(FIFTY_PERCENT);\n                  return acc;\n                case 'top':\n                case 'left':\n                  position.push(ZERO_LENGTH);\n                  return acc;\n                case 'right':\n                case 'bottom':\n                  position.push(HUNDRED_PERCENT);\n                  return acc;\n              }\n            } else if (isLengthPercentage(token) || isLength(token)) {\n              position.push(token);\n            }\n          } else if (isIdentToken(token)) {\n            switch (token.value) {\n              case CIRCLE:\n                shape = 0 /* CIRCLE */;\n                return false;\n              case ELLIPSE:\n                shape = 1 /* ELLIPSE */;\n                return false;\n              case 'at':\n                isAtPosition_1 = true;\n                return false;\n              case CLOSEST_SIDE:\n                size = 0 /* CLOSEST_SIDE */;\n                return false;\n              case COVER:\n              case FARTHEST_SIDE:\n                size = 1 /* FARTHEST_SIDE */;\n                return false;\n              case CONTAIN:\n              case CLOSEST_CORNER:\n                size = 2 /* CLOSEST_CORNER */;\n                return false;\n              case FARTHEST_CORNER:\n                size = 3 /* FARTHEST_CORNER */;\n                return false;\n            }\n          } else if (isLength(token) || isLengthPercentage(token)) {\n            if (!Array.isArray(size)) {\n              size = [];\n            }\n            size.push(token);\n            return false;\n          }\n          return acc;\n        }, isColorStop);\n      }\n      if (isColorStop) {\n        var colorStop = parseColorStop(context, arg);\n        stops.push(colorStop);\n      }\n    });\n    return {\n      size: size,\n      shape: shape,\n      stops: stops,\n      position: position,\n      type: 2 /* RADIAL_GRADIENT */\n    };\n  };\n  var prefixRadialGradient = function (context, tokens) {\n    var shape = 0 /* CIRCLE */;\n    var size = 3 /* FARTHEST_CORNER */;\n    var stops = [];\n    var position = [];\n    parseFunctionArgs(tokens).forEach(function (arg, i) {\n      var isColorStop = true;\n      if (i === 0) {\n        isColorStop = arg.reduce(function (acc, token) {\n          if (isIdentToken(token)) {\n            switch (token.value) {\n              case 'center':\n                position.push(FIFTY_PERCENT);\n                return false;\n              case 'top':\n              case 'left':\n                position.push(ZERO_LENGTH);\n                return false;\n              case 'right':\n              case 'bottom':\n                position.push(HUNDRED_PERCENT);\n                return false;\n            }\n          } else if (isLengthPercentage(token) || isLength(token)) {\n            position.push(token);\n            return false;\n          }\n          return acc;\n        }, isColorStop);\n      } else if (i === 1) {\n        isColorStop = arg.reduce(function (acc, token) {\n          if (isIdentToken(token)) {\n            switch (token.value) {\n              case CIRCLE:\n                shape = 0 /* CIRCLE */;\n                return false;\n              case ELLIPSE:\n                shape = 1 /* ELLIPSE */;\n                return false;\n              case CONTAIN:\n              case CLOSEST_SIDE:\n                size = 0 /* CLOSEST_SIDE */;\n                return false;\n              case FARTHEST_SIDE:\n                size = 1 /* FARTHEST_SIDE */;\n                return false;\n              case CLOSEST_CORNER:\n                size = 2 /* CLOSEST_CORNER */;\n                return false;\n              case COVER:\n              case FARTHEST_CORNER:\n                size = 3 /* FARTHEST_CORNER */;\n                return false;\n            }\n          } else if (isLength(token) || isLengthPercentage(token)) {\n            if (!Array.isArray(size)) {\n              size = [];\n            }\n            size.push(token);\n            return false;\n          }\n          return acc;\n        }, isColorStop);\n      }\n      if (isColorStop) {\n        var colorStop = parseColorStop(context, arg);\n        stops.push(colorStop);\n      }\n    });\n    return {\n      size: size,\n      shape: shape,\n      stops: stops,\n      position: position,\n      type: 2 /* RADIAL_GRADIENT */\n    };\n  };\n  var isLinearGradient = function (background) {\n    return background.type === 1 /* LINEAR_GRADIENT */;\n  };\n  var isRadialGradient = function (background) {\n    return background.type === 2 /* RADIAL_GRADIENT */;\n  };\n  var image = {\n    name: 'image',\n    parse: function (context, value) {\n      if (value.type === 22 /* URL_TOKEN */) {\n        var image_1 = {\n          url: value.value,\n          type: 0 /* URL */\n        };\n        context.cache.addImage(value.value);\n        return image_1;\n      }\n      if (value.type === 18 /* FUNCTION */) {\n        var imageFunction = SUPPORTED_IMAGE_FUNCTIONS[value.name];\n        if (typeof imageFunction === 'undefined') {\n          throw new Error(\"Attempting to parse an unsupported image function \\\"\" + value.name + \"\\\"\");\n        }\n        return imageFunction(context, value.values);\n      }\n      throw new Error(\"Unsupported image type \" + value.type);\n    }\n  };\n  function isSupportedImage(value) {\n    return !(value.type === 20 /* IDENT_TOKEN */ && value.value === 'none') && (value.type !== 18 /* FUNCTION */ || !!SUPPORTED_IMAGE_FUNCTIONS[value.name]);\n  }\n  var SUPPORTED_IMAGE_FUNCTIONS = {\n    'linear-gradient': linearGradient,\n    '-moz-linear-gradient': prefixLinearGradient,\n    '-ms-linear-gradient': prefixLinearGradient,\n    '-o-linear-gradient': prefixLinearGradient,\n    '-webkit-linear-gradient': prefixLinearGradient,\n    'radial-gradient': radialGradient,\n    '-moz-radial-gradient': prefixRadialGradient,\n    '-ms-radial-gradient': prefixRadialGradient,\n    '-o-radial-gradient': prefixRadialGradient,\n    '-webkit-radial-gradient': prefixRadialGradient,\n    '-webkit-gradient': webkitGradient\n  };\n  var backgroundImage = {\n    name: 'background-image',\n    initialValue: 'none',\n    type: 1 /* LIST */,\n    prefix: false,\n    parse: function (context, tokens) {\n      if (tokens.length === 0) {\n        return [];\n      }\n      var first = tokens[0];\n      if (first.type === 20 /* IDENT_TOKEN */ && first.value === 'none') {\n        return [];\n      }\n      return tokens.filter(function (value) {\n        return nonFunctionArgSeparator(value) && isSupportedImage(value);\n      }).map(function (value) {\n        return image.parse(context, value);\n      });\n    }\n  };\n  var backgroundOrigin = {\n    name: 'background-origin',\n    initialValue: 'border-box',\n    prefix: false,\n    type: 1 /* LIST */,\n    parse: function (_context, tokens) {\n      return tokens.map(function (token) {\n        if (isIdentToken(token)) {\n          switch (token.value) {\n            case 'padding-box':\n              return 1 /* PADDING_BOX */;\n            case 'content-box':\n              return 2 /* CONTENT_BOX */;\n          }\n        }\n        return 0 /* BORDER_BOX */;\n      });\n    }\n  };\n  var backgroundPosition = {\n    name: 'background-position',\n    initialValue: '0% 0%',\n    type: 1 /* LIST */,\n    prefix: false,\n    parse: function (_context, tokens) {\n      return parseFunctionArgs(tokens).map(function (values) {\n        return values.filter(isLengthPercentage);\n      }).map(parseLengthPercentageTuple);\n    }\n  };\n  var backgroundRepeat = {\n    name: 'background-repeat',\n    initialValue: 'repeat',\n    prefix: false,\n    type: 1 /* LIST */,\n    parse: function (_context, tokens) {\n      return parseFunctionArgs(tokens).map(function (values) {\n        return values.filter(isIdentToken).map(function (token) {\n          return token.value;\n        }).join(' ');\n      }).map(parseBackgroundRepeat);\n    }\n  };\n  var parseBackgroundRepeat = function (value) {\n    switch (value) {\n      case 'no-repeat':\n        return 1 /* NO_REPEAT */;\n      case 'repeat-x':\n      case 'repeat no-repeat':\n        return 2 /* REPEAT_X */;\n      case 'repeat-y':\n      case 'no-repeat repeat':\n        return 3 /* REPEAT_Y */;\n      case 'repeat':\n      default:\n        return 0 /* REPEAT */;\n    }\n  };\n  var BACKGROUND_SIZE = /*#__PURE__*/function (BACKGROUND_SIZE) {\n    BACKGROUND_SIZE[\"AUTO\"] = \"auto\";\n    BACKGROUND_SIZE[\"CONTAIN\"] = \"contain\";\n    BACKGROUND_SIZE[\"COVER\"] = \"cover\";\n    return BACKGROUND_SIZE;\n  }(BACKGROUND_SIZE || {});\n  var backgroundSize = {\n    name: 'background-size',\n    initialValue: '0',\n    prefix: false,\n    type: 1 /* LIST */,\n    parse: function (_context, tokens) {\n      return parseFunctionArgs(tokens).map(function (values) {\n        return values.filter(isBackgroundSizeInfoToken);\n      });\n    }\n  };\n  var isBackgroundSizeInfoToken = function (value) {\n    return isIdentToken(value) || isLengthPercentage(value);\n  };\n  var borderColorForSide = function (side) {\n    return {\n      name: \"border-\" + side + \"-color\",\n      initialValue: 'transparent',\n      prefix: false,\n      type: 3 /* TYPE_VALUE */,\n      format: 'color'\n    };\n  };\n  var borderTopColor = borderColorForSide('top');\n  var borderRightColor = borderColorForSide('right');\n  var borderBottomColor = borderColorForSide('bottom');\n  var borderLeftColor = borderColorForSide('left');\n  var borderRadiusForSide = function (side) {\n    return {\n      name: \"border-radius-\" + side,\n      initialValue: '0 0',\n      prefix: false,\n      type: 1 /* LIST */,\n      parse: function (_context, tokens) {\n        return parseLengthPercentageTuple(tokens.filter(isLengthPercentage));\n      }\n    };\n  };\n  var borderTopLeftRadius = borderRadiusForSide('top-left');\n  var borderTopRightRadius = borderRadiusForSide('top-right');\n  var borderBottomRightRadius = borderRadiusForSide('bottom-right');\n  var borderBottomLeftRadius = borderRadiusForSide('bottom-left');\n  var borderStyleForSide = function (side) {\n    return {\n      name: \"border-\" + side + \"-style\",\n      initialValue: 'solid',\n      prefix: false,\n      type: 2 /* IDENT_VALUE */,\n      parse: function (_context, style) {\n        switch (style) {\n          case 'none':\n            return 0 /* NONE */;\n          case 'dashed':\n            return 2 /* DASHED */;\n          case 'dotted':\n            return 3 /* DOTTED */;\n          case 'double':\n            return 4 /* DOUBLE */;\n        }\n        return 1 /* SOLID */;\n      }\n    };\n  };\n  var borderTopStyle = borderStyleForSide('top');\n  var borderRightStyle = borderStyleForSide('right');\n  var borderBottomStyle = borderStyleForSide('bottom');\n  var borderLeftStyle = borderStyleForSide('left');\n  var borderWidthForSide = function (side) {\n    return {\n      name: \"border-\" + side + \"-width\",\n      initialValue: '0',\n      type: 0 /* VALUE */,\n      prefix: false,\n      parse: function (_context, token) {\n        if (isDimensionToken(token)) {\n          return token.number;\n        }\n        return 0;\n      }\n    };\n  };\n  var borderTopWidth = borderWidthForSide('top');\n  var borderRightWidth = borderWidthForSide('right');\n  var borderBottomWidth = borderWidthForSide('bottom');\n  var borderLeftWidth = borderWidthForSide('left');\n  var color = {\n    name: \"color\",\n    initialValue: 'transparent',\n    prefix: false,\n    type: 3 /* TYPE_VALUE */,\n    format: 'color'\n  };\n  var direction = {\n    name: 'direction',\n    initialValue: 'ltr',\n    prefix: false,\n    type: 2 /* IDENT_VALUE */,\n    parse: function (_context, direction) {\n      switch (direction) {\n        case 'rtl':\n          return 1 /* RTL */;\n        case 'ltr':\n        default:\n          return 0 /* LTR */;\n      }\n    }\n  };\n  var display = {\n    name: 'display',\n    initialValue: 'inline-block',\n    prefix: false,\n    type: 1 /* LIST */,\n    parse: function (_context, tokens) {\n      return tokens.filter(isIdentToken).reduce(function (bit, token) {\n        return bit | parseDisplayValue(token.value);\n      }, 0 /* NONE */);\n    }\n  };\n  var parseDisplayValue = function (display) {\n    switch (display) {\n      case 'block':\n      case '-webkit-box':\n        return 2 /* BLOCK */;\n      case 'inline':\n        return 4 /* INLINE */;\n      case 'run-in':\n        return 8 /* RUN_IN */;\n      case 'flow':\n        return 16 /* FLOW */;\n      case 'flow-root':\n        return 32 /* FLOW_ROOT */;\n      case 'table':\n        return 64 /* TABLE */;\n      case 'flex':\n      case '-webkit-flex':\n        return 128 /* FLEX */;\n      case 'grid':\n      case '-ms-grid':\n        return 256 /* GRID */;\n      case 'ruby':\n        return 512 /* RUBY */;\n      case 'subgrid':\n        return 1024 /* SUBGRID */;\n      case 'list-item':\n        return 2048 /* LIST_ITEM */;\n      case 'table-row-group':\n        return 4096 /* TABLE_ROW_GROUP */;\n      case 'table-header-group':\n        return 8192 /* TABLE_HEADER_GROUP */;\n      case 'table-footer-group':\n        return 16384 /* TABLE_FOOTER_GROUP */;\n      case 'table-row':\n        return 32768 /* TABLE_ROW */;\n      case 'table-cell':\n        return 65536 /* TABLE_CELL */;\n      case 'table-column-group':\n        return 131072 /* TABLE_COLUMN_GROUP */;\n      case 'table-column':\n        return 262144 /* TABLE_COLUMN */;\n      case 'table-caption':\n        return 524288 /* TABLE_CAPTION */;\n      case 'ruby-base':\n        return 1048576 /* RUBY_BASE */;\n      case 'ruby-text':\n        return 2097152 /* RUBY_TEXT */;\n      case 'ruby-base-container':\n        return 4194304 /* RUBY_BASE_CONTAINER */;\n      case 'ruby-text-container':\n        return 8388608 /* RUBY_TEXT_CONTAINER */;\n      case 'contents':\n        return 16777216 /* CONTENTS */;\n      case 'inline-block':\n        return 33554432 /* INLINE_BLOCK */;\n      case 'inline-list-item':\n        return 67108864 /* INLINE_LIST_ITEM */;\n      case 'inline-table':\n        return 134217728 /* INLINE_TABLE */;\n      case 'inline-flex':\n        return 268435456 /* INLINE_FLEX */;\n      case 'inline-grid':\n        return 536870912 /* INLINE_GRID */;\n    }\n    return 0 /* NONE */;\n  };\n  var float = {\n    name: 'float',\n    initialValue: 'none',\n    prefix: false,\n    type: 2 /* IDENT_VALUE */,\n    parse: function (_context, float) {\n      switch (float) {\n        case 'left':\n          return 1 /* LEFT */;\n        case 'right':\n          return 2 /* RIGHT */;\n        case 'inline-start':\n          return 3 /* INLINE_START */;\n        case 'inline-end':\n          return 4 /* INLINE_END */;\n      }\n      return 0 /* NONE */;\n    }\n  };\n  var letterSpacing = {\n    name: 'letter-spacing',\n    initialValue: '0',\n    prefix: false,\n    type: 0 /* VALUE */,\n    parse: function (_context, token) {\n      if (token.type === 20 /* IDENT_TOKEN */ && token.value === 'normal') {\n        return 0;\n      }\n      if (token.type === 17 /* NUMBER_TOKEN */) {\n        return token.number;\n      }\n      if (token.type === 15 /* DIMENSION_TOKEN */) {\n        return token.number;\n      }\n      return 0;\n    }\n  };\n  var LINE_BREAK = /*#__PURE__*/function (LINE_BREAK) {\n    LINE_BREAK[\"NORMAL\"] = \"normal\";\n    LINE_BREAK[\"STRICT\"] = \"strict\";\n    return LINE_BREAK;\n  }(LINE_BREAK || {});\n  var lineBreak = {\n    name: 'line-break',\n    initialValue: 'normal',\n    prefix: false,\n    type: 2 /* IDENT_VALUE */,\n    parse: function (_context, lineBreak) {\n      switch (lineBreak) {\n        case 'strict':\n          return LINE_BREAK.STRICT;\n        case 'normal':\n        default:\n          return LINE_BREAK.NORMAL;\n      }\n    }\n  };\n  var lineHeight = {\n    name: 'line-height',\n    initialValue: 'normal',\n    prefix: false,\n    type: 4 /* TOKEN_VALUE */\n  };\n  var computeLineHeight = function (token, fontSize) {\n    if (isIdentToken(token) && token.value === 'normal') {\n      return 1.2 * fontSize;\n    } else if (token.type === 17 /* NUMBER_TOKEN */) {\n      return fontSize * token.number;\n    } else if (isLengthPercentage(token)) {\n      return getAbsoluteValue(token, fontSize);\n    }\n    return fontSize;\n  };\n  var listStyleImage = {\n    name: 'list-style-image',\n    initialValue: 'none',\n    type: 0 /* VALUE */,\n    prefix: false,\n    parse: function (context, token) {\n      if (token.type === 20 /* IDENT_TOKEN */ && token.value === 'none') {\n        return null;\n      }\n      return image.parse(context, token);\n    }\n  };\n  var listStylePosition = {\n    name: 'list-style-position',\n    initialValue: 'outside',\n    prefix: false,\n    type: 2 /* IDENT_VALUE */,\n    parse: function (_context, position) {\n      switch (position) {\n        case 'inside':\n          return 0 /* INSIDE */;\n        case 'outside':\n        default:\n          return 1 /* OUTSIDE */;\n      }\n    }\n  };\n  var listStyleType = {\n    name: 'list-style-type',\n    initialValue: 'none',\n    prefix: false,\n    type: 2 /* IDENT_VALUE */,\n    parse: function (_context, type) {\n      switch (type) {\n        case 'disc':\n          return 0 /* DISC */;\n        case 'circle':\n          return 1 /* CIRCLE */;\n        case 'square':\n          return 2 /* SQUARE */;\n        case 'decimal':\n          return 3 /* DECIMAL */;\n        case 'cjk-decimal':\n          return 4 /* CJK_DECIMAL */;\n        case 'decimal-leading-zero':\n          return 5 /* DECIMAL_LEADING_ZERO */;\n        case 'lower-roman':\n          return 6 /* LOWER_ROMAN */;\n        case 'upper-roman':\n          return 7 /* UPPER_ROMAN */;\n        case 'lower-greek':\n          return 8 /* LOWER_GREEK */;\n        case 'lower-alpha':\n          return 9 /* LOWER_ALPHA */;\n        case 'upper-alpha':\n          return 10 /* UPPER_ALPHA */;\n        case 'arabic-indic':\n          return 11 /* ARABIC_INDIC */;\n        case 'armenian':\n          return 12 /* ARMENIAN */;\n        case 'bengali':\n          return 13 /* BENGALI */;\n        case 'cambodian':\n          return 14 /* CAMBODIAN */;\n        case 'cjk-earthly-branch':\n          return 15 /* CJK_EARTHLY_BRANCH */;\n        case 'cjk-heavenly-stem':\n          return 16 /* CJK_HEAVENLY_STEM */;\n        case 'cjk-ideographic':\n          return 17 /* CJK_IDEOGRAPHIC */;\n        case 'devanagari':\n          return 18 /* DEVANAGARI */;\n        case 'ethiopic-numeric':\n          return 19 /* ETHIOPIC_NUMERIC */;\n        case 'georgian':\n          return 20 /* GEORGIAN */;\n        case 'gujarati':\n          return 21 /* GUJARATI */;\n        case 'gurmukhi':\n          return 22 /* GURMUKHI */;\n        case 'hebrew':\n          return 22 /* HEBREW */;\n        case 'hiragana':\n          return 23 /* HIRAGANA */;\n        case 'hiragana-iroha':\n          return 24 /* HIRAGANA_IROHA */;\n        case 'japanese-formal':\n          return 25 /* JAPANESE_FORMAL */;\n        case 'japanese-informal':\n          return 26 /* JAPANESE_INFORMAL */;\n        case 'kannada':\n          return 27 /* KANNADA */;\n        case 'katakana':\n          return 28 /* KATAKANA */;\n        case 'katakana-iroha':\n          return 29 /* KATAKANA_IROHA */;\n        case 'khmer':\n          return 30 /* KHMER */;\n        case 'korean-hangul-formal':\n          return 31 /* KOREAN_HANGUL_FORMAL */;\n        case 'korean-hanja-formal':\n          return 32 /* KOREAN_HANJA_FORMAL */;\n        case 'korean-hanja-informal':\n          return 33 /* KOREAN_HANJA_INFORMAL */;\n        case 'lao':\n          return 34 /* LAO */;\n        case 'lower-armenian':\n          return 35 /* LOWER_ARMENIAN */;\n        case 'malayalam':\n          return 36 /* MALAYALAM */;\n        case 'mongolian':\n          return 37 /* MONGOLIAN */;\n        case 'myanmar':\n          return 38 /* MYANMAR */;\n        case 'oriya':\n          return 39 /* ORIYA */;\n        case 'persian':\n          return 40 /* PERSIAN */;\n        case 'simp-chinese-formal':\n          return 41 /* SIMP_CHINESE_FORMAL */;\n        case 'simp-chinese-informal':\n          return 42 /* SIMP_CHINESE_INFORMAL */;\n        case 'tamil':\n          return 43 /* TAMIL */;\n        case 'telugu':\n          return 44 /* TELUGU */;\n        case 'thai':\n          return 45 /* THAI */;\n        case 'tibetan':\n          return 46 /* TIBETAN */;\n        case 'trad-chinese-formal':\n          return 47 /* TRAD_CHINESE_FORMAL */;\n        case 'trad-chinese-informal':\n          return 48 /* TRAD_CHINESE_INFORMAL */;\n        case 'upper-armenian':\n          return 49 /* UPPER_ARMENIAN */;\n        case 'disclosure-open':\n          return 50 /* DISCLOSURE_OPEN */;\n        case 'disclosure-closed':\n          return 51 /* DISCLOSURE_CLOSED */;\n        case 'none':\n        default:\n          return -1 /* NONE */;\n      }\n    }\n  };\n  var marginForSide = function (side) {\n    return {\n      name: \"margin-\" + side,\n      initialValue: '0',\n      prefix: false,\n      type: 4 /* TOKEN_VALUE */\n    };\n  };\n  var marginTop = marginForSide('top');\n  var marginRight = marginForSide('right');\n  var marginBottom = marginForSide('bottom');\n  var marginLeft = marginForSide('left');\n  var overflow = {\n    name: 'overflow',\n    initialValue: 'visible',\n    prefix: false,\n    type: 1 /* LIST */,\n    parse: function (_context, tokens) {\n      return tokens.filter(isIdentToken).map(function (overflow) {\n        switch (overflow.value) {\n          case 'hidden':\n            return 1 /* HIDDEN */;\n          case 'scroll':\n            return 2 /* SCROLL */;\n          case 'clip':\n            return 3 /* CLIP */;\n          case 'auto':\n            return 4 /* AUTO */;\n          case 'visible':\n          default:\n            return 0 /* VISIBLE */;\n        }\n      });\n    }\n  };\n  var overflowWrap = {\n    name: 'overflow-wrap',\n    initialValue: 'normal',\n    prefix: false,\n    type: 2 /* IDENT_VALUE */,\n    parse: function (_context, overflow) {\n      switch (overflow) {\n        case 'break-word':\n          return \"break-word\" /* BREAK_WORD */;\n        case 'normal':\n        default:\n          return \"normal\" /* NORMAL */;\n      }\n    }\n  };\n  var paddingForSide = function (side) {\n    return {\n      name: \"padding-\" + side,\n      initialValue: '0',\n      prefix: false,\n      type: 3 /* TYPE_VALUE */,\n      format: 'length-percentage'\n    };\n  };\n  var paddingTop = paddingForSide('top');\n  var paddingRight = paddingForSide('right');\n  var paddingBottom = paddingForSide('bottom');\n  var paddingLeft = paddingForSide('left');\n  var textAlign = {\n    name: 'text-align',\n    initialValue: 'left',\n    prefix: false,\n    type: 2 /* IDENT_VALUE */,\n    parse: function (_context, textAlign) {\n      switch (textAlign) {\n        case 'right':\n          return 2 /* RIGHT */;\n        case 'center':\n        case 'justify':\n          return 1 /* CENTER */;\n        case 'left':\n        default:\n          return 0 /* LEFT */;\n      }\n    }\n  };\n  var position = {\n    name: 'position',\n    initialValue: 'static',\n    prefix: false,\n    type: 2 /* IDENT_VALUE */,\n    parse: function (_context, position) {\n      switch (position) {\n        case 'relative':\n          return 1 /* RELATIVE */;\n        case 'absolute':\n          return 2 /* ABSOLUTE */;\n        case 'fixed':\n          return 3 /* FIXED */;\n        case 'sticky':\n          return 4 /* STICKY */;\n      }\n      return 0 /* STATIC */;\n    }\n  };\n  var textShadow = {\n    name: 'text-shadow',\n    initialValue: 'none',\n    type: 1 /* LIST */,\n    prefix: false,\n    parse: function (context, tokens) {\n      if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) {\n        return [];\n      }\n      return parseFunctionArgs(tokens).map(function (values) {\n        var shadow = {\n          color: COLORS.TRANSPARENT,\n          offsetX: ZERO_LENGTH,\n          offsetY: ZERO_LENGTH,\n          blur: ZERO_LENGTH\n        };\n        var c = 0;\n        for (var i = 0; i < values.length; i++) {\n          var token = values[i];\n          if (isLength(token)) {\n            if (c === 0) {\n              shadow.offsetX = token;\n            } else if (c === 1) {\n              shadow.offsetY = token;\n            } else {\n              shadow.blur = token;\n            }\n            c++;\n          } else {\n            shadow.color = color$1.parse(context, token);\n          }\n        }\n        return shadow;\n      });\n    }\n  };\n  var textTransform = {\n    name: 'text-transform',\n    initialValue: 'none',\n    prefix: false,\n    type: 2 /* IDENT_VALUE */,\n    parse: function (_context, textTransform) {\n      switch (textTransform) {\n        case 'uppercase':\n          return 2 /* UPPERCASE */;\n        case 'lowercase':\n          return 1 /* LOWERCASE */;\n        case 'capitalize':\n          return 3 /* CAPITALIZE */;\n      }\n      return 0 /* NONE */;\n    }\n  };\n  var transform$1 = {\n    name: 'transform',\n    initialValue: 'none',\n    prefix: true,\n    type: 0 /* VALUE */,\n    parse: function (_context, token) {\n      if (token.type === 20 /* IDENT_TOKEN */ && token.value === 'none') {\n        return null;\n      }\n      if (token.type === 18 /* FUNCTION */) {\n        var transformFunction = SUPPORTED_TRANSFORM_FUNCTIONS[token.name];\n        if (typeof transformFunction === 'undefined') {\n          throw new Error(\"Attempting to parse an unsupported transform function \\\"\" + token.name + \"\\\"\");\n        }\n        return transformFunction(token.values);\n      }\n      return null;\n    }\n  };\n  var matrix = function (args) {\n    var values = args.filter(function (arg) {\n      return arg.type === 17 /* NUMBER_TOKEN */;\n    }).map(function (arg) {\n      return arg.number;\n    });\n    return values.length === 6 ? values : null;\n  };\n  // doesn't support 3D transforms at the moment\n  var matrix3d = function (args) {\n    var values = args.filter(function (arg) {\n      return arg.type === 17 /* NUMBER_TOKEN */;\n    }).map(function (arg) {\n      return arg.number;\n    });\n    var a1 = values[0],\n      b1 = values[1];\n    values[2];\n    values[3];\n    var a2 = values[4],\n      b2 = values[5];\n    values[6];\n    values[7];\n    values[8];\n    values[9];\n    values[10];\n    values[11];\n    var a4 = values[12],\n      b4 = values[13];\n    values[14];\n    values[15];\n    return values.length === 16 ? [a1, b1, a2, b2, a4, b4] : null;\n  };\n  var SUPPORTED_TRANSFORM_FUNCTIONS = {\n    matrix: matrix,\n    matrix3d: matrix3d\n  };\n  var DEFAULT_VALUE = {\n    type: 16 /* PERCENTAGE_TOKEN */,\n    number: 50,\n    flags: FLAG_INTEGER\n  };\n  var DEFAULT = [DEFAULT_VALUE, DEFAULT_VALUE];\n  var transformOrigin = {\n    name: 'transform-origin',\n    initialValue: '50% 50%',\n    prefix: true,\n    type: 1 /* LIST */,\n    parse: function (_context, tokens) {\n      var origins = tokens.filter(isLengthPercentage);\n      if (origins.length !== 2) {\n        return DEFAULT;\n      }\n      return [origins[0], origins[1]];\n    }\n  };\n  var visibility = {\n    name: 'visible',\n    initialValue: 'none',\n    prefix: false,\n    type: 2 /* IDENT_VALUE */,\n    parse: function (_context, visibility) {\n      switch (visibility) {\n        case 'hidden':\n          return 1 /* HIDDEN */;\n        case 'collapse':\n          return 2 /* COLLAPSE */;\n        case 'visible':\n        default:\n          return 0 /* VISIBLE */;\n      }\n    }\n  };\n  var WORD_BREAK = /*#__PURE__*/function (WORD_BREAK) {\n    WORD_BREAK[\"NORMAL\"] = \"normal\";\n    WORD_BREAK[\"BREAK_ALL\"] = \"break-all\";\n    WORD_BREAK[\"KEEP_ALL\"] = \"keep-all\";\n    return WORD_BREAK;\n  }(WORD_BREAK || {});\n  var wordBreak = {\n    name: 'word-break',\n    initialValue: 'normal',\n    prefix: false,\n    type: 2 /* IDENT_VALUE */,\n    parse: function (_context, wordBreak) {\n      switch (wordBreak) {\n        case 'break-all':\n          return WORD_BREAK.BREAK_ALL;\n        case 'keep-all':\n          return WORD_BREAK.KEEP_ALL;\n        case 'normal':\n        default:\n          return WORD_BREAK.NORMAL;\n      }\n    }\n  };\n  var zIndex = {\n    name: 'z-index',\n    initialValue: 'auto',\n    prefix: false,\n    type: 0 /* VALUE */,\n    parse: function (_context, token) {\n      if (token.type === 20 /* IDENT_TOKEN */) {\n        return {\n          auto: true,\n          order: 0\n        };\n      }\n      if (isNumberToken(token)) {\n        return {\n          auto: false,\n          order: token.number\n        };\n      }\n      throw new Error(\"Invalid z-index number parsed\");\n    }\n  };\n  var time = {\n    name: 'time',\n    parse: function (_context, value) {\n      if (value.type === 15 /* DIMENSION_TOKEN */) {\n        switch (value.unit.toLowerCase()) {\n          case 's':\n            return 1000 * value.number;\n          case 'ms':\n            return value.number;\n        }\n      }\n      throw new Error(\"Unsupported time type\");\n    }\n  };\n  var opacity = {\n    name: 'opacity',\n    initialValue: '1',\n    type: 0 /* VALUE */,\n    prefix: false,\n    parse: function (_context, token) {\n      if (isNumberToken(token)) {\n        return token.number;\n      }\n      return 1;\n    }\n  };\n  var textDecorationColor = {\n    name: \"text-decoration-color\",\n    initialValue: 'transparent',\n    prefix: false,\n    type: 3 /* TYPE_VALUE */,\n    format: 'color'\n  };\n  var textDecorationLine = {\n    name: 'text-decoration-line',\n    initialValue: 'none',\n    prefix: false,\n    type: 1 /* LIST */,\n    parse: function (_context, tokens) {\n      return tokens.filter(isIdentToken).map(function (token) {\n        switch (token.value) {\n          case 'underline':\n            return 1 /* UNDERLINE */;\n          case 'overline':\n            return 2 /* OVERLINE */;\n          case 'line-through':\n            return 3 /* LINE_THROUGH */;\n          case 'none':\n            return 4 /* BLINK */;\n        }\n        return 0 /* NONE */;\n      }).filter(function (line) {\n        return line !== 0 /* NONE */;\n      });\n    }\n  };\n  var fontFamily = {\n    name: \"font-family\",\n    initialValue: '',\n    prefix: false,\n    type: 1 /* LIST */,\n    parse: function (_context, tokens) {\n      var accumulator = [];\n      var results = [];\n      tokens.forEach(function (token) {\n        switch (token.type) {\n          case 20 /* IDENT_TOKEN */:\n          case 0 /* STRING_TOKEN */:\n            accumulator.push(token.value);\n            break;\n          case 17 /* NUMBER_TOKEN */:\n            accumulator.push(token.number.toString());\n            break;\n          case 4 /* COMMA_TOKEN */:\n            results.push(accumulator.join(' '));\n            accumulator.length = 0;\n            break;\n        }\n      });\n      if (accumulator.length) {\n        results.push(accumulator.join(' '));\n      }\n      return results.map(function (result) {\n        return result.indexOf(' ') === -1 ? result : \"'\" + result + \"'\";\n      });\n    }\n  };\n  var fontSize = {\n    name: \"font-size\",\n    initialValue: '0',\n    prefix: false,\n    type: 3 /* TYPE_VALUE */,\n    format: 'length'\n  };\n  var fontWeight = {\n    name: 'font-weight',\n    initialValue: 'normal',\n    type: 0 /* VALUE */,\n    prefix: false,\n    parse: function (_context, token) {\n      if (isNumberToken(token)) {\n        return token.number;\n      }\n      if (isIdentToken(token)) {\n        switch (token.value) {\n          case 'bold':\n            return 700;\n          case 'normal':\n          default:\n            return 400;\n        }\n      }\n      return 400;\n    }\n  };\n  var fontVariant = {\n    name: 'font-variant',\n    initialValue: 'none',\n    type: 1 /* LIST */,\n    prefix: false,\n    parse: function (_context, tokens) {\n      return tokens.filter(isIdentToken).map(function (token) {\n        return token.value;\n      });\n    }\n  };\n  var fontStyle = {\n    name: 'font-style',\n    initialValue: 'normal',\n    prefix: false,\n    type: 2 /* IDENT_VALUE */,\n    parse: function (_context, overflow) {\n      switch (overflow) {\n        case 'oblique':\n          return \"oblique\" /* OBLIQUE */;\n        case 'italic':\n          return \"italic\" /* ITALIC */;\n        case 'normal':\n        default:\n          return \"normal\" /* NORMAL */;\n      }\n    }\n  };\n  var contains = function (bit, value) {\n    return (bit & value) !== 0;\n  };\n  var content = {\n    name: 'content',\n    initialValue: 'none',\n    type: 1 /* LIST */,\n    prefix: false,\n    parse: function (_context, tokens) {\n      if (tokens.length === 0) {\n        return [];\n      }\n      var first = tokens[0];\n      if (first.type === 20 /* IDENT_TOKEN */ && first.value === 'none') {\n        return [];\n      }\n      return tokens;\n    }\n  };\n  var counterIncrement = {\n    name: 'counter-increment',\n    initialValue: 'none',\n    prefix: true,\n    type: 1 /* LIST */,\n    parse: function (_context, tokens) {\n      if (tokens.length === 0) {\n        return null;\n      }\n      var first = tokens[0];\n      if (first.type === 20 /* IDENT_TOKEN */ && first.value === 'none') {\n        return null;\n      }\n      var increments = [];\n      var filtered = tokens.filter(nonWhiteSpace);\n      for (var i = 0; i < filtered.length; i++) {\n        var counter = filtered[i];\n        var next = filtered[i + 1];\n        if (counter.type === 20 /* IDENT_TOKEN */) {\n          var increment = next && isNumberToken(next) ? next.number : 1;\n          increments.push({\n            counter: counter.value,\n            increment: increment\n          });\n        }\n      }\n      return increments;\n    }\n  };\n  var counterReset = {\n    name: 'counter-reset',\n    initialValue: 'none',\n    prefix: true,\n    type: 1 /* LIST */,\n    parse: function (_context, tokens) {\n      if (tokens.length === 0) {\n        return [];\n      }\n      var resets = [];\n      var filtered = tokens.filter(nonWhiteSpace);\n      for (var i = 0; i < filtered.length; i++) {\n        var counter = filtered[i];\n        var next = filtered[i + 1];\n        if (isIdentToken(counter) && counter.value !== 'none') {\n          var reset = next && isNumberToken(next) ? next.number : 0;\n          resets.push({\n            counter: counter.value,\n            reset: reset\n          });\n        }\n      }\n      return resets;\n    }\n  };\n  var duration = {\n    name: 'duration',\n    initialValue: '0s',\n    prefix: false,\n    type: 1 /* LIST */,\n    parse: function (context, tokens) {\n      return tokens.filter(isDimensionToken).map(function (token) {\n        return time.parse(context, token);\n      });\n    }\n  };\n  var quotes = {\n    name: 'quotes',\n    initialValue: 'none',\n    prefix: true,\n    type: 1 /* LIST */,\n    parse: function (_context, tokens) {\n      if (tokens.length === 0) {\n        return null;\n      }\n      var first = tokens[0];\n      if (first.type === 20 /* IDENT_TOKEN */ && first.value === 'none') {\n        return null;\n      }\n      var quotes = [];\n      var filtered = tokens.filter(isStringToken);\n      if (filtered.length % 2 !== 0) {\n        return null;\n      }\n      for (var i = 0; i < filtered.length; i += 2) {\n        var open_1 = filtered[i].value;\n        var close_1 = filtered[i + 1].value;\n        quotes.push({\n          open: open_1,\n          close: close_1\n        });\n      }\n      return quotes;\n    }\n  };\n  var getQuote = function (quotes, depth, open) {\n    if (!quotes) {\n      return '';\n    }\n    var quote = quotes[Math.min(depth, quotes.length - 1)];\n    if (!quote) {\n      return '';\n    }\n    return open ? quote.open : quote.close;\n  };\n  var boxShadow = {\n    name: 'box-shadow',\n    initialValue: 'none',\n    type: 1 /* LIST */,\n    prefix: false,\n    parse: function (context, tokens) {\n      if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) {\n        return [];\n      }\n      return parseFunctionArgs(tokens).map(function (values) {\n        var shadow = {\n          color: 0x000000ff,\n          offsetX: ZERO_LENGTH,\n          offsetY: ZERO_LENGTH,\n          blur: ZERO_LENGTH,\n          spread: ZERO_LENGTH,\n          inset: false\n        };\n        var c = 0;\n        for (var i = 0; i < values.length; i++) {\n          var token = values[i];\n          if (isIdentWithValue(token, 'inset')) {\n            shadow.inset = true;\n          } else if (isLength(token)) {\n            if (c === 0) {\n              shadow.offsetX = token;\n            } else if (c === 1) {\n              shadow.offsetY = token;\n            } else if (c === 2) {\n              shadow.blur = token;\n            } else {\n              shadow.spread = token;\n            }\n            c++;\n          } else {\n            shadow.color = color$1.parse(context, token);\n          }\n        }\n        return shadow;\n      });\n    }\n  };\n  var paintOrder = {\n    name: 'paint-order',\n    initialValue: 'normal',\n    prefix: false,\n    type: 1 /* LIST */,\n    parse: function (_context, tokens) {\n      var DEFAULT_VALUE = [0 /* FILL */, 1 /* STROKE */, 2 /* MARKERS */];\n      var layers = [];\n      tokens.filter(isIdentToken).forEach(function (token) {\n        switch (token.value) {\n          case 'stroke':\n            layers.push(1 /* STROKE */);\n            break;\n          case 'fill':\n            layers.push(0 /* FILL */);\n            break;\n          case 'markers':\n            layers.push(2 /* MARKERS */);\n            break;\n        }\n      });\n      DEFAULT_VALUE.forEach(function (value) {\n        if (layers.indexOf(value) === -1) {\n          layers.push(value);\n        }\n      });\n      return layers;\n    }\n  };\n  var webkitTextStrokeColor = {\n    name: \"-webkit-text-stroke-color\",\n    initialValue: 'currentcolor',\n    prefix: false,\n    type: 3 /* TYPE_VALUE */,\n    format: 'color'\n  };\n  var webkitTextStrokeWidth = {\n    name: \"-webkit-text-stroke-width\",\n    initialValue: '0',\n    type: 0 /* VALUE */,\n    prefix: false,\n    parse: function (_context, token) {\n      if (isDimensionToken(token)) {\n        return token.number;\n      }\n      return 0;\n    }\n  };\n  var CSSParsedDeclaration = /** @class */function () {\n    function CSSParsedDeclaration(context, declaration) {\n      var _a, _b;\n      this.animationDuration = parse(context, duration, declaration.animationDuration);\n      this.backgroundClip = parse(context, backgroundClip, declaration.backgroundClip);\n      this.backgroundColor = parse(context, backgroundColor, declaration.backgroundColor);\n      this.backgroundImage = parse(context, backgroundImage, declaration.backgroundImage);\n      this.backgroundOrigin = parse(context, backgroundOrigin, declaration.backgroundOrigin);\n      this.backgroundPosition = parse(context, backgroundPosition, declaration.backgroundPosition);\n      this.backgroundRepeat = parse(context, backgroundRepeat, declaration.backgroundRepeat);\n      this.backgroundSize = parse(context, backgroundSize, declaration.backgroundSize);\n      this.borderTopColor = parse(context, borderTopColor, declaration.borderTopColor);\n      this.borderRightColor = parse(context, borderRightColor, declaration.borderRightColor);\n      this.borderBottomColor = parse(context, borderBottomColor, declaration.borderBottomColor);\n      this.borderLeftColor = parse(context, borderLeftColor, declaration.borderLeftColor);\n      this.borderTopLeftRadius = parse(context, borderTopLeftRadius, declaration.borderTopLeftRadius);\n      this.borderTopRightRadius = parse(context, borderTopRightRadius, declaration.borderTopRightRadius);\n      this.borderBottomRightRadius = parse(context, borderBottomRightRadius, declaration.borderBottomRightRadius);\n      this.borderBottomLeftRadius = parse(context, borderBottomLeftRadius, declaration.borderBottomLeftRadius);\n      this.borderTopStyle = parse(context, borderTopStyle, declaration.borderTopStyle);\n      this.borderRightStyle = parse(context, borderRightStyle, declaration.borderRightStyle);\n      this.borderBottomStyle = parse(context, borderBottomStyle, declaration.borderBottomStyle);\n      this.borderLeftStyle = parse(context, borderLeftStyle, declaration.borderLeftStyle);\n      this.borderTopWidth = parse(context, borderTopWidth, declaration.borderTopWidth);\n      this.borderRightWidth = parse(context, borderRightWidth, declaration.borderRightWidth);\n      this.borderBottomWidth = parse(context, borderBottomWidth, declaration.borderBottomWidth);\n      this.borderLeftWidth = parse(context, borderLeftWidth, declaration.borderLeftWidth);\n      this.boxShadow = parse(context, boxShadow, declaration.boxShadow);\n      this.color = parse(context, color, declaration.color);\n      this.direction = parse(context, direction, declaration.direction);\n      this.display = parse(context, display, declaration.display);\n      this.float = parse(context, float, declaration.cssFloat);\n      this.fontFamily = parse(context, fontFamily, declaration.fontFamily);\n      this.fontSize = parse(context, fontSize, declaration.fontSize);\n      this.fontStyle = parse(context, fontStyle, declaration.fontStyle);\n      this.fontVariant = parse(context, fontVariant, declaration.fontVariant);\n      this.fontWeight = parse(context, fontWeight, declaration.fontWeight);\n      this.letterSpacing = parse(context, letterSpacing, declaration.letterSpacing);\n      this.lineBreak = parse(context, lineBreak, declaration.lineBreak);\n      this.lineHeight = parse(context, lineHeight, declaration.lineHeight);\n      this.listStyleImage = parse(context, listStyleImage, declaration.listStyleImage);\n      this.listStylePosition = parse(context, listStylePosition, declaration.listStylePosition);\n      this.listStyleType = parse(context, listStyleType, declaration.listStyleType);\n      this.marginTop = parse(context, marginTop, declaration.marginTop);\n      this.marginRight = parse(context, marginRight, declaration.marginRight);\n      this.marginBottom = parse(context, marginBottom, declaration.marginBottom);\n      this.marginLeft = parse(context, marginLeft, declaration.marginLeft);\n      this.opacity = parse(context, opacity, declaration.opacity);\n      var overflowTuple = parse(context, overflow, declaration.overflow);\n      this.overflowX = overflowTuple[0];\n      this.overflowY = overflowTuple[overflowTuple.length > 1 ? 1 : 0];\n      this.overflowWrap = parse(context, overflowWrap, declaration.overflowWrap);\n      this.paddingTop = parse(context, paddingTop, declaration.paddingTop);\n      this.paddingRight = parse(context, paddingRight, declaration.paddingRight);\n      this.paddingBottom = parse(context, paddingBottom, declaration.paddingBottom);\n      this.paddingLeft = parse(context, paddingLeft, declaration.paddingLeft);\n      this.paintOrder = parse(context, paintOrder, declaration.paintOrder);\n      this.position = parse(context, position, declaration.position);\n      this.textAlign = parse(context, textAlign, declaration.textAlign);\n      this.textDecorationColor = parse(context, textDecorationColor, (_a = declaration.textDecorationColor) !== null && _a !== void 0 ? _a : declaration.color);\n      this.textDecorationLine = parse(context, textDecorationLine, (_b = declaration.textDecorationLine) !== null && _b !== void 0 ? _b : declaration.textDecoration);\n      this.textShadow = parse(context, textShadow, declaration.textShadow);\n      this.textTransform = parse(context, textTransform, declaration.textTransform);\n      this.transform = parse(context, transform$1, declaration.transform);\n      this.transformOrigin = parse(context, transformOrigin, declaration.transformOrigin);\n      this.visibility = parse(context, visibility, declaration.visibility);\n      this.webkitTextStrokeColor = parse(context, webkitTextStrokeColor, declaration.webkitTextStrokeColor);\n      this.webkitTextStrokeWidth = parse(context, webkitTextStrokeWidth, declaration.webkitTextStrokeWidth);\n      this.wordBreak = parse(context, wordBreak, declaration.wordBreak);\n      this.zIndex = parse(context, zIndex, declaration.zIndex);\n    }\n    CSSParsedDeclaration.prototype.isVisible = function () {\n      return this.display > 0 && this.opacity > 0 && this.visibility === 0 /* VISIBLE */;\n    };\n    CSSParsedDeclaration.prototype.isTransparent = function () {\n      return isTransparent(this.backgroundColor);\n    };\n    CSSParsedDeclaration.prototype.isTransformed = function () {\n      return this.transform !== null;\n    };\n    CSSParsedDeclaration.prototype.isPositioned = function () {\n      return this.position !== 0 /* STATIC */;\n    };\n    CSSParsedDeclaration.prototype.isPositionedWithZIndex = function () {\n      return this.isPositioned() && !this.zIndex.auto;\n    };\n    CSSParsedDeclaration.prototype.isFloating = function () {\n      return this.float !== 0 /* NONE */;\n    };\n    CSSParsedDeclaration.prototype.isInlineLevel = function () {\n      return contains(this.display, 4 /* INLINE */) || contains(this.display, 33554432 /* INLINE_BLOCK */) || contains(this.display, 268435456 /* INLINE_FLEX */) || contains(this.display, 536870912 /* INLINE_GRID */) || contains(this.display, 67108864 /* INLINE_LIST_ITEM */) || contains(this.display, 134217728 /* INLINE_TABLE */);\n    };\n    return CSSParsedDeclaration;\n  }();\n  var CSSParsedPseudoDeclaration = /** @class */function () {\n    function CSSParsedPseudoDeclaration(context, declaration) {\n      this.content = parse(context, content, declaration.content);\n      this.quotes = parse(context, quotes, declaration.quotes);\n    }\n    return CSSParsedPseudoDeclaration;\n  }();\n  var CSSParsedCounterDeclaration = /** @class */function () {\n    function CSSParsedCounterDeclaration(context, declaration) {\n      this.counterIncrement = parse(context, counterIncrement, declaration.counterIncrement);\n      this.counterReset = parse(context, counterReset, declaration.counterReset);\n    }\n    return CSSParsedCounterDeclaration;\n  }();\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  var parse = function (context, descriptor, style) {\n    var tokenizer = new Tokenizer();\n    var value = style !== null && typeof style !== 'undefined' ? style.toString() : descriptor.initialValue;\n    tokenizer.write(value);\n    var parser = new Parser(tokenizer.read());\n    switch (descriptor.type) {\n      case 2 /* IDENT_VALUE */:\n        var token = parser.parseComponentValue();\n        return descriptor.parse(context, isIdentToken(token) ? token.value : descriptor.initialValue);\n      case 0 /* VALUE */:\n        return descriptor.parse(context, parser.parseComponentValue());\n      case 1 /* LIST */:\n        return descriptor.parse(context, parser.parseComponentValues());\n      case 4 /* TOKEN_VALUE */:\n        return parser.parseComponentValue();\n      case 3 /* TYPE_VALUE */:\n        switch (descriptor.format) {\n          case 'angle':\n            return angle.parse(context, parser.parseComponentValue());\n          case 'color':\n            return color$1.parse(context, parser.parseComponentValue());\n          case 'image':\n            return image.parse(context, parser.parseComponentValue());\n          case 'length':\n            var length_1 = parser.parseComponentValue();\n            return isLength(length_1) ? length_1 : ZERO_LENGTH;\n          case 'length-percentage':\n            var value_1 = parser.parseComponentValue();\n            return isLengthPercentage(value_1) ? value_1 : ZERO_LENGTH;\n          case 'time':\n            return time.parse(context, parser.parseComponentValue());\n        }\n        break;\n    }\n  };\n  var elementDebuggerAttribute = 'data-html2canvas-debug';\n  var getElementDebugType = function (element) {\n    var attribute = element.getAttribute(elementDebuggerAttribute);\n    switch (attribute) {\n      case 'all':\n        return 1 /* ALL */;\n      case 'clone':\n        return 2 /* CLONE */;\n      case 'parse':\n        return 3 /* PARSE */;\n      case 'render':\n        return 4 /* RENDER */;\n      default:\n        return 0 /* NONE */;\n    }\n  };\n  var isDebugging = function (element, type) {\n    var elementType = getElementDebugType(element);\n    return elementType === 1 /* ALL */ || type === elementType;\n  };\n  var ElementContainer = /** @class */function () {\n    function ElementContainer(context, element) {\n      this.context = context;\n      this.textNodes = [];\n      this.elements = [];\n      this.flags = 0;\n      if (isDebugging(element, 3 /* PARSE */)) {\n        debugger;\n      }\n      this.styles = new CSSParsedDeclaration(context, window.getComputedStyle(element, null));\n      if (isHTMLElementNode(element)) {\n        if (this.styles.animationDuration.some(function (duration) {\n          return duration > 0;\n        })) {\n          element.style.animationDuration = '0s';\n        }\n        if (this.styles.transform !== null) {\n          // getBoundingClientRect takes transforms into account\n          element.style.transform = 'none';\n        }\n      }\n      this.bounds = parseBounds(this.context, element);\n      if (isDebugging(element, 4 /* RENDER */)) {\n        this.flags |= 16 /* DEBUG_RENDER */;\n      }\n    }\n    return ElementContainer;\n  }();\n\n  /*\n   * text-segmentation 1.0.3 <https://github.com/niklasvh/text-segmentation>\n   * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>\n   * Released under MIT License\n   */\n  var base64 = 'AAAAAAAAAAAAEA4AGBkAAFAaAAACAAAAAAAIABAAGAAwADgACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAAQABIAEQATAAIABAACAAQAAgAEAAIABAAVABcAAgAEAAIABAACAAQAGAAaABwAHgAgACIAI4AlgAIABAAmwCjAKgAsAC2AL4AvQDFAMoA0gBPAVYBWgEIAAgACACMANoAYgFkAWwBdAF8AX0BhQGNAZUBlgGeAaMBlQGWAasBswF8AbsBwwF0AcsBYwHTAQgA2wG/AOMBdAF8AekB8QF0AfkB+wHiAHQBfAEIAAMC5gQIAAsCEgIIAAgAFgIeAggAIgIpAggAMQI5AkACygEIAAgASAJQAlgCYAIIAAgACAAKBQoFCgUTBRMFGQUrBSsFCAAIAAgACAAIAAgACAAIAAgACABdAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABoAmgCrwGvAQgAbgJ2AggAHgEIAAgACADnAXsCCAAIAAgAgwIIAAgACAAIAAgACACKAggAkQKZAggAPADJAAgAoQKkAqwCsgK6AsICCADJAggA0AIIAAgACAAIANYC3gIIAAgACAAIAAgACABAAOYCCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAkASoB+QIEAAgACAA8AEMCCABCBQgACABJBVAFCAAIAAgACAAIAAgACAAIAAgACABTBVoFCAAIAFoFCABfBWUFCAAIAAgACAAIAAgAbQUIAAgACAAIAAgACABzBXsFfQWFBYoFigWKBZEFigWKBYoFmAWfBaYFrgWxBbkFCAAIAAgACAAIAAgACAAIAAgACAAIAMEFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAMgFCADQBQgACAAIAAgACAAIAAgACAAIAAgACAAIAO4CCAAIAAgAiQAIAAgACABAAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAD0AggACAD8AggACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIANYFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAMDvwAIAAgAJAIIAAgACAAIAAgACAAIAAgACwMTAwgACAB9BOsEGwMjAwgAKwMyAwsFYgE3A/MEPwMIAEUDTQNRAwgAWQOsAGEDCAAIAAgACAAIAAgACABpAzQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFIQUoBSwFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABtAwgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABMAEwACAAIAAgACAAIABgACAAIAAgACAC/AAgACAAyAQgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACAAIAAwAAgACAAIAAgACAAIAAgACAAIAAAARABIAAgACAAIABQASAAIAAgAIABwAEAAjgCIABsAqAC2AL0AigDQAtwC+IJIQqVAZUBWQqVAZUBlQGVAZUBlQGrC5UBlQGVAZUBlQGVAZUBlQGVAXsKlQGVAbAK6wsrDGUMpQzlDJUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAfAKAAuZA64AtwCJALoC6ADwAAgAuACgA/oEpgO6AqsD+AAIAAgAswMIAAgACAAIAIkAuwP5AfsBwwPLAwgACAAIAAgACADRA9kDCAAIAOED6QMIAAgACAAIAAgACADuA/YDCAAIAP4DyQAIAAgABgQIAAgAXQAOBAgACAAIAAgACAAIABMECAAIAAgACAAIAAgACAD8AAQBCAAIAAgAGgQiBCoECAExBAgAEAEIAAgACAAIAAgACAAIAAgACAAIAAgACAA4BAgACABABEYECAAIAAgATAQYAQgAVAQIAAgACAAIAAgACAAIAAgACAAIAFoECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAOQEIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAB+BAcACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAEABhgSMBAgACAAIAAgAlAQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAwAEAAQABAADAAMAAwADAAQABAAEAAQABAAEAAQABHATAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAdQMIAAgACAAIAAgACAAIAMkACAAIAAgAfQMIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACFA4kDCAAIAAgACAAIAOcBCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAIcDCAAIAAgACAAIAAgACAAIAAgACAAIAJEDCAAIAAgACADFAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABgBAgAZgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAbAQCBXIECAAIAHkECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABAAJwEQACjBKoEsgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAC6BMIECAAIAAgACAAIAAgACABmBAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAxwQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAGYECAAIAAgAzgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBd0FXwUIAOIF6gXxBYoF3gT5BQAGCAaKBYoFigWKBYoFigWKBYoFigWKBYoFigXWBIoFigWKBYoFigWKBYoFigWKBYsFEAaKBYoFigWKBYoFigWKBRQGCACKBYoFigWKBQgACAAIANEECAAIABgGigUgBggAJgYIAC4GMwaKBYoF0wQ3Bj4GigWKBYoFigWKBYoFigWKBYoFigWKBYoFigUIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWLBf///////wQABAAEAAQABAAEAAQABAAEAAQAAwAEAAQAAgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAQADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUAAAAFAAUAAAAFAAUAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAQAAAAUABQAFAAUABQAFAAAAAAAFAAUAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAFAAUAAQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAAABwAHAAcAAAAHAAcABwAFAAEAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAcABwAFAAUAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQABAAAAAAAAAAAAAAAFAAUABQAFAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAHAAcAAAAHAAcAAAAAAAUABQAHAAUAAQAHAAEABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwABAAUABQAFAAUAAAAAAAAAAAAAAAEAAQABAAEAAQABAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABQANAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAABQAHAAUABQAFAAAAAAAAAAcABQAFAAUABQAFAAQABAAEAAQABAAEAAQABAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUAAAAFAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAUAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAcABwAFAAcABwAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUABwAHAAUABQAFAAUAAAAAAAcABwAAAAAABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAAAAAAAAAAABQAFAAAAAAAFAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAFAAUABQAFAAUAAAAFAAUABwAAAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABwAFAAUABQAFAAAAAAAHAAcAAAAAAAcABwAFAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAAAAAAAAAHAAcABwAAAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAUABQAFAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAHAAcABQAHAAcAAAAFAAcABwAAAAcABwAFAAUAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAFAAcABwAFAAUABQAAAAUAAAAHAAcABwAHAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAHAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUAAAAFAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAUAAAAFAAUAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABwAFAAUABQAFAAUABQAAAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABQAFAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAFAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAHAAUABQAFAAUABQAFAAUABwAHAAcABwAHAAcABwAHAAUABwAHAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABwAHAAcABwAFAAUABwAHAAcAAAAAAAAAAAAHAAcABQAHAAcABwAHAAcABwAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAUABQAFAAUABQAFAAUAAAAFAAAABQAAAAAABQAFAAUABQAFAAUABQAFAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAUABQAFAAUABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABwAFAAcABwAHAAcABwAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAUABQAFAAUABwAHAAUABQAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABQAFAAcABwAHAAUABwAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAcABQAFAAUABQAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAAAAAABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAUABQAHAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAFAAUABQAFAAcABwAFAAUABwAHAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAcABwAFAAUABwAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABQAAAAAABQAFAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAcABwAAAAAAAAAAAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAcABwAFAAcABwAAAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAFAAUABQAAAAUABQAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABwAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAHAAcABQAHAAUABQAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAAABwAHAAAAAAAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAFAAUABwAFAAcABwAFAAcABQAFAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAAAAAABwAHAAcABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAFAAcABwAFAAUABQAFAAUABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAUABQAFAAcABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABQAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAAAAAAFAAUABwAHAAcABwAFAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAHAAUABQAFAAUABQAFAAUABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAABQAAAAUABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAHAAcAAAAFAAUAAAAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABQAFAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAABQAFAAUABQAFAAUABQAAAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAFAAUABQAFAAUADgAOAA4ADgAOAA4ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAMAAwADAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAAAAAAAAAAAAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAAAAAAAAAAAAsADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwACwAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAADgAOAA4AAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAAAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4AAAAOAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAAAAAAAAAAAA4AAAAOAAAAAAAAAAAADgAOAA4AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAA=';\n\n  /*\n   * utrie 1.0.2 <https://github.com/niklasvh/utrie>\n   * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>\n   * Released under MIT License\n   */\n  var chars$1 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n  // Use a lookup table to find the index.\n  var lookup$1 = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\n  for (var i$1 = 0; i$1 < chars$1.length; i$1++) {\n    lookup$1[chars$1.charCodeAt(i$1)] = i$1;\n  }\n  var decode = function (base64) {\n    var bufferLength = base64.length * 0.75,\n      len = base64.length,\n      i,\n      p = 0,\n      encoded1,\n      encoded2,\n      encoded3,\n      encoded4;\n    if (base64[base64.length - 1] === '=') {\n      bufferLength--;\n      if (base64[base64.length - 2] === '=') {\n        bufferLength--;\n      }\n    }\n    var buffer = typeof ArrayBuffer !== 'undefined' && typeof Uint8Array !== 'undefined' && typeof Uint8Array.prototype.slice !== 'undefined' ? new ArrayBuffer(bufferLength) : new Array(bufferLength);\n    var bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\n    for (i = 0; i < len; i += 4) {\n      encoded1 = lookup$1[base64.charCodeAt(i)];\n      encoded2 = lookup$1[base64.charCodeAt(i + 1)];\n      encoded3 = lookup$1[base64.charCodeAt(i + 2)];\n      encoded4 = lookup$1[base64.charCodeAt(i + 3)];\n      bytes[p++] = encoded1 << 2 | encoded2 >> 4;\n      bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2;\n      bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63;\n    }\n    return buffer;\n  };\n  var polyUint16Array = function (buffer) {\n    var length = buffer.length;\n    var bytes = [];\n    for (var i = 0; i < length; i += 2) {\n      bytes.push(buffer[i + 1] << 8 | buffer[i]);\n    }\n    return bytes;\n  };\n  var polyUint32Array = function (buffer) {\n    var length = buffer.length;\n    var bytes = [];\n    for (var i = 0; i < length; i += 4) {\n      bytes.push(buffer[i + 3] << 24 | buffer[i + 2] << 16 | buffer[i + 1] << 8 | buffer[i]);\n    }\n    return bytes;\n  };\n\n  /** Shift size for getting the index-2 table offset. */\n  var UTRIE2_SHIFT_2 = 5;\n  /** Shift size for getting the index-1 table offset. */\n  var UTRIE2_SHIFT_1 = 6 + 5;\n  /**\n   * Shift size for shifting left the index array values.\n   * Increases possible data size with 16-bit index values at the cost\n   * of compactability.\n   * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY.\n   */\n  var UTRIE2_INDEX_SHIFT = 2;\n  /**\n   * Difference between the two shift sizes,\n   * for getting an index-1 offset from an index-2 offset. 6=11-5\n   */\n  var UTRIE2_SHIFT_1_2 = UTRIE2_SHIFT_1 - UTRIE2_SHIFT_2;\n  /**\n   * The part of the index-2 table for U+D800..U+DBFF stores values for\n   * lead surrogate code _units_ not code _points_.\n   * Values for lead surrogate code _points_ are indexed with this portion of the table.\n   * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.)\n   */\n  var UTRIE2_LSCP_INDEX_2_OFFSET = 0x10000 >> UTRIE2_SHIFT_2;\n  /** Number of entries in a data block. 32=0x20 */\n  var UTRIE2_DATA_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_2;\n  /** Mask for getting the lower bits for the in-data-block offset. */\n  var UTRIE2_DATA_MASK = UTRIE2_DATA_BLOCK_LENGTH - 1;\n  var UTRIE2_LSCP_INDEX_2_LENGTH = 0x400 >> UTRIE2_SHIFT_2;\n  /** Count the lengths of both BMP pieces. 2080=0x820 */\n  var UTRIE2_INDEX_2_BMP_LENGTH = UTRIE2_LSCP_INDEX_2_OFFSET + UTRIE2_LSCP_INDEX_2_LENGTH;\n  /**\n   * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.\n   * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2.\n   */\n  var UTRIE2_UTF8_2B_INDEX_2_OFFSET = UTRIE2_INDEX_2_BMP_LENGTH;\n  var UTRIE2_UTF8_2B_INDEX_2_LENGTH = 0x800 >> 6; /* U+0800 is the first code point after 2-byte UTF-8 */\n  /**\n   * The index-1 table, only used for supplementary code points, at offset 2112=0x840.\n   * Variable length, for code points up to highStart, where the last single-value range starts.\n   * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1.\n   * (For 0x100000 supplementary code points U+10000..U+10ffff.)\n   *\n   * The part of the index-2 table for supplementary code points starts\n   * after this index-1 table.\n   *\n   * Both the index-1 table and the following part of the index-2 table\n   * are omitted completely if there is only BMP data.\n   */\n  var UTRIE2_INDEX_1_OFFSET = UTRIE2_UTF8_2B_INDEX_2_OFFSET + UTRIE2_UTF8_2B_INDEX_2_LENGTH;\n  /**\n   * Number of index-1 entries for the BMP. 32=0x20\n   * This part of the index-1 table is omitted from the serialized form.\n   */\n  var UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> UTRIE2_SHIFT_1;\n  /** Number of entries in an index-2 block. 64=0x40 */\n  var UTRIE2_INDEX_2_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_1_2;\n  /** Mask for getting the lower bits for the in-index-2-block offset. */\n  var UTRIE2_INDEX_2_MASK = UTRIE2_INDEX_2_BLOCK_LENGTH - 1;\n  var slice16 = function (view, start, end) {\n    if (view.slice) {\n      return view.slice(start, end);\n    }\n    return new Uint16Array(Array.prototype.slice.call(view, start, end));\n  };\n  var slice32 = function (view, start, end) {\n    if (view.slice) {\n      return view.slice(start, end);\n    }\n    return new Uint32Array(Array.prototype.slice.call(view, start, end));\n  };\n  var createTrieFromBase64 = function (base64, _byteLength) {\n    var buffer = decode(base64);\n    var view32 = Array.isArray(buffer) ? polyUint32Array(buffer) : new Uint32Array(buffer);\n    var view16 = Array.isArray(buffer) ? polyUint16Array(buffer) : new Uint16Array(buffer);\n    var headerLength = 24;\n    var index = slice16(view16, headerLength / 2, view32[4] / 2);\n    var data = view32[5] === 2 ? slice16(view16, (headerLength + view32[4]) / 2) : slice32(view32, Math.ceil((headerLength + view32[4]) / 4));\n    return new Trie(view32[0], view32[1], view32[2], view32[3], index, data);\n  };\n  var Trie = /** @class */function () {\n    function Trie(initialValue, errorValue, highStart, highValueIndex, index, data) {\n      this.initialValue = initialValue;\n      this.errorValue = errorValue;\n      this.highStart = highStart;\n      this.highValueIndex = highValueIndex;\n      this.index = index;\n      this.data = data;\n    }\n    /**\n     * Get the value for a code point as stored in the Trie.\n     *\n     * @param codePoint the code point\n     * @return the value\n     */\n    Trie.prototype.get = function (codePoint) {\n      var ix;\n      if (codePoint >= 0) {\n        if (codePoint < 0x0d800 || codePoint > 0x0dbff && codePoint <= 0x0ffff) {\n          // Ordinary BMP code point, excluding leading surrogates.\n          // BMP uses a single level lookup.  BMP index starts at offset 0 in the Trie2 index.\n          // 16 bit data is stored in the index array itself.\n          ix = this.index[codePoint >> UTRIE2_SHIFT_2];\n          ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n          return this.data[ix];\n        }\n        if (codePoint <= 0xffff) {\n          // Lead Surrogate Code Point.  A Separate index section is stored for\n          // lead surrogate code units and code points.\n          //   The main index has the code unit data.\n          //   For this function, we need the code point data.\n          // Note: this expression could be refactored for slightly improved efficiency, but\n          //       surrogate code points will be so rare in practice that it's not worth it.\n          ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET + (codePoint - 0xd800 >> UTRIE2_SHIFT_2)];\n          ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n          return this.data[ix];\n        }\n        if (codePoint < this.highStart) {\n          // Supplemental code point, use two-level lookup.\n          ix = UTRIE2_INDEX_1_OFFSET - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH + (codePoint >> UTRIE2_SHIFT_1);\n          ix = this.index[ix];\n          ix += codePoint >> UTRIE2_SHIFT_2 & UTRIE2_INDEX_2_MASK;\n          ix = this.index[ix];\n          ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n          return this.data[ix];\n        }\n        if (codePoint <= 0x10ffff) {\n          return this.data[this.highValueIndex];\n        }\n      }\n      // Fall through.  The code point is outside of the legal range of 0..0x10ffff.\n      return this.errorValue;\n    };\n    return Trie;\n  }();\n\n  /*\n   * base64-arraybuffer 1.0.2 <https://github.com/niklasvh/base64-arraybuffer>\n   * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>\n   * Released under MIT License\n   */\n  var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n  // Use a lookup table to find the index.\n  var lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\n  for (var i = 0; i < chars.length; i++) {\n    lookup[chars.charCodeAt(i)] = i;\n  }\n  var Prepend = 1;\n  var CR = 2;\n  var LF = 3;\n  var Control = 4;\n  var Extend = 5;\n  var SpacingMark = 7;\n  var L = 8;\n  var V = 9;\n  var T = 10;\n  var LV = 11;\n  var LVT = 12;\n  var ZWJ = 13;\n  var Extended_Pictographic = 14;\n  var RI = 15;\n  var toCodePoints = function (str) {\n    var codePoints = [];\n    var i = 0;\n    var length = str.length;\n    while (i < length) {\n      var value = str.charCodeAt(i++);\n      if (value >= 0xd800 && value <= 0xdbff && i < length) {\n        var extra = str.charCodeAt(i++);\n        if ((extra & 0xfc00) === 0xdc00) {\n          codePoints.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000);\n        } else {\n          codePoints.push(value);\n          i--;\n        }\n      } else {\n        codePoints.push(value);\n      }\n    }\n    return codePoints;\n  };\n  var fromCodePoint = function () {\n    var codePoints = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n      codePoints[_i] = arguments[_i];\n    }\n    if (String.fromCodePoint) {\n      return String.fromCodePoint.apply(String, codePoints);\n    }\n    var length = codePoints.length;\n    if (!length) {\n      return '';\n    }\n    var codeUnits = [];\n    var index = -1;\n    var result = '';\n    while (++index < length) {\n      var codePoint = codePoints[index];\n      if (codePoint <= 0xffff) {\n        codeUnits.push(codePoint);\n      } else {\n        codePoint -= 0x10000;\n        codeUnits.push((codePoint >> 10) + 0xd800, codePoint % 0x400 + 0xdc00);\n      }\n      if (index + 1 === length || codeUnits.length > 0x4000) {\n        result += String.fromCharCode.apply(String, codeUnits);\n        codeUnits.length = 0;\n      }\n    }\n    return result;\n  };\n  var UnicodeTrie = createTrieFromBase64(base64);\n  var BREAK_NOT_ALLOWED = '×';\n  var BREAK_ALLOWED = '÷';\n  var codePointToClass = function (codePoint) {\n    return UnicodeTrie.get(codePoint);\n  };\n  var _graphemeBreakAtIndex = function (_codePoints, classTypes, index) {\n    var prevIndex = index - 2;\n    var prev = classTypes[prevIndex];\n    var current = classTypes[index - 1];\n    var next = classTypes[index];\n    // GB3 Do not break between a CR and LF\n    if (current === CR && next === LF) {\n      return BREAK_NOT_ALLOWED;\n    }\n    // GB4 Otherwise, break before and after controls.\n    if (current === CR || current === LF || current === Control) {\n      return BREAK_ALLOWED;\n    }\n    // GB5\n    if (next === CR || next === LF || next === Control) {\n      return BREAK_ALLOWED;\n    }\n    // Do not break Hangul syllable sequences.\n    // GB6\n    if (current === L && [L, V, LV, LVT].indexOf(next) !== -1) {\n      return BREAK_NOT_ALLOWED;\n    }\n    // GB7\n    if ((current === LV || current === V) && (next === V || next === T)) {\n      return BREAK_NOT_ALLOWED;\n    }\n    // GB8\n    if ((current === LVT || current === T) && next === T) {\n      return BREAK_NOT_ALLOWED;\n    }\n    // GB9 Do not break before extending characters or ZWJ.\n    if (next === ZWJ || next === Extend) {\n      return BREAK_NOT_ALLOWED;\n    }\n    // Do not break before SpacingMarks, or after Prepend characters.\n    // GB9a\n    if (next === SpacingMark) {\n      return BREAK_NOT_ALLOWED;\n    }\n    // GB9a\n    if (current === Prepend) {\n      return BREAK_NOT_ALLOWED;\n    }\n    // GB11 Do not break within emoji modifier sequences or emoji zwj sequences.\n    if (current === ZWJ && next === Extended_Pictographic) {\n      while (prev === Extend) {\n        prev = classTypes[--prevIndex];\n      }\n      if (prev === Extended_Pictographic) {\n        return BREAK_NOT_ALLOWED;\n      }\n    }\n    // GB12 Do not break within emoji flag sequences.\n    // That is, do not break between regional indicator (RI) symbols\n    // if there is an odd number of RI characters before the break point.\n    if (current === RI && next === RI) {\n      var countRI = 0;\n      while (prev === RI) {\n        countRI++;\n        prev = classTypes[--prevIndex];\n      }\n      if (countRI % 2 === 0) {\n        return BREAK_NOT_ALLOWED;\n      }\n    }\n    return BREAK_ALLOWED;\n  };\n  var GraphemeBreaker = function (str) {\n    var codePoints = toCodePoints(str);\n    var length = codePoints.length;\n    var index = 0;\n    var lastEnd = 0;\n    var classTypes = codePoints.map(codePointToClass);\n    return {\n      next: function () {\n        if (index >= length) {\n          return {\n            done: true,\n            value: null\n          };\n        }\n        var graphemeBreak = BREAK_NOT_ALLOWED;\n        while (index < length && (graphemeBreak = _graphemeBreakAtIndex(codePoints, classTypes, ++index)) === BREAK_NOT_ALLOWED) {}\n        if (graphemeBreak !== BREAK_NOT_ALLOWED || index === length) {\n          var value = fromCodePoint.apply(null, codePoints.slice(lastEnd, index));\n          lastEnd = index;\n          return {\n            value: value,\n            done: false\n          };\n        }\n        return {\n          done: true,\n          value: null\n        };\n      }\n    };\n  };\n  var splitGraphemes = function (str) {\n    var breaker = GraphemeBreaker(str);\n    var graphemes = [];\n    var bk;\n    while (!(bk = breaker.next()).done) {\n      if (bk.value) {\n        graphemes.push(bk.value.slice());\n      }\n    }\n    return graphemes;\n  };\n  var testRangeBounds = function (document) {\n    var TEST_HEIGHT = 123;\n    if (document.createRange) {\n      var range = document.createRange();\n      if (range.getBoundingClientRect) {\n        var testElement = document.createElement('boundtest');\n        testElement.style.height = TEST_HEIGHT + \"px\";\n        testElement.style.display = 'block';\n        document.body.appendChild(testElement);\n        range.selectNode(testElement);\n        var rangeBounds = range.getBoundingClientRect();\n        var rangeHeight = Math.round(rangeBounds.height);\n        document.body.removeChild(testElement);\n        if (rangeHeight === TEST_HEIGHT) {\n          return true;\n        }\n      }\n    }\n    return false;\n  };\n  var testIOSLineBreak = function (document) {\n    var testElement = document.createElement('boundtest');\n    testElement.style.width = '50px';\n    testElement.style.display = 'block';\n    testElement.style.fontSize = '12px';\n    testElement.style.letterSpacing = '0px';\n    testElement.style.wordSpacing = '0px';\n    document.body.appendChild(testElement);\n    var range = document.createRange();\n    testElement.innerHTML = typeof ''.repeat === 'function' ? '&#128104;'.repeat(10) : '';\n    var node = testElement.firstChild;\n    var textList = toCodePoints$1(node.data).map(function (i) {\n      return fromCodePoint$1(i);\n    });\n    var offset = 0;\n    var prev = {};\n    // ios 13 does not handle range getBoundingClientRect line changes correctly #2177\n    var supports = textList.every(function (text, i) {\n      range.setStart(node, offset);\n      range.setEnd(node, offset + text.length);\n      var rect = range.getBoundingClientRect();\n      offset += text.length;\n      var boundAhead = rect.x > prev.x || rect.y > prev.y;\n      prev = rect;\n      if (i === 0) {\n        return true;\n      }\n      return boundAhead;\n    });\n    document.body.removeChild(testElement);\n    return supports;\n  };\n  var testCORS = function () {\n    return typeof new Image().crossOrigin !== 'undefined';\n  };\n  var testResponseType = function () {\n    return typeof new XMLHttpRequest().responseType === 'string';\n  };\n  var testSVG = function (document) {\n    var img = new Image();\n    var canvas = document.createElement('canvas');\n    var ctx = canvas.getContext('2d');\n    if (!ctx) {\n      return false;\n    }\n    img.src = \"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'></svg>\";\n    try {\n      ctx.drawImage(img, 0, 0);\n      canvas.toDataURL();\n    } catch (e) {\n      return false;\n    }\n    return true;\n  };\n  var isGreenPixel = function (data) {\n    return data[0] === 0 && data[1] === 255 && data[2] === 0 && data[3] === 255;\n  };\n  var testForeignObject = function (document) {\n    var canvas = document.createElement('canvas');\n    var size = 100;\n    canvas.width = size;\n    canvas.height = size;\n    var ctx = canvas.getContext('2d');\n    if (!ctx) {\n      return Promise.reject(false);\n    }\n    ctx.fillStyle = 'rgb(0, 255, 0)';\n    ctx.fillRect(0, 0, size, size);\n    var img = new Image();\n    var greenImageSrc = canvas.toDataURL();\n    img.src = greenImageSrc;\n    var svg = createForeignObjectSVG(size, size, 0, 0, img);\n    ctx.fillStyle = 'red';\n    ctx.fillRect(0, 0, size, size);\n    return loadSerializedSVG$1(svg).then(function (img) {\n      ctx.drawImage(img, 0, 0);\n      var data = ctx.getImageData(0, 0, size, size).data;\n      ctx.fillStyle = 'red';\n      ctx.fillRect(0, 0, size, size);\n      var node = document.createElement('div');\n      node.style.backgroundImage = \"url(\" + greenImageSrc + \")\";\n      node.style.height = size + \"px\";\n      // Firefox 55 does not render inline <img /> tags\n      return isGreenPixel(data) ? loadSerializedSVG$1(createForeignObjectSVG(size, size, 0, 0, node)) : Promise.reject(false);\n    }).then(function (img) {\n      ctx.drawImage(img, 0, 0);\n      // Edge does not render background-images\n      return isGreenPixel(ctx.getImageData(0, 0, size, size).data);\n    }).catch(function () {\n      return false;\n    });\n  };\n  var createForeignObjectSVG = function (width, height, x, y, node) {\n    var xmlns = 'http://www.w3.org/2000/svg';\n    var svg = document.createElementNS(xmlns, 'svg');\n    var foreignObject = document.createElementNS(xmlns, 'foreignObject');\n    svg.setAttributeNS(null, 'width', width.toString());\n    svg.setAttributeNS(null, 'height', height.toString());\n    foreignObject.setAttributeNS(null, 'width', '100%');\n    foreignObject.setAttributeNS(null, 'height', '100%');\n    foreignObject.setAttributeNS(null, 'x', x.toString());\n    foreignObject.setAttributeNS(null, 'y', y.toString());\n    foreignObject.setAttributeNS(null, 'externalResourcesRequired', 'true');\n    svg.appendChild(foreignObject);\n    foreignObject.appendChild(node);\n    return svg;\n  };\n  var loadSerializedSVG$1 = function (svg) {\n    return new Promise(function (resolve, reject) {\n      var img = new Image();\n      img.onload = function () {\n        return resolve(img);\n      };\n      img.onerror = reject;\n      img.src = \"data:image/svg+xml;charset=utf-8,\" + encodeURIComponent(new XMLSerializer().serializeToString(svg));\n    });\n  };\n  var FEATURES = {\n    get SUPPORT_RANGE_BOUNDS() {\n      var value = testRangeBounds(document);\n      Object.defineProperty(FEATURES, 'SUPPORT_RANGE_BOUNDS', {\n        value: value\n      });\n      return value;\n    },\n    get SUPPORT_WORD_BREAKING() {\n      var value = FEATURES.SUPPORT_RANGE_BOUNDS && testIOSLineBreak(document);\n      Object.defineProperty(FEATURES, 'SUPPORT_WORD_BREAKING', {\n        value: value\n      });\n      return value;\n    },\n    get SUPPORT_SVG_DRAWING() {\n      var value = testSVG(document);\n      Object.defineProperty(FEATURES, 'SUPPORT_SVG_DRAWING', {\n        value: value\n      });\n      return value;\n    },\n    get SUPPORT_FOREIGNOBJECT_DRAWING() {\n      var value = typeof Array.from === 'function' && typeof window.fetch === 'function' ? testForeignObject(document) : Promise.resolve(false);\n      Object.defineProperty(FEATURES, 'SUPPORT_FOREIGNOBJECT_DRAWING', {\n        value: value\n      });\n      return value;\n    },\n    get SUPPORT_CORS_IMAGES() {\n      var value = testCORS();\n      Object.defineProperty(FEATURES, 'SUPPORT_CORS_IMAGES', {\n        value: value\n      });\n      return value;\n    },\n    get SUPPORT_RESPONSE_TYPE() {\n      var value = testResponseType();\n      Object.defineProperty(FEATURES, 'SUPPORT_RESPONSE_TYPE', {\n        value: value\n      });\n      return value;\n    },\n    get SUPPORT_CORS_XHR() {\n      var value = ('withCredentials' in new XMLHttpRequest());\n      Object.defineProperty(FEATURES, 'SUPPORT_CORS_XHR', {\n        value: value\n      });\n      return value;\n    },\n    get SUPPORT_NATIVE_TEXT_SEGMENTATION() {\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      var value = !!(typeof Intl !== 'undefined' && Intl.Segmenter);\n      Object.defineProperty(FEATURES, 'SUPPORT_NATIVE_TEXT_SEGMENTATION', {\n        value: value\n      });\n      return value;\n    }\n  };\n  var TextBounds = /** @class */function () {\n    function TextBounds(text, bounds) {\n      this.text = text;\n      this.bounds = bounds;\n    }\n    return TextBounds;\n  }();\n  var parseTextBounds = function (context, value, styles, node) {\n    var textList = breakText(value, styles);\n    var textBounds = [];\n    var offset = 0;\n    textList.forEach(function (text) {\n      if (styles.textDecorationLine.length || text.trim().length > 0) {\n        if (FEATURES.SUPPORT_RANGE_BOUNDS) {\n          var clientRects = createRange(node, offset, text.length).getClientRects();\n          if (clientRects.length > 1) {\n            var subSegments = segmentGraphemes(text);\n            var subOffset_1 = 0;\n            subSegments.forEach(function (subSegment) {\n              textBounds.push(new TextBounds(subSegment, Bounds.fromDOMRectList(context, createRange(node, subOffset_1 + offset, subSegment.length).getClientRects())));\n              subOffset_1 += subSegment.length;\n            });\n          } else {\n            textBounds.push(new TextBounds(text, Bounds.fromDOMRectList(context, clientRects)));\n          }\n        } else {\n          var replacementNode = node.splitText(text.length);\n          textBounds.push(new TextBounds(text, getWrapperBounds(context, node)));\n          node = replacementNode;\n        }\n      } else if (!FEATURES.SUPPORT_RANGE_BOUNDS) {\n        node = node.splitText(text.length);\n      }\n      offset += text.length;\n    });\n    return textBounds;\n  };\n  var getWrapperBounds = function (context, node) {\n    var ownerDocument = node.ownerDocument;\n    if (ownerDocument) {\n      var wrapper = ownerDocument.createElement('html2canvaswrapper');\n      wrapper.appendChild(node.cloneNode(true));\n      var parentNode = node.parentNode;\n      if (parentNode) {\n        parentNode.replaceChild(wrapper, node);\n        var bounds = parseBounds(context, wrapper);\n        if (wrapper.firstChild) {\n          parentNode.replaceChild(wrapper.firstChild, wrapper);\n        }\n        return bounds;\n      }\n    }\n    return Bounds.EMPTY;\n  };\n  var createRange = function (node, offset, length) {\n    var ownerDocument = node.ownerDocument;\n    if (!ownerDocument) {\n      throw new Error('Node has no owner document');\n    }\n    var range = ownerDocument.createRange();\n    range.setStart(node, offset);\n    range.setEnd(node, offset + length);\n    return range;\n  };\n  var segmentGraphemes = function (value) {\n    if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) {\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      var segmenter = new Intl.Segmenter(void 0, {\n        granularity: 'grapheme'\n      });\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      return Array.from(segmenter.segment(value)).map(function (segment) {\n        return segment.segment;\n      });\n    }\n    return splitGraphemes(value);\n  };\n  var segmentWords = function (value, styles) {\n    if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) {\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      var segmenter = new Intl.Segmenter(void 0, {\n        granularity: 'word'\n      });\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      return Array.from(segmenter.segment(value)).map(function (segment) {\n        return segment.segment;\n      });\n    }\n    return breakWords(value, styles);\n  };\n  var breakText = function (value, styles) {\n    return styles.letterSpacing !== 0 ? segmentGraphemes(value) : segmentWords(value, styles);\n  };\n  // https://drafts.csswg.org/css-text/#word-separator\n  var wordSeparators = [0x0020, 0x00a0, 0x1361, 0x10100, 0x10101, 0x1039, 0x1091];\n  var breakWords = function (str, styles) {\n    var breaker = LineBreaker(str, {\n      lineBreak: styles.lineBreak,\n      wordBreak: styles.overflowWrap === \"break-word\" /* BREAK_WORD */ ? 'break-word' : styles.wordBreak\n    });\n    var words = [];\n    var bk;\n    var _loop_1 = function () {\n      if (bk.value) {\n        var value = bk.value.slice();\n        var codePoints = toCodePoints$1(value);\n        var word_1 = '';\n        codePoints.forEach(function (codePoint) {\n          if (wordSeparators.indexOf(codePoint) === -1) {\n            word_1 += fromCodePoint$1(codePoint);\n          } else {\n            if (word_1.length) {\n              words.push(word_1);\n            }\n            words.push(fromCodePoint$1(codePoint));\n            word_1 = '';\n          }\n        });\n        if (word_1.length) {\n          words.push(word_1);\n        }\n      }\n    };\n    while (!(bk = breaker.next()).done) {\n      _loop_1();\n    }\n    return words;\n  };\n  var TextContainer = /** @class */function () {\n    function TextContainer(context, node, styles) {\n      this.text = transform(node.data, styles.textTransform);\n      this.textBounds = parseTextBounds(context, this.text, styles, node);\n    }\n    return TextContainer;\n  }();\n  var transform = function (text, transform) {\n    switch (transform) {\n      case 1 /* LOWERCASE */:\n        return text.toLowerCase();\n      case 3 /* CAPITALIZE */:\n        return text.replace(CAPITALIZE, capitalize);\n      case 2 /* UPPERCASE */:\n        return text.toUpperCase();\n      default:\n        return text;\n    }\n  };\n  var CAPITALIZE = /(^|\\s|:|-|\\(|\\))([a-z])/g;\n  var capitalize = function (m, p1, p2) {\n    if (m.length > 0) {\n      return p1 + p2.toUpperCase();\n    }\n    return m;\n  };\n  var ImageElementContainer = /** @class */function (_super) {\n    __extends(ImageElementContainer, _super);\n    function ImageElementContainer(context, img) {\n      var _this = _super.call(this, context, img) || this;\n      _this.src = img.currentSrc || img.src;\n      _this.intrinsicWidth = img.naturalWidth;\n      _this.intrinsicHeight = img.naturalHeight;\n      _this.context.cache.addImage(_this.src);\n      return _this;\n    }\n    return ImageElementContainer;\n  }(ElementContainer);\n  var CanvasElementContainer = /** @class */function (_super) {\n    __extends(CanvasElementContainer, _super);\n    function CanvasElementContainer(context, canvas) {\n      var _this = _super.call(this, context, canvas) || this;\n      _this.canvas = canvas;\n      _this.intrinsicWidth = canvas.width;\n      _this.intrinsicHeight = canvas.height;\n      return _this;\n    }\n    return CanvasElementContainer;\n  }(ElementContainer);\n  var SVGElementContainer = /** @class */function (_super) {\n    __extends(SVGElementContainer, _super);\n    function SVGElementContainer(context, img) {\n      var _this = _super.call(this, context, img) || this;\n      var s = new XMLSerializer();\n      var bounds = parseBounds(context, img);\n      img.setAttribute('width', bounds.width + \"px\");\n      img.setAttribute('height', bounds.height + \"px\");\n      _this.svg = \"data:image/svg+xml,\" + encodeURIComponent(s.serializeToString(img));\n      _this.intrinsicWidth = img.width.baseVal.value;\n      _this.intrinsicHeight = img.height.baseVal.value;\n      _this.context.cache.addImage(_this.svg);\n      return _this;\n    }\n    return SVGElementContainer;\n  }(ElementContainer);\n  var LIElementContainer = /** @class */function (_super) {\n    __extends(LIElementContainer, _super);\n    function LIElementContainer(context, element) {\n      var _this = _super.call(this, context, element) || this;\n      _this.value = element.value;\n      return _this;\n    }\n    return LIElementContainer;\n  }(ElementContainer);\n  var OLElementContainer = /** @class */function (_super) {\n    __extends(OLElementContainer, _super);\n    function OLElementContainer(context, element) {\n      var _this = _super.call(this, context, element) || this;\n      _this.start = element.start;\n      _this.reversed = typeof element.reversed === 'boolean' && element.reversed === true;\n      return _this;\n    }\n    return OLElementContainer;\n  }(ElementContainer);\n  var CHECKBOX_BORDER_RADIUS = [{\n    type: 15 /* DIMENSION_TOKEN */,\n    flags: 0,\n    unit: 'px',\n    number: 3\n  }];\n  var RADIO_BORDER_RADIUS = [{\n    type: 16 /* PERCENTAGE_TOKEN */,\n    flags: 0,\n    number: 50\n  }];\n  var reformatInputBounds = function (bounds) {\n    if (bounds.width > bounds.height) {\n      return new Bounds(bounds.left + (bounds.width - bounds.height) / 2, bounds.top, bounds.height, bounds.height);\n    } else if (bounds.width < bounds.height) {\n      return new Bounds(bounds.left, bounds.top + (bounds.height - bounds.width) / 2, bounds.width, bounds.width);\n    }\n    return bounds;\n  };\n  var getInputValue = function (node) {\n    var value = node.type === PASSWORD ? new Array(node.value.length + 1).join('\\u2022') : node.value;\n    return value.length === 0 ? node.placeholder || '' : value;\n  };\n  var CHECKBOX = 'checkbox';\n  var RADIO = 'radio';\n  var PASSWORD = 'password';\n  var INPUT_COLOR = 0x2a2a2aff;\n  var InputElementContainer = /** @class */function (_super) {\n    __extends(InputElementContainer, _super);\n    function InputElementContainer(context, input) {\n      var _this = _super.call(this, context, input) || this;\n      _this.type = input.type.toLowerCase();\n      _this.checked = input.checked;\n      _this.value = getInputValue(input);\n      if (_this.type === CHECKBOX || _this.type === RADIO) {\n        _this.styles.backgroundColor = 0xdededeff;\n        _this.styles.borderTopColor = _this.styles.borderRightColor = _this.styles.borderBottomColor = _this.styles.borderLeftColor = 0xa5a5a5ff;\n        _this.styles.borderTopWidth = _this.styles.borderRightWidth = _this.styles.borderBottomWidth = _this.styles.borderLeftWidth = 1;\n        _this.styles.borderTopStyle = _this.styles.borderRightStyle = _this.styles.borderBottomStyle = _this.styles.borderLeftStyle = 1 /* SOLID */;\n        _this.styles.backgroundClip = [0 /* BORDER_BOX */];\n        _this.styles.backgroundOrigin = [0 /* BORDER_BOX */];\n        _this.bounds = reformatInputBounds(_this.bounds);\n      }\n      switch (_this.type) {\n        case CHECKBOX:\n          _this.styles.borderTopRightRadius = _this.styles.borderTopLeftRadius = _this.styles.borderBottomRightRadius = _this.styles.borderBottomLeftRadius = CHECKBOX_BORDER_RADIUS;\n          break;\n        case RADIO:\n          _this.styles.borderTopRightRadius = _this.styles.borderTopLeftRadius = _this.styles.borderBottomRightRadius = _this.styles.borderBottomLeftRadius = RADIO_BORDER_RADIUS;\n          break;\n      }\n      return _this;\n    }\n    return InputElementContainer;\n  }(ElementContainer);\n  var SelectElementContainer = /** @class */function (_super) {\n    __extends(SelectElementContainer, _super);\n    function SelectElementContainer(context, element) {\n      var _this = _super.call(this, context, element) || this;\n      var option = element.options[element.selectedIndex || 0];\n      _this.value = option ? option.text || '' : '';\n      return _this;\n    }\n    return SelectElementContainer;\n  }(ElementContainer);\n  var TextareaElementContainer = /** @class */function (_super) {\n    __extends(TextareaElementContainer, _super);\n    function TextareaElementContainer(context, element) {\n      var _this = _super.call(this, context, element) || this;\n      _this.value = element.value;\n      return _this;\n    }\n    return TextareaElementContainer;\n  }(ElementContainer);\n  var IFrameElementContainer = /** @class */function (_super) {\n    __extends(IFrameElementContainer, _super);\n    function IFrameElementContainer(context, iframe) {\n      var _this = _super.call(this, context, iframe) || this;\n      _this.src = iframe.src;\n      _this.width = parseInt(iframe.width, 10) || 0;\n      _this.height = parseInt(iframe.height, 10) || 0;\n      _this.backgroundColor = _this.styles.backgroundColor;\n      try {\n        if (iframe.contentWindow && iframe.contentWindow.document && iframe.contentWindow.document.documentElement) {\n          _this.tree = parseTree(context, iframe.contentWindow.document.documentElement);\n          // http://www.w3.org/TR/css3-background/#special-backgrounds\n          var documentBackgroundColor = iframe.contentWindow.document.documentElement ? parseColor(context, getComputedStyle(iframe.contentWindow.document.documentElement).backgroundColor) : COLORS.TRANSPARENT;\n          var bodyBackgroundColor = iframe.contentWindow.document.body ? parseColor(context, getComputedStyle(iframe.contentWindow.document.body).backgroundColor) : COLORS.TRANSPARENT;\n          _this.backgroundColor = isTransparent(documentBackgroundColor) ? isTransparent(bodyBackgroundColor) ? _this.styles.backgroundColor : bodyBackgroundColor : documentBackgroundColor;\n        }\n      } catch (e) {}\n      return _this;\n    }\n    return IFrameElementContainer;\n  }(ElementContainer);\n  var LIST_OWNERS = ['OL', 'UL', 'MENU'];\n  var parseNodeTree = function (context, node, parent, root) {\n    for (var childNode = node.firstChild, nextNode = void 0; childNode; childNode = nextNode) {\n      nextNode = childNode.nextSibling;\n      if (isTextNode(childNode) && childNode.data.trim().length > 0) {\n        parent.textNodes.push(new TextContainer(context, childNode, parent.styles));\n      } else if (isElementNode(childNode)) {\n        if (isSlotElement(childNode) && childNode.assignedNodes) {\n          childNode.assignedNodes().forEach(function (childNode) {\n            return parseNodeTree(context, childNode, parent, root);\n          });\n        } else {\n          var container = createContainer(context, childNode);\n          if (container.styles.isVisible()) {\n            if (createsRealStackingContext(childNode, container, root)) {\n              container.flags |= 4 /* CREATES_REAL_STACKING_CONTEXT */;\n            } else if (createsStackingContext(container.styles)) {\n              container.flags |= 2 /* CREATES_STACKING_CONTEXT */;\n            }\n            if (LIST_OWNERS.indexOf(childNode.tagName) !== -1) {\n              container.flags |= 8 /* IS_LIST_OWNER */;\n            }\n            parent.elements.push(container);\n            childNode.slot;\n            if (childNode.shadowRoot) {\n              parseNodeTree(context, childNode.shadowRoot, container, root);\n            } else if (!isTextareaElement(childNode) && !isSVGElement(childNode) && !isSelectElement(childNode)) {\n              parseNodeTree(context, childNode, container, root);\n            }\n          }\n        }\n      }\n    }\n  };\n  var createContainer = function (context, element) {\n    if (isImageElement(element)) {\n      return new ImageElementContainer(context, element);\n    }\n    if (isCanvasElement(element)) {\n      return new CanvasElementContainer(context, element);\n    }\n    if (isSVGElement(element)) {\n      return new SVGElementContainer(context, element);\n    }\n    if (isLIElement(element)) {\n      return new LIElementContainer(context, element);\n    }\n    if (isOLElement(element)) {\n      return new OLElementContainer(context, element);\n    }\n    if (isInputElement(element)) {\n      return new InputElementContainer(context, element);\n    }\n    if (isSelectElement(element)) {\n      return new SelectElementContainer(context, element);\n    }\n    if (isTextareaElement(element)) {\n      return new TextareaElementContainer(context, element);\n    }\n    if (isIFrameElement(element)) {\n      return new IFrameElementContainer(context, element);\n    }\n    return new ElementContainer(context, element);\n  };\n  var parseTree = function (context, element) {\n    var container = createContainer(context, element);\n    container.flags |= 4 /* CREATES_REAL_STACKING_CONTEXT */;\n    parseNodeTree(context, element, container, container);\n    return container;\n  };\n  var createsRealStackingContext = function (node, container, root) {\n    return container.styles.isPositionedWithZIndex() || container.styles.opacity < 1 || container.styles.isTransformed() || isBodyElement(node) && root.styles.isTransparent();\n  };\n  var createsStackingContext = function (styles) {\n    return styles.isPositioned() || styles.isFloating();\n  };\n  var isTextNode = function (node) {\n    return node.nodeType === Node.TEXT_NODE;\n  };\n  var isElementNode = function (node) {\n    return node.nodeType === Node.ELEMENT_NODE;\n  };\n  var isHTMLElementNode = function (node) {\n    return isElementNode(node) && typeof node.style !== 'undefined' && !isSVGElementNode(node);\n  };\n  var isSVGElementNode = function (element) {\n    return typeof element.className === 'object';\n  };\n  var isLIElement = function (node) {\n    return node.tagName === 'LI';\n  };\n  var isOLElement = function (node) {\n    return node.tagName === 'OL';\n  };\n  var isInputElement = function (node) {\n    return node.tagName === 'INPUT';\n  };\n  var isHTMLElement = function (node) {\n    return node.tagName === 'HTML';\n  };\n  var isSVGElement = function (node) {\n    return node.tagName === 'svg';\n  };\n  var isBodyElement = function (node) {\n    return node.tagName === 'BODY';\n  };\n  var isCanvasElement = function (node) {\n    return node.tagName === 'CANVAS';\n  };\n  var isVideoElement = function (node) {\n    return node.tagName === 'VIDEO';\n  };\n  var isImageElement = function (node) {\n    return node.tagName === 'IMG';\n  };\n  var isIFrameElement = function (node) {\n    return node.tagName === 'IFRAME';\n  };\n  var isStyleElement = function (node) {\n    return node.tagName === 'STYLE';\n  };\n  var isScriptElement = function (node) {\n    return node.tagName === 'SCRIPT';\n  };\n  var isTextareaElement = function (node) {\n    return node.tagName === 'TEXTAREA';\n  };\n  var isSelectElement = function (node) {\n    return node.tagName === 'SELECT';\n  };\n  var isSlotElement = function (node) {\n    return node.tagName === 'SLOT';\n  };\n  // https://html.spec.whatwg.org/multipage/custom-elements.html#valid-custom-element-name\n  var isCustomElement = function (node) {\n    return node.tagName.indexOf('-') > 0;\n  };\n  var CounterState = /** @class */function () {\n    function CounterState() {\n      this.counters = {};\n    }\n    CounterState.prototype.getCounterValue = function (name) {\n      var counter = this.counters[name];\n      if (counter && counter.length) {\n        return counter[counter.length - 1];\n      }\n      return 1;\n    };\n    CounterState.prototype.getCounterValues = function (name) {\n      var counter = this.counters[name];\n      return counter ? counter : [];\n    };\n    CounterState.prototype.pop = function (counters) {\n      var _this = this;\n      counters.forEach(function (counter) {\n        return _this.counters[counter].pop();\n      });\n    };\n    CounterState.prototype.parse = function (style) {\n      var _this = this;\n      var counterIncrement = style.counterIncrement;\n      var counterReset = style.counterReset;\n      var canReset = true;\n      if (counterIncrement !== null) {\n        counterIncrement.forEach(function (entry) {\n          var counter = _this.counters[entry.counter];\n          if (counter && entry.increment !== 0) {\n            canReset = false;\n            if (!counter.length) {\n              counter.push(1);\n            }\n            counter[Math.max(0, counter.length - 1)] += entry.increment;\n          }\n        });\n      }\n      var counterNames = [];\n      if (canReset) {\n        counterReset.forEach(function (entry) {\n          var counter = _this.counters[entry.counter];\n          counterNames.push(entry.counter);\n          if (!counter) {\n            counter = _this.counters[entry.counter] = [];\n          }\n          counter.push(entry.reset);\n        });\n      }\n      return counterNames;\n    };\n    return CounterState;\n  }();\n  var ROMAN_UPPER = {\n    integers: [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1],\n    values: ['M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I']\n  };\n  var ARMENIAN = {\n    integers: [9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 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],\n    values: ['Ք', 'Փ', 'Ւ', 'Ց', 'Ր', 'Տ', 'Վ', 'Ս', 'Ռ', 'Ջ', 'Պ', 'Չ', 'Ո', 'Շ', 'Ն', 'Յ', 'Մ', 'Ճ', 'Ղ', 'Ձ', 'Հ', 'Կ', 'Ծ', 'Խ', 'Լ', 'Ի', 'Ժ', 'Թ', 'Ը', 'Է', 'Զ', 'Ե', 'Դ', 'Գ', 'Բ', 'Ա']\n  };\n  var HEBREW = {\n    integers: [10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 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],\n    values: ['י׳', 'ט׳', 'ח׳', 'ז׳', 'ו׳', 'ה׳', 'ד׳', 'ג׳', 'ב׳', 'א׳', 'ת', 'ש', 'ר', 'ק', 'צ', 'פ', 'ע', 'ס', 'נ', 'מ', 'ל', 'כ', 'יט', 'יח', 'יז', 'טז', 'טו', 'י', 'ט', 'ח', 'ז', 'ו', 'ה', 'ד', 'ג', 'ב', 'א']\n  };\n  var GEORGIAN = {\n    integers: [10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 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],\n    values: ['ჵ', 'ჰ', 'ჯ', 'ჴ', 'ხ', 'ჭ', 'წ', 'ძ', 'ც', 'ჩ', 'შ', 'ყ', 'ღ', 'ქ', 'ფ', 'ჳ', 'ტ', 'ს', 'რ', 'ჟ', 'პ', 'ო', 'ჲ', 'ნ', 'მ', 'ლ', 'კ', 'ი', 'თ', 'ჱ', 'ზ', 'ვ', 'ე', 'დ', 'გ', 'ბ', 'ა']\n  };\n  var createAdditiveCounter = function (value, min, max, symbols, fallback, suffix) {\n    if (value < min || value > max) {\n      return createCounterText(value, fallback, suffix.length > 0);\n    }\n    return symbols.integers.reduce(function (string, integer, index) {\n      while (value >= integer) {\n        value -= integer;\n        string += symbols.values[index];\n      }\n      return string;\n    }, '') + suffix;\n  };\n  var createCounterStyleWithSymbolResolver = function (value, codePointRangeLength, isNumeric, resolver) {\n    var string = '';\n    do {\n      if (!isNumeric) {\n        value--;\n      }\n      string = resolver(value) + string;\n      value /= codePointRangeLength;\n    } while (value * codePointRangeLength >= codePointRangeLength);\n    return string;\n  };\n  var createCounterStyleFromRange = function (value, codePointRangeStart, codePointRangeEnd, isNumeric, suffix) {\n    var codePointRangeLength = codePointRangeEnd - codePointRangeStart + 1;\n    return (value < 0 ? '-' : '') + (createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, isNumeric, function (codePoint) {\n      return fromCodePoint$1(Math.floor(codePoint % codePointRangeLength) + codePointRangeStart);\n    }) + suffix);\n  };\n  var createCounterStyleFromSymbols = function (value, symbols, suffix) {\n    if (suffix === void 0) {\n      suffix = '. ';\n    }\n    var codePointRangeLength = symbols.length;\n    return createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, false, function (codePoint) {\n      return symbols[Math.floor(codePoint % codePointRangeLength)];\n    }) + suffix;\n  };\n  var CJK_ZEROS = 1 << 0;\n  var CJK_TEN_COEFFICIENTS = 1 << 1;\n  var CJK_TEN_HIGH_COEFFICIENTS = 1 << 2;\n  var CJK_HUNDRED_COEFFICIENTS = 1 << 3;\n  var createCJKCounter = function (value, numbers, multipliers, negativeSign, suffix, flags) {\n    if (value < -9999 || value > 9999) {\n      return createCounterText(value, 4 /* CJK_DECIMAL */, suffix.length > 0);\n    }\n    var tmp = Math.abs(value);\n    var string = suffix;\n    if (tmp === 0) {\n      return numbers[0] + string;\n    }\n    for (var digit = 0; tmp > 0 && digit <= 4; digit++) {\n      var coefficient = tmp % 10;\n      if (coefficient === 0 && contains(flags, CJK_ZEROS) && string !== '') {\n        string = numbers[coefficient] + string;\n      } else if (coefficient > 1 || coefficient === 1 && digit === 0 || coefficient === 1 && digit === 1 && contains(flags, CJK_TEN_COEFFICIENTS) || coefficient === 1 && digit === 1 && contains(flags, CJK_TEN_HIGH_COEFFICIENTS) && value > 100 || coefficient === 1 && digit > 1 && contains(flags, CJK_HUNDRED_COEFFICIENTS)) {\n        string = numbers[coefficient] + (digit > 0 ? multipliers[digit - 1] : '') + string;\n      } else if (coefficient === 1 && digit > 0) {\n        string = multipliers[digit - 1] + string;\n      }\n      tmp = Math.floor(tmp / 10);\n    }\n    return (value < 0 ? negativeSign : '') + string;\n  };\n  var CHINESE_INFORMAL_MULTIPLIERS = '十百千萬';\n  var CHINESE_FORMAL_MULTIPLIERS = '拾佰仟萬';\n  var JAPANESE_NEGATIVE = 'マイナス';\n  var KOREAN_NEGATIVE = '마이너스';\n  var createCounterText = function (value, type, appendSuffix) {\n    var defaultSuffix = appendSuffix ? '. ' : '';\n    var cjkSuffix = appendSuffix ? '、' : '';\n    var koreanSuffix = appendSuffix ? ', ' : '';\n    var spaceSuffix = appendSuffix ? ' ' : '';\n    switch (type) {\n      case 0 /* DISC */:\n        return '•' + spaceSuffix;\n      case 1 /* CIRCLE */:\n        return '◦' + spaceSuffix;\n      case 2 /* SQUARE */:\n        return '◾' + spaceSuffix;\n      case 5 /* DECIMAL_LEADING_ZERO */:\n        var string = createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);\n        return string.length < 4 ? \"0\" + string : string;\n      case 4 /* CJK_DECIMAL */:\n        return createCounterStyleFromSymbols(value, '〇一二三四五六七八九', cjkSuffix);\n      case 6 /* LOWER_ROMAN */:\n        return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, 3 /* DECIMAL */, defaultSuffix).toLowerCase();\n      case 7 /* UPPER_ROMAN */:\n        return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, 3 /* DECIMAL */, defaultSuffix);\n      case 8 /* LOWER_GREEK */:\n        return createCounterStyleFromRange(value, 945, 969, false, defaultSuffix);\n      case 9 /* LOWER_ALPHA */:\n        return createCounterStyleFromRange(value, 97, 122, false, defaultSuffix);\n      case 10 /* UPPER_ALPHA */:\n        return createCounterStyleFromRange(value, 65, 90, false, defaultSuffix);\n      case 11 /* ARABIC_INDIC */:\n        return createCounterStyleFromRange(value, 1632, 1641, true, defaultSuffix);\n      case 12 /* ARMENIAN */:\n      case 49 /* UPPER_ARMENIAN */:\n        return createAdditiveCounter(value, 1, 9999, ARMENIAN, 3 /* DECIMAL */, defaultSuffix);\n      case 35 /* LOWER_ARMENIAN */:\n        return createAdditiveCounter(value, 1, 9999, ARMENIAN, 3 /* DECIMAL */, defaultSuffix).toLowerCase();\n      case 13 /* BENGALI */:\n        return createCounterStyleFromRange(value, 2534, 2543, true, defaultSuffix);\n      case 14 /* CAMBODIAN */:\n      case 30 /* KHMER */:\n        return createCounterStyleFromRange(value, 6112, 6121, true, defaultSuffix);\n      case 15 /* CJK_EARTHLY_BRANCH */:\n        return createCounterStyleFromSymbols(value, '子丑寅卯辰巳午未申酉戌亥', cjkSuffix);\n      case 16 /* CJK_HEAVENLY_STEM */:\n        return createCounterStyleFromSymbols(value, '甲乙丙丁戊己庚辛壬癸', cjkSuffix);\n      case 17 /* CJK_IDEOGRAPHIC */:\n      case 48 /* TRAD_CHINESE_INFORMAL */:\n        return createCJKCounter(value, '零一二三四五六七八九', CHINESE_INFORMAL_MULTIPLIERS, '負', cjkSuffix, CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);\n      case 47 /* TRAD_CHINESE_FORMAL */:\n        return createCJKCounter(value, '零壹貳參肆伍陸柒捌玖', CHINESE_FORMAL_MULTIPLIERS, '負', cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);\n      case 42 /* SIMP_CHINESE_INFORMAL */:\n        return createCJKCounter(value, '零一二三四五六七八九', CHINESE_INFORMAL_MULTIPLIERS, '负', cjkSuffix, CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);\n      case 41 /* SIMP_CHINESE_FORMAL */:\n        return createCJKCounter(value, '零壹贰叁肆伍陆柒捌玖', CHINESE_FORMAL_MULTIPLIERS, '负', cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);\n      case 26 /* JAPANESE_INFORMAL */:\n        return createCJKCounter(value, '〇一二三四五六七八九', '十百千万', JAPANESE_NEGATIVE, cjkSuffix, 0);\n      case 25 /* JAPANESE_FORMAL */:\n        return createCJKCounter(value, '零壱弐参四伍六七八九', '拾百千万', JAPANESE_NEGATIVE, cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);\n      case 31 /* KOREAN_HANGUL_FORMAL */:\n        return createCJKCounter(value, '영일이삼사오육칠팔구', '십백천만', KOREAN_NEGATIVE, koreanSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);\n      case 33 /* KOREAN_HANJA_INFORMAL */:\n        return createCJKCounter(value, '零一二三四五六七八九', '十百千萬', KOREAN_NEGATIVE, koreanSuffix, 0);\n      case 32 /* KOREAN_HANJA_FORMAL */:\n        return createCJKCounter(value, '零壹貳參四五六七八九', '拾百千', KOREAN_NEGATIVE, koreanSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);\n      case 18 /* DEVANAGARI */:\n        return createCounterStyleFromRange(value, 0x966, 0x96f, true, defaultSuffix);\n      case 20 /* GEORGIAN */:\n        return createAdditiveCounter(value, 1, 19999, GEORGIAN, 3 /* DECIMAL */, defaultSuffix);\n      case 21 /* GUJARATI */:\n        return createCounterStyleFromRange(value, 0xae6, 0xaef, true, defaultSuffix);\n      case 22 /* GURMUKHI */:\n        return createCounterStyleFromRange(value, 0xa66, 0xa6f, true, defaultSuffix);\n      case 22 /* HEBREW */:\n        return createAdditiveCounter(value, 1, 10999, HEBREW, 3 /* DECIMAL */, defaultSuffix);\n      case 23 /* HIRAGANA */:\n        return createCounterStyleFromSymbols(value, 'あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん');\n      case 24 /* HIRAGANA_IROHA */:\n        return createCounterStyleFromSymbols(value, 'いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやまけふこえてあさきゆめみしゑひもせす');\n      case 27 /* KANNADA */:\n        return createCounterStyleFromRange(value, 0xce6, 0xcef, true, defaultSuffix);\n      case 28 /* KATAKANA */:\n        return createCounterStyleFromSymbols(value, 'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン', cjkSuffix);\n      case 29 /* KATAKANA_IROHA */:\n        return createCounterStyleFromSymbols(value, 'イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス', cjkSuffix);\n      case 34 /* LAO */:\n        return createCounterStyleFromRange(value, 0xed0, 0xed9, true, defaultSuffix);\n      case 37 /* MONGOLIAN */:\n        return createCounterStyleFromRange(value, 0x1810, 0x1819, true, defaultSuffix);\n      case 38 /* MYANMAR */:\n        return createCounterStyleFromRange(value, 0x1040, 0x1049, true, defaultSuffix);\n      case 39 /* ORIYA */:\n        return createCounterStyleFromRange(value, 0xb66, 0xb6f, true, defaultSuffix);\n      case 40 /* PERSIAN */:\n        return createCounterStyleFromRange(value, 0x6f0, 0x6f9, true, defaultSuffix);\n      case 43 /* TAMIL */:\n        return createCounterStyleFromRange(value, 0xbe6, 0xbef, true, defaultSuffix);\n      case 44 /* TELUGU */:\n        return createCounterStyleFromRange(value, 0xc66, 0xc6f, true, defaultSuffix);\n      case 45 /* THAI */:\n        return createCounterStyleFromRange(value, 0xe50, 0xe59, true, defaultSuffix);\n      case 46 /* TIBETAN */:\n        return createCounterStyleFromRange(value, 0xf20, 0xf29, true, defaultSuffix);\n      case 3 /* DECIMAL */:\n      default:\n        return createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);\n    }\n  };\n  var IGNORE_ATTRIBUTE = 'data-html2canvas-ignore';\n  var DocumentCloner = /** @class */function () {\n    function DocumentCloner(context, element, options) {\n      this.context = context;\n      this.options = options;\n      this.scrolledElements = [];\n      this.referenceElement = element;\n      this.counters = new CounterState();\n      this.quoteDepth = 0;\n      if (!element.ownerDocument) {\n        throw new Error('Cloned element does not have an owner document');\n      }\n      this.documentElement = this.cloneNode(element.ownerDocument.documentElement, false);\n    }\n    DocumentCloner.prototype.toIFrame = function (ownerDocument, windowSize) {\n      var _this = this;\n      var iframe = createIFrameContainer(ownerDocument, windowSize);\n      if (!iframe.contentWindow) {\n        return Promise.reject(\"Unable to find iframe window\");\n      }\n      var scrollX = ownerDocument.defaultView.pageXOffset;\n      var scrollY = ownerDocument.defaultView.pageYOffset;\n      var cloneWindow = iframe.contentWindow;\n      var documentClone = cloneWindow.document;\n      /* Chrome doesn't detect relative background-images assigned in inline <style> sheets when fetched through getComputedStyle\n       if window url is about:blank, we can assign the url to current by writing onto the document\n       */\n      var iframeLoad = iframeLoader(iframe).then(function () {\n        return __awaiter(_this, void 0, void 0, function () {\n          var onclone, referenceElement;\n          return __generator(this, function (_a) {\n            switch (_a.label) {\n              case 0:\n                this.scrolledElements.forEach(restoreNodeScroll);\n                if (cloneWindow) {\n                  cloneWindow.scrollTo(windowSize.left, windowSize.top);\n                  if (/(iPad|iPhone|iPod)/g.test(navigator.userAgent) && (cloneWindow.scrollY !== windowSize.top || cloneWindow.scrollX !== windowSize.left)) {\n                    this.context.logger.warn('Unable to restore scroll position for cloned document');\n                    this.context.windowBounds = this.context.windowBounds.add(cloneWindow.scrollX - windowSize.left, cloneWindow.scrollY - windowSize.top, 0, 0);\n                  }\n                }\n                onclone = this.options.onclone;\n                referenceElement = this.clonedReferenceElement;\n                if (typeof referenceElement === 'undefined') {\n                  return [2 /*return*/, Promise.reject(\"Error finding the \" + this.referenceElement.nodeName + \" in the cloned document\")];\n                }\n                if (!(documentClone.fonts && documentClone.fonts.ready)) return [3 /*break*/, 2];\n                return [4 /*yield*/, documentClone.fonts.ready];\n              case 1:\n                _a.sent();\n                _a.label = 2;\n              case 2:\n                if (!/(AppleWebKit)/g.test(navigator.userAgent)) return [3 /*break*/, 4];\n                return [4 /*yield*/, imagesReady(documentClone)];\n              case 3:\n                _a.sent();\n                _a.label = 4;\n              case 4:\n                if (typeof onclone === 'function') {\n                  return [2 /*return*/, Promise.resolve().then(function () {\n                    return onclone(documentClone, referenceElement);\n                  }).then(function () {\n                    return iframe;\n                  })];\n                }\n                return [2 /*return*/, iframe];\n            }\n          });\n        });\n      });\n      documentClone.open();\n      documentClone.write(serializeDoctype(document.doctype) + \"<html></html>\");\n      // Chrome scrolls the parent document for some reason after the write to the cloned window???\n      restoreOwnerScroll(this.referenceElement.ownerDocument, scrollX, scrollY);\n      documentClone.replaceChild(documentClone.adoptNode(this.documentElement), documentClone.documentElement);\n      documentClone.close();\n      return iframeLoad;\n    };\n    DocumentCloner.prototype.createElementClone = function (node) {\n      if (isDebugging(node, 2 /* CLONE */)) {\n        debugger;\n      }\n      if (isCanvasElement(node)) {\n        return this.createCanvasClone(node);\n      }\n      if (isVideoElement(node)) {\n        return this.createVideoClone(node);\n      }\n      if (isStyleElement(node)) {\n        return this.createStyleClone(node);\n      }\n      var clone = node.cloneNode(false);\n      if (isImageElement(clone)) {\n        if (isImageElement(node) && node.currentSrc && node.currentSrc !== node.src) {\n          clone.src = node.currentSrc;\n          clone.srcset = '';\n        }\n        if (clone.loading === 'lazy') {\n          clone.loading = 'eager';\n        }\n      }\n      if (isCustomElement(clone)) {\n        return this.createCustomElementClone(clone);\n      }\n      return clone;\n    };\n    DocumentCloner.prototype.createCustomElementClone = function (node) {\n      var clone = document.createElement('html2canvascustomelement');\n      copyCSSStyles(node.style, clone);\n      return clone;\n    };\n    DocumentCloner.prototype.createStyleClone = function (node) {\n      try {\n        var sheet = node.sheet;\n        if (sheet && sheet.cssRules) {\n          var css = [].slice.call(sheet.cssRules, 0).reduce(function (css, rule) {\n            if (rule && typeof rule.cssText === 'string') {\n              return css + rule.cssText;\n            }\n            return css;\n          }, '');\n          var style = node.cloneNode(false);\n          style.textContent = css;\n          return style;\n        }\n      } catch (e) {\n        // accessing node.sheet.cssRules throws a DOMException\n        this.context.logger.error('Unable to access cssRules property', e);\n        if (e.name !== 'SecurityError') {\n          throw e;\n        }\n      }\n      return node.cloneNode(false);\n    };\n    DocumentCloner.prototype.createCanvasClone = function (canvas) {\n      var _a;\n      if (this.options.inlineImages && canvas.ownerDocument) {\n        var img = canvas.ownerDocument.createElement('img');\n        try {\n          img.src = canvas.toDataURL();\n          return img;\n        } catch (e) {\n          this.context.logger.info(\"Unable to inline canvas contents, canvas is tainted\", canvas);\n        }\n      }\n      var clonedCanvas = canvas.cloneNode(false);\n      try {\n        clonedCanvas.width = canvas.width;\n        clonedCanvas.height = canvas.height;\n        var ctx = canvas.getContext('2d');\n        var clonedCtx = clonedCanvas.getContext('2d');\n        if (clonedCtx) {\n          if (!this.options.allowTaint && ctx) {\n            clonedCtx.putImageData(ctx.getImageData(0, 0, canvas.width, canvas.height), 0, 0);\n          } else {\n            var gl = (_a = canvas.getContext('webgl2')) !== null && _a !== void 0 ? _a : canvas.getContext('webgl');\n            if (gl) {\n              var attribs = gl.getContextAttributes();\n              if ((attribs === null || attribs === void 0 ? void 0 : attribs.preserveDrawingBuffer) === false) {\n                this.context.logger.warn('Unable to clone WebGL context as it has preserveDrawingBuffer=false', canvas);\n              }\n            }\n            clonedCtx.drawImage(canvas, 0, 0);\n          }\n        }\n        return clonedCanvas;\n      } catch (e) {\n        this.context.logger.info(\"Unable to clone canvas as it is tainted\", canvas);\n      }\n      return clonedCanvas;\n    };\n    DocumentCloner.prototype.createVideoClone = function (video) {\n      var canvas = video.ownerDocument.createElement('canvas');\n      canvas.width = video.offsetWidth;\n      canvas.height = video.offsetHeight;\n      var ctx = canvas.getContext('2d');\n      try {\n        if (ctx) {\n          ctx.drawImage(video, 0, 0, canvas.width, canvas.height);\n          if (!this.options.allowTaint) {\n            ctx.getImageData(0, 0, canvas.width, canvas.height);\n          }\n        }\n        return canvas;\n      } catch (e) {\n        this.context.logger.info(\"Unable to clone video as it is tainted\", video);\n      }\n      var blankCanvas = video.ownerDocument.createElement('canvas');\n      blankCanvas.width = video.offsetWidth;\n      blankCanvas.height = video.offsetHeight;\n      return blankCanvas;\n    };\n    DocumentCloner.prototype.appendChildNode = function (clone, child, copyStyles) {\n      if (!isElementNode(child) || !isScriptElement(child) && !child.hasAttribute(IGNORE_ATTRIBUTE) && (typeof this.options.ignoreElements !== 'function' || !this.options.ignoreElements(child))) {\n        if (!this.options.copyStyles || !isElementNode(child) || !isStyleElement(child)) {\n          clone.appendChild(this.cloneNode(child, copyStyles));\n        }\n      }\n    };\n    DocumentCloner.prototype.cloneChildNodes = function (node, clone, copyStyles) {\n      var _this = this;\n      for (var child = node.shadowRoot ? node.shadowRoot.firstChild : node.firstChild; child; child = child.nextSibling) {\n        if (isElementNode(child) && isSlotElement(child) && typeof child.assignedNodes === 'function') {\n          var assignedNodes = child.assignedNodes();\n          if (assignedNodes.length) {\n            assignedNodes.forEach(function (assignedNode) {\n              return _this.appendChildNode(clone, assignedNode, copyStyles);\n            });\n          }\n        } else {\n          this.appendChildNode(clone, child, copyStyles);\n        }\n      }\n    };\n    DocumentCloner.prototype.cloneNode = function (node, copyStyles) {\n      if (isTextNode(node)) {\n        return document.createTextNode(node.data);\n      }\n      if (!node.ownerDocument) {\n        return node.cloneNode(false);\n      }\n      var window = node.ownerDocument.defaultView;\n      if (window && isElementNode(node) && (isHTMLElementNode(node) || isSVGElementNode(node))) {\n        var clone = this.createElementClone(node);\n        clone.style.transitionProperty = 'none';\n        var style = window.getComputedStyle(node);\n        var styleBefore = window.getComputedStyle(node, ':before');\n        var styleAfter = window.getComputedStyle(node, ':after');\n        if (this.referenceElement === node && isHTMLElementNode(clone)) {\n          this.clonedReferenceElement = clone;\n        }\n        if (isBodyElement(clone)) {\n          createPseudoHideStyles(clone);\n        }\n        var counters = this.counters.parse(new CSSParsedCounterDeclaration(this.context, style));\n        var before = this.resolvePseudoContent(node, clone, styleBefore, PseudoElementType.BEFORE);\n        if (isCustomElement(node)) {\n          copyStyles = true;\n        }\n        if (!isVideoElement(node)) {\n          this.cloneChildNodes(node, clone, copyStyles);\n        }\n        if (before) {\n          clone.insertBefore(before, clone.firstChild);\n        }\n        var after = this.resolvePseudoContent(node, clone, styleAfter, PseudoElementType.AFTER);\n        if (after) {\n          clone.appendChild(after);\n        }\n        this.counters.pop(counters);\n        if (style && (this.options.copyStyles || isSVGElementNode(node)) && !isIFrameElement(node) || copyStyles) {\n          copyCSSStyles(style, clone);\n        }\n        if (node.scrollTop !== 0 || node.scrollLeft !== 0) {\n          this.scrolledElements.push([clone, node.scrollLeft, node.scrollTop]);\n        }\n        if ((isTextareaElement(node) || isSelectElement(node)) && (isTextareaElement(clone) || isSelectElement(clone))) {\n          clone.value = node.value;\n        }\n        return clone;\n      }\n      return node.cloneNode(false);\n    };\n    DocumentCloner.prototype.resolvePseudoContent = function (node, clone, style, pseudoElt) {\n      var _this = this;\n      if (!style) {\n        return;\n      }\n      var value = style.content;\n      var document = clone.ownerDocument;\n      if (!document || !value || value === 'none' || value === '-moz-alt-content' || style.display === 'none') {\n        return;\n      }\n      this.counters.parse(new CSSParsedCounterDeclaration(this.context, style));\n      var declaration = new CSSParsedPseudoDeclaration(this.context, style);\n      var anonymousReplacedElement = document.createElement('html2canvaspseudoelement');\n      copyCSSStyles(style, anonymousReplacedElement);\n      declaration.content.forEach(function (token) {\n        if (token.type === 0 /* STRING_TOKEN */) {\n          anonymousReplacedElement.appendChild(document.createTextNode(token.value));\n        } else if (token.type === 22 /* URL_TOKEN */) {\n          var img = document.createElement('img');\n          img.src = token.value;\n          img.style.opacity = '1';\n          anonymousReplacedElement.appendChild(img);\n        } else if (token.type === 18 /* FUNCTION */) {\n          if (token.name === 'attr') {\n            var attr = token.values.filter(isIdentToken);\n            if (attr.length) {\n              anonymousReplacedElement.appendChild(document.createTextNode(node.getAttribute(attr[0].value) || ''));\n            }\n          } else if (token.name === 'counter') {\n            var _a = token.values.filter(nonFunctionArgSeparator),\n              counter = _a[0],\n              counterStyle = _a[1];\n            if (counter && isIdentToken(counter)) {\n              var counterState = _this.counters.getCounterValue(counter.value);\n              var counterType = counterStyle && isIdentToken(counterStyle) ? listStyleType.parse(_this.context, counterStyle.value) : 3 /* DECIMAL */;\n              anonymousReplacedElement.appendChild(document.createTextNode(createCounterText(counterState, counterType, false)));\n            }\n          } else if (token.name === 'counters') {\n            var _b = token.values.filter(nonFunctionArgSeparator),\n              counter = _b[0],\n              delim = _b[1],\n              counterStyle = _b[2];\n            if (counter && isIdentToken(counter)) {\n              var counterStates = _this.counters.getCounterValues(counter.value);\n              var counterType_1 = counterStyle && isIdentToken(counterStyle) ? listStyleType.parse(_this.context, counterStyle.value) : 3 /* DECIMAL */;\n              var separator = delim && delim.type === 0 /* STRING_TOKEN */ ? delim.value : '';\n              var text = counterStates.map(function (value) {\n                return createCounterText(value, counterType_1, false);\n              }).join(separator);\n              anonymousReplacedElement.appendChild(document.createTextNode(text));\n            }\n          } else ;\n        } else if (token.type === 20 /* IDENT_TOKEN */) {\n          switch (token.value) {\n            case 'open-quote':\n              anonymousReplacedElement.appendChild(document.createTextNode(getQuote(declaration.quotes, _this.quoteDepth++, true)));\n              break;\n            case 'close-quote':\n              anonymousReplacedElement.appendChild(document.createTextNode(getQuote(declaration.quotes, --_this.quoteDepth, false)));\n              break;\n            default:\n              // safari doesn't parse string tokens correctly because of lack of quotes\n              anonymousReplacedElement.appendChild(document.createTextNode(token.value));\n          }\n        }\n      });\n      anonymousReplacedElement.className = PSEUDO_HIDE_ELEMENT_CLASS_BEFORE + \" \" + PSEUDO_HIDE_ELEMENT_CLASS_AFTER;\n      var newClassName = pseudoElt === PseudoElementType.BEFORE ? \" \" + PSEUDO_HIDE_ELEMENT_CLASS_BEFORE : \" \" + PSEUDO_HIDE_ELEMENT_CLASS_AFTER;\n      if (isSVGElementNode(clone)) {\n        clone.className.baseValue += newClassName;\n      } else {\n        clone.className += newClassName;\n      }\n      return anonymousReplacedElement;\n    };\n    DocumentCloner.destroy = function (container) {\n      if (container.parentNode) {\n        container.parentNode.removeChild(container);\n        return true;\n      }\n      return false;\n    };\n    return DocumentCloner;\n  }();\n  var PseudoElementType = /*#__PURE__*/function (PseudoElementType) {\n    PseudoElementType[PseudoElementType[\"BEFORE\"] = 0] = \"BEFORE\";\n    PseudoElementType[PseudoElementType[\"AFTER\"] = 1] = \"AFTER\";\n    return PseudoElementType;\n  }(PseudoElementType || {});\n  var createIFrameContainer = function (ownerDocument, bounds) {\n    var cloneIframeContainer = ownerDocument.createElement('iframe');\n    cloneIframeContainer.className = 'html2canvas-container';\n    cloneIframeContainer.style.visibility = 'hidden';\n    cloneIframeContainer.style.position = 'fixed';\n    cloneIframeContainer.style.left = '-10000px';\n    cloneIframeContainer.style.top = '0px';\n    cloneIframeContainer.style.border = '0';\n    cloneIframeContainer.width = bounds.width.toString();\n    cloneIframeContainer.height = bounds.height.toString();\n    cloneIframeContainer.scrolling = 'no'; // ios won't scroll without it\n    cloneIframeContainer.setAttribute(IGNORE_ATTRIBUTE, 'true');\n    ownerDocument.body.appendChild(cloneIframeContainer);\n    return cloneIframeContainer;\n  };\n  var imageReady = function (img) {\n    return new Promise(function (resolve) {\n      if (img.complete) {\n        resolve();\n        return;\n      }\n      if (!img.src) {\n        resolve();\n        return;\n      }\n      img.onload = resolve;\n      img.onerror = resolve;\n    });\n  };\n  var imagesReady = function (document) {\n    return Promise.all([].slice.call(document.images, 0).map(imageReady));\n  };\n  var iframeLoader = function (iframe) {\n    return new Promise(function (resolve, reject) {\n      var cloneWindow = iframe.contentWindow;\n      if (!cloneWindow) {\n        return reject(\"No window assigned for iframe\");\n      }\n      var documentClone = cloneWindow.document;\n      cloneWindow.onload = iframe.onload = function () {\n        cloneWindow.onload = iframe.onload = null;\n        var interval = setInterval(function () {\n          if (documentClone.body.childNodes.length > 0 && documentClone.readyState === 'complete') {\n            clearInterval(interval);\n            resolve(iframe);\n          }\n        }, 50);\n      };\n    });\n  };\n  var ignoredStyleProperties = ['all', 'd', 'content' // Safari shows pseudoelements if content is set\n  ];\n  var copyCSSStyles = function (style, target) {\n    // Edge does not provide value for cssText\n    for (var i = style.length - 1; i >= 0; i--) {\n      var property = style.item(i);\n      if (ignoredStyleProperties.indexOf(property) === -1) {\n        target.style.setProperty(property, style.getPropertyValue(property));\n      }\n    }\n    return target;\n  };\n  var serializeDoctype = function (doctype) {\n    var str = '';\n    if (doctype) {\n      str += '<!DOCTYPE ';\n      if (doctype.name) {\n        str += doctype.name;\n      }\n      if (doctype.internalSubset) {\n        str += doctype.internalSubset;\n      }\n      if (doctype.publicId) {\n        str += \"\\\"\" + doctype.publicId + \"\\\"\";\n      }\n      if (doctype.systemId) {\n        str += \"\\\"\" + doctype.systemId + \"\\\"\";\n      }\n      str += '>';\n    }\n    return str;\n  };\n  var restoreOwnerScroll = function (ownerDocument, x, y) {\n    if (ownerDocument && ownerDocument.defaultView && (x !== ownerDocument.defaultView.pageXOffset || y !== ownerDocument.defaultView.pageYOffset)) {\n      ownerDocument.defaultView.scrollTo(x, y);\n    }\n  };\n  var restoreNodeScroll = function (_a) {\n    var element = _a[0],\n      x = _a[1],\n      y = _a[2];\n    element.scrollLeft = x;\n    element.scrollTop = y;\n  };\n  var PSEUDO_BEFORE = ':before';\n  var PSEUDO_AFTER = ':after';\n  var PSEUDO_HIDE_ELEMENT_CLASS_BEFORE = '___html2canvas___pseudoelement_before';\n  var PSEUDO_HIDE_ELEMENT_CLASS_AFTER = '___html2canvas___pseudoelement_after';\n  var PSEUDO_HIDE_ELEMENT_STYLE = \"{\\n    content: \\\"\\\" !important;\\n    display: none !important;\\n}\";\n  var createPseudoHideStyles = function (body) {\n    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);\n  };\n  var createStyles = function (body, styles) {\n    var document = body.ownerDocument;\n    if (document) {\n      var style = document.createElement('style');\n      style.textContent = styles;\n      body.appendChild(style);\n    }\n  };\n  var CacheStorage = /** @class */function () {\n    function CacheStorage() {}\n    CacheStorage.getOrigin = function (url) {\n      var link = CacheStorage._link;\n      if (!link) {\n        return 'about:blank';\n      }\n      link.href = url;\n      link.href = link.href; // IE9, LOL! - http://jsfiddle.net/niklasvh/2e48b/\n      return link.protocol + link.hostname + link.port;\n    };\n    CacheStorage.isSameOrigin = function (src) {\n      return CacheStorage.getOrigin(src) === CacheStorage._origin;\n    };\n    CacheStorage.setContext = function (window) {\n      CacheStorage._link = window.document.createElement('a');\n      CacheStorage._origin = CacheStorage.getOrigin(window.location.href);\n    };\n    CacheStorage._origin = 'about:blank';\n    return CacheStorage;\n  }();\n  var Cache = /** @class */function () {\n    function Cache(context, _options) {\n      this.context = context;\n      this._options = _options;\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      this._cache = {};\n    }\n    Cache.prototype.addImage = function (src) {\n      var result = Promise.resolve();\n      if (this.has(src)) {\n        return result;\n      }\n      if (isBlobImage(src) || isRenderable(src)) {\n        (this._cache[src] = this.loadImage(src)).catch(function () {\n          // prevent unhandled rejection\n        });\n        return result;\n      }\n      return result;\n    };\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    Cache.prototype.match = function (src) {\n      return this._cache[src];\n    };\n    Cache.prototype.loadImage = function (key) {\n      return __awaiter(this, void 0, void 0, function () {\n        var isSameOrigin, useCORS, useProxy, src;\n        var _this = this;\n        return __generator(this, function (_a) {\n          switch (_a.label) {\n            case 0:\n              isSameOrigin = CacheStorage.isSameOrigin(key);\n              useCORS = !isInlineImage(key) && this._options.useCORS === true && FEATURES.SUPPORT_CORS_IMAGES && !isSameOrigin;\n              useProxy = !isInlineImage(key) && !isSameOrigin && !isBlobImage(key) && typeof this._options.proxy === 'string' && FEATURES.SUPPORT_CORS_XHR && !useCORS;\n              if (!isSameOrigin && this._options.allowTaint === false && !isInlineImage(key) && !isBlobImage(key) && !useProxy && !useCORS) {\n                return [2 /*return*/];\n              }\n              src = key;\n              if (!useProxy) return [3 /*break*/, 2];\n              return [4 /*yield*/, this.proxy(src)];\n            case 1:\n              src = _a.sent();\n              _a.label = 2;\n            case 2:\n              this.context.logger.debug(\"Added image \" + key.substring(0, 256));\n              return [4 /*yield*/, new Promise(function (resolve, reject) {\n                var img = new Image();\n                img.onload = function () {\n                  return resolve(img);\n                };\n                img.onerror = reject;\n                //ios safari 10.3 taints canvas with data urls unless crossOrigin is set to anonymous\n                if (isInlineBase64Image(src) || useCORS) {\n                  img.crossOrigin = 'anonymous';\n                }\n                img.src = src;\n                if (img.complete === true) {\n                  // Inline XML images may fail to parse, throwing an Error later on\n                  setTimeout(function () {\n                    return resolve(img);\n                  }, 500);\n                }\n                if (_this._options.imageTimeout > 0) {\n                  setTimeout(function () {\n                    return reject(\"Timed out (\" + _this._options.imageTimeout + \"ms) loading image\");\n                  }, _this._options.imageTimeout);\n                }\n              })];\n            case 3:\n              return [2 /*return*/, _a.sent()];\n          }\n        });\n      });\n    };\n    Cache.prototype.has = function (key) {\n      return typeof this._cache[key] !== 'undefined';\n    };\n    Cache.prototype.keys = function () {\n      return Promise.resolve(Object.keys(this._cache));\n    };\n    Cache.prototype.proxy = function (src) {\n      var _this = this;\n      var proxy = this._options.proxy;\n      if (!proxy) {\n        throw new Error('No proxy defined');\n      }\n      var key = src.substring(0, 256);\n      return new Promise(function (resolve, reject) {\n        var responseType = FEATURES.SUPPORT_RESPONSE_TYPE ? 'blob' : 'text';\n        var xhr = new XMLHttpRequest();\n        xhr.onload = function () {\n          if (xhr.status === 200) {\n            if (responseType === 'text') {\n              resolve(xhr.response);\n            } else {\n              var reader_1 = new FileReader();\n              reader_1.addEventListener('load', function () {\n                return resolve(reader_1.result);\n              }, false);\n              reader_1.addEventListener('error', function (e) {\n                return reject(e);\n              }, false);\n              reader_1.readAsDataURL(xhr.response);\n            }\n          } else {\n            reject(\"Failed to proxy resource \" + key + \" with status code \" + xhr.status);\n          }\n        };\n        xhr.onerror = reject;\n        var queryString = proxy.indexOf('?') > -1 ? '&' : '?';\n        xhr.open('GET', \"\" + proxy + queryString + \"url=\" + encodeURIComponent(src) + \"&responseType=\" + responseType);\n        if (responseType !== 'text' && xhr instanceof XMLHttpRequest) {\n          xhr.responseType = responseType;\n        }\n        if (_this._options.imageTimeout) {\n          var timeout_1 = _this._options.imageTimeout;\n          xhr.timeout = timeout_1;\n          xhr.ontimeout = function () {\n            return reject(\"Timed out (\" + timeout_1 + \"ms) proxying \" + key);\n          };\n        }\n        xhr.send();\n      });\n    };\n    return Cache;\n  }();\n  var INLINE_SVG = /^data:image\\/svg\\+xml/i;\n  var INLINE_BASE64 = /^data:image\\/.*;base64,/i;\n  var INLINE_IMG = /^data:image\\/.*/i;\n  var isRenderable = function (src) {\n    return FEATURES.SUPPORT_SVG_DRAWING || !isSVG(src);\n  };\n  var isInlineImage = function (src) {\n    return INLINE_IMG.test(src);\n  };\n  var isInlineBase64Image = function (src) {\n    return INLINE_BASE64.test(src);\n  };\n  var isBlobImage = function (src) {\n    return src.substr(0, 4) === 'blob';\n  };\n  var isSVG = function (src) {\n    return src.substr(-3).toLowerCase() === 'svg' || INLINE_SVG.test(src);\n  };\n  var Vector = /** @class */function () {\n    function Vector(x, y) {\n      this.type = 0 /* VECTOR */;\n      this.x = x;\n      this.y = y;\n    }\n    Vector.prototype.add = function (deltaX, deltaY) {\n      return new Vector(this.x + deltaX, this.y + deltaY);\n    };\n    return Vector;\n  }();\n  var lerp = function (a, b, t) {\n    return new Vector(a.x + (b.x - a.x) * t, a.y + (b.y - a.y) * t);\n  };\n  var BezierCurve = /** @class */function () {\n    function BezierCurve(start, startControl, endControl, end) {\n      this.type = 1 /* BEZIER_CURVE */;\n      this.start = start;\n      this.startControl = startControl;\n      this.endControl = endControl;\n      this.end = end;\n    }\n    BezierCurve.prototype.subdivide = function (t, firstHalf) {\n      var ab = lerp(this.start, this.startControl, t);\n      var bc = lerp(this.startControl, this.endControl, t);\n      var cd = lerp(this.endControl, this.end, t);\n      var abbc = lerp(ab, bc, t);\n      var bccd = lerp(bc, cd, t);\n      var dest = lerp(abbc, bccd, t);\n      return firstHalf ? new BezierCurve(this.start, ab, abbc, dest) : new BezierCurve(dest, bccd, cd, this.end);\n    };\n    BezierCurve.prototype.add = function (deltaX, deltaY) {\n      return new BezierCurve(this.start.add(deltaX, deltaY), this.startControl.add(deltaX, deltaY), this.endControl.add(deltaX, deltaY), this.end.add(deltaX, deltaY));\n    };\n    BezierCurve.prototype.reverse = function () {\n      return new BezierCurve(this.end, this.endControl, this.startControl, this.start);\n    };\n    return BezierCurve;\n  }();\n  var isBezierCurve = function (path) {\n    return path.type === 1 /* BEZIER_CURVE */;\n  };\n  var BoundCurves = /** @class */function () {\n    function BoundCurves(element) {\n      var styles = element.styles;\n      var bounds = element.bounds;\n      var _a = getAbsoluteValueForTuple(styles.borderTopLeftRadius, bounds.width, bounds.height),\n        tlh = _a[0],\n        tlv = _a[1];\n      var _b = getAbsoluteValueForTuple(styles.borderTopRightRadius, bounds.width, bounds.height),\n        trh = _b[0],\n        trv = _b[1];\n      var _c = getAbsoluteValueForTuple(styles.borderBottomRightRadius, bounds.width, bounds.height),\n        brh = _c[0],\n        brv = _c[1];\n      var _d = getAbsoluteValueForTuple(styles.borderBottomLeftRadius, bounds.width, bounds.height),\n        blh = _d[0],\n        blv = _d[1];\n      var factors = [];\n      factors.push((tlh + trh) / bounds.width);\n      factors.push((blh + brh) / bounds.width);\n      factors.push((tlv + blv) / bounds.height);\n      factors.push((trv + brv) / bounds.height);\n      var maxFactor = Math.max.apply(Math, factors);\n      if (maxFactor > 1) {\n        tlh /= maxFactor;\n        tlv /= maxFactor;\n        trh /= maxFactor;\n        trv /= maxFactor;\n        brh /= maxFactor;\n        brv /= maxFactor;\n        blh /= maxFactor;\n        blv /= maxFactor;\n      }\n      var topWidth = bounds.width - trh;\n      var rightHeight = bounds.height - brv;\n      var bottomWidth = bounds.width - brh;\n      var leftHeight = bounds.height - blv;\n      var borderTopWidth = styles.borderTopWidth;\n      var borderRightWidth = styles.borderRightWidth;\n      var borderBottomWidth = styles.borderBottomWidth;\n      var borderLeftWidth = styles.borderLeftWidth;\n      var paddingTop = getAbsoluteValue(styles.paddingTop, element.bounds.width);\n      var paddingRight = getAbsoluteValue(styles.paddingRight, element.bounds.width);\n      var paddingBottom = getAbsoluteValue(styles.paddingBottom, element.bounds.width);\n      var paddingLeft = getAbsoluteValue(styles.paddingLeft, element.bounds.width);\n      this.topLeftBorderDoubleOuterBox = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + borderLeftWidth / 3, bounds.top + borderTopWidth / 3, tlh - borderLeftWidth / 3, tlv - borderTopWidth / 3, CORNER.TOP_LEFT) : new Vector(bounds.left + borderLeftWidth / 3, bounds.top + borderTopWidth / 3);\n      this.topRightBorderDoubleOuterBox = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + topWidth, bounds.top + borderTopWidth / 3, trh - borderRightWidth / 3, trv - borderTopWidth / 3, CORNER.TOP_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth / 3, bounds.top + borderTopWidth / 3);\n      this.bottomRightBorderDoubleOuterBox = brh > 0 || brv > 0 ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh - borderRightWidth / 3, brv - borderBottomWidth / 3, CORNER.BOTTOM_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth / 3, bounds.top + bounds.height - borderBottomWidth / 3);\n      this.bottomLeftBorderDoubleOuterBox = blh > 0 || blv > 0 ? getCurvePoints(bounds.left + borderLeftWidth / 3, bounds.top + leftHeight, blh - borderLeftWidth / 3, blv - borderBottomWidth / 3, CORNER.BOTTOM_LEFT) : new Vector(bounds.left + borderLeftWidth / 3, bounds.top + bounds.height - borderBottomWidth / 3);\n      this.topLeftBorderDoubleInnerBox = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + borderLeftWidth * 2 / 3, bounds.top + borderTopWidth * 2 / 3, tlh - borderLeftWidth * 2 / 3, tlv - borderTopWidth * 2 / 3, CORNER.TOP_LEFT) : new Vector(bounds.left + borderLeftWidth * 2 / 3, bounds.top + borderTopWidth * 2 / 3);\n      this.topRightBorderDoubleInnerBox = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + topWidth, bounds.top + borderTopWidth * 2 / 3, trh - borderRightWidth * 2 / 3, trv - borderTopWidth * 2 / 3, CORNER.TOP_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth * 2 / 3, bounds.top + borderTopWidth * 2 / 3);\n      this.bottomRightBorderDoubleInnerBox = brh > 0 || brv > 0 ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh - borderRightWidth * 2 / 3, brv - borderBottomWidth * 2 / 3, CORNER.BOTTOM_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth * 2 / 3, bounds.top + bounds.height - borderBottomWidth * 2 / 3);\n      this.bottomLeftBorderDoubleInnerBox = blh > 0 || blv > 0 ? getCurvePoints(bounds.left + borderLeftWidth * 2 / 3, bounds.top + leftHeight, blh - borderLeftWidth * 2 / 3, blv - borderBottomWidth * 2 / 3, CORNER.BOTTOM_LEFT) : new Vector(bounds.left + borderLeftWidth * 2 / 3, bounds.top + bounds.height - borderBottomWidth * 2 / 3);\n      this.topLeftBorderStroke = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + borderLeftWidth / 2, bounds.top + borderTopWidth / 2, tlh - borderLeftWidth / 2, tlv - borderTopWidth / 2, CORNER.TOP_LEFT) : new Vector(bounds.left + borderLeftWidth / 2, bounds.top + borderTopWidth / 2);\n      this.topRightBorderStroke = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + topWidth, bounds.top + borderTopWidth / 2, trh - borderRightWidth / 2, trv - borderTopWidth / 2, CORNER.TOP_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth / 2, bounds.top + borderTopWidth / 2);\n      this.bottomRightBorderStroke = brh > 0 || brv > 0 ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh - borderRightWidth / 2, brv - borderBottomWidth / 2, CORNER.BOTTOM_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth / 2, bounds.top + bounds.height - borderBottomWidth / 2);\n      this.bottomLeftBorderStroke = blh > 0 || blv > 0 ? getCurvePoints(bounds.left + borderLeftWidth / 2, bounds.top + leftHeight, blh - borderLeftWidth / 2, blv - borderBottomWidth / 2, CORNER.BOTTOM_LEFT) : new Vector(bounds.left + borderLeftWidth / 2, bounds.top + bounds.height - borderBottomWidth / 2);\n      this.topLeftBorderBox = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left, bounds.top, tlh, tlv, CORNER.TOP_LEFT) : new Vector(bounds.left, bounds.top);\n      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);\n      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);\n      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);\n      this.topLeftPaddingBox = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + borderLeftWidth, bounds.top + borderTopWidth, Math.max(0, tlh - borderLeftWidth), Math.max(0, tlv - borderTopWidth), CORNER.TOP_LEFT) : new Vector(bounds.left + borderLeftWidth, bounds.top + borderTopWidth);\n      this.topRightPaddingBox = trh > 0 || trv > 0 ? getCurvePoints(bounds.left + Math.min(topWidth, bounds.width - borderRightWidth), bounds.top + borderTopWidth, topWidth > bounds.width + borderRightWidth ? 0 : Math.max(0, trh - borderRightWidth), Math.max(0, trv - borderTopWidth), CORNER.TOP_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth, bounds.top + borderTopWidth);\n      this.bottomRightPaddingBox = brh > 0 || brv > 0 ? getCurvePoints(bounds.left + Math.min(bottomWidth, bounds.width - borderLeftWidth), bounds.top + Math.min(rightHeight, bounds.height - borderBottomWidth), Math.max(0, brh - borderRightWidth), Math.max(0, brv - borderBottomWidth), CORNER.BOTTOM_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth, bounds.top + bounds.height - borderBottomWidth);\n      this.bottomLeftPaddingBox = blh > 0 || blv > 0 ? getCurvePoints(bounds.left + borderLeftWidth, bounds.top + Math.min(leftHeight, bounds.height - borderBottomWidth), Math.max(0, blh - borderLeftWidth), Math.max(0, blv - borderBottomWidth), CORNER.BOTTOM_LEFT) : new Vector(bounds.left + borderLeftWidth, bounds.top + bounds.height - borderBottomWidth);\n      this.topLeftContentBox = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + borderLeftWidth + paddingLeft, bounds.top + borderTopWidth + paddingTop, Math.max(0, tlh - (borderLeftWidth + paddingLeft)), Math.max(0, tlv - (borderTopWidth + paddingTop)), CORNER.TOP_LEFT) : new Vector(bounds.left + borderLeftWidth + paddingLeft, bounds.top + borderTopWidth + paddingTop);\n      this.topRightContentBox = trh > 0 || trv > 0 ? getCurvePoints(bounds.left + Math.min(topWidth, bounds.width + borderLeftWidth + paddingLeft), bounds.top + borderTopWidth + paddingTop, topWidth > bounds.width + borderLeftWidth + paddingLeft ? 0 : trh - borderLeftWidth + paddingLeft, trv - (borderTopWidth + paddingTop), CORNER.TOP_RIGHT) : new Vector(bounds.left + bounds.width - (borderRightWidth + paddingRight), bounds.top + borderTopWidth + paddingTop);\n      this.bottomRightContentBox = brh > 0 || brv > 0 ? getCurvePoints(bounds.left + Math.min(bottomWidth, bounds.width - (borderLeftWidth + paddingLeft)), bounds.top + Math.min(rightHeight, bounds.height + borderTopWidth + paddingTop), Math.max(0, brh - (borderRightWidth + paddingRight)), brv - (borderBottomWidth + paddingBottom), CORNER.BOTTOM_RIGHT) : new Vector(bounds.left + bounds.width - (borderRightWidth + paddingRight), bounds.top + bounds.height - (borderBottomWidth + paddingBottom));\n      this.bottomLeftContentBox = blh > 0 || blv > 0 ? getCurvePoints(bounds.left + borderLeftWidth + paddingLeft, bounds.top + leftHeight, Math.max(0, blh - (borderLeftWidth + paddingLeft)), blv - (borderBottomWidth + paddingBottom), CORNER.BOTTOM_LEFT) : new Vector(bounds.left + borderLeftWidth + paddingLeft, bounds.top + bounds.height - (borderBottomWidth + paddingBottom));\n    }\n    return BoundCurves;\n  }();\n  var CORNER = /*#__PURE__*/function (CORNER) {\n    CORNER[CORNER[\"TOP_LEFT\"] = 0] = \"TOP_LEFT\";\n    CORNER[CORNER[\"TOP_RIGHT\"] = 1] = \"TOP_RIGHT\";\n    CORNER[CORNER[\"BOTTOM_RIGHT\"] = 2] = \"BOTTOM_RIGHT\";\n    CORNER[CORNER[\"BOTTOM_LEFT\"] = 3] = \"BOTTOM_LEFT\";\n    return CORNER;\n  }(CORNER || {});\n  var getCurvePoints = function (x, y, r1, r2, position) {\n    var kappa = 4 * ((Math.sqrt(2) - 1) / 3);\n    var ox = r1 * kappa; // control point offset horizontal\n    var oy = r2 * kappa; // control point offset vertical\n    var xm = x + r1; // x-middle\n    var ym = y + r2; // y-middle\n    switch (position) {\n      case CORNER.TOP_LEFT:\n        return new BezierCurve(new Vector(x, ym), new Vector(x, ym - oy), new Vector(xm - ox, y), new Vector(xm, y));\n      case CORNER.TOP_RIGHT:\n        return new BezierCurve(new Vector(x, y), new Vector(x + ox, y), new Vector(xm, ym - oy), new Vector(xm, ym));\n      case CORNER.BOTTOM_RIGHT:\n        return new BezierCurve(new Vector(xm, y), new Vector(xm, y + oy), new Vector(x + ox, ym), new Vector(x, ym));\n      case CORNER.BOTTOM_LEFT:\n      default:\n        return new BezierCurve(new Vector(xm, ym), new Vector(xm - ox, ym), new Vector(x, y + oy), new Vector(x, y));\n    }\n  };\n  var calculateBorderBoxPath = function (curves) {\n    return [curves.topLeftBorderBox, curves.topRightBorderBox, curves.bottomRightBorderBox, curves.bottomLeftBorderBox];\n  };\n  var calculateContentBoxPath = function (curves) {\n    return [curves.topLeftContentBox, curves.topRightContentBox, curves.bottomRightContentBox, curves.bottomLeftContentBox];\n  };\n  var calculatePaddingBoxPath = function (curves) {\n    return [curves.topLeftPaddingBox, curves.topRightPaddingBox, curves.bottomRightPaddingBox, curves.bottomLeftPaddingBox];\n  };\n  var TransformEffect = /** @class */function () {\n    function TransformEffect(offsetX, offsetY, matrix) {\n      this.offsetX = offsetX;\n      this.offsetY = offsetY;\n      this.matrix = matrix;\n      this.type = 0 /* TRANSFORM */;\n      this.target = 2 /* BACKGROUND_BORDERS */ | 4 /* CONTENT */;\n    }\n    return TransformEffect;\n  }();\n  var ClipEffect = /** @class */function () {\n    function ClipEffect(path, target) {\n      this.path = path;\n      this.target = target;\n      this.type = 1 /* CLIP */;\n    }\n    return ClipEffect;\n  }();\n  var OpacityEffect = /** @class */function () {\n    function OpacityEffect(opacity) {\n      this.opacity = opacity;\n      this.type = 2 /* OPACITY */;\n      this.target = 2 /* BACKGROUND_BORDERS */ | 4 /* CONTENT */;\n    }\n    return OpacityEffect;\n  }();\n  var isTransformEffect = function (effect) {\n    return effect.type === 0 /* TRANSFORM */;\n  };\n  var isClipEffect = function (effect) {\n    return effect.type === 1 /* CLIP */;\n  };\n  var isOpacityEffect = function (effect) {\n    return effect.type === 2 /* OPACITY */;\n  };\n  var equalPath = function (a, b) {\n    if (a.length === b.length) {\n      return a.some(function (v, i) {\n        return v === b[i];\n      });\n    }\n    return false;\n  };\n  var transformPath = function (path, deltaX, deltaY, deltaW, deltaH) {\n    return path.map(function (point, index) {\n      switch (index) {\n        case 0:\n          return point.add(deltaX, deltaY);\n        case 1:\n          return point.add(deltaX + deltaW, deltaY);\n        case 2:\n          return point.add(deltaX + deltaW, deltaY + deltaH);\n        case 3:\n          return point.add(deltaX, deltaY + deltaH);\n      }\n      return point;\n    });\n  };\n  var StackingContext = /** @class */function () {\n    function StackingContext(container) {\n      this.element = container;\n      this.inlineLevel = [];\n      this.nonInlineLevel = [];\n      this.negativeZIndex = [];\n      this.zeroOrAutoZIndexOrTransformedOrOpacity = [];\n      this.positiveZIndex = [];\n      this.nonPositionedFloats = [];\n      this.nonPositionedInlineLevel = [];\n    }\n    return StackingContext;\n  }();\n  var ElementPaint = /** @class */function () {\n    function ElementPaint(container, parent) {\n      this.container = container;\n      this.parent = parent;\n      this.effects = [];\n      this.curves = new BoundCurves(this.container);\n      if (this.container.styles.opacity < 1) {\n        this.effects.push(new OpacityEffect(this.container.styles.opacity));\n      }\n      if (this.container.styles.transform !== null) {\n        var offsetX = this.container.bounds.left + this.container.styles.transformOrigin[0].number;\n        var offsetY = this.container.bounds.top + this.container.styles.transformOrigin[1].number;\n        var matrix = this.container.styles.transform;\n        this.effects.push(new TransformEffect(offsetX, offsetY, matrix));\n      }\n      if (this.container.styles.overflowX !== 0 /* VISIBLE */) {\n        var borderBox = calculateBorderBoxPath(this.curves);\n        var paddingBox = calculatePaddingBoxPath(this.curves);\n        if (equalPath(borderBox, paddingBox)) {\n          this.effects.push(new ClipEffect(borderBox, 2 /* BACKGROUND_BORDERS */ | 4 /* CONTENT */));\n        } else {\n          this.effects.push(new ClipEffect(borderBox, 2 /* BACKGROUND_BORDERS */));\n          this.effects.push(new ClipEffect(paddingBox, 4 /* CONTENT */));\n        }\n      }\n    }\n    ElementPaint.prototype.getEffects = function (target) {\n      var inFlow = [2 /* ABSOLUTE */, 3 /* FIXED */].indexOf(this.container.styles.position) === -1;\n      var parent = this.parent;\n      var effects = this.effects.slice(0);\n      while (parent) {\n        var croplessEffects = parent.effects.filter(function (effect) {\n          return !isClipEffect(effect);\n        });\n        if (inFlow || parent.container.styles.position !== 0 /* STATIC */ || !parent.parent) {\n          effects.unshift.apply(effects, croplessEffects);\n          inFlow = [2 /* ABSOLUTE */, 3 /* FIXED */].indexOf(parent.container.styles.position) === -1;\n          if (parent.container.styles.overflowX !== 0 /* VISIBLE */) {\n            var borderBox = calculateBorderBoxPath(parent.curves);\n            var paddingBox = calculatePaddingBoxPath(parent.curves);\n            if (!equalPath(borderBox, paddingBox)) {\n              effects.unshift(new ClipEffect(paddingBox, 2 /* BACKGROUND_BORDERS */ | 4 /* CONTENT */));\n            }\n          }\n        } else {\n          effects.unshift.apply(effects, croplessEffects);\n        }\n        parent = parent.parent;\n      }\n      return effects.filter(function (effect) {\n        return contains(effect.target, target);\n      });\n    };\n    return ElementPaint;\n  }();\n  var parseStackTree = function (parent, stackingContext, realStackingContext, listItems) {\n    parent.container.elements.forEach(function (child) {\n      var treatAsRealStackingContext = contains(child.flags, 4 /* CREATES_REAL_STACKING_CONTEXT */);\n      var createsStackingContext = contains(child.flags, 2 /* CREATES_STACKING_CONTEXT */);\n      var paintContainer = new ElementPaint(child, parent);\n      if (contains(child.styles.display, 2048 /* LIST_ITEM */)) {\n        listItems.push(paintContainer);\n      }\n      var listOwnerItems = contains(child.flags, 8 /* IS_LIST_OWNER */) ? [] : listItems;\n      if (treatAsRealStackingContext || createsStackingContext) {\n        var parentStack = treatAsRealStackingContext || child.styles.isPositioned() ? realStackingContext : stackingContext;\n        var stack = new StackingContext(paintContainer);\n        if (child.styles.isPositioned() || child.styles.opacity < 1 || child.styles.isTransformed()) {\n          var order_1 = child.styles.zIndex.order;\n          if (order_1 < 0) {\n            var index_1 = 0;\n            parentStack.negativeZIndex.some(function (current, i) {\n              if (order_1 > current.element.container.styles.zIndex.order) {\n                index_1 = i;\n                return false;\n              } else if (index_1 > 0) {\n                return true;\n              }\n              return false;\n            });\n            parentStack.negativeZIndex.splice(index_1, 0, stack);\n          } else if (order_1 > 0) {\n            var index_2 = 0;\n            parentStack.positiveZIndex.some(function (current, i) {\n              if (order_1 >= current.element.container.styles.zIndex.order) {\n                index_2 = i + 1;\n                return false;\n              } else if (index_2 > 0) {\n                return true;\n              }\n              return false;\n            });\n            parentStack.positiveZIndex.splice(index_2, 0, stack);\n          } else {\n            parentStack.zeroOrAutoZIndexOrTransformedOrOpacity.push(stack);\n          }\n        } else {\n          if (child.styles.isFloating()) {\n            parentStack.nonPositionedFloats.push(stack);\n          } else {\n            parentStack.nonPositionedInlineLevel.push(stack);\n          }\n        }\n        parseStackTree(paintContainer, stack, treatAsRealStackingContext ? stack : realStackingContext, listOwnerItems);\n      } else {\n        if (child.styles.isInlineLevel()) {\n          stackingContext.inlineLevel.push(paintContainer);\n        } else {\n          stackingContext.nonInlineLevel.push(paintContainer);\n        }\n        parseStackTree(paintContainer, stackingContext, realStackingContext, listOwnerItems);\n      }\n      if (contains(child.flags, 8 /* IS_LIST_OWNER */)) {\n        processListItems(child, listOwnerItems);\n      }\n    });\n  };\n  var processListItems = function (owner, elements) {\n    var numbering = owner instanceof OLElementContainer ? owner.start : 1;\n    var reversed = owner instanceof OLElementContainer ? owner.reversed : false;\n    for (var i = 0; i < elements.length; i++) {\n      var item = elements[i];\n      if (item.container instanceof LIElementContainer && typeof item.container.value === 'number' && item.container.value !== 0) {\n        numbering = item.container.value;\n      }\n      item.listValue = createCounterText(numbering, item.container.styles.listStyleType, true);\n      numbering += reversed ? -1 : 1;\n    }\n  };\n  var parseStackingContexts = function (container) {\n    var paintContainer = new ElementPaint(container, null);\n    var root = new StackingContext(paintContainer);\n    var listItems = [];\n    parseStackTree(paintContainer, root, root, listItems);\n    processListItems(paintContainer.container, listItems);\n    return root;\n  };\n  var parsePathForBorder = function (curves, borderSide) {\n    switch (borderSide) {\n      case 0:\n        return createPathFromCurves(curves.topLeftBorderBox, curves.topLeftPaddingBox, curves.topRightBorderBox, curves.topRightPaddingBox);\n      case 1:\n        return createPathFromCurves(curves.topRightBorderBox, curves.topRightPaddingBox, curves.bottomRightBorderBox, curves.bottomRightPaddingBox);\n      case 2:\n        return createPathFromCurves(curves.bottomRightBorderBox, curves.bottomRightPaddingBox, curves.bottomLeftBorderBox, curves.bottomLeftPaddingBox);\n      case 3:\n      default:\n        return createPathFromCurves(curves.bottomLeftBorderBox, curves.bottomLeftPaddingBox, curves.topLeftBorderBox, curves.topLeftPaddingBox);\n    }\n  };\n  var parsePathForBorderDoubleOuter = function (curves, borderSide) {\n    switch (borderSide) {\n      case 0:\n        return createPathFromCurves(curves.topLeftBorderBox, curves.topLeftBorderDoubleOuterBox, curves.topRightBorderBox, curves.topRightBorderDoubleOuterBox);\n      case 1:\n        return createPathFromCurves(curves.topRightBorderBox, curves.topRightBorderDoubleOuterBox, curves.bottomRightBorderBox, curves.bottomRightBorderDoubleOuterBox);\n      case 2:\n        return createPathFromCurves(curves.bottomRightBorderBox, curves.bottomRightBorderDoubleOuterBox, curves.bottomLeftBorderBox, curves.bottomLeftBorderDoubleOuterBox);\n      case 3:\n      default:\n        return createPathFromCurves(curves.bottomLeftBorderBox, curves.bottomLeftBorderDoubleOuterBox, curves.topLeftBorderBox, curves.topLeftBorderDoubleOuterBox);\n    }\n  };\n  var parsePathForBorderDoubleInner = function (curves, borderSide) {\n    switch (borderSide) {\n      case 0:\n        return createPathFromCurves(curves.topLeftBorderDoubleInnerBox, curves.topLeftPaddingBox, curves.topRightBorderDoubleInnerBox, curves.topRightPaddingBox);\n      case 1:\n        return createPathFromCurves(curves.topRightBorderDoubleInnerBox, curves.topRightPaddingBox, curves.bottomRightBorderDoubleInnerBox, curves.bottomRightPaddingBox);\n      case 2:\n        return createPathFromCurves(curves.bottomRightBorderDoubleInnerBox, curves.bottomRightPaddingBox, curves.bottomLeftBorderDoubleInnerBox, curves.bottomLeftPaddingBox);\n      case 3:\n      default:\n        return createPathFromCurves(curves.bottomLeftBorderDoubleInnerBox, curves.bottomLeftPaddingBox, curves.topLeftBorderDoubleInnerBox, curves.topLeftPaddingBox);\n    }\n  };\n  var parsePathForBorderStroke = function (curves, borderSide) {\n    switch (borderSide) {\n      case 0:\n        return createStrokePathFromCurves(curves.topLeftBorderStroke, curves.topRightBorderStroke);\n      case 1:\n        return createStrokePathFromCurves(curves.topRightBorderStroke, curves.bottomRightBorderStroke);\n      case 2:\n        return createStrokePathFromCurves(curves.bottomRightBorderStroke, curves.bottomLeftBorderStroke);\n      case 3:\n      default:\n        return createStrokePathFromCurves(curves.bottomLeftBorderStroke, curves.topLeftBorderStroke);\n    }\n  };\n  var createStrokePathFromCurves = function (outer1, outer2) {\n    var path = [];\n    if (isBezierCurve(outer1)) {\n      path.push(outer1.subdivide(0.5, false));\n    } else {\n      path.push(outer1);\n    }\n    if (isBezierCurve(outer2)) {\n      path.push(outer2.subdivide(0.5, true));\n    } else {\n      path.push(outer2);\n    }\n    return path;\n  };\n  var createPathFromCurves = function (outer1, inner1, outer2, inner2) {\n    var path = [];\n    if (isBezierCurve(outer1)) {\n      path.push(outer1.subdivide(0.5, false));\n    } else {\n      path.push(outer1);\n    }\n    if (isBezierCurve(outer2)) {\n      path.push(outer2.subdivide(0.5, true));\n    } else {\n      path.push(outer2);\n    }\n    if (isBezierCurve(inner2)) {\n      path.push(inner2.subdivide(0.5, true).reverse());\n    } else {\n      path.push(inner2);\n    }\n    if (isBezierCurve(inner1)) {\n      path.push(inner1.subdivide(0.5, false).reverse());\n    } else {\n      path.push(inner1);\n    }\n    return path;\n  };\n  var paddingBox = function (element) {\n    var bounds = element.bounds;\n    var styles = element.styles;\n    return bounds.add(styles.borderLeftWidth, styles.borderTopWidth, -(styles.borderRightWidth + styles.borderLeftWidth), -(styles.borderTopWidth + styles.borderBottomWidth));\n  };\n  var contentBox = function (element) {\n    var styles = element.styles;\n    var bounds = element.bounds;\n    var paddingLeft = getAbsoluteValue(styles.paddingLeft, bounds.width);\n    var paddingRight = getAbsoluteValue(styles.paddingRight, bounds.width);\n    var paddingTop = getAbsoluteValue(styles.paddingTop, bounds.width);\n    var paddingBottom = getAbsoluteValue(styles.paddingBottom, bounds.width);\n    return bounds.add(paddingLeft + styles.borderLeftWidth, paddingTop + styles.borderTopWidth, -(styles.borderRightWidth + styles.borderLeftWidth + paddingLeft + paddingRight), -(styles.borderTopWidth + styles.borderBottomWidth + paddingTop + paddingBottom));\n  };\n  var calculateBackgroundPositioningArea = function (backgroundOrigin, element) {\n    if (backgroundOrigin === 0 /* BORDER_BOX */) {\n      return element.bounds;\n    }\n    if (backgroundOrigin === 2 /* CONTENT_BOX */) {\n      return contentBox(element);\n    }\n    return paddingBox(element);\n  };\n  var calculateBackgroundPaintingArea = function (backgroundClip, element) {\n    if (backgroundClip === 0 /* BORDER_BOX */) {\n      return element.bounds;\n    }\n    if (backgroundClip === 2 /* CONTENT_BOX */) {\n      return contentBox(element);\n    }\n    return paddingBox(element);\n  };\n  var calculateBackgroundRendering = function (container, index, intrinsicSize) {\n    var backgroundPositioningArea = calculateBackgroundPositioningArea(getBackgroundValueForIndex(container.styles.backgroundOrigin, index), container);\n    var backgroundPaintingArea = calculateBackgroundPaintingArea(getBackgroundValueForIndex(container.styles.backgroundClip, index), container);\n    var backgroundImageSize = calculateBackgroundSize(getBackgroundValueForIndex(container.styles.backgroundSize, index), intrinsicSize, backgroundPositioningArea);\n    var sizeWidth = backgroundImageSize[0],\n      sizeHeight = backgroundImageSize[1];\n    var position = getAbsoluteValueForTuple(getBackgroundValueForIndex(container.styles.backgroundPosition, index), backgroundPositioningArea.width - sizeWidth, backgroundPositioningArea.height - sizeHeight);\n    var path = calculateBackgroundRepeatPath(getBackgroundValueForIndex(container.styles.backgroundRepeat, index), position, backgroundImageSize, backgroundPositioningArea, backgroundPaintingArea);\n    var offsetX = Math.round(backgroundPositioningArea.left + position[0]);\n    var offsetY = Math.round(backgroundPositioningArea.top + position[1]);\n    return [path, offsetX, offsetY, sizeWidth, sizeHeight];\n  };\n  var isAuto = function (token) {\n    return isIdentToken(token) && token.value === BACKGROUND_SIZE.AUTO;\n  };\n  var hasIntrinsicValue = function (value) {\n    return typeof value === 'number';\n  };\n  var calculateBackgroundSize = function (size, _a, bounds) {\n    var intrinsicWidth = _a[0],\n      intrinsicHeight = _a[1],\n      intrinsicProportion = _a[2];\n    var first = size[0],\n      second = size[1];\n    if (!first) {\n      return [0, 0];\n    }\n    if (isLengthPercentage(first) && second && isLengthPercentage(second)) {\n      return [getAbsoluteValue(first, bounds.width), getAbsoluteValue(second, bounds.height)];\n    }\n    var hasIntrinsicProportion = hasIntrinsicValue(intrinsicProportion);\n    if (isIdentToken(first) && (first.value === BACKGROUND_SIZE.CONTAIN || first.value === BACKGROUND_SIZE.COVER)) {\n      if (hasIntrinsicValue(intrinsicProportion)) {\n        var targetRatio = bounds.width / bounds.height;\n        return targetRatio < intrinsicProportion !== (first.value === BACKGROUND_SIZE.COVER) ? [bounds.width, bounds.width / intrinsicProportion] : [bounds.height * intrinsicProportion, bounds.height];\n      }\n      return [bounds.width, bounds.height];\n    }\n    var hasIntrinsicWidth = hasIntrinsicValue(intrinsicWidth);\n    var hasIntrinsicHeight = hasIntrinsicValue(intrinsicHeight);\n    var hasIntrinsicDimensions = hasIntrinsicWidth || hasIntrinsicHeight;\n    // If the background-size is auto or auto auto:\n    if (isAuto(first) && (!second || isAuto(second))) {\n      // If the image has both horizontal and vertical intrinsic dimensions, it's rendered at that size.\n      if (hasIntrinsicWidth && hasIntrinsicHeight) {\n        return [intrinsicWidth, intrinsicHeight];\n      }\n      // If the image has no intrinsic dimensions and has no intrinsic proportions,\n      // it's rendered at the size of the background positioning area.\n      if (!hasIntrinsicProportion && !hasIntrinsicDimensions) {\n        return [bounds.width, bounds.height];\n      }\n      // TODO If the image has no intrinsic dimensions but has intrinsic proportions, it's rendered as if contain had been specified instead.\n      // If the image has only one intrinsic dimension and has intrinsic proportions, it's rendered at the size corresponding to that one dimension.\n      // The other dimension is computed using the specified dimension and the intrinsic proportions.\n      if (hasIntrinsicDimensions && hasIntrinsicProportion) {\n        var width_1 = hasIntrinsicWidth ? intrinsicWidth : intrinsicHeight * intrinsicProportion;\n        var height_1 = hasIntrinsicHeight ? intrinsicHeight : intrinsicWidth / intrinsicProportion;\n        return [width_1, height_1];\n      }\n      // If the image has only one intrinsic dimension but has no intrinsic proportions,\n      // it's rendered using the specified dimension and the other dimension of the background positioning area.\n      var width_2 = hasIntrinsicWidth ? intrinsicWidth : bounds.width;\n      var height_2 = hasIntrinsicHeight ? intrinsicHeight : bounds.height;\n      return [width_2, height_2];\n    }\n    // If the image has intrinsic proportions, it's stretched to the specified dimension.\n    // The unspecified dimension is computed using the specified dimension and the intrinsic proportions.\n    if (hasIntrinsicProportion) {\n      var width_3 = 0;\n      var height_3 = 0;\n      if (isLengthPercentage(first)) {\n        width_3 = getAbsoluteValue(first, bounds.width);\n      } else if (isLengthPercentage(second)) {\n        height_3 = getAbsoluteValue(second, bounds.height);\n      }\n      if (isAuto(first)) {\n        width_3 = height_3 * intrinsicProportion;\n      } else if (!second || isAuto(second)) {\n        height_3 = width_3 / intrinsicProportion;\n      }\n      return [width_3, height_3];\n    }\n    // If the image has no intrinsic proportions, it's stretched to the specified dimension.\n    // The unspecified dimension is computed using the image's corresponding intrinsic dimension,\n    // if there is one. If there is no such intrinsic dimension,\n    // it becomes the corresponding dimension of the background positioning area.\n    var width = null;\n    var height = null;\n    if (isLengthPercentage(first)) {\n      width = getAbsoluteValue(first, bounds.width);\n    } else if (second && isLengthPercentage(second)) {\n      height = getAbsoluteValue(second, bounds.height);\n    }\n    if (width !== null && (!second || isAuto(second))) {\n      height = hasIntrinsicWidth && hasIntrinsicHeight ? width / intrinsicWidth * intrinsicHeight : bounds.height;\n    }\n    if (height !== null && isAuto(first)) {\n      width = hasIntrinsicWidth && hasIntrinsicHeight ? height / intrinsicHeight * intrinsicWidth : bounds.width;\n    }\n    if (width !== null && height !== null) {\n      return [width, height];\n    }\n    throw new Error(\"Unable to calculate background-size for element\");\n  };\n  var getBackgroundValueForIndex = function (values, index) {\n    var value = values[index];\n    if (typeof value === 'undefined') {\n      return values[0];\n    }\n    return value;\n  };\n  var calculateBackgroundRepeatPath = function (repeat, _a, _b, backgroundPositioningArea, backgroundPaintingArea) {\n    var x = _a[0],\n      y = _a[1];\n    var width = _b[0],\n      height = _b[1];\n    switch (repeat) {\n      case 2 /* REPEAT_X */:\n        return [new Vector(Math.round(backgroundPositioningArea.left), Math.round(backgroundPositioningArea.top + y)), new Vector(Math.round(backgroundPositioningArea.left + backgroundPositioningArea.width), Math.round(backgroundPositioningArea.top + y)), new Vector(Math.round(backgroundPositioningArea.left + backgroundPositioningArea.width), Math.round(height + backgroundPositioningArea.top + y)), new Vector(Math.round(backgroundPositioningArea.left), Math.round(height + backgroundPositioningArea.top + y))];\n      case 3 /* REPEAT_Y */:\n        return [new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.top)), new Vector(Math.round(backgroundPositioningArea.left + x + width), Math.round(backgroundPositioningArea.top)), new Vector(Math.round(backgroundPositioningArea.left + x + width), Math.round(backgroundPositioningArea.height + backgroundPositioningArea.top)), new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.height + backgroundPositioningArea.top))];\n      case 1 /* NO_REPEAT */:\n        return [new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.top + y)), new Vector(Math.round(backgroundPositioningArea.left + x + width), Math.round(backgroundPositioningArea.top + y)), new Vector(Math.round(backgroundPositioningArea.left + x + width), Math.round(backgroundPositioningArea.top + y + height)), new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.top + y + height))];\n      default:\n        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))];\n    }\n  };\n  var SMALL_IMAGE = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';\n  var SAMPLE_TEXT = 'Hidden Text';\n  var FontMetrics = /** @class */function () {\n    function FontMetrics(document) {\n      this._data = {};\n      this._document = document;\n    }\n    FontMetrics.prototype.parseMetrics = function (fontFamily, fontSize) {\n      var container = this._document.createElement('div');\n      var img = this._document.createElement('img');\n      var span = this._document.createElement('span');\n      var body = this._document.body;\n      container.style.visibility = 'hidden';\n      container.style.fontFamily = fontFamily;\n      container.style.fontSize = fontSize;\n      container.style.margin = '0';\n      container.style.padding = '0';\n      container.style.whiteSpace = 'nowrap';\n      body.appendChild(container);\n      img.src = SMALL_IMAGE;\n      img.width = 1;\n      img.height = 1;\n      img.style.margin = '0';\n      img.style.padding = '0';\n      img.style.verticalAlign = 'baseline';\n      span.style.fontFamily = fontFamily;\n      span.style.fontSize = fontSize;\n      span.style.margin = '0';\n      span.style.padding = '0';\n      span.appendChild(this._document.createTextNode(SAMPLE_TEXT));\n      container.appendChild(span);\n      container.appendChild(img);\n      var baseline = img.offsetTop - span.offsetTop + 2;\n      container.removeChild(span);\n      container.appendChild(this._document.createTextNode(SAMPLE_TEXT));\n      container.style.lineHeight = 'normal';\n      img.style.verticalAlign = 'super';\n      var middle = img.offsetTop - container.offsetTop + 2;\n      body.removeChild(container);\n      return {\n        baseline: baseline,\n        middle: middle\n      };\n    };\n    FontMetrics.prototype.getMetrics = function (fontFamily, fontSize) {\n      var key = fontFamily + \" \" + fontSize;\n      if (typeof this._data[key] === 'undefined') {\n        this._data[key] = this.parseMetrics(fontFamily, fontSize);\n      }\n      return this._data[key];\n    };\n    return FontMetrics;\n  }();\n  var Renderer = /** @class */function () {\n    function Renderer(context, options) {\n      this.context = context;\n      this.options = options;\n    }\n    return Renderer;\n  }();\n  var MASK_OFFSET = 10000;\n  var CanvasRenderer = /** @class */function (_super) {\n    __extends(CanvasRenderer, _super);\n    function CanvasRenderer(context, options) {\n      var _this = _super.call(this, context, options) || this;\n      _this._activeEffects = [];\n      _this.canvas = options.canvas ? options.canvas : document.createElement('canvas');\n      _this.ctx = _this.canvas.getContext('2d');\n      if (!options.canvas) {\n        _this.canvas.width = Math.floor(options.width * options.scale);\n        _this.canvas.height = Math.floor(options.height * options.scale);\n        _this.canvas.style.width = options.width + \"px\";\n        _this.canvas.style.height = options.height + \"px\";\n      }\n      _this.fontMetrics = new FontMetrics(document);\n      _this.ctx.scale(_this.options.scale, _this.options.scale);\n      _this.ctx.translate(-options.x, -options.y);\n      _this.ctx.textBaseline = 'bottom';\n      _this._activeEffects = [];\n      _this.context.logger.debug(\"Canvas renderer initialized (\" + options.width + \"x\" + options.height + \") with scale \" + options.scale);\n      return _this;\n    }\n    CanvasRenderer.prototype.applyEffects = function (effects) {\n      var _this = this;\n      while (this._activeEffects.length) {\n        this.popEffect();\n      }\n      effects.forEach(function (effect) {\n        return _this.applyEffect(effect);\n      });\n    };\n    CanvasRenderer.prototype.applyEffect = function (effect) {\n      this.ctx.save();\n      if (isOpacityEffect(effect)) {\n        this.ctx.globalAlpha = effect.opacity;\n      }\n      if (isTransformEffect(effect)) {\n        this.ctx.translate(effect.offsetX, effect.offsetY);\n        this.ctx.transform(effect.matrix[0], effect.matrix[1], effect.matrix[2], effect.matrix[3], effect.matrix[4], effect.matrix[5]);\n        this.ctx.translate(-effect.offsetX, -effect.offsetY);\n      }\n      if (isClipEffect(effect)) {\n        this.path(effect.path);\n        this.ctx.clip();\n      }\n      this._activeEffects.push(effect);\n    };\n    CanvasRenderer.prototype.popEffect = function () {\n      this._activeEffects.pop();\n      this.ctx.restore();\n    };\n    CanvasRenderer.prototype.renderStack = function (stack) {\n      return __awaiter(this, void 0, void 0, function () {\n        var styles;\n        return __generator(this, function (_a) {\n          switch (_a.label) {\n            case 0:\n              styles = stack.element.container.styles;\n              if (!styles.isVisible()) return [3 /*break*/, 2];\n              return [4 /*yield*/, this.renderStackContent(stack)];\n            case 1:\n              _a.sent();\n              _a.label = 2;\n            case 2:\n              return [2 /*return*/];\n          }\n        });\n      });\n    };\n    CanvasRenderer.prototype.renderNode = function (paint) {\n      return __awaiter(this, void 0, void 0, function () {\n        return __generator(this, function (_a) {\n          switch (_a.label) {\n            case 0:\n              if (contains(paint.container.flags, 16 /* DEBUG_RENDER */)) {\n                debugger;\n              }\n              if (!paint.container.styles.isVisible()) return [3 /*break*/, 3];\n              return [4 /*yield*/, this.renderNodeBackgroundAndBorders(paint)];\n            case 1:\n              _a.sent();\n              return [4 /*yield*/, this.renderNodeContent(paint)];\n            case 2:\n              _a.sent();\n              _a.label = 3;\n            case 3:\n              return [2 /*return*/];\n          }\n        });\n      });\n    };\n    CanvasRenderer.prototype.renderTextWithLetterSpacing = function (text, letterSpacing, baseline) {\n      var _this = this;\n      if (letterSpacing === 0) {\n        this.ctx.fillText(text.text, text.bounds.left, text.bounds.top + baseline);\n      } else {\n        var letters = segmentGraphemes(text.text);\n        letters.reduce(function (left, letter) {\n          _this.ctx.fillText(letter, left, text.bounds.top + baseline);\n          return left + _this.ctx.measureText(letter).width;\n        }, text.bounds.left);\n      }\n    };\n    CanvasRenderer.prototype.createFontStyle = function (styles) {\n      var fontVariant = styles.fontVariant.filter(function (variant) {\n        return variant === 'normal' || variant === 'small-caps';\n      }).join('');\n      var fontFamily = fixIOSSystemFonts(styles.fontFamily).join(', ');\n      var fontSize = isDimensionToken(styles.fontSize) ? \"\" + styles.fontSize.number + styles.fontSize.unit : styles.fontSize.number + \"px\";\n      return [[styles.fontStyle, fontVariant, styles.fontWeight, fontSize, fontFamily].join(' '), fontFamily, fontSize];\n    };\n    CanvasRenderer.prototype.renderTextNode = function (text, styles) {\n      return __awaiter(this, void 0, void 0, function () {\n        var _a, font, fontFamily, fontSize, _b, baseline, middle, paintOrder;\n        var _this = this;\n        return __generator(this, function (_c) {\n          _a = this.createFontStyle(styles), font = _a[0], fontFamily = _a[1], fontSize = _a[2];\n          this.ctx.font = font;\n          this.ctx.direction = styles.direction === 1 /* RTL */ ? 'rtl' : 'ltr';\n          this.ctx.textAlign = 'left';\n          this.ctx.textBaseline = 'alphabetic';\n          _b = this.fontMetrics.getMetrics(fontFamily, fontSize), baseline = _b.baseline, middle = _b.middle;\n          paintOrder = styles.paintOrder;\n          text.textBounds.forEach(function (text) {\n            paintOrder.forEach(function (paintOrderLayer) {\n              switch (paintOrderLayer) {\n                case 0 /* FILL */:\n                  _this.ctx.fillStyle = asString(styles.color);\n                  _this.renderTextWithLetterSpacing(text, styles.letterSpacing, baseline);\n                  var textShadows = styles.textShadow;\n                  if (textShadows.length && text.text.trim().length) {\n                    textShadows.slice(0).reverse().forEach(function (textShadow) {\n                      _this.ctx.shadowColor = asString(textShadow.color);\n                      _this.ctx.shadowOffsetX = textShadow.offsetX.number * _this.options.scale;\n                      _this.ctx.shadowOffsetY = textShadow.offsetY.number * _this.options.scale;\n                      _this.ctx.shadowBlur = textShadow.blur.number;\n                      _this.renderTextWithLetterSpacing(text, styles.letterSpacing, baseline);\n                    });\n                    _this.ctx.shadowColor = '';\n                    _this.ctx.shadowOffsetX = 0;\n                    _this.ctx.shadowOffsetY = 0;\n                    _this.ctx.shadowBlur = 0;\n                  }\n                  if (styles.textDecorationLine.length) {\n                    _this.ctx.fillStyle = asString(styles.textDecorationColor || styles.color);\n                    styles.textDecorationLine.forEach(function (textDecorationLine) {\n                      switch (textDecorationLine) {\n                        case 1 /* UNDERLINE */:\n                          // Draws a line at the baseline of the font\n                          // TODO As some browsers display the line as more than 1px if the font-size is big,\n                          // need to take that into account both in position and size\n                          _this.ctx.fillRect(text.bounds.left, Math.round(text.bounds.top + baseline), text.bounds.width, 1);\n                          break;\n                        case 2 /* OVERLINE */:\n                          _this.ctx.fillRect(text.bounds.left, Math.round(text.bounds.top), text.bounds.width, 1);\n                          break;\n                        case 3 /* LINE_THROUGH */:\n                          // TODO try and find exact position for line-through\n                          _this.ctx.fillRect(text.bounds.left, Math.ceil(text.bounds.top + middle), text.bounds.width, 1);\n                          break;\n                      }\n                    });\n                  }\n                  break;\n                case 1 /* STROKE */:\n                  if (styles.webkitTextStrokeWidth && text.text.trim().length) {\n                    _this.ctx.strokeStyle = asString(styles.webkitTextStrokeColor);\n                    _this.ctx.lineWidth = styles.webkitTextStrokeWidth;\n                    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n                    _this.ctx.lineJoin = !!window.chrome ? 'miter' : 'round';\n                    _this.ctx.strokeText(text.text, text.bounds.left, text.bounds.top + baseline);\n                  }\n                  _this.ctx.strokeStyle = '';\n                  _this.ctx.lineWidth = 0;\n                  _this.ctx.lineJoin = 'miter';\n                  break;\n              }\n            });\n          });\n          return [2 /*return*/];\n        });\n      });\n    };\n    CanvasRenderer.prototype.renderReplacedElement = function (container, curves, image) {\n      if (image && container.intrinsicWidth > 0 && container.intrinsicHeight > 0) {\n        var box = contentBox(container);\n        var path = calculatePaddingBoxPath(curves);\n        this.path(path);\n        this.ctx.save();\n        this.ctx.clip();\n        this.ctx.drawImage(image, 0, 0, container.intrinsicWidth, container.intrinsicHeight, box.left, box.top, box.width, box.height);\n        this.ctx.restore();\n      }\n    };\n    CanvasRenderer.prototype.renderNodeContent = function (paint) {\n      return __awaiter(this, void 0, void 0, function () {\n        var container, curves, styles, _i, _a, child, image, image, iframeRenderer, canvas, size, _b, fontFamily, fontSize, baseline, bounds, x, textBounds, img, image, url, fontFamily, bounds;\n        return __generator(this, function (_c) {\n          switch (_c.label) {\n            case 0:\n              this.applyEffects(paint.getEffects(4 /* CONTENT */));\n              container = paint.container;\n              curves = paint.curves;\n              styles = container.styles;\n              _i = 0, _a = container.textNodes;\n              _c.label = 1;\n            case 1:\n              if (!(_i < _a.length)) return [3 /*break*/, 4];\n              child = _a[_i];\n              return [4 /*yield*/, this.renderTextNode(child, styles)];\n            case 2:\n              _c.sent();\n              _c.label = 3;\n            case 3:\n              _i++;\n              return [3 /*break*/, 1];\n            case 4:\n              if (!(container instanceof ImageElementContainer)) return [3 /*break*/, 8];\n              _c.label = 5;\n            case 5:\n              _c.trys.push([5, 7,, 8]);\n              return [4 /*yield*/, this.context.cache.match(container.src)];\n            case 6:\n              image = _c.sent();\n              this.renderReplacedElement(container, curves, image);\n              return [3 /*break*/, 8];\n            case 7:\n              _c.sent();\n              this.context.logger.error(\"Error loading image \" + container.src);\n              return [3 /*break*/, 8];\n            case 8:\n              if (container instanceof CanvasElementContainer) {\n                this.renderReplacedElement(container, curves, container.canvas);\n              }\n              if (!(container instanceof SVGElementContainer)) return [3 /*break*/, 12];\n              _c.label = 9;\n            case 9:\n              _c.trys.push([9, 11,, 12]);\n              return [4 /*yield*/, this.context.cache.match(container.svg)];\n            case 10:\n              image = _c.sent();\n              this.renderReplacedElement(container, curves, image);\n              return [3 /*break*/, 12];\n            case 11:\n              _c.sent();\n              this.context.logger.error(\"Error loading svg \" + container.svg.substring(0, 255));\n              return [3 /*break*/, 12];\n            case 12:\n              if (!(container instanceof IFrameElementContainer && container.tree)) return [3 /*break*/, 14];\n              iframeRenderer = new CanvasRenderer(this.context, {\n                scale: this.options.scale,\n                backgroundColor: container.backgroundColor,\n                x: 0,\n                y: 0,\n                width: container.width,\n                height: container.height\n              });\n              return [4 /*yield*/, iframeRenderer.render(container.tree)];\n            case 13:\n              canvas = _c.sent();\n              if (container.width && container.height) {\n                this.ctx.drawImage(canvas, 0, 0, container.width, container.height, container.bounds.left, container.bounds.top, container.bounds.width, container.bounds.height);\n              }\n              _c.label = 14;\n            case 14:\n              if (container instanceof InputElementContainer) {\n                size = Math.min(container.bounds.width, container.bounds.height);\n                if (container.type === CHECKBOX) {\n                  if (container.checked) {\n                    this.ctx.save();\n                    this.path([new Vector(container.bounds.left + size * 0.39363, container.bounds.top + size * 0.79), new Vector(container.bounds.left + size * 0.16, container.bounds.top + size * 0.5549), new Vector(container.bounds.left + size * 0.27347, container.bounds.top + size * 0.44071), new Vector(container.bounds.left + size * 0.39694, container.bounds.top + size * 0.5649), new Vector(container.bounds.left + size * 0.72983, container.bounds.top + size * 0.23), new Vector(container.bounds.left + size * 0.84, container.bounds.top + size * 0.34085), new Vector(container.bounds.left + size * 0.39363, container.bounds.top + size * 0.79)]);\n                    this.ctx.fillStyle = asString(INPUT_COLOR);\n                    this.ctx.fill();\n                    this.ctx.restore();\n                  }\n                } else if (container.type === RADIO) {\n                  if (container.checked) {\n                    this.ctx.save();\n                    this.ctx.beginPath();\n                    this.ctx.arc(container.bounds.left + size / 2, container.bounds.top + size / 2, size / 4, 0, Math.PI * 2, true);\n                    this.ctx.fillStyle = asString(INPUT_COLOR);\n                    this.ctx.fill();\n                    this.ctx.restore();\n                  }\n                }\n              }\n              if (isTextInputElement(container) && container.value.length) {\n                _b = this.createFontStyle(styles), fontFamily = _b[0], fontSize = _b[1];\n                baseline = this.fontMetrics.getMetrics(fontFamily, fontSize).baseline;\n                this.ctx.font = fontFamily;\n                this.ctx.fillStyle = asString(styles.color);\n                this.ctx.textBaseline = 'alphabetic';\n                this.ctx.textAlign = canvasTextAlign(container.styles.textAlign);\n                bounds = contentBox(container);\n                x = 0;\n                switch (container.styles.textAlign) {\n                  case 1 /* CENTER */:\n                    x += bounds.width / 2;\n                    break;\n                  case 2 /* RIGHT */:\n                    x += bounds.width;\n                    break;\n                }\n                textBounds = bounds.add(x, 0, 0, -bounds.height / 2 + 1);\n                this.ctx.save();\n                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)]);\n                this.ctx.clip();\n                this.renderTextWithLetterSpacing(new TextBounds(container.value, textBounds), styles.letterSpacing, baseline);\n                this.ctx.restore();\n                this.ctx.textBaseline = 'alphabetic';\n                this.ctx.textAlign = 'left';\n              }\n              if (!contains(container.styles.display, 2048 /* LIST_ITEM */)) return [3 /*break*/, 20];\n              if (!(container.styles.listStyleImage !== null)) return [3 /*break*/, 19];\n              img = container.styles.listStyleImage;\n              if (!(img.type === 0 /* URL */)) return [3 /*break*/, 18];\n              image = void 0;\n              url = img.url;\n              _c.label = 15;\n            case 15:\n              _c.trys.push([15, 17,, 18]);\n              return [4 /*yield*/, this.context.cache.match(url)];\n            case 16:\n              image = _c.sent();\n              this.ctx.drawImage(image, container.bounds.left - (image.width + 10), container.bounds.top);\n              return [3 /*break*/, 18];\n            case 17:\n              _c.sent();\n              this.context.logger.error(\"Error loading list-style-image \" + url);\n              return [3 /*break*/, 18];\n            case 18:\n              return [3 /*break*/, 20];\n            case 19:\n              if (paint.listValue && container.styles.listStyleType !== -1 /* NONE */) {\n                fontFamily = this.createFontStyle(styles)[0];\n                this.ctx.font = fontFamily;\n                this.ctx.fillStyle = asString(styles.color);\n                this.ctx.textBaseline = 'middle';\n                this.ctx.textAlign = 'right';\n                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);\n                this.renderTextWithLetterSpacing(new TextBounds(paint.listValue, bounds), styles.letterSpacing, computeLineHeight(styles.lineHeight, styles.fontSize.number) / 2 + 2);\n                this.ctx.textBaseline = 'bottom';\n                this.ctx.textAlign = 'left';\n              }\n              _c.label = 20;\n            case 20:\n              return [2 /*return*/];\n          }\n        });\n      });\n    };\n    CanvasRenderer.prototype.renderStackContent = function (stack) {\n      return __awaiter(this, void 0, void 0, function () {\n        var _i, _a, child, _b, _c, child, _d, _e, child, _f, _g, child, _h, _j, child, _k, _l, child, _m, _o, child;\n        return __generator(this, function (_p) {\n          switch (_p.label) {\n            case 0:\n              if (contains(stack.element.container.flags, 16 /* DEBUG_RENDER */)) {\n                debugger;\n              }\n              // https://www.w3.org/TR/css-position-3/#painting-order\n              // 1. the background and borders of the element forming the stacking context.\n              return [4 /*yield*/, this.renderNodeBackgroundAndBorders(stack.element)];\n            case 1:\n              // https://www.w3.org/TR/css-position-3/#painting-order\n              // 1. the background and borders of the element forming the stacking context.\n              _p.sent();\n              _i = 0, _a = stack.negativeZIndex;\n              _p.label = 2;\n            case 2:\n              if (!(_i < _a.length)) return [3 /*break*/, 5];\n              child = _a[_i];\n              return [4 /*yield*/, this.renderStack(child)];\n            case 3:\n              _p.sent();\n              _p.label = 4;\n            case 4:\n              _i++;\n              return [3 /*break*/, 2];\n            case 5:\n              // 3. For all its in-flow, non-positioned, block-level descendants in tree order:\n              return [4 /*yield*/, this.renderNodeContent(stack.element)];\n            case 6:\n              // 3. For all its in-flow, non-positioned, block-level descendants in tree order:\n              _p.sent();\n              _b = 0, _c = stack.nonInlineLevel;\n              _p.label = 7;\n            case 7:\n              if (!(_b < _c.length)) return [3 /*break*/, 10];\n              child = _c[_b];\n              return [4 /*yield*/, this.renderNode(child)];\n            case 8:\n              _p.sent();\n              _p.label = 9;\n            case 9:\n              _b++;\n              return [3 /*break*/, 7];\n            case 10:\n              _d = 0, _e = stack.nonPositionedFloats;\n              _p.label = 11;\n            case 11:\n              if (!(_d < _e.length)) return [3 /*break*/, 14];\n              child = _e[_d];\n              return [4 /*yield*/, this.renderStack(child)];\n            case 12:\n              _p.sent();\n              _p.label = 13;\n            case 13:\n              _d++;\n              return [3 /*break*/, 11];\n            case 14:\n              _f = 0, _g = stack.nonPositionedInlineLevel;\n              _p.label = 15;\n            case 15:\n              if (!(_f < _g.length)) return [3 /*break*/, 18];\n              child = _g[_f];\n              return [4 /*yield*/, this.renderStack(child)];\n            case 16:\n              _p.sent();\n              _p.label = 17;\n            case 17:\n              _f++;\n              return [3 /*break*/, 15];\n            case 18:\n              _h = 0, _j = stack.inlineLevel;\n              _p.label = 19;\n            case 19:\n              if (!(_h < _j.length)) return [3 /*break*/, 22];\n              child = _j[_h];\n              return [4 /*yield*/, this.renderNode(child)];\n            case 20:\n              _p.sent();\n              _p.label = 21;\n            case 21:\n              _h++;\n              return [3 /*break*/, 19];\n            case 22:\n              _k = 0, _l = stack.zeroOrAutoZIndexOrTransformedOrOpacity;\n              _p.label = 23;\n            case 23:\n              if (!(_k < _l.length)) return [3 /*break*/, 26];\n              child = _l[_k];\n              return [4 /*yield*/, this.renderStack(child)];\n            case 24:\n              _p.sent();\n              _p.label = 25;\n            case 25:\n              _k++;\n              return [3 /*break*/, 23];\n            case 26:\n              _m = 0, _o = stack.positiveZIndex;\n              _p.label = 27;\n            case 27:\n              if (!(_m < _o.length)) return [3 /*break*/, 30];\n              child = _o[_m];\n              return [4 /*yield*/, this.renderStack(child)];\n            case 28:\n              _p.sent();\n              _p.label = 29;\n            case 29:\n              _m++;\n              return [3 /*break*/, 27];\n            case 30:\n              return [2 /*return*/];\n          }\n        });\n      });\n    };\n    CanvasRenderer.prototype.mask = function (paths) {\n      this.ctx.beginPath();\n      this.ctx.moveTo(0, 0);\n      this.ctx.lineTo(this.canvas.width, 0);\n      this.ctx.lineTo(this.canvas.width, this.canvas.height);\n      this.ctx.lineTo(0, this.canvas.height);\n      this.ctx.lineTo(0, 0);\n      this.formatPath(paths.slice(0).reverse());\n      this.ctx.closePath();\n    };\n    CanvasRenderer.prototype.path = function (paths) {\n      this.ctx.beginPath();\n      this.formatPath(paths);\n      this.ctx.closePath();\n    };\n    CanvasRenderer.prototype.formatPath = function (paths) {\n      var _this = this;\n      paths.forEach(function (point, index) {\n        var start = isBezierCurve(point) ? point.start : point;\n        if (index === 0) {\n          _this.ctx.moveTo(start.x, start.y);\n        } else {\n          _this.ctx.lineTo(start.x, start.y);\n        }\n        if (isBezierCurve(point)) {\n          _this.ctx.bezierCurveTo(point.startControl.x, point.startControl.y, point.endControl.x, point.endControl.y, point.end.x, point.end.y);\n        }\n      });\n    };\n    CanvasRenderer.prototype.renderRepeat = function (path, pattern, offsetX, offsetY) {\n      this.path(path);\n      this.ctx.fillStyle = pattern;\n      this.ctx.translate(offsetX, offsetY);\n      this.ctx.fill();\n      this.ctx.translate(-offsetX, -offsetY);\n    };\n    CanvasRenderer.prototype.resizeImage = function (image, width, height) {\n      var _a;\n      if (image.width === width && image.height === height) {\n        return image;\n      }\n      var ownerDocument = (_a = this.canvas.ownerDocument) !== null && _a !== void 0 ? _a : document;\n      var canvas = ownerDocument.createElement('canvas');\n      canvas.width = Math.max(1, width);\n      canvas.height = Math.max(1, height);\n      var ctx = canvas.getContext('2d');\n      ctx.drawImage(image, 0, 0, image.width, image.height, 0, 0, width, height);\n      return canvas;\n    };\n    CanvasRenderer.prototype.renderBackgroundImage = function (container) {\n      return __awaiter(this, void 0, void 0, function () {\n        var index, _loop_1, this_1, _i, _a, backgroundImage;\n        return __generator(this, function (_b) {\n          switch (_b.label) {\n            case 0:\n              index = container.styles.backgroundImage.length - 1;\n              _loop_1 = function (backgroundImage) {\n                var image, url, _c, path, x, y, width, height, pattern, _d, path, x, y, width, height, _e, lineLength, x0, x1, y0, y1, canvas, ctx, gradient_1, pattern, _f, path, left, top_1, width, height, position, x, y, _g, rx, ry, radialGradient_1, midX, midY, f, invF;\n                return __generator(this, function (_h) {\n                  switch (_h.label) {\n                    case 0:\n                      if (!(backgroundImage.type === 0 /* URL */)) return [3 /*break*/, 5];\n                      image = void 0;\n                      url = backgroundImage.url;\n                      _h.label = 1;\n                    case 1:\n                      _h.trys.push([1, 3,, 4]);\n                      return [4 /*yield*/, this_1.context.cache.match(url)];\n                    case 2:\n                      image = _h.sent();\n                      return [3 /*break*/, 4];\n                    case 3:\n                      _h.sent();\n                      this_1.context.logger.error(\"Error loading background-image \" + url);\n                      return [3 /*break*/, 4];\n                    case 4:\n                      if (image) {\n                        _c = calculateBackgroundRendering(container, index, [image.width, image.height, image.width / image.height]), path = _c[0], x = _c[1], y = _c[2], width = _c[3], height = _c[4];\n                        pattern = this_1.ctx.createPattern(this_1.resizeImage(image, width, height), 'repeat');\n                        this_1.renderRepeat(path, pattern, x, y);\n                      }\n                      return [3 /*break*/, 6];\n                    case 5:\n                      if (isLinearGradient(backgroundImage)) {\n                        _d = calculateBackgroundRendering(container, index, [null, null, null]), path = _d[0], x = _d[1], y = _d[2], width = _d[3], height = _d[4];\n                        _e = calculateGradientDirection(backgroundImage.angle, width, height), lineLength = _e[0], x0 = _e[1], x1 = _e[2], y0 = _e[3], y1 = _e[4];\n                        canvas = document.createElement('canvas');\n                        canvas.width = width;\n                        canvas.height = height;\n                        ctx = canvas.getContext('2d');\n                        gradient_1 = ctx.createLinearGradient(x0, y0, x1, y1);\n                        processColorStops(backgroundImage.stops, lineLength).forEach(function (colorStop) {\n                          return gradient_1.addColorStop(colorStop.stop, asString(colorStop.color));\n                        });\n                        ctx.fillStyle = gradient_1;\n                        ctx.fillRect(0, 0, width, height);\n                        if (width > 0 && height > 0) {\n                          pattern = this_1.ctx.createPattern(canvas, 'repeat');\n                          this_1.renderRepeat(path, pattern, x, y);\n                        }\n                      } else if (isRadialGradient(backgroundImage)) {\n                        _f = calculateBackgroundRendering(container, index, [null, null, null]), path = _f[0], left = _f[1], top_1 = _f[2], width = _f[3], height = _f[4];\n                        position = backgroundImage.position.length === 0 ? [FIFTY_PERCENT] : backgroundImage.position;\n                        x = getAbsoluteValue(position[0], width);\n                        y = getAbsoluteValue(position[position.length - 1], height);\n                        _g = calculateRadius(backgroundImage, x, y, width, height), rx = _g[0], ry = _g[1];\n                        if (rx > 0 && ry > 0) {\n                          radialGradient_1 = this_1.ctx.createRadialGradient(left + x, top_1 + y, 0, left + x, top_1 + y, rx);\n                          processColorStops(backgroundImage.stops, rx * 2).forEach(function (colorStop) {\n                            return radialGradient_1.addColorStop(colorStop.stop, asString(colorStop.color));\n                          });\n                          this_1.path(path);\n                          this_1.ctx.fillStyle = radialGradient_1;\n                          if (rx !== ry) {\n                            midX = container.bounds.left + 0.5 * container.bounds.width;\n                            midY = container.bounds.top + 0.5 * container.bounds.height;\n                            f = ry / rx;\n                            invF = 1 / f;\n                            this_1.ctx.save();\n                            this_1.ctx.translate(midX, midY);\n                            this_1.ctx.transform(1, 0, 0, f, 0, 0);\n                            this_1.ctx.translate(-midX, -midY);\n                            this_1.ctx.fillRect(left, invF * (top_1 - midY) + midY, width, height * invF);\n                            this_1.ctx.restore();\n                          } else {\n                            this_1.ctx.fill();\n                          }\n                        }\n                      }\n                      _h.label = 6;\n                    case 6:\n                      index--;\n                      return [2 /*return*/];\n                  }\n                });\n              };\n              this_1 = this;\n              _i = 0, _a = container.styles.backgroundImage.slice(0).reverse();\n              _b.label = 1;\n            case 1:\n              if (!(_i < _a.length)) return [3 /*break*/, 4];\n              backgroundImage = _a[_i];\n              return [5 /*yield**/, _loop_1(backgroundImage)];\n            case 2:\n              _b.sent();\n              _b.label = 3;\n            case 3:\n              _i++;\n              return [3 /*break*/, 1];\n            case 4:\n              return [2 /*return*/];\n          }\n        });\n      });\n    };\n    CanvasRenderer.prototype.renderSolidBorder = function (color, side, curvePoints) {\n      return __awaiter(this, void 0, void 0, function () {\n        return __generator(this, function (_a) {\n          this.path(parsePathForBorder(curvePoints, side));\n          this.ctx.fillStyle = asString(color);\n          this.ctx.fill();\n          return [2 /*return*/];\n        });\n      });\n    };\n    CanvasRenderer.prototype.renderDoubleBorder = function (color, width, side, curvePoints) {\n      return __awaiter(this, void 0, void 0, function () {\n        var outerPaths, innerPaths;\n        return __generator(this, function (_a) {\n          switch (_a.label) {\n            case 0:\n              if (!(width < 3)) return [3 /*break*/, 2];\n              return [4 /*yield*/, this.renderSolidBorder(color, side, curvePoints)];\n            case 1:\n              _a.sent();\n              return [2 /*return*/];\n            case 2:\n              outerPaths = parsePathForBorderDoubleOuter(curvePoints, side);\n              this.path(outerPaths);\n              this.ctx.fillStyle = asString(color);\n              this.ctx.fill();\n              innerPaths = parsePathForBorderDoubleInner(curvePoints, side);\n              this.path(innerPaths);\n              this.ctx.fill();\n              return [2 /*return*/];\n          }\n        });\n      });\n    };\n    CanvasRenderer.prototype.renderNodeBackgroundAndBorders = function (paint) {\n      return __awaiter(this, void 0, void 0, function () {\n        var styles, hasBackground, borders, backgroundPaintingArea, side, _i, borders_1, border;\n        var _this = this;\n        return __generator(this, function (_a) {\n          switch (_a.label) {\n            case 0:\n              this.applyEffects(paint.getEffects(2 /* BACKGROUND_BORDERS */));\n              styles = paint.container.styles;\n              hasBackground = !isTransparent(styles.backgroundColor) || styles.backgroundImage.length;\n              borders = [{\n                style: styles.borderTopStyle,\n                color: styles.borderTopColor,\n                width: styles.borderTopWidth\n              }, {\n                style: styles.borderRightStyle,\n                color: styles.borderRightColor,\n                width: styles.borderRightWidth\n              }, {\n                style: styles.borderBottomStyle,\n                color: styles.borderBottomColor,\n                width: styles.borderBottomWidth\n              }, {\n                style: styles.borderLeftStyle,\n                color: styles.borderLeftColor,\n                width: styles.borderLeftWidth\n              }];\n              backgroundPaintingArea = calculateBackgroundCurvedPaintingArea(getBackgroundValueForIndex(styles.backgroundClip, 0), paint.curves);\n              if (!(hasBackground || styles.boxShadow.length)) return [3 /*break*/, 2];\n              this.ctx.save();\n              this.path(backgroundPaintingArea);\n              this.ctx.clip();\n              if (!isTransparent(styles.backgroundColor)) {\n                this.ctx.fillStyle = asString(styles.backgroundColor);\n                this.ctx.fill();\n              }\n              return [4 /*yield*/, this.renderBackgroundImage(paint.container)];\n            case 1:\n              _a.sent();\n              this.ctx.restore();\n              styles.boxShadow.slice(0).reverse().forEach(function (shadow) {\n                _this.ctx.save();\n                var borderBoxArea = calculateBorderBoxPath(paint.curves);\n                var maskOffset = shadow.inset ? 0 : MASK_OFFSET;\n                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));\n                if (shadow.inset) {\n                  _this.path(borderBoxArea);\n                  _this.ctx.clip();\n                  _this.mask(shadowPaintingArea);\n                } else {\n                  _this.mask(borderBoxArea);\n                  _this.ctx.clip();\n                  _this.path(shadowPaintingArea);\n                }\n                _this.ctx.shadowOffsetX = shadow.offsetX.number + maskOffset;\n                _this.ctx.shadowOffsetY = shadow.offsetY.number;\n                _this.ctx.shadowColor = asString(shadow.color);\n                _this.ctx.shadowBlur = shadow.blur.number;\n                _this.ctx.fillStyle = shadow.inset ? asString(shadow.color) : 'rgba(0,0,0,1)';\n                _this.ctx.fill();\n                _this.ctx.restore();\n              });\n              _a.label = 2;\n            case 2:\n              side = 0;\n              _i = 0, borders_1 = borders;\n              _a.label = 3;\n            case 3:\n              if (!(_i < borders_1.length)) return [3 /*break*/, 13];\n              border = borders_1[_i];\n              if (!(border.style !== 0 /* NONE */ && !isTransparent(border.color) && border.width > 0)) return [3 /*break*/, 11];\n              if (!(border.style === 2 /* DASHED */)) return [3 /*break*/, 5];\n              return [4 /*yield*/, this.renderDashedDottedBorder(border.color, border.width, side, paint.curves, 2 /* DASHED */)];\n            case 4:\n              _a.sent();\n              return [3 /*break*/, 11];\n            case 5:\n              if (!(border.style === 3 /* DOTTED */)) return [3 /*break*/, 7];\n              return [4 /*yield*/, this.renderDashedDottedBorder(border.color, border.width, side, paint.curves, 3 /* DOTTED */)];\n            case 6:\n              _a.sent();\n              return [3 /*break*/, 11];\n            case 7:\n              if (!(border.style === 4 /* DOUBLE */)) return [3 /*break*/, 9];\n              return [4 /*yield*/, this.renderDoubleBorder(border.color, border.width, side, paint.curves)];\n            case 8:\n              _a.sent();\n              return [3 /*break*/, 11];\n            case 9:\n              return [4 /*yield*/, this.renderSolidBorder(border.color, side, paint.curves)];\n            case 10:\n              _a.sent();\n              _a.label = 11;\n            case 11:\n              side++;\n              _a.label = 12;\n            case 12:\n              _i++;\n              return [3 /*break*/, 3];\n            case 13:\n              return [2 /*return*/];\n          }\n        });\n      });\n    };\n    CanvasRenderer.prototype.renderDashedDottedBorder = function (color, width, side, curvePoints, style) {\n      return __awaiter(this, void 0, void 0, function () {\n        var strokePaths, boxPaths, startX, startY, endX, endY, length, dashLength, spaceLength, useLineDash, multiplier, numberOfDashes, minSpace, maxSpace, path1, path2, path1, path2;\n        return __generator(this, function (_a) {\n          this.ctx.save();\n          strokePaths = parsePathForBorderStroke(curvePoints, side);\n          boxPaths = parsePathForBorder(curvePoints, side);\n          if (style === 2 /* DASHED */) {\n            this.path(boxPaths);\n            this.ctx.clip();\n          }\n          if (isBezierCurve(boxPaths[0])) {\n            startX = boxPaths[0].start.x;\n            startY = boxPaths[0].start.y;\n          } else {\n            startX = boxPaths[0].x;\n            startY = boxPaths[0].y;\n          }\n          if (isBezierCurve(boxPaths[1])) {\n            endX = boxPaths[1].end.x;\n            endY = boxPaths[1].end.y;\n          } else {\n            endX = boxPaths[1].x;\n            endY = boxPaths[1].y;\n          }\n          if (side === 0 || side === 2) {\n            length = Math.abs(startX - endX);\n          } else {\n            length = Math.abs(startY - endY);\n          }\n          this.ctx.beginPath();\n          if (style === 3 /* DOTTED */) {\n            this.formatPath(strokePaths);\n          } else {\n            this.formatPath(boxPaths.slice(0, 2));\n          }\n          dashLength = width < 3 ? width * 3 : width * 2;\n          spaceLength = width < 3 ? width * 2 : width;\n          if (style === 3 /* DOTTED */) {\n            dashLength = width;\n            spaceLength = width;\n          }\n          useLineDash = true;\n          if (length <= dashLength * 2) {\n            useLineDash = false;\n          } else if (length <= dashLength * 2 + spaceLength) {\n            multiplier = length / (2 * dashLength + spaceLength);\n            dashLength *= multiplier;\n            spaceLength *= multiplier;\n          } else {\n            numberOfDashes = Math.floor((length + spaceLength) / (dashLength + spaceLength));\n            minSpace = (length - numberOfDashes * dashLength) / (numberOfDashes - 1);\n            maxSpace = (length - (numberOfDashes + 1) * dashLength) / numberOfDashes;\n            spaceLength = maxSpace <= 0 || Math.abs(spaceLength - minSpace) < Math.abs(spaceLength - maxSpace) ? minSpace : maxSpace;\n          }\n          if (useLineDash) {\n            if (style === 3 /* DOTTED */) {\n              this.ctx.setLineDash([0, dashLength + spaceLength]);\n            } else {\n              this.ctx.setLineDash([dashLength, spaceLength]);\n            }\n          }\n          if (style === 3 /* DOTTED */) {\n            this.ctx.lineCap = 'round';\n            this.ctx.lineWidth = width;\n          } else {\n            this.ctx.lineWidth = width * 2 + 1.1;\n          }\n          this.ctx.strokeStyle = asString(color);\n          this.ctx.stroke();\n          this.ctx.setLineDash([]);\n          // dashed round edge gap\n          if (style === 2 /* DASHED */) {\n            if (isBezierCurve(boxPaths[0])) {\n              path1 = boxPaths[3];\n              path2 = boxPaths[0];\n              this.ctx.beginPath();\n              this.formatPath([new Vector(path1.end.x, path1.end.y), new Vector(path2.start.x, path2.start.y)]);\n              this.ctx.stroke();\n            }\n            if (isBezierCurve(boxPaths[1])) {\n              path1 = boxPaths[1];\n              path2 = boxPaths[2];\n              this.ctx.beginPath();\n              this.formatPath([new Vector(path1.end.x, path1.end.y), new Vector(path2.start.x, path2.start.y)]);\n              this.ctx.stroke();\n            }\n          }\n          this.ctx.restore();\n          return [2 /*return*/];\n        });\n      });\n    };\n    CanvasRenderer.prototype.render = function (element) {\n      return __awaiter(this, void 0, void 0, function () {\n        var stack;\n        return __generator(this, function (_a) {\n          switch (_a.label) {\n            case 0:\n              if (this.options.backgroundColor) {\n                this.ctx.fillStyle = asString(this.options.backgroundColor);\n                this.ctx.fillRect(this.options.x, this.options.y, this.options.width, this.options.height);\n              }\n              stack = parseStackingContexts(element);\n              return [4 /*yield*/, this.renderStack(stack)];\n            case 1:\n              _a.sent();\n              this.applyEffects([]);\n              return [2 /*return*/, this.canvas];\n          }\n        });\n      });\n    };\n    return CanvasRenderer;\n  }(Renderer);\n  var isTextInputElement = function (container) {\n    if (container instanceof TextareaElementContainer) {\n      return true;\n    } else if (container instanceof SelectElementContainer) {\n      return true;\n    } else if (container instanceof InputElementContainer && container.type !== RADIO && container.type !== CHECKBOX) {\n      return true;\n    }\n    return false;\n  };\n  var calculateBackgroundCurvedPaintingArea = function (clip, curves) {\n    switch (clip) {\n      case 0 /* BORDER_BOX */:\n        return calculateBorderBoxPath(curves);\n      case 2 /* CONTENT_BOX */:\n        return calculateContentBoxPath(curves);\n      case 1 /* PADDING_BOX */:\n      default:\n        return calculatePaddingBoxPath(curves);\n    }\n  };\n  var canvasTextAlign = function (textAlign) {\n    switch (textAlign) {\n      case 1 /* CENTER */:\n        return 'center';\n      case 2 /* RIGHT */:\n        return 'right';\n      case 0 /* LEFT */:\n      default:\n        return 'left';\n    }\n  };\n  // see https://github.com/niklasvh/html2canvas/pull/2645\n  var iOSBrokenFonts = ['-apple-system', 'system-ui'];\n  var fixIOSSystemFonts = function (fontFamilies) {\n    return /iPhone OS 15_(0|1)/.test(window.navigator.userAgent) ? fontFamilies.filter(function (fontFamily) {\n      return iOSBrokenFonts.indexOf(fontFamily) === -1;\n    }) : fontFamilies;\n  };\n  var ForeignObjectRenderer = /** @class */function (_super) {\n    __extends(ForeignObjectRenderer, _super);\n    function ForeignObjectRenderer(context, options) {\n      var _this = _super.call(this, context, options) || this;\n      _this.canvas = options.canvas ? options.canvas : document.createElement('canvas');\n      _this.ctx = _this.canvas.getContext('2d');\n      _this.options = options;\n      _this.canvas.width = Math.floor(options.width * options.scale);\n      _this.canvas.height = Math.floor(options.height * options.scale);\n      _this.canvas.style.width = options.width + \"px\";\n      _this.canvas.style.height = options.height + \"px\";\n      _this.ctx.scale(_this.options.scale, _this.options.scale);\n      _this.ctx.translate(-options.x, -options.y);\n      _this.context.logger.debug(\"EXPERIMENTAL ForeignObject renderer initialized (\" + options.width + \"x\" + options.height + \" at \" + options.x + \",\" + options.y + \") with scale \" + options.scale);\n      return _this;\n    }\n    ForeignObjectRenderer.prototype.render = function (element) {\n      return __awaiter(this, void 0, void 0, function () {\n        var svg, img;\n        return __generator(this, function (_a) {\n          switch (_a.label) {\n            case 0:\n              svg = createForeignObjectSVG(this.options.width * this.options.scale, this.options.height * this.options.scale, this.options.scale, this.options.scale, element);\n              return [4 /*yield*/, loadSerializedSVG(svg)];\n            case 1:\n              img = _a.sent();\n              if (this.options.backgroundColor) {\n                this.ctx.fillStyle = asString(this.options.backgroundColor);\n                this.ctx.fillRect(0, 0, this.options.width * this.options.scale, this.options.height * this.options.scale);\n              }\n              this.ctx.drawImage(img, -this.options.x * this.options.scale, -this.options.y * this.options.scale);\n              return [2 /*return*/, this.canvas];\n          }\n        });\n      });\n    };\n    return ForeignObjectRenderer;\n  }(Renderer);\n  var loadSerializedSVG = function (svg) {\n    return new Promise(function (resolve, reject) {\n      var img = new Image();\n      img.onload = function () {\n        resolve(img);\n      };\n      img.onerror = reject;\n      img.src = \"data:image/svg+xml;charset=utf-8,\" + encodeURIComponent(new XMLSerializer().serializeToString(svg));\n    });\n  };\n  var Logger = /** @class */function () {\n    function Logger(_a) {\n      var id = _a.id,\n        enabled = _a.enabled;\n      this.id = id;\n      this.enabled = enabled;\n      this.start = Date.now();\n    }\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    Logger.prototype.debug = function () {\n      var args = [];\n      for (var _i = 0; _i < arguments.length; _i++) {\n        args[_i] = arguments[_i];\n      }\n      if (this.enabled) {\n        // eslint-disable-next-line no-console\n        if (typeof window !== 'undefined' && window.console && typeof console.debug === 'function') {\n          // eslint-disable-next-line no-console\n          console.debug.apply(console, __spreadArray([this.id, this.getTime() + \"ms\"], args));\n        } else {\n          this.info.apply(this, args);\n        }\n      }\n    };\n    Logger.prototype.getTime = function () {\n      return Date.now() - this.start;\n    };\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    Logger.prototype.info = function () {\n      var args = [];\n      for (var _i = 0; _i < arguments.length; _i++) {\n        args[_i] = arguments[_i];\n      }\n      if (this.enabled) {\n        // eslint-disable-next-line no-console\n        if (typeof window !== 'undefined' && window.console && typeof console.info === 'function') {\n          // eslint-disable-next-line no-console\n          console.info.apply(console, __spreadArray([this.id, this.getTime() + \"ms\"], args));\n        }\n      }\n    };\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    Logger.prototype.warn = function () {\n      var args = [];\n      for (var _i = 0; _i < arguments.length; _i++) {\n        args[_i] = arguments[_i];\n      }\n      if (this.enabled) {\n        // eslint-disable-next-line no-console\n        if (typeof window !== 'undefined' && window.console && typeof console.warn === 'function') {\n          // eslint-disable-next-line no-console\n          console.warn.apply(console, __spreadArray([this.id, this.getTime() + \"ms\"], args));\n        } else {\n          this.info.apply(this, args);\n        }\n      }\n    };\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    Logger.prototype.error = function () {\n      var args = [];\n      for (var _i = 0; _i < arguments.length; _i++) {\n        args[_i] = arguments[_i];\n      }\n      if (this.enabled) {\n        // eslint-disable-next-line no-console\n        if (typeof window !== 'undefined' && window.console && typeof console.error === 'function') {\n          // eslint-disable-next-line no-console\n          console.error.apply(console, __spreadArray([this.id, this.getTime() + \"ms\"], args));\n        } else {\n          this.info.apply(this, args);\n        }\n      }\n    };\n    Logger.instances = {};\n    return Logger;\n  }();\n  var Context = /** @class */function () {\n    function Context(options, windowBounds) {\n      var _a;\n      this.windowBounds = windowBounds;\n      this.instanceName = \"#\" + Context.instanceCount++;\n      this.logger = new Logger({\n        id: this.instanceName,\n        enabled: options.logging\n      });\n      this.cache = (_a = options.cache) !== null && _a !== void 0 ? _a : new Cache(this, options);\n    }\n    Context.instanceCount = 1;\n    return Context;\n  }();\n  var html2canvas = function (element, options) {\n    if (options === void 0) {\n      options = {};\n    }\n    return renderElement(element, options);\n  };\n  if (typeof window !== 'undefined') {\n    CacheStorage.setContext(window);\n  }\n  var renderElement = function (element, opts) {\n    return __awaiter(void 0, void 0, void 0, function () {\n      var ownerDocument, defaultView, resourceOptions, contextOptions, windowOptions, windowBounds, context, foreignObjectRendering, cloneOptions, documentCloner, clonedElement, container, _a, width, height, left, top, backgroundColor, renderOptions, canvas, renderer, root, renderer;\n      var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;\n      return __generator(this, function (_u) {\n        switch (_u.label) {\n          case 0:\n            if (!element || typeof element !== 'object') {\n              return [2 /*return*/, Promise.reject('Invalid element provided as first argument')];\n            }\n            ownerDocument = element.ownerDocument;\n            if (!ownerDocument) {\n              throw new Error(\"Element is not attached to a Document\");\n            }\n            defaultView = ownerDocument.defaultView;\n            if (!defaultView) {\n              throw new Error(\"Document is not attached to a Window\");\n            }\n            resourceOptions = {\n              allowTaint: (_b = opts.allowTaint) !== null && _b !== void 0 ? _b : false,\n              imageTimeout: (_c = opts.imageTimeout) !== null && _c !== void 0 ? _c : 15000,\n              proxy: opts.proxy,\n              useCORS: (_d = opts.useCORS) !== null && _d !== void 0 ? _d : false\n            };\n            contextOptions = __assign({\n              logging: (_e = opts.logging) !== null && _e !== void 0 ? _e : true,\n              cache: opts.cache\n            }, resourceOptions);\n            windowOptions = {\n              windowWidth: (_f = opts.windowWidth) !== null && _f !== void 0 ? _f : defaultView.innerWidth,\n              windowHeight: (_g = opts.windowHeight) !== null && _g !== void 0 ? _g : defaultView.innerHeight,\n              scrollX: (_h = opts.scrollX) !== null && _h !== void 0 ? _h : defaultView.pageXOffset,\n              scrollY: (_j = opts.scrollY) !== null && _j !== void 0 ? _j : defaultView.pageYOffset\n            };\n            windowBounds = new Bounds(windowOptions.scrollX, windowOptions.scrollY, windowOptions.windowWidth, windowOptions.windowHeight);\n            context = new Context(contextOptions, windowBounds);\n            foreignObjectRendering = (_k = opts.foreignObjectRendering) !== null && _k !== void 0 ? _k : false;\n            cloneOptions = {\n              allowTaint: (_l = opts.allowTaint) !== null && _l !== void 0 ? _l : false,\n              onclone: opts.onclone,\n              ignoreElements: opts.ignoreElements,\n              inlineImages: foreignObjectRendering,\n              copyStyles: foreignObjectRendering\n            };\n            context.logger.debug(\"Starting document clone with size \" + windowBounds.width + \"x\" + windowBounds.height + \" scrolled to \" + -windowBounds.left + \",\" + -windowBounds.top);\n            documentCloner = new DocumentCloner(context, element, cloneOptions);\n            clonedElement = documentCloner.clonedReferenceElement;\n            if (!clonedElement) {\n              return [2 /*return*/, Promise.reject(\"Unable to find element in cloned iframe\")];\n            }\n            return [4 /*yield*/, documentCloner.toIFrame(ownerDocument, windowBounds)];\n          case 1:\n            container = _u.sent();\n            _a = isBodyElement(clonedElement) || isHTMLElement(clonedElement) ? parseDocumentSize(clonedElement.ownerDocument) : parseBounds(context, clonedElement), width = _a.width, height = _a.height, left = _a.left, top = _a.top;\n            backgroundColor = parseBackgroundColor(context, clonedElement, opts.backgroundColor);\n            renderOptions = {\n              canvas: opts.canvas,\n              backgroundColor: backgroundColor,\n              scale: (_o = (_m = opts.scale) !== null && _m !== void 0 ? _m : defaultView.devicePixelRatio) !== null && _o !== void 0 ? _o : 1,\n              x: ((_p = opts.x) !== null && _p !== void 0 ? _p : 0) + left,\n              y: ((_q = opts.y) !== null && _q !== void 0 ? _q : 0) + top,\n              width: (_r = opts.width) !== null && _r !== void 0 ? _r : Math.ceil(width),\n              height: (_s = opts.height) !== null && _s !== void 0 ? _s : Math.ceil(height)\n            };\n            if (!foreignObjectRendering) return [3 /*break*/, 3];\n            context.logger.debug(\"Document cloned, using foreign object rendering\");\n            renderer = new ForeignObjectRenderer(context, renderOptions);\n            return [4 /*yield*/, renderer.render(clonedElement)];\n          case 2:\n            canvas = _u.sent();\n            return [3 /*break*/, 5];\n          case 3:\n            context.logger.debug(\"Document cloned, element located at \" + left + \",\" + top + \" with size \" + width + \"x\" + height + \" using computed rendering\");\n            context.logger.debug(\"Starting DOM parsing\");\n            root = parseTree(context, clonedElement);\n            if (backgroundColor === root.styles.backgroundColor) {\n              root.styles.backgroundColor = COLORS.TRANSPARENT;\n            }\n            context.logger.debug(\"Starting renderer for element at \" + renderOptions.x + \",\" + renderOptions.y + \" with size \" + renderOptions.width + \"x\" + renderOptions.height);\n            renderer = new CanvasRenderer(context, renderOptions);\n            return [4 /*yield*/, renderer.render(root)];\n          case 4:\n            canvas = _u.sent();\n            _u.label = 5;\n          case 5:\n            if ((_t = opts.removeContainer) !== null && _t !== void 0 ? _t : true) {\n              if (!DocumentCloner.destroy(container)) {\n                context.logger.error(\"Cannot detach cloned iframe as it is not in the DOM anymore\");\n              }\n            }\n            context.logger.debug(\"Finished rendering\");\n            return [2 /*return*/, canvas];\n        }\n      });\n    });\n  };\n  var parseBackgroundColor = function (context, element, backgroundColorOverride) {\n    var ownerDocument = element.ownerDocument;\n    // http://www.w3.org/TR/css3-background/#special-backgrounds\n    var documentBackgroundColor = ownerDocument.documentElement ? parseColor(context, getComputedStyle(ownerDocument.documentElement).backgroundColor) : COLORS.TRANSPARENT;\n    var bodyBackgroundColor = ownerDocument.body ? parseColor(context, getComputedStyle(ownerDocument.body).backgroundColor) : COLORS.TRANSPARENT;\n    var defaultBackgroundColor = typeof backgroundColorOverride === 'string' ? parseColor(context, backgroundColorOverride) : backgroundColorOverride === null ? COLORS.TRANSPARENT : 0xffffffff;\n    return element === ownerDocument.documentElement ? isTransparent(documentBackgroundColor) ? isTransparent(bodyBackgroundColor) ? defaultBackgroundColor : bodyBackgroundColor : documentBackgroundColor : defaultBackgroundColor;\n  };\n  return html2canvas;\n});","map":{"version":3,"names":["global","factory","exports","module","define","amd","globalThis","self","html2canvas","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","TypeError","String","__","constructor","create","__assign","assign","t","s","i","n","arguments","length","apply","__awaiter","thisArg","_arguments","P","generator","adopt","value","resolve","Promise","reject","fulfilled","step","next","e","rejected","result","done","then","__generator","body","_","label","sent","trys","ops","f","y","g","verb","Symbol","iterator","v","op","pop","push","__spreadArray","to","from","pack","l","ar","slice","concat","Bounds","left","top","width","height","add","x","w","h","fromClientRect","context","clientRect","windowBounds","fromDOMRectList","domRectList","domRect","find","rect","EMPTY","parseBounds","node","getBoundingClientRect","parseDocumentSize","document","documentElement","Error","Math","max","scrollWidth","offsetWidth","clientWidth","scrollHeight","offsetHeight","clientHeight","toCodePoints$1","str","codePoints","charCodeAt","extra","fromCodePoint$1","_i","fromCodePoint","codeUnits","index","codePoint","fromCharCode","chars$2","lookup$2","Uint8Array","i$2","chars$1$1","lookup$1$1","i$1$1","decode$1","base64","bufferLength","len","encoded1","encoded2","encoded3","encoded4","buffer","ArrayBuffer","bytes","isArray","polyUint16Array$1","polyUint32Array$1","UTRIE2_SHIFT_2$1","UTRIE2_SHIFT_1$1","UTRIE2_INDEX_SHIFT$1","UTRIE2_SHIFT_1_2$1","UTRIE2_LSCP_INDEX_2_OFFSET$1","UTRIE2_DATA_BLOCK_LENGTH$1","UTRIE2_DATA_MASK$1","UTRIE2_LSCP_INDEX_2_LENGTH$1","UTRIE2_INDEX_2_BMP_LENGTH$1","UTRIE2_UTF8_2B_INDEX_2_OFFSET$1","UTRIE2_UTF8_2B_INDEX_2_LENGTH$1","UTRIE2_INDEX_1_OFFSET$1","UTRIE2_OMITTED_BMP_INDEX_1_LENGTH$1","UTRIE2_INDEX_2_BLOCK_LENGTH$1","UTRIE2_INDEX_2_MASK$1","slice16$1","view","start","end","Uint16Array","slice32$1","Uint32Array","createTrieFromBase64$1","_byteLength","view32","view16","headerLength","data","ceil","Trie$1","Trie","initialValue","errorValue","highStart","highValueIndex","get","ix","chars$3","lookup$3","i$3","base64$1","LETTER_NUMBER_MODIFIER","BK","CR$1","LF$1","CM","NL","WJ","ZW","GL","SP","ZWJ$1","B2","BA","BB","HY","CB","CL","CP","EX","IN","NS","OP","QU","IS","NU","PO","PR","SY","AI","AL","CJ","EB","EM","H2","H3","HL","ID","JL","JV","JT","RI$1","SA","XX","ea_OP","BREAK_MANDATORY","BREAK_NOT_ALLOWED$1","BREAK_ALLOWED$1","UnicodeTrie$1","ALPHABETICS","HARD_LINE_BREAKS","SPACE$1","PREFIX_POSTFIX","LINE_BREAKS","KOREAN_SYLLABLE_BLOCK","HYPHEN","codePointsToCharacterClasses","lineBreak","types","indices","categories","forEach","classType","indexOf","prev","isAdjacentWithSpaceIgnored","a","currentIndex","classTypes","current","previousNonSpaceClassType","type","_lineBreakAtIndex","indicies","forbiddenBreaks","beforeIndex","afterIndex","before","prevIndex","count","cssFormattedClasses","options","wordBreak","_a","isLetterNumber","map","forbiddenBreakpoints","letterNumber","undefined","Break","required","LineBreaker","lastEnd","nextIndex","FLAG_UNRESTRICTED","FLAG_ID","FLAG_INTEGER","FLAG_NUMBER","LINE_FEED","SOLIDUS","REVERSE_SOLIDUS","CHARACTER_TABULATION","SPACE","QUOTATION_MARK","EQUALS_SIGN","NUMBER_SIGN","DOLLAR_SIGN","PERCENTAGE_SIGN","APOSTROPHE","LEFT_PARENTHESIS","RIGHT_PARENTHESIS","LOW_LINE","HYPHEN_MINUS","EXCLAMATION_MARK","LESS_THAN_SIGN","GREATER_THAN_SIGN","COMMERCIAL_AT","LEFT_SQUARE_BRACKET","RIGHT_SQUARE_BRACKET","CIRCUMFLEX_ACCENT","LEFT_CURLY_BRACKET","QUESTION_MARK","RIGHT_CURLY_BRACKET","VERTICAL_LINE","TILDE","CONTROL","REPLACEMENT_CHARACTER","ASTERISK","PLUS_SIGN","COMMA","COLON","SEMICOLON","FULL_STOP","NULL","BACKSPACE","LINE_TABULATION","SHIFT_OUT","INFORMATION_SEPARATOR_ONE","DELETE","EOF","ZERO","u","z","A","E","F","U","Z","isDigit","isSurrogateCodePoint","isHex","isLowerCaseLetter","isUpperCaseLetter","isLetter","isNonASCIICodePoint","isWhiteSpace","isNameStartCodePoint","isNameCodePoint","isNonPrintableCodePoint","isValidEscape","c1","c2","isIdentifierStart","c3","isNumberStart","stringToNumber","c","sign","integers","int","parseInt","fraction","fracd","frac","expsign","exponent","exp","pow","LEFT_PARENTHESIS_TOKEN","RIGHT_PARENTHESIS_TOKEN","COMMA_TOKEN","SUFFIX_MATCH_TOKEN","PREFIX_MATCH_TOKEN","COLUMN_TOKEN","DASH_MATCH_TOKEN","INCLUDE_MATCH_TOKEN","LEFT_CURLY_BRACKET_TOKEN","RIGHT_CURLY_BRACKET_TOKEN","SUBSTRING_MATCH_TOKEN","BAD_URL_TOKEN","BAD_STRING_TOKEN","CDO_TOKEN","CDC_TOKEN","COLON_TOKEN","SEMICOLON_TOKEN","LEFT_SQUARE_BRACKET_TOKEN","RIGHT_SQUARE_BRACKET_TOKEN","WHITESPACE_TOKEN","EOF_TOKEN","Tokenizer","_value","write","chunk","read","tokens","token","consumeToken","consumeCodePoint","consumeStringToken","peekCodePoint","flags","consumeName","reconsumeCodePoint","consumeNumericToken","e1","e2","e3","consumeIdentLikeToken","a1","a2","a3","u1","u2","consumeUnicodeRangeToken","consumeWhiteSpace","shift","unshift","delta","digits","questionMarks","start_1","digit","endDigits","toLowerCase","consumeUrlToken","stringToken","consumeBadUrlRemnants","consumeEscapedCodePoint","consumeStringSlice","SLICE_STACK_SIZE","amount","min","splice","endingCodePoint","consumeNumber","repr","number","unit","hex","hexCodePoint","Parser","_tokens","tokenizer","parseValue","parseComponentValue","parseValues","parseComponentValues","SyntaxError","reconsumeToken","consumeComponentValue","values","consumeSimpleBlock","consumeFunction","block","isEndingTokenFor","functionToken","cssFunction","name","isDimensionToken","isNumberToken","isIdentToken","isStringToken","isIdentWithValue","nonWhiteSpace","nonFunctionArgSeparator","parseFunctionArgs","args","arg","isLength","isLengthPercentage","parseLengthPercentageTuple","ZERO_LENGTH","FIFTY_PERCENT","HUNDRED_PERCENT","getAbsoluteValueForTuple","tuple","getAbsoluteValue","parent","DEG","GRAD","RAD","TURN","angle","parse","_context","PI","isAngle","parseNamedSide","sideOrCorner","filter","ident","join","deg","color$1","colorFunction","SUPPORTED_COLOR_FUNCTIONS","r","substring","namedColor","COLORS","toUpperCase","TRANSPARENT","isTransparent","color","asString","alpha","blue","green","red","round","getTokenColorValue","rgb","_b","hue2rgb","t1","t2","hue","hsl","saturation","lightness","hsla","rgba","parseColor","ALICEBLUE","ANTIQUEWHITE","AQUA","AQUAMARINE","AZURE","BEIGE","BISQUE","BLACK","BLANCHEDALMOND","BLUE","BLUEVIOLET","BROWN","BURLYWOOD","CADETBLUE","CHARTREUSE","CHOCOLATE","CORAL","CORNFLOWERBLUE","CORNSILK","CRIMSON","CYAN","DARKBLUE","DARKCYAN","DARKGOLDENROD","DARKGRAY","DARKGREEN","DARKGREY","DARKKHAKI","DARKMAGENTA","DARKOLIVEGREEN","DARKORANGE","DARKORCHID","DARKRED","DARKSALMON","DARKSEAGREEN","DARKSLATEBLUE","DARKSLATEGRAY","DARKSLATEGREY","DARKTURQUOISE","DARKVIOLET","DEEPPINK","DEEPSKYBLUE","DIMGRAY","DIMGREY","DODGERBLUE","FIREBRICK","FLORALWHITE","FORESTGREEN","FUCHSIA","GAINSBORO","GHOSTWHITE","GOLD","GOLDENROD","GRAY","GREEN","GREENYELLOW","GREY","HONEYDEW","HOTPINK","INDIANRED","INDIGO","IVORY","KHAKI","LAVENDER","LAVENDERBLUSH","LAWNGREEN","LEMONCHIFFON","LIGHTBLUE","LIGHTCORAL","LIGHTCYAN","LIGHTGOLDENRODYELLOW","LIGHTGRAY","LIGHTGREEN","LIGHTGREY","LIGHTPINK","LIGHTSALMON","LIGHTSEAGREEN","LIGHTSKYBLUE","LIGHTSLATEGRAY","LIGHTSLATEGREY","LIGHTSTEELBLUE","LIGHTYELLOW","LIME","LIMEGREEN","LINEN","MAGENTA","MAROON","MEDIUMAQUAMARINE","MEDIUMBLUE","MEDIUMORCHID","MEDIUMPURPLE","MEDIUMSEAGREEN","MEDIUMSLATEBLUE","MEDIUMSPRINGGREEN","MEDIUMTURQUOISE","MEDIUMVIOLETRED","MIDNIGHTBLUE","MINTCREAM","MISTYROSE","MOCCASIN","NAVAJOWHITE","NAVY","OLDLACE","OLIVE","OLIVEDRAB","ORANGE","ORANGERED","ORCHID","PALEGOLDENROD","PALEGREEN","PALETURQUOISE","PALEVIOLETRED","PAPAYAWHIP","PEACHPUFF","PERU","PINK","PLUM","POWDERBLUE","PURPLE","REBECCAPURPLE","RED","ROSYBROWN","ROYALBLUE","SADDLEBROWN","SALMON","SANDYBROWN","SEAGREEN","SEASHELL","SIENNA","SILVER","SKYBLUE","SLATEBLUE","SLATEGRAY","SLATEGREY","SNOW","SPRINGGREEN","STEELBLUE","TAN","TEAL","THISTLE","TOMATO","TURQUOISE","VIOLET","WHEAT","WHITE","WHITESMOKE","YELLOW","YELLOWGREEN","backgroundClip","prefix","backgroundColor","format","parseColorStop","stop","processColorStops","stops","lineLength","first","last","processStops","previous","stop_1","absoluteValue","gapBegin","stop_2","gapLength","beforeGap","gapValue","getAngleFromCorner","corner","centerX","centerY","atan2","calculateGradientDirection","radian","abs","sin","cos","halfWidth","halfHeight","halfLineLength","yDiff","xDiff","distance","sqrt","findCorner","closest","corners","reduce","stat","cx","cy","optimumDistance","optimumCorner","Infinity","calculateRadius","gradient","rx","ry","size","shape","linearGradient","angle$1","firstToken","colorStop","prefixLinearGradient","webkitGradient","position","CLOSEST_SIDE","FARTHEST_SIDE","CLOSEST_CORNER","FARTHEST_CORNER","CIRCLE","ELLIPSE","COVER","CONTAIN","radialGradient","isColorStop","isAtPosition_1","acc","prefixRadialGradient","isLinearGradient","background","isRadialGradient","image","image_1","url","cache","addImage","imageFunction","SUPPORTED_IMAGE_FUNCTIONS","isSupportedImage","backgroundImage","backgroundOrigin","backgroundPosition","backgroundRepeat","parseBackgroundRepeat","BACKGROUND_SIZE","backgroundSize","isBackgroundSizeInfoToken","borderColorForSide","side","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","borderRadiusForSide","borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius","borderStyleForSide","style","borderTopStyle","borderRightStyle","borderBottomStyle","borderLeftStyle","borderWidthForSide","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","direction","display","bit","parseDisplayValue","float","letterSpacing","LINE_BREAK","STRICT","NORMAL","lineHeight","computeLineHeight","fontSize","listStyleImage","listStylePosition","listStyleType","marginForSide","marginTop","marginRight","marginBottom","marginLeft","overflow","overflowWrap","paddingForSide","paddingTop","paddingRight","paddingBottom","paddingLeft","textAlign","textShadow","shadow","offsetX","offsetY","blur","textTransform","transform$1","transformFunction","SUPPORTED_TRANSFORM_FUNCTIONS","matrix","matrix3d","b1","b2","a4","b4","DEFAULT_VALUE","DEFAULT","transformOrigin","origins","visibility","WORD_BREAK","BREAK_ALL","KEEP_ALL","zIndex","auto","order","time","opacity","textDecorationColor","textDecorationLine","line","fontFamily","accumulator","results","toString","fontWeight","fontVariant","fontStyle","contains","content","counterIncrement","increments","filtered","counter","increment","counterReset","resets","reset","duration","quotes","open_1","close_1","open","close","getQuote","depth","quote","boxShadow","spread","inset","paintOrder","layers","webkitTextStrokeColor","webkitTextStrokeWidth","CSSParsedDeclaration","declaration","animationDuration","cssFloat","overflowTuple","overflowX","overflowY","textDecoration","transform","isVisible","isTransformed","isPositioned","isPositionedWithZIndex","isFloating","isInlineLevel","CSSParsedPseudoDeclaration","CSSParsedCounterDeclaration","descriptor","parser","length_1","value_1","elementDebuggerAttribute","getElementDebugType","element","attribute","getAttribute","isDebugging","elementType","ElementContainer","textNodes","elements","styles","window","getComputedStyle","isHTMLElementNode","some","bounds","chars$1","lookup$1","i$1","decode","polyUint16Array","polyUint32Array","UTRIE2_SHIFT_2","UTRIE2_SHIFT_1","UTRIE2_INDEX_SHIFT","UTRIE2_SHIFT_1_2","UTRIE2_LSCP_INDEX_2_OFFSET","UTRIE2_DATA_BLOCK_LENGTH","UTRIE2_DATA_MASK","UTRIE2_LSCP_INDEX_2_LENGTH","UTRIE2_INDEX_2_BMP_LENGTH","UTRIE2_UTF8_2B_INDEX_2_OFFSET","UTRIE2_UTF8_2B_INDEX_2_LENGTH","UTRIE2_INDEX_1_OFFSET","UTRIE2_OMITTED_BMP_INDEX_1_LENGTH","UTRIE2_INDEX_2_BLOCK_LENGTH","UTRIE2_INDEX_2_MASK","slice16","slice32","createTrieFromBase64","chars","lookup","Prepend","CR","LF","Control","Extend","SpacingMark","L","V","T","LV","LVT","ZWJ","Extended_Pictographic","RI","toCodePoints","UnicodeTrie","BREAK_NOT_ALLOWED","BREAK_ALLOWED","codePointToClass","_graphemeBreakAtIndex","_codePoints","countRI","GraphemeBreaker","graphemeBreak","splitGraphemes","breaker","graphemes","bk","testRangeBounds","TEST_HEIGHT","createRange","range","testElement","createElement","appendChild","selectNode","rangeBounds","rangeHeight","removeChild","testIOSLineBreak","wordSpacing","innerHTML","repeat","firstChild","textList","offset","supports","every","text","setStart","setEnd","boundAhead","testCORS","Image","crossOrigin","testResponseType","XMLHttpRequest","responseType","testSVG","img","canvas","ctx","getContext","src","drawImage","toDataURL","isGreenPixel","testForeignObject","fillStyle","fillRect","greenImageSrc","svg","createForeignObjectSVG","loadSerializedSVG$1","getImageData","catch","xmlns","createElementNS","foreignObject","setAttributeNS","onload","onerror","encodeURIComponent","XMLSerializer","serializeToString","FEATURES","SUPPORT_RANGE_BOUNDS","defineProperty","SUPPORT_WORD_BREAKING","SUPPORT_SVG_DRAWING","SUPPORT_FOREIGNOBJECT_DRAWING","fetch","SUPPORT_CORS_IMAGES","SUPPORT_RESPONSE_TYPE","SUPPORT_CORS_XHR","SUPPORT_NATIVE_TEXT_SEGMENTATION","Intl","Segmenter","TextBounds","parseTextBounds","breakText","textBounds","trim","clientRects","getClientRects","subSegments","segmentGraphemes","subOffset_1","subSegment","replacementNode","splitText","getWrapperBounds","ownerDocument","wrapper","cloneNode","parentNode","replaceChild","segmenter","granularity","segment","segmentWords","breakWords","wordSeparators","words","_loop_1","word_1","TextContainer","replace","CAPITALIZE","capitalize","m","p1","p2","ImageElementContainer","_super","_this","currentSrc","intrinsicWidth","naturalWidth","intrinsicHeight","naturalHeight","CanvasElementContainer","SVGElementContainer","setAttribute","baseVal","LIElementContainer","OLElementContainer","reversed","CHECKBOX_BORDER_RADIUS","RADIO_BORDER_RADIUS","reformatInputBounds","getInputValue","PASSWORD","placeholder","CHECKBOX","RADIO","INPUT_COLOR","InputElementContainer","input","checked","SelectElementContainer","option","selectedIndex","TextareaElementContainer","IFrameElementContainer","iframe","contentWindow","tree","parseTree","documentBackgroundColor","bodyBackgroundColor","LIST_OWNERS","parseNodeTree","root","childNode","nextNode","nextSibling","isTextNode","isElementNode","isSlotElement","assignedNodes","container","createContainer","createsRealStackingContext","createsStackingContext","tagName","slot","shadowRoot","isTextareaElement","isSVGElement","isSelectElement","isImageElement","isCanvasElement","isLIElement","isOLElement","isInputElement","isIFrameElement","isBodyElement","nodeType","Node","TEXT_NODE","ELEMENT_NODE","isSVGElementNode","className","isHTMLElement","isVideoElement","isStyleElement","isScriptElement","isCustomElement","CounterState","counters","getCounterValue","getCounterValues","canReset","entry","counterNames","ROMAN_UPPER","ARMENIAN","HEBREW","GEORGIAN","createAdditiveCounter","symbols","fallback","suffix","createCounterText","string","integer","createCounterStyleWithSymbolResolver","codePointRangeLength","isNumeric","resolver","createCounterStyleFromRange","codePointRangeStart","codePointRangeEnd","floor","createCounterStyleFromSymbols","CJK_ZEROS","CJK_TEN_COEFFICIENTS","CJK_TEN_HIGH_COEFFICIENTS","CJK_HUNDRED_COEFFICIENTS","createCJKCounter","numbers","multipliers","negativeSign","tmp","coefficient","CHINESE_INFORMAL_MULTIPLIERS","CHINESE_FORMAL_MULTIPLIERS","JAPANESE_NEGATIVE","KOREAN_NEGATIVE","appendSuffix","defaultSuffix","cjkSuffix","koreanSuffix","spaceSuffix","IGNORE_ATTRIBUTE","DocumentCloner","scrolledElements","referenceElement","quoteDepth","toIFrame","windowSize","createIFrameContainer","scrollX","defaultView","pageXOffset","scrollY","pageYOffset","cloneWindow","documentClone","iframeLoad","iframeLoader","onclone","restoreNodeScroll","scrollTo","test","navigator","userAgent","logger","warn","clonedReferenceElement","nodeName","fonts","ready","imagesReady","serializeDoctype","doctype","restoreOwnerScroll","adoptNode","createElementClone","createCanvasClone","createVideoClone","createStyleClone","clone","srcset","loading","createCustomElementClone","copyCSSStyles","sheet","cssRules","css","rule","cssText","textContent","error","inlineImages","info","clonedCanvas","clonedCtx","allowTaint","putImageData","gl","attribs","getContextAttributes","preserveDrawingBuffer","video","blankCanvas","appendChildNode","child","copyStyles","hasAttribute","ignoreElements","cloneChildNodes","assignedNode","createTextNode","transitionProperty","styleBefore","styleAfter","createPseudoHideStyles","resolvePseudoContent","PseudoElementType","BEFORE","insertBefore","after","AFTER","scrollTop","scrollLeft","pseudoElt","anonymousReplacedElement","attr","counterStyle","counterState","counterType","delim","counterStates","counterType_1","separator","PSEUDO_HIDE_ELEMENT_CLASS_BEFORE","PSEUDO_HIDE_ELEMENT_CLASS_AFTER","newClassName","baseValue","destroy","cloneIframeContainer","border","scrolling","imageReady","complete","all","images","interval","setInterval","childNodes","readyState","clearInterval","ignoredStyleProperties","target","property","item","setProperty","getPropertyValue","internalSubset","publicId","systemId","PSEUDO_BEFORE","PSEUDO_AFTER","PSEUDO_HIDE_ELEMENT_STYLE","createStyles","CacheStorage","getOrigin","link","_link","href","protocol","hostname","port","isSameOrigin","_origin","setContext","location","Cache","_options","_cache","has","isBlobImage","isRenderable","loadImage","match","key","useCORS","useProxy","isInlineImage","proxy","debug","isInlineBase64Image","setTimeout","imageTimeout","keys","xhr","status","response","reader_1","FileReader","addEventListener","readAsDataURL","queryString","timeout_1","timeout","ontimeout","send","INLINE_SVG","INLINE_BASE64","INLINE_IMG","isSVG","substr","Vector","deltaX","deltaY","lerp","BezierCurve","startControl","endControl","subdivide","firstHalf","ab","bc","cd","abbc","bccd","dest","reverse","isBezierCurve","path","BoundCurves","tlh","tlv","trh","trv","_c","brh","brv","_d","blh","blv","factors","maxFactor","topWidth","rightHeight","bottomWidth","leftHeight","topLeftBorderDoubleOuterBox","getCurvePoints","CORNER","TOP_LEFT","topRightBorderDoubleOuterBox","TOP_RIGHT","bottomRightBorderDoubleOuterBox","BOTTOM_RIGHT","bottomLeftBorderDoubleOuterBox","BOTTOM_LEFT","topLeftBorderDoubleInnerBox","topRightBorderDoubleInnerBox","bottomRightBorderDoubleInnerBox","bottomLeftBorderDoubleInnerBox","topLeftBorderStroke","topRightBorderStroke","bottomRightBorderStroke","bottomLeftBorderStroke","topLeftBorderBox","topRightBorderBox","bottomRightBorderBox","bottomLeftBorderBox","topLeftPaddingBox","topRightPaddingBox","bottomRightPaddingBox","bottomLeftPaddingBox","topLeftContentBox","topRightContentBox","bottomRightContentBox","bottomLeftContentBox","r1","r2","kappa","ox","oy","xm","ym","calculateBorderBoxPath","curves","calculateContentBoxPath","calculatePaddingBoxPath","TransformEffect","ClipEffect","OpacityEffect","isTransformEffect","effect","isClipEffect","isOpacityEffect","equalPath","transformPath","deltaW","deltaH","point","StackingContext","inlineLevel","nonInlineLevel","negativeZIndex","zeroOrAutoZIndexOrTransformedOrOpacity","positiveZIndex","nonPositionedFloats","nonPositionedInlineLevel","ElementPaint","effects","borderBox","paddingBox","getEffects","inFlow","croplessEffects","parseStackTree","stackingContext","realStackingContext","listItems","treatAsRealStackingContext","paintContainer","listOwnerItems","parentStack","stack","order_1","index_1","index_2","processListItems","owner","numbering","listValue","parseStackingContexts","parsePathForBorder","borderSide","createPathFromCurves","parsePathForBorderDoubleOuter","parsePathForBorderDoubleInner","parsePathForBorderStroke","createStrokePathFromCurves","outer1","outer2","inner1","inner2","contentBox","calculateBackgroundPositioningArea","calculateBackgroundPaintingArea","calculateBackgroundRendering","intrinsicSize","backgroundPositioningArea","getBackgroundValueForIndex","backgroundPaintingArea","backgroundImageSize","calculateBackgroundSize","sizeWidth","sizeHeight","calculateBackgroundRepeatPath","isAuto","AUTO","hasIntrinsicValue","intrinsicProportion","second","hasIntrinsicProportion","targetRatio","hasIntrinsicWidth","hasIntrinsicHeight","hasIntrinsicDimensions","width_1","height_1","width_2","height_2","width_3","height_3","SMALL_IMAGE","SAMPLE_TEXT","FontMetrics","_data","_document","parseMetrics","span","margin","padding","whiteSpace","verticalAlign","baseline","offsetTop","middle","getMetrics","Renderer","MASK_OFFSET","CanvasRenderer","_activeEffects","scale","fontMetrics","translate","textBaseline","applyEffects","popEffect","applyEffect","save","globalAlpha","clip","restore","renderStack","renderStackContent","renderNode","paint","renderNodeBackgroundAndBorders","renderNodeContent","renderTextWithLetterSpacing","fillText","letters","letter","measureText","createFontStyle","variant","fixIOSSystemFonts","renderTextNode","font","paintOrderLayer","textShadows","shadowColor","shadowOffsetX","shadowOffsetY","shadowBlur","strokeStyle","lineWidth","lineJoin","chrome","strokeText","renderReplacedElement","box","iframeRenderer","render","fill","beginPath","arc","isTextInputElement","canvasTextAlign","_e","_f","_g","_h","_j","_k","_l","_m","_o","_p","mask","paths","moveTo","lineTo","formatPath","closePath","bezierCurveTo","renderRepeat","pattern","resizeImage","renderBackgroundImage","this_1","x0","x1","y0","y1","gradient_1","top_1","radialGradient_1","midX","midY","invF","createPattern","createLinearGradient","addColorStop","createRadialGradient","renderSolidBorder","curvePoints","renderDoubleBorder","outerPaths","innerPaths","hasBackground","borders","borders_1","calculateBackgroundCurvedPaintingArea","borderBoxArea","maskOffset","shadowPaintingArea","renderDashedDottedBorder","strokePaths","boxPaths","startX","startY","endX","endY","dashLength","spaceLength","useLineDash","multiplier","numberOfDashes","minSpace","maxSpace","path1","path2","setLineDash","lineCap","stroke","iOSBrokenFonts","fontFamilies","ForeignObjectRenderer","loadSerializedSVG","Logger","id","enabled","Date","now","console","getTime","instances","Context","instanceName","instanceCount","logging","renderElement","opts","resourceOptions","contextOptions","windowOptions","foreignObjectRendering","cloneOptions","documentCloner","clonedElement","renderOptions","renderer","_q","_r","_s","_t","_u","windowWidth","innerWidth","windowHeight","innerHeight","parseBackgroundColor","devicePixelRatio","removeContainer","backgroundColorOverride","defaultBackgroundColor"],"sources":["/root/rfcontavagas_hom/12.-Servidor-local-Docker/Front-Parking-Angular/node_modules/html2canvas/dist/html2canvas.js"],"sourcesContent":["/*!\n * html2canvas 1.4.1 <https://html2canvas.hertzen.com>\n * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>\n * Released under MIT License\n */\n(function (global, factory) {\n    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n    typeof define === 'function' && define.amd ? define(factory) :\n    (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.html2canvas = factory());\n}(this, (function () { 'use strict';\n\n    /*! *****************************************************************************\r\n    Copyright (c) Microsoft Corporation.\r\n\r\n    Permission to use, copy, modify, and/or distribute this software for any\r\n    purpose with or without fee is hereby granted.\r\n\r\n    THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\n    REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\n    AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\n    INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\n    LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\n    OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\n    PERFORMANCE OF THIS SOFTWARE.\r\n    ***************************************************************************** */\r\n    /* global Reflect, Promise */\r\n\r\n    var extendStatics = function(d, b) {\r\n        extendStatics = Object.setPrototypeOf ||\r\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n        return extendStatics(d, b);\r\n    };\r\n\r\n    function __extends(d, b) {\r\n        if (typeof b !== \"function\" && b !== null)\r\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n        extendStatics(d, b);\r\n        function __() { this.constructor = d; }\r\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n    }\r\n\r\n    var __assign = function() {\r\n        __assign = Object.assign || function __assign(t) {\r\n            for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n                s = arguments[i];\r\n                for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n            }\r\n            return t;\r\n        };\r\n        return __assign.apply(this, arguments);\r\n    };\r\n\r\n    function __awaiter(thisArg, _arguments, P, generator) {\r\n        function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n        return new (P || (P = Promise))(function (resolve, reject) {\r\n            function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n            function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n            function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n            step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n        });\r\n    }\r\n\r\n    function __generator(thisArg, body) {\r\n        var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n        return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n        function verb(n) { return function (v) { return step([n, v]); }; }\r\n        function step(op) {\r\n            if (f) throw new TypeError(\"Generator is already executing.\");\r\n            while (_) try {\r\n                if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n                if (y = 0, t) op = [op[0] & 2, t.value];\r\n                switch (op[0]) {\r\n                    case 0: case 1: t = op; break;\r\n                    case 4: _.label++; return { value: op[1], done: false };\r\n                    case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                    case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                    default:\r\n                        if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                        if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                        if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                        if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                        if (t[2]) _.ops.pop();\r\n                        _.trys.pop(); continue;\r\n                }\r\n                op = body.call(thisArg, _);\r\n            } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n            if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n        }\r\n    }\r\n\r\n    function __spreadArray(to, from, pack) {\r\n        if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n            if (ar || !(i in from)) {\r\n                if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n                ar[i] = from[i];\r\n            }\r\n        }\r\n        return to.concat(ar || from);\r\n    }\n\n    var Bounds = /** @class */ (function () {\n        function Bounds(left, top, width, height) {\n            this.left = left;\n            this.top = top;\n            this.width = width;\n            this.height = height;\n        }\n        Bounds.prototype.add = function (x, y, w, h) {\n            return new Bounds(this.left + x, this.top + y, this.width + w, this.height + h);\n        };\n        Bounds.fromClientRect = function (context, clientRect) {\n            return new Bounds(clientRect.left + context.windowBounds.left, clientRect.top + context.windowBounds.top, clientRect.width, clientRect.height);\n        };\n        Bounds.fromDOMRectList = function (context, domRectList) {\n            var domRect = Array.from(domRectList).find(function (rect) { return rect.width !== 0; });\n            return domRect\n                ? new Bounds(domRect.left + context.windowBounds.left, domRect.top + context.windowBounds.top, domRect.width, domRect.height)\n                : Bounds.EMPTY;\n        };\n        Bounds.EMPTY = new Bounds(0, 0, 0, 0);\n        return Bounds;\n    }());\n    var parseBounds = function (context, node) {\n        return Bounds.fromClientRect(context, node.getBoundingClientRect());\n    };\n    var parseDocumentSize = function (document) {\n        var body = document.body;\n        var documentElement = document.documentElement;\n        if (!body || !documentElement) {\n            throw new Error(\"Unable to get document size\");\n        }\n        var width = Math.max(Math.max(body.scrollWidth, documentElement.scrollWidth), Math.max(body.offsetWidth, documentElement.offsetWidth), Math.max(body.clientWidth, documentElement.clientWidth));\n        var height = Math.max(Math.max(body.scrollHeight, documentElement.scrollHeight), Math.max(body.offsetHeight, documentElement.offsetHeight), Math.max(body.clientHeight, documentElement.clientHeight));\n        return new Bounds(0, 0, width, height);\n    };\n\n    /*\n     * css-line-break 2.1.0 <https://github.com/niklasvh/css-line-break#readme>\n     * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>\n     * Released under MIT License\n     */\n    var toCodePoints$1 = function (str) {\n        var codePoints = [];\n        var i = 0;\n        var length = str.length;\n        while (i < length) {\n            var value = str.charCodeAt(i++);\n            if (value >= 0xd800 && value <= 0xdbff && i < length) {\n                var extra = str.charCodeAt(i++);\n                if ((extra & 0xfc00) === 0xdc00) {\n                    codePoints.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000);\n                }\n                else {\n                    codePoints.push(value);\n                    i--;\n                }\n            }\n            else {\n                codePoints.push(value);\n            }\n        }\n        return codePoints;\n    };\n    var fromCodePoint$1 = function () {\n        var codePoints = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            codePoints[_i] = arguments[_i];\n        }\n        if (String.fromCodePoint) {\n            return String.fromCodePoint.apply(String, codePoints);\n        }\n        var length = codePoints.length;\n        if (!length) {\n            return '';\n        }\n        var codeUnits = [];\n        var index = -1;\n        var result = '';\n        while (++index < length) {\n            var codePoint = codePoints[index];\n            if (codePoint <= 0xffff) {\n                codeUnits.push(codePoint);\n            }\n            else {\n                codePoint -= 0x10000;\n                codeUnits.push((codePoint >> 10) + 0xd800, (codePoint % 0x400) + 0xdc00);\n            }\n            if (index + 1 === length || codeUnits.length > 0x4000) {\n                result += String.fromCharCode.apply(String, codeUnits);\n                codeUnits.length = 0;\n            }\n        }\n        return result;\n    };\n    var chars$2 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n    // Use a lookup table to find the index.\n    var lookup$2 = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\n    for (var i$2 = 0; i$2 < chars$2.length; i$2++) {\n        lookup$2[chars$2.charCodeAt(i$2)] = i$2;\n    }\n\n    /*\n     * utrie 1.0.2 <https://github.com/niklasvh/utrie>\n     * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>\n     * Released under MIT License\n     */\n    var chars$1$1 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n    // Use a lookup table to find the index.\n    var lookup$1$1 = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\n    for (var i$1$1 = 0; i$1$1 < chars$1$1.length; i$1$1++) {\n        lookup$1$1[chars$1$1.charCodeAt(i$1$1)] = i$1$1;\n    }\n    var decode$1 = function (base64) {\n        var bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n        if (base64[base64.length - 1] === '=') {\n            bufferLength--;\n            if (base64[base64.length - 2] === '=') {\n                bufferLength--;\n            }\n        }\n        var buffer = typeof ArrayBuffer !== 'undefined' &&\n            typeof Uint8Array !== 'undefined' &&\n            typeof Uint8Array.prototype.slice !== 'undefined'\n            ? new ArrayBuffer(bufferLength)\n            : new Array(bufferLength);\n        var bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\n        for (i = 0; i < len; i += 4) {\n            encoded1 = lookup$1$1[base64.charCodeAt(i)];\n            encoded2 = lookup$1$1[base64.charCodeAt(i + 1)];\n            encoded3 = lookup$1$1[base64.charCodeAt(i + 2)];\n            encoded4 = lookup$1$1[base64.charCodeAt(i + 3)];\n            bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n            bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n            bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n        }\n        return buffer;\n    };\n    var polyUint16Array$1 = function (buffer) {\n        var length = buffer.length;\n        var bytes = [];\n        for (var i = 0; i < length; i += 2) {\n            bytes.push((buffer[i + 1] << 8) | buffer[i]);\n        }\n        return bytes;\n    };\n    var polyUint32Array$1 = function (buffer) {\n        var length = buffer.length;\n        var bytes = [];\n        for (var i = 0; i < length; i += 4) {\n            bytes.push((buffer[i + 3] << 24) | (buffer[i + 2] << 16) | (buffer[i + 1] << 8) | buffer[i]);\n        }\n        return bytes;\n    };\n\n    /** Shift size for getting the index-2 table offset. */\n    var UTRIE2_SHIFT_2$1 = 5;\n    /** Shift size for getting the index-1 table offset. */\n    var UTRIE2_SHIFT_1$1 = 6 + 5;\n    /**\n     * Shift size for shifting left the index array values.\n     * Increases possible data size with 16-bit index values at the cost\n     * of compactability.\n     * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY.\n     */\n    var UTRIE2_INDEX_SHIFT$1 = 2;\n    /**\n     * Difference between the two shift sizes,\n     * for getting an index-1 offset from an index-2 offset. 6=11-5\n     */\n    var UTRIE2_SHIFT_1_2$1 = UTRIE2_SHIFT_1$1 - UTRIE2_SHIFT_2$1;\n    /**\n     * The part of the index-2 table for U+D800..U+DBFF stores values for\n     * lead surrogate code _units_ not code _points_.\n     * Values for lead surrogate code _points_ are indexed with this portion of the table.\n     * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.)\n     */\n    var UTRIE2_LSCP_INDEX_2_OFFSET$1 = 0x10000 >> UTRIE2_SHIFT_2$1;\n    /** Number of entries in a data block. 32=0x20 */\n    var UTRIE2_DATA_BLOCK_LENGTH$1 = 1 << UTRIE2_SHIFT_2$1;\n    /** Mask for getting the lower bits for the in-data-block offset. */\n    var UTRIE2_DATA_MASK$1 = UTRIE2_DATA_BLOCK_LENGTH$1 - 1;\n    var UTRIE2_LSCP_INDEX_2_LENGTH$1 = 0x400 >> UTRIE2_SHIFT_2$1;\n    /** Count the lengths of both BMP pieces. 2080=0x820 */\n    var UTRIE2_INDEX_2_BMP_LENGTH$1 = UTRIE2_LSCP_INDEX_2_OFFSET$1 + UTRIE2_LSCP_INDEX_2_LENGTH$1;\n    /**\n     * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.\n     * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2.\n     */\n    var UTRIE2_UTF8_2B_INDEX_2_OFFSET$1 = UTRIE2_INDEX_2_BMP_LENGTH$1;\n    var UTRIE2_UTF8_2B_INDEX_2_LENGTH$1 = 0x800 >> 6; /* U+0800 is the first code point after 2-byte UTF-8 */\n    /**\n     * The index-1 table, only used for supplementary code points, at offset 2112=0x840.\n     * Variable length, for code points up to highStart, where the last single-value range starts.\n     * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1.\n     * (For 0x100000 supplementary code points U+10000..U+10ffff.)\n     *\n     * The part of the index-2 table for supplementary code points starts\n     * after this index-1 table.\n     *\n     * Both the index-1 table and the following part of the index-2 table\n     * are omitted completely if there is only BMP data.\n     */\n    var UTRIE2_INDEX_1_OFFSET$1 = UTRIE2_UTF8_2B_INDEX_2_OFFSET$1 + UTRIE2_UTF8_2B_INDEX_2_LENGTH$1;\n    /**\n     * Number of index-1 entries for the BMP. 32=0x20\n     * This part of the index-1 table is omitted from the serialized form.\n     */\n    var UTRIE2_OMITTED_BMP_INDEX_1_LENGTH$1 = 0x10000 >> UTRIE2_SHIFT_1$1;\n    /** Number of entries in an index-2 block. 64=0x40 */\n    var UTRIE2_INDEX_2_BLOCK_LENGTH$1 = 1 << UTRIE2_SHIFT_1_2$1;\n    /** Mask for getting the lower bits for the in-index-2-block offset. */\n    var UTRIE2_INDEX_2_MASK$1 = UTRIE2_INDEX_2_BLOCK_LENGTH$1 - 1;\n    var slice16$1 = function (view, start, end) {\n        if (view.slice) {\n            return view.slice(start, end);\n        }\n        return new Uint16Array(Array.prototype.slice.call(view, start, end));\n    };\n    var slice32$1 = function (view, start, end) {\n        if (view.slice) {\n            return view.slice(start, end);\n        }\n        return new Uint32Array(Array.prototype.slice.call(view, start, end));\n    };\n    var createTrieFromBase64$1 = function (base64, _byteLength) {\n        var buffer = decode$1(base64);\n        var view32 = Array.isArray(buffer) ? polyUint32Array$1(buffer) : new Uint32Array(buffer);\n        var view16 = Array.isArray(buffer) ? polyUint16Array$1(buffer) : new Uint16Array(buffer);\n        var headerLength = 24;\n        var index = slice16$1(view16, headerLength / 2, view32[4] / 2);\n        var data = view32[5] === 2\n            ? slice16$1(view16, (headerLength + view32[4]) / 2)\n            : slice32$1(view32, Math.ceil((headerLength + view32[4]) / 4));\n        return new Trie$1(view32[0], view32[1], view32[2], view32[3], index, data);\n    };\n    var Trie$1 = /** @class */ (function () {\n        function Trie(initialValue, errorValue, highStart, highValueIndex, index, data) {\n            this.initialValue = initialValue;\n            this.errorValue = errorValue;\n            this.highStart = highStart;\n            this.highValueIndex = highValueIndex;\n            this.index = index;\n            this.data = data;\n        }\n        /**\n         * Get the value for a code point as stored in the Trie.\n         *\n         * @param codePoint the code point\n         * @return the value\n         */\n        Trie.prototype.get = function (codePoint) {\n            var ix;\n            if (codePoint >= 0) {\n                if (codePoint < 0x0d800 || (codePoint > 0x0dbff && codePoint <= 0x0ffff)) {\n                    // Ordinary BMP code point, excluding leading surrogates.\n                    // BMP uses a single level lookup.  BMP index starts at offset 0 in the Trie2 index.\n                    // 16 bit data is stored in the index array itself.\n                    ix = this.index[codePoint >> UTRIE2_SHIFT_2$1];\n                    ix = (ix << UTRIE2_INDEX_SHIFT$1) + (codePoint & UTRIE2_DATA_MASK$1);\n                    return this.data[ix];\n                }\n                if (codePoint <= 0xffff) {\n                    // Lead Surrogate Code Point.  A Separate index section is stored for\n                    // lead surrogate code units and code points.\n                    //   The main index has the code unit data.\n                    //   For this function, we need the code point data.\n                    // Note: this expression could be refactored for slightly improved efficiency, but\n                    //       surrogate code points will be so rare in practice that it's not worth it.\n                    ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET$1 + ((codePoint - 0xd800) >> UTRIE2_SHIFT_2$1)];\n                    ix = (ix << UTRIE2_INDEX_SHIFT$1) + (codePoint & UTRIE2_DATA_MASK$1);\n                    return this.data[ix];\n                }\n                if (codePoint < this.highStart) {\n                    // Supplemental code point, use two-level lookup.\n                    ix = UTRIE2_INDEX_1_OFFSET$1 - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH$1 + (codePoint >> UTRIE2_SHIFT_1$1);\n                    ix = this.index[ix];\n                    ix += (codePoint >> UTRIE2_SHIFT_2$1) & UTRIE2_INDEX_2_MASK$1;\n                    ix = this.index[ix];\n                    ix = (ix << UTRIE2_INDEX_SHIFT$1) + (codePoint & UTRIE2_DATA_MASK$1);\n                    return this.data[ix];\n                }\n                if (codePoint <= 0x10ffff) {\n                    return this.data[this.highValueIndex];\n                }\n            }\n            // Fall through.  The code point is outside of the legal range of 0..0x10ffff.\n            return this.errorValue;\n        };\n        return Trie;\n    }());\n\n    /*\n     * base64-arraybuffer 1.0.2 <https://github.com/niklasvh/base64-arraybuffer>\n     * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>\n     * Released under MIT License\n     */\n    var chars$3 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n    // Use a lookup table to find the index.\n    var lookup$3 = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\n    for (var i$3 = 0; i$3 < chars$3.length; i$3++) {\n        lookup$3[chars$3.charCodeAt(i$3)] = i$3;\n    }\n\n    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==';\n\n    var LETTER_NUMBER_MODIFIER = 50;\n    // Non-tailorable Line Breaking Classes\n    var BK = 1; //  Cause a line break (after)\n    var CR$1 = 2; //  Cause a line break (after), except between CR and LF\n    var LF$1 = 3; //  Cause a line break (after)\n    var CM = 4; //  Prohibit a line break between the character and the preceding character\n    var NL = 5; //  Cause a line break (after)\n    var WJ = 7; //  Prohibit line breaks before and after\n    var ZW = 8; //  Provide a break opportunity\n    var GL = 9; //  Prohibit line breaks before and after\n    var SP = 10; // Enable indirect line breaks\n    var ZWJ$1 = 11; // Prohibit line breaks within joiner sequences\n    // Break Opportunities\n    var B2 = 12; //  Provide a line break opportunity before and after the character\n    var BA = 13; //  Generally provide a line break opportunity after the character\n    var BB = 14; //  Generally provide a line break opportunity before the character\n    var HY = 15; //  Provide a line break opportunity after the character, except in numeric context\n    var CB = 16; //   Provide a line break opportunity contingent on additional information\n    // Characters Prohibiting Certain Breaks\n    var CL = 17; //  Prohibit line breaks before\n    var CP = 18; //  Prohibit line breaks before\n    var EX = 19; //  Prohibit line breaks before\n    var IN = 20; //  Allow only indirect line breaks between pairs\n    var NS = 21; //  Allow only indirect line breaks before\n    var OP = 22; //  Prohibit line breaks after\n    var QU = 23; //  Act like they are both opening and closing\n    // Numeric Context\n    var IS = 24; //  Prevent breaks after any and before numeric\n    var NU = 25; //  Form numeric expressions for line breaking purposes\n    var PO = 26; //  Do not break following a numeric expression\n    var PR = 27; //  Do not break in front of a numeric expression\n    var SY = 28; //  Prevent a break before; and allow a break after\n    // Other Characters\n    var AI = 29; //  Act like AL when the resolvedEAW is N; otherwise; act as ID\n    var AL = 30; //  Are alphabetic characters or symbols that are used with alphabetic characters\n    var CJ = 31; //  Treat as NS or ID for strict or normal breaking.\n    var EB = 32; //  Do not break from following Emoji Modifier\n    var EM = 33; //  Do not break from preceding Emoji Base\n    var H2 = 34; //  Form Korean syllable blocks\n    var H3 = 35; //  Form Korean syllable blocks\n    var HL = 36; //  Do not break around a following hyphen; otherwise act as Alphabetic\n    var ID = 37; //  Break before or after; except in some numeric context\n    var JL = 38; //  Form Korean syllable blocks\n    var JV = 39; //  Form Korean syllable blocks\n    var JT = 40; //  Form Korean syllable blocks\n    var RI$1 = 41; //  Keep pairs together. For pairs; break before and after other classes\n    var SA = 42; //  Provide a line break opportunity contingent on additional, language-specific context analysis\n    var XX = 43; //  Have as yet unknown line breaking behavior or unassigned code positions\n    var ea_OP = [0x2329, 0xff08];\n    var BREAK_MANDATORY = '!';\n    var BREAK_NOT_ALLOWED$1 = '×';\n    var BREAK_ALLOWED$1 = '÷';\n    var UnicodeTrie$1 = createTrieFromBase64$1(base64$1);\n    var ALPHABETICS = [AL, HL];\n    var HARD_LINE_BREAKS = [BK, CR$1, LF$1, NL];\n    var SPACE$1 = [SP, ZW];\n    var PREFIX_POSTFIX = [PR, PO];\n    var LINE_BREAKS = HARD_LINE_BREAKS.concat(SPACE$1);\n    var KOREAN_SYLLABLE_BLOCK = [JL, JV, JT, H2, H3];\n    var HYPHEN = [HY, BA];\n    var codePointsToCharacterClasses = function (codePoints, lineBreak) {\n        if (lineBreak === void 0) { lineBreak = 'strict'; }\n        var types = [];\n        var indices = [];\n        var categories = [];\n        codePoints.forEach(function (codePoint, index) {\n            var classType = UnicodeTrie$1.get(codePoint);\n            if (classType > LETTER_NUMBER_MODIFIER) {\n                categories.push(true);\n                classType -= LETTER_NUMBER_MODIFIER;\n            }\n            else {\n                categories.push(false);\n            }\n            if (['normal', 'auto', 'loose'].indexOf(lineBreak) !== -1) {\n                // U+2010, – U+2013, 〜 U+301C, ゠ U+30A0\n                if ([0x2010, 0x2013, 0x301c, 0x30a0].indexOf(codePoint) !== -1) {\n                    indices.push(index);\n                    return types.push(CB);\n                }\n            }\n            if (classType === CM || classType === ZWJ$1) {\n                // LB10 Treat any remaining combining mark or ZWJ as AL.\n                if (index === 0) {\n                    indices.push(index);\n                    return types.push(AL);\n                }\n                // LB9 Do not break a combining character sequence; treat it as if it has the line breaking class of\n                // the base character in all of the following rules. Treat ZWJ as if it were CM.\n                var prev = types[index - 1];\n                if (LINE_BREAKS.indexOf(prev) === -1) {\n                    indices.push(indices[index - 1]);\n                    return types.push(prev);\n                }\n                indices.push(index);\n                return types.push(AL);\n            }\n            indices.push(index);\n            if (classType === CJ) {\n                return types.push(lineBreak === 'strict' ? NS : ID);\n            }\n            if (classType === SA) {\n                return types.push(AL);\n            }\n            if (classType === AI) {\n                return types.push(AL);\n            }\n            // For supplementary characters, a useful default is to treat characters in the range 10000..1FFFD as AL\n            // and characters in the ranges 20000..2FFFD and 30000..3FFFD as ID, until the implementation can be revised\n            // to take into account the actual line breaking properties for these characters.\n            if (classType === XX) {\n                if ((codePoint >= 0x20000 && codePoint <= 0x2fffd) || (codePoint >= 0x30000 && codePoint <= 0x3fffd)) {\n                    return types.push(ID);\n                }\n                else {\n                    return types.push(AL);\n                }\n            }\n            types.push(classType);\n        });\n        return [indices, types, categories];\n    };\n    var isAdjacentWithSpaceIgnored = function (a, b, currentIndex, classTypes) {\n        var current = classTypes[currentIndex];\n        if (Array.isArray(a) ? a.indexOf(current) !== -1 : a === current) {\n            var i = currentIndex;\n            while (i <= classTypes.length) {\n                i++;\n                var next = classTypes[i];\n                if (next === b) {\n                    return true;\n                }\n                if (next !== SP) {\n                    break;\n                }\n            }\n        }\n        if (current === SP) {\n            var i = currentIndex;\n            while (i > 0) {\n                i--;\n                var prev = classTypes[i];\n                if (Array.isArray(a) ? a.indexOf(prev) !== -1 : a === prev) {\n                    var n = currentIndex;\n                    while (n <= classTypes.length) {\n                        n++;\n                        var next = classTypes[n];\n                        if (next === b) {\n                            return true;\n                        }\n                        if (next !== SP) {\n                            break;\n                        }\n                    }\n                }\n                if (prev !== SP) {\n                    break;\n                }\n            }\n        }\n        return false;\n    };\n    var previousNonSpaceClassType = function (currentIndex, classTypes) {\n        var i = currentIndex;\n        while (i >= 0) {\n            var type = classTypes[i];\n            if (type === SP) {\n                i--;\n            }\n            else {\n                return type;\n            }\n        }\n        return 0;\n    };\n    var _lineBreakAtIndex = function (codePoints, classTypes, indicies, index, forbiddenBreaks) {\n        if (indicies[index] === 0) {\n            return BREAK_NOT_ALLOWED$1;\n        }\n        var currentIndex = index - 1;\n        if (Array.isArray(forbiddenBreaks) && forbiddenBreaks[currentIndex] === true) {\n            return BREAK_NOT_ALLOWED$1;\n        }\n        var beforeIndex = currentIndex - 1;\n        var afterIndex = currentIndex + 1;\n        var current = classTypes[currentIndex];\n        // LB4 Always break after hard line breaks.\n        // LB5 Treat CR followed by LF, as well as CR, LF, and NL as hard line breaks.\n        var before = beforeIndex >= 0 ? classTypes[beforeIndex] : 0;\n        var next = classTypes[afterIndex];\n        if (current === CR$1 && next === LF$1) {\n            return BREAK_NOT_ALLOWED$1;\n        }\n        if (HARD_LINE_BREAKS.indexOf(current) !== -1) {\n            return BREAK_MANDATORY;\n        }\n        // LB6 Do not break before hard line breaks.\n        if (HARD_LINE_BREAKS.indexOf(next) !== -1) {\n            return BREAK_NOT_ALLOWED$1;\n        }\n        // LB7 Do not break before spaces or zero width space.\n        if (SPACE$1.indexOf(next) !== -1) {\n            return BREAK_NOT_ALLOWED$1;\n        }\n        // LB8 Break before any character following a zero-width space, even if one or more spaces intervene.\n        if (previousNonSpaceClassType(currentIndex, classTypes) === ZW) {\n            return BREAK_ALLOWED$1;\n        }\n        // LB8a Do not break after a zero width joiner.\n        if (UnicodeTrie$1.get(codePoints[currentIndex]) === ZWJ$1) {\n            return BREAK_NOT_ALLOWED$1;\n        }\n        // zwj emojis\n        if ((current === EB || current === EM) && UnicodeTrie$1.get(codePoints[afterIndex]) === ZWJ$1) {\n            return BREAK_NOT_ALLOWED$1;\n        }\n        // LB11 Do not break before or after Word joiner and related characters.\n        if (current === WJ || next === WJ) {\n            return BREAK_NOT_ALLOWED$1;\n        }\n        // LB12 Do not break after NBSP and related characters.\n        if (current === GL) {\n            return BREAK_NOT_ALLOWED$1;\n        }\n        // LB12a Do not break before NBSP and related characters, except after spaces and hyphens.\n        if ([SP, BA, HY].indexOf(current) === -1 && next === GL) {\n            return BREAK_NOT_ALLOWED$1;\n        }\n        // LB13 Do not break before ‘]’ or ‘!’ or ‘;’ or ‘/’, even after spaces.\n        if ([CL, CP, EX, IS, SY].indexOf(next) !== -1) {\n            return BREAK_NOT_ALLOWED$1;\n        }\n        // LB14 Do not break after ‘[’, even after spaces.\n        if (previousNonSpaceClassType(currentIndex, classTypes) === OP) {\n            return BREAK_NOT_ALLOWED$1;\n        }\n        // LB15 Do not break within ‘”[’, even with intervening spaces.\n        if (isAdjacentWithSpaceIgnored(QU, OP, currentIndex, classTypes)) {\n            return BREAK_NOT_ALLOWED$1;\n        }\n        // LB16 Do not break between closing punctuation and a nonstarter (lb=NS), even with intervening spaces.\n        if (isAdjacentWithSpaceIgnored([CL, CP], NS, currentIndex, classTypes)) {\n            return BREAK_NOT_ALLOWED$1;\n        }\n        // LB17 Do not break within ‘——’, even with intervening spaces.\n        if (isAdjacentWithSpaceIgnored(B2, B2, currentIndex, classTypes)) {\n            return BREAK_NOT_ALLOWED$1;\n        }\n        // LB18 Break after spaces.\n        if (current === SP) {\n            return BREAK_ALLOWED$1;\n        }\n        // LB19 Do not break before or after quotation marks, such as ‘ ” ’.\n        if (current === QU || next === QU) {\n            return BREAK_NOT_ALLOWED$1;\n        }\n        // LB20 Break before and after unresolved CB.\n        if (next === CB || current === CB) {\n            return BREAK_ALLOWED$1;\n        }\n        // LB21 Do not break before hyphen-minus, other hyphens, fixed-width spaces, small kana, and other non-starters, or after acute accents.\n        if ([BA, HY, NS].indexOf(next) !== -1 || current === BB) {\n            return BREAK_NOT_ALLOWED$1;\n        }\n        // LB21a Don't break after Hebrew + Hyphen.\n        if (before === HL && HYPHEN.indexOf(current) !== -1) {\n            return BREAK_NOT_ALLOWED$1;\n        }\n        // LB21b Don’t break between Solidus and Hebrew letters.\n        if (current === SY && next === HL) {\n            return BREAK_NOT_ALLOWED$1;\n        }\n        // LB22 Do not break before ellipsis.\n        if (next === IN) {\n            return BREAK_NOT_ALLOWED$1;\n        }\n        // LB23 Do not break between digits and letters.\n        if ((ALPHABETICS.indexOf(next) !== -1 && current === NU) || (ALPHABETICS.indexOf(current) !== -1 && next === NU)) {\n            return BREAK_NOT_ALLOWED$1;\n        }\n        // LB23a Do not break between numeric prefixes and ideographs, or between ideographs and numeric postfixes.\n        if ((current === PR && [ID, EB, EM].indexOf(next) !== -1) ||\n            ([ID, EB, EM].indexOf(current) !== -1 && next === PO)) {\n            return BREAK_NOT_ALLOWED$1;\n        }\n        // LB24 Do not break between numeric prefix/postfix and letters, or between letters and prefix/postfix.\n        if ((ALPHABETICS.indexOf(current) !== -1 && PREFIX_POSTFIX.indexOf(next) !== -1) ||\n            (PREFIX_POSTFIX.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1)) {\n            return BREAK_NOT_ALLOWED$1;\n        }\n        // LB25 Do not break between the following pairs of classes relevant to numbers:\n        if (\n        // (PR | PO) × ( OP | HY )? NU\n        ([PR, PO].indexOf(current) !== -1 &&\n            (next === NU || ([OP, HY].indexOf(next) !== -1 && classTypes[afterIndex + 1] === NU))) ||\n            // ( OP | HY ) × NU\n            ([OP, HY].indexOf(current) !== -1 && next === NU) ||\n            // NU ×\t(NU | SY | IS)\n            (current === NU && [NU, SY, IS].indexOf(next) !== -1)) {\n            return BREAK_NOT_ALLOWED$1;\n        }\n        // NU (NU | SY | IS)* × (NU | SY | IS | CL | CP)\n        if ([NU, SY, IS, CL, CP].indexOf(next) !== -1) {\n            var prevIndex = currentIndex;\n            while (prevIndex >= 0) {\n                var type = classTypes[prevIndex];\n                if (type === NU) {\n                    return BREAK_NOT_ALLOWED$1;\n                }\n                else if ([SY, IS].indexOf(type) !== -1) {\n                    prevIndex--;\n                }\n                else {\n                    break;\n                }\n            }\n        }\n        // NU (NU | SY | IS)* (CL | CP)? × (PO | PR))\n        if ([PR, PO].indexOf(next) !== -1) {\n            var prevIndex = [CL, CP].indexOf(current) !== -1 ? beforeIndex : currentIndex;\n            while (prevIndex >= 0) {\n                var type = classTypes[prevIndex];\n                if (type === NU) {\n                    return BREAK_NOT_ALLOWED$1;\n                }\n                else if ([SY, IS].indexOf(type) !== -1) {\n                    prevIndex--;\n                }\n                else {\n                    break;\n                }\n            }\n        }\n        // LB26 Do not break a Korean syllable.\n        if ((JL === current && [JL, JV, H2, H3].indexOf(next) !== -1) ||\n            ([JV, H2].indexOf(current) !== -1 && [JV, JT].indexOf(next) !== -1) ||\n            ([JT, H3].indexOf(current) !== -1 && next === JT)) {\n            return BREAK_NOT_ALLOWED$1;\n        }\n        // LB27 Treat a Korean Syllable Block the same as ID.\n        if ((KOREAN_SYLLABLE_BLOCK.indexOf(current) !== -1 && [IN, PO].indexOf(next) !== -1) ||\n            (KOREAN_SYLLABLE_BLOCK.indexOf(next) !== -1 && current === PR)) {\n            return BREAK_NOT_ALLOWED$1;\n        }\n        // LB28 Do not break between alphabetics (“at”).\n        if (ALPHABETICS.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1) {\n            return BREAK_NOT_ALLOWED$1;\n        }\n        // LB29 Do not break between numeric punctuation and alphabetics (“e.g.”).\n        if (current === IS && ALPHABETICS.indexOf(next) !== -1) {\n            return BREAK_NOT_ALLOWED$1;\n        }\n        // LB30 Do not break between letters, numbers, or ordinary symbols and opening or closing parentheses.\n        if ((ALPHABETICS.concat(NU).indexOf(current) !== -1 &&\n            next === OP &&\n            ea_OP.indexOf(codePoints[afterIndex]) === -1) ||\n            (ALPHABETICS.concat(NU).indexOf(next) !== -1 && current === CP)) {\n            return BREAK_NOT_ALLOWED$1;\n        }\n        // LB30a Break between two regional indicator symbols if and only if there are an even number of regional\n        // indicators preceding the position of the break.\n        if (current === RI$1 && next === RI$1) {\n            var i = indicies[currentIndex];\n            var count = 1;\n            while (i > 0) {\n                i--;\n                if (classTypes[i] === RI$1) {\n                    count++;\n                }\n                else {\n                    break;\n                }\n            }\n            if (count % 2 !== 0) {\n                return BREAK_NOT_ALLOWED$1;\n            }\n        }\n        // LB30b Do not break between an emoji base and an emoji modifier.\n        if (current === EB && next === EM) {\n            return BREAK_NOT_ALLOWED$1;\n        }\n        return BREAK_ALLOWED$1;\n    };\n    var cssFormattedClasses = function (codePoints, options) {\n        if (!options) {\n            options = { lineBreak: 'normal', wordBreak: 'normal' };\n        }\n        var _a = codePointsToCharacterClasses(codePoints, options.lineBreak), indicies = _a[0], classTypes = _a[1], isLetterNumber = _a[2];\n        if (options.wordBreak === 'break-all' || options.wordBreak === 'break-word') {\n            classTypes = classTypes.map(function (type) { return ([NU, AL, SA].indexOf(type) !== -1 ? ID : type); });\n        }\n        var forbiddenBreakpoints = options.wordBreak === 'keep-all'\n            ? isLetterNumber.map(function (letterNumber, i) {\n                return letterNumber && codePoints[i] >= 0x4e00 && codePoints[i] <= 0x9fff;\n            })\n            : undefined;\n        return [indicies, classTypes, forbiddenBreakpoints];\n    };\n    var Break = /** @class */ (function () {\n        function Break(codePoints, lineBreak, start, end) {\n            this.codePoints = codePoints;\n            this.required = lineBreak === BREAK_MANDATORY;\n            this.start = start;\n            this.end = end;\n        }\n        Break.prototype.slice = function () {\n            return fromCodePoint$1.apply(void 0, this.codePoints.slice(this.start, this.end));\n        };\n        return Break;\n    }());\n    var LineBreaker = function (str, options) {\n        var codePoints = toCodePoints$1(str);\n        var _a = cssFormattedClasses(codePoints, options), indicies = _a[0], classTypes = _a[1], forbiddenBreakpoints = _a[2];\n        var length = codePoints.length;\n        var lastEnd = 0;\n        var nextIndex = 0;\n        return {\n            next: function () {\n                if (nextIndex >= length) {\n                    return { done: true, value: null };\n                }\n                var lineBreak = BREAK_NOT_ALLOWED$1;\n                while (nextIndex < length &&\n                    (lineBreak = _lineBreakAtIndex(codePoints, classTypes, indicies, ++nextIndex, forbiddenBreakpoints)) ===\n                        BREAK_NOT_ALLOWED$1) { }\n                if (lineBreak !== BREAK_NOT_ALLOWED$1 || nextIndex === length) {\n                    var value = new Break(codePoints, lineBreak, lastEnd, nextIndex);\n                    lastEnd = nextIndex;\n                    return { value: value, done: false };\n                }\n                return { done: true, value: null };\n            },\n        };\n    };\n\n    // https://www.w3.org/TR/css-syntax-3\n    var FLAG_UNRESTRICTED = 1 << 0;\n    var FLAG_ID = 1 << 1;\n    var FLAG_INTEGER = 1 << 2;\n    var FLAG_NUMBER = 1 << 3;\n    var LINE_FEED = 0x000a;\n    var SOLIDUS = 0x002f;\n    var REVERSE_SOLIDUS = 0x005c;\n    var CHARACTER_TABULATION = 0x0009;\n    var SPACE = 0x0020;\n    var QUOTATION_MARK = 0x0022;\n    var EQUALS_SIGN = 0x003d;\n    var NUMBER_SIGN = 0x0023;\n    var DOLLAR_SIGN = 0x0024;\n    var PERCENTAGE_SIGN = 0x0025;\n    var APOSTROPHE = 0x0027;\n    var LEFT_PARENTHESIS = 0x0028;\n    var RIGHT_PARENTHESIS = 0x0029;\n    var LOW_LINE = 0x005f;\n    var HYPHEN_MINUS = 0x002d;\n    var EXCLAMATION_MARK = 0x0021;\n    var LESS_THAN_SIGN = 0x003c;\n    var GREATER_THAN_SIGN = 0x003e;\n    var COMMERCIAL_AT = 0x0040;\n    var LEFT_SQUARE_BRACKET = 0x005b;\n    var RIGHT_SQUARE_BRACKET = 0x005d;\n    var CIRCUMFLEX_ACCENT = 0x003d;\n    var LEFT_CURLY_BRACKET = 0x007b;\n    var QUESTION_MARK = 0x003f;\n    var RIGHT_CURLY_BRACKET = 0x007d;\n    var VERTICAL_LINE = 0x007c;\n    var TILDE = 0x007e;\n    var CONTROL = 0x0080;\n    var REPLACEMENT_CHARACTER = 0xfffd;\n    var ASTERISK = 0x002a;\n    var PLUS_SIGN = 0x002b;\n    var COMMA = 0x002c;\n    var COLON = 0x003a;\n    var SEMICOLON = 0x003b;\n    var FULL_STOP = 0x002e;\n    var NULL = 0x0000;\n    var BACKSPACE = 0x0008;\n    var LINE_TABULATION = 0x000b;\n    var SHIFT_OUT = 0x000e;\n    var INFORMATION_SEPARATOR_ONE = 0x001f;\n    var DELETE = 0x007f;\n    var EOF = -1;\n    var ZERO = 0x0030;\n    var a = 0x0061;\n    var e = 0x0065;\n    var f = 0x0066;\n    var u = 0x0075;\n    var z = 0x007a;\n    var A = 0x0041;\n    var E = 0x0045;\n    var F = 0x0046;\n    var U = 0x0055;\n    var Z = 0x005a;\n    var isDigit = function (codePoint) { return codePoint >= ZERO && codePoint <= 0x0039; };\n    var isSurrogateCodePoint = function (codePoint) { return codePoint >= 0xd800 && codePoint <= 0xdfff; };\n    var isHex = function (codePoint) {\n        return isDigit(codePoint) || (codePoint >= A && codePoint <= F) || (codePoint >= a && codePoint <= f);\n    };\n    var isLowerCaseLetter = function (codePoint) { return codePoint >= a && codePoint <= z; };\n    var isUpperCaseLetter = function (codePoint) { return codePoint >= A && codePoint <= Z; };\n    var isLetter = function (codePoint) { return isLowerCaseLetter(codePoint) || isUpperCaseLetter(codePoint); };\n    var isNonASCIICodePoint = function (codePoint) { return codePoint >= CONTROL; };\n    var isWhiteSpace = function (codePoint) {\n        return codePoint === LINE_FEED || codePoint === CHARACTER_TABULATION || codePoint === SPACE;\n    };\n    var isNameStartCodePoint = function (codePoint) {\n        return isLetter(codePoint) || isNonASCIICodePoint(codePoint) || codePoint === LOW_LINE;\n    };\n    var isNameCodePoint = function (codePoint) {\n        return isNameStartCodePoint(codePoint) || isDigit(codePoint) || codePoint === HYPHEN_MINUS;\n    };\n    var isNonPrintableCodePoint = function (codePoint) {\n        return ((codePoint >= NULL && codePoint <= BACKSPACE) ||\n            codePoint === LINE_TABULATION ||\n            (codePoint >= SHIFT_OUT && codePoint <= INFORMATION_SEPARATOR_ONE) ||\n            codePoint === DELETE);\n    };\n    var isValidEscape = function (c1, c2) {\n        if (c1 !== REVERSE_SOLIDUS) {\n            return false;\n        }\n        return c2 !== LINE_FEED;\n    };\n    var isIdentifierStart = function (c1, c2, c3) {\n        if (c1 === HYPHEN_MINUS) {\n            return isNameStartCodePoint(c2) || isValidEscape(c2, c3);\n        }\n        else if (isNameStartCodePoint(c1)) {\n            return true;\n        }\n        else if (c1 === REVERSE_SOLIDUS && isValidEscape(c1, c2)) {\n            return true;\n        }\n        return false;\n    };\n    var isNumberStart = function (c1, c2, c3) {\n        if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {\n            if (isDigit(c2)) {\n                return true;\n            }\n            return c2 === FULL_STOP && isDigit(c3);\n        }\n        if (c1 === FULL_STOP) {\n            return isDigit(c2);\n        }\n        return isDigit(c1);\n    };\n    var stringToNumber = function (codePoints) {\n        var c = 0;\n        var sign = 1;\n        if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {\n            if (codePoints[c] === HYPHEN_MINUS) {\n                sign = -1;\n            }\n            c++;\n        }\n        var integers = [];\n        while (isDigit(codePoints[c])) {\n            integers.push(codePoints[c++]);\n        }\n        var int = integers.length ? parseInt(fromCodePoint$1.apply(void 0, integers), 10) : 0;\n        if (codePoints[c] === FULL_STOP) {\n            c++;\n        }\n        var fraction = [];\n        while (isDigit(codePoints[c])) {\n            fraction.push(codePoints[c++]);\n        }\n        var fracd = fraction.length;\n        var frac = fracd ? parseInt(fromCodePoint$1.apply(void 0, fraction), 10) : 0;\n        if (codePoints[c] === E || codePoints[c] === e) {\n            c++;\n        }\n        var expsign = 1;\n        if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {\n            if (codePoints[c] === HYPHEN_MINUS) {\n                expsign = -1;\n            }\n            c++;\n        }\n        var exponent = [];\n        while (isDigit(codePoints[c])) {\n            exponent.push(codePoints[c++]);\n        }\n        var exp = exponent.length ? parseInt(fromCodePoint$1.apply(void 0, exponent), 10) : 0;\n        return sign * (int + frac * Math.pow(10, -fracd)) * Math.pow(10, expsign * exp);\n    };\n    var LEFT_PARENTHESIS_TOKEN = {\n        type: 2 /* LEFT_PARENTHESIS_TOKEN */\n    };\n    var RIGHT_PARENTHESIS_TOKEN = {\n        type: 3 /* RIGHT_PARENTHESIS_TOKEN */\n    };\n    var COMMA_TOKEN = { type: 4 /* COMMA_TOKEN */ };\n    var SUFFIX_MATCH_TOKEN = { type: 13 /* SUFFIX_MATCH_TOKEN */ };\n    var PREFIX_MATCH_TOKEN = { type: 8 /* PREFIX_MATCH_TOKEN */ };\n    var COLUMN_TOKEN = { type: 21 /* COLUMN_TOKEN */ };\n    var DASH_MATCH_TOKEN = { type: 9 /* DASH_MATCH_TOKEN */ };\n    var INCLUDE_MATCH_TOKEN = { type: 10 /* INCLUDE_MATCH_TOKEN */ };\n    var LEFT_CURLY_BRACKET_TOKEN = {\n        type: 11 /* LEFT_CURLY_BRACKET_TOKEN */\n    };\n    var RIGHT_CURLY_BRACKET_TOKEN = {\n        type: 12 /* RIGHT_CURLY_BRACKET_TOKEN */\n    };\n    var SUBSTRING_MATCH_TOKEN = { type: 14 /* SUBSTRING_MATCH_TOKEN */ };\n    var BAD_URL_TOKEN = { type: 23 /* BAD_URL_TOKEN */ };\n    var BAD_STRING_TOKEN = { type: 1 /* BAD_STRING_TOKEN */ };\n    var CDO_TOKEN = { type: 25 /* CDO_TOKEN */ };\n    var CDC_TOKEN = { type: 24 /* CDC_TOKEN */ };\n    var COLON_TOKEN = { type: 26 /* COLON_TOKEN */ };\n    var SEMICOLON_TOKEN = { type: 27 /* SEMICOLON_TOKEN */ };\n    var LEFT_SQUARE_BRACKET_TOKEN = {\n        type: 28 /* LEFT_SQUARE_BRACKET_TOKEN */\n    };\n    var RIGHT_SQUARE_BRACKET_TOKEN = {\n        type: 29 /* RIGHT_SQUARE_BRACKET_TOKEN */\n    };\n    var WHITESPACE_TOKEN = { type: 31 /* WHITESPACE_TOKEN */ };\n    var EOF_TOKEN = { type: 32 /* EOF_TOKEN */ };\n    var Tokenizer = /** @class */ (function () {\n        function Tokenizer() {\n            this._value = [];\n        }\n        Tokenizer.prototype.write = function (chunk) {\n            this._value = this._value.concat(toCodePoints$1(chunk));\n        };\n        Tokenizer.prototype.read = function () {\n            var tokens = [];\n            var token = this.consumeToken();\n            while (token !== EOF_TOKEN) {\n                tokens.push(token);\n                token = this.consumeToken();\n            }\n            return tokens;\n        };\n        Tokenizer.prototype.consumeToken = function () {\n            var codePoint = this.consumeCodePoint();\n            switch (codePoint) {\n                case QUOTATION_MARK:\n                    return this.consumeStringToken(QUOTATION_MARK);\n                case NUMBER_SIGN:\n                    var c1 = this.peekCodePoint(0);\n                    var c2 = this.peekCodePoint(1);\n                    var c3 = this.peekCodePoint(2);\n                    if (isNameCodePoint(c1) || isValidEscape(c2, c3)) {\n                        var flags = isIdentifierStart(c1, c2, c3) ? FLAG_ID : FLAG_UNRESTRICTED;\n                        var value = this.consumeName();\n                        return { type: 5 /* HASH_TOKEN */, value: value, flags: flags };\n                    }\n                    break;\n                case DOLLAR_SIGN:\n                    if (this.peekCodePoint(0) === EQUALS_SIGN) {\n                        this.consumeCodePoint();\n                        return SUFFIX_MATCH_TOKEN;\n                    }\n                    break;\n                case APOSTROPHE:\n                    return this.consumeStringToken(APOSTROPHE);\n                case LEFT_PARENTHESIS:\n                    return LEFT_PARENTHESIS_TOKEN;\n                case RIGHT_PARENTHESIS:\n                    return RIGHT_PARENTHESIS_TOKEN;\n                case ASTERISK:\n                    if (this.peekCodePoint(0) === EQUALS_SIGN) {\n                        this.consumeCodePoint();\n                        return SUBSTRING_MATCH_TOKEN;\n                    }\n                    break;\n                case PLUS_SIGN:\n                    if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {\n                        this.reconsumeCodePoint(codePoint);\n                        return this.consumeNumericToken();\n                    }\n                    break;\n                case COMMA:\n                    return COMMA_TOKEN;\n                case HYPHEN_MINUS:\n                    var e1 = codePoint;\n                    var e2 = this.peekCodePoint(0);\n                    var e3 = this.peekCodePoint(1);\n                    if (isNumberStart(e1, e2, e3)) {\n                        this.reconsumeCodePoint(codePoint);\n                        return this.consumeNumericToken();\n                    }\n                    if (isIdentifierStart(e1, e2, e3)) {\n                        this.reconsumeCodePoint(codePoint);\n                        return this.consumeIdentLikeToken();\n                    }\n                    if (e2 === HYPHEN_MINUS && e3 === GREATER_THAN_SIGN) {\n                        this.consumeCodePoint();\n                        this.consumeCodePoint();\n                        return CDC_TOKEN;\n                    }\n                    break;\n                case FULL_STOP:\n                    if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {\n                        this.reconsumeCodePoint(codePoint);\n                        return this.consumeNumericToken();\n                    }\n                    break;\n                case SOLIDUS:\n                    if (this.peekCodePoint(0) === ASTERISK) {\n                        this.consumeCodePoint();\n                        while (true) {\n                            var c = this.consumeCodePoint();\n                            if (c === ASTERISK) {\n                                c = this.consumeCodePoint();\n                                if (c === SOLIDUS) {\n                                    return this.consumeToken();\n                                }\n                            }\n                            if (c === EOF) {\n                                return this.consumeToken();\n                            }\n                        }\n                    }\n                    break;\n                case COLON:\n                    return COLON_TOKEN;\n                case SEMICOLON:\n                    return SEMICOLON_TOKEN;\n                case LESS_THAN_SIGN:\n                    if (this.peekCodePoint(0) === EXCLAMATION_MARK &&\n                        this.peekCodePoint(1) === HYPHEN_MINUS &&\n                        this.peekCodePoint(2) === HYPHEN_MINUS) {\n                        this.consumeCodePoint();\n                        this.consumeCodePoint();\n                        return CDO_TOKEN;\n                    }\n                    break;\n                case COMMERCIAL_AT:\n                    var a1 = this.peekCodePoint(0);\n                    var a2 = this.peekCodePoint(1);\n                    var a3 = this.peekCodePoint(2);\n                    if (isIdentifierStart(a1, a2, a3)) {\n                        var value = this.consumeName();\n                        return { type: 7 /* AT_KEYWORD_TOKEN */, value: value };\n                    }\n                    break;\n                case LEFT_SQUARE_BRACKET:\n                    return LEFT_SQUARE_BRACKET_TOKEN;\n                case REVERSE_SOLIDUS:\n                    if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n                        this.reconsumeCodePoint(codePoint);\n                        return this.consumeIdentLikeToken();\n                    }\n                    break;\n                case RIGHT_SQUARE_BRACKET:\n                    return RIGHT_SQUARE_BRACKET_TOKEN;\n                case CIRCUMFLEX_ACCENT:\n                    if (this.peekCodePoint(0) === EQUALS_SIGN) {\n                        this.consumeCodePoint();\n                        return PREFIX_MATCH_TOKEN;\n                    }\n                    break;\n                case LEFT_CURLY_BRACKET:\n                    return LEFT_CURLY_BRACKET_TOKEN;\n                case RIGHT_CURLY_BRACKET:\n                    return RIGHT_CURLY_BRACKET_TOKEN;\n                case u:\n                case U:\n                    var u1 = this.peekCodePoint(0);\n                    var u2 = this.peekCodePoint(1);\n                    if (u1 === PLUS_SIGN && (isHex(u2) || u2 === QUESTION_MARK)) {\n                        this.consumeCodePoint();\n                        this.consumeUnicodeRangeToken();\n                    }\n                    this.reconsumeCodePoint(codePoint);\n                    return this.consumeIdentLikeToken();\n                case VERTICAL_LINE:\n                    if (this.peekCodePoint(0) === EQUALS_SIGN) {\n                        this.consumeCodePoint();\n                        return DASH_MATCH_TOKEN;\n                    }\n                    if (this.peekCodePoint(0) === VERTICAL_LINE) {\n                        this.consumeCodePoint();\n                        return COLUMN_TOKEN;\n                    }\n                    break;\n                case TILDE:\n                    if (this.peekCodePoint(0) === EQUALS_SIGN) {\n                        this.consumeCodePoint();\n                        return INCLUDE_MATCH_TOKEN;\n                    }\n                    break;\n                case EOF:\n                    return EOF_TOKEN;\n            }\n            if (isWhiteSpace(codePoint)) {\n                this.consumeWhiteSpace();\n                return WHITESPACE_TOKEN;\n            }\n            if (isDigit(codePoint)) {\n                this.reconsumeCodePoint(codePoint);\n                return this.consumeNumericToken();\n            }\n            if (isNameStartCodePoint(codePoint)) {\n                this.reconsumeCodePoint(codePoint);\n                return this.consumeIdentLikeToken();\n            }\n            return { type: 6 /* DELIM_TOKEN */, value: fromCodePoint$1(codePoint) };\n        };\n        Tokenizer.prototype.consumeCodePoint = function () {\n            var value = this._value.shift();\n            return typeof value === 'undefined' ? -1 : value;\n        };\n        Tokenizer.prototype.reconsumeCodePoint = function (codePoint) {\n            this._value.unshift(codePoint);\n        };\n        Tokenizer.prototype.peekCodePoint = function (delta) {\n            if (delta >= this._value.length) {\n                return -1;\n            }\n            return this._value[delta];\n        };\n        Tokenizer.prototype.consumeUnicodeRangeToken = function () {\n            var digits = [];\n            var codePoint = this.consumeCodePoint();\n            while (isHex(codePoint) && digits.length < 6) {\n                digits.push(codePoint);\n                codePoint = this.consumeCodePoint();\n            }\n            var questionMarks = false;\n            while (codePoint === QUESTION_MARK && digits.length < 6) {\n                digits.push(codePoint);\n                codePoint = this.consumeCodePoint();\n                questionMarks = true;\n            }\n            if (questionMarks) {\n                var start_1 = parseInt(fromCodePoint$1.apply(void 0, digits.map(function (digit) { return (digit === QUESTION_MARK ? ZERO : digit); })), 16);\n                var end = parseInt(fromCodePoint$1.apply(void 0, digits.map(function (digit) { return (digit === QUESTION_MARK ? F : digit); })), 16);\n                return { type: 30 /* UNICODE_RANGE_TOKEN */, start: start_1, end: end };\n            }\n            var start = parseInt(fromCodePoint$1.apply(void 0, digits), 16);\n            if (this.peekCodePoint(0) === HYPHEN_MINUS && isHex(this.peekCodePoint(1))) {\n                this.consumeCodePoint();\n                codePoint = this.consumeCodePoint();\n                var endDigits = [];\n                while (isHex(codePoint) && endDigits.length < 6) {\n                    endDigits.push(codePoint);\n                    codePoint = this.consumeCodePoint();\n                }\n                var end = parseInt(fromCodePoint$1.apply(void 0, endDigits), 16);\n                return { type: 30 /* UNICODE_RANGE_TOKEN */, start: start, end: end };\n            }\n            else {\n                return { type: 30 /* UNICODE_RANGE_TOKEN */, start: start, end: start };\n            }\n        };\n        Tokenizer.prototype.consumeIdentLikeToken = function () {\n            var value = this.consumeName();\n            if (value.toLowerCase() === 'url' && this.peekCodePoint(0) === LEFT_PARENTHESIS) {\n                this.consumeCodePoint();\n                return this.consumeUrlToken();\n            }\n            else if (this.peekCodePoint(0) === LEFT_PARENTHESIS) {\n                this.consumeCodePoint();\n                return { type: 19 /* FUNCTION_TOKEN */, value: value };\n            }\n            return { type: 20 /* IDENT_TOKEN */, value: value };\n        };\n        Tokenizer.prototype.consumeUrlToken = function () {\n            var value = [];\n            this.consumeWhiteSpace();\n            if (this.peekCodePoint(0) === EOF) {\n                return { type: 22 /* URL_TOKEN */, value: '' };\n            }\n            var next = this.peekCodePoint(0);\n            if (next === APOSTROPHE || next === QUOTATION_MARK) {\n                var stringToken = this.consumeStringToken(this.consumeCodePoint());\n                if (stringToken.type === 0 /* STRING_TOKEN */) {\n                    this.consumeWhiteSpace();\n                    if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {\n                        this.consumeCodePoint();\n                        return { type: 22 /* URL_TOKEN */, value: stringToken.value };\n                    }\n                }\n                this.consumeBadUrlRemnants();\n                return BAD_URL_TOKEN;\n            }\n            while (true) {\n                var codePoint = this.consumeCodePoint();\n                if (codePoint === EOF || codePoint === RIGHT_PARENTHESIS) {\n                    return { type: 22 /* URL_TOKEN */, value: fromCodePoint$1.apply(void 0, value) };\n                }\n                else if (isWhiteSpace(codePoint)) {\n                    this.consumeWhiteSpace();\n                    if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {\n                        this.consumeCodePoint();\n                        return { type: 22 /* URL_TOKEN */, value: fromCodePoint$1.apply(void 0, value) };\n                    }\n                    this.consumeBadUrlRemnants();\n                    return BAD_URL_TOKEN;\n                }\n                else if (codePoint === QUOTATION_MARK ||\n                    codePoint === APOSTROPHE ||\n                    codePoint === LEFT_PARENTHESIS ||\n                    isNonPrintableCodePoint(codePoint)) {\n                    this.consumeBadUrlRemnants();\n                    return BAD_URL_TOKEN;\n                }\n                else if (codePoint === REVERSE_SOLIDUS) {\n                    if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n                        value.push(this.consumeEscapedCodePoint());\n                    }\n                    else {\n                        this.consumeBadUrlRemnants();\n                        return BAD_URL_TOKEN;\n                    }\n                }\n                else {\n                    value.push(codePoint);\n                }\n            }\n        };\n        Tokenizer.prototype.consumeWhiteSpace = function () {\n            while (isWhiteSpace(this.peekCodePoint(0))) {\n                this.consumeCodePoint();\n            }\n        };\n        Tokenizer.prototype.consumeBadUrlRemnants = function () {\n            while (true) {\n                var codePoint = this.consumeCodePoint();\n                if (codePoint === RIGHT_PARENTHESIS || codePoint === EOF) {\n                    return;\n                }\n                if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n                    this.consumeEscapedCodePoint();\n                }\n            }\n        };\n        Tokenizer.prototype.consumeStringSlice = function (count) {\n            var SLICE_STACK_SIZE = 50000;\n            var value = '';\n            while (count > 0) {\n                var amount = Math.min(SLICE_STACK_SIZE, count);\n                value += fromCodePoint$1.apply(void 0, this._value.splice(0, amount));\n                count -= amount;\n            }\n            this._value.shift();\n            return value;\n        };\n        Tokenizer.prototype.consumeStringToken = function (endingCodePoint) {\n            var value = '';\n            var i = 0;\n            do {\n                var codePoint = this._value[i];\n                if (codePoint === EOF || codePoint === undefined || codePoint === endingCodePoint) {\n                    value += this.consumeStringSlice(i);\n                    return { type: 0 /* STRING_TOKEN */, value: value };\n                }\n                if (codePoint === LINE_FEED) {\n                    this._value.splice(0, i);\n                    return BAD_STRING_TOKEN;\n                }\n                if (codePoint === REVERSE_SOLIDUS) {\n                    var next = this._value[i + 1];\n                    if (next !== EOF && next !== undefined) {\n                        if (next === LINE_FEED) {\n                            value += this.consumeStringSlice(i);\n                            i = -1;\n                            this._value.shift();\n                        }\n                        else if (isValidEscape(codePoint, next)) {\n                            value += this.consumeStringSlice(i);\n                            value += fromCodePoint$1(this.consumeEscapedCodePoint());\n                            i = -1;\n                        }\n                    }\n                }\n                i++;\n            } while (true);\n        };\n        Tokenizer.prototype.consumeNumber = function () {\n            var repr = [];\n            var type = FLAG_INTEGER;\n            var c1 = this.peekCodePoint(0);\n            if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {\n                repr.push(this.consumeCodePoint());\n            }\n            while (isDigit(this.peekCodePoint(0))) {\n                repr.push(this.consumeCodePoint());\n            }\n            c1 = this.peekCodePoint(0);\n            var c2 = this.peekCodePoint(1);\n            if (c1 === FULL_STOP && isDigit(c2)) {\n                repr.push(this.consumeCodePoint(), this.consumeCodePoint());\n                type = FLAG_NUMBER;\n                while (isDigit(this.peekCodePoint(0))) {\n                    repr.push(this.consumeCodePoint());\n                }\n            }\n            c1 = this.peekCodePoint(0);\n            c2 = this.peekCodePoint(1);\n            var c3 = this.peekCodePoint(2);\n            if ((c1 === E || c1 === e) && (((c2 === PLUS_SIGN || c2 === HYPHEN_MINUS) && isDigit(c3)) || isDigit(c2))) {\n                repr.push(this.consumeCodePoint(), this.consumeCodePoint());\n                type = FLAG_NUMBER;\n                while (isDigit(this.peekCodePoint(0))) {\n                    repr.push(this.consumeCodePoint());\n                }\n            }\n            return [stringToNumber(repr), type];\n        };\n        Tokenizer.prototype.consumeNumericToken = function () {\n            var _a = this.consumeNumber(), number = _a[0], flags = _a[1];\n            var c1 = this.peekCodePoint(0);\n            var c2 = this.peekCodePoint(1);\n            var c3 = this.peekCodePoint(2);\n            if (isIdentifierStart(c1, c2, c3)) {\n                var unit = this.consumeName();\n                return { type: 15 /* DIMENSION_TOKEN */, number: number, flags: flags, unit: unit };\n            }\n            if (c1 === PERCENTAGE_SIGN) {\n                this.consumeCodePoint();\n                return { type: 16 /* PERCENTAGE_TOKEN */, number: number, flags: flags };\n            }\n            return { type: 17 /* NUMBER_TOKEN */, number: number, flags: flags };\n        };\n        Tokenizer.prototype.consumeEscapedCodePoint = function () {\n            var codePoint = this.consumeCodePoint();\n            if (isHex(codePoint)) {\n                var hex = fromCodePoint$1(codePoint);\n                while (isHex(this.peekCodePoint(0)) && hex.length < 6) {\n                    hex += fromCodePoint$1(this.consumeCodePoint());\n                }\n                if (isWhiteSpace(this.peekCodePoint(0))) {\n                    this.consumeCodePoint();\n                }\n                var hexCodePoint = parseInt(hex, 16);\n                if (hexCodePoint === 0 || isSurrogateCodePoint(hexCodePoint) || hexCodePoint > 0x10ffff) {\n                    return REPLACEMENT_CHARACTER;\n                }\n                return hexCodePoint;\n            }\n            if (codePoint === EOF) {\n                return REPLACEMENT_CHARACTER;\n            }\n            return codePoint;\n        };\n        Tokenizer.prototype.consumeName = function () {\n            var result = '';\n            while (true) {\n                var codePoint = this.consumeCodePoint();\n                if (isNameCodePoint(codePoint)) {\n                    result += fromCodePoint$1(codePoint);\n                }\n                else if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n                    result += fromCodePoint$1(this.consumeEscapedCodePoint());\n                }\n                else {\n                    this.reconsumeCodePoint(codePoint);\n                    return result;\n                }\n            }\n        };\n        return Tokenizer;\n    }());\n\n    var Parser = /** @class */ (function () {\n        function Parser(tokens) {\n            this._tokens = tokens;\n        }\n        Parser.create = function (value) {\n            var tokenizer = new Tokenizer();\n            tokenizer.write(value);\n            return new Parser(tokenizer.read());\n        };\n        Parser.parseValue = function (value) {\n            return Parser.create(value).parseComponentValue();\n        };\n        Parser.parseValues = function (value) {\n            return Parser.create(value).parseComponentValues();\n        };\n        Parser.prototype.parseComponentValue = function () {\n            var token = this.consumeToken();\n            while (token.type === 31 /* WHITESPACE_TOKEN */) {\n                token = this.consumeToken();\n            }\n            if (token.type === 32 /* EOF_TOKEN */) {\n                throw new SyntaxError(\"Error parsing CSS component value, unexpected EOF\");\n            }\n            this.reconsumeToken(token);\n            var value = this.consumeComponentValue();\n            do {\n                token = this.consumeToken();\n            } while (token.type === 31 /* WHITESPACE_TOKEN */);\n            if (token.type === 32 /* EOF_TOKEN */) {\n                return value;\n            }\n            throw new SyntaxError(\"Error parsing CSS component value, multiple values found when expecting only one\");\n        };\n        Parser.prototype.parseComponentValues = function () {\n            var values = [];\n            while (true) {\n                var value = this.consumeComponentValue();\n                if (value.type === 32 /* EOF_TOKEN */) {\n                    return values;\n                }\n                values.push(value);\n                values.push();\n            }\n        };\n        Parser.prototype.consumeComponentValue = function () {\n            var token = this.consumeToken();\n            switch (token.type) {\n                case 11 /* LEFT_CURLY_BRACKET_TOKEN */:\n                case 28 /* LEFT_SQUARE_BRACKET_TOKEN */:\n                case 2 /* LEFT_PARENTHESIS_TOKEN */:\n                    return this.consumeSimpleBlock(token.type);\n                case 19 /* FUNCTION_TOKEN */:\n                    return this.consumeFunction(token);\n            }\n            return token;\n        };\n        Parser.prototype.consumeSimpleBlock = function (type) {\n            var block = { type: type, values: [] };\n            var token = this.consumeToken();\n            while (true) {\n                if (token.type === 32 /* EOF_TOKEN */ || isEndingTokenFor(token, type)) {\n                    return block;\n                }\n                this.reconsumeToken(token);\n                block.values.push(this.consumeComponentValue());\n                token = this.consumeToken();\n            }\n        };\n        Parser.prototype.consumeFunction = function (functionToken) {\n            var cssFunction = {\n                name: functionToken.value,\n                values: [],\n                type: 18 /* FUNCTION */\n            };\n            while (true) {\n                var token = this.consumeToken();\n                if (token.type === 32 /* EOF_TOKEN */ || token.type === 3 /* RIGHT_PARENTHESIS_TOKEN */) {\n                    return cssFunction;\n                }\n                this.reconsumeToken(token);\n                cssFunction.values.push(this.consumeComponentValue());\n            }\n        };\n        Parser.prototype.consumeToken = function () {\n            var token = this._tokens.shift();\n            return typeof token === 'undefined' ? EOF_TOKEN : token;\n        };\n        Parser.prototype.reconsumeToken = function (token) {\n            this._tokens.unshift(token);\n        };\n        return Parser;\n    }());\n    var isDimensionToken = function (token) { return token.type === 15 /* DIMENSION_TOKEN */; };\n    var isNumberToken = function (token) { return token.type === 17 /* NUMBER_TOKEN */; };\n    var isIdentToken = function (token) { return token.type === 20 /* IDENT_TOKEN */; };\n    var isStringToken = function (token) { return token.type === 0 /* STRING_TOKEN */; };\n    var isIdentWithValue = function (token, value) {\n        return isIdentToken(token) && token.value === value;\n    };\n    var nonWhiteSpace = function (token) { return token.type !== 31 /* WHITESPACE_TOKEN */; };\n    var nonFunctionArgSeparator = function (token) {\n        return token.type !== 31 /* WHITESPACE_TOKEN */ && token.type !== 4 /* COMMA_TOKEN */;\n    };\n    var parseFunctionArgs = function (tokens) {\n        var args = [];\n        var arg = [];\n        tokens.forEach(function (token) {\n            if (token.type === 4 /* COMMA_TOKEN */) {\n                if (arg.length === 0) {\n                    throw new Error(\"Error parsing function args, zero tokens for arg\");\n                }\n                args.push(arg);\n                arg = [];\n                return;\n            }\n            if (token.type !== 31 /* WHITESPACE_TOKEN */) {\n                arg.push(token);\n            }\n        });\n        if (arg.length) {\n            args.push(arg);\n        }\n        return args;\n    };\n    var isEndingTokenFor = function (token, type) {\n        if (type === 11 /* LEFT_CURLY_BRACKET_TOKEN */ && token.type === 12 /* RIGHT_CURLY_BRACKET_TOKEN */) {\n            return true;\n        }\n        if (type === 28 /* LEFT_SQUARE_BRACKET_TOKEN */ && token.type === 29 /* RIGHT_SQUARE_BRACKET_TOKEN */) {\n            return true;\n        }\n        return type === 2 /* LEFT_PARENTHESIS_TOKEN */ && token.type === 3 /* RIGHT_PARENTHESIS_TOKEN */;\n    };\n\n    var isLength = function (token) {\n        return token.type === 17 /* NUMBER_TOKEN */ || token.type === 15 /* DIMENSION_TOKEN */;\n    };\n\n    var isLengthPercentage = function (token) {\n        return token.type === 16 /* PERCENTAGE_TOKEN */ || isLength(token);\n    };\n    var parseLengthPercentageTuple = function (tokens) {\n        return tokens.length > 1 ? [tokens[0], tokens[1]] : [tokens[0]];\n    };\n    var ZERO_LENGTH = {\n        type: 17 /* NUMBER_TOKEN */,\n        number: 0,\n        flags: FLAG_INTEGER\n    };\n    var FIFTY_PERCENT = {\n        type: 16 /* PERCENTAGE_TOKEN */,\n        number: 50,\n        flags: FLAG_INTEGER\n    };\n    var HUNDRED_PERCENT = {\n        type: 16 /* PERCENTAGE_TOKEN */,\n        number: 100,\n        flags: FLAG_INTEGER\n    };\n    var getAbsoluteValueForTuple = function (tuple, width, height) {\n        var x = tuple[0], y = tuple[1];\n        return [getAbsoluteValue(x, width), getAbsoluteValue(typeof y !== 'undefined' ? y : x, height)];\n    };\n    var getAbsoluteValue = function (token, parent) {\n        if (token.type === 16 /* PERCENTAGE_TOKEN */) {\n            return (token.number / 100) * parent;\n        }\n        if (isDimensionToken(token)) {\n            switch (token.unit) {\n                case 'rem':\n                case 'em':\n                    return 16 * token.number; // TODO use correct font-size\n                case 'px':\n                default:\n                    return token.number;\n            }\n        }\n        return token.number;\n    };\n\n    var DEG = 'deg';\n    var GRAD = 'grad';\n    var RAD = 'rad';\n    var TURN = 'turn';\n    var angle = {\n        name: 'angle',\n        parse: function (_context, value) {\n            if (value.type === 15 /* DIMENSION_TOKEN */) {\n                switch (value.unit) {\n                    case DEG:\n                        return (Math.PI * value.number) / 180;\n                    case GRAD:\n                        return (Math.PI / 200) * value.number;\n                    case RAD:\n                        return value.number;\n                    case TURN:\n                        return Math.PI * 2 * value.number;\n                }\n            }\n            throw new Error(\"Unsupported angle type\");\n        }\n    };\n    var isAngle = function (value) {\n        if (value.type === 15 /* DIMENSION_TOKEN */) {\n            if (value.unit === DEG || value.unit === GRAD || value.unit === RAD || value.unit === TURN) {\n                return true;\n            }\n        }\n        return false;\n    };\n    var parseNamedSide = function (tokens) {\n        var sideOrCorner = tokens\n            .filter(isIdentToken)\n            .map(function (ident) { return ident.value; })\n            .join(' ');\n        switch (sideOrCorner) {\n            case 'to bottom right':\n            case 'to right bottom':\n            case 'left top':\n            case 'top left':\n                return [ZERO_LENGTH, ZERO_LENGTH];\n            case 'to top':\n            case 'bottom':\n                return deg(0);\n            case 'to bottom left':\n            case 'to left bottom':\n            case 'right top':\n            case 'top right':\n                return [ZERO_LENGTH, HUNDRED_PERCENT];\n            case 'to right':\n            case 'left':\n                return deg(90);\n            case 'to top left':\n            case 'to left top':\n            case 'right bottom':\n            case 'bottom right':\n                return [HUNDRED_PERCENT, HUNDRED_PERCENT];\n            case 'to bottom':\n            case 'top':\n                return deg(180);\n            case 'to top right':\n            case 'to right top':\n            case 'left bottom':\n            case 'bottom left':\n                return [HUNDRED_PERCENT, ZERO_LENGTH];\n            case 'to left':\n            case 'right':\n                return deg(270);\n        }\n        return 0;\n    };\n    var deg = function (deg) { return (Math.PI * deg) / 180; };\n\n    var color$1 = {\n        name: 'color',\n        parse: function (context, value) {\n            if (value.type === 18 /* FUNCTION */) {\n                var colorFunction = SUPPORTED_COLOR_FUNCTIONS[value.name];\n                if (typeof colorFunction === 'undefined') {\n                    throw new Error(\"Attempting to parse an unsupported color function \\\"\" + value.name + \"\\\"\");\n                }\n                return colorFunction(context, value.values);\n            }\n            if (value.type === 5 /* HASH_TOKEN */) {\n                if (value.value.length === 3) {\n                    var r = value.value.substring(0, 1);\n                    var g = value.value.substring(1, 2);\n                    var b = value.value.substring(2, 3);\n                    return pack(parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), 1);\n                }\n                if (value.value.length === 4) {\n                    var r = value.value.substring(0, 1);\n                    var g = value.value.substring(1, 2);\n                    var b = value.value.substring(2, 3);\n                    var a = value.value.substring(3, 4);\n                    return pack(parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), parseInt(a + a, 16) / 255);\n                }\n                if (value.value.length === 6) {\n                    var r = value.value.substring(0, 2);\n                    var g = value.value.substring(2, 4);\n                    var b = value.value.substring(4, 6);\n                    return pack(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), 1);\n                }\n                if (value.value.length === 8) {\n                    var r = value.value.substring(0, 2);\n                    var g = value.value.substring(2, 4);\n                    var b = value.value.substring(4, 6);\n                    var a = value.value.substring(6, 8);\n                    return pack(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), parseInt(a, 16) / 255);\n                }\n            }\n            if (value.type === 20 /* IDENT_TOKEN */) {\n                var namedColor = COLORS[value.value.toUpperCase()];\n                if (typeof namedColor !== 'undefined') {\n                    return namedColor;\n                }\n            }\n            return COLORS.TRANSPARENT;\n        }\n    };\n    var isTransparent = function (color) { return (0xff & color) === 0; };\n    var asString = function (color) {\n        var alpha = 0xff & color;\n        var blue = 0xff & (color >> 8);\n        var green = 0xff & (color >> 16);\n        var red = 0xff & (color >> 24);\n        return alpha < 255 ? \"rgba(\" + red + \",\" + green + \",\" + blue + \",\" + alpha / 255 + \")\" : \"rgb(\" + red + \",\" + green + \",\" + blue + \")\";\n    };\n    var pack = function (r, g, b, a) {\n        return ((r << 24) | (g << 16) | (b << 8) | (Math.round(a * 255) << 0)) >>> 0;\n    };\n    var getTokenColorValue = function (token, i) {\n        if (token.type === 17 /* NUMBER_TOKEN */) {\n            return token.number;\n        }\n        if (token.type === 16 /* PERCENTAGE_TOKEN */) {\n            var max = i === 3 ? 1 : 255;\n            return i === 3 ? (token.number / 100) * max : Math.round((token.number / 100) * max);\n        }\n        return 0;\n    };\n    var rgb = function (_context, args) {\n        var tokens = args.filter(nonFunctionArgSeparator);\n        if (tokens.length === 3) {\n            var _a = tokens.map(getTokenColorValue), r = _a[0], g = _a[1], b = _a[2];\n            return pack(r, g, b, 1);\n        }\n        if (tokens.length === 4) {\n            var _b = tokens.map(getTokenColorValue), r = _b[0], g = _b[1], b = _b[2], a = _b[3];\n            return pack(r, g, b, a);\n        }\n        return 0;\n    };\n    function hue2rgb(t1, t2, hue) {\n        if (hue < 0) {\n            hue += 1;\n        }\n        if (hue >= 1) {\n            hue -= 1;\n        }\n        if (hue < 1 / 6) {\n            return (t2 - t1) * hue * 6 + t1;\n        }\n        else if (hue < 1 / 2) {\n            return t2;\n        }\n        else if (hue < 2 / 3) {\n            return (t2 - t1) * 6 * (2 / 3 - hue) + t1;\n        }\n        else {\n            return t1;\n        }\n    }\n    var hsl = function (context, args) {\n        var tokens = args.filter(nonFunctionArgSeparator);\n        var hue = tokens[0], saturation = tokens[1], lightness = tokens[2], alpha = tokens[3];\n        var h = (hue.type === 17 /* NUMBER_TOKEN */ ? deg(hue.number) : angle.parse(context, hue)) / (Math.PI * 2);\n        var s = isLengthPercentage(saturation) ? saturation.number / 100 : 0;\n        var l = isLengthPercentage(lightness) ? lightness.number / 100 : 0;\n        var a = typeof alpha !== 'undefined' && isLengthPercentage(alpha) ? getAbsoluteValue(alpha, 1) : 1;\n        if (s === 0) {\n            return pack(l * 255, l * 255, l * 255, 1);\n        }\n        var t2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n        var t1 = l * 2 - t2;\n        var r = hue2rgb(t1, t2, h + 1 / 3);\n        var g = hue2rgb(t1, t2, h);\n        var b = hue2rgb(t1, t2, h - 1 / 3);\n        return pack(r * 255, g * 255, b * 255, a);\n    };\n    var SUPPORTED_COLOR_FUNCTIONS = {\n        hsl: hsl,\n        hsla: hsl,\n        rgb: rgb,\n        rgba: rgb\n    };\n    var parseColor = function (context, value) {\n        return color$1.parse(context, Parser.create(value).parseComponentValue());\n    };\n    var COLORS = {\n        ALICEBLUE: 0xf0f8ffff,\n        ANTIQUEWHITE: 0xfaebd7ff,\n        AQUA: 0x00ffffff,\n        AQUAMARINE: 0x7fffd4ff,\n        AZURE: 0xf0ffffff,\n        BEIGE: 0xf5f5dcff,\n        BISQUE: 0xffe4c4ff,\n        BLACK: 0x000000ff,\n        BLANCHEDALMOND: 0xffebcdff,\n        BLUE: 0x0000ffff,\n        BLUEVIOLET: 0x8a2be2ff,\n        BROWN: 0xa52a2aff,\n        BURLYWOOD: 0xdeb887ff,\n        CADETBLUE: 0x5f9ea0ff,\n        CHARTREUSE: 0x7fff00ff,\n        CHOCOLATE: 0xd2691eff,\n        CORAL: 0xff7f50ff,\n        CORNFLOWERBLUE: 0x6495edff,\n        CORNSILK: 0xfff8dcff,\n        CRIMSON: 0xdc143cff,\n        CYAN: 0x00ffffff,\n        DARKBLUE: 0x00008bff,\n        DARKCYAN: 0x008b8bff,\n        DARKGOLDENROD: 0xb886bbff,\n        DARKGRAY: 0xa9a9a9ff,\n        DARKGREEN: 0x006400ff,\n        DARKGREY: 0xa9a9a9ff,\n        DARKKHAKI: 0xbdb76bff,\n        DARKMAGENTA: 0x8b008bff,\n        DARKOLIVEGREEN: 0x556b2fff,\n        DARKORANGE: 0xff8c00ff,\n        DARKORCHID: 0x9932ccff,\n        DARKRED: 0x8b0000ff,\n        DARKSALMON: 0xe9967aff,\n        DARKSEAGREEN: 0x8fbc8fff,\n        DARKSLATEBLUE: 0x483d8bff,\n        DARKSLATEGRAY: 0x2f4f4fff,\n        DARKSLATEGREY: 0x2f4f4fff,\n        DARKTURQUOISE: 0x00ced1ff,\n        DARKVIOLET: 0x9400d3ff,\n        DEEPPINK: 0xff1493ff,\n        DEEPSKYBLUE: 0x00bfffff,\n        DIMGRAY: 0x696969ff,\n        DIMGREY: 0x696969ff,\n        DODGERBLUE: 0x1e90ffff,\n        FIREBRICK: 0xb22222ff,\n        FLORALWHITE: 0xfffaf0ff,\n        FORESTGREEN: 0x228b22ff,\n        FUCHSIA: 0xff00ffff,\n        GAINSBORO: 0xdcdcdcff,\n        GHOSTWHITE: 0xf8f8ffff,\n        GOLD: 0xffd700ff,\n        GOLDENROD: 0xdaa520ff,\n        GRAY: 0x808080ff,\n        GREEN: 0x008000ff,\n        GREENYELLOW: 0xadff2fff,\n        GREY: 0x808080ff,\n        HONEYDEW: 0xf0fff0ff,\n        HOTPINK: 0xff69b4ff,\n        INDIANRED: 0xcd5c5cff,\n        INDIGO: 0x4b0082ff,\n        IVORY: 0xfffff0ff,\n        KHAKI: 0xf0e68cff,\n        LAVENDER: 0xe6e6faff,\n        LAVENDERBLUSH: 0xfff0f5ff,\n        LAWNGREEN: 0x7cfc00ff,\n        LEMONCHIFFON: 0xfffacdff,\n        LIGHTBLUE: 0xadd8e6ff,\n        LIGHTCORAL: 0xf08080ff,\n        LIGHTCYAN: 0xe0ffffff,\n        LIGHTGOLDENRODYELLOW: 0xfafad2ff,\n        LIGHTGRAY: 0xd3d3d3ff,\n        LIGHTGREEN: 0x90ee90ff,\n        LIGHTGREY: 0xd3d3d3ff,\n        LIGHTPINK: 0xffb6c1ff,\n        LIGHTSALMON: 0xffa07aff,\n        LIGHTSEAGREEN: 0x20b2aaff,\n        LIGHTSKYBLUE: 0x87cefaff,\n        LIGHTSLATEGRAY: 0x778899ff,\n        LIGHTSLATEGREY: 0x778899ff,\n        LIGHTSTEELBLUE: 0xb0c4deff,\n        LIGHTYELLOW: 0xffffe0ff,\n        LIME: 0x00ff00ff,\n        LIMEGREEN: 0x32cd32ff,\n        LINEN: 0xfaf0e6ff,\n        MAGENTA: 0xff00ffff,\n        MAROON: 0x800000ff,\n        MEDIUMAQUAMARINE: 0x66cdaaff,\n        MEDIUMBLUE: 0x0000cdff,\n        MEDIUMORCHID: 0xba55d3ff,\n        MEDIUMPURPLE: 0x9370dbff,\n        MEDIUMSEAGREEN: 0x3cb371ff,\n        MEDIUMSLATEBLUE: 0x7b68eeff,\n        MEDIUMSPRINGGREEN: 0x00fa9aff,\n        MEDIUMTURQUOISE: 0x48d1ccff,\n        MEDIUMVIOLETRED: 0xc71585ff,\n        MIDNIGHTBLUE: 0x191970ff,\n        MINTCREAM: 0xf5fffaff,\n        MISTYROSE: 0xffe4e1ff,\n        MOCCASIN: 0xffe4b5ff,\n        NAVAJOWHITE: 0xffdeadff,\n        NAVY: 0x000080ff,\n        OLDLACE: 0xfdf5e6ff,\n        OLIVE: 0x808000ff,\n        OLIVEDRAB: 0x6b8e23ff,\n        ORANGE: 0xffa500ff,\n        ORANGERED: 0xff4500ff,\n        ORCHID: 0xda70d6ff,\n        PALEGOLDENROD: 0xeee8aaff,\n        PALEGREEN: 0x98fb98ff,\n        PALETURQUOISE: 0xafeeeeff,\n        PALEVIOLETRED: 0xdb7093ff,\n        PAPAYAWHIP: 0xffefd5ff,\n        PEACHPUFF: 0xffdab9ff,\n        PERU: 0xcd853fff,\n        PINK: 0xffc0cbff,\n        PLUM: 0xdda0ddff,\n        POWDERBLUE: 0xb0e0e6ff,\n        PURPLE: 0x800080ff,\n        REBECCAPURPLE: 0x663399ff,\n        RED: 0xff0000ff,\n        ROSYBROWN: 0xbc8f8fff,\n        ROYALBLUE: 0x4169e1ff,\n        SADDLEBROWN: 0x8b4513ff,\n        SALMON: 0xfa8072ff,\n        SANDYBROWN: 0xf4a460ff,\n        SEAGREEN: 0x2e8b57ff,\n        SEASHELL: 0xfff5eeff,\n        SIENNA: 0xa0522dff,\n        SILVER: 0xc0c0c0ff,\n        SKYBLUE: 0x87ceebff,\n        SLATEBLUE: 0x6a5acdff,\n        SLATEGRAY: 0x708090ff,\n        SLATEGREY: 0x708090ff,\n        SNOW: 0xfffafaff,\n        SPRINGGREEN: 0x00ff7fff,\n        STEELBLUE: 0x4682b4ff,\n        TAN: 0xd2b48cff,\n        TEAL: 0x008080ff,\n        THISTLE: 0xd8bfd8ff,\n        TOMATO: 0xff6347ff,\n        TRANSPARENT: 0x00000000,\n        TURQUOISE: 0x40e0d0ff,\n        VIOLET: 0xee82eeff,\n        WHEAT: 0xf5deb3ff,\n        WHITE: 0xffffffff,\n        WHITESMOKE: 0xf5f5f5ff,\n        YELLOW: 0xffff00ff,\n        YELLOWGREEN: 0x9acd32ff\n    };\n\n    var backgroundClip = {\n        name: 'background-clip',\n        initialValue: 'border-box',\n        prefix: false,\n        type: 1 /* LIST */,\n        parse: function (_context, tokens) {\n            return tokens.map(function (token) {\n                if (isIdentToken(token)) {\n                    switch (token.value) {\n                        case 'padding-box':\n                            return 1 /* PADDING_BOX */;\n                        case 'content-box':\n                            return 2 /* CONTENT_BOX */;\n                    }\n                }\n                return 0 /* BORDER_BOX */;\n            });\n        }\n    };\n\n    var backgroundColor = {\n        name: \"background-color\",\n        initialValue: 'transparent',\n        prefix: false,\n        type: 3 /* TYPE_VALUE */,\n        format: 'color'\n    };\n\n    var parseColorStop = function (context, args) {\n        var color = color$1.parse(context, args[0]);\n        var stop = args[1];\n        return stop && isLengthPercentage(stop) ? { color: color, stop: stop } : { color: color, stop: null };\n    };\n    var processColorStops = function (stops, lineLength) {\n        var first = stops[0];\n        var last = stops[stops.length - 1];\n        if (first.stop === null) {\n            first.stop = ZERO_LENGTH;\n        }\n        if (last.stop === null) {\n            last.stop = HUNDRED_PERCENT;\n        }\n        var processStops = [];\n        var previous = 0;\n        for (var i = 0; i < stops.length; i++) {\n            var stop_1 = stops[i].stop;\n            if (stop_1 !== null) {\n                var absoluteValue = getAbsoluteValue(stop_1, lineLength);\n                if (absoluteValue > previous) {\n                    processStops.push(absoluteValue);\n                }\n                else {\n                    processStops.push(previous);\n                }\n                previous = absoluteValue;\n            }\n            else {\n                processStops.push(null);\n            }\n        }\n        var gapBegin = null;\n        for (var i = 0; i < processStops.length; i++) {\n            var stop_2 = processStops[i];\n            if (stop_2 === null) {\n                if (gapBegin === null) {\n                    gapBegin = i;\n                }\n            }\n            else if (gapBegin !== null) {\n                var gapLength = i - gapBegin;\n                var beforeGap = processStops[gapBegin - 1];\n                var gapValue = (stop_2 - beforeGap) / (gapLength + 1);\n                for (var g = 1; g <= gapLength; g++) {\n                    processStops[gapBegin + g - 1] = gapValue * g;\n                }\n                gapBegin = null;\n            }\n        }\n        return stops.map(function (_a, i) {\n            var color = _a.color;\n            return { color: color, stop: Math.max(Math.min(1, processStops[i] / lineLength), 0) };\n        });\n    };\n    var getAngleFromCorner = function (corner, width, height) {\n        var centerX = width / 2;\n        var centerY = height / 2;\n        var x = getAbsoluteValue(corner[0], width) - centerX;\n        var y = centerY - getAbsoluteValue(corner[1], height);\n        return (Math.atan2(y, x) + Math.PI * 2) % (Math.PI * 2);\n    };\n    var calculateGradientDirection = function (angle, width, height) {\n        var radian = typeof angle === 'number' ? angle : getAngleFromCorner(angle, width, height);\n        var lineLength = Math.abs(width * Math.sin(radian)) + Math.abs(height * Math.cos(radian));\n        var halfWidth = width / 2;\n        var halfHeight = height / 2;\n        var halfLineLength = lineLength / 2;\n        var yDiff = Math.sin(radian - Math.PI / 2) * halfLineLength;\n        var xDiff = Math.cos(radian - Math.PI / 2) * halfLineLength;\n        return [lineLength, halfWidth - xDiff, halfWidth + xDiff, halfHeight - yDiff, halfHeight + yDiff];\n    };\n    var distance = function (a, b) { return Math.sqrt(a * a + b * b); };\n    var findCorner = function (width, height, x, y, closest) {\n        var corners = [\n            [0, 0],\n            [0, height],\n            [width, 0],\n            [width, height]\n        ];\n        return corners.reduce(function (stat, corner) {\n            var cx = corner[0], cy = corner[1];\n            var d = distance(x - cx, y - cy);\n            if (closest ? d < stat.optimumDistance : d > stat.optimumDistance) {\n                return {\n                    optimumCorner: corner,\n                    optimumDistance: d\n                };\n            }\n            return stat;\n        }, {\n            optimumDistance: closest ? Infinity : -Infinity,\n            optimumCorner: null\n        }).optimumCorner;\n    };\n    var calculateRadius = function (gradient, x, y, width, height) {\n        var rx = 0;\n        var ry = 0;\n        switch (gradient.size) {\n            case 0 /* CLOSEST_SIDE */:\n                // The ending shape is sized so that that it exactly meets the side of the gradient box closest to the gradient’s center.\n                // If the shape is an ellipse, it exactly meets the closest side in each dimension.\n                if (gradient.shape === 0 /* CIRCLE */) {\n                    rx = ry = Math.min(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height));\n                }\n                else if (gradient.shape === 1 /* ELLIPSE */) {\n                    rx = Math.min(Math.abs(x), Math.abs(x - width));\n                    ry = Math.min(Math.abs(y), Math.abs(y - height));\n                }\n                break;\n            case 2 /* CLOSEST_CORNER */:\n                // The ending shape is sized so that that it passes through the corner of the gradient box closest to the gradient’s center.\n                // If the shape is an ellipse, the ending shape is given the same aspect-ratio it would have if closest-side were specified.\n                if (gradient.shape === 0 /* CIRCLE */) {\n                    rx = ry = Math.min(distance(x, y), distance(x, y - height), distance(x - width, y), distance(x - width, y - height));\n                }\n                else if (gradient.shape === 1 /* ELLIPSE */) {\n                    // Compute the ratio ry/rx (which is to be the same as for \"closest-side\")\n                    var c = Math.min(Math.abs(y), Math.abs(y - height)) / Math.min(Math.abs(x), Math.abs(x - width));\n                    var _a = findCorner(width, height, x, y, true), cx = _a[0], cy = _a[1];\n                    rx = distance(cx - x, (cy - y) / c);\n                    ry = c * rx;\n                }\n                break;\n            case 1 /* FARTHEST_SIDE */:\n                // Same as closest-side, except the ending shape is sized based on the farthest side(s)\n                if (gradient.shape === 0 /* CIRCLE */) {\n                    rx = ry = Math.max(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height));\n                }\n                else if (gradient.shape === 1 /* ELLIPSE */) {\n                    rx = Math.max(Math.abs(x), Math.abs(x - width));\n                    ry = Math.max(Math.abs(y), Math.abs(y - height));\n                }\n                break;\n            case 3 /* FARTHEST_CORNER */:\n                // Same as closest-corner, except the ending shape is sized based on the farthest corner.\n                // If the shape is an ellipse, the ending shape is given the same aspect ratio it would have if farthest-side were specified.\n                if (gradient.shape === 0 /* CIRCLE */) {\n                    rx = ry = Math.max(distance(x, y), distance(x, y - height), distance(x - width, y), distance(x - width, y - height));\n                }\n                else if (gradient.shape === 1 /* ELLIPSE */) {\n                    // Compute the ratio ry/rx (which is to be the same as for \"farthest-side\")\n                    var c = Math.max(Math.abs(y), Math.abs(y - height)) / Math.max(Math.abs(x), Math.abs(x - width));\n                    var _b = findCorner(width, height, x, y, false), cx = _b[0], cy = _b[1];\n                    rx = distance(cx - x, (cy - y) / c);\n                    ry = c * rx;\n                }\n                break;\n        }\n        if (Array.isArray(gradient.size)) {\n            rx = getAbsoluteValue(gradient.size[0], width);\n            ry = gradient.size.length === 2 ? getAbsoluteValue(gradient.size[1], height) : rx;\n        }\n        return [rx, ry];\n    };\n\n    var linearGradient = function (context, tokens) {\n        var angle$1 = deg(180);\n        var stops = [];\n        parseFunctionArgs(tokens).forEach(function (arg, i) {\n            if (i === 0) {\n                var firstToken = arg[0];\n                if (firstToken.type === 20 /* IDENT_TOKEN */ && firstToken.value === 'to') {\n                    angle$1 = parseNamedSide(arg);\n                    return;\n                }\n                else if (isAngle(firstToken)) {\n                    angle$1 = angle.parse(context, firstToken);\n                    return;\n                }\n            }\n            var colorStop = parseColorStop(context, arg);\n            stops.push(colorStop);\n        });\n        return { angle: angle$1, stops: stops, type: 1 /* LINEAR_GRADIENT */ };\n    };\n\n    var prefixLinearGradient = function (context, tokens) {\n        var angle$1 = deg(180);\n        var stops = [];\n        parseFunctionArgs(tokens).forEach(function (arg, i) {\n            if (i === 0) {\n                var firstToken = arg[0];\n                if (firstToken.type === 20 /* IDENT_TOKEN */ &&\n                    ['top', 'left', 'right', 'bottom'].indexOf(firstToken.value) !== -1) {\n                    angle$1 = parseNamedSide(arg);\n                    return;\n                }\n                else if (isAngle(firstToken)) {\n                    angle$1 = (angle.parse(context, firstToken) + deg(270)) % deg(360);\n                    return;\n                }\n            }\n            var colorStop = parseColorStop(context, arg);\n            stops.push(colorStop);\n        });\n        return {\n            angle: angle$1,\n            stops: stops,\n            type: 1 /* LINEAR_GRADIENT */\n        };\n    };\n\n    var webkitGradient = function (context, tokens) {\n        var angle = deg(180);\n        var stops = [];\n        var type = 1 /* LINEAR_GRADIENT */;\n        var shape = 0 /* CIRCLE */;\n        var size = 3 /* FARTHEST_CORNER */;\n        var position = [];\n        parseFunctionArgs(tokens).forEach(function (arg, i) {\n            var firstToken = arg[0];\n            if (i === 0) {\n                if (isIdentToken(firstToken) && firstToken.value === 'linear') {\n                    type = 1 /* LINEAR_GRADIENT */;\n                    return;\n                }\n                else if (isIdentToken(firstToken) && firstToken.value === 'radial') {\n                    type = 2 /* RADIAL_GRADIENT */;\n                    return;\n                }\n            }\n            if (firstToken.type === 18 /* FUNCTION */) {\n                if (firstToken.name === 'from') {\n                    var color = color$1.parse(context, firstToken.values[0]);\n                    stops.push({ stop: ZERO_LENGTH, color: color });\n                }\n                else if (firstToken.name === 'to') {\n                    var color = color$1.parse(context, firstToken.values[0]);\n                    stops.push({ stop: HUNDRED_PERCENT, color: color });\n                }\n                else if (firstToken.name === 'color-stop') {\n                    var values = firstToken.values.filter(nonFunctionArgSeparator);\n                    if (values.length === 2) {\n                        var color = color$1.parse(context, values[1]);\n                        var stop_1 = values[0];\n                        if (isNumberToken(stop_1)) {\n                            stops.push({\n                                stop: { type: 16 /* PERCENTAGE_TOKEN */, number: stop_1.number * 100, flags: stop_1.flags },\n                                color: color\n                            });\n                        }\n                    }\n                }\n            }\n        });\n        return type === 1 /* LINEAR_GRADIENT */\n            ? {\n                angle: (angle + deg(180)) % deg(360),\n                stops: stops,\n                type: type\n            }\n            : { size: size, shape: shape, stops: stops, position: position, type: type };\n    };\n\n    var CLOSEST_SIDE = 'closest-side';\n    var FARTHEST_SIDE = 'farthest-side';\n    var CLOSEST_CORNER = 'closest-corner';\n    var FARTHEST_CORNER = 'farthest-corner';\n    var CIRCLE = 'circle';\n    var ELLIPSE = 'ellipse';\n    var COVER = 'cover';\n    var CONTAIN = 'contain';\n    var radialGradient = function (context, tokens) {\n        var shape = 0 /* CIRCLE */;\n        var size = 3 /* FARTHEST_CORNER */;\n        var stops = [];\n        var position = [];\n        parseFunctionArgs(tokens).forEach(function (arg, i) {\n            var isColorStop = true;\n            if (i === 0) {\n                var isAtPosition_1 = false;\n                isColorStop = arg.reduce(function (acc, token) {\n                    if (isAtPosition_1) {\n                        if (isIdentToken(token)) {\n                            switch (token.value) {\n                                case 'center':\n                                    position.push(FIFTY_PERCENT);\n                                    return acc;\n                                case 'top':\n                                case 'left':\n                                    position.push(ZERO_LENGTH);\n                                    return acc;\n                                case 'right':\n                                case 'bottom':\n                                    position.push(HUNDRED_PERCENT);\n                                    return acc;\n                            }\n                        }\n                        else if (isLengthPercentage(token) || isLength(token)) {\n                            position.push(token);\n                        }\n                    }\n                    else if (isIdentToken(token)) {\n                        switch (token.value) {\n                            case CIRCLE:\n                                shape = 0 /* CIRCLE */;\n                                return false;\n                            case ELLIPSE:\n                                shape = 1 /* ELLIPSE */;\n                                return false;\n                            case 'at':\n                                isAtPosition_1 = true;\n                                return false;\n                            case CLOSEST_SIDE:\n                                size = 0 /* CLOSEST_SIDE */;\n                                return false;\n                            case COVER:\n                            case FARTHEST_SIDE:\n                                size = 1 /* FARTHEST_SIDE */;\n                                return false;\n                            case CONTAIN:\n                            case CLOSEST_CORNER:\n                                size = 2 /* CLOSEST_CORNER */;\n                                return false;\n                            case FARTHEST_CORNER:\n                                size = 3 /* FARTHEST_CORNER */;\n                                return false;\n                        }\n                    }\n                    else if (isLength(token) || isLengthPercentage(token)) {\n                        if (!Array.isArray(size)) {\n                            size = [];\n                        }\n                        size.push(token);\n                        return false;\n                    }\n                    return acc;\n                }, isColorStop);\n            }\n            if (isColorStop) {\n                var colorStop = parseColorStop(context, arg);\n                stops.push(colorStop);\n            }\n        });\n        return { size: size, shape: shape, stops: stops, position: position, type: 2 /* RADIAL_GRADIENT */ };\n    };\n\n    var prefixRadialGradient = function (context, tokens) {\n        var shape = 0 /* CIRCLE */;\n        var size = 3 /* FARTHEST_CORNER */;\n        var stops = [];\n        var position = [];\n        parseFunctionArgs(tokens).forEach(function (arg, i) {\n            var isColorStop = true;\n            if (i === 0) {\n                isColorStop = arg.reduce(function (acc, token) {\n                    if (isIdentToken(token)) {\n                        switch (token.value) {\n                            case 'center':\n                                position.push(FIFTY_PERCENT);\n                                return false;\n                            case 'top':\n                            case 'left':\n                                position.push(ZERO_LENGTH);\n                                return false;\n                            case 'right':\n                            case 'bottom':\n                                position.push(HUNDRED_PERCENT);\n                                return false;\n                        }\n                    }\n                    else if (isLengthPercentage(token) || isLength(token)) {\n                        position.push(token);\n                        return false;\n                    }\n                    return acc;\n                }, isColorStop);\n            }\n            else if (i === 1) {\n                isColorStop = arg.reduce(function (acc, token) {\n                    if (isIdentToken(token)) {\n                        switch (token.value) {\n                            case CIRCLE:\n                                shape = 0 /* CIRCLE */;\n                                return false;\n                            case ELLIPSE:\n                                shape = 1 /* ELLIPSE */;\n                                return false;\n                            case CONTAIN:\n                            case CLOSEST_SIDE:\n                                size = 0 /* CLOSEST_SIDE */;\n                                return false;\n                            case FARTHEST_SIDE:\n                                size = 1 /* FARTHEST_SIDE */;\n                                return false;\n                            case CLOSEST_CORNER:\n                                size = 2 /* CLOSEST_CORNER */;\n                                return false;\n                            case COVER:\n                            case FARTHEST_CORNER:\n                                size = 3 /* FARTHEST_CORNER */;\n                                return false;\n                        }\n                    }\n                    else if (isLength(token) || isLengthPercentage(token)) {\n                        if (!Array.isArray(size)) {\n                            size = [];\n                        }\n                        size.push(token);\n                        return false;\n                    }\n                    return acc;\n                }, isColorStop);\n            }\n            if (isColorStop) {\n                var colorStop = parseColorStop(context, arg);\n                stops.push(colorStop);\n            }\n        });\n        return { size: size, shape: shape, stops: stops, position: position, type: 2 /* RADIAL_GRADIENT */ };\n    };\n\n    var isLinearGradient = function (background) {\n        return background.type === 1 /* LINEAR_GRADIENT */;\n    };\n    var isRadialGradient = function (background) {\n        return background.type === 2 /* RADIAL_GRADIENT */;\n    };\n    var image = {\n        name: 'image',\n        parse: function (context, value) {\n            if (value.type === 22 /* URL_TOKEN */) {\n                var image_1 = { url: value.value, type: 0 /* URL */ };\n                context.cache.addImage(value.value);\n                return image_1;\n            }\n            if (value.type === 18 /* FUNCTION */) {\n                var imageFunction = SUPPORTED_IMAGE_FUNCTIONS[value.name];\n                if (typeof imageFunction === 'undefined') {\n                    throw new Error(\"Attempting to parse an unsupported image function \\\"\" + value.name + \"\\\"\");\n                }\n                return imageFunction(context, value.values);\n            }\n            throw new Error(\"Unsupported image type \" + value.type);\n        }\n    };\n    function isSupportedImage(value) {\n        return (!(value.type === 20 /* IDENT_TOKEN */ && value.value === 'none') &&\n            (value.type !== 18 /* FUNCTION */ || !!SUPPORTED_IMAGE_FUNCTIONS[value.name]));\n    }\n    var SUPPORTED_IMAGE_FUNCTIONS = {\n        'linear-gradient': linearGradient,\n        '-moz-linear-gradient': prefixLinearGradient,\n        '-ms-linear-gradient': prefixLinearGradient,\n        '-o-linear-gradient': prefixLinearGradient,\n        '-webkit-linear-gradient': prefixLinearGradient,\n        'radial-gradient': radialGradient,\n        '-moz-radial-gradient': prefixRadialGradient,\n        '-ms-radial-gradient': prefixRadialGradient,\n        '-o-radial-gradient': prefixRadialGradient,\n        '-webkit-radial-gradient': prefixRadialGradient,\n        '-webkit-gradient': webkitGradient\n    };\n\n    var backgroundImage = {\n        name: 'background-image',\n        initialValue: 'none',\n        type: 1 /* LIST */,\n        prefix: false,\n        parse: function (context, tokens) {\n            if (tokens.length === 0) {\n                return [];\n            }\n            var first = tokens[0];\n            if (first.type === 20 /* IDENT_TOKEN */ && first.value === 'none') {\n                return [];\n            }\n            return tokens\n                .filter(function (value) { return nonFunctionArgSeparator(value) && isSupportedImage(value); })\n                .map(function (value) { return image.parse(context, value); });\n        }\n    };\n\n    var backgroundOrigin = {\n        name: 'background-origin',\n        initialValue: 'border-box',\n        prefix: false,\n        type: 1 /* LIST */,\n        parse: function (_context, tokens) {\n            return tokens.map(function (token) {\n                if (isIdentToken(token)) {\n                    switch (token.value) {\n                        case 'padding-box':\n                            return 1 /* PADDING_BOX */;\n                        case 'content-box':\n                            return 2 /* CONTENT_BOX */;\n                    }\n                }\n                return 0 /* BORDER_BOX */;\n            });\n        }\n    };\n\n    var backgroundPosition = {\n        name: 'background-position',\n        initialValue: '0% 0%',\n        type: 1 /* LIST */,\n        prefix: false,\n        parse: function (_context, tokens) {\n            return parseFunctionArgs(tokens)\n                .map(function (values) { return values.filter(isLengthPercentage); })\n                .map(parseLengthPercentageTuple);\n        }\n    };\n\n    var backgroundRepeat = {\n        name: 'background-repeat',\n        initialValue: 'repeat',\n        prefix: false,\n        type: 1 /* LIST */,\n        parse: function (_context, tokens) {\n            return parseFunctionArgs(tokens)\n                .map(function (values) {\n                return values\n                    .filter(isIdentToken)\n                    .map(function (token) { return token.value; })\n                    .join(' ');\n            })\n                .map(parseBackgroundRepeat);\n        }\n    };\n    var parseBackgroundRepeat = function (value) {\n        switch (value) {\n            case 'no-repeat':\n                return 1 /* NO_REPEAT */;\n            case 'repeat-x':\n            case 'repeat no-repeat':\n                return 2 /* REPEAT_X */;\n            case 'repeat-y':\n            case 'no-repeat repeat':\n                return 3 /* REPEAT_Y */;\n            case 'repeat':\n            default:\n                return 0 /* REPEAT */;\n        }\n    };\n\n    var BACKGROUND_SIZE;\n    (function (BACKGROUND_SIZE) {\n        BACKGROUND_SIZE[\"AUTO\"] = \"auto\";\n        BACKGROUND_SIZE[\"CONTAIN\"] = \"contain\";\n        BACKGROUND_SIZE[\"COVER\"] = \"cover\";\n    })(BACKGROUND_SIZE || (BACKGROUND_SIZE = {}));\n    var backgroundSize = {\n        name: 'background-size',\n        initialValue: '0',\n        prefix: false,\n        type: 1 /* LIST */,\n        parse: function (_context, tokens) {\n            return parseFunctionArgs(tokens).map(function (values) { return values.filter(isBackgroundSizeInfoToken); });\n        }\n    };\n    var isBackgroundSizeInfoToken = function (value) {\n        return isIdentToken(value) || isLengthPercentage(value);\n    };\n\n    var borderColorForSide = function (side) { return ({\n        name: \"border-\" + side + \"-color\",\n        initialValue: 'transparent',\n        prefix: false,\n        type: 3 /* TYPE_VALUE */,\n        format: 'color'\n    }); };\n    var borderTopColor = borderColorForSide('top');\n    var borderRightColor = borderColorForSide('right');\n    var borderBottomColor = borderColorForSide('bottom');\n    var borderLeftColor = borderColorForSide('left');\n\n    var borderRadiusForSide = function (side) { return ({\n        name: \"border-radius-\" + side,\n        initialValue: '0 0',\n        prefix: false,\n        type: 1 /* LIST */,\n        parse: function (_context, tokens) {\n            return parseLengthPercentageTuple(tokens.filter(isLengthPercentage));\n        }\n    }); };\n    var borderTopLeftRadius = borderRadiusForSide('top-left');\n    var borderTopRightRadius = borderRadiusForSide('top-right');\n    var borderBottomRightRadius = borderRadiusForSide('bottom-right');\n    var borderBottomLeftRadius = borderRadiusForSide('bottom-left');\n\n    var borderStyleForSide = function (side) { return ({\n        name: \"border-\" + side + \"-style\",\n        initialValue: 'solid',\n        prefix: false,\n        type: 2 /* IDENT_VALUE */,\n        parse: function (_context, style) {\n            switch (style) {\n                case 'none':\n                    return 0 /* NONE */;\n                case 'dashed':\n                    return 2 /* DASHED */;\n                case 'dotted':\n                    return 3 /* DOTTED */;\n                case 'double':\n                    return 4 /* DOUBLE */;\n            }\n            return 1 /* SOLID */;\n        }\n    }); };\n    var borderTopStyle = borderStyleForSide('top');\n    var borderRightStyle = borderStyleForSide('right');\n    var borderBottomStyle = borderStyleForSide('bottom');\n    var borderLeftStyle = borderStyleForSide('left');\n\n    var borderWidthForSide = function (side) { return ({\n        name: \"border-\" + side + \"-width\",\n        initialValue: '0',\n        type: 0 /* VALUE */,\n        prefix: false,\n        parse: function (_context, token) {\n            if (isDimensionToken(token)) {\n                return token.number;\n            }\n            return 0;\n        }\n    }); };\n    var borderTopWidth = borderWidthForSide('top');\n    var borderRightWidth = borderWidthForSide('right');\n    var borderBottomWidth = borderWidthForSide('bottom');\n    var borderLeftWidth = borderWidthForSide('left');\n\n    var color = {\n        name: \"color\",\n        initialValue: 'transparent',\n        prefix: false,\n        type: 3 /* TYPE_VALUE */,\n        format: 'color'\n    };\n\n    var direction = {\n        name: 'direction',\n        initialValue: 'ltr',\n        prefix: false,\n        type: 2 /* IDENT_VALUE */,\n        parse: function (_context, direction) {\n            switch (direction) {\n                case 'rtl':\n                    return 1 /* RTL */;\n                case 'ltr':\n                default:\n                    return 0 /* LTR */;\n            }\n        }\n    };\n\n    var display = {\n        name: 'display',\n        initialValue: 'inline-block',\n        prefix: false,\n        type: 1 /* LIST */,\n        parse: function (_context, tokens) {\n            return tokens.filter(isIdentToken).reduce(function (bit, token) {\n                return bit | parseDisplayValue(token.value);\n            }, 0 /* NONE */);\n        }\n    };\n    var parseDisplayValue = function (display) {\n        switch (display) {\n            case 'block':\n            case '-webkit-box':\n                return 2 /* BLOCK */;\n            case 'inline':\n                return 4 /* INLINE */;\n            case 'run-in':\n                return 8 /* RUN_IN */;\n            case 'flow':\n                return 16 /* FLOW */;\n            case 'flow-root':\n                return 32 /* FLOW_ROOT */;\n            case 'table':\n                return 64 /* TABLE */;\n            case 'flex':\n            case '-webkit-flex':\n                return 128 /* FLEX */;\n            case 'grid':\n            case '-ms-grid':\n                return 256 /* GRID */;\n            case 'ruby':\n                return 512 /* RUBY */;\n            case 'subgrid':\n                return 1024 /* SUBGRID */;\n            case 'list-item':\n                return 2048 /* LIST_ITEM */;\n            case 'table-row-group':\n                return 4096 /* TABLE_ROW_GROUP */;\n            case 'table-header-group':\n                return 8192 /* TABLE_HEADER_GROUP */;\n            case 'table-footer-group':\n                return 16384 /* TABLE_FOOTER_GROUP */;\n            case 'table-row':\n                return 32768 /* TABLE_ROW */;\n            case 'table-cell':\n                return 65536 /* TABLE_CELL */;\n            case 'table-column-group':\n                return 131072 /* TABLE_COLUMN_GROUP */;\n            case 'table-column':\n                return 262144 /* TABLE_COLUMN */;\n            case 'table-caption':\n                return 524288 /* TABLE_CAPTION */;\n            case 'ruby-base':\n                return 1048576 /* RUBY_BASE */;\n            case 'ruby-text':\n                return 2097152 /* RUBY_TEXT */;\n            case 'ruby-base-container':\n                return 4194304 /* RUBY_BASE_CONTAINER */;\n            case 'ruby-text-container':\n                return 8388608 /* RUBY_TEXT_CONTAINER */;\n            case 'contents':\n                return 16777216 /* CONTENTS */;\n            case 'inline-block':\n                return 33554432 /* INLINE_BLOCK */;\n            case 'inline-list-item':\n                return 67108864 /* INLINE_LIST_ITEM */;\n            case 'inline-table':\n                return 134217728 /* INLINE_TABLE */;\n            case 'inline-flex':\n                return 268435456 /* INLINE_FLEX */;\n            case 'inline-grid':\n                return 536870912 /* INLINE_GRID */;\n        }\n        return 0 /* NONE */;\n    };\n\n    var float = {\n        name: 'float',\n        initialValue: 'none',\n        prefix: false,\n        type: 2 /* IDENT_VALUE */,\n        parse: function (_context, float) {\n            switch (float) {\n                case 'left':\n                    return 1 /* LEFT */;\n                case 'right':\n                    return 2 /* RIGHT */;\n                case 'inline-start':\n                    return 3 /* INLINE_START */;\n                case 'inline-end':\n                    return 4 /* INLINE_END */;\n            }\n            return 0 /* NONE */;\n        }\n    };\n\n    var letterSpacing = {\n        name: 'letter-spacing',\n        initialValue: '0',\n        prefix: false,\n        type: 0 /* VALUE */,\n        parse: function (_context, token) {\n            if (token.type === 20 /* IDENT_TOKEN */ && token.value === 'normal') {\n                return 0;\n            }\n            if (token.type === 17 /* NUMBER_TOKEN */) {\n                return token.number;\n            }\n            if (token.type === 15 /* DIMENSION_TOKEN */) {\n                return token.number;\n            }\n            return 0;\n        }\n    };\n\n    var LINE_BREAK;\n    (function (LINE_BREAK) {\n        LINE_BREAK[\"NORMAL\"] = \"normal\";\n        LINE_BREAK[\"STRICT\"] = \"strict\";\n    })(LINE_BREAK || (LINE_BREAK = {}));\n    var lineBreak = {\n        name: 'line-break',\n        initialValue: 'normal',\n        prefix: false,\n        type: 2 /* IDENT_VALUE */,\n        parse: function (_context, lineBreak) {\n            switch (lineBreak) {\n                case 'strict':\n                    return LINE_BREAK.STRICT;\n                case 'normal':\n                default:\n                    return LINE_BREAK.NORMAL;\n            }\n        }\n    };\n\n    var lineHeight = {\n        name: 'line-height',\n        initialValue: 'normal',\n        prefix: false,\n        type: 4 /* TOKEN_VALUE */\n    };\n    var computeLineHeight = function (token, fontSize) {\n        if (isIdentToken(token) && token.value === 'normal') {\n            return 1.2 * fontSize;\n        }\n        else if (token.type === 17 /* NUMBER_TOKEN */) {\n            return fontSize * token.number;\n        }\n        else if (isLengthPercentage(token)) {\n            return getAbsoluteValue(token, fontSize);\n        }\n        return fontSize;\n    };\n\n    var listStyleImage = {\n        name: 'list-style-image',\n        initialValue: 'none',\n        type: 0 /* VALUE */,\n        prefix: false,\n        parse: function (context, token) {\n            if (token.type === 20 /* IDENT_TOKEN */ && token.value === 'none') {\n                return null;\n            }\n            return image.parse(context, token);\n        }\n    };\n\n    var listStylePosition = {\n        name: 'list-style-position',\n        initialValue: 'outside',\n        prefix: false,\n        type: 2 /* IDENT_VALUE */,\n        parse: function (_context, position) {\n            switch (position) {\n                case 'inside':\n                    return 0 /* INSIDE */;\n                case 'outside':\n                default:\n                    return 1 /* OUTSIDE */;\n            }\n        }\n    };\n\n    var listStyleType = {\n        name: 'list-style-type',\n        initialValue: 'none',\n        prefix: false,\n        type: 2 /* IDENT_VALUE */,\n        parse: function (_context, type) {\n            switch (type) {\n                case 'disc':\n                    return 0 /* DISC */;\n                case 'circle':\n                    return 1 /* CIRCLE */;\n                case 'square':\n                    return 2 /* SQUARE */;\n                case 'decimal':\n                    return 3 /* DECIMAL */;\n                case 'cjk-decimal':\n                    return 4 /* CJK_DECIMAL */;\n                case 'decimal-leading-zero':\n                    return 5 /* DECIMAL_LEADING_ZERO */;\n                case 'lower-roman':\n                    return 6 /* LOWER_ROMAN */;\n                case 'upper-roman':\n                    return 7 /* UPPER_ROMAN */;\n                case 'lower-greek':\n                    return 8 /* LOWER_GREEK */;\n                case 'lower-alpha':\n                    return 9 /* LOWER_ALPHA */;\n                case 'upper-alpha':\n                    return 10 /* UPPER_ALPHA */;\n                case 'arabic-indic':\n                    return 11 /* ARABIC_INDIC */;\n                case 'armenian':\n                    return 12 /* ARMENIAN */;\n                case 'bengali':\n                    return 13 /* BENGALI */;\n                case 'cambodian':\n                    return 14 /* CAMBODIAN */;\n                case 'cjk-earthly-branch':\n                    return 15 /* CJK_EARTHLY_BRANCH */;\n                case 'cjk-heavenly-stem':\n                    return 16 /* CJK_HEAVENLY_STEM */;\n                case 'cjk-ideographic':\n                    return 17 /* CJK_IDEOGRAPHIC */;\n                case 'devanagari':\n                    return 18 /* DEVANAGARI */;\n                case 'ethiopic-numeric':\n                    return 19 /* ETHIOPIC_NUMERIC */;\n                case 'georgian':\n                    return 20 /* GEORGIAN */;\n                case 'gujarati':\n                    return 21 /* GUJARATI */;\n                case 'gurmukhi':\n                    return 22 /* GURMUKHI */;\n                case 'hebrew':\n                    return 22 /* HEBREW */;\n                case 'hiragana':\n                    return 23 /* HIRAGANA */;\n                case 'hiragana-iroha':\n                    return 24 /* HIRAGANA_IROHA */;\n                case 'japanese-formal':\n                    return 25 /* JAPANESE_FORMAL */;\n                case 'japanese-informal':\n                    return 26 /* JAPANESE_INFORMAL */;\n                case 'kannada':\n                    return 27 /* KANNADA */;\n                case 'katakana':\n                    return 28 /* KATAKANA */;\n                case 'katakana-iroha':\n                    return 29 /* KATAKANA_IROHA */;\n                case 'khmer':\n                    return 30 /* KHMER */;\n                case 'korean-hangul-formal':\n                    return 31 /* KOREAN_HANGUL_FORMAL */;\n                case 'korean-hanja-formal':\n                    return 32 /* KOREAN_HANJA_FORMAL */;\n                case 'korean-hanja-informal':\n                    return 33 /* KOREAN_HANJA_INFORMAL */;\n                case 'lao':\n                    return 34 /* LAO */;\n                case 'lower-armenian':\n                    return 35 /* LOWER_ARMENIAN */;\n                case 'malayalam':\n                    return 36 /* MALAYALAM */;\n                case 'mongolian':\n                    return 37 /* MONGOLIAN */;\n                case 'myanmar':\n                    return 38 /* MYANMAR */;\n                case 'oriya':\n                    return 39 /* ORIYA */;\n                case 'persian':\n                    return 40 /* PERSIAN */;\n                case 'simp-chinese-formal':\n                    return 41 /* SIMP_CHINESE_FORMAL */;\n                case 'simp-chinese-informal':\n                    return 42 /* SIMP_CHINESE_INFORMAL */;\n                case 'tamil':\n                    return 43 /* TAMIL */;\n                case 'telugu':\n                    return 44 /* TELUGU */;\n                case 'thai':\n                    return 45 /* THAI */;\n                case 'tibetan':\n                    return 46 /* TIBETAN */;\n                case 'trad-chinese-formal':\n                    return 47 /* TRAD_CHINESE_FORMAL */;\n                case 'trad-chinese-informal':\n                    return 48 /* TRAD_CHINESE_INFORMAL */;\n                case 'upper-armenian':\n                    return 49 /* UPPER_ARMENIAN */;\n                case 'disclosure-open':\n                    return 50 /* DISCLOSURE_OPEN */;\n                case 'disclosure-closed':\n                    return 51 /* DISCLOSURE_CLOSED */;\n                case 'none':\n                default:\n                    return -1 /* NONE */;\n            }\n        }\n    };\n\n    var marginForSide = function (side) { return ({\n        name: \"margin-\" + side,\n        initialValue: '0',\n        prefix: false,\n        type: 4 /* TOKEN_VALUE */\n    }); };\n    var marginTop = marginForSide('top');\n    var marginRight = marginForSide('right');\n    var marginBottom = marginForSide('bottom');\n    var marginLeft = marginForSide('left');\n\n    var overflow = {\n        name: 'overflow',\n        initialValue: 'visible',\n        prefix: false,\n        type: 1 /* LIST */,\n        parse: function (_context, tokens) {\n            return tokens.filter(isIdentToken).map(function (overflow) {\n                switch (overflow.value) {\n                    case 'hidden':\n                        return 1 /* HIDDEN */;\n                    case 'scroll':\n                        return 2 /* SCROLL */;\n                    case 'clip':\n                        return 3 /* CLIP */;\n                    case 'auto':\n                        return 4 /* AUTO */;\n                    case 'visible':\n                    default:\n                        return 0 /* VISIBLE */;\n                }\n            });\n        }\n    };\n\n    var overflowWrap = {\n        name: 'overflow-wrap',\n        initialValue: 'normal',\n        prefix: false,\n        type: 2 /* IDENT_VALUE */,\n        parse: function (_context, overflow) {\n            switch (overflow) {\n                case 'break-word':\n                    return \"break-word\" /* BREAK_WORD */;\n                case 'normal':\n                default:\n                    return \"normal\" /* NORMAL */;\n            }\n        }\n    };\n\n    var paddingForSide = function (side) { return ({\n        name: \"padding-\" + side,\n        initialValue: '0',\n        prefix: false,\n        type: 3 /* TYPE_VALUE */,\n        format: 'length-percentage'\n    }); };\n    var paddingTop = paddingForSide('top');\n    var paddingRight = paddingForSide('right');\n    var paddingBottom = paddingForSide('bottom');\n    var paddingLeft = paddingForSide('left');\n\n    var textAlign = {\n        name: 'text-align',\n        initialValue: 'left',\n        prefix: false,\n        type: 2 /* IDENT_VALUE */,\n        parse: function (_context, textAlign) {\n            switch (textAlign) {\n                case 'right':\n                    return 2 /* RIGHT */;\n                case 'center':\n                case 'justify':\n                    return 1 /* CENTER */;\n                case 'left':\n                default:\n                    return 0 /* LEFT */;\n            }\n        }\n    };\n\n    var position = {\n        name: 'position',\n        initialValue: 'static',\n        prefix: false,\n        type: 2 /* IDENT_VALUE */,\n        parse: function (_context, position) {\n            switch (position) {\n                case 'relative':\n                    return 1 /* RELATIVE */;\n                case 'absolute':\n                    return 2 /* ABSOLUTE */;\n                case 'fixed':\n                    return 3 /* FIXED */;\n                case 'sticky':\n                    return 4 /* STICKY */;\n            }\n            return 0 /* STATIC */;\n        }\n    };\n\n    var textShadow = {\n        name: 'text-shadow',\n        initialValue: 'none',\n        type: 1 /* LIST */,\n        prefix: false,\n        parse: function (context, tokens) {\n            if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) {\n                return [];\n            }\n            return parseFunctionArgs(tokens).map(function (values) {\n                var shadow = {\n                    color: COLORS.TRANSPARENT,\n                    offsetX: ZERO_LENGTH,\n                    offsetY: ZERO_LENGTH,\n                    blur: ZERO_LENGTH\n                };\n                var c = 0;\n                for (var i = 0; i < values.length; i++) {\n                    var token = values[i];\n                    if (isLength(token)) {\n                        if (c === 0) {\n                            shadow.offsetX = token;\n                        }\n                        else if (c === 1) {\n                            shadow.offsetY = token;\n                        }\n                        else {\n                            shadow.blur = token;\n                        }\n                        c++;\n                    }\n                    else {\n                        shadow.color = color$1.parse(context, token);\n                    }\n                }\n                return shadow;\n            });\n        }\n    };\n\n    var textTransform = {\n        name: 'text-transform',\n        initialValue: 'none',\n        prefix: false,\n        type: 2 /* IDENT_VALUE */,\n        parse: function (_context, textTransform) {\n            switch (textTransform) {\n                case 'uppercase':\n                    return 2 /* UPPERCASE */;\n                case 'lowercase':\n                    return 1 /* LOWERCASE */;\n                case 'capitalize':\n                    return 3 /* CAPITALIZE */;\n            }\n            return 0 /* NONE */;\n        }\n    };\n\n    var transform$1 = {\n        name: 'transform',\n        initialValue: 'none',\n        prefix: true,\n        type: 0 /* VALUE */,\n        parse: function (_context, token) {\n            if (token.type === 20 /* IDENT_TOKEN */ && token.value === 'none') {\n                return null;\n            }\n            if (token.type === 18 /* FUNCTION */) {\n                var transformFunction = SUPPORTED_TRANSFORM_FUNCTIONS[token.name];\n                if (typeof transformFunction === 'undefined') {\n                    throw new Error(\"Attempting to parse an unsupported transform function \\\"\" + token.name + \"\\\"\");\n                }\n                return transformFunction(token.values);\n            }\n            return null;\n        }\n    };\n    var matrix = function (args) {\n        var values = args.filter(function (arg) { return arg.type === 17 /* NUMBER_TOKEN */; }).map(function (arg) { return arg.number; });\n        return values.length === 6 ? values : null;\n    };\n    // doesn't support 3D transforms at the moment\n    var matrix3d = function (args) {\n        var values = args.filter(function (arg) { return arg.type === 17 /* NUMBER_TOKEN */; }).map(function (arg) { return arg.number; });\n        var a1 = values[0], b1 = values[1]; values[2]; values[3]; var a2 = values[4], b2 = 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];\n        return values.length === 16 ? [a1, b1, a2, b2, a4, b4] : null;\n    };\n    var SUPPORTED_TRANSFORM_FUNCTIONS = {\n        matrix: matrix,\n        matrix3d: matrix3d\n    };\n\n    var DEFAULT_VALUE = {\n        type: 16 /* PERCENTAGE_TOKEN */,\n        number: 50,\n        flags: FLAG_INTEGER\n    };\n    var DEFAULT = [DEFAULT_VALUE, DEFAULT_VALUE];\n    var transformOrigin = {\n        name: 'transform-origin',\n        initialValue: '50% 50%',\n        prefix: true,\n        type: 1 /* LIST */,\n        parse: function (_context, tokens) {\n            var origins = tokens.filter(isLengthPercentage);\n            if (origins.length !== 2) {\n                return DEFAULT;\n            }\n            return [origins[0], origins[1]];\n        }\n    };\n\n    var visibility = {\n        name: 'visible',\n        initialValue: 'none',\n        prefix: false,\n        type: 2 /* IDENT_VALUE */,\n        parse: function (_context, visibility) {\n            switch (visibility) {\n                case 'hidden':\n                    return 1 /* HIDDEN */;\n                case 'collapse':\n                    return 2 /* COLLAPSE */;\n                case 'visible':\n                default:\n                    return 0 /* VISIBLE */;\n            }\n        }\n    };\n\n    var WORD_BREAK;\n    (function (WORD_BREAK) {\n        WORD_BREAK[\"NORMAL\"] = \"normal\";\n        WORD_BREAK[\"BREAK_ALL\"] = \"break-all\";\n        WORD_BREAK[\"KEEP_ALL\"] = \"keep-all\";\n    })(WORD_BREAK || (WORD_BREAK = {}));\n    var wordBreak = {\n        name: 'word-break',\n        initialValue: 'normal',\n        prefix: false,\n        type: 2 /* IDENT_VALUE */,\n        parse: function (_context, wordBreak) {\n            switch (wordBreak) {\n                case 'break-all':\n                    return WORD_BREAK.BREAK_ALL;\n                case 'keep-all':\n                    return WORD_BREAK.KEEP_ALL;\n                case 'normal':\n                default:\n                    return WORD_BREAK.NORMAL;\n            }\n        }\n    };\n\n    var zIndex = {\n        name: 'z-index',\n        initialValue: 'auto',\n        prefix: false,\n        type: 0 /* VALUE */,\n        parse: function (_context, token) {\n            if (token.type === 20 /* IDENT_TOKEN */) {\n                return { auto: true, order: 0 };\n            }\n            if (isNumberToken(token)) {\n                return { auto: false, order: token.number };\n            }\n            throw new Error(\"Invalid z-index number parsed\");\n        }\n    };\n\n    var time = {\n        name: 'time',\n        parse: function (_context, value) {\n            if (value.type === 15 /* DIMENSION_TOKEN */) {\n                switch (value.unit.toLowerCase()) {\n                    case 's':\n                        return 1000 * value.number;\n                    case 'ms':\n                        return value.number;\n                }\n            }\n            throw new Error(\"Unsupported time type\");\n        }\n    };\n\n    var opacity = {\n        name: 'opacity',\n        initialValue: '1',\n        type: 0 /* VALUE */,\n        prefix: false,\n        parse: function (_context, token) {\n            if (isNumberToken(token)) {\n                return token.number;\n            }\n            return 1;\n        }\n    };\n\n    var textDecorationColor = {\n        name: \"text-decoration-color\",\n        initialValue: 'transparent',\n        prefix: false,\n        type: 3 /* TYPE_VALUE */,\n        format: 'color'\n    };\n\n    var textDecorationLine = {\n        name: 'text-decoration-line',\n        initialValue: 'none',\n        prefix: false,\n        type: 1 /* LIST */,\n        parse: function (_context, tokens) {\n            return tokens\n                .filter(isIdentToken)\n                .map(function (token) {\n                switch (token.value) {\n                    case 'underline':\n                        return 1 /* UNDERLINE */;\n                    case 'overline':\n                        return 2 /* OVERLINE */;\n                    case 'line-through':\n                        return 3 /* LINE_THROUGH */;\n                    case 'none':\n                        return 4 /* BLINK */;\n                }\n                return 0 /* NONE */;\n            })\n                .filter(function (line) { return line !== 0 /* NONE */; });\n        }\n    };\n\n    var fontFamily = {\n        name: \"font-family\",\n        initialValue: '',\n        prefix: false,\n        type: 1 /* LIST */,\n        parse: function (_context, tokens) {\n            var accumulator = [];\n            var results = [];\n            tokens.forEach(function (token) {\n                switch (token.type) {\n                    case 20 /* IDENT_TOKEN */:\n                    case 0 /* STRING_TOKEN */:\n                        accumulator.push(token.value);\n                        break;\n                    case 17 /* NUMBER_TOKEN */:\n                        accumulator.push(token.number.toString());\n                        break;\n                    case 4 /* COMMA_TOKEN */:\n                        results.push(accumulator.join(' '));\n                        accumulator.length = 0;\n                        break;\n                }\n            });\n            if (accumulator.length) {\n                results.push(accumulator.join(' '));\n            }\n            return results.map(function (result) { return (result.indexOf(' ') === -1 ? result : \"'\" + result + \"'\"); });\n        }\n    };\n\n    var fontSize = {\n        name: \"font-size\",\n        initialValue: '0',\n        prefix: false,\n        type: 3 /* TYPE_VALUE */,\n        format: 'length'\n    };\n\n    var fontWeight = {\n        name: 'font-weight',\n        initialValue: 'normal',\n        type: 0 /* VALUE */,\n        prefix: false,\n        parse: function (_context, token) {\n            if (isNumberToken(token)) {\n                return token.number;\n            }\n            if (isIdentToken(token)) {\n                switch (token.value) {\n                    case 'bold':\n                        return 700;\n                    case 'normal':\n                    default:\n                        return 400;\n                }\n            }\n            return 400;\n        }\n    };\n\n    var fontVariant = {\n        name: 'font-variant',\n        initialValue: 'none',\n        type: 1 /* LIST */,\n        prefix: false,\n        parse: function (_context, tokens) {\n            return tokens.filter(isIdentToken).map(function (token) { return token.value; });\n        }\n    };\n\n    var fontStyle = {\n        name: 'font-style',\n        initialValue: 'normal',\n        prefix: false,\n        type: 2 /* IDENT_VALUE */,\n        parse: function (_context, overflow) {\n            switch (overflow) {\n                case 'oblique':\n                    return \"oblique\" /* OBLIQUE */;\n                case 'italic':\n                    return \"italic\" /* ITALIC */;\n                case 'normal':\n                default:\n                    return \"normal\" /* NORMAL */;\n            }\n        }\n    };\n\n    var contains = function (bit, value) { return (bit & value) !== 0; };\n\n    var content = {\n        name: 'content',\n        initialValue: 'none',\n        type: 1 /* LIST */,\n        prefix: false,\n        parse: function (_context, tokens) {\n            if (tokens.length === 0) {\n                return [];\n            }\n            var first = tokens[0];\n            if (first.type === 20 /* IDENT_TOKEN */ && first.value === 'none') {\n                return [];\n            }\n            return tokens;\n        }\n    };\n\n    var counterIncrement = {\n        name: 'counter-increment',\n        initialValue: 'none',\n        prefix: true,\n        type: 1 /* LIST */,\n        parse: function (_context, tokens) {\n            if (tokens.length === 0) {\n                return null;\n            }\n            var first = tokens[0];\n            if (first.type === 20 /* IDENT_TOKEN */ && first.value === 'none') {\n                return null;\n            }\n            var increments = [];\n            var filtered = tokens.filter(nonWhiteSpace);\n            for (var i = 0; i < filtered.length; i++) {\n                var counter = filtered[i];\n                var next = filtered[i + 1];\n                if (counter.type === 20 /* IDENT_TOKEN */) {\n                    var increment = next && isNumberToken(next) ? next.number : 1;\n                    increments.push({ counter: counter.value, increment: increment });\n                }\n            }\n            return increments;\n        }\n    };\n\n    var counterReset = {\n        name: 'counter-reset',\n        initialValue: 'none',\n        prefix: true,\n        type: 1 /* LIST */,\n        parse: function (_context, tokens) {\n            if (tokens.length === 0) {\n                return [];\n            }\n            var resets = [];\n            var filtered = tokens.filter(nonWhiteSpace);\n            for (var i = 0; i < filtered.length; i++) {\n                var counter = filtered[i];\n                var next = filtered[i + 1];\n                if (isIdentToken(counter) && counter.value !== 'none') {\n                    var reset = next && isNumberToken(next) ? next.number : 0;\n                    resets.push({ counter: counter.value, reset: reset });\n                }\n            }\n            return resets;\n        }\n    };\n\n    var duration = {\n        name: 'duration',\n        initialValue: '0s',\n        prefix: false,\n        type: 1 /* LIST */,\n        parse: function (context, tokens) {\n            return tokens.filter(isDimensionToken).map(function (token) { return time.parse(context, token); });\n        }\n    };\n\n    var quotes = {\n        name: 'quotes',\n        initialValue: 'none',\n        prefix: true,\n        type: 1 /* LIST */,\n        parse: function (_context, tokens) {\n            if (tokens.length === 0) {\n                return null;\n            }\n            var first = tokens[0];\n            if (first.type === 20 /* IDENT_TOKEN */ && first.value === 'none') {\n                return null;\n            }\n            var quotes = [];\n            var filtered = tokens.filter(isStringToken);\n            if (filtered.length % 2 !== 0) {\n                return null;\n            }\n            for (var i = 0; i < filtered.length; i += 2) {\n                var open_1 = filtered[i].value;\n                var close_1 = filtered[i + 1].value;\n                quotes.push({ open: open_1, close: close_1 });\n            }\n            return quotes;\n        }\n    };\n    var getQuote = function (quotes, depth, open) {\n        if (!quotes) {\n            return '';\n        }\n        var quote = quotes[Math.min(depth, quotes.length - 1)];\n        if (!quote) {\n            return '';\n        }\n        return open ? quote.open : quote.close;\n    };\n\n    var boxShadow = {\n        name: 'box-shadow',\n        initialValue: 'none',\n        type: 1 /* LIST */,\n        prefix: false,\n        parse: function (context, tokens) {\n            if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) {\n                return [];\n            }\n            return parseFunctionArgs(tokens).map(function (values) {\n                var shadow = {\n                    color: 0x000000ff,\n                    offsetX: ZERO_LENGTH,\n                    offsetY: ZERO_LENGTH,\n                    blur: ZERO_LENGTH,\n                    spread: ZERO_LENGTH,\n                    inset: false\n                };\n                var c = 0;\n                for (var i = 0; i < values.length; i++) {\n                    var token = values[i];\n                    if (isIdentWithValue(token, 'inset')) {\n                        shadow.inset = true;\n                    }\n                    else if (isLength(token)) {\n                        if (c === 0) {\n                            shadow.offsetX = token;\n                        }\n                        else if (c === 1) {\n                            shadow.offsetY = token;\n                        }\n                        else if (c === 2) {\n                            shadow.blur = token;\n                        }\n                        else {\n                            shadow.spread = token;\n                        }\n                        c++;\n                    }\n                    else {\n                        shadow.color = color$1.parse(context, token);\n                    }\n                }\n                return shadow;\n            });\n        }\n    };\n\n    var paintOrder = {\n        name: 'paint-order',\n        initialValue: 'normal',\n        prefix: false,\n        type: 1 /* LIST */,\n        parse: function (_context, tokens) {\n            var DEFAULT_VALUE = [0 /* FILL */, 1 /* STROKE */, 2 /* MARKERS */];\n            var layers = [];\n            tokens.filter(isIdentToken).forEach(function (token) {\n                switch (token.value) {\n                    case 'stroke':\n                        layers.push(1 /* STROKE */);\n                        break;\n                    case 'fill':\n                        layers.push(0 /* FILL */);\n                        break;\n                    case 'markers':\n                        layers.push(2 /* MARKERS */);\n                        break;\n                }\n            });\n            DEFAULT_VALUE.forEach(function (value) {\n                if (layers.indexOf(value) === -1) {\n                    layers.push(value);\n                }\n            });\n            return layers;\n        }\n    };\n\n    var webkitTextStrokeColor = {\n        name: \"-webkit-text-stroke-color\",\n        initialValue: 'currentcolor',\n        prefix: false,\n        type: 3 /* TYPE_VALUE */,\n        format: 'color'\n    };\n\n    var webkitTextStrokeWidth = {\n        name: \"-webkit-text-stroke-width\",\n        initialValue: '0',\n        type: 0 /* VALUE */,\n        prefix: false,\n        parse: function (_context, token) {\n            if (isDimensionToken(token)) {\n                return token.number;\n            }\n            return 0;\n        }\n    };\n\n    var CSSParsedDeclaration = /** @class */ (function () {\n        function CSSParsedDeclaration(context, declaration) {\n            var _a, _b;\n            this.animationDuration = parse(context, duration, declaration.animationDuration);\n            this.backgroundClip = parse(context, backgroundClip, declaration.backgroundClip);\n            this.backgroundColor = parse(context, backgroundColor, declaration.backgroundColor);\n            this.backgroundImage = parse(context, backgroundImage, declaration.backgroundImage);\n            this.backgroundOrigin = parse(context, backgroundOrigin, declaration.backgroundOrigin);\n            this.backgroundPosition = parse(context, backgroundPosition, declaration.backgroundPosition);\n            this.backgroundRepeat = parse(context, backgroundRepeat, declaration.backgroundRepeat);\n            this.backgroundSize = parse(context, backgroundSize, declaration.backgroundSize);\n            this.borderTopColor = parse(context, borderTopColor, declaration.borderTopColor);\n            this.borderRightColor = parse(context, borderRightColor, declaration.borderRightColor);\n            this.borderBottomColor = parse(context, borderBottomColor, declaration.borderBottomColor);\n            this.borderLeftColor = parse(context, borderLeftColor, declaration.borderLeftColor);\n            this.borderTopLeftRadius = parse(context, borderTopLeftRadius, declaration.borderTopLeftRadius);\n            this.borderTopRightRadius = parse(context, borderTopRightRadius, declaration.borderTopRightRadius);\n            this.borderBottomRightRadius = parse(context, borderBottomRightRadius, declaration.borderBottomRightRadius);\n            this.borderBottomLeftRadius = parse(context, borderBottomLeftRadius, declaration.borderBottomLeftRadius);\n            this.borderTopStyle = parse(context, borderTopStyle, declaration.borderTopStyle);\n            this.borderRightStyle = parse(context, borderRightStyle, declaration.borderRightStyle);\n            this.borderBottomStyle = parse(context, borderBottomStyle, declaration.borderBottomStyle);\n            this.borderLeftStyle = parse(context, borderLeftStyle, declaration.borderLeftStyle);\n            this.borderTopWidth = parse(context, borderTopWidth, declaration.borderTopWidth);\n            this.borderRightWidth = parse(context, borderRightWidth, declaration.borderRightWidth);\n            this.borderBottomWidth = parse(context, borderBottomWidth, declaration.borderBottomWidth);\n            this.borderLeftWidth = parse(context, borderLeftWidth, declaration.borderLeftWidth);\n            this.boxShadow = parse(context, boxShadow, declaration.boxShadow);\n            this.color = parse(context, color, declaration.color);\n            this.direction = parse(context, direction, declaration.direction);\n            this.display = parse(context, display, declaration.display);\n            this.float = parse(context, float, declaration.cssFloat);\n            this.fontFamily = parse(context, fontFamily, declaration.fontFamily);\n            this.fontSize = parse(context, fontSize, declaration.fontSize);\n            this.fontStyle = parse(context, fontStyle, declaration.fontStyle);\n            this.fontVariant = parse(context, fontVariant, declaration.fontVariant);\n            this.fontWeight = parse(context, fontWeight, declaration.fontWeight);\n            this.letterSpacing = parse(context, letterSpacing, declaration.letterSpacing);\n            this.lineBreak = parse(context, lineBreak, declaration.lineBreak);\n            this.lineHeight = parse(context, lineHeight, declaration.lineHeight);\n            this.listStyleImage = parse(context, listStyleImage, declaration.listStyleImage);\n            this.listStylePosition = parse(context, listStylePosition, declaration.listStylePosition);\n            this.listStyleType = parse(context, listStyleType, declaration.listStyleType);\n            this.marginTop = parse(context, marginTop, declaration.marginTop);\n            this.marginRight = parse(context, marginRight, declaration.marginRight);\n            this.marginBottom = parse(context, marginBottom, declaration.marginBottom);\n            this.marginLeft = parse(context, marginLeft, declaration.marginLeft);\n            this.opacity = parse(context, opacity, declaration.opacity);\n            var overflowTuple = parse(context, overflow, declaration.overflow);\n            this.overflowX = overflowTuple[0];\n            this.overflowY = overflowTuple[overflowTuple.length > 1 ? 1 : 0];\n            this.overflowWrap = parse(context, overflowWrap, declaration.overflowWrap);\n            this.paddingTop = parse(context, paddingTop, declaration.paddingTop);\n            this.paddingRight = parse(context, paddingRight, declaration.paddingRight);\n            this.paddingBottom = parse(context, paddingBottom, declaration.paddingBottom);\n            this.paddingLeft = parse(context, paddingLeft, declaration.paddingLeft);\n            this.paintOrder = parse(context, paintOrder, declaration.paintOrder);\n            this.position = parse(context, position, declaration.position);\n            this.textAlign = parse(context, textAlign, declaration.textAlign);\n            this.textDecorationColor = parse(context, textDecorationColor, (_a = declaration.textDecorationColor) !== null && _a !== void 0 ? _a : declaration.color);\n            this.textDecorationLine = parse(context, textDecorationLine, (_b = declaration.textDecorationLine) !== null && _b !== void 0 ? _b : declaration.textDecoration);\n            this.textShadow = parse(context, textShadow, declaration.textShadow);\n            this.textTransform = parse(context, textTransform, declaration.textTransform);\n            this.transform = parse(context, transform$1, declaration.transform);\n            this.transformOrigin = parse(context, transformOrigin, declaration.transformOrigin);\n            this.visibility = parse(context, visibility, declaration.visibility);\n            this.webkitTextStrokeColor = parse(context, webkitTextStrokeColor, declaration.webkitTextStrokeColor);\n            this.webkitTextStrokeWidth = parse(context, webkitTextStrokeWidth, declaration.webkitTextStrokeWidth);\n            this.wordBreak = parse(context, wordBreak, declaration.wordBreak);\n            this.zIndex = parse(context, zIndex, declaration.zIndex);\n        }\n        CSSParsedDeclaration.prototype.isVisible = function () {\n            return this.display > 0 && this.opacity > 0 && this.visibility === 0 /* VISIBLE */;\n        };\n        CSSParsedDeclaration.prototype.isTransparent = function () {\n            return isTransparent(this.backgroundColor);\n        };\n        CSSParsedDeclaration.prototype.isTransformed = function () {\n            return this.transform !== null;\n        };\n        CSSParsedDeclaration.prototype.isPositioned = function () {\n            return this.position !== 0 /* STATIC */;\n        };\n        CSSParsedDeclaration.prototype.isPositionedWithZIndex = function () {\n            return this.isPositioned() && !this.zIndex.auto;\n        };\n        CSSParsedDeclaration.prototype.isFloating = function () {\n            return this.float !== 0 /* NONE */;\n        };\n        CSSParsedDeclaration.prototype.isInlineLevel = function () {\n            return (contains(this.display, 4 /* INLINE */) ||\n                contains(this.display, 33554432 /* INLINE_BLOCK */) ||\n                contains(this.display, 268435456 /* INLINE_FLEX */) ||\n                contains(this.display, 536870912 /* INLINE_GRID */) ||\n                contains(this.display, 67108864 /* INLINE_LIST_ITEM */) ||\n                contains(this.display, 134217728 /* INLINE_TABLE */));\n        };\n        return CSSParsedDeclaration;\n    }());\n    var CSSParsedPseudoDeclaration = /** @class */ (function () {\n        function CSSParsedPseudoDeclaration(context, declaration) {\n            this.content = parse(context, content, declaration.content);\n            this.quotes = parse(context, quotes, declaration.quotes);\n        }\n        return CSSParsedPseudoDeclaration;\n    }());\n    var CSSParsedCounterDeclaration = /** @class */ (function () {\n        function CSSParsedCounterDeclaration(context, declaration) {\n            this.counterIncrement = parse(context, counterIncrement, declaration.counterIncrement);\n            this.counterReset = parse(context, counterReset, declaration.counterReset);\n        }\n        return CSSParsedCounterDeclaration;\n    }());\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    var parse = function (context, descriptor, style) {\n        var tokenizer = new Tokenizer();\n        var value = style !== null && typeof style !== 'undefined' ? style.toString() : descriptor.initialValue;\n        tokenizer.write(value);\n        var parser = new Parser(tokenizer.read());\n        switch (descriptor.type) {\n            case 2 /* IDENT_VALUE */:\n                var token = parser.parseComponentValue();\n                return descriptor.parse(context, isIdentToken(token) ? token.value : descriptor.initialValue);\n            case 0 /* VALUE */:\n                return descriptor.parse(context, parser.parseComponentValue());\n            case 1 /* LIST */:\n                return descriptor.parse(context, parser.parseComponentValues());\n            case 4 /* TOKEN_VALUE */:\n                return parser.parseComponentValue();\n            case 3 /* TYPE_VALUE */:\n                switch (descriptor.format) {\n                    case 'angle':\n                        return angle.parse(context, parser.parseComponentValue());\n                    case 'color':\n                        return color$1.parse(context, parser.parseComponentValue());\n                    case 'image':\n                        return image.parse(context, parser.parseComponentValue());\n                    case 'length':\n                        var length_1 = parser.parseComponentValue();\n                        return isLength(length_1) ? length_1 : ZERO_LENGTH;\n                    case 'length-percentage':\n                        var value_1 = parser.parseComponentValue();\n                        return isLengthPercentage(value_1) ? value_1 : ZERO_LENGTH;\n                    case 'time':\n                        return time.parse(context, parser.parseComponentValue());\n                }\n                break;\n        }\n    };\n\n    var elementDebuggerAttribute = 'data-html2canvas-debug';\n    var getElementDebugType = function (element) {\n        var attribute = element.getAttribute(elementDebuggerAttribute);\n        switch (attribute) {\n            case 'all':\n                return 1 /* ALL */;\n            case 'clone':\n                return 2 /* CLONE */;\n            case 'parse':\n                return 3 /* PARSE */;\n            case 'render':\n                return 4 /* RENDER */;\n            default:\n                return 0 /* NONE */;\n        }\n    };\n    var isDebugging = function (element, type) {\n        var elementType = getElementDebugType(element);\n        return elementType === 1 /* ALL */ || type === elementType;\n    };\n\n    var ElementContainer = /** @class */ (function () {\n        function ElementContainer(context, element) {\n            this.context = context;\n            this.textNodes = [];\n            this.elements = [];\n            this.flags = 0;\n            if (isDebugging(element, 3 /* PARSE */)) {\n                debugger;\n            }\n            this.styles = new CSSParsedDeclaration(context, window.getComputedStyle(element, null));\n            if (isHTMLElementNode(element)) {\n                if (this.styles.animationDuration.some(function (duration) { return duration > 0; })) {\n                    element.style.animationDuration = '0s';\n                }\n                if (this.styles.transform !== null) {\n                    // getBoundingClientRect takes transforms into account\n                    element.style.transform = 'none';\n                }\n            }\n            this.bounds = parseBounds(this.context, element);\n            if (isDebugging(element, 4 /* RENDER */)) {\n                this.flags |= 16 /* DEBUG_RENDER */;\n            }\n        }\n        return ElementContainer;\n    }());\n\n    /*\n     * text-segmentation 1.0.3 <https://github.com/niklasvh/text-segmentation>\n     * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>\n     * Released under MIT License\n     */\n    var base64 = 'AAAAAAAAAAAAEA4AGBkAAFAaAAACAAAAAAAIABAAGAAwADgACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAAQABIAEQATAAIABAACAAQAAgAEAAIABAAVABcAAgAEAAIABAACAAQAGAAaABwAHgAgACIAI4AlgAIABAAmwCjAKgAsAC2AL4AvQDFAMoA0gBPAVYBWgEIAAgACACMANoAYgFkAWwBdAF8AX0BhQGNAZUBlgGeAaMBlQGWAasBswF8AbsBwwF0AcsBYwHTAQgA2wG/AOMBdAF8AekB8QF0AfkB+wHiAHQBfAEIAAMC5gQIAAsCEgIIAAgAFgIeAggAIgIpAggAMQI5AkACygEIAAgASAJQAlgCYAIIAAgACAAKBQoFCgUTBRMFGQUrBSsFCAAIAAgACAAIAAgACAAIAAgACABdAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABoAmgCrwGvAQgAbgJ2AggAHgEIAAgACADnAXsCCAAIAAgAgwIIAAgACAAIAAgACACKAggAkQKZAggAPADJAAgAoQKkAqwCsgK6AsICCADJAggA0AIIAAgACAAIANYC3gIIAAgACAAIAAgACABAAOYCCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAkASoB+QIEAAgACAA8AEMCCABCBQgACABJBVAFCAAIAAgACAAIAAgACAAIAAgACABTBVoFCAAIAFoFCABfBWUFCAAIAAgACAAIAAgAbQUIAAgACAAIAAgACABzBXsFfQWFBYoFigWKBZEFigWKBYoFmAWfBaYFrgWxBbkFCAAIAAgACAAIAAgACAAIAAgACAAIAMEFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAMgFCADQBQgACAAIAAgACAAIAAgACAAIAAgACAAIAO4CCAAIAAgAiQAIAAgACABAAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAD0AggACAD8AggACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIANYFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAMDvwAIAAgAJAIIAAgACAAIAAgACAAIAAgACwMTAwgACAB9BOsEGwMjAwgAKwMyAwsFYgE3A/MEPwMIAEUDTQNRAwgAWQOsAGEDCAAIAAgACAAIAAgACABpAzQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFIQUoBSwFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABtAwgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABMAEwACAAIAAgACAAIABgACAAIAAgACAC/AAgACAAyAQgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACAAIAAwAAgACAAIAAgACAAIAAgACAAIAAAARABIAAgACAAIABQASAAIAAgAIABwAEAAjgCIABsAqAC2AL0AigDQAtwC+IJIQqVAZUBWQqVAZUBlQGVAZUBlQGrC5UBlQGVAZUBlQGVAZUBlQGVAXsKlQGVAbAK6wsrDGUMpQzlDJUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAfAKAAuZA64AtwCJALoC6ADwAAgAuACgA/oEpgO6AqsD+AAIAAgAswMIAAgACAAIAIkAuwP5AfsBwwPLAwgACAAIAAgACADRA9kDCAAIAOED6QMIAAgACAAIAAgACADuA/YDCAAIAP4DyQAIAAgABgQIAAgAXQAOBAgACAAIAAgACAAIABMECAAIAAgACAAIAAgACAD8AAQBCAAIAAgAGgQiBCoECAExBAgAEAEIAAgACAAIAAgACAAIAAgACAAIAAgACAA4BAgACABABEYECAAIAAgATAQYAQgAVAQIAAgACAAIAAgACAAIAAgACAAIAFoECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAOQEIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAB+BAcACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAEABhgSMBAgACAAIAAgAlAQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAwAEAAQABAADAAMAAwADAAQABAAEAAQABAAEAAQABHATAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAdQMIAAgACAAIAAgACAAIAMkACAAIAAgAfQMIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACFA4kDCAAIAAgACAAIAOcBCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAIcDCAAIAAgACAAIAAgACAAIAAgACAAIAJEDCAAIAAgACADFAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABgBAgAZgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAbAQCBXIECAAIAHkECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABAAJwEQACjBKoEsgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAC6BMIECAAIAAgACAAIAAgACABmBAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAxwQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAGYECAAIAAgAzgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBd0FXwUIAOIF6gXxBYoF3gT5BQAGCAaKBYoFigWKBYoFigWKBYoFigWKBYoFigXWBIoFigWKBYoFigWKBYoFigWKBYsFEAaKBYoFigWKBYoFigWKBRQGCACKBYoFigWKBQgACAAIANEECAAIABgGigUgBggAJgYIAC4GMwaKBYoF0wQ3Bj4GigWKBYoFigWKBYoFigWKBYoFigWKBYoFigUIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWLBf///////wQABAAEAAQABAAEAAQABAAEAAQAAwAEAAQAAgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAQADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUAAAAFAAUAAAAFAAUAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAQAAAAUABQAFAAUABQAFAAAAAAAFAAUAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAFAAUAAQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAAABwAHAAcAAAAHAAcABwAFAAEAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAcABwAFAAUAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQABAAAAAAAAAAAAAAAFAAUABQAFAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAHAAcAAAAHAAcAAAAAAAUABQAHAAUAAQAHAAEABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwABAAUABQAFAAUAAAAAAAAAAAAAAAEAAQABAAEAAQABAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABQANAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAABQAHAAUABQAFAAAAAAAAAAcABQAFAAUABQAFAAQABAAEAAQABAAEAAQABAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUAAAAFAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAUAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAcABwAFAAcABwAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUABwAHAAUABQAFAAUAAAAAAAcABwAAAAAABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAAAAAAAAAAABQAFAAAAAAAFAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAFAAUABQAFAAUAAAAFAAUABwAAAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABwAFAAUABQAFAAAAAAAHAAcAAAAAAAcABwAFAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAAAAAAAAAHAAcABwAAAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAUABQAFAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAHAAcABQAHAAcAAAAFAAcABwAAAAcABwAFAAUAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAFAAcABwAFAAUABQAAAAUAAAAHAAcABwAHAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAHAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUAAAAFAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAUAAAAFAAUAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABwAFAAUABQAFAAUABQAAAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABQAFAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAFAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAHAAUABQAFAAUABQAFAAUABwAHAAcABwAHAAcABwAHAAUABwAHAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABwAHAAcABwAFAAUABwAHAAcAAAAAAAAAAAAHAAcABQAHAAcABwAHAAcABwAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAUABQAFAAUABQAFAAUAAAAFAAAABQAAAAAABQAFAAUABQAFAAUABQAFAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAUABQAFAAUABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABwAFAAcABwAHAAcABwAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAUABQAFAAUABwAHAAUABQAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABQAFAAcABwAHAAUABwAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAcABQAFAAUABQAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAAAAAABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAUABQAHAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAFAAUABQAFAAcABwAFAAUABwAHAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAcABwAFAAUABwAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABQAAAAAABQAFAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAcABwAAAAAAAAAAAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAcABwAFAAcABwAAAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAFAAUABQAAAAUABQAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABwAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAHAAcABQAHAAUABQAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAAABwAHAAAAAAAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAFAAUABwAFAAcABwAFAAcABQAFAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAAAAAABwAHAAcABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAFAAcABwAFAAUABQAFAAUABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAUABQAFAAcABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABQAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAAAAAAFAAUABwAHAAcABwAFAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAHAAUABQAFAAUABQAFAAUABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAABQAAAAUABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAHAAcAAAAFAAUAAAAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABQAFAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAABQAFAAUABQAFAAUABQAAAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAFAAUABQAFAAUADgAOAA4ADgAOAA4ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAMAAwADAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAAAAAAAAAAAAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAAAAAAAAAAAAsADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwACwAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAADgAOAA4AAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAAAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4AAAAOAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAAAAAAAAAAAA4AAAAOAAAAAAAAAAAADgAOAA4AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAA=';\n\n    /*\n     * utrie 1.0.2 <https://github.com/niklasvh/utrie>\n     * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>\n     * Released under MIT License\n     */\n    var chars$1 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n    // Use a lookup table to find the index.\n    var lookup$1 = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\n    for (var i$1 = 0; i$1 < chars$1.length; i$1++) {\n        lookup$1[chars$1.charCodeAt(i$1)] = i$1;\n    }\n    var decode = function (base64) {\n        var bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n        if (base64[base64.length - 1] === '=') {\n            bufferLength--;\n            if (base64[base64.length - 2] === '=') {\n                bufferLength--;\n            }\n        }\n        var buffer = typeof ArrayBuffer !== 'undefined' &&\n            typeof Uint8Array !== 'undefined' &&\n            typeof Uint8Array.prototype.slice !== 'undefined'\n            ? new ArrayBuffer(bufferLength)\n            : new Array(bufferLength);\n        var bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\n        for (i = 0; i < len; i += 4) {\n            encoded1 = lookup$1[base64.charCodeAt(i)];\n            encoded2 = lookup$1[base64.charCodeAt(i + 1)];\n            encoded3 = lookup$1[base64.charCodeAt(i + 2)];\n            encoded4 = lookup$1[base64.charCodeAt(i + 3)];\n            bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n            bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n            bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n        }\n        return buffer;\n    };\n    var polyUint16Array = function (buffer) {\n        var length = buffer.length;\n        var bytes = [];\n        for (var i = 0; i < length; i += 2) {\n            bytes.push((buffer[i + 1] << 8) | buffer[i]);\n        }\n        return bytes;\n    };\n    var polyUint32Array = function (buffer) {\n        var length = buffer.length;\n        var bytes = [];\n        for (var i = 0; i < length; i += 4) {\n            bytes.push((buffer[i + 3] << 24) | (buffer[i + 2] << 16) | (buffer[i + 1] << 8) | buffer[i]);\n        }\n        return bytes;\n    };\n\n    /** Shift size for getting the index-2 table offset. */\n    var UTRIE2_SHIFT_2 = 5;\n    /** Shift size for getting the index-1 table offset. */\n    var UTRIE2_SHIFT_1 = 6 + 5;\n    /**\n     * Shift size for shifting left the index array values.\n     * Increases possible data size with 16-bit index values at the cost\n     * of compactability.\n     * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY.\n     */\n    var UTRIE2_INDEX_SHIFT = 2;\n    /**\n     * Difference between the two shift sizes,\n     * for getting an index-1 offset from an index-2 offset. 6=11-5\n     */\n    var UTRIE2_SHIFT_1_2 = UTRIE2_SHIFT_1 - UTRIE2_SHIFT_2;\n    /**\n     * The part of the index-2 table for U+D800..U+DBFF stores values for\n     * lead surrogate code _units_ not code _points_.\n     * Values for lead surrogate code _points_ are indexed with this portion of the table.\n     * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.)\n     */\n    var UTRIE2_LSCP_INDEX_2_OFFSET = 0x10000 >> UTRIE2_SHIFT_2;\n    /** Number of entries in a data block. 32=0x20 */\n    var UTRIE2_DATA_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_2;\n    /** Mask for getting the lower bits for the in-data-block offset. */\n    var UTRIE2_DATA_MASK = UTRIE2_DATA_BLOCK_LENGTH - 1;\n    var UTRIE2_LSCP_INDEX_2_LENGTH = 0x400 >> UTRIE2_SHIFT_2;\n    /** Count the lengths of both BMP pieces. 2080=0x820 */\n    var UTRIE2_INDEX_2_BMP_LENGTH = UTRIE2_LSCP_INDEX_2_OFFSET + UTRIE2_LSCP_INDEX_2_LENGTH;\n    /**\n     * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.\n     * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2.\n     */\n    var UTRIE2_UTF8_2B_INDEX_2_OFFSET = UTRIE2_INDEX_2_BMP_LENGTH;\n    var UTRIE2_UTF8_2B_INDEX_2_LENGTH = 0x800 >> 6; /* U+0800 is the first code point after 2-byte UTF-8 */\n    /**\n     * The index-1 table, only used for supplementary code points, at offset 2112=0x840.\n     * Variable length, for code points up to highStart, where the last single-value range starts.\n     * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1.\n     * (For 0x100000 supplementary code points U+10000..U+10ffff.)\n     *\n     * The part of the index-2 table for supplementary code points starts\n     * after this index-1 table.\n     *\n     * Both the index-1 table and the following part of the index-2 table\n     * are omitted completely if there is only BMP data.\n     */\n    var UTRIE2_INDEX_1_OFFSET = UTRIE2_UTF8_2B_INDEX_2_OFFSET + UTRIE2_UTF8_2B_INDEX_2_LENGTH;\n    /**\n     * Number of index-1 entries for the BMP. 32=0x20\n     * This part of the index-1 table is omitted from the serialized form.\n     */\n    var UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> UTRIE2_SHIFT_1;\n    /** Number of entries in an index-2 block. 64=0x40 */\n    var UTRIE2_INDEX_2_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_1_2;\n    /** Mask for getting the lower bits for the in-index-2-block offset. */\n    var UTRIE2_INDEX_2_MASK = UTRIE2_INDEX_2_BLOCK_LENGTH - 1;\n    var slice16 = function (view, start, end) {\n        if (view.slice) {\n            return view.slice(start, end);\n        }\n        return new Uint16Array(Array.prototype.slice.call(view, start, end));\n    };\n    var slice32 = function (view, start, end) {\n        if (view.slice) {\n            return view.slice(start, end);\n        }\n        return new Uint32Array(Array.prototype.slice.call(view, start, end));\n    };\n    var createTrieFromBase64 = function (base64, _byteLength) {\n        var buffer = decode(base64);\n        var view32 = Array.isArray(buffer) ? polyUint32Array(buffer) : new Uint32Array(buffer);\n        var view16 = Array.isArray(buffer) ? polyUint16Array(buffer) : new Uint16Array(buffer);\n        var headerLength = 24;\n        var index = slice16(view16, headerLength / 2, view32[4] / 2);\n        var data = view32[5] === 2\n            ? slice16(view16, (headerLength + view32[4]) / 2)\n            : slice32(view32, Math.ceil((headerLength + view32[4]) / 4));\n        return new Trie(view32[0], view32[1], view32[2], view32[3], index, data);\n    };\n    var Trie = /** @class */ (function () {\n        function Trie(initialValue, errorValue, highStart, highValueIndex, index, data) {\n            this.initialValue = initialValue;\n            this.errorValue = errorValue;\n            this.highStart = highStart;\n            this.highValueIndex = highValueIndex;\n            this.index = index;\n            this.data = data;\n        }\n        /**\n         * Get the value for a code point as stored in the Trie.\n         *\n         * @param codePoint the code point\n         * @return the value\n         */\n        Trie.prototype.get = function (codePoint) {\n            var ix;\n            if (codePoint >= 0) {\n                if (codePoint < 0x0d800 || (codePoint > 0x0dbff && codePoint <= 0x0ffff)) {\n                    // Ordinary BMP code point, excluding leading surrogates.\n                    // BMP uses a single level lookup.  BMP index starts at offset 0 in the Trie2 index.\n                    // 16 bit data is stored in the index array itself.\n                    ix = this.index[codePoint >> UTRIE2_SHIFT_2];\n                    ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n                    return this.data[ix];\n                }\n                if (codePoint <= 0xffff) {\n                    // Lead Surrogate Code Point.  A Separate index section is stored for\n                    // lead surrogate code units and code points.\n                    //   The main index has the code unit data.\n                    //   For this function, we need the code point data.\n                    // Note: this expression could be refactored for slightly improved efficiency, but\n                    //       surrogate code points will be so rare in practice that it's not worth it.\n                    ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET + ((codePoint - 0xd800) >> UTRIE2_SHIFT_2)];\n                    ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n                    return this.data[ix];\n                }\n                if (codePoint < this.highStart) {\n                    // Supplemental code point, use two-level lookup.\n                    ix = UTRIE2_INDEX_1_OFFSET - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH + (codePoint >> UTRIE2_SHIFT_1);\n                    ix = this.index[ix];\n                    ix += (codePoint >> UTRIE2_SHIFT_2) & UTRIE2_INDEX_2_MASK;\n                    ix = this.index[ix];\n                    ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n                    return this.data[ix];\n                }\n                if (codePoint <= 0x10ffff) {\n                    return this.data[this.highValueIndex];\n                }\n            }\n            // Fall through.  The code point is outside of the legal range of 0..0x10ffff.\n            return this.errorValue;\n        };\n        return Trie;\n    }());\n\n    /*\n     * base64-arraybuffer 1.0.2 <https://github.com/niklasvh/base64-arraybuffer>\n     * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>\n     * Released under MIT License\n     */\n    var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n    // Use a lookup table to find the index.\n    var lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\n    for (var i = 0; i < chars.length; i++) {\n        lookup[chars.charCodeAt(i)] = i;\n    }\n\n    var Prepend = 1;\n    var CR = 2;\n    var LF = 3;\n    var Control = 4;\n    var Extend = 5;\n    var SpacingMark = 7;\n    var L = 8;\n    var V = 9;\n    var T = 10;\n    var LV = 11;\n    var LVT = 12;\n    var ZWJ = 13;\n    var Extended_Pictographic = 14;\n    var RI = 15;\n    var toCodePoints = function (str) {\n        var codePoints = [];\n        var i = 0;\n        var length = str.length;\n        while (i < length) {\n            var value = str.charCodeAt(i++);\n            if (value >= 0xd800 && value <= 0xdbff && i < length) {\n                var extra = str.charCodeAt(i++);\n                if ((extra & 0xfc00) === 0xdc00) {\n                    codePoints.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000);\n                }\n                else {\n                    codePoints.push(value);\n                    i--;\n                }\n            }\n            else {\n                codePoints.push(value);\n            }\n        }\n        return codePoints;\n    };\n    var fromCodePoint = function () {\n        var codePoints = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            codePoints[_i] = arguments[_i];\n        }\n        if (String.fromCodePoint) {\n            return String.fromCodePoint.apply(String, codePoints);\n        }\n        var length = codePoints.length;\n        if (!length) {\n            return '';\n        }\n        var codeUnits = [];\n        var index = -1;\n        var result = '';\n        while (++index < length) {\n            var codePoint = codePoints[index];\n            if (codePoint <= 0xffff) {\n                codeUnits.push(codePoint);\n            }\n            else {\n                codePoint -= 0x10000;\n                codeUnits.push((codePoint >> 10) + 0xd800, (codePoint % 0x400) + 0xdc00);\n            }\n            if (index + 1 === length || codeUnits.length > 0x4000) {\n                result += String.fromCharCode.apply(String, codeUnits);\n                codeUnits.length = 0;\n            }\n        }\n        return result;\n    };\n    var UnicodeTrie = createTrieFromBase64(base64);\n    var BREAK_NOT_ALLOWED = '×';\n    var BREAK_ALLOWED = '÷';\n    var codePointToClass = function (codePoint) { return UnicodeTrie.get(codePoint); };\n    var _graphemeBreakAtIndex = function (_codePoints, classTypes, index) {\n        var prevIndex = index - 2;\n        var prev = classTypes[prevIndex];\n        var current = classTypes[index - 1];\n        var next = classTypes[index];\n        // GB3 Do not break between a CR and LF\n        if (current === CR && next === LF) {\n            return BREAK_NOT_ALLOWED;\n        }\n        // GB4 Otherwise, break before and after controls.\n        if (current === CR || current === LF || current === Control) {\n            return BREAK_ALLOWED;\n        }\n        // GB5\n        if (next === CR || next === LF || next === Control) {\n            return BREAK_ALLOWED;\n        }\n        // Do not break Hangul syllable sequences.\n        // GB6\n        if (current === L && [L, V, LV, LVT].indexOf(next) !== -1) {\n            return BREAK_NOT_ALLOWED;\n        }\n        // GB7\n        if ((current === LV || current === V) && (next === V || next === T)) {\n            return BREAK_NOT_ALLOWED;\n        }\n        // GB8\n        if ((current === LVT || current === T) && next === T) {\n            return BREAK_NOT_ALLOWED;\n        }\n        // GB9 Do not break before extending characters or ZWJ.\n        if (next === ZWJ || next === Extend) {\n            return BREAK_NOT_ALLOWED;\n        }\n        // Do not break before SpacingMarks, or after Prepend characters.\n        // GB9a\n        if (next === SpacingMark) {\n            return BREAK_NOT_ALLOWED;\n        }\n        // GB9a\n        if (current === Prepend) {\n            return BREAK_NOT_ALLOWED;\n        }\n        // GB11 Do not break within emoji modifier sequences or emoji zwj sequences.\n        if (current === ZWJ && next === Extended_Pictographic) {\n            while (prev === Extend) {\n                prev = classTypes[--prevIndex];\n            }\n            if (prev === Extended_Pictographic) {\n                return BREAK_NOT_ALLOWED;\n            }\n        }\n        // GB12 Do not break within emoji flag sequences.\n        // That is, do not break between regional indicator (RI) symbols\n        // if there is an odd number of RI characters before the break point.\n        if (current === RI && next === RI) {\n            var countRI = 0;\n            while (prev === RI) {\n                countRI++;\n                prev = classTypes[--prevIndex];\n            }\n            if (countRI % 2 === 0) {\n                return BREAK_NOT_ALLOWED;\n            }\n        }\n        return BREAK_ALLOWED;\n    };\n    var GraphemeBreaker = function (str) {\n        var codePoints = toCodePoints(str);\n        var length = codePoints.length;\n        var index = 0;\n        var lastEnd = 0;\n        var classTypes = codePoints.map(codePointToClass);\n        return {\n            next: function () {\n                if (index >= length) {\n                    return { done: true, value: null };\n                }\n                var graphemeBreak = BREAK_NOT_ALLOWED;\n                while (index < length &&\n                    (graphemeBreak = _graphemeBreakAtIndex(codePoints, classTypes, ++index)) === BREAK_NOT_ALLOWED) { }\n                if (graphemeBreak !== BREAK_NOT_ALLOWED || index === length) {\n                    var value = fromCodePoint.apply(null, codePoints.slice(lastEnd, index));\n                    lastEnd = index;\n                    return { value: value, done: false };\n                }\n                return { done: true, value: null };\n            },\n        };\n    };\n    var splitGraphemes = function (str) {\n        var breaker = GraphemeBreaker(str);\n        var graphemes = [];\n        var bk;\n        while (!(bk = breaker.next()).done) {\n            if (bk.value) {\n                graphemes.push(bk.value.slice());\n            }\n        }\n        return graphemes;\n    };\n\n    var testRangeBounds = function (document) {\n        var TEST_HEIGHT = 123;\n        if (document.createRange) {\n            var range = document.createRange();\n            if (range.getBoundingClientRect) {\n                var testElement = document.createElement('boundtest');\n                testElement.style.height = TEST_HEIGHT + \"px\";\n                testElement.style.display = 'block';\n                document.body.appendChild(testElement);\n                range.selectNode(testElement);\n                var rangeBounds = range.getBoundingClientRect();\n                var rangeHeight = Math.round(rangeBounds.height);\n                document.body.removeChild(testElement);\n                if (rangeHeight === TEST_HEIGHT) {\n                    return true;\n                }\n            }\n        }\n        return false;\n    };\n    var testIOSLineBreak = function (document) {\n        var testElement = document.createElement('boundtest');\n        testElement.style.width = '50px';\n        testElement.style.display = 'block';\n        testElement.style.fontSize = '12px';\n        testElement.style.letterSpacing = '0px';\n        testElement.style.wordSpacing = '0px';\n        document.body.appendChild(testElement);\n        var range = document.createRange();\n        testElement.innerHTML = typeof ''.repeat === 'function' ? '&#128104;'.repeat(10) : '';\n        var node = testElement.firstChild;\n        var textList = toCodePoints$1(node.data).map(function (i) { return fromCodePoint$1(i); });\n        var offset = 0;\n        var prev = {};\n        // ios 13 does not handle range getBoundingClientRect line changes correctly #2177\n        var supports = textList.every(function (text, i) {\n            range.setStart(node, offset);\n            range.setEnd(node, offset + text.length);\n            var rect = range.getBoundingClientRect();\n            offset += text.length;\n            var boundAhead = rect.x > prev.x || rect.y > prev.y;\n            prev = rect;\n            if (i === 0) {\n                return true;\n            }\n            return boundAhead;\n        });\n        document.body.removeChild(testElement);\n        return supports;\n    };\n    var testCORS = function () { return typeof new Image().crossOrigin !== 'undefined'; };\n    var testResponseType = function () { return typeof new XMLHttpRequest().responseType === 'string'; };\n    var testSVG = function (document) {\n        var img = new Image();\n        var canvas = document.createElement('canvas');\n        var ctx = canvas.getContext('2d');\n        if (!ctx) {\n            return false;\n        }\n        img.src = \"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'></svg>\";\n        try {\n            ctx.drawImage(img, 0, 0);\n            canvas.toDataURL();\n        }\n        catch (e) {\n            return false;\n        }\n        return true;\n    };\n    var isGreenPixel = function (data) {\n        return data[0] === 0 && data[1] === 255 && data[2] === 0 && data[3] === 255;\n    };\n    var testForeignObject = function (document) {\n        var canvas = document.createElement('canvas');\n        var size = 100;\n        canvas.width = size;\n        canvas.height = size;\n        var ctx = canvas.getContext('2d');\n        if (!ctx) {\n            return Promise.reject(false);\n        }\n        ctx.fillStyle = 'rgb(0, 255, 0)';\n        ctx.fillRect(0, 0, size, size);\n        var img = new Image();\n        var greenImageSrc = canvas.toDataURL();\n        img.src = greenImageSrc;\n        var svg = createForeignObjectSVG(size, size, 0, 0, img);\n        ctx.fillStyle = 'red';\n        ctx.fillRect(0, 0, size, size);\n        return loadSerializedSVG$1(svg)\n            .then(function (img) {\n            ctx.drawImage(img, 0, 0);\n            var data = ctx.getImageData(0, 0, size, size).data;\n            ctx.fillStyle = 'red';\n            ctx.fillRect(0, 0, size, size);\n            var node = document.createElement('div');\n            node.style.backgroundImage = \"url(\" + greenImageSrc + \")\";\n            node.style.height = size + \"px\";\n            // Firefox 55 does not render inline <img /> tags\n            return isGreenPixel(data)\n                ? loadSerializedSVG$1(createForeignObjectSVG(size, size, 0, 0, node))\n                : Promise.reject(false);\n        })\n            .then(function (img) {\n            ctx.drawImage(img, 0, 0);\n            // Edge does not render background-images\n            return isGreenPixel(ctx.getImageData(0, 0, size, size).data);\n        })\n            .catch(function () { return false; });\n    };\n    var createForeignObjectSVG = function (width, height, x, y, node) {\n        var xmlns = 'http://www.w3.org/2000/svg';\n        var svg = document.createElementNS(xmlns, 'svg');\n        var foreignObject = document.createElementNS(xmlns, 'foreignObject');\n        svg.setAttributeNS(null, 'width', width.toString());\n        svg.setAttributeNS(null, 'height', height.toString());\n        foreignObject.setAttributeNS(null, 'width', '100%');\n        foreignObject.setAttributeNS(null, 'height', '100%');\n        foreignObject.setAttributeNS(null, 'x', x.toString());\n        foreignObject.setAttributeNS(null, 'y', y.toString());\n        foreignObject.setAttributeNS(null, 'externalResourcesRequired', 'true');\n        svg.appendChild(foreignObject);\n        foreignObject.appendChild(node);\n        return svg;\n    };\n    var loadSerializedSVG$1 = function (svg) {\n        return new Promise(function (resolve, reject) {\n            var img = new Image();\n            img.onload = function () { return resolve(img); };\n            img.onerror = reject;\n            img.src = \"data:image/svg+xml;charset=utf-8,\" + encodeURIComponent(new XMLSerializer().serializeToString(svg));\n        });\n    };\n    var FEATURES = {\n        get SUPPORT_RANGE_BOUNDS() {\n            var value = testRangeBounds(document);\n            Object.defineProperty(FEATURES, 'SUPPORT_RANGE_BOUNDS', { value: value });\n            return value;\n        },\n        get SUPPORT_WORD_BREAKING() {\n            var value = FEATURES.SUPPORT_RANGE_BOUNDS && testIOSLineBreak(document);\n            Object.defineProperty(FEATURES, 'SUPPORT_WORD_BREAKING', { value: value });\n            return value;\n        },\n        get SUPPORT_SVG_DRAWING() {\n            var value = testSVG(document);\n            Object.defineProperty(FEATURES, 'SUPPORT_SVG_DRAWING', { value: value });\n            return value;\n        },\n        get SUPPORT_FOREIGNOBJECT_DRAWING() {\n            var value = typeof Array.from === 'function' && typeof window.fetch === 'function'\n                ? testForeignObject(document)\n                : Promise.resolve(false);\n            Object.defineProperty(FEATURES, 'SUPPORT_FOREIGNOBJECT_DRAWING', { value: value });\n            return value;\n        },\n        get SUPPORT_CORS_IMAGES() {\n            var value = testCORS();\n            Object.defineProperty(FEATURES, 'SUPPORT_CORS_IMAGES', { value: value });\n            return value;\n        },\n        get SUPPORT_RESPONSE_TYPE() {\n            var value = testResponseType();\n            Object.defineProperty(FEATURES, 'SUPPORT_RESPONSE_TYPE', { value: value });\n            return value;\n        },\n        get SUPPORT_CORS_XHR() {\n            var value = 'withCredentials' in new XMLHttpRequest();\n            Object.defineProperty(FEATURES, 'SUPPORT_CORS_XHR', { value: value });\n            return value;\n        },\n        get SUPPORT_NATIVE_TEXT_SEGMENTATION() {\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n            var value = !!(typeof Intl !== 'undefined' && Intl.Segmenter);\n            Object.defineProperty(FEATURES, 'SUPPORT_NATIVE_TEXT_SEGMENTATION', { value: value });\n            return value;\n        }\n    };\n\n    var TextBounds = /** @class */ (function () {\n        function TextBounds(text, bounds) {\n            this.text = text;\n            this.bounds = bounds;\n        }\n        return TextBounds;\n    }());\n    var parseTextBounds = function (context, value, styles, node) {\n        var textList = breakText(value, styles);\n        var textBounds = [];\n        var offset = 0;\n        textList.forEach(function (text) {\n            if (styles.textDecorationLine.length || text.trim().length > 0) {\n                if (FEATURES.SUPPORT_RANGE_BOUNDS) {\n                    var clientRects = createRange(node, offset, text.length).getClientRects();\n                    if (clientRects.length > 1) {\n                        var subSegments = segmentGraphemes(text);\n                        var subOffset_1 = 0;\n                        subSegments.forEach(function (subSegment) {\n                            textBounds.push(new TextBounds(subSegment, Bounds.fromDOMRectList(context, createRange(node, subOffset_1 + offset, subSegment.length).getClientRects())));\n                            subOffset_1 += subSegment.length;\n                        });\n                    }\n                    else {\n                        textBounds.push(new TextBounds(text, Bounds.fromDOMRectList(context, clientRects)));\n                    }\n                }\n                else {\n                    var replacementNode = node.splitText(text.length);\n                    textBounds.push(new TextBounds(text, getWrapperBounds(context, node)));\n                    node = replacementNode;\n                }\n            }\n            else if (!FEATURES.SUPPORT_RANGE_BOUNDS) {\n                node = node.splitText(text.length);\n            }\n            offset += text.length;\n        });\n        return textBounds;\n    };\n    var getWrapperBounds = function (context, node) {\n        var ownerDocument = node.ownerDocument;\n        if (ownerDocument) {\n            var wrapper = ownerDocument.createElement('html2canvaswrapper');\n            wrapper.appendChild(node.cloneNode(true));\n            var parentNode = node.parentNode;\n            if (parentNode) {\n                parentNode.replaceChild(wrapper, node);\n                var bounds = parseBounds(context, wrapper);\n                if (wrapper.firstChild) {\n                    parentNode.replaceChild(wrapper.firstChild, wrapper);\n                }\n                return bounds;\n            }\n        }\n        return Bounds.EMPTY;\n    };\n    var createRange = function (node, offset, length) {\n        var ownerDocument = node.ownerDocument;\n        if (!ownerDocument) {\n            throw new Error('Node has no owner document');\n        }\n        var range = ownerDocument.createRange();\n        range.setStart(node, offset);\n        range.setEnd(node, offset + length);\n        return range;\n    };\n    var segmentGraphemes = function (value) {\n        if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) {\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n            var segmenter = new Intl.Segmenter(void 0, { granularity: 'grapheme' });\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n            return Array.from(segmenter.segment(value)).map(function (segment) { return segment.segment; });\n        }\n        return splitGraphemes(value);\n    };\n    var segmentWords = function (value, styles) {\n        if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) {\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n            var segmenter = new Intl.Segmenter(void 0, {\n                granularity: 'word'\n            });\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n            return Array.from(segmenter.segment(value)).map(function (segment) { return segment.segment; });\n        }\n        return breakWords(value, styles);\n    };\n    var breakText = function (value, styles) {\n        return styles.letterSpacing !== 0 ? segmentGraphemes(value) : segmentWords(value, styles);\n    };\n    // https://drafts.csswg.org/css-text/#word-separator\n    var wordSeparators = [0x0020, 0x00a0, 0x1361, 0x10100, 0x10101, 0x1039, 0x1091];\n    var breakWords = function (str, styles) {\n        var breaker = LineBreaker(str, {\n            lineBreak: styles.lineBreak,\n            wordBreak: styles.overflowWrap === \"break-word\" /* BREAK_WORD */ ? 'break-word' : styles.wordBreak\n        });\n        var words = [];\n        var bk;\n        var _loop_1 = function () {\n            if (bk.value) {\n                var value = bk.value.slice();\n                var codePoints = toCodePoints$1(value);\n                var word_1 = '';\n                codePoints.forEach(function (codePoint) {\n                    if (wordSeparators.indexOf(codePoint) === -1) {\n                        word_1 += fromCodePoint$1(codePoint);\n                    }\n                    else {\n                        if (word_1.length) {\n                            words.push(word_1);\n                        }\n                        words.push(fromCodePoint$1(codePoint));\n                        word_1 = '';\n                    }\n                });\n                if (word_1.length) {\n                    words.push(word_1);\n                }\n            }\n        };\n        while (!(bk = breaker.next()).done) {\n            _loop_1();\n        }\n        return words;\n    };\n\n    var TextContainer = /** @class */ (function () {\n        function TextContainer(context, node, styles) {\n            this.text = transform(node.data, styles.textTransform);\n            this.textBounds = parseTextBounds(context, this.text, styles, node);\n        }\n        return TextContainer;\n    }());\n    var transform = function (text, transform) {\n        switch (transform) {\n            case 1 /* LOWERCASE */:\n                return text.toLowerCase();\n            case 3 /* CAPITALIZE */:\n                return text.replace(CAPITALIZE, capitalize);\n            case 2 /* UPPERCASE */:\n                return text.toUpperCase();\n            default:\n                return text;\n        }\n    };\n    var CAPITALIZE = /(^|\\s|:|-|\\(|\\))([a-z])/g;\n    var capitalize = function (m, p1, p2) {\n        if (m.length > 0) {\n            return p1 + p2.toUpperCase();\n        }\n        return m;\n    };\n\n    var ImageElementContainer = /** @class */ (function (_super) {\n        __extends(ImageElementContainer, _super);\n        function ImageElementContainer(context, img) {\n            var _this = _super.call(this, context, img) || this;\n            _this.src = img.currentSrc || img.src;\n            _this.intrinsicWidth = img.naturalWidth;\n            _this.intrinsicHeight = img.naturalHeight;\n            _this.context.cache.addImage(_this.src);\n            return _this;\n        }\n        return ImageElementContainer;\n    }(ElementContainer));\n\n    var CanvasElementContainer = /** @class */ (function (_super) {\n        __extends(CanvasElementContainer, _super);\n        function CanvasElementContainer(context, canvas) {\n            var _this = _super.call(this, context, canvas) || this;\n            _this.canvas = canvas;\n            _this.intrinsicWidth = canvas.width;\n            _this.intrinsicHeight = canvas.height;\n            return _this;\n        }\n        return CanvasElementContainer;\n    }(ElementContainer));\n\n    var SVGElementContainer = /** @class */ (function (_super) {\n        __extends(SVGElementContainer, _super);\n        function SVGElementContainer(context, img) {\n            var _this = _super.call(this, context, img) || this;\n            var s = new XMLSerializer();\n            var bounds = parseBounds(context, img);\n            img.setAttribute('width', bounds.width + \"px\");\n            img.setAttribute('height', bounds.height + \"px\");\n            _this.svg = \"data:image/svg+xml,\" + encodeURIComponent(s.serializeToString(img));\n            _this.intrinsicWidth = img.width.baseVal.value;\n            _this.intrinsicHeight = img.height.baseVal.value;\n            _this.context.cache.addImage(_this.svg);\n            return _this;\n        }\n        return SVGElementContainer;\n    }(ElementContainer));\n\n    var LIElementContainer = /** @class */ (function (_super) {\n        __extends(LIElementContainer, _super);\n        function LIElementContainer(context, element) {\n            var _this = _super.call(this, context, element) || this;\n            _this.value = element.value;\n            return _this;\n        }\n        return LIElementContainer;\n    }(ElementContainer));\n\n    var OLElementContainer = /** @class */ (function (_super) {\n        __extends(OLElementContainer, _super);\n        function OLElementContainer(context, element) {\n            var _this = _super.call(this, context, element) || this;\n            _this.start = element.start;\n            _this.reversed = typeof element.reversed === 'boolean' && element.reversed === true;\n            return _this;\n        }\n        return OLElementContainer;\n    }(ElementContainer));\n\n    var CHECKBOX_BORDER_RADIUS = [\n        {\n            type: 15 /* DIMENSION_TOKEN */,\n            flags: 0,\n            unit: 'px',\n            number: 3\n        }\n    ];\n    var RADIO_BORDER_RADIUS = [\n        {\n            type: 16 /* PERCENTAGE_TOKEN */,\n            flags: 0,\n            number: 50\n        }\n    ];\n    var reformatInputBounds = function (bounds) {\n        if (bounds.width > bounds.height) {\n            return new Bounds(bounds.left + (bounds.width - bounds.height) / 2, bounds.top, bounds.height, bounds.height);\n        }\n        else if (bounds.width < bounds.height) {\n            return new Bounds(bounds.left, bounds.top + (bounds.height - bounds.width) / 2, bounds.width, bounds.width);\n        }\n        return bounds;\n    };\n    var getInputValue = function (node) {\n        var value = node.type === PASSWORD ? new Array(node.value.length + 1).join('\\u2022') : node.value;\n        return value.length === 0 ? node.placeholder || '' : value;\n    };\n    var CHECKBOX = 'checkbox';\n    var RADIO = 'radio';\n    var PASSWORD = 'password';\n    var INPUT_COLOR = 0x2a2a2aff;\n    var InputElementContainer = /** @class */ (function (_super) {\n        __extends(InputElementContainer, _super);\n        function InputElementContainer(context, input) {\n            var _this = _super.call(this, context, input) || this;\n            _this.type = input.type.toLowerCase();\n            _this.checked = input.checked;\n            _this.value = getInputValue(input);\n            if (_this.type === CHECKBOX || _this.type === RADIO) {\n                _this.styles.backgroundColor = 0xdededeff;\n                _this.styles.borderTopColor =\n                    _this.styles.borderRightColor =\n                        _this.styles.borderBottomColor =\n                            _this.styles.borderLeftColor =\n                                0xa5a5a5ff;\n                _this.styles.borderTopWidth =\n                    _this.styles.borderRightWidth =\n                        _this.styles.borderBottomWidth =\n                            _this.styles.borderLeftWidth =\n                                1;\n                _this.styles.borderTopStyle =\n                    _this.styles.borderRightStyle =\n                        _this.styles.borderBottomStyle =\n                            _this.styles.borderLeftStyle =\n                                1 /* SOLID */;\n                _this.styles.backgroundClip = [0 /* BORDER_BOX */];\n                _this.styles.backgroundOrigin = [0 /* BORDER_BOX */];\n                _this.bounds = reformatInputBounds(_this.bounds);\n            }\n            switch (_this.type) {\n                case CHECKBOX:\n                    _this.styles.borderTopRightRadius =\n                        _this.styles.borderTopLeftRadius =\n                            _this.styles.borderBottomRightRadius =\n                                _this.styles.borderBottomLeftRadius =\n                                    CHECKBOX_BORDER_RADIUS;\n                    break;\n                case RADIO:\n                    _this.styles.borderTopRightRadius =\n                        _this.styles.borderTopLeftRadius =\n                            _this.styles.borderBottomRightRadius =\n                                _this.styles.borderBottomLeftRadius =\n                                    RADIO_BORDER_RADIUS;\n                    break;\n            }\n            return _this;\n        }\n        return InputElementContainer;\n    }(ElementContainer));\n\n    var SelectElementContainer = /** @class */ (function (_super) {\n        __extends(SelectElementContainer, _super);\n        function SelectElementContainer(context, element) {\n            var _this = _super.call(this, context, element) || this;\n            var option = element.options[element.selectedIndex || 0];\n            _this.value = option ? option.text || '' : '';\n            return _this;\n        }\n        return SelectElementContainer;\n    }(ElementContainer));\n\n    var TextareaElementContainer = /** @class */ (function (_super) {\n        __extends(TextareaElementContainer, _super);\n        function TextareaElementContainer(context, element) {\n            var _this = _super.call(this, context, element) || this;\n            _this.value = element.value;\n            return _this;\n        }\n        return TextareaElementContainer;\n    }(ElementContainer));\n\n    var IFrameElementContainer = /** @class */ (function (_super) {\n        __extends(IFrameElementContainer, _super);\n        function IFrameElementContainer(context, iframe) {\n            var _this = _super.call(this, context, iframe) || this;\n            _this.src = iframe.src;\n            _this.width = parseInt(iframe.width, 10) || 0;\n            _this.height = parseInt(iframe.height, 10) || 0;\n            _this.backgroundColor = _this.styles.backgroundColor;\n            try {\n                if (iframe.contentWindow &&\n                    iframe.contentWindow.document &&\n                    iframe.contentWindow.document.documentElement) {\n                    _this.tree = parseTree(context, iframe.contentWindow.document.documentElement);\n                    // http://www.w3.org/TR/css3-background/#special-backgrounds\n                    var documentBackgroundColor = iframe.contentWindow.document.documentElement\n                        ? parseColor(context, getComputedStyle(iframe.contentWindow.document.documentElement).backgroundColor)\n                        : COLORS.TRANSPARENT;\n                    var bodyBackgroundColor = iframe.contentWindow.document.body\n                        ? parseColor(context, getComputedStyle(iframe.contentWindow.document.body).backgroundColor)\n                        : COLORS.TRANSPARENT;\n                    _this.backgroundColor = isTransparent(documentBackgroundColor)\n                        ? isTransparent(bodyBackgroundColor)\n                            ? _this.styles.backgroundColor\n                            : bodyBackgroundColor\n                        : documentBackgroundColor;\n                }\n            }\n            catch (e) { }\n            return _this;\n        }\n        return IFrameElementContainer;\n    }(ElementContainer));\n\n    var LIST_OWNERS = ['OL', 'UL', 'MENU'];\n    var parseNodeTree = function (context, node, parent, root) {\n        for (var childNode = node.firstChild, nextNode = void 0; childNode; childNode = nextNode) {\n            nextNode = childNode.nextSibling;\n            if (isTextNode(childNode) && childNode.data.trim().length > 0) {\n                parent.textNodes.push(new TextContainer(context, childNode, parent.styles));\n            }\n            else if (isElementNode(childNode)) {\n                if (isSlotElement(childNode) && childNode.assignedNodes) {\n                    childNode.assignedNodes().forEach(function (childNode) { return parseNodeTree(context, childNode, parent, root); });\n                }\n                else {\n                    var container = createContainer(context, childNode);\n                    if (container.styles.isVisible()) {\n                        if (createsRealStackingContext(childNode, container, root)) {\n                            container.flags |= 4 /* CREATES_REAL_STACKING_CONTEXT */;\n                        }\n                        else if (createsStackingContext(container.styles)) {\n                            container.flags |= 2 /* CREATES_STACKING_CONTEXT */;\n                        }\n                        if (LIST_OWNERS.indexOf(childNode.tagName) !== -1) {\n                            container.flags |= 8 /* IS_LIST_OWNER */;\n                        }\n                        parent.elements.push(container);\n                        childNode.slot;\n                        if (childNode.shadowRoot) {\n                            parseNodeTree(context, childNode.shadowRoot, container, root);\n                        }\n                        else if (!isTextareaElement(childNode) &&\n                            !isSVGElement(childNode) &&\n                            !isSelectElement(childNode)) {\n                            parseNodeTree(context, childNode, container, root);\n                        }\n                    }\n                }\n            }\n        }\n    };\n    var createContainer = function (context, element) {\n        if (isImageElement(element)) {\n            return new ImageElementContainer(context, element);\n        }\n        if (isCanvasElement(element)) {\n            return new CanvasElementContainer(context, element);\n        }\n        if (isSVGElement(element)) {\n            return new SVGElementContainer(context, element);\n        }\n        if (isLIElement(element)) {\n            return new LIElementContainer(context, element);\n        }\n        if (isOLElement(element)) {\n            return new OLElementContainer(context, element);\n        }\n        if (isInputElement(element)) {\n            return new InputElementContainer(context, element);\n        }\n        if (isSelectElement(element)) {\n            return new SelectElementContainer(context, element);\n        }\n        if (isTextareaElement(element)) {\n            return new TextareaElementContainer(context, element);\n        }\n        if (isIFrameElement(element)) {\n            return new IFrameElementContainer(context, element);\n        }\n        return new ElementContainer(context, element);\n    };\n    var parseTree = function (context, element) {\n        var container = createContainer(context, element);\n        container.flags |= 4 /* CREATES_REAL_STACKING_CONTEXT */;\n        parseNodeTree(context, element, container, container);\n        return container;\n    };\n    var createsRealStackingContext = function (node, container, root) {\n        return (container.styles.isPositionedWithZIndex() ||\n            container.styles.opacity < 1 ||\n            container.styles.isTransformed() ||\n            (isBodyElement(node) && root.styles.isTransparent()));\n    };\n    var createsStackingContext = function (styles) { return styles.isPositioned() || styles.isFloating(); };\n    var isTextNode = function (node) { return node.nodeType === Node.TEXT_NODE; };\n    var isElementNode = function (node) { return node.nodeType === Node.ELEMENT_NODE; };\n    var isHTMLElementNode = function (node) {\n        return isElementNode(node) && typeof node.style !== 'undefined' && !isSVGElementNode(node);\n    };\n    var isSVGElementNode = function (element) {\n        return typeof element.className === 'object';\n    };\n    var isLIElement = function (node) { return node.tagName === 'LI'; };\n    var isOLElement = function (node) { return node.tagName === 'OL'; };\n    var isInputElement = function (node) { return node.tagName === 'INPUT'; };\n    var isHTMLElement = function (node) { return node.tagName === 'HTML'; };\n    var isSVGElement = function (node) { return node.tagName === 'svg'; };\n    var isBodyElement = function (node) { return node.tagName === 'BODY'; };\n    var isCanvasElement = function (node) { return node.tagName === 'CANVAS'; };\n    var isVideoElement = function (node) { return node.tagName === 'VIDEO'; };\n    var isImageElement = function (node) { return node.tagName === 'IMG'; };\n    var isIFrameElement = function (node) { return node.tagName === 'IFRAME'; };\n    var isStyleElement = function (node) { return node.tagName === 'STYLE'; };\n    var isScriptElement = function (node) { return node.tagName === 'SCRIPT'; };\n    var isTextareaElement = function (node) { return node.tagName === 'TEXTAREA'; };\n    var isSelectElement = function (node) { return node.tagName === 'SELECT'; };\n    var isSlotElement = function (node) { return node.tagName === 'SLOT'; };\n    // https://html.spec.whatwg.org/multipage/custom-elements.html#valid-custom-element-name\n    var isCustomElement = function (node) { return node.tagName.indexOf('-') > 0; };\n\n    var CounterState = /** @class */ (function () {\n        function CounterState() {\n            this.counters = {};\n        }\n        CounterState.prototype.getCounterValue = function (name) {\n            var counter = this.counters[name];\n            if (counter && counter.length) {\n                return counter[counter.length - 1];\n            }\n            return 1;\n        };\n        CounterState.prototype.getCounterValues = function (name) {\n            var counter = this.counters[name];\n            return counter ? counter : [];\n        };\n        CounterState.prototype.pop = function (counters) {\n            var _this = this;\n            counters.forEach(function (counter) { return _this.counters[counter].pop(); });\n        };\n        CounterState.prototype.parse = function (style) {\n            var _this = this;\n            var counterIncrement = style.counterIncrement;\n            var counterReset = style.counterReset;\n            var canReset = true;\n            if (counterIncrement !== null) {\n                counterIncrement.forEach(function (entry) {\n                    var counter = _this.counters[entry.counter];\n                    if (counter && entry.increment !== 0) {\n                        canReset = false;\n                        if (!counter.length) {\n                            counter.push(1);\n                        }\n                        counter[Math.max(0, counter.length - 1)] += entry.increment;\n                    }\n                });\n            }\n            var counterNames = [];\n            if (canReset) {\n                counterReset.forEach(function (entry) {\n                    var counter = _this.counters[entry.counter];\n                    counterNames.push(entry.counter);\n                    if (!counter) {\n                        counter = _this.counters[entry.counter] = [];\n                    }\n                    counter.push(entry.reset);\n                });\n            }\n            return counterNames;\n        };\n        return CounterState;\n    }());\n    var ROMAN_UPPER = {\n        integers: [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1],\n        values: ['M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I']\n    };\n    var ARMENIAN = {\n        integers: [\n            9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90, 80, 70,\n            60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1\n        ],\n        values: [\n            'Ք',\n            'Փ',\n            'Ւ',\n            'Ց',\n            'Ր',\n            'Տ',\n            'Վ',\n            'Ս',\n            'Ռ',\n            'Ջ',\n            'Պ',\n            'Չ',\n            'Ո',\n            'Շ',\n            'Ն',\n            'Յ',\n            'Մ',\n            'Ճ',\n            'Ղ',\n            'Ձ',\n            'Հ',\n            'Կ',\n            'Ծ',\n            'Խ',\n            'Լ',\n            'Ի',\n            'Ժ',\n            'Թ',\n            'Ը',\n            'Է',\n            'Զ',\n            'Ե',\n            'Դ',\n            'Գ',\n            'Բ',\n            'Ա'\n        ]\n    };\n    var HEBREW = {\n        integers: [\n            10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20,\n            19, 18, 17, 16, 15, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1\n        ],\n        values: [\n            'י׳',\n            'ט׳',\n            'ח׳',\n            'ז׳',\n            'ו׳',\n            'ה׳',\n            'ד׳',\n            'ג׳',\n            'ב׳',\n            'א׳',\n            'ת',\n            'ש',\n            'ר',\n            'ק',\n            'צ',\n            'פ',\n            'ע',\n            'ס',\n            'נ',\n            'מ',\n            'ל',\n            'כ',\n            'יט',\n            'יח',\n            'יז',\n            'טז',\n            'טו',\n            'י',\n            'ט',\n            'ח',\n            'ז',\n            'ו',\n            'ה',\n            'ד',\n            'ג',\n            'ב',\n            'א'\n        ]\n    };\n    var GEORGIAN = {\n        integers: [\n            10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90,\n            80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1\n        ],\n        values: [\n            'ჵ',\n            'ჰ',\n            'ჯ',\n            'ჴ',\n            'ხ',\n            'ჭ',\n            'წ',\n            'ძ',\n            'ც',\n            'ჩ',\n            'შ',\n            'ყ',\n            'ღ',\n            'ქ',\n            'ფ',\n            'ჳ',\n            'ტ',\n            'ს',\n            'რ',\n            'ჟ',\n            'პ',\n            'ო',\n            'ჲ',\n            'ნ',\n            'მ',\n            'ლ',\n            'კ',\n            'ი',\n            'თ',\n            'ჱ',\n            'ზ',\n            'ვ',\n            'ე',\n            'დ',\n            'გ',\n            'ბ',\n            'ა'\n        ]\n    };\n    var createAdditiveCounter = function (value, min, max, symbols, fallback, suffix) {\n        if (value < min || value > max) {\n            return createCounterText(value, fallback, suffix.length > 0);\n        }\n        return (symbols.integers.reduce(function (string, integer, index) {\n            while (value >= integer) {\n                value -= integer;\n                string += symbols.values[index];\n            }\n            return string;\n        }, '') + suffix);\n    };\n    var createCounterStyleWithSymbolResolver = function (value, codePointRangeLength, isNumeric, resolver) {\n        var string = '';\n        do {\n            if (!isNumeric) {\n                value--;\n            }\n            string = resolver(value) + string;\n            value /= codePointRangeLength;\n        } while (value * codePointRangeLength >= codePointRangeLength);\n        return string;\n    };\n    var createCounterStyleFromRange = function (value, codePointRangeStart, codePointRangeEnd, isNumeric, suffix) {\n        var codePointRangeLength = codePointRangeEnd - codePointRangeStart + 1;\n        return ((value < 0 ? '-' : '') +\n            (createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, isNumeric, function (codePoint) {\n                return fromCodePoint$1(Math.floor(codePoint % codePointRangeLength) + codePointRangeStart);\n            }) +\n                suffix));\n    };\n    var createCounterStyleFromSymbols = function (value, symbols, suffix) {\n        if (suffix === void 0) { suffix = '. '; }\n        var codePointRangeLength = symbols.length;\n        return (createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, false, function (codePoint) { return symbols[Math.floor(codePoint % codePointRangeLength)]; }) + suffix);\n    };\n    var CJK_ZEROS = 1 << 0;\n    var CJK_TEN_COEFFICIENTS = 1 << 1;\n    var CJK_TEN_HIGH_COEFFICIENTS = 1 << 2;\n    var CJK_HUNDRED_COEFFICIENTS = 1 << 3;\n    var createCJKCounter = function (value, numbers, multipliers, negativeSign, suffix, flags) {\n        if (value < -9999 || value > 9999) {\n            return createCounterText(value, 4 /* CJK_DECIMAL */, suffix.length > 0);\n        }\n        var tmp = Math.abs(value);\n        var string = suffix;\n        if (tmp === 0) {\n            return numbers[0] + string;\n        }\n        for (var digit = 0; tmp > 0 && digit <= 4; digit++) {\n            var coefficient = tmp % 10;\n            if (coefficient === 0 && contains(flags, CJK_ZEROS) && string !== '') {\n                string = numbers[coefficient] + string;\n            }\n            else if (coefficient > 1 ||\n                (coefficient === 1 && digit === 0) ||\n                (coefficient === 1 && digit === 1 && contains(flags, CJK_TEN_COEFFICIENTS)) ||\n                (coefficient === 1 && digit === 1 && contains(flags, CJK_TEN_HIGH_COEFFICIENTS) && value > 100) ||\n                (coefficient === 1 && digit > 1 && contains(flags, CJK_HUNDRED_COEFFICIENTS))) {\n                string = numbers[coefficient] + (digit > 0 ? multipliers[digit - 1] : '') + string;\n            }\n            else if (coefficient === 1 && digit > 0) {\n                string = multipliers[digit - 1] + string;\n            }\n            tmp = Math.floor(tmp / 10);\n        }\n        return (value < 0 ? negativeSign : '') + string;\n    };\n    var CHINESE_INFORMAL_MULTIPLIERS = '十百千萬';\n    var CHINESE_FORMAL_MULTIPLIERS = '拾佰仟萬';\n    var JAPANESE_NEGATIVE = 'マイナス';\n    var KOREAN_NEGATIVE = '마이너스';\n    var createCounterText = function (value, type, appendSuffix) {\n        var defaultSuffix = appendSuffix ? '. ' : '';\n        var cjkSuffix = appendSuffix ? '、' : '';\n        var koreanSuffix = appendSuffix ? ', ' : '';\n        var spaceSuffix = appendSuffix ? ' ' : '';\n        switch (type) {\n            case 0 /* DISC */:\n                return '•' + spaceSuffix;\n            case 1 /* CIRCLE */:\n                return '◦' + spaceSuffix;\n            case 2 /* SQUARE */:\n                return '◾' + spaceSuffix;\n            case 5 /* DECIMAL_LEADING_ZERO */:\n                var string = createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);\n                return string.length < 4 ? \"0\" + string : string;\n            case 4 /* CJK_DECIMAL */:\n                return createCounterStyleFromSymbols(value, '〇一二三四五六七八九', cjkSuffix);\n            case 6 /* LOWER_ROMAN */:\n                return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, 3 /* DECIMAL */, defaultSuffix).toLowerCase();\n            case 7 /* UPPER_ROMAN */:\n                return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, 3 /* DECIMAL */, defaultSuffix);\n            case 8 /* LOWER_GREEK */:\n                return createCounterStyleFromRange(value, 945, 969, false, defaultSuffix);\n            case 9 /* LOWER_ALPHA */:\n                return createCounterStyleFromRange(value, 97, 122, false, defaultSuffix);\n            case 10 /* UPPER_ALPHA */:\n                return createCounterStyleFromRange(value, 65, 90, false, defaultSuffix);\n            case 11 /* ARABIC_INDIC */:\n                return createCounterStyleFromRange(value, 1632, 1641, true, defaultSuffix);\n            case 12 /* ARMENIAN */:\n            case 49 /* UPPER_ARMENIAN */:\n                return createAdditiveCounter(value, 1, 9999, ARMENIAN, 3 /* DECIMAL */, defaultSuffix);\n            case 35 /* LOWER_ARMENIAN */:\n                return createAdditiveCounter(value, 1, 9999, ARMENIAN, 3 /* DECIMAL */, defaultSuffix).toLowerCase();\n            case 13 /* BENGALI */:\n                return createCounterStyleFromRange(value, 2534, 2543, true, defaultSuffix);\n            case 14 /* CAMBODIAN */:\n            case 30 /* KHMER */:\n                return createCounterStyleFromRange(value, 6112, 6121, true, defaultSuffix);\n            case 15 /* CJK_EARTHLY_BRANCH */:\n                return createCounterStyleFromSymbols(value, '子丑寅卯辰巳午未申酉戌亥', cjkSuffix);\n            case 16 /* CJK_HEAVENLY_STEM */:\n                return createCounterStyleFromSymbols(value, '甲乙丙丁戊己庚辛壬癸', cjkSuffix);\n            case 17 /* CJK_IDEOGRAPHIC */:\n            case 48 /* TRAD_CHINESE_INFORMAL */:\n                return createCJKCounter(value, '零一二三四五六七八九', CHINESE_INFORMAL_MULTIPLIERS, '負', cjkSuffix, CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);\n            case 47 /* TRAD_CHINESE_FORMAL */:\n                return createCJKCounter(value, '零壹貳參肆伍陸柒捌玖', CHINESE_FORMAL_MULTIPLIERS, '負', cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);\n            case 42 /* SIMP_CHINESE_INFORMAL */:\n                return createCJKCounter(value, '零一二三四五六七八九', CHINESE_INFORMAL_MULTIPLIERS, '负', cjkSuffix, CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);\n            case 41 /* SIMP_CHINESE_FORMAL */:\n                return createCJKCounter(value, '零壹贰叁肆伍陆柒捌玖', CHINESE_FORMAL_MULTIPLIERS, '负', cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);\n            case 26 /* JAPANESE_INFORMAL */:\n                return createCJKCounter(value, '〇一二三四五六七八九', '十百千万', JAPANESE_NEGATIVE, cjkSuffix, 0);\n            case 25 /* JAPANESE_FORMAL */:\n                return createCJKCounter(value, '零壱弐参四伍六七八九', '拾百千万', JAPANESE_NEGATIVE, cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);\n            case 31 /* KOREAN_HANGUL_FORMAL */:\n                return createCJKCounter(value, '영일이삼사오육칠팔구', '십백천만', KOREAN_NEGATIVE, koreanSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);\n            case 33 /* KOREAN_HANJA_INFORMAL */:\n                return createCJKCounter(value, '零一二三四五六七八九', '十百千萬', KOREAN_NEGATIVE, koreanSuffix, 0);\n            case 32 /* KOREAN_HANJA_FORMAL */:\n                return createCJKCounter(value, '零壹貳參四五六七八九', '拾百千', KOREAN_NEGATIVE, koreanSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);\n            case 18 /* DEVANAGARI */:\n                return createCounterStyleFromRange(value, 0x966, 0x96f, true, defaultSuffix);\n            case 20 /* GEORGIAN */:\n                return createAdditiveCounter(value, 1, 19999, GEORGIAN, 3 /* DECIMAL */, defaultSuffix);\n            case 21 /* GUJARATI */:\n                return createCounterStyleFromRange(value, 0xae6, 0xaef, true, defaultSuffix);\n            case 22 /* GURMUKHI */:\n                return createCounterStyleFromRange(value, 0xa66, 0xa6f, true, defaultSuffix);\n            case 22 /* HEBREW */:\n                return createAdditiveCounter(value, 1, 10999, HEBREW, 3 /* DECIMAL */, defaultSuffix);\n            case 23 /* HIRAGANA */:\n                return createCounterStyleFromSymbols(value, 'あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん');\n            case 24 /* HIRAGANA_IROHA */:\n                return createCounterStyleFromSymbols(value, 'いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやまけふこえてあさきゆめみしゑひもせす');\n            case 27 /* KANNADA */:\n                return createCounterStyleFromRange(value, 0xce6, 0xcef, true, defaultSuffix);\n            case 28 /* KATAKANA */:\n                return createCounterStyleFromSymbols(value, 'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン', cjkSuffix);\n            case 29 /* KATAKANA_IROHA */:\n                return createCounterStyleFromSymbols(value, 'イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス', cjkSuffix);\n            case 34 /* LAO */:\n                return createCounterStyleFromRange(value, 0xed0, 0xed9, true, defaultSuffix);\n            case 37 /* MONGOLIAN */:\n                return createCounterStyleFromRange(value, 0x1810, 0x1819, true, defaultSuffix);\n            case 38 /* MYANMAR */:\n                return createCounterStyleFromRange(value, 0x1040, 0x1049, true, defaultSuffix);\n            case 39 /* ORIYA */:\n                return createCounterStyleFromRange(value, 0xb66, 0xb6f, true, defaultSuffix);\n            case 40 /* PERSIAN */:\n                return createCounterStyleFromRange(value, 0x6f0, 0x6f9, true, defaultSuffix);\n            case 43 /* TAMIL */:\n                return createCounterStyleFromRange(value, 0xbe6, 0xbef, true, defaultSuffix);\n            case 44 /* TELUGU */:\n                return createCounterStyleFromRange(value, 0xc66, 0xc6f, true, defaultSuffix);\n            case 45 /* THAI */:\n                return createCounterStyleFromRange(value, 0xe50, 0xe59, true, defaultSuffix);\n            case 46 /* TIBETAN */:\n                return createCounterStyleFromRange(value, 0xf20, 0xf29, true, defaultSuffix);\n            case 3 /* DECIMAL */:\n            default:\n                return createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);\n        }\n    };\n\n    var IGNORE_ATTRIBUTE = 'data-html2canvas-ignore';\n    var DocumentCloner = /** @class */ (function () {\n        function DocumentCloner(context, element, options) {\n            this.context = context;\n            this.options = options;\n            this.scrolledElements = [];\n            this.referenceElement = element;\n            this.counters = new CounterState();\n            this.quoteDepth = 0;\n            if (!element.ownerDocument) {\n                throw new Error('Cloned element does not have an owner document');\n            }\n            this.documentElement = this.cloneNode(element.ownerDocument.documentElement, false);\n        }\n        DocumentCloner.prototype.toIFrame = function (ownerDocument, windowSize) {\n            var _this = this;\n            var iframe = createIFrameContainer(ownerDocument, windowSize);\n            if (!iframe.contentWindow) {\n                return Promise.reject(\"Unable to find iframe window\");\n            }\n            var scrollX = ownerDocument.defaultView.pageXOffset;\n            var scrollY = ownerDocument.defaultView.pageYOffset;\n            var cloneWindow = iframe.contentWindow;\n            var documentClone = cloneWindow.document;\n            /* Chrome doesn't detect relative background-images assigned in inline <style> sheets when fetched through getComputedStyle\n             if window url is about:blank, we can assign the url to current by writing onto the document\n             */\n            var iframeLoad = iframeLoader(iframe).then(function () { return __awaiter(_this, void 0, void 0, function () {\n                var onclone, referenceElement;\n                return __generator(this, function (_a) {\n                    switch (_a.label) {\n                        case 0:\n                            this.scrolledElements.forEach(restoreNodeScroll);\n                            if (cloneWindow) {\n                                cloneWindow.scrollTo(windowSize.left, windowSize.top);\n                                if (/(iPad|iPhone|iPod)/g.test(navigator.userAgent) &&\n                                    (cloneWindow.scrollY !== windowSize.top || cloneWindow.scrollX !== windowSize.left)) {\n                                    this.context.logger.warn('Unable to restore scroll position for cloned document');\n                                    this.context.windowBounds = this.context.windowBounds.add(cloneWindow.scrollX - windowSize.left, cloneWindow.scrollY - windowSize.top, 0, 0);\n                                }\n                            }\n                            onclone = this.options.onclone;\n                            referenceElement = this.clonedReferenceElement;\n                            if (typeof referenceElement === 'undefined') {\n                                return [2 /*return*/, Promise.reject(\"Error finding the \" + this.referenceElement.nodeName + \" in the cloned document\")];\n                            }\n                            if (!(documentClone.fonts && documentClone.fonts.ready)) return [3 /*break*/, 2];\n                            return [4 /*yield*/, documentClone.fonts.ready];\n                        case 1:\n                            _a.sent();\n                            _a.label = 2;\n                        case 2:\n                            if (!/(AppleWebKit)/g.test(navigator.userAgent)) return [3 /*break*/, 4];\n                            return [4 /*yield*/, imagesReady(documentClone)];\n                        case 3:\n                            _a.sent();\n                            _a.label = 4;\n                        case 4:\n                            if (typeof onclone === 'function') {\n                                return [2 /*return*/, Promise.resolve()\n                                        .then(function () { return onclone(documentClone, referenceElement); })\n                                        .then(function () { return iframe; })];\n                            }\n                            return [2 /*return*/, iframe];\n                    }\n                });\n            }); });\n            documentClone.open();\n            documentClone.write(serializeDoctype(document.doctype) + \"<html></html>\");\n            // Chrome scrolls the parent document for some reason after the write to the cloned window???\n            restoreOwnerScroll(this.referenceElement.ownerDocument, scrollX, scrollY);\n            documentClone.replaceChild(documentClone.adoptNode(this.documentElement), documentClone.documentElement);\n            documentClone.close();\n            return iframeLoad;\n        };\n        DocumentCloner.prototype.createElementClone = function (node) {\n            if (isDebugging(node, 2 /* CLONE */)) {\n                debugger;\n            }\n            if (isCanvasElement(node)) {\n                return this.createCanvasClone(node);\n            }\n            if (isVideoElement(node)) {\n                return this.createVideoClone(node);\n            }\n            if (isStyleElement(node)) {\n                return this.createStyleClone(node);\n            }\n            var clone = node.cloneNode(false);\n            if (isImageElement(clone)) {\n                if (isImageElement(node) && node.currentSrc && node.currentSrc !== node.src) {\n                    clone.src = node.currentSrc;\n                    clone.srcset = '';\n                }\n                if (clone.loading === 'lazy') {\n                    clone.loading = 'eager';\n                }\n            }\n            if (isCustomElement(clone)) {\n                return this.createCustomElementClone(clone);\n            }\n            return clone;\n        };\n        DocumentCloner.prototype.createCustomElementClone = function (node) {\n            var clone = document.createElement('html2canvascustomelement');\n            copyCSSStyles(node.style, clone);\n            return clone;\n        };\n        DocumentCloner.prototype.createStyleClone = function (node) {\n            try {\n                var sheet = node.sheet;\n                if (sheet && sheet.cssRules) {\n                    var css = [].slice.call(sheet.cssRules, 0).reduce(function (css, rule) {\n                        if (rule && typeof rule.cssText === 'string') {\n                            return css + rule.cssText;\n                        }\n                        return css;\n                    }, '');\n                    var style = node.cloneNode(false);\n                    style.textContent = css;\n                    return style;\n                }\n            }\n            catch (e) {\n                // accessing node.sheet.cssRules throws a DOMException\n                this.context.logger.error('Unable to access cssRules property', e);\n                if (e.name !== 'SecurityError') {\n                    throw e;\n                }\n            }\n            return node.cloneNode(false);\n        };\n        DocumentCloner.prototype.createCanvasClone = function (canvas) {\n            var _a;\n            if (this.options.inlineImages && canvas.ownerDocument) {\n                var img = canvas.ownerDocument.createElement('img');\n                try {\n                    img.src = canvas.toDataURL();\n                    return img;\n                }\n                catch (e) {\n                    this.context.logger.info(\"Unable to inline canvas contents, canvas is tainted\", canvas);\n                }\n            }\n            var clonedCanvas = canvas.cloneNode(false);\n            try {\n                clonedCanvas.width = canvas.width;\n                clonedCanvas.height = canvas.height;\n                var ctx = canvas.getContext('2d');\n                var clonedCtx = clonedCanvas.getContext('2d');\n                if (clonedCtx) {\n                    if (!this.options.allowTaint && ctx) {\n                        clonedCtx.putImageData(ctx.getImageData(0, 0, canvas.width, canvas.height), 0, 0);\n                    }\n                    else {\n                        var gl = (_a = canvas.getContext('webgl2')) !== null && _a !== void 0 ? _a : canvas.getContext('webgl');\n                        if (gl) {\n                            var attribs = gl.getContextAttributes();\n                            if ((attribs === null || attribs === void 0 ? void 0 : attribs.preserveDrawingBuffer) === false) {\n                                this.context.logger.warn('Unable to clone WebGL context as it has preserveDrawingBuffer=false', canvas);\n                            }\n                        }\n                        clonedCtx.drawImage(canvas, 0, 0);\n                    }\n                }\n                return clonedCanvas;\n            }\n            catch (e) {\n                this.context.logger.info(\"Unable to clone canvas as it is tainted\", canvas);\n            }\n            return clonedCanvas;\n        };\n        DocumentCloner.prototype.createVideoClone = function (video) {\n            var canvas = video.ownerDocument.createElement('canvas');\n            canvas.width = video.offsetWidth;\n            canvas.height = video.offsetHeight;\n            var ctx = canvas.getContext('2d');\n            try {\n                if (ctx) {\n                    ctx.drawImage(video, 0, 0, canvas.width, canvas.height);\n                    if (!this.options.allowTaint) {\n                        ctx.getImageData(0, 0, canvas.width, canvas.height);\n                    }\n                }\n                return canvas;\n            }\n            catch (e) {\n                this.context.logger.info(\"Unable to clone video as it is tainted\", video);\n            }\n            var blankCanvas = video.ownerDocument.createElement('canvas');\n            blankCanvas.width = video.offsetWidth;\n            blankCanvas.height = video.offsetHeight;\n            return blankCanvas;\n        };\n        DocumentCloner.prototype.appendChildNode = function (clone, child, copyStyles) {\n            if (!isElementNode(child) ||\n                (!isScriptElement(child) &&\n                    !child.hasAttribute(IGNORE_ATTRIBUTE) &&\n                    (typeof this.options.ignoreElements !== 'function' || !this.options.ignoreElements(child)))) {\n                if (!this.options.copyStyles || !isElementNode(child) || !isStyleElement(child)) {\n                    clone.appendChild(this.cloneNode(child, copyStyles));\n                }\n            }\n        };\n        DocumentCloner.prototype.cloneChildNodes = function (node, clone, copyStyles) {\n            var _this = this;\n            for (var child = node.shadowRoot ? node.shadowRoot.firstChild : node.firstChild; child; child = child.nextSibling) {\n                if (isElementNode(child) && isSlotElement(child) && typeof child.assignedNodes === 'function') {\n                    var assignedNodes = child.assignedNodes();\n                    if (assignedNodes.length) {\n                        assignedNodes.forEach(function (assignedNode) { return _this.appendChildNode(clone, assignedNode, copyStyles); });\n                    }\n                }\n                else {\n                    this.appendChildNode(clone, child, copyStyles);\n                }\n            }\n        };\n        DocumentCloner.prototype.cloneNode = function (node, copyStyles) {\n            if (isTextNode(node)) {\n                return document.createTextNode(node.data);\n            }\n            if (!node.ownerDocument) {\n                return node.cloneNode(false);\n            }\n            var window = node.ownerDocument.defaultView;\n            if (window && isElementNode(node) && (isHTMLElementNode(node) || isSVGElementNode(node))) {\n                var clone = this.createElementClone(node);\n                clone.style.transitionProperty = 'none';\n                var style = window.getComputedStyle(node);\n                var styleBefore = window.getComputedStyle(node, ':before');\n                var styleAfter = window.getComputedStyle(node, ':after');\n                if (this.referenceElement === node && isHTMLElementNode(clone)) {\n                    this.clonedReferenceElement = clone;\n                }\n                if (isBodyElement(clone)) {\n                    createPseudoHideStyles(clone);\n                }\n                var counters = this.counters.parse(new CSSParsedCounterDeclaration(this.context, style));\n                var before = this.resolvePseudoContent(node, clone, styleBefore, PseudoElementType.BEFORE);\n                if (isCustomElement(node)) {\n                    copyStyles = true;\n                }\n                if (!isVideoElement(node)) {\n                    this.cloneChildNodes(node, clone, copyStyles);\n                }\n                if (before) {\n                    clone.insertBefore(before, clone.firstChild);\n                }\n                var after = this.resolvePseudoContent(node, clone, styleAfter, PseudoElementType.AFTER);\n                if (after) {\n                    clone.appendChild(after);\n                }\n                this.counters.pop(counters);\n                if ((style && (this.options.copyStyles || isSVGElementNode(node)) && !isIFrameElement(node)) ||\n                    copyStyles) {\n                    copyCSSStyles(style, clone);\n                }\n                if (node.scrollTop !== 0 || node.scrollLeft !== 0) {\n                    this.scrolledElements.push([clone, node.scrollLeft, node.scrollTop]);\n                }\n                if ((isTextareaElement(node) || isSelectElement(node)) &&\n                    (isTextareaElement(clone) || isSelectElement(clone))) {\n                    clone.value = node.value;\n                }\n                return clone;\n            }\n            return node.cloneNode(false);\n        };\n        DocumentCloner.prototype.resolvePseudoContent = function (node, clone, style, pseudoElt) {\n            var _this = this;\n            if (!style) {\n                return;\n            }\n            var value = style.content;\n            var document = clone.ownerDocument;\n            if (!document || !value || value === 'none' || value === '-moz-alt-content' || style.display === 'none') {\n                return;\n            }\n            this.counters.parse(new CSSParsedCounterDeclaration(this.context, style));\n            var declaration = new CSSParsedPseudoDeclaration(this.context, style);\n            var anonymousReplacedElement = document.createElement('html2canvaspseudoelement');\n            copyCSSStyles(style, anonymousReplacedElement);\n            declaration.content.forEach(function (token) {\n                if (token.type === 0 /* STRING_TOKEN */) {\n                    anonymousReplacedElement.appendChild(document.createTextNode(token.value));\n                }\n                else if (token.type === 22 /* URL_TOKEN */) {\n                    var img = document.createElement('img');\n                    img.src = token.value;\n                    img.style.opacity = '1';\n                    anonymousReplacedElement.appendChild(img);\n                }\n                else if (token.type === 18 /* FUNCTION */) {\n                    if (token.name === 'attr') {\n                        var attr = token.values.filter(isIdentToken);\n                        if (attr.length) {\n                            anonymousReplacedElement.appendChild(document.createTextNode(node.getAttribute(attr[0].value) || ''));\n                        }\n                    }\n                    else if (token.name === 'counter') {\n                        var _a = token.values.filter(nonFunctionArgSeparator), counter = _a[0], counterStyle = _a[1];\n                        if (counter && isIdentToken(counter)) {\n                            var counterState = _this.counters.getCounterValue(counter.value);\n                            var counterType = counterStyle && isIdentToken(counterStyle)\n                                ? listStyleType.parse(_this.context, counterStyle.value)\n                                : 3 /* DECIMAL */;\n                            anonymousReplacedElement.appendChild(document.createTextNode(createCounterText(counterState, counterType, false)));\n                        }\n                    }\n                    else if (token.name === 'counters') {\n                        var _b = token.values.filter(nonFunctionArgSeparator), counter = _b[0], delim = _b[1], counterStyle = _b[2];\n                        if (counter && isIdentToken(counter)) {\n                            var counterStates = _this.counters.getCounterValues(counter.value);\n                            var counterType_1 = counterStyle && isIdentToken(counterStyle)\n                                ? listStyleType.parse(_this.context, counterStyle.value)\n                                : 3 /* DECIMAL */;\n                            var separator = delim && delim.type === 0 /* STRING_TOKEN */ ? delim.value : '';\n                            var text = counterStates\n                                .map(function (value) { return createCounterText(value, counterType_1, false); })\n                                .join(separator);\n                            anonymousReplacedElement.appendChild(document.createTextNode(text));\n                        }\n                    }\n                    else ;\n                }\n                else if (token.type === 20 /* IDENT_TOKEN */) {\n                    switch (token.value) {\n                        case 'open-quote':\n                            anonymousReplacedElement.appendChild(document.createTextNode(getQuote(declaration.quotes, _this.quoteDepth++, true)));\n                            break;\n                        case 'close-quote':\n                            anonymousReplacedElement.appendChild(document.createTextNode(getQuote(declaration.quotes, --_this.quoteDepth, false)));\n                            break;\n                        default:\n                            // safari doesn't parse string tokens correctly because of lack of quotes\n                            anonymousReplacedElement.appendChild(document.createTextNode(token.value));\n                    }\n                }\n            });\n            anonymousReplacedElement.className = PSEUDO_HIDE_ELEMENT_CLASS_BEFORE + \" \" + PSEUDO_HIDE_ELEMENT_CLASS_AFTER;\n            var newClassName = pseudoElt === PseudoElementType.BEFORE\n                ? \" \" + PSEUDO_HIDE_ELEMENT_CLASS_BEFORE\n                : \" \" + PSEUDO_HIDE_ELEMENT_CLASS_AFTER;\n            if (isSVGElementNode(clone)) {\n                clone.className.baseValue += newClassName;\n            }\n            else {\n                clone.className += newClassName;\n            }\n            return anonymousReplacedElement;\n        };\n        DocumentCloner.destroy = function (container) {\n            if (container.parentNode) {\n                container.parentNode.removeChild(container);\n                return true;\n            }\n            return false;\n        };\n        return DocumentCloner;\n    }());\n    var PseudoElementType;\n    (function (PseudoElementType) {\n        PseudoElementType[PseudoElementType[\"BEFORE\"] = 0] = \"BEFORE\";\n        PseudoElementType[PseudoElementType[\"AFTER\"] = 1] = \"AFTER\";\n    })(PseudoElementType || (PseudoElementType = {}));\n    var createIFrameContainer = function (ownerDocument, bounds) {\n        var cloneIframeContainer = ownerDocument.createElement('iframe');\n        cloneIframeContainer.className = 'html2canvas-container';\n        cloneIframeContainer.style.visibility = 'hidden';\n        cloneIframeContainer.style.position = 'fixed';\n        cloneIframeContainer.style.left = '-10000px';\n        cloneIframeContainer.style.top = '0px';\n        cloneIframeContainer.style.border = '0';\n        cloneIframeContainer.width = bounds.width.toString();\n        cloneIframeContainer.height = bounds.height.toString();\n        cloneIframeContainer.scrolling = 'no'; // ios won't scroll without it\n        cloneIframeContainer.setAttribute(IGNORE_ATTRIBUTE, 'true');\n        ownerDocument.body.appendChild(cloneIframeContainer);\n        return cloneIframeContainer;\n    };\n    var imageReady = function (img) {\n        return new Promise(function (resolve) {\n            if (img.complete) {\n                resolve();\n                return;\n            }\n            if (!img.src) {\n                resolve();\n                return;\n            }\n            img.onload = resolve;\n            img.onerror = resolve;\n        });\n    };\n    var imagesReady = function (document) {\n        return Promise.all([].slice.call(document.images, 0).map(imageReady));\n    };\n    var iframeLoader = function (iframe) {\n        return new Promise(function (resolve, reject) {\n            var cloneWindow = iframe.contentWindow;\n            if (!cloneWindow) {\n                return reject(\"No window assigned for iframe\");\n            }\n            var documentClone = cloneWindow.document;\n            cloneWindow.onload = iframe.onload = function () {\n                cloneWindow.onload = iframe.onload = null;\n                var interval = setInterval(function () {\n                    if (documentClone.body.childNodes.length > 0 && documentClone.readyState === 'complete') {\n                        clearInterval(interval);\n                        resolve(iframe);\n                    }\n                }, 50);\n            };\n        });\n    };\n    var ignoredStyleProperties = [\n        'all',\n        'd',\n        'content' // Safari shows pseudoelements if content is set\n    ];\n    var copyCSSStyles = function (style, target) {\n        // Edge does not provide value for cssText\n        for (var i = style.length - 1; i >= 0; i--) {\n            var property = style.item(i);\n            if (ignoredStyleProperties.indexOf(property) === -1) {\n                target.style.setProperty(property, style.getPropertyValue(property));\n            }\n        }\n        return target;\n    };\n    var serializeDoctype = function (doctype) {\n        var str = '';\n        if (doctype) {\n            str += '<!DOCTYPE ';\n            if (doctype.name) {\n                str += doctype.name;\n            }\n            if (doctype.internalSubset) {\n                str += doctype.internalSubset;\n            }\n            if (doctype.publicId) {\n                str += \"\\\"\" + doctype.publicId + \"\\\"\";\n            }\n            if (doctype.systemId) {\n                str += \"\\\"\" + doctype.systemId + \"\\\"\";\n            }\n            str += '>';\n        }\n        return str;\n    };\n    var restoreOwnerScroll = function (ownerDocument, x, y) {\n        if (ownerDocument &&\n            ownerDocument.defaultView &&\n            (x !== ownerDocument.defaultView.pageXOffset || y !== ownerDocument.defaultView.pageYOffset)) {\n            ownerDocument.defaultView.scrollTo(x, y);\n        }\n    };\n    var restoreNodeScroll = function (_a) {\n        var element = _a[0], x = _a[1], y = _a[2];\n        element.scrollLeft = x;\n        element.scrollTop = y;\n    };\n    var PSEUDO_BEFORE = ':before';\n    var PSEUDO_AFTER = ':after';\n    var PSEUDO_HIDE_ELEMENT_CLASS_BEFORE = '___html2canvas___pseudoelement_before';\n    var PSEUDO_HIDE_ELEMENT_CLASS_AFTER = '___html2canvas___pseudoelement_after';\n    var PSEUDO_HIDE_ELEMENT_STYLE = \"{\\n    content: \\\"\\\" !important;\\n    display: none !important;\\n}\";\n    var createPseudoHideStyles = function (body) {\n        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);\n    };\n    var createStyles = function (body, styles) {\n        var document = body.ownerDocument;\n        if (document) {\n            var style = document.createElement('style');\n            style.textContent = styles;\n            body.appendChild(style);\n        }\n    };\n\n    var CacheStorage = /** @class */ (function () {\n        function CacheStorage() {\n        }\n        CacheStorage.getOrigin = function (url) {\n            var link = CacheStorage._link;\n            if (!link) {\n                return 'about:blank';\n            }\n            link.href = url;\n            link.href = link.href; // IE9, LOL! - http://jsfiddle.net/niklasvh/2e48b/\n            return link.protocol + link.hostname + link.port;\n        };\n        CacheStorage.isSameOrigin = function (src) {\n            return CacheStorage.getOrigin(src) === CacheStorage._origin;\n        };\n        CacheStorage.setContext = function (window) {\n            CacheStorage._link = window.document.createElement('a');\n            CacheStorage._origin = CacheStorage.getOrigin(window.location.href);\n        };\n        CacheStorage._origin = 'about:blank';\n        return CacheStorage;\n    }());\n    var Cache = /** @class */ (function () {\n        function Cache(context, _options) {\n            this.context = context;\n            this._options = _options;\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n            this._cache = {};\n        }\n        Cache.prototype.addImage = function (src) {\n            var result = Promise.resolve();\n            if (this.has(src)) {\n                return result;\n            }\n            if (isBlobImage(src) || isRenderable(src)) {\n                (this._cache[src] = this.loadImage(src)).catch(function () {\n                    // prevent unhandled rejection\n                });\n                return result;\n            }\n            return result;\n        };\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        Cache.prototype.match = function (src) {\n            return this._cache[src];\n        };\n        Cache.prototype.loadImage = function (key) {\n            return __awaiter(this, void 0, void 0, function () {\n                var isSameOrigin, useCORS, useProxy, src;\n                var _this = this;\n                return __generator(this, function (_a) {\n                    switch (_a.label) {\n                        case 0:\n                            isSameOrigin = CacheStorage.isSameOrigin(key);\n                            useCORS = !isInlineImage(key) && this._options.useCORS === true && FEATURES.SUPPORT_CORS_IMAGES && !isSameOrigin;\n                            useProxy = !isInlineImage(key) &&\n                                !isSameOrigin &&\n                                !isBlobImage(key) &&\n                                typeof this._options.proxy === 'string' &&\n                                FEATURES.SUPPORT_CORS_XHR &&\n                                !useCORS;\n                            if (!isSameOrigin &&\n                                this._options.allowTaint === false &&\n                                !isInlineImage(key) &&\n                                !isBlobImage(key) &&\n                                !useProxy &&\n                                !useCORS) {\n                                return [2 /*return*/];\n                            }\n                            src = key;\n                            if (!useProxy) return [3 /*break*/, 2];\n                            return [4 /*yield*/, this.proxy(src)];\n                        case 1:\n                            src = _a.sent();\n                            _a.label = 2;\n                        case 2:\n                            this.context.logger.debug(\"Added image \" + key.substring(0, 256));\n                            return [4 /*yield*/, new Promise(function (resolve, reject) {\n                                    var img = new Image();\n                                    img.onload = function () { return resolve(img); };\n                                    img.onerror = reject;\n                                    //ios safari 10.3 taints canvas with data urls unless crossOrigin is set to anonymous\n                                    if (isInlineBase64Image(src) || useCORS) {\n                                        img.crossOrigin = 'anonymous';\n                                    }\n                                    img.src = src;\n                                    if (img.complete === true) {\n                                        // Inline XML images may fail to parse, throwing an Error later on\n                                        setTimeout(function () { return resolve(img); }, 500);\n                                    }\n                                    if (_this._options.imageTimeout > 0) {\n                                        setTimeout(function () { return reject(\"Timed out (\" + _this._options.imageTimeout + \"ms) loading image\"); }, _this._options.imageTimeout);\n                                    }\n                                })];\n                        case 3: return [2 /*return*/, _a.sent()];\n                    }\n                });\n            });\n        };\n        Cache.prototype.has = function (key) {\n            return typeof this._cache[key] !== 'undefined';\n        };\n        Cache.prototype.keys = function () {\n            return Promise.resolve(Object.keys(this._cache));\n        };\n        Cache.prototype.proxy = function (src) {\n            var _this = this;\n            var proxy = this._options.proxy;\n            if (!proxy) {\n                throw new Error('No proxy defined');\n            }\n            var key = src.substring(0, 256);\n            return new Promise(function (resolve, reject) {\n                var responseType = FEATURES.SUPPORT_RESPONSE_TYPE ? 'blob' : 'text';\n                var xhr = new XMLHttpRequest();\n                xhr.onload = function () {\n                    if (xhr.status === 200) {\n                        if (responseType === 'text') {\n                            resolve(xhr.response);\n                        }\n                        else {\n                            var reader_1 = new FileReader();\n                            reader_1.addEventListener('load', function () { return resolve(reader_1.result); }, false);\n                            reader_1.addEventListener('error', function (e) { return reject(e); }, false);\n                            reader_1.readAsDataURL(xhr.response);\n                        }\n                    }\n                    else {\n                        reject(\"Failed to proxy resource \" + key + \" with status code \" + xhr.status);\n                    }\n                };\n                xhr.onerror = reject;\n                var queryString = proxy.indexOf('?') > -1 ? '&' : '?';\n                xhr.open('GET', \"\" + proxy + queryString + \"url=\" + encodeURIComponent(src) + \"&responseType=\" + responseType);\n                if (responseType !== 'text' && xhr instanceof XMLHttpRequest) {\n                    xhr.responseType = responseType;\n                }\n                if (_this._options.imageTimeout) {\n                    var timeout_1 = _this._options.imageTimeout;\n                    xhr.timeout = timeout_1;\n                    xhr.ontimeout = function () { return reject(\"Timed out (\" + timeout_1 + \"ms) proxying \" + key); };\n                }\n                xhr.send();\n            });\n        };\n        return Cache;\n    }());\n    var INLINE_SVG = /^data:image\\/svg\\+xml/i;\n    var INLINE_BASE64 = /^data:image\\/.*;base64,/i;\n    var INLINE_IMG = /^data:image\\/.*/i;\n    var isRenderable = function (src) { return FEATURES.SUPPORT_SVG_DRAWING || !isSVG(src); };\n    var isInlineImage = function (src) { return INLINE_IMG.test(src); };\n    var isInlineBase64Image = function (src) { return INLINE_BASE64.test(src); };\n    var isBlobImage = function (src) { return src.substr(0, 4) === 'blob'; };\n    var isSVG = function (src) { return src.substr(-3).toLowerCase() === 'svg' || INLINE_SVG.test(src); };\n\n    var Vector = /** @class */ (function () {\n        function Vector(x, y) {\n            this.type = 0 /* VECTOR */;\n            this.x = x;\n            this.y = y;\n        }\n        Vector.prototype.add = function (deltaX, deltaY) {\n            return new Vector(this.x + deltaX, this.y + deltaY);\n        };\n        return Vector;\n    }());\n\n    var lerp = function (a, b, t) {\n        return new Vector(a.x + (b.x - a.x) * t, a.y + (b.y - a.y) * t);\n    };\n    var BezierCurve = /** @class */ (function () {\n        function BezierCurve(start, startControl, endControl, end) {\n            this.type = 1 /* BEZIER_CURVE */;\n            this.start = start;\n            this.startControl = startControl;\n            this.endControl = endControl;\n            this.end = end;\n        }\n        BezierCurve.prototype.subdivide = function (t, firstHalf) {\n            var ab = lerp(this.start, this.startControl, t);\n            var bc = lerp(this.startControl, this.endControl, t);\n            var cd = lerp(this.endControl, this.end, t);\n            var abbc = lerp(ab, bc, t);\n            var bccd = lerp(bc, cd, t);\n            var dest = lerp(abbc, bccd, t);\n            return firstHalf ? new BezierCurve(this.start, ab, abbc, dest) : new BezierCurve(dest, bccd, cd, this.end);\n        };\n        BezierCurve.prototype.add = function (deltaX, deltaY) {\n            return new BezierCurve(this.start.add(deltaX, deltaY), this.startControl.add(deltaX, deltaY), this.endControl.add(deltaX, deltaY), this.end.add(deltaX, deltaY));\n        };\n        BezierCurve.prototype.reverse = function () {\n            return new BezierCurve(this.end, this.endControl, this.startControl, this.start);\n        };\n        return BezierCurve;\n    }());\n    var isBezierCurve = function (path) { return path.type === 1 /* BEZIER_CURVE */; };\n\n    var BoundCurves = /** @class */ (function () {\n        function BoundCurves(element) {\n            var styles = element.styles;\n            var bounds = element.bounds;\n            var _a = getAbsoluteValueForTuple(styles.borderTopLeftRadius, bounds.width, bounds.height), tlh = _a[0], tlv = _a[1];\n            var _b = getAbsoluteValueForTuple(styles.borderTopRightRadius, bounds.width, bounds.height), trh = _b[0], trv = _b[1];\n            var _c = getAbsoluteValueForTuple(styles.borderBottomRightRadius, bounds.width, bounds.height), brh = _c[0], brv = _c[1];\n            var _d = getAbsoluteValueForTuple(styles.borderBottomLeftRadius, bounds.width, bounds.height), blh = _d[0], blv = _d[1];\n            var factors = [];\n            factors.push((tlh + trh) / bounds.width);\n            factors.push((blh + brh) / bounds.width);\n            factors.push((tlv + blv) / bounds.height);\n            factors.push((trv + brv) / bounds.height);\n            var maxFactor = Math.max.apply(Math, factors);\n            if (maxFactor > 1) {\n                tlh /= maxFactor;\n                tlv /= maxFactor;\n                trh /= maxFactor;\n                trv /= maxFactor;\n                brh /= maxFactor;\n                brv /= maxFactor;\n                blh /= maxFactor;\n                blv /= maxFactor;\n            }\n            var topWidth = bounds.width - trh;\n            var rightHeight = bounds.height - brv;\n            var bottomWidth = bounds.width - brh;\n            var leftHeight = bounds.height - blv;\n            var borderTopWidth = styles.borderTopWidth;\n            var borderRightWidth = styles.borderRightWidth;\n            var borderBottomWidth = styles.borderBottomWidth;\n            var borderLeftWidth = styles.borderLeftWidth;\n            var paddingTop = getAbsoluteValue(styles.paddingTop, element.bounds.width);\n            var paddingRight = getAbsoluteValue(styles.paddingRight, element.bounds.width);\n            var paddingBottom = getAbsoluteValue(styles.paddingBottom, element.bounds.width);\n            var paddingLeft = getAbsoluteValue(styles.paddingLeft, element.bounds.width);\n            this.topLeftBorderDoubleOuterBox =\n                tlh > 0 || tlv > 0\n                    ? getCurvePoints(bounds.left + borderLeftWidth / 3, bounds.top + borderTopWidth / 3, tlh - borderLeftWidth / 3, tlv - borderTopWidth / 3, CORNER.TOP_LEFT)\n                    : new Vector(bounds.left + borderLeftWidth / 3, bounds.top + borderTopWidth / 3);\n            this.topRightBorderDoubleOuterBox =\n                tlh > 0 || tlv > 0\n                    ? getCurvePoints(bounds.left + topWidth, bounds.top + borderTopWidth / 3, trh - borderRightWidth / 3, trv - borderTopWidth / 3, CORNER.TOP_RIGHT)\n                    : new Vector(bounds.left + bounds.width - borderRightWidth / 3, bounds.top + borderTopWidth / 3);\n            this.bottomRightBorderDoubleOuterBox =\n                brh > 0 || brv > 0\n                    ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh - borderRightWidth / 3, brv - borderBottomWidth / 3, CORNER.BOTTOM_RIGHT)\n                    : new Vector(bounds.left + bounds.width - borderRightWidth / 3, bounds.top + bounds.height - borderBottomWidth / 3);\n            this.bottomLeftBorderDoubleOuterBox =\n                blh > 0 || blv > 0\n                    ? getCurvePoints(bounds.left + borderLeftWidth / 3, bounds.top + leftHeight, blh - borderLeftWidth / 3, blv - borderBottomWidth / 3, CORNER.BOTTOM_LEFT)\n                    : new Vector(bounds.left + borderLeftWidth / 3, bounds.top + bounds.height - borderBottomWidth / 3);\n            this.topLeftBorderDoubleInnerBox =\n                tlh > 0 || tlv > 0\n                    ? getCurvePoints(bounds.left + (borderLeftWidth * 2) / 3, bounds.top + (borderTopWidth * 2) / 3, tlh - (borderLeftWidth * 2) / 3, tlv - (borderTopWidth * 2) / 3, CORNER.TOP_LEFT)\n                    : new Vector(bounds.left + (borderLeftWidth * 2) / 3, bounds.top + (borderTopWidth * 2) / 3);\n            this.topRightBorderDoubleInnerBox =\n                tlh > 0 || tlv > 0\n                    ? getCurvePoints(bounds.left + topWidth, bounds.top + (borderTopWidth * 2) / 3, trh - (borderRightWidth * 2) / 3, trv - (borderTopWidth * 2) / 3, CORNER.TOP_RIGHT)\n                    : new Vector(bounds.left + bounds.width - (borderRightWidth * 2) / 3, bounds.top + (borderTopWidth * 2) / 3);\n            this.bottomRightBorderDoubleInnerBox =\n                brh > 0 || brv > 0\n                    ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh - (borderRightWidth * 2) / 3, brv - (borderBottomWidth * 2) / 3, CORNER.BOTTOM_RIGHT)\n                    : new Vector(bounds.left + bounds.width - (borderRightWidth * 2) / 3, bounds.top + bounds.height - (borderBottomWidth * 2) / 3);\n            this.bottomLeftBorderDoubleInnerBox =\n                blh > 0 || blv > 0\n                    ? getCurvePoints(bounds.left + (borderLeftWidth * 2) / 3, bounds.top + leftHeight, blh - (borderLeftWidth * 2) / 3, blv - (borderBottomWidth * 2) / 3, CORNER.BOTTOM_LEFT)\n                    : new Vector(bounds.left + (borderLeftWidth * 2) / 3, bounds.top + bounds.height - (borderBottomWidth * 2) / 3);\n            this.topLeftBorderStroke =\n                tlh > 0 || tlv > 0\n                    ? getCurvePoints(bounds.left + borderLeftWidth / 2, bounds.top + borderTopWidth / 2, tlh - borderLeftWidth / 2, tlv - borderTopWidth / 2, CORNER.TOP_LEFT)\n                    : new Vector(bounds.left + borderLeftWidth / 2, bounds.top + borderTopWidth / 2);\n            this.topRightBorderStroke =\n                tlh > 0 || tlv > 0\n                    ? getCurvePoints(bounds.left + topWidth, bounds.top + borderTopWidth / 2, trh - borderRightWidth / 2, trv - borderTopWidth / 2, CORNER.TOP_RIGHT)\n                    : new Vector(bounds.left + bounds.width - borderRightWidth / 2, bounds.top + borderTopWidth / 2);\n            this.bottomRightBorderStroke =\n                brh > 0 || brv > 0\n                    ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh - borderRightWidth / 2, brv - borderBottomWidth / 2, CORNER.BOTTOM_RIGHT)\n                    : new Vector(bounds.left + bounds.width - borderRightWidth / 2, bounds.top + bounds.height - borderBottomWidth / 2);\n            this.bottomLeftBorderStroke =\n                blh > 0 || blv > 0\n                    ? getCurvePoints(bounds.left + borderLeftWidth / 2, bounds.top + leftHeight, blh - borderLeftWidth / 2, blv - borderBottomWidth / 2, CORNER.BOTTOM_LEFT)\n                    : new Vector(bounds.left + borderLeftWidth / 2, bounds.top + bounds.height - borderBottomWidth / 2);\n            this.topLeftBorderBox =\n                tlh > 0 || tlv > 0\n                    ? getCurvePoints(bounds.left, bounds.top, tlh, tlv, CORNER.TOP_LEFT)\n                    : new Vector(bounds.left, bounds.top);\n            this.topRightBorderBox =\n                trh > 0 || trv > 0\n                    ? getCurvePoints(bounds.left + topWidth, bounds.top, trh, trv, CORNER.TOP_RIGHT)\n                    : new Vector(bounds.left + bounds.width, bounds.top);\n            this.bottomRightBorderBox =\n                brh > 0 || brv > 0\n                    ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh, brv, CORNER.BOTTOM_RIGHT)\n                    : new Vector(bounds.left + bounds.width, bounds.top + bounds.height);\n            this.bottomLeftBorderBox =\n                blh > 0 || blv > 0\n                    ? getCurvePoints(bounds.left, bounds.top + leftHeight, blh, blv, CORNER.BOTTOM_LEFT)\n                    : new Vector(bounds.left, bounds.top + bounds.height);\n            this.topLeftPaddingBox =\n                tlh > 0 || tlv > 0\n                    ? getCurvePoints(bounds.left + borderLeftWidth, bounds.top + borderTopWidth, Math.max(0, tlh - borderLeftWidth), Math.max(0, tlv - borderTopWidth), CORNER.TOP_LEFT)\n                    : new Vector(bounds.left + borderLeftWidth, bounds.top + borderTopWidth);\n            this.topRightPaddingBox =\n                trh > 0 || trv > 0\n                    ? getCurvePoints(bounds.left + Math.min(topWidth, bounds.width - borderRightWidth), bounds.top + borderTopWidth, topWidth > bounds.width + borderRightWidth ? 0 : Math.max(0, trh - borderRightWidth), Math.max(0, trv - borderTopWidth), CORNER.TOP_RIGHT)\n                    : new Vector(bounds.left + bounds.width - borderRightWidth, bounds.top + borderTopWidth);\n            this.bottomRightPaddingBox =\n                brh > 0 || brv > 0\n                    ? getCurvePoints(bounds.left + Math.min(bottomWidth, bounds.width - borderLeftWidth), bounds.top + Math.min(rightHeight, bounds.height - borderBottomWidth), Math.max(0, brh - borderRightWidth), Math.max(0, brv - borderBottomWidth), CORNER.BOTTOM_RIGHT)\n                    : new Vector(bounds.left + bounds.width - borderRightWidth, bounds.top + bounds.height - borderBottomWidth);\n            this.bottomLeftPaddingBox =\n                blh > 0 || blv > 0\n                    ? getCurvePoints(bounds.left + borderLeftWidth, bounds.top + Math.min(leftHeight, bounds.height - borderBottomWidth), Math.max(0, blh - borderLeftWidth), Math.max(0, blv - borderBottomWidth), CORNER.BOTTOM_LEFT)\n                    : new Vector(bounds.left + borderLeftWidth, bounds.top + bounds.height - borderBottomWidth);\n            this.topLeftContentBox =\n                tlh > 0 || tlv > 0\n                    ? getCurvePoints(bounds.left + borderLeftWidth + paddingLeft, bounds.top + borderTopWidth + paddingTop, Math.max(0, tlh - (borderLeftWidth + paddingLeft)), Math.max(0, tlv - (borderTopWidth + paddingTop)), CORNER.TOP_LEFT)\n                    : new Vector(bounds.left + borderLeftWidth + paddingLeft, bounds.top + borderTopWidth + paddingTop);\n            this.topRightContentBox =\n                trh > 0 || trv > 0\n                    ? getCurvePoints(bounds.left + Math.min(topWidth, bounds.width + borderLeftWidth + paddingLeft), bounds.top + borderTopWidth + paddingTop, topWidth > bounds.width + borderLeftWidth + paddingLeft ? 0 : trh - borderLeftWidth + paddingLeft, trv - (borderTopWidth + paddingTop), CORNER.TOP_RIGHT)\n                    : new Vector(bounds.left + bounds.width - (borderRightWidth + paddingRight), bounds.top + borderTopWidth + paddingTop);\n            this.bottomRightContentBox =\n                brh > 0 || brv > 0\n                    ? getCurvePoints(bounds.left + Math.min(bottomWidth, bounds.width - (borderLeftWidth + paddingLeft)), bounds.top + Math.min(rightHeight, bounds.height + borderTopWidth + paddingTop), Math.max(0, brh - (borderRightWidth + paddingRight)), brv - (borderBottomWidth + paddingBottom), CORNER.BOTTOM_RIGHT)\n                    : new Vector(bounds.left + bounds.width - (borderRightWidth + paddingRight), bounds.top + bounds.height - (borderBottomWidth + paddingBottom));\n            this.bottomLeftContentBox =\n                blh > 0 || blv > 0\n                    ? getCurvePoints(bounds.left + borderLeftWidth + paddingLeft, bounds.top + leftHeight, Math.max(0, blh - (borderLeftWidth + paddingLeft)), blv - (borderBottomWidth + paddingBottom), CORNER.BOTTOM_LEFT)\n                    : new Vector(bounds.left + borderLeftWidth + paddingLeft, bounds.top + bounds.height - (borderBottomWidth + paddingBottom));\n        }\n        return BoundCurves;\n    }());\n    var CORNER;\n    (function (CORNER) {\n        CORNER[CORNER[\"TOP_LEFT\"] = 0] = \"TOP_LEFT\";\n        CORNER[CORNER[\"TOP_RIGHT\"] = 1] = \"TOP_RIGHT\";\n        CORNER[CORNER[\"BOTTOM_RIGHT\"] = 2] = \"BOTTOM_RIGHT\";\n        CORNER[CORNER[\"BOTTOM_LEFT\"] = 3] = \"BOTTOM_LEFT\";\n    })(CORNER || (CORNER = {}));\n    var getCurvePoints = function (x, y, r1, r2, position) {\n        var kappa = 4 * ((Math.sqrt(2) - 1) / 3);\n        var ox = r1 * kappa; // control point offset horizontal\n        var oy = r2 * kappa; // control point offset vertical\n        var xm = x + r1; // x-middle\n        var ym = y + r2; // y-middle\n        switch (position) {\n            case CORNER.TOP_LEFT:\n                return new BezierCurve(new Vector(x, ym), new Vector(x, ym - oy), new Vector(xm - ox, y), new Vector(xm, y));\n            case CORNER.TOP_RIGHT:\n                return new BezierCurve(new Vector(x, y), new Vector(x + ox, y), new Vector(xm, ym - oy), new Vector(xm, ym));\n            case CORNER.BOTTOM_RIGHT:\n                return new BezierCurve(new Vector(xm, y), new Vector(xm, y + oy), new Vector(x + ox, ym), new Vector(x, ym));\n            case CORNER.BOTTOM_LEFT:\n            default:\n                return new BezierCurve(new Vector(xm, ym), new Vector(xm - ox, ym), new Vector(x, y + oy), new Vector(x, y));\n        }\n    };\n    var calculateBorderBoxPath = function (curves) {\n        return [curves.topLeftBorderBox, curves.topRightBorderBox, curves.bottomRightBorderBox, curves.bottomLeftBorderBox];\n    };\n    var calculateContentBoxPath = function (curves) {\n        return [\n            curves.topLeftContentBox,\n            curves.topRightContentBox,\n            curves.bottomRightContentBox,\n            curves.bottomLeftContentBox\n        ];\n    };\n    var calculatePaddingBoxPath = function (curves) {\n        return [\n            curves.topLeftPaddingBox,\n            curves.topRightPaddingBox,\n            curves.bottomRightPaddingBox,\n            curves.bottomLeftPaddingBox\n        ];\n    };\n\n    var TransformEffect = /** @class */ (function () {\n        function TransformEffect(offsetX, offsetY, matrix) {\n            this.offsetX = offsetX;\n            this.offsetY = offsetY;\n            this.matrix = matrix;\n            this.type = 0 /* TRANSFORM */;\n            this.target = 2 /* BACKGROUND_BORDERS */ | 4 /* CONTENT */;\n        }\n        return TransformEffect;\n    }());\n    var ClipEffect = /** @class */ (function () {\n        function ClipEffect(path, target) {\n            this.path = path;\n            this.target = target;\n            this.type = 1 /* CLIP */;\n        }\n        return ClipEffect;\n    }());\n    var OpacityEffect = /** @class */ (function () {\n        function OpacityEffect(opacity) {\n            this.opacity = opacity;\n            this.type = 2 /* OPACITY */;\n            this.target = 2 /* BACKGROUND_BORDERS */ | 4 /* CONTENT */;\n        }\n        return OpacityEffect;\n    }());\n    var isTransformEffect = function (effect) {\n        return effect.type === 0 /* TRANSFORM */;\n    };\n    var isClipEffect = function (effect) { return effect.type === 1 /* CLIP */; };\n    var isOpacityEffect = function (effect) { return effect.type === 2 /* OPACITY */; };\n\n    var equalPath = function (a, b) {\n        if (a.length === b.length) {\n            return a.some(function (v, i) { return v === b[i]; });\n        }\n        return false;\n    };\n    var transformPath = function (path, deltaX, deltaY, deltaW, deltaH) {\n        return path.map(function (point, index) {\n            switch (index) {\n                case 0:\n                    return point.add(deltaX, deltaY);\n                case 1:\n                    return point.add(deltaX + deltaW, deltaY);\n                case 2:\n                    return point.add(deltaX + deltaW, deltaY + deltaH);\n                case 3:\n                    return point.add(deltaX, deltaY + deltaH);\n            }\n            return point;\n        });\n    };\n\n    var StackingContext = /** @class */ (function () {\n        function StackingContext(container) {\n            this.element = container;\n            this.inlineLevel = [];\n            this.nonInlineLevel = [];\n            this.negativeZIndex = [];\n            this.zeroOrAutoZIndexOrTransformedOrOpacity = [];\n            this.positiveZIndex = [];\n            this.nonPositionedFloats = [];\n            this.nonPositionedInlineLevel = [];\n        }\n        return StackingContext;\n    }());\n    var ElementPaint = /** @class */ (function () {\n        function ElementPaint(container, parent) {\n            this.container = container;\n            this.parent = parent;\n            this.effects = [];\n            this.curves = new BoundCurves(this.container);\n            if (this.container.styles.opacity < 1) {\n                this.effects.push(new OpacityEffect(this.container.styles.opacity));\n            }\n            if (this.container.styles.transform !== null) {\n                var offsetX = this.container.bounds.left + this.container.styles.transformOrigin[0].number;\n                var offsetY = this.container.bounds.top + this.container.styles.transformOrigin[1].number;\n                var matrix = this.container.styles.transform;\n                this.effects.push(new TransformEffect(offsetX, offsetY, matrix));\n            }\n            if (this.container.styles.overflowX !== 0 /* VISIBLE */) {\n                var borderBox = calculateBorderBoxPath(this.curves);\n                var paddingBox = calculatePaddingBoxPath(this.curves);\n                if (equalPath(borderBox, paddingBox)) {\n                    this.effects.push(new ClipEffect(borderBox, 2 /* BACKGROUND_BORDERS */ | 4 /* CONTENT */));\n                }\n                else {\n                    this.effects.push(new ClipEffect(borderBox, 2 /* BACKGROUND_BORDERS */));\n                    this.effects.push(new ClipEffect(paddingBox, 4 /* CONTENT */));\n                }\n            }\n        }\n        ElementPaint.prototype.getEffects = function (target) {\n            var inFlow = [2 /* ABSOLUTE */, 3 /* FIXED */].indexOf(this.container.styles.position) === -1;\n            var parent = this.parent;\n            var effects = this.effects.slice(0);\n            while (parent) {\n                var croplessEffects = parent.effects.filter(function (effect) { return !isClipEffect(effect); });\n                if (inFlow || parent.container.styles.position !== 0 /* STATIC */ || !parent.parent) {\n                    effects.unshift.apply(effects, croplessEffects);\n                    inFlow = [2 /* ABSOLUTE */, 3 /* FIXED */].indexOf(parent.container.styles.position) === -1;\n                    if (parent.container.styles.overflowX !== 0 /* VISIBLE */) {\n                        var borderBox = calculateBorderBoxPath(parent.curves);\n                        var paddingBox = calculatePaddingBoxPath(parent.curves);\n                        if (!equalPath(borderBox, paddingBox)) {\n                            effects.unshift(new ClipEffect(paddingBox, 2 /* BACKGROUND_BORDERS */ | 4 /* CONTENT */));\n                        }\n                    }\n                }\n                else {\n                    effects.unshift.apply(effects, croplessEffects);\n                }\n                parent = parent.parent;\n            }\n            return effects.filter(function (effect) { return contains(effect.target, target); });\n        };\n        return ElementPaint;\n    }());\n    var parseStackTree = function (parent, stackingContext, realStackingContext, listItems) {\n        parent.container.elements.forEach(function (child) {\n            var treatAsRealStackingContext = contains(child.flags, 4 /* CREATES_REAL_STACKING_CONTEXT */);\n            var createsStackingContext = contains(child.flags, 2 /* CREATES_STACKING_CONTEXT */);\n            var paintContainer = new ElementPaint(child, parent);\n            if (contains(child.styles.display, 2048 /* LIST_ITEM */)) {\n                listItems.push(paintContainer);\n            }\n            var listOwnerItems = contains(child.flags, 8 /* IS_LIST_OWNER */) ? [] : listItems;\n            if (treatAsRealStackingContext || createsStackingContext) {\n                var parentStack = treatAsRealStackingContext || child.styles.isPositioned() ? realStackingContext : stackingContext;\n                var stack = new StackingContext(paintContainer);\n                if (child.styles.isPositioned() || child.styles.opacity < 1 || child.styles.isTransformed()) {\n                    var order_1 = child.styles.zIndex.order;\n                    if (order_1 < 0) {\n                        var index_1 = 0;\n                        parentStack.negativeZIndex.some(function (current, i) {\n                            if (order_1 > current.element.container.styles.zIndex.order) {\n                                index_1 = i;\n                                return false;\n                            }\n                            else if (index_1 > 0) {\n                                return true;\n                            }\n                            return false;\n                        });\n                        parentStack.negativeZIndex.splice(index_1, 0, stack);\n                    }\n                    else if (order_1 > 0) {\n                        var index_2 = 0;\n                        parentStack.positiveZIndex.some(function (current, i) {\n                            if (order_1 >= current.element.container.styles.zIndex.order) {\n                                index_2 = i + 1;\n                                return false;\n                            }\n                            else if (index_2 > 0) {\n                                return true;\n                            }\n                            return false;\n                        });\n                        parentStack.positiveZIndex.splice(index_2, 0, stack);\n                    }\n                    else {\n                        parentStack.zeroOrAutoZIndexOrTransformedOrOpacity.push(stack);\n                    }\n                }\n                else {\n                    if (child.styles.isFloating()) {\n                        parentStack.nonPositionedFloats.push(stack);\n                    }\n                    else {\n                        parentStack.nonPositionedInlineLevel.push(stack);\n                    }\n                }\n                parseStackTree(paintContainer, stack, treatAsRealStackingContext ? stack : realStackingContext, listOwnerItems);\n            }\n            else {\n                if (child.styles.isInlineLevel()) {\n                    stackingContext.inlineLevel.push(paintContainer);\n                }\n                else {\n                    stackingContext.nonInlineLevel.push(paintContainer);\n                }\n                parseStackTree(paintContainer, stackingContext, realStackingContext, listOwnerItems);\n            }\n            if (contains(child.flags, 8 /* IS_LIST_OWNER */)) {\n                processListItems(child, listOwnerItems);\n            }\n        });\n    };\n    var processListItems = function (owner, elements) {\n        var numbering = owner instanceof OLElementContainer ? owner.start : 1;\n        var reversed = owner instanceof OLElementContainer ? owner.reversed : false;\n        for (var i = 0; i < elements.length; i++) {\n            var item = elements[i];\n            if (item.container instanceof LIElementContainer &&\n                typeof item.container.value === 'number' &&\n                item.container.value !== 0) {\n                numbering = item.container.value;\n            }\n            item.listValue = createCounterText(numbering, item.container.styles.listStyleType, true);\n            numbering += reversed ? -1 : 1;\n        }\n    };\n    var parseStackingContexts = function (container) {\n        var paintContainer = new ElementPaint(container, null);\n        var root = new StackingContext(paintContainer);\n        var listItems = [];\n        parseStackTree(paintContainer, root, root, listItems);\n        processListItems(paintContainer.container, listItems);\n        return root;\n    };\n\n    var parsePathForBorder = function (curves, borderSide) {\n        switch (borderSide) {\n            case 0:\n                return createPathFromCurves(curves.topLeftBorderBox, curves.topLeftPaddingBox, curves.topRightBorderBox, curves.topRightPaddingBox);\n            case 1:\n                return createPathFromCurves(curves.topRightBorderBox, curves.topRightPaddingBox, curves.bottomRightBorderBox, curves.bottomRightPaddingBox);\n            case 2:\n                return createPathFromCurves(curves.bottomRightBorderBox, curves.bottomRightPaddingBox, curves.bottomLeftBorderBox, curves.bottomLeftPaddingBox);\n            case 3:\n            default:\n                return createPathFromCurves(curves.bottomLeftBorderBox, curves.bottomLeftPaddingBox, curves.topLeftBorderBox, curves.topLeftPaddingBox);\n        }\n    };\n    var parsePathForBorderDoubleOuter = function (curves, borderSide) {\n        switch (borderSide) {\n            case 0:\n                return createPathFromCurves(curves.topLeftBorderBox, curves.topLeftBorderDoubleOuterBox, curves.topRightBorderBox, curves.topRightBorderDoubleOuterBox);\n            case 1:\n                return createPathFromCurves(curves.topRightBorderBox, curves.topRightBorderDoubleOuterBox, curves.bottomRightBorderBox, curves.bottomRightBorderDoubleOuterBox);\n            case 2:\n                return createPathFromCurves(curves.bottomRightBorderBox, curves.bottomRightBorderDoubleOuterBox, curves.bottomLeftBorderBox, curves.bottomLeftBorderDoubleOuterBox);\n            case 3:\n            default:\n                return createPathFromCurves(curves.bottomLeftBorderBox, curves.bottomLeftBorderDoubleOuterBox, curves.topLeftBorderBox, curves.topLeftBorderDoubleOuterBox);\n        }\n    };\n    var parsePathForBorderDoubleInner = function (curves, borderSide) {\n        switch (borderSide) {\n            case 0:\n                return createPathFromCurves(curves.topLeftBorderDoubleInnerBox, curves.topLeftPaddingBox, curves.topRightBorderDoubleInnerBox, curves.topRightPaddingBox);\n            case 1:\n                return createPathFromCurves(curves.topRightBorderDoubleInnerBox, curves.topRightPaddingBox, curves.bottomRightBorderDoubleInnerBox, curves.bottomRightPaddingBox);\n            case 2:\n                return createPathFromCurves(curves.bottomRightBorderDoubleInnerBox, curves.bottomRightPaddingBox, curves.bottomLeftBorderDoubleInnerBox, curves.bottomLeftPaddingBox);\n            case 3:\n            default:\n                return createPathFromCurves(curves.bottomLeftBorderDoubleInnerBox, curves.bottomLeftPaddingBox, curves.topLeftBorderDoubleInnerBox, curves.topLeftPaddingBox);\n        }\n    };\n    var parsePathForBorderStroke = function (curves, borderSide) {\n        switch (borderSide) {\n            case 0:\n                return createStrokePathFromCurves(curves.topLeftBorderStroke, curves.topRightBorderStroke);\n            case 1:\n                return createStrokePathFromCurves(curves.topRightBorderStroke, curves.bottomRightBorderStroke);\n            case 2:\n                return createStrokePathFromCurves(curves.bottomRightBorderStroke, curves.bottomLeftBorderStroke);\n            case 3:\n            default:\n                return createStrokePathFromCurves(curves.bottomLeftBorderStroke, curves.topLeftBorderStroke);\n        }\n    };\n    var createStrokePathFromCurves = function (outer1, outer2) {\n        var path = [];\n        if (isBezierCurve(outer1)) {\n            path.push(outer1.subdivide(0.5, false));\n        }\n        else {\n            path.push(outer1);\n        }\n        if (isBezierCurve(outer2)) {\n            path.push(outer2.subdivide(0.5, true));\n        }\n        else {\n            path.push(outer2);\n        }\n        return path;\n    };\n    var createPathFromCurves = function (outer1, inner1, outer2, inner2) {\n        var path = [];\n        if (isBezierCurve(outer1)) {\n            path.push(outer1.subdivide(0.5, false));\n        }\n        else {\n            path.push(outer1);\n        }\n        if (isBezierCurve(outer2)) {\n            path.push(outer2.subdivide(0.5, true));\n        }\n        else {\n            path.push(outer2);\n        }\n        if (isBezierCurve(inner2)) {\n            path.push(inner2.subdivide(0.5, true).reverse());\n        }\n        else {\n            path.push(inner2);\n        }\n        if (isBezierCurve(inner1)) {\n            path.push(inner1.subdivide(0.5, false).reverse());\n        }\n        else {\n            path.push(inner1);\n        }\n        return path;\n    };\n\n    var paddingBox = function (element) {\n        var bounds = element.bounds;\n        var styles = element.styles;\n        return bounds.add(styles.borderLeftWidth, styles.borderTopWidth, -(styles.borderRightWidth + styles.borderLeftWidth), -(styles.borderTopWidth + styles.borderBottomWidth));\n    };\n    var contentBox = function (element) {\n        var styles = element.styles;\n        var bounds = element.bounds;\n        var paddingLeft = getAbsoluteValue(styles.paddingLeft, bounds.width);\n        var paddingRight = getAbsoluteValue(styles.paddingRight, bounds.width);\n        var paddingTop = getAbsoluteValue(styles.paddingTop, bounds.width);\n        var paddingBottom = getAbsoluteValue(styles.paddingBottom, bounds.width);\n        return bounds.add(paddingLeft + styles.borderLeftWidth, paddingTop + styles.borderTopWidth, -(styles.borderRightWidth + styles.borderLeftWidth + paddingLeft + paddingRight), -(styles.borderTopWidth + styles.borderBottomWidth + paddingTop + paddingBottom));\n    };\n\n    var calculateBackgroundPositioningArea = function (backgroundOrigin, element) {\n        if (backgroundOrigin === 0 /* BORDER_BOX */) {\n            return element.bounds;\n        }\n        if (backgroundOrigin === 2 /* CONTENT_BOX */) {\n            return contentBox(element);\n        }\n        return paddingBox(element);\n    };\n    var calculateBackgroundPaintingArea = function (backgroundClip, element) {\n        if (backgroundClip === 0 /* BORDER_BOX */) {\n            return element.bounds;\n        }\n        if (backgroundClip === 2 /* CONTENT_BOX */) {\n            return contentBox(element);\n        }\n        return paddingBox(element);\n    };\n    var calculateBackgroundRendering = function (container, index, intrinsicSize) {\n        var backgroundPositioningArea = calculateBackgroundPositioningArea(getBackgroundValueForIndex(container.styles.backgroundOrigin, index), container);\n        var backgroundPaintingArea = calculateBackgroundPaintingArea(getBackgroundValueForIndex(container.styles.backgroundClip, index), container);\n        var backgroundImageSize = calculateBackgroundSize(getBackgroundValueForIndex(container.styles.backgroundSize, index), intrinsicSize, backgroundPositioningArea);\n        var sizeWidth = backgroundImageSize[0], sizeHeight = backgroundImageSize[1];\n        var position = getAbsoluteValueForTuple(getBackgroundValueForIndex(container.styles.backgroundPosition, index), backgroundPositioningArea.width - sizeWidth, backgroundPositioningArea.height - sizeHeight);\n        var path = calculateBackgroundRepeatPath(getBackgroundValueForIndex(container.styles.backgroundRepeat, index), position, backgroundImageSize, backgroundPositioningArea, backgroundPaintingArea);\n        var offsetX = Math.round(backgroundPositioningArea.left + position[0]);\n        var offsetY = Math.round(backgroundPositioningArea.top + position[1]);\n        return [path, offsetX, offsetY, sizeWidth, sizeHeight];\n    };\n    var isAuto = function (token) { return isIdentToken(token) && token.value === BACKGROUND_SIZE.AUTO; };\n    var hasIntrinsicValue = function (value) { return typeof value === 'number'; };\n    var calculateBackgroundSize = function (size, _a, bounds) {\n        var intrinsicWidth = _a[0], intrinsicHeight = _a[1], intrinsicProportion = _a[2];\n        var first = size[0], second = size[1];\n        if (!first) {\n            return [0, 0];\n        }\n        if (isLengthPercentage(first) && second && isLengthPercentage(second)) {\n            return [getAbsoluteValue(first, bounds.width), getAbsoluteValue(second, bounds.height)];\n        }\n        var hasIntrinsicProportion = hasIntrinsicValue(intrinsicProportion);\n        if (isIdentToken(first) && (first.value === BACKGROUND_SIZE.CONTAIN || first.value === BACKGROUND_SIZE.COVER)) {\n            if (hasIntrinsicValue(intrinsicProportion)) {\n                var targetRatio = bounds.width / bounds.height;\n                return targetRatio < intrinsicProportion !== (first.value === BACKGROUND_SIZE.COVER)\n                    ? [bounds.width, bounds.width / intrinsicProportion]\n                    : [bounds.height * intrinsicProportion, bounds.height];\n            }\n            return [bounds.width, bounds.height];\n        }\n        var hasIntrinsicWidth = hasIntrinsicValue(intrinsicWidth);\n        var hasIntrinsicHeight = hasIntrinsicValue(intrinsicHeight);\n        var hasIntrinsicDimensions = hasIntrinsicWidth || hasIntrinsicHeight;\n        // If the background-size is auto or auto auto:\n        if (isAuto(first) && (!second || isAuto(second))) {\n            // If the image has both horizontal and vertical intrinsic dimensions, it's rendered at that size.\n            if (hasIntrinsicWidth && hasIntrinsicHeight) {\n                return [intrinsicWidth, intrinsicHeight];\n            }\n            // If the image has no intrinsic dimensions and has no intrinsic proportions,\n            // it's rendered at the size of the background positioning area.\n            if (!hasIntrinsicProportion && !hasIntrinsicDimensions) {\n                return [bounds.width, bounds.height];\n            }\n            // TODO If the image has no intrinsic dimensions but has intrinsic proportions, it's rendered as if contain had been specified instead.\n            // If the image has only one intrinsic dimension and has intrinsic proportions, it's rendered at the size corresponding to that one dimension.\n            // The other dimension is computed using the specified dimension and the intrinsic proportions.\n            if (hasIntrinsicDimensions && hasIntrinsicProportion) {\n                var width_1 = hasIntrinsicWidth\n                    ? intrinsicWidth\n                    : intrinsicHeight * intrinsicProportion;\n                var height_1 = hasIntrinsicHeight\n                    ? intrinsicHeight\n                    : intrinsicWidth / intrinsicProportion;\n                return [width_1, height_1];\n            }\n            // If the image has only one intrinsic dimension but has no intrinsic proportions,\n            // it's rendered using the specified dimension and the other dimension of the background positioning area.\n            var width_2 = hasIntrinsicWidth ? intrinsicWidth : bounds.width;\n            var height_2 = hasIntrinsicHeight ? intrinsicHeight : bounds.height;\n            return [width_2, height_2];\n        }\n        // If the image has intrinsic proportions, it's stretched to the specified dimension.\n        // The unspecified dimension is computed using the specified dimension and the intrinsic proportions.\n        if (hasIntrinsicProportion) {\n            var width_3 = 0;\n            var height_3 = 0;\n            if (isLengthPercentage(first)) {\n                width_3 = getAbsoluteValue(first, bounds.width);\n            }\n            else if (isLengthPercentage(second)) {\n                height_3 = getAbsoluteValue(second, bounds.height);\n            }\n            if (isAuto(first)) {\n                width_3 = height_3 * intrinsicProportion;\n            }\n            else if (!second || isAuto(second)) {\n                height_3 = width_3 / intrinsicProportion;\n            }\n            return [width_3, height_3];\n        }\n        // If the image has no intrinsic proportions, it's stretched to the specified dimension.\n        // The unspecified dimension is computed using the image's corresponding intrinsic dimension,\n        // if there is one. If there is no such intrinsic dimension,\n        // it becomes the corresponding dimension of the background positioning area.\n        var width = null;\n        var height = null;\n        if (isLengthPercentage(first)) {\n            width = getAbsoluteValue(first, bounds.width);\n        }\n        else if (second && isLengthPercentage(second)) {\n            height = getAbsoluteValue(second, bounds.height);\n        }\n        if (width !== null && (!second || isAuto(second))) {\n            height =\n                hasIntrinsicWidth && hasIntrinsicHeight\n                    ? (width / intrinsicWidth) * intrinsicHeight\n                    : bounds.height;\n        }\n        if (height !== null && isAuto(first)) {\n            width =\n                hasIntrinsicWidth && hasIntrinsicHeight\n                    ? (height / intrinsicHeight) * intrinsicWidth\n                    : bounds.width;\n        }\n        if (width !== null && height !== null) {\n            return [width, height];\n        }\n        throw new Error(\"Unable to calculate background-size for element\");\n    };\n    var getBackgroundValueForIndex = function (values, index) {\n        var value = values[index];\n        if (typeof value === 'undefined') {\n            return values[0];\n        }\n        return value;\n    };\n    var calculateBackgroundRepeatPath = function (repeat, _a, _b, backgroundPositioningArea, backgroundPaintingArea) {\n        var x = _a[0], y = _a[1];\n        var width = _b[0], height = _b[1];\n        switch (repeat) {\n            case 2 /* REPEAT_X */:\n                return [\n                    new Vector(Math.round(backgroundPositioningArea.left), Math.round(backgroundPositioningArea.top + y)),\n                    new Vector(Math.round(backgroundPositioningArea.left + backgroundPositioningArea.width), Math.round(backgroundPositioningArea.top + y)),\n                    new Vector(Math.round(backgroundPositioningArea.left + backgroundPositioningArea.width), Math.round(height + backgroundPositioningArea.top + y)),\n                    new Vector(Math.round(backgroundPositioningArea.left), Math.round(height + backgroundPositioningArea.top + y))\n                ];\n            case 3 /* REPEAT_Y */:\n                return [\n                    new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.top)),\n                    new Vector(Math.round(backgroundPositioningArea.left + x + width), Math.round(backgroundPositioningArea.top)),\n                    new Vector(Math.round(backgroundPositioningArea.left + x + width), Math.round(backgroundPositioningArea.height + backgroundPositioningArea.top)),\n                    new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.height + backgroundPositioningArea.top))\n                ];\n            case 1 /* NO_REPEAT */:\n                return [\n                    new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.top + y)),\n                    new Vector(Math.round(backgroundPositioningArea.left + x + width), Math.round(backgroundPositioningArea.top + y)),\n                    new Vector(Math.round(backgroundPositioningArea.left + x + width), Math.round(backgroundPositioningArea.top + y + height)),\n                    new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.top + y + height))\n                ];\n            default:\n                return [\n                    new Vector(Math.round(backgroundPaintingArea.left), Math.round(backgroundPaintingArea.top)),\n                    new Vector(Math.round(backgroundPaintingArea.left + backgroundPaintingArea.width), Math.round(backgroundPaintingArea.top)),\n                    new Vector(Math.round(backgroundPaintingArea.left + backgroundPaintingArea.width), Math.round(backgroundPaintingArea.height + backgroundPaintingArea.top)),\n                    new Vector(Math.round(backgroundPaintingArea.left), Math.round(backgroundPaintingArea.height + backgroundPaintingArea.top))\n                ];\n        }\n    };\n\n    var SMALL_IMAGE = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';\n\n    var SAMPLE_TEXT = 'Hidden Text';\n    var FontMetrics = /** @class */ (function () {\n        function FontMetrics(document) {\n            this._data = {};\n            this._document = document;\n        }\n        FontMetrics.prototype.parseMetrics = function (fontFamily, fontSize) {\n            var container = this._document.createElement('div');\n            var img = this._document.createElement('img');\n            var span = this._document.createElement('span');\n            var body = this._document.body;\n            container.style.visibility = 'hidden';\n            container.style.fontFamily = fontFamily;\n            container.style.fontSize = fontSize;\n            container.style.margin = '0';\n            container.style.padding = '0';\n            container.style.whiteSpace = 'nowrap';\n            body.appendChild(container);\n            img.src = SMALL_IMAGE;\n            img.width = 1;\n            img.height = 1;\n            img.style.margin = '0';\n            img.style.padding = '0';\n            img.style.verticalAlign = 'baseline';\n            span.style.fontFamily = fontFamily;\n            span.style.fontSize = fontSize;\n            span.style.margin = '0';\n            span.style.padding = '0';\n            span.appendChild(this._document.createTextNode(SAMPLE_TEXT));\n            container.appendChild(span);\n            container.appendChild(img);\n            var baseline = img.offsetTop - span.offsetTop + 2;\n            container.removeChild(span);\n            container.appendChild(this._document.createTextNode(SAMPLE_TEXT));\n            container.style.lineHeight = 'normal';\n            img.style.verticalAlign = 'super';\n            var middle = img.offsetTop - container.offsetTop + 2;\n            body.removeChild(container);\n            return { baseline: baseline, middle: middle };\n        };\n        FontMetrics.prototype.getMetrics = function (fontFamily, fontSize) {\n            var key = fontFamily + \" \" + fontSize;\n            if (typeof this._data[key] === 'undefined') {\n                this._data[key] = this.parseMetrics(fontFamily, fontSize);\n            }\n            return this._data[key];\n        };\n        return FontMetrics;\n    }());\n\n    var Renderer = /** @class */ (function () {\n        function Renderer(context, options) {\n            this.context = context;\n            this.options = options;\n        }\n        return Renderer;\n    }());\n\n    var MASK_OFFSET = 10000;\n    var CanvasRenderer = /** @class */ (function (_super) {\n        __extends(CanvasRenderer, _super);\n        function CanvasRenderer(context, options) {\n            var _this = _super.call(this, context, options) || this;\n            _this._activeEffects = [];\n            _this.canvas = options.canvas ? options.canvas : document.createElement('canvas');\n            _this.ctx = _this.canvas.getContext('2d');\n            if (!options.canvas) {\n                _this.canvas.width = Math.floor(options.width * options.scale);\n                _this.canvas.height = Math.floor(options.height * options.scale);\n                _this.canvas.style.width = options.width + \"px\";\n                _this.canvas.style.height = options.height + \"px\";\n            }\n            _this.fontMetrics = new FontMetrics(document);\n            _this.ctx.scale(_this.options.scale, _this.options.scale);\n            _this.ctx.translate(-options.x, -options.y);\n            _this.ctx.textBaseline = 'bottom';\n            _this._activeEffects = [];\n            _this.context.logger.debug(\"Canvas renderer initialized (\" + options.width + \"x\" + options.height + \") with scale \" + options.scale);\n            return _this;\n        }\n        CanvasRenderer.prototype.applyEffects = function (effects) {\n            var _this = this;\n            while (this._activeEffects.length) {\n                this.popEffect();\n            }\n            effects.forEach(function (effect) { return _this.applyEffect(effect); });\n        };\n        CanvasRenderer.prototype.applyEffect = function (effect) {\n            this.ctx.save();\n            if (isOpacityEffect(effect)) {\n                this.ctx.globalAlpha = effect.opacity;\n            }\n            if (isTransformEffect(effect)) {\n                this.ctx.translate(effect.offsetX, effect.offsetY);\n                this.ctx.transform(effect.matrix[0], effect.matrix[1], effect.matrix[2], effect.matrix[3], effect.matrix[4], effect.matrix[5]);\n                this.ctx.translate(-effect.offsetX, -effect.offsetY);\n            }\n            if (isClipEffect(effect)) {\n                this.path(effect.path);\n                this.ctx.clip();\n            }\n            this._activeEffects.push(effect);\n        };\n        CanvasRenderer.prototype.popEffect = function () {\n            this._activeEffects.pop();\n            this.ctx.restore();\n        };\n        CanvasRenderer.prototype.renderStack = function (stack) {\n            return __awaiter(this, void 0, void 0, function () {\n                var styles;\n                return __generator(this, function (_a) {\n                    switch (_a.label) {\n                        case 0:\n                            styles = stack.element.container.styles;\n                            if (!styles.isVisible()) return [3 /*break*/, 2];\n                            return [4 /*yield*/, this.renderStackContent(stack)];\n                        case 1:\n                            _a.sent();\n                            _a.label = 2;\n                        case 2: return [2 /*return*/];\n                    }\n                });\n            });\n        };\n        CanvasRenderer.prototype.renderNode = function (paint) {\n            return __awaiter(this, void 0, void 0, function () {\n                return __generator(this, function (_a) {\n                    switch (_a.label) {\n                        case 0:\n                            if (contains(paint.container.flags, 16 /* DEBUG_RENDER */)) {\n                                debugger;\n                            }\n                            if (!paint.container.styles.isVisible()) return [3 /*break*/, 3];\n                            return [4 /*yield*/, this.renderNodeBackgroundAndBorders(paint)];\n                        case 1:\n                            _a.sent();\n                            return [4 /*yield*/, this.renderNodeContent(paint)];\n                        case 2:\n                            _a.sent();\n                            _a.label = 3;\n                        case 3: return [2 /*return*/];\n                    }\n                });\n            });\n        };\n        CanvasRenderer.prototype.renderTextWithLetterSpacing = function (text, letterSpacing, baseline) {\n            var _this = this;\n            if (letterSpacing === 0) {\n                this.ctx.fillText(text.text, text.bounds.left, text.bounds.top + baseline);\n            }\n            else {\n                var letters = segmentGraphemes(text.text);\n                letters.reduce(function (left, letter) {\n                    _this.ctx.fillText(letter, left, text.bounds.top + baseline);\n                    return left + _this.ctx.measureText(letter).width;\n                }, text.bounds.left);\n            }\n        };\n        CanvasRenderer.prototype.createFontStyle = function (styles) {\n            var fontVariant = styles.fontVariant\n                .filter(function (variant) { return variant === 'normal' || variant === 'small-caps'; })\n                .join('');\n            var fontFamily = fixIOSSystemFonts(styles.fontFamily).join(', ');\n            var fontSize = isDimensionToken(styles.fontSize)\n                ? \"\" + styles.fontSize.number + styles.fontSize.unit\n                : styles.fontSize.number + \"px\";\n            return [\n                [styles.fontStyle, fontVariant, styles.fontWeight, fontSize, fontFamily].join(' '),\n                fontFamily,\n                fontSize\n            ];\n        };\n        CanvasRenderer.prototype.renderTextNode = function (text, styles) {\n            return __awaiter(this, void 0, void 0, function () {\n                var _a, font, fontFamily, fontSize, _b, baseline, middle, paintOrder;\n                var _this = this;\n                return __generator(this, function (_c) {\n                    _a = this.createFontStyle(styles), font = _a[0], fontFamily = _a[1], fontSize = _a[2];\n                    this.ctx.font = font;\n                    this.ctx.direction = styles.direction === 1 /* RTL */ ? 'rtl' : 'ltr';\n                    this.ctx.textAlign = 'left';\n                    this.ctx.textBaseline = 'alphabetic';\n                    _b = this.fontMetrics.getMetrics(fontFamily, fontSize), baseline = _b.baseline, middle = _b.middle;\n                    paintOrder = styles.paintOrder;\n                    text.textBounds.forEach(function (text) {\n                        paintOrder.forEach(function (paintOrderLayer) {\n                            switch (paintOrderLayer) {\n                                case 0 /* FILL */:\n                                    _this.ctx.fillStyle = asString(styles.color);\n                                    _this.renderTextWithLetterSpacing(text, styles.letterSpacing, baseline);\n                                    var textShadows = styles.textShadow;\n                                    if (textShadows.length && text.text.trim().length) {\n                                        textShadows\n                                            .slice(0)\n                                            .reverse()\n                                            .forEach(function (textShadow) {\n                                            _this.ctx.shadowColor = asString(textShadow.color);\n                                            _this.ctx.shadowOffsetX = textShadow.offsetX.number * _this.options.scale;\n                                            _this.ctx.shadowOffsetY = textShadow.offsetY.number * _this.options.scale;\n                                            _this.ctx.shadowBlur = textShadow.blur.number;\n                                            _this.renderTextWithLetterSpacing(text, styles.letterSpacing, baseline);\n                                        });\n                                        _this.ctx.shadowColor = '';\n                                        _this.ctx.shadowOffsetX = 0;\n                                        _this.ctx.shadowOffsetY = 0;\n                                        _this.ctx.shadowBlur = 0;\n                                    }\n                                    if (styles.textDecorationLine.length) {\n                                        _this.ctx.fillStyle = asString(styles.textDecorationColor || styles.color);\n                                        styles.textDecorationLine.forEach(function (textDecorationLine) {\n                                            switch (textDecorationLine) {\n                                                case 1 /* UNDERLINE */:\n                                                    // Draws a line at the baseline of the font\n                                                    // TODO As some browsers display the line as more than 1px if the font-size is big,\n                                                    // need to take that into account both in position and size\n                                                    _this.ctx.fillRect(text.bounds.left, Math.round(text.bounds.top + baseline), text.bounds.width, 1);\n                                                    break;\n                                                case 2 /* OVERLINE */:\n                                                    _this.ctx.fillRect(text.bounds.left, Math.round(text.bounds.top), text.bounds.width, 1);\n                                                    break;\n                                                case 3 /* LINE_THROUGH */:\n                                                    // TODO try and find exact position for line-through\n                                                    _this.ctx.fillRect(text.bounds.left, Math.ceil(text.bounds.top + middle), text.bounds.width, 1);\n                                                    break;\n                                            }\n                                        });\n                                    }\n                                    break;\n                                case 1 /* STROKE */:\n                                    if (styles.webkitTextStrokeWidth && text.text.trim().length) {\n                                        _this.ctx.strokeStyle = asString(styles.webkitTextStrokeColor);\n                                        _this.ctx.lineWidth = styles.webkitTextStrokeWidth;\n                                        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n                                        _this.ctx.lineJoin = !!window.chrome ? 'miter' : 'round';\n                                        _this.ctx.strokeText(text.text, text.bounds.left, text.bounds.top + baseline);\n                                    }\n                                    _this.ctx.strokeStyle = '';\n                                    _this.ctx.lineWidth = 0;\n                                    _this.ctx.lineJoin = 'miter';\n                                    break;\n                            }\n                        });\n                    });\n                    return [2 /*return*/];\n                });\n            });\n        };\n        CanvasRenderer.prototype.renderReplacedElement = function (container, curves, image) {\n            if (image && container.intrinsicWidth > 0 && container.intrinsicHeight > 0) {\n                var box = contentBox(container);\n                var path = calculatePaddingBoxPath(curves);\n                this.path(path);\n                this.ctx.save();\n                this.ctx.clip();\n                this.ctx.drawImage(image, 0, 0, container.intrinsicWidth, container.intrinsicHeight, box.left, box.top, box.width, box.height);\n                this.ctx.restore();\n            }\n        };\n        CanvasRenderer.prototype.renderNodeContent = function (paint) {\n            return __awaiter(this, void 0, void 0, function () {\n                var container, curves, styles, _i, _a, child, image, image, iframeRenderer, canvas, size, _b, fontFamily, fontSize, baseline, bounds, x, textBounds, img, image, url, fontFamily, bounds;\n                return __generator(this, function (_c) {\n                    switch (_c.label) {\n                        case 0:\n                            this.applyEffects(paint.getEffects(4 /* CONTENT */));\n                            container = paint.container;\n                            curves = paint.curves;\n                            styles = container.styles;\n                            _i = 0, _a = container.textNodes;\n                            _c.label = 1;\n                        case 1:\n                            if (!(_i < _a.length)) return [3 /*break*/, 4];\n                            child = _a[_i];\n                            return [4 /*yield*/, this.renderTextNode(child, styles)];\n                        case 2:\n                            _c.sent();\n                            _c.label = 3;\n                        case 3:\n                            _i++;\n                            return [3 /*break*/, 1];\n                        case 4:\n                            if (!(container instanceof ImageElementContainer)) return [3 /*break*/, 8];\n                            _c.label = 5;\n                        case 5:\n                            _c.trys.push([5, 7, , 8]);\n                            return [4 /*yield*/, this.context.cache.match(container.src)];\n                        case 6:\n                            image = _c.sent();\n                            this.renderReplacedElement(container, curves, image);\n                            return [3 /*break*/, 8];\n                        case 7:\n                            _c.sent();\n                            this.context.logger.error(\"Error loading image \" + container.src);\n                            return [3 /*break*/, 8];\n                        case 8:\n                            if (container instanceof CanvasElementContainer) {\n                                this.renderReplacedElement(container, curves, container.canvas);\n                            }\n                            if (!(container instanceof SVGElementContainer)) return [3 /*break*/, 12];\n                            _c.label = 9;\n                        case 9:\n                            _c.trys.push([9, 11, , 12]);\n                            return [4 /*yield*/, this.context.cache.match(container.svg)];\n                        case 10:\n                            image = _c.sent();\n                            this.renderReplacedElement(container, curves, image);\n                            return [3 /*break*/, 12];\n                        case 11:\n                            _c.sent();\n                            this.context.logger.error(\"Error loading svg \" + container.svg.substring(0, 255));\n                            return [3 /*break*/, 12];\n                        case 12:\n                            if (!(container instanceof IFrameElementContainer && container.tree)) return [3 /*break*/, 14];\n                            iframeRenderer = new CanvasRenderer(this.context, {\n                                scale: this.options.scale,\n                                backgroundColor: container.backgroundColor,\n                                x: 0,\n                                y: 0,\n                                width: container.width,\n                                height: container.height\n                            });\n                            return [4 /*yield*/, iframeRenderer.render(container.tree)];\n                        case 13:\n                            canvas = _c.sent();\n                            if (container.width && container.height) {\n                                this.ctx.drawImage(canvas, 0, 0, container.width, container.height, container.bounds.left, container.bounds.top, container.bounds.width, container.bounds.height);\n                            }\n                            _c.label = 14;\n                        case 14:\n                            if (container instanceof InputElementContainer) {\n                                size = Math.min(container.bounds.width, container.bounds.height);\n                                if (container.type === CHECKBOX) {\n                                    if (container.checked) {\n                                        this.ctx.save();\n                                        this.path([\n                                            new Vector(container.bounds.left + size * 0.39363, container.bounds.top + size * 0.79),\n                                            new Vector(container.bounds.left + size * 0.16, container.bounds.top + size * 0.5549),\n                                            new Vector(container.bounds.left + size * 0.27347, container.bounds.top + size * 0.44071),\n                                            new Vector(container.bounds.left + size * 0.39694, container.bounds.top + size * 0.5649),\n                                            new Vector(container.bounds.left + size * 0.72983, container.bounds.top + size * 0.23),\n                                            new Vector(container.bounds.left + size * 0.84, container.bounds.top + size * 0.34085),\n                                            new Vector(container.bounds.left + size * 0.39363, container.bounds.top + size * 0.79)\n                                        ]);\n                                        this.ctx.fillStyle = asString(INPUT_COLOR);\n                                        this.ctx.fill();\n                                        this.ctx.restore();\n                                    }\n                                }\n                                else if (container.type === RADIO) {\n                                    if (container.checked) {\n                                        this.ctx.save();\n                                        this.ctx.beginPath();\n                                        this.ctx.arc(container.bounds.left + size / 2, container.bounds.top + size / 2, size / 4, 0, Math.PI * 2, true);\n                                        this.ctx.fillStyle = asString(INPUT_COLOR);\n                                        this.ctx.fill();\n                                        this.ctx.restore();\n                                    }\n                                }\n                            }\n                            if (isTextInputElement(container) && container.value.length) {\n                                _b = this.createFontStyle(styles), fontFamily = _b[0], fontSize = _b[1];\n                                baseline = this.fontMetrics.getMetrics(fontFamily, fontSize).baseline;\n                                this.ctx.font = fontFamily;\n                                this.ctx.fillStyle = asString(styles.color);\n                                this.ctx.textBaseline = 'alphabetic';\n                                this.ctx.textAlign = canvasTextAlign(container.styles.textAlign);\n                                bounds = contentBox(container);\n                                x = 0;\n                                switch (container.styles.textAlign) {\n                                    case 1 /* CENTER */:\n                                        x += bounds.width / 2;\n                                        break;\n                                    case 2 /* RIGHT */:\n                                        x += bounds.width;\n                                        break;\n                                }\n                                textBounds = bounds.add(x, 0, 0, -bounds.height / 2 + 1);\n                                this.ctx.save();\n                                this.path([\n                                    new Vector(bounds.left, bounds.top),\n                                    new Vector(bounds.left + bounds.width, bounds.top),\n                                    new Vector(bounds.left + bounds.width, bounds.top + bounds.height),\n                                    new Vector(bounds.left, bounds.top + bounds.height)\n                                ]);\n                                this.ctx.clip();\n                                this.renderTextWithLetterSpacing(new TextBounds(container.value, textBounds), styles.letterSpacing, baseline);\n                                this.ctx.restore();\n                                this.ctx.textBaseline = 'alphabetic';\n                                this.ctx.textAlign = 'left';\n                            }\n                            if (!contains(container.styles.display, 2048 /* LIST_ITEM */)) return [3 /*break*/, 20];\n                            if (!(container.styles.listStyleImage !== null)) return [3 /*break*/, 19];\n                            img = container.styles.listStyleImage;\n                            if (!(img.type === 0 /* URL */)) return [3 /*break*/, 18];\n                            image = void 0;\n                            url = img.url;\n                            _c.label = 15;\n                        case 15:\n                            _c.trys.push([15, 17, , 18]);\n                            return [4 /*yield*/, this.context.cache.match(url)];\n                        case 16:\n                            image = _c.sent();\n                            this.ctx.drawImage(image, container.bounds.left - (image.width + 10), container.bounds.top);\n                            return [3 /*break*/, 18];\n                        case 17:\n                            _c.sent();\n                            this.context.logger.error(\"Error loading list-style-image \" + url);\n                            return [3 /*break*/, 18];\n                        case 18: return [3 /*break*/, 20];\n                        case 19:\n                            if (paint.listValue && container.styles.listStyleType !== -1 /* NONE */) {\n                                fontFamily = this.createFontStyle(styles)[0];\n                                this.ctx.font = fontFamily;\n                                this.ctx.fillStyle = asString(styles.color);\n                                this.ctx.textBaseline = 'middle';\n                                this.ctx.textAlign = 'right';\n                                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);\n                                this.renderTextWithLetterSpacing(new TextBounds(paint.listValue, bounds), styles.letterSpacing, computeLineHeight(styles.lineHeight, styles.fontSize.number) / 2 + 2);\n                                this.ctx.textBaseline = 'bottom';\n                                this.ctx.textAlign = 'left';\n                            }\n                            _c.label = 20;\n                        case 20: return [2 /*return*/];\n                    }\n                });\n            });\n        };\n        CanvasRenderer.prototype.renderStackContent = function (stack) {\n            return __awaiter(this, void 0, void 0, function () {\n                var _i, _a, child, _b, _c, child, _d, _e, child, _f, _g, child, _h, _j, child, _k, _l, child, _m, _o, child;\n                return __generator(this, function (_p) {\n                    switch (_p.label) {\n                        case 0:\n                            if (contains(stack.element.container.flags, 16 /* DEBUG_RENDER */)) {\n                                debugger;\n                            }\n                            // https://www.w3.org/TR/css-position-3/#painting-order\n                            // 1. the background and borders of the element forming the stacking context.\n                            return [4 /*yield*/, this.renderNodeBackgroundAndBorders(stack.element)];\n                        case 1:\n                            // https://www.w3.org/TR/css-position-3/#painting-order\n                            // 1. the background and borders of the element forming the stacking context.\n                            _p.sent();\n                            _i = 0, _a = stack.negativeZIndex;\n                            _p.label = 2;\n                        case 2:\n                            if (!(_i < _a.length)) return [3 /*break*/, 5];\n                            child = _a[_i];\n                            return [4 /*yield*/, this.renderStack(child)];\n                        case 3:\n                            _p.sent();\n                            _p.label = 4;\n                        case 4:\n                            _i++;\n                            return [3 /*break*/, 2];\n                        case 5: \n                        // 3. For all its in-flow, non-positioned, block-level descendants in tree order:\n                        return [4 /*yield*/, this.renderNodeContent(stack.element)];\n                        case 6:\n                            // 3. For all its in-flow, non-positioned, block-level descendants in tree order:\n                            _p.sent();\n                            _b = 0, _c = stack.nonInlineLevel;\n                            _p.label = 7;\n                        case 7:\n                            if (!(_b < _c.length)) return [3 /*break*/, 10];\n                            child = _c[_b];\n                            return [4 /*yield*/, this.renderNode(child)];\n                        case 8:\n                            _p.sent();\n                            _p.label = 9;\n                        case 9:\n                            _b++;\n                            return [3 /*break*/, 7];\n                        case 10:\n                            _d = 0, _e = stack.nonPositionedFloats;\n                            _p.label = 11;\n                        case 11:\n                            if (!(_d < _e.length)) return [3 /*break*/, 14];\n                            child = _e[_d];\n                            return [4 /*yield*/, this.renderStack(child)];\n                        case 12:\n                            _p.sent();\n                            _p.label = 13;\n                        case 13:\n                            _d++;\n                            return [3 /*break*/, 11];\n                        case 14:\n                            _f = 0, _g = stack.nonPositionedInlineLevel;\n                            _p.label = 15;\n                        case 15:\n                            if (!(_f < _g.length)) return [3 /*break*/, 18];\n                            child = _g[_f];\n                            return [4 /*yield*/, this.renderStack(child)];\n                        case 16:\n                            _p.sent();\n                            _p.label = 17;\n                        case 17:\n                            _f++;\n                            return [3 /*break*/, 15];\n                        case 18:\n                            _h = 0, _j = stack.inlineLevel;\n                            _p.label = 19;\n                        case 19:\n                            if (!(_h < _j.length)) return [3 /*break*/, 22];\n                            child = _j[_h];\n                            return [4 /*yield*/, this.renderNode(child)];\n                        case 20:\n                            _p.sent();\n                            _p.label = 21;\n                        case 21:\n                            _h++;\n                            return [3 /*break*/, 19];\n                        case 22:\n                            _k = 0, _l = stack.zeroOrAutoZIndexOrTransformedOrOpacity;\n                            _p.label = 23;\n                        case 23:\n                            if (!(_k < _l.length)) return [3 /*break*/, 26];\n                            child = _l[_k];\n                            return [4 /*yield*/, this.renderStack(child)];\n                        case 24:\n                            _p.sent();\n                            _p.label = 25;\n                        case 25:\n                            _k++;\n                            return [3 /*break*/, 23];\n                        case 26:\n                            _m = 0, _o = stack.positiveZIndex;\n                            _p.label = 27;\n                        case 27:\n                            if (!(_m < _o.length)) return [3 /*break*/, 30];\n                            child = _o[_m];\n                            return [4 /*yield*/, this.renderStack(child)];\n                        case 28:\n                            _p.sent();\n                            _p.label = 29;\n                        case 29:\n                            _m++;\n                            return [3 /*break*/, 27];\n                        case 30: return [2 /*return*/];\n                    }\n                });\n            });\n        };\n        CanvasRenderer.prototype.mask = function (paths) {\n            this.ctx.beginPath();\n            this.ctx.moveTo(0, 0);\n            this.ctx.lineTo(this.canvas.width, 0);\n            this.ctx.lineTo(this.canvas.width, this.canvas.height);\n            this.ctx.lineTo(0, this.canvas.height);\n            this.ctx.lineTo(0, 0);\n            this.formatPath(paths.slice(0).reverse());\n            this.ctx.closePath();\n        };\n        CanvasRenderer.prototype.path = function (paths) {\n            this.ctx.beginPath();\n            this.formatPath(paths);\n            this.ctx.closePath();\n        };\n        CanvasRenderer.prototype.formatPath = function (paths) {\n            var _this = this;\n            paths.forEach(function (point, index) {\n                var start = isBezierCurve(point) ? point.start : point;\n                if (index === 0) {\n                    _this.ctx.moveTo(start.x, start.y);\n                }\n                else {\n                    _this.ctx.lineTo(start.x, start.y);\n                }\n                if (isBezierCurve(point)) {\n                    _this.ctx.bezierCurveTo(point.startControl.x, point.startControl.y, point.endControl.x, point.endControl.y, point.end.x, point.end.y);\n                }\n            });\n        };\n        CanvasRenderer.prototype.renderRepeat = function (path, pattern, offsetX, offsetY) {\n            this.path(path);\n            this.ctx.fillStyle = pattern;\n            this.ctx.translate(offsetX, offsetY);\n            this.ctx.fill();\n            this.ctx.translate(-offsetX, -offsetY);\n        };\n        CanvasRenderer.prototype.resizeImage = function (image, width, height) {\n            var _a;\n            if (image.width === width && image.height === height) {\n                return image;\n            }\n            var ownerDocument = (_a = this.canvas.ownerDocument) !== null && _a !== void 0 ? _a : document;\n            var canvas = ownerDocument.createElement('canvas');\n            canvas.width = Math.max(1, width);\n            canvas.height = Math.max(1, height);\n            var ctx = canvas.getContext('2d');\n            ctx.drawImage(image, 0, 0, image.width, image.height, 0, 0, width, height);\n            return canvas;\n        };\n        CanvasRenderer.prototype.renderBackgroundImage = function (container) {\n            return __awaiter(this, void 0, void 0, function () {\n                var index, _loop_1, this_1, _i, _a, backgroundImage;\n                return __generator(this, function (_b) {\n                    switch (_b.label) {\n                        case 0:\n                            index = container.styles.backgroundImage.length - 1;\n                            _loop_1 = function (backgroundImage) {\n                                var image, url, _c, path, x, y, width, height, pattern, _d, path, x, y, width, height, _e, lineLength, x0, x1, y0, y1, canvas, ctx, gradient_1, pattern, _f, path, left, top_1, width, height, position, x, y, _g, rx, ry, radialGradient_1, midX, midY, f, invF;\n                                return __generator(this, function (_h) {\n                                    switch (_h.label) {\n                                        case 0:\n                                            if (!(backgroundImage.type === 0 /* URL */)) return [3 /*break*/, 5];\n                                            image = void 0;\n                                            url = backgroundImage.url;\n                                            _h.label = 1;\n                                        case 1:\n                                            _h.trys.push([1, 3, , 4]);\n                                            return [4 /*yield*/, this_1.context.cache.match(url)];\n                                        case 2:\n                                            image = _h.sent();\n                                            return [3 /*break*/, 4];\n                                        case 3:\n                                            _h.sent();\n                                            this_1.context.logger.error(\"Error loading background-image \" + url);\n                                            return [3 /*break*/, 4];\n                                        case 4:\n                                            if (image) {\n                                                _c = calculateBackgroundRendering(container, index, [\n                                                    image.width,\n                                                    image.height,\n                                                    image.width / image.height\n                                                ]), path = _c[0], x = _c[1], y = _c[2], width = _c[3], height = _c[4];\n                                                pattern = this_1.ctx.createPattern(this_1.resizeImage(image, width, height), 'repeat');\n                                                this_1.renderRepeat(path, pattern, x, y);\n                                            }\n                                            return [3 /*break*/, 6];\n                                        case 5:\n                                            if (isLinearGradient(backgroundImage)) {\n                                                _d = calculateBackgroundRendering(container, index, [null, null, null]), path = _d[0], x = _d[1], y = _d[2], width = _d[3], height = _d[4];\n                                                _e = calculateGradientDirection(backgroundImage.angle, width, height), lineLength = _e[0], x0 = _e[1], x1 = _e[2], y0 = _e[3], y1 = _e[4];\n                                                canvas = document.createElement('canvas');\n                                                canvas.width = width;\n                                                canvas.height = height;\n                                                ctx = canvas.getContext('2d');\n                                                gradient_1 = ctx.createLinearGradient(x0, y0, x1, y1);\n                                                processColorStops(backgroundImage.stops, lineLength).forEach(function (colorStop) {\n                                                    return gradient_1.addColorStop(colorStop.stop, asString(colorStop.color));\n                                                });\n                                                ctx.fillStyle = gradient_1;\n                                                ctx.fillRect(0, 0, width, height);\n                                                if (width > 0 && height > 0) {\n                                                    pattern = this_1.ctx.createPattern(canvas, 'repeat');\n                                                    this_1.renderRepeat(path, pattern, x, y);\n                                                }\n                                            }\n                                            else if (isRadialGradient(backgroundImage)) {\n                                                _f = calculateBackgroundRendering(container, index, [\n                                                    null,\n                                                    null,\n                                                    null\n                                                ]), path = _f[0], left = _f[1], top_1 = _f[2], width = _f[3], height = _f[4];\n                                                position = backgroundImage.position.length === 0 ? [FIFTY_PERCENT] : backgroundImage.position;\n                                                x = getAbsoluteValue(position[0], width);\n                                                y = getAbsoluteValue(position[position.length - 1], height);\n                                                _g = calculateRadius(backgroundImage, x, y, width, height), rx = _g[0], ry = _g[1];\n                                                if (rx > 0 && ry > 0) {\n                                                    radialGradient_1 = this_1.ctx.createRadialGradient(left + x, top_1 + y, 0, left + x, top_1 + y, rx);\n                                                    processColorStops(backgroundImage.stops, rx * 2).forEach(function (colorStop) {\n                                                        return radialGradient_1.addColorStop(colorStop.stop, asString(colorStop.color));\n                                                    });\n                                                    this_1.path(path);\n                                                    this_1.ctx.fillStyle = radialGradient_1;\n                                                    if (rx !== ry) {\n                                                        midX = container.bounds.left + 0.5 * container.bounds.width;\n                                                        midY = container.bounds.top + 0.5 * container.bounds.height;\n                                                        f = ry / rx;\n                                                        invF = 1 / f;\n                                                        this_1.ctx.save();\n                                                        this_1.ctx.translate(midX, midY);\n                                                        this_1.ctx.transform(1, 0, 0, f, 0, 0);\n                                                        this_1.ctx.translate(-midX, -midY);\n                                                        this_1.ctx.fillRect(left, invF * (top_1 - midY) + midY, width, height * invF);\n                                                        this_1.ctx.restore();\n                                                    }\n                                                    else {\n                                                        this_1.ctx.fill();\n                                                    }\n                                                }\n                                            }\n                                            _h.label = 6;\n                                        case 6:\n                                            index--;\n                                            return [2 /*return*/];\n                                    }\n                                });\n                            };\n                            this_1 = this;\n                            _i = 0, _a = container.styles.backgroundImage.slice(0).reverse();\n                            _b.label = 1;\n                        case 1:\n                            if (!(_i < _a.length)) return [3 /*break*/, 4];\n                            backgroundImage = _a[_i];\n                            return [5 /*yield**/, _loop_1(backgroundImage)];\n                        case 2:\n                            _b.sent();\n                            _b.label = 3;\n                        case 3:\n                            _i++;\n                            return [3 /*break*/, 1];\n                        case 4: return [2 /*return*/];\n                    }\n                });\n            });\n        };\n        CanvasRenderer.prototype.renderSolidBorder = function (color, side, curvePoints) {\n            return __awaiter(this, void 0, void 0, function () {\n                return __generator(this, function (_a) {\n                    this.path(parsePathForBorder(curvePoints, side));\n                    this.ctx.fillStyle = asString(color);\n                    this.ctx.fill();\n                    return [2 /*return*/];\n                });\n            });\n        };\n        CanvasRenderer.prototype.renderDoubleBorder = function (color, width, side, curvePoints) {\n            return __awaiter(this, void 0, void 0, function () {\n                var outerPaths, innerPaths;\n                return __generator(this, function (_a) {\n                    switch (_a.label) {\n                        case 0:\n                            if (!(width < 3)) return [3 /*break*/, 2];\n                            return [4 /*yield*/, this.renderSolidBorder(color, side, curvePoints)];\n                        case 1:\n                            _a.sent();\n                            return [2 /*return*/];\n                        case 2:\n                            outerPaths = parsePathForBorderDoubleOuter(curvePoints, side);\n                            this.path(outerPaths);\n                            this.ctx.fillStyle = asString(color);\n                            this.ctx.fill();\n                            innerPaths = parsePathForBorderDoubleInner(curvePoints, side);\n                            this.path(innerPaths);\n                            this.ctx.fill();\n                            return [2 /*return*/];\n                    }\n                });\n            });\n        };\n        CanvasRenderer.prototype.renderNodeBackgroundAndBorders = function (paint) {\n            return __awaiter(this, void 0, void 0, function () {\n                var styles, hasBackground, borders, backgroundPaintingArea, side, _i, borders_1, border;\n                var _this = this;\n                return __generator(this, function (_a) {\n                    switch (_a.label) {\n                        case 0:\n                            this.applyEffects(paint.getEffects(2 /* BACKGROUND_BORDERS */));\n                            styles = paint.container.styles;\n                            hasBackground = !isTransparent(styles.backgroundColor) || styles.backgroundImage.length;\n                            borders = [\n                                { style: styles.borderTopStyle, color: styles.borderTopColor, width: styles.borderTopWidth },\n                                { style: styles.borderRightStyle, color: styles.borderRightColor, width: styles.borderRightWidth },\n                                { style: styles.borderBottomStyle, color: styles.borderBottomColor, width: styles.borderBottomWidth },\n                                { style: styles.borderLeftStyle, color: styles.borderLeftColor, width: styles.borderLeftWidth }\n                            ];\n                            backgroundPaintingArea = calculateBackgroundCurvedPaintingArea(getBackgroundValueForIndex(styles.backgroundClip, 0), paint.curves);\n                            if (!(hasBackground || styles.boxShadow.length)) return [3 /*break*/, 2];\n                            this.ctx.save();\n                            this.path(backgroundPaintingArea);\n                            this.ctx.clip();\n                            if (!isTransparent(styles.backgroundColor)) {\n                                this.ctx.fillStyle = asString(styles.backgroundColor);\n                                this.ctx.fill();\n                            }\n                            return [4 /*yield*/, this.renderBackgroundImage(paint.container)];\n                        case 1:\n                            _a.sent();\n                            this.ctx.restore();\n                            styles.boxShadow\n                                .slice(0)\n                                .reverse()\n                                .forEach(function (shadow) {\n                                _this.ctx.save();\n                                var borderBoxArea = calculateBorderBoxPath(paint.curves);\n                                var maskOffset = shadow.inset ? 0 : MASK_OFFSET;\n                                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));\n                                if (shadow.inset) {\n                                    _this.path(borderBoxArea);\n                                    _this.ctx.clip();\n                                    _this.mask(shadowPaintingArea);\n                                }\n                                else {\n                                    _this.mask(borderBoxArea);\n                                    _this.ctx.clip();\n                                    _this.path(shadowPaintingArea);\n                                }\n                                _this.ctx.shadowOffsetX = shadow.offsetX.number + maskOffset;\n                                _this.ctx.shadowOffsetY = shadow.offsetY.number;\n                                _this.ctx.shadowColor = asString(shadow.color);\n                                _this.ctx.shadowBlur = shadow.blur.number;\n                                _this.ctx.fillStyle = shadow.inset ? asString(shadow.color) : 'rgba(0,0,0,1)';\n                                _this.ctx.fill();\n                                _this.ctx.restore();\n                            });\n                            _a.label = 2;\n                        case 2:\n                            side = 0;\n                            _i = 0, borders_1 = borders;\n                            _a.label = 3;\n                        case 3:\n                            if (!(_i < borders_1.length)) return [3 /*break*/, 13];\n                            border = borders_1[_i];\n                            if (!(border.style !== 0 /* NONE */ && !isTransparent(border.color) && border.width > 0)) return [3 /*break*/, 11];\n                            if (!(border.style === 2 /* DASHED */)) return [3 /*break*/, 5];\n                            return [4 /*yield*/, this.renderDashedDottedBorder(border.color, border.width, side, paint.curves, 2 /* DASHED */)];\n                        case 4:\n                            _a.sent();\n                            return [3 /*break*/, 11];\n                        case 5:\n                            if (!(border.style === 3 /* DOTTED */)) return [3 /*break*/, 7];\n                            return [4 /*yield*/, this.renderDashedDottedBorder(border.color, border.width, side, paint.curves, 3 /* DOTTED */)];\n                        case 6:\n                            _a.sent();\n                            return [3 /*break*/, 11];\n                        case 7:\n                            if (!(border.style === 4 /* DOUBLE */)) return [3 /*break*/, 9];\n                            return [4 /*yield*/, this.renderDoubleBorder(border.color, border.width, side, paint.curves)];\n                        case 8:\n                            _a.sent();\n                            return [3 /*break*/, 11];\n                        case 9: return [4 /*yield*/, this.renderSolidBorder(border.color, side, paint.curves)];\n                        case 10:\n                            _a.sent();\n                            _a.label = 11;\n                        case 11:\n                            side++;\n                            _a.label = 12;\n                        case 12:\n                            _i++;\n                            return [3 /*break*/, 3];\n                        case 13: return [2 /*return*/];\n                    }\n                });\n            });\n        };\n        CanvasRenderer.prototype.renderDashedDottedBorder = function (color, width, side, curvePoints, style) {\n            return __awaiter(this, void 0, void 0, function () {\n                var strokePaths, boxPaths, startX, startY, endX, endY, length, dashLength, spaceLength, useLineDash, multiplier, numberOfDashes, minSpace, maxSpace, path1, path2, path1, path2;\n                return __generator(this, function (_a) {\n                    this.ctx.save();\n                    strokePaths = parsePathForBorderStroke(curvePoints, side);\n                    boxPaths = parsePathForBorder(curvePoints, side);\n                    if (style === 2 /* DASHED */) {\n                        this.path(boxPaths);\n                        this.ctx.clip();\n                    }\n                    if (isBezierCurve(boxPaths[0])) {\n                        startX = boxPaths[0].start.x;\n                        startY = boxPaths[0].start.y;\n                    }\n                    else {\n                        startX = boxPaths[0].x;\n                        startY = boxPaths[0].y;\n                    }\n                    if (isBezierCurve(boxPaths[1])) {\n                        endX = boxPaths[1].end.x;\n                        endY = boxPaths[1].end.y;\n                    }\n                    else {\n                        endX = boxPaths[1].x;\n                        endY = boxPaths[1].y;\n                    }\n                    if (side === 0 || side === 2) {\n                        length = Math.abs(startX - endX);\n                    }\n                    else {\n                        length = Math.abs(startY - endY);\n                    }\n                    this.ctx.beginPath();\n                    if (style === 3 /* DOTTED */) {\n                        this.formatPath(strokePaths);\n                    }\n                    else {\n                        this.formatPath(boxPaths.slice(0, 2));\n                    }\n                    dashLength = width < 3 ? width * 3 : width * 2;\n                    spaceLength = width < 3 ? width * 2 : width;\n                    if (style === 3 /* DOTTED */) {\n                        dashLength = width;\n                        spaceLength = width;\n                    }\n                    useLineDash = true;\n                    if (length <= dashLength * 2) {\n                        useLineDash = false;\n                    }\n                    else if (length <= dashLength * 2 + spaceLength) {\n                        multiplier = length / (2 * dashLength + spaceLength);\n                        dashLength *= multiplier;\n                        spaceLength *= multiplier;\n                    }\n                    else {\n                        numberOfDashes = Math.floor((length + spaceLength) / (dashLength + spaceLength));\n                        minSpace = (length - numberOfDashes * dashLength) / (numberOfDashes - 1);\n                        maxSpace = (length - (numberOfDashes + 1) * dashLength) / numberOfDashes;\n                        spaceLength =\n                            maxSpace <= 0 || Math.abs(spaceLength - minSpace) < Math.abs(spaceLength - maxSpace)\n                                ? minSpace\n                                : maxSpace;\n                    }\n                    if (useLineDash) {\n                        if (style === 3 /* DOTTED */) {\n                            this.ctx.setLineDash([0, dashLength + spaceLength]);\n                        }\n                        else {\n                            this.ctx.setLineDash([dashLength, spaceLength]);\n                        }\n                    }\n                    if (style === 3 /* DOTTED */) {\n                        this.ctx.lineCap = 'round';\n                        this.ctx.lineWidth = width;\n                    }\n                    else {\n                        this.ctx.lineWidth = width * 2 + 1.1;\n                    }\n                    this.ctx.strokeStyle = asString(color);\n                    this.ctx.stroke();\n                    this.ctx.setLineDash([]);\n                    // dashed round edge gap\n                    if (style === 2 /* DASHED */) {\n                        if (isBezierCurve(boxPaths[0])) {\n                            path1 = boxPaths[3];\n                            path2 = boxPaths[0];\n                            this.ctx.beginPath();\n                            this.formatPath([new Vector(path1.end.x, path1.end.y), new Vector(path2.start.x, path2.start.y)]);\n                            this.ctx.stroke();\n                        }\n                        if (isBezierCurve(boxPaths[1])) {\n                            path1 = boxPaths[1];\n                            path2 = boxPaths[2];\n                            this.ctx.beginPath();\n                            this.formatPath([new Vector(path1.end.x, path1.end.y), new Vector(path2.start.x, path2.start.y)]);\n                            this.ctx.stroke();\n                        }\n                    }\n                    this.ctx.restore();\n                    return [2 /*return*/];\n                });\n            });\n        };\n        CanvasRenderer.prototype.render = function (element) {\n            return __awaiter(this, void 0, void 0, function () {\n                var stack;\n                return __generator(this, function (_a) {\n                    switch (_a.label) {\n                        case 0:\n                            if (this.options.backgroundColor) {\n                                this.ctx.fillStyle = asString(this.options.backgroundColor);\n                                this.ctx.fillRect(this.options.x, this.options.y, this.options.width, this.options.height);\n                            }\n                            stack = parseStackingContexts(element);\n                            return [4 /*yield*/, this.renderStack(stack)];\n                        case 1:\n                            _a.sent();\n                            this.applyEffects([]);\n                            return [2 /*return*/, this.canvas];\n                    }\n                });\n            });\n        };\n        return CanvasRenderer;\n    }(Renderer));\n    var isTextInputElement = function (container) {\n        if (container instanceof TextareaElementContainer) {\n            return true;\n        }\n        else if (container instanceof SelectElementContainer) {\n            return true;\n        }\n        else if (container instanceof InputElementContainer && container.type !== RADIO && container.type !== CHECKBOX) {\n            return true;\n        }\n        return false;\n    };\n    var calculateBackgroundCurvedPaintingArea = function (clip, curves) {\n        switch (clip) {\n            case 0 /* BORDER_BOX */:\n                return calculateBorderBoxPath(curves);\n            case 2 /* CONTENT_BOX */:\n                return calculateContentBoxPath(curves);\n            case 1 /* PADDING_BOX */:\n            default:\n                return calculatePaddingBoxPath(curves);\n        }\n    };\n    var canvasTextAlign = function (textAlign) {\n        switch (textAlign) {\n            case 1 /* CENTER */:\n                return 'center';\n            case 2 /* RIGHT */:\n                return 'right';\n            case 0 /* LEFT */:\n            default:\n                return 'left';\n        }\n    };\n    // see https://github.com/niklasvh/html2canvas/pull/2645\n    var iOSBrokenFonts = ['-apple-system', 'system-ui'];\n    var fixIOSSystemFonts = function (fontFamilies) {\n        return /iPhone OS 15_(0|1)/.test(window.navigator.userAgent)\n            ? fontFamilies.filter(function (fontFamily) { return iOSBrokenFonts.indexOf(fontFamily) === -1; })\n            : fontFamilies;\n    };\n\n    var ForeignObjectRenderer = /** @class */ (function (_super) {\n        __extends(ForeignObjectRenderer, _super);\n        function ForeignObjectRenderer(context, options) {\n            var _this = _super.call(this, context, options) || this;\n            _this.canvas = options.canvas ? options.canvas : document.createElement('canvas');\n            _this.ctx = _this.canvas.getContext('2d');\n            _this.options = options;\n            _this.canvas.width = Math.floor(options.width * options.scale);\n            _this.canvas.height = Math.floor(options.height * options.scale);\n            _this.canvas.style.width = options.width + \"px\";\n            _this.canvas.style.height = options.height + \"px\";\n            _this.ctx.scale(_this.options.scale, _this.options.scale);\n            _this.ctx.translate(-options.x, -options.y);\n            _this.context.logger.debug(\"EXPERIMENTAL ForeignObject renderer initialized (\" + options.width + \"x\" + options.height + \" at \" + options.x + \",\" + options.y + \") with scale \" + options.scale);\n            return _this;\n        }\n        ForeignObjectRenderer.prototype.render = function (element) {\n            return __awaiter(this, void 0, void 0, function () {\n                var svg, img;\n                return __generator(this, function (_a) {\n                    switch (_a.label) {\n                        case 0:\n                            svg = createForeignObjectSVG(this.options.width * this.options.scale, this.options.height * this.options.scale, this.options.scale, this.options.scale, element);\n                            return [4 /*yield*/, loadSerializedSVG(svg)];\n                        case 1:\n                            img = _a.sent();\n                            if (this.options.backgroundColor) {\n                                this.ctx.fillStyle = asString(this.options.backgroundColor);\n                                this.ctx.fillRect(0, 0, this.options.width * this.options.scale, this.options.height * this.options.scale);\n                            }\n                            this.ctx.drawImage(img, -this.options.x * this.options.scale, -this.options.y * this.options.scale);\n                            return [2 /*return*/, this.canvas];\n                    }\n                });\n            });\n        };\n        return ForeignObjectRenderer;\n    }(Renderer));\n    var loadSerializedSVG = function (svg) {\n        return new Promise(function (resolve, reject) {\n            var img = new Image();\n            img.onload = function () {\n                resolve(img);\n            };\n            img.onerror = reject;\n            img.src = \"data:image/svg+xml;charset=utf-8,\" + encodeURIComponent(new XMLSerializer().serializeToString(svg));\n        });\n    };\n\n    var Logger = /** @class */ (function () {\n        function Logger(_a) {\n            var id = _a.id, enabled = _a.enabled;\n            this.id = id;\n            this.enabled = enabled;\n            this.start = Date.now();\n        }\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        Logger.prototype.debug = function () {\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            if (this.enabled) {\n                // eslint-disable-next-line no-console\n                if (typeof window !== 'undefined' && window.console && typeof console.debug === 'function') {\n                    // eslint-disable-next-line no-console\n                    console.debug.apply(console, __spreadArray([this.id, this.getTime() + \"ms\"], args));\n                }\n                else {\n                    this.info.apply(this, args);\n                }\n            }\n        };\n        Logger.prototype.getTime = function () {\n            return Date.now() - this.start;\n        };\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        Logger.prototype.info = function () {\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            if (this.enabled) {\n                // eslint-disable-next-line no-console\n                if (typeof window !== 'undefined' && window.console && typeof console.info === 'function') {\n                    // eslint-disable-next-line no-console\n                    console.info.apply(console, __spreadArray([this.id, this.getTime() + \"ms\"], args));\n                }\n            }\n        };\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        Logger.prototype.warn = function () {\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            if (this.enabled) {\n                // eslint-disable-next-line no-console\n                if (typeof window !== 'undefined' && window.console && typeof console.warn === 'function') {\n                    // eslint-disable-next-line no-console\n                    console.warn.apply(console, __spreadArray([this.id, this.getTime() + \"ms\"], args));\n                }\n                else {\n                    this.info.apply(this, args);\n                }\n            }\n        };\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        Logger.prototype.error = function () {\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            if (this.enabled) {\n                // eslint-disable-next-line no-console\n                if (typeof window !== 'undefined' && window.console && typeof console.error === 'function') {\n                    // eslint-disable-next-line no-console\n                    console.error.apply(console, __spreadArray([this.id, this.getTime() + \"ms\"], args));\n                }\n                else {\n                    this.info.apply(this, args);\n                }\n            }\n        };\n        Logger.instances = {};\n        return Logger;\n    }());\n\n    var Context = /** @class */ (function () {\n        function Context(options, windowBounds) {\n            var _a;\n            this.windowBounds = windowBounds;\n            this.instanceName = \"#\" + Context.instanceCount++;\n            this.logger = new Logger({ id: this.instanceName, enabled: options.logging });\n            this.cache = (_a = options.cache) !== null && _a !== void 0 ? _a : new Cache(this, options);\n        }\n        Context.instanceCount = 1;\n        return Context;\n    }());\n\n    var html2canvas = function (element, options) {\n        if (options === void 0) { options = {}; }\n        return renderElement(element, options);\n    };\n    if (typeof window !== 'undefined') {\n        CacheStorage.setContext(window);\n    }\n    var renderElement = function (element, opts) { return __awaiter(void 0, void 0, void 0, function () {\n        var ownerDocument, defaultView, resourceOptions, contextOptions, windowOptions, windowBounds, context, foreignObjectRendering, cloneOptions, documentCloner, clonedElement, container, _a, width, height, left, top, backgroundColor, renderOptions, canvas, renderer, root, renderer;\n        var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;\n        return __generator(this, function (_u) {\n            switch (_u.label) {\n                case 0:\n                    if (!element || typeof element !== 'object') {\n                        return [2 /*return*/, Promise.reject('Invalid element provided as first argument')];\n                    }\n                    ownerDocument = element.ownerDocument;\n                    if (!ownerDocument) {\n                        throw new Error(\"Element is not attached to a Document\");\n                    }\n                    defaultView = ownerDocument.defaultView;\n                    if (!defaultView) {\n                        throw new Error(\"Document is not attached to a Window\");\n                    }\n                    resourceOptions = {\n                        allowTaint: (_b = opts.allowTaint) !== null && _b !== void 0 ? _b : false,\n                        imageTimeout: (_c = opts.imageTimeout) !== null && _c !== void 0 ? _c : 15000,\n                        proxy: opts.proxy,\n                        useCORS: (_d = opts.useCORS) !== null && _d !== void 0 ? _d : false\n                    };\n                    contextOptions = __assign({ logging: (_e = opts.logging) !== null && _e !== void 0 ? _e : true, cache: opts.cache }, resourceOptions);\n                    windowOptions = {\n                        windowWidth: (_f = opts.windowWidth) !== null && _f !== void 0 ? _f : defaultView.innerWidth,\n                        windowHeight: (_g = opts.windowHeight) !== null && _g !== void 0 ? _g : defaultView.innerHeight,\n                        scrollX: (_h = opts.scrollX) !== null && _h !== void 0 ? _h : defaultView.pageXOffset,\n                        scrollY: (_j = opts.scrollY) !== null && _j !== void 0 ? _j : defaultView.pageYOffset\n                    };\n                    windowBounds = new Bounds(windowOptions.scrollX, windowOptions.scrollY, windowOptions.windowWidth, windowOptions.windowHeight);\n                    context = new Context(contextOptions, windowBounds);\n                    foreignObjectRendering = (_k = opts.foreignObjectRendering) !== null && _k !== void 0 ? _k : false;\n                    cloneOptions = {\n                        allowTaint: (_l = opts.allowTaint) !== null && _l !== void 0 ? _l : false,\n                        onclone: opts.onclone,\n                        ignoreElements: opts.ignoreElements,\n                        inlineImages: foreignObjectRendering,\n                        copyStyles: foreignObjectRendering\n                    };\n                    context.logger.debug(\"Starting document clone with size \" + windowBounds.width + \"x\" + windowBounds.height + \" scrolled to \" + -windowBounds.left + \",\" + -windowBounds.top);\n                    documentCloner = new DocumentCloner(context, element, cloneOptions);\n                    clonedElement = documentCloner.clonedReferenceElement;\n                    if (!clonedElement) {\n                        return [2 /*return*/, Promise.reject(\"Unable to find element in cloned iframe\")];\n                    }\n                    return [4 /*yield*/, documentCloner.toIFrame(ownerDocument, windowBounds)];\n                case 1:\n                    container = _u.sent();\n                    _a = isBodyElement(clonedElement) || isHTMLElement(clonedElement)\n                        ? parseDocumentSize(clonedElement.ownerDocument)\n                        : parseBounds(context, clonedElement), width = _a.width, height = _a.height, left = _a.left, top = _a.top;\n                    backgroundColor = parseBackgroundColor(context, clonedElement, opts.backgroundColor);\n                    renderOptions = {\n                        canvas: opts.canvas,\n                        backgroundColor: backgroundColor,\n                        scale: (_o = (_m = opts.scale) !== null && _m !== void 0 ? _m : defaultView.devicePixelRatio) !== null && _o !== void 0 ? _o : 1,\n                        x: ((_p = opts.x) !== null && _p !== void 0 ? _p : 0) + left,\n                        y: ((_q = opts.y) !== null && _q !== void 0 ? _q : 0) + top,\n                        width: (_r = opts.width) !== null && _r !== void 0 ? _r : Math.ceil(width),\n                        height: (_s = opts.height) !== null && _s !== void 0 ? _s : Math.ceil(height)\n                    };\n                    if (!foreignObjectRendering) return [3 /*break*/, 3];\n                    context.logger.debug(\"Document cloned, using foreign object rendering\");\n                    renderer = new ForeignObjectRenderer(context, renderOptions);\n                    return [4 /*yield*/, renderer.render(clonedElement)];\n                case 2:\n                    canvas = _u.sent();\n                    return [3 /*break*/, 5];\n                case 3:\n                    context.logger.debug(\"Document cloned, element located at \" + left + \",\" + top + \" with size \" + width + \"x\" + height + \" using computed rendering\");\n                    context.logger.debug(\"Starting DOM parsing\");\n                    root = parseTree(context, clonedElement);\n                    if (backgroundColor === root.styles.backgroundColor) {\n                        root.styles.backgroundColor = COLORS.TRANSPARENT;\n                    }\n                    context.logger.debug(\"Starting renderer for element at \" + renderOptions.x + \",\" + renderOptions.y + \" with size \" + renderOptions.width + \"x\" + renderOptions.height);\n                    renderer = new CanvasRenderer(context, renderOptions);\n                    return [4 /*yield*/, renderer.render(root)];\n                case 4:\n                    canvas = _u.sent();\n                    _u.label = 5;\n                case 5:\n                    if ((_t = opts.removeContainer) !== null && _t !== void 0 ? _t : true) {\n                        if (!DocumentCloner.destroy(container)) {\n                            context.logger.error(\"Cannot detach cloned iframe as it is not in the DOM anymore\");\n                        }\n                    }\n                    context.logger.debug(\"Finished rendering\");\n                    return [2 /*return*/, canvas];\n            }\n        });\n    }); };\n    var parseBackgroundColor = function (context, element, backgroundColorOverride) {\n        var ownerDocument = element.ownerDocument;\n        // http://www.w3.org/TR/css3-background/#special-backgrounds\n        var documentBackgroundColor = ownerDocument.documentElement\n            ? parseColor(context, getComputedStyle(ownerDocument.documentElement).backgroundColor)\n            : COLORS.TRANSPARENT;\n        var bodyBackgroundColor = ownerDocument.body\n            ? parseColor(context, getComputedStyle(ownerDocument.body).backgroundColor)\n            : COLORS.TRANSPARENT;\n        var defaultBackgroundColor = typeof backgroundColorOverride === 'string'\n            ? parseColor(context, backgroundColorOverride)\n            : backgroundColorOverride === null\n                ? COLORS.TRANSPARENT\n                : 0xffffffff;\n        return element === ownerDocument.documentElement\n            ? isTransparent(documentBackgroundColor)\n                ? isTransparent(bodyBackgroundColor)\n                    ? defaultBackgroundColor\n                    : bodyBackgroundColor\n                : documentBackgroundColor\n            : defaultBackgroundColor;\n    };\n\n    return html2canvas;\n\n})));\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"script","externalDependencies":[]}