PluginProbe
Elementor Website Builder – more than just a page builder / 4.3.2
Elementor Website Builder – more than just a page builder v4.3.2
4.3.2 4.3.1 4.3.0 4.3.0-beta3 4.3.0-beta2 4.3.0-beta1 4.2.4 4.2.3 4.2.2 4.2.1 4.2.0 4.1.5 4.2.0-beta2 4.2.0-dev2 4.2.0-beta1 4.1.4 4.1.3 4.1.2 4.1.1 4.1.0 4.1.0-beta3 4.1.0-dev3 4.0.9 4.1.0-beta2 4.1.0-dev2 All 455 releases
← All changes | assets/js/packages/editor-modal-shell/editor-modal-shell.js +15039 -2 4.1.2 → 4.3.2 View file →
@@ -1,3 +1,15040 @@
1 -/*! For license information please see editor-modal-shell.js.LICENSE.txt */
2 -(function(){var __webpack_modules__={"./node_modules/lottie-react/build/index.umd.js":function(t,e,r){!function(t,e,r){"use strict";function _interopDefaultLegacy(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var i=_interopDefaultLegacy(e),a=_interopDefaultLegacy(r);function _arrayLikeToArray(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,i=Array(e);r<e;r++)i[r]=t[r];return i}function _arrayWithHoles(t){if(Array.isArray(t))return t}function _defineProperty(t,e,r){return(e=_toPropertyKey(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function _iterableToArrayLimit(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var i,a,s,n,o=[],h=!0,l=!1;try{if(s=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;h=!1}else for(;!(h=(i=s.call(r)).done)&&(o.push(i.value),o.length!==e);h=!0);}catch(t){l=!0,a=t}finally{try{if(!h&&null!=r.return&&(n=r.return(),Object(n)!==n))return}finally{if(l)throw a}}return o}}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function ownKeys(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,i)}return r}function _objectSpread2(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?ownKeys(Object(r),!0).forEach(function(e){_defineProperty(t,e,r[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}function _objectWithoutProperties(t,e){if(null==t)return{};var r,i,a=_objectWithoutPropertiesLoose(t,e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);for(i=0;i<s.length;i++)r=s[i],e.includes(r)||{}.propertyIsEnumerable.call(t,r)&&(a[r]=t[r])}return a}function _objectWithoutPropertiesLoose(t,e){if(null==t)return{};var r={};for(var i in t)if({}.hasOwnProperty.call(t,i)){if(e.includes(i))continue;r[i]=t[i]}return r}function _slicedToArray(t,e){return _arrayWithHoles(t)||_iterableToArrayLimit(t,e)||_unsupportedIterableToArray(t,e)||_nonIterableRest()}function _toPrimitive(t,e){if("object"!=typeof t||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var i=r.call(t,e||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}function _toPropertyKey(t){var e=_toPrimitive(t,"string");return"symbol"==typeof e?e:e+""}function _unsupportedIterableToArray(t,e){if(t){if("string"==typeof t)return _arrayLikeToArray(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?_arrayLikeToArray(t,e):void 0}}var s=["animationData","loop","autoplay","initialSegment","onComplete","onLoopComplete","onEnterFrame","onSegmentStart","onConfigReady","onDataReady","onDataFailed","onLoadedImages","onDOMLoaded","onDestroy","lottieRef","renderer","name","assetsPath","rendererSettings"],n=function useLottie(t,e){var n=t.animationData,o=t.loop,h=t.autoplay,l=t.initialSegment,p=t.onComplete,c=t.onLoopComplete,f=t.onEnterFrame,m=t.onSegmentStart,u=t.onConfigReady,d=t.onDataReady,y=t.onDataFailed,g=t.onLoadedImages,v=t.onDOMLoaded,b=t.onDestroy;t.lottieRef,t.renderer,t.name,t.assetsPath,t.rendererSettings;var P=_objectWithoutProperties(t,s),x=_slicedToArray(r.useState(!1),2),S=x[0],E=x[1],_=r.useRef(),F=r.useRef(null),T=function play(){var t;null===(t=_.current)||void 0===t||t.play()},k=function stop(){var t;null===(t=_.current)||void 0===t||t.stop()},M=function pause(){var t;null===(t=_.current)||void 0===t||t.pause()},D=function setSpeed(t){var e;null===(e=_.current)||void 0===e||e.setSpeed(t)},w=function goToAndPlay(t,e){var r;null===(r=_.current)||void 0===r||r.goToAndPlay(t,e)},I=function goToAndStop(t,e){var r;null===(r=_.current)||void 0===r||r.goToAndStop(t,e)},L=function setDirection(t){var e;null===(e=_.current)||void 0===e||e.setDirection(t)},V=function playSegments(t,e){var r;null===(r=_.current)||void 0===r||r.playSegments(t,e)},R=function setSubframe(t){var e;null===(e=_.current)||void 0===e||e.setSubframe(t)},z=function getDuration(t){var e;return null===(e=_.current)||void 0===e?void 0:e.getDuration(t)},O=function destroy(){var t;null===(t=_.current)||void 0===t||t.destroy(),_.current=void 0},G=function loadAnimation(){var e,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(F.current){null===(e=_.current)||void 0===e||e.destroy();var a=_objectSpread2(_objectSpread2(_objectSpread2({},t),r),{},{container:F.current});return _.current=i.default.loadAnimation(a),E(!!_.current),function(){var t;null===(t=_.current)||void 0===t||t.destroy(),_.current=void 0}}};return r.useEffect(function(){var t=G();return function(){return null==t?void 0:t()}},[n,o]),r.useEffect(function(){_.current&&(_.current.autoplay=!!h)},[h]),r.useEffect(function(){_.current&&(l?Array.isArray(l)&&l.length&&((_.current.currentRawFrame<l[0]||_.current.currentRawFrame>l[1])&&(_.current.currentRawFrame=l[0]),_.current.setSegment(l[0],l[1])):_.current.resetSegments(!0))},[l]),r.useEffect(function(){var t=[{name:"complete",handler:p},{name:"loopComplete",handler:c},{name:"enterFrame",handler:f},{name:"segmentStart",handler:m},{name:"config_ready",handler:u},{name:"data_ready",handler:d},{name:"data_failed",handler:y},{name:"loaded_images",handler:g},{name:"DOMLoaded",handler:v},{name:"destroy",handler:b}].filter(function(t){return null!=t.handler});if(t.length){var e=t.map(function(t){var e;return null===(e=_.current)||void 0===e||e.addEventListener(t.name,t.handler),function(){var e;null===(e=_.current)||void 0===e||e.removeEventListener(t.name,t.handler)}});return function(){e.forEach(function(t){return t()})}}},[p,c,f,m,u,d,y,g,v,b]),{View:a.default.createElement("div",_objectSpread2({style:e,ref:F},P)),play:T,stop:k,pause:M,setSpeed:D,goToAndStop:I,goToAndPlay:w,setDirection:L,playSegments:V,setSubframe:R,getDuration:z,destroy:O,animationContainerRef:F,animationLoaded:S,animationItem:_.current}};function getContainerVisibility(t){var e=t.getBoundingClientRect(),r=e.top,i=e.height;return(window.innerHeight-r)/(window.innerHeight+i)}function getContainerCursorPosition(t,e,r){var i=t.getBoundingClientRect(),a=i.top;return{x:(e-i.left)/i.width,y:(r-a)/i.height}}var o=function useInitInteractivity(t){var e=t.wrapperRef,i=t.animationItem,a=t.mode,s=t.actions;r.useEffect(function(){var t=e.current;if(t&&i&&s.length){i.stop();var r=function scrollModeHandler(){var e=null,r=function scrollHandler(){var r=getContainerVisibility(t),a=s.find(function(t){var e=t.visibility;return e&&r>=e[0]&&r<=e[1]});if(a){if("seek"===a.type&&a.visibility&&2===a.frames.length){var n=a.frames[0]+Math.ceil((r-a.visibility[0])/(a.visibility[1]-a.visibility[0])*a.frames[1]);i.goToAndStop(n-i.firstFrame-1,!0)}"loop"===a.type&&(null===e||e!==a.frames||i.isPaused)&&(i.playSegments(a.frames,!0),e=a.frames),"play"===a.type&&i.isPaused&&(i.resetSegments(!0),i.play()),"stop"===a.type&&i.goToAndStop(a.frames[0]-i.firstFrame-1,!0)}};return document.addEventListener("scroll",r),function(){document.removeEventListener("scroll",r)}},n=function cursorModeHandler(){var e=function handleCursor(e,r){var a=e,n=r;if(-1!==a&&-1!==n){var o=getContainerCursorPosition(t,a,n);a=o.x,n=o.y}var h=s.find(function(t){var e=t.position;return e&&Array.isArray(e.x)&&Array.isArray(e.y)?a>=e.x[0]&&a<=e.x[1]&&n>=e.y[0]&&n<=e.y[1]:!(!e||Number.isNaN(e.x)||Number.isNaN(e.y))&&a===e.x&&n===e.y});if(h){if("seek"===h.type&&h.position&&Array.isArray(h.position.x)&&Array.isArray(h.position.y)&&2===h.frames.length){var l=(a-h.position.x[0])/(h.position.x[1]-h.position.x[0]),p=(n-h.position.y[0])/(h.position.y[1]-h.position.y[0]);i.playSegments(h.frames,!0),i.goToAndStop(Math.ceil((l+p)/2*(h.frames[1]-h.frames[0])),!0)}"loop"===h.type&&i.playSegments(h.frames,!0),"play"===h.type&&(i.isPaused&&i.resetSegments(!1),i.playSegments(h.frames)),"stop"===h.type&&i.goToAndStop(h.frames[0],!0)}},r=function mouseMoveHandler(t){e(t.clientX,t.clientY)},a=function mouseOutHandler(){e(-1,-1)};return t.addEventListener("mousemove",r),t.addEventListener("mouseout",a),function(){t.removeEventListener("mousemove",r),t.removeEventListener("mouseout",a)}};switch(a){case"scroll":return r();case"cursor":return n()}}},[a,i])},h=function useLottieInteractivity(t){var e=t.actions,r=t.mode,i=t.lottieObj,a=i.animationItem,s=i.View,n=i.animationContainerRef;return o({actions:e,animationItem:a,mode:r,wrapperRef:n}),s},l=["style","interactivity"],p=function Lottie(t){var e,i,a,s=t.style,o=t.interactivity,p=_objectWithoutProperties(t,l),c=n(p,s),f=c.View,m=c.play,u=c.stop,d=c.pause,y=c.setSpeed,g=c.goToAndStop,v=c.goToAndPlay,b=c.setDirection,P=c.playSegments,x=c.setSubframe,S=c.getDuration,E=c.destroy,_=c.animationContainerRef,F=c.animationLoaded,T=c.animationItem;return r.useEffect(function(){t.lottieRef&&(t.lottieRef.current={play:m,stop:u,pause:d,setSpeed:y,goToAndPlay:v,goToAndStop:g,setDirection:b,playSegments:P,setSubframe:x,getDuration:S,destroy:E,animationContainerRef:_,animationLoaded:F,animationItem:T})},[null===(e=t.lottieRef)||void 0===e?void 0:e.current]),h({lottieObj:{View:f,play:m,stop:u,pause:d,setSpeed:y,goToAndStop:g,goToAndPlay:v,setDirection:b,playSegments:P,setSubframe:x,getDuration:S,destroy:E,animationContainerRef:_,animationLoaded:F,animationItem:T},actions:null!==(i=null==o?void 0:o.actions)&&void 0!==i?i:[],mode:null!==(a=null==o?void 0:o.mode)&&void 0!==a?a:"scroll"})};Object.defineProperty(t,"LottiePlayer",{enumerable:!0,get:function(){return i.default}}),t.default=p,t.useLottie=n,t.useLottieInteractivity=h,Object.defineProperty(t,"__esModule",{value:!0})}(e,r("./node_modules/lottie-web/build/player/lottie.js"),r("react"))},"./node_modules/lottie-web/build/player/lottie.js":function(module,exports,__webpack_require__){var factory;"undefined"!=typeof document&&"undefined"!=typeof navigator&&(factory=function(){"use strict";var svgNS="http://www.w3.org/2000/svg",locationHref="",_useWebWorker=!1,initialDefaultFrame=-999999,setWebWorker=function setWebWorker(t){_useWebWorker=!!t},getWebWorker=function getWebWorker(){return _useWebWorker},setLocationHref=function setLocationHref(t){locationHref=t},getLocationHref=function getLocationHref(){return locationHref};function createTag(t){return document.createElement(t)}function extendPrototype(t,e){var r,i,a=t.length;for(r=0;r<a;r+=1)for(var s in i=t[r].prototype)Object.prototype.hasOwnProperty.call(i,s)&&(e.prototype[s]=i[s])}function getDescriptor(t,e){return Object.getOwnPropertyDescriptor(t,e)}function createProxyFunction(t){function ProxyFunction(){}return ProxyFunction.prototype=t,ProxyFunction}var audioControllerFactory=function(){function AudioController(t){this.audios=[],this.audioFactory=t,this._volume=1,this._isMuted=!1}return AudioController.prototype={addAudio:function addAudio(t){this.audios.push(t)},pause:function pause(){var t,e=this.audios.length;for(t=0;t<e;t+=1)this.audios[t].pause()},resume:function resume(){var t,e=this.audios.length;for(t=0;t<e;t+=1)this.audios[t].resume()},setRate:function setRate(t){var e,r=this.audios.length;for(e=0;e<r;e+=1)this.audios[e].setRate(t)},createAudio:function createAudio(t){return this.audioFactory?this.audioFactory(t):window.Howl?new window.Howl({src:[t]}):{isPlaying:!1,play:function play(){this.isPlaying=!0},seek:function seek(){this.isPlaying=!1},playing:function playing(){},rate:function rate(){},setVolume:function setVolume(){}}},setAudioFactory:function setAudioFactory(t){this.audioFactory=t},setVolume:function setVolume(t){this._volume=t,this._updateVolume()},mute:function mute(){this._isMuted=!0,this._updateVolume()},unmute:function unmute(){this._isMuted=!1,this._updateVolume()},getVolume:function getVolume(){return this._volume},_updateVolume:function _updateVolume(){var t,e=this.audios.length;for(t=0;t<e;t+=1)this.audios[t].volume(this._volume*(this._isMuted?0:1))}},function(){return new AudioController}}(),createTypedArray=function(){function createRegularArray(t,e){var r,i=0,a=[];switch(t){case"int16":case"uint8c":r=1;break;default:r=1.1}for(i=0;i<e;i+=1)a.push(r);return a}return"function"==typeof Uint8ClampedArray&&"function"==typeof Float32Array?function createTypedArrayFactory(t,e){return"float32"===t?new Float32Array(e):"int16"===t?new Int16Array(e):"uint8c"===t?new Uint8ClampedArray(e):createRegularArray(t,e)}:createRegularArray}();function createSizedArray(t){return Array.apply(null,{length:t})}function _typeof$6(t){return _typeof$6="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},_typeof$6(t)}var subframeEnabled=!0,expressionsPlugin=null,expressionsInterfaces=null,idPrefix$1="",isSafari=/^((?!chrome|android).)*safari/i.test(navigator.userAgent),_shouldRoundValues=!1,bmPow=Math.pow,bmSqrt=Math.sqrt,bmFloor=Math.floor,bmMax=Math.max,bmMin=Math.min,BMMath={};function ProjectInterface$1(){return{}}!function(){var t,e=["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"],r=e.length;for(t=0;t<r;t+=1)BMMath[e[t]]=Math[e[t]]}(),BMMath.random=Math.random,BMMath.abs=function(t){if("object"===_typeof$6(t)&&t.length){var e,r=createSizedArray(t.length),i=t.length;for(e=0;e<i;e+=1)r[e]=Math.abs(t[e]);return r}return Math.abs(t)};var defaultCurveSegments=150,degToRads=Math.PI/180,roundCorner=.5519;function roundValues(t){_shouldRoundValues=!!t}function bmRnd(t){return _shouldRoundValues?Math.round(t):t}function styleDiv(t){t.style.position="absolute",t.style.top=0,t.style.left=0,t.style.display="block",t.style.transformOrigin="0 0",t.style.webkitTransformOrigin="0 0",t.style.backfaceVisibility="visible",t.style.webkitBackfaceVisibility="visible",t.style.transformStyle="preserve-3d",t.style.webkitTransformStyle="preserve-3d",t.style.mozTransformStyle="preserve-3d"}function BMEnterFrameEvent(t,e,r,i){this.type=t,this.currentTime=e,this.totalTime=r,this.direction=i<0?-1:1}function BMCompleteEvent(t,e){this.type=t,this.direction=e<0?-1:1}function BMCompleteLoopEvent(t,e,r,i){this.type=t,this.currentLoop=r,this.totalLoops=e,this.direction=i<0?-1:1}function BMSegmentStartEvent(t,e,r){this.type=t,this.firstFrame=e,this.totalFrames=r}function BMDestroyEvent(t,e){this.type=t,this.target=e}function BMRenderFrameErrorEvent(t,e){this.type="renderFrameError",this.nativeError=t,this.currentTime=e}function BMConfigErrorEvent(t){this.type="configError",this.nativeError=t}function BMAnimationConfigErrorEvent(t,e){this.type=t,this.nativeError=e}var createElementID=(_count=0,function createID(){return idPrefix$1+"__lottie_element_"+(_count+=1)}),_count;function HSVtoRGB(t,e,r){var i,a,s,n,o,h,l,p;switch(h=r*(1-e),l=r*(1-(o=6*t-(n=Math.floor(6*t)))*e),p=r*(1-(1-o)*e),n%6){case 0:i=r,a=p,s=h;break;case 1:i=l,a=r,s=h;break;case 2:i=h,a=r,s=p;break;case 3:i=h,a=l,s=r;break;case 4:i=p,a=h,s=r;break;case 5:i=r,a=h,s=l}return[i,a,s]}function RGBtoHSV(t,e,r){var i,a=Math.max(t,e,r),s=Math.min(t,e,r),n=a-s,o=0===a?0:n/a,h=a/255;switch(a){case s:i=0;break;case t:i=e-r+n*(e<r?6:0),i/=6*n;break;case e:i=r-t+2*n,i/=6*n;break;case r:i=t-e+4*n,i/=6*n}return[i,o,h]}function addSaturationToRGB(t,e){var r=RGBtoHSV(255*t[0],255*t[1],255*t[2]);return r[1]+=e,r[1]>1?r[1]=1:r[1]<=0&&(r[1]=0),HSVtoRGB(r[0],r[1],r[2])}function addBrightnessToRGB(t,e){var r=RGBtoHSV(255*t[0],255*t[1],255*t[2]);return r[2]+=e,r[2]>1?r[2]=1:r[2]<0&&(r[2]=0),HSVtoRGB(r[0],r[1],r[2])}function addHueToRGB(t,e){var r=RGBtoHSV(255*t[0],255*t[1],255*t[2]);return r[0]+=e/360,r[0]>1?r[0]-=1:r[0]<0&&(r[0]+=1),HSVtoRGB(r[0],r[1],r[2])}var rgbToHex=function(){var t,e,r=[];for(t=0;t<256;t+=1)e=t.toString(16),r[t]=1===e.length?"0"+e:e;return function(t,e,i){return t<0&&(t=0),e<0&&(e=0),i<0&&(i=0),"#"+r[t]+r[e]+r[i]}}(),setSubframeEnabled=function setSubframeEnabled(t){subframeEnabled=!!t},getSubframeEnabled=function getSubframeEnabled(){return subframeEnabled},setExpressionsPlugin=function setExpressionsPlugin(t){expressionsPlugin=t},getExpressionsPlugin=function getExpressionsPlugin(){return expressionsPlugin},setExpressionInterfaces=function setExpressionInterfaces(t){expressionsInterfaces=t},getExpressionInterfaces=function getExpressionInterfaces(){return expressionsInterfaces},setDefaultCurveSegments=function setDefaultCurveSegments(t){defaultCurveSegments=t},getDefaultCurveSegments=function getDefaultCurveSegments(){return defaultCurveSegments},setIdPrefix=function setIdPrefix(t){idPrefix$1=t},getIdPrefix=function getIdPrefix(){return idPrefix$1};function createNS(t){return document.createElementNS(svgNS,t)}function _typeof$5(t){return _typeof$5="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},_typeof$5(t)}var dataManager=function(){var t,e,r=1,i=[],a={onmessage:function onmessage(){},postMessage:function postMessage(e){t({data:e})}},s={postMessage:function postMessage(t){a.onmessage({data:t})}};function setupWorker(){e||(e=function createWorker(e){if(window.Worker&&window.Blob&&getWebWorker()){var r=new Blob(["var _workerSelf = self; self.onmessage = ",e.toString()],{type:"text/javascript"}),i=URL.createObjectURL(r);return new Worker(i)}return t=e,a}(function workerStart(t){if(s.dataManager||(s.dataManager=function dataFunctionManager(){function completeLayers(t,e){var r,i,a,s,n,o,h=t.length;for(i=0;i<h;i+=1)if("ks"in(r=t[i])&&!r.completed){if(r.completed=!0,r.hasMask){var l=r.masksProperties;for(s=l.length,a=0;a<s;a+=1)if(l[a].pt.k.i)convertPathsToAbsoluteValues(l[a].pt.k);else for(o=l[a].pt.k.length,n=0;n<o;n+=1)l[a].pt.k[n].s&&convertPathsToAbsoluteValues(l[a].pt.k[n].s[0]),l[a].pt.k[n].e&&convertPathsToAbsoluteValues(l[a].pt.k[n].e[0])}0===r.ty?(r.layers=findCompLayers(r.refId,e),completeLayers(r.layers,e)):4===r.ty?completeShapes(r.shapes):5===r.ty&&completeText(r)}}function findCompLayers(t,e){var r=function findComp(t,e){for(var r=0,i=e.length;r<i;){if(e[r].id===t)return e[r];r+=1}return null}(t,e);return r?r.layers.__used?JSON.parse(JSON.stringify(r.layers)):(r.layers.__used=!0,r.layers):null}function completeShapes(t){var e,r,i;for(e=t.length-1;e>=0;e-=1)if("sh"===t[e].ty)if(t[e].ks.k.i)convertPathsToAbsoluteValues(t[e].ks.k);else for(i=t[e].ks.k.length,r=0;r<i;r+=1)t[e].ks.k[r].s&&convertPathsToAbsoluteValues(t[e].ks.k[r].s[0]),t[e].ks.k[r].e&&convertPathsToAbsoluteValues(t[e].ks.k[r].e[0]);else"gr"===t[e].ty&&completeShapes(t[e].it)}function convertPathsToAbsoluteValues(t){var e,r=t.i.length;for(e=0;e<r;e+=1)t.i[e][0]+=t.v[e][0],t.i[e][1]+=t.v[e][1],t.o[e][0]+=t.v[e][0],t.o[e][1]+=t.v[e][1]}function checkVersion(t,e){var r=e?e.split("."):[100,100,100];return t[0]>r[0]||!(r[0]>t[0])&&(t[1]>r[1]||!(r[1]>t[1])&&(t[2]>r[2]||!(r[2]>t[2])&&null))}var t,e=function(){var t=[4,4,14];function updateTextLayer(t){var e=t.t.d;t.t.d={k:[{s:e,t:0}]}}function iterateLayers(t){var e,r=t.length;for(e=0;e<r;e+=1)5===t[e].ty&&updateTextLayer(t[e])}return function(e){if(checkVersion(t,e.v)&&(iterateLayers(e.layers),e.assets)){var r,i=e.assets.length;for(r=0;r<i;r+=1)e.assets[r].layers&&iterateLayers(e.assets[r].layers)}}}(),r=(t=[4,7,99],function(e){if(e.chars&&!checkVersion(t,e.v)){var r,i=e.chars.length;for(r=0;r<i;r+=1){var a=e.chars[r];a.data&&a.data.shapes&&(completeShapes(a.data.shapes),a.data.ip=0,a.data.op=99999,a.data.st=0,a.data.sr=1,a.data.ks={p:{k:[0,0],a:0},s:{k:[100,100],a:0},a:{k:[0,0],a:0},r:{k:0,a:0},o:{k:100,a:0}},e.chars[r].t||(a.data.shapes.push({ty:"no"}),a.data.shapes[0].it.push({p:{k:[0,0],a:0},s:{k:[100,100],a:0},a:{k:[0,0],a:0},r:{k:0,a:0},o:{k:100,a:0},sk:{k:0,a:0},sa:{k:0,a:0},ty:"tr"})))}}}),i=function(){var t=[5,7,15];function updateTextLayer(t){var e=t.t.p;"number"==typeof e.a&&(e.a={a:0,k:e.a}),"number"==typeof e.p&&(e.p={a:0,k:e.p}),"number"==typeof e.r&&(e.r={a:0,k:e.r})}function iterateLayers(t){var e,r=t.length;for(e=0;e<r;e+=1)5===t[e].ty&&updateTextLayer(t[e])}return function(e){if(checkVersion(t,e.v)&&(iterateLayers(e.layers),e.assets)){var r,i=e.assets.length;for(r=0;r<i;r+=1)e.assets[r].layers&&iterateLayers(e.assets[r].layers)}}}(),a=function(){var t=[4,1,9];function iterateShapes(t){var e,r,i,a=t.length;for(e=0;e<a;e+=1)if("gr"===t[e].ty)iterateShapes(t[e].it);else if("fl"===t[e].ty||"st"===t[e].ty)if(t[e].c.k&&t[e].c.k[0].i)for(i=t[e].c.k.length,r=0;r<i;r+=1)t[e].c.k[r].s&&(t[e].c.k[r].s[0]/=255,t[e].c.k[r].s[1]/=255,t[e].c.k[r].s[2]/=255,t[e].c.k[r].s[3]/=255),t[e].c.k[r].e&&(t[e].c.k[r].e[0]/=255,t[e].c.k[r].e[1]/=255,t[e].c.k[r].e[2]/=255,t[e].c.k[r].e[3]/=255);else t[e].c.k[0]/=255,t[e].c.k[1]/=255,t[e].c.k[2]/=255,t[e].c.k[3]/=255}function iterateLayers(t){var e,r=t.length;for(e=0;e<r;e+=1)4===t[e].ty&&iterateShapes(t[e].shapes)}return function(e){if(checkVersion(t,e.v)&&(iterateLayers(e.layers),e.assets)){var r,i=e.assets.length;for(r=0;r<i;r+=1)e.assets[r].layers&&iterateLayers(e.assets[r].layers)}}}(),s=function(){var t=[4,4,18];function completeClosingShapes(t){var e,r,i;for(e=t.length-1;e>=0;e-=1)if("sh"===t[e].ty)if(t[e].ks.k.i)t[e].ks.k.c=t[e].closed;else for(i=t[e].ks.k.length,r=0;r<i;r+=1)t[e].ks.k[r].s&&(t[e].ks.k[r].s[0].c=t[e].closed),t[e].ks.k[r].e&&(t[e].ks.k[r].e[0].c=t[e].closed);else"gr"===t[e].ty&&completeClosingShapes(t[e].it)}function iterateLayers(t){var e,r,i,a,s,n,o=t.length;for(r=0;r<o;r+=1){if((e=t[r]).hasMask){var h=e.masksProperties;for(a=h.length,i=0;i<a;i+=1)if(h[i].pt.k.i)h[i].pt.k.c=h[i].cl;else for(n=h[i].pt.k.length,s=0;s<n;s+=1)h[i].pt.k[s].s&&(h[i].pt.k[s].s[0].c=h[i].cl),h[i].pt.k[s].e&&(h[i].pt.k[s].e[0].c=h[i].cl)}4===e.ty&&completeClosingShapes(e.shapes)}}return function(e){if(checkVersion(t,e.v)&&(iterateLayers(e.layers),e.assets)){var r,i=e.assets.length;for(r=0;r<i;r+=1)e.assets[r].layers&&iterateLayers(e.assets[r].layers)}}}();function completeText(t){0===t.t.a.length&&t.t.p}var n={completeData:function completeData(t){t.__complete||(a(t),e(t),r(t),i(t),s(t),completeLayers(t.layers,t.assets),function completeChars(t,e){if(t){var r=0,i=t.length;for(r=0;r<i;r+=1)1===t[r].t&&(t[r].data.layers=findCompLayers(t[r].data.refId,e),completeLayers(t[r].data.layers,e))}}(t.chars,t.assets),t.__complete=!0)}};return n.checkColors=a,n.checkChars=r,n.checkPathProperties=i,n.checkShapes=s,n.completeLayers=completeLayers,n}()),s.assetLoader||(s.assetLoader=function(){function formatResponse(t){var e=t.getResponseHeader("content-type");return e&&"json"===t.responseType&&-1!==e.indexOf("json")||t.response&&"object"===_typeof$5(t.response)?t.response:t.response&&"string"==typeof t.response?JSON.parse(t.response):t.responseText?JSON.parse(t.responseText):null}return{load:function loadAsset(t,e,r,i){var a,s=new XMLHttpRequest;try{s.responseType="json"}catch(t){}s.onreadystatechange=function(){if(4===s.readyState)if(200===s.status)a=formatResponse(s),r(a);else try{a=formatResponse(s),r(a)}catch(t){i&&i(t)}};try{s.open(["G","E","T"].join(""),t,!0)}catch(r){s.open(["G","E","T"].join(""),e+"/"+t,!0)}s.send()}}}()),"loadAnimation"===t.data.type)s.assetLoader.load(t.data.path,t.data.fullPath,function(e){s.dataManager.completeData(e),s.postMessage({id:t.data.id,payload:e,status:"success"})},function(){s.postMessage({id:t.data.id,status:"error"})});else if("complete"===t.data.type){var e=t.data.animation;s.dataManager.completeData(e),s.postMessage({id:t.data.id,payload:e,status:"success"})}else"loadData"===t.data.type&&s.assetLoader.load(t.data.path,t.data.fullPath,function(e){s.postMessage({id:t.data.id,payload:e,status:"success"})},function(){s.postMessage({id:t.data.id,status:"error"})})}),e.onmessage=function(t){var e=t.data,r=e.id,a=i[r];i[r]=null,"success"===e.status?a.onComplete(e.payload):a.onError&&a.onError()})}function createProcess(t,e){var a="processId_"+(r+=1);return i[a]={onComplete:t,onError:e},a}return{loadAnimation:function loadAnimation(t,r,i){setupWorker();var a=createProcess(r,i);e.postMessage({type:"loadAnimation",path:t,fullPath:window.location.origin+window.location.pathname,id:a})},loadData:function loadData(t,r,i){setupWorker();var a=createProcess(r,i);e.postMessage({type:"loadData",path:t,fullPath:window.location.origin+window.location.pathname,id:a})},completeAnimation:function completeAnimation(t,r,i){setupWorker();var a=createProcess(r,i);e.postMessage({type:"complete",animation:t,id:a})}}}(),ImagePreloader=function(){var t=function(){var t=createTag("canvas");t.width=1,t.height=1;var e=t.getContext("2d");return e.fillStyle="rgba(0,0,0,0)",e.fillRect(0,0,1,1),t}();function imageLoaded(){this.loadedAssets+=1,this.loadedAssets===this.totalImages&&this.loadedFootagesCount===this.totalFootages&&this.imagesLoadedCb&&this.imagesLoadedCb(null)}function footageLoaded(){this.loadedFootagesCount+=1,this.loadedAssets===this.totalImages&&this.loadedFootagesCount===this.totalFootages&&this.imagesLoadedCb&&this.imagesLoadedCb(null)}function getAssetsPath(t,e,r){var i="";if(t.e)i=t.p;else if(e){var a=t.p;-1!==a.indexOf("images/")&&(a=a.split("/")[1]),i=e+a}else i=r,i+=t.u?t.u:"",i+=t.p;return i}function testImageLoaded(t){var e=0,r=setInterval(function(){(t.getBBox().width||e>500)&&(this._imageLoaded(),clearInterval(r)),e+=1}.bind(this),50)}function createFootageData(t){var e={assetData:t},r=getAssetsPath(t,this.assetsPath,this.path);return dataManager.loadData(r,function(t){e.img=t,this._footageLoaded()}.bind(this),function(){e.img={},this._footageLoaded()}.bind(this)),e}function ImagePreloaderFactory(){this._imageLoaded=imageLoaded.bind(this),this._footageLoaded=footageLoaded.bind(this),this.testImageLoaded=testImageLoaded.bind(this),this.createFootageData=createFootageData.bind(this),this.assetsPath="",this.path="",this.totalImages=0,this.totalFootages=0,this.loadedAssets=0,this.loadedFootagesCount=0,this.imagesLoadedCb=null,this.images=[]}return ImagePreloaderFactory.prototype={loadAssets:function loadAssets(t,e){var r;this.imagesLoadedCb=e;var i=t.length;for(r=0;r<i;r+=1)t[r].layers||(t[r].t&&"seq"!==t[r].t?3===t[r].t&&(this.totalFootages+=1,this.images.push(this.createFootageData(t[r]))):(this.totalImages+=1,this.images.push(this._createImageData(t[r]))))},setAssetsPath:function setAssetsPath(t){this.assetsPath=t||""},setPath:function setPath(t){this.path=t||""},loadedImages:function loadedImages(){return this.totalImages===this.loadedAssets},loadedFootages:function loadedFootages(){return this.totalFootages===this.loadedFootagesCount},destroy:function destroy(){this.imagesLoadedCb=null,this.images.length=0},getAsset:function getAsset(t){for(var e=0,r=this.images.length;e<r;){if(this.images[e].assetData===t)return this.images[e].img;e+=1}return null},createImgData:function createImgData(e){var r=getAssetsPath(e,this.assetsPath,this.path),i=createTag("img");i.crossOrigin="anonymous",i.addEventListener("load",this._imageLoaded,!1),i.addEventListener("error",function(){a.img=t,this._imageLoaded()}.bind(this),!1),i.src=r;var a={img:i,assetData:e};return a},createImageData:function createImageData(e){var r=getAssetsPath(e,this.assetsPath,this.path),i=createNS("image");isSafari?this.testImageLoaded(i):i.addEventListener("load",this._imageLoaded,!1),i.addEventListener("error",function(){a.img=t,this._imageLoaded()}.bind(this),!1),i.setAttributeNS("http://www.w3.org/1999/xlink","href",r),this._elementHelper.append?this._elementHelper.append(i):this._elementHelper.appendChild(i);var a={img:i,assetData:e};return a},imageLoaded:imageLoaded,footageLoaded:footageLoaded,setCacheType:function setCacheType(t,e){"svg"===t?(this._elementHelper=e,this._createImageData=this.createImageData.bind(this)):this._createImageData=this.createImgData.bind(this)}},ImagePreloaderFactory}();function BaseEvent(){}BaseEvent.prototype={triggerEvent:function triggerEvent(t,e){if(this._cbs[t])for(var r=this._cbs[t],i=0;i<r.length;i+=1)r[i](e)},addEventListener:function addEventListener(t,e){return this._cbs[t]||(this._cbs[t]=[]),this._cbs[t].push(e),function(){this.removeEventListener(t,e)}.bind(this)},removeEventListener:function removeEventListener(t,e){if(e){if(this._cbs[t]){for(var r=0,i=this._cbs[t].length;r<i;)this._cbs[t][r]===e&&(this._cbs[t].splice(r,1),r-=1,i-=1),r+=1;this._cbs[t].length||(this._cbs[t]=null)}}else this._cbs[t]=null}};var markerParser=function(){function parsePayloadLines(t){for(var e,r=t.split("\r\n"),i={},a=0,s=0;s<r.length;s+=1)2===(e=r[s].split(":")).length&&(i[e[0]]=e[1].trim(),a+=1);if(0===a)throw new Error;return i}return function(t){for(var e=[],r=0;r<t.length;r+=1){var i=t[r],a={time:i.tm,duration:i.dr};try{a.payload=JSON.parse(t[r].cm)}catch(e){try{a.payload=parsePayloadLines(t[r].cm)}catch(e){a.payload={name:t[r].cm}}}e.push(a)}return e}}(),ProjectInterface=function(){function registerComposition(t){this.compositions.push(t)}return function(){function _thisProjectFunction(t){for(var e=0,r=this.compositions.length;e<r;){if(this.compositions[e].data&&this.compositions[e].data.nm===t)return this.compositions[e].prepareFrame&&this.compositions[e].data.xt&&this.compositions[e].prepareFrame(this.currentFrame),this.compositions[e].compInterface;e+=1}return null}return _thisProjectFunction.compositions=[],_thisProjectFunction.currentFrame=0,_thisProjectFunction.registerComposition=registerComposition,_thisProjectFunction}}(),renderers={},registerRenderer=function registerRenderer(t,e){renderers[t]=e};function getRenderer(t){return renderers[t]}function getRegisteredRenderer(){if(renderers.canvas)return"canvas";for(var t in renderers)if(renderers[t])return t;return""}function _typeof$4(t){return _typeof$4="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},_typeof$4(t)}var AnimationItem=function AnimationItem(){this._cbs=[],this.name="",this.path="",this.isLoaded=!1,this.currentFrame=0,this.currentRawFrame=0,this.firstFrame=0,this.totalFrames=0,this.frameRate=0,this.frameMult=0,this.playSpeed=1,this.playDirection=1,this.playCount=0,this.animationData={},this.assets=[],this.isPaused=!0,this.autoplay=!1,this.loop=!0,this.renderer=null,this.animationID=createElementID(),this.assetsPath="",this.timeCompleted=0,this.segmentPos=0,this.isSubframeEnabled=getSubframeEnabled(),this.segments=[],this._idle=!0,this._completedLoop=!1,this.projectInterface=ProjectInterface(),this.imagePreloader=new ImagePreloader,this.audioController=audioControllerFactory(),this.markers=[],this.configAnimation=this.configAnimation.bind(this),this.onSetupError=this.onSetupError.bind(this),this.onSegmentComplete=this.onSegmentComplete.bind(this),this.drawnFrameEvent=new BMEnterFrameEvent("drawnFrame",0,0,0),this.expressionsPlugin=getExpressionsPlugin()};extendPrototype([BaseEvent],AnimationItem),AnimationItem.prototype.setParams=function(t){(t.wrapper||t.container)&&(this.wrapper=t.wrapper||t.container);var e="svg";t.animType?e=t.animType:t.renderer&&(e=t.renderer);var r=getRenderer(e);this.renderer=new r(this,t.rendererSettings),this.imagePreloader.setCacheType(e,this.renderer.globalData.defs),this.renderer.setProjectInterface(this.projectInterface),this.animType=e,""===t.loop||null===t.loop||void 0===t.loop||!0===t.loop?this.loop=!0:!1===t.loop?this.loop=!1:this.loop=parseInt(t.loop,10),this.autoplay=!("autoplay"in t)||t.autoplay,this.name=t.name?t.name:"",this.autoloadSegments=!Object.prototype.hasOwnProperty.call(t,"autoloadSegments")||t.autoloadSegments,this.assetsPath=t.assetsPath,this.initialSegment=t.initialSegment,t.audioFactory&&this.audioController.setAudioFactory(t.audioFactory),t.animationData?this.setupAnimation(t.animationData):t.path&&(-1!==t.path.lastIndexOf("\\")?this.path=t.path.substr(0,t.path.lastIndexOf("\\")+1):this.path=t.path.substr(0,t.path.lastIndexOf("/")+1),this.fileName=t.path.substr(t.path.lastIndexOf("/")+1),this.fileName=this.fileName.substr(0,this.fileName.lastIndexOf(".json")),dataManager.loadAnimation(t.path,this.configAnimation,this.onSetupError))},AnimationItem.prototype.onSetupError=function(){this.trigger("data_failed")},AnimationItem.prototype.setupAnimation=function(t){dataManager.completeAnimation(t,this.configAnimation)},AnimationItem.prototype.setData=function(t,e){e&&"object"!==_typeof$4(e)&&(e=JSON.parse(e));var r={wrapper:t,animationData:e},i=t.attributes;r.path=i.getNamedItem("data-animation-path")?i.getNamedItem("data-animation-path").value:i.getNamedItem("data-bm-path")?i.getNamedItem("data-bm-path").value:i.getNamedItem("bm-path")?i.getNamedItem("bm-path").value:"",r.animType=i.getNamedItem("data-anim-type")?i.getNamedItem("data-anim-type").value:i.getNamedItem("data-bm-type")?i.getNamedItem("data-bm-type").value:i.getNamedItem("bm-type")?i.getNamedItem("bm-type").value:i.getNamedItem("data-bm-renderer")?i.getNamedItem("data-bm-renderer").value:i.getNamedItem("bm-renderer")?i.getNamedItem("bm-renderer").value:getRegisteredRenderer()||"canvas";var a=i.getNamedItem("data-anim-loop")?i.getNamedItem("data-anim-loop").value:i.getNamedItem("data-bm-loop")?i.getNamedItem("data-bm-loop").value:i.getNamedItem("bm-loop")?i.getNamedItem("bm-loop").value:"";"false"===a?r.loop=!1:"true"===a?r.loop=!0:""!==a&&(r.loop=parseInt(a,10));var s=i.getNamedItem("data-anim-autoplay")?i.getNamedItem("data-anim-autoplay").value:i.getNamedItem("data-bm-autoplay")?i.getNamedItem("data-bm-autoplay").value:!i.getNamedItem("bm-autoplay")||i.getNamedItem("bm-autoplay").value;r.autoplay="false"!==s,r.name=i.getNamedItem("data-name")?i.getNamedItem("data-name").value:i.getNamedItem("data-bm-name")?i.getNamedItem("data-bm-name").value:i.getNamedItem("bm-name")?i.getNamedItem("bm-name").value:"","false"===(i.getNamedItem("data-anim-prerender")?i.getNamedItem("data-anim-prerender").value:i.getNamedItem("data-bm-prerender")?i.getNamedItem("data-bm-prerender").value:i.getNamedItem("bm-prerender")?i.getNamedItem("bm-prerender").value:"")&&(r.prerender=!1),r.path?this.setParams(r):this.trigger("destroy")},AnimationItem.prototype.includeLayers=function(t){t.op>this.animationData.op&&(this.animationData.op=t.op,this.totalFrames=Math.floor(t.op-this.animationData.ip));var e,r,i=this.animationData.layers,a=i.length,s=t.layers,n=s.length;for(r=0;r<n;r+=1)for(e=0;e<a;){if(i[e].id===s[r].id){i[e]=s[r];break}e+=1}if((t.chars||t.fonts)&&(this.renderer.globalData.fontManager.addChars(t.chars),this.renderer.globalData.fontManager.addFonts(t.fonts,this.renderer.globalData.defs)),t.assets)for(a=t.assets.length,e=0;e<a;e+=1)this.animationData.assets.push(t.assets[e]);this.animationData.__complete=!1,dataManager.completeAnimation(this.animationData,this.onSegmentComplete)},AnimationItem.prototype.onSegmentComplete=function(t){this.animationData=t;var e=getExpressionsPlugin();e&&e.initExpressions(this),this.loadNextSegment()},AnimationItem.prototype.loadNextSegment=function(){var t=this.animationData.segments;if(!t||0===t.length||!this.autoloadSegments)return this.trigger("data_ready"),void(this.timeCompleted=this.totalFrames);var e=t.shift();this.timeCompleted=e.time*this.frameRate;var r=this.path+this.fileName+"_"+this.segmentPos+".json";this.segmentPos+=1,dataManager.loadData(r,this.includeLayers.bind(this),function(){this.trigger("data_failed")}.bind(this))},AnimationItem.prototype.loadSegments=function(){this.animationData.segments||(this.timeCompleted=this.totalFrames),this.loadNextSegment()},AnimationItem.prototype.imagesLoaded=function(){this.trigger("loaded_images"),this.checkLoaded()},AnimationItem.prototype.preloadImages=function(){this.imagePreloader.setAssetsPath(this.assetsPath),this.imagePreloader.setPath(this.path),this.imagePreloader.loadAssets(this.animationData.assets,this.imagesLoaded.bind(this))},AnimationItem.prototype.configAnimation=function(t){if(this.renderer)try{this.animationData=t,this.initialSegment?(this.totalFrames=Math.floor(this.initialSegment[1]-this.initialSegment[0]),this.firstFrame=Math.round(this.initialSegment[0])):(this.totalFrames=Math.floor(this.animationData.op-this.animationData.ip),this.firstFrame=Math.round(this.animationData.ip)),this.renderer.configAnimation(t),t.assets||(t.assets=[]),this.assets=this.animationData.assets,this.frameRate=this.animationData.fr,this.frameMult=this.animationData.fr/1e3,this.renderer.searchExtraCompositions(t.assets),this.markers=markerParser(t.markers||[]),this.trigger("config_ready"),this.preloadImages(),this.loadSegments(),this.updaFrameModifier(),this.waitForFontsLoaded(),this.isPaused&&this.audioController.pause()}catch(t){this.triggerConfigError(t)}},AnimationItem.prototype.waitForFontsLoaded=function(){this.renderer&&(this.renderer.globalData.fontManager.isLoaded?this.checkLoaded():setTimeout(this.waitForFontsLoaded.bind(this),20))},AnimationItem.prototype.checkLoaded=function(){if(!this.isLoaded&&this.renderer.globalData.fontManager.isLoaded&&(this.imagePreloader.loadedImages()||"canvas"!==this.renderer.rendererType)&&this.imagePreloader.loadedFootages()){this.isLoaded=!0;var t=getExpressionsPlugin();t&&t.initExpressions(this),this.renderer.initItems(),setTimeout(function(){this.trigger("DOMLoaded")}.bind(this),0),this.gotoFrame(),this.autoplay&&this.play()}},AnimationItem.prototype.resize=function(t,e){var r="number"==typeof t?t:void 0,i="number"==typeof e?e:void 0;this.renderer.updateContainerSize(r,i)},AnimationItem.prototype.setSubframe=function(t){this.isSubframeEnabled=!!t},AnimationItem.prototype.gotoFrame=function(){this.currentFrame=this.isSubframeEnabled?this.currentRawFrame:~~this.currentRawFrame,this.timeCompleted!==this.totalFrames&&this.currentFrame>this.timeCompleted&&(this.currentFrame=this.timeCompleted),this.trigger("enterFrame"),this.renderFrame(),this.trigger("drawnFrame")},AnimationItem.prototype.renderFrame=function(){if(!1!==this.isLoaded&&this.renderer)try{this.expressionsPlugin&&this.expressionsPlugin.resetFrame(),this.renderer.renderFrame(this.currentFrame+this.firstFrame)}catch(t){this.triggerRenderFrameError(t)}},AnimationItem.prototype.play=function(t){t&&this.name!==t||!0===this.isPaused&&(this.isPaused=!1,this.trigger("_play"),this.audioController.resume(),this._idle&&(this._idle=!1,this.trigger("_active")))},AnimationItem.prototype.pause=function(t){t&&this.name!==t||!1===this.isPaused&&(this.isPaused=!0,this.trigger("_pause"),this._idle=!0,this.trigger("_idle"),this.audioController.pause())},AnimationItem.prototype.togglePause=function(t){t&&this.name!==t||(!0===this.isPaused?this.play():this.pause())},AnimationItem.prototype.stop=function(t){t&&this.name!==t||(this.pause(),this.playCount=0,this._completedLoop=!1,this.setCurrentRawFrameValue(0))},AnimationItem.prototype.getMarkerData=function(t){for(var e,r=0;r<this.markers.length;r+=1)if((e=this.markers[r]).payload&&e.payload.name===t)return e;return null},AnimationItem.prototype.goToAndStop=function(t,e,r){if(!r||this.name===r){var i=Number(t);if(isNaN(i)){var a=this.getMarkerData(t);a&&this.goToAndStop(a.time,!0)}else e?this.setCurrentRawFrameValue(t):this.setCurrentRawFrameValue(t*this.frameModifier);this.pause()}},AnimationItem.prototype.goToAndPlay=function(t,e,r){if(!r||this.name===r){var i=Number(t);if(isNaN(i)){var a=this.getMarkerData(t);a&&(a.duration?this.playSegments([a.time,a.time+a.duration],!0):this.goToAndStop(a.time,!0))}else this.goToAndStop(i,e,r);this.play()}},AnimationItem.prototype.advanceTime=function(t){if(!0!==this.isPaused&&!1!==this.isLoaded){var e=this.currentRawFrame+t*this.frameModifier,r=!1;e>=this.totalFrames-1&&this.frameModifier>0?this.loop&&this.playCount!==this.loop?e>=this.totalFrames?(this.playCount+=1,this.checkSegments(e%this.totalFrames)||(this.setCurrentRawFrameValue(e%this.totalFrames),this._completedLoop=!0,this.trigger("loopComplete"))):this.setCurrentRawFrameValue(e):this.checkSegments(e>this.totalFrames?e%this.totalFrames:0)||(r=!0,e=this.totalFrames-1):e<0?this.checkSegments(e%this.totalFrames)||(!this.loop||this.playCount--<=0&&!0!==this.loop?(r=!0,e=0):(this.setCurrentRawFrameValue(this.totalFrames+e%this.totalFrames),this._completedLoop?this.trigger("loopComplete"):this._completedLoop=!0)):this.setCurrentRawFrameValue(e),r&&(this.setCurrentRawFrameValue(e),this.pause(),this.trigger("complete"))}},AnimationItem.prototype.adjustSegment=function(t,e){this.playCount=0,t[1]<t[0]?(this.frameModifier>0&&(this.playSpeed<0?this.setSpeed(-this.playSpeed):this.setDirection(-1)),this.totalFrames=t[0]-t[1],this.timeCompleted=this.totalFrames,this.firstFrame=t[1],this.setCurrentRawFrameValue(this.totalFrames-.001-e)):t[1]>t[0]&&(this.frameModifier<0&&(this.playSpeed<0?this.setSpeed(-this.playSpeed):this.setDirection(1)),this.totalFrames=t[1]-t[0],this.timeCompleted=this.totalFrames,this.firstFrame=t[0],this.setCurrentRawFrameValue(.001+e)),this.trigger("segmentStart")},AnimationItem.prototype.setSegment=function(t,e){var r=-1;this.isPaused&&(this.currentRawFrame+this.firstFrame<t?r=t:this.currentRawFrame+this.firstFrame>e&&(r=e-t)),this.firstFrame=t,this.totalFrames=e-t,this.timeCompleted=this.totalFrames,-1!==r&&this.goToAndStop(r,!0)},AnimationItem.prototype.playSegments=function(t,e){if(e&&(this.segments.length=0),"object"===_typeof$4(t[0])){var r,i=t.length;for(r=0;r<i;r+=1)this.segments.push(t[r])}else this.segments.push(t);this.segments.length&&e&&this.adjustSegment(this.segments.shift(),0),this.isPaused&&this.play()},AnimationItem.prototype.resetSegments=function(t){this.segments.length=0,this.segments.push([this.animationData.ip,this.animationData.op]),t&&this.checkSegments(0)},AnimationItem.prototype.checkSegments=function(t){return!!this.segments.length&&(this.adjustSegment(this.segments.shift(),t),!0)},AnimationItem.prototype.destroy=function(t){t&&this.name!==t||!this.renderer||(this.renderer.destroy(),this.imagePreloader.destroy(),this.trigger("destroy"),this._cbs=null,this.onEnterFrame=null,this.onLoopComplete=null,this.onComplete=null,this.onSegmentStart=null,this.onDestroy=null,this.renderer=null,this.expressionsPlugin=null,this.imagePreloader=null,this.projectInterface=null)},AnimationItem.prototype.setCurrentRawFrameValue=function(t){this.currentRawFrame=t,this.gotoFrame()},AnimationItem.prototype.setSpeed=function(t){this.playSpeed=t,this.updaFrameModifier()},AnimationItem.prototype.setDirection=function(t){this.playDirection=t<0?-1:1,this.updaFrameModifier()},AnimationItem.prototype.setLoop=function(t){this.loop=t},AnimationItem.prototype.setVolume=function(t,e){e&&this.name!==e||this.audioController.setVolume(t)},AnimationItem.prototype.getVolume=function(){return this.audioController.getVolume()},AnimationItem.prototype.mute=function(t){t&&this.name!==t||this.audioController.mute()},AnimationItem.prototype.unmute=function(t){t&&this.name!==t||this.audioController.unmute()},AnimationItem.prototype.updaFrameModifier=function(){this.frameModifier=this.frameMult*this.playSpeed*this.playDirection,this.audioController.setRate(this.playSpeed*this.playDirection)},AnimationItem.prototype.getPath=function(){return this.path},AnimationItem.prototype.getAssetsPath=function(t){var e="";if(t.e)e=t.p;else if(this.assetsPath){var r=t.p;-1!==r.indexOf("images/")&&(r=r.split("/")[1]),e=this.assetsPath+r}else e=this.path,e+=t.u?t.u:"",e+=t.p;return e},AnimationItem.prototype.getAssetData=function(t){for(var e=0,r=this.assets.length;e<r;){if(t===this.assets[e].id)return this.assets[e];e+=1}return null},AnimationItem.prototype.hide=function(){this.renderer.hide()},AnimationItem.prototype.show=function(){this.renderer.show()},AnimationItem.prototype.getDuration=function(t){return t?this.totalFrames:this.totalFrames/this.frameRate},AnimationItem.prototype.updateDocumentData=function(t,e,r){try{this.renderer.getElementByPath(t).updateDocumentData(e,r)}catch(t){}},AnimationItem.prototype.trigger=function(t){if(this._cbs&&this._cbs[t])switch(t){case"enterFrame":this.triggerEvent(t,new BMEnterFrameEvent(t,this.currentFrame,this.totalFrames,this.frameModifier));break;case"drawnFrame":this.drawnFrameEvent.currentTime=this.currentFrame,this.drawnFrameEvent.totalTime=this.totalFrames,this.drawnFrameEvent.direction=this.frameModifier,this.triggerEvent(t,this.drawnFrameEvent);break;case"loopComplete":this.triggerEvent(t,new BMCompleteLoopEvent(t,this.loop,this.playCount,this.frameMult));break;case"complete":this.triggerEvent(t,new BMCompleteEvent(t,this.frameMult));break;case"segmentStart":this.triggerEvent(t,new BMSegmentStartEvent(t,this.firstFrame,this.totalFrames));break;case"destroy":this.triggerEvent(t,new BMDestroyEvent(t,this));break;default:this.triggerEvent(t)}"enterFrame"===t&&this.onEnterFrame&&this.onEnterFrame.call(this,new BMEnterFrameEvent(t,this.currentFrame,this.totalFrames,this.frameMult)),"loopComplete"===t&&this.onLoopComplete&&this.onLoopComplete.call(this,new BMCompleteLoopEvent(t,this.loop,this.playCount,this.frameMult)),"complete"===t&&this.onComplete&&this.onComplete.call(this,new BMCompleteEvent(t,this.frameMult)),"segmentStart"===t&&this.onSegmentStart&&this.onSegmentStart.call(this,new BMSegmentStartEvent(t,this.firstFrame,this.totalFrames)),"destroy"===t&&this.onDestroy&&this.onDestroy.call(this,new BMDestroyEvent(t,this))},AnimationItem.prototype.triggerRenderFrameError=function(t){var e=new BMRenderFrameErrorEvent(t,this.currentFrame);this.triggerEvent("error",e),this.onError&&this.onError.call(this,e)},AnimationItem.prototype.triggerConfigError=function(t){var e=new BMConfigErrorEvent(t,this.currentFrame);this.triggerEvent("error",e),this.onError&&this.onError.call(this,e)};var animationManager=function(){var t={},e=[],r=0,i=0,a=0,s=!0,n=!1;function removeElement(t){for(var r=0,a=t.target;r<i;)e[r].animation===a&&(e.splice(r,1),r-=1,i-=1,a.isPaused||subtractPlayingCount()),r+=1}function registerAnimation(t,r){if(!t)return null;for(var a=0;a<i;){if(e[a].elem===t&&null!==e[a].elem)return e[a].animation;a+=1}var s=new AnimationItem;return setupAnimation(s,t),s.setData(t,r),s}function addPlayingCount(){a+=1,activate()}function subtractPlayingCount(){a-=1}function setupAnimation(t,r){t.addEventListener("destroy",removeElement),t.addEventListener("_active",addPlayingCount),t.addEventListener("_idle",subtractPlayingCount),e.push({elem:r,animation:t}),i+=1}function resume(t){var o,h=t-r;for(o=0;o<i;o+=1)e[o].animation.advanceTime(h);r=t,a&&!n?window.requestAnimationFrame(resume):s=!0}function first(t){r=t,window.requestAnimationFrame(resume)}function activate(){!n&&a&&s&&(window.requestAnimationFrame(first),s=!1)}return t.registerAnimation=registerAnimation,t.loadAnimation=function loadAnimation(t){var e=new AnimationItem;return setupAnimation(e,null),e.setParams(t),e},t.setSpeed=function setSpeed(t,r){var a;for(a=0;a<i;a+=1)e[a].animation.setSpeed(t,r)},t.setDirection=function setDirection(t,r){var a;for(a=0;a<i;a+=1)e[a].animation.setDirection(t,r)},t.play=function play(t){var r;for(r=0;r<i;r+=1)e[r].animation.play(t)},t.pause=function pause(t){var r;for(r=0;r<i;r+=1)e[r].animation.pause(t)},t.stop=function stop(t){var r;for(r=0;r<i;r+=1)e[r].animation.stop(t)},t.togglePause=function togglePause(t){var r;for(r=0;r<i;r+=1)e[r].animation.togglePause(t)},t.searchAnimations=function searchAnimations(t,e,r){var i,a=[].concat([].slice.call(document.getElementsByClassName("lottie")),[].slice.call(document.getElementsByClassName("bodymovin"))),s=a.length;for(i=0;i<s;i+=1)r&&a[i].setAttribute("data-bm-type",r),registerAnimation(a[i],t);if(e&&0===s){r||(r="svg");var n=document.getElementsByTagName("body")[0];n.innerText="";var o=createTag("div");o.style.width="100%",o.style.height="100%",o.setAttribute("data-bm-type",r),n.appendChild(o),registerAnimation(o,t)}},t.resize=function resize(){var t;for(t=0;t<i;t+=1)e[t].animation.resize()},t.goToAndStop=function goToAndStop(t,r,a){var s;for(s=0;s<i;s+=1)e[s].animation.goToAndStop(t,r,a)},t.destroy=function destroy(t){var r;for(r=i-1;r>=0;r-=1)e[r].animation.destroy(t)},t.freeze=function freeze(){n=!0},t.unfreeze=function unfreeze(){n=!1,activate()},t.setVolume=function setVolume(t,r){var a;for(a=0;a<i;a+=1)e[a].animation.setVolume(t,r)},t.mute=function mute(t){var r;for(r=0;r<i;r+=1)e[r].animation.mute(t)},t.unmute=function unmute(t){var r;for(r=0;r<i;r+=1)e[r].animation.unmute(t)},t.getRegisteredAnimations=function getRegisteredAnimations(){var t,r=e.length,i=[];for(t=0;t<r;t+=1)i.push(e[t].animation);return i},t}(),BezierFactory=function(){var t={getBezierEasing:function getBezierEasing(t,r,i,a,s){var n=s||("bez_"+t+"_"+r+"_"+i+"_"+a).replace(/\./g,"p");if(e[n])return e[n];var o=new BezierEasing([t,r,i,a]);return e[n]=o,o}},e={},r=11,i=1/(r-1),a="function"==typeof Float32Array;function A(t,e){return 1-3*e+3*t}function B(t,e){return 3*e-6*t}function C(t){return 3*t}function calcBezier(t,e,r){return((A(e,r)*t+B(e,r))*t+C(e))*t}function getSlope(t,e,r){return 3*A(e,r)*t*t+2*B(e,r)*t+C(e)}function BezierEasing(t){this._p=t,this._mSampleValues=a?new Float32Array(r):new Array(r),this._precomputed=!1,this.get=this.get.bind(this)}return BezierEasing.prototype={get:function get(t){var e=this._p[0],r=this._p[1],i=this._p[2],a=this._p[3];return this._precomputed||this._precompute(),e===r&&i===a?t:0===t?0:1===t?1:calcBezier(this._getTForX(t),r,a)},_precompute:function _precompute(){var t=this._p[0],e=this._p[1],r=this._p[2],i=this._p[3];this._precomputed=!0,t===e&&r===i||this._calcSampleValues()},_calcSampleValues:function _calcSampleValues(){for(var t=this._p[0],e=this._p[2],a=0;a<r;++a)this._mSampleValues[a]=calcBezier(a*i,t,e)},_getTForX:function _getTForX(t){for(var e=this._p[0],a=this._p[2],s=this._mSampleValues,n=0,o=1,h=r-1;o!==h&&s[o]<=t;++o)n+=i;var l=n+(t-s[--o])/(s[o+1]-s[o])*i,p=getSlope(l,e,a);return p>=.001?function newtonRaphsonIterate(t,e,r,i){for(var a=0;a<4;++a){var s=getSlope(e,r,i);if(0===s)return e;e-=(calcBezier(e,r,i)-t)/s}return e}(t,l,e,a):0===p?l:function binarySubdivide(t,e,r,i,a){var s,n,o=0;do{(s=calcBezier(n=e+(r-e)/2,i,a)-t)>0?r=n:e=n}while(Math.abs(s)>1e-7&&++o<10);return n}(t,n,n+i,e,a)}},t}(),pooling={double:function _double(t){return t.concat(createSizedArray(t.length))}},poolFactory=function(t,e,r){var i=0,a=t,s=createSizedArray(a);return{newElement:function newElement(){return i?s[i-=1]:e()},release:function release(t){i===a&&(s=pooling.double(s),a*=2),r&&r(t),s[i]=t,i+=1}}},bezierLengthPool=poolFactory(8,function create(){return{addedLength:0,percents:createTypedArray("float32",getDefaultCurveSegments()),lengths:createTypedArray("float32",getDefaultCurveSegments())}}),segmentsLengthPool=poolFactory(8,function create(){return{lengths:[],totalLength:0}},function release(t){var e,r=t.lengths.length;for(e=0;e<r;e+=1)bezierLengthPool.release(t.lengths[e]);t.lengths.length=0});function bezFunction(){var t=Math;function pointOnLine2D(t,e,r,i,a,s){var n=t*i+e*a+r*s-a*i-s*t-r*e;return n>-.001&&n<.001}var getBezierLength=function(t,e,r,i){var a,s,n,o,h,l,p=getDefaultCurveSegments(),c=0,f=[],m=[],u=bezierLengthPool.newElement();for(n=r.length,a=0;a<p;a+=1){for(h=a/(p-1),l=0,s=0;s<n;s+=1)o=bmPow(1-h,3)*t[s]+3*bmPow(1-h,2)*h*r[s]+3*(1-h)*bmPow(h,2)*i[s]+bmPow(h,3)*e[s],f[s]=o,null!==m[s]&&(l+=bmPow(f[s]-m[s],2)),m[s]=f[s];l&&(c+=l=bmSqrt(l)),u.percents[a]=h,u.lengths[a]=c}return u.addedLength=c,u};function BezierData(t){this.segmentLength=0,this.points=new Array(t)}function PointData(t,e){this.partialLength=t,this.point=e}var e,r=(e={},function(t,r,i,a){var s=(t[0]+"_"+t[1]+"_"+r[0]+"_"+r[1]+"_"+i[0]+"_"+i[1]+"_"+a[0]+"_"+a[1]).replace(/\./g,"p");if(!e[s]){var n,o,h,l,p,c,f,m=getDefaultCurveSegments(),u=0,d=null;2===t.length&&(t[0]!==r[0]||t[1]!==r[1])&&pointOnLine2D(t[0],t[1],r[0],r[1],t[0]+i[0],t[1]+i[1])&&pointOnLine2D(t[0],t[1],r[0],r[1],r[0]+a[0],r[1]+a[1])&&(m=2);var y=new BezierData(m);for(h=i.length,n=0;n<m;n+=1){for(f=createSizedArray(h),p=n/(m-1),c=0,o=0;o<h;o+=1)l=bmPow(1-p,3)*t[o]+3*bmPow(1-p,2)*p*(t[o]+i[o])+3*(1-p)*bmPow(p,2)*(r[o]+a[o])+bmPow(p,3)*r[o],f[o]=l,null!==d&&(c+=bmPow(f[o]-d[o],2));u+=c=bmSqrt(c),y.points[n]=new PointData(c,f),d=f}y.segmentLength=u,e[s]=y}return e[s]});function getDistancePerc(t,e){var r=e.percents,i=e.lengths,a=r.length,s=bmFloor((a-1)*t),n=t*e.addedLength,o=0;if(s===a-1||0===s||n===i[s])return r[s];for(var h=i[s]>n?-1:1,l=!0;l;)if(i[s]<=n&&i[s+1]>n?(o=(n-i[s])/(i[s+1]-i[s]),l=!1):s+=h,s<0||s>=a-1){if(s===a-1)return r[s];l=!1}return r[s]+(r[s+1]-r[s])*o}var i=createTypedArray("float32",8);return{getSegmentsLength:function getSegmentsLength(t){var e,r=segmentsLengthPool.newElement(),i=t.c,a=t.v,s=t.o,n=t.i,o=t._length,h=r.lengths,l=0;for(e=0;e<o-1;e+=1)h[e]=getBezierLength(a[e],a[e+1],s[e],n[e+1]),l+=h[e].addedLength;return i&&o&&(h[e]=getBezierLength(a[e],a[0],s[e],n[0]),l+=h[e].addedLength),r.totalLength=l,r},getNewSegment:function getNewSegment(e,r,a,s,n,o,h){n<0?n=0:n>1&&(n=1);var l,p=getDistancePerc(n,h),c=getDistancePerc(o=o>1?1:o,h),f=e.length,m=1-p,u=1-c,d=m*m*m,y=p*m*m*3,g=p*p*m*3,v=p*p*p,b=m*m*u,P=p*m*u+m*p*u+m*m*c,x=p*p*u+m*p*c+p*m*c,S=p*p*c,E=m*u*u,_=p*u*u+m*c*u+m*u*c,F=p*c*u+m*c*c+p*u*c,T=p*c*c,k=u*u*u,M=c*u*u+u*c*u+u*u*c,D=c*c*u+u*c*c+c*u*c,w=c*c*c;for(l=0;l<f;l+=1)i[4*l]=t.round(1e3*(d*e[l]+y*a[l]+g*s[l]+v*r[l]))/1e3,i[4*l+1]=t.round(1e3*(b*e[l]+P*a[l]+x*s[l]+S*r[l]))/1e3,i[4*l+2]=t.round(1e3*(E*e[l]+_*a[l]+F*s[l]+T*r[l]))/1e3,i[4*l+3]=t.round(1e3*(k*e[l]+M*a[l]+D*s[l]+w*r[l]))/1e3;return i},getPointInSegment:function getPointInSegment(e,r,i,a,s,n){var o=getDistancePerc(s,n),h=1-o;return[t.round(1e3*(h*h*h*e[0]+(o*h*h+h*o*h+h*h*o)*i[0]+(o*o*h+h*o*o+o*h*o)*a[0]+o*o*o*r[0]))/1e3,t.round(1e3*(h*h*h*e[1]+(o*h*h+h*o*h+h*h*o)*i[1]+(o*o*h+h*o*o+o*h*o)*a[1]+o*o*o*r[1]))/1e3]},buildBezierData:r,pointOnLine2D:pointOnLine2D,pointOnLine3D:function pointOnLine3D(e,r,i,a,s,n,o,h,l){if(0===i&&0===n&&0===l)return pointOnLine2D(e,r,a,s,o,h);var p,c=t.sqrt(t.pow(a-e,2)+t.pow(s-r,2)+t.pow(n-i,2)),f=t.sqrt(t.pow(o-e,2)+t.pow(h-r,2)+t.pow(l-i,2)),m=t.sqrt(t.pow(o-a,2)+t.pow(h-s,2)+t.pow(l-n,2));return(p=c>f?c>m?c-f-m:m-f-c:m>f?m-f-c:f-c-m)>-1e-4&&p<1e-4}}}var bez=bezFunction(),initFrame=initialDefaultFrame,mathAbs=Math.abs;function interpolateValue(t,e){var r,i=this.offsetTime;"multidimensional"===this.propType&&(r=createTypedArray("float32",this.pv.length));for(var a,s,n,o,h,l,p,c,f,m=e.lastIndex,u=m,d=this.keyframes.length-1,y=!0;y;){if(a=this.keyframes[u],s=this.keyframes[u+1],u===d-1&&t>=s.t-i){a.h&&(a=s),m=0;break}if(s.t-i>t){m=u;break}u<d-1?u+=1:(m=0,y=!1)}n=this.keyframesMetadata[u]||{};var g,v=s.t-i,b=a.t-i;if(a.to){n.bezierData||(n.bezierData=bez.buildBezierData(a.s,s.s||a.e,a.to,a.ti));var P=n.bezierData;if(t>=v||t<b){var x=t>=v?P.points.length-1:0;for(h=P.points[x].point.length,o=0;o<h;o+=1)r[o]=P.points[x].point[o]}else{n.__fnct?f=n.__fnct:(f=BezierFactory.getBezierEasing(a.o.x,a.o.y,a.i.x,a.i.y,a.n).get,n.__fnct=f),l=f((t-b)/(v-b));var S,E=P.segmentLength*l,_=e.lastFrame<t&&e._lastKeyframeIndex===u?e._lastAddedLength:0;for(c=e.lastFrame<t&&e._lastKeyframeIndex===u?e._lastPoint:0,y=!0,p=P.points.length;y;){if(_+=P.points[c].partialLength,0===E||0===l||c===P.points.length-1){for(h=P.points[c].point.length,o=0;o<h;o+=1)r[o]=P.points[c].point[o];break}if(E>=_&&E<_+P.points[c+1].partialLength){for(S=(E-_)/P.points[c+1].partialLength,h=P.points[c].point.length,o=0;o<h;o+=1)r[o]=P.points[c].point[o]+(P.points[c+1].point[o]-P.points[c].point[o])*S;break}c<p-1?c+=1:y=!1}e._lastPoint=c,e._lastAddedLength=_-P.points[c].partialLength,e._lastKeyframeIndex=u}}else{var F,T,k,M,D;if(d=a.s.length,g=s.s||a.e,this.sh&&1!==a.h)t>=v?(r[0]=g[0],r[1]=g[1],r[2]=g[2]):t<=b?(r[0]=a.s[0],r[1]=a.s[1],r[2]=a.s[2]):quaternionToEuler(r,slerp(createQuaternion(a.s),createQuaternion(g),(t-b)/(v-b)));else for(u=0;u<d;u+=1)1!==a.h&&(t>=v?l=1:t<b?l=0:(a.o.x.constructor===Array?(n.__fnct||(n.__fnct=[]),n.__fnct[u]?f=n.__fnct[u]:(F=void 0===a.o.x[u]?a.o.x[0]:a.o.x[u],T=void 0===a.o.y[u]?a.o.y[0]:a.o.y[u],k=void 0===a.i.x[u]?a.i.x[0]:a.i.x[u],M=void 0===a.i.y[u]?a.i.y[0]:a.i.y[u],f=BezierFactory.getBezierEasing(F,T,k,M).get,n.__fnct[u]=f)):n.__fnct?f=n.__fnct:(F=a.o.x,T=a.o.y,k=a.i.x,M=a.i.y,f=BezierFactory.getBezierEasing(F,T,k,M).get,a.keyframeMetadata=f),l=f((t-b)/(v-b)))),g=s.s||a.e,D=1===a.h?a.s[u]:a.s[u]+(g[u]-a.s[u])*l,"multidimensional"===this.propType?r[u]=D:r=D}return e.lastIndex=m,r}function slerp(t,e,r){var i,a,s,n,o,h=[],l=t[0],p=t[1],c=t[2],f=t[3],m=e[0],u=e[1],d=e[2],y=e[3];return(a=l*m+p*u+c*d+f*y)<0&&(a=-a,m=-m,u=-u,d=-d,y=-y),1-a>1e-6?(i=Math.acos(a),s=Math.sin(i),n=Math.sin((1-r)*i)/s,o=Math.sin(r*i)/s):(n=1-r,o=r),h[0]=n*l+o*m,h[1]=n*p+o*u,h[2]=n*c+o*d,h[3]=n*f+o*y,h}function quaternionToEuler(t,e){var r=e[0],i=e[1],a=e[2],s=e[3],n=Math.atan2(2*i*s-2*r*a,1-2*i*i-2*a*a),o=Math.asin(2*r*i+2*a*s),h=Math.atan2(2*r*s-2*i*a,1-2*r*r-2*a*a);t[0]=n/degToRads,t[1]=o/degToRads,t[2]=h/degToRads}function createQuaternion(t){var e=t[0]*degToRads,r=t[1]*degToRads,i=t[2]*degToRads,a=Math.cos(e/2),s=Math.cos(r/2),n=Math.cos(i/2),o=Math.sin(e/2),h=Math.sin(r/2),l=Math.sin(i/2);return[o*h*n+a*s*l,o*s*n+a*h*l,a*h*n-o*s*l,a*s*n-o*h*l]}function getValueAtCurrentTime(){var t=this.comp.renderedFrame-this.offsetTime,e=this.keyframes[0].t-this.offsetTime,r=this.keyframes[this.keyframes.length-1].t-this.offsetTime;if(!(t===this._caching.lastFrame||this._caching.lastFrame!==initFrame&&(this._caching.lastFrame>=r&&t>=r||this._caching.lastFrame<e&&t<e))){this._caching.lastFrame>=t&&(this._caching._lastKeyframeIndex=-1,this._caching.lastIndex=0);var i=this.interpolateValue(t,this._caching);this.pv=i}return this._caching.lastFrame=t,this.pv}function setVValue(t){var e;if("unidimensional"===this.propType)e=t*this.mult,mathAbs(this.v-e)>1e-5&&(this.v=e,this._mdf=!0);else for(var r=0,i=this.v.length;r<i;)e=t[r]*this.mult,mathAbs(this.v[r]-e)>1e-5&&(this.v[r]=e,this._mdf=!0),r+=1}function processEffectsSequence(){if(this.elem.globalData.frameId!==this.frameId&&this.effectsSequence.length)if(this.lock)this.setVValue(this.pv);else{var t;this.lock=!0,this._mdf=this._isFirstFrame;var e=this.effectsSequence.length,r=this.kf?this.pv:this.data.k;for(t=0;t<e;t+=1)r=this.effectsSequence[t](r);this.setVValue(r),this._isFirstFrame=!1,this.lock=!1,this.frameId=this.elem.globalData.frameId}}function addEffect(t){this.effectsSequence.push(t),this.container.addDynamicProperty(this)}function ValueProperty(t,e,r,i){this.propType="unidimensional",this.mult=r||1,this.data=e,this.v=r?e.k*r:e.k,this.pv=e.k,this._mdf=!1,this.elem=t,this.container=i,this.comp=t.comp,this.k=!1,this.kf=!1,this.vel=0,this.effectsSequence=[],this._isFirstFrame=!0,this.getValue=processEffectsSequence,this.setVValue=setVValue,this.addEffect=addEffect}function MultiDimensionalProperty(t,e,r,i){var a;this.propType="multidimensional",this.mult=r||1,this.data=e,this._mdf=!1,this.elem=t,this.container=i,this.comp=t.comp,this.k=!1,this.kf=!1,this.frameId=-1;var s=e.k.length;for(this.v=createTypedArray("float32",s),this.pv=createTypedArray("float32",s),this.vel=createTypedArray("float32",s),a=0;a<s;a+=1)this.v[a]=e.k[a]*this.mult,this.pv[a]=e.k[a];this._isFirstFrame=!0,this.effectsSequence=[],this.getValue=processEffectsSequence,this.setVValue=setVValue,this.addEffect=addEffect}function KeyframedValueProperty(t,e,r,i){this.propType="unidimensional",this.keyframes=e.k,this.keyframesMetadata=[],this.offsetTime=t.data.st,this.frameId=-1,this._caching={lastFrame:initFrame,lastIndex:0,value:0,_lastKeyframeIndex:-1},this.k=!0,this.kf=!0,this.data=e,this.mult=r||1,this.elem=t,this.container=i,this.comp=t.comp,this.v=initFrame,this.pv=initFrame,this._isFirstFrame=!0,this.getValue=processEffectsSequence,this.setVValue=setVValue,this.interpolateValue=interpolateValue,this.effectsSequence=[getValueAtCurrentTime.bind(this)],this.addEffect=addEffect}function KeyframedMultidimensionalProperty(t,e,r,i){var a;this.propType="multidimensional";var s,n,o,h,l=e.k.length;for(a=0;a<l-1;a+=1)e.k[a].to&&e.k[a].s&&e.k[a+1]&&e.k[a+1].s&&(s=e.k[a].s,n=e.k[a+1].s,o=e.k[a].to,h=e.k[a].ti,(2===s.length&&(s[0]!==n[0]||s[1]!==n[1])&&bez.pointOnLine2D(s[0],s[1],n[0],n[1],s[0]+o[0],s[1]+o[1])&&bez.pointOnLine2D(s[0],s[1],n[0],n[1],n[0]+h[0],n[1]+h[1])||3===s.length&&(s[0]!==n[0]||s[1]!==n[1]||s[2]!==n[2])&&bez.pointOnLine3D(s[0],s[1],s[2],n[0],n[1],n[2],s[0]+o[0],s[1]+o[1],s[2]+o[2])&&bez.pointOnLine3D(s[0],s[1],s[2],n[0],n[1],n[2],n[0]+h[0],n[1]+h[1],n[2]+h[2]))&&(e.k[a].to=null,e.k[a].ti=null),s[0]===n[0]&&s[1]===n[1]&&0===o[0]&&0===o[1]&&0===h[0]&&0===h[1]&&(2===s.length||s[2]===n[2]&&0===o[2]&&0===h[2])&&(e.k[a].to=null,e.k[a].ti=null));this.effectsSequence=[getValueAtCurrentTime.bind(this)],this.data=e,this.keyframes=e.k,this.keyframesMetadata=[],this.offsetTime=t.data.st,this.k=!0,this.kf=!0,this._isFirstFrame=!0,this.mult=r||1,this.elem=t,this.container=i,this.comp=t.comp,this.getValue=processEffectsSequence,this.setVValue=setVValue,this.interpolateValue=interpolateValue,this.frameId=-1;var p=e.k[0].s.length;for(this.v=createTypedArray("float32",p),this.pv=createTypedArray("float32",p),a=0;a<p;a+=1)this.v[a]=initFrame,this.pv[a]=initFrame;this._caching={lastFrame:initFrame,lastIndex:0,value:createTypedArray("float32",p)},this.addEffect=addEffect}var PropertyFactory={getProp:function getProp(t,e,r,i,a){var s;if(e.sid&&(e=t.globalData.slotManager.getProp(e)),e.k.length)if("number"==typeof e.k[0])s=new MultiDimensionalProperty(t,e,i,a);else switch(r){case 0:s=new KeyframedValueProperty(t,e,i,a);break;case 1:s=new KeyframedMultidimensionalProperty(t,e,i,a)}else s=new ValueProperty(t,e,i,a);return s.effectsSequence.length&&a.addDynamicProperty(s),s}};function DynamicPropertyContainer(){}DynamicPropertyContainer.prototype={addDynamicProperty:function addDynamicProperty(t){-1===this.dynamicProperties.indexOf(t)&&(this.dynamicProperties.push(t),this.container.addDynamicProperty(this),this._isAnimated=!0)},iterateDynamicProperties:function iterateDynamicProperties(){var t;this._mdf=!1;var e=this.dynamicProperties.length;for(t=0;t<e;t+=1)this.dynamicProperties[t].getValue(),this.dynamicProperties[t]._mdf&&(this._mdf=!0)},initDynamicPropertyContainer:function initDynamicPropertyContainer(t){this.container=t,this.dynamicProperties=[],this._mdf=!1,this._isAnimated=!1}};var pointPool=poolFactory(8,function create(){return createTypedArray("float32",2)});function ShapePath(){this.c=!1,this._length=0,this._maxLength=8,this.v=createSizedArray(this._maxLength),this.o=createSizedArray(this._maxLength),this.i=createSizedArray(this._maxLength)}ShapePath.prototype.setPathData=function(t,e){this.c=t,this.setLength(e);for(var r=0;r<e;)this.v[r]=pointPool.newElement(),this.o[r]=pointPool.newElement(),this.i[r]=pointPool.newElement(),r+=1},ShapePath.prototype.setLength=function(t){for(;this._maxLength<t;)this.doubleArrayLength();this._length=t},ShapePath.prototype.doubleArrayLength=function(){this.v=this.v.concat(createSizedArray(this._maxLength)),this.i=this.i.concat(createSizedArray(this._maxLength)),this.o=this.o.concat(createSizedArray(this._maxLength)),this._maxLength*=2},ShapePath.prototype.setXYAt=function(t,e,r,i,a){var s;switch(this._length=Math.max(this._length,i+1),this._length>=this._maxLength&&this.doubleArrayLength(),r){case"v":s=this.v;break;case"i":s=this.i;break;case"o":s=this.o;break;default:s=[]}(!s[i]||s[i]&&!a)&&(s[i]=pointPool.newElement()),s[i][0]=t,s[i][1]=e},ShapePath.prototype.setTripleAt=function(t,e,r,i,a,s,n,o){this.setXYAt(t,e,"v",n,o),this.setXYAt(r,i,"o",n,o),this.setXYAt(a,s,"i",n,o)},ShapePath.prototype.reverse=function(){var t=new ShapePath;t.setPathData(this.c,this._length);var e=this.v,r=this.o,i=this.i,a=0;this.c&&(t.setTripleAt(e[0][0],e[0][1],i[0][0],i[0][1],r[0][0],r[0][1],0,!1),a=1);var s,n=this._length-1,o=this._length;for(s=a;s<o;s+=1)t.setTripleAt(e[n][0],e[n][1],i[n][0],i[n][1],r[n][0],r[n][1],s,!1),n-=1;return t},ShapePath.prototype.length=function(){return this._length};var shapePool=(factory=poolFactory(4,function create(){return new ShapePath},function release(t){var e,r=t._length;for(e=0;e<r;e+=1)pointPool.release(t.v[e]),pointPool.release(t.i[e]),pointPool.release(t.o[e]),t.v[e]=null,t.i[e]=null,t.o[e]=null;t._length=0,t.c=!1}),factory.clone=function clone(t){var e,r=factory.newElement(),i=void 0===t._length?t.v.length:t._length;for(r.setLength(i),r.c=t.c,e=0;e<i;e+=1)r.setTripleAt(t.v[e][0],t.v[e][1],t.o[e][0],t.o[e][1],t.i[e][0],t.i[e][1],e);return r},factory),factory;function ShapeCollection(){this._length=0,this._maxLength=4,this.shapes=createSizedArray(this._maxLength)}ShapeCollection.prototype.addShape=function(t){this._length===this._maxLength&&(this.shapes=this.shapes.concat(createSizedArray(this._maxLength)),this._maxLength*=2),this.shapes[this._length]=t,this._length+=1},ShapeCollection.prototype.releaseShapes=function(){var t;for(t=0;t<this._length;t+=1)shapePool.release(this.shapes[t]);this._length=0};var shapeCollectionPool=(ob={newShapeCollection:function newShapeCollection(){return _length?pool[_length-=1]:new ShapeCollection},release:function release(t){var e,r=t._length;for(e=0;e<r;e+=1)shapePool.release(t.shapes[e]);t._length=0,_length===_maxLength&&(pool=pooling.double(pool),_maxLength*=2),pool[_length]=t,_length+=1}},_length=0,_maxLength=4,pool=createSizedArray(_maxLength),ob),ob,_length,_maxLength,pool,ShapePropertyFactory=function(){var t=-999999;function interpolateShape(t,e,r){var i,a,s,n,o,h,l,p,c,f=r.lastIndex,m=this.keyframes;if(t<m[0].t-this.offsetTime)i=m[0].s[0],s=!0,f=0;else if(t>=m[m.length-1].t-this.offsetTime)i=m[m.length-1].s?m[m.length-1].s[0]:m[m.length-2].e[0],s=!0;else{for(var u,d,y,g=f,v=m.length-1,b=!0;b&&(u=m[g],!((d=m[g+1]).t-this.offsetTime>t));)g<v-1?g+=1:b=!1;if(y=this.keyframesMetadata[g]||{},f=g,!(s=1===u.h)){if(t>=d.t-this.offsetTime)p=1;else if(t<u.t-this.offsetTime)p=0;else{var P;y.__fnct?P=y.__fnct:(P=BezierFactory.getBezierEasing(u.o.x,u.o.y,u.i.x,u.i.y).get,y.__fnct=P),p=P((t-(u.t-this.offsetTime))/(d.t-this.offsetTime-(u.t-this.offsetTime)))}a=d.s?d.s[0]:u.e[0]}i=u.s[0]}for(h=e._length,l=i.i[0].length,r.lastIndex=f,n=0;n<h;n+=1)for(o=0;o<l;o+=1)c=s?i.i[n][o]:i.i[n][o]+(a.i[n][o]-i.i[n][o])*p,e.i[n][o]=c,c=s?i.o[n][o]:i.o[n][o]+(a.o[n][o]-i.o[n][o])*p,e.o[n][o]=c,c=s?i.v[n][o]:i.v[n][o]+(a.v[n][o]-i.v[n][o])*p,e.v[n][o]=c}function interpolateShapeCurrentTime(){var e=this.comp.renderedFrame-this.offsetTime,r=this.keyframes[0].t-this.offsetTime,i=this.keyframes[this.keyframes.length-1].t-this.offsetTime,a=this._caching.lastFrame;return a!==t&&(a<r&&e<r||a>i&&e>i)||(this._caching.lastIndex=a<e?this._caching.lastIndex:0,this.interpolateShape(e,this.pv,this._caching)),this._caching.lastFrame=e,this.pv}function resetShape(){this.paths=this.localShapeCollection}function setVValue(t){(function shapesEqual(t,e){if(t._length!==e._length||t.c!==e.c)return!1;var r,i=t._length;for(r=0;r<i;r+=1)if(t.v[r][0]!==e.v[r][0]||t.v[r][1]!==e.v[r][1]||t.o[r][0]!==e.o[r][0]||t.o[r][1]!==e.o[r][1]||t.i[r][0]!==e.i[r][0]||t.i[r][1]!==e.i[r][1])return!1;return!0})(this.v,t)||(this.v=shapePool.clone(t),this.localShapeCollection.releaseShapes(),this.localShapeCollection.addShape(this.v),this._mdf=!0,this.paths=this.localShapeCollection)}function processEffectsSequence(){if(this.elem.globalData.frameId!==this.frameId)if(this.effectsSequence.length)if(this.lock)this.setVValue(this.pv);else{var t,e;this.lock=!0,this._mdf=!1,t=this.kf?this.pv:this.data.ks?this.data.ks.k:this.data.pt.k;var r=this.effectsSequence.length;for(e=0;e<r;e+=1)t=this.effectsSequence[e](t);this.setVValue(t),this.lock=!1,this.frameId=this.elem.globalData.frameId}else this._mdf=!1}function ShapeProperty(t,e,r){this.propType="shape",this.comp=t.comp,this.container=t,this.elem=t,this.data=e,this.k=!1,this.kf=!1,this._mdf=!1;var i=3===r?e.pt.k:e.ks.k;this.v=shapePool.clone(i),this.pv=shapePool.clone(this.v),this.localShapeCollection=shapeCollectionPool.newShapeCollection(),this.paths=this.localShapeCollection,this.paths.addShape(this.v),this.reset=resetShape,this.effectsSequence=[]}function addEffect(t){this.effectsSequence.push(t),this.container.addDynamicProperty(this)}function KeyframedShapeProperty(e,r,i){this.propType="shape",this.comp=e.comp,this.elem=e,this.container=e,this.offsetTime=e.data.st,this.keyframes=3===i?r.pt.k:r.ks.k,this.keyframesMetadata=[],this.k=!0,this.kf=!0;var a=this.keyframes[0].s[0].i.length;this.v=shapePool.newElement(),this.v.setPathData(this.keyframes[0].s[0].c,a),this.pv=shapePool.clone(this.v),this.localShapeCollection=shapeCollectionPool.newShapeCollection(),this.paths=this.localShapeCollection,this.paths.addShape(this.v),this.lastFrame=t,this.reset=resetShape,this._caching={lastFrame:t,lastIndex:0},this.effectsSequence=[interpolateShapeCurrentTime.bind(this)]}ShapeProperty.prototype.interpolateShape=interpolateShape,ShapeProperty.prototype.getValue=processEffectsSequence,ShapeProperty.prototype.setVValue=setVValue,ShapeProperty.prototype.addEffect=addEffect,KeyframedShapeProperty.prototype.getValue=processEffectsSequence,KeyframedShapeProperty.prototype.interpolateShape=interpolateShape,KeyframedShapeProperty.prototype.setVValue=setVValue,KeyframedShapeProperty.prototype.addEffect=addEffect;var e=function(){var t=roundCorner;function EllShapePropertyFactory(t,e){this.v=shapePool.newElement(),this.v.setPathData(!0,4),this.localShapeCollection=shapeCollectionPool.newShapeCollection(),this.paths=this.localShapeCollection,this.localShapeCollection.addShape(this.v),this.d=e.d,this.elem=t,this.comp=t.comp,this.frameId=-1,this.initDynamicPropertyContainer(t),this.p=PropertyFactory.getProp(t,e.p,1,0,this),this.s=PropertyFactory.getProp(t,e.s,1,0,this),this.dynamicProperties.length?this.k=!0:(this.k=!1,this.convertEllToPath())}return EllShapePropertyFactory.prototype={reset:resetShape,getValue:function getValue(){this.elem.globalData.frameId!==this.frameId&&(this.frameId=this.elem.globalData.frameId,this.iterateDynamicProperties(),this._mdf&&this.convertEllToPath())},convertEllToPath:function convertEllToPath(){var e=this.p.v[0],r=this.p.v[1],i=this.s.v[0]/2,a=this.s.v[1]/2,s=3!==this.d,n=this.v;n.v[0][0]=e,n.v[0][1]=r-a,n.v[1][0]=s?e+i:e-i,n.v[1][1]=r,n.v[2][0]=e,n.v[2][1]=r+a,n.v[3][0]=s?e-i:e+i,n.v[3][1]=r,n.i[0][0]=s?e-i*t:e+i*t,n.i[0][1]=r-a,n.i[1][0]=s?e+i:e-i,n.i[1][1]=r-a*t,n.i[2][0]=s?e+i*t:e-i*t,n.i[2][1]=r+a,n.i[3][0]=s?e-i:e+i,n.i[3][1]=r+a*t,n.o[0][0]=s?e+i*t:e-i*t,n.o[0][1]=r-a,n.o[1][0]=s?e+i:e-i,n.o[1][1]=r+a*t,n.o[2][0]=s?e-i*t:e+i*t,n.o[2][1]=r+a,n.o[3][0]=s?e-i:e+i,n.o[3][1]=r-a*t}},extendPrototype([DynamicPropertyContainer],EllShapePropertyFactory),EllShapePropertyFactory}(),r=function(){function StarShapePropertyFactory(t,e){this.v=shapePool.newElement(),this.v.setPathData(!0,0),this.elem=t,this.comp=t.comp,this.data=e,this.frameId=-1,this.d=e.d,this.initDynamicPropertyContainer(t),1===e.sy?(this.ir=PropertyFactory.getProp(t,e.ir,0,0,this),this.is=PropertyFactory.getProp(t,e.is,0,.01,this),this.convertToPath=this.convertStarToPath):this.convertToPath=this.convertPolygonToPath,this.pt=PropertyFactory.getProp(t,e.pt,0,0,this),this.p=PropertyFactory.getProp(t,e.p,1,0,this),this.r=PropertyFactory.getProp(t,e.r,0,degToRads,this),this.or=PropertyFactory.getProp(t,e.or,0,0,this),this.os=PropertyFactory.getProp(t,e.os,0,.01,this),this.localShapeCollection=shapeCollectionPool.newShapeCollection(),this.localShapeCollection.addShape(this.v),this.paths=this.localShapeCollection,this.dynamicProperties.length?this.k=!0:(this.k=!1,this.convertToPath())}return StarShapePropertyFactory.prototype={reset:resetShape,getValue:function getValue(){this.elem.globalData.frameId!==this.frameId&&(this.frameId=this.elem.globalData.frameId,this.iterateDynamicProperties(),this._mdf&&this.convertToPath())},convertStarToPath:function convertStarToPath(){var t,e,r,i,a=2*Math.floor(this.pt.v),s=2*Math.PI/a,n=!0,o=this.or.v,h=this.ir.v,l=this.os.v,p=this.is.v,c=2*Math.PI*o/(2*a),f=2*Math.PI*h/(2*a),m=-Math.PI/2;m+=this.r.v;var u=3===this.data.d?-1:1;for(this.v._length=0,t=0;t<a;t+=1){r=n?l:p,i=n?c:f;var d=(e=n?o:h)*Math.cos(m),y=e*Math.sin(m),g=0===d&&0===y?0:y/Math.sqrt(d*d+y*y),v=0===d&&0===y?0:-d/Math.sqrt(d*d+y*y);d+=+this.p.v[0],y+=+this.p.v[1],this.v.setTripleAt(d,y,d-g*i*r*u,y-v*i*r*u,d+g*i*r*u,y+v*i*r*u,t,!0),n=!n,m+=s*u}},convertPolygonToPath:function convertPolygonToPath(){var t,e=Math.floor(this.pt.v),r=2*Math.PI/e,i=this.or.v,a=this.os.v,s=2*Math.PI*i/(4*e),n=.5*-Math.PI,o=3===this.data.d?-1:1;for(n+=this.r.v,this.v._length=0,t=0;t<e;t+=1){var h=i*Math.cos(n),l=i*Math.sin(n),p=0===h&&0===l?0:l/Math.sqrt(h*h+l*l),c=0===h&&0===l?0:-h/Math.sqrt(h*h+l*l);h+=+this.p.v[0],l+=+this.p.v[1],this.v.setTripleAt(h,l,h-p*s*a*o,l-c*s*a*o,h+p*s*a*o,l+c*s*a*o,t,!0),n+=r*o}this.paths.length=0,this.paths[0]=this.v}},extendPrototype([DynamicPropertyContainer],StarShapePropertyFactory),StarShapePropertyFactory}(),i=function(){function RectShapePropertyFactory(t,e){this.v=shapePool.newElement(),this.v.c=!0,this.localShapeCollection=shapeCollectionPool.newShapeCollection(),this.localShapeCollection.addShape(this.v),this.paths=this.localShapeCollection,this.elem=t,this.comp=t.comp,this.frameId=-1,this.d=e.d,this.initDynamicPropertyContainer(t),this.p=PropertyFactory.getProp(t,e.p,1,0,this),this.s=PropertyFactory.getProp(t,e.s,1,0,this),this.r=PropertyFactory.getProp(t,e.r,0,0,this),this.dynamicProperties.length?this.k=!0:(this.k=!1,this.convertRectToPath())}return RectShapePropertyFactory.prototype={convertRectToPath:function convertRectToPath(){var t=this.p.v[0],e=this.p.v[1],r=this.s.v[0]/2,i=this.s.v[1]/2,a=bmMin(r,i,this.r.v),s=a*(1-roundCorner);this.v._length=0,2===this.d||1===this.d?(this.v.setTripleAt(t+r,e-i+a,t+r,e-i+a,t+r,e-i+s,0,!0),this.v.setTripleAt(t+r,e+i-a,t+r,e+i-s,t+r,e+i-a,1,!0),0!==a?(this.v.setTripleAt(t+r-a,e+i,t+r-a,e+i,t+r-s,e+i,2,!0),this.v.setTripleAt(t-r+a,e+i,t-r+s,e+i,t-r+a,e+i,3,!0),this.v.setTripleAt(t-r,e+i-a,t-r,e+i-a,t-r,e+i-s,4,!0),this.v.setTripleAt(t-r,e-i+a,t-r,e-i+s,t-r,e-i+a,5,!0),this.v.setTripleAt(t-r+a,e-i,t-r+a,e-i,t-r+s,e-i,6,!0),this.v.setTripleAt(t+r-a,e-i,t+r-s,e-i,t+r-a,e-i,7,!0)):(this.v.setTripleAt(t-r,e+i,t-r+s,e+i,t-r,e+i,2),this.v.setTripleAt(t-r,e-i,t-r,e-i+s,t-r,e-i,3))):(this.v.setTripleAt(t+r,e-i+a,t+r,e-i+s,t+r,e-i+a,0,!0),0!==a?(this.v.setTripleAt(t+r-a,e-i,t+r-a,e-i,t+r-s,e-i,1,!0),this.v.setTripleAt(t-r+a,e-i,t-r+s,e-i,t-r+a,e-i,2,!0),this.v.setTripleAt(t-r,e-i+a,t-r,e-i+a,t-r,e-i+s,3,!0),this.v.setTripleAt(t-r,e+i-a,t-r,e+i-s,t-r,e+i-a,4,!0),this.v.setTripleAt(t-r+a,e+i,t-r+a,e+i,t-r+s,e+i,5,!0),this.v.setTripleAt(t+r-a,e+i,t+r-s,e+i,t+r-a,e+i,6,!0),this.v.setTripleAt(t+r,e+i-a,t+r,e+i-a,t+r,e+i-s,7,!0)):(this.v.setTripleAt(t-r,e-i,t-r+s,e-i,t-r,e-i,1,!0),this.v.setTripleAt(t-r,e+i,t-r,e+i-s,t-r,e+i,2,!0),this.v.setTripleAt(t+r,e+i,t+r-s,e+i,t+r,e+i,3,!0)))},getValue:function getValue(){this.elem.globalData.frameId!==this.frameId&&(this.frameId=this.elem.globalData.frameId,this.iterateDynamicProperties(),this._mdf&&this.convertRectToPath())},reset:resetShape},extendPrototype([DynamicPropertyContainer],RectShapePropertyFactory),RectShapePropertyFactory}(),a={getShapeProp:function getShapeProp(t,a,s){var n;return 3===s||4===s?n=(3===s?a.pt:a.ks).k.length?new KeyframedShapeProperty(t,a,s):new ShapeProperty(t,a,s):5===s?n=new i(t,a):6===s?n=new e(t,a):7===s&&(n=new r(t,a)),n.k&&t.addDynamicProperty(n),n},getConstructorFunction:function getConstructorFunction(){return ShapeProperty},getKeyframedConstructorFunction:function getKeyframedConstructorFunction(){return KeyframedShapeProperty}};return a}(),Matrix=function(){var t=Math.cos,e=Math.sin,r=Math.tan,i=Math.round;function reset(){return 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,this}function rotate(r){if(0===r)return this;var i=t(r),a=e(r);return this._t(i,-a,0,0,a,i,0,0,0,0,1,0,0,0,0,1)}function rotateX(r){if(0===r)return this;var i=t(r),a=e(r);return this._t(1,0,0,0,0,i,-a,0,0,a,i,0,0,0,0,1)}function rotateY(r){if(0===r)return this;var i=t(r),a=e(r);return this._t(i,0,a,0,0,1,0,0,-a,0,i,0,0,0,0,1)}function rotateZ(r){if(0===r)return this;var i=t(r),a=e(r);return this._t(i,-a,0,0,a,i,0,0,0,0,1,0,0,0,0,1)}function shear(t,e){return this._t(1,e,t,1,0,0)}function skew(t,e){return this.shear(r(t),r(e))}function skewFromAxis(i,a){var s=t(a),n=e(a);return this._t(s,n,0,0,-n,s,0,0,0,0,1,0,0,0,0,1)._t(1,0,0,0,r(i),1,0,0,0,0,1,0,0,0,0,1)._t(s,-n,0,0,n,s,0,0,0,0,1,0,0,0,0,1)}function scale(t,e,r){return r||0===r||(r=1),1===t&&1===e&&1===r?this:this._t(t,0,0,0,0,e,0,0,0,0,r,0,0,0,0,1)}function setTransform(t,e,r,i,a,s,n,o,h,l,p,c,f,m,u,d){return this.props[0]=t,this.props[1]=e,this.props[2]=r,this.props[3]=i,this.props[4]=a,this.props[5]=s,this.props[6]=n,this.props[7]=o,this.props[8]=h,this.props[9]=l,this.props[10]=p,this.props[11]=c,this.props[12]=f,this.props[13]=m,this.props[14]=u,this.props[15]=d,this}function translate(t,e,r){return r=r||0,0!==t||0!==e||0!==r?this._t(1,0,0,0,0,1,0,0,0,0,1,0,t,e,r,1):this}function transform(t,e,r,i,a,s,n,o,h,l,p,c,f,m,u,d){var y=this.props;if(1===t&&0===e&&0===r&&0===i&&0===a&&1===s&&0===n&&0===o&&0===h&&0===l&&1===p&&0===c)return y[12]=y[12]*t+y[15]*f,y[13]=y[13]*s+y[15]*m,y[14]=y[14]*p+y[15]*u,y[15]*=d,this._identityCalculated=!1,this;var g=y[0],v=y[1],b=y[2],P=y[3],x=y[4],S=y[5],E=y[6],_=y[7],F=y[8],T=y[9],k=y[10],M=y[11],D=y[12],w=y[13],I=y[14],L=y[15];return y[0]=g*t+v*a+b*h+P*f,y[1]=g*e+v*s+b*l+P*m,y[2]=g*r+v*n+b*p+P*u,y[3]=g*i+v*o+b*c+P*d,y[4]=x*t+S*a+E*h+_*f,y[5]=x*e+S*s+E*l+_*m,y[6]=x*r+S*n+E*p+_*u,y[7]=x*i+S*o+E*c+_*d,y[8]=F*t+T*a+k*h+M*f,y[9]=F*e+T*s+k*l+M*m,y[10]=F*r+T*n+k*p+M*u,y[11]=F*i+T*o+k*c+M*d,y[12]=D*t+w*a+I*h+L*f,y[13]=D*e+w*s+I*l+L*m,y[14]=D*r+w*n+I*p+L*u,y[15]=D*i+w*o+I*c+L*d,this._identityCalculated=!1,this}function multiply(t){var e=t.props;return this.transform(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15])}function isIdentity(){return this._identityCalculated||(this._identity=!(1!==this.props[0]||0!==this.props[1]||0!==this.props[2]||0!==this.props[3]||0!==this.props[4]||1!==this.props[5]||0!==this.props[6]||0!==this.props[7]||0!==this.props[8]||0!==this.props[9]||1!==this.props[10]||0!==this.props[11]||0!==this.props[12]||0!==this.props[13]||0!==this.props[14]||1!==this.props[15]),this._identityCalculated=!0),this._identity}function equals(t){for(var e=0;e<16;){if(t.props[e]!==this.props[e])return!1;e+=1}return!0}function clone(t){var e;for(e=0;e<16;e+=1)t.props[e]=this.props[e];return t}function cloneFromProps(t){var e;for(e=0;e<16;e+=1)this.props[e]=t[e]}function applyToPoint(t,e,r){return{x:t*this.props[0]+e*this.props[4]+r*this.props[8]+this.props[12],y:t*this.props[1]+e*this.props[5]+r*this.props[9]+this.props[13],z:t*this.props[2]+e*this.props[6]+r*this.props[10]+this.props[14]}}function applyToX(t,e,r){return t*this.props[0]+e*this.props[4]+r*this.props[8]+this.props[12]}function applyToY(t,e,r){return t*this.props[1]+e*this.props[5]+r*this.props[9]+this.props[13]}function applyToZ(t,e,r){return t*this.props[2]+e*this.props[6]+r*this.props[10]+this.props[14]}function getInverseMatrix(){var t=this.props[0]*this.props[5]-this.props[1]*this.props[4],e=this.props[5]/t,r=-this.props[1]/t,i=-this.props[4]/t,a=this.props[0]/t,s=(this.props[4]*this.props[13]-this.props[5]*this.props[12])/t,n=-(this.props[0]*this.props[13]-this.props[1]*this.props[12])/t,o=new Matrix;return o.props[0]=e,o.props[1]=r,o.props[4]=i,o.props[5]=a,o.props[12]=s,o.props[13]=n,o}function inversePoint(t){return this.getInverseMatrix().applyToPointArray(t[0],t[1],t[2]||0)}function inversePoints(t){var e,r=t.length,i=[];for(e=0;e<r;e+=1)i[e]=inversePoint(t[e]);return i}function applyToTriplePoints(t,e,r){var i=createTypedArray("float32",6);if(this.isIdentity())i[0]=t[0],i[1]=t[1],i[2]=e[0],i[3]=e[1],i[4]=r[0],i[5]=r[1];else{var a=this.props[0],s=this.props[1],n=this.props[4],o=this.props[5],h=this.props[12],l=this.props[13];i[0]=t[0]*a+t[1]*n+h,i[1]=t[0]*s+t[1]*o+l,i[2]=e[0]*a+e[1]*n+h,i[3]=e[0]*s+e[1]*o+l,i[4]=r[0]*a+r[1]*n+h,i[5]=r[0]*s+r[1]*o+l}return i}function applyToPointArray(t,e,r){return this.isIdentity()?[t,e,r]:[t*this.props[0]+e*this.props[4]+r*this.props[8]+this.props[12],t*this.props[1]+e*this.props[5]+r*this.props[9]+this.props[13],t*this.props[2]+e*this.props[6]+r*this.props[10]+this.props[14]]}function applyToPointStringified(t,e){if(this.isIdentity())return t+","+e;var r=this.props;return Math.round(100*(t*r[0]+e*r[4]+r[12]))/100+","+Math.round(100*(t*r[1]+e*r[5]+r[13]))/100}function toCSS(){for(var t=0,e=this.props,r="matrix3d(";t<16;)r+=i(1e4*e[t])/1e4,r+=15===t?")":",",t+=1;return r}function roundMatrixProperty(t){return t<1e-6&&t>0||t>-1e-6&&t<0?i(1e4*t)/1e4:t}function to2dCSS(){var t=this.props;return"matrix("+roundMatrixProperty(t[0])+","+roundMatrixProperty(t[1])+","+roundMatrixProperty(t[4])+","+roundMatrixProperty(t[5])+","+roundMatrixProperty(t[12])+","+roundMatrixProperty(t[13])+")"}return function(){this.reset=reset,this.rotate=rotate,this.rotateX=rotateX,this.rotateY=rotateY,this.rotateZ=rotateZ,this.skew=skew,this.skewFromAxis=skewFromAxis,this.shear=shear,this.scale=scale,this.setTransform=setTransform,this.translate=translate,this.transform=transform,this.multiply=multiply,this.applyToPoint=applyToPoint,this.applyToX=applyToX,this.applyToY=applyToY,this.applyToZ=applyToZ,this.applyToPointArray=applyToPointArray,this.applyToTriplePoints=applyToTriplePoints,this.applyToPointStringified=applyToPointStringified,this.toCSS=toCSS,this.to2dCSS=to2dCSS,this.clone=clone,this.cloneFromProps=cloneFromProps,this.equals=equals,this.inversePoints=inversePoints,this.inversePoint=inversePoint,this.getInverseMatrix=getInverseMatrix,this._t=this.transform,this.isIdentity=isIdentity,this._identity=!0,this._identityCalculated=!1,this.props=createTypedArray("float32",16),this.reset()}}();function _typeof$3(t){return _typeof$3="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},_typeof$3(t)}var lottie={},standalone="__[STANDALONE]__",animationData="__[ANIMATIONDATA]__",renderer="";function setLocation(t){setLocationHref(t)}function searchAnimations(){!0===standalone?animationManager.searchAnimations(animationData,standalone,renderer):animationManager.searchAnimations()}function setSubframeRendering(t){setSubframeEnabled(t)}function setPrefix(t){setIdPrefix(t)}function loadAnimation(t){return!0===standalone&&(t.animationData=JSON.parse(animationData)),animationManager.loadAnimation(t)}function setQuality(t){if("string"==typeof t)switch(t){case"high":setDefaultCurveSegments(200);break;default:case"medium":setDefaultCurveSegments(50);break;case"low":setDefaultCurveSegments(10)}else!isNaN(t)&&t>1&&setDefaultCurveSegments(t);getDefaultCurveSegments()>=50?roundValues(!1):roundValues(!0)}function inBrowser(){return"undefined"!=typeof navigator}function installPlugin(t,e){"expressions"===t&&setExpressionsPlugin(e)}function getFactory(t){switch(t){case"propertyFactory":return PropertyFactory;case"shapePropertyFactory":return ShapePropertyFactory;case"matrix":return Matrix;default:return null}}function checkReady(){"complete"===document.readyState&&(clearInterval(readyStateCheckInterval),searchAnimations())}function getQueryVariable(t){for(var e=queryString.split("&"),r=0;r<e.length;r+=1){var i=e[r].split("=");if(decodeURIComponent(i[0])==t)return decodeURIComponent(i[1])}return null}lottie.play=animationManager.play,lottie.pause=animationManager.pause,lottie.setLocationHref=setLocation,lottie.togglePause=animationManager.togglePause,lottie.setSpeed=animationManager.setSpeed,lottie.setDirection=animationManager.setDirection,lottie.stop=animationManager.stop,lottie.searchAnimations=searchAnimations,lottie.registerAnimation=animationManager.registerAnimation,lottie.loadAnimation=loadAnimation,lottie.setSubframeRendering=setSubframeRendering,lottie.resize=animationManager.resize,lottie.goToAndStop=animationManager.goToAndStop,lottie.destroy=animationManager.destroy,lottie.setQuality=setQuality,lottie.inBrowser=inBrowser,lottie.installPlugin=installPlugin,lottie.freeze=animationManager.freeze,lottie.unfreeze=animationManager.unfreeze,lottie.setVolume=animationManager.setVolume,lottie.mute=animationManager.mute,lottie.unmute=animationManager.unmute,lottie.getRegisteredAnimations=animationManager.getRegisteredAnimations,lottie.useWebWorker=setWebWorker,lottie.setIDPrefix=setPrefix,lottie.__getFactory=getFactory,lottie.version="5.13.0";var queryString="";if(standalone){var scripts=document.getElementsByTagName("script"),index=scripts.length-1,myScript=scripts[index]||{src:""};queryString=myScript.src?myScript.src.replace(/^[^\?]+\??/,""):"",renderer=getQueryVariable("renderer")}var readyStateCheckInterval=setInterval(checkReady,100);try{"object"!==_typeof$3(exports)&&__webpack_require__.amdO}catch(t){}var ShapeModifiers=function(){var t={},e={};return t.registerModifier=function registerModifier(t,r){e[t]||(e[t]=r)},t.getModifier=function getModifier(t,r,i){return new e[t](r,i)},t}();function ShapeModifier(){}function TrimModifier(){}function PuckerAndBloatModifier(){}ShapeModifier.prototype.initModifierProperties=function(){},ShapeModifier.prototype.addShapeToModifier=function(){},ShapeModifier.prototype.addShape=function(t){if(!this.closed){t.sh.container.addDynamicProperty(t.sh);var e={shape:t.sh,data:t,localShapeCollection:shapeCollectionPool.newShapeCollection()};this.shapes.push(e),this.addShapeToModifier(e),this._isAnimated&&t.setAsAnimated()}},ShapeModifier.prototype.init=function(t,e){this.shapes=[],this.elem=t,this.initDynamicPropertyContainer(t),this.initModifierProperties(t,e),this.frameId=initialDefaultFrame,this.closed=!1,this.k=!1,this.dynamicProperties.length?this.k=!0:this.getValue(!0)},ShapeModifier.prototype.processKeys=function(){this.elem.globalData.frameId!==this.frameId&&(this.frameId=this.elem.globalData.frameId,this.iterateDynamicProperties())},extendPrototype([DynamicPropertyContainer],ShapeModifier),extendPrototype([ShapeModifier],TrimModifier),TrimModifier.prototype.initModifierProperties=function(t,e){this.s=PropertyFactory.getProp(t,e.s,0,.01,this),this.e=PropertyFactory.getProp(t,e.e,0,.01,this),this.o=PropertyFactory.getProp(t,e.o,0,0,this),this.sValue=0,this.eValue=0,this.getValue=this.processKeys,this.m=e.m,this._isAnimated=!!this.s.effectsSequence.length||!!this.e.effectsSequence.length||!!this.o.effectsSequence.length},TrimModifier.prototype.addShapeToModifier=function(t){t.pathsData=[]},TrimModifier.prototype.calculateShapeEdges=function(t,e,r,i,a){var s=[];e<=1?s.push({s:t,e:e}):t>=1?s.push({s:t-1,e:e-1}):(s.push({s:t,e:1}),s.push({s:0,e:e-1}));var n,o,h=[],l=s.length;for(n=0;n<l;n+=1){var p,c;(o=s[n]).e*a<i||o.s*a>i+r||(p=o.s*a<=i?0:(o.s*a-i)/r,c=o.e*a>=i+r?1:(o.e*a-i)/r,h.push([p,c]))}return h.length||h.push([0,0]),h},TrimModifier.prototype.releasePathsData=function(t){var e,r=t.length;for(e=0;e<r;e+=1)segmentsLengthPool.release(t[e]);return t.length=0,t},TrimModifier.prototype.processShapes=function(t){var e,r,i,a;if(this._mdf||t){var s=this.o.v%360/360;if(s<0&&(s+=1),(e=this.s.v>1?1+s:this.s.v<0?0+s:this.s.v+s)>(r=this.e.v>1?1+s:this.e.v<0?0+s:this.e.v+s)){var n=e;e=r,r=n}e=1e-4*Math.round(1e4*e),r=1e-4*Math.round(1e4*r),this.sValue=e,this.eValue=r}else e=this.sValue,r=this.eValue;var o,h,l,p,c,f=this.shapes.length,m=0;if(r===e)for(a=0;a<f;a+=1)this.shapes[a].localShapeCollection.releaseShapes(),this.shapes[a].shape._mdf=!0,this.shapes[a].shape.paths=this.shapes[a].localShapeCollection,this._mdf&&(this.shapes[a].pathsData.length=0);else if(1===r&&0===e||0===r&&1===e){if(this._mdf)for(a=0;a<f;a+=1)this.shapes[a].pathsData.length=0,this.shapes[a].shape._mdf=!0}else{var u,d,y=[];for(a=0;a<f;a+=1)if((u=this.shapes[a]).shape._mdf||this._mdf||t||2===this.m){if(h=(i=u.shape.paths)._length,c=0,!u.shape._mdf&&u.pathsData.length)c=u.totalShapeLength;else{for(l=this.releasePathsData(u.pathsData),o=0;o<h;o+=1)p=bez.getSegmentsLength(i.shapes[o]),l.push(p),c+=p.totalLength;u.totalShapeLength=c,u.pathsData=l}m+=c,u.shape._mdf=!0}else u.shape.paths=u.localShapeCollection;var g,v=e,b=r,P=0;for(a=f-1;a>=0;a-=1)if((u=this.shapes[a]).shape._mdf){for((d=u.localShapeCollection).releaseShapes(),2===this.m&&f>1?(g=this.calculateShapeEdges(e,r,u.totalShapeLength,P,m),P+=u.totalShapeLength):g=[[v,b]],h=g.length,o=0;o<h;o+=1){v=g[o][0],b=g[o][1],y.length=0,b<=1?y.push({s:u.totalShapeLength*v,e:u.totalShapeLength*b}):v>=1?y.push({s:u.totalShapeLength*(v-1),e:u.totalShapeLength*(b-1)}):(y.push({s:u.totalShapeLength*v,e:u.totalShapeLength}),y.push({s:0,e:u.totalShapeLength*(b-1)}));var x=this.addShapes(u,y[0]);if(y[0].s!==y[0].e){if(y.length>1)if(u.shape.paths.shapes[u.shape.paths._length-1].c){var S=x.pop();this.addPaths(x,d),x=this.addShapes(u,y[1],S)}else this.addPaths(x,d),x=this.addShapes(u,y[1]);this.addPaths(x,d)}}u.shape.paths=d}}},TrimModifier.prototype.addPaths=function(t,e){var r,i=t.length;for(r=0;r<i;r+=1)e.addShape(t[r])},TrimModifier.prototype.addSegment=function(t,e,r,i,a,s,n){a.setXYAt(e[0],e[1],"o",s),a.setXYAt(r[0],r[1],"i",s+1),n&&a.setXYAt(t[0],t[1],"v",s),a.setXYAt(i[0],i[1],"v",s+1)},TrimModifier.prototype.addSegmentFromArray=function(t,e,r,i){e.setXYAt(t[1],t[5],"o",r),e.setXYAt(t[2],t[6],"i",r+1),i&&e.setXYAt(t[0],t[4],"v",r),e.setXYAt(t[3],t[7],"v",r+1)},TrimModifier.prototype.addShapes=function(t,e,r){var i,a,s,n,o,h,l,p,c=t.pathsData,f=t.shape.paths.shapes,m=t.shape.paths._length,u=0,d=[],y=!0;for(r?(o=r._length,p=r._length):(r=shapePool.newElement(),o=0,p=0),d.push(r),i=0;i<m;i+=1){for(h=c[i].lengths,r.c=f[i].c,s=f[i].c?h.length:h.length+1,a=1;a<s;a+=1)if(u+(n=h[a-1]).addedLength<e.s)u+=n.addedLength,r.c=!1;else{if(u>e.e){r.c=!1;break}e.s<=u&&e.e>=u+n.addedLength?(this.addSegment(f[i].v[a-1],f[i].o[a-1],f[i].i[a],f[i].v[a],r,o,y),y=!1):(l=bez.getNewSegment(f[i].v[a-1],f[i].v[a],f[i].o[a-1],f[i].i[a],(e.s-u)/n.addedLength,(e.e-u)/n.addedLength,h[a-1]),this.addSegmentFromArray(l,r,o,y),y=!1,r.c=!1),u+=n.addedLength,o+=1}if(f[i].c&&h.length){if(n=h[a-1],u<=e.e){var g=h[a-1].addedLength;e.s<=u&&e.e>=u+g?(this.addSegment(f[i].v[a-1],f[i].o[a-1],f[i].i[0],f[i].v[0],r,o,y),y=!1):(l=bez.getNewSegment(f[i].v[a-1],f[i].v[0],f[i].o[a-1],f[i].i[0],(e.s-u)/g,(e.e-u)/g,h[a-1]),this.addSegmentFromArray(l,r,o,y),y=!1,r.c=!1)}else r.c=!1;u+=n.addedLength,o+=1}if(r._length&&(r.setXYAt(r.v[p][0],r.v[p][1],"i",p),r.setXYAt(r.v[r._length-1][0],r.v[r._length-1][1],"o",r._length-1)),u>e.e)break;i<m-1&&(r=shapePool.newElement(),y=!0,d.push(r),o=0)}return d},extendPrototype([ShapeModifier],PuckerAndBloatModifier),PuckerAndBloatModifier.prototype.initModifierProperties=function(t,e){this.getValue=this.processKeys,this.amount=PropertyFactory.getProp(t,e.a,0,null,this),this._isAnimated=!!this.amount.effectsSequence.length},PuckerAndBloatModifier.prototype.processPath=function(t,e){var r=e/100,i=[0,0],a=t._length,s=0;for(s=0;s<a;s+=1)i[0]+=t.v[s][0],i[1]+=t.v[s][1];i[0]/=a,i[1]/=a;var n,o,h,l,p,c,f=shapePool.newElement();for(f.c=t.c,s=0;s<a;s+=1)n=t.v[s][0]+(i[0]-t.v[s][0])*r,o=t.v[s][1]+(i[1]-t.v[s][1])*r,h=t.o[s][0]+(i[0]-t.o[s][0])*-r,l=t.o[s][1]+(i[1]-t.o[s][1])*-r,p=t.i[s][0]+(i[0]-t.i[s][0])*-r,c=t.i[s][1]+(i[1]-t.i[s][1])*-r,f.setTripleAt(n,o,h,l,p,c,s);return f},PuckerAndBloatModifier.prototype.processShapes=function(t){var e,r,i,a,s,n,o=this.shapes.length,h=this.amount.v;if(0!==h)for(r=0;r<o;r+=1){if(n=(s=this.shapes[r]).localShapeCollection,s.shape._mdf||this._mdf||t)for(n.releaseShapes(),s.shape._mdf=!0,e=s.shape.paths.shapes,a=s.shape.paths._length,i=0;i<a;i+=1)n.addShape(this.processPath(e[i],h));s.shape.paths=s.localShapeCollection}this.dynamicProperties.length||(this._mdf=!1)};var TransformPropertyFactory=function(){var t=[0,0];function TransformProperty(t,e,r){if(this.elem=t,this.frameId=-1,this.propType="transform",this.data=e,this.v=new Matrix,this.pre=new Matrix,this.appliedTransformations=0,this.initDynamicPropertyContainer(r||t),e.p&&e.p.s?(this.px=PropertyFactory.getProp(t,e.p.x,0,0,this),this.py=PropertyFactory.getProp(t,e.p.y,0,0,this),e.p.z&&(this.pz=PropertyFactory.getProp(t,e.p.z,0,0,this))):this.p=PropertyFactory.getProp(t,e.p||{k:[0,0,0]},1,0,this),e.rx){if(this.rx=PropertyFactory.getProp(t,e.rx,0,degToRads,this),this.ry=PropertyFactory.getProp(t,e.ry,0,degToRads,this),this.rz=PropertyFactory.getProp(t,e.rz,0,degToRads,this),e.or.k[0].ti){var i,a=e.or.k.length;for(i=0;i<a;i+=1)e.or.k[i].to=null,e.or.k[i].ti=null}this.or=PropertyFactory.getProp(t,e.or,1,degToRads,this),this.or.sh=!0}else this.r=PropertyFactory.getProp(t,e.r||{k:0},0,degToRads,this);e.sk&&(this.sk=PropertyFactory.getProp(t,e.sk,0,degToRads,this),this.sa=PropertyFactory.getProp(t,e.sa,0,degToRads,this)),this.a=PropertyFactory.getProp(t,e.a||{k:[0,0,0]},1,0,this),this.s=PropertyFactory.getProp(t,e.s||{k:[100,100,100]},1,.01,this),e.o?this.o=PropertyFactory.getProp(t,e.o,0,.01,t):this.o={_mdf:!1,v:1},this._isDirty=!0,this.dynamicProperties.length||this.getValue(!0)}return TransformProperty.prototype={applyToMatrix:function applyToMatrix(t){var e=this._mdf;this.iterateDynamicProperties(),this._mdf=this._mdf||e,this.a&&t.translate(-this.a.v[0],-this.a.v[1],this.a.v[2]),this.s&&t.scale(this.s.v[0],this.s.v[1],this.s.v[2]),this.sk&&t.skewFromAxis(-this.sk.v,this.sa.v),this.r?t.rotate(-this.r.v):t.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]),this.data.p.s?this.data.p.z?t.translate(this.px.v,this.py.v,-this.pz.v):t.translate(this.px.v,this.py.v,0):t.translate(this.p.v[0],this.p.v[1],-this.p.v[2])},getValue:function processKeys(e){if(this.elem.globalData.frameId!==this.frameId){if(this._isDirty&&(this.precalculateMatrix(),this._isDirty=!1),this.iterateDynamicProperties(),this._mdf||e){var r;if(this.v.cloneFromProps(this.pre.props),this.appliedTransformations<1&&this.v.translate(-this.a.v[0],-this.a.v[1],this.a.v[2]),this.appliedTransformations<2&&this.v.scale(this.s.v[0],this.s.v[1],this.s.v[2]),this.sk&&this.appliedTransformations<3&&this.v.skewFromAxis(-this.sk.v,this.sa.v),this.r&&this.appliedTransformations<4?this.v.rotate(-this.r.v):!this.r&&this.appliedTransformations<4&&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]),this.autoOriented){var i,a;if(r=this.elem.globalData.frameRate,this.p&&this.p.keyframes&&this.p.getValueAtTime)this.p._caching.lastFrame+this.p.offsetTime<=this.p.keyframes[0].t?(i=this.p.getValueAtTime((this.p.keyframes[0].t+.01)/r,0),a=this.p.getValueAtTime(this.p.keyframes[0].t/r,0)):this.p._caching.lastFrame+this.p.offsetTime>=this.p.keyframes[this.p.keyframes.length-1].t?(i=this.p.getValueAtTime(this.p.keyframes[this.p.keyframes.length-1].t/r,0),a=this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length-1].t-.05)/r,0)):(i=this.p.pv,a=this.p.getValueAtTime((this.p._caching.lastFrame+this.p.offsetTime-.01)/r,this.p.offsetTime));else if(this.px&&this.px.keyframes&&this.py.keyframes&&this.px.getValueAtTime&&this.py.getValueAtTime){i=[],a=[];var s=this.px,n=this.py;s._caching.lastFrame+s.offsetTime<=s.keyframes[0].t?(i[0]=s.getValueAtTime((s.keyframes[0].t+.01)/r,0),i[1]=n.getValueAtTime((n.keyframes[0].t+.01)/r,0),a[0]=s.getValueAtTime(s.keyframes[0].t/r,0),a[1]=n.getValueAtTime(n.keyframes[0].t/r,0)):s._caching.lastFrame+s.offsetTime>=s.keyframes[s.keyframes.length-1].t?(i[0]=s.getValueAtTime(s.keyframes[s.keyframes.length-1].t/r,0),i[1]=n.getValueAtTime(n.keyframes[n.keyframes.length-1].t/r,0),a[0]=s.getValueAtTime((s.keyframes[s.keyframes.length-1].t-.01)/r,0),a[1]=n.getValueAtTime((n.keyframes[n.keyframes.length-1].t-.01)/r,0)):(i=[s.pv,n.pv],a[0]=s.getValueAtTime((s._caching.lastFrame+s.offsetTime-.01)/r,s.offsetTime),a[1]=n.getValueAtTime((n._caching.lastFrame+n.offsetTime-.01)/r,n.offsetTime))}else i=a=t;this.v.rotate(-Math.atan2(i[1]-a[1],i[0]-a[0]))}this.data.p&&this.data.p.s?this.data.p.z?this.v.translate(this.px.v,this.py.v,-this.pz.v):this.v.translate(this.px.v,this.py.v,0):this.v.translate(this.p.v[0],this.p.v[1],-this.p.v[2])}this.frameId=this.elem.globalData.frameId}},precalculateMatrix:function precalculateMatrix(){if(this.appliedTransformations=0,this.pre.reset(),!this.a.effectsSequence.length&&(this.pre.translate(-this.a.v[0],-this.a.v[1],this.a.v[2]),this.appliedTransformations=1,!this.s.effectsSequence.length)){if(this.pre.scale(this.s.v[0],this.s.v[1],this.s.v[2]),this.appliedTransformations=2,this.sk){if(this.sk.effectsSequence.length||this.sa.effectsSequence.length)return;this.pre.skewFromAxis(-this.sk.v,this.sa.v),this.appliedTransformations=3}this.r?this.r.effectsSequence.length||(this.pre.rotate(-this.r.v),this.appliedTransformations=4):this.rz.effectsSequence.length||this.ry.effectsSequence.length||this.rx.effectsSequence.length||this.or.effectsSequence.length||(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]),this.appliedTransformations=4)}},autoOrient:function autoOrient(){}},extendPrototype([DynamicPropertyContainer],TransformProperty),TransformProperty.prototype.addDynamicProperty=function addDynamicProperty(t){this._addDynamicProperty(t),this.elem.addDynamicProperty(t),this._isDirty=!0},TransformProperty.prototype._addDynamicProperty=DynamicPropertyContainer.prototype.addDynamicProperty,{getTransformProperty:function getTransformProperty(t,e,r){return new TransformProperty(t,e,r)}}}();function RepeaterModifier(){}function RoundCornersModifier(){}function floatEqual(t,e){return 1e5*Math.abs(t-e)<=Math.min(Math.abs(t),Math.abs(e))}function floatZero(t){return Math.abs(t)<=1e-5}function lerp(t,e,r){return t*(1-r)+e*r}function lerpPoint(t,e,r){return[lerp(t[0],e[0],r),lerp(t[1],e[1],r)]}function quadRoots(t,e,r){if(0===t)return[];var i=e*e-4*t*r;if(i<0)return[];var a=-e/(2*t);if(0===i)return[a];var s=Math.sqrt(i)/(2*t);return[a-s,a+s]}function polynomialCoefficients(t,e,r,i){return[3*e-t-3*r+i,3*t-6*e+3*r,-3*t+3*e,t]}function singlePoint(t){return new PolynomialBezier(t,t,t,t,!1)}function PolynomialBezier(t,e,r,i,a){a&&pointEqual(t,e)&&(e=lerpPoint(t,i,1/3)),a&&pointEqual(r,i)&&(r=lerpPoint(t,i,2/3));var s=polynomialCoefficients(t[0],e[0],r[0],i[0]),n=polynomialCoefficients(t[1],e[1],r[1],i[1]);this.a=[s[0],n[0]],this.b=[s[1],n[1]],this.c=[s[2],n[2]],this.d=[s[3],n[3]],this.points=[t,e,r,i]}function extrema(t,e){var r=t.points[0][e],i=t.points[t.points.length-1][e];if(r>i){var a=i;i=r,r=a}for(var s=quadRoots(3*t.a[e],2*t.b[e],t.c[e]),n=0;n<s.length;n+=1)if(s[n]>0&&s[n]<1){var o=t.point(s[n])[e];o<r?r=o:o>i&&(i=o)}return{min:r,max:i}}function intersectData(t,e,r){var i=t.boundingBox();return{cx:i.cx,cy:i.cy,width:i.width,height:i.height,bez:t,t:(e+r)/2,t1:e,t2:r}}function splitData(t){var e=t.bez.split(.5);return[intersectData(e[0],t.t1,t.t),intersectData(e[1],t.t,t.t2)]}function boxIntersect(t,e){return 2*Math.abs(t.cx-e.cx)<t.width+e.width&&2*Math.abs(t.cy-e.cy)<t.height+e.height}function intersectsImpl(t,e,r,i,a,s){if(boxIntersect(t,e))if(r>=s||t.width<=i&&t.height<=i&&e.width<=i&&e.height<=i)a.push([t.t,e.t]);else{var n=splitData(t),o=splitData(e);intersectsImpl(n[0],o[0],r+1,i,a,s),intersectsImpl(n[0],o[1],r+1,i,a,s),intersectsImpl(n[1],o[0],r+1,i,a,s),intersectsImpl(n[1],o[1],r+1,i,a,s)}}function crossProduct(t,e){return[t[1]*e[2]-t[2]*e[1],t[2]*e[0]-t[0]*e[2],t[0]*e[1]-t[1]*e[0]]}function lineIntersection(t,e,r,i){var a=[t[0],t[1],1],s=[e[0],e[1],1],n=[r[0],r[1],1],o=[i[0],i[1],1],h=crossProduct(crossProduct(a,s),crossProduct(n,o));return floatZero(h[2])?null:[h[0]/h[2],h[1]/h[2]]}function polarOffset(t,e,r){return[t[0]+Math.cos(e)*r,t[1]-Math.sin(e)*r]}function pointDistance(t,e){return Math.hypot(t[0]-e[0],t[1]-e[1])}function pointEqual(t,e){return floatEqual(t[0],e[0])&&floatEqual(t[1],e[1])}function ZigZagModifier(){}function setPoint(t,e,r,i,a,s,n){var o=r-Math.PI/2,h=r+Math.PI/2,l=e[0]+Math.cos(r)*i*a,p=e[1]-Math.sin(r)*i*a;t.setTripleAt(l,p,l+Math.cos(o)*s,p-Math.sin(o)*s,l+Math.cos(h)*n,p-Math.sin(h)*n,t.length())}function getPerpendicularVector(t,e){var r=[e[0]-t[0],e[1]-t[1]],i=.5*-Math.PI;return[Math.cos(i)*r[0]-Math.sin(i)*r[1],Math.sin(i)*r[0]+Math.cos(i)*r[1]]}function getProjectingAngle(t,e){var r=0===e?t.length()-1:e-1,i=(e+1)%t.length(),a=getPerpendicularVector(t.v[r],t.v[i]);return Math.atan2(0,1)-Math.atan2(a[1],a[0])}function zigZagCorner(t,e,r,i,a,s,n){var o=getProjectingAngle(e,r),h=e.v[r%e._length],l=e.v[0===r?e._length-1:r-1],p=e.v[(r+1)%e._length],c=2===s?Math.sqrt(Math.pow(h[0]-l[0],2)+Math.pow(h[1]-l[1],2)):0,f=2===s?Math.sqrt(Math.pow(h[0]-p[0],2)+Math.pow(h[1]-p[1],2)):0;setPoint(t,e.v[r%e._length],o,n,i,f/(2*(a+1)),c/(2*(a+1)),s)}function zigZagSegment(t,e,r,i,a,s){for(var n=0;n<i;n+=1){var o=(n+1)/(i+1),h=2===a?Math.sqrt(Math.pow(e.points[3][0]-e.points[0][0],2)+Math.pow(e.points[3][1]-e.points[0][1],2)):0,l=e.normalAngle(o);setPoint(t,e.point(o),l,s,r,h/(2*(i+1)),h/(2*(i+1)),a),s=-s}return s}function linearOffset(t,e,r){var i=Math.atan2(e[0]-t[0],e[1]-t[1]);return[polarOffset(t,i,r),polarOffset(e,i,r)]}function offsetSegment(t,e){var r,i,a,s,n,o,h;r=(h=linearOffset(t.points[0],t.points[1],e))[0],i=h[1],a=(h=linearOffset(t.points[1],t.points[2],e))[0],s=h[1],n=(h=linearOffset(t.points[2],t.points[3],e))[0],o=h[1];var l=lineIntersection(r,i,a,s);null===l&&(l=i);var p=lineIntersection(n,o,a,s);return null===p&&(p=n),new PolynomialBezier(r,l,p,o)}function joinLines(t,e,r,i,a){var s=e.points[3],n=r.points[0];if(3===i)return s;if(pointEqual(s,n))return s;if(2===i){var o=-e.tangentAngle(1),h=-r.tangentAngle(0)+Math.PI,l=lineIntersection(s,polarOffset(s,o+Math.PI/2,100),n,polarOffset(n,o+Math.PI/2,100)),p=l?pointDistance(l,s):pointDistance(s,n)/2,c=polarOffset(s,o,2*p*roundCorner);return t.setXYAt(c[0],c[1],"o",t.length()-1),c=polarOffset(n,h,2*p*roundCorner),t.setTripleAt(n[0],n[1],n[0],n[1],c[0],c[1],t.length()),n}var f=lineIntersection(pointEqual(s,e.points[2])?e.points[0]:e.points[2],s,n,pointEqual(n,r.points[1])?r.points[3]:r.points[1]);return f&&pointDistance(f,s)<a?(t.setTripleAt(f[0],f[1],f[0],f[1],f[0],f[1],t.length()),f):s}function getIntersection(t,e){var r=t.intersections(e);return r.length&&floatEqual(r[0][0],1)&&r.shift(),r.length?r[0]:null}function pruneSegmentIntersection(t,e){var r=t.slice(),i=e.slice(),a=getIntersection(t[t.length-1],e[0]);return a&&(r[t.length-1]=t[t.length-1].split(a[0])[0],i[0]=e[0].split(a[1])[1]),t.length>1&&e.length>1&&(a=getIntersection(t[0],e[e.length-1]))?[[t[0].split(a[0])[0]],[e[e.length-1].split(a[1])[1]]]:[r,i]}function pruneIntersections(t){for(var e,r=1;r<t.length;r+=1)e=pruneSegmentIntersection(t[r-1],t[r]),t[r-1]=e[0],t[r]=e[1];return t.length>1&&(e=pruneSegmentIntersection(t[t.length-1],t[0]),t[t.length-1]=e[0],t[0]=e[1]),t}function offsetSegmentSplit(t,e){var r,i,a,s,n=t.inflectionPoints();if(0===n.length)return[offsetSegment(t,e)];if(1===n.length||floatEqual(n[1],1))return r=(a=t.split(n[0]))[0],i=a[1],[offsetSegment(r,e),offsetSegment(i,e)];r=(a=t.split(n[0]))[0];var o=(n[1]-n[0])/(1-n[0]);return s=(a=a[1].split(o))[0],i=a[1],[offsetSegment(r,e),offsetSegment(s,e),offsetSegment(i,e)]}function OffsetPathModifier(){}function getFontProperties(t){for(var e=t.fStyle?t.fStyle.split(" "):[],r="normal",i="normal",a=e.length,s=0;s<a;s+=1)switch(e[s].toLowerCase()){case"italic":i="italic";break;case"bold":r="700";break;case"black":r="900";break;case"medium":r="500";break;case"regular":case"normal":r="400";break;case"light":case"thin":r="200"}return{style:i,weight:t.fWeight||r}}extendPrototype([ShapeModifier],RepeaterModifier),RepeaterModifier.prototype.initModifierProperties=function(t,e){this.getValue=this.processKeys,this.c=PropertyFactory.getProp(t,e.c,0,null,this),this.o=PropertyFactory.getProp(t,e.o,0,null,this),this.tr=TransformPropertyFactory.getTransformProperty(t,e.tr,this),this.so=PropertyFactory.getProp(t,e.tr.so,0,.01,this),this.eo=PropertyFactory.getProp(t,e.tr.eo,0,.01,this),this.data=e,this.dynamicProperties.length||this.getValue(!0),this._isAnimated=!!this.dynamicProperties.length,this.pMatrix=new Matrix,this.rMatrix=new Matrix,this.sMatrix=new Matrix,this.tMatrix=new Matrix,this.matrix=new Matrix},RepeaterModifier.prototype.applyTransforms=function(t,e,r,i,a,s){var n=s?-1:1,o=i.s.v[0]+(1-i.s.v[0])*(1-a),h=i.s.v[1]+(1-i.s.v[1])*(1-a);t.translate(i.p.v[0]*n*a,i.p.v[1]*n*a,i.p.v[2]),e.translate(-i.a.v[0],-i.a.v[1],i.a.v[2]),e.rotate(-i.r.v*n*a),e.translate(i.a.v[0],i.a.v[1],i.a.v[2]),r.translate(-i.a.v[0],-i.a.v[1],i.a.v[2]),r.scale(s?1/o:o,s?1/h:h),r.translate(i.a.v[0],i.a.v[1],i.a.v[2])},RepeaterModifier.prototype.init=function(t,e,r,i){for(this.elem=t,this.arr=e,this.pos=r,this.elemsData=i,this._currentCopies=0,this._elements=[],this._groups=[],this.frameId=-1,this.initDynamicPropertyContainer(t),this.initModifierProperties(t,e[r]);r>0;)r-=1,this._elements.unshift(e[r]);this.dynamicProperties.length?this.k=!0:this.getValue(!0)},RepeaterModifier.prototype.resetElements=function(t){var e,r=t.length;for(e=0;e<r;e+=1)t[e]._processed=!1,"gr"===t[e].ty&&this.resetElements(t[e].it)},RepeaterModifier.prototype.cloneElements=function(t){var e=JSON.parse(JSON.stringify(t));return this.resetElements(e),e},RepeaterModifier.prototype.changeGroupRender=function(t,e){var r,i=t.length;for(r=0;r<i;r+=1)t[r]._render=e,"gr"===t[r].ty&&this.changeGroupRender(t[r].it,e)},RepeaterModifier.prototype.processShapes=function(t){var e,r,i,a,s,n=!1;if(this._mdf||t){var o,h=Math.ceil(this.c.v);if(this._groups.length<h){for(;this._groups.length<h;){var l={it:this.cloneElements(this._elements),ty:"gr"};l.it.push({a:{a:0,ix:1,k:[0,0]},nm:"Transform",o:{a:0,ix:7,k:100},p:{a:0,ix:2,k:[0,0]},r:{a:1,ix:6,k:[{s:0,e:0,t:0},{s:0,e:0,t:1}]},s:{a:0,ix:3,k:[100,100]},sa:{a:0,ix:5,k:0},sk:{a:0,ix:4,k:0},ty:"tr"}),this.arr.splice(0,0,l),this._groups.splice(0,0,l),this._currentCopies+=1}this.elem.reloadShapes(),n=!0}for(s=0,i=0;i<=this._groups.length-1;i+=1){if(o=s<h,this._groups[i]._render=o,this.changeGroupRender(this._groups[i].it,o),!o){var p=this.elemsData[i].it,c=p[p.length-1];0!==c.transform.op.v?(c.transform.op._mdf=!0,c.transform.op.v=0):c.transform.op._mdf=!1}s+=1}this._currentCopies=h;var f=this.o.v,m=f%1,u=f>0?Math.floor(f):Math.ceil(f),d=this.pMatrix.props,y=this.rMatrix.props,g=this.sMatrix.props;this.pMatrix.reset(),this.rMatrix.reset(),this.sMatrix.reset(),this.tMatrix.reset(),this.matrix.reset();var v,b,P=0;if(f>0){for(;P<u;)this.applyTransforms(this.pMatrix,this.rMatrix,this.sMatrix,this.tr,1,!1),P+=1;m&&(this.applyTransforms(this.pMatrix,this.rMatrix,this.sMatrix,this.tr,m,!1),P+=m)}else if(f<0){for(;P>u;)this.applyTransforms(this.pMatrix,this.rMatrix,this.sMatrix,this.tr,1,!0),P-=1;m&&(this.applyTransforms(this.pMatrix,this.rMatrix,this.sMatrix,this.tr,-m,!0),P-=m)}for(i=1===this.data.m?0:this._currentCopies-1,a=1===this.data.m?1:-1,s=this._currentCopies;s;){if(b=(r=(e=this.elemsData[i].it)[e.length-1].transform.mProps.v.props).length,e[e.length-1].transform.mProps._mdf=!0,e[e.length-1].transform.op._mdf=!0,e[e.length-1].transform.op.v=1===this._currentCopies?this.so.v:this.so.v+(this.eo.v-this.so.v)*(i/(this._currentCopies-1)),0!==P){for((0!==i&&1===a||i!==this._currentCopies-1&&-1===a)&&this.applyTransforms(this.pMatrix,this.rMatrix,this.sMatrix,this.tr,1,!1),this.matrix.transform(y[0],y[1],y[2],y[3],y[4],y[5],y[6],y[7],y[8],y[9],y[10],y[11],y[12],y[13],y[14],y[15]),this.matrix.transform(g[0],g[1],g[2],g[3],g[4],g[5],g[6],g[7],g[8],g[9],g[10],g[11],g[12],g[13],g[14],g[15]),this.matrix.transform(d[0],d[1],d[2],d[3],d[4],d[5],d[6],d[7],d[8],d[9],d[10],d[11],d[12],d[13],d[14],d[15]),v=0;v<b;v+=1)r[v]=this.matrix.props[v];this.matrix.reset()}else for(this.matrix.reset(),v=0;v<b;v+=1)r[v]=this.matrix.props[v];P+=1,s-=1,i+=a}}else for(s=this._currentCopies,i=0,a=1;s;)r=(e=this.elemsData[i].it)[e.length-1].transform.mProps.v.props,e[e.length-1].transform.mProps._mdf=!1,e[e.length-1].transform.op._mdf=!1,s-=1,i+=a;return n},RepeaterModifier.prototype.addShape=function(){},extendPrototype([ShapeModifier],RoundCornersModifier),RoundCornersModifier.prototype.initModifierProperties=function(t,e){this.getValue=this.processKeys,this.rd=PropertyFactory.getProp(t,e.r,0,null,this),this._isAnimated=!!this.rd.effectsSequence.length},RoundCornersModifier.prototype.processPath=function(t,e){var r,i=shapePool.newElement();i.c=t.c;var a,s,n,o,h,l,p,c,f,m,u,d,y=t._length,g=0;for(r=0;r<y;r+=1)a=t.v[r],n=t.o[r],s=t.i[r],a[0]===n[0]&&a[1]===n[1]&&a[0]===s[0]&&a[1]===s[1]?0!==r&&r!==y-1||t.c?(o=0===r?t.v[y-1]:t.v[r-1],l=(h=Math.sqrt(Math.pow(a[0]-o[0],2)+Math.pow(a[1]-o[1],2)))?Math.min(h/2,e)/h:0,p=u=a[0]+(o[0]-a[0])*l,c=d=a[1]-(a[1]-o[1])*l,f=p-(p-a[0])*roundCorner,m=c-(c-a[1])*roundCorner,i.setTripleAt(p,c,f,m,u,d,g),g+=1,o=r===y-1?t.v[0]:t.v[r+1],l=(h=Math.sqrt(Math.pow(a[0]-o[0],2)+Math.pow(a[1]-o[1],2)))?Math.min(h/2,e)/h:0,p=f=a[0]+(o[0]-a[0])*l,c=m=a[1]+(o[1]-a[1])*l,u=p-(p-a[0])*roundCorner,d=c-(c-a[1])*roundCorner,i.setTripleAt(p,c,f,m,u,d,g),g+=1):(i.setTripleAt(a[0],a[1],n[0],n[1],s[0],s[1],g),g+=1):(i.setTripleAt(t.v[r][0],t.v[r][1],t.o[r][0],t.o[r][1],t.i[r][0],t.i[r][1],g),g+=1);return i},RoundCornersModifier.prototype.processShapes=function(t){var e,r,i,a,s,n,o=this.shapes.length,h=this.rd.v;if(0!==h)for(r=0;r<o;r+=1){if(n=(s=this.shapes[r]).localShapeCollection,s.shape._mdf||this._mdf||t)for(n.releaseShapes(),s.shape._mdf=!0,e=s.shape.paths.shapes,a=s.shape.paths._length,i=0;i<a;i+=1)n.addShape(this.processPath(e[i],h));s.shape.paths=s.localShapeCollection}this.dynamicProperties.length||(this._mdf=!1)},PolynomialBezier.prototype.point=function(t){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]]},PolynomialBezier.prototype.derivative=function(t){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]]},PolynomialBezier.prototype.tangentAngle=function(t){var e=this.derivative(t);return Math.atan2(e[1],e[0])},PolynomialBezier.prototype.normalAngle=function(t){var e=this.derivative(t);return Math.atan2(e[0],e[1])},PolynomialBezier.prototype.inflectionPoints=function(){var t=this.a[1]*this.b[0]-this.a[0]*this.b[1];if(floatZero(t))return[];var e=-.5*(this.a[1]*this.c[0]-this.a[0]*this.c[1])/t,r=e*e-1/3*(this.b[1]*this.c[0]-this.b[0]*this.c[1])/t;if(r<0)return[];var i=Math.sqrt(r);return floatZero(i)?i>0&&i<1?[e]:[]:[e-i,e+i].filter(function(t){return t>0&&t<1})},PolynomialBezier.prototype.split=function(t){if(t<=0)return[singlePoint(this.points[0]),this];if(t>=1)return[this,singlePoint(this.points[this.points.length-1])];var e=lerpPoint(this.points[0],this.points[1],t),r=lerpPoint(this.points[1],this.points[2],t),i=lerpPoint(this.points[2],this.points[3],t),a=lerpPoint(e,r,t),s=lerpPoint(r,i,t),n=lerpPoint(a,s,t);return[new PolynomialBezier(this.points[0],e,a,n,!0),new PolynomialBezier(n,s,i,this.points[3],!0)]},PolynomialBezier.prototype.bounds=function(){return{x:extrema(this,0),y:extrema(this,1)}},PolynomialBezier.prototype.boundingBox=function(){var t=this.bounds();return{left:t.x.min,right:t.x.max,top:t.y.min,bottom:t.y.max,width:t.x.max-t.x.min,height:t.y.max-t.y.min,cx:(t.x.max+t.x.min)/2,cy:(t.y.max+t.y.min)/2}},PolynomialBezier.prototype.intersections=function(t,e,r){void 0===e&&(e=2),void 0===r&&(r=7);var i=[];return intersectsImpl(intersectData(this,0,1),intersectData(t,0,1),0,e,i,r),i},PolynomialBezier.shapeSegment=function(t,e){var r=(e+1)%t.length();return new PolynomialBezier(t.v[e],t.o[e],t.i[r],t.v[r],!0)},PolynomialBezier.shapeSegmentInverted=function(t,e){var r=(e+1)%t.length();return new PolynomialBezier(t.v[r],t.i[r],t.o[e],t.v[e],!0)},extendPrototype([ShapeModifier],ZigZagModifier),ZigZagModifier.prototype.initModifierProperties=function(t,e){this.getValue=this.processKeys,this.amplitude=PropertyFactory.getProp(t,e.s,0,null,this),this.frequency=PropertyFactory.getProp(t,e.r,0,null,this),this.pointsType=PropertyFactory.getProp(t,e.pt,0,null,this),this._isAnimated=0!==this.amplitude.effectsSequence.length||0!==this.frequency.effectsSequence.length||0!==this.pointsType.effectsSequence.length},ZigZagModifier.prototype.processPath=function(t,e,r,i){var a=t._length,s=shapePool.newElement();if(s.c=t.c,t.c||(a-=1),0===a)return s;var n=-1,o=PolynomialBezier.shapeSegment(t,0);zigZagCorner(s,t,0,e,r,i,n);for(var h=0;h<a;h+=1)n=zigZagSegment(s,o,e,r,i,-n),o=h!==a-1||t.c?PolynomialBezier.shapeSegment(t,(h+1)%a):null,zigZagCorner(s,t,h+1,e,r,i,n);return s},ZigZagModifier.prototype.processShapes=function(t){var e,r,i,a,s,n,o=this.shapes.length,h=this.amplitude.v,l=Math.max(0,Math.round(this.frequency.v)),p=this.pointsType.v;if(0!==h)for(r=0;r<o;r+=1){if(n=(s=this.shapes[r]).localShapeCollection,s.shape._mdf||this._mdf||t)for(n.releaseShapes(),s.shape._mdf=!0,e=s.shape.paths.shapes,a=s.shape.paths._length,i=0;i<a;i+=1)n.addShape(this.processPath(e[i],h,l,p));s.shape.paths=s.localShapeCollection}this.dynamicProperties.length||(this._mdf=!1)},extendPrototype([ShapeModifier],OffsetPathModifier),OffsetPathModifier.prototype.initModifierProperties=function(t,e){this.getValue=this.processKeys,this.amount=PropertyFactory.getProp(t,e.a,0,null,this),this.miterLimit=PropertyFactory.getProp(t,e.ml,0,null,this),this.lineJoin=e.lj,this._isAnimated=0!==this.amount.effectsSequence.length},OffsetPathModifier.prototype.processPath=function(t,e,r,i){var a=shapePool.newElement();a.c=t.c;var s,n,o,h=t.length();t.c||(h-=1);var l=[];for(s=0;s<h;s+=1)o=PolynomialBezier.shapeSegment(t,s),l.push(offsetSegmentSplit(o,e));if(!t.c)for(s=h-1;s>=0;s-=1)o=PolynomialBezier.shapeSegmentInverted(t,s),l.push(offsetSegmentSplit(o,e));l=pruneIntersections(l);var p=null,c=null;for(s=0;s<l.length;s+=1){var f=l[s];for(c&&(p=joinLines(a,c,f[0],r,i)),c=f[f.length-1],n=0;n<f.length;n+=1)o=f[n],p&&pointEqual(o.points[0],p)?a.setXYAt(o.points[1][0],o.points[1][1],"o",a.length()-1):a.setTripleAt(o.points[0][0],o.points[0][1],o.points[1][0],o.points[1][1],o.points[0][0],o.points[0][1],a.length()),a.setTripleAt(o.points[3][0],o.points[3][1],o.points[3][0],o.points[3][1],o.points[2][0],o.points[2][1],a.length()),p=o.points[3]}return l.length&&joinLines(a,c,l[0][0],r,i),a},OffsetPathModifier.prototype.processShapes=function(t){var e,r,i,a,s,n,o=this.shapes.length,h=this.amount.v,l=this.miterLimit.v,p=this.lineJoin;if(0!==h)for(r=0;r<o;r+=1){if(n=(s=this.shapes[r]).localShapeCollection,s.shape._mdf||this._mdf||t)for(n.releaseShapes(),s.shape._mdf=!0,e=s.shape.paths.shapes,a=s.shape.paths._length,i=0;i<a;i+=1)n.addShape(this.processPath(e[i],h,p,l));s.shape.paths=s.localShapeCollection}this.dynamicProperties.length||(this._mdf=!1)};var FontManager=function(){var t={w:0,size:0,shapes:[],data:{shapes:[]}},e=[];e=e.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]);var r=127988,i=["d83cdffb","d83cdffc","d83cdffd","d83cdffe","d83cdfff"];function setUpNode(t,e){var r=createTag("span");r.setAttribute("aria-hidden",!0),r.style.fontFamily=e;var i=createTag("span");i.innerText="giItT1WQy@!-/#",r.style.position="absolute",r.style.left="-10000px",r.style.top="-10000px",r.style.fontSize="300px",r.style.fontVariant="normal",r.style.fontStyle="normal",r.style.fontWeight="normal",r.style.letterSpacing="0",r.appendChild(i),document.body.appendChild(r);var a=i.offsetWidth;return i.style.fontFamily=function trimFontOptions(t){var e,r=t.split(","),i=r.length,a=[];for(e=0;e<i;e+=1)"sans-serif"!==r[e]&&"monospace"!==r[e]&&a.push(r[e]);return a.join(",")}(t)+", "+e,{node:i,w:a,parent:r}}function createHelper(t,e){var r,i=document.body&&e?"svg":"canvas",a=getFontProperties(t);if("svg"===i){var s=createNS("text");s.style.fontSize="100px",s.setAttribute("font-family",t.fFamily),s.setAttribute("font-style",a.style),s.setAttribute("font-weight",a.weight),s.textContent="1",t.fClass?(s.style.fontFamily="inherit",s.setAttribute("class",t.fClass)):s.style.fontFamily=t.fFamily,e.appendChild(s),r=s}else{var n=new OffscreenCanvas(500,500).getContext("2d");n.font=a.style+" "+a.weight+" 100px "+t.fFamily,r=n}return{measureText:function measure(t){return"svg"===i?(r.textContent=t,r.getComputedTextLength()):r.measureText(t).width}}}function getCodePoint(t){var e=0,r=t.charCodeAt(0);if(r>=55296&&r<=56319){var i=t.charCodeAt(1);i>=56320&&i<=57343&&(e=1024*(r-55296)+i-56320+65536)}return e}function isRegionalCode(t){var e=getCodePoint(t);return e>=127462&&e<=127487}var a=function Font(){this.fonts=[],this.chars=null,this.typekitLoaded=0,this.isLoaded=!1,this._warned=!1,this.initTime=Date.now(),this.setIsLoadedBinded=this.setIsLoaded.bind(this),this.checkLoadedFontsBinded=this.checkLoadedFonts.bind(this)};a.isModifier=function isModifier(t,e){var r=t.toString(16)+e.toString(16);return-1!==i.indexOf(r)},a.isZeroWidthJoiner=function isZeroWidthJoiner(t){return 8205===t},a.isFlagEmoji=function isFlagEmoji(t){return isRegionalCode(t.substr(0,2))&&isRegionalCode(t.substr(2,2))},a.isRegionalCode=isRegionalCode,a.isCombinedCharacter=function isCombinedCharacter(t){return-1!==e.indexOf(t)},a.isRegionalFlag=function isRegionalFlag(t,e){var i=getCodePoint(t.substr(e,2));if(i!==r)return!1;var a=0;for(e+=2;a<5;){if((i=getCodePoint(t.substr(e,2)))<917601||i>917626)return!1;a+=1,e+=2}return 917631===getCodePoint(t.substr(e,2))},a.isVariationSelector=function isVariationSelector(t){return 65039===t},a.BLACK_FLAG_CODE_POINT=r;var s={addChars:function addChars(t){if(t){var e;this.chars||(this.chars=[]);var r,i,a=t.length,s=this.chars.length;for(e=0;e<a;e+=1){for(r=0,i=!1;r<s;)this.chars[r].style===t[e].style&&this.chars[r].fFamily===t[e].fFamily&&this.chars[r].ch===t[e].ch&&(i=!0),r+=1;i||(this.chars.push(t[e]),s+=1)}}},addFonts:function addFonts(t,e){if(t){if(this.chars)return this.isLoaded=!0,void(this.fonts=t.list);if(!document.body)return this.isLoaded=!0,t.list.forEach(function(t){t.helper=createHelper(t),t.cache={}}),void(this.fonts=t.list);var r,i=t.list,a=i.length,s=a;for(r=0;r<a;r+=1){var n,o,h=!0;if(i[r].loaded=!1,i[r].monoCase=setUpNode(i[r].fFamily,"monospace"),i[r].sansCase=setUpNode(i[r].fFamily,"sans-serif"),i[r].fPath){if("p"===i[r].fOrigin||3===i[r].origin){if((n=document.querySelectorAll('style[f-forigin="p"][f-family="'+i[r].fFamily+'"], style[f-origin="3"][f-family="'+i[r].fFamily+'"]')).length>0&&(h=!1),h){var l=createTag("style");l.setAttribute("f-forigin",i[r].fOrigin),l.setAttribute("f-origin",i[r].origin),l.setAttribute("f-family",i[r].fFamily),l.type="text/css",l.innerText="@font-face {font-family: "+i[r].fFamily+"; font-style: normal; src: url('"+i[r].fPath+"');}",e.appendChild(l)}}else if("g"===i[r].fOrigin||1===i[r].origin){for(n=document.querySelectorAll('link[f-forigin="g"], link[f-origin="1"]'),o=0;o<n.length;o+=1)-1!==n[o].href.indexOf(i[r].fPath)&&(h=!1);if(h){var p=createTag("link");p.setAttribute("f-forigin",i[r].fOrigin),p.setAttribute("f-origin",i[r].origin),p.type="text/css",p.rel="stylesheet",p.href=i[r].fPath,document.body.appendChild(p)}}else if("t"===i[r].fOrigin||2===i[r].origin){for(n=document.querySelectorAll('script[f-forigin="t"], script[f-origin="2"]'),o=0;o<n.length;o+=1)i[r].fPath===n[o].src&&(h=!1);if(h){var c=createTag("link");c.setAttribute("f-forigin",i[r].fOrigin),c.setAttribute("f-origin",i[r].origin),c.setAttribute("rel","stylesheet"),c.setAttribute("href",i[r].fPath),e.appendChild(c)}}}else i[r].loaded=!0,s-=1;i[r].helper=createHelper(i[r],e),i[r].cache={},this.fonts.push(i[r])}0===s?this.isLoaded=!0:setTimeout(this.checkLoadedFonts.bind(this),100)}else this.isLoaded=!0},getCharData:function getCharData(e,r,i){for(var a=0,s=this.chars.length;a<s;){if(this.chars[a].ch===e&&this.chars[a].style===r&&this.chars[a].fFamily===i)return this.chars[a];a+=1}return("string"==typeof e&&13!==e.charCodeAt(0)||!e)&&console&&console.warn&&!this._warned&&(this._warned=!0,console.warn("Missing character from exported characters list: ",e,r,i)),t},getFontByName:function getFontByName(t){for(var e=0,r=this.fonts.length;e<r;){if(this.fonts[e].fName===t)return this.fonts[e];e+=1}return this.fonts[0]},measureText:function measureText(t,e,r){var i=this.getFontByName(e),a=t;if(!i.cache[a]){var s=i.helper;if(" "===t){var n=s.measureText("|"+t+"|"),o=s.measureText("||");i.cache[a]=(n-o)/100}else i.cache[a]=s.measureText(t)/100}return i.cache[a]*r},checkLoadedFonts:function checkLoadedFonts(){var t,e,r,i=this.fonts.length,a=i;for(t=0;t<i;t+=1)this.fonts[t].loaded?a-=1:"n"===this.fonts[t].fOrigin||0===this.fonts[t].origin?this.fonts[t].loaded=!0:(e=this.fonts[t].monoCase.node,r=this.fonts[t].monoCase.w,e.offsetWidth!==r?(a-=1,this.fonts[t].loaded=!0):(e=this.fonts[t].sansCase.node,r=this.fonts[t].sansCase.w,e.offsetWidth!==r&&(a-=1,this.fonts[t].loaded=!0)),this.fonts[t].loaded&&(this.fonts[t].sansCase.parent.parentNode.removeChild(this.fonts[t].sansCase.parent),this.fonts[t].monoCase.parent.parentNode.removeChild(this.fonts[t].monoCase.parent)));0!==a&&Date.now()-this.initTime<5e3?setTimeout(this.checkLoadedFontsBinded,20):setTimeout(this.setIsLoadedBinded,10)},setIsLoaded:function setIsLoaded(){this.isLoaded=!0}};return a.prototype=s,a}();function SlotManager(t){this.animationData=t}function slotFactory(t){return new SlotManager(t)}function RenderableElement(){}SlotManager.prototype.getProp=function(t){return this.animationData.slots&&this.animationData.slots[t.sid]?Object.assign(t,this.animationData.slots[t.sid].p):t},RenderableElement.prototype={initRenderable:function initRenderable(){this.isInRange=!1,this.hidden=!1,this.isTransparent=!1,this.renderableComponents=[]},addRenderableComponent:function addRenderableComponent(t){-1===this.renderableComponents.indexOf(t)&&this.renderableComponents.push(t)},removeRenderableComponent:function removeRenderableComponent(t){-1!==this.renderableComponents.indexOf(t)&&this.renderableComponents.splice(this.renderableComponents.indexOf(t),1)},prepareRenderableFrame:function prepareRenderableFrame(t){this.checkLayerLimits(t)},checkTransparency:function checkTransparency(){this.finalTransform.mProp.o.v<=0?!this.isTransparent&&this.globalData.renderConfig.hideOnTransparent&&(this.isTransparent=!0,this.hide()):this.isTransparent&&(this.isTransparent=!1,this.show())},checkLayerLimits:function checkLayerLimits(t){this.data.ip-this.data.st<=t&&this.data.op-this.data.st>t?!0!==this.isInRange&&(this.globalData._mdf=!0,this._mdf=!0,this.isInRange=!0,this.show()):!1!==this.isInRange&&(this.globalData._mdf=!0,this.isInRange=!1,this.hide())},renderRenderable:function renderRenderable(){var t,e=this.renderableComponents.length;for(t=0;t<e;t+=1)this.renderableComponents[t].renderFrame(this._isFirstFrame)},sourceRectAtTime:function sourceRectAtTime(){return{top:0,left:0,width:100,height:100}},getLayerSize:function getLayerSize(){return 5===this.data.ty?{w:this.data.textData.width,h:this.data.textData.height}:{w:this.data.width,h:this.data.height}}};var getBlendMode=(blendModeEnums={0:"source-over",1:"multiply",2:"screen",3:"overlay",4:"darken",5:"lighten",6:"color-dodge",7:"color-burn",8:"hard-light",9:"soft-light",10:"difference",11:"exclusion",12:"hue",13:"saturation",14:"color",15:"luminosity"},function(t){return blendModeEnums[t]||""}),blendModeEnums;function SliderEffect(t,e,r){this.p=PropertyFactory.getProp(e,t.v,0,0,r)}function AngleEffect(t,e,r){this.p=PropertyFactory.getProp(e,t.v,0,0,r)}function ColorEffect(t,e,r){this.p=PropertyFactory.getProp(e,t.v,1,0,r)}function PointEffect(t,e,r){this.p=PropertyFactory.getProp(e,t.v,1,0,r)}function LayerIndexEffect(t,e,r){this.p=PropertyFactory.getProp(e,t.v,0,0,r)}function MaskIndexEffect(t,e,r){this.p=PropertyFactory.getProp(e,t.v,0,0,r)}function CheckboxEffect(t,e,r){this.p=PropertyFactory.getProp(e,t.v,0,0,r)}function NoValueEffect(){this.p={}}function EffectsManager(t,e){var r,i=t.ef||[];this.effectElements=[];var a,s=i.length;for(r=0;r<s;r+=1)a=new GroupEffect(i[r],e),this.effectElements.push(a)}function GroupEffect(t,e){this.init(t,e)}function BaseElement(){}function FrameElement(){}function FootageElement(t,e,r){this.initFrame(),this.initRenderable(),this.assetData=e.getAssetData(t.refId),this.footageData=e.imageLoader.getAsset(this.assetData),this.initBaseData(t,e,r)}function AudioElement(t,e,r){this.initFrame(),this.initRenderable(),this.assetData=e.getAssetData(t.refId),this.initBaseData(t,e,r),this._isPlaying=!1,this._canPlay=!1;var i=this.globalData.getAssetsPath(this.assetData);this.audio=this.globalData.audioController.createAudio(i),this._currentTime=0,this.globalData.audioController.addAudio(this),this._volumeMultiplier=1,this._volume=1,this._previousVolume=null,this.tm=t.tm?PropertyFactory.getProp(this,t.tm,0,e.frameRate,this):{_placeholder:!0},this.lv=PropertyFactory.getProp(this,t.au&&t.au.lv?t.au.lv:{k:[100]},1,.01,this)}function BaseRenderer(){}extendPrototype([DynamicPropertyContainer],GroupEffect),GroupEffect.prototype.getValue=GroupEffect.prototype.iterateDynamicProperties,GroupEffect.prototype.init=function(t,e){var r;this.data=t,this.effectElements=[],this.initDynamicPropertyContainer(e);var i,a=this.data.ef.length,s=this.data.ef;for(r=0;r<a;r+=1){switch(i=null,s[r].ty){case 0:i=new SliderEffect(s[r],e,this);break;case 1:i=new AngleEffect(s[r],e,this);break;case 2:i=new ColorEffect(s[r],e,this);break;case 3:i=new PointEffect(s[r],e,this);break;case 4:case 7:i=new CheckboxEffect(s[r],e,this);break;case 10:i=new LayerIndexEffect(s[r],e,this);break;case 11:i=new MaskIndexEffect(s[r],e,this);break;case 5:i=new EffectsManager(s[r],e,this);break;default:i=new NoValueEffect(s[r],e,this)}i&&this.effectElements.push(i)}},BaseElement.prototype={checkMasks:function checkMasks(){if(!this.data.hasMask)return!1;for(var t=0,e=this.data.masksProperties.length;t<e;){if("n"!==this.data.masksProperties[t].mode&&!1!==this.data.masksProperties[t].cl)return!0;t+=1}return!1},initExpressions:function initExpressions(){var t=getExpressionInterfaces();if(t){var e=t("layer"),r=t("effects"),i=t("shape"),a=t("text"),s=t("comp");this.layerInterface=e(this),this.data.hasMask&&this.maskManager&&this.layerInterface.registerMaskInterface(this.maskManager);var n=r.createEffectsInterface(this,this.layerInterface);this.layerInterface.registerEffectsInterface(n),0===this.data.ty||this.data.xt?this.compInterface=s(this):4===this.data.ty?(this.layerInterface.shapeInterface=i(this.shapesData,this.itemsData,this.layerInterface),this.layerInterface.content=this.layerInterface.shapeInterface):5===this.data.ty&&(this.layerInterface.textInterface=a(this),this.layerInterface.text=this.layerInterface.textInterface)}},setBlendMode:function setBlendMode(){var t=getBlendMode(this.data.bm);(this.baseElement||this.layerElement).style["mix-blend-mode"]=t},initBaseData:function initBaseData(t,e,r){this.globalData=e,this.comp=r,this.data=t,this.layerId=createElementID(),this.data.sr||(this.data.sr=1),this.effectsManager=new EffectsManager(this.data,this,this.dynamicProperties)},getType:function getType(){return this.type},sourceRectAtTime:function sourceRectAtTime(){}},FrameElement.prototype={initFrame:function initFrame(){this._isFirstFrame=!1,this.dynamicProperties=[],this._mdf=!1},prepareProperties:function prepareProperties(t,e){var r,i=this.dynamicProperties.length;for(r=0;r<i;r+=1)(e||this._isParent&&"transform"===this.dynamicProperties[r].propType)&&(this.dynamicProperties[r].getValue(),this.dynamicProperties[r]._mdf&&(this.globalData._mdf=!0,this._mdf=!0))},addDynamicProperty:function addDynamicProperty(t){-1===this.dynamicProperties.indexOf(t)&&this.dynamicProperties.push(t)}},FootageElement.prototype.prepareFrame=function(){},extendPrototype([RenderableElement,BaseElement,FrameElement],FootageElement),FootageElement.prototype.getBaseElement=function(){return null},FootageElement.prototype.renderFrame=function(){},FootageElement.prototype.destroy=function(){},FootageElement.prototype.initExpressions=function(){var t=getExpressionInterfaces();if(t){var e=t("footage");this.layerInterface=e(this)}},FootageElement.prototype.getFootageData=function(){return this.footageData},AudioElement.prototype.prepareFrame=function(t){if(this.prepareRenderableFrame(t,!0),this.prepareProperties(t,!0),this.tm._placeholder)this._currentTime=t/this.data.sr;else{var e=this.tm.v;this._currentTime=e}this._volume=this.lv.v[0];var r=this._volume*this._volumeMultiplier;this._previousVolume!==r&&(this._previousVolume=r,this.audio.volume(r))},extendPrototype([RenderableElement,BaseElement,FrameElement],AudioElement),AudioElement.prototype.renderFrame=function(){this.isInRange&&this._canPlay&&(this._isPlaying?(!this.audio.playing()||Math.abs(this._currentTime/this.globalData.frameRate-this.audio.seek())>.1)&&this.audio.seek(this._currentTime/this.globalData.frameRate):(this.audio.play(),this.audio.seek(this._currentTime/this.globalData.frameRate),this._isPlaying=!0))},AudioElement.prototype.show=function(){},AudioElement.prototype.hide=function(){this.audio.pause(),this._isPlaying=!1},AudioElement.prototype.pause=function(){this.audio.pause(),this._isPlaying=!1,this._canPlay=!1},AudioElement.prototype.resume=function(){this._canPlay=!0},AudioElement.prototype.setRate=function(t){this.audio.rate(t)},AudioElement.prototype.volume=function(t){this._volumeMultiplier=t,this._previousVolume=t*this._volume,this.audio.volume(this._previousVolume)},AudioElement.prototype.getBaseElement=function(){return null},AudioElement.prototype.destroy=function(){},AudioElement.prototype.sourceRectAtTime=function(){},AudioElement.prototype.initExpressions=function(){},BaseRenderer.prototype.checkLayers=function(t){var e,r,i=this.layers.length;for(this.completeLayers=!0,e=i-1;e>=0;e-=1)this.elements[e]||(r=this.layers[e]).ip-r.st<=t-this.layers[e].st&&r.op-r.st>t-this.layers[e].st&&this.buildItem(e),this.completeLayers=!!this.elements[e]&&this.completeLayers;this.checkPendingElements()},BaseRenderer.prototype.createItem=function(t){switch(t.ty){case 2:return this.createImage(t);case 0:return this.createComp(t);case 1:return this.createSolid(t);case 3:default:return this.createNull(t);case 4:return this.createShape(t);case 5:return this.createText(t);case 6:return this.createAudio(t);case 13:return this.createCamera(t);case 15:return this.createFootage(t)}},BaseRenderer.prototype.createCamera=function(){throw new Error("You're using a 3d camera. Try the html renderer.")},BaseRenderer.prototype.createAudio=function(t){return new AudioElement(t,this.globalData,this)},BaseRenderer.prototype.createFootage=function(t){return new FootageElement(t,this.globalData,this)},BaseRenderer.prototype.buildAllItems=function(){var t,e=this.layers.length;for(t=0;t<e;t+=1)this.buildItem(t);this.checkPendingElements()},BaseRenderer.prototype.includeLayers=function(t){var e;this.completeLayers=!1;var r,i=t.length,a=this.layers.length;for(e=0;e<i;e+=1)for(r=0;r<a;){if(this.layers[r].id===t[e].id){this.layers[r]=t[e];break}r+=1}},BaseRenderer.prototype.setProjectInterface=function(t){this.globalData.projectInterface=t},BaseRenderer.prototype.initItems=function(){this.globalData.progressiveLoad||this.buildAllItems()},BaseRenderer.prototype.buildElementParenting=function(t,e,r){for(var i=this.elements,a=this.layers,s=0,n=a.length;s<n;)a[s].ind==e&&(i[s]&&!0!==i[s]?(r.push(i[s]),i[s].setAsParent(),void 0!==a[s].parent?this.buildElementParenting(t,a[s].parent,r):t.setHierarchy(r)):(this.buildItem(s),this.addPendingElement(t))),s+=1},BaseRenderer.prototype.addPendingElement=function(t){this.pendingElements.push(t)},BaseRenderer.prototype.searchExtraCompositions=function(t){var e,r=t.length;for(e=0;e<r;e+=1)if(t[e].xt){var i=this.createComp(t[e]);i.initExpressions(),this.globalData.projectInterface.registerComposition(i)}},BaseRenderer.prototype.getElementById=function(t){var e,r=this.elements.length;for(e=0;e<r;e+=1)if(this.elements[e].data.ind===t)return this.elements[e];return null},BaseRenderer.prototype.getElementByPath=function(t){var e,r=t.shift();if("number"==typeof r)e=this.elements[r];else{var i,a=this.elements.length;for(i=0;i<a;i+=1)if(this.elements[i].data.nm===r){e=this.elements[i];break}}return 0===t.length?e:e.getElementByPath(t)},BaseRenderer.prototype.setupGlobalData=function(t,e){this.globalData.fontManager=new FontManager,this.globalData.slotManager=slotFactory(t),this.globalData.fontManager.addChars(t.chars),this.globalData.fontManager.addFonts(t.fonts,e),this.globalData.getAssetData=this.animationItem.getAssetData.bind(this.animationItem),this.globalData.getAssetsPath=this.animationItem.getAssetsPath.bind(this.animationItem),this.globalData.imageLoader=this.animationItem.imagePreloader,this.globalData.audioController=this.animationItem.audioController,this.globalData.frameId=0,this.globalData.frameRate=t.fr,this.globalData.nm=t.nm,this.globalData.compSize={w:t.w,h:t.h}};var effectTypes={TRANSFORM_EFFECT:"transformEFfect"};function TransformElement(){}function MaskElement(t,e,r){this.data=t,this.element=e,this.globalData=r,this.storedData=[],this.masksProperties=this.data.masksProperties||[],this.maskElement=null;var i,a,s=this.globalData.defs,n=this.masksProperties?this.masksProperties.length:0;this.viewData=createSizedArray(n),this.solidPath="";var o,h,l,p,c,f,m=this.masksProperties,u=0,d=[],y=createElementID(),g="clipPath",v="clip-path";for(i=0;i<n;i+=1)if(("a"!==m[i].mode&&"n"!==m[i].mode||m[i].inv||100!==m[i].o.k||m[i].o.x)&&(g="mask",v="mask"),"s"!==m[i].mode&&"i"!==m[i].mode||0!==u?l=null:((l=createNS("rect")).setAttribute("fill","#ffffff"),l.setAttribute("width",this.element.comp.data.w||0),l.setAttribute("height",this.element.comp.data.h||0),d.push(l)),a=createNS("path"),"n"===m[i].mode)this.viewData[i]={op:PropertyFactory.getProp(this.element,m[i].o,0,.01,this.element),prop:ShapePropertyFactory.getShapeProp(this.element,m[i],3),elem:a,lastPath:""},s.appendChild(a);else{var b;if(u+=1,a.setAttribute("fill","s"===m[i].mode?"#000000":"#ffffff"),a.setAttribute("clip-rule","nonzero"),0!==m[i].x.k?(g="mask",v="mask",f=PropertyFactory.getProp(this.element,m[i].x,0,null,this.element),b=createElementID(),(p=createNS("filter")).setAttribute("id",b),(c=createNS("feMorphology")).setAttribute("operator","erode"),c.setAttribute("in","SourceGraphic"),c.setAttribute("radius","0"),p.appendChild(c),s.appendChild(p),a.setAttribute("stroke","s"===m[i].mode?"#000000":"#ffffff")):(c=null,f=null),this.storedData[i]={elem:a,x:f,expan:c,lastPath:"",lastOperator:"",filterId:b,lastRadius:0},"i"===m[i].mode){h=d.length;var P=createNS("g");for(o=0;o<h;o+=1)P.appendChild(d[o]);var x=createNS("mask");x.setAttribute("mask-type","alpha"),x.setAttribute("id",y+"_"+u),x.appendChild(a),s.appendChild(x),P.setAttribute("mask","url("+getLocationHref()+"#"+y+"_"+u+")"),d.length=0,d.push(P)}else d.push(a);m[i].inv&&!this.solidPath&&(this.solidPath=this.createLayerSolidPath()),this.viewData[i]={elem:a,lastPath:"",op:PropertyFactory.getProp(this.element,m[i].o,0,.01,this.element),prop:ShapePropertyFactory.getShapeProp(this.element,m[i],3),invRect:l},this.viewData[i].prop.k||this.drawPath(m[i],this.viewData[i].prop.v,this.viewData[i])}for(this.maskElement=createNS(g),n=d.length,i=0;i<n;i+=1)this.maskElement.appendChild(d[i]);u>0&&(this.maskElement.setAttribute("id",y),this.element.maskedElement.setAttribute(v,"url("+getLocationHref()+"#"+y+")"),s.appendChild(this.maskElement)),this.viewData.length&&this.element.addRenderableComponent(this)}TransformElement.prototype={initTransform:function initTransform(){var t=new Matrix;this.finalTransform={mProp:this.data.ks?TransformPropertyFactory.getTransformProperty(this,this.data.ks,this):{o:0},_matMdf:!1,_localMatMdf:!1,_opMdf:!1,mat:t,localMat:t,localOpacity:1},this.data.ao&&(this.finalTransform.mProp.autoOriented=!0),this.data.ty},renderTransform:function renderTransform(){if(this.finalTransform._opMdf=this.finalTransform.mProp.o._mdf||this._isFirstFrame,this.finalTransform._matMdf=this.finalTransform.mProp._mdf||this._isFirstFrame,this.hierarchy){var t,e=this.finalTransform.mat,r=0,i=this.hierarchy.length;if(!this.finalTransform._matMdf)for(;r<i;){if(this.hierarchy[r].finalTransform.mProp._mdf){this.finalTransform._matMdf=!0;break}r+=1}if(this.finalTransform._matMdf)for(t=this.finalTransform.mProp.v.props,e.cloneFromProps(t),r=0;r<i;r+=1)e.multiply(this.hierarchy[r].finalTransform.mProp.v)}this.localTransforms&&!this.finalTransform._matMdf||(this.finalTransform._localMatMdf=this.finalTransform._matMdf),this.finalTransform._opMdf&&(this.finalTransform.localOpacity=this.finalTransform.mProp.o.v)},renderLocalTransform:function renderLocalTransform(){if(this.localTransforms){var t=0,e=this.localTransforms.length;if(this.finalTransform._localMatMdf=this.finalTransform._matMdf,!this.finalTransform._localMatMdf||!this.finalTransform._opMdf)for(;t<e;)this.localTransforms[t]._mdf&&(this.finalTransform._localMatMdf=!0),this.localTransforms[t]._opMdf&&!this.finalTransform._opMdf&&(this.finalTransform.localOpacity=this.finalTransform.mProp.o.v,this.finalTransform._opMdf=!0),t+=1;if(this.finalTransform._localMatMdf){var r=this.finalTransform.localMat;for(this.localTransforms[0].matrix.clone(r),t=1;t<e;t+=1){var i=this.localTransforms[t].matrix;r.multiply(i)}r.multiply(this.finalTransform.mat)}if(this.finalTransform._opMdf){var a=this.finalTransform.localOpacity;for(t=0;t<e;t+=1)a*=.01*this.localTransforms[t].opacity;this.finalTransform.localOpacity=a}}},searchEffectTransforms:function searchEffectTransforms(){if(this.renderableEffectsManager){var t=this.renderableEffectsManager.getEffects(effectTypes.TRANSFORM_EFFECT);if(t.length){this.localTransforms=[],this.finalTransform.localMat=new Matrix;var e=0,r=t.length;for(e=0;e<r;e+=1)this.localTransforms.push(t[e])}}},globalToLocal:function globalToLocal(t){var e=[];e.push(this.finalTransform);for(var r,i=!0,a=this.comp;i;)a.finalTransform?(a.data.hasMask&&e.splice(0,0,a.finalTransform),a=a.comp):i=!1;var s,n=e.length;for(r=0;r<n;r+=1)s=e[r].mat.applyToPointArray(0,0,0),t=[t[0]-s[0],t[1]-s[1],0];return t},mHelper:new Matrix},MaskElement.prototype.getMaskProperty=function(t){return this.viewData[t].prop},MaskElement.prototype.renderFrame=function(t){var e,r=this.element.finalTransform.mat,i=this.masksProperties.length;for(e=0;e<i;e+=1)if((this.viewData[e].prop._mdf||t)&&this.drawPath(this.masksProperties[e],this.viewData[e].prop.v,this.viewData[e]),(this.viewData[e].op._mdf||t)&&this.viewData[e].elem.setAttribute("fill-opacity",this.viewData[e].op.v),"n"!==this.masksProperties[e].mode&&(this.viewData[e].invRect&&(this.element.finalTransform.mProp._mdf||t)&&this.viewData[e].invRect.setAttribute("transform",r.getInverseMatrix().to2dCSS()),this.storedData[e].x&&(this.storedData[e].x._mdf||t))){var a=this.storedData[e].expan;this.storedData[e].x.v<0?("erode"!==this.storedData[e].lastOperator&&(this.storedData[e].lastOperator="erode",this.storedData[e].elem.setAttribute("filter","url("+getLocationHref()+"#"+this.storedData[e].filterId+")")),a.setAttribute("radius",-this.storedData[e].x.v)):("dilate"!==this.storedData[e].lastOperator&&(this.storedData[e].lastOperator="dilate",this.storedData[e].elem.setAttribute("filter",null)),this.storedData[e].elem.setAttribute("stroke-width",2*this.storedData[e].x.v))}},MaskElement.prototype.getMaskelement=function(){return this.maskElement},MaskElement.prototype.createLayerSolidPath=function(){var t="M0,0 ";return t+=" h"+this.globalData.compSize.w,t+=" v"+this.globalData.compSize.h,t+=" h-"+this.globalData.compSize.w,t+=" v-"+this.globalData.compSize.h+" "},MaskElement.prototype.drawPath=function(t,e,r){var i,a,s=" M"+e.v[0][0]+","+e.v[0][1];for(a=e._length,i=1;i<a;i+=1)s+=" C"+e.o[i-1][0]+","+e.o[i-1][1]+" "+e.i[i][0]+","+e.i[i][1]+" "+e.v[i][0]+","+e.v[i][1];if(e.c&&a>1&&(s+=" C"+e.o[i-1][0]+","+e.o[i-1][1]+" "+e.i[0][0]+","+e.i[0][1]+" "+e.v[0][0]+","+e.v[0][1]),r.lastPath!==s){var n="";r.elem&&(e.c&&(n=t.inv?this.solidPath+s:s),r.elem.setAttribute("d",n)),r.lastPath=s}},MaskElement.prototype.destroy=function(){this.element=null,this.globalData=null,this.maskElement=null,this.data=null,this.masksProperties=null};var filtersFactory=function(){var t={createFilter:function createFilter(t,e){var r=createNS("filter");return r.setAttribute("id",t),!0!==e&&(r.setAttribute("filterUnits","objectBoundingBox"),r.setAttribute("x","0%"),r.setAttribute("y","0%"),r.setAttribute("width","100%"),r.setAttribute("height","100%")),r},createAlphaToLuminanceFilter:function createAlphaToLuminanceFilter(){var t=createNS("feColorMatrix");return t.setAttribute("type","matrix"),t.setAttribute("color-interpolation-filters","sRGB"),t.setAttribute("values","0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1"),t}};return t}(),featureSupport=function(){var t={maskType:!0,svgLumaHidden:!0,offscreenCanvas:"undefined"!=typeof OffscreenCanvas};return(/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))&&(t.maskType=!1),/firefox/i.test(navigator.userAgent)&&(t.svgLumaHidden=!1),t}(),registeredEffects$1={},idPrefix="filter_result_";function SVGEffects(t){var e,r,i="SourceGraphic",a=t.data.ef?t.data.ef.length:0,s=createElementID(),n=filtersFactory.createFilter(s,!0),o=0;for(this.filters=[],e=0;e<a;e+=1){r=null;var h=t.data.ef[e].ty;registeredEffects$1[h]&&(r=new(0,registeredEffects$1[h].effect)(n,t.effectsManager.effectElements[e],t,idPrefix+o,i),i=idPrefix+o,registeredEffects$1[h].countsAsEffect&&(o+=1)),r&&this.filters.push(r)}o&&(t.globalData.defs.appendChild(n),t.layerElement.setAttribute("filter","url("+getLocationHref()+"#"+s+")")),this.filters.length&&t.addRenderableComponent(this)}function registerEffect$1(t,e,r){registeredEffects$1[t]={effect:e,countsAsEffect:r}}function SVGBaseElement(){}function HierarchyElement(){}function RenderableDOMElement(){}function IImageElement(t,e,r){this.assetData=e.getAssetData(t.refId),this.assetData&&this.assetData.sid&&(this.assetData=e.slotManager.getProp(this.assetData)),this.initElement(t,e,r),this.sourceRect={top:0,left:0,width:this.assetData.w,height:this.assetData.h}}function ProcessedElement(t,e){this.elem=t,this.pos=e}function IShapeElement(){}SVGEffects.prototype.renderFrame=function(t){var e,r=this.filters.length;for(e=0;e<r;e+=1)this.filters[e].renderFrame(t)},SVGEffects.prototype.getEffects=function(t){var e,r=this.filters.length,i=[];for(e=0;e<r;e+=1)this.filters[e].type===t&&i.push(this.filters[e]);return i},SVGBaseElement.prototype={initRendererElement:function initRendererElement(){this.layerElement=createNS("g")},createContainerElements:function createContainerElements(){this.matteElement=createNS("g"),this.transformedElement=this.layerElement,this.maskedElement=this.layerElement,this._sizeChanged=!1;var t=null;if(this.data.td){this.matteMasks={};var e=createNS("g");e.setAttribute("id",this.layerId),e.appendChild(this.layerElement),t=e,this.globalData.defs.appendChild(e)}else this.data.tt?(this.matteElement.appendChild(this.layerElement),t=this.matteElement,this.baseElement=this.matteElement):this.baseElement=this.layerElement;if(this.data.ln&&this.layerElement.setAttribute("id",this.data.ln),this.data.cl&&this.layerElement.setAttribute("class",this.data.cl),0===this.data.ty&&!this.data.hd){var r=createNS("clipPath"),i=createNS("path");i.setAttribute("d","M0,0 L"+this.data.w+",0 L"+this.data.w+","+this.data.h+" L0,"+this.data.h+"z");var a=createElementID();if(r.setAttribute("id",a),r.appendChild(i),this.globalData.defs.appendChild(r),this.checkMasks()){var s=createNS("g");s.setAttribute("clip-path","url("+getLocationHref()+"#"+a+")"),s.appendChild(this.layerElement),this.transformedElement=s,t?t.appendChild(this.transformedElement):this.baseElement=this.transformedElement}else this.layerElement.setAttribute("clip-path","url("+getLocationHref()+"#"+a+")")}0!==this.data.bm&&this.setBlendMode()},renderElement:function renderElement(){this.finalTransform._localMatMdf&&this.transformedElement.setAttribute("transform",this.finalTransform.localMat.to2dCSS()),this.finalTransform._opMdf&&this.transformedElement.setAttribute("opacity",this.finalTransform.localOpacity)},destroyBaseElement:function destroyBaseElement(){this.layerElement=null,this.matteElement=null,this.maskManager.destroy()},getBaseElement:function getBaseElement(){return this.data.hd?null:this.baseElement},createRenderableComponents:function createRenderableComponents(){this.maskManager=new MaskElement(this.data,this,this.globalData),this.renderableEffectsManager=new SVGEffects(this),this.searchEffectTransforms()},getMatte:function getMatte(t){if(this.matteMasks||(this.matteMasks={}),!this.matteMasks[t]){var e,r,i,a,s=this.layerId+"_"+t;if(1===t||3===t){var n=createNS("mask");n.setAttribute("id",s),n.setAttribute("mask-type",3===t?"luminance":"alpha"),(i=createNS("use")).setAttributeNS("http://www.w3.org/1999/xlink","href","#"+this.layerId),n.appendChild(i),this.globalData.defs.appendChild(n),featureSupport.maskType||1!==t||(n.setAttribute("mask-type","luminance"),e=createElementID(),r=filtersFactory.createFilter(e),this.globalData.defs.appendChild(r),r.appendChild(filtersFactory.createAlphaToLuminanceFilter()),(a=createNS("g")).appendChild(i),n.appendChild(a),a.setAttribute("filter","url("+getLocationHref()+"#"+e+")"))}else if(2===t){var o=createNS("mask");o.setAttribute("id",s),o.setAttribute("mask-type","alpha");var h=createNS("g");o.appendChild(h),e=createElementID(),r=filtersFactory.createFilter(e);var l=createNS("feComponentTransfer");l.setAttribute("in","SourceGraphic"),r.appendChild(l);var p=createNS("feFuncA");p.setAttribute("type","table"),p.setAttribute("tableValues","1.0 0.0"),l.appendChild(p),this.globalData.defs.appendChild(r);var c=createNS("rect");c.setAttribute("width",this.comp.data.w),c.setAttribute("height",this.comp.data.h),c.setAttribute("x","0"),c.setAttribute("y","0"),c.setAttribute("fill","#ffffff"),c.setAttribute("opacity","0"),h.setAttribute("filter","url("+getLocationHref()+"#"+e+")"),h.appendChild(c),(i=createNS("use")).setAttributeNS("http://www.w3.org/1999/xlink","href","#"+this.layerId),h.appendChild(i),featureSupport.maskType||(o.setAttribute("mask-type","luminance"),r.appendChild(filtersFactory.createAlphaToLuminanceFilter()),a=createNS("g"),h.appendChild(c),a.appendChild(this.layerElement),h.appendChild(a)),this.globalData.defs.appendChild(o)}this.matteMasks[t]=s}return this.matteMasks[t]},setMatte:function setMatte(t){this.matteElement&&this.matteElement.setAttribute("mask","url("+getLocationHref()+"#"+t+")")}},HierarchyElement.prototype={initHierarchy:function initHierarchy(){this.hierarchy=[],this._isParent=!1,this.checkParenting()},setHierarchy:function setHierarchy(t){this.hierarchy=t},setAsParent:function setAsParent(){this._isParent=!0},checkParenting:function checkParenting(){void 0!==this.data.parent&&this.comp.buildElementParenting(this,this.data.parent,[])}},extendPrototype([RenderableElement,createProxyFunction({initElement:function initElement(t,e,r){this.initFrame(),this.initBaseData(t,e,r),this.initTransform(t,e,r),this.initHierarchy(),this.initRenderable(),this.initRendererElement(),this.createContainerElements(),this.createRenderableComponents(),this.createContent(),this.hide()},hide:function hide(){this.hidden||this.isInRange&&!this.isTransparent||((this.baseElement||this.layerElement).style.display="none",this.hidden=!0)},show:function show(){this.isInRange&&!this.isTransparent&&(this.data.hd||((this.baseElement||this.layerElement).style.display="block"),this.hidden=!1,this._isFirstFrame=!0)},renderFrame:function renderFrame(){this.data.hd||this.hidden||(this.renderTransform(),this.renderRenderable(),this.renderLocalTransform(),this.renderElement(),this.renderInnerContent(),this._isFirstFrame&&(this._isFirstFrame=!1))},renderInnerContent:function renderInnerContent(){},prepareFrame:function prepareFrame(t){this._mdf=!1,this.prepareRenderableFrame(t),this.prepareProperties(t,this.isInRange),this.checkTransparency()},destroy:function destroy(){this.innerElem=null,this.destroyBaseElement()}})],RenderableDOMElement),extendPrototype([BaseElement,TransformElement,SVGBaseElement,HierarchyElement,FrameElement,RenderableDOMElement],IImageElement),IImageElement.prototype.createContent=function(){var t=this.globalData.getAssetsPath(this.assetData);this.innerElem=createNS("image"),this.innerElem.setAttribute("width",this.assetData.w+"px"),this.innerElem.setAttribute("height",this.assetData.h+"px"),this.innerElem.setAttribute("preserveAspectRatio",this.assetData.pr||this.globalData.renderConfig.imagePreserveAspectRatio),this.innerElem.setAttributeNS("http://www.w3.org/1999/xlink","href",t),this.layerElement.appendChild(this.innerElem)},IImageElement.prototype.sourceRectAtTime=function(){return this.sourceRect},IShapeElement.prototype={addShapeToModifiers:function addShapeToModifiers(t){var e,r=this.shapeModifiers.length;for(e=0;e<r;e+=1)this.shapeModifiers[e].addShape(t)},isShapeInAnimatedModifiers:function isShapeInAnimatedModifiers(t){for(var e=this.shapeModifiers.length;0<e;)if(this.shapeModifiers[0].isAnimatedWithShape(t))return!0;return!1},renderModifiers:function renderModifiers(){if(this.shapeModifiers.length){var t,e=this.shapes.length;for(t=0;t<e;t+=1)this.shapes[t].sh.reset();for(t=(e=this.shapeModifiers.length)-1;t>=0&&!this.shapeModifiers[t].processShapes(this._isFirstFrame);t-=1);}},searchProcessedElement:function searchProcessedElement(t){for(var e=this.processedElements,r=0,i=e.length;r<i;){if(e[r].elem===t)return e[r].pos;r+=1}return 0},addProcessedElement:function addProcessedElement(t,e){for(var r=this.processedElements,i=r.length;i;)if(r[i-=1].elem===t)return void(r[i].pos=e);r.push(new ProcessedElement(t,e))},prepareFrame:function prepareFrame(t){this.prepareRenderableFrame(t),this.prepareProperties(t,this.isInRange)}};var lineCapEnum={1:"butt",2:"round",3:"square"},lineJoinEnum={1:"miter",2:"round",3:"bevel"};function SVGShapeData(t,e,r){this.caches=[],this.styles=[],this.transformers=t,this.lStr="",this.sh=r,this.lvl=e,this._isAnimated=!!r.k;for(var i=0,a=t.length;i<a;){if(t[i].mProps.dynamicProperties.length){this._isAnimated=!0;break}i+=1}}function SVGStyleData(t,e){this.data=t,this.type=t.ty,this.d="",this.lvl=e,this._mdf=!1,this.closed=!0===t.hd,this.pElem=createNS("path"),this.msElem=null}function DashProperty(t,e,r,i){var a;this.elem=t,this.frameId=-1,this.dataProps=createSizedArray(e.length),this.renderer=r,this.k=!1,this.dashStr="",this.dashArray=createTypedArray("float32",e.length?e.length-1:0),this.dashoffset=createTypedArray("float32",1),this.initDynamicPropertyContainer(i);var s,n=e.length||0;for(a=0;a<n;a+=1)s=PropertyFactory.getProp(t,e[a].v,0,0,this),this.k=s.k||this.k,this.dataProps[a]={n:e[a].n,p:s};this.k||this.getValue(!0),this._isAnimated=this.k}function SVGStrokeStyleData(t,e,r){this.initDynamicPropertyContainer(t),this.getValue=this.iterateDynamicProperties,this.o=PropertyFactory.getProp(t,e.o,0,.01,this),this.w=PropertyFactory.getProp(t,e.w,0,null,this),this.d=new DashProperty(t,e.d||{},"svg",this),this.c=PropertyFactory.getProp(t,e.c,1,255,this),this.style=r,this._isAnimated=!!this._isAnimated}function SVGFillStyleData(t,e,r){this.initDynamicPropertyContainer(t),this.getValue=this.iterateDynamicProperties,this.o=PropertyFactory.getProp(t,e.o,0,.01,this),this.c=PropertyFactory.getProp(t,e.c,1,255,this),this.style=r}function SVGNoStyleData(t,e,r){this.initDynamicPropertyContainer(t),this.getValue=this.iterateDynamicProperties,this.style=r}function GradientProperty(t,e,r){this.data=e,this.c=createTypedArray("uint8c",4*e.p);var i=e.k.k[0].s?e.k.k[0].s.length-4*e.p:e.k.k.length-4*e.p;this.o=createTypedArray("float32",i),this._cmdf=!1,this._omdf=!1,this._collapsable=this.checkCollapsable(),this._hasOpacity=i,this.initDynamicPropertyContainer(r),this.prop=PropertyFactory.getProp(t,e.k,1,null,this),this.k=this.prop.k,this.getValue(!0)}function SVGGradientFillStyleData(t,e,r){this.initDynamicPropertyContainer(t),this.getValue=this.iterateDynamicProperties,this.initGradientData(t,e,r)}function SVGGradientStrokeStyleData(t,e,r){this.initDynamicPropertyContainer(t),this.getValue=this.iterateDynamicProperties,this.w=PropertyFactory.getProp(t,e.w,0,null,this),this.d=new DashProperty(t,e.d||{},"svg",this),this.initGradientData(t,e,r),this._isAnimated=!!this._isAnimated}function ShapeGroupData(){this.it=[],this.prevViewData=[],this.gr=createNS("g")}function SVGTransformData(t,e,r){this.transform={mProps:t,op:e,container:r},this.elements=[],this._isAnimated=this.transform.mProps.dynamicProperties.length||this.transform.op.effectsSequence.length}SVGShapeData.prototype.setAsAnimated=function(){this._isAnimated=!0},SVGStyleData.prototype.reset=function(){this.d="",this._mdf=!1},DashProperty.prototype.getValue=function(t){if((this.elem.globalData.frameId!==this.frameId||t)&&(this.frameId=this.elem.globalData.frameId,this.iterateDynamicProperties(),this._mdf=this._mdf||t,this._mdf)){var e=0,r=this.dataProps.length;for("svg"===this.renderer&&(this.dashStr=""),e=0;e<r;e+=1)"o"!==this.dataProps[e].n?"svg"===this.renderer?this.dashStr+=" "+this.dataProps[e].p.v:this.dashArray[e]=this.dataProps[e].p.v:this.dashoffset[0]=this.dataProps[e].p.v}},extendPrototype([DynamicPropertyContainer],DashProperty),extendPrototype([DynamicPropertyContainer],SVGStrokeStyleData),extendPrototype([DynamicPropertyContainer],SVGFillStyleData),extendPrototype([DynamicPropertyContainer],SVGNoStyleData),GradientProperty.prototype.comparePoints=function(t,e){for(var r=0,i=this.o.length/2;r<i;){if(Math.abs(t[4*r]-t[4*e+2*r])>.01)return!1;r+=1}return!0},GradientProperty.prototype.checkCollapsable=function(){if(this.o.length/2!=this.c.length/4)return!1;if(this.data.k.k[0].s)for(var t=0,e=this.data.k.k.length;t<e;){if(!this.comparePoints(this.data.k.k[t].s,this.data.p))return!1;t+=1}else if(!this.comparePoints(this.data.k.k,this.data.p))return!1;return!0},GradientProperty.prototype.getValue=function(t){if(this.prop.getValue(),this._mdf=!1,this._cmdf=!1,this._omdf=!1,this.prop._mdf||t){var e,r,i,a=4*this.data.p;for(e=0;e<a;e+=1)r=e%4==0?100:255,i=Math.round(this.prop.v[e]*r),this.c[e]!==i&&(this.c[e]=i,this._cmdf=!t);if(this.o.length)for(a=this.prop.v.length,e=4*this.data.p;e<a;e+=1)r=e%2==0?100:1,i=e%2==0?Math.round(100*this.prop.v[e]):this.prop.v[e],this.o[e-4*this.data.p]!==i&&(this.o[e-4*this.data.p]=i,this._omdf=!t);this._mdf=!t}},extendPrototype([DynamicPropertyContainer],GradientProperty),SVGGradientFillStyleData.prototype.initGradientData=function(t,e,r){this.o=PropertyFactory.getProp(t,e.o,0,.01,this),this.s=PropertyFactory.getProp(t,e.s,1,null,this),this.e=PropertyFactory.getProp(t,e.e,1,null,this),this.h=PropertyFactory.getProp(t,e.h||{k:0},0,.01,this),this.a=PropertyFactory.getProp(t,e.a||{k:0},0,degToRads,this),this.g=new GradientProperty(t,e.g,this),this.style=r,this.stops=[],this.setGradientData(r.pElem,e),this.setGradientOpacity(e,r),this._isAnimated=!!this._isAnimated},SVGGradientFillStyleData.prototype.setGradientData=function(t,e){var r=createElementID(),i=createNS(1===e.t?"linearGradient":"radialGradient");i.setAttribute("id",r),i.setAttribute("spreadMethod","pad"),i.setAttribute("gradientUnits","userSpaceOnUse");var a,s,n,o=[];for(n=4*e.g.p,s=0;s<n;s+=4)a=createNS("stop"),i.appendChild(a),o.push(a);t.setAttribute("gf"===e.ty?"fill":"stroke","url("+getLocationHref()+"#"+r+")"),this.gf=i,this.cst=o},SVGGradientFillStyleData.prototype.setGradientOpacity=function(t,e){if(this.g._hasOpacity&&!this.g._collapsable){var r,i,a,s=createNS("mask"),n=createNS("path");s.appendChild(n);var o=createElementID(),h=createElementID();s.setAttribute("id",h);var l=createNS(1===t.t?"linearGradient":"radialGradient");l.setAttribute("id",o),l.setAttribute("spreadMethod","pad"),l.setAttribute("gradientUnits","userSpaceOnUse"),a=t.g.k.k[0].s?t.g.k.k[0].s.length:t.g.k.k.length;var p=this.stops;for(i=4*t.g.p;i<a;i+=2)(r=createNS("stop")).setAttribute("stop-color","rgb(255,255,255)"),l.appendChild(r),p.push(r);n.setAttribute("gf"===t.ty?"fill":"stroke","url("+getLocationHref()+"#"+o+")"),"gs"===t.ty&&(n.setAttribute("stroke-linecap",lineCapEnum[t.lc||2]),n.setAttribute("stroke-linejoin",lineJoinEnum[t.lj||2]),1===t.lj&&n.setAttribute("stroke-miterlimit",t.ml)),this.of=l,this.ms=s,this.ost=p,this.maskId=h,e.msElem=n}},extendPrototype([DynamicPropertyContainer],SVGGradientFillStyleData),extendPrototype([SVGGradientFillStyleData,DynamicPropertyContainer],SVGGradientStrokeStyleData);var buildShapeString=function buildShapeString(t,e,r,i){if(0===e)return"";var a,s=t.o,n=t.i,o=t.v,h=" M"+i.applyToPointStringified(o[0][0],o[0][1]);for(a=1;a<e;a+=1)h+=" C"+i.applyToPointStringified(s[a-1][0],s[a-1][1])+" "+i.applyToPointStringified(n[a][0],n[a][1])+" "+i.applyToPointStringified(o[a][0],o[a][1]);return r&&e&&(h+=" C"+i.applyToPointStringified(s[a-1][0],s[a-1][1])+" "+i.applyToPointStringified(n[0][0],n[0][1])+" "+i.applyToPointStringified(o[0][0],o[0][1]),h+="z"),h},SVGElementsRenderer=function(){var t=new Matrix,e=new Matrix;function renderContentTransform(t,e,r){(r||e.transform.op._mdf)&&e.transform.container.setAttribute("opacity",e.transform.op.v),(r||e.transform.mProps._mdf)&&e.transform.container.setAttribute("transform",e.transform.mProps.v.to2dCSS())}function renderNoop(){}function renderPath(r,i,a){var s,n,o,h,l,p,c,f,m,u,d=i.styles.length,y=i.lvl;for(p=0;p<d;p+=1){if(h=i.sh._mdf||a,i.styles[p].lvl<y){for(f=e.reset(),m=y-i.styles[p].lvl,u=i.transformers.length-1;!h&&m>0;)h=i.transformers[u].mProps._mdf||h,m-=1,u-=1;if(h)for(m=y-i.styles[p].lvl,u=i.transformers.length-1;m>0;)f.multiply(i.transformers[u].mProps.v),m-=1,u-=1}else f=t;if(n=(c=i.sh.paths)._length,h){for(o="",s=0;s<n;s+=1)(l=c.shapes[s])&&l._length&&(o+=buildShapeString(l,l._length,l.c,f));i.caches[p]=o}else o=i.caches[p];i.styles[p].d+=!0===r.hd?"":o,i.styles[p]._mdf=h||i.styles[p]._mdf}}function renderFill(t,e,r){var i=e.style;(e.c._mdf||r)&&i.pElem.setAttribute("fill","rgb("+bmFloor(e.c.v[0])+","+bmFloor(e.c.v[1])+","+bmFloor(e.c.v[2])+")"),(e.o._mdf||r)&&i.pElem.setAttribute("fill-opacity",e.o.v)}function renderGradientStroke(t,e,r){renderGradient(t,e,r),renderStroke(0,e,r)}function renderGradient(t,e,r){var i,a,s,n,o,h=e.gf,l=e.g._hasOpacity,p=e.s.v,c=e.e.v;if(e.o._mdf||r){var f="gf"===t.ty?"fill-opacity":"stroke-opacity";e.style.pElem.setAttribute(f,e.o.v)}if(e.s._mdf||r){var m=1===t.t?"x1":"cx",u="x1"===m?"y1":"cy";h.setAttribute(m,p[0]),h.setAttribute(u,p[1]),l&&!e.g._collapsable&&(e.of.setAttribute(m,p[0]),e.of.setAttribute(u,p[1]))}if(e.g._cmdf||r){i=e.cst;var d=e.g.c;for(s=i.length,a=0;a<s;a+=1)(n=i[a]).setAttribute("offset",d[4*a]+"%"),n.setAttribute("stop-color","rgb("+d[4*a+1]+","+d[4*a+2]+","+d[4*a+3]+")")}if(l&&(e.g._omdf||r)){var y=e.g.o;for(s=(i=e.g._collapsable?e.cst:e.ost).length,a=0;a<s;a+=1)n=i[a],e.g._collapsable||n.setAttribute("offset",y[2*a]+"%"),n.setAttribute("stop-opacity",y[2*a+1])}if(1===t.t)(e.e._mdf||r)&&(h.setAttribute("x2",c[0]),h.setAttribute("y2",c[1]),l&&!e.g._collapsable&&(e.of.setAttribute("x2",c[0]),e.of.setAttribute("y2",c[1])));else if((e.s._mdf||e.e._mdf||r)&&(o=Math.sqrt(Math.pow(p[0]-c[0],2)+Math.pow(p[1]-c[1],2)),h.setAttribute("r",o),l&&!e.g._collapsable&&e.of.setAttribute("r",o)),e.s._mdf||e.e._mdf||e.h._mdf||e.a._mdf||r){o||(o=Math.sqrt(Math.pow(p[0]-c[0],2)+Math.pow(p[1]-c[1],2)));var g=Math.atan2(c[1]-p[1],c[0]-p[0]),v=e.h.v;v>=1?v=.99:v<=-1&&(v=-.99);var b=o*v,P=Math.cos(g+e.a.v)*b+p[0],x=Math.sin(g+e.a.v)*b+p[1];h.setAttribute("fx",P),h.setAttribute("fy",x),l&&!e.g._collapsable&&(e.of.setAttribute("fx",P),e.of.setAttribute("fy",x))}}function renderStroke(t,e,r){var i=e.style,a=e.d;a&&(a._mdf||r)&&a.dashStr&&(i.pElem.setAttribute("stroke-dasharray",a.dashStr),i.pElem.setAttribute("stroke-dashoffset",a.dashoffset[0])),e.c&&(e.c._mdf||r)&&i.pElem.setAttribute("stroke","rgb("+bmFloor(e.c.v[0])+","+bmFloor(e.c.v[1])+","+bmFloor(e.c.v[2])+")"),(e.o._mdf||r)&&i.pElem.setAttribute("stroke-opacity",e.o.v),(e.w._mdf||r)&&(i.pElem.setAttribute("stroke-width",e.w.v),i.msElem&&i.msElem.setAttribute("stroke-width",e.w.v))}return{createRenderFunction:function createRenderFunction(t){switch(t.ty){case"fl":return renderFill;case"gf":return renderGradient;case"gs":return renderGradientStroke;case"st":return renderStroke;case"sh":case"el":case"rc":case"sr":return renderPath;case"tr":return renderContentTransform;case"no":return renderNoop;default:return null}}}}();function SVGShapeElement(t,e,r){this.shapes=[],this.shapesData=t.shapes,this.stylesList=[],this.shapeModifiers=[],this.itemsData=[],this.processedElements=[],this.animatedContents=[],this.initElement(t,e,r),this.prevViewData=[]}function LetterProps(t,e,r,i,a,s){this.o=t,this.sw=e,this.sc=r,this.fc=i,this.m=a,this.p=s,this._mdf={o:!0,sw:!!e,sc:!!r,fc:!!i,m:!0,p:!0}}function TextProperty(t,e){this._frameId=initialDefaultFrame,this.pv="",this.v="",this.kf=!1,this._isFirstFrame=!0,this._mdf=!1,e.d&&e.d.sid&&(e.d=t.globalData.slotManager.getProp(e.d)),this.data=e,this.elem=t,this.comp=this.elem.comp,this.keysIndex=0,this.canResize=!1,this.minimumFontSize=1,this.effectsSequence=[],this.currentData={ascent:0,boxWidth:this.defaultBoxWidth,f:"",fStyle:"",fWeight:"",fc:"",j:"",justifyOffset:"",l:[],lh:0,lineWidths:[],ls:"",of:"",s:"",sc:"",sw:0,t:0,tr:0,sz:0,ps:null,fillColorAnim:!1,strokeColorAnim:!1,strokeWidthAnim:!1,yOffset:0,finalSize:0,finalText:[],finalLineHeight:0,__complete:!1},this.copyData(this.currentData,this.data.d.k[0].s),this.searchProperty()||this.completeTextData(this.currentData)}extendPrototype([BaseElement,TransformElement,SVGBaseElement,IShapeElement,HierarchyElement,FrameElement,RenderableDOMElement],SVGShapeElement),SVGShapeElement.prototype.initSecondaryElement=function(){},SVGShapeElement.prototype.identityMatrix=new Matrix,SVGShapeElement.prototype.buildExpressionInterface=function(){},SVGShapeElement.prototype.createContent=function(){this.searchShapes(this.shapesData,this.itemsData,this.prevViewData,this.layerElement,0,[],!0),this.filterUniqueShapes()},SVGShapeElement.prototype.filterUniqueShapes=function(){var t,e,r,i,a=this.shapes.length,s=this.stylesList.length,n=[],o=!1;for(r=0;r<s;r+=1){for(i=this.stylesList[r],o=!1,n.length=0,t=0;t<a;t+=1)-1!==(e=this.shapes[t]).styles.indexOf(i)&&(n.push(e),o=e._isAnimated||o);n.length>1&&o&&this.setShapesAsAnimated(n)}},SVGShapeElement.prototype.setShapesAsAnimated=function(t){var e,r=t.length;for(e=0;e<r;e+=1)t[e].setAsAnimated()},SVGShapeElement.prototype.createStyleElement=function(t,e){var r,i=new SVGStyleData(t,e),a=i.pElem;return"st"===t.ty?r=new SVGStrokeStyleData(this,t,i):"fl"===t.ty?r=new SVGFillStyleData(this,t,i):"gf"===t.ty||"gs"===t.ty?(r=new("gf"===t.ty?SVGGradientFillStyleData:SVGGradientStrokeStyleData)(this,t,i),this.globalData.defs.appendChild(r.gf),r.maskId&&(this.globalData.defs.appendChild(r.ms),this.globalData.defs.appendChild(r.of),a.setAttribute("mask","url("+getLocationHref()+"#"+r.maskId+")"))):"no"===t.ty&&(r=new SVGNoStyleData(this,t,i)),"st"!==t.ty&&"gs"!==t.ty||(a.setAttribute("stroke-linecap",lineCapEnum[t.lc||2]),a.setAttribute("stroke-linejoin",lineJoinEnum[t.lj||2]),a.setAttribute("fill-opacity","0"),1===t.lj&&a.setAttribute("stroke-miterlimit",t.ml)),2===t.r&&a.setAttribute("fill-rule","evenodd"),t.ln&&a.setAttribute("id",t.ln),t.cl&&a.setAttribute("class",t.cl),t.bm&&(a.style["mix-blend-mode"]=getBlendMode(t.bm)),this.stylesList.push(i),this.addToAnimatedContents(t,r),r},SVGShapeElement.prototype.createGroupElement=function(t){var e=new ShapeGroupData;return t.ln&&e.gr.setAttribute("id",t.ln),t.cl&&e.gr.setAttribute("class",t.cl),t.bm&&(e.gr.style["mix-blend-mode"]=getBlendMode(t.bm)),e},SVGShapeElement.prototype.createTransformElement=function(t,e){var r=TransformPropertyFactory.getTransformProperty(this,t,this),i=new SVGTransformData(r,r.o,e);return this.addToAnimatedContents(t,i),i},SVGShapeElement.prototype.createShapeElement=function(t,e,r){var i=4;"rc"===t.ty?i=5:"el"===t.ty?i=6:"sr"===t.ty&&(i=7);var a=new SVGShapeData(e,r,ShapePropertyFactory.getShapeProp(this,t,i,this));return this.shapes.push(a),this.addShapeToModifiers(a),this.addToAnimatedContents(t,a),a},SVGShapeElement.prototype.addToAnimatedContents=function(t,e){for(var r=0,i=this.animatedContents.length;r<i;){if(this.animatedContents[r].element===e)return;r+=1}this.animatedContents.push({fn:SVGElementsRenderer.createRenderFunction(t),element:e,data:t})},SVGShapeElement.prototype.setElementStyles=function(t){var e,r=t.styles,i=this.stylesList.length;for(e=0;e<i;e+=1)-1!==r.indexOf(this.stylesList[e])||this.stylesList[e].closed||r.push(this.stylesList[e])},SVGShapeElement.prototype.reloadShapes=function(){var t;this._isFirstFrame=!0;var e=this.itemsData.length;for(t=0;t<e;t+=1)this.prevViewData[t]=this.itemsData[t];for(this.searchShapes(this.shapesData,this.itemsData,this.prevViewData,this.layerElement,0,[],!0),this.filterUniqueShapes(),e=this.dynamicProperties.length,t=0;t<e;t+=1)this.dynamicProperties[t].getValue();this.renderModifiers()},SVGShapeElement.prototype.searchShapes=function(t,e,r,i,a,s,n){var o,h,l,p,c,f,m=[].concat(s),u=t.length-1,d=[],y=[];for(o=u;o>=0;o-=1){if((f=this.searchProcessedElement(t[o]))?e[o]=r[f-1]:t[o]._render=n,"fl"===t[o].ty||"st"===t[o].ty||"gf"===t[o].ty||"gs"===t[o].ty||"no"===t[o].ty)f?e[o].style.closed=t[o].hd:e[o]=this.createStyleElement(t[o],a),t[o]._render&&e[o].style.pElem.parentNode!==i&&i.appendChild(e[o].style.pElem),d.push(e[o].style);else if("gr"===t[o].ty){if(f)for(l=e[o].it.length,h=0;h<l;h+=1)e[o].prevViewData[h]=e[o].it[h];else e[o]=this.createGroupElement(t[o]);this.searchShapes(t[o].it,e[o].it,e[o].prevViewData,e[o].gr,a+1,m,n),t[o]._render&&e[o].gr.parentNode!==i&&i.appendChild(e[o].gr)}else"tr"===t[o].ty?(f||(e[o]=this.createTransformElement(t[o],i)),p=e[o].transform,m.push(p)):"sh"===t[o].ty||"rc"===t[o].ty||"el"===t[o].ty||"sr"===t[o].ty?(f||(e[o]=this.createShapeElement(t[o],m,a)),this.setElementStyles(e[o])):"tm"===t[o].ty||"rd"===t[o].ty||"ms"===t[o].ty||"pb"===t[o].ty||"zz"===t[o].ty||"op"===t[o].ty?(f?(c=e[o]).closed=!1:((c=ShapeModifiers.getModifier(t[o].ty)).init(this,t[o]),e[o]=c,this.shapeModifiers.push(c)),y.push(c)):"rp"===t[o].ty&&(f?(c=e[o]).closed=!0:(c=ShapeModifiers.getModifier(t[o].ty),e[o]=c,c.init(this,t,o,e),this.shapeModifiers.push(c),n=!1),y.push(c));this.addProcessedElement(t[o],o+1)}for(u=d.length,o=0;o<u;o+=1)d[o].closed=!0;for(u=y.length,o=0;o<u;o+=1)y[o].closed=!0},SVGShapeElement.prototype.renderInnerContent=function(){var t;this.renderModifiers();var e=this.stylesList.length;for(t=0;t<e;t+=1)this.stylesList[t].reset();for(this.renderShape(),t=0;t<e;t+=1)(this.stylesList[t]._mdf||this._isFirstFrame)&&(this.stylesList[t].msElem&&(this.stylesList[t].msElem.setAttribute("d",this.stylesList[t].d),this.stylesList[t].d="M0 0"+this.stylesList[t].d),this.stylesList[t].pElem.setAttribute("d",this.stylesList[t].d||"M0 0"))},SVGShapeElement.prototype.renderShape=function(){var t,e,r=this.animatedContents.length;for(t=0;t<r;t+=1)e=this.animatedContents[t],(this._isFirstFrame||e.element._isAnimated)&&!0!==e.data&&e.fn(e.data,e.element,this._isFirstFrame)},SVGShapeElement.prototype.destroy=function(){this.destroyBaseElement(),this.shapesData=null,this.itemsData=null},LetterProps.prototype.update=function(t,e,r,i,a,s){this._mdf.o=!1,this._mdf.sw=!1,this._mdf.sc=!1,this._mdf.fc=!1,this._mdf.m=!1,this._mdf.p=!1;var n=!1;return this.o!==t&&(this.o=t,this._mdf.o=!0,n=!0),this.sw!==e&&(this.sw=e,this._mdf.sw=!0,n=!0),this.sc!==r&&(this.sc=r,this._mdf.sc=!0,n=!0),this.fc!==i&&(this.fc=i,this._mdf.fc=!0,n=!0),this.m!==a&&(this.m=a,this._mdf.m=!0,n=!0),!s.length||this.p[0]===s[0]&&this.p[1]===s[1]&&this.p[4]===s[4]&&this.p[5]===s[5]&&this.p[12]===s[12]&&this.p[13]===s[13]||(this.p=s,this._mdf.p=!0,n=!0),n},TextProperty.prototype.defaultBoxWidth=[0,0],TextProperty.prototype.copyData=function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t},TextProperty.prototype.setCurrentData=function(t){t.__complete||this.completeTextData(t),this.currentData=t,this.currentData.boxWidth=this.currentData.boxWidth||this.defaultBoxWidth,this._mdf=!0},TextProperty.prototype.searchProperty=function(){return this.searchKeyframes()},TextProperty.prototype.searchKeyframes=function(){return this.kf=this.data.d.k.length>1,this.kf&&this.addEffect(this.getKeyframeValue.bind(this)),this.kf},TextProperty.prototype.addEffect=function(t){this.effectsSequence.push(t),this.elem.addDynamicProperty(this)},TextProperty.prototype.getValue=function(t){if(this.elem.globalData.frameId!==this.frameId&&this.effectsSequence.length||t){this.currentData.t=this.data.d.k[this.keysIndex].s.t;var e=this.currentData,r=this.keysIndex;if(this.lock)this.setCurrentData(this.currentData);else{var i;this.lock=!0,this._mdf=!1;var a=this.effectsSequence.length,s=t||this.data.d.k[this.keysIndex].s;for(i=0;i<a;i+=1)s=r!==this.keysIndex?this.effectsSequence[i](s,s.t):this.effectsSequence[i](this.currentData,s.t);e!==s&&this.setCurrentData(s),this.v=this.currentData,this.pv=this.v,this.lock=!1,this.frameId=this.elem.globalData.frameId}}},TextProperty.prototype.getKeyframeValue=function(){for(var t=this.data.d.k,e=this.elem.comp.renderedFrame,r=0,i=t.length;r<=i-1&&!(r===i-1||t[r+1].t>e);)r+=1;return this.keysIndex!==r&&(this.keysIndex=r),this.data.d.k[this.keysIndex].s},TextProperty.prototype.buildFinalText=function(t){for(var e,r,i=[],a=0,s=t.length,n=!1,o=!1,h="";a<s;)n=o,o=!1,e=t.charCodeAt(a),h=t.charAt(a),FontManager.isCombinedCharacter(e)?n=!0:e>=55296&&e<=56319?FontManager.isRegionalFlag(t,a)?h=t.substr(a,14):(r=t.charCodeAt(a+1))>=56320&&r<=57343&&(FontManager.isModifier(e,r)?(h=t.substr(a,2),n=!0):h=FontManager.isFlagEmoji(t.substr(a,4))?t.substr(a,4):t.substr(a,2)):e>56319?(r=t.charCodeAt(a+1),FontManager.isVariationSelector(e)&&(n=!0)):FontManager.isZeroWidthJoiner(e)&&(n=!0,o=!0),n?(i[i.length-1]+=h,n=!1):i.push(h),a+=h.length;return i},TextProperty.prototype.completeTextData=function(t){t.__complete=!0;var e,r,i,a,s,n,o,h=this.elem.globalData.fontManager,l=this.data,p=[],c=0,f=l.m.g,m=0,u=0,d=0,y=[],g=0,v=0,b=h.getFontByName(t.f),P=0,x=getFontProperties(b);t.fWeight=x.weight,t.fStyle=x.style,t.finalSize=t.s,t.finalText=this.buildFinalText(t.t),r=t.finalText.length,t.finalLineHeight=t.lh;var S,E=t.tr/1e3*t.finalSize;if(t.sz)for(var _,F,T=!0,k=t.sz[0],M=t.sz[1];T;){_=0,g=0,r=(F=this.buildFinalText(t.t)).length,E=t.tr/1e3*t.finalSize;var D=-1;for(e=0;e<r;e+=1)S=F[e].charCodeAt(0),i=!1," "===F[e]?D=e:13!==S&&3!==S||(g=0,i=!0,_+=t.finalLineHeight||1.2*t.finalSize),h.chars?(o=h.getCharData(F[e],b.fStyle,b.fFamily),P=i?0:o.w*t.finalSize/100):P=h.measureText(F[e],t.f,t.finalSize),g+P>k&&" "!==F[e]?(-1===D?r+=1:e=D,_+=t.finalLineHeight||1.2*t.finalSize,F.splice(e,D===e?1:0,"\r"),D=-1,g=0):(g+=P,g+=E);_+=b.ascent*t.finalSize/100,this.canResize&&t.finalSize>this.minimumFontSize&&M<_?(t.finalSize-=1,t.finalLineHeight=t.finalSize*t.lh/t.s):(t.finalText=F,r=t.finalText.length,T=!1)}g=-E,P=0;var w,I=0;for(e=0;e<r;e+=1)if(i=!1,13===(S=(w=t.finalText[e]).charCodeAt(0))||3===S?(I=0,y.push(g),v=g>v?g:v,g=-2*E,a="",i=!0,d+=1):a=w,h.chars?(o=h.getCharData(w,b.fStyle,h.getFontByName(t.f).fFamily),P=i?0:o.w*t.finalSize/100):P=h.measureText(a,t.f,t.finalSize)," "===w?I+=P+E:(g+=P+E+I,I=0),p.push({l:P,an:P,add:m,n:i,anIndexes:[],val:a,line:d,animatorJustifyOffset:0}),2==f){if(m+=P,""===a||" "===a||e===r-1){for(""!==a&&" "!==a||(m-=P);u<=e;)p[u].an=m,p[u].ind=c,p[u].extra=P,u+=1;c+=1,m=0}}else if(3==f){if(m+=P,""===a||e===r-1){for(""===a&&(m-=P);u<=e;)p[u].an=m,p[u].ind=c,p[u].extra=P,u+=1;m=0,c+=1}}else p[c].ind=c,p[c].extra=0,c+=1;if(t.l=p,v=g>v?g:v,y.push(g),t.sz)t.boxWidth=t.sz[0],t.justifyOffset=0;else switch(t.boxWidth=v,t.j){case 1:t.justifyOffset=-t.boxWidth;break;case 2:t.justifyOffset=-t.boxWidth/2;break;default:t.justifyOffset=0}t.lineWidths=y;var L,V,R,z,O=l.a;n=O.length;var G=[];for(s=0;s<n;s+=1){for((L=O[s]).a.sc&&(t.strokeColorAnim=!0),L.a.sw&&(t.strokeWidthAnim=!0),(L.a.fc||L.a.fh||L.a.fs||L.a.fb)&&(t.fillColorAnim=!0),z=0,R=L.s.b,e=0;e<r;e+=1)(V=p[e]).anIndexes[s]=z,(1==R&&""!==V.val||2==R&&""!==V.val&&" "!==V.val||3==R&&(V.n||" "==V.val||e==r-1)||4==R&&(V.n||e==r-1))&&(1===L.s.rn&&G.push(z),z+=1);l.a[s].s.totalChars=z;var N,H=-1;if(1===L.s.rn)for(e=0;e<r;e+=1)H!=(V=p[e]).anIndexes[s]&&(H=V.anIndexes[s],N=G.splice(Math.floor(Math.random()*G.length),1)[0]),V.anIndexes[s]=N}t.yOffset=t.finalLineHeight||1.2*t.finalSize,t.ls=t.ls||0,t.ascent=b.ascent*t.finalSize/100},TextProperty.prototype.updateDocumentData=function(t,e){e=void 0===e?this.keysIndex:e;var r=this.copyData({},this.data.d.k[e].s);r=this.copyData(r,t),this.data.d.k[e].s=r,this.recalculate(e),this.setCurrentData(r),this.elem.addDynamicProperty(this)},TextProperty.prototype.recalculate=function(t){var e=this.data.d.k[t].s;e.__complete=!1,this.keysIndex=0,this._isFirstFrame=!0,this.getValue(e)},TextProperty.prototype.canResizeFont=function(t){this.canResize=t,this.recalculate(this.keysIndex),this.elem.addDynamicProperty(this)},TextProperty.prototype.setMinimumFontSize=function(t){this.minimumFontSize=Math.floor(t)||1,this.recalculate(this.keysIndex),this.elem.addDynamicProperty(this)};var TextSelectorProp=function(){var t=Math.max,e=Math.min,r=Math.floor;function TextSelectorPropFactory(t,e){this._currentTextLength=-1,this.k=!1,this.data=e,this.elem=t,this.comp=t.comp,this.finalS=0,this.finalE=0,this.initDynamicPropertyContainer(t),this.s=PropertyFactory.getProp(t,e.s||{k:0},0,0,this),this.e="e"in e?PropertyFactory.getProp(t,e.e,0,0,this):{v:100},this.o=PropertyFactory.getProp(t,e.o||{k:0},0,0,this),this.xe=PropertyFactory.getProp(t,e.xe||{k:0},0,0,this),this.ne=PropertyFactory.getProp(t,e.ne||{k:0},0,0,this),this.sm=PropertyFactory.getProp(t,e.sm||{k:100},0,0,this),this.a=PropertyFactory.getProp(t,e.a,0,.01,this),this.dynamicProperties.length||this.getValue()}return TextSelectorPropFactory.prototype={getMult:function getMult(i){this._currentTextLength!==this.elem.textProperty.currentData.l.length&&this.getValue();var a=0,s=0,n=1,o=1;this.ne.v>0?a=this.ne.v/100:s=-this.ne.v/100,this.xe.v>0?n=1-this.xe.v/100:o=1+this.xe.v/100;var h=BezierFactory.getBezierEasing(a,s,n,o).get,l=0,p=this.finalS,c=this.finalE,f=this.data.sh;if(2===f)l=h(l=c===p?i>=c?1:0:t(0,e(.5/(c-p)+(i-p)/(c-p),1)));else if(3===f)l=h(l=c===p?i>=c?0:1:1-t(0,e(.5/(c-p)+(i-p)/(c-p),1)));else if(4===f)c===p?l=0:(l=t(0,e(.5/(c-p)+(i-p)/(c-p),1)))<.5?l*=2:l=1-2*(l-.5),l=h(l);else if(5===f){if(c===p)l=0;else{var m=c-p,u=-m/2+(i=e(t(0,i+.5-p),c-p)),d=m/2;l=Math.sqrt(1-u*u/(d*d))}l=h(l)}else 6===f?(c===p?l=0:(i=e(t(0,i+.5-p),c-p),l=(1+Math.cos(Math.PI+2*Math.PI*i/(c-p)))/2),l=h(l)):(i>=r(p)&&(l=t(0,e(i-p<0?e(c,1)-(p-i):c-i,1))),l=h(l));if(100!==this.sm.v){var y=.01*this.sm.v;0===y&&(y=1e-8);var g=.5-.5*y;l<g?l=0:(l=(l-g)/y)>1&&(l=1)}return l*this.a.v},getValue:function getValue(t){this.iterateDynamicProperties(),this._mdf=t||this._mdf,this._currentTextLength=this.elem.textProperty.currentData.l.length||0,t&&2===this.data.r&&(this.e.v=this._currentTextLength);var e=2===this.data.r?1:100/this.data.totalChars,r=this.o.v/e,i=this.s.v/e+r,a=this.e.v/e+r;if(i>a){var s=i;i=a,a=s}this.finalS=i,this.finalE=a}},extendPrototype([DynamicPropertyContainer],TextSelectorPropFactory),{getTextSelectorProp:function getTextSelectorProp(t,e,r){return new TextSelectorPropFactory(t,e,r)}}}();function TextAnimatorDataProperty(t,e,r){var i={propType:!1},a=PropertyFactory.getProp,s=e.a;this.a={r:s.r?a(t,s.r,0,degToRads,r):i,rx:s.rx?a(t,s.rx,0,degToRads,r):i,ry:s.ry?a(t,s.ry,0,degToRads,r):i,sk:s.sk?a(t,s.sk,0,degToRads,r):i,sa:s.sa?a(t,s.sa,0,degToRads,r):i,s:s.s?a(t,s.s,1,.01,r):i,a:s.a?a(t,s.a,1,0,r):i,o:s.o?a(t,s.o,0,.01,r):i,p:s.p?a(t,s.p,1,0,r):i,sw:s.sw?a(t,s.sw,0,0,r):i,sc:s.sc?a(t,s.sc,1,0,r):i,fc:s.fc?a(t,s.fc,1,0,r):i,fh:s.fh?a(t,s.fh,0,0,r):i,fs:s.fs?a(t,s.fs,0,.01,r):i,fb:s.fb?a(t,s.fb,0,.01,r):i,t:s.t?a(t,s.t,0,0,r):i},this.s=TextSelectorProp.getTextSelectorProp(t,e.s,r),this.s.t=e.s.t}function TextAnimatorProperty(t,e,r){this._isFirstFrame=!0,this._hasMaskedPath=!1,this._frameId=-1,this._textData=t,this._renderType=e,this._elem=r,this._animatorsData=createSizedArray(this._textData.a.length),this._pathData={},this._moreOptions={alignment:{}},this.renderedLetters=[],this.lettersChangedFlag=!1,this.initDynamicPropertyContainer(r)}function ITextElement(){}TextAnimatorProperty.prototype.searchProperties=function(){var t,e,r=this._textData.a.length,i=PropertyFactory.getProp;for(t=0;t<r;t+=1)e=this._textData.a[t],this._animatorsData[t]=new TextAnimatorDataProperty(this._elem,e,this);this._textData.p&&"m"in this._textData.p?(this._pathData={a:i(this._elem,this._textData.p.a,0,0,this),f:i(this._elem,this._textData.p.f,0,0,this),l:i(this._elem,this._textData.p.l,0,0,this),r:i(this._elem,this._textData.p.r,0,0,this),p:i(this._elem,this._textData.p.p,0,0,this),m:this._elem.maskManager.getMaskProperty(this._textData.p.m)},this._hasMaskedPath=!0):this._hasMaskedPath=!1,this._moreOptions.alignment=i(this._elem,this._textData.m.a,1,0,this)},TextAnimatorProperty.prototype.getMeasures=function(t,e){if(this.lettersChangedFlag=e,this._mdf||this._isFirstFrame||e||this._hasMaskedPath&&this._pathData.m._mdf){this._isFirstFrame=!1;var r,i,a,s,n,o,h,l,p,c,f,m,u,d,y,g,v,b,P,x=this._moreOptions.alignment.v,S=this._animatorsData,E=this._textData,_=this.mHelper,F=this._renderType,T=this.renderedLetters.length,k=t.l;if(this._hasMaskedPath){if(P=this._pathData.m,!this._pathData.n||this._pathData._mdf){var M,D=P.v;for(this._pathData.r.v&&(D=D.reverse()),n={tLength:0,segments:[]},s=D._length-1,g=0,a=0;a<s;a+=1)M=bez.buildBezierData(D.v[a],D.v[a+1],[D.o[a][0]-D.v[a][0],D.o[a][1]-D.v[a][1]],[D.i[a+1][0]-D.v[a+1][0],D.i[a+1][1]-D.v[a+1][1]]),n.tLength+=M.segmentLength,n.segments.push(M),g+=M.segmentLength;a=s,P.v.c&&(M=bez.buildBezierData(D.v[a],D.v[0],[D.o[a][0]-D.v[a][0],D.o[a][1]-D.v[a][1]],[D.i[0][0]-D.v[0][0],D.i[0][1]-D.v[0][1]]),n.tLength+=M.segmentLength,n.segments.push(M),g+=M.segmentLength),this._pathData.pi=n}if(n=this._pathData.pi,o=this._pathData.f.v,f=0,c=1,l=0,p=!0,d=n.segments,o<0&&P.v.c)for(n.tLength<Math.abs(o)&&(o=-Math.abs(o)%n.tLength),c=(u=d[f=d.length-1].points).length-1;o<0;)o+=u[c].partialLength,(c-=1)<0&&(c=(u=d[f-=1].points).length-1);m=(u=d[f].points)[c-1],y=(h=u[c]).partialLength}s=k.length,r=0,i=0;var w,I,L,V,R,z=1.2*t.finalSize*.714,O=!0;L=S.length;var G,N,H,j,q,W,$,Y,X,K,J,Z,U=-1,Q=o,tt=f,et=c,rt=-1,it="",at=this.defaultPropsArray;if(2===t.j||1===t.j){var st=0,nt=0,ot=2===t.j?-.5:-1,ht=0,lt=!0;for(a=0;a<s;a+=1)if(k[a].n){for(st&&(st+=nt);ht<a;)k[ht].animatorJustifyOffset=st,ht+=1;st=0,lt=!0}else{for(I=0;I<L;I+=1)(w=S[I].a).t.propType&&(lt&&2===t.j&&(nt+=w.t.v*ot),(R=S[I].s.getMult(k[a].anIndexes[I],E.a[I].s.totalChars)).length?st+=w.t.v*R[0]*ot:st+=w.t.v*R*ot);lt=!1}for(st&&(st+=nt);ht<a;)k[ht].animatorJustifyOffset=st,ht+=1}for(a=0;a<s;a+=1){if(_.reset(),j=1,k[a].n)r=0,i+=t.yOffset,i+=O?1:0,o=Q,O=!1,this._hasMaskedPath&&(c=et,m=(u=d[f=tt].points)[c-1],y=(h=u[c]).partialLength,l=0),it="",J="",X="",Z="",at=this.defaultPropsArray;else{if(this._hasMaskedPath){if(rt!==k[a].line){switch(t.j){case 1:o+=g-t.lineWidths[k[a].line];break;case 2:o+=(g-t.lineWidths[k[a].line])/2}rt=k[a].line}U!==k[a].ind&&(k[U]&&(o+=k[U].extra),o+=k[a].an/2,U=k[a].ind),o+=x[0]*k[a].an*.005;var pt=0;for(I=0;I<L;I+=1)(w=S[I].a).p.propType&&((R=S[I].s.getMult(k[a].anIndexes[I],E.a[I].s.totalChars)).length?pt+=w.p.v[0]*R[0]:pt+=w.p.v[0]*R),w.a.propType&&((R=S[I].s.getMult(k[a].anIndexes[I],E.a[I].s.totalChars)).length?pt+=w.a.v[0]*R[0]:pt+=w.a.v[0]*R);for(p=!0,this._pathData.a.v&&(o=.5*k[0].an+(g-this._pathData.f.v-.5*k[0].an-.5*k[k.length-1].an)*U/(s-1),o+=this._pathData.f.v);p;)l+y>=o+pt||!u?(v=(o+pt-l)/h.partialLength,N=m.point[0]+(h.point[0]-m.point[0])*v,H=m.point[1]+(h.point[1]-m.point[1])*v,_.translate(-x[0]*k[a].an*.005,-x[1]*z*.01),p=!1):u&&(l+=h.partialLength,(c+=1)>=u.length&&(c=0,d[f+=1]?u=d[f].points:P.v.c?(c=0,u=d[f=0].points):(l-=h.partialLength,u=null)),u&&(m=h,y=(h=u[c]).partialLength));G=k[a].an/2-k[a].add,_.translate(-G,0,0)}else G=k[a].an/2-k[a].add,_.translate(-G,0,0),_.translate(-x[0]*k[a].an*.005,-x[1]*z*.01,0);for(I=0;I<L;I+=1)(w=S[I].a).t.propType&&(R=S[I].s.getMult(k[a].anIndexes[I],E.a[I].s.totalChars),0===r&&0===t.j||(this._hasMaskedPath?R.length?o+=w.t.v*R[0]:o+=w.t.v*R:R.length?r+=w.t.v*R[0]:r+=w.t.v*R));for(t.strokeWidthAnim&&(W=t.sw||0),t.strokeColorAnim&&(q=t.sc?[t.sc[0],t.sc[1],t.sc[2]]:[0,0,0]),t.fillColorAnim&&t.fc&&($=[t.fc[0],t.fc[1],t.fc[2]]),I=0;I<L;I+=1)(w=S[I].a).a.propType&&((R=S[I].s.getMult(k[a].anIndexes[I],E.a[I].s.totalChars)).length?_.translate(-w.a.v[0]*R[0],-w.a.v[1]*R[1],w.a.v[2]*R[2]):_.translate(-w.a.v[0]*R,-w.a.v[1]*R,w.a.v[2]*R));for(I=0;I<L;I+=1)(w=S[I].a).s.propType&&((R=S[I].s.getMult(k[a].anIndexes[I],E.a[I].s.totalChars)).length?_.scale(1+(w.s.v[0]-1)*R[0],1+(w.s.v[1]-1)*R[1],1):_.scale(1+(w.s.v[0]-1)*R,1+(w.s.v[1]-1)*R,1));for(I=0;I<L;I+=1){if(w=S[I].a,R=S[I].s.getMult(k[a].anIndexes[I],E.a[I].s.totalChars),w.sk.propType&&(R.length?_.skewFromAxis(-w.sk.v*R[0],w.sa.v*R[1]):_.skewFromAxis(-w.sk.v*R,w.sa.v*R)),w.r.propType&&(R.length?_.rotateZ(-w.r.v*R[2]):_.rotateZ(-w.r.v*R)),w.ry.propType&&(R.length?_.rotateY(w.ry.v*R[1]):_.rotateY(w.ry.v*R)),w.rx.propType&&(R.length?_.rotateX(w.rx.v*R[0]):_.rotateX(w.rx.v*R)),w.o.propType&&(R.length?j+=(w.o.v*R[0]-j)*R[0]:j+=(w.o.v*R-j)*R),t.strokeWidthAnim&&w.sw.propType&&(R.length?W+=w.sw.v*R[0]:W+=w.sw.v*R),t.strokeColorAnim&&w.sc.propType)for(Y=0;Y<3;Y+=1)R.length?q[Y]+=(w.sc.v[Y]-q[Y])*R[0]:q[Y]+=(w.sc.v[Y]-q[Y])*R;if(t.fillColorAnim&&t.fc){if(w.fc.propType)for(Y=0;Y<3;Y+=1)R.length?$[Y]+=(w.fc.v[Y]-$[Y])*R[0]:$[Y]+=(w.fc.v[Y]-$[Y])*R;w.fh.propType&&($=R.length?addHueToRGB($,w.fh.v*R[0]):addHueToRGB($,w.fh.v*R)),w.fs.propType&&($=R.length?addSaturationToRGB($,w.fs.v*R[0]):addSaturationToRGB($,w.fs.v*R)),w.fb.propType&&($=R.length?addBrightnessToRGB($,w.fb.v*R[0]):addBrightnessToRGB($,w.fb.v*R))}}for(I=0;I<L;I+=1)(w=S[I].a).p.propType&&(R=S[I].s.getMult(k[a].anIndexes[I],E.a[I].s.totalChars),this._hasMaskedPath?R.length?_.translate(0,w.p.v[1]*R[0],-w.p.v[2]*R[1]):_.translate(0,w.p.v[1]*R,-w.p.v[2]*R):R.length?_.translate(w.p.v[0]*R[0],w.p.v[1]*R[1],-w.p.v[2]*R[2]):_.translate(w.p.v[0]*R,w.p.v[1]*R,-w.p.v[2]*R));if(t.strokeWidthAnim&&(X=W<0?0:W),t.strokeColorAnim&&(K="rgb("+Math.round(255*q[0])+","+Math.round(255*q[1])+","+Math.round(255*q[2])+")"),t.fillColorAnim&&t.fc&&(J="rgb("+Math.round(255*$[0])+","+Math.round(255*$[1])+","+Math.round(255*$[2])+")"),this._hasMaskedPath){if(_.translate(0,-t.ls),_.translate(0,x[1]*z*.01+i,0),this._pathData.p.v){b=(h.point[1]-m.point[1])/(h.point[0]-m.point[0]);var ct=180*Math.atan(b)/Math.PI;h.point[0]<m.point[0]&&(ct+=180),_.rotate(-ct*Math.PI/180)}_.translate(N,H,0),o-=x[0]*k[a].an*.005,k[a+1]&&U!==k[a+1].ind&&(o+=k[a].an/2,o+=.001*t.tr*t.finalSize)}else{switch(_.translate(r,i,0),t.ps&&_.translate(t.ps[0],t.ps[1]+t.ascent,0),t.j){case 1:_.translate(k[a].animatorJustifyOffset+t.justifyOffset+(t.boxWidth-t.lineWidths[k[a].line]),0,0);break;case 2:_.translate(k[a].animatorJustifyOffset+t.justifyOffset+(t.boxWidth-t.lineWidths[k[a].line])/2,0,0)}_.translate(0,-t.ls),_.translate(G,0,0),_.translate(x[0]*k[a].an*.005,x[1]*z*.01,0),r+=k[a].l+.001*t.tr*t.finalSize}"html"===F?it=_.toCSS():"svg"===F?it=_.to2dCSS():at=[_.props[0],_.props[1],_.props[2],_.props[3],_.props[4],_.props[5],_.props[6],_.props[7],_.props[8],_.props[9],_.props[10],_.props[11],_.props[12],_.props[13],_.props[14],_.props[15]],Z=j}T<=a?(V=new LetterProps(Z,X,K,J,it,at),this.renderedLetters.push(V),T+=1,this.lettersChangedFlag=!0):(V=this.renderedLetters[a],this.lettersChangedFlag=V.update(Z,X,K,J,it,at)||this.lettersChangedFlag)}}},TextAnimatorProperty.prototype.getValue=function(){this._elem.globalData.frameId!==this._frameId&&(this._frameId=this._elem.globalData.frameId,this.iterateDynamicProperties())},TextAnimatorProperty.prototype.mHelper=new Matrix,TextAnimatorProperty.prototype.defaultPropsArray=[],extendPrototype([DynamicPropertyContainer],TextAnimatorProperty),ITextElement.prototype.initElement=function(t,e,r){this.lettersChangedFlag=!0,this.initFrame(),this.initBaseData(t,e,r),this.textProperty=new TextProperty(this,t.t,this.dynamicProperties),this.textAnimator=new TextAnimatorProperty(t.t,this.renderType,this),this.initTransform(t,e,r),this.initHierarchy(),this.initRenderable(),this.initRendererElement(),this.createContainerElements(),this.createRenderableComponents(),this.createContent(),this.hide(),this.textAnimator.searchProperties(this.dynamicProperties)},ITextElement.prototype.prepareFrame=function(t){this._mdf=!1,this.prepareRenderableFrame(t),this.prepareProperties(t,this.isInRange)},ITextElement.prototype.createPathShape=function(t,e){var r,i,a=e.length,s="";for(r=0;r<a;r+=1)"sh"===e[r].ty&&(i=e[r].ks.k,s+=buildShapeString(i,i.i.length,!0,t));return s},ITextElement.prototype.updateDocumentData=function(t,e){this.textProperty.updateDocumentData(t,e)},ITextElement.prototype.canResizeFont=function(t){this.textProperty.canResizeFont(t)},ITextElement.prototype.setMinimumFontSize=function(t){this.textProperty.setMinimumFontSize(t)},ITextElement.prototype.applyTextPropertiesToMatrix=function(t,e,r,i,a){switch(t.ps&&e.translate(t.ps[0],t.ps[1]+t.ascent,0),e.translate(0,-t.ls,0),t.j){case 1:e.translate(t.justifyOffset+(t.boxWidth-t.lineWidths[r]),0,0);break;case 2:e.translate(t.justifyOffset+(t.boxWidth-t.lineWidths[r])/2,0,0)}e.translate(i,a,0)},ITextElement.prototype.buildColor=function(t){return"rgb("+Math.round(255*t[0])+","+Math.round(255*t[1])+","+Math.round(255*t[2])+")"},ITextElement.prototype.emptyProp=new LetterProps,ITextElement.prototype.destroy=function(){},ITextElement.prototype.validateText=function(){(this.textProperty._mdf||this.textProperty._isFirstFrame)&&(this.buildNewText(),this.textProperty._isFirstFrame=!1,this.textProperty._mdf=!1)};var emptyShapeData={shapes:[]};function SVGTextLottieElement(t,e,r){this.textSpans=[],this.renderType="svg",this.initElement(t,e,r)}function ISolidElement(t,e,r){this.initElement(t,e,r)}function NullElement(t,e,r){this.initFrame(),this.initBaseData(t,e,r),this.initFrame(),this.initTransform(t,e,r),this.initHierarchy()}function SVGRendererBase(){}function ICompElement(){}function SVGCompElement(t,e,r){this.layers=t.layers,this.supports3d=!0,this.completeLayers=!1,this.pendingElements=[],this.elements=this.layers?createSizedArray(this.layers.length):[],this.initElement(t,e,r),this.tm=t.tm?PropertyFactory.getProp(this,t.tm,0,e.frameRate,this):{_placeholder:!0}}function SVGRenderer(t,e){this.animationItem=t,this.layers=null,this.renderedFrame=-1,this.svgElement=createNS("svg");var r="";if(e&&e.title){var i=createNS("title"),a=createElementID();i.setAttribute("id",a),i.textContent=e.title,this.svgElement.appendChild(i),r+=a}if(e&&e.description){var s=createNS("desc"),n=createElementID();s.setAttribute("id",n),s.textContent=e.description,this.svgElement.appendChild(s),r+=" "+n}r&&this.svgElement.setAttribute("aria-labelledby",r);var o=createNS("defs");this.svgElement.appendChild(o);var h=createNS("g");this.svgElement.appendChild(h),this.layerElement=h,this.renderConfig={preserveAspectRatio:e&&e.preserveAspectRatio||"xMidYMid meet",imagePreserveAspectRatio:e&&e.imagePreserveAspectRatio||"xMidYMid slice",contentVisibility:e&&e.contentVisibility||"visible",progressiveLoad:e&&e.progressiveLoad||!1,hideOnTransparent:!(e&&!1===e.hideOnTransparent),viewBoxOnly:e&&e.viewBoxOnly||!1,viewBoxSize:e&&e.viewBoxSize||!1,className:e&&e.className||"",id:e&&e.id||"",focusable:e&&e.focusable,filterSize:{width:e&&e.filterSize&&e.filterSize.width||"100%",height:e&&e.filterSize&&e.filterSize.height||"100%",x:e&&e.filterSize&&e.filterSize.x||"0%",y:e&&e.filterSize&&e.filterSize.y||"0%"},width:e&&e.width,height:e&&e.height,runExpressions:!e||void 0===e.runExpressions||e.runExpressions},this.globalData={_mdf:!1,frameNum:-1,defs:o,renderConfig:this.renderConfig},this.elements=[],this.pendingElements=[],this.destroyed=!1,this.rendererType="svg"}function ShapeTransformManager(){this.sequences={},this.sequenceList=[],this.transform_key_count=0}extendPrototype([BaseElement,TransformElement,SVGBaseElement,HierarchyElement,FrameElement,RenderableDOMElement,ITextElement],SVGTextLottieElement),SVGTextLottieElement.prototype.createContent=function(){this.data.singleShape&&!this.globalData.fontManager.chars&&(this.textContainer=createNS("text"))},SVGTextLottieElement.prototype.buildTextContents=function(t){for(var e=0,r=t.length,i=[],a="";e<r;)t[e]===String.fromCharCode(13)||t[e]===String.fromCharCode(3)?(i.push(a),a=""):a+=t[e],e+=1;return i.push(a),i},SVGTextLottieElement.prototype.buildShapeData=function(t,e){if(t.shapes&&t.shapes.length){var r=t.shapes[0];if(r.it){var i=r.it[r.it.length-1];i.s&&(i.s.k[0]=e,i.s.k[1]=e)}}return t},SVGTextLottieElement.prototype.buildNewText=function(){var t,e;this.addDynamicProperty(this);var r=this.textProperty.currentData;this.renderedLetters=createSizedArray(r?r.l.length:0),r.fc?this.layerElement.setAttribute("fill",this.buildColor(r.fc)):this.layerElement.setAttribute("fill","rgba(0,0,0,0)"),r.sc&&(this.layerElement.setAttribute("stroke",this.buildColor(r.sc)),this.layerElement.setAttribute("stroke-width",r.sw)),this.layerElement.setAttribute("font-size",r.finalSize);var i=this.globalData.fontManager.getFontByName(r.f);if(i.fClass)this.layerElement.setAttribute("class",i.fClass);else{this.layerElement.setAttribute("font-family",i.fFamily);var a=r.fWeight,s=r.fStyle;this.layerElement.setAttribute("font-style",s),this.layerElement.setAttribute("font-weight",a)}this.layerElement.setAttribute("aria-label",r.t);var n,o=r.l||[],h=!!this.globalData.fontManager.chars;e=o.length;var l=this.mHelper,p=this.data.singleShape,c=0,f=0,m=!0,u=.001*r.tr*r.finalSize;if(!p||h||r.sz){var d,y=this.textSpans.length;for(t=0;t<e;t+=1){if(this.textSpans[t]||(this.textSpans[t]={span:null,childSpan:null,glyph:null}),!h||!p||0===t){if(n=y>t?this.textSpans[t].span:createNS(h?"g":"text"),y<=t){if(n.setAttribute("stroke-linecap","butt"),n.setAttribute("stroke-linejoin","round"),n.setAttribute("stroke-miterlimit","4"),this.textSpans[t].span=n,h){var g=createNS("g");n.appendChild(g),this.textSpans[t].childSpan=g}this.textSpans[t].span=n,this.layerElement.appendChild(n)}n.style.display="inherit"}if(l.reset(),p&&(o[t].n&&(c=-u,f+=r.yOffset,f+=m?1:0,m=!1),this.applyTextPropertiesToMatrix(r,l,o[t].line,c,f),c+=o[t].l||0,c+=u),h){var v;if(1===(d=this.globalData.fontManager.getCharData(r.finalText[t],i.fStyle,this.globalData.fontManager.getFontByName(r.f).fFamily)).t)v=new SVGCompElement(d.data,this.globalData,this);else{var b=emptyShapeData;d.data&&d.data.shapes&&(b=this.buildShapeData(d.data,r.finalSize)),v=new SVGShapeElement(b,this.globalData,this)}if(this.textSpans[t].glyph){var P=this.textSpans[t].glyph;this.textSpans[t].childSpan.removeChild(P.layerElement),P.destroy()}this.textSpans[t].glyph=v,v._debug=!0,v.prepareFrame(0),v.renderFrame(),this.textSpans[t].childSpan.appendChild(v.layerElement),1===d.t&&this.textSpans[t].childSpan.setAttribute("transform","scale("+r.finalSize/100+","+r.finalSize/100+")")}else p&&n.setAttribute("transform","translate("+l.props[12]+","+l.props[13]+")"),n.textContent=o[t].val,n.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve")}p&&n&&n.setAttribute("d","")}else{var x=this.textContainer,S="start";switch(r.j){case 1:S="end";break;case 2:S="middle";break;default:S="start"}x.setAttribute("text-anchor",S),x.setAttribute("letter-spacing",u);var E=this.buildTextContents(r.finalText);for(e=E.length,f=r.ps?r.ps[1]+r.ascent:0,t=0;t<e;t+=1)(n=this.textSpans[t].span||createNS("tspan")).textContent=E[t],n.setAttribute("x",0),n.setAttribute("y",f),n.style.display="inherit",x.appendChild(n),this.textSpans[t]||(this.textSpans[t]={span:null,glyph:null}),this.textSpans[t].span=n,f+=r.finalLineHeight;this.layerElement.appendChild(x)}for(;t<this.textSpans.length;)this.textSpans[t].span.style.display="none",t+=1;this._sizeChanged=!0},SVGTextLottieElement.prototype.sourceRectAtTime=function(){if(this.prepareFrame(this.comp.renderedFrame-this.data.st),this.renderInnerContent(),this._sizeChanged){this._sizeChanged=!1;var t=this.layerElement.getBBox();this.bbox={top:t.y,left:t.x,width:t.width,height:t.height}}return this.bbox},SVGTextLottieElement.prototype.getValue=function(){var t,e,r=this.textSpans.length;for(this.renderedFrame=this.comp.renderedFrame,t=0;t<r;t+=1)(e=this.textSpans[t].glyph)&&(e.prepareFrame(this.comp.renderedFrame-this.data.st),e._mdf&&(this._mdf=!0))},SVGTextLottieElement.prototype.renderInnerContent=function(){if(this.validateText(),(!this.data.singleShape||this._mdf)&&(this.textAnimator.getMeasures(this.textProperty.currentData,this.lettersChangedFlag),this.lettersChangedFlag||this.textAnimator.lettersChangedFlag)){var t,e;this._sizeChanged=!0;var r,i,a,s=this.textAnimator.renderedLetters,n=this.textProperty.currentData.l;for(e=n.length,t=0;t<e;t+=1)n[t].n||(r=s[t],i=this.textSpans[t].span,(a=this.textSpans[t].glyph)&&a.renderFrame(),r._mdf.m&&i.setAttribute("transform",r.m),r._mdf.o&&i.setAttribute("opacity",r.o),r._mdf.sw&&i.setAttribute("stroke-width",r.sw),r._mdf.sc&&i.setAttribute("stroke",r.sc),r._mdf.fc&&i.setAttribute("fill",r.fc))}},extendPrototype([IImageElement],ISolidElement),ISolidElement.prototype.createContent=function(){var t=createNS("rect");t.setAttribute("width",this.data.sw),t.setAttribute("height",this.data.sh),t.setAttribute("fill",this.data.sc),this.layerElement.appendChild(t)},NullElement.prototype.prepareFrame=function(t){this.prepareProperties(t,!0)},NullElement.prototype.renderFrame=function(){},NullElement.prototype.getBaseElement=function(){return null},NullElement.prototype.destroy=function(){},NullElement.prototype.sourceRectAtTime=function(){},NullElement.prototype.hide=function(){},extendPrototype([BaseElement,TransformElement,HierarchyElement,FrameElement],NullElement),extendPrototype([BaseRenderer],SVGRendererBase),SVGRendererBase.prototype.createNull=function(t){return new NullElement(t,this.globalData,this)},SVGRendererBase.prototype.createShape=function(t){return new SVGShapeElement(t,this.globalData,this)},SVGRendererBase.prototype.createText=function(t){return new SVGTextLottieElement(t,this.globalData,this)},SVGRendererBase.prototype.createImage=function(t){return new IImageElement(t,this.globalData,this)},SVGRendererBase.prototype.createSolid=function(t){return new ISolidElement(t,this.globalData,this)},SVGRendererBase.prototype.configAnimation=function(t){this.svgElement.setAttribute("xmlns","http://www.w3.org/2000/svg"),this.svgElement.setAttribute("xmlns:xlink","http://www.w3.org/1999/xlink"),this.renderConfig.viewBoxSize?this.svgElement.setAttribute("viewBox",this.renderConfig.viewBoxSize):this.svgElement.setAttribute("viewBox","0 0 "+t.w+" "+t.h),this.renderConfig.viewBoxOnly||(this.svgElement.setAttribute("width",t.w),this.svgElement.setAttribute("height",t.h),this.svgElement.style.width="100%",this.svgElement.style.height="100%",this.svgElement.style.transform="translate3d(0,0,0)",this.svgElement.style.contentVisibility=this.renderConfig.contentVisibility),this.renderConfig.width&&this.svgElement.setAttribute("width",this.renderConfig.width),this.renderConfig.height&&this.svgElement.setAttribute("height",this.renderConfig.height),this.renderConfig.className&&this.svgElement.setAttribute("class",this.renderConfig.className),this.renderConfig.id&&this.svgElement.setAttribute("id",this.renderConfig.id),void 0!==this.renderConfig.focusable&&this.svgElement.setAttribute("focusable",this.renderConfig.focusable),this.svgElement.setAttribute("preserveAspectRatio",this.renderConfig.preserveAspectRatio),this.animationItem.wrapper.appendChild(this.svgElement);var e=this.globalData.defs;this.setupGlobalData(t,e),this.globalData.progressiveLoad=this.renderConfig.progressiveLoad,this.data=t;var r=createNS("clipPath"),i=createNS("rect");i.setAttribute("width",t.w),i.setAttribute("height",t.h),i.setAttribute("x",0),i.setAttribute("y",0);var a=createElementID();r.setAttribute("id",a),r.appendChild(i),this.layerElement.setAttribute("clip-path","url("+getLocationHref()+"#"+a+")"),e.appendChild(r),this.layers=t.layers,this.elements=createSizedArray(t.layers.length)},SVGRendererBase.prototype.destroy=function(){var t;this.animationItem.wrapper&&(this.animationItem.wrapper.innerText=""),this.layerElement=null,this.globalData.defs=null;var e=this.layers?this.layers.length:0;for(t=0;t<e;t+=1)this.elements[t]&&this.elements[t].destroy&&this.elements[t].destroy();this.elements.length=0,this.destroyed=!0,this.animationItem=null},SVGRendererBase.prototype.updateContainerSize=function(){},SVGRendererBase.prototype.findIndexByInd=function(t){var e=0,r=this.layers.length;for(e=0;e<r;e+=1)if(this.layers[e].ind===t)return e;return-1},SVGRendererBase.prototype.buildItem=function(t){var e=this.elements;if(!e[t]&&99!==this.layers[t].ty){e[t]=!0;var r=this.createItem(this.layers[t]);if(e[t]=r,getExpressionsPlugin()&&(0===this.layers[t].ty&&this.globalData.projectInterface.registerComposition(r),r.initExpressions()),this.appendElementInPos(r,t),this.layers[t].tt){var i="tp"in this.layers[t]?this.findIndexByInd(this.layers[t].tp):t-1;if(-1===i)return;if(this.elements[i]&&!0!==this.elements[i]){var a=e[i].getMatte(this.layers[t].tt);r.setMatte(a)}else this.buildItem(i),this.addPendingElement(r)}}},SVGRendererBase.prototype.checkPendingElements=function(){for(;this.pendingElements.length;){var t=this.pendingElements.pop();if(t.checkParenting(),t.data.tt)for(var e=0,r=this.elements.length;e<r;){if(this.elements[e]===t){var i="tp"in t.data?this.findIndexByInd(t.data.tp):e-1,a=this.elements[i].getMatte(this.layers[e].tt);t.setMatte(a);break}e+=1}}},SVGRendererBase.prototype.renderFrame=function(t){if(this.renderedFrame!==t&&!this.destroyed){var e;null===t?t=this.renderedFrame:this.renderedFrame=t,this.globalData.frameNum=t,this.globalData.frameId+=1,this.globalData.projectInterface.currentFrame=t,this.globalData._mdf=!1;var r=this.layers.length;for(this.completeLayers||this.checkLayers(t),e=r-1;e>=0;e-=1)(this.completeLayers||this.elements[e])&&this.elements[e].prepareFrame(t-this.layers[e].st);if(this.globalData._mdf)for(e=0;e<r;e+=1)(this.completeLayers||this.elements[e])&&this.elements[e].renderFrame()}},SVGRendererBase.prototype.appendElementInPos=function(t,e){var r=t.getBaseElement();if(r){for(var i,a=0;a<e;)this.elements[a]&&!0!==this.elements[a]&&this.elements[a].getBaseElement()&&(i=this.elements[a].getBaseElement()),a+=1;i?this.layerElement.insertBefore(r,i):this.layerElement.appendChild(r)}},SVGRendererBase.prototype.hide=function(){this.layerElement.style.display="none"},SVGRendererBase.prototype.show=function(){this.layerElement.style.display="block"},extendPrototype([BaseElement,TransformElement,HierarchyElement,FrameElement,RenderableDOMElement],ICompElement),ICompElement.prototype.initElement=function(t,e,r){this.initFrame(),this.initBaseData(t,e,r),this.initTransform(t,e,r),this.initRenderable(),this.initHierarchy(),this.initRendererElement(),this.createContainerElements(),this.createRenderableComponents(),!this.data.xt&&e.progressiveLoad||this.buildAllItems(),this.hide()},ICompElement.prototype.prepareFrame=function(t){if(this._mdf=!1,this.prepareRenderableFrame(t),this.prepareProperties(t,this.isInRange),this.isInRange||this.data.xt){if(this.tm._placeholder)this.renderedFrame=t/this.data.sr;else{var e=this.tm.v;e===this.data.op&&(e=this.data.op-1),this.renderedFrame=e}var r,i=this.elements.length;for(this.completeLayers||this.checkLayers(this.renderedFrame),r=i-1;r>=0;r-=1)(this.completeLayers||this.elements[r])&&(this.elements[r].prepareFrame(this.renderedFrame-this.layers[r].st),this.elements[r]._mdf&&(this._mdf=!0))}},ICompElement.prototype.renderInnerContent=function(){var t,e=this.layers.length;for(t=0;t<e;t+=1)(this.completeLayers||this.elements[t])&&this.elements[t].renderFrame()},ICompElement.prototype.setElements=function(t){this.elements=t},ICompElement.prototype.getElements=function(){return this.elements},ICompElement.prototype.destroyElements=function(){var t,e=this.layers.length;for(t=0;t<e;t+=1)this.elements[t]&&this.elements[t].destroy()},ICompElement.prototype.destroy=function(){this.destroyElements(),this.destroyBaseElement()},extendPrototype([SVGRendererBase,ICompElement,SVGBaseElement],SVGCompElement),SVGCompElement.prototype.createComp=function(t){return new SVGCompElement(t,this.globalData,this)},extendPrototype([SVGRendererBase],SVGRenderer),SVGRenderer.prototype.createComp=function(t){return new SVGCompElement(t,this.globalData,this)},ShapeTransformManager.prototype={addTransformSequence:function addTransformSequence(t){var e,r=t.length,i="_";for(e=0;e<r;e+=1)i+=t[e].transform.key+"_";var a=this.sequences[i];return a||(a={transforms:[].concat(t),finalTransform:new Matrix,_mdf:!1},this.sequences[i]=a,this.sequenceList.push(a)),a},processSequence:function processSequence(t,e){for(var r=0,i=t.transforms.length,a=e;r<i&&!e;){if(t.transforms[r].transform.mProps._mdf){a=!0;break}r+=1}if(a)for(t.finalTransform.reset(),r=i-1;r>=0;r-=1)t.finalTransform.multiply(t.transforms[r].transform.mProps.v);t._mdf=a},processSequences:function processSequences(t){var e,r=this.sequenceList.length;for(e=0;e<r;e+=1)this.processSequence(this.sequenceList[e],t)},getNewKey:function getNewKey(){return this.transform_key_count+=1,"_"+this.transform_key_count}};var lumaLoader=function lumaLoader(){var t="__lottie_element_luma_buffer",e=null,r=null,i=null;function loadLuma(){e||(i=function createLumaSvgFilter(){var e=createNS("svg"),r=createNS("filter"),i=createNS("feColorMatrix");return r.setAttribute("id",t),i.setAttribute("type","matrix"),i.setAttribute("color-interpolation-filters","sRGB"),i.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"),r.appendChild(i),e.appendChild(r),e.setAttribute("id",t+"_svg"),featureSupport.svgLumaHidden&&(e.style.display="none"),e}(),document.body.appendChild(i),e=createTag("canvas"),(r=e.getContext("2d")).filter="url(#"+t+")",r.fillStyle="rgba(0,0,0,0)",r.fillRect(0,0,1,1))}return{load:loadLuma,get:function getLuma(i){return e||loadLuma(),e.width=i.width,e.height=i.height,r.filter="url(#"+t+")",e}}};function createCanvas(t,e){if(featureSupport.offscreenCanvas)return new OffscreenCanvas(t,e);var r=createTag("canvas");return r.width=t,r.height=e,r}var assetLoader={loadLumaCanvas:lumaLoader.load,getLumaCanvas:lumaLoader.get,createCanvas:createCanvas},registeredEffects={};function CVEffects(t){var e,r,i=t.data.ef?t.data.ef.length:0;for(this.filters=[],e=0;e<i;e+=1){r=null;var a=t.data.ef[e].ty;registeredEffects[a]&&(r=new(0,registeredEffects[a].effect)(t.effectsManager.effectElements[e],t)),r&&this.filters.push(r)}this.filters.length&&t.addRenderableComponent(this)}function registerEffect(t,e){registeredEffects[t]={effect:e}}function CVMaskElement(t,e){var r;this.data=t,this.element=e,this.masksProperties=this.data.masksProperties||[],this.viewData=createSizedArray(this.masksProperties.length);var i=this.masksProperties.length,a=!1;for(r=0;r<i;r+=1)"n"!==this.masksProperties[r].mode&&(a=!0),this.viewData[r]=ShapePropertyFactory.getShapeProp(this.element,this.masksProperties[r],3);this.hasMasks=a,a&&this.element.addRenderableComponent(this)}function CVBaseElement(){}CVEffects.prototype.renderFrame=function(t){var e,r=this.filters.length;for(e=0;e<r;e+=1)this.filters[e].renderFrame(t)},CVEffects.prototype.getEffects=function(t){var e,r=this.filters.length,i=[];for(e=0;e<r;e+=1)this.filters[e].type===t&&i.push(this.filters[e]);return i},CVMaskElement.prototype.renderFrame=function(){if(this.hasMasks){var t,e,r,i,a=this.element.finalTransform.mat,s=this.element.canvasContext,n=this.masksProperties.length;for(s.beginPath(),t=0;t<n;t+=1)if("n"!==this.masksProperties[t].mode){var o;this.masksProperties[t].inv&&(s.moveTo(0,0),s.lineTo(this.element.globalData.compSize.w,0),s.lineTo(this.element.globalData.compSize.w,this.element.globalData.compSize.h),s.lineTo(0,this.element.globalData.compSize.h),s.lineTo(0,0)),i=this.viewData[t].v,e=a.applyToPointArray(i.v[0][0],i.v[0][1],0),s.moveTo(e[0],e[1]);var h=i._length;for(o=1;o<h;o+=1)r=a.applyToTriplePoints(i.o[o-1],i.i[o],i.v[o]),s.bezierCurveTo(r[0],r[1],r[2],r[3],r[4],r[5]);r=a.applyToTriplePoints(i.o[o-1],i.i[0],i.v[0]),s.bezierCurveTo(r[0],r[1],r[2],r[3],r[4],r[5])}this.element.globalData.renderer.save(!0),s.clip()}},CVMaskElement.prototype.getMaskProperty=MaskElement.prototype.getMaskProperty,CVMaskElement.prototype.destroy=function(){this.element=null};var operationsMap={1:"source-in",2:"source-out",3:"source-in",4:"source-out"};function CVShapeData(t,e,r,i){this.styledShapes=[],this.tr=[0,0,0,0,0,0];var a,s=4;"rc"===e.ty?s=5:"el"===e.ty?s=6:"sr"===e.ty&&(s=7),this.sh=ShapePropertyFactory.getShapeProp(t,e,s,t);var n,o=r.length;for(a=0;a<o;a+=1)r[a].closed||(n={transforms:i.addTransformSequence(r[a].transforms),trNodes:[]},this.styledShapes.push(n),r[a].elements.push(n))}function CVShapeElement(t,e,r){this.shapes=[],this.shapesData=t.shapes,this.stylesList=[],this.itemsData=[],this.prevViewData=[],this.shapeModifiers=[],this.processedElements=[],this.transformsManager=new ShapeTransformManager,this.initElement(t,e,r)}function CVTextElement(t,e,r){this.textSpans=[],this.yOffset=0,this.fillColorAnim=!1,this.strokeColorAnim=!1,this.strokeWidthAnim=!1,this.stroke=!1,this.fill=!1,this.justifyOffset=0,this.currentRender=null,this.renderType="canvas",this.values={fill:"rgba(0,0,0,0)",stroke:"rgba(0,0,0,0)",sWidth:0,fValue:""},this.initElement(t,e,r)}function CVImageElement(t,e,r){this.assetData=e.getAssetData(t.refId),this.img=e.imageLoader.getAsset(this.assetData),this.initElement(t,e,r)}function CVSolidElement(t,e,r){this.initElement(t,e,r)}function CanvasRendererBase(){}function CanvasContext(){this.opacity=-1,this.transform=createTypedArray("float32",16),this.fillStyle="",this.strokeStyle="",this.lineWidth="",this.lineCap="",this.lineJoin="",this.miterLimit="",this.id=Math.random()}function CVContextData(){var t;for(this.stack=[],this.cArrPos=0,this.cTr=new Matrix,t=0;t<15;t+=1){var e=new CanvasContext;this.stack[t]=e}this._length=15,this.nativeContext=null,this.transformMat=new Matrix,this.currentOpacity=1,this.currentFillStyle="",this.appliedFillStyle="",this.currentStrokeStyle="",this.appliedStrokeStyle="",this.currentLineWidth="",this.appliedLineWidth="",this.currentLineCap="",this.appliedLineCap="",this.currentLineJoin="",this.appliedLineJoin="",this.appliedMiterLimit="",this.currentMiterLimit=""}function CVCompElement(t,e,r){this.completeLayers=!1,this.layers=t.layers,this.pendingElements=[],this.elements=createSizedArray(this.layers.length),this.initElement(t,e,r),this.tm=t.tm?PropertyFactory.getProp(this,t.tm,0,e.frameRate,this):{_placeholder:!0}}function CanvasRenderer(t,e){this.animationItem=t,this.renderConfig={clearCanvas:!e||void 0===e.clearCanvas||e.clearCanvas,context:e&&e.context||null,progressiveLoad:e&&e.progressiveLoad||!1,preserveAspectRatio:e&&e.preserveAspectRatio||"xMidYMid meet",imagePreserveAspectRatio:e&&e.imagePreserveAspectRatio||"xMidYMid slice",contentVisibility:e&&e.contentVisibility||"visible",className:e&&e.className||"",id:e&&e.id||"",runExpressions:!e||void 0===e.runExpressions||e.runExpressions},this.renderConfig.dpr=e&&e.dpr||1,this.animationItem.wrapper&&(this.renderConfig.dpr=e&&e.dpr||window.devicePixelRatio||1),this.renderedFrame=-1,this.globalData={frameNum:-1,_mdf:!1,renderConfig:this.renderConfig,currentGlobalAlpha:-1},this.contextData=new CVContextData,this.elements=[],this.pendingElements=[],this.transformMat=new Matrix,this.completeLayers=!1,this.rendererType="canvas",this.renderConfig.clearCanvas&&(this.ctxTransform=this.contextData.transform.bind(this.contextData),this.ctxOpacity=this.contextData.opacity.bind(this.contextData),this.ctxFillStyle=this.contextData.fillStyle.bind(this.contextData),this.ctxStrokeStyle=this.contextData.strokeStyle.bind(this.contextData),this.ctxLineWidth=this.contextData.lineWidth.bind(this.contextData),this.ctxLineCap=this.contextData.lineCap.bind(this.contextData),this.ctxLineJoin=this.contextData.lineJoin.bind(this.contextData),this.ctxMiterLimit=this.contextData.miterLimit.bind(this.contextData),this.ctxFill=this.contextData.fill.bind(this.contextData),this.ctxFillRect=this.contextData.fillRect.bind(this.contextData),this.ctxStroke=this.contextData.stroke.bind(this.contextData),this.save=this.contextData.save.bind(this.contextData))}function HBaseElement(){}function HSolidElement(t,e,r){this.initElement(t,e,r)}function HShapeElement(t,e,r){this.shapes=[],this.shapesData=t.shapes,this.stylesList=[],this.shapeModifiers=[],this.itemsData=[],this.processedElements=[],this.animatedContents=[],this.shapesContainer=createNS("g"),this.initElement(t,e,r),this.prevViewData=[],this.currentBBox={x:999999,y:-999999,h:0,w:0}}function HTextElement(t,e,r){this.textSpans=[],this.textPaths=[],this.currentBBox={x:999999,y:-999999,h:0,w:0},this.renderType="svg",this.isMasked=!1,this.initElement(t,e,r)}function HCameraElement(t,e,r){this.initFrame(),this.initBaseData(t,e,r),this.initHierarchy();var i=PropertyFactory.getProp;if(this.pe=i(this,t.pe,0,0,this),t.ks.p.s?(this.px=i(this,t.ks.p.x,1,0,this),this.py=i(this,t.ks.p.y,1,0,this),this.pz=i(this,t.ks.p.z,1,0,this)):this.p=i(this,t.ks.p,1,0,this),t.ks.a&&(this.a=i(this,t.ks.a,1,0,this)),t.ks.or.k.length&&t.ks.or.k[0].to){var a,s=t.ks.or.k.length;for(a=0;a<s;a+=1)t.ks.or.k[a].to=null,t.ks.or.k[a].ti=null}this.or=i(this,t.ks.or,1,degToRads,this),this.or.sh=!0,this.rx=i(this,t.ks.rx,0,degToRads,this),this.ry=i(this,t.ks.ry,0,degToRads,this),this.rz=i(this,t.ks.rz,0,degToRads,this),this.mat=new Matrix,this._prevMat=new Matrix,this._isFirstFrame=!0,this.finalTransform={mProp:this}}function HImageElement(t,e,r){this.assetData=e.getAssetData(t.refId),this.initElement(t,e,r)}function HybridRendererBase(t,e){this.animationItem=t,this.layers=null,this.renderedFrame=-1,this.renderConfig={className:e&&e.className||"",imagePreserveAspectRatio:e&&e.imagePreserveAspectRatio||"xMidYMid slice",hideOnTransparent:!(e&&!1===e.hideOnTransparent),filterSize:{width:e&&e.filterSize&&e.filterSize.width||"400%",height:e&&e.filterSize&&e.filterSize.height||"400%",x:e&&e.filterSize&&e.filterSize.x||"-100%",y:e&&e.filterSize&&e.filterSize.y||"-100%"}},this.globalData={_mdf:!1,frameNum:-1,renderConfig:this.renderConfig},this.pendingElements=[],this.elements=[],this.threeDElements=[],this.destroyed=!1,this.camera=null,this.supports3d=!0,this.rendererType="html"}function HCompElement(t,e,r){this.layers=t.layers,this.supports3d=!t.hasMask,this.completeLayers=!1,this.pendingElements=[],this.elements=this.layers?createSizedArray(this.layers.length):[],this.initElement(t,e,r),this.tm=t.tm?PropertyFactory.getProp(this,t.tm,0,e.frameRate,this):{_placeholder:!0}}function HybridRenderer(t,e){this.animationItem=t,this.layers=null,this.renderedFrame=-1,this.renderConfig={className:e&&e.className||"",imagePreserveAspectRatio:e&&e.imagePreserveAspectRatio||"xMidYMid slice",hideOnTransparent:!(e&&!1===e.hideOnTransparent),filterSize:{width:e&&e.filterSize&&e.filterSize.width||"400%",height:e&&e.filterSize&&e.filterSize.height||"400%",x:e&&e.filterSize&&e.filterSize.x||"-100%",y:e&&e.filterSize&&e.filterSize.y||"-100%"},runExpressions:!e||void 0===e.runExpressions||e.runExpressions},this.globalData={_mdf:!1,frameNum:-1,renderConfig:this.renderConfig},this.pendingElements=[],this.elements=[],this.threeDElements=[],this.destroyed=!1,this.camera=null,this.supports3d=!0,this.rendererType="html"}CVBaseElement.prototype={createElements:function createElements(){},initRendererElement:function initRendererElement(){},createContainerElements:function createContainerElements(){if(this.data.tt>=1){this.buffers=[];var t=this.globalData.canvasContext,e=assetLoader.createCanvas(t.canvas.width,t.canvas.height);this.buffers.push(e);var r=assetLoader.createCanvas(t.canvas.width,t.canvas.height);this.buffers.push(r),this.data.tt>=3&&!document._isProxy&&assetLoader.loadLumaCanvas()}this.canvasContext=this.globalData.canvasContext,this.transformCanvas=this.globalData.transformCanvas,this.renderableEffectsManager=new CVEffects(this),this.searchEffectTransforms()},createContent:function createContent(){},setBlendMode:function setBlendMode(){var t=this.globalData;if(t.blendMode!==this.data.bm){t.blendMode=this.data.bm;var e=getBlendMode(this.data.bm);t.canvasContext.globalCompositeOperation=e}},createRenderableComponents:function createRenderableComponents(){this.maskManager=new CVMaskElement(this.data,this),this.transformEffects=this.renderableEffectsManager.getEffects(effectTypes.TRANSFORM_EFFECT)},hideElement:function hideElement(){this.hidden||this.isInRange&&!this.isTransparent||(this.hidden=!0)},showElement:function showElement(){this.isInRange&&!this.isTransparent&&(this.hidden=!1,this._isFirstFrame=!0,this.maskManager._isFirstFrame=!0)},clearCanvas:function clearCanvas(t){t.clearRect(this.transformCanvas.tx,this.transformCanvas.ty,this.transformCanvas.w*this.transformCanvas.sx,this.transformCanvas.h*this.transformCanvas.sy)},prepareLayer:function prepareLayer(){if(this.data.tt>=1){var t=this.buffers[0].getContext("2d");this.clearCanvas(t),t.drawImage(this.canvasContext.canvas,0,0),this.currentTransform=this.canvasContext.getTransform(),this.canvasContext.setTransform(1,0,0,1,0,0),this.clearCanvas(this.canvasContext),this.canvasContext.setTransform(this.currentTransform)}},exitLayer:function exitLayer(){if(this.data.tt>=1){var t=this.buffers[1],e=t.getContext("2d");if(this.clearCanvas(e),e.drawImage(this.canvasContext.canvas,0,0),this.canvasContext.setTransform(1,0,0,1,0,0),this.clearCanvas(this.canvasContext),this.canvasContext.setTransform(this.currentTransform),this.comp.getElementById("tp"in this.data?this.data.tp:this.data.ind-1).renderFrame(!0),this.canvasContext.setTransform(1,0,0,1,0,0),this.data.tt>=3&&!document._isProxy){var r=assetLoader.getLumaCanvas(this.canvasContext.canvas);r.getContext("2d").drawImage(this.canvasContext.canvas,0,0),this.clearCanvas(this.canvasContext),this.canvasContext.drawImage(r,0,0)}this.canvasContext.globalCompositeOperation=operationsMap[this.data.tt],this.canvasContext.drawImage(t,0,0),this.canvasContext.globalCompositeOperation="destination-over",this.canvasContext.drawImage(this.buffers[0],0,0),this.canvasContext.setTransform(this.currentTransform),this.canvasContext.globalCompositeOperation="source-over"}},renderFrame:function renderFrame(t){if(!this.hidden&&!this.data.hd&&(1!==this.data.td||t)){this.renderTransform(),this.renderRenderable(),this.renderLocalTransform(),this.setBlendMode();var e=0===this.data.ty;this.prepareLayer(),this.globalData.renderer.save(e),this.globalData.renderer.ctxTransform(this.finalTransform.localMat.props),this.globalData.renderer.ctxOpacity(this.finalTransform.localOpacity),this.renderInnerContent(),this.globalData.renderer.restore(e),this.exitLayer(),this.maskManager.hasMasks&&this.globalData.renderer.restore(!0),this._isFirstFrame&&(this._isFirstFrame=!1)}},destroy:function destroy(){this.canvasContext=null,this.data=null,this.globalData=null,this.maskManager.destroy()},mHelper:new Matrix},CVBaseElement.prototype.hide=CVBaseElement.prototype.hideElement,CVBaseElement.prototype.show=CVBaseElement.prototype.showElement,CVShapeData.prototype.setAsAnimated=SVGShapeData.prototype.setAsAnimated,extendPrototype([BaseElement,TransformElement,CVBaseElement,IShapeElement,HierarchyElement,FrameElement,RenderableElement],CVShapeElement),CVShapeElement.prototype.initElement=RenderableDOMElement.prototype.initElement,CVShapeElement.prototype.transformHelper={opacity:1,_opMdf:!1},CVShapeElement.prototype.dashResetter=[],CVShapeElement.prototype.createContent=function(){this.searchShapes(this.shapesData,this.itemsData,this.prevViewData,!0,[])},CVShapeElement.prototype.createStyleElement=function(t,e){var r={data:t,type:t.ty,preTransforms:this.transformsManager.addTransformSequence(e),transforms:[],elements:[],closed:!0===t.hd},i={};if("fl"===t.ty||"st"===t.ty?(i.c=PropertyFactory.getProp(this,t.c,1,255,this),i.c.k||(r.co="rgb("+bmFloor(i.c.v[0])+","+bmFloor(i.c.v[1])+","+bmFloor(i.c.v[2])+")")):"gf"!==t.ty&&"gs"!==t.ty||(i.s=PropertyFactory.getProp(this,t.s,1,null,this),i.e=PropertyFactory.getProp(this,t.e,1,null,this),i.h=PropertyFactory.getProp(this,t.h||{k:0},0,.01,this),i.a=PropertyFactory.getProp(this,t.a||{k:0},0,degToRads,this),i.g=new GradientProperty(this,t.g,this)),i.o=PropertyFactory.getProp(this,t.o,0,.01,this),"st"===t.ty||"gs"===t.ty){if(r.lc=lineCapEnum[t.lc||2],r.lj=lineJoinEnum[t.lj||2],1==t.lj&&(r.ml=t.ml),i.w=PropertyFactory.getProp(this,t.w,0,null,this),i.w.k||(r.wi=i.w.v),t.d){var a=new DashProperty(this,t.d,"canvas",this);i.d=a,i.d.k||(r.da=i.d.dashArray,r.do=i.d.dashoffset[0])}}else r.r=2===t.r?"evenodd":"nonzero";return this.stylesList.push(r),i.style=r,i},CVShapeElement.prototype.createGroupElement=function(){return{it:[],prevViewData:[]}},CVShapeElement.prototype.createTransformElement=function(t){return{transform:{opacity:1,_opMdf:!1,key:this.transformsManager.getNewKey(),op:PropertyFactory.getProp(this,t.o,0,.01,this),mProps:TransformPropertyFactory.getTransformProperty(this,t,this)}}},CVShapeElement.prototype.createShapeElement=function(t){var e=new CVShapeData(this,t,this.stylesList,this.transformsManager);return this.shapes.push(e),this.addShapeToModifiers(e),e},CVShapeElement.prototype.reloadShapes=function(){var t;this._isFirstFrame=!0;var e=this.itemsData.length;for(t=0;t<e;t+=1)this.prevViewData[t]=this.itemsData[t];for(this.searchShapes(this.shapesData,this.itemsData,this.prevViewData,!0,[]),e=this.dynamicProperties.length,t=0;t<e;t+=1)this.dynamicProperties[t].getValue();this.renderModifiers(),this.transformsManager.processSequences(this._isFirstFrame)},CVShapeElement.prototype.addTransformToStyleList=function(t){var e,r=this.stylesList.length;for(e=0;e<r;e+=1)this.stylesList[e].closed||this.stylesList[e].transforms.push(t)},CVShapeElement.prototype.removeTransformFromStyleList=function(){var t,e=this.stylesList.length;for(t=0;t<e;t+=1)this.stylesList[t].closed||this.stylesList[t].transforms.pop()},CVShapeElement.prototype.closeStyles=function(t){var e,r=t.length;for(e=0;e<r;e+=1)t[e].closed=!0},CVShapeElement.prototype.searchShapes=function(t,e,r,i,a){var s,n,o,h,l,p,c=t.length-1,f=[],m=[],u=[].concat(a);for(s=c;s>=0;s-=1){if((h=this.searchProcessedElement(t[s]))?e[s]=r[h-1]:t[s]._shouldRender=i,"fl"===t[s].ty||"st"===t[s].ty||"gf"===t[s].ty||"gs"===t[s].ty)h?e[s].style.closed=!1:e[s]=this.createStyleElement(t[s],u),f.push(e[s].style);else if("gr"===t[s].ty){if(h)for(o=e[s].it.length,n=0;n<o;n+=1)e[s].prevViewData[n]=e[s].it[n];else e[s]=this.createGroupElement(t[s]);this.searchShapes(t[s].it,e[s].it,e[s].prevViewData,i,u)}else"tr"===t[s].ty?(h||(p=this.createTransformElement(t[s]),e[s]=p),u.push(e[s]),this.addTransformToStyleList(e[s])):"sh"===t[s].ty||"rc"===t[s].ty||"el"===t[s].ty||"sr"===t[s].ty?h||(e[s]=this.createShapeElement(t[s])):"tm"===t[s].ty||"rd"===t[s].ty||"pb"===t[s].ty||"zz"===t[s].ty||"op"===t[s].ty?(h?(l=e[s]).closed=!1:((l=ShapeModifiers.getModifier(t[s].ty)).init(this,t[s]),e[s]=l,this.shapeModifiers.push(l)),m.push(l)):"rp"===t[s].ty&&(h?(l=e[s]).closed=!0:(l=ShapeModifiers.getModifier(t[s].ty),e[s]=l,l.init(this,t,s,e),this.shapeModifiers.push(l),i=!1),m.push(l));this.addProcessedElement(t[s],s+1)}for(this.removeTransformFromStyleList(),this.closeStyles(f),c=m.length,s=0;s<c;s+=1)m[s].closed=!0},CVShapeElement.prototype.renderInnerContent=function(){this.transformHelper.opacity=1,this.transformHelper._opMdf=!1,this.renderModifiers(),this.transformsManager.processSequences(this._isFirstFrame),this.renderShape(this.transformHelper,this.shapesData,this.itemsData,!0)},CVShapeElement.prototype.renderShapeTransform=function(t,e){(t._opMdf||e.op._mdf||this._isFirstFrame)&&(e.opacity=t.opacity,e.opacity*=e.op.v,e._opMdf=!0)},CVShapeElement.prototype.drawLayer=function(){var t,e,r,i,a,s,n,o,h,l=this.stylesList.length,p=this.globalData.renderer,c=this.globalData.canvasContext;for(t=0;t<l;t+=1)if(("st"!==(o=(h=this.stylesList[t]).type)&&"gs"!==o||0!==h.wi)&&h.data._shouldRender&&0!==h.coOp&&0!==this.globalData.currentGlobalAlpha){for(p.save(),s=h.elements,"st"===o||"gs"===o?(p.ctxStrokeStyle("st"===o?h.co:h.grd),p.ctxLineWidth(h.wi),p.ctxLineCap(h.lc),p.ctxLineJoin(h.lj),p.ctxMiterLimit(h.ml||0)):p.ctxFillStyle("fl"===o?h.co:h.grd),p.ctxOpacity(h.coOp),"st"!==o&&"gs"!==o&&c.beginPath(),p.ctxTransform(h.preTransforms.finalTransform.props),r=s.length,e=0;e<r;e+=1){for("st"!==o&&"gs"!==o||(c.beginPath(),h.da&&(c.setLineDash(h.da),c.lineDashOffset=h.do)),a=(n=s[e].trNodes).length,i=0;i<a;i+=1)"m"===n[i].t?c.moveTo(n[i].p[0],n[i].p[1]):"c"===n[i].t?c.bezierCurveTo(n[i].pts[0],n[i].pts[1],n[i].pts[2],n[i].pts[3],n[i].pts[4],n[i].pts[5]):c.closePath();"st"!==o&&"gs"!==o||(p.ctxStroke(),h.da&&c.setLineDash(this.dashResetter))}"st"!==o&&"gs"!==o&&this.globalData.renderer.ctxFill(h.r),p.restore()}},CVShapeElement.prototype.renderShape=function(t,e,r,i){var a,s;for(s=t,a=e.length-1;a>=0;a-=1)"tr"===e[a].ty?(s=r[a].transform,this.renderShapeTransform(t,s)):"sh"===e[a].ty||"el"===e[a].ty||"rc"===e[a].ty||"sr"===e[a].ty?this.renderPath(e[a],r[a]):"fl"===e[a].ty?this.renderFill(e[a],r[a],s):"st"===e[a].ty?this.renderStroke(e[a],r[a],s):"gf"===e[a].ty||"gs"===e[a].ty?this.renderGradientFill(e[a],r[a],s):"gr"===e[a].ty?this.renderShape(s,e[a].it,r[a].it):e[a].ty;i&&this.drawLayer()},CVShapeElement.prototype.renderStyledShape=function(t,e){if(this._isFirstFrame||e._mdf||t.transforms._mdf){var r,i,a,s=t.trNodes,n=e.paths,o=n._length;s.length=0;var h=t.transforms.finalTransform;for(a=0;a<o;a+=1){var l=n.shapes[a];if(l&&l.v){for(i=l._length,r=1;r<i;r+=1)1===r&&s.push({t:"m",p:h.applyToPointArray(l.v[0][0],l.v[0][1],0)}),s.push({t:"c",pts:h.applyToTriplePoints(l.o[r-1],l.i[r],l.v[r])});1===i&&s.push({t:"m",p:h.applyToPointArray(l.v[0][0],l.v[0][1],0)}),l.c&&i&&(s.push({t:"c",pts:h.applyToTriplePoints(l.o[r-1],l.i[0],l.v[0])}),s.push({t:"z"}))}}t.trNodes=s}},CVShapeElement.prototype.renderPath=function(t,e){if(!0!==t.hd&&t._shouldRender){var r,i=e.styledShapes.length;for(r=0;r<i;r+=1)this.renderStyledShape(e.styledShapes[r],e.sh)}},CVShapeElement.prototype.renderFill=function(t,e,r){var i=e.style;(e.c._mdf||this._isFirstFrame)&&(i.co="rgb("+bmFloor(e.c.v[0])+","+bmFloor(e.c.v[1])+","+bmFloor(e.c.v[2])+")"),(e.o._mdf||r._opMdf||this._isFirstFrame)&&(i.coOp=e.o.v*r.opacity)},CVShapeElement.prototype.renderGradientFill=function(t,e,r){var i,a=e.style;if(!a.grd||e.g._mdf||e.s._mdf||e.e._mdf||1!==t.t&&(e.h._mdf||e.a._mdf)){var s,n=this.globalData.canvasContext,o=e.s.v,h=e.e.v;if(1===t.t)i=n.createLinearGradient(o[0],o[1],h[0],h[1]);else{var l=Math.sqrt(Math.pow(o[0]-h[0],2)+Math.pow(o[1]-h[1],2)),p=Math.atan2(h[1]-o[1],h[0]-o[0]),c=e.h.v;c>=1?c=.99:c<=-1&&(c=-.99);var f=l*c,m=Math.cos(p+e.a.v)*f+o[0],u=Math.sin(p+e.a.v)*f+o[1];i=n.createRadialGradient(m,u,0,o[0],o[1],l)}var d=t.g.p,y=e.g.c,g=1;for(s=0;s<d;s+=1)e.g._hasOpacity&&e.g._collapsable&&(g=e.g.o[2*s+1]),i.addColorStop(y[4*s]/100,"rgba("+y[4*s+1]+","+y[4*s+2]+","+y[4*s+3]+","+g+")");a.grd=i}a.coOp=e.o.v*r.opacity},CVShapeElement.prototype.renderStroke=function(t,e,r){var i=e.style,a=e.d;a&&(a._mdf||this._isFirstFrame)&&(i.da=a.dashArray,i.do=a.dashoffset[0]),(e.c._mdf||this._isFirstFrame)&&(i.co="rgb("+bmFloor(e.c.v[0])+","+bmFloor(e.c.v[1])+","+bmFloor(e.c.v[2])+")"),(e.o._mdf||r._opMdf||this._isFirstFrame)&&(i.coOp=e.o.v*r.opacity),(e.w._mdf||this._isFirstFrame)&&(i.wi=e.w.v)},CVShapeElement.prototype.destroy=function(){this.shapesData=null,this.globalData=null,this.canvasContext=null,this.stylesList.length=0,this.itemsData.length=0},extendPrototype([BaseElement,TransformElement,CVBaseElement,HierarchyElement,FrameElement,RenderableElement,ITextElement],CVTextElement),CVTextElement.prototype.tHelper=createTag("canvas").getContext("2d"),CVTextElement.prototype.buildNewText=function(){var t=this.textProperty.currentData;this.renderedLetters=createSizedArray(t.l?t.l.length:0);var e=!1;t.fc?(e=!0,this.values.fill=this.buildColor(t.fc)):this.values.fill="rgba(0,0,0,0)",this.fill=e;var r=!1;t.sc&&(r=!0,this.values.stroke=this.buildColor(t.sc),this.values.sWidth=t.sw);var i,a,s,n,o,h,l,p,c,f,m,u,d=this.globalData.fontManager.getFontByName(t.f),y=t.l,g=this.mHelper;this.stroke=r,this.values.fValue=t.finalSize+"px "+this.globalData.fontManager.getFontByName(t.f).fFamily,a=t.finalText.length;var v=this.data.singleShape,b=.001*t.tr*t.finalSize,P=0,x=0,S=!0,E=0;for(i=0;i<a;i+=1){n=(s=this.globalData.fontManager.getCharData(t.finalText[i],d.fStyle,this.globalData.fontManager.getFontByName(t.f).fFamily))&&s.data||{},g.reset(),v&&y[i].n&&(P=-b,x+=t.yOffset,x+=S?1:0,S=!1),c=(l=n.shapes?n.shapes[0].it:[]).length,g.scale(t.finalSize/100,t.finalSize/100),v&&this.applyTextPropertiesToMatrix(t,g,y[i].line,P,x),m=createSizedArray(c-1);var _=0;for(p=0;p<c;p+=1)if("sh"===l[p].ty){for(h=l[p].ks.k.i.length,f=l[p].ks.k,u=[],o=1;o<h;o+=1)1===o&&u.push(g.applyToX(f.v[0][0],f.v[0][1],0),g.applyToY(f.v[0][0],f.v[0][1],0)),u.push(g.applyToX(f.o[o-1][0],f.o[o-1][1],0),g.applyToY(f.o[o-1][0],f.o[o-1][1],0),g.applyToX(f.i[o][0],f.i[o][1],0),g.applyToY(f.i[o][0],f.i[o][1],0),g.applyToX(f.v[o][0],f.v[o][1],0),g.applyToY(f.v[o][0],f.v[o][1],0));u.push(g.applyToX(f.o[o-1][0],f.o[o-1][1],0),g.applyToY(f.o[o-1][0],f.o[o-1][1],0),g.applyToX(f.i[0][0],f.i[0][1],0),g.applyToY(f.i[0][0],f.i[0][1],0),g.applyToX(f.v[0][0],f.v[0][1],0),g.applyToY(f.v[0][0],f.v[0][1],0)),m[_]=u,_+=1}v&&(P+=y[i].l,P+=b),this.textSpans[E]?this.textSpans[E].elem=m:this.textSpans[E]={elem:m},E+=1}},CVTextElement.prototype.renderInnerContent=function(){var t,e,r,i,a,s;this.validateText(),this.canvasContext.font=this.values.fValue,this.globalData.renderer.ctxLineCap("butt"),this.globalData.renderer.ctxLineJoin("miter"),this.globalData.renderer.ctxMiterLimit(4),this.data.singleShape||this.textAnimator.getMeasures(this.textProperty.currentData,this.lettersChangedFlag);var n,o=this.textAnimator.renderedLetters,h=this.textProperty.currentData.l;e=h.length;var l,p,c=null,f=null,m=null,u=this.globalData.renderer;for(t=0;t<e;t+=1)if(!h[t].n){if((n=o[t])&&(u.save(),u.ctxTransform(n.p),u.ctxOpacity(n.o)),this.fill){for(n&&n.fc?c!==n.fc&&(u.ctxFillStyle(n.fc),c=n.fc):c!==this.values.fill&&(c=this.values.fill,u.ctxFillStyle(this.values.fill)),i=(l=this.textSpans[t].elem).length,this.globalData.canvasContext.beginPath(),r=0;r<i;r+=1)for(s=(p=l[r]).length,this.globalData.canvasContext.moveTo(p[0],p[1]),a=2;a<s;a+=6)this.globalData.canvasContext.bezierCurveTo(p[a],p[a+1],p[a+2],p[a+3],p[a+4],p[a+5]);this.globalData.canvasContext.closePath(),u.ctxFill()}if(this.stroke){for(n&&n.sw?m!==n.sw&&(m=n.sw,u.ctxLineWidth(n.sw)):m!==this.values.sWidth&&(m=this.values.sWidth,u.ctxLineWidth(this.values.sWidth)),n&&n.sc?f!==n.sc&&(f=n.sc,u.ctxStrokeStyle(n.sc)):f!==this.values.stroke&&(f=this.values.stroke,u.ctxStrokeStyle(this.values.stroke)),i=(l=this.textSpans[t].elem).length,this.globalData.canvasContext.beginPath(),r=0;r<i;r+=1)for(s=(p=l[r]).length,this.globalData.canvasContext.moveTo(p[0],p[1]),a=2;a<s;a+=6)this.globalData.canvasContext.bezierCurveTo(p[a],p[a+1],p[a+2],p[a+3],p[a+4],p[a+5]);this.globalData.canvasContext.closePath(),u.ctxStroke()}n&&this.globalData.renderer.restore()}},extendPrototype([BaseElement,TransformElement,CVBaseElement,HierarchyElement,FrameElement,RenderableElement],CVImageElement),CVImageElement.prototype.initElement=SVGShapeElement.prototype.initElement,CVImageElement.prototype.prepareFrame=IImageElement.prototype.prepareFrame,CVImageElement.prototype.createContent=function(){if(this.img.width&&(this.assetData.w!==this.img.width||this.assetData.h!==this.img.height)){var t=createTag("canvas");t.width=this.assetData.w,t.height=this.assetData.h;var e,r,i=t.getContext("2d"),a=this.img.width,s=this.img.height,n=a/s,o=this.assetData.w/this.assetData.h,h=this.assetData.pr||this.globalData.renderConfig.imagePreserveAspectRatio;n>o&&"xMidYMid slice"===h||n<o&&"xMidYMid slice"!==h?e=(r=s)*o:r=(e=a)/o,i.drawImage(this.img,(a-e)/2,(s-r)/2,e,r,0,0,this.assetData.w,this.assetData.h),this.img=t}},CVImageElement.prototype.renderInnerContent=function(){this.canvasContext.drawImage(this.img,0,0)},CVImageElement.prototype.destroy=function(){this.img=null},extendPrototype([BaseElement,TransformElement,CVBaseElement,HierarchyElement,FrameElement,RenderableElement],CVSolidElement),CVSolidElement.prototype.initElement=SVGShapeElement.prototype.initElement,CVSolidElement.prototype.prepareFrame=IImageElement.prototype.prepareFrame,CVSolidElement.prototype.renderInnerContent=function(){this.globalData.renderer.ctxFillStyle(this.data.sc),this.globalData.renderer.ctxFillRect(0,0,this.data.sw,this.data.sh)},extendPrototype([BaseRenderer],CanvasRendererBase),CanvasRendererBase.prototype.createShape=function(t){return new CVShapeElement(t,this.globalData,this)},CanvasRendererBase.prototype.createText=function(t){return new CVTextElement(t,this.globalData,this)},CanvasRendererBase.prototype.createImage=function(t){return new CVImageElement(t,this.globalData,this)},CanvasRendererBase.prototype.createSolid=function(t){return new CVSolidElement(t,this.globalData,this)},CanvasRendererBase.prototype.createNull=SVGRenderer.prototype.createNull,CanvasRendererBase.prototype.ctxTransform=function(t){1===t[0]&&0===t[1]&&0===t[4]&&1===t[5]&&0===t[12]&&0===t[13]||this.canvasContext.transform(t[0],t[1],t[4],t[5],t[12],t[13])},CanvasRendererBase.prototype.ctxOpacity=function(t){this.canvasContext.globalAlpha*=t<0?0:t},CanvasRendererBase.prototype.ctxFillStyle=function(t){this.canvasContext.fillStyle=t},CanvasRendererBase.prototype.ctxStrokeStyle=function(t){this.canvasContext.strokeStyle=t},CanvasRendererBase.prototype.ctxLineWidth=function(t){this.canvasContext.lineWidth=t},CanvasRendererBase.prototype.ctxLineCap=function(t){this.canvasContext.lineCap=t},CanvasRendererBase.prototype.ctxLineJoin=function(t){this.canvasContext.lineJoin=t},CanvasRendererBase.prototype.ctxMiterLimit=function(t){this.canvasContext.miterLimit=t},CanvasRendererBase.prototype.ctxFill=function(t){this.canvasContext.fill(t)},CanvasRendererBase.prototype.ctxFillRect=function(t,e,r,i){this.canvasContext.fillRect(t,e,r,i)},CanvasRendererBase.prototype.ctxStroke=function(){this.canvasContext.stroke()},CanvasRendererBase.prototype.reset=function(){this.renderConfig.clearCanvas?this.contextData.reset():this.canvasContext.restore()},CanvasRendererBase.prototype.save=function(){this.canvasContext.save()},CanvasRendererBase.prototype.restore=function(t){this.renderConfig.clearCanvas?(t&&(this.globalData.blendMode="source-over"),this.contextData.restore(t)):this.canvasContext.restore()},CanvasRendererBase.prototype.configAnimation=function(t){if(this.animationItem.wrapper){this.animationItem.container=createTag("canvas");var e=this.animationItem.container.style;e.width="100%",e.height="100%";var r="0px 0px 0px";e.transformOrigin=r,e.mozTransformOrigin=r,e.webkitTransformOrigin=r,e["-webkit-transform"]=r,e.contentVisibility=this.renderConfig.contentVisibility,this.animationItem.wrapper.appendChild(this.animationItem.container),this.canvasContext=this.animationItem.container.getContext("2d"),this.renderConfig.className&&this.animationItem.container.setAttribute("class",this.renderConfig.className),this.renderConfig.id&&this.animationItem.container.setAttribute("id",this.renderConfig.id)}else this.canvasContext=this.renderConfig.context;this.contextData.setContext(this.canvasContext),this.data=t,this.layers=t.layers,this.transformCanvas={w:t.w,h:t.h,sx:0,sy:0,tx:0,ty:0},this.setupGlobalData(t,document.body),this.globalData.canvasContext=this.canvasContext,this.globalData.renderer=this,this.globalData.isDashed=!1,this.globalData.progressiveLoad=this.renderConfig.progressiveLoad,this.globalData.transformCanvas=this.transformCanvas,this.elements=createSizedArray(t.layers.length),this.updateContainerSize()},CanvasRendererBase.prototype.updateContainerSize=function(t,e){var r,i,a,s;if(this.reset(),t?(r=t,i=e,this.canvasContext.canvas.width=r,this.canvasContext.canvas.height=i):(this.animationItem.wrapper&&this.animationItem.container?(r=this.animationItem.wrapper.offsetWidth,i=this.animationItem.wrapper.offsetHeight):(r=this.canvasContext.canvas.width,i=this.canvasContext.canvas.height),this.canvasContext.canvas.width=r*this.renderConfig.dpr,this.canvasContext.canvas.height=i*this.renderConfig.dpr),-1!==this.renderConfig.preserveAspectRatio.indexOf("meet")||-1!==this.renderConfig.preserveAspectRatio.indexOf("slice")){var n=this.renderConfig.preserveAspectRatio.split(" "),o=n[1]||"meet",h=n[0]||"xMidYMid",l=h.substr(0,4),p=h.substr(4);a=r/i,(s=this.transformCanvas.w/this.transformCanvas.h)>a&&"meet"===o||s<a&&"slice"===o?(this.transformCanvas.sx=r/(this.transformCanvas.w/this.renderConfig.dpr),this.transformCanvas.sy=r/(this.transformCanvas.w/this.renderConfig.dpr)):(this.transformCanvas.sx=i/(this.transformCanvas.h/this.renderConfig.dpr),this.transformCanvas.sy=i/(this.transformCanvas.h/this.renderConfig.dpr)),this.transformCanvas.tx="xMid"===l&&(s<a&&"meet"===o||s>a&&"slice"===o)?(r-this.transformCanvas.w*(i/this.transformCanvas.h))/2*this.renderConfig.dpr:"xMax"===l&&(s<a&&"meet"===o||s>a&&"slice"===o)?(r-this.transformCanvas.w*(i/this.transformCanvas.h))*this.renderConfig.dpr:0,this.transformCanvas.ty="YMid"===p&&(s>a&&"meet"===o||s<a&&"slice"===o)?(i-this.transformCanvas.h*(r/this.transformCanvas.w))/2*this.renderConfig.dpr:"YMax"===p&&(s>a&&"meet"===o||s<a&&"slice"===o)?(i-this.transformCanvas.h*(r/this.transformCanvas.w))*this.renderConfig.dpr:0}else"none"===this.renderConfig.preserveAspectRatio?(this.transformCanvas.sx=r/(this.transformCanvas.w/this.renderConfig.dpr),this.transformCanvas.sy=i/(this.transformCanvas.h/this.renderConfig.dpr),this.transformCanvas.tx=0,this.transformCanvas.ty=0):(this.transformCanvas.sx=this.renderConfig.dpr,this.transformCanvas.sy=this.renderConfig.dpr,this.transformCanvas.tx=0,this.transformCanvas.ty=0);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],this.ctxTransform(this.transformCanvas.props),this.canvasContext.beginPath(),this.canvasContext.rect(0,0,this.transformCanvas.w,this.transformCanvas.h),this.canvasContext.closePath(),this.canvasContext.clip(),this.renderFrame(this.renderedFrame,!0)},CanvasRendererBase.prototype.destroy=function(){var t;for(this.renderConfig.clearCanvas&&this.animationItem.wrapper&&(this.animationItem.wrapper.innerText=""),t=(this.layers?this.layers.length:0)-1;t>=0;t-=1)this.elements[t]&&this.elements[t].destroy&&this.elements[t].destroy();this.elements.length=0,this.globalData.canvasContext=null,this.animationItem.container=null,this.destroyed=!0},CanvasRendererBase.prototype.renderFrame=function(t,e){if((this.renderedFrame!==t||!0!==this.renderConfig.clearCanvas||e)&&!this.destroyed&&-1!==t){var r;this.renderedFrame=t,this.globalData.frameNum=t-this.animationItem._isFirstFrame,this.globalData.frameId+=1,this.globalData._mdf=!this.renderConfig.clearCanvas||e,this.globalData.projectInterface.currentFrame=t;var i=this.layers.length;for(this.completeLayers||this.checkLayers(t),r=i-1;r>=0;r-=1)(this.completeLayers||this.elements[r])&&this.elements[r].prepareFrame(t-this.layers[r].st);if(this.globalData._mdf){for(!0===this.renderConfig.clearCanvas?this.canvasContext.clearRect(0,0,this.transformCanvas.w,this.transformCanvas.h):this.save(),r=i-1;r>=0;r-=1)(this.completeLayers||this.elements[r])&&this.elements[r].renderFrame();!0!==this.renderConfig.clearCanvas&&this.restore()}}},CanvasRendererBase.prototype.buildItem=function(t){var e=this.elements;if(!e[t]&&99!==this.layers[t].ty){var r=this.createItem(this.layers[t],this,this.globalData);e[t]=r,r.initExpressions()}},CanvasRendererBase.prototype.checkPendingElements=function(){for(;this.pendingElements.length;)this.pendingElements.pop().checkParenting()},CanvasRendererBase.prototype.hide=function(){this.animationItem.container.style.display="none"},CanvasRendererBase.prototype.show=function(){this.animationItem.container.style.display="block"},CVContextData.prototype.duplicate=function(){var t=2*this._length,e=0;for(e=this._length;e<t;e+=1)this.stack[e]=new CanvasContext;this._length=t},CVContextData.prototype.reset=function(){this.cArrPos=0,this.cTr.reset(),this.stack[this.cArrPos].opacity=1},CVContextData.prototype.restore=function(t){this.cArrPos-=1;var e,r=this.stack[this.cArrPos],i=r.transform,a=this.cTr.props;for(e=0;e<16;e+=1)a[e]=i[e];if(t){this.nativeContext.restore();var s=this.stack[this.cArrPos+1];this.appliedFillStyle=s.fillStyle,this.appliedStrokeStyle=s.strokeStyle,this.appliedLineWidth=s.lineWidth,this.appliedLineCap=s.lineCap,this.appliedLineJoin=s.lineJoin,this.appliedMiterLimit=s.miterLimit}this.nativeContext.setTransform(i[0],i[1],i[4],i[5],i[12],i[13]),(t||-1!==r.opacity&&this.currentOpacity!==r.opacity)&&(this.nativeContext.globalAlpha=r.opacity,this.currentOpacity=r.opacity),this.currentFillStyle=r.fillStyle,this.currentStrokeStyle=r.strokeStyle,this.currentLineWidth=r.lineWidth,this.currentLineCap=r.lineCap,this.currentLineJoin=r.lineJoin,this.currentMiterLimit=r.miterLimit},CVContextData.prototype.save=function(t){t&&this.nativeContext.save();var e=this.cTr.props;this._length<=this.cArrPos&&this.duplicate();var r,i=this.stack[this.cArrPos];for(r=0;r<16;r+=1)i.transform[r]=e[r];this.cArrPos+=1;var a=this.stack[this.cArrPos];a.opacity=i.opacity,a.fillStyle=i.fillStyle,a.strokeStyle=i.strokeStyle,a.lineWidth=i.lineWidth,a.lineCap=i.lineCap,a.lineJoin=i.lineJoin,a.miterLimit=i.miterLimit},CVContextData.prototype.setOpacity=function(t){this.stack[this.cArrPos].opacity=t},CVContextData.prototype.setContext=function(t){this.nativeContext=t},CVContextData.prototype.fillStyle=function(t){this.stack[this.cArrPos].fillStyle!==t&&(this.currentFillStyle=t,this.stack[this.cArrPos].fillStyle=t)},CVContextData.prototype.strokeStyle=function(t){this.stack[this.cArrPos].strokeStyle!==t&&(this.currentStrokeStyle=t,this.stack[this.cArrPos].strokeStyle=t)},CVContextData.prototype.lineWidth=function(t){this.stack[this.cArrPos].lineWidth!==t&&(this.currentLineWidth=t,this.stack[this.cArrPos].lineWidth=t)},CVContextData.prototype.lineCap=function(t){this.stack[this.cArrPos].lineCap!==t&&(this.currentLineCap=t,this.stack[this.cArrPos].lineCap=t)},CVContextData.prototype.lineJoin=function(t){this.stack[this.cArrPos].lineJoin!==t&&(this.currentLineJoin=t,this.stack[this.cArrPos].lineJoin=t)},CVContextData.prototype.miterLimit=function(t){this.stack[this.cArrPos].miterLimit!==t&&(this.currentMiterLimit=t,this.stack[this.cArrPos].miterLimit=t)},CVContextData.prototype.transform=function(t){this.transformMat.cloneFromProps(t);var e=this.cTr;this.transformMat.multiply(e),e.cloneFromProps(this.transformMat.props);var r=e.props;this.nativeContext.setTransform(r[0],r[1],r[4],r[5],r[12],r[13])},CVContextData.prototype.opacity=function(t){var e=this.stack[this.cArrPos].opacity;e*=t<0?0:t,this.stack[this.cArrPos].opacity!==e&&(this.currentOpacity!==t&&(this.nativeContext.globalAlpha=t,this.currentOpacity=t),this.stack[this.cArrPos].opacity=e)},CVContextData.prototype.fill=function(t){this.appliedFillStyle!==this.currentFillStyle&&(this.appliedFillStyle=this.currentFillStyle,this.nativeContext.fillStyle=this.appliedFillStyle),this.nativeContext.fill(t)},CVContextData.prototype.fillRect=function(t,e,r,i){this.appliedFillStyle!==this.currentFillStyle&&(this.appliedFillStyle=this.currentFillStyle,this.nativeContext.fillStyle=this.appliedFillStyle),this.nativeContext.fillRect(t,e,r,i)},CVContextData.prototype.stroke=function(){this.appliedStrokeStyle!==this.currentStrokeStyle&&(this.appliedStrokeStyle=this.currentStrokeStyle,this.nativeContext.strokeStyle=this.appliedStrokeStyle),this.appliedLineWidth!==this.currentLineWidth&&(this.appliedLineWidth=this.currentLineWidth,this.nativeContext.lineWidth=this.appliedLineWidth),this.appliedLineCap!==this.currentLineCap&&(this.appliedLineCap=this.currentLineCap,this.nativeContext.lineCap=this.appliedLineCap),this.appliedLineJoin!==this.currentLineJoin&&(this.appliedLineJoin=this.currentLineJoin,this.nativeContext.lineJoin=this.appliedLineJoin),this.appliedMiterLimit!==this.currentMiterLimit&&(this.appliedMiterLimit=this.currentMiterLimit,this.nativeContext.miterLimit=this.appliedMiterLimit),this.nativeContext.stroke()},extendPrototype([CanvasRendererBase,ICompElement,CVBaseElement],CVCompElement),CVCompElement.prototype.renderInnerContent=function(){var t,e=this.canvasContext;for(e.beginPath(),e.moveTo(0,0),e.lineTo(this.data.w,0),e.lineTo(this.data.w,this.data.h),e.lineTo(0,this.data.h),e.lineTo(0,0),e.clip(),t=this.layers.length-1;t>=0;t-=1)(this.completeLayers||this.elements[t])&&this.elements[t].renderFrame()},CVCompElement.prototype.destroy=function(){var t;for(t=this.layers.length-1;t>=0;t-=1)this.elements[t]&&this.elements[t].destroy();this.layers=null,this.elements=null},CVCompElement.prototype.createComp=function(t){return new CVCompElement(t,this.globalData,this)},extendPrototype([CanvasRendererBase],CanvasRenderer),CanvasRenderer.prototype.createComp=function(t){return new CVCompElement(t,this.globalData,this)},HBaseElement.prototype={checkBlendMode:function checkBlendMode(){},initRendererElement:function initRendererElement(){this.baseElement=createTag(this.data.tg||"div"),this.data.hasMask?(this.svgElement=createNS("svg"),this.layerElement=createNS("g"),this.maskedElement=this.layerElement,this.svgElement.appendChild(this.layerElement),this.baseElement.appendChild(this.svgElement)):this.layerElement=this.baseElement,styleDiv(this.baseElement)},createContainerElements:function createContainerElements(){this.renderableEffectsManager=new CVEffects(this),this.transformedElement=this.baseElement,this.maskedElement=this.layerElement,this.data.ln&&this.layerElement.setAttribute("id",this.data.ln),this.data.cl&&this.layerElement.setAttribute("class",this.data.cl),0!==this.data.bm&&this.setBlendMode()},renderElement:function renderElement(){var t=this.transformedElement?this.transformedElement.style:{};if(this.finalTransform._matMdf){var e=this.finalTransform.mat.toCSS();t.transform=e,t.webkitTransform=e}this.finalTransform._opMdf&&(t.opacity=this.finalTransform.mProp.o.v)},renderFrame:function renderFrame(){this.data.hd||this.hidden||(this.renderTransform(),this.renderRenderable(),this.renderElement(),this.renderInnerContent(),this._isFirstFrame&&(this._isFirstFrame=!1))},destroy:function destroy(){this.layerElement=null,this.transformedElement=null,this.matteElement&&(this.matteElement=null),this.maskManager&&(this.maskManager.destroy(),this.maskManager=null)},createRenderableComponents:function createRenderableComponents(){this.maskManager=new MaskElement(this.data,this,this.globalData)},addEffects:function addEffects(){},setMatte:function setMatte(){}},HBaseElement.prototype.getBaseElement=SVGBaseElement.prototype.getBaseElement,HBaseElement.prototype.destroyBaseElement=HBaseElement.prototype.destroy,HBaseElement.prototype.buildElementParenting=BaseRenderer.prototype.buildElementParenting,extendPrototype([BaseElement,TransformElement,HBaseElement,HierarchyElement,FrameElement,RenderableDOMElement],HSolidElement),HSolidElement.prototype.createContent=function(){var t;this.data.hasMask?((t=createNS("rect")).setAttribute("width",this.data.sw),t.setAttribute("height",this.data.sh),t.setAttribute("fill",this.data.sc),this.svgElement.setAttribute("width",this.data.sw),this.svgElement.setAttribute("height",this.data.sh)):((t=createTag("div")).style.width=this.data.sw+"px",t.style.height=this.data.sh+"px",t.style.backgroundColor=this.data.sc),this.layerElement.appendChild(t)},extendPrototype([BaseElement,TransformElement,HSolidElement,SVGShapeElement,HBaseElement,HierarchyElement,FrameElement,RenderableElement],HShapeElement),HShapeElement.prototype._renderShapeFrame=HShapeElement.prototype.renderInnerContent,HShapeElement.prototype.createContent=function(){var t;if(this.baseElement.style.fontSize=0,this.data.hasMask)this.layerElement.appendChild(this.shapesContainer),t=this.svgElement;else{t=createNS("svg");var e=this.comp.data?this.comp.data:this.globalData.compSize;t.setAttribute("width",e.w),t.setAttribute("height",e.h),t.appendChild(this.shapesContainer),this.layerElement.appendChild(t)}this.searchShapes(this.shapesData,this.itemsData,this.prevViewData,this.shapesContainer,0,[],!0),this.filterUniqueShapes(),this.shapeCont=t},HShapeElement.prototype.getTransformedPoint=function(t,e){var r,i=t.length;for(r=0;r<i;r+=1)e=t[r].mProps.v.applyToPointArray(e[0],e[1],0);return e},HShapeElement.prototype.calculateShapeBoundingBox=function(t,e){var r,i,a,s,n,o=t.sh.v,h=t.transformers,l=o._length;if(!(l<=1)){for(r=0;r<l-1;r+=1)i=this.getTransformedPoint(h,o.v[r]),a=this.getTransformedPoint(h,o.o[r]),s=this.getTransformedPoint(h,o.i[r+1]),n=this.getTransformedPoint(h,o.v[r+1]),this.checkBounds(i,a,s,n,e);o.c&&(i=this.getTransformedPoint(h,o.v[r]),a=this.getTransformedPoint(h,o.o[r]),s=this.getTransformedPoint(h,o.i[0]),n=this.getTransformedPoint(h,o.v[0]),this.checkBounds(i,a,s,n,e))}},HShapeElement.prototype.checkBounds=function(t,e,r,i,a){this.getBoundsOfCurve(t,e,r,i);var s=this.shapeBoundingBox;a.x=bmMin(s.left,a.x),a.xMax=bmMax(s.right,a.xMax),a.y=bmMin(s.top,a.y),a.yMax=bmMax(s.bottom,a.yMax)},HShapeElement.prototype.shapeBoundingBox={left:0,right:0,top:0,bottom:0},HShapeElement.prototype.tempBoundingBox={x:0,xMax:0,y:0,yMax:0,width:0,height:0},HShapeElement.prototype.getBoundsOfCurve=function(t,e,r,i){for(var a,s,n,o,h,l,p,c=[[t[0],i[0]],[t[1],i[1]]],f=0;f<2;++f)s=6*t[f]-12*e[f]+6*r[f],a=-3*t[f]+9*e[f]-9*r[f]+3*i[f],n=3*e[f]-3*t[f],s|=0,n|=0,0==(a|=0)&&0===s||(0===a?(o=-n/s)>0&&o<1&&c[f].push(this.calculateF(o,t,e,r,i,f)):(h=s*s-4*n*a)>=0&&((l=(-s+bmSqrt(h))/(2*a))>0&&l<1&&c[f].push(this.calculateF(l,t,e,r,i,f)),(p=(-s-bmSqrt(h))/(2*a))>0&&p<1&&c[f].push(this.calculateF(p,t,e,r,i,f))));this.shapeBoundingBox.left=bmMin.apply(null,c[0]),this.shapeBoundingBox.top=bmMin.apply(null,c[1]),this.shapeBoundingBox.right=bmMax.apply(null,c[0]),this.shapeBoundingBox.bottom=bmMax.apply(null,c[1])},HShapeElement.prototype.calculateF=function(t,e,r,i,a,s){return bmPow(1-t,3)*e[s]+3*bmPow(1-t,2)*t*r[s]+3*(1-t)*bmPow(t,2)*i[s]+bmPow(t,3)*a[s]},HShapeElement.prototype.calculateBoundingBox=function(t,e){var r,i=t.length;for(r=0;r<i;r+=1)t[r]&&t[r].sh?this.calculateShapeBoundingBox(t[r],e):t[r]&&t[r].it?this.calculateBoundingBox(t[r].it,e):t[r]&&t[r].style&&t[r].w&&this.expandStrokeBoundingBox(t[r].w,e)},HShapeElement.prototype.expandStrokeBoundingBox=function(t,e){var r=0;if(t.keyframes){for(var i=0;i<t.keyframes.length;i+=1){var a=t.keyframes[i].s;a>r&&(r=a)}r*=t.mult}else r=t.v*t.mult;e.x-=r,e.xMax+=r,e.y-=r,e.yMax+=r},HShapeElement.prototype.currentBoxContains=function(t){return this.currentBBox.x<=t.x&&this.currentBBox.y<=t.y&&this.currentBBox.width+this.currentBBox.x>=t.x+t.width&&this.currentBBox.height+this.currentBBox.y>=t.y+t.height},HShapeElement.prototype.renderInnerContent=function(){if(this._renderShapeFrame(),!this.hidden&&(this._isFirstFrame||this._mdf)){var t=this.tempBoundingBox,e=999999;if(t.x=e,t.xMax=-e,t.y=e,t.yMax=-e,this.calculateBoundingBox(this.itemsData,t),t.width=t.xMax<t.x?0:t.xMax-t.x,t.height=t.yMax<t.y?0:t.yMax-t.y,this.currentBoxContains(t))return;var r=!1;if(this.currentBBox.w!==t.width&&(this.currentBBox.w=t.width,this.shapeCont.setAttribute("width",t.width),r=!0),this.currentBBox.h!==t.height&&(this.currentBBox.h=t.height,this.shapeCont.setAttribute("height",t.height),r=!0),r||this.currentBBox.x!==t.x||this.currentBBox.y!==t.y){this.currentBBox.w=t.width,this.currentBBox.h=t.height,this.currentBBox.x=t.x,this.currentBBox.y=t.y,this.shapeCont.setAttribute("viewBox",this.currentBBox.x+" "+this.currentBBox.y+" "+this.currentBBox.w+" "+this.currentBBox.h);var i=this.shapeCont.style,a="translate("+this.currentBBox.x+"px,"+this.currentBBox.y+"px)";i.transform=a,i.webkitTransform=a}}},extendPrototype([BaseElement,TransformElement,HBaseElement,HierarchyElement,FrameElement,RenderableDOMElement,ITextElement],HTextElement),HTextElement.prototype.createContent=function(){if(this.isMasked=this.checkMasks(),this.isMasked){this.renderType="svg",this.compW=this.comp.data.w,this.compH=this.comp.data.h,this.svgElement.setAttribute("width",this.compW),this.svgElement.setAttribute("height",this.compH);var t=createNS("g");this.maskedElement.appendChild(t),this.innerElem=t}else this.renderType="html",this.innerElem=this.layerElement;this.checkParenting()},HTextElement.prototype.buildNewText=function(){var t=this.textProperty.currentData;this.renderedLetters=createSizedArray(t.l?t.l.length:0);var e=this.innerElem.style,r=t.fc?this.buildColor(t.fc):"rgba(0,0,0,0)";e.fill=r,e.color=r,t.sc&&(e.stroke=this.buildColor(t.sc),e.strokeWidth=t.sw+"px");var i,a,s=this.globalData.fontManager.getFontByName(t.f);if(!this.globalData.fontManager.chars)if(e.fontSize=t.finalSize+"px",e.lineHeight=t.finalSize+"px",s.fClass)this.innerElem.className=s.fClass;else{e.fontFamily=s.fFamily;var n=t.fWeight,o=t.fStyle;e.fontStyle=o,e.fontWeight=n}var h,l,p,c=t.l;a=c.length;var f,m=this.mHelper,u="",d=0;for(i=0;i<a;i+=1){if(this.globalData.fontManager.chars?(this.textPaths[d]?h=this.textPaths[d]:((h=createNS("path")).setAttribute("stroke-linecap",lineCapEnum[1]),h.setAttribute("stroke-linejoin",lineJoinEnum[2]),h.setAttribute("stroke-miterlimit","4")),this.isMasked||(this.textSpans[d]?p=(l=this.textSpans[d]).children[0]:((l=createTag("div")).style.lineHeight=0,(p=createNS("svg")).appendChild(h),styleDiv(l)))):this.isMasked?h=this.textPaths[d]?this.textPaths[d]:createNS("text"):this.textSpans[d]?(l=this.textSpans[d],h=this.textPaths[d]):(styleDiv(l=createTag("span")),styleDiv(h=createTag("span")),l.appendChild(h)),this.globalData.fontManager.chars){var y,g=this.globalData.fontManager.getCharData(t.finalText[i],s.fStyle,this.globalData.fontManager.getFontByName(t.f).fFamily);if(y=g?g.data:null,m.reset(),y&&y.shapes&&y.shapes.length&&(f=y.shapes[0].it,m.scale(t.finalSize/100,t.finalSize/100),u=this.createPathShape(m,f),h.setAttribute("d",u)),this.isMasked)this.innerElem.appendChild(h);else{if(this.innerElem.appendChild(l),y&&y.shapes){document.body.appendChild(p);var v=p.getBBox();p.setAttribute("width",v.width+2),p.setAttribute("height",v.height+2),p.setAttribute("viewBox",v.x-1+" "+(v.y-1)+" "+(v.width+2)+" "+(v.height+2));var b=p.style,P="translate("+(v.x-1)+"px,"+(v.y-1)+"px)";b.transform=P,b.webkitTransform=P,c[i].yOffset=v.y-1}else p.setAttribute("width",1),p.setAttribute("height",1);l.appendChild(p)}}else if(h.textContent=c[i].val,h.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),this.isMasked)this.innerElem.appendChild(h);else{this.innerElem.appendChild(l);var x=h.style,S="translate3d(0,"+-t.finalSize/1.2+"px,0)";x.transform=S,x.webkitTransform=S}this.isMasked?this.textSpans[d]=h:this.textSpans[d]=l,this.textSpans[d].style.display="block",this.textPaths[d]=h,d+=1}for(;d<this.textSpans.length;)this.textSpans[d].style.display="none",d+=1},HTextElement.prototype.renderInnerContent=function(){var t;if(this.validateText(),this.data.singleShape){if(!this._isFirstFrame&&!this.lettersChangedFlag)return;if(this.isMasked&&this.finalTransform._matMdf){this.svgElement.setAttribute("viewBox",-this.finalTransform.mProp.p.v[0]+" "+-this.finalTransform.mProp.p.v[1]+" "+this.compW+" "+this.compH),t=this.svgElement.style;var e="translate("+-this.finalTransform.mProp.p.v[0]+"px,"+-this.finalTransform.mProp.p.v[1]+"px)";t.transform=e,t.webkitTransform=e}}if(this.textAnimator.getMeasures(this.textProperty.currentData,this.lettersChangedFlag),this.lettersChangedFlag||this.textAnimator.lettersChangedFlag){var r,i,a,s,n,o=0,h=this.textAnimator.renderedLetters,l=this.textProperty.currentData.l;for(i=l.length,r=0;r<i;r+=1)l[r].n?o+=1:(s=this.textSpans[r],n=this.textPaths[r],a=h[o],o+=1,a._mdf.m&&(this.isMasked?s.setAttribute("transform",a.m):(s.style.webkitTransform=a.m,s.style.transform=a.m)),s.style.opacity=a.o,a.sw&&a._mdf.sw&&n.setAttribute("stroke-width",a.sw),a.sc&&a._mdf.sc&&n.setAttribute("stroke",a.sc),a.fc&&a._mdf.fc&&(n.setAttribute("fill",a.fc),n.style.color=a.fc));if(this.innerElem.getBBox&&!this.hidden&&(this._isFirstFrame||this._mdf)){var p=this.innerElem.getBBox();if(this.currentBBox.w!==p.width&&(this.currentBBox.w=p.width,this.svgElement.setAttribute("width",p.width)),this.currentBBox.h!==p.height&&(this.currentBBox.h=p.height,this.svgElement.setAttribute("height",p.height)),this.currentBBox.w!==p.width+2||this.currentBBox.h!==p.height+2||this.currentBBox.x!==p.x-1||this.currentBBox.y!==p.y-1){this.currentBBox.w=p.width+2,this.currentBBox.h=p.height+2,this.currentBBox.x=p.x-1,this.currentBBox.y=p.y-1,this.svgElement.setAttribute("viewBox",this.currentBBox.x+" "+this.currentBBox.y+" "+this.currentBBox.w+" "+this.currentBBox.h),t=this.svgElement.style;var c="translate("+this.currentBBox.x+"px,"+this.currentBBox.y+"px)";t.transform=c,t.webkitTransform=c}}}},extendPrototype([BaseElement,FrameElement,HierarchyElement],HCameraElement),HCameraElement.prototype.setup=function(){var t,e,r,i,a=this.comp.threeDElements.length;for(t=0;t<a;t+=1)if("3d"===(e=this.comp.threeDElements[t]).type){r=e.perspectiveElem.style,i=e.container.style;var s=this.pe.v+"px",n="0px 0px 0px",o="matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)";r.perspective=s,r.webkitPerspective=s,i.transformOrigin=n,i.mozTransformOrigin=n,i.webkitTransformOrigin=n,r.transform=o,r.webkitTransform=o}},HCameraElement.prototype.createElements=function(){},HCameraElement.prototype.hide=function(){},HCameraElement.prototype.renderFrame=function(){var t,e,r=this._isFirstFrame;if(this.hierarchy)for(e=this.hierarchy.length,t=0;t<e;t+=1)r=this.hierarchy[t].finalTransform.mProp._mdf||r;if(r||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){if(this.mat.reset(),this.hierarchy)for(t=e=this.hierarchy.length-1;t>=0;t-=1){var i=this.hierarchy[t].finalTransform.mProp;this.mat.translate(-i.p.v[0],-i.p.v[1],i.p.v[2]),this.mat.rotateX(-i.or.v[0]).rotateY(-i.or.v[1]).rotateZ(i.or.v[2]),this.mat.rotateX(-i.rx.v).rotateY(-i.ry.v).rotateZ(i.rz.v),this.mat.scale(1/i.s.v[0],1/i.s.v[1],1/i.s.v[2]),this.mat.translate(i.a.v[0],i.a.v[1],i.a.v[2])}if(this.p?this.mat.translate(-this.p.v[0],-this.p.v[1],this.p.v[2]):this.mat.translate(-this.px.v,-this.py.v,this.pz.v),this.a){var a;a=this.p?[this.p.v[0]-this.a.v[0],this.p.v[1]-this.a.v[1],this.p.v[2]-this.a.v[2]]:[this.px.v-this.a.v[0],this.py.v-this.a.v[1],this.pz.v-this.a.v[2]];var s=Math.sqrt(Math.pow(a[0],2)+Math.pow(a[1],2)+Math.pow(a[2],2)),n=[a[0]/s,a[1]/s,a[2]/s],o=Math.sqrt(n[2]*n[2]+n[0]*n[0]),h=Math.atan2(n[1],o),l=Math.atan2(n[0],-n[2]);this.mat.rotateY(l).rotateX(-h)}this.mat.rotateX(-this.rx.v).rotateY(-this.ry.v).rotateZ(this.rz.v),this.mat.rotateX(-this.or.v[0]).rotateY(-this.or.v[1]).rotateZ(this.or.v[2]),this.mat.translate(this.globalData.compSize.w/2,this.globalData.compSize.h/2,0),this.mat.translate(0,0,this.pe.v);var p=!this._prevMat.equals(this.mat);if((p||this.pe._mdf)&&this.comp.threeDElements){var c,f,m;for(e=this.comp.threeDElements.length,t=0;t<e;t+=1)if("3d"===(c=this.comp.threeDElements[t]).type){if(p){var u=this.mat.toCSS();(m=c.container.style).transform=u,m.webkitTransform=u}this.pe._mdf&&((f=c.perspectiveElem.style).perspective=this.pe.v+"px",f.webkitPerspective=this.pe.v+"px")}this.mat.clone(this._prevMat)}}this._isFirstFrame=!1},HCameraElement.prototype.prepareFrame=function(t){this.prepareProperties(t,!0)},HCameraElement.prototype.destroy=function(){},HCameraElement.prototype.getBaseElement=function(){return null},extendPrototype([BaseElement,TransformElement,HBaseElement,HSolidElement,HierarchyElement,FrameElement,RenderableElement],HImageElement),HImageElement.prototype.createContent=function(){var t=this.globalData.getAssetsPath(this.assetData),e=new Image;this.data.hasMask?(this.imageElem=createNS("image"),this.imageElem.setAttribute("width",this.assetData.w+"px"),this.imageElem.setAttribute("height",this.assetData.h+"px"),this.imageElem.setAttributeNS("http://www.w3.org/1999/xlink","href",t),this.layerElement.appendChild(this.imageElem),this.baseElement.setAttribute("width",this.assetData.w),this.baseElement.setAttribute("height",this.assetData.h)):this.layerElement.appendChild(e),e.crossOrigin="anonymous",e.src=t,this.data.ln&&this.baseElement.setAttribute("id",this.data.ln)},extendPrototype([BaseRenderer],HybridRendererBase),HybridRendererBase.prototype.buildItem=SVGRenderer.prototype.buildItem,HybridRendererBase.prototype.checkPendingElements=function(){for(;this.pendingElements.length;)this.pendingElements.pop().checkParenting()},HybridRendererBase.prototype.appendElementInPos=function(t,e){var r=t.getBaseElement();if(r){var i=this.layers[e];if(i.ddd&&this.supports3d)this.addTo3dContainer(r,e);else if(this.threeDElements)this.addTo3dContainer(r,e);else{for(var a,s,n=0;n<e;)this.elements[n]&&!0!==this.elements[n]&&this.elements[n].getBaseElement&&(s=this.elements[n],a=(this.layers[n].ddd?this.getThreeDContainerByPos(n):s.getBaseElement())||a),n+=1;a?i.ddd&&this.supports3d||this.layerElement.insertBefore(r,a):i.ddd&&this.supports3d||this.layerElement.appendChild(r)}}},HybridRendererBase.prototype.createShape=function(t){return this.supports3d?new HShapeElement(t,this.globalData,this):new SVGShapeElement(t,this.globalData,this)},HybridRendererBase.prototype.createText=function(t){return this.supports3d?new HTextElement(t,this.globalData,this):new SVGTextLottieElement(t,this.globalData,this)},HybridRendererBase.prototype.createCamera=function(t){return this.camera=new HCameraElement(t,this.globalData,this),this.camera},HybridRendererBase.prototype.createImage=function(t){return this.supports3d?new HImageElement(t,this.globalData,this):new IImageElement(t,this.globalData,this)},HybridRendererBase.prototype.createSolid=function(t){return this.supports3d?new HSolidElement(t,this.globalData,this):new ISolidElement(t,this.globalData,this)},HybridRendererBase.prototype.createNull=SVGRenderer.prototype.createNull,HybridRendererBase.prototype.getThreeDContainerByPos=function(t){for(var e=0,r=this.threeDElements.length;e<r;){if(this.threeDElements[e].startPos<=t&&this.threeDElements[e].endPos>=t)return this.threeDElements[e].perspectiveElem;e+=1}return null},HybridRendererBase.prototype.createThreeDContainer=function(t,e){var r,i,a=createTag("div");styleDiv(a);var s=createTag("div");if(styleDiv(s),"3d"===e){(r=a.style).width=this.globalData.compSize.w+"px",r.height=this.globalData.compSize.h+"px";var n="50% 50%";r.webkitTransformOrigin=n,r.mozTransformOrigin=n,r.transformOrigin=n;var o="matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)";(i=s.style).transform=o,i.webkitTransform=o}a.appendChild(s);var h={container:s,perspectiveElem:a,startPos:t,endPos:t,type:e};return this.threeDElements.push(h),h},HybridRendererBase.prototype.build3dContainers=function(){var t,e,r=this.layers.length,i="";for(t=0;t<r;t+=1)this.layers[t].ddd&&3!==this.layers[t].ty?("3d"!==i&&(i="3d",e=this.createThreeDContainer(t,"3d")),e.endPos=Math.max(e.endPos,t)):("2d"!==i&&(i="2d",e=this.createThreeDContainer(t,"2d")),e.endPos=Math.max(e.endPos,t));for(t=(r=this.threeDElements.length)-1;t>=0;t-=1)this.resizerElem.appendChild(this.threeDElements[t].perspectiveElem)},HybridRendererBase.prototype.addTo3dContainer=function(t,e){for(var r=0,i=this.threeDElements.length;r<i;){if(e<=this.threeDElements[r].endPos){for(var a,s=this.threeDElements[r].startPos;s<e;)this.elements[s]&&this.elements[s].getBaseElement&&(a=this.elements[s].getBaseElement()),s+=1;a?this.threeDElements[r].container.insertBefore(t,a):this.threeDElements[r].container.appendChild(t);break}r+=1}},HybridRendererBase.prototype.configAnimation=function(t){var e=createTag("div"),r=this.animationItem.wrapper,i=e.style;i.width=t.w+"px",i.height=t.h+"px",this.resizerElem=e,styleDiv(e),i.transformStyle="flat",i.mozTransformStyle="flat",i.webkitTransformStyle="flat",this.renderConfig.className&&e.setAttribute("class",this.renderConfig.className),r.appendChild(e),i.overflow="hidden";var a=createNS("svg");a.setAttribute("width","1"),a.setAttribute("height","1"),styleDiv(a),this.resizerElem.appendChild(a);var s=createNS("defs");a.appendChild(s),this.data=t,this.setupGlobalData(t,a),this.globalData.defs=s,this.layers=t.layers,this.layerElement=this.resizerElem,this.build3dContainers(),this.updateContainerSize()},HybridRendererBase.prototype.destroy=function(){var t;this.animationItem.wrapper&&(this.animationItem.wrapper.innerText=""),this.animationItem.container=null,this.globalData.defs=null;var e=this.layers?this.layers.length:0;for(t=0;t<e;t+=1)this.elements[t]&&this.elements[t].destroy&&this.elements[t].destroy();this.elements.length=0,this.destroyed=!0,this.animationItem=null},HybridRendererBase.prototype.updateContainerSize=function(){var t,e,r,i,a=this.animationItem.wrapper.offsetWidth,s=this.animationItem.wrapper.offsetHeight,n=a/s;this.globalData.compSize.w/this.globalData.compSize.h>n?(t=a/this.globalData.compSize.w,e=a/this.globalData.compSize.w,r=0,i=(s-this.globalData.compSize.h*(a/this.globalData.compSize.w))/2):(t=s/this.globalData.compSize.h,e=s/this.globalData.compSize.h,r=(a-this.globalData.compSize.w*(s/this.globalData.compSize.h))/2,i=0);var o=this.resizerElem.style;o.webkitTransform="matrix3d("+t+",0,0,0,0,"+e+",0,0,0,0,1,0,"+r+","+i+",0,1)",o.transform=o.webkitTransform},HybridRendererBase.prototype.renderFrame=SVGRenderer.prototype.renderFrame,HybridRendererBase.prototype.hide=function(){this.resizerElem.style.display="none"},HybridRendererBase.prototype.show=function(){this.resizerElem.style.display="block"},HybridRendererBase.prototype.initItems=function(){if(this.buildAllItems(),this.camera)this.camera.setup();else{var t,e=this.globalData.compSize.w,r=this.globalData.compSize.h,i=this.threeDElements.length;for(t=0;t<i;t+=1){var a=this.threeDElements[t].perspectiveElem.style;a.webkitPerspective=Math.sqrt(Math.pow(e,2)+Math.pow(r,2))+"px",a.perspective=a.webkitPerspective}}},HybridRendererBase.prototype.searchExtraCompositions=function(t){var e,r=t.length,i=createTag("div");for(e=0;e<r;e+=1)if(t[e].xt){var a=this.createComp(t[e],i,this.globalData.comp,null);a.initExpressions(),this.globalData.projectInterface.registerComposition(a)}},extendPrototype([HybridRendererBase,ICompElement,HBaseElement],HCompElement),HCompElement.prototype._createBaseContainerElements=HCompElement.prototype.createContainerElements,HCompElement.prototype.createContainerElements=function(){this._createBaseContainerElements(),this.data.hasMask?(this.svgElement.setAttribute("width",this.data.w),this.svgElement.setAttribute("height",this.data.h),this.transformedElement=this.baseElement):this.transformedElement=this.layerElement},HCompElement.prototype.addTo3dContainer=function(t,e){for(var r,i=0;i<e;)this.elements[i]&&this.elements[i].getBaseElement&&(r=this.elements[i].getBaseElement()),i+=1;r?this.layerElement.insertBefore(t,r):this.layerElement.appendChild(t)},HCompElement.prototype.createComp=function(t){return this.supports3d?new HCompElement(t,this.globalData,this):new SVGCompElement(t,this.globalData,this)},extendPrototype([HybridRendererBase],HybridRenderer),HybridRenderer.prototype.createComp=function(t){return this.supports3d?new HCompElement(t,this.globalData,this):new SVGCompElement(t,this.globalData,this)};var CompExpressionInterface=function(t){function _thisLayerFunction(e){for(var r=0,i=t.layers.length;r<i;){if(t.layers[r].nm===e||t.layers[r].ind===e)return t.elements[r].layerInterface;r+=1}return null}return Object.defineProperty(_thisLayerFunction,"_name",{value:t.data.nm}),_thisLayerFunction.layer=_thisLayerFunction,_thisLayerFunction.pixelAspect=1,_thisLayerFunction.height=t.data.h||t.globalData.compSize.h,_thisLayerFunction.width=t.data.w||t.globalData.compSize.w,_thisLayerFunction.pixelAspect=1,_thisLayerFunction.frameDuration=1/t.globalData.frameRate,_thisLayerFunction.displayStartTime=0,_thisLayerFunction.numLayers=t.layers.length,_thisLayerFunction};function _typeof$2(t){return _typeof$2="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},_typeof$2(t)}function seedRandom(t,e){var r=this,i=256,a="random",s=e.pow(i,6),n=e.pow(2,52),o=2*n,h=255;function ARC4(t){var e,r=t.length,a=this,s=0,n=a.i=a.j=0,o=a.S=[];for(r||(t=[r++]);s<i;)o[s]=s++;for(s=0;s<i;s++)o[s]=o[n=h&n+t[s%r]+(e=o[s])],o[n]=e;a.g=function(t){for(var e,r=0,s=a.i,n=a.j,o=a.S;t--;)e=o[s=h&s+1],r=r*i+o[h&(o[s]=o[n=h&n+e])+(o[n]=e)];return a.i=s,a.j=n,r}}function copy(t,e){return e.i=t.i,e.j=t.j,e.S=t.S.slice(),e}function flatten(t,e){var r,i=[],a=_typeof$2(t);if(e&&"object"==a)for(r in t)try{i.push(flatten(t[r],e-1))}catch(t){}return i.length?i:"string"==a?t:t+"\0"}function mixkey(t,e){for(var r,i=t+"",a=0;a<i.length;)e[h&a]=h&(r^=19*e[h&a])+i.charCodeAt(a++);return tostring(e)}function tostring(t){return String.fromCharCode.apply(0,t)}e["seed"+a]=function seedrandom(h,l,p){var c=[],f=mixkey(flatten((l=!0===l?{entropy:!0}:l||{}).entropy?[h,tostring(t)]:null===h?function autoseed(){try{var e=new Uint8Array(i);return(r.crypto||r.msCrypto).getRandomValues(e),tostring(e)}catch(e){var a=r.navigator,s=a&&a.plugins;return[+new Date,r,s,r.screen,tostring(t)]}}():h,3),c),m=new ARC4(c),u=function prng(){for(var t=m.g(6),e=s,r=0;t<n;)t=(t+r)*i,e*=i,r=m.g(1);for(;t>=o;)t/=2,e/=2,r>>>=1;return(t+r)/e};return u.int32=function(){return 0|m.g(4)},u.quick=function(){return m.g(4)/4294967296},u.double=u,mixkey(tostring(m.S),t),(l.pass||p||function(t,r,i,s){return s&&(s.S&&copy(s,m),t.state=function(){return copy(m,{})}),i?(e[a]=t,r):t})(u,f,"global"in l?l.global:this==e,l.state)},mixkey(e.random(),t)}function initialize$2(t){seedRandom([],t)}var propTypes={SHAPE:"shape"};function _typeof$1(t){return _typeof$1="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},_typeof$1(t)}var ExpressionManager=function(){var ob={},Math=BMMath,window=null,document=null,XMLHttpRequest=null,fetch=null,frames=null,_lottieGlobal={};function resetFrame(){_lottieGlobal={}}function $bm_isInstanceOfArray(t){return t.constructor===Array||t.constructor===Float32Array}function isNumerable(t,e){return"number"===t||e instanceof Number||"boolean"===t||"string"===t}function $bm_neg(t){var e=_typeof$1(t);if("number"===e||t instanceof Number||"boolean"===e)return-t;if($bm_isInstanceOfArray(t)){var r,i=t.length,a=[];for(r=0;r<i;r+=1)a[r]=-t[r];return a}return t.propType?t.v:-t}initialize$2(BMMath);var easeInBez=BezierFactory.getBezierEasing(.333,0,.833,.833,"easeIn").get,easeOutBez=BezierFactory.getBezierEasing(.167,.167,.667,1,"easeOut").get,easeInOutBez=BezierFactory.getBezierEasing(.33,0,.667,1,"easeInOut").get;function sum(t,e){var r=_typeof$1(t),i=_typeof$1(e);if(isNumerable(r,t)&&isNumerable(i,e)||"string"===r||"string"===i)return t+e;if($bm_isInstanceOfArray(t)&&isNumerable(i,e))return(t=t.slice(0))[0]+=e,t;if(isNumerable(r,t)&&$bm_isInstanceOfArray(e))return(e=e.slice(0))[0]=t+e[0],e;if($bm_isInstanceOfArray(t)&&$bm_isInstanceOfArray(e)){for(var a=0,s=t.length,n=e.length,o=[];a<s||a<n;)("number"==typeof t[a]||t[a]instanceof Number)&&("number"==typeof e[a]||e[a]instanceof Number)?o[a]=t[a]+e[a]:o[a]=void 0===e[a]?t[a]:t[a]||e[a],a+=1;return o}return 0}var add=sum;function sub(t,e){var r=_typeof$1(t),i=_typeof$1(e);if(isNumerable(r,t)&&isNumerable(i,e))return"string"===r&&(t=parseInt(t,10)),"string"===i&&(e=parseInt(e,10)),t-e;if($bm_isInstanceOfArray(t)&&isNumerable(i,e))return(t=t.slice(0))[0]-=e,t;if(isNumerable(r,t)&&$bm_isInstanceOfArray(e))return(e=e.slice(0))[0]=t-e[0],e;if($bm_isInstanceOfArray(t)&&$bm_isInstanceOfArray(e)){for(var a=0,s=t.length,n=e.length,o=[];a<s||a<n;)("number"==typeof t[a]||t[a]instanceof Number)&&("number"==typeof e[a]||e[a]instanceof Number)?o[a]=t[a]-e[a]:o[a]=void 0===e[a]?t[a]:t[a]||e[a],a+=1;return o}return 0}function mul(t,e){var r,i,a,s=_typeof$1(t),n=_typeof$1(e);if(isNumerable(s,t)&&isNumerable(n,e))return t*e;if($bm_isInstanceOfArray(t)&&isNumerable(n,e)){for(a=t.length,r=createTypedArray("float32",a),i=0;i<a;i+=1)r[i]=t[i]*e;return r}if(isNumerable(s,t)&&$bm_isInstanceOfArray(e)){for(a=e.length,r=createTypedArray("float32",a),i=0;i<a;i+=1)r[i]=t*e[i];return r}return 0}function div(t,e){var r,i,a,s=_typeof$1(t),n=_typeof$1(e);if(isNumerable(s,t)&&isNumerable(n,e))return t/e;if($bm_isInstanceOfArray(t)&&isNumerable(n,e)){for(a=t.length,r=createTypedArray("float32",a),i=0;i<a;i+=1)r[i]=t[i]/e;return r}if(isNumerable(s,t)&&$bm_isInstanceOfArray(e)){for(a=e.length,r=createTypedArray("float32",a),i=0;i<a;i+=1)r[i]=t/e[i];return r}return 0}function mod(t,e){return"string"==typeof t&&(t=parseInt(t,10)),"string"==typeof e&&(e=parseInt(e,10)),t%e}var $bm_sum=sum,$bm_sub=sub,$bm_mul=mul,$bm_div=div,$bm_mod=mod;function clamp(t,e,r){if(e>r){var i=r;r=e,e=i}return Math.min(Math.max(t,e),r)}function radiansToDegrees(t){return t/degToRads}var radians_to_degrees=radiansToDegrees;function degreesToRadians(t){return t*degToRads}var degrees_to_radians=radiansToDegrees,helperLengthArray=[0,0,0,0,0,0];function length(t,e){if("number"==typeof t||t instanceof Number)return e=e||0,Math.abs(t-e);var r;e||(e=helperLengthArray);var i=Math.min(t.length,e.length),a=0;for(r=0;r<i;r+=1)a+=Math.pow(e[r]-t[r],2);return Math.sqrt(a)}function normalize(t){return div(t,length(t))}function rgbToHsl(t){var e,r,i=t[0],a=t[1],s=t[2],n=Math.max(i,a,s),o=Math.min(i,a,s),h=(n+o)/2;if(n===o)e=0,r=0;else{var l=n-o;switch(r=h>.5?l/(2-n-o):l/(n+o),n){case i:e=(a-s)/l+(a<s?6:0);break;case a:e=(s-i)/l+2;break;case s:e=(i-a)/l+4}e/=6}return[e,r,h,t[3]]}function hue2rgb(t,e,r){return r<0&&(r+=1),r>1&&(r-=1),r<1/6?t+6*(e-t)*r:r<.5?e:r<2/3?t+(e-t)*(2/3-r)*6:t}function hslToRgb(t){var e,r,i,a=t[0],s=t[1],n=t[2];if(0===s)e=n,i=n,r=n;else{var o=n<.5?n*(1+s):n+s-n*s,h=2*n-o;e=hue2rgb(h,o,a+1/3),r=hue2rgb(h,o,a),i=hue2rgb(h,o,a-1/3)}return[e,r,i,t[3]]}function linear(t,e,r,i,a){if(void 0!==i&&void 0!==a||(i=e,a=r,e=0,r=1),r<e){var s=r;r=e,e=s}if(t<=e)return i;if(t>=r)return a;var n,o=r===e?0:(t-e)/(r-e);if(!i.length)return i+(a-i)*o;var h=i.length,l=createTypedArray("float32",h);for(n=0;n<h;n+=1)l[n]=i[n]+(a[n]-i[n])*o;return l}function random(t,e){if(void 0===e&&(void 0===t?(t=0,e=1):(e=t,t=void 0)),e.length){var r,i=e.length;t||(t=createTypedArray("float32",i));var a=createTypedArray("float32",i),s=BMMath.random();for(r=0;r<i;r+=1)a[r]=t[r]+s*(e[r]-t[r]);return a}return void 0===t&&(t=0),t+BMMath.random()*(e-t)}function createPath(t,e,r,i){var a,s=t.length,n=shapePool.newElement();n.setPathData(!!i,s);var o,h,l=[0,0];for(a=0;a<s;a+=1)o=e&&e[a]?e[a]:l,h=r&&r[a]?r[a]:l,n.setTripleAt(t[a][0],t[a][1],h[0]+t[a][0],h[1]+t[a][1],o[0]+t[a][0],o[1]+t[a][1],a,!0);return n}function initiateExpression(elem,data,property){function noOp(t){return t}if(!elem.globalData.renderConfig.runExpressions)return noOp;var val=data.x,needsVelocity=/velocity(?![\w\d])/.test(val),_needsRandom=-1!==val.indexOf("random"),elemType=elem.data.ty,transform,$bm_transform,content,effect,thisProperty=property;thisProperty._name=elem.data.nm,thisProperty.valueAtTime=thisProperty.getValueAtTime,Object.defineProperty(thisProperty,"value",{get:function get(){return thisProperty.v}}),elem.comp.frameDuration=1/elem.comp.globalData.frameRate,elem.comp.displayStartTime=0;var inPoint=elem.data.ip/elem.comp.globalData.frameRate,outPoint=elem.data.op/elem.comp.globalData.frameRate,width=elem.data.sw?elem.data.sw:0,height=elem.data.sh?elem.data.sh:0,name=elem.data.nm,loopIn,loop_in,loopOut,loop_out,smooth,toWorld,fromWorld,fromComp,toComp,fromCompToSurface,position,rotation,anchorPoint,scale,thisLayer,thisComp,mask,valueAtTime,velocityAtTime,scoped_bm_rt,expression_function=eval("[function _expression_function(){"+val+";scoped_bm_rt=$bm_rt}]")[0],numKeys=property.kf?data.k.length:0,active=!this.data||!0!==this.data.hd,wiggle=function wiggle(t,e){var r,i,a=this.pv.length?this.pv.length:1,s=createTypedArray("float32",a),n=Math.floor(5*time);for(r=0,i=0;r<n;){for(i=0;i<a;i+=1)s[i]+=-e+2*e*BMMath.random();r+=1}var o=5*time,h=o-Math.floor(o),l=createTypedArray("float32",a);if(a>1){for(i=0;i<a;i+=1)l[i]=this.pv[i]+s[i]+(-e+2*e*BMMath.random())*h;return l}return this.pv+s[0]+(-e+2*e*BMMath.random())*h}.bind(this);function loopInDuration(t,e){return loopIn(t,e,!0)}function loopOutDuration(t,e){return loopOut(t,e,!0)}thisProperty.loopIn&&(loopIn=thisProperty.loopIn.bind(thisProperty),loop_in=loopIn),thisProperty.loopOut&&(loopOut=thisProperty.loopOut.bind(thisProperty),loop_out=loopOut),thisProperty.smooth&&(smooth=thisProperty.smooth.bind(thisProperty)),this.getValueAtTime&&(valueAtTime=this.getValueAtTime.bind(this)),this.getVelocityAtTime&&(velocityAtTime=this.getVelocityAtTime.bind(this));var comp=elem.comp.globalData.projectInterface.bind(elem.comp.globalData.projectInterface),time,velocity,value,text,textIndex,textTotal,selectorValue;function lookAt(t,e){var r=[e[0]-t[0],e[1]-t[1],e[2]-t[2]],i=Math.atan2(r[0],Math.sqrt(r[1]*r[1]+r[2]*r[2]))/degToRads;return[-Math.atan2(r[1],r[2])/degToRads,i,0]}function easeOut(t,e,r,i,a){return applyEase(easeOutBez,t,e,r,i,a)}function easeIn(t,e,r,i,a){return applyEase(easeInBez,t,e,r,i,a)}function ease(t,e,r,i,a){return applyEase(easeInOutBez,t,e,r,i,a)}function applyEase(t,e,r,i,a,s){void 0===a?(a=r,s=i):e=(e-r)/(i-r),e>1?e=1:e<0&&(e=0);var n=t(e);if($bm_isInstanceOfArray(a)){var o,h=a.length,l=createTypedArray("float32",h);for(o=0;o<h;o+=1)l[o]=(s[o]-a[o])*n+a[o];return l}return(s-a)*n+a}function nearestKey(t){var e,r,i,a=data.k.length;if(data.k.length&&"number"!=typeof data.k[0])if(r=-1,(t*=elem.comp.globalData.frameRate)<data.k[0].t)r=1,i=data.k[0].t;else{for(e=0;e<a-1;e+=1){if(t===data.k[e].t){r=e+1,i=data.k[e].t;break}if(t>data.k[e].t&&t<data.k[e+1].t){t-data.k[e].t>data.k[e+1].t-t?(r=e+2,i=data.k[e+1].t):(r=e+1,i=data.k[e].t);break}}-1===r&&(r=e+1,i=data.k[e].t)}else r=0,i=0;var s={};return s.index=r,s.time=i/elem.comp.globalData.frameRate,s}function key(t){var e,r,i;if(!data.k.length||"number"==typeof data.k[0])throw new Error("The property has no keyframe at index "+t);t-=1,e={time:data.k[t].t/elem.comp.globalData.frameRate,value:[]};var a=Object.prototype.hasOwnProperty.call(data.k[t],"s")?data.k[t].s:data.k[t-1].e;for(i=a.length,r=0;r<i;r+=1)e[r]=a[r],e.value[r]=a[r];return e}function framesToTime(t,e){return e||(e=elem.comp.globalData.frameRate),t/e}function timeToFrames(t,e){return t||0===t||(t=time),e||(e=elem.comp.globalData.frameRate),t*e}function seedRandom(t){BMMath.seedrandom(randSeed+t)}function sourceRectAtTime(){return elem.sourceRectAtTime()}function substring(t,e){return"string"==typeof value?void 0===e?value.substring(t):value.substring(t,e):""}function substr(t,e){return"string"==typeof value?void 0===e?value.substr(t):value.substr(t,e):""}function posterizeTime(t){time=0===t?0:Math.floor(time*t)/t,value=valueAtTime(time)}var index=elem.data.ind,hasParent=!(!elem.hierarchy||!elem.hierarchy.length),parent,randSeed=Math.floor(1e6*Math.random()),globalData=elem.globalData;function executeExpression(t){return value=t,this.frameExpressionId===elem.globalData.frameId&&"textSelector"!==this.propType?value:("textSelector"===this.propType&&(textIndex=this.textIndex,textTotal=this.textTotal,selectorValue=this.selectorValue),thisLayer||(text=elem.layerInterface.text,thisLayer=elem.layerInterface,thisComp=elem.comp.compInterface,toWorld=thisLayer.toWorld.bind(thisLayer),fromWorld=thisLayer.fromWorld.bind(thisLayer),fromComp=thisLayer.fromComp.bind(thisLayer),toComp=thisLayer.toComp.bind(thisLayer),mask=thisLayer.mask?thisLayer.mask.bind(thisLayer):null,fromCompToSurface=fromComp),transform||(transform=elem.layerInterface("ADBE Transform Group"),$bm_transform=transform,transform&&(anchorPoint=transform.anchorPoint)),4!==elemType||content||(content=thisLayer("ADBE Root Vectors Group")),effect||(effect=thisLayer(4)),(hasParent=!(!elem.hierarchy||!elem.hierarchy.length))&&!parent&&(parent=elem.hierarchy[0].layerInterface),time=this.comp.renderedFrame/this.comp.globalData.frameRate,_needsRandom&&seedRandom(randSeed+time),needsVelocity&&(velocity=velocityAtTime(time)),expression_function(),this.frameExpressionId=elem.globalData.frameId,scoped_bm_rt=scoped_bm_rt.propType===propTypes.SHAPE?scoped_bm_rt.v:scoped_bm_rt)}return 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],executeExpression}return ob.initiateExpression=initiateExpression,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],ob.resetFrame=resetFrame,ob}(),Expressions=function(){var t={initExpressions:function initExpressions(t){var e=0,r=[];t.renderer.compInterface=CompExpressionInterface(t.renderer),t.renderer.globalData.projectInterface.registerComposition(t.renderer),t.renderer.globalData.pushExpression=function pushExpression(){e+=1},t.renderer.globalData.popExpression=function popExpression(){0==(e-=1)&&function releaseInstances(){var t,e=r.length;for(t=0;t<e;t+=1)r[t].release();r.length=0}()},t.renderer.globalData.registerExpressionProperty=function registerExpressionProperty(t){-1===r.indexOf(t)&&r.push(t)}}};return t.resetFrame=ExpressionManager.resetFrame,t}(),MaskManagerInterface=function(){function MaskInterface(t,e){this._mask=t,this._data=e}return Object.defineProperty(MaskInterface.prototype,"maskPath",{get:function get(){return this._mask.prop.k&&this._mask.prop.getValue(),this._mask.prop}}),Object.defineProperty(MaskInterface.prototype,"maskOpacity",{get:function get(){return this._mask.op.k&&this._mask.op.getValue(),100*this._mask.op.v}}),function MaskManager(t){var e,r=createSizedArray(t.viewData.length),i=t.viewData.length;for(e=0;e<i;e+=1)r[e]=new MaskInterface(t.viewData[e],t.masksProperties[e]);return function maskFunction(a){for(e=0;e<i;){if(t.masksProperties[e].nm===a)return r[e];e+=1}return null}}}(),ExpressionPropertyInterface=function(){var t={pv:0,v:0,mult:1},e={pv:[0,0,0],v:[0,0,0],mult:1};function completeProperty(t,e,r){Object.defineProperty(t,"velocity",{get:function get(){return e.getVelocityAtTime(e.comp.currentFrame)}}),t.numKeys=e.keyframes?e.keyframes.length:0,t.key=function(i){if(!t.numKeys)return 0;var a="";a="s"in e.keyframes[i-1]?e.keyframes[i-1].s:"e"in e.keyframes[i-2]?e.keyframes[i-2].e:e.keyframes[i-2].s;var s="unidimensional"===r?new Number(a):Object.assign({},a);return s.time=e.keyframes[i-1].t/e.elem.comp.globalData.frameRate,s.value="unidimensional"===r?a[0]:a,s},t.valueAtTime=e.getValueAtTime,t.speedAtTime=e.getSpeedAtTime,t.velocityAtTime=e.getVelocityAtTime,t.propertyGroup=e.propertyGroup}function defaultGetter(){return t}return function(r){return r?"unidimensional"===r.propType?function UnidimensionalPropertyInterface(e){e&&"pv"in e||(e=t);var r=1/e.mult,i=e.pv*r,a=new Number(i);return a.value=i,completeProperty(a,e,"unidimensional"),function(){return e.k&&e.getValue(),i=e.v*r,a.value!==i&&((a=new Number(i)).value=i,a[0]=i,completeProperty(a,e,"unidimensional")),a}}(r):function MultidimensionalPropertyInterface(t){t&&"pv"in t||(t=e);var r=1/t.mult,i=t.data&&t.data.l||t.pv.length,a=createTypedArray("float32",i),s=createTypedArray("float32",i);return a.value=s,completeProperty(a,t,"multidimensional"),function(){t.k&&t.getValue();for(var e=0;e<i;e+=1)s[e]=t.v[e]*r,a[e]=s[e];return a}}(r):defaultGetter}}(),TransformExpressionInterface=function(t){function _thisFunction(t){switch(t){case"scale":case"Scale":case"ADBE Scale":case 6:return _thisFunction.scale;case"rotation":case"Rotation":case"ADBE Rotation":case"ADBE Rotate Z":case 10:return _thisFunction.rotation;case"ADBE Rotate X":return _thisFunction.xRotation;case"ADBE Rotate Y":return _thisFunction.yRotation;case"position":case"Position":case"ADBE Position":case 2:return _thisFunction.position;case"ADBE Position_0":return _thisFunction.xPosition;case"ADBE Position_1":return _thisFunction.yPosition;case"ADBE Position_2":return _thisFunction.zPosition;case"anchorPoint":case"AnchorPoint":case"Anchor Point":case"ADBE AnchorPoint":case 1:return _thisFunction.anchorPoint;case"opacity":case"Opacity":case 11:return _thisFunction.opacity;default:return null}}var e,r,i,a;return Object.defineProperty(_thisFunction,"rotation",{get:ExpressionPropertyInterface(t.r||t.rz)}),Object.defineProperty(_thisFunction,"zRotation",{get:ExpressionPropertyInterface(t.rz||t.r)}),Object.defineProperty(_thisFunction,"xRotation",{get:ExpressionPropertyInterface(t.rx)}),Object.defineProperty(_thisFunction,"yRotation",{get:ExpressionPropertyInterface(t.ry)}),Object.defineProperty(_thisFunction,"scale",{get:ExpressionPropertyInterface(t.s)}),t.p?a=ExpressionPropertyInterface(t.p):(e=ExpressionPropertyInterface(t.px),r=ExpressionPropertyInterface(t.py),t.pz&&(i=ExpressionPropertyInterface(t.pz))),Object.defineProperty(_thisFunction,"position",{get:function get(){return t.p?a():[e(),r(),i?i():0]}}),Object.defineProperty(_thisFunction,"xPosition",{get:ExpressionPropertyInterface(t.px)}),Object.defineProperty(_thisFunction,"yPosition",{get:ExpressionPropertyInterface(t.py)}),Object.defineProperty(_thisFunction,"zPosition",{get:ExpressionPropertyInterface(t.pz)}),Object.defineProperty(_thisFunction,"anchorPoint",{get:ExpressionPropertyInterface(t.a)}),Object.defineProperty(_thisFunction,"opacity",{get:ExpressionPropertyInterface(t.o)}),Object.defineProperty(_thisFunction,"skew",{get:ExpressionPropertyInterface(t.sk)}),Object.defineProperty(_thisFunction,"skewAxis",{get:ExpressionPropertyInterface(t.sa)}),Object.defineProperty(_thisFunction,"orientation",{get:ExpressionPropertyInterface(t.or)}),_thisFunction},LayerExpressionInterface=function(){function getMatrix(t){var e=new Matrix;return void 0!==t?this._elem.finalTransform.mProp.getValueAtTime(t).clone(e):this._elem.finalTransform.mProp.applyToMatrix(e),e}function toWorldVec(t,e){var r=this.getMatrix(e);return r.props[12]=0,r.props[13]=0,r.props[14]=0,this.applyPoint(r,t)}function toWorld(t,e){var r=this.getMatrix(e);return this.applyPoint(r,t)}function fromWorldVec(t,e){var r=this.getMatrix(e);return r.props[12]=0,r.props[13]=0,r.props[14]=0,this.invertPoint(r,t)}function fromWorld(t,e){var r=this.getMatrix(e);return this.invertPoint(r,t)}function applyPoint(t,e){if(this._elem.hierarchy&&this._elem.hierarchy.length){var r,i=this._elem.hierarchy.length;for(r=0;r<i;r+=1)this._elem.hierarchy[r].finalTransform.mProp.applyToMatrix(t)}return t.applyToPointArray(e[0],e[1],e[2]||0)}function invertPoint(t,e){if(this._elem.hierarchy&&this._elem.hierarchy.length){var r,i=this._elem.hierarchy.length;for(r=0;r<i;r+=1)this._elem.hierarchy[r].finalTransform.mProp.applyToMatrix(t)}return t.inversePoint(e)}function fromComp(t){var e=new Matrix;if(e.reset(),this._elem.finalTransform.mProp.applyToMatrix(e),this._elem.hierarchy&&this._elem.hierarchy.length){var r,i=this._elem.hierarchy.length;for(r=0;r<i;r+=1)this._elem.hierarchy[r].finalTransform.mProp.applyToMatrix(e);return e.inversePoint(t)}return e.inversePoint(t)}function sampleImage(){return[1,1,1,1]}return function(t){var e;function _thisLayerFunction(t){switch(t){case"ADBE Root Vectors Group":case"Contents":case 2:return _thisLayerFunction.shapeInterface;case 1:case 6:case"Transform":case"transform":case"ADBE Transform Group":return e;case 4:case"ADBE Effect Parade":case"effects":case"Effects":return _thisLayerFunction.effect;case"ADBE Text Properties":return _thisLayerFunction.textInterface;default:return null}}_thisLayerFunction.getMatrix=getMatrix,_thisLayerFunction.invertPoint=invertPoint,_thisLayerFunction.applyPoint=applyPoint,_thisLayerFunction.toWorld=toWorld,_thisLayerFunction.toWorldVec=toWorldVec,_thisLayerFunction.fromWorld=fromWorld,_thisLayerFunction.fromWorldVec=fromWorldVec,_thisLayerFunction.toComp=toWorld,_thisLayerFunction.fromComp=fromComp,_thisLayerFunction.sampleImage=sampleImage,_thisLayerFunction.sourceRectAtTime=t.sourceRectAtTime.bind(t),_thisLayerFunction._elem=t;var r=getDescriptor(e=TransformExpressionInterface(t.finalTransform.mProp),"anchorPoint");return Object.defineProperties(_thisLayerFunction,{hasParent:{get:function get(){return t.hierarchy.length}},parent:{get:function get(){return t.hierarchy[0].layerInterface}},rotation:getDescriptor(e,"rotation"),scale:getDescriptor(e,"scale"),position:getDescriptor(e,"position"),opacity:getDescriptor(e,"opacity"),anchorPoint:r,anchor_point:r,transform:{get:function get(){return e}},active:{get:function get(){return t.isInRange}}}),_thisLayerFunction.startTime=t.data.st,_thisLayerFunction.index=t.data.ind,_thisLayerFunction.source=t.data.refId,_thisLayerFunction.height=0===t.data.ty?t.data.h:100,_thisLayerFunction.width=0===t.data.ty?t.data.w:100,_thisLayerFunction.inPoint=t.data.ip/t.comp.globalData.frameRate,_thisLayerFunction.outPoint=t.data.op/t.comp.globalData.frameRate,_thisLayerFunction._name=t.data.nm,_thisLayerFunction.registerMaskInterface=function _registerMaskInterface(e){_thisLayerFunction.mask=new MaskManagerInterface(e,t)},_thisLayerFunction.registerEffectsInterface=function _registerEffectsInterface(t){_thisLayerFunction.effect=t},_thisLayerFunction}}(),propertyGroupFactory=function(t,e){return function(r){return(r=void 0===r?1:r)<=0?t:e(r-1)}},PropertyInterface=function(t,e){var r={_name:t};return function _propertyGroup(t){return(t=void 0===t?1:t)<=0?r:e(t-1)}},EffectsExpressionInterface=function(){function createGroupInterface(t,e,r,i){function groupInterface(e){for(var r=t.ef,i=0,a=r.length;i<a;){if(e===r[i].nm||e===r[i].mn||e===r[i].ix)return 5===r[i].ty?n[i]:n[i]();i+=1}throw new Error}var a,s=propertyGroupFactory(groupInterface,r),n=[],o=t.ef.length;for(a=0;a<o;a+=1)5===t.ef[a].ty?n.push(createGroupInterface(t.ef[a],e.effectElements[a],e.effectElements[a].propertyGroup,i)):n.push(createValueInterface(e.effectElements[a],t.ef[a].ty,i,s));return"ADBE Color Control"===t.mn&&Object.defineProperty(groupInterface,"color",{get:function get(){return n[0]()}}),Object.defineProperties(groupInterface,{numProperties:{get:function get(){return t.np}},_name:{value:t.nm},propertyGroup:{value:s}}),groupInterface.enabled=0!==t.en,groupInterface.active=groupInterface.enabled,groupInterface}function createValueInterface(t,e,r,i){var a=ExpressionPropertyInterface(t.p);return t.p.setGroupProperty&&t.p.setGroupProperty(PropertyInterface("",i)),function interfaceFunction(){return 10===e?r.comp.compInterface(t.p.v):a()}}return{createEffectsInterface:function createEffectsInterface(t,e){if(t.effectsManager){var r,i=[],a=t.data.ef,s=t.effectsManager.effectElements.length;for(r=0;r<s;r+=1)i.push(createGroupInterface(a[r],t.effectsManager.effectElements[r],e,t));var n=t.data.ef||[],o=function groupInterface(t){for(r=0,s=n.length;r<s;){if(t===n[r].nm||t===n[r].mn||t===n[r].ix)return i[r];r+=1}return null};return Object.defineProperty(o,"numProperties",{get:function get(){return n.length}}),o}return null}}}(),ShapePathInterface=function pathInterfaceFactory(t,e,r){var i=e.sh;function interfaceFunction(t){return"Shape"===t||"shape"===t||"Path"===t||"path"===t||"ADBE Vector Shape"===t||2===t?interfaceFunction.path:null}var a=propertyGroupFactory(interfaceFunction,r);return i.setGroupProperty(PropertyInterface("Path",a)),Object.defineProperties(interfaceFunction,{path:{get:function get(){return i.k&&i.getValue(),i}},shape:{get:function get(){return i.k&&i.getValue(),i}},_name:{value:t.nm},ix:{value:t.ix},propertyIndex:{value:t.ix},mn:{value:t.mn},propertyGroup:{value:r}}),interfaceFunction},ShapeExpressionInterface=function(){function iterateElements(t,e,r){var i,a=[],s=t?t.length:0;for(i=0;i<s;i+=1)"gr"===t[i].ty?a.push(groupInterfaceFactory(t[i],e[i],r)):"fl"===t[i].ty?a.push(fillInterfaceFactory(t[i],e[i],r)):"st"===t[i].ty?a.push(strokeInterfaceFactory(t[i],e[i],r)):"tm"===t[i].ty?a.push(trimInterfaceFactory(t[i],e[i],r)):"tr"===t[i].ty||("el"===t[i].ty?a.push(ellipseInterfaceFactory(t[i],e[i],r)):"sr"===t[i].ty?a.push(starInterfaceFactory(t[i],e[i],r)):"sh"===t[i].ty?a.push(ShapePathInterface(t[i],e[i],r)):"rc"===t[i].ty?a.push(rectInterfaceFactory(t[i],e[i],r)):"rd"===t[i].ty?a.push(roundedInterfaceFactory(t[i],e[i],r)):"rp"===t[i].ty?a.push(repeaterInterfaceFactory(t[i],e[i],r)):"gf"===t[i].ty?a.push(gradientFillInterfaceFactory(t[i],e[i],r)):a.push(defaultInterfaceFactory(t[i],e[i])));return a}function groupInterfaceFactory(t,e,r){var i=function _interfaceFunction(t){switch(t){case"ADBE Vectors Group":case"Contents":case 2:return i.content;default:return i.transform}};i.propertyGroup=propertyGroupFactory(i,r);var a=function contentsInterfaceFactory(t,e,r){var i,a=function _interfaceFunction(t){for(var e=0,r=i.length;e<r;){if(i[e]._name===t||i[e].mn===t||i[e].propertyIndex===t||i[e].ix===t||i[e].ind===t)return i[e];e+=1}return"number"==typeof t?i[t-1]:null};a.propertyGroup=propertyGroupFactory(a,r),i=iterateElements(t.it,e.it,a.propertyGroup),a.numProperties=i.length;var s=transformInterfaceFactory(t.it[t.it.length-1],e.it[e.it.length-1],a.propertyGroup);return a.transform=s,a.propertyIndex=t.cix,a._name=t.nm,a}(t,e,i.propertyGroup),s=transformInterfaceFactory(t.it[t.it.length-1],e.it[e.it.length-1],i.propertyGroup);return i.content=a,i.transform=s,Object.defineProperty(i,"_name",{get:function get(){return t.nm}}),i.numProperties=t.np,i.propertyIndex=t.ix,i.nm=t.nm,i.mn=t.mn,i}function fillInterfaceFactory(t,e,r){function interfaceFunction(t){return"Color"===t||"color"===t?interfaceFunction.color:"Opacity"===t||"opacity"===t?interfaceFunction.opacity:null}return Object.defineProperties(interfaceFunction,{color:{get:ExpressionPropertyInterface(e.c)},opacity:{get:ExpressionPropertyInterface(e.o)},_name:{value:t.nm},mn:{value:t.mn}}),e.c.setGroupProperty(PropertyInterface("Color",r)),e.o.setGroupProperty(PropertyInterface("Opacity",r)),interfaceFunction}function gradientFillInterfaceFactory(t,e,r){function interfaceFunction(t){return"Start Point"===t||"start point"===t?interfaceFunction.startPoint:"End Point"===t||"end point"===t?interfaceFunction.endPoint:"Opacity"===t||"opacity"===t?interfaceFunction.opacity:null}return Object.defineProperties(interfaceFunction,{startPoint:{get:ExpressionPropertyInterface(e.s)},endPoint:{get:ExpressionPropertyInterface(e.e)},opacity:{get:ExpressionPropertyInterface(e.o)},type:{get:function get(){return"a"}},_name:{value:t.nm},mn:{value:t.mn}}),e.s.setGroupProperty(PropertyInterface("Start Point",r)),e.e.setGroupProperty(PropertyInterface("End Point",r)),e.o.setGroupProperty(PropertyInterface("Opacity",r)),interfaceFunction}function defaultInterfaceFactory(){return function interfaceFunction(){return null}}function strokeInterfaceFactory(t,e,r){var i,a=propertyGroupFactory(interfaceFunction,r),s=propertyGroupFactory(o,a);function addPropertyToDashOb(r){Object.defineProperty(o,t.d[r].nm,{get:ExpressionPropertyInterface(e.d.dataProps[r].p)})}var n=t.d?t.d.length:0,o={};for(i=0;i<n;i+=1)addPropertyToDashOb(i),e.d.dataProps[i].p.setGroupProperty(s);function interfaceFunction(t){return"Color"===t||"color"===t?interfaceFunction.color:"Opacity"===t||"opacity"===t?interfaceFunction.opacity:"Stroke Width"===t||"stroke width"===t?interfaceFunction.strokeWidth:null}return Object.defineProperties(interfaceFunction,{color:{get:ExpressionPropertyInterface(e.c)},opacity:{get:ExpressionPropertyInterface(e.o)},strokeWidth:{get:ExpressionPropertyInterface(e.w)},dash:{get:function get(){return o}},_name:{value:t.nm},mn:{value:t.mn}}),e.c.setGroupProperty(PropertyInterface("Color",a)),e.o.setGroupProperty(PropertyInterface("Opacity",a)),e.w.setGroupProperty(PropertyInterface("Stroke Width",a)),interfaceFunction}function trimInterfaceFactory(t,e,r){function interfaceFunction(e){return e===t.e.ix||"End"===e||"end"===e?interfaceFunction.end:e===t.s.ix?interfaceFunction.start:e===t.o.ix?interfaceFunction.offset:null}var i=propertyGroupFactory(interfaceFunction,r);return interfaceFunction.propertyIndex=t.ix,e.s.setGroupProperty(PropertyInterface("Start",i)),e.e.setGroupProperty(PropertyInterface("End",i)),e.o.setGroupProperty(PropertyInterface("Offset",i)),interfaceFunction.propertyIndex=t.ix,interfaceFunction.propertyGroup=r,Object.defineProperties(interfaceFunction,{start:{get:ExpressionPropertyInterface(e.s)},end:{get:ExpressionPropertyInterface(e.e)},offset:{get:ExpressionPropertyInterface(e.o)},_name:{value:t.nm}}),interfaceFunction.mn=t.mn,interfaceFunction}function transformInterfaceFactory(t,e,r){function interfaceFunction(e){return t.a.ix===e||"Anchor Point"===e?interfaceFunction.anchorPoint:t.o.ix===e||"Opacity"===e?interfaceFunction.opacity:t.p.ix===e||"Position"===e?interfaceFunction.position:t.r.ix===e||"Rotation"===e||"ADBE Vector Rotation"===e?interfaceFunction.rotation:t.s.ix===e||"Scale"===e?interfaceFunction.scale:t.sk&&t.sk.ix===e||"Skew"===e?interfaceFunction.skew:t.sa&&t.sa.ix===e||"Skew Axis"===e?interfaceFunction.skewAxis:null}var i=propertyGroupFactory(interfaceFunction,r);return e.transform.mProps.o.setGroupProperty(PropertyInterface("Opacity",i)),e.transform.mProps.p.setGroupProperty(PropertyInterface("Position",i)),e.transform.mProps.a.setGroupProperty(PropertyInterface("Anchor Point",i)),e.transform.mProps.s.setGroupProperty(PropertyInterface("Scale",i)),e.transform.mProps.r.setGroupProperty(PropertyInterface("Rotation",i)),e.transform.mProps.sk&&(e.transform.mProps.sk.setGroupProperty(PropertyInterface("Skew",i)),e.transform.mProps.sa.setGroupProperty(PropertyInterface("Skew Angle",i))),e.transform.op.setGroupProperty(PropertyInterface("Opacity",i)),Object.defineProperties(interfaceFunction,{opacity:{get:ExpressionPropertyInterface(e.transform.mProps.o)},position:{get:ExpressionPropertyInterface(e.transform.mProps.p)},anchorPoint:{get:ExpressionPropertyInterface(e.transform.mProps.a)},scale:{get:ExpressionPropertyInterface(e.transform.mProps.s)},rotation:{get:ExpressionPropertyInterface(e.transform.mProps.r)},skew:{get:ExpressionPropertyInterface(e.transform.mProps.sk)},skewAxis:{get:ExpressionPropertyInterface(e.transform.mProps.sa)},_name:{value:t.nm}}),interfaceFunction.ty="tr",interfaceFunction.mn=t.mn,interfaceFunction.propertyGroup=r,interfaceFunction}function ellipseInterfaceFactory(t,e,r){function interfaceFunction(e){return t.p.ix===e?interfaceFunction.position:t.s.ix===e?interfaceFunction.size:null}var i=propertyGroupFactory(interfaceFunction,r);interfaceFunction.propertyIndex=t.ix;var a="tm"===e.sh.ty?e.sh.prop:e.sh;return a.s.setGroupProperty(PropertyInterface("Size",i)),a.p.setGroupProperty(PropertyInterface("Position",i)),Object.defineProperties(interfaceFunction,{size:{get:ExpressionPropertyInterface(a.s)},position:{get:ExpressionPropertyInterface(a.p)},_name:{value:t.nm}}),interfaceFunction.mn=t.mn,interfaceFunction}function starInterfaceFactory(t,e,r){function interfaceFunction(e){return t.p.ix===e?interfaceFunction.position:t.r.ix===e?interfaceFunction.rotation:t.pt.ix===e?interfaceFunction.points:t.or.ix===e||"ADBE Vector Star Outer Radius"===e?interfaceFunction.outerRadius:t.os.ix===e?interfaceFunction.outerRoundness:!t.ir||t.ir.ix!==e&&"ADBE Vector Star Inner Radius"!==e?t.is&&t.is.ix===e?interfaceFunction.innerRoundness:null:interfaceFunction.innerRadius}var i=propertyGroupFactory(interfaceFunction,r),a="tm"===e.sh.ty?e.sh.prop:e.sh;return interfaceFunction.propertyIndex=t.ix,a.or.setGroupProperty(PropertyInterface("Outer Radius",i)),a.os.setGroupProperty(PropertyInterface("Outer Roundness",i)),a.pt.setGroupProperty(PropertyInterface("Points",i)),a.p.setGroupProperty(PropertyInterface("Position",i)),a.r.setGroupProperty(PropertyInterface("Rotation",i)),t.ir&&(a.ir.setGroupProperty(PropertyInterface("Inner Radius",i)),a.is.setGroupProperty(PropertyInterface("Inner Roundness",i))),Object.defineProperties(interfaceFunction,{position:{get:ExpressionPropertyInterface(a.p)},rotation:{get:ExpressionPropertyInterface(a.r)},points:{get:ExpressionPropertyInterface(a.pt)},outerRadius:{get:ExpressionPropertyInterface(a.or)},outerRoundness:{get:ExpressionPropertyInterface(a.os)},innerRadius:{get:ExpressionPropertyInterface(a.ir)},innerRoundness:{get:ExpressionPropertyInterface(a.is)},_name:{value:t.nm}}),interfaceFunction.mn=t.mn,interfaceFunction}function rectInterfaceFactory(t,e,r){function interfaceFunction(e){return t.p.ix===e?interfaceFunction.position:t.r.ix===e?interfaceFunction.roundness:t.s.ix===e||"Size"===e||"ADBE Vector Rect Size"===e?interfaceFunction.size:null}var i=propertyGroupFactory(interfaceFunction,r),a="tm"===e.sh.ty?e.sh.prop:e.sh;return interfaceFunction.propertyIndex=t.ix,a.p.setGroupProperty(PropertyInterface("Position",i)),a.s.setGroupProperty(PropertyInterface("Size",i)),a.r.setGroupProperty(PropertyInterface("Rotation",i)),Object.defineProperties(interfaceFunction,{position:{get:ExpressionPropertyInterface(a.p)},roundness:{get:ExpressionPropertyInterface(a.r)},size:{get:ExpressionPropertyInterface(a.s)},_name:{value:t.nm}}),interfaceFunction.mn=t.mn,interfaceFunction}function roundedInterfaceFactory(t,e,r){function interfaceFunction(e){return t.r.ix===e||"Round Corners 1"===e?interfaceFunction.radius:null}var i=propertyGroupFactory(interfaceFunction,r),a=e;return interfaceFunction.propertyIndex=t.ix,a.rd.setGroupProperty(PropertyInterface("Radius",i)),Object.defineProperties(interfaceFunction,{radius:{get:ExpressionPropertyInterface(a.rd)},_name:{value:t.nm}}),interfaceFunction.mn=t.mn,interfaceFunction}function repeaterInterfaceFactory(t,e,r){function interfaceFunction(e){return t.c.ix===e||"Copies"===e?interfaceFunction.copies:t.o.ix===e||"Offset"===e?interfaceFunction.offset:null}var i=propertyGroupFactory(interfaceFunction,r),a=e;return interfaceFunction.propertyIndex=t.ix,a.c.setGroupProperty(PropertyInterface("Copies",i)),a.o.setGroupProperty(PropertyInterface("Offset",i)),Object.defineProperties(interfaceFunction,{copies:{get:ExpressionPropertyInterface(a.c)},offset:{get:ExpressionPropertyInterface(a.o)},_name:{value:t.nm}}),interfaceFunction.mn=t.mn,interfaceFunction}return function(t,e,r){var i;function _interfaceFunction(t){if("number"==typeof t)return 0===(t=void 0===t?1:t)?r:i[t-1];for(var e=0,a=i.length;e<a;){if(i[e]._name===t)return i[e];e+=1}return null}return _interfaceFunction.propertyGroup=propertyGroupFactory(_interfaceFunction,function parentGroupWrapper(){return r}),i=iterateElements(t,e,_interfaceFunction.propertyGroup),_interfaceFunction.numProperties=i.length,_interfaceFunction._name="Contents",_interfaceFunction}}(),TextExpressionInterface=function(t){var e;function _thisLayerFunction(t){return"ADBE Text Document"===t?_thisLayerFunction.sourceText:null}return Object.defineProperty(_thisLayerFunction,"sourceText",{get:function get(){t.textProperty.getValue();var r=t.textProperty.currentData.t;return e&&r===e.value||((e=new String(r)).value=r||new String(r),Object.defineProperty(e,"style",{get:function get(){return{fillColor:t.textProperty.currentData.fc}}})),e}}),_thisLayerFunction};function _typeof(t){return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},_typeof(t)}var FootageInterface=(dataInterfaceFactory=function dataInterfaceFactory(t){function interfaceFunction(t){return"Outline"===t?interfaceFunction.outlineInterface():null}return interfaceFunction._name="Outline",interfaceFunction.outlineInterface=function outlineInterfaceFactory(t){var e="",r=t.getFootageData();function searchProperty(t){if(r[t])return e=t,"object"===_typeof(r=r[t])?searchProperty:r;var i=t.indexOf(e);if(-1!==i){var a=parseInt(t.substr(i+e.length),10);return"object"===_typeof(r=r[a])?searchProperty:r}return""}return function init(){return e="",r=t.getFootageData(),searchProperty}}(t),interfaceFunction},function(t){function _interfaceFunction(t){return"Data"===t?_interfaceFunction.dataInterface:null}return _interfaceFunction._name="Data",_interfaceFunction.dataInterface=dataInterfaceFactory(t),_interfaceFunction}),dataInterfaceFactory,interfaces={layer:LayerExpressionInterface,effects:EffectsExpressionInterface,comp:CompExpressionInterface,shape:ShapeExpressionInterface,text:TextExpressionInterface,footage:FootageInterface};function getInterface(t){return interfaces[t]||null}var expressionHelpers={searchExpressions:function searchExpressions(t,e,r){e.x&&(r.k=!0,r.x=!0,r.initiateExpression=ExpressionManager.initiateExpression,r.effectsSequence.push(r.initiateExpression(t,e,r).bind(r)))},getSpeedAtTime:function getSpeedAtTime(t){var e=this.getValueAtTime(t),r=this.getValueAtTime(t+-.01),i=0;if(e.length){var a;for(a=0;a<e.length;a+=1)i+=Math.pow(r[a]-e[a],2);i=100*Math.sqrt(i)}else i=0;return i},getVelocityAtTime:function getVelocityAtTime(t){if(void 0!==this.vel)return this.vel;var e,r,i=-.001,a=this.getValueAtTime(t),s=this.getValueAtTime(t+i);if(a.length)for(e=createTypedArray("float32",a.length),r=0;r<a.length;r+=1)e[r]=(s[r]-a[r])/i;else e=(s-a)/i;return e},getValueAtTime:function getValueAtTime(t){return t*=this.elem.globalData.frameRate,(t-=this.offsetTime)!==this._cachingAtTime.lastFrame&&(this._cachingAtTime.lastIndex=this._cachingAtTime.lastFrame<t?this._cachingAtTime.lastIndex:0,this._cachingAtTime.value=this.interpolateValue(t,this._cachingAtTime),this._cachingAtTime.lastFrame=t),this._cachingAtTime.value},getStaticValueAtTime:function getStaticValueAtTime(){return this.pv},setGroupProperty:function setGroupProperty(t){this.propertyGroup=t}};function addPropertyDecorator(){function loopOut(t,e,r){if(!this.k||!this.keyframes)return this.pv;t=t?t.toLowerCase():"";var i,a,s,n,o,h=this.comp.renderedFrame,l=this.keyframes,p=l[l.length-1].t;if(h<=p)return this.pv;if(r?a=p-(i=e?Math.abs(p-this.elem.comp.globalData.frameRate*e):Math.max(0,p-this.elem.data.ip)):((!e||e>l.length-1)&&(e=l.length-1),i=p-(a=l[l.length-1-e].t)),"pingpong"===t){if(Math.floor((h-a)/i)%2!=0)return this.getValueAtTime((i-(h-a)%i+a)/this.comp.globalData.frameRate,0)}else{if("offset"===t){var c=this.getValueAtTime(a/this.comp.globalData.frameRate,0),f=this.getValueAtTime(p/this.comp.globalData.frameRate,0),m=this.getValueAtTime(((h-a)%i+a)/this.comp.globalData.frameRate,0),u=Math.floor((h-a)/i);if(this.pv.length){for(n=(o=new Array(c.length)).length,s=0;s<n;s+=1)o[s]=(f[s]-c[s])*u+m[s];return o}return(f-c)*u+m}if("continue"===t){var d=this.getValueAtTime(p/this.comp.globalData.frameRate,0),y=this.getValueAtTime((p-.001)/this.comp.globalData.frameRate,0);if(this.pv.length){for(n=(o=new Array(d.length)).length,s=0;s<n;s+=1)o[s]=d[s]+(d[s]-y[s])*((h-p)/this.comp.globalData.frameRate)/5e-4;return o}return d+(h-p)/.001*(d-y)}}return this.getValueAtTime(((h-a)%i+a)/this.comp.globalData.frameRate,0)}function loopIn(t,e,r){if(!this.k)return this.pv;t=t?t.toLowerCase():"";var i,a,s,n,o,h=this.comp.renderedFrame,l=this.keyframes,p=l[0].t;if(h>=p)return this.pv;if(r?a=p+(i=e?Math.abs(this.elem.comp.globalData.frameRate*e):Math.max(0,this.elem.data.op-p)):((!e||e>l.length-1)&&(e=l.length-1),i=(a=l[e].t)-p),"pingpong"===t){if(Math.floor((p-h)/i)%2==0)return this.getValueAtTime(((p-h)%i+p)/this.comp.globalData.frameRate,0)}else{if("offset"===t){var c=this.getValueAtTime(p/this.comp.globalData.frameRate,0),f=this.getValueAtTime(a/this.comp.globalData.frameRate,0),m=this.getValueAtTime((i-(p-h)%i+p)/this.comp.globalData.frameRate,0),u=Math.floor((p-h)/i)+1;if(this.pv.length){for(n=(o=new Array(c.length)).length,s=0;s<n;s+=1)o[s]=m[s]-(f[s]-c[s])*u;return o}return m-(f-c)*u}if("continue"===t){var d=this.getValueAtTime(p/this.comp.globalData.frameRate,0),y=this.getValueAtTime((p+.001)/this.comp.globalData.frameRate,0);if(this.pv.length){for(n=(o=new Array(d.length)).length,s=0;s<n;s+=1)o[s]=d[s]+(d[s]-y[s])*(p-h)/.001;return o}return d+(d-y)*(p-h)/.001}}return this.getValueAtTime((i-((p-h)%i+p))/this.comp.globalData.frameRate,0)}function smooth(t,e){if(!this.k)return this.pv;if(t=.5*(t||.4),(e=Math.floor(e||5))<=1)return this.pv;var r,i,a=this.comp.renderedFrame/this.comp.globalData.frameRate,s=a-t,n=e>1?(a+t-s)/(e-1):1,o=0,h=0;for(r=this.pv.length?createTypedArray("float32",this.pv.length):0;o<e;){if(i=this.getValueAtTime(s+o*n),this.pv.length)for(h=0;h<this.pv.length;h+=1)r[h]+=i[h];else r+=i;o+=1}if(this.pv.length)for(h=0;h<this.pv.length;h+=1)r[h]/=e;else r/=e;return r}function getTransformValueAtTime(t){this._transformCachingAtTime||(this._transformCachingAtTime={v:new Matrix});var e=this._transformCachingAtTime.v;if(e.cloneFromProps(this.pre.props),this.appliedTransformations<1){var r=this.a.getValueAtTime(t);e.translate(-r[0]*this.a.mult,-r[1]*this.a.mult,r[2]*this.a.mult)}if(this.appliedTransformations<2){var i=this.s.getValueAtTime(t);e.scale(i[0]*this.s.mult,i[1]*this.s.mult,i[2]*this.s.mult)}if(this.sk&&this.appliedTransformations<3){var a=this.sk.getValueAtTime(t),s=this.sa.getValueAtTime(t);e.skewFromAxis(-a*this.sk.mult,s*this.sa.mult)}if(this.r&&this.appliedTransformations<4){var n=this.r.getValueAtTime(t);e.rotate(-n*this.r.mult)}else if(!this.r&&this.appliedTransformations<4){var o=this.rz.getValueAtTime(t),h=this.ry.getValueAtTime(t),l=this.rx.getValueAtTime(t),p=this.or.getValueAtTime(t);e.rotateZ(-o*this.rz.mult).rotateY(h*this.ry.mult).rotateX(l*this.rx.mult).rotateZ(-p[2]*this.or.mult).rotateY(p[1]*this.or.mult).rotateX(p[0]*this.or.mult)}if(this.data.p&&this.data.p.s){var c=this.px.getValueAtTime(t),f=this.py.getValueAtTime(t);if(this.data.p.z){var m=this.pz.getValueAtTime(t);e.translate(c*this.px.mult,f*this.py.mult,-m*this.pz.mult)}else e.translate(c*this.px.mult,f*this.py.mult,0)}else{var u=this.p.getValueAtTime(t);e.translate(u[0]*this.p.mult,u[1]*this.p.mult,-u[2]*this.p.mult)}return e}function getTransformStaticValueAtTime(){return this.v.clone(new Matrix)}var t=TransformPropertyFactory.getTransformProperty;TransformPropertyFactory.getTransformProperty=function(e,r,i){var a=t(e,r,i);return a.dynamicProperties.length?a.getValueAtTime=getTransformValueAtTime.bind(a):a.getValueAtTime=getTransformStaticValueAtTime.bind(a),a.setGroupProperty=expressionHelpers.setGroupProperty,a};var e=PropertyFactory.getProp;PropertyFactory.getProp=function(t,r,i,a,s){var n=e(t,r,i,a,s);n.kf?n.getValueAtTime=expressionHelpers.getValueAtTime.bind(n):n.getValueAtTime=expressionHelpers.getStaticValueAtTime.bind(n),n.setGroupProperty=expressionHelpers.setGroupProperty,n.loopOut=loopOut,n.loopIn=loopIn,n.smooth=smooth,n.getVelocityAtTime=expressionHelpers.getVelocityAtTime.bind(n),n.getSpeedAtTime=expressionHelpers.getSpeedAtTime.bind(n),n.numKeys=1===r.a?r.k.length:0,n.propertyIndex=r.ix;var o=0;return 0!==i&&(o=createTypedArray("float32",1===r.a?r.k[0].s.length:r.k.length)),n._cachingAtTime={lastFrame:initialDefaultFrame,lastIndex:0,value:o},expressionHelpers.searchExpressions(t,r,n),n.k&&s.addDynamicProperty(n),n};var r=ShapePropertyFactory.getConstructorFunction(),i=ShapePropertyFactory.getKeyframedConstructorFunction();function ShapeExpressions(){}ShapeExpressions.prototype={vertices:function vertices(t,e){this.k&&this.getValue();var r,i=this.v;void 0!==e&&(i=this.getValueAtTime(e,0));var a=i._length,vertices=i[t],s=i.v,n=createSizedArray(a);for(r=0;r<a;r+=1)n[r]="i"===t||"o"===t?[vertices[r][0]-s[r][0],vertices[r][1]-s[r][1]]:[vertices[r][0],vertices[r][1]];return n},points:function points(t){return this.vertices("v",t)},inTangents:function inTangents(t){return this.vertices("i",t)},outTangents:function outTangents(t){return this.vertices("o",t)},isClosed:function isClosed(){return this.v.c},pointOnPath:function pointOnPath(t,e){var r=this.v;void 0!==e&&(r=this.getValueAtTime(e,0)),this._segmentsLength||(this._segmentsLength=bez.getSegmentsLength(r));for(var i,a=this._segmentsLength,s=a.lengths,n=a.totalLength*t,o=0,h=s.length,l=0;o<h;){if(l+s[o].addedLength>n){var p=o,c=r.c&&o===h-1?0:o+1,f=(n-l)/s[o].addedLength;i=bez.getPointInSegment(r.v[p],r.v[c],r.o[p],r.i[c],f,s[o]);break}l+=s[o].addedLength,o+=1}return i||(i=r.c?[r.v[0][0],r.v[0][1]]:[r.v[r._length-1][0],r.v[r._length-1][1]]),i},vectorOnPath:function vectorOnPath(t,e,r){1==t?t=this.v.c:0==t&&(t=.999);var i=this.pointOnPath(t,e),a=this.pointOnPath(t+.001,e),s=a[0]-i[0],n=a[1]-i[1],o=Math.sqrt(Math.pow(s,2)+Math.pow(n,2));return 0===o?[0,0]:"tangent"===r?[s/o,n/o]:[-n/o,s/o]},tangentOnPath:function tangentOnPath(t,e){return this.vectorOnPath(t,e,"tangent")},normalOnPath:function normalOnPath(t,e){return this.vectorOnPath(t,e,"normal")},setGroupProperty:expressionHelpers.setGroupProperty,getValueAtTime:expressionHelpers.getStaticValueAtTime},extendPrototype([ShapeExpressions],r),extendPrototype([ShapeExpressions],i),i.prototype.getValueAtTime=function getShapeValueAtTime(t){return this._cachingAtTime||(this._cachingAtTime={shapeValue:shapePool.clone(this.pv),lastIndex:0,lastTime:initialDefaultFrame}),t*=this.elem.globalData.frameRate,(t-=this.offsetTime)!==this._cachingAtTime.lastTime&&(this._cachingAtTime.lastIndex=this._cachingAtTime.lastTime<t?this._caching.lastIndex:0,this._cachingAtTime.lastTime=t,this.interpolateShape(t,this._cachingAtTime.shapeValue,this._cachingAtTime)),this._cachingAtTime.shapeValue},i.prototype.initiateExpression=ExpressionManager.initiateExpression;var a=ShapePropertyFactory.getShapeProp;ShapePropertyFactory.getShapeProp=function(t,e,r,i,s){var n=a(t,e,r,i,s);return n.propertyIndex=e.ix,n.lock=!1,3===r?expressionHelpers.searchExpressions(t,e.pt,n):4===r&&expressionHelpers.searchExpressions(t,e.ks,n),n.k&&t.addDynamicProperty(n),n}}function initialize$1(){addPropertyDecorator()}function addDecorator(){TextProperty.prototype.getExpressionValue=function(t,e){var r=this.calculateExpression(e);if(t.t!==r){var i={};return this.copyData(i,t),i.t=r.toString(),i.__complete=!1,i}return t},TextProperty.prototype.searchProperty=function(){var t=this.searchKeyframes(),e=this.searchExpressions();return this.kf=t||e,this.kf},TextProperty.prototype.searchExpressions=function searchExpressions(){return this.data.d.x?(this.calculateExpression=ExpressionManager.initiateExpression.bind(this)(this.elem,this.data.d,this),this.addEffect(this.getExpressionValue.bind(this)),!0):null}}function initialize(){addDecorator()}function SVGComposableEffect(){}SVGComposableEffect.prototype={createMergeNode:function createMergeNode(t,e){var r,i,a=createNS("feMerge");for(a.setAttribute("result",t),i=0;i<e.length;i+=1)(r=createNS("feMergeNode")).setAttribute("in",e[i]),a.appendChild(r),a.appendChild(r);return a}};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";function SVGTintFilter(t,e,r,i,a){this.filterManager=e;var s=createNS("feColorMatrix");s.setAttribute("type","matrix"),s.setAttribute("color-interpolation-filters","linearRGB"),s.setAttribute("values",linearFilterValue+" 1 0"),this.linearFilter=s,s.setAttribute("result",i+"_tint_1"),t.appendChild(s),(s=createNS("feColorMatrix")).setAttribute("type","matrix"),s.setAttribute("color-interpolation-filters","sRGB"),s.setAttribute("values","1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0"),s.setAttribute("result",i+"_tint_2"),t.appendChild(s),this.matrixFilter=s;var n=this.createMergeNode(i,[a,i+"_tint_1",i+"_tint_2"]);t.appendChild(n)}function SVGFillFilter(t,e,r,i){this.filterManager=e;var a=createNS("feColorMatrix");a.setAttribute("type","matrix"),a.setAttribute("color-interpolation-filters","sRGB"),a.setAttribute("values","1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0"),a.setAttribute("result",i),t.appendChild(a),this.matrixFilter=a}function SVGStrokeEffect(t,e,r){this.initialized=!1,this.filterManager=e,this.elem=r,this.paths=[]}function SVGTritoneFilter(t,e,r,i){this.filterManager=e;var a=createNS("feColorMatrix");a.setAttribute("type","matrix"),a.setAttribute("color-interpolation-filters","linearRGB"),a.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"),t.appendChild(a);var s=createNS("feComponentTransfer");s.setAttribute("color-interpolation-filters","sRGB"),s.setAttribute("result",i),this.matrixFilter=s;var n=createNS("feFuncR");n.setAttribute("type","table"),s.appendChild(n),this.feFuncR=n;var o=createNS("feFuncG");o.setAttribute("type","table"),s.appendChild(o),this.feFuncG=o;var h=createNS("feFuncB");h.setAttribute("type","table"),s.appendChild(h),this.feFuncB=h,t.appendChild(s)}function SVGProLevelsFilter(t,e,r,i){this.filterManager=e;var a=this.filterManager.effectElements,s=createNS("feComponentTransfer");(a[10].p.k||0!==a[10].p.v||a[11].p.k||1!==a[11].p.v||a[12].p.k||1!==a[12].p.v||a[13].p.k||0!==a[13].p.v||a[14].p.k||1!==a[14].p.v)&&(this.feFuncR=this.createFeFunc("feFuncR",s)),(a[17].p.k||0!==a[17].p.v||a[18].p.k||1!==a[18].p.v||a[19].p.k||1!==a[19].p.v||a[20].p.k||0!==a[20].p.v||a[21].p.k||1!==a[21].p.v)&&(this.feFuncG=this.createFeFunc("feFuncG",s)),(a[24].p.k||0!==a[24].p.v||a[25].p.k||1!==a[25].p.v||a[26].p.k||1!==a[26].p.v||a[27].p.k||0!==a[27].p.v||a[28].p.k||1!==a[28].p.v)&&(this.feFuncB=this.createFeFunc("feFuncB",s)),(a[31].p.k||0!==a[31].p.v||a[32].p.k||1!==a[32].p.v||a[33].p.k||1!==a[33].p.v||a[34].p.k||0!==a[34].p.v||a[35].p.k||1!==a[35].p.v)&&(this.feFuncA=this.createFeFunc("feFuncA",s)),(this.feFuncR||this.feFuncG||this.feFuncB||this.feFuncA)&&(s.setAttribute("color-interpolation-filters","sRGB"),t.appendChild(s)),(a[3].p.k||0!==a[3].p.v||a[4].p.k||1!==a[4].p.v||a[5].p.k||1!==a[5].p.v||a[6].p.k||0!==a[6].p.v||a[7].p.k||1!==a[7].p.v)&&((s=createNS("feComponentTransfer")).setAttribute("color-interpolation-filters","sRGB"),s.setAttribute("result",i),t.appendChild(s),this.feFuncRComposed=this.createFeFunc("feFuncR",s),this.feFuncGComposed=this.createFeFunc("feFuncG",s),this.feFuncBComposed=this.createFeFunc("feFuncB",s))}function SVGDropShadowEffect(t,e,r,i,a){var s=e.container.globalData.renderConfig.filterSize,n=e.data.fs||s;t.setAttribute("x",n.x||s.x),t.setAttribute("y",n.y||s.y),t.setAttribute("width",n.width||s.width),t.setAttribute("height",n.height||s.height),this.filterManager=e;var o=createNS("feGaussianBlur");o.setAttribute("in","SourceAlpha"),o.setAttribute("result",i+"_drop_shadow_1"),o.setAttribute("stdDeviation","0"),this.feGaussianBlur=o,t.appendChild(o);var h=createNS("feOffset");h.setAttribute("dx","25"),h.setAttribute("dy","0"),h.setAttribute("in",i+"_drop_shadow_1"),h.setAttribute("result",i+"_drop_shadow_2"),this.feOffset=h,t.appendChild(h);var l=createNS("feFlood");l.setAttribute("flood-color","#00ff00"),l.setAttribute("flood-opacity","1"),l.setAttribute("result",i+"_drop_shadow_3"),this.feFlood=l,t.appendChild(l);var p=createNS("feComposite");p.setAttribute("in",i+"_drop_shadow_3"),p.setAttribute("in2",i+"_drop_shadow_2"),p.setAttribute("operator","in"),p.setAttribute("result",i+"_drop_shadow_4"),t.appendChild(p);var c=this.createMergeNode(i,[i+"_drop_shadow_4",a]);t.appendChild(c)}extendPrototype([SVGComposableEffect],SVGTintFilter),SVGTintFilter.prototype.renderFrame=function(t){if(t||this.filterManager._mdf){var e=this.filterManager.effectElements[0].p.v,r=this.filterManager.effectElements[1].p.v,i=this.filterManager.effectElements[2].p.v/100;this.linearFilter.setAttribute("values",linearFilterValue+" "+i+" 0"),this.matrixFilter.setAttribute("values",r[0]-e[0]+" 0 0 0 "+e[0]+" "+(r[1]-e[1])+" 0 0 0 "+e[1]+" "+(r[2]-e[2])+" 0 0 0 "+e[2]+" 0 0 0 1 0")}},SVGFillFilter.prototype.renderFrame=function(t){if(t||this.filterManager._mdf){var e=this.filterManager.effectElements[2].p.v,r=this.filterManager.effectElements[6].p.v;this.matrixFilter.setAttribute("values","0 0 0 0 "+e[0]+" 0 0 0 0 "+e[1]+" 0 0 0 0 "+e[2]+" 0 0 0 "+r+" 0")}},SVGStrokeEffect.prototype.initialize=function(){var t,e,r,i,a=this.elem.layerElement.children||this.elem.layerElement.childNodes;for(1===this.filterManager.effectElements[1].p.v?(i=this.elem.maskManager.masksProperties.length,r=0):i=1+(r=this.filterManager.effectElements[0].p.v-1),(e=createNS("g")).setAttribute("fill","none"),e.setAttribute("stroke-linecap","round"),e.setAttribute("stroke-dashoffset",1);r<i;r+=1)t=createNS("path"),e.appendChild(t),this.paths.push({p:t,m:r});if(3===this.filterManager.effectElements[10].p.v){var s=createNS("mask"),n=createElementID();s.setAttribute("id",n),s.setAttribute("mask-type","alpha"),s.appendChild(e),this.elem.globalData.defs.appendChild(s);var o=createNS("g");for(o.setAttribute("mask","url("+getLocationHref()+"#"+n+")");a[0];)o.appendChild(a[0]);this.elem.layerElement.appendChild(o),this.masker=s,e.setAttribute("stroke","#fff")}else if(1===this.filterManager.effectElements[10].p.v||2===this.filterManager.effectElements[10].p.v){if(2===this.filterManager.effectElements[10].p.v)for(a=this.elem.layerElement.children||this.elem.layerElement.childNodes;a.length;)this.elem.layerElement.removeChild(a[0]);this.elem.layerElement.appendChild(e),this.elem.layerElement.removeAttribute("mask"),e.setAttribute("stroke","#fff")}this.initialized=!0,this.pathMasker=e},SVGStrokeEffect.prototype.renderFrame=function(t){var e;this.initialized||this.initialize();var r,i,a=this.paths.length;for(e=0;e<a;e+=1)if(-1!==this.paths[e].m&&(r=this.elem.maskManager.viewData[this.paths[e].m],i=this.paths[e].p,(t||this.filterManager._mdf||r.prop._mdf)&&i.setAttribute("d",r.lastPath),t||this.filterManager.effectElements[9].p._mdf||this.filterManager.effectElements[4].p._mdf||this.filterManager.effectElements[7].p._mdf||this.filterManager.effectElements[8].p._mdf||r.prop._mdf)){var s;if(0!==this.filterManager.effectElements[7].p.v||100!==this.filterManager.effectElements[8].p.v){var n=.01*Math.min(this.filterManager.effectElements[7].p.v,this.filterManager.effectElements[8].p.v),o=.01*Math.max(this.filterManager.effectElements[7].p.v,this.filterManager.effectElements[8].p.v),h=i.getTotalLength();s="0 0 0 "+h*n+" ";var l,p=h*(o-n),c=1+2*this.filterManager.effectElements[4].p.v*this.filterManager.effectElements[9].p.v*.01,f=Math.floor(p/c);for(l=0;l<f;l+=1)s+="1 "+2*this.filterManager.effectElements[4].p.v*this.filterManager.effectElements[9].p.v*.01+" ";s+="0 "+10*h+" 0 0"}else s="1 "+2*this.filterManager.effectElements[4].p.v*this.filterManager.effectElements[9].p.v*.01;i.setAttribute("stroke-dasharray",s)}if((t||this.filterManager.effectElements[4].p._mdf)&&this.pathMasker.setAttribute("stroke-width",2*this.filterManager.effectElements[4].p.v),(t||this.filterManager.effectElements[6].p._mdf)&&this.pathMasker.setAttribute("opacity",this.filterManager.effectElements[6].p.v),(1===this.filterManager.effectElements[10].p.v||2===this.filterManager.effectElements[10].p.v)&&(t||this.filterManager.effectElements[3].p._mdf)){var m=this.filterManager.effectElements[3].p.v;this.pathMasker.setAttribute("stroke","rgb("+bmFloor(255*m[0])+","+bmFloor(255*m[1])+","+bmFloor(255*m[2])+")")}},SVGTritoneFilter.prototype.renderFrame=function(t){if(t||this.filterManager._mdf){var e=this.filterManager.effectElements[0].p.v,r=this.filterManager.effectElements[1].p.v,i=this.filterManager.effectElements[2].p.v,a=i[0]+" "+r[0]+" "+e[0],s=i[1]+" "+r[1]+" "+e[1],n=i[2]+" "+r[2]+" "+e[2];this.feFuncR.setAttribute("tableValues",a),this.feFuncG.setAttribute("tableValues",s),this.feFuncB.setAttribute("tableValues",n)}},SVGProLevelsFilter.prototype.createFeFunc=function(t,e){var r=createNS(t);return r.setAttribute("type","table"),e.appendChild(r),r},SVGProLevelsFilter.prototype.getTableValue=function(t,e,r,i,a){for(var s,n,o=0,h=Math.min(t,e),l=Math.max(t,e),p=Array.call(null,{length:256}),c=0,f=a-i,m=e-t;o<=256;)n=(s=o/256)<=h?m<0?a:i:s>=l?m<0?i:a:i+f*Math.pow((s-t)/m,1/r),p[c]=n,c+=1,o+=256/255;return p.join(" ")},SVGProLevelsFilter.prototype.renderFrame=function(t){if(t||this.filterManager._mdf){var e,r=this.filterManager.effectElements;this.feFuncRComposed&&(t||r[3].p._mdf||r[4].p._mdf||r[5].p._mdf||r[6].p._mdf||r[7].p._mdf)&&(e=this.getTableValue(r[3].p.v,r[4].p.v,r[5].p.v,r[6].p.v,r[7].p.v),this.feFuncRComposed.setAttribute("tableValues",e),this.feFuncGComposed.setAttribute("tableValues",e),this.feFuncBComposed.setAttribute("tableValues",e)),this.feFuncR&&(t||r[10].p._mdf||r[11].p._mdf||r[12].p._mdf||r[13].p._mdf||r[14].p._mdf)&&(e=this.getTableValue(r[10].p.v,r[11].p.v,r[12].p.v,r[13].p.v,r[14].p.v),this.feFuncR.setAttribute("tableValues",e)),this.feFuncG&&(t||r[17].p._mdf||r[18].p._mdf||r[19].p._mdf||r[20].p._mdf||r[21].p._mdf)&&(e=this.getTableValue(r[17].p.v,r[18].p.v,r[19].p.v,r[20].p.v,r[21].p.v),this.feFuncG.setAttribute("tableValues",e)),this.feFuncB&&(t||r[24].p._mdf||r[25].p._mdf||r[26].p._mdf||r[27].p._mdf||r[28].p._mdf)&&(e=this.getTableValue(r[24].p.v,r[25].p.v,r[26].p.v,r[27].p.v,r[28].p.v),this.feFuncB.setAttribute("tableValues",e)),this.feFuncA&&(t||r[31].p._mdf||r[32].p._mdf||r[33].p._mdf||r[34].p._mdf||r[35].p._mdf)&&(e=this.getTableValue(r[31].p.v,r[32].p.v,r[33].p.v,r[34].p.v,r[35].p.v),this.feFuncA.setAttribute("tableValues",e))}},extendPrototype([SVGComposableEffect],SVGDropShadowEffect),SVGDropShadowEffect.prototype.renderFrame=function(t){if(t||this.filterManager._mdf){if((t||this.filterManager.effectElements[4].p._mdf)&&this.feGaussianBlur.setAttribute("stdDeviation",this.filterManager.effectElements[4].p.v/4),t||this.filterManager.effectElements[0].p._mdf){var e=this.filterManager.effectElements[0].p.v;this.feFlood.setAttribute("flood-color",rgbToHex(Math.round(255*e[0]),Math.round(255*e[1]),Math.round(255*e[2])))}if((t||this.filterManager.effectElements[1].p._mdf)&&this.feFlood.setAttribute("flood-opacity",this.filterManager.effectElements[1].p.v/255),t||this.filterManager.effectElements[2].p._mdf||this.filterManager.effectElements[3].p._mdf){var r=this.filterManager.effectElements[3].p.v,i=(this.filterManager.effectElements[2].p.v-90)*degToRads,a=r*Math.cos(i),s=r*Math.sin(i);this.feOffset.setAttribute("dx",a),this.feOffset.setAttribute("dy",s)}}};var _svgMatteSymbols=[];function SVGMatte3Effect(t,e,r){this.initialized=!1,this.filterManager=e,this.filterElem=t,this.elem=r,r.matteElement=createNS("g"),r.matteElement.appendChild(r.layerElement),r.matteElement.appendChild(r.transformedElement),r.baseElement=r.matteElement}function SVGGaussianBlurEffect(t,e,r,i){t.setAttribute("x","-100%"),t.setAttribute("y","-100%"),t.setAttribute("width","300%"),t.setAttribute("height","300%"),this.filterManager=e;var a=createNS("feGaussianBlur");a.setAttribute("result",i),t.appendChild(a),this.feGaussianBlur=a}function TransformEffect(){}function SVGTransformEffect(t,e){this.init(e)}function CVTransformEffect(t){this.init(t)}return SVGMatte3Effect.prototype.findSymbol=function(t){for(var e=0,r=_svgMatteSymbols.length;e<r;){if(_svgMatteSymbols[e]===t)return _svgMatteSymbols[e];e+=1}return null},SVGMatte3Effect.prototype.replaceInParent=function(t,e){var r=t.layerElement.parentNode;if(r){for(var i,a=r.children,s=0,n=a.length;s<n&&a[s]!==t.layerElement;)s+=1;s<=n-2&&(i=a[s+1]);var o=createNS("use");o.setAttribute("href","#"+e),i?r.insertBefore(o,i):r.appendChild(o)}},SVGMatte3Effect.prototype.setElementAsMask=function(t,e){if(!this.findSymbol(e)){var r=createElementID(),i=createNS("mask");i.setAttribute("id",e.layerId),i.setAttribute("mask-type","alpha"),_svgMatteSymbols.push(e);var a=t.globalData.defs;a.appendChild(i);var s=createNS("symbol");s.setAttribute("id",r),this.replaceInParent(e,r),s.appendChild(e.layerElement),a.appendChild(s);var n=createNS("use");n.setAttribute("href","#"+r),i.appendChild(n),e.data.hd=!1,e.show()}t.setMatte(e.layerId)},SVGMatte3Effect.prototype.initialize=function(){for(var t=this.filterManager.effectElements[0].p.v,e=this.elem.comp.elements,r=0,i=e.length;r<i;)e[r]&&e[r].data.ind===t&&this.setElementAsMask(this.elem,e[r]),r+=1;this.initialized=!0},SVGMatte3Effect.prototype.renderFrame=function(){this.initialized||this.initialize()},SVGGaussianBlurEffect.prototype.renderFrame=function(t){if(t||this.filterManager._mdf){var e=.3*this.filterManager.effectElements[0].p.v,r=this.filterManager.effectElements[1].p.v,i=3==r?0:e,a=2==r?0:e;this.feGaussianBlur.setAttribute("stdDeviation",i+" "+a);var s=1==this.filterManager.effectElements[2].p.v?"wrap":"duplicate";this.feGaussianBlur.setAttribute("edgeMode",s)}},TransformEffect.prototype.init=function(t){this.effectsManager=t,this.type=effectTypes.TRANSFORM_EFFECT,this.matrix=new Matrix,this.opacity=-1,this._mdf=!1,this._opMdf=!1},TransformEffect.prototype.renderFrame=function(t){if(this._opMdf=!1,this._mdf=!1,t||this.effectsManager._mdf){var e=this.effectsManager.effectElements,r=e[0].p.v,i=e[1].p.v,a=1===e[2].p.v,s=e[3].p.v,n=a?s:e[4].p.v,o=e[5].p.v,h=e[6].p.v,l=e[7].p.v;this.matrix.reset(),this.matrix.translate(-r[0],-r[1],r[2]),this.matrix.scale(.01*n,.01*s,1),this.matrix.rotate(-l*degToRads),this.matrix.skewFromAxis(-o*degToRads,(h+90)*degToRads),this.matrix.translate(i[0],i[1],0),this._mdf=!0,this.opacity!==e[8].p.v&&(this.opacity=e[8].p.v,this._opMdf=!0)}},extendPrototype([TransformEffect],SVGTransformEffect),extendPrototype([TransformEffect],CVTransformEffect),registerRenderer("canvas",CanvasRenderer),registerRenderer("html",HybridRenderer),registerRenderer("svg",SVGRenderer),ShapeModifiers.registerModifier("tm",TrimModifier),ShapeModifiers.registerModifier("pb",PuckerAndBloatModifier),ShapeModifiers.registerModifier("rp",RepeaterModifier),ShapeModifiers.registerModifier("rd",RoundCornersModifier),ShapeModifiers.registerModifier("zz",ZigZagModifier),ShapeModifiers.registerModifier("op",OffsetPathModifier),setExpressionsPlugin(Expressions),setExpressionInterfaces(getInterface),initialize$1(),initialize(),registerEffect$1(20,SVGTintFilter,!0),registerEffect$1(21,SVGFillFilter,!0),registerEffect$1(22,SVGStrokeEffect,!1),registerEffect$1(23,SVGTritoneFilter,!0),registerEffect$1(24,SVGProLevelsFilter,!0),registerEffect$1(25,SVGDropShadowEffect,!0),registerEffect$1(28,SVGMatte3Effect,!1),registerEffect$1(29,SVGGaussianBlurEffect,!0),registerEffect$1(35,SVGTransformEffect,!1),registerEffect(35,CVTransformEffect),lottie},module.exports=factory())},"./packages/packages/libs/editor-modal-shell/src/components/background-lottie.tsx":function(t,e,r){"use strict";r.r(e),r.d(e,{BackgroundLottie:function(){return BackgroundLottie}});var i=r("react"),a=r("./node_modules/lottie-react/build/index.umd.js"),s=r.n(a),n=r("./packages/packages/libs/editor-modal-shell/src/components/modal-shell.tsx");function BackgroundLottie({animationData:t,loop:e=!1,autoplay:r=!0,zIndex:a=n.MODAL_Z_INDEX-1,backgroundColor:o="transparent",onComplete:h=()=>{}}){const l="undefined"!=typeof window&&window.matchMedia?.("(prefers-reduced-motion: reduce)").matches;return(0,i.useEffect)(()=>{l&&h?.()},[l,h]),l?null:i.createElement(s(),{animationData:t,loop:e,autoplay:r,onComplete:e?void 0:h,onDataFailed:h,rendererSettings:{preserveAspectRatio:"xMidYMid slice"},style:{position:"fixed",inset:0,width:"100vw",height:"100vh",zIndex:a,backgroundColor:o,pointerEvents:"none"}})}},"./packages/packages/libs/editor-modal-shell/src/components/modal-footer.tsx":function(t,e,r){"use strict";r.r(e),r.d(e,{ModalFooter:function(){return ModalFooter}});var i=r("react"),a=r("@elementor/ui");const ModalFooter=({helpText:t,link:e})=>i.createElement(a.Stack,{direction:"row",alignItems:"center",gap:1},i.createElement(a.Typography,{variant:"caption",color:"text.tertiary",sx:{fontSize:"11px",lineHeight:"normal"}},t),i.createElement(a.Button,{href:e.url,target:"_blank",variant:"text",size:"small",color:"info",sx:{fontSize:"11px"}},e.text))},"./packages/packages/libs/editor-modal-shell/src/components/modal-header.tsx":function(t,e,r){"use strict";r.r(e),r.d(e,{ModalHeader:function(){return ModalHeader}});var i=r("react"),a=r("@elementor/ui");const ModalHeader=({title:t,content:e})=>i.createElement(a.Stack,{gap:.75},i.createElement(a.Typography,{variant:"h4",color:"text.primary"},t),i.createElement(a.Typography,{variant:"subtitle2",color:"text.primary"},e))},"./packages/packages/libs/editor-modal-shell/src/components/modal-shell.tsx":function(t,e,r){"use strict";r.r(e),r.d(e,{MODAL_Z_INDEX:function(){return s},ModalShell:function(){return ModalShell},useModalShell:function(){return useModalShell}});var i=r("react"),a=r("@elementor/ui");const s=99999,n=(0,i.createContext)(null),useModalShell=()=>{const t=(0,i.useContext)(n);if(!t)throw new Error("useModalShell must be used inside a <ModalShell />");return t},ModalShell=({children:t,onClose:e,revealDuration:r=500,revealDelay:o=0,container:h,sx:l={},closeOnEsc:p=!0,closeOnOutsideClick:c=!0,backdrop:f=!0,backdropSx:m={},hideCloseButton:u=!1})=>{const d=h??("undefined"!=typeof document?document.body:void 0),y="undefined"!=typeof window&&Boolean(window.matchMedia?.("(prefers-reduced-motion: reduce)").matches),g=0===r||y,[v,b]=(0,i.useState)(!0),P=(0,i.useCallback)(()=>b(!1),[]),x=(0,i.useMemo)(()=>({close:P}),[P]),S=(0,i.useMemo)(()=>({enter:0,exit:y?0:225}),[y]),E=(0,i.useMemo)(()=>g?{}:{animation:`e-modal-shell-reveal ${r}ms ease ${o}ms backwards`,"@keyframes e-modal-shell-reveal":{from:{opacity:0,transform:"scale(0.95)"},to:{opacity:1,transform:"scale(1)"}}},[g,r,o]);return i.createElement(a.Dialog,{open:v,maxWidth:!1,onClose:(t,e)=>{("escapeKeyDown"!==e||p)&&("backdropClick"!==e||c)&&P()},container:d,disableEscapeKeyDown:!p,hideBackdrop:!f,TransitionProps:{onExited:e,timeout:S},slotProps:{backdrop:{transitionDuration:S,sx:m}},PaperProps:{sx:{width:800,height:400,maxWidth:"100%",overflow:"hidden",...E,...l}},sx:{zIndex:s}},i.createElement(n.Provider,{value:x},i.createElement(a.Box,{sx:{display:"contents"}},t,!u&&i.createElement(a.CloseButton,{onClick:P,sx:{position:"absolute",right:16,top:16,zIndex:3}}))))}},"./packages/packages/libs/editor-modal-shell/src/hooks/use-autoplay-carousel.ts":function(t,e,r){"use strict";r.r(e),r.d(e,{useAutoplayCarousel:function(){return useAutoplayCarousel}});var i=r("react");const a=4e3;function useAutoplayCarousel(t,e=a){const[r,s]=(0,i.useState)(t[0]),[n,o]=(0,i.useState)(!0),h=(0,i.useCallback)(()=>{s(e=>{const r=(t.indexOf(e)+1)%t.length;return t[r]})},[t]);(0,i.useEffect)(()=>{if(!n)return;const t=setInterval(h,e);return()=>clearInterval(t)},[n,h,e]);return{selectedItem:r,selectItem:(0,i.useCallback)(t=>{s(t),o(!1)},[])}}},"@elementor/ui":function(t){"use strict";t.exports=window.elementorV2.ui},react:function(t){"use strict";t.exports=window.React}},__webpack_module_cache__={};function __webpack_require__(t){var e=__webpack_module_cache__[t];if(void 0!==e)return e.exports;var r=__webpack_module_cache__[t]={exports:{}};return __webpack_modules__[t].call(r.exports,r,r.exports,__webpack_require__),r.exports}__webpack_require__.amdO={},__webpack_require__.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return __webpack_require__.d(e,{a:e}),e},__webpack_require__.d=function(t,e){for(var r in e)__webpack_require__.o(e,r)&&!__webpack_require__.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},__webpack_require__.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},__webpack_require__.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var __webpack_exports__={};!function(){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{BackgroundLottie:function(){return i.BackgroundLottie},MODAL_Z_INDEX:function(){return t.MODAL_Z_INDEX},ModalFooter:function(){return r.ModalFooter},ModalHeader:function(){return e.ModalHeader},ModalShell:function(){return t.ModalShell},useAutoplayCarousel:function(){return a.useAutoplayCarousel},useModalShell:function(){return t.useModalShell}});var t=__webpack_require__("./packages/packages/libs/editor-modal-shell/src/components/modal-shell.tsx"),e=__webpack_require__("./packages/packages/libs/editor-modal-shell/src/components/modal-header.tsx"),r=__webpack_require__("./packages/packages/libs/editor-modal-shell/src/components/modal-footer.tsx"),i=__webpack_require__("./packages/packages/libs/editor-modal-shell/src/components/background-lottie.tsx"),a=__webpack_require__("./packages/packages/libs/editor-modal-shell/src/hooks/use-autoplay-carousel.ts")}(),(window.elementorV2=window.elementorV2||{}).editorModalShell=__webpack_exports__})(),window.elementorV2.editorModalShell?.init?.();
1 +(function(react, _elementor_ui) {
2 +
3 +//#region \0rolldown/runtime.js
4 + var __create = Object.create;
5 + var __defProp = Object.defineProperty;
6 + var __name = (target, value) => __defProp(target, "name", {
7 + value,
8 + configurable: true
9 + });
10 + var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
11 + var __getOwnPropNames = Object.getOwnPropertyNames;
12 + var __getProtoOf = Object.getPrototypeOf;
13 + var __hasOwnProp = Object.prototype.hasOwnProperty;
14 + var __commonJSMin = (cb, mod) => () => (mod || (cb((mod = { exports: {} }).exports, mod), cb = null), mod.exports);
15 + var __exportAll = (all, no_symbols) => {
16 + let target = {};
17 + for (var name in all) {
18 + __defProp(target, name, {
19 + get: all[name],
20 + enumerable: true
21 + });
22 + }
23 + if (!no_symbols) {
24 + __defProp(target, Symbol.toStringTag, { value: "Module" });
25 + }
26 + return target;
27 + };
28 + var __copyProps = (to, from, except, desc) => {
29 + if (from && typeof from === "object" || typeof from === "function") {
30 + for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
31 + key = keys[i];
32 + if (!__hasOwnProp.call(to, key) && key !== except) {
33 + __defProp(to, key, {
34 + get: ((k) => from[k]).bind(null, key),
35 + enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
36 + });
37 + }
38 + }
39 + }
40 + return to;
41 + };
42 + var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
43 + value: mod,
44 + enumerable: true
45 + }) : target, mod));
46 +
47 +//#endregion
48 +react = __toESM(react);
49 +
50 +//#region packages/packages/libs/editor-modal-shell/src/components/modal-shell.tsx
51 + var MODAL_Z_INDEX = 99999;
52 + var DEFAULT_WIDTH = 800;
53 + var DEFAULT_HEIGHT = 400;
54 + var DEFAULT_REVEAL_DURATION_MS = 500;
55 + var DEFAULT_REVEAL_DELAY_MS = 0;
56 + var ModalShellContext = (0, react.createContext)(null);
57 + var useModalShell = () => {
58 + const ctx = (0, react.useContext)(ModalShellContext);
59 + if (!ctx) throw new Error("useModalShell must be used inside a <ModalShell />");
60 + return ctx;
61 + };
62 + var EXIT_TRANSITION_MS = 225;
63 + var prefersReducedMotion = () => typeof window !== "undefined" && Boolean(window.matchMedia?.("(prefers-reduced-motion: reduce)").matches);
64 + var ModalShell = ({ children, onClose, revealDuration = DEFAULT_REVEAL_DURATION_MS, revealDelay = DEFAULT_REVEAL_DELAY_MS, container, sx = {}, closeOnEsc = true, closeOnOutsideClick = true, backdrop = true, backdropSx = {}, hideCloseButton = false }) => {
65 + const portalTarget = container ?? (typeof document !== "undefined" ? document.body : void 0);
66 + const reducedMotion = prefersReducedMotion();
67 + const consumerOwnsEnter = revealDuration === 0 || reducedMotion;
68 + const [open, setOpen] = (0, react.useState)(true);
69 + const startClose = (0, react.useCallback)(() => setOpen(false), []);
70 + const contextValue = (0, react.useMemo)(() => ({ close: startClose }), [startClose]);
71 + const handleDialogClose = (_event, reason) => {
72 + if (reason === "escapeKeyDown" && !closeOnEsc) return;
73 + if (reason === "backdropClick" && !closeOnOutsideClick) return;
74 + startClose();
75 + };
76 + const transitionTimeouts = (0, react.useMemo)(() => ({
77 + enter: 0,
78 + exit: reducedMotion ? 0 : EXIT_TRANSITION_MS
79 + }), [reducedMotion]);
80 + const animationProps = (0, react.useMemo)(() => consumerOwnsEnter ? {} : {
81 + animation: `e-modal-shell-reveal ${revealDuration}ms ease ${revealDelay}ms backwards`,
82 + "@keyframes e-modal-shell-reveal": {
83 + from: {
84 + opacity: 0,
85 + transform: "scale(0.95)"
86 + },
87 + to: {
88 + opacity: 1,
89 + transform: "scale(1)"
90 + }
91 + }
92 + }, [
93 + consumerOwnsEnter,
94 + revealDuration,
95 + revealDelay
96 + ]);
97 + return /* @__PURE__ */ react.createElement(_elementor_ui.Dialog, {
98 + open,
99 + maxWidth: false,
100 + onClose: handleDialogClose,
101 + container: portalTarget,
102 + disableEscapeKeyDown: !closeOnEsc,
103 + hideBackdrop: !backdrop,
104 + TransitionProps: {
105 + onExited: onClose,
106 + timeout: transitionTimeouts
107 + },
108 + slotProps: { backdrop: {
109 + transitionDuration: transitionTimeouts,
110 + sx: backdropSx
111 + } },
112 + PaperProps: { sx: {
113 + width: DEFAULT_WIDTH,
114 + height: DEFAULT_HEIGHT,
115 + maxWidth: "100%",
116 + overflow: "hidden",
117 + ...animationProps,
118 + ...sx
119 + } },
120 + sx: { zIndex: MODAL_Z_INDEX }
121 + }, /* @__PURE__ */ react.createElement(ModalShellContext.Provider, { value: contextValue }, /* @__PURE__ */ react.createElement(_elementor_ui.Box, { sx: { display: "contents" } }, children, !hideCloseButton && /* @__PURE__ */ react.createElement(_elementor_ui.CloseButton, {
122 + onClick: startClose,
123 + sx: {
124 + position: "absolute",
125 + right: 16,
126 + top: 16,
127 + zIndex: 3
128 + }
129 + }))));
130 + };
131 +
132 +//#endregion
133 +//#region packages/packages/libs/editor-modal-shell/src/components/modal-header.tsx
134 + var ModalHeader = ({ title, content }) => {
135 + return /* @__PURE__ */ react.createElement(_elementor_ui.Stack, { gap: .75 }, /* @__PURE__ */ react.createElement(_elementor_ui.Typography, {
136 + variant: "h4",
137 + color: "text.primary"
138 + }, title), /* @__PURE__ */ react.createElement(_elementor_ui.Typography, {
139 + variant: "subtitle2",
140 + color: "text.primary"
141 + }, content));
142 + };
143 +
144 +//#endregion
145 +//#region packages/packages/libs/editor-modal-shell/src/components/modal-footer.tsx
146 + var ModalFooter = ({ helpText, link }) => {
147 + return /* @__PURE__ */ react.createElement(_elementor_ui.Stack, {
148 + direction: "row",
149 + alignItems: "center",
150 + gap: 1
151 + }, /* @__PURE__ */ react.createElement(_elementor_ui.Typography, {
152 + variant: "caption",
153 + color: "text.tertiary",
154 + sx: {
155 + fontSize: "11px",
156 + lineHeight: "normal"
157 + }
158 + }, helpText), /* @__PURE__ */ react.createElement(_elementor_ui.Button, {
159 + href: link.url,
160 + target: "_blank",
161 + variant: "text",
162 + size: "small",
163 + color: "info",
164 + sx: { fontSize: "11px" }
165 + }, link.text));
166 + };
167 +
168 +//#endregion
169 +//#region node_modules/lottie-web/build/player/lottie.js
170 + var require_lottie = /* @__PURE__ */ __commonJSMin(((exports, module) => {
171 + typeof document !== "undefined" && typeof navigator !== "undefined" && (function(global, factory) {
172 + typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory() : typeof define === "function" && define.amd ? define(factory) : (global = typeof globalThis !== "undefined" ? globalThis : global || self, global.lottie = factory());
173 + })(exports, (function() {
174 + "use strict";
175 + var svgNS = "http://www.w3.org/2000/svg";
176 + var locationHref = "";
177 + var _useWebWorker = false;
178 + var initialDefaultFrame = -999999;
179 + var setWebWorker = function setWebWorker(flag) {
180 + _useWebWorker = !!flag;
181 + };
182 + var getWebWorker = function getWebWorker() {
183 + return _useWebWorker;
184 + };
185 + var setLocationHref = function setLocationHref(value) {
186 + locationHref = value;
187 + };
188 + var getLocationHref = function getLocationHref() {
189 + return locationHref;
190 + };
191 + function createTag(type) {
192 + return document.createElement(type);
193 + }
194 + function extendPrototype(sources, destination) {
195 + var i;
196 + var len = sources.length;
197 + var sourcePrototype;
198 + for (i = 0; i < len; i += 1) {
199 + sourcePrototype = sources[i].prototype;
200 + for (var attr in sourcePrototype) if (Object.prototype.hasOwnProperty.call(sourcePrototype, attr)) destination.prototype[attr] = sourcePrototype[attr];
201 + }
202 + }
203 + function getDescriptor(object, prop) {
204 + return Object.getOwnPropertyDescriptor(object, prop);
205 + }
206 + function createProxyFunction(prototype) {
207 + function ProxyFunction() {}
208 + ProxyFunction.prototype = prototype;
209 + return ProxyFunction;
210 + }
211 + var audioControllerFactory = function() {
212 + function AudioController(audioFactory) {
213 + this.audios = [];
214 + this.audioFactory = audioFactory;
215 + this._volume = 1;
216 + this._isMuted = false;
217 + }
218 + AudioController.prototype = {
219 + addAudio: function addAudio(audio) {
220 + this.audios.push(audio);
221 + },
222 + pause: function pause() {
223 + var i;
224 + var len = this.audios.length;
225 + for (i = 0; i < len; i += 1) this.audios[i].pause();
226 + },
227 + resume: function resume() {
228 + var i;
229 + var len = this.audios.length;
230 + for (i = 0; i < len; i += 1) this.audios[i].resume();
231 + },
232 + setRate: function setRate(rateValue) {
233 + var i;
234 + var len = this.audios.length;
235 + for (i = 0; i < len; i += 1) this.audios[i].setRate(rateValue);
236 + },
237 + createAudio: function createAudio(assetPath) {
238 + if (this.audioFactory) return this.audioFactory(assetPath);
239 + if (window.Howl) return new window.Howl({ src: [assetPath] });
240 + return {
241 + isPlaying: false,
242 + play: function play() {
243 + this.isPlaying = true;
244 + },
245 + seek: function seek() {
246 + this.isPlaying = false;
247 + },
248 + playing: function playing() {},
249 + rate: function rate() {},
250 + setVolume: function setVolume() {}
251 + };
252 + },
253 + setAudioFactory: function setAudioFactory(audioFactory) {
254 + this.audioFactory = audioFactory;
255 + },
256 + setVolume: function setVolume(value) {
257 + this._volume = value;
258 + this._updateVolume();
259 + },
260 + mute: function mute() {
261 + this._isMuted = true;
262 + this._updateVolume();
263 + },
264 + unmute: function unmute() {
265 + this._isMuted = false;
266 + this._updateVolume();
267 + },
268 + getVolume: function getVolume() {
269 + return this._volume;
270 + },
271 + _updateVolume: function _updateVolume() {
272 + var i;
273 + var len = this.audios.length;
274 + for (i = 0; i < len; i += 1) this.audios[i].volume(this._volume * (this._isMuted ? 0 : 1));
275 + }
276 + };
277 + return function() {
278 + return new AudioController();
279 + };
280 + }();
281 + var createTypedArray = function() {
282 + function createRegularArray(type, len) {
283 + var i = 0;
284 + var arr = [];
285 + var value;
286 + switch (type) {
287 + case "int16":
288 + case "uint8c":
289 + value = 1;
290 + break;
291 + default:
292 + value = 1.1;
293 + break;
294 + }
295 + for (i = 0; i < len; i += 1) arr.push(value);
296 + return arr;
297 + }
298 + function createTypedArrayFactory(type, len) {
299 + if (type === "float32") return new Float32Array(len);
300 + if (type === "int16") return new Int16Array(len);
301 + if (type === "uint8c") return new Uint8ClampedArray(len);
302 + return createRegularArray(type, len);
303 + }
304 + if (typeof Uint8ClampedArray === "function" && typeof Float32Array === "function") return createTypedArrayFactory;
305 + return createRegularArray;
306 + }();
307 + function createSizedArray(len) {
308 + return Array.apply(null, { length: len });
309 + }
310 + function _typeof$6(o) {
311 + "@babel/helpers - typeof";
312 + return _typeof$6 = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
313 + return typeof o;
314 + } : function(o) {
315 + return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
316 + }, _typeof$6(o);
317 + }
318 + var subframeEnabled = true;
319 + var expressionsPlugin = null;
320 + var expressionsInterfaces = null;
321 + var idPrefix$1 = "";
322 + var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
323 + var _shouldRoundValues = false;
324 + var bmPow = Math.pow;
325 + var bmSqrt = Math.sqrt;
326 + var bmFloor = Math.floor;
327 + var bmMax = Math.max;
328 + var bmMin = Math.min;
329 + var BMMath = {};
330 + (function() {
331 + var propertyNames = [
332 + "abs",
333 + "acos",
334 + "acosh",
335 + "asin",
336 + "asinh",
337 + "atan",
338 + "atanh",
339 + "atan2",
340 + "ceil",
341 + "cbrt",
342 + "expm1",
343 + "clz32",
344 + "cos",
345 + "cosh",
346 + "exp",
347 + "floor",
348 + "fround",
349 + "hypot",
350 + "imul",
351 + "log",
352 + "log1p",
353 + "log2",
354 + "log10",
355 + "max",
356 + "min",
357 + "pow",
358 + "random",
359 + "round",
360 + "sign",
361 + "sin",
362 + "sinh",
363 + "sqrt",
364 + "tan",
365 + "tanh",
366 + "trunc",
367 + "E",
368 + "LN10",
369 + "LN2",
370 + "LOG10E",
371 + "LOG2E",
372 + "PI",
373 + "SQRT1_2",
374 + "SQRT2"
375 + ];
376 + var i;
377 + var len = propertyNames.length;
378 + for (i = 0; i < len; i += 1) BMMath[propertyNames[i]] = Math[propertyNames[i]];
379 + })();
380 + function ProjectInterface$1() {
381 + return {};
382 + }
383 + BMMath.random = Math.random;
384 + BMMath.abs = function(val) {
385 + if (_typeof$6(val) === "object" && val.length) {
386 + var absArr = createSizedArray(val.length);
387 + var i;
388 + var len = val.length;
389 + for (i = 0; i < len; i += 1) absArr[i] = Math.abs(val[i]);
390 + return absArr;
391 + }
392 + return Math.abs(val);
393 + };
394 + var defaultCurveSegments = 150;
395 + var degToRads = Math.PI / 180;
396 + var roundCorner = .5519;
397 + function roundValues(flag) {
398 + _shouldRoundValues = !!flag;
399 + }
400 + function bmRnd(value) {
401 + if (_shouldRoundValues) return Math.round(value);
402 + return value;
403 + }
404 + function styleDiv(element) {
405 + element.style.position = "absolute";
406 + element.style.top = 0;
407 + element.style.left = 0;
408 + element.style.display = "block";
409 + element.style.transformOrigin = "0 0";
410 + element.style.webkitTransformOrigin = "0 0";
411 + element.style.backfaceVisibility = "visible";
412 + element.style.webkitBackfaceVisibility = "visible";
413 + element.style.transformStyle = "preserve-3d";
414 + element.style.webkitTransformStyle = "preserve-3d";
415 + element.style.mozTransformStyle = "preserve-3d";
416 + }
417 + function BMEnterFrameEvent(type, currentTime, totalTime, frameMultiplier) {
418 + this.type = type;
419 + this.currentTime = currentTime;
420 + this.totalTime = totalTime;
421 + this.direction = frameMultiplier < 0 ? -1 : 1;
422 + }
423 + function BMCompleteEvent(type, frameMultiplier) {
424 + this.type = type;
425 + this.direction = frameMultiplier < 0 ? -1 : 1;
426 + }
427 + function BMCompleteLoopEvent(type, totalLoops, currentLoop, frameMultiplier) {
428 + this.type = type;
429 + this.currentLoop = currentLoop;
430 + this.totalLoops = totalLoops;
431 + this.direction = frameMultiplier < 0 ? -1 : 1;
432 + }
433 + function BMSegmentStartEvent(type, firstFrame, totalFrames) {
434 + this.type = type;
435 + this.firstFrame = firstFrame;
436 + this.totalFrames = totalFrames;
437 + }
438 + function BMDestroyEvent(type, target) {
439 + this.type = type;
440 + this.target = target;
441 + }
442 + function BMRenderFrameErrorEvent(nativeError, currentTime) {
443 + this.type = "renderFrameError";
444 + this.nativeError = nativeError;
445 + this.currentTime = currentTime;
446 + }
447 + function BMConfigErrorEvent(nativeError) {
448 + this.type = "configError";
449 + this.nativeError = nativeError;
450 + }
451 + function BMAnimationConfigErrorEvent(type, nativeError) {
452 + this.type = type;
453 + this.nativeError = nativeError;
454 + }
455 + var createElementID = function() {
456 + var _count = 0;
457 + return function createID() {
458 + _count += 1;
459 + return idPrefix$1 + "__lottie_element_" + _count;
460 + };
461 + }();
462 + function HSVtoRGB(h, s, v) {
463 + var r;
464 + var g;
465 + var b;
466 + var i;
467 + var f;
468 + var p;
469 + var q;
470 + var t;
471 + i = Math.floor(h * 6);
472 + f = h * 6 - i;
473 + p = v * (1 - s);
474 + q = v * (1 - f * s);
475 + t = v * (1 - (1 - f) * s);
476 + switch (i % 6) {
477 + case 0:
478 + r = v;
479 + g = t;
480 + b = p;
481 + break;
482 + case 1:
483 + r = q;
484 + g = v;
485 + b = p;
486 + break;
487 + case 2:
488 + r = p;
489 + g = v;
490 + b = t;
491 + break;
492 + case 3:
493 + r = p;
494 + g = q;
495 + b = v;
496 + break;
497 + case 4:
498 + r = t;
499 + g = p;
500 + b = v;
501 + break;
502 + case 5:
503 + r = v;
504 + g = p;
505 + b = q;
506 + break;
507 + default: break;
508 + }
509 + return [
510 + r,
511 + g,
512 + b
513 + ];
514 + }
515 + function RGBtoHSV(r, g, b) {
516 + var max = Math.max(r, g, b);
517 + var min = Math.min(r, g, b);
518 + var d = max - min;
519 + var h;
520 + var s = max === 0 ? 0 : d / max;
521 + var v = max / 255;
522 + switch (max) {
523 + case min:
524 + h = 0;
525 + break;
526 + case r:
527 + h = g - b + d * (g < b ? 6 : 0);
528 + h /= 6 * d;
529 + break;
530 + case g:
531 + h = b - r + d * 2;
532 + h /= 6 * d;
533 + break;
534 + case b:
535 + h = r - g + d * 4;
536 + h /= 6 * d;
537 + break;
538 + default: break;
539 + }
540 + return [
541 + h,
542 + s,
543 + v
544 + ];
545 + }
546 + function addSaturationToRGB(color, offset) {
547 + var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);
548 + hsv[1] += offset;
549 + if (hsv[1] > 1) hsv[1] = 1;
550 + else if (hsv[1] <= 0) hsv[1] = 0;
551 + return HSVtoRGB(hsv[0], hsv[1], hsv[2]);
552 + }
553 + function addBrightnessToRGB(color, offset) {
554 + var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);
555 + hsv[2] += offset;
556 + if (hsv[2] > 1) hsv[2] = 1;
557 + else if (hsv[2] < 0) hsv[2] = 0;
558 + return HSVtoRGB(hsv[0], hsv[1], hsv[2]);
559 + }
560 + function addHueToRGB(color, offset) {
561 + var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);
562 + hsv[0] += offset / 360;
563 + if (hsv[0] > 1) hsv[0] -= 1;
564 + else if (hsv[0] < 0) hsv[0] += 1;
565 + return HSVtoRGB(hsv[0], hsv[1], hsv[2]);
566 + }
567 + var rgbToHex = function() {
568 + var colorMap = [];
569 + var i;
570 + var hex;
571 + for (i = 0; i < 256; i += 1) {
572 + hex = i.toString(16);
573 + colorMap[i] = hex.length === 1 ? "0" + hex : hex;
574 + }
575 + return function(r, g, b) {
576 + if (r < 0) r = 0;
577 + if (g < 0) g = 0;
578 + if (b < 0) b = 0;
579 + return "#" + colorMap[r] + colorMap[g] + colorMap[b];
580 + };
581 + }();
582 + var setSubframeEnabled = function setSubframeEnabled(flag) {
583 + subframeEnabled = !!flag;
584 + };
585 + var getSubframeEnabled = function getSubframeEnabled() {
586 + return subframeEnabled;
587 + };
588 + var setExpressionsPlugin = function setExpressionsPlugin(value) {
589 + expressionsPlugin = value;
590 + };
591 + var getExpressionsPlugin = function getExpressionsPlugin() {
592 + return expressionsPlugin;
593 + };
594 + var setExpressionInterfaces = function setExpressionInterfaces(value) {
595 + expressionsInterfaces = value;
596 + };
597 + var getExpressionInterfaces = function getExpressionInterfaces() {
598 + return expressionsInterfaces;
599 + };
600 + var setDefaultCurveSegments = function setDefaultCurveSegments(value) {
601 + defaultCurveSegments = value;
602 + };
603 + var getDefaultCurveSegments = function getDefaultCurveSegments() {
604 + return defaultCurveSegments;
605 + };
606 + var setIdPrefix = function setIdPrefix(value) {
607 + idPrefix$1 = value;
608 + };
609 + var getIdPrefix = function getIdPrefix() {
610 + return idPrefix$1;
611 + };
612 + function createNS(type) {
613 + return document.createElementNS(svgNS, type);
614 + }
615 + function _typeof$5(o) {
616 + "@babel/helpers - typeof";
617 + return _typeof$5 = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
618 + return typeof o;
619 + } : function(o) {
620 + return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
621 + }, _typeof$5(o);
622 + }
623 + var dataManager = function() {
624 + var _counterId = 1;
625 + var processes = [];
626 + var workerFn;
627 + var workerInstance;
628 + var workerProxy = {
629 + onmessage: function onmessage() {},
630 + postMessage: function postMessage(path) {
631 + workerFn({ data: path });
632 + }
633 + };
634 + var _workerSelf = { postMessage: function postMessage(data) {
635 + workerProxy.onmessage({ data });
636 + } };
637 + function createWorker(fn) {
638 + if (window.Worker && window.Blob && getWebWorker()) {
639 + var blob = new Blob(["var _workerSelf = self; self.onmessage = ", fn.toString()], { type: "text/javascript" });
640 + var url = URL.createObjectURL(blob);
641 + return new Worker(url);
642 + }
643 + workerFn = fn;
644 + return workerProxy;
645 + }
646 + function setupWorker() {
647 + if (!workerInstance) {
648 + workerInstance = createWorker(function workerStart(e) {
649 + function dataFunctionManager() {
650 + function completeLayers(layers, comps) {
651 + var layerData;
652 + var i;
653 + var len = layers.length;
654 + var j;
655 + var jLen;
656 + var k;
657 + var kLen;
658 + for (i = 0; i < len; i += 1) {
659 + layerData = layers[i];
660 + if ("ks" in layerData && !layerData.completed) {
661 + layerData.completed = true;
662 + if (layerData.hasMask) {
663 + var maskProps = layerData.masksProperties;
664 + jLen = maskProps.length;
665 + for (j = 0; j < jLen; j += 1) if (maskProps[j].pt.k.i) convertPathsToAbsoluteValues(maskProps[j].pt.k);
666 + else {
667 + kLen = maskProps[j].pt.k.length;
668 + for (k = 0; k < kLen; k += 1) {
669 + if (maskProps[j].pt.k[k].s) convertPathsToAbsoluteValues(maskProps[j].pt.k[k].s[0]);
670 + if (maskProps[j].pt.k[k].e) convertPathsToAbsoluteValues(maskProps[j].pt.k[k].e[0]);
671 + }
672 + }
673 + }
674 + if (layerData.ty === 0) {
675 + layerData.layers = findCompLayers(layerData.refId, comps);
676 + completeLayers(layerData.layers, comps);
677 + } else if (layerData.ty === 4) completeShapes(layerData.shapes);
678 + else if (layerData.ty === 5) completeText(layerData);
679 + }
680 + }
681 + }
682 + function completeChars(chars, assets) {
683 + if (chars) {
684 + var i = 0;
685 + var len = chars.length;
686 + for (i = 0; i < len; i += 1) if (chars[i].t === 1) {
687 + chars[i].data.layers = findCompLayers(chars[i].data.refId, assets);
688 + completeLayers(chars[i].data.layers, assets);
689 + }
690 + }
691 + }
692 + function findComp(id, comps) {
693 + var i = 0;
694 + var len = comps.length;
695 + while (i < len) {
696 + if (comps[i].id === id) return comps[i];
697 + i += 1;
698 + }
699 + return null;
700 + }
701 + function findCompLayers(id, comps) {
702 + var comp = findComp(id, comps);
703 + if (comp) {
704 + if (!comp.layers.__used) {
705 + comp.layers.__used = true;
706 + return comp.layers;
707 + }
708 + return JSON.parse(JSON.stringify(comp.layers));
709 + }
710 + return null;
711 + }
712 + function completeShapes(arr) {
713 + var i;
714 + var len = arr.length;
715 + var j;
716 + var jLen;
717 + for (i = len - 1; i >= 0; i -= 1) if (arr[i].ty === "sh") if (arr[i].ks.k.i) convertPathsToAbsoluteValues(arr[i].ks.k);
718 + else {
719 + jLen = arr[i].ks.k.length;
720 + for (j = 0; j < jLen; j += 1) {
721 + if (arr[i].ks.k[j].s) convertPathsToAbsoluteValues(arr[i].ks.k[j].s[0]);
722 + if (arr[i].ks.k[j].e) convertPathsToAbsoluteValues(arr[i].ks.k[j].e[0]);
723 + }
724 + }
725 + else if (arr[i].ty === "gr") completeShapes(arr[i].it);
726 + }
727 + function convertPathsToAbsoluteValues(path) {
728 + var i;
729 + var len = path.i.length;
730 + for (i = 0; i < len; i += 1) {
731 + path.i[i][0] += path.v[i][0];
732 + path.i[i][1] += path.v[i][1];
733 + path.o[i][0] += path.v[i][0];
734 + path.o[i][1] += path.v[i][1];
735 + }
736 + }
737 + function checkVersion(minimum, animVersionString) {
738 + var animVersion = animVersionString ? animVersionString.split(".") : [
739 + 100,
740 + 100,
741 + 100
742 + ];
743 + if (minimum[0] > animVersion[0]) return true;
744 + if (animVersion[0] > minimum[0]) return false;
745 + if (minimum[1] > animVersion[1]) return true;
746 + if (animVersion[1] > minimum[1]) return false;
747 + if (minimum[2] > animVersion[2]) return true;
748 + if (animVersion[2] > minimum[2]) return false;
749 + return null;
750 + }
751 + var checkText = function() {
752 + var minimumVersion = [
753 + 4,
754 + 4,
755 + 14
756 + ];
757 + function updateTextLayer(textLayer) {
758 + var documentData = textLayer.t.d;
759 + textLayer.t.d = { k: [{
760 + s: documentData,
761 + t: 0
762 + }] };
763 + }
764 + function iterateLayers(layers) {
765 + var i;
766 + var len = layers.length;
767 + for (i = 0; i < len; i += 1) if (layers[i].ty === 5) updateTextLayer(layers[i]);
768 + }
769 + return function(animationData) {
770 + if (checkVersion(minimumVersion, animationData.v)) {
771 + iterateLayers(animationData.layers);
772 + if (animationData.assets) {
773 + var i;
774 + var len = animationData.assets.length;
775 + for (i = 0; i < len; i += 1) if (animationData.assets[i].layers) iterateLayers(animationData.assets[i].layers);
776 + }
777 + }
778 + };
779 + }();
780 + var checkChars = function() {
781 + var minimumVersion = [
782 + 4,
783 + 7,
784 + 99
785 + ];
786 + return function(animationData) {
787 + if (animationData.chars && !checkVersion(minimumVersion, animationData.v)) {
788 + var i;
789 + var len = animationData.chars.length;
790 + for (i = 0; i < len; i += 1) {
791 + var charData = animationData.chars[i];
792 + if (charData.data && charData.data.shapes) {
793 + completeShapes(charData.data.shapes);
794 + charData.data.ip = 0;
795 + charData.data.op = 99999;
796 + charData.data.st = 0;
797 + charData.data.sr = 1;
798 + charData.data.ks = {
799 + p: {
800 + k: [0, 0],
801 + a: 0
802 + },
803 + s: {
804 + k: [100, 100],
805 + a: 0
806 + },
807 + a: {
808 + k: [0, 0],
809 + a: 0
810 + },
811 + r: {
812 + k: 0,
813 + a: 0
814 + },
815 + o: {
816 + k: 100,
817 + a: 0
818 + }
819 + };
820 + if (!animationData.chars[i].t) {
821 + charData.data.shapes.push({ ty: "no" });
822 + charData.data.shapes[0].it.push({
823 + p: {
824 + k: [0, 0],
825 + a: 0
826 + },
827 + s: {
828 + k: [100, 100],
829 + a: 0
830 + },
831 + a: {
832 + k: [0, 0],
833 + a: 0
834 + },
835 + r: {
836 + k: 0,
837 + a: 0
838 + },
839 + o: {
840 + k: 100,
841 + a: 0
842 + },
843 + sk: {
844 + k: 0,
845 + a: 0
846 + },
847 + sa: {
848 + k: 0,
849 + a: 0
850 + },
851 + ty: "tr"
852 + });
853 + }
854 + }
855 + }
856 + }
857 + };
858 + }();
859 + var checkPathProperties = function() {
860 + var minimumVersion = [
861 + 5,
862 + 7,
863 + 15
864 + ];
865 + function updateTextLayer(textLayer) {
866 + var pathData = textLayer.t.p;
867 + if (typeof pathData.a === "number") pathData.a = {
868 + a: 0,
869 + k: pathData.a
870 + };
871 + if (typeof pathData.p === "number") pathData.p = {
872 + a: 0,
873 + k: pathData.p
874 + };
875 + if (typeof pathData.r === "number") pathData.r = {
876 + a: 0,
877 + k: pathData.r
878 + };
879 + }
880 + function iterateLayers(layers) {
881 + var i;
882 + var len = layers.length;
883 + for (i = 0; i < len; i += 1) if (layers[i].ty === 5) updateTextLayer(layers[i]);
884 + }
885 + return function(animationData) {
886 + if (checkVersion(minimumVersion, animationData.v)) {
887 + iterateLayers(animationData.layers);
888 + if (animationData.assets) {
889 + var i;
890 + var len = animationData.assets.length;
891 + for (i = 0; i < len; i += 1) if (animationData.assets[i].layers) iterateLayers(animationData.assets[i].layers);
892 + }
893 + }
894 + };
895 + }();
896 + var checkColors = function() {
897 + var minimumVersion = [
898 + 4,
899 + 1,
900 + 9
901 + ];
902 + function iterateShapes(shapes) {
903 + var i;
904 + var len = shapes.length;
905 + var j;
906 + var jLen;
907 + for (i = 0; i < len; i += 1) if (shapes[i].ty === "gr") iterateShapes(shapes[i].it);
908 + else if (shapes[i].ty === "fl" || shapes[i].ty === "st") if (shapes[i].c.k && shapes[i].c.k[0].i) {
909 + jLen = shapes[i].c.k.length;
910 + for (j = 0; j < jLen; j += 1) {
911 + if (shapes[i].c.k[j].s) {
912 + shapes[i].c.k[j].s[0] /= 255;
913 + shapes[i].c.k[j].s[1] /= 255;
914 + shapes[i].c.k[j].s[2] /= 255;
915 + shapes[i].c.k[j].s[3] /= 255;
916 + }
917 + if (shapes[i].c.k[j].e) {
918 + shapes[i].c.k[j].e[0] /= 255;
919 + shapes[i].c.k[j].e[1] /= 255;
920 + shapes[i].c.k[j].e[2] /= 255;
921 + shapes[i].c.k[j].e[3] /= 255;
922 + }
923 + }
924 + } else {
925 + shapes[i].c.k[0] /= 255;
926 + shapes[i].c.k[1] /= 255;
927 + shapes[i].c.k[2] /= 255;
928 + shapes[i].c.k[3] /= 255;
929 + }
930 + }
931 + function iterateLayers(layers) {
932 + var i;
933 + var len = layers.length;
934 + for (i = 0; i < len; i += 1) if (layers[i].ty === 4) iterateShapes(layers[i].shapes);
935 + }
936 + return function(animationData) {
937 + if (checkVersion(minimumVersion, animationData.v)) {
938 + iterateLayers(animationData.layers);
939 + if (animationData.assets) {
940 + var i;
941 + var len = animationData.assets.length;
942 + for (i = 0; i < len; i += 1) if (animationData.assets[i].layers) iterateLayers(animationData.assets[i].layers);
943 + }
944 + }
945 + };
946 + }();
947 + var checkShapes = function() {
948 + var minimumVersion = [
949 + 4,
950 + 4,
951 + 18
952 + ];
953 + function completeClosingShapes(arr) {
954 + var i;
955 + var len = arr.length;
956 + var j;
957 + var jLen;
958 + for (i = len - 1; i >= 0; i -= 1) if (arr[i].ty === "sh") if (arr[i].ks.k.i) arr[i].ks.k.c = arr[i].closed;
959 + else {
960 + jLen = arr[i].ks.k.length;
961 + for (j = 0; j < jLen; j += 1) {
962 + if (arr[i].ks.k[j].s) arr[i].ks.k[j].s[0].c = arr[i].closed;
963 + if (arr[i].ks.k[j].e) arr[i].ks.k[j].e[0].c = arr[i].closed;
964 + }
965 + }
966 + else if (arr[i].ty === "gr") completeClosingShapes(arr[i].it);
967 + }
968 + function iterateLayers(layers) {
969 + var layerData;
970 + var i;
971 + var len = layers.length;
972 + var j;
973 + var jLen;
974 + var k;
975 + var kLen;
976 + for (i = 0; i < len; i += 1) {
977 + layerData = layers[i];
978 + if (layerData.hasMask) {
979 + var maskProps = layerData.masksProperties;
980 + jLen = maskProps.length;
981 + for (j = 0; j < jLen; j += 1) if (maskProps[j].pt.k.i) maskProps[j].pt.k.c = maskProps[j].cl;
982 + else {
983 + kLen = maskProps[j].pt.k.length;
984 + for (k = 0; k < kLen; k += 1) {
985 + if (maskProps[j].pt.k[k].s) maskProps[j].pt.k[k].s[0].c = maskProps[j].cl;
986 + if (maskProps[j].pt.k[k].e) maskProps[j].pt.k[k].e[0].c = maskProps[j].cl;
987 + }
988 + }
989 + }
990 + if (layerData.ty === 4) completeClosingShapes(layerData.shapes);
991 + }
992 + }
993 + return function(animationData) {
994 + if (checkVersion(minimumVersion, animationData.v)) {
995 + iterateLayers(animationData.layers);
996 + if (animationData.assets) {
997 + var i;
998 + var len = animationData.assets.length;
999 + for (i = 0; i < len; i += 1) if (animationData.assets[i].layers) iterateLayers(animationData.assets[i].layers);
1000 + }
1001 + }
1002 + };
1003 + }();
1004 + function completeData(animationData) {
1005 + if (animationData.__complete) return;
1006 + checkColors(animationData);
1007 + checkText(animationData);
1008 + checkChars(animationData);
1009 + checkPathProperties(animationData);
1010 + checkShapes(animationData);
1011 + completeLayers(animationData.layers, animationData.assets);
1012 + completeChars(animationData.chars, animationData.assets);
1013 + animationData.__complete = true;
1014 + }
1015 + function completeText(data) {
1016 + if (data.t.a.length === 0 && !("m" in data.t.p)) {}
1017 + }
1018 + var moduleOb = {};
1019 + moduleOb.completeData = completeData;
1020 + moduleOb.checkColors = checkColors;
1021 + moduleOb.checkChars = checkChars;
1022 + moduleOb.checkPathProperties = checkPathProperties;
1023 + moduleOb.checkShapes = checkShapes;
1024 + moduleOb.completeLayers = completeLayers;
1025 + return moduleOb;
1026 + }
1027 + if (!_workerSelf.dataManager) _workerSelf.dataManager = dataFunctionManager();
1028 + if (!_workerSelf.assetLoader) _workerSelf.assetLoader = function() {
1029 + function formatResponse(xhr) {
1030 + var contentTypeHeader = xhr.getResponseHeader("content-type");
1031 + if (contentTypeHeader && xhr.responseType === "json" && contentTypeHeader.indexOf("json") !== -1) return xhr.response;
1032 + if (xhr.response && _typeof$5(xhr.response) === "object") return xhr.response;
1033 + if (xhr.response && typeof xhr.response === "string") return JSON.parse(xhr.response);
1034 + if (xhr.responseText) return JSON.parse(xhr.responseText);
1035 + return null;
1036 + }
1037 + function loadAsset(path, fullPath, callback, errorCallback) {
1038 + var response;
1039 + var xhr = new XMLHttpRequest();
1040 + try {
1041 + xhr.responseType = "json";
1042 + } catch (err) {}
1043 + xhr.onreadystatechange = function() {
1044 + if (xhr.readyState === 4) if (xhr.status === 200) {
1045 + response = formatResponse(xhr);
1046 + callback(response);
1047 + } else try {
1048 + response = formatResponse(xhr);
1049 + callback(response);
1050 + } catch (err) {
1051 + if (errorCallback) errorCallback(err);
1052 + }
1053 + };
1054 + try {
1055 + xhr.open([
1056 + "G",
1057 + "E",
1058 + "T"
1059 + ].join(""), path, true);
1060 + } catch (error) {
1061 + xhr.open([
1062 + "G",
1063 + "E",
1064 + "T"
1065 + ].join(""), fullPath + "/" + path, true);
1066 + }
1067 + xhr.send();
1068 + }
1069 + return { load: loadAsset };
1070 + }();
1071 + if (e.data.type === "loadAnimation") _workerSelf.assetLoader.load(e.data.path, e.data.fullPath, function(data) {
1072 + _workerSelf.dataManager.completeData(data);
1073 + _workerSelf.postMessage({
1074 + id: e.data.id,
1075 + payload: data,
1076 + status: "success"
1077 + });
1078 + }, function() {
1079 + _workerSelf.postMessage({
1080 + id: e.data.id,
1081 + status: "error"
1082 + });
1083 + });
1084 + else if (e.data.type === "complete") {
1085 + var animation = e.data.animation;
1086 + _workerSelf.dataManager.completeData(animation);
1087 + _workerSelf.postMessage({
1088 + id: e.data.id,
1089 + payload: animation,
1090 + status: "success"
1091 + });
1092 + } else if (e.data.type === "loadData") _workerSelf.assetLoader.load(e.data.path, e.data.fullPath, function(data) {
1093 + _workerSelf.postMessage({
1094 + id: e.data.id,
1095 + payload: data,
1096 + status: "success"
1097 + });
1098 + }, function() {
1099 + _workerSelf.postMessage({
1100 + id: e.data.id,
1101 + status: "error"
1102 + });
1103 + });
1104 + });
1105 + workerInstance.onmessage = function(event) {
1106 + var data = event.data;
1107 + var id = data.id;
1108 + var process = processes[id];
1109 + processes[id] = null;
1110 + if (data.status === "success") process.onComplete(data.payload);
1111 + else if (process.onError) process.onError();
1112 + };
1113 + }
1114 + }
1115 + function createProcess(onComplete, onError) {
1116 + _counterId += 1;
1117 + var id = "processId_" + _counterId;
1118 + processes[id] = {
1119 + onComplete,
1120 + onError
1121 + };
1122 + return id;
1123 + }
1124 + function loadAnimation(path, onComplete, onError) {
1125 + setupWorker();
1126 + var processId = createProcess(onComplete, onError);
1127 + workerInstance.postMessage({
1128 + type: "loadAnimation",
1129 + path,
1130 + fullPath: window.location.origin + window.location.pathname,
1131 + id: processId
1132 + });
1133 + }
1134 + function loadData(path, onComplete, onError) {
1135 + setupWorker();
1136 + var processId = createProcess(onComplete, onError);
1137 + workerInstance.postMessage({
1138 + type: "loadData",
1139 + path,
1140 + fullPath: window.location.origin + window.location.pathname,
1141 + id: processId
1142 + });
1143 + }
1144 + function completeAnimation(anim, onComplete, onError) {
1145 + setupWorker();
1146 + var processId = createProcess(onComplete, onError);
1147 + workerInstance.postMessage({
1148 + type: "complete",
1149 + animation: anim,
1150 + id: processId
1151 + });
1152 + }
1153 + return {
1154 + loadAnimation,
1155 + loadData,
1156 + completeAnimation
1157 + };
1158 + }();
1159 + var ImagePreloader = function() {
1160 + var proxyImage = function() {
1161 + var canvas = createTag("canvas");
1162 + canvas.width = 1;
1163 + canvas.height = 1;
1164 + var ctx = canvas.getContext("2d");
1165 + ctx.fillStyle = "rgba(0,0,0,0)";
1166 + ctx.fillRect(0, 0, 1, 1);
1167 + return canvas;
1168 + }();
1169 + function imageLoaded() {
1170 + this.loadedAssets += 1;
1171 + if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {
1172 + if (this.imagesLoadedCb) this.imagesLoadedCb(null);
1173 + }
1174 + }
1175 + function footageLoaded() {
1176 + this.loadedFootagesCount += 1;
1177 + if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {
1178 + if (this.imagesLoadedCb) this.imagesLoadedCb(null);
1179 + }
1180 + }
1181 + function getAssetsPath(assetData, assetsPath, originalPath) {
1182 + var path = "";
1183 + if (assetData.e) path = assetData.p;
1184 + else if (assetsPath) {
1185 + var imagePath = assetData.p;
1186 + if (imagePath.indexOf("images/") !== -1) imagePath = imagePath.split("/")[1];
1187 + path = assetsPath + imagePath;
1188 + } else {
1189 + path = originalPath;
1190 + path += assetData.u ? assetData.u : "";
1191 + path += assetData.p;
1192 + }
1193 + return path;
1194 + }
1195 + function testImageLoaded(img) {
1196 + var _count = 0;
1197 + var intervalId = setInterval(function() {
1198 + if (img.getBBox().width || _count > 500) {
1199 + this._imageLoaded();
1200 + clearInterval(intervalId);
1201 + }
1202 + _count += 1;
1203 + }.bind(this), 50);
1204 + }
1205 + function createImageData(assetData) {
1206 + var path = getAssetsPath(assetData, this.assetsPath, this.path);
1207 + var img = createNS("image");
1208 + if (isSafari) this.testImageLoaded(img);
1209 + else img.addEventListener("load", this._imageLoaded, false);
1210 + img.addEventListener("error", function() {
1211 + ob.img = proxyImage;
1212 + this._imageLoaded();
1213 + }.bind(this), false);
1214 + img.setAttributeNS("http://www.w3.org/1999/xlink", "href", path);
1215 + if (this._elementHelper.append) this._elementHelper.append(img);
1216 + else this._elementHelper.appendChild(img);
1217 + var ob = {
1218 + img,
1219 + assetData
1220 + };
1221 + return ob;
1222 + }
1223 + function createImgData(assetData) {
1224 + var path = getAssetsPath(assetData, this.assetsPath, this.path);
1225 + var img = createTag("img");
1226 + img.crossOrigin = "anonymous";
1227 + img.addEventListener("load", this._imageLoaded, false);
1228 + img.addEventListener("error", function() {
1229 + ob.img = proxyImage;
1230 + this._imageLoaded();
1231 + }.bind(this), false);
1232 + img.src = path;
1233 + var ob = {
1234 + img,
1235 + assetData
1236 + };
1237 + return ob;
1238 + }
1239 + function createFootageData(data) {
1240 + var ob = { assetData: data };
1241 + var path = getAssetsPath(data, this.assetsPath, this.path);
1242 + dataManager.loadData(path, function(footageData) {
1243 + ob.img = footageData;
1244 + this._footageLoaded();
1245 + }.bind(this), function() {
1246 + ob.img = {};
1247 + this._footageLoaded();
1248 + }.bind(this));
1249 + return ob;
1250 + }
1251 + function loadAssets(assets, cb) {
1252 + this.imagesLoadedCb = cb;
1253 + var i;
1254 + var len = assets.length;
1255 + for (i = 0; i < len; i += 1) if (!assets[i].layers) {
1256 + if (!assets[i].t || assets[i].t === "seq") {
1257 + this.totalImages += 1;
1258 + this.images.push(this._createImageData(assets[i]));
1259 + } else if (assets[i].t === 3) {
1260 + this.totalFootages += 1;
1261 + this.images.push(this.createFootageData(assets[i]));
1262 + }
1263 + }
1264 + }
1265 + function setPath(path) {
1266 + this.path = path || "";
1267 + }
1268 + function setAssetsPath(path) {
1269 + this.assetsPath = path || "";
1270 + }
1271 + function getAsset(assetData) {
1272 + var i = 0;
1273 + var len = this.images.length;
1274 + while (i < len) {
1275 + if (this.images[i].assetData === assetData) return this.images[i].img;
1276 + i += 1;
1277 + }
1278 + return null;
1279 + }
1280 + function destroy() {
1281 + this.imagesLoadedCb = null;
1282 + this.images.length = 0;
1283 + }
1284 + function loadedImages() {
1285 + return this.totalImages === this.loadedAssets;
1286 + }
1287 + function loadedFootages() {
1288 + return this.totalFootages === this.loadedFootagesCount;
1289 + }
1290 + function setCacheType(type, elementHelper) {
1291 + if (type === "svg") {
1292 + this._elementHelper = elementHelper;
1293 + this._createImageData = this.createImageData.bind(this);
1294 + } else this._createImageData = this.createImgData.bind(this);
1295 + }
1296 + function ImagePreloaderFactory() {
1297 + this._imageLoaded = imageLoaded.bind(this);
1298 + this._footageLoaded = footageLoaded.bind(this);
1299 + this.testImageLoaded = testImageLoaded.bind(this);
1300 + this.createFootageData = createFootageData.bind(this);
1301 + this.assetsPath = "";
1302 + this.path = "";
1303 + this.totalImages = 0;
1304 + this.totalFootages = 0;
1305 + this.loadedAssets = 0;
1306 + this.loadedFootagesCount = 0;
1307 + this.imagesLoadedCb = null;
1308 + this.images = [];
1309 + }
1310 + ImagePreloaderFactory.prototype = {
1311 + loadAssets,
1312 + setAssetsPath,
1313 + setPath,
1314 + loadedImages,
1315 + loadedFootages,
1316 + destroy,
1317 + getAsset,
1318 + createImgData,
1319 + createImageData,
1320 + imageLoaded,
1321 + footageLoaded,
1322 + setCacheType
1323 + };
1324 + return ImagePreloaderFactory;
1325 + }();
1326 + function BaseEvent() {}
1327 + BaseEvent.prototype = {
1328 + triggerEvent: function triggerEvent(eventName, args) {
1329 + if (this._cbs[eventName]) {
1330 + var callbacks = this._cbs[eventName];
1331 + for (var i = 0; i < callbacks.length; i += 1) callbacks[i](args);
1332 + }
1333 + },
1334 + addEventListener: function addEventListener(eventName, callback) {
1335 + if (!this._cbs[eventName]) this._cbs[eventName] = [];
1336 + this._cbs[eventName].push(callback);
1337 + return function() {
1338 + this.removeEventListener(eventName, callback);
1339 + }.bind(this);
1340 + },
1341 + removeEventListener: function removeEventListener(eventName, callback) {
1342 + if (!callback) this._cbs[eventName] = null;
1343 + else if (this._cbs[eventName]) {
1344 + var i = 0;
1345 + var len = this._cbs[eventName].length;
1346 + while (i < len) {
1347 + if (this._cbs[eventName][i] === callback) {
1348 + this._cbs[eventName].splice(i, 1);
1349 + i -= 1;
1350 + len -= 1;
1351 + }
1352 + i += 1;
1353 + }
1354 + if (!this._cbs[eventName].length) this._cbs[eventName] = null;
1355 + }
1356 + }
1357 + };
1358 + var markerParser = function() {
1359 + function parsePayloadLines(payload) {
1360 + var lines = payload.split("\r\n");
1361 + var keys = {};
1362 + var line;
1363 + var keysCount = 0;
1364 + for (var i = 0; i < lines.length; i += 1) {
1365 + line = lines[i].split(":");
1366 + if (line.length === 2) {
1367 + keys[line[0]] = line[1].trim();
1368 + keysCount += 1;
1369 + }
1370 + }
1371 + if (keysCount === 0) throw new Error();
1372 + return keys;
1373 + }
1374 + return function(_markers) {
1375 + var markers = [];
1376 + for (var i = 0; i < _markers.length; i += 1) {
1377 + var _marker = _markers[i];
1378 + var markerData = {
1379 + time: _marker.tm,
1380 + duration: _marker.dr
1381 + };
1382 + try {
1383 + markerData.payload = JSON.parse(_markers[i].cm);
1384 + } catch (_) {
1385 + try {
1386 + markerData.payload = parsePayloadLines(_markers[i].cm);
1387 + } catch (__) {
1388 + markerData.payload = { name: _markers[i].cm };
1389 + }
1390 + }
1391 + markers.push(markerData);
1392 + }
1393 + return markers;
1394 + };
1395 + }();
1396 + var ProjectInterface = function() {
1397 + function registerComposition(comp) {
1398 + this.compositions.push(comp);
1399 + }
1400 + return function() {
1401 + function _thisProjectFunction(name) {
1402 + var i = 0;
1403 + var len = this.compositions.length;
1404 + while (i < len) {
1405 + if (this.compositions[i].data && this.compositions[i].data.nm === name) {
1406 + if (this.compositions[i].prepareFrame && this.compositions[i].data.xt) this.compositions[i].prepareFrame(this.currentFrame);
1407 + return this.compositions[i].compInterface;
1408 + }
1409 + i += 1;
1410 + }
1411 + return null;
1412 + }
1413 + _thisProjectFunction.compositions = [];
1414 + _thisProjectFunction.currentFrame = 0;
1415 + _thisProjectFunction.registerComposition = registerComposition;
1416 + return _thisProjectFunction;
1417 + };
1418 + }();
1419 + var renderers = {};
1420 + var registerRenderer = function registerRenderer(key, value) {
1421 + renderers[key] = value;
1422 + };
1423 + function getRenderer(key) {
1424 + return renderers[key];
1425 + }
1426 + function getRegisteredRenderer() {
1427 + if (renderers.canvas) return "canvas";
1428 + for (var key in renderers) if (renderers[key]) return key;
1429 + return "";
1430 + }
1431 + function _typeof$4(o) {
1432 + "@babel/helpers - typeof";
1433 + return _typeof$4 = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
1434 + return typeof o;
1435 + } : function(o) {
1436 + return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
1437 + }, _typeof$4(o);
1438 + }
1439 + var AnimationItem = function AnimationItem() {
1440 + this._cbs = [];
1441 + this.name = "";
1442 + this.path = "";
1443 + this.isLoaded = false;
1444 + this.currentFrame = 0;
1445 + this.currentRawFrame = 0;
1446 + this.firstFrame = 0;
1447 + this.totalFrames = 0;
1448 + this.frameRate = 0;
1449 + this.frameMult = 0;
1450 + this.playSpeed = 1;
1451 + this.playDirection = 1;
1452 + this.playCount = 0;
1453 + this.animationData = {};
1454 + this.assets = [];
1455 + this.isPaused = true;
1456 + this.autoplay = false;
1457 + this.loop = true;
1458 + this.renderer = null;
1459 + this.animationID = createElementID();
1460 + this.assetsPath = "";
1461 + this.timeCompleted = 0;
1462 + this.segmentPos = 0;
1463 + this.isSubframeEnabled = getSubframeEnabled();
1464 + this.segments = [];
1465 + this._idle = true;
1466 + this._completedLoop = false;
1467 + this.projectInterface = ProjectInterface();
1468 + this.imagePreloader = new ImagePreloader();
1469 + this.audioController = audioControllerFactory();
1470 + this.markers = [];
1471 + this.configAnimation = this.configAnimation.bind(this);
1472 + this.onSetupError = this.onSetupError.bind(this);
1473 + this.onSegmentComplete = this.onSegmentComplete.bind(this);
1474 + this.drawnFrameEvent = new BMEnterFrameEvent("drawnFrame", 0, 0, 0);
1475 + this.expressionsPlugin = getExpressionsPlugin();
1476 + };
1477 + extendPrototype([BaseEvent], AnimationItem);
1478 + AnimationItem.prototype.setParams = function(params) {
1479 + if (params.wrapper || params.container) this.wrapper = params.wrapper || params.container;
1480 + var animType = "svg";
1481 + if (params.animType) animType = params.animType;
1482 + else if (params.renderer) animType = params.renderer;
1483 + var RendererClass = getRenderer(animType);
1484 + this.renderer = new RendererClass(this, params.rendererSettings);
1485 + this.imagePreloader.setCacheType(animType, this.renderer.globalData.defs);
1486 + this.renderer.setProjectInterface(this.projectInterface);
1487 + this.animType = animType;
1488 + if (params.loop === "" || params.loop === null || params.loop === void 0 || params.loop === true) this.loop = true;
1489 + else if (params.loop === false) this.loop = false;
1490 + else this.loop = parseInt(params.loop, 10);
1491 + this.autoplay = "autoplay" in params ? params.autoplay : true;
1492 + this.name = params.name ? params.name : "";
1493 + this.autoloadSegments = Object.prototype.hasOwnProperty.call(params, "autoloadSegments") ? params.autoloadSegments : true;
1494 + this.assetsPath = params.assetsPath;
1495 + this.initialSegment = params.initialSegment;
1496 + if (params.audioFactory) this.audioController.setAudioFactory(params.audioFactory);
1497 + if (params.animationData) this.setupAnimation(params.animationData);
1498 + else if (params.path) {
1499 + if (params.path.lastIndexOf("\\") !== -1) this.path = params.path.substr(0, params.path.lastIndexOf("\\") + 1);
1500 + else this.path = params.path.substr(0, params.path.lastIndexOf("/") + 1);
1501 + this.fileName = params.path.substr(params.path.lastIndexOf("/") + 1);
1502 + this.fileName = this.fileName.substr(0, this.fileName.lastIndexOf(".json"));
1503 + dataManager.loadAnimation(params.path, this.configAnimation, this.onSetupError);
1504 + }
1505 + };
1506 + AnimationItem.prototype.onSetupError = function() {
1507 + this.trigger("data_failed");
1508 + };
1509 + AnimationItem.prototype.setupAnimation = function(data) {
1510 + dataManager.completeAnimation(data, this.configAnimation);
1511 + };
1512 + AnimationItem.prototype.setData = function(wrapper, animationData) {
1513 + if (animationData) {
1514 + if (_typeof$4(animationData) !== "object") animationData = JSON.parse(animationData);
1515 + }
1516 + var params = {
1517 + wrapper,
1518 + animationData
1519 + };
1520 + var wrapperAttributes = wrapper.attributes;
1521 + params.path = wrapperAttributes.getNamedItem("data-animation-path") ? wrapperAttributes.getNamedItem("data-animation-path").value : wrapperAttributes.getNamedItem("data-bm-path") ? wrapperAttributes.getNamedItem("data-bm-path").value : wrapperAttributes.getNamedItem("bm-path") ? wrapperAttributes.getNamedItem("bm-path").value : "";
1522 + params.animType = wrapperAttributes.getNamedItem("data-anim-type") ? wrapperAttributes.getNamedItem("data-anim-type").value : wrapperAttributes.getNamedItem("data-bm-type") ? wrapperAttributes.getNamedItem("data-bm-type").value : wrapperAttributes.getNamedItem("bm-type") ? wrapperAttributes.getNamedItem("bm-type").value : wrapperAttributes.getNamedItem("data-bm-renderer") ? wrapperAttributes.getNamedItem("data-bm-renderer").value : wrapperAttributes.getNamedItem("bm-renderer") ? wrapperAttributes.getNamedItem("bm-renderer").value : getRegisteredRenderer() || "canvas";
1523 + var loop = wrapperAttributes.getNamedItem("data-anim-loop") ? wrapperAttributes.getNamedItem("data-anim-loop").value : wrapperAttributes.getNamedItem("data-bm-loop") ? wrapperAttributes.getNamedItem("data-bm-loop").value : wrapperAttributes.getNamedItem("bm-loop") ? wrapperAttributes.getNamedItem("bm-loop").value : "";
1524 + if (loop === "false") params.loop = false;
1525 + else if (loop === "true") params.loop = true;
1526 + else if (loop !== "") params.loop = parseInt(loop, 10);
1527 + params.autoplay = (wrapperAttributes.getNamedItem("data-anim-autoplay") ? wrapperAttributes.getNamedItem("data-anim-autoplay").value : wrapperAttributes.getNamedItem("data-bm-autoplay") ? wrapperAttributes.getNamedItem("data-bm-autoplay").value : wrapperAttributes.getNamedItem("bm-autoplay") ? wrapperAttributes.getNamedItem("bm-autoplay").value : true) !== "false";
1528 + params.name = wrapperAttributes.getNamedItem("data-name") ? wrapperAttributes.getNamedItem("data-name").value : wrapperAttributes.getNamedItem("data-bm-name") ? wrapperAttributes.getNamedItem("data-bm-name").value : wrapperAttributes.getNamedItem("bm-name") ? wrapperAttributes.getNamedItem("bm-name").value : "";
1529 + if ((wrapperAttributes.getNamedItem("data-anim-prerender") ? wrapperAttributes.getNamedItem("data-anim-prerender").value : wrapperAttributes.getNamedItem("data-bm-prerender") ? wrapperAttributes.getNamedItem("data-bm-prerender").value : wrapperAttributes.getNamedItem("bm-prerender") ? wrapperAttributes.getNamedItem("bm-prerender").value : "") === "false") params.prerender = false;
1530 + if (!params.path) this.trigger("destroy");
1531 + else this.setParams(params);
1532 + };
1533 + AnimationItem.prototype.includeLayers = function(data) {
1534 + if (data.op > this.animationData.op) {
1535 + this.animationData.op = data.op;
1536 + this.totalFrames = Math.floor(data.op - this.animationData.ip);
1537 + }
1538 + var layers = this.animationData.layers;
1539 + var i;
1540 + var len = layers.length;
1541 + var newLayers = data.layers;
1542 + var j;
1543 + var jLen = newLayers.length;
1544 + for (j = 0; j < jLen; j += 1) {
1545 + i = 0;
1546 + while (i < len) {
1547 + if (layers[i].id === newLayers[j].id) {
1548 + layers[i] = newLayers[j];
1549 + break;
1550 + }
1551 + i += 1;
1552 + }
1553 + }
1554 + if (data.chars || data.fonts) {
1555 + this.renderer.globalData.fontManager.addChars(data.chars);
1556 + this.renderer.globalData.fontManager.addFonts(data.fonts, this.renderer.globalData.defs);
1557 + }
1558 + if (data.assets) {
1559 + len = data.assets.length;
1560 + for (i = 0; i < len; i += 1) this.animationData.assets.push(data.assets[i]);
1561 + }
1562 + this.animationData.__complete = false;
1563 + dataManager.completeAnimation(this.animationData, this.onSegmentComplete);
1564 + };
1565 + AnimationItem.prototype.onSegmentComplete = function(data) {
1566 + this.animationData = data;
1567 + var expressionsPlugin = getExpressionsPlugin();
1568 + if (expressionsPlugin) expressionsPlugin.initExpressions(this);
1569 + this.loadNextSegment();
1570 + };
1571 + AnimationItem.prototype.loadNextSegment = function() {
1572 + var segments = this.animationData.segments;
1573 + if (!segments || segments.length === 0 || !this.autoloadSegments) {
1574 + this.trigger("data_ready");
1575 + this.timeCompleted = this.totalFrames;
1576 + return;
1577 + }
1578 + var segment = segments.shift();
1579 + this.timeCompleted = segment.time * this.frameRate;
1580 + var segmentPath = this.path + this.fileName + "_" + this.segmentPos + ".json";
1581 + this.segmentPos += 1;
1582 + dataManager.loadData(segmentPath, this.includeLayers.bind(this), function() {
1583 + this.trigger("data_failed");
1584 + }.bind(this));
1585 + };
1586 + AnimationItem.prototype.loadSegments = function() {
1587 + if (!this.animationData.segments) this.timeCompleted = this.totalFrames;
1588 + this.loadNextSegment();
1589 + };
1590 + AnimationItem.prototype.imagesLoaded = function() {
1591 + this.trigger("loaded_images");
1592 + this.checkLoaded();
1593 + };
1594 + AnimationItem.prototype.preloadImages = function() {
1595 + this.imagePreloader.setAssetsPath(this.assetsPath);
1596 + this.imagePreloader.setPath(this.path);
1597 + this.imagePreloader.loadAssets(this.animationData.assets, this.imagesLoaded.bind(this));
1598 + };
1599 + AnimationItem.prototype.configAnimation = function(animData) {
1600 + if (!this.renderer) return;
1601 + try {
1602 + this.animationData = animData;
1603 + if (this.initialSegment) {
1604 + this.totalFrames = Math.floor(this.initialSegment[1] - this.initialSegment[0]);
1605 + this.firstFrame = Math.round(this.initialSegment[0]);
1606 + } else {
1607 + this.totalFrames = Math.floor(this.animationData.op - this.animationData.ip);
1608 + this.firstFrame = Math.round(this.animationData.ip);
1609 + }
1610 + this.renderer.configAnimation(animData);
1611 + if (!animData.assets) animData.assets = [];
1612 + this.assets = this.animationData.assets;
1613 + this.frameRate = this.animationData.fr;
1614 + this.frameMult = this.animationData.fr / 1e3;
1615 + this.renderer.searchExtraCompositions(animData.assets);
1616 + this.markers = markerParser(animData.markers || []);
1617 + this.trigger("config_ready");
1618 + this.preloadImages();
1619 + this.loadSegments();
1620 + this.updaFrameModifier();
1621 + this.waitForFontsLoaded();
1622 + if (this.isPaused) this.audioController.pause();
1623 + } catch (error) {
1624 + this.triggerConfigError(error);
1625 + }
1626 + };
1627 + AnimationItem.prototype.waitForFontsLoaded = function() {
1628 + if (!this.renderer) return;
1629 + if (this.renderer.globalData.fontManager.isLoaded) this.checkLoaded();
1630 + else setTimeout(this.waitForFontsLoaded.bind(this), 20);
1631 + };
1632 + AnimationItem.prototype.checkLoaded = function() {
1633 + if (!this.isLoaded && this.renderer.globalData.fontManager.isLoaded && (this.imagePreloader.loadedImages() || this.renderer.rendererType !== "canvas") && this.imagePreloader.loadedFootages()) {
1634 + this.isLoaded = true;
1635 + var expressionsPlugin = getExpressionsPlugin();
1636 + if (expressionsPlugin) expressionsPlugin.initExpressions(this);
1637 + this.renderer.initItems();
1638 + setTimeout(function() {
1639 + this.trigger("DOMLoaded");
1640 + }.bind(this), 0);
1641 + this.gotoFrame();
1642 + if (this.autoplay) this.play();
1643 + }
1644 + };
1645 + AnimationItem.prototype.resize = function(width, height) {
1646 + var _width = typeof width === "number" ? width : void 0;
1647 + var _height = typeof height === "number" ? height : void 0;
1648 + this.renderer.updateContainerSize(_width, _height);
1649 + };
1650 + AnimationItem.prototype.setSubframe = function(flag) {
1651 + this.isSubframeEnabled = !!flag;
1652 + };
1653 + AnimationItem.prototype.gotoFrame = function() {
1654 + this.currentFrame = this.isSubframeEnabled ? this.currentRawFrame : ~~this.currentRawFrame;
1655 + if (this.timeCompleted !== this.totalFrames && this.currentFrame > this.timeCompleted) this.currentFrame = this.timeCompleted;
1656 + this.trigger("enterFrame");
1657 + this.renderFrame();
1658 + this.trigger("drawnFrame");
1659 + };
1660 + AnimationItem.prototype.renderFrame = function() {
1661 + if (this.isLoaded === false || !this.renderer) return;
1662 + try {
1663 + if (this.expressionsPlugin) this.expressionsPlugin.resetFrame();
1664 + this.renderer.renderFrame(this.currentFrame + this.firstFrame);
1665 + } catch (error) {
1666 + this.triggerRenderFrameError(error);
1667 + }
1668 + };
1669 + AnimationItem.prototype.play = function(name) {
1670 + if (name && this.name !== name) return;
1671 + if (this.isPaused === true) {
1672 + this.isPaused = false;
1673 + this.trigger("_play");
1674 + this.audioController.resume();
1675 + if (this._idle) {
1676 + this._idle = false;
1677 + this.trigger("_active");
1678 + }
1679 + }
1680 + };
1681 + AnimationItem.prototype.pause = function(name) {
1682 + if (name && this.name !== name) return;
1683 + if (this.isPaused === false) {
1684 + this.isPaused = true;
1685 + this.trigger("_pause");
1686 + this._idle = true;
1687 + this.trigger("_idle");
1688 + this.audioController.pause();
1689 + }
1690 + };
1691 + AnimationItem.prototype.togglePause = function(name) {
1692 + if (name && this.name !== name) return;
1693 + if (this.isPaused === true) this.play();
1694 + else this.pause();
1695 + };
1696 + AnimationItem.prototype.stop = function(name) {
1697 + if (name && this.name !== name) return;
1698 + this.pause();
1699 + this.playCount = 0;
1700 + this._completedLoop = false;
1701 + this.setCurrentRawFrameValue(0);
1702 + };
1703 + AnimationItem.prototype.getMarkerData = function(markerName) {
1704 + var marker;
1705 + for (var i = 0; i < this.markers.length; i += 1) {
1706 + marker = this.markers[i];
1707 + if (marker.payload && marker.payload.name === markerName) return marker;
1708 + }
1709 + return null;
1710 + };
1711 + AnimationItem.prototype.goToAndStop = function(value, isFrame, name) {
1712 + if (name && this.name !== name) return;
1713 + var numValue = Number(value);
1714 + if (isNaN(numValue)) {
1715 + var marker = this.getMarkerData(value);
1716 + if (marker) this.goToAndStop(marker.time, true);
1717 + } else if (isFrame) this.setCurrentRawFrameValue(value);
1718 + else this.setCurrentRawFrameValue(value * this.frameModifier);
1719 + this.pause();
1720 + };
1721 + AnimationItem.prototype.goToAndPlay = function(value, isFrame, name) {
1722 + if (name && this.name !== name) return;
1723 + var numValue = Number(value);
1724 + if (isNaN(numValue)) {
1725 + var marker = this.getMarkerData(value);
1726 + if (marker) if (!marker.duration) this.goToAndStop(marker.time, true);
1727 + else this.playSegments([marker.time, marker.time + marker.duration], true);
1728 + } else this.goToAndStop(numValue, isFrame, name);
1729 + this.play();
1730 + };
1731 + AnimationItem.prototype.advanceTime = function(value) {
1732 + if (this.isPaused === true || this.isLoaded === false) return;
1733 + var nextValue = this.currentRawFrame + value * this.frameModifier;
1734 + var _isComplete = false;
1735 + if (nextValue >= this.totalFrames - 1 && this.frameModifier > 0) if (!this.loop || this.playCount === this.loop) {
1736 + if (!this.checkSegments(nextValue > this.totalFrames ? nextValue % this.totalFrames : 0)) {
1737 + _isComplete = true;
1738 + nextValue = this.totalFrames - 1;
1739 + }
1740 + } else if (nextValue >= this.totalFrames) {
1741 + this.playCount += 1;
1742 + if (!this.checkSegments(nextValue % this.totalFrames)) {
1743 + this.setCurrentRawFrameValue(nextValue % this.totalFrames);
1744 + this._completedLoop = true;
1745 + this.trigger("loopComplete");
1746 + }
1747 + } else this.setCurrentRawFrameValue(nextValue);
1748 + else if (nextValue < 0) {
1749 + if (!this.checkSegments(nextValue % this.totalFrames)) if (this.loop && !(this.playCount-- <= 0 && this.loop !== true)) {
1750 + this.setCurrentRawFrameValue(this.totalFrames + nextValue % this.totalFrames);
1751 + if (!this._completedLoop) this._completedLoop = true;
1752 + else this.trigger("loopComplete");
1753 + } else {
1754 + _isComplete = true;
1755 + nextValue = 0;
1756 + }
1757 + } else this.setCurrentRawFrameValue(nextValue);
1758 + if (_isComplete) {
1759 + this.setCurrentRawFrameValue(nextValue);
1760 + this.pause();
1761 + this.trigger("complete");
1762 + }
1763 + };
1764 + AnimationItem.prototype.adjustSegment = function(arr, offset) {
1765 + this.playCount = 0;
1766 + if (arr[1] < arr[0]) {
1767 + if (this.frameModifier > 0) if (this.playSpeed < 0) this.setSpeed(-this.playSpeed);
1768 + else this.setDirection(-1);
1769 + this.totalFrames = arr[0] - arr[1];
1770 + this.timeCompleted = this.totalFrames;
1771 + this.firstFrame = arr[1];
1772 + this.setCurrentRawFrameValue(this.totalFrames - .001 - offset);
1773 + } else if (arr[1] > arr[0]) {
1774 + if (this.frameModifier < 0) if (this.playSpeed < 0) this.setSpeed(-this.playSpeed);
1775 + else this.setDirection(1);
1776 + this.totalFrames = arr[1] - arr[0];
1777 + this.timeCompleted = this.totalFrames;
1778 + this.firstFrame = arr[0];
1779 + this.setCurrentRawFrameValue(.001 + offset);
1780 + }
1781 + this.trigger("segmentStart");
1782 + };
1783 + AnimationItem.prototype.setSegment = function(init, end) {
1784 + var pendingFrame = -1;
1785 + if (this.isPaused) {
1786 + if (this.currentRawFrame + this.firstFrame < init) pendingFrame = init;
1787 + else if (this.currentRawFrame + this.firstFrame > end) pendingFrame = end - init;
1788 + }
1789 + this.firstFrame = init;
1790 + this.totalFrames = end - init;
1791 + this.timeCompleted = this.totalFrames;
1792 + if (pendingFrame !== -1) this.goToAndStop(pendingFrame, true);
1793 + };
1794 + AnimationItem.prototype.playSegments = function(arr, forceFlag) {
1795 + if (forceFlag) this.segments.length = 0;
1796 + if (_typeof$4(arr[0]) === "object") {
1797 + var i;
1798 + var len = arr.length;
1799 + for (i = 0; i < len; i += 1) this.segments.push(arr[i]);
1800 + } else this.segments.push(arr);
1801 + if (this.segments.length && forceFlag) this.adjustSegment(this.segments.shift(), 0);
1802 + if (this.isPaused) this.play();
1803 + };
1804 + AnimationItem.prototype.resetSegments = function(forceFlag) {
1805 + this.segments.length = 0;
1806 + this.segments.push([this.animationData.ip, this.animationData.op]);
1807 + if (forceFlag) this.checkSegments(0);
1808 + };
1809 + AnimationItem.prototype.checkSegments = function(offset) {
1810 + if (this.segments.length) {
1811 + this.adjustSegment(this.segments.shift(), offset);
1812 + return true;
1813 + }
1814 + return false;
1815 + };
1816 + AnimationItem.prototype.destroy = function(name) {
1817 + if (name && this.name !== name || !this.renderer) return;
1818 + this.renderer.destroy();
1819 + this.imagePreloader.destroy();
1820 + this.trigger("destroy");
1821 + this._cbs = null;
1822 + this.onEnterFrame = null;
1823 + this.onLoopComplete = null;
1824 + this.onComplete = null;
1825 + this.onSegmentStart = null;
1826 + this.onDestroy = null;
1827 + this.renderer = null;
1828 + this.expressionsPlugin = null;
1829 + this.imagePreloader = null;
1830 + this.projectInterface = null;
1831 + };
1832 + AnimationItem.prototype.setCurrentRawFrameValue = function(value) {
1833 + this.currentRawFrame = value;
1834 + this.gotoFrame();
1835 + };
1836 + AnimationItem.prototype.setSpeed = function(val) {
1837 + this.playSpeed = val;
1838 + this.updaFrameModifier();
1839 + };
1840 + AnimationItem.prototype.setDirection = function(val) {
1841 + this.playDirection = val < 0 ? -1 : 1;
1842 + this.updaFrameModifier();
1843 + };
1844 + AnimationItem.prototype.setLoop = function(isLooping) {
1845 + this.loop = isLooping;
1846 + };
1847 + AnimationItem.prototype.setVolume = function(val, name) {
1848 + if (name && this.name !== name) return;
1849 + this.audioController.setVolume(val);
1850 + };
1851 + AnimationItem.prototype.getVolume = function() {
1852 + return this.audioController.getVolume();
1853 + };
1854 + AnimationItem.prototype.mute = function(name) {
1855 + if (name && this.name !== name) return;
1856 + this.audioController.mute();
1857 + };
1858 + AnimationItem.prototype.unmute = function(name) {
1859 + if (name && this.name !== name) return;
1860 + this.audioController.unmute();
1861 + };
1862 + AnimationItem.prototype.updaFrameModifier = function() {
1863 + this.frameModifier = this.frameMult * this.playSpeed * this.playDirection;
1864 + this.audioController.setRate(this.playSpeed * this.playDirection);
1865 + };
1866 + AnimationItem.prototype.getPath = function() {
1867 + return this.path;
1868 + };
1869 + AnimationItem.prototype.getAssetsPath = function(assetData) {
1870 + var path = "";
1871 + if (assetData.e) path = assetData.p;
1872 + else if (this.assetsPath) {
1873 + var imagePath = assetData.p;
1874 + if (imagePath.indexOf("images/") !== -1) imagePath = imagePath.split("/")[1];
1875 + path = this.assetsPath + imagePath;
1876 + } else {
1877 + path = this.path;
1878 + path += assetData.u ? assetData.u : "";
1879 + path += assetData.p;
1880 + }
1881 + return path;
1882 + };
1883 + AnimationItem.prototype.getAssetData = function(id) {
1884 + var i = 0;
1885 + var len = this.assets.length;
1886 + while (i < len) {
1887 + if (id === this.assets[i].id) return this.assets[i];
1888 + i += 1;
1889 + }
1890 + return null;
1891 + };
1892 + AnimationItem.prototype.hide = function() {
1893 + this.renderer.hide();
1894 + };
1895 + AnimationItem.prototype.show = function() {
1896 + this.renderer.show();
1897 + };
1898 + AnimationItem.prototype.getDuration = function(isFrame) {
1899 + return isFrame ? this.totalFrames : this.totalFrames / this.frameRate;
1900 + };
1901 + AnimationItem.prototype.updateDocumentData = function(path, documentData, index) {
1902 + try {
1903 + this.renderer.getElementByPath(path).updateDocumentData(documentData, index);
1904 + } catch (error) {}
1905 + };
1906 + AnimationItem.prototype.trigger = function(name) {
1907 + if (this._cbs && this._cbs[name]) switch (name) {
1908 + case "enterFrame":
1909 + this.triggerEvent(name, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameModifier));
1910 + break;
1911 + case "drawnFrame":
1912 + this.drawnFrameEvent.currentTime = this.currentFrame;
1913 + this.drawnFrameEvent.totalTime = this.totalFrames;
1914 + this.drawnFrameEvent.direction = this.frameModifier;
1915 + this.triggerEvent(name, this.drawnFrameEvent);
1916 + break;
1917 + case "loopComplete":
1918 + this.triggerEvent(name, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));
1919 + break;
1920 + case "complete":
1921 + this.triggerEvent(name, new BMCompleteEvent(name, this.frameMult));
1922 + break;
1923 + case "segmentStart":
1924 + this.triggerEvent(name, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));
1925 + break;
1926 + case "destroy":
1927 + this.triggerEvent(name, new BMDestroyEvent(name, this));
1928 + break;
1929 + default: this.triggerEvent(name);
1930 + }
1931 + if (name === "enterFrame" && this.onEnterFrame) this.onEnterFrame.call(this, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameMult));
1932 + if (name === "loopComplete" && this.onLoopComplete) this.onLoopComplete.call(this, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));
1933 + if (name === "complete" && this.onComplete) this.onComplete.call(this, new BMCompleteEvent(name, this.frameMult));
1934 + if (name === "segmentStart" && this.onSegmentStart) this.onSegmentStart.call(this, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));
1935 + if (name === "destroy" && this.onDestroy) this.onDestroy.call(this, new BMDestroyEvent(name, this));
1936 + };
1937 + AnimationItem.prototype.triggerRenderFrameError = function(nativeError) {
1938 + var error = new BMRenderFrameErrorEvent(nativeError, this.currentFrame);
1939 + this.triggerEvent("error", error);
1940 + if (this.onError) this.onError.call(this, error);
1941 + };
1942 + AnimationItem.prototype.triggerConfigError = function(nativeError) {
1943 + var error = new BMConfigErrorEvent(nativeError, this.currentFrame);
1944 + this.triggerEvent("error", error);
1945 + if (this.onError) this.onError.call(this, error);
1946 + };
1947 + var animationManager = function() {
1948 + var moduleOb = {};
1949 + var registeredAnimations = [];
1950 + var initTime = 0;
1951 + var len = 0;
1952 + var playingAnimationsNum = 0;
1953 + var _stopped = true;
1954 + var _isFrozen = false;
1955 + function removeElement(ev) {
1956 + var i = 0;
1957 + var animItem = ev.target;
1958 + while (i < len) {
1959 + if (registeredAnimations[i].animation === animItem) {
1960 + registeredAnimations.splice(i, 1);
1961 + i -= 1;
1962 + len -= 1;
1963 + if (!animItem.isPaused) subtractPlayingCount();
1964 + }
1965 + i += 1;
1966 + }
1967 + }
1968 + function registerAnimation(element, animationData) {
1969 + if (!element) return null;
1970 + var i = 0;
1971 + while (i < len) {
1972 + if (registeredAnimations[i].elem === element && registeredAnimations[i].elem !== null) return registeredAnimations[i].animation;
1973 + i += 1;
1974 + }
1975 + var animItem = new AnimationItem();
1976 + setupAnimation(animItem, element);
1977 + animItem.setData(element, animationData);
1978 + return animItem;
1979 + }
1980 + function getRegisteredAnimations() {
1981 + var i;
1982 + var lenAnims = registeredAnimations.length;
1983 + var animations = [];
1984 + for (i = 0; i < lenAnims; i += 1) animations.push(registeredAnimations[i].animation);
1985 + return animations;
1986 + }
1987 + function addPlayingCount() {
1988 + playingAnimationsNum += 1;
1989 + activate();
1990 + }
1991 + function subtractPlayingCount() {
1992 + playingAnimationsNum -= 1;
1993 + }
1994 + function setupAnimation(animItem, element) {
1995 + animItem.addEventListener("destroy", removeElement);
1996 + animItem.addEventListener("_active", addPlayingCount);
1997 + animItem.addEventListener("_idle", subtractPlayingCount);
1998 + registeredAnimations.push({
1999 + elem: element,
2000 + animation: animItem
2001 + });
2002 + len += 1;
2003 + }
2004 + function loadAnimation(params) {
2005 + var animItem = new AnimationItem();
2006 + setupAnimation(animItem, null);
2007 + animItem.setParams(params);
2008 + return animItem;
2009 + }
2010 + function setSpeed(val, animation) {
2011 + var i;
2012 + for (i = 0; i < len; i += 1) registeredAnimations[i].animation.setSpeed(val, animation);
2013 + }
2014 + function setDirection(val, animation) {
2015 + var i;
2016 + for (i = 0; i < len; i += 1) registeredAnimations[i].animation.setDirection(val, animation);
2017 + }
2018 + function play(animation) {
2019 + var i;
2020 + for (i = 0; i < len; i += 1) registeredAnimations[i].animation.play(animation);
2021 + }
2022 + function resume(nowTime) {
2023 + var elapsedTime = nowTime - initTime;
2024 + var i;
2025 + for (i = 0; i < len; i += 1) registeredAnimations[i].animation.advanceTime(elapsedTime);
2026 + initTime = nowTime;
2027 + if (playingAnimationsNum && !_isFrozen) window.requestAnimationFrame(resume);
2028 + else _stopped = true;
2029 + }
2030 + function first(nowTime) {
2031 + initTime = nowTime;
2032 + window.requestAnimationFrame(resume);
2033 + }
2034 + function pause(animation) {
2035 + var i;
2036 + for (i = 0; i < len; i += 1) registeredAnimations[i].animation.pause(animation);
2037 + }
2038 + function goToAndStop(value, isFrame, animation) {
2039 + var i;
2040 + for (i = 0; i < len; i += 1) registeredAnimations[i].animation.goToAndStop(value, isFrame, animation);
2041 + }
2042 + function stop(animation) {
2043 + var i;
2044 + for (i = 0; i < len; i += 1) registeredAnimations[i].animation.stop(animation);
2045 + }
2046 + function togglePause(animation) {
2047 + var i;
2048 + for (i = 0; i < len; i += 1) registeredAnimations[i].animation.togglePause(animation);
2049 + }
2050 + function destroy(animation) {
2051 + var i;
2052 + for (i = len - 1; i >= 0; i -= 1) registeredAnimations[i].animation.destroy(animation);
2053 + }
2054 + function searchAnimations(animationData, standalone, renderer) {
2055 + var animElements = [].concat([].slice.call(document.getElementsByClassName("lottie")), [].slice.call(document.getElementsByClassName("bodymovin")));
2056 + var i;
2057 + var lenAnims = animElements.length;
2058 + for (i = 0; i < lenAnims; i += 1) {
2059 + if (renderer) animElements[i].setAttribute("data-bm-type", renderer);
2060 + registerAnimation(animElements[i], animationData);
2061 + }
2062 + if (standalone && lenAnims === 0) {
2063 + if (!renderer) renderer = "svg";
2064 + var body = document.getElementsByTagName("body")[0];
2065 + body.innerText = "";
2066 + var div = createTag("div");
2067 + div.style.width = "100%";
2068 + div.style.height = "100%";
2069 + div.setAttribute("data-bm-type", renderer);
2070 + body.appendChild(div);
2071 + registerAnimation(div, animationData);
2072 + }
2073 + }
2074 + function resize() {
2075 + var i;
2076 + for (i = 0; i < len; i += 1) registeredAnimations[i].animation.resize();
2077 + }
2078 + function activate() {
2079 + if (!_isFrozen && playingAnimationsNum) {
2080 + if (_stopped) {
2081 + window.requestAnimationFrame(first);
2082 + _stopped = false;
2083 + }
2084 + }
2085 + }
2086 + function freeze() {
2087 + _isFrozen = true;
2088 + }
2089 + function unfreeze() {
2090 + _isFrozen = false;
2091 + activate();
2092 + }
2093 + function setVolume(val, animation) {
2094 + var i;
2095 + for (i = 0; i < len; i += 1) registeredAnimations[i].animation.setVolume(val, animation);
2096 + }
2097 + function mute(animation) {
2098 + var i;
2099 + for (i = 0; i < len; i += 1) registeredAnimations[i].animation.mute(animation);
2100 + }
2101 + function unmute(animation) {
2102 + var i;
2103 + for (i = 0; i < len; i += 1) registeredAnimations[i].animation.unmute(animation);
2104 + }
2105 + moduleOb.registerAnimation = registerAnimation;
2106 + moduleOb.loadAnimation = loadAnimation;
2107 + moduleOb.setSpeed = setSpeed;
2108 + moduleOb.setDirection = setDirection;
2109 + moduleOb.play = play;
2110 + moduleOb.pause = pause;
2111 + moduleOb.stop = stop;
2112 + moduleOb.togglePause = togglePause;
2113 + moduleOb.searchAnimations = searchAnimations;
2114 + moduleOb.resize = resize;
2115 + moduleOb.goToAndStop = goToAndStop;
2116 + moduleOb.destroy = destroy;
2117 + moduleOb.freeze = freeze;
2118 + moduleOb.unfreeze = unfreeze;
2119 + moduleOb.setVolume = setVolume;
2120 + moduleOb.mute = mute;
2121 + moduleOb.unmute = unmute;
2122 + moduleOb.getRegisteredAnimations = getRegisteredAnimations;
2123 + return moduleOb;
2124 + }();
2125 + var BezierFactory = function() {
2126 + /**
2127 + * BezierEasing - use bezier curve for transition easing function
2128 + * by Gaëtan Renaudeau 2014 - 2015 – MIT License
2129 + *
2130 + * Credits: is based on Firefox's nsSMILKeySpline.cpp
2131 + * Usage:
2132 + * var spline = BezierEasing([ 0.25, 0.1, 0.25, 1.0 ])
2133 + * spline.get(x) => returns the easing value | x must be in [0, 1] range
2134 + *
2135 + */
2136 + var ob = {};
2137 + ob.getBezierEasing = getBezierEasing;
2138 + var beziers = {};
2139 + function getBezierEasing(a, b, c, d, nm) {
2140 + var str = nm || ("bez_" + a + "_" + b + "_" + c + "_" + d).replace(/\./g, "p");
2141 + if (beziers[str]) return beziers[str];
2142 + var bezEasing = new BezierEasing([
2143 + a,
2144 + b,
2145 + c,
2146 + d
2147 + ]);
2148 + beziers[str] = bezEasing;
2149 + return bezEasing;
2150 + }
2151 + var NEWTON_ITERATIONS = 4;
2152 + var NEWTON_MIN_SLOPE = .001;
2153 + var SUBDIVISION_PRECISION = 1e-7;
2154 + var SUBDIVISION_MAX_ITERATIONS = 10;
2155 + var kSplineTableSize = 11;
2156 + var kSampleStepSize = 1 / (kSplineTableSize - 1);
2157 + var float32ArraySupported = typeof Float32Array === "function";
2158 + function A(aA1, aA2) {
2159 + return 1 - 3 * aA2 + 3 * aA1;
2160 + }
2161 + function B(aA1, aA2) {
2162 + return 3 * aA2 - 6 * aA1;
2163 + }
2164 + function C(aA1) {
2165 + return 3 * aA1;
2166 + }
2167 + function calcBezier(aT, aA1, aA2) {
2168 + return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;
2169 + }
2170 + function getSlope(aT, aA1, aA2) {
2171 + return 3 * A(aA1, aA2) * aT * aT + 2 * B(aA1, aA2) * aT + C(aA1);
2172 + }
2173 + function binarySubdivide(aX, aA, aB, mX1, mX2) {
2174 + var currentX;
2175 + var currentT;
2176 + var i = 0;
2177 + do {
2178 + currentT = aA + (aB - aA) / 2;
2179 + currentX = calcBezier(currentT, mX1, mX2) - aX;
2180 + if (currentX > 0) aB = currentT;
2181 + else aA = currentT;
2182 + } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);
2183 + return currentT;
2184 + }
2185 + function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {
2186 + for (var i = 0; i < NEWTON_ITERATIONS; ++i) {
2187 + var currentSlope = getSlope(aGuessT, mX1, mX2);
2188 + if (currentSlope === 0) return aGuessT;
2189 + var currentX = calcBezier(aGuessT, mX1, mX2) - aX;
2190 + aGuessT -= currentX / currentSlope;
2191 + }
2192 + return aGuessT;
2193 + }
2194 + /**
2195 + * points is an array of [ mX1, mY1, mX2, mY2 ]
2196 + */
2197 + function BezierEasing(points) {
2198 + this._p = points;
2199 + this._mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);
2200 + this._precomputed = false;
2201 + this.get = this.get.bind(this);
2202 + }
2203 + BezierEasing.prototype = {
2204 + get: function get(x) {
2205 + var mX1 = this._p[0];
2206 + var mY1 = this._p[1];
2207 + var mX2 = this._p[2];
2208 + var mY2 = this._p[3];
2209 + if (!this._precomputed) this._precompute();
2210 + if (mX1 === mY1 && mX2 === mY2) return x;
2211 + if (x === 0) return 0;
2212 + if (x === 1) return 1;
2213 + return calcBezier(this._getTForX(x), mY1, mY2);
2214 + },
2215 + _precompute: function _precompute() {
2216 + var mX1 = this._p[0];
2217 + var mY1 = this._p[1];
2218 + var mX2 = this._p[2];
2219 + var mY2 = this._p[3];
2220 + this._precomputed = true;
2221 + if (mX1 !== mY1 || mX2 !== mY2) this._calcSampleValues();
2222 + },
2223 + _calcSampleValues: function _calcSampleValues() {
2224 + var mX1 = this._p[0];
2225 + var mX2 = this._p[2];
2226 + for (var i = 0; i < kSplineTableSize; ++i) this._mSampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);
2227 + },
2228 + /**
2229 + * getTForX chose the fastest heuristic to determine the percentage value precisely from a given X projection.
2230 + */
2231 + _getTForX: function _getTForX(aX) {
2232 + var mX1 = this._p[0];
2233 + var mX2 = this._p[2];
2234 + var mSampleValues = this._mSampleValues;
2235 + var intervalStart = 0;
2236 + var currentSample = 1;
2237 + var lastSample = kSplineTableSize - 1;
2238 + for (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) intervalStart += kSampleStepSize;
2239 + --currentSample;
2240 + var dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample]);
2241 + var guessForT = intervalStart + dist * kSampleStepSize;
2242 + var initialSlope = getSlope(guessForT, mX1, mX2);
2243 + if (initialSlope >= NEWTON_MIN_SLOPE) return newtonRaphsonIterate(aX, guessForT, mX1, mX2);
2244 + if (initialSlope === 0) return guessForT;
2245 + return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);
2246 + }
2247 + };
2248 + return ob;
2249 + }();
2250 + var pooling = function() {
2251 + function _double(arr) {
2252 + return arr.concat(createSizedArray(arr.length));
2253 + }
2254 + return { "double": _double };
2255 + }();
2256 + var poolFactory = function() {
2257 + return function(initialLength, _create, _release) {
2258 + var _length = 0;
2259 + var _maxLength = initialLength;
2260 + var pool = createSizedArray(_maxLength);
2261 + var ob = {
2262 + newElement,
2263 + release
2264 + };
2265 + function newElement() {
2266 + var element;
2267 + if (_length) {
2268 + _length -= 1;
2269 + element = pool[_length];
2270 + } else element = _create();
2271 + return element;
2272 + }
2273 + function release(element) {
2274 + if (_length === _maxLength) {
2275 + pool = pooling["double"](pool);
2276 + _maxLength *= 2;
2277 + }
2278 + if (_release) _release(element);
2279 + pool[_length] = element;
2280 + _length += 1;
2281 + }
2282 + return ob;
2283 + };
2284 + }();
2285 + var bezierLengthPool = function() {
2286 + function create() {
2287 + return {
2288 + addedLength: 0,
2289 + percents: createTypedArray("float32", getDefaultCurveSegments()),
2290 + lengths: createTypedArray("float32", getDefaultCurveSegments())
2291 + };
2292 + }
2293 + return poolFactory(8, create);
2294 + }();
2295 + var segmentsLengthPool = function() {
2296 + function create() {
2297 + return {
2298 + lengths: [],
2299 + totalLength: 0
2300 + };
2301 + }
2302 + function release(element) {
2303 + var i;
2304 + var len = element.lengths.length;
2305 + for (i = 0; i < len; i += 1) bezierLengthPool.release(element.lengths[i]);
2306 + element.lengths.length = 0;
2307 + }
2308 + return poolFactory(8, create, release);
2309 + }();
2310 + function bezFunction() {
2311 + var math = Math;
2312 + function pointOnLine2D(x1, y1, x2, y2, x3, y3) {
2313 + var det1 = x1 * y2 + y1 * x3 + x2 * y3 - x3 * y2 - y3 * x1 - x2 * y1;
2314 + return det1 > -.001 && det1 < .001;
2315 + }
2316 + function pointOnLine3D(x1, y1, z1, x2, y2, z2, x3, y3, z3) {
2317 + if (z1 === 0 && z2 === 0 && z3 === 0) return pointOnLine2D(x1, y1, x2, y2, x3, y3);
2318 + var dist1 = math.sqrt(math.pow(x2 - x1, 2) + math.pow(y2 - y1, 2) + math.pow(z2 - z1, 2));
2319 + var dist2 = math.sqrt(math.pow(x3 - x1, 2) + math.pow(y3 - y1, 2) + math.pow(z3 - z1, 2));
2320 + var dist3 = math.sqrt(math.pow(x3 - x2, 2) + math.pow(y3 - y2, 2) + math.pow(z3 - z2, 2));
2321 + var diffDist;
2322 + if (dist1 > dist2) if (dist1 > dist3) diffDist = dist1 - dist2 - dist3;
2323 + else diffDist = dist3 - dist2 - dist1;
2324 + else if (dist3 > dist2) diffDist = dist3 - dist2 - dist1;
2325 + else diffDist = dist2 - dist1 - dist3;
2326 + return diffDist > -1e-4 && diffDist < 1e-4;
2327 + }
2328 + var getBezierLength = function() {
2329 + return function(pt1, pt2, pt3, pt4) {
2330 + var curveSegments = getDefaultCurveSegments();
2331 + var k;
2332 + var i;
2333 + var len;
2334 + var ptCoord;
2335 + var perc;
2336 + var addedLength = 0;
2337 + var ptDistance;
2338 + var point = [];
2339 + var lastPoint = [];
2340 + var lengthData = bezierLengthPool.newElement();
2341 + len = pt3.length;
2342 + for (k = 0; k < curveSegments; k += 1) {
2343 + perc = k / (curveSegments - 1);
2344 + ptDistance = 0;
2345 + for (i = 0; i < len; i += 1) {
2346 + 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];
2347 + point[i] = ptCoord;
2348 + if (lastPoint[i] !== null) ptDistance += bmPow(point[i] - lastPoint[i], 2);
2349 + lastPoint[i] = point[i];
2350 + }
2351 + if (ptDistance) {
2352 + ptDistance = bmSqrt(ptDistance);
2353 + addedLength += ptDistance;
2354 + }
2355 + lengthData.percents[k] = perc;
2356 + lengthData.lengths[k] = addedLength;
2357 + }
2358 + lengthData.addedLength = addedLength;
2359 + return lengthData;
2360 + };
2361 + }();
2362 + function getSegmentsLength(shapeData) {
2363 + var segmentsLength = segmentsLengthPool.newElement();
2364 + var closed = shapeData.c;
2365 + var pathV = shapeData.v;
2366 + var pathO = shapeData.o;
2367 + var pathI = shapeData.i;
2368 + var i;
2369 + var len = shapeData._length;
2370 + var lengths = segmentsLength.lengths;
2371 + var totalLength = 0;
2372 + for (i = 0; i < len - 1; i += 1) {
2373 + lengths[i] = getBezierLength(pathV[i], pathV[i + 1], pathO[i], pathI[i + 1]);
2374 + totalLength += lengths[i].addedLength;
2375 + }
2376 + if (closed && len) {
2377 + lengths[i] = getBezierLength(pathV[i], pathV[0], pathO[i], pathI[0]);
2378 + totalLength += lengths[i].addedLength;
2379 + }
2380 + segmentsLength.totalLength = totalLength;
2381 + return segmentsLength;
2382 + }
2383 + function BezierData(length) {
2384 + this.segmentLength = 0;
2385 + this.points = new Array(length);
2386 + }
2387 + function PointData(partial, point) {
2388 + this.partialLength = partial;
2389 + this.point = point;
2390 + }
2391 + var buildBezierData = function() {
2392 + var storedData = {};
2393 + return function(pt1, pt2, pt3, pt4) {
2394 + var bezierName = (pt1[0] + "_" + pt1[1] + "_" + pt2[0] + "_" + pt2[1] + "_" + pt3[0] + "_" + pt3[1] + "_" + pt4[0] + "_" + pt4[1]).replace(/\./g, "p");
2395 + if (!storedData[bezierName]) {
2396 + var curveSegments = getDefaultCurveSegments();
2397 + var k;
2398 + var i;
2399 + var len;
2400 + var ptCoord;
2401 + var perc;
2402 + var addedLength = 0;
2403 + var ptDistance;
2404 + var point;
2405 + var lastPoint = null;
2406 + 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])) curveSegments = 2;
2407 + var bezierData = new BezierData(curveSegments);
2408 + len = pt3.length;
2409 + for (k = 0; k < curveSegments; k += 1) {
2410 + point = createSizedArray(len);
2411 + perc = k / (curveSegments - 1);
2412 + ptDistance = 0;
2413 + for (i = 0; i < len; i += 1) {
2414 + 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];
2415 + point[i] = ptCoord;
2416 + if (lastPoint !== null) ptDistance += bmPow(point[i] - lastPoint[i], 2);
2417 + }
2418 + ptDistance = bmSqrt(ptDistance);
2419 + addedLength += ptDistance;
2420 + bezierData.points[k] = new PointData(ptDistance, point);
2421 + lastPoint = point;
2422 + }
2423 + bezierData.segmentLength = addedLength;
2424 + storedData[bezierName] = bezierData;
2425 + }
2426 + return storedData[bezierName];
2427 + };
2428 + }();
2429 + function getDistancePerc(perc, bezierData) {
2430 + var percents = bezierData.percents;
2431 + var lengths = bezierData.lengths;
2432 + var len = percents.length;
2433 + var initPos = bmFloor((len - 1) * perc);
2434 + var lengthPos = perc * bezierData.addedLength;
2435 + var lPerc = 0;
2436 + if (initPos === len - 1 || initPos === 0 || lengthPos === lengths[initPos]) return percents[initPos];
2437 + var dir = lengths[initPos] > lengthPos ? -1 : 1;
2438 + var flag = true;
2439 + while (flag) {
2440 + if (lengths[initPos] <= lengthPos && lengths[initPos + 1] > lengthPos) {
2441 + lPerc = (lengthPos - lengths[initPos]) / (lengths[initPos + 1] - lengths[initPos]);
2442 + flag = false;
2443 + } else initPos += dir;
2444 + if (initPos < 0 || initPos >= len - 1) {
2445 + if (initPos === len - 1) return percents[initPos];
2446 + flag = false;
2447 + }
2448 + }
2449 + return percents[initPos] + (percents[initPos + 1] - percents[initPos]) * lPerc;
2450 + }
2451 + function getPointInSegment(pt1, pt2, pt3, pt4, percent, bezierData) {
2452 + var t1 = getDistancePerc(percent, bezierData);
2453 + var u1 = 1 - t1;
2454 + return [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]) * 1e3) / 1e3, 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]) * 1e3) / 1e3];
2455 + }
2456 + var bezierSegmentPoints = createTypedArray("float32", 8);
2457 + function getNewSegment(pt1, pt2, pt3, pt4, startPerc, endPerc, bezierData) {
2458 + if (startPerc < 0) startPerc = 0;
2459 + else if (startPerc > 1) startPerc = 1;
2460 + var t0 = getDistancePerc(startPerc, bezierData);
2461 + endPerc = endPerc > 1 ? 1 : endPerc;
2462 + var t1 = getDistancePerc(endPerc, bezierData);
2463 + var i;
2464 + var len = pt1.length;
2465 + var u0 = 1 - t0;
2466 + var u1 = 1 - t1;
2467 + var u0u0u0 = u0 * u0 * u0;
2468 + var t0u0u0_3 = t0 * u0 * u0 * 3;
2469 + var t0t0u0_3 = t0 * t0 * u0 * 3;
2470 + var t0t0t0 = t0 * t0 * t0;
2471 + var u0u0u1 = u0 * u0 * u1;
2472 + var t0u0u1_3 = t0 * u0 * u1 + u0 * t0 * u1 + u0 * u0 * t1;
2473 + var t0t0u1_3 = t0 * t0 * u1 + u0 * t0 * t1 + t0 * u0 * t1;
2474 + var t0t0t1 = t0 * t0 * t1;
2475 + var u0u1u1 = u0 * u1 * u1;
2476 + var t0u1u1_3 = t0 * u1 * u1 + u0 * t1 * u1 + u0 * u1 * t1;
2477 + var t0t1u1_3 = t0 * t1 * u1 + u0 * t1 * t1 + t0 * u1 * t1;
2478 + var t0t1t1 = t0 * t1 * t1;
2479 + var u1u1u1 = u1 * u1 * u1;
2480 + var t1u1u1_3 = t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1;
2481 + var t1t1u1_3 = t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1;
2482 + var t1t1t1 = t1 * t1 * t1;
2483 + for (i = 0; i < len; i += 1) {
2484 + bezierSegmentPoints[i * 4] = math.round((u0u0u0 * pt1[i] + t0u0u0_3 * pt3[i] + t0t0u0_3 * pt4[i] + t0t0t0 * pt2[i]) * 1e3) / 1e3;
2485 + bezierSegmentPoints[i * 4 + 1] = math.round((u0u0u1 * pt1[i] + t0u0u1_3 * pt3[i] + t0t0u1_3 * pt4[i] + t0t0t1 * pt2[i]) * 1e3) / 1e3;
2486 + bezierSegmentPoints[i * 4 + 2] = math.round((u0u1u1 * pt1[i] + t0u1u1_3 * pt3[i] + t0t1u1_3 * pt4[i] + t0t1t1 * pt2[i]) * 1e3) / 1e3;
2487 + bezierSegmentPoints[i * 4 + 3] = math.round((u1u1u1 * pt1[i] + t1u1u1_3 * pt3[i] + t1t1u1_3 * pt4[i] + t1t1t1 * pt2[i]) * 1e3) / 1e3;
2488 + }
2489 + return bezierSegmentPoints;
2490 + }
2491 + return {
2492 + getSegmentsLength,
2493 + getNewSegment,
2494 + getPointInSegment,
2495 + buildBezierData,
2496 + pointOnLine2D,
2497 + pointOnLine3D
2498 + };
2499 + }
2500 + var bez = bezFunction();
2501 + var initFrame = initialDefaultFrame;
2502 + var mathAbs = Math.abs;
2503 + function interpolateValue(frameNum, caching) {
2504 + var offsetTime = this.offsetTime;
2505 + var newValue;
2506 + if (this.propType === "multidimensional") newValue = createTypedArray("float32", this.pv.length);
2507 + var iterationIndex = caching.lastIndex;
2508 + var i = iterationIndex;
2509 + var len = this.keyframes.length - 1;
2510 + var flag = true;
2511 + var keyData;
2512 + var nextKeyData;
2513 + var keyframeMetadata;
2514 + while (flag) {
2515 + keyData = this.keyframes[i];
2516 + nextKeyData = this.keyframes[i + 1];
2517 + if (i === len - 1 && frameNum >= nextKeyData.t - offsetTime) {
2518 + if (keyData.h) keyData = nextKeyData;
2519 + iterationIndex = 0;
2520 + break;
2521 + }
2522 + if (nextKeyData.t - offsetTime > frameNum) {
2523 + iterationIndex = i;
2524 + break;
2525 + }
2526 + if (i < len - 1) i += 1;
2527 + else {
2528 + iterationIndex = 0;
2529 + flag = false;
2530 + }
2531 + }
2532 + keyframeMetadata = this.keyframesMetadata[i] || {};
2533 + var k;
2534 + var kLen;
2535 + var perc;
2536 + var jLen;
2537 + var j;
2538 + var fnc;
2539 + var nextKeyTime = nextKeyData.t - offsetTime;
2540 + var keyTime = keyData.t - offsetTime;
2541 + var endValue;
2542 + if (keyData.to) {
2543 + if (!keyframeMetadata.bezierData) keyframeMetadata.bezierData = bez.buildBezierData(keyData.s, nextKeyData.s || keyData.e, keyData.to, keyData.ti);
2544 + var bezierData = keyframeMetadata.bezierData;
2545 + if (frameNum >= nextKeyTime || frameNum < keyTime) {
2546 + var ind = frameNum >= nextKeyTime ? bezierData.points.length - 1 : 0;
2547 + kLen = bezierData.points[ind].point.length;
2548 + for (k = 0; k < kLen; k += 1) newValue[k] = bezierData.points[ind].point[k];
2549 + } else {
2550 + if (keyframeMetadata.__fnct) fnc = keyframeMetadata.__fnct;
2551 + else {
2552 + fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y, keyData.n).get;
2553 + keyframeMetadata.__fnct = fnc;
2554 + }
2555 + perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));
2556 + var distanceInLine = bezierData.segmentLength * perc;
2557 + var segmentPerc;
2558 + var addedLength = caching.lastFrame < frameNum && caching._lastKeyframeIndex === i ? caching._lastAddedLength : 0;
2559 + j = caching.lastFrame < frameNum && caching._lastKeyframeIndex === i ? caching._lastPoint : 0;
2560 + flag = true;
2561 + jLen = bezierData.points.length;
2562 + while (flag) {
2563 + addedLength += bezierData.points[j].partialLength;
2564 + if (distanceInLine === 0 || perc === 0 || j === bezierData.points.length - 1) {
2565 + kLen = bezierData.points[j].point.length;
2566 + for (k = 0; k < kLen; k += 1) newValue[k] = bezierData.points[j].point[k];
2567 + break;
2568 + } else if (distanceInLine >= addedLength && distanceInLine < addedLength + bezierData.points[j + 1].partialLength) {
2569 + segmentPerc = (distanceInLine - addedLength) / bezierData.points[j + 1].partialLength;
2570 + kLen = bezierData.points[j].point.length;
2571 + for (k = 0; k < kLen; k += 1) newValue[k] = bezierData.points[j].point[k] + (bezierData.points[j + 1].point[k] - bezierData.points[j].point[k]) * segmentPerc;
2572 + break;
2573 + }
2574 + if (j < jLen - 1) j += 1;
2575 + else flag = false;
2576 + }
2577 + caching._lastPoint = j;
2578 + caching._lastAddedLength = addedLength - bezierData.points[j].partialLength;
2579 + caching._lastKeyframeIndex = i;
2580 + }
2581 + } else {
2582 + var outX;
2583 + var outY;
2584 + var inX;
2585 + var inY;
2586 + var keyValue;
2587 + len = keyData.s.length;
2588 + endValue = nextKeyData.s || keyData.e;
2589 + if (this.sh && keyData.h !== 1) if (frameNum >= nextKeyTime) {
2590 + newValue[0] = endValue[0];
2591 + newValue[1] = endValue[1];
2592 + newValue[2] = endValue[2];
2593 + } else if (frameNum <= keyTime) {
2594 + newValue[0] = keyData.s[0];
2595 + newValue[1] = keyData.s[1];
2596 + newValue[2] = keyData.s[2];
2597 + } else {
2598 + var quatStart = createQuaternion(keyData.s);
2599 + var quatEnd = createQuaternion(endValue);
2600 + var time = (frameNum - keyTime) / (nextKeyTime - keyTime);
2601 + quaternionToEuler(newValue, slerp(quatStart, quatEnd, time));
2602 + }
2603 + else for (i = 0; i < len; i += 1) {
2604 + if (keyData.h !== 1) if (frameNum >= nextKeyTime) perc = 1;
2605 + else if (frameNum < keyTime) perc = 0;
2606 + else {
2607 + if (keyData.o.x.constructor === Array) {
2608 + if (!keyframeMetadata.__fnct) keyframeMetadata.__fnct = [];
2609 + if (!keyframeMetadata.__fnct[i]) {
2610 + outX = keyData.o.x[i] === void 0 ? keyData.o.x[0] : keyData.o.x[i];
2611 + outY = keyData.o.y[i] === void 0 ? keyData.o.y[0] : keyData.o.y[i];
2612 + inX = keyData.i.x[i] === void 0 ? keyData.i.x[0] : keyData.i.x[i];
2613 + inY = keyData.i.y[i] === void 0 ? keyData.i.y[0] : keyData.i.y[i];
2614 + fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;
2615 + keyframeMetadata.__fnct[i] = fnc;
2616 + } else fnc = keyframeMetadata.__fnct[i];
2617 + } else if (!keyframeMetadata.__fnct) {
2618 + outX = keyData.o.x;
2619 + outY = keyData.o.y;
2620 + inX = keyData.i.x;
2621 + inY = keyData.i.y;
2622 + fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;
2623 + keyData.keyframeMetadata = fnc;
2624 + } else fnc = keyframeMetadata.__fnct;
2625 + perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));
2626 + }
2627 + endValue = nextKeyData.s || keyData.e;
2628 + keyValue = keyData.h === 1 ? keyData.s[i] : keyData.s[i] + (endValue[i] - keyData.s[i]) * perc;
2629 + if (this.propType === "multidimensional") newValue[i] = keyValue;
2630 + else newValue = keyValue;
2631 + }
2632 + }
2633 + caching.lastIndex = iterationIndex;
2634 + return newValue;
2635 + }
2636 + function slerp(a, b, t) {
2637 + var out = [];
2638 + var ax = a[0];
2639 + var ay = a[1];
2640 + var az = a[2];
2641 + var aw = a[3];
2642 + var bx = b[0];
2643 + var by = b[1];
2644 + var bz = b[2];
2645 + var bw = b[3];
2646 + var omega;
2647 + var cosom;
2648 + var sinom;
2649 + var scale0;
2650 + var scale1;
2651 + cosom = ax * bx + ay * by + az * bz + aw * bw;
2652 + if (cosom < 0) {
2653 + cosom = -cosom;
2654 + bx = -bx;
2655 + by = -by;
2656 + bz = -bz;
2657 + bw = -bw;
2658 + }
2659 + if (1 - cosom > 1e-6) {
2660 + omega = Math.acos(cosom);
2661 + sinom = Math.sin(omega);
2662 + scale0 = Math.sin((1 - t) * omega) / sinom;
2663 + scale1 = Math.sin(t * omega) / sinom;
2664 + } else {
2665 + scale0 = 1 - t;
2666 + scale1 = t;
2667 + }
2668 + out[0] = scale0 * ax + scale1 * bx;
2669 + out[1] = scale0 * ay + scale1 * by;
2670 + out[2] = scale0 * az + scale1 * bz;
2671 + out[3] = scale0 * aw + scale1 * bw;
2672 + return out;
2673 + }
2674 + function quaternionToEuler(out, quat) {
2675 + var qx = quat[0];
2676 + var qy = quat[1];
2677 + var qz = quat[2];
2678 + var qw = quat[3];
2679 + var heading = Math.atan2(2 * qy * qw - 2 * qx * qz, 1 - 2 * qy * qy - 2 * qz * qz);
2680 + var attitude = Math.asin(2 * qx * qy + 2 * qz * qw);
2681 + var bank = Math.atan2(2 * qx * qw - 2 * qy * qz, 1 - 2 * qx * qx - 2 * qz * qz);
2682 + out[0] = heading / degToRads;
2683 + out[1] = attitude / degToRads;
2684 + out[2] = bank / degToRads;
2685 + }
2686 + function createQuaternion(values) {
2687 + var heading = values[0] * degToRads;
2688 + var attitude = values[1] * degToRads;
2689 + var bank = values[2] * degToRads;
2690 + var c1 = Math.cos(heading / 2);
2691 + var c2 = Math.cos(attitude / 2);
2692 + var c3 = Math.cos(bank / 2);
2693 + var s1 = Math.sin(heading / 2);
2694 + var s2 = Math.sin(attitude / 2);
2695 + var s3 = Math.sin(bank / 2);
2696 + var w = c1 * c2 * c3 - s1 * s2 * s3;
2697 + return [
2698 + s1 * s2 * c3 + c1 * c2 * s3,
2699 + s1 * c2 * c3 + c1 * s2 * s3,
2700 + c1 * s2 * c3 - s1 * c2 * s3,
2701 + w
2702 + ];
2703 + }
2704 + function getValueAtCurrentTime() {
2705 + var frameNum = this.comp.renderedFrame - this.offsetTime;
2706 + var initTime = this.keyframes[0].t - this.offsetTime;
2707 + var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;
2708 + if (!(frameNum === this._caching.lastFrame || this._caching.lastFrame !== initFrame && (this._caching.lastFrame >= endTime && frameNum >= endTime || this._caching.lastFrame < initTime && frameNum < initTime))) {
2709 + if (this._caching.lastFrame >= frameNum) {
2710 + this._caching._lastKeyframeIndex = -1;
2711 + this._caching.lastIndex = 0;
2712 + }
2713 + var renderResult = this.interpolateValue(frameNum, this._caching);
2714 + this.pv = renderResult;
2715 + }
2716 + this._caching.lastFrame = frameNum;
2717 + return this.pv;
2718 + }
2719 + function setVValue(val) {
2720 + var multipliedValue;
2721 + if (this.propType === "unidimensional") {
2722 + multipliedValue = val * this.mult;
2723 + if (mathAbs(this.v - multipliedValue) > 1e-5) {
2724 + this.v = multipliedValue;
2725 + this._mdf = true;
2726 + }
2727 + } else {
2728 + var i = 0;
2729 + var len = this.v.length;
2730 + while (i < len) {
2731 + multipliedValue = val[i] * this.mult;
2732 + if (mathAbs(this.v[i] - multipliedValue) > 1e-5) {
2733 + this.v[i] = multipliedValue;
2734 + this._mdf = true;
2735 + }
2736 + i += 1;
2737 + }
2738 + }
2739 + }
2740 + function processEffectsSequence() {
2741 + if (this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) return;
2742 + if (this.lock) {
2743 + this.setVValue(this.pv);
2744 + return;
2745 + }
2746 + this.lock = true;
2747 + this._mdf = this._isFirstFrame;
2748 + var i;
2749 + var len = this.effectsSequence.length;
2750 + var finalValue = this.kf ? this.pv : this.data.k;
2751 + for (i = 0; i < len; i += 1) finalValue = this.effectsSequence[i](finalValue);
2752 + this.setVValue(finalValue);
2753 + this._isFirstFrame = false;
2754 + this.lock = false;
2755 + this.frameId = this.elem.globalData.frameId;
2756 + }
2757 + function addEffect(effectFunction) {
2758 + this.effectsSequence.push(effectFunction);
2759 + this.container.addDynamicProperty(this);
2760 + }
2761 + function ValueProperty(elem, data, mult, container) {
2762 + this.propType = "unidimensional";
2763 + this.mult = mult || 1;
2764 + this.data = data;
2765 + this.v = mult ? data.k * mult : data.k;
2766 + this.pv = data.k;
2767 + this._mdf = false;
2768 + this.elem = elem;
2769 + this.container = container;
2770 + this.comp = elem.comp;
2771 + this.k = false;
2772 + this.kf = false;
2773 + this.vel = 0;
2774 + this.effectsSequence = [];
2775 + this._isFirstFrame = true;
2776 + this.getValue = processEffectsSequence;
2777 + this.setVValue = setVValue;
2778 + this.addEffect = addEffect;
2779 + }
2780 + function MultiDimensionalProperty(elem, data, mult, container) {
2781 + this.propType = "multidimensional";
2782 + this.mult = mult || 1;
2783 + this.data = data;
2784 + this._mdf = false;
2785 + this.elem = elem;
2786 + this.container = container;
2787 + this.comp = elem.comp;
2788 + this.k = false;
2789 + this.kf = false;
2790 + this.frameId = -1;
2791 + var i;
2792 + var len = data.k.length;
2793 + this.v = createTypedArray("float32", len);
2794 + this.pv = createTypedArray("float32", len);
2795 + this.vel = createTypedArray("float32", len);
2796 + for (i = 0; i < len; i += 1) {
2797 + this.v[i] = data.k[i] * this.mult;
2798 + this.pv[i] = data.k[i];
2799 + }
2800 + this._isFirstFrame = true;
2801 + this.effectsSequence = [];
2802 + this.getValue = processEffectsSequence;
2803 + this.setVValue = setVValue;
2804 + this.addEffect = addEffect;
2805 + }
2806 + function KeyframedValueProperty(elem, data, mult, container) {
2807 + this.propType = "unidimensional";
2808 + this.keyframes = data.k;
2809 + this.keyframesMetadata = [];
2810 + this.offsetTime = elem.data.st;
2811 + this.frameId = -1;
2812 + this._caching = {
2813 + lastFrame: initFrame,
2814 + lastIndex: 0,
2815 + value: 0,
2816 + _lastKeyframeIndex: -1
2817 + };
2818 + this.k = true;
2819 + this.kf = true;
2820 + this.data = data;
2821 + this.mult = mult || 1;
2822 + this.elem = elem;
2823 + this.container = container;
2824 + this.comp = elem.comp;
2825 + this.v = initFrame;
2826 + this.pv = initFrame;
2827 + this._isFirstFrame = true;
2828 + this.getValue = processEffectsSequence;
2829 + this.setVValue = setVValue;
2830 + this.interpolateValue = interpolateValue;
2831 + this.effectsSequence = [getValueAtCurrentTime.bind(this)];
2832 + this.addEffect = addEffect;
2833 + }
2834 + function KeyframedMultidimensionalProperty(elem, data, mult, container) {
2835 + this.propType = "multidimensional";
2836 + var i;
2837 + var len = data.k.length;
2838 + var s;
2839 + var e;
2840 + var to;
2841 + var ti;
2842 + for (i = 0; i < len - 1; i += 1) if (data.k[i].to && data.k[i].s && data.k[i + 1] && data.k[i + 1].s) {
2843 + s = data.k[i].s;
2844 + e = data.k[i + 1].s;
2845 + to = data.k[i].to;
2846 + ti = data.k[i].ti;
2847 + 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])) {
2848 + data.k[i].to = null;
2849 + data.k[i].ti = null;
2850 + }
2851 + if (s[0] === e[0] && s[1] === e[1] && to[0] === 0 && to[1] === 0 && ti[0] === 0 && ti[1] === 0) {
2852 + if (s.length === 2 || s[2] === e[2] && to[2] === 0 && ti[2] === 0) {
2853 + data.k[i].to = null;
2854 + data.k[i].ti = null;
2855 + }
2856 + }
2857 + }
2858 + this.effectsSequence = [getValueAtCurrentTime.bind(this)];
2859 + this.data = data;
2860 + this.keyframes = data.k;
2861 + this.keyframesMetadata = [];
2862 + this.offsetTime = elem.data.st;
2863 + this.k = true;
2864 + this.kf = true;
2865 + this._isFirstFrame = true;
2866 + this.mult = mult || 1;
2867 + this.elem = elem;
2868 + this.container = container;
2869 + this.comp = elem.comp;
2870 + this.getValue = processEffectsSequence;
2871 + this.setVValue = setVValue;
2872 + this.interpolateValue = interpolateValue;
2873 + this.frameId = -1;
2874 + var arrLen = data.k[0].s.length;
2875 + this.v = createTypedArray("float32", arrLen);
2876 + this.pv = createTypedArray("float32", arrLen);
2877 + for (i = 0; i < arrLen; i += 1) {
2878 + this.v[i] = initFrame;
2879 + this.pv[i] = initFrame;
2880 + }
2881 + this._caching = {
2882 + lastFrame: initFrame,
2883 + lastIndex: 0,
2884 + value: createTypedArray("float32", arrLen)
2885 + };
2886 + this.addEffect = addEffect;
2887 + }
2888 + var PropertyFactory = function() {
2889 + function getProp(elem, data, type, mult, container) {
2890 + if (data.sid) data = elem.globalData.slotManager.getProp(data);
2891 + var p;
2892 + if (!data.k.length) p = new ValueProperty(elem, data, mult, container);
2893 + else if (typeof data.k[0] === "number") p = new MultiDimensionalProperty(elem, data, mult, container);
2894 + else switch (type) {
2895 + case 0:
2896 + p = new KeyframedValueProperty(elem, data, mult, container);
2897 + break;
2898 + case 1:
2899 + p = new KeyframedMultidimensionalProperty(elem, data, mult, container);
2900 + break;
2901 + default: break;
2902 + }
2903 + if (p.effectsSequence.length) container.addDynamicProperty(p);
2904 + return p;
2905 + }
2906 + return { getProp };
2907 + }();
2908 + function DynamicPropertyContainer() {}
2909 + DynamicPropertyContainer.prototype = {
2910 + addDynamicProperty: function addDynamicProperty(prop) {
2911 + if (this.dynamicProperties.indexOf(prop) === -1) {
2912 + this.dynamicProperties.push(prop);
2913 + this.container.addDynamicProperty(this);
2914 + this._isAnimated = true;
2915 + }
2916 + },
2917 + iterateDynamicProperties: function iterateDynamicProperties() {
2918 + this._mdf = false;
2919 + var i;
2920 + var len = this.dynamicProperties.length;
2921 + for (i = 0; i < len; i += 1) {
2922 + this.dynamicProperties[i].getValue();
2923 + if (this.dynamicProperties[i]._mdf) this._mdf = true;
2924 + }
2925 + },
2926 + initDynamicPropertyContainer: function initDynamicPropertyContainer(container) {
2927 + this.container = container;
2928 + this.dynamicProperties = [];
2929 + this._mdf = false;
2930 + this._isAnimated = false;
2931 + }
2932 + };
2933 + var pointPool = function() {
2934 + function create() {
2935 + return createTypedArray("float32", 2);
2936 + }
2937 + return poolFactory(8, create);
2938 + }();
2939 + function ShapePath() {
2940 + this.c = false;
2941 + this._length = 0;
2942 + this._maxLength = 8;
2943 + this.v = createSizedArray(this._maxLength);
2944 + this.o = createSizedArray(this._maxLength);
2945 + this.i = createSizedArray(this._maxLength);
2946 + }
2947 + ShapePath.prototype.setPathData = function(closed, len) {
2948 + this.c = closed;
2949 + this.setLength(len);
2950 + var i = 0;
2951 + while (i < len) {
2952 + this.v[i] = pointPool.newElement();
2953 + this.o[i] = pointPool.newElement();
2954 + this.i[i] = pointPool.newElement();
2955 + i += 1;
2956 + }
2957 + };
2958 + ShapePath.prototype.setLength = function(len) {
2959 + while (this._maxLength < len) this.doubleArrayLength();
2960 + this._length = len;
2961 + };
2962 + ShapePath.prototype.doubleArrayLength = function() {
2963 + this.v = this.v.concat(createSizedArray(this._maxLength));
2964 + this.i = this.i.concat(createSizedArray(this._maxLength));
2965 + this.o = this.o.concat(createSizedArray(this._maxLength));
2966 + this._maxLength *= 2;
2967 + };
2968 + ShapePath.prototype.setXYAt = function(x, y, type, pos, replace) {
2969 + var arr;
2970 + this._length = Math.max(this._length, pos + 1);
2971 + if (this._length >= this._maxLength) this.doubleArrayLength();
2972 + switch (type) {
2973 + case "v":
2974 + arr = this.v;
2975 + break;
2976 + case "i":
2977 + arr = this.i;
2978 + break;
2979 + case "o":
2980 + arr = this.o;
2981 + break;
2982 + default:
2983 + arr = [];
2984 + break;
2985 + }
2986 + if (!arr[pos] || arr[pos] && !replace) arr[pos] = pointPool.newElement();
2987 + arr[pos][0] = x;
2988 + arr[pos][1] = y;
2989 + };
2990 + ShapePath.prototype.setTripleAt = function(vX, vY, oX, oY, iX, iY, pos, replace) {
2991 + this.setXYAt(vX, vY, "v", pos, replace);
2992 + this.setXYAt(oX, oY, "o", pos, replace);
2993 + this.setXYAt(iX, iY, "i", pos, replace);
2994 + };
2995 + ShapePath.prototype.reverse = function() {
2996 + var newPath = new ShapePath();
2997 + newPath.setPathData(this.c, this._length);
2998 + var vertices = this.v;
2999 + var outPoints = this.o;
3000 + var inPoints = this.i;
3001 + var init = 0;
3002 + if (this.c) {
3003 + newPath.setTripleAt(vertices[0][0], vertices[0][1], inPoints[0][0], inPoints[0][1], outPoints[0][0], outPoints[0][1], 0, false);
3004 + init = 1;
3005 + }
3006 + var cnt = this._length - 1;
3007 + var len = this._length;
3008 + var i;
3009 + for (i = init; i < len; i += 1) {
3010 + newPath.setTripleAt(vertices[cnt][0], vertices[cnt][1], inPoints[cnt][0], inPoints[cnt][1], outPoints[cnt][0], outPoints[cnt][1], i, false);
3011 + cnt -= 1;
3012 + }
3013 + return newPath;
3014 + };
3015 + ShapePath.prototype.length = function() {
3016 + return this._length;
3017 + };
3018 + var shapePool = function() {
3019 + function create() {
3020 + return new ShapePath();
3021 + }
3022 + function release(shapePath) {
3023 + var len = shapePath._length;
3024 + var i;
3025 + for (i = 0; i < len; i += 1) {
3026 + pointPool.release(shapePath.v[i]);
3027 + pointPool.release(shapePath.i[i]);
3028 + pointPool.release(shapePath.o[i]);
3029 + shapePath.v[i] = null;
3030 + shapePath.i[i] = null;
3031 + shapePath.o[i] = null;
3032 + }
3033 + shapePath._length = 0;
3034 + shapePath.c = false;
3035 + }
3036 + function clone(shape) {
3037 + var cloned = factory.newElement();
3038 + var i;
3039 + var len = shape._length === void 0 ? shape.v.length : shape._length;
3040 + cloned.setLength(len);
3041 + cloned.c = shape.c;
3042 + for (i = 0; i < len; i += 1) 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);
3043 + return cloned;
3044 + }
3045 + var factory = poolFactory(4, create, release);
3046 + factory.clone = clone;
3047 + return factory;
3048 + }();
3049 + function ShapeCollection() {
3050 + this._length = 0;
3051 + this._maxLength = 4;
3052 + this.shapes = createSizedArray(this._maxLength);
3053 + }
3054 + ShapeCollection.prototype.addShape = function(shapeData) {
3055 + if (this._length === this._maxLength) {
3056 + this.shapes = this.shapes.concat(createSizedArray(this._maxLength));
3057 + this._maxLength *= 2;
3058 + }
3059 + this.shapes[this._length] = shapeData;
3060 + this._length += 1;
3061 + };
3062 + ShapeCollection.prototype.releaseShapes = function() {
3063 + var i;
3064 + for (i = 0; i < this._length; i += 1) shapePool.release(this.shapes[i]);
3065 + this._length = 0;
3066 + };
3067 + var shapeCollectionPool = function() {
3068 + var ob = {
3069 + newShapeCollection,
3070 + release
3071 + };
3072 + var _length = 0;
3073 + var _maxLength = 4;
3074 + var pool = createSizedArray(_maxLength);
3075 + function newShapeCollection() {
3076 + var shapeCollection;
3077 + if (_length) {
3078 + _length -= 1;
3079 + shapeCollection = pool[_length];
3080 + } else shapeCollection = new ShapeCollection();
3081 + return shapeCollection;
3082 + }
3083 + function release(shapeCollection) {
3084 + var i;
3085 + var len = shapeCollection._length;
3086 + for (i = 0; i < len; i += 1) shapePool.release(shapeCollection.shapes[i]);
3087 + shapeCollection._length = 0;
3088 + if (_length === _maxLength) {
3089 + pool = pooling["double"](pool);
3090 + _maxLength *= 2;
3091 + }
3092 + pool[_length] = shapeCollection;
3093 + _length += 1;
3094 + }
3095 + return ob;
3096 + }();
3097 + var ShapePropertyFactory = function() {
3098 + var initFrame = -999999;
3099 + function interpolateShape(frameNum, previousValue, caching) {
3100 + var iterationIndex = caching.lastIndex;
3101 + var keyPropS;
3102 + var keyPropE;
3103 + var isHold;
3104 + var j;
3105 + var k;
3106 + var jLen;
3107 + var kLen;
3108 + var perc;
3109 + var vertexValue;
3110 + var kf = this.keyframes;
3111 + if (frameNum < kf[0].t - this.offsetTime) {
3112 + keyPropS = kf[0].s[0];
3113 + isHold = true;
3114 + iterationIndex = 0;
3115 + } else if (frameNum >= kf[kf.length - 1].t - this.offsetTime) {
3116 + keyPropS = kf[kf.length - 1].s ? kf[kf.length - 1].s[0] : kf[kf.length - 2].e[0];
3117 + isHold = true;
3118 + } else {
3119 + var i = iterationIndex;
3120 + var len = kf.length - 1;
3121 + var flag = true;
3122 + var keyData;
3123 + var nextKeyData;
3124 + var keyframeMetadata;
3125 + while (flag) {
3126 + keyData = kf[i];
3127 + nextKeyData = kf[i + 1];
3128 + if (nextKeyData.t - this.offsetTime > frameNum) break;
3129 + if (i < len - 1) i += 1;
3130 + else flag = false;
3131 + }
3132 + keyframeMetadata = this.keyframesMetadata[i] || {};
3133 + isHold = keyData.h === 1;
3134 + iterationIndex = i;
3135 + if (!isHold) {
3136 + if (frameNum >= nextKeyData.t - this.offsetTime) perc = 1;
3137 + else if (frameNum < keyData.t - this.offsetTime) perc = 0;
3138 + else {
3139 + var fnc;
3140 + if (keyframeMetadata.__fnct) fnc = keyframeMetadata.__fnct;
3141 + else {
3142 + fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y).get;
3143 + keyframeMetadata.__fnct = fnc;
3144 + }
3145 + perc = fnc((frameNum - (keyData.t - this.offsetTime)) / (nextKeyData.t - this.offsetTime - (keyData.t - this.offsetTime)));
3146 + }
3147 + keyPropE = nextKeyData.s ? nextKeyData.s[0] : keyData.e[0];
3148 + }
3149 + keyPropS = keyData.s[0];
3150 + }
3151 + jLen = previousValue._length;
3152 + kLen = keyPropS.i[0].length;
3153 + caching.lastIndex = iterationIndex;
3154 + for (j = 0; j < jLen; j += 1) for (k = 0; k < kLen; k += 1) {
3155 + vertexValue = isHold ? keyPropS.i[j][k] : keyPropS.i[j][k] + (keyPropE.i[j][k] - keyPropS.i[j][k]) * perc;
3156 + previousValue.i[j][k] = vertexValue;
3157 + vertexValue = isHold ? keyPropS.o[j][k] : keyPropS.o[j][k] + (keyPropE.o[j][k] - keyPropS.o[j][k]) * perc;
3158 + previousValue.o[j][k] = vertexValue;
3159 + vertexValue = isHold ? keyPropS.v[j][k] : keyPropS.v[j][k] + (keyPropE.v[j][k] - keyPropS.v[j][k]) * perc;
3160 + previousValue.v[j][k] = vertexValue;
3161 + }
3162 + }
3163 + function interpolateShapeCurrentTime() {
3164 + var frameNum = this.comp.renderedFrame - this.offsetTime;
3165 + var initTime = this.keyframes[0].t - this.offsetTime;
3166 + var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;
3167 + var lastFrame = this._caching.lastFrame;
3168 + if (!(lastFrame !== initFrame && (lastFrame < initTime && frameNum < initTime || lastFrame > endTime && frameNum > endTime))) {
3169 + this._caching.lastIndex = lastFrame < frameNum ? this._caching.lastIndex : 0;
3170 + this.interpolateShape(frameNum, this.pv, this._caching);
3171 + }
3172 + this._caching.lastFrame = frameNum;
3173 + return this.pv;
3174 + }
3175 + function resetShape() {
3176 + this.paths = this.localShapeCollection;
3177 + }
3178 + function shapesEqual(shape1, shape2) {
3179 + if (shape1._length !== shape2._length || shape1.c !== shape2.c) return false;
3180 + var i;
3181 + var len = shape1._length;
3182 + for (i = 0; i < len; i += 1) 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]) return false;
3183 + return true;
3184 + }
3185 + function setVValue(newPath) {
3186 + if (!shapesEqual(this.v, newPath)) {
3187 + this.v = shapePool.clone(newPath);
3188 + this.localShapeCollection.releaseShapes();
3189 + this.localShapeCollection.addShape(this.v);
3190 + this._mdf = true;
3191 + this.paths = this.localShapeCollection;
3192 + }
3193 + }
3194 + function processEffectsSequence() {
3195 + if (this.elem.globalData.frameId === this.frameId) return;
3196 + if (!this.effectsSequence.length) {
3197 + this._mdf = false;
3198 + return;
3199 + }
3200 + if (this.lock) {
3201 + this.setVValue(this.pv);
3202 + return;
3203 + }
3204 + this.lock = true;
3205 + this._mdf = false;
3206 + var finalValue;
3207 + if (this.kf) finalValue = this.pv;
3208 + else if (this.data.ks) finalValue = this.data.ks.k;
3209 + else finalValue = this.data.pt.k;
3210 + var i;
3211 + var len = this.effectsSequence.length;
3212 + for (i = 0; i < len; i += 1) finalValue = this.effectsSequence[i](finalValue);
3213 + this.setVValue(finalValue);
3214 + this.lock = false;
3215 + this.frameId = this.elem.globalData.frameId;
3216 + }
3217 + function ShapeProperty(elem, data, type) {
3218 + this.propType = "shape";
3219 + this.comp = elem.comp;
3220 + this.container = elem;
3221 + this.elem = elem;
3222 + this.data = data;
3223 + this.k = false;
3224 + this.kf = false;
3225 + this._mdf = false;
3226 + var pathData = type === 3 ? data.pt.k : data.ks.k;
3227 + this.v = shapePool.clone(pathData);
3228 + this.pv = shapePool.clone(this.v);
3229 + this.localShapeCollection = shapeCollectionPool.newShapeCollection();
3230 + this.paths = this.localShapeCollection;
3231 + this.paths.addShape(this.v);
3232 + this.reset = resetShape;
3233 + this.effectsSequence = [];
3234 + }
3235 + function addEffect(effectFunction) {
3236 + this.effectsSequence.push(effectFunction);
3237 + this.container.addDynamicProperty(this);
3238 + }
3239 + ShapeProperty.prototype.interpolateShape = interpolateShape;
3240 + ShapeProperty.prototype.getValue = processEffectsSequence;
3241 + ShapeProperty.prototype.setVValue = setVValue;
3242 + ShapeProperty.prototype.addEffect = addEffect;
3243 + function KeyframedShapeProperty(elem, data, type) {
3244 + this.propType = "shape";
3245 + this.comp = elem.comp;
3246 + this.elem = elem;
3247 + this.container = elem;
3248 + this.offsetTime = elem.data.st;
3249 + this.keyframes = type === 3 ? data.pt.k : data.ks.k;
3250 + this.keyframesMetadata = [];
3251 + this.k = true;
3252 + this.kf = true;
3253 + var len = this.keyframes[0].s[0].i.length;
3254 + this.v = shapePool.newElement();
3255 + this.v.setPathData(this.keyframes[0].s[0].c, len);
3256 + this.pv = shapePool.clone(this.v);
3257 + this.localShapeCollection = shapeCollectionPool.newShapeCollection();
3258 + this.paths = this.localShapeCollection;
3259 + this.paths.addShape(this.v);
3260 + this.lastFrame = initFrame;
3261 + this.reset = resetShape;
3262 + this._caching = {
3263 + lastFrame: initFrame,
3264 + lastIndex: 0
3265 + };
3266 + this.effectsSequence = [interpolateShapeCurrentTime.bind(this)];
3267 + }
3268 + KeyframedShapeProperty.prototype.getValue = processEffectsSequence;
3269 + KeyframedShapeProperty.prototype.interpolateShape = interpolateShape;
3270 + KeyframedShapeProperty.prototype.setVValue = setVValue;
3271 + KeyframedShapeProperty.prototype.addEffect = addEffect;
3272 + var EllShapeProperty = function() {
3273 + var cPoint = roundCorner;
3274 + function EllShapePropertyFactory(elem, data) {
3275 + this.v = shapePool.newElement();
3276 + this.v.setPathData(true, 4);
3277 + this.localShapeCollection = shapeCollectionPool.newShapeCollection();
3278 + this.paths = this.localShapeCollection;
3279 + this.localShapeCollection.addShape(this.v);
3280 + this.d = data.d;
3281 + this.elem = elem;
3282 + this.comp = elem.comp;
3283 + this.frameId = -1;
3284 + this.initDynamicPropertyContainer(elem);
3285 + this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);
3286 + this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);
3287 + if (this.dynamicProperties.length) this.k = true;
3288 + else {
3289 + this.k = false;
3290 + this.convertEllToPath();
3291 + }
3292 + }
3293 + EllShapePropertyFactory.prototype = {
3294 + reset: resetShape,
3295 + getValue: function getValue() {
3296 + if (this.elem.globalData.frameId === this.frameId) return;
3297 + this.frameId = this.elem.globalData.frameId;
3298 + this.iterateDynamicProperties();
3299 + if (this._mdf) this.convertEllToPath();
3300 + },
3301 + convertEllToPath: function convertEllToPath() {
3302 + var p0 = this.p.v[0];
3303 + var p1 = this.p.v[1];
3304 + var s0 = this.s.v[0] / 2;
3305 + var s1 = this.s.v[1] / 2;
3306 + var _cw = this.d !== 3;
3307 + var _v = this.v;
3308 + _v.v[0][0] = p0;
3309 + _v.v[0][1] = p1 - s1;
3310 + _v.v[1][0] = _cw ? p0 + s0 : p0 - s0;
3311 + _v.v[1][1] = p1;
3312 + _v.v[2][0] = p0;
3313 + _v.v[2][1] = p1 + s1;
3314 + _v.v[3][0] = _cw ? p0 - s0 : p0 + s0;
3315 + _v.v[3][1] = p1;
3316 + _v.i[0][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;
3317 + _v.i[0][1] = p1 - s1;
3318 + _v.i[1][0] = _cw ? p0 + s0 : p0 - s0;
3319 + _v.i[1][1] = p1 - s1 * cPoint;
3320 + _v.i[2][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;
3321 + _v.i[2][1] = p1 + s1;
3322 + _v.i[3][0] = _cw ? p0 - s0 : p0 + s0;
3323 + _v.i[3][1] = p1 + s1 * cPoint;
3324 + _v.o[0][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;
3325 + _v.o[0][1] = p1 - s1;
3326 + _v.o[1][0] = _cw ? p0 + s0 : p0 - s0;
3327 + _v.o[1][1] = p1 + s1 * cPoint;
3328 + _v.o[2][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;
3329 + _v.o[2][1] = p1 + s1;
3330 + _v.o[3][0] = _cw ? p0 - s0 : p0 + s0;
3331 + _v.o[3][1] = p1 - s1 * cPoint;
3332 + }
3333 + };
3334 + extendPrototype([DynamicPropertyContainer], EllShapePropertyFactory);
3335 + return EllShapePropertyFactory;
3336 + }();
3337 + var StarShapeProperty = function() {
3338 + function StarShapePropertyFactory(elem, data) {
3339 + this.v = shapePool.newElement();
3340 + this.v.setPathData(true, 0);
3341 + this.elem = elem;
3342 + this.comp = elem.comp;
3343 + this.data = data;
3344 + this.frameId = -1;
3345 + this.d = data.d;
3346 + this.initDynamicPropertyContainer(elem);
3347 + if (data.sy === 1) {
3348 + this.ir = PropertyFactory.getProp(elem, data.ir, 0, 0, this);
3349 + this.is = PropertyFactory.getProp(elem, data.is, 0, .01, this);
3350 + this.convertToPath = this.convertStarToPath;
3351 + } else this.convertToPath = this.convertPolygonToPath;
3352 + this.pt = PropertyFactory.getProp(elem, data.pt, 0, 0, this);
3353 + this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);
3354 + this.r = PropertyFactory.getProp(elem, data.r, 0, degToRads, this);
3355 + this.or = PropertyFactory.getProp(elem, data.or, 0, 0, this);
3356 + this.os = PropertyFactory.getProp(elem, data.os, 0, .01, this);
3357 + this.localShapeCollection = shapeCollectionPool.newShapeCollection();
3358 + this.localShapeCollection.addShape(this.v);
3359 + this.paths = this.localShapeCollection;
3360 + if (this.dynamicProperties.length) this.k = true;
3361 + else {
3362 + this.k = false;
3363 + this.convertToPath();
3364 + }
3365 + }
3366 + StarShapePropertyFactory.prototype = {
3367 + reset: resetShape,
3368 + getValue: function getValue() {
3369 + if (this.elem.globalData.frameId === this.frameId) return;
3370 + this.frameId = this.elem.globalData.frameId;
3371 + this.iterateDynamicProperties();
3372 + if (this._mdf) this.convertToPath();
3373 + },
3374 + convertStarToPath: function convertStarToPath() {
3375 + var numPts = Math.floor(this.pt.v) * 2;
3376 + var angle = Math.PI * 2 / numPts;
3377 + var longFlag = true;
3378 + var longRad = this.or.v;
3379 + var shortRad = this.ir.v;
3380 + var longRound = this.os.v;
3381 + var shortRound = this.is.v;
3382 + var longPerimSegment = 2 * Math.PI * longRad / (numPts * 2);
3383 + var shortPerimSegment = 2 * Math.PI * shortRad / (numPts * 2);
3384 + var i;
3385 + var rad;
3386 + var roundness;
3387 + var perimSegment;
3388 + var currentAng = -Math.PI / 2;
3389 + currentAng += this.r.v;
3390 + var dir = this.data.d === 3 ? -1 : 1;
3391 + this.v._length = 0;
3392 + for (i = 0; i < numPts; i += 1) {
3393 + rad = longFlag ? longRad : shortRad;
3394 + roundness = longFlag ? longRound : shortRound;
3395 + perimSegment = longFlag ? longPerimSegment : shortPerimSegment;
3396 + var x = rad * Math.cos(currentAng);
3397 + var y = rad * Math.sin(currentAng);
3398 + var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);
3399 + var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);
3400 + x += +this.p.v[0];
3401 + y += +this.p.v[1];
3402 + 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);
3403 + longFlag = !longFlag;
3404 + currentAng += angle * dir;
3405 + }
3406 + },
3407 + convertPolygonToPath: function convertPolygonToPath() {
3408 + var numPts = Math.floor(this.pt.v);
3409 + var angle = Math.PI * 2 / numPts;
3410 + var rad = this.or.v;
3411 + var roundness = this.os.v;
3412 + var perimSegment = 2 * Math.PI * rad / (numPts * 4);
3413 + var i;
3414 + var currentAng = -Math.PI * .5;
3415 + var dir = this.data.d === 3 ? -1 : 1;
3416 + currentAng += this.r.v;
3417 + this.v._length = 0;
3418 + for (i = 0; i < numPts; i += 1) {
3419 + var x = rad * Math.cos(currentAng);
3420 + var y = rad * Math.sin(currentAng);
3421 + var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);
3422 + var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);
3423 + x += +this.p.v[0];
3424 + y += +this.p.v[1];
3425 + 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);
3426 + currentAng += angle * dir;
3427 + }
3428 + this.paths.length = 0;
3429 + this.paths[0] = this.v;
3430 + }
3431 + };
3432 + extendPrototype([DynamicPropertyContainer], StarShapePropertyFactory);
3433 + return StarShapePropertyFactory;
3434 + }();
3435 + var RectShapeProperty = function() {
3436 + function RectShapePropertyFactory(elem, data) {
3437 + this.v = shapePool.newElement();
3438 + this.v.c = true;
3439 + this.localShapeCollection = shapeCollectionPool.newShapeCollection();
3440 + this.localShapeCollection.addShape(this.v);
3441 + this.paths = this.localShapeCollection;
3442 + this.elem = elem;
3443 + this.comp = elem.comp;
3444 + this.frameId = -1;
3445 + this.d = data.d;
3446 + this.initDynamicPropertyContainer(elem);
3447 + this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);
3448 + this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);
3449 + this.r = PropertyFactory.getProp(elem, data.r, 0, 0, this);
3450 + if (this.dynamicProperties.length) this.k = true;
3451 + else {
3452 + this.k = false;
3453 + this.convertRectToPath();
3454 + }
3455 + }
3456 + RectShapePropertyFactory.prototype = {
3457 + convertRectToPath: function convertRectToPath() {
3458 + var p0 = this.p.v[0];
3459 + var p1 = this.p.v[1];
3460 + var v0 = this.s.v[0] / 2;
3461 + var v1 = this.s.v[1] / 2;
3462 + var round = bmMin(v0, v1, this.r.v);
3463 + var cPoint = round * (1 - roundCorner);
3464 + this.v._length = 0;
3465 + if (this.d === 2 || this.d === 1) {
3466 + this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, 0, true);
3467 + this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, p0 + v0, p1 + v1 - round, 1, true);
3468 + if (round !== 0) {
3469 + this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, 2, true);
3470 + this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0 + round, p1 + v1, 3, true);
3471 + this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, 4, true);
3472 + this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1 + round, 5, true);
3473 + this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, 6, true);
3474 + this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, p0 + v0 - round, p1 - v1, 7, true);
3475 + } else {
3476 + this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0, p1 + v1, 2);
3477 + this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1, 3);
3478 + }
3479 + } else {
3480 + this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, p0 + v0, p1 - v1 + round, 0, true);
3481 + if (round !== 0) {
3482 + this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, 1, true);
3483 + this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0 + round, p1 - v1, 2, true);
3484 + this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, 3, true);
3485 + this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1 - round, 4, true);
3486 + this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, 5, true);
3487 + this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0 - round, p1 + v1, 6, true);
3488 + this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, 7, true);
3489 + } else {
3490 + this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0, p1 - v1, 1, true);
3491 + this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1, 2, true);
3492 + this.v.setTripleAt(p0 + v0, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0, p1 + v1, 3, true);
3493 + }
3494 + }
3495 + },
3496 + getValue: function getValue() {
3497 + if (this.elem.globalData.frameId === this.frameId) return;
3498 + this.frameId = this.elem.globalData.frameId;
3499 + this.iterateDynamicProperties();
3500 + if (this._mdf) this.convertRectToPath();
3501 + },
3502 + reset: resetShape
3503 + };
3504 + extendPrototype([DynamicPropertyContainer], RectShapePropertyFactory);
3505 + return RectShapePropertyFactory;
3506 + }();
3507 + function getShapeProp(elem, data, type) {
3508 + var prop;
3509 + if (type === 3 || type === 4) if ((type === 3 ? data.pt : data.ks).k.length) prop = new KeyframedShapeProperty(elem, data, type);
3510 + else prop = new ShapeProperty(elem, data, type);
3511 + else if (type === 5) prop = new RectShapeProperty(elem, data);
3512 + else if (type === 6) prop = new EllShapeProperty(elem, data);
3513 + else if (type === 7) prop = new StarShapeProperty(elem, data);
3514 + if (prop.k) elem.addDynamicProperty(prop);
3515 + return prop;
3516 + }
3517 + function getConstructorFunction() {
3518 + return ShapeProperty;
3519 + }
3520 + function getKeyframedConstructorFunction() {
3521 + return KeyframedShapeProperty;
3522 + }
3523 + var ob = {};
3524 + ob.getShapeProp = getShapeProp;
3525 + ob.getConstructorFunction = getConstructorFunction;
3526 + ob.getKeyframedConstructorFunction = getKeyframedConstructorFunction;
3527 + return ob;
3528 + }();
3529 + /*!
3530 + Transformation Matrix v2.0
3531 + (c) Epistemex 2014-2015
3532 + www.epistemex.com
3533 + By Ken Fyrstenberg
3534 + Contributions by leeoniya.
3535 + License: MIT, header required.
3536 + */
3537 + /**
3538 + * 2D transformation matrix object initialized with identity matrix.
3539 + *
3540 + * The matrix can synchronize a canvas context by supplying the context
3541 + * as an argument, or later apply current absolute transform to an
3542 + * existing context.
3543 + *
3544 + * All values are handled as floating point values.
3545 + *
3546 + * @param {CanvasRenderingContext2D} [context] - Optional context to sync with Matrix
3547 + * @prop {number} a - scale x
3548 + * @prop {number} b - shear y
3549 + * @prop {number} c - shear x
3550 + * @prop {number} d - scale y
3551 + * @prop {number} e - translate x
3552 + * @prop {number} f - translate y
3553 + * @prop {CanvasRenderingContext2D|null} [context=null] - set or get current canvas context
3554 + * @constructor
3555 + */
3556 + var Matrix = function() {
3557 + var _cos = Math.cos;
3558 + var _sin = Math.sin;
3559 + var _tan = Math.tan;
3560 + var _rnd = Math.round;
3561 + function reset() {
3562 + this.props[0] = 1;
3563 + this.props[1] = 0;
3564 + this.props[2] = 0;
3565 + this.props[3] = 0;
3566 + this.props[4] = 0;
3567 + this.props[5] = 1;
3568 + this.props[6] = 0;
3569 + this.props[7] = 0;
3570 + this.props[8] = 0;
3571 + this.props[9] = 0;
3572 + this.props[10] = 1;
3573 + this.props[11] = 0;
3574 + this.props[12] = 0;
3575 + this.props[13] = 0;
3576 + this.props[14] = 0;
3577 + this.props[15] = 1;
3578 + return this;
3579 + }
3580 + function rotate(angle) {
3581 + if (angle === 0) return this;
3582 + var mCos = _cos(angle);
3583 + var mSin = _sin(angle);
3584 + return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);
3585 + }
3586 + function rotateX(angle) {
3587 + if (angle === 0) return this;
3588 + var mCos = _cos(angle);
3589 + var mSin = _sin(angle);
3590 + return this._t(1, 0, 0, 0, 0, mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1);
3591 + }
3592 + function rotateY(angle) {
3593 + if (angle === 0) return this;
3594 + var mCos = _cos(angle);
3595 + var mSin = _sin(angle);
3596 + return this._t(mCos, 0, mSin, 0, 0, 1, 0, 0, -mSin, 0, mCos, 0, 0, 0, 0, 1);
3597 + }
3598 + function rotateZ(angle) {
3599 + if (angle === 0) return this;
3600 + var mCos = _cos(angle);
3601 + var mSin = _sin(angle);
3602 + return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);
3603 + }
3604 + function shear(sx, sy) {
3605 + return this._t(1, sy, sx, 1, 0, 0);
3606 + }
3607 + function skew(ax, ay) {
3608 + return this.shear(_tan(ax), _tan(ay));
3609 + }
3610 + function skewFromAxis(ax, angle) {
3611 + var mCos = _cos(angle);
3612 + var mSin = _sin(angle);
3613 + 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);
3614 + }
3615 + function scale(sx, sy, sz) {
3616 + if (!sz && sz !== 0) sz = 1;
3617 + if (sx === 1 && sy === 1 && sz === 1) return this;
3618 + return this._t(sx, 0, 0, 0, 0, sy, 0, 0, 0, 0, sz, 0, 0, 0, 0, 1);
3619 + }
3620 + function setTransform(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) {
3621 + this.props[0] = a;
3622 + this.props[1] = b;
3623 + this.props[2] = c;
3624 + this.props[3] = d;
3625 + this.props[4] = e;
3626 + this.props[5] = f;
3627 + this.props[6] = g;
3628 + this.props[7] = h;
3629 + this.props[8] = i;
3630 + this.props[9] = j;
3631 + this.props[10] = k;
3632 + this.props[11] = l;
3633 + this.props[12] = m;
3634 + this.props[13] = n;
3635 + this.props[14] = o;
3636 + this.props[15] = p;
3637 + return this;
3638 + }
3639 + function translate(tx, ty, tz) {
3640 + tz = tz || 0;
3641 + if (tx !== 0 || ty !== 0 || tz !== 0) return this._t(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, tx, ty, tz, 1);
3642 + return this;
3643 + }
3644 + function transform(a2, b2, c2, d2, e2, f2, g2, h2, i2, j2, k2, l2, m2, n2, o2, p2) {
3645 + var _p = this.props;
3646 + 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) {
3647 + _p[12] = _p[12] * a2 + _p[15] * m2;
3648 + _p[13] = _p[13] * f2 + _p[15] * n2;
3649 + _p[14] = _p[14] * k2 + _p[15] * o2;
3650 + _p[15] *= p2;
3651 + this._identityCalculated = false;
3652 + return this;
3653 + }
3654 + var a1 = _p[0];
3655 + var b1 = _p[1];
3656 + var c1 = _p[2];
3657 + var d1 = _p[3];
3658 + var e1 = _p[4];
3659 + var f1 = _p[5];
3660 + var g1 = _p[6];
3661 + var h1 = _p[7];
3662 + var i1 = _p[8];
3663 + var j1 = _p[9];
3664 + var k1 = _p[10];
3665 + var l1 = _p[11];
3666 + var m1 = _p[12];
3667 + var n1 = _p[13];
3668 + var o1 = _p[14];
3669 + var p1 = _p[15];
3670 + _p[0] = a1 * a2 + b1 * e2 + c1 * i2 + d1 * m2;
3671 + _p[1] = a1 * b2 + b1 * f2 + c1 * j2 + d1 * n2;
3672 + _p[2] = a1 * c2 + b1 * g2 + c1 * k2 + d1 * o2;
3673 + _p[3] = a1 * d2 + b1 * h2 + c1 * l2 + d1 * p2;
3674 + _p[4] = e1 * a2 + f1 * e2 + g1 * i2 + h1 * m2;
3675 + _p[5] = e1 * b2 + f1 * f2 + g1 * j2 + h1 * n2;
3676 + _p[6] = e1 * c2 + f1 * g2 + g1 * k2 + h1 * o2;
3677 + _p[7] = e1 * d2 + f1 * h2 + g1 * l2 + h1 * p2;
3678 + _p[8] = i1 * a2 + j1 * e2 + k1 * i2 + l1 * m2;
3679 + _p[9] = i1 * b2 + j1 * f2 + k1 * j2 + l1 * n2;
3680 + _p[10] = i1 * c2 + j1 * g2 + k1 * k2 + l1 * o2;
3681 + _p[11] = i1 * d2 + j1 * h2 + k1 * l2 + l1 * p2;
3682 + _p[12] = m1 * a2 + n1 * e2 + o1 * i2 + p1 * m2;
3683 + _p[13] = m1 * b2 + n1 * f2 + o1 * j2 + p1 * n2;
3684 + _p[14] = m1 * c2 + n1 * g2 + o1 * k2 + p1 * o2;
3685 + _p[15] = m1 * d2 + n1 * h2 + o1 * l2 + p1 * p2;
3686 + this._identityCalculated = false;
3687 + return this;
3688 + }
3689 + function multiply(matrix) {
3690 + var matrixProps = matrix.props;
3691 + 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]);
3692 + }
3693 + function isIdentity() {
3694 + if (!this._identityCalculated) {
3695 + 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);
3696 + this._identityCalculated = true;
3697 + }
3698 + return this._identity;
3699 + }
3700 + function equals(matr) {
3701 + var i = 0;
3702 + while (i < 16) {
3703 + if (matr.props[i] !== this.props[i]) return false;
3704 + i += 1;
3705 + }
3706 + return true;
3707 + }
3708 + function clone(matr) {
3709 + var i;
3710 + for (i = 0; i < 16; i += 1) matr.props[i] = this.props[i];
3711 + return matr;
3712 + }
3713 + function cloneFromProps(props) {
3714 + var i;
3715 + for (i = 0; i < 16; i += 1) this.props[i] = props[i];
3716 + }
3717 + function applyToPoint(x, y, z) {
3718 + return {
3719 + x: x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12],
3720 + y: x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13],
3721 + z: x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]
3722 + };
3723 + }
3724 + function applyToX(x, y, z) {
3725 + return x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12];
3726 + }
3727 + function applyToY(x, y, z) {
3728 + return x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13];
3729 + }
3730 + function applyToZ(x, y, z) {
3731 + return x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14];
3732 + }
3733 + function getInverseMatrix() {
3734 + var determinant = this.props[0] * this.props[5] - this.props[1] * this.props[4];
3735 + var a = this.props[5] / determinant;
3736 + var b = -this.props[1] / determinant;
3737 + var c = -this.props[4] / determinant;
3738 + var d = this.props[0] / determinant;
3739 + var e = (this.props[4] * this.props[13] - this.props[5] * this.props[12]) / determinant;
3740 + var f = -(this.props[0] * this.props[13] - this.props[1] * this.props[12]) / determinant;
3741 + var inverseMatrix = new Matrix();
3742 + inverseMatrix.props[0] = a;
3743 + inverseMatrix.props[1] = b;
3744 + inverseMatrix.props[4] = c;
3745 + inverseMatrix.props[5] = d;
3746 + inverseMatrix.props[12] = e;
3747 + inverseMatrix.props[13] = f;
3748 + return inverseMatrix;
3749 + }
3750 + function inversePoint(pt) {
3751 + return this.getInverseMatrix().applyToPointArray(pt[0], pt[1], pt[2] || 0);
3752 + }
3753 + function inversePoints(pts) {
3754 + var i;
3755 + var len = pts.length;
3756 + var retPts = [];
3757 + for (i = 0; i < len; i += 1) retPts[i] = inversePoint(pts[i]);
3758 + return retPts;
3759 + }
3760 + function applyToTriplePoints(pt1, pt2, pt3) {
3761 + var arr = createTypedArray("float32", 6);
3762 + if (this.isIdentity()) {
3763 + arr[0] = pt1[0];
3764 + arr[1] = pt1[1];
3765 + arr[2] = pt2[0];
3766 + arr[3] = pt2[1];
3767 + arr[4] = pt3[0];
3768 + arr[5] = pt3[1];
3769 + } else {
3770 + var p0 = this.props[0];
3771 + var p1 = this.props[1];
3772 + var p4 = this.props[4];
3773 + var p5 = this.props[5];
3774 + var p12 = this.props[12];
3775 + var p13 = this.props[13];
3776 + arr[0] = pt1[0] * p0 + pt1[1] * p4 + p12;
3777 + arr[1] = pt1[0] * p1 + pt1[1] * p5 + p13;
3778 + arr[2] = pt2[0] * p0 + pt2[1] * p4 + p12;
3779 + arr[3] = pt2[0] * p1 + pt2[1] * p5 + p13;
3780 + arr[4] = pt3[0] * p0 + pt3[1] * p4 + p12;
3781 + arr[5] = pt3[0] * p1 + pt3[1] * p5 + p13;
3782 + }
3783 + return arr;
3784 + }
3785 + function applyToPointArray(x, y, z) {
3786 + var arr;
3787 + if (this.isIdentity()) arr = [
3788 + x,
3789 + y,
3790 + z
3791 + ];
3792 + else arr = [
3793 + x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12],
3794 + x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13],
3795 + x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]
3796 + ];
3797 + return arr;
3798 + }
3799 + function applyToPointStringified(x, y) {
3800 + if (this.isIdentity()) return x + "," + y;
3801 + var _p = this.props;
3802 + 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;
3803 + }
3804 + function toCSS() {
3805 + var i = 0;
3806 + var props = this.props;
3807 + var cssValue = "matrix3d(";
3808 + var v = 1e4;
3809 + while (i < 16) {
3810 + cssValue += _rnd(props[i] * v) / v;
3811 + cssValue += i === 15 ? ")" : ",";
3812 + i += 1;
3813 + }
3814 + return cssValue;
3815 + }
3816 + function roundMatrixProperty(val) {
3817 + var v = 1e4;
3818 + if (val < 1e-6 && val > 0 || val > -1e-6 && val < 0) return _rnd(val * v) / v;
3819 + return val;
3820 + }
3821 + function to2dCSS() {
3822 + var props = this.props;
3823 + var _a = roundMatrixProperty(props[0]);
3824 + var _b = roundMatrixProperty(props[1]);
3825 + var _c = roundMatrixProperty(props[4]);
3826 + var _d = roundMatrixProperty(props[5]);
3827 + var _e = roundMatrixProperty(props[12]);
3828 + var _f = roundMatrixProperty(props[13]);
3829 + return "matrix(" + _a + "," + _b + "," + _c + "," + _d + "," + _e + "," + _f + ")";
3830 + }
3831 + return function() {
3832 + this.reset = reset;
3833 + this.rotate = rotate;
3834 + this.rotateX = rotateX;
3835 + this.rotateY = rotateY;
3836 + this.rotateZ = rotateZ;
3837 + this.skew = skew;
3838 + this.skewFromAxis = skewFromAxis;
3839 + this.shear = shear;
3840 + this.scale = scale;
3841 + this.setTransform = setTransform;
3842 + this.translate = translate;
3843 + this.transform = transform;
3844 + this.multiply = multiply;
3845 + this.applyToPoint = applyToPoint;
3846 + this.applyToX = applyToX;
3847 + this.applyToY = applyToY;
3848 + this.applyToZ = applyToZ;
3849 + this.applyToPointArray = applyToPointArray;
3850 + this.applyToTriplePoints = applyToTriplePoints;
3851 + this.applyToPointStringified = applyToPointStringified;
3852 + this.toCSS = toCSS;
3853 + this.to2dCSS = to2dCSS;
3854 + this.clone = clone;
3855 + this.cloneFromProps = cloneFromProps;
3856 + this.equals = equals;
3857 + this.inversePoints = inversePoints;
3858 + this.inversePoint = inversePoint;
3859 + this.getInverseMatrix = getInverseMatrix;
3860 + this._t = this.transform;
3861 + this.isIdentity = isIdentity;
3862 + this._identity = true;
3863 + this._identityCalculated = false;
3864 + this.props = createTypedArray("float32", 16);
3865 + this.reset();
3866 + };
3867 + }();
3868 + function _typeof$3(o) {
3869 + "@babel/helpers - typeof";
3870 + return _typeof$3 = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
3871 + return typeof o;
3872 + } : function(o) {
3873 + return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
3874 + }, _typeof$3(o);
3875 + }
3876 + var lottie = {};
3877 + var standalone = "__[STANDALONE]__";
3878 + var animationData = "__[ANIMATIONDATA]__";
3879 + var renderer = "";
3880 + function setLocation(href) {
3881 + setLocationHref(href);
3882 + }
3883 + function searchAnimations() {
3884 + if (standalone === true) animationManager.searchAnimations(animationData, standalone, renderer);
3885 + else animationManager.searchAnimations();
3886 + }
3887 + function setSubframeRendering(flag) {
3888 + setSubframeEnabled(flag);
3889 + }
3890 + function setPrefix(prefix) {
3891 + setIdPrefix(prefix);
3892 + }
3893 + function loadAnimation(params) {
3894 + if (standalone === true) params.animationData = JSON.parse(animationData);
3895 + return animationManager.loadAnimation(params);
3896 + }
3897 + function setQuality(value) {
3898 + if (typeof value === "string") switch (value) {
3899 + case "high":
3900 + setDefaultCurveSegments(200);
3901 + break;
3902 + default:
3903 + case "medium":
3904 + setDefaultCurveSegments(50);
3905 + break;
3906 + case "low":
3907 + setDefaultCurveSegments(10);
3908 + break;
3909 + }
3910 + else if (!isNaN(value) && value > 1) setDefaultCurveSegments(value);
3911 + if (getDefaultCurveSegments() >= 50) roundValues(false);
3912 + else roundValues(true);
3913 + }
3914 + function inBrowser() {
3915 + return typeof navigator !== "undefined";
3916 + }
3917 + function installPlugin(type, plugin) {
3918 + if (type === "expressions") setExpressionsPlugin(plugin);
3919 + }
3920 + function getFactory(name) {
3921 + switch (name) {
3922 + case "propertyFactory": return PropertyFactory;
3923 + case "shapePropertyFactory": return ShapePropertyFactory;
3924 + case "matrix": return Matrix;
3925 + default: return null;
3926 + }
3927 + }
3928 + lottie.play = animationManager.play;
3929 + lottie.pause = animationManager.pause;
3930 + lottie.setLocationHref = setLocation;
3931 + lottie.togglePause = animationManager.togglePause;
3932 + lottie.setSpeed = animationManager.setSpeed;
3933 + lottie.setDirection = animationManager.setDirection;
3934 + lottie.stop = animationManager.stop;
3935 + lottie.searchAnimations = searchAnimations;
3936 + lottie.registerAnimation = animationManager.registerAnimation;
3937 + lottie.loadAnimation = loadAnimation;
3938 + lottie.setSubframeRendering = setSubframeRendering;
3939 + lottie.resize = animationManager.resize;
3940 + lottie.goToAndStop = animationManager.goToAndStop;
3941 + lottie.destroy = animationManager.destroy;
3942 + lottie.setQuality = setQuality;
3943 + lottie.inBrowser = inBrowser;
3944 + lottie.installPlugin = installPlugin;
3945 + lottie.freeze = animationManager.freeze;
3946 + lottie.unfreeze = animationManager.unfreeze;
3947 + lottie.setVolume = animationManager.setVolume;
3948 + lottie.mute = animationManager.mute;
3949 + lottie.unmute = animationManager.unmute;
3950 + lottie.getRegisteredAnimations = animationManager.getRegisteredAnimations;
3951 + lottie.useWebWorker = setWebWorker;
3952 + lottie.setIDPrefix = setPrefix;
3953 + lottie.__getFactory = getFactory;
3954 + lottie.version = "5.13.0";
3955 + function checkReady() {
3956 + if (document.readyState === "complete") {
3957 + clearInterval(readyStateCheckInterval);
3958 + searchAnimations();
3959 + }
3960 + }
3961 + function getQueryVariable(variable) {
3962 + var vars = queryString.split("&");
3963 + for (var i = 0; i < vars.length; i += 1) {
3964 + var pair = vars[i].split("=");
3965 + if (decodeURIComponent(pair[0]) == variable) return decodeURIComponent(pair[1]);
3966 + }
3967 + return null;
3968 + }
3969 + var queryString = "";
3970 + if (standalone) {
3971 + var scripts = document.getElementsByTagName("script");
3972 + var myScript = scripts[scripts.length - 1] || { src: "" };
3973 + queryString = myScript.src ? myScript.src.replace(/^[^\?]+\??/, "") : "";
3974 + renderer = getQueryVariable("renderer");
3975 + }
3976 + var readyStateCheckInterval = setInterval(checkReady, 100);
3977 + try {
3978 + if (!((typeof exports === "undefined" ? "undefined" : _typeof$3(exports)) === "object" && typeof module !== "undefined") && !(typeof define === "function" && define.amd)) window.bodymovin = lottie;
3979 + } catch (err) {}
3980 + var ShapeModifiers = function() {
3981 + var ob = {};
3982 + var modifiers = {};
3983 + ob.registerModifier = registerModifier;
3984 + ob.getModifier = getModifier;
3985 + function registerModifier(nm, factory) {
3986 + if (!modifiers[nm]) modifiers[nm] = factory;
3987 + }
3988 + function getModifier(nm, elem, data) {
3989 + return new modifiers[nm](elem, data);
3990 + }
3991 + return ob;
3992 + }();
3993 + function ShapeModifier() {}
3994 + ShapeModifier.prototype.initModifierProperties = function() {};
3995 + ShapeModifier.prototype.addShapeToModifier = function() {};
3996 + ShapeModifier.prototype.addShape = function(data) {
3997 + if (!this.closed) {
3998 + data.sh.container.addDynamicProperty(data.sh);
3999 + var shapeData = {
4000 + shape: data.sh,
4001 + data,
4002 + localShapeCollection: shapeCollectionPool.newShapeCollection()
4003 + };
4004 + this.shapes.push(shapeData);
4005 + this.addShapeToModifier(shapeData);
4006 + if (this._isAnimated) data.setAsAnimated();
4007 + }
4008 + };
4009 + ShapeModifier.prototype.init = function(elem, data) {
4010 + this.shapes = [];
4011 + this.elem = elem;
4012 + this.initDynamicPropertyContainer(elem);
4013 + this.initModifierProperties(elem, data);
4014 + this.frameId = initialDefaultFrame;
4015 + this.closed = false;
4016 + this.k = false;
4017 + if (this.dynamicProperties.length) this.k = true;
4018 + else this.getValue(true);
4019 + };
4020 + ShapeModifier.prototype.processKeys = function() {
4021 + if (this.elem.globalData.frameId === this.frameId) return;
4022 + this.frameId = this.elem.globalData.frameId;
4023 + this.iterateDynamicProperties();
4024 + };
4025 + extendPrototype([DynamicPropertyContainer], ShapeModifier);
4026 + function TrimModifier() {}
4027 + extendPrototype([ShapeModifier], TrimModifier);
4028 + TrimModifier.prototype.initModifierProperties = function(elem, data) {
4029 + this.s = PropertyFactory.getProp(elem, data.s, 0, .01, this);
4030 + this.e = PropertyFactory.getProp(elem, data.e, 0, .01, this);
4031 + this.o = PropertyFactory.getProp(elem, data.o, 0, 0, this);
4032 + this.sValue = 0;
4033 + this.eValue = 0;
4034 + this.getValue = this.processKeys;
4035 + this.m = data.m;
4036 + this._isAnimated = !!this.s.effectsSequence.length || !!this.e.effectsSequence.length || !!this.o.effectsSequence.length;
4037 + };
4038 + TrimModifier.prototype.addShapeToModifier = function(shapeData) {
4039 + shapeData.pathsData = [];
4040 + };
4041 + TrimModifier.prototype.calculateShapeEdges = function(s, e, shapeLength, addedLength, totalModifierLength) {
4042 + var segments = [];
4043 + if (e <= 1) segments.push({
4044 + s,
4045 + e
4046 + });
4047 + else if (s >= 1) segments.push({
4048 + s: s - 1,
4049 + e: e - 1
4050 + });
4051 + else {
4052 + segments.push({
4053 + s,
4054 + e: 1
4055 + });
4056 + segments.push({
4057 + s: 0,
4058 + e: e - 1
4059 + });
4060 + }
4061 + var shapeSegments = [];
4062 + var i;
4063 + var len = segments.length;
4064 + var segmentOb;
4065 + for (i = 0; i < len; i += 1) {
4066 + segmentOb = segments[i];
4067 + if (!(segmentOb.e * totalModifierLength < addedLength || segmentOb.s * totalModifierLength > addedLength + shapeLength)) {
4068 + var shapeS;
4069 + var shapeE;
4070 + if (segmentOb.s * totalModifierLength <= addedLength) shapeS = 0;
4071 + else shapeS = (segmentOb.s * totalModifierLength - addedLength) / shapeLength;
4072 + if (segmentOb.e * totalModifierLength >= addedLength + shapeLength) shapeE = 1;
4073 + else shapeE = (segmentOb.e * totalModifierLength - addedLength) / shapeLength;
4074 + shapeSegments.push([shapeS, shapeE]);
4075 + }
4076 + }
4077 + if (!shapeSegments.length) shapeSegments.push([0, 0]);
4078 + return shapeSegments;
4079 + };
4080 + TrimModifier.prototype.releasePathsData = function(pathsData) {
4081 + var i;
4082 + var len = pathsData.length;
4083 + for (i = 0; i < len; i += 1) segmentsLengthPool.release(pathsData[i]);
4084 + pathsData.length = 0;
4085 + return pathsData;
4086 + };
4087 + TrimModifier.prototype.processShapes = function(_isFirstFrame) {
4088 + var s;
4089 + var e;
4090 + if (this._mdf || _isFirstFrame) {
4091 + var o = this.o.v % 360 / 360;
4092 + if (o < 0) o += 1;
4093 + if (this.s.v > 1) s = 1 + o;
4094 + else if (this.s.v < 0) s = 0 + o;
4095 + else s = this.s.v + o;
4096 + if (this.e.v > 1) e = 1 + o;
4097 + else if (this.e.v < 0) e = 0 + o;
4098 + else e = this.e.v + o;
4099 + if (s > e) {
4100 + var _s = s;
4101 + s = e;
4102 + e = _s;
4103 + }
4104 + s = Math.round(s * 1e4) * 1e-4;
4105 + e = Math.round(e * 1e4) * 1e-4;
4106 + this.sValue = s;
4107 + this.eValue = e;
4108 + } else {
4109 + s = this.sValue;
4110 + e = this.eValue;
4111 + }
4112 + var shapePaths;
4113 + var i;
4114 + var len = this.shapes.length;
4115 + var j;
4116 + var jLen;
4117 + var pathsData;
4118 + var pathData;
4119 + var totalShapeLength;
4120 + var totalModifierLength = 0;
4121 + if (e === s) for (i = 0; i < len; i += 1) {
4122 + this.shapes[i].localShapeCollection.releaseShapes();
4123 + this.shapes[i].shape._mdf = true;
4124 + this.shapes[i].shape.paths = this.shapes[i].localShapeCollection;
4125 + if (this._mdf) this.shapes[i].pathsData.length = 0;
4126 + }
4127 + else if (!(e === 1 && s === 0 || e === 0 && s === 1)) {
4128 + var segments = [];
4129 + var shapeData;
4130 + var localShapeCollection;
4131 + for (i = 0; i < len; i += 1) {
4132 + shapeData = this.shapes[i];
4133 + if (!shapeData.shape._mdf && !this._mdf && !_isFirstFrame && this.m !== 2) shapeData.shape.paths = shapeData.localShapeCollection;
4134 + else {
4135 + shapePaths = shapeData.shape.paths;
4136 + jLen = shapePaths._length;
4137 + totalShapeLength = 0;
4138 + if (!shapeData.shape._mdf && shapeData.pathsData.length) totalShapeLength = shapeData.totalShapeLength;
4139 + else {
4140 + pathsData = this.releasePathsData(shapeData.pathsData);
4141 + for (j = 0; j < jLen; j += 1) {
4142 + pathData = bez.getSegmentsLength(shapePaths.shapes[j]);
4143 + pathsData.push(pathData);
4144 + totalShapeLength += pathData.totalLength;
4145 + }
4146 + shapeData.totalShapeLength = totalShapeLength;
4147 + shapeData.pathsData = pathsData;
4148 + }
4149 + totalModifierLength += totalShapeLength;
4150 + shapeData.shape._mdf = true;
4151 + }
4152 + }
4153 + var shapeS = s;
4154 + var shapeE = e;
4155 + var addedLength = 0;
4156 + var edges;
4157 + for (i = len - 1; i >= 0; i -= 1) {
4158 + shapeData = this.shapes[i];
4159 + if (shapeData.shape._mdf) {
4160 + localShapeCollection = shapeData.localShapeCollection;
4161 + localShapeCollection.releaseShapes();
4162 + if (this.m === 2 && len > 1) {
4163 + edges = this.calculateShapeEdges(s, e, shapeData.totalShapeLength, addedLength, totalModifierLength);
4164 + addedLength += shapeData.totalShapeLength;
4165 + } else edges = [[shapeS, shapeE]];
4166 + jLen = edges.length;
4167 + for (j = 0; j < jLen; j += 1) {
4168 + shapeS = edges[j][0];
4169 + shapeE = edges[j][1];
4170 + segments.length = 0;
4171 + if (shapeE <= 1) segments.push({
4172 + s: shapeData.totalShapeLength * shapeS,
4173 + e: shapeData.totalShapeLength * shapeE
4174 + });
4175 + else if (shapeS >= 1) segments.push({
4176 + s: shapeData.totalShapeLength * (shapeS - 1),
4177 + e: shapeData.totalShapeLength * (shapeE - 1)
4178 + });
4179 + else {
4180 + segments.push({
4181 + s: shapeData.totalShapeLength * shapeS,
4182 + e: shapeData.totalShapeLength
4183 + });
4184 + segments.push({
4185 + s: 0,
4186 + e: shapeData.totalShapeLength * (shapeE - 1)
4187 + });
4188 + }
4189 + var newShapesData = this.addShapes(shapeData, segments[0]);
4190 + if (segments[0].s !== segments[0].e) {
4191 + if (segments.length > 1) if (shapeData.shape.paths.shapes[shapeData.shape.paths._length - 1].c) {
4192 + var lastShape = newShapesData.pop();
4193 + this.addPaths(newShapesData, localShapeCollection);
4194 + newShapesData = this.addShapes(shapeData, segments[1], lastShape);
4195 + } else {
4196 + this.addPaths(newShapesData, localShapeCollection);
4197 + newShapesData = this.addShapes(shapeData, segments[1]);
4198 + }
4199 + this.addPaths(newShapesData, localShapeCollection);
4200 + }
4201 + }
4202 + shapeData.shape.paths = localShapeCollection;
4203 + }
4204 + }
4205 + } else if (this._mdf) for (i = 0; i < len; i += 1) {
4206 + this.shapes[i].pathsData.length = 0;
4207 + this.shapes[i].shape._mdf = true;
4208 + }
4209 + };
4210 + TrimModifier.prototype.addPaths = function(newPaths, localShapeCollection) {
4211 + var i;
4212 + var len = newPaths.length;
4213 + for (i = 0; i < len; i += 1) localShapeCollection.addShape(newPaths[i]);
4214 + };
4215 + TrimModifier.prototype.addSegment = function(pt1, pt2, pt3, pt4, shapePath, pos, newShape) {
4216 + shapePath.setXYAt(pt2[0], pt2[1], "o", pos);
4217 + shapePath.setXYAt(pt3[0], pt3[1], "i", pos + 1);
4218 + if (newShape) shapePath.setXYAt(pt1[0], pt1[1], "v", pos);
4219 + shapePath.setXYAt(pt4[0], pt4[1], "v", pos + 1);
4220 + };
4221 + TrimModifier.prototype.addSegmentFromArray = function(points, shapePath, pos, newShape) {
4222 + shapePath.setXYAt(points[1], points[5], "o", pos);
4223 + shapePath.setXYAt(points[2], points[6], "i", pos + 1);
4224 + if (newShape) shapePath.setXYAt(points[0], points[4], "v", pos);
4225 + shapePath.setXYAt(points[3], points[7], "v", pos + 1);
4226 + };
4227 + TrimModifier.prototype.addShapes = function(shapeData, shapeSegment, shapePath) {
4228 + var pathsData = shapeData.pathsData;
4229 + var shapePaths = shapeData.shape.paths.shapes;
4230 + var i;
4231 + var len = shapeData.shape.paths._length;
4232 + var j;
4233 + var jLen;
4234 + var addedLength = 0;
4235 + var currentLengthData;
4236 + var segmentCount;
4237 + var lengths;
4238 + var segment;
4239 + var shapes = [];
4240 + var initPos;
4241 + var newShape = true;
4242 + if (!shapePath) {
4243 + shapePath = shapePool.newElement();
4244 + segmentCount = 0;
4245 + initPos = 0;
4246 + } else {
4247 + segmentCount = shapePath._length;
4248 + initPos = shapePath._length;
4249 + }
4250 + shapes.push(shapePath);
4251 + for (i = 0; i < len; i += 1) {
4252 + lengths = pathsData[i].lengths;
4253 + shapePath.c = shapePaths[i].c;
4254 + jLen = shapePaths[i].c ? lengths.length : lengths.length + 1;
4255 + for (j = 1; j < jLen; j += 1) {
4256 + currentLengthData = lengths[j - 1];
4257 + if (addedLength + currentLengthData.addedLength < shapeSegment.s) {
4258 + addedLength += currentLengthData.addedLength;
4259 + shapePath.c = false;
4260 + } else if (addedLength > shapeSegment.e) {
4261 + shapePath.c = false;
4262 + break;
4263 + } else {
4264 + if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + currentLengthData.addedLength) {
4265 + this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[j], shapePaths[i].v[j], shapePath, segmentCount, newShape);
4266 + newShape = false;
4267 + } else {
4268 + 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]);
4269 + this.addSegmentFromArray(segment, shapePath, segmentCount, newShape);
4270 + newShape = false;
4271 + shapePath.c = false;
4272 + }
4273 + addedLength += currentLengthData.addedLength;
4274 + segmentCount += 1;
4275 + }
4276 + }
4277 + if (shapePaths[i].c && lengths.length) {
4278 + currentLengthData = lengths[j - 1];
4279 + if (addedLength <= shapeSegment.e) {
4280 + var segmentLength = lengths[j - 1].addedLength;
4281 + if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + segmentLength) {
4282 + this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[0], shapePaths[i].v[0], shapePath, segmentCount, newShape);
4283 + newShape = false;
4284 + } else {
4285 + 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]);
4286 + this.addSegmentFromArray(segment, shapePath, segmentCount, newShape);
4287 + newShape = false;
4288 + shapePath.c = false;
4289 + }
4290 + } else shapePath.c = false;
4291 + addedLength += currentLengthData.addedLength;
4292 + segmentCount += 1;
4293 + }
4294 + if (shapePath._length) {
4295 + shapePath.setXYAt(shapePath.v[initPos][0], shapePath.v[initPos][1], "i", initPos);
4296 + shapePath.setXYAt(shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1], "o", shapePath._length - 1);
4297 + }
4298 + if (addedLength > shapeSegment.e) break;
4299 + if (i < len - 1) {
4300 + shapePath = shapePool.newElement();
4301 + newShape = true;
4302 + shapes.push(shapePath);
4303 + segmentCount = 0;
4304 + }
4305 + }
4306 + return shapes;
4307 + };
4308 + function PuckerAndBloatModifier() {}
4309 + extendPrototype([ShapeModifier], PuckerAndBloatModifier);
4310 + PuckerAndBloatModifier.prototype.initModifierProperties = function(elem, data) {
4311 + this.getValue = this.processKeys;
4312 + this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this);
4313 + this._isAnimated = !!this.amount.effectsSequence.length;
4314 + };
4315 + PuckerAndBloatModifier.prototype.processPath = function(path, amount) {
4316 + var percent = amount / 100;
4317 + var centerPoint = [0, 0];
4318 + var pathLength = path._length;
4319 + var i = 0;
4320 + for (i = 0; i < pathLength; i += 1) {
4321 + centerPoint[0] += path.v[i][0];
4322 + centerPoint[1] += path.v[i][1];
4323 + }
4324 + centerPoint[0] /= pathLength;
4325 + centerPoint[1] /= pathLength;
4326 + var clonedPath = shapePool.newElement();
4327 + clonedPath.c = path.c;
4328 + var vX;
4329 + var vY;
4330 + var oX;
4331 + var oY;
4332 + var iX;
4333 + var iY;
4334 + for (i = 0; i < pathLength; i += 1) {
4335 + vX = path.v[i][0] + (centerPoint[0] - path.v[i][0]) * percent;
4336 + vY = path.v[i][1] + (centerPoint[1] - path.v[i][1]) * percent;
4337 + oX = path.o[i][0] + (centerPoint[0] - path.o[i][0]) * -percent;
4338 + oY = path.o[i][1] + (centerPoint[1] - path.o[i][1]) * -percent;
4339 + iX = path.i[i][0] + (centerPoint[0] - path.i[i][0]) * -percent;
4340 + iY = path.i[i][1] + (centerPoint[1] - path.i[i][1]) * -percent;
4341 + clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, i);
4342 + }
4343 + return clonedPath;
4344 + };
4345 + PuckerAndBloatModifier.prototype.processShapes = function(_isFirstFrame) {
4346 + var shapePaths;
4347 + var i;
4348 + var len = this.shapes.length;
4349 + var j;
4350 + var jLen;
4351 + var amount = this.amount.v;
4352 + if (amount !== 0) {
4353 + var shapeData;
4354 + var localShapeCollection;
4355 + for (i = 0; i < len; i += 1) {
4356 + shapeData = this.shapes[i];
4357 + localShapeCollection = shapeData.localShapeCollection;
4358 + if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {
4359 + localShapeCollection.releaseShapes();
4360 + shapeData.shape._mdf = true;
4361 + shapePaths = shapeData.shape.paths.shapes;
4362 + jLen = shapeData.shape.paths._length;
4363 + for (j = 0; j < jLen; j += 1) localShapeCollection.addShape(this.processPath(shapePaths[j], amount));
4364 + }
4365 + shapeData.shape.paths = shapeData.localShapeCollection;
4366 + }
4367 + }
4368 + if (!this.dynamicProperties.length) this._mdf = false;
4369 + };
4370 + var TransformPropertyFactory = function() {
4371 + var defaultVector = [0, 0];
4372 + function applyToMatrix(mat) {
4373 + var _mdf = this._mdf;
4374 + this.iterateDynamicProperties();
4375 + this._mdf = this._mdf || _mdf;
4376 + if (this.a) mat.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);
4377 + if (this.s) mat.scale(this.s.v[0], this.s.v[1], this.s.v[2]);
4378 + if (this.sk) mat.skewFromAxis(-this.sk.v, this.sa.v);
4379 + if (this.r) mat.rotate(-this.r.v);
4380 + else 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]);
4381 + if (this.data.p.s) if (this.data.p.z) mat.translate(this.px.v, this.py.v, -this.pz.v);
4382 + else mat.translate(this.px.v, this.py.v, 0);
4383 + else mat.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);
4384 + }
4385 + function processKeys(forceRender) {
4386 + if (this.elem.globalData.frameId === this.frameId) return;
4387 + if (this._isDirty) {
4388 + this.precalculateMatrix();
4389 + this._isDirty = false;
4390 + }
4391 + this.iterateDynamicProperties();
4392 + if (this._mdf || forceRender) {
4393 + var frameRate;
4394 + this.v.cloneFromProps(this.pre.props);
4395 + if (this.appliedTransformations < 1) this.v.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);
4396 + if (this.appliedTransformations < 2) this.v.scale(this.s.v[0], this.s.v[1], this.s.v[2]);
4397 + if (this.sk && this.appliedTransformations < 3) this.v.skewFromAxis(-this.sk.v, this.sa.v);
4398 + if (this.r && this.appliedTransformations < 4) this.v.rotate(-this.r.v);
4399 + else if (!this.r && this.appliedTransformations < 4) 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]);
4400 + if (this.autoOriented) {
4401 + var v1;
4402 + var v2;
4403 + frameRate = this.elem.globalData.frameRate;
4404 + if (this.p && this.p.keyframes && this.p.getValueAtTime) if (this.p._caching.lastFrame + this.p.offsetTime <= this.p.keyframes[0].t) {
4405 + v1 = this.p.getValueAtTime((this.p.keyframes[0].t + .01) / frameRate, 0);
4406 + v2 = this.p.getValueAtTime(this.p.keyframes[0].t / frameRate, 0);
4407 + } else if (this.p._caching.lastFrame + this.p.offsetTime >= this.p.keyframes[this.p.keyframes.length - 1].t) {
4408 + v1 = this.p.getValueAtTime(this.p.keyframes[this.p.keyframes.length - 1].t / frameRate, 0);
4409 + v2 = this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length - 1].t - .05) / frameRate, 0);
4410 + } else {
4411 + v1 = this.p.pv;
4412 + v2 = this.p.getValueAtTime((this.p._caching.lastFrame + this.p.offsetTime - .01) / frameRate, this.p.offsetTime);
4413 + }
4414 + else if (this.px && this.px.keyframes && this.py.keyframes && this.px.getValueAtTime && this.py.getValueAtTime) {
4415 + v1 = [];
4416 + v2 = [];
4417 + var px = this.px;
4418 + var py = this.py;
4419 + if (px._caching.lastFrame + px.offsetTime <= px.keyframes[0].t) {
4420 + v1[0] = px.getValueAtTime((px.keyframes[0].t + .01) / frameRate, 0);
4421 + v1[1] = py.getValueAtTime((py.keyframes[0].t + .01) / frameRate, 0);
4422 + v2[0] = px.getValueAtTime(px.keyframes[0].t / frameRate, 0);
4423 + v2[1] = py.getValueAtTime(py.keyframes[0].t / frameRate, 0);
4424 + } else if (px._caching.lastFrame + px.offsetTime >= px.keyframes[px.keyframes.length - 1].t) {
4425 + v1[0] = px.getValueAtTime(px.keyframes[px.keyframes.length - 1].t / frameRate, 0);
4426 + v1[1] = py.getValueAtTime(py.keyframes[py.keyframes.length - 1].t / frameRate, 0);
4427 + v2[0] = px.getValueAtTime((px.keyframes[px.keyframes.length - 1].t - .01) / frameRate, 0);
4428 + v2[1] = py.getValueAtTime((py.keyframes[py.keyframes.length - 1].t - .01) / frameRate, 0);
4429 + } else {
4430 + v1 = [px.pv, py.pv];
4431 + v2[0] = px.getValueAtTime((px._caching.lastFrame + px.offsetTime - .01) / frameRate, px.offsetTime);
4432 + v2[1] = py.getValueAtTime((py._caching.lastFrame + py.offsetTime - .01) / frameRate, py.offsetTime);
4433 + }
4434 + } else {
4435 + v2 = defaultVector;
4436 + v1 = v2;
4437 + }
4438 + this.v.rotate(-Math.atan2(v1[1] - v2[1], v1[0] - v2[0]));
4439 + }
4440 + if (this.data.p && this.data.p.s) if (this.data.p.z) this.v.translate(this.px.v, this.py.v, -this.pz.v);
4441 + else this.v.translate(this.px.v, this.py.v, 0);
4442 + else this.v.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);
4443 + }
4444 + this.frameId = this.elem.globalData.frameId;
4445 + }
4446 + function precalculateMatrix() {
4447 + this.appliedTransformations = 0;
4448 + this.pre.reset();
4449 + if (!this.a.effectsSequence.length) {
4450 + this.pre.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);
4451 + this.appliedTransformations = 1;
4452 + } else return;
4453 + if (!this.s.effectsSequence.length) {
4454 + this.pre.scale(this.s.v[0], this.s.v[1], this.s.v[2]);
4455 + this.appliedTransformations = 2;
4456 + } else return;
4457 + if (this.sk) if (!this.sk.effectsSequence.length && !this.sa.effectsSequence.length) {
4458 + this.pre.skewFromAxis(-this.sk.v, this.sa.v);
4459 + this.appliedTransformations = 3;
4460 + } else return;
4461 + if (this.r) {
4462 + if (!this.r.effectsSequence.length) {
4463 + this.pre.rotate(-this.r.v);
4464 + this.appliedTransformations = 4;
4465 + }
4466 + } else if (!this.rz.effectsSequence.length && !this.ry.effectsSequence.length && !this.rx.effectsSequence.length && !this.or.effectsSequence.length) {
4467 + 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]);
4468 + this.appliedTransformations = 4;
4469 + }
4470 + }
4471 + function autoOrient() {}
4472 + function addDynamicProperty(prop) {
4473 + this._addDynamicProperty(prop);
4474 + this.elem.addDynamicProperty(prop);
4475 + this._isDirty = true;
4476 + }
4477 + function TransformProperty(elem, data, container) {
4478 + this.elem = elem;
4479 + this.frameId = -1;
4480 + this.propType = "transform";
4481 + this.data = data;
4482 + this.v = new Matrix();
4483 + this.pre = new Matrix();
4484 + this.appliedTransformations = 0;
4485 + this.initDynamicPropertyContainer(container || elem);
4486 + if (data.p && data.p.s) {
4487 + this.px = PropertyFactory.getProp(elem, data.p.x, 0, 0, this);
4488 + this.py = PropertyFactory.getProp(elem, data.p.y, 0, 0, this);
4489 + if (data.p.z) this.pz = PropertyFactory.getProp(elem, data.p.z, 0, 0, this);
4490 + } else this.p = PropertyFactory.getProp(elem, data.p || { k: [
4491 + 0,
4492 + 0,
4493 + 0
4494 + ] }, 1, 0, this);
4495 + if (data.rx) {
4496 + this.rx = PropertyFactory.getProp(elem, data.rx, 0, degToRads, this);
4497 + this.ry = PropertyFactory.getProp(elem, data.ry, 0, degToRads, this);
4498 + this.rz = PropertyFactory.getProp(elem, data.rz, 0, degToRads, this);
4499 + if (data.or.k[0].ti) {
4500 + var i;
4501 + var len = data.or.k.length;
4502 + for (i = 0; i < len; i += 1) {
4503 + data.or.k[i].to = null;
4504 + data.or.k[i].ti = null;
4505 + }
4506 + }
4507 + this.or = PropertyFactory.getProp(elem, data.or, 1, degToRads, this);
4508 + this.or.sh = true;
4509 + } else this.r = PropertyFactory.getProp(elem, data.r || { k: 0 }, 0, degToRads, this);
4510 + if (data.sk) {
4511 + this.sk = PropertyFactory.getProp(elem, data.sk, 0, degToRads, this);
4512 + this.sa = PropertyFactory.getProp(elem, data.sa, 0, degToRads, this);
4513 + }
4514 + this.a = PropertyFactory.getProp(elem, data.a || { k: [
4515 + 0,
4516 + 0,
4517 + 0
4518 + ] }, 1, 0, this);
4519 + this.s = PropertyFactory.getProp(elem, data.s || { k: [
4520 + 100,
4521 + 100,
4522 + 100
4523 + ] }, 1, .01, this);
4524 + if (data.o) this.o = PropertyFactory.getProp(elem, data.o, 0, .01, elem);
4525 + else this.o = {
4526 + _mdf: false,
4527 + v: 1
4528 + };
4529 + this._isDirty = true;
4530 + if (!this.dynamicProperties.length) this.getValue(true);
4531 + }
4532 + TransformProperty.prototype = {
4533 + applyToMatrix,
4534 + getValue: processKeys,
4535 + precalculateMatrix,
4536 + autoOrient
4537 + };
4538 + extendPrototype([DynamicPropertyContainer], TransformProperty);
4539 + TransformProperty.prototype.addDynamicProperty = addDynamicProperty;
4540 + TransformProperty.prototype._addDynamicProperty = DynamicPropertyContainer.prototype.addDynamicProperty;
4541 + function getTransformProperty(elem, data, container) {
4542 + return new TransformProperty(elem, data, container);
4543 + }
4544 + return { getTransformProperty };
4545 + }();
4546 + function RepeaterModifier() {}
4547 + extendPrototype([ShapeModifier], RepeaterModifier);
4548 + RepeaterModifier.prototype.initModifierProperties = function(elem, data) {
4549 + this.getValue = this.processKeys;
4550 + this.c = PropertyFactory.getProp(elem, data.c, 0, null, this);
4551 + this.o = PropertyFactory.getProp(elem, data.o, 0, null, this);
4552 + this.tr = TransformPropertyFactory.getTransformProperty(elem, data.tr, this);
4553 + this.so = PropertyFactory.getProp(elem, data.tr.so, 0, .01, this);
4554 + this.eo = PropertyFactory.getProp(elem, data.tr.eo, 0, .01, this);
4555 + this.data = data;
4556 + if (!this.dynamicProperties.length) this.getValue(true);
4557 + this._isAnimated = !!this.dynamicProperties.length;
4558 + this.pMatrix = new Matrix();
4559 + this.rMatrix = new Matrix();
4560 + this.sMatrix = new Matrix();
4561 + this.tMatrix = new Matrix();
4562 + this.matrix = new Matrix();
4563 + };
4564 + RepeaterModifier.prototype.applyTransforms = function(pMatrix, rMatrix, sMatrix, transform, perc, inv) {
4565 + var dir = inv ? -1 : 1;
4566 + var scaleX = transform.s.v[0] + (1 - transform.s.v[0]) * (1 - perc);
4567 + var scaleY = transform.s.v[1] + (1 - transform.s.v[1]) * (1 - perc);
4568 + pMatrix.translate(transform.p.v[0] * dir * perc, transform.p.v[1] * dir * perc, transform.p.v[2]);
4569 + rMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);
4570 + rMatrix.rotate(-transform.r.v * dir * perc);
4571 + rMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);
4572 + sMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);
4573 + sMatrix.scale(inv ? 1 / scaleX : scaleX, inv ? 1 / scaleY : scaleY);
4574 + sMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);
4575 + };
4576 + RepeaterModifier.prototype.init = function(elem, arr, pos, elemsData) {
4577 + this.elem = elem;
4578 + this.arr = arr;
4579 + this.pos = pos;
4580 + this.elemsData = elemsData;
4581 + this._currentCopies = 0;
4582 + this._elements = [];
4583 + this._groups = [];
4584 + this.frameId = -1;
4585 + this.initDynamicPropertyContainer(elem);
4586 + this.initModifierProperties(elem, arr[pos]);
4587 + while (pos > 0) {
4588 + pos -= 1;
4589 + this._elements.unshift(arr[pos]);
4590 + }
4591 + if (this.dynamicProperties.length) this.k = true;
4592 + else this.getValue(true);
4593 + };
4594 + RepeaterModifier.prototype.resetElements = function(elements) {
4595 + var i;
4596 + var len = elements.length;
4597 + for (i = 0; i < len; i += 1) {
4598 + elements[i]._processed = false;
4599 + if (elements[i].ty === "gr") this.resetElements(elements[i].it);
4600 + }
4601 + };
4602 + RepeaterModifier.prototype.cloneElements = function(elements) {
4603 + var newElements = JSON.parse(JSON.stringify(elements));
4604 + this.resetElements(newElements);
4605 + return newElements;
4606 + };
4607 + RepeaterModifier.prototype.changeGroupRender = function(elements, renderFlag) {
4608 + var i;
4609 + var len = elements.length;
4610 + for (i = 0; i < len; i += 1) {
4611 + elements[i]._render = renderFlag;
4612 + if (elements[i].ty === "gr") this.changeGroupRender(elements[i].it, renderFlag);
4613 + }
4614 + };
4615 + RepeaterModifier.prototype.processShapes = function(_isFirstFrame) {
4616 + var items;
4617 + var itemsTransform;
4618 + var i;
4619 + var dir;
4620 + var cont;
4621 + var hasReloaded = false;
4622 + if (this._mdf || _isFirstFrame) {
4623 + var copies = Math.ceil(this.c.v);
4624 + if (this._groups.length < copies) {
4625 + while (this._groups.length < copies) {
4626 + var group = {
4627 + it: this.cloneElements(this._elements),
4628 + ty: "gr"
4629 + };
4630 + group.it.push({
4631 + a: {
4632 + a: 0,
4633 + ix: 1,
4634 + k: [0, 0]
4635 + },
4636 + nm: "Transform",
4637 + o: {
4638 + a: 0,
4639 + ix: 7,
4640 + k: 100
4641 + },
4642 + p: {
4643 + a: 0,
4644 + ix: 2,
4645 + k: [0, 0]
4646 + },
4647 + r: {
4648 + a: 1,
4649 + ix: 6,
4650 + k: [{
4651 + s: 0,
4652 + e: 0,
4653 + t: 0
4654 + }, {
4655 + s: 0,
4656 + e: 0,
4657 + t: 1
4658 + }]
4659 + },
4660 + s: {
4661 + a: 0,
4662 + ix: 3,
4663 + k: [100, 100]
4664 + },
4665 + sa: {
4666 + a: 0,
4667 + ix: 5,
4668 + k: 0
4669 + },
4670 + sk: {
4671 + a: 0,
4672 + ix: 4,
4673 + k: 0
4674 + },
4675 + ty: "tr"
4676 + });
4677 + this.arr.splice(0, 0, group);
4678 + this._groups.splice(0, 0, group);
4679 + this._currentCopies += 1;
4680 + }
4681 + this.elem.reloadShapes();
4682 + hasReloaded = true;
4683 + }
4684 + cont = 0;
4685 + var renderFlag;
4686 + for (i = 0; i <= this._groups.length - 1; i += 1) {
4687 + renderFlag = cont < copies;
4688 + this._groups[i]._render = renderFlag;
4689 + this.changeGroupRender(this._groups[i].it, renderFlag);
4690 + if (!renderFlag) {
4691 + var elems = this.elemsData[i].it;
4692 + var transformData = elems[elems.length - 1];
4693 + if (transformData.transform.op.v !== 0) {
4694 + transformData.transform.op._mdf = true;
4695 + transformData.transform.op.v = 0;
4696 + } else transformData.transform.op._mdf = false;
4697 + }
4698 + cont += 1;
4699 + }
4700 + this._currentCopies = copies;
4701 + var offset = this.o.v;
4702 + var offsetModulo = offset % 1;
4703 + var roundOffset = offset > 0 ? Math.floor(offset) : Math.ceil(offset);
4704 + var pProps = this.pMatrix.props;
4705 + var rProps = this.rMatrix.props;
4706 + var sProps = this.sMatrix.props;
4707 + this.pMatrix.reset();
4708 + this.rMatrix.reset();
4709 + this.sMatrix.reset();
4710 + this.tMatrix.reset();
4711 + this.matrix.reset();
4712 + var iteration = 0;
4713 + if (offset > 0) {
4714 + while (iteration < roundOffset) {
4715 + this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);
4716 + iteration += 1;
4717 + }
4718 + if (offsetModulo) {
4719 + this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, offsetModulo, false);
4720 + iteration += offsetModulo;
4721 + }
4722 + } else if (offset < 0) {
4723 + while (iteration > roundOffset) {
4724 + this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, true);
4725 + iteration -= 1;
4726 + }
4727 + if (offsetModulo) {
4728 + this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, -offsetModulo, true);
4729 + iteration -= offsetModulo;
4730 + }
4731 + }
4732 + i = this.data.m === 1 ? 0 : this._currentCopies - 1;
4733 + dir = this.data.m === 1 ? 1 : -1;
4734 + cont = this._currentCopies;
4735 + var j;
4736 + var jLen;
4737 + while (cont) {
4738 + items = this.elemsData[i].it;
4739 + itemsTransform = items[items.length - 1].transform.mProps.v.props;
4740 + jLen = itemsTransform.length;
4741 + items[items.length - 1].transform.mProps._mdf = true;
4742 + items[items.length - 1].transform.op._mdf = true;
4743 + 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));
4744 + if (iteration !== 0) {
4745 + if (i !== 0 && dir === 1 || i !== this._currentCopies - 1 && dir === -1) this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);
4746 + 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]);
4747 + 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]);
4748 + 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]);
4749 + for (j = 0; j < jLen; j += 1) itemsTransform[j] = this.matrix.props[j];
4750 + this.matrix.reset();
4751 + } else {
4752 + this.matrix.reset();
4753 + for (j = 0; j < jLen; j += 1) itemsTransform[j] = this.matrix.props[j];
4754 + }
4755 + iteration += 1;
4756 + cont -= 1;
4757 + i += dir;
4758 + }
4759 + } else {
4760 + cont = this._currentCopies;
4761 + i = 0;
4762 + dir = 1;
4763 + while (cont) {
4764 + items = this.elemsData[i].it;
4765 + itemsTransform = items[items.length - 1].transform.mProps.v.props;
4766 + items[items.length - 1].transform.mProps._mdf = false;
4767 + items[items.length - 1].transform.op._mdf = false;
4768 + cont -= 1;
4769 + i += dir;
4770 + }
4771 + }
4772 + return hasReloaded;
4773 + };
4774 + RepeaterModifier.prototype.addShape = function() {};
4775 + function RoundCornersModifier() {}
4776 + extendPrototype([ShapeModifier], RoundCornersModifier);
4777 + RoundCornersModifier.prototype.initModifierProperties = function(elem, data) {
4778 + this.getValue = this.processKeys;
4779 + this.rd = PropertyFactory.getProp(elem, data.r, 0, null, this);
4780 + this._isAnimated = !!this.rd.effectsSequence.length;
4781 + };
4782 + RoundCornersModifier.prototype.processPath = function(path, round) {
4783 + var clonedPath = shapePool.newElement();
4784 + clonedPath.c = path.c;
4785 + var i;
4786 + var len = path._length;
4787 + var currentV;
4788 + var currentI;
4789 + var currentO;
4790 + var closerV;
4791 + var distance;
4792 + var newPosPerc;
4793 + var index = 0;
4794 + var vX;
4795 + var vY;
4796 + var oX;
4797 + var oY;
4798 + var iX;
4799 + var iY;
4800 + for (i = 0; i < len; i += 1) {
4801 + currentV = path.v[i];
4802 + currentO = path.o[i];
4803 + currentI = path.i[i];
4804 + if (currentV[0] === currentO[0] && currentV[1] === currentO[1] && currentV[0] === currentI[0] && currentV[1] === currentI[1]) if ((i === 0 || i === len - 1) && !path.c) {
4805 + clonedPath.setTripleAt(currentV[0], currentV[1], currentO[0], currentO[1], currentI[0], currentI[1], index);
4806 + index += 1;
4807 + } else {
4808 + if (i === 0) closerV = path.v[len - 1];
4809 + else closerV = path.v[i - 1];
4810 + distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));
4811 + newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;
4812 + iX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;
4813 + vX = iX;
4814 + iY = currentV[1] - (currentV[1] - closerV[1]) * newPosPerc;
4815 + vY = iY;
4816 + oX = vX - (vX - currentV[0]) * roundCorner;
4817 + oY = vY - (vY - currentV[1]) * roundCorner;
4818 + clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);
4819 + index += 1;
4820 + if (i === len - 1) closerV = path.v[0];
4821 + else closerV = path.v[i + 1];
4822 + distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));
4823 + newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;
4824 + oX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;
4825 + vX = oX;
4826 + oY = currentV[1] + (closerV[1] - currentV[1]) * newPosPerc;
4827 + vY = oY;
4828 + iX = vX - (vX - currentV[0]) * roundCorner;
4829 + iY = vY - (vY - currentV[1]) * roundCorner;
4830 + clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);
4831 + index += 1;
4832 + }
4833 + else {
4834 + 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);
4835 + index += 1;
4836 + }
4837 + }
4838 + return clonedPath;
4839 + };
4840 + RoundCornersModifier.prototype.processShapes = function(_isFirstFrame) {
4841 + var shapePaths;
4842 + var i;
4843 + var len = this.shapes.length;
4844 + var j;
4845 + var jLen;
4846 + var rd = this.rd.v;
4847 + if (rd !== 0) {
4848 + var shapeData;
4849 + var localShapeCollection;
4850 + for (i = 0; i < len; i += 1) {
4851 + shapeData = this.shapes[i];
4852 + localShapeCollection = shapeData.localShapeCollection;
4853 + if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {
4854 + localShapeCollection.releaseShapes();
4855 + shapeData.shape._mdf = true;
4856 + shapePaths = shapeData.shape.paths.shapes;
4857 + jLen = shapeData.shape.paths._length;
4858 + for (j = 0; j < jLen; j += 1) localShapeCollection.addShape(this.processPath(shapePaths[j], rd));
4859 + }
4860 + shapeData.shape.paths = shapeData.localShapeCollection;
4861 + }
4862 + }
4863 + if (!this.dynamicProperties.length) this._mdf = false;
4864 + };
4865 + function floatEqual(a, b) {
4866 + return Math.abs(a - b) * 1e5 <= Math.min(Math.abs(a), Math.abs(b));
4867 + }
4868 + function floatZero(f) {
4869 + return Math.abs(f) <= 1e-5;
4870 + }
4871 + function lerp(p0, p1, amount) {
4872 + return p0 * (1 - amount) + p1 * amount;
4873 + }
4874 + function lerpPoint(p0, p1, amount) {
4875 + return [lerp(p0[0], p1[0], amount), lerp(p0[1], p1[1], amount)];
4876 + }
4877 + function quadRoots(a, b, c) {
4878 + if (a === 0) return [];
4879 + var s = b * b - 4 * a * c;
4880 + if (s < 0) return [];
4881 + var singleRoot = -b / (2 * a);
4882 + if (s === 0) return [singleRoot];
4883 + var delta = Math.sqrt(s) / (2 * a);
4884 + return [singleRoot - delta, singleRoot + delta];
4885 + }
4886 + function polynomialCoefficients(p0, p1, p2, p3) {
4887 + return [
4888 + -p0 + 3 * p1 - 3 * p2 + p3,
4889 + 3 * p0 - 6 * p1 + 3 * p2,
4890 + -3 * p0 + 3 * p1,
4891 + p0
4892 + ];
4893 + }
4894 + function singlePoint(p) {
4895 + return new PolynomialBezier(p, p, p, p, false);
4896 + }
4897 + function PolynomialBezier(p0, p1, p2, p3, linearize) {
4898 + if (linearize && pointEqual(p0, p1)) p1 = lerpPoint(p0, p3, 1 / 3);
4899 + if (linearize && pointEqual(p2, p3)) p2 = lerpPoint(p0, p3, 2 / 3);
4900 + var coeffx = polynomialCoefficients(p0[0], p1[0], p2[0], p3[0]);
4901 + var coeffy = polynomialCoefficients(p0[1], p1[1], p2[1], p3[1]);
4902 + this.a = [coeffx[0], coeffy[0]];
4903 + this.b = [coeffx[1], coeffy[1]];
4904 + this.c = [coeffx[2], coeffy[2]];
4905 + this.d = [coeffx[3], coeffy[3]];
4906 + this.points = [
4907 + p0,
4908 + p1,
4909 + p2,
4910 + p3
4911 + ];
4912 + }
4913 + PolynomialBezier.prototype.point = function(t) {
4914 + 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]];
4915 + };
4916 + PolynomialBezier.prototype.derivative = function(t) {
4917 + 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]];
4918 + };
4919 + PolynomialBezier.prototype.tangentAngle = function(t) {
4920 + var p = this.derivative(t);
4921 + return Math.atan2(p[1], p[0]);
4922 + };
4923 + PolynomialBezier.prototype.normalAngle = function(t) {
4924 + var p = this.derivative(t);
4925 + return Math.atan2(p[0], p[1]);
4926 + };
4927 + PolynomialBezier.prototype.inflectionPoints = function() {
4928 + var denom = this.a[1] * this.b[0] - this.a[0] * this.b[1];
4929 + if (floatZero(denom)) return [];
4930 + var tcusp = -.5 * (this.a[1] * this.c[0] - this.a[0] * this.c[1]) / denom;
4931 + var square = tcusp * tcusp - 1 / 3 * (this.b[1] * this.c[0] - this.b[0] * this.c[1]) / denom;
4932 + if (square < 0) return [];
4933 + var root = Math.sqrt(square);
4934 + if (floatZero(root)) {
4935 + if (root > 0 && root < 1) return [tcusp];
4936 + return [];
4937 + }
4938 + return [tcusp - root, tcusp + root].filter(function(r) {
4939 + return r > 0 && r < 1;
4940 + });
4941 + };
4942 + PolynomialBezier.prototype.split = function(t) {
4943 + if (t <= 0) return [singlePoint(this.points[0]), this];
4944 + if (t >= 1) return [this, singlePoint(this.points[this.points.length - 1])];
4945 + var p10 = lerpPoint(this.points[0], this.points[1], t);
4946 + var p11 = lerpPoint(this.points[1], this.points[2], t);
4947 + var p12 = lerpPoint(this.points[2], this.points[3], t);
4948 + var p20 = lerpPoint(p10, p11, t);
4949 + var p21 = lerpPoint(p11, p12, t);
4950 + var p3 = lerpPoint(p20, p21, t);
4951 + return [new PolynomialBezier(this.points[0], p10, p20, p3, true), new PolynomialBezier(p3, p21, p12, this.points[3], true)];
4952 + };
4953 + function extrema(bez, comp) {
4954 + var min = bez.points[0][comp];
4955 + var max = bez.points[bez.points.length - 1][comp];
4956 + if (min > max) {
4957 + var e = max;
4958 + max = min;
4959 + min = e;
4960 + }
4961 + var f = quadRoots(3 * bez.a[comp], 2 * bez.b[comp], bez.c[comp]);
4962 + for (var i = 0; i < f.length; i += 1) if (f[i] > 0 && f[i] < 1) {
4963 + var val = bez.point(f[i])[comp];
4964 + if (val < min) min = val;
4965 + else if (val > max) max = val;
4966 + }
4967 + return {
4968 + min,
4969 + max
4970 + };
4971 + }
4972 + PolynomialBezier.prototype.bounds = function() {
4973 + return {
4974 + x: extrema(this, 0),
4975 + y: extrema(this, 1)
4976 + };
4977 + };
4978 + PolynomialBezier.prototype.boundingBox = function() {
4979 + var bounds = this.bounds();
4980 + return {
4981 + left: bounds.x.min,
4982 + right: bounds.x.max,
4983 + top: bounds.y.min,
4984 + bottom: bounds.y.max,
4985 + width: bounds.x.max - bounds.x.min,
4986 + height: bounds.y.max - bounds.y.min,
4987 + cx: (bounds.x.max + bounds.x.min) / 2,
4988 + cy: (bounds.y.max + bounds.y.min) / 2
4989 + };
4990 + };
4991 + function intersectData(bez, t1, t2) {
4992 + var box = bez.boundingBox();
4993 + return {
4994 + cx: box.cx,
4995 + cy: box.cy,
4996 + width: box.width,
4997 + height: box.height,
4998 + bez,
4999 + t: (t1 + t2) / 2,
5000 + t1,
5001 + t2
5002 + };
5003 + }
5004 + function splitData(data) {
5005 + var split = data.bez.split(.5);
5006 + return [intersectData(split[0], data.t1, data.t), intersectData(split[1], data.t, data.t2)];
5007 + }
5008 + function boxIntersect(b1, b2) {
5009 + return Math.abs(b1.cx - b2.cx) * 2 < b1.width + b2.width && Math.abs(b1.cy - b2.cy) * 2 < b1.height + b2.height;
5010 + }
5011 + function intersectsImpl(d1, d2, depth, tolerance, intersections, maxRecursion) {
5012 + if (!boxIntersect(d1, d2)) return;
5013 + if (depth >= maxRecursion || d1.width <= tolerance && d1.height <= tolerance && d2.width <= tolerance && d2.height <= tolerance) {
5014 + intersections.push([d1.t, d2.t]);
5015 + return;
5016 + }
5017 + var d1s = splitData(d1);
5018 + var d2s = splitData(d2);
5019 + intersectsImpl(d1s[0], d2s[0], depth + 1, tolerance, intersections, maxRecursion);
5020 + intersectsImpl(d1s[0], d2s[1], depth + 1, tolerance, intersections, maxRecursion);
5021 + intersectsImpl(d1s[1], d2s[0], depth + 1, tolerance, intersections, maxRecursion);
5022 + intersectsImpl(d1s[1], d2s[1], depth + 1, tolerance, intersections, maxRecursion);
5023 + }
5024 + PolynomialBezier.prototype.intersections = function(other, tolerance, maxRecursion) {
5025 + if (tolerance === void 0) tolerance = 2;
5026 + if (maxRecursion === void 0) maxRecursion = 7;
5027 + var intersections = [];
5028 + intersectsImpl(intersectData(this, 0, 1), intersectData(other, 0, 1), 0, tolerance, intersections, maxRecursion);
5029 + return intersections;
5030 + };
5031 + PolynomialBezier.shapeSegment = function(shapePath, index) {
5032 + var nextIndex = (index + 1) % shapePath.length();
5033 + return new PolynomialBezier(shapePath.v[index], shapePath.o[index], shapePath.i[nextIndex], shapePath.v[nextIndex], true);
5034 + };
5035 + PolynomialBezier.shapeSegmentInverted = function(shapePath, index) {
5036 + var nextIndex = (index + 1) % shapePath.length();
5037 + return new PolynomialBezier(shapePath.v[nextIndex], shapePath.i[nextIndex], shapePath.o[index], shapePath.v[index], true);
5038 + };
5039 + function crossProduct(a, b) {
5040 + return [
5041 + a[1] * b[2] - a[2] * b[1],
5042 + a[2] * b[0] - a[0] * b[2],
5043 + a[0] * b[1] - a[1] * b[0]
5044 + ];
5045 + }
5046 + function lineIntersection(start1, end1, start2, end2) {
5047 + var v1 = [
5048 + start1[0],
5049 + start1[1],
5050 + 1
5051 + ];
5052 + var v2 = [
5053 + end1[0],
5054 + end1[1],
5055 + 1
5056 + ];
5057 + var v3 = [
5058 + start2[0],
5059 + start2[1],
5060 + 1
5061 + ];
5062 + var v4 = [
5063 + end2[0],
5064 + end2[1],
5065 + 1
5066 + ];
5067 + var r = crossProduct(crossProduct(v1, v2), crossProduct(v3, v4));
5068 + if (floatZero(r[2])) return null;
5069 + return [r[0] / r[2], r[1] / r[2]];
5070 + }
5071 + function polarOffset(p, angle, length) {
5072 + return [p[0] + Math.cos(angle) * length, p[1] - Math.sin(angle) * length];
5073 + }
5074 + function pointDistance(p1, p2) {
5075 + return Math.hypot(p1[0] - p2[0], p1[1] - p2[1]);
5076 + }
5077 + function pointEqual(p1, p2) {
5078 + return floatEqual(p1[0], p2[0]) && floatEqual(p1[1], p2[1]);
5079 + }
5080 + function ZigZagModifier() {}
5081 + extendPrototype([ShapeModifier], ZigZagModifier);
5082 + ZigZagModifier.prototype.initModifierProperties = function(elem, data) {
5083 + this.getValue = this.processKeys;
5084 + this.amplitude = PropertyFactory.getProp(elem, data.s, 0, null, this);
5085 + this.frequency = PropertyFactory.getProp(elem, data.r, 0, null, this);
5086 + this.pointsType = PropertyFactory.getProp(elem, data.pt, 0, null, this);
5087 + this._isAnimated = this.amplitude.effectsSequence.length !== 0 || this.frequency.effectsSequence.length !== 0 || this.pointsType.effectsSequence.length !== 0;
5088 + };
5089 + function setPoint(outputBezier, point, angle, direction, amplitude, outAmplitude, inAmplitude) {
5090 + var angO = angle - Math.PI / 2;
5091 + var angI = angle + Math.PI / 2;
5092 + var px = point[0] + Math.cos(angle) * direction * amplitude;
5093 + var py = point[1] - Math.sin(angle) * direction * amplitude;
5094 + 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());
5095 + }
5096 + function getPerpendicularVector(pt1, pt2) {
5097 + var vector = [pt2[0] - pt1[0], pt2[1] - pt1[1]];
5098 + var rot = -Math.PI * .5;
5099 + return [Math.cos(rot) * vector[0] - Math.sin(rot) * vector[1], Math.sin(rot) * vector[0] + Math.cos(rot) * vector[1]];
5100 + }
5101 + function getProjectingAngle(path, cur) {
5102 + var prevIndex = cur === 0 ? path.length() - 1 : cur - 1;
5103 + var nextIndex = (cur + 1) % path.length();
5104 + var prevPoint = path.v[prevIndex];
5105 + var nextPoint = path.v[nextIndex];
5106 + var pVector = getPerpendicularVector(prevPoint, nextPoint);
5107 + return Math.atan2(0, 1) - Math.atan2(pVector[1], pVector[0]);
5108 + }
5109 + function zigZagCorner(outputBezier, path, cur, amplitude, frequency, pointType, direction) {
5110 + var angle = getProjectingAngle(path, cur);
5111 + var point = path.v[cur % path._length];
5112 + var prevPoint = path.v[cur === 0 ? path._length - 1 : cur - 1];
5113 + var nextPoint = path.v[(cur + 1) % path._length];
5114 + var prevDist = pointType === 2 ? Math.sqrt(Math.pow(point[0] - prevPoint[0], 2) + Math.pow(point[1] - prevPoint[1], 2)) : 0;
5115 + var nextDist = pointType === 2 ? Math.sqrt(Math.pow(point[0] - nextPoint[0], 2) + Math.pow(point[1] - nextPoint[1], 2)) : 0;
5116 + setPoint(outputBezier, path.v[cur % path._length], angle, direction, amplitude, nextDist / ((frequency + 1) * 2), prevDist / ((frequency + 1) * 2), pointType);
5117 + }
5118 + function zigZagSegment(outputBezier, segment, amplitude, frequency, pointType, direction) {
5119 + for (var i = 0; i < frequency; i += 1) {
5120 + var t = (i + 1) / (frequency + 1);
5121 + 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;
5122 + var angle = segment.normalAngle(t);
5123 + setPoint(outputBezier, segment.point(t), angle, direction, amplitude, dist / ((frequency + 1) * 2), dist / ((frequency + 1) * 2), pointType);
5124 + direction = -direction;
5125 + }
5126 + return direction;
5127 + }
5128 + ZigZagModifier.prototype.processPath = function(path, amplitude, frequency, pointType) {
5129 + var count = path._length;
5130 + var clonedPath = shapePool.newElement();
5131 + clonedPath.c = path.c;
5132 + if (!path.c) count -= 1;
5133 + if (count === 0) return clonedPath;
5134 + var direction = -1;
5135 + var segment = PolynomialBezier.shapeSegment(path, 0);
5136 + zigZagCorner(clonedPath, path, 0, amplitude, frequency, pointType, direction);
5137 + for (var i = 0; i < count; i += 1) {
5138 + direction = zigZagSegment(clonedPath, segment, amplitude, frequency, pointType, -direction);
5139 + if (i === count - 1 && !path.c) segment = null;
5140 + else segment = PolynomialBezier.shapeSegment(path, (i + 1) % count);
5141 + zigZagCorner(clonedPath, path, i + 1, amplitude, frequency, pointType, direction);
5142 + }
5143 + return clonedPath;
5144 + };
5145 + ZigZagModifier.prototype.processShapes = function(_isFirstFrame) {
5146 + var shapePaths;
5147 + var i;
5148 + var len = this.shapes.length;
5149 + var j;
5150 + var jLen;
5151 + var amplitude = this.amplitude.v;
5152 + var frequency = Math.max(0, Math.round(this.frequency.v));
5153 + var pointType = this.pointsType.v;
5154 + if (amplitude !== 0) {
5155 + var shapeData;
5156 + var localShapeCollection;
5157 + for (i = 0; i < len; i += 1) {
5158 + shapeData = this.shapes[i];
5159 + localShapeCollection = shapeData.localShapeCollection;
5160 + if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {
5161 + localShapeCollection.releaseShapes();
5162 + shapeData.shape._mdf = true;
5163 + shapePaths = shapeData.shape.paths.shapes;
5164 + jLen = shapeData.shape.paths._length;
5165 + for (j = 0; j < jLen; j += 1) localShapeCollection.addShape(this.processPath(shapePaths[j], amplitude, frequency, pointType));
5166 + }
5167 + shapeData.shape.paths = shapeData.localShapeCollection;
5168 + }
5169 + }
5170 + if (!this.dynamicProperties.length) this._mdf = false;
5171 + };
5172 + function linearOffset(p1, p2, amount) {
5173 + var angle = Math.atan2(p2[0] - p1[0], p2[1] - p1[1]);
5174 + return [polarOffset(p1, angle, amount), polarOffset(p2, angle, amount)];
5175 + }
5176 + function offsetSegment(segment, amount) {
5177 + var p0;
5178 + var p1a;
5179 + var p1b;
5180 + var p2b;
5181 + var p2a;
5182 + var p3;
5183 + var e = linearOffset(segment.points[0], segment.points[1], amount);
5184 + p0 = e[0];
5185 + p1a = e[1];
5186 + e = linearOffset(segment.points[1], segment.points[2], amount);
5187 + p1b = e[0];
5188 + p2b = e[1];
5189 + e = linearOffset(segment.points[2], segment.points[3], amount);
5190 + p2a = e[0];
5191 + p3 = e[1];
5192 + var p1 = lineIntersection(p0, p1a, p1b, p2b);
5193 + if (p1 === null) p1 = p1a;
5194 + var p2 = lineIntersection(p2a, p3, p1b, p2b);
5195 + if (p2 === null) p2 = p2a;
5196 + return new PolynomialBezier(p0, p1, p2, p3);
5197 + }
5198 + function joinLines(outputBezier, seg1, seg2, lineJoin, miterLimit) {
5199 + var p0 = seg1.points[3];
5200 + var p1 = seg2.points[0];
5201 + if (lineJoin === 3) return p0;
5202 + if (pointEqual(p0, p1)) return p0;
5203 + if (lineJoin === 2) {
5204 + var angleOut = -seg1.tangentAngle(1);
5205 + var angleIn = -seg2.tangentAngle(0) + Math.PI;
5206 + var center = lineIntersection(p0, polarOffset(p0, angleOut + Math.PI / 2, 100), p1, polarOffset(p1, angleOut + Math.PI / 2, 100));
5207 + var radius = center ? pointDistance(center, p0) : pointDistance(p0, p1) / 2;
5208 + var tan = polarOffset(p0, angleOut, 2 * radius * roundCorner);
5209 + outputBezier.setXYAt(tan[0], tan[1], "o", outputBezier.length() - 1);
5210 + tan = polarOffset(p1, angleIn, 2 * radius * roundCorner);
5211 + outputBezier.setTripleAt(p1[0], p1[1], p1[0], p1[1], tan[0], tan[1], outputBezier.length());
5212 + return p1;
5213 + }
5214 + var intersection = lineIntersection(pointEqual(p0, seg1.points[2]) ? seg1.points[0] : seg1.points[2], p0, p1, pointEqual(p1, seg2.points[1]) ? seg2.points[3] : seg2.points[1]);
5215 + if (intersection && pointDistance(intersection, p0) < miterLimit) {
5216 + outputBezier.setTripleAt(intersection[0], intersection[1], intersection[0], intersection[1], intersection[0], intersection[1], outputBezier.length());
5217 + return intersection;
5218 + }
5219 + return p0;
5220 + }
5221 + function getIntersection(a, b) {
5222 + var intersect = a.intersections(b);
5223 + if (intersect.length && floatEqual(intersect[0][0], 1)) intersect.shift();
5224 + if (intersect.length) return intersect[0];
5225 + return null;
5226 + }
5227 + function pruneSegmentIntersection(a, b) {
5228 + var outa = a.slice();
5229 + var outb = b.slice();
5230 + var intersect = getIntersection(a[a.length - 1], b[0]);
5231 + if (intersect) {
5232 + outa[a.length - 1] = a[a.length - 1].split(intersect[0])[0];
5233 + outb[0] = b[0].split(intersect[1])[1];
5234 + }
5235 + if (a.length > 1 && b.length > 1) {
5236 + intersect = getIntersection(a[0], b[b.length - 1]);
5237 + if (intersect) return [[a[0].split(intersect[0])[0]], [b[b.length - 1].split(intersect[1])[1]]];
5238 + }
5239 + return [outa, outb];
5240 + }
5241 + function pruneIntersections(segments) {
5242 + var e;
5243 + for (var i = 1; i < segments.length; i += 1) {
5244 + e = pruneSegmentIntersection(segments[i - 1], segments[i]);
5245 + segments[i - 1] = e[0];
5246 + segments[i] = e[1];
5247 + }
5248 + if (segments.length > 1) {
5249 + e = pruneSegmentIntersection(segments[segments.length - 1], segments[0]);
5250 + segments[segments.length - 1] = e[0];
5251 + segments[0] = e[1];
5252 + }
5253 + return segments;
5254 + }
5255 + function offsetSegmentSplit(segment, amount) {
5256 + var flex = segment.inflectionPoints();
5257 + var left;
5258 + var right;
5259 + var split;
5260 + var mid;
5261 + if (flex.length === 0) return [offsetSegment(segment, amount)];
5262 + if (flex.length === 1 || floatEqual(flex[1], 1)) {
5263 + split = segment.split(flex[0]);
5264 + left = split[0];
5265 + right = split[1];
5266 + return [offsetSegment(left, amount), offsetSegment(right, amount)];
5267 + }
5268 + split = segment.split(flex[0]);
5269 + left = split[0];
5270 + var t = (flex[1] - flex[0]) / (1 - flex[0]);
5271 + split = split[1].split(t);
5272 + mid = split[0];
5273 + right = split[1];
5274 + return [
5275 + offsetSegment(left, amount),
5276 + offsetSegment(mid, amount),
5277 + offsetSegment(right, amount)
5278 + ];
5279 + }
5280 + function OffsetPathModifier() {}
5281 + extendPrototype([ShapeModifier], OffsetPathModifier);
5282 + OffsetPathModifier.prototype.initModifierProperties = function(elem, data) {
5283 + this.getValue = this.processKeys;
5284 + this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this);
5285 + this.miterLimit = PropertyFactory.getProp(elem, data.ml, 0, null, this);
5286 + this.lineJoin = data.lj;
5287 + this._isAnimated = this.amount.effectsSequence.length !== 0;
5288 + };
5289 + OffsetPathModifier.prototype.processPath = function(inputBezier, amount, lineJoin, miterLimit) {
5290 + var outputBezier = shapePool.newElement();
5291 + outputBezier.c = inputBezier.c;
5292 + var count = inputBezier.length();
5293 + if (!inputBezier.c) count -= 1;
5294 + var i;
5295 + var j;
5296 + var segment;
5297 + var multiSegments = [];
5298 + for (i = 0; i < count; i += 1) {
5299 + segment = PolynomialBezier.shapeSegment(inputBezier, i);
5300 + multiSegments.push(offsetSegmentSplit(segment, amount));
5301 + }
5302 + if (!inputBezier.c) for (i = count - 1; i >= 0; i -= 1) {
5303 + segment = PolynomialBezier.shapeSegmentInverted(inputBezier, i);
5304 + multiSegments.push(offsetSegmentSplit(segment, amount));
5305 + }
5306 + multiSegments = pruneIntersections(multiSegments);
5307 + var lastPoint = null;
5308 + var lastSeg = null;
5309 + for (i = 0; i < multiSegments.length; i += 1) {
5310 + var multiSegment = multiSegments[i];
5311 + if (lastSeg) lastPoint = joinLines(outputBezier, lastSeg, multiSegment[0], lineJoin, miterLimit);
5312 + lastSeg = multiSegment[multiSegment.length - 1];
5313 + for (j = 0; j < multiSegment.length; j += 1) {
5314 + segment = multiSegment[j];
5315 + if (lastPoint && pointEqual(segment.points[0], lastPoint)) outputBezier.setXYAt(segment.points[1][0], segment.points[1][1], "o", outputBezier.length() - 1);
5316 + else 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());
5317 + 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());
5318 + lastPoint = segment.points[3];
5319 + }
5320 + }
5321 + if (multiSegments.length) joinLines(outputBezier, lastSeg, multiSegments[0][0], lineJoin, miterLimit);
5322 + return outputBezier;
5323 + };
5324 + OffsetPathModifier.prototype.processShapes = function(_isFirstFrame) {
5325 + var shapePaths;
5326 + var i;
5327 + var len = this.shapes.length;
5328 + var j;
5329 + var jLen;
5330 + var amount = this.amount.v;
5331 + var miterLimit = this.miterLimit.v;
5332 + var lineJoin = this.lineJoin;
5333 + if (amount !== 0) {
5334 + var shapeData;
5335 + var localShapeCollection;
5336 + for (i = 0; i < len; i += 1) {
5337 + shapeData = this.shapes[i];
5338 + localShapeCollection = shapeData.localShapeCollection;
5339 + if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {
5340 + localShapeCollection.releaseShapes();
5341 + shapeData.shape._mdf = true;
5342 + shapePaths = shapeData.shape.paths.shapes;
5343 + jLen = shapeData.shape.paths._length;
5344 + for (j = 0; j < jLen; j += 1) localShapeCollection.addShape(this.processPath(shapePaths[j], amount, lineJoin, miterLimit));
5345 + }
5346 + shapeData.shape.paths = shapeData.localShapeCollection;
5347 + }
5348 + }
5349 + if (!this.dynamicProperties.length) this._mdf = false;
5350 + };
5351 + function getFontProperties(fontData) {
5352 + var styles = fontData.fStyle ? fontData.fStyle.split(" ") : [];
5353 + var fWeight = "normal";
5354 + var fStyle = "normal";
5355 + var len = styles.length;
5356 + var styleName;
5357 + for (var i = 0; i < len; i += 1) {
5358 + styleName = styles[i].toLowerCase();
5359 + switch (styleName) {
5360 + case "italic":
5361 + fStyle = "italic";
5362 + break;
5363 + case "bold":
5364 + fWeight = "700";
5365 + break;
5366 + case "black":
5367 + fWeight = "900";
5368 + break;
5369 + case "medium":
5370 + fWeight = "500";
5371 + break;
5372 + case "regular":
5373 + case "normal":
5374 + fWeight = "400";
5375 + break;
5376 + case "light":
5377 + case "thin":
5378 + fWeight = "200";
5379 + break;
5380 + default: break;
5381 + }
5382 + }
5383 + return {
5384 + style: fStyle,
5385 + weight: fontData.fWeight || fWeight
5386 + };
5387 + }
5388 + var FontManager = function() {
5389 + var maxWaitingTime = 5e3;
5390 + var emptyChar = {
5391 + w: 0,
5392 + size: 0,
5393 + shapes: [],
5394 + data: { shapes: [] }
5395 + };
5396 + var combinedCharacters = [];
5397 + combinedCharacters = combinedCharacters.concat([
5398 + 2304,
5399 + 2305,
5400 + 2306,
5401 + 2307,
5402 + 2362,
5403 + 2363,
5404 + 2364,
5405 + 2364,
5406 + 2366,
5407 + 2367,
5408 + 2368,
5409 + 2369,
5410 + 2370,
5411 + 2371,
5412 + 2372,
5413 + 2373,
5414 + 2374,
5415 + 2375,
5416 + 2376,
5417 + 2377,
5418 + 2378,
5419 + 2379,
5420 + 2380,
5421 + 2381,
5422 + 2382,
5423 + 2383,
5424 + 2387,
5425 + 2388,
5426 + 2389,
5427 + 2390,
5428 + 2391,
5429 + 2402,
5430 + 2403
5431 + ]);
5432 + var BLACK_FLAG_CODE_POINT = 127988;
5433 + var CANCEL_TAG_CODE_POINT = 917631;
5434 + var A_TAG_CODE_POINT = 917601;
5435 + var Z_TAG_CODE_POINT = 917626;
5436 + var VARIATION_SELECTOR_16_CODE_POINT = 65039;
5437 + var ZERO_WIDTH_JOINER_CODE_POINT = 8205;
5438 + var REGIONAL_CHARACTER_A_CODE_POINT = 127462;
5439 + var REGIONAL_CHARACTER_Z_CODE_POINT = 127487;
5440 + var surrogateModifiers = [
5441 + "d83cdffb",
5442 + "d83cdffc",
5443 + "d83cdffd",
5444 + "d83cdffe",
5445 + "d83cdfff"
5446 + ];
5447 + function trimFontOptions(font) {
5448 + var familyArray = font.split(",");
5449 + var i;
5450 + var len = familyArray.length;
5451 + var enabledFamilies = [];
5452 + for (i = 0; i < len; i += 1) if (familyArray[i] !== "sans-serif" && familyArray[i] !== "monospace") enabledFamilies.push(familyArray[i]);
5453 + return enabledFamilies.join(",");
5454 + }
5455 + function setUpNode(font, family) {
5456 + var parentNode = createTag("span");
5457 + parentNode.setAttribute("aria-hidden", true);
5458 + parentNode.style.fontFamily = family;
5459 + var node = createTag("span");
5460 + node.innerText = "giItT1WQy@!-/#";
5461 + parentNode.style.position = "absolute";
5462 + parentNode.style.left = "-10000px";
5463 + parentNode.style.top = "-10000px";
5464 + parentNode.style.fontSize = "300px";
5465 + parentNode.style.fontVariant = "normal";
5466 + parentNode.style.fontStyle = "normal";
5467 + parentNode.style.fontWeight = "normal";
5468 + parentNode.style.letterSpacing = "0";
5469 + parentNode.appendChild(node);
5470 + document.body.appendChild(parentNode);
5471 + var width = node.offsetWidth;
5472 + node.style.fontFamily = trimFontOptions(font) + ", " + family;
5473 + return {
5474 + node,
5475 + w: width,
5476 + parent: parentNode
5477 + };
5478 + }
5479 + function checkLoadedFonts() {
5480 + var i;
5481 + var len = this.fonts.length;
5482 + var node;
5483 + var w;
5484 + var loadedCount = len;
5485 + for (i = 0; i < len; i += 1) if (this.fonts[i].loaded) loadedCount -= 1;
5486 + else if (this.fonts[i].fOrigin === "n" || this.fonts[i].origin === 0) this.fonts[i].loaded = true;
5487 + else {
5488 + node = this.fonts[i].monoCase.node;
5489 + w = this.fonts[i].monoCase.w;
5490 + if (node.offsetWidth !== w) {
5491 + loadedCount -= 1;
5492 + this.fonts[i].loaded = true;
5493 + } else {
5494 + node = this.fonts[i].sansCase.node;
5495 + w = this.fonts[i].sansCase.w;
5496 + if (node.offsetWidth !== w) {
5497 + loadedCount -= 1;
5498 + this.fonts[i].loaded = true;
5499 + }
5500 + }
5501 + if (this.fonts[i].loaded) {
5502 + this.fonts[i].sansCase.parent.parentNode.removeChild(this.fonts[i].sansCase.parent);
5503 + this.fonts[i].monoCase.parent.parentNode.removeChild(this.fonts[i].monoCase.parent);
5504 + }
5505 + }
5506 + if (loadedCount !== 0 && Date.now() - this.initTime < maxWaitingTime) setTimeout(this.checkLoadedFontsBinded, 20);
5507 + else setTimeout(this.setIsLoadedBinded, 10);
5508 + }
5509 + function createHelper(fontData, def) {
5510 + var engine = document.body && def ? "svg" : "canvas";
5511 + var helper;
5512 + var fontProps = getFontProperties(fontData);
5513 + if (engine === "svg") {
5514 + var tHelper = createNS("text");
5515 + tHelper.style.fontSize = "100px";
5516 + tHelper.setAttribute("font-family", fontData.fFamily);
5517 + tHelper.setAttribute("font-style", fontProps.style);
5518 + tHelper.setAttribute("font-weight", fontProps.weight);
5519 + tHelper.textContent = "1";
5520 + if (fontData.fClass) {
5521 + tHelper.style.fontFamily = "inherit";
5522 + tHelper.setAttribute("class", fontData.fClass);
5523 + } else tHelper.style.fontFamily = fontData.fFamily;
5524 + def.appendChild(tHelper);
5525 + helper = tHelper;
5526 + } else {
5527 + var tCanvasHelper = new OffscreenCanvas(500, 500).getContext("2d");
5528 + tCanvasHelper.font = fontProps.style + " " + fontProps.weight + " 100px " + fontData.fFamily;
5529 + helper = tCanvasHelper;
5530 + }
5531 + function measure(text) {
5532 + if (engine === "svg") {
5533 + helper.textContent = text;
5534 + return helper.getComputedTextLength();
5535 + }
5536 + return helper.measureText(text).width;
5537 + }
5538 + return { measureText: measure };
5539 + }
5540 + function addFonts(fontData, defs) {
5541 + if (!fontData) {
5542 + this.isLoaded = true;
5543 + return;
5544 + }
5545 + if (this.chars) {
5546 + this.isLoaded = true;
5547 + this.fonts = fontData.list;
5548 + return;
5549 + }
5550 + if (!document.body) {
5551 + this.isLoaded = true;
5552 + fontData.list.forEach(function(data) {
5553 + data.helper = createHelper(data);
5554 + data.cache = {};
5555 + });
5556 + this.fonts = fontData.list;
5557 + return;
5558 + }
5559 + var fontArr = fontData.list;
5560 + var i;
5561 + var len = fontArr.length;
5562 + var _pendingFonts = len;
5563 + for (i = 0; i < len; i += 1) {
5564 + var shouldLoadFont = true;
5565 + var loadedSelector;
5566 + var j;
5567 + fontArr[i].loaded = false;
5568 + fontArr[i].monoCase = setUpNode(fontArr[i].fFamily, "monospace");
5569 + fontArr[i].sansCase = setUpNode(fontArr[i].fFamily, "sans-serif");
5570 + if (!fontArr[i].fPath) {
5571 + fontArr[i].loaded = true;
5572 + _pendingFonts -= 1;
5573 + } else if (fontArr[i].fOrigin === "p" || fontArr[i].origin === 3) {
5574 + loadedSelector = document.querySelectorAll("style[f-forigin=\"p\"][f-family=\"" + fontArr[i].fFamily + "\"], style[f-origin=\"3\"][f-family=\"" + fontArr[i].fFamily + "\"]");
5575 + if (loadedSelector.length > 0) shouldLoadFont = false;
5576 + if (shouldLoadFont) {
5577 + var s = createTag("style");
5578 + s.setAttribute("f-forigin", fontArr[i].fOrigin);
5579 + s.setAttribute("f-origin", fontArr[i].origin);
5580 + s.setAttribute("f-family", fontArr[i].fFamily);
5581 + s.type = "text/css";
5582 + s.innerText = "@font-face {font-family: " + fontArr[i].fFamily + "; font-style: normal; src: url('" + fontArr[i].fPath + "');}";
5583 + defs.appendChild(s);
5584 + }
5585 + } else if (fontArr[i].fOrigin === "g" || fontArr[i].origin === 1) {
5586 + loadedSelector = document.querySelectorAll("link[f-forigin=\"g\"], link[f-origin=\"1\"]");
5587 + for (j = 0; j < loadedSelector.length; j += 1) if (loadedSelector[j].href.indexOf(fontArr[i].fPath) !== -1) shouldLoadFont = false;
5588 + if (shouldLoadFont) {
5589 + var l = createTag("link");
5590 + l.setAttribute("f-forigin", fontArr[i].fOrigin);
5591 + l.setAttribute("f-origin", fontArr[i].origin);
5592 + l.type = "text/css";
5593 + l.rel = "stylesheet";
5594 + l.href = fontArr[i].fPath;
5595 + document.body.appendChild(l);
5596 + }
5597 + } else if (fontArr[i].fOrigin === "t" || fontArr[i].origin === 2) {
5598 + loadedSelector = document.querySelectorAll("script[f-forigin=\"t\"], script[f-origin=\"2\"]");
5599 + for (j = 0; j < loadedSelector.length; j += 1) if (fontArr[i].fPath === loadedSelector[j].src) shouldLoadFont = false;
5600 + if (shouldLoadFont) {
5601 + var sc = createTag("link");
5602 + sc.setAttribute("f-forigin", fontArr[i].fOrigin);
5603 + sc.setAttribute("f-origin", fontArr[i].origin);
5604 + sc.setAttribute("rel", "stylesheet");
5605 + sc.setAttribute("href", fontArr[i].fPath);
5606 + defs.appendChild(sc);
5607 + }
5608 + }
5609 + fontArr[i].helper = createHelper(fontArr[i], defs);
5610 + fontArr[i].cache = {};
5611 + this.fonts.push(fontArr[i]);
5612 + }
5613 + if (_pendingFonts === 0) this.isLoaded = true;
5614 + else setTimeout(this.checkLoadedFonts.bind(this), 100);
5615 + }
5616 + function addChars(chars) {
5617 + if (!chars) return;
5618 + if (!this.chars) this.chars = [];
5619 + var i;
5620 + var len = chars.length;
5621 + var j;
5622 + var jLen = this.chars.length;
5623 + var found;
5624 + for (i = 0; i < len; i += 1) {
5625 + j = 0;
5626 + found = false;
5627 + while (j < jLen) {
5628 + if (this.chars[j].style === chars[i].style && this.chars[j].fFamily === chars[i].fFamily && this.chars[j].ch === chars[i].ch) found = true;
5629 + j += 1;
5630 + }
5631 + if (!found) {
5632 + this.chars.push(chars[i]);
5633 + jLen += 1;
5634 + }
5635 + }
5636 + }
5637 + function getCharData(_char, style, font) {
5638 + var i = 0;
5639 + var len = this.chars.length;
5640 + while (i < len) {
5641 + if (this.chars[i].ch === _char && this.chars[i].style === style && this.chars[i].fFamily === font) return this.chars[i];
5642 + i += 1;
5643 + }
5644 + if ((typeof _char === "string" && _char.charCodeAt(0) !== 13 || !_char) && console && console.warn && !this._warned) {
5645 + this._warned = true;
5646 + console.warn("Missing character from exported characters list: ", _char, style, font);
5647 + }
5648 + return emptyChar;
5649 + }
5650 + function measureText(_char2, fontName, size) {
5651 + var fontData = this.getFontByName(fontName);
5652 + var index = _char2;
5653 + if (!fontData.cache[index]) {
5654 + var tHelper = fontData.helper;
5655 + if (_char2 === " ") {
5656 + var doubleSize = tHelper.measureText("|" + _char2 + "|");
5657 + var singleSize = tHelper.measureText("||");
5658 + fontData.cache[index] = (doubleSize - singleSize) / 100;
5659 + } else fontData.cache[index] = tHelper.measureText(_char2) / 100;
5660 + }
5661 + return fontData.cache[index] * size;
5662 + }
5663 + function getFontByName(name) {
5664 + var i = 0;
5665 + var len = this.fonts.length;
5666 + while (i < len) {
5667 + if (this.fonts[i].fName === name) return this.fonts[i];
5668 + i += 1;
5669 + }
5670 + return this.fonts[0];
5671 + }
5672 + function getCodePoint(string) {
5673 + var codePoint = 0;
5674 + var first = string.charCodeAt(0);
5675 + if (first >= 55296 && first <= 56319) {
5676 + var second = string.charCodeAt(1);
5677 + if (second >= 56320 && second <= 57343) codePoint = (first - 55296) * 1024 + second - 56320 + 65536;
5678 + }
5679 + return codePoint;
5680 + }
5681 + function isModifier(firstCharCode, secondCharCode) {
5682 + var sum = firstCharCode.toString(16) + secondCharCode.toString(16);
5683 + return surrogateModifiers.indexOf(sum) !== -1;
5684 + }
5685 + function isZeroWidthJoiner(charCode) {
5686 + return charCode === ZERO_WIDTH_JOINER_CODE_POINT;
5687 + }
5688 + function isVariationSelector(charCode) {
5689 + return charCode === VARIATION_SELECTOR_16_CODE_POINT;
5690 + }
5691 + function isRegionalCode(string) {
5692 + var codePoint = getCodePoint(string);
5693 + if (codePoint >= REGIONAL_CHARACTER_A_CODE_POINT && codePoint <= REGIONAL_CHARACTER_Z_CODE_POINT) return true;
5694 + return false;
5695 + }
5696 + function isFlagEmoji(string) {
5697 + return isRegionalCode(string.substr(0, 2)) && isRegionalCode(string.substr(2, 2));
5698 + }
5699 + function isCombinedCharacter(_char3) {
5700 + return combinedCharacters.indexOf(_char3) !== -1;
5701 + }
5702 + function isRegionalFlag(text, index) {
5703 + var codePoint = getCodePoint(text.substr(index, 2));
5704 + if (codePoint !== BLACK_FLAG_CODE_POINT) return false;
5705 + var count = 0;
5706 + index += 2;
5707 + while (count < 5) {
5708 + codePoint = getCodePoint(text.substr(index, 2));
5709 + if (codePoint < A_TAG_CODE_POINT || codePoint > Z_TAG_CODE_POINT) return false;
5710 + count += 1;
5711 + index += 2;
5712 + }
5713 + return getCodePoint(text.substr(index, 2)) === CANCEL_TAG_CODE_POINT;
5714 + }
5715 + function setIsLoaded() {
5716 + this.isLoaded = true;
5717 + }
5718 + var Font = function Font() {
5719 + this.fonts = [];
5720 + this.chars = null;
5721 + this.typekitLoaded = 0;
5722 + this.isLoaded = false;
5723 + this._warned = false;
5724 + this.initTime = Date.now();
5725 + this.setIsLoadedBinded = this.setIsLoaded.bind(this);
5726 + this.checkLoadedFontsBinded = this.checkLoadedFonts.bind(this);
5727 + };
5728 + Font.isModifier = isModifier;
5729 + Font.isZeroWidthJoiner = isZeroWidthJoiner;
5730 + Font.isFlagEmoji = isFlagEmoji;
5731 + Font.isRegionalCode = isRegionalCode;
5732 + Font.isCombinedCharacter = isCombinedCharacter;
5733 + Font.isRegionalFlag = isRegionalFlag;
5734 + Font.isVariationSelector = isVariationSelector;
5735 + Font.BLACK_FLAG_CODE_POINT = BLACK_FLAG_CODE_POINT;
5736 + Font.prototype = {
5737 + addChars,
5738 + addFonts,
5739 + getCharData,
5740 + getFontByName,
5741 + measureText,
5742 + checkLoadedFonts,
5743 + setIsLoaded
5744 + };
5745 + return Font;
5746 + }();
5747 + function SlotManager(animationData) {
5748 + this.animationData = animationData;
5749 + }
5750 + SlotManager.prototype.getProp = function(data) {
5751 + if (this.animationData.slots && this.animationData.slots[data.sid]) return Object.assign(data, this.animationData.slots[data.sid].p);
5752 + return data;
5753 + };
5754 + function slotFactory(animationData) {
5755 + return new SlotManager(animationData);
5756 + }
5757 + function RenderableElement() {}
5758 + RenderableElement.prototype = {
5759 + initRenderable: function initRenderable() {
5760 + this.isInRange = false;
5761 + this.hidden = false;
5762 + this.isTransparent = false;
5763 + this.renderableComponents = [];
5764 + },
5765 + addRenderableComponent: function addRenderableComponent(component) {
5766 + if (this.renderableComponents.indexOf(component) === -1) this.renderableComponents.push(component);
5767 + },
5768 + removeRenderableComponent: function removeRenderableComponent(component) {
5769 + if (this.renderableComponents.indexOf(component) !== -1) this.renderableComponents.splice(this.renderableComponents.indexOf(component), 1);
5770 + },
5771 + prepareRenderableFrame: function prepareRenderableFrame(num) {
5772 + this.checkLayerLimits(num);
5773 + },
5774 + checkTransparency: function checkTransparency() {
5775 + if (this.finalTransform.mProp.o.v <= 0) {
5776 + if (!this.isTransparent && this.globalData.renderConfig.hideOnTransparent) {
5777 + this.isTransparent = true;
5778 + this.hide();
5779 + }
5780 + } else if (this.isTransparent) {
5781 + this.isTransparent = false;
5782 + this.show();
5783 + }
5784 + },
5785 + /**
5786 + * @function
5787 + * Initializes frame related properties.
5788 + *
5789 + * @param {number} num
5790 + * current frame number in Layer's time
5791 + *
5792 + */
5793 + checkLayerLimits: function checkLayerLimits(num) {
5794 + if (this.data.ip - this.data.st <= num && this.data.op - this.data.st > num) {
5795 + if (this.isInRange !== true) {
5796 + this.globalData._mdf = true;
5797 + this._mdf = true;
5798 + this.isInRange = true;
5799 + this.show();
5800 + }
5801 + } else if (this.isInRange !== false) {
5802 + this.globalData._mdf = true;
5803 + this.isInRange = false;
5804 + this.hide();
5805 + }
5806 + },
5807 + renderRenderable: function renderRenderable() {
5808 + var i;
5809 + var len = this.renderableComponents.length;
5810 + for (i = 0; i < len; i += 1) this.renderableComponents[i].renderFrame(this._isFirstFrame);
5811 + },
5812 + sourceRectAtTime: function sourceRectAtTime() {
5813 + return {
5814 + top: 0,
5815 + left: 0,
5816 + width: 100,
5817 + height: 100
5818 + };
5819 + },
5820 + getLayerSize: function getLayerSize() {
5821 + if (this.data.ty === 5) return {
5822 + w: this.data.textData.width,
5823 + h: this.data.textData.height
5824 + };
5825 + return {
5826 + w: this.data.width,
5827 + h: this.data.height
5828 + };
5829 + }
5830 + };
5831 + var getBlendMode = function() {
5832 + var blendModeEnums = {
5833 + 0: "source-over",
5834 + 1: "multiply",
5835 + 2: "screen",
5836 + 3: "overlay",
5837 + 4: "darken",
5838 + 5: "lighten",
5839 + 6: "color-dodge",
5840 + 7: "color-burn",
5841 + 8: "hard-light",
5842 + 9: "soft-light",
5843 + 10: "difference",
5844 + 11: "exclusion",
5845 + 12: "hue",
5846 + 13: "saturation",
5847 + 14: "color",
5848 + 15: "luminosity"
5849 + };
5850 + return function(mode) {
5851 + return blendModeEnums[mode] || "";
5852 + };
5853 + }();
5854 + function SliderEffect(data, elem, container) {
5855 + this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);
5856 + }
5857 + function AngleEffect(data, elem, container) {
5858 + this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);
5859 + }
5860 + function ColorEffect(data, elem, container) {
5861 + this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);
5862 + }
5863 + function PointEffect(data, elem, container) {
5864 + this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);
5865 + }
5866 + function LayerIndexEffect(data, elem, container) {
5867 + this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);
5868 + }
5869 + function MaskIndexEffect(data, elem, container) {
5870 + this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);
5871 + }
5872 + function CheckboxEffect(data, elem, container) {
5873 + this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);
5874 + }
5875 + function NoValueEffect() {
5876 + this.p = {};
5877 + }
5878 + function EffectsManager(data, element) {
5879 + var effects = data.ef || [];
5880 + this.effectElements = [];
5881 + var i;
5882 + var len = effects.length;
5883 + var effectItem;
5884 + for (i = 0; i < len; i += 1) {
5885 + effectItem = new GroupEffect(effects[i], element);
5886 + this.effectElements.push(effectItem);
5887 + }
5888 + }
5889 + function GroupEffect(data, element) {
5890 + this.init(data, element);
5891 + }
5892 + extendPrototype([DynamicPropertyContainer], GroupEffect);
5893 + GroupEffect.prototype.getValue = GroupEffect.prototype.iterateDynamicProperties;
5894 + GroupEffect.prototype.init = function(data, element) {
5895 + this.data = data;
5896 + this.effectElements = [];
5897 + this.initDynamicPropertyContainer(element);
5898 + var i;
5899 + var len = this.data.ef.length;
5900 + var eff;
5901 + var effects = this.data.ef;
5902 + for (i = 0; i < len; i += 1) {
5903 + eff = null;
5904 + switch (effects[i].ty) {
5905 + case 0:
5906 + eff = new SliderEffect(effects[i], element, this);
5907 + break;
5908 + case 1:
5909 + eff = new AngleEffect(effects[i], element, this);
5910 + break;
5911 + case 2:
5912 + eff = new ColorEffect(effects[i], element, this);
5913 + break;
5914 + case 3:
5915 + eff = new PointEffect(effects[i], element, this);
5916 + break;
5917 + case 4:
5918 + case 7:
5919 + eff = new CheckboxEffect(effects[i], element, this);
5920 + break;
5921 + case 10:
5922 + eff = new LayerIndexEffect(effects[i], element, this);
5923 + break;
5924 + case 11:
5925 + eff = new MaskIndexEffect(effects[i], element, this);
5926 + break;
5927 + case 5:
5928 + eff = new EffectsManager(effects[i], element, this);
5929 + break;
5930 + default:
5931 + eff = new NoValueEffect(effects[i], element, this);
5932 + break;
5933 + }
5934 + if (eff) this.effectElements.push(eff);
5935 + }
5936 + };
5937 + function BaseElement() {}
5938 + BaseElement.prototype = {
5939 + checkMasks: function checkMasks() {
5940 + if (!this.data.hasMask) return false;
5941 + var i = 0;
5942 + var len = this.data.masksProperties.length;
5943 + while (i < len) {
5944 + if (this.data.masksProperties[i].mode !== "n" && this.data.masksProperties[i].cl !== false) return true;
5945 + i += 1;
5946 + }
5947 + return false;
5948 + },
5949 + initExpressions: function initExpressions() {
5950 + var expressionsInterfaces = getExpressionInterfaces();
5951 + if (!expressionsInterfaces) return;
5952 + var LayerExpressionInterface = expressionsInterfaces("layer");
5953 + var EffectsExpressionInterface = expressionsInterfaces("effects");
5954 + var ShapeExpressionInterface = expressionsInterfaces("shape");
5955 + var TextExpressionInterface = expressionsInterfaces("text");
5956 + var CompExpressionInterface = expressionsInterfaces("comp");
5957 + this.layerInterface = LayerExpressionInterface(this);
5958 + if (this.data.hasMask && this.maskManager) this.layerInterface.registerMaskInterface(this.maskManager);
5959 + var effectsInterface = EffectsExpressionInterface.createEffectsInterface(this, this.layerInterface);
5960 + this.layerInterface.registerEffectsInterface(effectsInterface);
5961 + if (this.data.ty === 0 || this.data.xt) this.compInterface = CompExpressionInterface(this);
5962 + else if (this.data.ty === 4) {
5963 + this.layerInterface.shapeInterface = ShapeExpressionInterface(this.shapesData, this.itemsData, this.layerInterface);
5964 + this.layerInterface.content = this.layerInterface.shapeInterface;
5965 + } else if (this.data.ty === 5) {
5966 + this.layerInterface.textInterface = TextExpressionInterface(this);
5967 + this.layerInterface.text = this.layerInterface.textInterface;
5968 + }
5969 + },
5970 + setBlendMode: function setBlendMode() {
5971 + var blendModeValue = getBlendMode(this.data.bm);
5972 + var elem = this.baseElement || this.layerElement;
5973 + elem.style["mix-blend-mode"] = blendModeValue;
5974 + },
5975 + initBaseData: function initBaseData(data, globalData, comp) {
5976 + this.globalData = globalData;
5977 + this.comp = comp;
5978 + this.data = data;
5979 + this.layerId = createElementID();
5980 + if (!this.data.sr) this.data.sr = 1;
5981 + this.effectsManager = new EffectsManager(this.data, this, this.dynamicProperties);
5982 + },
5983 + getType: function getType() {
5984 + return this.type;
5985 + },
5986 + sourceRectAtTime: function sourceRectAtTime() {}
5987 + };
5988 + /**
5989 + * @file
5990 + * Handles element's layer frame update.
5991 + * Checks layer in point and out point
5992 + *
5993 + */
5994 + function FrameElement() {}
5995 + FrameElement.prototype = {
5996 + /**
5997 + * @function
5998 + * Initializes frame related properties.
5999 + *
6000 + */
6001 + initFrame: function initFrame() {
6002 + this._isFirstFrame = false;
6003 + this.dynamicProperties = [];
6004 + this._mdf = false;
6005 + },
6006 + /**
6007 + * @function
6008 + * Calculates all dynamic values
6009 + *
6010 + * @param {number} num
6011 + * current frame number in Layer's time
6012 + * @param {boolean} isVisible
6013 + * if layers is currently in range
6014 + *
6015 + */
6016 + prepareProperties: function prepareProperties(num, isVisible) {
6017 + var i;
6018 + var len = this.dynamicProperties.length;
6019 + for (i = 0; i < len; i += 1) if (isVisible || this._isParent && this.dynamicProperties[i].propType === "transform") {
6020 + this.dynamicProperties[i].getValue();
6021 + if (this.dynamicProperties[i]._mdf) {
6022 + this.globalData._mdf = true;
6023 + this._mdf = true;
6024 + }
6025 + }
6026 + },
6027 + addDynamicProperty: function addDynamicProperty(prop) {
6028 + if (this.dynamicProperties.indexOf(prop) === -1) this.dynamicProperties.push(prop);
6029 + }
6030 + };
6031 + function FootageElement(data, globalData, comp) {
6032 + this.initFrame();
6033 + this.initRenderable();
6034 + this.assetData = globalData.getAssetData(data.refId);
6035 + this.footageData = globalData.imageLoader.getAsset(this.assetData);
6036 + this.initBaseData(data, globalData, comp);
6037 + }
6038 + FootageElement.prototype.prepareFrame = function() {};
6039 + extendPrototype([
6040 + RenderableElement,
6041 + BaseElement,
6042 + FrameElement
6043 + ], FootageElement);
6044 + FootageElement.prototype.getBaseElement = function() {
6045 + return null;
6046 + };
6047 + FootageElement.prototype.renderFrame = function() {};
6048 + FootageElement.prototype.destroy = function() {};
6049 + FootageElement.prototype.initExpressions = function() {
6050 + var expressionsInterfaces = getExpressionInterfaces();
6051 + if (!expressionsInterfaces) return;
6052 + var FootageInterface = expressionsInterfaces("footage");
6053 + this.layerInterface = FootageInterface(this);
6054 + };
6055 + FootageElement.prototype.getFootageData = function() {
6056 + return this.footageData;
6057 + };
6058 + function AudioElement(data, globalData, comp) {
6059 + this.initFrame();
6060 + this.initRenderable();
6061 + this.assetData = globalData.getAssetData(data.refId);
6062 + this.initBaseData(data, globalData, comp);
6063 + this._isPlaying = false;
6064 + this._canPlay = false;
6065 + var assetPath = this.globalData.getAssetsPath(this.assetData);
6066 + this.audio = this.globalData.audioController.createAudio(assetPath);
6067 + this._currentTime = 0;
6068 + this.globalData.audioController.addAudio(this);
6069 + this._volumeMultiplier = 1;
6070 + this._volume = 1;
6071 + this._previousVolume = null;
6072 + this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : { _placeholder: true };
6073 + this.lv = PropertyFactory.getProp(this, data.au && data.au.lv ? data.au.lv : { k: [100] }, 1, .01, this);
6074 + }
6075 + AudioElement.prototype.prepareFrame = function(num) {
6076 + this.prepareRenderableFrame(num, true);
6077 + this.prepareProperties(num, true);
6078 + if (!this.tm._placeholder) {
6079 + var timeRemapped = this.tm.v;
6080 + this._currentTime = timeRemapped;
6081 + } else this._currentTime = num / this.data.sr;
6082 + this._volume = this.lv.v[0];
6083 + var totalVolume = this._volume * this._volumeMultiplier;
6084 + if (this._previousVolume !== totalVolume) {
6085 + this._previousVolume = totalVolume;
6086 + this.audio.volume(totalVolume);
6087 + }
6088 + };
6089 + extendPrototype([
6090 + RenderableElement,
6091 + BaseElement,
6092 + FrameElement
6093 + ], AudioElement);
6094 + AudioElement.prototype.renderFrame = function() {
6095 + if (this.isInRange && this._canPlay) {
6096 + if (!this._isPlaying) {
6097 + this.audio.play();
6098 + this.audio.seek(this._currentTime / this.globalData.frameRate);
6099 + this._isPlaying = true;
6100 + } else if (!this.audio.playing() || Math.abs(this._currentTime / this.globalData.frameRate - this.audio.seek()) > .1) this.audio.seek(this._currentTime / this.globalData.frameRate);
6101 + }
6102 + };
6103 + AudioElement.prototype.show = function() {};
6104 + AudioElement.prototype.hide = function() {
6105 + this.audio.pause();
6106 + this._isPlaying = false;
6107 + };
6108 + AudioElement.prototype.pause = function() {
6109 + this.audio.pause();
6110 + this._isPlaying = false;
6111 + this._canPlay = false;
6112 + };
6113 + AudioElement.prototype.resume = function() {
6114 + this._canPlay = true;
6115 + };
6116 + AudioElement.prototype.setRate = function(rateValue) {
6117 + this.audio.rate(rateValue);
6118 + };
6119 + AudioElement.prototype.volume = function(volumeValue) {
6120 + this._volumeMultiplier = volumeValue;
6121 + this._previousVolume = volumeValue * this._volume;
6122 + this.audio.volume(this._previousVolume);
6123 + };
6124 + AudioElement.prototype.getBaseElement = function() {
6125 + return null;
6126 + };
6127 + AudioElement.prototype.destroy = function() {};
6128 + AudioElement.prototype.sourceRectAtTime = function() {};
6129 + AudioElement.prototype.initExpressions = function() {};
6130 + function BaseRenderer() {}
6131 + BaseRenderer.prototype.checkLayers = function(num) {
6132 + var i;
6133 + var len = this.layers.length;
6134 + var data;
6135 + this.completeLayers = true;
6136 + for (i = len - 1; i >= 0; i -= 1) {
6137 + if (!this.elements[i]) {
6138 + data = this.layers[i];
6139 + if (data.ip - data.st <= num - this.layers[i].st && data.op - data.st > num - this.layers[i].st) this.buildItem(i);
6140 + }
6141 + this.completeLayers = this.elements[i] ? this.completeLayers : false;
6142 + }
6143 + this.checkPendingElements();
6144 + };
6145 + BaseRenderer.prototype.createItem = function(layer) {
6146 + switch (layer.ty) {
6147 + case 2: return this.createImage(layer);
6148 + case 0: return this.createComp(layer);
6149 + case 1: return this.createSolid(layer);
6150 + case 3: return this.createNull(layer);
6151 + case 4: return this.createShape(layer);
6152 + case 5: return this.createText(layer);
6153 + case 6: return this.createAudio(layer);
6154 + case 13: return this.createCamera(layer);
6155 + case 15: return this.createFootage(layer);
6156 + default: return this.createNull(layer);
6157 + }
6158 + };
6159 + BaseRenderer.prototype.createCamera = function() {
6160 + throw new Error("You're using a 3d camera. Try the html renderer.");
6161 + };
6162 + BaseRenderer.prototype.createAudio = function(data) {
6163 + return new AudioElement(data, this.globalData, this);
6164 + };
6165 + BaseRenderer.prototype.createFootage = function(data) {
6166 + return new FootageElement(data, this.globalData, this);
6167 + };
6168 + BaseRenderer.prototype.buildAllItems = function() {
6169 + var i;
6170 + var len = this.layers.length;
6171 + for (i = 0; i < len; i += 1) this.buildItem(i);
6172 + this.checkPendingElements();
6173 + };
6174 + BaseRenderer.prototype.includeLayers = function(newLayers) {
6175 + this.completeLayers = false;
6176 + var i;
6177 + var len = newLayers.length;
6178 + var j;
6179 + var jLen = this.layers.length;
6180 + for (i = 0; i < len; i += 1) {
6181 + j = 0;
6182 + while (j < jLen) {
6183 + if (this.layers[j].id === newLayers[i].id) {
6184 + this.layers[j] = newLayers[i];
6185 + break;
6186 + }
6187 + j += 1;
6188 + }
6189 + }
6190 + };
6191 + BaseRenderer.prototype.setProjectInterface = function(pInterface) {
6192 + this.globalData.projectInterface = pInterface;
6193 + };
6194 + BaseRenderer.prototype.initItems = function() {
6195 + if (!this.globalData.progressiveLoad) this.buildAllItems();
6196 + };
6197 + BaseRenderer.prototype.buildElementParenting = function(element, parentName, hierarchy) {
6198 + var elements = this.elements;
6199 + var layers = this.layers;
6200 + var i = 0;
6201 + var len = layers.length;
6202 + while (i < len) {
6203 + if (layers[i].ind == parentName) if (!elements[i] || elements[i] === true) {
6204 + this.buildItem(i);
6205 + this.addPendingElement(element);
6206 + } else {
6207 + hierarchy.push(elements[i]);
6208 + elements[i].setAsParent();
6209 + if (layers[i].parent !== void 0) this.buildElementParenting(element, layers[i].parent, hierarchy);
6210 + else element.setHierarchy(hierarchy);
6211 + }
6212 + i += 1;
6213 + }
6214 + };
6215 + BaseRenderer.prototype.addPendingElement = function(element) {
6216 + this.pendingElements.push(element);
6217 + };
6218 + BaseRenderer.prototype.searchExtraCompositions = function(assets) {
6219 + var i;
6220 + var len = assets.length;
6221 + for (i = 0; i < len; i += 1) if (assets[i].xt) {
6222 + var comp = this.createComp(assets[i]);
6223 + comp.initExpressions();
6224 + this.globalData.projectInterface.registerComposition(comp);
6225 + }
6226 + };
6227 + BaseRenderer.prototype.getElementById = function(ind) {
6228 + var i;
6229 + var len = this.elements.length;
6230 + for (i = 0; i < len; i += 1) if (this.elements[i].data.ind === ind) return this.elements[i];
6231 + return null;
6232 + };
6233 + BaseRenderer.prototype.getElementByPath = function(path) {
6234 + var pathValue = path.shift();
6235 + var element;
6236 + if (typeof pathValue === "number") element = this.elements[pathValue];
6237 + else {
6238 + var i;
6239 + var len = this.elements.length;
6240 + for (i = 0; i < len; i += 1) if (this.elements[i].data.nm === pathValue) {
6241 + element = this.elements[i];
6242 + break;
6243 + }
6244 + }
6245 + if (path.length === 0) return element;
6246 + return element.getElementByPath(path);
6247 + };
6248 + BaseRenderer.prototype.setupGlobalData = function(animData, fontsContainer) {
6249 + this.globalData.fontManager = new FontManager();
6250 + this.globalData.slotManager = slotFactory(animData);
6251 + this.globalData.fontManager.addChars(animData.chars);
6252 + this.globalData.fontManager.addFonts(animData.fonts, fontsContainer);
6253 + this.globalData.getAssetData = this.animationItem.getAssetData.bind(this.animationItem);
6254 + this.globalData.getAssetsPath = this.animationItem.getAssetsPath.bind(this.animationItem);
6255 + this.globalData.imageLoader = this.animationItem.imagePreloader;
6256 + this.globalData.audioController = this.animationItem.audioController;
6257 + this.globalData.frameId = 0;
6258 + this.globalData.frameRate = animData.fr;
6259 + this.globalData.nm = animData.nm;
6260 + this.globalData.compSize = {
6261 + w: animData.w,
6262 + h: animData.h
6263 + };
6264 + };
6265 + var effectTypes = { TRANSFORM_EFFECT: "transformEFfect" };
6266 + function TransformElement() {}
6267 + TransformElement.prototype = {
6268 + initTransform: function initTransform() {
6269 + var mat = new Matrix();
6270 + this.finalTransform = {
6271 + mProp: this.data.ks ? TransformPropertyFactory.getTransformProperty(this, this.data.ks, this) : { o: 0 },
6272 + _matMdf: false,
6273 + _localMatMdf: false,
6274 + _opMdf: false,
6275 + mat,
6276 + localMat: mat,
6277 + localOpacity: 1
6278 + };
6279 + if (this.data.ao) this.finalTransform.mProp.autoOriented = true;
6280 + if (this.data.ty !== 11) {}
6281 + },
6282 + renderTransform: function renderTransform() {
6283 + this.finalTransform._opMdf = this.finalTransform.mProp.o._mdf || this._isFirstFrame;
6284 + this.finalTransform._matMdf = this.finalTransform.mProp._mdf || this._isFirstFrame;
6285 + if (this.hierarchy) {
6286 + var mat;
6287 + var finalMat = this.finalTransform.mat;
6288 + var i = 0;
6289 + var len = this.hierarchy.length;
6290 + if (!this.finalTransform._matMdf) while (i < len) {
6291 + if (this.hierarchy[i].finalTransform.mProp._mdf) {
6292 + this.finalTransform._matMdf = true;
6293 + break;
6294 + }
6295 + i += 1;
6296 + }
6297 + if (this.finalTransform._matMdf) {
6298 + mat = this.finalTransform.mProp.v.props;
6299 + finalMat.cloneFromProps(mat);
6300 + for (i = 0; i < len; i += 1) finalMat.multiply(this.hierarchy[i].finalTransform.mProp.v);
6301 + }
6302 + }
6303 + if (!this.localTransforms || this.finalTransform._matMdf) this.finalTransform._localMatMdf = this.finalTransform._matMdf;
6304 + if (this.finalTransform._opMdf) this.finalTransform.localOpacity = this.finalTransform.mProp.o.v;
6305 + },
6306 + renderLocalTransform: function renderLocalTransform() {
6307 + if (this.localTransforms) {
6308 + var i = 0;
6309 + var len = this.localTransforms.length;
6310 + this.finalTransform._localMatMdf = this.finalTransform._matMdf;
6311 + if (!this.finalTransform._localMatMdf || !this.finalTransform._opMdf) while (i < len) {
6312 + if (this.localTransforms[i]._mdf) this.finalTransform._localMatMdf = true;
6313 + if (this.localTransforms[i]._opMdf && !this.finalTransform._opMdf) {
6314 + this.finalTransform.localOpacity = this.finalTransform.mProp.o.v;
6315 + this.finalTransform._opMdf = true;
6316 + }
6317 + i += 1;
6318 + }
6319 + if (this.finalTransform._localMatMdf) {
6320 + var localMat = this.finalTransform.localMat;
6321 + this.localTransforms[0].matrix.clone(localMat);
6322 + for (i = 1; i < len; i += 1) {
6323 + var lmat = this.localTransforms[i].matrix;
6324 + localMat.multiply(lmat);
6325 + }
6326 + localMat.multiply(this.finalTransform.mat);
6327 + }
6328 + if (this.finalTransform._opMdf) {
6329 + var localOp = this.finalTransform.localOpacity;
6330 + for (i = 0; i < len; i += 1) localOp *= this.localTransforms[i].opacity * .01;
6331 + this.finalTransform.localOpacity = localOp;
6332 + }
6333 + }
6334 + },
6335 + searchEffectTransforms: function searchEffectTransforms() {
6336 + if (this.renderableEffectsManager) {
6337 + var transformEffects = this.renderableEffectsManager.getEffects(effectTypes.TRANSFORM_EFFECT);
6338 + if (transformEffects.length) {
6339 + this.localTransforms = [];
6340 + this.finalTransform.localMat = new Matrix();
6341 + var i = 0;
6342 + var len = transformEffects.length;
6343 + for (i = 0; i < len; i += 1) this.localTransforms.push(transformEffects[i]);
6344 + }
6345 + }
6346 + },
6347 + globalToLocal: function globalToLocal(pt) {
6348 + var transforms = [];
6349 + transforms.push(this.finalTransform);
6350 + var flag = true;
6351 + var comp = this.comp;
6352 + while (flag) if (comp.finalTransform) {
6353 + if (comp.data.hasMask) transforms.splice(0, 0, comp.finalTransform);
6354 + comp = comp.comp;
6355 + } else flag = false;
6356 + var i;
6357 + var len = transforms.length;
6358 + var ptNew;
6359 + for (i = 0; i < len; i += 1) {
6360 + ptNew = transforms[i].mat.applyToPointArray(0, 0, 0);
6361 + pt = [
6362 + pt[0] - ptNew[0],
6363 + pt[1] - ptNew[1],
6364 + 0
6365 + ];
6366 + }
6367 + return pt;
6368 + },
6369 + mHelper: new Matrix()
6370 + };
6371 + function MaskElement(data, element, globalData) {
6372 + this.data = data;
6373 + this.element = element;
6374 + this.globalData = globalData;
6375 + this.storedData = [];
6376 + this.masksProperties = this.data.masksProperties || [];
6377 + this.maskElement = null;
6378 + var defs = this.globalData.defs;
6379 + var i;
6380 + var len = this.masksProperties ? this.masksProperties.length : 0;
6381 + this.viewData = createSizedArray(len);
6382 + this.solidPath = "";
6383 + var path;
6384 + var properties = this.masksProperties;
6385 + var count = 0;
6386 + var currentMasks = [];
6387 + var j;
6388 + var jLen;
6389 + var layerId = createElementID();
6390 + var rect;
6391 + var expansor;
6392 + var feMorph;
6393 + var x;
6394 + var maskType = "clipPath";
6395 + var maskRef = "clip-path";
6396 + for (i = 0; i < len; i += 1) {
6397 + if (properties[i].mode !== "a" && properties[i].mode !== "n" || properties[i].inv || properties[i].o.k !== 100 || properties[i].o.x) {
6398 + maskType = "mask";
6399 + maskRef = "mask";
6400 + }
6401 + if ((properties[i].mode === "s" || properties[i].mode === "i") && count === 0) {
6402 + rect = createNS("rect");
6403 + rect.setAttribute("fill", "#ffffff");
6404 + rect.setAttribute("width", this.element.comp.data.w || 0);
6405 + rect.setAttribute("height", this.element.comp.data.h || 0);
6406 + currentMasks.push(rect);
6407 + } else rect = null;
6408 + path = createNS("path");
6409 + if (properties[i].mode === "n") {
6410 + this.viewData[i] = {
6411 + op: PropertyFactory.getProp(this.element, properties[i].o, 0, .01, this.element),
6412 + prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),
6413 + elem: path,
6414 + lastPath: ""
6415 + };
6416 + defs.appendChild(path);
6417 + } else {
6418 + count += 1;
6419 + path.setAttribute("fill", properties[i].mode === "s" ? "#000000" : "#ffffff");
6420 + path.setAttribute("clip-rule", "nonzero");
6421 + var filterID;
6422 + if (properties[i].x.k !== 0) {
6423 + maskType = "mask";
6424 + maskRef = "mask";
6425 + x = PropertyFactory.getProp(this.element, properties[i].x, 0, null, this.element);
6426 + filterID = createElementID();
6427 + expansor = createNS("filter");
6428 + expansor.setAttribute("id", filterID);
6429 + feMorph = createNS("feMorphology");
6430 + feMorph.setAttribute("operator", "erode");
6431 + feMorph.setAttribute("in", "SourceGraphic");
6432 + feMorph.setAttribute("radius", "0");
6433 + expansor.appendChild(feMorph);
6434 + defs.appendChild(expansor);
6435 + path.setAttribute("stroke", properties[i].mode === "s" ? "#000000" : "#ffffff");
6436 + } else {
6437 + feMorph = null;
6438 + x = null;
6439 + }
6440 + this.storedData[i] = {
6441 + elem: path,
6442 + x,
6443 + expan: feMorph,
6444 + lastPath: "",
6445 + lastOperator: "",
6446 + filterId: filterID,
6447 + lastRadius: 0
6448 + };
6449 + if (properties[i].mode === "i") {
6450 + jLen = currentMasks.length;
6451 + var g = createNS("g");
6452 + for (j = 0; j < jLen; j += 1) g.appendChild(currentMasks[j]);
6453 + var mask = createNS("mask");
6454 + mask.setAttribute("mask-type", "alpha");
6455 + mask.setAttribute("id", layerId + "_" + count);
6456 + mask.appendChild(path);
6457 + defs.appendChild(mask);
6458 + g.setAttribute("mask", "url(" + getLocationHref() + "#" + layerId + "_" + count + ")");
6459 + currentMasks.length = 0;
6460 + currentMasks.push(g);
6461 + } else currentMasks.push(path);
6462 + if (properties[i].inv && !this.solidPath) this.solidPath = this.createLayerSolidPath();
6463 + this.viewData[i] = {
6464 + elem: path,
6465 + lastPath: "",
6466 + op: PropertyFactory.getProp(this.element, properties[i].o, 0, .01, this.element),
6467 + prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),
6468 + invRect: rect
6469 + };
6470 + if (!this.viewData[i].prop.k) this.drawPath(properties[i], this.viewData[i].prop.v, this.viewData[i]);
6471 + }
6472 + }
6473 + this.maskElement = createNS(maskType);
6474 + len = currentMasks.length;
6475 + for (i = 0; i < len; i += 1) this.maskElement.appendChild(currentMasks[i]);
6476 + if (count > 0) {
6477 + this.maskElement.setAttribute("id", layerId);
6478 + this.element.maskedElement.setAttribute(maskRef, "url(" + getLocationHref() + "#" + layerId + ")");
6479 + defs.appendChild(this.maskElement);
6480 + }
6481 + if (this.viewData.length) this.element.addRenderableComponent(this);
6482 + }
6483 + MaskElement.prototype.getMaskProperty = function(pos) {
6484 + return this.viewData[pos].prop;
6485 + };
6486 + MaskElement.prototype.renderFrame = function(isFirstFrame) {
6487 + var finalMat = this.element.finalTransform.mat;
6488 + var i;
6489 + var len = this.masksProperties.length;
6490 + for (i = 0; i < len; i += 1) {
6491 + if (this.viewData[i].prop._mdf || isFirstFrame) this.drawPath(this.masksProperties[i], this.viewData[i].prop.v, this.viewData[i]);
6492 + if (this.viewData[i].op._mdf || isFirstFrame) this.viewData[i].elem.setAttribute("fill-opacity", this.viewData[i].op.v);
6493 + if (this.masksProperties[i].mode !== "n") {
6494 + if (this.viewData[i].invRect && (this.element.finalTransform.mProp._mdf || isFirstFrame)) this.viewData[i].invRect.setAttribute("transform", finalMat.getInverseMatrix().to2dCSS());
6495 + if (this.storedData[i].x && (this.storedData[i].x._mdf || isFirstFrame)) {
6496 + var feMorph = this.storedData[i].expan;
6497 + if (this.storedData[i].x.v < 0) {
6498 + if (this.storedData[i].lastOperator !== "erode") {
6499 + this.storedData[i].lastOperator = "erode";
6500 + this.storedData[i].elem.setAttribute("filter", "url(" + getLocationHref() + "#" + this.storedData[i].filterId + ")");
6501 + }
6502 + feMorph.setAttribute("radius", -this.storedData[i].x.v);
6503 + } else {
6504 + if (this.storedData[i].lastOperator !== "dilate") {
6505 + this.storedData[i].lastOperator = "dilate";
6506 + this.storedData[i].elem.setAttribute("filter", null);
6507 + }
6508 + this.storedData[i].elem.setAttribute("stroke-width", this.storedData[i].x.v * 2);
6509 + }
6510 + }
6511 + }
6512 + }
6513 + };
6514 + MaskElement.prototype.getMaskelement = function() {
6515 + return this.maskElement;
6516 + };
6517 + MaskElement.prototype.createLayerSolidPath = function() {
6518 + var path = "M0,0 ";
6519 + path += " h" + this.globalData.compSize.w;
6520 + path += " v" + this.globalData.compSize.h;
6521 + path += " h-" + this.globalData.compSize.w;
6522 + path += " v-" + this.globalData.compSize.h + " ";
6523 + return path;
6524 + };
6525 + MaskElement.prototype.drawPath = function(pathData, pathNodes, viewData) {
6526 + var pathString = " M" + pathNodes.v[0][0] + "," + pathNodes.v[0][1];
6527 + var i;
6528 + var len = pathNodes._length;
6529 + for (i = 1; i < len; i += 1) 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];
6530 + if (pathNodes.c && len > 1) 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];
6531 + if (viewData.lastPath !== pathString) {
6532 + var pathShapeValue = "";
6533 + if (viewData.elem) {
6534 + if (pathNodes.c) pathShapeValue = pathData.inv ? this.solidPath + pathString : pathString;
6535 + viewData.elem.setAttribute("d", pathShapeValue);
6536 + }
6537 + viewData.lastPath = pathString;
6538 + }
6539 + };
6540 + MaskElement.prototype.destroy = function() {
6541 + this.element = null;
6542 + this.globalData = null;
6543 + this.maskElement = null;
6544 + this.data = null;
6545 + this.masksProperties = null;
6546 + };
6547 + var filtersFactory = function() {
6548 + var ob = {};
6549 + ob.createFilter = createFilter;
6550 + ob.createAlphaToLuminanceFilter = createAlphaToLuminanceFilter;
6551 + function createFilter(filId, skipCoordinates) {
6552 + var fil = createNS("filter");
6553 + fil.setAttribute("id", filId);
6554 + if (skipCoordinates !== true) {
6555 + fil.setAttribute("filterUnits", "objectBoundingBox");
6556 + fil.setAttribute("x", "0%");
6557 + fil.setAttribute("y", "0%");
6558 + fil.setAttribute("width", "100%");
6559 + fil.setAttribute("height", "100%");
6560 + }
6561 + return fil;
6562 + }
6563 + function createAlphaToLuminanceFilter() {
6564 + var feColorMatrix = createNS("feColorMatrix");
6565 + feColorMatrix.setAttribute("type", "matrix");
6566 + feColorMatrix.setAttribute("color-interpolation-filters", "sRGB");
6567 + feColorMatrix.setAttribute("values", "0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1");
6568 + return feColorMatrix;
6569 + }
6570 + return ob;
6571 + }();
6572 + var featureSupport = function() {
6573 + var ob = {
6574 + maskType: true,
6575 + svgLumaHidden: true,
6576 + offscreenCanvas: typeof OffscreenCanvas !== "undefined"
6577 + };
6578 + 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)) ob.maskType = false;
6579 + if (/firefox/i.test(navigator.userAgent)) ob.svgLumaHidden = false;
6580 + return ob;
6581 + }();
6582 + var registeredEffects$1 = {};
6583 + var idPrefix = "filter_result_";
6584 + function SVGEffects(elem) {
6585 + var i;
6586 + var source = "SourceGraphic";
6587 + var len = elem.data.ef ? elem.data.ef.length : 0;
6588 + var filId = createElementID();
6589 + var fil = filtersFactory.createFilter(filId, true);
6590 + var count = 0;
6591 + this.filters = [];
6592 + var filterManager;
6593 + for (i = 0; i < len; i += 1) {
6594 + filterManager = null;
6595 + var type = elem.data.ef[i].ty;
6596 + if (registeredEffects$1[type]) {
6597 + var Effect = registeredEffects$1[type].effect;
6598 + filterManager = new Effect(fil, elem.effectsManager.effectElements[i], elem, idPrefix + count, source);
6599 + source = idPrefix + count;
6600 + if (registeredEffects$1[type].countsAsEffect) count += 1;
6601 + }
6602 + if (filterManager) this.filters.push(filterManager);
6603 + }
6604 + if (count) {
6605 + elem.globalData.defs.appendChild(fil);
6606 + elem.layerElement.setAttribute("filter", "url(" + getLocationHref() + "#" + filId + ")");
6607 + }
6608 + if (this.filters.length) elem.addRenderableComponent(this);
6609 + }
6610 + SVGEffects.prototype.renderFrame = function(_isFirstFrame) {
6611 + var i;
6612 + var len = this.filters.length;
6613 + for (i = 0; i < len; i += 1) this.filters[i].renderFrame(_isFirstFrame);
6614 + };
6615 + SVGEffects.prototype.getEffects = function(type) {
6616 + var i;
6617 + var len = this.filters.length;
6618 + var effects = [];
6619 + for (i = 0; i < len; i += 1) if (this.filters[i].type === type) effects.push(this.filters[i]);
6620 + return effects;
6621 + };
6622 + function registerEffect$1(id, effect, countsAsEffect) {
6623 + registeredEffects$1[id] = {
6624 + effect,
6625 + countsAsEffect
6626 + };
6627 + }
6628 + function SVGBaseElement() {}
6629 + SVGBaseElement.prototype = {
6630 + initRendererElement: function initRendererElement() {
6631 + this.layerElement = createNS("g");
6632 + },
6633 + createContainerElements: function createContainerElements() {
6634 + this.matteElement = createNS("g");
6635 + this.transformedElement = this.layerElement;
6636 + this.maskedElement = this.layerElement;
6637 + this._sizeChanged = false;
6638 + var layerElementParent = null;
6639 + if (this.data.td) {
6640 + this.matteMasks = {};
6641 + var gg = createNS("g");
6642 + gg.setAttribute("id", this.layerId);
6643 + gg.appendChild(this.layerElement);
6644 + layerElementParent = gg;
6645 + this.globalData.defs.appendChild(gg);
6646 + } else if (this.data.tt) {
6647 + this.matteElement.appendChild(this.layerElement);
6648 + layerElementParent = this.matteElement;
6649 + this.baseElement = this.matteElement;
6650 + } else this.baseElement = this.layerElement;
6651 + if (this.data.ln) this.layerElement.setAttribute("id", this.data.ln);
6652 + if (this.data.cl) this.layerElement.setAttribute("class", this.data.cl);
6653 + if (this.data.ty === 0 && !this.data.hd) {
6654 + var cp = createNS("clipPath");
6655 + var pt = createNS("path");
6656 + pt.setAttribute("d", "M0,0 L" + this.data.w + ",0 L" + this.data.w + "," + this.data.h + " L0," + this.data.h + "z");
6657 + var clipId = createElementID();
6658 + cp.setAttribute("id", clipId);
6659 + cp.appendChild(pt);
6660 + this.globalData.defs.appendChild(cp);
6661 + if (this.checkMasks()) {
6662 + var cpGroup = createNS("g");
6663 + cpGroup.setAttribute("clip-path", "url(" + getLocationHref() + "#" + clipId + ")");
6664 + cpGroup.appendChild(this.layerElement);
6665 + this.transformedElement = cpGroup;
6666 + if (layerElementParent) layerElementParent.appendChild(this.transformedElement);
6667 + else this.baseElement = this.transformedElement;
6668 + } else this.layerElement.setAttribute("clip-path", "url(" + getLocationHref() + "#" + clipId + ")");
6669 + }
6670 + if (this.data.bm !== 0) this.setBlendMode();
6671 + },
6672 + renderElement: function renderElement() {
6673 + if (this.finalTransform._localMatMdf) this.transformedElement.setAttribute("transform", this.finalTransform.localMat.to2dCSS());
6674 + if (this.finalTransform._opMdf) this.transformedElement.setAttribute("opacity", this.finalTransform.localOpacity);
6675 + },
6676 + destroyBaseElement: function destroyBaseElement() {
6677 + this.layerElement = null;
6678 + this.matteElement = null;
6679 + this.maskManager.destroy();
6680 + },
6681 + getBaseElement: function getBaseElement() {
6682 + if (this.data.hd) return null;
6683 + return this.baseElement;
6684 + },
6685 + createRenderableComponents: function createRenderableComponents() {
6686 + this.maskManager = new MaskElement(this.data, this, this.globalData);
6687 + this.renderableEffectsManager = new SVGEffects(this);
6688 + this.searchEffectTransforms();
6689 + },
6690 + getMatte: function getMatte(matteType) {
6691 + if (!this.matteMasks) this.matteMasks = {};
6692 + if (!this.matteMasks[matteType]) {
6693 + var id = this.layerId + "_" + matteType;
6694 + var filId;
6695 + var fil;
6696 + var useElement;
6697 + var gg;
6698 + if (matteType === 1 || matteType === 3) {
6699 + var masker = createNS("mask");
6700 + masker.setAttribute("id", id);
6701 + masker.setAttribute("mask-type", matteType === 3 ? "luminance" : "alpha");
6702 + useElement = createNS("use");
6703 + useElement.setAttributeNS("http://www.w3.org/1999/xlink", "href", "#" + this.layerId);
6704 + masker.appendChild(useElement);
6705 + this.globalData.defs.appendChild(masker);
6706 + if (!featureSupport.maskType && matteType === 1) {
6707 + masker.setAttribute("mask-type", "luminance");
6708 + filId = createElementID();
6709 + fil = filtersFactory.createFilter(filId);
6710 + this.globalData.defs.appendChild(fil);
6711 + fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());
6712 + gg = createNS("g");
6713 + gg.appendChild(useElement);
6714 + masker.appendChild(gg);
6715 + gg.setAttribute("filter", "url(" + getLocationHref() + "#" + filId + ")");
6716 + }
6717 + } else if (matteType === 2) {
6718 + var maskGroup = createNS("mask");
6719 + maskGroup.setAttribute("id", id);
6720 + maskGroup.setAttribute("mask-type", "alpha");
6721 + var maskGrouper = createNS("g");
6722 + maskGroup.appendChild(maskGrouper);
6723 + filId = createElementID();
6724 + fil = filtersFactory.createFilter(filId);
6725 + var feCTr = createNS("feComponentTransfer");
6726 + feCTr.setAttribute("in", "SourceGraphic");
6727 + fil.appendChild(feCTr);
6728 + var feFunc = createNS("feFuncA");
6729 + feFunc.setAttribute("type", "table");
6730 + feFunc.setAttribute("tableValues", "1.0 0.0");
6731 + feCTr.appendChild(feFunc);
6732 + this.globalData.defs.appendChild(fil);
6733 + var alphaRect = createNS("rect");
6734 + alphaRect.setAttribute("width", this.comp.data.w);
6735 + alphaRect.setAttribute("height", this.comp.data.h);
6736 + alphaRect.setAttribute("x", "0");
6737 + alphaRect.setAttribute("y", "0");
6738 + alphaRect.setAttribute("fill", "#ffffff");
6739 + alphaRect.setAttribute("opacity", "0");
6740 + maskGrouper.setAttribute("filter", "url(" + getLocationHref() + "#" + filId + ")");
6741 + maskGrouper.appendChild(alphaRect);
6742 + useElement = createNS("use");
6743 + useElement.setAttributeNS("http://www.w3.org/1999/xlink", "href", "#" + this.layerId);
6744 + maskGrouper.appendChild(useElement);
6745 + if (!featureSupport.maskType) {
6746 + maskGroup.setAttribute("mask-type", "luminance");
6747 + fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());
6748 + gg = createNS("g");
6749 + maskGrouper.appendChild(alphaRect);
6750 + gg.appendChild(this.layerElement);
6751 + maskGrouper.appendChild(gg);
6752 + }
6753 + this.globalData.defs.appendChild(maskGroup);
6754 + }
6755 + this.matteMasks[matteType] = id;
6756 + }
6757 + return this.matteMasks[matteType];
6758 + },
6759 + setMatte: function setMatte(id) {
6760 + if (!this.matteElement) return;
6761 + this.matteElement.setAttribute("mask", "url(" + getLocationHref() + "#" + id + ")");
6762 + }
6763 + };
6764 + /**
6765 + * @file
6766 + * Handles AE's layer parenting property.
6767 + *
6768 + */
6769 + function HierarchyElement() {}
6770 + HierarchyElement.prototype = {
6771 + /**
6772 + * @function
6773 + * Initializes hierarchy properties
6774 + *
6775 + */
6776 + initHierarchy: function initHierarchy() {
6777 + this.hierarchy = [];
6778 + this._isParent = false;
6779 + this.checkParenting();
6780 + },
6781 + /**
6782 + * @function
6783 + * Sets layer's hierarchy.
6784 + * @param {array} hierarch
6785 + * layer's parent list
6786 + *
6787 + */
6788 + setHierarchy: function setHierarchy(hierarchy) {
6789 + this.hierarchy = hierarchy;
6790 + },
6791 + /**
6792 + * @function
6793 + * Sets layer as parent.
6794 + *
6795 + */
6796 + setAsParent: function setAsParent() {
6797 + this._isParent = true;
6798 + },
6799 + /**
6800 + * @function
6801 + * Searches layer's parenting chain
6802 + *
6803 + */
6804 + checkParenting: function checkParenting() {
6805 + if (this.data.parent !== void 0) this.comp.buildElementParenting(this, this.data.parent, []);
6806 + }
6807 + };
6808 + function RenderableDOMElement() {}
6809 + (function() {
6810 + extendPrototype([RenderableElement, createProxyFunction({
6811 + initElement: function initElement(data, globalData, comp) {
6812 + this.initFrame();
6813 + this.initBaseData(data, globalData, comp);
6814 + this.initTransform(data, globalData, comp);
6815 + this.initHierarchy();
6816 + this.initRenderable();
6817 + this.initRendererElement();
6818 + this.createContainerElements();
6819 + this.createRenderableComponents();
6820 + this.createContent();
6821 + this.hide();
6822 + },
6823 + hide: function hide() {
6824 + if (!this.hidden && (!this.isInRange || this.isTransparent)) {
6825 + var elem = this.baseElement || this.layerElement;
6826 + elem.style.display = "none";
6827 + this.hidden = true;
6828 + }
6829 + },
6830 + show: function show() {
6831 + if (this.isInRange && !this.isTransparent) {
6832 + if (!this.data.hd) {
6833 + var elem = this.baseElement || this.layerElement;
6834 + elem.style.display = "block";
6835 + }
6836 + this.hidden = false;
6837 + this._isFirstFrame = true;
6838 + }
6839 + },
6840 + renderFrame: function renderFrame() {
6841 + if (this.data.hd || this.hidden) return;
6842 + this.renderTransform();
6843 + this.renderRenderable();
6844 + this.renderLocalTransform();
6845 + this.renderElement();
6846 + this.renderInnerContent();
6847 + if (this._isFirstFrame) this._isFirstFrame = false;
6848 + },
6849 + renderInnerContent: function renderInnerContent() {},
6850 + prepareFrame: function prepareFrame(num) {
6851 + this._mdf = false;
6852 + this.prepareRenderableFrame(num);
6853 + this.prepareProperties(num, this.isInRange);
6854 + this.checkTransparency();
6855 + },
6856 + destroy: function destroy() {
6857 + this.innerElem = null;
6858 + this.destroyBaseElement();
6859 + }
6860 + })], RenderableDOMElement);
6861 + })();
6862 + function IImageElement(data, globalData, comp) {
6863 + this.assetData = globalData.getAssetData(data.refId);
6864 + if (this.assetData && this.assetData.sid) this.assetData = globalData.slotManager.getProp(this.assetData);
6865 + this.initElement(data, globalData, comp);
6866 + this.sourceRect = {
6867 + top: 0,
6868 + left: 0,
6869 + width: this.assetData.w,
6870 + height: this.assetData.h
6871 + };
6872 + }
6873 + extendPrototype([
6874 + BaseElement,
6875 + TransformElement,
6876 + SVGBaseElement,
6877 + HierarchyElement,
6878 + FrameElement,
6879 + RenderableDOMElement
6880 + ], IImageElement);
6881 + IImageElement.prototype.createContent = function() {
6882 + var assetPath = this.globalData.getAssetsPath(this.assetData);
6883 + this.innerElem = createNS("image");
6884 + this.innerElem.setAttribute("width", this.assetData.w + "px");
6885 + this.innerElem.setAttribute("height", this.assetData.h + "px");
6886 + this.innerElem.setAttribute("preserveAspectRatio", this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio);
6887 + this.innerElem.setAttributeNS("http://www.w3.org/1999/xlink", "href", assetPath);
6888 + this.layerElement.appendChild(this.innerElem);
6889 + };
6890 + IImageElement.prototype.sourceRectAtTime = function() {
6891 + return this.sourceRect;
6892 + };
6893 + function ProcessedElement(element, position) {
6894 + this.elem = element;
6895 + this.pos = position;
6896 + }
6897 + function IShapeElement() {}
6898 + IShapeElement.prototype = {
6899 + addShapeToModifiers: function addShapeToModifiers(data) {
6900 + var i;
6901 + var len = this.shapeModifiers.length;
6902 + for (i = 0; i < len; i += 1) this.shapeModifiers[i].addShape(data);
6903 + },
6904 + isShapeInAnimatedModifiers: function isShapeInAnimatedModifiers(data) {
6905 + var i = 0;
6906 + var len = this.shapeModifiers.length;
6907 + while (i < len) if (this.shapeModifiers[i].isAnimatedWithShape(data)) return true;
6908 + return false;
6909 + },
6910 + renderModifiers: function renderModifiers() {
6911 + if (!this.shapeModifiers.length) return;
6912 + var i;
6913 + var len = this.shapes.length;
6914 + for (i = 0; i < len; i += 1) this.shapes[i].sh.reset();
6915 + len = this.shapeModifiers.length;
6916 + var shouldBreakProcess;
6917 + for (i = len - 1; i >= 0; i -= 1) {
6918 + shouldBreakProcess = this.shapeModifiers[i].processShapes(this._isFirstFrame);
6919 + if (shouldBreakProcess) break;
6920 + }
6921 + },
6922 + searchProcessedElement: function searchProcessedElement(elem) {
6923 + var elements = this.processedElements;
6924 + var i = 0;
6925 + var len = elements.length;
6926 + while (i < len) {
6927 + if (elements[i].elem === elem) return elements[i].pos;
6928 + i += 1;
6929 + }
6930 + return 0;
6931 + },
6932 + addProcessedElement: function addProcessedElement(elem, pos) {
6933 + var elements = this.processedElements;
6934 + var i = elements.length;
6935 + while (i) {
6936 + i -= 1;
6937 + if (elements[i].elem === elem) {
6938 + elements[i].pos = pos;
6939 + return;
6940 + }
6941 + }
6942 + elements.push(new ProcessedElement(elem, pos));
6943 + },
6944 + prepareFrame: function prepareFrame(num) {
6945 + this.prepareRenderableFrame(num);
6946 + this.prepareProperties(num, this.isInRange);
6947 + }
6948 + };
6949 + var lineCapEnum = {
6950 + 1: "butt",
6951 + 2: "round",
6952 + 3: "square"
6953 + };
6954 + var lineJoinEnum = {
6955 + 1: "miter",
6956 + 2: "round",
6957 + 3: "bevel"
6958 + };
6959 + function SVGShapeData(transformers, level, shape) {
6960 + this.caches = [];
6961 + this.styles = [];
6962 + this.transformers = transformers;
6963 + this.lStr = "";
6964 + this.sh = shape;
6965 + this.lvl = level;
6966 + this._isAnimated = !!shape.k;
6967 + var i = 0;
6968 + var len = transformers.length;
6969 + while (i < len) {
6970 + if (transformers[i].mProps.dynamicProperties.length) {
6971 + this._isAnimated = true;
6972 + break;
6973 + }
6974 + i += 1;
6975 + }
6976 + }
6977 + SVGShapeData.prototype.setAsAnimated = function() {
6978 + this._isAnimated = true;
6979 + };
6980 + function SVGStyleData(data, level) {
6981 + this.data = data;
6982 + this.type = data.ty;
6983 + this.d = "";
6984 + this.lvl = level;
6985 + this._mdf = false;
6986 + this.closed = data.hd === true;
6987 + this.pElem = createNS("path");
6988 + this.msElem = null;
6989 + }
6990 + SVGStyleData.prototype.reset = function() {
6991 + this.d = "";
6992 + this._mdf = false;
6993 + };
6994 + function DashProperty(elem, data, renderer, container) {
6995 + this.elem = elem;
6996 + this.frameId = -1;
6997 + this.dataProps = createSizedArray(data.length);
6998 + this.renderer = renderer;
6999 + this.k = false;
7000 + this.dashStr = "";
7001 + this.dashArray = createTypedArray("float32", data.length ? data.length - 1 : 0);
7002 + this.dashoffset = createTypedArray("float32", 1);
7003 + this.initDynamicPropertyContainer(container);
7004 + var i;
7005 + var len = data.length || 0;
7006 + var prop;
7007 + for (i = 0; i < len; i += 1) {
7008 + prop = PropertyFactory.getProp(elem, data[i].v, 0, 0, this);
7009 + this.k = prop.k || this.k;
7010 + this.dataProps[i] = {
7011 + n: data[i].n,
7012 + p: prop
7013 + };
7014 + }
7015 + if (!this.k) this.getValue(true);
7016 + this._isAnimated = this.k;
7017 + }
7018 + DashProperty.prototype.getValue = function(forceRender) {
7019 + if (this.elem.globalData.frameId === this.frameId && !forceRender) return;
7020 + this.frameId = this.elem.globalData.frameId;
7021 + this.iterateDynamicProperties();
7022 + this._mdf = this._mdf || forceRender;
7023 + if (this._mdf) {
7024 + var i = 0;
7025 + var len = this.dataProps.length;
7026 + if (this.renderer === "svg") this.dashStr = "";
7027 + for (i = 0; i < len; i += 1) if (this.dataProps[i].n !== "o") if (this.renderer === "svg") this.dashStr += " " + this.dataProps[i].p.v;
7028 + else this.dashArray[i] = this.dataProps[i].p.v;
7029 + else this.dashoffset[0] = this.dataProps[i].p.v;
7030 + }
7031 + };
7032 + extendPrototype([DynamicPropertyContainer], DashProperty);
7033 + function SVGStrokeStyleData(elem, data, styleOb) {
7034 + this.initDynamicPropertyContainer(elem);
7035 + this.getValue = this.iterateDynamicProperties;
7036 + this.o = PropertyFactory.getProp(elem, data.o, 0, .01, this);
7037 + this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);
7038 + this.d = new DashProperty(elem, data.d || {}, "svg", this);
7039 + this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);
7040 + this.style = styleOb;
7041 + this._isAnimated = !!this._isAnimated;
7042 + }
7043 + extendPrototype([DynamicPropertyContainer], SVGStrokeStyleData);
7044 + function SVGFillStyleData(elem, data, styleOb) {
7045 + this.initDynamicPropertyContainer(elem);
7046 + this.getValue = this.iterateDynamicProperties;
7047 + this.o = PropertyFactory.getProp(elem, data.o, 0, .01, this);
7048 + this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);
7049 + this.style = styleOb;
7050 + }
7051 + extendPrototype([DynamicPropertyContainer], SVGFillStyleData);
7052 + function SVGNoStyleData(elem, data, styleOb) {
7053 + this.initDynamicPropertyContainer(elem);
7054 + this.getValue = this.iterateDynamicProperties;
7055 + this.style = styleOb;
7056 + }
7057 + extendPrototype([DynamicPropertyContainer], SVGNoStyleData);
7058 + function GradientProperty(elem, data, container) {
7059 + this.data = data;
7060 + this.c = createTypedArray("uint8c", data.p * 4);
7061 + var cLength = data.k.k[0].s ? data.k.k[0].s.length - data.p * 4 : data.k.k.length - data.p * 4;
7062 + this.o = createTypedArray("float32", cLength);
7063 + this._cmdf = false;
7064 + this._omdf = false;
7065 + this._collapsable = this.checkCollapsable();
7066 + this._hasOpacity = cLength;
7067 + this.initDynamicPropertyContainer(container);
7068 + this.prop = PropertyFactory.getProp(elem, data.k, 1, null, this);
7069 + this.k = this.prop.k;
7070 + this.getValue(true);
7071 + }
7072 + GradientProperty.prototype.comparePoints = function(values, points) {
7073 + var i = 0;
7074 + var len = this.o.length / 2;
7075 + var diff;
7076 + while (i < len) {
7077 + diff = Math.abs(values[i * 4] - values[points * 4 + i * 2]);
7078 + if (diff > .01) return false;
7079 + i += 1;
7080 + }
7081 + return true;
7082 + };
7083 + GradientProperty.prototype.checkCollapsable = function() {
7084 + if (this.o.length / 2 !== this.c.length / 4) return false;
7085 + if (this.data.k.k[0].s) {
7086 + var i = 0;
7087 + var len = this.data.k.k.length;
7088 + while (i < len) {
7089 + if (!this.comparePoints(this.data.k.k[i].s, this.data.p)) return false;
7090 + i += 1;
7091 + }
7092 + } else if (!this.comparePoints(this.data.k.k, this.data.p)) return false;
7093 + return true;
7094 + };
7095 + GradientProperty.prototype.getValue = function(forceRender) {
7096 + this.prop.getValue();
7097 + this._mdf = false;
7098 + this._cmdf = false;
7099 + this._omdf = false;
7100 + if (this.prop._mdf || forceRender) {
7101 + var i;
7102 + var len = this.data.p * 4;
7103 + var mult;
7104 + var val;
7105 + for (i = 0; i < len; i += 1) {
7106 + mult = i % 4 === 0 ? 100 : 255;
7107 + val = Math.round(this.prop.v[i] * mult);
7108 + if (this.c[i] !== val) {
7109 + this.c[i] = val;
7110 + this._cmdf = !forceRender;
7111 + }
7112 + }
7113 + if (this.o.length) {
7114 + len = this.prop.v.length;
7115 + for (i = this.data.p * 4; i < len; i += 1) {
7116 + mult = i % 2 === 0 ? 100 : 1;
7117 + val = i % 2 === 0 ? Math.round(this.prop.v[i] * 100) : this.prop.v[i];
7118 + if (this.o[i - this.data.p * 4] !== val) {
7119 + this.o[i - this.data.p * 4] = val;
7120 + this._omdf = !forceRender;
7121 + }
7122 + }
7123 + }
7124 + this._mdf = !forceRender;
7125 + }
7126 + };
7127 + extendPrototype([DynamicPropertyContainer], GradientProperty);
7128 + function SVGGradientFillStyleData(elem, data, styleOb) {
7129 + this.initDynamicPropertyContainer(elem);
7130 + this.getValue = this.iterateDynamicProperties;
7131 + this.initGradientData(elem, data, styleOb);
7132 + }
7133 + SVGGradientFillStyleData.prototype.initGradientData = function(elem, data, styleOb) {
7134 + this.o = PropertyFactory.getProp(elem, data.o, 0, .01, this);
7135 + this.s = PropertyFactory.getProp(elem, data.s, 1, null, this);
7136 + this.e = PropertyFactory.getProp(elem, data.e, 1, null, this);
7137 + this.h = PropertyFactory.getProp(elem, data.h || { k: 0 }, 0, .01, this);
7138 + this.a = PropertyFactory.getProp(elem, data.a || { k: 0 }, 0, degToRads, this);
7139 + this.g = new GradientProperty(elem, data.g, this);
7140 + this.style = styleOb;
7141 + this.stops = [];
7142 + this.setGradientData(styleOb.pElem, data);
7143 + this.setGradientOpacity(data, styleOb);
7144 + this._isAnimated = !!this._isAnimated;
7145 + };
7146 + SVGGradientFillStyleData.prototype.setGradientData = function(pathElement, data) {
7147 + var gradientId = createElementID();
7148 + var gfill = createNS(data.t === 1 ? "linearGradient" : "radialGradient");
7149 + gfill.setAttribute("id", gradientId);
7150 + gfill.setAttribute("spreadMethod", "pad");
7151 + gfill.setAttribute("gradientUnits", "userSpaceOnUse");
7152 + var stops = [];
7153 + var stop;
7154 + var j;
7155 + var jLen = data.g.p * 4;
7156 + for (j = 0; j < jLen; j += 4) {
7157 + stop = createNS("stop");
7158 + gfill.appendChild(stop);
7159 + stops.push(stop);
7160 + }
7161 + pathElement.setAttribute(data.ty === "gf" ? "fill" : "stroke", "url(" + getLocationHref() + "#" + gradientId + ")");
7162 + this.gf = gfill;
7163 + this.cst = stops;
7164 + };
7165 + SVGGradientFillStyleData.prototype.setGradientOpacity = function(data, styleOb) {
7166 + if (this.g._hasOpacity && !this.g._collapsable) {
7167 + var stop;
7168 + var j;
7169 + var jLen;
7170 + var mask = createNS("mask");
7171 + var maskElement = createNS("path");
7172 + mask.appendChild(maskElement);
7173 + var opacityId = createElementID();
7174 + var maskId = createElementID();
7175 + mask.setAttribute("id", maskId);
7176 + var opFill = createNS(data.t === 1 ? "linearGradient" : "radialGradient");
7177 + opFill.setAttribute("id", opacityId);
7178 + opFill.setAttribute("spreadMethod", "pad");
7179 + opFill.setAttribute("gradientUnits", "userSpaceOnUse");
7180 + jLen = data.g.k.k[0].s ? data.g.k.k[0].s.length : data.g.k.k.length;
7181 + var stops = this.stops;
7182 + for (j = data.g.p * 4; j < jLen; j += 2) {
7183 + stop = createNS("stop");
7184 + stop.setAttribute("stop-color", "rgb(255,255,255)");
7185 + opFill.appendChild(stop);
7186 + stops.push(stop);
7187 + }
7188 + maskElement.setAttribute(data.ty === "gf" ? "fill" : "stroke", "url(" + getLocationHref() + "#" + opacityId + ")");
7189 + if (data.ty === "gs") {
7190 + maskElement.setAttribute("stroke-linecap", lineCapEnum[data.lc || 2]);
7191 + maskElement.setAttribute("stroke-linejoin", lineJoinEnum[data.lj || 2]);
7192 + if (data.lj === 1) maskElement.setAttribute("stroke-miterlimit", data.ml);
7193 + }
7194 + this.of = opFill;
7195 + this.ms = mask;
7196 + this.ost = stops;
7197 + this.maskId = maskId;
7198 + styleOb.msElem = maskElement;
7199 + }
7200 + };
7201 + extendPrototype([DynamicPropertyContainer], SVGGradientFillStyleData);
7202 + function SVGGradientStrokeStyleData(elem, data, styleOb) {
7203 + this.initDynamicPropertyContainer(elem);
7204 + this.getValue = this.iterateDynamicProperties;
7205 + this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);
7206 + this.d = new DashProperty(elem, data.d || {}, "svg", this);
7207 + this.initGradientData(elem, data, styleOb);
7208 + this._isAnimated = !!this._isAnimated;
7209 + }
7210 + extendPrototype([SVGGradientFillStyleData, DynamicPropertyContainer], SVGGradientStrokeStyleData);
7211 + function ShapeGroupData() {
7212 + this.it = [];
7213 + this.prevViewData = [];
7214 + this.gr = createNS("g");
7215 + }
7216 + function SVGTransformData(mProps, op, container) {
7217 + this.transform = {
7218 + mProps,
7219 + op,
7220 + container
7221 + };
7222 + this.elements = [];
7223 + this._isAnimated = this.transform.mProps.dynamicProperties.length || this.transform.op.effectsSequence.length;
7224 + }
7225 + var buildShapeString = function buildShapeString(pathNodes, length, closed, mat) {
7226 + if (length === 0) return "";
7227 + var _o = pathNodes.o;
7228 + var _i = pathNodes.i;
7229 + var _v = pathNodes.v;
7230 + var i;
7231 + var shapeString = " M" + mat.applyToPointStringified(_v[0][0], _v[0][1]);
7232 + for (i = 1; i < length; i += 1) 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]);
7233 + if (closed && length) {
7234 + 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]);
7235 + shapeString += "z";
7236 + }
7237 + return shapeString;
7238 + };
7239 + var SVGElementsRenderer = function() {
7240 + var _identityMatrix = new Matrix();
7241 + var _matrixHelper = new Matrix();
7242 + var ob = { createRenderFunction };
7243 + function createRenderFunction(data) {
7244 + switch (data.ty) {
7245 + case "fl": return renderFill;
7246 + case "gf": return renderGradient;
7247 + case "gs": return renderGradientStroke;
7248 + case "st": return renderStroke;
7249 + case "sh":
7250 + case "el":
7251 + case "rc":
7252 + case "sr": return renderPath;
7253 + case "tr": return renderContentTransform;
7254 + case "no": return renderNoop;
7255 + default: return null;
7256 + }
7257 + }
7258 + function renderContentTransform(styleData, itemData, isFirstFrame) {
7259 + if (isFirstFrame || itemData.transform.op._mdf) itemData.transform.container.setAttribute("opacity", itemData.transform.op.v);
7260 + if (isFirstFrame || itemData.transform.mProps._mdf) itemData.transform.container.setAttribute("transform", itemData.transform.mProps.v.to2dCSS());
7261 + }
7262 + function renderNoop() {}
7263 + function renderPath(styleData, itemData, isFirstFrame) {
7264 + var j;
7265 + var jLen;
7266 + var pathStringTransformed;
7267 + var redraw;
7268 + var pathNodes;
7269 + var l;
7270 + var lLen = itemData.styles.length;
7271 + var lvl = itemData.lvl;
7272 + var paths;
7273 + var mat;
7274 + var iterations;
7275 + var k;
7276 + for (l = 0; l < lLen; l += 1) {
7277 + redraw = itemData.sh._mdf || isFirstFrame;
7278 + if (itemData.styles[l].lvl < lvl) {
7279 + mat = _matrixHelper.reset();
7280 + iterations = lvl - itemData.styles[l].lvl;
7281 + k = itemData.transformers.length - 1;
7282 + while (!redraw && iterations > 0) {
7283 + redraw = itemData.transformers[k].mProps._mdf || redraw;
7284 + iterations -= 1;
7285 + k -= 1;
7286 + }
7287 + if (redraw) {
7288 + iterations = lvl - itemData.styles[l].lvl;
7289 + k = itemData.transformers.length - 1;
7290 + while (iterations > 0) {
7291 + mat.multiply(itemData.transformers[k].mProps.v);
7292 + iterations -= 1;
7293 + k -= 1;
7294 + }
7295 + }
7296 + } else mat = _identityMatrix;
7297 + paths = itemData.sh.paths;
7298 + jLen = paths._length;
7299 + if (redraw) {
7300 + pathStringTransformed = "";
7301 + for (j = 0; j < jLen; j += 1) {
7302 + pathNodes = paths.shapes[j];
7303 + if (pathNodes && pathNodes._length) pathStringTransformed += buildShapeString(pathNodes, pathNodes._length, pathNodes.c, mat);
7304 + }
7305 + itemData.caches[l] = pathStringTransformed;
7306 + } else pathStringTransformed = itemData.caches[l];
7307 + itemData.styles[l].d += styleData.hd === true ? "" : pathStringTransformed;
7308 + itemData.styles[l]._mdf = redraw || itemData.styles[l]._mdf;
7309 + }
7310 + }
7311 + function renderFill(styleData, itemData, isFirstFrame) {
7312 + var styleElem = itemData.style;
7313 + if (itemData.c._mdf || isFirstFrame) styleElem.pElem.setAttribute("fill", "rgb(" + bmFloor(itemData.c.v[0]) + "," + bmFloor(itemData.c.v[1]) + "," + bmFloor(itemData.c.v[2]) + ")");
7314 + if (itemData.o._mdf || isFirstFrame) styleElem.pElem.setAttribute("fill-opacity", itemData.o.v);
7315 + }
7316 + function renderGradientStroke(styleData, itemData, isFirstFrame) {
7317 + renderGradient(styleData, itemData, isFirstFrame);
7318 + renderStroke(styleData, itemData, isFirstFrame);
7319 + }
7320 + function renderGradient(styleData, itemData, isFirstFrame) {
7321 + var gfill = itemData.gf;
7322 + var hasOpacity = itemData.g._hasOpacity;
7323 + var pt1 = itemData.s.v;
7324 + var pt2 = itemData.e.v;
7325 + if (itemData.o._mdf || isFirstFrame) {
7326 + var attr = styleData.ty === "gf" ? "fill-opacity" : "stroke-opacity";
7327 + itemData.style.pElem.setAttribute(attr, itemData.o.v);
7328 + }
7329 + if (itemData.s._mdf || isFirstFrame) {
7330 + var attr1 = styleData.t === 1 ? "x1" : "cx";
7331 + var attr2 = attr1 === "x1" ? "y1" : "cy";
7332 + gfill.setAttribute(attr1, pt1[0]);
7333 + gfill.setAttribute(attr2, pt1[1]);
7334 + if (hasOpacity && !itemData.g._collapsable) {
7335 + itemData.of.setAttribute(attr1, pt1[0]);
7336 + itemData.of.setAttribute(attr2, pt1[1]);
7337 + }
7338 + }
7339 + var stops;
7340 + var i;
7341 + var len;
7342 + var stop;
7343 + if (itemData.g._cmdf || isFirstFrame) {
7344 + stops = itemData.cst;
7345 + var cValues = itemData.g.c;
7346 + len = stops.length;
7347 + for (i = 0; i < len; i += 1) {
7348 + stop = stops[i];
7349 + stop.setAttribute("offset", cValues[i * 4] + "%");
7350 + stop.setAttribute("stop-color", "rgb(" + cValues[i * 4 + 1] + "," + cValues[i * 4 + 2] + "," + cValues[i * 4 + 3] + ")");
7351 + }
7352 + }
7353 + if (hasOpacity && (itemData.g._omdf || isFirstFrame)) {
7354 + var oValues = itemData.g.o;
7355 + if (itemData.g._collapsable) stops = itemData.cst;
7356 + else stops = itemData.ost;
7357 + len = stops.length;
7358 + for (i = 0; i < len; i += 1) {
7359 + stop = stops[i];
7360 + if (!itemData.g._collapsable) stop.setAttribute("offset", oValues[i * 2] + "%");
7361 + stop.setAttribute("stop-opacity", oValues[i * 2 + 1]);
7362 + }
7363 + }
7364 + if (styleData.t === 1) {
7365 + if (itemData.e._mdf || isFirstFrame) {
7366 + gfill.setAttribute("x2", pt2[0]);
7367 + gfill.setAttribute("y2", pt2[1]);
7368 + if (hasOpacity && !itemData.g._collapsable) {
7369 + itemData.of.setAttribute("x2", pt2[0]);
7370 + itemData.of.setAttribute("y2", pt2[1]);
7371 + }
7372 + }
7373 + } else {
7374 + var rad;
7375 + if (itemData.s._mdf || itemData.e._mdf || isFirstFrame) {
7376 + rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));
7377 + gfill.setAttribute("r", rad);
7378 + if (hasOpacity && !itemData.g._collapsable) itemData.of.setAttribute("r", rad);
7379 + }
7380 + if (itemData.s._mdf || itemData.e._mdf || itemData.h._mdf || itemData.a._mdf || isFirstFrame) {
7381 + if (!rad) rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));
7382 + var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);
7383 + var percent = itemData.h.v;
7384 + if (percent >= 1) percent = .99;
7385 + else if (percent <= -1) percent = -.99;
7386 + var dist = rad * percent;
7387 + var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];
7388 + var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];
7389 + gfill.setAttribute("fx", x);
7390 + gfill.setAttribute("fy", y);
7391 + if (hasOpacity && !itemData.g._collapsable) {
7392 + itemData.of.setAttribute("fx", x);
7393 + itemData.of.setAttribute("fy", y);
7394 + }
7395 + }
7396 + }
7397 + }
7398 + function renderStroke(styleData, itemData, isFirstFrame) {
7399 + var styleElem = itemData.style;
7400 + var d = itemData.d;
7401 + if (d && (d._mdf || isFirstFrame) && d.dashStr) {
7402 + styleElem.pElem.setAttribute("stroke-dasharray", d.dashStr);
7403 + styleElem.pElem.setAttribute("stroke-dashoffset", d.dashoffset[0]);
7404 + }
7405 + if (itemData.c && (itemData.c._mdf || isFirstFrame)) styleElem.pElem.setAttribute("stroke", "rgb(" + bmFloor(itemData.c.v[0]) + "," + bmFloor(itemData.c.v[1]) + "," + bmFloor(itemData.c.v[2]) + ")");
7406 + if (itemData.o._mdf || isFirstFrame) styleElem.pElem.setAttribute("stroke-opacity", itemData.o.v);
7407 + if (itemData.w._mdf || isFirstFrame) {
7408 + styleElem.pElem.setAttribute("stroke-width", itemData.w.v);
7409 + if (styleElem.msElem) styleElem.msElem.setAttribute("stroke-width", itemData.w.v);
7410 + }
7411 + }
7412 + return ob;
7413 + }();
7414 + function SVGShapeElement(data, globalData, comp) {
7415 + this.shapes = [];
7416 + this.shapesData = data.shapes;
7417 + this.stylesList = [];
7418 + this.shapeModifiers = [];
7419 + this.itemsData = [];
7420 + this.processedElements = [];
7421 + this.animatedContents = [];
7422 + this.initElement(data, globalData, comp);
7423 + this.prevViewData = [];
7424 + }
7425 + extendPrototype([
7426 + BaseElement,
7427 + TransformElement,
7428 + SVGBaseElement,
7429 + IShapeElement,
7430 + HierarchyElement,
7431 + FrameElement,
7432 + RenderableDOMElement
7433 + ], SVGShapeElement);
7434 + SVGShapeElement.prototype.initSecondaryElement = function() {};
7435 + SVGShapeElement.prototype.identityMatrix = new Matrix();
7436 + SVGShapeElement.prototype.buildExpressionInterface = function() {};
7437 + SVGShapeElement.prototype.createContent = function() {
7438 + this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);
7439 + this.filterUniqueShapes();
7440 + };
7441 + SVGShapeElement.prototype.filterUniqueShapes = function() {
7442 + var i;
7443 + var len = this.shapes.length;
7444 + var shape;
7445 + var j;
7446 + var jLen = this.stylesList.length;
7447 + var style;
7448 + var tempShapes = [];
7449 + var areAnimated = false;
7450 + for (j = 0; j < jLen; j += 1) {
7451 + style = this.stylesList[j];
7452 + areAnimated = false;
7453 + tempShapes.length = 0;
7454 + for (i = 0; i < len; i += 1) {
7455 + shape = this.shapes[i];
7456 + if (shape.styles.indexOf(style) !== -1) {
7457 + tempShapes.push(shape);
7458 + areAnimated = shape._isAnimated || areAnimated;
7459 + }
7460 + }
7461 + if (tempShapes.length > 1 && areAnimated) this.setShapesAsAnimated(tempShapes);
7462 + }
7463 + };
7464 + SVGShapeElement.prototype.setShapesAsAnimated = function(shapes) {
7465 + var i;
7466 + var len = shapes.length;
7467 + for (i = 0; i < len; i += 1) shapes[i].setAsAnimated();
7468 + };
7469 + SVGShapeElement.prototype.createStyleElement = function(data, level) {
7470 + var elementData;
7471 + var styleOb = new SVGStyleData(data, level);
7472 + var pathElement = styleOb.pElem;
7473 + if (data.ty === "st") elementData = new SVGStrokeStyleData(this, data, styleOb);
7474 + else if (data.ty === "fl") elementData = new SVGFillStyleData(this, data, styleOb);
7475 + else if (data.ty === "gf" || data.ty === "gs") {
7476 + elementData = new (data.ty === "gf" ? SVGGradientFillStyleData : SVGGradientStrokeStyleData)(this, data, styleOb);
7477 + this.globalData.defs.appendChild(elementData.gf);
7478 + if (elementData.maskId) {
7479 + this.globalData.defs.appendChild(elementData.ms);
7480 + this.globalData.defs.appendChild(elementData.of);
7481 + pathElement.setAttribute("mask", "url(" + getLocationHref() + "#" + elementData.maskId + ")");
7482 + }
7483 + } else if (data.ty === "no") elementData = new SVGNoStyleData(this, data, styleOb);
7484 + if (data.ty === "st" || data.ty === "gs") {
7485 + pathElement.setAttribute("stroke-linecap", lineCapEnum[data.lc || 2]);
7486 + pathElement.setAttribute("stroke-linejoin", lineJoinEnum[data.lj || 2]);
7487 + pathElement.setAttribute("fill-opacity", "0");
7488 + if (data.lj === 1) pathElement.setAttribute("stroke-miterlimit", data.ml);
7489 + }
7490 + if (data.r === 2) pathElement.setAttribute("fill-rule", "evenodd");
7491 + if (data.ln) pathElement.setAttribute("id", data.ln);
7492 + if (data.cl) pathElement.setAttribute("class", data.cl);
7493 + if (data.bm) pathElement.style["mix-blend-mode"] = getBlendMode(data.bm);
7494 + this.stylesList.push(styleOb);
7495 + this.addToAnimatedContents(data, elementData);
7496 + return elementData;
7497 + };
7498 + SVGShapeElement.prototype.createGroupElement = function(data) {
7499 + var elementData = new ShapeGroupData();
7500 + if (data.ln) elementData.gr.setAttribute("id", data.ln);
7501 + if (data.cl) elementData.gr.setAttribute("class", data.cl);
7502 + if (data.bm) elementData.gr.style["mix-blend-mode"] = getBlendMode(data.bm);
7503 + return elementData;
7504 + };
7505 + SVGShapeElement.prototype.createTransformElement = function(data, container) {
7506 + var transformProperty = TransformPropertyFactory.getTransformProperty(this, data, this);
7507 + var elementData = new SVGTransformData(transformProperty, transformProperty.o, container);
7508 + this.addToAnimatedContents(data, elementData);
7509 + return elementData;
7510 + };
7511 + SVGShapeElement.prototype.createShapeElement = function(data, ownTransformers, level) {
7512 + var ty = 4;
7513 + if (data.ty === "rc") ty = 5;
7514 + else if (data.ty === "el") ty = 6;
7515 + else if (data.ty === "sr") ty = 7;
7516 + var elementData = new SVGShapeData(ownTransformers, level, ShapePropertyFactory.getShapeProp(this, data, ty, this));
7517 + this.shapes.push(elementData);
7518 + this.addShapeToModifiers(elementData);
7519 + this.addToAnimatedContents(data, elementData);
7520 + return elementData;
7521 + };
7522 + SVGShapeElement.prototype.addToAnimatedContents = function(data, element) {
7523 + var i = 0;
7524 + var len = this.animatedContents.length;
7525 + while (i < len) {
7526 + if (this.animatedContents[i].element === element) return;
7527 + i += 1;
7528 + }
7529 + this.animatedContents.push({
7530 + fn: SVGElementsRenderer.createRenderFunction(data),
7531 + element,
7532 + data
7533 + });
7534 + };
7535 + SVGShapeElement.prototype.setElementStyles = function(elementData) {
7536 + var arr = elementData.styles;
7537 + var j;
7538 + var jLen = this.stylesList.length;
7539 + for (j = 0; j < jLen; j += 1) if (arr.indexOf(this.stylesList[j]) === -1 && !this.stylesList[j].closed) arr.push(this.stylesList[j]);
7540 + };
7541 + SVGShapeElement.prototype.reloadShapes = function() {
7542 + this._isFirstFrame = true;
7543 + var i;
7544 + var len = this.itemsData.length;
7545 + for (i = 0; i < len; i += 1) this.prevViewData[i] = this.itemsData[i];
7546 + this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);
7547 + this.filterUniqueShapes();
7548 + len = this.dynamicProperties.length;
7549 + for (i = 0; i < len; i += 1) this.dynamicProperties[i].getValue();
7550 + this.renderModifiers();
7551 + };
7552 + SVGShapeElement.prototype.searchShapes = function(arr, itemsData, prevViewData, container, level, transformers, render) {
7553 + var ownTransformers = [].concat(transformers);
7554 + var i;
7555 + var len = arr.length - 1;
7556 + var j;
7557 + var jLen;
7558 + var ownStyles = [];
7559 + var ownModifiers = [];
7560 + var currentTransform;
7561 + var modifier;
7562 + var processedPos;
7563 + for (i = len; i >= 0; i -= 1) {
7564 + processedPos = this.searchProcessedElement(arr[i]);
7565 + if (!processedPos) arr[i]._render = render;
7566 + else itemsData[i] = prevViewData[processedPos - 1];
7567 + if (arr[i].ty === "fl" || arr[i].ty === "st" || arr[i].ty === "gf" || arr[i].ty === "gs" || arr[i].ty === "no") {
7568 + if (!processedPos) itemsData[i] = this.createStyleElement(arr[i], level);
7569 + else itemsData[i].style.closed = arr[i].hd;
7570 + if (arr[i]._render) {
7571 + if (itemsData[i].style.pElem.parentNode !== container) container.appendChild(itemsData[i].style.pElem);
7572 + }
7573 + ownStyles.push(itemsData[i].style);
7574 + } else if (arr[i].ty === "gr") {
7575 + if (!processedPos) itemsData[i] = this.createGroupElement(arr[i]);
7576 + else {
7577 + jLen = itemsData[i].it.length;
7578 + for (j = 0; j < jLen; j += 1) itemsData[i].prevViewData[j] = itemsData[i].it[j];
7579 + }
7580 + this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, itemsData[i].gr, level + 1, ownTransformers, render);
7581 + if (arr[i]._render) {
7582 + if (itemsData[i].gr.parentNode !== container) container.appendChild(itemsData[i].gr);
7583 + }
7584 + } else if (arr[i].ty === "tr") {
7585 + if (!processedPos) itemsData[i] = this.createTransformElement(arr[i], container);
7586 + currentTransform = itemsData[i].transform;
7587 + ownTransformers.push(currentTransform);
7588 + } else if (arr[i].ty === "sh" || arr[i].ty === "rc" || arr[i].ty === "el" || arr[i].ty === "sr") {
7589 + if (!processedPos) itemsData[i] = this.createShapeElement(arr[i], ownTransformers, level);
7590 + this.setElementStyles(itemsData[i]);
7591 + } 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") {
7592 + if (!processedPos) {
7593 + modifier = ShapeModifiers.getModifier(arr[i].ty);
7594 + modifier.init(this, arr[i]);
7595 + itemsData[i] = modifier;
7596 + this.shapeModifiers.push(modifier);
7597 + } else {
7598 + modifier = itemsData[i];
7599 + modifier.closed = false;
7600 + }
7601 + ownModifiers.push(modifier);
7602 + } else if (arr[i].ty === "rp") {
7603 + if (!processedPos) {
7604 + modifier = ShapeModifiers.getModifier(arr[i].ty);
7605 + itemsData[i] = modifier;
7606 + modifier.init(this, arr, i, itemsData);
7607 + this.shapeModifiers.push(modifier);
7608 + render = false;
7609 + } else {
7610 + modifier = itemsData[i];
7611 + modifier.closed = true;
7612 + }
7613 + ownModifiers.push(modifier);
7614 + }
7615 + this.addProcessedElement(arr[i], i + 1);
7616 + }
7617 + len = ownStyles.length;
7618 + for (i = 0; i < len; i += 1) ownStyles[i].closed = true;
7619 + len = ownModifiers.length;
7620 + for (i = 0; i < len; i += 1) ownModifiers[i].closed = true;
7621 + };
7622 + SVGShapeElement.prototype.renderInnerContent = function() {
7623 + this.renderModifiers();
7624 + var i;
7625 + var len = this.stylesList.length;
7626 + for (i = 0; i < len; i += 1) this.stylesList[i].reset();
7627 + this.renderShape();
7628 + for (i = 0; i < len; i += 1) if (this.stylesList[i]._mdf || this._isFirstFrame) {
7629 + if (this.stylesList[i].msElem) {
7630 + this.stylesList[i].msElem.setAttribute("d", this.stylesList[i].d);
7631 + this.stylesList[i].d = "M0 0" + this.stylesList[i].d;
7632 + }
7633 + this.stylesList[i].pElem.setAttribute("d", this.stylesList[i].d || "M0 0");
7634 + }
7635 + };
7636 + SVGShapeElement.prototype.renderShape = function() {
7637 + var i;
7638 + var len = this.animatedContents.length;
7639 + var animatedContent;
7640 + for (i = 0; i < len; i += 1) {
7641 + animatedContent = this.animatedContents[i];
7642 + if ((this._isFirstFrame || animatedContent.element._isAnimated) && animatedContent.data !== true) animatedContent.fn(animatedContent.data, animatedContent.element, this._isFirstFrame);
7643 + }
7644 + };
7645 + SVGShapeElement.prototype.destroy = function() {
7646 + this.destroyBaseElement();
7647 + this.shapesData = null;
7648 + this.itemsData = null;
7649 + };
7650 + function LetterProps(o, sw, sc, fc, m, p) {
7651 + this.o = o;
7652 + this.sw = sw;
7653 + this.sc = sc;
7654 + this.fc = fc;
7655 + this.m = m;
7656 + this.p = p;
7657 + this._mdf = {
7658 + o: true,
7659 + sw: !!sw,
7660 + sc: !!sc,
7661 + fc: !!fc,
7662 + m: true,
7663 + p: true
7664 + };
7665 + }
7666 + LetterProps.prototype.update = function(o, sw, sc, fc, m, p) {
7667 + this._mdf.o = false;
7668 + this._mdf.sw = false;
7669 + this._mdf.sc = false;
7670 + this._mdf.fc = false;
7671 + this._mdf.m = false;
7672 + this._mdf.p = false;
7673 + var updated = false;
7674 + if (this.o !== o) {
7675 + this.o = o;
7676 + this._mdf.o = true;
7677 + updated = true;
7678 + }
7679 + if (this.sw !== sw) {
7680 + this.sw = sw;
7681 + this._mdf.sw = true;
7682 + updated = true;
7683 + }
7684 + if (this.sc !== sc) {
7685 + this.sc = sc;
7686 + this._mdf.sc = true;
7687 + updated = true;
7688 + }
7689 + if (this.fc !== fc) {
7690 + this.fc = fc;
7691 + this._mdf.fc = true;
7692 + updated = true;
7693 + }
7694 + if (this.m !== m) {
7695 + this.m = m;
7696 + this._mdf.m = true;
7697 + updated = true;
7698 + }
7699 + 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])) {
7700 + this.p = p;
7701 + this._mdf.p = true;
7702 + updated = true;
7703 + }
7704 + return updated;
7705 + };
7706 + function TextProperty(elem, data) {
7707 + this._frameId = initialDefaultFrame;
7708 + this.pv = "";
7709 + this.v = "";
7710 + this.kf = false;
7711 + this._isFirstFrame = true;
7712 + this._mdf = false;
7713 + if (data.d && data.d.sid) data.d = elem.globalData.slotManager.getProp(data.d);
7714 + this.data = data;
7715 + this.elem = elem;
7716 + this.comp = this.elem.comp;
7717 + this.keysIndex = 0;
7718 + this.canResize = false;
7719 + this.minimumFontSize = 1;
7720 + this.effectsSequence = [];
7721 + this.currentData = {
7722 + ascent: 0,
7723 + boxWidth: this.defaultBoxWidth,
7724 + f: "",
7725 + fStyle: "",
7726 + fWeight: "",
7727 + fc: "",
7728 + j: "",
7729 + justifyOffset: "",
7730 + l: [],
7731 + lh: 0,
7732 + lineWidths: [],
7733 + ls: "",
7734 + of: "",
7735 + s: "",
7736 + sc: "",
7737 + sw: 0,
7738 + t: 0,
7739 + tr: 0,
7740 + sz: 0,
7741 + ps: null,
7742 + fillColorAnim: false,
7743 + strokeColorAnim: false,
7744 + strokeWidthAnim: false,
7745 + yOffset: 0,
7746 + finalSize: 0,
7747 + finalText: [],
7748 + finalLineHeight: 0,
7749 + __complete: false
7750 + };
7751 + this.copyData(this.currentData, this.data.d.k[0].s);
7752 + if (!this.searchProperty()) this.completeTextData(this.currentData);
7753 + }
7754 + TextProperty.prototype.defaultBoxWidth = [0, 0];
7755 + TextProperty.prototype.copyData = function(obj, data) {
7756 + for (var s in data) if (Object.prototype.hasOwnProperty.call(data, s)) obj[s] = data[s];
7757 + return obj;
7758 + };
7759 + TextProperty.prototype.setCurrentData = function(data) {
7760 + if (!data.__complete) this.completeTextData(data);
7761 + this.currentData = data;
7762 + this.currentData.boxWidth = this.currentData.boxWidth || this.defaultBoxWidth;
7763 + this._mdf = true;
7764 + };
7765 + TextProperty.prototype.searchProperty = function() {
7766 + return this.searchKeyframes();
7767 + };
7768 + TextProperty.prototype.searchKeyframes = function() {
7769 + this.kf = this.data.d.k.length > 1;
7770 + if (this.kf) this.addEffect(this.getKeyframeValue.bind(this));
7771 + return this.kf;
7772 + };
7773 + TextProperty.prototype.addEffect = function(effectFunction) {
7774 + this.effectsSequence.push(effectFunction);
7775 + this.elem.addDynamicProperty(this);
7776 + };
7777 + TextProperty.prototype.getValue = function(_finalValue) {
7778 + if ((this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) && !_finalValue) return;
7779 + this.currentData.t = this.data.d.k[this.keysIndex].s.t;
7780 + var currentValue = this.currentData;
7781 + var currentIndex = this.keysIndex;
7782 + if (this.lock) {
7783 + this.setCurrentData(this.currentData);
7784 + return;
7785 + }
7786 + this.lock = true;
7787 + this._mdf = false;
7788 + var i;
7789 + var len = this.effectsSequence.length;
7790 + var finalValue = _finalValue || this.data.d.k[this.keysIndex].s;
7791 + for (i = 0; i < len; i += 1) if (currentIndex !== this.keysIndex) finalValue = this.effectsSequence[i](finalValue, finalValue.t);
7792 + else finalValue = this.effectsSequence[i](this.currentData, finalValue.t);
7793 + if (currentValue !== finalValue) this.setCurrentData(finalValue);
7794 + this.v = this.currentData;
7795 + this.pv = this.v;
7796 + this.lock = false;
7797 + this.frameId = this.elem.globalData.frameId;
7798 + };
7799 + TextProperty.prototype.getKeyframeValue = function() {
7800 + var textKeys = this.data.d.k;
7801 + var frameNum = this.elem.comp.renderedFrame;
7802 + var i = 0;
7803 + var len = textKeys.length;
7804 + while (i <= len - 1) {
7805 + if (i === len - 1 || textKeys[i + 1].t > frameNum) break;
7806 + i += 1;
7807 + }
7808 + if (this.keysIndex !== i) this.keysIndex = i;
7809 + return this.data.d.k[this.keysIndex].s;
7810 + };
7811 + TextProperty.prototype.buildFinalText = function(text) {
7812 + var charactersArray = [];
7813 + var i = 0;
7814 + var len = text.length;
7815 + var charCode;
7816 + var secondCharCode;
7817 + var shouldCombine = false;
7818 + var shouldCombineNext = false;
7819 + var currentChars = "";
7820 + while (i < len) {
7821 + shouldCombine = shouldCombineNext;
7822 + shouldCombineNext = false;
7823 + charCode = text.charCodeAt(i);
7824 + currentChars = text.charAt(i);
7825 + if (FontManager.isCombinedCharacter(charCode)) shouldCombine = true;
7826 + else if (charCode >= 55296 && charCode <= 56319) if (FontManager.isRegionalFlag(text, i)) currentChars = text.substr(i, 14);
7827 + else {
7828 + secondCharCode = text.charCodeAt(i + 1);
7829 + if (secondCharCode >= 56320 && secondCharCode <= 57343) if (FontManager.isModifier(charCode, secondCharCode)) {
7830 + currentChars = text.substr(i, 2);
7831 + shouldCombine = true;
7832 + } else if (FontManager.isFlagEmoji(text.substr(i, 4))) currentChars = text.substr(i, 4);
7833 + else currentChars = text.substr(i, 2);
7834 + }
7835 + else if (charCode > 56319) {
7836 + secondCharCode = text.charCodeAt(i + 1);
7837 + if (FontManager.isVariationSelector(charCode)) shouldCombine = true;
7838 + } else if (FontManager.isZeroWidthJoiner(charCode)) {
7839 + shouldCombine = true;
7840 + shouldCombineNext = true;
7841 + }
7842 + if (shouldCombine) {
7843 + charactersArray[charactersArray.length - 1] += currentChars;
7844 + shouldCombine = false;
7845 + } else charactersArray.push(currentChars);
7846 + i += currentChars.length;
7847 + }
7848 + return charactersArray;
7849 + };
7850 + TextProperty.prototype.completeTextData = function(documentData) {
7851 + documentData.__complete = true;
7852 + var fontManager = this.elem.globalData.fontManager;
7853 + var data = this.data;
7854 + var letters = [];
7855 + var i;
7856 + var len;
7857 + var newLineFlag;
7858 + var index = 0;
7859 + var val;
7860 + var anchorGrouping = data.m.g;
7861 + var currentSize = 0;
7862 + var currentPos = 0;
7863 + var currentLine = 0;
7864 + var lineWidths = [];
7865 + var lineWidth = 0;
7866 + var maxLineWidth = 0;
7867 + var j;
7868 + var jLen;
7869 + var fontData = fontManager.getFontByName(documentData.f);
7870 + var charData;
7871 + var cLength = 0;
7872 + var fontProps = getFontProperties(fontData);
7873 + documentData.fWeight = fontProps.weight;
7874 + documentData.fStyle = fontProps.style;
7875 + documentData.finalSize = documentData.s;
7876 + documentData.finalText = this.buildFinalText(documentData.t);
7877 + len = documentData.finalText.length;
7878 + documentData.finalLineHeight = documentData.lh;
7879 + var trackingOffset = documentData.tr / 1e3 * documentData.finalSize;
7880 + var charCode;
7881 + if (documentData.sz) {
7882 + var flag = true;
7883 + var boxWidth = documentData.sz[0];
7884 + var boxHeight = documentData.sz[1];
7885 + var currentHeight;
7886 + var finalText;
7887 + while (flag) {
7888 + finalText = this.buildFinalText(documentData.t);
7889 + currentHeight = 0;
7890 + lineWidth = 0;
7891 + len = finalText.length;
7892 + trackingOffset = documentData.tr / 1e3 * documentData.finalSize;
7893 + var lastSpaceIndex = -1;
7894 + for (i = 0; i < len; i += 1) {
7895 + charCode = finalText[i].charCodeAt(0);
7896 + newLineFlag = false;
7897 + if (finalText[i] === " ") lastSpaceIndex = i;
7898 + else if (charCode === 13 || charCode === 3) {
7899 + lineWidth = 0;
7900 + newLineFlag = true;
7901 + currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;
7902 + }
7903 + if (fontManager.chars) {
7904 + charData = fontManager.getCharData(finalText[i], fontData.fStyle, fontData.fFamily);
7905 + cLength = newLineFlag ? 0 : charData.w * documentData.finalSize / 100;
7906 + } else cLength = fontManager.measureText(finalText[i], documentData.f, documentData.finalSize);
7907 + if (lineWidth + cLength > boxWidth && finalText[i] !== " ") {
7908 + if (lastSpaceIndex === -1) len += 1;
7909 + else i = lastSpaceIndex;
7910 + currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;
7911 + finalText.splice(i, lastSpaceIndex === i ? 1 : 0, "\r");
7912 + lastSpaceIndex = -1;
7913 + lineWidth = 0;
7914 + } else {
7915 + lineWidth += cLength;
7916 + lineWidth += trackingOffset;
7917 + }
7918 + }
7919 + currentHeight += fontData.ascent * documentData.finalSize / 100;
7920 + if (this.canResize && documentData.finalSize > this.minimumFontSize && boxHeight < currentHeight) {
7921 + documentData.finalSize -= 1;
7922 + documentData.finalLineHeight = documentData.finalSize * documentData.lh / documentData.s;
7923 + } else {
7924 + documentData.finalText = finalText;
7925 + len = documentData.finalText.length;
7926 + flag = false;
7927 + }
7928 + }
7929 + }
7930 + lineWidth = -trackingOffset;
7931 + cLength = 0;
7932 + var uncollapsedSpaces = 0;
7933 + var currentChar;
7934 + for (i = 0; i < len; i += 1) {
7935 + newLineFlag = false;
7936 + currentChar = documentData.finalText[i];
7937 + charCode = currentChar.charCodeAt(0);
7938 + if (charCode === 13 || charCode === 3) {
7939 + uncollapsedSpaces = 0;
7940 + lineWidths.push(lineWidth);
7941 + maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;
7942 + lineWidth = -2 * trackingOffset;
7943 + val = "";
7944 + newLineFlag = true;
7945 + currentLine += 1;
7946 + } else val = currentChar;
7947 + if (fontManager.chars) {
7948 + charData = fontManager.getCharData(currentChar, fontData.fStyle, fontManager.getFontByName(documentData.f).fFamily);
7949 + cLength = newLineFlag ? 0 : charData.w * documentData.finalSize / 100;
7950 + } else cLength = fontManager.measureText(val, documentData.f, documentData.finalSize);
7951 + if (currentChar === " ") uncollapsedSpaces += cLength + trackingOffset;
7952 + else {
7953 + lineWidth += cLength + trackingOffset + uncollapsedSpaces;
7954 + uncollapsedSpaces = 0;
7955 + }
7956 + letters.push({
7957 + l: cLength,
7958 + an: cLength,
7959 + add: currentSize,
7960 + n: newLineFlag,
7961 + anIndexes: [],
7962 + val,
7963 + line: currentLine,
7964 + animatorJustifyOffset: 0
7965 + });
7966 + if (anchorGrouping == 2) {
7967 + currentSize += cLength;
7968 + if (val === "" || val === " " || i === len - 1) {
7969 + if (val === "" || val === " ") currentSize -= cLength;
7970 + while (currentPos <= i) {
7971 + letters[currentPos].an = currentSize;
7972 + letters[currentPos].ind = index;
7973 + letters[currentPos].extra = cLength;
7974 + currentPos += 1;
7975 + }
7976 + index += 1;
7977 + currentSize = 0;
7978 + }
7979 + } else if (anchorGrouping == 3) {
7980 + currentSize += cLength;
7981 + if (val === "" || i === len - 1) {
7982 + if (val === "") currentSize -= cLength;
7983 + while (currentPos <= i) {
7984 + letters[currentPos].an = currentSize;
7985 + letters[currentPos].ind = index;
7986 + letters[currentPos].extra = cLength;
7987 + currentPos += 1;
7988 + }
7989 + currentSize = 0;
7990 + index += 1;
7991 + }
7992 + } else {
7993 + letters[index].ind = index;
7994 + letters[index].extra = 0;
7995 + index += 1;
7996 + }
7997 + }
7998 + documentData.l = letters;
7999 + maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;
8000 + lineWidths.push(lineWidth);
8001 + if (documentData.sz) {
8002 + documentData.boxWidth = documentData.sz[0];
8003 + documentData.justifyOffset = 0;
8004 + } else {
8005 + documentData.boxWidth = maxLineWidth;
8006 + switch (documentData.j) {
8007 + case 1:
8008 + documentData.justifyOffset = -documentData.boxWidth;
8009 + break;
8010 + case 2:
8011 + documentData.justifyOffset = -documentData.boxWidth / 2;
8012 + break;
8013 + default: documentData.justifyOffset = 0;
8014 + }
8015 + }
8016 + documentData.lineWidths = lineWidths;
8017 + var animators = data.a;
8018 + var animatorData;
8019 + var letterData;
8020 + jLen = animators.length;
8021 + var based;
8022 + var ind;
8023 + var indexes = [];
8024 + for (j = 0; j < jLen; j += 1) {
8025 + animatorData = animators[j];
8026 + if (animatorData.a.sc) documentData.strokeColorAnim = true;
8027 + if (animatorData.a.sw) documentData.strokeWidthAnim = true;
8028 + if (animatorData.a.fc || animatorData.a.fh || animatorData.a.fs || animatorData.a.fb) documentData.fillColorAnim = true;
8029 + ind = 0;
8030 + based = animatorData.s.b;
8031 + for (i = 0; i < len; i += 1) {
8032 + letterData = letters[i];
8033 + letterData.anIndexes[j] = ind;
8034 + 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)) {
8035 + if (animatorData.s.rn === 1) indexes.push(ind);
8036 + ind += 1;
8037 + }
8038 + }
8039 + data.a[j].s.totalChars = ind;
8040 + var currentInd = -1;
8041 + var newInd;
8042 + if (animatorData.s.rn === 1) for (i = 0; i < len; i += 1) {
8043 + letterData = letters[i];
8044 + if (currentInd != letterData.anIndexes[j]) {
8045 + currentInd = letterData.anIndexes[j];
8046 + newInd = indexes.splice(Math.floor(Math.random() * indexes.length), 1)[0];
8047 + }
8048 + letterData.anIndexes[j] = newInd;
8049 + }
8050 + }
8051 + documentData.yOffset = documentData.finalLineHeight || documentData.finalSize * 1.2;
8052 + documentData.ls = documentData.ls || 0;
8053 + documentData.ascent = fontData.ascent * documentData.finalSize / 100;
8054 + };
8055 + TextProperty.prototype.updateDocumentData = function(newData, index) {
8056 + index = index === void 0 ? this.keysIndex : index;
8057 + var dData = this.copyData({}, this.data.d.k[index].s);
8058 + dData = this.copyData(dData, newData);
8059 + this.data.d.k[index].s = dData;
8060 + this.recalculate(index);
8061 + this.setCurrentData(dData);
8062 + this.elem.addDynamicProperty(this);
8063 + };
8064 + TextProperty.prototype.recalculate = function(index) {
8065 + var dData = this.data.d.k[index].s;
8066 + dData.__complete = false;
8067 + this.keysIndex = 0;
8068 + this._isFirstFrame = true;
8069 + this.getValue(dData);
8070 + };
8071 + TextProperty.prototype.canResizeFont = function(_canResize) {
8072 + this.canResize = _canResize;
8073 + this.recalculate(this.keysIndex);
8074 + this.elem.addDynamicProperty(this);
8075 + };
8076 + TextProperty.prototype.setMinimumFontSize = function(_fontValue) {
8077 + this.minimumFontSize = Math.floor(_fontValue) || 1;
8078 + this.recalculate(this.keysIndex);
8079 + this.elem.addDynamicProperty(this);
8080 + };
8081 + var TextSelectorProp = function() {
8082 + var max = Math.max;
8083 + var min = Math.min;
8084 + var floor = Math.floor;
8085 + function TextSelectorPropFactory(elem, data) {
8086 + this._currentTextLength = -1;
8087 + this.k = false;
8088 + this.data = data;
8089 + this.elem = elem;
8090 + this.comp = elem.comp;
8091 + this.finalS = 0;
8092 + this.finalE = 0;
8093 + this.initDynamicPropertyContainer(elem);
8094 + this.s = PropertyFactory.getProp(elem, data.s || { k: 0 }, 0, 0, this);
8095 + if ("e" in data) this.e = PropertyFactory.getProp(elem, data.e, 0, 0, this);
8096 + else this.e = { v: 100 };
8097 + this.o = PropertyFactory.getProp(elem, data.o || { k: 0 }, 0, 0, this);
8098 + this.xe = PropertyFactory.getProp(elem, data.xe || { k: 0 }, 0, 0, this);
8099 + this.ne = PropertyFactory.getProp(elem, data.ne || { k: 0 }, 0, 0, this);
8100 + this.sm = PropertyFactory.getProp(elem, data.sm || { k: 100 }, 0, 0, this);
8101 + this.a = PropertyFactory.getProp(elem, data.a, 0, .01, this);
8102 + if (!this.dynamicProperties.length) this.getValue();
8103 + }
8104 + TextSelectorPropFactory.prototype = {
8105 + getMult: function getMult(ind) {
8106 + if (this._currentTextLength !== this.elem.textProperty.currentData.l.length) this.getValue();
8107 + var x1 = 0;
8108 + var y1 = 0;
8109 + var x2 = 1;
8110 + var y2 = 1;
8111 + if (this.ne.v > 0) x1 = this.ne.v / 100;
8112 + else y1 = -this.ne.v / 100;
8113 + if (this.xe.v > 0) x2 = 1 - this.xe.v / 100;
8114 + else y2 = 1 + this.xe.v / 100;
8115 + var easer = BezierFactory.getBezierEasing(x1, y1, x2, y2).get;
8116 + var mult = 0;
8117 + var s = this.finalS;
8118 + var e = this.finalE;
8119 + var type = this.data.sh;
8120 + if (type === 2) {
8121 + if (e === s) mult = ind >= e ? 1 : 0;
8122 + else mult = max(0, min(.5 / (e - s) + (ind - s) / (e - s), 1));
8123 + mult = easer(mult);
8124 + } else if (type === 3) {
8125 + if (e === s) mult = ind >= e ? 0 : 1;
8126 + else mult = 1 - max(0, min(.5 / (e - s) + (ind - s) / (e - s), 1));
8127 + mult = easer(mult);
8128 + } else if (type === 4) {
8129 + if (e === s) mult = 0;
8130 + else {
8131 + mult = max(0, min(.5 / (e - s) + (ind - s) / (e - s), 1));
8132 + if (mult < .5) mult *= 2;
8133 + else mult = 1 - 2 * (mult - .5);
8134 + }
8135 + mult = easer(mult);
8136 + } else if (type === 5) {
8137 + if (e === s) mult = 0;
8138 + else {
8139 + var tot = e - s;
8140 + ind = min(max(0, ind + .5 - s), e - s);
8141 + var x = -tot / 2 + ind;
8142 + var a = tot / 2;
8143 + mult = Math.sqrt(1 - x * x / (a * a));
8144 + }
8145 + mult = easer(mult);
8146 + } else if (type === 6) {
8147 + if (e === s) mult = 0;
8148 + else {
8149 + ind = min(max(0, ind + .5 - s), e - s);
8150 + mult = (1 + Math.cos(Math.PI + Math.PI * 2 * ind / (e - s))) / 2;
8151 + }
8152 + mult = easer(mult);
8153 + } else {
8154 + if (ind >= floor(s)) if (ind - s < 0) mult = max(0, min(min(e, 1) - (s - ind), 1));
8155 + else mult = max(0, min(e - ind, 1));
8156 + mult = easer(mult);
8157 + }
8158 + if (this.sm.v !== 100) {
8159 + var smoothness = this.sm.v * .01;
8160 + if (smoothness === 0) smoothness = 1e-8;
8161 + var threshold = .5 - smoothness * .5;
8162 + if (mult < threshold) mult = 0;
8163 + else {
8164 + mult = (mult - threshold) / smoothness;
8165 + if (mult > 1) mult = 1;
8166 + }
8167 + }
8168 + return mult * this.a.v;
8169 + },
8170 + getValue: function getValue(newCharsFlag) {
8171 + this.iterateDynamicProperties();
8172 + this._mdf = newCharsFlag || this._mdf;
8173 + this._currentTextLength = this.elem.textProperty.currentData.l.length || 0;
8174 + if (newCharsFlag && this.data.r === 2) this.e.v = this._currentTextLength;
8175 + var divisor = this.data.r === 2 ? 1 : 100 / this.data.totalChars;
8176 + var o = this.o.v / divisor;
8177 + var s = this.s.v / divisor + o;
8178 + var e = this.e.v / divisor + o;
8179 + if (s > e) {
8180 + var _s = s;
8181 + s = e;
8182 + e = _s;
8183 + }
8184 + this.finalS = s;
8185 + this.finalE = e;
8186 + }
8187 + };
8188 + extendPrototype([DynamicPropertyContainer], TextSelectorPropFactory);
8189 + function getTextSelectorProp(elem, data, arr) {
8190 + return new TextSelectorPropFactory(elem, data, arr);
8191 + }
8192 + return { getTextSelectorProp };
8193 + }();
8194 + function TextAnimatorDataProperty(elem, animatorProps, container) {
8195 + var defaultData = { propType: false };
8196 + var getProp = PropertyFactory.getProp;
8197 + var textAnimatorAnimatables = animatorProps.a;
8198 + this.a = {
8199 + r: textAnimatorAnimatables.r ? getProp(elem, textAnimatorAnimatables.r, 0, degToRads, container) : defaultData,
8200 + rx: textAnimatorAnimatables.rx ? getProp(elem, textAnimatorAnimatables.rx, 0, degToRads, container) : defaultData,
8201 + ry: textAnimatorAnimatables.ry ? getProp(elem, textAnimatorAnimatables.ry, 0, degToRads, container) : defaultData,
8202 + sk: textAnimatorAnimatables.sk ? getProp(elem, textAnimatorAnimatables.sk, 0, degToRads, container) : defaultData,
8203 + sa: textAnimatorAnimatables.sa ? getProp(elem, textAnimatorAnimatables.sa, 0, degToRads, container) : defaultData,
8204 + s: textAnimatorAnimatables.s ? getProp(elem, textAnimatorAnimatables.s, 1, .01, container) : defaultData,
8205 + a: textAnimatorAnimatables.a ? getProp(elem, textAnimatorAnimatables.a, 1, 0, container) : defaultData,
8206 + o: textAnimatorAnimatables.o ? getProp(elem, textAnimatorAnimatables.o, 0, .01, container) : defaultData,
8207 + p: textAnimatorAnimatables.p ? getProp(elem, textAnimatorAnimatables.p, 1, 0, container) : defaultData,
8208 + sw: textAnimatorAnimatables.sw ? getProp(elem, textAnimatorAnimatables.sw, 0, 0, container) : defaultData,
8209 + sc: textAnimatorAnimatables.sc ? getProp(elem, textAnimatorAnimatables.sc, 1, 0, container) : defaultData,
8210 + fc: textAnimatorAnimatables.fc ? getProp(elem, textAnimatorAnimatables.fc, 1, 0, container) : defaultData,
8211 + fh: textAnimatorAnimatables.fh ? getProp(elem, textAnimatorAnimatables.fh, 0, 0, container) : defaultData,
8212 + fs: textAnimatorAnimatables.fs ? getProp(elem, textAnimatorAnimatables.fs, 0, .01, container) : defaultData,
8213 + fb: textAnimatorAnimatables.fb ? getProp(elem, textAnimatorAnimatables.fb, 0, .01, container) : defaultData,
8214 + t: textAnimatorAnimatables.t ? getProp(elem, textAnimatorAnimatables.t, 0, 0, container) : defaultData
8215 + };
8216 + this.s = TextSelectorProp.getTextSelectorProp(elem, animatorProps.s, container);
8217 + this.s.t = animatorProps.s.t;
8218 + }
8219 + function TextAnimatorProperty(textData, renderType, elem) {
8220 + this._isFirstFrame = true;
8221 + this._hasMaskedPath = false;
8222 + this._frameId = -1;
8223 + this._textData = textData;
8224 + this._renderType = renderType;
8225 + this._elem = elem;
8226 + this._animatorsData = createSizedArray(this._textData.a.length);
8227 + this._pathData = {};
8228 + this._moreOptions = { alignment: {} };
8229 + this.renderedLetters = [];
8230 + this.lettersChangedFlag = false;
8231 + this.initDynamicPropertyContainer(elem);
8232 + }
8233 + TextAnimatorProperty.prototype.searchProperties = function() {
8234 + var i;
8235 + var len = this._textData.a.length;
8236 + var animatorProps;
8237 + var getProp = PropertyFactory.getProp;
8238 + for (i = 0; i < len; i += 1) {
8239 + animatorProps = this._textData.a[i];
8240 + this._animatorsData[i] = new TextAnimatorDataProperty(this._elem, animatorProps, this);
8241 + }
8242 + if (this._textData.p && "m" in this._textData.p) {
8243 + this._pathData = {
8244 + a: getProp(this._elem, this._textData.p.a, 0, 0, this),
8245 + f: getProp(this._elem, this._textData.p.f, 0, 0, this),
8246 + l: getProp(this._elem, this._textData.p.l, 0, 0, this),
8247 + r: getProp(this._elem, this._textData.p.r, 0, 0, this),
8248 + p: getProp(this._elem, this._textData.p.p, 0, 0, this),
8249 + m: this._elem.maskManager.getMaskProperty(this._textData.p.m)
8250 + };
8251 + this._hasMaskedPath = true;
8252 + } else this._hasMaskedPath = false;
8253 + this._moreOptions.alignment = getProp(this._elem, this._textData.m.a, 1, 0, this);
8254 + };
8255 + TextAnimatorProperty.prototype.getMeasures = function(documentData, lettersChangedFlag) {
8256 + this.lettersChangedFlag = lettersChangedFlag;
8257 + if (!this._mdf && !this._isFirstFrame && !lettersChangedFlag && (!this._hasMaskedPath || !this._pathData.m._mdf)) return;
8258 + this._isFirstFrame = false;
8259 + var alignment = this._moreOptions.alignment.v;
8260 + var animators = this._animatorsData;
8261 + var textData = this._textData;
8262 + var matrixHelper = this.mHelper;
8263 + var renderType = this._renderType;
8264 + var renderedLettersCount = this.renderedLetters.length;
8265 + var xPos;
8266 + var yPos;
8267 + var i;
8268 + var len;
8269 + var letters = documentData.l;
8270 + var pathInfo;
8271 + var currentLength;
8272 + var currentPoint;
8273 + var segmentLength;
8274 + var flag;
8275 + var pointInd;
8276 + var segmentInd;
8277 + var prevPoint;
8278 + var points;
8279 + var segments;
8280 + var partialLength;
8281 + var totalLength;
8282 + var perc;
8283 + var tanAngle;
8284 + var mask;
8285 + if (this._hasMaskedPath) {
8286 + mask = this._pathData.m;
8287 + if (!this._pathData.n || this._pathData._mdf) {
8288 + var paths = mask.v;
8289 + if (this._pathData.r.v) paths = paths.reverse();
8290 + pathInfo = {
8291 + tLength: 0,
8292 + segments: []
8293 + };
8294 + len = paths._length - 1;
8295 + var bezierData;
8296 + totalLength = 0;
8297 + for (i = 0; i < len; i += 1) {
8298 + 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]]);
8299 + pathInfo.tLength += bezierData.segmentLength;
8300 + pathInfo.segments.push(bezierData);
8301 + totalLength += bezierData.segmentLength;
8302 + }
8303 + i = len;
8304 + if (mask.v.c) {
8305 + 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]]);
8306 + pathInfo.tLength += bezierData.segmentLength;
8307 + pathInfo.segments.push(bezierData);
8308 + totalLength += bezierData.segmentLength;
8309 + }
8310 + this._pathData.pi = pathInfo;
8311 + }
8312 + pathInfo = this._pathData.pi;
8313 + currentLength = this._pathData.f.v;
8314 + segmentInd = 0;
8315 + pointInd = 1;
8316 + segmentLength = 0;
8317 + flag = true;
8318 + segments = pathInfo.segments;
8319 + if (currentLength < 0 && mask.v.c) {
8320 + if (pathInfo.tLength < Math.abs(currentLength)) currentLength = -Math.abs(currentLength) % pathInfo.tLength;
8321 + segmentInd = segments.length - 1;
8322 + points = segments[segmentInd].points;
8323 + pointInd = points.length - 1;
8324 + while (currentLength < 0) {
8325 + currentLength += points[pointInd].partialLength;
8326 + pointInd -= 1;
8327 + if (pointInd < 0) {
8328 + segmentInd -= 1;
8329 + points = segments[segmentInd].points;
8330 + pointInd = points.length - 1;
8331 + }
8332 + }
8333 + }
8334 + points = segments[segmentInd].points;
8335 + prevPoint = points[pointInd - 1];
8336 + currentPoint = points[pointInd];
8337 + partialLength = currentPoint.partialLength;
8338 + }
8339 + len = letters.length;
8340 + xPos = 0;
8341 + yPos = 0;
8342 + var yOff = documentData.finalSize * 1.2 * .714;
8343 + var firstLine = true;
8344 + var animatorProps;
8345 + var animatorSelector;
8346 + var j;
8347 + var jLen;
8348 + var letterValue;
8349 + jLen = animators.length;
8350 + var mult;
8351 + var ind = -1;
8352 + var offf;
8353 + var xPathPos;
8354 + var yPathPos;
8355 + var initPathPos = currentLength;
8356 + var initSegmentInd = segmentInd;
8357 + var initPointInd = pointInd;
8358 + var currentLine = -1;
8359 + var elemOpacity;
8360 + var sc;
8361 + var sw;
8362 + var fc;
8363 + var k;
8364 + var letterSw;
8365 + var letterSc;
8366 + var letterFc;
8367 + var letterM = "";
8368 + var letterP = this.defaultPropsArray;
8369 + var letterO;
8370 + if (documentData.j === 2 || documentData.j === 1) {
8371 + var animatorJustifyOffset = 0;
8372 + var animatorFirstCharOffset = 0;
8373 + var justifyOffsetMult = documentData.j === 2 ? -.5 : -1;
8374 + var lastIndex = 0;
8375 + var isNewLine = true;
8376 + for (i = 0; i < len; i += 1) if (letters[i].n) {
8377 + if (animatorJustifyOffset) animatorJustifyOffset += animatorFirstCharOffset;
8378 + while (lastIndex < i) {
8379 + letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;
8380 + lastIndex += 1;
8381 + }
8382 + animatorJustifyOffset = 0;
8383 + isNewLine = true;
8384 + } else {
8385 + for (j = 0; j < jLen; j += 1) {
8386 + animatorProps = animators[j].a;
8387 + if (animatorProps.t.propType) {
8388 + if (isNewLine && documentData.j === 2) animatorFirstCharOffset += animatorProps.t.v * justifyOffsetMult;
8389 + animatorSelector = animators[j].s;
8390 + mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);
8391 + if (mult.length) animatorJustifyOffset += animatorProps.t.v * mult[0] * justifyOffsetMult;
8392 + else animatorJustifyOffset += animatorProps.t.v * mult * justifyOffsetMult;
8393 + }
8394 + }
8395 + isNewLine = false;
8396 + }
8397 + if (animatorJustifyOffset) animatorJustifyOffset += animatorFirstCharOffset;
8398 + while (lastIndex < i) {
8399 + letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;
8400 + lastIndex += 1;
8401 + }
8402 + }
8403 + for (i = 0; i < len; i += 1) {
8404 + matrixHelper.reset();
8405 + elemOpacity = 1;
8406 + if (letters[i].n) {
8407 + xPos = 0;
8408 + yPos += documentData.yOffset;
8409 + yPos += firstLine ? 1 : 0;
8410 + currentLength = initPathPos;
8411 + firstLine = false;
8412 + if (this._hasMaskedPath) {
8413 + segmentInd = initSegmentInd;
8414 + pointInd = initPointInd;
8415 + points = segments[segmentInd].points;
8416 + prevPoint = points[pointInd - 1];
8417 + currentPoint = points[pointInd];
8418 + partialLength = currentPoint.partialLength;
8419 + segmentLength = 0;
8420 + }
8421 + letterM = "";
8422 + letterFc = "";
8423 + letterSw = "";
8424 + letterO = "";
8425 + letterP = this.defaultPropsArray;
8426 + } else {
8427 + if (this._hasMaskedPath) {
8428 + if (currentLine !== letters[i].line) {
8429 + switch (documentData.j) {
8430 + case 1:
8431 + currentLength += totalLength - documentData.lineWidths[letters[i].line];
8432 + break;
8433 + case 2:
8434 + currentLength += (totalLength - documentData.lineWidths[letters[i].line]) / 2;
8435 + break;
8436 + default: break;
8437 + }
8438 + currentLine = letters[i].line;
8439 + }
8440 + if (ind !== letters[i].ind) {
8441 + if (letters[ind]) currentLength += letters[ind].extra;
8442 + currentLength += letters[i].an / 2;
8443 + ind = letters[i].ind;
8444 + }
8445 + currentLength += alignment[0] * letters[i].an * .005;
8446 + var animatorOffset = 0;
8447 + for (j = 0; j < jLen; j += 1) {
8448 + animatorProps = animators[j].a;
8449 + if (animatorProps.p.propType) {
8450 + animatorSelector = animators[j].s;
8451 + mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);
8452 + if (mult.length) animatorOffset += animatorProps.p.v[0] * mult[0];
8453 + else animatorOffset += animatorProps.p.v[0] * mult;
8454 + }
8455 + if (animatorProps.a.propType) {
8456 + animatorSelector = animators[j].s;
8457 + mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);
8458 + if (mult.length) animatorOffset += animatorProps.a.v[0] * mult[0];
8459 + else animatorOffset += animatorProps.a.v[0] * mult;
8460 + }
8461 + }
8462 + flag = true;
8463 + if (this._pathData.a.v) {
8464 + currentLength = letters[0].an * .5 + (totalLength - this._pathData.f.v - letters[0].an * .5 - letters[letters.length - 1].an * .5) * ind / (len - 1);
8465 + currentLength += this._pathData.f.v;
8466 + }
8467 + while (flag) if (segmentLength + partialLength >= currentLength + animatorOffset || !points) {
8468 + perc = (currentLength + animatorOffset - segmentLength) / currentPoint.partialLength;
8469 + xPathPos = prevPoint.point[0] + (currentPoint.point[0] - prevPoint.point[0]) * perc;
8470 + yPathPos = prevPoint.point[1] + (currentPoint.point[1] - prevPoint.point[1]) * perc;
8471 + matrixHelper.translate(-alignment[0] * letters[i].an * .005, -(alignment[1] * yOff) * .01);
8472 + flag = false;
8473 + } else if (points) {
8474 + segmentLength += currentPoint.partialLength;
8475 + pointInd += 1;
8476 + if (pointInd >= points.length) {
8477 + pointInd = 0;
8478 + segmentInd += 1;
8479 + if (!segments[segmentInd]) if (mask.v.c) {
8480 + pointInd = 0;
8481 + segmentInd = 0;
8482 + points = segments[segmentInd].points;
8483 + } else {
8484 + segmentLength -= currentPoint.partialLength;
8485 + points = null;
8486 + }
8487 + else points = segments[segmentInd].points;
8488 + }
8489 + if (points) {
8490 + prevPoint = currentPoint;
8491 + currentPoint = points[pointInd];
8492 + partialLength = currentPoint.partialLength;
8493 + }
8494 + }
8495 + offf = letters[i].an / 2 - letters[i].add;
8496 + matrixHelper.translate(-offf, 0, 0);
8497 + } else {
8498 + offf = letters[i].an / 2 - letters[i].add;
8499 + matrixHelper.translate(-offf, 0, 0);
8500 + matrixHelper.translate(-alignment[0] * letters[i].an * .005, -alignment[1] * yOff * .01, 0);
8501 + }
8502 + for (j = 0; j < jLen; j += 1) {
8503 + animatorProps = animators[j].a;
8504 + if (animatorProps.t.propType) {
8505 + animatorSelector = animators[j].s;
8506 + mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);
8507 + if (xPos !== 0 || documentData.j !== 0) if (this._hasMaskedPath) if (mult.length) currentLength += animatorProps.t.v * mult[0];
8508 + else currentLength += animatorProps.t.v * mult;
8509 + else if (mult.length) xPos += animatorProps.t.v * mult[0];
8510 + else xPos += animatorProps.t.v * mult;
8511 + }
8512 + }
8513 + if (documentData.strokeWidthAnim) sw = documentData.sw || 0;
8514 + if (documentData.strokeColorAnim) if (documentData.sc) sc = [
8515 + documentData.sc[0],
8516 + documentData.sc[1],
8517 + documentData.sc[2]
8518 + ];
8519 + else sc = [
8520 + 0,
8521 + 0,
8522 + 0
8523 + ];
8524 + if (documentData.fillColorAnim && documentData.fc) fc = [
8525 + documentData.fc[0],
8526 + documentData.fc[1],
8527 + documentData.fc[2]
8528 + ];
8529 + for (j = 0; j < jLen; j += 1) {
8530 + animatorProps = animators[j].a;
8531 + if (animatorProps.a.propType) {
8532 + animatorSelector = animators[j].s;
8533 + mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);
8534 + if (mult.length) matrixHelper.translate(-animatorProps.a.v[0] * mult[0], -animatorProps.a.v[1] * mult[1], animatorProps.a.v[2] * mult[2]);
8535 + else matrixHelper.translate(-animatorProps.a.v[0] * mult, -animatorProps.a.v[1] * mult, animatorProps.a.v[2] * mult);
8536 + }
8537 + }
8538 + for (j = 0; j < jLen; j += 1) {
8539 + animatorProps = animators[j].a;
8540 + if (animatorProps.s.propType) {
8541 + animatorSelector = animators[j].s;
8542 + mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);
8543 + if (mult.length) matrixHelper.scale(1 + (animatorProps.s.v[0] - 1) * mult[0], 1 + (animatorProps.s.v[1] - 1) * mult[1], 1);
8544 + else matrixHelper.scale(1 + (animatorProps.s.v[0] - 1) * mult, 1 + (animatorProps.s.v[1] - 1) * mult, 1);
8545 + }
8546 + }
8547 + for (j = 0; j < jLen; j += 1) {
8548 + animatorProps = animators[j].a;
8549 + animatorSelector = animators[j].s;
8550 + mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);
8551 + if (animatorProps.sk.propType) if (mult.length) matrixHelper.skewFromAxis(-animatorProps.sk.v * mult[0], animatorProps.sa.v * mult[1]);
8552 + else matrixHelper.skewFromAxis(-animatorProps.sk.v * mult, animatorProps.sa.v * mult);
8553 + if (animatorProps.r.propType) if (mult.length) matrixHelper.rotateZ(-animatorProps.r.v * mult[2]);
8554 + else matrixHelper.rotateZ(-animatorProps.r.v * mult);
8555 + if (animatorProps.ry.propType) if (mult.length) matrixHelper.rotateY(animatorProps.ry.v * mult[1]);
8556 + else matrixHelper.rotateY(animatorProps.ry.v * mult);
8557 + if (animatorProps.rx.propType) if (mult.length) matrixHelper.rotateX(animatorProps.rx.v * mult[0]);
8558 + else matrixHelper.rotateX(animatorProps.rx.v * mult);
8559 + if (animatorProps.o.propType) if (mult.length) elemOpacity += (animatorProps.o.v * mult[0] - elemOpacity) * mult[0];
8560 + else elemOpacity += (animatorProps.o.v * mult - elemOpacity) * mult;
8561 + if (documentData.strokeWidthAnim && animatorProps.sw.propType) if (mult.length) sw += animatorProps.sw.v * mult[0];
8562 + else sw += animatorProps.sw.v * mult;
8563 + if (documentData.strokeColorAnim && animatorProps.sc.propType) for (k = 0; k < 3; k += 1) if (mult.length) sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult[0];
8564 + else sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult;
8565 + if (documentData.fillColorAnim && documentData.fc) {
8566 + if (animatorProps.fc.propType) for (k = 0; k < 3; k += 1) if (mult.length) fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult[0];
8567 + else fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult;
8568 + if (animatorProps.fh.propType) if (mult.length) fc = addHueToRGB(fc, animatorProps.fh.v * mult[0]);
8569 + else fc = addHueToRGB(fc, animatorProps.fh.v * mult);
8570 + if (animatorProps.fs.propType) if (mult.length) fc = addSaturationToRGB(fc, animatorProps.fs.v * mult[0]);
8571 + else fc = addSaturationToRGB(fc, animatorProps.fs.v * mult);
8572 + if (animatorProps.fb.propType) if (mult.length) fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult[0]);
8573 + else fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult);
8574 + }
8575 + }
8576 + for (j = 0; j < jLen; j += 1) {
8577 + animatorProps = animators[j].a;
8578 + if (animatorProps.p.propType) {
8579 + animatorSelector = animators[j].s;
8580 + mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);
8581 + if (this._hasMaskedPath) if (mult.length) matrixHelper.translate(0, animatorProps.p.v[1] * mult[0], -animatorProps.p.v[2] * mult[1]);
8582 + else matrixHelper.translate(0, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);
8583 + else if (mult.length) matrixHelper.translate(animatorProps.p.v[0] * mult[0], animatorProps.p.v[1] * mult[1], -animatorProps.p.v[2] * mult[2]);
8584 + else matrixHelper.translate(animatorProps.p.v[0] * mult, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);
8585 + }
8586 + }
8587 + if (documentData.strokeWidthAnim) letterSw = sw < 0 ? 0 : sw;
8588 + if (documentData.strokeColorAnim) letterSc = "rgb(" + Math.round(sc[0] * 255) + "," + Math.round(sc[1] * 255) + "," + Math.round(sc[2] * 255) + ")";
8589 + if (documentData.fillColorAnim && documentData.fc) letterFc = "rgb(" + Math.round(fc[0] * 255) + "," + Math.round(fc[1] * 255) + "," + Math.round(fc[2] * 255) + ")";
8590 + if (this._hasMaskedPath) {
8591 + matrixHelper.translate(0, -documentData.ls);
8592 + matrixHelper.translate(0, alignment[1] * yOff * .01 + yPos, 0);
8593 + if (this._pathData.p.v) {
8594 + tanAngle = (currentPoint.point[1] - prevPoint.point[1]) / (currentPoint.point[0] - prevPoint.point[0]);
8595 + var rot = Math.atan(tanAngle) * 180 / Math.PI;
8596 + if (currentPoint.point[0] < prevPoint.point[0]) rot += 180;
8597 + matrixHelper.rotate(-rot * Math.PI / 180);
8598 + }
8599 + matrixHelper.translate(xPathPos, yPathPos, 0);
8600 + currentLength -= alignment[0] * letters[i].an * .005;
8601 + if (letters[i + 1] && ind !== letters[i + 1].ind) {
8602 + currentLength += letters[i].an / 2;
8603 + currentLength += documentData.tr * .001 * documentData.finalSize;
8604 + }
8605 + } else {
8606 + matrixHelper.translate(xPos, yPos, 0);
8607 + if (documentData.ps) matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);
8608 + switch (documentData.j) {
8609 + case 1:
8610 + matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]), 0, 0);
8611 + break;
8612 + case 2:
8613 + matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]) / 2, 0, 0);
8614 + break;
8615 + default: break;
8616 + }
8617 + matrixHelper.translate(0, -documentData.ls);
8618 + matrixHelper.translate(offf, 0, 0);
8619 + matrixHelper.translate(alignment[0] * letters[i].an * .005, alignment[1] * yOff * .01, 0);
8620 + xPos += letters[i].l + documentData.tr * .001 * documentData.finalSize;
8621 + }
8622 + if (renderType === "html") letterM = matrixHelper.toCSS();
8623 + else if (renderType === "svg") letterM = matrixHelper.to2dCSS();
8624 + else letterP = [
8625 + matrixHelper.props[0],
8626 + matrixHelper.props[1],
8627 + matrixHelper.props[2],
8628 + matrixHelper.props[3],
8629 + matrixHelper.props[4],
8630 + matrixHelper.props[5],
8631 + matrixHelper.props[6],
8632 + matrixHelper.props[7],
8633 + matrixHelper.props[8],
8634 + matrixHelper.props[9],
8635 + matrixHelper.props[10],
8636 + matrixHelper.props[11],
8637 + matrixHelper.props[12],
8638 + matrixHelper.props[13],
8639 + matrixHelper.props[14],
8640 + matrixHelper.props[15]
8641 + ];
8642 + letterO = elemOpacity;
8643 + }
8644 + if (renderedLettersCount <= i) {
8645 + letterValue = new LetterProps(letterO, letterSw, letterSc, letterFc, letterM, letterP);
8646 + this.renderedLetters.push(letterValue);
8647 + renderedLettersCount += 1;
8648 + this.lettersChangedFlag = true;
8649 + } else {
8650 + letterValue = this.renderedLetters[i];
8651 + this.lettersChangedFlag = letterValue.update(letterO, letterSw, letterSc, letterFc, letterM, letterP) || this.lettersChangedFlag;
8652 + }
8653 + }
8654 + };
8655 + TextAnimatorProperty.prototype.getValue = function() {
8656 + if (this._elem.globalData.frameId === this._frameId) return;
8657 + this._frameId = this._elem.globalData.frameId;
8658 + this.iterateDynamicProperties();
8659 + };
8660 + TextAnimatorProperty.prototype.mHelper = new Matrix();
8661 + TextAnimatorProperty.prototype.defaultPropsArray = [];
8662 + extendPrototype([DynamicPropertyContainer], TextAnimatorProperty);
8663 + function ITextElement() {}
8664 + ITextElement.prototype.initElement = function(data, globalData, comp) {
8665 + this.lettersChangedFlag = true;
8666 + this.initFrame();
8667 + this.initBaseData(data, globalData, comp);
8668 + this.textProperty = new TextProperty(this, data.t, this.dynamicProperties);
8669 + this.textAnimator = new TextAnimatorProperty(data.t, this.renderType, this);
8670 + this.initTransform(data, globalData, comp);
8671 + this.initHierarchy();
8672 + this.initRenderable();
8673 + this.initRendererElement();
8674 + this.createContainerElements();
8675 + this.createRenderableComponents();
8676 + this.createContent();
8677 + this.hide();
8678 + this.textAnimator.searchProperties(this.dynamicProperties);
8679 + };
8680 + ITextElement.prototype.prepareFrame = function(num) {
8681 + this._mdf = false;
8682 + this.prepareRenderableFrame(num);
8683 + this.prepareProperties(num, this.isInRange);
8684 + };
8685 + ITextElement.prototype.createPathShape = function(matrixHelper, shapes) {
8686 + var j;
8687 + var jLen = shapes.length;
8688 + var pathNodes;
8689 + var shapeStr = "";
8690 + for (j = 0; j < jLen; j += 1) if (shapes[j].ty === "sh") {
8691 + pathNodes = shapes[j].ks.k;
8692 + shapeStr += buildShapeString(pathNodes, pathNodes.i.length, true, matrixHelper);
8693 + }
8694 + return shapeStr;
8695 + };
8696 + ITextElement.prototype.updateDocumentData = function(newData, index) {
8697 + this.textProperty.updateDocumentData(newData, index);
8698 + };
8699 + ITextElement.prototype.canResizeFont = function(_canResize) {
8700 + this.textProperty.canResizeFont(_canResize);
8701 + };
8702 + ITextElement.prototype.setMinimumFontSize = function(_fontSize) {
8703 + this.textProperty.setMinimumFontSize(_fontSize);
8704 + };
8705 + ITextElement.prototype.applyTextPropertiesToMatrix = function(documentData, matrixHelper, lineNumber, xPos, yPos) {
8706 + if (documentData.ps) matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);
8707 + matrixHelper.translate(0, -documentData.ls, 0);
8708 + switch (documentData.j) {
8709 + case 1:
8710 + matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]), 0, 0);
8711 + break;
8712 + case 2:
8713 + matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]) / 2, 0, 0);
8714 + break;
8715 + default: break;
8716 + }
8717 + matrixHelper.translate(xPos, yPos, 0);
8718 + };
8719 + ITextElement.prototype.buildColor = function(colorData) {
8720 + return "rgb(" + Math.round(colorData[0] * 255) + "," + Math.round(colorData[1] * 255) + "," + Math.round(colorData[2] * 255) + ")";
8721 + };
8722 + ITextElement.prototype.emptyProp = new LetterProps();
8723 + ITextElement.prototype.destroy = function() {};
8724 + ITextElement.prototype.validateText = function() {
8725 + if (this.textProperty._mdf || this.textProperty._isFirstFrame) {
8726 + this.buildNewText();
8727 + this.textProperty._isFirstFrame = false;
8728 + this.textProperty._mdf = false;
8729 + }
8730 + };
8731 + var emptyShapeData = { shapes: [] };
8732 + function SVGTextLottieElement(data, globalData, comp) {
8733 + this.textSpans = [];
8734 + this.renderType = "svg";
8735 + this.initElement(data, globalData, comp);
8736 + }
8737 + extendPrototype([
8738 + BaseElement,
8739 + TransformElement,
8740 + SVGBaseElement,
8741 + HierarchyElement,
8742 + FrameElement,
8743 + RenderableDOMElement,
8744 + ITextElement
8745 + ], SVGTextLottieElement);
8746 + SVGTextLottieElement.prototype.createContent = function() {
8747 + if (this.data.singleShape && !this.globalData.fontManager.chars) this.textContainer = createNS("text");
8748 + };
8749 + SVGTextLottieElement.prototype.buildTextContents = function(textArray) {
8750 + var i = 0;
8751 + var len = textArray.length;
8752 + var textContents = [];
8753 + var currentTextContent = "";
8754 + while (i < len) {
8755 + if (textArray[i] === String.fromCharCode(13) || textArray[i] === String.fromCharCode(3)) {
8756 + textContents.push(currentTextContent);
8757 + currentTextContent = "";
8758 + } else currentTextContent += textArray[i];
8759 + i += 1;
8760 + }
8761 + textContents.push(currentTextContent);
8762 + return textContents;
8763 + };
8764 + SVGTextLottieElement.prototype.buildShapeData = function(data, scale) {
8765 + if (data.shapes && data.shapes.length) {
8766 + var shape = data.shapes[0];
8767 + if (shape.it) {
8768 + var shapeItem = shape.it[shape.it.length - 1];
8769 + if (shapeItem.s) {
8770 + shapeItem.s.k[0] = scale;
8771 + shapeItem.s.k[1] = scale;
8772 + }
8773 + }
8774 + }
8775 + return data;
8776 + };
8777 + SVGTextLottieElement.prototype.buildNewText = function() {
8778 + this.addDynamicProperty(this);
8779 + var i;
8780 + var len;
8781 + var documentData = this.textProperty.currentData;
8782 + this.renderedLetters = createSizedArray(documentData ? documentData.l.length : 0);
8783 + if (documentData.fc) this.layerElement.setAttribute("fill", this.buildColor(documentData.fc));
8784 + else this.layerElement.setAttribute("fill", "rgba(0,0,0,0)");
8785 + if (documentData.sc) {
8786 + this.layerElement.setAttribute("stroke", this.buildColor(documentData.sc));
8787 + this.layerElement.setAttribute("stroke-width", documentData.sw);
8788 + }
8789 + this.layerElement.setAttribute("font-size", documentData.finalSize);
8790 + var fontData = this.globalData.fontManager.getFontByName(documentData.f);
8791 + if (fontData.fClass) this.layerElement.setAttribute("class", fontData.fClass);
8792 + else {
8793 + this.layerElement.setAttribute("font-family", fontData.fFamily);
8794 + var fWeight = documentData.fWeight;
8795 + var fStyle = documentData.fStyle;
8796 + this.layerElement.setAttribute("font-style", fStyle);
8797 + this.layerElement.setAttribute("font-weight", fWeight);
8798 + }
8799 + this.layerElement.setAttribute("aria-label", documentData.t);
8800 + var letters = documentData.l || [];
8801 + var usesGlyphs = !!this.globalData.fontManager.chars;
8802 + len = letters.length;
8803 + var tSpan;
8804 + var matrixHelper = this.mHelper;
8805 + var shapeStr = "";
8806 + var singleShape = this.data.singleShape;
8807 + var xPos = 0;
8808 + var yPos = 0;
8809 + var firstLine = true;
8810 + var trackingOffset = documentData.tr * .001 * documentData.finalSize;
8811 + if (singleShape && !usesGlyphs && !documentData.sz) {
8812 + var tElement = this.textContainer;
8813 + var justify = "start";
8814 + switch (documentData.j) {
8815 + case 1:
8816 + justify = "end";
8817 + break;
8818 + case 2:
8819 + justify = "middle";
8820 + break;
8821 + default:
8822 + justify = "start";
8823 + break;
8824 + }
8825 + tElement.setAttribute("text-anchor", justify);
8826 + tElement.setAttribute("letter-spacing", trackingOffset);
8827 + var textContent = this.buildTextContents(documentData.finalText);
8828 + len = textContent.length;
8829 + yPos = documentData.ps ? documentData.ps[1] + documentData.ascent : 0;
8830 + for (i = 0; i < len; i += 1) {
8831 + tSpan = this.textSpans[i].span || createNS("tspan");
8832 + tSpan.textContent = textContent[i];
8833 + tSpan.setAttribute("x", 0);
8834 + tSpan.setAttribute("y", yPos);
8835 + tSpan.style.display = "inherit";
8836 + tElement.appendChild(tSpan);
8837 + if (!this.textSpans[i]) this.textSpans[i] = {
8838 + span: null,
8839 + glyph: null
8840 + };
8841 + this.textSpans[i].span = tSpan;
8842 + yPos += documentData.finalLineHeight;
8843 + }
8844 + this.layerElement.appendChild(tElement);
8845 + } else {
8846 + var cachedSpansLength = this.textSpans.length;
8847 + var charData;
8848 + for (i = 0; i < len; i += 1) {
8849 + if (!this.textSpans[i]) this.textSpans[i] = {
8850 + span: null,
8851 + childSpan: null,
8852 + glyph: null
8853 + };
8854 + if (!usesGlyphs || !singleShape || i === 0) {
8855 + tSpan = cachedSpansLength > i ? this.textSpans[i].span : createNS(usesGlyphs ? "g" : "text");
8856 + if (cachedSpansLength <= i) {
8857 + tSpan.setAttribute("stroke-linecap", "butt");
8858 + tSpan.setAttribute("stroke-linejoin", "round");
8859 + tSpan.setAttribute("stroke-miterlimit", "4");
8860 + this.textSpans[i].span = tSpan;
8861 + if (usesGlyphs) {
8862 + var childSpan = createNS("g");
8863 + tSpan.appendChild(childSpan);
8864 + this.textSpans[i].childSpan = childSpan;
8865 + }
8866 + this.textSpans[i].span = tSpan;
8867 + this.layerElement.appendChild(tSpan);
8868 + }
8869 + tSpan.style.display = "inherit";
8870 + }
8871 + matrixHelper.reset();
8872 + if (singleShape) {
8873 + if (letters[i].n) {
8874 + xPos = -trackingOffset;
8875 + yPos += documentData.yOffset;
8876 + yPos += firstLine ? 1 : 0;
8877 + firstLine = false;
8878 + }
8879 + this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);
8880 + xPos += letters[i].l || 0;
8881 + xPos += trackingOffset;
8882 + }
8883 + if (usesGlyphs) {
8884 + charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);
8885 + var glyphElement;
8886 + if (charData.t === 1) glyphElement = new SVGCompElement(charData.data, this.globalData, this);
8887 + else {
8888 + var data = emptyShapeData;
8889 + if (charData.data && charData.data.shapes) data = this.buildShapeData(charData.data, documentData.finalSize);
8890 + glyphElement = new SVGShapeElement(data, this.globalData, this);
8891 + }
8892 + if (this.textSpans[i].glyph) {
8893 + var glyph = this.textSpans[i].glyph;
8894 + this.textSpans[i].childSpan.removeChild(glyph.layerElement);
8895 + glyph.destroy();
8896 + }
8897 + this.textSpans[i].glyph = glyphElement;
8898 + glyphElement._debug = true;
8899 + glyphElement.prepareFrame(0);
8900 + glyphElement.renderFrame();
8901 + this.textSpans[i].childSpan.appendChild(glyphElement.layerElement);
8902 + if (charData.t === 1) this.textSpans[i].childSpan.setAttribute("transform", "scale(" + documentData.finalSize / 100 + "," + documentData.finalSize / 100 + ")");
8903 + } else {
8904 + if (singleShape) tSpan.setAttribute("transform", "translate(" + matrixHelper.props[12] + "," + matrixHelper.props[13] + ")");
8905 + tSpan.textContent = letters[i].val;
8906 + tSpan.setAttributeNS("http://www.w3.org/XML/1998/namespace", "xml:space", "preserve");
8907 + }
8908 + }
8909 + if (singleShape && tSpan) tSpan.setAttribute("d", shapeStr);
8910 + }
8911 + while (i < this.textSpans.length) {
8912 + this.textSpans[i].span.style.display = "none";
8913 + i += 1;
8914 + }
8915 + this._sizeChanged = true;
8916 + };
8917 + SVGTextLottieElement.prototype.sourceRectAtTime = function() {
8918 + this.prepareFrame(this.comp.renderedFrame - this.data.st);
8919 + this.renderInnerContent();
8920 + if (this._sizeChanged) {
8921 + this._sizeChanged = false;
8922 + var textBox = this.layerElement.getBBox();
8923 + this.bbox = {
8924 + top: textBox.y,
8925 + left: textBox.x,
8926 + width: textBox.width,
8927 + height: textBox.height
8928 + };
8929 + }
8930 + return this.bbox;
8931 + };
8932 + SVGTextLottieElement.prototype.getValue = function() {
8933 + var i;
8934 + var len = this.textSpans.length;
8935 + var glyphElement;
8936 + this.renderedFrame = this.comp.renderedFrame;
8937 + for (i = 0; i < len; i += 1) {
8938 + glyphElement = this.textSpans[i].glyph;
8939 + if (glyphElement) {
8940 + glyphElement.prepareFrame(this.comp.renderedFrame - this.data.st);
8941 + if (glyphElement._mdf) this._mdf = true;
8942 + }
8943 + }
8944 + };
8945 + SVGTextLottieElement.prototype.renderInnerContent = function() {
8946 + this.validateText();
8947 + if (!this.data.singleShape || this._mdf) {
8948 + this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);
8949 + if (this.lettersChangedFlag || this.textAnimator.lettersChangedFlag) {
8950 + this._sizeChanged = true;
8951 + var i;
8952 + var len;
8953 + var renderedLetters = this.textAnimator.renderedLetters;
8954 + var letters = this.textProperty.currentData.l;
8955 + len = letters.length;
8956 + var renderedLetter;
8957 + var textSpan;
8958 + var glyphElement;
8959 + for (i = 0; i < len; i += 1) if (!letters[i].n) {
8960 + renderedLetter = renderedLetters[i];
8961 + textSpan = this.textSpans[i].span;
8962 + glyphElement = this.textSpans[i].glyph;
8963 + if (glyphElement) glyphElement.renderFrame();
8964 + if (renderedLetter._mdf.m) textSpan.setAttribute("transform", renderedLetter.m);
8965 + if (renderedLetter._mdf.o) textSpan.setAttribute("opacity", renderedLetter.o);
8966 + if (renderedLetter._mdf.sw) textSpan.setAttribute("stroke-width", renderedLetter.sw);
8967 + if (renderedLetter._mdf.sc) textSpan.setAttribute("stroke", renderedLetter.sc);
8968 + if (renderedLetter._mdf.fc) textSpan.setAttribute("fill", renderedLetter.fc);
8969 + }
8970 + }
8971 + }
8972 + };
8973 + function ISolidElement(data, globalData, comp) {
8974 + this.initElement(data, globalData, comp);
8975 + }
8976 + extendPrototype([IImageElement], ISolidElement);
8977 + ISolidElement.prototype.createContent = function() {
8978 + var rect = createNS("rect");
8979 + rect.setAttribute("width", this.data.sw);
8980 + rect.setAttribute("height", this.data.sh);
8981 + rect.setAttribute("fill", this.data.sc);
8982 + this.layerElement.appendChild(rect);
8983 + };
8984 + function NullElement(data, globalData, comp) {
8985 + this.initFrame();
8986 + this.initBaseData(data, globalData, comp);
8987 + this.initFrame();
8988 + this.initTransform(data, globalData, comp);
8989 + this.initHierarchy();
8990 + }
8991 + NullElement.prototype.prepareFrame = function(num) {
8992 + this.prepareProperties(num, true);
8993 + };
8994 + NullElement.prototype.renderFrame = function() {};
8995 + NullElement.prototype.getBaseElement = function() {
8996 + return null;
8997 + };
8998 + NullElement.prototype.destroy = function() {};
8999 + NullElement.prototype.sourceRectAtTime = function() {};
9000 + NullElement.prototype.hide = function() {};
9001 + extendPrototype([
9002 + BaseElement,
9003 + TransformElement,
9004 + HierarchyElement,
9005 + FrameElement
9006 + ], NullElement);
9007 + function SVGRendererBase() {}
9008 + extendPrototype([BaseRenderer], SVGRendererBase);
9009 + SVGRendererBase.prototype.createNull = function(data) {
9010 + return new NullElement(data, this.globalData, this);
9011 + };
9012 + SVGRendererBase.prototype.createShape = function(data) {
9013 + return new SVGShapeElement(data, this.globalData, this);
9014 + };
9015 + SVGRendererBase.prototype.createText = function(data) {
9016 + return new SVGTextLottieElement(data, this.globalData, this);
9017 + };
9018 + SVGRendererBase.prototype.createImage = function(data) {
9019 + return new IImageElement(data, this.globalData, this);
9020 + };
9021 + SVGRendererBase.prototype.createSolid = function(data) {
9022 + return new ISolidElement(data, this.globalData, this);
9023 + };
9024 + SVGRendererBase.prototype.configAnimation = function(animData) {
9025 + this.svgElement.setAttribute("xmlns", "http://www.w3.org/2000/svg");
9026 + this.svgElement.setAttribute("xmlns:xlink", "http://www.w3.org/1999/xlink");
9027 + if (this.renderConfig.viewBoxSize) this.svgElement.setAttribute("viewBox", this.renderConfig.viewBoxSize);
9028 + else this.svgElement.setAttribute("viewBox", "0 0 " + animData.w + " " + animData.h);
9029 + if (!this.renderConfig.viewBoxOnly) {
9030 + this.svgElement.setAttribute("width", animData.w);
9031 + this.svgElement.setAttribute("height", animData.h);
9032 + this.svgElement.style.width = "100%";
9033 + this.svgElement.style.height = "100%";
9034 + this.svgElement.style.transform = "translate3d(0,0,0)";
9035 + this.svgElement.style.contentVisibility = this.renderConfig.contentVisibility;
9036 + }
9037 + if (this.renderConfig.width) this.svgElement.setAttribute("width", this.renderConfig.width);
9038 + if (this.renderConfig.height) this.svgElement.setAttribute("height", this.renderConfig.height);
9039 + if (this.renderConfig.className) this.svgElement.setAttribute("class", this.renderConfig.className);
9040 + if (this.renderConfig.id) this.svgElement.setAttribute("id", this.renderConfig.id);
9041 + if (this.renderConfig.focusable !== void 0) this.svgElement.setAttribute("focusable", this.renderConfig.focusable);
9042 + this.svgElement.setAttribute("preserveAspectRatio", this.renderConfig.preserveAspectRatio);
9043 + this.animationItem.wrapper.appendChild(this.svgElement);
9044 + var defs = this.globalData.defs;
9045 + this.setupGlobalData(animData, defs);
9046 + this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;
9047 + this.data = animData;
9048 + var maskElement = createNS("clipPath");
9049 + var rect = createNS("rect");
9050 + rect.setAttribute("width", animData.w);
9051 + rect.setAttribute("height", animData.h);
9052 + rect.setAttribute("x", 0);
9053 + rect.setAttribute("y", 0);
9054 + var maskId = createElementID();
9055 + maskElement.setAttribute("id", maskId);
9056 + maskElement.appendChild(rect);
9057 + this.layerElement.setAttribute("clip-path", "url(" + getLocationHref() + "#" + maskId + ")");
9058 + defs.appendChild(maskElement);
9059 + this.layers = animData.layers;
9060 + this.elements = createSizedArray(animData.layers.length);
9061 + };
9062 + SVGRendererBase.prototype.destroy = function() {
9063 + if (this.animationItem.wrapper) this.animationItem.wrapper.innerText = "";
9064 + this.layerElement = null;
9065 + this.globalData.defs = null;
9066 + var i;
9067 + var len = this.layers ? this.layers.length : 0;
9068 + for (i = 0; i < len; i += 1) if (this.elements[i] && this.elements[i].destroy) this.elements[i].destroy();
9069 + this.elements.length = 0;
9070 + this.destroyed = true;
9071 + this.animationItem = null;
9072 + };
9073 + SVGRendererBase.prototype.updateContainerSize = function() {};
9074 + SVGRendererBase.prototype.findIndexByInd = function(ind) {
9075 + var i = 0;
9076 + var len = this.layers.length;
9077 + for (i = 0; i < len; i += 1) if (this.layers[i].ind === ind) return i;
9078 + return -1;
9079 + };
9080 + SVGRendererBase.prototype.buildItem = function(pos) {
9081 + var elements = this.elements;
9082 + if (elements[pos] || this.layers[pos].ty === 99) return;
9083 + elements[pos] = true;
9084 + var element = this.createItem(this.layers[pos]);
9085 + elements[pos] = element;
9086 + if (getExpressionsPlugin()) {
9087 + if (this.layers[pos].ty === 0) this.globalData.projectInterface.registerComposition(element);
9088 + element.initExpressions();
9089 + }
9090 + this.appendElementInPos(element, pos);
9091 + if (this.layers[pos].tt) {
9092 + var elementIndex = "tp" in this.layers[pos] ? this.findIndexByInd(this.layers[pos].tp) : pos - 1;
9093 + if (elementIndex === -1) return;
9094 + if (!this.elements[elementIndex] || this.elements[elementIndex] === true) {
9095 + this.buildItem(elementIndex);
9096 + this.addPendingElement(element);
9097 + } else {
9098 + var matteMask = elements[elementIndex].getMatte(this.layers[pos].tt);
9099 + element.setMatte(matteMask);
9100 + }
9101 + }
9102 + };
9103 + SVGRendererBase.prototype.checkPendingElements = function() {
9104 + while (this.pendingElements.length) {
9105 + var element = this.pendingElements.pop();
9106 + element.checkParenting();
9107 + if (element.data.tt) {
9108 + var i = 0;
9109 + var len = this.elements.length;
9110 + while (i < len) {
9111 + if (this.elements[i] === element) {
9112 + var elementIndex = "tp" in element.data ? this.findIndexByInd(element.data.tp) : i - 1;
9113 + var matteMask = this.elements[elementIndex].getMatte(this.layers[i].tt);
9114 + element.setMatte(matteMask);
9115 + break;
9116 + }
9117 + i += 1;
9118 + }
9119 + }
9120 + }
9121 + };
9122 + SVGRendererBase.prototype.renderFrame = function(num) {
9123 + if (this.renderedFrame === num || this.destroyed) return;
9124 + if (num === null) num = this.renderedFrame;
9125 + else this.renderedFrame = num;
9126 + this.globalData.frameNum = num;
9127 + this.globalData.frameId += 1;
9128 + this.globalData.projectInterface.currentFrame = num;
9129 + this.globalData._mdf = false;
9130 + var i;
9131 + var len = this.layers.length;
9132 + if (!this.completeLayers) this.checkLayers(num);
9133 + for (i = len - 1; i >= 0; i -= 1) if (this.completeLayers || this.elements[i]) this.elements[i].prepareFrame(num - this.layers[i].st);
9134 + if (this.globalData._mdf) {
9135 + for (i = 0; i < len; i += 1) if (this.completeLayers || this.elements[i]) this.elements[i].renderFrame();
9136 + }
9137 + };
9138 + SVGRendererBase.prototype.appendElementInPos = function(element, pos) {
9139 + var newElement = element.getBaseElement();
9140 + if (!newElement) return;
9141 + var i = 0;
9142 + var nextElement;
9143 + while (i < pos) {
9144 + if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement()) nextElement = this.elements[i].getBaseElement();
9145 + i += 1;
9146 + }
9147 + if (nextElement) this.layerElement.insertBefore(newElement, nextElement);
9148 + else this.layerElement.appendChild(newElement);
9149 + };
9150 + SVGRendererBase.prototype.hide = function() {
9151 + this.layerElement.style.display = "none";
9152 + };
9153 + SVGRendererBase.prototype.show = function() {
9154 + this.layerElement.style.display = "block";
9155 + };
9156 + function ICompElement() {}
9157 + extendPrototype([
9158 + BaseElement,
9159 + TransformElement,
9160 + HierarchyElement,
9161 + FrameElement,
9162 + RenderableDOMElement
9163 + ], ICompElement);
9164 + ICompElement.prototype.initElement = function(data, globalData, comp) {
9165 + this.initFrame();
9166 + this.initBaseData(data, globalData, comp);
9167 + this.initTransform(data, globalData, comp);
9168 + this.initRenderable();
9169 + this.initHierarchy();
9170 + this.initRendererElement();
9171 + this.createContainerElements();
9172 + this.createRenderableComponents();
9173 + if (this.data.xt || !globalData.progressiveLoad) this.buildAllItems();
9174 + this.hide();
9175 + };
9176 + ICompElement.prototype.prepareFrame = function(num) {
9177 + this._mdf = false;
9178 + this.prepareRenderableFrame(num);
9179 + this.prepareProperties(num, this.isInRange);
9180 + if (!this.isInRange && !this.data.xt) return;
9181 + if (!this.tm._placeholder) {
9182 + var timeRemapped = this.tm.v;
9183 + if (timeRemapped === this.data.op) timeRemapped = this.data.op - 1;
9184 + this.renderedFrame = timeRemapped;
9185 + } else this.renderedFrame = num / this.data.sr;
9186 + var i;
9187 + var len = this.elements.length;
9188 + if (!this.completeLayers) this.checkLayers(this.renderedFrame);
9189 + for (i = len - 1; i >= 0; i -= 1) if (this.completeLayers || this.elements[i]) {
9190 + this.elements[i].prepareFrame(this.renderedFrame - this.layers[i].st);
9191 + if (this.elements[i]._mdf) this._mdf = true;
9192 + }
9193 + };
9194 + ICompElement.prototype.renderInnerContent = function() {
9195 + var i;
9196 + var len = this.layers.length;
9197 + for (i = 0; i < len; i += 1) if (this.completeLayers || this.elements[i]) this.elements[i].renderFrame();
9198 + };
9199 + ICompElement.prototype.setElements = function(elems) {
9200 + this.elements = elems;
9201 + };
9202 + ICompElement.prototype.getElements = function() {
9203 + return this.elements;
9204 + };
9205 + ICompElement.prototype.destroyElements = function() {
9206 + var i;
9207 + var len = this.layers.length;
9208 + for (i = 0; i < len; i += 1) if (this.elements[i]) this.elements[i].destroy();
9209 + };
9210 + ICompElement.prototype.destroy = function() {
9211 + this.destroyElements();
9212 + this.destroyBaseElement();
9213 + };
9214 + function SVGCompElement(data, globalData, comp) {
9215 + this.layers = data.layers;
9216 + this.supports3d = true;
9217 + this.completeLayers = false;
9218 + this.pendingElements = [];
9219 + this.elements = this.layers ? createSizedArray(this.layers.length) : [];
9220 + this.initElement(data, globalData, comp);
9221 + this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : { _placeholder: true };
9222 + }
9223 + extendPrototype([
9224 + SVGRendererBase,
9225 + ICompElement,
9226 + SVGBaseElement
9227 + ], SVGCompElement);
9228 + SVGCompElement.prototype.createComp = function(data) {
9229 + return new SVGCompElement(data, this.globalData, this);
9230 + };
9231 + function SVGRenderer(animationItem, config) {
9232 + this.animationItem = animationItem;
9233 + this.layers = null;
9234 + this.renderedFrame = -1;
9235 + this.svgElement = createNS("svg");
9236 + var ariaLabel = "";
9237 + if (config && config.title) {
9238 + var titleElement = createNS("title");
9239 + var titleId = createElementID();
9240 + titleElement.setAttribute("id", titleId);
9241 + titleElement.textContent = config.title;
9242 + this.svgElement.appendChild(titleElement);
9243 + ariaLabel += titleId;
9244 + }
9245 + if (config && config.description) {
9246 + var descElement = createNS("desc");
9247 + var descId = createElementID();
9248 + descElement.setAttribute("id", descId);
9249 + descElement.textContent = config.description;
9250 + this.svgElement.appendChild(descElement);
9251 + ariaLabel += " " + descId;
9252 + }
9253 + if (ariaLabel) this.svgElement.setAttribute("aria-labelledby", ariaLabel);
9254 + var defs = createNS("defs");
9255 + this.svgElement.appendChild(defs);
9256 + var maskElement = createNS("g");
9257 + this.svgElement.appendChild(maskElement);
9258 + this.layerElement = maskElement;
9259 + this.renderConfig = {
9260 + preserveAspectRatio: config && config.preserveAspectRatio || "xMidYMid meet",
9261 + imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || "xMidYMid slice",
9262 + contentVisibility: config && config.contentVisibility || "visible",
9263 + progressiveLoad: config && config.progressiveLoad || false,
9264 + hideOnTransparent: !(config && config.hideOnTransparent === false),
9265 + viewBoxOnly: config && config.viewBoxOnly || false,
9266 + viewBoxSize: config && config.viewBoxSize || false,
9267 + className: config && config.className || "",
9268 + id: config && config.id || "",
9269 + focusable: config && config.focusable,
9270 + filterSize: {
9271 + width: config && config.filterSize && config.filterSize.width || "100%",
9272 + height: config && config.filterSize && config.filterSize.height || "100%",
9273 + x: config && config.filterSize && config.filterSize.x || "0%",
9274 + y: config && config.filterSize && config.filterSize.y || "0%"
9275 + },
9276 + width: config && config.width,
9277 + height: config && config.height,
9278 + runExpressions: !config || config.runExpressions === void 0 || config.runExpressions
9279 + };
9280 + this.globalData = {
9281 + _mdf: false,
9282 + frameNum: -1,
9283 + defs,
9284 + renderConfig: this.renderConfig
9285 + };
9286 + this.elements = [];
9287 + this.pendingElements = [];
9288 + this.destroyed = false;
9289 + this.rendererType = "svg";
9290 + }
9291 + extendPrototype([SVGRendererBase], SVGRenderer);
9292 + SVGRenderer.prototype.createComp = function(data) {
9293 + return new SVGCompElement(data, this.globalData, this);
9294 + };
9295 + function ShapeTransformManager() {
9296 + this.sequences = {};
9297 + this.sequenceList = [];
9298 + this.transform_key_count = 0;
9299 + }
9300 + ShapeTransformManager.prototype = {
9301 + addTransformSequence: function addTransformSequence(transforms) {
9302 + var i;
9303 + var len = transforms.length;
9304 + var key = "_";
9305 + for (i = 0; i < len; i += 1) key += transforms[i].transform.key + "_";
9306 + var sequence = this.sequences[key];
9307 + if (!sequence) {
9308 + sequence = {
9309 + transforms: [].concat(transforms),
9310 + finalTransform: new Matrix(),
9311 + _mdf: false
9312 + };
9313 + this.sequences[key] = sequence;
9314 + this.sequenceList.push(sequence);
9315 + }
9316 + return sequence;
9317 + },
9318 + processSequence: function processSequence(sequence, isFirstFrame) {
9319 + var i = 0;
9320 + var len = sequence.transforms.length;
9321 + var _mdf = isFirstFrame;
9322 + while (i < len && !isFirstFrame) {
9323 + if (sequence.transforms[i].transform.mProps._mdf) {
9324 + _mdf = true;
9325 + break;
9326 + }
9327 + i += 1;
9328 + }
9329 + if (_mdf) {
9330 + sequence.finalTransform.reset();
9331 + for (i = len - 1; i >= 0; i -= 1) sequence.finalTransform.multiply(sequence.transforms[i].transform.mProps.v);
9332 + }
9333 + sequence._mdf = _mdf;
9334 + },
9335 + processSequences: function processSequences(isFirstFrame) {
9336 + var i;
9337 + var len = this.sequenceList.length;
9338 + for (i = 0; i < len; i += 1) this.processSequence(this.sequenceList[i], isFirstFrame);
9339 + },
9340 + getNewKey: function getNewKey() {
9341 + this.transform_key_count += 1;
9342 + return "_" + this.transform_key_count;
9343 + }
9344 + };
9345 + var lumaLoader = function lumaLoader() {
9346 + var id = "__lottie_element_luma_buffer";
9347 + var lumaBuffer = null;
9348 + var lumaBufferCtx = null;
9349 + var svg = null;
9350 + function createLumaSvgFilter() {
9351 + var _svg = createNS("svg");
9352 + var fil = createNS("filter");
9353 + var matrix = createNS("feColorMatrix");
9354 + fil.setAttribute("id", id);
9355 + matrix.setAttribute("type", "matrix");
9356 + matrix.setAttribute("color-interpolation-filters", "sRGB");
9357 + 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");
9358 + fil.appendChild(matrix);
9359 + _svg.appendChild(fil);
9360 + _svg.setAttribute("id", "__lottie_element_luma_buffer_svg");
9361 + if (featureSupport.svgLumaHidden) _svg.style.display = "none";
9362 + return _svg;
9363 + }
9364 + function loadLuma() {
9365 + if (!lumaBuffer) {
9366 + svg = createLumaSvgFilter();
9367 + document.body.appendChild(svg);
9368 + lumaBuffer = createTag("canvas");
9369 + lumaBufferCtx = lumaBuffer.getContext("2d");
9370 + lumaBufferCtx.filter = "url(#__lottie_element_luma_buffer)";
9371 + lumaBufferCtx.fillStyle = "rgba(0,0,0,0)";
9372 + lumaBufferCtx.fillRect(0, 0, 1, 1);
9373 + }
9374 + }
9375 + function getLuma(canvas) {
9376 + if (!lumaBuffer) loadLuma();
9377 + lumaBuffer.width = canvas.width;
9378 + lumaBuffer.height = canvas.height;
9379 + lumaBufferCtx.filter = "url(#__lottie_element_luma_buffer)";
9380 + return lumaBuffer;
9381 + }
9382 + return {
9383 + load: loadLuma,
9384 + get: getLuma
9385 + };
9386 + };
9387 + function createCanvas(width, height) {
9388 + if (featureSupport.offscreenCanvas) return new OffscreenCanvas(width, height);
9389 + var canvas = createTag("canvas");
9390 + canvas.width = width;
9391 + canvas.height = height;
9392 + return canvas;
9393 + }
9394 + var assetLoader = function() {
9395 + return {
9396 + loadLumaCanvas: lumaLoader.load,
9397 + getLumaCanvas: lumaLoader.get,
9398 + createCanvas
9399 + };
9400 + }();
9401 + var registeredEffects = {};
9402 + function CVEffects(elem) {
9403 + var i;
9404 + var len = elem.data.ef ? elem.data.ef.length : 0;
9405 + this.filters = [];
9406 + var filterManager;
9407 + for (i = 0; i < len; i += 1) {
9408 + filterManager = null;
9409 + var type = elem.data.ef[i].ty;
9410 + if (registeredEffects[type]) {
9411 + var Effect = registeredEffects[type].effect;
9412 + filterManager = new Effect(elem.effectsManager.effectElements[i], elem);
9413 + }
9414 + if (filterManager) this.filters.push(filterManager);
9415 + }
9416 + if (this.filters.length) elem.addRenderableComponent(this);
9417 + }
9418 + CVEffects.prototype.renderFrame = function(_isFirstFrame) {
9419 + var i;
9420 + var len = this.filters.length;
9421 + for (i = 0; i < len; i += 1) this.filters[i].renderFrame(_isFirstFrame);
9422 + };
9423 + CVEffects.prototype.getEffects = function(type) {
9424 + var i;
9425 + var len = this.filters.length;
9426 + var effects = [];
9427 + for (i = 0; i < len; i += 1) if (this.filters[i].type === type) effects.push(this.filters[i]);
9428 + return effects;
9429 + };
9430 + function registerEffect(id, effect) {
9431 + registeredEffects[id] = { effect };
9432 + }
9433 + function CVMaskElement(data, element) {
9434 + this.data = data;
9435 + this.element = element;
9436 + this.masksProperties = this.data.masksProperties || [];
9437 + this.viewData = createSizedArray(this.masksProperties.length);
9438 + var i;
9439 + var len = this.masksProperties.length;
9440 + var hasMasks = false;
9441 + for (i = 0; i < len; i += 1) {
9442 + if (this.masksProperties[i].mode !== "n") hasMasks = true;
9443 + this.viewData[i] = ShapePropertyFactory.getShapeProp(this.element, this.masksProperties[i], 3);
9444 + }
9445 + this.hasMasks = hasMasks;
9446 + if (hasMasks) this.element.addRenderableComponent(this);
9447 + }
9448 + CVMaskElement.prototype.renderFrame = function() {
9449 + if (!this.hasMasks) return;
9450 + var transform = this.element.finalTransform.mat;
9451 + var ctx = this.element.canvasContext;
9452 + var i;
9453 + var len = this.masksProperties.length;
9454 + var pt;
9455 + var pts;
9456 + var data;
9457 + ctx.beginPath();
9458 + for (i = 0; i < len; i += 1) if (this.masksProperties[i].mode !== "n") {
9459 + if (this.masksProperties[i].inv) {
9460 + ctx.moveTo(0, 0);
9461 + ctx.lineTo(this.element.globalData.compSize.w, 0);
9462 + ctx.lineTo(this.element.globalData.compSize.w, this.element.globalData.compSize.h);
9463 + ctx.lineTo(0, this.element.globalData.compSize.h);
9464 + ctx.lineTo(0, 0);
9465 + }
9466 + data = this.viewData[i].v;
9467 + pt = transform.applyToPointArray(data.v[0][0], data.v[0][1], 0);
9468 + ctx.moveTo(pt[0], pt[1]);
9469 + var j;
9470 + var jLen = data._length;
9471 + for (j = 1; j < jLen; j += 1) {
9472 + pts = transform.applyToTriplePoints(data.o[j - 1], data.i[j], data.v[j]);
9473 + ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);
9474 + }
9475 + pts = transform.applyToTriplePoints(data.o[j - 1], data.i[0], data.v[0]);
9476 + ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);
9477 + }
9478 + this.element.globalData.renderer.save(true);
9479 + ctx.clip();
9480 + };
9481 + CVMaskElement.prototype.getMaskProperty = MaskElement.prototype.getMaskProperty;
9482 + CVMaskElement.prototype.destroy = function() {
9483 + this.element = null;
9484 + };
9485 + function CVBaseElement() {}
9486 + var operationsMap = {
9487 + 1: "source-in",
9488 + 2: "source-out",
9489 + 3: "source-in",
9490 + 4: "source-out"
9491 + };
9492 + CVBaseElement.prototype = {
9493 + createElements: function createElements() {},
9494 + initRendererElement: function initRendererElement() {},
9495 + createContainerElements: function createContainerElements() {
9496 + if (this.data.tt >= 1) {
9497 + this.buffers = [];
9498 + var canvasContext = this.globalData.canvasContext;
9499 + var bufferCanvas = assetLoader.createCanvas(canvasContext.canvas.width, canvasContext.canvas.height);
9500 + this.buffers.push(bufferCanvas);
9501 + var bufferCanvas2 = assetLoader.createCanvas(canvasContext.canvas.width, canvasContext.canvas.height);
9502 + this.buffers.push(bufferCanvas2);
9503 + if (this.data.tt >= 3 && !document._isProxy) assetLoader.loadLumaCanvas();
9504 + }
9505 + this.canvasContext = this.globalData.canvasContext;
9506 + this.transformCanvas = this.globalData.transformCanvas;
9507 + this.renderableEffectsManager = new CVEffects(this);
9508 + this.searchEffectTransforms();
9509 + },
9510 + createContent: function createContent() {},
9511 + setBlendMode: function setBlendMode() {
9512 + var globalData = this.globalData;
9513 + if (globalData.blendMode !== this.data.bm) {
9514 + globalData.blendMode = this.data.bm;
9515 + var blendModeValue = getBlendMode(this.data.bm);
9516 + globalData.canvasContext.globalCompositeOperation = blendModeValue;
9517 + }
9518 + },
9519 + createRenderableComponents: function createRenderableComponents() {
9520 + this.maskManager = new CVMaskElement(this.data, this);
9521 + this.transformEffects = this.renderableEffectsManager.getEffects(effectTypes.TRANSFORM_EFFECT);
9522 + },
9523 + hideElement: function hideElement() {
9524 + if (!this.hidden && (!this.isInRange || this.isTransparent)) this.hidden = true;
9525 + },
9526 + showElement: function showElement() {
9527 + if (this.isInRange && !this.isTransparent) {
9528 + this.hidden = false;
9529 + this._isFirstFrame = true;
9530 + this.maskManager._isFirstFrame = true;
9531 + }
9532 + },
9533 + clearCanvas: function clearCanvas(canvasContext) {
9534 + canvasContext.clearRect(this.transformCanvas.tx, this.transformCanvas.ty, this.transformCanvas.w * this.transformCanvas.sx, this.transformCanvas.h * this.transformCanvas.sy);
9535 + },
9536 + prepareLayer: function prepareLayer() {
9537 + if (this.data.tt >= 1) {
9538 + var bufferCtx = this.buffers[0].getContext("2d");
9539 + this.clearCanvas(bufferCtx);
9540 + bufferCtx.drawImage(this.canvasContext.canvas, 0, 0);
9541 + this.currentTransform = this.canvasContext.getTransform();
9542 + this.canvasContext.setTransform(1, 0, 0, 1, 0, 0);
9543 + this.clearCanvas(this.canvasContext);
9544 + this.canvasContext.setTransform(this.currentTransform);
9545 + }
9546 + },
9547 + exitLayer: function exitLayer() {
9548 + if (this.data.tt >= 1) {
9549 + var buffer = this.buffers[1];
9550 + var bufferCtx = buffer.getContext("2d");
9551 + this.clearCanvas(bufferCtx);
9552 + bufferCtx.drawImage(this.canvasContext.canvas, 0, 0);
9553 + this.canvasContext.setTransform(1, 0, 0, 1, 0, 0);
9554 + this.clearCanvas(this.canvasContext);
9555 + this.canvasContext.setTransform(this.currentTransform);
9556 + this.comp.getElementById("tp" in this.data ? this.data.tp : this.data.ind - 1).renderFrame(true);
9557 + this.canvasContext.setTransform(1, 0, 0, 1, 0, 0);
9558 + if (this.data.tt >= 3 && !document._isProxy) {
9559 + var lumaBuffer = assetLoader.getLumaCanvas(this.canvasContext.canvas);
9560 + lumaBuffer.getContext("2d").drawImage(this.canvasContext.canvas, 0, 0);
9561 + this.clearCanvas(this.canvasContext);
9562 + this.canvasContext.drawImage(lumaBuffer, 0, 0);
9563 + }
9564 + this.canvasContext.globalCompositeOperation = operationsMap[this.data.tt];
9565 + this.canvasContext.drawImage(buffer, 0, 0);
9566 + this.canvasContext.globalCompositeOperation = "destination-over";
9567 + this.canvasContext.drawImage(this.buffers[0], 0, 0);
9568 + this.canvasContext.setTransform(this.currentTransform);
9569 + this.canvasContext.globalCompositeOperation = "source-over";
9570 + }
9571 + },
9572 + renderFrame: function renderFrame(forceRender) {
9573 + if (this.hidden || this.data.hd) return;
9574 + if (this.data.td === 1 && !forceRender) return;
9575 + this.renderTransform();
9576 + this.renderRenderable();
9577 + this.renderLocalTransform();
9578 + this.setBlendMode();
9579 + var forceRealStack = this.data.ty === 0;
9580 + this.prepareLayer();
9581 + this.globalData.renderer.save(forceRealStack);
9582 + this.globalData.renderer.ctxTransform(this.finalTransform.localMat.props);
9583 + this.globalData.renderer.ctxOpacity(this.finalTransform.localOpacity);
9584 + this.renderInnerContent();
9585 + this.globalData.renderer.restore(forceRealStack);
9586 + this.exitLayer();
9587 + if (this.maskManager.hasMasks) this.globalData.renderer.restore(true);
9588 + if (this._isFirstFrame) this._isFirstFrame = false;
9589 + },
9590 + destroy: function destroy() {
9591 + this.canvasContext = null;
9592 + this.data = null;
9593 + this.globalData = null;
9594 + this.maskManager.destroy();
9595 + },
9596 + mHelper: new Matrix()
9597 + };
9598 + CVBaseElement.prototype.hide = CVBaseElement.prototype.hideElement;
9599 + CVBaseElement.prototype.show = CVBaseElement.prototype.showElement;
9600 + function CVShapeData(element, data, styles, transformsManager) {
9601 + this.styledShapes = [];
9602 + this.tr = [
9603 + 0,
9604 + 0,
9605 + 0,
9606 + 0,
9607 + 0,
9608 + 0
9609 + ];
9610 + var ty = 4;
9611 + if (data.ty === "rc") ty = 5;
9612 + else if (data.ty === "el") ty = 6;
9613 + else if (data.ty === "sr") ty = 7;
9614 + this.sh = ShapePropertyFactory.getShapeProp(element, data, ty, element);
9615 + var i;
9616 + var len = styles.length;
9617 + var styledShape;
9618 + for (i = 0; i < len; i += 1) if (!styles[i].closed) {
9619 + styledShape = {
9620 + transforms: transformsManager.addTransformSequence(styles[i].transforms),
9621 + trNodes: []
9622 + };
9623 + this.styledShapes.push(styledShape);
9624 + styles[i].elements.push(styledShape);
9625 + }
9626 + }
9627 + CVShapeData.prototype.setAsAnimated = SVGShapeData.prototype.setAsAnimated;
9628 + function CVShapeElement(data, globalData, comp) {
9629 + this.shapes = [];
9630 + this.shapesData = data.shapes;
9631 + this.stylesList = [];
9632 + this.itemsData = [];
9633 + this.prevViewData = [];
9634 + this.shapeModifiers = [];
9635 + this.processedElements = [];
9636 + this.transformsManager = new ShapeTransformManager();
9637 + this.initElement(data, globalData, comp);
9638 + }
9639 + extendPrototype([
9640 + BaseElement,
9641 + TransformElement,
9642 + CVBaseElement,
9643 + IShapeElement,
9644 + HierarchyElement,
9645 + FrameElement,
9646 + RenderableElement
9647 + ], CVShapeElement);
9648 + CVShapeElement.prototype.initElement = RenderableDOMElement.prototype.initElement;
9649 + CVShapeElement.prototype.transformHelper = {
9650 + opacity: 1,
9651 + _opMdf: false
9652 + };
9653 + CVShapeElement.prototype.dashResetter = [];
9654 + CVShapeElement.prototype.createContent = function() {
9655 + this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);
9656 + };
9657 + CVShapeElement.prototype.createStyleElement = function(data, transforms) {
9658 + var styleElem = {
9659 + data,
9660 + type: data.ty,
9661 + preTransforms: this.transformsManager.addTransformSequence(transforms),
9662 + transforms: [],
9663 + elements: [],
9664 + closed: data.hd === true
9665 + };
9666 + var elementData = {};
9667 + if (data.ty === "fl" || data.ty === "st") {
9668 + elementData.c = PropertyFactory.getProp(this, data.c, 1, 255, this);
9669 + if (!elementData.c.k) styleElem.co = "rgb(" + bmFloor(elementData.c.v[0]) + "," + bmFloor(elementData.c.v[1]) + "," + bmFloor(elementData.c.v[2]) + ")";
9670 + } else if (data.ty === "gf" || data.ty === "gs") {
9671 + elementData.s = PropertyFactory.getProp(this, data.s, 1, null, this);
9672 + elementData.e = PropertyFactory.getProp(this, data.e, 1, null, this);
9673 + elementData.h = PropertyFactory.getProp(this, data.h || { k: 0 }, 0, .01, this);
9674 + elementData.a = PropertyFactory.getProp(this, data.a || { k: 0 }, 0, degToRads, this);
9675 + elementData.g = new GradientProperty(this, data.g, this);
9676 + }
9677 + elementData.o = PropertyFactory.getProp(this, data.o, 0, .01, this);
9678 + if (data.ty === "st" || data.ty === "gs") {
9679 + styleElem.lc = lineCapEnum[data.lc || 2];
9680 + styleElem.lj = lineJoinEnum[data.lj || 2];
9681 + if (data.lj == 1) styleElem.ml = data.ml;
9682 + elementData.w = PropertyFactory.getProp(this, data.w, 0, null, this);
9683 + if (!elementData.w.k) styleElem.wi = elementData.w.v;
9684 + if (data.d) {
9685 + elementData.d = new DashProperty(this, data.d, "canvas", this);
9686 + if (!elementData.d.k) {
9687 + styleElem.da = elementData.d.dashArray;
9688 + styleElem["do"] = elementData.d.dashoffset[0];
9689 + }
9690 + }
9691 + } else styleElem.r = data.r === 2 ? "evenodd" : "nonzero";
9692 + this.stylesList.push(styleElem);
9693 + elementData.style = styleElem;
9694 + return elementData;
9695 + };
9696 + CVShapeElement.prototype.createGroupElement = function() {
9697 + return {
9698 + it: [],
9699 + prevViewData: []
9700 + };
9701 + };
9702 + CVShapeElement.prototype.createTransformElement = function(data) {
9703 + return { transform: {
9704 + opacity: 1,
9705 + _opMdf: false,
9706 + key: this.transformsManager.getNewKey(),
9707 + op: PropertyFactory.getProp(this, data.o, 0, .01, this),
9708 + mProps: TransformPropertyFactory.getTransformProperty(this, data, this)
9709 + } };
9710 + };
9711 + CVShapeElement.prototype.createShapeElement = function(data) {
9712 + var elementData = new CVShapeData(this, data, this.stylesList, this.transformsManager);
9713 + this.shapes.push(elementData);
9714 + this.addShapeToModifiers(elementData);
9715 + return elementData;
9716 + };
9717 + CVShapeElement.prototype.reloadShapes = function() {
9718 + this._isFirstFrame = true;
9719 + var i;
9720 + var len = this.itemsData.length;
9721 + for (i = 0; i < len; i += 1) this.prevViewData[i] = this.itemsData[i];
9722 + this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);
9723 + len = this.dynamicProperties.length;
9724 + for (i = 0; i < len; i += 1) this.dynamicProperties[i].getValue();
9725 + this.renderModifiers();
9726 + this.transformsManager.processSequences(this._isFirstFrame);
9727 + };
9728 + CVShapeElement.prototype.addTransformToStyleList = function(transform) {
9729 + var i;
9730 + var len = this.stylesList.length;
9731 + for (i = 0; i < len; i += 1) if (!this.stylesList[i].closed) this.stylesList[i].transforms.push(transform);
9732 + };
9733 + CVShapeElement.prototype.removeTransformFromStyleList = function() {
9734 + var i;
9735 + var len = this.stylesList.length;
9736 + for (i = 0; i < len; i += 1) if (!this.stylesList[i].closed) this.stylesList[i].transforms.pop();
9737 + };
9738 + CVShapeElement.prototype.closeStyles = function(styles) {
9739 + var i;
9740 + var len = styles.length;
9741 + for (i = 0; i < len; i += 1) styles[i].closed = true;
9742 + };
9743 + CVShapeElement.prototype.searchShapes = function(arr, itemsData, prevViewData, shouldRender, transforms) {
9744 + var i;
9745 + var len = arr.length - 1;
9746 + var j;
9747 + var jLen;
9748 + var ownStyles = [];
9749 + var ownModifiers = [];
9750 + var processedPos;
9751 + var modifier;
9752 + var currentTransform;
9753 + var ownTransforms = [].concat(transforms);
9754 + for (i = len; i >= 0; i -= 1) {
9755 + processedPos = this.searchProcessedElement(arr[i]);
9756 + if (!processedPos) arr[i]._shouldRender = shouldRender;
9757 + else itemsData[i] = prevViewData[processedPos - 1];
9758 + if (arr[i].ty === "fl" || arr[i].ty === "st" || arr[i].ty === "gf" || arr[i].ty === "gs") {
9759 + if (!processedPos) itemsData[i] = this.createStyleElement(arr[i], ownTransforms);
9760 + else itemsData[i].style.closed = false;
9761 + ownStyles.push(itemsData[i].style);
9762 + } else if (arr[i].ty === "gr") {
9763 + if (!processedPos) itemsData[i] = this.createGroupElement(arr[i]);
9764 + else {
9765 + jLen = itemsData[i].it.length;
9766 + for (j = 0; j < jLen; j += 1) itemsData[i].prevViewData[j] = itemsData[i].it[j];
9767 + }
9768 + this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, shouldRender, ownTransforms);
9769 + } else if (arr[i].ty === "tr") {
9770 + if (!processedPos) {
9771 + currentTransform = this.createTransformElement(arr[i]);
9772 + itemsData[i] = currentTransform;
9773 + }
9774 + ownTransforms.push(itemsData[i]);
9775 + this.addTransformToStyleList(itemsData[i]);
9776 + } else if (arr[i].ty === "sh" || arr[i].ty === "rc" || arr[i].ty === "el" || arr[i].ty === "sr") {
9777 + if (!processedPos) itemsData[i] = this.createShapeElement(arr[i]);
9778 + } else if (arr[i].ty === "tm" || arr[i].ty === "rd" || arr[i].ty === "pb" || arr[i].ty === "zz" || arr[i].ty === "op") {
9779 + if (!processedPos) {
9780 + modifier = ShapeModifiers.getModifier(arr[i].ty);
9781 + modifier.init(this, arr[i]);
9782 + itemsData[i] = modifier;
9783 + this.shapeModifiers.push(modifier);
9784 + } else {
9785 + modifier = itemsData[i];
9786 + modifier.closed = false;
9787 + }
9788 + ownModifiers.push(modifier);
9789 + } else if (arr[i].ty === "rp") {
9790 + if (!processedPos) {
9791 + modifier = ShapeModifiers.getModifier(arr[i].ty);
9792 + itemsData[i] = modifier;
9793 + modifier.init(this, arr, i, itemsData);
9794 + this.shapeModifiers.push(modifier);
9795 + shouldRender = false;
9796 + } else {
9797 + modifier = itemsData[i];
9798 + modifier.closed = true;
9799 + }
9800 + ownModifiers.push(modifier);
9801 + }
9802 + this.addProcessedElement(arr[i], i + 1);
9803 + }
9804 + this.removeTransformFromStyleList();
9805 + this.closeStyles(ownStyles);
9806 + len = ownModifiers.length;
9807 + for (i = 0; i < len; i += 1) ownModifiers[i].closed = true;
9808 + };
9809 + CVShapeElement.prototype.renderInnerContent = function() {
9810 + this.transformHelper.opacity = 1;
9811 + this.transformHelper._opMdf = false;
9812 + this.renderModifiers();
9813 + this.transformsManager.processSequences(this._isFirstFrame);
9814 + this.renderShape(this.transformHelper, this.shapesData, this.itemsData, true);
9815 + };
9816 + CVShapeElement.prototype.renderShapeTransform = function(parentTransform, groupTransform) {
9817 + if (parentTransform._opMdf || groupTransform.op._mdf || this._isFirstFrame) {
9818 + groupTransform.opacity = parentTransform.opacity;
9819 + groupTransform.opacity *= groupTransform.op.v;
9820 + groupTransform._opMdf = true;
9821 + }
9822 + };
9823 + CVShapeElement.prototype.drawLayer = function() {
9824 + var i;
9825 + var len = this.stylesList.length;
9826 + var j;
9827 + var jLen;
9828 + var k;
9829 + var kLen;
9830 + var elems;
9831 + var nodes;
9832 + var renderer = this.globalData.renderer;
9833 + var ctx = this.globalData.canvasContext;
9834 + var type;
9835 + var currentStyle;
9836 + for (i = 0; i < len; i += 1) {
9837 + currentStyle = this.stylesList[i];
9838 + type = currentStyle.type;
9839 + if (!((type === "st" || type === "gs") && currentStyle.wi === 0 || !currentStyle.data._shouldRender || currentStyle.coOp === 0 || this.globalData.currentGlobalAlpha === 0)) {
9840 + renderer.save();
9841 + elems = currentStyle.elements;
9842 + if (type === "st" || type === "gs") {
9843 + renderer.ctxStrokeStyle(type === "st" ? currentStyle.co : currentStyle.grd);
9844 + renderer.ctxLineWidth(currentStyle.wi);
9845 + renderer.ctxLineCap(currentStyle.lc);
9846 + renderer.ctxLineJoin(currentStyle.lj);
9847 + renderer.ctxMiterLimit(currentStyle.ml || 0);
9848 + } else renderer.ctxFillStyle(type === "fl" ? currentStyle.co : currentStyle.grd);
9849 + renderer.ctxOpacity(currentStyle.coOp);
9850 + if (type !== "st" && type !== "gs") ctx.beginPath();
9851 + renderer.ctxTransform(currentStyle.preTransforms.finalTransform.props);
9852 + jLen = elems.length;
9853 + for (j = 0; j < jLen; j += 1) {
9854 + if (type === "st" || type === "gs") {
9855 + ctx.beginPath();
9856 + if (currentStyle.da) {
9857 + ctx.setLineDash(currentStyle.da);
9858 + ctx.lineDashOffset = currentStyle["do"];
9859 + }
9860 + }
9861 + nodes = elems[j].trNodes;
9862 + kLen = nodes.length;
9863 + for (k = 0; k < kLen; k += 1) if (nodes[k].t === "m") ctx.moveTo(nodes[k].p[0], nodes[k].p[1]);
9864 + else if (nodes[k].t === "c") 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]);
9865 + else ctx.closePath();
9866 + if (type === "st" || type === "gs") {
9867 + renderer.ctxStroke();
9868 + if (currentStyle.da) ctx.setLineDash(this.dashResetter);
9869 + }
9870 + }
9871 + if (type !== "st" && type !== "gs") this.globalData.renderer.ctxFill(currentStyle.r);
9872 + renderer.restore();
9873 + }
9874 + }
9875 + };
9876 + CVShapeElement.prototype.renderShape = function(parentTransform, items, data, isMain) {
9877 + var i;
9878 + var len = items.length - 1;
9879 + var groupTransform = parentTransform;
9880 + for (i = len; i >= 0; i -= 1) if (items[i].ty === "tr") {
9881 + groupTransform = data[i].transform;
9882 + this.renderShapeTransform(parentTransform, groupTransform);
9883 + } else if (items[i].ty === "sh" || items[i].ty === "el" || items[i].ty === "rc" || items[i].ty === "sr") this.renderPath(items[i], data[i]);
9884 + else if (items[i].ty === "fl") this.renderFill(items[i], data[i], groupTransform);
9885 + else if (items[i].ty === "st") this.renderStroke(items[i], data[i], groupTransform);
9886 + else if (items[i].ty === "gf" || items[i].ty === "gs") this.renderGradientFill(items[i], data[i], groupTransform);
9887 + else if (items[i].ty === "gr") this.renderShape(groupTransform, items[i].it, data[i].it);
9888 + else if (items[i].ty === "tm") {}
9889 + if (isMain) this.drawLayer();
9890 + };
9891 + CVShapeElement.prototype.renderStyledShape = function(styledShape, shape) {
9892 + if (this._isFirstFrame || shape._mdf || styledShape.transforms._mdf) {
9893 + var shapeNodes = styledShape.trNodes;
9894 + var paths = shape.paths;
9895 + var i;
9896 + var len;
9897 + var j;
9898 + var jLen = paths._length;
9899 + shapeNodes.length = 0;
9900 + var groupTransformMat = styledShape.transforms.finalTransform;
9901 + for (j = 0; j < jLen; j += 1) {
9902 + var pathNodes = paths.shapes[j];
9903 + if (pathNodes && pathNodes.v) {
9904 + len = pathNodes._length;
9905 + for (i = 1; i < len; i += 1) {
9906 + if (i === 1) shapeNodes.push({
9907 + t: "m",
9908 + p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0)
9909 + });
9910 + shapeNodes.push({
9911 + t: "c",
9912 + pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[i], pathNodes.v[i])
9913 + });
9914 + }
9915 + if (len === 1) shapeNodes.push({
9916 + t: "m",
9917 + p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0)
9918 + });
9919 + if (pathNodes.c && len) {
9920 + shapeNodes.push({
9921 + t: "c",
9922 + pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[0], pathNodes.v[0])
9923 + });
9924 + shapeNodes.push({ t: "z" });
9925 + }
9926 + }
9927 + }
9928 + styledShape.trNodes = shapeNodes;
9929 + }
9930 + };
9931 + CVShapeElement.prototype.renderPath = function(pathData, itemData) {
9932 + if (pathData.hd !== true && pathData._shouldRender) {
9933 + var i;
9934 + var len = itemData.styledShapes.length;
9935 + for (i = 0; i < len; i += 1) this.renderStyledShape(itemData.styledShapes[i], itemData.sh);
9936 + }
9937 + };
9938 + CVShapeElement.prototype.renderFill = function(styleData, itemData, groupTransform) {
9939 + var styleElem = itemData.style;
9940 + if (itemData.c._mdf || this._isFirstFrame) styleElem.co = "rgb(" + bmFloor(itemData.c.v[0]) + "," + bmFloor(itemData.c.v[1]) + "," + bmFloor(itemData.c.v[2]) + ")";
9941 + if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) styleElem.coOp = itemData.o.v * groupTransform.opacity;
9942 + };
9943 + CVShapeElement.prototype.renderGradientFill = function(styleData, itemData, groupTransform) {
9944 + var styleElem = itemData.style;
9945 + var grd;
9946 + if (!styleElem.grd || itemData.g._mdf || itemData.s._mdf || itemData.e._mdf || styleData.t !== 1 && (itemData.h._mdf || itemData.a._mdf)) {
9947 + var ctx = this.globalData.canvasContext;
9948 + var pt1 = itemData.s.v;
9949 + var pt2 = itemData.e.v;
9950 + if (styleData.t === 1) grd = ctx.createLinearGradient(pt1[0], pt1[1], pt2[0], pt2[1]);
9951 + else {
9952 + var rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));
9953 + var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);
9954 + var percent = itemData.h.v;
9955 + if (percent >= 1) percent = .99;
9956 + else if (percent <= -1) percent = -.99;
9957 + var dist = rad * percent;
9958 + var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];
9959 + var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];
9960 + grd = ctx.createRadialGradient(x, y, 0, pt1[0], pt1[1], rad);
9961 + }
9962 + var i;
9963 + var len = styleData.g.p;
9964 + var cValues = itemData.g.c;
9965 + var opacity = 1;
9966 + for (i = 0; i < len; i += 1) {
9967 + if (itemData.g._hasOpacity && itemData.g._collapsable) opacity = itemData.g.o[i * 2 + 1];
9968 + grd.addColorStop(cValues[i * 4] / 100, "rgba(" + cValues[i * 4 + 1] + "," + cValues[i * 4 + 2] + "," + cValues[i * 4 + 3] + "," + opacity + ")");
9969 + }
9970 + styleElem.grd = grd;
9971 + }
9972 + styleElem.coOp = itemData.o.v * groupTransform.opacity;
9973 + };
9974 + CVShapeElement.prototype.renderStroke = function(styleData, itemData, groupTransform) {
9975 + var styleElem = itemData.style;
9976 + var d = itemData.d;
9977 + if (d && (d._mdf || this._isFirstFrame)) {
9978 + styleElem.da = d.dashArray;
9979 + styleElem["do"] = d.dashoffset[0];
9980 + }
9981 + if (itemData.c._mdf || this._isFirstFrame) styleElem.co = "rgb(" + bmFloor(itemData.c.v[0]) + "," + bmFloor(itemData.c.v[1]) + "," + bmFloor(itemData.c.v[2]) + ")";
9982 + if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) styleElem.coOp = itemData.o.v * groupTransform.opacity;
9983 + if (itemData.w._mdf || this._isFirstFrame) styleElem.wi = itemData.w.v;
9984 + };
9985 + CVShapeElement.prototype.destroy = function() {
9986 + this.shapesData = null;
9987 + this.globalData = null;
9988 + this.canvasContext = null;
9989 + this.stylesList.length = 0;
9990 + this.itemsData.length = 0;
9991 + };
9992 + function CVTextElement(data, globalData, comp) {
9993 + this.textSpans = [];
9994 + this.yOffset = 0;
9995 + this.fillColorAnim = false;
9996 + this.strokeColorAnim = false;
9997 + this.strokeWidthAnim = false;
9998 + this.stroke = false;
9999 + this.fill = false;
10000 + this.justifyOffset = 0;
10001 + this.currentRender = null;
10002 + this.renderType = "canvas";
10003 + this.values = {
10004 + fill: "rgba(0,0,0,0)",
10005 + stroke: "rgba(0,0,0,0)",
10006 + sWidth: 0,
10007 + fValue: ""
10008 + };
10009 + this.initElement(data, globalData, comp);
10010 + }
10011 + extendPrototype([
10012 + BaseElement,
10013 + TransformElement,
10014 + CVBaseElement,
10015 + HierarchyElement,
10016 + FrameElement,
10017 + RenderableElement,
10018 + ITextElement
10019 + ], CVTextElement);
10020 + CVTextElement.prototype.tHelper = createTag("canvas").getContext("2d");
10021 + CVTextElement.prototype.buildNewText = function() {
10022 + var documentData = this.textProperty.currentData;
10023 + this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);
10024 + var hasFill = false;
10025 + if (documentData.fc) {
10026 + hasFill = true;
10027 + this.values.fill = this.buildColor(documentData.fc);
10028 + } else this.values.fill = "rgba(0,0,0,0)";
10029 + this.fill = hasFill;
10030 + var hasStroke = false;
10031 + if (documentData.sc) {
10032 + hasStroke = true;
10033 + this.values.stroke = this.buildColor(documentData.sc);
10034 + this.values.sWidth = documentData.sw;
10035 + }
10036 + var fontData = this.globalData.fontManager.getFontByName(documentData.f);
10037 + var i;
10038 + var len;
10039 + var letters = documentData.l;
10040 + var matrixHelper = this.mHelper;
10041 + this.stroke = hasStroke;
10042 + this.values.fValue = documentData.finalSize + "px " + this.globalData.fontManager.getFontByName(documentData.f).fFamily;
10043 + len = documentData.finalText.length;
10044 + var charData;
10045 + var shapeData;
10046 + var k;
10047 + var kLen;
10048 + var shapes;
10049 + var j;
10050 + var jLen;
10051 + var pathNodes;
10052 + var commands;
10053 + var pathArr;
10054 + var singleShape = this.data.singleShape;
10055 + var trackingOffset = documentData.tr * .001 * documentData.finalSize;
10056 + var xPos = 0;
10057 + var yPos = 0;
10058 + var firstLine = true;
10059 + var cnt = 0;
10060 + for (i = 0; i < len; i += 1) {
10061 + charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);
10062 + shapeData = charData && charData.data || {};
10063 + matrixHelper.reset();
10064 + if (singleShape && letters[i].n) {
10065 + xPos = -trackingOffset;
10066 + yPos += documentData.yOffset;
10067 + yPos += firstLine ? 1 : 0;
10068 + firstLine = false;
10069 + }
10070 + shapes = shapeData.shapes ? shapeData.shapes[0].it : [];
10071 + jLen = shapes.length;
10072 + matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);
10073 + if (singleShape) this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);
10074 + commands = createSizedArray(jLen - 1);
10075 + var commandsCounter = 0;
10076 + for (j = 0; j < jLen; j += 1) if (shapes[j].ty === "sh") {
10077 + kLen = shapes[j].ks.k.i.length;
10078 + pathNodes = shapes[j].ks.k;
10079 + pathArr = [];
10080 + for (k = 1; k < kLen; k += 1) {
10081 + if (k === 1) pathArr.push(matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));
10082 + 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));
10083 + }
10084 + 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));
10085 + commands[commandsCounter] = pathArr;
10086 + commandsCounter += 1;
10087 + }
10088 + if (singleShape) {
10089 + xPos += letters[i].l;
10090 + xPos += trackingOffset;
10091 + }
10092 + if (this.textSpans[cnt]) this.textSpans[cnt].elem = commands;
10093 + else this.textSpans[cnt] = { elem: commands };
10094 + cnt += 1;
10095 + }
10096 + };
10097 + CVTextElement.prototype.renderInnerContent = function() {
10098 + this.validateText();
10099 + var ctx = this.canvasContext;
10100 + ctx.font = this.values.fValue;
10101 + this.globalData.renderer.ctxLineCap("butt");
10102 + this.globalData.renderer.ctxLineJoin("miter");
10103 + this.globalData.renderer.ctxMiterLimit(4);
10104 + if (!this.data.singleShape) this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);
10105 + var i;
10106 + var len;
10107 + var j;
10108 + var jLen;
10109 + var k;
10110 + var kLen;
10111 + var renderedLetters = this.textAnimator.renderedLetters;
10112 + var letters = this.textProperty.currentData.l;
10113 + len = letters.length;
10114 + var renderedLetter;
10115 + var lastFill = null;
10116 + var lastStroke = null;
10117 + var lastStrokeW = null;
10118 + var commands;
10119 + var pathArr;
10120 + var renderer = this.globalData.renderer;
10121 + for (i = 0; i < len; i += 1) if (!letters[i].n) {
10122 + renderedLetter = renderedLetters[i];
10123 + if (renderedLetter) {
10124 + renderer.save();
10125 + renderer.ctxTransform(renderedLetter.p);
10126 + renderer.ctxOpacity(renderedLetter.o);
10127 + }
10128 + if (this.fill) {
10129 + if (renderedLetter && renderedLetter.fc) {
10130 + if (lastFill !== renderedLetter.fc) {
10131 + renderer.ctxFillStyle(renderedLetter.fc);
10132 + lastFill = renderedLetter.fc;
10133 + }
10134 + } else if (lastFill !== this.values.fill) {
10135 + lastFill = this.values.fill;
10136 + renderer.ctxFillStyle(this.values.fill);
10137 + }
10138 + commands = this.textSpans[i].elem;
10139 + jLen = commands.length;
10140 + this.globalData.canvasContext.beginPath();
10141 + for (j = 0; j < jLen; j += 1) {
10142 + pathArr = commands[j];
10143 + kLen = pathArr.length;
10144 + this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);
10145 + for (k = 2; k < kLen; k += 6) this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);
10146 + }
10147 + this.globalData.canvasContext.closePath();
10148 + renderer.ctxFill();
10149 + }
10150 + if (this.stroke) {
10151 + if (renderedLetter && renderedLetter.sw) {
10152 + if (lastStrokeW !== renderedLetter.sw) {
10153 + lastStrokeW = renderedLetter.sw;
10154 + renderer.ctxLineWidth(renderedLetter.sw);
10155 + }
10156 + } else if (lastStrokeW !== this.values.sWidth) {
10157 + lastStrokeW = this.values.sWidth;
10158 + renderer.ctxLineWidth(this.values.sWidth);
10159 + }
10160 + if (renderedLetter && renderedLetter.sc) {
10161 + if (lastStroke !== renderedLetter.sc) {
10162 + lastStroke = renderedLetter.sc;
10163 + renderer.ctxStrokeStyle(renderedLetter.sc);
10164 + }
10165 + } else if (lastStroke !== this.values.stroke) {
10166 + lastStroke = this.values.stroke;
10167 + renderer.ctxStrokeStyle(this.values.stroke);
10168 + }
10169 + commands = this.textSpans[i].elem;
10170 + jLen = commands.length;
10171 + this.globalData.canvasContext.beginPath();
10172 + for (j = 0; j < jLen; j += 1) {
10173 + pathArr = commands[j];
10174 + kLen = pathArr.length;
10175 + this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);
10176 + for (k = 2; k < kLen; k += 6) this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);
10177 + }
10178 + this.globalData.canvasContext.closePath();
10179 + renderer.ctxStroke();
10180 + }
10181 + if (renderedLetter) this.globalData.renderer.restore();
10182 + }
10183 + };
10184 + function CVImageElement(data, globalData, comp) {
10185 + this.assetData = globalData.getAssetData(data.refId);
10186 + this.img = globalData.imageLoader.getAsset(this.assetData);
10187 + this.initElement(data, globalData, comp);
10188 + }
10189 + extendPrototype([
10190 + BaseElement,
10191 + TransformElement,
10192 + CVBaseElement,
10193 + HierarchyElement,
10194 + FrameElement,
10195 + RenderableElement
10196 + ], CVImageElement);
10197 + CVImageElement.prototype.initElement = SVGShapeElement.prototype.initElement;
10198 + CVImageElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;
10199 + CVImageElement.prototype.createContent = function() {
10200 + if (this.img.width && (this.assetData.w !== this.img.width || this.assetData.h !== this.img.height)) {
10201 + var canvas = createTag("canvas");
10202 + canvas.width = this.assetData.w;
10203 + canvas.height = this.assetData.h;
10204 + var ctx = canvas.getContext("2d");
10205 + var imgW = this.img.width;
10206 + var imgH = this.img.height;
10207 + var imgRel = imgW / imgH;
10208 + var canvasRel = this.assetData.w / this.assetData.h;
10209 + var widthCrop;
10210 + var heightCrop;
10211 + var par = this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio;
10212 + if (imgRel > canvasRel && par === "xMidYMid slice" || imgRel < canvasRel && par !== "xMidYMid slice") {
10213 + heightCrop = imgH;
10214 + widthCrop = heightCrop * canvasRel;
10215 + } else {
10216 + widthCrop = imgW;
10217 + heightCrop = widthCrop / canvasRel;
10218 + }
10219 + ctx.drawImage(this.img, (imgW - widthCrop) / 2, (imgH - heightCrop) / 2, widthCrop, heightCrop, 0, 0, this.assetData.w, this.assetData.h);
10220 + this.img = canvas;
10221 + }
10222 + };
10223 + CVImageElement.prototype.renderInnerContent = function() {
10224 + this.canvasContext.drawImage(this.img, 0, 0);
10225 + };
10226 + CVImageElement.prototype.destroy = function() {
10227 + this.img = null;
10228 + };
10229 + function CVSolidElement(data, globalData, comp) {
10230 + this.initElement(data, globalData, comp);
10231 + }
10232 + extendPrototype([
10233 + BaseElement,
10234 + TransformElement,
10235 + CVBaseElement,
10236 + HierarchyElement,
10237 + FrameElement,
10238 + RenderableElement
10239 + ], CVSolidElement);
10240 + CVSolidElement.prototype.initElement = SVGShapeElement.prototype.initElement;
10241 + CVSolidElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;
10242 + CVSolidElement.prototype.renderInnerContent = function() {
10243 + this.globalData.renderer.ctxFillStyle(this.data.sc);
10244 + this.globalData.renderer.ctxFillRect(0, 0, this.data.sw, this.data.sh);
10245 + };
10246 + function CanvasRendererBase() {}
10247 + extendPrototype([BaseRenderer], CanvasRendererBase);
10248 + CanvasRendererBase.prototype.createShape = function(data) {
10249 + return new CVShapeElement(data, this.globalData, this);
10250 + };
10251 + CanvasRendererBase.prototype.createText = function(data) {
10252 + return new CVTextElement(data, this.globalData, this);
10253 + };
10254 + CanvasRendererBase.prototype.createImage = function(data) {
10255 + return new CVImageElement(data, this.globalData, this);
10256 + };
10257 + CanvasRendererBase.prototype.createSolid = function(data) {
10258 + return new CVSolidElement(data, this.globalData, this);
10259 + };
10260 + CanvasRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;
10261 + CanvasRendererBase.prototype.ctxTransform = function(props) {
10262 + if (props[0] === 1 && props[1] === 0 && props[4] === 0 && props[5] === 1 && props[12] === 0 && props[13] === 0) return;
10263 + this.canvasContext.transform(props[0], props[1], props[4], props[5], props[12], props[13]);
10264 + };
10265 + CanvasRendererBase.prototype.ctxOpacity = function(op) {
10266 + this.canvasContext.globalAlpha *= op < 0 ? 0 : op;
10267 + };
10268 + CanvasRendererBase.prototype.ctxFillStyle = function(value) {
10269 + this.canvasContext.fillStyle = value;
10270 + };
10271 + CanvasRendererBase.prototype.ctxStrokeStyle = function(value) {
10272 + this.canvasContext.strokeStyle = value;
10273 + };
10274 + CanvasRendererBase.prototype.ctxLineWidth = function(value) {
10275 + this.canvasContext.lineWidth = value;
10276 + };
10277 + CanvasRendererBase.prototype.ctxLineCap = function(value) {
10278 + this.canvasContext.lineCap = value;
10279 + };
10280 + CanvasRendererBase.prototype.ctxLineJoin = function(value) {
10281 + this.canvasContext.lineJoin = value;
10282 + };
10283 + CanvasRendererBase.prototype.ctxMiterLimit = function(value) {
10284 + this.canvasContext.miterLimit = value;
10285 + };
10286 + CanvasRendererBase.prototype.ctxFill = function(rule) {
10287 + this.canvasContext.fill(rule);
10288 + };
10289 + CanvasRendererBase.prototype.ctxFillRect = function(x, y, w, h) {
10290 + this.canvasContext.fillRect(x, y, w, h);
10291 + };
10292 + CanvasRendererBase.prototype.ctxStroke = function() {
10293 + this.canvasContext.stroke();
10294 + };
10295 + CanvasRendererBase.prototype.reset = function() {
10296 + if (!this.renderConfig.clearCanvas) {
10297 + this.canvasContext.restore();
10298 + return;
10299 + }
10300 + this.contextData.reset();
10301 + };
10302 + CanvasRendererBase.prototype.save = function() {
10303 + this.canvasContext.save();
10304 + };
10305 + CanvasRendererBase.prototype.restore = function(actionFlag) {
10306 + if (!this.renderConfig.clearCanvas) {
10307 + this.canvasContext.restore();
10308 + return;
10309 + }
10310 + if (actionFlag) this.globalData.blendMode = "source-over";
10311 + this.contextData.restore(actionFlag);
10312 + };
10313 + CanvasRendererBase.prototype.configAnimation = function(animData) {
10314 + if (this.animationItem.wrapper) {
10315 + this.animationItem.container = createTag("canvas");
10316 + var containerStyle = this.animationItem.container.style;
10317 + containerStyle.width = "100%";
10318 + containerStyle.height = "100%";
10319 + var origin = "0px 0px 0px";
10320 + containerStyle.transformOrigin = origin;
10321 + containerStyle.mozTransformOrigin = origin;
10322 + containerStyle.webkitTransformOrigin = origin;
10323 + containerStyle["-webkit-transform"] = origin;
10324 + containerStyle.contentVisibility = this.renderConfig.contentVisibility;
10325 + this.animationItem.wrapper.appendChild(this.animationItem.container);
10326 + this.canvasContext = this.animationItem.container.getContext("2d");
10327 + if (this.renderConfig.className) this.animationItem.container.setAttribute("class", this.renderConfig.className);
10328 + if (this.renderConfig.id) this.animationItem.container.setAttribute("id", this.renderConfig.id);
10329 + } else this.canvasContext = this.renderConfig.context;
10330 + this.contextData.setContext(this.canvasContext);
10331 + this.data = animData;
10332 + this.layers = animData.layers;
10333 + this.transformCanvas = {
10334 + w: animData.w,
10335 + h: animData.h,
10336 + sx: 0,
10337 + sy: 0,
10338 + tx: 0,
10339 + ty: 0
10340 + };
10341 + this.setupGlobalData(animData, document.body);
10342 + this.globalData.canvasContext = this.canvasContext;
10343 + this.globalData.renderer = this;
10344 + this.globalData.isDashed = false;
10345 + this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;
10346 + this.globalData.transformCanvas = this.transformCanvas;
10347 + this.elements = createSizedArray(animData.layers.length);
10348 + this.updateContainerSize();
10349 + };
10350 + CanvasRendererBase.prototype.updateContainerSize = function(width, height) {
10351 + this.reset();
10352 + var elementWidth;
10353 + var elementHeight;
10354 + if (width) {
10355 + elementWidth = width;
10356 + elementHeight = height;
10357 + this.canvasContext.canvas.width = elementWidth;
10358 + this.canvasContext.canvas.height = elementHeight;
10359 + } else {
10360 + if (this.animationItem.wrapper && this.animationItem.container) {
10361 + elementWidth = this.animationItem.wrapper.offsetWidth;
10362 + elementHeight = this.animationItem.wrapper.offsetHeight;
10363 + } else {
10364 + elementWidth = this.canvasContext.canvas.width;
10365 + elementHeight = this.canvasContext.canvas.height;
10366 + }
10367 + this.canvasContext.canvas.width = elementWidth * this.renderConfig.dpr;
10368 + this.canvasContext.canvas.height = elementHeight * this.renderConfig.dpr;
10369 + }
10370 + var elementRel;
10371 + var animationRel;
10372 + if (this.renderConfig.preserveAspectRatio.indexOf("meet") !== -1 || this.renderConfig.preserveAspectRatio.indexOf("slice") !== -1) {
10373 + var par = this.renderConfig.preserveAspectRatio.split(" ");
10374 + var fillType = par[1] || "meet";
10375 + var pos = par[0] || "xMidYMid";
10376 + var xPos = pos.substr(0, 4);
10377 + var yPos = pos.substr(4);
10378 + elementRel = elementWidth / elementHeight;
10379 + animationRel = this.transformCanvas.w / this.transformCanvas.h;
10380 + if (animationRel > elementRel && fillType === "meet" || animationRel < elementRel && fillType === "slice") {
10381 + this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);
10382 + this.transformCanvas.sy = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);
10383 + } else {
10384 + this.transformCanvas.sx = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);
10385 + this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);
10386 + }
10387 + if (xPos === "xMid" && (animationRel < elementRel && fillType === "meet" || animationRel > elementRel && fillType === "slice")) this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) / 2 * this.renderConfig.dpr;
10388 + else if (xPos === "xMax" && (animationRel < elementRel && fillType === "meet" || animationRel > elementRel && fillType === "slice")) this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) * this.renderConfig.dpr;
10389 + else this.transformCanvas.tx = 0;
10390 + if (yPos === "YMid" && (animationRel > elementRel && fillType === "meet" || animationRel < elementRel && fillType === "slice")) this.transformCanvas.ty = (elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) / 2 * this.renderConfig.dpr;
10391 + else if (yPos === "YMax" && (animationRel > elementRel && fillType === "meet" || animationRel < elementRel && fillType === "slice")) this.transformCanvas.ty = (elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) * this.renderConfig.dpr;
10392 + else this.transformCanvas.ty = 0;
10393 + } else if (this.renderConfig.preserveAspectRatio === "none") {
10394 + this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);
10395 + this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);
10396 + this.transformCanvas.tx = 0;
10397 + this.transformCanvas.ty = 0;
10398 + } else {
10399 + this.transformCanvas.sx = this.renderConfig.dpr;
10400 + this.transformCanvas.sy = this.renderConfig.dpr;
10401 + this.transformCanvas.tx = 0;
10402 + this.transformCanvas.ty = 0;
10403 + }
10404 + this.transformCanvas.props = [
10405 + this.transformCanvas.sx,
10406 + 0,
10407 + 0,
10408 + 0,
10409 + 0,
10410 + this.transformCanvas.sy,
10411 + 0,
10412 + 0,
10413 + 0,
10414 + 0,
10415 + 1,
10416 + 0,
10417 + this.transformCanvas.tx,
10418 + this.transformCanvas.ty,
10419 + 0,
10420 + 1
10421 + ];
10422 + this.ctxTransform(this.transformCanvas.props);
10423 + this.canvasContext.beginPath();
10424 + this.canvasContext.rect(0, 0, this.transformCanvas.w, this.transformCanvas.h);
10425 + this.canvasContext.closePath();
10426 + this.canvasContext.clip();
10427 + this.renderFrame(this.renderedFrame, true);
10428 + };
10429 + CanvasRendererBase.prototype.destroy = function() {
10430 + if (this.renderConfig.clearCanvas && this.animationItem.wrapper) this.animationItem.wrapper.innerText = "";
10431 + var i;
10432 + for (i = (this.layers ? this.layers.length : 0) - 1; i >= 0; i -= 1) if (this.elements[i] && this.elements[i].destroy) this.elements[i].destroy();
10433 + this.elements.length = 0;
10434 + this.globalData.canvasContext = null;
10435 + this.animationItem.container = null;
10436 + this.destroyed = true;
10437 + };
10438 + CanvasRendererBase.prototype.renderFrame = function(num, forceRender) {
10439 + if (this.renderedFrame === num && this.renderConfig.clearCanvas === true && !forceRender || this.destroyed || num === -1) return;
10440 + this.renderedFrame = num;
10441 + this.globalData.frameNum = num - this.animationItem._isFirstFrame;
10442 + this.globalData.frameId += 1;
10443 + this.globalData._mdf = !this.renderConfig.clearCanvas || forceRender;
10444 + this.globalData.projectInterface.currentFrame = num;
10445 + var i;
10446 + var len = this.layers.length;
10447 + if (!this.completeLayers) this.checkLayers(num);
10448 + for (i = len - 1; i >= 0; i -= 1) if (this.completeLayers || this.elements[i]) this.elements[i].prepareFrame(num - this.layers[i].st);
10449 + if (this.globalData._mdf) {
10450 + if (this.renderConfig.clearCanvas === true) this.canvasContext.clearRect(0, 0, this.transformCanvas.w, this.transformCanvas.h);
10451 + else this.save();
10452 + for (i = len - 1; i >= 0; i -= 1) if (this.completeLayers || this.elements[i]) this.elements[i].renderFrame();
10453 + if (this.renderConfig.clearCanvas !== true) this.restore();
10454 + }
10455 + };
10456 + CanvasRendererBase.prototype.buildItem = function(pos) {
10457 + var elements = this.elements;
10458 + if (elements[pos] || this.layers[pos].ty === 99) return;
10459 + var element = this.createItem(this.layers[pos], this, this.globalData);
10460 + elements[pos] = element;
10461 + element.initExpressions();
10462 + };
10463 + CanvasRendererBase.prototype.checkPendingElements = function() {
10464 + while (this.pendingElements.length) this.pendingElements.pop().checkParenting();
10465 + };
10466 + CanvasRendererBase.prototype.hide = function() {
10467 + this.animationItem.container.style.display = "none";
10468 + };
10469 + CanvasRendererBase.prototype.show = function() {
10470 + this.animationItem.container.style.display = "block";
10471 + };
10472 + function CanvasContext() {
10473 + this.opacity = -1;
10474 + this.transform = createTypedArray("float32", 16);
10475 + this.fillStyle = "";
10476 + this.strokeStyle = "";
10477 + this.lineWidth = "";
10478 + this.lineCap = "";
10479 + this.lineJoin = "";
10480 + this.miterLimit = "";
10481 + this.id = Math.random();
10482 + }
10483 + function CVContextData() {
10484 + this.stack = [];
10485 + this.cArrPos = 0;
10486 + this.cTr = new Matrix();
10487 + var i;
10488 + var len = 15;
10489 + for (i = 0; i < len; i += 1) {
10490 + var canvasContext = new CanvasContext();
10491 + this.stack[i] = canvasContext;
10492 + }
10493 + this._length = len;
10494 + this.nativeContext = null;
10495 + this.transformMat = new Matrix();
10496 + this.currentOpacity = 1;
10497 + this.currentFillStyle = "";
10498 + this.appliedFillStyle = "";
10499 + this.currentStrokeStyle = "";
10500 + this.appliedStrokeStyle = "";
10501 + this.currentLineWidth = "";
10502 + this.appliedLineWidth = "";
10503 + this.currentLineCap = "";
10504 + this.appliedLineCap = "";
10505 + this.currentLineJoin = "";
10506 + this.appliedLineJoin = "";
10507 + this.appliedMiterLimit = "";
10508 + this.currentMiterLimit = "";
10509 + }
10510 + CVContextData.prototype.duplicate = function() {
10511 + var newLength = this._length * 2;
10512 + var i = 0;
10513 + for (i = this._length; i < newLength; i += 1) this.stack[i] = new CanvasContext();
10514 + this._length = newLength;
10515 + };
10516 + CVContextData.prototype.reset = function() {
10517 + this.cArrPos = 0;
10518 + this.cTr.reset();
10519 + this.stack[this.cArrPos].opacity = 1;
10520 + };
10521 + CVContextData.prototype.restore = function(forceRestore) {
10522 + this.cArrPos -= 1;
10523 + var currentContext = this.stack[this.cArrPos];
10524 + var transform = currentContext.transform;
10525 + var i;
10526 + var arr = this.cTr.props;
10527 + for (i = 0; i < 16; i += 1) arr[i] = transform[i];
10528 + if (forceRestore) {
10529 + this.nativeContext.restore();
10530 + var prevStack = this.stack[this.cArrPos + 1];
10531 + this.appliedFillStyle = prevStack.fillStyle;
10532 + this.appliedStrokeStyle = prevStack.strokeStyle;
10533 + this.appliedLineWidth = prevStack.lineWidth;
10534 + this.appliedLineCap = prevStack.lineCap;
10535 + this.appliedLineJoin = prevStack.lineJoin;
10536 + this.appliedMiterLimit = prevStack.miterLimit;
10537 + }
10538 + this.nativeContext.setTransform(transform[0], transform[1], transform[4], transform[5], transform[12], transform[13]);
10539 + if (forceRestore || currentContext.opacity !== -1 && this.currentOpacity !== currentContext.opacity) {
10540 + this.nativeContext.globalAlpha = currentContext.opacity;
10541 + this.currentOpacity = currentContext.opacity;
10542 + }
10543 + this.currentFillStyle = currentContext.fillStyle;
10544 + this.currentStrokeStyle = currentContext.strokeStyle;
10545 + this.currentLineWidth = currentContext.lineWidth;
10546 + this.currentLineCap = currentContext.lineCap;
10547 + this.currentLineJoin = currentContext.lineJoin;
10548 + this.currentMiterLimit = currentContext.miterLimit;
10549 + };
10550 + CVContextData.prototype.save = function(saveOnNativeFlag) {
10551 + if (saveOnNativeFlag) this.nativeContext.save();
10552 + var props = this.cTr.props;
10553 + if (this._length <= this.cArrPos) this.duplicate();
10554 + var currentStack = this.stack[this.cArrPos];
10555 + var i;
10556 + for (i = 0; i < 16; i += 1) currentStack.transform[i] = props[i];
10557 + this.cArrPos += 1;
10558 + var newStack = this.stack[this.cArrPos];
10559 + newStack.opacity = currentStack.opacity;
10560 + newStack.fillStyle = currentStack.fillStyle;
10561 + newStack.strokeStyle = currentStack.strokeStyle;
10562 + newStack.lineWidth = currentStack.lineWidth;
10563 + newStack.lineCap = currentStack.lineCap;
10564 + newStack.lineJoin = currentStack.lineJoin;
10565 + newStack.miterLimit = currentStack.miterLimit;
10566 + };
10567 + CVContextData.prototype.setOpacity = function(value) {
10568 + this.stack[this.cArrPos].opacity = value;
10569 + };
10570 + CVContextData.prototype.setContext = function(value) {
10571 + this.nativeContext = value;
10572 + };
10573 + CVContextData.prototype.fillStyle = function(value) {
10574 + if (this.stack[this.cArrPos].fillStyle !== value) {
10575 + this.currentFillStyle = value;
10576 + this.stack[this.cArrPos].fillStyle = value;
10577 + }
10578 + };
10579 + CVContextData.prototype.strokeStyle = function(value) {
10580 + if (this.stack[this.cArrPos].strokeStyle !== value) {
10581 + this.currentStrokeStyle = value;
10582 + this.stack[this.cArrPos].strokeStyle = value;
10583 + }
10584 + };
10585 + CVContextData.prototype.lineWidth = function(value) {
10586 + if (this.stack[this.cArrPos].lineWidth !== value) {
10587 + this.currentLineWidth = value;
10588 + this.stack[this.cArrPos].lineWidth = value;
10589 + }
10590 + };
10591 + CVContextData.prototype.lineCap = function(value) {
10592 + if (this.stack[this.cArrPos].lineCap !== value) {
10593 + this.currentLineCap = value;
10594 + this.stack[this.cArrPos].lineCap = value;
10595 + }
10596 + };
10597 + CVContextData.prototype.lineJoin = function(value) {
10598 + if (this.stack[this.cArrPos].lineJoin !== value) {
10599 + this.currentLineJoin = value;
10600 + this.stack[this.cArrPos].lineJoin = value;
10601 + }
10602 + };
10603 + CVContextData.prototype.miterLimit = function(value) {
10604 + if (this.stack[this.cArrPos].miterLimit !== value) {
10605 + this.currentMiterLimit = value;
10606 + this.stack[this.cArrPos].miterLimit = value;
10607 + }
10608 + };
10609 + CVContextData.prototype.transform = function(props) {
10610 + this.transformMat.cloneFromProps(props);
10611 + var currentTransform = this.cTr;
10612 + this.transformMat.multiply(currentTransform);
10613 + currentTransform.cloneFromProps(this.transformMat.props);
10614 + var trProps = currentTransform.props;
10615 + this.nativeContext.setTransform(trProps[0], trProps[1], trProps[4], trProps[5], trProps[12], trProps[13]);
10616 + };
10617 + CVContextData.prototype.opacity = function(op) {
10618 + var currentOpacity = this.stack[this.cArrPos].opacity;
10619 + currentOpacity *= op < 0 ? 0 : op;
10620 + if (this.stack[this.cArrPos].opacity !== currentOpacity) {
10621 + if (this.currentOpacity !== op) {
10622 + this.nativeContext.globalAlpha = op;
10623 + this.currentOpacity = op;
10624 + }
10625 + this.stack[this.cArrPos].opacity = currentOpacity;
10626 + }
10627 + };
10628 + CVContextData.prototype.fill = function(rule) {
10629 + if (this.appliedFillStyle !== this.currentFillStyle) {
10630 + this.appliedFillStyle = this.currentFillStyle;
10631 + this.nativeContext.fillStyle = this.appliedFillStyle;
10632 + }
10633 + this.nativeContext.fill(rule);
10634 + };
10635 + CVContextData.prototype.fillRect = function(x, y, w, h) {
10636 + if (this.appliedFillStyle !== this.currentFillStyle) {
10637 + this.appliedFillStyle = this.currentFillStyle;
10638 + this.nativeContext.fillStyle = this.appliedFillStyle;
10639 + }
10640 + this.nativeContext.fillRect(x, y, w, h);
10641 + };
10642 + CVContextData.prototype.stroke = function() {
10643 + if (this.appliedStrokeStyle !== this.currentStrokeStyle) {
10644 + this.appliedStrokeStyle = this.currentStrokeStyle;
10645 + this.nativeContext.strokeStyle = this.appliedStrokeStyle;
10646 + }
10647 + if (this.appliedLineWidth !== this.currentLineWidth) {
10648 + this.appliedLineWidth = this.currentLineWidth;
10649 + this.nativeContext.lineWidth = this.appliedLineWidth;
10650 + }
10651 + if (this.appliedLineCap !== this.currentLineCap) {
10652 + this.appliedLineCap = this.currentLineCap;
10653 + this.nativeContext.lineCap = this.appliedLineCap;
10654 + }
10655 + if (this.appliedLineJoin !== this.currentLineJoin) {
10656 + this.appliedLineJoin = this.currentLineJoin;
10657 + this.nativeContext.lineJoin = this.appliedLineJoin;
10658 + }
10659 + if (this.appliedMiterLimit !== this.currentMiterLimit) {
10660 + this.appliedMiterLimit = this.currentMiterLimit;
10661 + this.nativeContext.miterLimit = this.appliedMiterLimit;
10662 + }
10663 + this.nativeContext.stroke();
10664 + };
10665 + function CVCompElement(data, globalData, comp) {
10666 + this.completeLayers = false;
10667 + this.layers = data.layers;
10668 + this.pendingElements = [];
10669 + this.elements = createSizedArray(this.layers.length);
10670 + this.initElement(data, globalData, comp);
10671 + this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : { _placeholder: true };
10672 + }
10673 + extendPrototype([
10674 + CanvasRendererBase,
10675 + ICompElement,
10676 + CVBaseElement
10677 + ], CVCompElement);
10678 + CVCompElement.prototype.renderInnerContent = function() {
10679 + var ctx = this.canvasContext;
10680 + ctx.beginPath();
10681 + ctx.moveTo(0, 0);
10682 + ctx.lineTo(this.data.w, 0);
10683 + ctx.lineTo(this.data.w, this.data.h);
10684 + ctx.lineTo(0, this.data.h);
10685 + ctx.lineTo(0, 0);
10686 + ctx.clip();
10687 + var i;
10688 + for (i = this.layers.length - 1; i >= 0; i -= 1) if (this.completeLayers || this.elements[i]) this.elements[i].renderFrame();
10689 + };
10690 + CVCompElement.prototype.destroy = function() {
10691 + var i;
10692 + for (i = this.layers.length - 1; i >= 0; i -= 1) if (this.elements[i]) this.elements[i].destroy();
10693 + this.layers = null;
10694 + this.elements = null;
10695 + };
10696 + CVCompElement.prototype.createComp = function(data) {
10697 + return new CVCompElement(data, this.globalData, this);
10698 + };
10699 + function CanvasRenderer(animationItem, config) {
10700 + this.animationItem = animationItem;
10701 + this.renderConfig = {
10702 + clearCanvas: config && config.clearCanvas !== void 0 ? config.clearCanvas : true,
10703 + context: config && config.context || null,
10704 + progressiveLoad: config && config.progressiveLoad || false,
10705 + preserveAspectRatio: config && config.preserveAspectRatio || "xMidYMid meet",
10706 + imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || "xMidYMid slice",
10707 + contentVisibility: config && config.contentVisibility || "visible",
10708 + className: config && config.className || "",
10709 + id: config && config.id || "",
10710 + runExpressions: !config || config.runExpressions === void 0 || config.runExpressions
10711 + };
10712 + this.renderConfig.dpr = config && config.dpr || 1;
10713 + if (this.animationItem.wrapper) this.renderConfig.dpr = config && config.dpr || window.devicePixelRatio || 1;
10714 + this.renderedFrame = -1;
10715 + this.globalData = {
10716 + frameNum: -1,
10717 + _mdf: false,
10718 + renderConfig: this.renderConfig,
10719 + currentGlobalAlpha: -1
10720 + };
10721 + this.contextData = new CVContextData();
10722 + this.elements = [];
10723 + this.pendingElements = [];
10724 + this.transformMat = new Matrix();
10725 + this.completeLayers = false;
10726 + this.rendererType = "canvas";
10727 + if (this.renderConfig.clearCanvas) {
10728 + this.ctxTransform = this.contextData.transform.bind(this.contextData);
10729 + this.ctxOpacity = this.contextData.opacity.bind(this.contextData);
10730 + this.ctxFillStyle = this.contextData.fillStyle.bind(this.contextData);
10731 + this.ctxStrokeStyle = this.contextData.strokeStyle.bind(this.contextData);
10732 + this.ctxLineWidth = this.contextData.lineWidth.bind(this.contextData);
10733 + this.ctxLineCap = this.contextData.lineCap.bind(this.contextData);
10734 + this.ctxLineJoin = this.contextData.lineJoin.bind(this.contextData);
10735 + this.ctxMiterLimit = this.contextData.miterLimit.bind(this.contextData);
10736 + this.ctxFill = this.contextData.fill.bind(this.contextData);
10737 + this.ctxFillRect = this.contextData.fillRect.bind(this.contextData);
10738 + this.ctxStroke = this.contextData.stroke.bind(this.contextData);
10739 + this.save = this.contextData.save.bind(this.contextData);
10740 + }
10741 + }
10742 + extendPrototype([CanvasRendererBase], CanvasRenderer);
10743 + CanvasRenderer.prototype.createComp = function(data) {
10744 + return new CVCompElement(data, this.globalData, this);
10745 + };
10746 + function HBaseElement() {}
10747 + HBaseElement.prototype = {
10748 + checkBlendMode: function checkBlendMode() {},
10749 + initRendererElement: function initRendererElement() {
10750 + this.baseElement = createTag(this.data.tg || "div");
10751 + if (this.data.hasMask) {
10752 + this.svgElement = createNS("svg");
10753 + this.layerElement = createNS("g");
10754 + this.maskedElement = this.layerElement;
10755 + this.svgElement.appendChild(this.layerElement);
10756 + this.baseElement.appendChild(this.svgElement);
10757 + } else this.layerElement = this.baseElement;
10758 + styleDiv(this.baseElement);
10759 + },
10760 + createContainerElements: function createContainerElements() {
10761 + this.renderableEffectsManager = new CVEffects(this);
10762 + this.transformedElement = this.baseElement;
10763 + this.maskedElement = this.layerElement;
10764 + if (this.data.ln) this.layerElement.setAttribute("id", this.data.ln);
10765 + if (this.data.cl) this.layerElement.setAttribute("class", this.data.cl);
10766 + if (this.data.bm !== 0) this.setBlendMode();
10767 + },
10768 + renderElement: function renderElement() {
10769 + var transformedElementStyle = this.transformedElement ? this.transformedElement.style : {};
10770 + if (this.finalTransform._matMdf) {
10771 + var matrixValue = this.finalTransform.mat.toCSS();
10772 + transformedElementStyle.transform = matrixValue;
10773 + transformedElementStyle.webkitTransform = matrixValue;
10774 + }
10775 + if (this.finalTransform._opMdf) transformedElementStyle.opacity = this.finalTransform.mProp.o.v;
10776 + },
10777 + renderFrame: function renderFrame() {
10778 + if (this.data.hd || this.hidden) return;
10779 + this.renderTransform();
10780 + this.renderRenderable();
10781 + this.renderElement();
10782 + this.renderInnerContent();
10783 + if (this._isFirstFrame) this._isFirstFrame = false;
10784 + },
10785 + destroy: function destroy() {
10786 + this.layerElement = null;
10787 + this.transformedElement = null;
10788 + if (this.matteElement) this.matteElement = null;
10789 + if (this.maskManager) {
10790 + this.maskManager.destroy();
10791 + this.maskManager = null;
10792 + }
10793 + },
10794 + createRenderableComponents: function createRenderableComponents() {
10795 + this.maskManager = new MaskElement(this.data, this, this.globalData);
10796 + },
10797 + addEffects: function addEffects() {},
10798 + setMatte: function setMatte() {}
10799 + };
10800 + HBaseElement.prototype.getBaseElement = SVGBaseElement.prototype.getBaseElement;
10801 + HBaseElement.prototype.destroyBaseElement = HBaseElement.prototype.destroy;
10802 + HBaseElement.prototype.buildElementParenting = BaseRenderer.prototype.buildElementParenting;
10803 + function HSolidElement(data, globalData, comp) {
10804 + this.initElement(data, globalData, comp);
10805 + }
10806 + extendPrototype([
10807 + BaseElement,
10808 + TransformElement,
10809 + HBaseElement,
10810 + HierarchyElement,
10811 + FrameElement,
10812 + RenderableDOMElement
10813 + ], HSolidElement);
10814 + HSolidElement.prototype.createContent = function() {
10815 + var rect;
10816 + if (this.data.hasMask) {
10817 + rect = createNS("rect");
10818 + rect.setAttribute("width", this.data.sw);
10819 + rect.setAttribute("height", this.data.sh);
10820 + rect.setAttribute("fill", this.data.sc);
10821 + this.svgElement.setAttribute("width", this.data.sw);
10822 + this.svgElement.setAttribute("height", this.data.sh);
10823 + } else {
10824 + rect = createTag("div");
10825 + rect.style.width = this.data.sw + "px";
10826 + rect.style.height = this.data.sh + "px";
10827 + rect.style.backgroundColor = this.data.sc;
10828 + }
10829 + this.layerElement.appendChild(rect);
10830 + };
10831 + function HShapeElement(data, globalData, comp) {
10832 + this.shapes = [];
10833 + this.shapesData = data.shapes;
10834 + this.stylesList = [];
10835 + this.shapeModifiers = [];
10836 + this.itemsData = [];
10837 + this.processedElements = [];
10838 + this.animatedContents = [];
10839 + this.shapesContainer = createNS("g");
10840 + this.initElement(data, globalData, comp);
10841 + this.prevViewData = [];
10842 + this.currentBBox = {
10843 + x: 999999,
10844 + y: -999999,
10845 + h: 0,
10846 + w: 0
10847 + };
10848 + }
10849 + extendPrototype([
10850 + BaseElement,
10851 + TransformElement,
10852 + HSolidElement,
10853 + SVGShapeElement,
10854 + HBaseElement,
10855 + HierarchyElement,
10856 + FrameElement,
10857 + RenderableElement
10858 + ], HShapeElement);
10859 + HShapeElement.prototype._renderShapeFrame = HShapeElement.prototype.renderInnerContent;
10860 + HShapeElement.prototype.createContent = function() {
10861 + var cont;
10862 + this.baseElement.style.fontSize = 0;
10863 + if (this.data.hasMask) {
10864 + this.layerElement.appendChild(this.shapesContainer);
10865 + cont = this.svgElement;
10866 + } else {
10867 + cont = createNS("svg");
10868 + var size = this.comp.data ? this.comp.data : this.globalData.compSize;
10869 + cont.setAttribute("width", size.w);
10870 + cont.setAttribute("height", size.h);
10871 + cont.appendChild(this.shapesContainer);
10872 + this.layerElement.appendChild(cont);
10873 + }
10874 + this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.shapesContainer, 0, [], true);
10875 + this.filterUniqueShapes();
10876 + this.shapeCont = cont;
10877 + };
10878 + HShapeElement.prototype.getTransformedPoint = function(transformers, point) {
10879 + var i;
10880 + var len = transformers.length;
10881 + for (i = 0; i < len; i += 1) point = transformers[i].mProps.v.applyToPointArray(point[0], point[1], 0);
10882 + return point;
10883 + };
10884 + HShapeElement.prototype.calculateShapeBoundingBox = function(item, boundingBox) {
10885 + var shape = item.sh.v;
10886 + var transformers = item.transformers;
10887 + var i;
10888 + var len = shape._length;
10889 + var vPoint;
10890 + var oPoint;
10891 + var nextIPoint;
10892 + var nextVPoint;
10893 + if (len <= 1) return;
10894 + for (i = 0; i < len - 1; i += 1) {
10895 + vPoint = this.getTransformedPoint(transformers, shape.v[i]);
10896 + oPoint = this.getTransformedPoint(transformers, shape.o[i]);
10897 + nextIPoint = this.getTransformedPoint(transformers, shape.i[i + 1]);
10898 + nextVPoint = this.getTransformedPoint(transformers, shape.v[i + 1]);
10899 + this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);
10900 + }
10901 + if (shape.c) {
10902 + vPoint = this.getTransformedPoint(transformers, shape.v[i]);
10903 + oPoint = this.getTransformedPoint(transformers, shape.o[i]);
10904 + nextIPoint = this.getTransformedPoint(transformers, shape.i[0]);
10905 + nextVPoint = this.getTransformedPoint(transformers, shape.v[0]);
10906 + this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);
10907 + }
10908 + };
10909 + HShapeElement.prototype.checkBounds = function(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox) {
10910 + this.getBoundsOfCurve(vPoint, oPoint, nextIPoint, nextVPoint);
10911 + var bounds = this.shapeBoundingBox;
10912 + boundingBox.x = bmMin(bounds.left, boundingBox.x);
10913 + boundingBox.xMax = bmMax(bounds.right, boundingBox.xMax);
10914 + boundingBox.y = bmMin(bounds.top, boundingBox.y);
10915 + boundingBox.yMax = bmMax(bounds.bottom, boundingBox.yMax);
10916 + };
10917 + HShapeElement.prototype.shapeBoundingBox = {
10918 + left: 0,
10919 + right: 0,
10920 + top: 0,
10921 + bottom: 0
10922 + };
10923 + HShapeElement.prototype.tempBoundingBox = {
10924 + x: 0,
10925 + xMax: 0,
10926 + y: 0,
10927 + yMax: 0,
10928 + width: 0,
10929 + height: 0
10930 + };
10931 + HShapeElement.prototype.getBoundsOfCurve = function(p0, p1, p2, p3) {
10932 + var bounds = [[p0[0], p3[0]], [p0[1], p3[1]]];
10933 + for (var a, b, c, t, b2ac, t1, t2, i = 0; i < 2; ++i) {
10934 + b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i];
10935 + a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i];
10936 + c = 3 * p1[i] - 3 * p0[i];
10937 + b |= 0;
10938 + a |= 0;
10939 + c |= 0;
10940 + if (a === 0 && b === 0) {} else if (a === 0) {
10941 + t = -c / b;
10942 + if (t > 0 && t < 1) bounds[i].push(this.calculateF(t, p0, p1, p2, p3, i));
10943 + } else {
10944 + b2ac = b * b - 4 * c * a;
10945 + if (b2ac >= 0) {
10946 + t1 = (-b + bmSqrt(b2ac)) / (2 * a);
10947 + if (t1 > 0 && t1 < 1) bounds[i].push(this.calculateF(t1, p0, p1, p2, p3, i));
10948 + t2 = (-b - bmSqrt(b2ac)) / (2 * a);
10949 + if (t2 > 0 && t2 < 1) bounds[i].push(this.calculateF(t2, p0, p1, p2, p3, i));
10950 + }
10951 + }
10952 + }
10953 + this.shapeBoundingBox.left = bmMin.apply(null, bounds[0]);
10954 + this.shapeBoundingBox.top = bmMin.apply(null, bounds[1]);
10955 + this.shapeBoundingBox.right = bmMax.apply(null, bounds[0]);
10956 + this.shapeBoundingBox.bottom = bmMax.apply(null, bounds[1]);
10957 + };
10958 + HShapeElement.prototype.calculateF = function(t, p0, p1, p2, p3, i) {
10959 + 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];
10960 + };
10961 + HShapeElement.prototype.calculateBoundingBox = function(itemsData, boundingBox) {
10962 + var i;
10963 + var len = itemsData.length;
10964 + for (i = 0; i < len; i += 1) if (itemsData[i] && itemsData[i].sh) this.calculateShapeBoundingBox(itemsData[i], boundingBox);
10965 + else if (itemsData[i] && itemsData[i].it) this.calculateBoundingBox(itemsData[i].it, boundingBox);
10966 + else if (itemsData[i] && itemsData[i].style && itemsData[i].w) this.expandStrokeBoundingBox(itemsData[i].w, boundingBox);
10967 + };
10968 + HShapeElement.prototype.expandStrokeBoundingBox = function(widthProperty, boundingBox) {
10969 + var width = 0;
10970 + if (widthProperty.keyframes) {
10971 + for (var i = 0; i < widthProperty.keyframes.length; i += 1) {
10972 + var kfw = widthProperty.keyframes[i].s;
10973 + if (kfw > width) width = kfw;
10974 + }
10975 + width *= widthProperty.mult;
10976 + } else width = widthProperty.v * widthProperty.mult;
10977 + boundingBox.x -= width;
10978 + boundingBox.xMax += width;
10979 + boundingBox.y -= width;
10980 + boundingBox.yMax += width;
10981 + };
10982 + HShapeElement.prototype.currentBoxContains = function(box) {
10983 + 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;
10984 + };
10985 + HShapeElement.prototype.renderInnerContent = function() {
10986 + this._renderShapeFrame();
10987 + if (!this.hidden && (this._isFirstFrame || this._mdf)) {
10988 + var tempBoundingBox = this.tempBoundingBox;
10989 + var max = 999999;
10990 + tempBoundingBox.x = max;
10991 + tempBoundingBox.xMax = -max;
10992 + tempBoundingBox.y = max;
10993 + tempBoundingBox.yMax = -max;
10994 + this.calculateBoundingBox(this.itemsData, tempBoundingBox);
10995 + tempBoundingBox.width = tempBoundingBox.xMax < tempBoundingBox.x ? 0 : tempBoundingBox.xMax - tempBoundingBox.x;
10996 + tempBoundingBox.height = tempBoundingBox.yMax < tempBoundingBox.y ? 0 : tempBoundingBox.yMax - tempBoundingBox.y;
10997 + if (this.currentBoxContains(tempBoundingBox)) return;
10998 + var changed = false;
10999 + if (this.currentBBox.w !== tempBoundingBox.width) {
11000 + this.currentBBox.w = tempBoundingBox.width;
11001 + this.shapeCont.setAttribute("width", tempBoundingBox.width);
11002 + changed = true;
11003 + }
11004 + if (this.currentBBox.h !== tempBoundingBox.height) {
11005 + this.currentBBox.h = tempBoundingBox.height;
11006 + this.shapeCont.setAttribute("height", tempBoundingBox.height);
11007 + changed = true;
11008 + }
11009 + if (changed || this.currentBBox.x !== tempBoundingBox.x || this.currentBBox.y !== tempBoundingBox.y) {
11010 + this.currentBBox.w = tempBoundingBox.width;
11011 + this.currentBBox.h = tempBoundingBox.height;
11012 + this.currentBBox.x = tempBoundingBox.x;
11013 + this.currentBBox.y = tempBoundingBox.y;
11014 + this.shapeCont.setAttribute("viewBox", this.currentBBox.x + " " + this.currentBBox.y + " " + this.currentBBox.w + " " + this.currentBBox.h);
11015 + var shapeStyle = this.shapeCont.style;
11016 + var shapeTransform = "translate(" + this.currentBBox.x + "px," + this.currentBBox.y + "px)";
11017 + shapeStyle.transform = shapeTransform;
11018 + shapeStyle.webkitTransform = shapeTransform;
11019 + }
11020 + }
11021 + };
11022 + function HTextElement(data, globalData, comp) {
11023 + this.textSpans = [];
11024 + this.textPaths = [];
11025 + this.currentBBox = {
11026 + x: 999999,
11027 + y: -999999,
11028 + h: 0,
11029 + w: 0
11030 + };
11031 + this.renderType = "svg";
11032 + this.isMasked = false;
11033 + this.initElement(data, globalData, comp);
11034 + }
11035 + extendPrototype([
11036 + BaseElement,
11037 + TransformElement,
11038 + HBaseElement,
11039 + HierarchyElement,
11040 + FrameElement,
11041 + RenderableDOMElement,
11042 + ITextElement
11043 + ], HTextElement);
11044 + HTextElement.prototype.createContent = function() {
11045 + this.isMasked = this.checkMasks();
11046 + if (this.isMasked) {
11047 + this.renderType = "svg";
11048 + this.compW = this.comp.data.w;
11049 + this.compH = this.comp.data.h;
11050 + this.svgElement.setAttribute("width", this.compW);
11051 + this.svgElement.setAttribute("height", this.compH);
11052 + var g = createNS("g");
11053 + this.maskedElement.appendChild(g);
11054 + this.innerElem = g;
11055 + } else {
11056 + this.renderType = "html";
11057 + this.innerElem = this.layerElement;
11058 + }
11059 + this.checkParenting();
11060 + };
11061 + HTextElement.prototype.buildNewText = function() {
11062 + var documentData = this.textProperty.currentData;
11063 + this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);
11064 + var innerElemStyle = this.innerElem.style;
11065 + var textColor = documentData.fc ? this.buildColor(documentData.fc) : "rgba(0,0,0,0)";
11066 + innerElemStyle.fill = textColor;
11067 + innerElemStyle.color = textColor;
11068 + if (documentData.sc) {
11069 + innerElemStyle.stroke = this.buildColor(documentData.sc);
11070 + innerElemStyle.strokeWidth = documentData.sw + "px";
11071 + }
11072 + var fontData = this.globalData.fontManager.getFontByName(documentData.f);
11073 + if (!this.globalData.fontManager.chars) {
11074 + innerElemStyle.fontSize = documentData.finalSize + "px";
11075 + innerElemStyle.lineHeight = documentData.finalSize + "px";
11076 + if (fontData.fClass) this.innerElem.className = fontData.fClass;
11077 + else {
11078 + innerElemStyle.fontFamily = fontData.fFamily;
11079 + var fWeight = documentData.fWeight;
11080 + innerElemStyle.fontStyle = documentData.fStyle;
11081 + innerElemStyle.fontWeight = fWeight;
11082 + }
11083 + }
11084 + var i;
11085 + var len;
11086 + var letters = documentData.l;
11087 + len = letters.length;
11088 + var tSpan;
11089 + var tParent;
11090 + var tCont;
11091 + var matrixHelper = this.mHelper;
11092 + var shapes;
11093 + var shapeStr = "";
11094 + var cnt = 0;
11095 + for (i = 0; i < len; i += 1) {
11096 + if (this.globalData.fontManager.chars) {
11097 + if (!this.textPaths[cnt]) {
11098 + tSpan = createNS("path");
11099 + tSpan.setAttribute("stroke-linecap", lineCapEnum[1]);
11100 + tSpan.setAttribute("stroke-linejoin", lineJoinEnum[2]);
11101 + tSpan.setAttribute("stroke-miterlimit", "4");
11102 + } else tSpan = this.textPaths[cnt];
11103 + if (!this.isMasked) if (this.textSpans[cnt]) {
11104 + tParent = this.textSpans[cnt];
11105 + tCont = tParent.children[0];
11106 + } else {
11107 + tParent = createTag("div");
11108 + tParent.style.lineHeight = 0;
11109 + tCont = createNS("svg");
11110 + tCont.appendChild(tSpan);
11111 + styleDiv(tParent);
11112 + }
11113 + } else if (!this.isMasked) if (this.textSpans[cnt]) {
11114 + tParent = this.textSpans[cnt];
11115 + tSpan = this.textPaths[cnt];
11116 + } else {
11117 + tParent = createTag("span");
11118 + styleDiv(tParent);
11119 + tSpan = createTag("span");
11120 + styleDiv(tSpan);
11121 + tParent.appendChild(tSpan);
11122 + }
11123 + else tSpan = this.textPaths[cnt] ? this.textPaths[cnt] : createNS("text");
11124 + if (this.globalData.fontManager.chars) {
11125 + var charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);
11126 + var shapeData;
11127 + if (charData) shapeData = charData.data;
11128 + else shapeData = null;
11129 + matrixHelper.reset();
11130 + if (shapeData && shapeData.shapes && shapeData.shapes.length) {
11131 + shapes = shapeData.shapes[0].it;
11132 + matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);
11133 + shapeStr = this.createPathShape(matrixHelper, shapes);
11134 + tSpan.setAttribute("d", shapeStr);
11135 + }
11136 + if (!this.isMasked) {
11137 + this.innerElem.appendChild(tParent);
11138 + if (shapeData && shapeData.shapes) {
11139 + document.body.appendChild(tCont);
11140 + var boundingBox = tCont.getBBox();
11141 + tCont.setAttribute("width", boundingBox.width + 2);
11142 + tCont.setAttribute("height", boundingBox.height + 2);
11143 + tCont.setAttribute("viewBox", boundingBox.x - 1 + " " + (boundingBox.y - 1) + " " + (boundingBox.width + 2) + " " + (boundingBox.height + 2));
11144 + var tContStyle = tCont.style;
11145 + var tContTranslation = "translate(" + (boundingBox.x - 1) + "px," + (boundingBox.y - 1) + "px)";
11146 + tContStyle.transform = tContTranslation;
11147 + tContStyle.webkitTransform = tContTranslation;
11148 + letters[i].yOffset = boundingBox.y - 1;
11149 + } else {
11150 + tCont.setAttribute("width", 1);
11151 + tCont.setAttribute("height", 1);
11152 + }
11153 + tParent.appendChild(tCont);
11154 + } else this.innerElem.appendChild(tSpan);
11155 + } else {
11156 + tSpan.textContent = letters[i].val;
11157 + tSpan.setAttributeNS("http://www.w3.org/XML/1998/namespace", "xml:space", "preserve");
11158 + if (!this.isMasked) {
11159 + this.innerElem.appendChild(tParent);
11160 + var tStyle = tSpan.style;
11161 + var tSpanTranslation = "translate3d(0," + -documentData.finalSize / 1.2 + "px,0)";
11162 + tStyle.transform = tSpanTranslation;
11163 + tStyle.webkitTransform = tSpanTranslation;
11164 + } else this.innerElem.appendChild(tSpan);
11165 + }
11166 + if (!this.isMasked) this.textSpans[cnt] = tParent;
11167 + else this.textSpans[cnt] = tSpan;
11168 + this.textSpans[cnt].style.display = "block";
11169 + this.textPaths[cnt] = tSpan;
11170 + cnt += 1;
11171 + }
11172 + while (cnt < this.textSpans.length) {
11173 + this.textSpans[cnt].style.display = "none";
11174 + cnt += 1;
11175 + }
11176 + };
11177 + HTextElement.prototype.renderInnerContent = function() {
11178 + this.validateText();
11179 + var svgStyle;
11180 + if (this.data.singleShape) {
11181 + if (!this._isFirstFrame && !this.lettersChangedFlag) return;
11182 + if (this.isMasked && this.finalTransform._matMdf) {
11183 + this.svgElement.setAttribute("viewBox", -this.finalTransform.mProp.p.v[0] + " " + -this.finalTransform.mProp.p.v[1] + " " + this.compW + " " + this.compH);
11184 + svgStyle = this.svgElement.style;
11185 + var translation = "translate(" + -this.finalTransform.mProp.p.v[0] + "px," + -this.finalTransform.mProp.p.v[1] + "px)";
11186 + svgStyle.transform = translation;
11187 + svgStyle.webkitTransform = translation;
11188 + }
11189 + }
11190 + this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);
11191 + if (!this.lettersChangedFlag && !this.textAnimator.lettersChangedFlag) return;
11192 + var i;
11193 + var len;
11194 + var count = 0;
11195 + var renderedLetters = this.textAnimator.renderedLetters;
11196 + var letters = this.textProperty.currentData.l;
11197 + len = letters.length;
11198 + var renderedLetter;
11199 + var textSpan;
11200 + var textPath;
11201 + for (i = 0; i < len; i += 1) if (letters[i].n) count += 1;
11202 + else {
11203 + textSpan = this.textSpans[i];
11204 + textPath = this.textPaths[i];
11205 + renderedLetter = renderedLetters[count];
11206 + count += 1;
11207 + if (renderedLetter._mdf.m) if (!this.isMasked) {
11208 + textSpan.style.webkitTransform = renderedLetter.m;
11209 + textSpan.style.transform = renderedLetter.m;
11210 + } else textSpan.setAttribute("transform", renderedLetter.m);
11211 + textSpan.style.opacity = renderedLetter.o;
11212 + if (renderedLetter.sw && renderedLetter._mdf.sw) textPath.setAttribute("stroke-width", renderedLetter.sw);
11213 + if (renderedLetter.sc && renderedLetter._mdf.sc) textPath.setAttribute("stroke", renderedLetter.sc);
11214 + if (renderedLetter.fc && renderedLetter._mdf.fc) {
11215 + textPath.setAttribute("fill", renderedLetter.fc);
11216 + textPath.style.color = renderedLetter.fc;
11217 + }
11218 + }
11219 + if (this.innerElem.getBBox && !this.hidden && (this._isFirstFrame || this._mdf)) {
11220 + var boundingBox = this.innerElem.getBBox();
11221 + if (this.currentBBox.w !== boundingBox.width) {
11222 + this.currentBBox.w = boundingBox.width;
11223 + this.svgElement.setAttribute("width", boundingBox.width);
11224 + }
11225 + if (this.currentBBox.h !== boundingBox.height) {
11226 + this.currentBBox.h = boundingBox.height;
11227 + this.svgElement.setAttribute("height", boundingBox.height);
11228 + }
11229 + var margin = 1;
11230 + 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) {
11231 + this.currentBBox.w = boundingBox.width + margin * 2;
11232 + this.currentBBox.h = boundingBox.height + margin * 2;
11233 + this.currentBBox.x = boundingBox.x - margin;
11234 + this.currentBBox.y = boundingBox.y - margin;
11235 + this.svgElement.setAttribute("viewBox", this.currentBBox.x + " " + this.currentBBox.y + " " + this.currentBBox.w + " " + this.currentBBox.h);
11236 + svgStyle = this.svgElement.style;
11237 + var svgTransform = "translate(" + this.currentBBox.x + "px," + this.currentBBox.y + "px)";
11238 + svgStyle.transform = svgTransform;
11239 + svgStyle.webkitTransform = svgTransform;
11240 + }
11241 + }
11242 + };
11243 + function HCameraElement(data, globalData, comp) {
11244 + this.initFrame();
11245 + this.initBaseData(data, globalData, comp);
11246 + this.initHierarchy();
11247 + var getProp = PropertyFactory.getProp;
11248 + this.pe = getProp(this, data.pe, 0, 0, this);
11249 + if (data.ks.p.s) {
11250 + this.px = getProp(this, data.ks.p.x, 1, 0, this);
11251 + this.py = getProp(this, data.ks.p.y, 1, 0, this);
11252 + this.pz = getProp(this, data.ks.p.z, 1, 0, this);
11253 + } else this.p = getProp(this, data.ks.p, 1, 0, this);
11254 + if (data.ks.a) this.a = getProp(this, data.ks.a, 1, 0, this);
11255 + if (data.ks.or.k.length && data.ks.or.k[0].to) {
11256 + var i;
11257 + var len = data.ks.or.k.length;
11258 + for (i = 0; i < len; i += 1) {
11259 + data.ks.or.k[i].to = null;
11260 + data.ks.or.k[i].ti = null;
11261 + }
11262 + }
11263 + this.or = getProp(this, data.ks.or, 1, degToRads, this);
11264 + this.or.sh = true;
11265 + this.rx = getProp(this, data.ks.rx, 0, degToRads, this);
11266 + this.ry = getProp(this, data.ks.ry, 0, degToRads, this);
11267 + this.rz = getProp(this, data.ks.rz, 0, degToRads, this);
11268 + this.mat = new Matrix();
11269 + this._prevMat = new Matrix();
11270 + this._isFirstFrame = true;
11271 + this.finalTransform = { mProp: this };
11272 + }
11273 + extendPrototype([
11274 + BaseElement,
11275 + FrameElement,
11276 + HierarchyElement
11277 + ], HCameraElement);
11278 + HCameraElement.prototype.setup = function() {
11279 + var i;
11280 + var len = this.comp.threeDElements.length;
11281 + var comp;
11282 + var perspectiveStyle;
11283 + var containerStyle;
11284 + for (i = 0; i < len; i += 1) {
11285 + comp = this.comp.threeDElements[i];
11286 + if (comp.type === "3d") {
11287 + perspectiveStyle = comp.perspectiveElem.style;
11288 + containerStyle = comp.container.style;
11289 + var perspective = this.pe.v + "px";
11290 + var origin = "0px 0px 0px";
11291 + var matrix = "matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)";
11292 + perspectiveStyle.perspective = perspective;
11293 + perspectiveStyle.webkitPerspective = perspective;
11294 + containerStyle.transformOrigin = origin;
11295 + containerStyle.mozTransformOrigin = origin;
11296 + containerStyle.webkitTransformOrigin = origin;
11297 + perspectiveStyle.transform = matrix;
11298 + perspectiveStyle.webkitTransform = matrix;
11299 + }
11300 + }
11301 + };
11302 + HCameraElement.prototype.createElements = function() {};
11303 + HCameraElement.prototype.hide = function() {};
11304 + HCameraElement.prototype.renderFrame = function() {
11305 + var _mdf = this._isFirstFrame;
11306 + var i;
11307 + var len;
11308 + if (this.hierarchy) {
11309 + len = this.hierarchy.length;
11310 + for (i = 0; i < len; i += 1) _mdf = this.hierarchy[i].finalTransform.mProp._mdf || _mdf;
11311 + }
11312 + 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) {
11313 + this.mat.reset();
11314 + if (this.hierarchy) {
11315 + len = this.hierarchy.length - 1;
11316 + for (i = len; i >= 0; i -= 1) {
11317 + var mTransf = this.hierarchy[i].finalTransform.mProp;
11318 + this.mat.translate(-mTransf.p.v[0], -mTransf.p.v[1], mTransf.p.v[2]);
11319 + this.mat.rotateX(-mTransf.or.v[0]).rotateY(-mTransf.or.v[1]).rotateZ(mTransf.or.v[2]);
11320 + this.mat.rotateX(-mTransf.rx.v).rotateY(-mTransf.ry.v).rotateZ(mTransf.rz.v);
11321 + this.mat.scale(1 / mTransf.s.v[0], 1 / mTransf.s.v[1], 1 / mTransf.s.v[2]);
11322 + this.mat.translate(mTransf.a.v[0], mTransf.a.v[1], mTransf.a.v[2]);
11323 + }
11324 + }
11325 + if (this.p) this.mat.translate(-this.p.v[0], -this.p.v[1], this.p.v[2]);
11326 + else this.mat.translate(-this.px.v, -this.py.v, this.pz.v);
11327 + if (this.a) {
11328 + var diffVector;
11329 + if (this.p) diffVector = [
11330 + this.p.v[0] - this.a.v[0],
11331 + this.p.v[1] - this.a.v[1],
11332 + this.p.v[2] - this.a.v[2]
11333 + ];
11334 + else diffVector = [
11335 + this.px.v - this.a.v[0],
11336 + this.py.v - this.a.v[1],
11337 + this.pz.v - this.a.v[2]
11338 + ];
11339 + var mag = Math.sqrt(Math.pow(diffVector[0], 2) + Math.pow(diffVector[1], 2) + Math.pow(diffVector[2], 2));
11340 + var lookDir = [
11341 + diffVector[0] / mag,
11342 + diffVector[1] / mag,
11343 + diffVector[2] / mag
11344 + ];
11345 + var lookLengthOnXZ = Math.sqrt(lookDir[2] * lookDir[2] + lookDir[0] * lookDir[0]);
11346 + var mRotationX = Math.atan2(lookDir[1], lookLengthOnXZ);
11347 + var mRotationY = Math.atan2(lookDir[0], -lookDir[2]);
11348 + this.mat.rotateY(mRotationY).rotateX(-mRotationX);
11349 + }
11350 + this.mat.rotateX(-this.rx.v).rotateY(-this.ry.v).rotateZ(this.rz.v);
11351 + this.mat.rotateX(-this.or.v[0]).rotateY(-this.or.v[1]).rotateZ(this.or.v[2]);
11352 + this.mat.translate(this.globalData.compSize.w / 2, this.globalData.compSize.h / 2, 0);
11353 + this.mat.translate(0, 0, this.pe.v);
11354 + var hasMatrixChanged = !this._prevMat.equals(this.mat);
11355 + if ((hasMatrixChanged || this.pe._mdf) && this.comp.threeDElements) {
11356 + len = this.comp.threeDElements.length;
11357 + var comp;
11358 + var perspectiveStyle;
11359 + var containerStyle;
11360 + for (i = 0; i < len; i += 1) {
11361 + comp = this.comp.threeDElements[i];
11362 + if (comp.type === "3d") {
11363 + if (hasMatrixChanged) {
11364 + var matValue = this.mat.toCSS();
11365 + containerStyle = comp.container.style;
11366 + containerStyle.transform = matValue;
11367 + containerStyle.webkitTransform = matValue;
11368 + }
11369 + if (this.pe._mdf) {
11370 + perspectiveStyle = comp.perspectiveElem.style;
11371 + perspectiveStyle.perspective = this.pe.v + "px";
11372 + perspectiveStyle.webkitPerspective = this.pe.v + "px";
11373 + }
11374 + }
11375 + }
11376 + this.mat.clone(this._prevMat);
11377 + }
11378 + }
11379 + this._isFirstFrame = false;
11380 + };
11381 + HCameraElement.prototype.prepareFrame = function(num) {
11382 + this.prepareProperties(num, true);
11383 + };
11384 + HCameraElement.prototype.destroy = function() {};
11385 + HCameraElement.prototype.getBaseElement = function() {
11386 + return null;
11387 + };
11388 + function HImageElement(data, globalData, comp) {
11389 + this.assetData = globalData.getAssetData(data.refId);
11390 + this.initElement(data, globalData, comp);
11391 + }
11392 + extendPrototype([
11393 + BaseElement,
11394 + TransformElement,
11395 + HBaseElement,
11396 + HSolidElement,
11397 + HierarchyElement,
11398 + FrameElement,
11399 + RenderableElement
11400 + ], HImageElement);
11401 + HImageElement.prototype.createContent = function() {
11402 + var assetPath = this.globalData.getAssetsPath(this.assetData);
11403 + var img = new Image();
11404 + if (this.data.hasMask) {
11405 + this.imageElem = createNS("image");
11406 + this.imageElem.setAttribute("width", this.assetData.w + "px");
11407 + this.imageElem.setAttribute("height", this.assetData.h + "px");
11408 + this.imageElem.setAttributeNS("http://www.w3.org/1999/xlink", "href", assetPath);
11409 + this.layerElement.appendChild(this.imageElem);
11410 + this.baseElement.setAttribute("width", this.assetData.w);
11411 + this.baseElement.setAttribute("height", this.assetData.h);
11412 + } else this.layerElement.appendChild(img);
11413 + img.crossOrigin = "anonymous";
11414 + img.src = assetPath;
11415 + if (this.data.ln) this.baseElement.setAttribute("id", this.data.ln);
11416 + };
11417 + function HybridRendererBase(animationItem, config) {
11418 + this.animationItem = animationItem;
11419 + this.layers = null;
11420 + this.renderedFrame = -1;
11421 + this.renderConfig = {
11422 + className: config && config.className || "",
11423 + imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || "xMidYMid slice",
11424 + hideOnTransparent: !(config && config.hideOnTransparent === false),
11425 + filterSize: {
11426 + width: config && config.filterSize && config.filterSize.width || "400%",
11427 + height: config && config.filterSize && config.filterSize.height || "400%",
11428 + x: config && config.filterSize && config.filterSize.x || "-100%",
11429 + y: config && config.filterSize && config.filterSize.y || "-100%"
11430 + }
11431 + };
11432 + this.globalData = {
11433 + _mdf: false,
11434 + frameNum: -1,
11435 + renderConfig: this.renderConfig
11436 + };
11437 + this.pendingElements = [];
11438 + this.elements = [];
11439 + this.threeDElements = [];
11440 + this.destroyed = false;
11441 + this.camera = null;
11442 + this.supports3d = true;
11443 + this.rendererType = "html";
11444 + }
11445 + extendPrototype([BaseRenderer], HybridRendererBase);
11446 + HybridRendererBase.prototype.buildItem = SVGRenderer.prototype.buildItem;
11447 + HybridRendererBase.prototype.checkPendingElements = function() {
11448 + while (this.pendingElements.length) this.pendingElements.pop().checkParenting();
11449 + };
11450 + HybridRendererBase.prototype.appendElementInPos = function(element, pos) {
11451 + var newDOMElement = element.getBaseElement();
11452 + if (!newDOMElement) return;
11453 + var layer = this.layers[pos];
11454 + if (!layer.ddd || !this.supports3d) if (this.threeDElements) this.addTo3dContainer(newDOMElement, pos);
11455 + else {
11456 + var i = 0;
11457 + var nextDOMElement;
11458 + var nextLayer;
11459 + var tmpDOMElement;
11460 + while (i < pos) {
11461 + if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement) {
11462 + nextLayer = this.elements[i];
11463 + tmpDOMElement = this.layers[i].ddd ? this.getThreeDContainerByPos(i) : nextLayer.getBaseElement();
11464 + nextDOMElement = tmpDOMElement || nextDOMElement;
11465 + }
11466 + i += 1;
11467 + }
11468 + if (nextDOMElement) {
11469 + if (!layer.ddd || !this.supports3d) this.layerElement.insertBefore(newDOMElement, nextDOMElement);
11470 + } else if (!layer.ddd || !this.supports3d) this.layerElement.appendChild(newDOMElement);
11471 + }
11472 + else this.addTo3dContainer(newDOMElement, pos);
11473 + };
11474 + HybridRendererBase.prototype.createShape = function(data) {
11475 + if (!this.supports3d) return new SVGShapeElement(data, this.globalData, this);
11476 + return new HShapeElement(data, this.globalData, this);
11477 + };
11478 + HybridRendererBase.prototype.createText = function(data) {
11479 + if (!this.supports3d) return new SVGTextLottieElement(data, this.globalData, this);
11480 + return new HTextElement(data, this.globalData, this);
11481 + };
11482 + HybridRendererBase.prototype.createCamera = function(data) {
11483 + this.camera = new HCameraElement(data, this.globalData, this);
11484 + return this.camera;
11485 + };
11486 + HybridRendererBase.prototype.createImage = function(data) {
11487 + if (!this.supports3d) return new IImageElement(data, this.globalData, this);
11488 + return new HImageElement(data, this.globalData, this);
11489 + };
11490 + HybridRendererBase.prototype.createSolid = function(data) {
11491 + if (!this.supports3d) return new ISolidElement(data, this.globalData, this);
11492 + return new HSolidElement(data, this.globalData, this);
11493 + };
11494 + HybridRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;
11495 + HybridRendererBase.prototype.getThreeDContainerByPos = function(pos) {
11496 + var i = 0;
11497 + var len = this.threeDElements.length;
11498 + while (i < len) {
11499 + if (this.threeDElements[i].startPos <= pos && this.threeDElements[i].endPos >= pos) return this.threeDElements[i].perspectiveElem;
11500 + i += 1;
11501 + }
11502 + return null;
11503 + };
11504 + HybridRendererBase.prototype.createThreeDContainer = function(pos, type) {
11505 + var perspectiveElem = createTag("div");
11506 + var style;
11507 + var containerStyle;
11508 + styleDiv(perspectiveElem);
11509 + var container = createTag("div");
11510 + styleDiv(container);
11511 + if (type === "3d") {
11512 + style = perspectiveElem.style;
11513 + style.width = this.globalData.compSize.w + "px";
11514 + style.height = this.globalData.compSize.h + "px";
11515 + var center = "50% 50%";
11516 + style.webkitTransformOrigin = center;
11517 + style.mozTransformOrigin = center;
11518 + style.transformOrigin = center;
11519 + containerStyle = container.style;
11520 + var matrix = "matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)";
11521 + containerStyle.transform = matrix;
11522 + containerStyle.webkitTransform = matrix;
11523 + }
11524 + perspectiveElem.appendChild(container);
11525 + var threeDContainerData = {
11526 + container,
11527 + perspectiveElem,
11528 + startPos: pos,
11529 + endPos: pos,
11530 + type
11531 + };
11532 + this.threeDElements.push(threeDContainerData);
11533 + return threeDContainerData;
11534 + };
11535 + HybridRendererBase.prototype.build3dContainers = function() {
11536 + var i;
11537 + var len = this.layers.length;
11538 + var lastThreeDContainerData;
11539 + var currentContainer = "";
11540 + for (i = 0; i < len; i += 1) if (this.layers[i].ddd && this.layers[i].ty !== 3) {
11541 + if (currentContainer !== "3d") {
11542 + currentContainer = "3d";
11543 + lastThreeDContainerData = this.createThreeDContainer(i, "3d");
11544 + }
11545 + lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);
11546 + } else {
11547 + if (currentContainer !== "2d") {
11548 + currentContainer = "2d";
11549 + lastThreeDContainerData = this.createThreeDContainer(i, "2d");
11550 + }
11551 + lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);
11552 + }
11553 + len = this.threeDElements.length;
11554 + for (i = len - 1; i >= 0; i -= 1) this.resizerElem.appendChild(this.threeDElements[i].perspectiveElem);
11555 + };
11556 + HybridRendererBase.prototype.addTo3dContainer = function(elem, pos) {
11557 + var i = 0;
11558 + var len = this.threeDElements.length;
11559 + while (i < len) {
11560 + if (pos <= this.threeDElements[i].endPos) {
11561 + var j = this.threeDElements[i].startPos;
11562 + var nextElement;
11563 + while (j < pos) {
11564 + if (this.elements[j] && this.elements[j].getBaseElement) nextElement = this.elements[j].getBaseElement();
11565 + j += 1;
11566 + }
11567 + if (nextElement) this.threeDElements[i].container.insertBefore(elem, nextElement);
11568 + else this.threeDElements[i].container.appendChild(elem);
11569 + break;
11570 + }
11571 + i += 1;
11572 + }
11573 + };
11574 + HybridRendererBase.prototype.configAnimation = function(animData) {
11575 + var resizerElem = createTag("div");
11576 + var wrapper = this.animationItem.wrapper;
11577 + var style = resizerElem.style;
11578 + style.width = animData.w + "px";
11579 + style.height = animData.h + "px";
11580 + this.resizerElem = resizerElem;
11581 + styleDiv(resizerElem);
11582 + style.transformStyle = "flat";
11583 + style.mozTransformStyle = "flat";
11584 + style.webkitTransformStyle = "flat";
11585 + if (this.renderConfig.className) resizerElem.setAttribute("class", this.renderConfig.className);
11586 + wrapper.appendChild(resizerElem);
11587 + style.overflow = "hidden";
11588 + var svg = createNS("svg");
11589 + svg.setAttribute("width", "1");
11590 + svg.setAttribute("height", "1");
11591 + styleDiv(svg);
11592 + this.resizerElem.appendChild(svg);
11593 + var defs = createNS("defs");
11594 + svg.appendChild(defs);
11595 + this.data = animData;
11596 + this.setupGlobalData(animData, svg);
11597 + this.globalData.defs = defs;
11598 + this.layers = animData.layers;
11599 + this.layerElement = this.resizerElem;
11600 + this.build3dContainers();
11601 + this.updateContainerSize();
11602 + };
11603 + HybridRendererBase.prototype.destroy = function() {
11604 + if (this.animationItem.wrapper) this.animationItem.wrapper.innerText = "";
11605 + this.animationItem.container = null;
11606 + this.globalData.defs = null;
11607 + var i;
11608 + var len = this.layers ? this.layers.length : 0;
11609 + for (i = 0; i < len; i += 1) if (this.elements[i] && this.elements[i].destroy) this.elements[i].destroy();
11610 + this.elements.length = 0;
11611 + this.destroyed = true;
11612 + this.animationItem = null;
11613 + };
11614 + HybridRendererBase.prototype.updateContainerSize = function() {
11615 + var elementWidth = this.animationItem.wrapper.offsetWidth;
11616 + var elementHeight = this.animationItem.wrapper.offsetHeight;
11617 + var elementRel = elementWidth / elementHeight;
11618 + var animationRel = this.globalData.compSize.w / this.globalData.compSize.h;
11619 + var sx;
11620 + var sy;
11621 + var tx;
11622 + var ty;
11623 + if (animationRel > elementRel) {
11624 + sx = elementWidth / this.globalData.compSize.w;
11625 + sy = elementWidth / this.globalData.compSize.w;
11626 + tx = 0;
11627 + ty = (elementHeight - this.globalData.compSize.h * (elementWidth / this.globalData.compSize.w)) / 2;
11628 + } else {
11629 + sx = elementHeight / this.globalData.compSize.h;
11630 + sy = elementHeight / this.globalData.compSize.h;
11631 + tx = (elementWidth - this.globalData.compSize.w * (elementHeight / this.globalData.compSize.h)) / 2;
11632 + ty = 0;
11633 + }
11634 + var style = this.resizerElem.style;
11635 + style.webkitTransform = "matrix3d(" + sx + ",0,0,0,0," + sy + ",0,0,0,0,1,0," + tx + "," + ty + ",0,1)";
11636 + style.transform = style.webkitTransform;
11637 + };
11638 + HybridRendererBase.prototype.renderFrame = SVGRenderer.prototype.renderFrame;
11639 + HybridRendererBase.prototype.hide = function() {
11640 + this.resizerElem.style.display = "none";
11641 + };
11642 + HybridRendererBase.prototype.show = function() {
11643 + this.resizerElem.style.display = "block";
11644 + };
11645 + HybridRendererBase.prototype.initItems = function() {
11646 + this.buildAllItems();
11647 + if (this.camera) this.camera.setup();
11648 + else {
11649 + var cWidth = this.globalData.compSize.w;
11650 + var cHeight = this.globalData.compSize.h;
11651 + var i;
11652 + var len = this.threeDElements.length;
11653 + for (i = 0; i < len; i += 1) {
11654 + var style = this.threeDElements[i].perspectiveElem.style;
11655 + style.webkitPerspective = Math.sqrt(Math.pow(cWidth, 2) + Math.pow(cHeight, 2)) + "px";
11656 + style.perspective = style.webkitPerspective;
11657 + }
11658 + }
11659 + };
11660 + HybridRendererBase.prototype.searchExtraCompositions = function(assets) {
11661 + var i;
11662 + var len = assets.length;
11663 + var floatingContainer = createTag("div");
11664 + for (i = 0; i < len; i += 1) if (assets[i].xt) {
11665 + var comp = this.createComp(assets[i], floatingContainer, this.globalData.comp, null);
11666 + comp.initExpressions();
11667 + this.globalData.projectInterface.registerComposition(comp);
11668 + }
11669 + };
11670 + function HCompElement(data, globalData, comp) {
11671 + this.layers = data.layers;
11672 + this.supports3d = !data.hasMask;
11673 + this.completeLayers = false;
11674 + this.pendingElements = [];
11675 + this.elements = this.layers ? createSizedArray(this.layers.length) : [];
11676 + this.initElement(data, globalData, comp);
11677 + this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : { _placeholder: true };
11678 + }
11679 + extendPrototype([
11680 + HybridRendererBase,
11681 + ICompElement,
11682 + HBaseElement
11683 + ], HCompElement);
11684 + HCompElement.prototype._createBaseContainerElements = HCompElement.prototype.createContainerElements;
11685 + HCompElement.prototype.createContainerElements = function() {
11686 + this._createBaseContainerElements();
11687 + if (this.data.hasMask) {
11688 + this.svgElement.setAttribute("width", this.data.w);
11689 + this.svgElement.setAttribute("height", this.data.h);
11690 + this.transformedElement = this.baseElement;
11691 + } else this.transformedElement = this.layerElement;
11692 + };
11693 + HCompElement.prototype.addTo3dContainer = function(elem, pos) {
11694 + var j = 0;
11695 + var nextElement;
11696 + while (j < pos) {
11697 + if (this.elements[j] && this.elements[j].getBaseElement) nextElement = this.elements[j].getBaseElement();
11698 + j += 1;
11699 + }
11700 + if (nextElement) this.layerElement.insertBefore(elem, nextElement);
11701 + else this.layerElement.appendChild(elem);
11702 + };
11703 + HCompElement.prototype.createComp = function(data) {
11704 + if (!this.supports3d) return new SVGCompElement(data, this.globalData, this);
11705 + return new HCompElement(data, this.globalData, this);
11706 + };
11707 + function HybridRenderer(animationItem, config) {
11708 + this.animationItem = animationItem;
11709 + this.layers = null;
11710 + this.renderedFrame = -1;
11711 + this.renderConfig = {
11712 + className: config && config.className || "",
11713 + imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || "xMidYMid slice",
11714 + hideOnTransparent: !(config && config.hideOnTransparent === false),
11715 + filterSize: {
11716 + width: config && config.filterSize && config.filterSize.width || "400%",
11717 + height: config && config.filterSize && config.filterSize.height || "400%",
11718 + x: config && config.filterSize && config.filterSize.x || "-100%",
11719 + y: config && config.filterSize && config.filterSize.y || "-100%"
11720 + },
11721 + runExpressions: !config || config.runExpressions === void 0 || config.runExpressions
11722 + };
11723 + this.globalData = {
11724 + _mdf: false,
11725 + frameNum: -1,
11726 + renderConfig: this.renderConfig
11727 + };
11728 + this.pendingElements = [];
11729 + this.elements = [];
11730 + this.threeDElements = [];
11731 + this.destroyed = false;
11732 + this.camera = null;
11733 + this.supports3d = true;
11734 + this.rendererType = "html";
11735 + }
11736 + extendPrototype([HybridRendererBase], HybridRenderer);
11737 + HybridRenderer.prototype.createComp = function(data) {
11738 + if (!this.supports3d) return new SVGCompElement(data, this.globalData, this);
11739 + return new HCompElement(data, this.globalData, this);
11740 + };
11741 + var CompExpressionInterface = function() {
11742 + return function(comp) {
11743 + function _thisLayerFunction(name) {
11744 + var i = 0;
11745 + var len = comp.layers.length;
11746 + while (i < len) {
11747 + if (comp.layers[i].nm === name || comp.layers[i].ind === name) return comp.elements[i].layerInterface;
11748 + i += 1;
11749 + }
11750 + return null;
11751 + }
11752 + Object.defineProperty(_thisLayerFunction, "_name", { value: comp.data.nm });
11753 + _thisLayerFunction.layer = _thisLayerFunction;
11754 + _thisLayerFunction.pixelAspect = 1;
11755 + _thisLayerFunction.height = comp.data.h || comp.globalData.compSize.h;
11756 + _thisLayerFunction.width = comp.data.w || comp.globalData.compSize.w;
11757 + _thisLayerFunction.pixelAspect = 1;
11758 + _thisLayerFunction.frameDuration = 1 / comp.globalData.frameRate;
11759 + _thisLayerFunction.displayStartTime = 0;
11760 + _thisLayerFunction.numLayers = comp.layers.length;
11761 + return _thisLayerFunction;
11762 + };
11763 + }();
11764 + function _typeof$2(o) {
11765 + "@babel/helpers - typeof";
11766 + return _typeof$2 = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
11767 + return typeof o;
11768 + } : function(o) {
11769 + return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
11770 + }, _typeof$2(o);
11771 + }
11772 + function seedRandom(pool, math) {
11773 + var global = this;
11774 + var width = 256;
11775 + var chunks = 6;
11776 + var digits = 52;
11777 + var rngname = "random";
11778 + var startdenom = math.pow(width, chunks);
11779 + var significance = math.pow(2, digits);
11780 + var overflow = significance * 2;
11781 + var mask = width - 1;
11782 + var nodecrypto;
11783 + function seedrandom(seed, options, callback) {
11784 + var key = [];
11785 + options = options === true ? { entropy: true } : options || {};
11786 + var shortseed = mixkey(flatten(options.entropy ? [seed, tostring(pool)] : seed === null ? autoseed() : seed, 3), key);
11787 + var arc4 = new ARC4(key);
11788 + var prng = function prng() {
11789 + var n = arc4.g(chunks);
11790 + var d = startdenom;
11791 + var x = 0;
11792 + while (n < significance) {
11793 + n = (n + x) * width;
11794 + d *= width;
11795 + x = arc4.g(1);
11796 + }
11797 + while (n >= overflow) {
11798 + n /= 2;
11799 + d /= 2;
11800 + x >>>= 1;
11801 + }
11802 + return (n + x) / d;
11803 + };
11804 + prng.int32 = function() {
11805 + return arc4.g(4) | 0;
11806 + };
11807 + prng.quick = function() {
11808 + return arc4.g(4) / 4294967296;
11809 + };
11810 + prng["double"] = prng;
11811 + mixkey(tostring(arc4.S), pool);
11812 + return (options.pass || callback || function(prng, seed, is_math_call, state) {
11813 + if (state) {
11814 + if (state.S) copy(state, arc4);
11815 + prng.state = function() {
11816 + return copy(arc4, {});
11817 + };
11818 + }
11819 + if (is_math_call) {
11820 + math[rngname] = prng;
11821 + return seed;
11822 + } else return prng;
11823 + })(prng, shortseed, "global" in options ? options.global : this == math, options.state);
11824 + }
11825 + math["seed" + rngname] = seedrandom;
11826 + function ARC4(key) {
11827 + var t;
11828 + var keylen = key.length;
11829 + var me = this;
11830 + var i = 0;
11831 + var j = me.i = me.j = 0;
11832 + var s = me.S = [];
11833 + if (!keylen) key = [keylen++];
11834 + while (i < width) s[i] = i++;
11835 + for (i = 0; i < width; i++) {
11836 + s[i] = s[j = mask & j + key[i % keylen] + (t = s[i])];
11837 + s[j] = t;
11838 + }
11839 + me.g = function(count) {
11840 + var t;
11841 + var r = 0;
11842 + var i = me.i;
11843 + var j = me.j;
11844 + var s = me.S;
11845 + while (count--) {
11846 + t = s[i = mask & i + 1];
11847 + r = r * width + s[mask & (s[i] = s[j = mask & j + t]) + (s[j] = t)];
11848 + }
11849 + me.i = i;
11850 + me.j = j;
11851 + return r;
11852 + };
11853 + }
11854 + function copy(f, t) {
11855 + t.i = f.i;
11856 + t.j = f.j;
11857 + t.S = f.S.slice();
11858 + return t;
11859 + }
11860 + function flatten(obj, depth) {
11861 + var result = [];
11862 + var typ = _typeof$2(obj);
11863 + var prop;
11864 + if (depth && typ == "object") for (prop in obj) try {
11865 + result.push(flatten(obj[prop], depth - 1));
11866 + } catch (e) {}
11867 + return result.length ? result : typ == "string" ? obj : obj + "\0";
11868 + }
11869 + function mixkey(seed, key) {
11870 + var stringseed = seed + "";
11871 + var smear;
11872 + var j = 0;
11873 + while (j < stringseed.length) key[mask & j] = mask & (smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++);
11874 + return tostring(key);
11875 + }
11876 + function autoseed() {
11877 + try {
11878 + if (nodecrypto) return tostring(nodecrypto.randomBytes(width));
11879 + var out = new Uint8Array(width);
11880 + (global.crypto || global.msCrypto).getRandomValues(out);
11881 + return tostring(out);
11882 + } catch (e) {
11883 + var browser = global.navigator;
11884 + var plugins = browser && browser.plugins;
11885 + return [
11886 + +/* @__PURE__ */ new Date(),
11887 + global,
11888 + plugins,
11889 + global.screen,
11890 + tostring(pool)
11891 + ];
11892 + }
11893 + }
11894 + function tostring(a) {
11895 + return String.fromCharCode.apply(0, a);
11896 + }
11897 + mixkey(math.random(), pool);
11898 + }
11899 + function initialize$2(BMMath) {
11900 + seedRandom([], BMMath);
11901 + }
11902 + var propTypes = { SHAPE: "shape" };
11903 + function _typeof$1(o) {
11904 + "@babel/helpers - typeof";
11905 + return _typeof$1 = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
11906 + return typeof o;
11907 + } : function(o) {
11908 + return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
11909 + }, _typeof$1(o);
11910 + }
11911 + var ExpressionManager = function() {
11912 + "use strict";
11913 + var ob = {};
11914 + var Math = BMMath;
11915 + var window = null;
11916 + var document = null;
11917 + var XMLHttpRequest = null;
11918 + var fetch = null;
11919 + var frames = null;
11920 + var _lottieGlobal = {};
11921 + initialize$2(BMMath);
11922 + function resetFrame() {
11923 + _lottieGlobal = {};
11924 + }
11925 + function $bm_isInstanceOfArray(arr) {
11926 + return arr.constructor === Array || arr.constructor === Float32Array;
11927 + }
11928 + function isNumerable(tOfV, v) {
11929 + return tOfV === "number" || v instanceof Number || tOfV === "boolean" || tOfV === "string";
11930 + }
11931 + function $bm_neg(a) {
11932 + var tOfA = _typeof$1(a);
11933 + if (tOfA === "number" || a instanceof Number || tOfA === "boolean") return -a;
11934 + if ($bm_isInstanceOfArray(a)) {
11935 + var i;
11936 + var lenA = a.length;
11937 + var retArr = [];
11938 + for (i = 0; i < lenA; i += 1) retArr[i] = -a[i];
11939 + return retArr;
11940 + }
11941 + if (a.propType) return a.v;
11942 + return -a;
11943 + }
11944 + var easeInBez = BezierFactory.getBezierEasing(.333, 0, .833, .833, "easeIn").get;
11945 + var easeOutBez = BezierFactory.getBezierEasing(.167, .167, .667, 1, "easeOut").get;
11946 + var easeInOutBez = BezierFactory.getBezierEasing(.33, 0, .667, 1, "easeInOut").get;
11947 + function sum(a, b) {
11948 + var tOfA = _typeof$1(a);
11949 + var tOfB = _typeof$1(b);
11950 + if (isNumerable(tOfA, a) && isNumerable(tOfB, b) || tOfA === "string" || tOfB === "string") return a + b;
11951 + if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {
11952 + a = a.slice(0);
11953 + a[0] += b;
11954 + return a;
11955 + }
11956 + if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {
11957 + b = b.slice(0);
11958 + b[0] = a + b[0];
11959 + return b;
11960 + }
11961 + if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {
11962 + var i = 0;
11963 + var lenA = a.length;
11964 + var lenB = b.length;
11965 + var retArr = [];
11966 + while (i < lenA || i < lenB) {
11967 + if ((typeof a[i] === "number" || a[i] instanceof Number) && (typeof b[i] === "number" || b[i] instanceof Number)) retArr[i] = a[i] + b[i];
11968 + else retArr[i] = b[i] === void 0 ? a[i] : a[i] || b[i];
11969 + i += 1;
11970 + }
11971 + return retArr;
11972 + }
11973 + return 0;
11974 + }
11975 + var add = sum;
11976 + function sub(a, b) {
11977 + var tOfA = _typeof$1(a);
11978 + var tOfB = _typeof$1(b);
11979 + if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {
11980 + if (tOfA === "string") a = parseInt(a, 10);
11981 + if (tOfB === "string") b = parseInt(b, 10);
11982 + return a - b;
11983 + }
11984 + if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {
11985 + a = a.slice(0);
11986 + a[0] -= b;
11987 + return a;
11988 + }
11989 + if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {
11990 + b = b.slice(0);
11991 + b[0] = a - b[0];
11992 + return b;
11993 + }
11994 + if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {
11995 + var i = 0;
11996 + var lenA = a.length;
11997 + var lenB = b.length;
11998 + var retArr = [];
11999 + while (i < lenA || i < lenB) {
12000 + if ((typeof a[i] === "number" || a[i] instanceof Number) && (typeof b[i] === "number" || b[i] instanceof Number)) retArr[i] = a[i] - b[i];
12001 + else retArr[i] = b[i] === void 0 ? a[i] : a[i] || b[i];
12002 + i += 1;
12003 + }
12004 + return retArr;
12005 + }
12006 + return 0;
12007 + }
12008 + function mul(a, b) {
12009 + var tOfA = _typeof$1(a);
12010 + var tOfB = _typeof$1(b);
12011 + var arr;
12012 + if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) return a * b;
12013 + var i;
12014 + var len;
12015 + if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {
12016 + len = a.length;
12017 + arr = createTypedArray("float32", len);
12018 + for (i = 0; i < len; i += 1) arr[i] = a[i] * b;
12019 + return arr;
12020 + }
12021 + if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {
12022 + len = b.length;
12023 + arr = createTypedArray("float32", len);
12024 + for (i = 0; i < len; i += 1) arr[i] = a * b[i];
12025 + return arr;
12026 + }
12027 + return 0;
12028 + }
12029 + function div(a, b) {
12030 + var tOfA = _typeof$1(a);
12031 + var tOfB = _typeof$1(b);
12032 + var arr;
12033 + if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) return a / b;
12034 + var i;
12035 + var len;
12036 + if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {
12037 + len = a.length;
12038 + arr = createTypedArray("float32", len);
12039 + for (i = 0; i < len; i += 1) arr[i] = a[i] / b;
12040 + return arr;
12041 + }
12042 + if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {
12043 + len = b.length;
12044 + arr = createTypedArray("float32", len);
12045 + for (i = 0; i < len; i += 1) arr[i] = a / b[i];
12046 + return arr;
12047 + }
12048 + return 0;
12049 + }
12050 + function mod(a, b) {
12051 + if (typeof a === "string") a = parseInt(a, 10);
12052 + if (typeof b === "string") b = parseInt(b, 10);
12053 + return a % b;
12054 + }
12055 + var $bm_sum = sum;
12056 + var $bm_sub = sub;
12057 + var $bm_mul = mul;
12058 + var $bm_div = div;
12059 + var $bm_mod = mod;
12060 + function clamp(num, min, max) {
12061 + if (min > max) {
12062 + var mm = max;
12063 + max = min;
12064 + min = mm;
12065 + }
12066 + return Math.min(Math.max(num, min), max);
12067 + }
12068 + function radiansToDegrees(val) {
12069 + return val / degToRads;
12070 + }
12071 + var radians_to_degrees = radiansToDegrees;
12072 + function degreesToRadians(val) {
12073 + return val * degToRads;
12074 + }
12075 + var degrees_to_radians = radiansToDegrees;
12076 + var helperLengthArray = [
12077 + 0,
12078 + 0,
12079 + 0,
12080 + 0,
12081 + 0,
12082 + 0
12083 + ];
12084 + function length(arr1, arr2) {
12085 + if (typeof arr1 === "number" || arr1 instanceof Number) {
12086 + arr2 = arr2 || 0;
12087 + return Math.abs(arr1 - arr2);
12088 + }
12089 + if (!arr2) arr2 = helperLengthArray;
12090 + var i;
12091 + var len = Math.min(arr1.length, arr2.length);
12092 + var addedLength = 0;
12093 + for (i = 0; i < len; i += 1) addedLength += Math.pow(arr2[i] - arr1[i], 2);
12094 + return Math.sqrt(addedLength);
12095 + }
12096 + function normalize(vec) {
12097 + return div(vec, length(vec));
12098 + }
12099 + function rgbToHsl(val) {
12100 + var r = val[0];
12101 + var g = val[1];
12102 + var b = val[2];
12103 + var max = Math.max(r, g, b);
12104 + var min = Math.min(r, g, b);
12105 + var h;
12106 + var s;
12107 + var l = (max + min) / 2;
12108 + if (max === min) {
12109 + h = 0;
12110 + s = 0;
12111 + } else {
12112 + var d = max - min;
12113 + s = l > .5 ? d / (2 - max - min) : d / (max + min);
12114 + switch (max) {
12115 + case r:
12116 + h = (g - b) / d + (g < b ? 6 : 0);
12117 + break;
12118 + case g:
12119 + h = (b - r) / d + 2;
12120 + break;
12121 + case b:
12122 + h = (r - g) / d + 4;
12123 + break;
12124 + default: break;
12125 + }
12126 + h /= 6;
12127 + }
12128 + return [
12129 + h,
12130 + s,
12131 + l,
12132 + val[3]
12133 + ];
12134 + }
12135 + function hue2rgb(p, q, t) {
12136 + if (t < 0) t += 1;
12137 + if (t > 1) t -= 1;
12138 + if (t < 1 / 6) return p + (q - p) * 6 * t;
12139 + if (t < 1 / 2) return q;
12140 + if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;
12141 + return p;
12142 + }
12143 + function hslToRgb(val) {
12144 + var h = val[0];
12145 + var s = val[1];
12146 + var l = val[2];
12147 + var r;
12148 + var g;
12149 + var b;
12150 + if (s === 0) {
12151 + r = l;
12152 + b = l;
12153 + g = l;
12154 + } else {
12155 + var q = l < .5 ? l * (1 + s) : l + s - l * s;
12156 + var p = 2 * l - q;
12157 + r = hue2rgb(p, q, h + 1 / 3);
12158 + g = hue2rgb(p, q, h);
12159 + b = hue2rgb(p, q, h - 1 / 3);
12160 + }
12161 + return [
12162 + r,
12163 + g,
12164 + b,
12165 + val[3]
12166 + ];
12167 + }
12168 + function linear(t, tMin, tMax, value1, value2) {
12169 + if (value1 === void 0 || value2 === void 0) {
12170 + value1 = tMin;
12171 + value2 = tMax;
12172 + tMin = 0;
12173 + tMax = 1;
12174 + }
12175 + if (tMax < tMin) {
12176 + var _tMin = tMax;
12177 + tMax = tMin;
12178 + tMin = _tMin;
12179 + }
12180 + if (t <= tMin) return value1;
12181 + if (t >= tMax) return value2;
12182 + var perc = tMax === tMin ? 0 : (t - tMin) / (tMax - tMin);
12183 + if (!value1.length) return value1 + (value2 - value1) * perc;
12184 + var i;
12185 + var len = value1.length;
12186 + var arr = createTypedArray("float32", len);
12187 + for (i = 0; i < len; i += 1) arr[i] = value1[i] + (value2[i] - value1[i]) * perc;
12188 + return arr;
12189 + }
12190 + function random(min, max) {
12191 + if (max === void 0) if (min === void 0) {
12192 + min = 0;
12193 + max = 1;
12194 + } else {
12195 + max = min;
12196 + min = void 0;
12197 + }
12198 + if (max.length) {
12199 + var i;
12200 + var len = max.length;
12201 + if (!min) min = createTypedArray("float32", len);
12202 + var arr = createTypedArray("float32", len);
12203 + var rnd = BMMath.random();
12204 + for (i = 0; i < len; i += 1) arr[i] = min[i] + rnd * (max[i] - min[i]);
12205 + return arr;
12206 + }
12207 + if (min === void 0) min = 0;
12208 + var rndm = BMMath.random();
12209 + return min + rndm * (max - min);
12210 + }
12211 + function createPath(points, inTangents, outTangents, closed) {
12212 + var i;
12213 + var len = points.length;
12214 + var path = shapePool.newElement();
12215 + path.setPathData(!!closed, len);
12216 + var arrPlaceholder = [0, 0];
12217 + var inVertexPoint;
12218 + var outVertexPoint;
12219 + for (i = 0; i < len; i += 1) {
12220 + inVertexPoint = inTangents && inTangents[i] ? inTangents[i] : arrPlaceholder;
12221 + outVertexPoint = outTangents && outTangents[i] ? outTangents[i] : arrPlaceholder;
12222 + 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);
12223 + }
12224 + return path;
12225 + }
12226 + function initiateExpression(elem, data, property) {
12227 + function noOp(_value) {
12228 + return _value;
12229 + }
12230 + if (!elem.globalData.renderConfig.runExpressions) return noOp;
12231 + var val = data.x;
12232 + var needsVelocity = /velocity(?![\w\d])/.test(val);
12233 + var _needsRandom = val.indexOf("random") !== -1;
12234 + var elemType = elem.data.ty;
12235 + var transform;
12236 + var $bm_transform;
12237 + var content;
12238 + var effect;
12239 + var thisProperty = property;
12240 + thisProperty._name = elem.data.nm;
12241 + thisProperty.valueAtTime = thisProperty.getValueAtTime;
12242 + Object.defineProperty(thisProperty, "value", { get: function get() {
12243 + return thisProperty.v;
12244 + } });
12245 + elem.comp.frameDuration = 1 / elem.comp.globalData.frameRate;
12246 + elem.comp.displayStartTime = 0;
12247 + var inPoint = elem.data.ip / elem.comp.globalData.frameRate;
12248 + var outPoint = elem.data.op / elem.comp.globalData.frameRate;
12249 + var width = elem.data.sw ? elem.data.sw : 0;
12250 + var height = elem.data.sh ? elem.data.sh : 0;
12251 + var name = elem.data.nm;
12252 + var loopIn;
12253 + var loop_in;
12254 + var loopOut;
12255 + var loop_out;
12256 + var smooth;
12257 + var toWorld;
12258 + var fromWorld;
12259 + var fromComp;
12260 + var toComp;
12261 + var fromCompToSurface;
12262 + var position;
12263 + var rotation;
12264 + var anchorPoint;
12265 + var scale;
12266 + var thisLayer;
12267 + var thisComp;
12268 + var mask;
12269 + var valueAtTime;
12270 + var velocityAtTime;
12271 + var scoped_bm_rt;
12272 + var expression_function = eval("[function _expression_function(){" + val + ";scoped_bm_rt=$bm_rt}]")[0];
12273 + var numKeys = property.kf ? data.k.length : 0;
12274 + var active = !this.data || this.data.hd !== true;
12275 + var wiggle = function wiggle(freq, amp) {
12276 + var iWiggle;
12277 + var j;
12278 + var lenWiggle = this.pv.length ? this.pv.length : 1;
12279 + var addedAmps = createTypedArray("float32", lenWiggle);
12280 + freq = 5;
12281 + var iterations = Math.floor(time * freq);
12282 + iWiggle = 0;
12283 + j = 0;
12284 + while (iWiggle < iterations) {
12285 + for (j = 0; j < lenWiggle; j += 1) addedAmps[j] += -amp + amp * 2 * BMMath.random();
12286 + iWiggle += 1;
12287 + }
12288 + var periods = time * freq;
12289 + var perc = periods - Math.floor(periods);
12290 + var arr = createTypedArray("float32", lenWiggle);
12291 + if (lenWiggle > 1) {
12292 + for (j = 0; j < lenWiggle; j += 1) arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp * 2 * BMMath.random()) * perc;
12293 + return arr;
12294 + }
12295 + return this.pv + addedAmps[0] + (-amp + amp * 2 * BMMath.random()) * perc;
12296 + }.bind(this);
12297 + if (thisProperty.loopIn) {
12298 + loopIn = thisProperty.loopIn.bind(thisProperty);
12299 + loop_in = loopIn;
12300 + }
12301 + if (thisProperty.loopOut) {
12302 + loopOut = thisProperty.loopOut.bind(thisProperty);
12303 + loop_out = loopOut;
12304 + }
12305 + if (thisProperty.smooth) smooth = thisProperty.smooth.bind(thisProperty);
12306 + function loopInDuration(type, duration) {
12307 + return loopIn(type, duration, true);
12308 + }
12309 + function loopOutDuration(type, duration) {
12310 + return loopOut(type, duration, true);
12311 + }
12312 + if (this.getValueAtTime) valueAtTime = this.getValueAtTime.bind(this);
12313 + if (this.getVelocityAtTime) velocityAtTime = this.getVelocityAtTime.bind(this);
12314 + var comp = elem.comp.globalData.projectInterface.bind(elem.comp.globalData.projectInterface);
12315 + function lookAt(elem1, elem2) {
12316 + var fVec = [
12317 + elem2[0] - elem1[0],
12318 + elem2[1] - elem1[1],
12319 + elem2[2] - elem1[2]
12320 + ];
12321 + var pitch = Math.atan2(fVec[0], Math.sqrt(fVec[1] * fVec[1] + fVec[2] * fVec[2])) / degToRads;
12322 + return [
12323 + -Math.atan2(fVec[1], fVec[2]) / degToRads,
12324 + pitch,
12325 + 0
12326 + ];
12327 + }
12328 + function easeOut(t, tMin, tMax, val1, val2) {
12329 + return applyEase(easeOutBez, t, tMin, tMax, val1, val2);
12330 + }
12331 + function easeIn(t, tMin, tMax, val1, val2) {
12332 + return applyEase(easeInBez, t, tMin, tMax, val1, val2);
12333 + }
12334 + function ease(t, tMin, tMax, val1, val2) {
12335 + return applyEase(easeInOutBez, t, tMin, tMax, val1, val2);
12336 + }
12337 + function applyEase(fn, t, tMin, tMax, val1, val2) {
12338 + if (val1 === void 0) {
12339 + val1 = tMin;
12340 + val2 = tMax;
12341 + } else t = (t - tMin) / (tMax - tMin);
12342 + if (t > 1) t = 1;
12343 + else if (t < 0) t = 0;
12344 + var mult = fn(t);
12345 + if ($bm_isInstanceOfArray(val1)) {
12346 + var iKey;
12347 + var lenKey = val1.length;
12348 + var arr = createTypedArray("float32", lenKey);
12349 + for (iKey = 0; iKey < lenKey; iKey += 1) arr[iKey] = (val2[iKey] - val1[iKey]) * mult + val1[iKey];
12350 + return arr;
12351 + }
12352 + return (val2 - val1) * mult + val1;
12353 + }
12354 + function nearestKey(time) {
12355 + var iKey;
12356 + var lenKey = data.k.length;
12357 + var index;
12358 + var keyTime;
12359 + if (!data.k.length || typeof data.k[0] === "number") {
12360 + index = 0;
12361 + keyTime = 0;
12362 + } else {
12363 + index = -1;
12364 + time *= elem.comp.globalData.frameRate;
12365 + if (time < data.k[0].t) {
12366 + index = 1;
12367 + keyTime = data.k[0].t;
12368 + } else {
12369 + for (iKey = 0; iKey < lenKey - 1; iKey += 1) if (time === data.k[iKey].t) {
12370 + index = iKey + 1;
12371 + keyTime = data.k[iKey].t;
12372 + break;
12373 + } else if (time > data.k[iKey].t && time < data.k[iKey + 1].t) {
12374 + if (time - data.k[iKey].t > data.k[iKey + 1].t - time) {
12375 + index = iKey + 2;
12376 + keyTime = data.k[iKey + 1].t;
12377 + } else {
12378 + index = iKey + 1;
12379 + keyTime = data.k[iKey].t;
12380 + }
12381 + break;
12382 + }
12383 + if (index === -1) {
12384 + index = iKey + 1;
12385 + keyTime = data.k[iKey].t;
12386 + }
12387 + }
12388 + }
12389 + var obKey = {};
12390 + obKey.index = index;
12391 + obKey.time = keyTime / elem.comp.globalData.frameRate;
12392 + return obKey;
12393 + }
12394 + function key(ind) {
12395 + var obKey;
12396 + var iKey;
12397 + var lenKey;
12398 + if (!data.k.length || typeof data.k[0] === "number") throw new Error("The property has no keyframe at index " + ind);
12399 + ind -= 1;
12400 + obKey = {
12401 + time: data.k[ind].t / elem.comp.globalData.frameRate,
12402 + value: []
12403 + };
12404 + var arr = Object.prototype.hasOwnProperty.call(data.k[ind], "s") ? data.k[ind].s : data.k[ind - 1].e;
12405 + lenKey = arr.length;
12406 + for (iKey = 0; iKey < lenKey; iKey += 1) {
12407 + obKey[iKey] = arr[iKey];
12408 + obKey.value[iKey] = arr[iKey];
12409 + }
12410 + return obKey;
12411 + }
12412 + function framesToTime(fr, fps) {
12413 + if (!fps) fps = elem.comp.globalData.frameRate;
12414 + return fr / fps;
12415 + }
12416 + function timeToFrames(t, fps) {
12417 + if (!t && t !== 0) t = time;
12418 + if (!fps) fps = elem.comp.globalData.frameRate;
12419 + return t * fps;
12420 + }
12421 + function seedRandom(seed) {
12422 + BMMath.seedrandom(randSeed + seed);
12423 + }
12424 + function sourceRectAtTime() {
12425 + return elem.sourceRectAtTime();
12426 + }
12427 + function substring(init, end) {
12428 + if (typeof value === "string") {
12429 + if (end === void 0) return value.substring(init);
12430 + return value.substring(init, end);
12431 + }
12432 + return "";
12433 + }
12434 + function substr(init, end) {
12435 + if (typeof value === "string") {
12436 + if (end === void 0) return value.substr(init);
12437 + return value.substr(init, end);
12438 + }
12439 + return "";
12440 + }
12441 + function posterizeTime(framesPerSecond) {
12442 + time = framesPerSecond === 0 ? 0 : Math.floor(time * framesPerSecond) / framesPerSecond;
12443 + value = valueAtTime(time);
12444 + }
12445 + var time;
12446 + var velocity;
12447 + var value;
12448 + var text;
12449 + var textIndex;
12450 + var textTotal;
12451 + var selectorValue;
12452 + var index = elem.data.ind;
12453 + var hasParent = !!(elem.hierarchy && elem.hierarchy.length);
12454 + var parent;
12455 + var randSeed = Math.floor(Math.random() * 1e6);
12456 + var globalData = elem.globalData;
12457 + function executeExpression(_value) {
12458 + value = _value;
12459 + if (this.frameExpressionId === elem.globalData.frameId && this.propType !== "textSelector") return value;
12460 + if (this.propType === "textSelector") {
12461 + textIndex = this.textIndex;
12462 + textTotal = this.textTotal;
12463 + selectorValue = this.selectorValue;
12464 + }
12465 + if (!thisLayer) {
12466 + text = elem.layerInterface.text;
12467 + thisLayer = elem.layerInterface;
12468 + thisComp = elem.comp.compInterface;
12469 + toWorld = thisLayer.toWorld.bind(thisLayer);
12470 + fromWorld = thisLayer.fromWorld.bind(thisLayer);
12471 + fromComp = thisLayer.fromComp.bind(thisLayer);
12472 + toComp = thisLayer.toComp.bind(thisLayer);
12473 + mask = thisLayer.mask ? thisLayer.mask.bind(thisLayer) : null;
12474 + fromCompToSurface = fromComp;
12475 + }
12476 + if (!transform) {
12477 + transform = elem.layerInterface("ADBE Transform Group");
12478 + $bm_transform = transform;
12479 + if (transform) anchorPoint = transform.anchorPoint;
12480 + }
12481 + if (elemType === 4 && !content) content = thisLayer("ADBE Root Vectors Group");
12482 + if (!effect) effect = thisLayer(4);
12483 + hasParent = !!(elem.hierarchy && elem.hierarchy.length);
12484 + if (hasParent && !parent) parent = elem.hierarchy[0].layerInterface;
12485 + time = this.comp.renderedFrame / this.comp.globalData.frameRate;
12486 + if (_needsRandom) seedRandom(randSeed + time);
12487 + if (needsVelocity) velocity = velocityAtTime(time);
12488 + expression_function();
12489 + this.frameExpressionId = elem.globalData.frameId;
12490 + scoped_bm_rt = scoped_bm_rt.propType === propTypes.SHAPE ? scoped_bm_rt.v : scoped_bm_rt;
12491 + return scoped_bm_rt;
12492 + }
12493 + executeExpression.__preventDeadCodeRemoval = [
12494 + $bm_transform,
12495 + anchorPoint,
12496 + time,
12497 + velocity,
12498 + inPoint,
12499 + outPoint,
12500 + width,
12501 + height,
12502 + name,
12503 + loop_in,
12504 + loop_out,
12505 + smooth,
12506 + toComp,
12507 + fromCompToSurface,
12508 + toWorld,
12509 + fromWorld,
12510 + mask,
12511 + position,
12512 + rotation,
12513 + scale,
12514 + thisComp,
12515 + numKeys,
12516 + active,
12517 + wiggle,
12518 + loopInDuration,
12519 + loopOutDuration,
12520 + comp,
12521 + lookAt,
12522 + easeOut,
12523 + easeIn,
12524 + ease,
12525 + nearestKey,
12526 + key,
12527 + text,
12528 + textIndex,
12529 + textTotal,
12530 + selectorValue,
12531 + framesToTime,
12532 + timeToFrames,
12533 + sourceRectAtTime,
12534 + substring,
12535 + substr,
12536 + posterizeTime,
12537 + index,
12538 + globalData
12539 + ];
12540 + return executeExpression;
12541 + }
12542 + ob.initiateExpression = initiateExpression;
12543 + ob.__preventDeadCodeRemoval = [
12544 + window,
12545 + document,
12546 + XMLHttpRequest,
12547 + fetch,
12548 + frames,
12549 + $bm_neg,
12550 + add,
12551 + $bm_sum,
12552 + $bm_sub,
12553 + $bm_mul,
12554 + $bm_div,
12555 + $bm_mod,
12556 + clamp,
12557 + radians_to_degrees,
12558 + degreesToRadians,
12559 + degrees_to_radians,
12560 + normalize,
12561 + rgbToHsl,
12562 + hslToRgb,
12563 + linear,
12564 + random,
12565 + createPath,
12566 + _lottieGlobal
12567 + ];
12568 + ob.resetFrame = resetFrame;
12569 + return ob;
12570 + }();
12571 + var Expressions = function() {
12572 + var ob = {};
12573 + ob.initExpressions = initExpressions;
12574 + ob.resetFrame = ExpressionManager.resetFrame;
12575 + function initExpressions(animation) {
12576 + var stackCount = 0;
12577 + var registers = [];
12578 + function pushExpression() {
12579 + stackCount += 1;
12580 + }
12581 + function popExpression() {
12582 + stackCount -= 1;
12583 + if (stackCount === 0) releaseInstances();
12584 + }
12585 + function registerExpressionProperty(expression) {
12586 + if (registers.indexOf(expression) === -1) registers.push(expression);
12587 + }
12588 + function releaseInstances() {
12589 + var i;
12590 + var len = registers.length;
12591 + for (i = 0; i < len; i += 1) registers[i].release();
12592 + registers.length = 0;
12593 + }
12594 + animation.renderer.compInterface = CompExpressionInterface(animation.renderer);
12595 + animation.renderer.globalData.projectInterface.registerComposition(animation.renderer);
12596 + animation.renderer.globalData.pushExpression = pushExpression;
12597 + animation.renderer.globalData.popExpression = popExpression;
12598 + animation.renderer.globalData.registerExpressionProperty = registerExpressionProperty;
12599 + }
12600 + return ob;
12601 + }();
12602 + var MaskManagerInterface = function() {
12603 + function MaskInterface(mask, data) {
12604 + this._mask = mask;
12605 + this._data = data;
12606 + }
12607 + Object.defineProperty(MaskInterface.prototype, "maskPath", { get: function get() {
12608 + if (this._mask.prop.k) this._mask.prop.getValue();
12609 + return this._mask.prop;
12610 + } });
12611 + Object.defineProperty(MaskInterface.prototype, "maskOpacity", { get: function get() {
12612 + if (this._mask.op.k) this._mask.op.getValue();
12613 + return this._mask.op.v * 100;
12614 + } });
12615 + return function MaskManager(maskManager) {
12616 + var _masksInterfaces = createSizedArray(maskManager.viewData.length);
12617 + var i;
12618 + var len = maskManager.viewData.length;
12619 + for (i = 0; i < len; i += 1) _masksInterfaces[i] = new MaskInterface(maskManager.viewData[i], maskManager.masksProperties[i]);
12620 + return function maskFunction(name) {
12621 + i = 0;
12622 + while (i < len) {
12623 + if (maskManager.masksProperties[i].nm === name) return _masksInterfaces[i];
12624 + i += 1;
12625 + }
12626 + return null;
12627 + };
12628 + };
12629 + }();
12630 + var ExpressionPropertyInterface = function() {
12631 + var defaultUnidimensionalValue = {
12632 + pv: 0,
12633 + v: 0,
12634 + mult: 1
12635 + };
12636 + var defaultMultidimensionalValue = {
12637 + pv: [
12638 + 0,
12639 + 0,
12640 + 0
12641 + ],
12642 + v: [
12643 + 0,
12644 + 0,
12645 + 0
12646 + ],
12647 + mult: 1
12648 + };
12649 + function completeProperty(expressionValue, property, type) {
12650 + Object.defineProperty(expressionValue, "velocity", { get: function get() {
12651 + return property.getVelocityAtTime(property.comp.currentFrame);
12652 + } });
12653 + expressionValue.numKeys = property.keyframes ? property.keyframes.length : 0;
12654 + expressionValue.key = function(pos) {
12655 + if (!expressionValue.numKeys) return 0;
12656 + var value = "";
12657 + if ("s" in property.keyframes[pos - 1]) value = property.keyframes[pos - 1].s;
12658 + else if ("e" in property.keyframes[pos - 2]) value = property.keyframes[pos - 2].e;
12659 + else value = property.keyframes[pos - 2].s;
12660 + var valueProp = type === "unidimensional" ? new Number(value) : Object.assign({}, value);
12661 + valueProp.time = property.keyframes[pos - 1].t / property.elem.comp.globalData.frameRate;
12662 + valueProp.value = type === "unidimensional" ? value[0] : value;
12663 + return valueProp;
12664 + };
12665 + expressionValue.valueAtTime = property.getValueAtTime;
12666 + expressionValue.speedAtTime = property.getSpeedAtTime;
12667 + expressionValue.velocityAtTime = property.getVelocityAtTime;
12668 + expressionValue.propertyGroup = property.propertyGroup;
12669 + }
12670 + function UnidimensionalPropertyInterface(property) {
12671 + if (!property || !("pv" in property)) property = defaultUnidimensionalValue;
12672 + var mult = 1 / property.mult;
12673 + var val = property.pv * mult;
12674 + var expressionValue = new Number(val);
12675 + expressionValue.value = val;
12676 + completeProperty(expressionValue, property, "unidimensional");
12677 + return function() {
12678 + if (property.k) property.getValue();
12679 + val = property.v * mult;
12680 + if (expressionValue.value !== val) {
12681 + expressionValue = new Number(val);
12682 + expressionValue.value = val;
12683 + expressionValue[0] = val;
12684 + completeProperty(expressionValue, property, "unidimensional");
12685 + }
12686 + return expressionValue;
12687 + };
12688 + }
12689 + function MultidimensionalPropertyInterface(property) {
12690 + if (!property || !("pv" in property)) property = defaultMultidimensionalValue;
12691 + var mult = 1 / property.mult;
12692 + var len = property.data && property.data.l || property.pv.length;
12693 + var expressionValue = createTypedArray("float32", len);
12694 + var arrValue = createTypedArray("float32", len);
12695 + expressionValue.value = arrValue;
12696 + completeProperty(expressionValue, property, "multidimensional");
12697 + return function() {
12698 + if (property.k) property.getValue();
12699 + for (var i = 0; i < len; i += 1) {
12700 + arrValue[i] = property.v[i] * mult;
12701 + expressionValue[i] = arrValue[i];
12702 + }
12703 + return expressionValue;
12704 + };
12705 + }
12706 + function defaultGetter() {
12707 + return defaultUnidimensionalValue;
12708 + }
12709 + return function(property) {
12710 + if (!property) return defaultGetter;
12711 + if (property.propType === "unidimensional") return UnidimensionalPropertyInterface(property);
12712 + return MultidimensionalPropertyInterface(property);
12713 + };
12714 + }();
12715 + var TransformExpressionInterface = function() {
12716 + return function(transform) {
12717 + function _thisFunction(name) {
12718 + switch (name) {
12719 + case "scale":
12720 + case "Scale":
12721 + case "ADBE Scale":
12722 + case 6: return _thisFunction.scale;
12723 + case "rotation":
12724 + case "Rotation":
12725 + case "ADBE Rotation":
12726 + case "ADBE Rotate Z":
12727 + case 10: return _thisFunction.rotation;
12728 + case "ADBE Rotate X": return _thisFunction.xRotation;
12729 + case "ADBE Rotate Y": return _thisFunction.yRotation;
12730 + case "position":
12731 + case "Position":
12732 + case "ADBE Position":
12733 + case 2: return _thisFunction.position;
12734 + case "ADBE Position_0": return _thisFunction.xPosition;
12735 + case "ADBE Position_1": return _thisFunction.yPosition;
12736 + case "ADBE Position_2": return _thisFunction.zPosition;
12737 + case "anchorPoint":
12738 + case "AnchorPoint":
12739 + case "Anchor Point":
12740 + case "ADBE AnchorPoint":
12741 + case 1: return _thisFunction.anchorPoint;
12742 + case "opacity":
12743 + case "Opacity":
12744 + case 11: return _thisFunction.opacity;
12745 + default: return null;
12746 + }
12747 + }
12748 + Object.defineProperty(_thisFunction, "rotation", { get: ExpressionPropertyInterface(transform.r || transform.rz) });
12749 + Object.defineProperty(_thisFunction, "zRotation", { get: ExpressionPropertyInterface(transform.rz || transform.r) });
12750 + Object.defineProperty(_thisFunction, "xRotation", { get: ExpressionPropertyInterface(transform.rx) });
12751 + Object.defineProperty(_thisFunction, "yRotation", { get: ExpressionPropertyInterface(transform.ry) });
12752 + Object.defineProperty(_thisFunction, "scale", { get: ExpressionPropertyInterface(transform.s) });
12753 + var _px;
12754 + var _py;
12755 + var _pz;
12756 + var _transformFactory;
12757 + if (transform.p) _transformFactory = ExpressionPropertyInterface(transform.p);
12758 + else {
12759 + _px = ExpressionPropertyInterface(transform.px);
12760 + _py = ExpressionPropertyInterface(transform.py);
12761 + if (transform.pz) _pz = ExpressionPropertyInterface(transform.pz);
12762 + }
12763 + Object.defineProperty(_thisFunction, "position", { get: function get() {
12764 + if (transform.p) return _transformFactory();
12765 + return [
12766 + _px(),
12767 + _py(),
12768 + _pz ? _pz() : 0
12769 + ];
12770 + } });
12771 + Object.defineProperty(_thisFunction, "xPosition", { get: ExpressionPropertyInterface(transform.px) });
12772 + Object.defineProperty(_thisFunction, "yPosition", { get: ExpressionPropertyInterface(transform.py) });
12773 + Object.defineProperty(_thisFunction, "zPosition", { get: ExpressionPropertyInterface(transform.pz) });
12774 + Object.defineProperty(_thisFunction, "anchorPoint", { get: ExpressionPropertyInterface(transform.a) });
12775 + Object.defineProperty(_thisFunction, "opacity", { get: ExpressionPropertyInterface(transform.o) });
12776 + Object.defineProperty(_thisFunction, "skew", { get: ExpressionPropertyInterface(transform.sk) });
12777 + Object.defineProperty(_thisFunction, "skewAxis", { get: ExpressionPropertyInterface(transform.sa) });
12778 + Object.defineProperty(_thisFunction, "orientation", { get: ExpressionPropertyInterface(transform.or) });
12779 + return _thisFunction;
12780 + };
12781 + }();
12782 + var LayerExpressionInterface = function() {
12783 + function getMatrix(time) {
12784 + var toWorldMat = new Matrix();
12785 + if (time !== void 0) this._elem.finalTransform.mProp.getValueAtTime(time).clone(toWorldMat);
12786 + else this._elem.finalTransform.mProp.applyToMatrix(toWorldMat);
12787 + return toWorldMat;
12788 + }
12789 + function toWorldVec(arr, time) {
12790 + var toWorldMat = this.getMatrix(time);
12791 + toWorldMat.props[12] = 0;
12792 + toWorldMat.props[13] = 0;
12793 + toWorldMat.props[14] = 0;
12794 + return this.applyPoint(toWorldMat, arr);
12795 + }
12796 + function toWorld(arr, time) {
12797 + var toWorldMat = this.getMatrix(time);
12798 + return this.applyPoint(toWorldMat, arr);
12799 + }
12800 + function fromWorldVec(arr, time) {
12801 + var toWorldMat = this.getMatrix(time);
12802 + toWorldMat.props[12] = 0;
12803 + toWorldMat.props[13] = 0;
12804 + toWorldMat.props[14] = 0;
12805 + return this.invertPoint(toWorldMat, arr);
12806 + }
12807 + function fromWorld(arr, time) {
12808 + var toWorldMat = this.getMatrix(time);
12809 + return this.invertPoint(toWorldMat, arr);
12810 + }
12811 + function applyPoint(matrix, arr) {
12812 + if (this._elem.hierarchy && this._elem.hierarchy.length) {
12813 + var i;
12814 + var len = this._elem.hierarchy.length;
12815 + for (i = 0; i < len; i += 1) this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);
12816 + }
12817 + return matrix.applyToPointArray(arr[0], arr[1], arr[2] || 0);
12818 + }
12819 + function invertPoint(matrix, arr) {
12820 + if (this._elem.hierarchy && this._elem.hierarchy.length) {
12821 + var i;
12822 + var len = this._elem.hierarchy.length;
12823 + for (i = 0; i < len; i += 1) this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);
12824 + }
12825 + return matrix.inversePoint(arr);
12826 + }
12827 + function fromComp(arr) {
12828 + var toWorldMat = new Matrix();
12829 + toWorldMat.reset();
12830 + this._elem.finalTransform.mProp.applyToMatrix(toWorldMat);
12831 + if (this._elem.hierarchy && this._elem.hierarchy.length) {
12832 + var i;
12833 + var len = this._elem.hierarchy.length;
12834 + for (i = 0; i < len; i += 1) this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(toWorldMat);
12835 + return toWorldMat.inversePoint(arr);
12836 + }
12837 + return toWorldMat.inversePoint(arr);
12838 + }
12839 + function sampleImage() {
12840 + return [
12841 + 1,
12842 + 1,
12843 + 1,
12844 + 1
12845 + ];
12846 + }
12847 + return function(elem) {
12848 + var transformInterface;
12849 + function _registerMaskInterface(maskManager) {
12850 + _thisLayerFunction.mask = new MaskManagerInterface(maskManager, elem);
12851 + }
12852 + function _registerEffectsInterface(effects) {
12853 + _thisLayerFunction.effect = effects;
12854 + }
12855 + function _thisLayerFunction(name) {
12856 + switch (name) {
12857 + case "ADBE Root Vectors Group":
12858 + case "Contents":
12859 + case 2: return _thisLayerFunction.shapeInterface;
12860 + case 1:
12861 + case 6:
12862 + case "Transform":
12863 + case "transform":
12864 + case "ADBE Transform Group": return transformInterface;
12865 + case 4:
12866 + case "ADBE Effect Parade":
12867 + case "effects":
12868 + case "Effects": return _thisLayerFunction.effect;
12869 + case "ADBE Text Properties": return _thisLayerFunction.textInterface;
12870 + default: return null;
12871 + }
12872 + }
12873 + _thisLayerFunction.getMatrix = getMatrix;
12874 + _thisLayerFunction.invertPoint = invertPoint;
12875 + _thisLayerFunction.applyPoint = applyPoint;
12876 + _thisLayerFunction.toWorld = toWorld;
12877 + _thisLayerFunction.toWorldVec = toWorldVec;
12878 + _thisLayerFunction.fromWorld = fromWorld;
12879 + _thisLayerFunction.fromWorldVec = fromWorldVec;
12880 + _thisLayerFunction.toComp = toWorld;
12881 + _thisLayerFunction.fromComp = fromComp;
12882 + _thisLayerFunction.sampleImage = sampleImage;
12883 + _thisLayerFunction.sourceRectAtTime = elem.sourceRectAtTime.bind(elem);
12884 + _thisLayerFunction._elem = elem;
12885 + transformInterface = TransformExpressionInterface(elem.finalTransform.mProp);
12886 + var anchorPointDescriptor = getDescriptor(transformInterface, "anchorPoint");
12887 + Object.defineProperties(_thisLayerFunction, {
12888 + hasParent: { get: function get() {
12889 + return elem.hierarchy.length;
12890 + } },
12891 + parent: { get: function get() {
12892 + return elem.hierarchy[0].layerInterface;
12893 + } },
12894 + rotation: getDescriptor(transformInterface, "rotation"),
12895 + scale: getDescriptor(transformInterface, "scale"),
12896 + position: getDescriptor(transformInterface, "position"),
12897 + opacity: getDescriptor(transformInterface, "opacity"),
12898 + anchorPoint: anchorPointDescriptor,
12899 + anchor_point: anchorPointDescriptor,
12900 + transform: { get: function get() {
12901 + return transformInterface;
12902 + } },
12903 + active: { get: function get() {
12904 + return elem.isInRange;
12905 + } }
12906 + });
12907 + _thisLayerFunction.startTime = elem.data.st;
12908 + _thisLayerFunction.index = elem.data.ind;
12909 + _thisLayerFunction.source = elem.data.refId;
12910 + _thisLayerFunction.height = elem.data.ty === 0 ? elem.data.h : 100;
12911 + _thisLayerFunction.width = elem.data.ty === 0 ? elem.data.w : 100;
12912 + _thisLayerFunction.inPoint = elem.data.ip / elem.comp.globalData.frameRate;
12913 + _thisLayerFunction.outPoint = elem.data.op / elem.comp.globalData.frameRate;
12914 + _thisLayerFunction._name = elem.data.nm;
12915 + _thisLayerFunction.registerMaskInterface = _registerMaskInterface;
12916 + _thisLayerFunction.registerEffectsInterface = _registerEffectsInterface;
12917 + return _thisLayerFunction;
12918 + };
12919 + }();
12920 + var propertyGroupFactory = function() {
12921 + return function(interfaceFunction, parentPropertyGroup) {
12922 + return function(val) {
12923 + val = val === void 0 ? 1 : val;
12924 + if (val <= 0) return interfaceFunction;
12925 + return parentPropertyGroup(val - 1);
12926 + };
12927 + };
12928 + }();
12929 + var PropertyInterface = function() {
12930 + return function(propertyName, propertyGroup) {
12931 + var interfaceFunction = { _name: propertyName };
12932 + function _propertyGroup(val) {
12933 + val = val === void 0 ? 1 : val;
12934 + if (val <= 0) return interfaceFunction;
12935 + return propertyGroup(val - 1);
12936 + }
12937 + return _propertyGroup;
12938 + };
12939 + }();
12940 + var EffectsExpressionInterface = function() {
12941 + var ob = { createEffectsInterface };
12942 + function createEffectsInterface(elem, propertyGroup) {
12943 + if (elem.effectsManager) {
12944 + var effectElements = [];
12945 + var effectsData = elem.data.ef;
12946 + var i;
12947 + var len = elem.effectsManager.effectElements.length;
12948 + for (i = 0; i < len; i += 1) effectElements.push(createGroupInterface(effectsData[i], elem.effectsManager.effectElements[i], propertyGroup, elem));
12949 + var effects = elem.data.ef || [];
12950 + var groupInterface = function groupInterface(name) {
12951 + i = 0;
12952 + len = effects.length;
12953 + while (i < len) {
12954 + if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) return effectElements[i];
12955 + i += 1;
12956 + }
12957 + return null;
12958 + };
12959 + Object.defineProperty(groupInterface, "numProperties", { get: function get() {
12960 + return effects.length;
12961 + } });
12962 + return groupInterface;
12963 + }
12964 + return null;
12965 + }
12966 + function createGroupInterface(data, elements, propertyGroup, elem) {
12967 + function groupInterface(name) {
12968 + var effects = data.ef;
12969 + var i = 0;
12970 + var len = effects.length;
12971 + while (i < len) {
12972 + if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {
12973 + if (effects[i].ty === 5) return effectElements[i];
12974 + return effectElements[i]();
12975 + }
12976 + i += 1;
12977 + }
12978 + throw new Error();
12979 + }
12980 + var _propertyGroup = propertyGroupFactory(groupInterface, propertyGroup);
12981 + var effectElements = [];
12982 + var i;
12983 + var len = data.ef.length;
12984 + for (i = 0; i < len; i += 1) if (data.ef[i].ty === 5) effectElements.push(createGroupInterface(data.ef[i], elements.effectElements[i], elements.effectElements[i].propertyGroup, elem));
12985 + else effectElements.push(createValueInterface(elements.effectElements[i], data.ef[i].ty, elem, _propertyGroup));
12986 + if (data.mn === "ADBE Color Control") Object.defineProperty(groupInterface, "color", { get: function get() {
12987 + return effectElements[0]();
12988 + } });
12989 + Object.defineProperties(groupInterface, {
12990 + numProperties: { get: function get() {
12991 + return data.np;
12992 + } },
12993 + _name: { value: data.nm },
12994 + propertyGroup: { value: _propertyGroup }
12995 + });
12996 + groupInterface.enabled = data.en !== 0;
12997 + groupInterface.active = groupInterface.enabled;
12998 + return groupInterface;
12999 + }
13000 + function createValueInterface(element, type, elem, propertyGroup) {
13001 + var expressionProperty = ExpressionPropertyInterface(element.p);
13002 + function interfaceFunction() {
13003 + if (type === 10) return elem.comp.compInterface(element.p.v);
13004 + return expressionProperty();
13005 + }
13006 + if (element.p.setGroupProperty) element.p.setGroupProperty(PropertyInterface("", propertyGroup));
13007 + return interfaceFunction;
13008 + }
13009 + return ob;
13010 + }();
13011 + var ShapePathInterface = function() {
13012 + return function pathInterfaceFactory(shape, view, propertyGroup) {
13013 + var prop = view.sh;
13014 + function interfaceFunction(val) {
13015 + if (val === "Shape" || val === "shape" || val === "Path" || val === "path" || val === "ADBE Vector Shape" || val === 2) return interfaceFunction.path;
13016 + return null;
13017 + }
13018 + var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);
13019 + prop.setGroupProperty(PropertyInterface("Path", _propertyGroup));
13020 + Object.defineProperties(interfaceFunction, {
13021 + path: { get: function get() {
13022 + if (prop.k) prop.getValue();
13023 + return prop;
13024 + } },
13025 + shape: { get: function get() {
13026 + if (prop.k) prop.getValue();
13027 + return prop;
13028 + } },
13029 + _name: { value: shape.nm },
13030 + ix: { value: shape.ix },
13031 + propertyIndex: { value: shape.ix },
13032 + mn: { value: shape.mn },
13033 + propertyGroup: { value: propertyGroup }
13034 + });
13035 + return interfaceFunction;
13036 + };
13037 + }();
13038 + var ShapeExpressionInterface = function() {
13039 + function iterateElements(shapes, view, propertyGroup) {
13040 + var arr = [];
13041 + var i;
13042 + var len = shapes ? shapes.length : 0;
13043 + for (i = 0; i < len; i += 1) if (shapes[i].ty === "gr") arr.push(groupInterfaceFactory(shapes[i], view[i], propertyGroup));
13044 + else if (shapes[i].ty === "fl") arr.push(fillInterfaceFactory(shapes[i], view[i], propertyGroup));
13045 + else if (shapes[i].ty === "st") arr.push(strokeInterfaceFactory(shapes[i], view[i], propertyGroup));
13046 + else if (shapes[i].ty === "tm") arr.push(trimInterfaceFactory(shapes[i], view[i], propertyGroup));
13047 + else if (shapes[i].ty === "tr") {} else if (shapes[i].ty === "el") arr.push(ellipseInterfaceFactory(shapes[i], view[i], propertyGroup));
13048 + else if (shapes[i].ty === "sr") arr.push(starInterfaceFactory(shapes[i], view[i], propertyGroup));
13049 + else if (shapes[i].ty === "sh") arr.push(ShapePathInterface(shapes[i], view[i], propertyGroup));
13050 + else if (shapes[i].ty === "rc") arr.push(rectInterfaceFactory(shapes[i], view[i], propertyGroup));
13051 + else if (shapes[i].ty === "rd") arr.push(roundedInterfaceFactory(shapes[i], view[i], propertyGroup));
13052 + else if (shapes[i].ty === "rp") arr.push(repeaterInterfaceFactory(shapes[i], view[i], propertyGroup));
13053 + else if (shapes[i].ty === "gf") arr.push(gradientFillInterfaceFactory(shapes[i], view[i], propertyGroup));
13054 + else arr.push(defaultInterfaceFactory(shapes[i], view[i], propertyGroup));
13055 + return arr;
13056 + }
13057 + function contentsInterfaceFactory(shape, view, propertyGroup) {
13058 + var interfaces;
13059 + var interfaceFunction = function _interfaceFunction(value) {
13060 + var i = 0;
13061 + var len = interfaces.length;
13062 + while (i < len) {
13063 + if (interfaces[i]._name === value || interfaces[i].mn === value || interfaces[i].propertyIndex === value || interfaces[i].ix === value || interfaces[i].ind === value) return interfaces[i];
13064 + i += 1;
13065 + }
13066 + if (typeof value === "number") return interfaces[value - 1];
13067 + return null;
13068 + };
13069 + interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);
13070 + interfaces = iterateElements(shape.it, view.it, interfaceFunction.propertyGroup);
13071 + interfaceFunction.numProperties = interfaces.length;
13072 + interfaceFunction.transform = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);
13073 + interfaceFunction.propertyIndex = shape.cix;
13074 + interfaceFunction._name = shape.nm;
13075 + return interfaceFunction;
13076 + }
13077 + function groupInterfaceFactory(shape, view, propertyGroup) {
13078 + var interfaceFunction = function _interfaceFunction(value) {
13079 + switch (value) {
13080 + case "ADBE Vectors Group":
13081 + case "Contents":
13082 + case 2: return interfaceFunction.content;
13083 + default: return interfaceFunction.transform;
13084 + }
13085 + };
13086 + interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);
13087 + var content = contentsInterfaceFactory(shape, view, interfaceFunction.propertyGroup);
13088 + var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);
13089 + interfaceFunction.content = content;
13090 + interfaceFunction.transform = transformInterface;
13091 + Object.defineProperty(interfaceFunction, "_name", { get: function get() {
13092 + return shape.nm;
13093 + } });
13094 + interfaceFunction.numProperties = shape.np;
13095 + interfaceFunction.propertyIndex = shape.ix;
13096 + interfaceFunction.nm = shape.nm;
13097 + interfaceFunction.mn = shape.mn;
13098 + return interfaceFunction;
13099 + }
13100 + function fillInterfaceFactory(shape, view, propertyGroup) {
13101 + function interfaceFunction(val) {
13102 + if (val === "Color" || val === "color") return interfaceFunction.color;
13103 + if (val === "Opacity" || val === "opacity") return interfaceFunction.opacity;
13104 + return null;
13105 + }
13106 + Object.defineProperties(interfaceFunction, {
13107 + color: { get: ExpressionPropertyInterface(view.c) },
13108 + opacity: { get: ExpressionPropertyInterface(view.o) },
13109 + _name: { value: shape.nm },
13110 + mn: { value: shape.mn }
13111 + });
13112 + view.c.setGroupProperty(PropertyInterface("Color", propertyGroup));
13113 + view.o.setGroupProperty(PropertyInterface("Opacity", propertyGroup));
13114 + return interfaceFunction;
13115 + }
13116 + function gradientFillInterfaceFactory(shape, view, propertyGroup) {
13117 + function interfaceFunction(val) {
13118 + if (val === "Start Point" || val === "start point") return interfaceFunction.startPoint;
13119 + if (val === "End Point" || val === "end point") return interfaceFunction.endPoint;
13120 + if (val === "Opacity" || val === "opacity") return interfaceFunction.opacity;
13121 + return null;
13122 + }
13123 + Object.defineProperties(interfaceFunction, {
13124 + startPoint: { get: ExpressionPropertyInterface(view.s) },
13125 + endPoint: { get: ExpressionPropertyInterface(view.e) },
13126 + opacity: { get: ExpressionPropertyInterface(view.o) },
13127 + type: { get: function get() {
13128 + return "a";
13129 + } },
13130 + _name: { value: shape.nm },
13131 + mn: { value: shape.mn }
13132 + });
13133 + view.s.setGroupProperty(PropertyInterface("Start Point", propertyGroup));
13134 + view.e.setGroupProperty(PropertyInterface("End Point", propertyGroup));
13135 + view.o.setGroupProperty(PropertyInterface("Opacity", propertyGroup));
13136 + return interfaceFunction;
13137 + }
13138 + function defaultInterfaceFactory() {
13139 + function interfaceFunction() {
13140 + return null;
13141 + }
13142 + return interfaceFunction;
13143 + }
13144 + function strokeInterfaceFactory(shape, view, propertyGroup) {
13145 + var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);
13146 + var _dashPropertyGroup = propertyGroupFactory(dashOb, _propertyGroup);
13147 + function addPropertyToDashOb(i) {
13148 + Object.defineProperty(dashOb, shape.d[i].nm, { get: ExpressionPropertyInterface(view.d.dataProps[i].p) });
13149 + }
13150 + var i;
13151 + var len = shape.d ? shape.d.length : 0;
13152 + var dashOb = {};
13153 + for (i = 0; i < len; i += 1) {
13154 + addPropertyToDashOb(i);
13155 + view.d.dataProps[i].p.setGroupProperty(_dashPropertyGroup);
13156 + }
13157 + function interfaceFunction(val) {
13158 + if (val === "Color" || val === "color") return interfaceFunction.color;
13159 + if (val === "Opacity" || val === "opacity") return interfaceFunction.opacity;
13160 + if (val === "Stroke Width" || val === "stroke width") return interfaceFunction.strokeWidth;
13161 + return null;
13162 + }
13163 + Object.defineProperties(interfaceFunction, {
13164 + color: { get: ExpressionPropertyInterface(view.c) },
13165 + opacity: { get: ExpressionPropertyInterface(view.o) },
13166 + strokeWidth: { get: ExpressionPropertyInterface(view.w) },
13167 + dash: { get: function get() {
13168 + return dashOb;
13169 + } },
13170 + _name: { value: shape.nm },
13171 + mn: { value: shape.mn }
13172 + });
13173 + view.c.setGroupProperty(PropertyInterface("Color", _propertyGroup));
13174 + view.o.setGroupProperty(PropertyInterface("Opacity", _propertyGroup));
13175 + view.w.setGroupProperty(PropertyInterface("Stroke Width", _propertyGroup));
13176 + return interfaceFunction;
13177 + }
13178 + function trimInterfaceFactory(shape, view, propertyGroup) {
13179 + function interfaceFunction(val) {
13180 + if (val === shape.e.ix || val === "End" || val === "end") return interfaceFunction.end;
13181 + if (val === shape.s.ix) return interfaceFunction.start;
13182 + if (val === shape.o.ix) return interfaceFunction.offset;
13183 + return null;
13184 + }
13185 + var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);
13186 + interfaceFunction.propertyIndex = shape.ix;
13187 + view.s.setGroupProperty(PropertyInterface("Start", _propertyGroup));
13188 + view.e.setGroupProperty(PropertyInterface("End", _propertyGroup));
13189 + view.o.setGroupProperty(PropertyInterface("Offset", _propertyGroup));
13190 + interfaceFunction.propertyIndex = shape.ix;
13191 + interfaceFunction.propertyGroup = propertyGroup;
13192 + Object.defineProperties(interfaceFunction, {
13193 + start: { get: ExpressionPropertyInterface(view.s) },
13194 + end: { get: ExpressionPropertyInterface(view.e) },
13195 + offset: { get: ExpressionPropertyInterface(view.o) },
13196 + _name: { value: shape.nm }
13197 + });
13198 + interfaceFunction.mn = shape.mn;
13199 + return interfaceFunction;
13200 + }
13201 + function transformInterfaceFactory(shape, view, propertyGroup) {
13202 + function interfaceFunction(value) {
13203 + if (shape.a.ix === value || value === "Anchor Point") return interfaceFunction.anchorPoint;
13204 + if (shape.o.ix === value || value === "Opacity") return interfaceFunction.opacity;
13205 + if (shape.p.ix === value || value === "Position") return interfaceFunction.position;
13206 + if (shape.r.ix === value || value === "Rotation" || value === "ADBE Vector Rotation") return interfaceFunction.rotation;
13207 + if (shape.s.ix === value || value === "Scale") return interfaceFunction.scale;
13208 + if (shape.sk && shape.sk.ix === value || value === "Skew") return interfaceFunction.skew;
13209 + if (shape.sa && shape.sa.ix === value || value === "Skew Axis") return interfaceFunction.skewAxis;
13210 + return null;
13211 + }
13212 + var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);
13213 + view.transform.mProps.o.setGroupProperty(PropertyInterface("Opacity", _propertyGroup));
13214 + view.transform.mProps.p.setGroupProperty(PropertyInterface("Position", _propertyGroup));
13215 + view.transform.mProps.a.setGroupProperty(PropertyInterface("Anchor Point", _propertyGroup));
13216 + view.transform.mProps.s.setGroupProperty(PropertyInterface("Scale", _propertyGroup));
13217 + view.transform.mProps.r.setGroupProperty(PropertyInterface("Rotation", _propertyGroup));
13218 + if (view.transform.mProps.sk) {
13219 + view.transform.mProps.sk.setGroupProperty(PropertyInterface("Skew", _propertyGroup));
13220 + view.transform.mProps.sa.setGroupProperty(PropertyInterface("Skew Angle", _propertyGroup));
13221 + }
13222 + view.transform.op.setGroupProperty(PropertyInterface("Opacity", _propertyGroup));
13223 + Object.defineProperties(interfaceFunction, {
13224 + opacity: { get: ExpressionPropertyInterface(view.transform.mProps.o) },
13225 + position: { get: ExpressionPropertyInterface(view.transform.mProps.p) },
13226 + anchorPoint: { get: ExpressionPropertyInterface(view.transform.mProps.a) },
13227 + scale: { get: ExpressionPropertyInterface(view.transform.mProps.s) },
13228 + rotation: { get: ExpressionPropertyInterface(view.transform.mProps.r) },
13229 + skew: { get: ExpressionPropertyInterface(view.transform.mProps.sk) },
13230 + skewAxis: { get: ExpressionPropertyInterface(view.transform.mProps.sa) },
13231 + _name: { value: shape.nm }
13232 + });
13233 + interfaceFunction.ty = "tr";
13234 + interfaceFunction.mn = shape.mn;
13235 + interfaceFunction.propertyGroup = propertyGroup;
13236 + return interfaceFunction;
13237 + }
13238 + function ellipseInterfaceFactory(shape, view, propertyGroup) {
13239 + function interfaceFunction(value) {
13240 + if (shape.p.ix === value) return interfaceFunction.position;
13241 + if (shape.s.ix === value) return interfaceFunction.size;
13242 + return null;
13243 + }
13244 + var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);
13245 + interfaceFunction.propertyIndex = shape.ix;
13246 + var prop = view.sh.ty === "tm" ? view.sh.prop : view.sh;
13247 + prop.s.setGroupProperty(PropertyInterface("Size", _propertyGroup));
13248 + prop.p.setGroupProperty(PropertyInterface("Position", _propertyGroup));
13249 + Object.defineProperties(interfaceFunction, {
13250 + size: { get: ExpressionPropertyInterface(prop.s) },
13251 + position: { get: ExpressionPropertyInterface(prop.p) },
13252 + _name: { value: shape.nm }
13253 + });
13254 + interfaceFunction.mn = shape.mn;
13255 + return interfaceFunction;
13256 + }
13257 + function starInterfaceFactory(shape, view, propertyGroup) {
13258 + function interfaceFunction(value) {
13259 + if (shape.p.ix === value) return interfaceFunction.position;
13260 + if (shape.r.ix === value) return interfaceFunction.rotation;
13261 + if (shape.pt.ix === value) return interfaceFunction.points;
13262 + if (shape.or.ix === value || value === "ADBE Vector Star Outer Radius") return interfaceFunction.outerRadius;
13263 + if (shape.os.ix === value) return interfaceFunction.outerRoundness;
13264 + if (shape.ir && (shape.ir.ix === value || value === "ADBE Vector Star Inner Radius")) return interfaceFunction.innerRadius;
13265 + if (shape.is && shape.is.ix === value) return interfaceFunction.innerRoundness;
13266 + return null;
13267 + }
13268 + var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);
13269 + var prop = view.sh.ty === "tm" ? view.sh.prop : view.sh;
13270 + interfaceFunction.propertyIndex = shape.ix;
13271 + prop.or.setGroupProperty(PropertyInterface("Outer Radius", _propertyGroup));
13272 + prop.os.setGroupProperty(PropertyInterface("Outer Roundness", _propertyGroup));
13273 + prop.pt.setGroupProperty(PropertyInterface("Points", _propertyGroup));
13274 + prop.p.setGroupProperty(PropertyInterface("Position", _propertyGroup));
13275 + prop.r.setGroupProperty(PropertyInterface("Rotation", _propertyGroup));
13276 + if (shape.ir) {
13277 + prop.ir.setGroupProperty(PropertyInterface("Inner Radius", _propertyGroup));
13278 + prop.is.setGroupProperty(PropertyInterface("Inner Roundness", _propertyGroup));
13279 + }
13280 + Object.defineProperties(interfaceFunction, {
13281 + position: { get: ExpressionPropertyInterface(prop.p) },
13282 + rotation: { get: ExpressionPropertyInterface(prop.r) },
13283 + points: { get: ExpressionPropertyInterface(prop.pt) },
13284 + outerRadius: { get: ExpressionPropertyInterface(prop.or) },
13285 + outerRoundness: { get: ExpressionPropertyInterface(prop.os) },
13286 + innerRadius: { get: ExpressionPropertyInterface(prop.ir) },
13287 + innerRoundness: { get: ExpressionPropertyInterface(prop.is) },
13288 + _name: { value: shape.nm }
13289 + });
13290 + interfaceFunction.mn = shape.mn;
13291 + return interfaceFunction;
13292 + }
13293 + function rectInterfaceFactory(shape, view, propertyGroup) {
13294 + function interfaceFunction(value) {
13295 + if (shape.p.ix === value) return interfaceFunction.position;
13296 + if (shape.r.ix === value) return interfaceFunction.roundness;
13297 + if (shape.s.ix === value || value === "Size" || value === "ADBE Vector Rect Size") return interfaceFunction.size;
13298 + return null;
13299 + }
13300 + var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);
13301 + var prop = view.sh.ty === "tm" ? view.sh.prop : view.sh;
13302 + interfaceFunction.propertyIndex = shape.ix;
13303 + prop.p.setGroupProperty(PropertyInterface("Position", _propertyGroup));
13304 + prop.s.setGroupProperty(PropertyInterface("Size", _propertyGroup));
13305 + prop.r.setGroupProperty(PropertyInterface("Rotation", _propertyGroup));
13306 + Object.defineProperties(interfaceFunction, {
13307 + position: { get: ExpressionPropertyInterface(prop.p) },
13308 + roundness: { get: ExpressionPropertyInterface(prop.r) },
13309 + size: { get: ExpressionPropertyInterface(prop.s) },
13310 + _name: { value: shape.nm }
13311 + });
13312 + interfaceFunction.mn = shape.mn;
13313 + return interfaceFunction;
13314 + }
13315 + function roundedInterfaceFactory(shape, view, propertyGroup) {
13316 + function interfaceFunction(value) {
13317 + if (shape.r.ix === value || value === "Round Corners 1") return interfaceFunction.radius;
13318 + return null;
13319 + }
13320 + var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);
13321 + var prop = view;
13322 + interfaceFunction.propertyIndex = shape.ix;
13323 + prop.rd.setGroupProperty(PropertyInterface("Radius", _propertyGroup));
13324 + Object.defineProperties(interfaceFunction, {
13325 + radius: { get: ExpressionPropertyInterface(prop.rd) },
13326 + _name: { value: shape.nm }
13327 + });
13328 + interfaceFunction.mn = shape.mn;
13329 + return interfaceFunction;
13330 + }
13331 + function repeaterInterfaceFactory(shape, view, propertyGroup) {
13332 + function interfaceFunction(value) {
13333 + if (shape.c.ix === value || value === "Copies") return interfaceFunction.copies;
13334 + if (shape.o.ix === value || value === "Offset") return interfaceFunction.offset;
13335 + return null;
13336 + }
13337 + var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);
13338 + var prop = view;
13339 + interfaceFunction.propertyIndex = shape.ix;
13340 + prop.c.setGroupProperty(PropertyInterface("Copies", _propertyGroup));
13341 + prop.o.setGroupProperty(PropertyInterface("Offset", _propertyGroup));
13342 + Object.defineProperties(interfaceFunction, {
13343 + copies: { get: ExpressionPropertyInterface(prop.c) },
13344 + offset: { get: ExpressionPropertyInterface(prop.o) },
13345 + _name: { value: shape.nm }
13346 + });
13347 + interfaceFunction.mn = shape.mn;
13348 + return interfaceFunction;
13349 + }
13350 + return function(shapes, view, propertyGroup) {
13351 + var interfaces;
13352 + function _interfaceFunction(value) {
13353 + if (typeof value === "number") {
13354 + value = value === void 0 ? 1 : value;
13355 + if (value === 0) return propertyGroup;
13356 + return interfaces[value - 1];
13357 + }
13358 + var i = 0;
13359 + var len = interfaces.length;
13360 + while (i < len) {
13361 + if (interfaces[i]._name === value) return interfaces[i];
13362 + i += 1;
13363 + }
13364 + return null;
13365 + }
13366 + function parentGroupWrapper() {
13367 + return propertyGroup;
13368 + }
13369 + _interfaceFunction.propertyGroup = propertyGroupFactory(_interfaceFunction, parentGroupWrapper);
13370 + interfaces = iterateElements(shapes, view, _interfaceFunction.propertyGroup);
13371 + _interfaceFunction.numProperties = interfaces.length;
13372 + _interfaceFunction._name = "Contents";
13373 + return _interfaceFunction;
13374 + };
13375 + }();
13376 + var TextExpressionInterface = function() {
13377 + return function(elem) {
13378 + var _sourceText;
13379 + function _thisLayerFunction(name) {
13380 + switch (name) {
13381 + case "ADBE Text Document": return _thisLayerFunction.sourceText;
13382 + default: return null;
13383 + }
13384 + }
13385 + Object.defineProperty(_thisLayerFunction, "sourceText", { get: function get() {
13386 + elem.textProperty.getValue();
13387 + var stringValue = elem.textProperty.currentData.t;
13388 + if (!_sourceText || stringValue !== _sourceText.value) {
13389 + _sourceText = new String(stringValue);
13390 + _sourceText.value = stringValue || new String(stringValue);
13391 + Object.defineProperty(_sourceText, "style", { get: function get() {
13392 + return { fillColor: elem.textProperty.currentData.fc };
13393 + } });
13394 + }
13395 + return _sourceText;
13396 + } });
13397 + return _thisLayerFunction;
13398 + };
13399 + }();
13400 + function _typeof(o) {
13401 + "@babel/helpers - typeof";
13402 + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
13403 + return typeof o;
13404 + } : function(o) {
13405 + return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
13406 + }, _typeof(o);
13407 + }
13408 + var FootageInterface = function() {
13409 + var outlineInterfaceFactory = function outlineInterfaceFactory(elem) {
13410 + var currentPropertyName = "";
13411 + var currentProperty = elem.getFootageData();
13412 + function init() {
13413 + currentPropertyName = "";
13414 + currentProperty = elem.getFootageData();
13415 + return searchProperty;
13416 + }
13417 + function searchProperty(value) {
13418 + if (currentProperty[value]) {
13419 + currentPropertyName = value;
13420 + currentProperty = currentProperty[value];
13421 + if (_typeof(currentProperty) === "object") return searchProperty;
13422 + return currentProperty;
13423 + }
13424 + var propertyNameIndex = value.indexOf(currentPropertyName);
13425 + if (propertyNameIndex !== -1) {
13426 + var index = parseInt(value.substr(propertyNameIndex + currentPropertyName.length), 10);
13427 + currentProperty = currentProperty[index];
13428 + if (_typeof(currentProperty) === "object") return searchProperty;
13429 + return currentProperty;
13430 + }
13431 + return "";
13432 + }
13433 + return init;
13434 + };
13435 + var dataInterfaceFactory = function dataInterfaceFactory(elem) {
13436 + function interfaceFunction(value) {
13437 + if (value === "Outline") return interfaceFunction.outlineInterface();
13438 + return null;
13439 + }
13440 + interfaceFunction._name = "Outline";
13441 + interfaceFunction.outlineInterface = outlineInterfaceFactory(elem);
13442 + return interfaceFunction;
13443 + };
13444 + return function(elem) {
13445 + function _interfaceFunction(value) {
13446 + if (value === "Data") return _interfaceFunction.dataInterface;
13447 + return null;
13448 + }
13449 + _interfaceFunction._name = "Data";
13450 + _interfaceFunction.dataInterface = dataInterfaceFactory(elem);
13451 + return _interfaceFunction;
13452 + };
13453 + }();
13454 + var interfaces = {
13455 + layer: LayerExpressionInterface,
13456 + effects: EffectsExpressionInterface,
13457 + comp: CompExpressionInterface,
13458 + shape: ShapeExpressionInterface,
13459 + text: TextExpressionInterface,
13460 + footage: FootageInterface
13461 + };
13462 + function getInterface(type) {
13463 + return interfaces[type] || null;
13464 + }
13465 + var expressionHelpers = function() {
13466 + function searchExpressions(elem, data, prop) {
13467 + if (data.x) {
13468 + prop.k = true;
13469 + prop.x = true;
13470 + prop.initiateExpression = ExpressionManager.initiateExpression;
13471 + prop.effectsSequence.push(prop.initiateExpression(elem, data, prop).bind(prop));
13472 + }
13473 + }
13474 + function getValueAtTime(frameNum) {
13475 + frameNum *= this.elem.globalData.frameRate;
13476 + frameNum -= this.offsetTime;
13477 + if (frameNum !== this._cachingAtTime.lastFrame) {
13478 + this._cachingAtTime.lastIndex = this._cachingAtTime.lastFrame < frameNum ? this._cachingAtTime.lastIndex : 0;
13479 + this._cachingAtTime.value = this.interpolateValue(frameNum, this._cachingAtTime);
13480 + this._cachingAtTime.lastFrame = frameNum;
13481 + }
13482 + return this._cachingAtTime.value;
13483 + }
13484 + function getSpeedAtTime(frameNum) {
13485 + var delta = -.01;
13486 + var v1 = this.getValueAtTime(frameNum);
13487 + var v2 = this.getValueAtTime(frameNum + delta);
13488 + var speed = 0;
13489 + if (v1.length) {
13490 + var i;
13491 + for (i = 0; i < v1.length; i += 1) speed += Math.pow(v2[i] - v1[i], 2);
13492 + speed = Math.sqrt(speed) * 100;
13493 + } else speed = 0;
13494 + return speed;
13495 + }
13496 + function getVelocityAtTime(frameNum) {
13497 + if (this.vel !== void 0) return this.vel;
13498 + var delta = -.001;
13499 + var v1 = this.getValueAtTime(frameNum);
13500 + var v2 = this.getValueAtTime(frameNum + delta);
13501 + var velocity;
13502 + if (v1.length) {
13503 + velocity = createTypedArray("float32", v1.length);
13504 + var i;
13505 + for (i = 0; i < v1.length; i += 1) velocity[i] = (v2[i] - v1[i]) / delta;
13506 + } else velocity = (v2 - v1) / delta;
13507 + return velocity;
13508 + }
13509 + function getStaticValueAtTime() {
13510 + return this.pv;
13511 + }
13512 + function setGroupProperty(propertyGroup) {
13513 + this.propertyGroup = propertyGroup;
13514 + }
13515 + return {
13516 + searchExpressions,
13517 + getSpeedAtTime,
13518 + getVelocityAtTime,
13519 + getValueAtTime,
13520 + getStaticValueAtTime,
13521 + setGroupProperty
13522 + };
13523 + }();
13524 + function addPropertyDecorator() {
13525 + function loopOut(type, duration, durationFlag) {
13526 + if (!this.k || !this.keyframes) return this.pv;
13527 + type = type ? type.toLowerCase() : "";
13528 + var currentFrame = this.comp.renderedFrame;
13529 + var keyframes = this.keyframes;
13530 + var lastKeyFrame = keyframes[keyframes.length - 1].t;
13531 + if (currentFrame <= lastKeyFrame) return this.pv;
13532 + var cycleDuration;
13533 + var firstKeyFrame;
13534 + if (!durationFlag) {
13535 + if (!duration || duration > keyframes.length - 1) duration = keyframes.length - 1;
13536 + firstKeyFrame = keyframes[keyframes.length - 1 - duration].t;
13537 + cycleDuration = lastKeyFrame - firstKeyFrame;
13538 + } else {
13539 + if (!duration) cycleDuration = Math.max(0, lastKeyFrame - this.elem.data.ip);
13540 + else cycleDuration = Math.abs(lastKeyFrame - this.elem.comp.globalData.frameRate * duration);
13541 + firstKeyFrame = lastKeyFrame - cycleDuration;
13542 + }
13543 + var i;
13544 + var len;
13545 + var ret;
13546 + if (type === "pingpong") {
13547 + if (Math.floor((currentFrame - firstKeyFrame) / cycleDuration) % 2 !== 0) return this.getValueAtTime((cycleDuration - (currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0);
13548 + } else if (type === "offset") {
13549 + var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);
13550 + var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);
13551 + var current = this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0);
13552 + var repeats = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);
13553 + if (this.pv.length) {
13554 + ret = new Array(initV.length);
13555 + len = ret.length;
13556 + for (i = 0; i < len; i += 1) ret[i] = (endV[i] - initV[i]) * repeats + current[i];
13557 + return ret;
13558 + }
13559 + return (endV - initV) * repeats + current;
13560 + } else if (type === "continue") {
13561 + var lastValue = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);
13562 + var nextLastValue = this.getValueAtTime((lastKeyFrame - .001) / this.comp.globalData.frameRate, 0);
13563 + if (this.pv.length) {
13564 + ret = new Array(lastValue.length);
13565 + len = ret.length;
13566 + for (i = 0; i < len; i += 1) ret[i] = lastValue[i] + (lastValue[i] - nextLastValue[i]) * ((currentFrame - lastKeyFrame) / this.comp.globalData.frameRate) / 5e-4;
13567 + return ret;
13568 + }
13569 + return lastValue + (lastValue - nextLastValue) * ((currentFrame - lastKeyFrame) / .001);
13570 + }
13571 + return this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0);
13572 + }
13573 + function loopIn(type, duration, durationFlag) {
13574 + if (!this.k) return this.pv;
13575 + type = type ? type.toLowerCase() : "";
13576 + var currentFrame = this.comp.renderedFrame;
13577 + var keyframes = this.keyframes;
13578 + var firstKeyFrame = keyframes[0].t;
13579 + if (currentFrame >= firstKeyFrame) return this.pv;
13580 + var cycleDuration;
13581 + var lastKeyFrame;
13582 + if (!durationFlag) {
13583 + if (!duration || duration > keyframes.length - 1) duration = keyframes.length - 1;
13584 + lastKeyFrame = keyframes[duration].t;
13585 + cycleDuration = lastKeyFrame - firstKeyFrame;
13586 + } else {
13587 + if (!duration) cycleDuration = Math.max(0, this.elem.data.op - firstKeyFrame);
13588 + else cycleDuration = Math.abs(this.elem.comp.globalData.frameRate * duration);
13589 + lastKeyFrame = firstKeyFrame + cycleDuration;
13590 + }
13591 + var i;
13592 + var len;
13593 + var ret;
13594 + if (type === "pingpong") {
13595 + if (Math.floor((firstKeyFrame - currentFrame) / cycleDuration) % 2 === 0) return this.getValueAtTime(((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0);
13596 + } else if (type === "offset") {
13597 + var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);
13598 + var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);
13599 + var current = this.getValueAtTime((cycleDuration - (firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0);
13600 + var repeats = Math.floor((firstKeyFrame - currentFrame) / cycleDuration) + 1;
13601 + if (this.pv.length) {
13602 + ret = new Array(initV.length);
13603 + len = ret.length;
13604 + for (i = 0; i < len; i += 1) ret[i] = current[i] - (endV[i] - initV[i]) * repeats;
13605 + return ret;
13606 + }
13607 + return current - (endV - initV) * repeats;
13608 + } else if (type === "continue") {
13609 + var firstValue = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);
13610 + var nextFirstValue = this.getValueAtTime((firstKeyFrame + .001) / this.comp.globalData.frameRate, 0);
13611 + if (this.pv.length) {
13612 + ret = new Array(firstValue.length);
13613 + len = ret.length;
13614 + for (i = 0; i < len; i += 1) ret[i] = firstValue[i] + (firstValue[i] - nextFirstValue[i]) * (firstKeyFrame - currentFrame) / .001;
13615 + return ret;
13616 + }
13617 + return firstValue + (firstValue - nextFirstValue) * (firstKeyFrame - currentFrame) / .001;
13618 + }
13619 + return this.getValueAtTime((cycleDuration - ((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0);
13620 + }
13621 + function smooth(width, samples) {
13622 + if (!this.k) return this.pv;
13623 + width = (width || .4) * .5;
13624 + samples = Math.floor(samples || 5);
13625 + if (samples <= 1) return this.pv;
13626 + var currentTime = this.comp.renderedFrame / this.comp.globalData.frameRate;
13627 + var initFrame = currentTime - width;
13628 + var endFrame = currentTime + width;
13629 + var sampleFrequency = samples > 1 ? (endFrame - initFrame) / (samples - 1) : 1;
13630 + var i = 0;
13631 + var j = 0;
13632 + var value;
13633 + if (this.pv.length) value = createTypedArray("float32", this.pv.length);
13634 + else value = 0;
13635 + var sampleValue;
13636 + while (i < samples) {
13637 + sampleValue = this.getValueAtTime(initFrame + i * sampleFrequency);
13638 + if (this.pv.length) for (j = 0; j < this.pv.length; j += 1) value[j] += sampleValue[j];
13639 + else value += sampleValue;
13640 + i += 1;
13641 + }
13642 + if (this.pv.length) for (j = 0; j < this.pv.length; j += 1) value[j] /= samples;
13643 + else value /= samples;
13644 + return value;
13645 + }
13646 + function getTransformValueAtTime(time) {
13647 + if (!this._transformCachingAtTime) this._transformCachingAtTime = { v: new Matrix() };
13648 + var matrix = this._transformCachingAtTime.v;
13649 + matrix.cloneFromProps(this.pre.props);
13650 + if (this.appliedTransformations < 1) {
13651 + var anchor = this.a.getValueAtTime(time);
13652 + matrix.translate(-anchor[0] * this.a.mult, -anchor[1] * this.a.mult, anchor[2] * this.a.mult);
13653 + }
13654 + if (this.appliedTransformations < 2) {
13655 + var scale = this.s.getValueAtTime(time);
13656 + matrix.scale(scale[0] * this.s.mult, scale[1] * this.s.mult, scale[2] * this.s.mult);
13657 + }
13658 + if (this.sk && this.appliedTransformations < 3) {
13659 + var skew = this.sk.getValueAtTime(time);
13660 + var skewAxis = this.sa.getValueAtTime(time);
13661 + matrix.skewFromAxis(-skew * this.sk.mult, skewAxis * this.sa.mult);
13662 + }
13663 + if (this.r && this.appliedTransformations < 4) {
13664 + var rotation = this.r.getValueAtTime(time);
13665 + matrix.rotate(-rotation * this.r.mult);
13666 + } else if (!this.r && this.appliedTransformations < 4) {
13667 + var rotationZ = this.rz.getValueAtTime(time);
13668 + var rotationY = this.ry.getValueAtTime(time);
13669 + var rotationX = this.rx.getValueAtTime(time);
13670 + var orientation = this.or.getValueAtTime(time);
13671 + 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);
13672 + }
13673 + if (this.data.p && this.data.p.s) {
13674 + var positionX = this.px.getValueAtTime(time);
13675 + var positionY = this.py.getValueAtTime(time);
13676 + if (this.data.p.z) {
13677 + var positionZ = this.pz.getValueAtTime(time);
13678 + matrix.translate(positionX * this.px.mult, positionY * this.py.mult, -positionZ * this.pz.mult);
13679 + } else matrix.translate(positionX * this.px.mult, positionY * this.py.mult, 0);
13680 + } else {
13681 + var position = this.p.getValueAtTime(time);
13682 + matrix.translate(position[0] * this.p.mult, position[1] * this.p.mult, -position[2] * this.p.mult);
13683 + }
13684 + return matrix;
13685 + }
13686 + function getTransformStaticValueAtTime() {
13687 + return this.v.clone(new Matrix());
13688 + }
13689 + var getTransformProperty = TransformPropertyFactory.getTransformProperty;
13690 + TransformPropertyFactory.getTransformProperty = function(elem, data, container) {
13691 + var prop = getTransformProperty(elem, data, container);
13692 + if (prop.dynamicProperties.length) prop.getValueAtTime = getTransformValueAtTime.bind(prop);
13693 + else prop.getValueAtTime = getTransformStaticValueAtTime.bind(prop);
13694 + prop.setGroupProperty = expressionHelpers.setGroupProperty;
13695 + return prop;
13696 + };
13697 + var propertyGetProp = PropertyFactory.getProp;
13698 + PropertyFactory.getProp = function(elem, data, type, mult, container) {
13699 + var prop = propertyGetProp(elem, data, type, mult, container);
13700 + if (prop.kf) prop.getValueAtTime = expressionHelpers.getValueAtTime.bind(prop);
13701 + else prop.getValueAtTime = expressionHelpers.getStaticValueAtTime.bind(prop);
13702 + prop.setGroupProperty = expressionHelpers.setGroupProperty;
13703 + prop.loopOut = loopOut;
13704 + prop.loopIn = loopIn;
13705 + prop.smooth = smooth;
13706 + prop.getVelocityAtTime = expressionHelpers.getVelocityAtTime.bind(prop);
13707 + prop.getSpeedAtTime = expressionHelpers.getSpeedAtTime.bind(prop);
13708 + prop.numKeys = data.a === 1 ? data.k.length : 0;
13709 + prop.propertyIndex = data.ix;
13710 + var value = 0;
13711 + if (type !== 0) value = createTypedArray("float32", data.a === 1 ? data.k[0].s.length : data.k.length);
13712 + prop._cachingAtTime = {
13713 + lastFrame: initialDefaultFrame,
13714 + lastIndex: 0,
13715 + value
13716 + };
13717 + expressionHelpers.searchExpressions(elem, data, prop);
13718 + if (prop.k) container.addDynamicProperty(prop);
13719 + return prop;
13720 + };
13721 + function getShapeValueAtTime(frameNum) {
13722 + if (!this._cachingAtTime) this._cachingAtTime = {
13723 + shapeValue: shapePool.clone(this.pv),
13724 + lastIndex: 0,
13725 + lastTime: initialDefaultFrame
13726 + };
13727 + frameNum *= this.elem.globalData.frameRate;
13728 + frameNum -= this.offsetTime;
13729 + if (frameNum !== this._cachingAtTime.lastTime) {
13730 + this._cachingAtTime.lastIndex = this._cachingAtTime.lastTime < frameNum ? this._caching.lastIndex : 0;
13731 + this._cachingAtTime.lastTime = frameNum;
13732 + this.interpolateShape(frameNum, this._cachingAtTime.shapeValue, this._cachingAtTime);
13733 + }
13734 + return this._cachingAtTime.shapeValue;
13735 + }
13736 + var ShapePropertyConstructorFunction = ShapePropertyFactory.getConstructorFunction();
13737 + var KeyframedShapePropertyConstructorFunction = ShapePropertyFactory.getKeyframedConstructorFunction();
13738 + function ShapeExpressions() {}
13739 + ShapeExpressions.prototype = {
13740 + vertices: function vertices(prop, time) {
13741 + if (this.k) this.getValue();
13742 + var shapePath = this.v;
13743 + if (time !== void 0) shapePath = this.getValueAtTime(time, 0);
13744 + var i;
13745 + var len = shapePath._length;
13746 + var vertices = shapePath[prop];
13747 + var points = shapePath.v;
13748 + var arr = createSizedArray(len);
13749 + for (i = 0; i < len; i += 1) if (prop === "i" || prop === "o") arr[i] = [vertices[i][0] - points[i][0], vertices[i][1] - points[i][1]];
13750 + else arr[i] = [vertices[i][0], vertices[i][1]];
13751 + return arr;
13752 + },
13753 + points: function points(time) {
13754 + return this.vertices("v", time);
13755 + },
13756 + inTangents: function inTangents(time) {
13757 + return this.vertices("i", time);
13758 + },
13759 + outTangents: function outTangents(time) {
13760 + return this.vertices("o", time);
13761 + },
13762 + isClosed: function isClosed() {
13763 + return this.v.c;
13764 + },
13765 + pointOnPath: function pointOnPath(perc, time) {
13766 + var shapePath = this.v;
13767 + if (time !== void 0) shapePath = this.getValueAtTime(time, 0);
13768 + if (!this._segmentsLength) this._segmentsLength = bez.getSegmentsLength(shapePath);
13769 + var segmentsLength = this._segmentsLength;
13770 + var lengths = segmentsLength.lengths;
13771 + var lengthPos = segmentsLength.totalLength * perc;
13772 + var i = 0;
13773 + var len = lengths.length;
13774 + var accumulatedLength = 0;
13775 + var pt;
13776 + while (i < len) {
13777 + if (accumulatedLength + lengths[i].addedLength > lengthPos) {
13778 + var initIndex = i;
13779 + var endIndex = shapePath.c && i === len - 1 ? 0 : i + 1;
13780 + var segmentPerc = (lengthPos - accumulatedLength) / lengths[i].addedLength;
13781 + pt = bez.getPointInSegment(shapePath.v[initIndex], shapePath.v[endIndex], shapePath.o[initIndex], shapePath.i[endIndex], segmentPerc, lengths[i]);
13782 + break;
13783 + } else accumulatedLength += lengths[i].addedLength;
13784 + i += 1;
13785 + }
13786 + if (!pt) pt = shapePath.c ? [shapePath.v[0][0], shapePath.v[0][1]] : [shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1]];
13787 + return pt;
13788 + },
13789 + vectorOnPath: function vectorOnPath(perc, time, vectorType) {
13790 + if (perc == 1) perc = this.v.c;
13791 + else if (perc == 0) perc = .999;
13792 + var pt1 = this.pointOnPath(perc, time);
13793 + var pt2 = this.pointOnPath(perc + .001, time);
13794 + var xLength = pt2[0] - pt1[0];
13795 + var yLength = pt2[1] - pt1[1];
13796 + var magnitude = Math.sqrt(Math.pow(xLength, 2) + Math.pow(yLength, 2));
13797 + if (magnitude === 0) return [0, 0];
13798 + return vectorType === "tangent" ? [xLength / magnitude, yLength / magnitude] : [-yLength / magnitude, xLength / magnitude];
13799 + },
13800 + tangentOnPath: function tangentOnPath(perc, time) {
13801 + return this.vectorOnPath(perc, time, "tangent");
13802 + },
13803 + normalOnPath: function normalOnPath(perc, time) {
13804 + return this.vectorOnPath(perc, time, "normal");
13805 + },
13806 + setGroupProperty: expressionHelpers.setGroupProperty,
13807 + getValueAtTime: expressionHelpers.getStaticValueAtTime
13808 + };
13809 + extendPrototype([ShapeExpressions], ShapePropertyConstructorFunction);
13810 + extendPrototype([ShapeExpressions], KeyframedShapePropertyConstructorFunction);
13811 + KeyframedShapePropertyConstructorFunction.prototype.getValueAtTime = getShapeValueAtTime;
13812 + KeyframedShapePropertyConstructorFunction.prototype.initiateExpression = ExpressionManager.initiateExpression;
13813 + var propertyGetShapeProp = ShapePropertyFactory.getShapeProp;
13814 + ShapePropertyFactory.getShapeProp = function(elem, data, type, arr, trims) {
13815 + var prop = propertyGetShapeProp(elem, data, type, arr, trims);
13816 + prop.propertyIndex = data.ix;
13817 + prop.lock = false;
13818 + if (type === 3) expressionHelpers.searchExpressions(elem, data.pt, prop);
13819 + else if (type === 4) expressionHelpers.searchExpressions(elem, data.ks, prop);
13820 + if (prop.k) elem.addDynamicProperty(prop);
13821 + return prop;
13822 + };
13823 + }
13824 + function initialize$1() {
13825 + addPropertyDecorator();
13826 + }
13827 + function addDecorator() {
13828 + function searchExpressions() {
13829 + if (this.data.d.x) {
13830 + this.calculateExpression = ExpressionManager.initiateExpression.bind(this)(this.elem, this.data.d, this);
13831 + this.addEffect(this.getExpressionValue.bind(this));
13832 + return true;
13833 + }
13834 + return null;
13835 + }
13836 + TextProperty.prototype.getExpressionValue = function(currentValue, text) {
13837 + var newValue = this.calculateExpression(text);
13838 + if (currentValue.t !== newValue) {
13839 + var newData = {};
13840 + this.copyData(newData, currentValue);
13841 + newData.t = newValue.toString();
13842 + newData.__complete = false;
13843 + return newData;
13844 + }
13845 + return currentValue;
13846 + };
13847 + TextProperty.prototype.searchProperty = function() {
13848 + var isKeyframed = this.searchKeyframes();
13849 + var hasExpressions = this.searchExpressions();
13850 + this.kf = isKeyframed || hasExpressions;
13851 + return this.kf;
13852 + };
13853 + TextProperty.prototype.searchExpressions = searchExpressions;
13854 + }
13855 + function initialize() {
13856 + addDecorator();
13857 + }
13858 + function SVGComposableEffect() {}
13859 + SVGComposableEffect.prototype = { createMergeNode: function createMergeNode(resultId, ins) {
13860 + var feMerge = createNS("feMerge");
13861 + feMerge.setAttribute("result", resultId);
13862 + var feMergeNode;
13863 + var i;
13864 + for (i = 0; i < ins.length; i += 1) {
13865 + feMergeNode = createNS("feMergeNode");
13866 + feMergeNode.setAttribute("in", ins[i]);
13867 + feMerge.appendChild(feMergeNode);
13868 + feMerge.appendChild(feMergeNode);
13869 + }
13870 + return feMerge;
13871 + } };
13872 + 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";
13873 + function SVGTintFilter(filter, filterManager, elem, id, source) {
13874 + this.filterManager = filterManager;
13875 + var feColorMatrix = createNS("feColorMatrix");
13876 + feColorMatrix.setAttribute("type", "matrix");
13877 + feColorMatrix.setAttribute("color-interpolation-filters", "linearRGB");
13878 + feColorMatrix.setAttribute("values", linearFilterValue + " 1 0");
13879 + this.linearFilter = feColorMatrix;
13880 + feColorMatrix.setAttribute("result", id + "_tint_1");
13881 + filter.appendChild(feColorMatrix);
13882 + feColorMatrix = createNS("feColorMatrix");
13883 + feColorMatrix.setAttribute("type", "matrix");
13884 + feColorMatrix.setAttribute("color-interpolation-filters", "sRGB");
13885 + feColorMatrix.setAttribute("values", "1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0");
13886 + feColorMatrix.setAttribute("result", id + "_tint_2");
13887 + filter.appendChild(feColorMatrix);
13888 + this.matrixFilter = feColorMatrix;
13889 + var feMerge = this.createMergeNode(id, [
13890 + source,
13891 + id + "_tint_1",
13892 + id + "_tint_2"
13893 + ]);
13894 + filter.appendChild(feMerge);
13895 + }
13896 + extendPrototype([SVGComposableEffect], SVGTintFilter);
13897 + SVGTintFilter.prototype.renderFrame = function(forceRender) {
13898 + if (forceRender || this.filterManager._mdf) {
13899 + var colorBlack = this.filterManager.effectElements[0].p.v;
13900 + var colorWhite = this.filterManager.effectElements[1].p.v;
13901 + var opacity = this.filterManager.effectElements[2].p.v / 100;
13902 + this.linearFilter.setAttribute("values", linearFilterValue + " " + opacity + " 0");
13903 + 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");
13904 + }
13905 + };
13906 + function SVGFillFilter(filter, filterManager, elem, id) {
13907 + this.filterManager = filterManager;
13908 + var feColorMatrix = createNS("feColorMatrix");
13909 + feColorMatrix.setAttribute("type", "matrix");
13910 + feColorMatrix.setAttribute("color-interpolation-filters", "sRGB");
13911 + feColorMatrix.setAttribute("values", "1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0");
13912 + feColorMatrix.setAttribute("result", id);
13913 + filter.appendChild(feColorMatrix);
13914 + this.matrixFilter = feColorMatrix;
13915 + }
13916 + SVGFillFilter.prototype.renderFrame = function(forceRender) {
13917 + if (forceRender || this.filterManager._mdf) {
13918 + var color = this.filterManager.effectElements[2].p.v;
13919 + var opacity = this.filterManager.effectElements[6].p.v;
13920 + 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");
13921 + }
13922 + };
13923 + function SVGStrokeEffect(fil, filterManager, elem) {
13924 + this.initialized = false;
13925 + this.filterManager = filterManager;
13926 + this.elem = elem;
13927 + this.paths = [];
13928 + }
13929 + SVGStrokeEffect.prototype.initialize = function() {
13930 + var elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;
13931 + var path;
13932 + var groupPath;
13933 + var i;
13934 + var len;
13935 + if (this.filterManager.effectElements[1].p.v === 1) {
13936 + len = this.elem.maskManager.masksProperties.length;
13937 + i = 0;
13938 + } else {
13939 + i = this.filterManager.effectElements[0].p.v - 1;
13940 + len = i + 1;
13941 + }
13942 + groupPath = createNS("g");
13943 + groupPath.setAttribute("fill", "none");
13944 + groupPath.setAttribute("stroke-linecap", "round");
13945 + groupPath.setAttribute("stroke-dashoffset", 1);
13946 + for (; i < len; i += 1) {
13947 + path = createNS("path");
13948 + groupPath.appendChild(path);
13949 + this.paths.push({
13950 + p: path,
13951 + m: i
13952 + });
13953 + }
13954 + if (this.filterManager.effectElements[10].p.v === 3) {
13955 + var mask = createNS("mask");
13956 + var id = createElementID();
13957 + mask.setAttribute("id", id);
13958 + mask.setAttribute("mask-type", "alpha");
13959 + mask.appendChild(groupPath);
13960 + this.elem.globalData.defs.appendChild(mask);
13961 + var g = createNS("g");
13962 + g.setAttribute("mask", "url(" + getLocationHref() + "#" + id + ")");
13963 + while (elemChildren[0]) g.appendChild(elemChildren[0]);
13964 + this.elem.layerElement.appendChild(g);
13965 + this.masker = mask;
13966 + groupPath.setAttribute("stroke", "#fff");
13967 + } else if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {
13968 + if (this.filterManager.effectElements[10].p.v === 2) {
13969 + elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;
13970 + while (elemChildren.length) this.elem.layerElement.removeChild(elemChildren[0]);
13971 + }
13972 + this.elem.layerElement.appendChild(groupPath);
13973 + this.elem.layerElement.removeAttribute("mask");
13974 + groupPath.setAttribute("stroke", "#fff");
13975 + }
13976 + this.initialized = true;
13977 + this.pathMasker = groupPath;
13978 + };
13979 + SVGStrokeEffect.prototype.renderFrame = function(forceRender) {
13980 + if (!this.initialized) this.initialize();
13981 + var i;
13982 + var len = this.paths.length;
13983 + var mask;
13984 + var path;
13985 + for (i = 0; i < len; i += 1) if (this.paths[i].m !== -1) {
13986 + mask = this.elem.maskManager.viewData[this.paths[i].m];
13987 + path = this.paths[i].p;
13988 + if (forceRender || this.filterManager._mdf || mask.prop._mdf) path.setAttribute("d", mask.lastPath);
13989 + 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) {
13990 + var dasharrayValue;
13991 + if (this.filterManager.effectElements[7].p.v !== 0 || this.filterManager.effectElements[8].p.v !== 100) {
13992 + var s = Math.min(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * .01;
13993 + var e = Math.max(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * .01;
13994 + var l = path.getTotalLength();
13995 + dasharrayValue = "0 0 0 " + l * s + " ";
13996 + var lineLength = l * (e - s);
13997 + var segment = 1 + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * .01;
13998 + var units = Math.floor(lineLength / segment);
13999 + var j;
14000 + for (j = 0; j < units; j += 1) dasharrayValue += "1 " + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * .01 + " ";
14001 + dasharrayValue += "0 " + l * 10 + " 0 0";
14002 + } else dasharrayValue = "1 " + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * .01;
14003 + path.setAttribute("stroke-dasharray", dasharrayValue);
14004 + }
14005 + }
14006 + if (forceRender || this.filterManager.effectElements[4].p._mdf) this.pathMasker.setAttribute("stroke-width", this.filterManager.effectElements[4].p.v * 2);
14007 + if (forceRender || this.filterManager.effectElements[6].p._mdf) this.pathMasker.setAttribute("opacity", this.filterManager.effectElements[6].p.v);
14008 + if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {
14009 + if (forceRender || this.filterManager.effectElements[3].p._mdf) {
14010 + var color = this.filterManager.effectElements[3].p.v;
14011 + this.pathMasker.setAttribute("stroke", "rgb(" + bmFloor(color[0] * 255) + "," + bmFloor(color[1] * 255) + "," + bmFloor(color[2] * 255) + ")");
14012 + }
14013 + }
14014 + };
14015 + function SVGTritoneFilter(filter, filterManager, elem, id) {
14016 + this.filterManager = filterManager;
14017 + var feColorMatrix = createNS("feColorMatrix");
14018 + feColorMatrix.setAttribute("type", "matrix");
14019 + feColorMatrix.setAttribute("color-interpolation-filters", "linearRGB");
14020 + 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");
14021 + filter.appendChild(feColorMatrix);
14022 + var feComponentTransfer = createNS("feComponentTransfer");
14023 + feComponentTransfer.setAttribute("color-interpolation-filters", "sRGB");
14024 + feComponentTransfer.setAttribute("result", id);
14025 + this.matrixFilter = feComponentTransfer;
14026 + var feFuncR = createNS("feFuncR");
14027 + feFuncR.setAttribute("type", "table");
14028 + feComponentTransfer.appendChild(feFuncR);
14029 + this.feFuncR = feFuncR;
14030 + var feFuncG = createNS("feFuncG");
14031 + feFuncG.setAttribute("type", "table");
14032 + feComponentTransfer.appendChild(feFuncG);
14033 + this.feFuncG = feFuncG;
14034 + var feFuncB = createNS("feFuncB");
14035 + feFuncB.setAttribute("type", "table");
14036 + feComponentTransfer.appendChild(feFuncB);
14037 + this.feFuncB = feFuncB;
14038 + filter.appendChild(feComponentTransfer);
14039 + }
14040 + SVGTritoneFilter.prototype.renderFrame = function(forceRender) {
14041 + if (forceRender || this.filterManager._mdf) {
14042 + var color1 = this.filterManager.effectElements[0].p.v;
14043 + var color2 = this.filterManager.effectElements[1].p.v;
14044 + var color3 = this.filterManager.effectElements[2].p.v;
14045 + var tableR = color3[0] + " " + color2[0] + " " + color1[0];
14046 + var tableG = color3[1] + " " + color2[1] + " " + color1[1];
14047 + var tableB = color3[2] + " " + color2[2] + " " + color1[2];
14048 + this.feFuncR.setAttribute("tableValues", tableR);
14049 + this.feFuncG.setAttribute("tableValues", tableG);
14050 + this.feFuncB.setAttribute("tableValues", tableB);
14051 + }
14052 + };
14053 + function SVGProLevelsFilter(filter, filterManager, elem, id) {
14054 + this.filterManager = filterManager;
14055 + var effectElements = this.filterManager.effectElements;
14056 + var feComponentTransfer = createNS("feComponentTransfer");
14057 + 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) this.feFuncR = this.createFeFunc("feFuncR", feComponentTransfer);
14058 + 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) this.feFuncG = this.createFeFunc("feFuncG", feComponentTransfer);
14059 + 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) this.feFuncB = this.createFeFunc("feFuncB", feComponentTransfer);
14060 + 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) this.feFuncA = this.createFeFunc("feFuncA", feComponentTransfer);
14061 + if (this.feFuncR || this.feFuncG || this.feFuncB || this.feFuncA) {
14062 + feComponentTransfer.setAttribute("color-interpolation-filters", "sRGB");
14063 + filter.appendChild(feComponentTransfer);
14064 + }
14065 + 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) {
14066 + feComponentTransfer = createNS("feComponentTransfer");
14067 + feComponentTransfer.setAttribute("color-interpolation-filters", "sRGB");
14068 + feComponentTransfer.setAttribute("result", id);
14069 + filter.appendChild(feComponentTransfer);
14070 + this.feFuncRComposed = this.createFeFunc("feFuncR", feComponentTransfer);
14071 + this.feFuncGComposed = this.createFeFunc("feFuncG", feComponentTransfer);
14072 + this.feFuncBComposed = this.createFeFunc("feFuncB", feComponentTransfer);
14073 + }
14074 + }
14075 + SVGProLevelsFilter.prototype.createFeFunc = function(type, feComponentTransfer) {
14076 + var feFunc = createNS(type);
14077 + feFunc.setAttribute("type", "table");
14078 + feComponentTransfer.appendChild(feFunc);
14079 + return feFunc;
14080 + };
14081 + SVGProLevelsFilter.prototype.getTableValue = function(inputBlack, inputWhite, gamma, outputBlack, outputWhite) {
14082 + var cnt = 0;
14083 + var segments = 256;
14084 + var perc;
14085 + var min = Math.min(inputBlack, inputWhite);
14086 + var max = Math.max(inputBlack, inputWhite);
14087 + var table = Array.call(null, { length: segments });
14088 + var colorValue;
14089 + var pos = 0;
14090 + var outputDelta = outputWhite - outputBlack;
14091 + var inputDelta = inputWhite - inputBlack;
14092 + while (cnt <= 256) {
14093 + perc = cnt / 256;
14094 + if (perc <= min) colorValue = inputDelta < 0 ? outputWhite : outputBlack;
14095 + else if (perc >= max) colorValue = inputDelta < 0 ? outputBlack : outputWhite;
14096 + else colorValue = outputBlack + outputDelta * Math.pow((perc - inputBlack) / inputDelta, 1 / gamma);
14097 + table[pos] = colorValue;
14098 + pos += 1;
14099 + cnt += 256 / (segments - 1);
14100 + }
14101 + return table.join(" ");
14102 + };
14103 + SVGProLevelsFilter.prototype.renderFrame = function(forceRender) {
14104 + if (forceRender || this.filterManager._mdf) {
14105 + var val;
14106 + var effectElements = this.filterManager.effectElements;
14107 + if (this.feFuncRComposed && (forceRender || effectElements[3].p._mdf || effectElements[4].p._mdf || effectElements[5].p._mdf || effectElements[6].p._mdf || effectElements[7].p._mdf)) {
14108 + val = this.getTableValue(effectElements[3].p.v, effectElements[4].p.v, effectElements[5].p.v, effectElements[6].p.v, effectElements[7].p.v);
14109 + this.feFuncRComposed.setAttribute("tableValues", val);
14110 + this.feFuncGComposed.setAttribute("tableValues", val);
14111 + this.feFuncBComposed.setAttribute("tableValues", val);
14112 + }
14113 + if (this.feFuncR && (forceRender || effectElements[10].p._mdf || effectElements[11].p._mdf || effectElements[12].p._mdf || effectElements[13].p._mdf || effectElements[14].p._mdf)) {
14114 + val = this.getTableValue(effectElements[10].p.v, effectElements[11].p.v, effectElements[12].p.v, effectElements[13].p.v, effectElements[14].p.v);
14115 + this.feFuncR.setAttribute("tableValues", val);
14116 + }
14117 + if (this.feFuncG && (forceRender || effectElements[17].p._mdf || effectElements[18].p._mdf || effectElements[19].p._mdf || effectElements[20].p._mdf || effectElements[21].p._mdf)) {
14118 + val = this.getTableValue(effectElements[17].p.v, effectElements[18].p.v, effectElements[19].p.v, effectElements[20].p.v, effectElements[21].p.v);
14119 + this.feFuncG.setAttribute("tableValues", val);
14120 + }
14121 + if (this.feFuncB && (forceRender || effectElements[24].p._mdf || effectElements[25].p._mdf || effectElements[26].p._mdf || effectElements[27].p._mdf || effectElements[28].p._mdf)) {
14122 + val = this.getTableValue(effectElements[24].p.v, effectElements[25].p.v, effectElements[26].p.v, effectElements[27].p.v, effectElements[28].p.v);
14123 + this.feFuncB.setAttribute("tableValues", val);
14124 + }
14125 + if (this.feFuncA && (forceRender || effectElements[31].p._mdf || effectElements[32].p._mdf || effectElements[33].p._mdf || effectElements[34].p._mdf || effectElements[35].p._mdf)) {
14126 + val = this.getTableValue(effectElements[31].p.v, effectElements[32].p.v, effectElements[33].p.v, effectElements[34].p.v, effectElements[35].p.v);
14127 + this.feFuncA.setAttribute("tableValues", val);
14128 + }
14129 + }
14130 + };
14131 + function SVGDropShadowEffect(filter, filterManager, elem, id, source) {
14132 + var globalFilterSize = filterManager.container.globalData.renderConfig.filterSize;
14133 + var filterSize = filterManager.data.fs || globalFilterSize;
14134 + filter.setAttribute("x", filterSize.x || globalFilterSize.x);
14135 + filter.setAttribute("y", filterSize.y || globalFilterSize.y);
14136 + filter.setAttribute("width", filterSize.width || globalFilterSize.width);
14137 + filter.setAttribute("height", filterSize.height || globalFilterSize.height);
14138 + this.filterManager = filterManager;
14139 + var feGaussianBlur = createNS("feGaussianBlur");
14140 + feGaussianBlur.setAttribute("in", "SourceAlpha");
14141 + feGaussianBlur.setAttribute("result", id + "_drop_shadow_1");
14142 + feGaussianBlur.setAttribute("stdDeviation", "0");
14143 + this.feGaussianBlur = feGaussianBlur;
14144 + filter.appendChild(feGaussianBlur);
14145 + var feOffset = createNS("feOffset");
14146 + feOffset.setAttribute("dx", "25");
14147 + feOffset.setAttribute("dy", "0");
14148 + feOffset.setAttribute("in", id + "_drop_shadow_1");
14149 + feOffset.setAttribute("result", id + "_drop_shadow_2");
14150 + this.feOffset = feOffset;
14151 + filter.appendChild(feOffset);
14152 + var feFlood = createNS("feFlood");
14153 + feFlood.setAttribute("flood-color", "#00ff00");
14154 + feFlood.setAttribute("flood-opacity", "1");
14155 + feFlood.setAttribute("result", id + "_drop_shadow_3");
14156 + this.feFlood = feFlood;
14157 + filter.appendChild(feFlood);
14158 + var feComposite = createNS("feComposite");
14159 + feComposite.setAttribute("in", id + "_drop_shadow_3");
14160 + feComposite.setAttribute("in2", id + "_drop_shadow_2");
14161 + feComposite.setAttribute("operator", "in");
14162 + feComposite.setAttribute("result", id + "_drop_shadow_4");
14163 + filter.appendChild(feComposite);
14164 + var feMerge = this.createMergeNode(id, [id + "_drop_shadow_4", source]);
14165 + filter.appendChild(feMerge);
14166 + }
14167 + extendPrototype([SVGComposableEffect], SVGDropShadowEffect);
14168 + SVGDropShadowEffect.prototype.renderFrame = function(forceRender) {
14169 + if (forceRender || this.filterManager._mdf) {
14170 + if (forceRender || this.filterManager.effectElements[4].p._mdf) this.feGaussianBlur.setAttribute("stdDeviation", this.filterManager.effectElements[4].p.v / 4);
14171 + if (forceRender || this.filterManager.effectElements[0].p._mdf) {
14172 + var col = this.filterManager.effectElements[0].p.v;
14173 + this.feFlood.setAttribute("flood-color", rgbToHex(Math.round(col[0] * 255), Math.round(col[1] * 255), Math.round(col[2] * 255)));
14174 + }
14175 + if (forceRender || this.filterManager.effectElements[1].p._mdf) this.feFlood.setAttribute("flood-opacity", this.filterManager.effectElements[1].p.v / 255);
14176 + if (forceRender || this.filterManager.effectElements[2].p._mdf || this.filterManager.effectElements[3].p._mdf) {
14177 + var distance = this.filterManager.effectElements[3].p.v;
14178 + var angle = (this.filterManager.effectElements[2].p.v - 90) * degToRads;
14179 + var x = distance * Math.cos(angle);
14180 + var y = distance * Math.sin(angle);
14181 + this.feOffset.setAttribute("dx", x);
14182 + this.feOffset.setAttribute("dy", y);
14183 + }
14184 + }
14185 + };
14186 + var _svgMatteSymbols = [];
14187 + function SVGMatte3Effect(filterElem, filterManager, elem) {
14188 + this.initialized = false;
14189 + this.filterManager = filterManager;
14190 + this.filterElem = filterElem;
14191 + this.elem = elem;
14192 + elem.matteElement = createNS("g");
14193 + elem.matteElement.appendChild(elem.layerElement);
14194 + elem.matteElement.appendChild(elem.transformedElement);
14195 + elem.baseElement = elem.matteElement;
14196 + }
14197 + SVGMatte3Effect.prototype.findSymbol = function(mask) {
14198 + var i = 0;
14199 + var len = _svgMatteSymbols.length;
14200 + while (i < len) {
14201 + if (_svgMatteSymbols[i] === mask) return _svgMatteSymbols[i];
14202 + i += 1;
14203 + }
14204 + return null;
14205 + };
14206 + SVGMatte3Effect.prototype.replaceInParent = function(mask, symbolId) {
14207 + var parentNode = mask.layerElement.parentNode;
14208 + if (!parentNode) return;
14209 + var children = parentNode.children;
14210 + var i = 0;
14211 + var len = children.length;
14212 + while (i < len) {
14213 + if (children[i] === mask.layerElement) break;
14214 + i += 1;
14215 + }
14216 + var nextChild;
14217 + if (i <= len - 2) nextChild = children[i + 1];
14218 + var useElem = createNS("use");
14219 + useElem.setAttribute("href", "#" + symbolId);
14220 + if (nextChild) parentNode.insertBefore(useElem, nextChild);
14221 + else parentNode.appendChild(useElem);
14222 + };
14223 + SVGMatte3Effect.prototype.setElementAsMask = function(elem, mask) {
14224 + if (!this.findSymbol(mask)) {
14225 + var symbolId = createElementID();
14226 + var masker = createNS("mask");
14227 + masker.setAttribute("id", mask.layerId);
14228 + masker.setAttribute("mask-type", "alpha");
14229 + _svgMatteSymbols.push(mask);
14230 + var defs = elem.globalData.defs;
14231 + defs.appendChild(masker);
14232 + var symbol = createNS("symbol");
14233 + symbol.setAttribute("id", symbolId);
14234 + this.replaceInParent(mask, symbolId);
14235 + symbol.appendChild(mask.layerElement);
14236 + defs.appendChild(symbol);
14237 + var useElem = createNS("use");
14238 + useElem.setAttribute("href", "#" + symbolId);
14239 + masker.appendChild(useElem);
14240 + mask.data.hd = false;
14241 + mask.show();
14242 + }
14243 + elem.setMatte(mask.layerId);
14244 + };
14245 + SVGMatte3Effect.prototype.initialize = function() {
14246 + var ind = this.filterManager.effectElements[0].p.v;
14247 + var elements = this.elem.comp.elements;
14248 + var i = 0;
14249 + var len = elements.length;
14250 + while (i < len) {
14251 + if (elements[i] && elements[i].data.ind === ind) this.setElementAsMask(this.elem, elements[i]);
14252 + i += 1;
14253 + }
14254 + this.initialized = true;
14255 + };
14256 + SVGMatte3Effect.prototype.renderFrame = function() {
14257 + if (!this.initialized) this.initialize();
14258 + };
14259 + function SVGGaussianBlurEffect(filter, filterManager, elem, id) {
14260 + filter.setAttribute("x", "-100%");
14261 + filter.setAttribute("y", "-100%");
14262 + filter.setAttribute("width", "300%");
14263 + filter.setAttribute("height", "300%");
14264 + this.filterManager = filterManager;
14265 + var feGaussianBlur = createNS("feGaussianBlur");
14266 + feGaussianBlur.setAttribute("result", id);
14267 + filter.appendChild(feGaussianBlur);
14268 + this.feGaussianBlur = feGaussianBlur;
14269 + }
14270 + SVGGaussianBlurEffect.prototype.renderFrame = function(forceRender) {
14271 + if (forceRender || this.filterManager._mdf) {
14272 + var sigma = this.filterManager.effectElements[0].p.v * .3;
14273 + var dimensions = this.filterManager.effectElements[1].p.v;
14274 + var sigmaX = dimensions == 3 ? 0 : sigma;
14275 + var sigmaY = dimensions == 2 ? 0 : sigma;
14276 + this.feGaussianBlur.setAttribute("stdDeviation", sigmaX + " " + sigmaY);
14277 + var edgeMode = this.filterManager.effectElements[2].p.v == 1 ? "wrap" : "duplicate";
14278 + this.feGaussianBlur.setAttribute("edgeMode", edgeMode);
14279 + }
14280 + };
14281 + function TransformEffect() {}
14282 + TransformEffect.prototype.init = function(effectsManager) {
14283 + this.effectsManager = effectsManager;
14284 + this.type = effectTypes.TRANSFORM_EFFECT;
14285 + this.matrix = new Matrix();
14286 + this.opacity = -1;
14287 + this._mdf = false;
14288 + this._opMdf = false;
14289 + };
14290 + TransformEffect.prototype.renderFrame = function(forceFrame) {
14291 + this._opMdf = false;
14292 + this._mdf = false;
14293 + if (forceFrame || this.effectsManager._mdf) {
14294 + var effectElements = this.effectsManager.effectElements;
14295 + var anchor = effectElements[0].p.v;
14296 + var position = effectElements[1].p.v;
14297 + var isUniformScale = effectElements[2].p.v === 1;
14298 + var scaleHeight = effectElements[3].p.v;
14299 + var scaleWidth = isUniformScale ? scaleHeight : effectElements[4].p.v;
14300 + var skew = effectElements[5].p.v;
14301 + var skewAxis = effectElements[6].p.v;
14302 + var rotation = effectElements[7].p.v;
14303 + this.matrix.reset();
14304 + this.matrix.translate(-anchor[0], -anchor[1], anchor[2]);
14305 + this.matrix.scale(scaleWidth * .01, scaleHeight * .01, 1);
14306 + this.matrix.rotate(-rotation * degToRads);
14307 + this.matrix.skewFromAxis(-skew * degToRads, (skewAxis + 90) * degToRads);
14308 + this.matrix.translate(position[0], position[1], 0);
14309 + this._mdf = true;
14310 + if (this.opacity !== effectElements[8].p.v) {
14311 + this.opacity = effectElements[8].p.v;
14312 + this._opMdf = true;
14313 + }
14314 + }
14315 + };
14316 + function SVGTransformEffect(_, filterManager) {
14317 + this.init(filterManager);
14318 + }
14319 + extendPrototype([TransformEffect], SVGTransformEffect);
14320 + function CVTransformEffect(effectsManager) {
14321 + this.init(effectsManager);
14322 + }
14323 + extendPrototype([TransformEffect], CVTransformEffect);
14324 + registerRenderer("canvas", CanvasRenderer);
14325 + registerRenderer("html", HybridRenderer);
14326 + registerRenderer("svg", SVGRenderer);
14327 + ShapeModifiers.registerModifier("tm", TrimModifier);
14328 + ShapeModifiers.registerModifier("pb", PuckerAndBloatModifier);
14329 + ShapeModifiers.registerModifier("rp", RepeaterModifier);
14330 + ShapeModifiers.registerModifier("rd", RoundCornersModifier);
14331 + ShapeModifiers.registerModifier("zz", ZigZagModifier);
14332 + ShapeModifiers.registerModifier("op", OffsetPathModifier);
14333 + setExpressionsPlugin(Expressions);
14334 + setExpressionInterfaces(getInterface);
14335 + initialize$1();
14336 + initialize();
14337 + registerEffect$1(20, SVGTintFilter, true);
14338 + registerEffect$1(21, SVGFillFilter, true);
14339 + registerEffect$1(22, SVGStrokeEffect, false);
14340 + registerEffect$1(23, SVGTritoneFilter, true);
14341 + registerEffect$1(24, SVGProLevelsFilter, true);
14342 + registerEffect$1(25, SVGDropShadowEffect, true);
14343 + registerEffect$1(28, SVGMatte3Effect, false);
14344 + registerEffect$1(29, SVGGaussianBlurEffect, true);
14345 + registerEffect$1(35, SVGTransformEffect, false);
14346 + registerEffect(35, CVTransformEffect);
14347 + return lottie;
14348 + }));
14349 + }));
14350 +
14351 +//#endregion
14352 +//#region node_modules/lottie-react/build/index.umd.js
14353 + var require_index_umd = /* @__PURE__ */ __commonJSMin(((exports, module) => {
14354 + (function(global, factory) {
14355 + typeof exports === "object" && typeof module !== "undefined" ? factory(exports, require_lottie(), (globalThis.React)) : typeof define === "function" && define.amd ? define([
14356 + "exports",
14357 + "lottie-web",
14358 + "react"
14359 + ], factory) : (global = typeof globalThis !== "undefined" ? globalThis : global || self, factory(global["lottie-react"] = {}, global.Lottie, global.React));
14360 + })(exports, (function(exports$1, lottie, React) {
14361 + "use strict";
14362 + function _interopDefaultLegacy(e) {
14363 + return e && typeof e === "object" && "default" in e ? e : { "default": e };
14364 + }
14365 + var lottie__default = /*#__PURE__*/ _interopDefaultLegacy(lottie);
14366 + var React__default = /*#__PURE__*/ _interopDefaultLegacy(React);
14367 + function _arrayLikeToArray(r, a) {
14368 + (null == a || a > r.length) && (a = r.length);
14369 + for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
14370 + return n;
14371 + }
14372 + function _arrayWithHoles(r) {
14373 + if (Array.isArray(r)) return r;
14374 + }
14375 + function _defineProperty(e, r, t) {
14376 + return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
14377 + value: t,
14378 + enumerable: !0,
14379 + configurable: !0,
14380 + writable: !0
14381 + }) : e[r] = t, e;
14382 + }
14383 + function _iterableToArrayLimit(r, l) {
14384 + var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
14385 + if (null != t) {
14386 + var e;
14387 + var n;
14388 + var i;
14389 + var u;
14390 + var a = [];
14391 + var f = !0;
14392 + var o = !1;
14393 + try {
14394 + if (i = (t = t.call(r)).next, 0 === l) {
14395 + if (Object(t) !== t) return;
14396 + f = !1;
14397 + } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
14398 + } catch (r) {
14399 + o = !0, n = r;
14400 + } finally {
14401 + try {
14402 + if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;
14403 + } finally {
14404 + if (o) throw n;
14405 + }
14406 + }
14407 + return a;
14408 + }
14409 + }
14410 + function _nonIterableRest() {
14411 + throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
14412 + }
14413 + function ownKeys(e, r) {
14414 + var t = Object.keys(e);
14415 + if (Object.getOwnPropertySymbols) {
14416 + var o = Object.getOwnPropertySymbols(e);
14417 + r && (o = o.filter(function(r) {
14418 + return Object.getOwnPropertyDescriptor(e, r).enumerable;
14419 + })), t.push.apply(t, o);
14420 + }
14421 + return t;
14422 + }
14423 + function _objectSpread2(e) {
14424 + for (var r = 1; r < arguments.length; r++) {
14425 + var t = null != arguments[r] ? arguments[r] : {};
14426 + r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {
14427 + _defineProperty(e, r, t[r]);
14428 + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {
14429 + Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
14430 + });
14431 + }
14432 + return e;
14433 + }
14434 + function _objectWithoutProperties(e, t) {
14435 + if (null == e) return {};
14436 + var o;
14437 + var r;
14438 + var i = _objectWithoutPropertiesLoose(e, t);
14439 + if (Object.getOwnPropertySymbols) {
14440 + var s = Object.getOwnPropertySymbols(e);
14441 + for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);
14442 + }
14443 + return i;
14444 + }
14445 + function _objectWithoutPropertiesLoose(r, e) {
14446 + if (null == r) return {};
14447 + var t = {};
14448 + for (var n in r) if ({}.hasOwnProperty.call(r, n)) {
14449 + if (e.includes(n)) continue;
14450 + t[n] = r[n];
14451 + }
14452 + return t;
14453 + }
14454 + function _slicedToArray(r, e) {
14455 + return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();
14456 + }
14457 + function _toPrimitive(t, r) {
14458 + if ("object" != typeof t || !t) return t;
14459 + var e = t[Symbol.toPrimitive];
14460 + if (void 0 !== e) {
14461 + var i = e.call(t, r || "default");
14462 + if ("object" != typeof i) return i;
14463 + throw new TypeError("@@toPrimitive must return a primitive value.");
14464 + }
14465 + return ("string" === r ? String : Number)(t);
14466 + }
14467 + function _toPropertyKey(t) {
14468 + var i = _toPrimitive(t, "string");
14469 + return "symbol" == typeof i ? i : i + "";
14470 + }
14471 + function _unsupportedIterableToArray(r, a) {
14472 + if (r) {
14473 + if ("string" == typeof r) return _arrayLikeToArray(r, a);
14474 + var t = {}.toString.call(r).slice(8, -1);
14475 + return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;
14476 + }
14477 + }
14478 + var _excluded$1 = [
14479 + "animationData",
14480 + "loop",
14481 + "autoplay",
14482 + "initialSegment",
14483 + "onComplete",
14484 + "onLoopComplete",
14485 + "onEnterFrame",
14486 + "onSegmentStart",
14487 + "onConfigReady",
14488 + "onDataReady",
14489 + "onDataFailed",
14490 + "onLoadedImages",
14491 + "onDOMLoaded",
14492 + "onDestroy",
14493 + "lottieRef",
14494 + "renderer",
14495 + "name",
14496 + "assetsPath",
14497 + "rendererSettings"
14498 + ];
14499 + var useLottie = function useLottie(props, style) {
14500 + var animationData = props.animationData;
14501 + var loop = props.loop;
14502 + var autoplay = props.autoplay;
14503 + var initialSegment = props.initialSegment;
14504 + var onComplete = props.onComplete;
14505 + var onLoopComplete = props.onLoopComplete;
14506 + var onEnterFrame = props.onEnterFrame;
14507 + var onSegmentStart = props.onSegmentStart;
14508 + var onConfigReady = props.onConfigReady;
14509 + var onDataReady = props.onDataReady;
14510 + var onDataFailed = props.onDataFailed;
14511 + var onLoadedImages = props.onLoadedImages;
14512 + var onDOMLoaded = props.onDOMLoaded;
14513 + var onDestroy = props.onDestroy;
14514 + props.lottieRef;
14515 + props.renderer;
14516 + props.name;
14517 + props.assetsPath;
14518 + props.rendererSettings;
14519 + var rest = _objectWithoutProperties(props, _excluded$1);
14520 + var _useState2 = _slicedToArray(React.useState(false), 2);
14521 + var animationLoaded = _useState2[0];
14522 + var setAnimationLoaded = _useState2[1];
14523 + var animationInstanceRef = React.useRef();
14524 + var animationContainer = React.useRef(null);
14525 + /**
14526 + * Play
14527 + */
14528 + var play = function play() {
14529 + var _a;
14530 + (_a = animationInstanceRef.current) === null || _a === void 0 || _a.play();
14531 + };
14532 + /**
14533 + * Stop
14534 + */
14535 + var stop = function stop() {
14536 + var _a;
14537 + (_a = animationInstanceRef.current) === null || _a === void 0 || _a.stop();
14538 + };
14539 + /**
14540 + * Pause
14541 + */
14542 + var pause = function pause() {
14543 + var _a;
14544 + (_a = animationInstanceRef.current) === null || _a === void 0 || _a.pause();
14545 + };
14546 + /**
14547 + * Set animation speed
14548 + * @param speed
14549 + */
14550 + var setSpeed = function setSpeed(speed) {
14551 + var _a;
14552 + (_a = animationInstanceRef.current) === null || _a === void 0 || _a.setSpeed(speed);
14553 + };
14554 + /**
14555 + * Got to frame and play
14556 + * @param value
14557 + * @param isFrame
14558 + */
14559 + var goToAndPlay = function goToAndPlay(value, isFrame) {
14560 + var _a;
14561 + (_a = animationInstanceRef.current) === null || _a === void 0 || _a.goToAndPlay(value, isFrame);
14562 + };
14563 + /**
14564 + * Got to frame and stop
14565 + * @param value
14566 + * @param isFrame
14567 + */
14568 + var goToAndStop = function goToAndStop(value, isFrame) {
14569 + var _a;
14570 + (_a = animationInstanceRef.current) === null || _a === void 0 || _a.goToAndStop(value, isFrame);
14571 + };
14572 + /**
14573 + * Set animation direction
14574 + * @param direction
14575 + */
14576 + var setDirection = function setDirection(direction) {
14577 + var _a;
14578 + (_a = animationInstanceRef.current) === null || _a === void 0 || _a.setDirection(direction);
14579 + };
14580 + /**
14581 + * Play animation segments
14582 + * @param segments
14583 + * @param forceFlag
14584 + */
14585 + var playSegments = function playSegments(segments, forceFlag) {
14586 + var _a;
14587 + (_a = animationInstanceRef.current) === null || _a === void 0 || _a.playSegments(segments, forceFlag);
14588 + };
14589 + /**
14590 + * Set sub frames
14591 + * @param useSubFrames
14592 + */
14593 + var setSubframe = function setSubframe(useSubFrames) {
14594 + var _a;
14595 + (_a = animationInstanceRef.current) === null || _a === void 0 || _a.setSubframe(useSubFrames);
14596 + };
14597 + /**
14598 + * Get animation duration
14599 + * @param inFrames
14600 + */
14601 + var getDuration = function getDuration(inFrames) {
14602 + var _a;
14603 + return (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.getDuration(inFrames);
14604 + };
14605 + /**
14606 + * Destroy animation
14607 + */
14608 + var destroy = function destroy() {
14609 + var _a;
14610 + (_a = animationInstanceRef.current) === null || _a === void 0 || _a.destroy();
14611 + animationInstanceRef.current = void 0;
14612 + };
14613 + /**
14614 + * Load a new animation, and if it's the case, destroy the previous one
14615 + * @param {Object} forcedConfigs
14616 + */
14617 + var loadAnimation = function loadAnimation() {
14618 + var forcedConfigs = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
14619 + var _a;
14620 + if (!animationContainer.current) return;
14621 + (_a = animationInstanceRef.current) === null || _a === void 0 || _a.destroy();
14622 + var config = _objectSpread2(_objectSpread2(_objectSpread2({}, props), forcedConfigs), {}, { container: animationContainer.current });
14623 + animationInstanceRef.current = lottie__default["default"].loadAnimation(config);
14624 + setAnimationLoaded(!!animationInstanceRef.current);
14625 + return function() {
14626 + var _a;
14627 + (_a = animationInstanceRef.current) === null || _a === void 0 || _a.destroy();
14628 + animationInstanceRef.current = void 0;
14629 + };
14630 + };
14631 + /**
14632 + * (Re)Initialize when animation data changed
14633 + */
14634 + React.useEffect(function() {
14635 + var onUnmount = loadAnimation();
14636 + return function() {
14637 + return onUnmount === null || onUnmount === void 0 ? void 0 : onUnmount();
14638 + };
14639 + }, [animationData, loop]);
14640 + React.useEffect(function() {
14641 + if (!animationInstanceRef.current) return;
14642 + animationInstanceRef.current.autoplay = !!autoplay;
14643 + }, [autoplay]);
14644 + React.useEffect(function() {
14645 + if (!animationInstanceRef.current) return;
14646 + if (!initialSegment) {
14647 + animationInstanceRef.current.resetSegments(true);
14648 + return;
14649 + }
14650 + if (!Array.isArray(initialSegment) || !initialSegment.length) return;
14651 + if (animationInstanceRef.current.currentRawFrame < initialSegment[0] || animationInstanceRef.current.currentRawFrame > initialSegment[1]) animationInstanceRef.current.currentRawFrame = initialSegment[0];
14652 + animationInstanceRef.current.setSegment(initialSegment[0], initialSegment[1]);
14653 + }, [initialSegment]);
14654 + /**
14655 + * Reinitialize listener on change
14656 + */
14657 + React.useEffect(function() {
14658 + var listeners = [
14659 + {
14660 + name: "complete",
14661 + handler: onComplete
14662 + },
14663 + {
14664 + name: "loopComplete",
14665 + handler: onLoopComplete
14666 + },
14667 + {
14668 + name: "enterFrame",
14669 + handler: onEnterFrame
14670 + },
14671 + {
14672 + name: "segmentStart",
14673 + handler: onSegmentStart
14674 + },
14675 + {
14676 + name: "config_ready",
14677 + handler: onConfigReady
14678 + },
14679 + {
14680 + name: "data_ready",
14681 + handler: onDataReady
14682 + },
14683 + {
14684 + name: "data_failed",
14685 + handler: onDataFailed
14686 + },
14687 + {
14688 + name: "loaded_images",
14689 + handler: onLoadedImages
14690 + },
14691 + {
14692 + name: "DOMLoaded",
14693 + handler: onDOMLoaded
14694 + },
14695 + {
14696 + name: "destroy",
14697 + handler: onDestroy
14698 + }
14699 + ].filter(function(listener) {
14700 + return listener.handler != null;
14701 + });
14702 + if (!listeners.length) return;
14703 + var deregisterList = listeners.map(
14704 + /**
14705 + * Handle the process of adding an event listener
14706 + * @param {Listener} listener
14707 + * @return {Function} Function that deregister the listener
14708 + */
14709 + function(listener) {
14710 + var _a;
14711 + (_a = animationInstanceRef.current) === null || _a === void 0 || _a.addEventListener(listener.name, listener.handler);
14712 + return function() {
14713 + var _a;
14714 + (_a = animationInstanceRef.current) === null || _a === void 0 || _a.removeEventListener(listener.name, listener.handler);
14715 + };
14716 + }
14717 + );
14718 + return function() {
14719 + deregisterList.forEach(function(deregister) {
14720 + return deregister();
14721 + });
14722 + };
14723 + }, [
14724 + onComplete,
14725 + onLoopComplete,
14726 + onEnterFrame,
14727 + onSegmentStart,
14728 + onConfigReady,
14729 + onDataReady,
14730 + onDataFailed,
14731 + onLoadedImages,
14732 + onDOMLoaded,
14733 + onDestroy
14734 + ]);
14735 + return {
14736 + View: /* @__PURE__ */ React__default["default"].createElement("div", _objectSpread2({
14737 + style,
14738 + ref: animationContainer
14739 + }, rest)),
14740 + play,
14741 + stop,
14742 + pause,
14743 + setSpeed,
14744 + goToAndStop,
14745 + goToAndPlay,
14746 + setDirection,
14747 + playSegments,
14748 + setSubframe,
14749 + getDuration,
14750 + destroy,
14751 + animationContainerRef: animationContainer,
14752 + animationLoaded,
14753 + animationItem: animationInstanceRef.current
14754 + };
14755 + };
14756 + function getContainerVisibility(container) {
14757 + var _container$getBoundin = container.getBoundingClientRect();
14758 + var top = _container$getBoundin.top;
14759 + var height = _container$getBoundin.height;
14760 + return (window.innerHeight - top) / (window.innerHeight + height);
14761 + }
14762 + function getContainerCursorPosition(container, cursorX, cursorY) {
14763 + var _container$getBoundin2 = container.getBoundingClientRect();
14764 + var top = _container$getBoundin2.top;
14765 + var left = _container$getBoundin2.left;
14766 + var width = _container$getBoundin2.width;
14767 + var height = _container$getBoundin2.height;
14768 + return {
14769 + x: (cursorX - left) / width,
14770 + y: (cursorY - top) / height
14771 + };
14772 + }
14773 + var useInitInteractivity = function useInitInteractivity(_ref) {
14774 + var wrapperRef = _ref.wrapperRef;
14775 + var animationItem = _ref.animationItem;
14776 + var mode = _ref.mode;
14777 + var actions = _ref.actions;
14778 + React.useEffect(function() {
14779 + var wrapper = wrapperRef.current;
14780 + if (!wrapper || !animationItem || !actions.length) return;
14781 + animationItem.stop();
14782 + var scrollModeHandler = function scrollModeHandler() {
14783 + var assignedSegment = null;
14784 + var scrollHandler = function scrollHandler() {
14785 + var currentPercent = getContainerVisibility(wrapper);
14786 + var action = actions.find(function(_ref2) {
14787 + var visibility = _ref2.visibility;
14788 + return visibility && currentPercent >= visibility[0] && currentPercent <= visibility[1];
14789 + });
14790 + if (!action) return;
14791 + if (action.type === "seek" && action.visibility && action.frames.length === 2) {
14792 + var frameToGo = action.frames[0] + Math.ceil((currentPercent - action.visibility[0]) / (action.visibility[1] - action.visibility[0]) * action.frames[1]);
14793 + //! goToAndStop must be relative to the start of the current segment
14794 + animationItem.goToAndStop(frameToGo - animationItem.firstFrame - 1, true);
14795 + }
14796 + if (action.type === "loop") {
14797 + if (assignedSegment === null) {
14798 + animationItem.playSegments(action.frames, true);
14799 + assignedSegment = action.frames;
14800 + } else if (assignedSegment !== action.frames) {
14801 + animationItem.playSegments(action.frames, true);
14802 + assignedSegment = action.frames;
14803 + } else if (animationItem.isPaused) {
14804 + animationItem.playSegments(action.frames, true);
14805 + assignedSegment = action.frames;
14806 + }
14807 + }
14808 + if (action.type === "play" && animationItem.isPaused) {
14809 + animationItem.resetSegments(true);
14810 + animationItem.play();
14811 + }
14812 + if (action.type === "stop") animationItem.goToAndStop(action.frames[0] - animationItem.firstFrame - 1, true);
14813 + };
14814 + document.addEventListener("scroll", scrollHandler);
14815 + return function() {
14816 + document.removeEventListener("scroll", scrollHandler);
14817 + };
14818 + };
14819 + var cursorModeHandler = function cursorModeHandler() {
14820 + var handleCursor = function handleCursor(_x, _y) {
14821 + var x = _x;
14822 + var y = _y;
14823 + if (x !== -1 && y !== -1) {
14824 + var pos = getContainerCursorPosition(wrapper, x, y);
14825 + x = pos.x;
14826 + y = pos.y;
14827 + }
14828 + var action = actions.find(function(_ref3) {
14829 + var position = _ref3.position;
14830 + if (position && Array.isArray(position.x) && Array.isArray(position.y)) return x >= position.x[0] && x <= position.x[1] && y >= position.y[0] && y <= position.y[1];
14831 + if (position && !Number.isNaN(position.x) && !Number.isNaN(position.y)) return x === position.x && y === position.y;
14832 + return false;
14833 + });
14834 + if (!action) return;
14835 + if (action.type === "seek" && action.position && Array.isArray(action.position.x) && Array.isArray(action.position.y) && action.frames.length === 2) {
14836 + var xPercent = (x - action.position.x[0]) / (action.position.x[1] - action.position.x[0]);
14837 + var yPercent = (y - action.position.y[0]) / (action.position.y[1] - action.position.y[0]);
14838 + animationItem.playSegments(action.frames, true);
14839 + animationItem.goToAndStop(Math.ceil((xPercent + yPercent) / 2 * (action.frames[1] - action.frames[0])), true);
14840 + }
14841 + if (action.type === "loop") animationItem.playSegments(action.frames, true);
14842 + if (action.type === "play") {
14843 + if (animationItem.isPaused) animationItem.resetSegments(false);
14844 + animationItem.playSegments(action.frames);
14845 + }
14846 + if (action.type === "stop") animationItem.goToAndStop(action.frames[0], true);
14847 + };
14848 + var mouseMoveHandler = function mouseMoveHandler(ev) {
14849 + handleCursor(ev.clientX, ev.clientY);
14850 + };
14851 + var mouseOutHandler = function mouseOutHandler() {
14852 + handleCursor(-1, -1);
14853 + };
14854 + wrapper.addEventListener("mousemove", mouseMoveHandler);
14855 + wrapper.addEventListener("mouseout", mouseOutHandler);
14856 + return function() {
14857 + wrapper.removeEventListener("mousemove", mouseMoveHandler);
14858 + wrapper.removeEventListener("mouseout", mouseOutHandler);
14859 + };
14860 + };
14861 + switch (mode) {
14862 + case "scroll": return scrollModeHandler();
14863 + case "cursor": return cursorModeHandler();
14864 + }
14865 + }, [mode, animationItem]);
14866 + };
14867 + var useLottieInteractivity = function useLottieInteractivity(_ref4) {
14868 + var actions = _ref4.actions;
14869 + var mode = _ref4.mode;
14870 + var lottieObj = _ref4.lottieObj;
14871 + var animationItem = lottieObj.animationItem;
14872 + var View = lottieObj.View;
14873 + var animationContainerRef = lottieObj.animationContainerRef;
14874 + useInitInteractivity({
14875 + actions,
14876 + animationItem,
14877 + mode,
14878 + wrapperRef: animationContainerRef
14879 + });
14880 + return View;
14881 + };
14882 + var _excluded = ["style", "interactivity"];
14883 + var Lottie = function Lottie(props) {
14884 + var _a;
14885 + var _b;
14886 + var _c;
14887 + var style = props.style;
14888 + var interactivity = props.interactivity;
14889 + /**
14890 + * Initialize the 'useLottie' hook
14891 + */
14892 + var _useLottie = useLottie(_objectWithoutProperties(props, _excluded), style);
14893 + var View = _useLottie.View;
14894 + var play = _useLottie.play;
14895 + var stop = _useLottie.stop;
14896 + var pause = _useLottie.pause;
14897 + var setSpeed = _useLottie.setSpeed;
14898 + var goToAndStop = _useLottie.goToAndStop;
14899 + var goToAndPlay = _useLottie.goToAndPlay;
14900 + var setDirection = _useLottie.setDirection;
14901 + var playSegments = _useLottie.playSegments;
14902 + var setSubframe = _useLottie.setSubframe;
14903 + var getDuration = _useLottie.getDuration;
14904 + var destroy = _useLottie.destroy;
14905 + var animationContainerRef = _useLottie.animationContainerRef;
14906 + var animationLoaded = _useLottie.animationLoaded;
14907 + var animationItem = _useLottie.animationItem;
14908 + /**
14909 + * Make the hook variables/methods available through the provided 'lottieRef'
14910 + */
14911 + React.useEffect(function() {
14912 + if (props.lottieRef) props.lottieRef.current = {
14913 + play,
14914 + stop,
14915 + pause,
14916 + setSpeed,
14917 + goToAndPlay,
14918 + goToAndStop,
14919 + setDirection,
14920 + playSegments,
14921 + setSubframe,
14922 + getDuration,
14923 + destroy,
14924 + animationContainerRef,
14925 + animationLoaded,
14926 + animationItem
14927 + };
14928 + }, [(_a = props.lottieRef) === null || _a === void 0 ? void 0 : _a.current]);
14929 + return useLottieInteractivity({
14930 + lottieObj: {
14931 + View,
14932 + play,
14933 + stop,
14934 + pause,
14935 + setSpeed,
14936 + goToAndStop,
14937 + goToAndPlay,
14938 + setDirection,
14939 + playSegments,
14940 + setSubframe,
14941 + getDuration,
14942 + destroy,
14943 + animationContainerRef,
14944 + animationLoaded,
14945 + animationItem
14946 + },
14947 + actions: (_b = interactivity === null || interactivity === void 0 ? void 0 : interactivity.actions) !== null && _b !== void 0 ? _b : [],
14948 + mode: (_c = interactivity === null || interactivity === void 0 ? void 0 : interactivity.mode) !== null && _c !== void 0 ? _c : "scroll"
14949 + });
14950 + };
14951 + Object.defineProperty(exports$1, "LottiePlayer", {
14952 + enumerable: true,
14953 + get: function() {
14954 + return lottie__default["default"];
14955 + }
14956 + });
14957 + exports$1["default"] = Lottie;
14958 + exports$1.useLottie = useLottie;
14959 + exports$1.useLottieInteractivity = useLottieInteractivity;
14960 + Object.defineProperty(exports$1, "__esModule", { value: true });
14961 + }));
14962 + }));
14963 +
14964 +//#endregion
14965 +//#region packages/packages/libs/editor-modal-shell/src/components/background-lottie.tsx
14966 + var import_index_umd = /* @__PURE__ */ __toESM(require_index_umd());
14967 + function BackgroundLottie({ animationData, loop = false, autoplay = true, zIndex = MODAL_Z_INDEX - 1, backgroundColor = "transparent", onComplete = () => {} }) {
14968 + const prefersReducedMotion = typeof window !== "undefined" && window.matchMedia?.("(prefers-reduced-motion: reduce)").matches;
14969 + (0, react.useEffect)(() => {
14970 + if (prefersReducedMotion) onComplete?.();
14971 + }, [prefersReducedMotion, onComplete]);
14972 + if (prefersReducedMotion) return null;
14973 + return /* @__PURE__ */ react.createElement(import_index_umd.default, {
14974 + animationData,
14975 + loop,
14976 + autoplay,
14977 + onComplete: loop ? void 0 : onComplete,
14978 + onDataFailed: onComplete,
14979 + rendererSettings: { preserveAspectRatio: "xMidYMid slice" },
14980 + style: {
14981 + position: "fixed",
14982 + inset: 0,
14983 + width: "100vw",
14984 + height: "100vh",
14985 + zIndex,
14986 + backgroundColor,
14987 + pointerEvents: "none"
14988 + }
14989 + });
14990 + }
14991 +
14992 +//#endregion
14993 +//#region packages/packages/libs/editor-modal-shell/src/hooks/use-autoplay-carousel.ts
14994 + var DEFAULT_INTERVAL_MS = 4e3;
14995 + function useAutoplayCarousel(items, intervalMs = DEFAULT_INTERVAL_MS) {
14996 + const [selectedItem, setSelectedItem] = (0, react.useState)(items[0]);
14997 + const [isAutoPlaying, setIsAutoPlaying] = (0, react.useState)(true);
14998 + const advanceToNextItem = (0, react.useCallback)(() => {
14999 + setSelectedItem((current) => {
15000 + return items[(items.indexOf(current) + 1) % items.length];
15001 + });
15002 + }, [items]);
15003 + (0, react.useEffect)(() => {
15004 + if (!isAutoPlaying) return;
15005 + const id = setInterval(advanceToNextItem, intervalMs);
15006 + return () => clearInterval(id);
15007 + }, [
15008 + isAutoPlaying,
15009 + advanceToNextItem,
15010 + intervalMs
15011 + ]);
15012 + return {
15013 + selectedItem,
15014 + selectItem: (0, react.useCallback)((item) => {
15015 + setSelectedItem(item);
15016 + setIsAutoPlaying(false);
15017 + }, [])
15018 + };
15019 + }
15020 +
15021 +//#endregion
15022 +//#region packages/packages/libs/editor-modal-shell/src/index.ts
15023 + var src_exports = /* @__PURE__ */ __exportAll({
15024 + BackgroundLottie: () => BackgroundLottie,
15025 + MODAL_Z_INDEX: () => MODAL_Z_INDEX,
15026 + ModalFooter: () => ModalFooter,
15027 + ModalHeader: () => ModalHeader,
15028 + ModalShell: () => ModalShell,
15029 + useAutoplayCarousel: () => useAutoplayCarousel,
15030 + useModalShell: () => useModalShell
15031 + });
15032 +
15033 +//#endregion
15034 +//#region \0elementor-package-library-entry
15035 + (window.elementorV2 = window.elementorV2 || {}).editorModalShell = src_exports;
15036 +
15037 +//#endregion
15038 +})(React, elementorV2.ui);
15039 +window.elementorV2.editorModalShell?.init?.();
3 15040 //# sourceMappingURL=editor-modal-shell.js.map