(() => { var __create = Object.create; var __defProp = Object.defineProperty; var __defProps = Object.defineProperties; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropDescs = Object.getOwnPropertyDescriptors; var __getOwnPropNames = Object.getOwnPropertyNames; var __getOwnPropSymbols = Object.getOwnPropertySymbols; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __propIsEnum = Object.prototype.propertyIsEnumerable; var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __spreadValues = (a3, b3) => { for (var prop in b3 || (b3 = {})) if (__hasOwnProp.call(b3, prop)) __defNormalProp(a3, prop, b3[prop]); if (__getOwnPropSymbols) for (var prop of __getOwnPropSymbols(b3)) { if (__propIsEnum.call(b3, prop)) __defNormalProp(a3, prop, b3[prop]); } return a3; }; var __spreadProps = (a3, b3) => __defProps(a3, __getOwnPropDescs(b3)); var __objRest = (source, exclude) => { var target = {}; for (var prop in source) if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) target[prop] = source[prop]; if (source != null && __getOwnPropSymbols) for (var prop of __getOwnPropSymbols(source)) { if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop)) target[prop] = source[prop]; } return target; }; var __esm = (fn3, res) => function __init() { return fn3 && (res = (0, fn3[__getOwnPropNames(fn3)[0]])(fn3 = 0)), res; }; var __commonJS = (cb, mod3) => function __require() { return mod3 || (0, cb[__getOwnPropNames(cb)[0]])((mod3 = { exports: {} }).exports, mod3), mod3.exports; }; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod3, isNodeMode, target) => (target = mod3 != null ? __create(__getProtoOf(mod3)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod3 || !mod3.__esModule ? __defProp(target, "default", { value: mod3, enumerable: true }) : target, mod3 )); // ../../../node_modules/@rails/actioncable/src/adapters.js var adapters_default; var init_adapters = __esm({ "../../../node_modules/@rails/actioncable/src/adapters.js"() { adapters_default = { logger: self.console, WebSocket: self.WebSocket }; } }); // ../../../node_modules/@rails/actioncable/src/logger.js var logger_default; var init_logger = __esm({ "../../../node_modules/@rails/actioncable/src/logger.js"() { init_adapters(); logger_default = { log(...messages) { if (this.enabled) { messages.push(Date.now()); adapters_default.logger.log("[ActionCable]", ...messages); } } }; } }); // ../../../node_modules/@rails/actioncable/src/connection_monitor.js var now, secondsSince, ConnectionMonitor, connection_monitor_default; var init_connection_monitor = __esm({ "../../../node_modules/@rails/actioncable/src/connection_monitor.js"() { init_logger(); now = () => (/* @__PURE__ */ new Date()).getTime(); secondsSince = (time) => (now() - time) / 1e3; ConnectionMonitor = class { constructor(connection) { this.visibilityDidChange = this.visibilityDidChange.bind(this); this.connection = connection; this.reconnectAttempts = 0; } start() { if (!this.isRunning()) { this.startedAt = now(); delete this.stoppedAt; this.startPolling(); addEventListener("visibilitychange", this.visibilityDidChange); logger_default.log(`ConnectionMonitor started. stale threshold = ${this.constructor.staleThreshold} s`); } } stop() { if (this.isRunning()) { this.stoppedAt = now(); this.stopPolling(); removeEventListener("visibilitychange", this.visibilityDidChange); logger_default.log("ConnectionMonitor stopped"); } } isRunning() { return this.startedAt && !this.stoppedAt; } recordPing() { this.pingedAt = now(); } recordConnect() { this.reconnectAttempts = 0; this.recordPing(); delete this.disconnectedAt; logger_default.log("ConnectionMonitor recorded connect"); } recordDisconnect() { this.disconnectedAt = now(); logger_default.log("ConnectionMonitor recorded disconnect"); } // Private startPolling() { this.stopPolling(); this.poll(); } stopPolling() { clearTimeout(this.pollTimeout); } poll() { this.pollTimeout = setTimeout( () => { this.reconnectIfStale(); this.poll(); }, this.getPollInterval() ); } getPollInterval() { const { staleThreshold, reconnectionBackoffRate } = this.constructor; const backoff = Math.pow(1 + reconnectionBackoffRate, Math.min(this.reconnectAttempts, 10)); const jitterMax = this.reconnectAttempts === 0 ? 1 : reconnectionBackoffRate; const jitter = jitterMax * Math.random(); return staleThreshold * 1e3 * backoff * (1 + jitter); } reconnectIfStale() { if (this.connectionIsStale()) { logger_default.log(`ConnectionMonitor detected stale connection. reconnectAttempts = ${this.reconnectAttempts}, time stale = ${secondsSince(this.refreshedAt)} s, stale threshold = ${this.constructor.staleThreshold} s`); this.reconnectAttempts++; if (this.disconnectedRecently()) { logger_default.log(`ConnectionMonitor skipping reopening recent disconnect. time disconnected = ${secondsSince(this.disconnectedAt)} s`); } else { logger_default.log("ConnectionMonitor reopening"); this.connection.reopen(); } } } get refreshedAt() { return this.pingedAt ? this.pingedAt : this.startedAt; } connectionIsStale() { return secondsSince(this.refreshedAt) > this.constructor.staleThreshold; } disconnectedRecently() { return this.disconnectedAt && secondsSince(this.disconnectedAt) < this.constructor.staleThreshold; } visibilityDidChange() { if (document.visibilityState === "visible") { setTimeout( () => { if (this.connectionIsStale() || !this.connection.isOpen()) { logger_default.log(`ConnectionMonitor reopening stale connection on visibilitychange. visibilityState = ${document.visibilityState}`); this.connection.reopen(); } }, 200 ); } } }; ConnectionMonitor.staleThreshold = 6; ConnectionMonitor.reconnectionBackoffRate = 0.15; connection_monitor_default = ConnectionMonitor; } }); // ../../../node_modules/@rails/actioncable/src/internal.js var internal_default; var init_internal = __esm({ "../../../node_modules/@rails/actioncable/src/internal.js"() { internal_default = { "message_types": { "welcome": "welcome", "disconnect": "disconnect", "ping": "ping", "confirmation": "confirm_subscription", "rejection": "reject_subscription" }, "disconnect_reasons": { "unauthorized": "unauthorized", "invalid_request": "invalid_request", "server_restart": "server_restart" }, "default_mount_path": "/cable", "protocols": [ "actioncable-v1-json", "actioncable-unsupported" ] }; } }); // ../../../node_modules/@rails/actioncable/src/connection.js var message_types, protocols, supportedProtocols, indexOf, Connection, connection_default; var init_connection = __esm({ "../../../node_modules/@rails/actioncable/src/connection.js"() { init_adapters(); init_connection_monitor(); init_internal(); init_logger(); ({ message_types, protocols } = internal_default); supportedProtocols = protocols.slice(0, protocols.length - 1); indexOf = [].indexOf; Connection = class { constructor(consumer2) { this.open = this.open.bind(this); this.consumer = consumer2; this.subscriptions = this.consumer.subscriptions; this.monitor = new connection_monitor_default(this); this.disconnected = true; } send(data2) { if (this.isOpen()) { this.webSocket.send(JSON.stringify(data2)); return true; } else { return false; } } open() { if (this.isActive()) { logger_default.log(`Attempted to open WebSocket, but existing socket is ${this.getState()}`); return false; } else { logger_default.log(`Opening WebSocket, current state is ${this.getState()}, subprotocols: ${protocols}`); if (this.webSocket) { this.uninstallEventHandlers(); } this.webSocket = new adapters_default.WebSocket(this.consumer.url, protocols); this.installEventHandlers(); this.monitor.start(); return true; } } close({ allowReconnect } = { allowReconnect: true }) { if (!allowReconnect) { this.monitor.stop(); } if (this.isOpen()) { return this.webSocket.close(); } } reopen() { logger_default.log(`Reopening WebSocket, current state is ${this.getState()}`); if (this.isActive()) { try { return this.close(); } catch (error2) { logger_default.log("Failed to reopen WebSocket", error2); } finally { logger_default.log(`Reopening WebSocket in ${this.constructor.reopenDelay}ms`); setTimeout(this.open, this.constructor.reopenDelay); } } else { return this.open(); } } getProtocol() { if (this.webSocket) { return this.webSocket.protocol; } } isOpen() { return this.isState("open"); } isActive() { return this.isState("open", "connecting"); } // Private isProtocolSupported() { return indexOf.call(supportedProtocols, this.getProtocol()) >= 0; } isState(...states) { return indexOf.call(states, this.getState()) >= 0; } getState() { if (this.webSocket) { for (let state in adapters_default.WebSocket) { if (adapters_default.WebSocket[state] === this.webSocket.readyState) { return state.toLowerCase(); } } } return null; } installEventHandlers() { for (let eventName in this.events) { const handler3 = this.events[eventName].bind(this); this.webSocket[`on${eventName}`] = handler3; } } uninstallEventHandlers() { for (let eventName in this.events) { this.webSocket[`on${eventName}`] = function() { }; } } }; Connection.reopenDelay = 500; Connection.prototype.events = { message(event) { if (!this.isProtocolSupported()) { return; } const { identifier, message: message2, reason, reconnect, type } = JSON.parse(event.data); switch (type) { case message_types.welcome: this.monitor.recordConnect(); return this.subscriptions.reload(); case message_types.disconnect: logger_default.log(`Disconnecting. Reason: ${reason}`); return this.close({ allowReconnect: reconnect }); case message_types.ping: return this.monitor.recordPing(); case message_types.confirmation: this.subscriptions.confirmSubscription(identifier); return this.subscriptions.notify(identifier, "connected"); case message_types.rejection: return this.subscriptions.reject(identifier); default: return this.subscriptions.notify(identifier, "received", message2); } }, open() { logger_default.log(`WebSocket onopen event, using '${this.getProtocol()}' subprotocol`); this.disconnected = false; if (!this.isProtocolSupported()) { logger_default.log("Protocol is unsupported. Stopping monitor and disconnecting."); return this.close({ allowReconnect: false }); } }, close(event) { logger_default.log("WebSocket onclose event"); if (this.disconnected) { return; } this.disconnected = true; this.monitor.recordDisconnect(); return this.subscriptions.notifyAll("disconnected", { willAttemptReconnect: this.monitor.isRunning() }); }, error() { logger_default.log("WebSocket onerror event"); } }; connection_default = Connection; } }); // ../../../node_modules/@rails/actioncable/src/subscription.js var extend, Subscription; var init_subscription = __esm({ "../../../node_modules/@rails/actioncable/src/subscription.js"() { extend = function(object, properties) { if (properties != null) { for (let key in properties) { const value = properties[key]; object[key] = value; } } return object; }; Subscription = class { constructor(consumer2, params = {}, mixin) { this.consumer = consumer2; this.identifier = JSON.stringify(params); extend(this, mixin); } // Perform a channel action with the optional data passed as an attribute perform(action, data2 = {}) { data2.action = action; return this.send(data2); } send(data2) { return this.consumer.send({ command: "message", identifier: this.identifier, data: JSON.stringify(data2) }); } unsubscribe() { return this.consumer.subscriptions.remove(this); } }; } }); // ../../../node_modules/@rails/actioncable/src/subscription_guarantor.js var SubscriptionGuarantor, subscription_guarantor_default; var init_subscription_guarantor = __esm({ "../../../node_modules/@rails/actioncable/src/subscription_guarantor.js"() { init_logger(); SubscriptionGuarantor = class { constructor(subscriptions) { this.subscriptions = subscriptions; this.pendingSubscriptions = []; } guarantee(subscription) { if (this.pendingSubscriptions.indexOf(subscription) == -1) { logger_default.log(`SubscriptionGuarantor guaranteeing ${subscription.identifier}`); this.pendingSubscriptions.push(subscription); } else { logger_default.log(`SubscriptionGuarantor already guaranteeing ${subscription.identifier}`); } this.startGuaranteeing(); } forget(subscription) { logger_default.log(`SubscriptionGuarantor forgetting ${subscription.identifier}`); this.pendingSubscriptions = this.pendingSubscriptions.filter((s3) => s3 !== subscription); } startGuaranteeing() { this.stopGuaranteeing(); this.retrySubscribing(); } stopGuaranteeing() { clearTimeout(this.retryTimeout); } retrySubscribing() { this.retryTimeout = setTimeout( () => { if (this.subscriptions && typeof this.subscriptions.subscribe === "function") { this.pendingSubscriptions.map((subscription) => { logger_default.log(`SubscriptionGuarantor resubscribing ${subscription.identifier}`); this.subscriptions.subscribe(subscription); }); } }, 500 ); } }; subscription_guarantor_default = SubscriptionGuarantor; } }); // ../../../node_modules/@rails/actioncable/src/subscriptions.js var Subscriptions; var init_subscriptions = __esm({ "../../../node_modules/@rails/actioncable/src/subscriptions.js"() { init_subscription(); init_subscription_guarantor(); init_logger(); Subscriptions = class { constructor(consumer2) { this.consumer = consumer2; this.guarantor = new subscription_guarantor_default(this); this.subscriptions = []; } create(channelName, mixin) { const channel = channelName; const params = typeof channel === "object" ? channel : { channel }; const subscription = new Subscription(this.consumer, params, mixin); return this.add(subscription); } // Private add(subscription) { this.subscriptions.push(subscription); this.consumer.ensureActiveConnection(); this.notify(subscription, "initialized"); this.subscribe(subscription); return subscription; } remove(subscription) { this.forget(subscription); if (!this.findAll(subscription.identifier).length) { this.sendCommand(subscription, "unsubscribe"); } return subscription; } reject(identifier) { return this.findAll(identifier).map((subscription) => { this.forget(subscription); this.notify(subscription, "rejected"); return subscription; }); } forget(subscription) { this.guarantor.forget(subscription); this.subscriptions = this.subscriptions.filter((s3) => s3 !== subscription); return subscription; } findAll(identifier) { return this.subscriptions.filter((s3) => s3.identifier === identifier); } reload() { return this.subscriptions.map((subscription) => this.subscribe(subscription)); } notifyAll(callbackName, ...args) { return this.subscriptions.map((subscription) => this.notify(subscription, callbackName, ...args)); } notify(subscription, callbackName, ...args) { let subscriptions; if (typeof subscription === "string") { subscriptions = this.findAll(subscription); } else { subscriptions = [subscription]; } return subscriptions.map((subscription2) => typeof subscription2[callbackName] === "function" ? subscription2[callbackName](...args) : void 0); } subscribe(subscription) { if (this.sendCommand(subscription, "subscribe")) { this.guarantor.guarantee(subscription); } } confirmSubscription(identifier) { logger_default.log(`Subscription confirmed ${identifier}`); this.findAll(identifier).map((subscription) => this.guarantor.forget(subscription)); } sendCommand(subscription, command) { const { identifier } = subscription; return this.consumer.send({ command, identifier }); } }; } }); // ../../../node_modules/@rails/actioncable/src/consumer.js function createWebSocketURL(url) { if (typeof url === "function") { url = url(); } if (url && !/^wss?:/i.test(url)) { const a3 = document.createElement("a"); a3.href = url; a3.href = a3.href; a3.protocol = a3.protocol.replace("http", "ws"); return a3.href; } else { return url; } } var Consumer; var init_consumer = __esm({ "../../../node_modules/@rails/actioncable/src/consumer.js"() { init_connection(); init_subscriptions(); Consumer = class { constructor(url) { this._url = url; this.subscriptions = new Subscriptions(this); this.connection = new connection_default(this); } get url() { return createWebSocketURL(this._url); } send(data2) { return this.connection.send(data2); } connect() { return this.connection.open(); } disconnect() { return this.connection.close({ allowReconnect: false }); } ensureActiveConnection() { if (!this.connection.isActive()) { return this.connection.open(); } } }; } }); // ../../../node_modules/@rails/actioncable/src/index.js var src_exports = {}; __export(src_exports, { Connection: () => connection_default, ConnectionMonitor: () => connection_monitor_default, Consumer: () => Consumer, INTERNAL: () => internal_default, Subscription: () => Subscription, SubscriptionGuarantor: () => subscription_guarantor_default, Subscriptions: () => Subscriptions, adapters: () => adapters_default, createConsumer: () => createConsumer, createWebSocketURL: () => createWebSocketURL, getConfig: () => getConfig, logger: () => logger_default }); function createConsumer(url = getConfig("url") || internal_default.default_mount_path) { return new Consumer(url); } function getConfig(name) { const element = document.head.querySelector(`meta[name='action-cable-${name}']`); if (element) { return element.getAttribute("content"); } } var init_src = __esm({ "../../../node_modules/@rails/actioncable/src/index.js"() { init_connection(); init_connection_monitor(); init_consumer(); init_internal(); init_subscription(); init_subscriptions(); init_subscription_guarantor(); init_adapters(); init_logger(); } }); // ../../../node_modules/lodash/lodash.js var require_lodash = __commonJS({ "../../../node_modules/lodash/lodash.js"(exports, module) { (function() { var undefined2; var VERSION = "4.17.21"; var LARGE_ARRAY_SIZE = 200; var CORE_ERROR_TEXT = "Unsupported core-js use. Try https://npms.io/search?q=ponyfill.", FUNC_ERROR_TEXT = "Expected a function", INVALID_TEMPL_VAR_ERROR_TEXT = "Invalid `variable` option passed into `_.template`"; var HASH_UNDEFINED = "__lodash_hash_undefined__"; var MAX_MEMOIZE_SIZE = 500; var PLACEHOLDER = "__lodash_placeholder__"; var CLONE_DEEP_FLAG = 1, CLONE_FLAT_FLAG = 2, CLONE_SYMBOLS_FLAG = 4; var COMPARE_PARTIAL_FLAG = 1, COMPARE_UNORDERED_FLAG = 2; var WRAP_BIND_FLAG = 1, WRAP_BIND_KEY_FLAG = 2, WRAP_CURRY_BOUND_FLAG = 4, WRAP_CURRY_FLAG = 8, WRAP_CURRY_RIGHT_FLAG = 16, WRAP_PARTIAL_FLAG = 32, WRAP_PARTIAL_RIGHT_FLAG = 64, WRAP_ARY_FLAG = 128, WRAP_REARG_FLAG = 256, WRAP_FLIP_FLAG = 512; var DEFAULT_TRUNC_LENGTH = 30, DEFAULT_TRUNC_OMISSION = "..."; var HOT_COUNT = 800, HOT_SPAN = 16; var LAZY_FILTER_FLAG = 1, LAZY_MAP_FLAG = 2, LAZY_WHILE_FLAG = 3; var INFINITY = 1 / 0, MAX_SAFE_INTEGER = 9007199254740991, MAX_INTEGER = 17976931348623157e292, NAN = 0 / 0; var MAX_ARRAY_LENGTH = 4294967295, MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1, HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1; var wrapFlags = [ ["ary", WRAP_ARY_FLAG], ["bind", WRAP_BIND_FLAG], ["bindKey", WRAP_BIND_KEY_FLAG], ["curry", WRAP_CURRY_FLAG], ["curryRight", WRAP_CURRY_RIGHT_FLAG], ["flip", WRAP_FLIP_FLAG], ["partial", WRAP_PARTIAL_FLAG], ["partialRight", WRAP_PARTIAL_RIGHT_FLAG], ["rearg", WRAP_REARG_FLAG] ]; var argsTag = "[object Arguments]", arrayTag = "[object Array]", asyncTag = "[object AsyncFunction]", boolTag = "[object Boolean]", dateTag = "[object Date]", domExcTag = "[object DOMException]", errorTag = "[object Error]", funcTag = "[object Function]", genTag = "[object GeneratorFunction]", mapTag = "[object Map]", numberTag = "[object Number]", nullTag = "[object Null]", objectTag = "[object Object]", promiseTag = "[object Promise]", proxyTag = "[object Proxy]", regexpTag = "[object RegExp]", setTag = "[object Set]", stringTag = "[object String]", symbolTag = "[object Symbol]", undefinedTag = "[object Undefined]", weakMapTag = "[object WeakMap]", weakSetTag = "[object WeakSet]"; var arrayBufferTag = "[object ArrayBuffer]", dataViewTag = "[object DataView]", float32Tag = "[object Float32Array]", float64Tag = "[object Float64Array]", int8Tag = "[object Int8Array]", int16Tag = "[object Int16Array]", int32Tag = "[object Int32Array]", uint8Tag = "[object Uint8Array]", uint8ClampedTag = "[object Uint8ClampedArray]", uint16Tag = "[object Uint16Array]", uint32Tag = "[object Uint32Array]"; var reEmptyStringLeading = /\b__p \+= '';/g, reEmptyStringMiddle = /\b(__p \+=) '' \+/g, reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g; var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g, reUnescapedHtml = /[&<>"']/g, reHasEscapedHtml = RegExp(reEscapedHtml.source), reHasUnescapedHtml = RegExp(reUnescapedHtml.source); var reEscape = /<%-([\s\S]+?)%>/g, reEvaluate = /<%([\s\S]+?)%>/g, reInterpolate = /<%=([\s\S]+?)%>/g; var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, reIsPlainProp = /^\w*$/, rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; var reRegExpChar = /[\\^$.*+?()[\]{}|]/g, reHasRegExpChar = RegExp(reRegExpChar.source); var reTrimStart = /^\s+/; var reWhitespace = /\s/; var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/, reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/, reSplitDetails = /,? & /; var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g; var reForbiddenIdentifierChars = /[()=,{}\[\]\/\s]/; var reEscapeChar = /\\(\\)?/g; var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g; var reFlags = /\w*$/; var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; var reIsBinary = /^0b[01]+$/i; var reIsHostCtor = /^\[object .+?Constructor\]$/; var reIsOctal = /^0o[0-7]+$/i; var reIsUint = /^(?:0|[1-9]\d*)$/; var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g; var reNoMatch = /($^)/; var reUnescapedString = /['\n\r\u2028\u2029\\]/g; var rsAstralRange = "\\ud800-\\udfff", rsComboMarksRange = "\\u0300-\\u036f", reComboHalfMarksRange = "\\ufe20-\\ufe2f", rsComboSymbolsRange = "\\u20d0-\\u20ff", rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, rsDingbatRange = "\\u2700-\\u27bf", rsLowerRange = "a-z\\xdf-\\xf6\\xf8-\\xff", rsMathOpRange = "\\xac\\xb1\\xd7\\xf7", rsNonCharRange = "\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf", rsPunctuationRange = "\\u2000-\\u206f", rsSpaceRange = " \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000", rsUpperRange = "A-Z\\xc0-\\xd6\\xd8-\\xde", rsVarRange = "\\ufe0e\\ufe0f", rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange; var rsApos = "['\u2019]", rsAstral = "[" + rsAstralRange + "]", rsBreak = "[" + rsBreakRange + "]", rsCombo = "[" + rsComboRange + "]", rsDigits = "\\d+", rsDingbat = "[" + rsDingbatRange + "]", rsLower = "[" + rsLowerRange + "]", rsMisc = "[^" + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + "]", rsFitz = "\\ud83c[\\udffb-\\udfff]", rsModifier = "(?:" + rsCombo + "|" + rsFitz + ")", rsNonAstral = "[^" + rsAstralRange + "]", rsRegional = "(?:\\ud83c[\\udde6-\\uddff]){2}", rsSurrPair = "[\\ud800-\\udbff][\\udc00-\\udfff]", rsUpper = "[" + rsUpperRange + "]", rsZWJ = "\\u200d"; var rsMiscLower = "(?:" + rsLower + "|" + rsMisc + ")", rsMiscUpper = "(?:" + rsUpper + "|" + rsMisc + ")", rsOptContrLower = "(?:" + rsApos + "(?:d|ll|m|re|s|t|ve))?", rsOptContrUpper = "(?:" + rsApos + "(?:D|LL|M|RE|S|T|VE))?", reOptMod = rsModifier + "?", rsOptVar = "[" + rsVarRange + "]?", rsOptJoin = "(?:" + rsZWJ + "(?:" + [rsNonAstral, rsRegional, rsSurrPair].join("|") + ")" + rsOptVar + reOptMod + ")*", rsOrdLower = "\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])", rsOrdUpper = "\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])", rsSeq = rsOptVar + reOptMod + rsOptJoin, rsEmoji = "(?:" + [rsDingbat, rsRegional, rsSurrPair].join("|") + ")" + rsSeq, rsSymbol = "(?:" + [rsNonAstral + rsCombo + "?", rsCombo, rsRegional, rsSurrPair, rsAstral].join("|") + ")"; var reApos = RegExp(rsApos, "g"); var reComboMark = RegExp(rsCombo, "g"); var reUnicode = RegExp(rsFitz + "(?=" + rsFitz + ")|" + rsSymbol + rsSeq, "g"); var reUnicodeWord = RegExp([ rsUpper + "?" + rsLower + "+" + rsOptContrLower + "(?=" + [rsBreak, rsUpper, "$"].join("|") + ")", rsMiscUpper + "+" + rsOptContrUpper + "(?=" + [rsBreak, rsUpper + rsMiscLower, "$"].join("|") + ")", rsUpper + "?" + rsMiscLower + "+" + rsOptContrLower, rsUpper + "+" + rsOptContrUpper, rsOrdUpper, rsOrdLower, rsDigits, rsEmoji ].join("|"), "g"); var reHasUnicode = RegExp("[" + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + "]"); var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/; var contextProps = [ "Array", "Buffer", "DataView", "Date", "Error", "Float32Array", "Float64Array", "Function", "Int8Array", "Int16Array", "Int32Array", "Map", "Math", "Object", "Promise", "RegExp", "Set", "String", "Symbol", "TypeError", "Uint8Array", "Uint8ClampedArray", "Uint16Array", "Uint32Array", "WeakMap", "_", "clearTimeout", "isFinite", "parseInt", "setTimeout" ]; var templateCounter = -1; var typedArrayTags = {}; typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true; typedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false; var cloneableTags = {}; cloneableTags[argsTag] = cloneableTags[arrayTag] = cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = cloneableTags[boolTag] = cloneableTags[dateTag] = cloneableTags[float32Tag] = cloneableTags[float64Tag] = cloneableTags[int8Tag] = cloneableTags[int16Tag] = cloneableTags[int32Tag] = cloneableTags[mapTag] = cloneableTags[numberTag] = cloneableTags[objectTag] = cloneableTags[regexpTag] = cloneableTags[setTag] = cloneableTags[stringTag] = cloneableTags[symbolTag] = cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true; cloneableTags[errorTag] = cloneableTags[funcTag] = cloneableTags[weakMapTag] = false; var deburredLetters = { // Latin-1 Supplement block. "\xC0": "A", "\xC1": "A", "\xC2": "A", "\xC3": "A", "\xC4": "A", "\xC5": "A", "\xE0": "a", "\xE1": "a", "\xE2": "a", "\xE3": "a", "\xE4": "a", "\xE5": "a", "\xC7": "C", "\xE7": "c", "\xD0": "D", "\xF0": "d", "\xC8": "E", "\xC9": "E", "\xCA": "E", "\xCB": "E", "\xE8": "e", "\xE9": "e", "\xEA": "e", "\xEB": "e", "\xCC": "I", "\xCD": "I", "\xCE": "I", "\xCF": "I", "\xEC": "i", "\xED": "i", "\xEE": "i", "\xEF": "i", "\xD1": "N", "\xF1": "n", "\xD2": "O", "\xD3": "O", "\xD4": "O", "\xD5": "O", "\xD6": "O", "\xD8": "O", "\xF2": "o", "\xF3": "o", "\xF4": "o", "\xF5": "o", "\xF6": "o", "\xF8": "o", "\xD9": "U", "\xDA": "U", "\xDB": "U", "\xDC": "U", "\xF9": "u", "\xFA": "u", "\xFB": "u", "\xFC": "u", "\xDD": "Y", "\xFD": "y", "\xFF": "y", "\xC6": "Ae", "\xE6": "ae", "\xDE": "Th", "\xFE": "th", "\xDF": "ss", // Latin Extended-A block. "\u0100": "A", "\u0102": "A", "\u0104": "A", "\u0101": "a", "\u0103": "a", "\u0105": "a", "\u0106": "C", "\u0108": "C", "\u010A": "C", "\u010C": "C", "\u0107": "c", "\u0109": "c", "\u010B": "c", "\u010D": "c", "\u010E": "D", "\u0110": "D", "\u010F": "d", "\u0111": "d", "\u0112": "E", "\u0114": "E", "\u0116": "E", "\u0118": "E", "\u011A": "E", "\u0113": "e", "\u0115": "e", "\u0117": "e", "\u0119": "e", "\u011B": "e", "\u011C": "G", "\u011E": "G", "\u0120": "G", "\u0122": "G", "\u011D": "g", "\u011F": "g", "\u0121": "g", "\u0123": "g", "\u0124": "H", "\u0126": "H", "\u0125": "h", "\u0127": "h", "\u0128": "I", "\u012A": "I", "\u012C": "I", "\u012E": "I", "\u0130": "I", "\u0129": "i", "\u012B": "i", "\u012D": "i", "\u012F": "i", "\u0131": "i", "\u0134": "J", "\u0135": "j", "\u0136": "K", "\u0137": "k", "\u0138": "k", "\u0139": "L", "\u013B": "L", "\u013D": "L", "\u013F": "L", "\u0141": "L", "\u013A": "l", "\u013C": "l", "\u013E": "l", "\u0140": "l", "\u0142": "l", "\u0143": "N", "\u0145": "N", "\u0147": "N", "\u014A": "N", "\u0144": "n", "\u0146": "n", "\u0148": "n", "\u014B": "n", "\u014C": "O", "\u014E": "O", "\u0150": "O", "\u014D": "o", "\u014F": "o", "\u0151": "o", "\u0154": "R", "\u0156": "R", "\u0158": "R", "\u0155": "r", "\u0157": "r", "\u0159": "r", "\u015A": "S", "\u015C": "S", "\u015E": "S", "\u0160": "S", "\u015B": "s", "\u015D": "s", "\u015F": "s", "\u0161": "s", "\u0162": "T", "\u0164": "T", "\u0166": "T", "\u0163": "t", "\u0165": "t", "\u0167": "t", "\u0168": "U", "\u016A": "U", "\u016C": "U", "\u016E": "U", "\u0170": "U", "\u0172": "U", "\u0169": "u", "\u016B": "u", "\u016D": "u", "\u016F": "u", "\u0171": "u", "\u0173": "u", "\u0174": "W", "\u0175": "w", "\u0176": "Y", "\u0177": "y", "\u0178": "Y", "\u0179": "Z", "\u017B": "Z", "\u017D": "Z", "\u017A": "z", "\u017C": "z", "\u017E": "z", "\u0132": "IJ", "\u0133": "ij", "\u0152": "Oe", "\u0153": "oe", "\u0149": "'n", "\u017F": "s" }; var htmlEscapes = { "&": "&", "<": "<", ">": ">", '"': """, "'": "'" }; var htmlUnescapes = { "&": "&", "<": "<", ">": ">", """: '"', "'": "'" }; var stringEscapes = { "\\": "\\", "'": "'", "\n": "n", "\r": "r", "\u2028": "u2028", "\u2029": "u2029" }; var freeParseFloat = parseFloat, freeParseInt = parseInt; var freeGlobal = typeof global == "object" && global && global.Object === Object && global; var freeSelf = typeof self == "object" && self && self.Object === Object && self; var root = freeGlobal || freeSelf || Function("return this")(); var freeExports = typeof exports == "object" && exports && !exports.nodeType && exports; var freeModule = freeExports && typeof module == "object" && module && !module.nodeType && module; var moduleExports = freeModule && freeModule.exports === freeExports; var freeProcess = moduleExports && freeGlobal.process; var nodeUtil = function() { try { var types = freeModule && freeModule.require && freeModule.require("util").types; if (types) { return types; } return freeProcess && freeProcess.binding && freeProcess.binding("util"); } catch (e3) { } }(); var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer, nodeIsDate = nodeUtil && nodeUtil.isDate, nodeIsMap = nodeUtil && nodeUtil.isMap, nodeIsRegExp = nodeUtil && nodeUtil.isRegExp, nodeIsSet = nodeUtil && nodeUtil.isSet, nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; function apply(func, thisArg, args) { switch (args.length) { case 0: return func.call(thisArg); case 1: return func.call(thisArg, args[0]); case 2: return func.call(thisArg, args[0], args[1]); case 3: return func.call(thisArg, args[0], args[1], args[2]); } return func.apply(thisArg, args); } function arrayAggregator(array, setter, iteratee, accumulator) { var index = -1, length = array == null ? 0 : array.length; while (++index < length) { var value = array[index]; setter(accumulator, value, iteratee(value), array); } return accumulator; } function arrayEach(array, iteratee) { var index = -1, length = array == null ? 0 : array.length; while (++index < length) { if (iteratee(array[index], index, array) === false) { break; } } return array; } function arrayEachRight(array, iteratee) { var length = array == null ? 0 : array.length; while (length--) { if (iteratee(array[length], length, array) === false) { break; } } return array; } function arrayEvery(array, predicate) { var index = -1, length = array == null ? 0 : array.length; while (++index < length) { if (!predicate(array[index], index, array)) { return false; } } return true; } function arrayFilter(array, predicate) { var index = -1, length = array == null ? 0 : array.length, resIndex = 0, result = []; while (++index < length) { var value = array[index]; if (predicate(value, index, array)) { result[resIndex++] = value; } } return result; } function arrayIncludes(array, value) { var length = array == null ? 0 : array.length; return !!length && baseIndexOf(array, value, 0) > -1; } function arrayIncludesWith(array, value, comparator) { var index = -1, length = array == null ? 0 : array.length; while (++index < length) { if (comparator(value, array[index])) { return true; } } return false; } function arrayMap(array, iteratee) { var index = -1, length = array == null ? 0 : array.length, result = Array(length); while (++index < length) { result[index] = iteratee(array[index], index, array); } return result; } function arrayPush(array, values) { var index = -1, length = values.length, offset2 = array.length; while (++index < length) { array[offset2 + index] = values[index]; } return array; } function arrayReduce(array, iteratee, accumulator, initAccum) { var index = -1, length = array == null ? 0 : array.length; if (initAccum && length) { accumulator = array[++index]; } while (++index < length) { accumulator = iteratee(accumulator, array[index], index, array); } return accumulator; } function arrayReduceRight(array, iteratee, accumulator, initAccum) { var length = array == null ? 0 : array.length; if (initAccum && length) { accumulator = array[--length]; } while (length--) { accumulator = iteratee(accumulator, array[length], length, array); } return accumulator; } function arraySome(array, predicate) { var index = -1, length = array == null ? 0 : array.length; while (++index < length) { if (predicate(array[index], index, array)) { return true; } } return false; } var asciiSize = baseProperty("length"); function asciiToArray(string) { return string.split(""); } function asciiWords(string) { return string.match(reAsciiWord) || []; } function baseFindKey(collection, predicate, eachFunc) { var result; eachFunc(collection, function(value, key, collection2) { if (predicate(value, key, collection2)) { result = key; return false; } }); return result; } function baseFindIndex(array, predicate, fromIndex, fromRight) { var length = array.length, index = fromIndex + (fromRight ? 1 : -1); while (fromRight ? index-- : ++index < length) { if (predicate(array[index], index, array)) { return index; } } return -1; } function baseIndexOf(array, value, fromIndex) { return value === value ? strictIndexOf(array, value, fromIndex) : baseFindIndex(array, baseIsNaN, fromIndex); } function baseIndexOfWith(array, value, fromIndex, comparator) { var index = fromIndex - 1, length = array.length; while (++index < length) { if (comparator(array[index], value)) { return index; } } return -1; } function baseIsNaN(value) { return value !== value; } function baseMean(array, iteratee) { var length = array == null ? 0 : array.length; return length ? baseSum(array, iteratee) / length : NAN; } function baseProperty(key) { return function(object) { return object == null ? undefined2 : object[key]; }; } function basePropertyOf(object) { return function(key) { return object == null ? undefined2 : object[key]; }; } function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) { eachFunc(collection, function(value, index, collection2) { accumulator = initAccum ? (initAccum = false, value) : iteratee(accumulator, value, index, collection2); }); return accumulator; } function baseSortBy(array, comparer) { var length = array.length; array.sort(comparer); while (length--) { array[length] = array[length].value; } return array; } function baseSum(array, iteratee) { var result, index = -1, length = array.length; while (++index < length) { var current = iteratee(array[index]); if (current !== undefined2) { result = result === undefined2 ? current : result + current; } } return result; } function baseTimes(n3, iteratee) { var index = -1, result = Array(n3); while (++index < n3) { result[index] = iteratee(index); } return result; } function baseToPairs(object, props) { return arrayMap(props, function(key) { return [key, object[key]]; }); } function baseTrim(string) { return string ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, "") : string; } function baseUnary(func) { return function(value) { return func(value); }; } function baseValues(object, props) { return arrayMap(props, function(key) { return object[key]; }); } function cacheHas(cache2, key) { return cache2.has(key); } function charsStartIndex(strSymbols, chrSymbols) { var index = -1, length = strSymbols.length; while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) { } return index; } function charsEndIndex(strSymbols, chrSymbols) { var index = strSymbols.length; while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) { } return index; } function countHolders(array, placeholder) { var length = array.length, result = 0; while (length--) { if (array[length] === placeholder) { ++result; } } return result; } var deburrLetter = basePropertyOf(deburredLetters); var escapeHtmlChar = basePropertyOf(htmlEscapes); function escapeStringChar(chr) { return "\\" + stringEscapes[chr]; } function getValue(object, key) { return object == null ? undefined2 : object[key]; } function hasUnicode(string) { return reHasUnicode.test(string); } function hasUnicodeWord(string) { return reHasUnicodeWord.test(string); } function iteratorToArray(iterator) { var data2, result = []; while (!(data2 = iterator.next()).done) { result.push(data2.value); } return result; } function mapToArray(map) { var index = -1, result = Array(map.size); map.forEach(function(value, key) { result[++index] = [key, value]; }); return result; } function overArg(func, transform) { return function(arg) { return func(transform(arg)); }; } function replaceHolders(array, placeholder) { var index = -1, length = array.length, resIndex = 0, result = []; while (++index < length) { var value = array[index]; if (value === placeholder || value === PLACEHOLDER) { array[index] = PLACEHOLDER; result[resIndex++] = index; } } return result; } function setToArray(set3) { var index = -1, result = Array(set3.size); set3.forEach(function(value) { result[++index] = value; }); return result; } function setToPairs(set3) { var index = -1, result = Array(set3.size); set3.forEach(function(value) { result[++index] = [value, value]; }); return result; } function strictIndexOf(array, value, fromIndex) { var index = fromIndex - 1, length = array.length; while (++index < length) { if (array[index] === value) { return index; } } return -1; } function strictLastIndexOf(array, value, fromIndex) { var index = fromIndex + 1; while (index--) { if (array[index] === value) { return index; } } return index; } function stringSize(string) { return hasUnicode(string) ? unicodeSize(string) : asciiSize(string); } function stringToArray(string) { return hasUnicode(string) ? unicodeToArray(string) : asciiToArray(string); } function trimmedEndIndex(string) { var index = string.length; while (index-- && reWhitespace.test(string.charAt(index))) { } return index; } var unescapeHtmlChar = basePropertyOf(htmlUnescapes); function unicodeSize(string) { var result = reUnicode.lastIndex = 0; while (reUnicode.test(string)) { ++result; } return result; } function unicodeToArray(string) { return string.match(reUnicode) || []; } function unicodeWords(string) { return string.match(reUnicodeWord) || []; } var runInContext = function runInContext2(context) { context = context == null ? root : _3.defaults(root.Object(), context, _3.pick(root, contextProps)); var Array2 = context.Array, Date2 = context.Date, Error2 = context.Error, Function2 = context.Function, Math2 = context.Math, Object2 = context.Object, RegExp2 = context.RegExp, String2 = context.String, TypeError2 = context.TypeError; var arrayProto = Array2.prototype, funcProto = Function2.prototype, objectProto = Object2.prototype; var coreJsData = context["__core-js_shared__"]; var funcToString = funcProto.toString; var hasOwnProperty3 = objectProto.hasOwnProperty; var idCounter2 = 0; var maskSrcKey = function() { var uid2 = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ""); return uid2 ? "Symbol(src)_1." + uid2 : ""; }(); var nativeObjectToString = objectProto.toString; var objectCtorString = funcToString.call(Object2); var oldDash = root._; var reIsNative = RegExp2( "^" + funcToString.call(hasOwnProperty3).replace(reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$" ); var Buffer2 = moduleExports ? context.Buffer : undefined2, Symbol2 = context.Symbol, Uint8Array2 = context.Uint8Array, allocUnsafe = Buffer2 ? Buffer2.allocUnsafe : undefined2, getPrototype = overArg(Object2.getPrototypeOf, Object2), objectCreate = Object2.create, propertyIsEnumerable = objectProto.propertyIsEnumerable, splice = arrayProto.splice, spreadableSymbol = Symbol2 ? Symbol2.isConcatSpreadable : undefined2, symIterator = Symbol2 ? Symbol2.iterator : undefined2, symToStringTag = Symbol2 ? Symbol2.toStringTag : undefined2; var defineProperty = function() { try { var func = getNative(Object2, "defineProperty"); func({}, "", {}); return func; } catch (e3) { } }(); var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout, ctxNow = Date2 && Date2.now !== root.Date.now && Date2.now, ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout; var nativeCeil = Math2.ceil, nativeFloor = Math2.floor, nativeGetSymbols = Object2.getOwnPropertySymbols, nativeIsBuffer = Buffer2 ? Buffer2.isBuffer : undefined2, nativeIsFinite = context.isFinite, nativeJoin = arrayProto.join, nativeKeys = overArg(Object2.keys, Object2), nativeMax = Math2.max, nativeMin = Math2.min, nativeNow = Date2.now, nativeParseInt = context.parseInt, nativeRandom = Math2.random, nativeReverse = arrayProto.reverse; var DataView = getNative(context, "DataView"), Map2 = getNative(context, "Map"), Promise2 = getNative(context, "Promise"), Set2 = getNative(context, "Set"), WeakMap2 = getNative(context, "WeakMap"), nativeCreate = getNative(Object2, "create"); var metaMap = WeakMap2 && new WeakMap2(); var realNames = {}; var dataViewCtorString = toSource(DataView), mapCtorString = toSource(Map2), promiseCtorString = toSource(Promise2), setCtorString = toSource(Set2), weakMapCtorString = toSource(WeakMap2); var symbolProto = Symbol2 ? Symbol2.prototype : undefined2, symbolValueOf = symbolProto ? symbolProto.valueOf : undefined2, symbolToString = symbolProto ? symbolProto.toString : undefined2; function lodash(value) { if (isObjectLike(value) && !isArray2(value) && !(value instanceof LazyWrapper)) { if (value instanceof LodashWrapper) { return value; } if (hasOwnProperty3.call(value, "__wrapped__")) { return wrapperClone(value); } } return new LodashWrapper(value); } var baseCreate = function() { function object() { } return function(proto) { if (!isObject3(proto)) { return {}; } if (objectCreate) { return objectCreate(proto); } object.prototype = proto; var result2 = new object(); object.prototype = undefined2; return result2; }; }(); function baseLodash() { } function LodashWrapper(value, chainAll) { this.__wrapped__ = value; this.__actions__ = []; this.__chain__ = !!chainAll; this.__index__ = 0; this.__values__ = undefined2; } lodash.templateSettings = { /** * Used to detect `data` property values to be HTML-escaped. * * @memberOf _.templateSettings * @type {RegExp} */ "escape": reEscape, /** * Used to detect code to be evaluated. * * @memberOf _.templateSettings * @type {RegExp} */ "evaluate": reEvaluate, /** * Used to detect `data` property values to inject. * * @memberOf _.templateSettings * @type {RegExp} */ "interpolate": reInterpolate, /** * Used to reference the data object in the template text. * * @memberOf _.templateSettings * @type {string} */ "variable": "", /** * Used to import variables into the compiled template. * * @memberOf _.templateSettings * @type {Object} */ "imports": { /** * A reference to the `lodash` function. * * @memberOf _.templateSettings.imports * @type {Function} */ "_": lodash } }; lodash.prototype = baseLodash.prototype; lodash.prototype.constructor = lodash; LodashWrapper.prototype = baseCreate(baseLodash.prototype); LodashWrapper.prototype.constructor = LodashWrapper; function LazyWrapper(value) { this.__wrapped__ = value; this.__actions__ = []; this.__dir__ = 1; this.__filtered__ = false; this.__iteratees__ = []; this.__takeCount__ = MAX_ARRAY_LENGTH; this.__views__ = []; } function lazyClone() { var result2 = new LazyWrapper(this.__wrapped__); result2.__actions__ = copyArray(this.__actions__); result2.__dir__ = this.__dir__; result2.__filtered__ = this.__filtered__; result2.__iteratees__ = copyArray(this.__iteratees__); result2.__takeCount__ = this.__takeCount__; result2.__views__ = copyArray(this.__views__); return result2; } function lazyReverse() { if (this.__filtered__) { var result2 = new LazyWrapper(this); result2.__dir__ = -1; result2.__filtered__ = true; } else { result2 = this.clone(); result2.__dir__ *= -1; } return result2; } function lazyValue() { var array = this.__wrapped__.value(), dir = this.__dir__, isArr = isArray2(array), isRight = dir < 0, arrLength = isArr ? array.length : 0, view = getView(0, arrLength, this.__views__), start5 = view.start, end2 = view.end, length = end2 - start5, index = isRight ? end2 : start5 - 1, iteratees = this.__iteratees__, iterLength = iteratees.length, resIndex = 0, takeCount = nativeMin(length, this.__takeCount__); if (!isArr || !isRight && arrLength == length && takeCount == length) { return baseWrapperValue(array, this.__actions__); } var result2 = []; outer: while (length-- && resIndex < takeCount) { index += dir; var iterIndex = -1, value = array[index]; while (++iterIndex < iterLength) { var data2 = iteratees[iterIndex], iteratee2 = data2.iteratee, type = data2.type, computed = iteratee2(value); if (type == LAZY_MAP_FLAG) { value = computed; } else if (!computed) { if (type == LAZY_FILTER_FLAG) { continue outer; } else { break outer; } } } result2[resIndex++] = value; } return result2; } LazyWrapper.prototype = baseCreate(baseLodash.prototype); LazyWrapper.prototype.constructor = LazyWrapper; function Hash(entries) { var index = -1, length = entries == null ? 0 : entries.length; this.clear(); while (++index < length) { var entry = entries[index]; this.set(entry[0], entry[1]); } } function hashClear() { this.__data__ = nativeCreate ? nativeCreate(null) : {}; this.size = 0; } function hashDelete(key) { var result2 = this.has(key) && delete this.__data__[key]; this.size -= result2 ? 1 : 0; return result2; } function hashGet(key) { var data2 = this.__data__; if (nativeCreate) { var result2 = data2[key]; return result2 === HASH_UNDEFINED ? undefined2 : result2; } return hasOwnProperty3.call(data2, key) ? data2[key] : undefined2; } function hashHas(key) { var data2 = this.__data__; return nativeCreate ? data2[key] !== undefined2 : hasOwnProperty3.call(data2, key); } function hashSet(key, value) { var data2 = this.__data__; this.size += this.has(key) ? 0 : 1; data2[key] = nativeCreate && value === undefined2 ? HASH_UNDEFINED : value; return this; } Hash.prototype.clear = hashClear; Hash.prototype["delete"] = hashDelete; Hash.prototype.get = hashGet; Hash.prototype.has = hashHas; Hash.prototype.set = hashSet; function ListCache(entries) { var index = -1, length = entries == null ? 0 : entries.length; this.clear(); while (++index < length) { var entry = entries[index]; this.set(entry[0], entry[1]); } } function listCacheClear() { this.__data__ = []; this.size = 0; } function listCacheDelete(key) { var data2 = this.__data__, index = assocIndexOf(data2, key); if (index < 0) { return false; } var lastIndex = data2.length - 1; if (index == lastIndex) { data2.pop(); } else { splice.call(data2, index, 1); } --this.size; return true; } function listCacheGet(key) { var data2 = this.__data__, index = assocIndexOf(data2, key); return index < 0 ? undefined2 : data2[index][1]; } function listCacheHas(key) { return assocIndexOf(this.__data__, key) > -1; } function listCacheSet(key, value) { var data2 = this.__data__, index = assocIndexOf(data2, key); if (index < 0) { ++this.size; data2.push([key, value]); } else { data2[index][1] = value; } return this; } ListCache.prototype.clear = listCacheClear; ListCache.prototype["delete"] = listCacheDelete; ListCache.prototype.get = listCacheGet; ListCache.prototype.has = listCacheHas; ListCache.prototype.set = listCacheSet; function MapCache(entries) { var index = -1, length = entries == null ? 0 : entries.length; this.clear(); while (++index < length) { var entry = entries[index]; this.set(entry[0], entry[1]); } } function mapCacheClear() { this.size = 0; this.__data__ = { "hash": new Hash(), "map": new (Map2 || ListCache)(), "string": new Hash() }; } function mapCacheDelete(key) { var result2 = getMapData(this, key)["delete"](key); this.size -= result2 ? 1 : 0; return result2; } function mapCacheGet(key) { return getMapData(this, key).get(key); } function mapCacheHas(key) { return getMapData(this, key).has(key); } function mapCacheSet(key, value) { var data2 = getMapData(this, key), size3 = data2.size; data2.set(key, value); this.size += data2.size == size3 ? 0 : 1; return this; } MapCache.prototype.clear = mapCacheClear; MapCache.prototype["delete"] = mapCacheDelete; MapCache.prototype.get = mapCacheGet; MapCache.prototype.has = mapCacheHas; MapCache.prototype.set = mapCacheSet; function SetCache(values2) { var index = -1, length = values2 == null ? 0 : values2.length; this.__data__ = new MapCache(); while (++index < length) { this.add(values2[index]); } } function setCacheAdd(value) { this.__data__.set(value, HASH_UNDEFINED); return this; } function setCacheHas(value) { return this.__data__.has(value); } SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; SetCache.prototype.has = setCacheHas; function Stack(entries) { var data2 = this.__data__ = new ListCache(entries); this.size = data2.size; } function stackClear() { this.__data__ = new ListCache(); this.size = 0; } function stackDelete(key) { var data2 = this.__data__, result2 = data2["delete"](key); this.size = data2.size; return result2; } function stackGet(key) { return this.__data__.get(key); } function stackHas(key) { return this.__data__.has(key); } function stackSet(key, value) { var data2 = this.__data__; if (data2 instanceof ListCache) { var pairs = data2.__data__; if (!Map2 || pairs.length < LARGE_ARRAY_SIZE - 1) { pairs.push([key, value]); this.size = ++data2.size; return this; } data2 = this.__data__ = new MapCache(pairs); } data2.set(key, value); this.size = data2.size; return this; } Stack.prototype.clear = stackClear; Stack.prototype["delete"] = stackDelete; Stack.prototype.get = stackGet; Stack.prototype.has = stackHas; Stack.prototype.set = stackSet; function arrayLikeKeys(value, inherited) { var isArr = isArray2(value), isArg = !isArr && isArguments(value), isBuff = !isArr && !isArg && isBuffer(value), isType2 = !isArr && !isArg && !isBuff && isTypedArray(value), skipIndexes = isArr || isArg || isBuff || isType2, result2 = skipIndexes ? baseTimes(value.length, String2) : [], length = result2.length; for (var key in value) { if ((inherited || hasOwnProperty3.call(value, key)) && !(skipIndexes && // Safari 9 has enumerable `arguments.length` in strict mode. (key == "length" || // Node.js 0.10 has enumerable non-index properties on buffers. isBuff && (key == "offset" || key == "parent") || // PhantomJS 2 has enumerable non-index properties on typed arrays. isType2 && (key == "buffer" || key == "byteLength" || key == "byteOffset") || // Skip index properties. isIndex(key, length)))) { result2.push(key); } } return result2; } function arraySample(array) { var length = array.length; return length ? array[baseRandom(0, length - 1)] : undefined2; } function arraySampleSize(array, n3) { return shuffleSelf(copyArray(array), baseClamp(n3, 0, array.length)); } function arrayShuffle(array) { return shuffleSelf(copyArray(array)); } function assignMergeValue(object, key, value) { if (value !== undefined2 && !eq(object[key], value) || value === undefined2 && !(key in object)) { baseAssignValue(object, key, value); } } function assignValue(object, key, value) { var objValue = object[key]; if (!(hasOwnProperty3.call(object, key) && eq(objValue, value)) || value === undefined2 && !(key in object)) { baseAssignValue(object, key, value); } } function assocIndexOf(array, key) { var length = array.length; while (length--) { if (eq(array[length][0], key)) { return length; } } return -1; } function baseAggregator(collection, setter, iteratee2, accumulator) { baseEach(collection, function(value, key, collection2) { setter(accumulator, value, iteratee2(value), collection2); }); return accumulator; } function baseAssign(object, source) { return object && copyObject(source, keys(source), object); } function baseAssignIn(object, source) { return object && copyObject(source, keysIn(source), object); } function baseAssignValue(object, key, value) { if (key == "__proto__" && defineProperty) { defineProperty(object, key, { "configurable": true, "enumerable": true, "value": value, "writable": true }); } else { object[key] = value; } } function baseAt(object, paths) { var index = -1, length = paths.length, result2 = Array2(length), skip = object == null; while (++index < length) { result2[index] = skip ? undefined2 : get3(object, paths[index]); } return result2; } function baseClamp(number, lower, upper) { if (number === number) { if (upper !== undefined2) { number = number <= upper ? number : upper; } if (lower !== undefined2) { number = number >= lower ? number : lower; } } return number; } function baseClone(value, bitmask, customizer, key, object, stack) { var result2, isDeep = bitmask & CLONE_DEEP_FLAG, isFlat = bitmask & CLONE_FLAT_FLAG, isFull = bitmask & CLONE_SYMBOLS_FLAG; if (customizer) { result2 = object ? customizer(value, key, object, stack) : customizer(value); } if (result2 !== undefined2) { return result2; } if (!isObject3(value)) { return value; } var isArr = isArray2(value); if (isArr) { result2 = initCloneArray(value); if (!isDeep) { return copyArray(value, result2); } } else { var tag = getTag(value), isFunc = tag == funcTag || tag == genTag; if (isBuffer(value)) { return cloneBuffer(value, isDeep); } if (tag == objectTag || tag == argsTag || isFunc && !object) { result2 = isFlat || isFunc ? {} : initCloneObject(value); if (!isDeep) { return isFlat ? copySymbolsIn(value, baseAssignIn(result2, value)) : copySymbols(value, baseAssign(result2, value)); } } else { if (!cloneableTags[tag]) { return object ? value : {}; } result2 = initCloneByTag(value, tag, isDeep); } } stack || (stack = new Stack()); var stacked = stack.get(value); if (stacked) { return stacked; } stack.set(value, result2); if (isSet(value)) { value.forEach(function(subValue) { result2.add(baseClone(subValue, bitmask, customizer, subValue, value, stack)); }); } else if (isMap2(value)) { value.forEach(function(subValue, key2) { result2.set(key2, baseClone(subValue, bitmask, customizer, key2, value, stack)); }); } var keysFunc = isFull ? isFlat ? getAllKeysIn : getAllKeys : isFlat ? keysIn : keys; var props = isArr ? undefined2 : keysFunc(value); arrayEach(props || value, function(subValue, key2) { if (props) { key2 = subValue; subValue = value[key2]; } assignValue(result2, key2, baseClone(subValue, bitmask, customizer, key2, value, stack)); }); return result2; } function baseConforms(source) { var props = keys(source); return function(object) { return baseConformsTo(object, source, props); }; } function baseConformsTo(object, source, props) { var length = props.length; if (object == null) { return !length; } object = Object2(object); while (length--) { var key = props[length], predicate = source[key], value = object[key]; if (value === undefined2 && !(key in object) || !predicate(value)) { return false; } } return true; } function baseDelay(func, wait, args) { if (typeof func != "function") { throw new TypeError2(FUNC_ERROR_TEXT); } return setTimeout2(function() { func.apply(undefined2, args); }, wait); } function baseDifference(array, values2, iteratee2, comparator) { var index = -1, includes2 = arrayIncludes, isCommon = true, length = array.length, result2 = [], valuesLength = values2.length; if (!length) { return result2; } if (iteratee2) { values2 = arrayMap(values2, baseUnary(iteratee2)); } if (comparator) { includes2 = arrayIncludesWith; isCommon = false; } else if (values2.length >= LARGE_ARRAY_SIZE) { includes2 = cacheHas; isCommon = false; values2 = new SetCache(values2); } outer: while (++index < length) { var value = array[index], computed = iteratee2 == null ? value : iteratee2(value); value = comparator || value !== 0 ? value : 0; if (isCommon && computed === computed) { var valuesIndex = valuesLength; while (valuesIndex--) { if (values2[valuesIndex] === computed) { continue outer; } } result2.push(value); } else if (!includes2(values2, computed, comparator)) { result2.push(value); } } return result2; } var baseEach = createBaseEach(baseForOwn); var baseEachRight = createBaseEach(baseForOwnRight, true); function baseEvery(collection, predicate) { var result2 = true; baseEach(collection, function(value, index, collection2) { result2 = !!predicate(value, index, collection2); return result2; }); return result2; } function baseExtremum(array, iteratee2, comparator) { var index = -1, length = array.length; while (++index < length) { var value = array[index], current = iteratee2(value); if (current != null && (computed === undefined2 ? current === current && !isSymbol2(current) : comparator(current, computed))) { var computed = current, result2 = value; } } return result2; } function baseFill(array, value, start5, end2) { var length = array.length; start5 = toInteger(start5); if (start5 < 0) { start5 = -start5 > length ? 0 : length + start5; } end2 = end2 === undefined2 || end2 > length ? length : toInteger(end2); if (end2 < 0) { end2 += length; } end2 = start5 > end2 ? 0 : toLength(end2); while (start5 < end2) { array[start5++] = value; } return array; } function baseFilter(collection, predicate) { var result2 = []; baseEach(collection, function(value, index, collection2) { if (predicate(value, index, collection2)) { result2.push(value); } }); return result2; } function baseFlatten(array, depth, predicate, isStrict, result2) { var index = -1, length = array.length; predicate || (predicate = isFlattenable); result2 || (result2 = []); while (++index < length) { var value = array[index]; if (depth > 0 && predicate(value)) { if (depth > 1) { baseFlatten(value, depth - 1, predicate, isStrict, result2); } else { arrayPush(result2, value); } } else if (!isStrict) { result2[result2.length] = value; } } return result2; } var baseFor = createBaseFor(); var baseForRight = createBaseFor(true); function baseForOwn(object, iteratee2) { return object && baseFor(object, iteratee2, keys); } function baseForOwnRight(object, iteratee2) { return object && baseForRight(object, iteratee2, keys); } function baseFunctions(object, props) { return arrayFilter(props, function(key) { return isFunction(object[key]); }); } function baseGet(object, path) { path = castPath(path, object); var index = 0, length = path.length; while (object != null && index < length) { object = object[toKey(path[index++])]; } return index && index == length ? object : undefined2; } function baseGetAllKeys(object, keysFunc, symbolsFunc) { var result2 = keysFunc(object); return isArray2(object) ? result2 : arrayPush(result2, symbolsFunc(object)); } function baseGetTag(value) { if (value == null) { return value === undefined2 ? undefinedTag : nullTag; } return symToStringTag && symToStringTag in Object2(value) ? getRawTag(value) : objectToString2(value); } function baseGt(value, other) { return value > other; } function baseHas(object, key) { return object != null && hasOwnProperty3.call(object, key); } function baseHasIn(object, key) { return object != null && key in Object2(object); } function baseInRange(number, start5, end2) { return number >= nativeMin(start5, end2) && number < nativeMax(start5, end2); } function baseIntersection(arrays, iteratee2, comparator) { var includes2 = comparator ? arrayIncludesWith : arrayIncludes, length = arrays[0].length, othLength = arrays.length, othIndex = othLength, caches = Array2(othLength), maxLength = Infinity, result2 = []; while (othIndex--) { var array = arrays[othIndex]; if (othIndex && iteratee2) { array = arrayMap(array, baseUnary(iteratee2)); } maxLength = nativeMin(array.length, maxLength); caches[othIndex] = !comparator && (iteratee2 || length >= 120 && array.length >= 120) ? new SetCache(othIndex && array) : undefined2; } array = arrays[0]; var index = -1, seen = caches[0]; outer: while (++index < length && result2.length < maxLength) { var value = array[index], computed = iteratee2 ? iteratee2(value) : value; value = comparator || value !== 0 ? value : 0; if (!(seen ? cacheHas(seen, computed) : includes2(result2, computed, comparator))) { othIndex = othLength; while (--othIndex) { var cache2 = caches[othIndex]; if (!(cache2 ? cacheHas(cache2, computed) : includes2(arrays[othIndex], computed, comparator))) { continue outer; } } if (seen) { seen.push(computed); } result2.push(value); } } return result2; } function baseInverter(object, setter, iteratee2, accumulator) { baseForOwn(object, function(value, key, object2) { setter(accumulator, iteratee2(value), key, object2); }); return accumulator; } function baseInvoke(object, path, args) { path = castPath(path, object); object = parent(object, path); var func = object == null ? object : object[toKey(last(path))]; return func == null ? undefined2 : apply(func, object, args); } function baseIsArguments(value) { return isObjectLike(value) && baseGetTag(value) == argsTag; } function baseIsArrayBuffer(value) { return isObjectLike(value) && baseGetTag(value) == arrayBufferTag; } function baseIsDate(value) { return isObjectLike(value) && baseGetTag(value) == dateTag; } function baseIsEqual(value, other, bitmask, customizer, stack) { if (value === other) { return true; } if (value == null || other == null || !isObjectLike(value) && !isObjectLike(other)) { return value !== value && other !== other; } return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack); } function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) { var objIsArr = isArray2(object), othIsArr = isArray2(other), objTag = objIsArr ? arrayTag : getTag(object), othTag = othIsArr ? arrayTag : getTag(other); objTag = objTag == argsTag ? objectTag : objTag; othTag = othTag == argsTag ? objectTag : othTag; var objIsObj = objTag == objectTag, othIsObj = othTag == objectTag, isSameTag = objTag == othTag; if (isSameTag && isBuffer(object)) { if (!isBuffer(other)) { return false; } objIsArr = true; objIsObj = false; } if (isSameTag && !objIsObj) { stack || (stack = new Stack()); return objIsArr || isTypedArray(object) ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack); } if (!(bitmask & COMPARE_PARTIAL_FLAG)) { var objIsWrapped = objIsObj && hasOwnProperty3.call(object, "__wrapped__"), othIsWrapped = othIsObj && hasOwnProperty3.call(other, "__wrapped__"); if (objIsWrapped || othIsWrapped) { var objUnwrapped = objIsWrapped ? object.value() : object, othUnwrapped = othIsWrapped ? other.value() : other; stack || (stack = new Stack()); return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack); } } if (!isSameTag) { return false; } stack || (stack = new Stack()); return equalObjects(object, other, bitmask, customizer, equalFunc, stack); } function baseIsMap(value) { return isObjectLike(value) && getTag(value) == mapTag; } function baseIsMatch(object, source, matchData, customizer) { var index = matchData.length, length = index, noCustomizer = !customizer; if (object == null) { return !length; } object = Object2(object); while (index--) { var data2 = matchData[index]; if (noCustomizer && data2[2] ? data2[1] !== object[data2[0]] : !(data2[0] in object)) { return false; } } while (++index < length) { data2 = matchData[index]; var key = data2[0], objValue = object[key], srcValue = data2[1]; if (noCustomizer && data2[2]) { if (objValue === undefined2 && !(key in object)) { return false; } } else { var stack = new Stack(); if (customizer) { var result2 = customizer(objValue, srcValue, key, object, source, stack); } if (!(result2 === undefined2 ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) : result2)) { return false; } } } return true; } function baseIsNative(value) { if (!isObject3(value) || isMasked(value)) { return false; } var pattern = isFunction(value) ? reIsNative : reIsHostCtor; return pattern.test(toSource(value)); } function baseIsRegExp(value) { return isObjectLike(value) && baseGetTag(value) == regexpTag; } function baseIsSet(value) { return isObjectLike(value) && getTag(value) == setTag; } function baseIsTypedArray(value) { return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; } function baseIteratee(value) { if (typeof value == "function") { return value; } if (value == null) { return identity; } if (typeof value == "object") { return isArray2(value) ? baseMatchesProperty(value[0], value[1]) : baseMatches(value); } return property(value); } function baseKeys(object) { if (!isPrototype(object)) { return nativeKeys(object); } var result2 = []; for (var key in Object2(object)) { if (hasOwnProperty3.call(object, key) && key != "constructor") { result2.push(key); } } return result2; } function baseKeysIn(object) { if (!isObject3(object)) { return nativeKeysIn(object); } var isProto = isPrototype(object), result2 = []; for (var key in object) { if (!(key == "constructor" && (isProto || !hasOwnProperty3.call(object, key)))) { result2.push(key); } } return result2; } function baseLt(value, other) { return value < other; } function baseMap(collection, iteratee2) { var index = -1, result2 = isArrayLike(collection) ? Array2(collection.length) : []; baseEach(collection, function(value, key, collection2) { result2[++index] = iteratee2(value, key, collection2); }); return result2; } function baseMatches(source) { var matchData = getMatchData(source); if (matchData.length == 1 && matchData[0][2]) { return matchesStrictComparable(matchData[0][0], matchData[0][1]); } return function(object) { return object === source || baseIsMatch(object, source, matchData); }; } function baseMatchesProperty(path, srcValue) { if (isKey(path) && isStrictComparable(srcValue)) { return matchesStrictComparable(toKey(path), srcValue); } return function(object) { var objValue = get3(object, path); return objValue === undefined2 && objValue === srcValue ? hasIn(object, path) : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG); }; } function baseMerge(object, source, srcIndex, customizer, stack) { if (object === source) { return; } baseFor(source, function(srcValue, key) { stack || (stack = new Stack()); if (isObject3(srcValue)) { baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack); } else { var newValue = customizer ? customizer(safeGet(object, key), srcValue, key + "", object, source, stack) : undefined2; if (newValue === undefined2) { newValue = srcValue; } assignMergeValue(object, key, newValue); } }, keysIn); } function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) { var objValue = safeGet(object, key), srcValue = safeGet(source, key), stacked = stack.get(srcValue); if (stacked) { assignMergeValue(object, key, stacked); return; } var newValue = customizer ? customizer(objValue, srcValue, key + "", object, source, stack) : undefined2; var isCommon = newValue === undefined2; if (isCommon) { var isArr = isArray2(srcValue), isBuff = !isArr && isBuffer(srcValue), isTyped = !isArr && !isBuff && isTypedArray(srcValue); newValue = srcValue; if (isArr || isBuff || isTyped) { if (isArray2(objValue)) { newValue = objValue; } else if (isArrayLikeObject(objValue)) { newValue = copyArray(objValue); } else if (isBuff) { isCommon = false; newValue = cloneBuffer(srcValue, true); } else if (isTyped) { isCommon = false; newValue = cloneTypedArray(srcValue, true); } else { newValue = []; } } else if (isPlainObject(srcValue) || isArguments(srcValue)) { newValue = objValue; if (isArguments(objValue)) { newValue = toPlainObject(objValue); } else if (!isObject3(objValue) || isFunction(objValue)) { newValue = initCloneObject(srcValue); } } else { isCommon = false; } } if (isCommon) { stack.set(srcValue, newValue); mergeFunc(newValue, srcValue, srcIndex, customizer, stack); stack["delete"](srcValue); } assignMergeValue(object, key, newValue); } function baseNth(array, n3) { var length = array.length; if (!length) { return; } n3 += n3 < 0 ? length : 0; return isIndex(n3, length) ? array[n3] : undefined2; } function baseOrderBy(collection, iteratees, orders) { if (iteratees.length) { iteratees = arrayMap(iteratees, function(iteratee2) { if (isArray2(iteratee2)) { return function(value) { return baseGet(value, iteratee2.length === 1 ? iteratee2[0] : iteratee2); }; } return iteratee2; }); } else { iteratees = [identity]; } var index = -1; iteratees = arrayMap(iteratees, baseUnary(getIteratee())); var result2 = baseMap(collection, function(value, key, collection2) { var criteria = arrayMap(iteratees, function(iteratee2) { return iteratee2(value); }); return { "criteria": criteria, "index": ++index, "value": value }; }); return baseSortBy(result2, function(object, other) { return compareMultiple(object, other, orders); }); } function basePick(object, paths) { return basePickBy(object, paths, function(value, path) { return hasIn(object, path); }); } function basePickBy(object, paths, predicate) { var index = -1, length = paths.length, result2 = {}; while (++index < length) { var path = paths[index], value = baseGet(object, path); if (predicate(value, path)) { baseSet(result2, castPath(path, object), value); } } return result2; } function basePropertyDeep(path) { return function(object) { return baseGet(object, path); }; } function basePullAll(array, values2, iteratee2, comparator) { var indexOf3 = comparator ? baseIndexOfWith : baseIndexOf, index = -1, length = values2.length, seen = array; if (array === values2) { values2 = copyArray(values2); } if (iteratee2) { seen = arrayMap(array, baseUnary(iteratee2)); } while (++index < length) { var fromIndex = 0, value = values2[index], computed = iteratee2 ? iteratee2(value) : value; while ((fromIndex = indexOf3(seen, computed, fromIndex, comparator)) > -1) { if (seen !== array) { splice.call(seen, fromIndex, 1); } splice.call(array, fromIndex, 1); } } return array; } function basePullAt(array, indexes) { var length = array ? indexes.length : 0, lastIndex = length - 1; while (length--) { var index = indexes[length]; if (length == lastIndex || index !== previous) { var previous = index; if (isIndex(index)) { splice.call(array, index, 1); } else { baseUnset(array, index); } } } return array; } function baseRandom(lower, upper) { return lower + nativeFloor(nativeRandom() * (upper - lower + 1)); } function baseRange(start5, end2, step, fromRight) { var index = -1, length = nativeMax(nativeCeil((end2 - start5) / (step || 1)), 0), result2 = Array2(length); while (length--) { result2[fromRight ? length : ++index] = start5; start5 += step; } return result2; } function baseRepeat(string, n3) { var result2 = ""; if (!string || n3 < 1 || n3 > MAX_SAFE_INTEGER) { return result2; } do { if (n3 % 2) { result2 += string; } n3 = nativeFloor(n3 / 2); if (n3) { string += string; } } while (n3); return result2; } function baseRest(func, start5) { return setToString(overRest(func, start5, identity), func + ""); } function baseSample(collection) { return arraySample(values(collection)); } function baseSampleSize(collection, n3) { var array = values(collection); return shuffleSelf(array, baseClamp(n3, 0, array.length)); } function baseSet(object, path, value, customizer) { if (!isObject3(object)) { return object; } path = castPath(path, object); var index = -1, length = path.length, lastIndex = length - 1, nested = object; while (nested != null && ++index < length) { var key = toKey(path[index]), newValue = value; if (key === "__proto__" || key === "constructor" || key === "prototype") { return object; } if (index != lastIndex) { var objValue = nested[key]; newValue = customizer ? customizer(objValue, key, nested) : undefined2; if (newValue === undefined2) { newValue = isObject3(objValue) ? objValue : isIndex(path[index + 1]) ? [] : {}; } } assignValue(nested, key, newValue); nested = nested[key]; } return object; } var baseSetData = !metaMap ? identity : function(func, data2) { metaMap.set(func, data2); return func; }; var baseSetToString = !defineProperty ? identity : function(func, string) { return defineProperty(func, "toString", { "configurable": true, "enumerable": false, "value": constant(string), "writable": true }); }; function baseShuffle(collection) { return shuffleSelf(values(collection)); } function baseSlice(array, start5, end2) { var index = -1, length = array.length; if (start5 < 0) { start5 = -start5 > length ? 0 : length + start5; } end2 = end2 > length ? length : end2; if (end2 < 0) { end2 += length; } length = start5 > end2 ? 0 : end2 - start5 >>> 0; start5 >>>= 0; var result2 = Array2(length); while (++index < length) { result2[index] = array[index + start5]; } return result2; } function baseSome(collection, predicate) { var result2; baseEach(collection, function(value, index, collection2) { result2 = predicate(value, index, collection2); return !result2; }); return !!result2; } function baseSortedIndex(array, value, retHighest) { var low = 0, high = array == null ? low : array.length; if (typeof value == "number" && value === value && high <= HALF_MAX_ARRAY_LENGTH) { while (low < high) { var mid = low + high >>> 1, computed = array[mid]; if (computed !== null && !isSymbol2(computed) && (retHighest ? computed <= value : computed < value)) { low = mid + 1; } else { high = mid; } } return high; } return baseSortedIndexBy(array, value, identity, retHighest); } function baseSortedIndexBy(array, value, iteratee2, retHighest) { var low = 0, high = array == null ? 0 : array.length; if (high === 0) { return 0; } value = iteratee2(value); var valIsNaN = value !== value, valIsNull = value === null, valIsSymbol = isSymbol2(value), valIsUndefined = value === undefined2; while (low < high) { var mid = nativeFloor((low + high) / 2), computed = iteratee2(array[mid]), othIsDefined = computed !== undefined2, othIsNull = computed === null, othIsReflexive = computed === computed, othIsSymbol = isSymbol2(computed); if (valIsNaN) { var setLow = retHighest || othIsReflexive; } else if (valIsUndefined) { setLow = othIsReflexive && (retHighest || othIsDefined); } else if (valIsNull) { setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull); } else if (valIsSymbol) { setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol); } else if (othIsNull || othIsSymbol) { setLow = false; } else { setLow = retHighest ? computed <= value : computed < value; } if (setLow) { low = mid + 1; } else { high = mid; } } return nativeMin(high, MAX_ARRAY_INDEX); } function baseSortedUniq(array, iteratee2) { var index = -1, length = array.length, resIndex = 0, result2 = []; while (++index < length) { var value = array[index], computed = iteratee2 ? iteratee2(value) : value; if (!index || !eq(computed, seen)) { var seen = computed; result2[resIndex++] = value === 0 ? 0 : value; } } return result2; } function baseToNumber(value) { if (typeof value == "number") { return value; } if (isSymbol2(value)) { return NAN; } return +value; } function baseToString(value) { if (typeof value == "string") { return value; } if (isArray2(value)) { return arrayMap(value, baseToString) + ""; } if (isSymbol2(value)) { return symbolToString ? symbolToString.call(value) : ""; } var result2 = value + ""; return result2 == "0" && 1 / value == -INFINITY ? "-0" : result2; } function baseUniq(array, iteratee2, comparator) { var index = -1, includes2 = arrayIncludes, length = array.length, isCommon = true, result2 = [], seen = result2; if (comparator) { isCommon = false; includes2 = arrayIncludesWith; } else if (length >= LARGE_ARRAY_SIZE) { var set4 = iteratee2 ? null : createSet(array); if (set4) { return setToArray(set4); } isCommon = false; includes2 = cacheHas; seen = new SetCache(); } else { seen = iteratee2 ? [] : result2; } outer: while (++index < length) { var value = array[index], computed = iteratee2 ? iteratee2(value) : value; value = comparator || value !== 0 ? value : 0; if (isCommon && computed === computed) { var seenIndex = seen.length; while (seenIndex--) { if (seen[seenIndex] === computed) { continue outer; } } if (iteratee2) { seen.push(computed); } result2.push(value); } else if (!includes2(seen, computed, comparator)) { if (seen !== result2) { seen.push(computed); } result2.push(value); } } return result2; } function baseUnset(object, path) { path = castPath(path, object); object = parent(object, path); return object == null || delete object[toKey(last(path))]; } function baseUpdate(object, path, updater, customizer) { return baseSet(object, path, updater(baseGet(object, path)), customizer); } function baseWhile(array, predicate, isDrop, fromRight) { var length = array.length, index = fromRight ? length : -1; while ((fromRight ? index-- : ++index < length) && predicate(array[index], index, array)) { } return isDrop ? baseSlice(array, fromRight ? 0 : index, fromRight ? index + 1 : length) : baseSlice(array, fromRight ? index + 1 : 0, fromRight ? length : index); } function baseWrapperValue(value, actions) { var result2 = value; if (result2 instanceof LazyWrapper) { result2 = result2.value(); } return arrayReduce(actions, function(result3, action) { return action.func.apply(action.thisArg, arrayPush([result3], action.args)); }, result2); } function baseXor(arrays, iteratee2, comparator) { var length = arrays.length; if (length < 2) { return length ? baseUniq(arrays[0]) : []; } var index = -1, result2 = Array2(length); while (++index < length) { var array = arrays[index], othIndex = -1; while (++othIndex < length) { if (othIndex != index) { result2[index] = baseDifference(result2[index] || array, arrays[othIndex], iteratee2, comparator); } } } return baseUniq(baseFlatten(result2, 1), iteratee2, comparator); } function baseZipObject(props, values2, assignFunc) { var index = -1, length = props.length, valsLength = values2.length, result2 = {}; while (++index < length) { var value = index < valsLength ? values2[index] : undefined2; assignFunc(result2, props[index], value); } return result2; } function castArrayLikeObject(value) { return isArrayLikeObject(value) ? value : []; } function castFunction(value) { return typeof value == "function" ? value : identity; } function castPath(value, object) { if (isArray2(value)) { return value; } return isKey(value, object) ? [value] : stringToPath(toString(value)); } var castRest = baseRest; function castSlice(array, start5, end2) { var length = array.length; end2 = end2 === undefined2 ? length : end2; return !start5 && end2 >= length ? array : baseSlice(array, start5, end2); } var clearTimeout2 = ctxClearTimeout || function(id2) { return root.clearTimeout(id2); }; function cloneBuffer(buffer, isDeep) { if (isDeep) { return buffer.slice(); } var length = buffer.length, result2 = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length); buffer.copy(result2); return result2; } function cloneArrayBuffer(arrayBuffer) { var result2 = new arrayBuffer.constructor(arrayBuffer.byteLength); new Uint8Array2(result2).set(new Uint8Array2(arrayBuffer)); return result2; } function cloneDataView(dataView, isDeep) { var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer; return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength); } function cloneRegExp(regexp) { var result2 = new regexp.constructor(regexp.source, reFlags.exec(regexp)); result2.lastIndex = regexp.lastIndex; return result2; } function cloneSymbol(symbol) { return symbolValueOf ? Object2(symbolValueOf.call(symbol)) : {}; } function cloneTypedArray(typedArray, isDeep) { var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer; return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length); } function compareAscending(value, other) { if (value !== other) { var valIsDefined = value !== undefined2, valIsNull = value === null, valIsReflexive = value === value, valIsSymbol = isSymbol2(value); var othIsDefined = other !== undefined2, othIsNull = other === null, othIsReflexive = other === other, othIsSymbol = isSymbol2(other); if (!othIsNull && !othIsSymbol && !valIsSymbol && value > other || valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol || valIsNull && othIsDefined && othIsReflexive || !valIsDefined && othIsReflexive || !valIsReflexive) { return 1; } if (!valIsNull && !valIsSymbol && !othIsSymbol && value < other || othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol || othIsNull && valIsDefined && valIsReflexive || !othIsDefined && valIsReflexive || !othIsReflexive) { return -1; } } return 0; } function compareMultiple(object, other, orders) { var index = -1, objCriteria = object.criteria, othCriteria = other.criteria, length = objCriteria.length, ordersLength = orders.length; while (++index < length) { var result2 = compareAscending(objCriteria[index], othCriteria[index]); if (result2) { if (index >= ordersLength) { return result2; } var order2 = orders[index]; return result2 * (order2 == "desc" ? -1 : 1); } } return object.index - other.index; } function composeArgs(args, partials, holders, isCurried) { var argsIndex = -1, argsLength = args.length, holdersLength = holders.length, leftIndex = -1, leftLength = partials.length, rangeLength = nativeMax(argsLength - holdersLength, 0), result2 = Array2(leftLength + rangeLength), isUncurried = !isCurried; while (++leftIndex < leftLength) { result2[leftIndex] = partials[leftIndex]; } while (++argsIndex < holdersLength) { if (isUncurried || argsIndex < argsLength) { result2[holders[argsIndex]] = args[argsIndex]; } } while (rangeLength--) { result2[leftIndex++] = args[argsIndex++]; } return result2; } function composeArgsRight(args, partials, holders, isCurried) { var argsIndex = -1, argsLength = args.length, holdersIndex = -1, holdersLength = holders.length, rightIndex = -1, rightLength = partials.length, rangeLength = nativeMax(argsLength - holdersLength, 0), result2 = Array2(rangeLength + rightLength), isUncurried = !isCurried; while (++argsIndex < rangeLength) { result2[argsIndex] = args[argsIndex]; } var offset2 = argsIndex; while (++rightIndex < rightLength) { result2[offset2 + rightIndex] = partials[rightIndex]; } while (++holdersIndex < holdersLength) { if (isUncurried || argsIndex < argsLength) { result2[offset2 + holders[holdersIndex]] = args[argsIndex++]; } } return result2; } function copyArray(source, array) { var index = -1, length = source.length; array || (array = Array2(length)); while (++index < length) { array[index] = source[index]; } return array; } function copyObject(source, props, object, customizer) { var isNew = !object; object || (object = {}); var index = -1, length = props.length; while (++index < length) { var key = props[index]; var newValue = customizer ? customizer(object[key], source[key], key, object, source) : undefined2; if (newValue === undefined2) { newValue = source[key]; } if (isNew) { baseAssignValue(object, key, newValue); } else { assignValue(object, key, newValue); } } return object; } function copySymbols(source, object) { return copyObject(source, getSymbols(source), object); } function copySymbolsIn(source, object) { return copyObject(source, getSymbolsIn(source), object); } function createAggregator(setter, initializer) { return function(collection, iteratee2) { var func = isArray2(collection) ? arrayAggregator : baseAggregator, accumulator = initializer ? initializer() : {}; return func(collection, setter, getIteratee(iteratee2, 2), accumulator); }; } function createAssigner(assigner) { return baseRest(function(object, sources) { var index = -1, length = sources.length, customizer = length > 1 ? sources[length - 1] : undefined2, guard = length > 2 ? sources[2] : undefined2; customizer = assigner.length > 3 && typeof customizer == "function" ? (length--, customizer) : undefined2; if (guard && isIterateeCall(sources[0], sources[1], guard)) { customizer = length < 3 ? undefined2 : customizer; length = 1; } object = Object2(object); while (++index < length) { var source = sources[index]; if (source) { assigner(object, source, index, customizer); } } return object; }); } function createBaseEach(eachFunc, fromRight) { return function(collection, iteratee2) { if (collection == null) { return collection; } if (!isArrayLike(collection)) { return eachFunc(collection, iteratee2); } var length = collection.length, index = fromRight ? length : -1, iterable = Object2(collection); while (fromRight ? index-- : ++index < length) { if (iteratee2(iterable[index], index, iterable) === false) { break; } } return collection; }; } function createBaseFor(fromRight) { return function(object, iteratee2, keysFunc) { var index = -1, iterable = Object2(object), props = keysFunc(object), length = props.length; while (length--) { var key = props[fromRight ? length : ++index]; if (iteratee2(iterable[key], key, iterable) === false) { break; } } return object; }; } function createBind(func, bitmask, thisArg) { var isBind = bitmask & WRAP_BIND_FLAG, Ctor = createCtor(func); function wrapper() { var fn3 = this && this !== root && this instanceof wrapper ? Ctor : func; return fn3.apply(isBind ? thisArg : this, arguments); } return wrapper; } function createCaseFirst(methodName) { return function(string) { string = toString(string); var strSymbols = hasUnicode(string) ? stringToArray(string) : undefined2; var chr = strSymbols ? strSymbols[0] : string.charAt(0); var trailing = strSymbols ? castSlice(strSymbols, 1).join("") : string.slice(1); return chr[methodName]() + trailing; }; } function createCompounder(callback) { return function(string) { return arrayReduce(words(deburr(string).replace(reApos, "")), callback, ""); }; } function createCtor(Ctor) { return function() { var args = arguments; switch (args.length) { case 0: return new Ctor(); case 1: return new Ctor(args[0]); case 2: return new Ctor(args[0], args[1]); case 3: return new Ctor(args[0], args[1], args[2]); case 4: return new Ctor(args[0], args[1], args[2], args[3]); case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]); case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]); case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]); } var thisBinding = baseCreate(Ctor.prototype), result2 = Ctor.apply(thisBinding, args); return isObject3(result2) ? result2 : thisBinding; }; } function createCurry(func, bitmask, arity) { var Ctor = createCtor(func); function wrapper() { var length = arguments.length, args = Array2(length), index = length, placeholder = getHolder(wrapper); while (index--) { args[index] = arguments[index]; } var holders = length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder ? [] : replaceHolders(args, placeholder); length -= holders.length; if (length < arity) { return createRecurry( func, bitmask, createHybrid, wrapper.placeholder, undefined2, args, holders, undefined2, undefined2, arity - length ); } var fn3 = this && this !== root && this instanceof wrapper ? Ctor : func; return apply(fn3, this, args); } return wrapper; } function createFind(findIndexFunc) { return function(collection, predicate, fromIndex) { var iterable = Object2(collection); if (!isArrayLike(collection)) { var iteratee2 = getIteratee(predicate, 3); collection = keys(collection); predicate = function(key) { return iteratee2(iterable[key], key, iterable); }; } var index = findIndexFunc(collection, predicate, fromIndex); return index > -1 ? iterable[iteratee2 ? collection[index] : index] : undefined2; }; } function createFlow(fromRight) { return flatRest(function(funcs) { var length = funcs.length, index = length, prereq = LodashWrapper.prototype.thru; if (fromRight) { funcs.reverse(); } while (index--) { var func = funcs[index]; if (typeof func != "function") { throw new TypeError2(FUNC_ERROR_TEXT); } if (prereq && !wrapper && getFuncName(func) == "wrapper") { var wrapper = new LodashWrapper([], true); } } index = wrapper ? index : length; while (++index < length) { func = funcs[index]; var funcName = getFuncName(func), data2 = funcName == "wrapper" ? getData2(func) : undefined2; if (data2 && isLaziable(data2[0]) && data2[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) && !data2[4].length && data2[9] == 1) { wrapper = wrapper[getFuncName(data2[0])].apply(wrapper, data2[3]); } else { wrapper = func.length == 1 && isLaziable(func) ? wrapper[funcName]() : wrapper.thru(func); } } return function() { var args = arguments, value = args[0]; if (wrapper && args.length == 1 && isArray2(value)) { return wrapper.plant(value).value(); } var index2 = 0, result2 = length ? funcs[index2].apply(this, args) : value; while (++index2 < length) { result2 = funcs[index2].call(this, result2); } return result2; }; }); } function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary2, arity) { var isAry = bitmask & WRAP_ARY_FLAG, isBind = bitmask & WRAP_BIND_FLAG, isBindKey = bitmask & WRAP_BIND_KEY_FLAG, isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG), isFlip = bitmask & WRAP_FLIP_FLAG, Ctor = isBindKey ? undefined2 : createCtor(func); function wrapper() { var length = arguments.length, args = Array2(length), index = length; while (index--) { args[index] = arguments[index]; } if (isCurried) { var placeholder = getHolder(wrapper), holdersCount = countHolders(args, placeholder); } if (partials) { args = composeArgs(args, partials, holders, isCurried); } if (partialsRight) { args = composeArgsRight(args, partialsRight, holdersRight, isCurried); } length -= holdersCount; if (isCurried && length < arity) { var newHolders = replaceHolders(args, placeholder); return createRecurry( func, bitmask, createHybrid, wrapper.placeholder, thisArg, args, newHolders, argPos, ary2, arity - length ); } var thisBinding = isBind ? thisArg : this, fn3 = isBindKey ? thisBinding[func] : func; length = args.length; if (argPos) { args = reorder(args, argPos); } else if (isFlip && length > 1) { args.reverse(); } if (isAry && ary2 < length) { args.length = ary2; } if (this && this !== root && this instanceof wrapper) { fn3 = Ctor || createCtor(fn3); } return fn3.apply(thisBinding, args); } return wrapper; } function createInverter(setter, toIteratee) { return function(object, iteratee2) { return baseInverter(object, setter, toIteratee(iteratee2), {}); }; } function createMathOperation(operator, defaultValue) { return function(value, other) { var result2; if (value === undefined2 && other === undefined2) { return defaultValue; } if (value !== undefined2) { result2 = value; } if (other !== undefined2) { if (result2 === undefined2) { return other; } if (typeof value == "string" || typeof other == "string") { value = baseToString(value); other = baseToString(other); } else { value = baseToNumber(value); other = baseToNumber(other); } result2 = operator(value, other); } return result2; }; } function createOver(arrayFunc) { return flatRest(function(iteratees) { iteratees = arrayMap(iteratees, baseUnary(getIteratee())); return baseRest(function(args) { var thisArg = this; return arrayFunc(iteratees, function(iteratee2) { return apply(iteratee2, thisArg, args); }); }); }); } function createPadding(length, chars) { chars = chars === undefined2 ? " " : baseToString(chars); var charsLength = chars.length; if (charsLength < 2) { return charsLength ? baseRepeat(chars, length) : chars; } var result2 = baseRepeat(chars, nativeCeil(length / stringSize(chars))); return hasUnicode(chars) ? castSlice(stringToArray(result2), 0, length).join("") : result2.slice(0, length); } function createPartial(func, bitmask, thisArg, partials) { var isBind = bitmask & WRAP_BIND_FLAG, Ctor = createCtor(func); function wrapper() { var argsIndex = -1, argsLength = arguments.length, leftIndex = -1, leftLength = partials.length, args = Array2(leftLength + argsLength), fn3 = this && this !== root && this instanceof wrapper ? Ctor : func; while (++leftIndex < leftLength) { args[leftIndex] = partials[leftIndex]; } while (argsLength--) { args[leftIndex++] = arguments[++argsIndex]; } return apply(fn3, isBind ? thisArg : this, args); } return wrapper; } function createRange(fromRight) { return function(start5, end2, step) { if (step && typeof step != "number" && isIterateeCall(start5, end2, step)) { end2 = step = undefined2; } start5 = toFinite(start5); if (end2 === undefined2) { end2 = start5; start5 = 0; } else { end2 = toFinite(end2); } step = step === undefined2 ? start5 < end2 ? 1 : -1 : toFinite(step); return baseRange(start5, end2, step, fromRight); }; } function createRelationalOperation(operator) { return function(value, other) { if (!(typeof value == "string" && typeof other == "string")) { value = toNumber(value); other = toNumber(other); } return operator(value, other); }; } function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary2, arity) { var isCurry = bitmask & WRAP_CURRY_FLAG, newHolders = isCurry ? holders : undefined2, newHoldersRight = isCurry ? undefined2 : holders, newPartials = isCurry ? partials : undefined2, newPartialsRight = isCurry ? undefined2 : partials; bitmask |= isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG; bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG); if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) { bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG); } var newData = [ func, bitmask, thisArg, newPartials, newHolders, newPartialsRight, newHoldersRight, argPos, ary2, arity ]; var result2 = wrapFunc.apply(undefined2, newData); if (isLaziable(func)) { setData2(result2, newData); } result2.placeholder = placeholder; return setWrapToString(result2, func, bitmask); } function createRound(methodName) { var func = Math2[methodName]; return function(number, precision) { number = toNumber(number); precision = precision == null ? 0 : nativeMin(toInteger(precision), 292); if (precision && nativeIsFinite(number)) { var pair = (toString(number) + "e").split("e"), value = func(pair[0] + "e" + (+pair[1] + precision)); pair = (toString(value) + "e").split("e"); return +(pair[0] + "e" + (+pair[1] - precision)); } return func(number); }; } var createSet = !(Set2 && 1 / setToArray(new Set2([, -0]))[1] == INFINITY) ? noop : function(values2) { return new Set2(values2); }; function createToPairs(keysFunc) { return function(object) { var tag = getTag(object); if (tag == mapTag) { return mapToArray(object); } if (tag == setTag) { return setToPairs(object); } return baseToPairs(object, keysFunc(object)); }; } function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary2, arity) { var isBindKey = bitmask & WRAP_BIND_KEY_FLAG; if (!isBindKey && typeof func != "function") { throw new TypeError2(FUNC_ERROR_TEXT); } var length = partials ? partials.length : 0; if (!length) { bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG); partials = holders = undefined2; } ary2 = ary2 === undefined2 ? ary2 : nativeMax(toInteger(ary2), 0); arity = arity === undefined2 ? arity : toInteger(arity); length -= holders ? holders.length : 0; if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) { var partialsRight = partials, holdersRight = holders; partials = holders = undefined2; } var data2 = isBindKey ? undefined2 : getData2(func); var newData = [ func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary2, arity ]; if (data2) { mergeData(newData, data2); } func = newData[0]; bitmask = newData[1]; thisArg = newData[2]; partials = newData[3]; holders = newData[4]; arity = newData[9] = newData[9] === undefined2 ? isBindKey ? 0 : func.length : nativeMax(newData[9] - length, 0); if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) { bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG); } if (!bitmask || bitmask == WRAP_BIND_FLAG) { var result2 = createBind(func, bitmask, thisArg); } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) { result2 = createCurry(func, bitmask, arity); } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) { result2 = createPartial(func, bitmask, thisArg, partials); } else { result2 = createHybrid.apply(undefined2, newData); } var setter = data2 ? baseSetData : setData2; return setWrapToString(setter(result2, newData), func, bitmask); } function customDefaultsAssignIn(objValue, srcValue, key, object) { if (objValue === undefined2 || eq(objValue, objectProto[key]) && !hasOwnProperty3.call(object, key)) { return srcValue; } return objValue; } function customDefaultsMerge(objValue, srcValue, key, object, source, stack) { if (isObject3(objValue) && isObject3(srcValue)) { stack.set(srcValue, objValue); baseMerge(objValue, srcValue, undefined2, customDefaultsMerge, stack); stack["delete"](srcValue); } return objValue; } function customOmitClone(value) { return isPlainObject(value) ? undefined2 : value; } function equalArrays(array, other, bitmask, customizer, equalFunc, stack) { var isPartial = bitmask & COMPARE_PARTIAL_FLAG, arrLength = array.length, othLength = other.length; if (arrLength != othLength && !(isPartial && othLength > arrLength)) { return false; } var arrStacked = stack.get(array); var othStacked = stack.get(other); if (arrStacked && othStacked) { return arrStacked == other && othStacked == array; } var index = -1, result2 = true, seen = bitmask & COMPARE_UNORDERED_FLAG ? new SetCache() : undefined2; stack.set(array, other); stack.set(other, array); while (++index < arrLength) { var arrValue = array[index], othValue = other[index]; if (customizer) { var compared = isPartial ? customizer(othValue, arrValue, index, other, array, stack) : customizer(arrValue, othValue, index, array, other, stack); } if (compared !== undefined2) { if (compared) { continue; } result2 = false; break; } if (seen) { if (!arraySome(other, function(othValue2, othIndex) { if (!cacheHas(seen, othIndex) && (arrValue === othValue2 || equalFunc(arrValue, othValue2, bitmask, customizer, stack))) { return seen.push(othIndex); } })) { result2 = false; break; } } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { result2 = false; break; } } stack["delete"](array); stack["delete"](other); return result2; } function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) { switch (tag) { case dataViewTag: if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) { return false; } object = object.buffer; other = other.buffer; case arrayBufferTag: if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array2(object), new Uint8Array2(other))) { return false; } return true; case boolTag: case dateTag: case numberTag: return eq(+object, +other); case errorTag: return object.name == other.name && object.message == other.message; case regexpTag: case stringTag: return object == other + ""; case mapTag: var convert = mapToArray; case setTag: var isPartial = bitmask & COMPARE_PARTIAL_FLAG; convert || (convert = setToArray); if (object.size != other.size && !isPartial) { return false; } var stacked = stack.get(object); if (stacked) { return stacked == other; } bitmask |= COMPARE_UNORDERED_FLAG; stack.set(object, other); var result2 = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack); stack["delete"](object); return result2; case symbolTag: if (symbolValueOf) { return symbolValueOf.call(object) == symbolValueOf.call(other); } } return false; } function equalObjects(object, other, bitmask, customizer, equalFunc, stack) { var isPartial = bitmask & COMPARE_PARTIAL_FLAG, objProps = getAllKeys(object), objLength = objProps.length, othProps = getAllKeys(other), othLength = othProps.length; if (objLength != othLength && !isPartial) { return false; } var index = objLength; while (index--) { var key = objProps[index]; if (!(isPartial ? key in other : hasOwnProperty3.call(other, key))) { return false; } } var objStacked = stack.get(object); var othStacked = stack.get(other); if (objStacked && othStacked) { return objStacked == other && othStacked == object; } var result2 = true; stack.set(object, other); stack.set(other, object); var skipCtor = isPartial; while (++index < objLength) { key = objProps[index]; var objValue = object[key], othValue = other[key]; if (customizer) { var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack); } if (!(compared === undefined2 ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) { result2 = false; break; } skipCtor || (skipCtor = key == "constructor"); } if (result2 && !skipCtor) { var objCtor = object.constructor, othCtor = other.constructor; if (objCtor != othCtor && ("constructor" in object && "constructor" in other) && !(typeof objCtor == "function" && objCtor instanceof objCtor && typeof othCtor == "function" && othCtor instanceof othCtor)) { result2 = false; } } stack["delete"](object); stack["delete"](other); return result2; } function flatRest(func) { return setToString(overRest(func, undefined2, flatten), func + ""); } function getAllKeys(object) { return baseGetAllKeys(object, keys, getSymbols); } function getAllKeysIn(object) { return baseGetAllKeys(object, keysIn, getSymbolsIn); } var getData2 = !metaMap ? noop : function(func) { return metaMap.get(func); }; function getFuncName(func) { var result2 = func.name + "", array = realNames[result2], length = hasOwnProperty3.call(realNames, result2) ? array.length : 0; while (length--) { var data2 = array[length], otherFunc = data2.func; if (otherFunc == null || otherFunc == func) { return data2.name; } } return result2; } function getHolder(func) { var object = hasOwnProperty3.call(lodash, "placeholder") ? lodash : func; return object.placeholder; } function getIteratee() { var result2 = lodash.iteratee || iteratee; result2 = result2 === iteratee ? baseIteratee : result2; return arguments.length ? result2(arguments[0], arguments[1]) : result2; } function getMapData(map2, key) { var data2 = map2.__data__; return isKeyable(key) ? data2[typeof key == "string" ? "string" : "hash"] : data2.map; } function getMatchData(object) { var result2 = keys(object), length = result2.length; while (length--) { var key = result2[length], value = object[key]; result2[length] = [key, value, isStrictComparable(value)]; } return result2; } function getNative(object, key) { var value = getValue(object, key); return baseIsNative(value) ? value : undefined2; } function getRawTag(value) { var isOwn = hasOwnProperty3.call(value, symToStringTag), tag = value[symToStringTag]; try { value[symToStringTag] = undefined2; var unmasked = true; } catch (e3) { } var result2 = nativeObjectToString.call(value); if (unmasked) { if (isOwn) { value[symToStringTag] = tag; } else { delete value[symToStringTag]; } } return result2; } var getSymbols = !nativeGetSymbols ? stubArray : function(object) { if (object == null) { return []; } object = Object2(object); return arrayFilter(nativeGetSymbols(object), function(symbol) { return propertyIsEnumerable.call(object, symbol); }); }; var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) { var result2 = []; while (object) { arrayPush(result2, getSymbols(object)); object = getPrototype(object); } return result2; }; var getTag = baseGetTag; if (DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag || Map2 && getTag(new Map2()) != mapTag || Promise2 && getTag(Promise2.resolve()) != promiseTag || Set2 && getTag(new Set2()) != setTag || WeakMap2 && getTag(new WeakMap2()) != weakMapTag) { getTag = function(value) { var result2 = baseGetTag(value), Ctor = result2 == objectTag ? value.constructor : undefined2, ctorString = Ctor ? toSource(Ctor) : ""; if (ctorString) { switch (ctorString) { case dataViewCtorString: return dataViewTag; case mapCtorString: return mapTag; case promiseCtorString: return promiseTag; case setCtorString: return setTag; case weakMapCtorString: return weakMapTag; } } return result2; }; } function getView(start5, end2, transforms) { var index = -1, length = transforms.length; while (++index < length) { var data2 = transforms[index], size3 = data2.size; switch (data2.type) { case "drop": start5 += size3; break; case "dropRight": end2 -= size3; break; case "take": end2 = nativeMin(end2, start5 + size3); break; case "takeRight": start5 = nativeMax(start5, end2 - size3); break; } } return { "start": start5, "end": end2 }; } function getWrapDetails(source) { var match = source.match(reWrapDetails); return match ? match[1].split(reSplitDetails) : []; } function hasPath(object, path, hasFunc) { path = castPath(path, object); var index = -1, length = path.length, result2 = false; while (++index < length) { var key = toKey(path[index]); if (!(result2 = object != null && hasFunc(object, key))) { break; } object = object[key]; } if (result2 || ++index != length) { return result2; } length = object == null ? 0 : object.length; return !!length && isLength(length) && isIndex(key, length) && (isArray2(object) || isArguments(object)); } function initCloneArray(array) { var length = array.length, result2 = new array.constructor(length); if (length && typeof array[0] == "string" && hasOwnProperty3.call(array, "index")) { result2.index = array.index; result2.input = array.input; } return result2; } function initCloneObject(object) { return typeof object.constructor == "function" && !isPrototype(object) ? baseCreate(getPrototype(object)) : {}; } function initCloneByTag(object, tag, isDeep) { var Ctor = object.constructor; switch (tag) { case arrayBufferTag: return cloneArrayBuffer(object); case boolTag: case dateTag: return new Ctor(+object); case dataViewTag: return cloneDataView(object, isDeep); case float32Tag: case float64Tag: case int8Tag: case int16Tag: case int32Tag: case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag: return cloneTypedArray(object, isDeep); case mapTag: return new Ctor(); case numberTag: case stringTag: return new Ctor(object); case regexpTag: return cloneRegExp(object); case setTag: return new Ctor(); case symbolTag: return cloneSymbol(object); } } function insertWrapDetails(source, details) { var length = details.length; if (!length) { return source; } var lastIndex = length - 1; details[lastIndex] = (length > 1 ? "& " : "") + details[lastIndex]; details = details.join(length > 2 ? ", " : " "); return source.replace(reWrapComment, "{\n/* [wrapped with " + details + "] */\n"); } function isFlattenable(value) { return isArray2(value) || isArguments(value) || !!(spreadableSymbol && value && value[spreadableSymbol]); } function isIndex(value, length) { var type = typeof value; length = length == null ? MAX_SAFE_INTEGER : length; return !!length && (type == "number" || type != "symbol" && reIsUint.test(value)) && (value > -1 && value % 1 == 0 && value < length); } function isIterateeCall(value, index, object) { if (!isObject3(object)) { return false; } var type = typeof index; if (type == "number" ? isArrayLike(object) && isIndex(index, object.length) : type == "string" && index in object) { return eq(object[index], value); } return false; } function isKey(value, object) { if (isArray2(value)) { return false; } var type = typeof value; if (type == "number" || type == "symbol" || type == "boolean" || value == null || isSymbol2(value)) { return true; } return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object != null && value in Object2(object); } function isKeyable(value) { var type = typeof value; return type == "string" || type == "number" || type == "symbol" || type == "boolean" ? value !== "__proto__" : value === null; } function isLaziable(func) { var funcName = getFuncName(func), other = lodash[funcName]; if (typeof other != "function" || !(funcName in LazyWrapper.prototype)) { return false; } if (func === other) { return true; } var data2 = getData2(other); return !!data2 && func === data2[0]; } function isMasked(func) { return !!maskSrcKey && maskSrcKey in func; } var isMaskable = coreJsData ? isFunction : stubFalse; function isPrototype(value) { var Ctor = value && value.constructor, proto = typeof Ctor == "function" && Ctor.prototype || objectProto; return value === proto; } function isStrictComparable(value) { return value === value && !isObject3(value); } function matchesStrictComparable(key, srcValue) { return function(object) { if (object == null) { return false; } return object[key] === srcValue && (srcValue !== undefined2 || key in Object2(object)); }; } function memoizeCapped(func) { var result2 = memoize(func, function(key) { if (cache2.size === MAX_MEMOIZE_SIZE) { cache2.clear(); } return key; }); var cache2 = result2.cache; return result2; } function mergeData(data2, source) { var bitmask = data2[1], srcBitmask = source[1], newBitmask = bitmask | srcBitmask, isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG); var isCombo = srcBitmask == WRAP_ARY_FLAG && bitmask == WRAP_CURRY_FLAG || srcBitmask == WRAP_ARY_FLAG && bitmask == WRAP_REARG_FLAG && data2[7].length <= source[8] || srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG) && source[7].length <= source[8] && bitmask == WRAP_CURRY_FLAG; if (!(isCommon || isCombo)) { return data2; } if (srcBitmask & WRAP_BIND_FLAG) { data2[2] = source[2]; newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG; } var value = source[3]; if (value) { var partials = data2[3]; data2[3] = partials ? composeArgs(partials, value, source[4]) : value; data2[4] = partials ? replaceHolders(data2[3], PLACEHOLDER) : source[4]; } value = source[5]; if (value) { partials = data2[5]; data2[5] = partials ? composeArgsRight(partials, value, source[6]) : value; data2[6] = partials ? replaceHolders(data2[5], PLACEHOLDER) : source[6]; } value = source[7]; if (value) { data2[7] = value; } if (srcBitmask & WRAP_ARY_FLAG) { data2[8] = data2[8] == null ? source[8] : nativeMin(data2[8], source[8]); } if (data2[9] == null) { data2[9] = source[9]; } data2[0] = source[0]; data2[1] = newBitmask; return data2; } function nativeKeysIn(object) { var result2 = []; if (object != null) { for (var key in Object2(object)) { result2.push(key); } } return result2; } function objectToString2(value) { return nativeObjectToString.call(value); } function overRest(func, start5, transform2) { start5 = nativeMax(start5 === undefined2 ? func.length - 1 : start5, 0); return function() { var args = arguments, index = -1, length = nativeMax(args.length - start5, 0), array = Array2(length); while (++index < length) { array[index] = args[start5 + index]; } index = -1; var otherArgs = Array2(start5 + 1); while (++index < start5) { otherArgs[index] = args[index]; } otherArgs[start5] = transform2(array); return apply(func, this, otherArgs); }; } function parent(object, path) { return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1)); } function reorder(array, indexes) { var arrLength = array.length, length = nativeMin(indexes.length, arrLength), oldArray = copyArray(array); while (length--) { var index = indexes[length]; array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined2; } return array; } function safeGet(object, key) { if (key === "constructor" && typeof object[key] === "function") { return; } if (key == "__proto__") { return; } return object[key]; } var setData2 = shortOut(baseSetData); var setTimeout2 = ctxSetTimeout || function(func, wait) { return root.setTimeout(func, wait); }; var setToString = shortOut(baseSetToString); function setWrapToString(wrapper, reference2, bitmask) { var source = reference2 + ""; return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask))); } function shortOut(func) { var count = 0, lastCalled = 0; return function() { var stamp = nativeNow(), remaining = HOT_SPAN - (stamp - lastCalled); lastCalled = stamp; if (remaining > 0) { if (++count >= HOT_COUNT) { return arguments[0]; } } else { count = 0; } return func.apply(undefined2, arguments); }; } function shuffleSelf(array, size3) { var index = -1, length = array.length, lastIndex = length - 1; size3 = size3 === undefined2 ? length : size3; while (++index < size3) { var rand = baseRandom(index, lastIndex), value = array[rand]; array[rand] = array[index]; array[index] = value; } array.length = size3; return array; } var stringToPath = memoizeCapped(function(string) { var result2 = []; if (string.charCodeAt(0) === 46) { result2.push(""); } string.replace(rePropName, function(match, number, quote, subString) { result2.push(quote ? subString.replace(reEscapeChar, "$1") : number || match); }); return result2; }); function toKey(value) { if (typeof value == "string" || isSymbol2(value)) { return value; } var result2 = value + ""; return result2 == "0" && 1 / value == -INFINITY ? "-0" : result2; } function toSource(func) { if (func != null) { try { return funcToString.call(func); } catch (e3) { } try { return func + ""; } catch (e3) { } } return ""; } function updateWrapDetails(details, bitmask) { arrayEach(wrapFlags, function(pair) { var value = "_." + pair[0]; if (bitmask & pair[1] && !arrayIncludes(details, value)) { details.push(value); } }); return details.sort(); } function wrapperClone(wrapper) { if (wrapper instanceof LazyWrapper) { return wrapper.clone(); } var result2 = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__); result2.__actions__ = copyArray(wrapper.__actions__); result2.__index__ = wrapper.__index__; result2.__values__ = wrapper.__values__; return result2; } function chunk(array, size3, guard) { if (guard ? isIterateeCall(array, size3, guard) : size3 === undefined2) { size3 = 1; } else { size3 = nativeMax(toInteger(size3), 0); } var length = array == null ? 0 : array.length; if (!length || size3 < 1) { return []; } var index = 0, resIndex = 0, result2 = Array2(nativeCeil(length / size3)); while (index < length) { result2[resIndex++] = baseSlice(array, index, index += size3); } return result2; } function compact(array) { var index = -1, length = array == null ? 0 : array.length, resIndex = 0, result2 = []; while (++index < length) { var value = array[index]; if (value) { result2[resIndex++] = value; } } return result2; } function concat() { var length = arguments.length; if (!length) { return []; } var args = Array2(length - 1), array = arguments[0], index = length; while (index--) { args[index - 1] = arguments[index]; } return arrayPush(isArray2(array) ? copyArray(array) : [array], baseFlatten(args, 1)); } var difference = baseRest(function(array, values2) { return isArrayLikeObject(array) ? baseDifference(array, baseFlatten(values2, 1, isArrayLikeObject, true)) : []; }); var differenceBy = baseRest(function(array, values2) { var iteratee2 = last(values2); if (isArrayLikeObject(iteratee2)) { iteratee2 = undefined2; } return isArrayLikeObject(array) ? baseDifference(array, baseFlatten(values2, 1, isArrayLikeObject, true), getIteratee(iteratee2, 2)) : []; }); var differenceWith = baseRest(function(array, values2) { var comparator = last(values2); if (isArrayLikeObject(comparator)) { comparator = undefined2; } return isArrayLikeObject(array) ? baseDifference(array, baseFlatten(values2, 1, isArrayLikeObject, true), undefined2, comparator) : []; }); function drop(array, n3, guard) { var length = array == null ? 0 : array.length; if (!length) { return []; } n3 = guard || n3 === undefined2 ? 1 : toInteger(n3); return baseSlice(array, n3 < 0 ? 0 : n3, length); } function dropRight(array, n3, guard) { var length = array == null ? 0 : array.length; if (!length) { return []; } n3 = guard || n3 === undefined2 ? 1 : toInteger(n3); n3 = length - n3; return baseSlice(array, 0, n3 < 0 ? 0 : n3); } function dropRightWhile(array, predicate) { return array && array.length ? baseWhile(array, getIteratee(predicate, 3), true, true) : []; } function dropWhile(array, predicate) { return array && array.length ? baseWhile(array, getIteratee(predicate, 3), true) : []; } function fill(array, value, start5, end2) { var length = array == null ? 0 : array.length; if (!length) { return []; } if (start5 && typeof start5 != "number" && isIterateeCall(array, value, start5)) { start5 = 0; end2 = length; } return baseFill(array, value, start5, end2); } function findIndex3(array, predicate, fromIndex) { var length = array == null ? 0 : array.length; if (!length) { return -1; } var index = fromIndex == null ? 0 : toInteger(fromIndex); if (index < 0) { index = nativeMax(length + index, 0); } return baseFindIndex(array, getIteratee(predicate, 3), index); } function findLastIndex(array, predicate, fromIndex) { var length = array == null ? 0 : array.length; if (!length) { return -1; } var index = length - 1; if (fromIndex !== undefined2) { index = toInteger(fromIndex); index = fromIndex < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1); } return baseFindIndex(array, getIteratee(predicate, 3), index, true); } function flatten(array) { var length = array == null ? 0 : array.length; return length ? baseFlatten(array, 1) : []; } function flattenDeep(array) { var length = array == null ? 0 : array.length; return length ? baseFlatten(array, INFINITY) : []; } function flattenDepth(array, depth) { var length = array == null ? 0 : array.length; if (!length) { return []; } depth = depth === undefined2 ? 1 : toInteger(depth); return baseFlatten(array, depth); } function fromPairs(pairs) { var index = -1, length = pairs == null ? 0 : pairs.length, result2 = {}; while (++index < length) { var pair = pairs[index]; result2[pair[0]] = pair[1]; } return result2; } function head(array) { return array && array.length ? array[0] : undefined2; } function indexOf2(array, value, fromIndex) { var length = array == null ? 0 : array.length; if (!length) { return -1; } var index = fromIndex == null ? 0 : toInteger(fromIndex); if (index < 0) { index = nativeMax(length + index, 0); } return baseIndexOf(array, value, index); } function initial(array) { var length = array == null ? 0 : array.length; return length ? baseSlice(array, 0, -1) : []; } var intersection = baseRest(function(arrays) { var mapped = arrayMap(arrays, castArrayLikeObject); return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped) : []; }); var intersectionBy = baseRest(function(arrays) { var iteratee2 = last(arrays), mapped = arrayMap(arrays, castArrayLikeObject); if (iteratee2 === last(mapped)) { iteratee2 = undefined2; } else { mapped.pop(); } return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped, getIteratee(iteratee2, 2)) : []; }); var intersectionWith = baseRest(function(arrays) { var comparator = last(arrays), mapped = arrayMap(arrays, castArrayLikeObject); comparator = typeof comparator == "function" ? comparator : undefined2; if (comparator) { mapped.pop(); } return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped, undefined2, comparator) : []; }); function join(array, separator) { return array == null ? "" : nativeJoin.call(array, separator); } function last(array) { var length = array == null ? 0 : array.length; return length ? array[length - 1] : undefined2; } function lastIndexOf(array, value, fromIndex) { var length = array == null ? 0 : array.length; if (!length) { return -1; } var index = length; if (fromIndex !== undefined2) { index = toInteger(fromIndex); index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1); } return value === value ? strictLastIndexOf(array, value, index) : baseFindIndex(array, baseIsNaN, index, true); } function nth(array, n3) { return array && array.length ? baseNth(array, toInteger(n3)) : undefined2; } var pull = baseRest(pullAll); function pullAll(array, values2) { return array && array.length && values2 && values2.length ? basePullAll(array, values2) : array; } function pullAllBy(array, values2, iteratee2) { return array && array.length && values2 && values2.length ? basePullAll(array, values2, getIteratee(iteratee2, 2)) : array; } function pullAllWith(array, values2, comparator) { return array && array.length && values2 && values2.length ? basePullAll(array, values2, undefined2, comparator) : array; } var pullAt = flatRest(function(array, indexes) { var length = array == null ? 0 : array.length, result2 = baseAt(array, indexes); basePullAt(array, arrayMap(indexes, function(index) { return isIndex(index, length) ? +index : index; }).sort(compareAscending)); return result2; }); function remove(array, predicate) { var result2 = []; if (!(array && array.length)) { return result2; } var index = -1, indexes = [], length = array.length; predicate = getIteratee(predicate, 3); while (++index < length) { var value = array[index]; if (predicate(value, index, array)) { result2.push(value); indexes.push(index); } } basePullAt(array, indexes); return result2; } function reverse(array) { return array == null ? array : nativeReverse.call(array); } function slice(array, start5, end2) { var length = array == null ? 0 : array.length; if (!length) { return []; } if (end2 && typeof end2 != "number" && isIterateeCall(array, start5, end2)) { start5 = 0; end2 = length; } else { start5 = start5 == null ? 0 : toInteger(start5); end2 = end2 === undefined2 ? length : toInteger(end2); } return baseSlice(array, start5, end2); } function sortedIndex(array, value) { return baseSortedIndex(array, value); } function sortedIndexBy(array, value, iteratee2) { return baseSortedIndexBy(array, value, getIteratee(iteratee2, 2)); } function sortedIndexOf(array, value) { var length = array == null ? 0 : array.length; if (length) { var index = baseSortedIndex(array, value); if (index < length && eq(array[index], value)) { return index; } } return -1; } function sortedLastIndex(array, value) { return baseSortedIndex(array, value, true); } function sortedLastIndexBy(array, value, iteratee2) { return baseSortedIndexBy(array, value, getIteratee(iteratee2, 2), true); } function sortedLastIndexOf(array, value) { var length = array == null ? 0 : array.length; if (length) { var index = baseSortedIndex(array, value, true) - 1; if (eq(array[index], value)) { return index; } } return -1; } function sortedUniq(array) { return array && array.length ? baseSortedUniq(array) : []; } function sortedUniqBy(array, iteratee2) { return array && array.length ? baseSortedUniq(array, getIteratee(iteratee2, 2)) : []; } function tail(array) { var length = array == null ? 0 : array.length; return length ? baseSlice(array, 1, length) : []; } function take(array, n3, guard) { if (!(array && array.length)) { return []; } n3 = guard || n3 === undefined2 ? 1 : toInteger(n3); return baseSlice(array, 0, n3 < 0 ? 0 : n3); } function takeRight(array, n3, guard) { var length = array == null ? 0 : array.length; if (!length) { return []; } n3 = guard || n3 === undefined2 ? 1 : toInteger(n3); n3 = length - n3; return baseSlice(array, n3 < 0 ? 0 : n3, length); } function takeRightWhile(array, predicate) { return array && array.length ? baseWhile(array, getIteratee(predicate, 3), false, true) : []; } function takeWhile(array, predicate) { return array && array.length ? baseWhile(array, getIteratee(predicate, 3)) : []; } var union = baseRest(function(arrays) { return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true)); }); var unionBy = baseRest(function(arrays) { var iteratee2 = last(arrays); if (isArrayLikeObject(iteratee2)) { iteratee2 = undefined2; } return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee2, 2)); }); var unionWith = baseRest(function(arrays) { var comparator = last(arrays); comparator = typeof comparator == "function" ? comparator : undefined2; return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined2, comparator); }); function uniq(array) { return array && array.length ? baseUniq(array) : []; } function uniqBy(array, iteratee2) { return array && array.length ? baseUniq(array, getIteratee(iteratee2, 2)) : []; } function uniqWith(array, comparator) { comparator = typeof comparator == "function" ? comparator : undefined2; return array && array.length ? baseUniq(array, undefined2, comparator) : []; } function unzip(array) { if (!(array && array.length)) { return []; } var length = 0; array = arrayFilter(array, function(group) { if (isArrayLikeObject(group)) { length = nativeMax(group.length, length); return true; } }); return baseTimes(length, function(index) { return arrayMap(array, baseProperty(index)); }); } function unzipWith(array, iteratee2) { if (!(array && array.length)) { return []; } var result2 = unzip(array); if (iteratee2 == null) { return result2; } return arrayMap(result2, function(group) { return apply(iteratee2, undefined2, group); }); } var without = baseRest(function(array, values2) { return isArrayLikeObject(array) ? baseDifference(array, values2) : []; }); var xor = baseRest(function(arrays) { return baseXor(arrayFilter(arrays, isArrayLikeObject)); }); var xorBy = baseRest(function(arrays) { var iteratee2 = last(arrays); if (isArrayLikeObject(iteratee2)) { iteratee2 = undefined2; } return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee2, 2)); }); var xorWith = baseRest(function(arrays) { var comparator = last(arrays); comparator = typeof comparator == "function" ? comparator : undefined2; return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined2, comparator); }); var zip = baseRest(unzip); function zipObject(props, values2) { return baseZipObject(props || [], values2 || [], assignValue); } function zipObjectDeep(props, values2) { return baseZipObject(props || [], values2 || [], baseSet); } var zipWith = baseRest(function(arrays) { var length = arrays.length, iteratee2 = length > 1 ? arrays[length - 1] : undefined2; iteratee2 = typeof iteratee2 == "function" ? (arrays.pop(), iteratee2) : undefined2; return unzipWith(arrays, iteratee2); }); function chain(value) { var result2 = lodash(value); result2.__chain__ = true; return result2; } function tap(value, interceptor2) { interceptor2(value); return value; } function thru(value, interceptor2) { return interceptor2(value); } var wrapperAt = flatRest(function(paths) { var length = paths.length, start5 = length ? paths[0] : 0, value = this.__wrapped__, interceptor2 = function(object) { return baseAt(object, paths); }; if (length > 1 || this.__actions__.length || !(value instanceof LazyWrapper) || !isIndex(start5)) { return this.thru(interceptor2); } value = value.slice(start5, +start5 + (length ? 1 : 0)); value.__actions__.push({ "func": thru, "args": [interceptor2], "thisArg": undefined2 }); return new LodashWrapper(value, this.__chain__).thru(function(array) { if (length && !array.length) { array.push(undefined2); } return array; }); }); function wrapperChain() { return chain(this); } function wrapperCommit() { return new LodashWrapper(this.value(), this.__chain__); } function wrapperNext() { if (this.__values__ === undefined2) { this.__values__ = toArray2(this.value()); } var done = this.__index__ >= this.__values__.length, value = done ? undefined2 : this.__values__[this.__index__++]; return { "done": done, "value": value }; } function wrapperToIterator() { return this; } function wrapperPlant(value) { var result2, parent2 = this; while (parent2 instanceof baseLodash) { var clone3 = wrapperClone(parent2); clone3.__index__ = 0; clone3.__values__ = undefined2; if (result2) { previous.__wrapped__ = clone3; } else { result2 = clone3; } var previous = clone3; parent2 = parent2.__wrapped__; } previous.__wrapped__ = value; return result2; } function wrapperReverse() { var value = this.__wrapped__; if (value instanceof LazyWrapper) { var wrapped = value; if (this.__actions__.length) { wrapped = new LazyWrapper(this); } wrapped = wrapped.reverse(); wrapped.__actions__.push({ "func": thru, "args": [reverse], "thisArg": undefined2 }); return new LodashWrapper(wrapped, this.__chain__); } return this.thru(reverse); } function wrapperValue() { return baseWrapperValue(this.__wrapped__, this.__actions__); } var countBy = createAggregator(function(result2, value, key) { if (hasOwnProperty3.call(result2, key)) { ++result2[key]; } else { baseAssignValue(result2, key, 1); } }); function every(collection, predicate, guard) { var func = isArray2(collection) ? arrayEvery : baseEvery; if (guard && isIterateeCall(collection, predicate, guard)) { predicate = undefined2; } return func(collection, getIteratee(predicate, 3)); } function filter(collection, predicate) { var func = isArray2(collection) ? arrayFilter : baseFilter; return func(collection, getIteratee(predicate, 3)); } var find = createFind(findIndex3); var findLast = createFind(findLastIndex); function flatMap(collection, iteratee2) { return baseFlatten(map(collection, iteratee2), 1); } function flatMapDeep(collection, iteratee2) { return baseFlatten(map(collection, iteratee2), INFINITY); } function flatMapDepth(collection, iteratee2, depth) { depth = depth === undefined2 ? 1 : toInteger(depth); return baseFlatten(map(collection, iteratee2), depth); } function forEach(collection, iteratee2) { var func = isArray2(collection) ? arrayEach : baseEach; return func(collection, getIteratee(iteratee2, 3)); } function forEachRight(collection, iteratee2) { var func = isArray2(collection) ? arrayEachRight : baseEachRight; return func(collection, getIteratee(iteratee2, 3)); } var groupBy = createAggregator(function(result2, value, key) { if (hasOwnProperty3.call(result2, key)) { result2[key].push(value); } else { baseAssignValue(result2, key, [value]); } }); function includes(collection, value, fromIndex, guard) { collection = isArrayLike(collection) ? collection : values(collection); fromIndex = fromIndex && !guard ? toInteger(fromIndex) : 0; var length = collection.length; if (fromIndex < 0) { fromIndex = nativeMax(length + fromIndex, 0); } return isString2(collection) ? fromIndex <= length && collection.indexOf(value, fromIndex) > -1 : !!length && baseIndexOf(collection, value, fromIndex) > -1; } var invokeMap = baseRest(function(collection, path, args) { var index = -1, isFunc = typeof path == "function", result2 = isArrayLike(collection) ? Array2(collection.length) : []; baseEach(collection, function(value) { result2[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args); }); return result2; }); var keyBy2 = createAggregator(function(result2, value, key) { baseAssignValue(result2, key, value); }); function map(collection, iteratee2) { var func = isArray2(collection) ? arrayMap : baseMap; return func(collection, getIteratee(iteratee2, 3)); } function orderBy(collection, iteratees, orders, guard) { if (collection == null) { return []; } if (!isArray2(iteratees)) { iteratees = iteratees == null ? [] : [iteratees]; } orders = guard ? undefined2 : orders; if (!isArray2(orders)) { orders = orders == null ? [] : [orders]; } return baseOrderBy(collection, iteratees, orders); } var partition = createAggregator(function(result2, value, key) { result2[key ? 0 : 1].push(value); }, function() { return [[], []]; }); function reduce(collection, iteratee2, accumulator) { var func = isArray2(collection) ? arrayReduce : baseReduce, initAccum = arguments.length < 3; return func(collection, getIteratee(iteratee2, 4), accumulator, initAccum, baseEach); } function reduceRight(collection, iteratee2, accumulator) { var func = isArray2(collection) ? arrayReduceRight : baseReduce, initAccum = arguments.length < 3; return func(collection, getIteratee(iteratee2, 4), accumulator, initAccum, baseEachRight); } function reject(collection, predicate) { var func = isArray2(collection) ? arrayFilter : baseFilter; return func(collection, negate(getIteratee(predicate, 3))); } function sample(collection) { var func = isArray2(collection) ? arraySample : baseSample; return func(collection); } function sampleSize(collection, n3, guard) { if (guard ? isIterateeCall(collection, n3, guard) : n3 === undefined2) { n3 = 1; } else { n3 = toInteger(n3); } var func = isArray2(collection) ? arraySampleSize : baseSampleSize; return func(collection, n3); } function shuffle(collection) { var func = isArray2(collection) ? arrayShuffle : baseShuffle; return func(collection); } function size2(collection) { if (collection == null) { return 0; } if (isArrayLike(collection)) { return isString2(collection) ? stringSize(collection) : collection.length; } var tag = getTag(collection); if (tag == mapTag || tag == setTag) { return collection.size; } return baseKeys(collection).length; } function some(collection, predicate, guard) { var func = isArray2(collection) ? arraySome : baseSome; if (guard && isIterateeCall(collection, predicate, guard)) { predicate = undefined2; } return func(collection, getIteratee(predicate, 3)); } var sortBy = baseRest(function(collection, iteratees) { if (collection == null) { return []; } var length = iteratees.length; if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) { iteratees = []; } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) { iteratees = [iteratees[0]]; } return baseOrderBy(collection, baseFlatten(iteratees, 1), []); }); var now2 = ctxNow || function() { return root.Date.now(); }; function after(n3, func) { if (typeof func != "function") { throw new TypeError2(FUNC_ERROR_TEXT); } n3 = toInteger(n3); return function() { if (--n3 < 1) { return func.apply(this, arguments); } }; } function ary(func, n3, guard) { n3 = guard ? undefined2 : n3; n3 = func && n3 == null ? func.length : n3; return createWrap(func, WRAP_ARY_FLAG, undefined2, undefined2, undefined2, undefined2, n3); } function before(n3, func) { var result2; if (typeof func != "function") { throw new TypeError2(FUNC_ERROR_TEXT); } n3 = toInteger(n3); return function() { if (--n3 > 0) { result2 = func.apply(this, arguments); } if (n3 <= 1) { func = undefined2; } return result2; }; } var bind4 = baseRest(function(func, thisArg, partials) { var bitmask = WRAP_BIND_FLAG; if (partials.length) { var holders = replaceHolders(partials, getHolder(bind4)); bitmask |= WRAP_PARTIAL_FLAG; } return createWrap(func, bitmask, thisArg, partials, holders); }); var bindKey = baseRest(function(object, key, partials) { var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG; if (partials.length) { var holders = replaceHolders(partials, getHolder(bindKey)); bitmask |= WRAP_PARTIAL_FLAG; } return createWrap(key, bitmask, object, partials, holders); }); function curry(func, arity, guard) { arity = guard ? undefined2 : arity; var result2 = createWrap(func, WRAP_CURRY_FLAG, undefined2, undefined2, undefined2, undefined2, undefined2, arity); result2.placeholder = curry.placeholder; return result2; } function curryRight(func, arity, guard) { arity = guard ? undefined2 : arity; var result2 = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined2, undefined2, undefined2, undefined2, undefined2, arity); result2.placeholder = curryRight.placeholder; return result2; } function debounce4(func, wait, options) { var lastArgs, lastThis, maxWait, result2, timerId, lastCallTime, lastInvokeTime = 0, leading = false, maxing = false, trailing = true; if (typeof func != "function") { throw new TypeError2(FUNC_ERROR_TEXT); } wait = toNumber(wait) || 0; if (isObject3(options)) { leading = !!options.leading; maxing = "maxWait" in options; maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait; trailing = "trailing" in options ? !!options.trailing : trailing; } function invokeFunc(time) { var args = lastArgs, thisArg = lastThis; lastArgs = lastThis = undefined2; lastInvokeTime = time; result2 = func.apply(thisArg, args); return result2; } function leadingEdge(time) { lastInvokeTime = time; timerId = setTimeout2(timerExpired, wait); return leading ? invokeFunc(time) : result2; } function remainingWait(time) { var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime, timeWaiting = wait - timeSinceLastCall; return maxing ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) : timeWaiting; } function shouldInvoke(time) { var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime; return lastCallTime === undefined2 || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait; } function timerExpired() { var time = now2(); if (shouldInvoke(time)) { return trailingEdge(time); } timerId = setTimeout2(timerExpired, remainingWait(time)); } function trailingEdge(time) { timerId = undefined2; if (trailing && lastArgs) { return invokeFunc(time); } lastArgs = lastThis = undefined2; return result2; } function cancel() { if (timerId !== undefined2) { clearTimeout2(timerId); } lastInvokeTime = 0; lastArgs = lastCallTime = lastThis = timerId = undefined2; } function flush() { return timerId === undefined2 ? result2 : trailingEdge(now2()); } function debounced() { var time = now2(), isInvoking = shouldInvoke(time); lastArgs = arguments; lastThis = this; lastCallTime = time; if (isInvoking) { if (timerId === undefined2) { return leadingEdge(lastCallTime); } if (maxing) { clearTimeout2(timerId); timerId = setTimeout2(timerExpired, wait); return invokeFunc(lastCallTime); } } if (timerId === undefined2) { timerId = setTimeout2(timerExpired, wait); } return result2; } debounced.cancel = cancel; debounced.flush = flush; return debounced; } var defer = baseRest(function(func, args) { return baseDelay(func, 1, args); }); var delay3 = baseRest(function(func, wait, args) { return baseDelay(func, toNumber(wait) || 0, args); }); function flip2(func) { return createWrap(func, WRAP_FLIP_FLAG); } function memoize(func, resolver) { if (typeof func != "function" || resolver != null && typeof resolver != "function") { throw new TypeError2(FUNC_ERROR_TEXT); } var memoized = function() { var args = arguments, key = resolver ? resolver.apply(this, args) : args[0], cache2 = memoized.cache; if (cache2.has(key)) { return cache2.get(key); } var result2 = func.apply(this, args); memoized.cache = cache2.set(key, result2) || cache2; return result2; }; memoized.cache = new (memoize.Cache || MapCache)(); return memoized; } memoize.Cache = MapCache; function negate(predicate) { if (typeof predicate != "function") { throw new TypeError2(FUNC_ERROR_TEXT); } return function() { var args = arguments; switch (args.length) { case 0: return !predicate.call(this); case 1: return !predicate.call(this, args[0]); case 2: return !predicate.call(this, args[0], args[1]); case 3: return !predicate.call(this, args[0], args[1], args[2]); } return !predicate.apply(this, args); }; } function once2(func) { return before(2, func); } var overArgs = castRest(function(func, transforms) { transforms = transforms.length == 1 && isArray2(transforms[0]) ? arrayMap(transforms[0], baseUnary(getIteratee())) : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee())); var funcsLength = transforms.length; return baseRest(function(args) { var index = -1, length = nativeMin(args.length, funcsLength); while (++index < length) { args[index] = transforms[index].call(this, args[index]); } return apply(func, this, args); }); }); var partial = baseRest(function(func, partials) { var holders = replaceHolders(partials, getHolder(partial)); return createWrap(func, WRAP_PARTIAL_FLAG, undefined2, partials, holders); }); var partialRight = baseRest(function(func, partials) { var holders = replaceHolders(partials, getHolder(partialRight)); return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined2, partials, holders); }); var rearg = flatRest(function(func, indexes) { return createWrap(func, WRAP_REARG_FLAG, undefined2, undefined2, undefined2, indexes); }); function rest(func, start5) { if (typeof func != "function") { throw new TypeError2(FUNC_ERROR_TEXT); } start5 = start5 === undefined2 ? start5 : toInteger(start5); return baseRest(func, start5); } function spread(func, start5) { if (typeof func != "function") { throw new TypeError2(FUNC_ERROR_TEXT); } start5 = start5 == null ? 0 : nativeMax(toInteger(start5), 0); return baseRest(function(args) { var array = args[start5], otherArgs = castSlice(args, 0, start5); if (array) { arrayPush(otherArgs, array); } return apply(func, this, otherArgs); }); } function throttle2(func, wait, options) { var leading = true, trailing = true; if (typeof func != "function") { throw new TypeError2(FUNC_ERROR_TEXT); } if (isObject3(options)) { leading = "leading" in options ? !!options.leading : leading; trailing = "trailing" in options ? !!options.trailing : trailing; } return debounce4(func, wait, { "leading": leading, "maxWait": wait, "trailing": trailing }); } function unary(func) { return ary(func, 1); } function wrap(value, wrapper) { return partial(castFunction(wrapper), value); } function castArray() { if (!arguments.length) { return []; } var value = arguments[0]; return isArray2(value) ? value : [value]; } function clone2(value) { return baseClone(value, CLONE_SYMBOLS_FLAG); } function cloneWith(value, customizer) { customizer = typeof customizer == "function" ? customizer : undefined2; return baseClone(value, CLONE_SYMBOLS_FLAG, customizer); } function cloneDeep(value) { return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG); } function cloneDeepWith(value, customizer) { customizer = typeof customizer == "function" ? customizer : undefined2; return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer); } function conformsTo(object, source) { return source == null || baseConformsTo(object, source, keys(source)); } function eq(value, other) { return value === other || value !== value && other !== other; } var gt = createRelationalOperation(baseGt); var gte = createRelationalOperation(function(value, other) { return value >= other; }); var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) { return isObjectLike(value) && hasOwnProperty3.call(value, "callee") && !propertyIsEnumerable.call(value, "callee"); }; var isArray2 = Array2.isArray; var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer; function isArrayLike(value) { return value != null && isLength(value.length) && !isFunction(value); } function isArrayLikeObject(value) { return isObjectLike(value) && isArrayLike(value); } function isBoolean(value) { return value === true || value === false || isObjectLike(value) && baseGetTag(value) == boolTag; } var isBuffer = nativeIsBuffer || stubFalse; var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate; function isElement3(value) { return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value); } function isEmpty(value) { if (value == null) { return true; } if (isArrayLike(value) && (isArray2(value) || typeof value == "string" || typeof value.splice == "function" || isBuffer(value) || isTypedArray(value) || isArguments(value))) { return !value.length; } var tag = getTag(value); if (tag == mapTag || tag == setTag) { return !value.size; } if (isPrototype(value)) { return !baseKeys(value).length; } for (var key in value) { if (hasOwnProperty3.call(value, key)) { return false; } } return true; } function isEqual(value, other) { return baseIsEqual(value, other); } function isEqualWith(value, other, customizer) { customizer = typeof customizer == "function" ? customizer : undefined2; var result2 = customizer ? customizer(value, other) : undefined2; return result2 === undefined2 ? baseIsEqual(value, other, undefined2, customizer) : !!result2; } function isError(value) { if (!isObjectLike(value)) { return false; } var tag = baseGetTag(value); return tag == errorTag || tag == domExcTag || typeof value.message == "string" && typeof value.name == "string" && !isPlainObject(value); } function isFinite(value) { return typeof value == "number" && nativeIsFinite(value); } function isFunction(value) { if (!isObject3(value)) { return false; } var tag = baseGetTag(value); return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; } function isInteger(value) { return typeof value == "number" && value == toInteger(value); } function isLength(value) { return typeof value == "number" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; } function isObject3(value) { var type = typeof value; return value != null && (type == "object" || type == "function"); } function isObjectLike(value) { return value != null && typeof value == "object"; } var isMap2 = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap; function isMatch(object, source) { return object === source || baseIsMatch(object, source, getMatchData(source)); } function isMatchWith(object, source, customizer) { customizer = typeof customizer == "function" ? customizer : undefined2; return baseIsMatch(object, source, getMatchData(source), customizer); } function isNaN2(value) { return isNumber(value) && value != +value; } function isNative(value) { if (isMaskable(value)) { throw new Error2(CORE_ERROR_TEXT); } return baseIsNative(value); } function isNull(value) { return value === null; } function isNil(value) { return value == null; } function isNumber(value) { return typeof value == "number" || isObjectLike(value) && baseGetTag(value) == numberTag; } function isPlainObject(value) { if (!isObjectLike(value) || baseGetTag(value) != objectTag) { return false; } var proto = getPrototype(value); if (proto === null) { return true; } var Ctor = hasOwnProperty3.call(proto, "constructor") && proto.constructor; return typeof Ctor == "function" && Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString; } var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp; function isSafeInteger(value) { return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER; } var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet; function isString2(value) { return typeof value == "string" || !isArray2(value) && isObjectLike(value) && baseGetTag(value) == stringTag; } function isSymbol2(value) { return typeof value == "symbol" || isObjectLike(value) && baseGetTag(value) == symbolTag; } var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; function isUndefined(value) { return value === undefined2; } function isWeakMap(value) { return isObjectLike(value) && getTag(value) == weakMapTag; } function isWeakSet(value) { return isObjectLike(value) && baseGetTag(value) == weakSetTag; } var lt2 = createRelationalOperation(baseLt); var lte = createRelationalOperation(function(value, other) { return value <= other; }); function toArray2(value) { if (!value) { return []; } if (isArrayLike(value)) { return isString2(value) ? stringToArray(value) : copyArray(value); } if (symIterator && value[symIterator]) { return iteratorToArray(value[symIterator]()); } var tag = getTag(value), func = tag == mapTag ? mapToArray : tag == setTag ? setToArray : values; return func(value); } function toFinite(value) { if (!value) { return value === 0 ? value : 0; } value = toNumber(value); if (value === INFINITY || value === -INFINITY) { var sign = value < 0 ? -1 : 1; return sign * MAX_INTEGER; } return value === value ? value : 0; } function toInteger(value) { var result2 = toFinite(value), remainder = result2 % 1; return result2 === result2 ? remainder ? result2 - remainder : result2 : 0; } function toLength(value) { return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0; } function toNumber(value) { if (typeof value == "number") { return value; } if (isSymbol2(value)) { return NAN; } if (isObject3(value)) { var other = typeof value.valueOf == "function" ? value.valueOf() : value; value = isObject3(other) ? other + "" : other; } if (typeof value != "string") { return value === 0 ? value : +value; } value = baseTrim(value); var isBinary = reIsBinary.test(value); return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value; } function toPlainObject(value) { return copyObject(value, keysIn(value)); } function toSafeInteger(value) { return value ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER) : value === 0 ? value : 0; } function toString(value) { return value == null ? "" : baseToString(value); } var assign = createAssigner(function(object, source) { if (isPrototype(source) || isArrayLike(source)) { copyObject(source, keys(source), object); return; } for (var key in source) { if (hasOwnProperty3.call(source, key)) { assignValue(object, key, source[key]); } } }); var assignIn = createAssigner(function(object, source) { copyObject(source, keysIn(source), object); }); var assignInWith = createAssigner(function(object, source, srcIndex, customizer) { copyObject(source, keysIn(source), object, customizer); }); var assignWith = createAssigner(function(object, source, srcIndex, customizer) { copyObject(source, keys(source), object, customizer); }); var at2 = flatRest(baseAt); function create(prototype, properties) { var result2 = baseCreate(prototype); return properties == null ? result2 : baseAssign(result2, properties); } var defaults = baseRest(function(object, sources) { object = Object2(object); var index = -1; var length = sources.length; var guard = length > 2 ? sources[2] : undefined2; if (guard && isIterateeCall(sources[0], sources[1], guard)) { length = 1; } while (++index < length) { var source = sources[index]; var props = keysIn(source); var propsIndex = -1; var propsLength = props.length; while (++propsIndex < propsLength) { var key = props[propsIndex]; var value = object[key]; if (value === undefined2 || eq(value, objectProto[key]) && !hasOwnProperty3.call(object, key)) { object[key] = source[key]; } } } return object; }); var defaultsDeep = baseRest(function(args) { args.push(undefined2, customDefaultsMerge); return apply(mergeWith, undefined2, args); }); function findKey(object, predicate) { return baseFindKey(object, getIteratee(predicate, 3), baseForOwn); } function findLastKey(object, predicate) { return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight); } function forIn(object, iteratee2) { return object == null ? object : baseFor(object, getIteratee(iteratee2, 3), keysIn); } function forInRight(object, iteratee2) { return object == null ? object : baseForRight(object, getIteratee(iteratee2, 3), keysIn); } function forOwn(object, iteratee2) { return object && baseForOwn(object, getIteratee(iteratee2, 3)); } function forOwnRight(object, iteratee2) { return object && baseForOwnRight(object, getIteratee(iteratee2, 3)); } function functions(object) { return object == null ? [] : baseFunctions(object, keys(object)); } function functionsIn(object) { return object == null ? [] : baseFunctions(object, keysIn(object)); } function get3(object, path, defaultValue) { var result2 = object == null ? undefined2 : baseGet(object, path); return result2 === undefined2 ? defaultValue : result2; } function has2(object, path) { return object != null && hasPath(object, path, baseHas); } function hasIn(object, path) { return object != null && hasPath(object, path, baseHasIn); } var invert = createInverter(function(result2, value, key) { if (value != null && typeof value.toString != "function") { value = nativeObjectToString.call(value); } result2[value] = key; }, constant(identity)); var invertBy = createInverter(function(result2, value, key) { if (value != null && typeof value.toString != "function") { value = nativeObjectToString.call(value); } if (hasOwnProperty3.call(result2, value)) { result2[value].push(key); } else { result2[value] = [key]; } }, getIteratee); var invoke = baseRest(baseInvoke); function keys(object) { return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); } function keysIn(object) { return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object); } function mapKeys(object, iteratee2) { var result2 = {}; iteratee2 = getIteratee(iteratee2, 3); baseForOwn(object, function(value, key, object2) { baseAssignValue(result2, iteratee2(value, key, object2), value); }); return result2; } function mapValues2(object, iteratee2) { var result2 = {}; iteratee2 = getIteratee(iteratee2, 3); baseForOwn(object, function(value, key, object2) { baseAssignValue(result2, key, iteratee2(value, key, object2)); }); return result2; } var merge = createAssigner(function(object, source, srcIndex) { baseMerge(object, source, srcIndex); }); var mergeWith = createAssigner(function(object, source, srcIndex, customizer) { baseMerge(object, source, srcIndex, customizer); }); var omit = flatRest(function(object, paths) { var result2 = {}; if (object == null) { return result2; } var isDeep = false; paths = arrayMap(paths, function(path) { path = castPath(path, object); isDeep || (isDeep = path.length > 1); return path; }); copyObject(object, getAllKeysIn(object), result2); if (isDeep) { result2 = baseClone(result2, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone); } var length = paths.length; while (length--) { baseUnset(result2, paths[length]); } return result2; }); function omitBy(object, predicate) { return pickBy(object, negate(getIteratee(predicate))); } var pick = flatRest(function(object, paths) { return object == null ? {} : basePick(object, paths); }); function pickBy(object, predicate) { if (object == null) { return {}; } var props = arrayMap(getAllKeysIn(object), function(prop) { return [prop]; }); predicate = getIteratee(predicate); return basePickBy(object, props, function(value, path) { return predicate(value, path[0]); }); } function result(object, path, defaultValue) { path = castPath(path, object); var index = -1, length = path.length; if (!length) { length = 1; object = undefined2; } while (++index < length) { var value = object == null ? undefined2 : object[toKey(path[index])]; if (value === undefined2) { index = length; value = defaultValue; } object = isFunction(value) ? value.call(object) : value; } return object; } function set3(object, path, value) { return object == null ? object : baseSet(object, path, value); } function setWith(object, path, value, customizer) { customizer = typeof customizer == "function" ? customizer : undefined2; return object == null ? object : baseSet(object, path, value, customizer); } var toPairs2 = createToPairs(keys); var toPairsIn = createToPairs(keysIn); function transform(object, iteratee2, accumulator) { var isArr = isArray2(object), isArrLike = isArr || isBuffer(object) || isTypedArray(object); iteratee2 = getIteratee(iteratee2, 4); if (accumulator == null) { var Ctor = object && object.constructor; if (isArrLike) { accumulator = isArr ? new Ctor() : []; } else if (isObject3(object)) { accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {}; } else { accumulator = {}; } } (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object2) { return iteratee2(accumulator, value, index, object2); }); return accumulator; } function unset(object, path) { return object == null ? true : baseUnset(object, path); } function update(object, path, updater) { return object == null ? object : baseUpdate(object, path, castFunction(updater)); } function updateWith(object, path, updater, customizer) { customizer = typeof customizer == "function" ? customizer : undefined2; return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer); } function values(object) { return object == null ? [] : baseValues(object, keys(object)); } function valuesIn(object) { return object == null ? [] : baseValues(object, keysIn(object)); } function clamp2(number, lower, upper) { if (upper === undefined2) { upper = lower; lower = undefined2; } if (upper !== undefined2) { upper = toNumber(upper); upper = upper === upper ? upper : 0; } if (lower !== undefined2) { lower = toNumber(lower); lower = lower === lower ? lower : 0; } return baseClamp(toNumber(number), lower, upper); } function inRange(number, start5, end2) { start5 = toFinite(start5); if (end2 === undefined2) { end2 = start5; start5 = 0; } else { end2 = toFinite(end2); } number = toNumber(number); return baseInRange(number, start5, end2); } function random(lower, upper, floating) { if (floating && typeof floating != "boolean" && isIterateeCall(lower, upper, floating)) { upper = floating = undefined2; } if (floating === undefined2) { if (typeof upper == "boolean") { floating = upper; upper = undefined2; } else if (typeof lower == "boolean") { floating = lower; lower = undefined2; } } if (lower === undefined2 && upper === undefined2) { lower = 0; upper = 1; } else { lower = toFinite(lower); if (upper === undefined2) { upper = lower; lower = 0; } else { upper = toFinite(upper); } } if (lower > upper) { var temp = lower; lower = upper; upper = temp; } if (floating || lower % 1 || upper % 1) { var rand = nativeRandom(); return nativeMin(lower + rand * (upper - lower + freeParseFloat("1e-" + ((rand + "").length - 1))), upper); } return baseRandom(lower, upper); } var camelCase6 = createCompounder(function(result2, word, index) { word = word.toLowerCase(); return result2 + (index ? capitalize2(word) : word); }); function capitalize2(string) { return upperFirst(toString(string).toLowerCase()); } function deburr(string) { string = toString(string); return string && string.replace(reLatin, deburrLetter).replace(reComboMark, ""); } function endsWith(string, target, position) { string = toString(string); target = baseToString(target); var length = string.length; position = position === undefined2 ? length : baseClamp(toInteger(position), 0, length); var end2 = position; position -= target.length; return position >= 0 && string.slice(position, end2) == target; } function escape(string) { string = toString(string); return string && reHasUnescapedHtml.test(string) ? string.replace(reUnescapedHtml, escapeHtmlChar) : string; } function escapeRegExp(string) { string = toString(string); return string && reHasRegExpChar.test(string) ? string.replace(reRegExpChar, "\\$&") : string; } var kebabCase5 = createCompounder(function(result2, word, index) { return result2 + (index ? "-" : "") + word.toLowerCase(); }); var lowerCase = createCompounder(function(result2, word, index) { return result2 + (index ? " " : "") + word.toLowerCase(); }); var lowerFirst = createCaseFirst("toLowerCase"); function pad(string, length, chars) { string = toString(string); length = toInteger(length); var strLength = length ? stringSize(string) : 0; if (!length || strLength >= length) { return string; } var mid = (length - strLength) / 2; return createPadding(nativeFloor(mid), chars) + string + createPadding(nativeCeil(mid), chars); } function padEnd(string, length, chars) { string = toString(string); length = toInteger(length); var strLength = length ? stringSize(string) : 0; return length && strLength < length ? string + createPadding(length - strLength, chars) : string; } function padStart(string, length, chars) { string = toString(string); length = toInteger(length); var strLength = length ? stringSize(string) : 0; return length && strLength < length ? createPadding(length - strLength, chars) + string : string; } function parseInt2(string, radix, guard) { if (guard || radix == null) { radix = 0; } else if (radix) { radix = +radix; } return nativeParseInt(toString(string).replace(reTrimStart, ""), radix || 0); } function repeat(string, n3, guard) { if (guard ? isIterateeCall(string, n3, guard) : n3 === undefined2) { n3 = 1; } else { n3 = toInteger(n3); } return baseRepeat(toString(string), n3); } function replace() { var args = arguments, string = toString(args[0]); return args.length < 3 ? string : string.replace(args[1], args[2]); } var snakeCase = createCompounder(function(result2, word, index) { return result2 + (index ? "_" : "") + word.toLowerCase(); }); function split(string, separator, limit) { if (limit && typeof limit != "number" && isIterateeCall(string, separator, limit)) { separator = limit = undefined2; } limit = limit === undefined2 ? MAX_ARRAY_LENGTH : limit >>> 0; if (!limit) { return []; } string = toString(string); if (string && (typeof separator == "string" || separator != null && !isRegExp(separator))) { separator = baseToString(separator); if (!separator && hasUnicode(string)) { return castSlice(stringToArray(string), 0, limit); } } return string.split(separator, limit); } var startCase = createCompounder(function(result2, word, index) { return result2 + (index ? " " : "") + upperFirst(word); }); function startsWith(string, target, position) { string = toString(string); position = position == null ? 0 : baseClamp(toInteger(position), 0, string.length); target = baseToString(target); return string.slice(position, position + target.length) == target; } function template(string, options, guard) { var settings = lodash.templateSettings; if (guard && isIterateeCall(string, options, guard)) { options = undefined2; } string = toString(string); options = assignInWith({}, options, settings, customDefaultsAssignIn); var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn), importsKeys = keys(imports), importsValues = baseValues(imports, importsKeys); var isEscaping, isEvaluating, index = 0, interpolate2 = options.interpolate || reNoMatch, source = "__p += '"; var reDelimiters = RegExp2( (options.escape || reNoMatch).source + "|" + interpolate2.source + "|" + (interpolate2 === reInterpolate ? reEsTemplate : reNoMatch).source + "|" + (options.evaluate || reNoMatch).source + "|$", "g" ); var sourceURL = "//# sourceURL=" + (hasOwnProperty3.call(options, "sourceURL") ? (options.sourceURL + "").replace(/\s/g, " ") : "lodash.templateSources[" + ++templateCounter + "]") + "\n"; string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset2) { interpolateValue || (interpolateValue = esTemplateValue); source += string.slice(index, offset2).replace(reUnescapedString, escapeStringChar); if (escapeValue) { isEscaping = true; source += "' +\n__e(" + escapeValue + ") +\n'"; } if (evaluateValue) { isEvaluating = true; source += "';\n" + evaluateValue + ";\n__p += '"; } if (interpolateValue) { source += "' +\n((__t = (" + interpolateValue + ")) == null ? '' : __t) +\n'"; } index = offset2 + match.length; return match; }); source += "';\n"; var variable = hasOwnProperty3.call(options, "variable") && options.variable; if (!variable) { source = "with (obj) {\n" + source + "\n}\n"; } else if (reForbiddenIdentifierChars.test(variable)) { throw new Error2(INVALID_TEMPL_VAR_ERROR_TEXT); } source = (isEvaluating ? source.replace(reEmptyStringLeading, "") : source).replace(reEmptyStringMiddle, "$1").replace(reEmptyStringTrailing, "$1;"); source = "function(" + (variable || "obj") + ") {\n" + (variable ? "" : "obj || (obj = {});\n") + "var __t, __p = ''" + (isEscaping ? ", __e = _.escape" : "") + (isEvaluating ? ", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n" : ";\n") + source + "return __p\n}"; var result2 = attempt(function() { return Function2(importsKeys, sourceURL + "return " + source).apply(undefined2, importsValues); }); result2.source = source; if (isError(result2)) { throw result2; } return result2; } function toLower(value) { return toString(value).toLowerCase(); } function toUpper(value) { return toString(value).toUpperCase(); } function trim(string, chars, guard) { string = toString(string); if (string && (guard || chars === undefined2)) { return baseTrim(string); } if (!string || !(chars = baseToString(chars))) { return string; } var strSymbols = stringToArray(string), chrSymbols = stringToArray(chars), start5 = charsStartIndex(strSymbols, chrSymbols), end2 = charsEndIndex(strSymbols, chrSymbols) + 1; return castSlice(strSymbols, start5, end2).join(""); } function trimEnd(string, chars, guard) { string = toString(string); if (string && (guard || chars === undefined2)) { return string.slice(0, trimmedEndIndex(string) + 1); } if (!string || !(chars = baseToString(chars))) { return string; } var strSymbols = stringToArray(string), end2 = charsEndIndex(strSymbols, stringToArray(chars)) + 1; return castSlice(strSymbols, 0, end2).join(""); } function trimStart(string, chars, guard) { string = toString(string); if (string && (guard || chars === undefined2)) { return string.replace(reTrimStart, ""); } if (!string || !(chars = baseToString(chars))) { return string; } var strSymbols = stringToArray(string), start5 = charsStartIndex(strSymbols, stringToArray(chars)); return castSlice(strSymbols, start5).join(""); } function truncate(string, options) { var length = DEFAULT_TRUNC_LENGTH, omission = DEFAULT_TRUNC_OMISSION; if (isObject3(options)) { var separator = "separator" in options ? options.separator : separator; length = "length" in options ? toInteger(options.length) : length; omission = "omission" in options ? baseToString(options.omission) : omission; } string = toString(string); var strLength = string.length; if (hasUnicode(string)) { var strSymbols = stringToArray(string); strLength = strSymbols.length; } if (length >= strLength) { return string; } var end2 = length - stringSize(omission); if (end2 < 1) { return omission; } var result2 = strSymbols ? castSlice(strSymbols, 0, end2).join("") : string.slice(0, end2); if (separator === undefined2) { return result2 + omission; } if (strSymbols) { end2 += result2.length - end2; } if (isRegExp(separator)) { if (string.slice(end2).search(separator)) { var match, substring = result2; if (!separator.global) { separator = RegExp2(separator.source, toString(reFlags.exec(separator)) + "g"); } separator.lastIndex = 0; while (match = separator.exec(substring)) { var newEnd = match.index; } result2 = result2.slice(0, newEnd === undefined2 ? end2 : newEnd); } } else if (string.indexOf(baseToString(separator), end2) != end2) { var index = result2.lastIndexOf(separator); if (index > -1) { result2 = result2.slice(0, index); } } return result2 + omission; } function unescape2(string) { string = toString(string); return string && reHasEscapedHtml.test(string) ? string.replace(reEscapedHtml, unescapeHtmlChar) : string; } var upperCase = createCompounder(function(result2, word, index) { return result2 + (index ? " " : "") + word.toUpperCase(); }); var upperFirst = createCaseFirst("toUpperCase"); function words(string, pattern, guard) { string = toString(string); pattern = guard ? undefined2 : pattern; if (pattern === undefined2) { return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string); } return string.match(pattern) || []; } var attempt = baseRest(function(func, args) { try { return apply(func, undefined2, args); } catch (e3) { return isError(e3) ? e3 : new Error2(e3); } }); var bindAll = flatRest(function(object, methodNames) { arrayEach(methodNames, function(key) { key = toKey(key); baseAssignValue(object, key, bind4(object[key], object)); }); return object; }); function cond(pairs) { var length = pairs == null ? 0 : pairs.length, toIteratee = getIteratee(); pairs = !length ? [] : arrayMap(pairs, function(pair) { if (typeof pair[1] != "function") { throw new TypeError2(FUNC_ERROR_TEXT); } return [toIteratee(pair[0]), pair[1]]; }); return baseRest(function(args) { var index = -1; while (++index < length) { var pair = pairs[index]; if (apply(pair[0], this, args)) { return apply(pair[1], this, args); } } }); } function conforms(source) { return baseConforms(baseClone(source, CLONE_DEEP_FLAG)); } function constant(value) { return function() { return value; }; } function defaultTo(value, defaultValue) { return value == null || value !== value ? defaultValue : value; } var flow = createFlow(); var flowRight = createFlow(true); function identity(value) { return value; } function iteratee(func) { return baseIteratee(typeof func == "function" ? func : baseClone(func, CLONE_DEEP_FLAG)); } function matches2(source) { return baseMatches(baseClone(source, CLONE_DEEP_FLAG)); } function matchesProperty(path, srcValue) { return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG)); } var method = baseRest(function(path, args) { return function(object) { return baseInvoke(object, path, args); }; }); var methodOf = baseRest(function(object, args) { return function(path) { return baseInvoke(object, path, args); }; }); function mixin(object, source, options) { var props = keys(source), methodNames = baseFunctions(source, props); if (options == null && !(isObject3(source) && (methodNames.length || !props.length))) { options = source; source = object; object = this; methodNames = baseFunctions(source, keys(source)); } var chain2 = !(isObject3(options) && "chain" in options) || !!options.chain, isFunc = isFunction(object); arrayEach(methodNames, function(methodName) { var func = source[methodName]; object[methodName] = func; if (isFunc) { object.prototype[methodName] = function() { var chainAll = this.__chain__; if (chain2 || chainAll) { var result2 = object(this.__wrapped__), actions = result2.__actions__ = copyArray(this.__actions__); actions.push({ "func": func, "args": arguments, "thisArg": object }); result2.__chain__ = chainAll; return result2; } return func.apply(object, arrayPush([this.value()], arguments)); }; } }); return object; } function noConflict() { if (root._ === this) { root._ = oldDash; } return this; } function noop() { } function nthArg(n3) { n3 = toInteger(n3); return baseRest(function(args) { return baseNth(args, n3); }); } var over = createOver(arrayMap); var overEvery = createOver(arrayEvery); var overSome = createOver(arraySome); function property(path) { return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path); } function propertyOf(object) { return function(path) { return object == null ? undefined2 : baseGet(object, path); }; } var range = createRange(); var rangeRight = createRange(true); function stubArray() { return []; } function stubFalse() { return false; } function stubObject() { return {}; } function stubString() { return ""; } function stubTrue() { return true; } function times(n3, iteratee2) { n3 = toInteger(n3); if (n3 < 1 || n3 > MAX_SAFE_INTEGER) { return []; } var index = MAX_ARRAY_LENGTH, length = nativeMin(n3, MAX_ARRAY_LENGTH); iteratee2 = getIteratee(iteratee2); n3 -= MAX_ARRAY_LENGTH; var result2 = baseTimes(length, iteratee2); while (++index < n3) { iteratee2(index); } return result2; } function toPath(value) { if (isArray2(value)) { return arrayMap(value, toKey); } return isSymbol2(value) ? [value] : copyArray(stringToPath(toString(value))); } function uniqueId(prefix2) { var id2 = ++idCounter2; return toString(prefix2) + id2; } var add2 = createMathOperation(function(augend, addend) { return augend + addend; }, 0); var ceil = createRound("ceil"); var divide = createMathOperation(function(dividend, divisor) { return dividend / divisor; }, 1); var floor2 = createRound("floor"); function max2(array) { return array && array.length ? baseExtremum(array, identity, baseGt) : undefined2; } function maxBy(array, iteratee2) { return array && array.length ? baseExtremum(array, getIteratee(iteratee2, 2), baseGt) : undefined2; } function mean(array) { return baseMean(array, identity); } function meanBy(array, iteratee2) { return baseMean(array, getIteratee(iteratee2, 2)); } function min2(array) { return array && array.length ? baseExtremum(array, identity, baseLt) : undefined2; } function minBy(array, iteratee2) { return array && array.length ? baseExtremum(array, getIteratee(iteratee2, 2), baseLt) : undefined2; } var multiply = createMathOperation(function(multiplier, multiplicand) { return multiplier * multiplicand; }, 1); var round3 = createRound("round"); var subtract = createMathOperation(function(minuend, subtrahend) { return minuend - subtrahend; }, 0); function sum(array) { return array && array.length ? baseSum(array, identity) : 0; } function sumBy(array, iteratee2) { return array && array.length ? baseSum(array, getIteratee(iteratee2, 2)) : 0; } lodash.after = after; lodash.ary = ary; lodash.assign = assign; lodash.assignIn = assignIn; lodash.assignInWith = assignInWith; lodash.assignWith = assignWith; lodash.at = at2; lodash.before = before; lodash.bind = bind4; lodash.bindAll = bindAll; lodash.bindKey = bindKey; lodash.castArray = castArray; lodash.chain = chain; lodash.chunk = chunk; lodash.compact = compact; lodash.concat = concat; lodash.cond = cond; lodash.conforms = conforms; lodash.constant = constant; lodash.countBy = countBy; lodash.create = create; lodash.curry = curry; lodash.curryRight = curryRight; lodash.debounce = debounce4; lodash.defaults = defaults; lodash.defaultsDeep = defaultsDeep; lodash.defer = defer; lodash.delay = delay3; lodash.difference = difference; lodash.differenceBy = differenceBy; lodash.differenceWith = differenceWith; lodash.drop = drop; lodash.dropRight = dropRight; lodash.dropRightWhile = dropRightWhile; lodash.dropWhile = dropWhile; lodash.fill = fill; lodash.filter = filter; lodash.flatMap = flatMap; lodash.flatMapDeep = flatMapDeep; lodash.flatMapDepth = flatMapDepth; lodash.flatten = flatten; lodash.flattenDeep = flattenDeep; lodash.flattenDepth = flattenDepth; lodash.flip = flip2; lodash.flow = flow; lodash.flowRight = flowRight; lodash.fromPairs = fromPairs; lodash.functions = functions; lodash.functionsIn = functionsIn; lodash.groupBy = groupBy; lodash.initial = initial; lodash.intersection = intersection; lodash.intersectionBy = intersectionBy; lodash.intersectionWith = intersectionWith; lodash.invert = invert; lodash.invertBy = invertBy; lodash.invokeMap = invokeMap; lodash.iteratee = iteratee; lodash.keyBy = keyBy2; lodash.keys = keys; lodash.keysIn = keysIn; lodash.map = map; lodash.mapKeys = mapKeys; lodash.mapValues = mapValues2; lodash.matches = matches2; lodash.matchesProperty = matchesProperty; lodash.memoize = memoize; lodash.merge = merge; lodash.mergeWith = mergeWith; lodash.method = method; lodash.methodOf = methodOf; lodash.mixin = mixin; lodash.negate = negate; lodash.nthArg = nthArg; lodash.omit = omit; lodash.omitBy = omitBy; lodash.once = once2; lodash.orderBy = orderBy; lodash.over = over; lodash.overArgs = overArgs; lodash.overEvery = overEvery; lodash.overSome = overSome; lodash.partial = partial; lodash.partialRight = partialRight; lodash.partition = partition; lodash.pick = pick; lodash.pickBy = pickBy; lodash.property = property; lodash.propertyOf = propertyOf; lodash.pull = pull; lodash.pullAll = pullAll; lodash.pullAllBy = pullAllBy; lodash.pullAllWith = pullAllWith; lodash.pullAt = pullAt; lodash.range = range; lodash.rangeRight = rangeRight; lodash.rearg = rearg; lodash.reject = reject; lodash.remove = remove; lodash.rest = rest; lodash.reverse = reverse; lodash.sampleSize = sampleSize; lodash.set = set3; lodash.setWith = setWith; lodash.shuffle = shuffle; lodash.slice = slice; lodash.sortBy = sortBy; lodash.sortedUniq = sortedUniq; lodash.sortedUniqBy = sortedUniqBy; lodash.split = split; lodash.spread = spread; lodash.tail = tail; lodash.take = take; lodash.takeRight = takeRight; lodash.takeRightWhile = takeRightWhile; lodash.takeWhile = takeWhile; lodash.tap = tap; lodash.throttle = throttle2; lodash.thru = thru; lodash.toArray = toArray2; lodash.toPairs = toPairs2; lodash.toPairsIn = toPairsIn; lodash.toPath = toPath; lodash.toPlainObject = toPlainObject; lodash.transform = transform; lodash.unary = unary; lodash.union = union; lodash.unionBy = unionBy; lodash.unionWith = unionWith; lodash.uniq = uniq; lodash.uniqBy = uniqBy; lodash.uniqWith = uniqWith; lodash.unset = unset; lodash.unzip = unzip; lodash.unzipWith = unzipWith; lodash.update = update; lodash.updateWith = updateWith; lodash.values = values; lodash.valuesIn = valuesIn; lodash.without = without; lodash.words = words; lodash.wrap = wrap; lodash.xor = xor; lodash.xorBy = xorBy; lodash.xorWith = xorWith; lodash.zip = zip; lodash.zipObject = zipObject; lodash.zipObjectDeep = zipObjectDeep; lodash.zipWith = zipWith; lodash.entries = toPairs2; lodash.entriesIn = toPairsIn; lodash.extend = assignIn; lodash.extendWith = assignInWith; mixin(lodash, lodash); lodash.add = add2; lodash.attempt = attempt; lodash.camelCase = camelCase6; lodash.capitalize = capitalize2; lodash.ceil = ceil; lodash.clamp = clamp2; lodash.clone = clone2; lodash.cloneDeep = cloneDeep; lodash.cloneDeepWith = cloneDeepWith; lodash.cloneWith = cloneWith; lodash.conformsTo = conformsTo; lodash.deburr = deburr; lodash.defaultTo = defaultTo; lodash.divide = divide; lodash.endsWith = endsWith; lodash.eq = eq; lodash.escape = escape; lodash.escapeRegExp = escapeRegExp; lodash.every = every; lodash.find = find; lodash.findIndex = findIndex3; lodash.findKey = findKey; lodash.findLast = findLast; lodash.findLastIndex = findLastIndex; lodash.findLastKey = findLastKey; lodash.floor = floor2; lodash.forEach = forEach; lodash.forEachRight = forEachRight; lodash.forIn = forIn; lodash.forInRight = forInRight; lodash.forOwn = forOwn; lodash.forOwnRight = forOwnRight; lodash.get = get3; lodash.gt = gt; lodash.gte = gte; lodash.has = has2; lodash.hasIn = hasIn; lodash.head = head; lodash.identity = identity; lodash.includes = includes; lodash.indexOf = indexOf2; lodash.inRange = inRange; lodash.invoke = invoke; lodash.isArguments = isArguments; lodash.isArray = isArray2; lodash.isArrayBuffer = isArrayBuffer; lodash.isArrayLike = isArrayLike; lodash.isArrayLikeObject = isArrayLikeObject; lodash.isBoolean = isBoolean; lodash.isBuffer = isBuffer; lodash.isDate = isDate; lodash.isElement = isElement3; lodash.isEmpty = isEmpty; lodash.isEqual = isEqual; lodash.isEqualWith = isEqualWith; lodash.isError = isError; lodash.isFinite = isFinite; lodash.isFunction = isFunction; lodash.isInteger = isInteger; lodash.isLength = isLength; lodash.isMap = isMap2; lodash.isMatch = isMatch; lodash.isMatchWith = isMatchWith; lodash.isNaN = isNaN2; lodash.isNative = isNative; lodash.isNil = isNil; lodash.isNull = isNull; lodash.isNumber = isNumber; lodash.isObject = isObject3; lodash.isObjectLike = isObjectLike; lodash.isPlainObject = isPlainObject; lodash.isRegExp = isRegExp; lodash.isSafeInteger = isSafeInteger; lodash.isSet = isSet; lodash.isString = isString2; lodash.isSymbol = isSymbol2; lodash.isTypedArray = isTypedArray; lodash.isUndefined = isUndefined; lodash.isWeakMap = isWeakMap; lodash.isWeakSet = isWeakSet; lodash.join = join; lodash.kebabCase = kebabCase5; lodash.last = last; lodash.lastIndexOf = lastIndexOf; lodash.lowerCase = lowerCase; lodash.lowerFirst = lowerFirst; lodash.lt = lt2; lodash.lte = lte; lodash.max = max2; lodash.maxBy = maxBy; lodash.mean = mean; lodash.meanBy = meanBy; lodash.min = min2; lodash.minBy = minBy; lodash.stubArray = stubArray; lodash.stubFalse = stubFalse; lodash.stubObject = stubObject; lodash.stubString = stubString; lodash.stubTrue = stubTrue; lodash.multiply = multiply; lodash.nth = nth; lodash.noConflict = noConflict; lodash.noop = noop; lodash.now = now2; lodash.pad = pad; lodash.padEnd = padEnd; lodash.padStart = padStart; lodash.parseInt = parseInt2; lodash.random = random; lodash.reduce = reduce; lodash.reduceRight = reduceRight; lodash.repeat = repeat; lodash.replace = replace; lodash.result = result; lodash.round = round3; lodash.runInContext = runInContext2; lodash.sample = sample; lodash.size = size2; lodash.snakeCase = snakeCase; lodash.some = some; lodash.sortedIndex = sortedIndex; lodash.sortedIndexBy = sortedIndexBy; lodash.sortedIndexOf = sortedIndexOf; lodash.sortedLastIndex = sortedLastIndex; lodash.sortedLastIndexBy = sortedLastIndexBy; lodash.sortedLastIndexOf = sortedLastIndexOf; lodash.startCase = startCase; lodash.startsWith = startsWith; lodash.subtract = subtract; lodash.sum = sum; lodash.sumBy = sumBy; lodash.template = template; lodash.times = times; lodash.toFinite = toFinite; lodash.toInteger = toInteger; lodash.toLength = toLength; lodash.toLower = toLower; lodash.toNumber = toNumber; lodash.toSafeInteger = toSafeInteger; lodash.toString = toString; lodash.toUpper = toUpper; lodash.trim = trim; lodash.trimEnd = trimEnd; lodash.trimStart = trimStart; lodash.truncate = truncate; lodash.unescape = unescape2; lodash.uniqueId = uniqueId; lodash.upperCase = upperCase; lodash.upperFirst = upperFirst; lodash.each = forEach; lodash.eachRight = forEachRight; lodash.first = head; mixin(lodash, function() { var source = {}; baseForOwn(lodash, function(func, methodName) { if (!hasOwnProperty3.call(lodash.prototype, methodName)) { source[methodName] = func; } }); return source; }(), { "chain": false }); lodash.VERSION = VERSION; arrayEach(["bind", "bindKey", "curry", "curryRight", "partial", "partialRight"], function(methodName) { lodash[methodName].placeholder = lodash; }); arrayEach(["drop", "take"], function(methodName, index) { LazyWrapper.prototype[methodName] = function(n3) { n3 = n3 === undefined2 ? 1 : nativeMax(toInteger(n3), 0); var result2 = this.__filtered__ && !index ? new LazyWrapper(this) : this.clone(); if (result2.__filtered__) { result2.__takeCount__ = nativeMin(n3, result2.__takeCount__); } else { result2.__views__.push({ "size": nativeMin(n3, MAX_ARRAY_LENGTH), "type": methodName + (result2.__dir__ < 0 ? "Right" : "") }); } return result2; }; LazyWrapper.prototype[methodName + "Right"] = function(n3) { return this.reverse()[methodName](n3).reverse(); }; }); arrayEach(["filter", "map", "takeWhile"], function(methodName, index) { var type = index + 1, isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG; LazyWrapper.prototype[methodName] = function(iteratee2) { var result2 = this.clone(); result2.__iteratees__.push({ "iteratee": getIteratee(iteratee2, 3), "type": type }); result2.__filtered__ = result2.__filtered__ || isFilter; return result2; }; }); arrayEach(["head", "last"], function(methodName, index) { var takeName = "take" + (index ? "Right" : ""); LazyWrapper.prototype[methodName] = function() { return this[takeName](1).value()[0]; }; }); arrayEach(["initial", "tail"], function(methodName, index) { var dropName = "drop" + (index ? "" : "Right"); LazyWrapper.prototype[methodName] = function() { return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1); }; }); LazyWrapper.prototype.compact = function() { return this.filter(identity); }; LazyWrapper.prototype.find = function(predicate) { return this.filter(predicate).head(); }; LazyWrapper.prototype.findLast = function(predicate) { return this.reverse().find(predicate); }; LazyWrapper.prototype.invokeMap = baseRest(function(path, args) { if (typeof path == "function") { return new LazyWrapper(this); } return this.map(function(value) { return baseInvoke(value, path, args); }); }); LazyWrapper.prototype.reject = function(predicate) { return this.filter(negate(getIteratee(predicate))); }; LazyWrapper.prototype.slice = function(start5, end2) { start5 = toInteger(start5); var result2 = this; if (result2.__filtered__ && (start5 > 0 || end2 < 0)) { return new LazyWrapper(result2); } if (start5 < 0) { result2 = result2.takeRight(-start5); } else if (start5) { result2 = result2.drop(start5); } if (end2 !== undefined2) { end2 = toInteger(end2); result2 = end2 < 0 ? result2.dropRight(-end2) : result2.take(end2 - start5); } return result2; }; LazyWrapper.prototype.takeRightWhile = function(predicate) { return this.reverse().takeWhile(predicate).reverse(); }; LazyWrapper.prototype.toArray = function() { return this.take(MAX_ARRAY_LENGTH); }; baseForOwn(LazyWrapper.prototype, function(func, methodName) { var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName), isTaker = /^(?:head|last)$/.test(methodName), lodashFunc = lodash[isTaker ? "take" + (methodName == "last" ? "Right" : "") : methodName], retUnwrapped = isTaker || /^find/.test(methodName); if (!lodashFunc) { return; } lodash.prototype[methodName] = function() { var value = this.__wrapped__, args = isTaker ? [1] : arguments, isLazy = value instanceof LazyWrapper, iteratee2 = args[0], useLazy = isLazy || isArray2(value); var interceptor2 = function(value2) { var result3 = lodashFunc.apply(lodash, arrayPush([value2], args)); return isTaker && chainAll ? result3[0] : result3; }; if (useLazy && checkIteratee && typeof iteratee2 == "function" && iteratee2.length != 1) { isLazy = useLazy = false; } var chainAll = this.__chain__, isHybrid = !!this.__actions__.length, isUnwrapped = retUnwrapped && !chainAll, onlyLazy = isLazy && !isHybrid; if (!retUnwrapped && useLazy) { value = onlyLazy ? value : new LazyWrapper(this); var result2 = func.apply(value, args); result2.__actions__.push({ "func": thru, "args": [interceptor2], "thisArg": undefined2 }); return new LodashWrapper(result2, chainAll); } if (isUnwrapped && onlyLazy) { return func.apply(this, args); } result2 = this.thru(interceptor2); return isUnwrapped ? isTaker ? result2.value()[0] : result2.value() : result2; }; }); arrayEach(["pop", "push", "shift", "sort", "splice", "unshift"], function(methodName) { var func = arrayProto[methodName], chainName = /^(?:push|sort|unshift)$/.test(methodName) ? "tap" : "thru", retUnwrapped = /^(?:pop|shift)$/.test(methodName); lodash.prototype[methodName] = function() { var args = arguments; if (retUnwrapped && !this.__chain__) { var value = this.value(); return func.apply(isArray2(value) ? value : [], args); } return this[chainName](function(value2) { return func.apply(isArray2(value2) ? value2 : [], args); }); }; }); baseForOwn(LazyWrapper.prototype, function(func, methodName) { var lodashFunc = lodash[methodName]; if (lodashFunc) { var key = lodashFunc.name + ""; if (!hasOwnProperty3.call(realNames, key)) { realNames[key] = []; } realNames[key].push({ "name": methodName, "func": lodashFunc }); } }); realNames[createHybrid(undefined2, WRAP_BIND_KEY_FLAG).name] = [{ "name": "wrapper", "func": undefined2 }]; LazyWrapper.prototype.clone = lazyClone; LazyWrapper.prototype.reverse = lazyReverse; LazyWrapper.prototype.value = lazyValue; lodash.prototype.at = wrapperAt; lodash.prototype.chain = wrapperChain; lodash.prototype.commit = wrapperCommit; lodash.prototype.next = wrapperNext; lodash.prototype.plant = wrapperPlant; lodash.prototype.reverse = wrapperReverse; lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue; lodash.prototype.first = lodash.prototype.head; if (symIterator) { lodash.prototype[symIterator] = wrapperToIterator; } return lodash; }; var _3 = runInContext(); if (typeof define == "function" && typeof define.amd == "object" && define.amd) { root._ = _3; define(function() { return _3; }); } else if (freeModule) { (freeModule.exports = _3)._ = _3; freeExports._ = _3; } else { root._ = _3; } }).call(exports); } }); // ../../../node_modules/picocolors/picocolors.browser.js var require_picocolors_browser = __commonJS({ "../../../node_modules/picocolors/picocolors.browser.js"(exports, module) { var x3 = String; var create = function() { return { isColorSupported: false, reset: x3, bold: x3, dim: x3, italic: x3, underline: x3, inverse: x3, hidden: x3, strikethrough: x3, black: x3, red: x3, green: x3, yellow: x3, blue: x3, magenta: x3, cyan: x3, white: x3, gray: x3, bgBlack: x3, bgRed: x3, bgGreen: x3, bgYellow: x3, bgBlue: x3, bgMagenta: x3, bgCyan: x3, bgWhite: x3 }; }; module.exports = create(); module.exports.createColors = create; } }); // ../../../node_modules/tailwindcss/lib/util/log.js var require_log = __commonJS({ "../../../node_modules/tailwindcss/lib/util/log.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); function _export(target, all) { for (var name in all) Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { dim: function() { return dim; }, default: function() { return _default; } }); var _picocolors = /* @__PURE__ */ _interop_require_default(require_picocolors_browser()); function _interop_require_default(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var alreadyShown = /* @__PURE__ */ new Set(); function log2(type, messages, key) { if (typeof process !== "undefined" && process.env.JEST_WORKER_ID) return; if (key && alreadyShown.has(key)) return; if (key) alreadyShown.add(key); console.warn(""); messages.forEach((message2) => console.warn(type, "-", message2)); } function dim(input) { return _picocolors.default.dim(input); } var _default = { info(key, messages) { log2(_picocolors.default.bold(_picocolors.default.cyan("info")), ...Array.isArray(key) ? [ key ] : [ messages, key ]); }, warn(key, messages) { log2(_picocolors.default.bold(_picocolors.default.yellow("warn")), ...Array.isArray(key) ? [ key ] : [ messages, key ]); }, risk(key, messages) { log2(_picocolors.default.bold(_picocolors.default.magenta("risk")), ...Array.isArray(key) ? [ key ] : [ messages, key ]); } }; } }); // ../../../node_modules/tailwindcss/lib/public/colors.js var require_colors = __commonJS({ "../../../node_modules/tailwindcss/lib/public/colors.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "default", { enumerable: true, get: function() { return _default; } }); var _log = /* @__PURE__ */ _interop_require_default(require_log()); function _interop_require_default(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function warn2({ version, from, to }) { _log.default.warn(`${from}-color-renamed`, [ `As of Tailwind CSS ${version}, \`${from}\` has been renamed to \`${to}\`.`, "Update your configuration file to silence this warning." ]); } var _default = { inherit: "inherit", current: "currentColor", transparent: "transparent", black: "#000", white: "#fff", slate: { 50: "#f8fafc", 100: "#f1f5f9", 200: "#e2e8f0", 300: "#cbd5e1", 400: "#94a3b8", 500: "#64748b", 600: "#475569", 700: "#334155", 800: "#1e293b", 900: "#0f172a", 950: "#020617" }, gray: { 50: "#f9fafb", 100: "#f3f4f6", 200: "#e5e7eb", 300: "#d1d5db", 400: "#9ca3af", 500: "#6b7280", 600: "#4b5563", 700: "#374151", 800: "#1f2937", 900: "#111827", 950: "#030712" }, zinc: { 50: "#fafafa", 100: "#f4f4f5", 200: "#e4e4e7", 300: "#d4d4d8", 400: "#a1a1aa", 500: "#71717a", 600: "#52525b", 700: "#3f3f46", 800: "#27272a", 900: "#18181b", 950: "#09090b" }, neutral: { 50: "#fafafa", 100: "#f5f5f5", 200: "#e5e5e5", 300: "#d4d4d4", 400: "#a3a3a3", 500: "#737373", 600: "#525252", 700: "#404040", 800: "#262626", 900: "#171717", 950: "#0a0a0a" }, stone: { 50: "#fafaf9", 100: "#f5f5f4", 200: "#e7e5e4", 300: "#d6d3d1", 400: "#a8a29e", 500: "#78716c", 600: "#57534e", 700: "#44403c", 800: "#292524", 900: "#1c1917", 950: "#0c0a09" }, red: { 50: "#fef2f2", 100: "#fee2e2", 200: "#fecaca", 300: "#fca5a5", 400: "#f87171", 500: "#ef4444", 600: "#dc2626", 700: "#b91c1c", 800: "#991b1b", 900: "#7f1d1d", 950: "#450a0a" }, orange: { 50: "#fff7ed", 100: "#ffedd5", 200: "#fed7aa", 300: "#fdba74", 400: "#fb923c", 500: "#f97316", 600: "#ea580c", 700: "#c2410c", 800: "#9a3412", 900: "#7c2d12", 950: "#431407" }, amber: { 50: "#fffbeb", 100: "#fef3c7", 200: "#fde68a", 300: "#fcd34d", 400: "#fbbf24", 500: "#f59e0b", 600: "#d97706", 700: "#b45309", 800: "#92400e", 900: "#78350f", 950: "#451a03" }, yellow: { 50: "#fefce8", 100: "#fef9c3", 200: "#fef08a", 300: "#fde047", 400: "#facc15", 500: "#eab308", 600: "#ca8a04", 700: "#a16207", 800: "#854d0e", 900: "#713f12", 950: "#422006" }, lime: { 50: "#f7fee7", 100: "#ecfccb", 200: "#d9f99d", 300: "#bef264", 400: "#a3e635", 500: "#84cc16", 600: "#65a30d", 700: "#4d7c0f", 800: "#3f6212", 900: "#365314", 950: "#1a2e05" }, green: { 50: "#f0fdf4", 100: "#dcfce7", 200: "#bbf7d0", 300: "#86efac", 400: "#4ade80", 500: "#22c55e", 600: "#16a34a", 700: "#15803d", 800: "#166534", 900: "#14532d", 950: "#052e16" }, emerald: { 50: "#ecfdf5", 100: "#d1fae5", 200: "#a7f3d0", 300: "#6ee7b7", 400: "#34d399", 500: "#10b981", 600: "#059669", 700: "#047857", 800: "#065f46", 900: "#064e3b", 950: "#022c22" }, teal: { 50: "#f0fdfa", 100: "#ccfbf1", 200: "#99f6e4", 300: "#5eead4", 400: "#2dd4bf", 500: "#14b8a6", 600: "#0d9488", 700: "#0f766e", 800: "#115e59", 900: "#134e4a", 950: "#042f2e" }, cyan: { 50: "#ecfeff", 100: "#cffafe", 200: "#a5f3fc", 300: "#67e8f9", 400: "#22d3ee", 500: "#06b6d4", 600: "#0891b2", 700: "#0e7490", 800: "#155e75", 900: "#164e63", 950: "#083344" }, sky: { 50: "#f0f9ff", 100: "#e0f2fe", 200: "#bae6fd", 300: "#7dd3fc", 400: "#38bdf8", 500: "#0ea5e9", 600: "#0284c7", 700: "#0369a1", 800: "#075985", 900: "#0c4a6e", 950: "#082f49" }, blue: { 50: "#eff6ff", 100: "#dbeafe", 200: "#bfdbfe", 300: "#93c5fd", 400: "#60a5fa", 500: "#3b82f6", 600: "#2563eb", 700: "#1d4ed8", 800: "#1e40af", 900: "#1e3a8a", 950: "#172554" }, indigo: { 50: "#eef2ff", 100: "#e0e7ff", 200: "#c7d2fe", 300: "#a5b4fc", 400: "#818cf8", 500: "#6366f1", 600: "#4f46e5", 700: "#4338ca", 800: "#3730a3", 900: "#312e81", 950: "#1e1b4b" }, violet: { 50: "#f5f3ff", 100: "#ede9fe", 200: "#ddd6fe", 300: "#c4b5fd", 400: "#a78bfa", 500: "#8b5cf6", 600: "#7c3aed", 700: "#6d28d9", 800: "#5b21b6", 900: "#4c1d95", 950: "#2e1065" }, purple: { 50: "#faf5ff", 100: "#f3e8ff", 200: "#e9d5ff", 300: "#d8b4fe", 400: "#c084fc", 500: "#a855f7", 600: "#9333ea", 700: "#7e22ce", 800: "#6b21a8", 900: "#581c87", 950: "#3b0764" }, fuchsia: { 50: "#fdf4ff", 100: "#fae8ff", 200: "#f5d0fe", 300: "#f0abfc", 400: "#e879f9", 500: "#d946ef", 600: "#c026d3", 700: "#a21caf", 800: "#86198f", 900: "#701a75", 950: "#4a044e" }, pink: { 50: "#fdf2f8", 100: "#fce7f3", 200: "#fbcfe8", 300: "#f9a8d4", 400: "#f472b6", 500: "#ec4899", 600: "#db2777", 700: "#be185d", 800: "#9d174d", 900: "#831843", 950: "#500724" }, rose: { 50: "#fff1f2", 100: "#ffe4e6", 200: "#fecdd3", 300: "#fda4af", 400: "#fb7185", 500: "#f43f5e", 600: "#e11d48", 700: "#be123c", 800: "#9f1239", 900: "#881337", 950: "#4c0519" }, get lightBlue() { warn2({ version: "v2.2", from: "lightBlue", to: "sky" }); return this.sky; }, get warmGray() { warn2({ version: "v3.0", from: "warmGray", to: "stone" }); return this.stone; }, get trueGray() { warn2({ version: "v3.0", from: "trueGray", to: "neutral" }); return this.neutral; }, get coolGray() { warn2({ version: "v3.0", from: "coolGray", to: "gray" }); return this.gray; }, get blueGray() { warn2({ version: "v3.0", from: "blueGray", to: "slate" }); return this.slate; } }; } }); // ../../../node_modules/tailwindcss/colors.js var require_colors2 = __commonJS({ "../../../node_modules/tailwindcss/colors.js"(exports, module) { var colors = require_colors(); module.exports = (colors.__esModule ? colors : { default: colors }).default; } }); // ../../../config/tokens.cjs var require_tokens = __commonJS({ "../../../config/tokens.cjs"(exports, module) { var tailwindColors = require_colors2(); var colors = { transparent: "transparent", current: "currentColor", black: tailwindColors.black, white: tailwindColors.white, gray: { 50: "#F9FAFB", 100: "#F3F4F6", 200: "#E5E7EB", 300: "#D1D5DB", 400: "#9CA3AF", 500: "#6B7280", 600: "#4B5563", 700: "#374151", 800: "#1F2937", 900: "#111827", transparent: { 50: "rgba(0, 12, 39, 0.06)", 100: "rgba(0, 12, 39, 0.1)", 200: "rgba(0, 12, 39, 0.18)" } }, green: { 50: "#E8F3F1", 100: "#D1E7E2", 200: "#A3CFC5", 300: "#76B8AA", 400: "#48A08D", 500: "#1A8871", 600: "#137464", 700: "#0D6159", 800: "#084C4E", 900: "#013C43" }, red: { 50: "#FEF2F2", 100: "#FEE2E2", 200: "#FECACA", 300: "#FCA5A5", 400: "#F87171", 500: "#EF4444", 600: "#DC2626", 700: "#B91C1C", 800: "#991B1B", 900: "#7F1D1D" }, amber: { 50: "#FFFBEB", 100: "#FEF3C7", 200: "#FDE68A", 300: "#FCD34D", 400: "#FBBF24", 500: "#F59E0B", 600: "#D97706", 700: "#B45309", 800: "#92400E", 900: "#78350F" }, blue: { 50: "#F0F9FF", 100: "#E0F2FE", 200: "#BAE6FD", 300: "#7DD3FC", 400: "#38BDF8", 500: "#0EA5E9", 600: "#0284C7", 700: "#0369A1", 800: "#075985", 900: "#0C4A6E" }, teal: tailwindColors.teal }; var colorAliases = { primary: __spreadValues({}, colors.green), positive: __spreadValues({}, colors.green), negative: __spreadValues({}, colors.red), warning: __spreadValues({}, colors.amber), info: __spreadValues({}, colors.blue), background: { light: { 1: colors.white, 2: colors.gray[50], 3: colors.gray[100] }, dark: { 1: colors.gray[900], 2: colors.gray[800], 3: colors.gray[700] }, primary: { DEFAULT: colors.green[500], light: colors.green[100] }, negative: { DEFAULT: colors.red[600], light: colors.red[100] }, warning: { DEFAULT: colors.amber[500], light: colors.amber[50] }, positive: { DEFAULT: colors.green[500], light: colors.green[100] }, info: { DEFAULT: colors.blue[600], light: colors.blue[100] } }, content: { dark: { 1: colors.gray[900], 2: colors.gray[800], muted: colors.gray[400] }, light: { 1: colors.white, 2: colors.gray[200], muted: colors.gray[400] }, primary: { DEFAULT: colors.green[500], dark: colors.green[600], inverse: colors.green[300] }, negative: { DEFAULT: colors.red[600], dark: colors.red[700], inverse: colors.red[300] }, warning: { DEFAULT: colors.amber[600], dark: colors.amber[700], inverse: colors.amber[300] }, positive: { DEFAULT: colors.green[500], dark: colors.green[600], inverse: colors.green[300] }, info: { DEFAULT: colors.blue[600], dark: colors.blue[700], inverse: colors.blue[300] } } }; var screens = { xs: "380px", sm: "576px", md: "768px", lg: "992px", xl: "1200px", "2xl": "1400px", max: "1800px", print: { raw: "print" } // Note: PDFs are rendered at a viewport width of 1280px }; var fontSize = { "para-xs": ["12px", "16px"], "para-sm": ["14px", "20px"], "para-md": ["16px", "24px"], "para-lg": ["18px", "27px"], "label-xs": ["12px", "14px"], "label-sm": ["14px", "16px"], "label-md": ["16px", "20px"], "label-lg": ["18px", "24px"], "display-1": ["96px", "96px"], "display-2": ["80px", "84px"], "display-3": ["64px", "68px"], "display-4": ["48px", "52px"], "heading-1": ["48px", "50px"], "heading-2": ["36px", "40px"], "heading-3": ["30px", "36px"], "heading-4": ["24px", "30px"], "heading-5": ["20px", "25px"], "heading-6": ["16px", "20px"], "subheading-1": ["32px", "40px"], "subheading-2": ["24px", "32px"], "subheading-3": ["20px", "28px"], "subheading-4": ["16px", "24px"] }; module.exports = { app: { colors: __spreadValues(__spreadValues({}, colors), colorAliases), screens, fontSize, fontFamily: { displaySans: "proxima-nova", bodySans: "proxima-nova", displaySerif: "merriweather" } }, book: { colors: __spreadValues(__spreadValues({}, colors), colorAliases), screens, fontSize, fontFamily: { displaySans: "proxima-nova", bodySans: "proxima-nova" } } }; } }); // ../../../node_modules/html2canvas/dist/html2canvas.js var require_html2canvas = __commonJS({ "../../../node_modules/html2canvas/dist/html2canvas.js"(exports, module) { (function(global2, factory) { typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory() : typeof define === "function" && define.amd ? define(factory) : (global2 = typeof globalThis !== "undefined" ? globalThis : global2 || self, global2.html2canvas = factory()); })(exports, function() { "use strict"; var extendStatics = function(d3, b3) { extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d4, b4) { d4.__proto__ = b4; } || function(d4, b4) { for (var p2 in b4) if (Object.prototype.hasOwnProperty.call(b4, p2)) d4[p2] = b4[p2]; }; return extendStatics(d3, b3); }; function __extends(d3, b3) { if (typeof b3 !== "function" && b3 !== null) throw new TypeError("Class extends value " + String(b3) + " is not a constructor or null"); extendStatics(d3, b3); function __() { this.constructor = d3; } d3.prototype = b3 === null ? Object.create(b3) : (__.prototype = b3.prototype, new __()); } var __assign = function() { __assign = Object.assign || function __assign2(t3) { for (var s3, i4 = 1, n3 = arguments.length; i4 < n3; i4++) { s3 = arguments[i4]; for (var p2 in s3) if (Object.prototype.hasOwnProperty.call(s3, p2)) t3[p2] = s3[p2]; } return t3; }; return __assign.apply(this, arguments); }; function __awaiter(thisArg, _arguments, P3, generator) { function adopt(value) { return value instanceof P3 ? value : new P3(function(resolve) { resolve(value); }); } return new (P3 || (P3 = Promise))(function(resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e4) { reject(e4); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e4) { reject(e4); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); } function __generator(thisArg, body) { var _3 = { label: 0, sent: function() { if (t3[0] & 1) throw t3[1]; return t3[1]; }, trys: [], ops: [] }, f4, y3, t3, g3; return g3 = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g3[Symbol.iterator] = function() { return this; }), g3; function verb(n3) { return function(v3) { return step([n3, v3]); }; } function step(op) { if (f4) throw new TypeError("Generator is already executing."); while (_3) try { if (f4 = 1, y3 && (t3 = op[0] & 2 ? y3["return"] : op[0] ? y3["throw"] || ((t3 = y3["return"]) && t3.call(y3), 0) : y3.next) && !(t3 = t3.call(y3, op[1])).done) return t3; if (y3 = 0, t3) op = [op[0] & 2, t3.value]; switch (op[0]) { case 0: case 1: t3 = op; break; case 4: _3.label++; return { value: op[1], done: false }; case 5: _3.label++; y3 = op[1]; op = [0]; continue; case 7: op = _3.ops.pop(); _3.trys.pop(); continue; default: if (!(t3 = _3.trys, t3 = t3.length > 0 && t3[t3.length - 1]) && (op[0] === 6 || op[0] === 2)) { _3 = 0; continue; } if (op[0] === 3 && (!t3 || op[1] > t3[0] && op[1] < t3[3])) { _3.label = op[1]; break; } if (op[0] === 6 && _3.label < t3[1]) { _3.label = t3[1]; t3 = op; break; } if (t3 && _3.label < t3[2]) { _3.label = t3[2]; _3.ops.push(op); break; } if (t3[2]) _3.ops.pop(); _3.trys.pop(); continue; } op = body.call(thisArg, _3); } catch (e4) { op = [6, e4]; y3 = 0; } finally { f4 = t3 = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } } function __spreadArray(to, from, pack2) { if (pack2 || arguments.length === 2) for (var i4 = 0, l3 = from.length, ar; i4 < l3; i4++) { if (ar || !(i4 in from)) { if (!ar) ar = Array.prototype.slice.call(from, 0, i4); ar[i4] = from[i4]; } } return to.concat(ar || from); } var Bounds = ( /** @class */ function() { function Bounds2(left2, top2, width, height) { this.left = left2; this.top = top2; this.width = width; this.height = height; } Bounds2.prototype.add = function(x3, y3, w3, h3) { return new Bounds2(this.left + x3, this.top + y3, this.width + w3, this.height + h3); }; Bounds2.fromClientRect = function(context, clientRect) { return new Bounds2(clientRect.left + context.windowBounds.left, clientRect.top + context.windowBounds.top, clientRect.width, clientRect.height); }; Bounds2.fromDOMRectList = function(context, domRectList) { var domRect = Array.from(domRectList).find(function(rect) { return rect.width !== 0; }); return domRect ? new Bounds2(domRect.left + context.windowBounds.left, domRect.top + context.windowBounds.top, domRect.width, domRect.height) : Bounds2.EMPTY; }; Bounds2.EMPTY = new Bounds2(0, 0, 0, 0); return Bounds2; }() ); var parseBounds = function(context, node) { return Bounds.fromClientRect(context, node.getBoundingClientRect()); }; var parseDocumentSize = function(document2) { var body = document2.body; var documentElement = document2.documentElement; if (!body || !documentElement) { throw new Error("Unable to get document size"); } var width = Math.max(Math.max(body.scrollWidth, documentElement.scrollWidth), Math.max(body.offsetWidth, documentElement.offsetWidth), Math.max(body.clientWidth, documentElement.clientWidth)); var height = Math.max(Math.max(body.scrollHeight, documentElement.scrollHeight), Math.max(body.offsetHeight, documentElement.offsetHeight), Math.max(body.clientHeight, documentElement.clientHeight)); return new Bounds(0, 0, width, height); }; var toCodePoints$1 = function(str) { var codePoints = []; var i4 = 0; var length = str.length; while (i4 < length) { var value = str.charCodeAt(i4++); if (value >= 55296 && value <= 56319 && i4 < length) { var extra = str.charCodeAt(i4++); if ((extra & 64512) === 56320) { codePoints.push(((value & 1023) << 10) + (extra & 1023) + 65536); } else { codePoints.push(value); i4--; } } else { codePoints.push(value); } } return codePoints; }; var fromCodePoint$1 = function() { var codePoints = []; for (var _i = 0; _i < arguments.length; _i++) { codePoints[_i] = arguments[_i]; } if (String.fromCodePoint) { return String.fromCodePoint.apply(String, codePoints); } var length = codePoints.length; if (!length) { return ""; } var codeUnits = []; var index = -1; var result = ""; while (++index < length) { var codePoint = codePoints[index]; if (codePoint <= 65535) { codeUnits.push(codePoint); } else { codePoint -= 65536; codeUnits.push((codePoint >> 10) + 55296, codePoint % 1024 + 56320); } if (index + 1 === length || codeUnits.length > 16384) { result += String.fromCharCode.apply(String, codeUnits); codeUnits.length = 0; } } return result; }; var chars$2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; var lookup$2 = typeof Uint8Array === "undefined" ? [] : new Uint8Array(256); for (var i$2 = 0; i$2 < chars$2.length; i$2++) { lookup$2[chars$2.charCodeAt(i$2)] = i$2; } var chars$1$1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; var lookup$1$1 = typeof Uint8Array === "undefined" ? [] : new Uint8Array(256); for (var i$1$1 = 0; i$1$1 < chars$1$1.length; i$1$1++) { lookup$1$1[chars$1$1.charCodeAt(i$1$1)] = i$1$1; } var decode$1 = function(base642) { var bufferLength = base642.length * 0.75, len = base642.length, i4, p2 = 0, encoded1, encoded2, encoded3, encoded4; if (base642[base642.length - 1] === "=") { bufferLength--; if (base642[base642.length - 2] === "=") { bufferLength--; } } var buffer = typeof ArrayBuffer !== "undefined" && typeof Uint8Array !== "undefined" && typeof Uint8Array.prototype.slice !== "undefined" ? new ArrayBuffer(bufferLength) : new Array(bufferLength); var bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer); for (i4 = 0; i4 < len; i4 += 4) { encoded1 = lookup$1$1[base642.charCodeAt(i4)]; encoded2 = lookup$1$1[base642.charCodeAt(i4 + 1)]; encoded3 = lookup$1$1[base642.charCodeAt(i4 + 2)]; encoded4 = lookup$1$1[base642.charCodeAt(i4 + 3)]; bytes[p2++] = encoded1 << 2 | encoded2 >> 4; bytes[p2++] = (encoded2 & 15) << 4 | encoded3 >> 2; bytes[p2++] = (encoded3 & 3) << 6 | encoded4 & 63; } return buffer; }; var polyUint16Array$1 = function(buffer) { var length = buffer.length; var bytes = []; for (var i4 = 0; i4 < length; i4 += 2) { bytes.push(buffer[i4 + 1] << 8 | buffer[i4]); } return bytes; }; var polyUint32Array$1 = function(buffer) { var length = buffer.length; var bytes = []; for (var i4 = 0; i4 < length; i4 += 4) { bytes.push(buffer[i4 + 3] << 24 | buffer[i4 + 2] << 16 | buffer[i4 + 1] << 8 | buffer[i4]); } return bytes; }; var UTRIE2_SHIFT_2$1 = 5; var UTRIE2_SHIFT_1$1 = 6 + 5; var UTRIE2_INDEX_SHIFT$1 = 2; var UTRIE2_SHIFT_1_2$1 = UTRIE2_SHIFT_1$1 - UTRIE2_SHIFT_2$1; var UTRIE2_LSCP_INDEX_2_OFFSET$1 = 65536 >> UTRIE2_SHIFT_2$1; var UTRIE2_DATA_BLOCK_LENGTH$1 = 1 << UTRIE2_SHIFT_2$1; var UTRIE2_DATA_MASK$1 = UTRIE2_DATA_BLOCK_LENGTH$1 - 1; var UTRIE2_LSCP_INDEX_2_LENGTH$1 = 1024 >> UTRIE2_SHIFT_2$1; var UTRIE2_INDEX_2_BMP_LENGTH$1 = UTRIE2_LSCP_INDEX_2_OFFSET$1 + UTRIE2_LSCP_INDEX_2_LENGTH$1; var UTRIE2_UTF8_2B_INDEX_2_OFFSET$1 = UTRIE2_INDEX_2_BMP_LENGTH$1; var UTRIE2_UTF8_2B_INDEX_2_LENGTH$1 = 2048 >> 6; var UTRIE2_INDEX_1_OFFSET$1 = UTRIE2_UTF8_2B_INDEX_2_OFFSET$1 + UTRIE2_UTF8_2B_INDEX_2_LENGTH$1; var UTRIE2_OMITTED_BMP_INDEX_1_LENGTH$1 = 65536 >> UTRIE2_SHIFT_1$1; var UTRIE2_INDEX_2_BLOCK_LENGTH$1 = 1 << UTRIE2_SHIFT_1_2$1; var UTRIE2_INDEX_2_MASK$1 = UTRIE2_INDEX_2_BLOCK_LENGTH$1 - 1; var slice16$1 = function(view, start5, end2) { if (view.slice) { return view.slice(start5, end2); } return new Uint16Array(Array.prototype.slice.call(view, start5, end2)); }; var slice32$1 = function(view, start5, end2) { if (view.slice) { return view.slice(start5, end2); } return new Uint32Array(Array.prototype.slice.call(view, start5, end2)); }; var createTrieFromBase64$1 = function(base642, _byteLength) { var buffer = decode$1(base642); var view32 = Array.isArray(buffer) ? polyUint32Array$1(buffer) : new Uint32Array(buffer); var view16 = Array.isArray(buffer) ? polyUint16Array$1(buffer) : new Uint16Array(buffer); var headerLength = 24; var index = slice16$1(view16, headerLength / 2, view32[4] / 2); var data2 = view32[5] === 2 ? slice16$1(view16, (headerLength + view32[4]) / 2) : slice32$1(view32, Math.ceil((headerLength + view32[4]) / 4)); return new Trie$1(view32[0], view32[1], view32[2], view32[3], index, data2); }; var Trie$1 = ( /** @class */ function() { function Trie2(initialValue, errorValue, highStart, highValueIndex, index, data2) { this.initialValue = initialValue; this.errorValue = errorValue; this.highStart = highStart; this.highValueIndex = highValueIndex; this.index = index; this.data = data2; } Trie2.prototype.get = function(codePoint) { var ix; if (codePoint >= 0) { if (codePoint < 55296 || codePoint > 56319 && codePoint <= 65535) { ix = this.index[codePoint >> UTRIE2_SHIFT_2$1]; ix = (ix << UTRIE2_INDEX_SHIFT$1) + (codePoint & UTRIE2_DATA_MASK$1); return this.data[ix]; } if (codePoint <= 65535) { ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET$1 + (codePoint - 55296 >> UTRIE2_SHIFT_2$1)]; ix = (ix << UTRIE2_INDEX_SHIFT$1) + (codePoint & UTRIE2_DATA_MASK$1); return this.data[ix]; } if (codePoint < this.highStart) { ix = UTRIE2_INDEX_1_OFFSET$1 - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH$1 + (codePoint >> UTRIE2_SHIFT_1$1); ix = this.index[ix]; ix += codePoint >> UTRIE2_SHIFT_2$1 & UTRIE2_INDEX_2_MASK$1; ix = this.index[ix]; ix = (ix << UTRIE2_INDEX_SHIFT$1) + (codePoint & UTRIE2_DATA_MASK$1); return this.data[ix]; } if (codePoint <= 1114111) { return this.data[this.highValueIndex]; } } return this.errorValue; }; return Trie2; }() ); var chars$3 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; var lookup$3 = typeof Uint8Array === "undefined" ? [] : new Uint8Array(256); for (var i$3 = 0; i$3 < chars$3.length; i$3++) { lookup$3[chars$3.charCodeAt(i$3)] = i$3; } var base64$1 = "KwAAAAAAAAAACA4AUD0AADAgAAACAAAAAAAIABAAGABAAEgAUABYAGAAaABgAGgAYgBqAF8AZwBgAGgAcQB5AHUAfQCFAI0AlQCdAKIAqgCyALoAYABoAGAAaABgAGgAwgDKAGAAaADGAM4A0wDbAOEA6QDxAPkAAQEJAQ8BFwF1AH0AHAEkASwBNAE6AUIBQQFJAVEBWQFhAWgBcAF4ATAAgAGGAY4BlQGXAZ8BpwGvAbUBvQHFAc0B0wHbAeMB6wHxAfkBAQIJAvEBEQIZAiECKQIxAjgCQAJGAk4CVgJeAmQCbAJ0AnwCgQKJApECmQKgAqgCsAK4ArwCxAIwAMwC0wLbAjAA4wLrAvMC+AIAAwcDDwMwABcDHQMlAy0DNQN1AD0DQQNJA0kDSQNRA1EDVwNZA1kDdQB1AGEDdQBpA20DdQN1AHsDdQCBA4kDkQN1AHUAmQOhA3UAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AKYDrgN1AHUAtgO+A8YDzgPWAxcD3gPjA+sD8wN1AHUA+wMDBAkEdQANBBUEHQQlBCoEFwMyBDgEYABABBcDSARQBFgEYARoBDAAcAQzAXgEgASIBJAEdQCXBHUAnwSnBK4EtgS6BMIEyAR1AHUAdQB1AHUAdQCVANAEYABgAGAAYABgAGAAYABgANgEYADcBOQEYADsBPQE/AQEBQwFFAUcBSQFLAU0BWQEPAVEBUsFUwVbBWAAYgVgAGoFcgV6BYIFigWRBWAAmQWfBaYFYABgAGAAYABgAKoFYACxBbAFuQW6BcEFwQXHBcEFwQXPBdMF2wXjBeoF8gX6BQIGCgYSBhoGIgYqBjIGOgZgAD4GRgZMBmAAUwZaBmAAYABgAGAAYABgAGAAYABgAGAAYABgAGIGYABpBnAGYABgAGAAYABgAGAAYABgAGAAYAB4Bn8GhQZgAGAAYAB1AHcDFQSLBmAAYABgAJMGdQA9A3UAmwajBqsGqwaVALMGuwbDBjAAywbSBtIG1QbSBtIG0gbSBtIG0gbdBuMG6wbzBvsGAwcLBxMHAwcbByMHJwcsBywHMQcsB9IGOAdAB0gHTgfSBkgHVgfSBtIG0gbSBtIG0gbSBtIG0gbSBiwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdgAGAALAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdbB2MHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB2kH0gZwB64EdQB1AHUAdQB1AHUAdQB1AHUHfQdgAIUHjQd1AHUAlQedB2AAYAClB6sHYACzB7YHvgfGB3UAzgfWBzMB3gfmB1EB7gf1B/0HlQENAQUIDQh1ABUIHQglCBcDLQg1CD0IRQhNCEEDUwh1AHUAdQBbCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIcAh3CHoIMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIgggwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAALAcsBywHLAcsBywHLAcsBywHLAcsB4oILAcsB44I0gaWCJ4Ipgh1AHUAqgiyCHUAdQB1AHUAdQB1AHUAdQB1AHUAtwh8AXUAvwh1AMUIyQjRCNkI4AjoCHUAdQB1AO4I9gj+CAYJDgkTCS0HGwkjCYIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiAAIAAAAFAAYABgAGIAXwBgAHEAdQBFAJUAogCyAKAAYABgAEIA4ABGANMA4QDxAMEBDwE1AFwBLAE6AQEBUQF4QkhCmEKoQrhCgAHIQsAB0MLAAcABwAHAAeDC6ABoAHDCwMMAAcABwAHAAdDDGMMAAcAB6MM4wwjDWMNow3jDaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAEjDqABWw6bDqABpg6gAaABoAHcDvwOPA+gAaABfA/8DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DpcPAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcAB9cPKwkyCToJMAB1AHUAdQBCCUoJTQl1AFUJXAljCWcJawkwADAAMAAwAHMJdQB2CX4JdQCECYoJjgmWCXUAngkwAGAAYABxAHUApgn3A64JtAl1ALkJdQDACTAAMAAwADAAdQB1AHUAdQB1AHUAdQB1AHUAowYNBMUIMAAwADAAMADICcsJ0wnZCRUE4QkwAOkJ8An4CTAAMAB1AAAKvwh1AAgKDwoXCh8KdQAwACcKLgp1ADYKqAmICT4KRgowADAAdQB1AE4KMAB1AFYKdQBeCnUAZQowADAAMAAwADAAMAAwADAAMAAVBHUAbQowADAAdQC5CXUKMAAwAHwBxAijBogEMgF9CoQKiASMCpQKmgqIBKIKqgquCogEDQG2Cr4KxgrLCjAAMADTCtsKCgHjCusK8Qr5CgELMAAwADAAMAB1AIsECQsRC3UANAEZCzAAMAAwADAAMAB1ACELKQswAHUANAExCzkLdQBBC0kLMABRC1kLMAAwADAAMAAwADAAdQBhCzAAMAAwAGAAYABpC3ELdwt/CzAAMACHC4sLkwubC58Lpwt1AK4Ltgt1APsDMAAwADAAMAAwADAAMAAwAL4LwwvLC9IL1wvdCzAAMADlC+kL8Qv5C/8LSQswADAAMAAwADAAMAAwADAAMAAHDDAAMAAwADAAMAAODBYMHgx1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1ACYMMAAwADAAdQB1AHUALgx1AHUAdQB1AHUAdQA2DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AD4MdQBGDHUAdQB1AHUAdQB1AEkMdQB1AHUAdQB1AFAMMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQBYDHUAdQB1AF8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUA+wMVBGcMMAAwAHwBbwx1AHcMfwyHDI8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAYABgAJcMMAAwADAAdQB1AJ8MlQClDDAAMACtDCwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB7UMLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AA0EMAC9DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAsBywHLAcsBywHLAcsBywHLQcwAMEMyAwsBywHLAcsBywHLAcsBywHLAcsBywHzAwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1ANQM2QzhDDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMABgAGAAYABgAGAAYABgAOkMYADxDGAA+AwADQYNYABhCWAAYAAODTAAMAAwADAAFg1gAGAAHg37AzAAMAAwADAAYABgACYNYAAsDTQNPA1gAEMNPg1LDWAAYABgAGAAYABgAGAAYABgAGAAUg1aDYsGVglhDV0NcQBnDW0NdQ15DWAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAlQCBDZUAiA2PDZcNMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAnw2nDTAAMAAwADAAMAAwAHUArw23DTAAMAAwADAAMAAwADAAMAAwADAAMAB1AL8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQDHDTAAYABgAM8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA1w11ANwNMAAwAD0B5A0wADAAMAAwADAAMADsDfQN/A0EDgwOFA4wABsOMAAwADAAMAAwADAAMAAwANIG0gbSBtIG0gbSBtIG0gYjDigOwQUuDsEFMw7SBjoO0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGQg5KDlIOVg7SBtIGXg5lDm0OdQ7SBtIGfQ6EDooOjQ6UDtIGmg6hDtIG0gaoDqwO0ga0DrwO0gZgAGAAYADEDmAAYAAkBtIGzA5gANIOYADaDokO0gbSBt8O5w7SBu8O0gb1DvwO0gZgAGAAxA7SBtIG0gbSBtIGYABgAGAAYAAED2AAsAUMD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHJA8sBywHLAcsBywHLAccDywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywPLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAc0D9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHPA/SBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gYUD0QPlQCVAJUAMAAwADAAMACVAJUAlQCVAJUAlQCVAEwPMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA//8EAAQABAAEAAQABAAEAAQABAANAAMAAQABAAIABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQACgATABcAHgAbABoAHgAXABYAEgAeABsAGAAPABgAHABLAEsASwBLAEsASwBLAEsASwBLABgAGAAeAB4AHgATAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYAGwASAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWAA0AEQAeAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAFAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJABYAGgAbABsAGwAeAB0AHQAeAE8AFwAeAA0AHgAeABoAGwBPAE8ADgBQAB0AHQAdAE8ATwAXAE8ATwBPABYAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAFAATwBAAE8ATwBPAEAATwBQAFAATwBQAB4AHgAeAB4AHgAeAB0AHQAdAB0AHgAdAB4ADgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgBQAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkACQAJAAkACQAJAAkABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAFAAHgAeAB4AKwArAFAAUABQAFAAGABQACsAKwArACsAHgAeAFAAHgBQAFAAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUAAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAYAA0AKwArAB4AHgAbACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAB4ABAAEAB4ABAAEABMABAArACsAKwArACsAKwArACsAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAKwArACsAKwBWAFYAVgBWAB4AHgArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AGgAaABoAGAAYAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQAEwAEACsAEwATAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABLAEsASwBLAEsASwBLAEsASwBLABoAGQAZAB4AUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABMAUAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABABQAFAABAAEAB4ABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUAAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAFAABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQAUABQAB4AHgAYABMAUAArACsABAAbABsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAFAABAAEAAQABAAEAFAABAAEAAQAUAAEAAQABAAEAAQAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArACsAHgArAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAUAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEAA0ADQBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUAArACsAKwBQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABABQACsAKwArACsAKwArACsAKwAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUAAaABoAUABQAFAAUABQAEwAHgAbAFAAHgAEACsAKwAEAAQABAArAFAAUABQAFAAUABQACsAKwArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQACsAUABQACsAKwAEACsABAAEAAQABAAEACsAKwArACsABAAEACsAKwAEAAQABAArACsAKwAEACsAKwArACsAKwArACsAUABQAFAAUAArAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLAAQABABQAFAAUAAEAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAArACsAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AGwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAKwArACsAKwArAAQABAAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAAQAUAArAFAAUABQAFAAUABQACsAKwArAFAAUABQACsAUABQAFAAUAArACsAKwBQAFAAKwBQACsAUABQACsAKwArAFAAUAArACsAKwBQAFAAUAArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAAQABAAEAAQABAArACsAKwAEAAQABAArAAQABAAEAAQAKwArAFAAKwArACsAKwArACsABAArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAHgAeAB4AHgAeAB4AGwAeACsAKwArACsAKwAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAUABQAFAAKwArACsAKwArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwAOAFAAUABQAFAAUABQAFAAHgBQAAQABAAEAA4AUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAKwArAAQAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAKwArACsAKwArACsAUAArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABABQAB4AKwArACsAKwBQAFAAUAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQABoAUABQAFAAUABQAFAAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQACsAUAArACsAUABQAFAAUABQAFAAUAArACsAKwAEACsAKwArACsABAAEAAQABAAEAAQAKwAEACsABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgAqACsAKwArACsAGwBcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAeAEsASwBLAEsASwBLAEsASwBLAEsADQANACsAKwArACsAKwBcAFwAKwBcACsAXABcAFwAXABcACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAXAArAFwAXABcAFwAXABcAFwAXABcAFwAKgBcAFwAKgAqACoAKgAqACoAKgAqACoAXAArACsAXABcAFwAXABcACsAXAArACoAKgAqACoAKgAqACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwBcAFwAXABcAFAADgAOAA4ADgAeAA4ADgAJAA4ADgANAAkAEwATABMAEwATAAkAHgATAB4AHgAeAAQABAAeAB4AHgAeAB4AHgBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQAFAADQAEAB4ABAAeAAQAFgARABYAEQAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAAQABAAEAAQADQAEAAQAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAA0ADQAeAB4AHgAeAB4AHgAEAB4AHgAeAB4AHgAeACsAHgAeAA4ADgANAA4AHgAeAB4AHgAeAAkACQArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgBcAEsASwBLAEsASwBLAEsASwBLAEsADQANAB4AHgAeAB4AXABcAFwAXABcAFwAKgAqACoAKgBcAFwAXABcACoAKgAqAFwAKgAqACoAXABcACoAKgAqACoAKgAqACoAXABcAFwAKgAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqAFwAKgBLAEsASwBLAEsASwBLAEsASwBLACoAKgAqACoAKgAqAFAAUABQAFAAUABQACsAUAArACsAKwArACsAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAKwBQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsABAAEAAQAHgANAB4AHgAeAB4AHgAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUAArACsADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWABEAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQANAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAANAA0AKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUAArAAQABAArACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqAA0ADQAVAFwADQAeAA0AGwBcACoAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwAeAB4AEwATAA0ADQAOAB4AEwATAB4ABAAEAAQACQArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAHgArACsAKwATABMASwBLAEsASwBLAEsASwBLAEsASwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAXABcAFwAXABcACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAXAArACsAKwAqACoAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsAHgAeAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKwAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKwArAAQASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACoAKgAqACoAKgAqACoAXAAqACoAKgAqACoAKgArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABABQAFAAUABQAFAAUABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwANAA0AHgANAA0ADQANAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwAeAB4AHgAeAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArAA0ADQANAA0ADQBLAEsASwBLAEsASwBLAEsASwBLACsAKwArAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUAAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAAQAUABQAFAAUABQAFAABABQAFAABAAEAAQAUAArACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQACsAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQACsAKwAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQACsAHgAeAB4AHgAeAB4AHgAOAB4AKwANAA0ADQANAA0ADQANAAkADQANAA0ACAAEAAsABAAEAA0ACQANAA0ADAAdAB0AHgAXABcAFgAXABcAFwAWABcAHQAdAB4AHgAUABQAFAANAAEAAQAEAAQABAAEAAQACQAaABoAGgAaABoAGgAaABoAHgAXABcAHQAVABUAHgAeAB4AHgAeAB4AGAAWABEAFQAVABUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ADQAeAA0ADQANAA0AHgANAA0ADQAHAB4AHgAeAB4AKwAEAAQABAAEAAQABAAEAAQABAAEAFAAUAArACsATwBQAFAAUABQAFAAHgAeAB4AFgARAE8AUABPAE8ATwBPAFAAUABQAFAAUAAeAB4AHgAWABEAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArABsAGwAbABsAGwAbABsAGgAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGgAbABsAGwAbABoAGwAbABoAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAHgAeAFAAGgAeAB0AHgBQAB4AGgAeAB4AHgAeAB4AHgAeAB4AHgBPAB4AUAAbAB4AHgBQAFAAUABQAFAAHgAeAB4AHQAdAB4AUAAeAFAAHgBQAB4AUABPAFAAUAAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgBQAFAAUABQAE8ATwBQAFAAUABQAFAATwBQAFAATwBQAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAUABQAFAATwBPAE8ATwBPAE8ATwBPAE8ATwBQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABPAB4AHgArACsAKwArAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHQAdAB4AHgAeAB0AHQAeAB4AHQAeAB4AHgAdAB4AHQAbABsAHgAdAB4AHgAeAB4AHQAeAB4AHQAdAB0AHQAeAB4AHQAeAB0AHgAdAB0AHQAdAB0AHQAeAB0AHgAeAB4AHgAeAB0AHQAdAB0AHgAeAB4AHgAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB0AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAdAB0AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAWABEAHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AHQAdAB0AHgAeAB0AHgAeAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlAB4AHQAdAB4AHgAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AJQAlAB0AHQAlAB4AJQAlACUAIAAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAdAB0AHQAeAB0AJQAdAB0AHgAdAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAdAB0AHQAdACUAHgAlACUAJQAdACUAJQAdAB0AHQAlACUAHQAdACUAHQAdACUAJQAlAB4AHQAeAB4AHgAeAB0AHQAlAB0AHQAdAB0AHQAdACUAJQAlACUAJQAdACUAJQAgACUAHQAdACUAJQAlACUAJQAlACUAJQAeAB4AHgAlACUAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AFwAXABcAFwAXABcAHgATABMAJQAeAB4AHgAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARABYAEQAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAeAB4AKwArACsAKwArABMADQANAA0AUAATAA0AUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUAANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAA0ADQANAA0ADQANAA0ADQAeAA0AFgANAB4AHgAXABcAHgAeABcAFwAWABEAFgARABYAEQAWABEADQANAA0ADQATAFAADQANAB4ADQANAB4AHgAeAB4AHgAMAAwADQANAA0AHgANAA0AFgANAA0ADQANAA0ADQANAA0AHgANAB4ADQANAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArAA0AEQARACUAJQBHAFcAVwAWABEAFgARABYAEQAWABEAFgARACUAJQAWABEAFgARABYAEQAWABEAFQAWABEAEQAlAFcAVwBXAFcAVwBXAFcAVwBXAAQABAAEAAQABAAEACUAVwBXAFcAVwA2ACUAJQBXAFcAVwBHAEcAJQAlACUAKwBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBRAFcAUQBXAFEAVwBXAFcAVwBXAFcAUQBXAFcAVwBXAFcAVwBRAFEAKwArAAQABAAVABUARwBHAFcAFQBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBRAFcAVwBXAFcAVwBXAFEAUQBXAFcAVwBXABUAUQBHAEcAVwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwAlACUAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACsAKwArACsAKwArACsAKwArACsAKwArAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBPAE8ATwBPAE8ATwBPAE8AJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADQATAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQAHgBQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAeAA0ADQANAA0ADQArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAAQAUABQAFAABABQAFAAUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAeAB4AHgAeAAQAKwArACsAUABQAFAAUABQAFAAHgAeABoAHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADgAOABMAEwArACsAKwArACsAKwArACsABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUAAeAB4AHgBQAA4AUABQAAQAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAB4AWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYACsAKwArAAQAHgAeAB4AHgAeAB4ADQANAA0AHgAeAB4AHgArAFAASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArAB4AHgBcAFwAXABcAFwAKgBcAFwAXABcAFwAXABcAFwAXABcAEsASwBLAEsASwBLAEsASwBLAEsAXABcAFwAXABcACsAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAFAAUABQAAQAUABQAFAAUABQAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAHgANAA0ADQBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAKgAqACoAXABcACoAKgBcAFwAXABcAFwAKgAqAFwAKgBcACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAA0ADQBQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQADQAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAVABVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBUAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVACsAKwArACsAKwArACsAKwArACsAKwArAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAKwArACsAKwBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAKwArACsAKwAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArACsAKwArAFYABABWAFYAVgBWAFYAVgBWAFYAVgBWAB4AVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgArAFYAVgBWAFYAVgArAFYAKwBWAFYAKwBWAFYAKwBWAFYAVgBWAFYAVgBWAFYAVgBWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAEQAWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAaAB4AKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAGAARABEAGAAYABMAEwAWABEAFAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACUAJQAlACUAJQAWABEAFgARABYAEQAWABEAFgARABYAEQAlACUAFgARACUAJQAlACUAJQAlACUAEQAlABEAKwAVABUAEwATACUAFgARABYAEQAWABEAJQAlACUAJQAlACUAJQAlACsAJQAbABoAJQArACsAKwArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAcAKwATACUAJQAbABoAJQAlABYAEQAlACUAEQAlABEAJQBXAFcAVwBXAFcAVwBXAFcAVwBXABUAFQAlACUAJQATACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXABYAJQARACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAWACUAEQAlABYAEQARABYAEQARABUAVwBRAFEAUQBRAFEAUQBRAFEAUQBRAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcARwArACsAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXACsAKwBXAFcAVwBXAFcAVwArACsAVwBXAFcAKwArACsAGgAbACUAJQAlABsAGwArAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAAQAB0AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsADQANAA0AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAA0AUABQAFAAUAArACsAKwArAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwBQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAUABQAFAAUABQAAQABAAEACsABAAEACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAKwBQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAA0ADQANAA0ADQANAA0ADQAeACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAArACsAKwArAFAAUABQAFAAUAANAA0ADQANAA0ADQAUACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsADQANAA0ADQANAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArAAQABAANACsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAB4AHgAeAB4AHgArACsAKwArACsAKwAEAAQABAAEAAQABAAEAA0ADQAeAB4AHgAeAB4AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsASwBLAEsASwBLAEsASwBLAEsASwANAA0ADQANAFAABAAEAFAAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAeAA4AUAArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAADQANAB4ADQAEAAQABAAEAB4ABAAEAEsASwBLAEsASwBLAEsASwBLAEsAUAAOAFAADQANAA0AKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAA0AHgANAA0AHgAEACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAA0AKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsABAAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAUAArACsAKwArACsAKwAEACsAKwArACsAKwBQAFAAUABQAFAABAAEACsAKwAEAAQABAAEAAQABAAEACsAKwArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABABQAFAAUABQAA0ADQANAA0AHgBLAEsASwBLAEsASwBLAEsASwBLAA0ADQArAB4ABABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUAAeAFAAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABAAEAAQADgANAA0AEwATAB4AHgAeAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAFAAUABQAFAABAAEACsAKwAEAA0ADQAeAFAAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKwArACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBcAFwADQANAA0AKgBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQAKwAEAAQAKwArAAQABAAEAAQAUAAEAFAABAAEAA0ADQANACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABABQAA4AUAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAOAB4ADQANAA0ADQAOAB4ABAArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAA0ADQANAFAADgAOAA4ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAFAADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAOABMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAArACsAKwAEACsABAAEACsABAAEAAQABAAEAAQABABQAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAaABoAGgAaAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABIAEgAQwBDAEMAUABQAFAAUABDAFAAUABQAEgAQwBIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABDAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAJAAkACQAJAAkACQAJABYAEQArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwANAA0AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAANACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQANAB4AHgAeAB4AHgAeAFAAUABQAFAADQAeACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAA0AHgAeACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAARwBHABUARwAJACsAKwArACsAKwArACsAKwArACsAKwAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUQBRAFEAKwArACsAKwArACsAKwArACsAKwArACsAKwBRAFEAUQBRACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAHgAEAAQADQAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQABAAEAAQABAAeAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQAHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAKwArAFAAKwArAFAAUAArACsAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUAArAFAAUABQAFAAUABQAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAHgAeAFAAUABQAFAAUAArAFAAKwArACsAUABQAFAAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeACsAKwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4ABAAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAHgAeAA0ADQANAA0AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArAAQABAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwBQAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArABsAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAB4AHgAeAB4ABAAEAAQABAAEAAQABABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArABYAFgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAGgBQAFAAUAAaAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUAArACsAKwArACsAKwBQACsAKwArACsAUAArAFAAKwBQACsAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUAArAFAAKwBQACsAUAArAFAAUAArAFAAKwArAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAKwBQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AJQAlACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeACUAJQAlAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAlACUAJQAlACUAHgAlACUAJQAlACUAIAAgACAAJQAlACAAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACEAIQAhACEAIQAlACUAIAAgACUAJQAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAIAAlACUAJQAlACAAIAAgACUAIAAgACAAJQAlACUAJQAlACUAJQAgACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAlAB4AJQAeACUAJQAlACUAJQAgACUAJQAlACUAHgAlAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACAAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABcAFwAXABUAFQAVAB4AHgAeAB4AJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAgACUAJQAgACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAIAAgACUAJQAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACAAIAAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACAAIAAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAA=="; var LETTER_NUMBER_MODIFIER = 50; var BK = 1; var CR$1 = 2; var LF$1 = 3; var CM = 4; var NL = 5; var WJ = 7; var ZW = 8; var GL = 9; var SP = 10; var ZWJ$1 = 11; var B2 = 12; var BA = 13; var BB = 14; var HY = 15; var CB = 16; var CL = 17; var CP = 18; var EX = 19; var IN = 20; var NS = 21; var OP = 22; var QU = 23; var IS = 24; var NU = 25; var PO = 26; var PR = 27; var SY = 28; var AI = 29; var AL = 30; var CJ = 31; var EB = 32; var EM = 33; var H22 = 34; var H3 = 35; var HL = 36; var ID = 37; var JL = 38; var JV = 39; var JT = 40; var RI$1 = 41; var SA = 42; var XX = 43; var ea_OP = [9001, 65288]; var BREAK_MANDATORY = "!"; var BREAK_NOT_ALLOWED$1 = "\xD7"; var BREAK_ALLOWED$1 = "\xF7"; var UnicodeTrie$1 = createTrieFromBase64$1(base64$1); var ALPHABETICS = [AL, HL]; var HARD_LINE_BREAKS = [BK, CR$1, LF$1, NL]; var SPACE$1 = [SP, ZW]; var PREFIX_POSTFIX = [PR, PO]; var LINE_BREAKS = HARD_LINE_BREAKS.concat(SPACE$1); var KOREAN_SYLLABLE_BLOCK = [JL, JV, JT, H22, H3]; var HYPHEN = [HY, BA]; var codePointsToCharacterClasses = function(codePoints, lineBreak2) { if (lineBreak2 === void 0) { lineBreak2 = "strict"; } var types = []; var indices = []; var categories = []; codePoints.forEach(function(codePoint, index) { var classType = UnicodeTrie$1.get(codePoint); if (classType > LETTER_NUMBER_MODIFIER) { categories.push(true); classType -= LETTER_NUMBER_MODIFIER; } else { categories.push(false); } if (["normal", "auto", "loose"].indexOf(lineBreak2) !== -1) { if ([8208, 8211, 12316, 12448].indexOf(codePoint) !== -1) { indices.push(index); return types.push(CB); } } if (classType === CM || classType === ZWJ$1) { if (index === 0) { indices.push(index); return types.push(AL); } var prev = types[index - 1]; if (LINE_BREAKS.indexOf(prev) === -1) { indices.push(indices[index - 1]); return types.push(prev); } indices.push(index); return types.push(AL); } indices.push(index); if (classType === CJ) { return types.push(lineBreak2 === "strict" ? NS : ID); } if (classType === SA) { return types.push(AL); } if (classType === AI) { return types.push(AL); } if (classType === XX) { if (codePoint >= 131072 && codePoint <= 196605 || codePoint >= 196608 && codePoint <= 262141) { return types.push(ID); } else { return types.push(AL); } } types.push(classType); }); return [indices, types, categories]; }; var isAdjacentWithSpaceIgnored = function(a4, b3, currentIndex, classTypes) { var current = classTypes[currentIndex]; if (Array.isArray(a4) ? a4.indexOf(current) !== -1 : a4 === current) { var i4 = currentIndex; while (i4 <= classTypes.length) { i4++; var next = classTypes[i4]; if (next === b3) { return true; } if (next !== SP) { break; } } } if (current === SP) { var i4 = currentIndex; while (i4 > 0) { i4--; var prev = classTypes[i4]; if (Array.isArray(a4) ? a4.indexOf(prev) !== -1 : a4 === prev) { var n3 = currentIndex; while (n3 <= classTypes.length) { n3++; var next = classTypes[n3]; if (next === b3) { return true; } if (next !== SP) { break; } } } if (prev !== SP) { break; } } } return false; }; var previousNonSpaceClassType = function(currentIndex, classTypes) { var i4 = currentIndex; while (i4 >= 0) { var type = classTypes[i4]; if (type === SP) { i4--; } else { return type; } } return 0; }; var _lineBreakAtIndex = function(codePoints, classTypes, indicies, index, forbiddenBreaks) { if (indicies[index] === 0) { return BREAK_NOT_ALLOWED$1; } var currentIndex = index - 1; if (Array.isArray(forbiddenBreaks) && forbiddenBreaks[currentIndex] === true) { return BREAK_NOT_ALLOWED$1; } var beforeIndex = currentIndex - 1; var afterIndex = currentIndex + 1; var current = classTypes[currentIndex]; var before = beforeIndex >= 0 ? classTypes[beforeIndex] : 0; var next = classTypes[afterIndex]; if (current === CR$1 && next === LF$1) { return BREAK_NOT_ALLOWED$1; } if (HARD_LINE_BREAKS.indexOf(current) !== -1) { return BREAK_MANDATORY; } if (HARD_LINE_BREAKS.indexOf(next) !== -1) { return BREAK_NOT_ALLOWED$1; } if (SPACE$1.indexOf(next) !== -1) { return BREAK_NOT_ALLOWED$1; } if (previousNonSpaceClassType(currentIndex, classTypes) === ZW) { return BREAK_ALLOWED$1; } if (UnicodeTrie$1.get(codePoints[currentIndex]) === ZWJ$1) { return BREAK_NOT_ALLOWED$1; } if ((current === EB || current === EM) && UnicodeTrie$1.get(codePoints[afterIndex]) === ZWJ$1) { return BREAK_NOT_ALLOWED$1; } if (current === WJ || next === WJ) { return BREAK_NOT_ALLOWED$1; } if (current === GL) { return BREAK_NOT_ALLOWED$1; } if ([SP, BA, HY].indexOf(current) === -1 && next === GL) { return BREAK_NOT_ALLOWED$1; } if ([CL, CP, EX, IS, SY].indexOf(next) !== -1) { return BREAK_NOT_ALLOWED$1; } if (previousNonSpaceClassType(currentIndex, classTypes) === OP) { return BREAK_NOT_ALLOWED$1; } if (isAdjacentWithSpaceIgnored(QU, OP, currentIndex, classTypes)) { return BREAK_NOT_ALLOWED$1; } if (isAdjacentWithSpaceIgnored([CL, CP], NS, currentIndex, classTypes)) { return BREAK_NOT_ALLOWED$1; } if (isAdjacentWithSpaceIgnored(B2, B2, currentIndex, classTypes)) { return BREAK_NOT_ALLOWED$1; } if (current === SP) { return BREAK_ALLOWED$1; } if (current === QU || next === QU) { return BREAK_NOT_ALLOWED$1; } if (next === CB || current === CB) { return BREAK_ALLOWED$1; } if ([BA, HY, NS].indexOf(next) !== -1 || current === BB) { return BREAK_NOT_ALLOWED$1; } if (before === HL && HYPHEN.indexOf(current) !== -1) { return BREAK_NOT_ALLOWED$1; } if (current === SY && next === HL) { return BREAK_NOT_ALLOWED$1; } if (next === IN) { return BREAK_NOT_ALLOWED$1; } if (ALPHABETICS.indexOf(next) !== -1 && current === NU || ALPHABETICS.indexOf(current) !== -1 && next === NU) { return BREAK_NOT_ALLOWED$1; } if (current === PR && [ID, EB, EM].indexOf(next) !== -1 || [ID, EB, EM].indexOf(current) !== -1 && next === PO) { return BREAK_NOT_ALLOWED$1; } if (ALPHABETICS.indexOf(current) !== -1 && PREFIX_POSTFIX.indexOf(next) !== -1 || PREFIX_POSTFIX.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1) { return BREAK_NOT_ALLOWED$1; } if ( // (PR | PO) × ( OP | HY )? NU [PR, PO].indexOf(current) !== -1 && (next === NU || [OP, HY].indexOf(next) !== -1 && classTypes[afterIndex + 1] === NU) || // ( OP | HY ) × NU [OP, HY].indexOf(current) !== -1 && next === NU || // NU × (NU | SY | IS) current === NU && [NU, SY, IS].indexOf(next) !== -1 ) { return BREAK_NOT_ALLOWED$1; } if ([NU, SY, IS, CL, CP].indexOf(next) !== -1) { var prevIndex = currentIndex; while (prevIndex >= 0) { var type = classTypes[prevIndex]; if (type === NU) { return BREAK_NOT_ALLOWED$1; } else if ([SY, IS].indexOf(type) !== -1) { prevIndex--; } else { break; } } } if ([PR, PO].indexOf(next) !== -1) { var prevIndex = [CL, CP].indexOf(current) !== -1 ? beforeIndex : currentIndex; while (prevIndex >= 0) { var type = classTypes[prevIndex]; if (type === NU) { return BREAK_NOT_ALLOWED$1; } else if ([SY, IS].indexOf(type) !== -1) { prevIndex--; } else { break; } } } if (JL === current && [JL, JV, H22, H3].indexOf(next) !== -1 || [JV, H22].indexOf(current) !== -1 && [JV, JT].indexOf(next) !== -1 || [JT, H3].indexOf(current) !== -1 && next === JT) { return BREAK_NOT_ALLOWED$1; } if (KOREAN_SYLLABLE_BLOCK.indexOf(current) !== -1 && [IN, PO].indexOf(next) !== -1 || KOREAN_SYLLABLE_BLOCK.indexOf(next) !== -1 && current === PR) { return BREAK_NOT_ALLOWED$1; } if (ALPHABETICS.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1) { return BREAK_NOT_ALLOWED$1; } if (current === IS && ALPHABETICS.indexOf(next) !== -1) { return BREAK_NOT_ALLOWED$1; } if (ALPHABETICS.concat(NU).indexOf(current) !== -1 && next === OP && ea_OP.indexOf(codePoints[afterIndex]) === -1 || ALPHABETICS.concat(NU).indexOf(next) !== -1 && current === CP) { return BREAK_NOT_ALLOWED$1; } if (current === RI$1 && next === RI$1) { var i4 = indicies[currentIndex]; var count = 1; while (i4 > 0) { i4--; if (classTypes[i4] === RI$1) { count++; } else { break; } } if (count % 2 !== 0) { return BREAK_NOT_ALLOWED$1; } } if (current === EB && next === EM) { return BREAK_NOT_ALLOWED$1; } return BREAK_ALLOWED$1; }; var cssFormattedClasses = function(codePoints, options) { if (!options) { options = { lineBreak: "normal", wordBreak: "normal" }; } var _a = codePointsToCharacterClasses(codePoints, options.lineBreak), indicies = _a[0], classTypes = _a[1], isLetterNumber = _a[2]; if (options.wordBreak === "break-all" || options.wordBreak === "break-word") { classTypes = classTypes.map(function(type) { return [NU, AL, SA].indexOf(type) !== -1 ? ID : type; }); } var forbiddenBreakpoints = options.wordBreak === "keep-all" ? isLetterNumber.map(function(letterNumber, i4) { return letterNumber && codePoints[i4] >= 19968 && codePoints[i4] <= 40959; }) : void 0; return [indicies, classTypes, forbiddenBreakpoints]; }; var Break = ( /** @class */ function() { function Break2(codePoints, lineBreak2, start5, end2) { this.codePoints = codePoints; this.required = lineBreak2 === BREAK_MANDATORY; this.start = start5; this.end = end2; } Break2.prototype.slice = function() { return fromCodePoint$1.apply(void 0, this.codePoints.slice(this.start, this.end)); }; return Break2; }() ); var LineBreaker = function(str, options) { var codePoints = toCodePoints$1(str); var _a = cssFormattedClasses(codePoints, options), indicies = _a[0], classTypes = _a[1], forbiddenBreakpoints = _a[2]; var length = codePoints.length; var lastEnd = 0; var nextIndex = 0; return { next: function() { if (nextIndex >= length) { return { done: true, value: null }; } var lineBreak2 = BREAK_NOT_ALLOWED$1; while (nextIndex < length && (lineBreak2 = _lineBreakAtIndex(codePoints, classTypes, indicies, ++nextIndex, forbiddenBreakpoints)) === BREAK_NOT_ALLOWED$1) { } if (lineBreak2 !== BREAK_NOT_ALLOWED$1 || nextIndex === length) { var value = new Break(codePoints, lineBreak2, lastEnd, nextIndex); lastEnd = nextIndex; return { value, done: false }; } return { done: true, value: null }; } }; }; var FLAG_UNRESTRICTED = 1 << 0; var FLAG_ID = 1 << 1; var FLAG_INTEGER = 1 << 2; var FLAG_NUMBER = 1 << 3; var LINE_FEED = 10; var SOLIDUS = 47; var REVERSE_SOLIDUS = 92; var CHARACTER_TABULATION = 9; var SPACE = 32; var QUOTATION_MARK = 34; var EQUALS_SIGN = 61; var NUMBER_SIGN = 35; var DOLLAR_SIGN = 36; var PERCENTAGE_SIGN = 37; var APOSTROPHE = 39; var LEFT_PARENTHESIS = 40; var RIGHT_PARENTHESIS = 41; var LOW_LINE = 95; var HYPHEN_MINUS = 45; var EXCLAMATION_MARK = 33; var LESS_THAN_SIGN = 60; var GREATER_THAN_SIGN = 62; var COMMERCIAL_AT = 64; var LEFT_SQUARE_BRACKET = 91; var RIGHT_SQUARE_BRACKET = 93; var CIRCUMFLEX_ACCENT = 61; var LEFT_CURLY_BRACKET = 123; var QUESTION_MARK = 63; var RIGHT_CURLY_BRACKET = 125; var VERTICAL_LINE = 124; var TILDE = 126; var CONTROL = 128; var REPLACEMENT_CHARACTER = 65533; var ASTERISK = 42; var PLUS_SIGN = 43; var COMMA = 44; var COLON = 58; var SEMICOLON = 59; var FULL_STOP = 46; var NULL = 0; var BACKSPACE = 8; var LINE_TABULATION = 11; var SHIFT_OUT = 14; var INFORMATION_SEPARATOR_ONE = 31; var DELETE = 127; var EOF = -1; var ZERO = 48; var a3 = 97; var e3 = 101; var f3 = 102; var u3 = 117; var z3 = 122; var A3 = 65; var E2 = 69; var F2 = 70; var U2 = 85; var Z2 = 90; var isDigit = function(codePoint) { return codePoint >= ZERO && codePoint <= 57; }; var isSurrogateCodePoint = function(codePoint) { return codePoint >= 55296 && codePoint <= 57343; }; var isHex = function(codePoint) { return isDigit(codePoint) || codePoint >= A3 && codePoint <= F2 || codePoint >= a3 && codePoint <= f3; }; var isLowerCaseLetter = function(codePoint) { return codePoint >= a3 && codePoint <= z3; }; var isUpperCaseLetter = function(codePoint) { return codePoint >= A3 && codePoint <= Z2; }; var isLetter = function(codePoint) { return isLowerCaseLetter(codePoint) || isUpperCaseLetter(codePoint); }; var isNonASCIICodePoint = function(codePoint) { return codePoint >= CONTROL; }; var isWhiteSpace = function(codePoint) { return codePoint === LINE_FEED || codePoint === CHARACTER_TABULATION || codePoint === SPACE; }; var isNameStartCodePoint = function(codePoint) { return isLetter(codePoint) || isNonASCIICodePoint(codePoint) || codePoint === LOW_LINE; }; var isNameCodePoint = function(codePoint) { return isNameStartCodePoint(codePoint) || isDigit(codePoint) || codePoint === HYPHEN_MINUS; }; var isNonPrintableCodePoint = function(codePoint) { return codePoint >= NULL && codePoint <= BACKSPACE || codePoint === LINE_TABULATION || codePoint >= SHIFT_OUT && codePoint <= INFORMATION_SEPARATOR_ONE || codePoint === DELETE; }; var isValidEscape = function(c1, c22) { if (c1 !== REVERSE_SOLIDUS) { return false; } return c22 !== LINE_FEED; }; var isIdentifierStart = function(c1, c22, c3) { if (c1 === HYPHEN_MINUS) { return isNameStartCodePoint(c22) || isValidEscape(c22, c3); } else if (isNameStartCodePoint(c1)) { return true; } else if (c1 === REVERSE_SOLIDUS && isValidEscape(c1, c22)) { return true; } return false; }; var isNumberStart = function(c1, c22, c3) { if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) { if (isDigit(c22)) { return true; } return c22 === FULL_STOP && isDigit(c3); } if (c1 === FULL_STOP) { return isDigit(c22); } return isDigit(c1); }; var stringToNumber = function(codePoints) { var c3 = 0; var sign = 1; if (codePoints[c3] === PLUS_SIGN || codePoints[c3] === HYPHEN_MINUS) { if (codePoints[c3] === HYPHEN_MINUS) { sign = -1; } c3++; } var integers = []; while (isDigit(codePoints[c3])) { integers.push(codePoints[c3++]); } var int = integers.length ? parseInt(fromCodePoint$1.apply(void 0, integers), 10) : 0; if (codePoints[c3] === FULL_STOP) { c3++; } var fraction = []; while (isDigit(codePoints[c3])) { fraction.push(codePoints[c3++]); } var fracd = fraction.length; var frac = fracd ? parseInt(fromCodePoint$1.apply(void 0, fraction), 10) : 0; if (codePoints[c3] === E2 || codePoints[c3] === e3) { c3++; } var expsign = 1; if (codePoints[c3] === PLUS_SIGN || codePoints[c3] === HYPHEN_MINUS) { if (codePoints[c3] === HYPHEN_MINUS) { expsign = -1; } c3++; } var exponent = []; while (isDigit(codePoints[c3])) { exponent.push(codePoints[c3++]); } var exp = exponent.length ? parseInt(fromCodePoint$1.apply(void 0, exponent), 10) : 0; return sign * (int + frac * Math.pow(10, -fracd)) * Math.pow(10, expsign * exp); }; var LEFT_PARENTHESIS_TOKEN = { type: 2 /* LEFT_PARENTHESIS_TOKEN */ }; var RIGHT_PARENTHESIS_TOKEN = { type: 3 /* RIGHT_PARENTHESIS_TOKEN */ }; var COMMA_TOKEN = { type: 4 /* COMMA_TOKEN */ }; var SUFFIX_MATCH_TOKEN = { type: 13 /* SUFFIX_MATCH_TOKEN */ }; var PREFIX_MATCH_TOKEN = { type: 8 /* PREFIX_MATCH_TOKEN */ }; var COLUMN_TOKEN = { type: 21 /* COLUMN_TOKEN */ }; var DASH_MATCH_TOKEN = { type: 9 /* DASH_MATCH_TOKEN */ }; var INCLUDE_MATCH_TOKEN = { type: 10 /* INCLUDE_MATCH_TOKEN */ }; var LEFT_CURLY_BRACKET_TOKEN = { type: 11 /* LEFT_CURLY_BRACKET_TOKEN */ }; var RIGHT_CURLY_BRACKET_TOKEN = { type: 12 /* RIGHT_CURLY_BRACKET_TOKEN */ }; var SUBSTRING_MATCH_TOKEN = { type: 14 /* SUBSTRING_MATCH_TOKEN */ }; var BAD_URL_TOKEN = { type: 23 /* BAD_URL_TOKEN */ }; var BAD_STRING_TOKEN = { type: 1 /* BAD_STRING_TOKEN */ }; var CDO_TOKEN = { type: 25 /* CDO_TOKEN */ }; var CDC_TOKEN = { type: 24 /* CDC_TOKEN */ }; var COLON_TOKEN = { type: 26 /* COLON_TOKEN */ }; var SEMICOLON_TOKEN = { type: 27 /* SEMICOLON_TOKEN */ }; var LEFT_SQUARE_BRACKET_TOKEN = { type: 28 /* LEFT_SQUARE_BRACKET_TOKEN */ }; var RIGHT_SQUARE_BRACKET_TOKEN = { type: 29 /* RIGHT_SQUARE_BRACKET_TOKEN */ }; var WHITESPACE_TOKEN = { type: 31 /* WHITESPACE_TOKEN */ }; var EOF_TOKEN = { type: 32 /* EOF_TOKEN */ }; var Tokenizer = ( /** @class */ function() { function Tokenizer2() { this._value = []; } Tokenizer2.prototype.write = function(chunk) { this._value = this._value.concat(toCodePoints$1(chunk)); }; Tokenizer2.prototype.read = function() { var tokens2 = []; var token = this.consumeToken(); while (token !== EOF_TOKEN) { tokens2.push(token); token = this.consumeToken(); } return tokens2; }; Tokenizer2.prototype.consumeToken = function() { var codePoint = this.consumeCodePoint(); switch (codePoint) { case QUOTATION_MARK: return this.consumeStringToken(QUOTATION_MARK); case NUMBER_SIGN: var c1 = this.peekCodePoint(0); var c22 = this.peekCodePoint(1); var c3 = this.peekCodePoint(2); if (isNameCodePoint(c1) || isValidEscape(c22, c3)) { var flags = isIdentifierStart(c1, c22, c3) ? FLAG_ID : FLAG_UNRESTRICTED; var value = this.consumeName(); return { type: 5, value, flags }; } break; case DOLLAR_SIGN: if (this.peekCodePoint(0) === EQUALS_SIGN) { this.consumeCodePoint(); return SUFFIX_MATCH_TOKEN; } break; case APOSTROPHE: return this.consumeStringToken(APOSTROPHE); case LEFT_PARENTHESIS: return LEFT_PARENTHESIS_TOKEN; case RIGHT_PARENTHESIS: return RIGHT_PARENTHESIS_TOKEN; case ASTERISK: if (this.peekCodePoint(0) === EQUALS_SIGN) { this.consumeCodePoint(); return SUBSTRING_MATCH_TOKEN; } break; case PLUS_SIGN: if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) { this.reconsumeCodePoint(codePoint); return this.consumeNumericToken(); } break; case COMMA: return COMMA_TOKEN; case HYPHEN_MINUS: var e1 = codePoint; var e22 = this.peekCodePoint(0); var e32 = this.peekCodePoint(1); if (isNumberStart(e1, e22, e32)) { this.reconsumeCodePoint(codePoint); return this.consumeNumericToken(); } if (isIdentifierStart(e1, e22, e32)) { this.reconsumeCodePoint(codePoint); return this.consumeIdentLikeToken(); } if (e22 === HYPHEN_MINUS && e32 === GREATER_THAN_SIGN) { this.consumeCodePoint(); this.consumeCodePoint(); return CDC_TOKEN; } break; case FULL_STOP: if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) { this.reconsumeCodePoint(codePoint); return this.consumeNumericToken(); } break; case SOLIDUS: if (this.peekCodePoint(0) === ASTERISK) { this.consumeCodePoint(); while (true) { var c4 = this.consumeCodePoint(); if (c4 === ASTERISK) { c4 = this.consumeCodePoint(); if (c4 === SOLIDUS) { return this.consumeToken(); } } if (c4 === EOF) { return this.consumeToken(); } } } break; case COLON: return COLON_TOKEN; case SEMICOLON: return SEMICOLON_TOKEN; case LESS_THAN_SIGN: if (this.peekCodePoint(0) === EXCLAMATION_MARK && this.peekCodePoint(1) === HYPHEN_MINUS && this.peekCodePoint(2) === HYPHEN_MINUS) { this.consumeCodePoint(); this.consumeCodePoint(); return CDO_TOKEN; } break; case COMMERCIAL_AT: var a1 = this.peekCodePoint(0); var a22 = this.peekCodePoint(1); var a32 = this.peekCodePoint(2); if (isIdentifierStart(a1, a22, a32)) { var value = this.consumeName(); return { type: 7, value }; } break; case LEFT_SQUARE_BRACKET: return LEFT_SQUARE_BRACKET_TOKEN; case REVERSE_SOLIDUS: if (isValidEscape(codePoint, this.peekCodePoint(0))) { this.reconsumeCodePoint(codePoint); return this.consumeIdentLikeToken(); } break; case RIGHT_SQUARE_BRACKET: return RIGHT_SQUARE_BRACKET_TOKEN; case CIRCUMFLEX_ACCENT: if (this.peekCodePoint(0) === EQUALS_SIGN) { this.consumeCodePoint(); return PREFIX_MATCH_TOKEN; } break; case LEFT_CURLY_BRACKET: return LEFT_CURLY_BRACKET_TOKEN; case RIGHT_CURLY_BRACKET: return RIGHT_CURLY_BRACKET_TOKEN; case u3: case U2: var u1 = this.peekCodePoint(0); var u22 = this.peekCodePoint(1); if (u1 === PLUS_SIGN && (isHex(u22) || u22 === QUESTION_MARK)) { this.consumeCodePoint(); this.consumeUnicodeRangeToken(); } this.reconsumeCodePoint(codePoint); return this.consumeIdentLikeToken(); case VERTICAL_LINE: if (this.peekCodePoint(0) === EQUALS_SIGN) { this.consumeCodePoint(); return DASH_MATCH_TOKEN; } if (this.peekCodePoint(0) === VERTICAL_LINE) { this.consumeCodePoint(); return COLUMN_TOKEN; } break; case TILDE: if (this.peekCodePoint(0) === EQUALS_SIGN) { this.consumeCodePoint(); return INCLUDE_MATCH_TOKEN; } break; case EOF: return EOF_TOKEN; } if (isWhiteSpace(codePoint)) { this.consumeWhiteSpace(); return WHITESPACE_TOKEN; } if (isDigit(codePoint)) { this.reconsumeCodePoint(codePoint); return this.consumeNumericToken(); } if (isNameStartCodePoint(codePoint)) { this.reconsumeCodePoint(codePoint); return this.consumeIdentLikeToken(); } return { type: 6, value: fromCodePoint$1(codePoint) }; }; Tokenizer2.prototype.consumeCodePoint = function() { var value = this._value.shift(); return typeof value === "undefined" ? -1 : value; }; Tokenizer2.prototype.reconsumeCodePoint = function(codePoint) { this._value.unshift(codePoint); }; Tokenizer2.prototype.peekCodePoint = function(delta) { if (delta >= this._value.length) { return -1; } return this._value[delta]; }; Tokenizer2.prototype.consumeUnicodeRangeToken = function() { var digits = []; var codePoint = this.consumeCodePoint(); while (isHex(codePoint) && digits.length < 6) { digits.push(codePoint); codePoint = this.consumeCodePoint(); } var questionMarks = false; while (codePoint === QUESTION_MARK && digits.length < 6) { digits.push(codePoint); codePoint = this.consumeCodePoint(); questionMarks = true; } if (questionMarks) { var start_1 = parseInt(fromCodePoint$1.apply(void 0, digits.map(function(digit) { return digit === QUESTION_MARK ? ZERO : digit; })), 16); var end2 = parseInt(fromCodePoint$1.apply(void 0, digits.map(function(digit) { return digit === QUESTION_MARK ? F2 : digit; })), 16); return { type: 30, start: start_1, end: end2 }; } var start5 = parseInt(fromCodePoint$1.apply(void 0, digits), 16); if (this.peekCodePoint(0) === HYPHEN_MINUS && isHex(this.peekCodePoint(1))) { this.consumeCodePoint(); codePoint = this.consumeCodePoint(); var endDigits = []; while (isHex(codePoint) && endDigits.length < 6) { endDigits.push(codePoint); codePoint = this.consumeCodePoint(); } var end2 = parseInt(fromCodePoint$1.apply(void 0, endDigits), 16); return { type: 30, start: start5, end: end2 }; } else { return { type: 30, start: start5, end: start5 }; } }; Tokenizer2.prototype.consumeIdentLikeToken = function() { var value = this.consumeName(); if (value.toLowerCase() === "url" && this.peekCodePoint(0) === LEFT_PARENTHESIS) { this.consumeCodePoint(); return this.consumeUrlToken(); } else if (this.peekCodePoint(0) === LEFT_PARENTHESIS) { this.consumeCodePoint(); return { type: 19, value }; } return { type: 20, value }; }; Tokenizer2.prototype.consumeUrlToken = function() { var value = []; this.consumeWhiteSpace(); if (this.peekCodePoint(0) === EOF) { return { type: 22, value: "" }; } var next = this.peekCodePoint(0); if (next === APOSTROPHE || next === QUOTATION_MARK) { var stringToken = this.consumeStringToken(this.consumeCodePoint()); if (stringToken.type === 0) { this.consumeWhiteSpace(); if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) { this.consumeCodePoint(); return { type: 22, value: stringToken.value }; } } this.consumeBadUrlRemnants(); return BAD_URL_TOKEN; } while (true) { var codePoint = this.consumeCodePoint(); if (codePoint === EOF || codePoint === RIGHT_PARENTHESIS) { return { type: 22, value: fromCodePoint$1.apply(void 0, value) }; } else if (isWhiteSpace(codePoint)) { this.consumeWhiteSpace(); if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) { this.consumeCodePoint(); return { type: 22, value: fromCodePoint$1.apply(void 0, value) }; } this.consumeBadUrlRemnants(); return BAD_URL_TOKEN; } else if (codePoint === QUOTATION_MARK || codePoint === APOSTROPHE || codePoint === LEFT_PARENTHESIS || isNonPrintableCodePoint(codePoint)) { this.consumeBadUrlRemnants(); return BAD_URL_TOKEN; } else if (codePoint === REVERSE_SOLIDUS) { if (isValidEscape(codePoint, this.peekCodePoint(0))) { value.push(this.consumeEscapedCodePoint()); } else { this.consumeBadUrlRemnants(); return BAD_URL_TOKEN; } } else { value.push(codePoint); } } }; Tokenizer2.prototype.consumeWhiteSpace = function() { while (isWhiteSpace(this.peekCodePoint(0))) { this.consumeCodePoint(); } }; Tokenizer2.prototype.consumeBadUrlRemnants = function() { while (true) { var codePoint = this.consumeCodePoint(); if (codePoint === RIGHT_PARENTHESIS || codePoint === EOF) { return; } if (isValidEscape(codePoint, this.peekCodePoint(0))) { this.consumeEscapedCodePoint(); } } }; Tokenizer2.prototype.consumeStringSlice = function(count) { var SLICE_STACK_SIZE = 5e4; var value = ""; while (count > 0) { var amount = Math.min(SLICE_STACK_SIZE, count); value += fromCodePoint$1.apply(void 0, this._value.splice(0, amount)); count -= amount; } this._value.shift(); return value; }; Tokenizer2.prototype.consumeStringToken = function(endingCodePoint) { var value = ""; var i4 = 0; do { var codePoint = this._value[i4]; if (codePoint === EOF || codePoint === void 0 || codePoint === endingCodePoint) { value += this.consumeStringSlice(i4); return { type: 0, value }; } if (codePoint === LINE_FEED) { this._value.splice(0, i4); return BAD_STRING_TOKEN; } if (codePoint === REVERSE_SOLIDUS) { var next = this._value[i4 + 1]; if (next !== EOF && next !== void 0) { if (next === LINE_FEED) { value += this.consumeStringSlice(i4); i4 = -1; this._value.shift(); } else if (isValidEscape(codePoint, next)) { value += this.consumeStringSlice(i4); value += fromCodePoint$1(this.consumeEscapedCodePoint()); i4 = -1; } } } i4++; } while (true); }; Tokenizer2.prototype.consumeNumber = function() { var repr = []; var type = FLAG_INTEGER; var c1 = this.peekCodePoint(0); if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) { repr.push(this.consumeCodePoint()); } while (isDigit(this.peekCodePoint(0))) { repr.push(this.consumeCodePoint()); } c1 = this.peekCodePoint(0); var c22 = this.peekCodePoint(1); if (c1 === FULL_STOP && isDigit(c22)) { repr.push(this.consumeCodePoint(), this.consumeCodePoint()); type = FLAG_NUMBER; while (isDigit(this.peekCodePoint(0))) { repr.push(this.consumeCodePoint()); } } c1 = this.peekCodePoint(0); c22 = this.peekCodePoint(1); var c3 = this.peekCodePoint(2); if ((c1 === E2 || c1 === e3) && ((c22 === PLUS_SIGN || c22 === HYPHEN_MINUS) && isDigit(c3) || isDigit(c22))) { repr.push(this.consumeCodePoint(), this.consumeCodePoint()); type = FLAG_NUMBER; while (isDigit(this.peekCodePoint(0))) { repr.push(this.consumeCodePoint()); } } return [stringToNumber(repr), type]; }; Tokenizer2.prototype.consumeNumericToken = function() { var _a = this.consumeNumber(), number = _a[0], flags = _a[1]; var c1 = this.peekCodePoint(0); var c22 = this.peekCodePoint(1); var c3 = this.peekCodePoint(2); if (isIdentifierStart(c1, c22, c3)) { var unit = this.consumeName(); return { type: 15, number, flags, unit }; } if (c1 === PERCENTAGE_SIGN) { this.consumeCodePoint(); return { type: 16, number, flags }; } return { type: 17, number, flags }; }; Tokenizer2.prototype.consumeEscapedCodePoint = function() { var codePoint = this.consumeCodePoint(); if (isHex(codePoint)) { var hex = fromCodePoint$1(codePoint); while (isHex(this.peekCodePoint(0)) && hex.length < 6) { hex += fromCodePoint$1(this.consumeCodePoint()); } if (isWhiteSpace(this.peekCodePoint(0))) { this.consumeCodePoint(); } var hexCodePoint = parseInt(hex, 16); if (hexCodePoint === 0 || isSurrogateCodePoint(hexCodePoint) || hexCodePoint > 1114111) { return REPLACEMENT_CHARACTER; } return hexCodePoint; } if (codePoint === EOF) { return REPLACEMENT_CHARACTER; } return codePoint; }; Tokenizer2.prototype.consumeName = function() { var result = ""; while (true) { var codePoint = this.consumeCodePoint(); if (isNameCodePoint(codePoint)) { result += fromCodePoint$1(codePoint); } else if (isValidEscape(codePoint, this.peekCodePoint(0))) { result += fromCodePoint$1(this.consumeEscapedCodePoint()); } else { this.reconsumeCodePoint(codePoint); return result; } } }; return Tokenizer2; }() ); var Parser = ( /** @class */ function() { function Parser2(tokens2) { this._tokens = tokens2; } Parser2.create = function(value) { var tokenizer = new Tokenizer(); tokenizer.write(value); return new Parser2(tokenizer.read()); }; Parser2.parseValue = function(value) { return Parser2.create(value).parseComponentValue(); }; Parser2.parseValues = function(value) { return Parser2.create(value).parseComponentValues(); }; Parser2.prototype.parseComponentValue = function() { var token = this.consumeToken(); while (token.type === 31) { token = this.consumeToken(); } if (token.type === 32) { throw new SyntaxError("Error parsing CSS component value, unexpected EOF"); } this.reconsumeToken(token); var value = this.consumeComponentValue(); do { token = this.consumeToken(); } while (token.type === 31); if (token.type === 32) { return value; } throw new SyntaxError("Error parsing CSS component value, multiple values found when expecting only one"); }; Parser2.prototype.parseComponentValues = function() { var values = []; while (true) { var value = this.consumeComponentValue(); if (value.type === 32) { return values; } values.push(value); values.push(); } }; Parser2.prototype.consumeComponentValue = function() { var token = this.consumeToken(); switch (token.type) { case 11: case 28: case 2: return this.consumeSimpleBlock(token.type); case 19: return this.consumeFunction(token); } return token; }; Parser2.prototype.consumeSimpleBlock = function(type) { var block = { type, values: [] }; var token = this.consumeToken(); while (true) { if (token.type === 32 || isEndingTokenFor(token, type)) { return block; } this.reconsumeToken(token); block.values.push(this.consumeComponentValue()); token = this.consumeToken(); } }; Parser2.prototype.consumeFunction = function(functionToken) { var cssFunction = { name: functionToken.value, values: [], type: 18 /* FUNCTION */ }; while (true) { var token = this.consumeToken(); if (token.type === 32 || token.type === 3) { return cssFunction; } this.reconsumeToken(token); cssFunction.values.push(this.consumeComponentValue()); } }; Parser2.prototype.consumeToken = function() { var token = this._tokens.shift(); return typeof token === "undefined" ? EOF_TOKEN : token; }; Parser2.prototype.reconsumeToken = function(token) { this._tokens.unshift(token); }; return Parser2; }() ); var isDimensionToken = function(token) { return token.type === 15; }; var isNumberToken = function(token) { return token.type === 17; }; var isIdentToken = function(token) { return token.type === 20; }; var isStringToken = function(token) { return token.type === 0; }; var isIdentWithValue = function(token, value) { return isIdentToken(token) && token.value === value; }; var nonWhiteSpace = function(token) { return token.type !== 31; }; var nonFunctionArgSeparator = function(token) { return token.type !== 31 && token.type !== 4; }; var parseFunctionArgs = function(tokens2) { var args = []; var arg = []; tokens2.forEach(function(token) { if (token.type === 4) { if (arg.length === 0) { throw new Error("Error parsing function args, zero tokens for arg"); } args.push(arg); arg = []; return; } if (token.type !== 31) { arg.push(token); } }); if (arg.length) { args.push(arg); } return args; }; var isEndingTokenFor = function(token, type) { if (type === 11 && token.type === 12) { return true; } if (type === 28 && token.type === 29) { return true; } return type === 2 && token.type === 3; }; var isLength = function(token) { return token.type === 17 || token.type === 15; }; var isLengthPercentage = function(token) { return token.type === 16 || isLength(token); }; var parseLengthPercentageTuple = function(tokens2) { return tokens2.length > 1 ? [tokens2[0], tokens2[1]] : [tokens2[0]]; }; var ZERO_LENGTH = { type: 17, number: 0, flags: FLAG_INTEGER }; var FIFTY_PERCENT = { type: 16, number: 50, flags: FLAG_INTEGER }; var HUNDRED_PERCENT = { type: 16, number: 100, flags: FLAG_INTEGER }; var getAbsoluteValueForTuple = function(tuple, width, height) { var x3 = tuple[0], y3 = tuple[1]; return [getAbsoluteValue(x3, width), getAbsoluteValue(typeof y3 !== "undefined" ? y3 : x3, height)]; }; var getAbsoluteValue = function(token, parent) { if (token.type === 16) { return token.number / 100 * parent; } if (isDimensionToken(token)) { switch (token.unit) { case "rem": case "em": return 16 * token.number; case "px": default: return token.number; } } return token.number; }; var DEG = "deg"; var GRAD = "grad"; var RAD = "rad"; var TURN = "turn"; var angle = { name: "angle", parse: function(_context, value) { if (value.type === 15) { switch (value.unit) { case DEG: return Math.PI * value.number / 180; case GRAD: return Math.PI / 200 * value.number; case RAD: return value.number; case TURN: return Math.PI * 2 * value.number; } } throw new Error("Unsupported angle type"); } }; var isAngle = function(value) { if (value.type === 15) { if (value.unit === DEG || value.unit === GRAD || value.unit === RAD || value.unit === TURN) { return true; } } return false; }; var parseNamedSide = function(tokens2) { var sideOrCorner = tokens2.filter(isIdentToken).map(function(ident) { return ident.value; }).join(" "); switch (sideOrCorner) { case "to bottom right": case "to right bottom": case "left top": case "top left": return [ZERO_LENGTH, ZERO_LENGTH]; case "to top": case "bottom": return deg(0); case "to bottom left": case "to left bottom": case "right top": case "top right": return [ZERO_LENGTH, HUNDRED_PERCENT]; case "to right": case "left": return deg(90); case "to top left": case "to left top": case "right bottom": case "bottom right": return [HUNDRED_PERCENT, HUNDRED_PERCENT]; case "to bottom": case "top": return deg(180); case "to top right": case "to right top": case "left bottom": case "bottom left": return [HUNDRED_PERCENT, ZERO_LENGTH]; case "to left": case "right": return deg(270); } return 0; }; var deg = function(deg2) { return Math.PI * deg2 / 180; }; var color$1 = { name: "color", parse: function(context, value) { if (value.type === 18) { var colorFunction = SUPPORTED_COLOR_FUNCTIONS[value.name]; if (typeof colorFunction === "undefined") { throw new Error('Attempting to parse an unsupported color function "' + value.name + '"'); } return colorFunction(context, value.values); } if (value.type === 5) { if (value.value.length === 3) { var r3 = value.value.substring(0, 1); var g3 = value.value.substring(1, 2); var b3 = value.value.substring(2, 3); return pack(parseInt(r3 + r3, 16), parseInt(g3 + g3, 16), parseInt(b3 + b3, 16), 1); } if (value.value.length === 4) { var r3 = value.value.substring(0, 1); var g3 = value.value.substring(1, 2); var b3 = value.value.substring(2, 3); var a4 = value.value.substring(3, 4); return pack(parseInt(r3 + r3, 16), parseInt(g3 + g3, 16), parseInt(b3 + b3, 16), parseInt(a4 + a4, 16) / 255); } if (value.value.length === 6) { var r3 = value.value.substring(0, 2); var g3 = value.value.substring(2, 4); var b3 = value.value.substring(4, 6); return pack(parseInt(r3, 16), parseInt(g3, 16), parseInt(b3, 16), 1); } if (value.value.length === 8) { var r3 = value.value.substring(0, 2); var g3 = value.value.substring(2, 4); var b3 = value.value.substring(4, 6); var a4 = value.value.substring(6, 8); return pack(parseInt(r3, 16), parseInt(g3, 16), parseInt(b3, 16), parseInt(a4, 16) / 255); } } if (value.type === 20) { var namedColor = COLORS[value.value.toUpperCase()]; if (typeof namedColor !== "undefined") { return namedColor; } } return COLORS.TRANSPARENT; } }; var isTransparent = function(color2) { return (255 & color2) === 0; }; var asString = function(color2) { var alpha = 255 & color2; var blue = 255 & color2 >> 8; var green = 255 & color2 >> 16; var red = 255 & color2 >> 24; return alpha < 255 ? "rgba(" + red + "," + green + "," + blue + "," + alpha / 255 + ")" : "rgb(" + red + "," + green + "," + blue + ")"; }; var pack = function(r3, g3, b3, a4) { return (r3 << 24 | g3 << 16 | b3 << 8 | Math.round(a4 * 255) << 0) >>> 0; }; var getTokenColorValue = function(token, i4) { if (token.type === 17) { return token.number; } if (token.type === 16) { var max2 = i4 === 3 ? 1 : 255; return i4 === 3 ? token.number / 100 * max2 : Math.round(token.number / 100 * max2); } return 0; }; var rgb = function(_context, args) { var tokens2 = args.filter(nonFunctionArgSeparator); if (tokens2.length === 3) { var _a = tokens2.map(getTokenColorValue), r3 = _a[0], g3 = _a[1], b3 = _a[2]; return pack(r3, g3, b3, 1); } if (tokens2.length === 4) { var _b = tokens2.map(getTokenColorValue), r3 = _b[0], g3 = _b[1], b3 = _b[2], a4 = _b[3]; return pack(r3, g3, b3, a4); } return 0; }; function hue2rgb(t1, t22, hue) { if (hue < 0) { hue += 1; } if (hue >= 1) { hue -= 1; } if (hue < 1 / 6) { return (t22 - t1) * hue * 6 + t1; } else if (hue < 1 / 2) { return t22; } else if (hue < 2 / 3) { return (t22 - t1) * 6 * (2 / 3 - hue) + t1; } else { return t1; } } var hsl = function(context, args) { var tokens2 = args.filter(nonFunctionArgSeparator); var hue = tokens2[0], saturation = tokens2[1], lightness = tokens2[2], alpha = tokens2[3]; var h3 = (hue.type === 17 ? deg(hue.number) : angle.parse(context, hue)) / (Math.PI * 2); var s3 = isLengthPercentage(saturation) ? saturation.number / 100 : 0; var l3 = isLengthPercentage(lightness) ? lightness.number / 100 : 0; var a4 = typeof alpha !== "undefined" && isLengthPercentage(alpha) ? getAbsoluteValue(alpha, 1) : 1; if (s3 === 0) { return pack(l3 * 255, l3 * 255, l3 * 255, 1); } var t22 = l3 <= 0.5 ? l3 * (s3 + 1) : l3 + s3 - l3 * s3; var t1 = l3 * 2 - t22; var r3 = hue2rgb(t1, t22, h3 + 1 / 3); var g3 = hue2rgb(t1, t22, h3); var b3 = hue2rgb(t1, t22, h3 - 1 / 3); return pack(r3 * 255, g3 * 255, b3 * 255, a4); }; var SUPPORTED_COLOR_FUNCTIONS = { hsl, hsla: hsl, rgb, rgba: rgb }; var parseColor = function(context, value) { return color$1.parse(context, Parser.create(value).parseComponentValue()); }; var COLORS = { ALICEBLUE: 4042850303, ANTIQUEWHITE: 4209760255, AQUA: 16777215, AQUAMARINE: 2147472639, AZURE: 4043309055, BEIGE: 4126530815, BISQUE: 4293182719, BLACK: 255, BLANCHEDALMOND: 4293643775, BLUE: 65535, BLUEVIOLET: 2318131967, BROWN: 2771004159, BURLYWOOD: 3736635391, CADETBLUE: 1604231423, CHARTREUSE: 2147418367, CHOCOLATE: 3530104575, CORAL: 4286533887, CORNFLOWERBLUE: 1687547391, CORNSILK: 4294499583, CRIMSON: 3692313855, CYAN: 16777215, DARKBLUE: 35839, DARKCYAN: 9145343, DARKGOLDENROD: 3095837695, DARKGRAY: 2846468607, DARKGREEN: 6553855, DARKGREY: 2846468607, DARKKHAKI: 3182914559, DARKMAGENTA: 2332068863, DARKOLIVEGREEN: 1433087999, DARKORANGE: 4287365375, DARKORCHID: 2570243327, DARKRED: 2332033279, DARKSALMON: 3918953215, DARKSEAGREEN: 2411499519, DARKSLATEBLUE: 1211993087, DARKSLATEGRAY: 793726975, DARKSLATEGREY: 793726975, DARKTURQUOISE: 13554175, DARKVIOLET: 2483082239, DEEPPINK: 4279538687, DEEPSKYBLUE: 12582911, DIMGRAY: 1768516095, DIMGREY: 1768516095, DODGERBLUE: 512819199, FIREBRICK: 2988581631, FLORALWHITE: 4294635775, FORESTGREEN: 579543807, FUCHSIA: 4278255615, GAINSBORO: 3705462015, GHOSTWHITE: 4177068031, GOLD: 4292280575, GOLDENROD: 3668254975, GRAY: 2155905279, GREEN: 8388863, GREENYELLOW: 2919182335, GREY: 2155905279, HONEYDEW: 4043305215, HOTPINK: 4285117695, INDIANRED: 3445382399, INDIGO: 1258324735, IVORY: 4294963455, KHAKI: 4041641215, LAVENDER: 3873897215, LAVENDERBLUSH: 4293981695, LAWNGREEN: 2096890111, LEMONCHIFFON: 4294626815, LIGHTBLUE: 2916673279, LIGHTCORAL: 4034953471, LIGHTCYAN: 3774873599, LIGHTGOLDENRODYELLOW: 4210742015, LIGHTGRAY: 3553874943, LIGHTGREEN: 2431553791, LIGHTGREY: 3553874943, LIGHTPINK: 4290167295, LIGHTSALMON: 4288707327, LIGHTSEAGREEN: 548580095, LIGHTSKYBLUE: 2278488831, LIGHTSLATEGRAY: 2005441023, LIGHTSLATEGREY: 2005441023, LIGHTSTEELBLUE: 2965692159, LIGHTYELLOW: 4294959359, LIME: 16711935, LIMEGREEN: 852308735, LINEN: 4210091775, MAGENTA: 4278255615, MAROON: 2147483903, MEDIUMAQUAMARINE: 1724754687, MEDIUMBLUE: 52735, MEDIUMORCHID: 3126187007, MEDIUMPURPLE: 2473647103, MEDIUMSEAGREEN: 1018393087, MEDIUMSLATEBLUE: 2070474495, MEDIUMSPRINGGREEN: 16423679, MEDIUMTURQUOISE: 1221709055, MEDIUMVIOLETRED: 3340076543, MIDNIGHTBLUE: 421097727, MINTCREAM: 4127193855, MISTYROSE: 4293190143, MOCCASIN: 4293178879, NAVAJOWHITE: 4292783615, NAVY: 33023, OLDLACE: 4260751103, OLIVE: 2155872511, OLIVEDRAB: 1804477439, ORANGE: 4289003775, ORANGERED: 4282712319, ORCHID: 3664828159, PALEGOLDENROD: 4008225535, PALEGREEN: 2566625535, PALETURQUOISE: 2951671551, PALEVIOLETRED: 3681588223, PAPAYAWHIP: 4293907967, PEACHPUFF: 4292524543, PERU: 3448061951, PINK: 4290825215, PLUM: 3718307327, POWDERBLUE: 2967529215, PURPLE: 2147516671, REBECCAPURPLE: 1714657791, RED: 4278190335, ROSYBROWN: 3163525119, ROYALBLUE: 1097458175, SADDLEBROWN: 2336560127, SALMON: 4202722047, SANDYBROWN: 4104413439, SEAGREEN: 780883967, SEASHELL: 4294307583, SIENNA: 2689740287, SILVER: 3233857791, SKYBLUE: 2278484991, SLATEBLUE: 1784335871, SLATEGRAY: 1887473919, SLATEGREY: 1887473919, SNOW: 4294638335, SPRINGGREEN: 16744447, STEELBLUE: 1182971135, TAN: 3535047935, TEAL: 8421631, THISTLE: 3636451583, TOMATO: 4284696575, TRANSPARENT: 0, TURQUOISE: 1088475391, VIOLET: 4001558271, WHEAT: 4125012991, WHITE: 4294967295, WHITESMOKE: 4126537215, YELLOW: 4294902015, YELLOWGREEN: 2597139199 }; var backgroundClip = { name: "background-clip", initialValue: "border-box", prefix: false, type: 1, parse: function(_context, tokens2) { return tokens2.map(function(token) { if (isIdentToken(token)) { switch (token.value) { case "padding-box": return 1; case "content-box": return 2; } } return 0; }); } }; var backgroundColor = { name: "background-color", initialValue: "transparent", prefix: false, type: 3, format: "color" }; var parseColorStop = function(context, args) { var color2 = color$1.parse(context, args[0]); var stop2 = args[1]; return stop2 && isLengthPercentage(stop2) ? { color: color2, stop: stop2 } : { color: color2, stop: null }; }; var processColorStops = function(stops, lineLength) { var first = stops[0]; var last = stops[stops.length - 1]; if (first.stop === null) { first.stop = ZERO_LENGTH; } if (last.stop === null) { last.stop = HUNDRED_PERCENT; } var processStops = []; var previous = 0; for (var i4 = 0; i4 < stops.length; i4++) { var stop_1 = stops[i4].stop; if (stop_1 !== null) { var absoluteValue = getAbsoluteValue(stop_1, lineLength); if (absoluteValue > previous) { processStops.push(absoluteValue); } else { processStops.push(previous); } previous = absoluteValue; } else { processStops.push(null); } } var gapBegin = null; for (var i4 = 0; i4 < processStops.length; i4++) { var stop_2 = processStops[i4]; if (stop_2 === null) { if (gapBegin === null) { gapBegin = i4; } } else if (gapBegin !== null) { var gapLength = i4 - gapBegin; var beforeGap = processStops[gapBegin - 1]; var gapValue = (stop_2 - beforeGap) / (gapLength + 1); for (var g3 = 1; g3 <= gapLength; g3++) { processStops[gapBegin + g3 - 1] = gapValue * g3; } gapBegin = null; } } return stops.map(function(_a, i5) { var color2 = _a.color; return { color: color2, stop: Math.max(Math.min(1, processStops[i5] / lineLength), 0) }; }); }; var getAngleFromCorner = function(corner, width, height) { var centerX = width / 2; var centerY = height / 2; var x3 = getAbsoluteValue(corner[0], width) - centerX; var y3 = centerY - getAbsoluteValue(corner[1], height); return (Math.atan2(y3, x3) + Math.PI * 2) % (Math.PI * 2); }; var calculateGradientDirection = function(angle2, width, height) { var radian = typeof angle2 === "number" ? angle2 : getAngleFromCorner(angle2, width, height); var lineLength = Math.abs(width * Math.sin(radian)) + Math.abs(height * Math.cos(radian)); var halfWidth = width / 2; var halfHeight = height / 2; var halfLineLength = lineLength / 2; var yDiff = Math.sin(radian - Math.PI / 2) * halfLineLength; var xDiff = Math.cos(radian - Math.PI / 2) * halfLineLength; return [lineLength, halfWidth - xDiff, halfWidth + xDiff, halfHeight - yDiff, halfHeight + yDiff]; }; var distance = function(a4, b3) { return Math.sqrt(a4 * a4 + b3 * b3); }; var findCorner = function(width, height, x3, y3, closest) { var corners = [ [0, 0], [0, height], [width, 0], [width, height] ]; return corners.reduce(function(stat, corner) { var cx = corner[0], cy = corner[1]; var d3 = distance(x3 - cx, y3 - cy); if (closest ? d3 < stat.optimumDistance : d3 > stat.optimumDistance) { return { optimumCorner: corner, optimumDistance: d3 }; } return stat; }, { optimumDistance: closest ? Infinity : -Infinity, optimumCorner: null }).optimumCorner; }; var calculateRadius = function(gradient, x3, y3, width, height) { var rx = 0; var ry = 0; switch (gradient.size) { case 0: if (gradient.shape === 0) { rx = ry = Math.min(Math.abs(x3), Math.abs(x3 - width), Math.abs(y3), Math.abs(y3 - height)); } else if (gradient.shape === 1) { rx = Math.min(Math.abs(x3), Math.abs(x3 - width)); ry = Math.min(Math.abs(y3), Math.abs(y3 - height)); } break; case 2: if (gradient.shape === 0) { rx = ry = Math.min(distance(x3, y3), distance(x3, y3 - height), distance(x3 - width, y3), distance(x3 - width, y3 - height)); } else if (gradient.shape === 1) { var c3 = Math.min(Math.abs(y3), Math.abs(y3 - height)) / Math.min(Math.abs(x3), Math.abs(x3 - width)); var _a = findCorner(width, height, x3, y3, true), cx = _a[0], cy = _a[1]; rx = distance(cx - x3, (cy - y3) / c3); ry = c3 * rx; } break; case 1: if (gradient.shape === 0) { rx = ry = Math.max(Math.abs(x3), Math.abs(x3 - width), Math.abs(y3), Math.abs(y3 - height)); } else if (gradient.shape === 1) { rx = Math.max(Math.abs(x3), Math.abs(x3 - width)); ry = Math.max(Math.abs(y3), Math.abs(y3 - height)); } break; case 3: if (gradient.shape === 0) { rx = ry = Math.max(distance(x3, y3), distance(x3, y3 - height), distance(x3 - width, y3), distance(x3 - width, y3 - height)); } else if (gradient.shape === 1) { var c3 = Math.max(Math.abs(y3), Math.abs(y3 - height)) / Math.max(Math.abs(x3), Math.abs(x3 - width)); var _b = findCorner(width, height, x3, y3, false), cx = _b[0], cy = _b[1]; rx = distance(cx - x3, (cy - y3) / c3); ry = c3 * rx; } break; } if (Array.isArray(gradient.size)) { rx = getAbsoluteValue(gradient.size[0], width); ry = gradient.size.length === 2 ? getAbsoluteValue(gradient.size[1], height) : rx; } return [rx, ry]; }; var linearGradient = function(context, tokens2) { var angle$1 = deg(180); var stops = []; parseFunctionArgs(tokens2).forEach(function(arg, i4) { if (i4 === 0) { var firstToken = arg[0]; if (firstToken.type === 20 && firstToken.value === "to") { angle$1 = parseNamedSide(arg); return; } else if (isAngle(firstToken)) { angle$1 = angle.parse(context, firstToken); return; } } var colorStop = parseColorStop(context, arg); stops.push(colorStop); }); return { angle: angle$1, stops, type: 1 /* LINEAR_GRADIENT */ }; }; var prefixLinearGradient = function(context, tokens2) { var angle$1 = deg(180); var stops = []; parseFunctionArgs(tokens2).forEach(function(arg, i4) { if (i4 === 0) { var firstToken = arg[0]; if (firstToken.type === 20 && ["top", "left", "right", "bottom"].indexOf(firstToken.value) !== -1) { angle$1 = parseNamedSide(arg); return; } else if (isAngle(firstToken)) { angle$1 = (angle.parse(context, firstToken) + deg(270)) % deg(360); return; } } var colorStop = parseColorStop(context, arg); stops.push(colorStop); }); return { angle: angle$1, stops, type: 1 /* LINEAR_GRADIENT */ }; }; var webkitGradient = function(context, tokens2) { var angle2 = deg(180); var stops = []; var type = 1; var shape = 0; var size2 = 3; var position2 = []; parseFunctionArgs(tokens2).forEach(function(arg, i4) { var firstToken = arg[0]; if (i4 === 0) { if (isIdentToken(firstToken) && firstToken.value === "linear") { type = 1; return; } else if (isIdentToken(firstToken) && firstToken.value === "radial") { type = 2; return; } } if (firstToken.type === 18) { if (firstToken.name === "from") { var color2 = color$1.parse(context, firstToken.values[0]); stops.push({ stop: ZERO_LENGTH, color: color2 }); } else if (firstToken.name === "to") { var color2 = color$1.parse(context, firstToken.values[0]); stops.push({ stop: HUNDRED_PERCENT, color: color2 }); } else if (firstToken.name === "color-stop") { var values = firstToken.values.filter(nonFunctionArgSeparator); if (values.length === 2) { var color2 = color$1.parse(context, values[1]); var stop_1 = values[0]; if (isNumberToken(stop_1)) { stops.push({ stop: { type: 16, number: stop_1.number * 100, flags: stop_1.flags }, color: color2 }); } } } } }); return type === 1 ? { angle: (angle2 + deg(180)) % deg(360), stops, type } : { size: size2, shape, stops, position: position2, type }; }; var CLOSEST_SIDE = "closest-side"; var FARTHEST_SIDE = "farthest-side"; var CLOSEST_CORNER = "closest-corner"; var FARTHEST_CORNER = "farthest-corner"; var CIRCLE = "circle"; var ELLIPSE = "ellipse"; var COVER = "cover"; var CONTAIN = "contain"; var radialGradient = function(context, tokens2) { var shape = 0; var size2 = 3; var stops = []; var position2 = []; parseFunctionArgs(tokens2).forEach(function(arg, i4) { var isColorStop = true; if (i4 === 0) { var isAtPosition_1 = false; isColorStop = arg.reduce(function(acc, token) { if (isAtPosition_1) { if (isIdentToken(token)) { switch (token.value) { case "center": position2.push(FIFTY_PERCENT); return acc; case "top": case "left": position2.push(ZERO_LENGTH); return acc; case "right": case "bottom": position2.push(HUNDRED_PERCENT); return acc; } } else if (isLengthPercentage(token) || isLength(token)) { position2.push(token); } } else if (isIdentToken(token)) { switch (token.value) { case CIRCLE: shape = 0; return false; case ELLIPSE: shape = 1; return false; case "at": isAtPosition_1 = true; return false; case CLOSEST_SIDE: size2 = 0; return false; case COVER: case FARTHEST_SIDE: size2 = 1; return false; case CONTAIN: case CLOSEST_CORNER: size2 = 2; return false; case FARTHEST_CORNER: size2 = 3; return false; } } else if (isLength(token) || isLengthPercentage(token)) { if (!Array.isArray(size2)) { size2 = []; } size2.push(token); return false; } return acc; }, isColorStop); } if (isColorStop) { var colorStop = parseColorStop(context, arg); stops.push(colorStop); } }); return { size: size2, shape, stops, position: position2, type: 2 /* RADIAL_GRADIENT */ }; }; var prefixRadialGradient = function(context, tokens2) { var shape = 0; var size2 = 3; var stops = []; var position2 = []; parseFunctionArgs(tokens2).forEach(function(arg, i4) { var isColorStop = true; if (i4 === 0) { isColorStop = arg.reduce(function(acc, token) { if (isIdentToken(token)) { switch (token.value) { case "center": position2.push(FIFTY_PERCENT); return false; case "top": case "left": position2.push(ZERO_LENGTH); return false; case "right": case "bottom": position2.push(HUNDRED_PERCENT); return false; } } else if (isLengthPercentage(token) || isLength(token)) { position2.push(token); return false; } return acc; }, isColorStop); } else if (i4 === 1) { isColorStop = arg.reduce(function(acc, token) { if (isIdentToken(token)) { switch (token.value) { case CIRCLE: shape = 0; return false; case ELLIPSE: shape = 1; return false; case CONTAIN: case CLOSEST_SIDE: size2 = 0; return false; case FARTHEST_SIDE: size2 = 1; return false; case CLOSEST_CORNER: size2 = 2; return false; case COVER: case FARTHEST_CORNER: size2 = 3; return false; } } else if (isLength(token) || isLengthPercentage(token)) { if (!Array.isArray(size2)) { size2 = []; } size2.push(token); return false; } return acc; }, isColorStop); } if (isColorStop) { var colorStop = parseColorStop(context, arg); stops.push(colorStop); } }); return { size: size2, shape, stops, position: position2, type: 2 /* RADIAL_GRADIENT */ }; }; var isLinearGradient = function(background) { return background.type === 1; }; var isRadialGradient = function(background) { return background.type === 2; }; var image = { name: "image", parse: function(context, value) { if (value.type === 22) { var image_1 = { url: value.value, type: 0 /* URL */ }; context.cache.addImage(value.value); return image_1; } if (value.type === 18) { var imageFunction = SUPPORTED_IMAGE_FUNCTIONS[value.name]; if (typeof imageFunction === "undefined") { throw new Error('Attempting to parse an unsupported image function "' + value.name + '"'); } return imageFunction(context, value.values); } throw new Error("Unsupported image type " + value.type); } }; function isSupportedImage(value) { return !(value.type === 20 && value.value === "none") && (value.type !== 18 || !!SUPPORTED_IMAGE_FUNCTIONS[value.name]); } var SUPPORTED_IMAGE_FUNCTIONS = { "linear-gradient": linearGradient, "-moz-linear-gradient": prefixLinearGradient, "-ms-linear-gradient": prefixLinearGradient, "-o-linear-gradient": prefixLinearGradient, "-webkit-linear-gradient": prefixLinearGradient, "radial-gradient": radialGradient, "-moz-radial-gradient": prefixRadialGradient, "-ms-radial-gradient": prefixRadialGradient, "-o-radial-gradient": prefixRadialGradient, "-webkit-radial-gradient": prefixRadialGradient, "-webkit-gradient": webkitGradient }; var backgroundImage = { name: "background-image", initialValue: "none", type: 1, prefix: false, parse: function(context, tokens2) { if (tokens2.length === 0) { return []; } var first = tokens2[0]; if (first.type === 20 && first.value === "none") { return []; } return tokens2.filter(function(value) { return nonFunctionArgSeparator(value) && isSupportedImage(value); }).map(function(value) { return image.parse(context, value); }); } }; var backgroundOrigin = { name: "background-origin", initialValue: "border-box", prefix: false, type: 1, parse: function(_context, tokens2) { return tokens2.map(function(token) { if (isIdentToken(token)) { switch (token.value) { case "padding-box": return 1; case "content-box": return 2; } } return 0; }); } }; var backgroundPosition = { name: "background-position", initialValue: "0% 0%", type: 1, prefix: false, parse: function(_context, tokens2) { return parseFunctionArgs(tokens2).map(function(values) { return values.filter(isLengthPercentage); }).map(parseLengthPercentageTuple); } }; var backgroundRepeat = { name: "background-repeat", initialValue: "repeat", prefix: false, type: 1, parse: function(_context, tokens2) { return parseFunctionArgs(tokens2).map(function(values) { return values.filter(isIdentToken).map(function(token) { return token.value; }).join(" "); }).map(parseBackgroundRepeat); } }; var parseBackgroundRepeat = function(value) { switch (value) { case "no-repeat": return 1; case "repeat-x": case "repeat no-repeat": return 2; case "repeat-y": case "no-repeat repeat": return 3; case "repeat": default: return 0; } }; var BACKGROUND_SIZE; (function(BACKGROUND_SIZE2) { BACKGROUND_SIZE2["AUTO"] = "auto"; BACKGROUND_SIZE2["CONTAIN"] = "contain"; BACKGROUND_SIZE2["COVER"] = "cover"; })(BACKGROUND_SIZE || (BACKGROUND_SIZE = {})); var backgroundSize = { name: "background-size", initialValue: "0", prefix: false, type: 1, parse: function(_context, tokens2) { return parseFunctionArgs(tokens2).map(function(values) { return values.filter(isBackgroundSizeInfoToken); }); } }; var isBackgroundSizeInfoToken = function(value) { return isIdentToken(value) || isLengthPercentage(value); }; var borderColorForSide = function(side) { return { name: "border-" + side + "-color", initialValue: "transparent", prefix: false, type: 3, format: "color" }; }; var borderTopColor = borderColorForSide("top"); var borderRightColor = borderColorForSide("right"); var borderBottomColor = borderColorForSide("bottom"); var borderLeftColor = borderColorForSide("left"); var borderRadiusForSide = function(side) { return { name: "border-radius-" + side, initialValue: "0 0", prefix: false, type: 1, parse: function(_context, tokens2) { return parseLengthPercentageTuple(tokens2.filter(isLengthPercentage)); } }; }; var borderTopLeftRadius = borderRadiusForSide("top-left"); var borderTopRightRadius = borderRadiusForSide("top-right"); var borderBottomRightRadius = borderRadiusForSide("bottom-right"); var borderBottomLeftRadius = borderRadiusForSide("bottom-left"); var borderStyleForSide = function(side) { return { name: "border-" + side + "-style", initialValue: "solid", prefix: false, type: 2, parse: function(_context, style) { switch (style) { case "none": return 0; case "dashed": return 2; case "dotted": return 3; case "double": return 4; } return 1; } }; }; var borderTopStyle = borderStyleForSide("top"); var borderRightStyle = borderStyleForSide("right"); var borderBottomStyle = borderStyleForSide("bottom"); var borderLeftStyle = borderStyleForSide("left"); var borderWidthForSide = function(side) { return { name: "border-" + side + "-width", initialValue: "0", type: 0, prefix: false, parse: function(_context, token) { if (isDimensionToken(token)) { return token.number; } return 0; } }; }; var borderTopWidth = borderWidthForSide("top"); var borderRightWidth = borderWidthForSide("right"); var borderBottomWidth = borderWidthForSide("bottom"); var borderLeftWidth = borderWidthForSide("left"); var color = { name: "color", initialValue: "transparent", prefix: false, type: 3, format: "color" }; var direction = { name: "direction", initialValue: "ltr", prefix: false, type: 2, parse: function(_context, direction2) { switch (direction2) { case "rtl": return 1; case "ltr": default: return 0; } } }; var display = { name: "display", initialValue: "inline-block", prefix: false, type: 1, parse: function(_context, tokens2) { return tokens2.filter(isIdentToken).reduce( function(bit, token) { return bit | parseDisplayValue(token.value); }, 0 /* NONE */ ); } }; var parseDisplayValue = function(display2) { switch (display2) { case "block": case "-webkit-box": return 2; case "inline": return 4; case "run-in": return 8; case "flow": return 16; case "flow-root": return 32; case "table": return 64; case "flex": case "-webkit-flex": return 128; case "grid": case "-ms-grid": return 256; case "ruby": return 512; case "subgrid": return 1024; case "list-item": return 2048; case "table-row-group": return 4096; case "table-header-group": return 8192; case "table-footer-group": return 16384; case "table-row": return 32768; case "table-cell": return 65536; case "table-column-group": return 131072; case "table-column": return 262144; case "table-caption": return 524288; case "ruby-base": return 1048576; case "ruby-text": return 2097152; case "ruby-base-container": return 4194304; case "ruby-text-container": return 8388608; case "contents": return 16777216; case "inline-block": return 33554432; case "inline-list-item": return 67108864; case "inline-table": return 134217728; case "inline-flex": return 268435456; case "inline-grid": return 536870912; } return 0; }; var float = { name: "float", initialValue: "none", prefix: false, type: 2, parse: function(_context, float2) { switch (float2) { case "left": return 1; case "right": return 2; case "inline-start": return 3; case "inline-end": return 4; } return 0; } }; var letterSpacing = { name: "letter-spacing", initialValue: "0", prefix: false, type: 0, parse: function(_context, token) { if (token.type === 20 && token.value === "normal") { return 0; } if (token.type === 17) { return token.number; } if (token.type === 15) { return token.number; } return 0; } }; var LINE_BREAK; (function(LINE_BREAK2) { LINE_BREAK2["NORMAL"] = "normal"; LINE_BREAK2["STRICT"] = "strict"; })(LINE_BREAK || (LINE_BREAK = {})); var lineBreak = { name: "line-break", initialValue: "normal", prefix: false, type: 2, parse: function(_context, lineBreak2) { switch (lineBreak2) { case "strict": return LINE_BREAK.STRICT; case "normal": default: return LINE_BREAK.NORMAL; } } }; var lineHeight = { name: "line-height", initialValue: "normal", prefix: false, type: 4 /* TOKEN_VALUE */ }; var computeLineHeight = function(token, fontSize2) { if (isIdentToken(token) && token.value === "normal") { return 1.2 * fontSize2; } else if (token.type === 17) { return fontSize2 * token.number; } else if (isLengthPercentage(token)) { return getAbsoluteValue(token, fontSize2); } return fontSize2; }; var listStyleImage = { name: "list-style-image", initialValue: "none", type: 0, prefix: false, parse: function(context, token) { if (token.type === 20 && token.value === "none") { return null; } return image.parse(context, token); } }; var listStylePosition = { name: "list-style-position", initialValue: "outside", prefix: false, type: 2, parse: function(_context, position2) { switch (position2) { case "inside": return 0; case "outside": default: return 1; } } }; var listStyleType = { name: "list-style-type", initialValue: "none", prefix: false, type: 2, parse: function(_context, type) { switch (type) { case "disc": return 0; case "circle": return 1; case "square": return 2; case "decimal": return 3; case "cjk-decimal": return 4; case "decimal-leading-zero": return 5; case "lower-roman": return 6; case "upper-roman": return 7; case "lower-greek": return 8; case "lower-alpha": return 9; case "upper-alpha": return 10; case "arabic-indic": return 11; case "armenian": return 12; case "bengali": return 13; case "cambodian": return 14; case "cjk-earthly-branch": return 15; case "cjk-heavenly-stem": return 16; case "cjk-ideographic": return 17; case "devanagari": return 18; case "ethiopic-numeric": return 19; case "georgian": return 20; case "gujarati": return 21; case "gurmukhi": return 22; case "hebrew": return 22; case "hiragana": return 23; case "hiragana-iroha": return 24; case "japanese-formal": return 25; case "japanese-informal": return 26; case "kannada": return 27; case "katakana": return 28; case "katakana-iroha": return 29; case "khmer": return 30; case "korean-hangul-formal": return 31; case "korean-hanja-formal": return 32; case "korean-hanja-informal": return 33; case "lao": return 34; case "lower-armenian": return 35; case "malayalam": return 36; case "mongolian": return 37; case "myanmar": return 38; case "oriya": return 39; case "persian": return 40; case "simp-chinese-formal": return 41; case "simp-chinese-informal": return 42; case "tamil": return 43; case "telugu": return 44; case "thai": return 45; case "tibetan": return 46; case "trad-chinese-formal": return 47; case "trad-chinese-informal": return 48; case "upper-armenian": return 49; case "disclosure-open": return 50; case "disclosure-closed": return 51; case "none": default: return -1; } } }; var marginForSide = function(side) { return { name: "margin-" + side, initialValue: "0", prefix: false, type: 4 /* TOKEN_VALUE */ }; }; var marginTop = marginForSide("top"); var marginRight = marginForSide("right"); var marginBottom = marginForSide("bottom"); var marginLeft = marginForSide("left"); var overflow = { name: "overflow", initialValue: "visible", prefix: false, type: 1, parse: function(_context, tokens2) { return tokens2.filter(isIdentToken).map(function(overflow2) { switch (overflow2.value) { case "hidden": return 1; case "scroll": return 2; case "clip": return 3; case "auto": return 4; case "visible": default: return 0; } }); } }; var overflowWrap = { name: "overflow-wrap", initialValue: "normal", prefix: false, type: 2, parse: function(_context, overflow2) { switch (overflow2) { case "break-word": return "break-word"; case "normal": default: return "normal"; } } }; var paddingForSide = function(side) { return { name: "padding-" + side, initialValue: "0", prefix: false, type: 3, format: "length-percentage" }; }; var paddingTop = paddingForSide("top"); var paddingRight = paddingForSide("right"); var paddingBottom = paddingForSide("bottom"); var paddingLeft = paddingForSide("left"); var textAlign = { name: "text-align", initialValue: "left", prefix: false, type: 2, parse: function(_context, textAlign2) { switch (textAlign2) { case "right": return 2; case "center": case "justify": return 1; case "left": default: return 0; } } }; var position = { name: "position", initialValue: "static", prefix: false, type: 2, parse: function(_context, position2) { switch (position2) { case "relative": return 1; case "absolute": return 2; case "fixed": return 3; case "sticky": return 4; } return 0; } }; var textShadow = { name: "text-shadow", initialValue: "none", type: 1, prefix: false, parse: function(context, tokens2) { if (tokens2.length === 1 && isIdentWithValue(tokens2[0], "none")) { return []; } return parseFunctionArgs(tokens2).map(function(values) { var shadow = { color: COLORS.TRANSPARENT, offsetX: ZERO_LENGTH, offsetY: ZERO_LENGTH, blur: ZERO_LENGTH }; var c3 = 0; for (var i4 = 0; i4 < values.length; i4++) { var token = values[i4]; if (isLength(token)) { if (c3 === 0) { shadow.offsetX = token; } else if (c3 === 1) { shadow.offsetY = token; } else { shadow.blur = token; } c3++; } else { shadow.color = color$1.parse(context, token); } } return shadow; }); } }; var textTransform = { name: "text-transform", initialValue: "none", prefix: false, type: 2, parse: function(_context, textTransform2) { switch (textTransform2) { case "uppercase": return 2; case "lowercase": return 1; case "capitalize": return 3; } return 0; } }; var transform$1 = { name: "transform", initialValue: "none", prefix: true, type: 0, parse: function(_context, token) { if (token.type === 20 && token.value === "none") { return null; } if (token.type === 18) { var transformFunction = SUPPORTED_TRANSFORM_FUNCTIONS[token.name]; if (typeof transformFunction === "undefined") { throw new Error('Attempting to parse an unsupported transform function "' + token.name + '"'); } return transformFunction(token.values); } return null; } }; var matrix = function(args) { var values = args.filter(function(arg) { return arg.type === 17; }).map(function(arg) { return arg.number; }); return values.length === 6 ? values : null; }; var matrix3d = function(args) { var values = args.filter(function(arg) { return arg.type === 17; }).map(function(arg) { return arg.number; }); var a1 = values[0], b1 = values[1]; values[2]; values[3]; var a22 = values[4], b22 = values[5]; values[6]; values[7]; values[8]; values[9]; values[10]; values[11]; var a4 = values[12], b4 = values[13]; values[14]; values[15]; return values.length === 16 ? [a1, b1, a22, b22, a4, b4] : null; }; var SUPPORTED_TRANSFORM_FUNCTIONS = { matrix, matrix3d }; var DEFAULT_VALUE = { type: 16, number: 50, flags: FLAG_INTEGER }; var DEFAULT2 = [DEFAULT_VALUE, DEFAULT_VALUE]; var transformOrigin = { name: "transform-origin", initialValue: "50% 50%", prefix: true, type: 1, parse: function(_context, tokens2) { var origins = tokens2.filter(isLengthPercentage); if (origins.length !== 2) { return DEFAULT2; } return [origins[0], origins[1]]; } }; var visibility = { name: "visible", initialValue: "none", prefix: false, type: 2, parse: function(_context, visibility2) { switch (visibility2) { case "hidden": return 1; case "collapse": return 2; case "visible": default: return 0; } } }; var WORD_BREAK; (function(WORD_BREAK2) { WORD_BREAK2["NORMAL"] = "normal"; WORD_BREAK2["BREAK_ALL"] = "break-all"; WORD_BREAK2["KEEP_ALL"] = "keep-all"; })(WORD_BREAK || (WORD_BREAK = {})); var wordBreak = { name: "word-break", initialValue: "normal", prefix: false, type: 2, parse: function(_context, wordBreak2) { switch (wordBreak2) { case "break-all": return WORD_BREAK.BREAK_ALL; case "keep-all": return WORD_BREAK.KEEP_ALL; case "normal": default: return WORD_BREAK.NORMAL; } } }; var zIndex = { name: "z-index", initialValue: "auto", prefix: false, type: 0, parse: function(_context, token) { if (token.type === 20) { return { auto: true, order: 0 }; } if (isNumberToken(token)) { return { auto: false, order: token.number }; } throw new Error("Invalid z-index number parsed"); } }; var time = { name: "time", parse: function(_context, value) { if (value.type === 15) { switch (value.unit.toLowerCase()) { case "s": return 1e3 * value.number; case "ms": return value.number; } } throw new Error("Unsupported time type"); } }; var opacity = { name: "opacity", initialValue: "1", type: 0, prefix: false, parse: function(_context, token) { if (isNumberToken(token)) { return token.number; } return 1; } }; var textDecorationColor = { name: "text-decoration-color", initialValue: "transparent", prefix: false, type: 3, format: "color" }; var textDecorationLine = { name: "text-decoration-line", initialValue: "none", prefix: false, type: 1, parse: function(_context, tokens2) { return tokens2.filter(isIdentToken).map(function(token) { switch (token.value) { case "underline": return 1; case "overline": return 2; case "line-through": return 3; case "none": return 4; } return 0; }).filter(function(line) { return line !== 0; }); } }; var fontFamily = { name: "font-family", initialValue: "", prefix: false, type: 1, parse: function(_context, tokens2) { var accumulator = []; var results = []; tokens2.forEach(function(token) { switch (token.type) { case 20: case 0: accumulator.push(token.value); break; case 17: accumulator.push(token.number.toString()); break; case 4: results.push(accumulator.join(" ")); accumulator.length = 0; break; } }); if (accumulator.length) { results.push(accumulator.join(" ")); } return results.map(function(result) { return result.indexOf(" ") === -1 ? result : "'" + result + "'"; }); } }; var fontSize = { name: "font-size", initialValue: "0", prefix: false, type: 3, format: "length" }; var fontWeight = { name: "font-weight", initialValue: "normal", type: 0, prefix: false, parse: function(_context, token) { if (isNumberToken(token)) { return token.number; } if (isIdentToken(token)) { switch (token.value) { case "bold": return 700; case "normal": default: return 400; } } return 400; } }; var fontVariant = { name: "font-variant", initialValue: "none", type: 1, prefix: false, parse: function(_context, tokens2) { return tokens2.filter(isIdentToken).map(function(token) { return token.value; }); } }; var fontStyle = { name: "font-style", initialValue: "normal", prefix: false, type: 2, parse: function(_context, overflow2) { switch (overflow2) { case "oblique": return "oblique"; case "italic": return "italic"; case "normal": default: return "normal"; } } }; var contains2 = function(bit, value) { return (bit & value) !== 0; }; var content2 = { name: "content", initialValue: "none", type: 1, prefix: false, parse: function(_context, tokens2) { if (tokens2.length === 0) { return []; } var first = tokens2[0]; if (first.type === 20 && first.value === "none") { return []; } return tokens2; } }; var counterIncrement = { name: "counter-increment", initialValue: "none", prefix: true, type: 1, parse: function(_context, tokens2) { if (tokens2.length === 0) { return null; } var first = tokens2[0]; if (first.type === 20 && first.value === "none") { return null; } var increments = []; var filtered = tokens2.filter(nonWhiteSpace); for (var i4 = 0; i4 < filtered.length; i4++) { var counter = filtered[i4]; var next = filtered[i4 + 1]; if (counter.type === 20) { var increment = next && isNumberToken(next) ? next.number : 1; increments.push({ counter: counter.value, increment }); } } return increments; } }; var counterReset = { name: "counter-reset", initialValue: "none", prefix: true, type: 1, parse: function(_context, tokens2) { if (tokens2.length === 0) { return []; } var resets = []; var filtered = tokens2.filter(nonWhiteSpace); for (var i4 = 0; i4 < filtered.length; i4++) { var counter = filtered[i4]; var next = filtered[i4 + 1]; if (isIdentToken(counter) && counter.value !== "none") { var reset = next && isNumberToken(next) ? next.number : 0; resets.push({ counter: counter.value, reset }); } } return resets; } }; var duration = { name: "duration", initialValue: "0s", prefix: false, type: 1, parse: function(context, tokens2) { return tokens2.filter(isDimensionToken).map(function(token) { return time.parse(context, token); }); } }; var quotes = { name: "quotes", initialValue: "none", prefix: true, type: 1, parse: function(_context, tokens2) { if (tokens2.length === 0) { return null; } var first = tokens2[0]; if (first.type === 20 && first.value === "none") { return null; } var quotes2 = []; var filtered = tokens2.filter(isStringToken); if (filtered.length % 2 !== 0) { return null; } for (var i4 = 0; i4 < filtered.length; i4 += 2) { var open_1 = filtered[i4].value; var close_1 = filtered[i4 + 1].value; quotes2.push({ open: open_1, close: close_1 }); } return quotes2; } }; var getQuote = function(quotes2, depth, open) { if (!quotes2) { return ""; } var quote = quotes2[Math.min(depth, quotes2.length - 1)]; if (!quote) { return ""; } return open ? quote.open : quote.close; }; var boxShadow = { name: "box-shadow", initialValue: "none", type: 1, prefix: false, parse: function(context, tokens2) { if (tokens2.length === 1 && isIdentWithValue(tokens2[0], "none")) { return []; } return parseFunctionArgs(tokens2).map(function(values) { var shadow = { color: 255, offsetX: ZERO_LENGTH, offsetY: ZERO_LENGTH, blur: ZERO_LENGTH, spread: ZERO_LENGTH, inset: false }; var c3 = 0; for (var i4 = 0; i4 < values.length; i4++) { var token = values[i4]; if (isIdentWithValue(token, "inset")) { shadow.inset = true; } else if (isLength(token)) { if (c3 === 0) { shadow.offsetX = token; } else if (c3 === 1) { shadow.offsetY = token; } else if (c3 === 2) { shadow.blur = token; } else { shadow.spread = token; } c3++; } else { shadow.color = color$1.parse(context, token); } } return shadow; }); } }; var paintOrder = { name: "paint-order", initialValue: "normal", prefix: false, type: 1, parse: function(_context, tokens2) { var DEFAULT_VALUE2 = [ 0, 1, 2 /* MARKERS */ ]; var layers = []; tokens2.filter(isIdentToken).forEach(function(token) { switch (token.value) { case "stroke": layers.push( 1 /* STROKE */ ); break; case "fill": layers.push( 0 /* FILL */ ); break; case "markers": layers.push( 2 /* MARKERS */ ); break; } }); DEFAULT_VALUE2.forEach(function(value) { if (layers.indexOf(value) === -1) { layers.push(value); } }); return layers; } }; var webkitTextStrokeColor = { name: "-webkit-text-stroke-color", initialValue: "currentcolor", prefix: false, type: 3, format: "color" }; var webkitTextStrokeWidth = { name: "-webkit-text-stroke-width", initialValue: "0", type: 0, prefix: false, parse: function(_context, token) { if (isDimensionToken(token)) { return token.number; } return 0; } }; var CSSParsedDeclaration = ( /** @class */ function() { function CSSParsedDeclaration2(context, declaration) { var _a, _b; this.animationDuration = parse(context, duration, declaration.animationDuration); this.backgroundClip = parse(context, backgroundClip, declaration.backgroundClip); this.backgroundColor = parse(context, backgroundColor, declaration.backgroundColor); this.backgroundImage = parse(context, backgroundImage, declaration.backgroundImage); this.backgroundOrigin = parse(context, backgroundOrigin, declaration.backgroundOrigin); this.backgroundPosition = parse(context, backgroundPosition, declaration.backgroundPosition); this.backgroundRepeat = parse(context, backgroundRepeat, declaration.backgroundRepeat); this.backgroundSize = parse(context, backgroundSize, declaration.backgroundSize); this.borderTopColor = parse(context, borderTopColor, declaration.borderTopColor); this.borderRightColor = parse(context, borderRightColor, declaration.borderRightColor); this.borderBottomColor = parse(context, borderBottomColor, declaration.borderBottomColor); this.borderLeftColor = parse(context, borderLeftColor, declaration.borderLeftColor); this.borderTopLeftRadius = parse(context, borderTopLeftRadius, declaration.borderTopLeftRadius); this.borderTopRightRadius = parse(context, borderTopRightRadius, declaration.borderTopRightRadius); this.borderBottomRightRadius = parse(context, borderBottomRightRadius, declaration.borderBottomRightRadius); this.borderBottomLeftRadius = parse(context, borderBottomLeftRadius, declaration.borderBottomLeftRadius); this.borderTopStyle = parse(context, borderTopStyle, declaration.borderTopStyle); this.borderRightStyle = parse(context, borderRightStyle, declaration.borderRightStyle); this.borderBottomStyle = parse(context, borderBottomStyle, declaration.borderBottomStyle); this.borderLeftStyle = parse(context, borderLeftStyle, declaration.borderLeftStyle); this.borderTopWidth = parse(context, borderTopWidth, declaration.borderTopWidth); this.borderRightWidth = parse(context, borderRightWidth, declaration.borderRightWidth); this.borderBottomWidth = parse(context, borderBottomWidth, declaration.borderBottomWidth); this.borderLeftWidth = parse(context, borderLeftWidth, declaration.borderLeftWidth); this.boxShadow = parse(context, boxShadow, declaration.boxShadow); this.color = parse(context, color, declaration.color); this.direction = parse(context, direction, declaration.direction); this.display = parse(context, display, declaration.display); this.float = parse(context, float, declaration.cssFloat); this.fontFamily = parse(context, fontFamily, declaration.fontFamily); this.fontSize = parse(context, fontSize, declaration.fontSize); this.fontStyle = parse(context, fontStyle, declaration.fontStyle); this.fontVariant = parse(context, fontVariant, declaration.fontVariant); this.fontWeight = parse(context, fontWeight, declaration.fontWeight); this.letterSpacing = parse(context, letterSpacing, declaration.letterSpacing); this.lineBreak = parse(context, lineBreak, declaration.lineBreak); this.lineHeight = parse(context, lineHeight, declaration.lineHeight); this.listStyleImage = parse(context, listStyleImage, declaration.listStyleImage); this.listStylePosition = parse(context, listStylePosition, declaration.listStylePosition); this.listStyleType = parse(context, listStyleType, declaration.listStyleType); this.marginTop = parse(context, marginTop, declaration.marginTop); this.marginRight = parse(context, marginRight, declaration.marginRight); this.marginBottom = parse(context, marginBottom, declaration.marginBottom); this.marginLeft = parse(context, marginLeft, declaration.marginLeft); this.opacity = parse(context, opacity, declaration.opacity); var overflowTuple = parse(context, overflow, declaration.overflow); this.overflowX = overflowTuple[0]; this.overflowY = overflowTuple[overflowTuple.length > 1 ? 1 : 0]; this.overflowWrap = parse(context, overflowWrap, declaration.overflowWrap); this.paddingTop = parse(context, paddingTop, declaration.paddingTop); this.paddingRight = parse(context, paddingRight, declaration.paddingRight); this.paddingBottom = parse(context, paddingBottom, declaration.paddingBottom); this.paddingLeft = parse(context, paddingLeft, declaration.paddingLeft); this.paintOrder = parse(context, paintOrder, declaration.paintOrder); this.position = parse(context, position, declaration.position); this.textAlign = parse(context, textAlign, declaration.textAlign); this.textDecorationColor = parse(context, textDecorationColor, (_a = declaration.textDecorationColor) !== null && _a !== void 0 ? _a : declaration.color); this.textDecorationLine = parse(context, textDecorationLine, (_b = declaration.textDecorationLine) !== null && _b !== void 0 ? _b : declaration.textDecoration); this.textShadow = parse(context, textShadow, declaration.textShadow); this.textTransform = parse(context, textTransform, declaration.textTransform); this.transform = parse(context, transform$1, declaration.transform); this.transformOrigin = parse(context, transformOrigin, declaration.transformOrigin); this.visibility = parse(context, visibility, declaration.visibility); this.webkitTextStrokeColor = parse(context, webkitTextStrokeColor, declaration.webkitTextStrokeColor); this.webkitTextStrokeWidth = parse(context, webkitTextStrokeWidth, declaration.webkitTextStrokeWidth); this.wordBreak = parse(context, wordBreak, declaration.wordBreak); this.zIndex = parse(context, zIndex, declaration.zIndex); } CSSParsedDeclaration2.prototype.isVisible = function() { return this.display > 0 && this.opacity > 0 && this.visibility === 0; }; CSSParsedDeclaration2.prototype.isTransparent = function() { return isTransparent(this.backgroundColor); }; CSSParsedDeclaration2.prototype.isTransformed = function() { return this.transform !== null; }; CSSParsedDeclaration2.prototype.isPositioned = function() { return this.position !== 0; }; CSSParsedDeclaration2.prototype.isPositionedWithZIndex = function() { return this.isPositioned() && !this.zIndex.auto; }; CSSParsedDeclaration2.prototype.isFloating = function() { return this.float !== 0; }; CSSParsedDeclaration2.prototype.isInlineLevel = function() { return contains2( this.display, 4 /* INLINE */ ) || contains2( this.display, 33554432 /* INLINE_BLOCK */ ) || contains2( this.display, 268435456 /* INLINE_FLEX */ ) || contains2( this.display, 536870912 /* INLINE_GRID */ ) || contains2( this.display, 67108864 /* INLINE_LIST_ITEM */ ) || contains2( this.display, 134217728 /* INLINE_TABLE */ ); }; return CSSParsedDeclaration2; }() ); var CSSParsedPseudoDeclaration = ( /** @class */ function() { function CSSParsedPseudoDeclaration2(context, declaration) { this.content = parse(context, content2, declaration.content); this.quotes = parse(context, quotes, declaration.quotes); } return CSSParsedPseudoDeclaration2; }() ); var CSSParsedCounterDeclaration = ( /** @class */ function() { function CSSParsedCounterDeclaration2(context, declaration) { this.counterIncrement = parse(context, counterIncrement, declaration.counterIncrement); this.counterReset = parse(context, counterReset, declaration.counterReset); } return CSSParsedCounterDeclaration2; }() ); var parse = function(context, descriptor, style) { var tokenizer = new Tokenizer(); var value = style !== null && typeof style !== "undefined" ? style.toString() : descriptor.initialValue; tokenizer.write(value); var parser = new Parser(tokenizer.read()); switch (descriptor.type) { case 2: var token = parser.parseComponentValue(); return descriptor.parse(context, isIdentToken(token) ? token.value : descriptor.initialValue); case 0: return descriptor.parse(context, parser.parseComponentValue()); case 1: return descriptor.parse(context, parser.parseComponentValues()); case 4: return parser.parseComponentValue(); case 3: switch (descriptor.format) { case "angle": return angle.parse(context, parser.parseComponentValue()); case "color": return color$1.parse(context, parser.parseComponentValue()); case "image": return image.parse(context, parser.parseComponentValue()); case "length": var length_1 = parser.parseComponentValue(); return isLength(length_1) ? length_1 : ZERO_LENGTH; case "length-percentage": var value_1 = parser.parseComponentValue(); return isLengthPercentage(value_1) ? value_1 : ZERO_LENGTH; case "time": return time.parse(context, parser.parseComponentValue()); } break; } }; var elementDebuggerAttribute = "data-html2canvas-debug"; var getElementDebugType = function(element) { var attribute = element.getAttribute(elementDebuggerAttribute); switch (attribute) { case "all": return 1; case "clone": return 2; case "parse": return 3; case "render": return 4; default: return 0; } }; var isDebugging = function(element, type) { var elementType2 = getElementDebugType(element); return elementType2 === 1 || type === elementType2; }; var ElementContainer = ( /** @class */ function() { function ElementContainer2(context, element) { this.context = context; this.textNodes = []; this.elements = []; this.flags = 0; if (isDebugging( element, 3 /* PARSE */ )) { debugger; } this.styles = new CSSParsedDeclaration(context, window.getComputedStyle(element, null)); if (isHTMLElementNode(element)) { if (this.styles.animationDuration.some(function(duration2) { return duration2 > 0; })) { element.style.animationDuration = "0s"; } if (this.styles.transform !== null) { element.style.transform = "none"; } } this.bounds = parseBounds(this.context, element); if (isDebugging( element, 4 /* RENDER */ )) { this.flags |= 16; } } return ElementContainer2; }() ); var base64 = "AAAAAAAAAAAAEA4AGBkAAFAaAAACAAAAAAAIABAAGAAwADgACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAAQABIAEQATAAIABAACAAQAAgAEAAIABAAVABcAAgAEAAIABAACAAQAGAAaABwAHgAgACIAI4AlgAIABAAmwCjAKgAsAC2AL4AvQDFAMoA0gBPAVYBWgEIAAgACACMANoAYgFkAWwBdAF8AX0BhQGNAZUBlgGeAaMBlQGWAasBswF8AbsBwwF0AcsBYwHTAQgA2wG/AOMBdAF8AekB8QF0AfkB+wHiAHQBfAEIAAMC5gQIAAsCEgIIAAgAFgIeAggAIgIpAggAMQI5AkACygEIAAgASAJQAlgCYAIIAAgACAAKBQoFCgUTBRMFGQUrBSsFCAAIAAgACAAIAAgACAAIAAgACABdAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABoAmgCrwGvAQgAbgJ2AggAHgEIAAgACADnAXsCCAAIAAgAgwIIAAgACAAIAAgACACKAggAkQKZAggAPADJAAgAoQKkAqwCsgK6AsICCADJAggA0AIIAAgACAAIANYC3gIIAAgACAAIAAgACABAAOYCCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAkASoB+QIEAAgACAA8AEMCCABCBQgACABJBVAFCAAIAAgACAAIAAgACAAIAAgACABTBVoFCAAIAFoFCABfBWUFCAAIAAgACAAIAAgAbQUIAAgACAAIAAgACABzBXsFfQWFBYoFigWKBZEFigWKBYoFmAWfBaYFrgWxBbkFCAAIAAgACAAIAAgACAAIAAgACAAIAMEFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAMgFCADQBQgACAAIAAgACAAIAAgACAAIAAgACAAIAO4CCAAIAAgAiQAIAAgACABAAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAD0AggACAD8AggACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIANYFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAMDvwAIAAgAJAIIAAgACAAIAAgACAAIAAgACwMTAwgACAB9BOsEGwMjAwgAKwMyAwsFYgE3A/MEPwMIAEUDTQNRAwgAWQOsAGEDCAAIAAgACAAIAAgACABpAzQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFIQUoBSwFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABtAwgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABMAEwACAAIAAgACAAIABgACAAIAAgACAC/AAgACAAyAQgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACAAIAAwAAgACAAIAAgACAAIAAgACAAIAAAARABIAAgACAAIABQASAAIAAgAIABwAEAAjgCIABsAqAC2AL0AigDQAtwC+IJIQqVAZUBWQqVAZUBlQGVAZUBlQGrC5UBlQGVAZUBlQGVAZUBlQGVAXsKlQGVAbAK6wsrDGUMpQzlDJUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAfAKAAuZA64AtwCJALoC6ADwAAgAuACgA/oEpgO6AqsD+AAIAAgAswMIAAgACAAIAIkAuwP5AfsBwwPLAwgACAAIAAgACADRA9kDCAAIAOED6QMIAAgACAAIAAgACADuA/YDCAAIAP4DyQAIAAgABgQIAAgAXQAOBAgACAAIAAgACAAIABMECAAIAAgACAAIAAgACAD8AAQBCAAIAAgAGgQiBCoECAExBAgAEAEIAAgACAAIAAgACAAIAAgACAAIAAgACAA4BAgACABABEYECAAIAAgATAQYAQgAVAQIAAgACAAIAAgACAAIAAgACAAIAFoECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAOQEIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAB+BAcACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAEABhgSMBAgACAAIAAgAlAQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAwAEAAQABAADAAMAAwADAAQABAAEAAQABAAEAAQABHATAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAdQMIAAgACAAIAAgACAAIAMkACAAIAAgAfQMIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACFA4kDCAAIAAgACAAIAOcBCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAIcDCAAIAAgACAAIAAgACAAIAAgACAAIAJEDCAAIAAgACADFAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABgBAgAZgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAbAQCBXIECAAIAHkECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABAAJwEQACjBKoEsgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAC6BMIECAAIAAgACAAIAAgACABmBAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAxwQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAGYECAAIAAgAzgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBd0FXwUIAOIF6gXxBYoF3gT5BQAGCAaKBYoFigWKBYoFigWKBYoFigWKBYoFigXWBIoFigWKBYoFigWKBYoFigWKBYsFEAaKBYoFigWKBYoFigWKBRQGCACKBYoFigWKBQgACAAIANEECAAIABgGigUgBggAJgYIAC4GMwaKBYoF0wQ3Bj4GigWKBYoFigWKBYoFigWKBYoFigWKBYoFigUIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWLBf///////wQABAAEAAQABAAEAAQABAAEAAQAAwAEAAQAAgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAQADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUAAAAFAAUAAAAFAAUAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAQAAAAUABQAFAAUABQAFAAAAAAAFAAUAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAFAAUAAQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAAABwAHAAcAAAAHAAcABwAFAAEAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAcABwAFAAUAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQABAAAAAAAAAAAAAAAFAAUABQAFAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAHAAcAAAAHAAcAAAAAAAUABQAHAAUAAQAHAAEABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwABAAUABQAFAAUAAAAAAAAAAAAAAAEAAQABAAEAAQABAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABQANAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAABQAHAAUABQAFAAAAAAAAAAcABQAFAAUABQAFAAQABAAEAAQABAAEAAQABAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUAAAAFAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAUAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAcABwAFAAcABwAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUABwAHAAUABQAFAAUAAAAAAAcABwAAAAAABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAAAAAAAAAAABQAFAAAAAAAFAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAFAAUABQAFAAUAAAAFAAUABwAAAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABwAFAAUABQAFAAAAAAAHAAcAAAAAAAcABwAFAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAAAAAAAAAHAAcABwAAAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAUABQAFAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAHAAcABQAHAAcAAAAFAAcABwAAAAcABwAFAAUAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAFAAcABwAFAAUABQAAAAUAAAAHAAcABwAHAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAHAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUAAAAFAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAUAAAAFAAUAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABwAFAAUABQAFAAUABQAAAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABQAFAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAFAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAHAAUABQAFAAUABQAFAAUABwAHAAcABwAHAAcABwAHAAUABwAHAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABwAHAAcABwAFAAUABwAHAAcAAAAAAAAAAAAHAAcABQAHAAcABwAHAAcABwAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAUABQAFAAUABQAFAAUAAAAFAAAABQAAAAAABQAFAAUABQAFAAUABQAFAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAUABQAFAAUABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABwAFAAcABwAHAAcABwAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAUABQAFAAUABwAHAAUABQAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABQAFAAcABwAHAAUABwAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAcABQAFAAUABQAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAAAAAABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAUABQAHAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAFAAUABQAFAAcABwAFAAUABwAHAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAcABwAFAAUABwAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABQAAAAAABQAFAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAcABwAAAAAAAAAAAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAcABwAFAAcABwAAAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAFAAUABQAAAAUABQAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABwAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAHAAcABQAHAAUABQAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAAABwAHAAAAAAAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAFAAUABwAFAAcABwAFAAcABQAFAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAAAAAABwAHAAcABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAFAAcABwAFAAUABQAFAAUABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAUABQAFAAcABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABQAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAAAAAAFAAUABwAHAAcABwAFAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAHAAUABQAFAAUABQAFAAUABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAABQAAAAUABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAHAAcAAAAFAAUAAAAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABQAFAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAABQAFAAUABQAFAAUABQAAAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAFAAUABQAFAAUADgAOAA4ADgAOAA4ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAMAAwADAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAAAAAAAAAAAAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAAAAAAAAAAAAsADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwACwAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAADgAOAA4AAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAAAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4AAAAOAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAAAAAAAAAAAA4AAAAOAAAAAAAAAAAADgAOAA4AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAA="; var chars$1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; var lookup$1 = typeof Uint8Array === "undefined" ? [] : new Uint8Array(256); for (var i$1 = 0; i$1 < chars$1.length; i$1++) { lookup$1[chars$1.charCodeAt(i$1)] = i$1; } var decode = function(base642) { var bufferLength = base642.length * 0.75, len = base642.length, i4, p2 = 0, encoded1, encoded2, encoded3, encoded4; if (base642[base642.length - 1] === "=") { bufferLength--; if (base642[base642.length - 2] === "=") { bufferLength--; } } var buffer = typeof ArrayBuffer !== "undefined" && typeof Uint8Array !== "undefined" && typeof Uint8Array.prototype.slice !== "undefined" ? new ArrayBuffer(bufferLength) : new Array(bufferLength); var bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer); for (i4 = 0; i4 < len; i4 += 4) { encoded1 = lookup$1[base642.charCodeAt(i4)]; encoded2 = lookup$1[base642.charCodeAt(i4 + 1)]; encoded3 = lookup$1[base642.charCodeAt(i4 + 2)]; encoded4 = lookup$1[base642.charCodeAt(i4 + 3)]; bytes[p2++] = encoded1 << 2 | encoded2 >> 4; bytes[p2++] = (encoded2 & 15) << 4 | encoded3 >> 2; bytes[p2++] = (encoded3 & 3) << 6 | encoded4 & 63; } return buffer; }; var polyUint16Array = function(buffer) { var length = buffer.length; var bytes = []; for (var i4 = 0; i4 < length; i4 += 2) { bytes.push(buffer[i4 + 1] << 8 | buffer[i4]); } return bytes; }; var polyUint32Array = function(buffer) { var length = buffer.length; var bytes = []; for (var i4 = 0; i4 < length; i4 += 4) { bytes.push(buffer[i4 + 3] << 24 | buffer[i4 + 2] << 16 | buffer[i4 + 1] << 8 | buffer[i4]); } return bytes; }; var UTRIE2_SHIFT_2 = 5; var UTRIE2_SHIFT_1 = 6 + 5; var UTRIE2_INDEX_SHIFT = 2; var UTRIE2_SHIFT_1_2 = UTRIE2_SHIFT_1 - UTRIE2_SHIFT_2; var UTRIE2_LSCP_INDEX_2_OFFSET = 65536 >> UTRIE2_SHIFT_2; var UTRIE2_DATA_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_2; var UTRIE2_DATA_MASK = UTRIE2_DATA_BLOCK_LENGTH - 1; var UTRIE2_LSCP_INDEX_2_LENGTH = 1024 >> UTRIE2_SHIFT_2; var UTRIE2_INDEX_2_BMP_LENGTH = UTRIE2_LSCP_INDEX_2_OFFSET + UTRIE2_LSCP_INDEX_2_LENGTH; var UTRIE2_UTF8_2B_INDEX_2_OFFSET = UTRIE2_INDEX_2_BMP_LENGTH; var UTRIE2_UTF8_2B_INDEX_2_LENGTH = 2048 >> 6; var UTRIE2_INDEX_1_OFFSET = UTRIE2_UTF8_2B_INDEX_2_OFFSET + UTRIE2_UTF8_2B_INDEX_2_LENGTH; var UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = 65536 >> UTRIE2_SHIFT_1; var UTRIE2_INDEX_2_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_1_2; var UTRIE2_INDEX_2_MASK = UTRIE2_INDEX_2_BLOCK_LENGTH - 1; var slice16 = function(view, start5, end2) { if (view.slice) { return view.slice(start5, end2); } return new Uint16Array(Array.prototype.slice.call(view, start5, end2)); }; var slice32 = function(view, start5, end2) { if (view.slice) { return view.slice(start5, end2); } return new Uint32Array(Array.prototype.slice.call(view, start5, end2)); }; var createTrieFromBase64 = function(base642, _byteLength) { var buffer = decode(base642); var view32 = Array.isArray(buffer) ? polyUint32Array(buffer) : new Uint32Array(buffer); var view16 = Array.isArray(buffer) ? polyUint16Array(buffer) : new Uint16Array(buffer); var headerLength = 24; var index = slice16(view16, headerLength / 2, view32[4] / 2); var data2 = view32[5] === 2 ? slice16(view16, (headerLength + view32[4]) / 2) : slice32(view32, Math.ceil((headerLength + view32[4]) / 4)); return new Trie(view32[0], view32[1], view32[2], view32[3], index, data2); }; var Trie = ( /** @class */ function() { function Trie2(initialValue, errorValue, highStart, highValueIndex, index, data2) { this.initialValue = initialValue; this.errorValue = errorValue; this.highStart = highStart; this.highValueIndex = highValueIndex; this.index = index; this.data = data2; } Trie2.prototype.get = function(codePoint) { var ix; if (codePoint >= 0) { if (codePoint < 55296 || codePoint > 56319 && codePoint <= 65535) { ix = this.index[codePoint >> UTRIE2_SHIFT_2]; ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK); return this.data[ix]; } if (codePoint <= 65535) { ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET + (codePoint - 55296 >> UTRIE2_SHIFT_2)]; ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK); return this.data[ix]; } if (codePoint < this.highStart) { ix = UTRIE2_INDEX_1_OFFSET - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH + (codePoint >> UTRIE2_SHIFT_1); ix = this.index[ix]; ix += codePoint >> UTRIE2_SHIFT_2 & UTRIE2_INDEX_2_MASK; ix = this.index[ix]; ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK); return this.data[ix]; } if (codePoint <= 1114111) { return this.data[this.highValueIndex]; } } return this.errorValue; }; return Trie2; }() ); var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; var lookup = typeof Uint8Array === "undefined" ? [] : new Uint8Array(256); for (var i3 = 0; i3 < chars.length; i3++) { lookup[chars.charCodeAt(i3)] = i3; } var Prepend = 1; var CR = 2; var LF = 3; var Control = 4; var Extend = 5; var SpacingMark = 7; var L2 = 8; var V2 = 9; var T3 = 10; var LV = 11; var LVT = 12; var ZWJ = 13; var Extended_Pictographic = 14; var RI = 15; var toCodePoints = function(str) { var codePoints = []; var i4 = 0; var length = str.length; while (i4 < length) { var value = str.charCodeAt(i4++); if (value >= 55296 && value <= 56319 && i4 < length) { var extra = str.charCodeAt(i4++); if ((extra & 64512) === 56320) { codePoints.push(((value & 1023) << 10) + (extra & 1023) + 65536); } else { codePoints.push(value); i4--; } } else { codePoints.push(value); } } return codePoints; }; var fromCodePoint = function() { var codePoints = []; for (var _i = 0; _i < arguments.length; _i++) { codePoints[_i] = arguments[_i]; } if (String.fromCodePoint) { return String.fromCodePoint.apply(String, codePoints); } var length = codePoints.length; if (!length) { return ""; } var codeUnits = []; var index = -1; var result = ""; while (++index < length) { var codePoint = codePoints[index]; if (codePoint <= 65535) { codeUnits.push(codePoint); } else { codePoint -= 65536; codeUnits.push((codePoint >> 10) + 55296, codePoint % 1024 + 56320); } if (index + 1 === length || codeUnits.length > 16384) { result += String.fromCharCode.apply(String, codeUnits); codeUnits.length = 0; } } return result; }; var UnicodeTrie = createTrieFromBase64(base64); var BREAK_NOT_ALLOWED = "\xD7"; var BREAK_ALLOWED = "\xF7"; var codePointToClass = function(codePoint) { return UnicodeTrie.get(codePoint); }; var _graphemeBreakAtIndex = function(_codePoints, classTypes, index) { var prevIndex = index - 2; var prev = classTypes[prevIndex]; var current = classTypes[index - 1]; var next = classTypes[index]; if (current === CR && next === LF) { return BREAK_NOT_ALLOWED; } if (current === CR || current === LF || current === Control) { return BREAK_ALLOWED; } if (next === CR || next === LF || next === Control) { return BREAK_ALLOWED; } if (current === L2 && [L2, V2, LV, LVT].indexOf(next) !== -1) { return BREAK_NOT_ALLOWED; } if ((current === LV || current === V2) && (next === V2 || next === T3)) { return BREAK_NOT_ALLOWED; } if ((current === LVT || current === T3) && next === T3) { return BREAK_NOT_ALLOWED; } if (next === ZWJ || next === Extend) { return BREAK_NOT_ALLOWED; } if (next === SpacingMark) { return BREAK_NOT_ALLOWED; } if (current === Prepend) { return BREAK_NOT_ALLOWED; } if (current === ZWJ && next === Extended_Pictographic) { while (prev === Extend) { prev = classTypes[--prevIndex]; } if (prev === Extended_Pictographic) { return BREAK_NOT_ALLOWED; } } if (current === RI && next === RI) { var countRI = 0; while (prev === RI) { countRI++; prev = classTypes[--prevIndex]; } if (countRI % 2 === 0) { return BREAK_NOT_ALLOWED; } } return BREAK_ALLOWED; }; var GraphemeBreaker = function(str) { var codePoints = toCodePoints(str); var length = codePoints.length; var index = 0; var lastEnd = 0; var classTypes = codePoints.map(codePointToClass); return { next: function() { if (index >= length) { return { done: true, value: null }; } var graphemeBreak = BREAK_NOT_ALLOWED; while (index < length && (graphemeBreak = _graphemeBreakAtIndex(codePoints, classTypes, ++index)) === BREAK_NOT_ALLOWED) { } if (graphemeBreak !== BREAK_NOT_ALLOWED || index === length) { var value = fromCodePoint.apply(null, codePoints.slice(lastEnd, index)); lastEnd = index; return { value, done: false }; } return { done: true, value: null }; } }; }; var splitGraphemes = function(str) { var breaker = GraphemeBreaker(str); var graphemes = []; var bk; while (!(bk = breaker.next()).done) { if (bk.value) { graphemes.push(bk.value.slice()); } } return graphemes; }; var testRangeBounds = function(document2) { var TEST_HEIGHT = 123; if (document2.createRange) { var range = document2.createRange(); if (range.getBoundingClientRect) { var testElement = document2.createElement("boundtest"); testElement.style.height = TEST_HEIGHT + "px"; testElement.style.display = "block"; document2.body.appendChild(testElement); range.selectNode(testElement); var rangeBounds = range.getBoundingClientRect(); var rangeHeight = Math.round(rangeBounds.height); document2.body.removeChild(testElement); if (rangeHeight === TEST_HEIGHT) { return true; } } } return false; }; var testIOSLineBreak = function(document2) { var testElement = document2.createElement("boundtest"); testElement.style.width = "50px"; testElement.style.display = "block"; testElement.style.fontSize = "12px"; testElement.style.letterSpacing = "0px"; testElement.style.wordSpacing = "0px"; document2.body.appendChild(testElement); var range = document2.createRange(); testElement.innerHTML = typeof "".repeat === "function" ? "👨".repeat(10) : ""; var node = testElement.firstChild; var textList = toCodePoints$1(node.data).map(function(i4) { return fromCodePoint$1(i4); }); var offset2 = 0; var prev = {}; var supports = textList.every(function(text, i4) { range.setStart(node, offset2); range.setEnd(node, offset2 + text.length); var rect = range.getBoundingClientRect(); offset2 += text.length; var boundAhead = rect.x > prev.x || rect.y > prev.y; prev = rect; if (i4 === 0) { return true; } return boundAhead; }); document2.body.removeChild(testElement); return supports; }; var testCORS = function() { return typeof new Image().crossOrigin !== "undefined"; }; var testResponseType = function() { return typeof new XMLHttpRequest().responseType === "string"; }; var testSVG = function(document2) { var img = new Image(); var canvas = document2.createElement("canvas"); var ctx = canvas.getContext("2d"); if (!ctx) { return false; } img.src = "data:image/svg+xml,"; try { ctx.drawImage(img, 0, 0); canvas.toDataURL(); } catch (e4) { return false; } return true; }; var isGreenPixel = function(data2) { return data2[0] === 0 && data2[1] === 255 && data2[2] === 0 && data2[3] === 255; }; var testForeignObject = function(document2) { var canvas = document2.createElement("canvas"); var size2 = 100; canvas.width = size2; canvas.height = size2; var ctx = canvas.getContext("2d"); if (!ctx) { return Promise.reject(false); } ctx.fillStyle = "rgb(0, 255, 0)"; ctx.fillRect(0, 0, size2, size2); var img = new Image(); var greenImageSrc = canvas.toDataURL(); img.src = greenImageSrc; var svg = createForeignObjectSVG(size2, size2, 0, 0, img); ctx.fillStyle = "red"; ctx.fillRect(0, 0, size2, size2); return loadSerializedSVG$1(svg).then(function(img2) { ctx.drawImage(img2, 0, 0); var data2 = ctx.getImageData(0, 0, size2, size2).data; ctx.fillStyle = "red"; ctx.fillRect(0, 0, size2, size2); var node = document2.createElement("div"); node.style.backgroundImage = "url(" + greenImageSrc + ")"; node.style.height = size2 + "px"; return isGreenPixel(data2) ? loadSerializedSVG$1(createForeignObjectSVG(size2, size2, 0, 0, node)) : Promise.reject(false); }).then(function(img2) { ctx.drawImage(img2, 0, 0); return isGreenPixel(ctx.getImageData(0, 0, size2, size2).data); }).catch(function() { return false; }); }; var createForeignObjectSVG = function(width, height, x3, y3, node) { var xmlns = "http://www.w3.org/2000/svg"; var svg = document.createElementNS(xmlns, "svg"); var foreignObject = document.createElementNS(xmlns, "foreignObject"); svg.setAttributeNS(null, "width", width.toString()); svg.setAttributeNS(null, "height", height.toString()); foreignObject.setAttributeNS(null, "width", "100%"); foreignObject.setAttributeNS(null, "height", "100%"); foreignObject.setAttributeNS(null, "x", x3.toString()); foreignObject.setAttributeNS(null, "y", y3.toString()); foreignObject.setAttributeNS(null, "externalResourcesRequired", "true"); svg.appendChild(foreignObject); foreignObject.appendChild(node); return svg; }; var loadSerializedSVG$1 = function(svg) { return new Promise(function(resolve, reject) { var img = new Image(); img.onload = function() { return resolve(img); }; img.onerror = reject; img.src = "data:image/svg+xml;charset=utf-8," + encodeURIComponent(new XMLSerializer().serializeToString(svg)); }); }; var FEATURES = { get SUPPORT_RANGE_BOUNDS() { var value = testRangeBounds(document); Object.defineProperty(FEATURES, "SUPPORT_RANGE_BOUNDS", { value }); return value; }, get SUPPORT_WORD_BREAKING() { var value = FEATURES.SUPPORT_RANGE_BOUNDS && testIOSLineBreak(document); Object.defineProperty(FEATURES, "SUPPORT_WORD_BREAKING", { value }); return value; }, get SUPPORT_SVG_DRAWING() { var value = testSVG(document); Object.defineProperty(FEATURES, "SUPPORT_SVG_DRAWING", { value }); return value; }, get SUPPORT_FOREIGNOBJECT_DRAWING() { var value = typeof Array.from === "function" && typeof window.fetch === "function" ? testForeignObject(document) : Promise.resolve(false); Object.defineProperty(FEATURES, "SUPPORT_FOREIGNOBJECT_DRAWING", { value }); return value; }, get SUPPORT_CORS_IMAGES() { var value = testCORS(); Object.defineProperty(FEATURES, "SUPPORT_CORS_IMAGES", { value }); return value; }, get SUPPORT_RESPONSE_TYPE() { var value = testResponseType(); Object.defineProperty(FEATURES, "SUPPORT_RESPONSE_TYPE", { value }); return value; }, get SUPPORT_CORS_XHR() { var value = "withCredentials" in new XMLHttpRequest(); Object.defineProperty(FEATURES, "SUPPORT_CORS_XHR", { value }); return value; }, get SUPPORT_NATIVE_TEXT_SEGMENTATION() { var value = !!(typeof Intl !== "undefined" && Intl.Segmenter); Object.defineProperty(FEATURES, "SUPPORT_NATIVE_TEXT_SEGMENTATION", { value }); return value; } }; var TextBounds = ( /** @class */ function() { function TextBounds2(text, bounds) { this.text = text; this.bounds = bounds; } return TextBounds2; }() ); var parseTextBounds = function(context, value, styles, node) { var textList = breakText(value, styles); var textBounds = []; var offset2 = 0; textList.forEach(function(text) { if (styles.textDecorationLine.length || text.trim().length > 0) { if (FEATURES.SUPPORT_RANGE_BOUNDS) { var clientRects = createRange(node, offset2, text.length).getClientRects(); if (clientRects.length > 1) { var subSegments = segmentGraphemes(text); var subOffset_1 = 0; subSegments.forEach(function(subSegment) { textBounds.push(new TextBounds(subSegment, Bounds.fromDOMRectList(context, createRange(node, subOffset_1 + offset2, subSegment.length).getClientRects()))); subOffset_1 += subSegment.length; }); } else { textBounds.push(new TextBounds(text, Bounds.fromDOMRectList(context, clientRects))); } } else { var replacementNode = node.splitText(text.length); textBounds.push(new TextBounds(text, getWrapperBounds(context, node))); node = replacementNode; } } else if (!FEATURES.SUPPORT_RANGE_BOUNDS) { node = node.splitText(text.length); } offset2 += text.length; }); return textBounds; }; var getWrapperBounds = function(context, node) { var ownerDocument = node.ownerDocument; if (ownerDocument) { var wrapper = ownerDocument.createElement("html2canvaswrapper"); wrapper.appendChild(node.cloneNode(true)); var parentNode = node.parentNode; if (parentNode) { parentNode.replaceChild(wrapper, node); var bounds = parseBounds(context, wrapper); if (wrapper.firstChild) { parentNode.replaceChild(wrapper.firstChild, wrapper); } return bounds; } } return Bounds.EMPTY; }; var createRange = function(node, offset2, length) { var ownerDocument = node.ownerDocument; if (!ownerDocument) { throw new Error("Node has no owner document"); } var range = ownerDocument.createRange(); range.setStart(node, offset2); range.setEnd(node, offset2 + length); return range; }; var segmentGraphemes = function(value) { if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) { var segmenter = new Intl.Segmenter(void 0, { granularity: "grapheme" }); return Array.from(segmenter.segment(value)).map(function(segment) { return segment.segment; }); } return splitGraphemes(value); }; var segmentWords = function(value, styles) { if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) { var segmenter = new Intl.Segmenter(void 0, { granularity: "word" }); return Array.from(segmenter.segment(value)).map(function(segment) { return segment.segment; }); } return breakWords(value, styles); }; var breakText = function(value, styles) { return styles.letterSpacing !== 0 ? segmentGraphemes(value) : segmentWords(value, styles); }; var wordSeparators = [32, 160, 4961, 65792, 65793, 4153, 4241]; var breakWords = function(str, styles) { var breaker = LineBreaker(str, { lineBreak: styles.lineBreak, wordBreak: styles.overflowWrap === "break-word" ? "break-word" : styles.wordBreak }); var words = []; var bk; var _loop_1 = function() { if (bk.value) { var value = bk.value.slice(); var codePoints = toCodePoints$1(value); var word_1 = ""; codePoints.forEach(function(codePoint) { if (wordSeparators.indexOf(codePoint) === -1) { word_1 += fromCodePoint$1(codePoint); } else { if (word_1.length) { words.push(word_1); } words.push(fromCodePoint$1(codePoint)); word_1 = ""; } }); if (word_1.length) { words.push(word_1); } } }; while (!(bk = breaker.next()).done) { _loop_1(); } return words; }; var TextContainer = ( /** @class */ function() { function TextContainer2(context, node, styles) { this.text = transform(node.data, styles.textTransform); this.textBounds = parseTextBounds(context, this.text, styles, node); } return TextContainer2; }() ); var transform = function(text, transform2) { switch (transform2) { case 1: return text.toLowerCase(); case 3: return text.replace(CAPITALIZE, capitalize2); case 2: return text.toUpperCase(); default: return text; } }; var CAPITALIZE = /(^|\s|:|-|\(|\))([a-z])/g; var capitalize2 = function(m3, p1, p2) { if (m3.length > 0) { return p1 + p2.toUpperCase(); } return m3; }; var ImageElementContainer = ( /** @class */ function(_super) { __extends(ImageElementContainer2, _super); function ImageElementContainer2(context, img) { var _this = _super.call(this, context, img) || this; _this.src = img.currentSrc || img.src; _this.intrinsicWidth = img.naturalWidth; _this.intrinsicHeight = img.naturalHeight; _this.context.cache.addImage(_this.src); return _this; } return ImageElementContainer2; }(ElementContainer) ); var CanvasElementContainer = ( /** @class */ function(_super) { __extends(CanvasElementContainer2, _super); function CanvasElementContainer2(context, canvas) { var _this = _super.call(this, context, canvas) || this; _this.canvas = canvas; _this.intrinsicWidth = canvas.width; _this.intrinsicHeight = canvas.height; return _this; } return CanvasElementContainer2; }(ElementContainer) ); var SVGElementContainer = ( /** @class */ function(_super) { __extends(SVGElementContainer2, _super); function SVGElementContainer2(context, img) { var _this = _super.call(this, context, img) || this; var s3 = new XMLSerializer(); var bounds = parseBounds(context, img); img.setAttribute("width", bounds.width + "px"); img.setAttribute("height", bounds.height + "px"); _this.svg = "data:image/svg+xml," + encodeURIComponent(s3.serializeToString(img)); _this.intrinsicWidth = img.width.baseVal.value; _this.intrinsicHeight = img.height.baseVal.value; _this.context.cache.addImage(_this.svg); return _this; } return SVGElementContainer2; }(ElementContainer) ); var LIElementContainer = ( /** @class */ function(_super) { __extends(LIElementContainer2, _super); function LIElementContainer2(context, element) { var _this = _super.call(this, context, element) || this; _this.value = element.value; return _this; } return LIElementContainer2; }(ElementContainer) ); var OLElementContainer = ( /** @class */ function(_super) { __extends(OLElementContainer2, _super); function OLElementContainer2(context, element) { var _this = _super.call(this, context, element) || this; _this.start = element.start; _this.reversed = typeof element.reversed === "boolean" && element.reversed === true; return _this; } return OLElementContainer2; }(ElementContainer) ); var CHECKBOX_BORDER_RADIUS = [ { type: 15, flags: 0, unit: "px", number: 3 } ]; var RADIO_BORDER_RADIUS = [ { type: 16, flags: 0, number: 50 } ]; var reformatInputBounds = function(bounds) { if (bounds.width > bounds.height) { return new Bounds(bounds.left + (bounds.width - bounds.height) / 2, bounds.top, bounds.height, bounds.height); } else if (bounds.width < bounds.height) { return new Bounds(bounds.left, bounds.top + (bounds.height - bounds.width) / 2, bounds.width, bounds.width); } return bounds; }; var getInputValue2 = function(node) { var value = node.type === PASSWORD ? new Array(node.value.length + 1).join("\u2022") : node.value; return value.length === 0 ? node.placeholder || "" : value; }; var CHECKBOX = "checkbox"; var RADIO = "radio"; var PASSWORD = "password"; var INPUT_COLOR = 707406591; var InputElementContainer = ( /** @class */ function(_super) { __extends(InputElementContainer2, _super); function InputElementContainer2(context, input) { var _this = _super.call(this, context, input) || this; _this.type = input.type.toLowerCase(); _this.checked = input.checked; _this.value = getInputValue2(input); if (_this.type === CHECKBOX || _this.type === RADIO) { _this.styles.backgroundColor = 3739148031; _this.styles.borderTopColor = _this.styles.borderRightColor = _this.styles.borderBottomColor = _this.styles.borderLeftColor = 2779096575; _this.styles.borderTopWidth = _this.styles.borderRightWidth = _this.styles.borderBottomWidth = _this.styles.borderLeftWidth = 1; _this.styles.borderTopStyle = _this.styles.borderRightStyle = _this.styles.borderBottomStyle = _this.styles.borderLeftStyle = 1; _this.styles.backgroundClip = [ 0 /* BORDER_BOX */ ]; _this.styles.backgroundOrigin = [ 0 /* BORDER_BOX */ ]; _this.bounds = reformatInputBounds(_this.bounds); } switch (_this.type) { case CHECKBOX: _this.styles.borderTopRightRadius = _this.styles.borderTopLeftRadius = _this.styles.borderBottomRightRadius = _this.styles.borderBottomLeftRadius = CHECKBOX_BORDER_RADIUS; break; case RADIO: _this.styles.borderTopRightRadius = _this.styles.borderTopLeftRadius = _this.styles.borderBottomRightRadius = _this.styles.borderBottomLeftRadius = RADIO_BORDER_RADIUS; break; } return _this; } return InputElementContainer2; }(ElementContainer) ); var SelectElementContainer = ( /** @class */ function(_super) { __extends(SelectElementContainer2, _super); function SelectElementContainer2(context, element) { var _this = _super.call(this, context, element) || this; var option = element.options[element.selectedIndex || 0]; _this.value = option ? option.text || "" : ""; return _this; } return SelectElementContainer2; }(ElementContainer) ); var TextareaElementContainer = ( /** @class */ function(_super) { __extends(TextareaElementContainer2, _super); function TextareaElementContainer2(context, element) { var _this = _super.call(this, context, element) || this; _this.value = element.value; return _this; } return TextareaElementContainer2; }(ElementContainer) ); var IFrameElementContainer = ( /** @class */ function(_super) { __extends(IFrameElementContainer2, _super); function IFrameElementContainer2(context, iframe) { var _this = _super.call(this, context, iframe) || this; _this.src = iframe.src; _this.width = parseInt(iframe.width, 10) || 0; _this.height = parseInt(iframe.height, 10) || 0; _this.backgroundColor = _this.styles.backgroundColor; try { if (iframe.contentWindow && iframe.contentWindow.document && iframe.contentWindow.document.documentElement) { _this.tree = parseTree(context, iframe.contentWindow.document.documentElement); var documentBackgroundColor = iframe.contentWindow.document.documentElement ? parseColor(context, getComputedStyle(iframe.contentWindow.document.documentElement).backgroundColor) : COLORS.TRANSPARENT; var bodyBackgroundColor = iframe.contentWindow.document.body ? parseColor(context, getComputedStyle(iframe.contentWindow.document.body).backgroundColor) : COLORS.TRANSPARENT; _this.backgroundColor = isTransparent(documentBackgroundColor) ? isTransparent(bodyBackgroundColor) ? _this.styles.backgroundColor : bodyBackgroundColor : documentBackgroundColor; } } catch (e4) { } return _this; } return IFrameElementContainer2; }(ElementContainer) ); var LIST_OWNERS = ["OL", "UL", "MENU"]; var parseNodeTree = function(context, node, parent, root) { for (var childNode = node.firstChild, nextNode = void 0; childNode; childNode = nextNode) { nextNode = childNode.nextSibling; if (isTextNode(childNode) && childNode.data.trim().length > 0) { parent.textNodes.push(new TextContainer(context, childNode, parent.styles)); } else if (isElementNode(childNode)) { if (isSlotElement(childNode) && childNode.assignedNodes) { childNode.assignedNodes().forEach(function(childNode2) { return parseNodeTree(context, childNode2, parent, root); }); } else { var container = createContainer(context, childNode); if (container.styles.isVisible()) { if (createsRealStackingContext(childNode, container, root)) { container.flags |= 4; } else if (createsStackingContext(container.styles)) { container.flags |= 2; } if (LIST_OWNERS.indexOf(childNode.tagName) !== -1) { container.flags |= 8; } parent.elements.push(container); childNode.slot; if (childNode.shadowRoot) { parseNodeTree(context, childNode.shadowRoot, container, root); } else if (!isTextareaElement(childNode) && !isSVGElement(childNode) && !isSelectElement(childNode)) { parseNodeTree(context, childNode, container, root); } } } } } }; var createContainer = function(context, element) { if (isImageElement(element)) { return new ImageElementContainer(context, element); } if (isCanvasElement(element)) { return new CanvasElementContainer(context, element); } if (isSVGElement(element)) { return new SVGElementContainer(context, element); } if (isLIElement(element)) { return new LIElementContainer(context, element); } if (isOLElement(element)) { return new OLElementContainer(context, element); } if (isInputElement(element)) { return new InputElementContainer(context, element); } if (isSelectElement(element)) { return new SelectElementContainer(context, element); } if (isTextareaElement(element)) { return new TextareaElementContainer(context, element); } if (isIFrameElement(element)) { return new IFrameElementContainer(context, element); } return new ElementContainer(context, element); }; var parseTree = function(context, element) { var container = createContainer(context, element); container.flags |= 4; parseNodeTree(context, element, container, container); return container; }; var createsRealStackingContext = function(node, container, root) { return container.styles.isPositionedWithZIndex() || container.styles.opacity < 1 || container.styles.isTransformed() || isBodyElement(node) && root.styles.isTransparent(); }; var createsStackingContext = function(styles) { return styles.isPositioned() || styles.isFloating(); }; var isTextNode = function(node) { return node.nodeType === Node.TEXT_NODE; }; var isElementNode = function(node) { return node.nodeType === Node.ELEMENT_NODE; }; var isHTMLElementNode = function(node) { return isElementNode(node) && typeof node.style !== "undefined" && !isSVGElementNode(node); }; var isSVGElementNode = function(element) { return typeof element.className === "object"; }; var isLIElement = function(node) { return node.tagName === "LI"; }; var isOLElement = function(node) { return node.tagName === "OL"; }; var isInputElement = function(node) { return node.tagName === "INPUT"; }; var isHTMLElement2 = function(node) { return node.tagName === "HTML"; }; var isSVGElement = function(node) { return node.tagName === "svg"; }; var isBodyElement = function(node) { return node.tagName === "BODY"; }; var isCanvasElement = function(node) { return node.tagName === "CANVAS"; }; var isVideoElement = function(node) { return node.tagName === "VIDEO"; }; var isImageElement = function(node) { return node.tagName === "IMG"; }; var isIFrameElement = function(node) { return node.tagName === "IFRAME"; }; var isStyleElement = function(node) { return node.tagName === "STYLE"; }; var isScriptElement = function(node) { return node.tagName === "SCRIPT"; }; var isTextareaElement = function(node) { return node.tagName === "TEXTAREA"; }; var isSelectElement = function(node) { return node.tagName === "SELECT"; }; var isSlotElement = function(node) { return node.tagName === "SLOT"; }; var isCustomElement = function(node) { return node.tagName.indexOf("-") > 0; }; var CounterState = ( /** @class */ function() { function CounterState2() { this.counters = {}; } CounterState2.prototype.getCounterValue = function(name) { var counter = this.counters[name]; if (counter && counter.length) { return counter[counter.length - 1]; } return 1; }; CounterState2.prototype.getCounterValues = function(name) { var counter = this.counters[name]; return counter ? counter : []; }; CounterState2.prototype.pop = function(counters) { var _this = this; counters.forEach(function(counter) { return _this.counters[counter].pop(); }); }; CounterState2.prototype.parse = function(style) { var _this = this; var counterIncrement2 = style.counterIncrement; var counterReset2 = style.counterReset; var canReset = true; if (counterIncrement2 !== null) { counterIncrement2.forEach(function(entry) { var counter = _this.counters[entry.counter]; if (counter && entry.increment !== 0) { canReset = false; if (!counter.length) { counter.push(1); } counter[Math.max(0, counter.length - 1)] += entry.increment; } }); } var counterNames = []; if (canReset) { counterReset2.forEach(function(entry) { var counter = _this.counters[entry.counter]; counterNames.push(entry.counter); if (!counter) { counter = _this.counters[entry.counter] = []; } counter.push(entry.reset); }); } return counterNames; }; return CounterState2; }() ); var ROMAN_UPPER = { integers: [1e3, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1], values: ["M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"] }; var ARMENIAN = { integers: [ 9e3, 8e3, 7e3, 6e3, 5e3, 4e3, 3e3, 2e3, 1e3, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 ], values: [ "\u0554", "\u0553", "\u0552", "\u0551", "\u0550", "\u054F", "\u054E", "\u054D", "\u054C", "\u054B", "\u054A", "\u0549", "\u0548", "\u0547", "\u0546", "\u0545", "\u0544", "\u0543", "\u0542", "\u0541", "\u0540", "\u053F", "\u053E", "\u053D", "\u053C", "\u053B", "\u053A", "\u0539", "\u0538", "\u0537", "\u0536", "\u0535", "\u0534", "\u0533", "\u0532", "\u0531" ] }; var HEBREW = { integers: [ 1e4, 9e3, 8e3, 7e3, 6e3, 5e3, 4e3, 3e3, 2e3, 1e3, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20, 19, 18, 17, 16, 15, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 ], values: [ "\u05D9\u05F3", "\u05D8\u05F3", "\u05D7\u05F3", "\u05D6\u05F3", "\u05D5\u05F3", "\u05D4\u05F3", "\u05D3\u05F3", "\u05D2\u05F3", "\u05D1\u05F3", "\u05D0\u05F3", "\u05EA", "\u05E9", "\u05E8", "\u05E7", "\u05E6", "\u05E4", "\u05E2", "\u05E1", "\u05E0", "\u05DE", "\u05DC", "\u05DB", "\u05D9\u05D8", "\u05D9\u05D7", "\u05D9\u05D6", "\u05D8\u05D6", "\u05D8\u05D5", "\u05D9", "\u05D8", "\u05D7", "\u05D6", "\u05D5", "\u05D4", "\u05D3", "\u05D2", "\u05D1", "\u05D0" ] }; var GEORGIAN = { integers: [ 1e4, 9e3, 8e3, 7e3, 6e3, 5e3, 4e3, 3e3, 2e3, 1e3, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 ], values: [ "\u10F5", "\u10F0", "\u10EF", "\u10F4", "\u10EE", "\u10ED", "\u10EC", "\u10EB", "\u10EA", "\u10E9", "\u10E8", "\u10E7", "\u10E6", "\u10E5", "\u10E4", "\u10F3", "\u10E2", "\u10E1", "\u10E0", "\u10DF", "\u10DE", "\u10DD", "\u10F2", "\u10DC", "\u10DB", "\u10DA", "\u10D9", "\u10D8", "\u10D7", "\u10F1", "\u10D6", "\u10D5", "\u10D4", "\u10D3", "\u10D2", "\u10D1", "\u10D0" ] }; var createAdditiveCounter = function(value, min2, max2, symbols, fallback, suffix) { if (value < min2 || value > max2) { return createCounterText(value, fallback, suffix.length > 0); } return symbols.integers.reduce(function(string, integer, index) { while (value >= integer) { value -= integer; string += symbols.values[index]; } return string; }, "") + suffix; }; var createCounterStyleWithSymbolResolver = function(value, codePointRangeLength, isNumeric5, resolver) { var string = ""; do { if (!isNumeric5) { value--; } string = resolver(value) + string; value /= codePointRangeLength; } while (value * codePointRangeLength >= codePointRangeLength); return string; }; var createCounterStyleFromRange = function(value, codePointRangeStart, codePointRangeEnd, isNumeric5, suffix) { var codePointRangeLength = codePointRangeEnd - codePointRangeStart + 1; return (value < 0 ? "-" : "") + (createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, isNumeric5, function(codePoint) { return fromCodePoint$1(Math.floor(codePoint % codePointRangeLength) + codePointRangeStart); }) + suffix); }; var createCounterStyleFromSymbols = function(value, symbols, suffix) { if (suffix === void 0) { suffix = ". "; } var codePointRangeLength = symbols.length; return createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, false, function(codePoint) { return symbols[Math.floor(codePoint % codePointRangeLength)]; }) + suffix; }; var CJK_ZEROS = 1 << 0; var CJK_TEN_COEFFICIENTS = 1 << 1; var CJK_TEN_HIGH_COEFFICIENTS = 1 << 2; var CJK_HUNDRED_COEFFICIENTS = 1 << 3; var createCJKCounter = function(value, numbers, multipliers, negativeSign, suffix, flags) { if (value < -9999 || value > 9999) { return createCounterText(value, 4, suffix.length > 0); } var tmp = Math.abs(value); var string = suffix; if (tmp === 0) { return numbers[0] + string; } for (var digit = 0; tmp > 0 && digit <= 4; digit++) { var coefficient = tmp % 10; if (coefficient === 0 && contains2(flags, CJK_ZEROS) && string !== "") { string = numbers[coefficient] + string; } else if (coefficient > 1 || coefficient === 1 && digit === 0 || coefficient === 1 && digit === 1 && contains2(flags, CJK_TEN_COEFFICIENTS) || coefficient === 1 && digit === 1 && contains2(flags, CJK_TEN_HIGH_COEFFICIENTS) && value > 100 || coefficient === 1 && digit > 1 && contains2(flags, CJK_HUNDRED_COEFFICIENTS)) { string = numbers[coefficient] + (digit > 0 ? multipliers[digit - 1] : "") + string; } else if (coefficient === 1 && digit > 0) { string = multipliers[digit - 1] + string; } tmp = Math.floor(tmp / 10); } return (value < 0 ? negativeSign : "") + string; }; var CHINESE_INFORMAL_MULTIPLIERS = "\u5341\u767E\u5343\u842C"; var CHINESE_FORMAL_MULTIPLIERS = "\u62FE\u4F70\u4EDF\u842C"; var JAPANESE_NEGATIVE = "\u30DE\u30A4\u30CA\u30B9"; var KOREAN_NEGATIVE = "\uB9C8\uC774\uB108\uC2A4"; var createCounterText = function(value, type, appendSuffix) { var defaultSuffix = appendSuffix ? ". " : ""; var cjkSuffix = appendSuffix ? "\u3001" : ""; var koreanSuffix = appendSuffix ? ", " : ""; var spaceSuffix = appendSuffix ? " " : ""; switch (type) { case 0: return "\u2022" + spaceSuffix; case 1: return "\u25E6" + spaceSuffix; case 2: return "\u25FE" + spaceSuffix; case 5: var string = createCounterStyleFromRange(value, 48, 57, true, defaultSuffix); return string.length < 4 ? "0" + string : string; case 4: return createCounterStyleFromSymbols(value, "\u3007\u4E00\u4E8C\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D", cjkSuffix); case 6: return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, 3, defaultSuffix).toLowerCase(); case 7: return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, 3, defaultSuffix); case 8: return createCounterStyleFromRange(value, 945, 969, false, defaultSuffix); case 9: return createCounterStyleFromRange(value, 97, 122, false, defaultSuffix); case 10: return createCounterStyleFromRange(value, 65, 90, false, defaultSuffix); case 11: return createCounterStyleFromRange(value, 1632, 1641, true, defaultSuffix); case 12: case 49: return createAdditiveCounter(value, 1, 9999, ARMENIAN, 3, defaultSuffix); case 35: return createAdditiveCounter(value, 1, 9999, ARMENIAN, 3, defaultSuffix).toLowerCase(); case 13: return createCounterStyleFromRange(value, 2534, 2543, true, defaultSuffix); case 14: case 30: return createCounterStyleFromRange(value, 6112, 6121, true, defaultSuffix); case 15: return createCounterStyleFromSymbols(value, "\u5B50\u4E11\u5BC5\u536F\u8FB0\u5DF3\u5348\u672A\u7533\u9149\u620C\u4EA5", cjkSuffix); case 16: return createCounterStyleFromSymbols(value, "\u7532\u4E59\u4E19\u4E01\u620A\u5DF1\u5E9A\u8F9B\u58EC\u7678", cjkSuffix); case 17: case 48: return createCJKCounter(value, "\u96F6\u4E00\u4E8C\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D", CHINESE_INFORMAL_MULTIPLIERS, "\u8CA0", cjkSuffix, CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS); case 47: return createCJKCounter(value, "\u96F6\u58F9\u8CB3\u53C3\u8086\u4F0D\u9678\u67D2\u634C\u7396", CHINESE_FORMAL_MULTIPLIERS, "\u8CA0", cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS); case 42: return createCJKCounter(value, "\u96F6\u4E00\u4E8C\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D", CHINESE_INFORMAL_MULTIPLIERS, "\u8D1F", cjkSuffix, CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS); case 41: return createCJKCounter(value, "\u96F6\u58F9\u8D30\u53C1\u8086\u4F0D\u9646\u67D2\u634C\u7396", CHINESE_FORMAL_MULTIPLIERS, "\u8D1F", cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS); case 26: return createCJKCounter(value, "\u3007\u4E00\u4E8C\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D", "\u5341\u767E\u5343\u4E07", JAPANESE_NEGATIVE, cjkSuffix, 0); case 25: return createCJKCounter(value, "\u96F6\u58F1\u5F10\u53C2\u56DB\u4F0D\u516D\u4E03\u516B\u4E5D", "\u62FE\u767E\u5343\u4E07", JAPANESE_NEGATIVE, cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS); case 31: return createCJKCounter(value, "\uC601\uC77C\uC774\uC0BC\uC0AC\uC624\uC721\uCE60\uD314\uAD6C", "\uC2ED\uBC31\uCC9C\uB9CC", KOREAN_NEGATIVE, koreanSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS); case 33: return createCJKCounter(value, "\u96F6\u4E00\u4E8C\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D", "\u5341\u767E\u5343\u842C", KOREAN_NEGATIVE, koreanSuffix, 0); case 32: return createCJKCounter(value, "\u96F6\u58F9\u8CB3\u53C3\u56DB\u4E94\u516D\u4E03\u516B\u4E5D", "\u62FE\u767E\u5343", KOREAN_NEGATIVE, koreanSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS); case 18: return createCounterStyleFromRange(value, 2406, 2415, true, defaultSuffix); case 20: return createAdditiveCounter(value, 1, 19999, GEORGIAN, 3, defaultSuffix); case 21: return createCounterStyleFromRange(value, 2790, 2799, true, defaultSuffix); case 22: return createCounterStyleFromRange(value, 2662, 2671, true, defaultSuffix); case 22: return createAdditiveCounter(value, 1, 10999, HEBREW, 3, defaultSuffix); case 23: return createCounterStyleFromSymbols(value, "\u3042\u3044\u3046\u3048\u304A\u304B\u304D\u304F\u3051\u3053\u3055\u3057\u3059\u305B\u305D\u305F\u3061\u3064\u3066\u3068\u306A\u306B\u306C\u306D\u306E\u306F\u3072\u3075\u3078\u307B\u307E\u307F\u3080\u3081\u3082\u3084\u3086\u3088\u3089\u308A\u308B\u308C\u308D\u308F\u3090\u3091\u3092\u3093"); case 24: return createCounterStyleFromSymbols(value, "\u3044\u308D\u306F\u306B\u307B\u3078\u3068\u3061\u308A\u306C\u308B\u3092\u308F\u304B\u3088\u305F\u308C\u305D\u3064\u306D\u306A\u3089\u3080\u3046\u3090\u306E\u304A\u304F\u3084\u307E\u3051\u3075\u3053\u3048\u3066\u3042\u3055\u304D\u3086\u3081\u307F\u3057\u3091\u3072\u3082\u305B\u3059"); case 27: return createCounterStyleFromRange(value, 3302, 3311, true, defaultSuffix); case 28: return createCounterStyleFromSymbols(value, "\u30A2\u30A4\u30A6\u30A8\u30AA\u30AB\u30AD\u30AF\u30B1\u30B3\u30B5\u30B7\u30B9\u30BB\u30BD\u30BF\u30C1\u30C4\u30C6\u30C8\u30CA\u30CB\u30CC\u30CD\u30CE\u30CF\u30D2\u30D5\u30D8\u30DB\u30DE\u30DF\u30E0\u30E1\u30E2\u30E4\u30E6\u30E8\u30E9\u30EA\u30EB\u30EC\u30ED\u30EF\u30F0\u30F1\u30F2\u30F3", cjkSuffix); case 29: return createCounterStyleFromSymbols(value, "\u30A4\u30ED\u30CF\u30CB\u30DB\u30D8\u30C8\u30C1\u30EA\u30CC\u30EB\u30F2\u30EF\u30AB\u30E8\u30BF\u30EC\u30BD\u30C4\u30CD\u30CA\u30E9\u30E0\u30A6\u30F0\u30CE\u30AA\u30AF\u30E4\u30DE\u30B1\u30D5\u30B3\u30A8\u30C6\u30A2\u30B5\u30AD\u30E6\u30E1\u30DF\u30B7\u30F1\u30D2\u30E2\u30BB\u30B9", cjkSuffix); case 34: return createCounterStyleFromRange(value, 3792, 3801, true, defaultSuffix); case 37: return createCounterStyleFromRange(value, 6160, 6169, true, defaultSuffix); case 38: return createCounterStyleFromRange(value, 4160, 4169, true, defaultSuffix); case 39: return createCounterStyleFromRange(value, 2918, 2927, true, defaultSuffix); case 40: return createCounterStyleFromRange(value, 1776, 1785, true, defaultSuffix); case 43: return createCounterStyleFromRange(value, 3046, 3055, true, defaultSuffix); case 44: return createCounterStyleFromRange(value, 3174, 3183, true, defaultSuffix); case 45: return createCounterStyleFromRange(value, 3664, 3673, true, defaultSuffix); case 46: return createCounterStyleFromRange(value, 3872, 3881, true, defaultSuffix); case 3: default: return createCounterStyleFromRange(value, 48, 57, true, defaultSuffix); } }; var IGNORE_ATTRIBUTE = "data-html2canvas-ignore"; var DocumentCloner = ( /** @class */ function() { function DocumentCloner2(context, element, options) { this.context = context; this.options = options; this.scrolledElements = []; this.referenceElement = element; this.counters = new CounterState(); this.quoteDepth = 0; if (!element.ownerDocument) { throw new Error("Cloned element does not have an owner document"); } this.documentElement = this.cloneNode(element.ownerDocument.documentElement, false); } DocumentCloner2.prototype.toIFrame = function(ownerDocument, windowSize) { var _this = this; var iframe = createIFrameContainer(ownerDocument, windowSize); if (!iframe.contentWindow) { return Promise.reject("Unable to find iframe window"); } var scrollX = ownerDocument.defaultView.pageXOffset; var scrollY = ownerDocument.defaultView.pageYOffset; var cloneWindow = iframe.contentWindow; var documentClone = cloneWindow.document; var iframeLoad = iframeLoader(iframe).then(function() { return __awaiter(_this, void 0, void 0, function() { var onclone, referenceElement; return __generator(this, function(_a) { switch (_a.label) { case 0: this.scrolledElements.forEach(restoreNodeScroll); if (cloneWindow) { cloneWindow.scrollTo(windowSize.left, windowSize.top); if (/(iPad|iPhone|iPod)/g.test(navigator.userAgent) && (cloneWindow.scrollY !== windowSize.top || cloneWindow.scrollX !== windowSize.left)) { this.context.logger.warn("Unable to restore scroll position for cloned document"); this.context.windowBounds = this.context.windowBounds.add(cloneWindow.scrollX - windowSize.left, cloneWindow.scrollY - windowSize.top, 0, 0); } } onclone = this.options.onclone; referenceElement = this.clonedReferenceElement; if (typeof referenceElement === "undefined") { return [2, Promise.reject("Error finding the " + this.referenceElement.nodeName + " in the cloned document")]; } if (!(documentClone.fonts && documentClone.fonts.ready)) return [3, 2]; return [4, documentClone.fonts.ready]; case 1: _a.sent(); _a.label = 2; case 2: if (!/(AppleWebKit)/g.test(navigator.userAgent)) return [3, 4]; return [4, imagesReady(documentClone)]; case 3: _a.sent(); _a.label = 4; case 4: if (typeof onclone === "function") { return [2, Promise.resolve().then(function() { return onclone(documentClone, referenceElement); }).then(function() { return iframe; })]; } return [2, iframe]; } }); }); }); documentClone.open(); documentClone.write(serializeDoctype(document.doctype) + ""); restoreOwnerScroll(this.referenceElement.ownerDocument, scrollX, scrollY); documentClone.replaceChild(documentClone.adoptNode(this.documentElement), documentClone.documentElement); documentClone.close(); return iframeLoad; }; DocumentCloner2.prototype.createElementClone = function(node) { if (isDebugging( node, 2 /* CLONE */ )) { debugger; } if (isCanvasElement(node)) { return this.createCanvasClone(node); } if (isVideoElement(node)) { return this.createVideoClone(node); } if (isStyleElement(node)) { return this.createStyleClone(node); } var clone2 = node.cloneNode(false); if (isImageElement(clone2)) { if (isImageElement(node) && node.currentSrc && node.currentSrc !== node.src) { clone2.src = node.currentSrc; clone2.srcset = ""; } if (clone2.loading === "lazy") { clone2.loading = "eager"; } } if (isCustomElement(clone2)) { return this.createCustomElementClone(clone2); } return clone2; }; DocumentCloner2.prototype.createCustomElementClone = function(node) { var clone2 = document.createElement("html2canvascustomelement"); copyCSSStyles(node.style, clone2); return clone2; }; DocumentCloner2.prototype.createStyleClone = function(node) { try { var sheet = node.sheet; if (sheet && sheet.cssRules) { var css = [].slice.call(sheet.cssRules, 0).reduce(function(css2, rule) { if (rule && typeof rule.cssText === "string") { return css2 + rule.cssText; } return css2; }, ""); var style = node.cloneNode(false); style.textContent = css; return style; } } catch (e4) { this.context.logger.error("Unable to access cssRules property", e4); if (e4.name !== "SecurityError") { throw e4; } } return node.cloneNode(false); }; DocumentCloner2.prototype.createCanvasClone = function(canvas) { var _a; if (this.options.inlineImages && canvas.ownerDocument) { var img = canvas.ownerDocument.createElement("img"); try { img.src = canvas.toDataURL(); return img; } catch (e4) { this.context.logger.info("Unable to inline canvas contents, canvas is tainted", canvas); } } var clonedCanvas = canvas.cloneNode(false); try { clonedCanvas.width = canvas.width; clonedCanvas.height = canvas.height; var ctx = canvas.getContext("2d"); var clonedCtx = clonedCanvas.getContext("2d"); if (clonedCtx) { if (!this.options.allowTaint && ctx) { clonedCtx.putImageData(ctx.getImageData(0, 0, canvas.width, canvas.height), 0, 0); } else { var gl = (_a = canvas.getContext("webgl2")) !== null && _a !== void 0 ? _a : canvas.getContext("webgl"); if (gl) { var attribs = gl.getContextAttributes(); if ((attribs === null || attribs === void 0 ? void 0 : attribs.preserveDrawingBuffer) === false) { this.context.logger.warn("Unable to clone WebGL context as it has preserveDrawingBuffer=false", canvas); } } clonedCtx.drawImage(canvas, 0, 0); } } return clonedCanvas; } catch (e4) { this.context.logger.info("Unable to clone canvas as it is tainted", canvas); } return clonedCanvas; }; DocumentCloner2.prototype.createVideoClone = function(video) { var canvas = video.ownerDocument.createElement("canvas"); canvas.width = video.offsetWidth; canvas.height = video.offsetHeight; var ctx = canvas.getContext("2d"); try { if (ctx) { ctx.drawImage(video, 0, 0, canvas.width, canvas.height); if (!this.options.allowTaint) { ctx.getImageData(0, 0, canvas.width, canvas.height); } } return canvas; } catch (e4) { this.context.logger.info("Unable to clone video as it is tainted", video); } var blankCanvas = video.ownerDocument.createElement("canvas"); blankCanvas.width = video.offsetWidth; blankCanvas.height = video.offsetHeight; return blankCanvas; }; DocumentCloner2.prototype.appendChildNode = function(clone2, child, copyStyles) { if (!isElementNode(child) || !isScriptElement(child) && !child.hasAttribute(IGNORE_ATTRIBUTE) && (typeof this.options.ignoreElements !== "function" || !this.options.ignoreElements(child))) { if (!this.options.copyStyles || !isElementNode(child) || !isStyleElement(child)) { clone2.appendChild(this.cloneNode(child, copyStyles)); } } }; DocumentCloner2.prototype.cloneChildNodes = function(node, clone2, copyStyles) { var _this = this; for (var child = node.shadowRoot ? node.shadowRoot.firstChild : node.firstChild; child; child = child.nextSibling) { if (isElementNode(child) && isSlotElement(child) && typeof child.assignedNodes === "function") { var assignedNodes = child.assignedNodes(); if (assignedNodes.length) { assignedNodes.forEach(function(assignedNode) { return _this.appendChildNode(clone2, assignedNode, copyStyles); }); } } else { this.appendChildNode(clone2, child, copyStyles); } } }; DocumentCloner2.prototype.cloneNode = function(node, copyStyles) { if (isTextNode(node)) { return document.createTextNode(node.data); } if (!node.ownerDocument) { return node.cloneNode(false); } var window2 = node.ownerDocument.defaultView; if (window2 && isElementNode(node) && (isHTMLElementNode(node) || isSVGElementNode(node))) { var clone2 = this.createElementClone(node); clone2.style.transitionProperty = "none"; var style = window2.getComputedStyle(node); var styleBefore = window2.getComputedStyle(node, ":before"); var styleAfter = window2.getComputedStyle(node, ":after"); if (this.referenceElement === node && isHTMLElementNode(clone2)) { this.clonedReferenceElement = clone2; } if (isBodyElement(clone2)) { createPseudoHideStyles(clone2); } var counters = this.counters.parse(new CSSParsedCounterDeclaration(this.context, style)); var before = this.resolvePseudoContent(node, clone2, styleBefore, PseudoElementType.BEFORE); if (isCustomElement(node)) { copyStyles = true; } if (!isVideoElement(node)) { this.cloneChildNodes(node, clone2, copyStyles); } if (before) { clone2.insertBefore(before, clone2.firstChild); } var after = this.resolvePseudoContent(node, clone2, styleAfter, PseudoElementType.AFTER); if (after) { clone2.appendChild(after); } this.counters.pop(counters); if (style && (this.options.copyStyles || isSVGElementNode(node)) && !isIFrameElement(node) || copyStyles) { copyCSSStyles(style, clone2); } if (node.scrollTop !== 0 || node.scrollLeft !== 0) { this.scrolledElements.push([clone2, node.scrollLeft, node.scrollTop]); } if ((isTextareaElement(node) || isSelectElement(node)) && (isTextareaElement(clone2) || isSelectElement(clone2))) { clone2.value = node.value; } return clone2; } return node.cloneNode(false); }; DocumentCloner2.prototype.resolvePseudoContent = function(node, clone2, style, pseudoElt) { var _this = this; if (!style) { return; } var value = style.content; var document2 = clone2.ownerDocument; if (!document2 || !value || value === "none" || value === "-moz-alt-content" || style.display === "none") { return; } this.counters.parse(new CSSParsedCounterDeclaration(this.context, style)); var declaration = new CSSParsedPseudoDeclaration(this.context, style); var anonymousReplacedElement = document2.createElement("html2canvaspseudoelement"); copyCSSStyles(style, anonymousReplacedElement); declaration.content.forEach(function(token) { if (token.type === 0) { anonymousReplacedElement.appendChild(document2.createTextNode(token.value)); } else if (token.type === 22) { var img = document2.createElement("img"); img.src = token.value; img.style.opacity = "1"; anonymousReplacedElement.appendChild(img); } else if (token.type === 18) { if (token.name === "attr") { var attr = token.values.filter(isIdentToken); if (attr.length) { anonymousReplacedElement.appendChild(document2.createTextNode(node.getAttribute(attr[0].value) || "")); } } else if (token.name === "counter") { var _a = token.values.filter(nonFunctionArgSeparator), counter = _a[0], counterStyle = _a[1]; if (counter && isIdentToken(counter)) { var counterState = _this.counters.getCounterValue(counter.value); var counterType = counterStyle && isIdentToken(counterStyle) ? listStyleType.parse(_this.context, counterStyle.value) : 3; anonymousReplacedElement.appendChild(document2.createTextNode(createCounterText(counterState, counterType, false))); } } else if (token.name === "counters") { var _b = token.values.filter(nonFunctionArgSeparator), counter = _b[0], delim = _b[1], counterStyle = _b[2]; if (counter && isIdentToken(counter)) { var counterStates = _this.counters.getCounterValues(counter.value); var counterType_1 = counterStyle && isIdentToken(counterStyle) ? listStyleType.parse(_this.context, counterStyle.value) : 3; var separator = delim && delim.type === 0 ? delim.value : ""; var text = counterStates.map(function(value2) { return createCounterText(value2, counterType_1, false); }).join(separator); anonymousReplacedElement.appendChild(document2.createTextNode(text)); } } else ; } else if (token.type === 20) { switch (token.value) { case "open-quote": anonymousReplacedElement.appendChild(document2.createTextNode(getQuote(declaration.quotes, _this.quoteDepth++, true))); break; case "close-quote": anonymousReplacedElement.appendChild(document2.createTextNode(getQuote(declaration.quotes, --_this.quoteDepth, false))); break; default: anonymousReplacedElement.appendChild(document2.createTextNode(token.value)); } } }); anonymousReplacedElement.className = PSEUDO_HIDE_ELEMENT_CLASS_BEFORE + " " + PSEUDO_HIDE_ELEMENT_CLASS_AFTER; var newClassName = pseudoElt === PseudoElementType.BEFORE ? " " + PSEUDO_HIDE_ELEMENT_CLASS_BEFORE : " " + PSEUDO_HIDE_ELEMENT_CLASS_AFTER; if (isSVGElementNode(clone2)) { clone2.className.baseValue += newClassName; } else { clone2.className += newClassName; } return anonymousReplacedElement; }; DocumentCloner2.destroy = function(container) { if (container.parentNode) { container.parentNode.removeChild(container); return true; } return false; }; return DocumentCloner2; }() ); var PseudoElementType; (function(PseudoElementType2) { PseudoElementType2[PseudoElementType2["BEFORE"] = 0] = "BEFORE"; PseudoElementType2[PseudoElementType2["AFTER"] = 1] = "AFTER"; })(PseudoElementType || (PseudoElementType = {})); var createIFrameContainer = function(ownerDocument, bounds) { var cloneIframeContainer = ownerDocument.createElement("iframe"); cloneIframeContainer.className = "html2canvas-container"; cloneIframeContainer.style.visibility = "hidden"; cloneIframeContainer.style.position = "fixed"; cloneIframeContainer.style.left = "-10000px"; cloneIframeContainer.style.top = "0px"; cloneIframeContainer.style.border = "0"; cloneIframeContainer.width = bounds.width.toString(); cloneIframeContainer.height = bounds.height.toString(); cloneIframeContainer.scrolling = "no"; cloneIframeContainer.setAttribute(IGNORE_ATTRIBUTE, "true"); ownerDocument.body.appendChild(cloneIframeContainer); return cloneIframeContainer; }; var imageReady = function(img) { return new Promise(function(resolve) { if (img.complete) { resolve(); return; } if (!img.src) { resolve(); return; } img.onload = resolve; img.onerror = resolve; }); }; var imagesReady = function(document2) { return Promise.all([].slice.call(document2.images, 0).map(imageReady)); }; var iframeLoader = function(iframe) { return new Promise(function(resolve, reject) { var cloneWindow = iframe.contentWindow; if (!cloneWindow) { return reject("No window assigned for iframe"); } var documentClone = cloneWindow.document; cloneWindow.onload = iframe.onload = function() { cloneWindow.onload = iframe.onload = null; var interval = setInterval(function() { if (documentClone.body.childNodes.length > 0 && documentClone.readyState === "complete") { clearInterval(interval); resolve(iframe); } }, 50); }; }); }; var ignoredStyleProperties = [ "all", "d", "content" // Safari shows pseudoelements if content is set ]; var copyCSSStyles = function(style, target) { for (var i4 = style.length - 1; i4 >= 0; i4--) { var property = style.item(i4); if (ignoredStyleProperties.indexOf(property) === -1) { target.style.setProperty(property, style.getPropertyValue(property)); } } return target; }; var serializeDoctype = function(doctype) { var str = ""; if (doctype) { str += ""; } return str; }; var restoreOwnerScroll = function(ownerDocument, x3, y3) { if (ownerDocument && ownerDocument.defaultView && (x3 !== ownerDocument.defaultView.pageXOffset || y3 !== ownerDocument.defaultView.pageYOffset)) { ownerDocument.defaultView.scrollTo(x3, y3); } }; var restoreNodeScroll = function(_a) { var element = _a[0], x3 = _a[1], y3 = _a[2]; element.scrollLeft = x3; element.scrollTop = y3; }; var PSEUDO_BEFORE = ":before"; var PSEUDO_AFTER = ":after"; var PSEUDO_HIDE_ELEMENT_CLASS_BEFORE = "___html2canvas___pseudoelement_before"; var PSEUDO_HIDE_ELEMENT_CLASS_AFTER = "___html2canvas___pseudoelement_after"; var PSEUDO_HIDE_ELEMENT_STYLE = '{\n content: "" !important;\n display: none !important;\n}'; var createPseudoHideStyles = function(body) { createStyles(body, "." + PSEUDO_HIDE_ELEMENT_CLASS_BEFORE + PSEUDO_BEFORE + PSEUDO_HIDE_ELEMENT_STYLE + "\n ." + PSEUDO_HIDE_ELEMENT_CLASS_AFTER + PSEUDO_AFTER + PSEUDO_HIDE_ELEMENT_STYLE); }; var createStyles = function(body, styles) { var document2 = body.ownerDocument; if (document2) { var style = document2.createElement("style"); style.textContent = styles; body.appendChild(style); } }; var CacheStorage = ( /** @class */ function() { function CacheStorage2() { } CacheStorage2.getOrigin = function(url) { var link = CacheStorage2._link; if (!link) { return "about:blank"; } link.href = url; link.href = link.href; return link.protocol + link.hostname + link.port; }; CacheStorage2.isSameOrigin = function(src) { return CacheStorage2.getOrigin(src) === CacheStorage2._origin; }; CacheStorage2.setContext = function(window2) { CacheStorage2._link = window2.document.createElement("a"); CacheStorage2._origin = CacheStorage2.getOrigin(window2.location.href); }; CacheStorage2._origin = "about:blank"; return CacheStorage2; }() ); var Cache2 = ( /** @class */ function() { function Cache3(context, _options) { this.context = context; this._options = _options; this._cache = {}; } Cache3.prototype.addImage = function(src) { var result = Promise.resolve(); if (this.has(src)) { return result; } if (isBlobImage(src) || isRenderable(src)) { (this._cache[src] = this.loadImage(src)).catch(function() { }); return result; } return result; }; Cache3.prototype.match = function(src) { return this._cache[src]; }; Cache3.prototype.loadImage = function(key) { return __awaiter(this, void 0, void 0, function() { var isSameOrigin, useCORS, useProxy, src; var _this = this; return __generator(this, function(_a) { switch (_a.label) { case 0: isSameOrigin = CacheStorage.isSameOrigin(key); useCORS = !isInlineImage(key) && this._options.useCORS === true && FEATURES.SUPPORT_CORS_IMAGES && !isSameOrigin; useProxy = !isInlineImage(key) && !isSameOrigin && !isBlobImage(key) && typeof this._options.proxy === "string" && FEATURES.SUPPORT_CORS_XHR && !useCORS; if (!isSameOrigin && this._options.allowTaint === false && !isInlineImage(key) && !isBlobImage(key) && !useProxy && !useCORS) { return [ 2 /*return*/ ]; } src = key; if (!useProxy) return [3, 2]; return [4, this.proxy(src)]; case 1: src = _a.sent(); _a.label = 2; case 2: this.context.logger.debug("Added image " + key.substring(0, 256)); return [4, new Promise(function(resolve, reject) { var img = new Image(); img.onload = function() { return resolve(img); }; img.onerror = reject; if (isInlineBase64Image(src) || useCORS) { img.crossOrigin = "anonymous"; } img.src = src; if (img.complete === true) { setTimeout(function() { return resolve(img); }, 500); } if (_this._options.imageTimeout > 0) { setTimeout(function() { return reject("Timed out (" + _this._options.imageTimeout + "ms) loading image"); }, _this._options.imageTimeout); } })]; case 3: return [2, _a.sent()]; } }); }); }; Cache3.prototype.has = function(key) { return typeof this._cache[key] !== "undefined"; }; Cache3.prototype.keys = function() { return Promise.resolve(Object.keys(this._cache)); }; Cache3.prototype.proxy = function(src) { var _this = this; var proxy = this._options.proxy; if (!proxy) { throw new Error("No proxy defined"); } var key = src.substring(0, 256); return new Promise(function(resolve, reject) { var responseType = FEATURES.SUPPORT_RESPONSE_TYPE ? "blob" : "text"; var xhr = new XMLHttpRequest(); xhr.onload = function() { if (xhr.status === 200) { if (responseType === "text") { resolve(xhr.response); } else { var reader_1 = new FileReader(); reader_1.addEventListener("load", function() { return resolve(reader_1.result); }, false); reader_1.addEventListener("error", function(e4) { return reject(e4); }, false); reader_1.readAsDataURL(xhr.response); } } else { reject("Failed to proxy resource " + key + " with status code " + xhr.status); } }; xhr.onerror = reject; var queryString = proxy.indexOf("?") > -1 ? "&" : "?"; xhr.open("GET", "" + proxy + queryString + "url=" + encodeURIComponent(src) + "&responseType=" + responseType); if (responseType !== "text" && xhr instanceof XMLHttpRequest) { xhr.responseType = responseType; } if (_this._options.imageTimeout) { var timeout_1 = _this._options.imageTimeout; xhr.timeout = timeout_1; xhr.ontimeout = function() { return reject("Timed out (" + timeout_1 + "ms) proxying " + key); }; } xhr.send(); }); }; return Cache3; }() ); var INLINE_SVG = /^data:image\/svg\+xml/i; var INLINE_BASE64 = /^data:image\/.*;base64,/i; var INLINE_IMG = /^data:image\/.*/i; var isRenderable = function(src) { return FEATURES.SUPPORT_SVG_DRAWING || !isSVG(src); }; var isInlineImage = function(src) { return INLINE_IMG.test(src); }; var isInlineBase64Image = function(src) { return INLINE_BASE64.test(src); }; var isBlobImage = function(src) { return src.substr(0, 4) === "blob"; }; var isSVG = function(src) { return src.substr(-3).toLowerCase() === "svg" || INLINE_SVG.test(src); }; var Vector = ( /** @class */ function() { function Vector2(x3, y3) { this.type = 0; this.x = x3; this.y = y3; } Vector2.prototype.add = function(deltaX, deltaY) { return new Vector2(this.x + deltaX, this.y + deltaY); }; return Vector2; }() ); var lerp = function(a4, b3, t3) { return new Vector(a4.x + (b3.x - a4.x) * t3, a4.y + (b3.y - a4.y) * t3); }; var BezierCurve = ( /** @class */ function() { function BezierCurve2(start5, startControl, endControl, end2) { this.type = 1; this.start = start5; this.startControl = startControl; this.endControl = endControl; this.end = end2; } BezierCurve2.prototype.subdivide = function(t3, firstHalf) { var ab = lerp(this.start, this.startControl, t3); var bc = lerp(this.startControl, this.endControl, t3); var cd = lerp(this.endControl, this.end, t3); var abbc = lerp(ab, bc, t3); var bccd = lerp(bc, cd, t3); var dest = lerp(abbc, bccd, t3); return firstHalf ? new BezierCurve2(this.start, ab, abbc, dest) : new BezierCurve2(dest, bccd, cd, this.end); }; BezierCurve2.prototype.add = function(deltaX, deltaY) { return new BezierCurve2(this.start.add(deltaX, deltaY), this.startControl.add(deltaX, deltaY), this.endControl.add(deltaX, deltaY), this.end.add(deltaX, deltaY)); }; BezierCurve2.prototype.reverse = function() { return new BezierCurve2(this.end, this.endControl, this.startControl, this.start); }; return BezierCurve2; }() ); var isBezierCurve = function(path) { return path.type === 1; }; var BoundCurves = ( /** @class */ function() { function BoundCurves2(element) { var styles = element.styles; var bounds = element.bounds; var _a = getAbsoluteValueForTuple(styles.borderTopLeftRadius, bounds.width, bounds.height), tlh = _a[0], tlv = _a[1]; var _b = getAbsoluteValueForTuple(styles.borderTopRightRadius, bounds.width, bounds.height), trh = _b[0], trv = _b[1]; var _c = getAbsoluteValueForTuple(styles.borderBottomRightRadius, bounds.width, bounds.height), brh = _c[0], brv = _c[1]; var _d = getAbsoluteValueForTuple(styles.borderBottomLeftRadius, bounds.width, bounds.height), blh = _d[0], blv = _d[1]; var factors = []; factors.push((tlh + trh) / bounds.width); factors.push((blh + brh) / bounds.width); factors.push((tlv + blv) / bounds.height); factors.push((trv + brv) / bounds.height); var maxFactor = Math.max.apply(Math, factors); if (maxFactor > 1) { tlh /= maxFactor; tlv /= maxFactor; trh /= maxFactor; trv /= maxFactor; brh /= maxFactor; brv /= maxFactor; blh /= maxFactor; blv /= maxFactor; } var topWidth = bounds.width - trh; var rightHeight = bounds.height - brv; var bottomWidth = bounds.width - brh; var leftHeight = bounds.height - blv; var borderTopWidth2 = styles.borderTopWidth; var borderRightWidth2 = styles.borderRightWidth; var borderBottomWidth2 = styles.borderBottomWidth; var borderLeftWidth2 = styles.borderLeftWidth; var paddingTop2 = getAbsoluteValue(styles.paddingTop, element.bounds.width); var paddingRight2 = getAbsoluteValue(styles.paddingRight, element.bounds.width); var paddingBottom2 = getAbsoluteValue(styles.paddingBottom, element.bounds.width); var paddingLeft2 = getAbsoluteValue(styles.paddingLeft, element.bounds.width); this.topLeftBorderDoubleOuterBox = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2 / 3, bounds.top + borderTopWidth2 / 3, tlh - borderLeftWidth2 / 3, tlv - borderTopWidth2 / 3, CORNER.TOP_LEFT) : new Vector(bounds.left + borderLeftWidth2 / 3, bounds.top + borderTopWidth2 / 3); this.topRightBorderDoubleOuterBox = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + topWidth, bounds.top + borderTopWidth2 / 3, trh - borderRightWidth2 / 3, trv - borderTopWidth2 / 3, CORNER.TOP_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth2 / 3, bounds.top + borderTopWidth2 / 3); this.bottomRightBorderDoubleOuterBox = brh > 0 || brv > 0 ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh - borderRightWidth2 / 3, brv - borderBottomWidth2 / 3, CORNER.BOTTOM_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth2 / 3, bounds.top + bounds.height - borderBottomWidth2 / 3); this.bottomLeftBorderDoubleOuterBox = blh > 0 || blv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2 / 3, bounds.top + leftHeight, blh - borderLeftWidth2 / 3, blv - borderBottomWidth2 / 3, CORNER.BOTTOM_LEFT) : new Vector(bounds.left + borderLeftWidth2 / 3, bounds.top + bounds.height - borderBottomWidth2 / 3); this.topLeftBorderDoubleInnerBox = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2 * 2 / 3, bounds.top + borderTopWidth2 * 2 / 3, tlh - borderLeftWidth2 * 2 / 3, tlv - borderTopWidth2 * 2 / 3, CORNER.TOP_LEFT) : new Vector(bounds.left + borderLeftWidth2 * 2 / 3, bounds.top + borderTopWidth2 * 2 / 3); this.topRightBorderDoubleInnerBox = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + topWidth, bounds.top + borderTopWidth2 * 2 / 3, trh - borderRightWidth2 * 2 / 3, trv - borderTopWidth2 * 2 / 3, CORNER.TOP_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth2 * 2 / 3, bounds.top + borderTopWidth2 * 2 / 3); this.bottomRightBorderDoubleInnerBox = brh > 0 || brv > 0 ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh - borderRightWidth2 * 2 / 3, brv - borderBottomWidth2 * 2 / 3, CORNER.BOTTOM_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth2 * 2 / 3, bounds.top + bounds.height - borderBottomWidth2 * 2 / 3); this.bottomLeftBorderDoubleInnerBox = blh > 0 || blv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2 * 2 / 3, bounds.top + leftHeight, blh - borderLeftWidth2 * 2 / 3, blv - borderBottomWidth2 * 2 / 3, CORNER.BOTTOM_LEFT) : new Vector(bounds.left + borderLeftWidth2 * 2 / 3, bounds.top + bounds.height - borderBottomWidth2 * 2 / 3); this.topLeftBorderStroke = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2 / 2, bounds.top + borderTopWidth2 / 2, tlh - borderLeftWidth2 / 2, tlv - borderTopWidth2 / 2, CORNER.TOP_LEFT) : new Vector(bounds.left + borderLeftWidth2 / 2, bounds.top + borderTopWidth2 / 2); this.topRightBorderStroke = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + topWidth, bounds.top + borderTopWidth2 / 2, trh - borderRightWidth2 / 2, trv - borderTopWidth2 / 2, CORNER.TOP_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth2 / 2, bounds.top + borderTopWidth2 / 2); this.bottomRightBorderStroke = brh > 0 || brv > 0 ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh - borderRightWidth2 / 2, brv - borderBottomWidth2 / 2, CORNER.BOTTOM_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth2 / 2, bounds.top + bounds.height - borderBottomWidth2 / 2); this.bottomLeftBorderStroke = blh > 0 || blv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2 / 2, bounds.top + leftHeight, blh - borderLeftWidth2 / 2, blv - borderBottomWidth2 / 2, CORNER.BOTTOM_LEFT) : new Vector(bounds.left + borderLeftWidth2 / 2, bounds.top + bounds.height - borderBottomWidth2 / 2); this.topLeftBorderBox = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left, bounds.top, tlh, tlv, CORNER.TOP_LEFT) : new Vector(bounds.left, bounds.top); this.topRightBorderBox = trh > 0 || trv > 0 ? getCurvePoints(bounds.left + topWidth, bounds.top, trh, trv, CORNER.TOP_RIGHT) : new Vector(bounds.left + bounds.width, bounds.top); this.bottomRightBorderBox = brh > 0 || brv > 0 ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh, brv, CORNER.BOTTOM_RIGHT) : new Vector(bounds.left + bounds.width, bounds.top + bounds.height); this.bottomLeftBorderBox = blh > 0 || blv > 0 ? getCurvePoints(bounds.left, bounds.top + leftHeight, blh, blv, CORNER.BOTTOM_LEFT) : new Vector(bounds.left, bounds.top + bounds.height); this.topLeftPaddingBox = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2, bounds.top + borderTopWidth2, Math.max(0, tlh - borderLeftWidth2), Math.max(0, tlv - borderTopWidth2), CORNER.TOP_LEFT) : new Vector(bounds.left + borderLeftWidth2, bounds.top + borderTopWidth2); this.topRightPaddingBox = trh > 0 || trv > 0 ? getCurvePoints(bounds.left + Math.min(topWidth, bounds.width - borderRightWidth2), bounds.top + borderTopWidth2, topWidth > bounds.width + borderRightWidth2 ? 0 : Math.max(0, trh - borderRightWidth2), Math.max(0, trv - borderTopWidth2), CORNER.TOP_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth2, bounds.top + borderTopWidth2); this.bottomRightPaddingBox = brh > 0 || brv > 0 ? getCurvePoints(bounds.left + Math.min(bottomWidth, bounds.width - borderLeftWidth2), bounds.top + Math.min(rightHeight, bounds.height - borderBottomWidth2), Math.max(0, brh - borderRightWidth2), Math.max(0, brv - borderBottomWidth2), CORNER.BOTTOM_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth2, bounds.top + bounds.height - borderBottomWidth2); this.bottomLeftPaddingBox = blh > 0 || blv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2, bounds.top + Math.min(leftHeight, bounds.height - borderBottomWidth2), Math.max(0, blh - borderLeftWidth2), Math.max(0, blv - borderBottomWidth2), CORNER.BOTTOM_LEFT) : new Vector(bounds.left + borderLeftWidth2, bounds.top + bounds.height - borderBottomWidth2); this.topLeftContentBox = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2 + paddingLeft2, bounds.top + borderTopWidth2 + paddingTop2, Math.max(0, tlh - (borderLeftWidth2 + paddingLeft2)), Math.max(0, tlv - (borderTopWidth2 + paddingTop2)), CORNER.TOP_LEFT) : new Vector(bounds.left + borderLeftWidth2 + paddingLeft2, bounds.top + borderTopWidth2 + paddingTop2); this.topRightContentBox = trh > 0 || trv > 0 ? getCurvePoints(bounds.left + Math.min(topWidth, bounds.width + borderLeftWidth2 + paddingLeft2), bounds.top + borderTopWidth2 + paddingTop2, topWidth > bounds.width + borderLeftWidth2 + paddingLeft2 ? 0 : trh - borderLeftWidth2 + paddingLeft2, trv - (borderTopWidth2 + paddingTop2), CORNER.TOP_RIGHT) : new Vector(bounds.left + bounds.width - (borderRightWidth2 + paddingRight2), bounds.top + borderTopWidth2 + paddingTop2); this.bottomRightContentBox = brh > 0 || brv > 0 ? getCurvePoints(bounds.left + Math.min(bottomWidth, bounds.width - (borderLeftWidth2 + paddingLeft2)), bounds.top + Math.min(rightHeight, bounds.height + borderTopWidth2 + paddingTop2), Math.max(0, brh - (borderRightWidth2 + paddingRight2)), brv - (borderBottomWidth2 + paddingBottom2), CORNER.BOTTOM_RIGHT) : new Vector(bounds.left + bounds.width - (borderRightWidth2 + paddingRight2), bounds.top + bounds.height - (borderBottomWidth2 + paddingBottom2)); this.bottomLeftContentBox = blh > 0 || blv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2 + paddingLeft2, bounds.top + leftHeight, Math.max(0, blh - (borderLeftWidth2 + paddingLeft2)), blv - (borderBottomWidth2 + paddingBottom2), CORNER.BOTTOM_LEFT) : new Vector(bounds.left + borderLeftWidth2 + paddingLeft2, bounds.top + bounds.height - (borderBottomWidth2 + paddingBottom2)); } return BoundCurves2; }() ); var CORNER; (function(CORNER2) { CORNER2[CORNER2["TOP_LEFT"] = 0] = "TOP_LEFT"; CORNER2[CORNER2["TOP_RIGHT"] = 1] = "TOP_RIGHT"; CORNER2[CORNER2["BOTTOM_RIGHT"] = 2] = "BOTTOM_RIGHT"; CORNER2[CORNER2["BOTTOM_LEFT"] = 3] = "BOTTOM_LEFT"; })(CORNER || (CORNER = {})); var getCurvePoints = function(x3, y3, r1, r22, position2) { var kappa = 4 * ((Math.sqrt(2) - 1) / 3); var ox = r1 * kappa; var oy = r22 * kappa; var xm = x3 + r1; var ym = y3 + r22; switch (position2) { case CORNER.TOP_LEFT: return new BezierCurve(new Vector(x3, ym), new Vector(x3, ym - oy), new Vector(xm - ox, y3), new Vector(xm, y3)); case CORNER.TOP_RIGHT: return new BezierCurve(new Vector(x3, y3), new Vector(x3 + ox, y3), new Vector(xm, ym - oy), new Vector(xm, ym)); case CORNER.BOTTOM_RIGHT: return new BezierCurve(new Vector(xm, y3), new Vector(xm, y3 + oy), new Vector(x3 + ox, ym), new Vector(x3, ym)); case CORNER.BOTTOM_LEFT: default: return new BezierCurve(new Vector(xm, ym), new Vector(xm - ox, ym), new Vector(x3, y3 + oy), new Vector(x3, y3)); } }; var calculateBorderBoxPath = function(curves) { return [curves.topLeftBorderBox, curves.topRightBorderBox, curves.bottomRightBorderBox, curves.bottomLeftBorderBox]; }; var calculateContentBoxPath = function(curves) { return [ curves.topLeftContentBox, curves.topRightContentBox, curves.bottomRightContentBox, curves.bottomLeftContentBox ]; }; var calculatePaddingBoxPath = function(curves) { return [ curves.topLeftPaddingBox, curves.topRightPaddingBox, curves.bottomRightPaddingBox, curves.bottomLeftPaddingBox ]; }; var TransformEffect = ( /** @class */ function() { function TransformEffect2(offsetX, offsetY, matrix2) { this.offsetX = offsetX; this.offsetY = offsetY; this.matrix = matrix2; this.type = 0; this.target = 2 | 4; } return TransformEffect2; }() ); var ClipEffect = ( /** @class */ function() { function ClipEffect2(path, target) { this.path = path; this.target = target; this.type = 1; } return ClipEffect2; }() ); var OpacityEffect = ( /** @class */ function() { function OpacityEffect2(opacity2) { this.opacity = opacity2; this.type = 2; this.target = 2 | 4; } return OpacityEffect2; }() ); var isTransformEffect = function(effect7) { return effect7.type === 0; }; var isClipEffect = function(effect7) { return effect7.type === 1; }; var isOpacityEffect = function(effect7) { return effect7.type === 2; }; var equalPath = function(a4, b3) { if (a4.length === b3.length) { return a4.some(function(v3, i4) { return v3 === b3[i4]; }); } return false; }; var transformPath = function(path, deltaX, deltaY, deltaW, deltaH) { return path.map(function(point, index) { switch (index) { case 0: return point.add(deltaX, deltaY); case 1: return point.add(deltaX + deltaW, deltaY); case 2: return point.add(deltaX + deltaW, deltaY + deltaH); case 3: return point.add(deltaX, deltaY + deltaH); } return point; }); }; var StackingContext = ( /** @class */ function() { function StackingContext2(container) { this.element = container; this.inlineLevel = []; this.nonInlineLevel = []; this.negativeZIndex = []; this.zeroOrAutoZIndexOrTransformedOrOpacity = []; this.positiveZIndex = []; this.nonPositionedFloats = []; this.nonPositionedInlineLevel = []; } return StackingContext2; }() ); var ElementPaint = ( /** @class */ function() { function ElementPaint2(container, parent) { this.container = container; this.parent = parent; this.effects = []; this.curves = new BoundCurves(this.container); if (this.container.styles.opacity < 1) { this.effects.push(new OpacityEffect(this.container.styles.opacity)); } if (this.container.styles.transform !== null) { var offsetX = this.container.bounds.left + this.container.styles.transformOrigin[0].number; var offsetY = this.container.bounds.top + this.container.styles.transformOrigin[1].number; var matrix2 = this.container.styles.transform; this.effects.push(new TransformEffect(offsetX, offsetY, matrix2)); } if (this.container.styles.overflowX !== 0) { var borderBox = calculateBorderBoxPath(this.curves); var paddingBox2 = calculatePaddingBoxPath(this.curves); if (equalPath(borderBox, paddingBox2)) { this.effects.push(new ClipEffect( borderBox, 2 | 4 /* CONTENT */ )); } else { this.effects.push(new ClipEffect( borderBox, 2 /* BACKGROUND_BORDERS */ )); this.effects.push(new ClipEffect( paddingBox2, 4 /* CONTENT */ )); } } } ElementPaint2.prototype.getEffects = function(target) { var inFlow = [ 2, 3 /* FIXED */ ].indexOf(this.container.styles.position) === -1; var parent = this.parent; var effects = this.effects.slice(0); while (parent) { var croplessEffects = parent.effects.filter(function(effect7) { return !isClipEffect(effect7); }); if (inFlow || parent.container.styles.position !== 0 || !parent.parent) { effects.unshift.apply(effects, croplessEffects); inFlow = [ 2, 3 /* FIXED */ ].indexOf(parent.container.styles.position) === -1; if (parent.container.styles.overflowX !== 0) { var borderBox = calculateBorderBoxPath(parent.curves); var paddingBox2 = calculatePaddingBoxPath(parent.curves); if (!equalPath(borderBox, paddingBox2)) { effects.unshift(new ClipEffect( paddingBox2, 2 | 4 /* CONTENT */ )); } } } else { effects.unshift.apply(effects, croplessEffects); } parent = parent.parent; } return effects.filter(function(effect7) { return contains2(effect7.target, target); }); }; return ElementPaint2; }() ); var parseStackTree = function(parent, stackingContext, realStackingContext, listItems) { parent.container.elements.forEach(function(child) { var treatAsRealStackingContext = contains2( child.flags, 4 /* CREATES_REAL_STACKING_CONTEXT */ ); var createsStackingContext2 = contains2( child.flags, 2 /* CREATES_STACKING_CONTEXT */ ); var paintContainer = new ElementPaint(child, parent); if (contains2( child.styles.display, 2048 /* LIST_ITEM */ )) { listItems.push(paintContainer); } var listOwnerItems = contains2( child.flags, 8 /* IS_LIST_OWNER */ ) ? [] : listItems; if (treatAsRealStackingContext || createsStackingContext2) { var parentStack = treatAsRealStackingContext || child.styles.isPositioned() ? realStackingContext : stackingContext; var stack = new StackingContext(paintContainer); if (child.styles.isPositioned() || child.styles.opacity < 1 || child.styles.isTransformed()) { var order_1 = child.styles.zIndex.order; if (order_1 < 0) { var index_1 = 0; parentStack.negativeZIndex.some(function(current, i4) { if (order_1 > current.element.container.styles.zIndex.order) { index_1 = i4; return false; } else if (index_1 > 0) { return true; } return false; }); parentStack.negativeZIndex.splice(index_1, 0, stack); } else if (order_1 > 0) { var index_2 = 0; parentStack.positiveZIndex.some(function(current, i4) { if (order_1 >= current.element.container.styles.zIndex.order) { index_2 = i4 + 1; return false; } else if (index_2 > 0) { return true; } return false; }); parentStack.positiveZIndex.splice(index_2, 0, stack); } else { parentStack.zeroOrAutoZIndexOrTransformedOrOpacity.push(stack); } } else { if (child.styles.isFloating()) { parentStack.nonPositionedFloats.push(stack); } else { parentStack.nonPositionedInlineLevel.push(stack); } } parseStackTree(paintContainer, stack, treatAsRealStackingContext ? stack : realStackingContext, listOwnerItems); } else { if (child.styles.isInlineLevel()) { stackingContext.inlineLevel.push(paintContainer); } else { stackingContext.nonInlineLevel.push(paintContainer); } parseStackTree(paintContainer, stackingContext, realStackingContext, listOwnerItems); } if (contains2( child.flags, 8 /* IS_LIST_OWNER */ )) { processListItems(child, listOwnerItems); } }); }; var processListItems = function(owner, elements) { var numbering = owner instanceof OLElementContainer ? owner.start : 1; var reversed = owner instanceof OLElementContainer ? owner.reversed : false; for (var i4 = 0; i4 < elements.length; i4++) { var item = elements[i4]; if (item.container instanceof LIElementContainer && typeof item.container.value === "number" && item.container.value !== 0) { numbering = item.container.value; } item.listValue = createCounterText(numbering, item.container.styles.listStyleType, true); numbering += reversed ? -1 : 1; } }; var parseStackingContexts = function(container) { var paintContainer = new ElementPaint(container, null); var root = new StackingContext(paintContainer); var listItems = []; parseStackTree(paintContainer, root, root, listItems); processListItems(paintContainer.container, listItems); return root; }; var parsePathForBorder = function(curves, borderSide) { switch (borderSide) { case 0: return createPathFromCurves(curves.topLeftBorderBox, curves.topLeftPaddingBox, curves.topRightBorderBox, curves.topRightPaddingBox); case 1: return createPathFromCurves(curves.topRightBorderBox, curves.topRightPaddingBox, curves.bottomRightBorderBox, curves.bottomRightPaddingBox); case 2: return createPathFromCurves(curves.bottomRightBorderBox, curves.bottomRightPaddingBox, curves.bottomLeftBorderBox, curves.bottomLeftPaddingBox); case 3: default: return createPathFromCurves(curves.bottomLeftBorderBox, curves.bottomLeftPaddingBox, curves.topLeftBorderBox, curves.topLeftPaddingBox); } }; var parsePathForBorderDoubleOuter = function(curves, borderSide) { switch (borderSide) { case 0: return createPathFromCurves(curves.topLeftBorderBox, curves.topLeftBorderDoubleOuterBox, curves.topRightBorderBox, curves.topRightBorderDoubleOuterBox); case 1: return createPathFromCurves(curves.topRightBorderBox, curves.topRightBorderDoubleOuterBox, curves.bottomRightBorderBox, curves.bottomRightBorderDoubleOuterBox); case 2: return createPathFromCurves(curves.bottomRightBorderBox, curves.bottomRightBorderDoubleOuterBox, curves.bottomLeftBorderBox, curves.bottomLeftBorderDoubleOuterBox); case 3: default: return createPathFromCurves(curves.bottomLeftBorderBox, curves.bottomLeftBorderDoubleOuterBox, curves.topLeftBorderBox, curves.topLeftBorderDoubleOuterBox); } }; var parsePathForBorderDoubleInner = function(curves, borderSide) { switch (borderSide) { case 0: return createPathFromCurves(curves.topLeftBorderDoubleInnerBox, curves.topLeftPaddingBox, curves.topRightBorderDoubleInnerBox, curves.topRightPaddingBox); case 1: return createPathFromCurves(curves.topRightBorderDoubleInnerBox, curves.topRightPaddingBox, curves.bottomRightBorderDoubleInnerBox, curves.bottomRightPaddingBox); case 2: return createPathFromCurves(curves.bottomRightBorderDoubleInnerBox, curves.bottomRightPaddingBox, curves.bottomLeftBorderDoubleInnerBox, curves.bottomLeftPaddingBox); case 3: default: return createPathFromCurves(curves.bottomLeftBorderDoubleInnerBox, curves.bottomLeftPaddingBox, curves.topLeftBorderDoubleInnerBox, curves.topLeftPaddingBox); } }; var parsePathForBorderStroke = function(curves, borderSide) { switch (borderSide) { case 0: return createStrokePathFromCurves(curves.topLeftBorderStroke, curves.topRightBorderStroke); case 1: return createStrokePathFromCurves(curves.topRightBorderStroke, curves.bottomRightBorderStroke); case 2: return createStrokePathFromCurves(curves.bottomRightBorderStroke, curves.bottomLeftBorderStroke); case 3: default: return createStrokePathFromCurves(curves.bottomLeftBorderStroke, curves.topLeftBorderStroke); } }; var createStrokePathFromCurves = function(outer1, outer2) { var path = []; if (isBezierCurve(outer1)) { path.push(outer1.subdivide(0.5, false)); } else { path.push(outer1); } if (isBezierCurve(outer2)) { path.push(outer2.subdivide(0.5, true)); } else { path.push(outer2); } return path; }; var createPathFromCurves = function(outer1, inner1, outer2, inner2) { var path = []; if (isBezierCurve(outer1)) { path.push(outer1.subdivide(0.5, false)); } else { path.push(outer1); } if (isBezierCurve(outer2)) { path.push(outer2.subdivide(0.5, true)); } else { path.push(outer2); } if (isBezierCurve(inner2)) { path.push(inner2.subdivide(0.5, true).reverse()); } else { path.push(inner2); } if (isBezierCurve(inner1)) { path.push(inner1.subdivide(0.5, false).reverse()); } else { path.push(inner1); } return path; }; var paddingBox = function(element) { var bounds = element.bounds; var styles = element.styles; return bounds.add(styles.borderLeftWidth, styles.borderTopWidth, -(styles.borderRightWidth + styles.borderLeftWidth), -(styles.borderTopWidth + styles.borderBottomWidth)); }; var contentBox = function(element) { var styles = element.styles; var bounds = element.bounds; var paddingLeft2 = getAbsoluteValue(styles.paddingLeft, bounds.width); var paddingRight2 = getAbsoluteValue(styles.paddingRight, bounds.width); var paddingTop2 = getAbsoluteValue(styles.paddingTop, bounds.width); var paddingBottom2 = getAbsoluteValue(styles.paddingBottom, bounds.width); return bounds.add(paddingLeft2 + styles.borderLeftWidth, paddingTop2 + styles.borderTopWidth, -(styles.borderRightWidth + styles.borderLeftWidth + paddingLeft2 + paddingRight2), -(styles.borderTopWidth + styles.borderBottomWidth + paddingTop2 + paddingBottom2)); }; var calculateBackgroundPositioningArea = function(backgroundOrigin2, element) { if (backgroundOrigin2 === 0) { return element.bounds; } if (backgroundOrigin2 === 2) { return contentBox(element); } return paddingBox(element); }; var calculateBackgroundPaintingArea = function(backgroundClip2, element) { if (backgroundClip2 === 0) { return element.bounds; } if (backgroundClip2 === 2) { return contentBox(element); } return paddingBox(element); }; var calculateBackgroundRendering = function(container, index, intrinsicSize) { var backgroundPositioningArea = calculateBackgroundPositioningArea(getBackgroundValueForIndex(container.styles.backgroundOrigin, index), container); var backgroundPaintingArea = calculateBackgroundPaintingArea(getBackgroundValueForIndex(container.styles.backgroundClip, index), container); var backgroundImageSize = calculateBackgroundSize(getBackgroundValueForIndex(container.styles.backgroundSize, index), intrinsicSize, backgroundPositioningArea); var sizeWidth = backgroundImageSize[0], sizeHeight = backgroundImageSize[1]; var position2 = getAbsoluteValueForTuple(getBackgroundValueForIndex(container.styles.backgroundPosition, index), backgroundPositioningArea.width - sizeWidth, backgroundPositioningArea.height - sizeHeight); var path = calculateBackgroundRepeatPath(getBackgroundValueForIndex(container.styles.backgroundRepeat, index), position2, backgroundImageSize, backgroundPositioningArea, backgroundPaintingArea); var offsetX = Math.round(backgroundPositioningArea.left + position2[0]); var offsetY = Math.round(backgroundPositioningArea.top + position2[1]); return [path, offsetX, offsetY, sizeWidth, sizeHeight]; }; var isAuto = function(token) { return isIdentToken(token) && token.value === BACKGROUND_SIZE.AUTO; }; var hasIntrinsicValue = function(value) { return typeof value === "number"; }; var calculateBackgroundSize = function(size2, _a, bounds) { var intrinsicWidth = _a[0], intrinsicHeight = _a[1], intrinsicProportion = _a[2]; var first = size2[0], second = size2[1]; if (!first) { return [0, 0]; } if (isLengthPercentage(first) && second && isLengthPercentage(second)) { return [getAbsoluteValue(first, bounds.width), getAbsoluteValue(second, bounds.height)]; } var hasIntrinsicProportion = hasIntrinsicValue(intrinsicProportion); if (isIdentToken(first) && (first.value === BACKGROUND_SIZE.CONTAIN || first.value === BACKGROUND_SIZE.COVER)) { if (hasIntrinsicValue(intrinsicProportion)) { var targetRatio = bounds.width / bounds.height; return targetRatio < intrinsicProportion !== (first.value === BACKGROUND_SIZE.COVER) ? [bounds.width, bounds.width / intrinsicProportion] : [bounds.height * intrinsicProportion, bounds.height]; } return [bounds.width, bounds.height]; } var hasIntrinsicWidth = hasIntrinsicValue(intrinsicWidth); var hasIntrinsicHeight = hasIntrinsicValue(intrinsicHeight); var hasIntrinsicDimensions = hasIntrinsicWidth || hasIntrinsicHeight; if (isAuto(first) && (!second || isAuto(second))) { if (hasIntrinsicWidth && hasIntrinsicHeight) { return [intrinsicWidth, intrinsicHeight]; } if (!hasIntrinsicProportion && !hasIntrinsicDimensions) { return [bounds.width, bounds.height]; } if (hasIntrinsicDimensions && hasIntrinsicProportion) { var width_1 = hasIntrinsicWidth ? intrinsicWidth : intrinsicHeight * intrinsicProportion; var height_1 = hasIntrinsicHeight ? intrinsicHeight : intrinsicWidth / intrinsicProportion; return [width_1, height_1]; } var width_2 = hasIntrinsicWidth ? intrinsicWidth : bounds.width; var height_2 = hasIntrinsicHeight ? intrinsicHeight : bounds.height; return [width_2, height_2]; } if (hasIntrinsicProportion) { var width_3 = 0; var height_3 = 0; if (isLengthPercentage(first)) { width_3 = getAbsoluteValue(first, bounds.width); } else if (isLengthPercentage(second)) { height_3 = getAbsoluteValue(second, bounds.height); } if (isAuto(first)) { width_3 = height_3 * intrinsicProportion; } else if (!second || isAuto(second)) { height_3 = width_3 / intrinsicProportion; } return [width_3, height_3]; } var width = null; var height = null; if (isLengthPercentage(first)) { width = getAbsoluteValue(first, bounds.width); } else if (second && isLengthPercentage(second)) { height = getAbsoluteValue(second, bounds.height); } if (width !== null && (!second || isAuto(second))) { height = hasIntrinsicWidth && hasIntrinsicHeight ? width / intrinsicWidth * intrinsicHeight : bounds.height; } if (height !== null && isAuto(first)) { width = hasIntrinsicWidth && hasIntrinsicHeight ? height / intrinsicHeight * intrinsicWidth : bounds.width; } if (width !== null && height !== null) { return [width, height]; } throw new Error("Unable to calculate background-size for element"); }; var getBackgroundValueForIndex = function(values, index) { var value = values[index]; if (typeof value === "undefined") { return values[0]; } return value; }; var calculateBackgroundRepeatPath = function(repeat, _a, _b, backgroundPositioningArea, backgroundPaintingArea) { var x3 = _a[0], y3 = _a[1]; var width = _b[0], height = _b[1]; switch (repeat) { case 2: return [ new Vector(Math.round(backgroundPositioningArea.left), Math.round(backgroundPositioningArea.top + y3)), new Vector(Math.round(backgroundPositioningArea.left + backgroundPositioningArea.width), Math.round(backgroundPositioningArea.top + y3)), new Vector(Math.round(backgroundPositioningArea.left + backgroundPositioningArea.width), Math.round(height + backgroundPositioningArea.top + y3)), new Vector(Math.round(backgroundPositioningArea.left), Math.round(height + backgroundPositioningArea.top + y3)) ]; case 3: return [ new Vector(Math.round(backgroundPositioningArea.left + x3), Math.round(backgroundPositioningArea.top)), new Vector(Math.round(backgroundPositioningArea.left + x3 + width), Math.round(backgroundPositioningArea.top)), new Vector(Math.round(backgroundPositioningArea.left + x3 + width), Math.round(backgroundPositioningArea.height + backgroundPositioningArea.top)), new Vector(Math.round(backgroundPositioningArea.left + x3), Math.round(backgroundPositioningArea.height + backgroundPositioningArea.top)) ]; case 1: return [ new Vector(Math.round(backgroundPositioningArea.left + x3), Math.round(backgroundPositioningArea.top + y3)), new Vector(Math.round(backgroundPositioningArea.left + x3 + width), Math.round(backgroundPositioningArea.top + y3)), new Vector(Math.round(backgroundPositioningArea.left + x3 + width), Math.round(backgroundPositioningArea.top + y3 + height)), new Vector(Math.round(backgroundPositioningArea.left + x3), Math.round(backgroundPositioningArea.top + y3 + height)) ]; default: return [ new Vector(Math.round(backgroundPaintingArea.left), Math.round(backgroundPaintingArea.top)), new Vector(Math.round(backgroundPaintingArea.left + backgroundPaintingArea.width), Math.round(backgroundPaintingArea.top)), new Vector(Math.round(backgroundPaintingArea.left + backgroundPaintingArea.width), Math.round(backgroundPaintingArea.height + backgroundPaintingArea.top)), new Vector(Math.round(backgroundPaintingArea.left), Math.round(backgroundPaintingArea.height + backgroundPaintingArea.top)) ]; } }; var SMALL_IMAGE = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"; var SAMPLE_TEXT = "Hidden Text"; var FontMetrics = ( /** @class */ function() { function FontMetrics2(document2) { this._data = {}; this._document = document2; } FontMetrics2.prototype.parseMetrics = function(fontFamily2, fontSize2) { var container = this._document.createElement("div"); var img = this._document.createElement("img"); var span = this._document.createElement("span"); var body = this._document.body; container.style.visibility = "hidden"; container.style.fontFamily = fontFamily2; container.style.fontSize = fontSize2; container.style.margin = "0"; container.style.padding = "0"; container.style.whiteSpace = "nowrap"; body.appendChild(container); img.src = SMALL_IMAGE; img.width = 1; img.height = 1; img.style.margin = "0"; img.style.padding = "0"; img.style.verticalAlign = "baseline"; span.style.fontFamily = fontFamily2; span.style.fontSize = fontSize2; span.style.margin = "0"; span.style.padding = "0"; span.appendChild(this._document.createTextNode(SAMPLE_TEXT)); container.appendChild(span); container.appendChild(img); var baseline = img.offsetTop - span.offsetTop + 2; container.removeChild(span); container.appendChild(this._document.createTextNode(SAMPLE_TEXT)); container.style.lineHeight = "normal"; img.style.verticalAlign = "super"; var middle = img.offsetTop - container.offsetTop + 2; body.removeChild(container); return { baseline, middle }; }; FontMetrics2.prototype.getMetrics = function(fontFamily2, fontSize2) { var key = fontFamily2 + " " + fontSize2; if (typeof this._data[key] === "undefined") { this._data[key] = this.parseMetrics(fontFamily2, fontSize2); } return this._data[key]; }; return FontMetrics2; }() ); var Renderer2 = ( /** @class */ function() { function Renderer3(context, options) { this.context = context; this.options = options; } return Renderer3; }() ); var MASK_OFFSET = 1e4; var CanvasRenderer = ( /** @class */ function(_super) { __extends(CanvasRenderer2, _super); function CanvasRenderer2(context, options) { var _this = _super.call(this, context, options) || this; _this._activeEffects = []; _this.canvas = options.canvas ? options.canvas : document.createElement("canvas"); _this.ctx = _this.canvas.getContext("2d"); if (!options.canvas) { _this.canvas.width = Math.floor(options.width * options.scale); _this.canvas.height = Math.floor(options.height * options.scale); _this.canvas.style.width = options.width + "px"; _this.canvas.style.height = options.height + "px"; } _this.fontMetrics = new FontMetrics(document); _this.ctx.scale(_this.options.scale, _this.options.scale); _this.ctx.translate(-options.x, -options.y); _this.ctx.textBaseline = "bottom"; _this._activeEffects = []; _this.context.logger.debug("Canvas renderer initialized (" + options.width + "x" + options.height + ") with scale " + options.scale); return _this; } CanvasRenderer2.prototype.applyEffects = function(effects) { var _this = this; while (this._activeEffects.length) { this.popEffect(); } effects.forEach(function(effect7) { return _this.applyEffect(effect7); }); }; CanvasRenderer2.prototype.applyEffect = function(effect7) { this.ctx.save(); if (isOpacityEffect(effect7)) { this.ctx.globalAlpha = effect7.opacity; } if (isTransformEffect(effect7)) { this.ctx.translate(effect7.offsetX, effect7.offsetY); this.ctx.transform(effect7.matrix[0], effect7.matrix[1], effect7.matrix[2], effect7.matrix[3], effect7.matrix[4], effect7.matrix[5]); this.ctx.translate(-effect7.offsetX, -effect7.offsetY); } if (isClipEffect(effect7)) { this.path(effect7.path); this.ctx.clip(); } this._activeEffects.push(effect7); }; CanvasRenderer2.prototype.popEffect = function() { this._activeEffects.pop(); this.ctx.restore(); }; CanvasRenderer2.prototype.renderStack = function(stack) { return __awaiter(this, void 0, void 0, function() { var styles; return __generator(this, function(_a) { switch (_a.label) { case 0: styles = stack.element.container.styles; if (!styles.isVisible()) return [3, 2]; return [4, this.renderStackContent(stack)]; case 1: _a.sent(); _a.label = 2; case 2: return [ 2 /*return*/ ]; } }); }); }; CanvasRenderer2.prototype.renderNode = function(paint) { return __awaiter(this, void 0, void 0, function() { return __generator(this, function(_a) { switch (_a.label) { case 0: if (contains2( paint.container.flags, 16 /* DEBUG_RENDER */ )) { debugger; } if (!paint.container.styles.isVisible()) return [3, 3]; return [4, this.renderNodeBackgroundAndBorders(paint)]; case 1: _a.sent(); return [4, this.renderNodeContent(paint)]; case 2: _a.sent(); _a.label = 3; case 3: return [ 2 /*return*/ ]; } }); }); }; CanvasRenderer2.prototype.renderTextWithLetterSpacing = function(text, letterSpacing2, baseline) { var _this = this; if (letterSpacing2 === 0) { this.ctx.fillText(text.text, text.bounds.left, text.bounds.top + baseline); } else { var letters = segmentGraphemes(text.text); letters.reduce(function(left2, letter) { _this.ctx.fillText(letter, left2, text.bounds.top + baseline); return left2 + _this.ctx.measureText(letter).width; }, text.bounds.left); } }; CanvasRenderer2.prototype.createFontStyle = function(styles) { var fontVariant2 = styles.fontVariant.filter(function(variant) { return variant === "normal" || variant === "small-caps"; }).join(""); var fontFamily2 = fixIOSSystemFonts(styles.fontFamily).join(", "); var fontSize2 = isDimensionToken(styles.fontSize) ? "" + styles.fontSize.number + styles.fontSize.unit : styles.fontSize.number + "px"; return [ [styles.fontStyle, fontVariant2, styles.fontWeight, fontSize2, fontFamily2].join(" "), fontFamily2, fontSize2 ]; }; CanvasRenderer2.prototype.renderTextNode = function(text, styles) { return __awaiter(this, void 0, void 0, function() { var _a, font, fontFamily2, fontSize2, _b, baseline, middle, paintOrder2; var _this = this; return __generator(this, function(_c) { _a = this.createFontStyle(styles), font = _a[0], fontFamily2 = _a[1], fontSize2 = _a[2]; this.ctx.font = font; this.ctx.direction = styles.direction === 1 ? "rtl" : "ltr"; this.ctx.textAlign = "left"; this.ctx.textBaseline = "alphabetic"; _b = this.fontMetrics.getMetrics(fontFamily2, fontSize2), baseline = _b.baseline, middle = _b.middle; paintOrder2 = styles.paintOrder; text.textBounds.forEach(function(text2) { paintOrder2.forEach(function(paintOrderLayer) { switch (paintOrderLayer) { case 0: _this.ctx.fillStyle = asString(styles.color); _this.renderTextWithLetterSpacing(text2, styles.letterSpacing, baseline); var textShadows = styles.textShadow; if (textShadows.length && text2.text.trim().length) { textShadows.slice(0).reverse().forEach(function(textShadow2) { _this.ctx.shadowColor = asString(textShadow2.color); _this.ctx.shadowOffsetX = textShadow2.offsetX.number * _this.options.scale; _this.ctx.shadowOffsetY = textShadow2.offsetY.number * _this.options.scale; _this.ctx.shadowBlur = textShadow2.blur.number; _this.renderTextWithLetterSpacing(text2, styles.letterSpacing, baseline); }); _this.ctx.shadowColor = ""; _this.ctx.shadowOffsetX = 0; _this.ctx.shadowOffsetY = 0; _this.ctx.shadowBlur = 0; } if (styles.textDecorationLine.length) { _this.ctx.fillStyle = asString(styles.textDecorationColor || styles.color); styles.textDecorationLine.forEach(function(textDecorationLine2) { switch (textDecorationLine2) { case 1: _this.ctx.fillRect(text2.bounds.left, Math.round(text2.bounds.top + baseline), text2.bounds.width, 1); break; case 2: _this.ctx.fillRect(text2.bounds.left, Math.round(text2.bounds.top), text2.bounds.width, 1); break; case 3: _this.ctx.fillRect(text2.bounds.left, Math.ceil(text2.bounds.top + middle), text2.bounds.width, 1); break; } }); } break; case 1: if (styles.webkitTextStrokeWidth && text2.text.trim().length) { _this.ctx.strokeStyle = asString(styles.webkitTextStrokeColor); _this.ctx.lineWidth = styles.webkitTextStrokeWidth; _this.ctx.lineJoin = !!window.chrome ? "miter" : "round"; _this.ctx.strokeText(text2.text, text2.bounds.left, text2.bounds.top + baseline); } _this.ctx.strokeStyle = ""; _this.ctx.lineWidth = 0; _this.ctx.lineJoin = "miter"; break; } }); }); return [ 2 /*return*/ ]; }); }); }; CanvasRenderer2.prototype.renderReplacedElement = function(container, curves, image2) { if (image2 && container.intrinsicWidth > 0 && container.intrinsicHeight > 0) { var box = contentBox(container); var path = calculatePaddingBoxPath(curves); this.path(path); this.ctx.save(); this.ctx.clip(); this.ctx.drawImage(image2, 0, 0, container.intrinsicWidth, container.intrinsicHeight, box.left, box.top, box.width, box.height); this.ctx.restore(); } }; CanvasRenderer2.prototype.renderNodeContent = function(paint) { return __awaiter(this, void 0, void 0, function() { var container, curves, styles, _i, _a, child, image2, image2, iframeRenderer, canvas, size2, _b, fontFamily2, fontSize2, baseline, bounds, x3, textBounds, img, image2, url, fontFamily2, bounds; return __generator(this, function(_c) { switch (_c.label) { case 0: this.applyEffects(paint.getEffects( 4 /* CONTENT */ )); container = paint.container; curves = paint.curves; styles = container.styles; _i = 0, _a = container.textNodes; _c.label = 1; case 1: if (!(_i < _a.length)) return [3, 4]; child = _a[_i]; return [4, this.renderTextNode(child, styles)]; case 2: _c.sent(); _c.label = 3; case 3: _i++; return [3, 1]; case 4: if (!(container instanceof ImageElementContainer)) return [3, 8]; _c.label = 5; case 5: _c.trys.push([5, 7, , 8]); return [4, this.context.cache.match(container.src)]; case 6: image2 = _c.sent(); this.renderReplacedElement(container, curves, image2); return [3, 8]; case 7: _c.sent(); this.context.logger.error("Error loading image " + container.src); return [3, 8]; case 8: if (container instanceof CanvasElementContainer) { this.renderReplacedElement(container, curves, container.canvas); } if (!(container instanceof SVGElementContainer)) return [3, 12]; _c.label = 9; case 9: _c.trys.push([9, 11, , 12]); return [4, this.context.cache.match(container.svg)]; case 10: image2 = _c.sent(); this.renderReplacedElement(container, curves, image2); return [3, 12]; case 11: _c.sent(); this.context.logger.error("Error loading svg " + container.svg.substring(0, 255)); return [3, 12]; case 12: if (!(container instanceof IFrameElementContainer && container.tree)) return [3, 14]; iframeRenderer = new CanvasRenderer2(this.context, { scale: this.options.scale, backgroundColor: container.backgroundColor, x: 0, y: 0, width: container.width, height: container.height }); return [4, iframeRenderer.render(container.tree)]; case 13: canvas = _c.sent(); if (container.width && container.height) { this.ctx.drawImage(canvas, 0, 0, container.width, container.height, container.bounds.left, container.bounds.top, container.bounds.width, container.bounds.height); } _c.label = 14; case 14: if (container instanceof InputElementContainer) { size2 = Math.min(container.bounds.width, container.bounds.height); if (container.type === CHECKBOX) { if (container.checked) { this.ctx.save(); this.path([ new Vector(container.bounds.left + size2 * 0.39363, container.bounds.top + size2 * 0.79), new Vector(container.bounds.left + size2 * 0.16, container.bounds.top + size2 * 0.5549), new Vector(container.bounds.left + size2 * 0.27347, container.bounds.top + size2 * 0.44071), new Vector(container.bounds.left + size2 * 0.39694, container.bounds.top + size2 * 0.5649), new Vector(container.bounds.left + size2 * 0.72983, container.bounds.top + size2 * 0.23), new Vector(container.bounds.left + size2 * 0.84, container.bounds.top + size2 * 0.34085), new Vector(container.bounds.left + size2 * 0.39363, container.bounds.top + size2 * 0.79) ]); this.ctx.fillStyle = asString(INPUT_COLOR); this.ctx.fill(); this.ctx.restore(); } } else if (container.type === RADIO) { if (container.checked) { this.ctx.save(); this.ctx.beginPath(); this.ctx.arc(container.bounds.left + size2 / 2, container.bounds.top + size2 / 2, size2 / 4, 0, Math.PI * 2, true); this.ctx.fillStyle = asString(INPUT_COLOR); this.ctx.fill(); this.ctx.restore(); } } } if (isTextInputElement(container) && container.value.length) { _b = this.createFontStyle(styles), fontFamily2 = _b[0], fontSize2 = _b[1]; baseline = this.fontMetrics.getMetrics(fontFamily2, fontSize2).baseline; this.ctx.font = fontFamily2; this.ctx.fillStyle = asString(styles.color); this.ctx.textBaseline = "alphabetic"; this.ctx.textAlign = canvasTextAlign(container.styles.textAlign); bounds = contentBox(container); x3 = 0; switch (container.styles.textAlign) { case 1: x3 += bounds.width / 2; break; case 2: x3 += bounds.width; break; } textBounds = bounds.add(x3, 0, 0, -bounds.height / 2 + 1); this.ctx.save(); this.path([ new Vector(bounds.left, bounds.top), new Vector(bounds.left + bounds.width, bounds.top), new Vector(bounds.left + bounds.width, bounds.top + bounds.height), new Vector(bounds.left, bounds.top + bounds.height) ]); this.ctx.clip(); this.renderTextWithLetterSpacing(new TextBounds(container.value, textBounds), styles.letterSpacing, baseline); this.ctx.restore(); this.ctx.textBaseline = "alphabetic"; this.ctx.textAlign = "left"; } if (!contains2( container.styles.display, 2048 /* LIST_ITEM */ )) return [3, 20]; if (!(container.styles.listStyleImage !== null)) return [3, 19]; img = container.styles.listStyleImage; if (!(img.type === 0)) return [3, 18]; image2 = void 0; url = img.url; _c.label = 15; case 15: _c.trys.push([15, 17, , 18]); return [4, this.context.cache.match(url)]; case 16: image2 = _c.sent(); this.ctx.drawImage(image2, container.bounds.left - (image2.width + 10), container.bounds.top); return [3, 18]; case 17: _c.sent(); this.context.logger.error("Error loading list-style-image " + url); return [3, 18]; case 18: return [3, 20]; case 19: if (paint.listValue && container.styles.listStyleType !== -1) { fontFamily2 = this.createFontStyle(styles)[0]; this.ctx.font = fontFamily2; this.ctx.fillStyle = asString(styles.color); this.ctx.textBaseline = "middle"; this.ctx.textAlign = "right"; bounds = new Bounds(container.bounds.left, container.bounds.top + getAbsoluteValue(container.styles.paddingTop, container.bounds.width), container.bounds.width, computeLineHeight(styles.lineHeight, styles.fontSize.number) / 2 + 1); this.renderTextWithLetterSpacing(new TextBounds(paint.listValue, bounds), styles.letterSpacing, computeLineHeight(styles.lineHeight, styles.fontSize.number) / 2 + 2); this.ctx.textBaseline = "bottom"; this.ctx.textAlign = "left"; } _c.label = 20; case 20: return [ 2 /*return*/ ]; } }); }); }; CanvasRenderer2.prototype.renderStackContent = function(stack) { return __awaiter(this, void 0, void 0, function() { var _i, _a, child, _b, _c, child, _d, _e2, child, _f, _g, child, _h, _j, child, _k, _l, child, _m, _o, child; return __generator(this, function(_p) { switch (_p.label) { case 0: if (contains2( stack.element.container.flags, 16 /* DEBUG_RENDER */ )) { debugger; } return [4, this.renderNodeBackgroundAndBorders(stack.element)]; case 1: _p.sent(); _i = 0, _a = stack.negativeZIndex; _p.label = 2; case 2: if (!(_i < _a.length)) return [3, 5]; child = _a[_i]; return [4, this.renderStack(child)]; case 3: _p.sent(); _p.label = 4; case 4: _i++; return [3, 2]; case 5: return [4, this.renderNodeContent(stack.element)]; case 6: _p.sent(); _b = 0, _c = stack.nonInlineLevel; _p.label = 7; case 7: if (!(_b < _c.length)) return [3, 10]; child = _c[_b]; return [4, this.renderNode(child)]; case 8: _p.sent(); _p.label = 9; case 9: _b++; return [3, 7]; case 10: _d = 0, _e2 = stack.nonPositionedFloats; _p.label = 11; case 11: if (!(_d < _e2.length)) return [3, 14]; child = _e2[_d]; return [4, this.renderStack(child)]; case 12: _p.sent(); _p.label = 13; case 13: _d++; return [3, 11]; case 14: _f = 0, _g = stack.nonPositionedInlineLevel; _p.label = 15; case 15: if (!(_f < _g.length)) return [3, 18]; child = _g[_f]; return [4, this.renderStack(child)]; case 16: _p.sent(); _p.label = 17; case 17: _f++; return [3, 15]; case 18: _h = 0, _j = stack.inlineLevel; _p.label = 19; case 19: if (!(_h < _j.length)) return [3, 22]; child = _j[_h]; return [4, this.renderNode(child)]; case 20: _p.sent(); _p.label = 21; case 21: _h++; return [3, 19]; case 22: _k = 0, _l = stack.zeroOrAutoZIndexOrTransformedOrOpacity; _p.label = 23; case 23: if (!(_k < _l.length)) return [3, 26]; child = _l[_k]; return [4, this.renderStack(child)]; case 24: _p.sent(); _p.label = 25; case 25: _k++; return [3, 23]; case 26: _m = 0, _o = stack.positiveZIndex; _p.label = 27; case 27: if (!(_m < _o.length)) return [3, 30]; child = _o[_m]; return [4, this.renderStack(child)]; case 28: _p.sent(); _p.label = 29; case 29: _m++; return [3, 27]; case 30: return [ 2 /*return*/ ]; } }); }); }; CanvasRenderer2.prototype.mask = function(paths) { this.ctx.beginPath(); this.ctx.moveTo(0, 0); this.ctx.lineTo(this.canvas.width, 0); this.ctx.lineTo(this.canvas.width, this.canvas.height); this.ctx.lineTo(0, this.canvas.height); this.ctx.lineTo(0, 0); this.formatPath(paths.slice(0).reverse()); this.ctx.closePath(); }; CanvasRenderer2.prototype.path = function(paths) { this.ctx.beginPath(); this.formatPath(paths); this.ctx.closePath(); }; CanvasRenderer2.prototype.formatPath = function(paths) { var _this = this; paths.forEach(function(point, index) { var start5 = isBezierCurve(point) ? point.start : point; if (index === 0) { _this.ctx.moveTo(start5.x, start5.y); } else { _this.ctx.lineTo(start5.x, start5.y); } if (isBezierCurve(point)) { _this.ctx.bezierCurveTo(point.startControl.x, point.startControl.y, point.endControl.x, point.endControl.y, point.end.x, point.end.y); } }); }; CanvasRenderer2.prototype.renderRepeat = function(path, pattern, offsetX, offsetY) { this.path(path); this.ctx.fillStyle = pattern; this.ctx.translate(offsetX, offsetY); this.ctx.fill(); this.ctx.translate(-offsetX, -offsetY); }; CanvasRenderer2.prototype.resizeImage = function(image2, width, height) { var _a; if (image2.width === width && image2.height === height) { return image2; } var ownerDocument = (_a = this.canvas.ownerDocument) !== null && _a !== void 0 ? _a : document; var canvas = ownerDocument.createElement("canvas"); canvas.width = Math.max(1, width); canvas.height = Math.max(1, height); var ctx = canvas.getContext("2d"); ctx.drawImage(image2, 0, 0, image2.width, image2.height, 0, 0, width, height); return canvas; }; CanvasRenderer2.prototype.renderBackgroundImage = function(container) { return __awaiter(this, void 0, void 0, function() { var index, _loop_1, this_1, _i, _a, backgroundImage2; return __generator(this, function(_b) { switch (_b.label) { case 0: index = container.styles.backgroundImage.length - 1; _loop_1 = function(backgroundImage3) { var image2, url, _c, path, x3, y3, width, height, pattern, _d, path, x3, y3, width, height, _e2, lineLength, x0, x1, y0, y1, canvas, ctx, gradient_1, pattern, _f, path, left2, top_1, width, height, position2, x3, y3, _g, rx, ry, radialGradient_1, midX, midY, f4, invF; return __generator(this, function(_h) { switch (_h.label) { case 0: if (!(backgroundImage3.type === 0)) return [3, 5]; image2 = void 0; url = backgroundImage3.url; _h.label = 1; case 1: _h.trys.push([1, 3, , 4]); return [4, this_1.context.cache.match(url)]; case 2: image2 = _h.sent(); return [3, 4]; case 3: _h.sent(); this_1.context.logger.error("Error loading background-image " + url); return [3, 4]; case 4: if (image2) { _c = calculateBackgroundRendering(container, index, [ image2.width, image2.height, image2.width / image2.height ]), path = _c[0], x3 = _c[1], y3 = _c[2], width = _c[3], height = _c[4]; pattern = this_1.ctx.createPattern(this_1.resizeImage(image2, width, height), "repeat"); this_1.renderRepeat(path, pattern, x3, y3); } return [3, 6]; case 5: if (isLinearGradient(backgroundImage3)) { _d = calculateBackgroundRendering(container, index, [null, null, null]), path = _d[0], x3 = _d[1], y3 = _d[2], width = _d[3], height = _d[4]; _e2 = calculateGradientDirection(backgroundImage3.angle, width, height), lineLength = _e2[0], x0 = _e2[1], x1 = _e2[2], y0 = _e2[3], y1 = _e2[4]; canvas = document.createElement("canvas"); canvas.width = width; canvas.height = height; ctx = canvas.getContext("2d"); gradient_1 = ctx.createLinearGradient(x0, y0, x1, y1); processColorStops(backgroundImage3.stops, lineLength).forEach(function(colorStop) { return gradient_1.addColorStop(colorStop.stop, asString(colorStop.color)); }); ctx.fillStyle = gradient_1; ctx.fillRect(0, 0, width, height); if (width > 0 && height > 0) { pattern = this_1.ctx.createPattern(canvas, "repeat"); this_1.renderRepeat(path, pattern, x3, y3); } } else if (isRadialGradient(backgroundImage3)) { _f = calculateBackgroundRendering(container, index, [ null, null, null ]), path = _f[0], left2 = _f[1], top_1 = _f[2], width = _f[3], height = _f[4]; position2 = backgroundImage3.position.length === 0 ? [FIFTY_PERCENT] : backgroundImage3.position; x3 = getAbsoluteValue(position2[0], width); y3 = getAbsoluteValue(position2[position2.length - 1], height); _g = calculateRadius(backgroundImage3, x3, y3, width, height), rx = _g[0], ry = _g[1]; if (rx > 0 && ry > 0) { radialGradient_1 = this_1.ctx.createRadialGradient(left2 + x3, top_1 + y3, 0, left2 + x3, top_1 + y3, rx); processColorStops(backgroundImage3.stops, rx * 2).forEach(function(colorStop) { return radialGradient_1.addColorStop(colorStop.stop, asString(colorStop.color)); }); this_1.path(path); this_1.ctx.fillStyle = radialGradient_1; if (rx !== ry) { midX = container.bounds.left + 0.5 * container.bounds.width; midY = container.bounds.top + 0.5 * container.bounds.height; f4 = ry / rx; invF = 1 / f4; this_1.ctx.save(); this_1.ctx.translate(midX, midY); this_1.ctx.transform(1, 0, 0, f4, 0, 0); this_1.ctx.translate(-midX, -midY); this_1.ctx.fillRect(left2, invF * (top_1 - midY) + midY, width, height * invF); this_1.ctx.restore(); } else { this_1.ctx.fill(); } } } _h.label = 6; case 6: index--; return [ 2 /*return*/ ]; } }); }; this_1 = this; _i = 0, _a = container.styles.backgroundImage.slice(0).reverse(); _b.label = 1; case 1: if (!(_i < _a.length)) return [3, 4]; backgroundImage2 = _a[_i]; return [5, _loop_1(backgroundImage2)]; case 2: _b.sent(); _b.label = 3; case 3: _i++; return [3, 1]; case 4: return [ 2 /*return*/ ]; } }); }); }; CanvasRenderer2.prototype.renderSolidBorder = function(color2, side, curvePoints) { return __awaiter(this, void 0, void 0, function() { return __generator(this, function(_a) { this.path(parsePathForBorder(curvePoints, side)); this.ctx.fillStyle = asString(color2); this.ctx.fill(); return [ 2 /*return*/ ]; }); }); }; CanvasRenderer2.prototype.renderDoubleBorder = function(color2, width, side, curvePoints) { return __awaiter(this, void 0, void 0, function() { var outerPaths, innerPaths; return __generator(this, function(_a) { switch (_a.label) { case 0: if (!(width < 3)) return [3, 2]; return [4, this.renderSolidBorder(color2, side, curvePoints)]; case 1: _a.sent(); return [ 2 /*return*/ ]; case 2: outerPaths = parsePathForBorderDoubleOuter(curvePoints, side); this.path(outerPaths); this.ctx.fillStyle = asString(color2); this.ctx.fill(); innerPaths = parsePathForBorderDoubleInner(curvePoints, side); this.path(innerPaths); this.ctx.fill(); return [ 2 /*return*/ ]; } }); }); }; CanvasRenderer2.prototype.renderNodeBackgroundAndBorders = function(paint) { return __awaiter(this, void 0, void 0, function() { var styles, hasBackground, borders, backgroundPaintingArea, side, _i, borders_1, border; var _this = this; return __generator(this, function(_a) { switch (_a.label) { case 0: this.applyEffects(paint.getEffects( 2 /* BACKGROUND_BORDERS */ )); styles = paint.container.styles; hasBackground = !isTransparent(styles.backgroundColor) || styles.backgroundImage.length; borders = [ { style: styles.borderTopStyle, color: styles.borderTopColor, width: styles.borderTopWidth }, { style: styles.borderRightStyle, color: styles.borderRightColor, width: styles.borderRightWidth }, { style: styles.borderBottomStyle, color: styles.borderBottomColor, width: styles.borderBottomWidth }, { style: styles.borderLeftStyle, color: styles.borderLeftColor, width: styles.borderLeftWidth } ]; backgroundPaintingArea = calculateBackgroundCurvedPaintingArea(getBackgroundValueForIndex(styles.backgroundClip, 0), paint.curves); if (!(hasBackground || styles.boxShadow.length)) return [3, 2]; this.ctx.save(); this.path(backgroundPaintingArea); this.ctx.clip(); if (!isTransparent(styles.backgroundColor)) { this.ctx.fillStyle = asString(styles.backgroundColor); this.ctx.fill(); } return [4, this.renderBackgroundImage(paint.container)]; case 1: _a.sent(); this.ctx.restore(); styles.boxShadow.slice(0).reverse().forEach(function(shadow) { _this.ctx.save(); var borderBoxArea = calculateBorderBoxPath(paint.curves); var maskOffset = shadow.inset ? 0 : MASK_OFFSET; var shadowPaintingArea = transformPath(borderBoxArea, -maskOffset + (shadow.inset ? 1 : -1) * shadow.spread.number, (shadow.inset ? 1 : -1) * shadow.spread.number, shadow.spread.number * (shadow.inset ? -2 : 2), shadow.spread.number * (shadow.inset ? -2 : 2)); if (shadow.inset) { _this.path(borderBoxArea); _this.ctx.clip(); _this.mask(shadowPaintingArea); } else { _this.mask(borderBoxArea); _this.ctx.clip(); _this.path(shadowPaintingArea); } _this.ctx.shadowOffsetX = shadow.offsetX.number + maskOffset; _this.ctx.shadowOffsetY = shadow.offsetY.number; _this.ctx.shadowColor = asString(shadow.color); _this.ctx.shadowBlur = shadow.blur.number; _this.ctx.fillStyle = shadow.inset ? asString(shadow.color) : "rgba(0,0,0,1)"; _this.ctx.fill(); _this.ctx.restore(); }); _a.label = 2; case 2: side = 0; _i = 0, borders_1 = borders; _a.label = 3; case 3: if (!(_i < borders_1.length)) return [3, 13]; border = borders_1[_i]; if (!(border.style !== 0 && !isTransparent(border.color) && border.width > 0)) return [3, 11]; if (!(border.style === 2)) return [3, 5]; return [4, this.renderDashedDottedBorder( border.color, border.width, side, paint.curves, 2 /* DASHED */ )]; case 4: _a.sent(); return [3, 11]; case 5: if (!(border.style === 3)) return [3, 7]; return [4, this.renderDashedDottedBorder( border.color, border.width, side, paint.curves, 3 /* DOTTED */ )]; case 6: _a.sent(); return [3, 11]; case 7: if (!(border.style === 4)) return [3, 9]; return [4, this.renderDoubleBorder(border.color, border.width, side, paint.curves)]; case 8: _a.sent(); return [3, 11]; case 9: return [4, this.renderSolidBorder(border.color, side, paint.curves)]; case 10: _a.sent(); _a.label = 11; case 11: side++; _a.label = 12; case 12: _i++; return [3, 3]; case 13: return [ 2 /*return*/ ]; } }); }); }; CanvasRenderer2.prototype.renderDashedDottedBorder = function(color2, width, side, curvePoints, style) { return __awaiter(this, void 0, void 0, function() { var strokePaths, boxPaths, startX, startY, endX, endY, length, dashLength, spaceLength, useLineDash, multiplier, numberOfDashes, minSpace, maxSpace, path1, path2, path1, path2; return __generator(this, function(_a) { this.ctx.save(); strokePaths = parsePathForBorderStroke(curvePoints, side); boxPaths = parsePathForBorder(curvePoints, side); if (style === 2) { this.path(boxPaths); this.ctx.clip(); } if (isBezierCurve(boxPaths[0])) { startX = boxPaths[0].start.x; startY = boxPaths[0].start.y; } else { startX = boxPaths[0].x; startY = boxPaths[0].y; } if (isBezierCurve(boxPaths[1])) { endX = boxPaths[1].end.x; endY = boxPaths[1].end.y; } else { endX = boxPaths[1].x; endY = boxPaths[1].y; } if (side === 0 || side === 2) { length = Math.abs(startX - endX); } else { length = Math.abs(startY - endY); } this.ctx.beginPath(); if (style === 3) { this.formatPath(strokePaths); } else { this.formatPath(boxPaths.slice(0, 2)); } dashLength = width < 3 ? width * 3 : width * 2; spaceLength = width < 3 ? width * 2 : width; if (style === 3) { dashLength = width; spaceLength = width; } useLineDash = true; if (length <= dashLength * 2) { useLineDash = false; } else if (length <= dashLength * 2 + spaceLength) { multiplier = length / (2 * dashLength + spaceLength); dashLength *= multiplier; spaceLength *= multiplier; } else { numberOfDashes = Math.floor((length + spaceLength) / (dashLength + spaceLength)); minSpace = (length - numberOfDashes * dashLength) / (numberOfDashes - 1); maxSpace = (length - (numberOfDashes + 1) * dashLength) / numberOfDashes; spaceLength = maxSpace <= 0 || Math.abs(spaceLength - minSpace) < Math.abs(spaceLength - maxSpace) ? minSpace : maxSpace; } if (useLineDash) { if (style === 3) { this.ctx.setLineDash([0, dashLength + spaceLength]); } else { this.ctx.setLineDash([dashLength, spaceLength]); } } if (style === 3) { this.ctx.lineCap = "round"; this.ctx.lineWidth = width; } else { this.ctx.lineWidth = width * 2 + 1.1; } this.ctx.strokeStyle = asString(color2); this.ctx.stroke(); this.ctx.setLineDash([]); if (style === 2) { if (isBezierCurve(boxPaths[0])) { path1 = boxPaths[3]; path2 = boxPaths[0]; this.ctx.beginPath(); this.formatPath([new Vector(path1.end.x, path1.end.y), new Vector(path2.start.x, path2.start.y)]); this.ctx.stroke(); } if (isBezierCurve(boxPaths[1])) { path1 = boxPaths[1]; path2 = boxPaths[2]; this.ctx.beginPath(); this.formatPath([new Vector(path1.end.x, path1.end.y), new Vector(path2.start.x, path2.start.y)]); this.ctx.stroke(); } } this.ctx.restore(); return [ 2 /*return*/ ]; }); }); }; CanvasRenderer2.prototype.render = function(element) { return __awaiter(this, void 0, void 0, function() { var stack; return __generator(this, function(_a) { switch (_a.label) { case 0: if (this.options.backgroundColor) { this.ctx.fillStyle = asString(this.options.backgroundColor); this.ctx.fillRect(this.options.x, this.options.y, this.options.width, this.options.height); } stack = parseStackingContexts(element); return [4, this.renderStack(stack)]; case 1: _a.sent(); this.applyEffects([]); return [2, this.canvas]; } }); }); }; return CanvasRenderer2; }(Renderer2) ); var isTextInputElement = function(container) { if (container instanceof TextareaElementContainer) { return true; } else if (container instanceof SelectElementContainer) { return true; } else if (container instanceof InputElementContainer && container.type !== RADIO && container.type !== CHECKBOX) { return true; } return false; }; var calculateBackgroundCurvedPaintingArea = function(clip, curves) { switch (clip) { case 0: return calculateBorderBoxPath(curves); case 2: return calculateContentBoxPath(curves); case 1: default: return calculatePaddingBoxPath(curves); } }; var canvasTextAlign = function(textAlign2) { switch (textAlign2) { case 1: return "center"; case 2: return "right"; case 0: default: return "left"; } }; var iOSBrokenFonts = ["-apple-system", "system-ui"]; var fixIOSSystemFonts = function(fontFamilies) { return /iPhone OS 15_(0|1)/.test(window.navigator.userAgent) ? fontFamilies.filter(function(fontFamily2) { return iOSBrokenFonts.indexOf(fontFamily2) === -1; }) : fontFamilies; }; var ForeignObjectRenderer = ( /** @class */ function(_super) { __extends(ForeignObjectRenderer2, _super); function ForeignObjectRenderer2(context, options) { var _this = _super.call(this, context, options) || this; _this.canvas = options.canvas ? options.canvas : document.createElement("canvas"); _this.ctx = _this.canvas.getContext("2d"); _this.options = options; _this.canvas.width = Math.floor(options.width * options.scale); _this.canvas.height = Math.floor(options.height * options.scale); _this.canvas.style.width = options.width + "px"; _this.canvas.style.height = options.height + "px"; _this.ctx.scale(_this.options.scale, _this.options.scale); _this.ctx.translate(-options.x, -options.y); _this.context.logger.debug("EXPERIMENTAL ForeignObject renderer initialized (" + options.width + "x" + options.height + " at " + options.x + "," + options.y + ") with scale " + options.scale); return _this; } ForeignObjectRenderer2.prototype.render = function(element) { return __awaiter(this, void 0, void 0, function() { var svg, img; return __generator(this, function(_a) { switch (_a.label) { case 0: svg = createForeignObjectSVG(this.options.width * this.options.scale, this.options.height * this.options.scale, this.options.scale, this.options.scale, element); return [4, loadSerializedSVG(svg)]; case 1: img = _a.sent(); if (this.options.backgroundColor) { this.ctx.fillStyle = asString(this.options.backgroundColor); this.ctx.fillRect(0, 0, this.options.width * this.options.scale, this.options.height * this.options.scale); } this.ctx.drawImage(img, -this.options.x * this.options.scale, -this.options.y * this.options.scale); return [2, this.canvas]; } }); }); }; return ForeignObjectRenderer2; }(Renderer2) ); var loadSerializedSVG = function(svg) { return new Promise(function(resolve, reject) { var img = new Image(); img.onload = function() { resolve(img); }; img.onerror = reject; img.src = "data:image/svg+xml;charset=utf-8," + encodeURIComponent(new XMLSerializer().serializeToString(svg)); }); }; var Logger = ( /** @class */ function() { function Logger2(_a) { var id2 = _a.id, enabled = _a.enabled; this.id = id2; this.enabled = enabled; this.start = Date.now(); } Logger2.prototype.debug = function() { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } if (this.enabled) { if (typeof window !== "undefined" && window.console && typeof console.debug === "function") { console.debug.apply(console, __spreadArray([this.id, this.getTime() + "ms"], args)); } else { this.info.apply(this, args); } } }; Logger2.prototype.getTime = function() { return Date.now() - this.start; }; Logger2.prototype.info = function() { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } if (this.enabled) { if (typeof window !== "undefined" && window.console && typeof console.info === "function") { console.info.apply(console, __spreadArray([this.id, this.getTime() + "ms"], args)); } } }; Logger2.prototype.warn = function() { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } if (this.enabled) { if (typeof window !== "undefined" && window.console && typeof console.warn === "function") { console.warn.apply(console, __spreadArray([this.id, this.getTime() + "ms"], args)); } else { this.info.apply(this, args); } } }; Logger2.prototype.error = function() { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } if (this.enabled) { if (typeof window !== "undefined" && window.console && typeof console.error === "function") { console.error.apply(console, __spreadArray([this.id, this.getTime() + "ms"], args)); } else { this.info.apply(this, args); } } }; Logger2.instances = {}; return Logger2; }() ); var Context = ( /** @class */ function() { function Context2(options, windowBounds) { var _a; this.windowBounds = windowBounds; this.instanceName = "#" + Context2.instanceCount++; this.logger = new Logger({ id: this.instanceName, enabled: options.logging }); this.cache = (_a = options.cache) !== null && _a !== void 0 ? _a : new Cache2(this, options); } Context2.instanceCount = 1; return Context2; }() ); var html2canvas2 = function(element, options) { if (options === void 0) { options = {}; } return renderElement(element, options); }; if (typeof window !== "undefined") { CacheStorage.setContext(window); } var renderElement = function(element, opts) { return __awaiter(void 0, void 0, void 0, function() { var ownerDocument, defaultView, resourceOptions, contextOptions, windowOptions, windowBounds, context, foreignObjectRendering, cloneOptions, documentCloner, clonedElement, container, _a, width, height, left2, top2, backgroundColor2, renderOptions, canvas, renderer, root, renderer; var _b, _c, _d, _e2, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t; return __generator(this, function(_u) { switch (_u.label) { case 0: if (!element || typeof element !== "object") { return [2, Promise.reject("Invalid element provided as first argument")]; } ownerDocument = element.ownerDocument; if (!ownerDocument) { throw new Error("Element is not attached to a Document"); } defaultView = ownerDocument.defaultView; if (!defaultView) { throw new Error("Document is not attached to a Window"); } resourceOptions = { allowTaint: (_b = opts.allowTaint) !== null && _b !== void 0 ? _b : false, imageTimeout: (_c = opts.imageTimeout) !== null && _c !== void 0 ? _c : 15e3, proxy: opts.proxy, useCORS: (_d = opts.useCORS) !== null && _d !== void 0 ? _d : false }; contextOptions = __assign({ logging: (_e2 = opts.logging) !== null && _e2 !== void 0 ? _e2 : true, cache: opts.cache }, resourceOptions); windowOptions = { windowWidth: (_f = opts.windowWidth) !== null && _f !== void 0 ? _f : defaultView.innerWidth, windowHeight: (_g = opts.windowHeight) !== null && _g !== void 0 ? _g : defaultView.innerHeight, scrollX: (_h = opts.scrollX) !== null && _h !== void 0 ? _h : defaultView.pageXOffset, scrollY: (_j = opts.scrollY) !== null && _j !== void 0 ? _j : defaultView.pageYOffset }; windowBounds = new Bounds(windowOptions.scrollX, windowOptions.scrollY, windowOptions.windowWidth, windowOptions.windowHeight); context = new Context(contextOptions, windowBounds); foreignObjectRendering = (_k = opts.foreignObjectRendering) !== null && _k !== void 0 ? _k : false; cloneOptions = { allowTaint: (_l = opts.allowTaint) !== null && _l !== void 0 ? _l : false, onclone: opts.onclone, ignoreElements: opts.ignoreElements, inlineImages: foreignObjectRendering, copyStyles: foreignObjectRendering }; context.logger.debug("Starting document clone with size " + windowBounds.width + "x" + windowBounds.height + " scrolled to " + -windowBounds.left + "," + -windowBounds.top); documentCloner = new DocumentCloner(context, element, cloneOptions); clonedElement = documentCloner.clonedReferenceElement; if (!clonedElement) { return [2, Promise.reject("Unable to find element in cloned iframe")]; } return [4, documentCloner.toIFrame(ownerDocument, windowBounds)]; case 1: container = _u.sent(); _a = isBodyElement(clonedElement) || isHTMLElement2(clonedElement) ? parseDocumentSize(clonedElement.ownerDocument) : parseBounds(context, clonedElement), width = _a.width, height = _a.height, left2 = _a.left, top2 = _a.top; backgroundColor2 = parseBackgroundColor(context, clonedElement, opts.backgroundColor); renderOptions = { canvas: opts.canvas, backgroundColor: backgroundColor2, scale: (_o = (_m = opts.scale) !== null && _m !== void 0 ? _m : defaultView.devicePixelRatio) !== null && _o !== void 0 ? _o : 1, x: ((_p = opts.x) !== null && _p !== void 0 ? _p : 0) + left2, y: ((_q = opts.y) !== null && _q !== void 0 ? _q : 0) + top2, width: (_r = opts.width) !== null && _r !== void 0 ? _r : Math.ceil(width), height: (_s = opts.height) !== null && _s !== void 0 ? _s : Math.ceil(height) }; if (!foreignObjectRendering) return [3, 3]; context.logger.debug("Document cloned, using foreign object rendering"); renderer = new ForeignObjectRenderer(context, renderOptions); return [4, renderer.render(clonedElement)]; case 2: canvas = _u.sent(); return [3, 5]; case 3: context.logger.debug("Document cloned, element located at " + left2 + "," + top2 + " with size " + width + "x" + height + " using computed rendering"); context.logger.debug("Starting DOM parsing"); root = parseTree(context, clonedElement); if (backgroundColor2 === root.styles.backgroundColor) { root.styles.backgroundColor = COLORS.TRANSPARENT; } context.logger.debug("Starting renderer for element at " + renderOptions.x + "," + renderOptions.y + " with size " + renderOptions.width + "x" + renderOptions.height); renderer = new CanvasRenderer(context, renderOptions); return [4, renderer.render(root)]; case 4: canvas = _u.sent(); _u.label = 5; case 5: if ((_t = opts.removeContainer) !== null && _t !== void 0 ? _t : true) { if (!DocumentCloner.destroy(container)) { context.logger.error("Cannot detach cloned iframe as it is not in the DOM anymore"); } } context.logger.debug("Finished rendering"); return [2, canvas]; } }); }); }; var parseBackgroundColor = function(context, element, backgroundColorOverride) { var ownerDocument = element.ownerDocument; var documentBackgroundColor = ownerDocument.documentElement ? parseColor(context, getComputedStyle(ownerDocument.documentElement).backgroundColor) : COLORS.TRANSPARENT; var bodyBackgroundColor = ownerDocument.body ? parseColor(context, getComputedStyle(ownerDocument.body).backgroundColor) : COLORS.TRANSPARENT; var defaultBackgroundColor = typeof backgroundColorOverride === "string" ? parseColor(context, backgroundColorOverride) : backgroundColorOverride === null ? COLORS.TRANSPARENT : 4294967295; return element === ownerDocument.documentElement ? isTransparent(documentBackgroundColor) ? isTransparent(bodyBackgroundColor) ? defaultBackgroundColor : bodyBackgroundColor : documentBackgroundColor : defaultBackgroundColor; }; return html2canvas2; }); } }); // ../../../node_modules/@rails/activestorage/app/assets/javascripts/activestorage.esm.js var sparkMd5 = { exports: {} }; (function(module, exports) { (function(factory) { { module.exports = factory(); } })(function(undefined$1) { var hex_chr = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"]; function md5cycle(x3, k3) { var a3 = x3[0], b3 = x3[1], c3 = x3[2], d3 = x3[3]; a3 += (b3 & c3 | ~b3 & d3) + k3[0] - 680876936 | 0; a3 = (a3 << 7 | a3 >>> 25) + b3 | 0; d3 += (a3 & b3 | ~a3 & c3) + k3[1] - 389564586 | 0; d3 = (d3 << 12 | d3 >>> 20) + a3 | 0; c3 += (d3 & a3 | ~d3 & b3) + k3[2] + 606105819 | 0; c3 = (c3 << 17 | c3 >>> 15) + d3 | 0; b3 += (c3 & d3 | ~c3 & a3) + k3[3] - 1044525330 | 0; b3 = (b3 << 22 | b3 >>> 10) + c3 | 0; a3 += (b3 & c3 | ~b3 & d3) + k3[4] - 176418897 | 0; a3 = (a3 << 7 | a3 >>> 25) + b3 | 0; d3 += (a3 & b3 | ~a3 & c3) + k3[5] + 1200080426 | 0; d3 = (d3 << 12 | d3 >>> 20) + a3 | 0; c3 += (d3 & a3 | ~d3 & b3) + k3[6] - 1473231341 | 0; c3 = (c3 << 17 | c3 >>> 15) + d3 | 0; b3 += (c3 & d3 | ~c3 & a3) + k3[7] - 45705983 | 0; b3 = (b3 << 22 | b3 >>> 10) + c3 | 0; a3 += (b3 & c3 | ~b3 & d3) + k3[8] + 1770035416 | 0; a3 = (a3 << 7 | a3 >>> 25) + b3 | 0; d3 += (a3 & b3 | ~a3 & c3) + k3[9] - 1958414417 | 0; d3 = (d3 << 12 | d3 >>> 20) + a3 | 0; c3 += (d3 & a3 | ~d3 & b3) + k3[10] - 42063 | 0; c3 = (c3 << 17 | c3 >>> 15) + d3 | 0; b3 += (c3 & d3 | ~c3 & a3) + k3[11] - 1990404162 | 0; b3 = (b3 << 22 | b3 >>> 10) + c3 | 0; a3 += (b3 & c3 | ~b3 & d3) + k3[12] + 1804603682 | 0; a3 = (a3 << 7 | a3 >>> 25) + b3 | 0; d3 += (a3 & b3 | ~a3 & c3) + k3[13] - 40341101 | 0; d3 = (d3 << 12 | d3 >>> 20) + a3 | 0; c3 += (d3 & a3 | ~d3 & b3) + k3[14] - 1502002290 | 0; c3 = (c3 << 17 | c3 >>> 15) + d3 | 0; b3 += (c3 & d3 | ~c3 & a3) + k3[15] + 1236535329 | 0; b3 = (b3 << 22 | b3 >>> 10) + c3 | 0; a3 += (b3 & d3 | c3 & ~d3) + k3[1] - 165796510 | 0; a3 = (a3 << 5 | a3 >>> 27) + b3 | 0; d3 += (a3 & c3 | b3 & ~c3) + k3[6] - 1069501632 | 0; d3 = (d3 << 9 | d3 >>> 23) + a3 | 0; c3 += (d3 & b3 | a3 & ~b3) + k3[11] + 643717713 | 0; c3 = (c3 << 14 | c3 >>> 18) + d3 | 0; b3 += (c3 & a3 | d3 & ~a3) + k3[0] - 373897302 | 0; b3 = (b3 << 20 | b3 >>> 12) + c3 | 0; a3 += (b3 & d3 | c3 & ~d3) + k3[5] - 701558691 | 0; a3 = (a3 << 5 | a3 >>> 27) + b3 | 0; d3 += (a3 & c3 | b3 & ~c3) + k3[10] + 38016083 | 0; d3 = (d3 << 9 | d3 >>> 23) + a3 | 0; c3 += (d3 & b3 | a3 & ~b3) + k3[15] - 660478335 | 0; c3 = (c3 << 14 | c3 >>> 18) + d3 | 0; b3 += (c3 & a3 | d3 & ~a3) + k3[4] - 405537848 | 0; b3 = (b3 << 20 | b3 >>> 12) + c3 | 0; a3 += (b3 & d3 | c3 & ~d3) + k3[9] + 568446438 | 0; a3 = (a3 << 5 | a3 >>> 27) + b3 | 0; d3 += (a3 & c3 | b3 & ~c3) + k3[14] - 1019803690 | 0; d3 = (d3 << 9 | d3 >>> 23) + a3 | 0; c3 += (d3 & b3 | a3 & ~b3) + k3[3] - 187363961 | 0; c3 = (c3 << 14 | c3 >>> 18) + d3 | 0; b3 += (c3 & a3 | d3 & ~a3) + k3[8] + 1163531501 | 0; b3 = (b3 << 20 | b3 >>> 12) + c3 | 0; a3 += (b3 & d3 | c3 & ~d3) + k3[13] - 1444681467 | 0; a3 = (a3 << 5 | a3 >>> 27) + b3 | 0; d3 += (a3 & c3 | b3 & ~c3) + k3[2] - 51403784 | 0; d3 = (d3 << 9 | d3 >>> 23) + a3 | 0; c3 += (d3 & b3 | a3 & ~b3) + k3[7] + 1735328473 | 0; c3 = (c3 << 14 | c3 >>> 18) + d3 | 0; b3 += (c3 & a3 | d3 & ~a3) + k3[12] - 1926607734 | 0; b3 = (b3 << 20 | b3 >>> 12) + c3 | 0; a3 += (b3 ^ c3 ^ d3) + k3[5] - 378558 | 0; a3 = (a3 << 4 | a3 >>> 28) + b3 | 0; d3 += (a3 ^ b3 ^ c3) + k3[8] - 2022574463 | 0; d3 = (d3 << 11 | d3 >>> 21) + a3 | 0; c3 += (d3 ^ a3 ^ b3) + k3[11] + 1839030562 | 0; c3 = (c3 << 16 | c3 >>> 16) + d3 | 0; b3 += (c3 ^ d3 ^ a3) + k3[14] - 35309556 | 0; b3 = (b3 << 23 | b3 >>> 9) + c3 | 0; a3 += (b3 ^ c3 ^ d3) + k3[1] - 1530992060 | 0; a3 = (a3 << 4 | a3 >>> 28) + b3 | 0; d3 += (a3 ^ b3 ^ c3) + k3[4] + 1272893353 | 0; d3 = (d3 << 11 | d3 >>> 21) + a3 | 0; c3 += (d3 ^ a3 ^ b3) + k3[7] - 155497632 | 0; c3 = (c3 << 16 | c3 >>> 16) + d3 | 0; b3 += (c3 ^ d3 ^ a3) + k3[10] - 1094730640 | 0; b3 = (b3 << 23 | b3 >>> 9) + c3 | 0; a3 += (b3 ^ c3 ^ d3) + k3[13] + 681279174 | 0; a3 = (a3 << 4 | a3 >>> 28) + b3 | 0; d3 += (a3 ^ b3 ^ c3) + k3[0] - 358537222 | 0; d3 = (d3 << 11 | d3 >>> 21) + a3 | 0; c3 += (d3 ^ a3 ^ b3) + k3[3] - 722521979 | 0; c3 = (c3 << 16 | c3 >>> 16) + d3 | 0; b3 += (c3 ^ d3 ^ a3) + k3[6] + 76029189 | 0; b3 = (b3 << 23 | b3 >>> 9) + c3 | 0; a3 += (b3 ^ c3 ^ d3) + k3[9] - 640364487 | 0; a3 = (a3 << 4 | a3 >>> 28) + b3 | 0; d3 += (a3 ^ b3 ^ c3) + k3[12] - 421815835 | 0; d3 = (d3 << 11 | d3 >>> 21) + a3 | 0; c3 += (d3 ^ a3 ^ b3) + k3[15] + 530742520 | 0; c3 = (c3 << 16 | c3 >>> 16) + d3 | 0; b3 += (c3 ^ d3 ^ a3) + k3[2] - 995338651 | 0; b3 = (b3 << 23 | b3 >>> 9) + c3 | 0; a3 += (c3 ^ (b3 | ~d3)) + k3[0] - 198630844 | 0; a3 = (a3 << 6 | a3 >>> 26) + b3 | 0; d3 += (b3 ^ (a3 | ~c3)) + k3[7] + 1126891415 | 0; d3 = (d3 << 10 | d3 >>> 22) + a3 | 0; c3 += (a3 ^ (d3 | ~b3)) + k3[14] - 1416354905 | 0; c3 = (c3 << 15 | c3 >>> 17) + d3 | 0; b3 += (d3 ^ (c3 | ~a3)) + k3[5] - 57434055 | 0; b3 = (b3 << 21 | b3 >>> 11) + c3 | 0; a3 += (c3 ^ (b3 | ~d3)) + k3[12] + 1700485571 | 0; a3 = (a3 << 6 | a3 >>> 26) + b3 | 0; d3 += (b3 ^ (a3 | ~c3)) + k3[3] - 1894986606 | 0; d3 = (d3 << 10 | d3 >>> 22) + a3 | 0; c3 += (a3 ^ (d3 | ~b3)) + k3[10] - 1051523 | 0; c3 = (c3 << 15 | c3 >>> 17) + d3 | 0; b3 += (d3 ^ (c3 | ~a3)) + k3[1] - 2054922799 | 0; b3 = (b3 << 21 | b3 >>> 11) + c3 | 0; a3 += (c3 ^ (b3 | ~d3)) + k3[8] + 1873313359 | 0; a3 = (a3 << 6 | a3 >>> 26) + b3 | 0; d3 += (b3 ^ (a3 | ~c3)) + k3[15] - 30611744 | 0; d3 = (d3 << 10 | d3 >>> 22) + a3 | 0; c3 += (a3 ^ (d3 | ~b3)) + k3[6] - 1560198380 | 0; c3 = (c3 << 15 | c3 >>> 17) + d3 | 0; b3 += (d3 ^ (c3 | ~a3)) + k3[13] + 1309151649 | 0; b3 = (b3 << 21 | b3 >>> 11) + c3 | 0; a3 += (c3 ^ (b3 | ~d3)) + k3[4] - 145523070 | 0; a3 = (a3 << 6 | a3 >>> 26) + b3 | 0; d3 += (b3 ^ (a3 | ~c3)) + k3[11] - 1120210379 | 0; d3 = (d3 << 10 | d3 >>> 22) + a3 | 0; c3 += (a3 ^ (d3 | ~b3)) + k3[2] + 718787259 | 0; c3 = (c3 << 15 | c3 >>> 17) + d3 | 0; b3 += (d3 ^ (c3 | ~a3)) + k3[9] - 343485551 | 0; b3 = (b3 << 21 | b3 >>> 11) + c3 | 0; x3[0] = a3 + x3[0] | 0; x3[1] = b3 + x3[1] | 0; x3[2] = c3 + x3[2] | 0; x3[3] = d3 + x3[3] | 0; } function md5blk(s3) { var md5blks = [], i3; for (i3 = 0; i3 < 64; i3 += 4) { md5blks[i3 >> 2] = s3.charCodeAt(i3) + (s3.charCodeAt(i3 + 1) << 8) + (s3.charCodeAt(i3 + 2) << 16) + (s3.charCodeAt(i3 + 3) << 24); } return md5blks; } function md5blk_array(a3) { var md5blks = [], i3; for (i3 = 0; i3 < 64; i3 += 4) { md5blks[i3 >> 2] = a3[i3] + (a3[i3 + 1] << 8) + (a3[i3 + 2] << 16) + (a3[i3 + 3] << 24); } return md5blks; } function md51(s3) { var n3 = s3.length, state = [1732584193, -271733879, -1732584194, 271733878], i3, length, tail, tmp, lo, hi; for (i3 = 64; i3 <= n3; i3 += 64) { md5cycle(state, md5blk(s3.substring(i3 - 64, i3))); } s3 = s3.substring(i3 - 64); length = s3.length; tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; for (i3 = 0; i3 < length; i3 += 1) { tail[i3 >> 2] |= s3.charCodeAt(i3) << (i3 % 4 << 3); } tail[i3 >> 2] |= 128 << (i3 % 4 << 3); if (i3 > 55) { md5cycle(state, tail); for (i3 = 0; i3 < 16; i3 += 1) { tail[i3] = 0; } } tmp = n3 * 8; tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/); lo = parseInt(tmp[2], 16); hi = parseInt(tmp[1], 16) || 0; tail[14] = lo; tail[15] = hi; md5cycle(state, tail); return state; } function md51_array(a3) { var n3 = a3.length, state = [1732584193, -271733879, -1732584194, 271733878], i3, length, tail, tmp, lo, hi; for (i3 = 64; i3 <= n3; i3 += 64) { md5cycle(state, md5blk_array(a3.subarray(i3 - 64, i3))); } a3 = i3 - 64 < n3 ? a3.subarray(i3 - 64) : new Uint8Array(0); length = a3.length; tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; for (i3 = 0; i3 < length; i3 += 1) { tail[i3 >> 2] |= a3[i3] << (i3 % 4 << 3); } tail[i3 >> 2] |= 128 << (i3 % 4 << 3); if (i3 > 55) { md5cycle(state, tail); for (i3 = 0; i3 < 16; i3 += 1) { tail[i3] = 0; } } tmp = n3 * 8; tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/); lo = parseInt(tmp[2], 16); hi = parseInt(tmp[1], 16) || 0; tail[14] = lo; tail[15] = hi; md5cycle(state, tail); return state; } function rhex(n3) { var s3 = "", j3; for (j3 = 0; j3 < 4; j3 += 1) { s3 += hex_chr[n3 >> j3 * 8 + 4 & 15] + hex_chr[n3 >> j3 * 8 & 15]; } return s3; } function hex(x3) { var i3; for (i3 = 0; i3 < x3.length; i3 += 1) { x3[i3] = rhex(x3[i3]); } return x3.join(""); } if (hex(md51("hello")) !== "5d41402abc4b2a76b9719d911017c592") ; if (typeof ArrayBuffer !== "undefined" && !ArrayBuffer.prototype.slice) { (function() { function clamp2(val, length) { val = val | 0 || 0; if (val < 0) { return Math.max(val + length, 0); } return Math.min(val, length); } ArrayBuffer.prototype.slice = function(from, to) { var length = this.byteLength, begin = clamp2(from, length), end2 = length, num, target, targetArray, sourceArray; if (to !== undefined$1) { end2 = clamp2(to, length); } if (begin > end2) { return new ArrayBuffer(0); } num = end2 - begin; target = new ArrayBuffer(num); targetArray = new Uint8Array(target); sourceArray = new Uint8Array(this, begin, num); targetArray.set(sourceArray); return target; }; })(); } function toUtf8(str) { if (/[\u0080-\uFFFF]/.test(str)) { str = unescape(encodeURIComponent(str)); } return str; } function utf8Str2ArrayBuffer(str, returnUInt8Array) { var length = str.length, buff = new ArrayBuffer(length), arr = new Uint8Array(buff), i3; for (i3 = 0; i3 < length; i3 += 1) { arr[i3] = str.charCodeAt(i3); } return returnUInt8Array ? arr : buff; } function arrayBuffer2Utf8Str(buff) { return String.fromCharCode.apply(null, new Uint8Array(buff)); } function concatenateArrayBuffers(first, second, returnUInt8Array) { var result = new Uint8Array(first.byteLength + second.byteLength); result.set(new Uint8Array(first)); result.set(new Uint8Array(second), first.byteLength); return returnUInt8Array ? result : result.buffer; } function hexToBinaryString(hex2) { var bytes = [], length = hex2.length, x3; for (x3 = 0; x3 < length - 1; x3 += 2) { bytes.push(parseInt(hex2.substr(x3, 2), 16)); } return String.fromCharCode.apply(String, bytes); } function SparkMD52() { this.reset(); } SparkMD52.prototype.append = function(str) { this.appendBinary(toUtf8(str)); return this; }; SparkMD52.prototype.appendBinary = function(contents) { this._buff += contents; this._length += contents.length; var length = this._buff.length, i3; for (i3 = 64; i3 <= length; i3 += 64) { md5cycle(this._hash, md5blk(this._buff.substring(i3 - 64, i3))); } this._buff = this._buff.substring(i3 - 64); return this; }; SparkMD52.prototype.end = function(raw2) { var buff = this._buff, length = buff.length, i3, tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], ret; for (i3 = 0; i3 < length; i3 += 1) { tail[i3 >> 2] |= buff.charCodeAt(i3) << (i3 % 4 << 3); } this._finish(tail, length); ret = hex(this._hash); if (raw2) { ret = hexToBinaryString(ret); } this.reset(); return ret; }; SparkMD52.prototype.reset = function() { this._buff = ""; this._length = 0; this._hash = [1732584193, -271733879, -1732584194, 271733878]; return this; }; SparkMD52.prototype.getState = function() { return { buff: this._buff, length: this._length, hash: this._hash.slice() }; }; SparkMD52.prototype.setState = function(state) { this._buff = state.buff; this._length = state.length; this._hash = state.hash; return this; }; SparkMD52.prototype.destroy = function() { delete this._hash; delete this._buff; delete this._length; }; SparkMD52.prototype._finish = function(tail, length) { var i3 = length, tmp, lo, hi; tail[i3 >> 2] |= 128 << (i3 % 4 << 3); if (i3 > 55) { md5cycle(this._hash, tail); for (i3 = 0; i3 < 16; i3 += 1) { tail[i3] = 0; } } tmp = this._length * 8; tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/); lo = parseInt(tmp[2], 16); hi = parseInt(tmp[1], 16) || 0; tail[14] = lo; tail[15] = hi; md5cycle(this._hash, tail); }; SparkMD52.hash = function(str, raw2) { return SparkMD52.hashBinary(toUtf8(str), raw2); }; SparkMD52.hashBinary = function(content2, raw2) { var hash3 = md51(content2), ret = hex(hash3); return raw2 ? hexToBinaryString(ret) : ret; }; SparkMD52.ArrayBuffer = function() { this.reset(); }; SparkMD52.ArrayBuffer.prototype.append = function(arr) { var buff = concatenateArrayBuffers(this._buff.buffer, arr, true), length = buff.length, i3; this._length += arr.byteLength; for (i3 = 64; i3 <= length; i3 += 64) { md5cycle(this._hash, md5blk_array(buff.subarray(i3 - 64, i3))); } this._buff = i3 - 64 < length ? new Uint8Array(buff.buffer.slice(i3 - 64)) : new Uint8Array(0); return this; }; SparkMD52.ArrayBuffer.prototype.end = function(raw2) { var buff = this._buff, length = buff.length, tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], i3, ret; for (i3 = 0; i3 < length; i3 += 1) { tail[i3 >> 2] |= buff[i3] << (i3 % 4 << 3); } this._finish(tail, length); ret = hex(this._hash); if (raw2) { ret = hexToBinaryString(ret); } this.reset(); return ret; }; SparkMD52.ArrayBuffer.prototype.reset = function() { this._buff = new Uint8Array(0); this._length = 0; this._hash = [1732584193, -271733879, -1732584194, 271733878]; return this; }; SparkMD52.ArrayBuffer.prototype.getState = function() { var state = SparkMD52.prototype.getState.call(this); state.buff = arrayBuffer2Utf8Str(state.buff); return state; }; SparkMD52.ArrayBuffer.prototype.setState = function(state) { state.buff = utf8Str2ArrayBuffer(state.buff, true); return SparkMD52.prototype.setState.call(this, state); }; SparkMD52.ArrayBuffer.prototype.destroy = SparkMD52.prototype.destroy; SparkMD52.ArrayBuffer.prototype._finish = SparkMD52.prototype._finish; SparkMD52.ArrayBuffer.hash = function(arr, raw2) { var hash3 = md51_array(new Uint8Array(arr)), ret = hex(hash3); return raw2 ? hexToBinaryString(ret) : ret; }; return SparkMD52; }); })(sparkMd5); var SparkMD5 = sparkMd5.exports; var fileSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice; var FileChecksum = class { static create(file, callback) { const instance = new FileChecksum(file); instance.create(callback); } constructor(file) { this.file = file; this.chunkSize = 2097152; this.chunkCount = Math.ceil(this.file.size / this.chunkSize); this.chunkIndex = 0; } create(callback) { this.callback = callback; this.md5Buffer = new SparkMD5.ArrayBuffer(); this.fileReader = new FileReader(); this.fileReader.addEventListener("load", (event) => this.fileReaderDidLoad(event)); this.fileReader.addEventListener("error", (event) => this.fileReaderDidError(event)); this.readNextChunk(); } fileReaderDidLoad(event) { this.md5Buffer.append(event.target.result); if (!this.readNextChunk()) { const binaryDigest = this.md5Buffer.end(true); const base64digest = btoa(binaryDigest); this.callback(null, base64digest); } } fileReaderDidError(event) { this.callback(`Error reading ${this.file.name}`); } readNextChunk() { if (this.chunkIndex < this.chunkCount || this.chunkIndex == 0 && this.chunkCount == 0) { const start5 = this.chunkIndex * this.chunkSize; const end2 = Math.min(start5 + this.chunkSize, this.file.size); const bytes = fileSlice.call(this.file, start5, end2); this.fileReader.readAsArrayBuffer(bytes); this.chunkIndex++; return true; } else { return false; } } }; function getMetaValue(name) { const element = findElement(document.head, `meta[name="${name}"]`); if (element) { return element.getAttribute("content"); } } function findElements(root, selector) { if (typeof root == "string") { selector = root; root = document; } const elements = root.querySelectorAll(selector); return toArray(elements); } function findElement(root, selector) { if (typeof root == "string") { selector = root; root = document; } return root.querySelector(selector); } function dispatchEvent2(element, type, eventInit = {}) { const { disabled } = element; const { bubbles, cancelable, detail } = eventInit; const event = document.createEvent("Event"); event.initEvent(type, bubbles || true, cancelable || true); event.detail = detail || {}; try { element.disabled = false; element.dispatchEvent(event); } finally { element.disabled = disabled; } return event; } function toArray(value) { if (Array.isArray(value)) { return value; } else if (Array.from) { return Array.from(value); } else { return [].slice.call(value); } } var BlobRecord = class { constructor(file, checksum, url) { this.file = file; this.attributes = { filename: file.name, content_type: file.type || "application/octet-stream", byte_size: file.size, checksum }; this.xhr = new XMLHttpRequest(); this.xhr.open("POST", url, true); this.xhr.responseType = "json"; this.xhr.setRequestHeader("Content-Type", "application/json"); this.xhr.setRequestHeader("Accept", "application/json"); this.xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest"); const csrfToken = getMetaValue("csrf-token"); if (csrfToken != void 0) { this.xhr.setRequestHeader("X-CSRF-Token", csrfToken); } this.xhr.addEventListener("load", (event) => this.requestDidLoad(event)); this.xhr.addEventListener("error", (event) => this.requestDidError(event)); } get status() { return this.xhr.status; } get response() { const { responseType, response } = this.xhr; if (responseType == "json") { return response; } else { return JSON.parse(response); } } create(callback) { this.callback = callback; this.xhr.send(JSON.stringify({ blob: this.attributes })); } requestDidLoad(event) { if (this.status >= 200 && this.status < 300) { const { response } = this; const { direct_upload } = response; delete response.direct_upload; this.attributes = response; this.directUploadData = direct_upload; this.callback(null, this.toJSON()); } else { this.requestDidError(event); } } requestDidError(event) { this.callback(`Error creating Blob for "${this.file.name}". Status: ${this.status}`); } toJSON() { const result = {}; for (const key in this.attributes) { result[key] = this.attributes[key]; } return result; } }; var BlobUpload = class { constructor(blob) { this.blob = blob; this.file = blob.file; const { url, headers } = blob.directUploadData; this.xhr = new XMLHttpRequest(); this.xhr.open("PUT", url, true); this.xhr.responseType = "text"; for (const key in headers) { this.xhr.setRequestHeader(key, headers[key]); } this.xhr.addEventListener("load", (event) => this.requestDidLoad(event)); this.xhr.addEventListener("error", (event) => this.requestDidError(event)); } create(callback) { this.callback = callback; this.xhr.send(this.file.slice()); } requestDidLoad(event) { const { status, response } = this.xhr; if (status >= 200 && status < 300) { this.callback(null, response); } else { this.requestDidError(event); } } requestDidError(event) { this.callback(`Error storing "${this.file.name}". Status: ${this.xhr.status}`); } }; var id = 0; var DirectUpload = class { constructor(file, url, delegate) { this.id = ++id; this.file = file; this.url = url; this.delegate = delegate; } create(callback) { FileChecksum.create(this.file, (error2, checksum) => { if (error2) { callback(error2); return; } const blob = new BlobRecord(this.file, checksum, this.url); notify(this.delegate, "directUploadWillCreateBlobWithXHR", blob.xhr); blob.create((error3) => { if (error3) { callback(error3); } else { const upload = new BlobUpload(blob); notify(this.delegate, "directUploadWillStoreFileWithXHR", upload.xhr); upload.create((error4) => { if (error4) { callback(error4); } else { callback(null, blob.toJSON()); } }); } }); }); } }; function notify(object, methodName, ...messages) { if (object && typeof object[methodName] == "function") { return object[methodName](...messages); } } var DirectUploadController = class { constructor(input, file) { this.input = input; this.file = file; this.directUpload = new DirectUpload(this.file, this.url, this); this.dispatch("initialize"); } start(callback) { const hiddenInput = document.createElement("input"); hiddenInput.type = "hidden"; hiddenInput.name = this.input.name; this.input.insertAdjacentElement("beforebegin", hiddenInput); this.dispatch("start"); this.directUpload.create((error2, attributes) => { if (error2) { hiddenInput.parentNode.removeChild(hiddenInput); this.dispatchError(error2); } else { hiddenInput.value = attributes.signed_id; } this.dispatch("end"); callback(error2); }); } uploadRequestDidProgress(event) { const progress = event.loaded / event.total * 100; if (progress) { this.dispatch("progress", { progress }); } } get url() { return this.input.getAttribute("data-direct-upload-url"); } dispatch(name, detail = {}) { detail.file = this.file; detail.id = this.directUpload.id; return dispatchEvent2(this.input, `direct-upload:${name}`, { detail }); } dispatchError(error2) { const event = this.dispatch("error", { error: error2 }); if (!event.defaultPrevented) { alert(error2); } } directUploadWillCreateBlobWithXHR(xhr) { this.dispatch("before-blob-request", { xhr }); } directUploadWillStoreFileWithXHR(xhr) { this.dispatch("before-storage-request", { xhr }); xhr.upload.addEventListener("progress", (event) => this.uploadRequestDidProgress(event)); } }; var inputSelector = "input[type=file][data-direct-upload-url]:not([disabled])"; var DirectUploadsController = class { constructor(form) { this.form = form; this.inputs = findElements(form, inputSelector).filter((input) => input.files.length); } start(callback) { const controllers = this.createDirectUploadControllers(); const startNextController = () => { const controller = controllers.shift(); if (controller) { controller.start((error2) => { if (error2) { callback(error2); this.dispatch("end"); } else { startNextController(); } }); } else { callback(); this.dispatch("end"); } }; this.dispatch("start"); startNextController(); } createDirectUploadControllers() { const controllers = []; this.inputs.forEach((input) => { toArray(input.files).forEach((file) => { const controller = new DirectUploadController(input, file); controllers.push(controller); }); }); return controllers; } dispatch(name, detail = {}) { return dispatchEvent2(this.form, `direct-uploads:${name}`, { detail }); } }; var processingAttribute = "data-direct-uploads-processing"; var submitButtonsByForm = /* @__PURE__ */ new WeakMap(); var started = false; function start() { if (!started) { started = true; document.addEventListener("click", didClick, true); document.addEventListener("submit", didSubmitForm, true); document.addEventListener("ajax:before", didSubmitRemoteElement); } } function didClick(event) { const { target } = event; if ((target.tagName == "INPUT" || target.tagName == "BUTTON") && target.type == "submit" && target.form) { submitButtonsByForm.set(target.form, target); } } function didSubmitForm(event) { handleFormSubmissionEvent(event); } function didSubmitRemoteElement(event) { if (event.target.tagName == "FORM") { handleFormSubmissionEvent(event); } } function handleFormSubmissionEvent(event) { const form = event.target; if (form.hasAttribute(processingAttribute)) { event.preventDefault(); return; } const controller = new DirectUploadsController(form); const { inputs } = controller; if (inputs.length) { event.preventDefault(); form.setAttribute(processingAttribute, ""); inputs.forEach(disable); controller.start((error2) => { form.removeAttribute(processingAttribute); if (error2) { inputs.forEach(enable); } else { submitForm(form); } }); } } function submitForm(form) { let button = submitButtonsByForm.get(form) || findElement(form, "input[type=submit], button[type=submit]"); if (button) { const { disabled } = button; button.disabled = false; button.focus(); button.click(); button.disabled = disabled; } else { button = document.createElement("input"); button.type = "submit"; button.style.display = "none"; form.appendChild(button); button.click(); form.removeChild(button); } submitButtonsByForm.delete(form); } function disable(input) { input.disabled = true; } function enable(input) { input.disabled = false; } function autostart() { if (window.ActiveStorage) { start(); } } setTimeout(autostart, 1); // ../../../node_modules/container-query-polyfill/dist/container-query-polyfill.modern.js function e() { return e = Object.assign ? Object.assign.bind() : function(e3) { for (var t3 = 1; t3 < arguments.length; t3++) { var n3 = arguments[t3]; for (var r3 in n3) Object.prototype.hasOwnProperty.call(n3, r3) && (e3[r3] = n3[r3]); } return e3; }, e.apply(this, arguments); } function t(e3, t3) { const n3 = t3.width, r3 = t3.height, u3 = t3.inlineSize, o3 = t3.blockSize; switch (e3) { case 1: return null != n3 ? { type: 3, value: n3, unit: "px" } : { type: 1 }; case 3: return null != u3 ? { type: 3, value: u3, unit: "px" } : { type: 1 }; case 2: return null != r3 ? { type: 3, value: r3, unit: "px" } : { type: 1 }; case 4: return null != o3 ? { type: 3, value: o3, unit: "px" } : { type: 1 }; case 5: return null != n3 && null != r3 && r3 > 0 ? { type: 2, value: n3 / r3 } : { type: 1 }; case 6: return null != n3 && null != r3 ? { type: 4, value: r3 >= n3 ? "portrait" : "landscape" } : { type: 1 }; } } function n(e3, t3) { switch (e3.type) { case 1: case 2: case 3: case 4: return i(e3, t3); case 5: { const n3 = t3.sizeFeatures.get(e3.feature); return null == n3 ? { type: 1 } : n3; } case 6: return e3.value; } } function r(e3) { return { type: 5, value: e3 }; } function u(e3, t3, n3) { return r(function(e4, t4, n4) { switch (n4) { case 1: return e4 === t4; case 2: return e4 > t4; case 3: return e4 >= t4; case 4: return e4 < t4; case 5: return e4 <= t4; } }(e3, t3, n3)); } function o(e3, t3, n3) { return null == e3 ? t3 : null == t3 ? e3 : n3(e3, t3); } function s(e3, t3) { switch (e3) { case "cqw": return t3.cqw; case "cqh": return t3.cqh; case "cqi": return 0 === t3.writingAxis ? t3.cqw : t3.cqh; case "cqb": return 1 === t3.writingAxis ? t3.cqw : t3.cqh; case "cqmin": return o(s("cqi", t3), s("cqb", t3), Math.min); case "cqmax": return o(s("cqi", t3), s("cqb", t3), Math.max); } } function l(e3, { treeContext: t3 }) { switch (e3.unit) { case "px": return e3.value; case "rem": return e3.value * t3.rootFontSize; case "em": return e3.value * t3.fontSize; case "cqw": case "cqh": case "cqi": case "cqb": case "cqmin": case "cqmax": return o(e3.value, s(e3.unit, t3), (e4, t4) => e4 * t4); } return null; } function c(e3, t3) { switch (e3.type) { case 2: return 0 === e3.value ? 0 : null; case 3: return l(e3, t3); } return null; } function i(e3, t3) { switch (e3.type) { case 4: return function(e4, t4) { const o3 = n(e4.left, t4), s3 = n(e4.right, t4), l3 = e4.operator; if (4 === o3.type && 4 === s3.type || 5 === o3.type && 5 === s3.type) return function(e5, t5, n3) { return 1 === n3 ? r(e5.value === t5.value) : { type: 1 }; }(o3, s3, l3); if (3 === o3.type || 3 === s3.type) { const e5 = c(o3, t4), n3 = c(s3, t4); if (null != e5 && null != n3) return u(e5, n3, l3); } else if (2 === o3.type && 2 === s3.type) return u(o3.value, s3.value, l3); return { type: 1 }; }(e3, t3); case 2: return function(e4, t4) { const n3 = i(e4.left, t4); return 5 !== n3.type || true !== n3.value ? n3 : i(e4.right, t4); }(e3, t3); case 3: return function(e4, t4) { const n3 = i(e4.left, t4); return 5 === n3.type && true === n3.value ? n3 : i(e4.right, t4); }(e3, t3); case 1: { const n3 = i(e3.value, t3); return 5 === n3.type ? { type: 5, value: !n3.value } : { type: 1 }; } case 5: return a(n(e3, t3)); case 6: return a(e3.value); } } function a(e3) { switch (e3.type) { case 5: return e3; case 2: case 3: return { type: 5, value: e3.value > 0 }; } return { type: 1 }; } var f = Array.from({ length: 4 }, () => Math.floor(256 * Math.random()).toString(16)).join(""); var p = S("container"); var y = S("container-type"); var h = S("container-name"); var v = `data-cqs-${f}`; var d = `data-cqc-${f}`; var m = S("cqw"); var w = S("cqh"); var g = S("cqi"); var b = S("cqb"); function S(e3) { return `--cq-${e3}-${f}`; } var x = Symbol(); function q(e3, t3) { const n3 = { value: t3, errorIndices: [], index: -1, at(r3) { const u3 = n3.index + r3; return u3 >= e3.length ? t3 : e3[u3]; }, consume: (e4) => (n3.index += e4, n3.value = n3.at(0), n3.value), reconsume() { n3.index -= 1; }, error() { n3.errorIndices.push(n3.index); } }; return n3; } function C(e3) { return q(e3, { type: 0 }); } function* $(e3) { const t3 = []; let n3 = false; for (const r4 of e3) { const e4 = r4.codePointAt(0); n3 && 10 !== e4 && (n3 = false, t3.push(10)), 0 === e4 || e4 >= 55296 && e4 <= 57343 ? t3.push(65533) : 13 === e4 ? n3 = true : t3.push(e4); } const r3 = q(t3, -1), { at: u3, consume: o3, error: s3, reconsume: l3 } = r3; function c3() { return String.fromCodePoint(r3.value); } function i3() { return { type: 13, value: c3() }; } function a3() { for (; z(u3(1)); ) o3(1); } function f3() { for (; -1 !== r3.value; ) if (o3(1), 42 === u3(0) && 47 === u3(1)) return void o3(1); s3(); } function p2() { const [e4, t4] = function() { let e5 = 0, t5 = "", n5 = u3(1); for (43 !== n5 && 45 !== n5 || (o3(1), t5 += c3()); k(u3(1)); ) o3(1), t5 += c3(); if (46 === u3(1) && k(u3(2))) for (e5 = 1, o3(1), t5 += c3(); k(u3(1)); ) o3(1), t5 += c3(); if (n5 = u3(1), 69 === n5 || 101 === n5) { const n6 = u3(2); if (k(n6)) for (e5 = 1, o3(1), t5 += c3(); k(u3(1)); ) o3(1), t5 += c3(); else if ((45 === n6 || 43 === n6) && k(u3(3))) for (e5 = 1, o3(1), t5 += c3(), o3(1), t5 += c3(); k(u3(1)); ) o3(1), t5 += c3(); } return [t5, e5]; }(), n4 = u3(1); return d3(n4, u3(1), u3(2)) ? { type: 15, value: e4, flag: t4, unit: w3() } : 37 === n4 ? (o3(1), { type: 16, value: e4 }) : { type: 17, value: e4, flag: t4 }; } function y3() { const e4 = w3(); let t4 = u3(1); if ("url" === e4.toLowerCase() && 40 === t4) { for (o3(1); z(u3(1)) && z(u3(2)); ) o3(1); t4 = u3(1); const n4 = u3(2); return 34 === t4 || 39 === t4 ? { type: 23, value: e4 } : !z(t4) || 34 !== n4 && 39 !== n4 ? function() { let e5 = ""; for (a3(); ; ) { const n5 = o3(1); if (41 === n5) return { type: 20, value: e5 }; if (-1 === n5) return s3(), { type: 20, value: e5 }; if (z(n5)) { a3(); const t6 = u3(1); return 41 === t6 || -1 === t6 ? (o3(1), -1 === n5 && s3(), { type: 20, value: e5 }) : (g3(), { type: 21 }); } if (34 === n5 || 39 === n5 || 40 === n5 || (t5 = n5) >= 0 && t5 <= 8 || 11 === t5 || t5 >= 14 && t5 <= 31 || 127 === t5) return s3(), g3(), { type: 21 }; if (92 === n5) { if (!j(n5, u3(1))) return s3(), { type: 21 }; e5 += v3(); } else e5 += c3(); } var t5; }() : { type: 23, value: e4 }; } return 40 === t4 ? (o3(1), { type: 23, value: e4 }) : { type: 24, value: e4 }; } function h3(e4) { let t4 = ""; for (; ; ) { const n4 = o3(1); if (-1 === n4 || n4 === e4) return -1 === n4 && s3(), { type: 2, value: t4 }; if (E(n4)) return s3(), l3(), { type: 3 }; if (92 === n4) { const e5 = u3(1); if (-1 === e5) continue; E(e5) ? o3(1) : t4 += v3(); } else t4 += c3(); } } function v3() { const e4 = o3(1); if (A(e4)) { const t4 = [e4]; for (let e5 = 0; e5 < 5; e5++) { const e6 = u3(1); if (!A(e6)) break; t4.push(e6), o3(1); } z(u3(1)) && o3(1); let n4 = parseInt(String.fromCodePoint(...t4), 16); return (0 === n4 || n4 >= 55296 && n4 <= 57343 || n4 > 1114111) && (n4 = 65533), String.fromCodePoint(n4); } return -1 === e4 ? (s3(), String.fromCodePoint(65533)) : c3(); } function d3(e4, t4, n4) { return 45 === e4 ? L(t4) || 45 === t4 || j(t4, n4) : !!L(e4); } function m3(e4, t4, n4) { return 43 === e4 || 45 === e4 ? k(t4) || 46 === t4 && k(n4) : !(46 !== e4 || !k(t4)) || !!k(e4); } function w3() { let e4 = ""; for (; ; ) { const t4 = o3(1); if (M(t4)) e4 += c3(); else { if (!j(t4, u3(1))) return l3(), e4; e4 += v3(); } } } function g3() { for (; ; ) { const e4 = o3(1); if (-1 === e4) return; j(e4, u3(1)) && v3(); } } for (; ; ) { const e4 = o3(1); if (47 === e4 && 42 === u3(1)) o3(2), f3(); else if (z(e4)) a3(), yield { type: 1 }; else if (34 === e4) yield h3(e4); else if (35 === e4) { const e5 = u3(1); M(e5) || j(e5, u3(2)) ? yield { type: 14, flag: d3(u3(1), u3(2), u3(3)) ? 1 : 0, value: w3() } : yield i3(); } else if (39 === e4) yield h3(e4); else if (40 === e4) yield { type: 4 }; else if (41 === e4) yield { type: 5 }; else if (43 === e4) m3(e4, u3(1), u3(2)) ? (l3(), yield p2()) : yield i3(); else if (44 === e4) yield { type: 6 }; else if (45 === e4) { const t4 = u3(1), n4 = u3(2); m3(e4, t4, n4) ? (l3(), yield p2()) : 45 === t4 && 62 === n4 ? (o3(2), yield { type: 19 }) : d3(e4, t4, n4) ? (l3(), yield y3()) : yield i3(); } else if (46 === e4) m3(e4, u3(1), u3(2)) ? (l3(), yield p2()) : yield i3(); else if (58 === e4) yield { type: 7 }; else if (59 === e4) yield { type: 8 }; else if (60 === e4) 33 === u3(1) && 45 === u3(2) && 45 === u3(3) ? yield { type: 18 } : yield i3(); else if (64 === e4) if (d3(u3(1), u3(2), u3(3))) { const e5 = w3(); yield { type: 22, value: e5 }; } else yield i3(); else if (91 === e4) yield { type: 9 }; else if (92 === e4) j(e4, u3(1)) ? (l3(), yield y3()) : (s3(), yield i3()); else if (93 === e4) yield { type: 10 }; else if (123 === e4) yield { type: 11 }; else if (125 === e4) yield { type: 12 }; else if (k(e4)) l3(), yield p2(); else if (L(e4)) l3(), yield y3(); else { if (-1 === e4) return yield { type: 0 }, r3.errorIndices; yield { type: 13, value: c3() }; } } } function k(e3) { return e3 >= 48 && e3 <= 57; } function A(e3) { return k(e3) || e3 >= 65 && e3 <= 70 || e3 >= 97 && e3 <= 102; } function E(e3) { return 10 === e3 || 13 === e3 || 12 === e3; } function z(e3) { return E(e3) || 9 === e3 || 32 === e3; } function L(e3) { return e3 >= 65 && e3 <= 90 || e3 >= 97 && e3 <= 122 || e3 >= 128 || 95 === e3; } function j(e3, t3) { return 92 === e3 && !E(t3); } function M(e3) { return L(e3) || k(e3) || 45 === e3; } var T = { 11: 12, 9: 10, 4: 5 }; function P(t3, n3) { const r3 = function(e3, t4) { const n4 = []; for (; ; ) switch (e3.consume(1).type) { case 1: break; case 0: return { type: 3, value: n4 }; case 18: case 19: if (false !== t4) { e3.reconsume(); const t5 = R(e3); t5 !== x && n4.push(t5); } break; case 22: e3.reconsume(), n4.push(U(e3)); break; default: { e3.reconsume(); const t5 = R(e3); t5 !== x && n4.push(t5); break; } } }(C(t3), true === n3); return e({}, r3, { value: r3.value.map((t4) => 26 === t4.type ? function(t5, n4) { return 0 === t5.value.value.type ? e({}, t5, { value: e({}, t5.value, { value: O(t5.value.value.value) }) }) : t5; }(t4) : t4) }); } function N(e3) { const t3 = C(e3), n3 = []; for (; ; ) { if (0 === t3.consume(1).type) return n3; t3.reconsume(), n3.push(Q(t3)); } } function O(e3) { return function(e4) { const t3 = [], n3 = []; for (; ; ) { const r3 = e4.consume(1); switch (r3.type) { case 1: case 8: break; case 0: return { type: 1, value: [...n3, ...t3] }; case 22: e4.reconsume(), t3.push(U(e4)); break; case 24: { const t4 = [r3]; let u3 = e4.at(1); for (; 8 !== u3.type && 0 !== u3.type; ) t4.push(Q(e4)), u3 = e4.at(1); const o3 = I(C(t4)); o3 !== x && n3.push(o3); break; } case 13: if ("&" === r3.value) { e4.reconsume(); const n4 = R(e4); n4 !== x && t3.push(n4); break; } default: { e4.error(), e4.reconsume(); let t4 = e4.at(1); for (; 8 !== t4.type && 0 !== t4.type; ) Q(e4), t4 = e4.at(1); break; } } } }(C(e3)); } function F(e3) { for (; 1 === e3.at(1).type; ) e3.consume(1); } function U(e3) { let t3 = e3.consume(1); if (22 !== t3.type) throw new Error(`Unexpected type ${t3.type}`); const n3 = t3.value, r3 = []; for (; ; ) switch (t3 = e3.consume(1), t3.type) { case 8: return { type: 25, name: n3, prelude: r3, value: null }; case 0: return e3.error(), { type: 25, name: n3, prelude: r3, value: null }; case 11: return { type: 25, name: n3, prelude: r3, value: H(e3) }; case 28: if (11 === t3.source.type) return { type: 25, name: n3, prelude: r3, value: t3 }; default: e3.reconsume(), r3.push(Q(e3)); } } function R(e3) { let t3 = e3.value; const n3 = []; for (; ; ) switch (t3 = e3.consume(1), t3.type) { case 0: return e3.error(), x; case 11: return { type: 26, prelude: n3, value: H(e3) }; case 28: if (11 === t3.source.type) return { type: 26, prelude: n3, value: t3 }; default: e3.reconsume(), n3.push(Q(e3)); } } function I(e3) { const t3 = e3.consume(1); if (24 !== t3.type) throw new Error(`Unexpected type ${t3.type}`); const n3 = t3.value, r3 = []; let u3 = false; if (F(e3), 7 !== e3.at(1).type) return e3.error(), x; for (e3.consume(1), F(e3); 0 !== e3.at(1).type; ) r3.push(Q(e3)); const o3 = r3[r3.length - 2], s3 = r3[r3.length - 1]; return o3 && 13 === o3.type && "!" === o3.value && 24 === s3.type && "important" === s3.value.toLowerCase() && (u3 = true, r3.splice(r3.length - 2)), { type: 29, name: n3, value: r3, important: u3 }; } function Q(e3) { const t3 = e3.consume(1); switch (t3.type) { case 11: case 9: case 4: return H(e3); case 23: return function(e4) { let t4 = e4.value; if (23 !== t4.type) throw new Error(`Unexpected type ${t4.type}`); const n3 = t4.value, r3 = []; for (; ; ) switch (t4 = e4.consume(1), t4.type) { case 5: return { type: 27, name: n3, value: r3 }; case 0: return e4.error(), { type: 27, name: n3, value: r3 }; default: e4.reconsume(), r3.push(Q(e4)); } }(e3); default: return t3; } } function H(e3) { let t3 = e3.value; const n3 = t3, r3 = T[n3.type]; if (!r3) throw new Error(`Unexpected type ${t3.type}`); const u3 = []; for (; ; ) switch (t3 = e3.consume(1), t3.type) { case r3: return { type: 28, source: n3, value: { type: 0, value: u3 } }; case 0: return e3.error(), { type: 28, source: n3, value: { type: 0, value: u3 } }; default: e3.reconsume(), u3.push(Q(e3)); } } function V(e3) { return F(e3), 0 === e3.at(1).type; } var D = { 11: ["{", "}"], 9: ["[", "]"], 4: ["(", ")"] }; function W(e3, t3) { switch (e3.type) { case 25: return `@${CSS.escape(e3.name)} ${e3.prelude.map((e4) => W(e4)).join("")}${e3.value ? W(e3.value) : ";"}`; case 26: return `${e3.prelude.map((e4) => W(e4)).join("")}${W(e3.value)}`; case 28: { const [t4, n3] = D[e3.source.type]; return `${t4}${_(e3.value)}${n3}`; } case 27: return `${CSS.escape(e3.name)}(${e3.value.map((e4) => W(e4)).join("")})`; case 29: return `${CSS.escape(e3.name)}:${e3.value.map((e4) => W(e4)).join("")}${e3.important ? " !important" : ""}`; case 1: return " "; case 8: return ";"; case 7: return ":"; case 14: return "#" + CSS.escape(e3.value); case 24: return CSS.escape(e3.value); case 15: return e3.value + CSS.escape(e3.unit); case 13: case 17: return e3.value; case 2: return `"${CSS.escape(e3.value)}"`; case 6: return ","; case 20: return "url(" + CSS.escape(e3.value) + ")"; case 22: return "@" + CSS.escape(e3.value); case 16: return e3.value + "%"; default: throw new Error(`Unsupported token ${e3.type}`); } } function _(e3, t3) { return e3.value.map((t4) => { let n3 = W(t4); return 29 === t4.type && 0 !== e3.type && (n3 += ";"), n3; }).join(""); } function B(e3) { return W(e3); } function G(e3) { const t3 = e3.at(1); return 13 === t3.type && "=" === t3.value && (e3.consume(1), true); } function Y(e3, t3) { const n3 = []; for (; ; ) { const r3 = e3.at(1); if (0 === r3.type || t3 && 7 === r3.type || 13 === r3.type && (">" === r3.value || "<" === r3.value || "=" === r3.value)) break; n3.push(e3.consume(1)); } return n3; } function J(e3) { F(e3); const t3 = e3.consume(1); return 13 !== t3.type ? x : ">" === t3.value ? G(e3) ? 3 : 2 : "<" === t3.value ? G(e3) ? 5 : 4 : "=" === t3.value ? 1 : x; } function K(e3) { return 4 === e3 || 5 === e3; } function X(e3) { return 2 === e3 || 3 === e3; } function Z(e3, t3, n3) { const r3 = function(e4) { F(e4); const t4 = e4.consume(1); return F(e4), 24 !== t4.type || 0 !== e4.at(1).type ? x : t4.value; }(C(e3)); if (r3 === x) return x; let u3 = r3.toLowerCase(); return u3 = n3 ? n3(u3) : u3, t3.has(u3) ? u3 : x; } function ee(e3) { return { type: 13, value: e3 }; } function te(e3, t3) { return { type: 29, name: e3, value: t3, important: false }; } function ne(e3) { return { type: 24, value: e3 }; } function re(e3, t3) { return { type: 27, name: e3, value: t3 }; } function ue(e3) { return re("var", [ne(e3)]); } function oe(e3, t3) { F(e3); let n3 = false, r3 = e3.at(1); if (24 === r3.type) { if ("not" !== r3.value.toLowerCase()) return x; e3.consume(1), F(e3), n3 = true; } let u3 = function(e4) { const t4 = e4.consume(1); switch (t4.type) { case 28: { if (4 !== t4.source.type) return x; const e5 = oe(C(t4.value.value), null); return e5 !== x ? e5 : { type: 4, value: t4 }; } case 27: return { type: 4, value: t4 }; default: return x; } }(e3); if (u3 === x) return x; u3 = n3 ? { type: 1, value: u3 } : u3, F(e3), r3 = e3.at(1); const o3 = 24 === r3.type ? r3.value.toLowerCase() : null; if (null !== o3) { if (e3.consume(1), F(e3), "and" !== o3 && "or" !== o3 || null !== t3 && o3 !== t3) return x; const n4 = oe(e3, o3); return n4 === x ? x : { type: "and" === o3 ? 2 : 3, left: u3, right: n4 }; } return V(e3) ? u3 : x; } function se(e3) { return oe(e3, null); } function le(e3) { switch (e3.type) { case 1: return [ne("not"), { type: 1 }, ...le(e3.value)]; case 2: case 3: return [...le(e3.left), { type: 1 }, ne(2 === e3.type ? "and" : "or"), { type: 1 }, ...le(e3.right)]; case 4: return [e3.value]; } } var ce = { width: 1, height: 2, "inline-size": 3, "block-size": 4, "aspect-ratio": 5, orientation: 6 }; var ie = new Set(Object.keys(ce)); var ae = /* @__PURE__ */ new Set(["none", "and", "not", "or", "normal", "auto"]); var fe = /* @__PURE__ */ new Set(["initial", "inherit", "revert", "revert-layer", "unset"]); var pe = /* @__PURE__ */ new Set(["size", "inline-size"]); function ye(e3, t3, n3, r3) { const u3 = n3(); if (u3 === x) return x; let o3 = [u3, null]; F(e3); const s3 = e3.at(1); if (13 === s3.type) { if (s3.value !== t3) return x; e3.consume(1), F(e3); const n4 = r3(); F(e3), n4 !== x && (o3 = [u3, n4]); } return V(e3) ? o3 : x; } function he(e3) { const t3 = e3.consume(1); return 17 === t3.type ? parseInt(t3.value) : x; } function ve(e3) { const t3 = C(e3); F(t3); const n3 = t3.consume(1); let r3 = x; switch (n3.type) { case 17: t3.reconsume(), r3 = function(e4) { const t4 = ye(e4, "/", () => he(e4), () => he(e4)); return t4 === x ? x : { type: 2, value: t4[0] / (null !== t4[1] ? t4[1] : 1) }; }(t3); break; case 15: r3 = { type: 3, value: parseInt(n3.value), unit: n3.unit.toLowerCase() }; break; case 24: { const e4 = n3.value.toLowerCase(); switch (e4) { case "landscape": case "portrait": r3 = { type: 4, value: e4 }; } } } return r3 === x ? x : V(t3) ? { type: 6, value: r3 } : x; } function de(e3) { return !ge(e3 = e3.toLowerCase()) && !ae.has(e3); } function me(e3, t3) { const n3 = []; for (; ; ) { F(e3); const r3 = e3.at(1); if (24 !== r3.type || !t3(r3.value)) return n3; e3.consume(1), n3.push(r3.value); } } function we(e3) { const t3 = []; for (; ; ) { F(e3); const n3 = e3.at(1); if (24 !== n3.type) break; const r3 = n3.value; if (!de(r3)) break; e3.consume(1), t3.push(r3); } return t3; } function ge(e3) { return fe.has(e3); } function be(e3) { return e3.map((e4) => "cq-" + e4); } function Se(e3) { const t3 = me(e3, (e4) => ge(e4)); return 1 === t3.length ? be(t3) : x; } function xe(e3, t3) { const n3 = me(e3, (e4) => "none" === e4); if (1 === n3.length) return be(n3); if (0 !== n3.length) return x; if (t3) { const t4 = Se(e3); if (t4 !== x) return t4; } const r3 = we(e3); return r3.length > 0 && (!t3 || V(e3)) ? r3 : x; } function qe(e3, t3) { if (t3) { const t4 = Se(e3); if (t4 !== x) return t4; } return function(e4) { const t4 = me(e4, (e5) => "normal" === e5); if (1 === t4.length) return be(t4); if (0 !== t4.length) return x; const n3 = me(e4, (e5) => pe.has(e5)); return n3.length > 0 && V(e4) ? n3 : x; }(e3); } function Ce(e3) { const t3 = C(e3), n3 = Se(t3); if (n3 !== x) return [n3, n3]; const r3 = ye(t3, "/", () => xe(t3, false), () => qe(t3, false)); return r3 !== x && V(t3) ? [r3[0], r3[1] || []] : x; } function $e(e3) { const t3 = C(e3), n3 = we(t3); if (!n3 || n3.length > 1) return x; const r3 = se(t3); if (r3 === x) return x; const u3 = { features: /* @__PURE__ */ new Set() }, o3 = ke(r3, u3); return V(t3) ? { name: n3.length > 0 ? n3[0] : null, condition: o3, features: u3.features } : x; } function ke(e3, t3) { switch (e3.type) { case 1: return { type: 1, value: ke(e3.value, t3) }; case 2: case 3: return { type: 2 === e3.type ? 2 : 3, left: ke(e3.left, t3), right: ke(e3.right, t3) }; case 4: if (28 === e3.value.type) { const n3 = function(e4, t4) { const n4 = function(e5, t5) { const n5 = Y(e5, true), r4 = e5.at(1); if (0 === r4.type) { const e6 = Z(n5, t5); return e6 !== x && t5.has(e6) ? { type: 1, feature: e6 } : x; } if (7 === r4.type) { e5.consume(1); const r5 = Y(e5, false); let u4 = 1; const o4 = Z(n5, t5, (e6) => e6.startsWith("min-") ? (u4 = 3, e6.substring(4)) : e6.startsWith("max-") ? (u4 = 5, e6.substring(4)) : e6); return o4 !== x ? { type: 2, feature: o4, bounds: [null, [u4, r5]] } : x; } const u3 = J(e5); if (u3 === x) return x; const o3 = Y(e5, false); if (0 === e5.at(1).type) { const e6 = Z(n5, t5); if (e6 !== x) return { type: 2, feature: e6, bounds: [null, [u3, o3]] }; const r5 = Z(o3, t5); return r5 !== x ? { type: 2, feature: r5, bounds: [[u3, n5], null] } : x; } const s3 = J(e5); if (s3 === x || !(X(u3) && X(s3) || K(u3) && K(s3))) return x; const l3 = Y(e5, false), c3 = Z(o3, t5); return c3 !== x ? { type: 2, feature: c3, bounds: [[u3, n5], [s3, l3]] } : x; }(e4, ie); if (n4 === x) return x; const r3 = ce[n4.feature]; if (null == r3) return x; if (t4.features.add(r3), 1 === n4.type) return { type: 5, feature: r3 }; { const e5 = { type: 5, feature: r3 }; let t5 = x; if (null !== n4.bounds[0]) { const r4 = ve(n4.bounds[0][1]); if (r4 === x) return x; t5 = { type: 4, operator: n4.bounds[0][0], left: r4, right: e5 }; } if (null !== n4.bounds[1]) { const r4 = ve(n4.bounds[1][1]); if (r4 === x) return x; const u3 = { type: 4, operator: n4.bounds[1][0], left: e5, right: r4 }; t5 = t5 !== x ? { type: 2, left: t5, right: u3 } : u3; } return t5; } }(C(e3.value.value.value), t3); if (n3 !== x) return n3; } return { type: 6, value: { type: 1 } }; } } var Ae = 0; var Ee = { cqw: m, cqh: w, cqi: g, cqb: b }; var ze = CSS.supports("selector(:where(div))"); var Le = ":not(.container-query-polyfill)"; N(Array.from($(Le))); var je = document.createElement("div"); var Me = /* @__PURE__ */ new Set(["before", "after", "first-line", "first-letter"]); function Te(e3, t3) { return re("calc", [{ type: 17, flag: e3.flag, value: e3.value }, ee("*"), t3]); } function Pe(t3) { return t3.map((t4) => { switch (t4.type) { case 15: return function(e3) { const t5 = e3.unit, n3 = Ee[t5]; return null != n3 ? Te(e3, ue(n3)) : "cqmin" === t5 || "cqmax" === t5 ? Te(e3, re(e3.unit.slice(2), [ue(g), { type: 6 }, ue(b)])) : e3; }(t4); case 27: return e({}, t4, { value: Pe(t4.value) }); } return t4; }); } function Ne(t3) { switch (t3.name) { case "container": return Ce(t3.value) ? e({}, t3, { name: p }) : t3; case "container-name": return xe(C(t3.value), true) ? e({}, t3, { name: h }) : t3; case "container-type": return null != qe(C(t3.value), true) ? e({}, t3, { name: y }) : t3; } return e({}, t3, { value: Pe(t3.value) }); } function Oe(t3, n3) { return e({}, t3, { value: t3.value.map((t4) => { switch (t4.type) { case 25: return He(t4, n3); case 26: return function(t5, n4) { return n4.transformStyleRule(e({}, t5, { value: Re(t5.value, n4) })); }(t4, n3); default: return t4; } }) }); } function Fe(e3) { return 0 === e3.type || 6 === e3.type; } function Ue(e3) { for (let t3 = e3.length - 1; t3 >= 0; t3--) if (1 !== e3[t3].type) return e3.slice(0, t3 + 1); return e3; } function Re(t3, n3) { return function(t4, n4) { const r3 = []; let u3 = null, o3 = null; for (const e3 of t4.value.value) switch (e3.type) { case 25: { const t5 = n4 ? n4(e3) : e3; t5 && r3.push(t5); } break; case 29: { const t5 = Ne(e3); switch (t5.name) { case p: { const t6 = Ce(e3.value); t6 !== x && (u3 = t6[0], o3 = t6[1]); break; } case h: { const t6 = xe(C(e3.value), true); t6 !== x && (u3 = t6); break; } case y: { const t6 = qe(C(e3.value), true); t6 !== x && (o3 = t6); break; } default: r3.push(t5); } } } return u3 && u3.length > 0 && r3.push(te(h, [ne(u3.join(" "))])), o3 && o3.length > 0 && r3.push(te(y, [ne(o3.join(" "))])), e({}, t4, { value: { type: 2, value: r3 } }); }(t3, (e3) => He(e3, n3)); } function Ie(t3) { if (1 === t3.type) return e({}, t3, { value: Ie(t3.value) }); if (2 === t3.type || 3 === t3.type) return e({}, t3, { left: Ie(t3.left), right: Ie(t3.right) }); if (4 === t3.type && 28 === t3.value.type) { const n3 = function(e3) { const t4 = C(e3); return F(t4), 24 !== t4.at(1).type ? x : I(t4) || x; }(t3.value.value.value); if (n3 !== x) return e({}, t3, { value: e({}, t3.value, { value: { type: 0, value: [Ne(n3)] } }) }); } return t3; } function Qe(t3, n3) { let r3 = se(C(t3.prelude)); return r3 = r3 !== x ? Ie(r3) : x, e({}, t3, { prelude: r3 !== x ? le(r3) : t3.prelude, value: t3.value ? e({}, t3.value, { value: Oe(P(t3.value.value.value), n3) }) : null }); } function He(t3, n3) { switch (t3.name.toLocaleLowerCase()) { case "media": case "layer": return function(t4, n4) { return e({}, t4, { value: t4.value ? e({}, t4.value, { value: Oe(P(t4.value.value.value), n4) }) : null }); }(t3, n3); case "keyframes": return function(t4, n4) { let r3 = null; return t4.value && (r3 = e({}, t4.value, { value: { type: 3, value: P(t4.value.value.value).value.map((t5) => { switch (t5.type) { case 26: return function(t6, n5) { return e({}, t6, { value: Re(t6.value, n5) }); }(t5, n4); case 25: return He(t5, n4); } }) } })), e({}, t4, { value: r3 }); }(t3, n3); case "supports": return Qe(t3, n3); case "container": return function(t4, n4) { if (t4.value) { const r3 = $e(t4.prelude); if (r3 !== x) { const u3 = { rule: r3, selector: null, parent: n4.parent, uid: "c" + Ae++ }, o3 = /* @__PURE__ */ new Set(), s3 = [], l3 = Oe(P(t4.value.value.value), { descriptors: n4.descriptors, parent: u3, transformStyleRule: (t5) => { const [n5, r4] = function(e3, t6, n6) { const r5 = C(e3), u4 = [], o4 = []; for (; ; ) { if (0 === r5.at(1).type) return [u4, o4]; const n7 = Math.max(0, r5.index); for (; l5 = r5.at(1), c3 = r5.at(2), !(Fe(l5) || 7 === l5.type && (7 === c3.type || 24 === c3.type && Me.has(c3.value.toLowerCase()))); ) r5.consume(1); const i3 = r5.index + 1, a3 = e3.slice(n7, i3), f3 = a3.length > 0 ? Ue(a3) : [ee("*")]; for (; !Fe(r5.at(1)); ) r5.consume(1); const p2 = e3.slice(i3, Math.max(0, r5.index + 1)); let y3 = f3, h3 = [{ type: 28, source: { type: 9 }, value: { type: 0, value: [ne(p2.length > 0 ? v : d), ee("~"), ee("="), { type: 2, value: t6 }] } }]; if (ze) h3 = [ee(":"), re("where", h3)]; else { const e4 = f3.map(B).join(""); e4.endsWith(Le) ? y3 = N(Array.from($(e4.substring(0, e4.length - Le.length)))) : s3.push({ actual: e4, expected: e4 + Le }); } u4.push(...f3), o4.push(...y3), o4.push(...h3), o4.push(...p2), r5.consume(1); } var l5, c3; }(t5.prelude, u3.uid); if (s3.length > 0) return t5; const l4 = n5.map(B).join(""); try { je.matches(l4), o3.add(l4); } catch (e3) { } return e({}, t5, { prelude: r4 }); } }).value; if (s3.length > 0) { const e3 = /* @__PURE__ */ new Set(), t5 = []; let n5 = 0; for (const { actual: e4 } of s3) n5 = Math.max(n5, e4.length); const r4 = Array.from({ length: n5 }, () => " ").join(""); for (const { actual: u4, expected: o4 } of s3) e3.has(u4) || (t5.push(`${u4}${r4.substring(0, n5 - u4.length)} => ${o4}`), e3.add(u4)); console.warn(`The :where() pseudo-class is not supported by this browser. To use the Container Query Polyfill, you must modify the selectors under your @container rules: ${t5.join("\n")}`); } return o3.size > 0 && (u3.selector = Array.from(o3).join(", ")), n4.descriptors.push(u3), { type: 25, name: "media", prelude: [ne("all")], value: e({}, t4.value, { value: { type: 3, value: l3 } }) }; } } return t4; }(t3, n3); } return t3; } var Ve = class { constructor(e3) { this.value = void 0, this.value = e3; } }; function De(e3, t3) { if (e3 === t3) return true; if (typeof e3 == typeof t3 && null !== e3 && null !== t3 && "object" == typeof e3) { if (Array.isArray(e3)) { if (!Array.isArray(t3) || t3.length !== e3.length) return false; for (let n3 = 0, r3 = e3.length; n3 < r3; n3++) if (!De(e3[n3], t3[n3])) return false; return true; } if (e3 instanceof Ve) return t3 instanceof Ve && e3.value === t3.value; { const n3 = Object.keys(e3); if (n3.length !== Object.keys(t3).length) return false; for (let r3 = 0, u3 = n3.length; r3 < u3; r3++) { const u4 = n3[r3]; if (!De(e3[u4], t3[u4])) return false; } return true; } } return false; } var We = Symbol("CQ_INSTANCE"); var _e = Symbol("CQ_STYLESHEET"); var Be = CSS.supports("width: 1svh"); var Ge = /* @__PURE__ */ new Set(["vertical-lr", "vertical-rl", "sideways-rl", "sideways-lr", "tb", "tb-lr", "tb-rl"]); var Ye = ["padding-left", "padding-right", "border-left-width", "border-right-width"]; var Je = ["padding-top", "padding-bottom", "border-top-width", "border-bottom-width"]; var Ke = /(\w*(\s|-))?(table|ruby)(-\w*)?/; var Xe = class { constructor(e3) { this.node = void 0, this.node = e3; } connected() { } disconnected() { } updated() { } }; var Ze = class extends Xe { constructor(e3, t3) { super(e3), this.context = void 0, this.controller = null, this.styleSheet = null, this.context = t3; } connected() { var e3 = this; const t3 = this.node; if ("stylesheet" === t3.rel) { const n3 = new URL(t3.href, document.baseURI); n3.origin === location.origin && (this.controller = rt(async function(r3) { const u3 = await fetch(n3.toString(), { signal: r3 }), o3 = await u3.text(), s3 = e3.styleSheet = await e3.context.registerStyleSheet({ source: o3, url: n3, signal: r3 }), l3 = new Blob([s3.source], { type: "text/css" }), c3 = new Image(); c3.onload = c3.onerror = s3.refresh, c3.src = t3.href = URL.createObjectURL(l3); })); } } disconnected() { var e3, t3; null == (e3 = this.controller) || e3.abort(), this.controller = null, null == (t3 = this.styleSheet) || t3.dispose(), this.styleSheet = null; } }; var et = class extends Xe { constructor(e3, t3) { super(e3), this.context = void 0, this.controller = null, this.styleSheet = null, this.context = t3; } connected() { var e3 = this; this.controller = rt(async function(t3) { const n3 = e3.node, r3 = e3.styleSheet = await e3.context.registerStyleSheet({ source: n3.innerHTML, signal: t3 }); n3.innerHTML = r3.source, r3.refresh(); }); } disconnected() { var e3, t3; null == (e3 = this.controller) || e3.abort(), this.controller = null, null == (t3 = this.styleSheet) || t3.dispose(), this.styleSheet = null; } }; var tt = class extends Xe { connected() { const e3 = `* { ${y}: cq-normal; ${h}: cq-none; }`; this.node.innerHTML = void 0 === window.CSSLayerBlockRule ? e3 : `@layer cq-polyfill-${f} { ${e3} }`; } }; var nt = class extends Xe { constructor(e3, t3) { super(e3), this.context = void 0, this.styles = void 0, this.context = t3, this.styles = window.getComputedStyle(e3); } connected() { this.node.style.cssText = "position: fixed; top: 0; left: 0; visibility: hidden; " + (Be ? "width: 1svw; height: 1svh;" : "width: 1%; height: 1%;"); } updated() { const e3 = ct((e4) => this.styles.getPropertyValue(e4)); this.context.viewportChanged({ width: e3.width, height: e3.height }); } }; function rt(e3) { const t3 = new AbortController(); return e3(t3.signal).catch((e4) => { if (!(e4 instanceof DOMException && "AbortError" === e4.message)) throw e4; }), t3; } function ut(e3) { let t3 = 0; if (0 === e3.length) return t3; if (e3.startsWith("cq-") && ("normal" === (e3 = e3.substring("cq-".length)) || ge(e3))) return t3; const n3 = e3.split(" "); for (const e4 of n3) switch (e4) { case "size": t3 |= 3; break; case "inline-size": t3 |= 1; break; default: return 0; } return t3; } function ot(e3) { let t3 = 0; return "none" !== e3 && (t3 |= 1, "contents" === e3 || "inline" === e3 || Ke.test(e3) || (t3 |= 2)), t3; } function st(e3, t3) { return parseFloat(e3(t3)); } function lt(e3, t3) { return t3.reduce((t4, n3) => t4 + st(e3, n3), 0); } function ct(e3) { let t3 = 0, n3 = 0; return "border-box" === e3("box-sizing") && (t3 = lt(e3, Ye), n3 = lt(e3, Je)), { fontSize: st(e3, "font-size"), width: st(e3, "width") - t3, height: st(e3, "height") - n3 }; } function it(e3) { return { containerType: ut(e3(y).trim()), containerNames: (n3 = e3(h).trim(), n3.startsWith("cq-") && ("none" === (n3 = n3.substring("cq-".length)) || ge(n3)) ? /* @__PURE__ */ new Set([]) : new Set(0 === n3.length ? [] : n3.split(" "))), writingAxis: (t3 = e3("writing-mode").trim(), Ge.has(t3) ? 1 : 0), displayFlags: ot(e3("display").trim()) }; var t3, n3; } function at(e3, t3, n3) { null != n3 ? n3 != e3.getPropertyValue(t3) && e3.setProperty(t3, n3) : e3.removeProperty(t3); } function ft(e3) { const t3 = e3[_e]; return null != t3 ? t3 : []; } function pt(e3, t3) { e3[_e] = t3; } new Promise((e3) => { }), window.CQPolyfill = { version: "1.0.2" }, "container" in document.documentElement.style || function(n3) { function r3(e3) { return e3[We] || null; } const u3 = document.documentElement; if (r3(u3)) return; const o3 = document.createElement(`cq-polyfill-${f}`), s3 = document.createElement("style"); new MutationObserver((e3) => { for (const t3 of e3) { for (const e4 of t3.removedNodes) { const t4 = r3(e4); null == t4 || t4.disconnect(); } t3.target.nodeType !== Node.DOCUMENT_NODE && t3.target.nodeType !== Node.DOCUMENT_FRAGMENT_NODE && null === t3.target.parentNode || "attributes" === t3.type && t3.attributeName && (t3.attributeName === v || t3.attributeName === d || t3.target instanceof Element && t3.target.getAttribute(t3.attributeName) === t3.oldValue) || (A3(t3.target).mutate(), S2()); } }).observe(u3, { childList: true, subtree: true, attributes: true, attributeOldValue: true }); const l3 = new ResizeObserver((e3) => { for (const t3 of e3) A3(t3.target).resize(); A3(u3).update(C3()); }), c3 = new Xe(u3); async function a3(e3, { source: t3, url: n4, signal: r4 }) { const o4 = function(e4, t4) { try { const n5 = Array.from($(e4)); if (t4) for (let e5 = 0; e5 < n5.length; e5++) { const r6 = n5[e5]; if (20 === r6.type) r6.value = new URL(r6.value, t4).toString(); else if (23 === r6.type && "url" === r6.value.toLowerCase()) { const r7 = e5 + 1 < n5.length ? n5[e5 + 1] : null; r7 && 2 === r7.type && (r7.value = new URL(r7.value, t4).toString()); } } const r5 = { descriptors: [], parent: null, transformStyleRule: (e5) => e5 }; return { source: _(Oe(P(n5, true), r5)), descriptors: r5.descriptors }; } catch (t5) { return console.warn("An error occurred while transpiling stylesheet: " + t5), { source: e4, descriptors: [] }; } }(t3, n4 ? n4.toString() : void 0); let s4 = () => { }, l4 = () => { }; const c4 = A3(u3); let i3 = false; return null != r4 && r4.aborted || (l4 = () => { if (!i3) { const { sheet: t4 } = e3; null != t4 && (pt(t4, o4.descriptors), i3 = true, s4 = () => { pt(t4), c4.mutate(), S2(); }, c4.mutate(), S2()); } }), { source: o4.source, dispose: s4, refresh: l4 }; } const p2 = { cqw: null, cqh: null }; function y3({ width: e3, height: t3 }) { p2.cqw = e3, p2.cqh = t3; } function h3(e3, t3, n4) { if (e3 instanceof Element && t3) { let r4 = ""; for (const [n5, u4] of t3.conditions) { const t4 = n5.value; null != t4.selector && null != u4 && 2 == (2 & u4) && e3.matches(t4.selector) && (r4.length > 0 && (r4 += " "), r4 += t4.uid); } r4.length > 0 ? e3.setAttribute(n4, r4) : e3.removeAttribute(n4); } } function S2() { l3.unobserve(u3), l3.observe(u3); } const x3 = () => { const e3 = []; for (const t3 of document.styleSheets) for (const n4 of ft(t3)) e3.push([new Ve(n4), 0]); return e3; }, q2 = window.getComputedStyle(u3), C3 = () => { const t3 = (e3) => q2.getPropertyValue(e3), n4 = it(t3), r4 = ct(t3); return { parentState: null, conditions: x3(), context: e({}, p2, { fontSize: r4.fontSize, rootFontSize: r4.fontSize, writingAxis: n4.writingAxis }), displayFlags: n4.displayFlags, isQueryContainer: false }; }, k3 = (e3) => e3; function A3(n4) { let f3 = r3(n4); if (!f3) { let p3, S3 = null, x4 = false; n4 === u3 ? (p3 = c3, S3 = k3) : n4 === o3 ? (x4 = true, p3 = new nt(o3, { viewportChanged: y3 })) : p3 = n4 === s3 ? new tt(s3) : n4 instanceof HTMLLinkElement ? new Ze(n4, { registerStyleSheet: (t3) => a3(n4, e({}, t3)) }) : n4 instanceof HTMLStyleElement ? new et(n4, { registerStyleSheet: (t3) => a3(n4, e({}, t3)) }) : new Xe(n4); let q3 = Symbol(); if (null == S3 && n4 instanceof Element) { const r4 = function(n5) { const r5 = window.getComputedStyle(n5); return function(n6) { let u4 = null; return (...n7) => { if (null == u4 || !De(u4[0], n7)) { const o4 = ((n8, u5) => { const { context: o5, conditions: s4 } = n8, l4 = (e3) => r5.getPropertyValue(e3), c4 = it(l4), a4 = e({}, o5, { writingAxis: c4.writingAxis }); let f4 = s4, p4 = false, y4 = c4.displayFlags; 0 == (1 & n8.displayFlags) && (y4 = 0); const { containerType: h4, containerNames: v3 } = c4; if (h4 > 0) { const e3 = h4 > 0 && 2 == (2 & y4), n9 = new Map(s4.map((e4) => [e4[0].value, e4[1]])); if (f4 = [], p4 = true, e3) { const e4 = ct(l4); a4.fontSize = e4.fontSize; const r6 = function(e5, t3) { const n10 = { value: t3.width }, r7 = { value: t3.height }; let u7 = n10, o6 = r7; if (1 === e5.writingAxis) { const e6 = u7; u7 = o6, o6 = e6; } return 2 != (2 & e5.containerType) && (o6.value = void 0), { width: n10.value, height: r7.value, inlineSize: u7.value, blockSize: o6.value }; }(c4, e4), u6 = { sizeFeatures: r6, treeContext: a4 }, p5 = (e5) => { const { rule: r7 } = e5, o6 = r7.name, s5 = null == o6 || v3.has(o6) ? function(e6, n10) { const r8 = /* @__PURE__ */ new Map(), u7 = n10.sizeFeatures; for (const n11 of e6.features) { const e7 = t(n11, u7); if (1 === e7.type) return null; r8.set(n11, e7); } const o7 = i(e6.condition, { sizeFeatures: r8, treeContext: n10.treeContext }); return 5 === o7.type ? o7.value : null; }(r7, u6) : null; var l5; return null == s5 ? 1 === ((null != (l5 = n9.get(e5)) ? l5 : 0) && 1) : true === s5; }, y5 = (e5, t3) => { let n10 = e5.get(t3); if (null == n10) { const r7 = p5(t3); n10 = (r7 ? 1 : 0) | (true !== r7 || null != t3.parent && 1 != (1 & y5(e5, t3.parent)) ? 0 : 2), e5.set(t3, n10); } return n10; }, h5 = /* @__PURE__ */ new Map(); for (const e5 of s4) f4.push([e5[0], y5(h5, e5[0].value)]); a4.cqw = null != r6.width ? r6.width / 100 : o5.cqw, a4.cqh = null != r6.height ? r6.height / 100 : o5.cqh; } } return { parentState: new Ve(n8), conditions: f4, context: a4, displayFlags: y4, isQueryContainer: p4 }; })(...n7); null != u4 && De(u4[1], o4) || (u4 = [n7, o4]); } return u4[1]; }; }(); }(n4); S3 = (e3) => r4(e3, q3); } const C4 = S3 || k3; let $3 = null; const E2 = (e3) => { const t3 = $3, n5 = C4(e3); return $3 = n5, [$3, $3 !== t3]; }, z3 = n4 instanceof HTMLElement || n4 instanceof SVGElement ? n4.style : null; let L2 = false; f3 = { connect() { for (let e3 = n4.firstChild; null != e3; e3 = e3.nextSibling) A3(e3); p3.connected(); }, disconnect() { n4 instanceof Element && (l3.unobserve(n4), n4.removeAttribute(v), n4.removeAttribute(d)), z3 && (z3.removeProperty(g), z3.removeProperty(b), z3.removeProperty(m), z3.removeProperty(w)); for (let e3 = n4.firstChild; null != e3; e3 = e3.nextSibling) { const t3 = r3(e3); null == t3 || t3.disconnect(); } p3.disconnected(), delete n4[We]; }, update(e3) { const [t3, r4] = E2(e3); if (r4) { if (h3(n4, e3, d), h3(n4, t3, v), n4 instanceof Element) { const e4 = x4 || t3.isQueryContainer; e4 && !L2 ? (l3.observe(n4), L2 = true) : !e4 && L2 && (l3.unobserve(n4), L2 = false); } if (z3) { const n5 = t3.context, r5 = n5.writingAxis; let u4 = null, o4 = null, s4 = null, l4 = null; (r5 !== e3.context.writingAxis || t3.isQueryContainer) && (u4 = `var(${0 === r5 ? m : w})`, o4 = `var(${1 === r5 ? m : w})`), e3 && !t3.isQueryContainer || (n5.cqw && (s4 = n5.cqw + "px"), n5.cqh && (l4 = n5.cqh + "px")), at(z3, g, u4), at(z3, b, o4), at(z3, m, s4), at(z3, w, l4); } p3.updated(); } for (let e4 = n4.firstChild; null != e4; e4 = e4.nextSibling) A3(e4).update(t3); }, resize() { q3 = Symbol(); }, mutate() { q3 = Symbol(); for (let e3 = n4.firstChild; null != e3; e3 = e3.nextSibling) A3(e3).mutate(); } }, n4[We] = f3, f3.connect(); } return f3; } u3.prepend(s3, o3), A3(u3), S2(); }(); // ../../../node_modules/alpine-turbo-drive-adapter/dist/alpine-turbo-drive-adapter.esm.js function isValidVersion(required, current) { var requiredArray = required.split("."); var currentArray = current.split("."); for (var i3 = 0; i3 < requiredArray.length; i3++) { if (currentArray[i3] && currentArray[i3] > requiredArray[i3]) { return true; } } return currentArray[requiredArray.length - 1] === requiredArray[requiredArray.length - 1]; } function dispatch(el, name) { var detail = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; el.dispatchEvent(new CustomEvent(name, { detail, bubbles: true, composed: true, cancelable: true })); } var Bridge = class { init() { if (!window.Alpine.version || !isValidVersion("3.0.0", window.Alpine.version)) { throw new Error("Invalid Alpine version. Please use Alpine 3.0.0 or above"); } window.Alpine.mutateDom(() => { document.body.querySelectorAll("[x-cloak]").forEach((el) => { var _el$getAttribute; el.setAttribute("data-alpine-was-cloaked", (_el$getAttribute = el.getAttribute("x-cloak")) !== null && _el$getAttribute !== void 0 ? _el$getAttribute : ""); }); }); this.configureEventHandlers(); } configureEventHandlers() { var renderCallback = (event) => { if (document.documentElement.hasAttribute("data-turbo-preview")) { return; } dispatch(document, "alpine:init"); dispatch(document, "alpine:initializing"); window.Alpine.flushAndStopDeferringMutations(); dispatch(document, "alpine:initialised"); window.Alpine.mutateDom(() => { document.querySelectorAll("[data-alpine-ignored]").forEach((el) => { el.removeAttribute("x-ignore"); el.removeAttribute("data-alpine-ignored"); }); }); }; var beforeRenderCallback = (event) => { window.Alpine.mutateDom(() => { if (document.documentElement.hasAttribute("data-turbo-preview")) { return; } event.detail.newBody.querySelectorAll("[data-alpine-generated-me],[x-cloak]").forEach((el) => { if (el.hasAttribute("x-cloak")) { var _el$getAttribute2; el.setAttribute("data-alpine-was-cloaked", (_el$getAttribute2 = el.getAttribute("x-cloak")) !== null && _el$getAttribute2 !== void 0 ? _el$getAttribute2 : ""); } if (el.hasAttribute("data-alpine-generated-me")) { el.removeAttribute("data-alpine-generated-me"); el.remove(); } }); }); window.Alpine.deferMutations(); }; var beforeCacheCallback = (event) => { window.Alpine.mutateDom(() => { document.body.querySelectorAll("[x-for],[x-if],[data-alpine-was-cloaked]").forEach((el) => { if (el.hasAttribute("data-alpine-was-cloaked")) { var _el$getAttribute3; el.setAttribute("x-cloak", (_el$getAttribute3 = el.getAttribute("data-alpine-was-cloaked")) !== null && _el$getAttribute3 !== void 0 ? _el$getAttribute3 : ""); el.removeAttribute("data-alpine-was-cloaked"); } if (el.hasAttribute("x-for") && el._x_lookup) { Object.values(el._x_lookup).forEach((el2) => el2.setAttribute("data-alpine-generated-me", true)); } if (el.hasAttribute("x-if") && el._x_currentIfEl) { el._x_currentIfEl.setAttribute("data-alpine-generated-me", true); } }); }); document.querySelectorAll("[data-turbo-permanent]").forEach((el) => { window.Alpine.mutateDom(() => { if (!el.hasAttribute("x-ignore")) { el.setAttribute("x-ignore", true); el.setAttribute("data-alpine-ignored", true); } el.querySelectorAll("[data-alpine-generated-me]").forEach((sub) => { sub.removeAttribute("data-alpine-generated-me"); }); }); }); }; document.addEventListener("turbo:render", renderCallback); document.addEventListener("turbo:before-render", beforeRenderCallback); document.addEventListener("turbo:before-cache", beforeCacheCallback); } }; if (window.Alpine) { console.error("Alpine-turbo-drive-adapter must be included before AlpineJs"); } if (!Object.getOwnPropertyDescriptor(NodeList.prototype, "forEach")) { Object.defineProperty(NodeList.prototype, "forEach", Object.getOwnPropertyDescriptor(Array.prototype, "forEach")); } document.addEventListener("alpine:init", () => { var bridge = new Bridge(); bridge.init(); }, { once: true }); // ../../../node_modules/@hotwired/turbo/dist/turbo.es2017-esm.js (function() { if (window.Reflect === void 0 || window.customElements === void 0 || window.customElements.polyfillWrapFlushCallback) { return; } const BuiltInHTMLElement = HTMLElement; const wrapperForTheName = { HTMLElement: function HTMLElement2() { return Reflect.construct(BuiltInHTMLElement, [], this.constructor); } }; window.HTMLElement = wrapperForTheName["HTMLElement"]; HTMLElement.prototype = BuiltInHTMLElement.prototype; HTMLElement.prototype.constructor = HTMLElement; Object.setPrototypeOf(HTMLElement, BuiltInHTMLElement); })(); (function(prototype) { if (typeof prototype.requestSubmit == "function") return; prototype.requestSubmit = function(submitter) { if (submitter) { validateSubmitter(submitter, this); submitter.click(); } else { submitter = document.createElement("input"); submitter.type = "submit"; submitter.hidden = true; this.appendChild(submitter); submitter.click(); this.removeChild(submitter); } }; function validateSubmitter(submitter, form) { submitter instanceof HTMLElement || raise(TypeError, "parameter 1 is not of type 'HTMLElement'"); submitter.type == "submit" || raise(TypeError, "The specified element is not a submit button"); submitter.form == form || raise(DOMException, "The specified element is not owned by this form element", "NotFoundError"); } function raise(errorConstructor, message2, name) { throw new errorConstructor("Failed to execute 'requestSubmit' on 'HTMLFormElement': " + message2 + ".", name); } })(HTMLFormElement.prototype); var submittersByForm = /* @__PURE__ */ new WeakMap(); function findSubmitterFromClickTarget(target) { const element = target instanceof Element ? target : target instanceof Node ? target.parentElement : null; const candidate = element ? element.closest("input, button") : null; return (candidate === null || candidate === void 0 ? void 0 : candidate.type) == "submit" ? candidate : null; } function clickCaptured(event) { const submitter = findSubmitterFromClickTarget(event.target); if (submitter && submitter.form) { submittersByForm.set(submitter.form, submitter); } } (function() { if ("submitter" in Event.prototype) return; let prototype = window.Event.prototype; if ("SubmitEvent" in window && /Apple Computer/.test(navigator.vendor)) { prototype = window.SubmitEvent.prototype; } else if ("SubmitEvent" in window) { return; } addEventListener("click", clickCaptured, true); Object.defineProperty(prototype, "submitter", { get() { if (this.type == "submit" && this.target instanceof HTMLFormElement) { return submittersByForm.get(this.target); } } }); })(); var FrameLoadingStyle; (function(FrameLoadingStyle2) { FrameLoadingStyle2["eager"] = "eager"; FrameLoadingStyle2["lazy"] = "lazy"; })(FrameLoadingStyle || (FrameLoadingStyle = {})); var FrameElement = class extends HTMLElement { static get observedAttributes() { return ["disabled", "complete", "loading", "src"]; } constructor() { super(); this.loaded = Promise.resolve(); this.delegate = new FrameElement.delegateConstructor(this); } connectedCallback() { this.delegate.connect(); } disconnectedCallback() { this.delegate.disconnect(); } reload() { return this.delegate.sourceURLReloaded(); } attributeChangedCallback(name) { if (name == "loading") { this.delegate.loadingStyleChanged(); } else if (name == "complete") { this.delegate.completeChanged(); } else if (name == "src") { this.delegate.sourceURLChanged(); } else { this.delegate.disabledChanged(); } } get src() { return this.getAttribute("src"); } set src(value) { if (value) { this.setAttribute("src", value); } else { this.removeAttribute("src"); } } get loading() { return frameLoadingStyleFromString(this.getAttribute("loading") || ""); } set loading(value) { if (value) { this.setAttribute("loading", value); } else { this.removeAttribute("loading"); } } get disabled() { return this.hasAttribute("disabled"); } set disabled(value) { if (value) { this.setAttribute("disabled", ""); } else { this.removeAttribute("disabled"); } } get autoscroll() { return this.hasAttribute("autoscroll"); } set autoscroll(value) { if (value) { this.setAttribute("autoscroll", ""); } else { this.removeAttribute("autoscroll"); } } get complete() { return !this.delegate.isLoading; } get isActive() { return this.ownerDocument === document && !this.isPreview; } get isPreview() { var _a, _b; return (_b = (_a = this.ownerDocument) === null || _a === void 0 ? void 0 : _a.documentElement) === null || _b === void 0 ? void 0 : _b.hasAttribute("data-turbo-preview"); } }; function frameLoadingStyleFromString(style) { switch (style.toLowerCase()) { case "lazy": return FrameLoadingStyle.lazy; default: return FrameLoadingStyle.eager; } } function expandURL(locatable) { return new URL(locatable.toString(), document.baseURI); } function getAnchor(url) { let anchorMatch; if (url.hash) { return url.hash.slice(1); } else if (anchorMatch = url.href.match(/#(.*)$/)) { return anchorMatch[1]; } } function getAction(form, submitter) { const action = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute("formaction")) || form.getAttribute("action") || form.action; return expandURL(action); } function getExtension(url) { return (getLastPathComponent(url).match(/\.[^.]*$/) || [])[0] || ""; } function isHTML(url) { return !!getExtension(url).match(/^(?:|\.(?:htm|html|xhtml|php))$/); } function isPrefixedBy(baseURL, url) { const prefix2 = getPrefix(url); return baseURL.href === expandURL(prefix2).href || baseURL.href.startsWith(prefix2); } function locationIsVisitable(location2, rootLocation) { return isPrefixedBy(location2, rootLocation) && isHTML(location2); } function getRequestURL(url) { const anchor = getAnchor(url); return anchor != null ? url.href.slice(0, -(anchor.length + 1)) : url.href; } function toCacheKey(url) { return getRequestURL(url); } function urlsAreEqual(left2, right2) { return expandURL(left2).href == expandURL(right2).href; } function getPathComponents(url) { return url.pathname.split("/").slice(1); } function getLastPathComponent(url) { return getPathComponents(url).slice(-1)[0]; } function getPrefix(url) { return addTrailingSlash(url.origin + url.pathname); } function addTrailingSlash(value) { return value.endsWith("/") ? value : value + "/"; } var FetchResponse = class { constructor(response) { this.response = response; } get succeeded() { return this.response.ok; } get failed() { return !this.succeeded; } get clientError() { return this.statusCode >= 400 && this.statusCode <= 499; } get serverError() { return this.statusCode >= 500 && this.statusCode <= 599; } get redirected() { return this.response.redirected; } get location() { return expandURL(this.response.url); } get isHTML() { return this.contentType && this.contentType.match(/^(?:text\/([^\s;,]+\b)?html|application\/xhtml\+xml)\b/); } get statusCode() { return this.response.status; } get contentType() { return this.header("Content-Type"); } get responseText() { return this.response.clone().text(); } get responseHTML() { if (this.isHTML) { return this.response.clone().text(); } else { return Promise.resolve(void 0); } } header(name) { return this.response.headers.get(name); } }; function activateScriptElement(element) { if (element.getAttribute("data-turbo-eval") == "false") { return element; } else { const createdScriptElement = document.createElement("script"); const cspNonce = getMetaContent("csp-nonce"); if (cspNonce) { createdScriptElement.nonce = cspNonce; } createdScriptElement.textContent = element.textContent; createdScriptElement.async = false; copyElementAttributes(createdScriptElement, element); return createdScriptElement; } } function copyElementAttributes(destinationElement, sourceElement) { for (const { name, value } of sourceElement.attributes) { destinationElement.setAttribute(name, value); } } function createDocumentFragment(html) { const template = document.createElement("template"); template.innerHTML = html; return template.content; } function dispatch2(eventName, { target, cancelable, detail } = {}) { const event = new CustomEvent(eventName, { cancelable, bubbles: true, composed: true, detail }); if (target && target.isConnected) { target.dispatchEvent(event); } else { document.documentElement.dispatchEvent(event); } return event; } function nextAnimationFrame() { return new Promise((resolve) => requestAnimationFrame(() => resolve())); } function nextEventLoopTick() { return new Promise((resolve) => setTimeout(() => resolve(), 0)); } function nextMicrotask() { return Promise.resolve(); } function parseHTMLDocument(html = "") { return new DOMParser().parseFromString(html, "text/html"); } function unindent(strings, ...values) { const lines = interpolate(strings, values).replace(/^\n/, "").split("\n"); const match = lines[0].match(/^\s+/); const indent = match ? match[0].length : 0; return lines.map((line) => line.slice(indent)).join("\n"); } function interpolate(strings, values) { return strings.reduce((result, string, i3) => { const value = values[i3] == void 0 ? "" : values[i3]; return result + string + value; }, ""); } function uuid() { return Array.from({ length: 36 }).map((_3, i3) => { if (i3 == 8 || i3 == 13 || i3 == 18 || i3 == 23) { return "-"; } else if (i3 == 14) { return "4"; } else if (i3 == 19) { return (Math.floor(Math.random() * 4) + 8).toString(16); } else { return Math.floor(Math.random() * 15).toString(16); } }).join(""); } function getAttribute(attributeName, ...elements) { for (const value of elements.map((element) => element === null || element === void 0 ? void 0 : element.getAttribute(attributeName))) { if (typeof value == "string") return value; } return null; } function hasAttribute(attributeName, ...elements) { return elements.some((element) => element && element.hasAttribute(attributeName)); } function markAsBusy(...elements) { for (const element of elements) { if (element.localName == "turbo-frame") { element.setAttribute("busy", ""); } element.setAttribute("aria-busy", "true"); } } function clearBusyState(...elements) { for (const element of elements) { if (element.localName == "turbo-frame") { element.removeAttribute("busy"); } element.removeAttribute("aria-busy"); } } function waitForLoad(element, timeoutInMilliseconds = 2e3) { return new Promise((resolve) => { const onComplete = () => { element.removeEventListener("error", onComplete); element.removeEventListener("load", onComplete); resolve(); }; element.addEventListener("load", onComplete, { once: true }); element.addEventListener("error", onComplete, { once: true }); setTimeout(resolve, timeoutInMilliseconds); }); } function getHistoryMethodForAction(action) { switch (action) { case "replace": return history.replaceState; case "advance": case "restore": return history.pushState; } } function isAction(action) { return action == "advance" || action == "replace" || action == "restore"; } function getVisitAction(...elements) { const action = getAttribute("data-turbo-action", ...elements); return isAction(action) ? action : null; } function getMetaElement(name) { return document.querySelector(`meta[name="${name}"]`); } function getMetaContent(name) { const element = getMetaElement(name); return element && element.content; } function setMetaContent(name, content2) { let element = getMetaElement(name); if (!element) { element = document.createElement("meta"); element.setAttribute("name", name); document.head.appendChild(element); } element.setAttribute("content", content2); return element; } function findClosestRecursively(element, selector) { var _a; if (element instanceof Element) { return element.closest(selector) || findClosestRecursively(element.assignedSlot || ((_a = element.getRootNode()) === null || _a === void 0 ? void 0 : _a.host), selector); } } var FetchMethod; (function(FetchMethod2) { FetchMethod2[FetchMethod2["get"] = 0] = "get"; FetchMethod2[FetchMethod2["post"] = 1] = "post"; FetchMethod2[FetchMethod2["put"] = 2] = "put"; FetchMethod2[FetchMethod2["patch"] = 3] = "patch"; FetchMethod2[FetchMethod2["delete"] = 4] = "delete"; })(FetchMethod || (FetchMethod = {})); function fetchMethodFromString(method) { switch (method.toLowerCase()) { case "get": return FetchMethod.get; case "post": return FetchMethod.post; case "put": return FetchMethod.put; case "patch": return FetchMethod.patch; case "delete": return FetchMethod.delete; } } var FetchRequest = class { constructor(delegate, method, location2, body = new URLSearchParams(), target = null) { this.abortController = new AbortController(); this.resolveRequestPromise = (_value) => { }; this.delegate = delegate; this.method = method; this.headers = this.defaultHeaders; this.body = body; this.url = location2; this.target = target; } get location() { return this.url; } get params() { return this.url.searchParams; } get entries() { return this.body ? Array.from(this.body.entries()) : []; } cancel() { this.abortController.abort(); } async perform() { const { fetchOptions } = this; this.delegate.prepareRequest(this); await this.allowRequestToBeIntercepted(fetchOptions); try { this.delegate.requestStarted(this); const response = await fetch(this.url.href, fetchOptions); return await this.receive(response); } catch (error2) { if (error2.name !== "AbortError") { if (this.willDelegateErrorHandling(error2)) { this.delegate.requestErrored(this, error2); } throw error2; } } finally { this.delegate.requestFinished(this); } } async receive(response) { const fetchResponse = new FetchResponse(response); const event = dispatch2("turbo:before-fetch-response", { cancelable: true, detail: { fetchResponse }, target: this.target }); if (event.defaultPrevented) { this.delegate.requestPreventedHandlingResponse(this, fetchResponse); } else if (fetchResponse.succeeded) { this.delegate.requestSucceededWithResponse(this, fetchResponse); } else { this.delegate.requestFailedWithResponse(this, fetchResponse); } return fetchResponse; } get fetchOptions() { var _a; return { method: FetchMethod[this.method].toUpperCase(), credentials: "same-origin", headers: this.headers, redirect: "follow", body: this.isSafe ? null : this.body, signal: this.abortSignal, referrer: (_a = this.delegate.referrer) === null || _a === void 0 ? void 0 : _a.href }; } get defaultHeaders() { return { Accept: "text/html, application/xhtml+xml" }; } get isSafe() { return this.method === FetchMethod.get; } get abortSignal() { return this.abortController.signal; } acceptResponseType(mimeType) { this.headers["Accept"] = [mimeType, this.headers["Accept"]].join(", "); } async allowRequestToBeIntercepted(fetchOptions) { const requestInterception = new Promise((resolve) => this.resolveRequestPromise = resolve); const event = dispatch2("turbo:before-fetch-request", { cancelable: true, detail: { fetchOptions, url: this.url, resume: this.resolveRequestPromise }, target: this.target }); if (event.defaultPrevented) await requestInterception; } willDelegateErrorHandling(error2) { const event = dispatch2("turbo:fetch-request-error", { target: this.target, cancelable: true, detail: { request: this, error: error2 } }); return !event.defaultPrevented; } }; var AppearanceObserver = class { constructor(delegate, element) { this.started = false; this.intersect = (entries) => { const lastEntry = entries.slice(-1)[0]; if (lastEntry === null || lastEntry === void 0 ? void 0 : lastEntry.isIntersecting) { this.delegate.elementAppearedInViewport(this.element); } }; this.delegate = delegate; this.element = element; this.intersectionObserver = new IntersectionObserver(this.intersect); } start() { if (!this.started) { this.started = true; this.intersectionObserver.observe(this.element); } } stop() { if (this.started) { this.started = false; this.intersectionObserver.unobserve(this.element); } } }; var StreamMessage = class { static wrap(message2) { if (typeof message2 == "string") { return new this(createDocumentFragment(message2)); } else { return message2; } } constructor(fragment) { this.fragment = importStreamElements(fragment); } }; StreamMessage.contentType = "text/vnd.turbo-stream.html"; function importStreamElements(fragment) { for (const element of fragment.querySelectorAll("turbo-stream")) { const streamElement = document.importNode(element, true); for (const inertScriptElement of streamElement.templateElement.content.querySelectorAll("script")) { inertScriptElement.replaceWith(activateScriptElement(inertScriptElement)); } element.replaceWith(streamElement); } return fragment; } var FormSubmissionState; (function(FormSubmissionState2) { FormSubmissionState2[FormSubmissionState2["initialized"] = 0] = "initialized"; FormSubmissionState2[FormSubmissionState2["requesting"] = 1] = "requesting"; FormSubmissionState2[FormSubmissionState2["waiting"] = 2] = "waiting"; FormSubmissionState2[FormSubmissionState2["receiving"] = 3] = "receiving"; FormSubmissionState2[FormSubmissionState2["stopping"] = 4] = "stopping"; FormSubmissionState2[FormSubmissionState2["stopped"] = 5] = "stopped"; })(FormSubmissionState || (FormSubmissionState = {})); var FormEnctype; (function(FormEnctype2) { FormEnctype2["urlEncoded"] = "application/x-www-form-urlencoded"; FormEnctype2["multipart"] = "multipart/form-data"; FormEnctype2["plain"] = "text/plain"; })(FormEnctype || (FormEnctype = {})); function formEnctypeFromString(encoding) { switch (encoding.toLowerCase()) { case FormEnctype.multipart: return FormEnctype.multipart; case FormEnctype.plain: return FormEnctype.plain; default: return FormEnctype.urlEncoded; } } var FormSubmission = class { static confirmMethod(message2, _element, _submitter) { return Promise.resolve(confirm(message2)); } constructor(delegate, formElement, submitter, mustRedirect = false) { this.state = FormSubmissionState.initialized; this.delegate = delegate; this.formElement = formElement; this.submitter = submitter; this.formData = buildFormData(formElement, submitter); this.location = expandURL(this.action); if (this.method == FetchMethod.get) { mergeFormDataEntries(this.location, [...this.body.entries()]); } this.fetchRequest = new FetchRequest(this, this.method, this.location, this.body, this.formElement); this.mustRedirect = mustRedirect; } get method() { var _a; const method = ((_a = this.submitter) === null || _a === void 0 ? void 0 : _a.getAttribute("formmethod")) || this.formElement.getAttribute("method") || ""; return fetchMethodFromString(method.toLowerCase()) || FetchMethod.get; } get action() { var _a; const formElementAction = typeof this.formElement.action === "string" ? this.formElement.action : null; if ((_a = this.submitter) === null || _a === void 0 ? void 0 : _a.hasAttribute("formaction")) { return this.submitter.getAttribute("formaction") || ""; } else { return this.formElement.getAttribute("action") || formElementAction || ""; } } get body() { if (this.enctype == FormEnctype.urlEncoded || this.method == FetchMethod.get) { return new URLSearchParams(this.stringFormData); } else { return this.formData; } } get enctype() { var _a; return formEnctypeFromString(((_a = this.submitter) === null || _a === void 0 ? void 0 : _a.getAttribute("formenctype")) || this.formElement.enctype); } get isSafe() { return this.fetchRequest.isSafe; } get stringFormData() { return [...this.formData].reduce((entries, [name, value]) => { return entries.concat(typeof value == "string" ? [[name, value]] : []); }, []); } async start() { const { initialized, requesting } = FormSubmissionState; const confirmationMessage = getAttribute("data-turbo-confirm", this.submitter, this.formElement); if (typeof confirmationMessage === "string") { const answer = await FormSubmission.confirmMethod(confirmationMessage, this.formElement, this.submitter); if (!answer) { return; } } if (this.state == initialized) { this.state = requesting; return this.fetchRequest.perform(); } } stop() { const { stopping, stopped } = FormSubmissionState; if (this.state != stopping && this.state != stopped) { this.state = stopping; this.fetchRequest.cancel(); return true; } } prepareRequest(request) { if (!request.isSafe) { const token = getCookieValue(getMetaContent("csrf-param")) || getMetaContent("csrf-token"); if (token) { request.headers["X-CSRF-Token"] = token; } } if (this.requestAcceptsTurboStreamResponse(request)) { request.acceptResponseType(StreamMessage.contentType); } } requestStarted(_request) { var _a; this.state = FormSubmissionState.waiting; (_a = this.submitter) === null || _a === void 0 ? void 0 : _a.setAttribute("disabled", ""); this.setSubmitsWith(); dispatch2("turbo:submit-start", { target: this.formElement, detail: { formSubmission: this } }); this.delegate.formSubmissionStarted(this); } requestPreventedHandlingResponse(request, response) { this.result = { success: response.succeeded, fetchResponse: response }; } requestSucceededWithResponse(request, response) { if (response.clientError || response.serverError) { this.delegate.formSubmissionFailedWithResponse(this, response); } else if (this.requestMustRedirect(request) && responseSucceededWithoutRedirect(response)) { const error2 = new Error("Form responses must redirect to another location"); this.delegate.formSubmissionErrored(this, error2); } else { this.state = FormSubmissionState.receiving; this.result = { success: true, fetchResponse: response }; this.delegate.formSubmissionSucceededWithResponse(this, response); } } requestFailedWithResponse(request, response) { this.result = { success: false, fetchResponse: response }; this.delegate.formSubmissionFailedWithResponse(this, response); } requestErrored(request, error2) { this.result = { success: false, error: error2 }; this.delegate.formSubmissionErrored(this, error2); } requestFinished(_request) { var _a; this.state = FormSubmissionState.stopped; (_a = this.submitter) === null || _a === void 0 ? void 0 : _a.removeAttribute("disabled"); this.resetSubmitterText(); dispatch2("turbo:submit-end", { target: this.formElement, detail: Object.assign({ formSubmission: this }, this.result) }); this.delegate.formSubmissionFinished(this); } setSubmitsWith() { if (!this.submitter || !this.submitsWith) return; if (this.submitter.matches("button")) { this.originalSubmitText = this.submitter.innerHTML; this.submitter.innerHTML = this.submitsWith; } else if (this.submitter.matches("input")) { const input = this.submitter; this.originalSubmitText = input.value; input.value = this.submitsWith; } } resetSubmitterText() { if (!this.submitter || !this.originalSubmitText) return; if (this.submitter.matches("button")) { this.submitter.innerHTML = this.originalSubmitText; } else if (this.submitter.matches("input")) { const input = this.submitter; input.value = this.originalSubmitText; } } requestMustRedirect(request) { return !request.isSafe && this.mustRedirect; } requestAcceptsTurboStreamResponse(request) { return !request.isSafe || hasAttribute("data-turbo-stream", this.submitter, this.formElement); } get submitsWith() { var _a; return (_a = this.submitter) === null || _a === void 0 ? void 0 : _a.getAttribute("data-turbo-submits-with"); } }; function buildFormData(formElement, submitter) { const formData = new FormData(formElement); const name = submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute("name"); const value = submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute("value"); if (name) { formData.append(name, value || ""); } return formData; } function getCookieValue(cookieName) { if (cookieName != null) { const cookies = document.cookie ? document.cookie.split("; ") : []; const cookie = cookies.find((cookie2) => cookie2.startsWith(cookieName)); if (cookie) { const value = cookie.split("=").slice(1).join("="); return value ? decodeURIComponent(value) : void 0; } } } function responseSucceededWithoutRedirect(response) { return response.statusCode == 200 && !response.redirected; } function mergeFormDataEntries(url, entries) { const searchParams = new URLSearchParams(); for (const [name, value] of entries) { if (value instanceof File) continue; searchParams.append(name, value); } url.search = searchParams.toString(); return url; } var Snapshot = class { constructor(element) { this.element = element; } get activeElement() { return this.element.ownerDocument.activeElement; } get children() { return [...this.element.children]; } hasAnchor(anchor) { return this.getElementForAnchor(anchor) != null; } getElementForAnchor(anchor) { return anchor ? this.element.querySelector(`[id='${anchor}'], a[name='${anchor}']`) : null; } get isConnected() { return this.element.isConnected; } get firstAutofocusableElement() { const inertDisabledOrHidden = "[inert], :disabled, [hidden], details:not([open]), dialog:not([open])"; for (const element of this.element.querySelectorAll("[autofocus]")) { if (element.closest(inertDisabledOrHidden) == null) return element; else continue; } return null; } get permanentElements() { return queryPermanentElementsAll(this.element); } getPermanentElementById(id2) { return getPermanentElementById(this.element, id2); } getPermanentElementMapForSnapshot(snapshot) { const permanentElementMap = {}; for (const currentPermanentElement of this.permanentElements) { const { id: id2 } = currentPermanentElement; const newPermanentElement = snapshot.getPermanentElementById(id2); if (newPermanentElement) { permanentElementMap[id2] = [currentPermanentElement, newPermanentElement]; } } return permanentElementMap; } }; function getPermanentElementById(node, id2) { return node.querySelector(`#${id2}[data-turbo-permanent]`); } function queryPermanentElementsAll(node) { return node.querySelectorAll("[id][data-turbo-permanent]"); } var FormSubmitObserver = class { constructor(delegate, eventTarget) { this.started = false; this.submitCaptured = () => { this.eventTarget.removeEventListener("submit", this.submitBubbled, false); this.eventTarget.addEventListener("submit", this.submitBubbled, false); }; this.submitBubbled = (event) => { if (!event.defaultPrevented) { const form = event.target instanceof HTMLFormElement ? event.target : void 0; const submitter = event.submitter || void 0; if (form && submissionDoesNotDismissDialog(form, submitter) && submissionDoesNotTargetIFrame(form, submitter) && this.delegate.willSubmitForm(form, submitter)) { event.preventDefault(); event.stopImmediatePropagation(); this.delegate.formSubmitted(form, submitter); } } }; this.delegate = delegate; this.eventTarget = eventTarget; } start() { if (!this.started) { this.eventTarget.addEventListener("submit", this.submitCaptured, true); this.started = true; } } stop() { if (this.started) { this.eventTarget.removeEventListener("submit", this.submitCaptured, true); this.started = false; } } }; function submissionDoesNotDismissDialog(form, submitter) { const method = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute("formmethod")) || form.getAttribute("method"); return method != "dialog"; } function submissionDoesNotTargetIFrame(form, submitter) { if ((submitter === null || submitter === void 0 ? void 0 : submitter.hasAttribute("formtarget")) || form.hasAttribute("target")) { const target = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute("formtarget")) || form.target; for (const element of document.getElementsByName(target)) { if (element instanceof HTMLIFrameElement) return false; } return true; } else { return true; } } var View = class { constructor(delegate, element) { this.resolveRenderPromise = (_value) => { }; this.resolveInterceptionPromise = (_value) => { }; this.delegate = delegate; this.element = element; } scrollToAnchor(anchor) { const element = this.snapshot.getElementForAnchor(anchor); if (element) { this.scrollToElement(element); this.focusElement(element); } else { this.scrollToPosition({ x: 0, y: 0 }); } } scrollToAnchorFromLocation(location2) { this.scrollToAnchor(getAnchor(location2)); } scrollToElement(element) { element.scrollIntoView(); } focusElement(element) { if (element instanceof HTMLElement) { if (element.hasAttribute("tabindex")) { element.focus(); } else { element.setAttribute("tabindex", "-1"); element.focus(); element.removeAttribute("tabindex"); } } } scrollToPosition({ x: x3, y: y3 }) { this.scrollRoot.scrollTo(x3, y3); } scrollToTop() { this.scrollToPosition({ x: 0, y: 0 }); } get scrollRoot() { return window; } async render(renderer) { const { isPreview, shouldRender, newSnapshot: snapshot } = renderer; if (shouldRender) { try { this.renderPromise = new Promise((resolve) => this.resolveRenderPromise = resolve); this.renderer = renderer; await this.prepareToRenderSnapshot(renderer); const renderInterception = new Promise((resolve) => this.resolveInterceptionPromise = resolve); const options = { resume: this.resolveInterceptionPromise, render: this.renderer.renderElement }; const immediateRender = this.delegate.allowsImmediateRender(snapshot, options); if (!immediateRender) await renderInterception; await this.renderSnapshot(renderer); this.delegate.viewRenderedSnapshot(snapshot, isPreview); this.delegate.preloadOnLoadLinksForView(this.element); this.finishRenderingSnapshot(renderer); } finally { delete this.renderer; this.resolveRenderPromise(void 0); delete this.renderPromise; } } else { this.invalidate(renderer.reloadReason); } } invalidate(reason) { this.delegate.viewInvalidated(reason); } async prepareToRenderSnapshot(renderer) { this.markAsPreview(renderer.isPreview); await renderer.prepareToRender(); } markAsPreview(isPreview) { if (isPreview) { this.element.setAttribute("data-turbo-preview", ""); } else { this.element.removeAttribute("data-turbo-preview"); } } async renderSnapshot(renderer) { await renderer.render(); } finishRenderingSnapshot(renderer) { renderer.finishRendering(); } }; var FrameView = class extends View { missing() { this.element.innerHTML = `Content missing`; } get snapshot() { return new Snapshot(this.element); } }; var LinkInterceptor = class { constructor(delegate, element) { this.clickBubbled = (event) => { if (this.respondsToEventTarget(event.target)) { this.clickEvent = event; } else { delete this.clickEvent; } }; this.linkClicked = (event) => { if (this.clickEvent && this.respondsToEventTarget(event.target) && event.target instanceof Element) { if (this.delegate.shouldInterceptLinkClick(event.target, event.detail.url, event.detail.originalEvent)) { this.clickEvent.preventDefault(); event.preventDefault(); this.delegate.linkClickIntercepted(event.target, event.detail.url, event.detail.originalEvent); } } delete this.clickEvent; }; this.willVisit = (_event) => { delete this.clickEvent; }; this.delegate = delegate; this.element = element; } start() { this.element.addEventListener("click", this.clickBubbled); document.addEventListener("turbo:click", this.linkClicked); document.addEventListener("turbo:before-visit", this.willVisit); } stop() { this.element.removeEventListener("click", this.clickBubbled); document.removeEventListener("turbo:click", this.linkClicked); document.removeEventListener("turbo:before-visit", this.willVisit); } respondsToEventTarget(target) { const element = target instanceof Element ? target : target instanceof Node ? target.parentElement : null; return element && element.closest("turbo-frame, html") == this.element; } }; var LinkClickObserver = class { constructor(delegate, eventTarget) { this.started = false; this.clickCaptured = () => { this.eventTarget.removeEventListener("click", this.clickBubbled, false); this.eventTarget.addEventListener("click", this.clickBubbled, false); }; this.clickBubbled = (event) => { if (event instanceof MouseEvent && this.clickEventIsSignificant(event)) { const target = event.composedPath && event.composedPath()[0] || event.target; const link = this.findLinkFromClickTarget(target); if (link && doesNotTargetIFrame(link)) { const location2 = this.getLocationForLink(link); if (this.delegate.willFollowLinkToLocation(link, location2, event)) { event.preventDefault(); this.delegate.followedLinkToLocation(link, location2); } } } }; this.delegate = delegate; this.eventTarget = eventTarget; } start() { if (!this.started) { this.eventTarget.addEventListener("click", this.clickCaptured, true); this.started = true; } } stop() { if (this.started) { this.eventTarget.removeEventListener("click", this.clickCaptured, true); this.started = false; } } clickEventIsSignificant(event) { return !(event.target && event.target.isContentEditable || event.defaultPrevented || event.which > 1 || event.altKey || event.ctrlKey || event.metaKey || event.shiftKey); } findLinkFromClickTarget(target) { return findClosestRecursively(target, "a[href]:not([target^=_]):not([download])"); } getLocationForLink(link) { return expandURL(link.getAttribute("href") || ""); } }; function doesNotTargetIFrame(anchor) { if (anchor.hasAttribute("target")) { for (const element of document.getElementsByName(anchor.target)) { if (element instanceof HTMLIFrameElement) return false; } return true; } else { return true; } } var FormLinkClickObserver = class { constructor(delegate, element) { this.delegate = delegate; this.linkInterceptor = new LinkClickObserver(this, element); } start() { this.linkInterceptor.start(); } stop() { this.linkInterceptor.stop(); } willFollowLinkToLocation(link, location2, originalEvent) { return this.delegate.willSubmitFormLinkToLocation(link, location2, originalEvent) && link.hasAttribute("data-turbo-method"); } followedLinkToLocation(link, location2) { const form = document.createElement("form"); const type = "hidden"; for (const [name, value] of location2.searchParams) { form.append(Object.assign(document.createElement("input"), { type, name, value })); } const action = Object.assign(location2, { search: "" }); form.setAttribute("data-turbo", "true"); form.setAttribute("action", action.href); form.setAttribute("hidden", ""); const method = link.getAttribute("data-turbo-method"); if (method) form.setAttribute("method", method); const turboFrame = link.getAttribute("data-turbo-frame"); if (turboFrame) form.setAttribute("data-turbo-frame", turboFrame); const turboAction = getVisitAction(link); if (turboAction) form.setAttribute("data-turbo-action", turboAction); const turboConfirm = link.getAttribute("data-turbo-confirm"); if (turboConfirm) form.setAttribute("data-turbo-confirm", turboConfirm); const turboStream = link.hasAttribute("data-turbo-stream"); if (turboStream) form.setAttribute("data-turbo-stream", ""); this.delegate.submittedFormLinkToLocation(link, location2, form); document.body.appendChild(form); form.addEventListener("turbo:submit-end", () => form.remove(), { once: true }); requestAnimationFrame(() => form.requestSubmit()); } }; var Bardo = class { static async preservingPermanentElements(delegate, permanentElementMap, callback) { const bardo = new this(delegate, permanentElementMap); bardo.enter(); await callback(); bardo.leave(); } constructor(delegate, permanentElementMap) { this.delegate = delegate; this.permanentElementMap = permanentElementMap; } enter() { for (const id2 in this.permanentElementMap) { const [currentPermanentElement, newPermanentElement] = this.permanentElementMap[id2]; this.delegate.enteringBardo(currentPermanentElement, newPermanentElement); this.replaceNewPermanentElementWithPlaceholder(newPermanentElement); } } leave() { for (const id2 in this.permanentElementMap) { const [currentPermanentElement] = this.permanentElementMap[id2]; this.replaceCurrentPermanentElementWithClone(currentPermanentElement); this.replacePlaceholderWithPermanentElement(currentPermanentElement); this.delegate.leavingBardo(currentPermanentElement); } } replaceNewPermanentElementWithPlaceholder(permanentElement) { const placeholder = createPlaceholderForPermanentElement(permanentElement); permanentElement.replaceWith(placeholder); } replaceCurrentPermanentElementWithClone(permanentElement) { const clone2 = permanentElement.cloneNode(true); permanentElement.replaceWith(clone2); } replacePlaceholderWithPermanentElement(permanentElement) { const placeholder = this.getPlaceholderById(permanentElement.id); placeholder === null || placeholder === void 0 ? void 0 : placeholder.replaceWith(permanentElement); } getPlaceholderById(id2) { return this.placeholders.find((element) => element.content == id2); } get placeholders() { return [...document.querySelectorAll("meta[name=turbo-permanent-placeholder][content]")]; } }; function createPlaceholderForPermanentElement(permanentElement) { const element = document.createElement("meta"); element.setAttribute("name", "turbo-permanent-placeholder"); element.setAttribute("content", permanentElement.id); return element; } var Renderer = class { constructor(currentSnapshot, newSnapshot, renderElement, isPreview, willRender = true) { this.activeElement = null; this.currentSnapshot = currentSnapshot; this.newSnapshot = newSnapshot; this.isPreview = isPreview; this.willRender = willRender; this.renderElement = renderElement; this.promise = new Promise((resolve, reject) => this.resolvingFunctions = { resolve, reject }); } get shouldRender() { return true; } get reloadReason() { return; } prepareToRender() { return; } finishRendering() { if (this.resolvingFunctions) { this.resolvingFunctions.resolve(); delete this.resolvingFunctions; } } async preservingPermanentElements(callback) { await Bardo.preservingPermanentElements(this, this.permanentElementMap, callback); } focusFirstAutofocusableElement() { const element = this.connectedSnapshot.firstAutofocusableElement; if (elementIsFocusable(element)) { element.focus(); } } enteringBardo(currentPermanentElement) { if (this.activeElement) return; if (currentPermanentElement.contains(this.currentSnapshot.activeElement)) { this.activeElement = this.currentSnapshot.activeElement; } } leavingBardo(currentPermanentElement) { if (currentPermanentElement.contains(this.activeElement) && this.activeElement instanceof HTMLElement) { this.activeElement.focus(); this.activeElement = null; } } get connectedSnapshot() { return this.newSnapshot.isConnected ? this.newSnapshot : this.currentSnapshot; } get currentElement() { return this.currentSnapshot.element; } get newElement() { return this.newSnapshot.element; } get permanentElementMap() { return this.currentSnapshot.getPermanentElementMapForSnapshot(this.newSnapshot); } }; function elementIsFocusable(element) { return element && typeof element.focus == "function"; } var FrameRenderer = class extends Renderer { static renderElement(currentElement, newElement) { var _a; const destinationRange = document.createRange(); destinationRange.selectNodeContents(currentElement); destinationRange.deleteContents(); const frameElement = newElement; const sourceRange = (_a = frameElement.ownerDocument) === null || _a === void 0 ? void 0 : _a.createRange(); if (sourceRange) { sourceRange.selectNodeContents(frameElement); currentElement.appendChild(sourceRange.extractContents()); } } constructor(delegate, currentSnapshot, newSnapshot, renderElement, isPreview, willRender = true) { super(currentSnapshot, newSnapshot, renderElement, isPreview, willRender); this.delegate = delegate; } get shouldRender() { return true; } async render() { await nextAnimationFrame(); this.preservingPermanentElements(() => { this.loadFrameElement(); }); this.scrollFrameIntoView(); await nextAnimationFrame(); this.focusFirstAutofocusableElement(); await nextAnimationFrame(); this.activateScriptElements(); } loadFrameElement() { this.delegate.willRenderFrame(this.currentElement, this.newElement); this.renderElement(this.currentElement, this.newElement); } scrollFrameIntoView() { if (this.currentElement.autoscroll || this.newElement.autoscroll) { const element = this.currentElement.firstElementChild; const block = readScrollLogicalPosition(this.currentElement.getAttribute("data-autoscroll-block"), "end"); const behavior = readScrollBehavior(this.currentElement.getAttribute("data-autoscroll-behavior"), "auto"); if (element) { element.scrollIntoView({ block, behavior }); return true; } } return false; } activateScriptElements() { for (const inertScriptElement of this.newScriptElements) { const activatedScriptElement = activateScriptElement(inertScriptElement); inertScriptElement.replaceWith(activatedScriptElement); } } get newScriptElements() { return this.currentElement.querySelectorAll("script"); } }; function readScrollLogicalPosition(value, defaultValue) { if (value == "end" || value == "start" || value == "center" || value == "nearest") { return value; } else { return defaultValue; } } function readScrollBehavior(value, defaultValue) { if (value == "auto" || value == "smooth") { return value; } else { return defaultValue; } } var ProgressBar = class { static get defaultCSS() { return unindent` .turbo-progress-bar { position: fixed; display: block; top: 0; left: 0; height: 3px; background: #0076ff; z-index: 2147483647; transition: width ${ProgressBar.animationDuration}ms ease-out, opacity ${ProgressBar.animationDuration / 2}ms ${ProgressBar.animationDuration / 2}ms ease-in; transform: translate3d(0, 0, 0); } `; } constructor() { this.hiding = false; this.value = 0; this.visible = false; this.trickle = () => { this.setValue(this.value + Math.random() / 100); }; this.stylesheetElement = this.createStylesheetElement(); this.progressElement = this.createProgressElement(); this.installStylesheetElement(); this.setValue(0); } show() { if (!this.visible) { this.visible = true; this.installProgressElement(); this.startTrickling(); } } hide() { if (this.visible && !this.hiding) { this.hiding = true; this.fadeProgressElement(() => { this.uninstallProgressElement(); this.stopTrickling(); this.visible = false; this.hiding = false; }); } } setValue(value) { this.value = value; this.refresh(); } installStylesheetElement() { document.head.insertBefore(this.stylesheetElement, document.head.firstChild); } installProgressElement() { this.progressElement.style.width = "0"; this.progressElement.style.opacity = "1"; document.documentElement.insertBefore(this.progressElement, document.body); this.refresh(); } fadeProgressElement(callback) { this.progressElement.style.opacity = "0"; setTimeout(callback, ProgressBar.animationDuration * 1.5); } uninstallProgressElement() { if (this.progressElement.parentNode) { document.documentElement.removeChild(this.progressElement); } } startTrickling() { if (!this.trickleInterval) { this.trickleInterval = window.setInterval(this.trickle, ProgressBar.animationDuration); } } stopTrickling() { window.clearInterval(this.trickleInterval); delete this.trickleInterval; } refresh() { requestAnimationFrame(() => { this.progressElement.style.width = `${10 + this.value * 90}%`; }); } createStylesheetElement() { const element = document.createElement("style"); element.type = "text/css"; element.textContent = ProgressBar.defaultCSS; if (this.cspNonce) { element.nonce = this.cspNonce; } return element; } createProgressElement() { const element = document.createElement("div"); element.className = "turbo-progress-bar"; return element; } get cspNonce() { return getMetaContent("csp-nonce"); } }; ProgressBar.animationDuration = 300; var HeadSnapshot = class extends Snapshot { constructor() { super(...arguments); this.detailsByOuterHTML = this.children.filter((element) => !elementIsNoscript(element)).map((element) => elementWithoutNonce(element)).reduce((result, element) => { const { outerHTML } = element; const details = outerHTML in result ? result[outerHTML] : { type: elementType(element), tracked: elementIsTracked(element), elements: [] }; return Object.assign(Object.assign({}, result), { [outerHTML]: Object.assign(Object.assign({}, details), { elements: [...details.elements, element] }) }); }, {}); } get trackedElementSignature() { return Object.keys(this.detailsByOuterHTML).filter((outerHTML) => this.detailsByOuterHTML[outerHTML].tracked).join(""); } getScriptElementsNotInSnapshot(snapshot) { return this.getElementsMatchingTypeNotInSnapshot("script", snapshot); } getStylesheetElementsNotInSnapshot(snapshot) { return this.getElementsMatchingTypeNotInSnapshot("stylesheet", snapshot); } getElementsMatchingTypeNotInSnapshot(matchedType, snapshot) { return Object.keys(this.detailsByOuterHTML).filter((outerHTML) => !(outerHTML in snapshot.detailsByOuterHTML)).map((outerHTML) => this.detailsByOuterHTML[outerHTML]).filter(({ type }) => type == matchedType).map(({ elements: [element] }) => element); } get provisionalElements() { return Object.keys(this.detailsByOuterHTML).reduce((result, outerHTML) => { const { type, tracked, elements } = this.detailsByOuterHTML[outerHTML]; if (type == null && !tracked) { return [...result, ...elements]; } else if (elements.length > 1) { return [...result, ...elements.slice(1)]; } else { return result; } }, []); } getMetaValue(name) { const element = this.findMetaElementByName(name); return element ? element.getAttribute("content") : null; } findMetaElementByName(name) { return Object.keys(this.detailsByOuterHTML).reduce((result, outerHTML) => { const { elements: [element] } = this.detailsByOuterHTML[outerHTML]; return elementIsMetaElementWithName(element, name) ? element : result; }, void 0); } }; function elementType(element) { if (elementIsScript(element)) { return "script"; } else if (elementIsStylesheet(element)) { return "stylesheet"; } } function elementIsTracked(element) { return element.getAttribute("data-turbo-track") == "reload"; } function elementIsScript(element) { const tagName = element.localName; return tagName == "script"; } function elementIsNoscript(element) { const tagName = element.localName; return tagName == "noscript"; } function elementIsStylesheet(element) { const tagName = element.localName; return tagName == "style" || tagName == "link" && element.getAttribute("rel") == "stylesheet"; } function elementIsMetaElementWithName(element, name) { const tagName = element.localName; return tagName == "meta" && element.getAttribute("name") == name; } function elementWithoutNonce(element) { if (element.hasAttribute("nonce")) { element.setAttribute("nonce", ""); } return element; } var PageSnapshot = class extends Snapshot { static fromHTMLString(html = "") { return this.fromDocument(parseHTMLDocument(html)); } static fromElement(element) { return this.fromDocument(element.ownerDocument); } static fromDocument({ head, body }) { return new this(body, new HeadSnapshot(head)); } constructor(element, headSnapshot) { super(element); this.headSnapshot = headSnapshot; } clone() { const clonedElement = this.element.cloneNode(true); const selectElements = this.element.querySelectorAll("select"); const clonedSelectElements = clonedElement.querySelectorAll("select"); for (const [index, source] of selectElements.entries()) { const clone2 = clonedSelectElements[index]; for (const option of clone2.selectedOptions) option.selected = false; for (const option of source.selectedOptions) clone2.options[option.index].selected = true; } for (const clonedPasswordInput of clonedElement.querySelectorAll('input[type="password"]')) { clonedPasswordInput.value = ""; } return new PageSnapshot(clonedElement, this.headSnapshot); } get headElement() { return this.headSnapshot.element; } get rootLocation() { var _a; const root = (_a = this.getSetting("root")) !== null && _a !== void 0 ? _a : "/"; return expandURL(root); } get cacheControlValue() { return this.getSetting("cache-control"); } get isPreviewable() { return this.cacheControlValue != "no-preview"; } get isCacheable() { return this.cacheControlValue != "no-cache"; } get isVisitable() { return this.getSetting("visit-control") != "reload"; } getSetting(name) { return this.headSnapshot.getMetaValue(`turbo-${name}`); } }; var TimingMetric; (function(TimingMetric2) { TimingMetric2["visitStart"] = "visitStart"; TimingMetric2["requestStart"] = "requestStart"; TimingMetric2["requestEnd"] = "requestEnd"; TimingMetric2["visitEnd"] = "visitEnd"; })(TimingMetric || (TimingMetric = {})); var VisitState; (function(VisitState2) { VisitState2["initialized"] = "initialized"; VisitState2["started"] = "started"; VisitState2["canceled"] = "canceled"; VisitState2["failed"] = "failed"; VisitState2["completed"] = "completed"; })(VisitState || (VisitState = {})); var defaultOptions = { action: "advance", historyChanged: false, visitCachedSnapshot: () => { }, willRender: true, updateHistory: true, shouldCacheSnapshot: true, acceptsStreamResponse: false }; var SystemStatusCode; (function(SystemStatusCode2) { SystemStatusCode2[SystemStatusCode2["networkFailure"] = 0] = "networkFailure"; SystemStatusCode2[SystemStatusCode2["timeoutFailure"] = -1] = "timeoutFailure"; SystemStatusCode2[SystemStatusCode2["contentTypeMismatch"] = -2] = "contentTypeMismatch"; })(SystemStatusCode || (SystemStatusCode = {})); var Visit = class { constructor(delegate, location2, restorationIdentifier, options = {}) { this.identifier = uuid(); this.timingMetrics = {}; this.followedRedirect = false; this.historyChanged = false; this.scrolled = false; this.shouldCacheSnapshot = true; this.acceptsStreamResponse = false; this.snapshotCached = false; this.state = VisitState.initialized; this.delegate = delegate; this.location = location2; this.restorationIdentifier = restorationIdentifier || uuid(); const { action, historyChanged, referrer, snapshot, snapshotHTML, response, visitCachedSnapshot, willRender, updateHistory, shouldCacheSnapshot, acceptsStreamResponse } = Object.assign(Object.assign({}, defaultOptions), options); this.action = action; this.historyChanged = historyChanged; this.referrer = referrer; this.snapshot = snapshot; this.snapshotHTML = snapshotHTML; this.response = response; this.isSamePage = this.delegate.locationWithActionIsSamePage(this.location, this.action); this.visitCachedSnapshot = visitCachedSnapshot; this.willRender = willRender; this.updateHistory = updateHistory; this.scrolled = !willRender; this.shouldCacheSnapshot = shouldCacheSnapshot; this.acceptsStreamResponse = acceptsStreamResponse; } get adapter() { return this.delegate.adapter; } get view() { return this.delegate.view; } get history() { return this.delegate.history; } get restorationData() { return this.history.getRestorationDataForIdentifier(this.restorationIdentifier); } get silent() { return this.isSamePage; } start() { if (this.state == VisitState.initialized) { this.recordTimingMetric(TimingMetric.visitStart); this.state = VisitState.started; this.adapter.visitStarted(this); this.delegate.visitStarted(this); } } cancel() { if (this.state == VisitState.started) { if (this.request) { this.request.cancel(); } this.cancelRender(); this.state = VisitState.canceled; } } complete() { if (this.state == VisitState.started) { this.recordTimingMetric(TimingMetric.visitEnd); this.state = VisitState.completed; this.followRedirect(); if (!this.followedRedirect) { this.adapter.visitCompleted(this); this.delegate.visitCompleted(this); } } } fail() { if (this.state == VisitState.started) { this.state = VisitState.failed; this.adapter.visitFailed(this); } } changeHistory() { var _a; if (!this.historyChanged && this.updateHistory) { const actionForHistory = this.location.href === ((_a = this.referrer) === null || _a === void 0 ? void 0 : _a.href) ? "replace" : this.action; const method = getHistoryMethodForAction(actionForHistory); this.history.update(method, this.location, this.restorationIdentifier); this.historyChanged = true; } } issueRequest() { if (this.hasPreloadedResponse()) { this.simulateRequest(); } else if (this.shouldIssueRequest() && !this.request) { this.request = new FetchRequest(this, FetchMethod.get, this.location); this.request.perform(); } } simulateRequest() { if (this.response) { this.startRequest(); this.recordResponse(); this.finishRequest(); } } startRequest() { this.recordTimingMetric(TimingMetric.requestStart); this.adapter.visitRequestStarted(this); } recordResponse(response = this.response) { this.response = response; if (response) { const { statusCode } = response; if (isSuccessful(statusCode)) { this.adapter.visitRequestCompleted(this); } else { this.adapter.visitRequestFailedWithStatusCode(this, statusCode); } } } finishRequest() { this.recordTimingMetric(TimingMetric.requestEnd); this.adapter.visitRequestFinished(this); } loadResponse() { if (this.response) { const { statusCode, responseHTML } = this.response; this.render(async () => { if (this.shouldCacheSnapshot) this.cacheSnapshot(); if (this.view.renderPromise) await this.view.renderPromise; if (isSuccessful(statusCode) && responseHTML != null) { await this.view.renderPage(PageSnapshot.fromHTMLString(responseHTML), false, this.willRender, this); this.performScroll(); this.adapter.visitRendered(this); this.complete(); } else { await this.view.renderError(PageSnapshot.fromHTMLString(responseHTML), this); this.adapter.visitRendered(this); this.fail(); } }); } } getCachedSnapshot() { const snapshot = this.view.getCachedSnapshotForLocation(this.location) || this.getPreloadedSnapshot(); if (snapshot && (!getAnchor(this.location) || snapshot.hasAnchor(getAnchor(this.location)))) { if (this.action == "restore" || snapshot.isPreviewable) { return snapshot; } } } getPreloadedSnapshot() { if (this.snapshotHTML) { return PageSnapshot.fromHTMLString(this.snapshotHTML); } } hasCachedSnapshot() { return this.getCachedSnapshot() != null; } loadCachedSnapshot() { const snapshot = this.getCachedSnapshot(); if (snapshot) { const isPreview = this.shouldIssueRequest(); this.render(async () => { this.cacheSnapshot(); if (this.isSamePage) { this.adapter.visitRendered(this); } else { if (this.view.renderPromise) await this.view.renderPromise; await this.view.renderPage(snapshot, isPreview, this.willRender, this); this.performScroll(); this.adapter.visitRendered(this); if (!isPreview) { this.complete(); } } }); } } followRedirect() { var _a; if (this.redirectedToLocation && !this.followedRedirect && ((_a = this.response) === null || _a === void 0 ? void 0 : _a.redirected)) { this.adapter.visitProposedToLocation(this.redirectedToLocation, { action: "replace", response: this.response, shouldCacheSnapshot: false, willRender: false }); this.followedRedirect = true; } } goToSamePageAnchor() { if (this.isSamePage) { this.render(async () => { this.cacheSnapshot(); this.performScroll(); this.changeHistory(); this.adapter.visitRendered(this); }); } } prepareRequest(request) { if (this.acceptsStreamResponse) { request.acceptResponseType(StreamMessage.contentType); } } requestStarted() { this.startRequest(); } requestPreventedHandlingResponse(_request, _response) { } async requestSucceededWithResponse(request, response) { const responseHTML = await response.responseHTML; const { redirected, statusCode } = response; if (responseHTML == void 0) { this.recordResponse({ statusCode: SystemStatusCode.contentTypeMismatch, redirected }); } else { this.redirectedToLocation = response.redirected ? response.location : void 0; this.recordResponse({ statusCode, responseHTML, redirected }); } } async requestFailedWithResponse(request, response) { const responseHTML = await response.responseHTML; const { redirected, statusCode } = response; if (responseHTML == void 0) { this.recordResponse({ statusCode: SystemStatusCode.contentTypeMismatch, redirected }); } else { this.recordResponse({ statusCode, responseHTML, redirected }); } } requestErrored(_request, _error) { this.recordResponse({ statusCode: SystemStatusCode.networkFailure, redirected: false }); } requestFinished() { this.finishRequest(); } performScroll() { if (!this.scrolled && !this.view.forceReloaded) { if (this.action == "restore") { this.scrollToRestoredPosition() || this.scrollToAnchor() || this.view.scrollToTop(); } else { this.scrollToAnchor() || this.view.scrollToTop(); } if (this.isSamePage) { this.delegate.visitScrolledToSamePageLocation(this.view.lastRenderedLocation, this.location); } this.scrolled = true; } } scrollToRestoredPosition() { const { scrollPosition } = this.restorationData; if (scrollPosition) { this.view.scrollToPosition(scrollPosition); return true; } } scrollToAnchor() { const anchor = getAnchor(this.location); if (anchor != null) { this.view.scrollToAnchor(anchor); return true; } } recordTimingMetric(metric) { this.timingMetrics[metric] = (/* @__PURE__ */ new Date()).getTime(); } getTimingMetrics() { return Object.assign({}, this.timingMetrics); } getHistoryMethodForAction(action) { switch (action) { case "replace": return history.replaceState; case "advance": case "restore": return history.pushState; } } hasPreloadedResponse() { return typeof this.response == "object"; } shouldIssueRequest() { if (this.isSamePage) { return false; } else if (this.action == "restore") { return !this.hasCachedSnapshot(); } else { return this.willRender; } } cacheSnapshot() { if (!this.snapshotCached) { this.view.cacheSnapshot(this.snapshot).then((snapshot) => snapshot && this.visitCachedSnapshot(snapshot)); this.snapshotCached = true; } } async render(callback) { this.cancelRender(); await new Promise((resolve) => { this.frame = requestAnimationFrame(() => resolve()); }); await callback(); delete this.frame; } cancelRender() { if (this.frame) { cancelAnimationFrame(this.frame); delete this.frame; } } }; function isSuccessful(statusCode) { return statusCode >= 200 && statusCode < 300; } var BrowserAdapter = class { constructor(session2) { this.progressBar = new ProgressBar(); this.showProgressBar = () => { this.progressBar.show(); }; this.session = session2; } visitProposedToLocation(location2, options) { this.navigator.startVisit(location2, (options === null || options === void 0 ? void 0 : options.restorationIdentifier) || uuid(), options); } visitStarted(visit2) { this.location = visit2.location; visit2.loadCachedSnapshot(); visit2.issueRequest(); visit2.goToSamePageAnchor(); } visitRequestStarted(visit2) { this.progressBar.setValue(0); if (visit2.hasCachedSnapshot() || visit2.action != "restore") { this.showVisitProgressBarAfterDelay(); } else { this.showProgressBar(); } } visitRequestCompleted(visit2) { visit2.loadResponse(); } visitRequestFailedWithStatusCode(visit2, statusCode) { switch (statusCode) { case SystemStatusCode.networkFailure: case SystemStatusCode.timeoutFailure: case SystemStatusCode.contentTypeMismatch: return this.reload({ reason: "request_failed", context: { statusCode } }); default: return visit2.loadResponse(); } } visitRequestFinished(_visit) { this.progressBar.setValue(1); this.hideVisitProgressBar(); } visitCompleted(_visit) { } pageInvalidated(reason) { this.reload(reason); } visitFailed(_visit) { } visitRendered(_visit) { } formSubmissionStarted(_formSubmission) { this.progressBar.setValue(0); this.showFormProgressBarAfterDelay(); } formSubmissionFinished(_formSubmission) { this.progressBar.setValue(1); this.hideFormProgressBar(); } showVisitProgressBarAfterDelay() { this.visitProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay); } hideVisitProgressBar() { this.progressBar.hide(); if (this.visitProgressBarTimeout != null) { window.clearTimeout(this.visitProgressBarTimeout); delete this.visitProgressBarTimeout; } } showFormProgressBarAfterDelay() { if (this.formProgressBarTimeout == null) { this.formProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay); } } hideFormProgressBar() { this.progressBar.hide(); if (this.formProgressBarTimeout != null) { window.clearTimeout(this.formProgressBarTimeout); delete this.formProgressBarTimeout; } } reload(reason) { var _a; dispatch2("turbo:reload", { detail: reason }); window.location.href = ((_a = this.location) === null || _a === void 0 ? void 0 : _a.toString()) || window.location.href; } get navigator() { return this.session.navigator; } }; var CacheObserver = class { constructor() { this.selector = "[data-turbo-temporary]"; this.deprecatedSelector = "[data-turbo-cache=false]"; this.started = false; this.removeTemporaryElements = (_event) => { for (const element of this.temporaryElements) { element.remove(); } }; } start() { if (!this.started) { this.started = true; addEventListener("turbo:before-cache", this.removeTemporaryElements, false); } } stop() { if (this.started) { this.started = false; removeEventListener("turbo:before-cache", this.removeTemporaryElements, false); } } get temporaryElements() { return [...document.querySelectorAll(this.selector), ...this.temporaryElementsWithDeprecation]; } get temporaryElementsWithDeprecation() { const elements = document.querySelectorAll(this.deprecatedSelector); if (elements.length) { console.warn(`The ${this.deprecatedSelector} selector is deprecated and will be removed in a future version. Use ${this.selector} instead.`); } return [...elements]; } }; var FrameRedirector = class { constructor(session2, element) { this.session = session2; this.element = element; this.linkInterceptor = new LinkInterceptor(this, element); this.formSubmitObserver = new FormSubmitObserver(this, element); } start() { this.linkInterceptor.start(); this.formSubmitObserver.start(); } stop() { this.linkInterceptor.stop(); this.formSubmitObserver.stop(); } shouldInterceptLinkClick(element, _location, _event) { return this.shouldRedirect(element); } linkClickIntercepted(element, url, event) { const frame = this.findFrameElement(element); if (frame) { frame.delegate.linkClickIntercepted(element, url, event); } } willSubmitForm(element, submitter) { return element.closest("turbo-frame") == null && this.shouldSubmit(element, submitter) && this.shouldRedirect(element, submitter); } formSubmitted(element, submitter) { const frame = this.findFrameElement(element, submitter); if (frame) { frame.delegate.formSubmitted(element, submitter); } } shouldSubmit(form, submitter) { var _a; const action = getAction(form, submitter); const meta = this.element.ownerDocument.querySelector(`meta[name="turbo-root"]`); const rootLocation = expandURL((_a = meta === null || meta === void 0 ? void 0 : meta.content) !== null && _a !== void 0 ? _a : "/"); return this.shouldRedirect(form, submitter) && locationIsVisitable(action, rootLocation); } shouldRedirect(element, submitter) { const isNavigatable = element instanceof HTMLFormElement ? this.session.submissionIsNavigatable(element, submitter) : this.session.elementIsNavigatable(element); if (isNavigatable) { const frame = this.findFrameElement(element, submitter); return frame ? frame != element.closest("turbo-frame") : false; } else { return false; } } findFrameElement(element, submitter) { const id2 = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute("data-turbo-frame")) || element.getAttribute("data-turbo-frame"); if (id2 && id2 != "_top") { const frame = this.element.querySelector(`#${id2}:not([disabled])`); if (frame instanceof FrameElement) { return frame; } } } }; var History = class { constructor(delegate) { this.restorationIdentifier = uuid(); this.restorationData = {}; this.started = false; this.pageLoaded = false; this.onPopState = (event) => { if (this.shouldHandlePopState()) { const { turbo } = event.state || {}; if (turbo) { this.location = new URL(window.location.href); const { restorationIdentifier } = turbo; this.restorationIdentifier = restorationIdentifier; this.delegate.historyPoppedToLocationWithRestorationIdentifier(this.location, restorationIdentifier); } } }; this.onPageLoad = async (_event) => { await nextMicrotask(); this.pageLoaded = true; }; this.delegate = delegate; } start() { if (!this.started) { addEventListener("popstate", this.onPopState, false); addEventListener("load", this.onPageLoad, false); this.started = true; this.replace(new URL(window.location.href)); } } stop() { if (this.started) { removeEventListener("popstate", this.onPopState, false); removeEventListener("load", this.onPageLoad, false); this.started = false; } } push(location2, restorationIdentifier) { this.update(history.pushState, location2, restorationIdentifier); } replace(location2, restorationIdentifier) { this.update(history.replaceState, location2, restorationIdentifier); } update(method, location2, restorationIdentifier = uuid()) { const state = { turbo: { restorationIdentifier } }; method.call(history, state, "", location2.href); this.location = location2; this.restorationIdentifier = restorationIdentifier; } getRestorationDataForIdentifier(restorationIdentifier) { return this.restorationData[restorationIdentifier] || {}; } updateRestorationData(additionalData) { const { restorationIdentifier } = this; const restorationData = this.restorationData[restorationIdentifier]; this.restorationData[restorationIdentifier] = Object.assign(Object.assign({}, restorationData), additionalData); } assumeControlOfScrollRestoration() { var _a; if (!this.previousScrollRestoration) { this.previousScrollRestoration = (_a = history.scrollRestoration) !== null && _a !== void 0 ? _a : "auto"; history.scrollRestoration = "manual"; } } relinquishControlOfScrollRestoration() { if (this.previousScrollRestoration) { history.scrollRestoration = this.previousScrollRestoration; delete this.previousScrollRestoration; } } shouldHandlePopState() { return this.pageIsLoaded(); } pageIsLoaded() { return this.pageLoaded || document.readyState == "complete"; } }; var Navigator = class { constructor(delegate) { this.delegate = delegate; } proposeVisit(location2, options = {}) { if (this.delegate.allowsVisitingLocationWithAction(location2, options.action)) { if (locationIsVisitable(location2, this.view.snapshot.rootLocation)) { this.delegate.visitProposedToLocation(location2, options); } else { window.location.href = location2.toString(); } } } startVisit(locatable, restorationIdentifier, options = {}) { this.stop(); this.currentVisit = new Visit(this, expandURL(locatable), restorationIdentifier, Object.assign({ referrer: this.location }, options)); this.currentVisit.start(); } submitForm(form, submitter) { this.stop(); this.formSubmission = new FormSubmission(this, form, submitter, true); this.formSubmission.start(); } stop() { if (this.formSubmission) { this.formSubmission.stop(); delete this.formSubmission; } if (this.currentVisit) { this.currentVisit.cancel(); delete this.currentVisit; } } get adapter() { return this.delegate.adapter; } get view() { return this.delegate.view; } get history() { return this.delegate.history; } formSubmissionStarted(formSubmission) { if (typeof this.adapter.formSubmissionStarted === "function") { this.adapter.formSubmissionStarted(formSubmission); } } async formSubmissionSucceededWithResponse(formSubmission, fetchResponse) { if (formSubmission == this.formSubmission) { const responseHTML = await fetchResponse.responseHTML; if (responseHTML) { const shouldCacheSnapshot = formSubmission.isSafe; if (!shouldCacheSnapshot) { this.view.clearSnapshotCache(); } const { statusCode, redirected } = fetchResponse; const action = this.getActionForFormSubmission(formSubmission); const visitOptions = { action, shouldCacheSnapshot, response: { statusCode, responseHTML, redirected } }; this.proposeVisit(fetchResponse.location, visitOptions); } } } async formSubmissionFailedWithResponse(formSubmission, fetchResponse) { const responseHTML = await fetchResponse.responseHTML; if (responseHTML) { const snapshot = PageSnapshot.fromHTMLString(responseHTML); if (fetchResponse.serverError) { await this.view.renderError(snapshot, this.currentVisit); } else { await this.view.renderPage(snapshot, false, true, this.currentVisit); } this.view.scrollToTop(); this.view.clearSnapshotCache(); } } formSubmissionErrored(formSubmission, error2) { console.error(error2); } formSubmissionFinished(formSubmission) { if (typeof this.adapter.formSubmissionFinished === "function") { this.adapter.formSubmissionFinished(formSubmission); } } visitStarted(visit2) { this.delegate.visitStarted(visit2); } visitCompleted(visit2) { this.delegate.visitCompleted(visit2); } locationWithActionIsSamePage(location2, action) { const anchor = getAnchor(location2); const currentAnchor = getAnchor(this.view.lastRenderedLocation); const isRestorationToTop = action === "restore" && typeof anchor === "undefined"; return action !== "replace" && getRequestURL(location2) === getRequestURL(this.view.lastRenderedLocation) && (isRestorationToTop || anchor != null && anchor !== currentAnchor); } visitScrolledToSamePageLocation(oldURL, newURL) { this.delegate.visitScrolledToSamePageLocation(oldURL, newURL); } get location() { return this.history.location; } get restorationIdentifier() { return this.history.restorationIdentifier; } getActionForFormSubmission({ submitter, formElement }) { return getVisitAction(submitter, formElement) || "advance"; } }; var PageStage; (function(PageStage2) { PageStage2[PageStage2["initial"] = 0] = "initial"; PageStage2[PageStage2["loading"] = 1] = "loading"; PageStage2[PageStage2["interactive"] = 2] = "interactive"; PageStage2[PageStage2["complete"] = 3] = "complete"; })(PageStage || (PageStage = {})); var PageObserver = class { constructor(delegate) { this.stage = PageStage.initial; this.started = false; this.interpretReadyState = () => { const { readyState } = this; if (readyState == "interactive") { this.pageIsInteractive(); } else if (readyState == "complete") { this.pageIsComplete(); } }; this.pageWillUnload = () => { this.delegate.pageWillUnload(); }; this.delegate = delegate; } start() { if (!this.started) { if (this.stage == PageStage.initial) { this.stage = PageStage.loading; } document.addEventListener("readystatechange", this.interpretReadyState, false); addEventListener("pagehide", this.pageWillUnload, false); this.started = true; } } stop() { if (this.started) { document.removeEventListener("readystatechange", this.interpretReadyState, false); removeEventListener("pagehide", this.pageWillUnload, false); this.started = false; } } pageIsInteractive() { if (this.stage == PageStage.loading) { this.stage = PageStage.interactive; this.delegate.pageBecameInteractive(); } } pageIsComplete() { this.pageIsInteractive(); if (this.stage == PageStage.interactive) { this.stage = PageStage.complete; this.delegate.pageLoaded(); } } get readyState() { return document.readyState; } }; var ScrollObserver = class { constructor(delegate) { this.started = false; this.onScroll = () => { this.updatePosition({ x: window.pageXOffset, y: window.pageYOffset }); }; this.delegate = delegate; } start() { if (!this.started) { addEventListener("scroll", this.onScroll, false); this.onScroll(); this.started = true; } } stop() { if (this.started) { removeEventListener("scroll", this.onScroll, false); this.started = false; } } updatePosition(position) { this.delegate.scrollPositionChanged(position); } }; var StreamMessageRenderer = class { render({ fragment }) { Bardo.preservingPermanentElements(this, getPermanentElementMapForFragment(fragment), () => document.documentElement.appendChild(fragment)); } enteringBardo(currentPermanentElement, newPermanentElement) { newPermanentElement.replaceWith(currentPermanentElement.cloneNode(true)); } leavingBardo() { } }; function getPermanentElementMapForFragment(fragment) { const permanentElementsInDocument = queryPermanentElementsAll(document.documentElement); const permanentElementMap = {}; for (const permanentElementInDocument of permanentElementsInDocument) { const { id: id2 } = permanentElementInDocument; for (const streamElement of fragment.querySelectorAll("turbo-stream")) { const elementInStream = getPermanentElementById(streamElement.templateElement.content, id2); if (elementInStream) { permanentElementMap[id2] = [permanentElementInDocument, elementInStream]; } } } return permanentElementMap; } var StreamObserver = class { constructor(delegate) { this.sources = /* @__PURE__ */ new Set(); this.started = false; this.inspectFetchResponse = (event) => { const response = fetchResponseFromEvent(event); if (response && fetchResponseIsStream(response)) { event.preventDefault(); this.receiveMessageResponse(response); } }; this.receiveMessageEvent = (event) => { if (this.started && typeof event.data == "string") { this.receiveMessageHTML(event.data); } }; this.delegate = delegate; } start() { if (!this.started) { this.started = true; addEventListener("turbo:before-fetch-response", this.inspectFetchResponse, false); } } stop() { if (this.started) { this.started = false; removeEventListener("turbo:before-fetch-response", this.inspectFetchResponse, false); } } connectStreamSource(source) { if (!this.streamSourceIsConnected(source)) { this.sources.add(source); source.addEventListener("message", this.receiveMessageEvent, false); } } disconnectStreamSource(source) { if (this.streamSourceIsConnected(source)) { this.sources.delete(source); source.removeEventListener("message", this.receiveMessageEvent, false); } } streamSourceIsConnected(source) { return this.sources.has(source); } async receiveMessageResponse(response) { const html = await response.responseHTML; if (html) { this.receiveMessageHTML(html); } } receiveMessageHTML(html) { this.delegate.receivedMessageFromStream(StreamMessage.wrap(html)); } }; function fetchResponseFromEvent(event) { var _a; const fetchResponse = (_a = event.detail) === null || _a === void 0 ? void 0 : _a.fetchResponse; if (fetchResponse instanceof FetchResponse) { return fetchResponse; } } function fetchResponseIsStream(response) { var _a; const contentType = (_a = response.contentType) !== null && _a !== void 0 ? _a : ""; return contentType.startsWith(StreamMessage.contentType); } var ErrorRenderer = class extends Renderer { static renderElement(currentElement, newElement) { const { documentElement, body } = document; documentElement.replaceChild(newElement, body); } async render() { this.replaceHeadAndBody(); this.activateScriptElements(); } replaceHeadAndBody() { const { documentElement, head } = document; documentElement.replaceChild(this.newHead, head); this.renderElement(this.currentElement, this.newElement); } activateScriptElements() { for (const replaceableElement of this.scriptElements) { const parentNode = replaceableElement.parentNode; if (parentNode) { const element = activateScriptElement(replaceableElement); parentNode.replaceChild(element, replaceableElement); } } } get newHead() { return this.newSnapshot.headSnapshot.element; } get scriptElements() { return document.documentElement.querySelectorAll("script"); } }; var PageRenderer = class extends Renderer { static renderElement(currentElement, newElement) { if (document.body && newElement instanceof HTMLBodyElement) { document.body.replaceWith(newElement); } else { document.documentElement.appendChild(newElement); } } get shouldRender() { return this.newSnapshot.isVisitable && this.trackedElementsAreIdentical; } get reloadReason() { if (!this.newSnapshot.isVisitable) { return { reason: "turbo_visit_control_is_reload" }; } if (!this.trackedElementsAreIdentical) { return { reason: "tracked_element_mismatch" }; } } async prepareToRender() { await this.mergeHead(); } async render() { if (this.willRender) { await this.replaceBody(); } } finishRendering() { super.finishRendering(); if (!this.isPreview) { this.focusFirstAutofocusableElement(); } } get currentHeadSnapshot() { return this.currentSnapshot.headSnapshot; } get newHeadSnapshot() { return this.newSnapshot.headSnapshot; } get newElement() { return this.newSnapshot.element; } async mergeHead() { const mergedHeadElements = this.mergeProvisionalElements(); const newStylesheetElements = this.copyNewHeadStylesheetElements(); this.copyNewHeadScriptElements(); await mergedHeadElements; await newStylesheetElements; } async replaceBody() { await this.preservingPermanentElements(async () => { this.activateNewBody(); await this.assignNewBody(); }); } get trackedElementsAreIdentical() { return this.currentHeadSnapshot.trackedElementSignature == this.newHeadSnapshot.trackedElementSignature; } async copyNewHeadStylesheetElements() { const loadingElements = []; for (const element of this.newHeadStylesheetElements) { loadingElements.push(waitForLoad(element)); document.head.appendChild(element); } await Promise.all(loadingElements); } copyNewHeadScriptElements() { for (const element of this.newHeadScriptElements) { document.head.appendChild(activateScriptElement(element)); } } async mergeProvisionalElements() { const newHeadElements = [...this.newHeadProvisionalElements]; for (const element of this.currentHeadProvisionalElements) { if (!this.isCurrentElementInElementList(element, newHeadElements)) { document.head.removeChild(element); } } for (const element of newHeadElements) { document.head.appendChild(element); } } isCurrentElementInElementList(element, elementList) { for (const [index, newElement] of elementList.entries()) { if (element.tagName == "TITLE") { if (newElement.tagName != "TITLE") { continue; } if (element.innerHTML == newElement.innerHTML) { elementList.splice(index, 1); return true; } } if (newElement.isEqualNode(element)) { elementList.splice(index, 1); return true; } } return false; } removeCurrentHeadProvisionalElements() { for (const element of this.currentHeadProvisionalElements) { document.head.removeChild(element); } } copyNewHeadProvisionalElements() { for (const element of this.newHeadProvisionalElements) { document.head.appendChild(element); } } activateNewBody() { document.adoptNode(this.newElement); this.activateNewBodyScriptElements(); } activateNewBodyScriptElements() { for (const inertScriptElement of this.newBodyScriptElements) { const activatedScriptElement = activateScriptElement(inertScriptElement); inertScriptElement.replaceWith(activatedScriptElement); } } async assignNewBody() { await this.renderElement(this.currentElement, this.newElement); } get newHeadStylesheetElements() { return this.newHeadSnapshot.getStylesheetElementsNotInSnapshot(this.currentHeadSnapshot); } get newHeadScriptElements() { return this.newHeadSnapshot.getScriptElementsNotInSnapshot(this.currentHeadSnapshot); } get currentHeadProvisionalElements() { return this.currentHeadSnapshot.provisionalElements; } get newHeadProvisionalElements() { return this.newHeadSnapshot.provisionalElements; } get newBodyScriptElements() { return this.newElement.querySelectorAll("script"); } }; var SnapshotCache = class { constructor(size2) { this.keys = []; this.snapshots = {}; this.size = size2; } has(location2) { return toCacheKey(location2) in this.snapshots; } get(location2) { if (this.has(location2)) { const snapshot = this.read(location2); this.touch(location2); return snapshot; } } put(location2, snapshot) { this.write(location2, snapshot); this.touch(location2); return snapshot; } clear() { this.snapshots = {}; } read(location2) { return this.snapshots[toCacheKey(location2)]; } write(location2, snapshot) { this.snapshots[toCacheKey(location2)] = snapshot; } touch(location2) { const key = toCacheKey(location2); const index = this.keys.indexOf(key); if (index > -1) this.keys.splice(index, 1); this.keys.unshift(key); this.trim(); } trim() { for (const key of this.keys.splice(this.size)) { delete this.snapshots[key]; } } }; var PageView = class extends View { constructor() { super(...arguments); this.snapshotCache = new SnapshotCache(10); this.lastRenderedLocation = new URL(location.href); this.forceReloaded = false; } renderPage(snapshot, isPreview = false, willRender = true, visit2) { const renderer = new PageRenderer(this.snapshot, snapshot, PageRenderer.renderElement, isPreview, willRender); if (!renderer.shouldRender) { this.forceReloaded = true; } else { visit2 === null || visit2 === void 0 ? void 0 : visit2.changeHistory(); } return this.render(renderer); } renderError(snapshot, visit2) { visit2 === null || visit2 === void 0 ? void 0 : visit2.changeHistory(); const renderer = new ErrorRenderer(this.snapshot, snapshot, ErrorRenderer.renderElement, false); return this.render(renderer); } clearSnapshotCache() { this.snapshotCache.clear(); } async cacheSnapshot(snapshot = this.snapshot) { if (snapshot.isCacheable) { this.delegate.viewWillCacheSnapshot(); const { lastRenderedLocation: location2 } = this; await nextEventLoopTick(); const cachedSnapshot = snapshot.clone(); this.snapshotCache.put(location2, cachedSnapshot); return cachedSnapshot; } } getCachedSnapshotForLocation(location2) { return this.snapshotCache.get(location2); } get snapshot() { return PageSnapshot.fromElement(this.element); } }; var Preloader = class { constructor(delegate) { this.selector = "a[data-turbo-preload]"; this.delegate = delegate; } get snapshotCache() { return this.delegate.navigator.view.snapshotCache; } start() { if (document.readyState === "loading") { return document.addEventListener("DOMContentLoaded", () => { this.preloadOnLoadLinksForView(document.body); }); } else { this.preloadOnLoadLinksForView(document.body); } } preloadOnLoadLinksForView(element) { for (const link of element.querySelectorAll(this.selector)) { this.preloadURL(link); } } async preloadURL(link) { const location2 = new URL(link.href); if (this.snapshotCache.has(location2)) { return; } try { const response = await fetch(location2.toString(), { headers: { "VND.PREFETCH": "true", Accept: "text/html" } }); const responseText = await response.text(); const snapshot = PageSnapshot.fromHTMLString(responseText); this.snapshotCache.put(location2, snapshot); } catch (_3) { } } }; var Session = class { constructor() { this.navigator = new Navigator(this); this.history = new History(this); this.preloader = new Preloader(this); this.view = new PageView(this, document.documentElement); this.adapter = new BrowserAdapter(this); this.pageObserver = new PageObserver(this); this.cacheObserver = new CacheObserver(); this.linkClickObserver = new LinkClickObserver(this, window); this.formSubmitObserver = new FormSubmitObserver(this, document); this.scrollObserver = new ScrollObserver(this); this.streamObserver = new StreamObserver(this); this.formLinkClickObserver = new FormLinkClickObserver(this, document.documentElement); this.frameRedirector = new FrameRedirector(this, document.documentElement); this.streamMessageRenderer = new StreamMessageRenderer(); this.drive = true; this.enabled = true; this.progressBarDelay = 500; this.started = false; this.formMode = "on"; } start() { if (!this.started) { this.pageObserver.start(); this.cacheObserver.start(); this.formLinkClickObserver.start(); this.linkClickObserver.start(); this.formSubmitObserver.start(); this.scrollObserver.start(); this.streamObserver.start(); this.frameRedirector.start(); this.history.start(); this.preloader.start(); this.started = true; this.enabled = true; } } disable() { this.enabled = false; } stop() { if (this.started) { this.pageObserver.stop(); this.cacheObserver.stop(); this.formLinkClickObserver.stop(); this.linkClickObserver.stop(); this.formSubmitObserver.stop(); this.scrollObserver.stop(); this.streamObserver.stop(); this.frameRedirector.stop(); this.history.stop(); this.started = false; } } registerAdapter(adapter) { this.adapter = adapter; } visit(location2, options = {}) { const frameElement = options.frame ? document.getElementById(options.frame) : null; if (frameElement instanceof FrameElement) { frameElement.src = location2.toString(); frameElement.loaded; } else { this.navigator.proposeVisit(expandURL(location2), options); } } connectStreamSource(source) { this.streamObserver.connectStreamSource(source); } disconnectStreamSource(source) { this.streamObserver.disconnectStreamSource(source); } renderStreamMessage(message2) { this.streamMessageRenderer.render(StreamMessage.wrap(message2)); } clearCache() { this.view.clearSnapshotCache(); } setProgressBarDelay(delay3) { this.progressBarDelay = delay3; } setFormMode(mode) { this.formMode = mode; } get location() { return this.history.location; } get restorationIdentifier() { return this.history.restorationIdentifier; } historyPoppedToLocationWithRestorationIdentifier(location2, restorationIdentifier) { if (this.enabled) { this.navigator.startVisit(location2, restorationIdentifier, { action: "restore", historyChanged: true }); } else { this.adapter.pageInvalidated({ reason: "turbo_disabled" }); } } scrollPositionChanged(position) { this.history.updateRestorationData({ scrollPosition: position }); } willSubmitFormLinkToLocation(link, location2) { return this.elementIsNavigatable(link) && locationIsVisitable(location2, this.snapshot.rootLocation); } submittedFormLinkToLocation() { } willFollowLinkToLocation(link, location2, event) { return this.elementIsNavigatable(link) && locationIsVisitable(location2, this.snapshot.rootLocation) && this.applicationAllowsFollowingLinkToLocation(link, location2, event); } followedLinkToLocation(link, location2) { const action = this.getActionForLink(link); const acceptsStreamResponse = link.hasAttribute("data-turbo-stream"); this.visit(location2.href, { action, acceptsStreamResponse }); } allowsVisitingLocationWithAction(location2, action) { return this.locationWithActionIsSamePage(location2, action) || this.applicationAllowsVisitingLocation(location2); } visitProposedToLocation(location2, options) { extendURLWithDeprecatedProperties(location2); this.adapter.visitProposedToLocation(location2, options); } visitStarted(visit2) { if (!visit2.acceptsStreamResponse) { markAsBusy(document.documentElement); } extendURLWithDeprecatedProperties(visit2.location); if (!visit2.silent) { this.notifyApplicationAfterVisitingLocation(visit2.location, visit2.action); } } visitCompleted(visit2) { clearBusyState(document.documentElement); this.notifyApplicationAfterPageLoad(visit2.getTimingMetrics()); } locationWithActionIsSamePage(location2, action) { return this.navigator.locationWithActionIsSamePage(location2, action); } visitScrolledToSamePageLocation(oldURL, newURL) { this.notifyApplicationAfterVisitingSamePageLocation(oldURL, newURL); } willSubmitForm(form, submitter) { const action = getAction(form, submitter); return this.submissionIsNavigatable(form, submitter) && locationIsVisitable(expandURL(action), this.snapshot.rootLocation); } formSubmitted(form, submitter) { this.navigator.submitForm(form, submitter); } pageBecameInteractive() { this.view.lastRenderedLocation = this.location; this.notifyApplicationAfterPageLoad(); } pageLoaded() { this.history.assumeControlOfScrollRestoration(); } pageWillUnload() { this.history.relinquishControlOfScrollRestoration(); } receivedMessageFromStream(message2) { this.renderStreamMessage(message2); } viewWillCacheSnapshot() { var _a; if (!((_a = this.navigator.currentVisit) === null || _a === void 0 ? void 0 : _a.silent)) { this.notifyApplicationBeforeCachingSnapshot(); } } allowsImmediateRender({ element }, options) { const event = this.notifyApplicationBeforeRender(element, options); const { defaultPrevented, detail: { render: render2 } } = event; if (this.view.renderer && render2) { this.view.renderer.renderElement = render2; } return !defaultPrevented; } viewRenderedSnapshot(_snapshot, _isPreview) { this.view.lastRenderedLocation = this.history.location; this.notifyApplicationAfterRender(); } preloadOnLoadLinksForView(element) { this.preloader.preloadOnLoadLinksForView(element); } viewInvalidated(reason) { this.adapter.pageInvalidated(reason); } frameLoaded(frame) { this.notifyApplicationAfterFrameLoad(frame); } frameRendered(fetchResponse, frame) { this.notifyApplicationAfterFrameRender(fetchResponse, frame); } applicationAllowsFollowingLinkToLocation(link, location2, ev) { const event = this.notifyApplicationAfterClickingLinkToLocation(link, location2, ev); return !event.defaultPrevented; } applicationAllowsVisitingLocation(location2) { const event = this.notifyApplicationBeforeVisitingLocation(location2); return !event.defaultPrevented; } notifyApplicationAfterClickingLinkToLocation(link, location2, event) { return dispatch2("turbo:click", { target: link, detail: { url: location2.href, originalEvent: event }, cancelable: true }); } notifyApplicationBeforeVisitingLocation(location2) { return dispatch2("turbo:before-visit", { detail: { url: location2.href }, cancelable: true }); } notifyApplicationAfterVisitingLocation(location2, action) { return dispatch2("turbo:visit", { detail: { url: location2.href, action } }); } notifyApplicationBeforeCachingSnapshot() { return dispatch2("turbo:before-cache"); } notifyApplicationBeforeRender(newBody, options) { return dispatch2("turbo:before-render", { detail: Object.assign({ newBody }, options), cancelable: true }); } notifyApplicationAfterRender() { return dispatch2("turbo:render"); } notifyApplicationAfterPageLoad(timing = {}) { return dispatch2("turbo:load", { detail: { url: this.location.href, timing } }); } notifyApplicationAfterVisitingSamePageLocation(oldURL, newURL) { dispatchEvent(new HashChangeEvent("hashchange", { oldURL: oldURL.toString(), newURL: newURL.toString() })); } notifyApplicationAfterFrameLoad(frame) { return dispatch2("turbo:frame-load", { target: frame }); } notifyApplicationAfterFrameRender(fetchResponse, frame) { return dispatch2("turbo:frame-render", { detail: { fetchResponse }, target: frame, cancelable: true }); } submissionIsNavigatable(form, submitter) { if (this.formMode == "off") { return false; } else { const submitterIsNavigatable = submitter ? this.elementIsNavigatable(submitter) : true; if (this.formMode == "optin") { return submitterIsNavigatable && form.closest('[data-turbo="true"]') != null; } else { return submitterIsNavigatable && this.elementIsNavigatable(form); } } } elementIsNavigatable(element) { const container = findClosestRecursively(element, "[data-turbo]"); const withinFrame = findClosestRecursively(element, "turbo-frame"); if (this.drive || withinFrame) { if (container) { return container.getAttribute("data-turbo") != "false"; } else { return true; } } else { if (container) { return container.getAttribute("data-turbo") == "true"; } else { return false; } } } getActionForLink(link) { return getVisitAction(link) || "advance"; } get snapshot() { return this.view.snapshot; } }; function extendURLWithDeprecatedProperties(url) { Object.defineProperties(url, deprecatedLocationPropertyDescriptors); } var deprecatedLocationPropertyDescriptors = { absoluteURL: { get() { return this.toString(); } } }; var Cache = class { constructor(session2) { this.session = session2; } clear() { this.session.clearCache(); } resetCacheControl() { this.setCacheControl(""); } exemptPageFromCache() { this.setCacheControl("no-cache"); } exemptPageFromPreview() { this.setCacheControl("no-preview"); } setCacheControl(value) { setMetaContent("turbo-cache-control", value); } }; var StreamActions = { after() { this.targetElements.forEach((e3) => { var _a; return (_a = e3.parentElement) === null || _a === void 0 ? void 0 : _a.insertBefore(this.templateContent, e3.nextSibling); }); }, append() { this.removeDuplicateTargetChildren(); this.targetElements.forEach((e3) => e3.append(this.templateContent)); }, before() { this.targetElements.forEach((e3) => { var _a; return (_a = e3.parentElement) === null || _a === void 0 ? void 0 : _a.insertBefore(this.templateContent, e3); }); }, prepend() { this.removeDuplicateTargetChildren(); this.targetElements.forEach((e3) => e3.prepend(this.templateContent)); }, remove() { this.targetElements.forEach((e3) => e3.remove()); }, replace() { this.targetElements.forEach((e3) => e3.replaceWith(this.templateContent)); }, update() { this.targetElements.forEach((targetElement) => { targetElement.innerHTML = ""; targetElement.append(this.templateContent); }); } }; var session = new Session(); var cache = new Cache(session); var { navigator: navigator$1 } = session; function start2() { session.start(); } function registerAdapter(adapter) { session.registerAdapter(adapter); } function visit(location2, options) { session.visit(location2, options); } function connectStreamSource(source) { session.connectStreamSource(source); } function disconnectStreamSource(source) { session.disconnectStreamSource(source); } function renderStreamMessage(message2) { session.renderStreamMessage(message2); } function clearCache() { console.warn("Please replace `Turbo.clearCache()` with `Turbo.cache.clear()`. The top-level function is deprecated and will be removed in a future version of Turbo.`"); session.clearCache(); } function setProgressBarDelay(delay3) { session.setProgressBarDelay(delay3); } function setConfirmMethod(confirmMethod) { FormSubmission.confirmMethod = confirmMethod; } function setFormMode(mode) { session.setFormMode(mode); } var Turbo = /* @__PURE__ */ Object.freeze({ __proto__: null, navigator: navigator$1, session, cache, PageRenderer, PageSnapshot, FrameRenderer, start: start2, registerAdapter, visit, connectStreamSource, disconnectStreamSource, renderStreamMessage, clearCache, setProgressBarDelay, setConfirmMethod, setFormMode, StreamActions }); var TurboFrameMissingError = class extends Error { }; var FrameController = class { constructor(element) { this.fetchResponseLoaded = (_fetchResponse) => { }; this.currentFetchRequest = null; this.resolveVisitPromise = () => { }; this.connected = false; this.hasBeenLoaded = false; this.ignoredAttributes = /* @__PURE__ */ new Set(); this.action = null; this.visitCachedSnapshot = ({ element: element2 }) => { const frame = element2.querySelector("#" + this.element.id); if (frame && this.previousFrameElement) { frame.replaceChildren(...this.previousFrameElement.children); } delete this.previousFrameElement; }; this.element = element; this.view = new FrameView(this, this.element); this.appearanceObserver = new AppearanceObserver(this, this.element); this.formLinkClickObserver = new FormLinkClickObserver(this, this.element); this.linkInterceptor = new LinkInterceptor(this, this.element); this.restorationIdentifier = uuid(); this.formSubmitObserver = new FormSubmitObserver(this, this.element); } connect() { if (!this.connected) { this.connected = true; if (this.loadingStyle == FrameLoadingStyle.lazy) { this.appearanceObserver.start(); } else { this.loadSourceURL(); } this.formLinkClickObserver.start(); this.linkInterceptor.start(); this.formSubmitObserver.start(); } } disconnect() { if (this.connected) { this.connected = false; this.appearanceObserver.stop(); this.formLinkClickObserver.stop(); this.linkInterceptor.stop(); this.formSubmitObserver.stop(); } } disabledChanged() { if (this.loadingStyle == FrameLoadingStyle.eager) { this.loadSourceURL(); } } sourceURLChanged() { if (this.isIgnoringChangesTo("src")) return; if (this.element.isConnected) { this.complete = false; } if (this.loadingStyle == FrameLoadingStyle.eager || this.hasBeenLoaded) { this.loadSourceURL(); } } sourceURLReloaded() { const { src } = this.element; this.ignoringChangesToAttribute("complete", () => { this.element.removeAttribute("complete"); }); this.element.src = null; this.element.src = src; return this.element.loaded; } completeChanged() { if (this.isIgnoringChangesTo("complete")) return; this.loadSourceURL(); } loadingStyleChanged() { if (this.loadingStyle == FrameLoadingStyle.lazy) { this.appearanceObserver.start(); } else { this.appearanceObserver.stop(); this.loadSourceURL(); } } async loadSourceURL() { if (this.enabled && this.isActive && !this.complete && this.sourceURL) { this.element.loaded = this.visit(expandURL(this.sourceURL)); this.appearanceObserver.stop(); await this.element.loaded; this.hasBeenLoaded = true; } } async loadResponse(fetchResponse) { if (fetchResponse.redirected || fetchResponse.succeeded && fetchResponse.isHTML) { this.sourceURL = fetchResponse.response.url; } try { const html = await fetchResponse.responseHTML; if (html) { const document2 = parseHTMLDocument(html); const pageSnapshot = PageSnapshot.fromDocument(document2); if (pageSnapshot.isVisitable) { await this.loadFrameResponse(fetchResponse, document2); } else { await this.handleUnvisitableFrameResponse(fetchResponse); } } } finally { this.fetchResponseLoaded = () => { }; } } elementAppearedInViewport(element) { this.proposeVisitIfNavigatedWithAction(element, element); this.loadSourceURL(); } willSubmitFormLinkToLocation(link) { return this.shouldInterceptNavigation(link); } submittedFormLinkToLocation(link, _location, form) { const frame = this.findFrameElement(link); if (frame) form.setAttribute("data-turbo-frame", frame.id); } shouldInterceptLinkClick(element, _location, _event) { return this.shouldInterceptNavigation(element); } linkClickIntercepted(element, location2) { this.navigateFrame(element, location2); } willSubmitForm(element, submitter) { return element.closest("turbo-frame") == this.element && this.shouldInterceptNavigation(element, submitter); } formSubmitted(element, submitter) { if (this.formSubmission) { this.formSubmission.stop(); } this.formSubmission = new FormSubmission(this, element, submitter); const { fetchRequest } = this.formSubmission; this.prepareRequest(fetchRequest); this.formSubmission.start(); } prepareRequest(request) { var _a; request.headers["Turbo-Frame"] = this.id; if ((_a = this.currentNavigationElement) === null || _a === void 0 ? void 0 : _a.hasAttribute("data-turbo-stream")) { request.acceptResponseType(StreamMessage.contentType); } } requestStarted(_request) { markAsBusy(this.element); } requestPreventedHandlingResponse(_request, _response) { this.resolveVisitPromise(); } async requestSucceededWithResponse(request, response) { await this.loadResponse(response); this.resolveVisitPromise(); } async requestFailedWithResponse(request, response) { await this.loadResponse(response); this.resolveVisitPromise(); } requestErrored(request, error2) { console.error(error2); this.resolveVisitPromise(); } requestFinished(_request) { clearBusyState(this.element); } formSubmissionStarted({ formElement }) { markAsBusy(formElement, this.findFrameElement(formElement)); } formSubmissionSucceededWithResponse(formSubmission, response) { const frame = this.findFrameElement(formSubmission.formElement, formSubmission.submitter); frame.delegate.proposeVisitIfNavigatedWithAction(frame, formSubmission.formElement, formSubmission.submitter); frame.delegate.loadResponse(response); if (!formSubmission.isSafe) { session.clearCache(); } } formSubmissionFailedWithResponse(formSubmission, fetchResponse) { this.element.delegate.loadResponse(fetchResponse); session.clearCache(); } formSubmissionErrored(formSubmission, error2) { console.error(error2); } formSubmissionFinished({ formElement }) { clearBusyState(formElement, this.findFrameElement(formElement)); } allowsImmediateRender({ element: newFrame }, options) { const event = dispatch2("turbo:before-frame-render", { target: this.element, detail: Object.assign({ newFrame }, options), cancelable: true }); const { defaultPrevented, detail: { render: render2 } } = event; if (this.view.renderer && render2) { this.view.renderer.renderElement = render2; } return !defaultPrevented; } viewRenderedSnapshot(_snapshot, _isPreview) { } preloadOnLoadLinksForView(element) { session.preloadOnLoadLinksForView(element); } viewInvalidated() { } willRenderFrame(currentElement, _newElement) { this.previousFrameElement = currentElement.cloneNode(true); } async loadFrameResponse(fetchResponse, document2) { const newFrameElement = await this.extractForeignFrameElement(document2.body); if (newFrameElement) { const snapshot = new Snapshot(newFrameElement); const renderer = new FrameRenderer(this, this.view.snapshot, snapshot, FrameRenderer.renderElement, false, false); if (this.view.renderPromise) await this.view.renderPromise; this.changeHistory(); await this.view.render(renderer); this.complete = true; session.frameRendered(fetchResponse, this.element); session.frameLoaded(this.element); this.fetchResponseLoaded(fetchResponse); } else if (this.willHandleFrameMissingFromResponse(fetchResponse)) { this.handleFrameMissingFromResponse(fetchResponse); } } async visit(url) { var _a; const request = new FetchRequest(this, FetchMethod.get, url, new URLSearchParams(), this.element); (_a = this.currentFetchRequest) === null || _a === void 0 ? void 0 : _a.cancel(); this.currentFetchRequest = request; return new Promise((resolve) => { this.resolveVisitPromise = () => { this.resolveVisitPromise = () => { }; this.currentFetchRequest = null; resolve(); }; request.perform(); }); } navigateFrame(element, url, submitter) { const frame = this.findFrameElement(element, submitter); frame.delegate.proposeVisitIfNavigatedWithAction(frame, element, submitter); this.withCurrentNavigationElement(element, () => { frame.src = url; }); } proposeVisitIfNavigatedWithAction(frame, element, submitter) { this.action = getVisitAction(submitter, element, frame); if (this.action) { const pageSnapshot = PageSnapshot.fromElement(frame).clone(); const { visitCachedSnapshot } = frame.delegate; frame.delegate.fetchResponseLoaded = (fetchResponse) => { if (frame.src) { const { statusCode, redirected } = fetchResponse; const responseHTML = frame.ownerDocument.documentElement.outerHTML; const response = { statusCode, redirected, responseHTML }; const options = { response, visitCachedSnapshot, willRender: false, updateHistory: false, restorationIdentifier: this.restorationIdentifier, snapshot: pageSnapshot }; if (this.action) options.action = this.action; session.visit(frame.src, options); } }; } } changeHistory() { if (this.action) { const method = getHistoryMethodForAction(this.action); session.history.update(method, expandURL(this.element.src || ""), this.restorationIdentifier); } } async handleUnvisitableFrameResponse(fetchResponse) { console.warn(`The response (${fetchResponse.statusCode}) from is performing a full page visit due to turbo-visit-control.`); await this.visitResponse(fetchResponse.response); } willHandleFrameMissingFromResponse(fetchResponse) { this.element.setAttribute("complete", ""); const response = fetchResponse.response; const visit2 = async (url, options = {}) => { if (url instanceof Response) { this.visitResponse(url); } else { session.visit(url, options); } }; const event = dispatch2("turbo:frame-missing", { target: this.element, detail: { response, visit: visit2 }, cancelable: true }); return !event.defaultPrevented; } handleFrameMissingFromResponse(fetchResponse) { this.view.missing(); this.throwFrameMissingError(fetchResponse); } throwFrameMissingError(fetchResponse) { const message2 = `The response (${fetchResponse.statusCode}) did not contain the expected and will be ignored. To perform a full page visit instead, set turbo-visit-control to reload.`; throw new TurboFrameMissingError(message2); } async visitResponse(response) { const wrapped = new FetchResponse(response); const responseHTML = await wrapped.responseHTML; const { location: location2, redirected, statusCode } = wrapped; return session.visit(location2, { response: { redirected, statusCode, responseHTML } }); } findFrameElement(element, submitter) { var _a; const id2 = getAttribute("data-turbo-frame", submitter, element) || this.element.getAttribute("target"); return (_a = getFrameElementById(id2)) !== null && _a !== void 0 ? _a : this.element; } async extractForeignFrameElement(container) { let element; const id2 = CSS.escape(this.id); try { element = activateElement(container.querySelector(`turbo-frame#${id2}`), this.sourceURL); if (element) { return element; } element = activateElement(container.querySelector(`turbo-frame[src][recurse~=${id2}]`), this.sourceURL); if (element) { await element.loaded; return await this.extractForeignFrameElement(element); } } catch (error2) { console.error(error2); return new FrameElement(); } return null; } formActionIsVisitable(form, submitter) { const action = getAction(form, submitter); return locationIsVisitable(expandURL(action), this.rootLocation); } shouldInterceptNavigation(element, submitter) { const id2 = getAttribute("data-turbo-frame", submitter, element) || this.element.getAttribute("target"); if (element instanceof HTMLFormElement && !this.formActionIsVisitable(element, submitter)) { return false; } if (!this.enabled || id2 == "_top") { return false; } if (id2) { const frameElement = getFrameElementById(id2); if (frameElement) { return !frameElement.disabled; } } if (!session.elementIsNavigatable(element)) { return false; } if (submitter && !session.elementIsNavigatable(submitter)) { return false; } return true; } get id() { return this.element.id; } get enabled() { return !this.element.disabled; } get sourceURL() { if (this.element.src) { return this.element.src; } } set sourceURL(sourceURL) { this.ignoringChangesToAttribute("src", () => { this.element.src = sourceURL !== null && sourceURL !== void 0 ? sourceURL : null; }); } get loadingStyle() { return this.element.loading; } get isLoading() { return this.formSubmission !== void 0 || this.resolveVisitPromise() !== void 0; } get complete() { return this.element.hasAttribute("complete"); } set complete(value) { this.ignoringChangesToAttribute("complete", () => { if (value) { this.element.setAttribute("complete", ""); } else { this.element.removeAttribute("complete"); } }); } get isActive() { return this.element.isActive && this.connected; } get rootLocation() { var _a; const meta = this.element.ownerDocument.querySelector(`meta[name="turbo-root"]`); const root = (_a = meta === null || meta === void 0 ? void 0 : meta.content) !== null && _a !== void 0 ? _a : "/"; return expandURL(root); } isIgnoringChangesTo(attributeName) { return this.ignoredAttributes.has(attributeName); } ignoringChangesToAttribute(attributeName, callback) { this.ignoredAttributes.add(attributeName); callback(); this.ignoredAttributes.delete(attributeName); } withCurrentNavigationElement(element, callback) { this.currentNavigationElement = element; callback(); delete this.currentNavigationElement; } }; function getFrameElementById(id2) { if (id2 != null) { const element = document.getElementById(id2); if (element instanceof FrameElement) { return element; } } } function activateElement(element, currentURL) { if (element) { const src = element.getAttribute("src"); if (src != null && currentURL != null && urlsAreEqual(src, currentURL)) { throw new Error(`Matching element has a source URL which references itself`); } if (element.ownerDocument !== document) { element = document.importNode(element, true); } if (element instanceof FrameElement) { element.connectedCallback(); element.disconnectedCallback(); return element; } } } var StreamElement = class extends HTMLElement { static async renderElement(newElement) { await newElement.performAction(); } async connectedCallback() { try { await this.render(); } catch (error2) { console.error(error2); } finally { this.disconnect(); } } async render() { var _a; return (_a = this.renderPromise) !== null && _a !== void 0 ? _a : this.renderPromise = (async () => { const event = this.beforeRenderEvent; if (this.dispatchEvent(event)) { await nextAnimationFrame(); await event.detail.render(this); } })(); } disconnect() { try { this.remove(); } catch (_a) { } } removeDuplicateTargetChildren() { this.duplicateChildren.forEach((c3) => c3.remove()); } get duplicateChildren() { var _a; const existingChildren = this.targetElements.flatMap((e3) => [...e3.children]).filter((c3) => !!c3.id); const newChildrenIds = [...((_a = this.templateContent) === null || _a === void 0 ? void 0 : _a.children) || []].filter((c3) => !!c3.id).map((c3) => c3.id); return existingChildren.filter((c3) => newChildrenIds.includes(c3.id)); } get performAction() { if (this.action) { const actionFunction = StreamActions[this.action]; if (actionFunction) { return actionFunction; } this.raise("unknown action"); } this.raise("action attribute is missing"); } get targetElements() { if (this.target) { return this.targetElementsById; } else if (this.targets) { return this.targetElementsByQuery; } else { this.raise("target or targets attribute is missing"); } } get templateContent() { return this.templateElement.content.cloneNode(true); } get templateElement() { if (this.firstElementChild === null) { const template = this.ownerDocument.createElement("template"); this.appendChild(template); return template; } else if (this.firstElementChild instanceof HTMLTemplateElement) { return this.firstElementChild; } this.raise("first child element must be a