3dupdate
diff --git a/build/player/bodymovin.js b/build/player/bodymovin.js
index c1fb27e..2b6ff2a 100644
--- a/build/player/bodymovin.js
+++ b/build/player/bodymovin.js
@@ -1,3 +1,3 @@
-(function(window){"use strict";function Matrix(t){var e=this;e._t=e.transform,e.a=e.d=1,e.b=e.c=e.e=e.f=0,e.props=[1,0,0,1,0,0],e.cssParts=["matrix(","",")"],e.a1=e.b1=e.c1=e.d1=e.e1=e.f1=0,e.context=t,e.cos=e.sin=0,t&&t.setTransform(1,0,0,1,0,0)}function matrixManagerFunction(){var t=new Matrix,e=function(t,e,a,i,r,n,s,o,h){var m,p,l,d,c,u,f;return m=$M([[1,0,0,0],[0,Math.cos(t),Math.sin(-t),0],[0,Math.sin(t),Math.cos(t),0],[0,0,0,1]]),p=$M([[Math.cos(e),0,Math.sin(e),0],[0,1,0,0],[Math.sin(-e),0,Math.cos(e),0],[0,0,0,1]]),l=$M([[Math.cos(a),Math.sin(-a),0,0],[Math.sin(a),Math.cos(a),0,0],[0,0,1,0],[0,0,0,1]]),c=$M([[i,0,0,0],[0,r,0,0],[0,0,n,0],[0,0,0,1]]),u=m.x(p).x(l).x(c),u=u.transpose(),f=$M([[1,0,0,0],[0,1,0,0],[0,0,1,0],[s,o,h,1]]),u=u.x(f),d="matrix3d(",d+=u.e(1,1).toFixed(5)+","+u.e(1,2).toFixed(5)+","+u.e(1,3).toFixed(5)+","+u.e(1,4).toFixed(5)+",",d+=u.e(2,1).toFixed(5)+","+u.e(2,2).toFixed(5)+","+u.e(2,3).toFixed(5)+","+u.e(2,4).toFixed(5)+",",d+=u.e(3,1).toFixed(5)+","+u.e(3,2).toFixed(5)+","+u.e(3,3).toFixed(5)+","+u.e(3,4).toFixed(5)+",",d+=u.e(4,1).toFixed(5)+","+u.e(4,2).toFixed(5)+","+u.e(4,3).toFixed(5)+","+u.e(4,4).toFixed(5),d+=")"},a=function(e,a,i,r,n){return t.reset().translate(r,n).rotate(e).scale(a,i).toCSS()},i=function(e,a,i,r,n){return t.reset().translate(r,n).rotate(e).scale(a,i).toArray()},r=function(t){return a(t.r,t.s[0],t.s[1],t.p[0],t.p[1])},n=function(t,i){return i?e(-t.tr.r[0],t.tr.r[1],t.tr.r[2],t.tr.s[0],t.tr.s[1],t.tr.s[2],t.tr.p[0],t.tr.p[1],t.tr.p[2]):a(t.tr.r[2],t.tr.s[0],t.tr.s[1],t.tr.p[0],t.tr.p[1])},s=function(t,i){return i?e(-t.r[0],t.r[1],t.r[2],t.s[0],t.s[1],t.s[2],t.p[0],t.p[1],t.p[2]):a(t.r[2],t.s[0],t.s[1],t.p[0],t.p[1])},o=function(t,e){return e?null:i(t.r[2],t.s[0],t.s[1],t.p[0],t.p[1])};return{get2DMatrix:r,getMatrix:n,getMatrix2:s,getMatrixArray:o,getMatrixArrayFromParams:i,getMatrix2FromParams:a}}function styleDiv(t){t.style.position="absolute",t.style.top=0,t.style.left=0,t.style.display="block",t.style.verticalAlign="top",t.style.backfaceVisibility=t.style.webkitBackfaceVisibility="hidden",styleUnselectableDiv(t)}function styleUnselectableDiv(t){t.style.userSelect="none",t.style.MozUserSelect="none",t.style.webkitUserSelect="none",t.style.oUserSelect="none"}function randomString(t,e){void 0===e&&(e="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890");var a,i="";for(a=t;a>0;--a)i+=e[Math.round(Math.random()*(e.length-1))];return i}function componentToHex(t){var e=t.toString(16);return 1==e.length?"0"+e:e}function rgbToHex(t,e,a){return 0>t&&(t=0),0>e&&(e=0),0>a&&(a=0),"#"+colorMap[t]+colorMap[e]+colorMap[a]}function fillToRgba(t,e){if(!cachedColors[t]){var a=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);cachedColors[t]=parseInt(a[1],16)+","+parseInt(a[2],16)+","+parseInt(a[3],16)}return"rgba("+cachedColors[t]+","+e+")"}function createColorMap(){var t,e;for(t=0;256>t;t+=1)e=t.toString(16),colorMap[t]=1==e.length?"0"+e:e}function createElement(t,e,a){if(!e){var i=Object.create(t.prototype,a),r={};return i&&"[object Function]"===r.toString.call(i.init)&&i.init(),i}e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.prototype.parent=t.prototype}function defineDescriptor(t,e,a,i){var r={writable:!1,configurable:!1,enumerable:!1,value:a};if(i)for(var n in i)r[n]=i[n];var s={};t&&"[object Function]"===s.toString.call(t)&&(t=t.prototype),Object.defineProperty(t,e,r)}function defineAccessor(t,e,a){var i,r={enumerable:!1,configurable:!1,get:function(){return i},set:function(t){i=t}};if(a)for(var n in a)r[n]=a[n];var s={};t&&"[object Function]"===s.toString.call(t)&&(t=t.prototype),Object.defineProperty(t,e,r)}function bezFunction(){function t(t,e,a,i,r,n){return o.abs((a-t)*(n-e)-(r-t)*(i-e))<1e-5}function e(t){return n[t].fnc}function a(t,e,a,i,r){if(r||(r=("bez_"+t+"_"+e+"_"+a+"_"+i).replace(/\./g,"p")),n[r])return n[r];var s,o,h,m,p,l;return n[r]=function(r,n,d,c,u){for(var f,y=n/u,r=y,g=0;++g<14&&(h=3*t,o=3*(a-t)-h,s=1-h-o,f=r*(h+r*(o+r*s))-y,!(Math.abs(f)<.001));)r-=f/(h+r*(2*o+3*s*r));l=3*e,p=3*(i-e)-l,m=1-l-p;var v=r*(l+r*(p+r*m));return c*v+d},n[r]}function i(e,a,i,r){var n=(e.join("_")+"_"+a.join("_")+"_"+i.join("_")+"_"+r.join("_")).replace(/\./g,"p");if(s[n])return s[n];var o,h,m,p,l,d,c,u,f,y,g,v,x=500,C=0,E=null,b={points:[],segmentLength:0};for(t(e[0],e[1],a[0],a[1],i[0],i[1])&&t(e[0],e[1],a[0],a[1],r[0],r[1])&&(x=2),m=i.length,o=0;x>o;o+=1){for(v=[],y=o/(x-1),g=0,h=0;m>h;h+=1)p=e[h]+(i[h]-e[h])*y,l=i[h]+(r[h]-i[h])*y,d=r[h]+(a[h]-r[h])*y,c=p+(l-p)*y,u=l+(d-l)*y,f=c+(u-c)*y,v.push(f),null!==E&&(g+=Math.pow(v[h]-E[h],2));g=Math.sqrt(g),C+=g,b.points.push({partialLength:g,cumulatedLength:C,point:v}),E=v}return b.segmentLength=C,s[n]=b,b}function r(e){var a,i,r,n,s,o,h,m,p,l,d,c,u=e.s,f=e.e,y=e.to,g=e.ti,v=500,x=0,C=null,E={points:[],segmentLength:0};for(t(u[0],u[1],f[0],f[1],u[0]+y[0],u[1]+y[1])&&t(u[0],u[1],f[0],f[1],f[0]+g[0],f[1]+g[1])&&(v=2),r=y.length,a=0;v>a;a+=1){for(c=[],l=a/(v-1),d=0,i=0;r>i;i+=1)n=u[i]+y[i]*l,s=u[i]+y[i]+(f[i]+g[i]-(u[i]+y[i]))*l,o=f[i]+g[i]+-g[i]*l,h=n+(s-n)*l,m=s+(o-s)*l,p=h+(m-h)*l,c.push(p),null!==C&&(d+=Math.pow(c[i]-C[i],2));d=Math.sqrt(d),x+=d,E.points.push({partialLength:d,cumulatedLength:x,point:c}),C=c}E.segmentLength=x,e.bezierData=E}var n=[],s={},o=Math,h={getEasingCurve:a,getEasingCurveByIndex:e,drawBezierCurve:i,buildBezierData:r};return h}function dataFunctionManager(){function t(t,e,a){var i,r=s(t,e,a),n=[];for(i=0;e>i;i+=1)n.push(Math.floor(r[i]*u));return n}function e(t,e){var a,i,r,n=t.length;for(a=0;n>a;a+=1)if(void 0!==t[a].t)if(t[a].s instanceof Array)for(r=t[a].s.length,i=0;r>i;i+=1)t[a].s[i]*=e,t[a].e[i]*=e;else t[a].s&&(t[a].s*=e,t[a].e*=e);else t[a]=t[a]*e}function a(r){var s,o,h,m,p,l,d,c,u,f,y,v=r.length;for(d=0;v>d;d+=1){if(h=r[d],s=h.outPoint-h.startTime,o=h.startTime,h.layerName=n(h.layerName),h.parent&&(h.parent=n(h.parent)),h.renderedFrame={},h.renderedData={},m=[],p=-1,h.tm&&(h.tm=t(h.tm,s,o)),h.ks.o instanceof Array?e(h.ks.o,.01):h.ks.o/=100,h.ks.s instanceof Array?e(h.ks.s,.01):h.ks.s/=100,h.ks.r instanceof Array?e(h.ks.r,g):h.ks.r*=g,h.hasMask){var x=h.masksProperties;for(u=x.length,c=0;u>c;c+=1)if(x[c].pt.i)i(x[c].pt);else for(y=x[c].pt.length,f=0;y>f;f+=1)x[c].pt[f].s&&(i(x[c].pt[f].s[0]),i(x[c].pt[f].e[0]))}if("PreCompLayer"==h.type)a(h.layers);else if("ShapeLayer"==h.type)for(u=h.shapes.length,c=0;u>c;c+=1)if(l=h.shapes[c],l.renderedData={},l.tr.o instanceof Array?e(l.tr.o,.01):l.tr.o/=100,l.tr.s instanceof Array?e(l.tr.s,.01):l.tr.s/=100,l.tr.r instanceof Array?e(l.tr.r,g):l.tr.r*=g,l.fl&&(l.fl.o instanceof Array?e(l.fl.o,.01):l.fl.o*=.01),l.st&&(l.st.o instanceof Array?e(l.st.o,.01):l.st.o*=.01),l.ks)if(l.ks.i)i(l.ks);else for(y=l.ks.length,f=0;y>f;f+=1)l.ks[f].s&&(i(l.ks[f].s[0]),i(l.ks[f].e[0]))}}function i(t){var e,a=t.i.length;for(e=0;a>e;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 r(t){y[t._id]={data:t,renderedFrames:[]},u=t.animation.frameRate,a(t.animation.layers)}function n(t){return t=t.replace(/ /g,"_"),t=t.replace(/-/g,"_"),t=t.replace(/\./g,"_"),t=t.replace(/\//g,"_")}function s(t,e,a){var i,r,n=[];if(!(t instanceof Array)||null==t[0].t)return n.push(t),n;var s,o;n=[];var h,m,p,l=[];r=t.length;var d,c=1e3,u=[],f=[];for(i=0;r>i;i+=1)if(s=t[i],s.t-=a,s.to){var y,g,v,x,C,E,b,d,S,F,A=0,w=null,I={points:[],length:0};for(y=0;c>y;y+=1)F=[],d=y/(c-1),S=0,u=[],f=[],s.to.forEach(function(t,e){null==u[e]&&(u[e]=s.s[e]+s.to[e],f[e]=s.e[e]+s.ti[e]),g=s.s[e]+(u[e]-s.s[e])*d,v=u[e]+(f[e]-u[e])*d,x=f[e]+(s.e[e]-f[e])*d,C=g+(v-g)*d,E=v+(x-v)*d,b=C+(E-C)*d,F.push(b),null!==w&&(S+=Math.pow(F[e]-w[e],2))}),S=Math.sqrt(S),A+=S,I.points.push({partialLength:A,point:F}),w=F,s.bezierData=I;I.segmentLength=A}var k=0,M=0;for(i=0;e>i;i+=1){h=k;for(var D=!1;r-1>h;){if(s=t[h],o=t[h+1],i<s.t&&0==h){for(p=s.s.length,l=[],m=0;p>m;m+=1)l.push(s.s[m]);n.push(l),D=!0,k!=h&&(k=h,M=0);break}if(i>=s.t&&i<o.t){if(l=[],s.to){d=bez.getEasingCurve(s.o.x,s.o.y,s.i.x,s.i.y)("",i-s.t,0,1,o.t-s.t);var y,T,P,I=s.bezierData,z=I.segmentLength*d;for(m=M;m<I.points.length;){if(0==i||0==z||0==d){l=I.points[m].point,M=m;break}if(m==I.points.length-1)l=I.points[m].point;else if(z>I.points[m].partialLength&&z<I.points[m+1].partialLength){for(T=I.points[m].point.length,P=(z-I.points[m].partialLength)/(I.points[m+1].partialLength-I.points[m].partialLength),y=0;T>y;y+=1)l.push(I.points[m].point[y]+(I.points[m+1].point[y]-I.points[m].point[y])*P);M=m;break}m+=1}}else{var N,V,L,_;s.s.forEach(function(t,e){if(1!==s.h&&(s.o.x instanceof Array?(N=s.o.x[e],V=s.o.y[e],L=s.i.x[e],_=s.i.y[e]):(N=s.o.x,V=s.o.y,L=s.i.x,_=s.i.y),d=bez.getEasingCurve(N,V,L,_)("",i-s.t,0,1,o.t-s.t)),t.i){var a={i:[],o:[],v:[]};t.i.forEach(function(i,r){var n=[],o=[],h=[];i.forEach(function(a,i){1===s.h?(n.push(a),o.push(t.o[r][i]),h.push(t.v[r][i])):(n.push(a+(s.e[e].i[r][i]-a)*d),o.push(t.o[r][i]+(s.e[e].o[r][i]-t.o[r][i])*d),h.push(t.v[r][i]+(s.e[e].v[r][i]-t.v[r][i])*d))}),a.i.push(n),a.o.push(o),a.v.push(h)}),l.push(a)}else l.push(1===s.h?t:t+(s.e[e]-t)*d)})}n.push(l),D=!0,k!=h&&(k=h,M=0);break}h+=1}0==D&&(s=t[t.length-2],l=[],s.e.forEach(function(t){l.push(t)}),n.push(l))}for(h=n.length;e>h;)n.push(l),h+=1;return n}function o(t,e,a,i){var r,n,s,o,h,m;if(!t.length)return"p"==i.type?(x.px=t,x.py=t):"s"==i.type?(x.sx=t,x.sy=t):"r"==i.type&&(x.r=t),i.toArray?[t]:t;if(null==t[0].t)return"p"==i.type?(x.px=t[0],x.py=t[1]):"s"==i.type?(x.sx=t[0],x.sy=t[1]):"r"==i.type&&(x.r=t[0]),t;h=0,m=t.length-1;for(var p=1,l=!0;!(!l||(r=t[h],n=t[h+1],h==m-1&&e>=n.t-a)||n.t-a>e&&1==p);){if(n.t-a<e&&-1==p){h+=1,r=t[h],n=t[h+1];break}m-1>h&&1==p||h>0&&-1==p?h+=p:l=!1}r.to&&!r.bezierData&&bez.buildBezierData(r);var d,c,u,f=0;if("default"==i.type&&(s=[]),r.to){if(o=r.bezierData,e>=n.t-a)return"p"==i.type?(x.px=o.points[o.points.length-1].point[0],x.py=o.points[o.points.length-1].point[1]):"s"==i.type?(x.sx=o.points[o.points.length-1].point[0],x.sy=o.points[o.points.length-1].point[1]):"r"==i.type&&(x.r=o.points[o.points.length-1].point[0]),o.points[o.points.length-1].point;if(e<r.t-a)return"p"==i.type?(x.px=o.points[0].point[0],x.py=o.points[0].point[1]):"s"==i.type?(x.sx=o.points[0].point[0],x.sy=o.points[0].point[1]):"r"==i.type&&(x.r=o.points[0].point[0]),o.points[0].point;var y;r.__fnct?y=r.__fnct:(y=bez.getEasingCurve(r.o.x,r.o.y,r.i.x,r.i.y,r.n),r.__fnct=y),u=y("",e-(r.t-a),0,1,n.t-a-(r.t-a));var g,v=o.segmentLength*u,C=0;for(p=1,l=!0,I=o.points.length;l;){if(C+=o.points[f].partialLength*p,0==v||0==u){"p"==i.type?(x.px=o.points[f].point[0],x.py=o.points[f].point[1]):"s"==i.type?(x.sx=o.points[f].point[0],x.sy=o.points[f].point[1]):"r"==i.type?x.r=o.points[f].point[0]:s=o.points[f].point;break}if(f==o.points.length-1){"p"==i.type?(x.px=o.points[f].point[0],x.py=o.points[f].point[1]):"s"==i.type?(x.sx=o.points[f].point[0],x.sy=o.points[f].point[1]):"r"==i.type?x.r=o.points[f].point[0]:s=o.points[f].point;break}if(v>C&&v<C+o.points[f+1].partialLength){if(g=(v-C)/o.points[f+1].partialLength,"p"==i.type)x.px=o.points[f].point[0]+(o.points[f+1].point[0]-o.points[f].point[0])*g,x.py=o.points[f].point[1]+(o.points[f+1].point[1]-o.points[f].point[1])*g;else if("s"==i.type)x.sx=o.points[f].point[0]+(o.points[f+1].point[0]-o.points[f].point[0])*g,x.sy=o.points[f].point[1]+(o.points[f+1].point[1]-o.points[f].point[1])*g;else if("r"==i.type)x.r=o.points[f].point[0]+(o.points[f+1].point[0]-o.points[f].point[0])*g;else for(c=o.points[f].point.length,d=0;c>d;d+=1)s.push(o.points[f].point[d]+(o.points[f+1].point[d]-o.points[f].point[d])*g);break}I-1>f&&1==p||f>0&&-1==p?f+=p:l=!1}}else{var E,b,S,F,A=!1;for(m=r.s.length,h=0;m>h;h+=1){if(1!==r.h){r.o.x instanceof Array?(A=!0,E=r.o.x[h]?r.o.x[h]:r.o.x[0],b=r.o.y[h]?r.o.y[h]:r.o.y[0],S=r.i.x[h]?r.i.x[h]:r.i.x[0],F=r.i.y[h]?r.i.y[h]:r.i.y[0],r.__fnct||(r.__fnct=[])):(A=!1,E=r.o.x,b=r.o.y,S=r.i.x,F=r.i.y);var y;A?r.__fnct[h]?y=r.__fnct[h]:(y=bez.getEasingCurve(E,b,S,F),r.__fnct[h]=y):r.__fnct?y=r.__fnct:(y=bez.getEasingCurve(E,b,S,F),r.__fnct=y),u=y("",e-(r.t-a),0,1,n.t-a-(r.t-a)),e>=n.t-a?u=1:e<r.t-a&&(u=0)}if(r.s[h].i){var w={i:[],o:[],v:[]},I=r.s[h].i.length;for(f=0;I>f;f+=1){var k=[],M=[],D=[];for(c=r.s[h].i[f].length,d=0;c>d;d+=1)1===r.h?(k.push(r.s[h].i[f][d]),M.push(r.s[h].o[f][d]),D.push(r.s[h].v[f][d])):(k.push(r.s[h].i[f][d]+(r.e[h].i[f][d]-r.s[h].i[f][d])*u),M.push(r.s[h].o[f][d]+(r.e[h].o[f][d]-r.s[h].o[f][d])*u),D.push(r.s[h].v[f][d]+(r.e[h].v[f][d]-r.s[h].v[f][d])*u));w.i.push(k),w.o.push(M),w.v.push(D)}s.push(w)}else 1===r.h?"p"==i.type?0==h?x.px=r.s[h]:1==h&&(x.py=r.s[h]):"s"==i.type?0==h?x.sx=r.s[h]:1==h&&(x.sy=r.s[h]):"r"==i.type?x.r=r.s[h]:s.push(r.s[h]):"p"==i.type?0==h?x.px=r.s[h]+(r.e[h]-r.s[h])*u:1==h&&(x.py=r.s[h]+(r.e[h]-r.s[h])*u):"s"==i.type?0==h?x.sx=r.s[h]+(r.e[h]-r.s[h])*u:1==h&&(x.sy=r.s[h]+(r.e[h]-r.s[h])*u):"r"==i.type?x.r=r.s[h]+(r.e[h]-r.s[h])*u:s.push(r.s[h]+(r.e[h]-r.s[h])*u)}}return s}function h(t,e){var a,i,r,n,s,o,h="";if(!(t instanceof Array)){for(a=t.v,i=t.o,r=t.i,o=a.length,h+="M"+a[0].join(","),s=1;o>s;s++)h+=" C"+i[s-1].join(",")+" "+r[s].join(",")+" "+a[s].join(",");return e!==!1&&(h+=" C"+i[s-1].join(",")+" "+r[0].join(",")+" "+a[0].join(",")),h}var m,p=t.length;for(h="",m=0;p>m;m+=1){for(n=t[m],a=n.v,i=n.o,r=n.i,o=a.length,h+="M"+a[0].join(","),s=1;o>s;s++)h+=" C"+i[s-1].join(",")+" "+r[s].join(",")+" "+a[s].join(",");e!==!1&&(h+=" C"+i[s-1].join(",")+" "+r[0].join(",")+" "+a[0].join(","))}return h}function m(t,e,a){var i,r,n,s,l,d,c,u,y,g,C,E,b,S,F,A,w,I,k,M,D,T={},P=t.length;for(M=0;P>M;M+=1)if(D=t[M],F=e-D.startTime,!D.an[F]){if(i={},v.arrayFlag=!1,v.type="default",i.a=o(D.ks.a,F,D.startTime,v),i.o=o(D.ks.o,F,D.startTime,v),v.arrayFlag=!1,v.type="p",o(D.ks.p,F,D.startTime,v),v.arrayFlag=!0,v.type="r",o(D.ks.r,F,D.startTime,v),v.arrayFlag=!0,v.type="s",o(D.ks.s,F,D.startTime,v),I={},I.an={tr:i},v.arrayFlag=!1,v.type="default","canvas"==a?I.an.matrixArray=f.getMatrixArrayFromParams(x.r,x.sx,x.sy,x.px,x.py):I.an.matrixValue=f.getMatrix2FromParams(x.r,x.sx,x.sy,x.px,x.py)+"translate("+-i.a[0]+" "+-i.a[1]+")",D.renderedData[F]=I,D.hasMask)for(r=D.masksProperties,w=r.length,A=0;w>A;A+=1)r[A].pathStrings||(r[A].pathStrings=[],r[A].pathVertices=[],r[A].opacity=[]),n=o(r[A].pt,F,D.startTime,v),r[A].pathVertices[F]=n instanceof Array?n:[n],"svg"==a&&(r[A].pathStrings[F]=h(n,r[A].cl)),r[A].opacity[F]=o(r[A].o,F,D.startTime,v),r[A].opacity[F]=r[A].opacity[F]instanceof Array?r[A].opacity[F][0]/100:r[A].opacity[F]/100;if("PreCompLayer"==D.type)s=D.tm?D.tm[F]<0?0:D.tm[F]:F,m(D.layers,s,a);else if("ShapeLayer"==D.type)for(w=D.shapes.length,A=0;w>A;A+=1){if(k={},l=D.shapes[A],l.renderedData[F]=k,l._created||(l.an.tr=[],l.an.renderedFrame={},l.ks?l.an.path=[]:l.el?l.an.ell=[]:l.rc&&(l.an.rect=[]),l.fl&&(l.an.fill=[]),l.st&&(l.an.stroke=[])),l.trim&&!l._created&&(l.trim.an=[]),l.fl&&(c=o(l.fl.c,F,D.startTime,v),d=o(l.fl.o,F,D.startTime,v),k.fill={opacity:d instanceof Array?d[0]:d},"canvas"==a?(p(c),k.fill.color=c):k.fill.color=rgbToHex(Math.round(c[0]),Math.round(c[1]),Math.round(c[2]))),l.ks?(u=o(l.ks,F,D.startTime,v),k.path={pathNodes:u,closed:l.closed},"svg"==a&&(k.path.pathString=h(u,l.closed))):l.el?(E=o(l.el.p,F,D.startTime,v),b=o(l.el.s,F,D.startTime,v),k.ell={p:E,size:b}):l.rc&&(E=o(l.rc.p,F,D.startTime,v),b=o(l.rc.s,F,D.startTime,v),S=o(l.rc.r,F,D.startTime,v),k.rect={position:E,size:b,roundness:S}),l.st&&(y=o(l.st.c,F,D.startTime,v),g=o(l.st.o,F,D.startTime,v),C=o(l.st.w,F,D.startTime,v),k.stroke={opacity:g instanceof Array?g[0]:g,width:C instanceof Array?C[0]:C},"canvas"==a?(p(y),k.stroke.color=y):k.stroke.color=rgbToHex(Math.round(y[0]),Math.round(y[1]),Math.round(y[2]))),T={},T.a=o(l.tr.a,F,D.startTime,v),T.o=o(l.tr.o,F,D.startTime,v),v.arrayFlag=!0,v.type="s",o(l.tr.s,F,D.startTime,v),v.arrayFlag=!0,v.type="r",o(l.tr.r,F,D.startTime,v),v.arrayFlag=!1,v.type="p",o(l.tr.p,F,D.startTime,v),v.arrayFlag=!1,v.type="default","canvas"==a?T.mtArr=f.getMatrixArrayFromParams(x.r,x.sx,x.sy,x.px,x.py):T.mt=f.getMatrix2FromParams(x.r,x.sx,x.sy,x.px,x.py),l.an.tr[F]=T,k.tr=T,l.trim){var z=o(l.trim.s,F,D.startTime,v),N=o(l.trim.e,F,D.startTime,v),V=o(l.trim.o,F,D.startTime,v);k.trim={s:z,e:N,o:V}}l._created||(l._created=!0)}}}function p(t){var e,a=t.length;for(e=0;a>e;e+=1)t[e]=Math.round(t[e])}function l(t,e){for(var a=1;a>0;){if(e+=1,e>=t.data.animation.totalFrames){t.renderFinished=!0;break}t.renderedFrames[e]||(d(t.data._id,e),a-=1)}}function d(t,e){return 2==y[t].renderedFrames[e]?void(y[t].renderFinished||l(y[t],e)):(y[t].renderedFrames[e]=2,void m(y[t].data.animation.layers,e,y[t].data._animType))}function c(t){var e,a=y[t].data,i=a.animation.totalFrames,r=[];for(e=0;i>e;e+=1)r.push({num:e,data:d(t,e)})}var u=0,f=new MatrixManager,y={},g=Math.PI/180,v={arrayFlag:!1},x={r:0,sx:1,sy:1,px:1,py:1},C={};return C.completeData=r,C.renderFrame=d,C.renderAllFrames=c,C}function SVGRenderer(t){this.animationItem=t,this.layers=null,this.lastFrame=-1}function CanvasRenderer(t,e){this.animationItem=t,this.renderConfig=e?e:{clearCanvas:!0,context:null,scaleMode:"fit"},this.lastFrame=-1}function MaskElement(){}function ICompElement(t,e){this.parent.constructor.call(this,t,e),this.layers=t.layers}function IImageElement(t,e){this.animationItem=e,this.assets=this.animationItem.getAssets(),this.path=this.animationItem.getPath(),this.parent.constructor.call(this,t,e)}function IShapeElement(t,e){this.shapes=[],this.parent.constructor.call(this,t,e)}function ShapeItemElement(t){this.data=t,this.shapeG=document.createElementNS(svgNS,"g"),this.pathLength=0,this.cachedData=[],this.renderedFrame={path:"",stroke:{},fill:{},tr:{a:[]},trim:{},ellipse:{},rect:{}},"pathShape"===this.data.type?this.shape=document.createElementNS(svgNS,"path"):"rectShape"===this.data.type?this.shape=document.createElementNS(svgNS,"rect"):"ellipseShape"===this.data.type?(this.shape=document.createElementNS(svgNS,"ellipse"),this.data.trim&&this.adjustTrim()):this.shape=document.createElementNS(svgNS,"path"),this.data.trim?this.shape.setAttribute("stroke-linecap","round"):(this.shape.setAttribute("stroke-linejoin","round"),this.shape.setAttribute("stroke-linecap","round")),this.data.renderedData||(this.data.renderedData={}),this.shape.setAttribute("name",this.data.name),styleUnselectableDiv(this.shapeG),styleUnselectableDiv(this.shape),this.shapeG.appendChild(this.shape)}function ISolidElement(t,e){this.parent.constructor.call(this,t,e)}function ITextElement(t,e){this.parent.constructor.call(this,t,e)}function CVBaseElement(t,e){this.renderer=e,this.data=t,this.currentAnimData=null,this.renderFrame=!1,this.init()}function CVCompElement(t,e){this.parent.constructor.call(this,t,e),this.layers=t.layers}function CVImageElement(t,e){this.renderer=e,this.animationItem=e.animationItem,this.assets=this.animationItem.getAssets(),this.path=this.animationItem.getPath(),this.parent.constructor.call(this,t,e),this.animationItem.pendingElements+=1}function CVShapeElement(t,e){this.shapes=[],this.parent.constructor.call(this,t,e)}function CVShapeItemElement(t,e){this.data=t,this.renderer=e,this.frameNum=-1,this.renderedPaths={},this.trims=[]}function CVSolidElement(t,e){this.parent.constructor.call(this,t,e)}function CVTextElement(t,e){this.parent.constructor.call(this,t,e)}function CVMaskElement(){}var svgNS="http://www.w3.org/2000/svg";Matrix.prototype={concat:function(t){return this.clone()._t(t.a,t.b,t.c,t.d,t.e,t.f)},flipX:function(){return this._t(-1,0,0,1,0,0)},flipY:function(){return this._t(1,0,0,-1,0,0)},reflectVector:function(t,e){var a=this.applyToPoint(0,1),i=2*(a.x*t+a.y*e);return t-=i*a.x,e-=i*a.y,{x:t,y:e}},reset:function(){return this.setTransform(1,0,0,1,0,0)},rotate:function(t){return 0==t?this:(this.cos=Math.cos(t),this.sin=Math.sin(t),this._t(this.cos,this.sin,-this.sin,this.cos,0,0))},rotateFromVector:function(t,e){return this.rotate(Math.atan2(e,t))},rotateDeg:function(t){return this.rotate(t*Math.PI/180)},scaleU:function(t){return this._t(t,0,0,t,0,0)},scale:function(t,e){return 1==t&&1==e?this:this._t(t,0,0,e,0,0)},scaleX:function(t){return this._t(t,0,0,1,0,0)},scaleY:function(t){return this._t(1,0,0,t,0,0)},shear:function(t,e){return this._t(1,e,t,1,0,0)},shearX:function(t){return this._t(1,0,t,1,0,0)},shearY:function(t){return this._t(1,t,0,1,0,0)},skew:function(t,e){return this.shear(Math.tan(t),Math.tan(e))},skewX:function(t){return this.shearX(Math.tan(t))},skewY:function(t){return this.shearY(Math.tan(t))},setTransform:function(t,e,a,i,r,n){return this.props[0]=t,this.props[1]=e,this.props[2]=a,this.props[3]=i,this.props[4]=r,this.props[5]=n,this._x()},translate:function(t,e){return this._t(1,0,0,1,t,e)},translateX:function(t){return this._t(1,0,0,1,t,0)},translateY:function(t){return this._t(1,0,0,1,0,t)},transform:function(t,e,a,i,r,n){return this.a1=this.props[0],this.b1=this.props[1],this.c1=this.props[2],this.d1=this.props[3],this.e1=this.props[4],this.f1=this.props[5],this.props[0]=this.a1*t+this.c1*e,this.props[1]=this.b1*t+this.d1*e,this.props[2]=this.a1*a+this.c1*i,this.props[3]=this.b1*a+this.d1*i,this.props[4]=this.a1*r+this.c1*n+this.e1,this.props[5]=this.b1*r+this.d1*n+this.f1,this._x()},divide:function(t){if(!t.isInvertible())throw"Input matrix is not invertible";var e=t.inverse();return this._t(e.a,e.b,e.c,e.d,e.e,e.f)},divideScalar:function(t){var e=this;return e.a/=t,e.b/=t,e.c/=t,e.d/=t,e.e/=t,e.f/=t,e._x()},inverse:function(){if(this.isIdentity())return new Matrix;if(this.isInvertible()){var t=this,e=t.a,a=t.b,i=t.c,r=t.d,n=t.e,s=t.f,o=new Matrix,h=e*r-a*i;return o.a=r/h,o.b=-a/h,o.c=-i/h,o.d=e/h,o.e=(i*s-r*n)/h,o.f=-(e*s-a*n)/h,o}throw"Matrix is not invertible."},interpolate:function(t,e,a){var i=this,r=a?new Matrix(a):new Matrix;return r.a=i.a+(t.a-i.a)*e,r.b=i.b+(t.b-i.b)*e,r.c=i.c+(t.c-i.c)*e,r.d=i.d+(t.d-i.d)*e,r.e=i.e+(t.e-i.e)*e,r.f=i.f+(t.f-i.f)*e,r._x()},interpolateAnim:function(t,e,a){var i=this,r=a?new Matrix(a):new Matrix,n=i.decompose(),s=t.decompose(),o=n.rotation+(s.rotation-n.rotation)*e,h=n.translate.x+(s.translate.x-n.translate.x)*e,m=n.translate.y+(s.translate.y-n.translate.y)*e,p=n.scale.x+(s.scale.x-n.scale.x)*e,l=n.scale.y+(s.scale.y-n.scale.y)*e;return r.translate(h,m),r.rotate(o),r.scale(p,l),r._x()},decompose:function(t){var e=this,a=e.a,i=e.b,r=e.c,n=e.d,s=Math.acos,o=Math.atan,h=Math.sqrt,m=Math.PI,p={x:e.e,y:e.f},l=0,d={x:1,y:1},c={x:0,y:0},u=a*n-i*r;if(t)a?(c={x:o(r/a),y:o(i/a)},d={x:a,y:u/a}):i?(l=.5*m,d={x:i,y:u/i},c.x=o(n/i)):(d={x:r,y:n},c.x=.25*m);else if(a||i){var f=h(a*a+i*i);l=i>0?s(a/f):-s(a/f),d={x:f,y:u/f},c.x=o((a*r+i*n)/(f*f))}else if(r||n){var y=h(r*r+n*n);l=.5*m-(n>0?s(-r/y):-s(r/y)),d={x:u/y,y:y},c.y=o((a*r+i*n)/(y*y))}else d={x:0,y:0};return{scale:d,translate:p,rotation:l,skew:c}},determinant:function(){return this.a*this.d-this.b*this.c},applyToPoint:function(t,e){var a=this;return{x:t*a.a+e*a.c+a.e,y:t*a.b+e*a.d+a.f}},applyToArray:function(t){var e,a,i=0,r=[];if("number"==typeof t[0])for(a=t.length;a>i;)e=this.applyToPoint(t[i++],t[i++]),r.push(e.x,e.y);else for(;e=t[i];i++)r.push(this.applyToPoint(e.x,e.y));return r},applyToTypedArray:function(t,e){for(var a,i=0,r=t.length,n=e?new Float64Array(r):new Float32Array(r);r>i;)a=this.applyToPoint(t[i],t[i+1]),n[i++]=a.x,n[i++]=a.y;return n},applyToContext:function(t){var e=this;return t.setTransform(e.a,e.b,e.c,e.d,e.e,e.f),e},isIdentity:function(){var t=this;return t._q(t.a,1)&&t._q(t.b,0)&&t._q(t.c,0)&&t._q(t.d,1)&&t._q(t.e,0)&&t._q(t.f,0)},isInvertible:function(){return!this._q(this.determinant(),0)},isValid:function(){return!this._q(this.a*this.d,0)},clone:function(t){var e=this,a=new Matrix;return a.a=e.a,a.b=e.b,a.c=e.c,a.d=e.d,a.e=e.e,a.f=e.f,t||(a.context=e.context),a},isEqual:function(t){var e=this,a=e._q;return a(e.a,t.a)&&a(e.b,t.b)&&a(e.c,t.c)&&a(e.d,t.d)&&a(e.e,t.e)&&a(e.f,t.f)},toArray:function(){return[this.props[0],this.props[1],this.props[2],this.props[3],this.props[4],this.props[5]]},toCSS:function(){return this.cssParts[1]=this.props.join(","),this.cssParts.join("")},toJSON:function(){var t=this;return'{"a":'+t.a+',"b":'+t.b+',"c":'+t.c+',"d":'+t.d+',"e":'+t.e+',"f":'+t.f+"}"},toString:function(){return""+this.toArray()},_q:function(t,e){return Math.abs(t-e)<1e-14},_x:function(){return this.context&&this.context.setTransform(this.a,this.b,this.c,this.d,this.e,this.f),this}};var MatrixManager=matrixManagerFunction;!function(){for(var t=0,e=["ms","moz","webkit","o"],a=0;a<e.length&&!window.requestAnimationFrame;++a)window.requestAnimationFrame=window[e[a]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[e[a]+"CancelAnimationFrame"]||window[e[a]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(e){var a=(new Date).getTime(),i=Math.max(0,16-(a-t)),r=window.setTimeout(function(){e(a+i)},i);return t=a+i,r}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(t){clearTimeout(t)})}();var subframeEnabled=!1,supportsPath2D="function"==typeof Path2D,cachedColors={},colorMap=[],body,fillColorToString=function(){var t=[];return function(e,a){return t[e[0]]||(t[e[0]]=[]),t[e[0]][e[1]]||(t[e[0]][e[1]]=[]),t[e[0]][e[1]][e[2]]||(void 0!=a&&(e[3]=a),t[e[0]][e[1]][e[2]]="rgba("+e.join(",")+")"),t[e[0]][e[1]][e[2]]}}();createColorMap(),function(t){function e(){this.commandArrays=[]}void 0==CanvasRenderingContext2D.prototype.ellipse&&(CanvasRenderingContext2D.prototype.ellipse=function(t,e,a,i,r,n,s,o){this.save(),this.translate(t,e),this.rotate(r),this.scale(a,i),this.arc(0,0,1,n,s,o),this.restore()}),supportsPath2D||(e.prototype.moveTo=function(t,e){this.commandArrays.push({type:"move",coord:[t,e]})},e.prototype.lineTo=function(t,e){this.commandArrays.push({type:"line",coord:[t,e]})},e.prototype.bezierCurveTo=function(t,e,a,i,r,n){this.commandArrays.push({type:"bezierCurve",coord:[t,e,a,i,r,n]})},e.prototype.drawToContext=function(t){var e,a,i=this.commandArrays.length;for(t.beginPath(),a=0;i>a;a+=1)switch(e=this.commandArrays[a],e.type){case"move":t.moveTo(e.coord[0],e.coord[1]);break;case"line":t.lineTo(e.coord[0],e.coord[1]);break;case"bezierCurve":t.bezierCurveTo(e.coord[0],e.coord[1],e.coord[2],e.coord[3],e.coord[4],e.coord[5])}},t.Path2D=e)}(window);var bez=bezFunction(),dataManager=dataFunctionManager();SVGRenderer.prototype.buildItems=function(t){var e,a=0,i=t.length;for(e=0;i>e;e++)"StillLayer"==t[e].type?(a++,this.createImage(t[e])):"PreCompLayer"==t[e].type?this.createComp(t[e]):"SolidLayer"==t[e].type?this.createSolid(t[e]):"ShapeLayer"==t[e].type?this.createShape(t[e]):"TextLayer"==t[e].type?this.createText(t[e]):console.log("NO TYPE: ",t[e])},SVGRenderer.prototype.createShape=function(t){t.element=new IShapeElement(t,this.animationItem)},SVGRenderer.prototype.createText=function(t){t.element=new ITextElement(t,this.animationItem)},SVGRenderer.prototype.createImage=function(t){t.element=new IImageElement(t,this.animationItem)},SVGRenderer.prototype.createComp=function(t){t.element=new ICompElement(t,this.animationItem),this.buildItems(t.layers,t.element.getType())},SVGRenderer.prototype.createSolid=function(t){t.element=new ISolidElement(t,this.animationItem)},SVGRenderer.prototype.configAnimation=function(t){this.animationItem.container=document.createElementNS(svgNS,"svg"),this.animationItem.container.setAttribute("xmlns","http://www.w3.org/2000/svg"),this.animationItem.container.setAttribute("width",t.animation.compWidth),this.animationItem.container.setAttribute("height",t.animation.compHeight),this.animationItem.container.setAttribute("viewBox","0 0 "+t.animation.compWidth+" "+t.animation.compHeight),this.animationItem.container.setAttribute("preserveAspectRatio","xMidYMid meet"),this.animationItem.container.style.width="100%",this.animationItem.container.style.height="100%",this.animationItem.container.style.transformOrigin=this.animationItem.container.style.mozTransformOrigin=this.animationItem.container.style.webkitTransformOrigin=this.animationItem.container.style["-webkit-transform"]="0px 0px 0px",this.animationItem.wrapper.appendChild(this.animationItem.container);var e=document.createElementNS(svgNS,"defs");this.animationItem.container.appendChild(e);var a=document.createElementNS(svgNS,"clipPath"),i=document.createElementNS(svgNS,"rect");i.setAttribute("width",t.animation.compWidth),i.setAttribute("height",t.animation.compHeight),i.setAttribute("x",0),i.setAttribute("y",0),a.setAttribute("id","animationMask"),a.appendChild(i);var r=document.createElementNS(svgNS,"g");r.setAttribute("clip-path","url(#animationMask)"),this.animationItem.container.appendChild(r),e.appendChild(a),this.animationItem.container=r,this.layers=t.animation.layers},SVGRenderer.prototype.buildStage=function(t,e){var a,i,r=e.length;for(a=r-1;a>=0;a--){if(i=e[a],i.parent){this.buildItemParenting(i,e,i.parent);var n=i.element.getDomElement();n.setAttribute("data-layer-name",i.layerName),t.appendChild(n),i.element.setMainElement(n)}else i.element.getDomElement().setAttribute("data-layer-name",i.layerName),t.appendChild(i.element.getDomElement()),i.element.setMainElement(i.element.getDomElement());"PreCompLayer"==i.type&&this.buildStage(i.element.getComposingElement(),i.layers,i.element.getType())}},SVGRenderer.prototype.buildItemParenting=function(t,e,a){t.parents||(t.parents=[]);for(var i=0,r=e.length;r>i;){if(e[i].layerName==a){t.parents.push({elem:e[i]}),e[i].parent&&this.buildItemParenting(t,e,e[i].parent);break}i+=1}},SVGRenderer.prototype.updateContainerSize=function(){},SVGRenderer.prototype.renderFrame=function(t){if(this.lastFrame!=t){this.lastFrame=t;var e,a=this.layers.length;for(e=0;a>e;e++)this.layers[e].element.prepareFrame(t-this.layers[e].startTime);for(e=0;a>e;e++)this.layers[e].element.renderFrame(t-this.layers[e].startTime)}},CanvasRenderer.prototype.buildItems=function(t){var e,a=0,i=t.length;for(e=0;i>e;e++)"StillLayer"==t[e].type?(a++,this.createImage(t[e])):"PreCompLayer"==t[e].type?this.createComp(t[e]):"SolidLayer"==t[e].type?this.createSolid(t[e]):"ShapeLayer"==t[e].type?this.createShape(t[e]):"TextLayer"==t[e].type?this.createText(t[e]):(this.createBase(t[e]),console.log("NO TYPE: ",t[e]))},CanvasRenderer.prototype.createBase=function(t){t.element=new CVBaseElement(t,this)},CanvasRenderer.prototype.createShape=function(t){t.element=new CVShapeElement(t,this)},CanvasRenderer.prototype.createText=function(t){t.element=new CVTextElement(t,this)},CanvasRenderer.prototype.createImage=function(t){t.element=new CVImageElement(t,this)},CanvasRenderer.prototype.createComp=function(t){t.element=new CVCompElement(t,this),this.buildItems(t.layers)},CanvasRenderer.prototype.createSolid=function(t){t.element=new CVSolidElement(t,this)},CanvasRenderer.prototype.configAnimation=function(t){this.animationItem.wrapper?(this.animationItem.container=document.createElement("canvas"),this.animationItem.container.style.width="100%",this.animationItem.container.style.height="100%",this.animationItem.container.style.transformOrigin=this.animationItem.container.style.mozTransformOrigin=this.animationItem.container.style.webkitTransformOrigin=this.animationItem.container.style["-webkit-transform"]="0px 0px 0px",this.animationItem.wrapper.appendChild(this.animationItem.container),this.canvasContext=this.animationItem.container.getContext("2d")):this.canvasContext=this.renderConfig.context,this.layers=t.animation.layers,this.transformCanvas={},this.transformCanvas.w=t.animation.compWidth,this.transformCanvas.h=t.animation.compHeight,this.updateContainerSize()},CanvasRenderer.prototype.updateContainerSize=function(){if(this.animationItem.wrapper&&this.animationItem.container){var t=this.animationItem.wrapper.offsetWidth,e=this.animationItem.wrapper.offsetHeight;this.animationItem.container.setAttribute("width",t),this.animationItem.container.setAttribute("height",e)}else var t=this.canvasContext.canvas.width,e=this.canvasContext.canvas.height;if("fit"==this.renderConfig.scaleMode){var a=t/e,i=this.transformCanvas.w/this.transformCanvas.h;i>a?(this.transformCanvas.sx=t/this.transformCanvas.w,this.transformCanvas.sy=t/this.transformCanvas.w,this.transformCanvas.tx=0,this.transformCanvas.ty=(e-this.transformCanvas.h*(t/this.transformCanvas.w))/2):(this.transformCanvas.sx=e/this.transformCanvas.h,this.transformCanvas.sy=e/this.transformCanvas.h,this.transformCanvas.tx=(t-this.transformCanvas.w*(e/this.transformCanvas.h))/2,this.transformCanvas.ty=0)
-}else this.transformCanvas.sx=1,this.transformCanvas.sy=1,this.transformCanvas.tx=0,this.transformCanvas.ty=0},CanvasRenderer.prototype.buildStage=function(t,e){var a,i,r=e.length;for(a=r-1;a>=0;a--)i=e[a],i.parent&&(i.parentHierarchy=[],this.buildItemHierarchy(i,e,i.parent)),"PreCompLayer"==i.type&&this.buildStage(null,i.layers)},CanvasRenderer.prototype.buildItemHierarchy=function(t,e,a){for(var i=0,r=e.length;r>i;){if(e[i].layerName==a){t.parentHierarchy.push(e[i]),void 0==e[i].parent||this.buildItemHierarchy(t,e,e[i].parent);break}i+=1}},CanvasRenderer.prototype.prepareFrame=function(t){var e,a=this.layers.length;for(e=0;a>e;e++)this.layers[e].element.prepareFrame(t-this.layers[e].startTime)},CanvasRenderer.prototype.draw=function(){var t,e=this.layers.length;for(t=e-1;t>=0;t-=1)this.layers[t].element.draw()},CanvasRenderer.prototype.renderFrame=function(t){this.lastFrame!=t&&(this.lastFrame=t,this.renderConfig.clearCanvas===!0?this.canvasContext.canvas.width=this.canvasContext.canvas.width:this.canvasContext.save(),this.canvasContext.transform(this.transformCanvas.sx,0,0,this.transformCanvas.sy,this.transformCanvas.tx,this.transformCanvas.ty),this.canvasContext.beginPath(),this.canvasContext.rect(0,0,this.transformCanvas.w,this.transformCanvas.h),this.canvasContext.clip(),this.prepareFrame(t),this.draw(),this.renderConfig.clearCanvas!==!0&&this.canvasContext.restore())},MaskElement.prototype.init=function(){this.registeredEffects=[],this.masksProperties=this.data.masksProperties,this.totalMasks=this.masksProperties.length;var t=this.element.maskingGroup,e=this.element.maskedElement,a=document.createElementNS(svgNS,"defs");t.appendChild(a);var i,r=this.masksProperties.length;if(this.layerSize=this.element.getLayerSize(),this.usePaths){this.maskElement=document.createElementNS(svgNS,"clipPath");var n,s=this.data.masksProperties;for(i=0;r>i;i++)n=document.createElementNS(svgNS,"path"),s[i].cl?n.setAttribute("fill","#ffffff"):(n.setAttribute("fill","none"),n.setAttribute("stroke","#ffffff"),n.setAttribute("stroke-width","1"),n.setAttribute("stroke-miterlimit","10")),n.setAttribute("clip-rule","nonezero"),this.maskElement.appendChild(n),s[i].elem=n,s[i].lastPath="";var o=randomString(10);this.maskElement.setAttribute("id",o),e.setAttribute("clip-path","url(#"+o+")")}else{this.maskElement=document.createElementNS(svgNS,"mask"),this.canvas=document.createElement("canvas"),this.imageElement=document.createElementNS(svgNS,"image"),this.imageElement.setAttribute("width",this.layerSize.w),this.imageElement.setAttribute("height",this.layerSize.h),this.imageElement.setAttribute("x","0"),this.imageElement.setAttribute("y","0"),this.canvasContext=this.canvas.getContext("2d"),this.canvas.width=this.layerSize.w,this.canvas.height=this.layerSize.h,this.maskElement.appendChild(this.imageElement);var o=randomString(10);this.maskElement.setAttribute("id",o),e.setAttribute("mask","url(#"+o+")")}a.appendChild(this.maskElement)},MaskElement.prototype.createInvertedMask=function(t,e){this.helperCanvas.width=this.layerSize.w,this.helperCanvas.height=this.layerSize.h;var a=this.invertedContext;a.globalCompositeOperation="source-over";var i=t.o[e];if("a"==t.mode)a.fillStyle="rgba(255, 255, 255, "+t.o[e]+")",this.canvasContext.globalCompositeOperation="source-over";else if("s"==t.mode)a.fillStyle="rgba(0, 0, 0, "+i+")",this.canvasContext.globalCompositeOperation="source-over";else if("f"==t.mode)a.fillStyle="rgba(255, 255, 255, "+i+")",this.canvasContext.globalCompositeOperation="xor";else{if("i"!=t.mode)return;a.fillStyle="rgba(255, 255, 255, "+i+")",this.canvasContext.globalCompositeOperation="destination-in"}a.fillRect(0,0,this.helperCanvas.width,this.helperCanvas.height),a.fillStyle="rgba(255, 255, 255, 1)",a.globalCompositeOperation="destination-out",a.beginPath(),this.drawShape(a,t.pathVertices[e][0]),this.canvasContext.drawImage(this.helperCanvas,0,0)},MaskElement.prototype.renderFrame=function(t){var e,a=this.data.masksProperties.length;if(this.usePaths===!0){if("fullSvg"!==this.element.animationItem.animType)for(e=0;a>e;e++)this.drawPath(this.data.masksProperties[e],this.data.masksProperties[e].pathStrings[t])}else{this.canvas.width=this.canvas.width;var i=this.canvasContext;for(e=0;a>e;e++){var r=this.data.masksProperties[e].opacity[t];if(this.masksProperties[e].inv)this.createInvertedMask(this.masksProperties[e],t);else{if("a"==this.masksProperties[e].mode)i.globalCompositeOperation="source-over",i.fillStyle="rgba(255, 255, 255, "+r+")";else if("s"==this.masksProperties[e].mode)i.globalCompositeOperation="source-over",i.fillStyle="rgba(0, 0, 0, "+r+")";else if("f"==this.masksProperties[e].mode)i.globalCompositeOperation="xor",i.fillStyle="rgba(255, 255, 255, "+r+")";else{if("i"!=this.masksProperties[e].mode)continue;i.globalCompositeOperation="destination-in",i.fillStyle="rgba(255, 255, 255, "+r+")"}this.drawShape(i,this.data.masksProperties[e].pathVertices[t][0])}}var n=this.canvas.toDataURL("image/png");this.imageElement.setAttributeNS("http://www.w3.org/1999/xlink","href",n)}},MaskElement.prototype.processMaskFromEffects=function(t,e){var a,i=this.registeredEffects.length;for(a=0;i>a;a++)this.registeredEffects[a].renderMask(t,e)},MaskElement.prototype.registerEffect=function(t){this.registeredEffects.push(t)},MaskElement.prototype.getMaskelement=function(){return this.maskElement},MaskElement.prototype.createLayerSolidPath=function(){var t="M0,0 ";return t+="h"+this.layerSize.w,t+="v"+this.layerSize.h,t+="h"+-this.layerSize.w,t+="v"+-this.layerSize.h},MaskElement.prototype.drawPath=function(t,e){t.lastPath!==e&&(t.inv?t.elem.setAttribute("d",this.createLayerSolidPath()+e):t.elem.setAttribute("d",e),t.lastPath=e)},MaskElement.prototype.drawShape=function(t,e){t.beginPath();var a,i=e.v.length;for(a=0;i>a;a++)0==a?t.moveTo(e.v[a][0],e.v[a][1]):t.bezierCurveTo(e.o[a-1][0]+e.v[a-1][0],e.o[a-1][1]+e.v[a-1][1],e.i[a][0]+e.v[a][0],e.i[a][1]+e.v[a][1],e.v[a][0],e.v[a][1]);t.bezierCurveTo(e.o[a-1][0]+e.v[a-1][0],e.o[a-1][1]+e.v[a-1][1],e.i[0][0]+e.v[0][0],e.i[0][1]+e.v[0][1],e.v[0][0],e.v[0][1]),t.closePath(),t.fill()},defineDescriptor(MaskElement,"helperCanvas",document.createElement("canvas")),defineDescriptor(MaskElement,"helperContext",MaskElement.prototype.helperCanvas.getContext("2d")),defineDescriptor(MaskElement,"data",null,{writable:!0}),defineDescriptor(MaskElement,"element",null),defineDescriptor(MaskElement,"usePaths",!0,{writable:!0}),defineDescriptor(MaskElement,"paths",[],{writable:!0});var BaseElement=function(t,e){this.animationItem=e,this.data=t,this.transformChanged=!1,this.forceRender=!1,this.init()};BaseElement.prototype.init=function(){this.createElements(),this.data.hasMask&&this.addMasks(this.data),this.data.eff&&this.createEffectsManager(this.data)},BaseElement.prototype.createElements=function(){this.layerElement=document.createElementNS(svgNS,"g"),this.layerElement.setAttribute("id",this.data.layerName),this.maskingGroup=this.layerElement,this.maskedElement=this.layerElement},BaseElement.prototype.prepareFrame=function(t){this.currentAnimData=this.data.renderedData[t].an,this.data.renderedFrame.tr!==this.currentAnimData.matrixValue?(this.transformChanged=!0,this.data.renderedFrame.tr=this.currentAnimData.matrixValue):this.transformChanged=!1},BaseElement.prototype.renderFrame=function(t){if(this.data.inPoint-this.data.startTime<=t&&this.data.outPoint-this.data.startTime>t?this.isVisible!==!0&&(this.isVisible=!0,this.forceRender=!0,this.mainElement.setAttribute("opacity",1)):this.isVisible!==!1&&(this.isVisible=!1,this.mainElement.setAttribute("opacity",0)),this.data.eff&&this.effectsManager.renderFrame(t,this.currentAnimData.mk),t===this.data.renderedFrame.num)return this.isVisible;this.data.hasMask&&this.maskManager.renderFrame(t),this.data.renderedFrame.o!==this.currentAnimData.tr.o&&(this.data.renderedFrame.o=this.currentAnimData.tr.o,this.isVisible&&this.layerElement.setAttribute("opacity",this.currentAnimData.tr.o));var e="";if(this.data.parents){var a,i=!1,r=0,n=this.data.parents.length;if(this.transformChanged)i=!0;else for(;n>r;){if(this.data.parents[r].elem.element.transformChanged){i=!0;break}r+=1}if(i){for(r=n-1;r>=0;r-=1)a=this.data.parents[r].elem.element.currentAnimData,e+=a.matrixValue+" ";e+=this.currentAnimData.matrixValue,this.isVisible&&this.layerElement.setAttribute("transform",e),this.fullTransform=e}}else this.transformChanged&&(e+=this.currentAnimData.matrixValue,this.isVisible&&this.layerElement.setAttribute("transform",e),this.fullTransform=e);return this.forceRender&&(this.forceRender=!1,this.layerElement.setAttribute("opacity",this.currentAnimData.tr.o),this.layerElement.setAttribute("transform",this.fullTransform)),this.isVisible},BaseElement.prototype.getDomElement=function(){return this.layerElement},BaseElement.prototype.setMainElement=function(t){this.mainElement=t},BaseElement.prototype.getMaskManager=function(){return this.maskManager},BaseElement.prototype.addMasks=function(t){var e={data:{value:t},element:{value:this}};this.maskManager=createElement(MaskElement,null,e)},BaseElement.prototype.createEffectsManager=function(t){var e={effects:{value:t.eff},element:{value:this}};this.effectsManager=createElement(EffectsManager,null,e)},BaseElement.prototype.getType=function(){return this.type},BaseElement.prototype.getLayerSize=function(){return"TextLayer"==this.data.type?{w:this.data.textData.width,h:this.data.textData.height}:{w:this.data.width,h:this.data.height}},createElement(BaseElement,ICompElement),ICompElement.prototype.createElements=function(){this.svgElem=document.createElementNS(svgNS,"g"),this.parent.createElements.call(this)},ICompElement.prototype.getComposingElement=function(){return this.layerElement},ICompElement.prototype.renderFrame=function(t){var e=this.parent.renderFrame.call(this,t);if(e!==!1){var a,i=this.layers.length,r=this.data.tm?this.data.tm[t]<0?0:this.data.tm[t]:t;for(a=0;i>a;a+=1)this.layers[a].element.prepareFrame(r-this.layers[a].startTime);for(a=0;i>a;a+=1)this.layers[a].element.renderFrame(r-this.layers[a].startTime)}},createElement(BaseElement,IImageElement),IImageElement.prototype.createElements=function(){var t=this,e=function(){t.image.setAttributeNS("http://www.w3.org/1999/xlink","href",t.path+t.assets[t.data.assetId].path),t.maskedElement=t.image,t.animationItem.elementLoaded()},a=new Image;a.addEventListener("load",e,!1),a.src=this.path+this.assets[this.data.assetId].path,this.svgElem=document.createElementNS(svgNS,"g"),this.parent.createElements.call(this),this.image=document.createElementNS(svgNS,"image"),this.image.setAttribute("width",this.data.width+"px"),this.image.setAttribute("height",this.data.height+"px"),this.svgElem.appendChild(this.image),this.layerElement.appendChild(this.svgElem),this.maskingGroup=this.svgElem,styleUnselectableDiv(this.image)},createElement(BaseElement,IShapeElement),IShapeElement.prototype.createElements=function(){this.parent.createElements.call(this);var t,e,a=this.data.shapes.length;for(t=a-1;t>=0;t--)this.data.trim&&(this.data.shapes[t].trim=this.data.trim),e=new ShapeItemElement(this.data.shapes[t]),this.layerElement.appendChild(e.getElement()),this.shapes.push(e)},IShapeElement.prototype.renderFrame=function(t){var e=this.parent.renderFrame.call(this,t);e!==!1&&this.renderShapes(t)},IShapeElement.prototype.renderShapes=function(t){var e,a,i,r=this.data.shapes.length;for(e=r-1;e>=0;e--)a=this.data.shapes[e],i=this.shapes[r-1-e],i.renderShape(t)},ShapeItemElement.prototype.adjustTrim=function(){var t,e=this.data.trim,a=e.length;for(t=0;a>t;t+=1)e[t].o&&(e[t].o-=90)},ShapeItemElement.prototype.getElement=function(){return this.shapeG},ShapeItemElement.prototype.renderShape=function(t){this.currentData=this.data.renderedData[t],"pathShape"==this.data.type?this.pathLength=this.renderPath(t):"rectShape"==this.data.type?this.renderRect(t):"ellipseShape"==this.data.type&&(this.pathLength=this.renderEllipse(t)),this.data.trim&&this.renderTrim(t),this.renderFill(t),this.renderStroke(t),this.renderTransform(t)},ShapeItemElement.prototype.renderPath=function(){var t=this.currentData,e=t.path;return e.pathString!=this.renderedFrame.path?(this.renderedFrame.path=e.pathString,this.shape.setAttribute("d",e.pathString),this.data.trim?(null==this.cachedData.pathLengths&&(this.cachedData.pathLengths={}),null==this.cachedData.pathLengths[e.pathString]&&(this.cachedData.pathLengths[e.pathString]=this.shape.getTotalLength()),this.cachedData.pathLengths[e.pathString]):void 0):this.data.trim?this.cachedData.pathLengths[e.pathString]:void 0},ShapeItemElement.prototype.renderEllipse=function(t){var e=this.currentData.ell;if(this.renderedFrame.ellipse.rx!=e.size[0]&&(this.shape.setAttribute("rx",e.size[0]/2),this.renderedFrame.ellipse.rx=e.size[0]),this.renderedFrame.ellipse.ry!=e.size[1]&&(this.shape.setAttribute("ry",e.size[1]/2),this.renderedFrame.ellipse.ry=e.size[1]),this.renderedFrame.ellipse.cx!=e.p[0]&&(this.shape.setAttribute("cx",e.p[0]),this.renderedFrame.ellipse.ry=e.p[0]),this.renderedFrame.ellipse.cy!=e.p[1]&&(this.shape.setAttribute("cy",e.p[1]),this.renderedFrame.ellipse.ry=e.p[1]),this.data.trim){if(null==this.cachedData.pathLengths&&(this.cachedData.pathLengths={}),null==this.cachedData.pathLengths["ellipse_"+t])if(e.size[0]==e.size[1])this.cachedData.pathLengths["ellipse_"+t]=Math.PI*e.size[0];else{var a=Math.max(e.size[0],e.size[1])/2,i=Math.max(e.size[0],e.size[1])/2,r=(a-i)/(a+i),n=(a+i)*Math.PI*(1+.25*r+1/64*Math.pow(r,2)+1/256*Math.pow(r,3));this.cachedData.pathLengths["ellipse_"+t]=n}return this.cachedData.pathLengths["ellipse_"+t]}},ShapeItemElement.prototype.renderRect=function(){var t=this.currentData;if(t.rect){var e=t.rect;this.renderedFrame.rect.rx!=e.roundness&&(this.shape.setAttribute("rx",e.roundness),this.shape.setAttribute("ry",e.roundness),this.renderedFrame.rect.rx=e.roundness),this.renderedFrame.rect.width!=e.size[0]&&(this.shape.setAttribute("width",e.size[0]),this.renderedFrame.rect.width=e.size[0]),this.renderedFrame.rect.height!=e.size[1]&&(this.shape.setAttribute("height",e.size[1]),this.renderedFrame.rect.height=e.size[1]),this.renderedFrame.rect.x!=e.position[0]-e.size[0]&&(this.shape.setAttribute("x",e.position[0]-e.size[0]/2),this.renderedFrame.rect.x=e.position[0]-e.size[0]),this.renderedFrame.rect.y!=e.position[1]-e.size[1]&&(this.shape.setAttribute("y",e.position[1]-e.size[1]/2),this.renderedFrame.rect.y=e.position[1]-e.size[1])}},ShapeItemElement.prototype.renderFill=function(){var t=this.currentData;if(t.fill){var e=t.fill;this.renderedFrame.fill.color!==e.color&&(this.shape.setAttribute("fill",e.color),this.renderedFrame.fill.color=e.color),this.data.fillEnabled!==!1?this.renderedFrame.fill.opacity!==e.opacity&&(this.shape.setAttribute("fill-opacity",e.opacity),this.renderedFrame.fill.opacity=e.opacity):0!==this.renderedFrame.fill.opacity&&(this.shape.setAttribute("fill-opacity",0),this.renderedFrame.fill.opacity=0)}else 0!==this.renderedFrame.fill.opacity&&(this.shape.setAttribute("fill-opacity",0),this.renderedFrame.fill.opacity=0)},ShapeItemElement.prototype.renderStroke=function(){var t=this.currentData;if(t.stroke){var e=t.stroke;this.renderedFrame.stroke.color!==e.color&&(this.renderedFrame.stroke.color=e.color,this.shape.setAttribute("stroke",e.color)),this.renderedFrame.stroke.width!==e.width&&(this.renderedFrame.stroke.width=e.width,this.shape.setAttribute("stroke-width",e.width)),this.data.strokeEnabled!==!1?this.renderedFrame.stroke.opacity!==e.opacity&&(this.renderedFrame.stroke.opacity=e.opacity,this.shape.setAttribute("stroke-opacity",e.opacity)):0!==this.renderedFrame.stroke.opacity&&(this.renderedFrame.stroke.opacity=0,this.shape.setAttribute("stroke-opacity",0))}},ShapeItemElement.prototype.renderTransform=function(){var t=this.currentData;if(t.tr){var e=t.tr;this.renderedFrame.tr.o!==e.o&&(this.renderedFrame.tr.o=e.o,this.shapeG.setAttribute("opacity",e.o)),this.renderedFrame.tr.mt!==e.mt&&(this.renderedFrame.tr.mt=e.mt,this.shapeG.setAttribute("transform",e.mt)),(this.renderedFrame.tr.a[0]!==e.a[0]||this.renderedFrame.tr.a[1]!==e.a[1])&&(this.renderedFrame.tr.a[0]=e.a[0],this.renderedFrame.tr.a[1]=e.a[1],this.shape.setAttribute("transform","translate("+-e.a[0]+", "+-e.a[1]+")"))}},ShapeItemElement.prototype.renderTrim=function(){var t=this.currentData.trim;if(0==this.pathLength)this.shape.setAttribute("stroke-opacity",0);else{this.renderedFrame.trim.e==t.e&&this.renderedFrame.trim.s==t.s&&this.renderedFrame.trim.o==t.o,this.renderedFrame.trim.e=t.e,this.renderedFrame.trim.s=t.s,this.renderedFrame.trim.o=t.o;var e=this.pathLength*(t.e-t.s)/100,a=this.pathLength-e,i=this.pathLength*t.s/100+this.pathLength*t.o/360,r=e+" , "+a;this.shape.setAttribute("stroke-dasharray",r),this.shape.setAttribute("stroke-dashoffset",this.pathLength-i),t.e==t.s?this.shape.setAttribute("stroke-opacity",0):this.currentData.stroke&&(this.data.strokeEnabled!==!1?this.shape.setAttribute("stroke-opacity",this.currentData.stroke.opacity):this.shape.setAttribute("stroke-opacity",0))}},createElement(BaseElement,ISolidElement),ISolidElement.prototype.createElements=function(){this.svgElem=document.createElementNS(svgNS,"g"),this.parent.createElements.call(this),this.layerElement.appendChild(this.svgElem);var t=document.createElementNS(svgNS,"rect");t.setAttribute("width",this.data.width),t.setAttribute("height",this.data.height),t.setAttribute("fill",this.data.color),this.svgElem.appendChild(t),styleUnselectableDiv(this.svgElem),styleUnselectableDiv(t),this.maskingGroup=this.svgElem,this.maskedElement=t},createElement(BaseElement,ITextElement),ITextElement.prototype.createElements=function(){this.svgElem=document.createElementNS(svgNS,"g");var t=document.createElementNS(svgNS,"text");t.textContent=this.data.textData.text,t.setAttribute("fill",this.data.textData.fillColor),t.setAttribute("x","0"),t.setAttribute("y",this.data.textData.height-(this.data.textData.fontSize-this.data.textData.height)/2),this.svgElem.setAttribute("width",this.data.textData.width),this.svgElem.setAttribute("height",this.data.textData.height),this.svgElem.style.transform="translate("+this.data.textData.xOffset+"px,"+this.data.textData.yOffset+"px)",this.svgElem.style["-webkit-transform"]="translate("+this.data.textData.xOffset+"px,"+this.data.textData.yOffset+"px)",t.setAttribute("font-size",this.data.textData.fontSize),t.setAttribute("font-family","Arial, sans-serif"),this.svgElem.appendChild(t),this.parent.createElements.call(this),this.anchorElement.appendChild(this.svgElem),this.maskingGroup=this.svgElem,this.maskedElement=t},CVBaseElement.prototype.init=function(){this.createElements(),this.data.hasMask&&this.addMasks(this.data),this.data.eff&&this.createEffectsManager(this.data)},CVBaseElement.prototype.createElements=function(){},CVBaseElement.prototype.prepareFrame=function(t){return this.data.inPoint-this.data.startTime<=t&&this.data.outPoint-this.data.startTime>t?(this.renderFrame=!0,this.currentAnimData=this.data.renderedData[t].an,void(this.data.hasMask&&this.maskManager.prepareFrame(t))):(this.renderFrame=!1,this.currentAnimData=this.data.renderedData[t].an,!1)},CVBaseElement.prototype.draw=function(t){if(t!==!1&&this.renderer.canvasContext.save(),!this.renderFrame)return!1;var e,a=this.renderer.canvasContext;if(this.data.parentHierarchy){var i,r,n=this.data.parentHierarchy.length;for(i=n-1;i>=0;i-=1)r=this.data.parentHierarchy[i].element.getCurrentAnimData(),e=r.matrixArray,a.transform(e[0],e[1],e[2],e[3],e[4],e[5]),a.translate(-r.tr.a[0],-r.tr.a[1])}a.globalAlpha=a.globalAlpha*this.currentAnimData.tr.o,e=this.currentAnimData.matrixArray,a.transform(e[0],e[1],e[2],e[3],e[4],e[5]),a.translate(-this.currentAnimData.tr.a[0],-this.currentAnimData.tr.a[1]),this.data.hasMask&&this.maskManager.draw(),t!==!1&&this.renderer.canvasContext.restore()},CVBaseElement.prototype.getCurrentAnimData=function(){return this.currentAnimData},CVBaseElement.prototype.addMasks=function(t){var e={data:{value:t},element:{value:this}};this.maskManager=createElement(CVMaskElement,null,e)},CVBaseElement.prototype.createEffectsManager=function(t){var e={effects:{value:t.eff},element:{value:this}};this.effectsManager=createElement(EffectsManager,null,e)},CVBaseElement.prototype.getType=function(){return this.type},CVBaseElement.prototype.getLayerSize=function(){return"TextLayer"==this.data.type?{w:this.data.textData.width,h:this.data.textData.height}:{w:this.data.width,h:this.data.height}},createElement(CVBaseElement,CVCompElement),CVCompElement.prototype.prepareFrame=function(t){var e=this.parent.prepareFrame.call(this,t);if(e!==!1){var a,i=this.layers.length,r=this.data.tm?this.data.tm[t]<0?0:this.data.tm[t]:t;for(a=0;i>a;a+=1)this.layers[a].element.prepareFrame(r-this.layers[a].startTime)}},CVCompElement.prototype.draw=function(){if(this.renderer.canvasContext.save(),this.parent.draw.call(this,!1)===!1)return void this.renderer.canvasContext.restore();var t,e=this.layers.length;for(t=e-1;t>=0;t-=1)this.layers[t].element.draw();this.renderer.canvasContext.restore()},createElement(CVBaseElement,CVImageElement),CVImageElement.prototype.createElements=function(){var t=this,e=function(){t.animationItem.elementLoaded()};this.img=new Image,this.img.addEventListener("load",e,!1),this.img.src=this.path+this.assets[this.data.assetId].path,this.parent.createElements.call(this)},CVImageElement.prototype.draw=function(){if(this.renderer.canvasContext.save(),this.parent.draw.call(this,!1)===!1)return void this.renderer.canvasContext.restore();var t=this.renderer.canvasContext;t.drawImage(this.img,0,0),this.renderer.canvasContext.restore()},createElement(CVBaseElement,CVShapeElement),CVShapeElement.prototype.createElements=function(){this.parent.createElements.call(this);var t,e,a=this.data.shapes.length;for(t=a-1;t>=0;t--)this.data.trim&&(this.data.shapes[t].trim=this.data.trim),e=new CVShapeItemElement(this.data.shapes[t],this.renderer),this.shapes.push(e)},CVShapeElement.prototype.prepareFrame=function(t){var e=this.parent.prepareFrame.call(this,t);if(e!==!1){var a,i=this.data.shapes.length;for(a=i-1;a>=0;a--)this.shapes[i-1-a].prepareFrame(t)}},CVShapeElement.prototype.draw=function(){return this.renderer.canvasContext.save(),this.parent.draw.call(this,!1)===!1?void this.renderer.canvasContext.restore():(this.drawShapes(),void this.renderer.canvasContext.restore())},CVShapeElement.prototype.drawShapes=function(){var t,e=this.data.shapes.length;for(t=e-1;t>=0;t--)this.shapes[e-1-t].renderShape()},CVShapeItemElement.prototype.adjustTrim=function(){var t,e=this.data.trim,a=e.length;for(t=0;a>t;t+=1)e[t].o&&(e[t].o-=90)},CVShapeItemElement.prototype.renderShape=function(){if(""!==this.data.type){var t=this.frameNum;this.currentData=this.data.renderedData[t];var e=this.renderer.canvasContext,a=this.renderTransform(t);"pathShape"==this.data.type?this.data.trim?this.renderTrimPath(t):this.renderPath(t):"rectShape"==this.data.type?this.renderRect(t):"ellipseShape"==this.data.type&&(this.pathLength=this.renderEllipse(t)),this.renderFill(t),this.renderStroke(t),this.renderer.canvasContext.lineCap="round",this.renderer.canvasContext.lineJoin="round",this.renderedPaths[t]?supportsPath2D?(this.renderer.canvasContext.fill(this.renderedPaths[t]),this.renderer.canvasContext.stroke(this.renderedPaths[t])):(this.renderedPaths[t].drawToContext(this.renderer.canvasContext),this.renderer.canvasContext.fill(),this.renderer.canvasContext.stroke()):(this.renderer.canvasContext.fill(),this.renderer.canvasContext.stroke()),a&&e.restore()}},CVShapeItemElement.prototype.prepareFrame=function(t){this.frameNum=t},CVShapeItemElement.prototype.renderTransform=function(){var t=this.currentData;if(t.tr){var e=!1,a=this.renderer.canvasContext,i=t.tr,r=i.mtArr;return(1!==r[0]||0!==r[1]||0!==r[2]||1!==r[3]||0!==r[4]||0!==r[5])&&(a.save(),a.transform(r[0],r[1],r[2],r[3],r[4],r[5]),e=!0),(0!=i.a[0]||0!=i.a[1])&&(e||(a.save(),e=!0),a.translate(-i.a[0],-i.a[1])),i.o<1&&(e||(a.save(),e=!0),a.globalAlpha*=i.o),e}},CVShapeItemElement.prototype.addToTrim=function(t,e,a){this.trims[t]||this.trims.push({}),this.trims[t].s=e,this.trims[t].e=a,this.trims[t].ended=!1},CVShapeItemElement.prototype.renderTrimPath=function(t){var e=this.currentData.trim;if(e.e!=e.s&&!this.renderedPaths[t]){var a,i=new Path2D,r=this.currentData.path,n=r.pathNodes,s=[],o=0,h=n.v.length;for(a=0;h-1>a;a+=1)s.push(bez.drawBezierCurve(n.v[a],n.v[a+1],n.o[a],n.i[a+1])),o+=s[a].segmentLength;r.closed&&(s.push(bez.drawBezierCurve(n.v[a],n.v[0],n.o[a],n.i[0])),o+=s[a].segmentLength),h=s.length;var m=o*(e.e-e.s)/100;e.o=e.o%360,e.o<0&&(e.o+=360);var p=(e.s/100+e.o/360)%1*o,l=0;if(p+m-o>1e-5){var d=p+m-o;this.addToTrim(0,p,p+m-d),this.addToTrim(1,0,p+m-o),l+=2}else this.addToTrim(0,p,p+m),l+=1;var c,u,f,y,g,v=0,x=!1,C=this.trims.length;for(a=0;h>a&&!x;a+=1){for(u=s[a].points.length,y=!0,g=0;C>g;g+=1)v+s[a].segmentLength>this.trims[g].s&&(y=!1);if(y)v+=s[a].segmentLength;else{var E,b;for(c=0;u-1>c&&!x;c+=1)for(C=this.trims.length,E=s[a].points[c],b=s[a].points[c+1],v+=E.partialLength,g=0;C>g;g+=1)if(!this.trims[g].ended)if(this.trims[g].s>=v&&this.trims[g].s<v+b.partialLength&&(f=(this.trims[g].s-v)/b.partialLength,i.moveTo(E.point[0]+(b.point[0]-E.point[0])*f,E.point[1]+(b.point[1]-E.point[1])*f)),this.trims[g].e>v&&this.trims[g].e<=v+b.partialLength){if(f=(this.trims[g].e-v)/b.partialLength,i.lineTo(E.point[0]+(b.point[0]-E.point[0])*f,E.point[1]+(b.point[1]-E.point[1])*f),l-=1,this.trims[g].ended=!0,0==l){x=!0;break}}else v>this.trims[g].s&&v<this.trims[g].e&&i.lineTo(E.point[0],E.point[1]);this.renderedPaths[t]=i}}}},CVShapeItemElement.prototype.renderPath=function(t){var e=this.currentData,a=e.path;if(!this.renderedPaths[t]){var i=new Path2D,r=this.renderer.canvasContext,n=a.pathNodes;n instanceof Array&&(n=n[0]);var s,o=n.i.length;for(r.beginPath(),i.moveTo(n.v[0][0],n.v[0][1]),s=1;o>s;s+=1)i.bezierCurveTo(n.o[s-1][0],n.o[s-1][1],n.i[s][0],n.i[s][1],n.v[s][0],n.v[s][1]);a.closed&&i.bezierCurveTo(n.o[s-1][0],n.o[s-1][1],n.i[0][0],n.i[0][1],n.v[0][0],n.v[0][1]),this.renderedPaths[t]=i}},CVShapeItemElement.prototype.renderEllipse=function(){var t=this.currentData.ell,e=this.renderer.canvasContext;e.beginPath(),e.ellipse(t.p[0],t.p[1],t.size[0]/2,t.size[1]/2,0,0,2*Math.PI,!0),e.closePath()},CVShapeItemElement.prototype.renderRect=function(){var t=this.currentData.rect,e=t.roundness,a=this.renderer.canvasContext;if(a.beginPath(),0==e)a.rect(t.position[0]-t.size[0]/2,t.position[1]-t.size[1]/2,t.size[0],t.size[1]);else{var i=t.position[0]-t.size[0]/2,r=t.position[1]-t.size[1]/2,n=t.size[0],s=t.size[1];e instanceof Array&&(e=e[0]),a.moveTo(i+e,r),a.lineTo(i+n-e,r),a.quadraticCurveTo(i+n,r,i+n,r+e),a.lineTo(i+n,r+s-e),a.quadraticCurveTo(i+n,r+s,i+n-e,r+s),a.lineTo(i+e,r+s),a.quadraticCurveTo(i,r+s,i,r+s-e),a.lineTo(i,r+e),a.quadraticCurveTo(i,r,i+e,r)}},CVShapeItemElement.prototype.renderFill=function(){var t=this.currentData;if(t.fill){var e=t.fill;if(this.data.fillEnabled!==!1)return void(this.renderer.canvasContext.fillStyle=e.opacity<1?fillColorToString(e.color,e.opacity):fillColorToString(e.color))}this.renderer.canvasContext.fillStyle="rgba(0,0,0,0)"},CVShapeItemElement.prototype.renderStroke=function(){var t=this.currentData;if(t.stroke){var e=t.stroke;if(this.renderer.canvasContext.lineWidth=e.width,this.data.strokeEnabled!==!1)return void(this.renderer.canvasContext.strokeStyle=e.opacity<1?fillColorToString(e.color,e.opacity):fillColorToString(e.color))}this.renderer.canvasContext.strokeStyle="rgba(0,0,0,0)"},createElement(CVBaseElement,CVSolidElement),CVSolidElement.prototype.draw=function(){if(this.renderer.canvasContext.save(),this.parent.draw.call(this,!1)===!1)return void this.renderer.canvasContext.restore();var t=this.renderer.canvasContext;t.fillStyle=this.data.color,t.fillRect(0,0,this.data.width,this.data.height),this.renderer.canvasContext.restore()},createElement(CVBaseElement,CVTextElement),CVTextElement.prototype.createElements=function(){this.svgElem=document.createElementNS(svgNS,"g");var t=document.createElementNS(svgNS,"text");t.textContent=this.data.textData.text,t.setAttribute("fill",this.data.textData.fillColor),t.setAttribute("x","0"),t.setAttribute("y",this.data.textData.height-(this.data.textData.fontSize-this.data.textData.height)/2),this.svgElem.setAttribute("width",this.data.textData.width),this.svgElem.setAttribute("height",this.data.textData.height),this.svgElem.style.transform="translate("+this.data.textData.xOffset+"px,"+this.data.textData.yOffset+"px)",this.svgElem.style["-webkit-transform"]="translate("+this.data.textData.xOffset+"px,"+this.data.textData.yOffset+"px)",t.setAttribute("font-size",this.data.textData.fontSize),t.setAttribute("font-family","Arial, sans-serif"),this.svgElem.appendChild(t),this.parent.createElements.call(this),this.anchorElement.appendChild(this.svgElem),this.maskingGroup=this.svgElem,this.maskedElement=t},CVMaskElement.prototype.init=function(){this.registeredEffects=[],this.masksProperties=this.data.masksProperties,this.totalMasks=this.masksProperties.length,this.ctx=this.element.renderer.canvasContext,this.layerSize=this.element.getLayerSize()},CVMaskElement.prototype.prepareFrame=function(t){this.frameNum=t},CVMaskElement.prototype.draw=function(){var t,e=this.data.masksProperties.length;for(t=0;e>t;t++)this.masksProperties[t].inv?this.createInvertedMask(this.masksProperties[t],this.frameNum):this.drawShape(this.ctx,this.data.masksProperties[t].pathVertices[this.frameNum][0])},CVMaskElement.prototype.drawShape=function(t,e){t.beginPath();var a,i=e.v.length;for(t.moveTo(e.v[0][0],e.v[0][1]),a=1;i>a;a++)t.bezierCurveTo(e.o[a-1][0],e.o[a-1][1],e.i[a][0],e.i[a][1],e.v[a][0],e.v[a][1]);t.bezierCurveTo(e.o[a-1][0],e.o[a-1][1],e.i[0][0],e.i[0][1],e.v[0][0],e.v[0][1]),t.closePath(),t.clip()};var animationManager=function(){function t(t){if(!t)return null;for(var e=0;v>e;){if(f[e].elem==t&&null!==f[e].elem)return f[e].animation;e+=1}var a=new AnimationItem;return a.setData(t),f.push({elem:t,animation:a}),v+=1,a}function e(t){var e=new AnimationItem;return e.setParams(t),f.push({elem:null,animation:e}),v+=1,e}function a(t,e){var a;for(a=0;v>a;a+=1)f[a].animation.setSpeed(t,e)}function i(t,e){var a;for(a=0;v>a;a+=1)f[a].animation.setDirection(t,e)}function r(t){var e;for(e=0;v>e;e+=1)f[e].animation.play(t)}function n(t,e){g=!1,y=Date.now();var a;for(a=0;v>a;a+=1)f[a].animation.moveFrame(t,e)}function s(){var t,e=Date.now(),a=e-y;for(t=0;v>t;t+=1)f[t].animation.advanceTime(a);y=e,requestAnimationFrame(s)}function o(t){var e;for(e=0;v>e;e+=1)f[e].animation.pause(t)}function h(t,e,a){var i;for(i=0;v>i;i+=1)f[i].animation.goToAndStop(t,e,a)}function m(t){var e;for(e=0;v>e;e+=1)f[e].animation.stop(t)}function p(t){var e;for(e=0;v>e;e+=1)f[e].animation.togglePause(t)}function l(){var e=document.getElementsByClassName("bodymovin");Array.prototype.forEach.call(e,t)}function d(){var t;for(t=0;v>t;t+=1)f[t].animation.resize()}function c(){y=Date.now(),requestAnimationFrame(s)}var u={},f=[],y=0,g=!0,v=0;return setTimeout(c,0),u.registerAnimation=t,u.loadAnimation=e,u.setSpeed=a,u.setDirection=i,u.play=r,u.moveFrame=n,u.pause=o,u.stop=m,u.togglePause=p,u.searchAnimations=l,u.resize=d,u.start=c,u.goToAndStop=h,u}(),AnimationItem=function(){this.name="",this.path="",this.isLoaded=!1,this.currentFrame=0,this.currentRawFrame=0,this.totalFrames=0,this.frameRate=0,this.frameMult=0,this.playSpeed=1,this.playDirection=1,this.pendingElements=0,this.playCount=0,this.prerenderFramesFlag=!0,this.repeat="indefinite",this.animationData={},this.layers=[],this.assets=[],this.isPaused=!0,this.isScrolling=!1,this.autoplay=!1,this.loop=!0,this.renderer=null,this.animationID=randomString(10),this.renderedFrameCount=0,this.scaleMode="fit",this.math=Math};AnimationItem.prototype.setParams=function(t){var e=this;t.context&&(this.context=t.context),t.wrapper&&(this.wrapper=t.wrapper);var a=t.animType?t.animType:"canvas";switch(a){case"canvas":this.renderer=new CanvasRenderer(this,t.renderer);
-break;case"svg":this.renderer=new SVGRenderer(this,t.renderer)}if(this.animType=a,""===t.loop||null===t.loop||(this.loop=t.loop===!1?!1:t.loop===!0?!0:parseInt(t.loop)),this.autoplay="autoplay"in t?t.autoplay:!0,this.name=t.name?t.name:"",this.prerenderFramesFlag="prerender"in t?t.prerender:!0,t.animationData)e.configAnimation(t.animationData);else if(t.path){"json"!=t.path.substr(-4)&&("/"!=t.path.substr(-1,1)&&(t.path+="/"),t.path+="data.json");var i=new XMLHttpRequest;this.path=t.path.substr(0,t.path.lastIndexOf("/")+1),i.open("GET",t.path,!0),i.send(),i.onreadystatechange=function(){if(4==i.readyState)if(200==i.status)e.configAnimation(JSON.parse(i.responseText));else try{var t=JSON.parse(i.responseText);e.configAnimation(t)}catch(a){}}}},AnimationItem.prototype.setData=function(t){var e={wrapper:t},a=t.attributes;e.path=a.getNamedItem("data-animation-path")?a.getNamedItem("data-animation-path").value:a.getNamedItem("data-bm-path")?a.getNamedItem("data-bm-path").value:a.getNamedItem("bm-path")?a.getNamedItem("bm-path").value:"",e.animType=a.getNamedItem("data-anim-type")?a.getNamedItem("data-anim-type").value:a.getNamedItem("data-bm-type")?a.getNamedItem("data-bm-type").value:a.getNamedItem("bm-type")?a.getNamedItem("bm-type").value:"canvas";var i=a.getNamedItem("data-anim-loop")?a.getNamedItem("data-anim-loop").value:a.getNamedItem("data-bm-loop")?a.getNamedItem("data-bm-loop").value:a.getNamedItem("bm-loop")?a.getNamedItem("bm-loop").value:"";""==i||(e.loop="false"===i?!1:"true"===i?!0:parseInt(i)),e.name=a.getNamedItem("data-name")?a.getNamedItem("data-name").value:a.getNamedItem("data-bm-name")?a.getNamedItem("data-bm-name").value:a.getNamedItem("bm-name")?a.getNamedItem("bm-name").value:"";var r=a.getNamedItem("data-anim-prerender")?a.getNamedItem("data-anim-prerender").value:a.getNamedItem("data-bm-prerender")?a.getNamedItem("data-bm-prerender").value:a.getNamedItem("bm-prerender")?a.getNamedItem("bm-prerender").value:"";"false"===r&&(e.prerender=!1),this.setParams(e)},AnimationItem.prototype.configAnimation=function(t){this.renderer.configAnimation(t),this.animationData=t,this.animationData._id=this.animationID,this.animationData._animType=this.animType,this.layers=this.animationData.animation.layers,this.assets=this.animationData.assets,this.totalFrames=this.animationData.animation.totalFrames,this.frameRate=this.animationData.animation.frameRate,this.frameMult=this.animationData.animation.frameRate/1e3,dataManager.completeData(this.animationData),this.renderer.buildItems(this.animationData.animation.layers),this.updaFrameModifier(),this.checkLoaded()},AnimationItem.prototype.elementLoaded=function(){this.pendingElements--,this.checkLoaded()},AnimationItem.prototype.checkLoaded=function(){this.renderer.buildStage(this.container,this.layers),0==this.pendingElements&&(this.prerenderFramesFlag?(this.prerenderFrames(0),dataManager.renderFrame(this.animationID,this.currentFrame),this.renderer.renderFrame(this.currentFrame)):(this.isLoaded=!0,this.gotoFrame(),this.autoplay&&this.play()))},AnimationItem.prototype.prerenderFrames=function(t){t||(t=0),this.renderedFrameCount===this.totalFrames?(this.isLoaded=!0,this.gotoFrame(),this.autoplay&&this.play()):(dataManager.renderFrame(this.animationID,this.renderedFrameCount),this.renderedFrameCount+=1,t>5?setTimeout(this.prerenderFrames.bind(this),0):(t+=1,this.prerenderFrames(t)))},AnimationItem.prototype.resize=function(){this.renderer.updateContainerSize()},AnimationItem.prototype.gotoFrame=function(){this.currentFrame=subframeEnabled?this.math.round(100*this.currentRawFrame)/100:this.math.floor(this.currentRawFrame),this.renderFrame()},AnimationItem.prototype.renderFrame=function(){this.isLoaded!==!1&&(dataManager.renderFrame(this.animationID,this.currentFrame),this.renderer.renderFrame(this.currentFrame))},AnimationItem.prototype.play=function(t){t&&this.name!=t||this.isPaused===!0&&(this.isPaused=!1)},AnimationItem.prototype.pause=function(t){t&&this.name!=t||this.isPaused===!1&&(this.isPaused=!0)},AnimationItem.prototype.togglePause=function(t){t&&this.name!=t||(this.isPaused===!0?(this.isPaused=!1,this.play()):(this.isPaused=!0,this.pause()))},AnimationItem.prototype.stop=function(t){t&&this.name!=t||(this.isPaused=!0,this.currentFrame=this.currentRawFrame=0,this.playCount=0,this.gotoFrame())},AnimationItem.prototype.goToAndStop=function(t,e,a){a&&this.name!=a||(this.setCurrentRawFrameValue(e?t:t*this.frameModifier),this.isPaused=!0)},AnimationItem.prototype.advanceTime=function(t){this.isPaused!==!0&&this.isScrolling!==!0&&this.isLoaded!==!1&&this.setCurrentRawFrameValue(this.currentRawFrame+t*this.frameModifier)},AnimationItem.prototype.updateAnimation=function(t){this.setCurrentRawFrameValue(this.totalFrames*t)},AnimationItem.prototype.moveFrame=function(t,e){e&&this.name!=e||this.setCurrentRawFrameValue(this.currentRawFrame+t)},AnimationItem.prototype.setCurrentRawFrameValue=function(t){if(this.currentRawFrame=t,this.currentRawFrame>=this.totalFrames){if(this.loop===!1)return this.currentRawFrame=this.totalFrames-1,this.gotoFrame(),void this.pause();if(this.playCount+=1,this.loop!==!0&&this.playCount==this.loop)return this.currentRawFrame=this.totalFrames-1,this.gotoFrame(),void this.pause()}else if(this.currentRawFrame<0)return this.playCount-=1,this.playCount<0&&(this.playCount=0),this.loop===!1?(this.currentRawFrame=0,this.gotoFrame(),void this.pause()):(this.currentRawFrame=this.totalFrames+this.currentRawFrame,void this.gotoFrame());this.currentRawFrame=this.currentRawFrame%this.totalFrames,this.gotoFrame()},AnimationItem.prototype.setSpeed=function(t){this.playSpeed=t,this.updaFrameModifier()},AnimationItem.prototype.setDirection=function(t){this.playDirection=0>t?-1:1,this.updaFrameModifier()},AnimationItem.prototype.updaFrameModifier=function(){this.frameModifier=this.frameMult*this.playSpeed*this.playDirection},AnimationItem.prototype.getPath=function(){return this.path},AnimationItem.prototype.getAssets=function(){return this.assets},function(t){function e(t){animationManager.play(t)}function a(t){animationManager.pause(t)}function i(t){animationManager.togglePause(t)}function r(t,e){animationManager.setSpeed(t,e)}function n(t,e){animationManager.setDirection(t,e)}function s(t){animationManager.stop(t)}function o(t){animationManager.moveFrame(t)}function h(){animationManager.searchAnimations()}function m(t){return animationManager.registerAnimation(t)}function p(){animationManager.resize()}function l(){animationManager.start()}function d(t,e,a){animationManager.goToAndStop(t,e,a)}function c(t){subframeEnabled=t}function u(t){return animationManager.loadAnimation(t)}function f(){"complete"===document.readyState&&(clearInterval(g),h())}var y={};y.play=e,y.pause=a,y.togglePause=i,y.setSpeed=r,y.setDirection=n,y.stop=s,y.moveFrame=o,y.searchAnimations=h,y.registerAnimation=m,y.loadAnimation=u,y.setSubframeRendering=c,y.resize=p,y.start=l,y.goToAndStop=d,y.checkReady=f,t.bodymovin=y;var g=setInterval(f,100)}(window);}(window));
\ No newline at end of file
+(function(window){"use strict";function Matrix(t){var e=this;e._t=e.transform,e.a=e.d=1,e.b=e.c=e.e=e.f=0,e.props=[1,0,0,1,0,0],e.cssParts=["matrix(","",")"],e.a1=e.b1=e.c1=e.d1=e.e1=e.f1=0,e.context=t,e.cos=e.sin=0,t&&t.setTransform(1,0,0,1,0,0)}function matrixManagerFunction(){var t=new Matrix,e=function(t,e,a,r,i,n,s,o,h){var p,m,l,d,c,u,f;return p=$M([[1,0,0,0],[0,Math.cos(t),Math.sin(-t),0],[0,Math.sin(t),Math.cos(t),0],[0,0,0,1]]),m=$M([[Math.cos(e),0,Math.sin(e),0],[0,1,0,0],[Math.sin(-e),0,Math.cos(e),0],[0,0,0,1]]),l=$M([[Math.cos(a),Math.sin(-a),0,0],[Math.sin(a),Math.cos(a),0,0],[0,0,1,0],[0,0,0,1]]),c=$M([[r,0,0,0],[0,i,0,0],[0,0,n,0],[0,0,0,1]]),u=p.x(m).x(l).x(c),u=u.transpose(),f=$M([[1,0,0,0],[0,1,0,0],[0,0,1,0],[s,o,h,1]]),u=u.x(f),d="matrix3d(",d+=u.e(1,1).toFixed(5)+","+u.e(1,2).toFixed(5)+","+u.e(1,3).toFixed(5)+","+u.e(1,4).toFixed(5)+",",d+=u.e(2,1).toFixed(5)+","+u.e(2,2).toFixed(5)+","+u.e(2,3).toFixed(5)+","+u.e(2,4).toFixed(5)+",",d+=u.e(3,1).toFixed(5)+","+u.e(3,2).toFixed(5)+","+u.e(3,3).toFixed(5)+","+u.e(3,4).toFixed(5)+",",d+=u.e(4,1).toFixed(5)+","+u.e(4,2).toFixed(5)+","+u.e(4,3).toFixed(5)+","+u.e(4,4).toFixed(5),d+=")"},a=function(e,a,r,i,n){return t.reset().translate(i,n).rotate(e).scale(a,r).toCSS()},r=function(e,a,r,i,n){return t.reset().translate(i,n).rotate(e).scale(a,r).toArray()},i=function(t){return a(t.r,t.s[0],t.s[1],t.p[0],t.p[1])},n=function(t,r){return r?e(-t.tr.r[0],t.tr.r[1],t.tr.r[2],t.tr.s[0],t.tr.s[1],t.tr.s[2],t.tr.p[0],t.tr.p[1],t.tr.p[2]):a(t.tr.r[2],t.tr.s[0],t.tr.s[1],t.tr.p[0],t.tr.p[1])},s=function(t,r){return r?e(-t.r[0],t.r[1],t.r[2],t.s[0],t.s[1],t.s[2],t.p[0],t.p[1],t.p[2]):a(t.r[2],t.s[0],t.s[1],t.p[0],t.p[1])},o=function(t,e){return e?null:r(t.r[2],t.s[0],t.s[1],t.p[0],t.p[1])};return{get2DMatrix:i,getMatrix:n,getMatrix2:s,getMatrixArray:o,getMatrixArrayFromParams:r,getMatrix2FromParams:a}}function styleDiv(t){t.style.position="absolute",t.style.top=0,t.style.left=0,t.style.display="block",t.style.verticalAlign="top",t.style.backfaceVisibility=t.style.webkitBackfaceVisibility="hidden",styleUnselectableDiv(t)}function styleUnselectableDiv(t){t.style.userSelect="none",t.style.MozUserSelect="none",t.style.webkitUserSelect="none",t.style.oUserSelect="none"}function randomString(t,e){void 0===e&&(e="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890");var a,r="";for(a=t;a>0;--a)r+=e[Math.round(Math.random()*(e.length-1))];return r}function componentToHex(t){var e=t.toString(16);return 1==e.length?"0"+e:e}function rgbToHex(t,e,a){return 0>t&&(t=0),0>e&&(e=0),0>a&&(a=0),"#"+colorMap[t]+colorMap[e]+colorMap[a]}function fillToRgba(t,e){if(!cachedColors[t]){var a=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);cachedColors[t]=parseInt(a[1],16)+","+parseInt(a[2],16)+","+parseInt(a[3],16)}return"rgba("+cachedColors[t]+","+e+")"}function createColorMap(){var t,e;for(t=0;256>t;t+=1)e=t.toString(16),colorMap[t]=1==e.length?"0"+e:e}function createElement(t,e,a){if(!e){var r=Object.create(t.prototype,a),i={};return r&&"[object Function]"===i.toString.call(r.init)&&r.init(),r}e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.prototype.parent=t.prototype}function defineDescriptor(t,e,a,r){var i={writable:!1,configurable:!1,enumerable:!1,value:a};if(r)for(var n in r)i[n]=r[n];var s={};t&&"[object Function]"===s.toString.call(t)&&(t=t.prototype),Object.defineProperty(t,e,i)}function defineAccessor(t,e,a){var r,i={enumerable:!1,configurable:!1,get:function(){return r},set:function(t){r=t}};if(a)for(var n in a)i[n]=a[n];var s={};t&&"[object Function]"===s.toString.call(t)&&(t=t.prototype),Object.defineProperty(t,e,i)}function bezFunction(){function t(t,e,a,r,i,n){return o.abs((a-t)*(n-e)-(i-t)*(r-e))<1e-5}function e(t){return n[t].fnc}function a(t,e,a,r,i){if(i||(i=("bez_"+t+"_"+e+"_"+a+"_"+r).replace(/\./g,"p")),n[i])return n[i];var s,o,h,p,m,l;return n[i]=function(i,n,d,c,u){for(var f,y=n/u,i=y,g=0;++g<14&&(h=3*t,o=3*(a-t)-h,s=1-h-o,f=i*(h+i*(o+i*s))-y,!(Math.abs(f)<.001));)i-=f/(h+i*(2*o+3*s*i));l=3*e,m=3*(r-e)-l,p=1-l-m;var v=i*(l+i*(m+i*p));return c*v+d},n[i]}function r(e,a,r,i){var n=(e.join("_")+"_"+a.join("_")+"_"+r.join("_")+"_"+i.join("_")).replace(/\./g,"p");if(s[n])return s[n];var o,h,p,m,l,d,c,u,f,y,g,v,x=500,E=0,C=null,b={points:[],segmentLength:0};for(t(e[0],e[1],a[0],a[1],r[0],r[1])&&t(e[0],e[1],a[0],a[1],i[0],i[1])&&(x=2),p=r.length,o=0;x>o;o+=1){for(v=[],y=o/(x-1),g=0,h=0;p>h;h+=1)m=e[h]+(r[h]-e[h])*y,l=r[h]+(i[h]-r[h])*y,d=i[h]+(a[h]-i[h])*y,c=m+(l-m)*y,u=l+(d-l)*y,f=c+(u-c)*y,v.push(f),null!==C&&(g+=Math.pow(v[h]-C[h],2));g=Math.sqrt(g),E+=g,b.points.push({partialLength:g,cumulatedLength:E,point:v}),C=v}return b.segmentLength=E,s[n]=b,b}function i(e){var a,r,i,n,s,o,h,p,m,l,d,c,u=e.s,f=e.e,y=e.to,g=e.ti,v=500,x=0,E=null,C={points:[],segmentLength:0};for(t(u[0],u[1],f[0],f[1],u[0]+y[0],u[1]+y[1])&&t(u[0],u[1],f[0],f[1],f[0]+g[0],f[1]+g[1])&&(v=2),i=y.length,a=0;v>a;a+=1){for(c=[],l=a/(v-1),d=0,r=0;i>r;r+=1)n=u[r]+y[r]*l,s=u[r]+y[r]+(f[r]+g[r]-(u[r]+y[r]))*l,o=f[r]+g[r]+-g[r]*l,h=n+(s-n)*l,p=s+(o-s)*l,m=h+(p-h)*l,c.push(m),null!==E&&(d+=Math.pow(c[r]-E[r],2));d=Math.sqrt(d),x+=d,C.points.push({partialLength:d,cumulatedLength:x,point:c}),E=c}C.segmentLength=x,e.bezierData=C}var n=[],s={},o=Math,h={getEasingCurve:a,getEasingCurveByIndex:e,drawBezierCurve:r,buildBezierData:i};return h}function dataFunctionManager(){function t(t,e,a){var r,i=s(t,e,a),n=[];for(r=0;e>r;r+=1)n.push(Math.floor(i[r]*f));return n}function e(t,e){var a,r,i,n=t.length;for(a=0;n>a;a+=1)if(void 0!==t[a].t)if(t[a].s instanceof Array)for(i=t[a].s.length,r=0;i>r;r+=1)t[a].s[r]*=e,t[a].e[r]*=e;else t[a].s&&(t[a].s*=e,t[a].e*=e);else t[a]=t[a]*e}function a(i){var s,o,h,p,m,l,d,c,u,f,y,g=i.length;for(d=0;g>d;d+=1){if(h=i[d],s=h.outPoint-h.startTime,o=h.startTime,h.layerName=n(h.layerName),h.parent&&(h.parent=n(h.parent)),h.renderedFrame={},h.renderedData={},p=[],m=-1,h.tm&&(h.tm=t(h.tm,s,o)),h.ks.o instanceof Array?e(h.ks.o,.01):h.ks.o/=100,h.ks.s instanceof Array?e(h.ks.s,.01):h.ks.s/=100,h.ks.r instanceof Array?e(h.ks.r,v):h.ks.r*=v,h.hasMask){var x=h.masksProperties;for(u=x.length,c=0;u>c;c+=1)if(x[c].pt.i)r(x[c].pt);else for(y=x[c].pt.length,f=0;y>f;f+=1)x[c].pt[f].s&&r(x[c].pt[f].s[0]),x[c].pt[f].e&&r(x[c].pt[f].e[0])}if("PreCompLayer"==h.type)a(h.layers);else if("ShapeLayer"==h.type)for(u=h.shapes.length,c=0;u>c;c+=1)if(l=h.shapes[c],l.renderedData={},l.tr.o instanceof Array?e(l.tr.o,.01):l.tr.o/=100,l.tr.s instanceof Array?e(l.tr.s,.01):l.tr.s/=100,l.tr.r instanceof Array?e(l.tr.r,v):l.tr.r*=v,l.fl&&(l.fl.o instanceof Array?e(l.fl.o,.01):l.fl.o*=.01),l.st&&(l.st.o instanceof Array?e(l.st.o,.01):l.st.o*=.01),l.ks)if(l.ks.i)r(l.ks);else for(y=l.ks.length,f=0;y>f;f+=1)l.ks[f].s&&(r(l.ks[f].s[0]),r(l.ks[f].e[0]))}}function r(t){var e,a=t.i.length;for(e=0;a>e;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 i(t){g[t._id]={data:t,renderedFrames:[]},f=t.animation.frameRate,a(t.animation.layers)}function n(t){return t=t.replace(/ /g,"_"),t=t.replace(/-/g,"_"),t=t.replace(/\./g,"_"),t=t.replace(/\//g,"_")}function s(t,e,a){var r,i,n=[];if(!(t instanceof Array)||null==t[0].t)return n.push(t),n;var s,o;n=[];var h,p,m,l=[];i=t.length;var d,c=1e3,u=[],f=[];for(r=0;i>r;r+=1)if(s=t[r],s.t-=a,s.to){var y,g,v,x,E,C,b,d,F,S,A=0,I=null,w={points:[],length:0};for(y=0;c>y;y+=1)S=[],d=y/(c-1),F=0,u=[],f=[],s.to.forEach(function(t,e){null==u[e]&&(u[e]=s.s[e]+s.to[e],f[e]=s.e[e]+s.ti[e]),g=s.s[e]+(u[e]-s.s[e])*d,v=u[e]+(f[e]-u[e])*d,x=f[e]+(s.e[e]-f[e])*d,E=g+(v-g)*d,C=v+(x-v)*d,b=E+(C-E)*d,S.push(b),null!==I&&(F+=Math.pow(S[e]-I[e],2))}),F=Math.sqrt(F),A+=F,w.points.push({partialLength:A,point:S}),I=S,s.bezierData=w;w.segmentLength=A}var M=0,k=0;for(r=0;e>r;r+=1){h=M;for(var T=!1;i-1>h;){if(s=t[h],o=t[h+1],r<s.t&&0==h){for(m=s.s.length,l=[],p=0;m>p;p+=1)l.push(s.s[p]);n.push(l),T=!0,M!=h&&(M=h,k=0);break}if(r>=s.t&&r<o.t){if(l=[],s.to){d=bez.getEasingCurve(s.o.x,s.o.y,s.i.x,s.i.y)("",r-s.t,0,1,o.t-s.t);var y,D,_,w=s.bezierData,P=w.segmentLength*d;for(p=k;p<w.points.length;){if(0==r||0==P||0==d){l=w.points[p].point,k=p;break}if(p==w.points.length-1)l=w.points[p].point;else if(P>w.points[p].partialLength&&P<w.points[p+1].partialLength){for(D=w.points[p].point.length,_=(P-w.points[p].partialLength)/(w.points[p+1].partialLength-w.points[p].partialLength),y=0;D>y;y+=1)l.push(w.points[p].point[y]+(w.points[p+1].point[y]-w.points[p].point[y])*_);k=p;break}p+=1}}else{var V,N,z,L;s.s.forEach(function(t,e){if(1!==s.h&&(s.o.x instanceof Array?(V=s.o.x[e],N=s.o.y[e],z=s.i.x[e],L=s.i.y[e]):(V=s.o.x,N=s.o.y,z=s.i.x,L=s.i.y),d=bez.getEasingCurve(V,N,z,L)("",r-s.t,0,1,o.t-s.t)),t.i){var a={i:[],o:[],v:[]};t.i.forEach(function(r,i){var n=[],o=[],h=[];r.forEach(function(a,r){1===s.h?(n.push(a),o.push(t.o[i][r]),h.push(t.v[i][r])):(n.push(a+(s.e[e].i[i][r]-a)*d),o.push(t.o[i][r]+(s.e[e].o[i][r]-t.o[i][r])*d),h.push(t.v[i][r]+(s.e[e].v[i][r]-t.v[i][r])*d))}),a.i.push(n),a.o.push(o),a.v.push(h)}),l.push(a)}else l.push(1===s.h?t:t+(s.e[e]-t)*d)})}n.push(l),T=!0,M!=h&&(M=h,k=0);break}h+=1}0==T&&(s=t[t.length-2],l=[],s.e.forEach(function(t){l.push(t)}),n.push(l))}for(h=n.length;e>h;)n.push(l),h+=1;return n}function o(t,e,a,r){var i,n,s,o,h,p;if(!t.length)return"p"==r.type?(E.px=t,E.py=t):"s"==r.type?(E.sx=t,E.sy=t):"r"==r.type&&(E.r=t),r.toArray?[t]:t;if(null==t[0].t)return"p"==r.type?(E.px=t[0],E.py=t[1]):"s"==r.type?(E.sx=t[0],E.sy=t[1]):"r"==r.type&&(E.r=t[0]),t;h=0,p=t.length-1;for(var m=1,l=!0;!(!l||(i=t[h],n=t[h+1],h==p-1&&e>=n.t-a)||n.t-a>e&&1==m);){if(n.t-a<e&&-1==m){h+=1,i=t[h],n=t[h+1];break}p-1>h&&1==m||h>0&&-1==m?h+=m:l=!1}i.to&&!i.bezierData&&bez.buildBezierData(i);var d,c,u,f=0;if("default"==r.type&&(s=[]),i.to){if(o=i.bezierData,e>=n.t-a)return"p"==r.type?(E.px=o.points[o.points.length-1].point[0],E.py=o.points[o.points.length-1].point[1]):"s"==r.type?(E.sx=o.points[o.points.length-1].point[0],E.sy=o.points[o.points.length-1].point[1]):"r"==r.type&&(E.r=o.points[o.points.length-1].point[0]),o.points[o.points.length-1].point;if(e<i.t-a)return"p"==r.type?(E.px=o.points[0].point[0],E.py=o.points[0].point[1]):"s"==r.type?(E.sx=o.points[0].point[0],E.sy=o.points[0].point[1]):"r"==r.type&&(E.r=o.points[0].point[0]),o.points[0].point;var y;i.__fnct?y=i.__fnct:(y=bez.getEasingCurve(i.o.x,i.o.y,i.i.x,i.i.y,i.n),i.__fnct=y),u=y("",e-(i.t-a),0,1,n.t-a-(i.t-a));var g,v=o.segmentLength*u,x=0;for(m=1,l=!0,jLen=o.points.length;l;){if(x+=o.points[f].partialLength*m,0==v||0==u){"p"==r.type?(E.px=o.points[f].point[0],E.py=o.points[f].point[1]):"s"==r.type?(E.sx=o.points[f].point[0],E.sy=o.points[f].point[1]):"r"==r.type?E.r=o.points[f].point[0]:s=o.points[f].point;break}if(f==o.points.length-1){"p"==r.type?(E.px=o.points[f].point[0],E.py=o.points[f].point[1]):"s"==r.type?(E.sx=o.points[f].point[0],E.sy=o.points[f].point[1]):"r"==r.type?E.r=o.points[f].point[0]:s=o.points[f].point;break}if(v>x&&v<x+o.points[f+1].partialLength){if(g=(v-x)/o.points[f+1].partialLength,"p"==r.type)E.px=o.points[f].point[0]+(o.points[f+1].point[0]-o.points[f].point[0])*g,E.py=o.points[f].point[1]+(o.points[f+1].point[1]-o.points[f].point[1])*g;else if("s"==r.type)E.sx=o.points[f].point[0]+(o.points[f+1].point[0]-o.points[f].point[0])*g,E.sy=o.points[f].point[1]+(o.points[f+1].point[1]-o.points[f].point[1])*g;else if("r"==r.type)E.r=o.points[f].point[0]+(o.points[f+1].point[0]-o.points[f].point[0])*g;else for(c=o.points[f].point.length,d=0;c>d;d+=1)s.push(o.points[f].point[d]+(o.points[f+1].point[d]-o.points[f].point[d])*g);break}f<jLen-1&&1==m||f>0&&-1==m?f+=m:l=!1}}else{var C,b,F,S,A=!1;for(p=i.s.length,h=0;p>h;h+=1){if(1!==i.h){i.o.x instanceof Array?(A=!0,C=i.o.x[h]?i.o.x[h]:i.o.x[0],b=i.o.y[h]?i.o.y[h]:i.o.y[0],F=i.i.x[h]?i.i.x[h]:i.i.x[0],S=i.i.y[h]?i.i.y[h]:i.i.y[0],i.__fnct||(i.__fnct=[])):(A=!1,C=i.o.x,b=i.o.y,F=i.i.x,S=i.i.y);var y;A?i.__fnct[h]?y=i.__fnct[h]:(y=bez.getEasingCurve(C,b,F,S),i.__fnct[h]=y):i.__fnct?y=i.__fnct:(y=bez.getEasingCurve(C,b,F,S),i.__fnct=y),u=y("",e-(i.t-a),0,1,n.t-a-(i.t-a)),e>=n.t-a?u=1:e<i.t-a&&(u=0)}1===i.h?"p"==r.type?0==h?E.px=i.s[h]:1==h&&(E.py=i.s[h]):"s"==r.type?0==h?E.sx=i.s[h]:1==h&&(E.sy=i.s[h]):"r"==r.type?E.r=i.s[h]:s.push(i.s[h]):"p"==r.type?0==h?E.px=i.s[h]+(i.e[h]-i.s[h])*u:1==h&&(E.py=i.s[h]+(i.e[h]-i.s[h])*u):"s"==r.type?0==h?E.sx=i.s[h]+(i.e[h]-i.s[h])*u:1==h&&(E.sy=i.s[h]+(i.e[h]-i.s[h])*u):"r"==r.type?E.r=i.s[h]+(i.e[h]-i.s[h])*u:s.push(i.s[h]+(i.e[h]-i.s[h])*u)}}return s}function h(t,e,a,r,i){var n={};n.closed=i?t.cl:t.closed;var s=i?t.pt:t.ks;if(s.v)return"svg"==r?(s.__pathString||(s.__pathString=p(s,n.closed)),n.pathString=s.__pathString):n.pathNodes=s,n;var o,h,m,l,d,c,u,t={i:[],o:[],v:[]},f=[];if(e<s[0].t-a){for(h=s[0].s[0].i.length,o=0;h>o;o+=1){for(d=[],c=[],u=[],l=s[0].s[0].i[o].length,m=0;l>m;m+=1)d.push(s[0].s[0].i[o][m]),c.push(s[0].s[0].o[o][m]),u.push(s[0].s[0].v[o][m]);t.i.push(d),t.o.push(c),t.v.push(u)}return f.push(t),"svg"==r?(s.__minValue||(s.__minValue=p(f,n.closed)),n.pathString=s.__minValue):(s.__minValue||(s.__minValue=f),n.pathNodes=s.__minValue),n}if(e>s[s.length-1].t-a){var y=s.length-2;for(h=s[y].s[0].i.length,o=0;h>o;o+=1){for(d=[],c=[],u=[],l=s[y].s[0].i[o].length,m=0;l>m;m+=1)d.push(s[y].e[0].i[o][m]),c.push(s[y].e[0].o[o][m]),u.push(s[y].e[0].v[o][m]);t.i.push(d),t.o.push(c),t.v.push(u)}return f.push(t),"svg"==r?(s.__maxValue||(s.__maxValue=p(f,n.closed)),n.pathString=s.__maxValue):(s.__maxValue||(s.__maxValue=f),n.pathNodes=s.__maxValue),n}for(var g,v,x=0,E=s.length-1,C=1,b=!0;b&&(g=s[x],v=s[x+1],!(v.t-a>e&&1==C));)E-1>x&&1==C||x>0&&-1==C?x+=C:b=!1;var F,S,A,I,w;if(1!==g.h){F=g.o.x,S=g.o.y,A=g.i.x,I=g.i.y;var M;g.__fnct?M=g.__fnct:(M=bez.getEasingCurve(F,S,A,I),g.__fnct=M),w=M("",e-(g.t-a),0,1,v.t-a-(g.t-a)),e>=v.t-a?w=1:e<g.t-a&&(w=0)}if(1===g.h&&g.__hValue)f.push(g.__hValue);else for(t={i:[],o:[],v:[]},h=g.s[0].i.length,o=0;h>o;o+=1){for(d=[],c=[],u=[],l=g.s[0].i[o].length,m=0;l>m;m+=1)1===g.h?(d.push(g.s[0].i[o][m]),c.push(g.s[0].o[o][m]),u.push(g.s[0].v[o][m])):(d.push(g.s[0].i[o][m]+(g.e[0].i[o][m]-g.s[0].i[o][m])*w),c.push(g.s[0].o[o][m]+(g.e[0].o[o][m]-g.s[0].o[o][m])*w),u.push(g.s[0].v[o][m]+(g.e[0].v[o][m]-g.s[0].v[o][m])*w));t.i.push(d),t.o.push(c),t.v.push(u),1===g.h&&(g.__hValue=t),f.push(t)}return"svg"==r?n.pathString=p(f[0],n.closed):n.pathNodes=f[0],n}function p(t,e){var a,r,i,n,s,o,h="";if(!(t instanceof Array)){for(a=t.v,r=t.o,i=t.i,o=a.length,h+="M"+a[0].join(","),s=1;o>s;s++)h+=" C"+r[s-1].join(",")+" "+i[s].join(",")+" "+a[s].join(",");return e!==!1&&(h+=" C"+r[s-1].join(",")+" "+i[0].join(",")+" "+a[0].join(",")),h}var p,m=t.length;for(h="",p=0;m>p;p+=1){for(n=t[p],a=n.v,r=n.o,i=n.i,o=a.length,h+="M"+a[0].join(","),s=1;o>s;s++)h+=" C"+r[s-1].join(",")+" "+i[s].join(",")+" "+a[s].join(",");e!==!1&&(h+=" C"+r[s-1].join(",")+" "+i[0].join(",")+" "+a[0].join(","))}return h}function m(t,e,a){var r,i,n,s,p,d,c,u,f,g,v,C,b,F,S,A,I,w,M,k={},T=t.length;for(w=0;T>w;w+=1)if(M=t[w],b=e-M.startTime,!M.an[b]){if(r={},x.arrayFlag=!1,x.type="default",r.a=o(M.ks.a,b,M.startTime,x),r.o=o(M.ks.o,b,M.startTime,x),x.arrayFlag=!1,x.type="p",o(M.ks.p,b,M.startTime,x),x.arrayFlag=!0,x.type="r",o(M.ks.r,b,M.startTime,x),x.arrayFlag=!0,x.type="s",o(M.ks.s,b,M.startTime,x),A={},A.an={tr:r},x.arrayFlag=!1,x.type="default","canvas"==a?A.an.matrixArray=y.getMatrixArrayFromParams(E.r,E.sx,E.sy,E.px,E.py):A.an.matrixValue=y.getMatrix2FromParams(E.r,E.sx,E.sy,E.px,E.py)+"translate("+-r.a[0]+" "+-r.a[1]+")",M.renderedData[b]=A,M.hasMask)for(i=M.masksProperties,S=i.length,F=0;S>F;F+=1)i[F].paths||(i[F].paths=[],i[F].opacity=[]),i[F].paths[b]=h(i[F],b,M.startTime,a,!0),i[F].opacity[b]=o(i[F].o,b,M.startTime,x),i[F].opacity[b]=i[F].opacity[b]instanceof Array?i[F].opacity[b][0]/100:i[F].opacity[b]/100;if(!(e<M.inPoint||e>M.outPoint))if("PreCompLayer"==M.type)n=M.tm?M.tm[b]<0?0:M.tm[b]:b,m(M.layers,n,a);else if("ShapeLayer"==M.type)for(S=M.shapes.length,F=0;S>F;F+=1){if(I={},s=M.shapes[F],s.renderedData[b]=I,s._created||(s.an.tr=[],s.an.renderedFrame={},s.ks?s.an.path=[]:s.el?s.an.ell=[]:s.rc&&(s.an.rect=[]),s.fl&&(s.an.fill=[]),s.st&&(s.an.stroke=[])),s.trim&&!s._created&&(s.trim.an=[]),s.fl&&(d=o(s.fl.c,b,M.startTime,x),p=o(s.fl.o,b,M.startTime,x),I.fill={opacity:p instanceof Array?p[0]:p},"canvas"==a?(l(d),I.fill.color=d):I.fill.color=rgbToHex(Math.round(d[0]),Math.round(d[1]),Math.round(d[2]))),s.ks?I.path=h(s,b,M.startTime,a):s.el?(g=o(s.el.p,b,M.startTime,x),v=o(s.el.s,b,M.startTime,x),I.ell={p:g,size:v}):s.rc&&(g=o(s.rc.p,b,M.startTime,x),v=o(s.rc.s,b,M.startTime,x),C=o(s.rc.r,b,M.startTime,x),I.rect={position:g,size:v,roundness:C}),s.st&&(c=o(s.st.c,b,M.startTime,x),u=o(s.st.o,b,M.startTime,x),f=o(s.st.w,b,M.startTime,x),I.stroke={opacity:u instanceof Array?u[0]:u,width:f instanceof Array?f[0]:f},"canvas"==a?(l(c),I.stroke.color=c):I.stroke.color=rgbToHex(Math.round(c[0]),Math.round(c[1]),Math.round(c[2]))),k={},k.a=o(s.tr.a,b,M.startTime,x),k.o=o(s.tr.o,b,M.startTime,x),x.arrayFlag=!0,x.type="s",o(s.tr.s,b,M.startTime,x),x.arrayFlag=!0,x.type="r",o(s.tr.r,b,M.startTime,x),x.arrayFlag=!1,x.type="p",o(s.tr.p,b,M.startTime,x),x.arrayFlag=!1,x.type="default","canvas"==a?k.mtArr=y.getMatrixArrayFromParams(E.r,E.sx,E.sy,E.px,E.py):k.mt=y.getMatrix2FromParams(E.r,E.sx,E.sy,E.px,E.py),s.an.tr[b]=k,I.tr=k,s.trim){var D=o(s.trim.s,b,M.startTime,x),_=o(s.trim.e,b,M.startTime,x),P=o(s.trim.o,b,M.startTime,x);I.trim={s:D,e:_,o:P}}s._created||(s._created=!0)}}}function l(t){var e,a=t.length;for(e=0;a>e;e+=1)t[e]=Math.round(t[e])}function d(t,e){for(var a=1;a>0;){if(e+=1,e>=t.data.animation.totalFrames){t.renderFinished=!0;break}t.renderedFrames[e]||(c(t.data._id,e),a-=1)}}function c(t,e){return 2==g[t].renderedFrames[e]?void(g[t].renderFinished||d(g[t],e)):(g[t].renderedFrames[e]=2,void m(g[t].data.animation.layers,e,g[t].data._animType))}function u(t){var e,a=g[t].data,r=a.animation.totalFrames,i=[];for(e=0;r>e;e+=1)i.push({num:e,data:c(t,e)})}var f=0,y=new MatrixManager,g={},v=Math.PI/180,x={arrayFlag:!1},E={r:0,sx:1,sy:1,px:1,py:1},C={};return C.completeData=i,C.renderFrame=c,C.renderAllFrames=u,C}function SVGRenderer(t){this.animationItem=t,this.layers=null,this.lastFrame=-1}function CanvasRenderer(t,e){this.animationItem=t,this.renderConfig=e?e:{clearCanvas:!0,context:null,scaleMode:"fit"},this.lastFrame=-1}function MaskElement(){this.data=null,this.element=null,this.paths=[]}function ICompElement(t,e){this.parent.constructor.call(this,t,e),this.layers=t.layers}function IImageElement(t,e){this.animationItem=e,this.assets=this.animationItem.getAssets(),this.path=this.animationItem.getPath(),this.parent.constructor.call(this,t,e)}function IShapeElement(t,e){this.shapes=[],this.parent.constructor.call(this,t,e)}function ShapeItemElement(t){this.data=t,this.shapeG=document.createElementNS(svgNS,"g"),this.pathLength=0,this.cachedData=[],this.renderedFrame={path:"",stroke:{},fill:{},tr:{a:[]},trim:{},ellipse:{},rect:{}},"pathShape"===this.data.type?this.shape=document.createElementNS(svgNS,"path"):"rectShape"===this.data.type?this.shape=document.createElementNS(svgNS,"rect"):"ellipseShape"===this.data.type?(this.shape=document.createElementNS(svgNS,"ellipse"),this.data.trim&&this.adjustTrim()):this.shape=document.createElementNS(svgNS,"path"),this.data.trim?this.shape.setAttribute("stroke-linecap","round"):(this.shape.setAttribute("stroke-linejoin","round"),this.shape.setAttribute("stroke-linecap","round")),this.data.renderedData||(this.data.renderedData={}),this.shape.setAttribute("name",this.data.name),styleUnselectableDiv(this.shapeG),styleUnselectableDiv(this.shape),this.shapeG.appendChild(this.shape)}function ISolidElement(t,e){this.parent.constructor.call(this,t,e)}function ITextElement(t,e){this.parent.constructor.call(this,t,e)}function CVBaseElement(t,e){this.renderer=e,this.data=t,this.currentAnimData=null,this.renderFrame=!1,this.init()}function CVCompElement(t,e){this.parent.constructor.call(this,t,e),this.layers=t.layers}function CVImageElement(t,e){this.renderer=e,this.animationItem=e.animationItem,this.assets=this.animationItem.getAssets(),this.path=this.animationItem.getPath(),this.parent.constructor.call(this,t,e),this.animationItem.pendingElements+=1}function CVShapeElement(t,e){this.shapes=[],this.parent.constructor.call(this,t,e)}function CVShapeItemElement(t,e){this.data=t,this.renderer=e,this.frameNum=-1,this.renderedPaths={},this.trims=[]}function CVSolidElement(t,e){this.parent.constructor.call(this,t,e)}function CVTextElement(t,e){this.parent.constructor.call(this,t,e)}function CVMaskElement(){}var svgNS="http://www.w3.org/2000/svg";Matrix.prototype={concat:function(t){return this.clone()._t(t.a,t.b,t.c,t.d,t.e,t.f)},flipX:function(){return this._t(-1,0,0,1,0,0)},flipY:function(){return this._t(1,0,0,-1,0,0)},reflectVector:function(t,e){var a=this.applyToPoint(0,1),r=2*(a.x*t+a.y*e);return t-=r*a.x,e-=r*a.y,{x:t,y:e}},reset:function(){return this.setTransform(1,0,0,1,0,0)},rotate:function(t){return 0==t?this:(this.cos=Math.cos(t),this.sin=Math.sin(t),this._t(this.cos,this.sin,-this.sin,this.cos,0,0))},rotateFromVector:function(t,e){return this.rotate(Math.atan2(e,t))},rotateDeg:function(t){return this.rotate(t*Math.PI/180)},scaleU:function(t){return this._t(t,0,0,t,0,0)},scale:function(t,e){return 1==t&&1==e?this:this._t(t,0,0,e,0,0)},scaleX:function(t){return this._t(t,0,0,1,0,0)},scaleY:function(t){return this._t(1,0,0,t,0,0)},shear:function(t,e){return this._t(1,e,t,1,0,0)},shearX:function(t){return this._t(1,0,t,1,0,0)},shearY:function(t){return this._t(1,t,0,1,0,0)},skew:function(t,e){return this.shear(Math.tan(t),Math.tan(e))},skewX:function(t){return this.shearX(Math.tan(t))},skewY:function(t){return this.shearY(Math.tan(t))},setTransform:function(t,e,a,r,i,n){return this.props[0]=t,this.props[1]=e,this.props[2]=a,this.props[3]=r,this.props[4]=i,this.props[5]=n,this._x()},translate:function(t,e){return this._t(1,0,0,1,t,e)},translateX:function(t){return this._t(1,0,0,1,t,0)},translateY:function(t){return this._t(1,0,0,1,0,t)},transform:function(t,e,a,r,i,n){return this.a1=this.props[0],this.b1=this.props[1],this.c1=this.props[2],this.d1=this.props[3],this.e1=this.props[4],this.f1=this.props[5],this.props[0]=this.a1*t+this.c1*e,this.props[1]=this.b1*t+this.d1*e,this.props[2]=this.a1*a+this.c1*r,this.props[3]=this.b1*a+this.d1*r,this.props[4]=this.a1*i+this.c1*n+this.e1,this.props[5]=this.b1*i+this.d1*n+this.f1,this._x()},divide:function(t){if(!t.isInvertible())throw"Input matrix is not invertible";var e=t.inverse();return this._t(e.a,e.b,e.c,e.d,e.e,e.f)},divideScalar:function(t){var e=this;return e.a/=t,e.b/=t,e.c/=t,e.d/=t,e.e/=t,e.f/=t,e._x()},inverse:function(){if(this.isIdentity())return new Matrix;if(this.isInvertible()){var t=this,e=t.a,a=t.b,r=t.c,i=t.d,n=t.e,s=t.f,o=new Matrix,h=e*i-a*r;return o.a=i/h,o.b=-a/h,o.c=-r/h,o.d=e/h,o.e=(r*s-i*n)/h,o.f=-(e*s-a*n)/h,o}throw"Matrix is not invertible."},interpolate:function(t,e,a){var r=this,i=a?new Matrix(a):new Matrix;return i.a=r.a+(t.a-r.a)*e,i.b=r.b+(t.b-r.b)*e,i.c=r.c+(t.c-r.c)*e,i.d=r.d+(t.d-r.d)*e,i.e=r.e+(t.e-r.e)*e,i.f=r.f+(t.f-r.f)*e,i._x()},interpolateAnim:function(t,e,a){var r=this,i=a?new Matrix(a):new Matrix,n=r.decompose(),s=t.decompose(),o=n.rotation+(s.rotation-n.rotation)*e,h=n.translate.x+(s.translate.x-n.translate.x)*e,p=n.translate.y+(s.translate.y-n.translate.y)*e,m=n.scale.x+(s.scale.x-n.scale.x)*e,l=n.scale.y+(s.scale.y-n.scale.y)*e;return i.translate(h,p),i.rotate(o),i.scale(m,l),i._x()},decompose:function(t){var e=this,a=e.a,r=e.b,i=e.c,n=e.d,s=Math.acos,o=Math.atan,h=Math.sqrt,p=Math.PI,m={x:e.e,y:e.f},l=0,d={x:1,y:1},c={x:0,y:0},u=a*n-r*i;if(t)a?(c={x:o(i/a),y:o(r/a)},d={x:a,y:u/a}):r?(l=.5*p,d={x:r,y:u/r},c.x=o(n/r)):(d={x:i,y:n},c.x=.25*p);else if(a||r){var f=h(a*a+r*r);l=r>0?s(a/f):-s(a/f),d={x:f,y:u/f},c.x=o((a*i+r*n)/(f*f))}else if(i||n){var y=h(i*i+n*n);l=.5*p-(n>0?s(-i/y):-s(i/y)),d={x:u/y,y:y},c.y=o((a*i+r*n)/(y*y))}else d={x:0,y:0};return{scale:d,translate:m,rotation:l,skew:c}},determinant:function(){return this.a*this.d-this.b*this.c},applyToPoint:function(t,e){var a=this;return{x:t*a.a+e*a.c+a.e,y:t*a.b+e*a.d+a.f}},applyToArray:function(t){var e,a,r=0,i=[];if("number"==typeof t[0])for(a=t.length;a>r;)e=this.applyToPoint(t[r++],t[r++]),i.push(e.x,e.y);else for(;e=t[r];r++)i.push(this.applyToPoint(e.x,e.y));return i},applyToTypedArray:function(t,e){for(var a,r=0,i=t.length,n=e?new Float64Array(i):new Float32Array(i);i>r;)a=this.applyToPoint(t[r],t[r+1]),n[r++]=a.x,n[r++]=a.y;return n},applyToContext:function(t){var e=this;return t.setTransform(e.a,e.b,e.c,e.d,e.e,e.f),e},isIdentity:function(){var t=this;return t._q(t.a,1)&&t._q(t.b,0)&&t._q(t.c,0)&&t._q(t.d,1)&&t._q(t.e,0)&&t._q(t.f,0)},isInvertible:function(){return!this._q(this.determinant(),0)},isValid:function(){return!this._q(this.a*this.d,0)},clone:function(t){var e=this,a=new Matrix;return a.a=e.a,a.b=e.b,a.c=e.c,a.d=e.d,a.e=e.e,a.f=e.f,t||(a.context=e.context),a},isEqual:function(t){var e=this,a=e._q;return a(e.a,t.a)&&a(e.b,t.b)&&a(e.c,t.c)&&a(e.d,t.d)&&a(e.e,t.e)&&a(e.f,t.f)},toArray:function(){return[this.props[0],this.props[1],this.props[2],this.props[3],this.props[4],this.props[5]]},toCSS:function(){return this.cssParts[1]=this.props.join(","),this.cssParts.join("")},toJSON:function(){var t=this;return'{"a":'+t.a+',"b":'+t.b+',"c":'+t.c+',"d":'+t.d+',"e":'+t.e+',"f":'+t.f+"}"},toString:function(){return""+this.toArray()},_q:function(t,e){return Math.abs(t-e)<1e-14},_x:function(){return this.context&&this.context.setTransform(this.a,this.b,this.c,this.d,this.e,this.f),this}};var MatrixManager=matrixManagerFunction;!function(){for(var t=0,e=["ms","moz","webkit","o"],a=0;a<e.length&&!window.requestAnimationFrame;++a)window.requestAnimationFrame=window[e[a]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[e[a]+"CancelAnimationFrame"]||window[e[a]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(e){var a=(new Date).getTime(),r=Math.max(0,16-(a-t)),i=window.setTimeout(function(){e(a+r)},r);return t=a+r,i}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(t){clearTimeout(t)})}();var subframeEnabled=!1,supportsPath2D="function"==typeof Path2D,cachedColors={},colorMap=[],body,fillColorToString=function(){var t=[];return function(e,a){return t[e[0]]||(t[e[0]]=[]),t[e[0]][e[1]]||(t[e[0]][e[1]]=[]),t[e[0]][e[1]][e[2]]||(void 0!=a&&(e[3]=a),t[e[0]][e[1]][e[2]]="rgba("+e.join(",")+")"),t[e[0]][e[1]][e[2]]}}();createColorMap(),function(t){function e(){this.commandArrays=[]}void 0==CanvasRenderingContext2D.prototype.ellipse&&(CanvasRenderingContext2D.prototype.ellipse=function(t,e,a,r,i,n,s,o){this.save(),this.translate(t,e),this.rotate(i),this.scale(a,r),this.arc(0,0,1,n,s,o),this.restore()}),supportsPath2D||(e.prototype.moveTo=function(t,e){this.commandArrays.push({type:"move",coord:[t,e]})},e.prototype.lineTo=function(t,e){this.commandArrays.push({type:"line",coord:[t,e]})},e.prototype.bezierCurveTo=function(t,e,a,r,i,n){this.commandArrays.push({type:"bezierCurve",coord:[t,e,a,r,i,n]})},e.prototype.drawToContext=function(t){var e,a,r=this.commandArrays.length;for(t.beginPath(),a=0;r>a;a+=1)switch(e=this.commandArrays[a],e.type){case"move":t.moveTo(e.coord[0],e.coord[1]);break;case"line":t.lineTo(e.coord[0],e.coord[1]);break;case"bezierCurve":t.bezierCurveTo(e.coord[0],e.coord[1],e.coord[2],e.coord[3],e.coord[4],e.coord[5])}},t.Path2D=e)}(window);var bez=bezFunction(),dataManager=dataFunctionManager();SVGRenderer.prototype.buildItems=function(t){var e,a=0,r=t.length;for(e=0;r>e;e++)"StillLayer"==t[e].type?(a++,this.createImage(t[e])):"PreCompLayer"==t[e].type?this.createComp(t[e]):"SolidLayer"==t[e].type?this.createSolid(t[e]):"ShapeLayer"==t[e].type?this.createShape(t[e]):"TextLayer"==t[e].type?this.createText(t[e]):console.log("NO TYPE: ",t[e])},SVGRenderer.prototype.createShape=function(t){t.element=new IShapeElement(t,this.animationItem)},SVGRenderer.prototype.createText=function(t){t.element=new ITextElement(t,this.animationItem)},SVGRenderer.prototype.createImage=function(t){t.element=new IImageElement(t,this.animationItem)},SVGRenderer.prototype.createComp=function(t){t.element=new ICompElement(t,this.animationItem),this.buildItems(t.layers,t.element.getType())},SVGRenderer.prototype.createSolid=function(t){t.element=new ISolidElement(t,this.animationItem)},SVGRenderer.prototype.configAnimation=function(t){this.animationItem.container=document.createElementNS(svgNS,"svg"),this.animationItem.container.setAttribute("xmlns","http://www.w3.org/2000/svg"),this.animationItem.container.setAttribute("width",t.animation.compWidth),this.animationItem.container.setAttribute("height",t.animation.compHeight),this.animationItem.container.setAttribute("viewBox","0 0 "+t.animation.compWidth+" "+t.animation.compHeight),this.animationItem.container.setAttribute("preserveAspectRatio","xMidYMid meet"),this.animationItem.container.style.width="100%",this.animationItem.container.style.height="100%",this.animationItem.container.style.transformOrigin=this.animationItem.container.style.mozTransformOrigin=this.animationItem.container.style.webkitTransformOrigin=this.animationItem.container.style["-webkit-transform"]="0px 0px 0px",this.animationItem.wrapper.appendChild(this.animationItem.container);var e=document.createElementNS(svgNS,"defs");this.animationItem.container.appendChild(e);var a=document.createElementNS(svgNS,"clipPath"),r=document.createElementNS(svgNS,"rect");r.setAttribute("width",t.animation.compWidth),r.setAttribute("height",t.animation.compHeight),r.setAttribute("x",0),r.setAttribute("y",0),a.setAttribute("id","animationMask"),a.appendChild(r);var i=document.createElementNS(svgNS,"g");i.setAttribute("clip-path","url(#animationMask)"),this.animationItem.container.appendChild(i),e.appendChild(a),this.animationItem.container=i,this.layers=t.animation.layers},SVGRenderer.prototype.buildStage=function(t,e){var a,r,i=e.length;for(a=i-1;a>=0;a--){if(r=e[a],r.parent){this.buildItemParenting(r,e,r.parent);var n=r.element.getDomElement();n.setAttribute("data-layer-name",r.layerName),t.appendChild(n),r.element.setMainElement(n)}else r.element.getDomElement().setAttribute("data-layer-name",r.layerName),t.appendChild(r.element.getDomElement()),r.element.setMainElement(r.element.getDomElement());"PreCompLayer"==r.type&&this.buildStage(r.element.getComposingElement(),r.layers,r.element.getType())}},SVGRenderer.prototype.buildItemParenting=function(t,e,a){t.parents||(t.parents=[]);for(var r=0,i=e.length;i>r;){if(e[r].layerName==a){t.parents.push({elem:e[r]}),e[r].parent&&this.buildItemParenting(t,e,e[r].parent);break}r+=1}},SVGRenderer.prototype.updateContainerSize=function(){},SVGRenderer.prototype.renderFrame=function(t){if(this.lastFrame!=t){this.lastFrame=t;var e,a=this.layers.length;for(e=0;a>e;e++)this.layers[e].element.prepareFrame(t-this.layers[e].startTime);for(e=0;a>e;e++)this.layers[e].element.renderFrame(t-this.layers[e].startTime)}},CanvasRenderer.prototype.buildItems=function(t){var e,a=0,r=t.length;for(e=0;r>e;e++)"StillLayer"==t[e].type?(a++,this.createImage(t[e])):"PreCompLayer"==t[e].type?this.createComp(t[e]):"SolidLayer"==t[e].type?this.createSolid(t[e]):"ShapeLayer"==t[e].type?this.createShape(t[e]):"TextLayer"==t[e].type?this.createText(t[e]):(this.createBase(t[e]),console.log("NO TYPE: ",t[e]))},CanvasRenderer.prototype.createBase=function(t){t.element=new CVBaseElement(t,this)},CanvasRenderer.prototype.createShape=function(t){t.element=new CVShapeElement(t,this)},CanvasRenderer.prototype.createText=function(t){t.element=new CVTextElement(t,this)},CanvasRenderer.prototype.createImage=function(t){t.element=new CVImageElement(t,this)},CanvasRenderer.prototype.createComp=function(t){t.element=new CVCompElement(t,this),this.buildItems(t.layers)},CanvasRenderer.prototype.createSolid=function(t){t.element=new CVSolidElement(t,this)},CanvasRenderer.prototype.configAnimation=function(t){this.animationItem.wrapper?(this.animationItem.container=document.createElement("canvas"),this.animationItem.container.style.width="100%",this.animationItem.container.style.height="100%",this.animationItem.container.style.transformOrigin=this.animationItem.container.style.mozTransformOrigin=this.animationItem.container.style.webkitTransformOrigin=this.animationItem.container.style["-webkit-transform"]="0px 0px 0px",this.animationItem.wrapper.appendChild(this.animationItem.container),this.canvasContext=this.animationItem.container.getContext("2d")):this.canvasContext=this.renderConfig.context,this.layers=t.animation.layers,this.transformCanvas={},this.transformCanvas.w=t.animation.compWidth,this.transformCanvas.h=t.animation.compHeight,this.updateContainerSize()
+},CanvasRenderer.prototype.updateContainerSize=function(){if(this.animationItem.wrapper&&this.animationItem.container){var t=this.animationItem.wrapper.offsetWidth,e=this.animationItem.wrapper.offsetHeight;this.animationItem.container.setAttribute("width",t),this.animationItem.container.setAttribute("height",e)}else var t=this.canvasContext.canvas.width,e=this.canvasContext.canvas.height;if("fit"==this.renderConfig.scaleMode){var a=t/e,r=this.transformCanvas.w/this.transformCanvas.h;r>a?(this.transformCanvas.sx=t/this.transformCanvas.w,this.transformCanvas.sy=t/this.transformCanvas.w,this.transformCanvas.tx=0,this.transformCanvas.ty=(e-this.transformCanvas.h*(t/this.transformCanvas.w))/2):(this.transformCanvas.sx=e/this.transformCanvas.h,this.transformCanvas.sy=e/this.transformCanvas.h,this.transformCanvas.tx=(t-this.transformCanvas.w*(e/this.transformCanvas.h))/2,this.transformCanvas.ty=0)}else this.transformCanvas.sx=1,this.transformCanvas.sy=1,this.transformCanvas.tx=0,this.transformCanvas.ty=0},CanvasRenderer.prototype.buildStage=function(t,e){var a,r,i=e.length;for(a=i-1;a>=0;a--)r=e[a],r.parent&&(r.parentHierarchy=[],this.buildItemHierarchy(r,e,r.parent)),"PreCompLayer"==r.type&&this.buildStage(null,r.layers)},CanvasRenderer.prototype.buildItemHierarchy=function(t,e,a){for(var r=0,i=e.length;i>r;){if(e[r].layerName==a){t.parentHierarchy.push(e[r]),void 0==e[r].parent||this.buildItemHierarchy(t,e,e[r].parent);break}r+=1}},CanvasRenderer.prototype.prepareFrame=function(t){var e,a=this.layers.length;for(e=0;a>e;e++)this.layers[e].element.prepareFrame(t-this.layers[e].startTime)},CanvasRenderer.prototype.draw=function(){var t,e=this.layers.length;for(t=e-1;t>=0;t-=1)this.layers[t].element.draw()},CanvasRenderer.prototype.renderFrame=function(t){this.lastFrame!=t&&(this.lastFrame=t,this.renderConfig.clearCanvas===!0?this.canvasContext.canvas.width=this.canvasContext.canvas.width:this.canvasContext.save(),this.canvasContext.transform(this.transformCanvas.sx,0,0,this.transformCanvas.sy,this.transformCanvas.tx,this.transformCanvas.ty),this.canvasContext.beginPath(),this.canvasContext.rect(0,0,this.transformCanvas.w,this.transformCanvas.h),this.canvasContext.clip(),this.prepareFrame(t),this.draw(),this.renderConfig.clearCanvas!==!0&&this.canvasContext.restore())},MaskElement.prototype.init=function(){this.registeredEffects=[],this.masksProperties=this.data.masksProperties,this.totalMasks=this.masksProperties.length;var t=this.element.maskingGroup,e=this.element.maskedElement,a=document.createElementNS(svgNS,"defs");t.appendChild(a);var r,i=this.masksProperties.length;this.layerSize=this.element.getLayerSize(),this.maskElement=document.createElementNS(svgNS,"clipPath");var n,s=this.data.masksProperties;for(r=0;i>r;r++)s[r].inv&&!this.solidPath&&(this.solidPath=this.createLayerSolidPath()),n=document.createElementNS(svgNS,"path"),s[r].cl?n.setAttribute("fill","#ffffff"):(n.setAttribute("fill","none"),n.setAttribute("stroke","#ffffff"),n.setAttribute("stroke-width","1"),n.setAttribute("stroke-miterlimit","10")),n.setAttribute("clip-rule","nonezero"),this.maskElement.appendChild(n),s[r].elem=n,s[r].lastPath="";var o=randomString(10);this.maskElement.setAttribute("id",o),e.setAttribute("clip-path","url(#"+o+")"),a.appendChild(this.maskElement)},MaskElement.prototype.renderFrame=function(t){var e,a=this.data.masksProperties.length;for(e=0;a>e;e++)this.drawPath(this.data.masksProperties[e],this.data.masksProperties[e].paths[t].pathString)},MaskElement.prototype.processMaskFromEffects=function(t,e){var a,r=this.registeredEffects.length;for(a=0;r>a;a++)this.registeredEffects[a].renderMask(t,e)},MaskElement.prototype.registerEffect=function(t){this.registeredEffects.push(t)},MaskElement.prototype.getMaskelement=function(){return this.maskElement},MaskElement.prototype.createLayerSolidPath=function(){var t="M0,0 ";return t+="h"+this.layerSize.w,t+="v"+this.layerSize.h,t+="h"+-this.layerSize.w,t+="v"+-this.layerSize.h},MaskElement.prototype.drawPath=function(t,e){t.lastPath!==e&&(t.inv?t.elem.setAttribute("d",this.solidPath+e):t.elem.setAttribute("d",e),t.lastPath=e)};var BaseElement=function(t,e){this.animationItem=e,this.data=t,this.transformChanged=!1,this.forceRender=!1,this.init()};BaseElement.prototype.init=function(){this.createElements(),this.data.hasMask&&this.addMasks(this.data),this.data.eff&&this.createEffectsManager(this.data)},BaseElement.prototype.createElements=function(){this.layerElement=document.createElementNS(svgNS,"g"),this.layerElement.setAttribute("id",this.data.layerName),this.maskingGroup=this.layerElement,this.maskedElement=this.layerElement},BaseElement.prototype.prepareFrame=function(t){this.currentAnimData=this.data.renderedData[t].an,this.data.renderedFrame.tr!==this.currentAnimData.matrixValue?(this.transformChanged=!0,this.data.renderedFrame.tr=this.currentAnimData.matrixValue):this.transformChanged=!1},BaseElement.prototype.renderFrame=function(t){if(this.data.inPoint-this.data.startTime<=t&&this.data.outPoint-this.data.startTime>t?this.isVisible!==!0&&(this.isVisible=!0,this.forceRender=!0,this.mainElement.setAttribute("opacity",1)):this.isVisible!==!1&&(this.isVisible=!1,this.mainElement.setAttribute("opacity",0)),this.data.eff&&this.effectsManager.renderFrame(t,this.currentAnimData.mk),t===this.data.renderedFrame.num)return this.isVisible;this.data.hasMask&&this.maskManager.renderFrame(t),this.data.renderedFrame.o!==this.currentAnimData.tr.o&&(this.data.renderedFrame.o=this.currentAnimData.tr.o,this.isVisible&&this.layerElement.setAttribute("opacity",this.currentAnimData.tr.o));var e="";if(this.data.parents){var a,r=!1,i=0,n=this.data.parents.length;if(this.transformChanged)r=!0;else for(;n>i;){if(this.data.parents[i].elem.element.transformChanged){r=!0;break}i+=1}if(r){for(i=n-1;i>=0;i-=1)a=this.data.parents[i].elem.element.currentAnimData,e+=a.matrixValue+" ";e+=this.currentAnimData.matrixValue,this.isVisible&&this.layerElement.setAttribute("transform",e),this.fullTransform=e}}else this.transformChanged&&(e+=this.currentAnimData.matrixValue,this.isVisible&&this.layerElement.setAttribute("transform",e),this.fullTransform=e);return this.forceRender&&(this.forceRender=!1,this.layerElement.setAttribute("opacity",this.currentAnimData.tr.o),this.layerElement.setAttribute("transform",this.fullTransform)),this.isVisible},BaseElement.prototype.getDomElement=function(){return this.layerElement},BaseElement.prototype.setMainElement=function(t){this.mainElement=t},BaseElement.prototype.getMaskManager=function(){return this.maskManager},BaseElement.prototype.addMasks=function(t){var e={data:{value:t},element:{value:this}};this.maskManager=createElement(MaskElement,null,e)},BaseElement.prototype.createEffectsManager=function(t){var e={effects:{value:t.eff},element:{value:this}};this.effectsManager=createElement(EffectsManager,null,e)},BaseElement.prototype.getType=function(){return this.type},BaseElement.prototype.getLayerSize=function(){return"TextLayer"==this.data.type?{w:this.data.textData.width,h:this.data.textData.height}:{w:this.data.width,h:this.data.height}},createElement(BaseElement,ICompElement),ICompElement.prototype.createElements=function(){this.svgElem=document.createElementNS(svgNS,"g"),this.parent.createElements.call(this)},ICompElement.prototype.getComposingElement=function(){return this.layerElement},ICompElement.prototype.renderFrame=function(t){var e=this.parent.renderFrame.call(this,t);if(e!==!1){var a,r=this.layers.length,i=this.data.tm?this.data.tm[t]<0?0:this.data.tm[t]:t;for(a=0;r>a;a+=1)this.layers[a].element.prepareFrame(i-this.layers[a].startTime);for(a=0;r>a;a+=1)this.layers[a].element.renderFrame(i-this.layers[a].startTime)}},createElement(BaseElement,IImageElement),IImageElement.prototype.createElements=function(){var t=this,e=function(){t.image.setAttributeNS("http://www.w3.org/1999/xlink","href",t.path+t.assets[t.data.assetId].path),t.maskedElement=t.image,t.animationItem.elementLoaded()},a=new Image;a.addEventListener("load",e,!1),a.src=this.path+this.assets[this.data.assetId].path,this.svgElem=document.createElementNS(svgNS,"g"),this.parent.createElements.call(this),this.image=document.createElementNS(svgNS,"image"),this.image.setAttribute("width",this.data.width+"px"),this.image.setAttribute("height",this.data.height+"px"),this.svgElem.appendChild(this.image),this.layerElement.appendChild(this.svgElem),this.maskingGroup=this.svgElem,styleUnselectableDiv(this.image)},createElement(BaseElement,IShapeElement),IShapeElement.prototype.createElements=function(){this.parent.createElements.call(this);var t,e,a=this.data.shapes.length;for(t=a-1;t>=0;t--)this.data.trim&&(this.data.shapes[t].trim=this.data.trim),e=new ShapeItemElement(this.data.shapes[t]),this.layerElement.appendChild(e.getElement()),this.shapes.push(e)},IShapeElement.prototype.renderFrame=function(t){var e=this.parent.renderFrame.call(this,t);e!==!1&&this.renderShapes(t)},IShapeElement.prototype.renderShapes=function(t){var e,a,r,i=this.data.shapes.length;for(e=i-1;e>=0;e--)a=this.data.shapes[e],r=this.shapes[i-1-e],r.renderShape(t)},ShapeItemElement.prototype.adjustTrim=function(){var t,e=this.data.trim,a=e.length;for(t=0;a>t;t+=1)e[t].o&&(e[t].o-=90)},ShapeItemElement.prototype.getElement=function(){return this.shapeG},ShapeItemElement.prototype.renderShape=function(t){this.currentData=this.data.renderedData[t],"pathShape"==this.data.type?this.pathLength=this.renderPath(t):"rectShape"==this.data.type?this.renderRect(t):"ellipseShape"==this.data.type&&(this.pathLength=this.renderEllipse(t)),this.data.trim&&this.renderTrim(t),this.renderFill(t),this.renderStroke(t),this.renderTransform(t)},ShapeItemElement.prototype.renderPath=function(){var t=this.currentData,e=t.path;return e.pathString!=this.renderedFrame.path?(this.renderedFrame.path=e.pathString,this.shape.setAttribute("d",e.pathString),this.data.trim?(null==this.cachedData.pathLengths&&(this.cachedData.pathLengths={}),null==this.cachedData.pathLengths[e.pathString]&&(this.cachedData.pathLengths[e.pathString]=this.shape.getTotalLength()),this.cachedData.pathLengths[e.pathString]):void 0):this.data.trim?this.cachedData.pathLengths[e.pathString]:void 0},ShapeItemElement.prototype.renderEllipse=function(t){var e=this.currentData.ell;if(this.renderedFrame.ellipse.rx!=e.size[0]&&(this.shape.setAttribute("rx",e.size[0]/2),this.renderedFrame.ellipse.rx=e.size[0]),this.renderedFrame.ellipse.ry!=e.size[1]&&(this.shape.setAttribute("ry",e.size[1]/2),this.renderedFrame.ellipse.ry=e.size[1]),this.renderedFrame.ellipse.cx!=e.p[0]&&(this.shape.setAttribute("cx",e.p[0]),this.renderedFrame.ellipse.ry=e.p[0]),this.renderedFrame.ellipse.cy!=e.p[1]&&(this.shape.setAttribute("cy",e.p[1]),this.renderedFrame.ellipse.ry=e.p[1]),this.data.trim){if(null==this.cachedData.pathLengths&&(this.cachedData.pathLengths={}),null==this.cachedData.pathLengths["ellipse_"+t])if(e.size[0]==e.size[1])this.cachedData.pathLengths["ellipse_"+t]=Math.PI*e.size[0];else{var a=Math.max(e.size[0],e.size[1])/2,r=Math.max(e.size[0],e.size[1])/2,i=(a-r)/(a+r),n=(a+r)*Math.PI*(1+.25*i+1/64*Math.pow(i,2)+1/256*Math.pow(i,3));this.cachedData.pathLengths["ellipse_"+t]=n}return this.cachedData.pathLengths["ellipse_"+t]}},ShapeItemElement.prototype.renderRect=function(){var t=this.currentData;if(t.rect){var e=t.rect;this.renderedFrame.rect.rx!=e.roundness&&(this.shape.setAttribute("rx",e.roundness),this.shape.setAttribute("ry",e.roundness),this.renderedFrame.rect.rx=e.roundness),this.renderedFrame.rect.width!=e.size[0]&&(this.shape.setAttribute("width",e.size[0]),this.renderedFrame.rect.width=e.size[0]),this.renderedFrame.rect.height!=e.size[1]&&(this.shape.setAttribute("height",e.size[1]),this.renderedFrame.rect.height=e.size[1]),this.renderedFrame.rect.x!=e.position[0]-e.size[0]&&(this.shape.setAttribute("x",e.position[0]-e.size[0]/2),this.renderedFrame.rect.x=e.position[0]-e.size[0]),this.renderedFrame.rect.y!=e.position[1]-e.size[1]&&(this.shape.setAttribute("y",e.position[1]-e.size[1]/2),this.renderedFrame.rect.y=e.position[1]-e.size[1])}},ShapeItemElement.prototype.renderFill=function(){var t=this.currentData;if(t.fill){var e=t.fill;this.renderedFrame.fill.color!==e.color&&(this.shape.setAttribute("fill",e.color),this.renderedFrame.fill.color=e.color),this.data.fillEnabled!==!1?this.renderedFrame.fill.opacity!==e.opacity&&(this.shape.setAttribute("fill-opacity",e.opacity),this.renderedFrame.fill.opacity=e.opacity):0!==this.renderedFrame.fill.opacity&&(this.shape.setAttribute("fill-opacity",0),this.renderedFrame.fill.opacity=0)}else 0!==this.renderedFrame.fill.opacity&&(this.shape.setAttribute("fill-opacity",0),this.renderedFrame.fill.opacity=0)},ShapeItemElement.prototype.renderStroke=function(){var t=this.currentData;if(t.stroke){var e=t.stroke;this.renderedFrame.stroke.color!==e.color&&(this.renderedFrame.stroke.color=e.color,this.shape.setAttribute("stroke",e.color)),this.renderedFrame.stroke.width!==e.width&&(this.renderedFrame.stroke.width=e.width,this.shape.setAttribute("stroke-width",e.width)),this.data.strokeEnabled!==!1?this.renderedFrame.stroke.opacity!==e.opacity&&(this.renderedFrame.stroke.opacity=e.opacity,this.shape.setAttribute("stroke-opacity",e.opacity)):0!==this.renderedFrame.stroke.opacity&&(this.renderedFrame.stroke.opacity=0,this.shape.setAttribute("stroke-opacity",0))}},ShapeItemElement.prototype.renderTransform=function(){var t=this.currentData;if(t.tr){var e=t.tr;this.renderedFrame.tr.o!==e.o&&(this.renderedFrame.tr.o=e.o,this.shapeG.setAttribute("opacity",e.o)),this.renderedFrame.tr.mt!==e.mt&&(this.renderedFrame.tr.mt=e.mt,this.shapeG.setAttribute("transform",e.mt)),(this.renderedFrame.tr.a[0]!==e.a[0]||this.renderedFrame.tr.a[1]!==e.a[1])&&(this.renderedFrame.tr.a[0]=e.a[0],this.renderedFrame.tr.a[1]=e.a[1],this.shape.setAttribute("transform","translate("+-e.a[0]+", "+-e.a[1]+")"))}},ShapeItemElement.prototype.renderTrim=function(){var t=this.currentData.trim;if(0==this.pathLength)this.shape.setAttribute("stroke-opacity",0);else{this.renderedFrame.trim.e==t.e&&this.renderedFrame.trim.s==t.s&&this.renderedFrame.trim.o==t.o,this.renderedFrame.trim.e=t.e,this.renderedFrame.trim.s=t.s,this.renderedFrame.trim.o=t.o;var e=this.pathLength*(t.e-t.s)/100,a=this.pathLength-e,r=this.pathLength*t.s/100+this.pathLength*t.o/360,i=e+" , "+a;this.shape.setAttribute("stroke-dasharray",i),this.shape.setAttribute("stroke-dashoffset",this.pathLength-r),t.e==t.s?this.shape.setAttribute("stroke-opacity",0):this.currentData.stroke&&(this.data.strokeEnabled!==!1?this.shape.setAttribute("stroke-opacity",this.currentData.stroke.opacity):this.shape.setAttribute("stroke-opacity",0))}},createElement(BaseElement,ISolidElement),ISolidElement.prototype.createElements=function(){this.svgElem=document.createElementNS(svgNS,"g"),this.parent.createElements.call(this),this.layerElement.appendChild(this.svgElem);var t=document.createElementNS(svgNS,"rect");t.setAttribute("width",this.data.width),t.setAttribute("height",this.data.height),t.setAttribute("fill",this.data.color),this.svgElem.appendChild(t),styleUnselectableDiv(this.svgElem),styleUnselectableDiv(t),this.maskingGroup=this.svgElem,this.maskedElement=t},createElement(BaseElement,ITextElement),ITextElement.prototype.createElements=function(){this.svgElem=document.createElementNS(svgNS,"g");var t=document.createElementNS(svgNS,"text");t.textContent=this.data.textData.text,t.setAttribute("fill",this.data.textData.fillColor),t.setAttribute("x","0"),t.setAttribute("y",this.data.textData.height-(this.data.textData.fontSize-this.data.textData.height)/2),this.svgElem.setAttribute("width",this.data.textData.width),this.svgElem.setAttribute("height",this.data.textData.height),this.svgElem.style.transform="translate("+this.data.textData.xOffset+"px,"+this.data.textData.yOffset+"px)",this.svgElem.style["-webkit-transform"]="translate("+this.data.textData.xOffset+"px,"+this.data.textData.yOffset+"px)",t.setAttribute("font-size",this.data.textData.fontSize),t.setAttribute("font-family","Arial, sans-serif"),this.svgElem.appendChild(t),this.parent.createElements.call(this),this.anchorElement.appendChild(this.svgElem),this.maskingGroup=this.svgElem,this.maskedElement=t},CVBaseElement.prototype.init=function(){this.createElements(),this.data.hasMask&&this.addMasks(this.data),this.data.eff&&this.createEffectsManager(this.data)},CVBaseElement.prototype.createElements=function(){},CVBaseElement.prototype.prepareFrame=function(t){return this.data.inPoint-this.data.startTime<=t&&this.data.outPoint-this.data.startTime>t?(this.renderFrame=!0,this.currentAnimData=this.data.renderedData[t].an,void(this.data.hasMask&&this.maskManager.prepareFrame(t))):(this.renderFrame=!1,this.currentAnimData=this.data.renderedData[t].an,!1)},CVBaseElement.prototype.draw=function(t){if(t!==!1&&this.renderer.canvasContext.save(),!this.renderFrame)return!1;var e,a=this.renderer.canvasContext;if(this.data.parentHierarchy){var r,i,n=this.data.parentHierarchy.length;for(r=n-1;r>=0;r-=1)i=this.data.parentHierarchy[r].element.getCurrentAnimData(),e=i.matrixArray,a.transform(e[0],e[1],e[2],e[3],e[4],e[5]),a.translate(-i.tr.a[0],-i.tr.a[1])}a.globalAlpha=a.globalAlpha*this.currentAnimData.tr.o,e=this.currentAnimData.matrixArray,a.transform(e[0],e[1],e[2],e[3],e[4],e[5]),a.translate(-this.currentAnimData.tr.a[0],-this.currentAnimData.tr.a[1]),this.data.hasMask&&this.maskManager.draw(),t!==!1&&this.renderer.canvasContext.restore()},CVBaseElement.prototype.getCurrentAnimData=function(){return this.currentAnimData},CVBaseElement.prototype.addMasks=function(t){var e={data:{value:t},element:{value:this}};this.maskManager=createElement(CVMaskElement,null,e)},CVBaseElement.prototype.createEffectsManager=function(t){var e={effects:{value:t.eff},element:{value:this}};this.effectsManager=createElement(EffectsManager,null,e)},CVBaseElement.prototype.getType=function(){return this.type},CVBaseElement.prototype.getLayerSize=function(){return"TextLayer"==this.data.type?{w:this.data.textData.width,h:this.data.textData.height}:{w:this.data.width,h:this.data.height}},createElement(CVBaseElement,CVCompElement),CVCompElement.prototype.prepareFrame=function(t){var e=this.parent.prepareFrame.call(this,t);if(e!==!1){var a,r=this.layers.length,i=this.data.tm?this.data.tm[t]<0?0:this.data.tm[t]:t;for(a=0;r>a;a+=1)this.layers[a].element.prepareFrame(i-this.layers[a].startTime)}},CVCompElement.prototype.draw=function(){if(this.renderer.canvasContext.save(),this.parent.draw.call(this,!1)===!1)return void this.renderer.canvasContext.restore();var t,e=this.layers.length;for(t=e-1;t>=0;t-=1)this.layers[t].element.draw();this.renderer.canvasContext.restore()},createElement(CVBaseElement,CVImageElement),CVImageElement.prototype.createElements=function(){var t=this,e=function(){t.animationItem.elementLoaded()};this.img=new Image,this.img.addEventListener("load",e,!1),this.img.src=this.path+this.assets[this.data.assetId].path,this.parent.createElements.call(this)},CVImageElement.prototype.draw=function(){if(this.renderer.canvasContext.save(),this.parent.draw.call(this,!1)===!1)return void this.renderer.canvasContext.restore();var t=this.renderer.canvasContext;t.drawImage(this.img,0,0),this.renderer.canvasContext.restore()},createElement(CVBaseElement,CVShapeElement),CVShapeElement.prototype.createElements=function(){this.parent.createElements.call(this);var t,e,a=this.data.shapes.length;for(t=a-1;t>=0;t--)this.data.trim&&(this.data.shapes[t].trim=this.data.trim),e=new CVShapeItemElement(this.data.shapes[t],this.renderer),this.shapes.push(e)},CVShapeElement.prototype.prepareFrame=function(t){var e=this.parent.prepareFrame.call(this,t);if(e!==!1){var a,r=this.data.shapes.length;for(a=r-1;a>=0;a--)this.shapes[r-1-a].prepareFrame(t)}},CVShapeElement.prototype.draw=function(){return this.renderer.canvasContext.save(),this.parent.draw.call(this,!1)===!1?void this.renderer.canvasContext.restore():(this.drawShapes(),void this.renderer.canvasContext.restore())},CVShapeElement.prototype.drawShapes=function(){var t,e=this.data.shapes.length;for(t=e-1;t>=0;t--)this.shapes[e-1-t].renderShape()},CVShapeItemElement.prototype.adjustTrim=function(){var t,e=this.data.trim,a=e.length;for(t=0;a>t;t+=1)e[t].o&&(e[t].o-=90)},CVShapeItemElement.prototype.renderShape=function(){if(""!==this.data.type){var t=this.frameNum;this.currentData=this.data.renderedData[t];var e=this.renderer.canvasContext,a=this.renderTransform(t);"pathShape"==this.data.type?this.data.trim?this.renderTrimPath(t):this.renderPath(t):"rectShape"==this.data.type?this.renderRect(t):"ellipseShape"==this.data.type&&(this.pathLength=this.renderEllipse(t)),this.renderFill(t),this.renderStroke(t),this.renderer.canvasContext.lineCap="round",this.renderer.canvasContext.lineJoin="round",this.renderedPaths[t]?supportsPath2D?(this.renderer.canvasContext.fill(this.renderedPaths[t]),this.renderer.canvasContext.stroke(this.renderedPaths[t])):(this.renderedPaths[t].drawToContext(this.renderer.canvasContext),this.renderer.canvasContext.fill(),this.renderer.canvasContext.stroke()):(this.renderer.canvasContext.fill(),this.renderer.canvasContext.stroke()),a&&e.restore()}},CVShapeItemElement.prototype.prepareFrame=function(t){this.frameNum=t},CVShapeItemElement.prototype.renderTransform=function(){var t=this.currentData;if(t.tr){var e=!1,a=this.renderer.canvasContext,r=t.tr,i=r.mtArr;return(1!==i[0]||0!==i[1]||0!==i[2]||1!==i[3]||0!==i[4]||0!==i[5])&&(a.save(),a.transform(i[0],i[1],i[2],i[3],i[4],i[5]),e=!0),(0!=r.a[0]||0!=r.a[1])&&(e||(a.save(),e=!0),a.translate(-r.a[0],-r.a[1])),r.o<1&&(e||(a.save(),e=!0),a.globalAlpha*=r.o),e}},CVShapeItemElement.prototype.addToTrim=function(t,e,a){this.trims[t]||this.trims.push({}),this.trims[t].s=e,this.trims[t].e=a,this.trims[t].ended=!1},CVShapeItemElement.prototype.renderTrimPath=function(t){var e=this.currentData.trim;if(e.e!=e.s&&!this.renderedPaths[t]){var a,r=new Path2D,i=this.currentData.path,n=i.pathNodes,s=[],o=0,h=n.v.length;for(a=0;h-1>a;a+=1)s.push(bez.drawBezierCurve(n.v[a],n.v[a+1],n.o[a],n.i[a+1])),o+=s[a].segmentLength;i.closed&&(s.push(bez.drawBezierCurve(n.v[a],n.v[0],n.o[a],n.i[0])),o+=s[a].segmentLength),h=s.length;var p=o*(e.e-e.s)/100;e.o=e.o%360,e.o<0&&(e.o+=360);var m=(e.s/100+e.o/360)%1*o,l=0;if(m+p-o>1e-5){var d=m+p-o;this.addToTrim(0,m,m+p-d),this.addToTrim(1,0,m+p-o),l+=2}else this.addToTrim(0,m,m+p),l+=1;var c,u,f,y,g,v=0,x=!1,E=this.trims.length;for(a=0;h>a&&!x;a+=1){for(u=s[a].points.length,y=!0,g=0;E>g;g+=1)v+s[a].segmentLength>this.trims[g].s&&(y=!1);if(y)v+=s[a].segmentLength;else{var C,b;for(c=0;u-1>c&&!x;c+=1)for(E=this.trims.length,C=s[a].points[c],b=s[a].points[c+1],v+=C.partialLength,g=0;E>g;g+=1)if(!this.trims[g].ended)if(this.trims[g].s>=v&&this.trims[g].s<v+b.partialLength&&(f=(this.trims[g].s-v)/b.partialLength,r.moveTo(C.point[0]+(b.point[0]-C.point[0])*f,C.point[1]+(b.point[1]-C.point[1])*f)),this.trims[g].e>v&&this.trims[g].e<=v+b.partialLength){if(f=(this.trims[g].e-v)/b.partialLength,r.lineTo(C.point[0]+(b.point[0]-C.point[0])*f,C.point[1]+(b.point[1]-C.point[1])*f),l-=1,this.trims[g].ended=!0,0==l){x=!0;break}}else v>this.trims[g].s&&v<this.trims[g].e&&r.lineTo(C.point[0],C.point[1]);this.renderedPaths[t]=r}}}},CVShapeItemElement.prototype.renderPath=function(t){var e=this.currentData,a=e.path;if(!this.renderedPaths[t]){var r=new Path2D,i=this.renderer.canvasContext,n=a.pathNodes;n instanceof Array&&(n=n[0]);var s,o=n.i.length;for(i.beginPath(),r.moveTo(n.v[0][0],n.v[0][1]),s=1;o>s;s+=1)r.bezierCurveTo(n.o[s-1][0],n.o[s-1][1],n.i[s][0],n.i[s][1],n.v[s][0],n.v[s][1]);a.closed&&r.bezierCurveTo(n.o[s-1][0],n.o[s-1][1],n.i[0][0],n.i[0][1],n.v[0][0],n.v[0][1]),this.renderedPaths[t]=r}},CVShapeItemElement.prototype.renderEllipse=function(){var t=this.currentData.ell,e=this.renderer.canvasContext;e.beginPath(),e.ellipse(t.p[0],t.p[1],t.size[0]/2,t.size[1]/2,0,0,2*Math.PI,!0),e.closePath()},CVShapeItemElement.prototype.renderRect=function(){var t=this.currentData.rect,e=t.roundness,a=this.renderer.canvasContext;if(a.beginPath(),0==e)a.rect(t.position[0]-t.size[0]/2,t.position[1]-t.size[1]/2,t.size[0],t.size[1]);else{var r=t.position[0]-t.size[0]/2,i=t.position[1]-t.size[1]/2,n=t.size[0],s=t.size[1];e instanceof Array&&(e=e[0]),a.moveTo(r+e,i),a.lineTo(r+n-e,i),a.quadraticCurveTo(r+n,i,r+n,i+e),a.lineTo(r+n,i+s-e),a.quadraticCurveTo(r+n,i+s,r+n-e,i+s),a.lineTo(r+e,i+s),a.quadraticCurveTo(r,i+s,r,i+s-e),a.lineTo(r,i+e),a.quadraticCurveTo(r,i,r+e,i)}},CVShapeItemElement.prototype.renderFill=function(){var t=this.currentData;if(t.fill){var e=t.fill;if(this.data.fillEnabled!==!1)return void(this.renderer.canvasContext.fillStyle=e.opacity<1?fillColorToString(e.color,e.opacity):fillColorToString(e.color))}this.renderer.canvasContext.fillStyle="rgba(0,0,0,0)"},CVShapeItemElement.prototype.renderStroke=function(){var t=this.currentData;if(t.stroke){var e=t.stroke;if(this.renderer.canvasContext.lineWidth=e.width,this.data.strokeEnabled!==!1)return void(this.renderer.canvasContext.strokeStyle=e.opacity<1?fillColorToString(e.color,e.opacity):fillColorToString(e.color))}this.renderer.canvasContext.strokeStyle="rgba(0,0,0,0)"},createElement(CVBaseElement,CVSolidElement),CVSolidElement.prototype.draw=function(){if(this.renderer.canvasContext.save(),this.parent.draw.call(this,!1)===!1)return void this.renderer.canvasContext.restore();var t=this.renderer.canvasContext;t.fillStyle=this.data.color,t.fillRect(0,0,this.data.width,this.data.height),this.renderer.canvasContext.restore()},createElement(CVBaseElement,CVTextElement),CVTextElement.prototype.createElements=function(){this.svgElem=document.createElementNS(svgNS,"g");var t=document.createElementNS(svgNS,"text");t.textContent=this.data.textData.text,t.setAttribute("fill",this.data.textData.fillColor),t.setAttribute("x","0"),t.setAttribute("y",this.data.textData.height-(this.data.textData.fontSize-this.data.textData.height)/2),this.svgElem.setAttribute("width",this.data.textData.width),this.svgElem.setAttribute("height",this.data.textData.height),this.svgElem.style.transform="translate("+this.data.textData.xOffset+"px,"+this.data.textData.yOffset+"px)",this.svgElem.style["-webkit-transform"]="translate("+this.data.textData.xOffset+"px,"+this.data.textData.yOffset+"px)",t.setAttribute("font-size",this.data.textData.fontSize),t.setAttribute("font-family","Arial, sans-serif"),this.svgElem.appendChild(t),this.parent.createElements.call(this),this.anchorElement.appendChild(this.svgElem),this.maskingGroup=this.svgElem,this.maskedElement=t},CVMaskElement.prototype.init=function(){this.registeredEffects=[],this.masksProperties=this.data.masksProperties,this.totalMasks=this.masksProperties.length,this.ctx=this.element.renderer.canvasContext,this.layerSize=this.element.getLayerSize()},CVMaskElement.prototype.prepareFrame=function(t){this.frameNum=t},CVMaskElement.prototype.draw=function(){var t,e=this.data.masksProperties.length;for(this.ctx.beginPath(),t=0;e>t;t++)this.masksProperties[t].inv?this.createInvertedMask(this.masksProperties[t],this.frameNum):this.drawShape(this.ctx,this.data.masksProperties[t].paths[this.frameNum].pathNodes);this.ctx.closePath(),this.ctx.clip()},CVMaskElement.prototype.drawShape=function(t,e){var a,r=e.v.length;for(t.moveTo(e.v[0][0],e.v[0][1]),a=1;r>a;a++)t.bezierCurveTo(e.o[a-1][0],e.o[a-1][1],e.i[a][0],e.i[a][1],e.v[a][0],e.v[a][1]);t.bezierCurveTo(e.o[a-1][0],e.o[a-1][1],e.i[0][0],e.i[0][1],e.v[0][0],e.v[0][1])},CVMaskElement.prototype.createInvertedMask=function(){};var animationManager=function(){function t(t){if(!t)return null;for(var e=0;v>e;){if(f[e].elem==t&&null!==f[e].elem)return f[e].animation;e+=1}var a=new AnimationItem;return a.setData(t),f.push({elem:t,animation:a}),v+=1,a}function e(t){var e=new AnimationItem;return e.setParams(t),f.push({elem:null,animation:e}),v+=1,e}function a(t,e){var a;for(a=0;v>a;a+=1)f[a].animation.setSpeed(t,e)}function r(t,e){var a;for(a=0;v>a;a+=1)f[a].animation.setDirection(t,e)}function i(t){var e;for(e=0;v>e;e+=1)f[e].animation.play(t)}function n(t,e){g=!1,y=Date.now();var a;for(a=0;v>a;a+=1)f[a].animation.moveFrame(t,e)}function s(){var t,e=Date.now(),a=e-y;for(t=0;v>t;t+=1)f[t].animation.advanceTime(a);y=e,requestAnimationFrame(s)}function o(t){var e;for(e=0;v>e;e+=1)f[e].animation.pause(t)}function h(t,e,a){var r;for(r=0;v>r;r+=1)f[r].animation.goToAndStop(t,e,a)}function p(t){var e;for(e=0;v>e;e+=1)f[e].animation.stop(t)}function m(t){var e;for(e=0;v>e;e+=1)f[e].animation.togglePause(t)}function l(){var e=document.getElementsByClassName("bodymovin");Array.prototype.forEach.call(e,t)}function d(){var t;for(t=0;v>t;t+=1)f[t].animation.resize()}function c(){y=Date.now(),requestAnimationFrame(s)}var u={},f=[],y=0,g=!0,v=0;return setTimeout(c,0),u.registerAnimation=t,u.loadAnimation=e,u.setSpeed=a,u.setDirection=r,u.play=i,u.moveFrame=n,u.pause=o,u.stop=p,u.togglePause=m,u.searchAnimations=l,u.resize=d,u.start=c,u.goToAndStop=h,u}(),AnimationItem=function(){this.name="",this.path="",this.isLoaded=!1,this.currentFrame=0,this.currentRawFrame=0,this.totalFrames=0,this.frameRate=0,this.frameMult=0,this.playSpeed=1,this.playDirection=1,this.pendingElements=0,this.playCount=0,this.prerenderFramesFlag=!0,this.repeat="indefinite",this.animationData={},this.layers=[],this.assets=[],this.isPaused=!0,this.isScrolling=!1,this.autoplay=!1,this.loop=!0,this.renderer=null,this.animationID=randomString(10),this.renderedFrameCount=0,this.scaleMode="fit",this.math=Math};AnimationItem.prototype.setParams=function(t){var e=this;t.context&&(this.context=t.context),t.wrapper&&(this.wrapper=t.wrapper);var a=t.animType?t.animType:"canvas";switch(a){case"canvas":this.renderer=new CanvasRenderer(this,t.renderer);break;case"svg":this.renderer=new SVGRenderer(this,t.renderer)}if(this.animType=a,""===t.loop||null===t.loop||(this.loop=t.loop===!1?!1:t.loop===!0?!0:parseInt(t.loop)),this.autoplay="autoplay"in t?t.autoplay:!0,this.name=t.name?t.name:"",this.prerenderFramesFlag="prerender"in t?t.prerender:!0,t.animationData)e.configAnimation(t.animationData);else if(t.path){"json"!=t.path.substr(-4)&&("/"!=t.path.substr(-1,1)&&(t.path+="/"),t.path+="data.json");var r=new XMLHttpRequest;this.path=t.path.substr(0,t.path.lastIndexOf("/")+1),r.open("GET",t.path,!0),r.send(),r.onreadystatechange=function(){if(4==r.readyState)if(200==r.status)e.configAnimation(JSON.parse(r.responseText));else try{var t=JSON.parse(r.responseText);e.configAnimation(t)}catch(a){}}}},AnimationItem.prototype.setData=function(t){var e={wrapper:t},a=t.attributes;e.path=a.getNamedItem("data-animation-path")?a.getNamedItem("data-animation-path").value:a.getNamedItem("data-bm-path")?a.getNamedItem("data-bm-path").value:a.getNamedItem("bm-path")?a.getNamedItem("bm-path").value:"",e.animType=a.getNamedItem("data-anim-type")?a.getNamedItem("data-anim-type").value:a.getNamedItem("data-bm-type")?a.getNamedItem("data-bm-type").value:a.getNamedItem("bm-type")?a.getNamedItem("bm-type").value:"canvas";var r=a.getNamedItem("data-anim-loop")?a.getNamedItem("data-anim-loop").value:a.getNamedItem("data-bm-loop")?a.getNamedItem("data-bm-loop").value:a.getNamedItem("bm-loop")?a.getNamedItem("bm-loop").value:"";""==r||(e.loop="false"===r?!1:"true"===r?!0:parseInt(r)),e.name=a.getNamedItem("data-name")?a.getNamedItem("data-name").value:a.getNamedItem("data-bm-name")?a.getNamedItem("data-bm-name").value:a.getNamedItem("bm-name")?a.getNamedItem("bm-name").value:"";var i=a.getNamedItem("data-anim-prerender")?a.getNamedItem("data-anim-prerender").value:a.getNamedItem("data-bm-prerender")?a.getNamedItem("data-bm-prerender").value:a.getNamedItem("bm-prerender")?a.getNamedItem("bm-prerender").value:"";"false"===i&&(e.prerender=!1),this.setParams(e)},AnimationItem.prototype.configAnimation=function(t){this.renderer.configAnimation(t),this.animationData=t,this.animationData._id=this.animationID,this.animationData._animType=this.animType,this.layers=this.animationData.animation.layers,this.assets=this.animationData.assets,this.totalFrames=this.animationData.animation.totalFrames,this.frameRate=this.animationData.animation.frameRate,this.frameMult=this.animationData.animation.frameRate/1e3,dataManager.completeData(this.animationData),this.renderer.buildItems(this.animationData.animation.layers),this.updaFrameModifier(),this.checkLoaded()
+},AnimationItem.prototype.elementLoaded=function(){this.pendingElements--,this.checkLoaded()},AnimationItem.prototype.checkLoaded=function(){this.renderer.buildStage(this.container,this.layers),0==this.pendingElements&&(this.prerenderFramesFlag?(this.prerenderFrames(0),dataManager.renderFrame(this.animationID,this.currentFrame),this.renderer.renderFrame(this.currentFrame)):(this.isLoaded=!0,this.gotoFrame(),this.autoplay&&this.play()))},AnimationItem.prototype.prerenderFrames=function(t){t||(t=0),this.renderedFrameCount===this.totalFrames?(this.isLoaded=!0,this.gotoFrame(),this.autoplay&&this.play()):(dataManager.renderFrame(this.animationID,this.renderedFrameCount),this.renderedFrameCount+=1,t>5?setTimeout(this.prerenderFrames.bind(this),0):(t+=1,this.prerenderFrames(t)))},AnimationItem.prototype.resize=function(){this.renderer.updateContainerSize()},AnimationItem.prototype.gotoFrame=function(){this.currentFrame=subframeEnabled?this.math.round(100*this.currentRawFrame)/100:this.math.floor(this.currentRawFrame),this.renderFrame()},AnimationItem.prototype.renderFrame=function(){this.isLoaded!==!1&&(dataManager.renderFrame(this.animationID,this.currentFrame),this.renderer.renderFrame(this.currentFrame))},AnimationItem.prototype.play=function(t){t&&this.name!=t||this.isPaused===!0&&(this.isPaused=!1)},AnimationItem.prototype.pause=function(t){t&&this.name!=t||this.isPaused===!1&&(this.isPaused=!0)},AnimationItem.prototype.togglePause=function(t){t&&this.name!=t||(this.isPaused===!0?(this.isPaused=!1,this.play()):(this.isPaused=!0,this.pause()))},AnimationItem.prototype.stop=function(t){t&&this.name!=t||(this.isPaused=!0,this.currentFrame=this.currentRawFrame=0,this.playCount=0,this.gotoFrame())},AnimationItem.prototype.goToAndStop=function(t,e,a){a&&this.name!=a||(this.setCurrentRawFrameValue(e?t:t*this.frameModifier),this.isPaused=!0)},AnimationItem.prototype.advanceTime=function(t){this.isPaused!==!0&&this.isScrolling!==!0&&this.isLoaded!==!1&&this.setCurrentRawFrameValue(this.currentRawFrame+t*this.frameModifier)},AnimationItem.prototype.updateAnimation=function(t){this.setCurrentRawFrameValue(this.totalFrames*t)},AnimationItem.prototype.moveFrame=function(t,e){e&&this.name!=e||this.setCurrentRawFrameValue(this.currentRawFrame+t)},AnimationItem.prototype.setCurrentRawFrameValue=function(t){if(this.currentRawFrame=t,this.currentRawFrame>=this.totalFrames){if(this.loop===!1)return this.currentRawFrame=this.totalFrames-1,this.gotoFrame(),void this.pause();if(this.playCount+=1,this.loop!==!0&&this.playCount==this.loop)return this.currentRawFrame=this.totalFrames-1,this.gotoFrame(),void this.pause()}else if(this.currentRawFrame<0)return this.playCount-=1,this.playCount<0&&(this.playCount=0),this.loop===!1?(this.currentRawFrame=0,this.gotoFrame(),void this.pause()):(this.currentRawFrame=this.totalFrames+this.currentRawFrame,void this.gotoFrame());this.currentRawFrame=this.currentRawFrame%this.totalFrames,this.gotoFrame()},AnimationItem.prototype.setSpeed=function(t){this.playSpeed=t,this.updaFrameModifier()},AnimationItem.prototype.setDirection=function(t){this.playDirection=0>t?-1:1,this.updaFrameModifier()},AnimationItem.prototype.updaFrameModifier=function(){this.frameModifier=this.frameMult*this.playSpeed*this.playDirection},AnimationItem.prototype.getPath=function(){return this.path},AnimationItem.prototype.getAssets=function(){return this.assets},function(t){function e(t){animationManager.play(t)}function a(t){animationManager.pause(t)}function r(t){animationManager.togglePause(t)}function i(t,e){animationManager.setSpeed(t,e)}function n(t,e){animationManager.setDirection(t,e)}function s(t){animationManager.stop(t)}function o(t){animationManager.moveFrame(t)}function h(){animationManager.searchAnimations()}function p(t){return animationManager.registerAnimation(t)}function m(){animationManager.resize()}function l(){animationManager.start()}function d(t,e,a){animationManager.goToAndStop(t,e,a)}function c(t){subframeEnabled=t}function u(t){return animationManager.loadAnimation(t)}function f(){"complete"===document.readyState&&(clearInterval(g),h())}var y={};y.play=e,y.pause=a,y.togglePause=r,y.setSpeed=i,y.setDirection=n,y.stop=s,y.moveFrame=o,y.searchAnimations=h,y.registerAnimation=p,y.loadAnimation=u,y.setSubframeRendering=c,y.resize=m,y.start=l,y.goToAndStop=d,y.checkReady=f,t.bodymovin=y;var g=setInterval(f,100)}(window);}(window));
\ No newline at end of file
diff --git a/player/index.html b/player/index.html
index a8ec8ff..030e5cd 100644
--- a/player/index.html
+++ b/player/index.html
@@ -43,7 +43,7 @@
     <!-- endbuild -->
 </head>
 <body style="background-color:#666; margin: 0px;height: 100%; font-family: sans-serif;font-size: 10px">
-<div style="width:600px;height:795px" class="bodymovin" data-bm-path="exports/gatin" data-bm-type="svg" data-bm-loop="true" data-bm-prerender="true"></div>
+<div style="width:600px;height:795px" class="bodymovin" data-bm-path="exports/cameraComp" data-bm-type="threed" data-bm-loop="true" data-bm-prerender="true"></div>
 <script>
     var pathsArray = [];
     var uniquePaths = [];
diff --git a/player/js/elements/canvasElements/CVMaskElement.js b/player/js/elements/canvasElements/CVMaskElement.js
index 068e528..2cd4ea8 100644
--- a/player/js/elements/canvasElements/CVMaskElement.js
+++ b/player/js/elements/canvasElements/CVMaskElement.js
@@ -14,13 +14,16 @@
 
 CVMaskElement.prototype.draw = function () {
     var i, len = this.data.masksProperties.length;
+    this.ctx.beginPath();
     for (i = 0; i < len; i++) {
         if (this.masksProperties[i].inv) {
             this.createInvertedMask(this.ctx,this.masksProperties[i].pathVertices[this.frameNum][0]);
         } else {
-            this.drawShape(this.ctx, this.data.masksProperties[i].pathVertices[this.frameNum][0]);
+            this.drawShape(this.ctx, this.data.masksProperties[i].paths[this.frameNum].pathNodes);
         }
     }
+    this.ctx.closePath();
+    this.ctx.clip();
 };
 
 CVMaskElement.prototype.createInvertedMask = function (ctx, data) {
@@ -43,23 +46,14 @@
 };
 
 CVMaskElement.prototype.drawShape = function (ctx, data) {
-    /* TODO see if i can improve feathering of masks. This solution doesn't work'
-     ctx.shadowOffsetX = 0;
-     ctx.shadowOffsetY = 0;
-     ctx.shadowColor = '#fff';
-     ctx.shadowBlur = 14;*/
-    ctx.beginPath();
-    /*ctx.moveTo(-this.layerSize.w/2,-this.layerSize.h/2);
-    ctx.lineTo(this.layerSize.w-this.layerSize.w/2,-this.layerSize.h/2);
-    ctx.lineTo(this.layerSize.w-this.layerSize.w/2,this.layerSize.h-this.layerSize.h/2);
-    ctx.lineTo(-this.layerSize.w/2,this.layerSize.h-this.layerSize.h/2);
-    ctx.lineTo(-this.layerSize.w/2,-this.layerSize.h/2);*/
     var j, jLen = data.v.length;
     ctx.moveTo(data.v[0][0], data.v[0][1]);
     for (j = 1; j < jLen; j++) {
         ctx.bezierCurveTo(data.o[j - 1][0], data.o[j - 1][1], data.i[j][0], data.i[j][1], data.v[j][0], data.v[j][1]);
     }
     ctx.bezierCurveTo(data.o[j - 1][0], data.o[j - 1][1], data.i[0][0], data.i[0][1], data.v[0][0], data.v[0][1]);
-    ctx.closePath();
-    ctx.clip();
-};
\ No newline at end of file
+};
+
+CVMaskElement.prototype.createInvertedMask = function(){
+
+}
diff --git a/player/js/mask.js b/player/js/mask.js
index db4747d..2005996 100644
--- a/player/js/mask.js
+++ b/player/js/mask.js
@@ -1,4 +1,8 @@
-function MaskElement() {}
+function MaskElement() {
+    this.data = null;
+    this.element = null;
+    this.paths = [];
+}
 
 MaskElement.prototype.init = function () {
     this.registeredEffects = [];
@@ -10,143 +14,41 @@
     maskingGroup.appendChild(defs);
     var i, len = this.masksProperties.length;
 
-    /*var invertedCount = 0;
-
-    for(i=0;i<len;i+=1){
-        if(this.data.masksProperties[i].inv){
-            invertedCount += 1;
-            if(invertedCount>10){
-                this.usePaths = false;
-                break;
-            }
-        }
-    }*/
     this.layerSize = this.element.getLayerSize();
-    if(this.usePaths){
-        this.maskElement = document.createElementNS(svgNS, 'clipPath');
-        var path, properties = this.data.masksProperties;
-        for (i = 0; i < len; i++) {
-            path = document.createElementNS(svgNS, 'path');
-            if (properties[i].cl) {
-                path.setAttribute('fill', '#ffffff');
-            } else {
-                path.setAttribute('fill', 'none');
-                path.setAttribute('stroke', '#ffffff');
-                path.setAttribute('stroke-width', '1');
-                path.setAttribute('stroke-miterlimit', '10');
-            }
-            path.setAttribute('clip-rule','nonezero');
-            this.maskElement.appendChild(path);
-            properties[i].elem = path;
-            properties[i].lastPath = '';
+
+    this.maskElement = document.createElementNS(svgNS, 'clipPath');
+    var path, properties = this.data.masksProperties;
+    for (i = 0; i < len; i++) {
+        if(properties[i].inv && !this.solidPath){
+            this.solidPath = this.createLayerSolidPath();
         }
-
-        var layerId = randomString(10);
-
-        this.maskElement.setAttribute('id', layerId);
-        maskedElement.setAttribute("clip-path", "url(#" + layerId + ")");
-
-    } else {
-        this.maskElement = document.createElementNS(svgNS, 'mask');
-        this.canvas = document.createElement('canvas');
-        this.imageElement = document.createElementNS(svgNS, 'image');
-        this.imageElement.setAttribute('width', this.layerSize.w);
-        this.imageElement.setAttribute('height', this.layerSize.h);
-        this.imageElement.setAttribute('x', '0');
-        this.imageElement.setAttribute('y', '0');
-        //this.helperCanvas = document.createElement('canvas');
-        this.canvasContext = this.canvas.getContext('2d');
-        this.canvas.width = this.layerSize.w;
-        this.canvas.height = this.layerSize.h;
-        /*document.getElementsByTagName('BODY')[0].appendChild(this.canvas);
-        this.canvas.style.position = 'absolute';
-        this.canvas.style.top = '0';
-        this.canvas.style.left = '0';
-        this.canvas.style.opacity = '0';*/
-
-        this.maskElement.appendChild(this.imageElement);
-
-        var layerId = randomString(10);
-
-        this.maskElement.setAttribute('id', layerId);
-
-        maskedElement.setAttribute("mask", "url(#" + layerId + ")");
+        path = document.createElementNS(svgNS, 'path');
+        if (properties[i].cl) {
+            path.setAttribute('fill', '#ffffff');
+        } else {
+            path.setAttribute('fill', 'none');
+            path.setAttribute('stroke', '#ffffff');
+            path.setAttribute('stroke-width', '1');
+            path.setAttribute('stroke-miterlimit', '10');
+        }
+        path.setAttribute('clip-rule','nonezero');
+        this.maskElement.appendChild(path);
+        properties[i].elem = path;
+        properties[i].lastPath = '';
     }
+
+    var layerId = randomString(10);
+
+    this.maskElement.setAttribute('id', layerId);
+    maskedElement.setAttribute("clip-path", "url(#" + layerId + ")");
+
     defs.appendChild(this.maskElement);
 };
 
-MaskElement.prototype.createInvertedMask = function (properties, num) {
-
-    this.helperCanvas.width = this.layerSize.w;
-    this.helperCanvas.height = this.layerSize.h;
-    //this.helperCanvas.width = this.helperCanvas.width;
-    var invCtx = this.invertedContext;
-    invCtx.globalCompositeOperation = "source-over";
-    var opacity = properties.o[num];
-    if (properties.mode == 'a') {
-        invCtx.fillStyle = "rgba(255, 255, 255, " + properties.o[num] + ")";
-        this.canvasContext.globalCompositeOperation = 'source-over';
-    } else if (properties.mode == 's') {
-        invCtx.fillStyle = "rgba(0, 0, 0, " + opacity + ")";
-        this.canvasContext.globalCompositeOperation = 'source-over';
-    } else if (properties.mode == 'f') {
-        invCtx.fillStyle = "rgba(255, 255, 255, " + opacity + ")";
-        this.canvasContext.globalCompositeOperation = 'xor';
-    } else if (properties.mode == 'i') {
-        invCtx.fillStyle = "rgba(255, 255, 255, " + opacity + ")";
-        this.canvasContext.globalCompositeOperation = 'destination-in';
-    } else {
-        return;
-    }
-    invCtx.fillRect(0, 0, this.helperCanvas.width, this.helperCanvas.height);
-    invCtx.fillStyle = "rgba(255, 255, 255, 1)";
-    invCtx.globalCompositeOperation = 'destination-out';
-    invCtx.beginPath();
-    this.drawShape(invCtx, properties.pathVertices[num][0]);
-    this.canvasContext.drawImage(this.helperCanvas, 0, 0);
-};
-
 MaskElement.prototype.renderFrame = function (num) {
     var i, len = this.data.masksProperties.length;
-    if (this.usePaths === true) {
-        if(this.element.animationItem.animType !== 'fullSvg'){
-            for (i = 0; i < len; i++) {
-                this.drawPath(this.data.masksProperties[i],this.data.masksProperties[i].pathStrings[num]);//**//
-            }
-        }
-    }else{
-        this.canvas.width = this.canvas.width;
-        var ctx = this.canvasContext;
-        //TODO see if i have to create a full white rect iin case there are no masks
-        /*ctx.fillStyle = "rgba(0, 0, 0, 1)";
-         ctx.fillRect(0,0,this.canvas.width,this.canvas.height);
-         ctx.fill();*/
-        for (i = 0; i < len; i++) {
-            var opacity = this.data.masksProperties[i].opacity[num];
-            if (this.masksProperties[i].inv) {
-                this.createInvertedMask(this.masksProperties[i], num);
-            } else {
-                if (this.masksProperties[i].mode == 'a') {
-                    ctx.globalCompositeOperation = 'source-over';
-                    ctx.fillStyle = "rgba(255, 255, 255, " + opacity + ")";
-                } else if (this.masksProperties[i].mode == 's') {
-                    ctx.globalCompositeOperation = 'source-over';
-                    ctx.fillStyle = "rgba(0, 0, 0, " + opacity + ")";
-                } else if (this.masksProperties[i].mode == 'f') {
-                    ctx.globalCompositeOperation = 'xor';
-                    ctx.fillStyle = "rgba(255, 255, 255, " + opacity + ")";
-                } else if (this.masksProperties[i].mode == 'i') {
-                    ctx.globalCompositeOperation = 'destination-in';
-                    ctx.fillStyle = "rgba(255, 255, 255, " + opacity + ")";
-                } else {
-                    continue;
-                }
-                this.drawShape(ctx, this.data.masksProperties[i].pathVertices[num][0]);
-            }
-        }
-        //this.processMaskFromEffects(num, masks);
-        var dataURL = this.canvas.toDataURL('image/png');
-        this.imageElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', dataURL);
+    for (i = 0; i < len; i++) {
+        this.drawPath(this.data.masksProperties[i],this.data.masksProperties[i].paths[num].pathString);
     }
 };
 
@@ -177,37 +79,10 @@
 MaskElement.prototype.drawPath = function(pathData,pathString){
     if(pathData.lastPath !== pathString){
         if(pathData.inv){
-            pathData.elem.setAttribute('d',this.createLayerSolidPath()+pathString);
+            pathData.elem.setAttribute('d',this.solidPath+pathString);
         }else{
             pathData.elem.setAttribute('d',pathString);
         }
         pathData.lastPath = pathString;
     }
-};
-
-MaskElement.prototype.drawShape = function (ctx, data) {
-    /* TODO see if i can improve feathering of masks. This solution doesn't work'
-     ctx.shadowOffsetX = 0;
-     ctx.shadowOffsetY = 0;
-     ctx.shadowColor = '#fff';
-     ctx.shadowBlur = 14;*/
-    ctx.beginPath();
-    var j, jLen = data.v.length;
-    for (j = 0; j < jLen; j++) {
-        if (j == 0) {
-            ctx.moveTo(data.v[j][0], data.v[j][1]);
-        } else {
-            ctx.bezierCurveTo(data.o[j - 1][0] + data.v[j - 1][0], data.o[j - 1][1] + data.v[j - 1][1], data.i[j][0] + data.v[j][0], data.i[j][1] + data.v[j][1], data.v[j][0], data.v[j][1]);
-        }
-    }
-    ctx.bezierCurveTo(data.o[j - 1][0] + data.v[j - 1][0], data.o[j - 1][1] + data.v[j - 1][1], data.i[0][0] + data.v[0][0], data.i[0][1] + data.v[0][1], data.v[0][0], data.v[0][1]);
-    ctx.closePath();
-    ctx.fill();
-};
-
-defineDescriptor(MaskElement, 'helperCanvas', document.createElement('canvas'));
-defineDescriptor(MaskElement, 'helperContext', MaskElement.prototype.helperCanvas.getContext('2d'));
-defineDescriptor(MaskElement, 'data', null, {writable:true});
-defineDescriptor(MaskElement, 'element', null);
-defineDescriptor(MaskElement, 'usePaths', true, {writable:true});
-defineDescriptor(MaskElement, 'paths', [], {writable:true});
+};
\ No newline at end of file
diff --git a/player/js/utils/DataManager.js b/player/js/utils/DataManager.js
index dc3ceb4..15300a9 100644
--- a/player/js/utils/DataManager.js
+++ b/player/js/utils/DataManager.js
@@ -102,6 +102,8 @@
                         for(k=0;k<kLen;k+=1){
                             if(maskProps[j].pt[k].s){
                                 convertPathsToAbsoluteValues(maskProps[j].pt[k].s[0]);
+                            }
+                            if(maskProps[j].pt[k].e){
                                 convertPathsToAbsoluteValues(maskProps[j].pt[k].e[0]);
                             }
                         }
@@ -615,71 +617,41 @@
                         perc = 0;
                     }
                 }
-                if(keyData.s[i].i){
-                    var shapeData = {
-                        i: [],
-                        o: [],
-                        v: []
-                    };
-                    var jLen = keyData.s[i].i.length;
-                    for(j=0;j<jLen;j+=1){
-                        var coordsIData = [];
-                        var coordsOData = [];
-                        var coordsVData = [];
-                        kLen = keyData.s[i].i[j].length;
-                        for(k=0;k<kLen;k+=1){
-                            if(keyData.h === 1){
-                                coordsIData.push(keyData.s[i].i[j][k]);
-                                coordsOData.push(keyData.s[i].o[j][k]);
-                                coordsVData.push(keyData.s[i].v[j][k]);
-                            }else{
-                                coordsIData.push(keyData.s[i].i[j][k]+(keyData.e[i].i[j][k]-keyData.s[i].i[j][k])*perc);
-                                coordsOData.push(keyData.s[i].o[j][k]+(keyData.e[i].o[j][k]-keyData.s[i].o[j][k])*perc);
-                                coordsVData.push(keyData.s[i].v[j][k]+(keyData.e[i].v[j][k]-keyData.s[i].v[j][k])*perc);
-                            }
+                if(keyData.h === 1){
+                    if(interpolatedParams.type == 'p'){
+                        if(i == 0){
+                            matrixParams.px = keyData.s[i];
+                        }else if(i == 1){
+                            matrixParams.py = keyData.s[i];
                         }
-                        shapeData.i.push(coordsIData);
-                        shapeData.o.push(coordsOData);
-                        shapeData.v.push(coordsVData);
-                    }
-                    propertyArray.push(shapeData);
-                }else{
-                    if(keyData.h === 1){
-                        if(interpolatedParams.type == 'p'){
-                            if(i == 0){
-                                matrixParams.px = keyData.s[i];
-                            }else if(i == 1){
-                                matrixParams.py = keyData.s[i];
-                            }
-                        }else if(interpolatedParams.type == 's'){
-                            if(i == 0){
-                                matrixParams.sx = keyData.s[i];
-                            }else if(i == 1){
-                                matrixParams.sy = keyData.s[i];
-                            }
-                        }else if(interpolatedParams.type == 'r'){
-                            matrixParams.r = keyData.s[i];
-                        }else{
-                            propertyArray.push(keyData.s[i]);
+                    }else if(interpolatedParams.type == 's'){
+                        if(i == 0){
+                            matrixParams.sx = keyData.s[i];
+                        }else if(i == 1){
+                            matrixParams.sy = keyData.s[i];
                         }
+                    }else if(interpolatedParams.type == 'r'){
+                        matrixParams.r = keyData.s[i];
                     }else{
-                        if(interpolatedParams.type == 'p'){
-                            if(i == 0){
-                                matrixParams.px = keyData.s[i]+(keyData.e[i]-keyData.s[i])*perc;
-                            }else if(i == 1){
-                                matrixParams.py = keyData.s[i]+(keyData.e[i]-keyData.s[i])*perc;
-                            }
-                        }else if(interpolatedParams.type == 's'){
-                            if(i == 0){
-                                matrixParams.sx = keyData.s[i]+(keyData.e[i]-keyData.s[i])*perc;
-                            }else if(i == 1){
-                                matrixParams.sy = keyData.s[i]+(keyData.e[i]-keyData.s[i])*perc;
-                            }
-                        }else if(interpolatedParams.type == 'r'){
-                            matrixParams.r = keyData.s[i]+(keyData.e[i]-keyData.s[i])*perc;
-                        }else{
-                            propertyArray.push(keyData.s[i]+(keyData.e[i]-keyData.s[i])*perc);
+                        propertyArray.push(keyData.s[i]);
+                    }
+                }else{
+                    if(interpolatedParams.type == 'p'){
+                        if(i == 0){
+                            matrixParams.px = keyData.s[i]+(keyData.e[i]-keyData.s[i])*perc;
+                        }else if(i == 1){
+                            matrixParams.py = keyData.s[i]+(keyData.e[i]-keyData.s[i])*perc;
                         }
+                    }else if(interpolatedParams.type == 's'){
+                        if(i == 0){
+                            matrixParams.sx = keyData.s[i]+(keyData.e[i]-keyData.s[i])*perc;
+                        }else if(i == 1){
+                            matrixParams.sy = keyData.s[i]+(keyData.e[i]-keyData.s[i])*perc;
+                        }
+                    }else if(interpolatedParams.type == 'r'){
+                        matrixParams.r = keyData.s[i]+(keyData.e[i]-keyData.s[i])*perc;
+                    }else{
+                        propertyArray.push(keyData.s[i]+(keyData.e[i]-keyData.s[i])*perc);
                     }
                 }
             }
@@ -687,6 +659,172 @@
         return propertyArray;
     }
 
+    function interpolateShape(shapeData, frameNum, offsetTime, renderType, isMask){
+        var pathData = {};
+        pathData.closed = isMask ? shapeData.cl : shapeData.closed;
+        var keyframes = isMask ? shapeData.pt : shapeData.ks;
+        if(keyframes.v){
+            if(renderType == 'svg'){
+                if(!keyframes.__pathString){
+                    keyframes.__pathString = createPathString(keyframes,pathData.closed);
+                }
+                pathData.pathString = keyframes.__pathString;
+            }else{
+                pathData.pathNodes = keyframes;
+            }
+            return pathData;
+        }else{
+            var shapeData = {
+                i: [],
+                o: [],
+                v: []
+            };
+            var propertyArray = [];
+            var j,jLen, k, kLen;
+            var coordsIData,coordsOData,coordsVData;
+            if(frameNum < keyframes[0].t-offsetTime){
+                jLen = keyframes[0].s[0].i.length;
+                for(j=0;j<jLen;j+=1){
+                    coordsIData = [];
+                    coordsOData = [];
+                    coordsVData = [];
+                    kLen = keyframes[0].s[0].i[j].length;
+                    for(k=0;k<kLen;k+=1){
+                        coordsIData.push(keyframes[0].s[0].i[j][k]);
+                        coordsOData.push(keyframes[0].s[0].o[j][k]);
+                        coordsVData.push(keyframes[0].s[0].v[j][k]);
+                    }
+                    shapeData.i.push(coordsIData);
+                    shapeData.o.push(coordsOData);
+                    shapeData.v.push(coordsVData);
+                }
+                propertyArray.push(shapeData);
+                if(renderType == 'svg'){
+                    if(!keyframes.__minValue){
+                        keyframes.__minValue = createPathString(propertyArray,pathData.closed);
+                    }
+                    pathData.pathString = keyframes.__minValue;
+                }else{
+                    if(!keyframes.__minValue){
+                        keyframes.__minValue = propertyArray;
+                    }
+                    pathData.pathNodes = keyframes.__minValue;
+                }
+                return pathData;
+            }else if(frameNum > keyframes[keyframes.length - 1].t-offsetTime){
+                var pos = keyframes.length - 2;
+                jLen = keyframes[pos].s[0].i.length;
+                for(j=0;j<jLen;j+=1){
+                    coordsIData = [];
+                    coordsOData = [];
+                    coordsVData = [];
+                    kLen = keyframes[pos].s[0].i[j].length;
+                    for(k=0;k<kLen;k+=1){
+                        coordsIData.push(keyframes[pos].e[0].i[j][k]);
+                        coordsOData.push(keyframes[pos].e[0].o[j][k]);
+                        coordsVData.push(keyframes[pos].e[0].v[j][k]);
+                    }
+                    shapeData.i.push(coordsIData);
+                    shapeData.o.push(coordsOData);
+                    shapeData.v.push(coordsVData);
+                }
+                propertyArray.push(shapeData);
+                if(renderType == 'svg'){
+                    if(!keyframes.__maxValue){
+                        keyframes.__maxValue = createPathString(propertyArray,pathData.closed);
+                    }
+                    pathData.pathString = keyframes.__maxValue;
+                }else{
+                    if(!keyframes.__maxValue){
+                        keyframes.__maxValue = propertyArray;
+                    }
+                    pathData.pathNodes = keyframes.__maxValue;
+                }
+                return pathData;
+            }else{
+                var i = 0;
+                var len = keyframes.length- 1;
+                var dir = 1;
+                var flag = true;
+                var keyData,nextKeyData;
+
+                while(flag){
+                    keyData = keyframes[i];
+                    nextKeyData = keyframes[i+1];
+                    if((nextKeyData.t - offsetTime) > frameNum && dir == 1){
+                        break;
+                    }
+                    if(i < len - 1 && dir == 1 || i > 0 && dir == -1){
+                        i += dir;
+                    }else{
+                        flag = false;
+                    }
+                }
+
+                var outX,outY,inX,inY,perc;
+                if(keyData.h !== 1){
+                    outX = keyData.o.x;
+                    outY = keyData.o.y;
+                    inX = keyData.i.x;
+                    inY = keyData.i.y;
+                    var fnc;
+                    if(keyData.__fnct){
+                        fnc = keyData.__fnct;
+                    }else{
+                        fnc = bez.getEasingCurve(outX,outY,inX,inY);
+                        keyData.__fnct = fnc;
+                    }
+                    perc = fnc('',(frameNum)-(keyData.t-offsetTime),0,1,(nextKeyData.t-offsetTime)-(keyData.t-offsetTime));
+                    if(frameNum >= nextKeyData.t-offsetTime){
+                        perc = 1;
+                    }else if(frameNum < keyData.t-offsetTime){
+                        perc = 0;
+                    }
+                }
+                if(keyData.h === 1 && keyData.__hValue){
+                    propertyArray.push(keyData.__hValue);
+                }else{
+                    shapeData = {
+                        i: [],
+                        o: [],
+                        v: []
+                    };
+                    jLen = keyData.s[0].i.length;
+                    for(j=0;j<jLen;j+=1){
+                        coordsIData = [];
+                        coordsOData = [];
+                        coordsVData = [];
+                        kLen = keyData.s[0].i[j].length;
+                        for(k=0;k<kLen;k+=1){
+                            if(keyData.h === 1){
+                                coordsIData.push(keyData.s[0].i[j][k]);
+                                coordsOData.push(keyData.s[0].o[j][k]);
+                                coordsVData.push(keyData.s[0].v[j][k]);
+                            }else{
+                                coordsIData.push(keyData.s[0].i[j][k]+(keyData.e[0].i[j][k]-keyData.s[0].i[j][k])*perc);
+                                coordsOData.push(keyData.s[0].o[j][k]+(keyData.e[0].o[j][k]-keyData.s[0].o[j][k])*perc);
+                                coordsVData.push(keyData.s[0].v[j][k]+(keyData.e[0].v[j][k]-keyData.s[0].v[j][k])*perc);
+                            }
+                        }
+                        shapeData.i.push(coordsIData);
+                        shapeData.o.push(coordsOData);
+                        shapeData.v.push(coordsVData);
+                        if(keyData.h === 1){
+                            keyData.__hValue = shapeData;
+                        }
+                        propertyArray.push(shapeData);
+                    }
+                }
+                if(renderType == 'svg'){
+                    pathData.pathString = createPathString(propertyArray[0],pathData.closed);
+                }else{
+                    pathData.pathNodes = propertyArray[0];
+                }
+                return pathData;
+            }
+        }
+    }
+
     function createPathString(paths,closed){
         //return '';
         var pathV,pathO,pathI;
@@ -765,10 +903,10 @@
     function iterateLayers(layers, frameNum,renderType){
 
         var dataOb;
-        var maskProps,maskValue;
+        var maskProps;
         var timeRemapped;
         var shapeItem;
-        var fillOpacity,fillColor, shape, strokeColor, strokeOpacity, strokeWidth, elmPos, elmSize, elmRound;
+        var fillOpacity,fillColor, strokeColor, strokeOpacity, strokeWidth, elmPos, elmSize, elmRound;
         var shapeTrOb = {};
 
         var offsettedFrameNum, i, len, renderedData, shapeData;
@@ -832,20 +970,19 @@
                 maskProps = item.masksProperties;
                 len = maskProps.length;
                 for(i=0;i<len;i+=1){
-                    if(!maskProps[i].pathStrings){
-                        maskProps[i].pathStrings = [];
-                        maskProps[i].pathVertices = [];
+                    if(!maskProps[i].paths){
+                        maskProps[i].paths = [];
                         maskProps[i].opacity = [];
                     }
-                    maskValue = getInterpolatedValue(maskProps[i].pt,offsettedFrameNum, item.startTime,interpolatedParams);
-                    maskProps[i].pathVertices[offsettedFrameNum] = maskValue instanceof Array ? maskValue : [maskValue];
-                    if(renderType == 'svg'){
-                        maskProps[i].pathStrings[offsettedFrameNum] = createPathString(maskValue,maskProps[i].cl);
-                    }
+
+                    maskProps[i].paths[offsettedFrameNum] = interpolateShape(maskProps[i],offsettedFrameNum, item.startTime,renderType,true);
                     maskProps[i].opacity[offsettedFrameNum] = getInterpolatedValue(maskProps[i].o,offsettedFrameNum, item.startTime,interpolatedParams);
                     maskProps[i].opacity[offsettedFrameNum] = maskProps[i].opacity[offsettedFrameNum] instanceof Array ? maskProps[i].opacity[offsettedFrameNum][0]/100 : maskProps[i].opacity[offsettedFrameNum]/100;
                 }
             }
+            if((frameNum < item.inPoint || frameNum > item.outPoint)){
+               continue;
+            }
             if(item.type == 'PreCompLayer'){
                 if(!(frameNum < item.inPoint || frameNum > item.outPoint)){
                     timeRemapped = item.tm ? item.tm[offsettedFrameNum] < 0 ? 0 : item.tm[offsettedFrameNum] : offsettedFrameNum;
@@ -891,14 +1028,12 @@
                         }
                     }
                     if(shapeItem.ks){
-                        shape = getInterpolatedValue(shapeItem.ks,offsettedFrameNum, item.startTime,interpolatedParams);
-                        shapeData.path = {
-                            pathNodes: shape,
-                            closed: shapeItem.closed
-                        };
-                        if(renderType == 'svg' || (renderType == 'threed' && item.threeD === true)){
-                            shapeData.path.pathString = createPathString(shape,shapeItem.closed);
+                        //(renderType == 'threed' && item.threeD === true)
+                        var rType = renderType;
+                        if(rType == 'threed'){
+                            rType = item.threeD === true ? 'svg' : 'canvas';
                         }
+                        shapeData.path = interpolateShape(shapeItem,offsettedFrameNum, item.startTime,rType);
                     }else if(shapeItem.el){
                         elmPos = getInterpolatedValue(shapeItem.el.p,offsettedFrameNum, item.startTime,interpolatedParams);
                         elmSize = getInterpolatedValue(shapeItem.el.s,offsettedFrameNum, item.startTime,interpolatedParams);