{"version":3,"file":"static/js/379.df71686b.chunk.js","mappings":"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","sources":["../node_modules/fast-deep-equal/es6/react.js","../node_modules/lottie-web/build/player/lottie.js","../node_modules/react-lottie-player/node_modules/prop-types/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-lottie-player/node_modules/object-assign/index.js","../node_modules/react-lottie-player/node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js","../node_modules/react-lottie-player/node_modules/prop-types/node_modules/react-is/index.js","../node_modules/react-lottie-player/node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/react-lottie-player/node_modules/prop-types/lib/has.js","../node_modules/react-lottie-player/node_modules/prop-types/checkPropTypes.js","../node_modules/react-lottie-player/node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/react-lottie-player/node_modules/prop-types/index.js","../node_modules/react-lottie-player/src/propTypes.js","../node_modules/react-lottie-player/src/makeLottiePlayer.js","../node_modules/react-lottie-player/src/LottiePlayer.js","../node_modules/rfdc/default.js","../node_modules/rfdc/index.js","../node_modules/@babel/runtime/helpers/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/createForOfIteratorHelper.js","../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js"],"sourcesContent":["'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n var envHasBigInt64Array = typeof BigInt64Array !== 'undefined';\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n if ((a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n for (i of a.entries())\n if (!b.has(i[0])) return false;\n for (i of a.entries())\n if (!equal(i[1], b.get(i[0]))) return false;\n return true;\n }\n\n if ((a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n for (i of a.entries())\n if (!b.has(i[0])) return false;\n return true;\n }\n\n if (ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (key === '_owner' && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner.\n // _owner contains circular references\n // and is not needed when comparing the actual elements (and not their owners)\n continue;\n }\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\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 expressionsInterfaces = null;\n var idPrefix$1 = '';\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$1 + '__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 setExpressionInterfaces = function setExpressionInterfaces(value) {\n expressionsInterfaces = value;\n };\n\n var getExpressionInterfaces = function getExpressionInterfaces() {\n return expressionsInterfaces;\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$1 = value;\n };\n\n var getIdPrefix = function getIdPrefix() {\n return idPrefix$1;\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.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 // Hack to workaround banner validation\n xhr.open(['G', 'E', 'T'].join(''), path, true);\n } catch (error) {\n // Hack to workaround banner validation\n xhr.open(['G', 'E', 'T'].join(''), 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].cm\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 getRegisteredRenderer() {\n // Returns canvas by default for compatibility\n if (renderers.canvas) {\n return 'canvas';\n } // Returns any renderer that is registered\n\n\n for (var key in renderers) {\n if (renderers[key]) {\n return key;\n }\n }\n\n return '';\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 this.drawnFrameEvent = new BMEnterFrameEvent('drawnFrame', 0, 0, 0);\n this.expressionsPlugin = getExpressionsPlugin();\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 : getRegisteredRenderer() || '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 if (!params.path) {\n this.trigger('destroy');\n } else {\n this.setParams(params);\n }\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 (width, height) {\n // Adding this validation for backwards compatibility in case an event object was being passed down\n var _width = typeof width === 'number' ? width : undefined;\n\n var _height = typeof height === 'number' ? height : undefined;\n\n this.renderer.updateContainerSize(_width, _height);\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 if (this.expressionsPlugin) {\n this.expressionsPlugin.resetFrame();\n }\n\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.trigger('_play');\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.trigger('_pause');\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.expressionsPlugin = 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.setLoop = function (isLooping) {\n this.loop = isLooping;\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.updateDocumentData = function (path, documentData, index) {\n try {\n var element = this.renderer.getElementByPath(path);\n element.updateDocumentData(documentData, index);\n } catch (error) {// TODO: decide how to handle catch case\n }\n };\n\n AnimationItem.prototype.trigger = function (name) {\n if (this._cbs && this._cbs[name]) {\n switch (name) {\n case 'enterFrame':\n this.triggerEvent(name, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameModifier));\n break;\n\n case 'drawnFrame':\n this.drawnFrameEvent.currentTime = this.currentFrame;\n this.drawnFrameEvent.totalTime = this.totalFrames;\n this.drawnFrameEvent.direction = this.frameModifier;\n this.triggerEvent(name, this.drawnFrameEvent);\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 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 var PropertyFactory = function () {\n function getProp(elem, data, type, mult, container) {\n if (data.sid) {\n data = elem.globalData.slotManager.getProp(data);\n }\n\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 ShapePath.prototype.length = function () {\n return this._length;\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 multiply(matrix) {\n var matrixProps = matrix.props;\n return this.transform(matrixProps[0], matrixProps[1], matrixProps[2], matrixProps[3], matrixProps[4], matrixProps[5], matrixProps[6], matrixProps[7], matrixProps[8], matrixProps[9], matrixProps[10], matrixProps[11], matrixProps[12], matrixProps[13], matrixProps[14], matrixProps[15]);\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.multiply = multiply;\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.12.2';\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 ? 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 this.appliedTransformations = 0;\n this.pre.reset();\n\n if (!this.a.effectsSequence.length) {\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 floatEqual(a, b) {\n return Math.abs(a - b) * 100000 <= Math.min(Math.abs(a), Math.abs(b));\n }\n\n function floatZero(f) {\n return Math.abs(f) <= 0.00001;\n }\n\n function lerp(p0, p1, amount) {\n return p0 * (1 - amount) + p1 * amount;\n }\n\n function lerpPoint(p0, p1, amount) {\n return [lerp(p0[0], p1[0], amount), lerp(p0[1], p1[1], amount)];\n }\n\n function quadRoots(a, b, c) {\n // no root\n if (a === 0) return [];\n var s = b * b - 4 * a * c; // Complex roots\n\n if (s < 0) return [];\n var singleRoot = -b / (2 * a); // 1 root\n\n if (s === 0) return [singleRoot];\n var delta = Math.sqrt(s) / (2 * a); // 2 roots\n\n return [singleRoot - delta, singleRoot + delta];\n }\n\n function polynomialCoefficients(p0, p1, p2, p3) {\n return [-p0 + 3 * p1 - 3 * p2 + p3, 3 * p0 - 6 * p1 + 3 * p2, -3 * p0 + 3 * p1, p0];\n }\n\n function singlePoint(p) {\n return new PolynomialBezier(p, p, p, p, false);\n }\n\n function PolynomialBezier(p0, p1, p2, p3, linearize) {\n if (linearize && pointEqual(p0, p1)) {\n p1 = lerpPoint(p0, p3, 1 / 3);\n }\n\n if (linearize && pointEqual(p2, p3)) {\n p2 = lerpPoint(p0, p3, 2 / 3);\n }\n\n var coeffx = polynomialCoefficients(p0[0], p1[0], p2[0], p3[0]);\n var coeffy = polynomialCoefficients(p0[1], p1[1], p2[1], p3[1]);\n this.a = [coeffx[0], coeffy[0]];\n this.b = [coeffx[1], coeffy[1]];\n this.c = [coeffx[2], coeffy[2]];\n this.d = [coeffx[3], coeffy[3]];\n this.points = [p0, p1, p2, p3];\n }\n\n PolynomialBezier.prototype.point = function (t) {\n return [((this.a[0] * t + this.b[0]) * t + this.c[0]) * t + this.d[0], ((this.a[1] * t + this.b[1]) * t + this.c[1]) * t + this.d[1]];\n };\n\n PolynomialBezier.prototype.derivative = function (t) {\n return [(3 * t * this.a[0] + 2 * this.b[0]) * t + this.c[0], (3 * t * this.a[1] + 2 * this.b[1]) * t + this.c[1]];\n };\n\n PolynomialBezier.prototype.tangentAngle = function (t) {\n var p = this.derivative(t);\n return Math.atan2(p[1], p[0]);\n };\n\n PolynomialBezier.prototype.normalAngle = function (t) {\n var p = this.derivative(t);\n return Math.atan2(p[0], p[1]);\n };\n\n PolynomialBezier.prototype.inflectionPoints = function () {\n var denom = this.a[1] * this.b[0] - this.a[0] * this.b[1];\n if (floatZero(denom)) return [];\n var tcusp = -0.5 * (this.a[1] * this.c[0] - this.a[0] * this.c[1]) / denom;\n var square = tcusp * tcusp - 1 / 3 * (this.b[1] * this.c[0] - this.b[0] * this.c[1]) / denom;\n if (square < 0) return [];\n var root = Math.sqrt(square);\n\n if (floatZero(root)) {\n if (root > 0 && root < 1) return [tcusp];\n return [];\n }\n\n return [tcusp - root, tcusp + root].filter(function (r) {\n return r > 0 && r < 1;\n });\n };\n\n PolynomialBezier.prototype.split = function (t) {\n if (t <= 0) return [singlePoint(this.points[0]), this];\n if (t >= 1) return [this, singlePoint(this.points[this.points.length - 1])];\n var p10 = lerpPoint(this.points[0], this.points[1], t);\n var p11 = lerpPoint(this.points[1], this.points[2], t);\n var p12 = lerpPoint(this.points[2], this.points[3], t);\n var p20 = lerpPoint(p10, p11, t);\n var p21 = lerpPoint(p11, p12, t);\n var p3 = lerpPoint(p20, p21, t);\n return [new PolynomialBezier(this.points[0], p10, p20, p3, true), new PolynomialBezier(p3, p21, p12, this.points[3], true)];\n };\n\n function extrema(bez, comp) {\n var min = bez.points[0][comp];\n var max = bez.points[bez.points.length - 1][comp];\n\n if (min > max) {\n var e = max;\n max = min;\n min = e;\n } // Derivative roots to find min/max\n\n\n var f = quadRoots(3 * bez.a[comp], 2 * bez.b[comp], bez.c[comp]);\n\n for (var i = 0; i < f.length; i += 1) {\n if (f[i] > 0 && f[i] < 1) {\n var val = bez.point(f[i])[comp];\n if (val < min) min = val;else if (val > max) max = val;\n }\n }\n\n return {\n min: min,\n max: max\n };\n }\n\n PolynomialBezier.prototype.bounds = function () {\n return {\n x: extrema(this, 0),\n y: extrema(this, 1)\n };\n };\n\n PolynomialBezier.prototype.boundingBox = function () {\n var bounds = this.bounds();\n return {\n left: bounds.x.min,\n right: bounds.x.max,\n top: bounds.y.min,\n bottom: bounds.y.max,\n width: bounds.x.max - bounds.x.min,\n height: bounds.y.max - bounds.y.min,\n cx: (bounds.x.max + bounds.x.min) / 2,\n cy: (bounds.y.max + bounds.y.min) / 2\n };\n };\n\n function intersectData(bez, t1, t2) {\n var box = bez.boundingBox();\n return {\n cx: box.cx,\n cy: box.cy,\n width: box.width,\n height: box.height,\n bez: bez,\n t: (t1 + t2) / 2,\n t1: t1,\n t2: t2\n };\n }\n\n function splitData(data) {\n var split = data.bez.split(0.5);\n return [intersectData(split[0], data.t1, data.t), intersectData(split[1], data.t, data.t2)];\n }\n\n function boxIntersect(b1, b2) {\n return Math.abs(b1.cx - b2.cx) * 2 < b1.width + b2.width && Math.abs(b1.cy - b2.cy) * 2 < b1.height + b2.height;\n }\n\n function intersectsImpl(d1, d2, depth, tolerance, intersections, maxRecursion) {\n if (!boxIntersect(d1, d2)) return;\n\n if (depth >= maxRecursion || d1.width <= tolerance && d1.height <= tolerance && d2.width <= tolerance && d2.height <= tolerance) {\n intersections.push([d1.t, d2.t]);\n return;\n }\n\n var d1s = splitData(d1);\n var d2s = splitData(d2);\n intersectsImpl(d1s[0], d2s[0], depth + 1, tolerance, intersections, maxRecursion);\n intersectsImpl(d1s[0], d2s[1], depth + 1, tolerance, intersections, maxRecursion);\n intersectsImpl(d1s[1], d2s[0], depth + 1, tolerance, intersections, maxRecursion);\n intersectsImpl(d1s[1], d2s[1], depth + 1, tolerance, intersections, maxRecursion);\n }\n\n PolynomialBezier.prototype.intersections = function (other, tolerance, maxRecursion) {\n if (tolerance === undefined) tolerance = 2;\n if (maxRecursion === undefined) maxRecursion = 7;\n var intersections = [];\n intersectsImpl(intersectData(this, 0, 1), intersectData(other, 0, 1), 0, tolerance, intersections, maxRecursion);\n return intersections;\n };\n\n PolynomialBezier.shapeSegment = function (shapePath, index) {\n var nextIndex = (index + 1) % shapePath.length();\n return new PolynomialBezier(shapePath.v[index], shapePath.o[index], shapePath.i[nextIndex], shapePath.v[nextIndex], true);\n };\n\n PolynomialBezier.shapeSegmentInverted = function (shapePath, index) {\n var nextIndex = (index + 1) % shapePath.length();\n return new PolynomialBezier(shapePath.v[nextIndex], shapePath.i[nextIndex], shapePath.o[index], shapePath.v[index], true);\n };\n\n function crossProduct(a, b) {\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n }\n\n function lineIntersection(start1, end1, start2, end2) {\n var v1 = [start1[0], start1[1], 1];\n var v2 = [end1[0], end1[1], 1];\n var v3 = [start2[0], start2[1], 1];\n var v4 = [end2[0], end2[1], 1];\n var r = crossProduct(crossProduct(v1, v2), crossProduct(v3, v4));\n if (floatZero(r[2])) return null;\n return [r[0] / r[2], r[1] / r[2]];\n }\n\n function polarOffset(p, angle, length) {\n return [p[0] + Math.cos(angle) * length, p[1] - Math.sin(angle) * length];\n }\n\n function pointDistance(p1, p2) {\n return Math.hypot(p1[0] - p2[0], p1[1] - p2[1]);\n }\n\n function pointEqual(p1, p2) {\n return floatEqual(p1[0], p2[0]) && floatEqual(p1[1], p2[1]);\n }\n\n function ZigZagModifier() {}\n\n extendPrototype([ShapeModifier], ZigZagModifier);\n\n ZigZagModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.amplitude = PropertyFactory.getProp(elem, data.s, 0, null, this);\n this.frequency = PropertyFactory.getProp(elem, data.r, 0, null, this);\n this.pointsType = PropertyFactory.getProp(elem, data.pt, 0, null, this);\n this._isAnimated = this.amplitude.effectsSequence.length !== 0 || this.frequency.effectsSequence.length !== 0 || this.pointsType.effectsSequence.length !== 0;\n };\n\n function setPoint(outputBezier, point, angle, direction, amplitude, outAmplitude, inAmplitude) {\n var angO = angle - Math.PI / 2;\n var angI = angle + Math.PI / 2;\n var px = point[0] + Math.cos(angle) * direction * amplitude;\n var py = point[1] - Math.sin(angle) * direction * amplitude;\n outputBezier.setTripleAt(px, py, px + Math.cos(angO) * outAmplitude, py - Math.sin(angO) * outAmplitude, px + Math.cos(angI) * inAmplitude, py - Math.sin(angI) * inAmplitude, outputBezier.length());\n }\n\n function getPerpendicularVector(pt1, pt2) {\n var vector = [pt2[0] - pt1[0], pt2[1] - pt1[1]];\n var rot = -Math.PI * 0.5;\n var rotatedVector = [Math.cos(rot) * vector[0] - Math.sin(rot) * vector[1], Math.sin(rot) * vector[0] + Math.cos(rot) * vector[1]];\n return rotatedVector;\n }\n\n function getProjectingAngle(path, cur) {\n var prevIndex = cur === 0 ? path.length() - 1 : cur - 1;\n var nextIndex = (cur + 1) % path.length();\n var prevPoint = path.v[prevIndex];\n var nextPoint = path.v[nextIndex];\n var pVector = getPerpendicularVector(prevPoint, nextPoint);\n return Math.atan2(0, 1) - Math.atan2(pVector[1], pVector[0]);\n }\n\n function zigZagCorner(outputBezier, path, cur, amplitude, frequency, pointType, direction) {\n var angle = getProjectingAngle(path, cur);\n var point = path.v[cur % path._length];\n var prevPoint = path.v[cur === 0 ? path._length - 1 : cur - 1];\n var nextPoint = path.v[(cur + 1) % path._length];\n var prevDist = pointType === 2 ? Math.sqrt(Math.pow(point[0] - prevPoint[0], 2) + Math.pow(point[1] - prevPoint[1], 2)) : 0;\n var nextDist = pointType === 2 ? Math.sqrt(Math.pow(point[0] - nextPoint[0], 2) + Math.pow(point[1] - nextPoint[1], 2)) : 0;\n setPoint(outputBezier, path.v[cur % path._length], angle, direction, amplitude, nextDist / ((frequency + 1) * 2), prevDist / ((frequency + 1) * 2), pointType);\n }\n\n function zigZagSegment(outputBezier, segment, amplitude, frequency, pointType, direction) {\n for (var i = 0; i < frequency; i += 1) {\n var t = (i + 1) / (frequency + 1);\n var dist = pointType === 2 ? Math.sqrt(Math.pow(segment.points[3][0] - segment.points[0][0], 2) + Math.pow(segment.points[3][1] - segment.points[0][1], 2)) : 0;\n var angle = segment.normalAngle(t);\n var point = segment.point(t);\n setPoint(outputBezier, point, angle, direction, amplitude, dist / ((frequency + 1) * 2), dist / ((frequency + 1) * 2), pointType);\n direction = -direction;\n }\n\n return direction;\n }\n\n ZigZagModifier.prototype.processPath = function (path, amplitude, frequency, pointType) {\n var count = path._length;\n var clonedPath = shapePool.newElement();\n clonedPath.c = path.c;\n\n if (!path.c) {\n count -= 1;\n }\n\n if (count === 0) return clonedPath;\n var direction = -1;\n var segment = PolynomialBezier.shapeSegment(path, 0);\n zigZagCorner(clonedPath, path, 0, amplitude, frequency, pointType, direction);\n\n for (var i = 0; i < count; i += 1) {\n direction = zigZagSegment(clonedPath, segment, amplitude, frequency, pointType, -direction);\n\n if (i === count - 1 && !path.c) {\n segment = null;\n } else {\n segment = PolynomialBezier.shapeSegment(path, (i + 1) % count);\n }\n\n zigZagCorner(clonedPath, path, i + 1, amplitude, frequency, pointType, direction);\n }\n\n return clonedPath;\n };\n\n ZigZagModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var amplitude = this.amplitude.v;\n var frequency = Math.max(0, Math.round(this.frequency.v));\n var pointType = this.pointsType.v;\n\n if (amplitude !== 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], amplitude, frequency, pointType));\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 linearOffset(p1, p2, amount) {\n var angle = Math.atan2(p2[0] - p1[0], p2[1] - p1[1]);\n return [polarOffset(p1, angle, amount), polarOffset(p2, angle, amount)];\n }\n\n function offsetSegment(segment, amount) {\n var p0;\n var p1a;\n var p1b;\n var p2b;\n var p2a;\n var p3;\n var e;\n e = linearOffset(segment.points[0], segment.points[1], amount);\n p0 = e[0];\n p1a = e[1];\n e = linearOffset(segment.points[1], segment.points[2], amount);\n p1b = e[0];\n p2b = e[1];\n e = linearOffset(segment.points[2], segment.points[3], amount);\n p2a = e[0];\n p3 = e[1];\n var p1 = lineIntersection(p0, p1a, p1b, p2b);\n if (p1 === null) p1 = p1a;\n var p2 = lineIntersection(p2a, p3, p1b, p2b);\n if (p2 === null) p2 = p2a;\n return new PolynomialBezier(p0, p1, p2, p3);\n }\n\n function joinLines(outputBezier, seg1, seg2, lineJoin, miterLimit) {\n var p0 = seg1.points[3];\n var p1 = seg2.points[0]; // Bevel\n\n if (lineJoin === 3) return p0; // Connected, they don't need a joint\n\n if (pointEqual(p0, p1)) return p0; // Round\n\n if (lineJoin === 2) {\n var angleOut = -seg1.tangentAngle(1);\n var angleIn = -seg2.tangentAngle(0) + Math.PI;\n var center = lineIntersection(p0, polarOffset(p0, angleOut + Math.PI / 2, 100), p1, polarOffset(p1, angleOut + Math.PI / 2, 100));\n var radius = center ? pointDistance(center, p0) : pointDistance(p0, p1) / 2;\n var tan = polarOffset(p0, angleOut, 2 * radius * roundCorner);\n outputBezier.setXYAt(tan[0], tan[1], 'o', outputBezier.length() - 1);\n tan = polarOffset(p1, angleIn, 2 * radius * roundCorner);\n outputBezier.setTripleAt(p1[0], p1[1], p1[0], p1[1], tan[0], tan[1], outputBezier.length());\n return p1;\n } // Miter\n\n\n var t0 = pointEqual(p0, seg1.points[2]) ? seg1.points[0] : seg1.points[2];\n var t1 = pointEqual(p1, seg2.points[1]) ? seg2.points[3] : seg2.points[1];\n var intersection = lineIntersection(t0, p0, p1, t1);\n\n if (intersection && pointDistance(intersection, p0) < miterLimit) {\n outputBezier.setTripleAt(intersection[0], intersection[1], intersection[0], intersection[1], intersection[0], intersection[1], outputBezier.length());\n return intersection;\n }\n\n return p0;\n }\n\n function getIntersection(a, b) {\n var intersect = a.intersections(b);\n if (intersect.length && floatEqual(intersect[0][0], 1)) intersect.shift();\n if (intersect.length) return intersect[0];\n return null;\n }\n\n function pruneSegmentIntersection(a, b) {\n var outa = a.slice();\n var outb = b.slice();\n var intersect = getIntersection(a[a.length - 1], b[0]);\n\n if (intersect) {\n outa[a.length - 1] = a[a.length - 1].split(intersect[0])[0];\n outb[0] = b[0].split(intersect[1])[1];\n }\n\n if (a.length > 1 && b.length > 1) {\n intersect = getIntersection(a[0], b[b.length - 1]);\n\n if (intersect) {\n return [[a[0].split(intersect[0])[0]], [b[b.length - 1].split(intersect[1])[1]]];\n }\n }\n\n return [outa, outb];\n }\n\n function pruneIntersections(segments) {\n var e;\n\n for (var i = 1; i < segments.length; i += 1) {\n e = pruneSegmentIntersection(segments[i - 1], segments[i]);\n segments[i - 1] = e[0];\n segments[i] = e[1];\n }\n\n if (segments.length > 1) {\n e = pruneSegmentIntersection(segments[segments.length - 1], segments[0]);\n segments[segments.length - 1] = e[0];\n segments[0] = e[1];\n }\n\n return segments;\n }\n\n function offsetSegmentSplit(segment, amount) {\n /*\r\n We split each bezier segment into smaller pieces based\r\n on inflection points, this ensures the control point\r\n polygon is convex.\r\n (A cubic bezier can have none, one, or two inflection points)\r\n */\n var flex = segment.inflectionPoints();\n var left;\n var right;\n var split;\n var mid;\n\n if (flex.length === 0) {\n return [offsetSegment(segment, amount)];\n }\n\n if (flex.length === 1 || floatEqual(flex[1], 1)) {\n split = segment.split(flex[0]);\n left = split[0];\n right = split[1];\n return [offsetSegment(left, amount), offsetSegment(right, amount)];\n }\n\n split = segment.split(flex[0]);\n left = split[0];\n var t = (flex[1] - flex[0]) / (1 - flex[0]);\n split = split[1].split(t);\n mid = split[0];\n right = split[1];\n return [offsetSegment(left, amount), offsetSegment(mid, amount), offsetSegment(right, amount)];\n }\n\n function OffsetPathModifier() {}\n\n extendPrototype([ShapeModifier], OffsetPathModifier);\n\n OffsetPathModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this);\n this.miterLimit = PropertyFactory.getProp(elem, data.ml, 0, null, this);\n this.lineJoin = data.lj;\n this._isAnimated = this.amount.effectsSequence.length !== 0;\n };\n\n OffsetPathModifier.prototype.processPath = function (inputBezier, amount, lineJoin, miterLimit) {\n var outputBezier = shapePool.newElement();\n outputBezier.c = inputBezier.c;\n var count = inputBezier.length();\n\n if (!inputBezier.c) {\n count -= 1;\n }\n\n var i;\n var j;\n var segment;\n var multiSegments = [];\n\n for (i = 0; i < count; i += 1) {\n segment = PolynomialBezier.shapeSegment(inputBezier, i);\n multiSegments.push(offsetSegmentSplit(segment, amount));\n }\n\n if (!inputBezier.c) {\n for (i = count - 1; i >= 0; i -= 1) {\n segment = PolynomialBezier.shapeSegmentInverted(inputBezier, i);\n multiSegments.push(offsetSegmentSplit(segment, amount));\n }\n }\n\n multiSegments = pruneIntersections(multiSegments); // Add bezier segments to the output and apply line joints\n\n var lastPoint = null;\n var lastSeg = null;\n\n for (i = 0; i < multiSegments.length; i += 1) {\n var multiSegment = multiSegments[i];\n if (lastSeg) lastPoint = joinLines(outputBezier, lastSeg, multiSegment[0], lineJoin, miterLimit);\n lastSeg = multiSegment[multiSegment.length - 1];\n\n for (j = 0; j < multiSegment.length; j += 1) {\n segment = multiSegment[j];\n\n if (lastPoint && pointEqual(segment.points[0], lastPoint)) {\n outputBezier.setXYAt(segment.points[1][0], segment.points[1][1], 'o', outputBezier.length() - 1);\n } else {\n outputBezier.setTripleAt(segment.points[0][0], segment.points[0][1], segment.points[1][0], segment.points[1][1], segment.points[0][0], segment.points[0][1], outputBezier.length());\n }\n\n outputBezier.setTripleAt(segment.points[3][0], segment.points[3][1], segment.points[3][0], segment.points[3][1], segment.points[2][0], segment.points[2][1], outputBezier.length());\n lastPoint = segment.points[3];\n }\n }\n\n if (multiSegments.length) joinLines(outputBezier, lastSeg, multiSegments[0][0], lineJoin, miterLimit);\n return outputBezier;\n };\n\n OffsetPathModifier.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 var miterLimit = this.miterLimit.v;\n var lineJoin = this.lineJoin;\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, lineJoin, miterLimit));\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 BLACK_FLAG_CODE_POINT = 127988;\n var CANCEL_TAG_CODE_POINT = 917631;\n var A_TAG_CODE_POINT = 917601;\n var Z_TAG_CODE_POINT = 917626;\n var VARIATION_SELECTOR_16_CODE_POINT = 65039;\n var ZERO_WIDTH_JOINER_CODE_POINT = 8205;\n var REGIONAL_CHARACTER_A_CODE_POINT = 127462;\n var REGIONAL_CHARACTER_Z_CODE_POINT = 127487;\n var surrogateModifiers = ['d83cdffb', 'd83cdffc', 'd83cdffd', 'd83cdffe', 'd83cdfff'];\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(fontData, def) {\n var engine = document.body && def ? 'svg' : 'canvas';\n var helper;\n var fontProps = getFontProperties(fontData);\n\n if (engine === 'svg') {\n var tHelper = createNS('text');\n tHelper.style.fontSize = '100px'; // tHelper.style.fontFamily = fontData.fFamily;\n\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 helper = tHelper;\n } else {\n var tCanvasHelper = new OffscreenCanvas(500, 500).getContext('2d');\n tCanvasHelper.font = fontProps.style + ' ' + fontProps.weight + ' 100px ' + fontData.fFamily;\n helper = tCanvasHelper;\n }\n\n function measure(text) {\n if (engine === 'svg') {\n helper.textContent = text;\n return helper.getComputedTextLength();\n }\n\n return helper.measureText(text).width;\n }\n\n return {\n measureText: measure\n };\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 if (!document.body) {\n this.isLoaded = true;\n fontData.list.forEach(function (data) {\n data.helper = createHelper(data);\n data.cache = {};\n });\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(fontArr[i], defs);\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); // Using the char instead of char.charCodeAt(0)\n // to avoid collisions between equal chars\n\n var index = _char2;\n\n if (!fontData.cache[index]) {\n var tHelper = fontData.helper;\n\n if (_char2 === ' ') {\n var doubleSize = tHelper.measureText('|' + _char2 + '|');\n var singleSize = tHelper.measureText('||');\n fontData.cache[index] = (doubleSize - singleSize) / 100;\n } else {\n fontData.cache[index] = tHelper.measureText(_char2) / 100;\n }\n }\n\n return fontData.cache[index] * 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 getCodePoint(string) {\n var codePoint = 0;\n var first = string.charCodeAt(0);\n\n if (first >= 0xD800 && first <= 0xDBFF) {\n var second = string.charCodeAt(1);\n\n if (second >= 0xDC00 && second <= 0xDFFF) {\n codePoint = (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n }\n }\n\n return codePoint;\n } // Skin tone modifiers\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(charCode) {\n return charCode === ZERO_WIDTH_JOINER_CODE_POINT;\n } // This codepoint may change the appearance of the preceding character.\n // If that is a symbol, dingbat or emoji, U+FE0F forces it to be rendered\n // as a colorful image as compared to a monochrome text variant.\n\n\n function isVariationSelector(charCode) {\n return charCode === VARIATION_SELECTOR_16_CODE_POINT;\n } // The regional indicator symbols are a set of 26 alphabetic Unicode\n /// characters (A–Z) intended to be used to encode ISO 3166-1 alpha-2\n // two-letter country codes in a way that allows optional special treatment.\n\n\n function isRegionalCode(string) {\n var codePoint = getCodePoint(string);\n\n if (codePoint >= REGIONAL_CHARACTER_A_CODE_POINT && codePoint <= REGIONAL_CHARACTER_Z_CODE_POINT) {\n return true;\n }\n\n return false;\n } // Some Emoji implementations represent combinations of\n // two “regional indicator” letters as a single flag symbol.\n\n\n function isFlagEmoji(string) {\n return isRegionalCode(string.substr(0, 2)) && isRegionalCode(string.substr(2, 2));\n }\n\n function isCombinedCharacter(_char3) {\n return combinedCharacters.indexOf(_char3) !== -1;\n } // Regional flags start with a BLACK_FLAG_CODE_POINT\n // folowed by 5 chars in the TAG range\n // and end with a CANCEL_TAG_CODE_POINT\n\n\n function isRegionalFlag(text, index) {\n var codePoint = getCodePoint(text.substr(index, 2));\n\n if (codePoint !== BLACK_FLAG_CODE_POINT) {\n return false;\n }\n\n var count = 0;\n index += 2;\n\n while (count < 5) {\n codePoint = getCodePoint(text.substr(index, 2));\n\n if (codePoint < A_TAG_CODE_POINT || codePoint > Z_TAG_CODE_POINT) {\n return false;\n }\n\n count += 1;\n index += 2;\n }\n\n return getCodePoint(text.substr(index, 2)) === CANCEL_TAG_CODE_POINT;\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.isFlagEmoji = isFlagEmoji;\n Font.isRegionalCode = isRegionalCode;\n Font.isCombinedCharacter = isCombinedCharacter;\n Font.isRegionalFlag = isRegionalFlag;\n Font.isVariationSelector = isVariationSelector;\n Font.BLACK_FLAG_CODE_POINT = BLACK_FLAG_CODE_POINT;\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 SlotManager(animationData) {\n this.animationData = animationData;\n }\n\n SlotManager.prototype.getProp = function (data) {\n if (this.animationData.slots && this.animationData.slots[data.sid]) {\n return Object.assign(data, this.animationData.slots[data.sid].p);\n }\n\n return data;\n };\n\n function slotFactory(animationData) {\n return new SlotManager(animationData);\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 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 var expressionsInterfaces = getExpressionInterfaces();\n\n if (!expressionsInterfaces) {\n return;\n }\n\n var LayerExpressionInterface = expressionsInterfaces('layer');\n var EffectsExpressionInterface = expressionsInterfaces('effects');\n var ShapeExpressionInterface = expressionsInterfaces('shape');\n var TextExpressionInterface = expressionsInterfaces('text');\n var CompExpressionInterface = expressionsInterfaces('comp');\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 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 var expressionsInterfaces = getExpressionInterfaces();\n\n if (!expressionsInterfaces) {\n return;\n }\n\n var FootageInterface = expressionsInterfaces('footage');\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._volumeMultiplier = 1;\n this._volume = 1;\n this._previousVolume = null;\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n this.lv = PropertyFactory.getProp(this, data.au && data.au.lv ? data.au.lv : {\n k: [100]\n }, 1, 0.01, this);\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 this._volume = this.lv.v[0];\n var totalVolume = this._volume * this._volumeMultiplier;\n\n if (this._previousVolume !== totalVolume) {\n this._previousVolume = totalVolume;\n this.audio.volume(totalVolume);\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._volumeMultiplier = volumeValue;\n this._previousVolume = volumeValue * this._volume;\n this.audio.volume(this._previousVolume);\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.getElementById = function (ind) {\n var i;\n var len = this.elements.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i].data.ind === ind) {\n return this.elements[i];\n }\n }\n\n return null;\n };\n\n BaseRenderer.prototype.getElementByPath = function (path) {\n var pathValue = path.shift();\n var element;\n\n if (typeof pathValue === 'number') {\n element = this.elements[pathValue];\n } else {\n var i;\n var len = this.elements.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i].data.nm === pathValue) {\n element = this.elements[i];\n break;\n }\n }\n }\n\n if (path.length === 0) {\n return element;\n }\n\n return element.getElementByPath(path);\n };\n\n BaseRenderer.prototype.setupGlobalData = function (animData, fontsContainer) {\n this.globalData.fontManager = new FontManager();\n this.globalData.slotManager = slotFactory(animData);\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 var effectTypes = {\n TRANSFORM_EFFECT: 'transformEFfect'\n };\n\n function TransformElement() {}\n\n TransformElement.prototype = {\n initTransform: function initTransform() {\n var mat = new Matrix();\n this.finalTransform = {\n mProp: this.data.ks ? TransformPropertyFactory.getTransformProperty(this, this.data.ks, this) : {\n o: 0\n },\n _matMdf: false,\n _localMatMdf: false,\n _opMdf: false,\n mat: mat,\n localMat: mat,\n localOpacity: 1\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 finalMat.multiply(this.hierarchy[i].finalTransform.mProp.v);\n }\n }\n }\n\n if (this.finalTransform._matMdf) {\n this.finalTransform._localMatMdf = this.finalTransform._matMdf;\n }\n\n if (this.finalTransform._opMdf) {\n this.finalTransform.localOpacity = this.finalTransform.mProp.o.v;\n }\n },\n renderLocalTransform: function renderLocalTransform() {\n if (this.localTransforms) {\n var i = 0;\n var len = this.localTransforms.length;\n this.finalTransform._localMatMdf = this.finalTransform._matMdf;\n\n if (!this.finalTransform._localMatMdf || !this.finalTransform._opMdf) {\n while (i < len) {\n if (this.localTransforms[i]._mdf) {\n this.finalTransform._localMatMdf = true;\n }\n\n if (this.localTransforms[i]._opMdf && !this.finalTransform._opMdf) {\n this.finalTransform.localOpacity = this.finalTransform.mProp.o.v;\n this.finalTransform._opMdf = true;\n }\n\n i += 1;\n }\n }\n\n if (this.finalTransform._localMatMdf) {\n var localMat = this.finalTransform.localMat;\n this.localTransforms[0].matrix.clone(localMat);\n\n for (i = 1; i < len; i += 1) {\n var lmat = this.localTransforms[i].matrix;\n localMat.multiply(lmat);\n }\n\n localMat.multiply(this.finalTransform.mat);\n }\n\n if (this.finalTransform._opMdf) {\n var localOp = this.finalTransform.localOpacity;\n\n for (i = 0; i < len; i += 1) {\n localOp *= this.localTransforms[i].opacity * 0.01;\n }\n\n this.finalTransform.localOpacity = localOp;\n }\n }\n },\n searchEffectTransforms: function searchEffectTransforms() {\n if (this.renderableEffectsManager) {\n var transformEffects = this.renderableEffectsManager.getEffects(effectTypes.TRANSFORM_EFFECT);\n\n if (transformEffects.length) {\n this.localTransforms = [];\n this.finalTransform.localMat = new Matrix();\n var i = 0;\n var len = transformEffects.length;\n\n for (i = 0; i < len; i += 1) {\n this.localTransforms.push(transformEffects[i]);\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 svgLumaHidden: true,\n offscreenCanvas: typeof OffscreenCanvas !== 'undefined'\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 if (/firefox/i.test(navigator.userAgent)) {\n ob.svgLumaHidden = false;\n }\n\n return ob;\n }();\n\n var registeredEffects$1 = {};\n var idPrefix = 'filter_result_';\n\n function SVGEffects(elem) {\n var i;\n var source = 'SourceGraphic';\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$1[type]) {\n var Effect = registeredEffects$1[type].effect;\n filterManager = new Effect(fil, elem.effectsManager.effectElements[i], elem, idPrefix + count, source);\n source = idPrefix + count;\n\n if (registeredEffects$1[type].countsAsEffect) {\n count += 1;\n }\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 SVGEffects.prototype.getEffects = function (type) {\n var i;\n var len = this.filters.length;\n var effects = [];\n\n for (i = 0; i < len; i += 1) {\n if (this.filters[i].type === type) {\n effects.push(this.filters[i]);\n }\n }\n\n return effects;\n };\n\n function registerEffect$1(id, effect, countsAsEffect) {\n registeredEffects$1[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 if (this.data.td) {\n this.matteMasks = {};\n var gg = createNS('g');\n gg.setAttribute('id', this.layerId);\n gg.appendChild(this.layerElement);\n layerElementParent = gg;\n this.globalData.defs.appendChild(gg);\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._localMatMdf) {\n this.transformedElement.setAttribute('transform', this.finalTransform.localMat.to2dCSS());\n }\n\n if (this.finalTransform._opMdf) {\n this.transformedElement.setAttribute('opacity', this.finalTransform.localOpacity);\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 this.searchEffectTransforms();\n },\n getMatte: function getMatte(matteType) {\n // This should not be a common case. But for backward compatibility, we'll create the matte object.\n // It solves animations that have two consecutive layers marked as matte masks.\n // Which is an undefined behavior in AE.\n if (!this.matteMasks) {\n this.matteMasks = {};\n }\n\n if (!this.matteMasks[matteType]) {\n var id = this.layerId + '_' + matteType;\n var filId;\n var fil;\n var useElement;\n var gg;\n\n if (matteType === 1 || matteType === 3) {\n var masker = createNS('mask');\n masker.setAttribute('id', id);\n masker.setAttribute('mask-type', matteType === 3 ? 'luminance' : 'alpha');\n useElement = createNS('use');\n useElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#' + this.layerId);\n masker.appendChild(useElement);\n this.globalData.defs.appendChild(masker);\n\n if (!featureSupport.maskType && matteType === 1) {\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(useElement);\n masker.appendChild(gg);\n gg.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n }\n } else if (matteType === 2) {\n var maskGroup = createNS('mask');\n maskGroup.setAttribute('id', id);\n maskGroup.setAttribute('mask-type', 'alpha');\n var maskGrouper = createNS('g');\n maskGroup.appendChild(maskGrouper);\n filId = createElementID();\n fil = filtersFactory.createFilter(filId); /// /\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 useElement = createNS('use');\n useElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#' + this.layerId);\n maskGrouper.appendChild(useElement);\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 maskGrouper.appendChild(gg);\n }\n\n this.globalData.defs.appendChild(maskGroup);\n }\n\n this.matteMasks[matteType] = id;\n }\n\n return this.matteMasks[matteType];\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.renderLocalTransform();\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\n if (this.assetData && this.assetData.sid) {\n this.assetData = globalData.slotManager.getProp(this.assetData);\n }\n\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 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 mat.multiply(itemData.transformers[k].mProps.v);\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' || arr[i].ty === 'zz' || arr[i].ty === 'op') {\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\n if (data.d && data.d.sid) {\n data.d = elem.globalData.slotManager.getProp(data.d);\n }\n\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 var shouldCombineNext = false;\n var currentChars = '';\n\n while (i < len) {\n shouldCombine = shouldCombineNext;\n shouldCombineNext = false;\n charCode = text.charCodeAt(i);\n currentChars = text.charAt(i);\n\n if (FontManager.isCombinedCharacter(charCode)) {\n shouldCombine = true; // It's a potential surrogate pair (this is the High surrogate)\n } else if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n if (FontManager.isRegionalFlag(text, i)) {\n currentChars = text.substr(i, 14);\n } else {\n secondCharCode = text.charCodeAt(i + 1); // It's a surrogate pair (this is the Low surrogate)\n\n if (secondCharCode >= 0xDC00 && secondCharCode <= 0xDFFF) {\n if (FontManager.isModifier(charCode, secondCharCode)) {\n currentChars = text.substr(i, 2);\n shouldCombine = true;\n } else if (FontManager.isFlagEmoji(text.substr(i, 4))) {\n currentChars = text.substr(i, 4);\n } else {\n currentChars = text.substr(i, 2);\n }\n }\n }\n } else if (charCode > 0xDBFF) {\n secondCharCode = text.charCodeAt(i + 1);\n\n if (FontManager.isVariationSelector(charCode)) {\n shouldCombine = true;\n }\n } else if (FontManager.isZeroWidthJoiner(charCode)) {\n shouldCombine = true;\n shouldCombineNext = true;\n }\n\n if (shouldCombine) {\n charactersArray[charactersArray.length - 1] += currentChars;\n shouldCombine = false;\n } else {\n charactersArray.push(currentChars);\n }\n\n i += currentChars.length;\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.setCurrentData(dData);\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\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 ITextElement.prototype.validateText = function () {\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 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.buildShapeData = function (data, scale) {\n // data should probably be cloned to apply scale separately to each instance of a text on different layers\n // but since text internal content gets only rendered once and then it's never rerendered,\n // it's probably safe not to clone data and reuse always the same instance even if the object is mutated.\n // Avoiding cloning is preferred since cloning each character shape data is expensive\n if (data.shapes && data.shapes.length) {\n var shape = data.shapes[0];\n\n if (shape.it) {\n var shapeItem = shape.it[shape.it.length - 1];\n\n if (shapeItem.s) {\n shapeItem.s.k[0] = scale;\n shapeItem.s.k[1] = scale;\n }\n }\n }\n\n return data;\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\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; // t === 1 means the character has been replaced with an animated shaped\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 = this.buildShapeData(charData.data, documentData.finalSize);\n }\n\n glyphElement = new SVGShapeElement(data, this.globalData, this);\n }\n\n if (this.textSpans[i].glyph) {\n var glyph = this.textSpans[i].glyph;\n this.textSpans[i].childSpan.removeChild(glyph.layerElement);\n glyph.destroy();\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); // when using animated shapes, the layer will be scaled instead of replacing the internal scale\n // this might have issues with strokes and might need a different solution\n\n if (charData.t === 1) {\n this.textSpans[i].childSpan.setAttribute('transform', 'scale(' + documentData.finalSize / 100 + ',' + documentData.finalSize / 100 + ')');\n }\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 this.validateText();\n\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 this.svgElement.setAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink');\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.width) {\n this.svgElement.setAttribute('width', this.renderConfig.width);\n }\n\n if (this.renderConfig.height) {\n this.svgElement.setAttribute('height', this.renderConfig.height);\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] && this.elements[i].destroy) {\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.findIndexByInd = function (ind) {\n var i = 0;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.layers[i].ind === ind) {\n return i;\n }\n }\n\n return -1;\n };\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 var elementIndex = 'tp' in this.layers[pos] ? this.findIndexByInd(this.layers[pos].tp) : pos - 1;\n\n if (elementIndex === -1) {\n return;\n }\n\n if (!this.elements[elementIndex] || this.elements[elementIndex] === true) {\n this.buildItem(elementIndex);\n this.addPendingElement(element);\n } else {\n var matteElement = elements[elementIndex];\n var matteMask = matteElement.getMatte(this.layers[pos].tt);\n element.setMatte(matteMask);\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 var elementIndex = 'tp' in element.data ? this.findIndexByInd(element.data.tp) : i - 1;\n var matteElement = this.elements[elementIndex];\n var matteMask = matteElement.getMatte(this.layers[i].tt);\n element.setMatte(matteMask);\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 width: config && config.width,\n height: config && config.height,\n runExpressions: !config || config.runExpressions === undefined || config.runExpressions\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 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 sequence.finalTransform.reset();\n\n for (i = len - 1; i >= 0; i -= 1) {\n sequence.finalTransform.multiply(sequence.transforms[i].transform.mProps.v);\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 var lumaLoader = function lumaLoader() {\n var id = '__lottie_element_luma_buffer';\n var lumaBuffer = null;\n var lumaBufferCtx = null;\n var svg = null; // This alternate solution has a slight delay before the filter is applied, resulting in a flicker on the first frame.\n // Keeping this here for reference, and in the future, if offscreen canvas supports url filters, this can be used.\n // For now, neither of them work for offscreen canvas, so canvas workers can't support the luma track matte mask.\n // Naming it solution 2 to mark the extra comment lines.\n\n /*\r\n var svgString = [\r\n '',\r\n ].join('');\r\n var blob = new Blob([svgString], { type: 'image/svg+xml' });\r\n var url = URL.createObjectURL(blob);\r\n */\n\n function createLumaSvgFilter() {\n var _svg = createNS('svg');\n\n var fil = createNS('filter');\n var matrix = createNS('feColorMatrix');\n fil.setAttribute('id', id);\n matrix.setAttribute('type', 'matrix');\n matrix.setAttribute('color-interpolation-filters', 'sRGB');\n matrix.setAttribute('values', '0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0');\n fil.appendChild(matrix);\n\n _svg.appendChild(fil);\n\n _svg.setAttribute('id', id + '_svg');\n\n if (featureSupport.svgLumaHidden) {\n _svg.style.display = 'none';\n }\n\n return _svg;\n }\n\n function loadLuma() {\n if (!lumaBuffer) {\n svg = createLumaSvgFilter();\n document.body.appendChild(svg);\n lumaBuffer = createTag('canvas');\n lumaBufferCtx = lumaBuffer.getContext('2d'); // lumaBufferCtx.filter = `url('${url}#__lottie_element_luma_buffer')`; // part of solution 2\n\n lumaBufferCtx.filter = 'url(#' + id + ')';\n lumaBufferCtx.fillStyle = 'rgba(0,0,0,0)';\n lumaBufferCtx.fillRect(0, 0, 1, 1);\n }\n }\n\n function getLuma(canvas) {\n if (!lumaBuffer) {\n loadLuma();\n }\n\n lumaBuffer.width = canvas.width;\n lumaBuffer.height = canvas.height; // lumaBufferCtx.filter = `url('${url}#__lottie_element_luma_buffer')`; // part of solution 2\n\n lumaBufferCtx.filter = 'url(#' + id + ')';\n return lumaBuffer;\n }\n\n return {\n load: loadLuma,\n get: getLuma\n };\n };\n\n function createCanvas(width, height) {\n if (featureSupport.offscreenCanvas) {\n return new OffscreenCanvas(width, height);\n }\n\n var canvas = createTag('canvas');\n canvas.width = width;\n canvas.height = height;\n return canvas;\n }\n\n var assetLoader = function () {\n return {\n loadLumaCanvas: lumaLoader.load,\n getLumaCanvas: lumaLoader.get,\n createCanvas: createCanvas\n };\n }();\n\n var registeredEffects = {};\n\n function CVEffects(elem) {\n var i;\n var len = elem.data.ef ? elem.data.ef.length : 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(elem.effectsManager.effectElements[i], elem);\n }\n\n if (filterManager) {\n this.filters.push(filterManager);\n }\n }\n\n if (this.filters.length) {\n elem.addRenderableComponent(this);\n }\n }\n\n CVEffects.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 CVEffects.prototype.getEffects = function (type) {\n var i;\n var len = this.filters.length;\n var effects = [];\n\n for (i = 0; i < len; i += 1) {\n if (this.filters[i].type === type) {\n effects.push(this.filters[i]);\n }\n }\n\n return effects;\n };\n\n function registerEffect(id, effect) {\n registeredEffects[id] = {\n effect: effect\n };\n }\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 var operationsMap = {\n 1: 'source-in',\n 2: 'source-out',\n 3: 'source-in',\n 4: 'source-out'\n };\n CVBaseElement.prototype = {\n createElements: function createElements() {},\n initRendererElement: function initRendererElement() {},\n createContainerElements: function createContainerElements() {\n // If the layer is masked we will use two buffers to store each different states of the drawing\n // This solution is not ideal for several reason. But unfortunately, because of the recursive\n // nature of the render tree, it's the only simple way to make sure one inner mask doesn't override an outer mask.\n // TODO: try to reduce the size of these buffers to the size of the composition contaning the layer\n // It might be challenging because the layer most likely is transformed in some way\n if (this.data.tt >= 1) {\n this.buffers = [];\n var canvasContext = this.globalData.canvasContext;\n var bufferCanvas = assetLoader.createCanvas(canvasContext.canvas.width, canvasContext.canvas.height);\n this.buffers.push(bufferCanvas);\n var bufferCanvas2 = assetLoader.createCanvas(canvasContext.canvas.width, canvasContext.canvas.height);\n this.buffers.push(bufferCanvas2);\n\n if (this.data.tt >= 3 && !document._isProxy) {\n assetLoader.loadLumaCanvas();\n }\n }\n\n this.canvasContext = this.globalData.canvasContext;\n this.transformCanvas = this.globalData.transformCanvas;\n this.renderableEffectsManager = new CVEffects(this);\n this.searchEffectTransforms();\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 this.transformEffects = this.renderableEffectsManager.getEffects(effectTypes.TRANSFORM_EFFECT);\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 clearCanvas: function clearCanvas(canvasContext) {\n canvasContext.clearRect(this.transformCanvas.tx, this.transformCanvas.ty, this.transformCanvas.w * this.transformCanvas.sx, this.transformCanvas.h * this.transformCanvas.sy);\n },\n prepareLayer: function prepareLayer() {\n if (this.data.tt >= 1) {\n var buffer = this.buffers[0];\n var bufferCtx = buffer.getContext('2d');\n this.clearCanvas(bufferCtx); // on the first buffer we store the current state of the global drawing\n\n bufferCtx.drawImage(this.canvasContext.canvas, 0, 0); // The next four lines are to clear the canvas\n // TODO: Check if there is a way to clear the canvas without resetting the transform\n\n this.currentTransform = this.canvasContext.getTransform();\n this.canvasContext.setTransform(1, 0, 0, 1, 0, 0);\n this.clearCanvas(this.canvasContext);\n this.canvasContext.setTransform(this.currentTransform);\n }\n },\n exitLayer: function exitLayer() {\n if (this.data.tt >= 1) {\n var buffer = this.buffers[1]; // On the second buffer we store the current state of the global drawing\n // that only contains the content of this layer\n // (if it is a composition, it also includes the nested layers)\n\n var bufferCtx = buffer.getContext('2d');\n this.clearCanvas(bufferCtx);\n bufferCtx.drawImage(this.canvasContext.canvas, 0, 0); // We clear the canvas again\n\n this.canvasContext.setTransform(1, 0, 0, 1, 0, 0);\n this.clearCanvas(this.canvasContext);\n this.canvasContext.setTransform(this.currentTransform); // We draw the mask\n\n var mask = this.comp.getElementById('tp' in this.data ? this.data.tp : this.data.ind - 1);\n mask.renderFrame(true); // We draw the second buffer (that contains the content of this layer)\n\n this.canvasContext.setTransform(1, 0, 0, 1, 0, 0); // If the mask is a Luma matte, we need to do two extra painting operations\n // the _isProxy check is to avoid drawing a fake canvas in workers that will throw an error\n\n if (this.data.tt >= 3 && !document._isProxy) {\n // We copy the painted mask to a buffer that has a color matrix filter applied to it\n // that applies the rgb values to the alpha channel\n var lumaBuffer = assetLoader.getLumaCanvas(this.canvasContext.canvas);\n var lumaBufferCtx = lumaBuffer.getContext('2d');\n lumaBufferCtx.drawImage(this.canvasContext.canvas, 0, 0);\n this.clearCanvas(this.canvasContext); // we repaint the context with the mask applied to it\n\n this.canvasContext.drawImage(lumaBuffer, 0, 0);\n }\n\n this.canvasContext.globalCompositeOperation = operationsMap[this.data.tt];\n this.canvasContext.drawImage(buffer, 0, 0); // We finally draw the first buffer (that contains the content of the global drawing)\n // We use destination-over to draw the global drawing below the current layer\n\n this.canvasContext.globalCompositeOperation = 'destination-over';\n this.canvasContext.drawImage(this.buffers[0], 0, 0);\n this.canvasContext.setTransform(this.currentTransform); // We reset the globalCompositeOperation to source-over, the standard type of operation\n\n this.canvasContext.globalCompositeOperation = 'source-over';\n }\n },\n renderFrame: function renderFrame(forceRender) {\n if (this.hidden || this.data.hd) {\n return;\n }\n\n if (this.data.td === 1 && !forceRender) {\n return;\n }\n\n this.renderTransform();\n this.renderRenderable();\n this.renderLocalTransform();\n this.setBlendMode();\n var forceRealStack = this.data.ty === 0;\n this.prepareLayer();\n this.globalData.renderer.save(forceRealStack);\n this.globalData.renderer.ctxTransform(this.finalTransform.localMat.props);\n this.globalData.renderer.ctxOpacity(this.finalTransform.localOpacity);\n this.renderInnerContent();\n this.globalData.renderer.restore(forceRealStack);\n this.exitLayer();\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' || arr[i].ty === 'zz' || arr[i].ty === 'op') {\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 renderer.ctxStrokeStyle(type === 'st' ? currentStyle.co : currentStyle.grd); // ctx.strokeStyle = type === 'st' ? currentStyle.co : currentStyle.grd;\n\n renderer.ctxLineWidth(currentStyle.wi); // ctx.lineWidth = currentStyle.wi;\n\n renderer.ctxLineCap(currentStyle.lc); // ctx.lineCap = currentStyle.lc;\n\n renderer.ctxLineJoin(currentStyle.lj); // ctx.lineJoin = currentStyle.lj;\n\n renderer.ctxMiterLimit(currentStyle.ml || 0); // ctx.miterLimit = currentStyle.ml || 0;\n } else {\n renderer.ctxFillStyle(type === 'fl' ? currentStyle.co : currentStyle.grd); // 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 renderer.ctxStroke();\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 this.globalData.renderer.ctxFill(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 this.validateText();\n var ctx = this.canvasContext;\n ctx.font = this.values.fValue;\n this.globalData.renderer.ctxLineCap('butt'); // ctx.lineCap = 'butt';\n\n this.globalData.renderer.ctxLineJoin('miter'); // ctx.lineJoin = 'miter';\n\n this.globalData.renderer.ctxMiterLimit(4); // 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 var renderer = this.globalData.renderer;\n\n for (i = 0; i < len; i += 1) {\n if (!letters[i].n) {\n renderedLetter = renderedLetters[i];\n\n if (renderedLetter) {\n renderer.save();\n renderer.ctxTransform(renderedLetter.p);\n renderer.ctxOpacity(renderedLetter.o);\n }\n\n if (this.fill) {\n if (renderedLetter && renderedLetter.fc) {\n if (lastFill !== renderedLetter.fc) {\n renderer.ctxFillStyle(renderedLetter.fc);\n lastFill = renderedLetter.fc; // ctx.fillStyle = renderedLetter.fc;\n }\n } else if (lastFill !== this.values.fill) {\n lastFill = this.values.fill;\n renderer.ctxFillStyle(this.values.fill); // 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 renderer.ctxFill(); // this.globalData.canvasContext.fill();\n /// 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 renderer.ctxLineWidth(renderedLetter.sw); // ctx.lineWidth = renderedLetter.sw;\n }\n } else if (lastStrokeW !== this.values.sWidth) {\n lastStrokeW = this.values.sWidth;\n renderer.ctxLineWidth(this.values.sWidth); // ctx.lineWidth = this.values.sWidth;\n }\n\n if (renderedLetter && renderedLetter.sc) {\n if (lastStroke !== renderedLetter.sc) {\n lastStroke = renderedLetter.sc;\n renderer.ctxStrokeStyle(renderedLetter.sc); // ctx.strokeStyle = renderedLetter.sc;\n }\n } else if (lastStroke !== this.values.stroke) {\n lastStroke = this.values.stroke;\n renderer.ctxStrokeStyle(this.values.stroke); // 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 renderer.ctxStroke(); // this.globalData.canvasContext.stroke();\n /// 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 this.globalData.renderer.ctxFillStyle(this.data.sc); // ctx.fillStyle = this.data.sc;\n\n this.globalData.renderer.ctxFillRect(0, 0, this.data.sw, this.data.sh); // ctx.fillRect(0, 0, this.data.sw, this.data.sh);\n //\n };\n\n function CanvasRendererBase() {}\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 this.canvasContext.transform(props[0], props[1], props[4], props[5], props[12], props[13]);\n };\n\n CanvasRendererBase.prototype.ctxOpacity = function (op) {\n this.canvasContext.globalAlpha *= op < 0 ? 0 : op;\n };\n\n CanvasRendererBase.prototype.ctxFillStyle = function (value) {\n this.canvasContext.fillStyle = value;\n };\n\n CanvasRendererBase.prototype.ctxStrokeStyle = function (value) {\n this.canvasContext.strokeStyle = value;\n };\n\n CanvasRendererBase.prototype.ctxLineWidth = function (value) {\n this.canvasContext.lineWidth = value;\n };\n\n CanvasRendererBase.prototype.ctxLineCap = function (value) {\n this.canvasContext.lineCap = value;\n };\n\n CanvasRendererBase.prototype.ctxLineJoin = function (value) {\n this.canvasContext.lineJoin = value;\n };\n\n CanvasRendererBase.prototype.ctxMiterLimit = function (value) {\n this.canvasContext.miterLimit = value;\n };\n\n CanvasRendererBase.prototype.ctxFill = function (rule) {\n this.canvasContext.fill(rule);\n };\n\n CanvasRendererBase.prototype.ctxFillRect = function (x, y, w, h) {\n this.canvasContext.fillRect(x, y, w, h);\n };\n\n CanvasRendererBase.prototype.ctxStroke = function () {\n this.canvasContext.stroke();\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 () {\n this.canvasContext.save();\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.globalData.blendMode = 'source-over';\n }\n\n this.contextData.restore(actionFlag);\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.contextData.setContext(this.canvasContext);\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 (width, height) {\n this.reset();\n var elementWidth;\n var elementHeight;\n\n if (width) {\n elementWidth = width;\n elementHeight = height;\n this.canvasContext.canvas.width = elementWidth;\n this.canvasContext.canvas.height = elementHeight;\n } else {\n if (this.animationItem.wrapper && this.animationItem.container) {\n elementWidth = this.animationItem.wrapper.offsetWidth;\n elementHeight = this.animationItem.wrapper.offsetHeight;\n } else {\n elementWidth = this.canvasContext.canvas.width;\n elementHeight = this.canvasContext.canvas.height;\n }\n\n this.canvasContext.canvas.width = elementWidth * this.renderConfig.dpr;\n this.canvasContext.canvas.height = elementHeight * 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] && this.elements[i].destroy) {\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 = 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 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 CanvasContext() {\n this.opacity = -1;\n this.transform = createTypedArray('float32', 16);\n this.fillStyle = '';\n this.strokeStyle = '';\n this.lineWidth = '';\n this.lineCap = '';\n this.lineJoin = '';\n this.miterLimit = '';\n this.id = Math.random();\n }\n\n function CVContextData() {\n this.stack = [];\n this.cArrPos = 0;\n this.cTr = new Matrix();\n var i;\n var len = 15;\n\n for (i = 0; i < len; i += 1) {\n var canvasContext = new CanvasContext();\n this.stack[i] = canvasContext;\n }\n\n this._length = len;\n this.nativeContext = null;\n this.transformMat = new Matrix();\n this.currentOpacity = 1; //\n\n this.currentFillStyle = '';\n this.appliedFillStyle = ''; //\n\n this.currentStrokeStyle = '';\n this.appliedStrokeStyle = ''; //\n\n this.currentLineWidth = '';\n this.appliedLineWidth = ''; //\n\n this.currentLineCap = '';\n this.appliedLineCap = ''; //\n\n this.currentLineJoin = '';\n this.appliedLineJoin = ''; //\n\n this.appliedMiterLimit = '';\n this.currentMiterLimit = '';\n }\n\n CVContextData.prototype.duplicate = function () {\n var newLength = this._length * 2;\n var i = 0;\n\n for (i = this._length; i < newLength; i += 1) {\n this.stack[i] = new CanvasContext();\n }\n\n this._length = newLength;\n };\n\n CVContextData.prototype.reset = function () {\n this.cArrPos = 0;\n this.cTr.reset();\n this.stack[this.cArrPos].opacity = 1;\n };\n\n CVContextData.prototype.restore = function (forceRestore) {\n this.cArrPos -= 1;\n var currentContext = this.stack[this.cArrPos];\n var transform = currentContext.transform;\n var i;\n var arr = this.cTr.props;\n\n for (i = 0; i < 16; i += 1) {\n arr[i] = transform[i];\n }\n\n if (forceRestore) {\n this.nativeContext.restore();\n var prevStack = this.stack[this.cArrPos + 1];\n this.appliedFillStyle = prevStack.fillStyle;\n this.appliedStrokeStyle = prevStack.strokeStyle;\n this.appliedLineWidth = prevStack.lineWidth;\n this.appliedLineCap = prevStack.lineCap;\n this.appliedLineJoin = prevStack.lineJoin;\n this.appliedMiterLimit = prevStack.miterLimit;\n }\n\n this.nativeContext.setTransform(transform[0], transform[1], transform[4], transform[5], transform[12], transform[13]);\n\n if (forceRestore || currentContext.opacity !== -1 && this.currentOpacity !== currentContext.opacity) {\n this.nativeContext.globalAlpha = currentContext.opacity;\n this.currentOpacity = currentContext.opacity;\n }\n\n this.currentFillStyle = currentContext.fillStyle;\n this.currentStrokeStyle = currentContext.strokeStyle;\n this.currentLineWidth = currentContext.lineWidth;\n this.currentLineCap = currentContext.lineCap;\n this.currentLineJoin = currentContext.lineJoin;\n this.currentMiterLimit = currentContext.miterLimit;\n };\n\n CVContextData.prototype.save = function (saveOnNativeFlag) {\n if (saveOnNativeFlag) {\n this.nativeContext.save();\n }\n\n var props = this.cTr.props;\n\n if (this._length <= this.cArrPos) {\n this.duplicate();\n }\n\n var currentStack = this.stack[this.cArrPos];\n var i;\n\n for (i = 0; i < 16; i += 1) {\n currentStack.transform[i] = props[i];\n }\n\n this.cArrPos += 1;\n var newStack = this.stack[this.cArrPos];\n newStack.opacity = currentStack.opacity;\n newStack.fillStyle = currentStack.fillStyle;\n newStack.strokeStyle = currentStack.strokeStyle;\n newStack.lineWidth = currentStack.lineWidth;\n newStack.lineCap = currentStack.lineCap;\n newStack.lineJoin = currentStack.lineJoin;\n newStack.miterLimit = currentStack.miterLimit;\n };\n\n CVContextData.prototype.setOpacity = function (value) {\n this.stack[this.cArrPos].opacity = value;\n };\n\n CVContextData.prototype.setContext = function (value) {\n this.nativeContext = value;\n };\n\n CVContextData.prototype.fillStyle = function (value) {\n if (this.stack[this.cArrPos].fillStyle !== value) {\n this.currentFillStyle = value;\n this.stack[this.cArrPos].fillStyle = value;\n }\n };\n\n CVContextData.prototype.strokeStyle = function (value) {\n if (this.stack[this.cArrPos].strokeStyle !== value) {\n this.currentStrokeStyle = value;\n this.stack[this.cArrPos].strokeStyle = value;\n }\n };\n\n CVContextData.prototype.lineWidth = function (value) {\n if (this.stack[this.cArrPos].lineWidth !== value) {\n this.currentLineWidth = value;\n this.stack[this.cArrPos].lineWidth = value;\n }\n };\n\n CVContextData.prototype.lineCap = function (value) {\n if (this.stack[this.cArrPos].lineCap !== value) {\n this.currentLineCap = value;\n this.stack[this.cArrPos].lineCap = value;\n }\n };\n\n CVContextData.prototype.lineJoin = function (value) {\n if (this.stack[this.cArrPos].lineJoin !== value) {\n this.currentLineJoin = value;\n this.stack[this.cArrPos].lineJoin = value;\n }\n };\n\n CVContextData.prototype.miterLimit = function (value) {\n if (this.stack[this.cArrPos].miterLimit !== value) {\n this.currentMiterLimit = value;\n this.stack[this.cArrPos].miterLimit = value;\n }\n };\n\n CVContextData.prototype.transform = function (props) {\n this.transformMat.cloneFromProps(props); // Taking the last transform value from the stored stack of transforms\n\n var currentTransform = this.cTr; // Applying the last transform value after the new transform to respect the order of transformations\n\n this.transformMat.multiply(currentTransform); // Storing the new transformed value in the stored transform\n\n currentTransform.cloneFromProps(this.transformMat.props);\n var trProps = currentTransform.props; // Applying the new transform to the canvas\n\n this.nativeContext.setTransform(trProps[0], trProps[1], trProps[4], trProps[5], trProps[12], trProps[13]);\n };\n\n CVContextData.prototype.opacity = function (op) {\n var currentOpacity = this.stack[this.cArrPos].opacity;\n currentOpacity *= op < 0 ? 0 : op;\n\n if (this.stack[this.cArrPos].opacity !== currentOpacity) {\n if (this.currentOpacity !== op) {\n this.nativeContext.globalAlpha = op;\n this.currentOpacity = op;\n }\n\n this.stack[this.cArrPos].opacity = currentOpacity;\n }\n };\n\n CVContextData.prototype.fill = function (rule) {\n if (this.appliedFillStyle !== this.currentFillStyle) {\n this.appliedFillStyle = this.currentFillStyle;\n this.nativeContext.fillStyle = this.appliedFillStyle;\n }\n\n this.nativeContext.fill(rule);\n };\n\n CVContextData.prototype.fillRect = function (x, y, w, h) {\n if (this.appliedFillStyle !== this.currentFillStyle) {\n this.appliedFillStyle = this.currentFillStyle;\n this.nativeContext.fillStyle = this.appliedFillStyle;\n }\n\n this.nativeContext.fillRect(x, y, w, h);\n };\n\n CVContextData.prototype.stroke = function () {\n if (this.appliedStrokeStyle !== this.currentStrokeStyle) {\n this.appliedStrokeStyle = this.currentStrokeStyle;\n this.nativeContext.strokeStyle = this.appliedStrokeStyle;\n }\n\n if (this.appliedLineWidth !== this.currentLineWidth) {\n this.appliedLineWidth = this.currentLineWidth;\n this.nativeContext.lineWidth = this.appliedLineWidth;\n }\n\n if (this.appliedLineCap !== this.currentLineCap) {\n this.appliedLineCap = this.currentLineCap;\n this.nativeContext.lineCap = this.appliedLineCap;\n }\n\n if (this.appliedLineJoin !== this.currentLineJoin) {\n this.appliedLineJoin = this.currentLineJoin;\n this.nativeContext.lineJoin = this.appliedLineJoin;\n }\n\n if (this.appliedMiterLimit !== this.currentMiterLimit) {\n this.appliedMiterLimit = this.currentMiterLimit;\n this.nativeContext.miterLimit = this.appliedMiterLimit;\n }\n\n this.nativeContext.stroke();\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 runExpressions: !config || config.runExpressions === undefined || config.runExpressions\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 if (this.renderConfig.clearCanvas) {\n this.ctxTransform = this.contextData.transform.bind(this.contextData);\n this.ctxOpacity = this.contextData.opacity.bind(this.contextData);\n this.ctxFillStyle = this.contextData.fillStyle.bind(this.contextData);\n this.ctxStrokeStyle = this.contextData.strokeStyle.bind(this.contextData);\n this.ctxLineWidth = this.contextData.lineWidth.bind(this.contextData);\n this.ctxLineCap = this.contextData.lineCap.bind(this.contextData);\n this.ctxLineJoin = this.contextData.lineJoin.bind(this.contextData);\n this.ctxMiterLimit = this.contextData.miterLimit.bind(this.contextData);\n this.ctxFill = this.contextData.fill.bind(this.contextData);\n this.ctxFillRect = this.contextData.fillRect.bind(this.contextData);\n this.ctxStroke = this.contextData.stroke.bind(this.contextData);\n this.save = this.contextData.save.bind(this.contextData);\n }\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 } else if (itemsData[i] && itemsData[i].style && itemsData[i].w) {\n this.expandStrokeBoundingBox(itemsData[i].w, boundingBox);\n }\n }\n };\n\n HShapeElement.prototype.expandStrokeBoundingBox = function (widthProperty, boundingBox) {\n var width = 0;\n\n if (widthProperty.keyframes) {\n for (var i = 0; i < widthProperty.keyframes.length; i += 1) {\n var kfw = widthProperty.keyframes[i].s;\n\n if (kfw > width) {\n width = kfw;\n }\n }\n\n width *= widthProperty.mult;\n } else {\n width = widthProperty.v * widthProperty.mult;\n }\n\n boundingBox.x -= width;\n boundingBox.xMax += width;\n boundingBox.y -= width;\n boundingBox.yMax += width;\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 this.validateText();\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 if (this.elements[i] && this.elements[i].destroy) {\n this.elements[i].destroy();\n }\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 runExpressions: !config || config.runExpressions === undefined || config.runExpressions\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 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 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 /* 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$2(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$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 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 var _lottieGlobal = {};\n initialize$2(BMMath);\n\n function resetFrame() {\n _lottieGlobal = {};\n }\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' || v instanceof Number || tOfV === 'boolean' || tOfV === 'string';\n }\n\n function $bm_neg(a) {\n var tOfA = _typeof$1(a);\n\n if (tOfA === 'number' || a instanceof Number || tOfA === 'boolean') {\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$1(a);\n\n var tOfB = _typeof$1(b);\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b) || tOfA === 'string' || tOfB === 'string') {\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$1(a);\n\n var tOfB = _typeof$1(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$1(a);\n\n var tOfB = _typeof$1(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$1(a);\n\n var tOfB = _typeof$1(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 // Bail out if we don't want expressions\n function noOp(_value) {\n return _value;\n }\n\n if (!elem.globalData.renderConfig.runExpressions) {\n return noOp;\n }\n\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, time, 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, _lottieGlobal];\n ob.resetFrame = resetFrame;\n return ob;\n }();\n\n var Expressions = function () {\n var ob = {};\n ob.initExpressions = initExpressions;\n ob.resetFrame = ExpressionManager.resetFrame;\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 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 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 _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 (!_sourceText || stringValue !== _sourceText.value) {\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 Object.defineProperty(_sourceText, 'style', {\n get: function get() {\n return {\n fillColor: elem.textProperty.currentData.fc\n };\n }\n });\n }\n\n return _sourceText;\n }\n });\n return _thisLayerFunction;\n };\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 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(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(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 var interfaces = {\n layer: LayerExpressionInterface,\n effects: EffectsExpressionInterface,\n comp: CompExpressionInterface,\n shape: ShapeExpressionInterface,\n text: TextExpressionInterface,\n footage: FootageInterface\n };\n\n function getInterface(type) {\n return interfaces[type] || null;\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 function SVGComposableEffect() {}\n\n SVGComposableEffect.prototype = {\n createMergeNode: function createMergeNode(resultId, ins) {\n var feMerge = createNS('feMerge');\n feMerge.setAttribute('result', resultId);\n var feMergeNode;\n var i;\n\n for (i = 0; i < ins.length; i += 1) {\n feMergeNode = createNS('feMergeNode');\n feMergeNode.setAttribute('in', ins[i]);\n feMerge.appendChild(feMergeNode);\n feMerge.appendChild(feMergeNode);\n }\n\n return feMerge;\n }\n };\n\n var linearFilterValue = '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';\n\n function SVGTintFilter(filter, filterManager, elem, id, source) {\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', linearFilterValue + ' 1 0');\n this.linearFilter = feColorMatrix;\n feColorMatrix.setAttribute('result', id + '_tint_1');\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', id + '_tint_2');\n filter.appendChild(feColorMatrix);\n this.matrixFilter = feColorMatrix;\n var feMerge = this.createMergeNode(id, [source, id + '_tint_1', id + '_tint_2']);\n filter.appendChild(feMerge);\n }\n\n extendPrototype([SVGComposableEffect], SVGTintFilter);\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.linearFilter.setAttribute('values', linearFilterValue + ' ' + opacity + ' 0');\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 1 0');\n }\n };\n\n function SVGFillFilter(filter, filterManager, elem, id) {\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 feColorMatrix.setAttribute('result', id);\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(fil, filterManager, elem) {\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, elem, id) {\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 filter.appendChild(feColorMatrix);\n var feComponentTransfer = createNS('feComponentTransfer');\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n feComponentTransfer.setAttribute('result', id);\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 filter.appendChild(feComponentTransfer);\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);\n }\n };\n\n function SVGProLevelsFilter(filter, filterManager, elem, id) {\n this.filterManager = filterManager;\n var effectElements = this.filterManager.effectElements;\n var feComponentTransfer = createNS('feComponentTransfer'); // Red\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 } // Green\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 } // Blue\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 } // Alpha\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 } // RGB\n\n\n if (this.feFuncR || this.feFuncG || this.feFuncB || this.feFuncA) {\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n filter.appendChild(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 = createNS('feComponentTransfer');\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n feComponentTransfer.setAttribute('result', id);\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, elem, id, source) {\n var globalFilterSize = filterManager.container.globalData.renderConfig.filterSize;\n var filterSize = filterManager.data.fs || globalFilterSize;\n filter.setAttribute('x', filterSize.x || globalFilterSize.x);\n filter.setAttribute('y', filterSize.y || globalFilterSize.y);\n filter.setAttribute('width', filterSize.width || globalFilterSize.width);\n filter.setAttribute('height', filterSize.height || globalFilterSize.height);\n this.filterManager = filterManager;\n var feGaussianBlur = createNS('feGaussianBlur');\n feGaussianBlur.setAttribute('in', 'SourceAlpha');\n feGaussianBlur.setAttribute('result', id + '_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', id + '_drop_shadow_1');\n feOffset.setAttribute('result', id + '_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', id + '_drop_shadow_3');\n this.feFlood = feFlood;\n filter.appendChild(feFlood);\n var feComposite = createNS('feComposite');\n feComposite.setAttribute('in', id + '_drop_shadow_3');\n feComposite.setAttribute('in2', id + '_drop_shadow_2');\n feComposite.setAttribute('operator', 'in');\n feComposite.setAttribute('result', id + '_drop_shadow_4');\n filter.appendChild(feComposite);\n var feMerge = this.createMergeNode(id, [id + '_drop_shadow_4', source]);\n filter.appendChild(feMerge); //\n }\n\n extendPrototype([SVGComposableEffect], SVGDropShadowEffect);\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 }\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, elem, id) {\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 feGaussianBlur.setAttribute('result', id);\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 function TransformEffect() {}\n\n TransformEffect.prototype.init = function (effectsManager) {\n this.effectsManager = effectsManager;\n this.type = effectTypes.TRANSFORM_EFFECT;\n this.matrix = new Matrix();\n this.opacity = -1;\n this._mdf = false;\n this._opMdf = false;\n };\n\n TransformEffect.prototype.renderFrame = function (forceFrame) {\n this._opMdf = false;\n this._mdf = false;\n\n if (forceFrame || this.effectsManager._mdf) {\n var effectElements = this.effectsManager.effectElements;\n var anchor = effectElements[0].p.v;\n var position = effectElements[1].p.v;\n var isUniformScale = effectElements[2].p.v === 1;\n var scaleHeight = effectElements[3].p.v;\n var scaleWidth = isUniformScale ? scaleHeight : effectElements[4].p.v;\n var skew = effectElements[5].p.v;\n var skewAxis = effectElements[6].p.v;\n var rotation = effectElements[7].p.v;\n this.matrix.reset();\n this.matrix.translate(-anchor[0], -anchor[1], anchor[2]);\n this.matrix.scale(scaleWidth * 0.01, scaleHeight * 0.01, 1);\n this.matrix.rotate(-rotation * degToRads);\n this.matrix.skewFromAxis(-skew * degToRads, (skewAxis + 90) * degToRads);\n this.matrix.translate(position[0], position[1], 0);\n this._mdf = true;\n\n if (this.opacity !== effectElements[8].p.v) {\n this.opacity = effectElements[8].p.v;\n this._opMdf = true;\n }\n }\n };\n\n function SVGTransformEffect(_, filterManager) {\n this.init(filterManager);\n }\n\n extendPrototype([TransformEffect], SVGTransformEffect);\n\n function CVTransformEffect(effectsManager) {\n this.init(effectsManager);\n }\n\n extendPrototype([TransformEffect], CVTransformEffect);\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);\n ShapeModifiers.registerModifier('zz', ZigZagModifier);\n ShapeModifiers.registerModifier('op', OffsetPathModifier); // Registering expression plugin\n\n setExpressionsPlugin(Expressions);\n setExpressionInterfaces(getInterface);\n initialize$1();\n initialize(); // Registering svg effects\n\n registerEffect$1(20, SVGTintFilter, true);\n registerEffect$1(21, SVGFillFilter, true);\n registerEffect$1(22, SVGStrokeEffect, false);\n registerEffect$1(23, SVGTritoneFilter, true);\n registerEffect$1(24, SVGProLevelsFilter, true);\n registerEffect$1(25, SVGDropShadowEffect, true);\n registerEffect$1(28, SVGMatte3Effect, false);\n registerEffect$1(29, SVGGaussianBlurEffect, true);\n registerEffect$1(35, SVGTransformEffect, false);\n registerEffect(35, CVTransformEffect);\n\n return lottie;\n\n}));\n","/** @license React v16.13.1\n * react-is.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'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/** @license React v16.13.1\n * react-is.development.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'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\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'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","module.exports = Function.call.bind(Object.prototype.hasOwnProperty);\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\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'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n var has = require('./lib/has');\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) { /**/ }\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +\n 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\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'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\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\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","// eslint-disable-next-line import/no-extraneous-dependencies\nimport PropTypes from 'prop-types';\n\nexport default {\n // You can use either animationData OR path\n animationData: PropTypes.object,\n path: PropTypes.string,\n\n play: PropTypes.bool,\n goTo: PropTypes.number,\n speed: PropTypes.number,\n direction: PropTypes.number,\n loop: PropTypes.oneOfType([PropTypes.number, PropTypes.bool]),\n useSubframes: PropTypes.bool,\n\n segments: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.number), PropTypes.bool]),\n\n rendererSettings: PropTypes.object,\n\n renderer: PropTypes.string,\n\n audioFactory: PropTypes.func,\n\n onComplete: PropTypes.func,\n onLoopComplete: PropTypes.func,\n onEnterFrame: PropTypes.func,\n onSegmentStart: PropTypes.func,\n};\n","// eslint-disable-next-line no-unused-vars\nimport React, {\n memo, useRef, useEffect, useState, forwardRef, useCallback,\n} from 'react';\nimport equal from 'fast-deep-equal/es6/react';\nimport clone from 'rfdc/default';\n\nimport propTypes from './propTypes';\n\nconst emptyObject = {};\nconst noOp = () => {};\n\nconst makeLottiePlayer = ({ loadAnimation }) => {\n const Lottie = memo(forwardRef((params, forwardedRef) => {\n const {\n animationData = null,\n path = null,\n\n play = null,\n speed = 1,\n direction = 1,\n segments: segmentsIn = null,\n goTo = null,\n useSubframes = true,\n\n renderer = 'svg',\n loop = true,\n rendererSettings: rendererSettingsIn = emptyObject,\n\n audioFactory = null,\n\n onLoad = noOp,\n onComplete = noOp,\n onLoopComplete = noOp,\n onEnterFrame = noOp,\n onSegmentStart = noOp,\n ...props\n } = params;\n\n const animElementRef = useRef();\n const animRef = useRef();\n\n const [ready, setReady] = useState(false);\n\n const [segments, setSegments] = useState(segmentsIn);\n\n // Prevent re-init\n useEffect(() => {\n if (!equal(segments, segmentsIn)) setSegments(segmentsIn);\n }, [segmentsIn, segments]);\n\n const [rendererSettings, setRendererSettings] = useState(rendererSettingsIn);\n\n // Prevent re-init\n useEffect(() => {\n if (!equal(rendererSettings, rendererSettingsIn)) setRendererSettings(rendererSettingsIn);\n }, [rendererSettingsIn, rendererSettings]);\n\n // In order to remove listeners before animRef gets destroyed:\n useEffect(() => () => animRef.current.removeEventListener('complete', onComplete), [onComplete]);\n useEffect(() => () => animRef.current.removeEventListener('loopComplete', onLoopComplete), [onLoopComplete]);\n useEffect(() => () => animRef.current.removeEventListener('enterFrame', onEnterFrame), [onEnterFrame]);\n useEffect(() => () => animRef.current.removeEventListener('segmentStart', onSegmentStart), [onSegmentStart]);\n useEffect(() => () => animRef.current.removeEventListener('DOMLoaded', onLoad), [onLoad]);\n\n const setLottieRefs = useCallback((newRef) => {\n animRef.current = newRef;\n // eslint-disable-next-line no-param-reassign\n if (forwardedRef) forwardedRef.current = newRef;\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n useEffect(() => {\n function parseAnimationData() {\n if (animationData == null || typeof animationData !== 'object') return animationData;\n\n // https://github.com/mifi/react-lottie-player/issues/11#issuecomment-879310039\n // https://github.com/chenqingspring/vue-lottie/issues/20\n if (typeof animationData.default === 'object') {\n return clone(animationData.default);\n }\n // cloneDeep to prevent memory leak. See #35\n return clone(animationData);\n }\n\n // console.log('init')\n const lottie = loadAnimation({\n animationData: parseAnimationData(),\n path,\n container: animElementRef.current,\n renderer,\n loop: false,\n autoplay: false, // We want to explicitly control playback\n rendererSettings,\n audioFactory,\n });\n setLottieRefs(lottie);\n\n const onDomLoaded = () => setReady(true);\n\n animRef.current.addEventListener('DOMLoaded', onDomLoaded);\n\n return () => {\n animRef.current.removeEventListener('DOMLoaded', onDomLoaded);\n setReady(false);\n animRef.current.destroy();\n setLottieRefs(undefined);\n };\n }, [loop, renderer, rendererSettings, animationData, path, audioFactory, setLottieRefs]);\n\n useEffect(() => {\n animRef.current.addEventListener('DOMLoaded', onLoad);\n }, [onLoad]);\n\n useEffect(() => {\n animRef.current.addEventListener('complete', onComplete);\n }, [onComplete]);\n\n useEffect(() => {\n animRef.current.addEventListener('loopComplete', onLoopComplete);\n }, [onLoopComplete]);\n\n useEffect(() => {\n animRef.current.addEventListener('enterFrame', onEnterFrame);\n }, [onEnterFrame]);\n\n useEffect(() => {\n animRef.current.addEventListener('segmentStart', onSegmentStart);\n }, [onSegmentStart]);\n\n useEffect(() => {\n if (!ready) return;\n animRef.current.loop = loop;\n }, [ready, loop]);\n\n const wasPlayingSegmentsRef = useRef(false);\n\n useEffect(() => {\n if (!ready) return;\n\n // Without this code, when playback restarts, it will not play in reverse:\n // https://github.com/mifi/react-lottie-player/issues/19\n function playReverse(lastFrame) {\n animRef.current.goToAndPlay(lastFrame, true);\n animRef.current.setDirection(direction);\n }\n\n if (play === true) {\n const force = true;\n if (segments) {\n animRef.current.playSegments(segments, force);\n wasPlayingSegmentsRef.current = true;\n\n // This needs to be called after playSegments or it will not play backwards\n if (direction === -1) {\n // TODO What if more than one segment\n const lastFrame = segments[1];\n playReverse(lastFrame);\n }\n } else {\n // If we called playSegments last time, the segments are stored as a state in the lottie object\n // Need to reset segments or else it will still play the old segments also when calling play()\n // wasPlayingSegmentsRef: Only reset segments if playSegments last time, because resetSegments will also reset playback position\n // https://github.com/airbnb/lottie-web/blob/master/index.d.ts\n if (wasPlayingSegmentsRef.current) animRef.current.resetSegments(force);\n wasPlayingSegmentsRef.current = false;\n\n if (direction === -1) {\n const lastFrame = animRef.current.getDuration(true);\n playReverse(lastFrame);\n } else {\n animRef.current.play();\n }\n }\n } else if (play === false) {\n animRef.current.pause();\n }\n }, [play, segments, ready, direction]);\n\n useEffect(() => {\n if (!ready) return;\n if (Number.isNaN(speed)) return;\n animRef.current.setSpeed(speed);\n }, [speed, ready]);\n\n // This handles the case where only direction has changed (direction is not a dependency of the other effect that calls setDirection)\n useEffect(() => {\n if (!ready) return;\n animRef.current.setDirection(direction);\n }, [direction, ready]);\n\n useEffect(() => {\n if (!ready) return;\n if (goTo == null) return;\n const isFrame = true; // TODO\n if (play) animRef.current.goToAndPlay(goTo, isFrame);\n else animRef.current.goToAndStop(goTo, isFrame);\n }, [goTo, play, ready]);\n\n useEffect(() => {\n if (animRef.current.setSubframe) animRef.current.setSubframe(useSubframes);\n // console.log(animRef.current.isSubframeEnabled)\n }, [useSubframes]);\n\n return (\n \n );\n }));\n\n Lottie.propTypes = propTypes;\n\n return Lottie;\n};\n\nexport default makeLottiePlayer;\n","import lottie from 'lottie-web';\nimport makeLottiePlayer from './makeLottiePlayer';\n\nexport default makeLottiePlayer(lottie);\n","'use strict'\n\nmodule.exports = require('./index.js')()\n","'use strict'\nmodule.exports = rfdc\n\nfunction copyBuffer (cur) {\n if (cur instanceof Buffer) {\n return Buffer.from(cur)\n }\n\n return new cur.constructor(cur.buffer.slice(), cur.byteOffset, cur.length)\n}\n\nfunction rfdc (opts) {\n opts = opts || {}\n\n if (opts.circles) return rfdcCircles(opts)\n return opts.proto ? cloneProto : clone\n\n function cloneArray (a, fn) {\n var keys = Object.keys(a)\n var a2 = new Array(keys.length)\n for (var i = 0; i < keys.length; i++) {\n var k = keys[i]\n var cur = a[k]\n if (typeof cur !== 'object' || cur === null) {\n a2[k] = cur\n } else if (cur instanceof Date) {\n a2[k] = new Date(cur)\n } else if (ArrayBuffer.isView(cur)) {\n a2[k] = copyBuffer(cur)\n } else {\n a2[k] = fn(cur)\n }\n }\n return a2\n }\n\n function clone (o) {\n if (typeof o !== 'object' || o === null) return o\n if (o instanceof Date) return new Date(o)\n if (Array.isArray(o)) return cloneArray(o, clone)\n if (o instanceof Map) return new Map(cloneArray(Array.from(o), clone))\n if (o instanceof Set) return new Set(cloneArray(Array.from(o), clone))\n var o2 = {}\n for (var k in o) {\n if (Object.hasOwnProperty.call(o, k) === false) continue\n var cur = o[k]\n if (typeof cur !== 'object' || cur === null) {\n o2[k] = cur\n } else if (cur instanceof Date) {\n o2[k] = new Date(cur)\n } else if (cur instanceof Map) {\n o2[k] = new Map(cloneArray(Array.from(cur), clone))\n } else if (cur instanceof Set) {\n o2[k] = new Set(cloneArray(Array.from(cur), clone))\n } else if (ArrayBuffer.isView(cur)) {\n o2[k] = copyBuffer(cur)\n } else {\n o2[k] = clone(cur)\n }\n }\n return o2\n }\n\n function cloneProto (o) {\n if (typeof o !== 'object' || o === null) return o\n if (o instanceof Date) return new Date(o)\n if (Array.isArray(o)) return cloneArray(o, cloneProto)\n if (o instanceof Map) return new Map(cloneArray(Array.from(o), cloneProto))\n if (o instanceof Set) return new Set(cloneArray(Array.from(o), cloneProto))\n var o2 = {}\n for (var k in o) {\n var cur = o[k]\n if (typeof cur !== 'object' || cur === null) {\n o2[k] = cur\n } else if (cur instanceof Date) {\n o2[k] = new Date(cur)\n } else if (cur instanceof Map) {\n o2[k] = new Map(cloneArray(Array.from(cur), cloneProto))\n } else if (cur instanceof Set) {\n o2[k] = new Set(cloneArray(Array.from(cur), cloneProto))\n } else if (ArrayBuffer.isView(cur)) {\n o2[k] = copyBuffer(cur)\n } else {\n o2[k] = cloneProto(cur)\n }\n }\n return o2\n }\n}\n\nfunction rfdcCircles (opts) {\n var refs = []\n var refsNew = []\n\n return opts.proto ? cloneProto : clone\n\n function cloneArray (a, fn) {\n var keys = Object.keys(a)\n var a2 = new Array(keys.length)\n for (var i = 0; i < keys.length; i++) {\n var k = keys[i]\n var cur = a[k]\n if (typeof cur !== 'object' || cur === null) {\n a2[k] = cur\n } else if (cur instanceof Date) {\n a2[k] = new Date(cur)\n } else if (ArrayBuffer.isView(cur)) {\n a2[k] = copyBuffer(cur)\n } else {\n var index = refs.indexOf(cur)\n if (index !== -1) {\n a2[k] = refsNew[index]\n } else {\n a2[k] = fn(cur)\n }\n }\n }\n return a2\n }\n\n function clone (o) {\n if (typeof o !== 'object' || o === null) return o\n if (o instanceof Date) return new Date(o)\n if (Array.isArray(o)) return cloneArray(o, clone)\n if (o instanceof Map) return new Map(cloneArray(Array.from(o), clone))\n if (o instanceof Set) return new Set(cloneArray(Array.from(o), clone))\n var o2 = {}\n refs.push(o)\n refsNew.push(o2)\n for (var k in o) {\n if (Object.hasOwnProperty.call(o, k) === false) continue\n var cur = o[k]\n if (typeof cur !== 'object' || cur === null) {\n o2[k] = cur\n } else if (cur instanceof Date) {\n o2[k] = new Date(cur)\n } else if (cur instanceof Map) {\n o2[k] = new Map(cloneArray(Array.from(cur), clone))\n } else if (cur instanceof Set) {\n o2[k] = new Set(cloneArray(Array.from(cur), clone))\n } else if (ArrayBuffer.isView(cur)) {\n o2[k] = copyBuffer(cur)\n } else {\n var i = refs.indexOf(cur)\n if (i !== -1) {\n o2[k] = refsNew[i]\n } else {\n o2[k] = clone(cur)\n }\n }\n }\n refs.pop()\n refsNew.pop()\n return o2\n }\n\n function cloneProto (o) {\n if (typeof o !== 'object' || o === null) return o\n if (o instanceof Date) return new Date(o)\n if (Array.isArray(o)) return cloneArray(o, cloneProto)\n if (o instanceof Map) return new Map(cloneArray(Array.from(o), cloneProto))\n if (o instanceof Set) return new Set(cloneArray(Array.from(o), cloneProto))\n var o2 = {}\n refs.push(o)\n refsNew.push(o2)\n for (var k in o) {\n var cur = o[k]\n if (typeof cur !== 'object' || cur === null) {\n o2[k] = cur\n } else if (cur instanceof Date) {\n o2[k] = new Date(cur)\n } else if (cur instanceof Map) {\n o2[k] = new Map(cloneArray(Array.from(cur), cloneProto))\n } else if (cur instanceof Set) {\n o2[k] = new Set(cloneArray(Array.from(cur), cloneProto))\n } else if (ArrayBuffer.isView(cur)) {\n o2[k] = copyBuffer(cur)\n } else {\n var i = refs.indexOf(cur)\n if (i !== -1) {\n o2[k] = refsNew[i]\n } else {\n o2[k] = cloneProto(cur)\n }\n }\n }\n refs.pop()\n refsNew.pop()\n return o2\n }\n}\n","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++) arr2[i] = arr[i];\n return arr2;\n}\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nfunction _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n var F = function F() {};\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}\nmodule.exports = _createForOfIteratorHelper, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _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}\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;"],"names":["_createForOfIteratorHelper","require","module","exports","equal","a","b","constructor","length","i","keys","Array","isArray","Map","size","_step","_iterator","entries","s","n","done","value","has","err","e","f","_step2","_iterator2","get","Set","_step3","_iterator3","ArrayBuffer","isView","RegExp","source","flags","valueOf","Object","prototype","toString","hasOwnProperty","call","key","$$typeof","factory","navigator","svgNS","locationHref","_useWebWorker","initialDefaultFrame","setWebWorker","flag","getWebWorker","setLocationHref","getLocationHref","createTag","type","document","createElement","extendPrototype","sources","destination","sourcePrototype","len","attr","getDescriptor","object","prop","getOwnPropertyDescriptor","createProxyFunction","ProxyFunction","audioControllerFactory","AudioController","audioFactory","this","audios","_volume","_isMuted","addAudio","audio","push","pause","resume","setRate","rateValue","createAudio","assetPath","window","Howl","src","isPlaying","play","seek","playing","rate","setVolume","setAudioFactory","_updateVolume","mute","unmute","getVolume","volume","createTypedArray","createRegularArray","arr","Uint8ClampedArray","Float32Array","Int16Array","createSizedArray","apply","_typeof$6","obj","Symbol","iterator","subframeEnabled","expressionsPlugin","expressionsInterfaces","idPrefix$1","isSafari","test","userAgent","_shouldRoundValues","bmPow","Math","pow","bmSqrt","sqrt","bmFloor","floor","bmMax","max","bmMin","min","BMMath","ProjectInterface$1","propertyNames","random","abs","val","absArr","defaultCurveSegments","degToRads","PI","roundCorner","roundValues","bmRnd","round","styleDiv","element","style","position","top","left","display","transformOrigin","webkitTransformOrigin","backfaceVisibility","webkitBackfaceVisibility","transformStyle","webkitTransformStyle","mozTransformStyle","BMEnterFrameEvent","currentTime","totalTime","frameMultiplier","direction","BMCompleteEvent","BMCompleteLoopEvent","totalLoops","currentLoop","BMSegmentStartEvent","firstFrame","totalFrames","BMDestroyEvent","target","BMRenderFrameErrorEvent","nativeError","BMConfigErrorEvent","BMAnimationConfigErrorEvent","createElementID","_count","HSVtoRGB","h","v","r","g","p","q","t","RGBtoHSV","d","addSaturationToRGB","color","offset","hsv","addBrightnessToRGB","addHueToRGB","rgbToHex","hex","colorMap","setSubframeEnabled","getSubframeEnabled","setExpressionsPlugin","getExpressionsPlugin","setExpressionInterfaces","getExpressionInterfaces","setDefaultCurveSegments","getDefaultCurveSegments","setIdPrefix","getIdPrefix","createNS","createElementNS","_typeof$5","dataManager","workerFn","workerInstance","_counterId","processes","workerProxy","onmessage","postMessage","path","data","_workerSelf","setupWorker","fn","Worker","Blob","blob","url","URL","createObjectURL","createWorker","completeLayers","layers","comps","layerData","j","jLen","k","kLen","completed","hasMask","maskProps","masksProperties","pt","convertPathsToAbsoluteValues","ty","findCompLayers","refId","completeShapes","shapes","completeText","id","comp","findComp","__used","JSON","parse","stringify","ks","it","o","checkVersion","minimum","animVersionString","animVersion","split","checkText","minimumVersion","updateTextLayer","textLayer","documentData","iterateLayers","animationData","assets","checkChars","chars","charData","ip","op","st","sr","sk","sa","checkPathProperties","pathData","checkColors","iterateShapes","c","checkShapes","completeClosingShapes","closed","cl","moduleOb","__complete","completeChars","dataFunctionManager","assetLoader","formatResponse","xhr","contentTypeHeader","getResponseHeader","responseType","indexOf","response","responseText","load","fullPath","callback","errorCallback","XMLHttpRequest","onreadystatechange","readyState","status","open","join","error","send","completeData","payload","animation","event","process","onComplete","onError","createProcess","loadAnimation","processId","location","origin","pathname","loadData","completeAnimation","anim","ImagePreloader","proxyImage","canvas","width","height","ctx","getContext","fillStyle","fillRect","imageLoaded","loadedAssets","totalImages","loadedFootagesCount","totalFootages","imagesLoadedCb","footageLoaded","getAssetsPath","assetData","assetsPath","originalPath","imagePath","u","testImageLoaded","img","intervalId","setInterval","getBBox","_imageLoaded","clearInterval","bind","createFootageData","ob","footageData","_footageLoaded","ImagePreloaderFactory","images","loadAssets","cb","_createImageData","setAssetsPath","setPath","loadedImages","loadedFootages","destroy","getAsset","createImgData","crossOrigin","addEventListener","createImageData","setAttributeNS","_elementHelper","append","appendChild","setCacheType","elementHelper","BaseEvent","triggerEvent","eventName","args","_cbs","callbacks","removeEventListener","splice","markerParser","parsePayloadLines","line","lines","keysCount","trim","Error","_markers","markers","_marker","markerData","time","tm","duration","dr","cm","_","__","name","ProjectInterface","registerComposition","compositions","_thisProjectFunction","nm","prepareFrame","xt","currentFrame","compInterface","renderers","registerRenderer","getRenderer","getRegisteredRenderer","_typeof$4","AnimationItem","isLoaded","currentRawFrame","frameRate","frameMult","playSpeed","playDirection","playCount","isPaused","autoplay","loop","renderer","animationID","timeCompleted","segmentPos","isSubframeEnabled","segments","_idle","_completedLoop","projectInterface","imagePreloader","audioController","configAnimation","onSetupError","onSegmentComplete","drawnFrameEvent","setParams","params","wrapper","container","animType","RendererClass","rendererSettings","globalData","defs","setProjectInterface","undefined","parseInt","autoloadSegments","initialSegment","setupAnimation","lastIndexOf","substr","fileName","trigger","setData","wrapperAttributes","attributes","getNamedItem","prerender","includeLayers","newLayers","fonts","fontManager","addChars","addFonts","initExpressions","loadNextSegment","segment","shift","segmentPath","loadSegments","imagesLoaded","checkLoaded","preloadImages","animData","fr","searchExtraCompositions","updaFrameModifier","waitForFontsLoaded","triggerConfigError","setTimeout","rendererType","initItems","gotoFrame","resize","_width","_height","updateContainerSize","setSubframe","renderFrame","resetFrame","triggerRenderFrameError","togglePause","stop","setCurrentRawFrameValue","getMarkerData","markerName","marker","goToAndStop","isFrame","numValue","Number","isNaN","frameModifier","goToAndPlay","playSegments","advanceTime","nextValue","_isComplete","checkSegments","adjustSegment","setSpeed","setDirection","setSegment","init","end","pendingFrame","forceFlag","resetSegments","onEnterFrame","onLoopComplete","onSegmentStart","onDestroy","setLoop","isLooping","getPath","getAssetData","hide","show","getDuration","updateDocumentData","index","getElementByPath","animationManager","registeredAnimations","initTime","playingAnimationsNum","_stopped","_isFrozen","removeElement","ev","animItem","subtractPlayingCount","registerAnimation","elem","addPlayingCount","activate","nowTime","elapsedTime","requestAnimationFrame","first","searchAnimations","standalone","animElements","concat","slice","getElementsByClassName","lenAnims","setAttribute","body","getElementsByTagName","innerText","div","freeze","unfreeze","getRegisteredAnimations","animations","BezierFactory","str","replace","beziers","bezEasing","BezierEasing","kSplineTableSize","kSampleStepSize","float32ArraySupported","A","aA1","aA2","B","C","calcBezier","aT","getSlope","points","_p","_mSampleValues","_precomputed","x","mX1","mY1","mX2","mY2","_precompute","_getTForX","_calcSampleValues","aX","mSampleValues","intervalStart","currentSample","lastSample","guessForT","initialSlope","aGuessT","currentSlope","newtonRaphsonIterate","aA","aB","currentX","currentT","binarySubdivide","pooling","poolFactory","initialLength","_create","_release","_length","_maxLength","pool","newElement","release","bezierLengthPool","addedLength","percents","lengths","segmentsLengthPool","totalLength","bezFunction","math","pointOnLine2D","x1","y1","x2","y2","x3","y3","det1","getBezierLength","pt1","pt2","pt3","pt4","ptCoord","perc","ptDistance","curveSegments","point","lastPoint","lengthData","BezierData","segmentLength","PointData","partial","partialLength","buildBezierData","storedData","bezierName","bezierData","getDistancePerc","initPos","lengthPos","lPerc","dir","bezierSegmentPoints","getSegmentsLength","shapeData","segmentsLength","pathV","pathO","pathI","getNewSegment","startPerc","endPerc","t0","t1","u0","u1","u0u0u0","t0u0u0_3","t0t0u0_3","t0t0t0","u0u0u1","t0u0u1_3","t0t0u1_3","t0t0t1","u0u1u1","t0u1u1_3","t0t1u1_3","t0t1t1","u1u1u1","t1u1u1_3","t1t1u1_3","t1t1t1","getPointInSegment","percent","pointOnLine3D","z1","z2","z3","diffDist","dist1","dist2","dist3","bez","initFrame","mathAbs","interpolateValue","frameNum","caching","newValue","offsetTime","propType","pv","keyData","nextKeyData","keyframeMetadata","fnc","iterationIndex","lastIndex","keyframes","keyframesMetadata","endValue","nextKeyTime","keyTime","to","ti","ind","__fnct","getBezierEasing","y","segmentPerc","distanceInLine","lastFrame","_lastKeyframeIndex","_lastAddedLength","_lastPoint","outX","outY","inX","inY","keyValue","sh","quaternionToEuler","slerp","createQuaternion","omega","cosom","sinom","scale0","scale1","out","ax","ay","az","aw","bx","by","bz","bw","acos","sin","quat","qx","qy","qz","qw","heading","atan2","attitude","asin","bank","values","c1","cos","c2","c3","s1","s2","s3","getValueAtCurrentTime","renderedFrame","endTime","_caching","renderResult","setVValue","multipliedValue","mult","_mdf","processEffectsSequence","frameId","effectsSequence","lock","_isFirstFrame","finalValue","kf","addEffect","effectFunction","addDynamicProperty","ValueProperty","vel","getValue","MultiDimensionalProperty","KeyframedValueProperty","KeyframedMultidimensionalProperty","arrLen","PropertyFactory","getProp","sid","slotManager","DynamicPropertyContainer","dynamicProperties","_isAnimated","iterateDynamicProperties","initDynamicPropertyContainer","pointPool","ShapePath","setPathData","setLength","doubleArrayLength","setXYAt","pos","setTripleAt","vX","vY","oX","oY","iX","iY","reverse","newPath","vertices","outPoints","inPoints","cnt","shapePool","shapePath","clone","shape","cloned","ShapeCollection","addShape","releaseShapes","shapeCollectionPool","newShapeCollection","shapeCollection","ShapePropertyFactory","interpolateShape","previousValue","keyPropS","keyPropE","isHold","vertexValue","interpolateShapeCurrentTime","resetShape","paths","localShapeCollection","shape1","shape2","shapesEqual","ShapeProperty","reset","KeyframedShapeProperty","EllShapeProperty","cPoint","EllShapePropertyFactory","convertEllToPath","p0","p1","s0","_cw","_v","StarShapeProperty","StarShapePropertyFactory","sy","ir","is","convertToPath","convertStarToPath","convertPolygonToPath","or","os","rad","roundness","perimSegment","numPts","angle","longFlag","longRad","shortRad","longRound","shortRound","longPerimSegment","shortPerimSegment","currentAng","ox","oy","RectShapeProperty","RectShapePropertyFactory","convertRectToPath","v0","v1","Matrix","_cos","_sin","_tan","tan","_rnd","props","rotate","mCos","mSin","_t","rotateX","rotateY","rotateZ","shear","sx","skew","skewFromAxis","scale","sz","setTransform","l","m","translate","tx","tz","transform","a2","b2","d2","e2","f2","g2","h2","i2","j2","k2","l2","m2","n2","o2","p2","_identityCalculated","a1","b1","d1","e1","f1","g1","h1","i1","j1","k1","l1","m1","n1","o1","multiply","matrix","matrixProps","isIdentity","_identity","equals","matr","cloneFromProps","applyToPoint","z","applyToX","applyToY","applyToZ","getInverseMatrix","determinant","inverseMatrix","inversePoint","applyToPointArray","inversePoints","pts","retPts","applyToTriplePoints","p4","p5","p12","p13","applyToPointStringified","toCSS","cssValue","roundMatrixProperty","to2dCSS","_typeof$3","lottie","setLocation","href","setSubframeRendering","setPrefix","prefix","setQuality","inBrowser","installPlugin","plugin","getFactory","checkReady","readyStateCheckInterval","getQueryVariable","variable","vars","queryString","pair","decodeURIComponent","useWebWorker","setIDPrefix","__getFactory","version","scripts","myScript","define","ShapeModifiers","modifiers","registerModifier","getModifier","ShapeModifier","TrimModifier","PuckerAndBloatModifier","initModifierProperties","addShapeToModifier","setAsAnimated","processKeys","sValue","eValue","pathsData","calculateShapeEdges","shapeLength","totalModifierLength","segmentOb","shapeSegments","shapeS","shapeE","releasePathsData","processShapes","shapePaths","_s","totalShapeLength","edges","newShapesData","addShapes","lastShape","pop","addPaths","newPaths","addSegment","newShape","addSegmentFromArray","shapeSegment","currentLengthData","segmentCount","amount","processPath","centerPoint","pathLength","clonedPath","TransformPropertyFactory","defaultVector","TransformProperty","pre","appliedTransformations","px","py","pz","rx","ry","rz","_isDirty","applyToMatrix","mat","forceRender","precalculateMatrix","autoOriented","v2","getValueAtTime","autoOrient","_addDynamicProperty","getTransformProperty","RepeaterModifier","RoundCornersModifier","floatEqual","floatZero","lerp","lerpPoint","quadRoots","singleRoot","delta","polynomialCoefficients","p3","singlePoint","PolynomialBezier","linearize","pointEqual","coeffx","coeffy","extrema","intersectData","t2","box","boundingBox","cx","cy","splitData","boxIntersect","intersectsImpl","depth","tolerance","intersections","maxRecursion","d1s","d2s","crossProduct","lineIntersection","start1","end1","start2","end2","v3","v4","polarOffset","pointDistance","hypot","ZigZagModifier","setPoint","outputBezier","amplitude","outAmplitude","inAmplitude","angO","angI","getPerpendicularVector","vector","rot","getProjectingAngle","cur","prevIndex","nextIndex","pVector","zigZagCorner","frequency","pointType","prevPoint","nextPoint","prevDist","nextDist","zigZagSegment","dist","normalAngle","linearOffset","offsetSegment","p1a","p1b","p2b","p2a","joinLines","seg1","seg2","lineJoin","miterLimit","angleOut","tangentAngle","angleIn","center","radius","intersection","getIntersection","intersect","pruneSegmentIntersection","outa","outb","pruneIntersections","offsetSegmentSplit","right","mid","flex","inflectionPoints","OffsetPathModifier","getFontProperties","fontData","styles","fStyle","fWeight","toLowerCase","weight","tr","so","eo","pMatrix","rMatrix","sMatrix","tMatrix","applyTransforms","inv","scaleX","scaleY","elemsData","_currentCopies","_elements","_groups","unshift","resetElements","elements","_processed","cloneElements","newElements","changeGroupRender","renderFlag","_render","items","itemsTransform","cont","hasReloaded","copies","ceil","group","ix","reloadShapes","elems","transformData","offsetModulo","roundOffset","pProps","rProps","sProps","iteration","mProps","rd","currentV","currentI","currentO","closerV","distance","newPosPerc","derivative","denom","tcusp","square","root","filter","p10","p11","p20","p21","bounds","bottom","other","shapeSegmentInverted","pointsType","count","ml","lj","inputBezier","multiSegments","lastSeg","multiSegment","FontManager","emptyChar","w","combinedCharacters","BLACK_FLAG_CODE_POINT","REGIONAL_CHARACTER_A_CODE_POINT","REGIONAL_CHARACTER_Z_CODE_POINT","surrogateModifiers","setUpNode","font","family","parentNode","fontFamily","node","fontSize","fontVariant","fontStyle","fontWeight","letterSpacing","offsetWidth","familyArray","enabledFamilies","trimFontOptions","parent","createHelper","def","helper","engine","fontProps","tHelper","fFamily","textContent","fClass","tCanvasHelper","OffscreenCanvas","measureText","text","getComputedTextLength","getCodePoint","string","codePoint","charCodeAt","second","isRegionalCode","Font","typekitLoaded","_warned","Date","now","setIsLoadedBinded","setIsLoaded","checkLoadedFontsBinded","checkLoadedFonts","isModifier","firstCharCode","secondCharCode","sum","isZeroWidthJoiner","charCode","isFlagEmoji","isCombinedCharacter","_char3","isRegionalFlag","isVariationSelector","fontPrototype","found","ch","list","forEach","cache","fontArr","_pendingFonts","loadedSelector","shouldLoadFont","loaded","monoCase","sansCase","fPath","fOrigin","querySelectorAll","rel","sc","getCharData","_char","console","warn","getFontByName","fName","_char2","fontName","doubleSize","singleSize","loadedCount","removeChild","SlotManager","slotFactory","RenderableElement","slots","assign","initRenderable","isInRange","hidden","isTransparent","renderableComponents","addRenderableComponent","component","removeRenderableComponent","prepareRenderableFrame","num","checkLayerLimits","checkTransparency","finalTransform","mProp","renderConfig","hideOnTransparent","renderRenderable","sourceRectAtTime","getLayerSize","textData","getBlendMode","blendModeEnums","mode","SliderEffect","AngleEffect","ColorEffect","PointEffect","LayerIndexEffect","MaskIndexEffect","CheckboxEffect","NoValueEffect","EffectsManager","effects","ef","effectElements","effectItem","GroupEffect","BaseElement","FrameElement","FootageElement","imageLoader","initBaseData","AudioElement","_isPlaying","_canPlay","_currentTime","_volumeMultiplier","_previousVolume","_placeholder","lv","au","BaseRenderer","eff","checkMasks","LayerExpressionInterface","EffectsExpressionInterface","ShapeExpressionInterface","TextExpressionInterface","CompExpressionInterface","layerInterface","maskManager","registerMaskInterface","effectsInterface","createEffectsInterface","registerEffectsInterface","shapeInterface","shapesData","itemsData","content","textInterface","setBlendMode","blendModeValue","bm","baseElement","layerElement","layerId","effectsManager","getType","prepareProperties","isVisible","_isParent","getBaseElement","FootageInterface","getFootageData","timeRemapped","totalVolume","volumeValue","checkLayers","buildItem","checkPendingElements","createItem","layer","createImage","createComp","createSolid","createNull","createShape","createText","createCamera","createFootage","buildAllItems","pInterface","progressiveLoad","buildElementParenting","parentName","hierarchy","setAsParent","setHierarchy","addPendingElement","pendingElements","getElementById","pathValue","setupGlobalData","fontsContainer","animationItem","compSize","effectTypes","TRANSFORM_EFFECT","TransformElement","MaskElement","maskElement","viewData","solidPath","rect","expansor","feMorph","properties","currentMasks","maskType","maskRef","getShapeProp","lastPath","filterID","expan","lastOperator","filterId","lastRadius","mask","createLayerSolidPath","invRect","drawPath","maskedElement","initTransform","_matMdf","_localMatMdf","_opMdf","localMat","localOpacity","ao","renderTransform","finalMat","renderLocalTransform","localTransforms","lmat","localOp","opacity","searchEffectTransforms","renderableEffectsManager","transformEffects","getEffects","globalToLocal","transforms","ptNew","mHelper","getMaskProperty","isFirstFrame","getMaskelement","pathNodes","pathString","pathShapeValue","filtersFactory","filId","skipCoordinates","fil","feColorMatrix","featureSupport","svgLumaHidden","offscreenCanvas","registeredEffects$1","idPrefix","SVGEffects","filterManager","createFilter","filters","Effect","effect","countsAsEffect","registerEffect$1","SVGBaseElement","HierarchyElement","RenderableDOMElement","IImageElement","initElement","sourceRect","ProcessedElement","IShapeElement","initRendererElement","createContainerElements","matteElement","transformedElement","_sizeChanged","layerElementParent","td","matteMasks","gg","tt","ln","hd","cp","clipId","cpGroup","renderElement","destroyBaseElement","createRenderableComponents","getMatte","matteType","useElement","masker","createAlphaToLuminanceFilter","maskGroup","maskGrouper","feCTr","feFunc","alphaRect","setMatte","initHierarchy","checkParenting","createContent","renderInnerContent","innerElem","pr","imagePreserveAspectRatio","addShapeToModifiers","shapeModifiers","isShapeInAnimatedModifiers","isAnimatedWithShape","renderModifiers","searchProcessedElement","processedElements","addProcessedElement","lineCapEnum","lineJoinEnum","SVGShapeData","transformers","level","caches","lStr","lvl","SVGStyleData","pElem","msElem","DashProperty","dataProps","dashStr","dashArray","dashoffset","SVGStrokeStyleData","styleOb","SVGFillStyleData","SVGNoStyleData","GradientProperty","cLength","_cmdf","_omdf","_collapsable","checkCollapsable","_hasOpacity","SVGGradientFillStyleData","initGradientData","SVGGradientStrokeStyleData","ShapeGroupData","prevViewData","gr","SVGTransformData","comparePoints","stops","setGradientData","setGradientOpacity","pathElement","gradientId","gfill","gf","cst","opacityId","maskId","opFill","lc","of","ms","ost","buildShapeString","_o","_i","shapeString","SVGElementsRenderer","_identityMatrix","_matrixHelper","renderContentTransform","styleData","itemData","renderNoop","renderPath","pathStringTransformed","redraw","iterations","lLen","renderFill","styleElem","renderGradientStroke","renderGradient","renderStroke","hasOpacity","attr1","attr2","cValues","oValues","ang","createRenderFunction","SVGShapeElement","stylesList","animatedContents","LetterProps","sw","fc","TextProperty","_frameId","keysIndex","canResize","minimumFontSize","currentData","ascent","boxWidth","defaultBoxWidth","justifyOffset","lh","lineWidths","ls","ps","fillColorAnim","strokeColorAnim","strokeWidthAnim","yOffset","finalSize","finalText","finalLineHeight","copyData","searchProperty","completeTextData","initSecondaryElement","identityMatrix","buildExpressionInterface","searchShapes","filterUniqueShapes","tempShapes","areAnimated","setShapesAsAnimated","createStyleElement","elementData","addToAnimatedContents","createGroupElement","createTransformElement","transformProperty","createShapeElement","ownTransformers","setElementStyles","render","currentTransform","modifier","processedPos","ownStyles","ownModifiers","renderShape","animatedContent","update","updated","setCurrentData","searchKeyframes","getKeyframeValue","_finalValue","currentValue","currentIndex","textKeys","buildFinalText","charactersArray","shouldCombine","shouldCombineNext","currentChars","charAt","newLineFlag","letters","anchorGrouping","currentSize","currentPos","currentLine","lineWidth","maxLineWidth","trackingOffset","currentHeight","boxHeight","lastSpaceIndex","currentChar","uncollapsedSpaces","an","add","anIndexes","animatorJustifyOffset","extra","animatorData","letterData","based","animators","indexes","fh","fs","fb","rn","totalChars","newInd","currentInd","newData","dData","recalculate","canResizeFont","_canResize","setMinimumFontSize","_fontValue","TextSelectorProp","TextSelectorPropFactory","_currentTextLength","finalS","finalE","xe","ne","sm","getMult","textProperty","easer","tot","smoothness","threshold","newCharsFlag","divisor","getTextSelectorProp","TextAnimatorDataProperty","animatorProps","defaultData","textAnimatorAnimatables","TextAnimatorProperty","renderType","_hasMaskedPath","_textData","_renderType","_elem","_animatorsData","_pathData","_moreOptions","alignment","renderedLetters","lettersChangedFlag","ITextElement","searchProperties","getMeasures","xPos","yPos","pathInfo","currentLength","currentPoint","pointInd","segmentInd","tanAngle","matrixHelper","renderedLettersCount","tLength","pi","letterValue","yOff","firstLine","offf","xPathPos","yPathPos","elemOpacity","letterSw","letterSc","letterFc","letterO","initPathPos","initSegmentInd","initPointInd","letterM","letterP","defaultPropsArray","animatorFirstCharOffset","justifyOffsetMult","isNewLine","animatorOffset","atan","textAnimator","createPathShape","shapeStr","_fontSize","applyTextPropertiesToMatrix","lineNumber","buildColor","colorData","emptyProp","validateText","buildNewText","emptyShapeData","SVGTextLottieElement","textSpans","ISolidElement","NullElement","SVGRendererBase","ICompElement","SVGCompElement","supports3d","SVGRenderer","config","svgElement","ariaLabel","title","titleElement","titleId","description","descElement","descId","preserveAspectRatio","contentVisibility","viewBoxOnly","viewBoxSize","className","focusable","filterSize","runExpressions","destroyed","ShapeTransformManager","sequences","sequenceList","transform_key_count","singleShape","textContainer","buildTextContents","textArray","textContents","currentTextContent","String","fromCharCode","buildShapeData","shapeItem","tSpan","usesGlyphs","cachedSpansLength","span","childSpan","glyph","glyphElement","_debug","tElement","justify","textBox","bbox","renderedLetter","textSpan","findIndexByInd","appendElementInPos","elementIndex","tp","matteMask","nextElement","insertBefore","setElements","getElements","destroyElements","addTransformSequence","sequence","processSequence","processSequences","getNewKey","lumaLoader","lumaBuffer","lumaBufferCtx","svg","loadLuma","_svg","createLumaSvgFilter","createCanvas","loadLumaCanvas","getLumaCanvas","registeredEffects","CVEffects","registerEffect","CVMaskElement","hasMasks","CVBaseElement","canvasContext","beginPath","moveTo","lineTo","bezierCurveTo","save","clip","operationsMap","CVShapeData","transformsManager","styledShapes","styledShape","trNodes","CVShapeElement","CVTextElement","stroke","fill","currentRender","sWidth","fValue","CVImageElement","CVSolidElement","CanvasRendererBase","CanvasContext","strokeStyle","lineCap","CVContextData","stack","cArrPos","cTr","nativeContext","transformMat","currentOpacity","currentFillStyle","appliedFillStyle","currentStrokeStyle","appliedStrokeStyle","currentLineWidth","appliedLineWidth","currentLineCap","appliedLineCap","currentLineJoin","appliedLineJoin","appliedMiterLimit","currentMiterLimit","CVCompElement","CanvasRenderer","clearCanvas","context","dpr","devicePixelRatio","currentGlobalAlpha","contextData","ctxTransform","ctxOpacity","ctxFillStyle","ctxStrokeStyle","ctxLineWidth","ctxLineCap","ctxLineJoin","ctxMiterLimit","ctxFill","ctxFillRect","ctxStroke","HBaseElement","HSolidElement","HShapeElement","shapesContainer","currentBBox","HTextElement","textPaths","isMasked","HCameraElement","pe","_prevMat","HImageElement","HybridRendererBase","threeDElements","camera","HCompElement","HybridRenderer","createElements","buffers","bufferCanvas","bufferCanvas2","_isProxy","transformCanvas","blendMode","globalCompositeOperation","hideElement","showElement","clearRect","prepareLayer","bufferCtx","drawImage","getTransform","exitLayer","buffer","forceRealStack","restore","transformHelper","dashResetter","preTransforms","co","wi","da","addTransformToStyleList","removeTransformFromStyleList","closeStyles","shouldRender","ownTransforms","_shouldRender","renderShapeTransform","parentTransform","groupTransform","drawLayer","nodes","currentStyle","coOp","grd","setLineDash","lineDashOffset","closePath","isMain","renderGradientFill","renderStyledShape","shapeNodes","groupTransformMat","createLinearGradient","createRadialGradient","addColorStop","hasFill","hasStroke","commands","pathArr","commandsCounter","lastFill","lastStroke","lastStrokeW","widthCrop","heightCrop","imgW","imgH","imgRel","canvasRel","par","globalAlpha","rule","actionFlag","containerStyle","mozTransformOrigin","setContext","isDashed","elementWidth","elementHeight","elementRel","animationRel","offsetHeight","fillType","duplicate","newLength","forceRestore","currentContext","prevStack","saveOnNativeFlag","currentStack","newStack","setOpacity","trProps","checkBlendMode","tg","transformedElementStyle","matrixValue","webkitTransform","addEffects","backgroundColor","_renderShapeFrame","shapeCont","getTransformedPoint","calculateShapeBoundingBox","item","vPoint","oPoint","nextIPoint","nextVPoint","checkBounds","getBoundsOfCurve","shapeBoundingBox","xMax","yMax","tempBoundingBox","b2ac","calculateF","calculateBoundingBox","expandStrokeBoundingBox","widthProperty","kfw","currentBoxContains","changed","shapeStyle","shapeTransform","compW","compH","innerElemStyle","textColor","strokeWidth","lineHeight","tParent","tCont","children","tContStyle","tContTranslation","tStyle","tSpanTranslation","svgStyle","translation","textPath","margin","svgTransform","setup","perspectiveStyle","perspectiveElem","perspective","webkitPerspective","mTransf","diffVector","mag","lookDir","lookLengthOnXZ","mRotationX","mRotationY","hasMatrixChanged","matValue","Image","imageElem","newDOMElement","ddd","addTo3dContainer","nextDOMElement","nextLayer","getThreeDContainerByPos","startPos","endPos","createThreeDContainer","threeDContainerData","build3dContainers","lastThreeDContainerData","currentContainer","resizerElem","overflow","cWidth","cHeight","floatingContainer","_createBaseContainerElements","_thisLayerFunction","defineProperty","pixelAspect","frameDuration","displayStartTime","numLayers","_typeof$2","seedRandom","nodecrypto","global","rngname","startdenom","significance","ARC4","keylen","me","S","copy","flatten","result","typ","mixkey","seed","smear","stringseed","tostring","options","shortseed","entropy","randomBytes","Uint8Array","crypto","msCrypto","getRandomValues","browser","plugins","screen","autoseed","arc4","prng","int32","quick","pass","is_math_call","state","initialize$2","propTypes","SHAPE","_typeof$1","ExpressionManager","fetch","frames","_lottieGlobal","$bm_isInstanceOfArray","isNumerable","tOfV","$bm_neg","tOfA","lenA","retArr","easeInBez","easeOutBez","easeInOutBez","tOfB","lenB","sub","mul","mod","$bm_sum","$bm_sub","$bm_mul","$bm_div","$bm_mod","clamp","mm","radiansToDegrees","radians_to_degrees","degreesToRadians","degrees_to_radians","helperLengthArray","arr1","arr2","normalize","vec","rgbToHsl","hue2rgb","hslToRgb","linear","tMin","tMax","value1","value2","_tMin","rnd","createPath","inTangents","outTangents","inVertexPoint","outVertexPoint","arrPlaceholder","initiateExpression","property","noOp","_value","needsVelocity","_needsRandom","elemType","$bm_transform","thisProperty","valueAtTime","inPoint","outPoint","loopIn","loop_in","loopOut","loop_out","smooth","toWorld","fromWorld","fromComp","toComp","fromCompToSurface","rotation","anchorPoint","thisLayer","thisComp","velocityAtTime","scoped_bm_rt","expression_function","eval","numKeys","active","wiggle","freq","amp","iWiggle","lenWiggle","addedAmps","periods","loopInDuration","loopOutDuration","getVelocityAtTime","velocity","textIndex","textTotal","selectorValue","lookAt","elem1","elem2","fVec","pitch","easeOut","val1","val2","applyEase","easeIn","ease","iKey","lenKey","nearestKey","obKey","framesToTime","fps","timeToFrames","seedrandom","randSeed","substring","posterizeTime","framesPerSecond","hasParent","executeExpression","frameExpressionId","__preventDeadCodeRemoval","Expressions","stackCount","registers","pushExpression","popExpression","releaseInstances","registerExpressionProperty","expression","MaskManagerInterface","MaskInterface","_mask","_data","_masksInterfaces","ExpressionPropertyInterface","defaultUnidimensionalValue","defaultMultidimensionalValue","completeProperty","expressionValue","valueProp","speedAtTime","getSpeedAtTime","propertyGroup","defaultGetter","UnidimensionalPropertyInterface","arrValue","MultidimensionalPropertyInterface","TransformExpressionInterface","_thisFunction","xRotation","yRotation","xPosition","yPosition","zPosition","_px","_py","_pz","_transformFactory","getMatrix","toWorldMat","toWorldVec","applyPoint","fromWorldVec","invertPoint","sampleImage","transformInterface","anchorPointDescriptor","defineProperties","anchor_point","startTime","_name","propertyGroupFactory","interfaceFunction","parentPropertyGroup","PropertyInterface","propertyName","createGroupInterface","groupInterface","mn","_propertyGroup","createValueInterface","numProperties","np","enabled","en","expressionProperty","setGroupProperty","effectsData","ShapePathInterface","view","propertyIndex","iterateElements","groupInterfaceFactory","fillInterfaceFactory","strokeInterfaceFactory","trimInterfaceFactory","ellipseInterfaceFactory","starInterfaceFactory","rectInterfaceFactory","roundedInterfaceFactory","repeaterInterfaceFactory","gradientFillInterfaceFactory","interfaces","transformInterfaceFactory","cix","contentsInterfaceFactory","startPoint","endPoint","_dashPropertyGroup","dashOb","addPropertyToDashOb","dash","start","skewAxis","outerRadius","outerRoundness","innerRoundness","innerRadius","_interfaceFunction","_sourceText","sourceText","stringValue","fillColor","_typeof","dataInterfaceFactory","outlineInterface","currentPropertyName","currentProperty","propertyNameIndex","outlineInterfaceFactory","dataInterface","footage","getInterface","expressionHelpers","searchExpressions","speed","_cachingAtTime","getStaticValueAtTime","addPropertyDecorator","durationFlag","cycleDuration","firstKeyFrame","ret","lastKeyFrame","initV","endV","current","repeats","lastValue","nextLastValue","firstValue","nextFirstValue","samples","sampleValue","sampleFrequency","getTransformValueAtTime","_transformCachingAtTime","anchor","rotationZ","rotationY","rotationX","orientation","positionX","positionY","positionZ","getTransformStaticValueAtTime","propertyGetProp","ShapePropertyConstructorFunction","getConstructorFunction","KeyframedShapePropertyConstructorFunction","getKeyframedConstructorFunction","ShapeExpressions","isClosed","pointOnPath","_segmentsLength","accumulatedLength","initIndex","endIndex","vectorOnPath","vectorType","xLength","yLength","magnitude","tangentOnPath","normalOnPath","shapeValue","lastTime","propertyGetShapeProp","trims","initialize$1","addDecorator","getExpressionValue","calculateExpression","isKeyframed","hasExpressions","initialize","SVGComposableEffect","createMergeNode","resultId","ins","feMergeNode","feMerge","linearFilterValue","SVGTintFilter","linearFilter","matrixFilter","SVGFillFilter","SVGStrokeEffect","initialized","SVGTritoneFilter","feComponentTransfer","feFuncR","feFuncG","feFuncB","SVGProLevelsFilter","createFeFunc","feFuncA","feFuncRComposed","feFuncGComposed","feFuncBComposed","SVGDropShadowEffect","globalFilterSize","feGaussianBlur","feOffset","feFlood","feComposite","colorBlack","colorWhite","groupPath","elemChildren","childNodes","removeAttribute","pathMasker","dasharrayValue","getTotalLength","lineLength","units","color1","color2","color3","tableR","tableG","tableB","getTableValue","inputBlack","inputWhite","gamma","outputBlack","outputWhite","colorValue","table","outputDelta","inputDelta","col","_svgMatteSymbols","SVGMatte3Effect","filterElem","SVGGaussianBlurEffect","TransformEffect","SVGTransformEffect","CVTransformEffect","findSymbol","replaceInParent","symbolId","nextChild","useElem","setElementAsMask","symbol","sigma","dimensions","sigmaX","sigmaY","edgeMode","forceFrame","isUniformScale","scaleHeight","scaleWidth","for","getOwnPropertySymbols","reactIs_production_min","propIsEnumerable","propertyIsEnumerable","test1","getOwnPropertyNames","test2","order2","map","test3","letter","shouldUseNative","ReactPropTypesSecret_1","Function","checkPropTypes","typeSpecs","componentName","getStack","resetWarningCache","emptyFunction","emptyFunctionWithReset","shim","propName","propFullName","secret","getShim","isRequired","ReactPropTypes","array","bigint","bool","func","number","any","arrayOf","elementType","instanceOf","objectOf","oneOf","oneOfType","exact","PropTypes","factoryWithThrowingShims","propTypes$1","goTo","useSubframes","emptyObject","LottiePlayer","_ref","Lottie","memo","forwardRef","forwardedRef","_params$animationData","_params$path","_params$play","_params$speed","_params$direction","_params$segments","segmentsIn","_params$goTo","_params$useSubframes","_params$renderer","_params$loop","_params$rendererSetti","rendererSettingsIn","_params$audioFactory","_params$onLoad","onLoad","_params$onComplete","_params$onLoopComplet","_params$onEnterFrame","_params$onSegmentStar","_objectWithoutPropertiesLoose","animElementRef","useRef","animRef","_useState","useState","ready","setReady","_useState2","setSegments","useEffect","_useState3","setRendererSettings","setLottieRefs","useCallback","newRef","onDomLoaded","wasPlayingSegmentsRef","playReverse","React","_extends","ref","makeLottiePlayer","copyBuffer","Buffer","from","byteOffset","opts","circles","refs","refsNew","proto","cloneProto","cloneArray","rfdcCircles","__esModule","unsupportedIterableToArray","allowArrayLike","F","_e","TypeError","normalCompletion","didErr","step","next","_e2","arrayLikeToArray","minLen"],"sourceRoot":""}