{"version":3,"file":"static/js/main.0ef63295.js","mappings":"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","sources":["../node_modules/@lottiefiles/react-lottie-player/node_modules/tslib/tslib.es6.js","../node_modules/@lottiefiles/react-lottie-player/node_modules/lottie-web/build/player/lottie.js","../node_modules/@lottiefiles/react-lottie-player/src/Player.tsx","../node_modules/@lottiefiles/react-lottie-player/node_modules/style-inject/dist/style-inject.es.js","../node_modules/@lottiefiles/react-lottie-player/src/ColorPicker.tsx","../node_modules/@lottiefiles/react-lottie-player/src/Popover.tsx","../node_modules/@lottiefiles/react-lottie-player/src/Seeker.tsx","../node_modules/@lottiefiles/react-lottie-player/src/Controls.tsx","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../webpack/bootstrap","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/publicPath","../webpack/runtime/jsonp chunk loading","../node_modules/@remix-run/router/history.ts","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/@babel/runtime/helpers/esm/construct.js","../node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","../node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","../node_modules/@remix-run/router/utils.ts","../node_modules/@remix-run/router/router.ts","../node_modules/react-router/lib/use-sync-external-store-shim/useSyncExternalStoreShimClient.ts","../node_modules/react-router/lib/use-sync-external-store-shim/index.ts","../node_modules/react-router/lib/context.ts","../node_modules/react-router/lib/hooks.tsx","../node_modules/react-router/lib/components.tsx","../node_modules/react-router-dom/index.tsx","../node_modules/react-router-dom/dom.ts","../../src/MatomoContext.tsx","../../../src/utils/useOutboundClickListener.tsx","../../src/useMatomo.ts","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/i18next/dist/esm/i18next.js","../node_modules/@babel/runtime/helpers/esm/toArray.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/react-i18next/dist/es/unescape.js","../node_modules/react-i18next/dist/es/context.js","../node_modules/react-i18next/dist/es/utils.js","../node_modules/react-i18next/dist/es/useTranslation.js","../node_modules/react-i18next/dist/es/withTranslation.js","../node_modules/uuid/dist/esm-browser/native.js","../node_modules/uuid/dist/esm-browser/rng.js","../node_modules/uuid/dist/esm-browser/stringify.js","../node_modules/uuid/dist/esm-browser/v4.js","component/ToggleSwitch.js","media/logo_pos_screen.svg","media/burgermenu_000000.svg","media/burgermenu_f7a823.svg","component/Header.js","component/BookishContainer.js","component/BorderButton.js","media/email_f7a823.svg","media/phone_f7a823.svg","media/linkedin_f7a824.svg","media/linkedin_ffffff.svg","media/googlemaps_icon.svg","media/googlemaps_privacy_de.svg","component/Footer.js","App.js","component/Slogan.js","home/HomeIntro.js","component/FlatButton.js","home/HomeServices.js","media/arrow_right_000000.svg","media/arrow_right_f7a823.svg","component/ArrowButton.js","media/logo_newsrodeo_header.svg","media/logo_iot_header.svg","media/logo_infopop_header.svg","media/logo_passengerinfo_header.svg","MarkupHelper.js","home/HomeProducts.js","../node_modules/react-indiana-drag-scroll/node_modules/tslib/tslib.es6.js","../node_modules/react-indiana-drag-scroll/node_modules/classnames/index.js","../node_modules/react-indiana-drag-scroll/node_modules/debounce/index.js","../node_modules/react-indiana-drag-scroll/node_modules/style-inject/dist/style-inject.es.js","../node_modules/react-indiana-drag-scroll/src/index.tsx","../node_modules/react-indiana-drag-scroll/node_modules/easy-bem/index.js","home/HomeReferences.js","home/HomeServiceProvider.js","home/HomeServiceImportant.js","home/Home.js","component/BoxContainer.js","media/arrow_left_000000.svg","media/arrow_left_ffffff.svg","media/arrow_right_ffffff.svg","component/Carousel.js","component/ImageGrid.js","references/References.js","component/Datenschutz.js","component/Impressum.js","component/Lizenzen.js","component/IntroText.js","component/TextSection.js","component/TileList.js","newsrodeo/Funktionsweise.js","component/TextSectionList.js","newsrodeo/passengerinfo.js","component/SubHeaderLogo.js","media/logo_newsrodeo.svg","component/List.js","media/logo_newsrodeo_passengerinfo.svg","media/icon_cursor.svg","media/icon_dots.svg","media/icon_euro.svg","media/icon_thumbsup.svg","media/icon_konzept.svg","media/icon_hardware.svg","media/icon_software.svg","media/icon_grafik.svg","media/icon_wartung.svg","media/icon_support.svg","newsrodeo/newsrodeo.js","media/logo_iot.svg","media/icon_datensammlung.svg","media/icon_rechenzentrum.svg","media/icon_visualisierung.svg","media/icon_monitoring.svg","media/icon_remote_monitoring.svg","media/icon_schnell_und_effizient.svg","media/icon_ueberblick_behalten.svg","media/icon_vermeiden_von_ausfallzeiten.svg","iot/Hardware.js","iot/iot.js","media/logo_infopop.svg","media/icon_usb.svg","media/icon_check.svg","media/icon_magnifying.svg","media/icon_chat.svg","media/icon_tag.svg","infopop/infopop.js","reportWebVitals.js","../../src/constants.ts","../../src/MatomoTracker.ts","../../src/index.ts","../../src/instance.ts","../../src/MatomoProvider.tsx","../node_modules/i18next-http-backend/esm/utils.js","../node_modules/i18next-http-backend/esm/request.js","../node_modules/i18next-http-backend/esm/index.js","../node_modules/i18next-browser-languagedetector/dist/esm/i18nextBrowserLanguageDetector.js","i18nextConf.js","index.js"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","(typeof navigator !== \"undefined\") && (function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.lottie = factory());\n})(this, (function () { 'use strict';\n\n var svgNS = 'http://www.w3.org/2000/svg';\n var locationHref = '';\n var _useWebWorker = false;\n var initialDefaultFrame = -999999;\n\n var setWebWorker = function setWebWorker(flag) {\n _useWebWorker = !!flag;\n };\n\n var getWebWorker = function getWebWorker() {\n return _useWebWorker;\n };\n\n var setLocationHref = function setLocationHref(value) {\n locationHref = value;\n };\n\n var getLocationHref = function getLocationHref() {\n return locationHref;\n };\n\n function createTag(type) {\n // return {appendChild:function(){},setAttribute:function(){},style:{}}\n return document.createElement(type);\n }\n\n function extendPrototype(sources, destination) {\n var i;\n var len = sources.length;\n var sourcePrototype;\n\n for (i = 0; i < len; i += 1) {\n sourcePrototype = sources[i].prototype;\n\n for (var attr in sourcePrototype) {\n if (Object.prototype.hasOwnProperty.call(sourcePrototype, attr)) destination.prototype[attr] = sourcePrototype[attr];\n }\n }\n }\n\n function getDescriptor(object, prop) {\n return Object.getOwnPropertyDescriptor(object, prop);\n }\n\n function createProxyFunction(prototype) {\n function ProxyFunction() {}\n\n ProxyFunction.prototype = prototype;\n return ProxyFunction;\n }\n\n // import Howl from '../../3rd_party/howler';\n var audioControllerFactory = function () {\n function AudioController(audioFactory) {\n this.audios = [];\n this.audioFactory = audioFactory;\n this._volume = 1;\n this._isMuted = false;\n }\n\n AudioController.prototype = {\n addAudio: function addAudio(audio) {\n this.audios.push(audio);\n },\n pause: function pause() {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].pause();\n }\n },\n resume: function resume() {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].resume();\n }\n },\n setRate: function setRate(rateValue) {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].setRate(rateValue);\n }\n },\n createAudio: function createAudio(assetPath) {\n if (this.audioFactory) {\n return this.audioFactory(assetPath);\n }\n\n if (window.Howl) {\n return new window.Howl({\n src: [assetPath]\n });\n }\n\n return {\n isPlaying: false,\n play: function play() {\n this.isPlaying = true;\n },\n seek: function seek() {\n this.isPlaying = false;\n },\n playing: function playing() {},\n rate: function rate() {},\n setVolume: function setVolume() {}\n };\n },\n setAudioFactory: function setAudioFactory(audioFactory) {\n this.audioFactory = audioFactory;\n },\n setVolume: function setVolume(value) {\n this._volume = value;\n\n this._updateVolume();\n },\n mute: function mute() {\n this._isMuted = true;\n\n this._updateVolume();\n },\n unmute: function unmute() {\n this._isMuted = false;\n\n this._updateVolume();\n },\n getVolume: function getVolume() {\n return this._volume;\n },\n _updateVolume: function _updateVolume() {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].volume(this._volume * (this._isMuted ? 0 : 1));\n }\n }\n };\n return function () {\n return new AudioController();\n };\n }();\n\n var createTypedArray = function () {\n function createRegularArray(type, len) {\n var i = 0;\n var arr = [];\n var value;\n\n switch (type) {\n case 'int16':\n case 'uint8c':\n value = 1;\n break;\n\n default:\n value = 1.1;\n break;\n }\n\n for (i = 0; i < len; i += 1) {\n arr.push(value);\n }\n\n return arr;\n }\n\n function createTypedArrayFactory(type, len) {\n if (type === 'float32') {\n return new Float32Array(len);\n }\n\n if (type === 'int16') {\n return new Int16Array(len);\n }\n\n if (type === 'uint8c') {\n return new Uint8ClampedArray(len);\n }\n\n return createRegularArray(type, len);\n }\n\n if (typeof Uint8ClampedArray === 'function' && typeof Float32Array === 'function') {\n return createTypedArrayFactory;\n }\n\n return createRegularArray;\n }();\n\n function createSizedArray(len) {\n return Array.apply(null, {\n length: len\n });\n }\n\n function _typeof$6(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$6 = function _typeof(obj) { return typeof obj; }; } else { _typeof$6 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$6(obj); }\n var subframeEnabled = true;\n var expressionsPlugin = null;\n var idPrefix = '';\n var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n var _shouldRoundValues = false;\n var bmPow = Math.pow;\n var bmSqrt = Math.sqrt;\n var bmFloor = Math.floor;\n var bmMax = Math.max;\n var bmMin = Math.min;\n var BMMath = {};\n\n (function () {\n var propertyNames = ['abs', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atanh', 'atan2', 'ceil', 'cbrt', 'expm1', 'clz32', 'cos', 'cosh', 'exp', 'floor', 'fround', 'hypot', 'imul', 'log', 'log1p', 'log2', 'log10', 'max', 'min', 'pow', 'random', 'round', 'sign', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc', 'E', 'LN10', 'LN2', 'LOG10E', 'LOG2E', 'PI', 'SQRT1_2', 'SQRT2'];\n var i;\n var len = propertyNames.length;\n\n for (i = 0; i < len; i += 1) {\n BMMath[propertyNames[i]] = Math[propertyNames[i]];\n }\n })();\n\n function ProjectInterface$1() {\n return {};\n }\n\n BMMath.random = Math.random;\n\n BMMath.abs = function (val) {\n var tOfVal = _typeof$6(val);\n\n if (tOfVal === 'object' && val.length) {\n var absArr = createSizedArray(val.length);\n var i;\n var len = val.length;\n\n for (i = 0; i < len; i += 1) {\n absArr[i] = Math.abs(val[i]);\n }\n\n return absArr;\n }\n\n return Math.abs(val);\n };\n\n var defaultCurveSegments = 150;\n var degToRads = Math.PI / 180;\n var roundCorner = 0.5519;\n\n function roundValues(flag) {\n _shouldRoundValues = !!flag;\n }\n\n function bmRnd(value) {\n if (_shouldRoundValues) {\n return Math.round(value);\n }\n\n return value;\n }\n\n function styleDiv(element) {\n element.style.position = 'absolute';\n element.style.top = 0;\n element.style.left = 0;\n element.style.display = 'block';\n element.style.transformOrigin = '0 0';\n element.style.webkitTransformOrigin = '0 0';\n element.style.backfaceVisibility = 'visible';\n element.style.webkitBackfaceVisibility = 'visible';\n element.style.transformStyle = 'preserve-3d';\n element.style.webkitTransformStyle = 'preserve-3d';\n element.style.mozTransformStyle = 'preserve-3d';\n }\n\n function BMEnterFrameEvent(type, currentTime, totalTime, frameMultiplier) {\n this.type = type;\n this.currentTime = currentTime;\n this.totalTime = totalTime;\n this.direction = frameMultiplier < 0 ? -1 : 1;\n }\n\n function BMCompleteEvent(type, frameMultiplier) {\n this.type = type;\n this.direction = frameMultiplier < 0 ? -1 : 1;\n }\n\n function BMCompleteLoopEvent(type, totalLoops, currentLoop, frameMultiplier) {\n this.type = type;\n this.currentLoop = currentLoop;\n this.totalLoops = totalLoops;\n this.direction = frameMultiplier < 0 ? -1 : 1;\n }\n\n function BMSegmentStartEvent(type, firstFrame, totalFrames) {\n this.type = type;\n this.firstFrame = firstFrame;\n this.totalFrames = totalFrames;\n }\n\n function BMDestroyEvent(type, target) {\n this.type = type;\n this.target = target;\n }\n\n function BMRenderFrameErrorEvent(nativeError, currentTime) {\n this.type = 'renderFrameError';\n this.nativeError = nativeError;\n this.currentTime = currentTime;\n }\n\n function BMConfigErrorEvent(nativeError) {\n this.type = 'configError';\n this.nativeError = nativeError;\n }\n\n function BMAnimationConfigErrorEvent(type, nativeError) {\n this.type = type;\n this.nativeError = nativeError;\n }\n\n var createElementID = function () {\n var _count = 0;\n return function createID() {\n _count += 1;\n return idPrefix + '__lottie_element_' + _count;\n };\n }();\n\n function HSVtoRGB(h, s, v) {\n var r;\n var g;\n var b;\n var i;\n var f;\n var p;\n var q;\n var t;\n i = Math.floor(h * 6);\n f = h * 6 - i;\n p = v * (1 - s);\n q = v * (1 - f * s);\n t = v * (1 - (1 - f) * s);\n\n switch (i % 6) {\n case 0:\n r = v;\n g = t;\n b = p;\n break;\n\n case 1:\n r = q;\n g = v;\n b = p;\n break;\n\n case 2:\n r = p;\n g = v;\n b = t;\n break;\n\n case 3:\n r = p;\n g = q;\n b = v;\n break;\n\n case 4:\n r = t;\n g = p;\n b = v;\n break;\n\n case 5:\n r = v;\n g = p;\n b = q;\n break;\n\n default:\n break;\n }\n\n return [r, g, b];\n }\n\n function RGBtoHSV(r, g, b) {\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var d = max - min;\n var h;\n var s = max === 0 ? 0 : d / max;\n var v = max / 255;\n\n switch (max) {\n case min:\n h = 0;\n break;\n\n case r:\n h = g - b + d * (g < b ? 6 : 0);\n h /= 6 * d;\n break;\n\n case g:\n h = b - r + d * 2;\n h /= 6 * d;\n break;\n\n case b:\n h = r - g + d * 4;\n h /= 6 * d;\n break;\n\n default:\n break;\n }\n\n return [h, s, v];\n }\n\n function addSaturationToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[1] += offset;\n\n if (hsv[1] > 1) {\n hsv[1] = 1;\n } else if (hsv[1] <= 0) {\n hsv[1] = 0;\n }\n\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n\n function addBrightnessToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[2] += offset;\n\n if (hsv[2] > 1) {\n hsv[2] = 1;\n } else if (hsv[2] < 0) {\n hsv[2] = 0;\n }\n\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n\n function addHueToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[0] += offset / 360;\n\n if (hsv[0] > 1) {\n hsv[0] -= 1;\n } else if (hsv[0] < 0) {\n hsv[0] += 1;\n }\n\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n\n var rgbToHex = function () {\n var colorMap = [];\n var i;\n var hex;\n\n for (i = 0; i < 256; i += 1) {\n hex = i.toString(16);\n colorMap[i] = hex.length === 1 ? '0' + hex : hex;\n }\n\n return function (r, g, b) {\n if (r < 0) {\n r = 0;\n }\n\n if (g < 0) {\n g = 0;\n }\n\n if (b < 0) {\n b = 0;\n }\n\n return '#' + colorMap[r] + colorMap[g] + colorMap[b];\n };\n }();\n\n var setSubframeEnabled = function setSubframeEnabled(flag) {\n subframeEnabled = !!flag;\n };\n\n var getSubframeEnabled = function getSubframeEnabled() {\n return subframeEnabled;\n };\n\n var setExpressionsPlugin = function setExpressionsPlugin(value) {\n expressionsPlugin = value;\n };\n\n var getExpressionsPlugin = function getExpressionsPlugin() {\n return expressionsPlugin;\n };\n\n var setDefaultCurveSegments = function setDefaultCurveSegments(value) {\n defaultCurveSegments = value;\n };\n\n var getDefaultCurveSegments = function getDefaultCurveSegments() {\n return defaultCurveSegments;\n };\n\n var setIdPrefix = function setIdPrefix(value) {\n idPrefix = value;\n };\n\n var getIdPrefix = function getIdPrefix() {\n return idPrefix;\n };\n\n function createNS(type) {\n // return {appendChild:function(){},setAttribute:function(){},style:{}}\n return document.createElementNS(svgNS, type);\n }\n\n function _typeof$5(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$5 = function _typeof(obj) { return typeof obj; }; } else { _typeof$5 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$5(obj); }\n\n var dataManager = function () {\n var _counterId = 1;\n var processes = [];\n var workerFn;\n var workerInstance;\n var workerProxy = {\n onmessage: function onmessage() {},\n postMessage: function postMessage(path) {\n workerFn({\n data: path\n });\n }\n };\n var _workerSelf = {\n postMessage: function postMessage(data) {\n workerProxy.onmessage({\n data: data\n });\n }\n };\n\n function createWorker(fn) {\n if (window.Worker && window.Blob && getWebWorker()) {\n var blob = new Blob(['var _workerSelf = self; self.onmessage = ', fn.toString()], {\n type: 'text/javascript'\n }); // var blob = new Blob(['self.onmessage = ', fn.toString()], { type: 'text/javascript' });\n\n var url = URL.createObjectURL(blob);\n return new Worker(url);\n }\n\n workerFn = fn;\n return workerProxy;\n }\n\n function setupWorker() {\n if (!workerInstance) {\n workerInstance = createWorker(function workerStart(e) {\n function dataFunctionManager() {\n function completeLayers(layers, comps) {\n var layerData;\n var i;\n var len = layers.length;\n var j;\n var jLen;\n var k;\n var kLen;\n\n for (i = 0; i < len; i += 1) {\n layerData = layers[i];\n\n if ('ks' in layerData && !layerData.completed) {\n layerData.completed = true;\n\n if (layerData.tt) {\n layers[i - 1].td = layerData.tt;\n }\n\n if (layerData.hasMask) {\n var maskProps = layerData.masksProperties;\n jLen = maskProps.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (maskProps[j].pt.k.i) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k);\n } else {\n kLen = maskProps[j].pt.k.length;\n\n for (k = 0; k < kLen; k += 1) {\n if (maskProps[j].pt.k[k].s) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].s[0]);\n }\n\n if (maskProps[j].pt.k[k].e) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].e[0]);\n }\n }\n }\n }\n }\n\n if (layerData.ty === 0) {\n layerData.layers = findCompLayers(layerData.refId, comps);\n completeLayers(layerData.layers, comps);\n } else if (layerData.ty === 4) {\n completeShapes(layerData.shapes);\n } else if (layerData.ty === 5) {\n completeText(layerData);\n }\n }\n }\n }\n\n function completeChars(chars, assets) {\n if (chars) {\n var i = 0;\n var len = chars.length;\n\n for (i = 0; i < len; i += 1) {\n if (chars[i].t === 1) {\n // var compData = findComp(chars[i].data.refId, assets);\n chars[i].data.layers = findCompLayers(chars[i].data.refId, assets); // chars[i].data.ip = 0;\n // chars[i].data.op = 99999;\n // chars[i].data.st = 0;\n // chars[i].data.sr = 1;\n // chars[i].w = compData.w;\n // chars[i].data.ks = {\n // a: { k: [0, 0, 0], a: 0 },\n // p: { k: [0, -compData.h, 0], a: 0 },\n // r: { k: 0, a: 0 },\n // s: { k: [100, 100], a: 0 },\n // o: { k: 100, a: 0 },\n // };\n\n completeLayers(chars[i].data.layers, assets);\n }\n }\n }\n }\n\n function findComp(id, comps) {\n var i = 0;\n var len = comps.length;\n\n while (i < len) {\n if (comps[i].id === id) {\n return comps[i];\n }\n\n i += 1;\n }\n\n return null;\n }\n\n function findCompLayers(id, comps) {\n var comp = findComp(id, comps);\n\n if (comp) {\n if (!comp.layers.__used) {\n comp.layers.__used = true;\n return comp.layers;\n }\n\n return JSON.parse(JSON.stringify(comp.layers));\n }\n\n return null;\n }\n\n function completeShapes(arr) {\n var i;\n var len = arr.length;\n var j;\n var jLen;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (arr[i].ty === 'sh') {\n if (arr[i].ks.k.i) {\n convertPathsToAbsoluteValues(arr[i].ks.k);\n } else {\n jLen = arr[i].ks.k.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (arr[i].ks.k[j].s) {\n convertPathsToAbsoluteValues(arr[i].ks.k[j].s[0]);\n }\n\n if (arr[i].ks.k[j].e) {\n convertPathsToAbsoluteValues(arr[i].ks.k[j].e[0]);\n }\n }\n }\n } else if (arr[i].ty === 'gr') {\n completeShapes(arr[i].it);\n }\n }\n }\n\n function convertPathsToAbsoluteValues(path) {\n var i;\n var len = path.i.length;\n\n for (i = 0; i < len; i += 1) {\n path.i[i][0] += path.v[i][0];\n path.i[i][1] += path.v[i][1];\n path.o[i][0] += path.v[i][0];\n path.o[i][1] += path.v[i][1];\n }\n }\n\n function checkVersion(minimum, animVersionString) {\n var animVersion = animVersionString ? animVersionString.split('.') : [100, 100, 100];\n\n if (minimum[0] > animVersion[0]) {\n return true;\n }\n\n if (animVersion[0] > minimum[0]) {\n return false;\n }\n\n if (minimum[1] > animVersion[1]) {\n return true;\n }\n\n if (animVersion[1] > minimum[1]) {\n return false;\n }\n\n if (minimum[2] > animVersion[2]) {\n return true;\n }\n\n if (animVersion[2] > minimum[2]) {\n return false;\n }\n\n return null;\n }\n\n var checkText = function () {\n var minimumVersion = [4, 4, 14];\n\n function updateTextLayer(textLayer) {\n var documentData = textLayer.t.d;\n textLayer.t.d = {\n k: [{\n s: documentData,\n t: 0\n }]\n };\n }\n\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 5) {\n updateTextLayer(layers[i]);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n var checkChars = function () {\n var minimumVersion = [4, 7, 99];\n return function (animationData) {\n if (animationData.chars && !checkVersion(minimumVersion, animationData.v)) {\n var i;\n var len = animationData.chars.length;\n\n for (i = 0; i < len; i += 1) {\n var charData = animationData.chars[i];\n\n if (charData.data && charData.data.shapes) {\n completeShapes(charData.data.shapes);\n charData.data.ip = 0;\n charData.data.op = 99999;\n charData.data.st = 0;\n charData.data.sr = 1;\n charData.data.ks = {\n p: {\n k: [0, 0],\n a: 0\n },\n s: {\n k: [100, 100],\n a: 0\n },\n a: {\n k: [0, 0],\n a: 0\n },\n r: {\n k: 0,\n a: 0\n },\n o: {\n k: 100,\n a: 0\n }\n };\n\n if (!animationData.chars[i].t) {\n charData.data.shapes.push({\n ty: 'no'\n });\n charData.data.shapes[0].it.push({\n p: {\n k: [0, 0],\n a: 0\n },\n s: {\n k: [100, 100],\n a: 0\n },\n a: {\n k: [0, 0],\n a: 0\n },\n r: {\n k: 0,\n a: 0\n },\n o: {\n k: 100,\n a: 0\n },\n sk: {\n k: 0,\n a: 0\n },\n sa: {\n k: 0,\n a: 0\n },\n ty: 'tr'\n });\n }\n }\n }\n }\n };\n }();\n\n var checkPathProperties = function () {\n var minimumVersion = [5, 7, 15];\n\n function updateTextLayer(textLayer) {\n var pathData = textLayer.t.p;\n\n if (typeof pathData.a === 'number') {\n pathData.a = {\n a: 0,\n k: pathData.a\n };\n }\n\n if (typeof pathData.p === 'number') {\n pathData.p = {\n a: 0,\n k: pathData.p\n };\n }\n\n if (typeof pathData.r === 'number') {\n pathData.r = {\n a: 0,\n k: pathData.r\n };\n }\n }\n\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 5) {\n updateTextLayer(layers[i]);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n var checkColors = function () {\n var minimumVersion = [4, 1, 9];\n\n function iterateShapes(shapes) {\n var i;\n var len = shapes.length;\n var j;\n var jLen;\n\n for (i = 0; i < len; i += 1) {\n if (shapes[i].ty === 'gr') {\n iterateShapes(shapes[i].it);\n } else if (shapes[i].ty === 'fl' || shapes[i].ty === 'st') {\n if (shapes[i].c.k && shapes[i].c.k[0].i) {\n jLen = shapes[i].c.k.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (shapes[i].c.k[j].s) {\n shapes[i].c.k[j].s[0] /= 255;\n shapes[i].c.k[j].s[1] /= 255;\n shapes[i].c.k[j].s[2] /= 255;\n shapes[i].c.k[j].s[3] /= 255;\n }\n\n if (shapes[i].c.k[j].e) {\n shapes[i].c.k[j].e[0] /= 255;\n shapes[i].c.k[j].e[1] /= 255;\n shapes[i].c.k[j].e[2] /= 255;\n shapes[i].c.k[j].e[3] /= 255;\n }\n }\n } else {\n shapes[i].c.k[0] /= 255;\n shapes[i].c.k[1] /= 255;\n shapes[i].c.k[2] /= 255;\n shapes[i].c.k[3] /= 255;\n }\n }\n }\n }\n\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 4) {\n iterateShapes(layers[i].shapes);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n var checkShapes = function () {\n var minimumVersion = [4, 4, 18];\n\n function completeClosingShapes(arr) {\n var i;\n var len = arr.length;\n var j;\n var jLen;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (arr[i].ty === 'sh') {\n if (arr[i].ks.k.i) {\n arr[i].ks.k.c = arr[i].closed;\n } else {\n jLen = arr[i].ks.k.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (arr[i].ks.k[j].s) {\n arr[i].ks.k[j].s[0].c = arr[i].closed;\n }\n\n if (arr[i].ks.k[j].e) {\n arr[i].ks.k[j].e[0].c = arr[i].closed;\n }\n }\n }\n } else if (arr[i].ty === 'gr') {\n completeClosingShapes(arr[i].it);\n }\n }\n }\n\n function iterateLayers(layers) {\n var layerData;\n var i;\n var len = layers.length;\n var j;\n var jLen;\n var k;\n var kLen;\n\n for (i = 0; i < len; i += 1) {\n layerData = layers[i];\n\n if (layerData.hasMask) {\n var maskProps = layerData.masksProperties;\n jLen = maskProps.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (maskProps[j].pt.k.i) {\n maskProps[j].pt.k.c = maskProps[j].cl;\n } else {\n kLen = maskProps[j].pt.k.length;\n\n for (k = 0; k < kLen; k += 1) {\n if (maskProps[j].pt.k[k].s) {\n maskProps[j].pt.k[k].s[0].c = maskProps[j].cl;\n }\n\n if (maskProps[j].pt.k[k].e) {\n maskProps[j].pt.k[k].e[0].c = maskProps[j].cl;\n }\n }\n }\n }\n }\n\n if (layerData.ty === 4) {\n completeClosingShapes(layerData.shapes);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n function completeData(animationData) {\n if (animationData.__complete) {\n return;\n }\n\n checkColors(animationData);\n checkText(animationData);\n checkChars(animationData);\n checkPathProperties(animationData);\n checkShapes(animationData);\n completeLayers(animationData.layers, animationData.assets);\n completeChars(animationData.chars, animationData.assets);\n animationData.__complete = true;\n }\n\n function completeText(data) {\n if (data.t.a.length === 0 && !('m' in data.t.p)) {// data.singleShape = true;\n }\n }\n\n var moduleOb = {};\n moduleOb.completeData = completeData;\n moduleOb.checkColors = checkColors;\n moduleOb.checkChars = checkChars;\n moduleOb.checkPathProperties = checkPathProperties;\n moduleOb.checkShapes = checkShapes;\n moduleOb.completeLayers = completeLayers;\n return moduleOb;\n }\n\n if (!_workerSelf.dataManager) {\n _workerSelf.dataManager = dataFunctionManager();\n }\n\n if (!_workerSelf.assetLoader) {\n _workerSelf.assetLoader = function () {\n function formatResponse(xhr) {\n // using typeof doubles the time of execution of this method,\n // so if available, it's better to use the header to validate the type\n var contentTypeHeader = xhr.getResponseHeader('content-type');\n\n if (contentTypeHeader && xhr.responseType === 'json' && contentTypeHeader.indexOf('json') !== -1) {\n return xhr.response;\n }\n\n if (xhr.response && _typeof$5(xhr.response) === 'object') {\n return xhr.response;\n }\n\n if (xhr.response && typeof xhr.response === 'string') {\n return JSON.parse(xhr.response);\n }\n\n if (xhr.responseText) {\n return JSON.parse(xhr.responseText);\n }\n\n return null;\n }\n\n function loadAsset(path, fullPath, callback, errorCallback) {\n var response;\n var xhr = new XMLHttpRequest(); // set responseType after calling open or IE will break.\n\n try {\n // This crashes on Android WebView prior to KitKat\n xhr.responseType = 'json';\n } catch (err) {} // eslint-disable-line no-empty\n\n\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n if (xhr.status === 200) {\n response = formatResponse(xhr);\n callback(response);\n } else {\n try {\n response = formatResponse(xhr);\n callback(response);\n } catch (err) {\n if (errorCallback) {\n errorCallback(err);\n }\n }\n }\n }\n };\n\n try {\n xhr.open('GET', path, true);\n } catch (error) {\n xhr.open('GET', fullPath + '/' + path, true);\n }\n\n xhr.send();\n }\n\n return {\n load: loadAsset\n };\n }();\n }\n\n if (e.data.type === 'loadAnimation') {\n _workerSelf.assetLoader.load(e.data.path, e.data.fullPath, function (data) {\n _workerSelf.dataManager.completeData(data);\n\n _workerSelf.postMessage({\n id: e.data.id,\n payload: data,\n status: 'success'\n });\n }, function () {\n _workerSelf.postMessage({\n id: e.data.id,\n status: 'error'\n });\n });\n } else if (e.data.type === 'complete') {\n var animation = e.data.animation;\n\n _workerSelf.dataManager.completeData(animation);\n\n _workerSelf.postMessage({\n id: e.data.id,\n payload: animation,\n status: 'success'\n });\n } else if (e.data.type === 'loadData') {\n _workerSelf.assetLoader.load(e.data.path, e.data.fullPath, function (data) {\n _workerSelf.postMessage({\n id: e.data.id,\n payload: data,\n status: 'success'\n });\n }, function () {\n _workerSelf.postMessage({\n id: e.data.id,\n status: 'error'\n });\n });\n }\n });\n\n workerInstance.onmessage = function (event) {\n var data = event.data;\n var id = data.id;\n var process = processes[id];\n processes[id] = null;\n\n if (data.status === 'success') {\n process.onComplete(data.payload);\n } else if (process.onError) {\n process.onError();\n }\n };\n }\n }\n\n function createProcess(onComplete, onError) {\n _counterId += 1;\n var id = 'processId_' + _counterId;\n processes[id] = {\n onComplete: onComplete,\n onError: onError\n };\n return id;\n }\n\n function loadAnimation(path, onComplete, onError) {\n setupWorker();\n var processId = createProcess(onComplete, onError);\n workerInstance.postMessage({\n type: 'loadAnimation',\n path: path,\n fullPath: window.location.origin + window.location.pathname,\n id: processId\n });\n }\n\n function loadData(path, onComplete, onError) {\n setupWorker();\n var processId = createProcess(onComplete, onError);\n workerInstance.postMessage({\n type: 'loadData',\n path: path,\n fullPath: window.location.origin + window.location.pathname,\n id: processId\n });\n }\n\n function completeAnimation(anim, onComplete, onError) {\n setupWorker();\n var processId = createProcess(onComplete, onError);\n workerInstance.postMessage({\n type: 'complete',\n animation: anim,\n id: processId\n });\n }\n\n return {\n loadAnimation: loadAnimation,\n loadData: loadData,\n completeAnimation: completeAnimation\n };\n }();\n\n var ImagePreloader = function () {\n var proxyImage = function () {\n var canvas = createTag('canvas');\n canvas.width = 1;\n canvas.height = 1;\n var ctx = canvas.getContext('2d');\n ctx.fillStyle = 'rgba(0,0,0,0)';\n ctx.fillRect(0, 0, 1, 1);\n return canvas;\n }();\n\n function imageLoaded() {\n this.loadedAssets += 1;\n\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\n if (this.imagesLoadedCb) {\n this.imagesLoadedCb(null);\n }\n }\n }\n\n function footageLoaded() {\n this.loadedFootagesCount += 1;\n\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\n if (this.imagesLoadedCb) {\n this.imagesLoadedCb(null);\n }\n }\n }\n\n function getAssetsPath(assetData, assetsPath, originalPath) {\n var path = '';\n\n if (assetData.e) {\n path = assetData.p;\n } else if (assetsPath) {\n var imagePath = assetData.p;\n\n if (imagePath.indexOf('images/') !== -1) {\n imagePath = imagePath.split('/')[1];\n }\n\n path = assetsPath + imagePath;\n } else {\n path = originalPath;\n path += assetData.u ? assetData.u : '';\n path += assetData.p;\n }\n\n return path;\n }\n\n function testImageLoaded(img) {\n var _count = 0;\n var intervalId = setInterval(function () {\n var box = img.getBBox();\n\n if (box.width || _count > 500) {\n this._imageLoaded();\n\n clearInterval(intervalId);\n }\n\n _count += 1;\n }.bind(this), 50);\n }\n\n function createImageData(assetData) {\n var path = getAssetsPath(assetData, this.assetsPath, this.path);\n var img = createNS('image');\n\n if (isSafari) {\n this.testImageLoaded(img);\n } else {\n img.addEventListener('load', this._imageLoaded, false);\n }\n\n img.addEventListener('error', function () {\n ob.img = proxyImage;\n\n this._imageLoaded();\n }.bind(this), false);\n img.setAttributeNS('http://www.w3.org/1999/xlink', 'href', path);\n\n if (this._elementHelper.append) {\n this._elementHelper.append(img);\n } else {\n this._elementHelper.appendChild(img);\n }\n\n var ob = {\n img: img,\n assetData: assetData\n };\n return ob;\n }\n\n function createImgData(assetData) {\n var path = getAssetsPath(assetData, this.assetsPath, this.path);\n var img = createTag('img');\n img.crossOrigin = 'anonymous';\n img.addEventListener('load', this._imageLoaded, false);\n img.addEventListener('error', function () {\n ob.img = proxyImage;\n\n this._imageLoaded();\n }.bind(this), false);\n img.src = path;\n var ob = {\n img: img,\n assetData: assetData\n };\n return ob;\n }\n\n function createFootageData(data) {\n var ob = {\n assetData: data\n };\n var path = getAssetsPath(data, this.assetsPath, this.path);\n dataManager.loadData(path, function (footageData) {\n ob.img = footageData;\n\n this._footageLoaded();\n }.bind(this), function () {\n ob.img = {};\n\n this._footageLoaded();\n }.bind(this));\n return ob;\n }\n\n function loadAssets(assets, cb) {\n this.imagesLoadedCb = cb;\n var i;\n var len = assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (!assets[i].layers) {\n if (!assets[i].t || assets[i].t === 'seq') {\n this.totalImages += 1;\n this.images.push(this._createImageData(assets[i]));\n } else if (assets[i].t === 3) {\n this.totalFootages += 1;\n this.images.push(this.createFootageData(assets[i]));\n }\n }\n }\n }\n\n function setPath(path) {\n this.path = path || '';\n }\n\n function setAssetsPath(path) {\n this.assetsPath = path || '';\n }\n\n function getAsset(assetData) {\n var i = 0;\n var len = this.images.length;\n\n while (i < len) {\n if (this.images[i].assetData === assetData) {\n return this.images[i].img;\n }\n\n i += 1;\n }\n\n return null;\n }\n\n function destroy() {\n this.imagesLoadedCb = null;\n this.images.length = 0;\n }\n\n function loadedImages() {\n return this.totalImages === this.loadedAssets;\n }\n\n function loadedFootages() {\n return this.totalFootages === this.loadedFootagesCount;\n }\n\n function setCacheType(type, elementHelper) {\n if (type === 'svg') {\n this._elementHelper = elementHelper;\n this._createImageData = this.createImageData.bind(this);\n } else {\n this._createImageData = this.createImgData.bind(this);\n }\n }\n\n function ImagePreloaderFactory() {\n this._imageLoaded = imageLoaded.bind(this);\n this._footageLoaded = footageLoaded.bind(this);\n this.testImageLoaded = testImageLoaded.bind(this);\n this.createFootageData = createFootageData.bind(this);\n this.assetsPath = '';\n this.path = '';\n this.totalImages = 0;\n this.totalFootages = 0;\n this.loadedAssets = 0;\n this.loadedFootagesCount = 0;\n this.imagesLoadedCb = null;\n this.images = [];\n }\n\n ImagePreloaderFactory.prototype = {\n loadAssets: loadAssets,\n setAssetsPath: setAssetsPath,\n setPath: setPath,\n loadedImages: loadedImages,\n loadedFootages: loadedFootages,\n destroy: destroy,\n getAsset: getAsset,\n createImgData: createImgData,\n createImageData: createImageData,\n imageLoaded: imageLoaded,\n footageLoaded: footageLoaded,\n setCacheType: setCacheType\n };\n return ImagePreloaderFactory;\n }();\n\n function BaseEvent() {}\n\n BaseEvent.prototype = {\n triggerEvent: function triggerEvent(eventName, args) {\n if (this._cbs[eventName]) {\n var callbacks = this._cbs[eventName];\n\n for (var i = 0; i < callbacks.length; i += 1) {\n callbacks[i](args);\n }\n }\n },\n addEventListener: function addEventListener(eventName, callback) {\n if (!this._cbs[eventName]) {\n this._cbs[eventName] = [];\n }\n\n this._cbs[eventName].push(callback);\n\n return function () {\n this.removeEventListener(eventName, callback);\n }.bind(this);\n },\n removeEventListener: function removeEventListener(eventName, callback) {\n if (!callback) {\n this._cbs[eventName] = null;\n } else if (this._cbs[eventName]) {\n var i = 0;\n var len = this._cbs[eventName].length;\n\n while (i < len) {\n if (this._cbs[eventName][i] === callback) {\n this._cbs[eventName].splice(i, 1);\n\n i -= 1;\n len -= 1;\n }\n\n i += 1;\n }\n\n if (!this._cbs[eventName].length) {\n this._cbs[eventName] = null;\n }\n }\n }\n };\n\n var markerParser = function () {\n function parsePayloadLines(payload) {\n var lines = payload.split('\\r\\n');\n var keys = {};\n var line;\n var keysCount = 0;\n\n for (var i = 0; i < lines.length; i += 1) {\n line = lines[i].split(':');\n\n if (line.length === 2) {\n keys[line[0]] = line[1].trim();\n keysCount += 1;\n }\n }\n\n if (keysCount === 0) {\n throw new Error();\n }\n\n return keys;\n }\n\n return function (_markers) {\n var markers = [];\n\n for (var i = 0; i < _markers.length; i += 1) {\n var _marker = _markers[i];\n var markerData = {\n time: _marker.tm,\n duration: _marker.dr\n };\n\n try {\n markerData.payload = JSON.parse(_markers[i].cm);\n } catch (_) {\n try {\n markerData.payload = parsePayloadLines(_markers[i].cm);\n } catch (__) {\n markerData.payload = {\n name: _markers[i]\n };\n }\n }\n\n markers.push(markerData);\n }\n\n return markers;\n };\n }();\n\n var ProjectInterface = function () {\n function registerComposition(comp) {\n this.compositions.push(comp);\n }\n\n return function () {\n function _thisProjectFunction(name) {\n var i = 0;\n var len = this.compositions.length;\n\n while (i < len) {\n if (this.compositions[i].data && this.compositions[i].data.nm === name) {\n if (this.compositions[i].prepareFrame && this.compositions[i].data.xt) {\n this.compositions[i].prepareFrame(this.currentFrame);\n }\n\n return this.compositions[i].compInterface;\n }\n\n i += 1;\n }\n\n return null;\n }\n\n _thisProjectFunction.compositions = [];\n _thisProjectFunction.currentFrame = 0;\n _thisProjectFunction.registerComposition = registerComposition;\n return _thisProjectFunction;\n };\n }();\n\n var renderers = {};\n\n var registerRenderer = function registerRenderer(key, value) {\n renderers[key] = value;\n };\n\n function getRenderer(key) {\n return renderers[key];\n }\n\n function _typeof$4(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$4 = function _typeof(obj) { return typeof obj; }; } else { _typeof$4 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$4(obj); }\n\n var AnimationItem = function AnimationItem() {\n this._cbs = [];\n this.name = '';\n this.path = '';\n this.isLoaded = false;\n this.currentFrame = 0;\n this.currentRawFrame = 0;\n this.firstFrame = 0;\n this.totalFrames = 0;\n this.frameRate = 0;\n this.frameMult = 0;\n this.playSpeed = 1;\n this.playDirection = 1;\n this.playCount = 0;\n this.animationData = {};\n this.assets = [];\n this.isPaused = true;\n this.autoplay = false;\n this.loop = true;\n this.renderer = null;\n this.animationID = createElementID();\n this.assetsPath = '';\n this.timeCompleted = 0;\n this.segmentPos = 0;\n this.isSubframeEnabled = getSubframeEnabled();\n this.segments = [];\n this._idle = true;\n this._completedLoop = false;\n this.projectInterface = ProjectInterface();\n this.imagePreloader = new ImagePreloader();\n this.audioController = audioControllerFactory();\n this.markers = [];\n this.configAnimation = this.configAnimation.bind(this);\n this.onSetupError = this.onSetupError.bind(this);\n this.onSegmentComplete = this.onSegmentComplete.bind(this);\n };\n\n extendPrototype([BaseEvent], AnimationItem);\n\n AnimationItem.prototype.setParams = function (params) {\n if (params.wrapper || params.container) {\n this.wrapper = params.wrapper || params.container;\n }\n\n var animType = 'svg';\n\n if (params.animType) {\n animType = params.animType;\n } else if (params.renderer) {\n animType = params.renderer;\n }\n\n var RendererClass = getRenderer(animType);\n this.renderer = new RendererClass(this, params.rendererSettings);\n this.imagePreloader.setCacheType(animType, this.renderer.globalData.defs);\n this.renderer.setProjectInterface(this.projectInterface);\n this.animType = animType;\n\n if (params.loop === '' || params.loop === null || params.loop === undefined || params.loop === true) {\n this.loop = true;\n } else if (params.loop === false) {\n this.loop = false;\n } else {\n this.loop = parseInt(params.loop, 10);\n }\n\n this.autoplay = 'autoplay' in params ? params.autoplay : true;\n this.name = params.name ? params.name : '';\n this.autoloadSegments = Object.prototype.hasOwnProperty.call(params, 'autoloadSegments') ? params.autoloadSegments : true;\n this.assetsPath = params.assetsPath;\n this.initialSegment = params.initialSegment;\n\n if (params.audioFactory) {\n this.audioController.setAudioFactory(params.audioFactory);\n }\n\n if (params.animationData) {\n this.setupAnimation(params.animationData);\n } else if (params.path) {\n if (params.path.lastIndexOf('\\\\') !== -1) {\n this.path = params.path.substr(0, params.path.lastIndexOf('\\\\') + 1);\n } else {\n this.path = params.path.substr(0, params.path.lastIndexOf('/') + 1);\n }\n\n this.fileName = params.path.substr(params.path.lastIndexOf('/') + 1);\n this.fileName = this.fileName.substr(0, this.fileName.lastIndexOf('.json'));\n dataManager.loadAnimation(params.path, this.configAnimation, this.onSetupError);\n }\n };\n\n AnimationItem.prototype.onSetupError = function () {\n this.trigger('data_failed');\n };\n\n AnimationItem.prototype.setupAnimation = function (data) {\n dataManager.completeAnimation(data, this.configAnimation);\n };\n\n AnimationItem.prototype.setData = function (wrapper, animationData) {\n if (animationData) {\n if (_typeof$4(animationData) !== 'object') {\n animationData = JSON.parse(animationData);\n }\n }\n\n var params = {\n wrapper: wrapper,\n animationData: animationData\n };\n var wrapperAttributes = wrapper.attributes;\n params.path = wrapperAttributes.getNamedItem('data-animation-path') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-animation-path').value : wrapperAttributes.getNamedItem('data-bm-path') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-path').value : wrapperAttributes.getNamedItem('bm-path') ? wrapperAttributes.getNamedItem('bm-path').value : '';\n params.animType = wrapperAttributes.getNamedItem('data-anim-type') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-type').value : wrapperAttributes.getNamedItem('data-bm-type') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-type').value : wrapperAttributes.getNamedItem('bm-type') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('bm-type').value : wrapperAttributes.getNamedItem('data-bm-renderer') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-renderer').value : wrapperAttributes.getNamedItem('bm-renderer') ? wrapperAttributes.getNamedItem('bm-renderer').value : 'canvas';\n var loop = wrapperAttributes.getNamedItem('data-anim-loop') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-loop').value : wrapperAttributes.getNamedItem('data-bm-loop') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-loop').value : wrapperAttributes.getNamedItem('bm-loop') ? wrapperAttributes.getNamedItem('bm-loop').value : '';\n\n if (loop === 'false') {\n params.loop = false;\n } else if (loop === 'true') {\n params.loop = true;\n } else if (loop !== '') {\n params.loop = parseInt(loop, 10);\n }\n\n var autoplay = wrapperAttributes.getNamedItem('data-anim-autoplay') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-autoplay').value : wrapperAttributes.getNamedItem('data-bm-autoplay') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-autoplay').value : wrapperAttributes.getNamedItem('bm-autoplay') ? wrapperAttributes.getNamedItem('bm-autoplay').value : true;\n params.autoplay = autoplay !== 'false';\n params.name = wrapperAttributes.getNamedItem('data-name') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-name').value : wrapperAttributes.getNamedItem('data-bm-name') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-name').value : wrapperAttributes.getNamedItem('bm-name') ? wrapperAttributes.getNamedItem('bm-name').value : '';\n var prerender = wrapperAttributes.getNamedItem('data-anim-prerender') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-prerender').value : wrapperAttributes.getNamedItem('data-bm-prerender') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-prerender').value : wrapperAttributes.getNamedItem('bm-prerender') ? wrapperAttributes.getNamedItem('bm-prerender').value : '';\n\n if (prerender === 'false') {\n params.prerender = false;\n }\n\n this.setParams(params);\n };\n\n AnimationItem.prototype.includeLayers = function (data) {\n if (data.op > this.animationData.op) {\n this.animationData.op = data.op;\n this.totalFrames = Math.floor(data.op - this.animationData.ip);\n }\n\n var layers = this.animationData.layers;\n var i;\n var len = layers.length;\n var newLayers = data.layers;\n var j;\n var jLen = newLayers.length;\n\n for (j = 0; j < jLen; j += 1) {\n i = 0;\n\n while (i < len) {\n if (layers[i].id === newLayers[j].id) {\n layers[i] = newLayers[j];\n break;\n }\n\n i += 1;\n }\n }\n\n if (data.chars || data.fonts) {\n this.renderer.globalData.fontManager.addChars(data.chars);\n this.renderer.globalData.fontManager.addFonts(data.fonts, this.renderer.globalData.defs);\n }\n\n if (data.assets) {\n len = data.assets.length;\n\n for (i = 0; i < len; i += 1) {\n this.animationData.assets.push(data.assets[i]);\n }\n }\n\n this.animationData.__complete = false;\n dataManager.completeAnimation(this.animationData, this.onSegmentComplete);\n };\n\n AnimationItem.prototype.onSegmentComplete = function (data) {\n this.animationData = data;\n var expressionsPlugin = getExpressionsPlugin();\n\n if (expressionsPlugin) {\n expressionsPlugin.initExpressions(this);\n }\n\n this.loadNextSegment();\n };\n\n AnimationItem.prototype.loadNextSegment = function () {\n var segments = this.animationData.segments;\n\n if (!segments || segments.length === 0 || !this.autoloadSegments) {\n this.trigger('data_ready');\n this.timeCompleted = this.totalFrames;\n return;\n }\n\n var segment = segments.shift();\n this.timeCompleted = segment.time * this.frameRate;\n var segmentPath = this.path + this.fileName + '_' + this.segmentPos + '.json';\n this.segmentPos += 1;\n dataManager.loadData(segmentPath, this.includeLayers.bind(this), function () {\n this.trigger('data_failed');\n }.bind(this));\n };\n\n AnimationItem.prototype.loadSegments = function () {\n var segments = this.animationData.segments;\n\n if (!segments) {\n this.timeCompleted = this.totalFrames;\n }\n\n this.loadNextSegment();\n };\n\n AnimationItem.prototype.imagesLoaded = function () {\n this.trigger('loaded_images');\n this.checkLoaded();\n };\n\n AnimationItem.prototype.preloadImages = function () {\n this.imagePreloader.setAssetsPath(this.assetsPath);\n this.imagePreloader.setPath(this.path);\n this.imagePreloader.loadAssets(this.animationData.assets, this.imagesLoaded.bind(this));\n };\n\n AnimationItem.prototype.configAnimation = function (animData) {\n if (!this.renderer) {\n return;\n }\n\n try {\n this.animationData = animData;\n\n if (this.initialSegment) {\n this.totalFrames = Math.floor(this.initialSegment[1] - this.initialSegment[0]);\n this.firstFrame = Math.round(this.initialSegment[0]);\n } else {\n this.totalFrames = Math.floor(this.animationData.op - this.animationData.ip);\n this.firstFrame = Math.round(this.animationData.ip);\n }\n\n this.renderer.configAnimation(animData);\n\n if (!animData.assets) {\n animData.assets = [];\n }\n\n this.assets = this.animationData.assets;\n this.frameRate = this.animationData.fr;\n this.frameMult = this.animationData.fr / 1000;\n this.renderer.searchExtraCompositions(animData.assets);\n this.markers = markerParser(animData.markers || []);\n this.trigger('config_ready');\n this.preloadImages();\n this.loadSegments();\n this.updaFrameModifier();\n this.waitForFontsLoaded();\n\n if (this.isPaused) {\n this.audioController.pause();\n }\n } catch (error) {\n this.triggerConfigError(error);\n }\n };\n\n AnimationItem.prototype.waitForFontsLoaded = function () {\n if (!this.renderer) {\n return;\n }\n\n if (this.renderer.globalData.fontManager.isLoaded) {\n this.checkLoaded();\n } else {\n setTimeout(this.waitForFontsLoaded.bind(this), 20);\n }\n };\n\n AnimationItem.prototype.checkLoaded = function () {\n if (!this.isLoaded && this.renderer.globalData.fontManager.isLoaded && (this.imagePreloader.loadedImages() || this.renderer.rendererType !== 'canvas') && this.imagePreloader.loadedFootages()) {\n this.isLoaded = true;\n var expressionsPlugin = getExpressionsPlugin();\n\n if (expressionsPlugin) {\n expressionsPlugin.initExpressions(this);\n }\n\n this.renderer.initItems();\n setTimeout(function () {\n this.trigger('DOMLoaded');\n }.bind(this), 0);\n this.gotoFrame();\n\n if (this.autoplay) {\n this.play();\n }\n }\n };\n\n AnimationItem.prototype.resize = function () {\n this.renderer.updateContainerSize();\n };\n\n AnimationItem.prototype.setSubframe = function (flag) {\n this.isSubframeEnabled = !!flag;\n };\n\n AnimationItem.prototype.gotoFrame = function () {\n this.currentFrame = this.isSubframeEnabled ? this.currentRawFrame : ~~this.currentRawFrame; // eslint-disable-line no-bitwise\n\n if (this.timeCompleted !== this.totalFrames && this.currentFrame > this.timeCompleted) {\n this.currentFrame = this.timeCompleted;\n }\n\n this.trigger('enterFrame');\n this.renderFrame();\n this.trigger('drawnFrame');\n };\n\n AnimationItem.prototype.renderFrame = function () {\n if (this.isLoaded === false || !this.renderer) {\n return;\n }\n\n try {\n this.renderer.renderFrame(this.currentFrame + this.firstFrame);\n } catch (error) {\n this.triggerRenderFrameError(error);\n }\n };\n\n AnimationItem.prototype.play = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n if (this.isPaused === true) {\n this.isPaused = false;\n this.audioController.resume();\n\n if (this._idle) {\n this._idle = false;\n this.trigger('_active');\n }\n }\n };\n\n AnimationItem.prototype.pause = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n if (this.isPaused === false) {\n this.isPaused = true;\n this._idle = true;\n this.trigger('_idle');\n this.audioController.pause();\n }\n };\n\n AnimationItem.prototype.togglePause = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n if (this.isPaused === true) {\n this.play();\n } else {\n this.pause();\n }\n };\n\n AnimationItem.prototype.stop = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.pause();\n this.playCount = 0;\n this._completedLoop = false;\n this.setCurrentRawFrameValue(0);\n };\n\n AnimationItem.prototype.getMarkerData = function (markerName) {\n var marker;\n\n for (var i = 0; i < this.markers.length; i += 1) {\n marker = this.markers[i];\n\n if (marker.payload && marker.payload.name === markerName) {\n return marker;\n }\n }\n\n return null;\n };\n\n AnimationItem.prototype.goToAndStop = function (value, isFrame, name) {\n if (name && this.name !== name) {\n return;\n }\n\n var numValue = Number(value);\n\n if (isNaN(numValue)) {\n var marker = this.getMarkerData(value);\n\n if (marker) {\n this.goToAndStop(marker.time, true);\n }\n } else if (isFrame) {\n this.setCurrentRawFrameValue(value);\n } else {\n this.setCurrentRawFrameValue(value * this.frameModifier);\n }\n\n this.pause();\n };\n\n AnimationItem.prototype.goToAndPlay = function (value, isFrame, name) {\n if (name && this.name !== name) {\n return;\n }\n\n var numValue = Number(value);\n\n if (isNaN(numValue)) {\n var marker = this.getMarkerData(value);\n\n if (marker) {\n if (!marker.duration) {\n this.goToAndStop(marker.time, true);\n } else {\n this.playSegments([marker.time, marker.time + marker.duration], true);\n }\n }\n } else {\n this.goToAndStop(numValue, isFrame, name);\n }\n\n this.play();\n };\n\n AnimationItem.prototype.advanceTime = function (value) {\n if (this.isPaused === true || this.isLoaded === false) {\n return;\n }\n\n var nextValue = this.currentRawFrame + value * this.frameModifier;\n var _isComplete = false; // Checking if nextValue > totalFrames - 1 for addressing non looping and looping animations.\n // If animation won't loop, it should stop at totalFrames - 1. If it will loop it should complete the last frame and then loop.\n\n if (nextValue >= this.totalFrames - 1 && this.frameModifier > 0) {\n if (!this.loop || this.playCount === this.loop) {\n if (!this.checkSegments(nextValue > this.totalFrames ? nextValue % this.totalFrames : 0)) {\n _isComplete = true;\n nextValue = this.totalFrames - 1;\n }\n } else if (nextValue >= this.totalFrames) {\n this.playCount += 1;\n\n if (!this.checkSegments(nextValue % this.totalFrames)) {\n this.setCurrentRawFrameValue(nextValue % this.totalFrames);\n this._completedLoop = true;\n this.trigger('loopComplete');\n }\n } else {\n this.setCurrentRawFrameValue(nextValue);\n }\n } else if (nextValue < 0) {\n if (!this.checkSegments(nextValue % this.totalFrames)) {\n if (this.loop && !(this.playCount-- <= 0 && this.loop !== true)) {\n // eslint-disable-line no-plusplus\n this.setCurrentRawFrameValue(this.totalFrames + nextValue % this.totalFrames);\n\n if (!this._completedLoop) {\n this._completedLoop = true;\n } else {\n this.trigger('loopComplete');\n }\n } else {\n _isComplete = true;\n nextValue = 0;\n }\n }\n } else {\n this.setCurrentRawFrameValue(nextValue);\n }\n\n if (_isComplete) {\n this.setCurrentRawFrameValue(nextValue);\n this.pause();\n this.trigger('complete');\n }\n };\n\n AnimationItem.prototype.adjustSegment = function (arr, offset) {\n this.playCount = 0;\n\n if (arr[1] < arr[0]) {\n if (this.frameModifier > 0) {\n if (this.playSpeed < 0) {\n this.setSpeed(-this.playSpeed);\n } else {\n this.setDirection(-1);\n }\n }\n\n this.totalFrames = arr[0] - arr[1];\n this.timeCompleted = this.totalFrames;\n this.firstFrame = arr[1];\n this.setCurrentRawFrameValue(this.totalFrames - 0.001 - offset);\n } else if (arr[1] > arr[0]) {\n if (this.frameModifier < 0) {\n if (this.playSpeed < 0) {\n this.setSpeed(-this.playSpeed);\n } else {\n this.setDirection(1);\n }\n }\n\n this.totalFrames = arr[1] - arr[0];\n this.timeCompleted = this.totalFrames;\n this.firstFrame = arr[0];\n this.setCurrentRawFrameValue(0.001 + offset);\n }\n\n this.trigger('segmentStart');\n };\n\n AnimationItem.prototype.setSegment = function (init, end) {\n var pendingFrame = -1;\n\n if (this.isPaused) {\n if (this.currentRawFrame + this.firstFrame < init) {\n pendingFrame = init;\n } else if (this.currentRawFrame + this.firstFrame > end) {\n pendingFrame = end - init;\n }\n }\n\n this.firstFrame = init;\n this.totalFrames = end - init;\n this.timeCompleted = this.totalFrames;\n\n if (pendingFrame !== -1) {\n this.goToAndStop(pendingFrame, true);\n }\n };\n\n AnimationItem.prototype.playSegments = function (arr, forceFlag) {\n if (forceFlag) {\n this.segments.length = 0;\n }\n\n if (_typeof$4(arr[0]) === 'object') {\n var i;\n var len = arr.length;\n\n for (i = 0; i < len; i += 1) {\n this.segments.push(arr[i]);\n }\n } else {\n this.segments.push(arr);\n }\n\n if (this.segments.length && forceFlag) {\n this.adjustSegment(this.segments.shift(), 0);\n }\n\n if (this.isPaused) {\n this.play();\n }\n };\n\n AnimationItem.prototype.resetSegments = function (forceFlag) {\n this.segments.length = 0;\n this.segments.push([this.animationData.ip, this.animationData.op]);\n\n if (forceFlag) {\n this.checkSegments(0);\n }\n };\n\n AnimationItem.prototype.checkSegments = function (offset) {\n if (this.segments.length) {\n this.adjustSegment(this.segments.shift(), offset);\n return true;\n }\n\n return false;\n };\n\n AnimationItem.prototype.destroy = function (name) {\n if (name && this.name !== name || !this.renderer) {\n return;\n }\n\n this.renderer.destroy();\n this.imagePreloader.destroy();\n this.trigger('destroy');\n this._cbs = null;\n this.onEnterFrame = null;\n this.onLoopComplete = null;\n this.onComplete = null;\n this.onSegmentStart = null;\n this.onDestroy = null;\n this.renderer = null;\n this.renderer = null;\n this.imagePreloader = null;\n this.projectInterface = null;\n };\n\n AnimationItem.prototype.setCurrentRawFrameValue = function (value) {\n this.currentRawFrame = value;\n this.gotoFrame();\n };\n\n AnimationItem.prototype.setSpeed = function (val) {\n this.playSpeed = val;\n this.updaFrameModifier();\n };\n\n AnimationItem.prototype.setDirection = function (val) {\n this.playDirection = val < 0 ? -1 : 1;\n this.updaFrameModifier();\n };\n\n AnimationItem.prototype.setVolume = function (val, name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.audioController.setVolume(val);\n };\n\n AnimationItem.prototype.getVolume = function () {\n return this.audioController.getVolume();\n };\n\n AnimationItem.prototype.mute = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.audioController.mute();\n };\n\n AnimationItem.prototype.unmute = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.audioController.unmute();\n };\n\n AnimationItem.prototype.updaFrameModifier = function () {\n this.frameModifier = this.frameMult * this.playSpeed * this.playDirection;\n this.audioController.setRate(this.playSpeed * this.playDirection);\n };\n\n AnimationItem.prototype.getPath = function () {\n return this.path;\n };\n\n AnimationItem.prototype.getAssetsPath = function (assetData) {\n var path = '';\n\n if (assetData.e) {\n path = assetData.p;\n } else if (this.assetsPath) {\n var imagePath = assetData.p;\n\n if (imagePath.indexOf('images/') !== -1) {\n imagePath = imagePath.split('/')[1];\n }\n\n path = this.assetsPath + imagePath;\n } else {\n path = this.path;\n path += assetData.u ? assetData.u : '';\n path += assetData.p;\n }\n\n return path;\n };\n\n AnimationItem.prototype.getAssetData = function (id) {\n var i = 0;\n var len = this.assets.length;\n\n while (i < len) {\n if (id === this.assets[i].id) {\n return this.assets[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n AnimationItem.prototype.hide = function () {\n this.renderer.hide();\n };\n\n AnimationItem.prototype.show = function () {\n this.renderer.show();\n };\n\n AnimationItem.prototype.getDuration = function (isFrame) {\n return isFrame ? this.totalFrames : this.totalFrames / this.frameRate;\n };\n\n AnimationItem.prototype.trigger = function (name) {\n if (this._cbs && this._cbs[name]) {\n switch (name) {\n case 'enterFrame':\n case 'drawnFrame':\n this.triggerEvent(name, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameModifier));\n break;\n\n case 'loopComplete':\n this.triggerEvent(name, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\n break;\n\n case 'complete':\n this.triggerEvent(name, new BMCompleteEvent(name, this.frameMult));\n break;\n\n case 'segmentStart':\n this.triggerEvent(name, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\n break;\n\n case 'destroy':\n this.triggerEvent(name, new BMDestroyEvent(name, this));\n break;\n\n default:\n this.triggerEvent(name);\n }\n }\n\n if (name === 'enterFrame' && this.onEnterFrame) {\n this.onEnterFrame.call(this, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameMult));\n }\n\n if (name === 'loopComplete' && this.onLoopComplete) {\n this.onLoopComplete.call(this, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\n }\n\n if (name === 'complete' && this.onComplete) {\n this.onComplete.call(this, new BMCompleteEvent(name, this.frameMult));\n }\n\n if (name === 'segmentStart' && this.onSegmentStart) {\n this.onSegmentStart.call(this, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\n }\n\n if (name === 'destroy' && this.onDestroy) {\n this.onDestroy.call(this, new BMDestroyEvent(name, this));\n }\n };\n\n AnimationItem.prototype.triggerRenderFrameError = function (nativeError) {\n var error = new BMRenderFrameErrorEvent(nativeError, this.currentFrame);\n this.triggerEvent('error', error);\n\n if (this.onError) {\n this.onError.call(this, error);\n }\n };\n\n AnimationItem.prototype.triggerConfigError = function (nativeError) {\n var error = new BMConfigErrorEvent(nativeError, this.currentFrame);\n this.triggerEvent('error', error);\n\n if (this.onError) {\n this.onError.call(this, error);\n }\n };\n\n var animationManager = function () {\n var moduleOb = {};\n var registeredAnimations = [];\n var initTime = 0;\n var len = 0;\n var playingAnimationsNum = 0;\n var _stopped = true;\n var _isFrozen = false;\n\n function removeElement(ev) {\n var i = 0;\n var animItem = ev.target;\n\n while (i < len) {\n if (registeredAnimations[i].animation === animItem) {\n registeredAnimations.splice(i, 1);\n i -= 1;\n len -= 1;\n\n if (!animItem.isPaused) {\n subtractPlayingCount();\n }\n }\n\n i += 1;\n }\n }\n\n function registerAnimation(element, animationData) {\n if (!element) {\n return null;\n }\n\n var i = 0;\n\n while (i < len) {\n if (registeredAnimations[i].elem === element && registeredAnimations[i].elem !== null) {\n return registeredAnimations[i].animation;\n }\n\n i += 1;\n }\n\n var animItem = new AnimationItem();\n setupAnimation(animItem, element);\n animItem.setData(element, animationData);\n return animItem;\n }\n\n function getRegisteredAnimations() {\n var i;\n var lenAnims = registeredAnimations.length;\n var animations = [];\n\n for (i = 0; i < lenAnims; i += 1) {\n animations.push(registeredAnimations[i].animation);\n }\n\n return animations;\n }\n\n function addPlayingCount() {\n playingAnimationsNum += 1;\n activate();\n }\n\n function subtractPlayingCount() {\n playingAnimationsNum -= 1;\n }\n\n function setupAnimation(animItem, element) {\n animItem.addEventListener('destroy', removeElement);\n animItem.addEventListener('_active', addPlayingCount);\n animItem.addEventListener('_idle', subtractPlayingCount);\n registeredAnimations.push({\n elem: element,\n animation: animItem\n });\n len += 1;\n }\n\n function loadAnimation(params) {\n var animItem = new AnimationItem();\n setupAnimation(animItem, null);\n animItem.setParams(params);\n return animItem;\n }\n\n function setSpeed(val, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setSpeed(val, animation);\n }\n }\n\n function setDirection(val, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setDirection(val, animation);\n }\n }\n\n function play(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.play(animation);\n }\n }\n\n function resume(nowTime) {\n var elapsedTime = nowTime - initTime;\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.advanceTime(elapsedTime);\n }\n\n initTime = nowTime;\n\n if (playingAnimationsNum && !_isFrozen) {\n window.requestAnimationFrame(resume);\n } else {\n _stopped = true;\n }\n }\n\n function first(nowTime) {\n initTime = nowTime;\n window.requestAnimationFrame(resume);\n }\n\n function pause(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.pause(animation);\n }\n }\n\n function goToAndStop(value, isFrame, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.goToAndStop(value, isFrame, animation);\n }\n }\n\n function stop(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.stop(animation);\n }\n }\n\n function togglePause(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.togglePause(animation);\n }\n }\n\n function destroy(animation) {\n var i;\n\n for (i = len - 1; i >= 0; i -= 1) {\n registeredAnimations[i].animation.destroy(animation);\n }\n }\n\n function searchAnimations(animationData, standalone, renderer) {\n var animElements = [].concat([].slice.call(document.getElementsByClassName('lottie')), [].slice.call(document.getElementsByClassName('bodymovin')));\n var i;\n var lenAnims = animElements.length;\n\n for (i = 0; i < lenAnims; i += 1) {\n if (renderer) {\n animElements[i].setAttribute('data-bm-type', renderer);\n }\n\n registerAnimation(animElements[i], animationData);\n }\n\n if (standalone && lenAnims === 0) {\n if (!renderer) {\n renderer = 'svg';\n }\n\n var body = document.getElementsByTagName('body')[0];\n body.innerText = '';\n var div = createTag('div');\n div.style.width = '100%';\n div.style.height = '100%';\n div.setAttribute('data-bm-type', renderer);\n body.appendChild(div);\n registerAnimation(div, animationData);\n }\n }\n\n function resize() {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.resize();\n }\n }\n\n function activate() {\n if (!_isFrozen && playingAnimationsNum) {\n if (_stopped) {\n window.requestAnimationFrame(first);\n _stopped = false;\n }\n }\n }\n\n function freeze() {\n _isFrozen = true;\n }\n\n function unfreeze() {\n _isFrozen = false;\n activate();\n }\n\n function setVolume(val, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setVolume(val, animation);\n }\n }\n\n function mute(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.mute(animation);\n }\n }\n\n function unmute(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.unmute(animation);\n }\n }\n\n moduleOb.registerAnimation = registerAnimation;\n moduleOb.loadAnimation = loadAnimation;\n moduleOb.setSpeed = setSpeed;\n moduleOb.setDirection = setDirection;\n moduleOb.play = play;\n moduleOb.pause = pause;\n moduleOb.stop = stop;\n moduleOb.togglePause = togglePause;\n moduleOb.searchAnimations = searchAnimations;\n moduleOb.resize = resize; // moduleOb.start = start;\n\n moduleOb.goToAndStop = goToAndStop;\n moduleOb.destroy = destroy;\n moduleOb.freeze = freeze;\n moduleOb.unfreeze = unfreeze;\n moduleOb.setVolume = setVolume;\n moduleOb.mute = mute;\n moduleOb.unmute = unmute;\n moduleOb.getRegisteredAnimations = getRegisteredAnimations;\n return moduleOb;\n }();\n\n /* eslint-disable */\n var BezierFactory = function () {\n /**\r\n * BezierEasing - use bezier curve for transition easing function\r\n * by Gaëtan Renaudeau 2014 - 2015 – MIT License\r\n *\r\n * Credits: is based on Firefox's nsSMILKeySpline.cpp\r\n * Usage:\r\n * var spline = BezierEasing([ 0.25, 0.1, 0.25, 1.0 ])\r\n * spline.get(x) => returns the easing value | x must be in [0, 1] range\r\n *\r\n */\n var ob = {};\n ob.getBezierEasing = getBezierEasing;\n var beziers = {};\n\n function getBezierEasing(a, b, c, d, nm) {\n var str = nm || ('bez_' + a + '_' + b + '_' + c + '_' + d).replace(/\\./g, 'p');\n\n if (beziers[str]) {\n return beziers[str];\n }\n\n var bezEasing = new BezierEasing([a, b, c, d]);\n beziers[str] = bezEasing;\n return bezEasing;\n } // These values are established by empiricism with tests (tradeoff: performance VS precision)\n\n\n var NEWTON_ITERATIONS = 4;\n var NEWTON_MIN_SLOPE = 0.001;\n var SUBDIVISION_PRECISION = 0.0000001;\n var SUBDIVISION_MAX_ITERATIONS = 10;\n var kSplineTableSize = 11;\n var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n var float32ArraySupported = typeof Float32Array === 'function';\n\n function A(aA1, aA2) {\n return 1.0 - 3.0 * aA2 + 3.0 * aA1;\n }\n\n function B(aA1, aA2) {\n return 3.0 * aA2 - 6.0 * aA1;\n }\n\n function C(aA1) {\n return 3.0 * aA1;\n } // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\n\n\n function calcBezier(aT, aA1, aA2) {\n return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;\n } // Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\n\n\n function getSlope(aT, aA1, aA2) {\n return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1);\n }\n\n function binarySubdivide(aX, aA, aB, mX1, mX2) {\n var currentX,\n currentT,\n i = 0;\n\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n\n if (currentX > 0.0) {\n aB = currentT;\n } else {\n aA = currentT;\n }\n } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\n\n return currentT;\n }\n\n function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < NEWTON_ITERATIONS; ++i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0) return aGuessT;\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n\n return aGuessT;\n }\n /**\r\n * points is an array of [ mX1, mY1, mX2, mY2 ]\r\n */\n\n\n function BezierEasing(points) {\n this._p = points;\n this._mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\n this._precomputed = false;\n this.get = this.get.bind(this);\n }\n\n BezierEasing.prototype = {\n get: function get(x) {\n var mX1 = this._p[0],\n mY1 = this._p[1],\n mX2 = this._p[2],\n mY2 = this._p[3];\n if (!this._precomputed) this._precompute();\n if (mX1 === mY1 && mX2 === mY2) return x; // linear\n // Because JavaScript number are imprecise, we should guarantee the extremes are right.\n\n if (x === 0) return 0;\n if (x === 1) return 1;\n return calcBezier(this._getTForX(x), mY1, mY2);\n },\n // Private part\n _precompute: function _precompute() {\n var mX1 = this._p[0],\n mY1 = this._p[1],\n mX2 = this._p[2],\n mY2 = this._p[3];\n this._precomputed = true;\n\n if (mX1 !== mY1 || mX2 !== mY2) {\n this._calcSampleValues();\n }\n },\n _calcSampleValues: function _calcSampleValues() {\n var mX1 = this._p[0],\n mX2 = this._p[2];\n\n for (var i = 0; i < kSplineTableSize; ++i) {\n this._mSampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n },\n\n /**\r\n * getTForX chose the fastest heuristic to determine the percentage value precisely from a given X projection.\r\n */\n _getTForX: function _getTForX(aX) {\n var mX1 = this._p[0],\n mX2 = this._p[2],\n mSampleValues = this._mSampleValues;\n var intervalStart = 0.0;\n var currentSample = 1;\n var lastSample = kSplineTableSize - 1;\n\n for (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n\n --currentSample; // Interpolate to provide an initial guess for t\n\n var dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample]);\n var guessForT = intervalStart + dist * kSampleStepSize;\n var initialSlope = getSlope(guessForT, mX1, mX2);\n\n if (initialSlope >= NEWTON_MIN_SLOPE) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n }\n\n if (initialSlope === 0.0) {\n return guessForT;\n }\n\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n }\n };\n return ob;\n }();\n\n var pooling = function () {\n function _double(arr) {\n return arr.concat(createSizedArray(arr.length));\n }\n\n return {\n \"double\": _double\n };\n }();\n\n var poolFactory = function () {\n return function (initialLength, _create, _release) {\n var _length = 0;\n var _maxLength = initialLength;\n var pool = createSizedArray(_maxLength);\n var ob = {\n newElement: newElement,\n release: release\n };\n\n function newElement() {\n var element;\n\n if (_length) {\n _length -= 1;\n element = pool[_length];\n } else {\n element = _create();\n }\n\n return element;\n }\n\n function release(element) {\n if (_length === _maxLength) {\n pool = pooling[\"double\"](pool);\n _maxLength *= 2;\n }\n\n if (_release) {\n _release(element);\n }\n\n pool[_length] = element;\n _length += 1;\n }\n\n return ob;\n };\n }();\n\n var bezierLengthPool = function () {\n function create() {\n return {\n addedLength: 0,\n percents: createTypedArray('float32', getDefaultCurveSegments()),\n lengths: createTypedArray('float32', getDefaultCurveSegments())\n };\n }\n\n return poolFactory(8, create);\n }();\n\n var segmentsLengthPool = function () {\n function create() {\n return {\n lengths: [],\n totalLength: 0\n };\n }\n\n function release(element) {\n var i;\n var len = element.lengths.length;\n\n for (i = 0; i < len; i += 1) {\n bezierLengthPool.release(element.lengths[i]);\n }\n\n element.lengths.length = 0;\n }\n\n return poolFactory(8, create, release);\n }();\n\n function bezFunction() {\n var math = Math;\n\n function pointOnLine2D(x1, y1, x2, y2, x3, y3) {\n var det1 = x1 * y2 + y1 * x3 + x2 * y3 - x3 * y2 - y3 * x1 - x2 * y1;\n return det1 > -0.001 && det1 < 0.001;\n }\n\n function pointOnLine3D(x1, y1, z1, x2, y2, z2, x3, y3, z3) {\n if (z1 === 0 && z2 === 0 && z3 === 0) {\n return pointOnLine2D(x1, y1, x2, y2, x3, y3);\n }\n\n var dist1 = math.sqrt(math.pow(x2 - x1, 2) + math.pow(y2 - y1, 2) + math.pow(z2 - z1, 2));\n var dist2 = math.sqrt(math.pow(x3 - x1, 2) + math.pow(y3 - y1, 2) + math.pow(z3 - z1, 2));\n var dist3 = math.sqrt(math.pow(x3 - x2, 2) + math.pow(y3 - y2, 2) + math.pow(z3 - z2, 2));\n var diffDist;\n\n if (dist1 > dist2) {\n if (dist1 > dist3) {\n diffDist = dist1 - dist2 - dist3;\n } else {\n diffDist = dist3 - dist2 - dist1;\n }\n } else if (dist3 > dist2) {\n diffDist = dist3 - dist2 - dist1;\n } else {\n diffDist = dist2 - dist1 - dist3;\n }\n\n return diffDist > -0.0001 && diffDist < 0.0001;\n }\n\n var getBezierLength = function () {\n return function (pt1, pt2, pt3, pt4) {\n var curveSegments = getDefaultCurveSegments();\n var k;\n var i;\n var len;\n var ptCoord;\n var perc;\n var addedLength = 0;\n var ptDistance;\n var point = [];\n var lastPoint = [];\n var lengthData = bezierLengthPool.newElement();\n len = pt3.length;\n\n for (k = 0; k < curveSegments; k += 1) {\n perc = k / (curveSegments - 1);\n ptDistance = 0;\n\n for (i = 0; i < len; i += 1) {\n ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * pt3[i] + 3 * (1 - perc) * bmPow(perc, 2) * pt4[i] + bmPow(perc, 3) * pt2[i];\n point[i] = ptCoord;\n\n if (lastPoint[i] !== null) {\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\n }\n\n lastPoint[i] = point[i];\n }\n\n if (ptDistance) {\n ptDistance = bmSqrt(ptDistance);\n addedLength += ptDistance;\n }\n\n lengthData.percents[k] = perc;\n lengthData.lengths[k] = addedLength;\n }\n\n lengthData.addedLength = addedLength;\n return lengthData;\n };\n }();\n\n function getSegmentsLength(shapeData) {\n var segmentsLength = segmentsLengthPool.newElement();\n var closed = shapeData.c;\n var pathV = shapeData.v;\n var pathO = shapeData.o;\n var pathI = shapeData.i;\n var i;\n var len = shapeData._length;\n var lengths = segmentsLength.lengths;\n var totalLength = 0;\n\n for (i = 0; i < len - 1; i += 1) {\n lengths[i] = getBezierLength(pathV[i], pathV[i + 1], pathO[i], pathI[i + 1]);\n totalLength += lengths[i].addedLength;\n }\n\n if (closed && len) {\n lengths[i] = getBezierLength(pathV[i], pathV[0], pathO[i], pathI[0]);\n totalLength += lengths[i].addedLength;\n }\n\n segmentsLength.totalLength = totalLength;\n return segmentsLength;\n }\n\n function BezierData(length) {\n this.segmentLength = 0;\n this.points = new Array(length);\n }\n\n function PointData(partial, point) {\n this.partialLength = partial;\n this.point = point;\n }\n\n var buildBezierData = function () {\n var storedData = {};\n return function (pt1, pt2, pt3, pt4) {\n var bezierName = (pt1[0] + '_' + pt1[1] + '_' + pt2[0] + '_' + pt2[1] + '_' + pt3[0] + '_' + pt3[1] + '_' + pt4[0] + '_' + pt4[1]).replace(/\\./g, 'p');\n\n if (!storedData[bezierName]) {\n var curveSegments = getDefaultCurveSegments();\n var k;\n var i;\n var len;\n var ptCoord;\n var perc;\n var addedLength = 0;\n var ptDistance;\n var point;\n var lastPoint = null;\n\n if (pt1.length === 2 && (pt1[0] !== pt2[0] || pt1[1] !== pt2[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt1[0] + pt3[0], pt1[1] + pt3[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt2[0] + pt4[0], pt2[1] + pt4[1])) {\n curveSegments = 2;\n }\n\n var bezierData = new BezierData(curveSegments);\n len = pt3.length;\n\n for (k = 0; k < curveSegments; k += 1) {\n point = createSizedArray(len);\n perc = k / (curveSegments - 1);\n ptDistance = 0;\n\n for (i = 0; i < len; i += 1) {\n ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * (pt1[i] + pt3[i]) + 3 * (1 - perc) * bmPow(perc, 2) * (pt2[i] + pt4[i]) + bmPow(perc, 3) * pt2[i];\n point[i] = ptCoord;\n\n if (lastPoint !== null) {\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\n }\n }\n\n ptDistance = bmSqrt(ptDistance);\n addedLength += ptDistance;\n bezierData.points[k] = new PointData(ptDistance, point);\n lastPoint = point;\n }\n\n bezierData.segmentLength = addedLength;\n storedData[bezierName] = bezierData;\n }\n\n return storedData[bezierName];\n };\n }();\n\n function getDistancePerc(perc, bezierData) {\n var percents = bezierData.percents;\n var lengths = bezierData.lengths;\n var len = percents.length;\n var initPos = bmFloor((len - 1) * perc);\n var lengthPos = perc * bezierData.addedLength;\n var lPerc = 0;\n\n if (initPos === len - 1 || initPos === 0 || lengthPos === lengths[initPos]) {\n return percents[initPos];\n }\n\n var dir = lengths[initPos] > lengthPos ? -1 : 1;\n var flag = true;\n\n while (flag) {\n if (lengths[initPos] <= lengthPos && lengths[initPos + 1] > lengthPos) {\n lPerc = (lengthPos - lengths[initPos]) / (lengths[initPos + 1] - lengths[initPos]);\n flag = false;\n } else {\n initPos += dir;\n }\n\n if (initPos < 0 || initPos >= len - 1) {\n // FIX for TypedArrays that don't store floating point values with enough accuracy\n if (initPos === len - 1) {\n return percents[initPos];\n }\n\n flag = false;\n }\n }\n\n return percents[initPos] + (percents[initPos + 1] - percents[initPos]) * lPerc;\n }\n\n function getPointInSegment(pt1, pt2, pt3, pt4, percent, bezierData) {\n var t1 = getDistancePerc(percent, bezierData);\n var u1 = 1 - t1;\n var ptX = math.round((u1 * u1 * u1 * pt1[0] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[0] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[0] + t1 * t1 * t1 * pt2[0]) * 1000) / 1000;\n var ptY = math.round((u1 * u1 * u1 * pt1[1] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[1] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[1] + t1 * t1 * t1 * pt2[1]) * 1000) / 1000;\n return [ptX, ptY];\n }\n\n var bezierSegmentPoints = createTypedArray('float32', 8);\n\n function getNewSegment(pt1, pt2, pt3, pt4, startPerc, endPerc, bezierData) {\n if (startPerc < 0) {\n startPerc = 0;\n } else if (startPerc > 1) {\n startPerc = 1;\n }\n\n var t0 = getDistancePerc(startPerc, bezierData);\n endPerc = endPerc > 1 ? 1 : endPerc;\n var t1 = getDistancePerc(endPerc, bezierData);\n var i;\n var len = pt1.length;\n var u0 = 1 - t0;\n var u1 = 1 - t1;\n var u0u0u0 = u0 * u0 * u0;\n var t0u0u0_3 = t0 * u0 * u0 * 3; // eslint-disable-line camelcase\n\n var t0t0u0_3 = t0 * t0 * u0 * 3; // eslint-disable-line camelcase\n\n var t0t0t0 = t0 * t0 * t0; //\n\n var u0u0u1 = u0 * u0 * u1;\n var t0u0u1_3 = t0 * u0 * u1 + u0 * t0 * u1 + u0 * u0 * t1; // eslint-disable-line camelcase\n\n var t0t0u1_3 = t0 * t0 * u1 + u0 * t0 * t1 + t0 * u0 * t1; // eslint-disable-line camelcase\n\n var t0t0t1 = t0 * t0 * t1; //\n\n var u0u1u1 = u0 * u1 * u1;\n var t0u1u1_3 = t0 * u1 * u1 + u0 * t1 * u1 + u0 * u1 * t1; // eslint-disable-line camelcase\n\n var t0t1u1_3 = t0 * t1 * u1 + u0 * t1 * t1 + t0 * u1 * t1; // eslint-disable-line camelcase\n\n var t0t1t1 = t0 * t1 * t1; //\n\n var u1u1u1 = u1 * u1 * u1;\n var t1u1u1_3 = t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1; // eslint-disable-line camelcase\n\n var t1t1u1_3 = t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1; // eslint-disable-line camelcase\n\n var t1t1t1 = t1 * t1 * t1;\n\n for (i = 0; i < len; i += 1) {\n bezierSegmentPoints[i * 4] = math.round((u0u0u0 * pt1[i] + t0u0u0_3 * pt3[i] + t0t0u0_3 * pt4[i] + t0t0t0 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n\n bezierSegmentPoints[i * 4 + 1] = math.round((u0u0u1 * pt1[i] + t0u0u1_3 * pt3[i] + t0t0u1_3 * pt4[i] + t0t0t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n\n bezierSegmentPoints[i * 4 + 2] = math.round((u0u1u1 * pt1[i] + t0u1u1_3 * pt3[i] + t0t1u1_3 * pt4[i] + t0t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n\n bezierSegmentPoints[i * 4 + 3] = math.round((u1u1u1 * pt1[i] + t1u1u1_3 * pt3[i] + t1t1u1_3 * pt4[i] + t1t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n }\n\n return bezierSegmentPoints;\n }\n\n return {\n getSegmentsLength: getSegmentsLength,\n getNewSegment: getNewSegment,\n getPointInSegment: getPointInSegment,\n buildBezierData: buildBezierData,\n pointOnLine2D: pointOnLine2D,\n pointOnLine3D: pointOnLine3D\n };\n }\n\n var bez = bezFunction();\n\n var PropertyFactory = function () {\n var initFrame = initialDefaultFrame;\n var mathAbs = Math.abs;\n\n function interpolateValue(frameNum, caching) {\n var offsetTime = this.offsetTime;\n var newValue;\n\n if (this.propType === 'multidimensional') {\n newValue = createTypedArray('float32', this.pv.length);\n }\n\n var iterationIndex = caching.lastIndex;\n var i = iterationIndex;\n var len = this.keyframes.length - 1;\n var flag = true;\n var keyData;\n var nextKeyData;\n var keyframeMetadata;\n\n while (flag) {\n keyData = this.keyframes[i];\n nextKeyData = this.keyframes[i + 1];\n\n if (i === len - 1 && frameNum >= nextKeyData.t - offsetTime) {\n if (keyData.h) {\n keyData = nextKeyData;\n }\n\n iterationIndex = 0;\n break;\n }\n\n if (nextKeyData.t - offsetTime > frameNum) {\n iterationIndex = i;\n break;\n }\n\n if (i < len - 1) {\n i += 1;\n } else {\n iterationIndex = 0;\n flag = false;\n }\n }\n\n keyframeMetadata = this.keyframesMetadata[i] || {};\n var k;\n var kLen;\n var perc;\n var jLen;\n var j;\n var fnc;\n var nextKeyTime = nextKeyData.t - offsetTime;\n var keyTime = keyData.t - offsetTime;\n var endValue;\n\n if (keyData.to) {\n if (!keyframeMetadata.bezierData) {\n keyframeMetadata.bezierData = bez.buildBezierData(keyData.s, nextKeyData.s || keyData.e, keyData.to, keyData.ti);\n }\n\n var bezierData = keyframeMetadata.bezierData;\n\n if (frameNum >= nextKeyTime || frameNum < keyTime) {\n var ind = frameNum >= nextKeyTime ? bezierData.points.length - 1 : 0;\n kLen = bezierData.points[ind].point.length;\n\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[ind].point[k];\n } // caching._lastKeyframeIndex = -1;\n\n } else {\n if (keyframeMetadata.__fnct) {\n fnc = keyframeMetadata.__fnct;\n } else {\n fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y, keyData.n).get;\n keyframeMetadata.__fnct = fnc;\n }\n\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\n var distanceInLine = bezierData.segmentLength * perc;\n var segmentPerc;\n var addedLength = caching.lastFrame < frameNum && caching._lastKeyframeIndex === i ? caching._lastAddedLength : 0;\n j = caching.lastFrame < frameNum && caching._lastKeyframeIndex === i ? caching._lastPoint : 0;\n flag = true;\n jLen = bezierData.points.length;\n\n while (flag) {\n addedLength += bezierData.points[j].partialLength;\n\n if (distanceInLine === 0 || perc === 0 || j === bezierData.points.length - 1) {\n kLen = bezierData.points[j].point.length;\n\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[j].point[k];\n }\n\n break;\n } else if (distanceInLine >= addedLength && distanceInLine < addedLength + bezierData.points[j + 1].partialLength) {\n segmentPerc = (distanceInLine - addedLength) / bezierData.points[j + 1].partialLength;\n kLen = bezierData.points[j].point.length;\n\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[j].point[k] + (bezierData.points[j + 1].point[k] - bezierData.points[j].point[k]) * segmentPerc;\n }\n\n break;\n }\n\n if (j < jLen - 1) {\n j += 1;\n } else {\n flag = false;\n }\n }\n\n caching._lastPoint = j;\n caching._lastAddedLength = addedLength - bezierData.points[j].partialLength;\n caching._lastKeyframeIndex = i;\n }\n } else {\n var outX;\n var outY;\n var inX;\n var inY;\n var keyValue;\n len = keyData.s.length;\n endValue = nextKeyData.s || keyData.e;\n\n if (this.sh && keyData.h !== 1) {\n if (frameNum >= nextKeyTime) {\n newValue[0] = endValue[0];\n newValue[1] = endValue[1];\n newValue[2] = endValue[2];\n } else if (frameNum <= keyTime) {\n newValue[0] = keyData.s[0];\n newValue[1] = keyData.s[1];\n newValue[2] = keyData.s[2];\n } else {\n var quatStart = createQuaternion(keyData.s);\n var quatEnd = createQuaternion(endValue);\n var time = (frameNum - keyTime) / (nextKeyTime - keyTime);\n quaternionToEuler(newValue, slerp(quatStart, quatEnd, time));\n }\n } else {\n for (i = 0; i < len; i += 1) {\n if (keyData.h !== 1) {\n if (frameNum >= nextKeyTime) {\n perc = 1;\n } else if (frameNum < keyTime) {\n perc = 0;\n } else {\n if (keyData.o.x.constructor === Array) {\n if (!keyframeMetadata.__fnct) {\n keyframeMetadata.__fnct = [];\n }\n\n if (!keyframeMetadata.__fnct[i]) {\n outX = keyData.o.x[i] === undefined ? keyData.o.x[0] : keyData.o.x[i];\n outY = keyData.o.y[i] === undefined ? keyData.o.y[0] : keyData.o.y[i];\n inX = keyData.i.x[i] === undefined ? keyData.i.x[0] : keyData.i.x[i];\n inY = keyData.i.y[i] === undefined ? keyData.i.y[0] : keyData.i.y[i];\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\n keyframeMetadata.__fnct[i] = fnc;\n } else {\n fnc = keyframeMetadata.__fnct[i];\n }\n } else if (!keyframeMetadata.__fnct) {\n outX = keyData.o.x;\n outY = keyData.o.y;\n inX = keyData.i.x;\n inY = keyData.i.y;\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\n keyData.keyframeMetadata = fnc;\n } else {\n fnc = keyframeMetadata.__fnct;\n }\n\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\n }\n }\n\n endValue = nextKeyData.s || keyData.e;\n keyValue = keyData.h === 1 ? keyData.s[i] : keyData.s[i] + (endValue[i] - keyData.s[i]) * perc;\n\n if (this.propType === 'multidimensional') {\n newValue[i] = keyValue;\n } else {\n newValue = keyValue;\n }\n }\n }\n }\n\n caching.lastIndex = iterationIndex;\n return newValue;\n } // based on @Toji's https://github.com/toji/gl-matrix/\n\n\n function slerp(a, b, t) {\n var out = [];\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n var aw = a[3];\n var bx = b[0];\n var by = b[1];\n var bz = b[2];\n var bw = b[3];\n var omega;\n var cosom;\n var sinom;\n var scale0;\n var scale1;\n cosom = ax * bx + ay * by + az * bz + aw * bw;\n\n if (cosom < 0.0) {\n cosom = -cosom;\n bx = -bx;\n by = -by;\n bz = -bz;\n bw = -bw;\n }\n\n if (1.0 - cosom > 0.000001) {\n omega = Math.acos(cosom);\n sinom = Math.sin(omega);\n scale0 = Math.sin((1.0 - t) * omega) / sinom;\n scale1 = Math.sin(t * omega) / sinom;\n } else {\n scale0 = 1.0 - t;\n scale1 = t;\n }\n\n out[0] = scale0 * ax + scale1 * bx;\n out[1] = scale0 * ay + scale1 * by;\n out[2] = scale0 * az + scale1 * bz;\n out[3] = scale0 * aw + scale1 * bw;\n return out;\n }\n\n function quaternionToEuler(out, quat) {\n var qx = quat[0];\n var qy = quat[1];\n var qz = quat[2];\n var qw = quat[3];\n var heading = Math.atan2(2 * qy * qw - 2 * qx * qz, 1 - 2 * qy * qy - 2 * qz * qz);\n var attitude = Math.asin(2 * qx * qy + 2 * qz * qw);\n var bank = Math.atan2(2 * qx * qw - 2 * qy * qz, 1 - 2 * qx * qx - 2 * qz * qz);\n out[0] = heading / degToRads;\n out[1] = attitude / degToRads;\n out[2] = bank / degToRads;\n }\n\n function createQuaternion(values) {\n var heading = values[0] * degToRads;\n var attitude = values[1] * degToRads;\n var bank = values[2] * degToRads;\n var c1 = Math.cos(heading / 2);\n var c2 = Math.cos(attitude / 2);\n var c3 = Math.cos(bank / 2);\n var s1 = Math.sin(heading / 2);\n var s2 = Math.sin(attitude / 2);\n var s3 = Math.sin(bank / 2);\n var w = c1 * c2 * c3 - s1 * s2 * s3;\n var x = s1 * s2 * c3 + c1 * c2 * s3;\n var y = s1 * c2 * c3 + c1 * s2 * s3;\n var z = c1 * s2 * c3 - s1 * c2 * s3;\n return [x, y, z, w];\n }\n\n function getValueAtCurrentTime() {\n var frameNum = this.comp.renderedFrame - this.offsetTime;\n var initTime = this.keyframes[0].t - this.offsetTime;\n var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\n\n if (!(frameNum === this._caching.lastFrame || this._caching.lastFrame !== initFrame && (this._caching.lastFrame >= endTime && frameNum >= endTime || this._caching.lastFrame < initTime && frameNum < initTime))) {\n if (this._caching.lastFrame >= frameNum) {\n this._caching._lastKeyframeIndex = -1;\n this._caching.lastIndex = 0;\n }\n\n var renderResult = this.interpolateValue(frameNum, this._caching);\n this.pv = renderResult;\n }\n\n this._caching.lastFrame = frameNum;\n return this.pv;\n }\n\n function setVValue(val) {\n var multipliedValue;\n\n if (this.propType === 'unidimensional') {\n multipliedValue = val * this.mult;\n\n if (mathAbs(this.v - multipliedValue) > 0.00001) {\n this.v = multipliedValue;\n this._mdf = true;\n }\n } else {\n var i = 0;\n var len = this.v.length;\n\n while (i < len) {\n multipliedValue = val[i] * this.mult;\n\n if (mathAbs(this.v[i] - multipliedValue) > 0.00001) {\n this.v[i] = multipliedValue;\n this._mdf = true;\n }\n\n i += 1;\n }\n }\n }\n\n function processEffectsSequence() {\n if (this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) {\n return;\n }\n\n if (this.lock) {\n this.setVValue(this.pv);\n return;\n }\n\n this.lock = true;\n this._mdf = this._isFirstFrame;\n var i;\n var len = this.effectsSequence.length;\n var finalValue = this.kf ? this.pv : this.data.k;\n\n for (i = 0; i < len; i += 1) {\n finalValue = this.effectsSequence[i](finalValue);\n }\n\n this.setVValue(finalValue);\n this._isFirstFrame = false;\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n }\n\n function addEffect(effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.container.addDynamicProperty(this);\n }\n\n function ValueProperty(elem, data, mult, container) {\n this.propType = 'unidimensional';\n this.mult = mult || 1;\n this.data = data;\n this.v = mult ? data.k * mult : data.k;\n this.pv = data.k;\n this._mdf = false;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.k = false;\n this.kf = false;\n this.vel = 0;\n this.effectsSequence = [];\n this._isFirstFrame = true;\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.addEffect = addEffect;\n }\n\n function MultiDimensionalProperty(elem, data, mult, container) {\n this.propType = 'multidimensional';\n this.mult = mult || 1;\n this.data = data;\n this._mdf = false;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.k = false;\n this.kf = false;\n this.frameId = -1;\n var i;\n var len = data.k.length;\n this.v = createTypedArray('float32', len);\n this.pv = createTypedArray('float32', len);\n this.vel = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n this.v[i] = data.k[i] * this.mult;\n this.pv[i] = data.k[i];\n }\n\n this._isFirstFrame = true;\n this.effectsSequence = [];\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.addEffect = addEffect;\n }\n\n function KeyframedValueProperty(elem, data, mult, container) {\n this.propType = 'unidimensional';\n this.keyframes = data.k;\n this.keyframesMetadata = [];\n this.offsetTime = elem.data.st;\n this.frameId = -1;\n this._caching = {\n lastFrame: initFrame,\n lastIndex: 0,\n value: 0,\n _lastKeyframeIndex: -1\n };\n this.k = true;\n this.kf = true;\n this.data = data;\n this.mult = mult || 1;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.v = initFrame;\n this.pv = initFrame;\n this._isFirstFrame = true;\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.interpolateValue = interpolateValue;\n this.effectsSequence = [getValueAtCurrentTime.bind(this)];\n this.addEffect = addEffect;\n }\n\n function KeyframedMultidimensionalProperty(elem, data, mult, container) {\n this.propType = 'multidimensional';\n var i;\n var len = data.k.length;\n var s;\n var e;\n var to;\n var ti;\n\n for (i = 0; i < len - 1; i += 1) {\n if (data.k[i].to && data.k[i].s && data.k[i + 1] && data.k[i + 1].s) {\n s = data.k[i].s;\n e = data.k[i + 1].s;\n to = data.k[i].to;\n ti = data.k[i].ti;\n\n if (s.length === 2 && !(s[0] === e[0] && s[1] === e[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], s[0] + to[0], s[1] + to[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], e[0] + ti[0], e[1] + ti[1]) || s.length === 3 && !(s[0] === e[0] && s[1] === e[1] && s[2] === e[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], s[0] + to[0], s[1] + to[1], s[2] + to[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], e[0] + ti[0], e[1] + ti[1], e[2] + ti[2])) {\n data.k[i].to = null;\n data.k[i].ti = null;\n }\n\n if (s[0] === e[0] && s[1] === e[1] && to[0] === 0 && to[1] === 0 && ti[0] === 0 && ti[1] === 0) {\n if (s.length === 2 || s[2] === e[2] && to[2] === 0 && ti[2] === 0) {\n data.k[i].to = null;\n data.k[i].ti = null;\n }\n }\n }\n }\n\n this.effectsSequence = [getValueAtCurrentTime.bind(this)];\n this.data = data;\n this.keyframes = data.k;\n this.keyframesMetadata = [];\n this.offsetTime = elem.data.st;\n this.k = true;\n this.kf = true;\n this._isFirstFrame = true;\n this.mult = mult || 1;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.interpolateValue = interpolateValue;\n this.frameId = -1;\n var arrLen = data.k[0].s.length;\n this.v = createTypedArray('float32', arrLen);\n this.pv = createTypedArray('float32', arrLen);\n\n for (i = 0; i < arrLen; i += 1) {\n this.v[i] = initFrame;\n this.pv[i] = initFrame;\n }\n\n this._caching = {\n lastFrame: initFrame,\n lastIndex: 0,\n value: createTypedArray('float32', arrLen)\n };\n this.addEffect = addEffect;\n }\n\n function getProp(elem, data, type, mult, container) {\n var p;\n\n if (!data.k.length) {\n p = new ValueProperty(elem, data, mult, container);\n } else if (typeof data.k[0] === 'number') {\n p = new MultiDimensionalProperty(elem, data, mult, container);\n } else {\n switch (type) {\n case 0:\n p = new KeyframedValueProperty(elem, data, mult, container);\n break;\n\n case 1:\n p = new KeyframedMultidimensionalProperty(elem, data, mult, container);\n break;\n\n default:\n break;\n }\n }\n\n if (p.effectsSequence.length) {\n container.addDynamicProperty(p);\n }\n\n return p;\n }\n\n var ob = {\n getProp: getProp\n };\n return ob;\n }();\n\n function DynamicPropertyContainer() {}\n\n DynamicPropertyContainer.prototype = {\n addDynamicProperty: function addDynamicProperty(prop) {\n if (this.dynamicProperties.indexOf(prop) === -1) {\n this.dynamicProperties.push(prop);\n this.container.addDynamicProperty(this);\n this._isAnimated = true;\n }\n },\n iterateDynamicProperties: function iterateDynamicProperties() {\n this._mdf = false;\n var i;\n var len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n\n if (this.dynamicProperties[i]._mdf) {\n this._mdf = true;\n }\n }\n },\n initDynamicPropertyContainer: function initDynamicPropertyContainer(container) {\n this.container = container;\n this.dynamicProperties = [];\n this._mdf = false;\n this._isAnimated = false;\n }\n };\n\n var pointPool = function () {\n function create() {\n return createTypedArray('float32', 2);\n }\n\n return poolFactory(8, create);\n }();\n\n function ShapePath() {\n this.c = false;\n this._length = 0;\n this._maxLength = 8;\n this.v = createSizedArray(this._maxLength);\n this.o = createSizedArray(this._maxLength);\n this.i = createSizedArray(this._maxLength);\n }\n\n ShapePath.prototype.setPathData = function (closed, len) {\n this.c = closed;\n this.setLength(len);\n var i = 0;\n\n while (i < len) {\n this.v[i] = pointPool.newElement();\n this.o[i] = pointPool.newElement();\n this.i[i] = pointPool.newElement();\n i += 1;\n }\n };\n\n ShapePath.prototype.setLength = function (len) {\n while (this._maxLength < len) {\n this.doubleArrayLength();\n }\n\n this._length = len;\n };\n\n ShapePath.prototype.doubleArrayLength = function () {\n this.v = this.v.concat(createSizedArray(this._maxLength));\n this.i = this.i.concat(createSizedArray(this._maxLength));\n this.o = this.o.concat(createSizedArray(this._maxLength));\n this._maxLength *= 2;\n };\n\n ShapePath.prototype.setXYAt = function (x, y, type, pos, replace) {\n var arr;\n this._length = Math.max(this._length, pos + 1);\n\n if (this._length >= this._maxLength) {\n this.doubleArrayLength();\n }\n\n switch (type) {\n case 'v':\n arr = this.v;\n break;\n\n case 'i':\n arr = this.i;\n break;\n\n case 'o':\n arr = this.o;\n break;\n\n default:\n arr = [];\n break;\n }\n\n if (!arr[pos] || arr[pos] && !replace) {\n arr[pos] = pointPool.newElement();\n }\n\n arr[pos][0] = x;\n arr[pos][1] = y;\n };\n\n ShapePath.prototype.setTripleAt = function (vX, vY, oX, oY, iX, iY, pos, replace) {\n this.setXYAt(vX, vY, 'v', pos, replace);\n this.setXYAt(oX, oY, 'o', pos, replace);\n this.setXYAt(iX, iY, 'i', pos, replace);\n };\n\n ShapePath.prototype.reverse = function () {\n var newPath = new ShapePath();\n newPath.setPathData(this.c, this._length);\n var vertices = this.v;\n var outPoints = this.o;\n var inPoints = this.i;\n var init = 0;\n\n if (this.c) {\n newPath.setTripleAt(vertices[0][0], vertices[0][1], inPoints[0][0], inPoints[0][1], outPoints[0][0], outPoints[0][1], 0, false);\n init = 1;\n }\n\n var cnt = this._length - 1;\n var len = this._length;\n var i;\n\n for (i = init; i < len; i += 1) {\n newPath.setTripleAt(vertices[cnt][0], vertices[cnt][1], inPoints[cnt][0], inPoints[cnt][1], outPoints[cnt][0], outPoints[cnt][1], i, false);\n cnt -= 1;\n }\n\n return newPath;\n };\n\n var shapePool = function () {\n function create() {\n return new ShapePath();\n }\n\n function release(shapePath) {\n var len = shapePath._length;\n var i;\n\n for (i = 0; i < len; i += 1) {\n pointPool.release(shapePath.v[i]);\n pointPool.release(shapePath.i[i]);\n pointPool.release(shapePath.o[i]);\n shapePath.v[i] = null;\n shapePath.i[i] = null;\n shapePath.o[i] = null;\n }\n\n shapePath._length = 0;\n shapePath.c = false;\n }\n\n function clone(shape) {\n var cloned = factory.newElement();\n var i;\n var len = shape._length === undefined ? shape.v.length : shape._length;\n cloned.setLength(len);\n cloned.c = shape.c;\n\n for (i = 0; i < len; i += 1) {\n cloned.setTripleAt(shape.v[i][0], shape.v[i][1], shape.o[i][0], shape.o[i][1], shape.i[i][0], shape.i[i][1], i);\n }\n\n return cloned;\n }\n\n var factory = poolFactory(4, create, release);\n factory.clone = clone;\n return factory;\n }();\n\n function ShapeCollection() {\n this._length = 0;\n this._maxLength = 4;\n this.shapes = createSizedArray(this._maxLength);\n }\n\n ShapeCollection.prototype.addShape = function (shapeData) {\n if (this._length === this._maxLength) {\n this.shapes = this.shapes.concat(createSizedArray(this._maxLength));\n this._maxLength *= 2;\n }\n\n this.shapes[this._length] = shapeData;\n this._length += 1;\n };\n\n ShapeCollection.prototype.releaseShapes = function () {\n var i;\n\n for (i = 0; i < this._length; i += 1) {\n shapePool.release(this.shapes[i]);\n }\n\n this._length = 0;\n };\n\n var shapeCollectionPool = function () {\n var ob = {\n newShapeCollection: newShapeCollection,\n release: release\n };\n var _length = 0;\n var _maxLength = 4;\n var pool = createSizedArray(_maxLength);\n\n function newShapeCollection() {\n var shapeCollection;\n\n if (_length) {\n _length -= 1;\n shapeCollection = pool[_length];\n } else {\n shapeCollection = new ShapeCollection();\n }\n\n return shapeCollection;\n }\n\n function release(shapeCollection) {\n var i;\n var len = shapeCollection._length;\n\n for (i = 0; i < len; i += 1) {\n shapePool.release(shapeCollection.shapes[i]);\n }\n\n shapeCollection._length = 0;\n\n if (_length === _maxLength) {\n pool = pooling[\"double\"](pool);\n _maxLength *= 2;\n }\n\n pool[_length] = shapeCollection;\n _length += 1;\n }\n\n return ob;\n }();\n\n var ShapePropertyFactory = function () {\n var initFrame = -999999;\n\n function interpolateShape(frameNum, previousValue, caching) {\n var iterationIndex = caching.lastIndex;\n var keyPropS;\n var keyPropE;\n var isHold;\n var j;\n var k;\n var jLen;\n var kLen;\n var perc;\n var vertexValue;\n var kf = this.keyframes;\n\n if (frameNum < kf[0].t - this.offsetTime) {\n keyPropS = kf[0].s[0];\n isHold = true;\n iterationIndex = 0;\n } else if (frameNum >= kf[kf.length - 1].t - this.offsetTime) {\n keyPropS = kf[kf.length - 1].s ? kf[kf.length - 1].s[0] : kf[kf.length - 2].e[0];\n /* if(kf[kf.length - 1].s){\r\n keyPropS = kf[kf.length - 1].s[0];\r\n }else{\r\n keyPropS = kf[kf.length - 2].e[0];\r\n } */\n\n isHold = true;\n } else {\n var i = iterationIndex;\n var len = kf.length - 1;\n var flag = true;\n var keyData;\n var nextKeyData;\n var keyframeMetadata;\n\n while (flag) {\n keyData = kf[i];\n nextKeyData = kf[i + 1];\n\n if (nextKeyData.t - this.offsetTime > frameNum) {\n break;\n }\n\n if (i < len - 1) {\n i += 1;\n } else {\n flag = false;\n }\n }\n\n keyframeMetadata = this.keyframesMetadata[i] || {};\n isHold = keyData.h === 1;\n iterationIndex = i;\n\n if (!isHold) {\n if (frameNum >= nextKeyData.t - this.offsetTime) {\n perc = 1;\n } else if (frameNum < keyData.t - this.offsetTime) {\n perc = 0;\n } else {\n var fnc;\n\n if (keyframeMetadata.__fnct) {\n fnc = keyframeMetadata.__fnct;\n } else {\n fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y).get;\n keyframeMetadata.__fnct = fnc;\n }\n\n perc = fnc((frameNum - (keyData.t - this.offsetTime)) / (nextKeyData.t - this.offsetTime - (keyData.t - this.offsetTime)));\n }\n\n keyPropE = nextKeyData.s ? nextKeyData.s[0] : keyData.e[0];\n }\n\n keyPropS = keyData.s[0];\n }\n\n jLen = previousValue._length;\n kLen = keyPropS.i[0].length;\n caching.lastIndex = iterationIndex;\n\n for (j = 0; j < jLen; j += 1) {\n for (k = 0; k < kLen; k += 1) {\n vertexValue = isHold ? keyPropS.i[j][k] : keyPropS.i[j][k] + (keyPropE.i[j][k] - keyPropS.i[j][k]) * perc;\n previousValue.i[j][k] = vertexValue;\n vertexValue = isHold ? keyPropS.o[j][k] : keyPropS.o[j][k] + (keyPropE.o[j][k] - keyPropS.o[j][k]) * perc;\n previousValue.o[j][k] = vertexValue;\n vertexValue = isHold ? keyPropS.v[j][k] : keyPropS.v[j][k] + (keyPropE.v[j][k] - keyPropS.v[j][k]) * perc;\n previousValue.v[j][k] = vertexValue;\n }\n }\n }\n\n function interpolateShapeCurrentTime() {\n var frameNum = this.comp.renderedFrame - this.offsetTime;\n var initTime = this.keyframes[0].t - this.offsetTime;\n var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\n var lastFrame = this._caching.lastFrame;\n\n if (!(lastFrame !== initFrame && (lastFrame < initTime && frameNum < initTime || lastFrame > endTime && frameNum > endTime))) {\n /// /\n this._caching.lastIndex = lastFrame < frameNum ? this._caching.lastIndex : 0;\n this.interpolateShape(frameNum, this.pv, this._caching); /// /\n }\n\n this._caching.lastFrame = frameNum;\n return this.pv;\n }\n\n function resetShape() {\n this.paths = this.localShapeCollection;\n }\n\n function shapesEqual(shape1, shape2) {\n if (shape1._length !== shape2._length || shape1.c !== shape2.c) {\n return false;\n }\n\n var i;\n var len = shape1._length;\n\n for (i = 0; i < len; i += 1) {\n if (shape1.v[i][0] !== shape2.v[i][0] || shape1.v[i][1] !== shape2.v[i][1] || shape1.o[i][0] !== shape2.o[i][0] || shape1.o[i][1] !== shape2.o[i][1] || shape1.i[i][0] !== shape2.i[i][0] || shape1.i[i][1] !== shape2.i[i][1]) {\n return false;\n }\n }\n\n return true;\n }\n\n function setVValue(newPath) {\n if (!shapesEqual(this.v, newPath)) {\n this.v = shapePool.clone(newPath);\n this.localShapeCollection.releaseShapes();\n this.localShapeCollection.addShape(this.v);\n this._mdf = true;\n this.paths = this.localShapeCollection;\n }\n }\n\n function processEffectsSequence() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n if (!this.effectsSequence.length) {\n this._mdf = false;\n return;\n }\n\n if (this.lock) {\n this.setVValue(this.pv);\n return;\n }\n\n this.lock = true;\n this._mdf = false;\n var finalValue;\n\n if (this.kf) {\n finalValue = this.pv;\n } else if (this.data.ks) {\n finalValue = this.data.ks.k;\n } else {\n finalValue = this.data.pt.k;\n }\n\n var i;\n var len = this.effectsSequence.length;\n\n for (i = 0; i < len; i += 1) {\n finalValue = this.effectsSequence[i](finalValue);\n }\n\n this.setVValue(finalValue);\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n }\n\n function ShapeProperty(elem, data, type) {\n this.propType = 'shape';\n this.comp = elem.comp;\n this.container = elem;\n this.elem = elem;\n this.data = data;\n this.k = false;\n this.kf = false;\n this._mdf = false;\n var pathData = type === 3 ? data.pt.k : data.ks.k;\n this.v = shapePool.clone(pathData);\n this.pv = shapePool.clone(this.v);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.paths = this.localShapeCollection;\n this.paths.addShape(this.v);\n this.reset = resetShape;\n this.effectsSequence = [];\n }\n\n function addEffect(effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.container.addDynamicProperty(this);\n }\n\n ShapeProperty.prototype.interpolateShape = interpolateShape;\n ShapeProperty.prototype.getValue = processEffectsSequence;\n ShapeProperty.prototype.setVValue = setVValue;\n ShapeProperty.prototype.addEffect = addEffect;\n\n function KeyframedShapeProperty(elem, data, type) {\n this.propType = 'shape';\n this.comp = elem.comp;\n this.elem = elem;\n this.container = elem;\n this.offsetTime = elem.data.st;\n this.keyframes = type === 3 ? data.pt.k : data.ks.k;\n this.keyframesMetadata = [];\n this.k = true;\n this.kf = true;\n var len = this.keyframes[0].s[0].i.length;\n this.v = shapePool.newElement();\n this.v.setPathData(this.keyframes[0].s[0].c, len);\n this.pv = shapePool.clone(this.v);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.paths = this.localShapeCollection;\n this.paths.addShape(this.v);\n this.lastFrame = initFrame;\n this.reset = resetShape;\n this._caching = {\n lastFrame: initFrame,\n lastIndex: 0\n };\n this.effectsSequence = [interpolateShapeCurrentTime.bind(this)];\n }\n\n KeyframedShapeProperty.prototype.getValue = processEffectsSequence;\n KeyframedShapeProperty.prototype.interpolateShape = interpolateShape;\n KeyframedShapeProperty.prototype.setVValue = setVValue;\n KeyframedShapeProperty.prototype.addEffect = addEffect;\n\n var EllShapeProperty = function () {\n var cPoint = roundCorner;\n\n function EllShapePropertyFactory(elem, data) {\n this.v = shapePool.newElement();\n this.v.setPathData(true, 4);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.paths = this.localShapeCollection;\n this.localShapeCollection.addShape(this.v);\n this.d = data.d;\n this.elem = elem;\n this.comp = elem.comp;\n this.frameId = -1;\n this.initDynamicPropertyContainer(elem);\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertEllToPath();\n }\n }\n\n EllShapePropertyFactory.prototype = {\n reset: resetShape,\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n\n if (this._mdf) {\n this.convertEllToPath();\n }\n },\n convertEllToPath: function convertEllToPath() {\n var p0 = this.p.v[0];\n var p1 = this.p.v[1];\n var s0 = this.s.v[0] / 2;\n var s1 = this.s.v[1] / 2;\n\n var _cw = this.d !== 3;\n\n var _v = this.v;\n _v.v[0][0] = p0;\n _v.v[0][1] = p1 - s1;\n _v.v[1][0] = _cw ? p0 + s0 : p0 - s0;\n _v.v[1][1] = p1;\n _v.v[2][0] = p0;\n _v.v[2][1] = p1 + s1;\n _v.v[3][0] = _cw ? p0 - s0 : p0 + s0;\n _v.v[3][1] = p1;\n _v.i[0][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\n _v.i[0][1] = p1 - s1;\n _v.i[1][0] = _cw ? p0 + s0 : p0 - s0;\n _v.i[1][1] = p1 - s1 * cPoint;\n _v.i[2][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\n _v.i[2][1] = p1 + s1;\n _v.i[3][0] = _cw ? p0 - s0 : p0 + s0;\n _v.i[3][1] = p1 + s1 * cPoint;\n _v.o[0][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\n _v.o[0][1] = p1 - s1;\n _v.o[1][0] = _cw ? p0 + s0 : p0 - s0;\n _v.o[1][1] = p1 + s1 * cPoint;\n _v.o[2][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\n _v.o[2][1] = p1 + s1;\n _v.o[3][0] = _cw ? p0 - s0 : p0 + s0;\n _v.o[3][1] = p1 - s1 * cPoint;\n }\n };\n extendPrototype([DynamicPropertyContainer], EllShapePropertyFactory);\n return EllShapePropertyFactory;\n }();\n\n var StarShapeProperty = function () {\n function StarShapePropertyFactory(elem, data) {\n this.v = shapePool.newElement();\n this.v.setPathData(true, 0);\n this.elem = elem;\n this.comp = elem.comp;\n this.data = data;\n this.frameId = -1;\n this.d = data.d;\n this.initDynamicPropertyContainer(elem);\n\n if (data.sy === 1) {\n this.ir = PropertyFactory.getProp(elem, data.ir, 0, 0, this);\n this.is = PropertyFactory.getProp(elem, data.is, 0, 0.01, this);\n this.convertToPath = this.convertStarToPath;\n } else {\n this.convertToPath = this.convertPolygonToPath;\n }\n\n this.pt = PropertyFactory.getProp(elem, data.pt, 0, 0, this);\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n this.r = PropertyFactory.getProp(elem, data.r, 0, degToRads, this);\n this.or = PropertyFactory.getProp(elem, data.or, 0, 0, this);\n this.os = PropertyFactory.getProp(elem, data.os, 0, 0.01, this);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.localShapeCollection.addShape(this.v);\n this.paths = this.localShapeCollection;\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertToPath();\n }\n }\n\n StarShapePropertyFactory.prototype = {\n reset: resetShape,\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n\n if (this._mdf) {\n this.convertToPath();\n }\n },\n convertStarToPath: function convertStarToPath() {\n var numPts = Math.floor(this.pt.v) * 2;\n var angle = Math.PI * 2 / numPts;\n /* this.v.v.length = numPts;\r\n this.v.i.length = numPts;\r\n this.v.o.length = numPts; */\n\n var longFlag = true;\n var longRad = this.or.v;\n var shortRad = this.ir.v;\n var longRound = this.os.v;\n var shortRound = this.is.v;\n var longPerimSegment = 2 * Math.PI * longRad / (numPts * 2);\n var shortPerimSegment = 2 * Math.PI * shortRad / (numPts * 2);\n var i;\n var rad;\n var roundness;\n var perimSegment;\n var currentAng = -Math.PI / 2;\n currentAng += this.r.v;\n var dir = this.data.d === 3 ? -1 : 1;\n this.v._length = 0;\n\n for (i = 0; i < numPts; i += 1) {\n rad = longFlag ? longRad : shortRad;\n roundness = longFlag ? longRound : shortRound;\n perimSegment = longFlag ? longPerimSegment : shortPerimSegment;\n var x = rad * Math.cos(currentAng);\n var y = rad * Math.sin(currentAng);\n var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\n var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\n x += +this.p.v[0];\n y += +this.p.v[1];\n this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);\n /* this.v.v[i] = [x,y];\r\n this.v.i[i] = [x+ox*perimSegment*roundness*dir,y+oy*perimSegment*roundness*dir];\r\n this.v.o[i] = [x-ox*perimSegment*roundness*dir,y-oy*perimSegment*roundness*dir];\r\n this.v._length = numPts; */\n\n longFlag = !longFlag;\n currentAng += angle * dir;\n }\n },\n convertPolygonToPath: function convertPolygonToPath() {\n var numPts = Math.floor(this.pt.v);\n var angle = Math.PI * 2 / numPts;\n var rad = this.or.v;\n var roundness = this.os.v;\n var perimSegment = 2 * Math.PI * rad / (numPts * 4);\n var i;\n var currentAng = -Math.PI * 0.5;\n var dir = this.data.d === 3 ? -1 : 1;\n currentAng += this.r.v;\n this.v._length = 0;\n\n for (i = 0; i < numPts; i += 1) {\n var x = rad * Math.cos(currentAng);\n var y = rad * Math.sin(currentAng);\n var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\n var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\n x += +this.p.v[0];\n y += +this.p.v[1];\n this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);\n currentAng += angle * dir;\n }\n\n this.paths.length = 0;\n this.paths[0] = this.v;\n }\n };\n extendPrototype([DynamicPropertyContainer], StarShapePropertyFactory);\n return StarShapePropertyFactory;\n }();\n\n var RectShapeProperty = function () {\n function RectShapePropertyFactory(elem, data) {\n this.v = shapePool.newElement();\n this.v.c = true;\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.localShapeCollection.addShape(this.v);\n this.paths = this.localShapeCollection;\n this.elem = elem;\n this.comp = elem.comp;\n this.frameId = -1;\n this.d = data.d;\n this.initDynamicPropertyContainer(elem);\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\n this.r = PropertyFactory.getProp(elem, data.r, 0, 0, this);\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertRectToPath();\n }\n }\n\n RectShapePropertyFactory.prototype = {\n convertRectToPath: function convertRectToPath() {\n var p0 = this.p.v[0];\n var p1 = this.p.v[1];\n var v0 = this.s.v[0] / 2;\n var v1 = this.s.v[1] / 2;\n var round = bmMin(v0, v1, this.r.v);\n var cPoint = round * (1 - roundCorner);\n this.v._length = 0;\n\n if (this.d === 2 || this.d === 1) {\n this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, 0, true);\n this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, p0 + v0, p1 + v1 - round, 1, true);\n\n if (round !== 0) {\n this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, 2, true);\n this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0 + round, p1 + v1, 3, true);\n this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, 4, true);\n this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1 + round, 5, true);\n this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, 6, true);\n this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, p0 + v0 - round, p1 - v1, 7, true);\n } else {\n this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0, p1 + v1, 2);\n this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1, 3);\n }\n } else {\n this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, p0 + v0, p1 - v1 + round, 0, true);\n\n if (round !== 0) {\n this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, 1, true);\n this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0 + round, p1 - v1, 2, true);\n this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, 3, true);\n this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1 - round, 4, true);\n this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, 5, true);\n this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0 - round, p1 + v1, 6, true);\n this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, 7, true);\n } else {\n this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0, p1 - v1, 1, true);\n this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1, 2, true);\n this.v.setTripleAt(p0 + v0, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0, p1 + v1, 3, true);\n }\n }\n },\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n\n if (this._mdf) {\n this.convertRectToPath();\n }\n },\n reset: resetShape\n };\n extendPrototype([DynamicPropertyContainer], RectShapePropertyFactory);\n return RectShapePropertyFactory;\n }();\n\n function getShapeProp(elem, data, type) {\n var prop;\n\n if (type === 3 || type === 4) {\n var dataProp = type === 3 ? data.pt : data.ks;\n var keys = dataProp.k;\n\n if (keys.length) {\n prop = new KeyframedShapeProperty(elem, data, type);\n } else {\n prop = new ShapeProperty(elem, data, type);\n }\n } else if (type === 5) {\n prop = new RectShapeProperty(elem, data);\n } else if (type === 6) {\n prop = new EllShapeProperty(elem, data);\n } else if (type === 7) {\n prop = new StarShapeProperty(elem, data);\n }\n\n if (prop.k) {\n elem.addDynamicProperty(prop);\n }\n\n return prop;\n }\n\n function getConstructorFunction() {\n return ShapeProperty;\n }\n\n function getKeyframedConstructorFunction() {\n return KeyframedShapeProperty;\n }\n\n var ob = {};\n ob.getShapeProp = getShapeProp;\n ob.getConstructorFunction = getConstructorFunction;\n ob.getKeyframedConstructorFunction = getKeyframedConstructorFunction;\n return ob;\n }();\n\n /*!\r\n Transformation Matrix v2.0\r\n (c) Epistemex 2014-2015\r\n www.epistemex.com\r\n By Ken Fyrstenberg\r\n Contributions by leeoniya.\r\n License: MIT, header required.\r\n */\n\n /**\r\n * 2D transformation matrix object initialized with identity matrix.\r\n *\r\n * The matrix can synchronize a canvas context by supplying the context\r\n * as an argument, or later apply current absolute transform to an\r\n * existing context.\r\n *\r\n * All values are handled as floating point values.\r\n *\r\n * @param {CanvasRenderingContext2D} [context] - Optional context to sync with Matrix\r\n * @prop {number} a - scale x\r\n * @prop {number} b - shear y\r\n * @prop {number} c - shear x\r\n * @prop {number} d - scale y\r\n * @prop {number} e - translate x\r\n * @prop {number} f - translate y\r\n * @prop {CanvasRenderingContext2D|null} [context=null] - set or get current canvas context\r\n * @constructor\r\n */\n\n var Matrix = function () {\n var _cos = Math.cos;\n var _sin = Math.sin;\n var _tan = Math.tan;\n var _rnd = Math.round;\n\n function reset() {\n this.props[0] = 1;\n this.props[1] = 0;\n this.props[2] = 0;\n this.props[3] = 0;\n this.props[4] = 0;\n this.props[5] = 1;\n this.props[6] = 0;\n this.props[7] = 0;\n this.props[8] = 0;\n this.props[9] = 0;\n this.props[10] = 1;\n this.props[11] = 0;\n this.props[12] = 0;\n this.props[13] = 0;\n this.props[14] = 0;\n this.props[15] = 1;\n return this;\n }\n\n function rotate(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n }\n\n function rotateX(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(1, 0, 0, 0, 0, mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1);\n }\n\n function rotateY(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, 0, mSin, 0, 0, 1, 0, 0, -mSin, 0, mCos, 0, 0, 0, 0, 1);\n }\n\n function rotateZ(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n }\n\n function shear(sx, sy) {\n return this._t(1, sy, sx, 1, 0, 0);\n }\n\n function skew(ax, ay) {\n return this.shear(_tan(ax), _tan(ay));\n }\n\n function skewFromAxis(ax, angle) {\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, mSin, 0, 0, -mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)._t(1, 0, 0, 0, _tan(ax), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); // return this._t(mCos, mSin, -mSin, mCos, 0, 0)._t(1, 0, _tan(ax), 1, 0, 0)._t(mCos, -mSin, mSin, mCos, 0, 0);\n }\n\n function scale(sx, sy, sz) {\n if (!sz && sz !== 0) {\n sz = 1;\n }\n\n if (sx === 1 && sy === 1 && sz === 1) {\n return this;\n }\n\n return this._t(sx, 0, 0, 0, 0, sy, 0, 0, 0, 0, sz, 0, 0, 0, 0, 1);\n }\n\n function setTransform(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) {\n this.props[0] = a;\n this.props[1] = b;\n this.props[2] = c;\n this.props[3] = d;\n this.props[4] = e;\n this.props[5] = f;\n this.props[6] = g;\n this.props[7] = h;\n this.props[8] = i;\n this.props[9] = j;\n this.props[10] = k;\n this.props[11] = l;\n this.props[12] = m;\n this.props[13] = n;\n this.props[14] = o;\n this.props[15] = p;\n return this;\n }\n\n function translate(tx, ty, tz) {\n tz = tz || 0;\n\n if (tx !== 0 || ty !== 0 || tz !== 0) {\n return this._t(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, tx, ty, tz, 1);\n }\n\n return this;\n }\n\n function transform(a2, b2, c2, d2, e2, f2, g2, h2, i2, j2, k2, l2, m2, n2, o2, p2) {\n var _p = this.props;\n\n if (a2 === 1 && b2 === 0 && c2 === 0 && d2 === 0 && e2 === 0 && f2 === 1 && g2 === 0 && h2 === 0 && i2 === 0 && j2 === 0 && k2 === 1 && l2 === 0) {\n // NOTE: commenting this condition because TurboFan deoptimizes code when present\n // if(m2 !== 0 || n2 !== 0 || o2 !== 0){\n _p[12] = _p[12] * a2 + _p[15] * m2;\n _p[13] = _p[13] * f2 + _p[15] * n2;\n _p[14] = _p[14] * k2 + _p[15] * o2;\n _p[15] *= p2; // }\n\n this._identityCalculated = false;\n return this;\n }\n\n var a1 = _p[0];\n var b1 = _p[1];\n var c1 = _p[2];\n var d1 = _p[3];\n var e1 = _p[4];\n var f1 = _p[5];\n var g1 = _p[6];\n var h1 = _p[7];\n var i1 = _p[8];\n var j1 = _p[9];\n var k1 = _p[10];\n var l1 = _p[11];\n var m1 = _p[12];\n var n1 = _p[13];\n var o1 = _p[14];\n var p1 = _p[15];\n /* matrix order (canvas compatible):\r\n * ace\r\n * bdf\r\n * 001\r\n */\n\n _p[0] = a1 * a2 + b1 * e2 + c1 * i2 + d1 * m2;\n _p[1] = a1 * b2 + b1 * f2 + c1 * j2 + d1 * n2;\n _p[2] = a1 * c2 + b1 * g2 + c1 * k2 + d1 * o2;\n _p[3] = a1 * d2 + b1 * h2 + c1 * l2 + d1 * p2;\n _p[4] = e1 * a2 + f1 * e2 + g1 * i2 + h1 * m2;\n _p[5] = e1 * b2 + f1 * f2 + g1 * j2 + h1 * n2;\n _p[6] = e1 * c2 + f1 * g2 + g1 * k2 + h1 * o2;\n _p[7] = e1 * d2 + f1 * h2 + g1 * l2 + h1 * p2;\n _p[8] = i1 * a2 + j1 * e2 + k1 * i2 + l1 * m2;\n _p[9] = i1 * b2 + j1 * f2 + k1 * j2 + l1 * n2;\n _p[10] = i1 * c2 + j1 * g2 + k1 * k2 + l1 * o2;\n _p[11] = i1 * d2 + j1 * h2 + k1 * l2 + l1 * p2;\n _p[12] = m1 * a2 + n1 * e2 + o1 * i2 + p1 * m2;\n _p[13] = m1 * b2 + n1 * f2 + o1 * j2 + p1 * n2;\n _p[14] = m1 * c2 + n1 * g2 + o1 * k2 + p1 * o2;\n _p[15] = m1 * d2 + n1 * h2 + o1 * l2 + p1 * p2;\n this._identityCalculated = false;\n return this;\n }\n\n function isIdentity() {\n if (!this._identityCalculated) {\n this._identity = !(this.props[0] !== 1 || this.props[1] !== 0 || this.props[2] !== 0 || this.props[3] !== 0 || this.props[4] !== 0 || this.props[5] !== 1 || this.props[6] !== 0 || this.props[7] !== 0 || this.props[8] !== 0 || this.props[9] !== 0 || this.props[10] !== 1 || this.props[11] !== 0 || this.props[12] !== 0 || this.props[13] !== 0 || this.props[14] !== 0 || this.props[15] !== 1);\n this._identityCalculated = true;\n }\n\n return this._identity;\n }\n\n function equals(matr) {\n var i = 0;\n\n while (i < 16) {\n if (matr.props[i] !== this.props[i]) {\n return false;\n }\n\n i += 1;\n }\n\n return true;\n }\n\n function clone(matr) {\n var i;\n\n for (i = 0; i < 16; i += 1) {\n matr.props[i] = this.props[i];\n }\n\n return matr;\n }\n\n function cloneFromProps(props) {\n var i;\n\n for (i = 0; i < 16; i += 1) {\n this.props[i] = props[i];\n }\n }\n\n function applyToPoint(x, y, z) {\n return {\n x: x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12],\n y: x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13],\n z: x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]\n };\n /* return {\r\n x: x * me.a + y * me.c + me.e,\r\n y: x * me.b + y * me.d + me.f\r\n }; */\n }\n\n function applyToX(x, y, z) {\n return x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12];\n }\n\n function applyToY(x, y, z) {\n return x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13];\n }\n\n function applyToZ(x, y, z) {\n return x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14];\n }\n\n function getInverseMatrix() {\n var determinant = this.props[0] * this.props[5] - this.props[1] * this.props[4];\n var a = this.props[5] / determinant;\n var b = -this.props[1] / determinant;\n var c = -this.props[4] / determinant;\n var d = this.props[0] / determinant;\n var e = (this.props[4] * this.props[13] - this.props[5] * this.props[12]) / determinant;\n var f = -(this.props[0] * this.props[13] - this.props[1] * this.props[12]) / determinant;\n var inverseMatrix = new Matrix();\n inverseMatrix.props[0] = a;\n inverseMatrix.props[1] = b;\n inverseMatrix.props[4] = c;\n inverseMatrix.props[5] = d;\n inverseMatrix.props[12] = e;\n inverseMatrix.props[13] = f;\n return inverseMatrix;\n }\n\n function inversePoint(pt) {\n var inverseMatrix = this.getInverseMatrix();\n return inverseMatrix.applyToPointArray(pt[0], pt[1], pt[2] || 0);\n }\n\n function inversePoints(pts) {\n var i;\n var len = pts.length;\n var retPts = [];\n\n for (i = 0; i < len; i += 1) {\n retPts[i] = inversePoint(pts[i]);\n }\n\n return retPts;\n }\n\n function applyToTriplePoints(pt1, pt2, pt3) {\n var arr = createTypedArray('float32', 6);\n\n if (this.isIdentity()) {\n arr[0] = pt1[0];\n arr[1] = pt1[1];\n arr[2] = pt2[0];\n arr[3] = pt2[1];\n arr[4] = pt3[0];\n arr[5] = pt3[1];\n } else {\n var p0 = this.props[0];\n var p1 = this.props[1];\n var p4 = this.props[4];\n var p5 = this.props[5];\n var p12 = this.props[12];\n var p13 = this.props[13];\n arr[0] = pt1[0] * p0 + pt1[1] * p4 + p12;\n arr[1] = pt1[0] * p1 + pt1[1] * p5 + p13;\n arr[2] = pt2[0] * p0 + pt2[1] * p4 + p12;\n arr[3] = pt2[0] * p1 + pt2[1] * p5 + p13;\n arr[4] = pt3[0] * p0 + pt3[1] * p4 + p12;\n arr[5] = pt3[0] * p1 + pt3[1] * p5 + p13;\n }\n\n return arr;\n }\n\n function applyToPointArray(x, y, z) {\n var arr;\n\n if (this.isIdentity()) {\n arr = [x, y, z];\n } else {\n arr = [x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12], x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13], x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]];\n }\n\n return arr;\n }\n\n function applyToPointStringified(x, y) {\n if (this.isIdentity()) {\n return x + ',' + y;\n }\n\n var _p = this.props;\n return Math.round((x * _p[0] + y * _p[4] + _p[12]) * 100) / 100 + ',' + Math.round((x * _p[1] + y * _p[5] + _p[13]) * 100) / 100;\n }\n\n function toCSS() {\n // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\n\n /* if(this.isIdentity()) {\r\n return '';\r\n } */\n var i = 0;\n var props = this.props;\n var cssValue = 'matrix3d(';\n var v = 10000;\n\n while (i < 16) {\n cssValue += _rnd(props[i] * v) / v;\n cssValue += i === 15 ? ')' : ',';\n i += 1;\n }\n\n return cssValue;\n }\n\n function roundMatrixProperty(val) {\n var v = 10000;\n\n if (val < 0.000001 && val > 0 || val > -0.000001 && val < 0) {\n return _rnd(val * v) / v;\n }\n\n return val;\n }\n\n function to2dCSS() {\n // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\n\n /* if(this.isIdentity()) {\r\n return '';\r\n } */\n var props = this.props;\n\n var _a = roundMatrixProperty(props[0]);\n\n var _b = roundMatrixProperty(props[1]);\n\n var _c = roundMatrixProperty(props[4]);\n\n var _d = roundMatrixProperty(props[5]);\n\n var _e = roundMatrixProperty(props[12]);\n\n var _f = roundMatrixProperty(props[13]);\n\n return 'matrix(' + _a + ',' + _b + ',' + _c + ',' + _d + ',' + _e + ',' + _f + ')';\n }\n\n return function () {\n this.reset = reset;\n this.rotate = rotate;\n this.rotateX = rotateX;\n this.rotateY = rotateY;\n this.rotateZ = rotateZ;\n this.skew = skew;\n this.skewFromAxis = skewFromAxis;\n this.shear = shear;\n this.scale = scale;\n this.setTransform = setTransform;\n this.translate = translate;\n this.transform = transform;\n this.applyToPoint = applyToPoint;\n this.applyToX = applyToX;\n this.applyToY = applyToY;\n this.applyToZ = applyToZ;\n this.applyToPointArray = applyToPointArray;\n this.applyToTriplePoints = applyToTriplePoints;\n this.applyToPointStringified = applyToPointStringified;\n this.toCSS = toCSS;\n this.to2dCSS = to2dCSS;\n this.clone = clone;\n this.cloneFromProps = cloneFromProps;\n this.equals = equals;\n this.inversePoints = inversePoints;\n this.inversePoint = inversePoint;\n this.getInverseMatrix = getInverseMatrix;\n this._t = this.transform;\n this.isIdentity = isIdentity;\n this._identity = true;\n this._identityCalculated = false;\n this.props = createTypedArray('float32', 16);\n this.reset();\n };\n }();\n\n function _typeof$3(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$3 = function _typeof(obj) { return typeof obj; }; } else { _typeof$3 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$3(obj); }\n var lottie = {};\n var standalone = '__[STANDALONE]__';\n var animationData = '__[ANIMATIONDATA]__';\n var renderer = '';\n\n function setLocation(href) {\n setLocationHref(href);\n }\n\n function searchAnimations() {\n if (standalone === true) {\n animationManager.searchAnimations(animationData, standalone, renderer);\n } else {\n animationManager.searchAnimations();\n }\n }\n\n function setSubframeRendering(flag) {\n setSubframeEnabled(flag);\n }\n\n function setPrefix(prefix) {\n setIdPrefix(prefix);\n }\n\n function loadAnimation(params) {\n if (standalone === true) {\n params.animationData = JSON.parse(animationData);\n }\n\n return animationManager.loadAnimation(params);\n }\n\n function setQuality(value) {\n if (typeof value === 'string') {\n switch (value) {\n case 'high':\n setDefaultCurveSegments(200);\n break;\n\n default:\n case 'medium':\n setDefaultCurveSegments(50);\n break;\n\n case 'low':\n setDefaultCurveSegments(10);\n break;\n }\n } else if (!isNaN(value) && value > 1) {\n setDefaultCurveSegments(value);\n }\n\n if (getDefaultCurveSegments() >= 50) {\n roundValues(false);\n } else {\n roundValues(true);\n }\n }\n\n function inBrowser() {\n return typeof navigator !== 'undefined';\n }\n\n function installPlugin(type, plugin) {\n if (type === 'expressions') {\n setExpressionsPlugin(plugin);\n }\n }\n\n function getFactory(name) {\n switch (name) {\n case 'propertyFactory':\n return PropertyFactory;\n\n case 'shapePropertyFactory':\n return ShapePropertyFactory;\n\n case 'matrix':\n return Matrix;\n\n default:\n return null;\n }\n }\n\n lottie.play = animationManager.play;\n lottie.pause = animationManager.pause;\n lottie.setLocationHref = setLocation;\n lottie.togglePause = animationManager.togglePause;\n lottie.setSpeed = animationManager.setSpeed;\n lottie.setDirection = animationManager.setDirection;\n lottie.stop = animationManager.stop;\n lottie.searchAnimations = searchAnimations;\n lottie.registerAnimation = animationManager.registerAnimation;\n lottie.loadAnimation = loadAnimation;\n lottie.setSubframeRendering = setSubframeRendering;\n lottie.resize = animationManager.resize; // lottie.start = start;\n\n lottie.goToAndStop = animationManager.goToAndStop;\n lottie.destroy = animationManager.destroy;\n lottie.setQuality = setQuality;\n lottie.inBrowser = inBrowser;\n lottie.installPlugin = installPlugin;\n lottie.freeze = animationManager.freeze;\n lottie.unfreeze = animationManager.unfreeze;\n lottie.setVolume = animationManager.setVolume;\n lottie.mute = animationManager.mute;\n lottie.unmute = animationManager.unmute;\n lottie.getRegisteredAnimations = animationManager.getRegisteredAnimations;\n lottie.useWebWorker = setWebWorker;\n lottie.setIDPrefix = setPrefix;\n lottie.__getFactory = getFactory;\n lottie.version = '5.9.1';\n\n function checkReady() {\n if (document.readyState === 'complete') {\n clearInterval(readyStateCheckInterval);\n searchAnimations();\n }\n }\n\n function getQueryVariable(variable) {\n var vars = queryString.split('&');\n\n for (var i = 0; i < vars.length; i += 1) {\n var pair = vars[i].split('=');\n\n if (decodeURIComponent(pair[0]) == variable) {\n // eslint-disable-line eqeqeq\n return decodeURIComponent(pair[1]);\n }\n }\n\n return null;\n }\n\n var queryString;\n\n if (standalone) {\n var scripts = document.getElementsByTagName('script');\n var index = scripts.length - 1;\n var myScript = scripts[index] || {\n src: ''\n };\n queryString = myScript.src.replace(/^[^\\?]+\\??/, ''); // eslint-disable-line no-useless-escape\n\n renderer = getQueryVariable('renderer');\n }\n\n var readyStateCheckInterval = setInterval(checkReady, 100); // this adds bodymovin to the window object for backwards compatibility\n\n try {\n if (!((typeof exports === \"undefined\" ? \"undefined\" : _typeof$3(exports)) === 'object' && typeof module !== 'undefined') && !(typeof define === 'function' && define.amd) // eslint-disable-line no-undef\n ) {\n window.bodymovin = lottie;\n }\n } catch (err) {//\n }\n\n var ShapeModifiers = function () {\n var ob = {};\n var modifiers = {};\n ob.registerModifier = registerModifier;\n ob.getModifier = getModifier;\n\n function registerModifier(nm, factory) {\n if (!modifiers[nm]) {\n modifiers[nm] = factory;\n }\n }\n\n function getModifier(nm, elem, data) {\n return new modifiers[nm](elem, data);\n }\n\n return ob;\n }();\n\n function ShapeModifier() {}\n\n ShapeModifier.prototype.initModifierProperties = function () {};\n\n ShapeModifier.prototype.addShapeToModifier = function () {};\n\n ShapeModifier.prototype.addShape = function (data) {\n if (!this.closed) {\n // Adding shape to dynamic properties. It covers the case where a shape has no effects applied, to reset it's _mdf state on every tick.\n data.sh.container.addDynamicProperty(data.sh);\n var shapeData = {\n shape: data.sh,\n data: data,\n localShapeCollection: shapeCollectionPool.newShapeCollection()\n };\n this.shapes.push(shapeData);\n this.addShapeToModifier(shapeData);\n\n if (this._isAnimated) {\n data.setAsAnimated();\n }\n }\n };\n\n ShapeModifier.prototype.init = function (elem, data) {\n this.shapes = [];\n this.elem = elem;\n this.initDynamicPropertyContainer(elem);\n this.initModifierProperties(elem, data);\n this.frameId = initialDefaultFrame;\n this.closed = false;\n this.k = false;\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.getValue(true);\n }\n };\n\n ShapeModifier.prototype.processKeys = function () {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n };\n\n extendPrototype([DynamicPropertyContainer], ShapeModifier);\n\n function TrimModifier() {}\n\n extendPrototype([ShapeModifier], TrimModifier);\n\n TrimModifier.prototype.initModifierProperties = function (elem, data) {\n this.s = PropertyFactory.getProp(elem, data.s, 0, 0.01, this);\n this.e = PropertyFactory.getProp(elem, data.e, 0, 0.01, this);\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0, this);\n this.sValue = 0;\n this.eValue = 0;\n this.getValue = this.processKeys;\n this.m = data.m;\n this._isAnimated = !!this.s.effectsSequence.length || !!this.e.effectsSequence.length || !!this.o.effectsSequence.length;\n };\n\n TrimModifier.prototype.addShapeToModifier = function (shapeData) {\n shapeData.pathsData = [];\n };\n\n TrimModifier.prototype.calculateShapeEdges = function (s, e, shapeLength, addedLength, totalModifierLength) {\n var segments = [];\n\n if (e <= 1) {\n segments.push({\n s: s,\n e: e\n });\n } else if (s >= 1) {\n segments.push({\n s: s - 1,\n e: e - 1\n });\n } else {\n segments.push({\n s: s,\n e: 1\n });\n segments.push({\n s: 0,\n e: e - 1\n });\n }\n\n var shapeSegments = [];\n var i;\n var len = segments.length;\n var segmentOb;\n\n for (i = 0; i < len; i += 1) {\n segmentOb = segments[i];\n\n if (!(segmentOb.e * totalModifierLength < addedLength || segmentOb.s * totalModifierLength > addedLength + shapeLength)) {\n var shapeS;\n var shapeE;\n\n if (segmentOb.s * totalModifierLength <= addedLength) {\n shapeS = 0;\n } else {\n shapeS = (segmentOb.s * totalModifierLength - addedLength) / shapeLength;\n }\n\n if (segmentOb.e * totalModifierLength >= addedLength + shapeLength) {\n shapeE = 1;\n } else {\n shapeE = (segmentOb.e * totalModifierLength - addedLength) / shapeLength;\n }\n\n shapeSegments.push([shapeS, shapeE]);\n }\n }\n\n if (!shapeSegments.length) {\n shapeSegments.push([0, 0]);\n }\n\n return shapeSegments;\n };\n\n TrimModifier.prototype.releasePathsData = function (pathsData) {\n var i;\n var len = pathsData.length;\n\n for (i = 0; i < len; i += 1) {\n segmentsLengthPool.release(pathsData[i]);\n }\n\n pathsData.length = 0;\n return pathsData;\n };\n\n TrimModifier.prototype.processShapes = function (_isFirstFrame) {\n var s;\n var e;\n\n if (this._mdf || _isFirstFrame) {\n var o = this.o.v % 360 / 360;\n\n if (o < 0) {\n o += 1;\n }\n\n if (this.s.v > 1) {\n s = 1 + o;\n } else if (this.s.v < 0) {\n s = 0 + o;\n } else {\n s = this.s.v + o;\n }\n\n if (this.e.v > 1) {\n e = 1 + o;\n } else if (this.e.v < 0) {\n e = 0 + o;\n } else {\n e = this.e.v + o;\n }\n\n if (s > e) {\n var _s = s;\n s = e;\n e = _s;\n }\n\n s = Math.round(s * 10000) * 0.0001;\n e = Math.round(e * 10000) * 0.0001;\n this.sValue = s;\n this.eValue = e;\n } else {\n s = this.sValue;\n e = this.eValue;\n }\n\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var pathsData;\n var pathData;\n var totalShapeLength;\n var totalModifierLength = 0;\n\n if (e === s) {\n for (i = 0; i < len; i += 1) {\n this.shapes[i].localShapeCollection.releaseShapes();\n this.shapes[i].shape._mdf = true;\n this.shapes[i].shape.paths = this.shapes[i].localShapeCollection;\n\n if (this._mdf) {\n this.shapes[i].pathsData.length = 0;\n }\n }\n } else if (!(e === 1 && s === 0 || e === 0 && s === 1)) {\n var segments = [];\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i]; // if shape hasn't changed and trim properties haven't changed, cached previous path can be used\n\n if (!shapeData.shape._mdf && !this._mdf && !_isFirstFrame && this.m !== 2) {\n shapeData.shape.paths = shapeData.localShapeCollection;\n } else {\n shapePaths = shapeData.shape.paths;\n jLen = shapePaths._length;\n totalShapeLength = 0;\n\n if (!shapeData.shape._mdf && shapeData.pathsData.length) {\n totalShapeLength = shapeData.totalShapeLength;\n } else {\n pathsData = this.releasePathsData(shapeData.pathsData);\n\n for (j = 0; j < jLen; j += 1) {\n pathData = bez.getSegmentsLength(shapePaths.shapes[j]);\n pathsData.push(pathData);\n totalShapeLength += pathData.totalLength;\n }\n\n shapeData.totalShapeLength = totalShapeLength;\n shapeData.pathsData = pathsData;\n }\n\n totalModifierLength += totalShapeLength;\n shapeData.shape._mdf = true;\n }\n }\n\n var shapeS = s;\n var shapeE = e;\n var addedLength = 0;\n var edges;\n\n for (i = len - 1; i >= 0; i -= 1) {\n shapeData = this.shapes[i];\n\n if (shapeData.shape._mdf) {\n localShapeCollection = shapeData.localShapeCollection;\n localShapeCollection.releaseShapes(); // if m === 2 means paths are trimmed individually so edges need to be found for this specific shape relative to whoel group\n\n if (this.m === 2 && len > 1) {\n edges = this.calculateShapeEdges(s, e, shapeData.totalShapeLength, addedLength, totalModifierLength);\n addedLength += shapeData.totalShapeLength;\n } else {\n edges = [[shapeS, shapeE]];\n }\n\n jLen = edges.length;\n\n for (j = 0; j < jLen; j += 1) {\n shapeS = edges[j][0];\n shapeE = edges[j][1];\n segments.length = 0;\n\n if (shapeE <= 1) {\n segments.push({\n s: shapeData.totalShapeLength * shapeS,\n e: shapeData.totalShapeLength * shapeE\n });\n } else if (shapeS >= 1) {\n segments.push({\n s: shapeData.totalShapeLength * (shapeS - 1),\n e: shapeData.totalShapeLength * (shapeE - 1)\n });\n } else {\n segments.push({\n s: shapeData.totalShapeLength * shapeS,\n e: shapeData.totalShapeLength\n });\n segments.push({\n s: 0,\n e: shapeData.totalShapeLength * (shapeE - 1)\n });\n }\n\n var newShapesData = this.addShapes(shapeData, segments[0]);\n\n if (segments[0].s !== segments[0].e) {\n if (segments.length > 1) {\n var lastShapeInCollection = shapeData.shape.paths.shapes[shapeData.shape.paths._length - 1];\n\n if (lastShapeInCollection.c) {\n var lastShape = newShapesData.pop();\n this.addPaths(newShapesData, localShapeCollection);\n newShapesData = this.addShapes(shapeData, segments[1], lastShape);\n } else {\n this.addPaths(newShapesData, localShapeCollection);\n newShapesData = this.addShapes(shapeData, segments[1]);\n }\n }\n\n this.addPaths(newShapesData, localShapeCollection);\n }\n }\n\n shapeData.shape.paths = localShapeCollection;\n }\n }\n } else if (this._mdf) {\n for (i = 0; i < len; i += 1) {\n // Releasign Trim Cached paths data when no trim applied in case shapes are modified inbetween.\n // Don't remove this even if it's losing cached info.\n this.shapes[i].pathsData.length = 0;\n this.shapes[i].shape._mdf = true;\n }\n }\n };\n\n TrimModifier.prototype.addPaths = function (newPaths, localShapeCollection) {\n var i;\n var len = newPaths.length;\n\n for (i = 0; i < len; i += 1) {\n localShapeCollection.addShape(newPaths[i]);\n }\n };\n\n TrimModifier.prototype.addSegment = function (pt1, pt2, pt3, pt4, shapePath, pos, newShape) {\n shapePath.setXYAt(pt2[0], pt2[1], 'o', pos);\n shapePath.setXYAt(pt3[0], pt3[1], 'i', pos + 1);\n\n if (newShape) {\n shapePath.setXYAt(pt1[0], pt1[1], 'v', pos);\n }\n\n shapePath.setXYAt(pt4[0], pt4[1], 'v', pos + 1);\n };\n\n TrimModifier.prototype.addSegmentFromArray = function (points, shapePath, pos, newShape) {\n shapePath.setXYAt(points[1], points[5], 'o', pos);\n shapePath.setXYAt(points[2], points[6], 'i', pos + 1);\n\n if (newShape) {\n shapePath.setXYAt(points[0], points[4], 'v', pos);\n }\n\n shapePath.setXYAt(points[3], points[7], 'v', pos + 1);\n };\n\n TrimModifier.prototype.addShapes = function (shapeData, shapeSegment, shapePath) {\n var pathsData = shapeData.pathsData;\n var shapePaths = shapeData.shape.paths.shapes;\n var i;\n var len = shapeData.shape.paths._length;\n var j;\n var jLen;\n var addedLength = 0;\n var currentLengthData;\n var segmentCount;\n var lengths;\n var segment;\n var shapes = [];\n var initPos;\n var newShape = true;\n\n if (!shapePath) {\n shapePath = shapePool.newElement();\n segmentCount = 0;\n initPos = 0;\n } else {\n segmentCount = shapePath._length;\n initPos = shapePath._length;\n }\n\n shapes.push(shapePath);\n\n for (i = 0; i < len; i += 1) {\n lengths = pathsData[i].lengths;\n shapePath.c = shapePaths[i].c;\n jLen = shapePaths[i].c ? lengths.length : lengths.length + 1;\n\n for (j = 1; j < jLen; j += 1) {\n currentLengthData = lengths[j - 1];\n\n if (addedLength + currentLengthData.addedLength < shapeSegment.s) {\n addedLength += currentLengthData.addedLength;\n shapePath.c = false;\n } else if (addedLength > shapeSegment.e) {\n shapePath.c = false;\n break;\n } else {\n if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + currentLengthData.addedLength) {\n this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[j], shapePaths[i].v[j], shapePath, segmentCount, newShape);\n newShape = false;\n } else {\n segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[j], shapePaths[i].o[j - 1], shapePaths[i].i[j], (shapeSegment.s - addedLength) / currentLengthData.addedLength, (shapeSegment.e - addedLength) / currentLengthData.addedLength, lengths[j - 1]);\n this.addSegmentFromArray(segment, shapePath, segmentCount, newShape); // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\n\n newShape = false;\n shapePath.c = false;\n }\n\n addedLength += currentLengthData.addedLength;\n segmentCount += 1;\n }\n }\n\n if (shapePaths[i].c && lengths.length) {\n currentLengthData = lengths[j - 1];\n\n if (addedLength <= shapeSegment.e) {\n var segmentLength = lengths[j - 1].addedLength;\n\n if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + segmentLength) {\n this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[0], shapePaths[i].v[0], shapePath, segmentCount, newShape);\n newShape = false;\n } else {\n segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[0], shapePaths[i].o[j - 1], shapePaths[i].i[0], (shapeSegment.s - addedLength) / segmentLength, (shapeSegment.e - addedLength) / segmentLength, lengths[j - 1]);\n this.addSegmentFromArray(segment, shapePath, segmentCount, newShape); // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\n\n newShape = false;\n shapePath.c = false;\n }\n } else {\n shapePath.c = false;\n }\n\n addedLength += currentLengthData.addedLength;\n segmentCount += 1;\n }\n\n if (shapePath._length) {\n shapePath.setXYAt(shapePath.v[initPos][0], shapePath.v[initPos][1], 'i', initPos);\n shapePath.setXYAt(shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1], 'o', shapePath._length - 1);\n }\n\n if (addedLength > shapeSegment.e) {\n break;\n }\n\n if (i < len - 1) {\n shapePath = shapePool.newElement();\n newShape = true;\n shapes.push(shapePath);\n segmentCount = 0;\n }\n }\n\n return shapes;\n };\n\n function PuckerAndBloatModifier() {}\n\n extendPrototype([ShapeModifier], PuckerAndBloatModifier);\n\n PuckerAndBloatModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this);\n this._isAnimated = !!this.amount.effectsSequence.length;\n };\n\n PuckerAndBloatModifier.prototype.processPath = function (path, amount) {\n var percent = amount / 100;\n var centerPoint = [0, 0];\n var pathLength = path._length;\n var i = 0;\n\n for (i = 0; i < pathLength; i += 1) {\n centerPoint[0] += path.v[i][0];\n centerPoint[1] += path.v[i][1];\n }\n\n centerPoint[0] /= pathLength;\n centerPoint[1] /= pathLength;\n var clonedPath = shapePool.newElement();\n clonedPath.c = path.c;\n var vX;\n var vY;\n var oX;\n var oY;\n var iX;\n var iY;\n\n for (i = 0; i < pathLength; i += 1) {\n vX = path.v[i][0] + (centerPoint[0] - path.v[i][0]) * percent;\n vY = path.v[i][1] + (centerPoint[1] - path.v[i][1]) * percent;\n oX = path.o[i][0] + (centerPoint[0] - path.o[i][0]) * -percent;\n oY = path.o[i][1] + (centerPoint[1] - path.o[i][1]) * -percent;\n iX = path.i[i][0] + (centerPoint[0] - path.i[i][0]) * -percent;\n iY = path.i[i][1] + (centerPoint[1] - path.i[i][1]) * -percent;\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, i);\n }\n\n return clonedPath;\n };\n\n PuckerAndBloatModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var amount = this.amount.v;\n\n if (amount !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amount));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n var TransformPropertyFactory = function () {\n var defaultVector = [0, 0];\n\n function applyToMatrix(mat) {\n var _mdf = this._mdf;\n this.iterateDynamicProperties();\n this._mdf = this._mdf || _mdf;\n\n if (this.a) {\n mat.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n }\n\n if (this.s) {\n mat.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n }\n\n if (this.sk) {\n mat.skewFromAxis(-this.sk.v, this.sa.v);\n }\n\n if (this.r) {\n mat.rotate(-this.r.v);\n } else {\n mat.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n }\n\n if (this.data.p.s) {\n if (this.data.p.z) {\n mat.translate(this.px.v, this.py.v, -this.pz.v);\n } else {\n mat.translate(this.px.v, this.py.v, 0);\n }\n } else {\n mat.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\n }\n }\n\n function processKeys(forceRender) {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n if (this._isDirty) {\n this.precalculateMatrix();\n this._isDirty = false;\n }\n\n this.iterateDynamicProperties();\n\n if (this._mdf || forceRender) {\n var frameRate;\n this.v.cloneFromProps(this.pre.props);\n\n if (this.appliedTransformations < 1) {\n this.v.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n }\n\n if (this.appliedTransformations < 2) {\n this.v.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n }\n\n if (this.sk && this.appliedTransformations < 3) {\n this.v.skewFromAxis(-this.sk.v, this.sa.v);\n }\n\n if (this.r && this.appliedTransformations < 4) {\n this.v.rotate(-this.r.v);\n } else if (!this.r && this.appliedTransformations < 4) {\n this.v.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n }\n\n if (this.autoOriented) {\n var v1;\n var v2;\n frameRate = this.elem.globalData.frameRate;\n\n if (this.p && this.p.keyframes && this.p.getValueAtTime) {\n if (this.p._caching.lastFrame + this.p.offsetTime <= this.p.keyframes[0].t) {\n v1 = this.p.getValueAtTime((this.p.keyframes[0].t + 0.01) / frameRate, 0);\n v2 = this.p.getValueAtTime(this.p.keyframes[0].t / frameRate, 0);\n } else if (this.p._caching.lastFrame + this.p.offsetTime >= this.p.keyframes[this.p.keyframes.length - 1].t) {\n v1 = this.p.getValueAtTime(this.p.keyframes[this.p.keyframes.length - 1].t / frameRate, 0);\n v2 = this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length - 1].t - 0.05) / frameRate, 0);\n } else {\n v1 = this.p.pv;\n v2 = this.p.getValueAtTime((this.p._caching.lastFrame + this.p.offsetTime - 0.01) / frameRate, this.p.offsetTime);\n }\n } else if (this.px && this.px.keyframes && this.py.keyframes && this.px.getValueAtTime && this.py.getValueAtTime) {\n v1 = [];\n v2 = [];\n var px = this.px;\n var py = this.py;\n\n if (px._caching.lastFrame + px.offsetTime <= px.keyframes[0].t) {\n v1[0] = px.getValueAtTime((px.keyframes[0].t + 0.01) / frameRate, 0);\n v1[1] = py.getValueAtTime((py.keyframes[0].t + 0.01) / frameRate, 0);\n v2[0] = px.getValueAtTime(px.keyframes[0].t / frameRate, 0);\n v2[1] = py.getValueAtTime(py.keyframes[0].t / frameRate, 0);\n } else if (px._caching.lastFrame + px.offsetTime >= px.keyframes[px.keyframes.length - 1].t) {\n v1[0] = px.getValueAtTime(px.keyframes[px.keyframes.length - 1].t / frameRate, 0);\n v1[1] = py.getValueAtTime(py.keyframes[py.keyframes.length - 1].t / frameRate, 0);\n v2[0] = px.getValueAtTime((px.keyframes[px.keyframes.length - 1].t - 0.01) / frameRate, 0);\n v2[1] = py.getValueAtTime((py.keyframes[py.keyframes.length - 1].t - 0.01) / frameRate, 0);\n } else {\n v1 = [px.pv, py.pv];\n v2[0] = px.getValueAtTime((px._caching.lastFrame + px.offsetTime - 0.01) / frameRate, px.offsetTime);\n v2[1] = py.getValueAtTime((py._caching.lastFrame + py.offsetTime - 0.01) / frameRate, py.offsetTime);\n }\n } else {\n v2 = defaultVector;\n v1 = v2;\n }\n\n this.v.rotate(-Math.atan2(v1[1] - v2[1], v1[0] - v2[0]));\n }\n\n if (this.data.p && this.data.p.s) {\n if (this.data.p.z) {\n this.v.translate(this.px.v, this.py.v, -this.pz.v);\n } else {\n this.v.translate(this.px.v, this.py.v, 0);\n }\n } else {\n this.v.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\n }\n }\n\n this.frameId = this.elem.globalData.frameId;\n }\n\n function precalculateMatrix() {\n if (!this.a.k) {\n this.pre.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n this.appliedTransformations = 1;\n } else {\n return;\n }\n\n if (!this.s.effectsSequence.length) {\n this.pre.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n this.appliedTransformations = 2;\n } else {\n return;\n }\n\n if (this.sk) {\n if (!this.sk.effectsSequence.length && !this.sa.effectsSequence.length) {\n this.pre.skewFromAxis(-this.sk.v, this.sa.v);\n this.appliedTransformations = 3;\n } else {\n return;\n }\n }\n\n if (this.r) {\n if (!this.r.effectsSequence.length) {\n this.pre.rotate(-this.r.v);\n this.appliedTransformations = 4;\n }\n } else if (!this.rz.effectsSequence.length && !this.ry.effectsSequence.length && !this.rx.effectsSequence.length && !this.or.effectsSequence.length) {\n this.pre.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n this.appliedTransformations = 4;\n }\n }\n\n function autoOrient() {//\n // var prevP = this.getValueAtTime();\n }\n\n function addDynamicProperty(prop) {\n this._addDynamicProperty(prop);\n\n this.elem.addDynamicProperty(prop);\n this._isDirty = true;\n }\n\n function TransformProperty(elem, data, container) {\n this.elem = elem;\n this.frameId = -1;\n this.propType = 'transform';\n this.data = data;\n this.v = new Matrix(); // Precalculated matrix with non animated properties\n\n this.pre = new Matrix();\n this.appliedTransformations = 0;\n this.initDynamicPropertyContainer(container || elem);\n\n if (data.p && data.p.s) {\n this.px = PropertyFactory.getProp(elem, data.p.x, 0, 0, this);\n this.py = PropertyFactory.getProp(elem, data.p.y, 0, 0, this);\n\n if (data.p.z) {\n this.pz = PropertyFactory.getProp(elem, data.p.z, 0, 0, this);\n }\n } else {\n this.p = PropertyFactory.getProp(elem, data.p || {\n k: [0, 0, 0]\n }, 1, 0, this);\n }\n\n if (data.rx) {\n this.rx = PropertyFactory.getProp(elem, data.rx, 0, degToRads, this);\n this.ry = PropertyFactory.getProp(elem, data.ry, 0, degToRads, this);\n this.rz = PropertyFactory.getProp(elem, data.rz, 0, degToRads, this);\n\n if (data.or.k[0].ti) {\n var i;\n var len = data.or.k.length;\n\n for (i = 0; i < len; i += 1) {\n data.or.k[i].to = null;\n data.or.k[i].ti = null;\n }\n }\n\n this.or = PropertyFactory.getProp(elem, data.or, 1, degToRads, this); // sh Indicates it needs to be capped between -180 and 180\n\n this.or.sh = true;\n } else {\n this.r = PropertyFactory.getProp(elem, data.r || {\n k: 0\n }, 0, degToRads, this);\n }\n\n if (data.sk) {\n this.sk = PropertyFactory.getProp(elem, data.sk, 0, degToRads, this);\n this.sa = PropertyFactory.getProp(elem, data.sa, 0, degToRads, this);\n }\n\n this.a = PropertyFactory.getProp(elem, data.a || {\n k: [0, 0, 0]\n }, 1, 0, this);\n this.s = PropertyFactory.getProp(elem, data.s || {\n k: [100, 100, 100]\n }, 1, 0.01, this); // Opacity is not part of the transform properties, that's why it won't use this.dynamicProperties. That way transforms won't get updated if opacity changes.\n\n if (data.o) {\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, elem);\n } else {\n this.o = {\n _mdf: false,\n v: 1\n };\n }\n\n this._isDirty = true;\n\n if (!this.dynamicProperties.length) {\n this.getValue(true);\n }\n }\n\n TransformProperty.prototype = {\n applyToMatrix: applyToMatrix,\n getValue: processKeys,\n precalculateMatrix: precalculateMatrix,\n autoOrient: autoOrient\n };\n extendPrototype([DynamicPropertyContainer], TransformProperty);\n TransformProperty.prototype.addDynamicProperty = addDynamicProperty;\n TransformProperty.prototype._addDynamicProperty = DynamicPropertyContainer.prototype.addDynamicProperty;\n\n function getTransformProperty(elem, data, container) {\n return new TransformProperty(elem, data, container);\n }\n\n return {\n getTransformProperty: getTransformProperty\n };\n }();\n\n function RepeaterModifier() {}\n\n extendPrototype([ShapeModifier], RepeaterModifier);\n\n RepeaterModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.c = PropertyFactory.getProp(elem, data.c, 0, null, this);\n this.o = PropertyFactory.getProp(elem, data.o, 0, null, this);\n this.tr = TransformPropertyFactory.getTransformProperty(elem, data.tr, this);\n this.so = PropertyFactory.getProp(elem, data.tr.so, 0, 0.01, this);\n this.eo = PropertyFactory.getProp(elem, data.tr.eo, 0, 0.01, this);\n this.data = data;\n\n if (!this.dynamicProperties.length) {\n this.getValue(true);\n }\n\n this._isAnimated = !!this.dynamicProperties.length;\n this.pMatrix = new Matrix();\n this.rMatrix = new Matrix();\n this.sMatrix = new Matrix();\n this.tMatrix = new Matrix();\n this.matrix = new Matrix();\n };\n\n RepeaterModifier.prototype.applyTransforms = function (pMatrix, rMatrix, sMatrix, transform, perc, inv) {\n var dir = inv ? -1 : 1;\n var scaleX = transform.s.v[0] + (1 - transform.s.v[0]) * (1 - perc);\n var scaleY = transform.s.v[1] + (1 - transform.s.v[1]) * (1 - perc);\n pMatrix.translate(transform.p.v[0] * dir * perc, transform.p.v[1] * dir * perc, transform.p.v[2]);\n rMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\n rMatrix.rotate(-transform.r.v * dir * perc);\n rMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\n sMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\n sMatrix.scale(inv ? 1 / scaleX : scaleX, inv ? 1 / scaleY : scaleY);\n sMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\n };\n\n RepeaterModifier.prototype.init = function (elem, arr, pos, elemsData) {\n this.elem = elem;\n this.arr = arr;\n this.pos = pos;\n this.elemsData = elemsData;\n this._currentCopies = 0;\n this._elements = [];\n this._groups = [];\n this.frameId = -1;\n this.initDynamicPropertyContainer(elem);\n this.initModifierProperties(elem, arr[pos]);\n\n while (pos > 0) {\n pos -= 1; // this._elements.unshift(arr.splice(pos,1)[0]);\n\n this._elements.unshift(arr[pos]);\n }\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.getValue(true);\n }\n };\n\n RepeaterModifier.prototype.resetElements = function (elements) {\n var i;\n var len = elements.length;\n\n for (i = 0; i < len; i += 1) {\n elements[i]._processed = false;\n\n if (elements[i].ty === 'gr') {\n this.resetElements(elements[i].it);\n }\n }\n };\n\n RepeaterModifier.prototype.cloneElements = function (elements) {\n var newElements = JSON.parse(JSON.stringify(elements));\n this.resetElements(newElements);\n return newElements;\n };\n\n RepeaterModifier.prototype.changeGroupRender = function (elements, renderFlag) {\n var i;\n var len = elements.length;\n\n for (i = 0; i < len; i += 1) {\n elements[i]._render = renderFlag;\n\n if (elements[i].ty === 'gr') {\n this.changeGroupRender(elements[i].it, renderFlag);\n }\n }\n };\n\n RepeaterModifier.prototype.processShapes = function (_isFirstFrame) {\n var items;\n var itemsTransform;\n var i;\n var dir;\n var cont;\n var hasReloaded = false;\n\n if (this._mdf || _isFirstFrame) {\n var copies = Math.ceil(this.c.v);\n\n if (this._groups.length < copies) {\n while (this._groups.length < copies) {\n var group = {\n it: this.cloneElements(this._elements),\n ty: 'gr'\n };\n group.it.push({\n a: {\n a: 0,\n ix: 1,\n k: [0, 0]\n },\n nm: 'Transform',\n o: {\n a: 0,\n ix: 7,\n k: 100\n },\n p: {\n a: 0,\n ix: 2,\n k: [0, 0]\n },\n r: {\n a: 1,\n ix: 6,\n k: [{\n s: 0,\n e: 0,\n t: 0\n }, {\n s: 0,\n e: 0,\n t: 1\n }]\n },\n s: {\n a: 0,\n ix: 3,\n k: [100, 100]\n },\n sa: {\n a: 0,\n ix: 5,\n k: 0\n },\n sk: {\n a: 0,\n ix: 4,\n k: 0\n },\n ty: 'tr'\n });\n this.arr.splice(0, 0, group);\n\n this._groups.splice(0, 0, group);\n\n this._currentCopies += 1;\n }\n\n this.elem.reloadShapes();\n hasReloaded = true;\n }\n\n cont = 0;\n var renderFlag;\n\n for (i = 0; i <= this._groups.length - 1; i += 1) {\n renderFlag = cont < copies;\n this._groups[i]._render = renderFlag;\n this.changeGroupRender(this._groups[i].it, renderFlag);\n\n if (!renderFlag) {\n var elems = this.elemsData[i].it;\n var transformData = elems[elems.length - 1];\n\n if (transformData.transform.op.v !== 0) {\n transformData.transform.op._mdf = true;\n transformData.transform.op.v = 0;\n } else {\n transformData.transform.op._mdf = false;\n }\n }\n\n cont += 1;\n }\n\n this._currentCopies = copies; /// /\n\n var offset = this.o.v;\n var offsetModulo = offset % 1;\n var roundOffset = offset > 0 ? Math.floor(offset) : Math.ceil(offset);\n var pProps = this.pMatrix.props;\n var rProps = this.rMatrix.props;\n var sProps = this.sMatrix.props;\n this.pMatrix.reset();\n this.rMatrix.reset();\n this.sMatrix.reset();\n this.tMatrix.reset();\n this.matrix.reset();\n var iteration = 0;\n\n if (offset > 0) {\n while (iteration < roundOffset) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\n iteration += 1;\n }\n\n if (offsetModulo) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, offsetModulo, false);\n iteration += offsetModulo;\n }\n } else if (offset < 0) {\n while (iteration > roundOffset) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, true);\n iteration -= 1;\n }\n\n if (offsetModulo) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, -offsetModulo, true);\n iteration -= offsetModulo;\n }\n }\n\n i = this.data.m === 1 ? 0 : this._currentCopies - 1;\n dir = this.data.m === 1 ? 1 : -1;\n cont = this._currentCopies;\n var j;\n var jLen;\n\n while (cont) {\n items = this.elemsData[i].it;\n itemsTransform = items[items.length - 1].transform.mProps.v.props;\n jLen = itemsTransform.length;\n items[items.length - 1].transform.mProps._mdf = true;\n items[items.length - 1].transform.op._mdf = true;\n items[items.length - 1].transform.op.v = this._currentCopies === 1 ? this.so.v : this.so.v + (this.eo.v - this.so.v) * (i / (this._currentCopies - 1));\n\n if (iteration !== 0) {\n if (i !== 0 && dir === 1 || i !== this._currentCopies - 1 && dir === -1) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\n }\n\n this.matrix.transform(rProps[0], rProps[1], rProps[2], rProps[3], rProps[4], rProps[5], rProps[6], rProps[7], rProps[8], rProps[9], rProps[10], rProps[11], rProps[12], rProps[13], rProps[14], rProps[15]);\n this.matrix.transform(sProps[0], sProps[1], sProps[2], sProps[3], sProps[4], sProps[5], sProps[6], sProps[7], sProps[8], sProps[9], sProps[10], sProps[11], sProps[12], sProps[13], sProps[14], sProps[15]);\n this.matrix.transform(pProps[0], pProps[1], pProps[2], pProps[3], pProps[4], pProps[5], pProps[6], pProps[7], pProps[8], pProps[9], pProps[10], pProps[11], pProps[12], pProps[13], pProps[14], pProps[15]);\n\n for (j = 0; j < jLen; j += 1) {\n itemsTransform[j] = this.matrix.props[j];\n }\n\n this.matrix.reset();\n } else {\n this.matrix.reset();\n\n for (j = 0; j < jLen; j += 1) {\n itemsTransform[j] = this.matrix.props[j];\n }\n }\n\n iteration += 1;\n cont -= 1;\n i += dir;\n }\n } else {\n cont = this._currentCopies;\n i = 0;\n dir = 1;\n\n while (cont) {\n items = this.elemsData[i].it;\n itemsTransform = items[items.length - 1].transform.mProps.v.props;\n items[items.length - 1].transform.mProps._mdf = false;\n items[items.length - 1].transform.op._mdf = false;\n cont -= 1;\n i += dir;\n }\n }\n\n return hasReloaded;\n };\n\n RepeaterModifier.prototype.addShape = function () {};\n\n function RoundCornersModifier() {}\n\n extendPrototype([ShapeModifier], RoundCornersModifier);\n\n RoundCornersModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.rd = PropertyFactory.getProp(elem, data.r, 0, null, this);\n this._isAnimated = !!this.rd.effectsSequence.length;\n };\n\n RoundCornersModifier.prototype.processPath = function (path, round) {\n var clonedPath = shapePool.newElement();\n clonedPath.c = path.c;\n var i;\n var len = path._length;\n var currentV;\n var currentI;\n var currentO;\n var closerV;\n var distance;\n var newPosPerc;\n var index = 0;\n var vX;\n var vY;\n var oX;\n var oY;\n var iX;\n var iY;\n\n for (i = 0; i < len; i += 1) {\n currentV = path.v[i];\n currentO = path.o[i];\n currentI = path.i[i];\n\n if (currentV[0] === currentO[0] && currentV[1] === currentO[1] && currentV[0] === currentI[0] && currentV[1] === currentI[1]) {\n if ((i === 0 || i === len - 1) && !path.c) {\n clonedPath.setTripleAt(currentV[0], currentV[1], currentO[0], currentO[1], currentI[0], currentI[1], index);\n /* clonedPath.v[index] = currentV;\r\n clonedPath.o[index] = currentO;\r\n clonedPath.i[index] = currentI; */\n\n index += 1;\n } else {\n if (i === 0) {\n closerV = path.v[len - 1];\n } else {\n closerV = path.v[i - 1];\n }\n\n distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\n newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\n iX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\n vX = iX;\n iY = currentV[1] - (currentV[1] - closerV[1]) * newPosPerc;\n vY = iY;\n oX = vX - (vX - currentV[0]) * roundCorner;\n oY = vY - (vY - currentV[1]) * roundCorner;\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\n index += 1;\n\n if (i === len - 1) {\n closerV = path.v[0];\n } else {\n closerV = path.v[i + 1];\n }\n\n distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\n newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\n oX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\n vX = oX;\n oY = currentV[1] + (closerV[1] - currentV[1]) * newPosPerc;\n vY = oY;\n iX = vX - (vX - currentV[0]) * roundCorner;\n iY = vY - (vY - currentV[1]) * roundCorner;\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\n index += 1;\n }\n } else {\n clonedPath.setTripleAt(path.v[i][0], path.v[i][1], path.o[i][0], path.o[i][1], path.i[i][0], path.i[i][1], index);\n index += 1;\n }\n }\n\n return clonedPath;\n };\n\n RoundCornersModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var rd = this.rd.v;\n\n if (rd !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], rd));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n function getFontProperties(fontData) {\n var styles = fontData.fStyle ? fontData.fStyle.split(' ') : [];\n var fWeight = 'normal';\n var fStyle = 'normal';\n var len = styles.length;\n var styleName;\n\n for (var i = 0; i < len; i += 1) {\n styleName = styles[i].toLowerCase();\n\n switch (styleName) {\n case 'italic':\n fStyle = 'italic';\n break;\n\n case 'bold':\n fWeight = '700';\n break;\n\n case 'black':\n fWeight = '900';\n break;\n\n case 'medium':\n fWeight = '500';\n break;\n\n case 'regular':\n case 'normal':\n fWeight = '400';\n break;\n\n case 'light':\n case 'thin':\n fWeight = '200';\n break;\n\n default:\n break;\n }\n }\n\n return {\n style: fStyle,\n weight: fontData.fWeight || fWeight\n };\n }\n\n var FontManager = function () {\n var maxWaitingTime = 5000;\n var emptyChar = {\n w: 0,\n size: 0,\n shapes: [],\n data: {\n shapes: []\n }\n };\n var combinedCharacters = []; // Hindi characters\n\n combinedCharacters = combinedCharacters.concat([2304, 2305, 2306, 2307, 2362, 2363, 2364, 2364, 2366, 2367, 2368, 2369, 2370, 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2381, 2382, 2383, 2387, 2388, 2389, 2390, 2391, 2402, 2403]);\n var surrogateModifiers = ['d83cdffb', 'd83cdffc', 'd83cdffd', 'd83cdffe', 'd83cdfff'];\n var zeroWidthJoiner = [65039, 8205];\n\n function trimFontOptions(font) {\n var familyArray = font.split(',');\n var i;\n var len = familyArray.length;\n var enabledFamilies = [];\n\n for (i = 0; i < len; i += 1) {\n if (familyArray[i] !== 'sans-serif' && familyArray[i] !== 'monospace') {\n enabledFamilies.push(familyArray[i]);\n }\n }\n\n return enabledFamilies.join(',');\n }\n\n function setUpNode(font, family) {\n var parentNode = createTag('span'); // Node is invisible to screen readers.\n\n parentNode.setAttribute('aria-hidden', true);\n parentNode.style.fontFamily = family;\n var node = createTag('span'); // Characters that vary significantly among different fonts\n\n node.innerText = 'giItT1WQy@!-/#'; // Visible - so we can measure it - but not on the screen\n\n parentNode.style.position = 'absolute';\n parentNode.style.left = '-10000px';\n parentNode.style.top = '-10000px'; // Large font size makes even subtle changes obvious\n\n parentNode.style.fontSize = '300px'; // Reset any font properties\n\n parentNode.style.fontVariant = 'normal';\n parentNode.style.fontStyle = 'normal';\n parentNode.style.fontWeight = 'normal';\n parentNode.style.letterSpacing = '0';\n parentNode.appendChild(node);\n document.body.appendChild(parentNode); // Remember width with no applied web font\n\n var width = node.offsetWidth;\n node.style.fontFamily = trimFontOptions(font) + ', ' + family;\n return {\n node: node,\n w: width,\n parent: parentNode\n };\n }\n\n function checkLoadedFonts() {\n var i;\n var len = this.fonts.length;\n var node;\n var w;\n var loadedCount = len;\n\n for (i = 0; i < len; i += 1) {\n if (this.fonts[i].loaded) {\n loadedCount -= 1;\n } else if (this.fonts[i].fOrigin === 'n' || this.fonts[i].origin === 0) {\n this.fonts[i].loaded = true;\n } else {\n node = this.fonts[i].monoCase.node;\n w = this.fonts[i].monoCase.w;\n\n if (node.offsetWidth !== w) {\n loadedCount -= 1;\n this.fonts[i].loaded = true;\n } else {\n node = this.fonts[i].sansCase.node;\n w = this.fonts[i].sansCase.w;\n\n if (node.offsetWidth !== w) {\n loadedCount -= 1;\n this.fonts[i].loaded = true;\n }\n }\n\n if (this.fonts[i].loaded) {\n this.fonts[i].sansCase.parent.parentNode.removeChild(this.fonts[i].sansCase.parent);\n this.fonts[i].monoCase.parent.parentNode.removeChild(this.fonts[i].monoCase.parent);\n }\n }\n }\n\n if (loadedCount !== 0 && Date.now() - this.initTime < maxWaitingTime) {\n setTimeout(this.checkLoadedFontsBinded, 20);\n } else {\n setTimeout(this.setIsLoadedBinded, 10);\n }\n }\n\n function createHelper(def, fontData) {\n var tHelper = createNS('text');\n tHelper.style.fontSize = '100px'; // tHelper.style.fontFamily = fontData.fFamily;\n\n var fontProps = getFontProperties(fontData);\n tHelper.setAttribute('font-family', fontData.fFamily);\n tHelper.setAttribute('font-style', fontProps.style);\n tHelper.setAttribute('font-weight', fontProps.weight);\n tHelper.textContent = '1';\n\n if (fontData.fClass) {\n tHelper.style.fontFamily = 'inherit';\n tHelper.setAttribute('class', fontData.fClass);\n } else {\n tHelper.style.fontFamily = fontData.fFamily;\n }\n\n def.appendChild(tHelper);\n var tCanvasHelper = createTag('canvas').getContext('2d');\n tCanvasHelper.font = fontData.fWeight + ' ' + fontData.fStyle + ' 100px ' + fontData.fFamily; // tCanvasHelper.font = ' 100px '+ fontData.fFamily;\n\n return tHelper;\n }\n\n function addFonts(fontData, defs) {\n if (!fontData) {\n this.isLoaded = true;\n return;\n }\n\n if (this.chars) {\n this.isLoaded = true;\n this.fonts = fontData.list;\n return;\n }\n\n var fontArr = fontData.list;\n var i;\n var len = fontArr.length;\n var _pendingFonts = len;\n\n for (i = 0; i < len; i += 1) {\n var shouldLoadFont = true;\n var loadedSelector;\n var j;\n fontArr[i].loaded = false;\n fontArr[i].monoCase = setUpNode(fontArr[i].fFamily, 'monospace');\n fontArr[i].sansCase = setUpNode(fontArr[i].fFamily, 'sans-serif');\n\n if (!fontArr[i].fPath) {\n fontArr[i].loaded = true;\n _pendingFonts -= 1;\n } else if (fontArr[i].fOrigin === 'p' || fontArr[i].origin === 3) {\n loadedSelector = document.querySelectorAll('style[f-forigin=\"p\"][f-family=\"' + fontArr[i].fFamily + '\"], style[f-origin=\"3\"][f-family=\"' + fontArr[i].fFamily + '\"]');\n\n if (loadedSelector.length > 0) {\n shouldLoadFont = false;\n }\n\n if (shouldLoadFont) {\n var s = createTag('style');\n s.setAttribute('f-forigin', fontArr[i].fOrigin);\n s.setAttribute('f-origin', fontArr[i].origin);\n s.setAttribute('f-family', fontArr[i].fFamily);\n s.type = 'text/css';\n s.innerText = '@font-face {font-family: ' + fontArr[i].fFamily + \"; font-style: normal; src: url('\" + fontArr[i].fPath + \"');}\";\n defs.appendChild(s);\n }\n } else if (fontArr[i].fOrigin === 'g' || fontArr[i].origin === 1) {\n loadedSelector = document.querySelectorAll('link[f-forigin=\"g\"], link[f-origin=\"1\"]');\n\n for (j = 0; j < loadedSelector.length; j += 1) {\n if (loadedSelector[j].href.indexOf(fontArr[i].fPath) !== -1) {\n // Font is already loaded\n shouldLoadFont = false;\n }\n }\n\n if (shouldLoadFont) {\n var l = createTag('link');\n l.setAttribute('f-forigin', fontArr[i].fOrigin);\n l.setAttribute('f-origin', fontArr[i].origin);\n l.type = 'text/css';\n l.rel = 'stylesheet';\n l.href = fontArr[i].fPath;\n document.body.appendChild(l);\n }\n } else if (fontArr[i].fOrigin === 't' || fontArr[i].origin === 2) {\n loadedSelector = document.querySelectorAll('script[f-forigin=\"t\"], script[f-origin=\"2\"]');\n\n for (j = 0; j < loadedSelector.length; j += 1) {\n if (fontArr[i].fPath === loadedSelector[j].src) {\n // Font is already loaded\n shouldLoadFont = false;\n }\n }\n\n if (shouldLoadFont) {\n var sc = createTag('link');\n sc.setAttribute('f-forigin', fontArr[i].fOrigin);\n sc.setAttribute('f-origin', fontArr[i].origin);\n sc.setAttribute('rel', 'stylesheet');\n sc.setAttribute('href', fontArr[i].fPath);\n defs.appendChild(sc);\n }\n }\n\n fontArr[i].helper = createHelper(defs, fontArr[i]);\n fontArr[i].cache = {};\n this.fonts.push(fontArr[i]);\n }\n\n if (_pendingFonts === 0) {\n this.isLoaded = true;\n } else {\n // On some cases even if the font is loaded, it won't load correctly when measuring text on canvas.\n // Adding this timeout seems to fix it\n setTimeout(this.checkLoadedFonts.bind(this), 100);\n }\n }\n\n function addChars(chars) {\n if (!chars) {\n return;\n }\n\n if (!this.chars) {\n this.chars = [];\n }\n\n var i;\n var len = chars.length;\n var j;\n var jLen = this.chars.length;\n var found;\n\n for (i = 0; i < len; i += 1) {\n j = 0;\n found = false;\n\n while (j < jLen) {\n if (this.chars[j].style === chars[i].style && this.chars[j].fFamily === chars[i].fFamily && this.chars[j].ch === chars[i].ch) {\n found = true;\n }\n\n j += 1;\n }\n\n if (!found) {\n this.chars.push(chars[i]);\n jLen += 1;\n }\n }\n }\n\n function getCharData(_char, style, font) {\n var i = 0;\n var len = this.chars.length;\n\n while (i < len) {\n if (this.chars[i].ch === _char && this.chars[i].style === style && this.chars[i].fFamily === font) {\n return this.chars[i];\n }\n\n i += 1;\n }\n\n if ((typeof _char === 'string' && _char.charCodeAt(0) !== 13 || !_char) && console && console.warn // eslint-disable-line no-console\n && !this._warned) {\n this._warned = true;\n console.warn('Missing character from exported characters list: ', _char, style, font); // eslint-disable-line no-console\n }\n\n return emptyChar;\n }\n\n function measureText(_char2, fontName, size) {\n var fontData = this.getFontByName(fontName);\n\n var index = _char2.charCodeAt(0);\n\n if (!fontData.cache[index + 1]) {\n var tHelper = fontData.helper; // Canvas version\n // fontData.cache[index] = tHelper.measureText(char).width / 100;\n // SVG version\n // console.log(tHelper.getBBox().width)\n\n if (_char2 === ' ') {\n tHelper.textContent = '|' + _char2 + '|';\n var doubleSize = tHelper.getComputedTextLength();\n tHelper.textContent = '||';\n var singleSize = tHelper.getComputedTextLength();\n fontData.cache[index + 1] = (doubleSize - singleSize) / 100;\n } else {\n tHelper.textContent = _char2;\n fontData.cache[index + 1] = tHelper.getComputedTextLength() / 100;\n }\n }\n\n return fontData.cache[index + 1] * size;\n }\n\n function getFontByName(name) {\n var i = 0;\n var len = this.fonts.length;\n\n while (i < len) {\n if (this.fonts[i].fName === name) {\n return this.fonts[i];\n }\n\n i += 1;\n }\n\n return this.fonts[0];\n }\n\n function isModifier(firstCharCode, secondCharCode) {\n var sum = firstCharCode.toString(16) + secondCharCode.toString(16);\n return surrogateModifiers.indexOf(sum) !== -1;\n }\n\n function isZeroWidthJoiner(firstCharCode, secondCharCode) {\n if (!secondCharCode) {\n return firstCharCode === zeroWidthJoiner[1];\n }\n\n return firstCharCode === zeroWidthJoiner[0] && secondCharCode === zeroWidthJoiner[1];\n }\n\n function isCombinedCharacter(_char3) {\n return combinedCharacters.indexOf(_char3) !== -1;\n }\n\n function setIsLoaded() {\n this.isLoaded = true;\n }\n\n var Font = function Font() {\n this.fonts = [];\n this.chars = null;\n this.typekitLoaded = 0;\n this.isLoaded = false;\n this._warned = false;\n this.initTime = Date.now();\n this.setIsLoadedBinded = this.setIsLoaded.bind(this);\n this.checkLoadedFontsBinded = this.checkLoadedFonts.bind(this);\n };\n\n Font.isModifier = isModifier;\n Font.isZeroWidthJoiner = isZeroWidthJoiner;\n Font.isCombinedCharacter = isCombinedCharacter;\n var fontPrototype = {\n addChars: addChars,\n addFonts: addFonts,\n getCharData: getCharData,\n getFontByName: getFontByName,\n measureText: measureText,\n checkLoadedFonts: checkLoadedFonts,\n setIsLoaded: setIsLoaded\n };\n Font.prototype = fontPrototype;\n return Font;\n }();\n\n function RenderableElement() {}\n\n RenderableElement.prototype = {\n initRenderable: function initRenderable() {\n // layer's visibility related to inpoint and outpoint. Rename isVisible to isInRange\n this.isInRange = false; // layer's display state\n\n this.hidden = false; // If layer's transparency equals 0, it can be hidden\n\n this.isTransparent = false; // list of animated components\n\n this.renderableComponents = [];\n },\n addRenderableComponent: function addRenderableComponent(component) {\n if (this.renderableComponents.indexOf(component) === -1) {\n this.renderableComponents.push(component);\n }\n },\n removeRenderableComponent: function removeRenderableComponent(component) {\n if (this.renderableComponents.indexOf(component) !== -1) {\n this.renderableComponents.splice(this.renderableComponents.indexOf(component), 1);\n }\n },\n prepareRenderableFrame: function prepareRenderableFrame(num) {\n this.checkLayerLimits(num);\n },\n checkTransparency: function checkTransparency() {\n if (this.finalTransform.mProp.o.v <= 0) {\n if (!this.isTransparent && this.globalData.renderConfig.hideOnTransparent) {\n this.isTransparent = true;\n this.hide();\n }\n } else if (this.isTransparent) {\n this.isTransparent = false;\n this.show();\n }\n },\n\n /**\r\n * @function\r\n * Initializes frame related properties.\r\n *\r\n * @param {number} num\r\n * current frame number in Layer's time\r\n *\r\n */\n checkLayerLimits: function checkLayerLimits(num) {\n if (this.data.ip - this.data.st <= num && this.data.op - this.data.st > num) {\n if (this.isInRange !== true) {\n this.globalData._mdf = true;\n this._mdf = true;\n this.isInRange = true;\n this.show();\n }\n } else if (this.isInRange !== false) {\n this.globalData._mdf = true;\n this.isInRange = false;\n this.hide();\n }\n },\n renderRenderable: function renderRenderable() {\n var i;\n var len = this.renderableComponents.length;\n\n for (i = 0; i < len; i += 1) {\n this.renderableComponents[i].renderFrame(this._isFirstFrame);\n }\n /* this.maskManager.renderFrame(this.finalTransform.mat);\r\n this.renderableEffectsManager.renderFrame(this._isFirstFrame); */\n\n },\n sourceRectAtTime: function sourceRectAtTime() {\n return {\n top: 0,\n left: 0,\n width: 100,\n height: 100\n };\n },\n getLayerSize: function getLayerSize() {\n if (this.data.ty === 5) {\n return {\n w: this.data.textData.width,\n h: this.data.textData.height\n };\n }\n\n return {\n w: this.data.width,\n h: this.data.height\n };\n }\n };\n\n var MaskManagerInterface = function () {\n function MaskInterface(mask, data) {\n this._mask = mask;\n this._data = data;\n }\n\n Object.defineProperty(MaskInterface.prototype, 'maskPath', {\n get: function get() {\n if (this._mask.prop.k) {\n this._mask.prop.getValue();\n }\n\n return this._mask.prop;\n }\n });\n Object.defineProperty(MaskInterface.prototype, 'maskOpacity', {\n get: function get() {\n if (this._mask.op.k) {\n this._mask.op.getValue();\n }\n\n return this._mask.op.v * 100;\n }\n });\n\n var MaskManager = function MaskManager(maskManager) {\n var _masksInterfaces = createSizedArray(maskManager.viewData.length);\n\n var i;\n var len = maskManager.viewData.length;\n\n for (i = 0; i < len; i += 1) {\n _masksInterfaces[i] = new MaskInterface(maskManager.viewData[i], maskManager.masksProperties[i]);\n }\n\n var maskFunction = function maskFunction(name) {\n i = 0;\n\n while (i < len) {\n if (maskManager.masksProperties[i].nm === name) {\n return _masksInterfaces[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n return maskFunction;\n };\n\n return MaskManager;\n }();\n\n var ExpressionPropertyInterface = function () {\n var defaultUnidimensionalValue = {\n pv: 0,\n v: 0,\n mult: 1\n };\n var defaultMultidimensionalValue = {\n pv: [0, 0, 0],\n v: [0, 0, 0],\n mult: 1\n };\n\n function completeProperty(expressionValue, property, type) {\n Object.defineProperty(expressionValue, 'velocity', {\n get: function get() {\n return property.getVelocityAtTime(property.comp.currentFrame);\n }\n });\n expressionValue.numKeys = property.keyframes ? property.keyframes.length : 0;\n\n expressionValue.key = function (pos) {\n if (!expressionValue.numKeys) {\n return 0;\n }\n\n var value = '';\n\n if ('s' in property.keyframes[pos - 1]) {\n value = property.keyframes[pos - 1].s;\n } else if ('e' in property.keyframes[pos - 2]) {\n value = property.keyframes[pos - 2].e;\n } else {\n value = property.keyframes[pos - 2].s;\n }\n\n var valueProp = type === 'unidimensional' ? new Number(value) : Object.assign({}, value); // eslint-disable-line no-new-wrappers\n\n valueProp.time = property.keyframes[pos - 1].t / property.elem.comp.globalData.frameRate;\n valueProp.value = type === 'unidimensional' ? value[0] : value;\n return valueProp;\n };\n\n expressionValue.valueAtTime = property.getValueAtTime;\n expressionValue.speedAtTime = property.getSpeedAtTime;\n expressionValue.velocityAtTime = property.getVelocityAtTime;\n expressionValue.propertyGroup = property.propertyGroup;\n }\n\n function UnidimensionalPropertyInterface(property) {\n if (!property || !('pv' in property)) {\n property = defaultUnidimensionalValue;\n }\n\n var mult = 1 / property.mult;\n var val = property.pv * mult;\n var expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\n\n expressionValue.value = val;\n completeProperty(expressionValue, property, 'unidimensional');\n return function () {\n if (property.k) {\n property.getValue();\n }\n\n val = property.v * mult;\n\n if (expressionValue.value !== val) {\n expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\n\n expressionValue.value = val;\n completeProperty(expressionValue, property, 'unidimensional');\n }\n\n return expressionValue;\n };\n }\n\n function MultidimensionalPropertyInterface(property) {\n if (!property || !('pv' in property)) {\n property = defaultMultidimensionalValue;\n }\n\n var mult = 1 / property.mult;\n var len = property.data && property.data.l || property.pv.length;\n var expressionValue = createTypedArray('float32', len);\n var arrValue = createTypedArray('float32', len);\n expressionValue.value = arrValue;\n completeProperty(expressionValue, property, 'multidimensional');\n return function () {\n if (property.k) {\n property.getValue();\n }\n\n for (var i = 0; i < len; i += 1) {\n arrValue[i] = property.v[i] * mult;\n expressionValue[i] = arrValue[i];\n }\n\n return expressionValue;\n };\n } // TODO: try to avoid using this getter\n\n\n function defaultGetter() {\n return defaultUnidimensionalValue;\n }\n\n return function (property) {\n if (!property) {\n return defaultGetter;\n }\n\n if (property.propType === 'unidimensional') {\n return UnidimensionalPropertyInterface(property);\n }\n\n return MultidimensionalPropertyInterface(property);\n };\n }();\n\n var TransformExpressionInterface = function () {\n return function (transform) {\n function _thisFunction(name) {\n switch (name) {\n case 'scale':\n case 'Scale':\n case 'ADBE Scale':\n case 6:\n return _thisFunction.scale;\n\n case 'rotation':\n case 'Rotation':\n case 'ADBE Rotation':\n case 'ADBE Rotate Z':\n case 10:\n return _thisFunction.rotation;\n\n case 'ADBE Rotate X':\n return _thisFunction.xRotation;\n\n case 'ADBE Rotate Y':\n return _thisFunction.yRotation;\n\n case 'position':\n case 'Position':\n case 'ADBE Position':\n case 2:\n return _thisFunction.position;\n\n case 'ADBE Position_0':\n return _thisFunction.xPosition;\n\n case 'ADBE Position_1':\n return _thisFunction.yPosition;\n\n case 'ADBE Position_2':\n return _thisFunction.zPosition;\n\n case 'anchorPoint':\n case 'AnchorPoint':\n case 'Anchor Point':\n case 'ADBE AnchorPoint':\n case 1:\n return _thisFunction.anchorPoint;\n\n case 'opacity':\n case 'Opacity':\n case 11:\n return _thisFunction.opacity;\n\n default:\n return null;\n }\n }\n\n Object.defineProperty(_thisFunction, 'rotation', {\n get: ExpressionPropertyInterface(transform.r || transform.rz)\n });\n Object.defineProperty(_thisFunction, 'zRotation', {\n get: ExpressionPropertyInterface(transform.rz || transform.r)\n });\n Object.defineProperty(_thisFunction, 'xRotation', {\n get: ExpressionPropertyInterface(transform.rx)\n });\n Object.defineProperty(_thisFunction, 'yRotation', {\n get: ExpressionPropertyInterface(transform.ry)\n });\n Object.defineProperty(_thisFunction, 'scale', {\n get: ExpressionPropertyInterface(transform.s)\n });\n\n var _px;\n\n var _py;\n\n var _pz;\n\n var _transformFactory;\n\n if (transform.p) {\n _transformFactory = ExpressionPropertyInterface(transform.p);\n } else {\n _px = ExpressionPropertyInterface(transform.px);\n _py = ExpressionPropertyInterface(transform.py);\n\n if (transform.pz) {\n _pz = ExpressionPropertyInterface(transform.pz);\n }\n }\n\n Object.defineProperty(_thisFunction, 'position', {\n get: function get() {\n if (transform.p) {\n return _transformFactory();\n }\n\n return [_px(), _py(), _pz ? _pz() : 0];\n }\n });\n Object.defineProperty(_thisFunction, 'xPosition', {\n get: ExpressionPropertyInterface(transform.px)\n });\n Object.defineProperty(_thisFunction, 'yPosition', {\n get: ExpressionPropertyInterface(transform.py)\n });\n Object.defineProperty(_thisFunction, 'zPosition', {\n get: ExpressionPropertyInterface(transform.pz)\n });\n Object.defineProperty(_thisFunction, 'anchorPoint', {\n get: ExpressionPropertyInterface(transform.a)\n });\n Object.defineProperty(_thisFunction, 'opacity', {\n get: ExpressionPropertyInterface(transform.o)\n });\n Object.defineProperty(_thisFunction, 'skew', {\n get: ExpressionPropertyInterface(transform.sk)\n });\n Object.defineProperty(_thisFunction, 'skewAxis', {\n get: ExpressionPropertyInterface(transform.sa)\n });\n Object.defineProperty(_thisFunction, 'orientation', {\n get: ExpressionPropertyInterface(transform.or)\n });\n return _thisFunction;\n };\n }();\n\n var LayerExpressionInterface = function () {\n function getMatrix(time) {\n var toWorldMat = new Matrix();\n\n if (time !== undefined) {\n var propMatrix = this._elem.finalTransform.mProp.getValueAtTime(time);\n\n propMatrix.clone(toWorldMat);\n } else {\n var transformMat = this._elem.finalTransform.mProp;\n transformMat.applyToMatrix(toWorldMat);\n }\n\n return toWorldMat;\n }\n\n function toWorldVec(arr, time) {\n var toWorldMat = this.getMatrix(time);\n toWorldMat.props[12] = 0;\n toWorldMat.props[13] = 0;\n toWorldMat.props[14] = 0;\n return this.applyPoint(toWorldMat, arr);\n }\n\n function toWorld(arr, time) {\n var toWorldMat = this.getMatrix(time);\n return this.applyPoint(toWorldMat, arr);\n }\n\n function fromWorldVec(arr, time) {\n var toWorldMat = this.getMatrix(time);\n toWorldMat.props[12] = 0;\n toWorldMat.props[13] = 0;\n toWorldMat.props[14] = 0;\n return this.invertPoint(toWorldMat, arr);\n }\n\n function fromWorld(arr, time) {\n var toWorldMat = this.getMatrix(time);\n return this.invertPoint(toWorldMat, arr);\n }\n\n function applyPoint(matrix, arr) {\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\n }\n }\n\n return matrix.applyToPointArray(arr[0], arr[1], arr[2] || 0);\n }\n\n function invertPoint(matrix, arr) {\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\n }\n }\n\n return matrix.inversePoint(arr);\n }\n\n function fromComp(arr) {\n var toWorldMat = new Matrix();\n toWorldMat.reset();\n\n this._elem.finalTransform.mProp.applyToMatrix(toWorldMat);\n\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(toWorldMat);\n }\n\n return toWorldMat.inversePoint(arr);\n }\n\n return toWorldMat.inversePoint(arr);\n }\n\n function sampleImage() {\n return [1, 1, 1, 1];\n }\n\n return function (elem) {\n var transformInterface;\n\n function _registerMaskInterface(maskManager) {\n _thisLayerFunction.mask = new MaskManagerInterface(maskManager, elem);\n }\n\n function _registerEffectsInterface(effects) {\n _thisLayerFunction.effect = effects;\n }\n\n function _thisLayerFunction(name) {\n switch (name) {\n case 'ADBE Root Vectors Group':\n case 'Contents':\n case 2:\n return _thisLayerFunction.shapeInterface;\n\n case 1:\n case 6:\n case 'Transform':\n case 'transform':\n case 'ADBE Transform Group':\n return transformInterface;\n\n case 4:\n case 'ADBE Effect Parade':\n case 'effects':\n case 'Effects':\n return _thisLayerFunction.effect;\n\n case 'ADBE Text Properties':\n return _thisLayerFunction.textInterface;\n\n default:\n return null;\n }\n }\n\n _thisLayerFunction.getMatrix = getMatrix;\n _thisLayerFunction.invertPoint = invertPoint;\n _thisLayerFunction.applyPoint = applyPoint;\n _thisLayerFunction.toWorld = toWorld;\n _thisLayerFunction.toWorldVec = toWorldVec;\n _thisLayerFunction.fromWorld = fromWorld;\n _thisLayerFunction.fromWorldVec = fromWorldVec;\n _thisLayerFunction.toComp = toWorld;\n _thisLayerFunction.fromComp = fromComp;\n _thisLayerFunction.sampleImage = sampleImage;\n _thisLayerFunction.sourceRectAtTime = elem.sourceRectAtTime.bind(elem);\n _thisLayerFunction._elem = elem;\n transformInterface = TransformExpressionInterface(elem.finalTransform.mProp);\n var anchorPointDescriptor = getDescriptor(transformInterface, 'anchorPoint');\n Object.defineProperties(_thisLayerFunction, {\n hasParent: {\n get: function get() {\n return elem.hierarchy.length;\n }\n },\n parent: {\n get: function get() {\n return elem.hierarchy[0].layerInterface;\n }\n },\n rotation: getDescriptor(transformInterface, 'rotation'),\n scale: getDescriptor(transformInterface, 'scale'),\n position: getDescriptor(transformInterface, 'position'),\n opacity: getDescriptor(transformInterface, 'opacity'),\n anchorPoint: anchorPointDescriptor,\n anchor_point: anchorPointDescriptor,\n transform: {\n get: function get() {\n return transformInterface;\n }\n },\n active: {\n get: function get() {\n return elem.isInRange;\n }\n }\n });\n _thisLayerFunction.startTime = elem.data.st;\n _thisLayerFunction.index = elem.data.ind;\n _thisLayerFunction.source = elem.data.refId;\n _thisLayerFunction.height = elem.data.ty === 0 ? elem.data.h : 100;\n _thisLayerFunction.width = elem.data.ty === 0 ? elem.data.w : 100;\n _thisLayerFunction.inPoint = elem.data.ip / elem.comp.globalData.frameRate;\n _thisLayerFunction.outPoint = elem.data.op / elem.comp.globalData.frameRate;\n _thisLayerFunction._name = elem.data.nm;\n _thisLayerFunction.registerMaskInterface = _registerMaskInterface;\n _thisLayerFunction.registerEffectsInterface = _registerEffectsInterface;\n return _thisLayerFunction;\n };\n }();\n\n var propertyGroupFactory = function () {\n return function (interfaceFunction, parentPropertyGroup) {\n return function (val) {\n val = val === undefined ? 1 : val;\n\n if (val <= 0) {\n return interfaceFunction;\n }\n\n return parentPropertyGroup(val - 1);\n };\n };\n }();\n\n var PropertyInterface = function () {\n return function (propertyName, propertyGroup) {\n var interfaceFunction = {\n _name: propertyName\n };\n\n function _propertyGroup(val) {\n val = val === undefined ? 1 : val;\n\n if (val <= 0) {\n return interfaceFunction;\n }\n\n return propertyGroup(val - 1);\n }\n\n return _propertyGroup;\n };\n }();\n\n var EffectsExpressionInterface = function () {\n var ob = {\n createEffectsInterface: createEffectsInterface\n };\n\n function createEffectsInterface(elem, propertyGroup) {\n if (elem.effectsManager) {\n var effectElements = [];\n var effectsData = elem.data.ef;\n var i;\n var len = elem.effectsManager.effectElements.length;\n\n for (i = 0; i < len; i += 1) {\n effectElements.push(createGroupInterface(effectsData[i], elem.effectsManager.effectElements[i], propertyGroup, elem));\n }\n\n var effects = elem.data.ef || [];\n\n var groupInterface = function groupInterface(name) {\n i = 0;\n len = effects.length;\n\n while (i < len) {\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\n return effectElements[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n Object.defineProperty(groupInterface, 'numProperties', {\n get: function get() {\n return effects.length;\n }\n });\n return groupInterface;\n }\n\n return null;\n }\n\n function createGroupInterface(data, elements, propertyGroup, elem) {\n function groupInterface(name) {\n var effects = data.ef;\n var i = 0;\n var len = effects.length;\n\n while (i < len) {\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\n if (effects[i].ty === 5) {\n return effectElements[i];\n }\n\n return effectElements[i]();\n }\n\n i += 1;\n }\n\n throw new Error();\n }\n\n var _propertyGroup = propertyGroupFactory(groupInterface, propertyGroup);\n\n var effectElements = [];\n var i;\n var len = data.ef.length;\n\n for (i = 0; i < len; i += 1) {\n if (data.ef[i].ty === 5) {\n effectElements.push(createGroupInterface(data.ef[i], elements.effectElements[i], elements.effectElements[i].propertyGroup, elem));\n } else {\n effectElements.push(createValueInterface(elements.effectElements[i], data.ef[i].ty, elem, _propertyGroup));\n }\n }\n\n if (data.mn === 'ADBE Color Control') {\n Object.defineProperty(groupInterface, 'color', {\n get: function get() {\n return effectElements[0]();\n }\n });\n }\n\n Object.defineProperties(groupInterface, {\n numProperties: {\n get: function get() {\n return data.np;\n }\n },\n _name: {\n value: data.nm\n },\n propertyGroup: {\n value: _propertyGroup\n }\n });\n groupInterface.enabled = data.en !== 0;\n groupInterface.active = groupInterface.enabled;\n return groupInterface;\n }\n\n function createValueInterface(element, type, elem, propertyGroup) {\n var expressionProperty = ExpressionPropertyInterface(element.p);\n\n function interfaceFunction() {\n if (type === 10) {\n return elem.comp.compInterface(element.p.v);\n }\n\n return expressionProperty();\n }\n\n if (element.p.setGroupProperty) {\n element.p.setGroupProperty(PropertyInterface('', propertyGroup));\n }\n\n return interfaceFunction;\n }\n\n return ob;\n }();\n\n var CompExpressionInterface = function () {\n return function (comp) {\n function _thisLayerFunction(name) {\n var i = 0;\n var len = comp.layers.length;\n\n while (i < len) {\n if (comp.layers[i].nm === name || comp.layers[i].ind === name) {\n return comp.elements[i].layerInterface;\n }\n\n i += 1;\n }\n\n return null; // return {active:false};\n }\n\n Object.defineProperty(_thisLayerFunction, '_name', {\n value: comp.data.nm\n });\n _thisLayerFunction.layer = _thisLayerFunction;\n _thisLayerFunction.pixelAspect = 1;\n _thisLayerFunction.height = comp.data.h || comp.globalData.compSize.h;\n _thisLayerFunction.width = comp.data.w || comp.globalData.compSize.w;\n _thisLayerFunction.pixelAspect = 1;\n _thisLayerFunction.frameDuration = 1 / comp.globalData.frameRate;\n _thisLayerFunction.displayStartTime = 0;\n _thisLayerFunction.numLayers = comp.layers.length;\n return _thisLayerFunction;\n };\n }();\n\n var ShapePathInterface = function () {\n return function pathInterfaceFactory(shape, view, propertyGroup) {\n var prop = view.sh;\n\n function interfaceFunction(val) {\n if (val === 'Shape' || val === 'shape' || val === 'Path' || val === 'path' || val === 'ADBE Vector Shape' || val === 2) {\n return interfaceFunction.path;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n prop.setGroupProperty(PropertyInterface('Path', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n path: {\n get: function get() {\n if (prop.k) {\n prop.getValue();\n }\n\n return prop;\n }\n },\n shape: {\n get: function get() {\n if (prop.k) {\n prop.getValue();\n }\n\n return prop;\n }\n },\n _name: {\n value: shape.nm\n },\n ix: {\n value: shape.ix\n },\n propertyIndex: {\n value: shape.ix\n },\n mn: {\n value: shape.mn\n },\n propertyGroup: {\n value: propertyGroup\n }\n });\n return interfaceFunction;\n };\n }();\n\n var ShapeExpressionInterface = function () {\n function iterateElements(shapes, view, propertyGroup) {\n var arr = [];\n var i;\n var len = shapes ? shapes.length : 0;\n\n for (i = 0; i < len; i += 1) {\n if (shapes[i].ty === 'gr') {\n arr.push(groupInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'fl') {\n arr.push(fillInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'st') {\n arr.push(strokeInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'tm') {\n arr.push(trimInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'tr') {// arr.push(transformInterfaceFactory(shapes[i],view[i],propertyGroup));\n } else if (shapes[i].ty === 'el') {\n arr.push(ellipseInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'sr') {\n arr.push(starInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'sh') {\n arr.push(ShapePathInterface(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'rc') {\n arr.push(rectInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'rd') {\n arr.push(roundedInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'rp') {\n arr.push(repeaterInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'gf') {\n arr.push(gradientFillInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else {\n arr.push(defaultInterfaceFactory(shapes[i], view[i], propertyGroup));\n }\n }\n\n return arr;\n }\n\n function contentsInterfaceFactory(shape, view, propertyGroup) {\n var interfaces;\n\n var interfaceFunction = function _interfaceFunction(value) {\n var i = 0;\n var len = interfaces.length;\n\n while (i < len) {\n if (interfaces[i]._name === value || interfaces[i].mn === value || interfaces[i].propertyIndex === value || interfaces[i].ix === value || interfaces[i].ind === value) {\n return interfaces[i];\n }\n\n i += 1;\n }\n\n if (typeof value === 'number') {\n return interfaces[value - 1];\n }\n\n return null;\n };\n\n interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n interfaces = iterateElements(shape.it, view.it, interfaceFunction.propertyGroup);\n interfaceFunction.numProperties = interfaces.length;\n var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\n interfaceFunction.transform = transformInterface;\n interfaceFunction.propertyIndex = shape.cix;\n interfaceFunction._name = shape.nm;\n return interfaceFunction;\n }\n\n function groupInterfaceFactory(shape, view, propertyGroup) {\n var interfaceFunction = function _interfaceFunction(value) {\n switch (value) {\n case 'ADBE Vectors Group':\n case 'Contents':\n case 2:\n return interfaceFunction.content;\n // Not necessary for now. Keeping them here in case a new case appears\n // case 'ADBE Vector Transform Group':\n // case 3:\n\n default:\n return interfaceFunction.transform;\n }\n };\n\n interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n var content = contentsInterfaceFactory(shape, view, interfaceFunction.propertyGroup);\n var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\n interfaceFunction.content = content;\n interfaceFunction.transform = transformInterface;\n Object.defineProperty(interfaceFunction, '_name', {\n get: function get() {\n return shape.nm;\n }\n }); // interfaceFunction.content = interfaceFunction;\n\n interfaceFunction.numProperties = shape.np;\n interfaceFunction.propertyIndex = shape.ix;\n interfaceFunction.nm = shape.nm;\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function fillInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === 'Color' || val === 'color') {\n return interfaceFunction.color;\n }\n\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n\n return null;\n }\n\n Object.defineProperties(interfaceFunction, {\n color: {\n get: ExpressionPropertyInterface(view.c)\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o)\n },\n _name: {\n value: shape.nm\n },\n mn: {\n value: shape.mn\n }\n });\n view.c.setGroupProperty(PropertyInterface('Color', propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\n return interfaceFunction;\n }\n\n function gradientFillInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === 'Start Point' || val === 'start point') {\n return interfaceFunction.startPoint;\n }\n\n if (val === 'End Point' || val === 'end point') {\n return interfaceFunction.endPoint;\n }\n\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n\n return null;\n }\n\n Object.defineProperties(interfaceFunction, {\n startPoint: {\n get: ExpressionPropertyInterface(view.s)\n },\n endPoint: {\n get: ExpressionPropertyInterface(view.e)\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o)\n },\n type: {\n get: function get() {\n return 'a';\n }\n },\n _name: {\n value: shape.nm\n },\n mn: {\n value: shape.mn\n }\n });\n view.s.setGroupProperty(PropertyInterface('Start Point', propertyGroup));\n view.e.setGroupProperty(PropertyInterface('End Point', propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\n return interfaceFunction;\n }\n\n function defaultInterfaceFactory() {\n function interfaceFunction() {\n return null;\n }\n\n return interfaceFunction;\n }\n\n function strokeInterfaceFactory(shape, view, propertyGroup) {\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var _dashPropertyGroup = propertyGroupFactory(dashOb, _propertyGroup);\n\n function addPropertyToDashOb(i) {\n Object.defineProperty(dashOb, shape.d[i].nm, {\n get: ExpressionPropertyInterface(view.d.dataProps[i].p)\n });\n }\n\n var i;\n var len = shape.d ? shape.d.length : 0;\n var dashOb = {};\n\n for (i = 0; i < len; i += 1) {\n addPropertyToDashOb(i);\n view.d.dataProps[i].p.setGroupProperty(_dashPropertyGroup);\n }\n\n function interfaceFunction(val) {\n if (val === 'Color' || val === 'color') {\n return interfaceFunction.color;\n }\n\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n\n if (val === 'Stroke Width' || val === 'stroke width') {\n return interfaceFunction.strokeWidth;\n }\n\n return null;\n }\n\n Object.defineProperties(interfaceFunction, {\n color: {\n get: ExpressionPropertyInterface(view.c)\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o)\n },\n strokeWidth: {\n get: ExpressionPropertyInterface(view.w)\n },\n dash: {\n get: function get() {\n return dashOb;\n }\n },\n _name: {\n value: shape.nm\n },\n mn: {\n value: shape.mn\n }\n });\n view.c.setGroupProperty(PropertyInterface('Color', _propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n view.w.setGroupProperty(PropertyInterface('Stroke Width', _propertyGroup));\n return interfaceFunction;\n }\n\n function trimInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === shape.e.ix || val === 'End' || val === 'end') {\n return interfaceFunction.end;\n }\n\n if (val === shape.s.ix) {\n return interfaceFunction.start;\n }\n\n if (val === shape.o.ix) {\n return interfaceFunction.offset;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n interfaceFunction.propertyIndex = shape.ix;\n view.s.setGroupProperty(PropertyInterface('Start', _propertyGroup));\n view.e.setGroupProperty(PropertyInterface('End', _propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\n interfaceFunction.propertyIndex = shape.ix;\n interfaceFunction.propertyGroup = propertyGroup;\n Object.defineProperties(interfaceFunction, {\n start: {\n get: ExpressionPropertyInterface(view.s)\n },\n end: {\n get: ExpressionPropertyInterface(view.e)\n },\n offset: {\n get: ExpressionPropertyInterface(view.o)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function transformInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.a.ix === value || value === 'Anchor Point') {\n return interfaceFunction.anchorPoint;\n }\n\n if (shape.o.ix === value || value === 'Opacity') {\n return interfaceFunction.opacity;\n }\n\n if (shape.p.ix === value || value === 'Position') {\n return interfaceFunction.position;\n }\n\n if (shape.r.ix === value || value === 'Rotation' || value === 'ADBE Vector Rotation') {\n return interfaceFunction.rotation;\n }\n\n if (shape.s.ix === value || value === 'Scale') {\n return interfaceFunction.scale;\n }\n\n if (shape.sk && shape.sk.ix === value || value === 'Skew') {\n return interfaceFunction.skew;\n }\n\n if (shape.sa && shape.sa.ix === value || value === 'Skew Axis') {\n return interfaceFunction.skewAxis;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n view.transform.mProps.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n view.transform.mProps.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n view.transform.mProps.a.setGroupProperty(PropertyInterface('Anchor Point', _propertyGroup));\n view.transform.mProps.s.setGroupProperty(PropertyInterface('Scale', _propertyGroup));\n view.transform.mProps.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n\n if (view.transform.mProps.sk) {\n view.transform.mProps.sk.setGroupProperty(PropertyInterface('Skew', _propertyGroup));\n view.transform.mProps.sa.setGroupProperty(PropertyInterface('Skew Angle', _propertyGroup));\n }\n\n view.transform.op.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n opacity: {\n get: ExpressionPropertyInterface(view.transform.mProps.o)\n },\n position: {\n get: ExpressionPropertyInterface(view.transform.mProps.p)\n },\n anchorPoint: {\n get: ExpressionPropertyInterface(view.transform.mProps.a)\n },\n scale: {\n get: ExpressionPropertyInterface(view.transform.mProps.s)\n },\n rotation: {\n get: ExpressionPropertyInterface(view.transform.mProps.r)\n },\n skew: {\n get: ExpressionPropertyInterface(view.transform.mProps.sk)\n },\n skewAxis: {\n get: ExpressionPropertyInterface(view.transform.mProps.sa)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.ty = 'tr';\n interfaceFunction.mn = shape.mn;\n interfaceFunction.propertyGroup = propertyGroup;\n return interfaceFunction;\n }\n\n function ellipseInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n\n if (shape.s.ix === value) {\n return interfaceFunction.size;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n interfaceFunction.propertyIndex = shape.ix;\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n size: {\n get: ExpressionPropertyInterface(prop.s)\n },\n position: {\n get: ExpressionPropertyInterface(prop.p)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function starInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n\n if (shape.r.ix === value) {\n return interfaceFunction.rotation;\n }\n\n if (shape.pt.ix === value) {\n return interfaceFunction.points;\n }\n\n if (shape.or.ix === value || value === 'ADBE Vector Star Outer Radius') {\n return interfaceFunction.outerRadius;\n }\n\n if (shape.os.ix === value) {\n return interfaceFunction.outerRoundness;\n }\n\n if (shape.ir && (shape.ir.ix === value || value === 'ADBE Vector Star Inner Radius')) {\n return interfaceFunction.innerRadius;\n }\n\n if (shape.is && shape.is.ix === value) {\n return interfaceFunction.innerRoundness;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n interfaceFunction.propertyIndex = shape.ix;\n prop.or.setGroupProperty(PropertyInterface('Outer Radius', _propertyGroup));\n prop.os.setGroupProperty(PropertyInterface('Outer Roundness', _propertyGroup));\n prop.pt.setGroupProperty(PropertyInterface('Points', _propertyGroup));\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n\n if (shape.ir) {\n prop.ir.setGroupProperty(PropertyInterface('Inner Radius', _propertyGroup));\n prop.is.setGroupProperty(PropertyInterface('Inner Roundness', _propertyGroup));\n }\n\n Object.defineProperties(interfaceFunction, {\n position: {\n get: ExpressionPropertyInterface(prop.p)\n },\n rotation: {\n get: ExpressionPropertyInterface(prop.r)\n },\n points: {\n get: ExpressionPropertyInterface(prop.pt)\n },\n outerRadius: {\n get: ExpressionPropertyInterface(prop.or)\n },\n outerRoundness: {\n get: ExpressionPropertyInterface(prop.os)\n },\n innerRadius: {\n get: ExpressionPropertyInterface(prop.ir)\n },\n innerRoundness: {\n get: ExpressionPropertyInterface(prop.is)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function rectInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n\n if (shape.r.ix === value) {\n return interfaceFunction.roundness;\n }\n\n if (shape.s.ix === value || value === 'Size' || value === 'ADBE Vector Rect Size') {\n return interfaceFunction.size;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n interfaceFunction.propertyIndex = shape.ix;\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\n prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n position: {\n get: ExpressionPropertyInterface(prop.p)\n },\n roundness: {\n get: ExpressionPropertyInterface(prop.r)\n },\n size: {\n get: ExpressionPropertyInterface(prop.s)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function roundedInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.r.ix === value || value === 'Round Corners 1') {\n return interfaceFunction.radius;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view;\n interfaceFunction.propertyIndex = shape.ix;\n prop.rd.setGroupProperty(PropertyInterface('Radius', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n radius: {\n get: ExpressionPropertyInterface(prop.rd)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function repeaterInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.c.ix === value || value === 'Copies') {\n return interfaceFunction.copies;\n }\n\n if (shape.o.ix === value || value === 'Offset') {\n return interfaceFunction.offset;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view;\n interfaceFunction.propertyIndex = shape.ix;\n prop.c.setGroupProperty(PropertyInterface('Copies', _propertyGroup));\n prop.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n copies: {\n get: ExpressionPropertyInterface(prop.c)\n },\n offset: {\n get: ExpressionPropertyInterface(prop.o)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n return function (shapes, view, propertyGroup) {\n var interfaces;\n\n function _interfaceFunction(value) {\n if (typeof value === 'number') {\n value = value === undefined ? 1 : value;\n\n if (value === 0) {\n return propertyGroup;\n }\n\n return interfaces[value - 1];\n }\n\n var i = 0;\n var len = interfaces.length;\n\n while (i < len) {\n if (interfaces[i]._name === value) {\n return interfaces[i];\n }\n\n i += 1;\n }\n\n return null;\n }\n\n function parentGroupWrapper() {\n return propertyGroup;\n }\n\n _interfaceFunction.propertyGroup = propertyGroupFactory(_interfaceFunction, parentGroupWrapper);\n interfaces = iterateElements(shapes, view, _interfaceFunction.propertyGroup);\n _interfaceFunction.numProperties = interfaces.length;\n _interfaceFunction._name = 'Contents';\n return _interfaceFunction;\n };\n }();\n\n var TextExpressionInterface = function () {\n return function (elem) {\n var _prevValue;\n\n var _sourceText;\n\n function _thisLayerFunction(name) {\n switch (name) {\n case 'ADBE Text Document':\n return _thisLayerFunction.sourceText;\n\n default:\n return null;\n }\n }\n\n Object.defineProperty(_thisLayerFunction, 'sourceText', {\n get: function get() {\n elem.textProperty.getValue();\n var stringValue = elem.textProperty.currentData.t;\n\n if (stringValue !== _prevValue) {\n elem.textProperty.currentData.t = _prevValue;\n _sourceText = new String(stringValue); // eslint-disable-line no-new-wrappers\n // If stringValue is an empty string, eval returns undefined, so it has to be returned as a String primitive\n\n _sourceText.value = stringValue || new String(stringValue); // eslint-disable-line no-new-wrappers\n }\n\n return _sourceText;\n }\n });\n return _thisLayerFunction;\n };\n }();\n\n var getBlendMode = function () {\n var blendModeEnums = {\n 0: 'source-over',\n 1: 'multiply',\n 2: 'screen',\n 3: 'overlay',\n 4: 'darken',\n 5: 'lighten',\n 6: 'color-dodge',\n 7: 'color-burn',\n 8: 'hard-light',\n 9: 'soft-light',\n 10: 'difference',\n 11: 'exclusion',\n 12: 'hue',\n 13: 'saturation',\n 14: 'color',\n 15: 'luminosity'\n };\n return function (mode) {\n return blendModeEnums[mode] || '';\n };\n }();\n\n function SliderEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function AngleEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function ColorEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\n }\n\n function PointEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\n }\n\n function LayerIndexEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function MaskIndexEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function CheckboxEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function NoValueEffect() {\n this.p = {};\n }\n\n function EffectsManager(data, element) {\n var effects = data.ef || [];\n this.effectElements = [];\n var i;\n var len = effects.length;\n var effectItem;\n\n for (i = 0; i < len; i += 1) {\n effectItem = new GroupEffect(effects[i], element);\n this.effectElements.push(effectItem);\n }\n }\n\n function GroupEffect(data, element) {\n this.init(data, element);\n }\n\n extendPrototype([DynamicPropertyContainer], GroupEffect);\n GroupEffect.prototype.getValue = GroupEffect.prototype.iterateDynamicProperties;\n\n GroupEffect.prototype.init = function (data, element) {\n this.data = data;\n this.effectElements = [];\n this.initDynamicPropertyContainer(element);\n var i;\n var len = this.data.ef.length;\n var eff;\n var effects = this.data.ef;\n\n for (i = 0; i < len; i += 1) {\n eff = null;\n\n switch (effects[i].ty) {\n case 0:\n eff = new SliderEffect(effects[i], element, this);\n break;\n\n case 1:\n eff = new AngleEffect(effects[i], element, this);\n break;\n\n case 2:\n eff = new ColorEffect(effects[i], element, this);\n break;\n\n case 3:\n eff = new PointEffect(effects[i], element, this);\n break;\n\n case 4:\n case 7:\n eff = new CheckboxEffect(effects[i], element, this);\n break;\n\n case 10:\n eff = new LayerIndexEffect(effects[i], element, this);\n break;\n\n case 11:\n eff = new MaskIndexEffect(effects[i], element, this);\n break;\n\n case 5:\n eff = new EffectsManager(effects[i], element, this);\n break;\n // case 6:\n\n default:\n eff = new NoValueEffect(effects[i], element, this);\n break;\n }\n\n if (eff) {\n this.effectElements.push(eff);\n }\n }\n };\n\n function BaseElement() {}\n\n BaseElement.prototype = {\n checkMasks: function checkMasks() {\n if (!this.data.hasMask) {\n return false;\n }\n\n var i = 0;\n var len = this.data.masksProperties.length;\n\n while (i < len) {\n if (this.data.masksProperties[i].mode !== 'n' && this.data.masksProperties[i].cl !== false) {\n return true;\n }\n\n i += 1;\n }\n\n return false;\n },\n initExpressions: function initExpressions() {\n this.layerInterface = LayerExpressionInterface(this);\n\n if (this.data.hasMask && this.maskManager) {\n this.layerInterface.registerMaskInterface(this.maskManager);\n }\n\n var effectsInterface = EffectsExpressionInterface.createEffectsInterface(this, this.layerInterface);\n this.layerInterface.registerEffectsInterface(effectsInterface);\n\n if (this.data.ty === 0 || this.data.xt) {\n this.compInterface = CompExpressionInterface(this);\n } else if (this.data.ty === 4) {\n this.layerInterface.shapeInterface = ShapeExpressionInterface(this.shapesData, this.itemsData, this.layerInterface);\n this.layerInterface.content = this.layerInterface.shapeInterface;\n } else if (this.data.ty === 5) {\n this.layerInterface.textInterface = TextExpressionInterface(this);\n this.layerInterface.text = this.layerInterface.textInterface;\n }\n },\n setBlendMode: function setBlendMode() {\n var blendModeValue = getBlendMode(this.data.bm);\n var elem = this.baseElement || this.layerElement;\n elem.style['mix-blend-mode'] = blendModeValue;\n },\n initBaseData: function initBaseData(data, globalData, comp) {\n this.globalData = globalData;\n this.comp = comp;\n this.data = data;\n this.layerId = createElementID(); // Stretch factor for old animations missing this property.\n\n if (!this.data.sr) {\n this.data.sr = 1;\n } // effects manager\n\n\n this.effectsManager = new EffectsManager(this.data, this, this.dynamicProperties);\n },\n getType: function getType() {\n return this.type;\n },\n sourceRectAtTime: function sourceRectAtTime() {}\n };\n\n /**\r\n * @file\r\n * Handles element's layer frame update.\r\n * Checks layer in point and out point\r\n *\r\n */\n function FrameElement() {}\n\n FrameElement.prototype = {\n /**\r\n * @function\r\n * Initializes frame related properties.\r\n *\r\n */\n initFrame: function initFrame() {\n // set to true when inpoint is rendered\n this._isFirstFrame = false; // list of animated properties\n\n this.dynamicProperties = []; // If layer has been modified in current tick this will be true\n\n this._mdf = false;\n },\n\n /**\r\n * @function\r\n * Calculates all dynamic values\r\n *\r\n * @param {number} num\r\n * current frame number in Layer's time\r\n * @param {boolean} isVisible\r\n * if layers is currently in range\r\n *\r\n */\n prepareProperties: function prepareProperties(num, isVisible) {\n var i;\n var len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n if (isVisible || this._isParent && this.dynamicProperties[i].propType === 'transform') {\n this.dynamicProperties[i].getValue();\n\n if (this.dynamicProperties[i]._mdf) {\n this.globalData._mdf = true;\n this._mdf = true;\n }\n }\n }\n },\n addDynamicProperty: function addDynamicProperty(prop) {\n if (this.dynamicProperties.indexOf(prop) === -1) {\n this.dynamicProperties.push(prop);\n }\n }\n };\n\n function _typeof$2(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$2 = function _typeof(obj) { return typeof obj; }; } else { _typeof$2 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$2(obj); }\n\n var FootageInterface = function () {\n var outlineInterfaceFactory = function outlineInterfaceFactory(elem) {\n var currentPropertyName = '';\n var currentProperty = elem.getFootageData();\n\n function init() {\n currentPropertyName = '';\n currentProperty = elem.getFootageData();\n return searchProperty;\n }\n\n function searchProperty(value) {\n if (currentProperty[value]) {\n currentPropertyName = value;\n currentProperty = currentProperty[value];\n\n if (_typeof$2(currentProperty) === 'object') {\n return searchProperty;\n }\n\n return currentProperty;\n }\n\n var propertyNameIndex = value.indexOf(currentPropertyName);\n\n if (propertyNameIndex !== -1) {\n var index = parseInt(value.substr(propertyNameIndex + currentPropertyName.length), 10);\n currentProperty = currentProperty[index];\n\n if (_typeof$2(currentProperty) === 'object') {\n return searchProperty;\n }\n\n return currentProperty;\n }\n\n return '';\n }\n\n return init;\n };\n\n var dataInterfaceFactory = function dataInterfaceFactory(elem) {\n function interfaceFunction(value) {\n if (value === 'Outline') {\n return interfaceFunction.outlineInterface();\n }\n\n return null;\n }\n\n interfaceFunction._name = 'Outline';\n interfaceFunction.outlineInterface = outlineInterfaceFactory(elem);\n return interfaceFunction;\n };\n\n return function (elem) {\n function _interfaceFunction(value) {\n if (value === 'Data') {\n return _interfaceFunction.dataInterface;\n }\n\n return null;\n }\n\n _interfaceFunction._name = 'Data';\n _interfaceFunction.dataInterface = dataInterfaceFactory(elem);\n return _interfaceFunction;\n };\n }();\n\n function FootageElement(data, globalData, comp) {\n this.initFrame();\n this.initRenderable();\n this.assetData = globalData.getAssetData(data.refId);\n this.footageData = globalData.imageLoader.getAsset(this.assetData);\n this.initBaseData(data, globalData, comp);\n }\n\n FootageElement.prototype.prepareFrame = function () {};\n\n extendPrototype([RenderableElement, BaseElement, FrameElement], FootageElement);\n\n FootageElement.prototype.getBaseElement = function () {\n return null;\n };\n\n FootageElement.prototype.renderFrame = function () {};\n\n FootageElement.prototype.destroy = function () {};\n\n FootageElement.prototype.initExpressions = function () {\n this.layerInterface = FootageInterface(this);\n };\n\n FootageElement.prototype.getFootageData = function () {\n return this.footageData;\n };\n\n function AudioElement(data, globalData, comp) {\n this.initFrame();\n this.initRenderable();\n this.assetData = globalData.getAssetData(data.refId);\n this.initBaseData(data, globalData, comp);\n this._isPlaying = false;\n this._canPlay = false;\n var assetPath = this.globalData.getAssetsPath(this.assetData);\n this.audio = this.globalData.audioController.createAudio(assetPath);\n this._currentTime = 0;\n this.globalData.audioController.addAudio(this);\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n }\n\n AudioElement.prototype.prepareFrame = function (num) {\n this.prepareRenderableFrame(num, true);\n this.prepareProperties(num, true);\n\n if (!this.tm._placeholder) {\n var timeRemapped = this.tm.v;\n this._currentTime = timeRemapped;\n } else {\n this._currentTime = num / this.data.sr;\n }\n };\n\n extendPrototype([RenderableElement, BaseElement, FrameElement], AudioElement);\n\n AudioElement.prototype.renderFrame = function () {\n if (this.isInRange && this._canPlay) {\n if (!this._isPlaying) {\n this.audio.play();\n this.audio.seek(this._currentTime / this.globalData.frameRate);\n this._isPlaying = true;\n } else if (!this.audio.playing() || Math.abs(this._currentTime / this.globalData.frameRate - this.audio.seek()) > 0.1) {\n this.audio.seek(this._currentTime / this.globalData.frameRate);\n }\n }\n };\n\n AudioElement.prototype.show = function () {// this.audio.play()\n };\n\n AudioElement.prototype.hide = function () {\n this.audio.pause();\n this._isPlaying = false;\n };\n\n AudioElement.prototype.pause = function () {\n this.audio.pause();\n this._isPlaying = false;\n this._canPlay = false;\n };\n\n AudioElement.prototype.resume = function () {\n this._canPlay = true;\n };\n\n AudioElement.prototype.setRate = function (rateValue) {\n this.audio.rate(rateValue);\n };\n\n AudioElement.prototype.volume = function (volumeValue) {\n this.audio.volume(volumeValue);\n };\n\n AudioElement.prototype.getBaseElement = function () {\n return null;\n };\n\n AudioElement.prototype.destroy = function () {};\n\n AudioElement.prototype.sourceRectAtTime = function () {};\n\n AudioElement.prototype.initExpressions = function () {};\n\n function BaseRenderer() {}\n\n BaseRenderer.prototype.checkLayers = function (num) {\n var i;\n var len = this.layers.length;\n var data;\n this.completeLayers = true;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (!this.elements[i]) {\n data = this.layers[i];\n\n if (data.ip - data.st <= num - this.layers[i].st && data.op - data.st > num - this.layers[i].st) {\n this.buildItem(i);\n }\n }\n\n this.completeLayers = this.elements[i] ? this.completeLayers : false;\n }\n\n this.checkPendingElements();\n };\n\n BaseRenderer.prototype.createItem = function (layer) {\n switch (layer.ty) {\n case 2:\n return this.createImage(layer);\n\n case 0:\n return this.createComp(layer);\n\n case 1:\n return this.createSolid(layer);\n\n case 3:\n return this.createNull(layer);\n\n case 4:\n return this.createShape(layer);\n\n case 5:\n return this.createText(layer);\n\n case 6:\n return this.createAudio(layer);\n\n case 13:\n return this.createCamera(layer);\n\n case 15:\n return this.createFootage(layer);\n\n default:\n return this.createNull(layer);\n }\n };\n\n BaseRenderer.prototype.createCamera = function () {\n throw new Error('You\\'re using a 3d camera. Try the html renderer.');\n };\n\n BaseRenderer.prototype.createAudio = function (data) {\n return new AudioElement(data, this.globalData, this);\n };\n\n BaseRenderer.prototype.createFootage = function (data) {\n return new FootageElement(data, this.globalData, this);\n };\n\n BaseRenderer.prototype.buildAllItems = function () {\n var i;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n this.buildItem(i);\n }\n\n this.checkPendingElements();\n };\n\n BaseRenderer.prototype.includeLayers = function (newLayers) {\n this.completeLayers = false;\n var i;\n var len = newLayers.length;\n var j;\n var jLen = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n j = 0;\n\n while (j < jLen) {\n if (this.layers[j].id === newLayers[i].id) {\n this.layers[j] = newLayers[i];\n break;\n }\n\n j += 1;\n }\n }\n };\n\n BaseRenderer.prototype.setProjectInterface = function (pInterface) {\n this.globalData.projectInterface = pInterface;\n };\n\n BaseRenderer.prototype.initItems = function () {\n if (!this.globalData.progressiveLoad) {\n this.buildAllItems();\n }\n };\n\n BaseRenderer.prototype.buildElementParenting = function (element, parentName, hierarchy) {\n var elements = this.elements;\n var layers = this.layers;\n var i = 0;\n var len = layers.length;\n\n while (i < len) {\n if (layers[i].ind == parentName) {\n // eslint-disable-line eqeqeq\n if (!elements[i] || elements[i] === true) {\n this.buildItem(i);\n this.addPendingElement(element);\n } else {\n hierarchy.push(elements[i]);\n elements[i].setAsParent();\n\n if (layers[i].parent !== undefined) {\n this.buildElementParenting(element, layers[i].parent, hierarchy);\n } else {\n element.setHierarchy(hierarchy);\n }\n }\n }\n\n i += 1;\n }\n };\n\n BaseRenderer.prototype.addPendingElement = function (element) {\n this.pendingElements.push(element);\n };\n\n BaseRenderer.prototype.searchExtraCompositions = function (assets) {\n var i;\n var len = assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (assets[i].xt) {\n var comp = this.createComp(assets[i]);\n comp.initExpressions();\n this.globalData.projectInterface.registerComposition(comp);\n }\n }\n };\n\n BaseRenderer.prototype.setupGlobalData = function (animData, fontsContainer) {\n this.globalData.fontManager = new FontManager();\n this.globalData.fontManager.addChars(animData.chars);\n this.globalData.fontManager.addFonts(animData.fonts, fontsContainer);\n this.globalData.getAssetData = this.animationItem.getAssetData.bind(this.animationItem);\n this.globalData.getAssetsPath = this.animationItem.getAssetsPath.bind(this.animationItem);\n this.globalData.imageLoader = this.animationItem.imagePreloader;\n this.globalData.audioController = this.animationItem.audioController;\n this.globalData.frameId = 0;\n this.globalData.frameRate = animData.fr;\n this.globalData.nm = animData.nm;\n this.globalData.compSize = {\n w: animData.w,\n h: animData.h\n };\n };\n\n function TransformElement() {}\n\n TransformElement.prototype = {\n initTransform: function initTransform() {\n this.finalTransform = {\n mProp: this.data.ks ? TransformPropertyFactory.getTransformProperty(this, this.data.ks, this) : {\n o: 0\n },\n _matMdf: false,\n _opMdf: false,\n mat: new Matrix()\n };\n\n if (this.data.ao) {\n this.finalTransform.mProp.autoOriented = true;\n } // TODO: check TYPE 11: Guided elements\n\n\n if (this.data.ty !== 11) {// this.createElements();\n }\n },\n renderTransform: function renderTransform() {\n this.finalTransform._opMdf = this.finalTransform.mProp.o._mdf || this._isFirstFrame;\n this.finalTransform._matMdf = this.finalTransform.mProp._mdf || this._isFirstFrame;\n\n if (this.hierarchy) {\n var mat;\n var finalMat = this.finalTransform.mat;\n var i = 0;\n var len = this.hierarchy.length; // Checking if any of the transformation matrices in the hierarchy chain has changed.\n\n if (!this.finalTransform._matMdf) {\n while (i < len) {\n if (this.hierarchy[i].finalTransform.mProp._mdf) {\n this.finalTransform._matMdf = true;\n break;\n }\n\n i += 1;\n }\n }\n\n if (this.finalTransform._matMdf) {\n mat = this.finalTransform.mProp.v.props;\n finalMat.cloneFromProps(mat);\n\n for (i = 0; i < len; i += 1) {\n mat = this.hierarchy[i].finalTransform.mProp.v.props;\n finalMat.transform(mat[0], mat[1], mat[2], mat[3], mat[4], mat[5], mat[6], mat[7], mat[8], mat[9], mat[10], mat[11], mat[12], mat[13], mat[14], mat[15]);\n }\n }\n }\n },\n globalToLocal: function globalToLocal(pt) {\n var transforms = [];\n transforms.push(this.finalTransform);\n var flag = true;\n var comp = this.comp;\n\n while (flag) {\n if (comp.finalTransform) {\n if (comp.data.hasMask) {\n transforms.splice(0, 0, comp.finalTransform);\n }\n\n comp = comp.comp;\n } else {\n flag = false;\n }\n }\n\n var i;\n var len = transforms.length;\n var ptNew;\n\n for (i = 0; i < len; i += 1) {\n ptNew = transforms[i].mat.applyToPointArray(0, 0, 0); // ptNew = transforms[i].mat.applyToPointArray(pt[0],pt[1],pt[2]);\n\n pt = [pt[0] - ptNew[0], pt[1] - ptNew[1], 0];\n }\n\n return pt;\n },\n mHelper: new Matrix()\n };\n\n function MaskElement(data, element, globalData) {\n this.data = data;\n this.element = element;\n this.globalData = globalData;\n this.storedData = [];\n this.masksProperties = this.data.masksProperties || [];\n this.maskElement = null;\n var defs = this.globalData.defs;\n var i;\n var len = this.masksProperties ? this.masksProperties.length : 0;\n this.viewData = createSizedArray(len);\n this.solidPath = '';\n var path;\n var properties = this.masksProperties;\n var count = 0;\n var currentMasks = [];\n var j;\n var jLen;\n var layerId = createElementID();\n var rect;\n var expansor;\n var feMorph;\n var x;\n var maskType = 'clipPath';\n var maskRef = 'clip-path';\n\n for (i = 0; i < len; i += 1) {\n if (properties[i].mode !== 'a' && properties[i].mode !== 'n' || properties[i].inv || properties[i].o.k !== 100 || properties[i].o.x) {\n maskType = 'mask';\n maskRef = 'mask';\n }\n\n if ((properties[i].mode === 's' || properties[i].mode === 'i') && count === 0) {\n rect = createNS('rect');\n rect.setAttribute('fill', '#ffffff');\n rect.setAttribute('width', this.element.comp.data.w || 0);\n rect.setAttribute('height', this.element.comp.data.h || 0);\n currentMasks.push(rect);\n } else {\n rect = null;\n }\n\n path = createNS('path');\n\n if (properties[i].mode === 'n') {\n // TODO move this to a factory or to a constructor\n this.viewData[i] = {\n op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\n prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\n elem: path,\n lastPath: ''\n };\n defs.appendChild(path);\n } else {\n count += 1;\n path.setAttribute('fill', properties[i].mode === 's' ? '#000000' : '#ffffff');\n path.setAttribute('clip-rule', 'nonzero');\n var filterID;\n\n if (properties[i].x.k !== 0) {\n maskType = 'mask';\n maskRef = 'mask';\n x = PropertyFactory.getProp(this.element, properties[i].x, 0, null, this.element);\n filterID = createElementID();\n expansor = createNS('filter');\n expansor.setAttribute('id', filterID);\n feMorph = createNS('feMorphology');\n feMorph.setAttribute('operator', 'erode');\n feMorph.setAttribute('in', 'SourceGraphic');\n feMorph.setAttribute('radius', '0');\n expansor.appendChild(feMorph);\n defs.appendChild(expansor);\n path.setAttribute('stroke', properties[i].mode === 's' ? '#000000' : '#ffffff');\n } else {\n feMorph = null;\n x = null;\n } // TODO move this to a factory or to a constructor\n\n\n this.storedData[i] = {\n elem: path,\n x: x,\n expan: feMorph,\n lastPath: '',\n lastOperator: '',\n filterId: filterID,\n lastRadius: 0\n };\n\n if (properties[i].mode === 'i') {\n jLen = currentMasks.length;\n var g = createNS('g');\n\n for (j = 0; j < jLen; j += 1) {\n g.appendChild(currentMasks[j]);\n }\n\n var mask = createNS('mask');\n mask.setAttribute('mask-type', 'alpha');\n mask.setAttribute('id', layerId + '_' + count);\n mask.appendChild(path);\n defs.appendChild(mask);\n g.setAttribute('mask', 'url(' + getLocationHref() + '#' + layerId + '_' + count + ')');\n currentMasks.length = 0;\n currentMasks.push(g);\n } else {\n currentMasks.push(path);\n }\n\n if (properties[i].inv && !this.solidPath) {\n this.solidPath = this.createLayerSolidPath();\n } // TODO move this to a factory or to a constructor\n\n\n this.viewData[i] = {\n elem: path,\n lastPath: '',\n op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\n prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\n invRect: rect\n };\n\n if (!this.viewData[i].prop.k) {\n this.drawPath(properties[i], this.viewData[i].prop.v, this.viewData[i]);\n }\n }\n }\n\n this.maskElement = createNS(maskType);\n len = currentMasks.length;\n\n for (i = 0; i < len; i += 1) {\n this.maskElement.appendChild(currentMasks[i]);\n }\n\n if (count > 0) {\n this.maskElement.setAttribute('id', layerId);\n this.element.maskedElement.setAttribute(maskRef, 'url(' + getLocationHref() + '#' + layerId + ')');\n defs.appendChild(this.maskElement);\n }\n\n if (this.viewData.length) {\n this.element.addRenderableComponent(this);\n }\n }\n\n MaskElement.prototype.getMaskProperty = function (pos) {\n return this.viewData[pos].prop;\n };\n\n MaskElement.prototype.renderFrame = function (isFirstFrame) {\n var finalMat = this.element.finalTransform.mat;\n var i;\n var len = this.masksProperties.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.viewData[i].prop._mdf || isFirstFrame) {\n this.drawPath(this.masksProperties[i], this.viewData[i].prop.v, this.viewData[i]);\n }\n\n if (this.viewData[i].op._mdf || isFirstFrame) {\n this.viewData[i].elem.setAttribute('fill-opacity', this.viewData[i].op.v);\n }\n\n if (this.masksProperties[i].mode !== 'n') {\n if (this.viewData[i].invRect && (this.element.finalTransform.mProp._mdf || isFirstFrame)) {\n this.viewData[i].invRect.setAttribute('transform', finalMat.getInverseMatrix().to2dCSS());\n }\n\n if (this.storedData[i].x && (this.storedData[i].x._mdf || isFirstFrame)) {\n var feMorph = this.storedData[i].expan;\n\n if (this.storedData[i].x.v < 0) {\n if (this.storedData[i].lastOperator !== 'erode') {\n this.storedData[i].lastOperator = 'erode';\n this.storedData[i].elem.setAttribute('filter', 'url(' + getLocationHref() + '#' + this.storedData[i].filterId + ')');\n }\n\n feMorph.setAttribute('radius', -this.storedData[i].x.v);\n } else {\n if (this.storedData[i].lastOperator !== 'dilate') {\n this.storedData[i].lastOperator = 'dilate';\n this.storedData[i].elem.setAttribute('filter', null);\n }\n\n this.storedData[i].elem.setAttribute('stroke-width', this.storedData[i].x.v * 2);\n }\n }\n }\n }\n };\n\n MaskElement.prototype.getMaskelement = function () {\n return this.maskElement;\n };\n\n MaskElement.prototype.createLayerSolidPath = function () {\n var path = 'M0,0 ';\n path += ' h' + this.globalData.compSize.w;\n path += ' v' + this.globalData.compSize.h;\n path += ' h-' + this.globalData.compSize.w;\n path += ' v-' + this.globalData.compSize.h + ' ';\n return path;\n };\n\n MaskElement.prototype.drawPath = function (pathData, pathNodes, viewData) {\n var pathString = ' M' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\n var i;\n var len;\n len = pathNodes._length;\n\n for (i = 1; i < len; i += 1) {\n // pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[i][0]+','+pathNodes.i[i][1] + \" \"+pathNodes.v[i][0]+','+pathNodes.v[i][1];\n pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[i][0] + ',' + pathNodes.i[i][1] + ' ' + pathNodes.v[i][0] + ',' + pathNodes.v[i][1];\n } // pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[0][0]+','+pathNodes.i[0][1] + \" \"+pathNodes.v[0][0]+','+pathNodes.v[0][1];\n\n\n if (pathNodes.c && len > 1) {\n pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[0][0] + ',' + pathNodes.i[0][1] + ' ' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\n } // pathNodes.__renderedString = pathString;\n\n\n if (viewData.lastPath !== pathString) {\n var pathShapeValue = '';\n\n if (viewData.elem) {\n if (pathNodes.c) {\n pathShapeValue = pathData.inv ? this.solidPath + pathString : pathString;\n }\n\n viewData.elem.setAttribute('d', pathShapeValue);\n }\n\n viewData.lastPath = pathString;\n }\n };\n\n MaskElement.prototype.destroy = function () {\n this.element = null;\n this.globalData = null;\n this.maskElement = null;\n this.data = null;\n this.masksProperties = null;\n };\n\n var filtersFactory = function () {\n var ob = {};\n ob.createFilter = createFilter;\n ob.createAlphaToLuminanceFilter = createAlphaToLuminanceFilter;\n\n function createFilter(filId, skipCoordinates) {\n var fil = createNS('filter');\n fil.setAttribute('id', filId);\n\n if (skipCoordinates !== true) {\n fil.setAttribute('filterUnits', 'objectBoundingBox');\n fil.setAttribute('x', '0%');\n fil.setAttribute('y', '0%');\n fil.setAttribute('width', '100%');\n fil.setAttribute('height', '100%');\n }\n\n return fil;\n }\n\n function createAlphaToLuminanceFilter() {\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n feColorMatrix.setAttribute('values', '0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1');\n return feColorMatrix;\n }\n\n return ob;\n }();\n\n var featureSupport = function () {\n var ob = {\n maskType: true\n };\n\n if (/MSIE 10/i.test(navigator.userAgent) || /MSIE 9/i.test(navigator.userAgent) || /rv:11.0/i.test(navigator.userAgent) || /Edge\\/\\d./i.test(navigator.userAgent)) {\n ob.maskType = false;\n }\n\n return ob;\n }();\n\n function SVGTintFilter(filter, filterManager) {\n this.filterManager = filterManager;\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\n feColorMatrix.setAttribute('values', '0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0');\n feColorMatrix.setAttribute('result', 'f1');\n filter.appendChild(feColorMatrix);\n feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\n feColorMatrix.setAttribute('result', 'f2');\n filter.appendChild(feColorMatrix);\n this.matrixFilter = feColorMatrix;\n\n if (filterManager.effectElements[2].p.v !== 100 || filterManager.effectElements[2].p.k) {\n var feMerge = createNS('feMerge');\n filter.appendChild(feMerge);\n var feMergeNode;\n feMergeNode = createNS('feMergeNode');\n feMergeNode.setAttribute('in', 'SourceGraphic');\n feMerge.appendChild(feMergeNode);\n feMergeNode = createNS('feMergeNode');\n feMergeNode.setAttribute('in', 'f2');\n feMerge.appendChild(feMergeNode);\n }\n }\n\n SVGTintFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var colorBlack = this.filterManager.effectElements[0].p.v;\n var colorWhite = this.filterManager.effectElements[1].p.v;\n var opacity = this.filterManager.effectElements[2].p.v / 100;\n this.matrixFilter.setAttribute('values', colorWhite[0] - colorBlack[0] + ' 0 0 0 ' + colorBlack[0] + ' ' + (colorWhite[1] - colorBlack[1]) + ' 0 0 0 ' + colorBlack[1] + ' ' + (colorWhite[2] - colorBlack[2]) + ' 0 0 0 ' + colorBlack[2] + ' 0 0 0 ' + opacity + ' 0');\n }\n };\n\n function SVGFillFilter(filter, filterManager) {\n this.filterManager = filterManager;\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\n filter.appendChild(feColorMatrix);\n this.matrixFilter = feColorMatrix;\n }\n\n SVGFillFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var color = this.filterManager.effectElements[2].p.v;\n var opacity = this.filterManager.effectElements[6].p.v;\n this.matrixFilter.setAttribute('values', '0 0 0 0 ' + color[0] + ' 0 0 0 0 ' + color[1] + ' 0 0 0 0 ' + color[2] + ' 0 0 0 ' + opacity + ' 0');\n }\n };\n\n function SVGStrokeEffect(elem, filterManager) {\n this.initialized = false;\n this.filterManager = filterManager;\n this.elem = elem;\n this.paths = [];\n }\n\n SVGStrokeEffect.prototype.initialize = function () {\n var elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\n var path;\n var groupPath;\n var i;\n var len;\n\n if (this.filterManager.effectElements[1].p.v === 1) {\n len = this.elem.maskManager.masksProperties.length;\n i = 0;\n } else {\n i = this.filterManager.effectElements[0].p.v - 1;\n len = i + 1;\n }\n\n groupPath = createNS('g');\n groupPath.setAttribute('fill', 'none');\n groupPath.setAttribute('stroke-linecap', 'round');\n groupPath.setAttribute('stroke-dashoffset', 1);\n\n for (i; i < len; i += 1) {\n path = createNS('path');\n groupPath.appendChild(path);\n this.paths.push({\n p: path,\n m: i\n });\n }\n\n if (this.filterManager.effectElements[10].p.v === 3) {\n var mask = createNS('mask');\n var id = createElementID();\n mask.setAttribute('id', id);\n mask.setAttribute('mask-type', 'alpha');\n mask.appendChild(groupPath);\n this.elem.globalData.defs.appendChild(mask);\n var g = createNS('g');\n g.setAttribute('mask', 'url(' + getLocationHref() + '#' + id + ')');\n\n while (elemChildren[0]) {\n g.appendChild(elemChildren[0]);\n }\n\n this.elem.layerElement.appendChild(g);\n this.masker = mask;\n groupPath.setAttribute('stroke', '#fff');\n } else if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\n if (this.filterManager.effectElements[10].p.v === 2) {\n elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\n\n while (elemChildren.length) {\n this.elem.layerElement.removeChild(elemChildren[0]);\n }\n }\n\n this.elem.layerElement.appendChild(groupPath);\n this.elem.layerElement.removeAttribute('mask');\n groupPath.setAttribute('stroke', '#fff');\n }\n\n this.initialized = true;\n this.pathMasker = groupPath;\n };\n\n SVGStrokeEffect.prototype.renderFrame = function (forceRender) {\n if (!this.initialized) {\n this.initialize();\n }\n\n var i;\n var len = this.paths.length;\n var mask;\n var path;\n\n for (i = 0; i < len; i += 1) {\n if (this.paths[i].m !== -1) {\n mask = this.elem.maskManager.viewData[this.paths[i].m];\n path = this.paths[i].p;\n\n if (forceRender || this.filterManager._mdf || mask.prop._mdf) {\n path.setAttribute('d', mask.lastPath);\n }\n\n if (forceRender || this.filterManager.effectElements[9].p._mdf || this.filterManager.effectElements[4].p._mdf || this.filterManager.effectElements[7].p._mdf || this.filterManager.effectElements[8].p._mdf || mask.prop._mdf) {\n var dasharrayValue;\n\n if (this.filterManager.effectElements[7].p.v !== 0 || this.filterManager.effectElements[8].p.v !== 100) {\n var s = Math.min(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\n var e = Math.max(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\n var l = path.getTotalLength();\n dasharrayValue = '0 0 0 ' + l * s + ' ';\n var lineLength = l * (e - s);\n var segment = 1 + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\n var units = Math.floor(lineLength / segment);\n var j;\n\n for (j = 0; j < units; j += 1) {\n dasharrayValue += '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01 + ' ';\n }\n\n dasharrayValue += '0 ' + l * 10 + ' 0 0';\n } else {\n dasharrayValue = '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\n }\n\n path.setAttribute('stroke-dasharray', dasharrayValue);\n }\n }\n }\n\n if (forceRender || this.filterManager.effectElements[4].p._mdf) {\n this.pathMasker.setAttribute('stroke-width', this.filterManager.effectElements[4].p.v * 2);\n }\n\n if (forceRender || this.filterManager.effectElements[6].p._mdf) {\n this.pathMasker.setAttribute('opacity', this.filterManager.effectElements[6].p.v);\n }\n\n if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\n if (forceRender || this.filterManager.effectElements[3].p._mdf) {\n var color = this.filterManager.effectElements[3].p.v;\n this.pathMasker.setAttribute('stroke', 'rgb(' + bmFloor(color[0] * 255) + ',' + bmFloor(color[1] * 255) + ',' + bmFloor(color[2] * 255) + ')');\n }\n }\n };\n\n function SVGTritoneFilter(filter, filterManager) {\n this.filterManager = filterManager;\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\n feColorMatrix.setAttribute('values', '0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0');\n feColorMatrix.setAttribute('result', 'f1');\n filter.appendChild(feColorMatrix);\n var feComponentTransfer = createNS('feComponentTransfer');\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n filter.appendChild(feComponentTransfer);\n this.matrixFilter = feComponentTransfer;\n var feFuncR = createNS('feFuncR');\n feFuncR.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFuncR);\n this.feFuncR = feFuncR;\n var feFuncG = createNS('feFuncG');\n feFuncG.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFuncG);\n this.feFuncG = feFuncG;\n var feFuncB = createNS('feFuncB');\n feFuncB.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFuncB);\n this.feFuncB = feFuncB;\n }\n\n SVGTritoneFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var color1 = this.filterManager.effectElements[0].p.v;\n var color2 = this.filterManager.effectElements[1].p.v;\n var color3 = this.filterManager.effectElements[2].p.v;\n var tableR = color3[0] + ' ' + color2[0] + ' ' + color1[0];\n var tableG = color3[1] + ' ' + color2[1] + ' ' + color1[1];\n var tableB = color3[2] + ' ' + color2[2] + ' ' + color1[2];\n this.feFuncR.setAttribute('tableValues', tableR);\n this.feFuncG.setAttribute('tableValues', tableG);\n this.feFuncB.setAttribute('tableValues', tableB); // var opacity = this.filterManager.effectElements[2].p.v/100;\n // this.matrixFilter.setAttribute('values',(colorWhite[0]- colorBlack[0])+' 0 0 0 '+ colorBlack[0] +' '+ (colorWhite[1]- colorBlack[1]) +' 0 0 0 '+ colorBlack[1] +' '+ (colorWhite[2]- colorBlack[2]) +' 0 0 0 '+ colorBlack[2] +' 0 0 0 ' + opacity + ' 0');\n }\n };\n\n function SVGProLevelsFilter(filter, filterManager) {\n this.filterManager = filterManager;\n var effectElements = this.filterManager.effectElements;\n var feComponentTransfer = createNS('feComponentTransfer');\n\n if (effectElements[10].p.k || effectElements[10].p.v !== 0 || effectElements[11].p.k || effectElements[11].p.v !== 1 || effectElements[12].p.k || effectElements[12].p.v !== 1 || effectElements[13].p.k || effectElements[13].p.v !== 0 || effectElements[14].p.k || effectElements[14].p.v !== 1) {\n this.feFuncR = this.createFeFunc('feFuncR', feComponentTransfer);\n }\n\n if (effectElements[17].p.k || effectElements[17].p.v !== 0 || effectElements[18].p.k || effectElements[18].p.v !== 1 || effectElements[19].p.k || effectElements[19].p.v !== 1 || effectElements[20].p.k || effectElements[20].p.v !== 0 || effectElements[21].p.k || effectElements[21].p.v !== 1) {\n this.feFuncG = this.createFeFunc('feFuncG', feComponentTransfer);\n }\n\n if (effectElements[24].p.k || effectElements[24].p.v !== 0 || effectElements[25].p.k || effectElements[25].p.v !== 1 || effectElements[26].p.k || effectElements[26].p.v !== 1 || effectElements[27].p.k || effectElements[27].p.v !== 0 || effectElements[28].p.k || effectElements[28].p.v !== 1) {\n this.feFuncB = this.createFeFunc('feFuncB', feComponentTransfer);\n }\n\n if (effectElements[31].p.k || effectElements[31].p.v !== 0 || effectElements[32].p.k || effectElements[32].p.v !== 1 || effectElements[33].p.k || effectElements[33].p.v !== 1 || effectElements[34].p.k || effectElements[34].p.v !== 0 || effectElements[35].p.k || effectElements[35].p.v !== 1) {\n this.feFuncA = this.createFeFunc('feFuncA', feComponentTransfer);\n }\n\n if (this.feFuncR || this.feFuncG || this.feFuncB || this.feFuncA) {\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n filter.appendChild(feComponentTransfer);\n feComponentTransfer = createNS('feComponentTransfer');\n }\n\n if (effectElements[3].p.k || effectElements[3].p.v !== 0 || effectElements[4].p.k || effectElements[4].p.v !== 1 || effectElements[5].p.k || effectElements[5].p.v !== 1 || effectElements[6].p.k || effectElements[6].p.v !== 0 || effectElements[7].p.k || effectElements[7].p.v !== 1) {\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n filter.appendChild(feComponentTransfer);\n this.feFuncRComposed = this.createFeFunc('feFuncR', feComponentTransfer);\n this.feFuncGComposed = this.createFeFunc('feFuncG', feComponentTransfer);\n this.feFuncBComposed = this.createFeFunc('feFuncB', feComponentTransfer);\n }\n }\n\n SVGProLevelsFilter.prototype.createFeFunc = function (type, feComponentTransfer) {\n var feFunc = createNS(type);\n feFunc.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFunc);\n return feFunc;\n };\n\n SVGProLevelsFilter.prototype.getTableValue = function (inputBlack, inputWhite, gamma, outputBlack, outputWhite) {\n var cnt = 0;\n var segments = 256;\n var perc;\n var min = Math.min(inputBlack, inputWhite);\n var max = Math.max(inputBlack, inputWhite);\n var table = Array.call(null, {\n length: segments\n });\n var colorValue;\n var pos = 0;\n var outputDelta = outputWhite - outputBlack;\n var inputDelta = inputWhite - inputBlack;\n\n while (cnt <= 256) {\n perc = cnt / 256;\n\n if (perc <= min) {\n colorValue = inputDelta < 0 ? outputWhite : outputBlack;\n } else if (perc >= max) {\n colorValue = inputDelta < 0 ? outputBlack : outputWhite;\n } else {\n colorValue = outputBlack + outputDelta * Math.pow((perc - inputBlack) / inputDelta, 1 / gamma);\n }\n\n table[pos] = colorValue;\n pos += 1;\n cnt += 256 / (segments - 1);\n }\n\n return table.join(' ');\n };\n\n SVGProLevelsFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var val;\n var effectElements = this.filterManager.effectElements;\n\n if (this.feFuncRComposed && (forceRender || effectElements[3].p._mdf || effectElements[4].p._mdf || effectElements[5].p._mdf || effectElements[6].p._mdf || effectElements[7].p._mdf)) {\n val = this.getTableValue(effectElements[3].p.v, effectElements[4].p.v, effectElements[5].p.v, effectElements[6].p.v, effectElements[7].p.v);\n this.feFuncRComposed.setAttribute('tableValues', val);\n this.feFuncGComposed.setAttribute('tableValues', val);\n this.feFuncBComposed.setAttribute('tableValues', val);\n }\n\n if (this.feFuncR && (forceRender || effectElements[10].p._mdf || effectElements[11].p._mdf || effectElements[12].p._mdf || effectElements[13].p._mdf || effectElements[14].p._mdf)) {\n val = this.getTableValue(effectElements[10].p.v, effectElements[11].p.v, effectElements[12].p.v, effectElements[13].p.v, effectElements[14].p.v);\n this.feFuncR.setAttribute('tableValues', val);\n }\n\n if (this.feFuncG && (forceRender || effectElements[17].p._mdf || effectElements[18].p._mdf || effectElements[19].p._mdf || effectElements[20].p._mdf || effectElements[21].p._mdf)) {\n val = this.getTableValue(effectElements[17].p.v, effectElements[18].p.v, effectElements[19].p.v, effectElements[20].p.v, effectElements[21].p.v);\n this.feFuncG.setAttribute('tableValues', val);\n }\n\n if (this.feFuncB && (forceRender || effectElements[24].p._mdf || effectElements[25].p._mdf || effectElements[26].p._mdf || effectElements[27].p._mdf || effectElements[28].p._mdf)) {\n val = this.getTableValue(effectElements[24].p.v, effectElements[25].p.v, effectElements[26].p.v, effectElements[27].p.v, effectElements[28].p.v);\n this.feFuncB.setAttribute('tableValues', val);\n }\n\n if (this.feFuncA && (forceRender || effectElements[31].p._mdf || effectElements[32].p._mdf || effectElements[33].p._mdf || effectElements[34].p._mdf || effectElements[35].p._mdf)) {\n val = this.getTableValue(effectElements[31].p.v, effectElements[32].p.v, effectElements[33].p.v, effectElements[34].p.v, effectElements[35].p.v);\n this.feFuncA.setAttribute('tableValues', val);\n }\n }\n };\n\n function SVGDropShadowEffect(filter, filterManager) {\n var filterSize = filterManager.container.globalData.renderConfig.filterSize;\n filter.setAttribute('x', filterSize.x);\n filter.setAttribute('y', filterSize.y);\n filter.setAttribute('width', filterSize.width);\n filter.setAttribute('height', filterSize.height);\n this.filterManager = filterManager;\n var feGaussianBlur = createNS('feGaussianBlur');\n feGaussianBlur.setAttribute('in', 'SourceAlpha');\n feGaussianBlur.setAttribute('result', 'drop_shadow_1');\n feGaussianBlur.setAttribute('stdDeviation', '0');\n this.feGaussianBlur = feGaussianBlur;\n filter.appendChild(feGaussianBlur);\n var feOffset = createNS('feOffset');\n feOffset.setAttribute('dx', '25');\n feOffset.setAttribute('dy', '0');\n feOffset.setAttribute('in', 'drop_shadow_1');\n feOffset.setAttribute('result', 'drop_shadow_2');\n this.feOffset = feOffset;\n filter.appendChild(feOffset);\n var feFlood = createNS('feFlood');\n feFlood.setAttribute('flood-color', '#00ff00');\n feFlood.setAttribute('flood-opacity', '1');\n feFlood.setAttribute('result', 'drop_shadow_3');\n this.feFlood = feFlood;\n filter.appendChild(feFlood);\n var feComposite = createNS('feComposite');\n feComposite.setAttribute('in', 'drop_shadow_3');\n feComposite.setAttribute('in2', 'drop_shadow_2');\n feComposite.setAttribute('operator', 'in');\n feComposite.setAttribute('result', 'drop_shadow_4');\n filter.appendChild(feComposite);\n var feMerge = createNS('feMerge');\n filter.appendChild(feMerge);\n var feMergeNode;\n feMergeNode = createNS('feMergeNode');\n feMerge.appendChild(feMergeNode);\n feMergeNode = createNS('feMergeNode');\n feMergeNode.setAttribute('in', 'SourceGraphic');\n this.feMergeNode = feMergeNode;\n this.feMerge = feMerge;\n this.originalNodeAdded = false;\n feMerge.appendChild(feMergeNode);\n }\n\n SVGDropShadowEffect.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n if (forceRender || this.filterManager.effectElements[4].p._mdf) {\n this.feGaussianBlur.setAttribute('stdDeviation', this.filterManager.effectElements[4].p.v / 4);\n }\n\n if (forceRender || this.filterManager.effectElements[0].p._mdf) {\n var col = this.filterManager.effectElements[0].p.v;\n this.feFlood.setAttribute('flood-color', rgbToHex(Math.round(col[0] * 255), Math.round(col[1] * 255), Math.round(col[2] * 255)));\n }\n\n if (forceRender || this.filterManager.effectElements[1].p._mdf) {\n this.feFlood.setAttribute('flood-opacity', this.filterManager.effectElements[1].p.v / 255);\n }\n\n if (forceRender || this.filterManager.effectElements[2].p._mdf || this.filterManager.effectElements[3].p._mdf) {\n var distance = this.filterManager.effectElements[3].p.v;\n var angle = (this.filterManager.effectElements[2].p.v - 90) * degToRads;\n var x = distance * Math.cos(angle);\n var y = distance * Math.sin(angle);\n this.feOffset.setAttribute('dx', x);\n this.feOffset.setAttribute('dy', y);\n }\n /* if(forceRender || this.filterManager.effectElements[5].p._mdf){\r\n if(this.filterManager.effectElements[5].p.v === 1 && this.originalNodeAdded) {\r\n this.feMerge.removeChild(this.feMergeNode);\r\n this.originalNodeAdded = false;\r\n } else if(this.filterManager.effectElements[5].p.v === 0 && !this.originalNodeAdded) {\r\n this.feMerge.appendChild(this.feMergeNode);\r\n this.originalNodeAdded = true;\r\n }\r\n } */\n\n }\n };\n\n var _svgMatteSymbols = [];\n\n function SVGMatte3Effect(filterElem, filterManager, elem) {\n this.initialized = false;\n this.filterManager = filterManager;\n this.filterElem = filterElem;\n this.elem = elem;\n elem.matteElement = createNS('g');\n elem.matteElement.appendChild(elem.layerElement);\n elem.matteElement.appendChild(elem.transformedElement);\n elem.baseElement = elem.matteElement;\n }\n\n SVGMatte3Effect.prototype.findSymbol = function (mask) {\n var i = 0;\n var len = _svgMatteSymbols.length;\n\n while (i < len) {\n if (_svgMatteSymbols[i] === mask) {\n return _svgMatteSymbols[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n SVGMatte3Effect.prototype.replaceInParent = function (mask, symbolId) {\n var parentNode = mask.layerElement.parentNode;\n\n if (!parentNode) {\n return;\n }\n\n var children = parentNode.children;\n var i = 0;\n var len = children.length;\n\n while (i < len) {\n if (children[i] === mask.layerElement) {\n break;\n }\n\n i += 1;\n }\n\n var nextChild;\n\n if (i <= len - 2) {\n nextChild = children[i + 1];\n }\n\n var useElem = createNS('use');\n useElem.setAttribute('href', '#' + symbolId);\n\n if (nextChild) {\n parentNode.insertBefore(useElem, nextChild);\n } else {\n parentNode.appendChild(useElem);\n }\n };\n\n SVGMatte3Effect.prototype.setElementAsMask = function (elem, mask) {\n if (!this.findSymbol(mask)) {\n var symbolId = createElementID();\n var masker = createNS('mask');\n masker.setAttribute('id', mask.layerId);\n masker.setAttribute('mask-type', 'alpha');\n\n _svgMatteSymbols.push(mask);\n\n var defs = elem.globalData.defs;\n defs.appendChild(masker);\n var symbol = createNS('symbol');\n symbol.setAttribute('id', symbolId);\n this.replaceInParent(mask, symbolId);\n symbol.appendChild(mask.layerElement);\n defs.appendChild(symbol);\n var useElem = createNS('use');\n useElem.setAttribute('href', '#' + symbolId);\n masker.appendChild(useElem);\n mask.data.hd = false;\n mask.show();\n }\n\n elem.setMatte(mask.layerId);\n };\n\n SVGMatte3Effect.prototype.initialize = function () {\n var ind = this.filterManager.effectElements[0].p.v;\n var elements = this.elem.comp.elements;\n var i = 0;\n var len = elements.length;\n\n while (i < len) {\n if (elements[i] && elements[i].data.ind === ind) {\n this.setElementAsMask(this.elem, elements[i]);\n }\n\n i += 1;\n }\n\n this.initialized = true;\n };\n\n SVGMatte3Effect.prototype.renderFrame = function () {\n if (!this.initialized) {\n this.initialize();\n }\n };\n\n function SVGGaussianBlurEffect(filter, filterManager) {\n // Outset the filter region by 100% on all sides to accommodate blur expansion.\n filter.setAttribute('x', '-100%');\n filter.setAttribute('y', '-100%');\n filter.setAttribute('width', '300%');\n filter.setAttribute('height', '300%');\n this.filterManager = filterManager;\n var feGaussianBlur = createNS('feGaussianBlur');\n filter.appendChild(feGaussianBlur);\n this.feGaussianBlur = feGaussianBlur;\n }\n\n SVGGaussianBlurEffect.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n // Empirical value, matching AE's blur appearance.\n var kBlurrinessToSigma = 0.3;\n var sigma = this.filterManager.effectElements[0].p.v * kBlurrinessToSigma; // Dimensions mapping:\n //\n // 1 -> horizontal & vertical\n // 2 -> horizontal only\n // 3 -> vertical only\n //\n\n var dimensions = this.filterManager.effectElements[1].p.v;\n var sigmaX = dimensions == 3 ? 0 : sigma; // eslint-disable-line eqeqeq\n\n var sigmaY = dimensions == 2 ? 0 : sigma; // eslint-disable-line eqeqeq\n\n this.feGaussianBlur.setAttribute('stdDeviation', sigmaX + ' ' + sigmaY); // Repeat edges mapping:\n //\n // 0 -> off -> duplicate\n // 1 -> on -> wrap\n\n var edgeMode = this.filterManager.effectElements[2].p.v == 1 ? 'wrap' : 'duplicate'; // eslint-disable-line eqeqeq\n\n this.feGaussianBlur.setAttribute('edgeMode', edgeMode);\n }\n };\n\n var registeredEffects = {};\n\n function SVGEffects(elem) {\n var i;\n var len = elem.data.ef ? elem.data.ef.length : 0;\n var filId = createElementID();\n var fil = filtersFactory.createFilter(filId, true);\n var count = 0;\n this.filters = [];\n var filterManager;\n\n for (i = 0; i < len; i += 1) {\n filterManager = null;\n var type = elem.data.ef[i].ty;\n\n if (registeredEffects[type]) {\n var Effect = registeredEffects[type].effect;\n filterManager = new Effect(fil, elem.effectsManager.effectElements[i], elem);\n\n if (registeredEffects[type].countsAsEffect) {\n count += 1;\n }\n }\n\n if (elem.data.ef[i].ty === 20) {\n count += 1;\n filterManager = new SVGTintFilter(fil, elem.effectsManager.effectElements[i]);\n } else if (elem.data.ef[i].ty === 21) {\n count += 1;\n filterManager = new SVGFillFilter(fil, elem.effectsManager.effectElements[i]);\n } else if (elem.data.ef[i].ty === 22) {\n filterManager = new SVGStrokeEffect(elem, elem.effectsManager.effectElements[i]);\n } else if (elem.data.ef[i].ty === 23) {\n count += 1;\n filterManager = new SVGTritoneFilter(fil, elem.effectsManager.effectElements[i]);\n } else if (elem.data.ef[i].ty === 24) {\n count += 1;\n filterManager = new SVGProLevelsFilter(fil, elem.effectsManager.effectElements[i]);\n } else if (elem.data.ef[i].ty === 25) {\n count += 1;\n filterManager = new SVGDropShadowEffect(fil, elem.effectsManager.effectElements[i]);\n } else if (elem.data.ef[i].ty === 28) {\n // count += 1;\n filterManager = new SVGMatte3Effect(fil, elem.effectsManager.effectElements[i], elem);\n } else if (elem.data.ef[i].ty === 29) {\n count += 1;\n filterManager = new SVGGaussianBlurEffect(fil, elem.effectsManager.effectElements[i]);\n }\n\n if (filterManager) {\n this.filters.push(filterManager);\n }\n }\n\n if (count) {\n elem.globalData.defs.appendChild(fil);\n elem.layerElement.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n }\n\n if (this.filters.length) {\n elem.addRenderableComponent(this);\n }\n }\n\n SVGEffects.prototype.renderFrame = function (_isFirstFrame) {\n var i;\n var len = this.filters.length;\n\n for (i = 0; i < len; i += 1) {\n this.filters[i].renderFrame(_isFirstFrame);\n }\n };\n\n function registerEffect(id, effect, countsAsEffect) {\n registeredEffects[id] = {\n effect: effect,\n countsAsEffect: countsAsEffect\n };\n }\n\n function SVGBaseElement() {}\n\n SVGBaseElement.prototype = {\n initRendererElement: function initRendererElement() {\n this.layerElement = createNS('g');\n },\n createContainerElements: function createContainerElements() {\n this.matteElement = createNS('g');\n this.transformedElement = this.layerElement;\n this.maskedElement = this.layerElement;\n this._sizeChanged = false;\n var layerElementParent = null; // If this layer acts as a mask for the following layer\n\n var filId;\n var fil;\n var gg;\n\n if (this.data.td) {\n if (this.data.td == 3 || this.data.td == 1) {\n // eslint-disable-line eqeqeq\n var masker = createNS('mask');\n masker.setAttribute('id', this.layerId);\n masker.setAttribute('mask-type', this.data.td == 3 ? 'luminance' : 'alpha'); // eslint-disable-line eqeqeq\n\n masker.appendChild(this.layerElement);\n layerElementParent = masker;\n this.globalData.defs.appendChild(masker); // This is only for IE and Edge when mask if of type alpha\n\n if (!featureSupport.maskType && this.data.td == 1) {\n // eslint-disable-line eqeqeq\n masker.setAttribute('mask-type', 'luminance');\n filId = createElementID();\n fil = filtersFactory.createFilter(filId);\n this.globalData.defs.appendChild(fil);\n fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\n gg = createNS('g');\n gg.appendChild(this.layerElement);\n layerElementParent = gg;\n masker.appendChild(gg);\n gg.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n }\n } else if (this.data.td == 2) {\n // eslint-disable-line eqeqeq\n var maskGroup = createNS('mask');\n maskGroup.setAttribute('id', this.layerId);\n maskGroup.setAttribute('mask-type', 'alpha');\n var maskGrouper = createNS('g');\n maskGroup.appendChild(maskGrouper);\n filId = createElementID();\n fil = filtersFactory.createFilter(filId); /// /\n // This solution doesn't work on Android when meta tag with viewport attribute is set\n\n /* var feColorMatrix = createNS('feColorMatrix');\r\n feColorMatrix.setAttribute('type', 'matrix');\r\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\r\n feColorMatrix.setAttribute('values','1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1');\r\n fil.appendChild(feColorMatrix); */\n /// /\n\n var feCTr = createNS('feComponentTransfer');\n feCTr.setAttribute('in', 'SourceGraphic');\n fil.appendChild(feCTr);\n var feFunc = createNS('feFuncA');\n feFunc.setAttribute('type', 'table');\n feFunc.setAttribute('tableValues', '1.0 0.0');\n feCTr.appendChild(feFunc); /// /\n\n this.globalData.defs.appendChild(fil);\n var alphaRect = createNS('rect');\n alphaRect.setAttribute('width', this.comp.data.w);\n alphaRect.setAttribute('height', this.comp.data.h);\n alphaRect.setAttribute('x', '0');\n alphaRect.setAttribute('y', '0');\n alphaRect.setAttribute('fill', '#ffffff');\n alphaRect.setAttribute('opacity', '0');\n maskGrouper.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n maskGrouper.appendChild(alphaRect);\n maskGrouper.appendChild(this.layerElement);\n layerElementParent = maskGrouper;\n\n if (!featureSupport.maskType) {\n maskGroup.setAttribute('mask-type', 'luminance');\n fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\n gg = createNS('g');\n maskGrouper.appendChild(alphaRect);\n gg.appendChild(this.layerElement);\n layerElementParent = gg;\n maskGrouper.appendChild(gg);\n }\n\n this.globalData.defs.appendChild(maskGroup);\n }\n } else if (this.data.tt) {\n this.matteElement.appendChild(this.layerElement);\n layerElementParent = this.matteElement;\n this.baseElement = this.matteElement;\n } else {\n this.baseElement = this.layerElement;\n }\n\n if (this.data.ln) {\n this.layerElement.setAttribute('id', this.data.ln);\n }\n\n if (this.data.cl) {\n this.layerElement.setAttribute('class', this.data.cl);\n } // Clipping compositions to hide content that exceeds boundaries. If collapsed transformations is on, component should not be clipped\n\n\n if (this.data.ty === 0 && !this.data.hd) {\n var cp = createNS('clipPath');\n var pt = createNS('path');\n pt.setAttribute('d', 'M0,0 L' + this.data.w + ',0 L' + this.data.w + ',' + this.data.h + ' L0,' + this.data.h + 'z');\n var clipId = createElementID();\n cp.setAttribute('id', clipId);\n cp.appendChild(pt);\n this.globalData.defs.appendChild(cp);\n\n if (this.checkMasks()) {\n var cpGroup = createNS('g');\n cpGroup.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + clipId + ')');\n cpGroup.appendChild(this.layerElement);\n this.transformedElement = cpGroup;\n\n if (layerElementParent) {\n layerElementParent.appendChild(this.transformedElement);\n } else {\n this.baseElement = this.transformedElement;\n }\n } else {\n this.layerElement.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + clipId + ')');\n }\n }\n\n if (this.data.bm !== 0) {\n this.setBlendMode();\n }\n },\n renderElement: function renderElement() {\n if (this.finalTransform._matMdf) {\n this.transformedElement.setAttribute('transform', this.finalTransform.mat.to2dCSS());\n }\n\n if (this.finalTransform._opMdf) {\n this.transformedElement.setAttribute('opacity', this.finalTransform.mProp.o.v);\n }\n },\n destroyBaseElement: function destroyBaseElement() {\n this.layerElement = null;\n this.matteElement = null;\n this.maskManager.destroy();\n },\n getBaseElement: function getBaseElement() {\n if (this.data.hd) {\n return null;\n }\n\n return this.baseElement;\n },\n createRenderableComponents: function createRenderableComponents() {\n this.maskManager = new MaskElement(this.data, this, this.globalData);\n this.renderableEffectsManager = new SVGEffects(this);\n },\n setMatte: function setMatte(id) {\n if (!this.matteElement) {\n return;\n }\n\n this.matteElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + id + ')');\n }\n };\n\n /**\r\n * @file\r\n * Handles AE's layer parenting property.\r\n *\r\n */\n function HierarchyElement() {}\n\n HierarchyElement.prototype = {\n /**\r\n * @function\r\n * Initializes hierarchy properties\r\n *\r\n */\n initHierarchy: function initHierarchy() {\n // element's parent list\n this.hierarchy = []; // if element is parent of another layer _isParent will be true\n\n this._isParent = false;\n this.checkParenting();\n },\n\n /**\r\n * @function\r\n * Sets layer's hierarchy.\r\n * @param {array} hierarch\r\n * layer's parent list\r\n *\r\n */\n setHierarchy: function setHierarchy(hierarchy) {\n this.hierarchy = hierarchy;\n },\n\n /**\r\n * @function\r\n * Sets layer as parent.\r\n *\r\n */\n setAsParent: function setAsParent() {\n this._isParent = true;\n },\n\n /**\r\n * @function\r\n * Searches layer's parenting chain\r\n *\r\n */\n checkParenting: function checkParenting() {\n if (this.data.parent !== undefined) {\n this.comp.buildElementParenting(this, this.data.parent, []);\n }\n }\n };\n\n function RenderableDOMElement() {}\n\n (function () {\n var _prototype = {\n initElement: function initElement(data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initTransform(data, globalData, comp);\n this.initHierarchy();\n this.initRenderable();\n this.initRendererElement();\n this.createContainerElements();\n this.createRenderableComponents();\n this.createContent();\n this.hide();\n },\n hide: function hide() {\n // console.log('HIDE', this);\n if (!this.hidden && (!this.isInRange || this.isTransparent)) {\n var elem = this.baseElement || this.layerElement;\n elem.style.display = 'none';\n this.hidden = true;\n }\n },\n show: function show() {\n // console.log('SHOW', this);\n if (this.isInRange && !this.isTransparent) {\n if (!this.data.hd) {\n var elem = this.baseElement || this.layerElement;\n elem.style.display = 'block';\n }\n\n this.hidden = false;\n this._isFirstFrame = true;\n }\n },\n renderFrame: function renderFrame() {\n // If it is exported as hidden (data.hd === true) no need to render\n // If it is not visible no need to render\n if (this.data.hd || this.hidden) {\n return;\n }\n\n this.renderTransform();\n this.renderRenderable();\n this.renderElement();\n this.renderInnerContent();\n\n if (this._isFirstFrame) {\n this._isFirstFrame = false;\n }\n },\n renderInnerContent: function renderInnerContent() {},\n prepareFrame: function prepareFrame(num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n this.checkTransparency();\n },\n destroy: function destroy() {\n this.innerElem = null;\n this.destroyBaseElement();\n }\n };\n extendPrototype([RenderableElement, createProxyFunction(_prototype)], RenderableDOMElement);\n })();\n\n function IImageElement(data, globalData, comp) {\n this.assetData = globalData.getAssetData(data.refId);\n this.initElement(data, globalData, comp);\n this.sourceRect = {\n top: 0,\n left: 0,\n width: this.assetData.w,\n height: this.assetData.h\n };\n }\n\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], IImageElement);\n\n IImageElement.prototype.createContent = function () {\n var assetPath = this.globalData.getAssetsPath(this.assetData);\n this.innerElem = createNS('image');\n this.innerElem.setAttribute('width', this.assetData.w + 'px');\n this.innerElem.setAttribute('height', this.assetData.h + 'px');\n this.innerElem.setAttribute('preserveAspectRatio', this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio);\n this.innerElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\n this.layerElement.appendChild(this.innerElem);\n };\n\n IImageElement.prototype.sourceRectAtTime = function () {\n return this.sourceRect;\n };\n\n function ProcessedElement(element, position) {\n this.elem = element;\n this.pos = position;\n }\n\n function IShapeElement() {}\n\n IShapeElement.prototype = {\n addShapeToModifiers: function addShapeToModifiers(data) {\n var i;\n var len = this.shapeModifiers.length;\n\n for (i = 0; i < len; i += 1) {\n this.shapeModifiers[i].addShape(data);\n }\n },\n isShapeInAnimatedModifiers: function isShapeInAnimatedModifiers(data) {\n var i = 0;\n var len = this.shapeModifiers.length;\n\n while (i < len) {\n if (this.shapeModifiers[i].isAnimatedWithShape(data)) {\n return true;\n }\n }\n\n return false;\n },\n renderModifiers: function renderModifiers() {\n if (!this.shapeModifiers.length) {\n return;\n }\n\n var i;\n var len = this.shapes.length;\n\n for (i = 0; i < len; i += 1) {\n this.shapes[i].sh.reset();\n }\n\n len = this.shapeModifiers.length;\n var shouldBreakProcess;\n\n for (i = len - 1; i >= 0; i -= 1) {\n shouldBreakProcess = this.shapeModifiers[i].processShapes(this._isFirstFrame); // workaround to fix cases where a repeater resets the shape so the following processes get called twice\n // TODO: find a better solution for this\n\n if (shouldBreakProcess) {\n break;\n }\n }\n },\n searchProcessedElement: function searchProcessedElement(elem) {\n var elements = this.processedElements;\n var i = 0;\n var len = elements.length;\n\n while (i < len) {\n if (elements[i].elem === elem) {\n return elements[i].pos;\n }\n\n i += 1;\n }\n\n return 0;\n },\n addProcessedElement: function addProcessedElement(elem, pos) {\n var elements = this.processedElements;\n var i = elements.length;\n\n while (i) {\n i -= 1;\n\n if (elements[i].elem === elem) {\n elements[i].pos = pos;\n return;\n }\n }\n\n elements.push(new ProcessedElement(elem, pos));\n },\n prepareFrame: function prepareFrame(num) {\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n }\n };\n\n var lineCapEnum = {\n 1: 'butt',\n 2: 'round',\n 3: 'square'\n };\n var lineJoinEnum = {\n 1: 'miter',\n 2: 'round',\n 3: 'bevel'\n };\n\n function SVGShapeData(transformers, level, shape) {\n this.caches = [];\n this.styles = [];\n this.transformers = transformers;\n this.lStr = '';\n this.sh = shape;\n this.lvl = level; // TODO find if there are some cases where _isAnimated can be false.\n // For now, since shapes add up with other shapes. They have to be calculated every time.\n // One way of finding out is checking if all styles associated to this shape depend only of this shape\n\n this._isAnimated = !!shape.k; // TODO: commenting this for now since all shapes are animated\n\n var i = 0;\n var len = transformers.length;\n\n while (i < len) {\n if (transformers[i].mProps.dynamicProperties.length) {\n this._isAnimated = true;\n break;\n }\n\n i += 1;\n }\n }\n\n SVGShapeData.prototype.setAsAnimated = function () {\n this._isAnimated = true;\n };\n\n function SVGStyleData(data, level) {\n this.data = data;\n this.type = data.ty;\n this.d = '';\n this.lvl = level;\n this._mdf = false;\n this.closed = data.hd === true;\n this.pElem = createNS('path');\n this.msElem = null;\n }\n\n SVGStyleData.prototype.reset = function () {\n this.d = '';\n this._mdf = false;\n };\n\n function DashProperty(elem, data, renderer, container) {\n this.elem = elem;\n this.frameId = -1;\n this.dataProps = createSizedArray(data.length);\n this.renderer = renderer;\n this.k = false;\n this.dashStr = '';\n this.dashArray = createTypedArray('float32', data.length ? data.length - 1 : 0);\n this.dashoffset = createTypedArray('float32', 1);\n this.initDynamicPropertyContainer(container);\n var i;\n var len = data.length || 0;\n var prop;\n\n for (i = 0; i < len; i += 1) {\n prop = PropertyFactory.getProp(elem, data[i].v, 0, 0, this);\n this.k = prop.k || this.k;\n this.dataProps[i] = {\n n: data[i].n,\n p: prop\n };\n }\n\n if (!this.k) {\n this.getValue(true);\n }\n\n this._isAnimated = this.k;\n }\n\n DashProperty.prototype.getValue = function (forceRender) {\n if (this.elem.globalData.frameId === this.frameId && !forceRender) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n this._mdf = this._mdf || forceRender;\n\n if (this._mdf) {\n var i = 0;\n var len = this.dataProps.length;\n\n if (this.renderer === 'svg') {\n this.dashStr = '';\n }\n\n for (i = 0; i < len; i += 1) {\n if (this.dataProps[i].n !== 'o') {\n if (this.renderer === 'svg') {\n this.dashStr += ' ' + this.dataProps[i].p.v;\n } else {\n this.dashArray[i] = this.dataProps[i].p.v;\n }\n } else {\n this.dashoffset[0] = this.dataProps[i].p.v;\n }\n }\n }\n };\n\n extendPrototype([DynamicPropertyContainer], DashProperty);\n\n function SVGStrokeStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\n this.d = new DashProperty(elem, data.d || {}, 'svg', this);\n this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\n this.style = styleOb;\n this._isAnimated = !!this._isAnimated;\n }\n\n extendPrototype([DynamicPropertyContainer], SVGStrokeStyleData);\n\n function SVGFillStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\n this.style = styleOb;\n }\n\n extendPrototype([DynamicPropertyContainer], SVGFillStyleData);\n\n function SVGNoStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.style = styleOb;\n }\n\n extendPrototype([DynamicPropertyContainer], SVGNoStyleData);\n\n function GradientProperty(elem, data, container) {\n this.data = data;\n this.c = createTypedArray('uint8c', data.p * 4);\n var cLength = data.k.k[0].s ? data.k.k[0].s.length - data.p * 4 : data.k.k.length - data.p * 4;\n this.o = createTypedArray('float32', cLength);\n this._cmdf = false;\n this._omdf = false;\n this._collapsable = this.checkCollapsable();\n this._hasOpacity = cLength;\n this.initDynamicPropertyContainer(container);\n this.prop = PropertyFactory.getProp(elem, data.k, 1, null, this);\n this.k = this.prop.k;\n this.getValue(true);\n }\n\n GradientProperty.prototype.comparePoints = function (values, points) {\n var i = 0;\n var len = this.o.length / 2;\n var diff;\n\n while (i < len) {\n diff = Math.abs(values[i * 4] - values[points * 4 + i * 2]);\n\n if (diff > 0.01) {\n return false;\n }\n\n i += 1;\n }\n\n return true;\n };\n\n GradientProperty.prototype.checkCollapsable = function () {\n if (this.o.length / 2 !== this.c.length / 4) {\n return false;\n }\n\n if (this.data.k.k[0].s) {\n var i = 0;\n var len = this.data.k.k.length;\n\n while (i < len) {\n if (!this.comparePoints(this.data.k.k[i].s, this.data.p)) {\n return false;\n }\n\n i += 1;\n }\n } else if (!this.comparePoints(this.data.k.k, this.data.p)) {\n return false;\n }\n\n return true;\n };\n\n GradientProperty.prototype.getValue = function (forceRender) {\n this.prop.getValue();\n this._mdf = false;\n this._cmdf = false;\n this._omdf = false;\n\n if (this.prop._mdf || forceRender) {\n var i;\n var len = this.data.p * 4;\n var mult;\n var val;\n\n for (i = 0; i < len; i += 1) {\n mult = i % 4 === 0 ? 100 : 255;\n val = Math.round(this.prop.v[i] * mult);\n\n if (this.c[i] !== val) {\n this.c[i] = val;\n this._cmdf = !forceRender;\n }\n }\n\n if (this.o.length) {\n len = this.prop.v.length;\n\n for (i = this.data.p * 4; i < len; i += 1) {\n mult = i % 2 === 0 ? 100 : 1;\n val = i % 2 === 0 ? Math.round(this.prop.v[i] * 100) : this.prop.v[i];\n\n if (this.o[i - this.data.p * 4] !== val) {\n this.o[i - this.data.p * 4] = val;\n this._omdf = !forceRender;\n }\n }\n }\n\n this._mdf = !forceRender;\n }\n };\n\n extendPrototype([DynamicPropertyContainer], GradientProperty);\n\n function SVGGradientFillStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.initGradientData(elem, data, styleOb);\n }\n\n SVGGradientFillStyleData.prototype.initGradientData = function (elem, data, styleOb) {\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n this.s = PropertyFactory.getProp(elem, data.s, 1, null, this);\n this.e = PropertyFactory.getProp(elem, data.e, 1, null, this);\n this.h = PropertyFactory.getProp(elem, data.h || {\n k: 0\n }, 0, 0.01, this);\n this.a = PropertyFactory.getProp(elem, data.a || {\n k: 0\n }, 0, degToRads, this);\n this.g = new GradientProperty(elem, data.g, this);\n this.style = styleOb;\n this.stops = [];\n this.setGradientData(styleOb.pElem, data);\n this.setGradientOpacity(data, styleOb);\n this._isAnimated = !!this._isAnimated;\n };\n\n SVGGradientFillStyleData.prototype.setGradientData = function (pathElement, data) {\n var gradientId = createElementID();\n var gfill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\n gfill.setAttribute('id', gradientId);\n gfill.setAttribute('spreadMethod', 'pad');\n gfill.setAttribute('gradientUnits', 'userSpaceOnUse');\n var stops = [];\n var stop;\n var j;\n var jLen;\n jLen = data.g.p * 4;\n\n for (j = 0; j < jLen; j += 4) {\n stop = createNS('stop');\n gfill.appendChild(stop);\n stops.push(stop);\n }\n\n pathElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + gradientId + ')');\n this.gf = gfill;\n this.cst = stops;\n };\n\n SVGGradientFillStyleData.prototype.setGradientOpacity = function (data, styleOb) {\n if (this.g._hasOpacity && !this.g._collapsable) {\n var stop;\n var j;\n var jLen;\n var mask = createNS('mask');\n var maskElement = createNS('path');\n mask.appendChild(maskElement);\n var opacityId = createElementID();\n var maskId = createElementID();\n mask.setAttribute('id', maskId);\n var opFill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\n opFill.setAttribute('id', opacityId);\n opFill.setAttribute('spreadMethod', 'pad');\n opFill.setAttribute('gradientUnits', 'userSpaceOnUse');\n jLen = data.g.k.k[0].s ? data.g.k.k[0].s.length : data.g.k.k.length;\n var stops = this.stops;\n\n for (j = data.g.p * 4; j < jLen; j += 2) {\n stop = createNS('stop');\n stop.setAttribute('stop-color', 'rgb(255,255,255)');\n opFill.appendChild(stop);\n stops.push(stop);\n }\n\n maskElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + opacityId + ')');\n\n if (data.ty === 'gs') {\n maskElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\n maskElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\n\n if (data.lj === 1) {\n maskElement.setAttribute('stroke-miterlimit', data.ml);\n }\n }\n\n this.of = opFill;\n this.ms = mask;\n this.ost = stops;\n this.maskId = maskId;\n styleOb.msElem = maskElement;\n }\n };\n\n extendPrototype([DynamicPropertyContainer], SVGGradientFillStyleData);\n\n function SVGGradientStrokeStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\n this.d = new DashProperty(elem, data.d || {}, 'svg', this);\n this.initGradientData(elem, data, styleOb);\n this._isAnimated = !!this._isAnimated;\n }\n\n extendPrototype([SVGGradientFillStyleData, DynamicPropertyContainer], SVGGradientStrokeStyleData);\n\n function ShapeGroupData() {\n this.it = [];\n this.prevViewData = [];\n this.gr = createNS('g');\n }\n\n function SVGTransformData(mProps, op, container) {\n this.transform = {\n mProps: mProps,\n op: op,\n container: container\n };\n this.elements = [];\n this._isAnimated = this.transform.mProps.dynamicProperties.length || this.transform.op.effectsSequence.length;\n }\n\n var buildShapeString = function buildShapeString(pathNodes, length, closed, mat) {\n if (length === 0) {\n return '';\n }\n\n var _o = pathNodes.o;\n var _i = pathNodes.i;\n var _v = pathNodes.v;\n var i;\n var shapeString = ' M' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\n\n for (i = 1; i < length; i += 1) {\n shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[i][0], _i[i][1]) + ' ' + mat.applyToPointStringified(_v[i][0], _v[i][1]);\n }\n\n if (closed && length) {\n shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[0][0], _i[0][1]) + ' ' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\n shapeString += 'z';\n }\n\n return shapeString;\n };\n\n var SVGElementsRenderer = function () {\n var _identityMatrix = new Matrix();\n\n var _matrixHelper = new Matrix();\n\n var ob = {\n createRenderFunction: createRenderFunction\n };\n\n function createRenderFunction(data) {\n switch (data.ty) {\n case 'fl':\n return renderFill;\n\n case 'gf':\n return renderGradient;\n\n case 'gs':\n return renderGradientStroke;\n\n case 'st':\n return renderStroke;\n\n case 'sh':\n case 'el':\n case 'rc':\n case 'sr':\n return renderPath;\n\n case 'tr':\n return renderContentTransform;\n\n case 'no':\n return renderNoop;\n\n default:\n return null;\n }\n }\n\n function renderContentTransform(styleData, itemData, isFirstFrame) {\n if (isFirstFrame || itemData.transform.op._mdf) {\n itemData.transform.container.setAttribute('opacity', itemData.transform.op.v);\n }\n\n if (isFirstFrame || itemData.transform.mProps._mdf) {\n itemData.transform.container.setAttribute('transform', itemData.transform.mProps.v.to2dCSS());\n }\n }\n\n function renderNoop() {}\n\n function renderPath(styleData, itemData, isFirstFrame) {\n var j;\n var jLen;\n var pathStringTransformed;\n var redraw;\n var pathNodes;\n var l;\n var lLen = itemData.styles.length;\n var lvl = itemData.lvl;\n var paths;\n var mat;\n var props;\n var iterations;\n var k;\n\n for (l = 0; l < lLen; l += 1) {\n redraw = itemData.sh._mdf || isFirstFrame;\n\n if (itemData.styles[l].lvl < lvl) {\n mat = _matrixHelper.reset();\n iterations = lvl - itemData.styles[l].lvl;\n k = itemData.transformers.length - 1;\n\n while (!redraw && iterations > 0) {\n redraw = itemData.transformers[k].mProps._mdf || redraw;\n iterations -= 1;\n k -= 1;\n }\n\n if (redraw) {\n iterations = lvl - itemData.styles[l].lvl;\n k = itemData.transformers.length - 1;\n\n while (iterations > 0) {\n props = itemData.transformers[k].mProps.v.props;\n mat.transform(props[0], props[1], props[2], props[3], props[4], props[5], props[6], props[7], props[8], props[9], props[10], props[11], props[12], props[13], props[14], props[15]);\n iterations -= 1;\n k -= 1;\n }\n }\n } else {\n mat = _identityMatrix;\n }\n\n paths = itemData.sh.paths;\n jLen = paths._length;\n\n if (redraw) {\n pathStringTransformed = '';\n\n for (j = 0; j < jLen; j += 1) {\n pathNodes = paths.shapes[j];\n\n if (pathNodes && pathNodes._length) {\n pathStringTransformed += buildShapeString(pathNodes, pathNodes._length, pathNodes.c, mat);\n }\n }\n\n itemData.caches[l] = pathStringTransformed;\n } else {\n pathStringTransformed = itemData.caches[l];\n }\n\n itemData.styles[l].d += styleData.hd === true ? '' : pathStringTransformed;\n itemData.styles[l]._mdf = redraw || itemData.styles[l]._mdf;\n }\n }\n\n function renderFill(styleData, itemData, isFirstFrame) {\n var styleElem = itemData.style;\n\n if (itemData.c._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('fill', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\n }\n\n if (itemData.o._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('fill-opacity', itemData.o.v);\n }\n }\n\n function renderGradientStroke(styleData, itemData, isFirstFrame) {\n renderGradient(styleData, itemData, isFirstFrame);\n renderStroke(styleData, itemData, isFirstFrame);\n }\n\n function renderGradient(styleData, itemData, isFirstFrame) {\n var gfill = itemData.gf;\n var hasOpacity = itemData.g._hasOpacity;\n var pt1 = itemData.s.v;\n var pt2 = itemData.e.v;\n\n if (itemData.o._mdf || isFirstFrame) {\n var attr = styleData.ty === 'gf' ? 'fill-opacity' : 'stroke-opacity';\n itemData.style.pElem.setAttribute(attr, itemData.o.v);\n }\n\n if (itemData.s._mdf || isFirstFrame) {\n var attr1 = styleData.t === 1 ? 'x1' : 'cx';\n var attr2 = attr1 === 'x1' ? 'y1' : 'cy';\n gfill.setAttribute(attr1, pt1[0]);\n gfill.setAttribute(attr2, pt1[1]);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute(attr1, pt1[0]);\n itemData.of.setAttribute(attr2, pt1[1]);\n }\n }\n\n var stops;\n var i;\n var len;\n var stop;\n\n if (itemData.g._cmdf || isFirstFrame) {\n stops = itemData.cst;\n var cValues = itemData.g.c;\n len = stops.length;\n\n for (i = 0; i < len; i += 1) {\n stop = stops[i];\n stop.setAttribute('offset', cValues[i * 4] + '%');\n stop.setAttribute('stop-color', 'rgb(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ')');\n }\n }\n\n if (hasOpacity && (itemData.g._omdf || isFirstFrame)) {\n var oValues = itemData.g.o;\n\n if (itemData.g._collapsable) {\n stops = itemData.cst;\n } else {\n stops = itemData.ost;\n }\n\n len = stops.length;\n\n for (i = 0; i < len; i += 1) {\n stop = stops[i];\n\n if (!itemData.g._collapsable) {\n stop.setAttribute('offset', oValues[i * 2] + '%');\n }\n\n stop.setAttribute('stop-opacity', oValues[i * 2 + 1]);\n }\n }\n\n if (styleData.t === 1) {\n if (itemData.e._mdf || isFirstFrame) {\n gfill.setAttribute('x2', pt2[0]);\n gfill.setAttribute('y2', pt2[1]);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('x2', pt2[0]);\n itemData.of.setAttribute('y2', pt2[1]);\n }\n }\n } else {\n var rad;\n\n if (itemData.s._mdf || itemData.e._mdf || isFirstFrame) {\n rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n gfill.setAttribute('r', rad);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('r', rad);\n }\n }\n\n if (itemData.e._mdf || itemData.h._mdf || itemData.a._mdf || isFirstFrame) {\n if (!rad) {\n rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n }\n\n var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\n var percent = itemData.h.v;\n\n if (percent >= 1) {\n percent = 0.99;\n } else if (percent <= -1) {\n percent = -0.99;\n }\n\n var dist = rad * percent;\n var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\n var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\n gfill.setAttribute('fx', x);\n gfill.setAttribute('fy', y);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('fx', x);\n itemData.of.setAttribute('fy', y);\n }\n } // gfill.setAttribute('fy','200');\n\n }\n }\n\n function renderStroke(styleData, itemData, isFirstFrame) {\n var styleElem = itemData.style;\n var d = itemData.d;\n\n if (d && (d._mdf || isFirstFrame) && d.dashStr) {\n styleElem.pElem.setAttribute('stroke-dasharray', d.dashStr);\n styleElem.pElem.setAttribute('stroke-dashoffset', d.dashoffset[0]);\n }\n\n if (itemData.c && (itemData.c._mdf || isFirstFrame)) {\n styleElem.pElem.setAttribute('stroke', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\n }\n\n if (itemData.o._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('stroke-opacity', itemData.o.v);\n }\n\n if (itemData.w._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('stroke-width', itemData.w.v);\n\n if (styleElem.msElem) {\n styleElem.msElem.setAttribute('stroke-width', itemData.w.v);\n }\n }\n }\n\n return ob;\n }();\n\n function SVGShapeElement(data, globalData, comp) {\n // List of drawable elements\n this.shapes = []; // Full shape data\n\n this.shapesData = data.shapes; // List of styles that will be applied to shapes\n\n this.stylesList = []; // List of modifiers that will be applied to shapes\n\n this.shapeModifiers = []; // List of items in shape tree\n\n this.itemsData = []; // List of items in previous shape tree\n\n this.processedElements = []; // List of animated components\n\n this.animatedContents = [];\n this.initElement(data, globalData, comp); // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n // List of elements that have been created\n\n this.prevViewData = []; // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n }\n\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableDOMElement], SVGShapeElement);\n\n SVGShapeElement.prototype.initSecondaryElement = function () {};\n\n SVGShapeElement.prototype.identityMatrix = new Matrix();\n\n SVGShapeElement.prototype.buildExpressionInterface = function () {};\n\n SVGShapeElement.prototype.createContent = function () {\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\n this.filterUniqueShapes();\n };\n /*\r\n This method searches for multiple shapes that affect a single element and one of them is animated\r\n */\n\n\n SVGShapeElement.prototype.filterUniqueShapes = function () {\n var i;\n var len = this.shapes.length;\n var shape;\n var j;\n var jLen = this.stylesList.length;\n var style;\n var tempShapes = [];\n var areAnimated = false;\n\n for (j = 0; j < jLen; j += 1) {\n style = this.stylesList[j];\n areAnimated = false;\n tempShapes.length = 0;\n\n for (i = 0; i < len; i += 1) {\n shape = this.shapes[i];\n\n if (shape.styles.indexOf(style) !== -1) {\n tempShapes.push(shape);\n areAnimated = shape._isAnimated || areAnimated;\n }\n }\n\n if (tempShapes.length > 1 && areAnimated) {\n this.setShapesAsAnimated(tempShapes);\n }\n }\n };\n\n SVGShapeElement.prototype.setShapesAsAnimated = function (shapes) {\n var i;\n var len = shapes.length;\n\n for (i = 0; i < len; i += 1) {\n shapes[i].setAsAnimated();\n }\n };\n\n SVGShapeElement.prototype.createStyleElement = function (data, level) {\n // TODO: prevent drawing of hidden styles\n var elementData;\n var styleOb = new SVGStyleData(data, level);\n var pathElement = styleOb.pElem;\n\n if (data.ty === 'st') {\n elementData = new SVGStrokeStyleData(this, data, styleOb);\n } else if (data.ty === 'fl') {\n elementData = new SVGFillStyleData(this, data, styleOb);\n } else if (data.ty === 'gf' || data.ty === 'gs') {\n var GradientConstructor = data.ty === 'gf' ? SVGGradientFillStyleData : SVGGradientStrokeStyleData;\n elementData = new GradientConstructor(this, data, styleOb);\n this.globalData.defs.appendChild(elementData.gf);\n\n if (elementData.maskId) {\n this.globalData.defs.appendChild(elementData.ms);\n this.globalData.defs.appendChild(elementData.of);\n pathElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + elementData.maskId + ')');\n }\n } else if (data.ty === 'no') {\n elementData = new SVGNoStyleData(this, data, styleOb);\n }\n\n if (data.ty === 'st' || data.ty === 'gs') {\n pathElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\n pathElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\n pathElement.setAttribute('fill-opacity', '0');\n\n if (data.lj === 1) {\n pathElement.setAttribute('stroke-miterlimit', data.ml);\n }\n }\n\n if (data.r === 2) {\n pathElement.setAttribute('fill-rule', 'evenodd');\n }\n\n if (data.ln) {\n pathElement.setAttribute('id', data.ln);\n }\n\n if (data.cl) {\n pathElement.setAttribute('class', data.cl);\n }\n\n if (data.bm) {\n pathElement.style['mix-blend-mode'] = getBlendMode(data.bm);\n }\n\n this.stylesList.push(styleOb);\n this.addToAnimatedContents(data, elementData);\n return elementData;\n };\n\n SVGShapeElement.prototype.createGroupElement = function (data) {\n var elementData = new ShapeGroupData();\n\n if (data.ln) {\n elementData.gr.setAttribute('id', data.ln);\n }\n\n if (data.cl) {\n elementData.gr.setAttribute('class', data.cl);\n }\n\n if (data.bm) {\n elementData.gr.style['mix-blend-mode'] = getBlendMode(data.bm);\n }\n\n return elementData;\n };\n\n SVGShapeElement.prototype.createTransformElement = function (data, container) {\n var transformProperty = TransformPropertyFactory.getTransformProperty(this, data, this);\n var elementData = new SVGTransformData(transformProperty, transformProperty.o, container);\n this.addToAnimatedContents(data, elementData);\n return elementData;\n };\n\n SVGShapeElement.prototype.createShapeElement = function (data, ownTransformers, level) {\n var ty = 4;\n\n if (data.ty === 'rc') {\n ty = 5;\n } else if (data.ty === 'el') {\n ty = 6;\n } else if (data.ty === 'sr') {\n ty = 7;\n }\n\n var shapeProperty = ShapePropertyFactory.getShapeProp(this, data, ty, this);\n var elementData = new SVGShapeData(ownTransformers, level, shapeProperty);\n this.shapes.push(elementData);\n this.addShapeToModifiers(elementData);\n this.addToAnimatedContents(data, elementData);\n return elementData;\n };\n\n SVGShapeElement.prototype.addToAnimatedContents = function (data, element) {\n var i = 0;\n var len = this.animatedContents.length;\n\n while (i < len) {\n if (this.animatedContents[i].element === element) {\n return;\n }\n\n i += 1;\n }\n\n this.animatedContents.push({\n fn: SVGElementsRenderer.createRenderFunction(data),\n element: element,\n data: data\n });\n };\n\n SVGShapeElement.prototype.setElementStyles = function (elementData) {\n var arr = elementData.styles;\n var j;\n var jLen = this.stylesList.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (!this.stylesList[j].closed) {\n arr.push(this.stylesList[j]);\n }\n }\n };\n\n SVGShapeElement.prototype.reloadShapes = function () {\n this._isFirstFrame = true;\n var i;\n var len = this.itemsData.length;\n\n for (i = 0; i < len; i += 1) {\n this.prevViewData[i] = this.itemsData[i];\n }\n\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\n this.filterUniqueShapes();\n len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n }\n\n this.renderModifiers();\n };\n\n SVGShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, container, level, transformers, render) {\n var ownTransformers = [].concat(transformers);\n var i;\n var len = arr.length - 1;\n var j;\n var jLen;\n var ownStyles = [];\n var ownModifiers = [];\n var currentTransform;\n var modifier;\n var processedPos;\n\n for (i = len; i >= 0; i -= 1) {\n processedPos = this.searchProcessedElement(arr[i]);\n\n if (!processedPos) {\n arr[i]._render = render;\n } else {\n itemsData[i] = prevViewData[processedPos - 1];\n }\n\n if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs' || arr[i].ty === 'no') {\n if (!processedPos) {\n itemsData[i] = this.createStyleElement(arr[i], level);\n } else {\n itemsData[i].style.closed = false;\n }\n\n if (arr[i]._render) {\n if (itemsData[i].style.pElem.parentNode !== container) {\n container.appendChild(itemsData[i].style.pElem);\n }\n }\n\n ownStyles.push(itemsData[i].style);\n } else if (arr[i].ty === 'gr') {\n if (!processedPos) {\n itemsData[i] = this.createGroupElement(arr[i]);\n } else {\n jLen = itemsData[i].it.length;\n\n for (j = 0; j < jLen; j += 1) {\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\n }\n }\n\n this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, itemsData[i].gr, level + 1, ownTransformers, render);\n\n if (arr[i]._render) {\n if (itemsData[i].gr.parentNode !== container) {\n container.appendChild(itemsData[i].gr);\n }\n }\n } else if (arr[i].ty === 'tr') {\n if (!processedPos) {\n itemsData[i] = this.createTransformElement(arr[i], container);\n }\n\n currentTransform = itemsData[i].transform;\n ownTransformers.push(currentTransform);\n } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\n if (!processedPos) {\n itemsData[i] = this.createShapeElement(arr[i], ownTransformers, level);\n }\n\n this.setElementStyles(itemsData[i]);\n } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'ms' || arr[i].ty === 'pb') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n modifier.init(this, arr[i]);\n itemsData[i] = modifier;\n this.shapeModifiers.push(modifier);\n } else {\n modifier = itemsData[i];\n modifier.closed = false;\n }\n\n ownModifiers.push(modifier);\n } else if (arr[i].ty === 'rp') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n itemsData[i] = modifier;\n modifier.init(this, arr, i, itemsData);\n this.shapeModifiers.push(modifier);\n render = false;\n } else {\n modifier = itemsData[i];\n modifier.closed = true;\n }\n\n ownModifiers.push(modifier);\n }\n\n this.addProcessedElement(arr[i], i + 1);\n }\n\n len = ownStyles.length;\n\n for (i = 0; i < len; i += 1) {\n ownStyles[i].closed = true;\n }\n\n len = ownModifiers.length;\n\n for (i = 0; i < len; i += 1) {\n ownModifiers[i].closed = true;\n }\n };\n\n SVGShapeElement.prototype.renderInnerContent = function () {\n this.renderModifiers();\n var i;\n var len = this.stylesList.length;\n\n for (i = 0; i < len; i += 1) {\n this.stylesList[i].reset();\n }\n\n this.renderShape();\n\n for (i = 0; i < len; i += 1) {\n if (this.stylesList[i]._mdf || this._isFirstFrame) {\n if (this.stylesList[i].msElem) {\n this.stylesList[i].msElem.setAttribute('d', this.stylesList[i].d); // Adding M0 0 fixes same mask bug on all browsers\n\n this.stylesList[i].d = 'M0 0' + this.stylesList[i].d;\n }\n\n this.stylesList[i].pElem.setAttribute('d', this.stylesList[i].d || 'M0 0');\n }\n }\n };\n\n SVGShapeElement.prototype.renderShape = function () {\n var i;\n var len = this.animatedContents.length;\n var animatedContent;\n\n for (i = 0; i < len; i += 1) {\n animatedContent = this.animatedContents[i];\n\n if ((this._isFirstFrame || animatedContent.element._isAnimated) && animatedContent.data !== true) {\n animatedContent.fn(animatedContent.data, animatedContent.element, this._isFirstFrame);\n }\n }\n };\n\n SVGShapeElement.prototype.destroy = function () {\n this.destroyBaseElement();\n this.shapesData = null;\n this.itemsData = null;\n };\n\n function LetterProps(o, sw, sc, fc, m, p) {\n this.o = o;\n this.sw = sw;\n this.sc = sc;\n this.fc = fc;\n this.m = m;\n this.p = p;\n this._mdf = {\n o: true,\n sw: !!sw,\n sc: !!sc,\n fc: !!fc,\n m: true,\n p: true\n };\n }\n\n LetterProps.prototype.update = function (o, sw, sc, fc, m, p) {\n this._mdf.o = false;\n this._mdf.sw = false;\n this._mdf.sc = false;\n this._mdf.fc = false;\n this._mdf.m = false;\n this._mdf.p = false;\n var updated = false;\n\n if (this.o !== o) {\n this.o = o;\n this._mdf.o = true;\n updated = true;\n }\n\n if (this.sw !== sw) {\n this.sw = sw;\n this._mdf.sw = true;\n updated = true;\n }\n\n if (this.sc !== sc) {\n this.sc = sc;\n this._mdf.sc = true;\n updated = true;\n }\n\n if (this.fc !== fc) {\n this.fc = fc;\n this._mdf.fc = true;\n updated = true;\n }\n\n if (this.m !== m) {\n this.m = m;\n this._mdf.m = true;\n updated = true;\n }\n\n if (p.length && (this.p[0] !== p[0] || this.p[1] !== p[1] || this.p[4] !== p[4] || this.p[5] !== p[5] || this.p[12] !== p[12] || this.p[13] !== p[13])) {\n this.p = p;\n this._mdf.p = true;\n updated = true;\n }\n\n return updated;\n };\n\n function TextProperty(elem, data) {\n this._frameId = initialDefaultFrame;\n this.pv = '';\n this.v = '';\n this.kf = false;\n this._isFirstFrame = true;\n this._mdf = false;\n this.data = data;\n this.elem = elem;\n this.comp = this.elem.comp;\n this.keysIndex = 0;\n this.canResize = false;\n this.minimumFontSize = 1;\n this.effectsSequence = [];\n this.currentData = {\n ascent: 0,\n boxWidth: this.defaultBoxWidth,\n f: '',\n fStyle: '',\n fWeight: '',\n fc: '',\n j: '',\n justifyOffset: '',\n l: [],\n lh: 0,\n lineWidths: [],\n ls: '',\n of: '',\n s: '',\n sc: '',\n sw: 0,\n t: 0,\n tr: 0,\n sz: 0,\n ps: null,\n fillColorAnim: false,\n strokeColorAnim: false,\n strokeWidthAnim: false,\n yOffset: 0,\n finalSize: 0,\n finalText: [],\n finalLineHeight: 0,\n __complete: false\n };\n this.copyData(this.currentData, this.data.d.k[0].s);\n\n if (!this.searchProperty()) {\n this.completeTextData(this.currentData);\n }\n }\n\n TextProperty.prototype.defaultBoxWidth = [0, 0];\n\n TextProperty.prototype.copyData = function (obj, data) {\n for (var s in data) {\n if (Object.prototype.hasOwnProperty.call(data, s)) {\n obj[s] = data[s];\n }\n }\n\n return obj;\n };\n\n TextProperty.prototype.setCurrentData = function (data) {\n if (!data.__complete) {\n this.completeTextData(data);\n }\n\n this.currentData = data;\n this.currentData.boxWidth = this.currentData.boxWidth || this.defaultBoxWidth;\n this._mdf = true;\n };\n\n TextProperty.prototype.searchProperty = function () {\n return this.searchKeyframes();\n };\n\n TextProperty.prototype.searchKeyframes = function () {\n this.kf = this.data.d.k.length > 1;\n\n if (this.kf) {\n this.addEffect(this.getKeyframeValue.bind(this));\n }\n\n return this.kf;\n };\n\n TextProperty.prototype.addEffect = function (effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.elem.addDynamicProperty(this);\n };\n\n TextProperty.prototype.getValue = function (_finalValue) {\n if ((this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) && !_finalValue) {\n return;\n }\n\n this.currentData.t = this.data.d.k[this.keysIndex].s.t;\n var currentValue = this.currentData;\n var currentIndex = this.keysIndex;\n\n if (this.lock) {\n this.setCurrentData(this.currentData);\n return;\n }\n\n this.lock = true;\n this._mdf = false;\n var i;\n var len = this.effectsSequence.length;\n var finalValue = _finalValue || this.data.d.k[this.keysIndex].s;\n\n for (i = 0; i < len; i += 1) {\n // Checking if index changed to prevent creating a new object every time the expression updates.\n if (currentIndex !== this.keysIndex) {\n finalValue = this.effectsSequence[i](finalValue, finalValue.t);\n } else {\n finalValue = this.effectsSequence[i](this.currentData, finalValue.t);\n }\n }\n\n if (currentValue !== finalValue) {\n this.setCurrentData(finalValue);\n }\n\n this.v = this.currentData;\n this.pv = this.v;\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n };\n\n TextProperty.prototype.getKeyframeValue = function () {\n var textKeys = this.data.d.k;\n var frameNum = this.elem.comp.renderedFrame;\n var i = 0;\n var len = textKeys.length;\n\n while (i <= len - 1) {\n if (i === len - 1 || textKeys[i + 1].t > frameNum) {\n break;\n }\n\n i += 1;\n }\n\n if (this.keysIndex !== i) {\n this.keysIndex = i;\n }\n\n return this.data.d.k[this.keysIndex].s;\n };\n\n TextProperty.prototype.buildFinalText = function (text) {\n var charactersArray = [];\n var i = 0;\n var len = text.length;\n var charCode;\n var secondCharCode;\n var shouldCombine = false;\n\n while (i < len) {\n charCode = text.charCodeAt(i);\n\n if (FontManager.isCombinedCharacter(charCode)) {\n charactersArray[charactersArray.length - 1] += text.charAt(i);\n } else if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n secondCharCode = text.charCodeAt(i + 1);\n\n if (secondCharCode >= 0xDC00 && secondCharCode <= 0xDFFF) {\n if (shouldCombine || FontManager.isModifier(charCode, secondCharCode)) {\n charactersArray[charactersArray.length - 1] += text.substr(i, 2);\n shouldCombine = false;\n } else {\n charactersArray.push(text.substr(i, 2));\n }\n\n i += 1;\n } else {\n charactersArray.push(text.charAt(i));\n }\n } else if (charCode > 0xDBFF) {\n secondCharCode = text.charCodeAt(i + 1);\n\n if (FontManager.isZeroWidthJoiner(charCode, secondCharCode)) {\n shouldCombine = true;\n charactersArray[charactersArray.length - 1] += text.substr(i, 2);\n i += 1;\n } else {\n charactersArray.push(text.charAt(i));\n }\n } else if (FontManager.isZeroWidthJoiner(charCode)) {\n charactersArray[charactersArray.length - 1] += text.charAt(i);\n shouldCombine = true;\n } else {\n charactersArray.push(text.charAt(i));\n }\n\n i += 1;\n }\n\n return charactersArray;\n };\n\n TextProperty.prototype.completeTextData = function (documentData) {\n documentData.__complete = true;\n var fontManager = this.elem.globalData.fontManager;\n var data = this.data;\n var letters = [];\n var i;\n var len;\n var newLineFlag;\n var index = 0;\n var val;\n var anchorGrouping = data.m.g;\n var currentSize = 0;\n var currentPos = 0;\n var currentLine = 0;\n var lineWidths = [];\n var lineWidth = 0;\n var maxLineWidth = 0;\n var j;\n var jLen;\n var fontData = fontManager.getFontByName(documentData.f);\n var charData;\n var cLength = 0;\n var fontProps = getFontProperties(fontData);\n documentData.fWeight = fontProps.weight;\n documentData.fStyle = fontProps.style;\n documentData.finalSize = documentData.s;\n documentData.finalText = this.buildFinalText(documentData.t);\n len = documentData.finalText.length;\n documentData.finalLineHeight = documentData.lh;\n var trackingOffset = documentData.tr / 1000 * documentData.finalSize;\n var charCode;\n\n if (documentData.sz) {\n var flag = true;\n var boxWidth = documentData.sz[0];\n var boxHeight = documentData.sz[1];\n var currentHeight;\n var finalText;\n\n while (flag) {\n finalText = this.buildFinalText(documentData.t);\n currentHeight = 0;\n lineWidth = 0;\n len = finalText.length;\n trackingOffset = documentData.tr / 1000 * documentData.finalSize;\n var lastSpaceIndex = -1;\n\n for (i = 0; i < len; i += 1) {\n charCode = finalText[i].charCodeAt(0);\n newLineFlag = false;\n\n if (finalText[i] === ' ') {\n lastSpaceIndex = i;\n } else if (charCode === 13 || charCode === 3) {\n lineWidth = 0;\n newLineFlag = true;\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\n }\n\n if (fontManager.chars) {\n charData = fontManager.getCharData(finalText[i], fontData.fStyle, fontData.fFamily);\n cLength = newLineFlag ? 0 : charData.w * documentData.finalSize / 100;\n } else {\n // tCanvasHelper.font = documentData.s + 'px '+ fontData.fFamily;\n cLength = fontManager.measureText(finalText[i], documentData.f, documentData.finalSize);\n }\n\n if (lineWidth + cLength > boxWidth && finalText[i] !== ' ') {\n if (lastSpaceIndex === -1) {\n len += 1;\n } else {\n i = lastSpaceIndex;\n }\n\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\n finalText.splice(i, lastSpaceIndex === i ? 1 : 0, '\\r'); // finalText = finalText.substr(0,i) + \"\\r\" + finalText.substr(i === lastSpaceIndex ? i + 1 : i);\n\n lastSpaceIndex = -1;\n lineWidth = 0;\n } else {\n lineWidth += cLength;\n lineWidth += trackingOffset;\n }\n }\n\n currentHeight += fontData.ascent * documentData.finalSize / 100;\n\n if (this.canResize && documentData.finalSize > this.minimumFontSize && boxHeight < currentHeight) {\n documentData.finalSize -= 1;\n documentData.finalLineHeight = documentData.finalSize * documentData.lh / documentData.s;\n } else {\n documentData.finalText = finalText;\n len = documentData.finalText.length;\n flag = false;\n }\n }\n }\n\n lineWidth = -trackingOffset;\n cLength = 0;\n var uncollapsedSpaces = 0;\n var currentChar;\n\n for (i = 0; i < len; i += 1) {\n newLineFlag = false;\n currentChar = documentData.finalText[i];\n charCode = currentChar.charCodeAt(0);\n\n if (charCode === 13 || charCode === 3) {\n uncollapsedSpaces = 0;\n lineWidths.push(lineWidth);\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\n lineWidth = -2 * trackingOffset;\n val = '';\n newLineFlag = true;\n currentLine += 1;\n } else {\n val = currentChar;\n }\n\n if (fontManager.chars) {\n charData = fontManager.getCharData(currentChar, fontData.fStyle, fontManager.getFontByName(documentData.f).fFamily);\n cLength = newLineFlag ? 0 : charData.w * documentData.finalSize / 100;\n } else {\n // var charWidth = fontManager.measureText(val, documentData.f, documentData.finalSize);\n // tCanvasHelper.font = documentData.finalSize + 'px '+ fontManager.getFontByName(documentData.f).fFamily;\n cLength = fontManager.measureText(val, documentData.f, documentData.finalSize);\n } //\n\n\n if (currentChar === ' ') {\n uncollapsedSpaces += cLength + trackingOffset;\n } else {\n lineWidth += cLength + trackingOffset + uncollapsedSpaces;\n uncollapsedSpaces = 0;\n }\n\n letters.push({\n l: cLength,\n an: cLength,\n add: currentSize,\n n: newLineFlag,\n anIndexes: [],\n val: val,\n line: currentLine,\n animatorJustifyOffset: 0\n });\n\n if (anchorGrouping == 2) {\n // eslint-disable-line eqeqeq\n currentSize += cLength;\n\n if (val === '' || val === ' ' || i === len - 1) {\n if (val === '' || val === ' ') {\n currentSize -= cLength;\n }\n\n while (currentPos <= i) {\n letters[currentPos].an = currentSize;\n letters[currentPos].ind = index;\n letters[currentPos].extra = cLength;\n currentPos += 1;\n }\n\n index += 1;\n currentSize = 0;\n }\n } else if (anchorGrouping == 3) {\n // eslint-disable-line eqeqeq\n currentSize += cLength;\n\n if (val === '' || i === len - 1) {\n if (val === '') {\n currentSize -= cLength;\n }\n\n while (currentPos <= i) {\n letters[currentPos].an = currentSize;\n letters[currentPos].ind = index;\n letters[currentPos].extra = cLength;\n currentPos += 1;\n }\n\n currentSize = 0;\n index += 1;\n }\n } else {\n letters[index].ind = index;\n letters[index].extra = 0;\n index += 1;\n }\n }\n\n documentData.l = letters;\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\n lineWidths.push(lineWidth);\n\n if (documentData.sz) {\n documentData.boxWidth = documentData.sz[0];\n documentData.justifyOffset = 0;\n } else {\n documentData.boxWidth = maxLineWidth;\n\n switch (documentData.j) {\n case 1:\n documentData.justifyOffset = -documentData.boxWidth;\n break;\n\n case 2:\n documentData.justifyOffset = -documentData.boxWidth / 2;\n break;\n\n default:\n documentData.justifyOffset = 0;\n }\n }\n\n documentData.lineWidths = lineWidths;\n var animators = data.a;\n var animatorData;\n var letterData;\n jLen = animators.length;\n var based;\n var ind;\n var indexes = [];\n\n for (j = 0; j < jLen; j += 1) {\n animatorData = animators[j];\n\n if (animatorData.a.sc) {\n documentData.strokeColorAnim = true;\n }\n\n if (animatorData.a.sw) {\n documentData.strokeWidthAnim = true;\n }\n\n if (animatorData.a.fc || animatorData.a.fh || animatorData.a.fs || animatorData.a.fb) {\n documentData.fillColorAnim = true;\n }\n\n ind = 0;\n based = animatorData.s.b;\n\n for (i = 0; i < len; i += 1) {\n letterData = letters[i];\n letterData.anIndexes[j] = ind;\n\n if (based == 1 && letterData.val !== '' || based == 2 && letterData.val !== '' && letterData.val !== ' ' || based == 3 && (letterData.n || letterData.val == ' ' || i == len - 1) || based == 4 && (letterData.n || i == len - 1)) {\n // eslint-disable-line eqeqeq\n if (animatorData.s.rn === 1) {\n indexes.push(ind);\n }\n\n ind += 1;\n }\n }\n\n data.a[j].s.totalChars = ind;\n var currentInd = -1;\n var newInd;\n\n if (animatorData.s.rn === 1) {\n for (i = 0; i < len; i += 1) {\n letterData = letters[i];\n\n if (currentInd != letterData.anIndexes[j]) {\n // eslint-disable-line eqeqeq\n currentInd = letterData.anIndexes[j];\n newInd = indexes.splice(Math.floor(Math.random() * indexes.length), 1)[0];\n }\n\n letterData.anIndexes[j] = newInd;\n }\n }\n }\n\n documentData.yOffset = documentData.finalLineHeight || documentData.finalSize * 1.2;\n documentData.ls = documentData.ls || 0;\n documentData.ascent = fontData.ascent * documentData.finalSize / 100;\n };\n\n TextProperty.prototype.updateDocumentData = function (newData, index) {\n index = index === undefined ? this.keysIndex : index;\n var dData = this.copyData({}, this.data.d.k[index].s);\n dData = this.copyData(dData, newData);\n this.data.d.k[index].s = dData;\n this.recalculate(index);\n this.elem.addDynamicProperty(this);\n };\n\n TextProperty.prototype.recalculate = function (index) {\n var dData = this.data.d.k[index].s;\n dData.__complete = false;\n this.keysIndex = 0;\n this._isFirstFrame = true;\n this.getValue(dData);\n };\n\n TextProperty.prototype.canResizeFont = function (_canResize) {\n this.canResize = _canResize;\n this.recalculate(this.keysIndex);\n this.elem.addDynamicProperty(this);\n };\n\n TextProperty.prototype.setMinimumFontSize = function (_fontValue) {\n this.minimumFontSize = Math.floor(_fontValue) || 1;\n this.recalculate(this.keysIndex);\n this.elem.addDynamicProperty(this);\n };\n\n var TextSelectorProp = function () {\n var max = Math.max;\n var min = Math.min;\n var floor = Math.floor;\n\n function TextSelectorPropFactory(elem, data) {\n this._currentTextLength = -1;\n this.k = false;\n this.data = data;\n this.elem = elem;\n this.comp = elem.comp;\n this.finalS = 0;\n this.finalE = 0;\n this.initDynamicPropertyContainer(elem);\n this.s = PropertyFactory.getProp(elem, data.s || {\n k: 0\n }, 0, 0, this);\n\n if ('e' in data) {\n this.e = PropertyFactory.getProp(elem, data.e, 0, 0, this);\n } else {\n this.e = {\n v: 100\n };\n }\n\n this.o = PropertyFactory.getProp(elem, data.o || {\n k: 0\n }, 0, 0, this);\n this.xe = PropertyFactory.getProp(elem, data.xe || {\n k: 0\n }, 0, 0, this);\n this.ne = PropertyFactory.getProp(elem, data.ne || {\n k: 0\n }, 0, 0, this);\n this.sm = PropertyFactory.getProp(elem, data.sm || {\n k: 100\n }, 0, 0, this);\n this.a = PropertyFactory.getProp(elem, data.a, 0, 0.01, this);\n\n if (!this.dynamicProperties.length) {\n this.getValue();\n }\n }\n\n TextSelectorPropFactory.prototype = {\n getMult: function getMult(ind) {\n if (this._currentTextLength !== this.elem.textProperty.currentData.l.length) {\n this.getValue();\n }\n\n var x1 = 0;\n var y1 = 0;\n var x2 = 1;\n var y2 = 1;\n\n if (this.ne.v > 0) {\n x1 = this.ne.v / 100.0;\n } else {\n y1 = -this.ne.v / 100.0;\n }\n\n if (this.xe.v > 0) {\n x2 = 1.0 - this.xe.v / 100.0;\n } else {\n y2 = 1.0 + this.xe.v / 100.0;\n }\n\n var easer = BezierFactory.getBezierEasing(x1, y1, x2, y2).get;\n var mult = 0;\n var s = this.finalS;\n var e = this.finalE;\n var type = this.data.sh;\n\n if (type === 2) {\n if (e === s) {\n mult = ind >= e ? 1 : 0;\n } else {\n mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n }\n\n mult = easer(mult);\n } else if (type === 3) {\n if (e === s) {\n mult = ind >= e ? 0 : 1;\n } else {\n mult = 1 - max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n }\n\n mult = easer(mult);\n } else if (type === 4) {\n if (e === s) {\n mult = 0;\n } else {\n mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n\n if (mult < 0.5) {\n mult *= 2;\n } else {\n mult = 1 - 2 * (mult - 0.5);\n }\n }\n\n mult = easer(mult);\n } else if (type === 5) {\n if (e === s) {\n mult = 0;\n } else {\n var tot = e - s;\n /* ind += 0.5;\r\n mult = -4/(tot*tot)*(ind*ind)+(4/tot)*ind; */\n\n ind = min(max(0, ind + 0.5 - s), e - s);\n var x = -tot / 2 + ind;\n var a = tot / 2;\n mult = Math.sqrt(1 - x * x / (a * a));\n }\n\n mult = easer(mult);\n } else if (type === 6) {\n if (e === s) {\n mult = 0;\n } else {\n ind = min(max(0, ind + 0.5 - s), e - s);\n mult = (1 + Math.cos(Math.PI + Math.PI * 2 * ind / (e - s))) / 2; // eslint-disable-line\n }\n\n mult = easer(mult);\n } else {\n if (ind >= floor(s)) {\n if (ind - s < 0) {\n mult = max(0, min(min(e, 1) - (s - ind), 1));\n } else {\n mult = max(0, min(e - ind, 1));\n }\n }\n\n mult = easer(mult);\n } // Smoothness implementation.\n // The smoothness represents a reduced range of the original [0; 1] range.\n // if smoothness is 25%, the new range will be [0.375; 0.625]\n // Steps are:\n // - find the lower value of the new range (threshold)\n // - if multiplier is smaller than that value, floor it to 0\n // - if it is larger,\n // - subtract the threshold\n // - divide it by the smoothness (this will return the range to [0; 1])\n // Note: If it doesn't work on some scenarios, consider applying it before the easer.\n\n\n if (this.sm.v !== 100) {\n var smoothness = this.sm.v * 0.01;\n\n if (smoothness === 0) {\n smoothness = 0.00000001;\n }\n\n var threshold = 0.5 - smoothness * 0.5;\n\n if (mult < threshold) {\n mult = 0;\n } else {\n mult = (mult - threshold) / smoothness;\n\n if (mult > 1) {\n mult = 1;\n }\n }\n }\n\n return mult * this.a.v;\n },\n getValue: function getValue(newCharsFlag) {\n this.iterateDynamicProperties();\n this._mdf = newCharsFlag || this._mdf;\n this._currentTextLength = this.elem.textProperty.currentData.l.length || 0;\n\n if (newCharsFlag && this.data.r === 2) {\n this.e.v = this._currentTextLength;\n }\n\n var divisor = this.data.r === 2 ? 1 : 100 / this.data.totalChars;\n var o = this.o.v / divisor;\n var s = this.s.v / divisor + o;\n var e = this.e.v / divisor + o;\n\n if (s > e) {\n var _s = s;\n s = e;\n e = _s;\n }\n\n this.finalS = s;\n this.finalE = e;\n }\n };\n extendPrototype([DynamicPropertyContainer], TextSelectorPropFactory);\n\n function getTextSelectorProp(elem, data, arr) {\n return new TextSelectorPropFactory(elem, data, arr);\n }\n\n return {\n getTextSelectorProp: getTextSelectorProp\n };\n }();\n\n function TextAnimatorDataProperty(elem, animatorProps, container) {\n var defaultData = {\n propType: false\n };\n var getProp = PropertyFactory.getProp;\n var textAnimatorAnimatables = animatorProps.a;\n this.a = {\n r: textAnimatorAnimatables.r ? getProp(elem, textAnimatorAnimatables.r, 0, degToRads, container) : defaultData,\n rx: textAnimatorAnimatables.rx ? getProp(elem, textAnimatorAnimatables.rx, 0, degToRads, container) : defaultData,\n ry: textAnimatorAnimatables.ry ? getProp(elem, textAnimatorAnimatables.ry, 0, degToRads, container) : defaultData,\n sk: textAnimatorAnimatables.sk ? getProp(elem, textAnimatorAnimatables.sk, 0, degToRads, container) : defaultData,\n sa: textAnimatorAnimatables.sa ? getProp(elem, textAnimatorAnimatables.sa, 0, degToRads, container) : defaultData,\n s: textAnimatorAnimatables.s ? getProp(elem, textAnimatorAnimatables.s, 1, 0.01, container) : defaultData,\n a: textAnimatorAnimatables.a ? getProp(elem, textAnimatorAnimatables.a, 1, 0, container) : defaultData,\n o: textAnimatorAnimatables.o ? getProp(elem, textAnimatorAnimatables.o, 0, 0.01, container) : defaultData,\n p: textAnimatorAnimatables.p ? getProp(elem, textAnimatorAnimatables.p, 1, 0, container) : defaultData,\n sw: textAnimatorAnimatables.sw ? getProp(elem, textAnimatorAnimatables.sw, 0, 0, container) : defaultData,\n sc: textAnimatorAnimatables.sc ? getProp(elem, textAnimatorAnimatables.sc, 1, 0, container) : defaultData,\n fc: textAnimatorAnimatables.fc ? getProp(elem, textAnimatorAnimatables.fc, 1, 0, container) : defaultData,\n fh: textAnimatorAnimatables.fh ? getProp(elem, textAnimatorAnimatables.fh, 0, 0, container) : defaultData,\n fs: textAnimatorAnimatables.fs ? getProp(elem, textAnimatorAnimatables.fs, 0, 0.01, container) : defaultData,\n fb: textAnimatorAnimatables.fb ? getProp(elem, textAnimatorAnimatables.fb, 0, 0.01, container) : defaultData,\n t: textAnimatorAnimatables.t ? getProp(elem, textAnimatorAnimatables.t, 0, 0, container) : defaultData\n };\n this.s = TextSelectorProp.getTextSelectorProp(elem, animatorProps.s, container);\n this.s.t = animatorProps.s.t;\n }\n\n function TextAnimatorProperty(textData, renderType, elem) {\n this._isFirstFrame = true;\n this._hasMaskedPath = false;\n this._frameId = -1;\n this._textData = textData;\n this._renderType = renderType;\n this._elem = elem;\n this._animatorsData = createSizedArray(this._textData.a.length);\n this._pathData = {};\n this._moreOptions = {\n alignment: {}\n };\n this.renderedLetters = [];\n this.lettersChangedFlag = false;\n this.initDynamicPropertyContainer(elem);\n }\n\n TextAnimatorProperty.prototype.searchProperties = function () {\n var i;\n var len = this._textData.a.length;\n var animatorProps;\n var getProp = PropertyFactory.getProp;\n\n for (i = 0; i < len; i += 1) {\n animatorProps = this._textData.a[i];\n this._animatorsData[i] = new TextAnimatorDataProperty(this._elem, animatorProps, this);\n }\n\n if (this._textData.p && 'm' in this._textData.p) {\n this._pathData = {\n a: getProp(this._elem, this._textData.p.a, 0, 0, this),\n f: getProp(this._elem, this._textData.p.f, 0, 0, this),\n l: getProp(this._elem, this._textData.p.l, 0, 0, this),\n r: getProp(this._elem, this._textData.p.r, 0, 0, this),\n p: getProp(this._elem, this._textData.p.p, 0, 0, this),\n m: this._elem.maskManager.getMaskProperty(this._textData.p.m)\n };\n this._hasMaskedPath = true;\n } else {\n this._hasMaskedPath = false;\n }\n\n this._moreOptions.alignment = getProp(this._elem, this._textData.m.a, 1, 0, this);\n };\n\n TextAnimatorProperty.prototype.getMeasures = function (documentData, lettersChangedFlag) {\n this.lettersChangedFlag = lettersChangedFlag;\n\n if (!this._mdf && !this._isFirstFrame && !lettersChangedFlag && (!this._hasMaskedPath || !this._pathData.m._mdf)) {\n return;\n }\n\n this._isFirstFrame = false;\n var alignment = this._moreOptions.alignment.v;\n var animators = this._animatorsData;\n var textData = this._textData;\n var matrixHelper = this.mHelper;\n var renderType = this._renderType;\n var renderedLettersCount = this.renderedLetters.length;\n var xPos;\n var yPos;\n var i;\n var len;\n var letters = documentData.l;\n var pathInfo;\n var currentLength;\n var currentPoint;\n var segmentLength;\n var flag;\n var pointInd;\n var segmentInd;\n var prevPoint;\n var points;\n var segments;\n var partialLength;\n var totalLength;\n var perc;\n var tanAngle;\n var mask;\n\n if (this._hasMaskedPath) {\n mask = this._pathData.m;\n\n if (!this._pathData.n || this._pathData._mdf) {\n var paths = mask.v;\n\n if (this._pathData.r.v) {\n paths = paths.reverse();\n } // TODO: release bezier data cached from previous pathInfo: this._pathData.pi\n\n\n pathInfo = {\n tLength: 0,\n segments: []\n };\n len = paths._length - 1;\n var bezierData;\n totalLength = 0;\n\n for (i = 0; i < len; i += 1) {\n bezierData = bez.buildBezierData(paths.v[i], paths.v[i + 1], [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]], [paths.i[i + 1][0] - paths.v[i + 1][0], paths.i[i + 1][1] - paths.v[i + 1][1]]);\n pathInfo.tLength += bezierData.segmentLength;\n pathInfo.segments.push(bezierData);\n totalLength += bezierData.segmentLength;\n }\n\n i = len;\n\n if (mask.v.c) {\n bezierData = bez.buildBezierData(paths.v[i], paths.v[0], [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]], [paths.i[0][0] - paths.v[0][0], paths.i[0][1] - paths.v[0][1]]);\n pathInfo.tLength += bezierData.segmentLength;\n pathInfo.segments.push(bezierData);\n totalLength += bezierData.segmentLength;\n }\n\n this._pathData.pi = pathInfo;\n }\n\n pathInfo = this._pathData.pi;\n currentLength = this._pathData.f.v;\n segmentInd = 0;\n pointInd = 1;\n segmentLength = 0;\n flag = true;\n segments = pathInfo.segments;\n\n if (currentLength < 0 && mask.v.c) {\n if (pathInfo.tLength < Math.abs(currentLength)) {\n currentLength = -Math.abs(currentLength) % pathInfo.tLength;\n }\n\n segmentInd = segments.length - 1;\n points = segments[segmentInd].points;\n pointInd = points.length - 1;\n\n while (currentLength < 0) {\n currentLength += points[pointInd].partialLength;\n pointInd -= 1;\n\n if (pointInd < 0) {\n segmentInd -= 1;\n points = segments[segmentInd].points;\n pointInd = points.length - 1;\n }\n }\n }\n\n points = segments[segmentInd].points;\n prevPoint = points[pointInd - 1];\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\n }\n\n len = letters.length;\n xPos = 0;\n yPos = 0;\n var yOff = documentData.finalSize * 1.2 * 0.714;\n var firstLine = true;\n var animatorProps;\n var animatorSelector;\n var j;\n var jLen;\n var letterValue;\n jLen = animators.length;\n var mult;\n var ind = -1;\n var offf;\n var xPathPos;\n var yPathPos;\n var initPathPos = currentLength;\n var initSegmentInd = segmentInd;\n var initPointInd = pointInd;\n var currentLine = -1;\n var elemOpacity;\n var sc;\n var sw;\n var fc;\n var k;\n var letterSw;\n var letterSc;\n var letterFc;\n var letterM = '';\n var letterP = this.defaultPropsArray;\n var letterO; //\n\n if (documentData.j === 2 || documentData.j === 1) {\n var animatorJustifyOffset = 0;\n var animatorFirstCharOffset = 0;\n var justifyOffsetMult = documentData.j === 2 ? -0.5 : -1;\n var lastIndex = 0;\n var isNewLine = true;\n\n for (i = 0; i < len; i += 1) {\n if (letters[i].n) {\n if (animatorJustifyOffset) {\n animatorJustifyOffset += animatorFirstCharOffset;\n }\n\n while (lastIndex < i) {\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\n lastIndex += 1;\n }\n\n animatorJustifyOffset = 0;\n isNewLine = true;\n } else {\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.t.propType) {\n if (isNewLine && documentData.j === 2) {\n animatorFirstCharOffset += animatorProps.t.v * justifyOffsetMult;\n }\n\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n animatorJustifyOffset += animatorProps.t.v * mult[0] * justifyOffsetMult;\n } else {\n animatorJustifyOffset += animatorProps.t.v * mult * justifyOffsetMult;\n }\n }\n }\n\n isNewLine = false;\n }\n }\n\n if (animatorJustifyOffset) {\n animatorJustifyOffset += animatorFirstCharOffset;\n }\n\n while (lastIndex < i) {\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\n lastIndex += 1;\n }\n } //\n\n\n for (i = 0; i < len; i += 1) {\n matrixHelper.reset();\n elemOpacity = 1;\n\n if (letters[i].n) {\n xPos = 0;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n currentLength = initPathPos;\n firstLine = false;\n\n if (this._hasMaskedPath) {\n segmentInd = initSegmentInd;\n pointInd = initPointInd;\n points = segments[segmentInd].points;\n prevPoint = points[pointInd - 1];\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\n segmentLength = 0;\n }\n\n letterM = '';\n letterFc = '';\n letterSw = '';\n letterO = '';\n letterP = this.defaultPropsArray;\n } else {\n if (this._hasMaskedPath) {\n if (currentLine !== letters[i].line) {\n switch (documentData.j) {\n case 1:\n currentLength += totalLength - documentData.lineWidths[letters[i].line];\n break;\n\n case 2:\n currentLength += (totalLength - documentData.lineWidths[letters[i].line]) / 2;\n break;\n\n default:\n break;\n }\n\n currentLine = letters[i].line;\n }\n\n if (ind !== letters[i].ind) {\n if (letters[ind]) {\n currentLength += letters[ind].extra;\n }\n\n currentLength += letters[i].an / 2;\n ind = letters[i].ind;\n }\n\n currentLength += alignment[0] * letters[i].an * 0.005;\n var animatorOffset = 0;\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.p.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n animatorOffset += animatorProps.p.v[0] * mult[0];\n } else {\n animatorOffset += animatorProps.p.v[0] * mult;\n }\n }\n\n if (animatorProps.a.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n animatorOffset += animatorProps.a.v[0] * mult[0];\n } else {\n animatorOffset += animatorProps.a.v[0] * mult;\n }\n }\n }\n\n flag = true; // Force alignment only works with a single line for now\n\n if (this._pathData.a.v) {\n currentLength = letters[0].an * 0.5 + (totalLength - this._pathData.f.v - letters[0].an * 0.5 - letters[letters.length - 1].an * 0.5) * ind / (len - 1);\n currentLength += this._pathData.f.v;\n }\n\n while (flag) {\n if (segmentLength + partialLength >= currentLength + animatorOffset || !points) {\n perc = (currentLength + animatorOffset - segmentLength) / currentPoint.partialLength;\n xPathPos = prevPoint.point[0] + (currentPoint.point[0] - prevPoint.point[0]) * perc;\n yPathPos = prevPoint.point[1] + (currentPoint.point[1] - prevPoint.point[1]) * perc;\n matrixHelper.translate(-alignment[0] * letters[i].an * 0.005, -(alignment[1] * yOff) * 0.01);\n flag = false;\n } else if (points) {\n segmentLength += currentPoint.partialLength;\n pointInd += 1;\n\n if (pointInd >= points.length) {\n pointInd = 0;\n segmentInd += 1;\n\n if (!segments[segmentInd]) {\n if (mask.v.c) {\n pointInd = 0;\n segmentInd = 0;\n points = segments[segmentInd].points;\n } else {\n segmentLength -= currentPoint.partialLength;\n points = null;\n }\n } else {\n points = segments[segmentInd].points;\n }\n }\n\n if (points) {\n prevPoint = currentPoint;\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\n }\n }\n }\n\n offf = letters[i].an / 2 - letters[i].add;\n matrixHelper.translate(-offf, 0, 0);\n } else {\n offf = letters[i].an / 2 - letters[i].add;\n matrixHelper.translate(-offf, 0, 0); // Grouping alignment\n\n matrixHelper.translate(-alignment[0] * letters[i].an * 0.005, -alignment[1] * yOff * 0.01, 0);\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.t.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars); // This condition is to prevent applying tracking to first character in each line. Might be better to use a boolean \"isNewLine\"\n\n if (xPos !== 0 || documentData.j !== 0) {\n if (this._hasMaskedPath) {\n if (mult.length) {\n currentLength += animatorProps.t.v * mult[0];\n } else {\n currentLength += animatorProps.t.v * mult;\n }\n } else if (mult.length) {\n xPos += animatorProps.t.v * mult[0];\n } else {\n xPos += animatorProps.t.v * mult;\n }\n }\n }\n }\n\n if (documentData.strokeWidthAnim) {\n sw = documentData.sw || 0;\n }\n\n if (documentData.strokeColorAnim) {\n if (documentData.sc) {\n sc = [documentData.sc[0], documentData.sc[1], documentData.sc[2]];\n } else {\n sc = [0, 0, 0];\n }\n }\n\n if (documentData.fillColorAnim && documentData.fc) {\n fc = [documentData.fc[0], documentData.fc[1], documentData.fc[2]];\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.a.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n matrixHelper.translate(-animatorProps.a.v[0] * mult[0], -animatorProps.a.v[1] * mult[1], animatorProps.a.v[2] * mult[2]);\n } else {\n matrixHelper.translate(-animatorProps.a.v[0] * mult, -animatorProps.a.v[1] * mult, animatorProps.a.v[2] * mult);\n }\n }\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.s.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n matrixHelper.scale(1 + (animatorProps.s.v[0] - 1) * mult[0], 1 + (animatorProps.s.v[1] - 1) * mult[1], 1);\n } else {\n matrixHelper.scale(1 + (animatorProps.s.v[0] - 1) * mult, 1 + (animatorProps.s.v[1] - 1) * mult, 1);\n }\n }\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (animatorProps.sk.propType) {\n if (mult.length) {\n matrixHelper.skewFromAxis(-animatorProps.sk.v * mult[0], animatorProps.sa.v * mult[1]);\n } else {\n matrixHelper.skewFromAxis(-animatorProps.sk.v * mult, animatorProps.sa.v * mult);\n }\n }\n\n if (animatorProps.r.propType) {\n if (mult.length) {\n matrixHelper.rotateZ(-animatorProps.r.v * mult[2]);\n } else {\n matrixHelper.rotateZ(-animatorProps.r.v * mult);\n }\n }\n\n if (animatorProps.ry.propType) {\n if (mult.length) {\n matrixHelper.rotateY(animatorProps.ry.v * mult[1]);\n } else {\n matrixHelper.rotateY(animatorProps.ry.v * mult);\n }\n }\n\n if (animatorProps.rx.propType) {\n if (mult.length) {\n matrixHelper.rotateX(animatorProps.rx.v * mult[0]);\n } else {\n matrixHelper.rotateX(animatorProps.rx.v * mult);\n }\n }\n\n if (animatorProps.o.propType) {\n if (mult.length) {\n elemOpacity += (animatorProps.o.v * mult[0] - elemOpacity) * mult[0];\n } else {\n elemOpacity += (animatorProps.o.v * mult - elemOpacity) * mult;\n }\n }\n\n if (documentData.strokeWidthAnim && animatorProps.sw.propType) {\n if (mult.length) {\n sw += animatorProps.sw.v * mult[0];\n } else {\n sw += animatorProps.sw.v * mult;\n }\n }\n\n if (documentData.strokeColorAnim && animatorProps.sc.propType) {\n for (k = 0; k < 3; k += 1) {\n if (mult.length) {\n sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult[0];\n } else {\n sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult;\n }\n }\n }\n\n if (documentData.fillColorAnim && documentData.fc) {\n if (animatorProps.fc.propType) {\n for (k = 0; k < 3; k += 1) {\n if (mult.length) {\n fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult[0];\n } else {\n fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult;\n }\n }\n }\n\n if (animatorProps.fh.propType) {\n if (mult.length) {\n fc = addHueToRGB(fc, animatorProps.fh.v * mult[0]);\n } else {\n fc = addHueToRGB(fc, animatorProps.fh.v * mult);\n }\n }\n\n if (animatorProps.fs.propType) {\n if (mult.length) {\n fc = addSaturationToRGB(fc, animatorProps.fs.v * mult[0]);\n } else {\n fc = addSaturationToRGB(fc, animatorProps.fs.v * mult);\n }\n }\n\n if (animatorProps.fb.propType) {\n if (mult.length) {\n fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult[0]);\n } else {\n fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult);\n }\n }\n }\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.p.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (this._hasMaskedPath) {\n if (mult.length) {\n matrixHelper.translate(0, animatorProps.p.v[1] * mult[0], -animatorProps.p.v[2] * mult[1]);\n } else {\n matrixHelper.translate(0, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\n }\n } else if (mult.length) {\n matrixHelper.translate(animatorProps.p.v[0] * mult[0], animatorProps.p.v[1] * mult[1], -animatorProps.p.v[2] * mult[2]);\n } else {\n matrixHelper.translate(animatorProps.p.v[0] * mult, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\n }\n }\n }\n\n if (documentData.strokeWidthAnim) {\n letterSw = sw < 0 ? 0 : sw;\n }\n\n if (documentData.strokeColorAnim) {\n letterSc = 'rgb(' + Math.round(sc[0] * 255) + ',' + Math.round(sc[1] * 255) + ',' + Math.round(sc[2] * 255) + ')';\n }\n\n if (documentData.fillColorAnim && documentData.fc) {\n letterFc = 'rgb(' + Math.round(fc[0] * 255) + ',' + Math.round(fc[1] * 255) + ',' + Math.round(fc[2] * 255) + ')';\n }\n\n if (this._hasMaskedPath) {\n matrixHelper.translate(0, -documentData.ls);\n matrixHelper.translate(0, alignment[1] * yOff * 0.01 + yPos, 0);\n\n if (this._pathData.p.v) {\n tanAngle = (currentPoint.point[1] - prevPoint.point[1]) / (currentPoint.point[0] - prevPoint.point[0]);\n var rot = Math.atan(tanAngle) * 180 / Math.PI;\n\n if (currentPoint.point[0] < prevPoint.point[0]) {\n rot += 180;\n }\n\n matrixHelper.rotate(-rot * Math.PI / 180);\n }\n\n matrixHelper.translate(xPathPos, yPathPos, 0);\n currentLength -= alignment[0] * letters[i].an * 0.005;\n\n if (letters[i + 1] && ind !== letters[i + 1].ind) {\n currentLength += letters[i].an / 2;\n currentLength += documentData.tr * 0.001 * documentData.finalSize;\n }\n } else {\n matrixHelper.translate(xPos, yPos, 0);\n\n if (documentData.ps) {\n // matrixHelper.translate(documentData.ps[0],documentData.ps[1],0);\n matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\n }\n\n switch (documentData.j) {\n case 1:\n matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]), 0, 0);\n break;\n\n case 2:\n matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]) / 2, 0, 0);\n break;\n\n default:\n break;\n }\n\n matrixHelper.translate(0, -documentData.ls);\n matrixHelper.translate(offf, 0, 0);\n matrixHelper.translate(alignment[0] * letters[i].an * 0.005, alignment[1] * yOff * 0.01, 0);\n xPos += letters[i].l + documentData.tr * 0.001 * documentData.finalSize;\n }\n\n if (renderType === 'html') {\n letterM = matrixHelper.toCSS();\n } else if (renderType === 'svg') {\n letterM = matrixHelper.to2dCSS();\n } else {\n letterP = [matrixHelper.props[0], matrixHelper.props[1], matrixHelper.props[2], matrixHelper.props[3], matrixHelper.props[4], matrixHelper.props[5], matrixHelper.props[6], matrixHelper.props[7], matrixHelper.props[8], matrixHelper.props[9], matrixHelper.props[10], matrixHelper.props[11], matrixHelper.props[12], matrixHelper.props[13], matrixHelper.props[14], matrixHelper.props[15]];\n }\n\n letterO = elemOpacity;\n }\n\n if (renderedLettersCount <= i) {\n letterValue = new LetterProps(letterO, letterSw, letterSc, letterFc, letterM, letterP);\n this.renderedLetters.push(letterValue);\n renderedLettersCount += 1;\n this.lettersChangedFlag = true;\n } else {\n letterValue = this.renderedLetters[i];\n this.lettersChangedFlag = letterValue.update(letterO, letterSw, letterSc, letterFc, letterM, letterP) || this.lettersChangedFlag;\n }\n }\n };\n\n TextAnimatorProperty.prototype.getValue = function () {\n if (this._elem.globalData.frameId === this._frameId) {\n return;\n }\n\n this._frameId = this._elem.globalData.frameId;\n this.iterateDynamicProperties();\n };\n\n TextAnimatorProperty.prototype.mHelper = new Matrix();\n TextAnimatorProperty.prototype.defaultPropsArray = [];\n extendPrototype([DynamicPropertyContainer], TextAnimatorProperty);\n\n function ITextElement() {}\n\n ITextElement.prototype.initElement = function (data, globalData, comp) {\n this.lettersChangedFlag = true;\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.textProperty = new TextProperty(this, data.t, this.dynamicProperties);\n this.textAnimator = new TextAnimatorProperty(data.t, this.renderType, this);\n this.initTransform(data, globalData, comp);\n this.initHierarchy();\n this.initRenderable();\n this.initRendererElement();\n this.createContainerElements();\n this.createRenderableComponents();\n this.createContent();\n this.hide();\n this.textAnimator.searchProperties(this.dynamicProperties);\n };\n\n ITextElement.prototype.prepareFrame = function (num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n\n if (this.textProperty._mdf || this.textProperty._isFirstFrame) {\n this.buildNewText();\n this.textProperty._isFirstFrame = false;\n this.textProperty._mdf = false;\n }\n };\n\n ITextElement.prototype.createPathShape = function (matrixHelper, shapes) {\n var j;\n var jLen = shapes.length;\n var pathNodes;\n var shapeStr = '';\n\n for (j = 0; j < jLen; j += 1) {\n if (shapes[j].ty === 'sh') {\n pathNodes = shapes[j].ks.k;\n shapeStr += buildShapeString(pathNodes, pathNodes.i.length, true, matrixHelper);\n }\n }\n\n return shapeStr;\n };\n\n ITextElement.prototype.updateDocumentData = function (newData, index) {\n this.textProperty.updateDocumentData(newData, index);\n };\n\n ITextElement.prototype.canResizeFont = function (_canResize) {\n this.textProperty.canResizeFont(_canResize);\n };\n\n ITextElement.prototype.setMinimumFontSize = function (_fontSize) {\n this.textProperty.setMinimumFontSize(_fontSize);\n };\n\n ITextElement.prototype.applyTextPropertiesToMatrix = function (documentData, matrixHelper, lineNumber, xPos, yPos) {\n if (documentData.ps) {\n matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\n }\n\n matrixHelper.translate(0, -documentData.ls, 0);\n\n switch (documentData.j) {\n case 1:\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]), 0, 0);\n break;\n\n case 2:\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]) / 2, 0, 0);\n break;\n\n default:\n break;\n }\n\n matrixHelper.translate(xPos, yPos, 0);\n };\n\n ITextElement.prototype.buildColor = function (colorData) {\n return 'rgb(' + Math.round(colorData[0] * 255) + ',' + Math.round(colorData[1] * 255) + ',' + Math.round(colorData[2] * 255) + ')';\n };\n\n ITextElement.prototype.emptyProp = new LetterProps();\n\n ITextElement.prototype.destroy = function () {};\n\n var emptyShapeData = {\n shapes: []\n };\n\n function SVGTextLottieElement(data, globalData, comp) {\n this.textSpans = [];\n this.renderType = 'svg';\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], SVGTextLottieElement);\n\n SVGTextLottieElement.prototype.createContent = function () {\n if (this.data.singleShape && !this.globalData.fontManager.chars) {\n this.textContainer = createNS('text');\n }\n };\n\n SVGTextLottieElement.prototype.buildTextContents = function (textArray) {\n var i = 0;\n var len = textArray.length;\n var textContents = [];\n var currentTextContent = '';\n\n while (i < len) {\n if (textArray[i] === String.fromCharCode(13) || textArray[i] === String.fromCharCode(3)) {\n textContents.push(currentTextContent);\n currentTextContent = '';\n } else {\n currentTextContent += textArray[i];\n }\n\n i += 1;\n }\n\n textContents.push(currentTextContent);\n return textContents;\n };\n\n SVGTextLottieElement.prototype.buildNewText = function () {\n this.addDynamicProperty(this);\n var i;\n var len;\n var documentData = this.textProperty.currentData;\n this.renderedLetters = createSizedArray(documentData ? documentData.l.length : 0);\n\n if (documentData.fc) {\n this.layerElement.setAttribute('fill', this.buildColor(documentData.fc));\n } else {\n this.layerElement.setAttribute('fill', 'rgba(0,0,0,0)');\n }\n\n if (documentData.sc) {\n this.layerElement.setAttribute('stroke', this.buildColor(documentData.sc));\n this.layerElement.setAttribute('stroke-width', documentData.sw);\n }\n\n this.layerElement.setAttribute('font-size', documentData.finalSize);\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n\n if (fontData.fClass) {\n this.layerElement.setAttribute('class', fontData.fClass);\n } else {\n this.layerElement.setAttribute('font-family', fontData.fFamily);\n var fWeight = documentData.fWeight;\n var fStyle = documentData.fStyle;\n this.layerElement.setAttribute('font-style', fStyle);\n this.layerElement.setAttribute('font-weight', fWeight);\n }\n\n this.layerElement.setAttribute('aria-label', documentData.t);\n var letters = documentData.l || [];\n var usesGlyphs = !!this.globalData.fontManager.chars;\n len = letters.length;\n var tSpan;\n var matrixHelper = this.mHelper;\n var shapeStr = '';\n var singleShape = this.data.singleShape;\n var xPos = 0;\n var yPos = 0;\n var firstLine = true;\n var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\n\n if (singleShape && !usesGlyphs && !documentData.sz) {\n var tElement = this.textContainer;\n var justify = 'start';\n\n switch (documentData.j) {\n case 1:\n justify = 'end';\n break;\n\n case 2:\n justify = 'middle';\n break;\n\n default:\n justify = 'start';\n break;\n }\n\n tElement.setAttribute('text-anchor', justify);\n tElement.setAttribute('letter-spacing', trackingOffset);\n var textContent = this.buildTextContents(documentData.finalText);\n len = textContent.length;\n yPos = documentData.ps ? documentData.ps[1] + documentData.ascent : 0;\n\n for (i = 0; i < len; i += 1) {\n tSpan = this.textSpans[i].span || createNS('tspan');\n tSpan.textContent = textContent[i];\n tSpan.setAttribute('x', 0);\n tSpan.setAttribute('y', yPos);\n tSpan.style.display = 'inherit';\n tElement.appendChild(tSpan);\n\n if (!this.textSpans[i]) {\n this.textSpans[i] = {\n span: null,\n glyph: null\n };\n }\n\n this.textSpans[i].span = tSpan;\n yPos += documentData.finalLineHeight;\n }\n\n this.layerElement.appendChild(tElement);\n } else {\n var cachedSpansLength = this.textSpans.length;\n var charData;\n\n for (i = 0; i < len; i += 1) {\n if (!this.textSpans[i]) {\n this.textSpans[i] = {\n span: null,\n childSpan: null,\n glyph: null\n };\n }\n\n if (!usesGlyphs || !singleShape || i === 0) {\n tSpan = cachedSpansLength > i ? this.textSpans[i].span : createNS(usesGlyphs ? 'g' : 'text');\n\n if (cachedSpansLength <= i) {\n tSpan.setAttribute('stroke-linecap', 'butt');\n tSpan.setAttribute('stroke-linejoin', 'round');\n tSpan.setAttribute('stroke-miterlimit', '4');\n this.textSpans[i].span = tSpan;\n\n if (usesGlyphs) {\n var childSpan = createNS('g');\n tSpan.appendChild(childSpan);\n this.textSpans[i].childSpan = childSpan;\n }\n\n this.textSpans[i].span = tSpan;\n this.layerElement.appendChild(tSpan);\n }\n\n tSpan.style.display = 'inherit';\n }\n\n matrixHelper.reset();\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\n\n if (singleShape) {\n if (letters[i].n) {\n xPos = -trackingOffset;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n firstLine = false;\n }\n\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\n xPos += letters[i].l || 0; // xPos += letters[i].val === ' ' ? 0 : trackingOffset;\n\n xPos += trackingOffset;\n }\n\n if (usesGlyphs) {\n charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n var glyphElement;\n\n if (charData.t === 1) {\n glyphElement = new SVGCompElement(charData.data, this.globalData, this);\n } else {\n var data = emptyShapeData;\n\n if (charData.data && charData.data.shapes) {\n data = charData.data;\n }\n\n glyphElement = new SVGShapeElement(data, this.globalData, this);\n }\n\n this.textSpans[i].glyph = glyphElement;\n glyphElement._debug = true;\n glyphElement.prepareFrame(0);\n glyphElement.renderFrame();\n this.textSpans[i].childSpan.appendChild(glyphElement.layerElement);\n this.textSpans[i].childSpan.setAttribute('transform', 'scale(' + documentData.finalSize / 100 + ',' + documentData.finalSize / 100 + ')');\n } else {\n if (singleShape) {\n tSpan.setAttribute('transform', 'translate(' + matrixHelper.props[12] + ',' + matrixHelper.props[13] + ')');\n }\n\n tSpan.textContent = letters[i].val;\n tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n } //\n\n }\n\n if (singleShape && tSpan) {\n tSpan.setAttribute('d', shapeStr);\n }\n }\n\n while (i < this.textSpans.length) {\n this.textSpans[i].span.style.display = 'none';\n i += 1;\n }\n\n this._sizeChanged = true;\n };\n\n SVGTextLottieElement.prototype.sourceRectAtTime = function () {\n this.prepareFrame(this.comp.renderedFrame - this.data.st);\n this.renderInnerContent();\n\n if (this._sizeChanged) {\n this._sizeChanged = false;\n var textBox = this.layerElement.getBBox();\n this.bbox = {\n top: textBox.y,\n left: textBox.x,\n width: textBox.width,\n height: textBox.height\n };\n }\n\n return this.bbox;\n };\n\n SVGTextLottieElement.prototype.getValue = function () {\n var i;\n var len = this.textSpans.length;\n var glyphElement;\n this.renderedFrame = this.comp.renderedFrame;\n\n for (i = 0; i < len; i += 1) {\n glyphElement = this.textSpans[i].glyph;\n\n if (glyphElement) {\n glyphElement.prepareFrame(this.comp.renderedFrame - this.data.st);\n\n if (glyphElement._mdf) {\n this._mdf = true;\n }\n }\n }\n };\n\n SVGTextLottieElement.prototype.renderInnerContent = function () {\n if (!this.data.singleShape || this._mdf) {\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n\n if (this.lettersChangedFlag || this.textAnimator.lettersChangedFlag) {\n this._sizeChanged = true;\n var i;\n var len;\n var renderedLetters = this.textAnimator.renderedLetters;\n var letters = this.textProperty.currentData.l;\n len = letters.length;\n var renderedLetter;\n var textSpan;\n var glyphElement;\n\n for (i = 0; i < len; i += 1) {\n if (!letters[i].n) {\n renderedLetter = renderedLetters[i];\n textSpan = this.textSpans[i].span;\n glyphElement = this.textSpans[i].glyph;\n\n if (glyphElement) {\n glyphElement.renderFrame();\n }\n\n if (renderedLetter._mdf.m) {\n textSpan.setAttribute('transform', renderedLetter.m);\n }\n\n if (renderedLetter._mdf.o) {\n textSpan.setAttribute('opacity', renderedLetter.o);\n }\n\n if (renderedLetter._mdf.sw) {\n textSpan.setAttribute('stroke-width', renderedLetter.sw);\n }\n\n if (renderedLetter._mdf.sc) {\n textSpan.setAttribute('stroke', renderedLetter.sc);\n }\n\n if (renderedLetter._mdf.fc) {\n textSpan.setAttribute('fill', renderedLetter.fc);\n }\n }\n }\n }\n }\n };\n\n function ISolidElement(data, globalData, comp) {\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([IImageElement], ISolidElement);\n\n ISolidElement.prototype.createContent = function () {\n var rect = createNS('rect'); /// /rect.style.width = this.data.sw;\n /// /rect.style.height = this.data.sh;\n /// /rect.style.fill = this.data.sc;\n\n rect.setAttribute('width', this.data.sw);\n rect.setAttribute('height', this.data.sh);\n rect.setAttribute('fill', this.data.sc);\n this.layerElement.appendChild(rect);\n };\n\n function NullElement(data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initFrame();\n this.initTransform(data, globalData, comp);\n this.initHierarchy();\n }\n\n NullElement.prototype.prepareFrame = function (num) {\n this.prepareProperties(num, true);\n };\n\n NullElement.prototype.renderFrame = function () {};\n\n NullElement.prototype.getBaseElement = function () {\n return null;\n };\n\n NullElement.prototype.destroy = function () {};\n\n NullElement.prototype.sourceRectAtTime = function () {};\n\n NullElement.prototype.hide = function () {};\n\n extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement], NullElement);\n\n function SVGRendererBase() {}\n\n extendPrototype([BaseRenderer], SVGRendererBase);\n\n SVGRendererBase.prototype.createNull = function (data) {\n return new NullElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createShape = function (data) {\n return new SVGShapeElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createText = function (data) {\n return new SVGTextLottieElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createImage = function (data) {\n return new IImageElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createSolid = function (data) {\n return new ISolidElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.configAnimation = function (animData) {\n this.svgElement.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\n\n if (this.renderConfig.viewBoxSize) {\n this.svgElement.setAttribute('viewBox', this.renderConfig.viewBoxSize);\n } else {\n this.svgElement.setAttribute('viewBox', '0 0 ' + animData.w + ' ' + animData.h);\n }\n\n if (!this.renderConfig.viewBoxOnly) {\n this.svgElement.setAttribute('width', animData.w);\n this.svgElement.setAttribute('height', animData.h);\n this.svgElement.style.width = '100%';\n this.svgElement.style.height = '100%';\n this.svgElement.style.transform = 'translate3d(0,0,0)';\n this.svgElement.style.contentVisibility = this.renderConfig.contentVisibility;\n }\n\n if (this.renderConfig.className) {\n this.svgElement.setAttribute('class', this.renderConfig.className);\n }\n\n if (this.renderConfig.id) {\n this.svgElement.setAttribute('id', this.renderConfig.id);\n }\n\n if (this.renderConfig.focusable !== undefined) {\n this.svgElement.setAttribute('focusable', this.renderConfig.focusable);\n }\n\n this.svgElement.setAttribute('preserveAspectRatio', this.renderConfig.preserveAspectRatio); // this.layerElement.style.transform = 'translate3d(0,0,0)';\n // this.layerElement.style.transformOrigin = this.layerElement.style.mozTransformOrigin = this.layerElement.style.webkitTransformOrigin = this.layerElement.style['-webkit-transform'] = \"0px 0px 0px\";\n\n this.animationItem.wrapper.appendChild(this.svgElement); // Mask animation\n\n var defs = this.globalData.defs;\n this.setupGlobalData(animData, defs);\n this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\n this.data = animData;\n var maskElement = createNS('clipPath');\n var rect = createNS('rect');\n rect.setAttribute('width', animData.w);\n rect.setAttribute('height', animData.h);\n rect.setAttribute('x', 0);\n rect.setAttribute('y', 0);\n var maskId = createElementID();\n maskElement.setAttribute('id', maskId);\n maskElement.appendChild(rect);\n this.layerElement.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + maskId + ')');\n defs.appendChild(maskElement);\n this.layers = animData.layers;\n this.elements = createSizedArray(animData.layers.length);\n };\n\n SVGRendererBase.prototype.destroy = function () {\n if (this.animationItem.wrapper) {\n this.animationItem.wrapper.innerText = '';\n }\n\n this.layerElement = null;\n this.globalData.defs = null;\n var i;\n var len = this.layers ? this.layers.length : 0;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i]) {\n this.elements[i].destroy();\n }\n }\n\n this.elements.length = 0;\n this.destroyed = true;\n this.animationItem = null;\n };\n\n SVGRendererBase.prototype.updateContainerSize = function () {};\n\n SVGRendererBase.prototype.buildItem = function (pos) {\n var elements = this.elements;\n\n if (elements[pos] || this.layers[pos].ty === 99) {\n return;\n }\n\n elements[pos] = true;\n var element = this.createItem(this.layers[pos]);\n elements[pos] = element;\n\n if (getExpressionsPlugin()) {\n if (this.layers[pos].ty === 0) {\n this.globalData.projectInterface.registerComposition(element);\n }\n\n element.initExpressions();\n }\n\n this.appendElementInPos(element, pos);\n\n if (this.layers[pos].tt) {\n if (!this.elements[pos - 1] || this.elements[pos - 1] === true) {\n this.buildItem(pos - 1);\n this.addPendingElement(element);\n } else {\n element.setMatte(elements[pos - 1].layerId);\n }\n }\n };\n\n SVGRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n\n if (element.data.tt) {\n var i = 0;\n var len = this.elements.length;\n\n while (i < len) {\n if (this.elements[i] === element) {\n element.setMatte(this.elements[i - 1].layerId);\n break;\n }\n\n i += 1;\n }\n }\n }\n };\n\n SVGRendererBase.prototype.renderFrame = function (num) {\n if (this.renderedFrame === num || this.destroyed) {\n return;\n }\n\n if (num === null) {\n num = this.renderedFrame;\n } else {\n this.renderedFrame = num;\n } // console.log('-------');\n // console.log('FRAME ',num);\n\n\n this.globalData.frameNum = num;\n this.globalData.frameId += 1;\n this.globalData.projectInterface.currentFrame = num;\n this.globalData._mdf = false;\n var i;\n var len = this.layers.length;\n\n if (!this.completeLayers) {\n this.checkLayers(num);\n }\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].prepareFrame(num - this.layers[i].st);\n }\n }\n\n if (this.globalData._mdf) {\n for (i = 0; i < len; i += 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n }\n };\n\n SVGRendererBase.prototype.appendElementInPos = function (element, pos) {\n var newElement = element.getBaseElement();\n\n if (!newElement) {\n return;\n }\n\n var i = 0;\n var nextElement;\n\n while (i < pos) {\n if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement()) {\n nextElement = this.elements[i].getBaseElement();\n }\n\n i += 1;\n }\n\n if (nextElement) {\n this.layerElement.insertBefore(newElement, nextElement);\n } else {\n this.layerElement.appendChild(newElement);\n }\n };\n\n SVGRendererBase.prototype.hide = function () {\n this.layerElement.style.display = 'none';\n };\n\n SVGRendererBase.prototype.show = function () {\n this.layerElement.style.display = 'block';\n };\n\n function ICompElement() {}\n\n extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement, RenderableDOMElement], ICompElement);\n\n ICompElement.prototype.initElement = function (data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initTransform(data, globalData, comp);\n this.initRenderable();\n this.initHierarchy();\n this.initRendererElement();\n this.createContainerElements();\n this.createRenderableComponents();\n\n if (this.data.xt || !globalData.progressiveLoad) {\n this.buildAllItems();\n }\n\n this.hide();\n };\n /* ICompElement.prototype.hide = function(){\r\n if(!this.hidden){\r\n this.hideElement();\r\n var i,len = this.elements.length;\r\n for( i = 0; i < len; i+=1 ){\r\n if(this.elements[i]){\r\n this.elements[i].hide();\r\n }\r\n }\r\n }\r\n }; */\n\n\n ICompElement.prototype.prepareFrame = function (num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n\n if (!this.isInRange && !this.data.xt) {\n return;\n }\n\n if (!this.tm._placeholder) {\n var timeRemapped = this.tm.v;\n\n if (timeRemapped === this.data.op) {\n timeRemapped = this.data.op - 1;\n }\n\n this.renderedFrame = timeRemapped;\n } else {\n this.renderedFrame = num / this.data.sr;\n }\n\n var i;\n var len = this.elements.length;\n\n if (!this.completeLayers) {\n this.checkLayers(this.renderedFrame);\n } // This iteration needs to be backwards because of how expressions connect between each other\n\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].prepareFrame(this.renderedFrame - this.layers[i].st);\n\n if (this.elements[i]._mdf) {\n this._mdf = true;\n }\n }\n }\n };\n\n ICompElement.prototype.renderInnerContent = function () {\n var i;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n };\n\n ICompElement.prototype.setElements = function (elems) {\n this.elements = elems;\n };\n\n ICompElement.prototype.getElements = function () {\n return this.elements;\n };\n\n ICompElement.prototype.destroyElements = function () {\n var i;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i]) {\n this.elements[i].destroy();\n }\n }\n };\n\n ICompElement.prototype.destroy = function () {\n this.destroyElements();\n this.destroyBaseElement();\n };\n\n function SVGCompElement(data, globalData, comp) {\n this.layers = data.layers;\n this.supports3d = true;\n this.completeLayers = false;\n this.pendingElements = [];\n this.elements = this.layers ? createSizedArray(this.layers.length) : [];\n this.initElement(data, globalData, comp);\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n }\n\n extendPrototype([SVGRendererBase, ICompElement, SVGBaseElement], SVGCompElement);\n\n SVGCompElement.prototype.createComp = function (data) {\n return new SVGCompElement(data, this.globalData, this);\n };\n\n function SVGRenderer(animationItem, config) {\n this.animationItem = animationItem;\n this.layers = null;\n this.renderedFrame = -1;\n this.svgElement = createNS('svg');\n var ariaLabel = '';\n\n if (config && config.title) {\n var titleElement = createNS('title');\n var titleId = createElementID();\n titleElement.setAttribute('id', titleId);\n titleElement.textContent = config.title;\n this.svgElement.appendChild(titleElement);\n ariaLabel += titleId;\n }\n\n if (config && config.description) {\n var descElement = createNS('desc');\n var descId = createElementID();\n descElement.setAttribute('id', descId);\n descElement.textContent = config.description;\n this.svgElement.appendChild(descElement);\n ariaLabel += ' ' + descId;\n }\n\n if (ariaLabel) {\n this.svgElement.setAttribute('aria-labelledby', ariaLabel);\n }\n\n var defs = createNS('defs');\n this.svgElement.appendChild(defs);\n var maskElement = createNS('g');\n this.svgElement.appendChild(maskElement);\n this.layerElement = maskElement;\n this.renderConfig = {\n preserveAspectRatio: config && config.preserveAspectRatio || 'xMidYMid meet',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n contentVisibility: config && config.contentVisibility || 'visible',\n progressiveLoad: config && config.progressiveLoad || false,\n hideOnTransparent: !(config && config.hideOnTransparent === false),\n viewBoxOnly: config && config.viewBoxOnly || false,\n viewBoxSize: config && config.viewBoxSize || false,\n className: config && config.className || '',\n id: config && config.id || '',\n focusable: config && config.focusable,\n filterSize: {\n width: config && config.filterSize && config.filterSize.width || '100%',\n height: config && config.filterSize && config.filterSize.height || '100%',\n x: config && config.filterSize && config.filterSize.x || '0%',\n y: config && config.filterSize && config.filterSize.y || '0%'\n }\n };\n this.globalData = {\n _mdf: false,\n frameNum: -1,\n defs: defs,\n renderConfig: this.renderConfig\n };\n this.elements = [];\n this.pendingElements = [];\n this.destroyed = false;\n this.rendererType = 'svg';\n }\n\n extendPrototype([SVGRendererBase], SVGRenderer);\n\n SVGRenderer.prototype.createComp = function (data) {\n return new SVGCompElement(data, this.globalData, this);\n };\n\n function CVContextData() {\n this.saved = [];\n this.cArrPos = 0;\n this.cTr = new Matrix();\n this.cO = 1;\n var i;\n var len = 15;\n this.savedOp = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n this.saved[i] = createTypedArray('float32', 16);\n }\n\n this._length = len;\n }\n\n CVContextData.prototype.duplicate = function () {\n var newLength = this._length * 2;\n var currentSavedOp = this.savedOp;\n this.savedOp = createTypedArray('float32', newLength);\n this.savedOp.set(currentSavedOp);\n var i = 0;\n\n for (i = this._length; i < newLength; i += 1) {\n this.saved[i] = createTypedArray('float32', 16);\n }\n\n this._length = newLength;\n };\n\n CVContextData.prototype.reset = function () {\n this.cArrPos = 0;\n this.cTr.reset();\n this.cO = 1;\n };\n\n function ShapeTransformManager() {\n this.sequences = {};\n this.sequenceList = [];\n this.transform_key_count = 0;\n }\n\n ShapeTransformManager.prototype = {\n addTransformSequence: function addTransformSequence(transforms) {\n var i;\n var len = transforms.length;\n var key = '_';\n\n for (i = 0; i < len; i += 1) {\n key += transforms[i].transform.key + '_';\n }\n\n var sequence = this.sequences[key];\n\n if (!sequence) {\n sequence = {\n transforms: [].concat(transforms),\n finalTransform: new Matrix(),\n _mdf: false\n };\n this.sequences[key] = sequence;\n this.sequenceList.push(sequence);\n }\n\n return sequence;\n },\n processSequence: function processSequence(sequence, isFirstFrame) {\n var i = 0;\n var len = sequence.transforms.length;\n var _mdf = isFirstFrame;\n\n while (i < len && !isFirstFrame) {\n if (sequence.transforms[i].transform.mProps._mdf) {\n _mdf = true;\n break;\n }\n\n i += 1;\n }\n\n if (_mdf) {\n var props;\n sequence.finalTransform.reset();\n\n for (i = len - 1; i >= 0; i -= 1) {\n props = sequence.transforms[i].transform.mProps.v.props;\n sequence.finalTransform.transform(props[0], props[1], props[2], props[3], props[4], props[5], props[6], props[7], props[8], props[9], props[10], props[11], props[12], props[13], props[14], props[15]);\n }\n }\n\n sequence._mdf = _mdf;\n },\n processSequences: function processSequences(isFirstFrame) {\n var i;\n var len = this.sequenceList.length;\n\n for (i = 0; i < len; i += 1) {\n this.processSequence(this.sequenceList[i], isFirstFrame);\n }\n },\n getNewKey: function getNewKey() {\n this.transform_key_count += 1;\n return '_' + this.transform_key_count;\n }\n };\n\n function CVEffects() {}\n\n CVEffects.prototype.renderFrame = function () {};\n\n function CVMaskElement(data, element) {\n this.data = data;\n this.element = element;\n this.masksProperties = this.data.masksProperties || [];\n this.viewData = createSizedArray(this.masksProperties.length);\n var i;\n var len = this.masksProperties.length;\n var hasMasks = false;\n\n for (i = 0; i < len; i += 1) {\n if (this.masksProperties[i].mode !== 'n') {\n hasMasks = true;\n }\n\n this.viewData[i] = ShapePropertyFactory.getShapeProp(this.element, this.masksProperties[i], 3);\n }\n\n this.hasMasks = hasMasks;\n\n if (hasMasks) {\n this.element.addRenderableComponent(this);\n }\n }\n\n CVMaskElement.prototype.renderFrame = function () {\n if (!this.hasMasks) {\n return;\n }\n\n var transform = this.element.finalTransform.mat;\n var ctx = this.element.canvasContext;\n var i;\n var len = this.masksProperties.length;\n var pt;\n var pts;\n var data;\n ctx.beginPath();\n\n for (i = 0; i < len; i += 1) {\n if (this.masksProperties[i].mode !== 'n') {\n if (this.masksProperties[i].inv) {\n ctx.moveTo(0, 0);\n ctx.lineTo(this.element.globalData.compSize.w, 0);\n ctx.lineTo(this.element.globalData.compSize.w, this.element.globalData.compSize.h);\n ctx.lineTo(0, this.element.globalData.compSize.h);\n ctx.lineTo(0, 0);\n }\n\n data = this.viewData[i].v;\n pt = transform.applyToPointArray(data.v[0][0], data.v[0][1], 0);\n ctx.moveTo(pt[0], pt[1]);\n var j;\n var jLen = data._length;\n\n for (j = 1; j < jLen; j += 1) {\n pts = transform.applyToTriplePoints(data.o[j - 1], data.i[j], data.v[j]);\n ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\n }\n\n pts = transform.applyToTriplePoints(data.o[j - 1], data.i[0], data.v[0]);\n ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\n }\n }\n\n this.element.globalData.renderer.save(true);\n ctx.clip();\n };\n\n CVMaskElement.prototype.getMaskProperty = MaskElement.prototype.getMaskProperty;\n\n CVMaskElement.prototype.destroy = function () {\n this.element = null;\n };\n\n function CVBaseElement() {}\n\n CVBaseElement.prototype = {\n createElements: function createElements() {},\n initRendererElement: function initRendererElement() {},\n createContainerElements: function createContainerElements() {\n this.canvasContext = this.globalData.canvasContext;\n this.renderableEffectsManager = new CVEffects(this);\n },\n createContent: function createContent() {},\n setBlendMode: function setBlendMode() {\n var globalData = this.globalData;\n\n if (globalData.blendMode !== this.data.bm) {\n globalData.blendMode = this.data.bm;\n var blendModeValue = getBlendMode(this.data.bm);\n globalData.canvasContext.globalCompositeOperation = blendModeValue;\n }\n },\n createRenderableComponents: function createRenderableComponents() {\n this.maskManager = new CVMaskElement(this.data, this);\n },\n hideElement: function hideElement() {\n if (!this.hidden && (!this.isInRange || this.isTransparent)) {\n this.hidden = true;\n }\n },\n showElement: function showElement() {\n if (this.isInRange && !this.isTransparent) {\n this.hidden = false;\n this._isFirstFrame = true;\n this.maskManager._isFirstFrame = true;\n }\n },\n renderFrame: function renderFrame() {\n if (this.hidden || this.data.hd) {\n return;\n }\n\n this.renderTransform();\n this.renderRenderable();\n this.setBlendMode();\n var forceRealStack = this.data.ty === 0;\n this.globalData.renderer.save(forceRealStack);\n this.globalData.renderer.ctxTransform(this.finalTransform.mat.props);\n this.globalData.renderer.ctxOpacity(this.finalTransform.mProp.o.v);\n this.renderInnerContent();\n this.globalData.renderer.restore(forceRealStack);\n\n if (this.maskManager.hasMasks) {\n this.globalData.renderer.restore(true);\n }\n\n if (this._isFirstFrame) {\n this._isFirstFrame = false;\n }\n },\n destroy: function destroy() {\n this.canvasContext = null;\n this.data = null;\n this.globalData = null;\n this.maskManager.destroy();\n },\n mHelper: new Matrix()\n };\n CVBaseElement.prototype.hide = CVBaseElement.prototype.hideElement;\n CVBaseElement.prototype.show = CVBaseElement.prototype.showElement;\n\n function CVShapeData(element, data, styles, transformsManager) {\n this.styledShapes = [];\n this.tr = [0, 0, 0, 0, 0, 0];\n var ty = 4;\n\n if (data.ty === 'rc') {\n ty = 5;\n } else if (data.ty === 'el') {\n ty = 6;\n } else if (data.ty === 'sr') {\n ty = 7;\n }\n\n this.sh = ShapePropertyFactory.getShapeProp(element, data, ty, element);\n var i;\n var len = styles.length;\n var styledShape;\n\n for (i = 0; i < len; i += 1) {\n if (!styles[i].closed) {\n styledShape = {\n transforms: transformsManager.addTransformSequence(styles[i].transforms),\n trNodes: []\n };\n this.styledShapes.push(styledShape);\n styles[i].elements.push(styledShape);\n }\n }\n }\n\n CVShapeData.prototype.setAsAnimated = SVGShapeData.prototype.setAsAnimated;\n\n function CVShapeElement(data, globalData, comp) {\n this.shapes = [];\n this.shapesData = data.shapes;\n this.stylesList = [];\n this.itemsData = [];\n this.prevViewData = [];\n this.shapeModifiers = [];\n this.processedElements = [];\n this.transformsManager = new ShapeTransformManager();\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableElement], CVShapeElement);\n CVShapeElement.prototype.initElement = RenderableDOMElement.prototype.initElement;\n CVShapeElement.prototype.transformHelper = {\n opacity: 1,\n _opMdf: false\n };\n CVShapeElement.prototype.dashResetter = [];\n\n CVShapeElement.prototype.createContent = function () {\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\n };\n\n CVShapeElement.prototype.createStyleElement = function (data, transforms) {\n var styleElem = {\n data: data,\n type: data.ty,\n preTransforms: this.transformsManager.addTransformSequence(transforms),\n transforms: [],\n elements: [],\n closed: data.hd === true\n };\n var elementData = {};\n\n if (data.ty === 'fl' || data.ty === 'st') {\n elementData.c = PropertyFactory.getProp(this, data.c, 1, 255, this);\n\n if (!elementData.c.k) {\n styleElem.co = 'rgb(' + bmFloor(elementData.c.v[0]) + ',' + bmFloor(elementData.c.v[1]) + ',' + bmFloor(elementData.c.v[2]) + ')';\n }\n } else if (data.ty === 'gf' || data.ty === 'gs') {\n elementData.s = PropertyFactory.getProp(this, data.s, 1, null, this);\n elementData.e = PropertyFactory.getProp(this, data.e, 1, null, this);\n elementData.h = PropertyFactory.getProp(this, data.h || {\n k: 0\n }, 0, 0.01, this);\n elementData.a = PropertyFactory.getProp(this, data.a || {\n k: 0\n }, 0, degToRads, this);\n elementData.g = new GradientProperty(this, data.g, this);\n }\n\n elementData.o = PropertyFactory.getProp(this, data.o, 0, 0.01, this);\n\n if (data.ty === 'st' || data.ty === 'gs') {\n styleElem.lc = lineCapEnum[data.lc || 2];\n styleElem.lj = lineJoinEnum[data.lj || 2];\n\n if (data.lj == 1) {\n // eslint-disable-line eqeqeq\n styleElem.ml = data.ml;\n }\n\n elementData.w = PropertyFactory.getProp(this, data.w, 0, null, this);\n\n if (!elementData.w.k) {\n styleElem.wi = elementData.w.v;\n }\n\n if (data.d) {\n var d = new DashProperty(this, data.d, 'canvas', this);\n elementData.d = d;\n\n if (!elementData.d.k) {\n styleElem.da = elementData.d.dashArray;\n styleElem[\"do\"] = elementData.d.dashoffset[0];\n }\n }\n } else {\n styleElem.r = data.r === 2 ? 'evenodd' : 'nonzero';\n }\n\n this.stylesList.push(styleElem);\n elementData.style = styleElem;\n return elementData;\n };\n\n CVShapeElement.prototype.createGroupElement = function () {\n var elementData = {\n it: [],\n prevViewData: []\n };\n return elementData;\n };\n\n CVShapeElement.prototype.createTransformElement = function (data) {\n var elementData = {\n transform: {\n opacity: 1,\n _opMdf: false,\n key: this.transformsManager.getNewKey(),\n op: PropertyFactory.getProp(this, data.o, 0, 0.01, this),\n mProps: TransformPropertyFactory.getTransformProperty(this, data, this)\n }\n };\n return elementData;\n };\n\n CVShapeElement.prototype.createShapeElement = function (data) {\n var elementData = new CVShapeData(this, data, this.stylesList, this.transformsManager);\n this.shapes.push(elementData);\n this.addShapeToModifiers(elementData);\n return elementData;\n };\n\n CVShapeElement.prototype.reloadShapes = function () {\n this._isFirstFrame = true;\n var i;\n var len = this.itemsData.length;\n\n for (i = 0; i < len; i += 1) {\n this.prevViewData[i] = this.itemsData[i];\n }\n\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\n len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n }\n\n this.renderModifiers();\n this.transformsManager.processSequences(this._isFirstFrame);\n };\n\n CVShapeElement.prototype.addTransformToStyleList = function (transform) {\n var i;\n var len = this.stylesList.length;\n\n for (i = 0; i < len; i += 1) {\n if (!this.stylesList[i].closed) {\n this.stylesList[i].transforms.push(transform);\n }\n }\n };\n\n CVShapeElement.prototype.removeTransformFromStyleList = function () {\n var i;\n var len = this.stylesList.length;\n\n for (i = 0; i < len; i += 1) {\n if (!this.stylesList[i].closed) {\n this.stylesList[i].transforms.pop();\n }\n }\n };\n\n CVShapeElement.prototype.closeStyles = function (styles) {\n var i;\n var len = styles.length;\n\n for (i = 0; i < len; i += 1) {\n styles[i].closed = true;\n }\n };\n\n CVShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, shouldRender, transforms) {\n var i;\n var len = arr.length - 1;\n var j;\n var jLen;\n var ownStyles = [];\n var ownModifiers = [];\n var processedPos;\n var modifier;\n var currentTransform;\n var ownTransforms = [].concat(transforms);\n\n for (i = len; i >= 0; i -= 1) {\n processedPos = this.searchProcessedElement(arr[i]);\n\n if (!processedPos) {\n arr[i]._shouldRender = shouldRender;\n } else {\n itemsData[i] = prevViewData[processedPos - 1];\n }\n\n if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs') {\n if (!processedPos) {\n itemsData[i] = this.createStyleElement(arr[i], ownTransforms);\n } else {\n itemsData[i].style.closed = false;\n }\n\n ownStyles.push(itemsData[i].style);\n } else if (arr[i].ty === 'gr') {\n if (!processedPos) {\n itemsData[i] = this.createGroupElement(arr[i]);\n } else {\n jLen = itemsData[i].it.length;\n\n for (j = 0; j < jLen; j += 1) {\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\n }\n }\n\n this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, shouldRender, ownTransforms);\n } else if (arr[i].ty === 'tr') {\n if (!processedPos) {\n currentTransform = this.createTransformElement(arr[i]);\n itemsData[i] = currentTransform;\n }\n\n ownTransforms.push(itemsData[i]);\n this.addTransformToStyleList(itemsData[i]);\n } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\n if (!processedPos) {\n itemsData[i] = this.createShapeElement(arr[i]);\n }\n } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'pb') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n modifier.init(this, arr[i]);\n itemsData[i] = modifier;\n this.shapeModifiers.push(modifier);\n } else {\n modifier = itemsData[i];\n modifier.closed = false;\n }\n\n ownModifiers.push(modifier);\n } else if (arr[i].ty === 'rp') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n itemsData[i] = modifier;\n modifier.init(this, arr, i, itemsData);\n this.shapeModifiers.push(modifier);\n shouldRender = false;\n } else {\n modifier = itemsData[i];\n modifier.closed = true;\n }\n\n ownModifiers.push(modifier);\n }\n\n this.addProcessedElement(arr[i], i + 1);\n }\n\n this.removeTransformFromStyleList();\n this.closeStyles(ownStyles);\n len = ownModifiers.length;\n\n for (i = 0; i < len; i += 1) {\n ownModifiers[i].closed = true;\n }\n };\n\n CVShapeElement.prototype.renderInnerContent = function () {\n this.transformHelper.opacity = 1;\n this.transformHelper._opMdf = false;\n this.renderModifiers();\n this.transformsManager.processSequences(this._isFirstFrame);\n this.renderShape(this.transformHelper, this.shapesData, this.itemsData, true);\n };\n\n CVShapeElement.prototype.renderShapeTransform = function (parentTransform, groupTransform) {\n if (parentTransform._opMdf || groupTransform.op._mdf || this._isFirstFrame) {\n groupTransform.opacity = parentTransform.opacity;\n groupTransform.opacity *= groupTransform.op.v;\n groupTransform._opMdf = true;\n }\n };\n\n CVShapeElement.prototype.drawLayer = function () {\n var i;\n var len = this.stylesList.length;\n var j;\n var jLen;\n var k;\n var kLen;\n var elems;\n var nodes;\n var renderer = this.globalData.renderer;\n var ctx = this.globalData.canvasContext;\n var type;\n var currentStyle;\n\n for (i = 0; i < len; i += 1) {\n currentStyle = this.stylesList[i];\n type = currentStyle.type; // Skipping style when\n // Stroke width equals 0\n // style should not be rendered (extra unused repeaters)\n // current opacity equals 0\n // global opacity equals 0\n\n if (!((type === 'st' || type === 'gs') && currentStyle.wi === 0 || !currentStyle.data._shouldRender || currentStyle.coOp === 0 || this.globalData.currentGlobalAlpha === 0)) {\n renderer.save();\n elems = currentStyle.elements;\n\n if (type === 'st' || type === 'gs') {\n ctx.strokeStyle = type === 'st' ? currentStyle.co : currentStyle.grd;\n ctx.lineWidth = currentStyle.wi;\n ctx.lineCap = currentStyle.lc;\n ctx.lineJoin = currentStyle.lj;\n ctx.miterLimit = currentStyle.ml || 0;\n } else {\n ctx.fillStyle = type === 'fl' ? currentStyle.co : currentStyle.grd;\n }\n\n renderer.ctxOpacity(currentStyle.coOp);\n\n if (type !== 'st' && type !== 'gs') {\n ctx.beginPath();\n }\n\n renderer.ctxTransform(currentStyle.preTransforms.finalTransform.props);\n jLen = elems.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (type === 'st' || type === 'gs') {\n ctx.beginPath();\n\n if (currentStyle.da) {\n ctx.setLineDash(currentStyle.da);\n ctx.lineDashOffset = currentStyle[\"do\"];\n }\n }\n\n nodes = elems[j].trNodes;\n kLen = nodes.length;\n\n for (k = 0; k < kLen; k += 1) {\n if (nodes[k].t === 'm') {\n ctx.moveTo(nodes[k].p[0], nodes[k].p[1]);\n } else if (nodes[k].t === 'c') {\n ctx.bezierCurveTo(nodes[k].pts[0], nodes[k].pts[1], nodes[k].pts[2], nodes[k].pts[3], nodes[k].pts[4], nodes[k].pts[5]);\n } else {\n ctx.closePath();\n }\n }\n\n if (type === 'st' || type === 'gs') {\n ctx.stroke();\n\n if (currentStyle.da) {\n ctx.setLineDash(this.dashResetter);\n }\n }\n }\n\n if (type !== 'st' && type !== 'gs') {\n ctx.fill(currentStyle.r);\n }\n\n renderer.restore();\n }\n }\n };\n\n CVShapeElement.prototype.renderShape = function (parentTransform, items, data, isMain) {\n var i;\n var len = items.length - 1;\n var groupTransform;\n groupTransform = parentTransform;\n\n for (i = len; i >= 0; i -= 1) {\n if (items[i].ty === 'tr') {\n groupTransform = data[i].transform;\n this.renderShapeTransform(parentTransform, groupTransform);\n } else if (items[i].ty === 'sh' || items[i].ty === 'el' || items[i].ty === 'rc' || items[i].ty === 'sr') {\n this.renderPath(items[i], data[i]);\n } else if (items[i].ty === 'fl') {\n this.renderFill(items[i], data[i], groupTransform);\n } else if (items[i].ty === 'st') {\n this.renderStroke(items[i], data[i], groupTransform);\n } else if (items[i].ty === 'gf' || items[i].ty === 'gs') {\n this.renderGradientFill(items[i], data[i], groupTransform);\n } else if (items[i].ty === 'gr') {\n this.renderShape(groupTransform, items[i].it, data[i].it);\n } else if (items[i].ty === 'tm') {//\n }\n }\n\n if (isMain) {\n this.drawLayer();\n }\n };\n\n CVShapeElement.prototype.renderStyledShape = function (styledShape, shape) {\n if (this._isFirstFrame || shape._mdf || styledShape.transforms._mdf) {\n var shapeNodes = styledShape.trNodes;\n var paths = shape.paths;\n var i;\n var len;\n var j;\n var jLen = paths._length;\n shapeNodes.length = 0;\n var groupTransformMat = styledShape.transforms.finalTransform;\n\n for (j = 0; j < jLen; j += 1) {\n var pathNodes = paths.shapes[j];\n\n if (pathNodes && pathNodes.v) {\n len = pathNodes._length;\n\n for (i = 1; i < len; i += 1) {\n if (i === 1) {\n shapeNodes.push({\n t: 'm',\n p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0)\n });\n }\n\n shapeNodes.push({\n t: 'c',\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[i], pathNodes.v[i])\n });\n }\n\n if (len === 1) {\n shapeNodes.push({\n t: 'm',\n p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0)\n });\n }\n\n if (pathNodes.c && len) {\n shapeNodes.push({\n t: 'c',\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[0], pathNodes.v[0])\n });\n shapeNodes.push({\n t: 'z'\n });\n }\n }\n }\n\n styledShape.trNodes = shapeNodes;\n }\n };\n\n CVShapeElement.prototype.renderPath = function (pathData, itemData) {\n if (pathData.hd !== true && pathData._shouldRender) {\n var i;\n var len = itemData.styledShapes.length;\n\n for (i = 0; i < len; i += 1) {\n this.renderStyledShape(itemData.styledShapes[i], itemData.sh);\n }\n }\n };\n\n CVShapeElement.prototype.renderFill = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n\n if (itemData.c._mdf || this._isFirstFrame) {\n styleElem.co = 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')';\n }\n\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n }\n };\n\n CVShapeElement.prototype.renderGradientFill = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n var grd;\n\n if (!styleElem.grd || itemData.g._mdf || itemData.s._mdf || itemData.e._mdf || styleData.t !== 1 && (itemData.h._mdf || itemData.a._mdf)) {\n var ctx = this.globalData.canvasContext;\n var pt1 = itemData.s.v;\n var pt2 = itemData.e.v;\n\n if (styleData.t === 1) {\n grd = ctx.createLinearGradient(pt1[0], pt1[1], pt2[0], pt2[1]);\n } else {\n var rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\n var percent = itemData.h.v;\n\n if (percent >= 1) {\n percent = 0.99;\n } else if (percent <= -1) {\n percent = -0.99;\n }\n\n var dist = rad * percent;\n var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\n var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\n grd = ctx.createRadialGradient(x, y, 0, pt1[0], pt1[1], rad);\n }\n\n var i;\n var len = styleData.g.p;\n var cValues = itemData.g.c;\n var opacity = 1;\n\n for (i = 0; i < len; i += 1) {\n if (itemData.g._hasOpacity && itemData.g._collapsable) {\n opacity = itemData.g.o[i * 2 + 1];\n }\n\n grd.addColorStop(cValues[i * 4] / 100, 'rgba(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ',' + opacity + ')');\n }\n\n styleElem.grd = grd;\n }\n\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n };\n\n CVShapeElement.prototype.renderStroke = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n var d = itemData.d;\n\n if (d && (d._mdf || this._isFirstFrame)) {\n styleElem.da = d.dashArray;\n styleElem[\"do\"] = d.dashoffset[0];\n }\n\n if (itemData.c._mdf || this._isFirstFrame) {\n styleElem.co = 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')';\n }\n\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n }\n\n if (itemData.w._mdf || this._isFirstFrame) {\n styleElem.wi = itemData.w.v;\n }\n };\n\n CVShapeElement.prototype.destroy = function () {\n this.shapesData = null;\n this.globalData = null;\n this.canvasContext = null;\n this.stylesList.length = 0;\n this.itemsData.length = 0;\n };\n\n function CVTextElement(data, globalData, comp) {\n this.textSpans = [];\n this.yOffset = 0;\n this.fillColorAnim = false;\n this.strokeColorAnim = false;\n this.strokeWidthAnim = false;\n this.stroke = false;\n this.fill = false;\n this.justifyOffset = 0;\n this.currentRender = null;\n this.renderType = 'canvas';\n this.values = {\n fill: 'rgba(0,0,0,0)',\n stroke: 'rgba(0,0,0,0)',\n sWidth: 0,\n fValue: ''\n };\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement, ITextElement], CVTextElement);\n CVTextElement.prototype.tHelper = createTag('canvas').getContext('2d');\n\n CVTextElement.prototype.buildNewText = function () {\n var documentData = this.textProperty.currentData;\n this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\n var hasFill = false;\n\n if (documentData.fc) {\n hasFill = true;\n this.values.fill = this.buildColor(documentData.fc);\n } else {\n this.values.fill = 'rgba(0,0,0,0)';\n }\n\n this.fill = hasFill;\n var hasStroke = false;\n\n if (documentData.sc) {\n hasStroke = true;\n this.values.stroke = this.buildColor(documentData.sc);\n this.values.sWidth = documentData.sw;\n }\n\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n var i;\n var len;\n var letters = documentData.l;\n var matrixHelper = this.mHelper;\n this.stroke = hasStroke;\n this.values.fValue = documentData.finalSize + 'px ' + this.globalData.fontManager.getFontByName(documentData.f).fFamily;\n len = documentData.finalText.length; // this.tHelper.font = this.values.fValue;\n\n var charData;\n var shapeData;\n var k;\n var kLen;\n var shapes;\n var j;\n var jLen;\n var pathNodes;\n var commands;\n var pathArr;\n var singleShape = this.data.singleShape;\n var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\n var xPos = 0;\n var yPos = 0;\n var firstLine = true;\n var cnt = 0;\n\n for (i = 0; i < len; i += 1) {\n charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n shapeData = charData && charData.data || {};\n matrixHelper.reset();\n\n if (singleShape && letters[i].n) {\n xPos = -trackingOffset;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n firstLine = false;\n }\n\n shapes = shapeData.shapes ? shapeData.shapes[0].it : [];\n jLen = shapes.length;\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\n\n if (singleShape) {\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\n }\n\n commands = createSizedArray(jLen - 1);\n var commandsCounter = 0;\n\n for (j = 0; j < jLen; j += 1) {\n if (shapes[j].ty === 'sh') {\n kLen = shapes[j].ks.k.i.length;\n pathNodes = shapes[j].ks.k;\n pathArr = [];\n\n for (k = 1; k < kLen; k += 1) {\n if (k === 1) {\n pathArr.push(matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));\n }\n\n pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToY(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToX(pathNodes.v[k][0], pathNodes.v[k][1], 0), matrixHelper.applyToY(pathNodes.v[k][0], pathNodes.v[k][1], 0));\n }\n\n pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToY(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));\n commands[commandsCounter] = pathArr;\n commandsCounter += 1;\n }\n }\n\n if (singleShape) {\n xPos += letters[i].l;\n xPos += trackingOffset;\n }\n\n if (this.textSpans[cnt]) {\n this.textSpans[cnt].elem = commands;\n } else {\n this.textSpans[cnt] = {\n elem: commands\n };\n }\n\n cnt += 1;\n }\n };\n\n CVTextElement.prototype.renderInnerContent = function () {\n var ctx = this.canvasContext;\n ctx.font = this.values.fValue;\n ctx.lineCap = 'butt';\n ctx.lineJoin = 'miter';\n ctx.miterLimit = 4;\n\n if (!this.data.singleShape) {\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n }\n\n var i;\n var len;\n var j;\n var jLen;\n var k;\n var kLen;\n var renderedLetters = this.textAnimator.renderedLetters;\n var letters = this.textProperty.currentData.l;\n len = letters.length;\n var renderedLetter;\n var lastFill = null;\n var lastStroke = null;\n var lastStrokeW = null;\n var commands;\n var pathArr;\n\n for (i = 0; i < len; i += 1) {\n if (!letters[i].n) {\n renderedLetter = renderedLetters[i];\n\n if (renderedLetter) {\n this.globalData.renderer.save();\n this.globalData.renderer.ctxTransform(renderedLetter.p);\n this.globalData.renderer.ctxOpacity(renderedLetter.o);\n }\n\n if (this.fill) {\n if (renderedLetter && renderedLetter.fc) {\n if (lastFill !== renderedLetter.fc) {\n lastFill = renderedLetter.fc;\n ctx.fillStyle = renderedLetter.fc;\n }\n } else if (lastFill !== this.values.fill) {\n lastFill = this.values.fill;\n ctx.fillStyle = this.values.fill;\n }\n\n commands = this.textSpans[i].elem;\n jLen = commands.length;\n this.globalData.canvasContext.beginPath();\n\n for (j = 0; j < jLen; j += 1) {\n pathArr = commands[j];\n kLen = pathArr.length;\n this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\n\n for (k = 2; k < kLen; k += 6) {\n this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\n }\n }\n\n this.globalData.canvasContext.closePath();\n this.globalData.canvasContext.fill(); /// ctx.fillText(this.textSpans[i].val,0,0);\n }\n\n if (this.stroke) {\n if (renderedLetter && renderedLetter.sw) {\n if (lastStrokeW !== renderedLetter.sw) {\n lastStrokeW = renderedLetter.sw;\n ctx.lineWidth = renderedLetter.sw;\n }\n } else if (lastStrokeW !== this.values.sWidth) {\n lastStrokeW = this.values.sWidth;\n ctx.lineWidth = this.values.sWidth;\n }\n\n if (renderedLetter && renderedLetter.sc) {\n if (lastStroke !== renderedLetter.sc) {\n lastStroke = renderedLetter.sc;\n ctx.strokeStyle = renderedLetter.sc;\n }\n } else if (lastStroke !== this.values.stroke) {\n lastStroke = this.values.stroke;\n ctx.strokeStyle = this.values.stroke;\n }\n\n commands = this.textSpans[i].elem;\n jLen = commands.length;\n this.globalData.canvasContext.beginPath();\n\n for (j = 0; j < jLen; j += 1) {\n pathArr = commands[j];\n kLen = pathArr.length;\n this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\n\n for (k = 2; k < kLen; k += 6) {\n this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\n }\n }\n\n this.globalData.canvasContext.closePath();\n this.globalData.canvasContext.stroke(); /// ctx.strokeText(letters[i].val,0,0);\n }\n\n if (renderedLetter) {\n this.globalData.renderer.restore();\n }\n }\n }\n };\n\n function CVImageElement(data, globalData, comp) {\n this.assetData = globalData.getAssetData(data.refId);\n this.img = globalData.imageLoader.getAsset(this.assetData);\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVImageElement);\n CVImageElement.prototype.initElement = SVGShapeElement.prototype.initElement;\n CVImageElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\n\n CVImageElement.prototype.createContent = function () {\n if (this.img.width && (this.assetData.w !== this.img.width || this.assetData.h !== this.img.height)) {\n var canvas = createTag('canvas');\n canvas.width = this.assetData.w;\n canvas.height = this.assetData.h;\n var ctx = canvas.getContext('2d');\n var imgW = this.img.width;\n var imgH = this.img.height;\n var imgRel = imgW / imgH;\n var canvasRel = this.assetData.w / this.assetData.h;\n var widthCrop;\n var heightCrop;\n var par = this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio;\n\n if (imgRel > canvasRel && par === 'xMidYMid slice' || imgRel < canvasRel && par !== 'xMidYMid slice') {\n heightCrop = imgH;\n widthCrop = heightCrop * canvasRel;\n } else {\n widthCrop = imgW;\n heightCrop = widthCrop / canvasRel;\n }\n\n ctx.drawImage(this.img, (imgW - widthCrop) / 2, (imgH - heightCrop) / 2, widthCrop, heightCrop, 0, 0, this.assetData.w, this.assetData.h);\n this.img = canvas;\n }\n };\n\n CVImageElement.prototype.renderInnerContent = function () {\n this.canvasContext.drawImage(this.img, 0, 0);\n };\n\n CVImageElement.prototype.destroy = function () {\n this.img = null;\n };\n\n function CVSolidElement(data, globalData, comp) {\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVSolidElement);\n CVSolidElement.prototype.initElement = SVGShapeElement.prototype.initElement;\n CVSolidElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\n\n CVSolidElement.prototype.renderInnerContent = function () {\n var ctx = this.canvasContext;\n ctx.fillStyle = this.data.sc;\n ctx.fillRect(0, 0, this.data.sw, this.data.sh); //\n };\n\n function CanvasRendererBase(animationItem, config) {\n this.animationItem = animationItem;\n this.renderConfig = {\n clearCanvas: config && config.clearCanvas !== undefined ? config.clearCanvas : true,\n context: config && config.context || null,\n progressiveLoad: config && config.progressiveLoad || false,\n preserveAspectRatio: config && config.preserveAspectRatio || 'xMidYMid meet',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n contentVisibility: config && config.contentVisibility || 'visible',\n className: config && config.className || '',\n id: config && config.id || ''\n };\n this.renderConfig.dpr = config && config.dpr || 1;\n\n if (this.animationItem.wrapper) {\n this.renderConfig.dpr = config && config.dpr || window.devicePixelRatio || 1;\n }\n\n this.renderedFrame = -1;\n this.globalData = {\n frameNum: -1,\n _mdf: false,\n renderConfig: this.renderConfig,\n currentGlobalAlpha: -1\n };\n this.contextData = new CVContextData();\n this.elements = [];\n this.pendingElements = [];\n this.transformMat = new Matrix();\n this.completeLayers = false;\n this.rendererType = 'canvas';\n }\n\n extendPrototype([BaseRenderer], CanvasRendererBase);\n\n CanvasRendererBase.prototype.createShape = function (data) {\n return new CVShapeElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createText = function (data) {\n return new CVTextElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createImage = function (data) {\n return new CVImageElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createSolid = function (data) {\n return new CVSolidElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;\n\n CanvasRendererBase.prototype.ctxTransform = function (props) {\n if (props[0] === 1 && props[1] === 0 && props[4] === 0 && props[5] === 1 && props[12] === 0 && props[13] === 0) {\n return;\n }\n\n if (!this.renderConfig.clearCanvas) {\n this.canvasContext.transform(props[0], props[1], props[4], props[5], props[12], props[13]);\n return;\n }\n\n this.transformMat.cloneFromProps(props);\n var cProps = this.contextData.cTr.props;\n this.transformMat.transform(cProps[0], cProps[1], cProps[2], cProps[3], cProps[4], cProps[5], cProps[6], cProps[7], cProps[8], cProps[9], cProps[10], cProps[11], cProps[12], cProps[13], cProps[14], cProps[15]); // this.contextData.cTr.transform(props[0],props[1],props[2],props[3],props[4],props[5],props[6],props[7],props[8],props[9],props[10],props[11],props[12],props[13],props[14],props[15]);\n\n this.contextData.cTr.cloneFromProps(this.transformMat.props);\n var trProps = this.contextData.cTr.props;\n this.canvasContext.setTransform(trProps[0], trProps[1], trProps[4], trProps[5], trProps[12], trProps[13]);\n };\n\n CanvasRendererBase.prototype.ctxOpacity = function (op) {\n /* if(op === 1){\r\n return;\r\n } */\n if (!this.renderConfig.clearCanvas) {\n this.canvasContext.globalAlpha *= op < 0 ? 0 : op;\n this.globalData.currentGlobalAlpha = this.contextData.cO;\n return;\n }\n\n this.contextData.cO *= op < 0 ? 0 : op;\n\n if (this.globalData.currentGlobalAlpha !== this.contextData.cO) {\n this.canvasContext.globalAlpha = this.contextData.cO;\n this.globalData.currentGlobalAlpha = this.contextData.cO;\n }\n };\n\n CanvasRendererBase.prototype.reset = function () {\n if (!this.renderConfig.clearCanvas) {\n this.canvasContext.restore();\n return;\n }\n\n this.contextData.reset();\n };\n\n CanvasRendererBase.prototype.save = function (actionFlag) {\n if (!this.renderConfig.clearCanvas) {\n this.canvasContext.save();\n return;\n }\n\n if (actionFlag) {\n this.canvasContext.save();\n }\n\n var props = this.contextData.cTr.props;\n\n if (this.contextData._length <= this.contextData.cArrPos) {\n this.contextData.duplicate();\n }\n\n var i;\n var arr = this.contextData.saved[this.contextData.cArrPos];\n\n for (i = 0; i < 16; i += 1) {\n arr[i] = props[i];\n }\n\n this.contextData.savedOp[this.contextData.cArrPos] = this.contextData.cO;\n this.contextData.cArrPos += 1;\n };\n\n CanvasRendererBase.prototype.restore = function (actionFlag) {\n if (!this.renderConfig.clearCanvas) {\n this.canvasContext.restore();\n return;\n }\n\n if (actionFlag) {\n this.canvasContext.restore();\n this.globalData.blendMode = 'source-over';\n }\n\n this.contextData.cArrPos -= 1;\n var popped = this.contextData.saved[this.contextData.cArrPos];\n var i;\n var arr = this.contextData.cTr.props;\n\n for (i = 0; i < 16; i += 1) {\n arr[i] = popped[i];\n }\n\n this.canvasContext.setTransform(popped[0], popped[1], popped[4], popped[5], popped[12], popped[13]);\n popped = this.contextData.savedOp[this.contextData.cArrPos];\n this.contextData.cO = popped;\n\n if (this.globalData.currentGlobalAlpha !== popped) {\n this.canvasContext.globalAlpha = popped;\n this.globalData.currentGlobalAlpha = popped;\n }\n };\n\n CanvasRendererBase.prototype.configAnimation = function (animData) {\n if (this.animationItem.wrapper) {\n this.animationItem.container = createTag('canvas');\n var containerStyle = this.animationItem.container.style;\n containerStyle.width = '100%';\n containerStyle.height = '100%';\n var origin = '0px 0px 0px';\n containerStyle.transformOrigin = origin;\n containerStyle.mozTransformOrigin = origin;\n containerStyle.webkitTransformOrigin = origin;\n containerStyle['-webkit-transform'] = origin;\n containerStyle.contentVisibility = this.renderConfig.contentVisibility;\n this.animationItem.wrapper.appendChild(this.animationItem.container);\n this.canvasContext = this.animationItem.container.getContext('2d');\n\n if (this.renderConfig.className) {\n this.animationItem.container.setAttribute('class', this.renderConfig.className);\n }\n\n if (this.renderConfig.id) {\n this.animationItem.container.setAttribute('id', this.renderConfig.id);\n }\n } else {\n this.canvasContext = this.renderConfig.context;\n }\n\n this.data = animData;\n this.layers = animData.layers;\n this.transformCanvas = {\n w: animData.w,\n h: animData.h,\n sx: 0,\n sy: 0,\n tx: 0,\n ty: 0\n };\n this.setupGlobalData(animData, document.body);\n this.globalData.canvasContext = this.canvasContext;\n this.globalData.renderer = this;\n this.globalData.isDashed = false;\n this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\n this.globalData.transformCanvas = this.transformCanvas;\n this.elements = createSizedArray(animData.layers.length);\n this.updateContainerSize();\n };\n\n CanvasRendererBase.prototype.updateContainerSize = function () {\n this.reset();\n var elementWidth;\n var elementHeight;\n\n if (this.animationItem.wrapper && this.animationItem.container) {\n elementWidth = this.animationItem.wrapper.offsetWidth;\n elementHeight = this.animationItem.wrapper.offsetHeight;\n this.animationItem.container.setAttribute('width', elementWidth * this.renderConfig.dpr);\n this.animationItem.container.setAttribute('height', elementHeight * this.renderConfig.dpr);\n } else {\n elementWidth = this.canvasContext.canvas.width * this.renderConfig.dpr;\n elementHeight = this.canvasContext.canvas.height * this.renderConfig.dpr;\n }\n\n var elementRel;\n var animationRel;\n\n if (this.renderConfig.preserveAspectRatio.indexOf('meet') !== -1 || this.renderConfig.preserveAspectRatio.indexOf('slice') !== -1) {\n var par = this.renderConfig.preserveAspectRatio.split(' ');\n var fillType = par[1] || 'meet';\n var pos = par[0] || 'xMidYMid';\n var xPos = pos.substr(0, 4);\n var yPos = pos.substr(4);\n elementRel = elementWidth / elementHeight;\n animationRel = this.transformCanvas.w / this.transformCanvas.h;\n\n if (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice') {\n this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n this.transformCanvas.sy = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n } else {\n this.transformCanvas.sx = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n }\n\n if (xPos === 'xMid' && (animationRel < elementRel && fillType === 'meet' || animationRel > elementRel && fillType === 'slice')) {\n this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) / 2 * this.renderConfig.dpr;\n } else if (xPos === 'xMax' && (animationRel < elementRel && fillType === 'meet' || animationRel > elementRel && fillType === 'slice')) {\n this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) * this.renderConfig.dpr;\n } else {\n this.transformCanvas.tx = 0;\n }\n\n if (yPos === 'YMid' && (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice')) {\n this.transformCanvas.ty = (elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) / 2 * this.renderConfig.dpr;\n } else if (yPos === 'YMax' && (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice')) {\n this.transformCanvas.ty = (elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) * this.renderConfig.dpr;\n } else {\n this.transformCanvas.ty = 0;\n }\n } else if (this.renderConfig.preserveAspectRatio === 'none') {\n this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n this.transformCanvas.tx = 0;\n this.transformCanvas.ty = 0;\n } else {\n this.transformCanvas.sx = this.renderConfig.dpr;\n this.transformCanvas.sy = this.renderConfig.dpr;\n this.transformCanvas.tx = 0;\n this.transformCanvas.ty = 0;\n }\n\n this.transformCanvas.props = [this.transformCanvas.sx, 0, 0, 0, 0, this.transformCanvas.sy, 0, 0, 0, 0, 1, 0, this.transformCanvas.tx, this.transformCanvas.ty, 0, 1];\n /* var i, len = this.elements.length;\r\n for(i=0;i= 0; i -= 1) {\n if (this.elements[i]) {\n this.elements[i].destroy();\n }\n }\n\n this.elements.length = 0;\n this.globalData.canvasContext = null;\n this.animationItem.container = null;\n this.destroyed = true;\n };\n\n CanvasRendererBase.prototype.renderFrame = function (num, forceRender) {\n if (this.renderedFrame === num && this.renderConfig.clearCanvas === true && !forceRender || this.destroyed || num === -1) {\n return;\n }\n\n this.renderedFrame = num;\n this.globalData.frameNum = num - this.animationItem._isFirstFrame;\n this.globalData.frameId += 1;\n this.globalData._mdf = !this.renderConfig.clearCanvas || forceRender;\n this.globalData.projectInterface.currentFrame = num; // console.log('--------');\n // console.log('NEW: ',num);\n\n var i;\n var len = this.layers.length;\n\n if (!this.completeLayers) {\n this.checkLayers(num);\n }\n\n for (i = 0; i < len; i += 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].prepareFrame(num - this.layers[i].st);\n }\n }\n\n if (this.globalData._mdf) {\n if (this.renderConfig.clearCanvas === true) {\n this.canvasContext.clearRect(0, 0, this.transformCanvas.w, this.transformCanvas.h);\n } else {\n this.save();\n }\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n\n if (this.renderConfig.clearCanvas !== true) {\n this.restore();\n }\n }\n };\n\n CanvasRendererBase.prototype.buildItem = function (pos) {\n var elements = this.elements;\n\n if (elements[pos] || this.layers[pos].ty === 99) {\n return;\n }\n\n var element = this.createItem(this.layers[pos], this, this.globalData);\n elements[pos] = element;\n element.initExpressions();\n /* if(this.layers[pos].ty === 0){\r\n element.resize(this.globalData.transformCanvas);\r\n } */\n };\n\n CanvasRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n }\n };\n\n CanvasRendererBase.prototype.hide = function () {\n this.animationItem.container.style.display = 'none';\n };\n\n CanvasRendererBase.prototype.show = function () {\n this.animationItem.container.style.display = 'block';\n };\n\n function CVCompElement(data, globalData, comp) {\n this.completeLayers = false;\n this.layers = data.layers;\n this.pendingElements = [];\n this.elements = createSizedArray(this.layers.length);\n this.initElement(data, globalData, comp);\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n }\n\n extendPrototype([CanvasRendererBase, ICompElement, CVBaseElement], CVCompElement);\n\n CVCompElement.prototype.renderInnerContent = function () {\n var ctx = this.canvasContext;\n ctx.beginPath();\n ctx.moveTo(0, 0);\n ctx.lineTo(this.data.w, 0);\n ctx.lineTo(this.data.w, this.data.h);\n ctx.lineTo(0, this.data.h);\n ctx.lineTo(0, 0);\n ctx.clip();\n var i;\n var len = this.layers.length;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n };\n\n CVCompElement.prototype.destroy = function () {\n var i;\n var len = this.layers.length;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.elements[i]) {\n this.elements[i].destroy();\n }\n }\n\n this.layers = null;\n this.elements = null;\n };\n\n CVCompElement.prototype.createComp = function (data) {\n return new CVCompElement(data, this.globalData, this);\n };\n\n function CanvasRenderer(animationItem, config) {\n this.animationItem = animationItem;\n this.renderConfig = {\n clearCanvas: config && config.clearCanvas !== undefined ? config.clearCanvas : true,\n context: config && config.context || null,\n progressiveLoad: config && config.progressiveLoad || false,\n preserveAspectRatio: config && config.preserveAspectRatio || 'xMidYMid meet',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n contentVisibility: config && config.contentVisibility || 'visible',\n className: config && config.className || '',\n id: config && config.id || ''\n };\n this.renderConfig.dpr = config && config.dpr || 1;\n\n if (this.animationItem.wrapper) {\n this.renderConfig.dpr = config && config.dpr || window.devicePixelRatio || 1;\n }\n\n this.renderedFrame = -1;\n this.globalData = {\n frameNum: -1,\n _mdf: false,\n renderConfig: this.renderConfig,\n currentGlobalAlpha: -1\n };\n this.contextData = new CVContextData();\n this.elements = [];\n this.pendingElements = [];\n this.transformMat = new Matrix();\n this.completeLayers = false;\n this.rendererType = 'canvas';\n }\n\n extendPrototype([CanvasRendererBase], CanvasRenderer);\n\n CanvasRenderer.prototype.createComp = function (data) {\n return new CVCompElement(data, this.globalData, this);\n };\n\n function HBaseElement() {}\n\n HBaseElement.prototype = {\n checkBlendMode: function checkBlendMode() {},\n initRendererElement: function initRendererElement() {\n this.baseElement = createTag(this.data.tg || 'div');\n\n if (this.data.hasMask) {\n this.svgElement = createNS('svg');\n this.layerElement = createNS('g');\n this.maskedElement = this.layerElement;\n this.svgElement.appendChild(this.layerElement);\n this.baseElement.appendChild(this.svgElement);\n } else {\n this.layerElement = this.baseElement;\n }\n\n styleDiv(this.baseElement);\n },\n createContainerElements: function createContainerElements() {\n this.renderableEffectsManager = new CVEffects(this);\n this.transformedElement = this.baseElement;\n this.maskedElement = this.layerElement;\n\n if (this.data.ln) {\n this.layerElement.setAttribute('id', this.data.ln);\n }\n\n if (this.data.cl) {\n this.layerElement.setAttribute('class', this.data.cl);\n }\n\n if (this.data.bm !== 0) {\n this.setBlendMode();\n }\n },\n renderElement: function renderElement() {\n var transformedElementStyle = this.transformedElement ? this.transformedElement.style : {};\n\n if (this.finalTransform._matMdf) {\n var matrixValue = this.finalTransform.mat.toCSS();\n transformedElementStyle.transform = matrixValue;\n transformedElementStyle.webkitTransform = matrixValue;\n }\n\n if (this.finalTransform._opMdf) {\n transformedElementStyle.opacity = this.finalTransform.mProp.o.v;\n }\n },\n renderFrame: function renderFrame() {\n // If it is exported as hidden (data.hd === true) no need to render\n // If it is not visible no need to render\n if (this.data.hd || this.hidden) {\n return;\n }\n\n this.renderTransform();\n this.renderRenderable();\n this.renderElement();\n this.renderInnerContent();\n\n if (this._isFirstFrame) {\n this._isFirstFrame = false;\n }\n },\n destroy: function destroy() {\n this.layerElement = null;\n this.transformedElement = null;\n\n if (this.matteElement) {\n this.matteElement = null;\n }\n\n if (this.maskManager) {\n this.maskManager.destroy();\n this.maskManager = null;\n }\n },\n createRenderableComponents: function createRenderableComponents() {\n this.maskManager = new MaskElement(this.data, this, this.globalData);\n },\n addEffects: function addEffects() {},\n setMatte: function setMatte() {}\n };\n HBaseElement.prototype.getBaseElement = SVGBaseElement.prototype.getBaseElement;\n HBaseElement.prototype.destroyBaseElement = HBaseElement.prototype.destroy;\n HBaseElement.prototype.buildElementParenting = BaseRenderer.prototype.buildElementParenting;\n\n function HSolidElement(data, globalData, comp) {\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], HSolidElement);\n\n HSolidElement.prototype.createContent = function () {\n var rect;\n\n if (this.data.hasMask) {\n rect = createNS('rect');\n rect.setAttribute('width', this.data.sw);\n rect.setAttribute('height', this.data.sh);\n rect.setAttribute('fill', this.data.sc);\n this.svgElement.setAttribute('width', this.data.sw);\n this.svgElement.setAttribute('height', this.data.sh);\n } else {\n rect = createTag('div');\n rect.style.width = this.data.sw + 'px';\n rect.style.height = this.data.sh + 'px';\n rect.style.backgroundColor = this.data.sc;\n }\n\n this.layerElement.appendChild(rect);\n };\n\n function HShapeElement(data, globalData, comp) {\n // List of drawable elements\n this.shapes = []; // Full shape data\n\n this.shapesData = data.shapes; // List of styles that will be applied to shapes\n\n this.stylesList = []; // List of modifiers that will be applied to shapes\n\n this.shapeModifiers = []; // List of items in shape tree\n\n this.itemsData = []; // List of items in previous shape tree\n\n this.processedElements = []; // List of animated components\n\n this.animatedContents = [];\n this.shapesContainer = createNS('g');\n this.initElement(data, globalData, comp); // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n // List of elements that have been created\n\n this.prevViewData = [];\n this.currentBBox = {\n x: 999999,\n y: -999999,\n h: 0,\n w: 0\n };\n }\n\n extendPrototype([BaseElement, TransformElement, HSolidElement, SVGShapeElement, HBaseElement, HierarchyElement, FrameElement, RenderableElement], HShapeElement);\n HShapeElement.prototype._renderShapeFrame = HShapeElement.prototype.renderInnerContent;\n\n HShapeElement.prototype.createContent = function () {\n var cont;\n this.baseElement.style.fontSize = 0;\n\n if (this.data.hasMask) {\n this.layerElement.appendChild(this.shapesContainer);\n cont = this.svgElement;\n } else {\n cont = createNS('svg');\n var size = this.comp.data ? this.comp.data : this.globalData.compSize;\n cont.setAttribute('width', size.w);\n cont.setAttribute('height', size.h);\n cont.appendChild(this.shapesContainer);\n this.layerElement.appendChild(cont);\n }\n\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.shapesContainer, 0, [], true);\n this.filterUniqueShapes();\n this.shapeCont = cont;\n };\n\n HShapeElement.prototype.getTransformedPoint = function (transformers, point) {\n var i;\n var len = transformers.length;\n\n for (i = 0; i < len; i += 1) {\n point = transformers[i].mProps.v.applyToPointArray(point[0], point[1], 0);\n }\n\n return point;\n };\n\n HShapeElement.prototype.calculateShapeBoundingBox = function (item, boundingBox) {\n var shape = item.sh.v;\n var transformers = item.transformers;\n var i;\n var len = shape._length;\n var vPoint;\n var oPoint;\n var nextIPoint;\n var nextVPoint;\n\n if (len <= 1) {\n return;\n }\n\n for (i = 0; i < len - 1; i += 1) {\n vPoint = this.getTransformedPoint(transformers, shape.v[i]);\n oPoint = this.getTransformedPoint(transformers, shape.o[i]);\n nextIPoint = this.getTransformedPoint(transformers, shape.i[i + 1]);\n nextVPoint = this.getTransformedPoint(transformers, shape.v[i + 1]);\n this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\n }\n\n if (shape.c) {\n vPoint = this.getTransformedPoint(transformers, shape.v[i]);\n oPoint = this.getTransformedPoint(transformers, shape.o[i]);\n nextIPoint = this.getTransformedPoint(transformers, shape.i[0]);\n nextVPoint = this.getTransformedPoint(transformers, shape.v[0]);\n this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\n }\n };\n\n HShapeElement.prototype.checkBounds = function (vPoint, oPoint, nextIPoint, nextVPoint, boundingBox) {\n this.getBoundsOfCurve(vPoint, oPoint, nextIPoint, nextVPoint);\n var bounds = this.shapeBoundingBox;\n boundingBox.x = bmMin(bounds.left, boundingBox.x);\n boundingBox.xMax = bmMax(bounds.right, boundingBox.xMax);\n boundingBox.y = bmMin(bounds.top, boundingBox.y);\n boundingBox.yMax = bmMax(bounds.bottom, boundingBox.yMax);\n };\n\n HShapeElement.prototype.shapeBoundingBox = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n HShapeElement.prototype.tempBoundingBox = {\n x: 0,\n xMax: 0,\n y: 0,\n yMax: 0,\n width: 0,\n height: 0\n };\n\n HShapeElement.prototype.getBoundsOfCurve = function (p0, p1, p2, p3) {\n var bounds = [[p0[0], p3[0]], [p0[1], p3[1]]];\n\n for (var a, b, c, t, b2ac, t1, t2, i = 0; i < 2; ++i) {\n // eslint-disable-line no-plusplus\n b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i];\n a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i];\n c = 3 * p1[i] - 3 * p0[i];\n b |= 0; // eslint-disable-line no-bitwise\n\n a |= 0; // eslint-disable-line no-bitwise\n\n c |= 0; // eslint-disable-line no-bitwise\n\n if (a === 0 && b === 0) {//\n } else if (a === 0) {\n t = -c / b;\n\n if (t > 0 && t < 1) {\n bounds[i].push(this.calculateF(t, p0, p1, p2, p3, i));\n }\n } else {\n b2ac = b * b - 4 * c * a;\n\n if (b2ac >= 0) {\n t1 = (-b + bmSqrt(b2ac)) / (2 * a);\n if (t1 > 0 && t1 < 1) bounds[i].push(this.calculateF(t1, p0, p1, p2, p3, i));\n t2 = (-b - bmSqrt(b2ac)) / (2 * a);\n if (t2 > 0 && t2 < 1) bounds[i].push(this.calculateF(t2, p0, p1, p2, p3, i));\n }\n }\n }\n\n this.shapeBoundingBox.left = bmMin.apply(null, bounds[0]);\n this.shapeBoundingBox.top = bmMin.apply(null, bounds[1]);\n this.shapeBoundingBox.right = bmMax.apply(null, bounds[0]);\n this.shapeBoundingBox.bottom = bmMax.apply(null, bounds[1]);\n };\n\n HShapeElement.prototype.calculateF = function (t, p0, p1, p2, p3, i) {\n return bmPow(1 - t, 3) * p0[i] + 3 * bmPow(1 - t, 2) * t * p1[i] + 3 * (1 - t) * bmPow(t, 2) * p2[i] + bmPow(t, 3) * p3[i];\n };\n\n HShapeElement.prototype.calculateBoundingBox = function (itemsData, boundingBox) {\n var i;\n var len = itemsData.length;\n\n for (i = 0; i < len; i += 1) {\n if (itemsData[i] && itemsData[i].sh) {\n this.calculateShapeBoundingBox(itemsData[i], boundingBox);\n } else if (itemsData[i] && itemsData[i].it) {\n this.calculateBoundingBox(itemsData[i].it, boundingBox);\n }\n }\n };\n\n HShapeElement.prototype.currentBoxContains = function (box) {\n return this.currentBBox.x <= box.x && this.currentBBox.y <= box.y && this.currentBBox.width + this.currentBBox.x >= box.x + box.width && this.currentBBox.height + this.currentBBox.y >= box.y + box.height;\n };\n\n HShapeElement.prototype.renderInnerContent = function () {\n this._renderShapeFrame();\n\n if (!this.hidden && (this._isFirstFrame || this._mdf)) {\n var tempBoundingBox = this.tempBoundingBox;\n var max = 999999;\n tempBoundingBox.x = max;\n tempBoundingBox.xMax = -max;\n tempBoundingBox.y = max;\n tempBoundingBox.yMax = -max;\n this.calculateBoundingBox(this.itemsData, tempBoundingBox);\n tempBoundingBox.width = tempBoundingBox.xMax < tempBoundingBox.x ? 0 : tempBoundingBox.xMax - tempBoundingBox.x;\n tempBoundingBox.height = tempBoundingBox.yMax < tempBoundingBox.y ? 0 : tempBoundingBox.yMax - tempBoundingBox.y; // var tempBoundingBox = this.shapeCont.getBBox();\n\n if (this.currentBoxContains(tempBoundingBox)) {\n return;\n }\n\n var changed = false;\n\n if (this.currentBBox.w !== tempBoundingBox.width) {\n this.currentBBox.w = tempBoundingBox.width;\n this.shapeCont.setAttribute('width', tempBoundingBox.width);\n changed = true;\n }\n\n if (this.currentBBox.h !== tempBoundingBox.height) {\n this.currentBBox.h = tempBoundingBox.height;\n this.shapeCont.setAttribute('height', tempBoundingBox.height);\n changed = true;\n }\n\n if (changed || this.currentBBox.x !== tempBoundingBox.x || this.currentBBox.y !== tempBoundingBox.y) {\n this.currentBBox.w = tempBoundingBox.width;\n this.currentBBox.h = tempBoundingBox.height;\n this.currentBBox.x = tempBoundingBox.x;\n this.currentBBox.y = tempBoundingBox.y;\n this.shapeCont.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\n var shapeStyle = this.shapeCont.style;\n var shapeTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\n shapeStyle.transform = shapeTransform;\n shapeStyle.webkitTransform = shapeTransform;\n }\n }\n };\n\n function HTextElement(data, globalData, comp) {\n this.textSpans = [];\n this.textPaths = [];\n this.currentBBox = {\n x: 999999,\n y: -999999,\n h: 0,\n w: 0\n };\n this.renderType = 'svg';\n this.isMasked = false;\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], HTextElement);\n\n HTextElement.prototype.createContent = function () {\n this.isMasked = this.checkMasks();\n\n if (this.isMasked) {\n this.renderType = 'svg';\n this.compW = this.comp.data.w;\n this.compH = this.comp.data.h;\n this.svgElement.setAttribute('width', this.compW);\n this.svgElement.setAttribute('height', this.compH);\n var g = createNS('g');\n this.maskedElement.appendChild(g);\n this.innerElem = g;\n } else {\n this.renderType = 'html';\n this.innerElem = this.layerElement;\n }\n\n this.checkParenting();\n };\n\n HTextElement.prototype.buildNewText = function () {\n var documentData = this.textProperty.currentData;\n this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\n var innerElemStyle = this.innerElem.style;\n var textColor = documentData.fc ? this.buildColor(documentData.fc) : 'rgba(0,0,0,0)';\n innerElemStyle.fill = textColor;\n innerElemStyle.color = textColor;\n\n if (documentData.sc) {\n innerElemStyle.stroke = this.buildColor(documentData.sc);\n innerElemStyle.strokeWidth = documentData.sw + 'px';\n }\n\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n\n if (!this.globalData.fontManager.chars) {\n innerElemStyle.fontSize = documentData.finalSize + 'px';\n innerElemStyle.lineHeight = documentData.finalSize + 'px';\n\n if (fontData.fClass) {\n this.innerElem.className = fontData.fClass;\n } else {\n innerElemStyle.fontFamily = fontData.fFamily;\n var fWeight = documentData.fWeight;\n var fStyle = documentData.fStyle;\n innerElemStyle.fontStyle = fStyle;\n innerElemStyle.fontWeight = fWeight;\n }\n }\n\n var i;\n var len;\n var letters = documentData.l;\n len = letters.length;\n var tSpan;\n var tParent;\n var tCont;\n var matrixHelper = this.mHelper;\n var shapes;\n var shapeStr = '';\n var cnt = 0;\n\n for (i = 0; i < len; i += 1) {\n if (this.globalData.fontManager.chars) {\n if (!this.textPaths[cnt]) {\n tSpan = createNS('path');\n tSpan.setAttribute('stroke-linecap', lineCapEnum[1]);\n tSpan.setAttribute('stroke-linejoin', lineJoinEnum[2]);\n tSpan.setAttribute('stroke-miterlimit', '4');\n } else {\n tSpan = this.textPaths[cnt];\n }\n\n if (!this.isMasked) {\n if (this.textSpans[cnt]) {\n tParent = this.textSpans[cnt];\n tCont = tParent.children[0];\n } else {\n tParent = createTag('div');\n tParent.style.lineHeight = 0;\n tCont = createNS('svg');\n tCont.appendChild(tSpan);\n styleDiv(tParent);\n }\n }\n } else if (!this.isMasked) {\n if (this.textSpans[cnt]) {\n tParent = this.textSpans[cnt];\n tSpan = this.textPaths[cnt];\n } else {\n tParent = createTag('span');\n styleDiv(tParent);\n tSpan = createTag('span');\n styleDiv(tSpan);\n tParent.appendChild(tSpan);\n }\n } else {\n tSpan = this.textPaths[cnt] ? this.textPaths[cnt] : createNS('text');\n } // tSpan.setAttribute('visibility', 'hidden');\n\n\n if (this.globalData.fontManager.chars) {\n var charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n var shapeData;\n\n if (charData) {\n shapeData = charData.data;\n } else {\n shapeData = null;\n }\n\n matrixHelper.reset();\n\n if (shapeData && shapeData.shapes && shapeData.shapes.length) {\n shapes = shapeData.shapes[0].it;\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\n shapeStr = this.createPathShape(matrixHelper, shapes);\n tSpan.setAttribute('d', shapeStr);\n }\n\n if (!this.isMasked) {\n this.innerElem.appendChild(tParent);\n\n if (shapeData && shapeData.shapes) {\n // document.body.appendChild is needed to get exact measure of shape\n document.body.appendChild(tCont);\n var boundingBox = tCont.getBBox();\n tCont.setAttribute('width', boundingBox.width + 2);\n tCont.setAttribute('height', boundingBox.height + 2);\n tCont.setAttribute('viewBox', boundingBox.x - 1 + ' ' + (boundingBox.y - 1) + ' ' + (boundingBox.width + 2) + ' ' + (boundingBox.height + 2));\n var tContStyle = tCont.style;\n var tContTranslation = 'translate(' + (boundingBox.x - 1) + 'px,' + (boundingBox.y - 1) + 'px)';\n tContStyle.transform = tContTranslation;\n tContStyle.webkitTransform = tContTranslation;\n letters[i].yOffset = boundingBox.y - 1;\n } else {\n tCont.setAttribute('width', 1);\n tCont.setAttribute('height', 1);\n }\n\n tParent.appendChild(tCont);\n } else {\n this.innerElem.appendChild(tSpan);\n }\n } else {\n tSpan.textContent = letters[i].val;\n tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n\n if (!this.isMasked) {\n this.innerElem.appendChild(tParent); //\n\n var tStyle = tSpan.style;\n var tSpanTranslation = 'translate3d(0,' + -documentData.finalSize / 1.2 + 'px,0)';\n tStyle.transform = tSpanTranslation;\n tStyle.webkitTransform = tSpanTranslation;\n } else {\n this.innerElem.appendChild(tSpan);\n }\n } //\n\n\n if (!this.isMasked) {\n this.textSpans[cnt] = tParent;\n } else {\n this.textSpans[cnt] = tSpan;\n }\n\n this.textSpans[cnt].style.display = 'block';\n this.textPaths[cnt] = tSpan;\n cnt += 1;\n }\n\n while (cnt < this.textSpans.length) {\n this.textSpans[cnt].style.display = 'none';\n cnt += 1;\n }\n };\n\n HTextElement.prototype.renderInnerContent = function () {\n var svgStyle;\n\n if (this.data.singleShape) {\n if (!this._isFirstFrame && !this.lettersChangedFlag) {\n return;\n }\n\n if (this.isMasked && this.finalTransform._matMdf) {\n // Todo Benchmark if using this is better than getBBox\n this.svgElement.setAttribute('viewBox', -this.finalTransform.mProp.p.v[0] + ' ' + -this.finalTransform.mProp.p.v[1] + ' ' + this.compW + ' ' + this.compH);\n svgStyle = this.svgElement.style;\n var translation = 'translate(' + -this.finalTransform.mProp.p.v[0] + 'px,' + -this.finalTransform.mProp.p.v[1] + 'px)';\n svgStyle.transform = translation;\n svgStyle.webkitTransform = translation;\n }\n }\n\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n\n if (!this.lettersChangedFlag && !this.textAnimator.lettersChangedFlag) {\n return;\n }\n\n var i;\n var len;\n var count = 0;\n var renderedLetters = this.textAnimator.renderedLetters;\n var letters = this.textProperty.currentData.l;\n len = letters.length;\n var renderedLetter;\n var textSpan;\n var textPath;\n\n for (i = 0; i < len; i += 1) {\n if (letters[i].n) {\n count += 1;\n } else {\n textSpan = this.textSpans[i];\n textPath = this.textPaths[i];\n renderedLetter = renderedLetters[count];\n count += 1;\n\n if (renderedLetter._mdf.m) {\n if (!this.isMasked) {\n textSpan.style.webkitTransform = renderedLetter.m;\n textSpan.style.transform = renderedLetter.m;\n } else {\n textSpan.setAttribute('transform', renderedLetter.m);\n }\n } /// /textSpan.setAttribute('opacity',renderedLetter.o);\n\n\n textSpan.style.opacity = renderedLetter.o;\n\n if (renderedLetter.sw && renderedLetter._mdf.sw) {\n textPath.setAttribute('stroke-width', renderedLetter.sw);\n }\n\n if (renderedLetter.sc && renderedLetter._mdf.sc) {\n textPath.setAttribute('stroke', renderedLetter.sc);\n }\n\n if (renderedLetter.fc && renderedLetter._mdf.fc) {\n textPath.setAttribute('fill', renderedLetter.fc);\n textPath.style.color = renderedLetter.fc;\n }\n }\n }\n\n if (this.innerElem.getBBox && !this.hidden && (this._isFirstFrame || this._mdf)) {\n var boundingBox = this.innerElem.getBBox();\n\n if (this.currentBBox.w !== boundingBox.width) {\n this.currentBBox.w = boundingBox.width;\n this.svgElement.setAttribute('width', boundingBox.width);\n }\n\n if (this.currentBBox.h !== boundingBox.height) {\n this.currentBBox.h = boundingBox.height;\n this.svgElement.setAttribute('height', boundingBox.height);\n }\n\n var margin = 1;\n\n if (this.currentBBox.w !== boundingBox.width + margin * 2 || this.currentBBox.h !== boundingBox.height + margin * 2 || this.currentBBox.x !== boundingBox.x - margin || this.currentBBox.y !== boundingBox.y - margin) {\n this.currentBBox.w = boundingBox.width + margin * 2;\n this.currentBBox.h = boundingBox.height + margin * 2;\n this.currentBBox.x = boundingBox.x - margin;\n this.currentBBox.y = boundingBox.y - margin;\n this.svgElement.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\n svgStyle = this.svgElement.style;\n var svgTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\n svgStyle.transform = svgTransform;\n svgStyle.webkitTransform = svgTransform;\n }\n }\n };\n\n function HCameraElement(data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initHierarchy();\n var getProp = PropertyFactory.getProp;\n this.pe = getProp(this, data.pe, 0, 0, this);\n\n if (data.ks.p.s) {\n this.px = getProp(this, data.ks.p.x, 1, 0, this);\n this.py = getProp(this, data.ks.p.y, 1, 0, this);\n this.pz = getProp(this, data.ks.p.z, 1, 0, this);\n } else {\n this.p = getProp(this, data.ks.p, 1, 0, this);\n }\n\n if (data.ks.a) {\n this.a = getProp(this, data.ks.a, 1, 0, this);\n }\n\n if (data.ks.or.k.length && data.ks.or.k[0].to) {\n var i;\n var len = data.ks.or.k.length;\n\n for (i = 0; i < len; i += 1) {\n data.ks.or.k[i].to = null;\n data.ks.or.k[i].ti = null;\n }\n }\n\n this.or = getProp(this, data.ks.or, 1, degToRads, this);\n this.or.sh = true;\n this.rx = getProp(this, data.ks.rx, 0, degToRads, this);\n this.ry = getProp(this, data.ks.ry, 0, degToRads, this);\n this.rz = getProp(this, data.ks.rz, 0, degToRads, this);\n this.mat = new Matrix();\n this._prevMat = new Matrix();\n this._isFirstFrame = true; // TODO: find a better way to make the HCamera element to be compatible with the LayerInterface and TransformInterface.\n\n this.finalTransform = {\n mProp: this\n };\n }\n\n extendPrototype([BaseElement, FrameElement, HierarchyElement], HCameraElement);\n\n HCameraElement.prototype.setup = function () {\n var i;\n var len = this.comp.threeDElements.length;\n var comp;\n var perspectiveStyle;\n var containerStyle;\n\n for (i = 0; i < len; i += 1) {\n // [perspectiveElem,container]\n comp = this.comp.threeDElements[i];\n\n if (comp.type === '3d') {\n perspectiveStyle = comp.perspectiveElem.style;\n containerStyle = comp.container.style;\n var perspective = this.pe.v + 'px';\n var origin = '0px 0px 0px';\n var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\n perspectiveStyle.perspective = perspective;\n perspectiveStyle.webkitPerspective = perspective;\n containerStyle.transformOrigin = origin;\n containerStyle.mozTransformOrigin = origin;\n containerStyle.webkitTransformOrigin = origin;\n perspectiveStyle.transform = matrix;\n perspectiveStyle.webkitTransform = matrix;\n }\n }\n };\n\n HCameraElement.prototype.createElements = function () {};\n\n HCameraElement.prototype.hide = function () {};\n\n HCameraElement.prototype.renderFrame = function () {\n var _mdf = this._isFirstFrame;\n var i;\n var len;\n\n if (this.hierarchy) {\n len = this.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n _mdf = this.hierarchy[i].finalTransform.mProp._mdf || _mdf;\n }\n }\n\n if (_mdf || this.pe._mdf || this.p && this.p._mdf || this.px && (this.px._mdf || this.py._mdf || this.pz._mdf) || this.rx._mdf || this.ry._mdf || this.rz._mdf || this.or._mdf || this.a && this.a._mdf) {\n this.mat.reset();\n\n if (this.hierarchy) {\n len = this.hierarchy.length - 1;\n\n for (i = len; i >= 0; i -= 1) {\n var mTransf = this.hierarchy[i].finalTransform.mProp;\n this.mat.translate(-mTransf.p.v[0], -mTransf.p.v[1], mTransf.p.v[2]);\n this.mat.rotateX(-mTransf.or.v[0]).rotateY(-mTransf.or.v[1]).rotateZ(mTransf.or.v[2]);\n this.mat.rotateX(-mTransf.rx.v).rotateY(-mTransf.ry.v).rotateZ(mTransf.rz.v);\n this.mat.scale(1 / mTransf.s.v[0], 1 / mTransf.s.v[1], 1 / mTransf.s.v[2]);\n this.mat.translate(mTransf.a.v[0], mTransf.a.v[1], mTransf.a.v[2]);\n }\n }\n\n if (this.p) {\n this.mat.translate(-this.p.v[0], -this.p.v[1], this.p.v[2]);\n } else {\n this.mat.translate(-this.px.v, -this.py.v, this.pz.v);\n }\n\n if (this.a) {\n var diffVector;\n\n if (this.p) {\n diffVector = [this.p.v[0] - this.a.v[0], this.p.v[1] - this.a.v[1], this.p.v[2] - this.a.v[2]];\n } else {\n diffVector = [this.px.v - this.a.v[0], this.py.v - this.a.v[1], this.pz.v - this.a.v[2]];\n }\n\n var mag = Math.sqrt(Math.pow(diffVector[0], 2) + Math.pow(diffVector[1], 2) + Math.pow(diffVector[2], 2)); // var lookDir = getNormalizedPoint(getDiffVector(this.a.v,this.p.v));\n\n var lookDir = [diffVector[0] / mag, diffVector[1] / mag, diffVector[2] / mag];\n var lookLengthOnXZ = Math.sqrt(lookDir[2] * lookDir[2] + lookDir[0] * lookDir[0]);\n var mRotationX = Math.atan2(lookDir[1], lookLengthOnXZ);\n var mRotationY = Math.atan2(lookDir[0], -lookDir[2]);\n this.mat.rotateY(mRotationY).rotateX(-mRotationX);\n }\n\n this.mat.rotateX(-this.rx.v).rotateY(-this.ry.v).rotateZ(this.rz.v);\n this.mat.rotateX(-this.or.v[0]).rotateY(-this.or.v[1]).rotateZ(this.or.v[2]);\n this.mat.translate(this.globalData.compSize.w / 2, this.globalData.compSize.h / 2, 0);\n this.mat.translate(0, 0, this.pe.v);\n var hasMatrixChanged = !this._prevMat.equals(this.mat);\n\n if ((hasMatrixChanged || this.pe._mdf) && this.comp.threeDElements) {\n len = this.comp.threeDElements.length;\n var comp;\n var perspectiveStyle;\n var containerStyle;\n\n for (i = 0; i < len; i += 1) {\n comp = this.comp.threeDElements[i];\n\n if (comp.type === '3d') {\n if (hasMatrixChanged) {\n var matValue = this.mat.toCSS();\n containerStyle = comp.container.style;\n containerStyle.transform = matValue;\n containerStyle.webkitTransform = matValue;\n }\n\n if (this.pe._mdf) {\n perspectiveStyle = comp.perspectiveElem.style;\n perspectiveStyle.perspective = this.pe.v + 'px';\n perspectiveStyle.webkitPerspective = this.pe.v + 'px';\n }\n }\n }\n\n this.mat.clone(this._prevMat);\n }\n }\n\n this._isFirstFrame = false;\n };\n\n HCameraElement.prototype.prepareFrame = function (num) {\n this.prepareProperties(num, true);\n };\n\n HCameraElement.prototype.destroy = function () {};\n\n HCameraElement.prototype.getBaseElement = function () {\n return null;\n };\n\n function HImageElement(data, globalData, comp) {\n this.assetData = globalData.getAssetData(data.refId);\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, HBaseElement, HSolidElement, HierarchyElement, FrameElement, RenderableElement], HImageElement);\n\n HImageElement.prototype.createContent = function () {\n var assetPath = this.globalData.getAssetsPath(this.assetData);\n var img = new Image();\n\n if (this.data.hasMask) {\n this.imageElem = createNS('image');\n this.imageElem.setAttribute('width', this.assetData.w + 'px');\n this.imageElem.setAttribute('height', this.assetData.h + 'px');\n this.imageElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\n this.layerElement.appendChild(this.imageElem);\n this.baseElement.setAttribute('width', this.assetData.w);\n this.baseElement.setAttribute('height', this.assetData.h);\n } else {\n this.layerElement.appendChild(img);\n }\n\n img.crossOrigin = 'anonymous';\n img.src = assetPath;\n\n if (this.data.ln) {\n this.baseElement.setAttribute('id', this.data.ln);\n }\n };\n\n function HybridRendererBase(animationItem, config) {\n this.animationItem = animationItem;\n this.layers = null;\n this.renderedFrame = -1;\n this.renderConfig = {\n className: config && config.className || '',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n hideOnTransparent: !(config && config.hideOnTransparent === false),\n filterSize: {\n width: config && config.filterSize && config.filterSize.width || '400%',\n height: config && config.filterSize && config.filterSize.height || '400%',\n x: config && config.filterSize && config.filterSize.x || '-100%',\n y: config && config.filterSize && config.filterSize.y || '-100%'\n }\n };\n this.globalData = {\n _mdf: false,\n frameNum: -1,\n renderConfig: this.renderConfig\n };\n this.pendingElements = [];\n this.elements = [];\n this.threeDElements = [];\n this.destroyed = false;\n this.camera = null;\n this.supports3d = true;\n this.rendererType = 'html';\n }\n\n extendPrototype([BaseRenderer], HybridRendererBase);\n HybridRendererBase.prototype.buildItem = SVGRenderer.prototype.buildItem;\n\n HybridRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n }\n };\n\n HybridRendererBase.prototype.appendElementInPos = function (element, pos) {\n var newDOMElement = element.getBaseElement();\n\n if (!newDOMElement) {\n return;\n }\n\n var layer = this.layers[pos];\n\n if (!layer.ddd || !this.supports3d) {\n if (this.threeDElements) {\n this.addTo3dContainer(newDOMElement, pos);\n } else {\n var i = 0;\n var nextDOMElement;\n var nextLayer;\n var tmpDOMElement;\n\n while (i < pos) {\n if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement) {\n nextLayer = this.elements[i];\n tmpDOMElement = this.layers[i].ddd ? this.getThreeDContainerByPos(i) : nextLayer.getBaseElement();\n nextDOMElement = tmpDOMElement || nextDOMElement;\n }\n\n i += 1;\n }\n\n if (nextDOMElement) {\n if (!layer.ddd || !this.supports3d) {\n this.layerElement.insertBefore(newDOMElement, nextDOMElement);\n }\n } else if (!layer.ddd || !this.supports3d) {\n this.layerElement.appendChild(newDOMElement);\n }\n }\n } else {\n this.addTo3dContainer(newDOMElement, pos);\n }\n };\n\n HybridRendererBase.prototype.createShape = function (data) {\n if (!this.supports3d) {\n return new SVGShapeElement(data, this.globalData, this);\n }\n\n return new HShapeElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createText = function (data) {\n if (!this.supports3d) {\n return new SVGTextLottieElement(data, this.globalData, this);\n }\n\n return new HTextElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createCamera = function (data) {\n this.camera = new HCameraElement(data, this.globalData, this);\n return this.camera;\n };\n\n HybridRendererBase.prototype.createImage = function (data) {\n if (!this.supports3d) {\n return new IImageElement(data, this.globalData, this);\n }\n\n return new HImageElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createSolid = function (data) {\n if (!this.supports3d) {\n return new ISolidElement(data, this.globalData, this);\n }\n\n return new HSolidElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;\n\n HybridRendererBase.prototype.getThreeDContainerByPos = function (pos) {\n var i = 0;\n var len = this.threeDElements.length;\n\n while (i < len) {\n if (this.threeDElements[i].startPos <= pos && this.threeDElements[i].endPos >= pos) {\n return this.threeDElements[i].perspectiveElem;\n }\n\n i += 1;\n }\n\n return null;\n };\n\n HybridRendererBase.prototype.createThreeDContainer = function (pos, type) {\n var perspectiveElem = createTag('div');\n var style;\n var containerStyle;\n styleDiv(perspectiveElem);\n var container = createTag('div');\n styleDiv(container);\n\n if (type === '3d') {\n style = perspectiveElem.style;\n style.width = this.globalData.compSize.w + 'px';\n style.height = this.globalData.compSize.h + 'px';\n var center = '50% 50%';\n style.webkitTransformOrigin = center;\n style.mozTransformOrigin = center;\n style.transformOrigin = center;\n containerStyle = container.style;\n var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\n containerStyle.transform = matrix;\n containerStyle.webkitTransform = matrix;\n }\n\n perspectiveElem.appendChild(container); // this.resizerElem.appendChild(perspectiveElem);\n\n var threeDContainerData = {\n container: container,\n perspectiveElem: perspectiveElem,\n startPos: pos,\n endPos: pos,\n type: type\n };\n this.threeDElements.push(threeDContainerData);\n return threeDContainerData;\n };\n\n HybridRendererBase.prototype.build3dContainers = function () {\n var i;\n var len = this.layers.length;\n var lastThreeDContainerData;\n var currentContainer = '';\n\n for (i = 0; i < len; i += 1) {\n if (this.layers[i].ddd && this.layers[i].ty !== 3) {\n if (currentContainer !== '3d') {\n currentContainer = '3d';\n lastThreeDContainerData = this.createThreeDContainer(i, '3d');\n }\n\n lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\n } else {\n if (currentContainer !== '2d') {\n currentContainer = '2d';\n lastThreeDContainerData = this.createThreeDContainer(i, '2d');\n }\n\n lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\n }\n }\n\n len = this.threeDElements.length;\n\n for (i = len - 1; i >= 0; i -= 1) {\n this.resizerElem.appendChild(this.threeDElements[i].perspectiveElem);\n }\n };\n\n HybridRendererBase.prototype.addTo3dContainer = function (elem, pos) {\n var i = 0;\n var len = this.threeDElements.length;\n\n while (i < len) {\n if (pos <= this.threeDElements[i].endPos) {\n var j = this.threeDElements[i].startPos;\n var nextElement;\n\n while (j < pos) {\n if (this.elements[j] && this.elements[j].getBaseElement) {\n nextElement = this.elements[j].getBaseElement();\n }\n\n j += 1;\n }\n\n if (nextElement) {\n this.threeDElements[i].container.insertBefore(elem, nextElement);\n } else {\n this.threeDElements[i].container.appendChild(elem);\n }\n\n break;\n }\n\n i += 1;\n }\n };\n\n HybridRendererBase.prototype.configAnimation = function (animData) {\n var resizerElem = createTag('div');\n var wrapper = this.animationItem.wrapper;\n var style = resizerElem.style;\n style.width = animData.w + 'px';\n style.height = animData.h + 'px';\n this.resizerElem = resizerElem;\n styleDiv(resizerElem);\n style.transformStyle = 'flat';\n style.mozTransformStyle = 'flat';\n style.webkitTransformStyle = 'flat';\n\n if (this.renderConfig.className) {\n resizerElem.setAttribute('class', this.renderConfig.className);\n }\n\n wrapper.appendChild(resizerElem);\n style.overflow = 'hidden';\n var svg = createNS('svg');\n svg.setAttribute('width', '1');\n svg.setAttribute('height', '1');\n styleDiv(svg);\n this.resizerElem.appendChild(svg);\n var defs = createNS('defs');\n svg.appendChild(defs);\n this.data = animData; // Mask animation\n\n this.setupGlobalData(animData, svg);\n this.globalData.defs = defs;\n this.layers = animData.layers;\n this.layerElement = this.resizerElem;\n this.build3dContainers();\n this.updateContainerSize();\n };\n\n HybridRendererBase.prototype.destroy = function () {\n if (this.animationItem.wrapper) {\n this.animationItem.wrapper.innerText = '';\n }\n\n this.animationItem.container = null;\n this.globalData.defs = null;\n var i;\n var len = this.layers ? this.layers.length : 0;\n\n for (i = 0; i < len; i += 1) {\n this.elements[i].destroy();\n }\n\n this.elements.length = 0;\n this.destroyed = true;\n this.animationItem = null;\n };\n\n HybridRendererBase.prototype.updateContainerSize = function () {\n var elementWidth = this.animationItem.wrapper.offsetWidth;\n var elementHeight = this.animationItem.wrapper.offsetHeight;\n var elementRel = elementWidth / elementHeight;\n var animationRel = this.globalData.compSize.w / this.globalData.compSize.h;\n var sx;\n var sy;\n var tx;\n var ty;\n\n if (animationRel > elementRel) {\n sx = elementWidth / this.globalData.compSize.w;\n sy = elementWidth / this.globalData.compSize.w;\n tx = 0;\n ty = (elementHeight - this.globalData.compSize.h * (elementWidth / this.globalData.compSize.w)) / 2;\n } else {\n sx = elementHeight / this.globalData.compSize.h;\n sy = elementHeight / this.globalData.compSize.h;\n tx = (elementWidth - this.globalData.compSize.w * (elementHeight / this.globalData.compSize.h)) / 2;\n ty = 0;\n }\n\n var style = this.resizerElem.style;\n style.webkitTransform = 'matrix3d(' + sx + ',0,0,0,0,' + sy + ',0,0,0,0,1,0,' + tx + ',' + ty + ',0,1)';\n style.transform = style.webkitTransform;\n };\n\n HybridRendererBase.prototype.renderFrame = SVGRenderer.prototype.renderFrame;\n\n HybridRendererBase.prototype.hide = function () {\n this.resizerElem.style.display = 'none';\n };\n\n HybridRendererBase.prototype.show = function () {\n this.resizerElem.style.display = 'block';\n };\n\n HybridRendererBase.prototype.initItems = function () {\n this.buildAllItems();\n\n if (this.camera) {\n this.camera.setup();\n } else {\n var cWidth = this.globalData.compSize.w;\n var cHeight = this.globalData.compSize.h;\n var i;\n var len = this.threeDElements.length;\n\n for (i = 0; i < len; i += 1) {\n var style = this.threeDElements[i].perspectiveElem.style;\n style.webkitPerspective = Math.sqrt(Math.pow(cWidth, 2) + Math.pow(cHeight, 2)) + 'px';\n style.perspective = style.webkitPerspective;\n }\n }\n };\n\n HybridRendererBase.prototype.searchExtraCompositions = function (assets) {\n var i;\n var len = assets.length;\n var floatingContainer = createTag('div');\n\n for (i = 0; i < len; i += 1) {\n if (assets[i].xt) {\n var comp = this.createComp(assets[i], floatingContainer, this.globalData.comp, null);\n comp.initExpressions();\n this.globalData.projectInterface.registerComposition(comp);\n }\n }\n };\n\n function HCompElement(data, globalData, comp) {\n this.layers = data.layers;\n this.supports3d = !data.hasMask;\n this.completeLayers = false;\n this.pendingElements = [];\n this.elements = this.layers ? createSizedArray(this.layers.length) : [];\n this.initElement(data, globalData, comp);\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n }\n\n extendPrototype([HybridRendererBase, ICompElement, HBaseElement], HCompElement);\n HCompElement.prototype._createBaseContainerElements = HCompElement.prototype.createContainerElements;\n\n HCompElement.prototype.createContainerElements = function () {\n this._createBaseContainerElements(); // divElement.style.clip = 'rect(0px, '+this.data.w+'px, '+this.data.h+'px, 0px)';\n\n\n if (this.data.hasMask) {\n this.svgElement.setAttribute('width', this.data.w);\n this.svgElement.setAttribute('height', this.data.h);\n this.transformedElement = this.baseElement;\n } else {\n this.transformedElement = this.layerElement;\n }\n };\n\n HCompElement.prototype.addTo3dContainer = function (elem, pos) {\n var j = 0;\n var nextElement;\n\n while (j < pos) {\n if (this.elements[j] && this.elements[j].getBaseElement) {\n nextElement = this.elements[j].getBaseElement();\n }\n\n j += 1;\n }\n\n if (nextElement) {\n this.layerElement.insertBefore(elem, nextElement);\n } else {\n this.layerElement.appendChild(elem);\n }\n };\n\n HCompElement.prototype.createComp = function (data) {\n if (!this.supports3d) {\n return new SVGCompElement(data, this.globalData, this);\n }\n\n return new HCompElement(data, this.globalData, this);\n };\n\n function HybridRenderer(animationItem, config) {\n this.animationItem = animationItem;\n this.layers = null;\n this.renderedFrame = -1;\n this.renderConfig = {\n className: config && config.className || '',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n hideOnTransparent: !(config && config.hideOnTransparent === false),\n filterSize: {\n width: config && config.filterSize && config.filterSize.width || '400%',\n height: config && config.filterSize && config.filterSize.height || '400%',\n x: config && config.filterSize && config.filterSize.x || '-100%',\n y: config && config.filterSize && config.filterSize.y || '-100%'\n }\n };\n this.globalData = {\n _mdf: false,\n frameNum: -1,\n renderConfig: this.renderConfig\n };\n this.pendingElements = [];\n this.elements = [];\n this.threeDElements = [];\n this.destroyed = false;\n this.camera = null;\n this.supports3d = true;\n this.rendererType = 'html';\n }\n\n extendPrototype([HybridRendererBase], HybridRenderer);\n\n HybridRenderer.prototype.createComp = function (data) {\n if (!this.supports3d) {\n return new SVGCompElement(data, this.globalData, this);\n }\n\n return new HCompElement(data, this.globalData, this);\n };\n\n var Expressions = function () {\n var ob = {};\n ob.initExpressions = initExpressions;\n\n function initExpressions(animation) {\n var stackCount = 0;\n var registers = [];\n\n function pushExpression() {\n stackCount += 1;\n }\n\n function popExpression() {\n stackCount -= 1;\n\n if (stackCount === 0) {\n releaseInstances();\n }\n }\n\n function registerExpressionProperty(expression) {\n if (registers.indexOf(expression) === -1) {\n registers.push(expression);\n }\n }\n\n function releaseInstances() {\n var i;\n var len = registers.length;\n\n for (i = 0; i < len; i += 1) {\n registers[i].release();\n }\n\n registers.length = 0;\n }\n\n animation.renderer.compInterface = CompExpressionInterface(animation.renderer);\n animation.renderer.globalData.projectInterface.registerComposition(animation.renderer);\n animation.renderer.globalData.pushExpression = pushExpression;\n animation.renderer.globalData.popExpression = popExpression;\n animation.renderer.globalData.registerExpressionProperty = registerExpressionProperty;\n }\n\n return ob;\n }();\n\n function _typeof$1(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$1 = function _typeof(obj) { return typeof obj; }; } else { _typeof$1 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$1(obj); }\n\n /* eslint-disable */\n\n /*\r\n Copyright 2014 David Bau.\r\n\r\n Permission is hereby granted, free of charge, to any person obtaining\r\n a copy of this software and associated documentation files (the\r\n \"Software\"), to deal in the Software without restriction, including\r\n without limitation the rights to use, copy, modify, merge, publish,\r\n distribute, sublicense, and/or sell copies of the Software, and to\r\n permit persons to whom the Software is furnished to do so, subject to\r\n the following conditions:\r\n\r\n The above copyright notice and this permission notice shall be\r\n included in all copies or substantial portions of the Software.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\r\n IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\r\n CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\r\n TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\r\n SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n\r\n */\n function seedRandom(pool, math) {\n //\n // The following constants are related to IEEE 754 limits.\n //\n var global = this,\n width = 256,\n // each RC4 output is 0 <= x < 256\n chunks = 6,\n // at least six RC4 outputs for each double\n digits = 52,\n // there are 52 significant digits in a double\n rngname = 'random',\n // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n //\n // seedrandom()\n // This is the seedrandom function described above.\n //\n\n function seedrandom(seed, options, callback) {\n var key = [];\n options = options === true ? {\n entropy: true\n } : options || {}; // Flatten the seed string or build one from local entropy if needed.\n\n var shortseed = mixkey(flatten(options.entropy ? [seed, tostring(pool)] : seed === null ? autoseed() : seed, 3), key); // Use the seed to initialize an ARC4 generator.\n\n var arc4 = new ARC4(key); // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n\n var prng = function prng() {\n var n = arc4.g(chunks),\n // Start with a numerator n < 2 ^ 48\n d = startdenom,\n // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n\n while (n < significance) {\n // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n\n d *= width; // denominator and generating a\n\n x = arc4.g(1); // new least-significant-byte.\n }\n\n while (n >= overflow) {\n // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n\n d /= 2; // right using integer math until\n\n x >>>= 1; // we have exactly the desired bits.\n }\n\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function () {\n return arc4.g(4) | 0;\n };\n\n prng.quick = function () {\n return arc4.g(4) / 0x100000000;\n };\n\n prng[\"double\"] = prng; // Mix the randomness into accumulated entropy.\n\n mixkey(tostring(arc4.S), pool); // Calling convention: what to return as a function of prng, seed, is_math.\n\n return (options.pass || callback || function (prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) {\n copy(state, arc4);\n } // Only provide the .state method if requested via options.state.\n\n\n prng.state = function () {\n return copy(arc4, {});\n };\n } // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n\n\n if (is_math_call) {\n math[rngname] = prng;\n return seed;\n } // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(prng, shortseed, 'global' in options ? options.global : this == math, options.state);\n }\n\n math['seed' + rngname] = seedrandom; //\n // ARC4\n //\n // An ARC4 implementation. The constructor takes a key in the form of\n // an array of at most (width) integers that should be 0 <= x < (width).\n //\n // The g(count) method returns a pseudorandom integer that concatenates\n // the next (count) outputs from ARC4. Its return value is a number x\n // that is in the range 0 <= x < (width ^ count).\n //\n\n function ARC4(key) {\n var t,\n keylen = key.length,\n me = this,\n i = 0,\n j = me.i = me.j = 0,\n s = me.S = []; // The empty key [] is treated as [0].\n\n if (!keylen) {\n key = [keylen++];\n } // Set up S using the standard key scheduling algorithm.\n\n\n while (i < width) {\n s[i] = i++;\n }\n\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & j + key[i % keylen] + (t = s[i])];\n s[j] = t;\n } // The \"g\" method returns the next (count) outputs as one number.\n\n\n me.g = function (count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t,\n r = 0,\n i = me.i,\n j = me.j,\n s = me.S;\n\n while (count--) {\n t = s[i = mask & i + 1];\n r = r * width + s[mask & (s[i] = s[j = mask & j + t]) + (s[j] = t)];\n }\n\n me.i = i;\n me.j = j;\n return r; // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n };\n } //\n // copy()\n // Copies internal state of ARC4 to or from a plain object.\n //\n\n\n function copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n } //\n // flatten()\n // Converts an object tree to nested arrays of strings.\n //\n\n\n function flatten(obj, depth) {\n var result = [],\n typ = _typeof$1(obj),\n prop;\n\n if (depth && typ == 'object') {\n for (prop in obj) {\n try {\n result.push(flatten(obj[prop], depth - 1));\n } catch (e) {}\n }\n }\n\n return result.length ? result : typ == 'string' ? obj : obj + '\\0';\n } //\n // mixkey()\n // Mixes a string seed into a key that is an array of integers, and\n // returns a shortened string seed that is equivalent to the result key.\n //\n\n\n function mixkey(seed, key) {\n var stringseed = seed + '',\n smear,\n j = 0;\n\n while (j < stringseed.length) {\n key[mask & j] = mask & (smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++);\n }\n\n return tostring(key);\n } //\n // autoseed()\n // Returns an object for autoseeding, using window.crypto and Node crypto\n // module if available.\n //\n\n\n function autoseed() {\n try {\n if (nodecrypto) {\n return tostring(nodecrypto.randomBytes(width));\n }\n\n var out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date(), global, plugins, global.screen, tostring(pool)];\n }\n } //\n // tostring()\n // Converts an array of charcodes to a string\n //\n\n\n function tostring(a) {\n return String.fromCharCode.apply(0, a);\n } //\n // When seedrandom.js is loaded, we immediately mix a few bits\n // from the built-in RNG into the entropy pool. Because we do\n // not want to interfere with deterministic PRNG state later,\n // seedrandom will not call math.random on its own again after\n // initialization.\n //\n\n\n mixkey(math.random(), pool); //\n // Nodejs and AMD support: export the implementation as a module using\n // either convention.\n //\n // End anonymous scope, and pass initial values.\n }\n\n ;\n\n function initialize$2(BMMath) {\n seedRandom([], BMMath);\n }\n\n var propTypes = {\n SHAPE: 'shape'\n };\n\n function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n var ExpressionManager = function () {\n 'use strict';\n\n var ob = {};\n var Math = BMMath;\n var window = null;\n var document = null;\n var XMLHttpRequest = null;\n var fetch = null;\n var frames = null;\n initialize$2(BMMath);\n\n function $bm_isInstanceOfArray(arr) {\n return arr.constructor === Array || arr.constructor === Float32Array;\n }\n\n function isNumerable(tOfV, v) {\n return tOfV === 'number' || tOfV === 'boolean' || tOfV === 'string' || v instanceof Number;\n }\n\n function $bm_neg(a) {\n var tOfA = _typeof(a);\n\n if (tOfA === 'number' || tOfA === 'boolean' || a instanceof Number) {\n return -a;\n }\n\n if ($bm_isInstanceOfArray(a)) {\n var i;\n var lenA = a.length;\n var retArr = [];\n\n for (i = 0; i < lenA; i += 1) {\n retArr[i] = -a[i];\n }\n\n return retArr;\n }\n\n if (a.propType) {\n return a.v;\n }\n\n return -a;\n }\n\n var easeInBez = BezierFactory.getBezierEasing(0.333, 0, 0.833, 0.833, 'easeIn').get;\n var easeOutBez = BezierFactory.getBezierEasing(0.167, 0.167, 0.667, 1, 'easeOut').get;\n var easeInOutBez = BezierFactory.getBezierEasing(0.33, 0, 0.667, 1, 'easeInOut').get;\n\n function sum(a, b) {\n var tOfA = _typeof(a);\n\n var tOfB = _typeof(b);\n\n if (tOfA === 'string' || tOfB === 'string') {\n return a + b;\n }\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n return a + b;\n }\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n a = a.slice(0);\n a[0] += b;\n return a;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n b = b.slice(0);\n b[0] = a + b[0];\n return b;\n }\n\n if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\n var i = 0;\n var lenA = a.length;\n var lenB = b.length;\n var retArr = [];\n\n while (i < lenA || i < lenB) {\n if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\n retArr[i] = a[i] + b[i];\n } else {\n retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\n }\n\n i += 1;\n }\n\n return retArr;\n }\n\n return 0;\n }\n\n var add = sum;\n\n function sub(a, b) {\n var tOfA = _typeof(a);\n\n var tOfB = _typeof(b);\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n if (tOfA === 'string') {\n a = parseInt(a, 10);\n }\n\n if (tOfB === 'string') {\n b = parseInt(b, 10);\n }\n\n return a - b;\n }\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n a = a.slice(0);\n a[0] -= b;\n return a;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n b = b.slice(0);\n b[0] = a - b[0];\n return b;\n }\n\n if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\n var i = 0;\n var lenA = a.length;\n var lenB = b.length;\n var retArr = [];\n\n while (i < lenA || i < lenB) {\n if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\n retArr[i] = a[i] - b[i];\n } else {\n retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\n }\n\n i += 1;\n }\n\n return retArr;\n }\n\n return 0;\n }\n\n function mul(a, b) {\n var tOfA = _typeof(a);\n\n var tOfB = _typeof(b);\n\n var arr;\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n return a * b;\n }\n\n var i;\n var len;\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n len = a.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a[i] * b;\n }\n\n return arr;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n len = b.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a * b[i];\n }\n\n return arr;\n }\n\n return 0;\n }\n\n function div(a, b) {\n var tOfA = _typeof(a);\n\n var tOfB = _typeof(b);\n\n var arr;\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n return a / b;\n }\n\n var i;\n var len;\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n len = a.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a[i] / b;\n }\n\n return arr;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n len = b.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a / b[i];\n }\n\n return arr;\n }\n\n return 0;\n }\n\n function mod(a, b) {\n if (typeof a === 'string') {\n a = parseInt(a, 10);\n }\n\n if (typeof b === 'string') {\n b = parseInt(b, 10);\n }\n\n return a % b;\n }\n\n var $bm_sum = sum;\n var $bm_sub = sub;\n var $bm_mul = mul;\n var $bm_div = div;\n var $bm_mod = mod;\n\n function clamp(num, min, max) {\n if (min > max) {\n var mm = max;\n max = min;\n min = mm;\n }\n\n return Math.min(Math.max(num, min), max);\n }\n\n function radiansToDegrees(val) {\n return val / degToRads;\n }\n\n var radians_to_degrees = radiansToDegrees;\n\n function degreesToRadians(val) {\n return val * degToRads;\n }\n\n var degrees_to_radians = radiansToDegrees;\n var helperLengthArray = [0, 0, 0, 0, 0, 0];\n\n function length(arr1, arr2) {\n if (typeof arr1 === 'number' || arr1 instanceof Number) {\n arr2 = arr2 || 0;\n return Math.abs(arr1 - arr2);\n }\n\n if (!arr2) {\n arr2 = helperLengthArray;\n }\n\n var i;\n var len = Math.min(arr1.length, arr2.length);\n var addedLength = 0;\n\n for (i = 0; i < len; i += 1) {\n addedLength += Math.pow(arr2[i] - arr1[i], 2);\n }\n\n return Math.sqrt(addedLength);\n }\n\n function normalize(vec) {\n return div(vec, length(vec));\n }\n\n function rgbToHsl(val) {\n var r = val[0];\n var g = val[1];\n var b = val[2];\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h;\n var s;\n var l = (max + min) / 2;\n\n if (max === min) {\n h = 0; // achromatic\n\n s = 0; // achromatic\n } else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n\n case g:\n h = (b - r) / d + 2;\n break;\n\n case b:\n h = (r - g) / d + 4;\n break;\n\n default:\n break;\n }\n\n h /= 6;\n }\n\n return [h, s, l, val[3]];\n }\n\n function hue2rgb(p, q, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n }\n\n function hslToRgb(val) {\n var h = val[0];\n var s = val[1];\n var l = val[2];\n var r;\n var g;\n var b;\n\n if (s === 0) {\n r = l; // achromatic\n\n b = l; // achromatic\n\n g = l; // achromatic\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n\n return [r, g, b, val[3]];\n }\n\n function linear(t, tMin, tMax, value1, value2) {\n if (value1 === undefined || value2 === undefined) {\n value1 = tMin;\n value2 = tMax;\n tMin = 0;\n tMax = 1;\n }\n\n if (tMax < tMin) {\n var _tMin = tMax;\n tMax = tMin;\n tMin = _tMin;\n }\n\n if (t <= tMin) {\n return value1;\n }\n\n if (t >= tMax) {\n return value2;\n }\n\n var perc = tMax === tMin ? 0 : (t - tMin) / (tMax - tMin);\n\n if (!value1.length) {\n return value1 + (value2 - value1) * perc;\n }\n\n var i;\n var len = value1.length;\n var arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = value1[i] + (value2[i] - value1[i]) * perc;\n }\n\n return arr;\n }\n\n function random(min, max) {\n if (max === undefined) {\n if (min === undefined) {\n min = 0;\n max = 1;\n } else {\n max = min;\n min = undefined;\n }\n }\n\n if (max.length) {\n var i;\n var len = max.length;\n\n if (!min) {\n min = createTypedArray('float32', len);\n }\n\n var arr = createTypedArray('float32', len);\n var rnd = BMMath.random();\n\n for (i = 0; i < len; i += 1) {\n arr[i] = min[i] + rnd * (max[i] - min[i]);\n }\n\n return arr;\n }\n\n if (min === undefined) {\n min = 0;\n }\n\n var rndm = BMMath.random();\n return min + rndm * (max - min);\n }\n\n function createPath(points, inTangents, outTangents, closed) {\n var i;\n var len = points.length;\n var path = shapePool.newElement();\n path.setPathData(!!closed, len);\n var arrPlaceholder = [0, 0];\n var inVertexPoint;\n var outVertexPoint;\n\n for (i = 0; i < len; i += 1) {\n inVertexPoint = inTangents && inTangents[i] ? inTangents[i] : arrPlaceholder;\n outVertexPoint = outTangents && outTangents[i] ? outTangents[i] : arrPlaceholder;\n path.setTripleAt(points[i][0], points[i][1], outVertexPoint[0] + points[i][0], outVertexPoint[1] + points[i][1], inVertexPoint[0] + points[i][0], inVertexPoint[1] + points[i][1], i, true);\n }\n\n return path;\n }\n\n function initiateExpression(elem, data, property) {\n var val = data.x;\n var needsVelocity = /velocity(?![\\w\\d])/.test(val);\n\n var _needsRandom = val.indexOf('random') !== -1;\n\n var elemType = elem.data.ty;\n var transform;\n var $bm_transform;\n var content;\n var effect;\n var thisProperty = property;\n thisProperty.valueAtTime = thisProperty.getValueAtTime;\n Object.defineProperty(thisProperty, 'value', {\n get: function get() {\n return thisProperty.v;\n }\n });\n elem.comp.frameDuration = 1 / elem.comp.globalData.frameRate;\n elem.comp.displayStartTime = 0;\n var inPoint = elem.data.ip / elem.comp.globalData.frameRate;\n var outPoint = elem.data.op / elem.comp.globalData.frameRate;\n var width = elem.data.sw ? elem.data.sw : 0;\n var height = elem.data.sh ? elem.data.sh : 0;\n var name = elem.data.nm;\n var loopIn;\n var loop_in;\n var loopOut;\n var loop_out;\n var smooth;\n var toWorld;\n var fromWorld;\n var fromComp;\n var toComp;\n var fromCompToSurface;\n var position;\n var rotation;\n var anchorPoint;\n var scale;\n var thisLayer;\n var thisComp;\n var mask;\n var valueAtTime;\n var velocityAtTime;\n var scoped_bm_rt; // val = val.replace(/(\\\\?\"|')((http)(s)?(:\\/))?\\/.*?(\\\\?\"|')/g, \"\\\"\\\"\"); // deter potential network calls\n\n var expression_function = eval('[function _expression_function(){' + val + ';scoped_bm_rt=$bm_rt}]')[0]; // eslint-disable-line no-eval\n\n var numKeys = property.kf ? data.k.length : 0;\n var active = !this.data || this.data.hd !== true;\n\n var wiggle = function wiggle(freq, amp) {\n var iWiggle;\n var j;\n var lenWiggle = this.pv.length ? this.pv.length : 1;\n var addedAmps = createTypedArray('float32', lenWiggle);\n freq = 5;\n var iterations = Math.floor(time * freq);\n iWiggle = 0;\n j = 0;\n\n while (iWiggle < iterations) {\n // var rnd = BMMath.random();\n for (j = 0; j < lenWiggle; j += 1) {\n addedAmps[j] += -amp + amp * 2 * BMMath.random(); // addedAmps[j] += -amp + amp*2*rnd;\n }\n\n iWiggle += 1;\n } // var rnd2 = BMMath.random();\n\n\n var periods = time * freq;\n var perc = periods - Math.floor(periods);\n var arr = createTypedArray('float32', lenWiggle);\n\n if (lenWiggle > 1) {\n for (j = 0; j < lenWiggle; j += 1) {\n arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp * 2 * BMMath.random()) * perc; // arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp*2*rnd)*perc;\n // arr[i] = this.pv[i] + addedAmp + amp1*perc + amp2*(1-perc);\n }\n\n return arr;\n }\n\n return this.pv + addedAmps[0] + (-amp + amp * 2 * BMMath.random()) * perc;\n }.bind(this);\n\n if (thisProperty.loopIn) {\n loopIn = thisProperty.loopIn.bind(thisProperty);\n loop_in = loopIn;\n }\n\n if (thisProperty.loopOut) {\n loopOut = thisProperty.loopOut.bind(thisProperty);\n loop_out = loopOut;\n }\n\n if (thisProperty.smooth) {\n smooth = thisProperty.smooth.bind(thisProperty);\n }\n\n function loopInDuration(type, duration) {\n return loopIn(type, duration, true);\n }\n\n function loopOutDuration(type, duration) {\n return loopOut(type, duration, true);\n }\n\n if (this.getValueAtTime) {\n valueAtTime = this.getValueAtTime.bind(this);\n }\n\n if (this.getVelocityAtTime) {\n velocityAtTime = this.getVelocityAtTime.bind(this);\n }\n\n var comp = elem.comp.globalData.projectInterface.bind(elem.comp.globalData.projectInterface);\n\n function lookAt(elem1, elem2) {\n var fVec = [elem2[0] - elem1[0], elem2[1] - elem1[1], elem2[2] - elem1[2]];\n var pitch = Math.atan2(fVec[0], Math.sqrt(fVec[1] * fVec[1] + fVec[2] * fVec[2])) / degToRads;\n var yaw = -Math.atan2(fVec[1], fVec[2]) / degToRads;\n return [yaw, pitch, 0];\n }\n\n function easeOut(t, tMin, tMax, val1, val2) {\n return applyEase(easeOutBez, t, tMin, tMax, val1, val2);\n }\n\n function easeIn(t, tMin, tMax, val1, val2) {\n return applyEase(easeInBez, t, tMin, tMax, val1, val2);\n }\n\n function ease(t, tMin, tMax, val1, val2) {\n return applyEase(easeInOutBez, t, tMin, tMax, val1, val2);\n }\n\n function applyEase(fn, t, tMin, tMax, val1, val2) {\n if (val1 === undefined) {\n val1 = tMin;\n val2 = tMax;\n } else {\n t = (t - tMin) / (tMax - tMin);\n }\n\n if (t > 1) {\n t = 1;\n } else if (t < 0) {\n t = 0;\n }\n\n var mult = fn(t);\n\n if ($bm_isInstanceOfArray(val1)) {\n var iKey;\n var lenKey = val1.length;\n var arr = createTypedArray('float32', lenKey);\n\n for (iKey = 0; iKey < lenKey; iKey += 1) {\n arr[iKey] = (val2[iKey] - val1[iKey]) * mult + val1[iKey];\n }\n\n return arr;\n }\n\n return (val2 - val1) * mult + val1;\n }\n\n function nearestKey(time) {\n var iKey;\n var lenKey = data.k.length;\n var index;\n var keyTime;\n\n if (!data.k.length || typeof data.k[0] === 'number') {\n index = 0;\n keyTime = 0;\n } else {\n index = -1;\n time *= elem.comp.globalData.frameRate;\n\n if (time < data.k[0].t) {\n index = 1;\n keyTime = data.k[0].t;\n } else {\n for (iKey = 0; iKey < lenKey - 1; iKey += 1) {\n if (time === data.k[iKey].t) {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n break;\n } else if (time > data.k[iKey].t && time < data.k[iKey + 1].t) {\n if (time - data.k[iKey].t > data.k[iKey + 1].t - time) {\n index = iKey + 2;\n keyTime = data.k[iKey + 1].t;\n } else {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n }\n\n break;\n }\n }\n\n if (index === -1) {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n }\n }\n }\n\n var obKey = {};\n obKey.index = index;\n obKey.time = keyTime / elem.comp.globalData.frameRate;\n return obKey;\n }\n\n function key(ind) {\n var obKey;\n var iKey;\n var lenKey;\n\n if (!data.k.length || typeof data.k[0] === 'number') {\n throw new Error('The property has no keyframe at index ' + ind);\n }\n\n ind -= 1;\n obKey = {\n time: data.k[ind].t / elem.comp.globalData.frameRate,\n value: []\n };\n var arr = Object.prototype.hasOwnProperty.call(data.k[ind], 's') ? data.k[ind].s : data.k[ind - 1].e;\n lenKey = arr.length;\n\n for (iKey = 0; iKey < lenKey; iKey += 1) {\n obKey[iKey] = arr[iKey];\n obKey.value[iKey] = arr[iKey];\n }\n\n return obKey;\n }\n\n function framesToTime(fr, fps) {\n if (!fps) {\n fps = elem.comp.globalData.frameRate;\n }\n\n return fr / fps;\n }\n\n function timeToFrames(t, fps) {\n if (!t && t !== 0) {\n t = time;\n }\n\n if (!fps) {\n fps = elem.comp.globalData.frameRate;\n }\n\n return t * fps;\n }\n\n function seedRandom(seed) {\n BMMath.seedrandom(randSeed + seed);\n }\n\n function sourceRectAtTime() {\n return elem.sourceRectAtTime();\n }\n\n function substring(init, end) {\n if (typeof value === 'string') {\n if (end === undefined) {\n return value.substring(init);\n }\n\n return value.substring(init, end);\n }\n\n return '';\n }\n\n function substr(init, end) {\n if (typeof value === 'string') {\n if (end === undefined) {\n return value.substr(init);\n }\n\n return value.substr(init, end);\n }\n\n return '';\n }\n\n function posterizeTime(framesPerSecond) {\n time = framesPerSecond === 0 ? 0 : Math.floor(time * framesPerSecond) / framesPerSecond;\n value = valueAtTime(time);\n }\n\n var time;\n var velocity;\n var value;\n var text;\n var textIndex;\n var textTotal;\n var selectorValue;\n var index = elem.data.ind;\n var hasParent = !!(elem.hierarchy && elem.hierarchy.length);\n var parent;\n var randSeed = Math.floor(Math.random() * 1000000);\n var globalData = elem.globalData;\n\n function executeExpression(_value) {\n // globalData.pushExpression();\n value = _value;\n\n if (this.frameExpressionId === elem.globalData.frameId && this.propType !== 'textSelector') {\n return value;\n }\n\n if (this.propType === 'textSelector') {\n textIndex = this.textIndex;\n textTotal = this.textTotal;\n selectorValue = this.selectorValue;\n }\n\n if (!thisLayer) {\n text = elem.layerInterface.text;\n thisLayer = elem.layerInterface;\n thisComp = elem.comp.compInterface;\n toWorld = thisLayer.toWorld.bind(thisLayer);\n fromWorld = thisLayer.fromWorld.bind(thisLayer);\n fromComp = thisLayer.fromComp.bind(thisLayer);\n toComp = thisLayer.toComp.bind(thisLayer);\n mask = thisLayer.mask ? thisLayer.mask.bind(thisLayer) : null;\n fromCompToSurface = fromComp;\n }\n\n if (!transform) {\n transform = elem.layerInterface('ADBE Transform Group');\n $bm_transform = transform;\n\n if (transform) {\n anchorPoint = transform.anchorPoint;\n /* position = transform.position;\r\n rotation = transform.rotation;\r\n scale = transform.scale; */\n }\n }\n\n if (elemType === 4 && !content) {\n content = thisLayer('ADBE Root Vectors Group');\n }\n\n if (!effect) {\n effect = thisLayer(4);\n }\n\n hasParent = !!(elem.hierarchy && elem.hierarchy.length);\n\n if (hasParent && !parent) {\n parent = elem.hierarchy[0].layerInterface;\n }\n\n time = this.comp.renderedFrame / this.comp.globalData.frameRate;\n\n if (_needsRandom) {\n seedRandom(randSeed + time);\n }\n\n if (needsVelocity) {\n velocity = velocityAtTime(time);\n }\n\n expression_function();\n this.frameExpressionId = elem.globalData.frameId; // TODO: Check if it's possible to return on ShapeInterface the .v value\n // Changed this to a ternary operation because Rollup failed compiling it correctly\n\n scoped_bm_rt = scoped_bm_rt.propType === propTypes.SHAPE ? scoped_bm_rt.v : scoped_bm_rt;\n return scoped_bm_rt;\n } // Bundlers will see these as dead code and unless we reference them\n\n\n executeExpression.__preventDeadCodeRemoval = [$bm_transform, anchorPoint, velocity, inPoint, outPoint, width, height, name, loop_in, loop_out, smooth, toComp, fromCompToSurface, toWorld, fromWorld, mask, position, rotation, scale, thisComp, numKeys, active, wiggle, loopInDuration, loopOutDuration, comp, lookAt, easeOut, easeIn, ease, nearestKey, key, text, textIndex, textTotal, selectorValue, framesToTime, timeToFrames, sourceRectAtTime, substring, substr, posterizeTime, index, globalData];\n return executeExpression;\n }\n\n ob.initiateExpression = initiateExpression;\n ob.__preventDeadCodeRemoval = [window, document, XMLHttpRequest, fetch, frames, $bm_neg, add, $bm_sum, $bm_sub, $bm_mul, $bm_div, $bm_mod, clamp, radians_to_degrees, degreesToRadians, degrees_to_radians, normalize, rgbToHsl, hslToRgb, linear, random, createPath];\n return ob;\n }();\n\n var expressionHelpers = function () {\n function searchExpressions(elem, data, prop) {\n if (data.x) {\n prop.k = true;\n prop.x = true;\n prop.initiateExpression = ExpressionManager.initiateExpression;\n prop.effectsSequence.push(prop.initiateExpression(elem, data, prop).bind(prop));\n }\n }\n\n function getValueAtTime(frameNum) {\n frameNum *= this.elem.globalData.frameRate;\n frameNum -= this.offsetTime;\n\n if (frameNum !== this._cachingAtTime.lastFrame) {\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastFrame < frameNum ? this._cachingAtTime.lastIndex : 0;\n this._cachingAtTime.value = this.interpolateValue(frameNum, this._cachingAtTime);\n this._cachingAtTime.lastFrame = frameNum;\n }\n\n return this._cachingAtTime.value;\n }\n\n function getSpeedAtTime(frameNum) {\n var delta = -0.01;\n var v1 = this.getValueAtTime(frameNum);\n var v2 = this.getValueAtTime(frameNum + delta);\n var speed = 0;\n\n if (v1.length) {\n var i;\n\n for (i = 0; i < v1.length; i += 1) {\n speed += Math.pow(v2[i] - v1[i], 2);\n }\n\n speed = Math.sqrt(speed) * 100;\n } else {\n speed = 0;\n }\n\n return speed;\n }\n\n function getVelocityAtTime(frameNum) {\n if (this.vel !== undefined) {\n return this.vel;\n }\n\n var delta = -0.001; // frameNum += this.elem.data.st;\n\n var v1 = this.getValueAtTime(frameNum);\n var v2 = this.getValueAtTime(frameNum + delta);\n var velocity;\n\n if (v1.length) {\n velocity = createTypedArray('float32', v1.length);\n var i;\n\n for (i = 0; i < v1.length; i += 1) {\n // removing frameRate\n // if needed, don't add it here\n // velocity[i] = this.elem.globalData.frameRate*((v2[i] - v1[i])/delta);\n velocity[i] = (v2[i] - v1[i]) / delta;\n }\n } else {\n velocity = (v2 - v1) / delta;\n }\n\n return velocity;\n }\n\n function getStaticValueAtTime() {\n return this.pv;\n }\n\n function setGroupProperty(propertyGroup) {\n this.propertyGroup = propertyGroup;\n }\n\n return {\n searchExpressions: searchExpressions,\n getSpeedAtTime: getSpeedAtTime,\n getVelocityAtTime: getVelocityAtTime,\n getValueAtTime: getValueAtTime,\n getStaticValueAtTime: getStaticValueAtTime,\n setGroupProperty: setGroupProperty\n };\n }();\n\n function addPropertyDecorator() {\n function loopOut(type, duration, durationFlag) {\n if (!this.k || !this.keyframes) {\n return this.pv;\n }\n\n type = type ? type.toLowerCase() : '';\n var currentFrame = this.comp.renderedFrame;\n var keyframes = this.keyframes;\n var lastKeyFrame = keyframes[keyframes.length - 1].t;\n\n if (currentFrame <= lastKeyFrame) {\n return this.pv;\n }\n\n var cycleDuration;\n var firstKeyFrame;\n\n if (!durationFlag) {\n if (!duration || duration > keyframes.length - 1) {\n duration = keyframes.length - 1;\n }\n\n firstKeyFrame = keyframes[keyframes.length - 1 - duration].t;\n cycleDuration = lastKeyFrame - firstKeyFrame;\n } else {\n if (!duration) {\n cycleDuration = Math.max(0, lastKeyFrame - this.elem.data.ip);\n } else {\n cycleDuration = Math.abs(lastKeyFrame - this.elem.comp.globalData.frameRate * duration);\n }\n\n firstKeyFrame = lastKeyFrame - cycleDuration;\n }\n\n var i;\n var len;\n var ret;\n\n if (type === 'pingpong') {\n var iterations = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\n\n if (iterations % 2 !== 0) {\n return this.getValueAtTime((cycleDuration - (currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n } else if (type === 'offset') {\n var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n var current = this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n\n var repeats = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\n\n if (this.pv.length) {\n ret = new Array(initV.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = (endV[i] - initV[i]) * repeats + current[i];\n }\n\n return ret;\n }\n\n return (endV - initV) * repeats + current;\n } else if (type === 'continue') {\n var lastValue = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n var nextLastValue = this.getValueAtTime((lastKeyFrame - 0.001) / this.comp.globalData.frameRate, 0);\n\n if (this.pv.length) {\n ret = new Array(lastValue.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = lastValue[i] + (lastValue[i] - nextLastValue[i]) * ((currentFrame - lastKeyFrame) / this.comp.globalData.frameRate) / 0.0005; // eslint-disable-line\n }\n\n return ret;\n }\n\n return lastValue + (lastValue - nextLastValue) * ((currentFrame - lastKeyFrame) / 0.001);\n }\n\n return this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n\n function loopIn(type, duration, durationFlag) {\n if (!this.k) {\n return this.pv;\n }\n\n type = type ? type.toLowerCase() : '';\n var currentFrame = this.comp.renderedFrame;\n var keyframes = this.keyframes;\n var firstKeyFrame = keyframes[0].t;\n\n if (currentFrame >= firstKeyFrame) {\n return this.pv;\n }\n\n var cycleDuration;\n var lastKeyFrame;\n\n if (!durationFlag) {\n if (!duration || duration > keyframes.length - 1) {\n duration = keyframes.length - 1;\n }\n\n lastKeyFrame = keyframes[duration].t;\n cycleDuration = lastKeyFrame - firstKeyFrame;\n } else {\n if (!duration) {\n cycleDuration = Math.max(0, this.elem.data.op - firstKeyFrame);\n } else {\n cycleDuration = Math.abs(this.elem.comp.globalData.frameRate * duration);\n }\n\n lastKeyFrame = firstKeyFrame + cycleDuration;\n }\n\n var i;\n var len;\n var ret;\n\n if (type === 'pingpong') {\n var iterations = Math.floor((firstKeyFrame - currentFrame) / cycleDuration);\n\n if (iterations % 2 === 0) {\n return this.getValueAtTime(((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n } else if (type === 'offset') {\n var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n var current = this.getValueAtTime((cycleDuration - (firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0);\n var repeats = Math.floor((firstKeyFrame - currentFrame) / cycleDuration) + 1;\n\n if (this.pv.length) {\n ret = new Array(initV.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = current[i] - (endV[i] - initV[i]) * repeats;\n }\n\n return ret;\n }\n\n return current - (endV - initV) * repeats;\n } else if (type === 'continue') {\n var firstValue = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n var nextFirstValue = this.getValueAtTime((firstKeyFrame + 0.001) / this.comp.globalData.frameRate, 0);\n\n if (this.pv.length) {\n ret = new Array(firstValue.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = firstValue[i] + (firstValue[i] - nextFirstValue[i]) * (firstKeyFrame - currentFrame) / 0.001;\n }\n\n return ret;\n }\n\n return firstValue + (firstValue - nextFirstValue) * (firstKeyFrame - currentFrame) / 0.001;\n }\n\n return this.getValueAtTime((cycleDuration - ((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n\n function smooth(width, samples) {\n if (!this.k) {\n return this.pv;\n }\n\n width = (width || 0.4) * 0.5;\n samples = Math.floor(samples || 5);\n\n if (samples <= 1) {\n return this.pv;\n }\n\n var currentTime = this.comp.renderedFrame / this.comp.globalData.frameRate;\n var initFrame = currentTime - width;\n var endFrame = currentTime + width;\n var sampleFrequency = samples > 1 ? (endFrame - initFrame) / (samples - 1) : 1;\n var i = 0;\n var j = 0;\n var value;\n\n if (this.pv.length) {\n value = createTypedArray('float32', this.pv.length);\n } else {\n value = 0;\n }\n\n var sampleValue;\n\n while (i < samples) {\n sampleValue = this.getValueAtTime(initFrame + i * sampleFrequency);\n\n if (this.pv.length) {\n for (j = 0; j < this.pv.length; j += 1) {\n value[j] += sampleValue[j];\n }\n } else {\n value += sampleValue;\n }\n\n i += 1;\n }\n\n if (this.pv.length) {\n for (j = 0; j < this.pv.length; j += 1) {\n value[j] /= samples;\n }\n } else {\n value /= samples;\n }\n\n return value;\n }\n\n function getTransformValueAtTime(time) {\n if (!this._transformCachingAtTime) {\n this._transformCachingAtTime = {\n v: new Matrix()\n };\n } /// /\n\n\n var matrix = this._transformCachingAtTime.v;\n matrix.cloneFromProps(this.pre.props);\n\n if (this.appliedTransformations < 1) {\n var anchor = this.a.getValueAtTime(time);\n matrix.translate(-anchor[0] * this.a.mult, -anchor[1] * this.a.mult, anchor[2] * this.a.mult);\n }\n\n if (this.appliedTransformations < 2) {\n var scale = this.s.getValueAtTime(time);\n matrix.scale(scale[0] * this.s.mult, scale[1] * this.s.mult, scale[2] * this.s.mult);\n }\n\n if (this.sk && this.appliedTransformations < 3) {\n var skew = this.sk.getValueAtTime(time);\n var skewAxis = this.sa.getValueAtTime(time);\n matrix.skewFromAxis(-skew * this.sk.mult, skewAxis * this.sa.mult);\n }\n\n if (this.r && this.appliedTransformations < 4) {\n var rotation = this.r.getValueAtTime(time);\n matrix.rotate(-rotation * this.r.mult);\n } else if (!this.r && this.appliedTransformations < 4) {\n var rotationZ = this.rz.getValueAtTime(time);\n var rotationY = this.ry.getValueAtTime(time);\n var rotationX = this.rx.getValueAtTime(time);\n var orientation = this.or.getValueAtTime(time);\n matrix.rotateZ(-rotationZ * this.rz.mult).rotateY(rotationY * this.ry.mult).rotateX(rotationX * this.rx.mult).rotateZ(-orientation[2] * this.or.mult).rotateY(orientation[1] * this.or.mult).rotateX(orientation[0] * this.or.mult);\n }\n\n if (this.data.p && this.data.p.s) {\n var positionX = this.px.getValueAtTime(time);\n var positionY = this.py.getValueAtTime(time);\n\n if (this.data.p.z) {\n var positionZ = this.pz.getValueAtTime(time);\n matrix.translate(positionX * this.px.mult, positionY * this.py.mult, -positionZ * this.pz.mult);\n } else {\n matrix.translate(positionX * this.px.mult, positionY * this.py.mult, 0);\n }\n } else {\n var position = this.p.getValueAtTime(time);\n matrix.translate(position[0] * this.p.mult, position[1] * this.p.mult, -position[2] * this.p.mult);\n }\n\n return matrix; /// /\n }\n\n function getTransformStaticValueAtTime() {\n return this.v.clone(new Matrix());\n }\n\n var getTransformProperty = TransformPropertyFactory.getTransformProperty;\n\n TransformPropertyFactory.getTransformProperty = function (elem, data, container) {\n var prop = getTransformProperty(elem, data, container);\n\n if (prop.dynamicProperties.length) {\n prop.getValueAtTime = getTransformValueAtTime.bind(prop);\n } else {\n prop.getValueAtTime = getTransformStaticValueAtTime.bind(prop);\n }\n\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\n return prop;\n };\n\n var propertyGetProp = PropertyFactory.getProp;\n\n PropertyFactory.getProp = function (elem, data, type, mult, container) {\n var prop = propertyGetProp(elem, data, type, mult, container); // prop.getVelocityAtTime = getVelocityAtTime;\n // prop.loopOut = loopOut;\n // prop.loopIn = loopIn;\n\n if (prop.kf) {\n prop.getValueAtTime = expressionHelpers.getValueAtTime.bind(prop);\n } else {\n prop.getValueAtTime = expressionHelpers.getStaticValueAtTime.bind(prop);\n }\n\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\n prop.loopOut = loopOut;\n prop.loopIn = loopIn;\n prop.smooth = smooth;\n prop.getVelocityAtTime = expressionHelpers.getVelocityAtTime.bind(prop);\n prop.getSpeedAtTime = expressionHelpers.getSpeedAtTime.bind(prop);\n prop.numKeys = data.a === 1 ? data.k.length : 0;\n prop.propertyIndex = data.ix;\n var value = 0;\n\n if (type !== 0) {\n value = createTypedArray('float32', data.a === 1 ? data.k[0].s.length : data.k.length);\n }\n\n prop._cachingAtTime = {\n lastFrame: initialDefaultFrame,\n lastIndex: 0,\n value: value\n };\n expressionHelpers.searchExpressions(elem, data, prop);\n\n if (prop.k) {\n container.addDynamicProperty(prop);\n }\n\n return prop;\n };\n\n function getShapeValueAtTime(frameNum) {\n // For now this caching object is created only when needed instead of creating it when the shape is initialized.\n if (!this._cachingAtTime) {\n this._cachingAtTime = {\n shapeValue: shapePool.clone(this.pv),\n lastIndex: 0,\n lastTime: initialDefaultFrame\n };\n }\n\n frameNum *= this.elem.globalData.frameRate;\n frameNum -= this.offsetTime;\n\n if (frameNum !== this._cachingAtTime.lastTime) {\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastTime < frameNum ? this._caching.lastIndex : 0;\n this._cachingAtTime.lastTime = frameNum;\n this.interpolateShape(frameNum, this._cachingAtTime.shapeValue, this._cachingAtTime);\n }\n\n return this._cachingAtTime.shapeValue;\n }\n\n var ShapePropertyConstructorFunction = ShapePropertyFactory.getConstructorFunction();\n var KeyframedShapePropertyConstructorFunction = ShapePropertyFactory.getKeyframedConstructorFunction();\n\n function ShapeExpressions() {}\n\n ShapeExpressions.prototype = {\n vertices: function vertices(prop, time) {\n if (this.k) {\n this.getValue();\n }\n\n var shapePath = this.v;\n\n if (time !== undefined) {\n shapePath = this.getValueAtTime(time, 0);\n }\n\n var i;\n var len = shapePath._length;\n var vertices = shapePath[prop];\n var points = shapePath.v;\n var arr = createSizedArray(len);\n\n for (i = 0; i < len; i += 1) {\n if (prop === 'i' || prop === 'o') {\n arr[i] = [vertices[i][0] - points[i][0], vertices[i][1] - points[i][1]];\n } else {\n arr[i] = [vertices[i][0], vertices[i][1]];\n }\n }\n\n return arr;\n },\n points: function points(time) {\n return this.vertices('v', time);\n },\n inTangents: function inTangents(time) {\n return this.vertices('i', time);\n },\n outTangents: function outTangents(time) {\n return this.vertices('o', time);\n },\n isClosed: function isClosed() {\n return this.v.c;\n },\n pointOnPath: function pointOnPath(perc, time) {\n var shapePath = this.v;\n\n if (time !== undefined) {\n shapePath = this.getValueAtTime(time, 0);\n }\n\n if (!this._segmentsLength) {\n this._segmentsLength = bez.getSegmentsLength(shapePath);\n }\n\n var segmentsLength = this._segmentsLength;\n var lengths = segmentsLength.lengths;\n var lengthPos = segmentsLength.totalLength * perc;\n var i = 0;\n var len = lengths.length;\n var accumulatedLength = 0;\n var pt;\n\n while (i < len) {\n if (accumulatedLength + lengths[i].addedLength > lengthPos) {\n var initIndex = i;\n var endIndex = shapePath.c && i === len - 1 ? 0 : i + 1;\n var segmentPerc = (lengthPos - accumulatedLength) / lengths[i].addedLength;\n pt = bez.getPointInSegment(shapePath.v[initIndex], shapePath.v[endIndex], shapePath.o[initIndex], shapePath.i[endIndex], segmentPerc, lengths[i]);\n break;\n } else {\n accumulatedLength += lengths[i].addedLength;\n }\n\n i += 1;\n }\n\n if (!pt) {\n pt = shapePath.c ? [shapePath.v[0][0], shapePath.v[0][1]] : [shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1]];\n }\n\n return pt;\n },\n vectorOnPath: function vectorOnPath(perc, time, vectorType) {\n // perc doesn't use triple equality because it can be a Number object as well as a primitive.\n if (perc == 1) {\n // eslint-disable-line eqeqeq\n perc = this.v.c;\n } else if (perc == 0) {\n // eslint-disable-line eqeqeq\n perc = 0.999;\n }\n\n var pt1 = this.pointOnPath(perc, time);\n var pt2 = this.pointOnPath(perc + 0.001, time);\n var xLength = pt2[0] - pt1[0];\n var yLength = pt2[1] - pt1[1];\n var magnitude = Math.sqrt(Math.pow(xLength, 2) + Math.pow(yLength, 2));\n\n if (magnitude === 0) {\n return [0, 0];\n }\n\n var unitVector = vectorType === 'tangent' ? [xLength / magnitude, yLength / magnitude] : [-yLength / magnitude, xLength / magnitude];\n return unitVector;\n },\n tangentOnPath: function tangentOnPath(perc, time) {\n return this.vectorOnPath(perc, time, 'tangent');\n },\n normalOnPath: function normalOnPath(perc, time) {\n return this.vectorOnPath(perc, time, 'normal');\n },\n setGroupProperty: expressionHelpers.setGroupProperty,\n getValueAtTime: expressionHelpers.getStaticValueAtTime\n };\n extendPrototype([ShapeExpressions], ShapePropertyConstructorFunction);\n extendPrototype([ShapeExpressions], KeyframedShapePropertyConstructorFunction);\n KeyframedShapePropertyConstructorFunction.prototype.getValueAtTime = getShapeValueAtTime;\n KeyframedShapePropertyConstructorFunction.prototype.initiateExpression = ExpressionManager.initiateExpression;\n var propertyGetShapeProp = ShapePropertyFactory.getShapeProp;\n\n ShapePropertyFactory.getShapeProp = function (elem, data, type, arr, trims) {\n var prop = propertyGetShapeProp(elem, data, type, arr, trims);\n prop.propertyIndex = data.ix;\n prop.lock = false;\n\n if (type === 3) {\n expressionHelpers.searchExpressions(elem, data.pt, prop);\n } else if (type === 4) {\n expressionHelpers.searchExpressions(elem, data.ks, prop);\n }\n\n if (prop.k) {\n elem.addDynamicProperty(prop);\n }\n\n return prop;\n };\n }\n\n function initialize$1() {\n addPropertyDecorator();\n }\n\n function addDecorator() {\n function searchExpressions() {\n if (this.data.d.x) {\n this.calculateExpression = ExpressionManager.initiateExpression.bind(this)(this.elem, this.data.d, this);\n this.addEffect(this.getExpressionValue.bind(this));\n return true;\n }\n\n return null;\n }\n\n TextProperty.prototype.getExpressionValue = function (currentValue, text) {\n var newValue = this.calculateExpression(text);\n\n if (currentValue.t !== newValue) {\n var newData = {};\n this.copyData(newData, currentValue);\n newData.t = newValue.toString();\n newData.__complete = false;\n return newData;\n }\n\n return currentValue;\n };\n\n TextProperty.prototype.searchProperty = function () {\n var isKeyframed = this.searchKeyframes();\n var hasExpressions = this.searchExpressions();\n this.kf = isKeyframed || hasExpressions;\n return this.kf;\n };\n\n TextProperty.prototype.searchExpressions = searchExpressions;\n }\n\n function initialize() {\n addDecorator();\n }\n\n registerRenderer('canvas', CanvasRenderer);\n registerRenderer('html', HybridRenderer);\n registerRenderer('svg', SVGRenderer); // Registering shape modifiers\n\n ShapeModifiers.registerModifier('tm', TrimModifier);\n ShapeModifiers.registerModifier('pb', PuckerAndBloatModifier);\n ShapeModifiers.registerModifier('rp', RepeaterModifier);\n ShapeModifiers.registerModifier('rd', RoundCornersModifier); // Registering expression plugin\n\n setExpressionsPlugin(Expressions);\n initialize$1();\n initialize(); // Registering svg effects\n\n registerEffect(20, SVGTintFilter, true);\n registerEffect(21, SVGFillFilter, true);\n registerEffect(22, SVGStrokeEffect, false);\n registerEffect(23, SVGTritoneFilter, true);\n registerEffect(24, SVGProLevelsFilter, true);\n registerEffect(25, SVGDropShadowEffect, true);\n registerEffect(28, SVGMatte3Effect, false);\n registerEffect(29, SVGGaussianBlurEffect, true);\n\n return lottie;\n\n}));\n","import lottie, { AnimationItem } from 'lottie-web';\nimport * as React from 'react';\n\n/**\n * Parse a resource into a JSON object or a URL string\n */\nexport function parseSrc(src: string | object): string | object {\n if (typeof src === 'object') {\n return src;\n }\n\n try {\n return JSON.parse(src);\n } catch (e) {\n // Do nothing...\n }\n\n // Try construct an absolute URL from the src URL\n try {\n return new URL(src).toString();\n } catch (e) {\n // Do nothing...\n }\n\n return src;\n}\n\n// Necessary so that we can add Lottie to the window afterwards\ndeclare global {\n interface Window {\n lottie: any;\n }\n}\n\n// Define valid player states\nexport enum PlayerState {\n Loading = 'loading',\n Playing = 'playing',\n Paused = 'paused',\n Stopped = 'stopped',\n Frozen = 'frozen',\n Error = 'error',\n}\n\n// Define player events\nexport enum PlayerEvent {\n Load = 'load',\n Error = 'error',\n Ready = 'ready',\n Play = 'play',\n Pause = 'pause',\n Stop = 'stop',\n Freeze = 'freeze',\n Loop = 'loop',\n Complete = 'complete',\n Frame = 'frame',\n}\n\nexport type PlayerDirection = -1 | 1;\n\nexport interface IPlayerProps {\n id?: string;\n lottieRef?: (ref: AnimationItem) => void;\n onEvent?: (event: PlayerEvent) => any;\n onStateChange?: (state: PlayerState) => any;\n onBackgroundChange?: (color: string) => void;\n autoplay?: boolean;\n background?: string;\n children?: React.ReactNode | React.ReactNode[];\n controls?: boolean;\n direction?: PlayerDirection;\n hover?: boolean;\n loop?: boolean | number;\n renderer?: any;\n speed?: number;\n src: object | string;\n style?: React.CSSProperties;\n rendererSettings?: object;\n keepLastFrame?: boolean;\n className?: string;\n}\n\ninterface IPlayerState {\n animationData: any;\n background: string;\n containerRef: React.Ref | null;\n debug?: boolean;\n instance: AnimationItem | null;\n seeker: number;\n playerState: PlayerState;\n}\n\n// Build default config for lottie-web player\nconst defaultOptions = {\n clearCanvas: false,\n hideOnTransparent: true,\n progressiveLoad: true,\n};\n\nexport class Player extends React.Component {\n public static async getDerivedStateFromProps(nextProps: any, prevState: any) {\n if (nextProps.background !== prevState.background) {\n return { background: nextProps.background };\n } else {\n return null;\n }\n }\n\n public container: Element | null = null;\n public unmounted = false;\n\n constructor(props: IPlayerProps) {\n super(props);\n\n if (typeof window !== 'undefined') {\n window.lottie = lottie;\n }\n this.state = {\n animationData: null,\n background: 'transparent',\n containerRef: React.createRef(),\n debug: true,\n instance: null,\n playerState: PlayerState.Loading,\n seeker: 0,\n };\n }\n\n static defaultProps = {\n loop: false,\n };\n\n public async componentDidMount() {\n if (!this.unmounted) {\n await this.createLottie();\n }\n }\n\n public componentWillUnmount() {\n this.unmounted = true;\n if (this.state.instance) {\n this.state.instance.destroy();\n }\n }\n\n public async componentDidUpdate(prevProps: any) {\n if (this.props.src !== prevProps.src) {\n if (this.state.instance) {\n this.state.instance.destroy();\n }\n await this.createLottie();\n }\n }\n handleBgChange = (childData: any) => {\n this.setState({ background: childData });\n };\n triggerDownload = (dataUri: any, filename: any) => {\n const element = document.createElement('a');\n\n element.href = dataUri;\n element.download = filename;\n document.body.appendChild(element);\n\n element.click();\n\n document.body.removeChild(element);\n };\n snapshot = (download = true) => {\n let data;\n const id = this.props.id ? this.props.id : 'lottie';\n const lottieElement = document.getElementById(id);\n if (this.props.renderer === 'svg') {\n // Get SVG element and serialize markup\n if (lottieElement) {\n const svgElement = lottieElement.querySelector('svg');\n\n if (svgElement) {\n const serializedSvg = new XMLSerializer().serializeToString(svgElement);\n data = 'data:image/svg+xml;charset=utf-8,' + encodeURIComponent(serializedSvg);\n }\n }\n\n // Trigger file download if needed\n if (download) {\n // this.triggerDownload(data, `snapshot_${progress}.svg`);\n this.triggerDownload(data, `snapshot.svg`);\n }\n } else if (this.props.renderer === 'canvas') {\n if (lottieElement) {\n const canvas = lottieElement.querySelector('canvas');\n if (canvas) {\n data = canvas.toDataURL('image/png');\n }\n }\n // Trigger file download if needed\n if (download) {\n // this.triggerDownload(data, `snapshot_${progress}.png`);\n this.triggerDownload(data, `snapshot.png`);\n }\n }\n\n return data;\n };\n\n public render() {\n const { children, loop, style, onBackgroundChange, className } = this.props;\n const { animationData, instance, playerState, seeker, debug, background } = this.state;\n\n return (\n
\n {this.state.playerState === PlayerState.Error ? (\n
\n \n ⚠️\n \n
\n ) : (\n (this.container = el)}\n style={{\n background,\n margin: '0 auto',\n outline: 'none',\n overflow: 'hidden',\n ...style,\n }}\n className={className}\n >
\n )}\n {React.Children.map(children, child => {\n if (React.isValidElement(child)) {\n return React.cloneElement(child, {\n animationData,\n background,\n debug,\n instance,\n loop,\n pause: () => this.pause(),\n play: () => this.play(),\n playerState,\n seeker,\n setBackground: (value: string) => {\n this.setState({ background: value });\n\n if (typeof onBackgroundChange === 'function') {\n onBackgroundChange(value);\n }\n },\n setSeeker: (f: number, p: boolean) => this.setSeeker(f, p),\n stop: () => this.stop(),\n toggleDebug: () => this.toggleDebug(),\n setLoop: (loop: boolean) => this.setLoop(loop),\n colorChangedEvent: (hex: string) => {\n this.handleBgChange(hex);\n },\n snapshot: () => {\n this.snapshot();\n },\n });\n }\n return null;\n })}\n \n );\n }\n\n private toggleDebug() {\n this.setState({ debug: !this.state.debug });\n }\n\n private async createLottie() {\n const {\n autoplay,\n direction,\n loop,\n lottieRef,\n renderer,\n speed,\n src,\n background,\n rendererSettings,\n hover,\n } = this.props;\n const { instance } = this.state;\n\n if (!src || !this.container) {\n return;\n }\n\n // Load the resource information\n try {\n // Parse the src to see if it is a URL or Lottie JSON data\n let animationData = parseSrc(src);\n\n if (typeof animationData === 'string') {\n const fetchResult = await fetch(animationData as string);\n animationData = await fetchResult.json();\n }\n\n // Clear previous animation, if any\n if (instance) {\n instance.destroy();\n }\n\n // Initialize lottie player and load animation\n const newInstance = lottie.loadAnimation({\n rendererSettings: rendererSettings || defaultOptions,\n animationData,\n autoplay: autoplay || false,\n container: this.container as Element,\n loop: loop || false,\n renderer,\n });\n if (speed) {\n newInstance.setSpeed(speed);\n }\n this.setState({ animationData });\n\n // Handle new frame event\n newInstance.addEventListener('enterFrame', () => {\n this.triggerEvent(PlayerEvent.Frame);\n\n this.setState({\n seeker: Math.floor((newInstance as any).currentFrame),\n });\n });\n\n // Handle lottie-web ready event\n newInstance.addEventListener('DOMLoaded', () => {\n this.triggerEvent(PlayerEvent.Load);\n });\n\n // Handle animation data load complete\n newInstance.addEventListener('data_ready', () => {\n this.triggerEvent(PlayerEvent.Ready);\n });\n\n // Set error state when animation load fail event triggers\n newInstance.addEventListener('data_failed', () => {\n this.setState({ playerState: PlayerState.Error });\n });\n\n // Handle new loop event\n newInstance.addEventListener('loopComplete', () => {\n this.triggerEvent(PlayerEvent.Loop);\n });\n\n // Set state to paused if loop is off and anim has completed\n newInstance.addEventListener('complete', () => {\n this.triggerEvent(PlayerEvent.Complete);\n this.setState({ playerState: PlayerState.Paused });\n\n if (!this.props.keepLastFrame || this.props.loop) {\n this.setSeeker(0);\n }\n });\n\n // Set handlers to auto play animation on hover if enabled\n this.container.addEventListener('mouseenter', () => {\n if (hover && this.state.playerState !== PlayerState.Playing) {\n if (this.props.keepLastFrame) {\n this.stop();\n }\n this.play();\n }\n });\n this.container.addEventListener('mouseleave', () => {\n if (hover && this.state.playerState === PlayerState.Playing) {\n this.stop();\n }\n });\n\n // Set initial playback speed and direction\n if (speed) {\n this.setPlayerSpeed(speed);\n }\n\n if (direction) {\n this.setPlayerDirection(direction);\n }\n\n if (background) {\n this.setState({ background });\n }\n\n this.setState({ instance: newInstance }, () => {\n if (typeof lottieRef === 'function') {\n lottieRef(newInstance);\n }\n if (autoplay) {\n this.play();\n }\n });\n } catch (e) {\n this.setState({ playerState: PlayerState.Error });\n }\n }\n\n public play() {\n const { instance } = this.state;\n\n if (instance) {\n this.triggerEvent(PlayerEvent.Play);\n\n instance.play();\n\n this.setState({ playerState: PlayerState.Playing });\n }\n }\n\n public pause() {\n const { instance } = this.state;\n\n if (instance) {\n this.triggerEvent(PlayerEvent.Pause);\n\n instance.pause();\n\n this.setState({ playerState: PlayerState.Paused });\n }\n }\n\n public stop() {\n const { instance } = this.state;\n\n if (instance) {\n this.triggerEvent(PlayerEvent.Stop);\n\n instance.stop();\n\n this.setState({ playerState: PlayerState.Stopped });\n }\n }\n\n public setPlayerSpeed(speed: number) {\n const { instance } = this.state;\n\n if (instance) {\n instance.setSpeed(speed);\n }\n }\n\n public setPlayerDirection(direction: PlayerDirection) {\n const { instance } = this.state;\n\n if (instance) {\n instance.setDirection(direction);\n }\n }\n\n public setSeeker(seek: number, play = false) {\n const { instance, playerState } = this.state;\n\n if (instance) {\n if (!play || playerState !== PlayerState.Playing) {\n instance.goToAndStop(seek, true);\n this.triggerEvent(PlayerEvent.Pause);\n this.setState({ playerState: PlayerState.Paused });\n } else {\n instance.goToAndPlay(seek, true);\n }\n }\n }\n\n public setLoop(loop: boolean) {\n const { instance } = this.state;\n\n if (instance) {\n instance.loop = loop;\n this.setState({ instance: instance });\n }\n }\n private triggerEvent(event: PlayerEvent) {\n const { onEvent } = this.props;\n\n if (onEvent) {\n onEvent(event);\n }\n }\n}\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import * as React from 'react';\n\ninterface ColorPickerProps {\n colorChangedEvent?: (hex: string) => void;\n}\nexport class ColorPicker extends React.Component {\n state = {\n red: 0,\n green: 0,\n blue: 0,\n rgba: null,\n hex: '#000000',\n colorComponents: [],\n };\n\n handleChange = (rgb: string, value: any) => {\n if (rgb === 'r') {\n const hex =\n '#' +\n (value | (1 << 8)).toString(16).slice(1) +\n (this.state.green | (1 << 8)).toString(16).slice(1) +\n (this.state.blue | (1 << 8)).toString(16).slice(1);\n this.setState({ hex: hex });\n } else if (rgb === 'g') {\n const hex =\n '#' +\n (this.state.red | (1 << 8)).toString(16).slice(1) +\n (value | (1 << 8)).toString(16).slice(1) +\n (this.state.blue | (1 << 8)).toString(16).slice(1);\n this.setState({ hex: hex });\n } else if (rgb === 'b') {\n const hex =\n '#' +\n (this.state.red | (1 << 8)).toString(16).slice(1) +\n (this.state.green | (1 << 8)).toString(16).slice(1) +\n (value | (1 << 8)).toString(16).slice(1);\n this.setState({ hex: hex });\n }\n };\n parseColor = (input: string) => {\n if (typeof input !== 'string') {\n return;\n }\n if (input[0] === '#') {\n const _colorComponents =\n input.length === 4\n ? [input.slice(1, 2), input.slice(2, 3), input.slice(3, 4)].map(n => parseInt(`${n}${n}`, 16))\n : [input.slice(1, 3), input.slice(3, 5), input.slice(5, 7)].map(n => parseInt(n, 16));\n this.setState({ colorComponents: _colorComponents });\n } else if (input.startsWith('rgb')) {\n const _colorComponents = input.match(/\\d+/g)?.map(n => parseInt(n));\n if (_colorComponents !== undefined) {\n this.setState({ colorComponents: _colorComponents });\n }\n }\n\n if (this.state.colorComponents.length) {\n this.setState({ red: this.state.colorComponents[0] });\n this.setState({ green: this.state.colorComponents[1] });\n this.setState({ blue: this.state.colorComponents[2] });\n }\n };\n\n componentDidUpdate(_prevProps: any, prevState: any) {\n if (this.props.colorChangedEvent) {\n if (this.state.hex !== prevState.hex) {\n this.props.colorChangedEvent(this.state.hex);\n }\n }\n return true;\n }\n public render() {\n return (\n
\n
\n
\n Red\n {\n this.setState({ red: event.target.value });\n this.handleChange('r', event.target.value);\n }}\n />\n {\n this.setState({ red: event.target.value });\n this.handleChange('r', event.target.value);\n }}\n />\n
\n
\n Green\n {\n this.setState({ green: event.target.value });\n this.handleChange('g', event.target.value);\n }}\n />\n {\n this.setState({ green: event.target.value });\n this.handleChange('g', event.target.value);\n }}\n />\n
\n
\n Blue\n {\n this.setState({ blue: event.target.value });\n this.handleChange('b', event.target.value);\n }}\n />\n {\n this.setState({ blue: event.target.value });\n this.handleChange('b', event.target.value);\n }}\n />\n
\n
\n
\n \n
\n {\n this.setState({ hex: e.target.value });\n this.parseColor(e.target.value);\n }}\n />\n
\n
\n
\n );\n }\n}\n","/* eslint-disable jsx-a11y/mouse-events-have-key-events */\n/* eslint-disable react/jsx-no-comment-textnodes */\nimport * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport { ReactNode } from 'react';\n\ninterface IPopoverProps {\n children: ReactNode;\n icon: ReactNode;\n}\n\nexport const Popover: React.FC = (props: IPopoverProps) => {\n const { children, icon } = props;\n const [_triggerRef, setTriggerRef] = useState(null);\n const [_contentRef, setContentRef] = useState(null);\n const [_alignment, setAlignment] = useState(null);\n const [_open, setOpen] = useState(false);\n\n useEffect(() => {\n if (_triggerRef && _contentRef) {\n const triggerBounds = _triggerRef.getBoundingClientRect();\n const contentBounds = _contentRef.getBoundingClientRect();\n\n const alignment = triggerBounds.left + contentBounds.width > window.innerWidth ? -1 : 0;\n\n setAlignment(alignment);\n }\n }, [_alignment, _contentRef, _triggerRef]);\n\n // /**\n // * Show content box\n // */\n const show = () => {\n setOpen(true);\n };\n\n /**\n * Hide content box\n */\n const hide = () => {\n setOpen(false);\n };\n\n return (\n {\n show();\n }}\n onMouseLeave={() => {\n hide();\n }}\n ref={triggerRef => {\n setTriggerRef(triggerRef);\n }}\n >\n
{icon}
\n\n {\n setContentRef(contentRef);\n }}\n style={{\n bottom: '22px',\n right: '0px',\n zIndex: 2,\n visibility: _open ? 'visible' : 'hidden',\n }}\n >\n {children}\n \n \n );\n};\nexport default Popover;\n","import './Styles.css';\n\nimport * as React from 'react';\n\n// const active = 'rgba(15, 204, 206, 0.4)';\n// const inactive = '#dbdbdb';\n\ninterface ISeekerProps {\n className?: string;\n disabled?: boolean;\n max: number;\n min: number;\n onChange: (e: any) => void;\n onChangeStart?: (v: number) => void;\n onChangeEnd?: (v: number) => void;\n showLabels?: boolean;\n step: number;\n value: number;\n darkTheme?: boolean;\n}\n\nexport class Seeker extends React.Component {\n inputRef: any = React.createRef();\n\n constructor(props: ISeekerProps) {\n super(props);\n this.state = { value: 0 };\n }\n\n handleChange = () => (event: any) => {\n const value = event.target.value;\n const frame = Math.floor((value / 100) * this.props.max);\n this.props.onChange(frame);\n };\n\n render() {\n const progress = (this.props.value / this.props.max) * 100;\n const seekerStyle = {\n backgroundImage: `-webkit-gradient(linear, left top, right top, color-stop(${progress}%, rgba(15, 204, 206, 0.4)), color-stop(${progress}%, #DAE1E7))`,\n };\n const seekerContainerStyle = {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n width: '100%',\n marginRight: '5px',\n marginLeft: '5px',\n position: 'relative',\n } as React.CSSProperties;\n\n const minLabelStyle = {\n position: 'absolute',\n left: 0,\n marginTop: '8px',\n width: '20px',\n display: 'block',\n border: '0px',\n backgroundColor: this.props.darkTheme ? '#505050' : 'rgb(218, 225, 231)',\n color: this.props.darkTheme ? '#B9B9B9' : '#555',\n padding: '2px',\n textAlign: 'center',\n borderRadius: '3px',\n fontSize: '8px',\n fontWeight: 'bold',\n } as React.CSSProperties;\n const maxLabelStyle = {\n position: 'absolute',\n right: 0,\n marginTop: '8px',\n width: '20px',\n display: 'block',\n border: '0px',\n backgroundColor: this.props.darkTheme ? '#505050' : 'rgb(218, 225, 231)',\n color: this.props.darkTheme ? '#B9B9B9' : '#555',\n padding: '2px',\n textAlign: 'center',\n borderRadius: '3px',\n fontSize: '8px',\n fontWeight: 'bold',\n } as React.CSSProperties;\n return (\n
\n \n {this.props.showLabels && (\n
\n
{this.props.min}
\n
{this.props.max}
\n
\n )}\n
\n );\n }\n}\n","/* eslint-disable jsx-a11y/no-static-element-interactions */\n/* eslint-disable jsx-a11y/click-events-have-key-events */\nimport './Styles.css';\n\nimport * as React from 'react';\n\nimport { ColorPicker } from './ColorPicker';\nimport { PlayerEvent, PlayerState } from './Player';\nimport { Popover } from './Popover';\nimport { Seeker } from './Seeker';\n\nconst ControlButtonStyle = {\n display: 'inline-flex',\n cursor: 'pointer',\n};\n\ninterface IControlProps {\n instance?: any;\n loop?: boolean;\n pause?: () => void;\n play?: () => void;\n playerState?: PlayerState;\n seeker?: number;\n setLoop?: (value: boolean) => void;\n setSeeker?: (seek: number, play: boolean) => void;\n stop?: () => void;\n visible?: boolean;\n buttons?: string[];\n debug?: boolean;\n toggleDebug?: () => void;\n showLabels?: boolean;\n darkTheme?: boolean;\n transparentTheme?: boolean;\n colorChangedEvent?: () => void;\n snapshot?: () => void;\n}\n\nexport class Controls extends React.Component {\n public constructor(props: IControlProps) {\n super(props);\n\n this.state = {\n activeFrame: 0,\n mouseDown: false,\n };\n }\n\n public render() {\n const { instance, playerState, seeker, setLoop, setSeeker, play, pause, stop, visible, buttons } = this.props;\n\n // Render nothing if lottie instance is not available\n if (!instance) {\n return null;\n }\n\n // Hide controls if not set to visible\n if (!visible) {\n return null;\n }\n\n const showPlayButton = !buttons || buttons.includes('play');\n const showStopButton = !buttons || buttons.includes('stop');\n const showRepeatButton = !buttons || buttons.includes('repeat');\n const showFrameInput = !buttons || buttons.includes('frame');\n const showBackgroundChange = !buttons || buttons.includes('background');\n const showSnapshot = !buttons || buttons.includes('snapshot');\n const ICON_SIZE = { width: 14, height: 14, viewBox: '0 0 24 24' };\n const currentFrame = Math.round(instance.currentFrame);\n\n return (\n \n {showPlayButton && (\n {\n if (playerState === PlayerState.Playing) {\n if (typeof pause === 'function') {\n pause();\n }\n } else {\n if (typeof play === 'function') {\n play();\n }\n }\n }}\n onKeyDown={() => {\n if (playerState === PlayerState.Playing) {\n if (typeof pause === 'function') {\n pause();\n }\n } else {\n if (typeof play === 'function') {\n play();\n }\n }\n }}\n className=\"lf-player-btn\"\n style={ControlButtonStyle}\n >\n {playerState === PlayerState.Playing ? (\n \n \n \n \n ) : (\n \n \n \n )}\n \n )}\n {showStopButton && (\n stop && stop()}\n onKeyDown={() => stop && stop()}\n className={playerState === PlayerState.Stopped ? 'lf-player-btn active' : 'lf-player-btn'}\n style={ControlButtonStyle}\n >\n \n \n \n \n )}\n {\n if (setSeeker) {\n this.setState({ activeFrame: newFrame }, () => {\n setSeeker(newFrame, false);\n });\n }\n }}\n onChangeEnd={(newFrame: any) => {\n if (setSeeker) {\n this.setState({ activeFrame: newFrame }, () => {\n setSeeker(newFrame, false);\n });\n }\n }}\n showLabels={this.props.showLabels}\n darkTheme={this.props.darkTheme}\n />\n {showFrameInput && (\n
\n \n
\n )}\n {showRepeatButton && (\n {\n if (instance && setLoop) {\n setLoop(!instance.loop);\n }\n }}\n onKeyDown={() => {\n if (instance && setLoop) {\n setLoop(!instance.loop);\n }\n }}\n className={instance.loop ? 'lf-player-btn active' : 'lf-player-btn'}\n style={ControlButtonStyle}\n >\n \n \n \n \n \n )}\n {showBackgroundChange && (\n \n \n \n }\n >\n
\n \n
\n \n )}\n {showSnapshot && (\n \n \n \n \n \n \n }\n >\n {\n if (setSeeker) setSeeker(currentFrame + (e.deltaY > 0 ? -1 : 1), false);\n }}\n >\n
Frame {currentFrame}
\n
\n Download SVG\n
\n
\n Download PNG\n
\n Scroll with mousewheel to find exact frame\n \n \n )}\n \n );\n }\n}\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;ac?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eHj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + \"3d699ea0\" + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"react_posscreen_at:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t};\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t179: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkreact_posscreen_at\"] = self[\"webpackChunkreact_posscreen_at\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Actions represent the type of change to a location value.\n */\nexport enum Action {\n /**\n * A POP indicates a change to an arbitrary index in the history stack, such\n * as a back or forward navigation. It does not describe the direction of the\n * navigation, only that the current index changed.\n *\n * Note: This is the default action for newly created history objects.\n */\n Pop = \"POP\",\n\n /**\n * A PUSH indicates a new entry being added to the history stack, such as when\n * a link is clicked and a new page loads. When this happens, all subsequent\n * entries in the stack are lost.\n */\n Push = \"PUSH\",\n\n /**\n * A REPLACE indicates the entry at the current index in the history stack\n * being replaced by a new one.\n */\n Replace = \"REPLACE\",\n}\n\n/**\n * The pathname, search, and hash values of a URL.\n */\nexport interface Path {\n /**\n * A URL pathname, beginning with a /.\n */\n pathname: string;\n\n /**\n * A URL search string, beginning with a ?.\n */\n search: string;\n\n /**\n * A URL fragment identifier, beginning with a #.\n */\n hash: string;\n}\n\n/**\n * An entry in a history stack. A location contains information about the\n * URL path, as well as possibly some arbitrary state and a key.\n */\nexport interface Location extends Path {\n /**\n * A value of arbitrary data associated with this location.\n */\n state: any;\n\n /**\n * A unique string associated with this location. May be used to safely store\n * and retrieve data in some other storage API, like `localStorage`.\n *\n * Note: This value is always \"default\" on the initial location.\n */\n key: string;\n}\n\n/**\n * A change to the current location.\n */\nexport interface Update {\n /**\n * The action that triggered the change.\n */\n action: Action;\n\n /**\n * The new location.\n */\n location: Location;\n}\n\n/**\n * A function that receives notifications about location changes.\n */\nexport interface Listener {\n (update: Update): void;\n}\n\n/**\n * Describes a location that is the destination of some navigation, either via\n * `history.push` or `history.replace`. May be either a URL or the pieces of a\n * URL path.\n */\nexport type To = string | Partial;\n\n/**\n * A history is an interface to the navigation stack. The history serves as the\n * source of truth for the current location, as well as provides a set of\n * methods that may be used to change it.\n *\n * It is similar to the DOM's `window.history` object, but with a smaller, more\n * focused API.\n */\nexport interface History {\n /**\n * The last action that modified the current location. This will always be\n * Action.Pop when a history instance is first created. This value is mutable.\n */\n readonly action: Action;\n\n /**\n * The current location. This value is mutable.\n */\n readonly location: Location;\n\n /**\n * Returns a valid href for the given `to` value that may be used as\n * the value of an attribute.\n *\n * @param to - The destination URL\n */\n createHref(to: To): string;\n\n /**\n * Encode a location the same way window.history would do (no-op for memory\n * history) so we ensure our PUSH/REPLAC e navigations for data routers\n * behave the same as POP\n *\n * @param location The incoming location from router.navigate()\n */\n encodeLocation(location: Location): Location;\n\n /**\n * Pushes a new location onto the history stack, increasing its length by one.\n * If there were any entries in the stack after the current one, they are\n * lost.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n push(to: To, state?: any): void;\n\n /**\n * Replaces the current location in the history stack with a new one. The\n * location that was replaced will no longer be available.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n replace(to: To, state?: any): void;\n\n /**\n * Navigates `n` entries backward/forward in the history stack relative to the\n * current index. For example, a \"back\" navigation would use go(-1).\n *\n * @param delta - The delta in the stack index\n */\n go(delta: number): void;\n\n /**\n * Sets up a listener that will be called whenever the current location\n * changes.\n *\n * @param listener - A function that will be called when the location changes\n * @returns unlisten - A function that may be used to stop listening\n */\n listen(listener: Listener): () => void;\n}\n\ntype HistoryState = {\n usr: any;\n key?: string;\n};\n\nconst PopStateEventType = \"popstate\";\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Memory History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A user-supplied object that describes a location. Used when providing\n * entries to `createMemoryHistory` via its `initialEntries` option.\n */\nexport type InitialEntry = string | Partial;\n\nexport type MemoryHistoryOptions = {\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n v5Compat?: boolean;\n};\n\n/**\n * A memory history stores locations in memory. This is useful in stateful\n * environments where there is no web browser, such as node tests or React\n * Native.\n */\nexport interface MemoryHistory extends History {\n /**\n * The current index in the history stack.\n */\n readonly index: number;\n}\n\n/**\n * Memory history stores the current location in memory. It is designed for use\n * in stateful non-browser environments like tests and React Native.\n */\nexport function createMemoryHistory(\n options: MemoryHistoryOptions = {}\n): MemoryHistory {\n let { initialEntries = [\"/\"], initialIndex, v5Compat = false } = options;\n let entries: Location[]; // Declare so we can access from createMemoryLocation\n entries = initialEntries.map((entry, index) =>\n createMemoryLocation(\n entry,\n typeof entry === \"string\" ? null : entry.state,\n index === 0 ? \"default\" : undefined\n )\n );\n let index = clampIndex(\n initialIndex == null ? entries.length - 1 : initialIndex\n );\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n function clampIndex(n: number): number {\n return Math.min(Math.max(n, 0), entries.length - 1);\n }\n function getCurrentLocation(): Location {\n return entries[index];\n }\n function createMemoryLocation(\n to: To,\n state: any = null,\n key?: string\n ): Location {\n let location = createLocation(\n entries ? getCurrentLocation().pathname : \"/\",\n to,\n state,\n key\n );\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in memory history: ${JSON.stringify(\n to\n )}`\n );\n return location;\n }\n\n let history: MemoryHistory = {\n get index() {\n return index;\n },\n get action() {\n return action;\n },\n get location() {\n return getCurrentLocation();\n },\n createHref(to) {\n return typeof to === \"string\" ? to : createPath(to);\n },\n encodeLocation(location) {\n return location;\n },\n push(to, state) {\n action = Action.Push;\n let nextLocation = createMemoryLocation(to, state);\n index += 1;\n entries.splice(index, entries.length, nextLocation);\n if (v5Compat && listener) {\n listener({ action, location: nextLocation });\n }\n },\n replace(to, state) {\n action = Action.Replace;\n let nextLocation = createMemoryLocation(to, state);\n entries[index] = nextLocation;\n if (v5Compat && listener) {\n listener({ action, location: nextLocation });\n }\n },\n go(delta) {\n action = Action.Pop;\n index = clampIndex(index + delta);\n if (listener) {\n listener({ action, location: getCurrentLocation() });\n }\n },\n listen(fn: Listener) {\n listener = fn;\n return () => {\n listener = null;\n };\n },\n };\n\n return history;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Browser History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A browser history stores the current location in regular URLs in a web\n * browser environment. This is the standard for most web apps and provides the\n * cleanest URLs the browser's address bar.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#browserhistory\n */\nexport interface BrowserHistory extends UrlHistory {}\n\nexport type BrowserHistoryOptions = UrlHistoryOptions;\n\n/**\n * Browser history stores the location in regular URLs. This is the standard for\n * most web apps, but it requires some configuration on the server to ensure you\n * serve the same app at multiple URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory\n */\nexport function createBrowserHistory(\n options: BrowserHistoryOptions = {}\n): BrowserHistory {\n function createBrowserLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let { pathname, search, hash } = window.location;\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createBrowserHref(window: Window, to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n return getUrlBasedHistory(\n createBrowserLocation,\n createBrowserHref,\n null,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Hash History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A hash history stores the current location in the fragment identifier portion\n * of the URL in a web browser environment.\n *\n * This is ideal for apps that do not control the server for some reason\n * (because the fragment identifier is never sent to the server), including some\n * shared hosting environments that do not provide fine-grained controls over\n * which pages are served at which URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#hashhistory\n */\nexport interface HashHistory extends UrlHistory {}\n\nexport type HashHistoryOptions = UrlHistoryOptions;\n\n/**\n * Hash history stores the location in window.location.hash. This makes it ideal\n * for situations where you don't want to send the location to the server for\n * some reason, either because you do cannot configure it or the URL space is\n * reserved for something else.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory\n */\nexport function createHashHistory(\n options: HashHistoryOptions = {}\n): HashHistory {\n function createHashLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n } = parsePath(window.location.hash.substr(1));\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createHashHref(window: Window, to: To) {\n let base = window.document.querySelector(\"base\");\n let href = \"\";\n\n if (base && base.getAttribute(\"href\")) {\n let url = window.location.href;\n let hashIndex = url.indexOf(\"#\");\n href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n }\n\n return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n }\n\n function validateHashLocation(location: Location, to: To) {\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in hash history.push(${JSON.stringify(\n to\n )})`\n );\n }\n\n return getUrlBasedHistory(\n createHashLocation,\n createHashHref,\n validateHashLocation,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region UTILS\n////////////////////////////////////////////////////////////////////////////////\n\nfunction warning(cond: any, message: string) {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging history!\n //\n // This error is thrown as a convenience so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\nfunction createKey() {\n return Math.random().toString(36).substr(2, 8);\n}\n\n/**\n * For browser-based histories, we combine the state and key into an object\n */\nfunction getHistoryState(location: Location): HistoryState {\n return {\n usr: location.state,\n key: location.key,\n };\n}\n\n/**\n * Creates a Location object with a unique key from the given Path\n */\nexport function createLocation(\n current: string | Location,\n to: To,\n state: any = null,\n key?: string\n): Readonly {\n let location: Readonly = {\n pathname: typeof current === \"string\" ? current : current.pathname,\n search: \"\",\n hash: \"\",\n ...(typeof to === \"string\" ? parsePath(to) : to),\n state,\n // TODO: This could be cleaned up. push/replace should probably just take\n // full Locations now and avoid the need to run through this flow at all\n // But that's a pretty big refactor to the current test suite so going to\n // keep as is for the time being and just let any incoming keys take precedence\n key: (to && (to as Location).key) || key || createKey(),\n };\n return location;\n}\n\n/**\n * Creates a string URL path from the given pathname, search, and hash components.\n */\nexport function createPath({\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n}: Partial) {\n if (search && search !== \"?\")\n pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n if (hash && hash !== \"#\")\n pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n return pathname;\n}\n\n/**\n * Parses a string URL path into its separate pathname, search, and hash components.\n */\nexport function parsePath(path: string): Partial {\n let parsedPath: Partial = {};\n\n if (path) {\n let hashIndex = path.indexOf(\"#\");\n if (hashIndex >= 0) {\n parsedPath.hash = path.substr(hashIndex);\n path = path.substr(0, hashIndex);\n }\n\n let searchIndex = path.indexOf(\"?\");\n if (searchIndex >= 0) {\n parsedPath.search = path.substr(searchIndex);\n path = path.substr(0, searchIndex);\n }\n\n if (path) {\n parsedPath.pathname = path;\n }\n }\n\n return parsedPath;\n}\n\nexport function createURL(location: Location | string): URL {\n // window.location.origin is \"null\" (the literal string value) in Firefox\n // under certain conditions, notably when serving from a local HTML file\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=878297\n let base =\n typeof window !== \"undefined\" &&\n typeof window.location !== \"undefined\" &&\n window.location.origin !== \"null\"\n ? window.location.origin\n : \"unknown://unknown\";\n let href = typeof location === \"string\" ? location : createPath(location);\n return new URL(href, base);\n}\n\nexport interface UrlHistory extends History {}\n\nexport type UrlHistoryOptions = {\n window?: Window;\n v5Compat?: boolean;\n};\n\nfunction getUrlBasedHistory(\n getLocation: (window: Window, globalHistory: Window[\"history\"]) => Location,\n createHref: (window: Window, to: To) => string,\n validateLocation: ((location: Location, to: To) => void) | null,\n options: UrlHistoryOptions = {}\n): UrlHistory {\n let { window = document.defaultView!, v5Compat = false } = options;\n let globalHistory = window.history;\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n function handlePop() {\n action = Action.Pop;\n if (listener) {\n listener({ action, location: history.location });\n }\n }\n\n function push(to: To, state?: any) {\n action = Action.Push;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n let historyState = getHistoryState(location);\n let url = history.createHref(location);\n\n // try...catch because iOS limits us to 100 pushState calls :/\n try {\n globalHistory.pushState(historyState, \"\", url);\n } catch (error) {\n // They are going to lose state here, but there is no real\n // way to warn them about it since the page will refresh...\n window.location.assign(url);\n }\n\n if (v5Compat && listener) {\n listener({ action, location: history.location });\n }\n }\n\n function replace(to: To, state?: any) {\n action = Action.Replace;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n let historyState = getHistoryState(location);\n let url = history.createHref(location);\n globalHistory.replaceState(historyState, \"\", url);\n\n if (v5Compat && listener) {\n listener({ action, location: history.location });\n }\n }\n\n let history: History = {\n get action() {\n return action;\n },\n get location() {\n return getLocation(window, globalHistory);\n },\n listen(fn: Listener) {\n if (listener) {\n throw new Error(\"A history only accepts one active listener\");\n }\n window.addEventListener(PopStateEventType, handlePop);\n listener = fn;\n\n return () => {\n window.removeEventListener(PopStateEventType, handlePop);\n listener = null;\n };\n },\n createHref(to) {\n return createHref(window, to);\n },\n encodeLocation(location) {\n // Encode a Location the same way window.location would\n let url = createURL(createPath(location));\n return {\n ...location,\n pathname: url.pathname,\n search: url.search,\n hash: url.hash,\n };\n },\n push,\n replace,\n go(n) {\n return globalHistory.go(n);\n },\n };\n\n return history;\n}\n\n//#endregion\n","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _iterableToArrayLimit(arr, i) {\n var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (null != _i) {\n var _s,\n _e,\n _x,\n _r,\n _arr = [],\n _n = !0,\n _d = !1;\n try {\n if (_x = (_i = _i.call(arr)).next, 0 === i) {\n if (Object(_i) !== _i) return;\n _n = !1;\n } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0) {\n ;\n }\n } catch (err) {\n _d = !0, _e = err;\n } finally {\n try {\n if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return;\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return assertThisInitialized(self);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nexport default function _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return possibleConstructorReturn(this, result);\n };\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nexport default function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct.bind();\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n return _construct.apply(null, arguments);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeFunction from \"./isNativeFunction.js\";\nimport construct from \"./construct.js\";\nexport default function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n return _wrapNativeSuper(Class);\n}","export default function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}","import type { Location, Path, To } from \"./history\";\nimport { parsePath } from \"./history\";\n\n/**\n * Map of routeId -> data returned from a loader/action/error\n */\nexport interface RouteData {\n [routeId: string]: any;\n}\n\nexport enum ResultType {\n data = \"data\",\n deferred = \"deferred\",\n redirect = \"redirect\",\n error = \"error\",\n}\n\n/**\n * Successful result from a loader or action\n */\nexport interface SuccessResult {\n type: ResultType.data;\n data: any;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Successful defer() result from a loader or action\n */\nexport interface DeferredResult {\n type: ResultType.deferred;\n deferredData: DeferredData;\n}\n\n/**\n * Redirect result from a loader or action\n */\nexport interface RedirectResult {\n type: ResultType.redirect;\n status: number;\n location: string;\n revalidate: boolean;\n}\n\n/**\n * Unsuccessful result from a loader or action\n */\nexport interface ErrorResult {\n type: ResultType.error;\n error: any;\n headers?: Headers;\n}\n\n/**\n * Result from a loader or action - potentially successful or unsuccessful\n */\nexport type DataResult =\n | SuccessResult\n | DeferredResult\n | RedirectResult\n | ErrorResult;\n\nexport type FormMethod = \"get\" | \"post\" | \"put\" | \"patch\" | \"delete\";\nexport type FormEncType =\n | \"application/x-www-form-urlencoded\"\n | \"multipart/form-data\";\n\n/**\n * @private\n * Internal interface to pass around for action submissions, not intended for\n * external consumption\n */\nexport interface Submission {\n formMethod: Exclude;\n formAction: string;\n formEncType: FormEncType;\n formData: FormData;\n}\n\n/**\n * @private\n * Arguments passed to route loader/action functions. Same for now but we keep\n * this as a private implementation detail in case they diverge in the future.\n */\ninterface DataFunctionArgs {\n request: Request;\n params: Params;\n}\n\n/**\n * Arguments passed to loader functions\n */\nexport interface LoaderFunctionArgs extends DataFunctionArgs {}\n\n/**\n * Arguments passed to action functions\n */\nexport interface ActionFunctionArgs extends DataFunctionArgs {}\n\n/**\n * Route loader function signature\n */\nexport interface LoaderFunction {\n (args: LoaderFunctionArgs): Promise | Response | Promise | any;\n}\n\n/**\n * Route action function signature\n */\nexport interface ActionFunction {\n (args: ActionFunctionArgs): Promise | Response | Promise | any;\n}\n\n/**\n * Route shouldRevalidate function signature. This runs after any submission\n * (navigation or fetcher), so we flatten the navigation/fetcher submission\n * onto the arguments. It shouldn't matter whether it came from a navigation\n * or a fetcher, what really matters is the URLs and the formData since loaders\n * have to re-run based on the data models that were potentially mutated.\n */\nexport interface ShouldRevalidateFunction {\n (args: {\n currentUrl: URL;\n currentParams: AgnosticDataRouteMatch[\"params\"];\n nextUrl: URL;\n nextParams: AgnosticDataRouteMatch[\"params\"];\n formMethod?: Submission[\"formMethod\"];\n formAction?: Submission[\"formAction\"];\n formEncType?: Submission[\"formEncType\"];\n formData?: Submission[\"formData\"];\n actionResult?: DataResult;\n defaultShouldRevalidate: boolean;\n }): boolean;\n}\n\n/**\n * Base RouteObject with common props shared by all types of routes\n */\ntype AgnosticBaseRouteObject = {\n caseSensitive?: boolean;\n path?: string;\n id?: string;\n loader?: LoaderFunction;\n action?: ActionFunction;\n hasErrorBoundary?: boolean;\n shouldRevalidate?: ShouldRevalidateFunction;\n handle?: any;\n};\n\n/**\n * Index routes must not have children\n */\nexport type AgnosticIndexRouteObject = AgnosticBaseRouteObject & {\n children?: undefined;\n index: true;\n};\n\n/**\n * Non-index routes may have children, but cannot have index\n */\nexport type AgnosticNonIndexRouteObject = AgnosticBaseRouteObject & {\n children?: AgnosticRouteObject[];\n index?: false;\n};\n\n/**\n * A route object represents a logical route, with (optionally) its child\n * routes organized in a tree-like structure.\n */\nexport type AgnosticRouteObject =\n | AgnosticIndexRouteObject\n | AgnosticNonIndexRouteObject;\n\nexport type AgnosticDataIndexRouteObject = AgnosticIndexRouteObject & {\n id: string;\n};\n\nexport type AgnosticDataNonIndexRouteObject = AgnosticNonIndexRouteObject & {\n children?: AgnosticDataRouteObject[];\n id: string;\n};\n\n/**\n * A data route object, which is just a RouteObject with a required unique ID\n */\nexport type AgnosticDataRouteObject =\n | AgnosticDataIndexRouteObject\n | AgnosticDataNonIndexRouteObject;\n\n// Recursive helper for finding path parameters in the absence of wildcards\ntype _PathParam =\n // split path into individual path segments\n Path extends `${infer L}/${infer R}`\n ? _PathParam | _PathParam\n : // find params after `:`\n Path extends `${string}:${infer Param}`\n ? Param\n : // otherwise, there aren't any params present\n never;\n\n/**\n * Examples:\n * \"/a/b/*\" -> \"*\"\n * \":a\" -> \"a\"\n * \"/a/:b\" -> \"b\"\n * \"/a/blahblahblah:b\" -> \"b\"\n * \"/:a/:b\" -> \"a\" | \"b\"\n * \"/:a/b/:c/*\" -> \"a\" | \"c\" | \"*\"\n */\ntype PathParam =\n // check if path is just a wildcard\n Path extends \"*\"\n ? \"*\"\n : // look for wildcard at the end of the path\n Path extends `${infer Rest}/*`\n ? \"*\" | _PathParam\n : // look for params in the absence of wildcards\n _PathParam;\n\n// Attempt to parse the given string segment. If it fails, then just return the\n// plain string type as a default fallback. Otherwise return the union of the\n// parsed string literals that were referenced as dynamic segments in the route.\nexport type ParamParseKey =\n // if could not find path params, fallback to `string`\n [PathParam] extends [never] ? string : PathParam;\n\n/**\n * The parameters that were parsed from the URL path.\n */\nexport type Params = {\n readonly [key in Key]: string | undefined;\n};\n\n/**\n * A RouteMatch contains info about how a route matched a URL.\n */\nexport interface AgnosticRouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The route object that was used to match.\n */\n route: RouteObjectType;\n}\n\nexport interface AgnosticDataRouteMatch\n extends AgnosticRouteMatch {}\n\nfunction isIndexRoute(\n route: AgnosticRouteObject\n): route is AgnosticIndexRouteObject {\n return route.index === true;\n}\n\n// Walk the route tree generating unique IDs where necessary so we are working\n// solely with AgnosticDataRouteObject's within the Router\nexport function convertRoutesToDataRoutes(\n routes: AgnosticRouteObject[],\n parentPath: number[] = [],\n allIds: Set = new Set()\n): AgnosticDataRouteObject[] {\n return routes.map((route, index) => {\n let treePath = [...parentPath, index];\n let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n invariant(\n route.index !== true || !route.children,\n `Cannot specify children on an index route`\n );\n invariant(\n !allIds.has(id),\n `Found a route id collision on id \"${id}\". Route ` +\n \"id's must be globally unique within Data Router usages\"\n );\n allIds.add(id);\n\n if (isIndexRoute(route)) {\n let indexRoute: AgnosticDataIndexRouteObject = { ...route, id };\n return indexRoute;\n } else {\n let pathOrLayoutRoute: AgnosticDataNonIndexRouteObject = {\n ...route,\n id,\n children: route.children\n ? convertRoutesToDataRoutes(route.children, treePath, allIds)\n : undefined,\n };\n return pathOrLayoutRoute;\n }\n });\n}\n\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/docs/en/v6/utils/match-routes\n */\nexport function matchRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n locationArg: Partial | string,\n basename = \"/\"\n): AgnosticRouteMatch[] | null {\n let location =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n let pathname = stripBasename(location.pathname || \"/\", basename);\n\n if (pathname == null) {\n return null;\n }\n\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n matches = matchRouteBranch(\n branches[i],\n // Incoming pathnames are generally encoded from either window.location\n // or from router.navigate, but we want to match against the unencoded\n // paths in the route definitions. Memory router locations won't be\n // encoded here but there also shouldn't be anything to decode so this\n // should be a safe operation. This avoids needing matchRoutes to be\n // history-aware.\n safelyDecodeURI(pathname)\n );\n }\n\n return matches;\n}\n\ninterface RouteMeta<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n relativePath: string;\n caseSensitive: boolean;\n childrenIndex: number;\n route: RouteObjectType;\n}\n\ninterface RouteBranch<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n path: string;\n score: number;\n routesMeta: RouteMeta[];\n}\n\nfunction flattenRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n branches: RouteBranch[] = [],\n parentsMeta: RouteMeta[] = [],\n parentPath = \"\"\n): RouteBranch[] {\n routes.forEach((route, index) => {\n let meta: RouteMeta = {\n relativePath: route.path || \"\",\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route,\n };\n\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(\n meta.relativePath.startsWith(parentPath),\n `Absolute route path \"${meta.relativePath}\" nested under path ` +\n `\"${parentPath}\" is not valid. An absolute child route path ` +\n `must start with the combined path of all its parent routes.`\n );\n\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n\n // Add the children before adding this route to the array so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n // Our types know better, but runtime JS may not!\n // @ts-expect-error\n route.index !== true,\n `Index routes must not have child routes. Please remove ` +\n `all child routes from route path \"${path}\".`\n );\n\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n\n branches.push({ path, score: computeScore(path, route.index), routesMeta });\n });\n\n return branches;\n}\n\nfunction rankRouteBranches(branches: RouteBranch[]): void {\n branches.sort((a, b) =>\n a.score !== b.score\n ? b.score - a.score // Higher score first\n : compareIndexes(\n a.routesMeta.map((meta) => meta.childrenIndex),\n b.routesMeta.map((meta) => meta.childrenIndex)\n )\n );\n}\n\nconst paramRe = /^:\\w+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = (s: string) => s === \"*\";\n\nfunction computeScore(path: string, index: boolean | undefined): number {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n\n if (index) {\n initialScore += indexRouteValue;\n }\n\n return segments\n .filter((s) => !isSplat(s))\n .reduce(\n (score, segment) =>\n score +\n (paramRe.test(segment)\n ? dynamicSegmentValue\n : segment === \"\"\n ? emptySegmentValue\n : staticSegmentValue),\n initialScore\n );\n}\n\nfunction compareIndexes(a: number[], b: number[]): number {\n let siblings =\n a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n\n return siblings\n ? // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1]\n : // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\n\nfunction matchRouteBranch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n branch: RouteBranch,\n pathname: string\n): AgnosticRouteMatch[] | null {\n let { routesMeta } = branch;\n\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches: AgnosticRouteMatch[] = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname =\n matchedPathname === \"/\"\n ? pathname\n : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath(\n { path: meta.relativePath, caseSensitive: meta.caseSensitive, end },\n remainingPathname\n );\n\n if (!match) return null;\n\n Object.assign(matchedParams, match.params);\n\n let route = meta.route;\n\n matches.push({\n // TODO: Can this as be avoided?\n params: matchedParams as Params,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(\n joinPaths([matchedPathname, match.pathnameBase])\n ),\n route,\n });\n\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n\n return matches;\n}\n\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/docs/en/v6/utils/generate-path\n */\nexport function generatePath(\n path: Path,\n params: {\n [key in PathParam]: string;\n } = {} as any\n): string {\n return path\n .replace(/:(\\w+)/g, (_, key: PathParam) => {\n invariant(params[key] != null, `Missing \":${key}\" param`);\n return params[key]!;\n })\n .replace(/(\\/?)\\*/, (_, prefix, __, str) => {\n const star = \"*\" as PathParam;\n\n if (params[star] == null) {\n // If no splat was provided, trim the trailing slash _unless_ it's\n // the entire path\n return str === \"/*\" ? \"/\" : \"\";\n }\n\n // Apply the splat\n return `${prefix}${params[star]}`;\n });\n}\n\n/**\n * A PathPattern is used to match on some portion of a URL pathname.\n */\nexport interface PathPattern {\n /**\n * A string to match against a URL pathname. May contain `:id`-style segments\n * to indicate placeholders for dynamic parameters. May also end with `/*` to\n * indicate matching the rest of the URL pathname.\n */\n path: Path;\n /**\n * Should be `true` if the static portions of the `path` should be matched in\n * the same case.\n */\n caseSensitive?: boolean;\n /**\n * Should be `true` if this pattern should match the entire URL pathname.\n */\n end?: boolean;\n}\n\n/**\n * A PathMatch contains info about how a PathPattern matched on a URL pathname.\n */\nexport interface PathMatch {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The pattern that was used to match.\n */\n pattern: PathPattern;\n}\n\ntype Mutable = {\n -readonly [P in keyof T]: T[P];\n};\n\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/docs/en/v6/utils/match-path\n */\nexport function matchPath<\n ParamKey extends ParamParseKey,\n Path extends string\n>(\n pattern: PathPattern | Path,\n pathname: string\n): PathMatch | null {\n if (typeof pattern === \"string\") {\n pattern = { path: pattern, caseSensitive: false, end: true };\n }\n\n let [matcher, paramNames] = compilePath(\n pattern.path,\n pattern.caseSensitive,\n pattern.end\n );\n\n let match = pathname.match(matcher);\n if (!match) return null;\n\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params: Params = paramNames.reduce>(\n (memo, paramName, index) => {\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname\n .slice(0, matchedPathname.length - splatValue.length)\n .replace(/(.)\\/+$/, \"$1\");\n }\n\n memo[paramName] = safelyDecodeURIComponent(\n captureGroups[index] || \"\",\n paramName\n );\n return memo;\n },\n {}\n );\n\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern,\n };\n}\n\nfunction compilePath(\n path: string,\n caseSensitive = false,\n end = true\n): [RegExp, string[]] {\n warning(\n path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n\n let paramNames: string[] = [];\n let regexpSource =\n \"^\" +\n path\n .replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^$?{}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(/:(\\w+)/g, (_: string, paramName: string) => {\n paramNames.push(paramName);\n return \"([^\\\\/]+)\";\n });\n\n if (path.endsWith(\"*\")) {\n paramNames.push(\"*\");\n regexpSource +=\n path === \"*\" || path === \"/*\"\n ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else if (end) {\n // When matching to the end, ignore trailing slashes\n regexpSource += \"\\\\/*$\";\n } else if (path !== \"\" && path !== \"/\") {\n // If our path is non-empty and contains anything beyond an initial slash,\n // then we have _some_ form of path in our regex so we should expect to\n // match only if we find the end of this path segment. Look for an optional\n // non-captured trailing slash (to match a portion of the URL) or the end\n // of the path (if we've matched to the end). We used to do this with a\n // word boundary but that gives false positives on routes like\n // /user-preferences since `-` counts as a word boundary.\n regexpSource += \"(?:(?=\\\\/|$))\";\n } else {\n // Nothing to match for \"\" or \"/\"\n }\n\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n\n return [matcher, paramNames];\n}\n\nfunction safelyDecodeURI(value: string) {\n try {\n return decodeURI(value);\n } catch (error) {\n warning(\n false,\n `The URL path \"${value}\" could not be decoded because it is is a ` +\n `malformed URL segment. This is probably due to a bad percent ` +\n `encoding (${error}).`\n );\n\n return value;\n }\n}\n\nfunction safelyDecodeURIComponent(value: string, paramName: string) {\n try {\n return decodeURIComponent(value);\n } catch (error) {\n warning(\n false,\n `The value for the URL param \"${paramName}\" will not be decoded because` +\n ` the string \"${value}\" is a malformed URL segment. This is probably` +\n ` due to a bad percent encoding (${error}).`\n );\n\n return value;\n }\n}\n\n/**\n * @private\n */\nexport function stripBasename(\n pathname: string,\n basename: string\n): string | null {\n if (basename === \"/\") return pathname;\n\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n\n // We want to leave trailing slash behavior in the user's control, so if they\n // specify a basename with a trailing slash, we should support it\n let startIndex = basename.endsWith(\"/\")\n ? basename.length - 1\n : basename.length;\n let nextChar = pathname.charAt(startIndex);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n\n return pathname.slice(startIndex) || \"/\";\n}\n\n/**\n * @private\n */\nexport function invariant(value: boolean, message?: string): asserts value;\nexport function invariant(\n value: T | null | undefined,\n message?: string\n): asserts value is T;\nexport function invariant(value: any, message?: string) {\n if (value === false || value === null || typeof value === \"undefined\") {\n throw new Error(message);\n }\n}\n\n/**\n * @private\n */\nexport function warning(cond: any, message: string): void {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging React Router!\n //\n // This error is thrown as a convenience so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/docs/en/v6/utils/resolve-path\n */\nexport function resolvePath(to: To, fromPathname = \"/\"): Path {\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\",\n } = typeof to === \"string\" ? parsePath(to) : to;\n\n let pathname = toPathname\n ? toPathname.startsWith(\"/\")\n ? toPathname\n : resolvePathname(toPathname, fromPathname)\n : fromPathname;\n\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash),\n };\n}\n\nfunction resolvePathname(relativePath: string, fromPathname: string): string {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n\n relativeSegments.forEach((segment) => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\n\nfunction getInvalidPathError(\n char: string,\n field: string,\n dest: string,\n path: Partial\n) {\n return (\n `Cannot include a '${char}' character in a manually specified ` +\n `\\`to.${field}\\` field [${JSON.stringify(\n path\n )}]. Please separate it out to the ` +\n `\\`to.${dest}\\` field. Alternatively you may provide the full path as ` +\n `a string in and the router will parse it for you.`\n );\n}\n\n/**\n * @private\n *\n * When processing relative navigation we want to ignore ancestor routes that\n * do not contribute to the path, such that index/pathless layout routes don't\n * interfere.\n *\n * For example, when moving a route element into an index route and/or a\n * pathless layout route, relative link behavior contained within should stay\n * the same. Both of the following examples should link back to the root:\n *\n * \n * \n * \n *\n * \n * \n * }> // <-- Does not contribute\n * // <-- Does not contribute\n * \n * \n */\nexport function getPathContributingMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[]) {\n return matches.filter(\n (match, index) =>\n index === 0 || (match.route.path && match.route.path.length > 0)\n );\n}\n\n/**\n * @private\n */\nexport function resolveTo(\n toArg: To,\n routePathnames: string[],\n locationPathname: string,\n isPathRelative = false\n): Path {\n let to: Partial;\n if (typeof toArg === \"string\") {\n to = parsePath(toArg);\n } else {\n to = { ...toArg };\n\n invariant(\n !to.pathname || !to.pathname.includes(\"?\"),\n getInvalidPathError(\"?\", \"pathname\", \"search\", to)\n );\n invariant(\n !to.pathname || !to.pathname.includes(\"#\"),\n getInvalidPathError(\"#\", \"pathname\", \"hash\", to)\n );\n invariant(\n !to.search || !to.search.includes(\"#\"),\n getInvalidPathError(\"#\", \"search\", \"hash\", to)\n );\n }\n\n let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n let toPathname = isEmptyPath ? \"/\" : to.pathname;\n\n let from: string;\n\n // Routing is relative to the current pathname if explicitly requested.\n //\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n if (isPathRelative || toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n\n if (toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n\n // Each leading .. segment means \"go up one route\" instead of \"go up one\n // URL segment\". This is a key difference from how works and a\n // major reason we call this a \"to\" value instead of a \"href\".\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n\n to.pathname = toSegments.join(\"/\");\n }\n\n // If there are more \"..\" segments than parent routes, resolve relative to\n // the root / URL.\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n\n let path = resolvePath(to, from);\n\n // Ensure the pathname has a trailing slash if the original \"to\" had one\n let hasExplicitTrailingSlash =\n toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n // Or if this was a link to the current path which has a trailing slash\n let hasCurrentTrailingSlash =\n (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n if (\n !path.pathname.endsWith(\"/\") &&\n (hasExplicitTrailingSlash || hasCurrentTrailingSlash)\n ) {\n path.pathname += \"/\";\n }\n\n return path;\n}\n\n/**\n * @private\n */\nexport function getToPathname(to: To): string | undefined {\n // Empty strings should be treated the same as / paths\n return to === \"\" || (to as Path).pathname === \"\"\n ? \"/\"\n : typeof to === \"string\"\n ? parsePath(to).pathname\n : to.pathname;\n}\n\n/**\n * @private\n */\nexport const joinPaths = (paths: string[]): string =>\n paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n\n/**\n * @private\n */\nexport const normalizePathname = (pathname: string): string =>\n pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n\n/**\n * @private\n */\nexport const normalizeSearch = (search: string): string =>\n !search || search === \"?\"\n ? \"\"\n : search.startsWith(\"?\")\n ? search\n : \"?\" + search;\n\n/**\n * @private\n */\nexport const normalizeHash = (hash: string): string =>\n !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n\nexport type JsonFunction = (\n data: Data,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * This is a shortcut for creating `application/json` responses. Converts `data`\n * to JSON and sets the `Content-Type` header.\n */\nexport const json: JsonFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n let headers = new Headers(responseInit.headers);\n if (!headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n }\n\n return new Response(JSON.stringify(data), {\n ...responseInit,\n headers,\n });\n};\n\nexport interface TrackedPromise extends Promise {\n _tracked?: boolean;\n _data?: any;\n _error?: any;\n}\n\nexport class AbortedDeferredError extends Error {}\n\nexport class DeferredData {\n private pendingKeys: Set = new Set();\n private controller: AbortController;\n private abortPromise: Promise;\n private unlistenAbortSignal: () => void;\n private subscriber?: (aborted: boolean) => void = undefined;\n data: Record;\n\n constructor(data: Record) {\n invariant(\n data && typeof data === \"object\" && !Array.isArray(data),\n \"defer() only accepts plain objects\"\n );\n\n // Set up an AbortController + Promise we can race against to exit early\n // cancellation\n let reject: (e: AbortedDeferredError) => void;\n this.abortPromise = new Promise((_, r) => (reject = r));\n this.controller = new AbortController();\n let onAbort = () =>\n reject(new AbortedDeferredError(\"Deferred data aborted\"));\n this.unlistenAbortSignal = () =>\n this.controller.signal.removeEventListener(\"abort\", onAbort);\n this.controller.signal.addEventListener(\"abort\", onAbort);\n\n this.data = Object.entries(data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: this.trackPromise(key, value),\n }),\n {}\n );\n }\n\n private trackPromise(\n key: string | number,\n value: Promise | unknown\n ): TrackedPromise | unknown {\n if (!(value instanceof Promise)) {\n return value;\n }\n\n this.pendingKeys.add(key);\n\n // We store a little wrapper promise that will be extended with\n // _data/_error props upon resolve/reject\n let promise: TrackedPromise = Promise.race([value, this.abortPromise]).then(\n (data) => this.onSettle(promise, key, null, data as unknown),\n (error) => this.onSettle(promise, key, error as unknown)\n );\n\n // Register rejection listeners to avoid uncaught promise rejections on\n // errors or aborted deferred values\n promise.catch(() => {});\n\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n return promise;\n }\n\n private onSettle(\n promise: TrackedPromise,\n key: string | number,\n error: unknown,\n data?: unknown\n ): unknown {\n if (\n this.controller.signal.aborted &&\n error instanceof AbortedDeferredError\n ) {\n this.unlistenAbortSignal();\n Object.defineProperty(promise, \"_error\", { get: () => error });\n return Promise.reject(error);\n }\n\n this.pendingKeys.delete(key);\n\n if (this.done) {\n // Nothing left to abort!\n this.unlistenAbortSignal();\n }\n\n const subscriber = this.subscriber;\n if (error) {\n Object.defineProperty(promise, \"_error\", { get: () => error });\n subscriber && subscriber(false);\n return Promise.reject(error);\n }\n\n Object.defineProperty(promise, \"_data\", { get: () => data });\n subscriber && subscriber(false);\n return data;\n }\n\n subscribe(fn: (aborted: boolean) => void) {\n this.subscriber = fn;\n }\n\n cancel() {\n this.controller.abort();\n this.pendingKeys.forEach((v, k) => this.pendingKeys.delete(k));\n let subscriber = this.subscriber;\n subscriber && subscriber(true);\n }\n\n async resolveData(signal: AbortSignal) {\n let aborted = false;\n if (!this.done) {\n let onAbort = () => this.cancel();\n signal.addEventListener(\"abort\", onAbort);\n aborted = await new Promise((resolve) => {\n this.subscribe((aborted) => {\n signal.removeEventListener(\"abort\", onAbort);\n if (aborted || this.done) {\n resolve(aborted);\n }\n });\n });\n }\n return aborted;\n }\n\n get done() {\n return this.pendingKeys.size === 0;\n }\n\n get unwrappedData() {\n invariant(\n this.data !== null && this.done,\n \"Can only unwrap data on initialized and settled deferreds\"\n );\n\n return Object.entries(this.data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: unwrapTrackedPromise(value),\n }),\n {}\n );\n }\n}\n\nfunction isTrackedPromise(value: any): value is TrackedPromise {\n return (\n value instanceof Promise && (value as TrackedPromise)._tracked === true\n );\n}\n\nfunction unwrapTrackedPromise(value: any) {\n if (!isTrackedPromise(value)) {\n return value;\n }\n\n if (value._error) {\n throw value._error;\n }\n return value._data;\n}\n\nexport function defer(data: Record) {\n return new DeferredData(data);\n}\n\nexport type RedirectFunction = (\n url: string,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * A redirect response. Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirect: RedirectFunction = (url, init = 302) => {\n let responseInit = init;\n if (typeof responseInit === \"number\") {\n responseInit = { status: responseInit };\n } else if (typeof responseInit.status === \"undefined\") {\n responseInit.status = 302;\n }\n\n let headers = new Headers(responseInit.headers);\n headers.set(\"Location\", url);\n\n return new Response(null, {\n ...responseInit,\n headers,\n });\n};\n\n/**\n * @private\n * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies\n */\nexport class ErrorResponse {\n status: number;\n statusText: string;\n data: any;\n\n constructor(status: number, statusText: string | undefined, data: any) {\n this.status = status;\n this.statusText = statusText || \"\";\n this.data = data;\n }\n}\n\n/**\n * Check if the given error is an ErrorResponse generated from a 4xx/5xx\n * Response throw from an action/loader\n */\nexport function isRouteErrorResponse(e: any): e is ErrorResponse {\n return e instanceof ErrorResponse;\n}\n","import type { History, Location, To } from \"./history\";\nimport {\n Action as HistoryAction,\n createLocation,\n createPath,\n createURL,\n parsePath,\n} from \"./history\";\nimport type {\n DataResult,\n AgnosticDataRouteMatch,\n AgnosticDataRouteObject,\n DeferredResult,\n ErrorResult,\n FormEncType,\n FormMethod,\n RedirectResult,\n RouteData,\n AgnosticRouteObject,\n Submission,\n SuccessResult,\n AgnosticRouteMatch,\n} from \"./utils\";\nimport {\n DeferredData,\n ErrorResponse,\n ResultType,\n convertRoutesToDataRoutes,\n getPathContributingMatches,\n invariant,\n isRouteErrorResponse,\n joinPaths,\n matchRoutes,\n resolveTo,\n} from \"./utils\";\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A Router instance manages all navigation and data loading/mutations\n */\nexport interface Router {\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the basename for the router\n */\n get basename(): RouterInit[\"basename\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the current state of the router\n */\n get state(): RouterState;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the routes for this router instance\n */\n get routes(): AgnosticDataRouteObject[];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Initialize the router, including adding history listeners and kicking off\n * initial data fetches. Returns a function to cleanup listeners and abort\n * any in-progress loads\n */\n initialize(): Router;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Subscribe to router.state updates\n *\n * @param fn function to call with the new state\n */\n subscribe(fn: RouterSubscriber): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Enable scroll restoration behavior in the router\n *\n * @param savedScrollPositions Object that will manage positions, in case\n * it's being restored from sessionStorage\n * @param getScrollPosition Function to get the active Y scroll position\n * @param getKey Function to get the key to use for restoration\n */\n enableScrollRestoration(\n savedScrollPositions: Record,\n getScrollPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Navigate forward/backward in the history stack\n * @param to Delta to move in the history stack\n */\n navigate(to: number): void;\n\n /**\n * Navigate to the given path\n * @param to Path to navigate to\n * @param opts Navigation options (method, submission, etc.)\n */\n navigate(to: To, opts?: RouterNavigateOptions): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a fetcher load/submission\n *\n * @param key Fetcher key\n * @param routeId Route that owns the fetcher\n * @param href href to fetch\n * @param opts Fetcher options, (method, submission, etc.)\n */\n fetch(\n key: string,\n routeId: string,\n href: string,\n opts?: RouterNavigateOptions\n ): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a revalidation of all current route loaders and fetcher loads\n */\n revalidate(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to create an href for the given location\n * @param location\n */\n createHref(location: Location | URL): string;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get/create a fetcher for the given key\n * @param key\n */\n getFetcher(key?: string): Fetcher;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete the fetcher for a given key\n * @param key\n */\n deleteFetcher(key?: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Cleanup listeners and abort any in-progress loads\n */\n dispose(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal fetch AbortControllers accessed by unit tests\n */\n _internalFetchControllers: Map;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal pending DeferredData instances accessed by unit tests\n */\n _internalActiveDeferreds: Map;\n}\n\n/**\n * State maintained internally by the router. During a navigation, all states\n * reflect the the \"old\" location unless otherwise noted.\n */\nexport interface RouterState {\n /**\n * The action of the most recent navigation\n */\n historyAction: HistoryAction;\n\n /**\n * The current location reflected by the router\n */\n location: Location;\n\n /**\n * The current set of route matches\n */\n matches: AgnosticDataRouteMatch[];\n\n /**\n * Tracks whether we've completed our initial data load\n */\n initialized: boolean;\n\n /**\n * Current scroll position we should start at for a new view\n * - number -> scroll position to restore to\n * - false -> do not restore scroll at all (used during submissions)\n * - null -> don't have a saved position, scroll to hash or top of page\n */\n restoreScrollPosition: number | false | null;\n\n /**\n * Indicate whether this navigation should skip resetting the scroll position\n * if we are unable to restore the scroll position\n */\n preventScrollReset: boolean;\n\n /**\n * Tracks the state of the current navigation\n */\n navigation: Navigation;\n\n /**\n * Tracks any in-progress revalidations\n */\n revalidation: RevalidationState;\n\n /**\n * Data from the loaders for the current matches\n */\n loaderData: RouteData;\n\n /**\n * Data from the action for the current matches\n */\n actionData: RouteData | null;\n\n /**\n * Errors caught from loaders for the current matches\n */\n errors: RouteData | null;\n\n /**\n * Map of current fetchers\n */\n fetchers: Map;\n}\n\n/**\n * Data that can be passed into hydrate a Router from SSR\n */\nexport type HydrationState = Partial<\n Pick\n>;\n\n/**\n * Initialization options for createRouter\n */\nexport interface RouterInit {\n basename?: string;\n routes: AgnosticRouteObject[];\n history: History;\n hydrationData?: HydrationState;\n}\n\n/**\n * State returned from a server-side query() call\n */\nexport interface StaticHandlerContext {\n location: RouterState[\"location\"];\n matches: RouterState[\"matches\"];\n loaderData: RouterState[\"loaderData\"];\n actionData: RouterState[\"actionData\"];\n errors: RouterState[\"errors\"];\n statusCode: number;\n loaderHeaders: Record;\n actionHeaders: Record;\n _deepestRenderedBoundaryId?: string | null;\n}\n\n/**\n * A StaticHandler instance manages a singular SSR navigation/fetch event\n */\nexport interface StaticHandler {\n dataRoutes: AgnosticDataRouteObject[];\n query(request: Request): Promise;\n queryRoute(request: Request, routeId?: string): Promise;\n}\n\n/**\n * Subscriber function signature for changes to router state\n */\nexport interface RouterSubscriber {\n (state: RouterState): void;\n}\n\ninterface UseMatchesMatch {\n id: string;\n pathname: string;\n params: AgnosticRouteMatch[\"params\"];\n data: unknown;\n handle: unknown;\n}\n\n/**\n * Function signature for determining the key to be used in scroll restoration\n * for a given location\n */\nexport interface GetScrollRestorationKeyFunction {\n (location: Location, matches: UseMatchesMatch[]): string | null;\n}\n\n/**\n * Function signature for determining the current scroll position\n */\nexport interface GetScrollPositionFunction {\n (): number;\n}\n\n/**\n * Options for a navigate() call for a Link navigation\n */\ntype LinkNavigateOptions = {\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n};\n\n/**\n * Options for a navigate() call for a Form navigation\n */\ntype SubmissionNavigateOptions = {\n replace?: boolean;\n state?: any;\n formMethod?: FormMethod;\n formEncType?: FormEncType;\n formData: FormData;\n};\n\n/**\n * Options to pass to navigate() for either a Link or Form navigation\n */\nexport type RouterNavigateOptions =\n | LinkNavigateOptions\n | SubmissionNavigateOptions;\n\n/**\n * Options to pass to fetch()\n */\nexport type RouterFetchOptions =\n | Omit\n | Omit;\n\n/**\n * Potential states for state.navigation\n */\nexport type NavigationStates = {\n Idle: {\n state: \"idle\";\n location: undefined;\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n formData: undefined;\n };\n Loading: {\n state: \"loading\";\n location: Location;\n formMethod: FormMethod | undefined;\n formAction: string | undefined;\n formEncType: FormEncType | undefined;\n formData: FormData | undefined;\n };\n Submitting: {\n state: \"submitting\";\n location: Location;\n formMethod: FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: FormData;\n };\n};\n\nexport type Navigation = NavigationStates[keyof NavigationStates];\n\nexport type RevalidationState = \"idle\" | \"loading\";\n\n/**\n * Potential states for fetchers\n */\ntype FetcherStates = {\n Idle: {\n state: \"idle\";\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n formData: undefined;\n data: TData | undefined;\n };\n Loading: {\n state: \"loading\";\n formMethod: FormMethod | undefined;\n formAction: string | undefined;\n formEncType: FormEncType | undefined;\n formData: FormData | undefined;\n data: TData | undefined;\n };\n Submitting: {\n state: \"submitting\";\n formMethod: FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: FormData;\n data: TData | undefined;\n };\n};\n\nexport type Fetcher =\n FetcherStates[keyof FetcherStates];\n\ninterface ShortCircuitable {\n /**\n * startNavigation does not need to complete the navigation because we\n * redirected or got interrupted\n */\n shortCircuited?: boolean;\n}\n\ninterface HandleActionResult extends ShortCircuitable {\n /**\n * Error thrown from the current action, keyed by the route containing the\n * error boundary to render the error. To be committed to the state after\n * loaders have completed\n */\n pendingActionError?: RouteData;\n /**\n * Data returned from the current action, keyed by the route owning the action.\n * To be committed to the state after loaders have completed\n */\n pendingActionData?: RouteData;\n}\n\ninterface HandleLoadersResult extends ShortCircuitable {\n /**\n * loaderData returned from the current set of loaders\n */\n loaderData?: RouterState[\"loaderData\"];\n /**\n * errors thrown from the current set of loaders\n */\n errors?: RouterState[\"errors\"];\n}\n\n/**\n * Tuple of [key, href, DataRouteMatch, DataRouteMatch[]] for a revalidating\n * fetcher.load()\n */\ntype RevalidatingFetcher = [\n string,\n string,\n AgnosticDataRouteMatch,\n AgnosticDataRouteMatch[]\n];\n\n/**\n * Tuple of [href, DataRouteMatch, DataRouteMatch[]] for an active\n * fetcher.load()\n */\ntype FetchLoadMatch = [\n string,\n AgnosticDataRouteMatch,\n AgnosticDataRouteMatch[]\n];\n\n/**\n * Wrapper object to allow us to throw any response out from callLoaderOrAction\n * for queryRouter while preserving whether or not it was thrown or returned\n * from the loader/action\n */\ninterface QueryRouteResponse {\n type: ResultType.data | ResultType.error;\n response: Response;\n}\n\nexport const IDLE_NAVIGATION: NavigationStates[\"Idle\"] = {\n state: \"idle\",\n location: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n};\n\nexport const IDLE_FETCHER: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n};\n\nconst isBrowser =\n typeof window !== \"undefined\" &&\n typeof window.document !== \"undefined\" &&\n typeof window.document.createElement !== \"undefined\";\nconst isServer = !isBrowser;\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createRouter\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Create a router and listen to history POP navigations\n */\nexport function createRouter(init: RouterInit): Router {\n invariant(\n init.routes.length > 0,\n \"You must provide a non-empty routes array to createRouter\"\n );\n\n let dataRoutes = convertRoutesToDataRoutes(init.routes);\n // Cleanup function for history\n let unlistenHistory: (() => void) | null = null;\n // Externally-provided functions to call on all state changes\n let subscribers = new Set();\n // Externally-provided object to hold scroll restoration locations during routing\n let savedScrollPositions: Record | null = null;\n // Externally-provided function to get scroll restoration keys\n let getScrollRestorationKey: GetScrollRestorationKeyFunction | null = null;\n // Externally-provided function to get current scroll position\n let getScrollPosition: GetScrollPositionFunction | null = null;\n // One-time flag to control the initial hydration scroll restoration. Because\n // we don't get the saved positions from until _after_\n // the initial render, we need to manually trigger a separate updateState to\n // send along the restoreScrollPosition\n let initialScrollRestored = false;\n\n let initialMatches = matchRoutes(\n dataRoutes,\n init.history.location,\n init.basename\n );\n let initialErrors: RouteData | null = null;\n\n if (initialMatches == null) {\n // If we do not match a user-provided-route, fall back to the root\n // to allow the error boundary to take over\n let { matches, route, error } = getNotFoundMatches(dataRoutes);\n initialMatches = matches;\n initialErrors = { [route.id]: error };\n }\n\n let initialized =\n !initialMatches.some((m) => m.route.loader) || init.hydrationData != null;\n\n let router: Router;\n let state: RouterState = {\n historyAction: init.history.action,\n location: init.history.location,\n matches: initialMatches,\n initialized,\n navigation: IDLE_NAVIGATION,\n restoreScrollPosition: null,\n preventScrollReset: false,\n revalidation: \"idle\",\n loaderData: (init.hydrationData && init.hydrationData.loaderData) || {},\n actionData: (init.hydrationData && init.hydrationData.actionData) || null,\n errors: (init.hydrationData && init.hydrationData.errors) || initialErrors,\n fetchers: new Map(),\n };\n\n // -- Stateful internal variables to manage navigations --\n // Current navigation in progress (to be committed in completeNavigation)\n let pendingAction: HistoryAction = HistoryAction.Pop;\n // Should the current navigation prevent the scroll reset if scroll cannot\n // be restored?\n let pendingPreventScrollReset = false;\n // AbortController for the active navigation\n let pendingNavigationController: AbortController | null;\n // We use this to avoid touching history in completeNavigation if a\n // revalidation is entirely uninterrupted\n let isUninterruptedRevalidation = false;\n // Use this internal flag to force revalidation of all loaders:\n // - submissions (completed or interrupted)\n // - useRevalidate()\n // - X-Remix-Revalidate (from redirect)\n let isRevalidationRequired = false;\n // Use this internal array to capture routes that require revalidation due\n // to a cancelled deferred on action submission\n let cancelledDeferredRoutes: string[] = [];\n // Use this internal array to capture fetcher loads that were cancelled by an\n // action navigation and require revalidation\n let cancelledFetcherLoads: string[] = [];\n // AbortControllers for any in-flight fetchers\n let fetchControllers = new Map();\n // Track loads based on the order in which they started\n let incrementingLoadId = 0;\n // Track the outstanding pending navigation data load to be compared against\n // the globally incrementing load when a fetcher load lands after a completed\n // navigation\n let pendingNavigationLoadId = -1;\n // Fetchers that triggered data reloads as a result of their actions\n let fetchReloadIds = new Map();\n // Fetchers that triggered redirect navigations from their actions\n let fetchRedirectIds = new Set();\n // Most recent href/match for fetcher.load calls for fetchers\n let fetchLoadMatches = new Map();\n // Store DeferredData instances for active route matches. When a\n // route loader returns defer() we stick one in here. Then, when a nested\n // promise resolves we update loaderData. If a new navigation starts we\n // cancel active deferreds for eliminated routes.\n let activeDeferreds = new Map();\n\n // Initialize the router, all side effects should be kicked off from here.\n // Implemented as a Fluent API for ease of:\n // let router = createRouter(init).initialize();\n function initialize() {\n // If history informs us of a POP navigation, start the navigation but do not update\n // state. We'll update our own state once the navigation completes\n unlistenHistory = init.history.listen(\n ({ action: historyAction, location }) =>\n startNavigation(historyAction, location)\n );\n\n // Kick off initial data load if needed. Use Pop to avoid modifying history\n if (!state.initialized) {\n startNavigation(HistoryAction.Pop, state.location);\n }\n\n return router;\n }\n\n // Clean up a router and it's side effects\n function dispose() {\n if (unlistenHistory) {\n unlistenHistory();\n }\n subscribers.clear();\n pendingNavigationController && pendingNavigationController.abort();\n state.fetchers.forEach((_, key) => deleteFetcher(key));\n }\n\n // Subscribe to state updates for the router\n function subscribe(fn: RouterSubscriber) {\n subscribers.add(fn);\n return () => subscribers.delete(fn);\n }\n\n // Update our state and notify the calling context of the change\n function updateState(newState: Partial): void {\n state = {\n ...state,\n ...newState,\n };\n subscribers.forEach((subscriber) => subscriber(state));\n }\n\n // Complete a navigation returning the state.navigation back to the IDLE_NAVIGATION\n // and setting state.[historyAction/location/matches] to the new route.\n // - Location is a required param\n // - Navigation will always be set to IDLE_NAVIGATION\n // - Can pass any other state in newState\n function completeNavigation(\n location: Location,\n newState: Partial>\n ): void {\n // Deduce if we're in a loading/actionReload state:\n // - We have committed actionData in the store\n // - The current navigation was a submission\n // - We're past the submitting state and into the loading state\n // - The location we've finished loading is different from the submission\n // location, indicating we redirected from the action (avoids false\n // positives for loading/submissionRedirect when actionData returned\n // on a prior submission)\n let isActionReload =\n state.actionData != null &&\n state.navigation.formMethod != null &&\n state.navigation.state === \"loading\" &&\n state.navigation.formAction?.split(\"?\")[0] === location.pathname;\n\n // Always preserve any existing loaderData from re-used routes\n let newLoaderData = newState.loaderData\n ? {\n loaderData: mergeLoaderData(\n state.loaderData,\n newState.loaderData,\n newState.matches || []\n ),\n }\n : {};\n\n updateState({\n // Clear existing actionData on any completed navigation beyond the original\n // action, unless we're currently finishing the loading/actionReload state.\n // Do this prior to spreading in newState in case we got back to back actions\n ...(isActionReload ? {} : { actionData: null }),\n ...newState,\n ...newLoaderData,\n historyAction: pendingAction,\n location,\n initialized: true,\n navigation: IDLE_NAVIGATION,\n revalidation: \"idle\",\n // Don't restore on submission navigations\n restoreScrollPosition: state.navigation.formData\n ? false\n : getSavedScrollPosition(location, newState.matches || state.matches),\n preventScrollReset: pendingPreventScrollReset,\n });\n\n if (isUninterruptedRevalidation) {\n // If this was an uninterrupted revalidation then do not touch history\n } else if (pendingAction === HistoryAction.Pop) {\n // Do nothing for POP - URL has already been updated\n } else if (pendingAction === HistoryAction.Push) {\n init.history.push(location, location.state);\n } else if (pendingAction === HistoryAction.Replace) {\n init.history.replace(location, location.state);\n }\n\n // Reset stateful navigation vars\n pendingAction = HistoryAction.Pop;\n pendingPreventScrollReset = false;\n isUninterruptedRevalidation = false;\n isRevalidationRequired = false;\n cancelledDeferredRoutes = [];\n cancelledFetcherLoads = [];\n }\n\n // Trigger a navigation event, which can either be a numerical POP or a PUSH\n // replace with an optional submission\n async function navigate(\n to: number | To,\n opts?: RouterNavigateOptions\n ): Promise {\n if (typeof to === \"number\") {\n init.history.go(to);\n return;\n }\n\n let { path, submission, error } = normalizeNavigateOptions(to, opts);\n\n let location = createLocation(state.location, path, opts && opts.state);\n\n // When using navigate as a PUSH/REPLACE we aren't reading an already-encoded\n // URL from window.location, so we need to encode it here so the behavior\n // remains the same as POP and non-data-router usages. new URL() does all\n // the same encoding we'd get from a history.pushState/window.location read\n // without having to touch history\n location = init.history.encodeLocation(location);\n\n let historyAction =\n (opts && opts.replace) === true || submission != null\n ? HistoryAction.Replace\n : HistoryAction.Push;\n let preventScrollReset =\n opts && \"preventScrollReset\" in opts\n ? opts.preventScrollReset === true\n : undefined;\n\n return await startNavigation(historyAction, location, {\n submission,\n // Send through the formData serialization error if we have one so we can\n // render at the right error boundary after we match routes\n pendingError: error,\n preventScrollReset,\n replace: opts && opts.replace,\n });\n }\n\n // Revalidate all current loaders. If a navigation is in progress or if this\n // is interrupted by a navigation, allow this to \"succeed\" by calling all\n // loaders during the next loader round\n function revalidate() {\n interruptActiveLoads();\n updateState({ revalidation: \"loading\" });\n\n // If we're currently submitting an action, we don't need to start a new\n // navigation, we'll just let the follow up loader execution call all loaders\n if (state.navigation.state === \"submitting\") {\n return;\n }\n\n // If we're currently in an idle state, start a new navigation for the current\n // action/location and mark it as uninterrupted, which will skip the history\n // update in completeNavigation\n if (state.navigation.state === \"idle\") {\n startNavigation(state.historyAction, state.location, {\n startUninterruptedRevalidation: true,\n });\n return;\n }\n\n // Otherwise, if we're currently in a loading state, just start a new\n // navigation to the navigation.location but do not trigger an uninterrupted\n // revalidation so that history correctly updates once the navigation completes\n startNavigation(\n pendingAction || state.historyAction,\n state.navigation.location,\n { overrideNavigation: state.navigation }\n );\n }\n\n // Start a navigation to the given action/location. Can optionally provide a\n // overrideNavigation which will override the normalLoad in the case of a redirect\n // navigation\n async function startNavigation(\n historyAction: HistoryAction,\n location: Location,\n opts?: {\n submission?: Submission;\n overrideNavigation?: Navigation;\n pendingError?: ErrorResponse;\n startUninterruptedRevalidation?: boolean;\n preventScrollReset?: boolean;\n replace?: boolean;\n }\n ): Promise {\n // Abort any in-progress navigations and start a new one. Unset any ongoing\n // uninterrupted revalidations unless told otherwise, since we want this\n // new navigation to update history normally\n pendingNavigationController && pendingNavigationController.abort();\n pendingNavigationController = null;\n pendingAction = historyAction;\n isUninterruptedRevalidation =\n (opts && opts.startUninterruptedRevalidation) === true;\n\n // Save the current scroll position every time we start a new navigation,\n // and track whether we should reset scroll on completion\n saveScrollPosition(state.location, state.matches);\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n let loadingNavigation = opts && opts.overrideNavigation;\n let matches = matchRoutes(dataRoutes, location, init.basename);\n\n // Short circuit with a 404 on the root error boundary if we match nothing\n if (!matches) {\n let {\n matches: notFoundMatches,\n route,\n error,\n } = getNotFoundMatches(dataRoutes);\n // Cancel all pending deferred on 404s since we don't keep any routes\n cancelActiveDeferreds();\n completeNavigation(location, {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error,\n },\n });\n return;\n }\n\n // Short circuit if it's only a hash change\n if (isHashChangeOnly(state.location, location)) {\n completeNavigation(location, { matches });\n return;\n }\n\n // Create a controller/Request for this navigation\n pendingNavigationController = new AbortController();\n let request = createRequest(\n location,\n pendingNavigationController.signal,\n opts && opts.submission\n );\n let pendingActionData: RouteData | undefined;\n let pendingError: RouteData | undefined;\n\n if (opts && opts.pendingError) {\n // If we have a pendingError, it means the user attempted a GET submission\n // with binary FormData so assign here and skip to handleLoaders. That\n // way we handle calling loaders above the boundary etc. It's not really\n // different from an actionError in that sense.\n pendingError = {\n [findNearestBoundary(matches).route.id]: opts.pendingError,\n };\n } else if (opts && opts.submission) {\n // Call action if we received an action submission\n let actionOutput = await handleAction(\n request,\n location,\n opts.submission,\n matches,\n { replace: opts.replace }\n );\n\n if (actionOutput.shortCircuited) {\n return;\n }\n\n pendingActionData = actionOutput.pendingActionData;\n pendingError = actionOutput.pendingActionError;\n\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n ...opts.submission,\n };\n loadingNavigation = navigation;\n }\n\n // Call loaders\n let { shortCircuited, loaderData, errors } = await handleLoaders(\n request,\n location,\n matches,\n loadingNavigation,\n opts && opts.submission,\n opts && opts.replace,\n pendingActionData,\n pendingError\n );\n\n if (shortCircuited) {\n return;\n }\n\n // Clean up now that the action/loaders have completed. Don't clean up if\n // we short circuited because pendingNavigationController will have already\n // been assigned to a new controller for the next navigation\n pendingNavigationController = null;\n\n completeNavigation(location, {\n matches,\n loaderData,\n errors,\n });\n }\n\n // Call the action matched by the leaf route for this navigation and handle\n // redirects/errors\n async function handleAction(\n request: Request,\n location: Location,\n submission: Submission,\n matches: AgnosticDataRouteMatch[],\n opts?: { replace?: boolean }\n ): Promise {\n interruptActiveLoads();\n\n // Put us in a submitting state\n let navigation: NavigationStates[\"Submitting\"] = {\n state: \"submitting\",\n location,\n ...submission,\n };\n updateState({ navigation });\n\n // Call our action and get the result\n let result: DataResult;\n let actionMatch = getTargetMatch(matches, location);\n\n if (!actionMatch.route.action) {\n result = getMethodNotAllowedResult(location);\n } else {\n result = await callLoaderOrAction(\n \"action\",\n request,\n actionMatch,\n matches,\n router.basename\n );\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n }\n\n if (isRedirectResult(result)) {\n let redirectNavigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location: createLocation(state.location, result.location),\n ...submission,\n };\n await startRedirectNavigation(\n result,\n redirectNavigation,\n opts && opts.replace\n );\n return { shortCircuited: true };\n }\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n\n // By default, all submissions are REPLACE navigations, but if the\n // action threw an error that'll be rendered in an errorElement, we fall\n // back to PUSH so that the user can use the back button to get back to\n // the pre-submission form location to try again\n if ((opts && opts.replace) !== true) {\n pendingAction = HistoryAction.Push;\n }\n\n return {\n pendingActionError: { [boundaryMatch.route.id]: result.error },\n };\n }\n\n if (isDeferredResult(result)) {\n throw new Error(\"defer() is not supported in actions\");\n }\n\n return {\n pendingActionData: { [actionMatch.route.id]: result.data },\n };\n }\n\n // Call all applicable loaders for the given matches, handling redirects,\n // errors, etc.\n async function handleLoaders(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n overrideNavigation?: Navigation,\n submission?: Submission,\n replace?: boolean,\n pendingActionData?: RouteData,\n pendingError?: RouteData\n ): Promise {\n // Figure out the right navigation we want to use for data loading\n let loadingNavigation = overrideNavigation;\n if (!loadingNavigation) {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n };\n loadingNavigation = navigation;\n }\n\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n state,\n matches,\n submission,\n location,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n pendingActionData,\n pendingError,\n fetchLoadMatches\n );\n\n // Cancel pending deferreds for no-longer-matched routes or routes we're\n // about to reload. Note that if this is an action reload we would have\n // already cancelled all pending deferreds so this would be a no-op\n cancelActiveDeferreds(\n (routeId) =>\n !(matches && matches.some((m) => m.route.id === routeId)) ||\n (matchesToLoad && matchesToLoad.some((m) => m.route.id === routeId))\n );\n\n // Short circuit if we have no loaders to run\n if (matchesToLoad.length === 0 && revalidatingFetchers.length === 0) {\n completeNavigation(location, {\n matches,\n loaderData: mergeLoaderData(state.loaderData, {}, matches),\n // Commit pending error if we're short circuiting\n errors: pendingError || null,\n actionData: pendingActionData || null,\n });\n return { shortCircuited: true };\n }\n\n // If this is an uninterrupted revalidation, we remain in our current idle\n // state. If not, we need to switch to our loading state and load data,\n // preserving any new action data or existing action data (in the case of\n // a revalidation interrupting an actionReload)\n if (!isUninterruptedRevalidation) {\n revalidatingFetchers.forEach(([key]) => {\n let fetcher = state.fetchers.get(key);\n let revalidatingFetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n data: fetcher && fetcher.data,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n };\n state.fetchers.set(key, revalidatingFetcher);\n });\n updateState({\n navigation: loadingNavigation,\n actionData: pendingActionData || state.actionData || null,\n ...(revalidatingFetchers.length > 0\n ? { fetchers: new Map(state.fetchers) }\n : {}),\n });\n }\n\n pendingNavigationLoadId = ++incrementingLoadId;\n revalidatingFetchers.forEach(([key]) =>\n fetchControllers.set(key, pendingNavigationController!)\n );\n\n let { results, loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state.matches,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n request\n );\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n\n // Clean up _after_ loaders have completed. Don't clean up if we short\n // circuited because fetchControllers would have been aborted and\n // reassigned to new controllers for the next navigation\n revalidatingFetchers.forEach(([key]) => fetchControllers.delete(key));\n\n // If any loaders returned a redirect Response, start a new REPLACE navigation\n let redirect = findRedirect(results);\n if (redirect) {\n let redirectNavigation = getLoaderRedirect(state, redirect);\n await startRedirectNavigation(redirect, redirectNavigation, replace);\n return { shortCircuited: true };\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n matches,\n matchesToLoad,\n loaderResults,\n pendingError,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Wire up subscribers to update loaderData as promises settle\n activeDeferreds.forEach((deferredData, routeId) => {\n deferredData.subscribe((aborted) => {\n // Note: No need to updateState here since the TrackedPromise on\n // loaderData is stable across resolve/reject\n // Remove this instance if we were aborted or if promises have settled\n if (aborted || deferredData.done) {\n activeDeferreds.delete(routeId);\n }\n });\n });\n\n markFetchRedirectsDone();\n let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n\n return {\n loaderData,\n errors,\n ...(didAbortFetchLoads || revalidatingFetchers.length > 0\n ? { fetchers: new Map(state.fetchers) }\n : {}),\n };\n }\n\n function getFetcher(key: string): Fetcher {\n return state.fetchers.get(key) || IDLE_FETCHER;\n }\n\n // Trigger a fetcher load/submit for the given fetcher key\n function fetch(\n key: string,\n routeId: string,\n href: string,\n opts?: RouterFetchOptions\n ) {\n if (isServer) {\n throw new Error(\n \"router.fetch() was called during the server render, but it shouldn't be. \" +\n \"You are likely calling a useFetcher() method in the body of your component. \" +\n \"Try moving it to a useEffect or a callback.\"\n );\n }\n\n if (fetchControllers.has(key)) abortFetcher(key);\n\n let matches = matchRoutes(dataRoutes, href, init.basename);\n if (!matches) {\n setFetcherError(key, routeId, new ErrorResponse(404, \"Not Found\", null));\n return;\n }\n\n let { path, submission } = normalizeNavigateOptions(href, opts, true);\n let match = getTargetMatch(matches, path);\n\n if (submission) {\n handleFetcherAction(key, routeId, path, match, matches, submission);\n return;\n }\n\n // Store off the match so we can call it's shouldRevalidate on subsequent\n // revalidations\n fetchLoadMatches.set(key, [path, match, matches]);\n handleFetcherLoader(key, routeId, path, match, matches);\n }\n\n // Call the action for the matched fetcher.submit(), and then handle redirects,\n // errors, and revalidation\n async function handleFetcherAction(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n requestMatches: AgnosticDataRouteMatch[],\n submission: Submission\n ) {\n interruptActiveLoads();\n fetchLoadMatches.delete(key);\n\n if (!match.route.action) {\n let { error } = getMethodNotAllowedResult(path);\n setFetcherError(key, routeId, error);\n return;\n }\n\n // Put this fetcher into it's submitting state\n let existingFetcher = state.fetchers.get(key);\n let fetcher: FetcherStates[\"Submitting\"] = {\n state: \"submitting\",\n ...submission,\n data: existingFetcher && existingFetcher.data,\n };\n state.fetchers.set(key, fetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n\n // Call the action for the fetcher\n let abortController = new AbortController();\n let fetchRequest = createRequest(path, abortController.signal, submission);\n fetchControllers.set(key, abortController);\n\n let actionResult = await callLoaderOrAction(\n \"action\",\n fetchRequest,\n match,\n requestMatches,\n router.basename\n );\n\n if (fetchRequest.signal.aborted) {\n // We can delete this so long as we weren't aborted by ou our own fetcher\n // re-submit which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n return;\n }\n\n if (isRedirectResult(actionResult)) {\n fetchControllers.delete(key);\n fetchRedirectIds.add(key);\n let loadingFetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n ...submission,\n data: undefined,\n };\n state.fetchers.set(key, loadingFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n\n let redirectNavigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location: createLocation(state.location, actionResult.location),\n ...submission,\n };\n await startRedirectNavigation(actionResult, redirectNavigation);\n return;\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(actionResult)) {\n setFetcherError(key, routeId, actionResult.error);\n return;\n }\n\n if (isDeferredResult(actionResult)) {\n invariant(false, \"defer() is not supported in actions\");\n }\n\n // Start the data load for current matches, or the next location if we're\n // in the middle of a navigation\n let nextLocation = state.navigation.location || state.location;\n let revalidationRequest = createRequest(\n nextLocation,\n abortController.signal\n );\n let matches =\n state.navigation.state !== \"idle\"\n ? matchRoutes(dataRoutes, state.navigation.location, init.basename)\n : state.matches;\n\n invariant(matches, \"Didn't find any matches after fetcher action\");\n\n let loadId = ++incrementingLoadId;\n fetchReloadIds.set(key, loadId);\n\n let loadFetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n data: actionResult.data,\n ...submission,\n };\n state.fetchers.set(key, loadFetcher);\n\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n state,\n matches,\n submission,\n nextLocation,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n { [match.route.id]: actionResult.data },\n undefined, // No need to send through errors since we short circuit above\n fetchLoadMatches\n );\n\n // Put all revalidating fetchers into the loading state, except for the\n // current fetcher which we want to keep in it's current loading state which\n // contains it's action submission info + action data\n revalidatingFetchers\n .filter(([staleKey]) => staleKey !== key)\n .forEach(([staleKey]) => {\n let existingFetcher = state.fetchers.get(staleKey);\n let revalidatingFetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n data: existingFetcher && existingFetcher.data,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n };\n state.fetchers.set(staleKey, revalidatingFetcher);\n fetchControllers.set(staleKey, abortController);\n });\n\n updateState({ fetchers: new Map(state.fetchers) });\n\n let { results, loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state.matches,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n revalidationRequest\n );\n\n if (abortController.signal.aborted) {\n return;\n }\n\n fetchReloadIds.delete(key);\n fetchControllers.delete(key);\n revalidatingFetchers.forEach(([staleKey]) =>\n fetchControllers.delete(staleKey)\n );\n\n let redirect = findRedirect(results);\n if (redirect) {\n let redirectNavigation = getLoaderRedirect(state, redirect);\n await startRedirectNavigation(redirect, redirectNavigation);\n return;\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n state.matches,\n matchesToLoad,\n loaderResults,\n undefined,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n let doneFetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: actionResult.data,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n };\n state.fetchers.set(key, doneFetcher);\n\n let didAbortFetchLoads = abortStaleFetchLoads(loadId);\n\n // If we are currently in a navigation loading state and this fetcher is\n // more recent than the navigation, we want the newer data so abort the\n // navigation and complete it with the fetcher data\n if (\n state.navigation.state === \"loading\" &&\n loadId > pendingNavigationLoadId\n ) {\n invariant(pendingAction, \"Expected pending action\");\n pendingNavigationController && pendingNavigationController.abort();\n\n completeNavigation(state.navigation.location, {\n matches,\n loaderData,\n errors,\n fetchers: new Map(state.fetchers),\n });\n } else {\n // otherwise just update with the fetcher data, preserving any existing\n // loaderData for loaders that did not need to reload. We have to\n // manually merge here since we aren't going through completeNavigation\n updateState({\n errors,\n loaderData: mergeLoaderData(state.loaderData, loaderData, matches),\n ...(didAbortFetchLoads ? { fetchers: new Map(state.fetchers) } : {}),\n });\n isRevalidationRequired = false;\n }\n }\n\n // Call the matched loader for fetcher.load(), handling redirects, errors, etc.\n async function handleFetcherLoader(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[]\n ) {\n let existingFetcher = state.fetchers.get(key);\n // Put this fetcher into it's loading state\n let loadingFetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n data: existingFetcher && existingFetcher.data,\n };\n state.fetchers.set(key, loadingFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n\n // Call the loader for this fetcher route match\n let abortController = new AbortController();\n let fetchRequest = createRequest(path, abortController.signal);\n fetchControllers.set(key, abortController);\n let result: DataResult = await callLoaderOrAction(\n \"loader\",\n fetchRequest,\n match,\n matches,\n router.basename\n );\n\n // Deferred isn't supported or fetcher loads, await everything and treat it\n // as a normal load. resolveDeferredData will return undefined if this\n // fetcher gets aborted, so we just leave result untouched and short circuit\n // below if that happens\n if (isDeferredResult(result)) {\n result =\n (await resolveDeferredData(result, fetchRequest.signal, true)) ||\n result;\n }\n\n // We can delete this so long as we weren't aborted by ou our own fetcher\n // re-load which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n\n if (fetchRequest.signal.aborted) {\n return;\n }\n\n // If the loader threw a redirect Response, start a new REPLACE navigation\n if (isRedirectResult(result)) {\n let redirectNavigation = getLoaderRedirect(state, result);\n await startRedirectNavigation(result, redirectNavigation);\n return;\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n state.fetchers.delete(key);\n // TODO: In remix, this would reset to IDLE_NAVIGATION if it was a catch -\n // do we need to behave any differently with our non-redirect errors?\n // What if it was a non-redirect Response?\n updateState({\n fetchers: new Map(state.fetchers),\n errors: {\n [boundaryMatch.route.id]: result.error,\n },\n });\n return;\n }\n\n invariant(!isDeferredResult(result), \"Unhandled fetcher deferred data\");\n\n // Put the fetcher back into an idle state\n let doneFetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: result.data,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n };\n state.fetchers.set(key, doneFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n }\n\n /**\n * Utility function to handle redirects returned from an action or loader.\n * Normally, a redirect \"replaces\" the navigation that triggered it. So, for\n * example:\n *\n * - user is on /a\n * - user clicks a link to /b\n * - loader for /b redirects to /c\n *\n * In a non-JS app the browser would track the in-flight navigation to /b and\n * then replace it with /c when it encountered the redirect response. In\n * the end it would only ever update the URL bar with /c.\n *\n * In client-side routing using pushState/replaceState, we aim to emulate\n * this behavior and we also do not update history until the end of the\n * navigation (including processed redirects). This means that we never\n * actually touch history until we've processed redirects, so we just use\n * the history action from the original navigation (PUSH or REPLACE).\n */\n async function startRedirectNavigation(\n redirect: RedirectResult,\n navigation: Navigation,\n replace?: boolean\n ) {\n if (redirect.revalidate) {\n isRevalidationRequired = true;\n }\n invariant(\n navigation.location,\n \"Expected a location on the redirect navigation\"\n );\n // There's no need to abort on redirects, since we don't detect the\n // redirect until the action/loaders have settled\n pendingNavigationController = null;\n\n let redirectHistoryAction =\n replace === true ? HistoryAction.Replace : HistoryAction.Push;\n\n await startNavigation(redirectHistoryAction, navigation.location, {\n overrideNavigation: navigation,\n });\n }\n\n async function callLoadersAndMaybeResolveData(\n currentMatches: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n fetchersToLoad: RevalidatingFetcher[],\n request: Request\n ) {\n // Call all navigation loaders and revalidating fetcher loaders in parallel,\n // then slice off the results into separate arrays so we can handle them\n // accordingly\n let results = await Promise.all([\n ...matchesToLoad.map((match) =>\n callLoaderOrAction(\"loader\", request, match, matches, router.basename)\n ),\n ...fetchersToLoad.map(([, href, match, fetchMatches]) =>\n callLoaderOrAction(\n \"loader\",\n createRequest(href, request.signal),\n match,\n fetchMatches,\n router.basename\n )\n ),\n ]);\n let loaderResults = results.slice(0, matchesToLoad.length);\n let fetcherResults = results.slice(matchesToLoad.length);\n\n await Promise.all([\n resolveDeferredResults(\n currentMatches,\n matchesToLoad,\n loaderResults,\n request.signal,\n false,\n state.loaderData\n ),\n resolveDeferredResults(\n currentMatches,\n fetchersToLoad.map(([, , match]) => match),\n fetcherResults,\n request.signal,\n true\n ),\n ]);\n\n return { results, loaderResults, fetcherResults };\n }\n\n function interruptActiveLoads() {\n // Every interruption triggers a revalidation\n isRevalidationRequired = true;\n\n // Cancel pending route-level deferreds and mark cancelled routes for\n // revalidation\n cancelledDeferredRoutes.push(...cancelActiveDeferreds());\n\n // Abort in-flight fetcher loads\n fetchLoadMatches.forEach((_, key) => {\n if (fetchControllers.has(key)) {\n cancelledFetcherLoads.push(key);\n abortFetcher(key);\n }\n });\n }\n\n function setFetcherError(key: string, routeId: string, error: any) {\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n deleteFetcher(key);\n updateState({\n errors: {\n [boundaryMatch.route.id]: error,\n },\n fetchers: new Map(state.fetchers),\n });\n }\n\n function deleteFetcher(key: string): void {\n if (fetchControllers.has(key)) abortFetcher(key);\n fetchLoadMatches.delete(key);\n fetchReloadIds.delete(key);\n fetchRedirectIds.delete(key);\n state.fetchers.delete(key);\n }\n\n function abortFetcher(key: string) {\n let controller = fetchControllers.get(key);\n invariant(controller, `Expected fetch controller: ${key}`);\n controller.abort();\n fetchControllers.delete(key);\n }\n\n function markFetchersDone(keys: string[]) {\n for (let key of keys) {\n let fetcher = getFetcher(key);\n let doneFetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: fetcher.data,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n };\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n function markFetchRedirectsDone(): void {\n let doneKeys = [];\n for (let key of fetchRedirectIds) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n fetchRedirectIds.delete(key);\n doneKeys.push(key);\n }\n }\n markFetchersDone(doneKeys);\n }\n\n function abortStaleFetchLoads(landedId: number): boolean {\n let yeetedKeys = [];\n for (let [key, id] of fetchReloadIds) {\n if (id < landedId) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n abortFetcher(key);\n fetchReloadIds.delete(key);\n yeetedKeys.push(key);\n }\n }\n }\n markFetchersDone(yeetedKeys);\n return yeetedKeys.length > 0;\n }\n\n function cancelActiveDeferreds(\n predicate?: (routeId: string) => boolean\n ): string[] {\n let cancelledRouteIds: string[] = [];\n activeDeferreds.forEach((dfd, routeId) => {\n if (!predicate || predicate(routeId)) {\n // Cancel the deferred - but do not remove from activeDeferreds here -\n // we rely on the subscribers to do that so our tests can assert proper\n // cleanup via _internalActiveDeferreds\n dfd.cancel();\n cancelledRouteIds.push(routeId);\n activeDeferreds.delete(routeId);\n }\n });\n return cancelledRouteIds;\n }\n\n // Opt in to capturing and reporting scroll positions during navigations,\n // used by the component\n function enableScrollRestoration(\n positions: Record,\n getPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ) {\n savedScrollPositions = positions;\n getScrollPosition = getPosition;\n getScrollRestorationKey = getKey || ((location) => location.key);\n\n // Perform initial hydration scroll restoration, since we miss the boat on\n // the initial updateState() because we've not yet rendered \n // and therefore have no savedScrollPositions available\n if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {\n initialScrollRestored = true;\n let y = getSavedScrollPosition(state.location, state.matches);\n if (y != null) {\n updateState({ restoreScrollPosition: y });\n }\n }\n\n return () => {\n savedScrollPositions = null;\n getScrollPosition = null;\n getScrollRestorationKey = null;\n };\n }\n\n function saveScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): void {\n if (savedScrollPositions && getScrollRestorationKey && getScrollPosition) {\n let userMatches = matches.map((m) =>\n createUseMatchesMatch(m, state.loaderData)\n );\n let key = getScrollRestorationKey(location, userMatches) || location.key;\n savedScrollPositions[key] = getScrollPosition();\n }\n }\n\n function getSavedScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): number | null {\n if (savedScrollPositions && getScrollRestorationKey && getScrollPosition) {\n let userMatches = matches.map((m) =>\n createUseMatchesMatch(m, state.loaderData)\n );\n let key = getScrollRestorationKey(location, userMatches) || location.key;\n let y = savedScrollPositions[key];\n if (typeof y === \"number\") {\n return y;\n }\n }\n return null;\n }\n\n router = {\n get basename() {\n return init.basename;\n },\n get state() {\n return state;\n },\n get routes() {\n return dataRoutes;\n },\n initialize,\n subscribe,\n enableScrollRestoration,\n navigate,\n fetch,\n revalidate,\n // Passthrough to history-aware createHref used by useHref so we get proper\n // hash-aware URLs in DOM paths\n createHref: (to: To) => init.history.createHref(to),\n getFetcher,\n deleteFetcher,\n dispose,\n _internalFetchControllers: fetchControllers,\n _internalActiveDeferreds: activeDeferreds,\n };\n\n return router;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createStaticHandler\n////////////////////////////////////////////////////////////////////////////////\n\nconst validActionMethods = new Set([\"POST\", \"PUT\", \"PATCH\", \"DELETE\"]);\nconst validRequestMethods = new Set([\"GET\", \"HEAD\", ...validActionMethods]);\n\nexport function unstable_createStaticHandler(\n routes: AgnosticRouteObject[]\n): StaticHandler {\n invariant(\n routes.length > 0,\n \"You must provide a non-empty routes array to unstable_createStaticHandler\"\n );\n\n let dataRoutes = convertRoutesToDataRoutes(routes);\n\n /**\n * The query() method is intended for document requests, in which we want to\n * call an optional action and potentially multiple loaders for all nested\n * routes. It returns a StaticHandlerContext object, which is very similar\n * to the router state (location, loaderData, actionData, errors, etc.) and\n * also adds SSR-specific information such as the statusCode and headers\n * from action/loaders Responses.\n *\n * It _should_ never throw and should report all errors through the\n * returned context.errors object, properly associating errors to their error\n * boundary. Additionally, it tracks _deepestRenderedBoundaryId which can be\n * used to emulate React error boundaries during SSr by performing a second\n * pass only down to the boundaryId.\n *\n * The one exception where we do not return a StaticHandlerContext is when a\n * redirect response is returned or thrown from any action/loader. We\n * propagate that out and return the raw Response so the HTTP server can\n * return it directly.\n */\n async function query(\n request: Request\n ): Promise {\n let url = new URL(request.url);\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location);\n\n if (!validRequestMethods.has(request.method)) {\n let {\n matches: methodNotAllowedMatches,\n route,\n error,\n } = getMethodNotAllowedMatches(dataRoutes);\n return {\n location,\n matches: methodNotAllowedMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n };\n } else if (!matches) {\n let {\n matches: notFoundMatches,\n route,\n error,\n } = getNotFoundMatches(dataRoutes);\n return {\n location,\n matches: notFoundMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n };\n }\n\n let result = await queryImpl(request, location, matches);\n if (result instanceof Response) {\n return result;\n }\n\n // When returning StaticHandlerContext, we patch back in the location here\n // since we need it for React Context. But this helps keep our submit and\n // loadRouteData operating on a Request instead of a Location\n return { location, ...result };\n }\n\n /**\n * The queryRoute() method is intended for targeted route requests, either\n * for fetch ?_data requests or resource route requests. In this case, we\n * are only ever calling a single action or loader, and we are returning the\n * returned value directly. In most cases, this will be a Response returned\n * from the action/loader, but it may be a primitive or other value as well -\n * and in such cases the calling context should handle that accordingly.\n *\n * We do respect the throw/return differentiation, so if an action/loader\n * throws, then this method will throw the value. This is important so we\n * can do proper boundary identification in Remix where a thrown Response\n * must go to the Catch Boundary but a returned Response is happy-path.\n *\n * One thing to note is that any Router-initiated thrown Response (such as a\n * 404 or 405) will have a custom X-Remix-Router-Error: \"yes\" header on it\n * in order to differentiate from responses thrown from user actions/loaders.\n */\n async function queryRoute(request: Request, routeId?: string): Promise {\n let url = new URL(request.url);\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location);\n\n if (!validRequestMethods.has(request.method)) {\n throw createRouterErrorResponse(null, {\n status: 405,\n statusText: \"Method Not Allowed\",\n });\n } else if (!matches) {\n throw createRouterErrorResponse(null, {\n status: 404,\n statusText: \"Not Found\",\n });\n }\n\n let match = routeId\n ? matches.find((m) => m.route.id === routeId)\n : getTargetMatch(matches, location);\n\n if (!match) {\n throw createRouterErrorResponse(null, {\n status: 404,\n statusText: \"Not Found\",\n });\n }\n\n let result = await queryImpl(request, location, matches, match);\n if (result instanceof Response) {\n return result;\n }\n\n let error = result.errors ? Object.values(result.errors)[0] : undefined;\n if (error !== undefined) {\n // If we got back result.errors, that means the loader/action threw\n // _something_ that wasn't a Response, but it's not guaranteed/required\n // to be an `instanceof Error` either, so we have to use throw here to\n // preserve the \"error\" state outside of queryImpl.\n throw error;\n }\n\n // Pick off the right state value to return\n let routeData = [result.actionData, result.loaderData].find((v) => v);\n return Object.values(routeData || {})[0];\n }\n\n async function queryImpl(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n routeMatch?: AgnosticDataRouteMatch\n ): Promise | Response> {\n invariant(\n request.signal,\n \"query()/queryRoute() requests must contain an AbortController signal\"\n );\n\n try {\n if (validActionMethods.has(request.method)) {\n let result = await submit(\n request,\n matches,\n routeMatch || getTargetMatch(matches, location),\n routeMatch != null\n );\n return result;\n }\n\n let result = await loadRouteData(request, matches, routeMatch);\n return result instanceof Response\n ? result\n : {\n ...result,\n actionData: null,\n actionHeaders: {},\n };\n } catch (e) {\n // If the user threw/returned a Response in callLoaderOrAction, we throw\n // it to bail out and then return or throw here based on whether the user\n // returned or threw\n if (isQueryRouteResponse(e)) {\n if (e.type === ResultType.error && !isRedirectResponse(e.response)) {\n throw e.response;\n }\n return e.response;\n }\n // Redirects are always returned since they don't propagate to catch\n // boundaries\n if (isRedirectResponse(e)) {\n return e;\n }\n throw e;\n }\n }\n\n async function submit(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n actionMatch: AgnosticDataRouteMatch,\n isRouteRequest: boolean\n ): Promise | Response> {\n let result: DataResult;\n if (!actionMatch.route.action) {\n if (isRouteRequest) {\n throw createRouterErrorResponse(null, {\n status: 405,\n statusText: \"Method Not Allowed\",\n });\n }\n result = getMethodNotAllowedResult(request.url);\n } else {\n result = await callLoaderOrAction(\n \"action\",\n request,\n actionMatch,\n matches,\n undefined, // Basename not currently supported in static handlers\n true,\n isRouteRequest\n );\n\n if (request.signal.aborted) {\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(`${method}() call aborted`);\n }\n }\n\n if (isRedirectResult(result)) {\n // Uhhhh - this should never happen, we should always throw these from\n // callLoaderOrAction, but the type narrowing here keeps TS happy and we\n // can get back on the \"throw all redirect responses\" train here should\n // this ever happen :/\n throw new Response(null, {\n status: result.status,\n headers: {\n Location: result.location,\n },\n });\n }\n\n if (isDeferredResult(result)) {\n throw new Error(\"defer() is not supported in actions\");\n }\n\n if (isRouteRequest) {\n // Note: This should only be non-Response values if we get here, since\n // isRouteRequest should throw any Response received in callLoaderOrAction\n if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n return {\n matches: [actionMatch],\n loaderData: {},\n actionData: null,\n errors: {\n [boundaryMatch.route.id]: result.error,\n },\n // Note: statusCode + headers are unused here since queryRoute will\n // return the raw Response or value\n statusCode: 500,\n loaderHeaders: {},\n actionHeaders: {},\n };\n }\n\n return {\n matches: [actionMatch],\n loaderData: {},\n actionData: { [actionMatch.route.id]: result.data },\n errors: null,\n // Note: statusCode + headers are unused here since queryRoute will\n // return the raw Response or value\n statusCode: 200,\n loaderHeaders: {},\n actionHeaders: {},\n };\n }\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n let context = await loadRouteData(request, matches, undefined, {\n [boundaryMatch.route.id]: result.error,\n });\n\n // action status codes take precedence over loader status codes\n return {\n ...context,\n statusCode: isRouteErrorResponse(result.error)\n ? result.error.status\n : 500,\n actionData: null,\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n let context = await loadRouteData(request, matches);\n\n return {\n ...context,\n // action status codes take precedence over loader status codes\n ...(result.statusCode ? { statusCode: result.statusCode } : {}),\n actionData: {\n [actionMatch.route.id]: result.data,\n },\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n async function loadRouteData(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n routeMatch?: AgnosticDataRouteMatch,\n pendingActionError?: RouteData\n ): Promise<\n | Omit\n | Response\n > {\n let isRouteRequest = routeMatch != null;\n let requestMatches = routeMatch\n ? [routeMatch]\n : getLoaderMatchesUntilBoundary(\n matches,\n Object.keys(pendingActionError || {})[0]\n );\n let matchesToLoad = requestMatches.filter((m) => m.route.loader);\n\n // Short circuit if we have no loaders to run\n if (matchesToLoad.length === 0) {\n return {\n matches,\n loaderData: {},\n errors: pendingActionError || null,\n statusCode: 200,\n loaderHeaders: {},\n };\n }\n\n let results = await Promise.all([\n ...matchesToLoad.map((match) =>\n callLoaderOrAction(\n \"loader\",\n request,\n match,\n matches,\n undefined, // Basename not currently supported in static handlers\n true,\n isRouteRequest\n )\n ),\n ]);\n\n if (request.signal.aborted) {\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(`${method}() call aborted`);\n }\n\n // Can't do anything with these without the Remix side of things, so just\n // cancel them for now\n results.forEach((result) => {\n if (isDeferredResult(result)) {\n result.deferredData.cancel();\n }\n });\n\n // Process and commit output from loaders\n let context = processRouteLoaderData(\n matches,\n matchesToLoad,\n results,\n pendingActionError\n );\n\n return {\n ...context,\n matches,\n };\n }\n\n function createRouterErrorResponse(\n body: BodyInit | null | undefined,\n init: ResponseInit\n ) {\n return new Response(body, {\n ...init,\n headers: {\n ...init.headers,\n \"X-Remix-Router-Error\": \"yes\",\n },\n });\n }\n\n return {\n dataRoutes,\n query,\n queryRoute,\n };\n}\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Helpers\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Given an existing StaticHandlerContext and an error thrown at render time,\n * provide an updated StaticHandlerContext suitable for a second SSR render\n */\nexport function getStaticContextFromError(\n routes: AgnosticDataRouteObject[],\n context: StaticHandlerContext,\n error: any\n) {\n let newContext: StaticHandlerContext = {\n ...context,\n statusCode: 500,\n errors: {\n [context._deepestRenderedBoundaryId || routes[0].id]: error,\n },\n };\n return newContext;\n}\n\n// Normalize navigation options by converting formMethod=GET formData objects to\n// URLSearchParams so they behave identically to links with query params\nfunction normalizeNavigateOptions(\n to: To,\n opts?: RouterNavigateOptions,\n isFetcher = false\n): {\n path: string;\n submission?: Submission;\n error?: ErrorResponse;\n} {\n let path = typeof to === \"string\" ? to : createPath(to);\n\n // Return location verbatim on non-submission navigations\n if (!opts || (!(\"formMethod\" in opts) && !(\"formData\" in opts))) {\n return { path };\n }\n\n // Create a Submission on non-GET navigations\n if (opts.formMethod != null && opts.formMethod !== \"get\") {\n return {\n path,\n submission: {\n formMethod: opts.formMethod,\n formAction: stripHashFromPath(path),\n formEncType:\n (opts && opts.formEncType) || \"application/x-www-form-urlencoded\",\n formData: opts.formData,\n },\n };\n }\n\n // No formData to flatten for GET submission\n if (!opts.formData) {\n return { path };\n }\n\n // Flatten submission onto URLSearchParams for GET submissions\n let parsedPath = parsePath(path);\n try {\n let searchParams = convertFormDataToSearchParams(opts.formData);\n // Since fetcher GET submissions only run a single loader (as opposed to\n // navigation GET submissions which run all loaders), we need to preserve\n // any incoming ?index params\n if (\n isFetcher &&\n parsedPath.search &&\n hasNakedIndexQuery(parsedPath.search)\n ) {\n searchParams.append(\"index\", \"\");\n }\n parsedPath.search = `?${searchParams}`;\n } catch (e) {\n return {\n path,\n error: new ErrorResponse(\n 400,\n \"Bad Request\",\n \"Cannot submit binary form data using GET\"\n ),\n };\n }\n\n return { path: createPath(parsedPath) };\n}\n\nfunction getLoaderRedirect(\n state: RouterState,\n redirect: RedirectResult\n): Navigation {\n let { formMethod, formAction, formEncType, formData } = state.navigation;\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location: createLocation(state.location, redirect.location),\n formMethod: formMethod || undefined,\n formAction: formAction || undefined,\n formEncType: formEncType || undefined,\n formData: formData || undefined,\n };\n return navigation;\n}\n\n// Filter out all routes below any caught error as they aren't going to\n// render so we don't need to load them\nfunction getLoaderMatchesUntilBoundary(\n matches: AgnosticDataRouteMatch[],\n boundaryId?: string\n) {\n let boundaryMatches = matches;\n if (boundaryId) {\n let index = matches.findIndex((m) => m.route.id === boundaryId);\n if (index >= 0) {\n boundaryMatches = matches.slice(0, index);\n }\n }\n return boundaryMatches;\n}\n\nfunction getMatchesToLoad(\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n submission: Submission | undefined,\n location: Location,\n isRevalidationRequired: boolean,\n cancelledDeferredRoutes: string[],\n cancelledFetcherLoads: string[],\n pendingActionData?: RouteData,\n pendingError?: RouteData,\n fetchLoadMatches?: Map\n): [AgnosticDataRouteMatch[], RevalidatingFetcher[]] {\n let actionResult = pendingError\n ? Object.values(pendingError)[0]\n : pendingActionData\n ? Object.values(pendingActionData)[0]\n : null;\n\n // Pick navigation matches that are net-new or qualify for revalidation\n let boundaryId = pendingError ? Object.keys(pendingError)[0] : undefined;\n let boundaryMatches = getLoaderMatchesUntilBoundary(matches, boundaryId);\n let navigationMatches = boundaryMatches.filter(\n (match, index) =>\n match.route.loader != null &&\n (isNewLoader(state.loaderData, state.matches[index], match) ||\n // If this route had a pending deferred cancelled it must be revalidated\n cancelledDeferredRoutes.some((id) => id === match.route.id) ||\n shouldRevalidateLoader(\n state.location,\n state.matches[index],\n submission,\n location,\n match,\n isRevalidationRequired,\n actionResult\n ))\n );\n\n // Pick fetcher.loads that need to be revalidated\n let revalidatingFetchers: RevalidatingFetcher[] = [];\n fetchLoadMatches &&\n fetchLoadMatches.forEach(([href, match, fetchMatches], key) => {\n // This fetcher was cancelled from a prior action submission - force reload\n if (cancelledFetcherLoads.includes(key)) {\n revalidatingFetchers.push([key, href, match, fetchMatches]);\n } else if (isRevalidationRequired) {\n let shouldRevalidate = shouldRevalidateLoader(\n href,\n match,\n submission,\n href,\n match,\n isRevalidationRequired,\n actionResult\n );\n if (shouldRevalidate) {\n revalidatingFetchers.push([key, href, match, fetchMatches]);\n }\n }\n });\n\n return [navigationMatches, revalidatingFetchers];\n}\n\nfunction isNewLoader(\n currentLoaderData: RouteData,\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let isNew =\n // [a] -> [a, b]\n !currentMatch ||\n // [a, b] -> [a, c]\n match.route.id !== currentMatch.route.id;\n\n // Handle the case that we don't have data for a re-used route, potentially\n // from a prior error or from a cancelled pending deferred\n let isMissingData = currentLoaderData[match.route.id] === undefined;\n\n // Always load if this is a net-new route or we don't yet have data\n return isNew || isMissingData;\n}\n\nfunction isNewRouteInstance(\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let currentPath = currentMatch.route.path;\n return (\n // param change for this match, /users/123 -> /users/456\n currentMatch.pathname !== match.pathname ||\n // splat param changed, which is not present in match.path\n // e.g. /files/images/avatar.jpg -> files/finances.xls\n (currentPath &&\n currentPath.endsWith(\"*\") &&\n currentMatch.params[\"*\"] !== match.params[\"*\"])\n );\n}\n\nfunction shouldRevalidateLoader(\n currentLocation: string | Location,\n currentMatch: AgnosticDataRouteMatch,\n submission: Submission | undefined,\n location: string | Location,\n match: AgnosticDataRouteMatch,\n isRevalidationRequired: boolean,\n actionResult: DataResult | undefined\n) {\n let currentUrl = createURL(currentLocation);\n let currentParams = currentMatch.params;\n let nextUrl = createURL(location);\n let nextParams = match.params;\n\n // This is the default implementation as to when we revalidate. If the route\n // provides it's own implementation, then we give them full control but\n // provide this value so they can leverage it if needed after they check\n // their own specific use cases\n // Note that fetchers always provide the same current/next locations so the\n // URL-based checks here don't apply to fetcher shouldRevalidate calls\n let defaultShouldRevalidate =\n isNewRouteInstance(currentMatch, match) ||\n // Clicked the same link, resubmitted a GET form\n currentUrl.toString() === nextUrl.toString() ||\n // Search params affect all loaders\n currentUrl.search !== nextUrl.search ||\n // Forced revalidation due to submission, useRevalidate, or X-Remix-Revalidate\n isRevalidationRequired;\n\n if (match.route.shouldRevalidate) {\n let routeChoice = match.route.shouldRevalidate({\n currentUrl,\n currentParams,\n nextUrl,\n nextParams,\n ...submission,\n actionResult,\n defaultShouldRevalidate,\n });\n if (typeof routeChoice === \"boolean\") {\n return routeChoice;\n }\n }\n\n return defaultShouldRevalidate;\n}\n\nasync function callLoaderOrAction(\n type: \"loader\" | \"action\",\n request: Request,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[],\n basename: string | undefined,\n isStaticRequest: boolean = false,\n isRouteRequest: boolean = false\n): Promise {\n let resultType;\n let result;\n\n // Setup a promise we can race against so that abort signals short circuit\n let reject: () => void;\n let abortPromise = new Promise((_, r) => (reject = r));\n let onReject = () => reject();\n request.signal.addEventListener(\"abort\", onReject);\n\n try {\n let handler = match.route[type];\n invariant(\n handler,\n `Could not find the ${type} to run on the \"${match.route.id}\" route`\n );\n\n result = await Promise.race([\n handler({ request, params: match.params }),\n abortPromise,\n ]);\n } catch (e) {\n resultType = ResultType.error;\n result = e;\n } finally {\n request.signal.removeEventListener(\"abort\", onReject);\n }\n\n if (result instanceof Response) {\n let status = result.status;\n\n // Process redirects\n if (status >= 300 && status <= 399) {\n let location = result.headers.get(\"Location\");\n invariant(\n location,\n \"Redirects returned/thrown from loaders/actions must have a Location header\"\n );\n\n // Support relative routing in redirects\n let activeMatches = matches.slice(0, matches.indexOf(match) + 1);\n let routePathnames = getPathContributingMatches(activeMatches).map(\n (match) => match.pathnameBase\n );\n let requestPath = createURL(request.url).pathname;\n let resolvedLocation = resolveTo(location, routePathnames, requestPath);\n invariant(\n createPath(resolvedLocation),\n `Unable to resolve redirect location: ${result.headers.get(\"Location\")}`\n );\n\n // Prepend the basename to the redirect location if we have one\n if (basename) {\n let path = resolvedLocation.pathname;\n resolvedLocation.pathname =\n path === \"/\" ? basename : joinPaths([basename, path]);\n }\n\n location = createPath(resolvedLocation);\n\n // Don't process redirects in the router during static requests requests.\n // Instead, throw the Response and let the server handle it with an HTTP\n // redirect. We also update the Location header in place in this flow so\n // basename and relative routing is taken into account\n if (isStaticRequest) {\n result.headers.set(\"Location\", location);\n throw result;\n }\n\n return {\n type: ResultType.redirect,\n status,\n location,\n revalidate: result.headers.get(\"X-Remix-Revalidate\") !== null,\n };\n }\n\n // For SSR single-route requests, we want to hand Responses back directly\n // without unwrapping. We do this with the QueryRouteResponse wrapper\n // interface so we can know whether it was returned or thrown\n if (isRouteRequest) {\n // eslint-disable-next-line no-throw-literal\n throw {\n type: resultType || ResultType.data,\n response: result,\n };\n }\n\n let data: any;\n let contentType = result.headers.get(\"Content-Type\");\n if (contentType && contentType.startsWith(\"application/json\")) {\n data = await result.json();\n } else {\n data = await result.text();\n }\n\n if (resultType === ResultType.error) {\n return {\n type: resultType,\n error: new ErrorResponse(status, result.statusText, data),\n headers: result.headers,\n };\n }\n\n return {\n type: ResultType.data,\n data,\n statusCode: result.status,\n headers: result.headers,\n };\n }\n\n if (resultType === ResultType.error) {\n return { type: resultType, error: result };\n }\n\n if (result instanceof DeferredData) {\n return { type: ResultType.deferred, deferredData: result };\n }\n\n return { type: ResultType.data, data: result };\n}\n\nfunction createRequest(\n location: string | Location,\n signal: AbortSignal,\n submission?: Submission\n): Request {\n let url = createURL(stripHashFromPath(location)).toString();\n let init: RequestInit = { signal };\n\n if (submission) {\n let { formMethod, formEncType, formData } = submission;\n init.method = formMethod.toUpperCase();\n init.body =\n formEncType === \"application/x-www-form-urlencoded\"\n ? convertFormDataToSearchParams(formData)\n : formData;\n }\n\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n return new Request(url, init);\n}\n\nfunction convertFormDataToSearchParams(formData: FormData): URLSearchParams {\n let searchParams = new URLSearchParams();\n\n for (let [key, value] of formData.entries()) {\n invariant(\n typeof value === \"string\",\n 'File inputs are not supported with encType \"application/x-www-form-urlencoded\", ' +\n 'please use \"multipart/form-data\" instead.'\n );\n searchParams.append(key, value);\n }\n\n return searchParams;\n}\n\nfunction processRouteLoaderData(\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n pendingError: RouteData | undefined,\n activeDeferreds?: Map\n): {\n loaderData: RouterState[\"loaderData\"];\n errors: RouterState[\"errors\"] | null;\n statusCode: number;\n loaderHeaders: Record;\n} {\n // Fill in loaderData/errors from our loaders\n let loaderData: RouterState[\"loaderData\"] = {};\n let errors: RouterState[\"errors\"] | null = null;\n let statusCode: number | undefined;\n let foundError = false;\n let loaderHeaders: Record = {};\n\n // Process loader results into state.loaderData/state.errors\n results.forEach((result, index) => {\n let id = matchesToLoad[index].route.id;\n invariant(\n !isRedirectResult(result),\n \"Cannot handle redirect results in processLoaderData\"\n );\n if (isErrorResult(result)) {\n // Look upwards from the matched route for the closest ancestor\n // error boundary, defaulting to the root match\n let boundaryMatch = findNearestBoundary(matches, id);\n let error = result.error;\n // If we have a pending action error, we report it at the highest-route\n // that throws a loader error, and then clear it out to indicate that\n // it was consumed\n if (pendingError) {\n error = Object.values(pendingError)[0];\n pendingError = undefined;\n }\n errors = Object.assign(errors || {}, {\n [boundaryMatch.route.id]: error,\n });\n // Once we find our first (highest) error, we set the status code and\n // prevent deeper status codes from overriding\n if (!foundError) {\n foundError = true;\n statusCode = isRouteErrorResponse(result.error)\n ? result.error.status\n : 500;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else if (isDeferredResult(result)) {\n activeDeferreds && activeDeferreds.set(id, result.deferredData);\n loaderData[id] = result.deferredData.data;\n // TODO: Add statusCode/headers once we wire up streaming in Remix\n } else {\n loaderData[id] = result.data;\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (\n result.statusCode != null &&\n result.statusCode !== 200 &&\n !foundError\n ) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n }\n });\n\n // If we didn't consume the pending action error (i.e., all loaders\n // resolved), then consume it here\n if (pendingError) {\n errors = pendingError;\n }\n\n return {\n loaderData,\n errors,\n statusCode: statusCode || 200,\n loaderHeaders,\n };\n}\n\nfunction processLoaderData(\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n pendingError: RouteData | undefined,\n revalidatingFetchers: RevalidatingFetcher[],\n fetcherResults: DataResult[],\n activeDeferreds: Map\n): {\n loaderData: RouterState[\"loaderData\"];\n errors?: RouterState[\"errors\"];\n} {\n let { loaderData, errors } = processRouteLoaderData(\n matches,\n matchesToLoad,\n results,\n pendingError,\n activeDeferreds\n );\n\n // Process results from our revalidating fetchers\n for (let index = 0; index < revalidatingFetchers.length; index++) {\n let [key, , match] = revalidatingFetchers[index];\n invariant(\n fetcherResults !== undefined && fetcherResults[index] !== undefined,\n \"Did not find corresponding fetcher result\"\n );\n let result = fetcherResults[index];\n\n // Process fetcher non-redirect errors\n if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, match.route.id);\n if (!(errors && errors[boundaryMatch.route.id])) {\n errors = {\n ...errors,\n [boundaryMatch.route.id]: result.error,\n };\n }\n state.fetchers.delete(key);\n } else if (isRedirectResult(result)) {\n // Should never get here, redirects should get processed above, but we\n // keep this to type narrow to a success result in the else\n throw new Error(\"Unhandled fetcher revalidation redirect\");\n } else if (isDeferredResult(result)) {\n // Should never get here, deferred data should be awaited for fetchers\n // in resolveDeferredResults\n throw new Error(\"Unhandled fetcher deferred data\");\n } else {\n let doneFetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: result.data,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n };\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n return { loaderData, errors };\n}\n\nfunction mergeLoaderData(\n loaderData: RouteData,\n newLoaderData: RouteData,\n matches: AgnosticDataRouteMatch[]\n): RouteData {\n let mergedLoaderData = { ...newLoaderData };\n matches.forEach((match) => {\n let id = match.route.id;\n if (newLoaderData[id] === undefined && loaderData[id] !== undefined) {\n mergedLoaderData[id] = loaderData[id];\n }\n });\n return mergedLoaderData;\n}\n\n// Find the nearest error boundary, looking upwards from the leaf route (or the\n// route specified by routeId) for the closest ancestor error boundary,\n// defaulting to the root match\nfunction findNearestBoundary(\n matches: AgnosticDataRouteMatch[],\n routeId?: string\n): AgnosticDataRouteMatch {\n let eligibleMatches = routeId\n ? matches.slice(0, matches.findIndex((m) => m.route.id === routeId) + 1)\n : [...matches];\n return (\n eligibleMatches.reverse().find((m) => m.route.hasErrorBoundary === true) ||\n matches[0]\n );\n}\n\nfunction getShortCircuitMatches(\n routes: AgnosticDataRouteObject[],\n status: number,\n statusText: string\n): {\n matches: AgnosticDataRouteMatch[];\n route: AgnosticDataRouteObject;\n error: ErrorResponse;\n} {\n // Prefer a root layout route if present, otherwise shim in a route object\n let route = routes.find((r) => r.index || !r.path || r.path === \"/\") || {\n id: `__shim-${status}-route__`,\n };\n\n return {\n matches: [\n {\n params: {},\n pathname: \"\",\n pathnameBase: \"\",\n route,\n },\n ],\n route,\n error: new ErrorResponse(status, statusText, null),\n };\n}\n\nfunction getNotFoundMatches(routes: AgnosticDataRouteObject[]) {\n return getShortCircuitMatches(routes, 404, \"Not Found\");\n}\n\nfunction getMethodNotAllowedMatches(routes: AgnosticDataRouteObject[]) {\n return getShortCircuitMatches(routes, 405, \"Method Not Allowed\");\n}\n\nfunction getMethodNotAllowedResult(path: Location | string): ErrorResult {\n let href = typeof path === \"string\" ? path : createPath(path);\n console.warn(\n \"You're trying to submit to a route that does not have an action. To \" +\n \"fix this, please add an `action` function to the route for \" +\n `[${href}]`\n );\n return {\n type: ResultType.error,\n error: new ErrorResponse(405, \"Method Not Allowed\", \"\"),\n };\n}\n\n// Find any returned redirect errors, starting from the lowest match\nfunction findRedirect(results: DataResult[]): RedirectResult | undefined {\n for (let i = results.length - 1; i >= 0; i--) {\n let result = results[i];\n if (isRedirectResult(result)) {\n return result;\n }\n }\n}\n\nfunction stripHashFromPath(path: To) {\n let parsedPath = typeof path === \"string\" ? parsePath(path) : path;\n return createPath({ ...parsedPath, hash: \"\" });\n}\n\nfunction isHashChangeOnly(a: Location, b: Location): boolean {\n return (\n a.pathname === b.pathname && a.search === b.search && a.hash !== b.hash\n );\n}\n\nfunction isDeferredResult(result: DataResult): result is DeferredResult {\n return result.type === ResultType.deferred;\n}\n\nfunction isErrorResult(result: DataResult): result is ErrorResult {\n return result.type === ResultType.error;\n}\n\nfunction isRedirectResult(result?: DataResult): result is RedirectResult {\n return (result && result.type) === ResultType.redirect;\n}\n\nfunction isRedirectResponse(result: any): result is Response {\n if (!(result instanceof Response)) {\n return false;\n }\n\n let status = result.status;\n let location = result.headers.get(\"Location\");\n return status >= 300 && status <= 399 && location != null;\n}\n\nfunction isQueryRouteResponse(obj: any): obj is QueryRouteResponse {\n return (\n obj &&\n obj.response instanceof Response &&\n (obj.type === ResultType.data || ResultType.error)\n );\n}\n\nasync function resolveDeferredResults(\n currentMatches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n signal: AbortSignal,\n isFetcher: boolean,\n currentLoaderData?: RouteData\n) {\n for (let index = 0; index < results.length; index++) {\n let result = results[index];\n let match = matchesToLoad[index];\n let currentMatch = currentMatches.find(\n (m) => m.route.id === match.route.id\n );\n let isRevalidatingLoader =\n currentMatch != null &&\n !isNewRouteInstance(currentMatch, match) &&\n (currentLoaderData && currentLoaderData[match.route.id]) !== undefined;\n\n if (isDeferredResult(result) && (isFetcher || isRevalidatingLoader)) {\n // Note: we do not have to touch activeDeferreds here since we race them\n // against the signal in resolveDeferredData and they'll get aborted\n // there if needed\n await resolveDeferredData(result, signal, isFetcher).then((result) => {\n if (result) {\n results[index] = result || results[index];\n }\n });\n }\n }\n}\n\nasync function resolveDeferredData(\n result: DeferredResult,\n signal: AbortSignal,\n unwrap = false\n): Promise {\n let aborted = await result.deferredData.resolveData(signal);\n if (aborted) {\n return;\n }\n\n if (unwrap) {\n try {\n return {\n type: ResultType.data,\n data: result.deferredData.unwrappedData,\n };\n } catch (e) {\n // Handle any TrackedPromise._error values encountered while unwrapping\n return {\n type: ResultType.error,\n error: e,\n };\n }\n }\n\n return {\n type: ResultType.data,\n data: result.deferredData.data,\n };\n}\n\nfunction hasNakedIndexQuery(search: string): boolean {\n return new URLSearchParams(search).getAll(\"index\").some((v) => v === \"\");\n}\n\n// Note: This should match the format exported by useMatches, so if you change\n// this please also change that :) Eventually we'll DRY this up\nfunction createUseMatchesMatch(\n match: AgnosticDataRouteMatch,\n loaderData: RouteData\n): UseMatchesMatch {\n let { route, pathname, params } = match;\n return {\n id: route.id,\n pathname,\n params,\n data: loaderData[route.id] as unknown,\n handle: route.handle as unknown,\n };\n}\n\nfunction getTargetMatch(\n matches: AgnosticDataRouteMatch[],\n location: Location | string\n) {\n let search =\n typeof location === \"string\" ? parsePath(location).search : location.search;\n if (\n matches[matches.length - 1].route.index &&\n hasNakedIndexQuery(search || \"\")\n ) {\n // Return the leaf index route when index is present\n return matches[matches.length - 1];\n }\n // Otherwise grab the deepest \"path contributing\" match (ignoring index and\n // pathless layout routes)\n let pathMatches = getPathContributingMatches(matches);\n return pathMatches[pathMatches.length - 1];\n}\n//#endregion\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport * as React from \"react\";\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction isPolyfill(x: any, y: any) {\n return (\n (x === y && (x !== 0 || 1 / x === 1 / y)) || (x !== x && y !== y) // eslint-disable-line no-self-compare\n );\n}\n\nconst is: (x: any, y: any) => boolean =\n typeof Object.is === \"function\" ? Object.is : isPolyfill;\n\n// Intentionally not using named imports because Rollup uses dynamic\n// dispatch for CommonJS interop named imports.\nconst { useState, useEffect, useLayoutEffect, useDebugValue } = React;\n\nlet didWarnOld18Alpha = false;\nlet didWarnUncachedGetSnapshot = false;\n\n// Disclaimer: This shim breaks many of the rules of React, and only works\n// because of a very particular set of implementation details and assumptions\n// -- change any one of them and it will break. The most important assumption\n// is that updates are always synchronous, because concurrent rendering is\n// only available in versions of React that also have a built-in\n// useSyncExternalStore API. And we only use this shim when the built-in API\n// does not exist.\n//\n// Do not assume that the clever hacks used by this hook also work in general.\n// The point of this shim is to replace the need for hacks by other libraries.\nexport function useSyncExternalStore(\n subscribe: (fn: () => void) => () => void,\n getSnapshot: () => T,\n // Note: The shim does not use getServerSnapshot, because pre-18 versions of\n // React do not expose a way to check if we're hydrating. So users of the shim\n // will need to track that themselves and return the correct value\n // from `getSnapshot`.\n getServerSnapshot?: () => T\n): T {\n if (__DEV__) {\n if (!didWarnOld18Alpha) {\n if (\"startTransition\" in React) {\n didWarnOld18Alpha = true;\n console.error(\n \"You are using an outdated, pre-release alpha of React 18 that \" +\n \"does not support useSyncExternalStore. The \" +\n \"use-sync-external-store shim will not work correctly. Upgrade \" +\n \"to a newer pre-release.\"\n );\n }\n }\n }\n\n // Read the current snapshot from the store on every render. Again, this\n // breaks the rules of React, and only works here because of specific\n // implementation details, most importantly that updates are\n // always synchronous.\n const value = getSnapshot();\n if (__DEV__) {\n if (!didWarnUncachedGetSnapshot) {\n const cachedValue = getSnapshot();\n if (!is(value, cachedValue)) {\n console.error(\n \"The result of getSnapshot should be cached to avoid an infinite loop\"\n );\n didWarnUncachedGetSnapshot = true;\n }\n }\n }\n\n // Because updates are synchronous, we don't queue them. Instead we force a\n // re-render whenever the subscribed state changes by updating an some\n // arbitrary useState hook. Then, during render, we call getSnapshot to read\n // the current value.\n //\n // Because we don't actually use the state returned by the useState hook, we\n // can save a bit of memory by storing other stuff in that slot.\n //\n // To implement the early bailout, we need to track some things on a mutable\n // object. Usually, we would put that in a useRef hook, but we can stash it in\n // our useState hook instead.\n //\n // To force a re-render, we call forceUpdate({inst}). That works because the\n // new object always fails an equality check.\n const [{ inst }, forceUpdate] = useState({ inst: { value, getSnapshot } });\n\n // Track the latest getSnapshot function with a ref. This needs to be updated\n // in the layout phase so we can access it during the tearing check that\n // happens on subscribe.\n useLayoutEffect(() => {\n inst.value = value;\n inst.getSnapshot = getSnapshot;\n\n // Whenever getSnapshot or subscribe changes, we need to check in the\n // commit phase if there was an interleaved mutation. In concurrent mode\n // this can happen all the time, but even in synchronous mode, an earlier\n // effect may have mutated the store.\n if (checkIfSnapshotChanged(inst)) {\n // Force a re-render.\n forceUpdate({ inst });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [subscribe, value, getSnapshot]);\n\n useEffect(() => {\n // Check for changes right before subscribing. Subsequent changes will be\n // detected in the subscription handler.\n if (checkIfSnapshotChanged(inst)) {\n // Force a re-render.\n forceUpdate({ inst });\n }\n const handleStoreChange = () => {\n // TODO: Because there is no cross-renderer API for batching updates, it's\n // up to the consumer of this library to wrap their subscription event\n // with unstable_batchedUpdates. Should we try to detect when this isn't\n // the case and print a warning in development?\n\n // The store changed. Check if the snapshot changed since the last time we\n // read from the store.\n if (checkIfSnapshotChanged(inst)) {\n // Force a re-render.\n forceUpdate({ inst });\n }\n };\n // Subscribe to the store and return a clean-up function.\n return subscribe(handleStoreChange);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [subscribe]);\n\n useDebugValue(value);\n return value;\n}\n\nfunction checkIfSnapshotChanged(inst: any) {\n const latestGetSnapshot = inst.getSnapshot;\n const prevValue = inst.value;\n try {\n const nextValue = latestGetSnapshot();\n return !is(prevValue, nextValue);\n } catch (error) {\n return true;\n }\n}\n","/**\n * Inlined into the react-router repo since use-sync-external-store does not\n * provide a UMD-compatible package, so we need this to be able to distribute\n * UMD react-router bundles\n */\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @flow\n */\n\nimport * as React from \"react\";\n\nimport { useSyncExternalStore as client } from \"./useSyncExternalStoreShimClient\";\nimport { useSyncExternalStore as server } from \"./useSyncExternalStoreShimServer\";\n\nconst canUseDOM: boolean = !!(\n typeof window !== \"undefined\" &&\n typeof window.document !== \"undefined\" &&\n typeof window.document.createElement !== \"undefined\"\n);\nconst isServerEnvironment = !canUseDOM;\nconst shim = isServerEnvironment ? server : client;\n\nexport const useSyncExternalStore =\n \"useSyncExternalStore\" in React\n ? ((module) => module.useSyncExternalStore)(React)\n : shim;\n","import * as React from \"react\";\nimport type {\n AgnosticRouteMatch,\n AgnosticIndexRouteObject,\n AgnosticNonIndexRouteObject,\n History,\n Location,\n Router,\n StaticHandlerContext,\n To,\n TrackedPromise,\n} from \"@remix-run/router\";\nimport type { Action as NavigationType } from \"@remix-run/router\";\n\n// Create react-specific types from the agnostic types in @remix-run/router to\n// export from react-router\nexport interface IndexRouteObject {\n caseSensitive?: AgnosticIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticIndexRouteObject[\"path\"];\n id?: AgnosticIndexRouteObject[\"id\"];\n loader?: AgnosticIndexRouteObject[\"loader\"];\n action?: AgnosticIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticIndexRouteObject[\"handle\"];\n index: true;\n children?: undefined;\n element?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n}\n\nexport interface NonIndexRouteObject {\n caseSensitive?: AgnosticNonIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticNonIndexRouteObject[\"path\"];\n id?: AgnosticNonIndexRouteObject[\"id\"];\n loader?: AgnosticNonIndexRouteObject[\"loader\"];\n action?: AgnosticNonIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticNonIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticNonIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticNonIndexRouteObject[\"handle\"];\n index?: false;\n children?: RouteObject[];\n element?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n}\n\nexport type RouteObject = IndexRouteObject | NonIndexRouteObject;\n\nexport type DataRouteObject = RouteObject & {\n children?: DataRouteObject[];\n id: string;\n};\n\nexport interface RouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends RouteObject = RouteObject\n> extends AgnosticRouteMatch {}\n\nexport interface DataRouteMatch extends RouteMatch {}\n\n// Contexts for data routers\nexport const DataStaticRouterContext =\n React.createContext(null);\nif (__DEV__) {\n DataStaticRouterContext.displayName = \"DataStaticRouterContext\";\n}\n\nexport interface DataRouterContextObject extends NavigationContextObject {\n router: Router;\n}\n\nexport const DataRouterContext =\n React.createContext(null);\nif (__DEV__) {\n DataRouterContext.displayName = \"DataRouter\";\n}\n\nexport const DataRouterStateContext = React.createContext<\n Router[\"state\"] | null\n>(null);\nif (__DEV__) {\n DataRouterStateContext.displayName = \"DataRouterState\";\n}\n\nexport const AwaitContext = React.createContext(null);\nif (__DEV__) {\n AwaitContext.displayName = \"Await\";\n}\n\nexport type RelativeRoutingType = \"route\" | \"path\";\n\nexport interface NavigateOptions {\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n}\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport interface Navigator {\n createHref: History[\"createHref\"];\n go: History[\"go\"];\n push(to: To, state?: any, opts?: NavigateOptions): void;\n replace(to: To, state?: any, opts?: NavigateOptions): void;\n}\n\ninterface NavigationContextObject {\n basename: string;\n navigator: Navigator;\n static: boolean;\n}\n\nexport const NavigationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n location: Location;\n navigationType: NavigationType;\n}\n\nexport const LocationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n LocationContext.displayName = \"Location\";\n}\n\nexport interface RouteContextObject {\n outlet: React.ReactElement | null;\n matches: RouteMatch[];\n}\n\nexport const RouteContext = React.createContext({\n outlet: null,\n matches: [],\n});\n\nif (__DEV__) {\n RouteContext.displayName = \"Route\";\n}\n\nexport const RouteErrorContext = React.createContext(null);\n\nif (__DEV__) {\n RouteErrorContext.displayName = \"RouteError\";\n}\n","import * as React from \"react\";\nimport type {\n Location,\n ParamParseKey,\n Params,\n Path,\n PathMatch,\n PathPattern,\n Router as RemixRouter,\n To,\n} from \"@remix-run/router\";\nimport {\n Action as NavigationType,\n invariant,\n isRouteErrorResponse,\n joinPaths,\n matchPath,\n matchRoutes,\n parsePath,\n resolveTo,\n warning,\n UNSAFE_getPathContributingMatches as getPathContributingMatches,\n} from \"@remix-run/router\";\n\nimport type {\n NavigateOptions,\n RouteContextObject,\n RouteMatch,\n RouteObject,\n DataRouteMatch,\n RelativeRoutingType,\n} from \"./context\";\nimport {\n DataRouterContext,\n DataRouterStateContext,\n LocationContext,\n NavigationContext,\n RouteContext,\n RouteErrorContext,\n AwaitContext,\n DataStaticRouterContext,\n} from \"./context\";\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/docs/en/v6/hooks/use-href\n */\nexport function useHref(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): string {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useHref() may be used only in the context of a component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { hash, pathname, search } = useResolvedPath(to, { relative });\n\n let joinedPathname = pathname;\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to creating the href. If this is a root navigation, then just use the raw\n // basename which allows the basename to have full control over the presence\n // of a trailing slash on root links\n if (basename !== \"/\") {\n joinedPathname =\n pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n }\n\n return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a .\n *\n * @see https://reactrouter.com/docs/en/v6/hooks/use-in-router-context\n */\nexport function useInRouterContext(): boolean {\n return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/docs/en/v6/hooks/use-location\n */\nexport function useLocation(): Location {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useLocation() may be used only in the context of a component.`\n );\n\n return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/docs/en/v6/hooks/use-navigation-type\n */\nexport function useNavigationType(): NavigationType {\n return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns true if the URL for the given \"to\" value matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * .\n *\n * @see https://reactrouter.com/docs/en/v6/hooks/use-match\n */\nexport function useMatch<\n ParamKey extends ParamParseKey,\n Path extends string\n>(pattern: PathPattern | Path): PathMatch | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useMatch() may be used only in the context of a component.`\n );\n\n let { pathname } = useLocation();\n return React.useMemo(\n () => matchPath(pattern, pathname),\n [pathname, pattern]\n );\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n (to: To, options?: NavigateOptions): void;\n (delta: number): void;\n}\n\n/**\n * Returns an imperative method for changing the location. Used by s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/docs/en/v6/hooks/use-navigate\n */\nexport function useNavigate(): NavigateFunction {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useNavigate() may be used only in the context of a component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n getPathContributingMatches(matches).map((match) => match.pathnameBase)\n );\n\n let activeRef = React.useRef(false);\n React.useEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(\n activeRef.current,\n `You should call navigate() in a React.useEffect(), not when ` +\n `your component is first rendered.`\n );\n\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n navigator.go(to);\n return;\n }\n\n let path = resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n options.relative === \"path\"\n );\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to handing off to history. If this is a root navigation, then we\n // navigate to the raw basename which allows the basename to have full\n // control over the presence of a trailing slash on root links\n if (basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\"\n ? basename\n : joinPaths([basename, path.pathname]);\n }\n\n (!!options.replace ? navigator.replace : navigator.push)(\n path,\n options.state,\n options\n );\n },\n [basename, navigator, routePathnamesJson, locationPathname]\n );\n\n return navigate;\n}\n\nconst OutletContext = React.createContext(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/docs/en/v6/hooks/use-outlet-context\n */\nexport function useOutletContext(): Context {\n return React.useContext(OutletContext) as Context;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by to render child routes.\n *\n * @see https://reactrouter.com/docs/en/v6/hooks/use-outlet\n */\nexport function useOutlet(context?: unknown): React.ReactElement | null {\n let outlet = React.useContext(RouteContext).outlet;\n if (outlet) {\n return (\n {outlet}\n );\n }\n return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/docs/en/v6/hooks/use-params\n */\nexport function useParams<\n ParamsOrKey extends string | Record = string\n>(): Readonly<\n [ParamsOrKey] extends [string] ? Params : Partial\n> {\n let { matches } = React.useContext(RouteContext);\n let routeMatch = matches[matches.length - 1];\n return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/docs/en/v6/hooks/use-resolved-path\n */\nexport function useResolvedPath(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): Path {\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n getPathContributingMatches(matches).map((match) => match.pathnameBase)\n );\n\n return React.useMemo(\n () =>\n resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n relative === \"path\"\n ),\n [to, routePathnamesJson, locationPathname, relative]\n );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an to render their child route's\n * element.\n *\n * @see https://reactrouter.com/docs/en/v6/hooks/use-routes\n */\nexport function useRoutes(\n routes: RouteObject[],\n locationArg?: Partial | string\n): React.ReactElement | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useRoutes() may be used only in the context of a component.`\n );\n\n let dataRouterStateContext = React.useContext(DataRouterStateContext);\n let { matches: parentMatches } = React.useContext(RouteContext);\n let routeMatch = parentMatches[parentMatches.length - 1];\n let parentParams = routeMatch ? routeMatch.params : {};\n let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n let parentRoute = routeMatch && routeMatch.route;\n\n if (__DEV__) {\n // You won't get a warning about 2 different under a \n // without a trailing *, but this is a best-effort warning anyway since we\n // cannot even give the warning unless they land at the parent route.\n //\n // Example:\n //\n // \n // {/* This route path MUST end with /* because otherwise\n // it will never match /blog/post/123 */}\n // } />\n // } />\n // \n //\n // function Blog() {\n // return (\n // \n // } />\n // \n // );\n // }\n let parentPath = (parentRoute && parentRoute.path) || \"\";\n warningOnce(\n parentPathname,\n !parentRoute || parentPath.endsWith(\"*\"),\n `You rendered descendant (or called \\`useRoutes()\\`) at ` +\n `\"${parentPathname}\" (under ) but the ` +\n `parent route path has no trailing \"*\". This means if you navigate ` +\n `deeper, the parent won't match anymore and therefore the child ` +\n `routes will never render.\\n\\n` +\n `Please change the parent to .`\n );\n }\n\n let locationFromContext = useLocation();\n\n let location;\n if (locationArg) {\n let parsedLocationArg =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n invariant(\n parentPathnameBase === \"/\" ||\n parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n `When overriding the location using \\`\\` or \\`useRoutes(routes, location)\\`, ` +\n `the location pathname must begin with the portion of the URL pathname that was ` +\n `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n );\n\n location = parsedLocationArg;\n } else {\n location = locationFromContext;\n }\n\n let pathname = location.pathname || \"/\";\n let remainingPathname =\n parentPathnameBase === \"/\"\n ? pathname\n : pathname.slice(parentPathnameBase.length) || \"/\";\n\n let matches = matchRoutes(routes, { pathname: remainingPathname });\n\n if (__DEV__) {\n warning(\n parentRoute || matches != null,\n `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n );\n\n warning(\n matches == null ||\n matches[matches.length - 1].route.element !== undefined,\n `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" does not have an element. ` +\n `This means it will render an with a null value by default resulting in an \"empty\" page.`\n );\n }\n\n let renderedMatches = _renderMatches(\n matches &&\n matches.map((match) =>\n Object.assign({}, match, {\n params: Object.assign({}, parentParams, match.params),\n pathname: joinPaths([parentPathnameBase, match.pathname]),\n pathnameBase:\n match.pathnameBase === \"/\"\n ? parentPathnameBase\n : joinPaths([parentPathnameBase, match.pathnameBase]),\n })\n ),\n parentMatches,\n dataRouterStateContext || undefined\n );\n\n // When a user passes in a `locationArg`, the associated routes need to\n // be wrapped in a new `LocationContext.Provider` in order for `useLocation`\n // to use the scoped location instead of the global location.\n if (locationArg && renderedMatches) {\n return (\n \n {renderedMatches}\n \n );\n }\n\n return renderedMatches;\n}\n\nfunction DefaultErrorElement() {\n let error = useRouteError();\n let message = isRouteErrorResponse(error)\n ? `${error.status} ${error.statusText}`\n : error instanceof Error\n ? error.message\n : JSON.stringify(error);\n let stack = error instanceof Error ? error.stack : null;\n let lightgrey = \"rgba(200,200,200, 0.5)\";\n let preStyles = { padding: \"0.5rem\", backgroundColor: lightgrey };\n let codeStyles = { padding: \"2px 4px\", backgroundColor: lightgrey };\n return (\n <>\n

Unhandled Thrown Error!

\n

{message}

\n {stack ?
{stack}
: null}\n

💿 Hey developer 👋

\n

\n You can provide a way better UX than this when your app throws errors by\n providing your own \n errorElement props on \n <Route>\n

\n \n );\n}\n\ntype RenderErrorBoundaryProps = React.PropsWithChildren<{\n location: Location;\n error: any;\n component: React.ReactNode;\n}>;\n\ntype RenderErrorBoundaryState = {\n location: Location;\n error: any;\n};\n\nexport class RenderErrorBoundary extends React.Component<\n RenderErrorBoundaryProps,\n RenderErrorBoundaryState\n> {\n constructor(props: RenderErrorBoundaryProps) {\n super(props);\n this.state = {\n location: props.location,\n error: props.error,\n };\n }\n\n static getDerivedStateFromError(error: any) {\n return { error: error };\n }\n\n static getDerivedStateFromProps(\n props: RenderErrorBoundaryProps,\n state: RenderErrorBoundaryState\n ) {\n // When we get into an error state, the user will likely click \"back\" to the\n // previous page that didn't have an error. Because this wraps the entire\n // application, that will have no effect--the error page continues to display.\n // This gives us a mechanism to recover from the error when the location changes.\n //\n // Whether we're in an error state or not, we update the location in state\n // so that when we are in an error state, it gets reset when a new location\n // comes in and the user recovers from the error.\n if (state.location !== props.location) {\n return {\n error: props.error,\n location: props.location,\n };\n }\n\n // If we're not changing locations, preserve the location but still surface\n // any new errors that may come through. We retain the existing error, we do\n // this because the error provided from the app state may be cleared without\n // the location changing.\n return {\n error: props.error || state.error,\n location: state.location,\n };\n }\n\n componentDidCatch(error: any, errorInfo: any) {\n console.error(\n \"React Router caught the following error during render\",\n error,\n errorInfo\n );\n }\n\n render() {\n return this.state.error ? (\n \n ) : (\n this.props.children\n );\n }\n}\n\ninterface RenderedRouteProps {\n routeContext: RouteContextObject;\n match: RouteMatch;\n children: React.ReactNode | null;\n}\n\nfunction RenderedRoute({ routeContext, match, children }: RenderedRouteProps) {\n let dataStaticRouterContext = React.useContext(DataStaticRouterContext);\n\n // Track how deep we got in our render pass to emulate SSR componentDidCatch\n // in a DataStaticRouter\n if (dataStaticRouterContext && match.route.errorElement) {\n dataStaticRouterContext._deepestRenderedBoundaryId = match.route.id;\n }\n\n return (\n \n {children}\n \n );\n}\n\nexport function _renderMatches(\n matches: RouteMatch[] | null,\n parentMatches: RouteMatch[] = [],\n dataRouterState?: RemixRouter[\"state\"]\n): React.ReactElement | null {\n if (matches == null) {\n if (dataRouterState?.errors) {\n // Don't bail if we have data router errors so we can render them in the\n // boundary. Use the pre-matched (or shimmed) matches\n matches = dataRouterState.matches as DataRouteMatch[];\n } else {\n return null;\n }\n }\n\n let renderedMatches = matches;\n\n // If we have data errors, trim matches to the highest error boundary\n let errors = dataRouterState?.errors;\n if (errors != null) {\n let errorIndex = renderedMatches.findIndex(\n (m) => m.route.id && errors?.[m.route.id]\n );\n invariant(\n errorIndex >= 0,\n `Could not find a matching route for the current errors: ${errors}`\n );\n renderedMatches = renderedMatches.slice(\n 0,\n Math.min(renderedMatches.length, errorIndex + 1)\n );\n }\n\n return renderedMatches.reduceRight((outlet, match, index) => {\n let error = match.route.id ? errors?.[match.route.id] : null;\n // Only data routers handle errors\n let errorElement = dataRouterState\n ? match.route.errorElement || \n : null;\n let getChildren = () => (\n \n {error\n ? errorElement\n : match.route.element !== undefined\n ? match.route.element\n : outlet}\n \n );\n // Only wrap in an error boundary within data router usages when we have an\n // errorElement on this route. Otherwise let it bubble up to an ancestor\n // errorElement\n return dataRouterState && (match.route.errorElement || index === 0) ? (\n \n ) : (\n getChildren()\n );\n }, null as React.ReactElement | null);\n}\n\nenum DataRouterHook {\n UseRevalidator = \"useRevalidator\",\n}\n\nenum DataRouterStateHook {\n UseLoaderData = \"useLoaderData\",\n UseActionData = \"useActionData\",\n UseRouteError = \"useRouteError\",\n UseNavigation = \"useNavigation\",\n UseRouteLoaderData = \"useRouteLoaderData\",\n UseMatches = \"useMatches\",\n UseRevalidator = \"useRevalidator\",\n}\n\nfunction getDataRouterConsoleError(\n hookName: DataRouterHook | DataRouterStateHook\n) {\n return `${hookName} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`;\n}\n\nfunction useDataRouterContext(hookName: DataRouterHook) {\n let ctx = React.useContext(DataRouterContext);\n invariant(ctx, getDataRouterConsoleError(hookName));\n return ctx;\n}\n\nfunction useDataRouterState(hookName: DataRouterStateHook) {\n let state = React.useContext(DataRouterStateContext);\n invariant(state, getDataRouterConsoleError(hookName));\n return state;\n}\n\n/**\n * Returns the current navigation, defaulting to an \"idle\" navigation when\n * no navigation is in progress\n */\nexport function useNavigation() {\n let state = useDataRouterState(DataRouterStateHook.UseNavigation);\n return state.navigation;\n}\n\n/**\n * Returns a revalidate function for manually triggering revalidation, as well\n * as the current state of any manual revalidations\n */\nexport function useRevalidator() {\n let dataRouterContext = useDataRouterContext(DataRouterHook.UseRevalidator);\n let state = useDataRouterState(DataRouterStateHook.UseRevalidator);\n return {\n revalidate: dataRouterContext.router.revalidate,\n state: state.revalidation,\n };\n}\n\n/**\n * Returns the active route matches, useful for accessing loaderData for\n * parent/child routes or the route \"handle\" property\n */\nexport function useMatches() {\n let { matches, loaderData } = useDataRouterState(\n DataRouterStateHook.UseMatches\n );\n return React.useMemo(\n () =>\n matches.map((match) => {\n let { pathname, params } = match;\n // Note: This structure matches that created by createUseMatchesMatch\n // in the @remix-run/router , so if you change this please also change\n // that :) Eventually we'll DRY this up\n return {\n id: match.route.id,\n pathname,\n params,\n data: loaderData[match.route.id] as unknown,\n handle: match.route.handle as unknown,\n };\n }),\n [matches, loaderData]\n );\n}\n\n/**\n * Returns the loader data for the nearest ancestor Route loader\n */\nexport function useLoaderData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseLoaderData);\n\n let route = React.useContext(RouteContext);\n invariant(route, `useLoaderData must be used inside a RouteContext`);\n\n let thisRoute = route.matches[route.matches.length - 1];\n invariant(\n thisRoute.route.id,\n `useLoaderData can only be used on routes that contain a unique \"id\"`\n );\n\n return state.loaderData[thisRoute.route.id];\n}\n\n/**\n * Returns the loaderData for the given routeId\n */\nexport function useRouteLoaderData(routeId: string): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseRouteLoaderData);\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the action data for the nearest ancestor Route action\n */\nexport function useActionData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseActionData);\n\n let route = React.useContext(RouteContext);\n invariant(route, `useActionData must be used inside a RouteContext`);\n\n return Object.values(state?.actionData || {})[0];\n}\n\n/**\n * Returns the nearest ancestor Route error, which could be a loader/action\n * error or a render error. This is intended to be called from your\n * errorElement to display a proper error message.\n */\nexport function useRouteError(): unknown {\n let error = React.useContext(RouteErrorContext);\n let state = useDataRouterState(DataRouterStateHook.UseRouteError);\n let route = React.useContext(RouteContext);\n let thisRoute = route.matches[route.matches.length - 1];\n\n // If this was a render error, we put it in a RouteError context inside\n // of RenderErrorBoundary\n if (error) {\n return error;\n }\n\n invariant(route, `useRouteError must be used inside a RouteContext`);\n invariant(\n thisRoute.route.id,\n `useRouteError can only be used on routes that contain a unique \"id\"`\n );\n\n // Otherwise look for errors from our data router state\n return state.errors?.[thisRoute.route.id];\n}\n\n/**\n * Returns the happy-path data from the nearest ancestor value\n */\nexport function useAsyncValue(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._data;\n}\n\n/**\n * Returns the error from the nearest ancestor value\n */\nexport function useAsyncError(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._error;\n}\n\nconst alreadyWarned: Record = {};\n\nfunction warningOnce(key: string, cond: boolean, message: string) {\n if (!cond && !alreadyWarned[key]) {\n alreadyWarned[key] = true;\n warning(false, message);\n }\n}\n","import * as React from \"react\";\nimport type {\n TrackedPromise,\n InitialEntry,\n Location,\n MemoryHistory,\n Router as RemixRouter,\n RouterState,\n To,\n} from \"@remix-run/router\";\nimport {\n Action as NavigationType,\n AbortedDeferredError,\n createMemoryHistory,\n invariant,\n parsePath,\n stripBasename,\n warning,\n} from \"@remix-run/router\";\nimport { useSyncExternalStore as useSyncExternalStoreShim } from \"./use-sync-external-store-shim\";\n\nimport type {\n DataRouteObject,\n IndexRouteObject,\n RouteMatch,\n RouteObject,\n Navigator,\n NonIndexRouteObject,\n RelativeRoutingType,\n} from \"./context\";\nimport {\n LocationContext,\n NavigationContext,\n DataRouterContext,\n DataRouterStateContext,\n AwaitContext,\n} from \"./context\";\nimport {\n useAsyncValue,\n useInRouterContext,\n useNavigate,\n useOutlet,\n useRoutes,\n _renderMatches,\n} from \"./hooks\";\n\nexport interface RouterProviderProps {\n fallbackElement?: React.ReactNode;\n router: RemixRouter;\n}\n\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nexport function RouterProvider({\n fallbackElement,\n router,\n}: RouterProviderProps): React.ReactElement {\n // Sync router state to our component state to force re-renders\n let state: RouterState = useSyncExternalStoreShim(\n router.subscribe,\n () => router.state,\n // We have to provide this so React@18 doesn't complain during hydration,\n // but we pass our serialized hydration data into the router so state here\n // is already synced with what the server saw\n () => router.state\n );\n\n let navigator = React.useMemo((): Navigator => {\n return {\n createHref: router.createHref,\n go: (n) => router.navigate(n),\n push: (to, state, opts) =>\n router.navigate(to, {\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n replace: (to, state, opts) =>\n router.navigate(to, {\n replace: true,\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n };\n }, [router]);\n\n let basename = router.basename || \"/\";\n\n return (\n \n \n \n {router.state.initialized ? : fallbackElement}\n
\n \n \n );\n}\n\nexport interface MemoryRouterProps {\n basename?: string;\n children?: React.ReactNode;\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n}\n\n/**\n * A that stores all entries in memory.\n *\n * @see https://reactrouter.com/docs/en/v6/routers/memory-router\n */\nexport function MemoryRouter({\n basename,\n children,\n initialEntries,\n initialIndex,\n}: MemoryRouterProps): React.ReactElement {\n let historyRef = React.useRef();\n if (historyRef.current == null) {\n historyRef.current = createMemoryHistory({\n initialEntries,\n initialIndex,\n v5Compat: true,\n });\n }\n\n let history = historyRef.current;\n let [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n \n );\n}\n\nexport interface NavigateProps {\n to: To;\n replace?: boolean;\n state?: any;\n relative?: RelativeRoutingType;\n}\n\n/**\n * Changes the current location.\n *\n * Note: This API is mostly useful in React.Component subclasses that are not\n * able to use hooks. In functional components, we recommend you use the\n * `useNavigate` hook instead.\n *\n * @see https://reactrouter.com/docs/en/v6/components/navigate\n */\nexport function Navigate({\n to,\n replace,\n state,\n relative,\n}: NavigateProps): null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of\n // the router loaded. We can help them understand how to avoid that.\n ` may be used only in the context of a component.`\n );\n\n warning(\n !React.useContext(NavigationContext).static,\n ` must not be used on the initial render in a . ` +\n `This is a no-op, but you should modify your code so the is ` +\n `only ever rendered in response to some user interaction or state change.`\n );\n\n let dataRouterState = React.useContext(DataRouterStateContext);\n let navigate = useNavigate();\n\n React.useEffect(() => {\n // Avoid kicking off multiple navigations if we're in the middle of a\n // data-router navigation, since components get re-rendered when we enter\n // a submitting/loading state\n if (dataRouterState && dataRouterState.navigation.state !== \"idle\") {\n return;\n }\n navigate(to, { replace, state, relative });\n });\n\n return null;\n}\n\nexport interface OutletProps {\n context?: unknown;\n}\n\n/**\n * Renders the child route's element, if there is one.\n *\n * @see https://reactrouter.com/docs/en/v6/components/outlet\n */\nexport function Outlet(props: OutletProps): React.ReactElement | null {\n return useOutlet(props.context);\n}\n\nexport interface PathRouteProps {\n caseSensitive?: NonIndexRouteObject[\"caseSensitive\"];\n path?: NonIndexRouteObject[\"path\"];\n id?: NonIndexRouteObject[\"id\"];\n loader?: NonIndexRouteObject[\"loader\"];\n action?: NonIndexRouteObject[\"action\"];\n hasErrorBoundary?: NonIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: NonIndexRouteObject[\"shouldRevalidate\"];\n handle?: NonIndexRouteObject[\"handle\"];\n index?: false;\n children?: React.ReactNode;\n element?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n}\n\nexport interface LayoutRouteProps extends PathRouteProps {}\n\nexport interface IndexRouteProps {\n caseSensitive?: IndexRouteObject[\"caseSensitive\"];\n path?: IndexRouteObject[\"path\"];\n id?: IndexRouteObject[\"id\"];\n loader?: IndexRouteObject[\"loader\"];\n action?: IndexRouteObject[\"action\"];\n hasErrorBoundary?: IndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: IndexRouteObject[\"shouldRevalidate\"];\n handle?: IndexRouteObject[\"handle\"];\n index: true;\n children?: undefined;\n element?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n}\n\nexport type RouteProps = PathRouteProps | LayoutRouteProps | IndexRouteProps;\n\n/**\n * Declares an element that should be rendered at a certain URL path.\n *\n * @see https://reactrouter.com/docs/en/v6/components/route\n */\nexport function Route(_props: RouteProps): React.ReactElement | null {\n invariant(\n false,\n `A is only ever to be used as the child of element, ` +\n `never rendered directly. Please wrap your in a .`\n );\n}\n\nexport interface RouterProps {\n basename?: string;\n children?: React.ReactNode;\n location: Partial | string;\n navigationType?: NavigationType;\n navigator: Navigator;\n static?: boolean;\n}\n\n/**\n * Provides location context for the rest of the app.\n *\n * Note: You usually won't render a directly. Instead, you'll render a\n * router that is more specific to your environment such as a \n * in web browsers or a for server rendering.\n *\n * @see https://reactrouter.com/docs/en/v6/routers/router\n */\nexport function Router({\n basename: basenameProp = \"/\",\n children = null,\n location: locationProp,\n navigationType = NavigationType.Pop,\n navigator,\n static: staticProp = false,\n}: RouterProps): React.ReactElement | null {\n invariant(\n !useInRouterContext(),\n `You cannot render a inside another .` +\n ` You should never have more than one in your app.`\n );\n\n // Preserve trailing slashes on basename, so we can let the user control\n // the enforcement of trailing slashes throughout the app\n let basename = basenameProp.replace(/^\\/*/, \"/\");\n let navigationContext = React.useMemo(\n () => ({ basename, navigator, static: staticProp }),\n [basename, navigator, staticProp]\n );\n\n if (typeof locationProp === \"string\") {\n locationProp = parsePath(locationProp);\n }\n\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n state = null,\n key = \"default\",\n } = locationProp;\n\n let location = React.useMemo(() => {\n let trailingPathname = stripBasename(pathname, basename);\n\n if (trailingPathname == null) {\n return null;\n }\n\n return {\n pathname: trailingPathname,\n search,\n hash,\n state,\n key,\n };\n }, [basename, pathname, search, hash, state, key]);\n\n warning(\n location != null,\n ` is not able to match the URL ` +\n `\"${pathname}${search}${hash}\" because it does not start with the ` +\n `basename, so the won't render anything.`\n );\n\n if (location == null) {\n return null;\n }\n\n return (\n \n \n \n );\n}\n\nexport interface RoutesProps {\n children?: React.ReactNode;\n location?: Partial | string;\n}\n\n/**\n * A container for a nested tree of elements that renders the branch\n * that best matches the current location.\n *\n * @see https://reactrouter.com/docs/en/v6/components/routes\n */\nexport function Routes({\n children,\n location,\n}: RoutesProps): React.ReactElement | null {\n let dataRouterContext = React.useContext(DataRouterContext);\n // When in a DataRouterContext _without_ children, we use the router routes\n // directly. If we have children, then we're in a descendant tree and we\n // need to use child routes.\n let routes =\n dataRouterContext && !children\n ? (dataRouterContext.router.routes as DataRouteObject[])\n : createRoutesFromChildren(children);\n return useRoutes(routes, location);\n}\n\nexport interface AwaitResolveRenderFunction {\n (data: Awaited): React.ReactElement;\n}\n\nexport interface AwaitProps {\n children: React.ReactNode | AwaitResolveRenderFunction;\n errorElement?: React.ReactNode;\n resolve: TrackedPromise | any;\n}\n\n/**\n * Component to use for rendering lazily loaded data from returning defer()\n * in a loader function\n */\nexport function Await({ children, errorElement, resolve }: AwaitProps) {\n return (\n \n {children}\n \n );\n}\n\ntype AwaitErrorBoundaryProps = React.PropsWithChildren<{\n errorElement?: React.ReactNode;\n resolve: TrackedPromise | any;\n}>;\n\ntype AwaitErrorBoundaryState = {\n error: any;\n};\n\nenum AwaitRenderStatus {\n pending,\n success,\n error,\n}\n\nconst neverSettledPromise = new Promise(() => {});\n\nclass AwaitErrorBoundary extends React.Component<\n AwaitErrorBoundaryProps,\n AwaitErrorBoundaryState\n> {\n constructor(props: AwaitErrorBoundaryProps) {\n super(props);\n this.state = { error: null };\n }\n\n static getDerivedStateFromError(error: any) {\n return { error };\n }\n\n componentDidCatch(error: any, errorInfo: any) {\n console.error(\n \" caught the following error during render\",\n error,\n errorInfo\n );\n }\n\n render() {\n let { children, errorElement, resolve } = this.props;\n\n let promise: TrackedPromise | null = null;\n let status: AwaitRenderStatus = AwaitRenderStatus.pending;\n\n if (!(resolve instanceof Promise)) {\n // Didn't get a promise - provide as a resolved promise\n status = AwaitRenderStatus.success;\n promise = Promise.resolve();\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n Object.defineProperty(promise, \"_data\", { get: () => resolve });\n } else if (this.state.error) {\n // Caught a render error, provide it as a rejected promise\n status = AwaitRenderStatus.error;\n let renderError = this.state.error;\n promise = Promise.reject().catch(() => {}); // Avoid unhandled rejection warnings\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n Object.defineProperty(promise, \"_error\", { get: () => renderError });\n } else if ((resolve as TrackedPromise)._tracked) {\n // Already tracked promise - check contents\n promise = resolve;\n status =\n promise._error !== undefined\n ? AwaitRenderStatus.error\n : promise._data !== undefined\n ? AwaitRenderStatus.success\n : AwaitRenderStatus.pending;\n } else {\n // Raw (untracked) promise - track it\n status = AwaitRenderStatus.pending;\n Object.defineProperty(resolve, \"_tracked\", { get: () => true });\n promise = resolve.then(\n (data: any) =>\n Object.defineProperty(resolve, \"_data\", { get: () => data }),\n (error: any) =>\n Object.defineProperty(resolve, \"_error\", { get: () => error })\n );\n }\n\n if (\n status === AwaitRenderStatus.error &&\n promise._error instanceof AbortedDeferredError\n ) {\n // Freeze the UI by throwing a never resolved promise\n throw neverSettledPromise;\n }\n\n if (status === AwaitRenderStatus.error && !errorElement) {\n // No errorElement, throw to the nearest route-level error boundary\n throw promise._error;\n }\n\n if (status === AwaitRenderStatus.error) {\n // Render via our errorElement\n return ;\n }\n\n if (status === AwaitRenderStatus.success) {\n // Render children with resolved value\n return ;\n }\n\n // Throw to the suspense boundary\n throw promise;\n }\n}\n\n/**\n * @private\n * Indirection to leverage useAsyncValue for a render-prop API on \n */\nfunction ResolveAwait({\n children,\n}: {\n children: React.ReactNode | AwaitResolveRenderFunction;\n}) {\n let data = useAsyncValue();\n if (typeof children === \"function\") {\n return children(data);\n }\n return <>{children};\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// UTILS\n///////////////////////////////////////////////////////////////////////////////\n\n/**\n * Creates a route config from a React \"children\" object, which is usually\n * either a `` element or an array of them. Used internally by\n * `` to create a route config from its children.\n *\n * @see https://reactrouter.com/docs/en/v6/utils/create-routes-from-children\n */\nexport function createRoutesFromChildren(\n children: React.ReactNode,\n parentPath: number[] = []\n): RouteObject[] {\n let routes: RouteObject[] = [];\n\n React.Children.forEach(children, (element, index) => {\n if (!React.isValidElement(element)) {\n // Ignore non-elements. This allows people to more easily inline\n // conditionals in their route config.\n return;\n }\n\n if (element.type === React.Fragment) {\n // Transparently support React.Fragment and its children.\n routes.push.apply(\n routes,\n createRoutesFromChildren(element.props.children, parentPath)\n );\n return;\n }\n\n invariant(\n element.type === Route,\n `[${\n typeof element.type === \"string\" ? element.type : element.type.name\n }] is not a component. All component children of must be a or `\n );\n\n invariant(\n !element.props.index || !element.props.children,\n \"An index route cannot have child routes.\"\n );\n\n let treePath = [...parentPath, index];\n let route: RouteObject = {\n id: element.props.id || treePath.join(\"-\"),\n caseSensitive: element.props.caseSensitive,\n element: element.props.element,\n index: element.props.index,\n path: element.props.path,\n loader: element.props.loader,\n action: element.props.action,\n errorElement: element.props.errorElement,\n hasErrorBoundary: element.props.errorElement != null,\n shouldRevalidate: element.props.shouldRevalidate,\n handle: element.props.handle,\n };\n\n if (element.props.children) {\n route.children = createRoutesFromChildren(\n element.props.children,\n treePath\n );\n }\n\n routes.push(route);\n });\n\n return routes;\n}\n\n/**\n * Renders the result of `matchRoutes()` into a React element.\n */\nexport function renderMatches(\n matches: RouteMatch[] | null\n): React.ReactElement | null {\n return _renderMatches(matches);\n}\n\n/**\n * @private\n * Walk the route tree and add hasErrorBoundary if it's not provided, so that\n * users providing manual route arrays can just specify errorElement\n */\nexport function enhanceManualRouteObjects(\n routes: RouteObject[]\n): RouteObject[] {\n return routes.map((route) => {\n let routeClone = { ...route };\n if (routeClone.hasErrorBoundary == null) {\n routeClone.hasErrorBoundary = routeClone.errorElement != null;\n }\n if (routeClone.children) {\n routeClone.children = enhanceManualRouteObjects(routeClone.children);\n }\n return routeClone;\n });\n}\n","/**\n * NOTE: If you refactor this to split up the modules into separate files,\n * you'll need to update the rollup config for react-router-dom-v5-compat.\n */\nimport * as React from \"react\";\nimport type {\n NavigateOptions,\n RelativeRoutingType,\n RouteObject,\n To,\n} from \"react-router\";\nimport {\n Router,\n createPath,\n useHref,\n useLocation,\n useMatch,\n useMatches,\n useNavigate,\n useNavigation,\n useResolvedPath,\n UNSAFE_DataRouterContext as DataRouterContext,\n UNSAFE_DataRouterStateContext as DataRouterStateContext,\n UNSAFE_NavigationContext as NavigationContext,\n UNSAFE_RouteContext as RouteContext,\n UNSAFE_enhanceManualRouteObjects as enhanceManualRouteObjects,\n} from \"react-router\";\nimport type {\n BrowserHistory,\n Fetcher,\n FormEncType,\n FormMethod,\n GetScrollRestorationKeyFunction,\n HashHistory,\n History,\n HydrationState,\n Router as RemixRouter,\n} from \"@remix-run/router\";\nimport {\n createRouter,\n createBrowserHistory,\n createHashHistory,\n invariant,\n joinPaths,\n matchPath,\n} from \"@remix-run/router\";\n\nimport type {\n SubmitOptions,\n ParamKeyValuePair,\n URLSearchParamsInit,\n} from \"./dom\";\nimport {\n createSearchParams,\n defaultMethod,\n getFormSubmissionInfo,\n getSearchParamsForLocation,\n shouldProcessLinkClick,\n} from \"./dom\";\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Re-exports\n////////////////////////////////////////////////////////////////////////////////\n\nexport type {\n FormEncType,\n FormMethod,\n ParamKeyValuePair,\n SubmitOptions,\n URLSearchParamsInit,\n};\nexport { createSearchParams };\n\n// Note: Keep in sync with react-router exports!\nexport type {\n ActionFunction,\n ActionFunctionArgs,\n AwaitProps,\n DataRouteMatch,\n DataRouteObject,\n Fetcher,\n Hash,\n IndexRouteObject,\n IndexRouteProps,\n JsonFunction,\n LayoutRouteProps,\n LoaderFunction,\n LoaderFunctionArgs,\n Location,\n MemoryRouterProps,\n NavigateFunction,\n NavigateOptions,\n NavigateProps,\n Navigation,\n Navigator,\n NonIndexRouteObject,\n OutletProps,\n Params,\n ParamParseKey,\n Path,\n PathMatch,\n Pathname,\n PathPattern,\n PathRouteProps,\n RedirectFunction,\n RelativeRoutingType,\n RouteMatch,\n RouteObject,\n RouteProps,\n RouterProps,\n RouterProviderProps,\n RoutesProps,\n Search,\n ShouldRevalidateFunction,\n To,\n} from \"react-router\";\nexport {\n AbortedDeferredError,\n Await,\n MemoryRouter,\n Navigate,\n NavigationType,\n Outlet,\n Route,\n Router,\n RouterProvider,\n Routes,\n createMemoryRouter,\n createPath,\n createRoutesFromChildren,\n createRoutesFromElements,\n defer,\n isRouteErrorResponse,\n generatePath,\n json,\n matchPath,\n matchRoutes,\n parsePath,\n redirect,\n renderMatches,\n resolvePath,\n useActionData,\n useAsyncError,\n useAsyncValue,\n useHref,\n useInRouterContext,\n useLoaderData,\n useLocation,\n useMatch,\n useMatches,\n useNavigate,\n useNavigation,\n useNavigationType,\n useOutlet,\n useOutletContext,\n useParams,\n useResolvedPath,\n useRevalidator,\n useRouteError,\n useRouteLoaderData,\n useRoutes,\n} from \"react-router\";\n\n///////////////////////////////////////////////////////////////////////////////\n// DANGER! PLEASE READ ME!\n// We provide these exports as an escape hatch in the event that you need any\n// routing data that we don't provide an explicit API for. With that said, we\n// want to cover your use case if we can, so if you feel the need to use these\n// we want to hear from you. Let us know what you're building and we'll do our\n// best to make sure we can support you!\n//\n// We consider these exports an implementation detail and do not guarantee\n// against any breaking changes, regardless of the semver release. Use with\n// extreme caution and only if you understand the consequences. Godspeed.\n///////////////////////////////////////////////////////////////////////////////\n\n/** @internal */\nexport {\n UNSAFE_DataRouterContext,\n UNSAFE_DataRouterStateContext,\n UNSAFE_DataStaticRouterContext,\n UNSAFE_NavigationContext,\n UNSAFE_LocationContext,\n UNSAFE_RouteContext,\n UNSAFE_enhanceManualRouteObjects,\n} from \"react-router\";\n//#endregion\n\ndeclare global {\n var __staticRouterHydrationData: HydrationState | undefined;\n}\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Routers\n////////////////////////////////////////////////////////////////////////////////\n\nexport function createBrowserRouter(\n routes: RouteObject[],\n opts?: {\n basename?: string;\n hydrationData?: HydrationState;\n window?: Window;\n }\n): RemixRouter {\n return createRouter({\n basename: opts?.basename,\n history: createBrowserHistory({ window: opts?.window }),\n hydrationData: opts?.hydrationData || window?.__staticRouterHydrationData,\n routes: enhanceManualRouteObjects(routes),\n }).initialize();\n}\n\nexport function createHashRouter(\n routes: RouteObject[],\n opts?: {\n basename?: string;\n hydrationData?: HydrationState;\n window?: Window;\n }\n): RemixRouter {\n return createRouter({\n basename: opts?.basename,\n history: createHashHistory({ window: opts?.window }),\n hydrationData: opts?.hydrationData || window?.__staticRouterHydrationData,\n routes: enhanceManualRouteObjects(routes),\n }).initialize();\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Components\n////////////////////////////////////////////////////////////////////////////////\n\nexport interface BrowserRouterProps {\n basename?: string;\n children?: React.ReactNode;\n window?: Window;\n}\n\n/**\n * A `` for use in web browsers. Provides the cleanest URLs.\n */\nexport function BrowserRouter({\n basename,\n children,\n window,\n}: BrowserRouterProps) {\n let historyRef = React.useRef();\n if (historyRef.current == null) {\n historyRef.current = createBrowserHistory({ window, v5Compat: true });\n }\n\n let history = historyRef.current;\n let [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n \n );\n}\n\nexport interface HashRouterProps {\n basename?: string;\n children?: React.ReactNode;\n window?: Window;\n}\n\n/**\n * A `` for use in web browsers. Stores the location in the hash\n * portion of the URL so it is not sent to the server.\n */\nexport function HashRouter({ basename, children, window }: HashRouterProps) {\n let historyRef = React.useRef();\n if (historyRef.current == null) {\n historyRef.current = createHashHistory({ window, v5Compat: true });\n }\n\n let history = historyRef.current;\n let [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n \n );\n}\n\nexport interface HistoryRouterProps {\n basename?: string;\n children?: React.ReactNode;\n history: History;\n}\n\n/**\n * A `` that accepts a pre-instantiated history object. It's important\n * to note that using your own history object is highly discouraged and may add\n * two versions of the history library to your bundles unless you use the same\n * version of the history library that React Router uses internally.\n */\nfunction HistoryRouter({ basename, children, history }: HistoryRouterProps) {\n const [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n \n );\n}\n\nif (__DEV__) {\n HistoryRouter.displayName = \"unstable_HistoryRouter\";\n}\n\nexport { HistoryRouter as unstable_HistoryRouter };\n\nexport interface LinkProps\n extends Omit, \"href\"> {\n reloadDocument?: boolean;\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n to: To;\n}\n\n/**\n * The public API for rendering a history-aware
.\n */\nexport const Link = React.forwardRef(\n function LinkWithRef(\n {\n onClick,\n relative,\n reloadDocument,\n replace,\n state,\n target,\n to,\n preventScrollReset,\n ...rest\n },\n ref\n ) {\n let href = useHref(to, { relative });\n let internalOnClick = useLinkClickHandler(to, {\n replace,\n state,\n target,\n preventScrollReset,\n relative,\n });\n function handleClick(\n event: React.MouseEvent\n ) {\n if (onClick) onClick(event);\n if (!event.defaultPrevented) {\n internalOnClick(event);\n }\n }\n\n return (\n // eslint-disable-next-line jsx-a11y/anchor-has-content\n \n );\n }\n);\n\nif (__DEV__) {\n Link.displayName = \"Link\";\n}\n\nexport interface NavLinkProps\n extends Omit {\n children?:\n | React.ReactNode\n | ((props: { isActive: boolean; isPending: boolean }) => React.ReactNode);\n caseSensitive?: boolean;\n className?:\n | string\n | ((props: {\n isActive: boolean;\n isPending: boolean;\n }) => string | undefined);\n end?: boolean;\n style?:\n | React.CSSProperties\n | ((props: {\n isActive: boolean;\n isPending: boolean;\n }) => React.CSSProperties | undefined);\n}\n\n/**\n * A wrapper that knows if it's \"active\" or not.\n */\nexport const NavLink = React.forwardRef(\n function NavLinkWithRef(\n {\n \"aria-current\": ariaCurrentProp = \"page\",\n caseSensitive = false,\n className: classNameProp = \"\",\n end = false,\n style: styleProp,\n to,\n children,\n ...rest\n },\n ref\n ) {\n let path = useResolvedPath(to, { relative: rest.relative });\n let location = useLocation();\n let routerState = React.useContext(DataRouterStateContext);\n\n let toPathname = path.pathname;\n let locationPathname = location.pathname;\n let nextLocationPathname =\n routerState && routerState.navigation && routerState.navigation.location\n ? routerState.navigation.location.pathname\n : null;\n\n if (!caseSensitive) {\n locationPathname = locationPathname.toLowerCase();\n nextLocationPathname = nextLocationPathname\n ? nextLocationPathname.toLowerCase()\n : null;\n toPathname = toPathname.toLowerCase();\n }\n\n let isActive =\n locationPathname === toPathname ||\n (!end &&\n locationPathname.startsWith(toPathname) &&\n locationPathname.charAt(toPathname.length) === \"/\");\n\n let isPending =\n nextLocationPathname != null &&\n (nextLocationPathname === toPathname ||\n (!end &&\n nextLocationPathname.startsWith(toPathname) &&\n nextLocationPathname.charAt(toPathname.length) === \"/\"));\n\n let ariaCurrent = isActive ? ariaCurrentProp : undefined;\n\n let className: string | undefined;\n if (typeof classNameProp === \"function\") {\n className = classNameProp({ isActive, isPending });\n } else {\n // If the className prop is not a function, we use a default `active`\n // class for s that are active. In v5 `active` was the default\n // value for `activeClassName`, but we are removing that API and can still\n // use the old default behavior for a cleaner upgrade path and keep the\n // simple styling rules working as they currently do.\n className = [\n classNameProp,\n isActive ? \"active\" : null,\n isPending ? \"pending\" : null,\n ]\n .filter(Boolean)\n .join(\" \");\n }\n\n let style =\n typeof styleProp === \"function\"\n ? styleProp({ isActive, isPending })\n : styleProp;\n\n return (\n \n {typeof children === \"function\"\n ? children({ isActive, isPending })\n : children}\n \n );\n }\n);\n\nif (__DEV__) {\n NavLink.displayName = \"NavLink\";\n}\n\nexport interface FormProps extends React.FormHTMLAttributes {\n /**\n * The HTTP verb to use when the form is submit. Supports \"get\", \"post\",\n * \"put\", \"delete\", \"patch\".\n */\n method?: FormMethod;\n\n /**\n * Normal `
` but supports React Router's relative paths.\n */\n action?: string;\n\n /**\n * Forces a full document navigation instead of a fetch.\n */\n reloadDocument?: boolean;\n\n /**\n * Replaces the current entry in the browser history stack when the form\n * navigates. Use this if you don't want the user to be able to click \"back\"\n * to the page with the form on it.\n */\n replace?: boolean;\n\n /**\n * Determines whether the form action is relative to the route hierarchy or\n * the pathname. Use this if you want to opt out of navigating the route\n * hierarchy and want to instead route based on /-delimited URL segments\n */\n relative?: RelativeRoutingType;\n\n /**\n * A function to call when the form is submitted. If you call\n * `event.preventDefault()` then this form will not do anything.\n */\n onSubmit?: React.FormEventHandler;\n}\n\n/**\n * A `@remix-run/router`-aware ``. It behaves like a normal form except\n * that the interaction with the server is with `fetch` instead of new document\n * requests, allowing components to add nicer UX to the page as the form is\n * submitted and returns with data.\n */\nexport const Form = React.forwardRef(\n (props, ref) => {\n return ;\n }\n);\n\nif (__DEV__) {\n Form.displayName = \"Form\";\n}\n\ntype HTMLSubmitEvent = React.BaseSyntheticEvent<\n SubmitEvent,\n Event,\n HTMLFormElement\n>;\n\ntype HTMLFormSubmitter = HTMLButtonElement | HTMLInputElement;\n\ninterface FormImplProps extends FormProps {\n fetcherKey?: string;\n routeId?: string;\n}\n\nconst FormImpl = React.forwardRef(\n (\n {\n reloadDocument,\n replace,\n method = defaultMethod,\n action,\n onSubmit,\n fetcherKey,\n routeId,\n relative,\n ...props\n },\n forwardedRef\n ) => {\n let submit = useSubmitImpl(fetcherKey, routeId);\n let formMethod: FormMethod =\n method.toLowerCase() === \"get\" ? \"get\" : \"post\";\n let formAction = useFormAction(action, { relative });\n let submitHandler: React.FormEventHandler = (event) => {\n onSubmit && onSubmit(event);\n if (event.defaultPrevented) return;\n event.preventDefault();\n\n let submitter = (event as unknown as HTMLSubmitEvent).nativeEvent\n .submitter as HTMLFormSubmitter | null;\n\n submit(submitter || event.currentTarget, { method, replace, relative });\n };\n\n return (\n \n );\n }\n);\n\nif (__DEV__) {\n Form.displayName = \"Form\";\n}\n\ninterface ScrollRestorationProps {\n getKey?: GetScrollRestorationKeyFunction;\n storageKey?: string;\n}\n\n/**\n * This component will emulate the browser's scroll restoration on location\n * changes.\n */\nexport function ScrollRestoration({\n getKey,\n storageKey,\n}: ScrollRestorationProps) {\n useScrollRestoration({ getKey, storageKey });\n return null;\n}\n\nif (__DEV__) {\n ScrollRestoration.displayName = \"ScrollRestoration\";\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Hooks\n////////////////////////////////////////////////////////////////////////////////\n\nenum DataRouterHook {\n UseScrollRestoration = \"useScrollRestoration\",\n UseSubmitImpl = \"useSubmitImpl\",\n UseFetcher = \"useFetcher\",\n}\n\nenum DataRouterStateHook {\n UseFetchers = \"useFetchers\",\n UseScrollRestoration = \"useScrollRestoration\",\n}\n\nfunction getDataRouterConsoleError(\n hookName: DataRouterHook | DataRouterStateHook\n) {\n return `${hookName} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`;\n}\n\nfunction useDataRouterContext(hookName: DataRouterHook) {\n let ctx = React.useContext(DataRouterContext);\n invariant(ctx, getDataRouterConsoleError(hookName));\n return ctx;\n}\n\nfunction useDataRouterState(hookName: DataRouterStateHook) {\n let state = React.useContext(DataRouterStateContext);\n invariant(state, getDataRouterConsoleError(hookName));\n return state;\n}\n\n/**\n * Handles the click behavior for router `` components. This is useful if\n * you need to create custom `` components with the same click behavior we\n * use in our exported ``.\n */\nexport function useLinkClickHandler(\n to: To,\n {\n target,\n replace: replaceProp,\n state,\n preventScrollReset,\n relative,\n }: {\n target?: React.HTMLAttributeAnchorTarget;\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n } = {}\n): (event: React.MouseEvent) => void {\n let navigate = useNavigate();\n let location = useLocation();\n let path = useResolvedPath(to, { relative });\n\n return React.useCallback(\n (event: React.MouseEvent) => {\n if (shouldProcessLinkClick(event, target)) {\n event.preventDefault();\n\n // If the URL hasn't changed, a regular will do a replace instead of\n // a push, so do the same here unless the replace prop is explicitly set\n let replace =\n replaceProp !== undefined\n ? replaceProp\n : createPath(location) === createPath(path);\n\n navigate(to, { replace, state, preventScrollReset, relative });\n }\n },\n [\n location,\n navigate,\n path,\n replaceProp,\n state,\n target,\n to,\n preventScrollReset,\n relative,\n ]\n );\n}\n\n/**\n * A convenient wrapper for reading and writing search parameters via the\n * URLSearchParams interface.\n */\nexport function useSearchParams(\n defaultInit?: URLSearchParamsInit\n): [URLSearchParams, SetURLSearchParams] {\n warning(\n typeof URLSearchParams !== \"undefined\",\n `You cannot use the \\`useSearchParams\\` hook in a browser that does not ` +\n `support the URLSearchParams API. If you need to support Internet ` +\n `Explorer 11, we recommend you load a polyfill such as ` +\n `https://github.com/ungap/url-search-params\\n\\n` +\n `If you're unsure how to load polyfills, we recommend you check out ` +\n `https://polyfill.io/v3/ which provides some recommendations about how ` +\n `to load polyfills only for users that need them, instead of for every ` +\n `user.`\n );\n\n let defaultSearchParamsRef = React.useRef(createSearchParams(defaultInit));\n\n let location = useLocation();\n let searchParams = React.useMemo(\n () =>\n getSearchParamsForLocation(\n location.search,\n defaultSearchParamsRef.current\n ),\n [location.search]\n );\n\n let navigate = useNavigate();\n let setSearchParams = React.useCallback(\n (nextInit, navigateOptions) => {\n const newSearchParams = createSearchParams(\n typeof nextInit === \"function\" ? nextInit(searchParams) : nextInit\n );\n navigate(\"?\" + newSearchParams, navigateOptions);\n },\n [navigate, searchParams]\n );\n\n return [searchParams, setSearchParams];\n}\n\ntype SetURLSearchParams = (\n nextInit?:\n | URLSearchParamsInit\n | ((prev: URLSearchParams) => URLSearchParamsInit),\n navigateOpts?: NavigateOptions\n) => void;\n\ntype SubmitTarget =\n | HTMLFormElement\n | HTMLButtonElement\n | HTMLInputElement\n | FormData\n | URLSearchParams\n | { [name: string]: string }\n | null;\n\n/**\n * Submits a HTML `` to the server without reloading the page.\n */\nexport interface SubmitFunction {\n (\n /**\n * Specifies the `` to be submitted to the server, a specific\n * `