(self.webpackChunk_N_E = self.webpackChunk_N_E || []).push([
[2933], {
74314: function(t, e, i) {
"undefined" != typeof navigator && (t.exports = function() {
"use strict";
var t, s, a, r, n, o, h, l, p, f, m = "",
d = !1,
setLocationHref = function(t) {
m = t
},
getLocationHref = function() {
return m
};
function createTag(t) {
return document.createElement(t)
}
function extendPrototype(t, e) {
var i, s, a = t.length;
for (i = 0; i < a; i += 1)
for (var r in s = t[i].prototype) Object.prototype.hasOwnProperty.call(s, r) && (e.prototype[r] = s[r])
}
var c = function() {
function AudioController(t) {
this.audios = [], this.audioFactory = t, this._volume = 1, this._isMuted = !1
}
return AudioController.prototype = {
addAudio: function(t) {
this.audios.push(t)
},
pause: function() {
var t, e = this.audios.length;
for (t = 0; t < e; t += 1) this.audios[t].pause()
},
resume: function() {
var t, e = this.audios.length;
for (t = 0; t < e; t += 1) this.audios[t].resume()
},
setRate: function(t) {
var e, i = this.audios.length;
for (e = 0; e < i; e += 1) this.audios[e].setRate(t)
},
createAudio: function(t) {
return this.audioFactory ? this.audioFactory(t) : window.Howl ? new window.Howl({
src: [t]
}) : {
isPlaying: !1,
play: function() {
this.isPlaying = !0
},
seek: function() {
this.isPlaying = !1
},
playing: function() {},
rate: function() {},
setVolume: function() {}
}
},
setAudioFactory: function(t) {
this.audioFactory = t
},
setVolume: function(t) {
this._volume = t, this._updateVolume()
},
mute: function() {
this._isMuted = !0, this._updateVolume()
},
unmute: function() {
this._isMuted = !1, this._updateVolume()
},
getVolume: function() {
return this._volume
},
_updateVolume: function() {
var t, e = this.audios.length;
for (t = 0; t < e; t += 1) this.audios[t].volume(this._volume * (this._isMuted ? 0 : 1))
}
},
function() {
return new AudioController
}
}(),
u = function() {
function createRegularArray(t, e) {
var i, s = 0,
a = [];
switch (t) {
case "int16":
case "uint8c":
i = 1;
break;
default:
i = 1.1
}
for (s = 0; s < e; s += 1) a.push(i);
return a
}
return "function" == typeof Uint8ClampedArray && "function" == typeof Float32Array ? function(t, e) {
return "float32" === t ? new Float32Array(e) : "int16" === t ? new Int16Array(e) : "uint8c" === t ? new Uint8ClampedArray(e) : createRegularArray(t, e)
} : createRegularArray
}();
function createSizedArray(t) {
return Array.apply(null, {
length: t
})
}
function _typeof$3(t) {
return (_typeof$3 = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(t) {
return typeof t
} : function(t) {
return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t
})(t)
}
var g = !0,
y = null,
v = "",
S = /^((?!chrome|android).)*safari/i.test(navigator.userAgent),
P = Math.pow,
b = Math.sqrt,
_ = Math.floor,
A = Math.min,
E = {};
(function() {
var t, e = ["abs", "acos", "acosh", "asin", "asinh", "atan", "atanh", "atan2", "ceil", "cbrt", "expm1", "clz32", "cos", "cosh", "exp", "floor", "fround", "hypot", "imul", "log", "log1p", "log2", "log10", "max", "min", "pow", "random", "round", "sign", "sin", "sinh", "sqrt", "tan", "tanh", "trunc", "E", "LN10", "LN2", "LOG10E", "LOG2E", "PI", "SQRT1_2", "SQRT2"],
i = e.length;
for (t = 0; t < i; t += 1) E[e[t]] = Math[e[t]]
})(), E.random = Math.random, E.abs = function(t) {
if ("object" === _typeof$3(t) && t.length) {
var e, i = createSizedArray(t.length),
s = t.length;
for (e = 0; e < s; e += 1) i[e] = Math.abs(t[e]);
return i
}
return Math.abs(t)
};
var k = 150,
x = Math.PI / 180;
function BMEnterFrameEvent(t, e, i, s) {
this.type = t, this.currentTime = e, this.totalTime = i, this.direction = s < 0 ? -1 : 1
}
function BMCompleteEvent(t, e) {
this.type = t, this.direction = e < 0 ? -1 : 1
}
function BMCompleteLoopEvent(t, e, i, s) {
this.type = t, this.currentLoop = i, this.totalLoops = e, this.direction = s < 0 ? -1 : 1
}
function BMSegmentStartEvent(t, e, i) {
this.type = t, this.firstFrame = e, this.totalFrames = i
}
function BMDestroyEvent(t, e) {
this.type = t, this.target = e
}
function BMRenderFrameErrorEvent(t, e) {
this.type = "renderFrameError", this.nativeError = t, this.currentTime = e
}
function BMConfigErrorEvent(t) {
this.type = "configError", this.nativeError = t
}
var D = (t = 0, function() {
return t += 1, v + "__lottie_element_" + t
});
function HSVtoRGB(t, e, i) {
var s, a, r, n, o, h, l, p;
switch (n = Math.floor(6 * t), o = 6 * t - n, h = i * (1 - e), l = i * (1 - o * e), p = i * (1 - (1 - o) * e), n % 6) {
case 0:
s = i, a = p, r = h;
break;
case 1:
s = l, a = i, r = h;
break;
case 2:
s = h, a = i, r = p;
break;
case 3:
s = h, a = l, r = i;
break;
case 4:
s = p, a = h, r = i;
break;
case 5:
s = i, a = h, r = l
}
return [s, a, r]
}
function RGBtoHSV(t, e, i) {
var s, a = Math.max(t, e, i),
r = Math.min(t, e, i),
n = a - r;
switch (a) {
case r:
s = 0;
break;
case t:
s = (e - i + n * (e < i ? 6 : 0)) / (6 * n);
break;
case e:
s = (i - t + 2 * n) / (6 * n);
break;
case i:
s = (t - e + 4 * n) / (6 * n)
}
return [s, 0 === a ? 0 : n / a, a / 255]
}
function addSaturationToRGB(t, e) {
var i = RGBtoHSV(255 * t[0], 255 * t[1], 255 * t[2]);
return i[1] += e, i[1] > 1 ? i[1] = 1 : i[1] <= 0 && (i[1] = 0), HSVtoRGB(i[0], i[1], i[2])
}
function addBrightnessToRGB(t, e) {
var i = RGBtoHSV(255 * t[0], 255 * t[1], 255 * t[2]);
return i[2] += e, i[2] > 1 ? i[2] = 1 : i[2] < 0 && (i[2] = 0), HSVtoRGB(i[0], i[1], i[2])
}
function addHueToRGB(t, e) {
var i = RGBtoHSV(255 * t[0], 255 * t[1], 255 * t[2]);
return i[0] += e / 360, i[0] > 1 ? i[0] -= 1 : i[0] < 0 && (i[0] += 1), HSVtoRGB(i[0], i[1], i[2])
}! function() {
var t, e, i = [];
for (t = 0; t < 256; t += 1) e = t.toString(16), i[t] = 1 === e.length ? "0" + e : e
}();
var setSubframeEnabled = function(t) {
g = !!t
},
setExpressionsPlugin = function(t) {
y = t
},
getExpressionsPlugin = function() {
return y
},
getExpressionInterfaces = function() {
return null
},
setDefaultCurveSegments = function(t) {
k = t
},
getDefaultCurveSegments = function() {
return k
},
setIdPrefix = function(t) {
v = t
};
function createNS(t) {
return document.createElementNS("http://www.w3.org/2000/svg", t)
}
function _typeof$2(t) {
return (_typeof$2 = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(t) {
return typeof t
} : function(t) {
return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t
})(t)
}
var M = function() {
var t, e, i = 1,
s = [],
a = {
onmessage: function() {},
postMessage: function(e) {
t({
data: e
})
}
},
r = {
postMessage: function(t) {
a.onmessage({
data: t
})
}
};
function setupWorker() {
e || ((e = function(e) {
if (window.Worker && window.Blob && d) {
var i = new Blob(["var _workerSelf = self; self.onmessage = ", e.toString()], {
type: "text/javascript"
}),
s = URL.createObjectURL(i);
return new Worker(s)
}
return t = e, a
}(function(t) {
if (r.dataManager || (r.dataManager = function() {
function completeLayers(t, e) {
var i, s, a, r, n, o, h = t.length;
for (s = 0; s < h; s += 1)
if ("ks" in (i = t[s]) && !i.completed) {
if (i.completed = !0, i.hasMask) {
var l = i.masksProperties;
for (a = 0, r = l.length; a < r; a += 1)
if (l[a].pt.k.i) convertPathsToAbsoluteValues(l[a].pt.k);
else
for (n = 0, o = l[a].pt.k.length; n < o; n += 1) l[a].pt.k[n].s && convertPathsToAbsoluteValues(l[a].pt.k[n].s[0]), l[a].pt.k[n].e && convertPathsToAbsoluteValues(l[a].pt.k[n].e[0])
}
0 === i.ty ? (i.layers = findCompLayers(i.refId, e), completeLayers(i.layers, e)) : 4 === i.ty ? completeShapes(i.shapes) : 5 === i.ty && 0 === i.t.a.length && i.t.p
}
}
function findCompLayers(t, e) {
var i = function(t, e) {
for (var i = 0, s = e.length; i < s;) {
if (e[i].id === t) return e[i];
i += 1
}
return null
}(t, e);
return i ? i.layers.__used ? JSON.parse(JSON.stringify(i.layers)) : (i.layers.__used = !0, i.layers) : null
}
function completeShapes(t) {
var e, i, s;
for (e = t.length - 1; e >= 0; e -= 1)
if ("sh" === t[e].ty) {
if (t[e].ks.k.i) convertPathsToAbsoluteValues(t[e].ks.k);
else
for (i = 0, s = t[e].ks.k.length; i < s; i += 1) t[e].ks.k[i].s && convertPathsToAbsoluteValues(t[e].ks.k[i].s[0]), t[e].ks.k[i].e && convertPathsToAbsoluteValues(t[e].ks.k[i].e[0])
} else "gr" === t[e].ty && completeShapes(t[e].it)
}
function convertPathsToAbsoluteValues(t) {
var e, i = t.i.length;
for (e = 0; e < i; e += 1) t.i[e][0] += t.v[e][0], t.i[e][1] += t.v[e][1], t.o[e][0] += t.v[e][0], t.o[e][1] += t.v[e][1]
}
function checkVersion(t, e) {
var i = e ? e.split(".") : [100, 100, 100];
return t[0] > i[0] || !(i[0] > t[0]) && (t[1] > i[1] || !(i[1] > t[1]) && (t[2] > i[2] || !(i[2] > t[2]) && null))
}
var t, e = function() {
var t = [4, 4, 14];
function iterateLayers(t) {
var e, i = t.length;
for (e = 0; e < i; e += 1) 5 === t[e].ty && function(t) {
var e = t.t.d;
t.t.d = {
k: [{
s: e,
t: 0
}]
}
}(t[e])
}
return function(e) {
if (checkVersion(t, e.v) && (iterateLayers(e.layers), e.assets)) {
var i, s = e.assets.length;
for (i = 0; i < s; i += 1) e.assets[i].layers && iterateLayers(e.assets[i].layers)
}
}
}(),
i = (t = [4, 7, 99], function(e) {
if (e.chars && !checkVersion(t, e.v)) {
var i, s = e.chars.length;
for (i = 0; i < s; i += 1) {
var a = e.chars[i];
a.data && a.data.shapes && (completeShapes(a.data.shapes), a.data.ip = 0, a.data.op = 99999, a.data.st = 0, a.data.sr = 1, a.data.ks = {
p: {
k: [0, 0],
a: 0
},
s: {
k: [100, 100],
a: 0
},
a: {
k: [0, 0],
a: 0
},
r: {
k: 0,
a: 0
},
o: {
k: 100,
a: 0
}
}, e.chars[i].t || (a.data.shapes.push({
ty: "no"
}), a.data.shapes[0].it.push({
p: {
k: [0, 0],
a: 0
},
s: {
k: [100, 100],
a: 0
},
a: {
k: [0, 0],
a: 0
},
r: {
k: 0,
a: 0
},
o: {
k: 100,
a: 0
},
sk: {
k: 0,
a: 0
},
sa: {
k: 0,
a: 0
},
ty: "tr"
})))
}
}
}),
s = function() {
var t = [5, 7, 15];
function iterateLayers(t) {
var e, i = t.length;
for (e = 0; e < i; e += 1) 5 === t[e].ty && function(t) {
var e = t.t.p;
"number" == typeof e.a && (e.a = {
a: 0,
k: e.a
}), "number" == typeof e.p && (e.p = {
a: 0,
k: e.p
}), "number" == typeof e.r && (e.r = {
a: 0,
k: e.r
})
}(t[e])
}
return function(e) {
if (checkVersion(t, e.v) && (iterateLayers(e.layers), e.assets)) {
var i, s = e.assets.length;
for (i = 0; i < s; i += 1) e.assets[i].layers && iterateLayers(e.assets[i].layers)
}
}
}(),
a = function() {
var t = [4, 1, 9];
function iterateLayers(t) {
var e, i = t.length;
for (e = 0; e < i; e += 1) 4 === t[e].ty && function iterateShapes(t) {
var e, i, s, a = t.length;
for (e = 0; e < a; e += 1)
if ("gr" === t[e].ty) iterateShapes(t[e].it);
else if ("fl" === t[e].ty || "st" === t[e].ty) {
if (t[e].c.k && t[e].c.k[0].i)
for (i = 0, s = t[e].c.k.length; i < s; i += 1) t[e].c.k[i].s && (t[e].c.k[i].s[0] /= 255, t[e].c.k[i].s[1] /= 255, t[e].c.k[i].s[2] /= 255, t[e].c.k[i].s[3] /= 255), t[e].c.k[i].e && (t[e].c.k[i].e[0] /= 255, t[e].c.k[i].e[1] /= 255, t[e].c.k[i].e[2] /= 255, t[e].c.k[i].e[3] /= 255);
else t[e].c.k[0] /= 255, t[e].c.k[1] /= 255, t[e].c.k[2] /= 255, t[e].c.k[3] /= 255
}
}(t[e].shapes)
}
return function(e) {
if (checkVersion(t, e.v) && (iterateLayers(e.layers), e.assets)) {
var i, s = e.assets.length;
for (i = 0; i < s; i += 1) e.assets[i].layers && iterateLayers(e.assets[i].layers)
}
}
}(),
r = function() {
var t = [4, 4, 18];
function iterateLayers(t) {
var e, i, s, a, r, n, o = t.length;
for (i = 0; i < o; i += 1) {
if ((e = t[i]).hasMask) {
var h = e.masksProperties;
for (s = 0, a = h.length; s < a; s += 1)
if (h[s].pt.k.i) h[s].pt.k.c = h[s].cl;
else
for (r = 0, n = h[s].pt.k.length; r < n; r += 1) h[s].pt.k[r].s && (h[s].pt.k[r].s[0].c = h[s].cl), h[s].pt.k[r].e && (h[s].pt.k[r].e[0].c = h[s].cl)
}
4 === e.ty && function completeClosingShapes(t) {
var e, i, s;
for (e = t.length - 1; e >= 0; e -= 1)
if ("sh" === t[e].ty) {
if (t[e].ks.k.i) t[e].ks.k.c = t[e].closed;
else
for (i = 0, s = t[e].ks.k.length; i < s; i += 1) t[e].ks.k[i].s && (t[e].ks.k[i].s[0].c = t[e].closed), t[e].ks.k[i].e && (t[e].ks.k[i].e[0].c = t[e].closed)
} else "gr" === t[e].ty && completeClosingShapes(t[e].it)
}(e.shapes)
}
}
return function(e) {
if (checkVersion(t, e.v) && (iterateLayers(e.layers), e.assets)) {
var i, s = e.assets.length;
for (i = 0; i < s; i += 1) e.assets[i].layers && iterateLayers(e.assets[i].layers)
}
}
}(),
n = {};
return n.completeData = function(t) {
t.__complete || (a(t), e(t), i(t), s(t), r(t), completeLayers(t.layers, t.assets), function(t, e) {
if (t) {
var i = 0,
s = t.length;
for (i = 0; i < s; i += 1) 1 === t[i].t && (t[i].data.layers = findCompLayers(t[i].data.refId, e), completeLayers(t[i].data.layers, e))
}
}(t.chars, t.assets), t.__complete = !0)
}, n.checkColors = a, n.checkChars = i, n.checkPathProperties = s, n.checkShapes = r, n.completeLayers = completeLayers, n
}()), r.assetLoader || (r.assetLoader = function() {
function formatResponse(t) {
var e = t.getResponseHeader("content-type");
return e && "json" === t.responseType && -1 !== e.indexOf("json") || t.response && "object" === _typeof$2(t.response) ? t.response : t.response && "string" == typeof t.response ? JSON.parse(t.response) : t.responseText ? JSON.parse(t.responseText) : null
}
return {
load: function(t, e, i, s) {
var a, r = new XMLHttpRequest;
try {
r.responseType = "json"
} catch (t) {}
r.onreadystatechange = function() {
if (4 === r.readyState) {
if (200 === r.status) i(a = formatResponse(r));
else try {
a = formatResponse(r), i(a)
} catch (t) {
s && s(t)
}
}
};
try {
r.open("GET", t, !0)
} catch (i) {
r.open("GET", e + "/" + t, !0)
}
r.send()
}
}
}()), "loadAnimation" === t.data.type) r.assetLoader.load(t.data.path, t.data.fullPath, function(e) {
r.dataManager.completeData(e), r.postMessage({
id: t.data.id,
payload: e,
status: "success"
})
}, function() {
r.postMessage({
id: t.data.id,
status: "error"
})
});
else if ("complete" === t.data.type) {
var e = t.data.animation;
r.dataManager.completeData(e), r.postMessage({
id: t.data.id,
payload: e,
status: "success"
})
} else "loadData" === t.data.type && r.assetLoader.load(t.data.path, t.data.fullPath, function(e) {
r.postMessage({
id: t.data.id,
payload: e,
status: "success"
})
}, function() {
r.postMessage({
id: t.data.id,
status: "error"
})
})
})).onmessage = function(t) {
var e = t.data,
i = e.id,
a = s[i];
s[i] = null, "success" === e.status ? a.onComplete(e.payload) : a.onError && a.onError()
})
}
function createProcess(t, e) {
var a = "processId_" + (i += 1);
return s[a] = {
onComplete: t,
onError: e
}, a
}
return {
loadAnimation: function(t, i, s) {
setupWorker();
var a = createProcess(i, s);
e.postMessage({
type: "loadAnimation",
path: t,
fullPath: window.location.origin + window.location.pathname,
id: a
})
},
loadData: function(t, i, s) {
setupWorker();
var a = createProcess(i, s);
e.postMessage({
type: "loadData",
path: t,
fullPath: window.location.origin + window.location.pathname,
id: a
})
},
completeAnimation: function(t, i, s) {
setupWorker();
var a = createProcess(i, s);
e.postMessage({
type: "complete",
animation: t,
id: a
})
}
}
}(),
C = function() {
var t, e, i = ((t = createTag("canvas")).width = 1, t.height = 1, (e = t.getContext("2d")).fillStyle = "rgba(0,0,0,0)", e.fillRect(0, 0, 1, 1), t);
function imageLoaded() {
this.loadedAssets += 1, this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages && this.imagesLoadedCb && this.imagesLoadedCb(null)
}
function footageLoaded() {
this.loadedFootagesCount += 1, this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages && this.imagesLoadedCb && this.imagesLoadedCb(null)
}
function getAssetsPath(t, e, i) {
var s = "";
if (t.e) s = t.p;
else if (e) {
var a = t.p; - 1 !== a.indexOf("images/") && (a = a.split("/")[1]), s = e + a
} else s = i + (t.u ? t.u : "") + t.p;
return s
}
function testImageLoaded(t) {
var e = 0,
i = setInterval((function() {
(t.getBBox().width || e > 500) && (this._imageLoaded(), clearInterval(i)), e += 1
}).bind(this), 50)
}
function createFootageData(t) {
var e = {
assetData: t
},
i = getAssetsPath(t, this.assetsPath, this.path);
return M.loadData(i, (function(t) {
e.img = t, this._footageLoaded()
}).bind(this), (function() {
e.img = {}, this._footageLoaded()
}).bind(this)), e
}
function ImagePreloaderFactory() {
this._imageLoaded = imageLoaded.bind(this), this._footageLoaded = footageLoaded.bind(this), this.testImageLoaded = testImageLoaded.bind(this), this.createFootageData = createFootageData.bind(this), this.assetsPath = "", this.path = "", this.totalImages = 0, this.totalFootages = 0, this.loadedAssets = 0, this.loadedFootagesCount = 0, this.imagesLoadedCb = null, this.images = []
}
return ImagePreloaderFactory.prototype = {
loadAssets: function(t, e) {
this.imagesLoadedCb = e;
var i, s = t.length;
for (i = 0; i < s; i += 1) t[i].layers || (t[i].t && "seq" !== t[i].t ? 3 === t[i].t && (this.totalFootages += 1, this.images.push(this.createFootageData(t[i]))) : (this.totalImages += 1, this.images.push(this._createImageData(t[i]))))
},
setAssetsPath: function(t) {
this.assetsPath = t || ""
},
setPath: function(t) {
this.path = t || ""
},
loadedImages: function() {
return this.totalImages === this.loadedAssets
},
loadedFootages: function() {
return this.totalFootages === this.loadedFootagesCount
},
destroy: function() {
this.imagesLoadedCb = null, this.images.length = 0
},
getAsset: function(t) {
for (var e = 0, i = this.images.length; e < i;) {
if (this.images[e].assetData === t) return this.images[e].img;
e += 1
}
return null
},
createImgData: function(t) {
var e = getAssetsPath(t, this.assetsPath, this.path),
s = createTag("img");
s.crossOrigin = "anonymous", s.addEventListener("load", this._imageLoaded, !1), s.addEventListener("error", (function() {
a.img = i, this._imageLoaded()
}).bind(this), !1), s.src = e;
var a = {
img: s,
assetData: t
};
return a
},
createImageData: function(t) {
var e = getAssetsPath(t, this.assetsPath, this.path),
s = createNS("image");
S ? this.testImageLoaded(s) : s.addEventListener("load", this._imageLoaded, !1), s.addEventListener("error", (function() {
a.img = i, this._imageLoaded()
}).bind(this), !1), s.setAttributeNS("http://www.w3.org/1999/xlink", "href", e), this._elementHelper.append ? this._elementHelper.append(s) : this._elementHelper.appendChild(s);
var a = {
img: s,
assetData: t
};
return a
},
imageLoaded: imageLoaded,
footageLoaded: footageLoaded,
setCacheType: function(t, e) {
"svg" === t ? (this._elementHelper = e, this._createImageData = this.createImageData.bind(this)) : this._createImageData = this.createImgData.bind(this)
}
}, ImagePreloaderFactory
}();
function BaseEvent() {}
BaseEvent.prototype = {
triggerEvent: function(t, e) {
if (this._cbs[t])
for (var i = this._cbs[t], s = 0; s < i.length; s += 1) i[s](e)
},
addEventListener: function(t, e) {
return this._cbs[t] || (this._cbs[t] = []), this._cbs[t].push(e), (function() {
this.removeEventListener(t, e)
}).bind(this)
},
removeEventListener: function(t, e) {
if (e) {
if (this._cbs[t]) {
for (var i = 0, s = this._cbs[t].length; i < s;) this._cbs[t][i] === e && (this._cbs[t].splice(i, 1), i -= 1, s -= 1), i += 1;
this._cbs[t].length || (this._cbs[t] = null)
}
} else this._cbs[t] = null
}
};
var markerParser = function(t) {
for (var e = [], i = 0; i < t.length; i += 1) {
var s = t[i],
a = {
time: s.tm,
duration: s.dr
};
try {
a.payload = JSON.parse(t[i].cm)
} catch (e) {
try {
a.payload = function(t) {
for (var e, i = t.split("\r\n"), s = {}, a = 0, r = 0; r < i.length; r += 1) 2 === (e = i[r].split(":")).length && (s[e[0]] = e[1].trim(), a += 1);
if (0 === a) throw Error();
return s
}(t[i].cm)
} catch (e) {
a.payload = {
name: t[i].cm
}
}
}
e.push(a)
}
return e
},
T = function() {
function registerComposition(t) {
this.compositions.push(t)
}
return function() {
function _thisProjectFunction(t) {
for (var e = 0, i = this.compositions.length; e < i;) {
if (this.compositions[e].data && this.compositions[e].data.nm === t) return this.compositions[e].prepareFrame && this.compositions[e].data.xt && this.compositions[e].prepareFrame(this.currentFrame), this.compositions[e].compInterface;
e += 1
}
return null
}
return _thisProjectFunction.compositions = [], _thisProjectFunction.currentFrame = 0, _thisProjectFunction.registerComposition = registerComposition, _thisProjectFunction
}
}(),
F = {};
function _typeof$1(t) {
return (_typeof$1 = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(t) {
return typeof t
} : function(t) {
return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t
})(t)
}
var AnimationItem = function() {
this._cbs = [], this.name = "", this.path = "", this.isLoaded = !1, this.currentFrame = 0, this.currentRawFrame = 0, this.firstFrame = 0, this.totalFrames = 0, this.frameRate = 0, this.frameMult = 0, this.playSpeed = 1, this.playDirection = 1, this.playCount = 0, this.animationData = {}, this.assets = [], this.isPaused = !0, this.autoplay = !1, this.loop = !0, this.renderer = null, this.animationID = D(), this.assetsPath = "", this.timeCompleted = 0, this.segmentPos = 0, this.isSubframeEnabled = g, this.segments = [], this._idle = !0, this._completedLoop = !1, this.projectInterface = T(), this.imagePreloader = new C, this.audioController = c(), this.markers = [], this.configAnimation = this.configAnimation.bind(this), this.onSetupError = this.onSetupError.bind(this), this.onSegmentComplete = this.onSegmentComplete.bind(this), this.drawnFrameEvent = new BMEnterFrameEvent("drawnFrame", 0, 0, 0), this.expressionsPlugin = getExpressionsPlugin()
};
extendPrototype([BaseEvent], AnimationItem), AnimationItem.prototype.setParams = function(t) {
(t.wrapper || t.container) && (this.wrapper = t.wrapper || t.container);
var e = "svg";
t.animType ? e = t.animType : t.renderer && (e = t.renderer);
var i = F[e];
this.renderer = new i(this, t.rendererSettings), this.imagePreloader.setCacheType(e, this.renderer.globalData.defs), this.renderer.setProjectInterface(this.projectInterface), this.animType = e, "" === t.loop || null === t.loop || void 0 === t.loop || !0 === t.loop ? this.loop = !0 : !1 === t.loop ? this.loop = !1 : this.loop = parseInt(t.loop, 10), this.autoplay = !("autoplay" in t) || t.autoplay, this.name = t.name ? t.name : "", this.autoloadSegments = !Object.prototype.hasOwnProperty.call(t, "autoloadSegments") || t.autoloadSegments, this.assetsPath = t.assetsPath, this.initialSegment = t.initialSegment, t.audioFactory && this.audioController.setAudioFactory(t.audioFactory), t.animationData ? this.setupAnimation(t.animationData) : t.path && (-1 !== t.path.lastIndexOf("\\") ? this.path = t.path.substr(0, t.path.lastIndexOf("\\") + 1) : this.path = t.path.substr(0, t.path.lastIndexOf("/") + 1), this.fileName = t.path.substr(t.path.lastIndexOf("/") + 1), this.fileName = this.fileName.substr(0, this.fileName.lastIndexOf(".json")), M.loadAnimation(t.path, this.configAnimation, this.onSetupError))
}, AnimationItem.prototype.onSetupError = function() {
this.trigger("data_failed")
}, AnimationItem.prototype.setupAnimation = function(t) {
M.completeAnimation(t, this.configAnimation)
}, AnimationItem.prototype.setData = function(t, e) {
e && "object" !== _typeof$1(e) && (e = JSON.parse(e));
var i = {
wrapper: t,
animationData: e
},
s = t.attributes;
i.path = s.getNamedItem("data-animation-path") ? s.getNamedItem("data-animation-path").value : s.getNamedItem("data-bm-path") ? s.getNamedItem("data-bm-path").value : s.getNamedItem("bm-path") ? s.getNamedItem("bm-path").value : "", i.animType = s.getNamedItem("data-anim-type") ? s.getNamedItem("data-anim-type").value : s.getNamedItem("data-bm-type") ? s.getNamedItem("data-bm-type").value : s.getNamedItem("bm-type") ? s.getNamedItem("bm-type").value : s.getNamedItem("data-bm-renderer") ? s.getNamedItem("data-bm-renderer").value : s.getNamedItem("bm-renderer") ? s.getNamedItem("bm-renderer").value : function() {
if (F.canvas) return "canvas";
for (var t in F)
if (F[t]) return t;
return ""
}() || "canvas";
var a = s.getNamedItem("data-anim-loop") ? s.getNamedItem("data-anim-loop").value : s.getNamedItem("data-bm-loop") ? s.getNamedItem("data-bm-loop").value : s.getNamedItem("bm-loop") ? s.getNamedItem("bm-loop").value : "";
"false" === a ? i.loop = !1 : "true" === a ? i.loop = !0 : "" !== a && (i.loop = parseInt(a, 10));
var r = s.getNamedItem("data-anim-autoplay") ? s.getNamedItem("data-anim-autoplay").value : s.getNamedItem("data-bm-autoplay") ? s.getNamedItem("data-bm-autoplay").value : !s.getNamedItem("bm-autoplay") || s.getNamedItem("bm-autoplay").value;
i.autoplay = "false" !== r, i.name = s.getNamedItem("data-name") ? s.getNamedItem("data-name").value : s.getNamedItem("data-bm-name") ? s.getNamedItem("data-bm-name").value : s.getNamedItem("bm-name") ? s.getNamedItem("bm-name").value : "", "false" === (s.getNamedItem("data-anim-prerender") ? s.getNamedItem("data-anim-prerender").value : s.getNamedItem("data-bm-prerender") ? s.getNamedItem("data-bm-prerender").value : s.getNamedItem("bm-prerender") ? s.getNamedItem("bm-prerender").value : "") && (i.prerender = !1), i.path ? this.setParams(i) : this.trigger("destroy")
}, AnimationItem.prototype.includeLayers = function(t) {
t.op > this.animationData.op && (this.animationData.op = t.op, this.totalFrames = Math.floor(t.op - this.animationData.ip));
var e, i, s = this.animationData.layers,
a = s.length,
r = t.layers,
n = r.length;
for (i = 0; i < n; i += 1)
for (e = 0; e < a;) {
if (s[e].id === r[i].id) {
s[e] = r[i];
break
}
e += 1
}
if ((t.chars || t.fonts) && (this.renderer.globalData.fontManager.addChars(t.chars), this.renderer.globalData.fontManager.addFonts(t.fonts, this.renderer.globalData.defs)), t.assets)
for (e = 0, a = t.assets.length; e < a; e += 1) this.animationData.assets.push(t.assets[e]);
this.animationData.__complete = !1, M.completeAnimation(this.animationData, this.onSegmentComplete)
}, AnimationItem.prototype.onSegmentComplete = function(t) {
this.animationData = t;
var e = getExpressionsPlugin();
e && e.initExpressions(this), this.loadNextSegment()
}, AnimationItem.prototype.loadNextSegment = function() {
var t = this.animationData.segments;
if (!t || 0 === t.length || !this.autoloadSegments) {
this.trigger("data_ready"), this.timeCompleted = this.totalFrames;
return
}
var e = t.shift();
this.timeCompleted = e.time * this.frameRate;
var i = this.path + this.fileName + "_" + this.segmentPos + ".json";
this.segmentPos += 1, M.loadData(i, this.includeLayers.bind(this), (function() {
this.trigger("data_failed")
}).bind(this))
}, AnimationItem.prototype.loadSegments = function() {
this.animationData.segments || (this.timeCompleted = this.totalFrames), this.loadNextSegment()
}, AnimationItem.prototype.imagesLoaded = function() {
this.trigger("loaded_images"), this.checkLoaded()
}, AnimationItem.prototype.preloadImages = function() {
this.imagePreloader.setAssetsPath(this.assetsPath), this.imagePreloader.setPath(this.path), this.imagePreloader.loadAssets(this.animationData.assets, this.imagesLoaded.bind(this))
}, AnimationItem.prototype.configAnimation = function(t) {
if (this.renderer) try {
this.animationData = t, this.initialSegment ? (this.totalFrames = Math.floor(this.initialSegment[1] - this.initialSegment[0]), this.firstFrame = Math.round(this.initialSegment[0])) : (this.totalFrames = Math.floor(this.animationData.op - this.animationData.ip), this.firstFrame = Math.round(this.animationData.ip)), this.renderer.configAnimation(t), t.assets || (t.assets = []), this.assets = this.animationData.assets, this.frameRate = this.animationData.fr, this.frameMult = this.animationData.fr / 1e3, this.renderer.searchExtraCompositions(t.assets), this.markers = markerParser(t.markers || []), this.trigger("config_ready"), this.preloadImages(), this.loadSegments(), this.updaFrameModifier(), this.waitForFontsLoaded(), this.isPaused && this.audioController.pause()
} catch (t) {
this.triggerConfigError(t)
}
}, AnimationItem.prototype.waitForFontsLoaded = function() {
this.renderer && (this.renderer.globalData.fontManager.isLoaded ? this.checkLoaded() : setTimeout(this.waitForFontsLoaded.bind(this), 20))
}, AnimationItem.prototype.checkLoaded = function() {
if (!this.isLoaded && this.renderer.globalData.fontManager.isLoaded && (this.imagePreloader.loadedImages() || "canvas" !== this.renderer.rendererType) && this.imagePreloader.loadedFootages()) {
this.isLoaded = !0;
var t = getExpressionsPlugin();
t && t.initExpressions(this), this.renderer.initItems(), setTimeout((function() {
this.trigger("DOMLoaded")
}).bind(this), 0), this.gotoFrame(), this.autoplay && this.play()
}
}, AnimationItem.prototype.resize = function(t, e) {
var i = "number" == typeof t ? t : void 0,
s = "number" == typeof e ? e : void 0;
this.renderer.updateContainerSize(i, s)
}, AnimationItem.prototype.setSubframe = function(t) {
this.isSubframeEnabled = !!t
}, AnimationItem.prototype.gotoFrame = function() {
this.currentFrame = this.isSubframeEnabled ? this.currentRawFrame : ~~this.currentRawFrame, this.timeCompleted !== this.totalFrames && this.currentFrame > this.timeCompleted && (this.currentFrame = this.timeCompleted), this.trigger("enterFrame"), this.renderFrame(), this.trigger("drawnFrame")
}, AnimationItem.prototype.renderFrame = function() {
if (!1 !== this.isLoaded && this.renderer) try {
this.expressionsPlugin && this.expressionsPlugin.resetFrame(), this.renderer.renderFrame(this.currentFrame + this.firstFrame)
} catch (t) {
this.triggerRenderFrameError(t)
}
}, AnimationItem.prototype.play = function(t) {
(!t || this.name === t) && !0 === this.isPaused && (this.isPaused = !1, this.trigger("_play"), this.audioController.resume(), this._idle && (this._idle = !1, this.trigger("_active")))
}, AnimationItem.prototype.pause = function(t) {
t && this.name !== t || !1 !== this.isPaused || (this.isPaused = !0, this.trigger("_pause"), this._idle = !0, this.trigger("_idle"), this.audioController.pause())
}, AnimationItem.prototype.togglePause = function(t) {
t && this.name !== t || (!0 === this.isPaused ? this.play() : this.pause())
}, AnimationItem.prototype.stop = function(t) {
t && this.name !== t || (this.pause(), this.playCount = 0, this._completedLoop = !1, this.setCurrentRawFrameValue(0))
}, AnimationItem.prototype.getMarkerData = function(t) {
for (var e, i = 0; i < this.markers.length; i += 1)
if ((e = this.markers[i]).payload && e.payload.name === t) return e;
return null
}, AnimationItem.prototype.goToAndStop = function(t, e, i) {
if (!i || this.name === i) {
if (isNaN(Number(t))) {
var s = this.getMarkerData(t);
s && this.goToAndStop(s.time, !0)
} else e ? this.setCurrentRawFrameValue(t) : this.setCurrentRawFrameValue(t * this.frameModifier);
this.pause()
}
}, AnimationItem.prototype.goToAndPlay = function(t, e, i) {
if (!i || this.name === i) {
var s = Number(t);
if (isNaN(s)) {
var a = this.getMarkerData(t);
a && (a.duration ? this.playSegments([a.time, a.time + a.duration], !0) : this.goToAndStop(a.time, !0))
} else this.goToAndStop(s, e, i);
this.play()
}
}, AnimationItem.prototype.advanceTime = function(t) {
if (!0 !== this.isPaused && !1 !== this.isLoaded) {
var e = this.currentRawFrame + t * this.frameModifier,
i = !1;
e >= this.totalFrames - 1 && this.frameModifier > 0 ? this.loop && this.playCount !== this.loop ? e >= this.totalFrames ? (this.playCount += 1, this.checkSegments(e % this.totalFrames) || (this.setCurrentRawFrameValue(e % this.totalFrames), this._completedLoop = !0, this.trigger("loopComplete"))) : this.setCurrentRawFrameValue(e) : this.checkSegments(e > this.totalFrames ? e % this.totalFrames : 0) || (i = !0, e = this.totalFrames - 1) : e < 0 ? this.checkSegments(e % this.totalFrames) || (this.loop && !(this.playCount-- <= 0 && !0 !== this.loop) ? (this.setCurrentRawFrameValue(this.totalFrames + e % this.totalFrames), this._completedLoop ? this.trigger("loopComplete") : this._completedLoop = !0) : (i = !0, e = 0)) : this.setCurrentRawFrameValue(e), i && (this.setCurrentRawFrameValue(e), this.pause(), this.trigger("complete"))
}
}, AnimationItem.prototype.adjustSegment = function(t, e) {
this.playCount = 0, t[1] < t[0] ? (this.frameModifier > 0 && (this.playSpeed < 0 ? this.setSpeed(-this.playSpeed) : this.setDirection(-1)), this.totalFrames = t[0] - t[1], this.timeCompleted = this.totalFrames, this.firstFrame = t[1], this.setCurrentRawFrameValue(this.totalFrames - .001 - e)) : t[1] > t[0] && (this.frameModifier < 0 && (this.playSpeed < 0 ? this.setSpeed(-this.playSpeed) : this.setDirection(1)), this.totalFrames = t[1] - t[0], this.timeCompleted = this.totalFrames, this.firstFrame = t[0], this.setCurrentRawFrameValue(.001 + e)), this.trigger("segmentStart")
}, AnimationItem.prototype.setSegment = function(t, e) {
var i = -1;
this.isPaused && (this.currentRawFrame + this.firstFrame < t ? i = t : this.currentRawFrame + this.firstFrame > e && (i = e - t)), this.firstFrame = t, this.totalFrames = e - t, this.timeCompleted = this.totalFrames, -1 !== i && this.goToAndStop(i, !0)
}, AnimationItem.prototype.playSegments = function(t, e) {
if (e && (this.segments.length = 0), "object" === _typeof$1(t[0])) {
var i, s = t.length;
for (i = 0; i < s; i += 1) this.segments.push(t[i])
} else this.segments.push(t);
this.segments.length && e && this.adjustSegment(this.segments.shift(), 0), this.isPaused && this.play()
}, AnimationItem.prototype.resetSegments = function(t) {
this.segments.length = 0, this.segments.push([this.animationData.ip, this.animationData.op]), t && this.checkSegments(0)
}, AnimationItem.prototype.checkSegments = function(t) {
return !!this.segments.length && (this.adjustSegment(this.segments.shift(), t), !0)
}, AnimationItem.prototype.destroy = function(t) {
(!t || this.name === t) && this.renderer && (this.renderer.destroy(), this.imagePreloader.destroy(), this.trigger("destroy"), this._cbs = null, this.onEnterFrame = null, this.onLoopComplete = null, this.onComplete = null, this.onSegmentStart = null, this.onDestroy = null, this.renderer = null, this.expressionsPlugin = null, this.imagePreloader = null, this.projectInterface = null)
}, AnimationItem.prototype.setCurrentRawFrameValue = function(t) {
this.currentRawFrame = t, this.gotoFrame()
}, AnimationItem.prototype.setSpeed = function(t) {
this.playSpeed = t, this.updaFrameModifier()
}, AnimationItem.prototype.setDirection = function(t) {
this.playDirection = t < 0 ? -1 : 1, this.updaFrameModifier()
}, AnimationItem.prototype.setLoop = function(t) {
this.loop = t
}, AnimationItem.prototype.setVolume = function(t, e) {
e && this.name !== e || this.audioController.setVolume(t)
}, AnimationItem.prototype.getVolume = function() {
return this.audioController.getVolume()
}, AnimationItem.prototype.mute = function(t) {
t && this.name !== t || this.audioController.mute()
}, AnimationItem.prototype.unmute = function(t) {
t && this.name !== t || this.audioController.unmute()
}, AnimationItem.prototype.updaFrameModifier = function() {
this.frameModifier = this.frameMult * this.playSpeed * this.playDirection, this.audioController.setRate(this.playSpeed * this.playDirection)
}, AnimationItem.prototype.getPath = function() {
return this.path
}, AnimationItem.prototype.getAssetsPath = function(t) {
var e = "";
if (t.e) e = t.p;
else if (this.assetsPath) {
var i = t.p; - 1 !== i.indexOf("images/") && (i = i.split("/")[1]), e = this.assetsPath + i
} else e = this.path + (t.u ? t.u : "") + t.p;
return e
}, AnimationItem.prototype.getAssetData = function(t) {
for (var e = 0, i = this.assets.length; e < i;) {
if (t === this.assets[e].id) return this.assets[e];
e += 1
}
return null
}, AnimationItem.prototype.hide = function() {
this.renderer.hide()
}, AnimationItem.prototype.show = function() {
this.renderer.show()
}, AnimationItem.prototype.getDuration = function(t) {
return t ? this.totalFrames : this.totalFrames / this.frameRate
}, AnimationItem.prototype.updateDocumentData = function(t, e, i) {
try {
this.renderer.getElementByPath(t).updateDocumentData(e, i)
} catch (t) {}
}, AnimationItem.prototype.trigger = function(t) {
if (this._cbs && this._cbs[t]) switch (t) {
case "enterFrame":
this.triggerEvent(t, new BMEnterFrameEvent(t, this.currentFrame, this.totalFrames, this.frameModifier));
break;
case "drawnFrame":
this.drawnFrameEvent.currentTime = this.currentFrame, this.drawnFrameEvent.totalTime = this.totalFrames, this.drawnFrameEvent.direction = this.frameModifier, this.triggerEvent(t, this.drawnFrameEvent);
break;
case "loopComplete":
this.triggerEvent(t, new BMCompleteLoopEvent(t, this.loop, this.playCount, this.frameMult));
break;
case "complete":
this.triggerEvent(t, new BMCompleteEvent(t, this.frameMult));
break;
case "segmentStart":
this.triggerEvent(t, new BMSegmentStartEvent(t, this.firstFrame, this.totalFrames));
break;
case "destroy":
this.triggerEvent(t, new BMDestroyEvent(t, this));
break;
default:
this.triggerEvent(t)
}
"enterFrame" === t && this.onEnterFrame && this.onEnterFrame.call(this, new BMEnterFrameEvent(t, this.currentFrame, this.totalFrames, this.frameMult)), "loopComplete" === t && this.onLoopComplete && this.onLoopComplete.call(this, new BMCompleteLoopEvent(t, this.loop, this.playCount, this.frameMult)), "complete" === t && this.onComplete && this.onComplete.call(this, new BMCompleteEvent(t, this.frameMult)), "segmentStart" === t && this.onSegmentStart && this.onSegmentStart.call(this, new BMSegmentStartEvent(t, this.firstFrame, this.totalFrames)), "destroy" === t && this.onDestroy && this.onDestroy.call(this, new BMDestroyEvent(t, this))
}, AnimationItem.prototype.triggerRenderFrameError = function(t) {
var e = new BMRenderFrameErrorEvent(t, this.currentFrame);
this.triggerEvent("error", e), this.onError && this.onError.call(this, e)
}, AnimationItem.prototype.triggerConfigError = function(t) {
var e = new BMConfigErrorEvent(t, this.currentFrame);
this.triggerEvent("error", e), this.onError && this.onError.call(this, e)
};
var I = function() {
var t = {},
e = [],
i = 0,
s = 0,
a = 0,
r = !0,
n = !1;
function removeElement(t) {
for (var i = 0, a = t.target; i < s;) e[i].animation !== a || (e.splice(i, 1), i -= 1, s -= 1, a.isPaused || subtractPlayingCount()), i += 1
}
function registerAnimation(t, i) {
if (!t) return null;
for (var a = 0; a < s;) {
if (e[a].elem === t && null !== e[a].elem) return e[a].animation;
a += 1
}
var r = new AnimationItem;
return setupAnimation(r, t), r.setData(t, i), r
}
function addPlayingCount() {
a += 1, activate()
}
function subtractPlayingCount() {
a -= 1
}
function setupAnimation(t, i) {
t.addEventListener("destroy", removeElement), t.addEventListener("_active", addPlayingCount), t.addEventListener("_idle", subtractPlayingCount), e.push({
elem: i,
animation: t
}), s += 1
}
function resume(t) {
var o, h = t - i;
for (o = 0; o < s; o += 1) e[o].animation.advanceTime(h);
i = t, a && !n ? window.requestAnimationFrame(resume) : r = !0
}
function first(t) {
i = t, window.requestAnimationFrame(resume)
}
function activate() {
!n && a && r && (window.requestAnimationFrame(first), r = !1)
}
return t.registerAnimation = registerAnimation, t.loadAnimation = function(t) {
var e = new AnimationItem;
return setupAnimation(e, null), e.setParams(t), e
}, t.setSpeed = function(t, i) {
var a;
for (a = 0; a < s; a += 1) e[a].animation.setSpeed(t, i)
}, t.setDirection = function(t, i) {
var a;
for (a = 0; a < s; a += 1) e[a].animation.setDirection(t, i)
}, t.play = function(t) {
var i;
for (i = 0; i < s; i += 1) e[i].animation.play(t)
}, t.pause = function(t) {
var i;
for (i = 0; i < s; i += 1) e[i].animation.pause(t)
}, t.stop = function(t) {
var i;
for (i = 0; i < s; i += 1) e[i].animation.stop(t)
}, t.togglePause = function(t) {
var i;
for (i = 0; i < s; i += 1) e[i].animation.togglePause(t)
}, t.searchAnimations = function(t, e, i) {
var s, a = [].concat([].slice.call(document.getElementsByClassName("lottie")), [].slice.call(document.getElementsByClassName("bodymovin"))),
r = a.length;
for (s = 0; s < r; s += 1) i && a[s].setAttribute("data-bm-type", i), registerAnimation(a[s], t);
if (e && 0 === r) {
i || (i = "svg");
var n = document.getElementsByTagName("body")[0];
n.innerText = "";
var o = createTag("div");
o.style.width = "100%", o.style.height = "100%", o.setAttribute("data-bm-type", i), n.appendChild(o), registerAnimation(o, t)
}
}, t.resize = function() {
var t;
for (t = 0; t < s; t += 1) e[t].animation.resize()
}, t.goToAndStop = function(t, i, a) {
var r;
for (r = 0; r < s; r += 1) e[r].animation.goToAndStop(t, i, a)
}, t.destroy = function(t) {
var i;
for (i = s - 1; i >= 0; i -= 1) e[i].animation.destroy(t)
}, t.freeze = function() {
n = !0
}, t.unfreeze = function() {
n = !1, activate()
}, t.setVolume = function(t, i) {
var a;
for (a = 0; a < s; a += 1) e[a].animation.setVolume(t, i)
}, t.mute = function(t) {
var i;
for (i = 0; i < s; i += 1) e[i].animation.mute(t)
}, t.unmute = function(t) {
var i;
for (i = 0; i < s; i += 1) e[i].animation.unmute(t)
}, t.getRegisteredAnimations = function() {
var t, i = e.length,
s = [];
for (t = 0; t < i; t += 1) s.push(e[t].animation);
return s
}, t
}(),
w = function() {
var t = {};
t.getBezierEasing = function(t, i, s, a, r) {
var n = r || ("bez_" + t + "_" + i + "_" + s + "_" + a).replace(/\./g, "p");
if (e[n]) return e[n];
var o = new BezierEasing([t, i, s, a]);
return e[n] = o, o
};
var e = {},
i = "function" == typeof Float32Array;
function calcBezier(t, e, i) {
return (((1 - 3 * i + 3 * e) * t + (3 * i - 6 * e)) * t + 3 * e) * t
}
function getSlope(t, e, i) {
return 3 * (1 - 3 * i + 3 * e) * t * t + 2 * (3 * i - 6 * e) * t + 3 * e
}
function BezierEasing(t) {
this._p = t, this._mSampleValues = i ? new Float32Array(11) : Array(11), this._precomputed = !1, this.get = this.get.bind(this)
}
return BezierEasing.prototype = {
get: function(t) {
var e = this._p[0],
i = this._p[1],
s = this._p[2],
a = this._p[3];
return (this._precomputed || this._precompute(), e === i && s === a) ? t : 0 === t ? 0 : 1 === t ? 1 : calcBezier(this._getTForX(t), i, a)
},
_precompute: function() {
var t = this._p[0],
e = this._p[1],
i = this._p[2],
s = this._p[3];
this._precomputed = !0, (t !== e || i !== s) && this._calcSampleValues()
},
_calcSampleValues: function() {
for (var t = this._p[0], e = this._p[2], i = 0; i < 11; ++i) this._mSampleValues[i] = calcBezier(.1 * i, t, e)
},
_getTForX: function(t) {
for (var e = this._p[0], i = this._p[2], s = this._mSampleValues, a = 0, r = 1; 10 !== r && s[r] <= t; ++r) a += .1;
var n = a + (t - s[--r]) / (s[r + 1] - s[r]) * .1,
o = getSlope(n, e, i);
return o >= .001 ? function(t, e, i, s) {
for (var a = 0; a < 4; ++a) {
var r = getSlope(e, i, s);
if (0 === r) break;
var n = calcBezier(e, i, s) - t;
e -= n / r
}
return e
}(t, n, e, i) : 0 === o ? n : function(t, e, i, s, a) {
var r, n, o = 0;
do(r = calcBezier(n = e + (i - e) / 2, s, a) - t) > 0 ? i = n : e = n; while (Math.abs(r) > 1e-7 && ++o < 10);
return n
}(t, a, a + .1, e, i)
}
}, t
}(),
L = {
double: function(t) {
return t.concat(createSizedArray(t.length))
}
},
poolFactory = function(t, e, i) {
var s = 0,
a = t,
r = createSizedArray(a);
return {
newElement: function() {
var t;
return s ? (s -= 1, t = r[s]) : t = e(), t
},
release: function(t) {
s === a && (r = L.double(r), a *= 2), i && i(t), r[s] = t, s += 1
}
}
},
V = poolFactory(8, function() {
return {
addedLength: 0,
percents: u("float32", getDefaultCurveSegments()),
lengths: u("float32", getDefaultCurveSegments())
}
}),
R = poolFactory(8, function() {
return {
lengths: [],
totalLength: 0
}
}, function(t) {
var e, i = t.lengths.length;
for (e = 0; e < i; e += 1) V.release(t.lengths[e]);
t.lengths.length = 0
}),
B = function() {
var t, e = Math;
function pointOnLine2D(t, e, i, s, a, r) {
var n = t * s + e * a + i * r - a * s - r * t - i * e;
return n > -.001 && n < .001
}
var getBezierLength = function(t, e, i, s) {
var a, r, n, o, h, l, p = getDefaultCurveSegments(),
f = 0,
m = [],
d = [],
c = V.newElement();
for (a = 0, n = i.length; a < p; a += 1) {
for (r = 0, h = a / (p - 1), l = 0; r < n; r += 1) o = P(1 - h, 3) * t[r] + 3 * P(1 - h, 2) * h * i[r] + 3 * (1 - h) * P(h, 2) * s[r] + P(h, 3) * e[r], m[r] = o, null !== d[r] && (l += P(m[r] - d[r], 2)), d[r] = m[r];
l && (f += l = b(l)), c.percents[a] = h, c.lengths[a] = f
}
return c.addedLength = f, c
};
function BezierData(t) {
this.segmentLength = 0, this.points = Array(t)
}
function PointData(t, e) {
this.partialLength = t, this.point = e
}
var i = (t = {}, function(e, i, s, a) {
var r = (e[0] + "_" + e[1] + "_" + i[0] + "_" + i[1] + "_" + s[0] + "_" + s[1] + "_" + a[0] + "_" + a[1]).replace(/\./g, "p");
if (!t[r]) {
var n, o, h, l, p, f, m, d = getDefaultCurveSegments(),
c = 0,
u = null;
2 === e.length && (e[0] !== i[0] || e[1] !== i[1]) && pointOnLine2D(e[0], e[1], i[0], i[1], e[0] + s[0], e[1] + s[1]) && pointOnLine2D(e[0], e[1], i[0], i[1], i[0] + a[0], i[1] + a[1]) && (d = 2);
var g = new BezierData(d);
for (n = 0, h = s.length; n < d; n += 1) {
for (o = 0, m = createSizedArray(h), p = n / (d - 1), f = 0; o < h; o += 1) l = P(1 - p, 3) * e[o] + 3 * P(1 - p, 2) * p * (e[o] + s[o]) + 3 * (1 - p) * P(p, 2) * (i[o] + a[o]) + P(p, 3) * i[o], m[o] = l, null !== u && (f += P(m[o] - u[o], 2));
c += f = b(f), g.points[n] = new PointData(f, m), u = m
}
g.segmentLength = c, t[r] = g
}
return t[r]
});
function getDistancePerc(t, e) {
var i = e.percents,
s = e.lengths,
a = i.length,
r = _((a - 1) * t),
n = t * e.addedLength,
o = 0;
if (r === a - 1 || 0 === r || n === s[r]) return i[r];
for (var h = s[r] > n ? -1 : 1, l = !0; l;)
if (s[r] <= n && s[r + 1] > n ? (o = (n - s[r]) / (s[r + 1] - s[r]), l = !1) : r += h, r < 0 || r >= a - 1) {
if (r === a - 1) return i[r];
l = !1
} return i[r] + (i[r + 1] - i[r]) * o
}
var s = u("float32", 8);
return {
getSegmentsLength: function(t) {
var e, i = R.newElement(),
s = t.c,
a = t.v,
r = t.o,
n = t.i,
o = t._length,
h = i.lengths,
l = 0;
for (e = 0; e < o - 1; e += 1) h[e] = getBezierLength(a[e], a[e + 1], r[e], n[e + 1]), l += h[e].addedLength;
return s && o && (h[e] = getBezierLength(a[e], a[0], r[e], n[0]), l += h[e].addedLength), i.totalLength = l, i
},
getNewSegment: function(t, i, a, r, n, o, h) {
n < 0 ? n = 0 : n > 1 && (n = 1);
var l, p = getDistancePerc(n, h),
f = getDistancePerc(o = o > 1 ? 1 : o, h),
m = t.length,
d = 1 - p,
c = 1 - f,
u = d * d * d,
g = p * d * d * 3,
y = p * p * d * 3,
v = p * p * p,
S = d * d * c,
P = p * d * c + d * p * c + d * d * f,
b = p * p * c + d * p * f + p * d * f,
_ = p * p * f,
A = d * c * c,
E = p * c * c + d * f * c + d * c * f,
k = p * f * c + d * f * f + p * c * f,
x = p * f * f,
D = c * c * c,
M = f * c * c + c * f * c + c * c * f,
C = f * f * c + c * f * f + f * c * f,
T = f * f * f;
for (l = 0; l < m; l += 1) s[4 * l] = e.round((u * t[l] + g * a[l] + y * r[l] + v * i[l]) * 1e3) / 1e3, s[4 * l + 1] = e.round((S * t[l] + P * a[l] + b * r[l] + _ * i[l]) * 1e3) / 1e3, s[4 * l + 2] = e.round((A * t[l] + E * a[l] + k * r[l] + x * i[l]) * 1e3) / 1e3, s[4 * l + 3] = e.round((D * t[l] + M * a[l] + C * r[l] + T * i[l]) * 1e3) / 1e3;
return s
},
getPointInSegment: function(t, i, s, a, r, n) {
var o = getDistancePerc(r, n),
h = 1 - o;
return [e.round((h * h * h * t[0] + (o * h * h + h * o * h + h * h * o) * s[0] + (o * o * h + h * o * o + o * h * o) * a[0] + o * o * o * i[0]) * 1e3) / 1e3, e.round((h * h * h * t[1] + (o * h * h + h * o * h + h * h * o) * s[1] + (o * o * h + h * o * o + o * h * o) * a[1] + o * o * o * i[1]) * 1e3) / 1e3]
},
buildBezierData: i,
pointOnLine2D: pointOnLine2D,
pointOnLine3D: function(t, i, s, a, r, n, o, h, l) {
if (0 === s && 0 === n && 0 === l) return pointOnLine2D(t, i, a, r, o, h);
var p, f = e.sqrt(e.pow(a - t, 2) + e.pow(r - i, 2) + e.pow(n - s, 2)),
m = e.sqrt(e.pow(o - t, 2) + e.pow(h - i, 2) + e.pow(l - s, 2)),
d = e.sqrt(e.pow(o - a, 2) + e.pow(h - r, 2) + e.pow(l - n, 2));
return (p = f > m ? f > d ? f - m - d : d - m - f : d > m ? d - m - f : m - f - d) > -.0001 && p < 1e-4
}
}
}(),
z = Math.abs;
function interpolateValue(t, e) {
var i, s, a, r, n, o, h, l, p, f, m, d, c, g, y, v, S, P, b, _, A, E, k, D, M, C, T, F, I = this.offsetTime;
"multidimensional" === this.propType && (j = u("float32", this.pv.length));
for (var L = e.lastIndex, V = L, R = this.keyframes.length - 1, z = !0; z;) {
if (H = this.keyframes[V], W = this.keyframes[V + 1], V === R - 1 && t >= W.t - I) {
H.h && (H = W), L = 0;
break
}
if (W.t - I > t) {
L = V;
break
}
V < R - 1 ? V += 1 : (L = 0, z = !1)
}
Z = this.keyframesMetadata[V] || {};
var N = W.t - I,
G = H.t - I;
if (H.to) {
Z.bezierData || (Z.bezierData = B.buildBezierData(H.s, W.s || H.e, H.to, H.ti));
var O = Z.bezierData;
if (t >= N || t < G) {
var q = t >= N ? O.points.length - 1 : 0;
for (X = 0, Y = O.points[q].point.length; X < Y; X += 1) j[X] = O.points[q].point[X]
} else {
Z.__fnct ? $ = Z.__fnct : ($ = w.getBezierEasing(H.o.x, H.o.y, H.i.x, H.i.y, H.n).get, Z.__fnct = $), K = $((t - G) / (N - G));
var j, H, W, Z, X, Y, K, J, U, $, Q, tt, te = O.segmentLength * K,
ti = e.lastFrame < t && e._lastKeyframeIndex === V ? e._lastAddedLength : 0;
for (U = e.lastFrame < t && e._lastKeyframeIndex === V ? e._lastPoint : 0, z = !0, J = O.points.length; z;) {
if (ti += O.points[U].partialLength, 0 === te || 0 === K || U === O.points.length - 1) {
for (X = 0, Y = O.points[U].point.length; X < Y; X += 1) j[X] = O.points[U].point[X];
break
}
if (te >= ti && te < ti + O.points[U + 1].partialLength) {
for (X = 0, tt = (te - ti) / O.points[U + 1].partialLength, Y = O.points[U].point.length; X < Y; X += 1) j[X] = O.points[U].point[X] + (O.points[U + 1].point[X] - O.points[U].point[X]) * tt;
break
}
U < J - 1 ? U += 1 : z = !1
}
e._lastPoint = U, e._lastAddedLength = ti - O.points[U].partialLength, e._lastKeyframeIndex = V
}
} else if (R = H.s.length, Q = W.s || H.e, this.sh && 1 !== H.h) t >= N ? (j[0] = Q[0], j[1] = Q[1], j[2] = Q[2]) : t <= G ? (j[0] = H.s[0], j[1] = H.s[1], j[2] = H.s[2]) : (P = j, _ = (i = createQuaternion(H.s), s = createQuaternion(Q), a = (t - G) / (N - G), p = [], f = i[0], m = i[1], d = i[2], c = i[3], g = s[0], y = s[1], (n = f * g + m * y + d * (v = s[2]) + c * (S = s[3])) < 0 && (n = -n, g = -g, y = -y, v = -v, S = -S), 1 - n > 1e-6 ? (o = Math.sin(r = Math.acos(n)), h = Math.sin((1 - a) * r) / o, l = Math.sin(a * r) / o) : (h = 1 - a, l = a), p[0] = h * f + l * g, p[1] = h * m + l * y, p[2] = h * d + l * v, p[3] = h * c + l * S, b = p)[0], A = b[1], E = b[2], k = b[3], P[0] = Math.atan2(2 * A * k - 2 * _ * E, 1 - 2 * A * A - 2 * E * E) / x, P[1] = Math.asin(2 * _ * A + 2 * E * k) / x, P[2] = Math.atan2(2 * _ * k - 2 * A * E, 1 - 2 * _ * _ - 2 * E * E) / x);
else
for (V = 0; V < R; V += 1) 1 !== H.h && (t >= N ? K = 1 : t < G ? K = 0 : (H.o.x.constructor === Array ? (Z.__fnct || (Z.__fnct = []), Z.__fnct[V] ? $ = Z.__fnct[V] : (D = void 0 === H.o.x[V] ? H.o.x[0] : H.o.x[V], M = void 0 === H.o.y[V] ? H.o.y[0] : H.o.y[V], C = void 0 === H.i.x[V] ? H.i.x[0] : H.i.x[V], T = void 0 === H.i.y[V] ? H.i.y[0] : H.i.y[V], $ = w.getBezierEasing(D, M, C, T).get, Z.__fnct[V] = $)) : Z.__fnct ? $ = Z.__fnct : (D = H.o.x, M = H.o.y, C = H.i.x, T = H.i.y, $ = w.getBezierEasing(D, M, C, T).get, H.keyframeMetadata = $), K = $((t - G) / (N - G)))), Q = W.s || H.e, F = 1 === H.h ? H.s[V] : H.s[V] + (Q[V] - H.s[V]) * K, "multidimensional" === this.propType ? j[V] = F : j = F;
return e.lastIndex = L, j
}
function createQuaternion(t) {
var e = t[0] * x,
i = t[1] * x,
s = t[2] * x,
a = Math.cos(e / 2),
r = Math.cos(i / 2),
n = Math.cos(s / 2),
o = Math.sin(e / 2),
h = Math.sin(i / 2),
l = Math.sin(s / 2);
return [o * h * n + a * r * l, o * r * n + a * h * l, a * h * n - o * r * l, a * r * n - o * h * l]
}
function getValueAtCurrentTime() {
var t = this.comp.renderedFrame - this.offsetTime,
e = this.keyframes[0].t - this.offsetTime,
i = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;
if (!(t === this._caching.lastFrame || -999999 !== this._caching.lastFrame && (this._caching.lastFrame >= i && t >= i || this._caching.lastFrame < e && t < e))) {
this._caching.lastFrame >= t && (this._caching._lastKeyframeIndex = -1, this._caching.lastIndex = 0);
var s = this.interpolateValue(t, this._caching);
this.pv = s
}
return this._caching.lastFrame = t, this.pv
}
function setVValue(t) {
var e;
if ("unidimensional" === this.propType) e = t * this.mult, z(this.v - e) > 1e-5 && (this.v = e, this._mdf = !0);
else
for (var i = 0, s = this.v.length; i < s;) e = t[i] * this.mult, z(this.v[i] - e) > 1e-5 && (this.v[i] = e, this._mdf = !0), i += 1
}
function processEffectsSequence() {
if (this.elem.globalData.frameId !== this.frameId && this.effectsSequence.length) {
if (this.lock) {
this.setVValue(this.pv);
return
}
this.lock = !0, this._mdf = this._isFirstFrame;
var t, e = this.effectsSequence.length,
i = this.kf ? this.pv : this.data.k;
for (t = 0; t < e; t += 1) i = this.effectsSequence[t](i);
this.setVValue(i), this._isFirstFrame = !1, this.lock = !1, this.frameId = this.elem.globalData.frameId
}
}
function addEffect(t) {
this.effectsSequence.push(t), this.container.addDynamicProperty(this)
}
function ValueProperty(t, e, i, s) {
this.propType = "unidimensional", this.mult = i || 1, this.data = e, this.v = i ? e.k * i : e.k, this.pv = e.k, this._mdf = !1, this.elem = t, this.container = s, this.comp = t.comp, this.k = !1, this.kf = !1, this.vel = 0, this.effectsSequence = [], this._isFirstFrame = !0, this.getValue = processEffectsSequence, this.setVValue = setVValue, this.addEffect = addEffect
}
function MultiDimensionalProperty(t, e, i, s) {
this.propType = "multidimensional", this.mult = i || 1, this.data = e, this._mdf = !1, this.elem = t, this.container = s, this.comp = t.comp, this.k = !1, this.kf = !1, this.frameId = -1;
var a, r = e.k.length;
for (a = 0, this.v = u("float32", r), this.pv = u("float32", r), this.vel = u("float32", r); a < r; a += 1) this.v[a] = e.k[a] * this.mult, this.pv[a] = e.k[a];
this._isFirstFrame = !0, this.effectsSequence = [], this.getValue = processEffectsSequence, this.setVValue = setVValue, this.addEffect = addEffect
}
function KeyframedValueProperty(t, e, i, s) {
this.propType = "unidimensional", this.keyframes = e.k, this.keyframesMetadata = [], this.offsetTime = t.data.st, this.frameId = -1, this._caching = {
lastFrame: -999999,
lastIndex: 0,
value: 0,
_lastKeyframeIndex: -1
}, this.k = !0, this.kf = !0, this.data = e, this.mult = i || 1, this.elem = t, this.container = s, this.comp = t.comp, this.v = -999999, this.pv = -999999, this._isFirstFrame = !0, this.getValue = processEffectsSequence, this.setVValue = setVValue, this.interpolateValue = interpolateValue, this.effectsSequence = [getValueAtCurrentTime.bind(this)], this.addEffect = addEffect
}
function KeyframedMultidimensionalProperty(t, e, i, s) {
this.propType = "multidimensional";
var a, r, n, o, h, l = e.k.length;
for (a = 0; a < l - 1; a += 1) e.k[a].to && e.k[a].s && e.k[a + 1] && e.k[a + 1].s && (r = e.k[a].s, n = e.k[a + 1].s, o = e.k[a].to, h = e.k[a].ti, (2 === r.length && !(r[0] === n[0] && r[1] === n[1]) && B.pointOnLine2D(r[0], r[1], n[0], n[1], r[0] + o[0], r[1] + o[1]) && B.pointOnLine2D(r[0], r[1], n[0], n[1], n[0] + h[0], n[1] + h[1]) || 3 === r.length && !(r[0] === n[0] && r[1] === n[1] && r[2] === n[2]) && B.pointOnLine3D(r[0], r[1], r[2], n[0], n[1], n[2], r[0] + o[0], r[1] + o[1], r[2] + o[2]) && B.pointOnLine3D(r[0], r[1], r[2], n[0], n[1], n[2], n[0] + h[0], n[1] + h[1], n[2] + h[2])) && (e.k[a].to = null, e.k[a].ti = null), r[0] === n[0] && r[1] === n[1] && 0 === o[0] && 0 === o[1] && 0 === h[0] && 0 === h[1] && (2 === r.length || r[2] === n[2] && 0 === o[2] && 0 === h[2]) && (e.k[a].to = null, e.k[a].ti = null));
this.effectsSequence = [getValueAtCurrentTime.bind(this)], this.data = e, this.keyframes = e.k, this.keyframesMetadata = [], this.offsetTime = t.data.st, this.k = !0, this.kf = !0, this._isFirstFrame = !0, this.mult = i || 1, this.elem = t, this.container = s, this.comp = t.comp, this.getValue = processEffectsSequence, this.setVValue = setVValue, this.interpolateValue = interpolateValue, this.frameId = -1;
var p = e.k[0].s.length;
for (a = 0, this.v = u("float32", p), this.pv = u("float32", p); a < p; a += 1) this.v[a] = -999999, this.pv[a] = -999999;
this._caching = {
lastFrame: -999999,
lastIndex: 0,
value: u("float32", p)
}, this.addEffect = addEffect
}
var N = {
getProp: function(t, e, i, s, a) {
var r;
if (e.sid && (e = t.globalData.slotManager.getProp(e)), e.k.length) {
if ("number" == typeof e.k[0]) r = new MultiDimensionalProperty(t, e, s, a);
else switch (i) {
case 0:
r = new KeyframedValueProperty(t, e, s, a);
break;
case 1:
r = new KeyframedMultidimensionalProperty(t, e, s, a)
}
} else r = new ValueProperty(t, e, s, a);
return r.effectsSequence.length && a.addDynamicProperty(r), r
}
};
function DynamicPropertyContainer() {}
DynamicPropertyContainer.prototype = {
addDynamicProperty: function(t) {
-1 === this.dynamicProperties.indexOf(t) && (this.dynamicProperties.push(t), this.container.addDynamicProperty(this), this._isAnimated = !0)
},
iterateDynamicProperties: function() {
this._mdf = !1;
var t, e = this.dynamicProperties.length;
for (t = 0; t < e; t += 1) this.dynamicProperties[t].getValue(), this.dynamicProperties[t]._mdf && (this._mdf = !0)
},
initDynamicPropertyContainer: function(t) {
this.container = t, this.dynamicProperties = [], this._mdf = !1, this._isAnimated = !1
}
};
var G = poolFactory(8, function() {
return u("float32", 2)
});
function ShapePath() {
this.c = !1, this._length = 0, this._maxLength = 8, this.v = createSizedArray(this._maxLength), this.o = createSizedArray(this._maxLength), this.i = createSizedArray(this._maxLength)
}
ShapePath.prototype.setPathData = function(t, e) {
this.c = t, this.setLength(e);
for (var i = 0; i < e;) this.v[i] = G.newElement(), this.o[i] = G.newElement(), this.i[i] = G.newElement(), i += 1
}, ShapePath.prototype.setLength = function(t) {
for (; this._maxLength < t;) this.doubleArrayLength();
this._length = t
}, ShapePath.prototype.doubleArrayLength = function() {
this.v = this.v.concat(createSizedArray(this._maxLength)), this.i = this.i.concat(createSizedArray(this._maxLength)), this.o = this.o.concat(createSizedArray(this._maxLength)), this._maxLength *= 2
}, ShapePath.prototype.setXYAt = function(t, e, i, s, a) {
var r;
switch (this._length = Math.max(this._length, s + 1), this._length >= this._maxLength && this.doubleArrayLength(), i) {
case "v":
r = this.v;
break;
case "i":
r = this.i;
break;
case "o":
r = this.o;
break;
default:
r = []
}
r[s] && (!r[s] || a) || (r[s] = G.newElement()), r[s][0] = t, r[s][1] = e
}, ShapePath.prototype.setTripleAt = function(t, e, i, s, a, r, n, o) {
this.setXYAt(t, e, "v", n, o), this.setXYAt(i, s, "o", n, o), this.setXYAt(a, r, "i", n, o)
}, ShapePath.prototype.reverse = function() {
var t, e = new ShapePath;
e.setPathData(this.c, this._length);
var i = this.v,
s = this.o,
a = this.i,
r = 0;
this.c && (e.setTripleAt(i[0][0], i[0][1], a[0][0], a[0][1], s[0][0], s[0][1], 0, !1), r = 1);
var n = this._length - 1,
o = this._length;
for (t = r; t < o; t += 1) e.setTripleAt(i[n][0], i[n][1], a[n][0], a[n][1], s[n][0], s[n][1], t, !1), n -= 1;
return e
}, ShapePath.prototype.length = function() {
return this._length
};
var O = ((s = poolFactory(4, function() {
return new ShapePath
}, function(t) {
var e, i = t._length;
for (e = 0; e < i; e += 1) G.release(t.v[e]), G.release(t.i[e]), G.release(t.o[e]), t.v[e] = null, t.i[e] = null, t.o[e] = null;
t._length = 0, t.c = !1
})).clone = function(t) {
var e, i = s.newElement(),
a = void 0 === t._length ? t.v.length : t._length;
for (i.setLength(a), i.c = t.c, e = 0; e < a; e += 1) i.setTripleAt(t.v[e][0], t.v[e][1], t.o[e][0], t.o[e][1], t.i[e][0], t.i[e][1], e);
return i
}, s);
function ShapeCollection() {
this._length = 0, this._maxLength = 4, this.shapes = createSizedArray(this._maxLength)
}
ShapeCollection.prototype.addShape = function(t) {
this._length === this._maxLength && (this.shapes = this.shapes.concat(createSizedArray(this._maxLength)), this._maxLength *= 2), this.shapes[this._length] = t, this._length += 1
}, ShapeCollection.prototype.releaseShapes = function() {
var t;
for (t = 0; t < this._length; t += 1) O.release(this.shapes[t]);
this._length = 0
};
var q = (a = 0, r = 4, n = createSizedArray(4), {
newShapeCollection: function() {
var t;
return a ? (a -= 1, t = n[a]) : t = new ShapeCollection, t
},
release: function(t) {
var e, i = t._length;
for (e = 0; e < i; e += 1) O.release(t.shapes[e]);
t._length = 0, a === r && (n = L.double(n), r *= 2), n[a] = t, a += 1
}
}),
j = function() {
function interpolateShape(t, e, i) {
var s = i.lastIndex,
a = this.keyframes;
if (t < a[0].t - this.offsetTime) r = a[0].s[0], o = !0, s = 0;
else if (t >= a[a.length - 1].t - this.offsetTime) r = a[a.length - 1].s ? a[a.length - 1].s[0] : a[a.length - 2].e[0], o = !0;
else {
for (var r, n, o, h, l, p, f, m, d, c, u, g, y, v = s, S = a.length - 1, P = !0; P && (c = a[v], !((u = a[v + 1]).t - this.offsetTime > t));) v < S - 1 ? v += 1 : P = !1;
g = this.keyframesMetadata[v] || {}, o = 1 === c.h, s = v, o || (t >= u.t - this.offsetTime ? m = 1 : t < c.t - this.offsetTime ? m = 0 : (g.__fnct ? y = g.__fnct : (y = w.getBezierEasing(c.o.x, c.o.y, c.i.x, c.i.y).get, g.__fnct = y), m = y((t - (c.t - this.offsetTime)) / (u.t - this.offsetTime - (c.t - this.offsetTime)))), n = u.s ? u.s[0] : c.e[0]), r = c.s[0]
}
for (h = 0, p = e._length, f = r.i[0].length, i.lastIndex = s; h < p; h += 1)
for (l = 0; l < f; l += 1) d = o ? r.i[h][l] : r.i[h][l] + (n.i[h][l] - r.i[h][l]) * m, e.i[h][l] = d, d = o ? r.o[h][l] : r.o[h][l] + (n.o[h][l] - r.o[h][l]) * m, e.o[h][l] = d, d = o ? r.v[h][l] : r.v[h][l] + (n.v[h][l] - r.v[h][l]) * m, e.v[h][l] = d
}
function interpolateShapeCurrentTime() {
var t = this.comp.renderedFrame - this.offsetTime,
e = this.keyframes[0].t - this.offsetTime,
i = this.keyframes[this.keyframes.length - 1].t - this.offsetTime,
s = this._caching.lastFrame;
return -999999 !== s && (s < e && t < e || s > i && t > i) || (this._caching.lastIndex = s < t ? this._caching.lastIndex : 0, this.interpolateShape(t, this.pv, this._caching)), this._caching.lastFrame = t, this.pv
}
function resetShape() {
this.paths = this.localShapeCollection
}
function setVValue(t) {
! function(t, e) {
if (t._length !== e._length || t.c !== e.c) return !1;
var i, s = t._length;
for (i = 0; i < s; i += 1)
if (t.v[i][0] !== e.v[i][0] || t.v[i][1] !== e.v[i][1] || t.o[i][0] !== e.o[i][0] || t.o[i][1] !== e.o[i][1] || t.i[i][0] !== e.i[i][0] || t.i[i][1] !== e.i[i][1]) return !1;
return !0
}(this.v, t) && (this.v = O.clone(t), this.localShapeCollection.releaseShapes(), this.localShapeCollection.addShape(this.v), this._mdf = !0, this.paths = this.localShapeCollection)
}
function processEffectsSequence() {
if (this.elem.globalData.frameId !== this.frameId) {
if (!this.effectsSequence.length) {
this._mdf = !1;
return
}
if (this.lock) {
this.setVValue(this.pv);
return
}
this.lock = !0, this._mdf = !1, t = this.kf ? this.pv : this.data.ks ? this.data.ks.k : this.data.pt.k;
var t, e, i = this.effectsSequence.length;
for (e = 0; e < i; e += 1) t = this.effectsSequence[e](t);
this.setVValue(t), this.lock = !1, this.frameId = this.elem.globalData.frameId
}
}
function ShapeProperty(t, e, i) {
this.propType = "shape", this.comp = t.comp, this.container = t, this.elem = t, this.data = e, this.k = !1, this.kf = !1, this._mdf = !1;
var s = 3 === i ? e.pt.k : e.ks.k;
this.v = O.clone(s), this.pv = O.clone(this.v), this.localShapeCollection = q.newShapeCollection(), this.paths = this.localShapeCollection, this.paths.addShape(this.v), this.reset = resetShape, this.effectsSequence = []
}
function addEffect(t) {
this.effectsSequence.push(t), this.container.addDynamicProperty(this)
}
function KeyframedShapeProperty(t, e, i) {
this.propType = "shape", this.comp = t.comp, this.elem = t, this.container = t, this.offsetTime = t.data.st, this.keyframes = 3 === i ? e.pt.k : e.ks.k, this.keyframesMetadata = [], this.k = !0, this.kf = !0;
var s = this.keyframes[0].s[0].i.length;
this.v = O.newElement(), this.v.setPathData(this.keyframes[0].s[0].c, s), this.pv = O.clone(this.v), this.localShapeCollection = q.newShapeCollection(), this.paths = this.localShapeCollection, this.paths.addShape(this.v), this.lastFrame = -999999, this.reset = resetShape, this._caching = {
lastFrame: -999999,
lastIndex: 0
}, this.effectsSequence = [interpolateShapeCurrentTime.bind(this)]
}
ShapeProperty.prototype.interpolateShape = interpolateShape, ShapeProperty.prototype.getValue = processEffectsSequence, ShapeProperty.prototype.setVValue = setVValue, ShapeProperty.prototype.addEffect = addEffect, KeyframedShapeProperty.prototype.getValue = processEffectsSequence, KeyframedShapeProperty.prototype.interpolateShape = interpolateShape, KeyframedShapeProperty.prototype.setVValue = setVValue, KeyframedShapeProperty.prototype.addEffect = addEffect;
var t = function() {
function EllShapePropertyFactory(t, e) {
this.v = O.newElement(), this.v.setPathData(!0, 4), this.localShapeCollection = q.newShapeCollection(), this.paths = this.localShapeCollection, this.localShapeCollection.addShape(this.v), this.d = e.d, this.elem = t, this.comp = t.comp, this.frameId = -1, this.initDynamicPropertyContainer(t), this.p = N.getProp(t, e.p, 1, 0, this), this.s = N.getProp(t, e.s, 1, 0, this), this.dynamicProperties.length ? this.k = !0 : (this.k = !1, this.convertEllToPath())
}
return EllShapePropertyFactory.prototype = {
reset: resetShape,
getValue: function() {
this.elem.globalData.frameId !== this.frameId && (this.frameId = this.elem.globalData.frameId, this.iterateDynamicProperties(), this._mdf && this.convertEllToPath())
},
convertEllToPath: function() {
var t = this.p.v[0],
e = this.p.v[1],
i = this.s.v[0] / 2,
s = this.s.v[1] / 2,
a = 3 !== this.d,
r = this.v;
r.v[0][0] = t, r.v[0][1] = e - s, r.v[1][0] = a ? t + i : t - i, r.v[1][1] = e, r.v[2][0] = t, r.v[2][1] = e + s, r.v[3][0] = a ? t - i : t + i, r.v[3][1] = e, r.i[0][0] = a ? t - .5519 * i : t + .5519 * i, r.i[0][1] = e - s, r.i[1][0] = a ? t + i : t - i, r.i[1][1] = e - .5519 * s, r.i[2][0] = a ? t + .5519 * i : t - .5519 * i, r.i[2][1] = e + s, r.i[3][0] = a ? t - i : t + i, r.i[3][1] = e + .5519 * s, r.o[0][0] = a ? t + .5519 * i : t - .5519 * i, r.o[0][1] = e - s, r.o[1][0] = a ? t + i : t - i, r.o[1][1] = e + .5519 * s, r.o[2][0] = a ? t - .5519 * i : t + .5519 * i, r.o[2][1] = e + s, r.o[3][0] = a ? t - i : t + i, r.o[3][1] = e - .5519 * s
}
}, extendPrototype([DynamicPropertyContainer], EllShapePropertyFactory), EllShapePropertyFactory
}(),
e = function() {
function StarShapePropertyFactory(t, e) {
this.v = O.newElement(), this.v.setPathData(!0, 0), this.elem = t, this.comp = t.comp, this.data = e, this.frameId = -1, this.d = e.d, this.initDynamicPropertyContainer(t), 1 === e.sy ? (this.ir = N.getProp(t, e.ir, 0, 0, this), this.is = N.getProp(t, e.is, 0, .01, this), this.convertToPath = this.convertStarToPath) : this.convertToPath = this.convertPolygonToPath, this.pt = N.getProp(t, e.pt, 0, 0, this), this.p = N.getProp(t, e.p, 1, 0, this), this.r = N.getProp(t, e.r, 0, x, this), this.or = N.getProp(t, e.or, 0, 0, this), this.os = N.getProp(t, e.os, 0, .01, this), this.localShapeCollection = q.newShapeCollection(), this.localShapeCollection.addShape(this.v), this.paths = this.localShapeCollection, this.dynamicProperties.length ? this.k = !0 : (this.k = !1, this.convertToPath())
}
return StarShapePropertyFactory.prototype = {
reset: resetShape,
getValue: function() {
this.elem.globalData.frameId !== this.frameId && (this.frameId = this.elem.globalData.frameId, this.iterateDynamicProperties(), this._mdf && this.convertToPath())
},
convertStarToPath: function() {
var t, e, i, s, a = 2 * Math.floor(this.pt.v),
r = 2 * Math.PI / a,
n = !0,
o = this.or.v,
h = this.ir.v,
l = this.os.v,
p = this.is.v,
f = 2 * Math.PI * o / (2 * a),
m = 2 * Math.PI * h / (2 * a),
d = -Math.PI / 2;
d += this.r.v;
var c = 3 === this.data.d ? -1 : 1;
for (t = 0, this.v._length = 0; t < a; t += 1) {
e = n ? o : h, i = n ? l : p, s = n ? f : m;
var u = e * Math.cos(d),
g = e * Math.sin(d),
y = 0 === u && 0 === g ? 0 : g / Math.sqrt(u * u + g * g),
v = 0 === u && 0 === g ? 0 : -u / Math.sqrt(u * u + g * g);
u += +this.p.v[0], g += +this.p.v[1], this.v.setTripleAt(u, g, u - y * s * i * c, g - v * s * i * c, u + y * s * i * c, g + v * s * i * c, t, !0), n = !n, d += r * c
}
},
convertPolygonToPath: function() {
var t, e = Math.floor(this.pt.v),
i = 2 * Math.PI / e,
s = this.or.v,
a = this.os.v,
r = 2 * Math.PI * s / (4 * e),
n = -(.5 * Math.PI),
o = 3 === this.data.d ? -1 : 1;
for (n += this.r.v, this.v._length = 0, t = 0; t < e; t += 1) {
var h = s * Math.cos(n),
l = s * Math.sin(n),
p = 0 === h && 0 === l ? 0 : l / Math.sqrt(h * h + l * l),
f = 0 === h && 0 === l ? 0 : -h / Math.sqrt(h * h + l * l);
h += +this.p.v[0], l += +this.p.v[1], this.v.setTripleAt(h, l, h - p * r * a * o, l - f * r * a * o, h + p * r * a * o, l + f * r * a * o, t, !0), n += i * o
}
this.paths.length = 0, this.paths[0] = this.v
}
}, extendPrototype([DynamicPropertyContainer], StarShapePropertyFactory), StarShapePropertyFactory
}(),
i = function() {
function RectShapePropertyFactory(t, e) {
this.v = O.newElement(), this.v.c = !0, this.localShapeCollection = q.newShapeCollection(), this.localShapeCollection.addShape(this.v), this.paths = this.localShapeCollection, this.elem = t, this.comp = t.comp, this.frameId = -1, this.d = e.d, this.initDynamicPropertyContainer(t), this.p = N.getProp(t, e.p, 1, 0, this), this.s = N.getProp(t, e.s, 1, 0, this), this.r = N.getProp(t, e.r, 0, 0, this), this.dynamicProperties.length ? this.k = !0 : (this.k = !1, this.convertRectToPath())
}
return RectShapePropertyFactory.prototype = {
convertRectToPath: function() {
var t = this.p.v[0],
e = this.p.v[1],
i = this.s.v[0] / 2,
s = this.s.v[1] / 2,
a = A(i, s, this.r.v),
r = .44810000000000005 * a;
this.v._length = 0, 2 === this.d || 1 === this.d ? (this.v.setTripleAt(t + i, e - s + a, t + i, e - s + a, t + i, e - s + r, 0, !0), this.v.setTripleAt(t + i, e + s - a, t + i, e + s - r, t + i, e + s - a, 1, !0), 0 !== a ? (this.v.setTripleAt(t + i - a, e + s, t + i - a, e + s, t + i - r, e + s, 2, !0), this.v.setTripleAt(t - i + a, e + s, t - i + r, e + s, t - i + a, e + s, 3, !0), this.v.setTripleAt(t - i, e + s - a, t - i, e + s - a, t - i, e + s - r, 4, !0), this.v.setTripleAt(t - i, e - s + a, t - i, e - s + r, t - i, e - s + a, 5, !0), this.v.setTripleAt(t - i + a, e - s, t - i + a, e - s, t - i + r, e - s, 6, !0), this.v.setTripleAt(t + i - a, e - s, t + i - r, e - s, t + i - a, e - s, 7, !0)) : (this.v.setTripleAt(t - i, e + s, t - i + r, e + s, t - i, e + s, 2), this.v.setTripleAt(t - i, e - s, t - i, e - s + r, t - i, e - s, 3))) : (this.v.setTripleAt(t + i, e - s + a, t + i, e - s + r, t + i, e - s + a, 0, !0), 0 !== a ? (this.v.setTripleAt(t + i - a, e - s, t + i - a, e - s, t + i - r, e - s, 1, !0), this.v.setTripleAt(t - i + a, e - s, t - i + r, e - s, t - i + a, e - s, 2, !0), this.v.setTripleAt(t - i, e - s + a, t - i, e - s + a, t - i, e - s + r, 3, !0), this.v.setTripleAt(t - i, e + s - a, t - i, e + s - r, t - i, e + s - a, 4, !0), this.v.setTripleAt(t - i + a, e + s, t - i + a, e + s, t - i + r, e + s, 5, !0), this.v.setTripleAt(t + i - a, e + s, t + i - r, e + s, t + i - a, e + s, 6, !0), this.v.setTripleAt(t + i, e + s - a, t + i, e + s - a, t + i, e + s - r, 7, !0)) : (this.v.setTripleAt(t - i, e - s, t - i + r, e - s, t - i, e - s, 1, !0), this.v.setTripleAt(t - i, e + s, t - i, e + s - r, t - i, e + s, 2, !0), this.v.setTripleAt(t + i, e + s, t + i - r, e + s, t + i, e + s, 3, !0)))
},
getValue: function() {
this.elem.globalData.frameId !== this.frameId && (this.frameId = this.elem.globalData.frameId, this.iterateDynamicProperties(), this._mdf && this.convertRectToPath())
},
reset: resetShape
}, extendPrototype([DynamicPropertyContainer], RectShapePropertyFactory), RectShapePropertyFactory
}(),
s = {};
return s.getShapeProp = function(s, a, r) {
var n;
return 3 === r || 4 === r ? n = (3 === r ? a.pt : a.ks).k.length ? new KeyframedShapeProperty(s, a, r) : new ShapeProperty(s, a, r) : 5 === r ? n = new i(s, a) : 6 === r ? n = new t(s, a) : 7 === r && (n = new e(s, a)), n.k && s.addDynamicProperty(n), n
}, s.getConstructorFunction = function() {
return ShapeProperty
}, s.getKeyframedConstructorFunction = function() {
return KeyframedShapeProperty
}, s
}(),
H = function() {
var t = Math.cos,
e = Math.sin,
i = Math.tan,
s = Math.round;
function reset() {
return this.props[0] = 1, this.props[1] = 0, this.props[2] = 0, this.props[3] = 0, this.props[4] = 0, this.props[5] = 1, this.props[6] = 0, this.props[7] = 0, this.props[8] = 0, this.props[9] = 0, this.props[10] = 1, this.props[11] = 0, this.props[12] = 0, this.props[13] = 0, this.props[14] = 0, this.props[15] = 1, this
}
function rotate(i) {
if (0 === i) return this;
var s = t(i),
a = e(i);
return this._t(s, -a, 0, 0, a, s, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)
}
function rotateX(i) {
if (0 === i) return this;
var s = t(i),
a = e(i);
return this._t(1, 0, 0, 0, 0, s, -a, 0, 0, a, s, 0, 0, 0, 0, 1)
}
function rotateY(i) {
if (0 === i) return this;
var s = t(i),
a = e(i);
return this._t(s, 0, a, 0, 0, 1, 0, 0, -a, 0, s, 0, 0, 0, 0, 1)
}
function rotateZ(i) {
if (0 === i) return this;
var s = t(i),
a = e(i);
return this._t(s, -a, 0, 0, a, s, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)
}
function shear(t, e) {
return this._t(1, e, t, 1, 0, 0)
}
function skew(t, e) {
return this.shear(i(t), i(e))
}
function skewFromAxis(s, a) {
var r = t(a),
n = e(a);
return this._t(r, n, 0, 0, -n, r, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)._t(1, 0, 0, 0, i(s), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)._t(r, -n, 0, 0, n, r, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)
}
function scale(t, e, i) {
return (i || 0 === i || (i = 1), 1 === t && 1 === e && 1 === i) ? this : this._t(t, 0, 0, 0, 0, e, 0, 0, 0, 0, i, 0, 0, 0, 0, 1)
}
function setTransform(t, e, i, s, a, r, n, o, h, l, p, f, m, d, c, u) {
return this.props[0] = t, this.props[1] = e, this.props[2] = i, this.props[3] = s, this.props[4] = a, this.props[5] = r, this.props[6] = n, this.props[7] = o, this.props[8] = h, this.props[9] = l, this.props[10] = p, this.props[11] = f, this.props[12] = m, this.props[13] = d, this.props[14] = c, this.props[15] = u, this
}
function translate(t, e, i) {
return (i = i || 0, 0 !== t || 0 !== e || 0 !== i) ? this._t(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, t, e, i, 1) : this
}
function transform(t, e, i, s, a, r, n, o, h, l, p, f, m, d, c, u) {
var g = this.props;
if (1 === t && 0 === e && 0 === i && 0 === s && 0 === a && 1 === r && 0 === n && 0 === o && 0 === h && 0 === l && 1 === p && 0 === f) return g[12] = g[12] * t + g[15] * m, g[13] = g[13] * r + g[15] * d, g[14] = g[14] * p + g[15] * c, g[15] *= u, this._identityCalculated = !1, this;
var y = g[0],
v = g[1],
S = g[2],
P = g[3],
b = g[4],
_ = g[5],
A = g[6],
E = g[7],
k = g[8],
x = g[9],
D = g[10],
M = g[11],
C = g[12],
T = g[13],
F = g[14],
I = g[15];
return g[0] = y * t + v * a + S * h + P * m, g[1] = y * e + v * r + S * l + P * d, g[2] = y * i + v * n + S * p + P * c, g[3] = y * s + v * o + S * f + P * u, g[4] = b * t + _ * a + A * h + E * m, g[5] = b * e + _ * r + A * l + E * d, g[6] = b * i + _ * n + A * p + E * c, g[7] = b * s + _ * o + A * f + E * u, g[8] = k * t + x * a + D * h + M * m, g[9] = k * e + x * r + D * l + M * d, g[10] = k * i + x * n + D * p + M * c, g[11] = k * s + x * o + D * f + M * u, g[12] = C * t + T * a + F * h + I * m, g[13] = C * e + T * r + F * l + I * d, g[14] = C * i + T * n + F * p + I * c, g[15] = C * s + T * o + F * f + I * u, this._identityCalculated = !1, this
}
function multiply(t) {
var e = t.props;
return this.transform(e[0], e[1], e[2], e[3], e[4], e[5], e[6], e[7], e[8], e[9], e[10], e[11], e[12], e[13], e[14], e[15])
}
function isIdentity() {
return this._identityCalculated || (this._identity = !(1 !== this.props[0] || 0 !== this.props[1] || 0 !== this.props[2] || 0 !== this.props[3] || 0 !== this.props[4] || 1 !== this.props[5] || 0 !== this.props[6] || 0 !== this.props[7] || 0 !== this.props[8] || 0 !== this.props[9] || 1 !== this.props[10] || 0 !== this.props[11] || 0 !== this.props[12] || 0 !== this.props[13] || 0 !== this.props[14] || 1 !== this.props[15]), this._identityCalculated = !0), this._identity
}
function equals(t) {
for (var e = 0; e < 16;) {
if (t.props[e] !== this.props[e]) return !1;
e += 1
}
return !0
}
function clone(t) {
var e;
for (e = 0; e < 16; e += 1) t.props[e] = this.props[e];
return t
}
function cloneFromProps(t) {
var e;
for (e = 0; e < 16; e += 1) this.props[e] = t[e]
}
function applyToPoint(t, e, i) {
return {
x: t * this.props[0] + e * this.props[4] + i * this.props[8] + this.props[12],
y: t * this.props[1] + e * this.props[5] + i * this.props[9] + this.props[13],
z: t * this.props[2] + e * this.props[6] + i * this.props[10] + this.props[14]
}
}
function applyToX(t, e, i) {
return t * this.props[0] + e * this.props[4] + i * this.props[8] + this.props[12]
}
function applyToY(t, e, i) {
return t * this.props[1] + e * this.props[5] + i * this.props[9] + this.props[13]
}
function applyToZ(t, e, i) {
return t * this.props[2] + e * this.props[6] + i * this.props[10] + this.props[14]
}
function getInverseMatrix() {
var t = this.props[0] * this.props[5] - this.props[1] * this.props[4],
e = this.props[5] / t,
i = -this.props[1] / t,
s = -this.props[4] / t,
a = this.props[0] / t,
r = (this.props[4] * this.props[13] - this.props[5] * this.props[12]) / t,
n = -(this.props[0] * this.props[13] - this.props[1] * this.props[12]) / t,
o = new H;
return o.props[0] = e, o.props[1] = i, o.props[4] = s, o.props[5] = a, o.props[12] = r, o.props[13] = n, o
}
function inversePoint(t) {
return this.getInverseMatrix().applyToPointArray(t[0], t[1], t[2] || 0)
}
function inversePoints(t) {
var e, i = t.length,
s = [];
for (e = 0; e < i; e += 1) s[e] = inversePoint(t[e]);
return s
}
function applyToTriplePoints(t, e, i) {
var s = u("float32", 6);
if (this.isIdentity()) s[0] = t[0], s[1] = t[1], s[2] = e[0], s[3] = e[1], s[4] = i[0], s[5] = i[1];
else {
var a = this.props[0],
r = this.props[1],
n = this.props[4],
o = this.props[5],
h = this.props[12],
l = this.props[13];
s[0] = t[0] * a + t[1] * n + h, s[1] = t[0] * r + t[1] * o + l, s[2] = e[0] * a + e[1] * n + h, s[3] = e[0] * r + e[1] * o + l, s[4] = i[0] * a + i[1] * n + h, s[5] = i[0] * r + i[1] * o + l
}
return s
}
function applyToPointArray(t, e, i) {
return this.isIdentity() ? [t, e, i] : [t * this.props[0] + e * this.props[4] + i * this.props[8] + this.props[12], t * this.props[1] + e * this.props[5] + i * this.props[9] + this.props[13], t * this.props[2] + e * this.props[6] + i * this.props[10] + this.props[14]]
}
function applyToPointStringified(t, e) {
if (this.isIdentity()) return t + "," + e;
var i = this.props;
return Math.round((t * i[0] + e * i[4] + i[12]) * 100) / 100 + "," + Math.round((t * i[1] + e * i[5] + i[13]) * 100) / 100
}
function toCSS() {
for (var t = 0, e = this.props, i = "matrix3d("; t < 16;) i += s(1e4 * e[t]) / 1e4 + (15 === t ? ")" : ","), t += 1;
return i
}
function roundMatrixProperty(t) {
return t < 1e-6 && t > 0 || t > -.000001 && t < 0 ? s(1e4 * t) / 1e4 : t
}
function to2dCSS() {
var t = this.props;
return "matrix(" + roundMatrixProperty(t[0]) + "," + roundMatrixProperty(t[1]) + "," + roundMatrixProperty(t[4]) + "," + roundMatrixProperty(t[5]) + "," + roundMatrixProperty(t[12]) + "," + roundMatrixProperty(t[13]) + ")"
}
return function() {
this.reset = reset, this.rotate = rotate, this.rotateX = rotateX, this.rotateY = rotateY, this.rotateZ = rotateZ, this.skew = skew, this.skewFromAxis = skewFromAxis, this.shear = shear, this.scale = scale, this.setTransform = setTransform, this.translate = translate, this.transform = transform, this.multiply = multiply, this.applyToPoint = applyToPoint, this.applyToX = applyToX, this.applyToY = applyToY, this.applyToZ = applyToZ, this.applyToPointArray = applyToPointArray, this.applyToTriplePoints = applyToTriplePoints, this.applyToPointStringified = applyToPointStringified, this.toCSS = toCSS, this.to2dCSS = to2dCSS, this.clone = clone, this.cloneFromProps = cloneFromProps, this.equals = equals, this.inversePoints = inversePoints, this.inversePoint = inversePoint, this.getInverseMatrix = getInverseMatrix, this._t = this.transform, this.isIdentity = isIdentity, this._identity = !0, this._identityCalculated = !1, this.props = u("float32", 16), this.reset()
}
}();
function _typeof(t) {
return (_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(t) {
return typeof t
} : function(t) {
return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t
})(t)
}
var W = {},
Z = "__[STANDALONE]__",
X = "__[ANIMATIONDATA]__",
Y = "";
function searchAnimations() {
!0 === Z ? I.searchAnimations(X, Z, Y) : I.searchAnimations()
}
W.play = I.play, W.pause = I.pause, W.setLocationHref = function(t) {
setLocationHref(t)
}, W.togglePause = I.togglePause, W.setSpeed = I.setSpeed, W.setDirection = I.setDirection, W.stop = I.stop, W.searchAnimations = searchAnimations, W.registerAnimation = I.registerAnimation, W.loadAnimation = function(t) {
return !0 === Z && (t.animationData = JSON.parse(X)), I.loadAnimation(t)
}, W.setSubframeRendering = function(t) {
setSubframeEnabled(t)
}, W.resize = I.resize, W.goToAndStop = I.goToAndStop, W.destroy = I.destroy, W.setQuality = function(t) {
if ("string" == typeof t) switch (t) {
case "high":
setDefaultCurveSegments(200);
break;
default:
case "medium":
setDefaultCurveSegments(50);
break;
case "low":
setDefaultCurveSegments(10)
} else !isNaN(t) && t > 1 && setDefaultCurveSegments(t);
getDefaultCurveSegments()
}, W.inBrowser = function() {
return "undefined" != typeof navigator
}, W.installPlugin = function(t, e) {
"expressions" === t && setExpressionsPlugin(e)
}, W.freeze = I.freeze, W.unfreeze = I.unfreeze, W.setVolume = I.setVolume, W.mute = I.mute, W.unmute = I.unmute, W.getRegisteredAnimations = I.getRegisteredAnimations, W.useWebWorker = function(t) {
d = !!t
}, W.setIDPrefix = function(t) {
setIdPrefix(t)
}, W.__getFactory = function(t) {
switch (t) {
case "propertyFactory":
return N;
case "shapePropertyFactory":
return j;
case "matrix":
return H;
default:
return null
}
}, W.version = "5.12.2";
var K = "";
if (Z) {
var J = document.getElementsByTagName("script"),
U = J.length - 1,
$ = J[U] || {
src: ""
};
K = $.src ? $.src.replace(/^[^\?]+\??/, "") : "", Y = function(t) {
for (var e = K.split("&"), i = 0; i < e.length; i += 1) {
var s = e[i].split("=");
if (decodeURIComponent(s[0]) == t) return decodeURIComponent(s[1])
}
return null
}("renderer")
}
var Q = setInterval(function() {
"complete" === document.readyState && (clearInterval(Q), searchAnimations())
}, 100);
try {
"object" !== _typeof(e) && i.amdO
} catch (t) {}
var tt = (h = {}, (o = {}).registerModifier = function(t, e) {
h[t] || (h[t] = e)
}, o.getModifier = function(t, e, i) {
return new h[t](e, i)
}, o);
function ShapeModifier() {}
function TrimModifier() {}
function PuckerAndBloatModifier() {}
ShapeModifier.prototype.initModifierProperties = function() {}, ShapeModifier.prototype.addShapeToModifier = function() {}, ShapeModifier.prototype.addShape = function(t) {
if (!this.closed) {
t.sh.container.addDynamicProperty(t.sh);
var e = {
shape: t.sh,
data: t,
localShapeCollection: q.newShapeCollection()
};
this.shapes.push(e), this.addShapeToModifier(e), this._isAnimated && t.setAsAnimated()
}
}, ShapeModifier.prototype.init = function(t, e) {
this.shapes = [], this.elem = t, this.initDynamicPropertyContainer(t), this.initModifierProperties(t, e), this.frameId = -999999, this.closed = !1, this.k = !1, this.dynamicProperties.length ? this.k = !0 : this.getValue(!0)
}, ShapeModifier.prototype.processKeys = function() {
this.elem.globalData.frameId !== this.frameId && (this.frameId = this.elem.globalData.frameId, this.iterateDynamicProperties())
}, extendPrototype([DynamicPropertyContainer], ShapeModifier), extendPrototype([ShapeModifier], TrimModifier), TrimModifier.prototype.initModifierProperties = function(t, e) {
this.s = N.getProp(t, e.s, 0, .01, this), this.e = N.getProp(t, e.e, 0, .01, this), this.o = N.getProp(t, e.o, 0, 0, this), this.sValue = 0, this.eValue = 0, this.getValue = this.processKeys, this.m = e.m, this._isAnimated = !!this.s.effectsSequence.length || !!this.e.effectsSequence.length || !!this.o.effectsSequence.length
}, TrimModifier.prototype.addShapeToModifier = function(t) {
t.pathsData = []
}, TrimModifier.prototype.calculateShapeEdges = function(t, e, i, s, a) {
var r, n, o = [];
e <= 1 ? o.push({
s: t,
e: e
}) : t >= 1 ? o.push({
s: t - 1,
e: e - 1
}) : (o.push({
s: t,
e: 1
}), o.push({
s: 0,
e: e - 1
}));
var h = [],
l = o.length;
for (r = 0; r < l; r += 1)(n = o[r]).e * a < s || n.s * a > s + i || h.push([n.s * a <= s ? 0 : (n.s * a - s) / i, n.e * a >= s + i ? 1 : (n.e * a - s) / i]);
return h.length || h.push([0, 0]), h
}, TrimModifier.prototype.releasePathsData = function(t) {
var e, i = t.length;
for (e = 0; e < i; e += 1) R.release(t[e]);
return t.length = 0, t
}, TrimModifier.prototype.processShapes = function(t) {
if (this._mdf || t) {
var e = this.o.v % 360 / 360;
if (e < 0 && (e += 1), (r = this.s.v > 1 ? 1 + e : this.s.v < 0 ? 0 + e : this.s.v + e) > (n = this.e.v > 1 ? 1 + e : this.e.v < 0 ? 0 + e : this.e.v + e)) {
var i = r;
r = n, n = i
}
r = 1e-4 * Math.round(1e4 * r), n = 1e-4 * Math.round(1e4 * n), this.sValue = r, this.eValue = n
} else r = this.sValue, n = this.eValue;
var s = this.shapes.length,
a = 0;
if (n === r)
for (h = 0; h < s; h += 1) this.shapes[h].localShapeCollection.releaseShapes(), this.shapes[h].shape._mdf = !0, this.shapes[h].shape.paths = this.shapes[h].localShapeCollection, this._mdf && (this.shapes[h].pathsData.length = 0);
else if (1 === n && 0 === r || 0 === n && 1 === r) {
if (this._mdf)
for (h = 0; h < s; h += 1) this.shapes[h].pathsData.length = 0, this.shapes[h].shape._mdf = !0
} else {
var r, n, o, h, l, p, f, m, d, c, u, g, y = [];
for (h = 0; h < s; h += 1)
if ((c = this.shapes[h]).shape._mdf || this._mdf || t || 2 === this.m) {
if (p = (o = c.shape.paths)._length, d = 0, !c.shape._mdf && c.pathsData.length) d = c.totalShapeLength;
else {
for (l = 0, f = this.releasePathsData(c.pathsData); l < p; l += 1) m = B.getSegmentsLength(o.shapes[l]), f.push(m), d += m.totalLength;
c.totalShapeLength = d, c.pathsData = f
}
a += d, c.shape._mdf = !0
} else c.shape.paths = c.localShapeCollection;
var v = r,
S = n,
P = 0;
for (h = s - 1; h >= 0; h -= 1)
if ((c = this.shapes[h]).shape._mdf) {
for ((u = c.localShapeCollection).releaseShapes(), 2 === this.m && s > 1 ? (g = this.calculateShapeEdges(r, n, c.totalShapeLength, P, a), P += c.totalShapeLength) : g = [
[v, S]
], p = g.length, l = 0; l < p; l += 1) {
v = g[l][0], S = g[l][1], y.length = 0, S <= 1 ? y.push({
s: c.totalShapeLength * v,
e: c.totalShapeLength * S
}) : v >= 1 ? y.push({
s: c.totalShapeLength * (v - 1),
e: c.totalShapeLength * (S - 1)
}) : (y.push({
s: c.totalShapeLength * v,
e: c.totalShapeLength
}), y.push({
s: 0,
e: c.totalShapeLength * (S - 1)
}));
var b = this.addShapes(c, y[0]);
if (y[0].s !== y[0].e) {
if (y.length > 1) {
if (c.shape.paths.shapes[c.shape.paths._length - 1].c) {
var _ = b.pop();
this.addPaths(b, u), b = this.addShapes(c, y[1], _)
} else this.addPaths(b, u), b = this.addShapes(c, y[1])
}
this.addPaths(b, u)
}
}
c.shape.paths = u
}
}
}, TrimModifier.prototype.addPaths = function(t, e) {
var i, s = t.length;
for (i = 0; i < s; i += 1) e.addShape(t[i])
}, TrimModifier.prototype.addSegment = function(t, e, i, s, a, r, n) {
a.setXYAt(e[0], e[1], "o", r), a.setXYAt(i[0], i[1], "i", r + 1), n && a.setXYAt(t[0], t[1], "v", r), a.setXYAt(s[0], s[1], "v", r + 1)
}, TrimModifier.prototype.addSegmentFromArray = function(t, e, i, s) {
e.setXYAt(t[1], t[5], "o", i), e.setXYAt(t[2], t[6], "i", i + 1), s && e.setXYAt(t[0], t[4], "v", i), e.setXYAt(t[3], t[7], "v", i + 1)
}, TrimModifier.prototype.addShapes = function(t, e, i) {
var s, a, r, n, o, h, l, p, f = t.pathsData,
m = t.shape.paths.shapes,
d = t.shape.paths._length,
c = 0,
u = [],
g = !0;
for (i ? (o = i._length, p = i._length) : (i = O.newElement(), o = 0, p = 0), u.push(i), s = 0; s < d; s += 1) {
for (a = 1, h = f[s].lengths, i.c = m[s].c, r = m[s].c ? h.length : h.length + 1; a < r; a += 1)
if (c + (n = h[a - 1]).addedLength < e.s) c += n.addedLength, i.c = !1;
else if (c > e.e) {
i.c = !1;
break
} else e.s <= c && e.e >= c + n.addedLength ? (this.addSegment(m[s].v[a - 1], m[s].o[a - 1], m[s].i[a], m[s].v[a], i, o, g), g = !1) : (l = B.getNewSegment(m[s].v[a - 1], m[s].v[a], m[s].o[a - 1], m[s].i[a], (e.s - c) / n.addedLength, (e.e - c) / n.addedLength, h[a - 1]), this.addSegmentFromArray(l, i, o, g), g = !1, i.c = !1), c += n.addedLength, o += 1;
if (m[s].c && h.length) {
if (n = h[a - 1], c <= e.e) {
var y = h[a - 1].addedLength;
e.s <= c && e.e >= c + y ? (this.addSegment(m[s].v[a - 1], m[s].o[a - 1], m[s].i[0], m[s].v[0], i, o, g), g = !1) : (l = B.getNewSegment(m[s].v[a - 1], m[s].v[0], m[s].o[a - 1], m[s].i[0], (e.s - c) / y, (e.e - c) / y, h[a - 1]), this.addSegmentFromArray(l, i, o, g), g = !1, i.c = !1)
} else i.c = !1;
c += n.addedLength, o += 1
}
if (i._length && (i.setXYAt(i.v[p][0], i.v[p][1], "i", p), i.setXYAt(i.v[i._length - 1][0], i.v[i._length - 1][1], "o", i._length - 1)), c > e.e) break;
s < d - 1 && (i = O.newElement(), g = !0, u.push(i), o = 0)
}
return u
}, extendPrototype([ShapeModifier], PuckerAndBloatModifier), PuckerAndBloatModifier.prototype.initModifierProperties = function(t, e) {
this.getValue = this.processKeys, this.amount = N.getProp(t, e.a, 0, null, this), this._isAnimated = !!this.amount.effectsSequence.length
}, PuckerAndBloatModifier.prototype.processPath = function(t, e) {
var i, s, a, r, n, o, h = e / 100,
l = [0, 0],
p = t._length,
f = 0;
for (f = 0; f < p; f += 1) l[0] += t.v[f][0], l[1] += t.v[f][1];
l[0] /= p, l[1] /= p;
var m = O.newElement();
for (f = 0, m.c = t.c; f < p; f += 1) i = t.v[f][0] + (l[0] - t.v[f][0]) * h, s = t.v[f][1] + (l[1] - t.v[f][1]) * h, a = t.o[f][0] + -((l[0] - t.o[f][0]) * h), r = t.o[f][1] + -((l[1] - t.o[f][1]) * h), n = t.i[f][0] + -((l[0] - t.i[f][0]) * h), o = t.i[f][1] + -((l[1] - t.i[f][1]) * h), m.setTripleAt(i, s, a, r, n, o, f);
return m
}, PuckerAndBloatModifier.prototype.processShapes = function(t) {
var e, i, s, a, r, n, o = this.shapes.length,
h = this.amount.v;
if (0 !== h)
for (i = 0; i < o; i += 1) {
if (n = (r = this.shapes[i]).localShapeCollection, !(!r.shape._mdf && !this._mdf && !t))
for (n.releaseShapes(), r.shape._mdf = !0, e = r.shape.paths.shapes, a = r.shape.paths._length, s = 0; s < a; s += 1) n.addShape(this.processPath(e[s], h));
r.shape.paths = r.localShapeCollection
}
this.dynamicProperties.length || (this._mdf = !1)
};
var te = function() {
var t = [0, 0];
function TransformProperty(t, e, i) {
if (this.elem = t, this.frameId = -1, this.propType = "transform", this.data = e, this.v = new H, this.pre = new H, this.appliedTransformations = 0, this.initDynamicPropertyContainer(i || t), e.p && e.p.s ? (this.px = N.getProp(t, e.p.x, 0, 0, this), this.py = N.getProp(t, e.p.y, 0, 0, this), e.p.z && (this.pz = N.getProp(t, e.p.z, 0, 0, this))) : this.p = N.getProp(t, e.p || {
k: [0, 0, 0]
}, 1, 0, this), e.rx) {
if (this.rx = N.getProp(t, e.rx, 0, x, this), this.ry = N.getProp(t, e.ry, 0, x, this), this.rz = N.getProp(t, e.rz, 0, x, this), e.or.k[0].ti) {
var s, a = e.or.k.length;
for (s = 0; s < a; s += 1) e.or.k[s].to = null, e.or.k[s].ti = null
}
this.or = N.getProp(t, e.or, 1, x, this), this.or.sh = !0
} else this.r = N.getProp(t, e.r || {
k: 0
}, 0, x, this);
e.sk && (this.sk = N.getProp(t, e.sk, 0, x, this), this.sa = N.getProp(t, e.sa, 0, x, this)), this.a = N.getProp(t, e.a || {
k: [0, 0, 0]
}, 1, 0, this), this.s = N.getProp(t, e.s || {
k: [100, 100, 100]
}, 1, .01, this), e.o ? this.o = N.getProp(t, e.o, 0, .01, t) : this.o = {
_mdf: !1,
v: 1
}, this._isDirty = !0, this.dynamicProperties.length || this.getValue(!0)
}
return TransformProperty.prototype = {
applyToMatrix: function(t) {
var e = this._mdf;
this.iterateDynamicProperties(), this._mdf = this._mdf || e, this.a && t.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]), this.s && t.scale(this.s.v[0], this.s.v[1], this.s.v[2]), this.sk && t.skewFromAxis(-this.sk.v, this.sa.v), this.r ? t.rotate(-this.r.v) : t.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]), this.data.p.s ? this.data.p.z ? t.translate(this.px.v, this.py.v, -this.pz.v) : t.translate(this.px.v, this.py.v, 0) : t.translate(this.p.v[0], this.p.v[1], -this.p.v[2])
},
getValue: function(e) {
if (this.elem.globalData.frameId !== this.frameId) {
if (this._isDirty && (this.precalculateMatrix(), this._isDirty = !1), this.iterateDynamicProperties(), this._mdf || e) {
var i;
if (this.v.cloneFromProps(this.pre.props), this.appliedTransformations < 1 && this.v.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]), this.appliedTransformations < 2 && this.v.scale(this.s.v[0], this.s.v[1], this.s.v[2]), this.sk && this.appliedTransformations < 3 && this.v.skewFromAxis(-this.sk.v, this.sa.v), this.r && this.appliedTransformations < 4 ? this.v.rotate(-this.r.v) : !this.r && this.appliedTransformations < 4 && this.v.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]), this.autoOriented) {
if (i = this.elem.globalData.frameRate, this.p && this.p.keyframes && this.p.getValueAtTime) this.p._caching.lastFrame + this.p.offsetTime <= this.p.keyframes[0].t ? (s = this.p.getValueAtTime((this.p.keyframes[0].t + .01) / i, 0), a = this.p.getValueAtTime(this.p.keyframes[0].t / i, 0)) : this.p._caching.lastFrame + this.p.offsetTime >= this.p.keyframes[this.p.keyframes.length - 1].t ? (s = this.p.getValueAtTime(this.p.keyframes[this.p.keyframes.length - 1].t / i, 0), a = this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length - 1].t - .05) / i, 0)) : (s = this.p.pv, a = this.p.getValueAtTime((this.p._caching.lastFrame + this.p.offsetTime - .01) / i, this.p.offsetTime));
else if (this.px && this.px.keyframes && this.py.keyframes && this.px.getValueAtTime && this.py.getValueAtTime) {
s = [], a = [];
var s, a, r = this.px,
n = this.py;
r._caching.lastFrame + r.offsetTime <= r.keyframes[0].t ? (s[0] = r.getValueAtTime((r.keyframes[0].t + .01) / i, 0), s[1] = n.getValueAtTime((n.keyframes[0].t + .01) / i, 0), a[0] = r.getValueAtTime(r.keyframes[0].t / i, 0), a[1] = n.getValueAtTime(n.keyframes[0].t / i, 0)) : r._caching.lastFrame + r.offsetTime >= r.keyframes[r.keyframes.length - 1].t ? (s[0] = r.getValueAtTime(r.keyframes[r.keyframes.length - 1].t / i, 0), s[1] = n.getValueAtTime(n.keyframes[n.keyframes.length - 1].t / i, 0), a[0] = r.getValueAtTime((r.keyframes[r.keyframes.length - 1].t - .01) / i, 0), a[1] = n.getValueAtTime((n.keyframes[n.keyframes.length - 1].t - .01) / i, 0)) : (s = [r.pv, n.pv], a[0] = r.getValueAtTime((r._caching.lastFrame + r.offsetTime - .01) / i, r.offsetTime), a[1] = n.getValueAtTime((n._caching.lastFrame + n.offsetTime - .01) / i, n.offsetTime))
} else s = a = t;
this.v.rotate(-Math.atan2(s[1] - a[1], s[0] - a[0]))
}
this.data.p && this.data.p.s ? this.data.p.z ? this.v.translate(this.px.v, this.py.v, -this.pz.v) : this.v.translate(this.px.v, this.py.v, 0) : this.v.translate(this.p.v[0], this.p.v[1], -this.p.v[2])
}
this.frameId = this.elem.globalData.frameId
}
},
precalculateMatrix: function() {
if (this.appliedTransformations = 0, this.pre.reset(), !this.a.effectsSequence.length && (this.pre.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]), this.appliedTransformations = 1, !this.s.effectsSequence.length)) {
if (this.pre.scale(this.s.v[0], this.s.v[1], this.s.v[2]), this.appliedTransformations = 2, this.sk) {
if (this.sk.effectsSequence.length || this.sa.effectsSequence.length) return;
this.pre.skewFromAxis(-this.sk.v, this.sa.v), this.appliedTransformations = 3
}
this.r ? this.r.effectsSequence.length || (this.pre.rotate(-this.r.v), this.appliedTransformations = 4) : this.rz.effectsSequence.length || this.ry.effectsSequence.length || this.rx.effectsSequence.length || this.or.effectsSequence.length || (this.pre.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]), this.appliedTransformations = 4)
}
},
autoOrient: function() {}
}, extendPrototype([DynamicPropertyContainer], TransformProperty), TransformProperty.prototype.addDynamicProperty = function(t) {
this._addDynamicProperty(t), this.elem.addDynamicProperty(t), this._isDirty = !0
}, TransformProperty.prototype._addDynamicProperty = DynamicPropertyContainer.prototype.addDynamicProperty, {
getTransformProperty: function(t, e, i) {
return new TransformProperty(t, e, i)
}
}
}();
function RepeaterModifier() {}
function RoundCornersModifier() {}
function floatEqual(t, e) {
return 1e5 * Math.abs(t - e) <= Math.min(Math.abs(t), Math.abs(e))
}
function floatZero(t) {
return 1e-5 >= Math.abs(t)
}
function lerpPoint(t, e, i) {
return [t[0] * (1 - i) + e[0] * i, t[1] * (1 - i) + e[1] * i]
}
function polynomialCoefficients(t, e, i, s) {
return [-t + 3 * e - 3 * i + s, 3 * t - 6 * e + 3 * i, -3 * t + 3 * e, t]
}
function singlePoint(t) {
return new PolynomialBezier(t, t, t, t, !1)
}
function PolynomialBezier(t, e, i, s, a) {
a && pointEqual(t, e) && (e = lerpPoint(t, s, 1 / 3)), a && pointEqual(i, s) && (i = lerpPoint(t, s, 2 / 3));
var r = polynomialCoefficients(t[0], e[0], i[0], s[0]),
n = polynomialCoefficients(t[1], e[1], i[1], s[1]);
this.a = [r[0], n[0]], this.b = [r[1], n[1]], this.c = [r[2], n[2]], this.d = [r[3], n[3]], this.points = [t, e, i, s]
}
function extrema(t, e) {
var i = t.points[0][e],
s = t.points[t.points.length - 1][e];
if (i > s) {
var a = s;
s = i, i = a
}
for (var r = function(t, e, i) {
if (0 === t) return [];
var s = e * e - 4 * t * i;
if (s < 0) return [];
var a = -e / (2 * t);
if (0 === s) return [a];
var r = Math.sqrt(s) / (2 * t);
return [a - r, a + r]
}(3 * t.a[e], 2 * t.b[e], t.c[e]), n = 0; n < r.length; n += 1)
if (r[n] > 0 && r[n] < 1) {
var o = t.point(r[n])[e];
o < i ? i = o : o > s && (s = o)
} return {
min: i,
max: s
}
}
function intersectData(t, e, i) {
var s = t.boundingBox();
return {
cx: s.cx,
cy: s.cy,
width: s.width,
height: s.height,
bez: t,
t: (e + i) / 2,
t1: e,
t2: i
}
}
function splitData(t) {
var e = t.bez.split(.5);
return [intersectData(e[0], t.t1, t.t), intersectData(e[1], t.t, t.t2)]
}
function crossProduct(t, e) {
return [t[1] * e[2] - t[2] * e[1], t[2] * e[0] - t[0] * e[2], t[0] * e[1] - t[1] * e[0]]
}
function lineIntersection(t, e, i, s) {
var a = [t[0], t[1], 1],
r = [e[0], e[1], 1],
n = [i[0], i[1], 1],
o = [s[0], s[1], 1],
h = crossProduct(crossProduct(a, r), crossProduct(n, o));
return floatZero(h[2]) ? null : [h[0] / h[2], h[1] / h[2]]
}
function polarOffset(t, e, i) {
return [t[0] + Math.cos(e) * i, t[1] - Math.sin(e) * i]
}
function pointDistance(t, e) {
return Math.hypot(t[0] - e[0], t[1] - e[1])
}
function pointEqual(t, e) {
return floatEqual(t[0], e[0]) && floatEqual(t[1], e[1])
}
function ZigZagModifier() {}
function setPoint(t, e, i, s, a, r, n) {
var o = i - Math.PI / 2,
h = i + Math.PI / 2,
l = e[0] + Math.cos(i) * s * a,
p = e[1] - Math.sin(i) * s * a;
t.setTripleAt(l, p, l + Math.cos(o) * r, p - Math.sin(o) * r, l + Math.cos(h) * n, p - Math.sin(h) * n, t.length())
}
function zigZagCorner(t, e, i, s, a, r, n) {
var o, h, l, p, f, m, d, c = (o = 0 === i ? e.length() - 1 : i - 1, h = (i + 1) % e.length(), l = e.v[o], Math.atan2(0, 1) - Math.atan2((f = [(p = e.v[h])[0] - l[0], p[1] - l[1]], d = [Math.cos(m = -(.5 * Math.PI)) * f[0] - Math.sin(m) * f[1], Math.sin(m) * f[0] + Math.cos(m) * f[1]])[1], d[0])),
u = e.v[i % e._length],
g = e.v[0 === i ? e._length - 1 : i - 1],
y = e.v[(i + 1) % e._length],
v = 2 === r ? Math.sqrt(Math.pow(u[0] - g[0], 2) + Math.pow(u[1] - g[1], 2)) : 0,
S = 2 === r ? Math.sqrt(Math.pow(u[0] - y[0], 2) + Math.pow(u[1] - y[1], 2)) : 0;
setPoint(t, e.v[i % e._length], c, n, s, S / ((a + 1) * 2), v / ((a + 1) * 2), r)
}
function linearOffset(t, e, i) {
var s = Math.atan2(e[0] - t[0], e[1] - t[1]);
return [polarOffset(t, s, i), polarOffset(e, s, i)]
}
function offsetSegment(t, e) {
i = (h = linearOffset(t.points[0], t.points[1], e))[0], s = h[1], a = (h = linearOffset(t.points[1], t.points[2], e))[0], r = h[1], n = (h = linearOffset(t.points[2], t.points[3], e))[0], o = h[1];
var i, s, a, r, n, o, h, l = lineIntersection(i, s, a, r);
null === l && (l = s);
var p = lineIntersection(n, o, a, r);
return null === p && (p = n), new PolynomialBezier(i, l, p, o)
}
function joinLines(t, e, i, s, a) {
var r = e.points[3],
n = i.points[0];
if (3 === s || pointEqual(r, n)) return r;
if (2 === s) {
var o = -e.tangentAngle(1),
h = -i.tangentAngle(0) + Math.PI,
l = lineIntersection(r, polarOffset(r, o + Math.PI / 2, 100), n, polarOffset(n, o + Math.PI / 2, 100)),
p = l ? pointDistance(l, r) : pointDistance(r, n) / 2,
f = polarOffset(r, o, 2 * p * .5519);
return t.setXYAt(f[0], f[1], "o", t.length() - 1), f = polarOffset(n, h, 2 * p * .5519), t.setTripleAt(n[0], n[1], n[0], n[1], f[0], f[1], t.length()), n
}
var m = pointEqual(r, e.points[2]) ? e.points[0] : e.points[2],
d = pointEqual(n, i.points[1]) ? i.points[3] : i.points[1],
c = lineIntersection(m, r, n, d);
return c && pointDistance(c, r) < a ? (t.setTripleAt(c[0], c[1], c[0], c[1], c[0], c[1], t.length()), c) : r
}
function getIntersection(t, e) {
var i = t.intersections(e);
return (i.length && floatEqual(i[0][0], 1) && i.shift(), i.length) ? i[0] : null
}
function pruneSegmentIntersection(t, e) {
var i = t.slice(),
s = e.slice(),
a = getIntersection(t[t.length - 1], e[0]);
return (a && (i[t.length - 1] = t[t.length - 1].split(a[0])[0], s[0] = e[0].split(a[1])[1]), t.length > 1 && e.length > 1 && (a = getIntersection(t[0], e[e.length - 1]))) ? [
[t[0].split(a[0])[0]],
[e[e.length - 1].split(a[1])[1]]
] : [i, s]
}
function offsetSegmentSplit(t, e) {
var i, s, a, r, n = t.inflectionPoints();
if (0 === n.length) return [offsetSegment(t, e)];
if (1 === n.length || floatEqual(n[1], 1)) return i = (a = t.split(n[0]))[0], s = a[1], [offsetSegment(i, e), offsetSegment(s, e)];
i = (a = t.split(n[0]))[0];
var o = (n[1] - n[0]) / (1 - n[0]);
return r = (a = a[1].split(o))[0], s = a[1], [offsetSegment(i, e), offsetSegment(r, e), offsetSegment(s, e)]
}
function OffsetPathModifier() {}
function getFontProperties(t) {
for (var e = t.fStyle ? t.fStyle.split(" ") : [], i = "normal", s = "normal", a = e.length, r = 0; r < a; r += 1) switch (e[r].toLowerCase()) {
case "italic":
s = "italic";
break;
case "bold":
i = "700";
break;
case "black":
i = "900";
break;
case "medium":
i = "500";
break;
case "regular":
case "normal":
i = "400";
break;
case "light":
case "thin":
i = "200"
}
return {
style: s,
weight: t.fWeight || i
}
}
extendPrototype([ShapeModifier], RepeaterModifier), RepeaterModifier.prototype.initModifierProperties = function(t, e) {
this.getValue = this.processKeys, this.c = N.getProp(t, e.c, 0, null, this), this.o = N.getProp(t, e.o, 0, null, this), this.tr = te.getTransformProperty(t, e.tr, this), this.so = N.getProp(t, e.tr.so, 0, .01, this), this.eo = N.getProp(t, e.tr.eo, 0, .01, this), this.data = e, this.dynamicProperties.length || this.getValue(!0), this._isAnimated = !!this.dynamicProperties.length, this.pMatrix = new H, this.rMatrix = new H, this.sMatrix = new H, this.tMatrix = new H, this.matrix = new H
}, RepeaterModifier.prototype.applyTransforms = function(t, e, i, s, a, r) {
var n = r ? -1 : 1,
o = s.s.v[0] + (1 - s.s.v[0]) * (1 - a),
h = s.s.v[1] + (1 - s.s.v[1]) * (1 - a);
t.translate(s.p.v[0] * n * a, s.p.v[1] * n * a, s.p.v[2]), e.translate(-s.a.v[0], -s.a.v[1], s.a.v[2]), e.rotate(-s.r.v * n * a), e.translate(s.a.v[0], s.a.v[1], s.a.v[2]), i.translate(-s.a.v[0], -s.a.v[1], s.a.v[2]), i.scale(r ? 1 / o : o, r ? 1 / h : h), i.translate(s.a.v[0], s.a.v[1], s.a.v[2])
}, RepeaterModifier.prototype.init = function(t, e, i, s) {
for (this.elem = t, this.arr = e, this.pos = i, this.elemsData = s, this._currentCopies = 0, this._elements = [], this._groups = [], this.frameId = -1, this.initDynamicPropertyContainer(t), this.initModifierProperties(t, e[i]); i > 0;) i -= 1, this._elements.unshift(e[i]);
this.dynamicProperties.length ? this.k = !0 : this.getValue(!0)
}, RepeaterModifier.prototype.resetElements = function(t) {
var e, i = t.length;
for (e = 0; e < i; e += 1) t[e]._processed = !1, "gr" === t[e].ty && this.resetElements(t[e].it)
}, RepeaterModifier.prototype.cloneElements = function(t) {
var e = JSON.parse(JSON.stringify(t));
return this.resetElements(e), e
}, RepeaterModifier.prototype.changeGroupRender = function(t, e) {
var i, s = t.length;
for (i = 0; i < s; i += 1) t[i]._render = e, "gr" === t[i].ty && this.changeGroupRender(t[i].it, e)
}, RepeaterModifier.prototype.processShapes = function(t) {
var e = !1;
if (this._mdf || t) {
var i, s, a, r, n, o, h, l, p = Math.ceil(this.c.v);
if (this._groups.length < p) {
for (; this._groups.length < p;) {
var f = {
it: this.cloneElements(this._elements),
ty: "gr"
};
f.it.push({
a: {
a: 0,
ix: 1,
k: [0, 0]
},
nm: "Transform",
o: {
a: 0,
ix: 7,
k: 100
},
p: {
a: 0,
ix: 2,
k: [0, 0]
},
r: {
a: 1,
ix: 6,
k: [{
s: 0,
e: 0,
t: 0
}, {
s: 0,
e: 0,
t: 1
}]
},
s: {
a: 0,
ix: 3,
k: [100, 100]
},
sa: {
a: 0,
ix: 5,
k: 0
},
sk: {
a: 0,
ix: 4,
k: 0
},
ty: "tr"
}), this.arr.splice(0, 0, f), this._groups.splice(0, 0, f), this._currentCopies += 1
}
this.elem.reloadShapes(), e = !0
}
for (a = 0, n = 0; a <= this._groups.length - 1; a += 1) {
if (o = n < p, this._groups[a]._render = o, this.changeGroupRender(this._groups[a].it, o), !o) {
var m = this.elemsData[a].it,
d = m[m.length - 1];
0 !== d.transform.op.v ? (d.transform.op._mdf = !0, d.transform.op.v = 0) : d.transform.op._mdf = !1
}
n += 1
}
this._currentCopies = p;
var c = this.o.v,
u = c % 1,
g = c > 0 ? Math.floor(c) : Math.ceil(c),
y = this.pMatrix.props,
v = this.rMatrix.props,
S = this.sMatrix.props;
this.pMatrix.reset(), this.rMatrix.reset(), this.sMatrix.reset(), this.tMatrix.reset(), this.matrix.reset();
var P = 0;
if (c > 0) {
for (; P < g;) this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, !1), P += 1;
u && (this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, u, !1), P += u)
} else if (c < 0) {
for (; P > g;) this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, !0), P -= 1;
u && (this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, -u, !0), P -= u)
}
for (a = 1 === this.data.m ? 0 : this._currentCopies - 1, r = 1 === this.data.m ? 1 : -1, n = this._currentCopies; n;) {
if (l = (s = (i = this.elemsData[a].it)[i.length - 1].transform.mProps.v.props).length, i[i.length - 1].transform.mProps._mdf = !0, i[i.length - 1].transform.op._mdf = !0, i[i.length - 1].transform.op.v = 1 === this._currentCopies ? this.so.v : this.so.v + (this.eo.v - this.so.v) * (a / (this._currentCopies - 1)), 0 !== P) {
for ((0 !== a && 1 === r || a !== this._currentCopies - 1 && -1 === r) && this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, !1), this.matrix.transform(v[0], v[1], v[2], v[3], v[4], v[5], v[6], v[7], v[8], v[9], v[10], v[11], v[12], v[13], v[14], v[15]), this.matrix.transform(S[0], S[1], S[2], S[3], S[4], S[5], S[6], S[7], S[8], S[9], S[10], S[11], S[12], S[13], S[14], S[15]), this.matrix.transform(y[0], y[1], y[2], y[3], y[4], y[5], y[6], y[7], y[8], y[9], y[10], y[11], y[12], y[13], y[14], y[15]), h = 0; h < l; h += 1) s[h] = this.matrix.props[h];
this.matrix.reset()
} else
for (this.matrix.reset(), h = 0; h < l; h += 1) s[h] = this.matrix.props[h];
P += 1, n -= 1, a += r
}
} else
for (n = this._currentCopies, a = 0, r = 1; n;) s = (i = this.elemsData[a].it)[i.length - 1].transform.mProps.v.props, i[i.length - 1].transform.mProps._mdf = !1, i[i.length - 1].transform.op._mdf = !1, n -= 1, a += r;
return e
}, RepeaterModifier.prototype.addShape = function() {}, extendPrototype([ShapeModifier], RoundCornersModifier), RoundCornersModifier.prototype.initModifierProperties = function(t, e) {
this.getValue = this.processKeys, this.rd = N.getProp(t, e.r, 0, null, this), this._isAnimated = !!this.rd.effectsSequence.length
}, RoundCornersModifier.prototype.processPath = function(t, e) {
var i, s, a, r, n, o, h, l, p, f, m, d, c, u = O.newElement();
u.c = t.c;
var g = t._length,
y = 0;
for (i = 0; i < g; i += 1) s = t.v[i], r = t.o[i], a = t.i[i], s[0] === r[0] && s[1] === r[1] && s[0] === a[0] && s[1] === a[1] ? 0 !== i && i !== g - 1 || t.c ? (n = 0 === i ? t.v[g - 1] : t.v[i - 1], h = (o = Math.sqrt(Math.pow(s[0] - n[0], 2) + Math.pow(s[1] - n[1], 2))) ? Math.min(o / 2, e) / o : 0, l = d = s[0] + (n[0] - s[0]) * h, p = c = s[1] - (s[1] - n[1]) * h, f = l - (l - s[0]) * .5519, m = p - (p - s[1]) * .5519, u.setTripleAt(l, p, f, m, d, c, y), y += 1, n = i === g - 1 ? t.v[0] : t.v[i + 1], h = (o = Math.sqrt(Math.pow(s[0] - n[0], 2) + Math.pow(s[1] - n[1], 2))) ? Math.min(o / 2, e) / o : 0, l = f = s[0] + (n[0] - s[0]) * h, p = m = s[1] + (n[1] - s[1]) * h, d = l - (l - s[0]) * .5519, c = p - (p - s[1]) * .5519, u.setTripleAt(l, p, f, m, d, c, y)) : u.setTripleAt(s[0], s[1], r[0], r[1], a[0], a[1], y) : u.setTripleAt(t.v[i][0], t.v[i][1], t.o[i][0], t.o[i][1], t.i[i][0], t.i[i][1], y), y += 1;
return u
}, RoundCornersModifier.prototype.processShapes = function(t) {
var e, i, s, a, r, n, o = this.shapes.length,
h = this.rd.v;
if (0 !== h)
for (i = 0; i < o; i += 1) {
if (n = (r = this.shapes[i]).localShapeCollection, !(!r.shape._mdf && !this._mdf && !t))
for (n.releaseShapes(), r.shape._mdf = !0, e = r.shape.paths.shapes, a = r.shape.paths._length, s = 0; s < a; s += 1) n.addShape(this.processPath(e[s], h));
r.shape.paths = r.localShapeCollection
}
this.dynamicProperties.length || (this._mdf = !1)
}, PolynomialBezier.prototype.point = function(t) {
return [((this.a[0] * t + this.b[0]) * t + this.c[0]) * t + this.d[0], ((this.a[1] * t + this.b[1]) * t + this.c[1]) * t + this.d[1]]
}, PolynomialBezier.prototype.derivative = function(t) {
return [(3 * t * this.a[0] + 2 * this.b[0]) * t + this.c[0], (3 * t * this.a[1] + 2 * this.b[1]) * t + this.c[1]]
}, PolynomialBezier.prototype.tangentAngle = function(t) {
var e = this.derivative(t);
return Math.atan2(e[1], e[0])
}, PolynomialBezier.prototype.normalAngle = function(t) {
var e = this.derivative(t);
return Math.atan2(e[0], e[1])
}, PolynomialBezier.prototype.inflectionPoints = function() {
var t = this.a[1] * this.b[0] - this.a[0] * this.b[1];
if (floatZero(t)) return [];
var e = -.5 * (this.a[1] * this.c[0] - this.a[0] * this.c[1]) / t,
i = e * e - 1 / 3 * (this.b[1] * this.c[0] - this.b[0] * this.c[1]) / t;
if (i < 0) return [];
var s = Math.sqrt(i);
return floatZero(s) ? s > 0 && s < 1 ? [e] : [] : [e - s, e + s].filter(function(t) {
return t > 0 && t < 1
})
}, PolynomialBezier.prototype.split = function(t) {
if (t <= 0) return [singlePoint(this.points[0]), this];
if (t >= 1) return [this, singlePoint(this.points[this.points.length - 1])];
var e = lerpPoint(this.points[0], this.points[1], t),
i = lerpPoint(this.points[1], this.points[2], t),
s = lerpPoint(this.points[2], this.points[3], t),
a = lerpPoint(e, i, t),
r = lerpPoint(i, s, t),
n = lerpPoint(a, r, t);
return [new PolynomialBezier(this.points[0], e, a, n, !0), new PolynomialBezier(n, r, s, this.points[3], !0)]
}, PolynomialBezier.prototype.bounds = function() {
return {
x: extrema(this, 0),
y: extrema(this, 1)
}
}, PolynomialBezier.prototype.boundingBox = function() {
var t = this.bounds();
return {
left: t.x.min,
right: t.x.max,
top: t.y.min,
bottom: t.y.max,
width: t.x.max - t.x.min,
height: t.y.max - t.y.min,
cx: (t.x.max + t.x.min) / 2,
cy: (t.y.max + t.y.min) / 2
}
}, PolynomialBezier.prototype.intersections = function(t, e, i) {
void 0 === e && (e = 2), void 0 === i && (i = 7);
var s = [];
return function intersectsImpl(t, e, i, s, a, r) {
if (2 * Math.abs(t.cx - e.cx) < t.width + e.width && 2 * Math.abs(t.cy - e.cy) < t.height + e.height) {
if (i >= r || t.width <= s && t.height <= s && e.width <= s && e.height <= s) {
a.push([t.t, e.t]);
return
}
var n = splitData(t),
o = splitData(e);
intersectsImpl(n[0], o[0], i + 1, s, a, r), intersectsImpl(n[0], o[1], i + 1, s, a, r), intersectsImpl(n[1], o[0], i + 1, s, a, r), intersectsImpl(n[1], o[1], i + 1, s, a, r)
}
}(intersectData(this, 0, 1), intersectData(t, 0, 1), 0, e, s, i), s
}, PolynomialBezier.shapeSegment = function(t, e) {
var i = (e + 1) % t.length();
return new PolynomialBezier(t.v[e], t.o[e], t.i[i], t.v[i], !0)
}, PolynomialBezier.shapeSegmentInverted = function(t, e) {
var i = (e + 1) % t.length();
return new PolynomialBezier(t.v[i], t.i[i], t.o[e], t.v[e], !0)
}, extendPrototype([ShapeModifier], ZigZagModifier), ZigZagModifier.prototype.initModifierProperties = function(t, e) {
this.getValue = this.processKeys, this.amplitude = N.getProp(t, e.s, 0, null, this), this.frequency = N.getProp(t, e.r, 0, null, this), this.pointsType = N.getProp(t, e.pt, 0, null, this), this._isAnimated = 0 !== this.amplitude.effectsSequence.length || 0 !== this.frequency.effectsSequence.length || 0 !== this.pointsType.effectsSequence.length
}, ZigZagModifier.prototype.processPath = function(t, e, i, s) {
var a = t._length,
r = O.newElement();
if (r.c = t.c, t.c || (a -= 1), 0 === a) return r;
var n = -1,
o = PolynomialBezier.shapeSegment(t, 0);
zigZagCorner(r, t, 0, e, i, s, n);
for (var h = 0; h < a; h += 1) n = function(t, e, i, s, a, r) {
for (var n = 0; n < s; n += 1) {
var o = (n + 1) / (s + 1),
h = 2 === a ? Math.sqrt(Math.pow(e.points[3][0] - e.points[0][0], 2) + Math.pow(e.points[3][1] - e.points[0][1], 2)) : 0,
l = e.normalAngle(o);
setPoint(t, e.point(o), l, r, i, h / ((s + 1) * 2), h / ((s + 1) * 2), a), r = -r
}
return r
}(r, o, e, i, s, -n), o = h !== a - 1 || t.c ? PolynomialBezier.shapeSegment(t, (h + 1) % a) : null, zigZagCorner(r, t, h + 1, e, i, s, n);
return r
}, ZigZagModifier.prototype.processShapes = function(t) {
var e, i, s, a, r, n, o = this.shapes.length,
h = this.amplitude.v,
l = Math.max(0, Math.round(this.frequency.v)),
p = this.pointsType.v;
if (0 !== h)
for (i = 0; i < o; i += 1) {
if (n = (r = this.shapes[i]).localShapeCollection, !(!r.shape._mdf && !this._mdf && !t))
for (n.releaseShapes(), r.shape._mdf = !0, e = r.shape.paths.shapes, a = r.shape.paths._length, s = 0; s < a; s += 1) n.addShape(this.processPath(e[s], h, l, p));
r.shape.paths = r.localShapeCollection
}
this.dynamicProperties.length || (this._mdf = !1)
}, extendPrototype([ShapeModifier], OffsetPathModifier), OffsetPathModifier.prototype.initModifierProperties = function(t, e) {
this.getValue = this.processKeys, this.amount = N.getProp(t, e.a, 0, null, this), this.miterLimit = N.getProp(t, e.ml, 0, null, this), this.lineJoin = e.lj, this._isAnimated = 0 !== this.amount.effectsSequence.length
}, OffsetPathModifier.prototype.processPath = function(t, e, i, s) {
var a, r, n, o = O.newElement();
o.c = t.c;
var h = t.length();
t.c || (h -= 1);
var l = [];
for (a = 0; a < h; a += 1) n = PolynomialBezier.shapeSegment(t, a), l.push(offsetSegmentSplit(n, e));
if (!t.c)
for (a = h - 1; a >= 0; a -= 1) n = PolynomialBezier.shapeSegmentInverted(t, a), l.push(offsetSegmentSplit(n, e));
l = function(t) {
for (var e, i = 1; i < t.length; i += 1) e = pruneSegmentIntersection(t[i - 1], t[i]), t[i - 1] = e[0], t[i] = e[1];
return t.length > 1 && (e = pruneSegmentIntersection(t[t.length - 1], t[0]), t[t.length - 1] = e[0], t[0] = e[1]), t
}(l);
var p = null,
f = null;
for (a = 0; a < l.length; a += 1) {
var m = l[a];
for (f && (p = joinLines(o, f, m[0], i, s)), f = m[m.length - 1], r = 0; r < m.length; r += 1) n = m[r], p && pointEqual(n.points[0], p) ? o.setXYAt(n.points[1][0], n.points[1][1], "o", o.length() - 1) : o.setTripleAt(n.points[0][0], n.points[0][1], n.points[1][0], n.points[1][1], n.points[0][0], n.points[0][1], o.length()), o.setTripleAt(n.points[3][0], n.points[3][1], n.points[3][0], n.points[3][1], n.points[2][0], n.points[2][1], o.length()), p = n.points[3]
}
return l.length && joinLines(o, f, l[0][0], i, s), o
}, OffsetPathModifier.prototype.processShapes = function(t) {
var e, i, s, a, r, n, o = this.shapes.length,
h = this.amount.v,
l = this.miterLimit.v,
p = this.lineJoin;
if (0 !== h)
for (i = 0; i < o; i += 1) {
if (n = (r = this.shapes[i]).localShapeCollection, !(!r.shape._mdf && !this._mdf && !t))
for (n.releaseShapes(), r.shape._mdf = !0, e = r.shape.paths.shapes, a = r.shape.paths._length, s = 0; s < a; s += 1) n.addShape(this.processPath(e[s], h, p, l));
r.shape.paths = r.localShapeCollection
}
this.dynamicProperties.length || (this._mdf = !1)
};
var ti = function() {
var t = {
w: 0,
size: 0,
shapes: [],
data: {
shapes: []
}
},
e = [];
e = e.concat([2304, 2305, 2306, 2307, 2362, 2363, 2364, 2364, 2366, 2367, 2368, 2369, 2370, 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2381, 2382, 2383, 2387, 2388, 2389, 2390, 2391, 2402, 2403]);
var i = ["d83cdffb", "d83cdffc", "d83cdffd", "d83cdffe", "d83cdfff"];
function setUpNode(t, e) {
var i = createTag("span");
i.setAttribute("aria-hidden", !0), i.style.fontFamily = e;
var s = createTag("span");
s.innerText = "giItT1WQy@!-/#", i.style.position = "absolute", i.style.left = "-10000px", i.style.top = "-10000px", i.style.fontSize = "300px", i.style.fontVariant = "normal", i.style.fontStyle = "normal", i.style.fontWeight = "normal", i.style.letterSpacing = "0", i.appendChild(s), document.body.appendChild(i);
var a = s.offsetWidth;
return s.style.fontFamily = function(t) {
var e, i = t.split(","),
s = i.length,
a = [];
for (e = 0; e < s; e += 1) "sans-serif" !== i[e] && "monospace" !== i[e] && a.push(i[e]);
return a.join(",")
}(t) + ", " + e, {
node: s,
w: a,
parent: i
}
}
function createHelper(t, e) {
var i, s = document.body && e ? "svg" : "canvas",
a = getFontProperties(t);
if ("svg" === s) {
var r = createNS("text");
r.style.fontSize = "100px", r.setAttribute("font-family", t.fFamily), r.setAttribute("font-style", a.style), r.setAttribute("font-weight", a.weight), r.textContent = "1", t.fClass ? (r.style.fontFamily = "inherit", r.setAttribute("class", t.fClass)) : r.style.fontFamily = t.fFamily, e.appendChild(r), i = r
} else {
var n = new OffscreenCanvas(500, 500).getContext("2d");
n.font = a.style + " " + a.weight + " 100px " + t.fFamily, i = n
}
return {
measureText: function(t) {
return "svg" === s ? (i.textContent = t, i.getComputedTextLength()) : i.measureText(t).width
}
}
}
function getCodePoint(t) {
var e = 0,
i = t.charCodeAt(0);
if (i >= 55296 && i <= 56319) {
var s = t.charCodeAt(1);
s >= 56320 && s <= 57343 && (e = (i - 55296) * 1024 + s - 56320 + 65536)
}
return e
}
function isRegionalCode(t) {
var e = getCodePoint(t);
return e >= 127462 && e <= 127487
}
var Font = function() {
this.fonts = [], this.chars = null, this.typekitLoaded = 0, this.isLoaded = !1, this._warned = !1, this.initTime = Date.now(), this.setIsLoadedBinded = this.setIsLoaded.bind(this), this.checkLoadedFontsBinded = this.checkLoadedFonts.bind(this)
};
return Font.isModifier = function(t, e) {
var s = t.toString(16) + e.toString(16);
return -1 !== i.indexOf(s)
}, Font.isZeroWidthJoiner = function(t) {
return 8205 === t
}, Font.isFlagEmoji = function(t) {
return isRegionalCode(t.substr(0, 2)) && isRegionalCode(t.substr(2, 2))
}, Font.isRegionalCode = isRegionalCode, Font.isCombinedCharacter = function(t) {
return -1 !== e.indexOf(t)
}, Font.isRegionalFlag = function(t, e) {
var i = getCodePoint(t.substr(e, 2));
if (127988 !== i) return !1;
var s = 0;
for (e += 2; s < 5;) {
if ((i = getCodePoint(t.substr(e, 2))) < 917601 || i > 917626) return !1;
s += 1, e += 2
}
return 917631 === getCodePoint(t.substr(e, 2))
}, Font.isVariationSelector = function(t) {
return 65039 === t
}, Font.BLACK_FLAG_CODE_POINT = 127988, Font.prototype = {
addChars: function(t) {
if (t) {
this.chars || (this.chars = []);
var e, i, s, a = t.length,
r = this.chars.length;
for (e = 0; e < a; e += 1) {
for (i = 0, s = !1; i < r;) this.chars[i].style === t[e].style && this.chars[i].fFamily === t[e].fFamily && this.chars[i].ch === t[e].ch && (s = !0), i += 1;
s || (this.chars.push(t[e]), r += 1)
}
}
},
addFonts: function(t, e) {
if (!t) {
this.isLoaded = !0;
return
}
if (this.chars) {
this.isLoaded = !0, this.fonts = t.list;
return
}
if (!document.body) {
this.isLoaded = !0, t.list.forEach(function(t) {
t.helper = createHelper(t), t.cache = {}
}), this.fonts = t.list;
return
}
var i = t.list,
s = i.length,
a = s;
for (r = 0; r < s; r += 1) {
var r, n, o, h = !0;
if (i[r].loaded = !1, i[r].monoCase = setUpNode(i[r].fFamily, "monospace"), i[r].sansCase = setUpNode(i[r].fFamily, "sans-serif"), i[r].fPath) {
if ("p" === i[r].fOrigin || 3 === i[r].origin) {
if ((n = document.querySelectorAll('style[f-forigin="p"][f-family="' + i[r].fFamily + '"], style[f-origin="3"][f-family="' + i[r].fFamily + '"]')).length > 0 && (h = !1), h) {
var l = createTag("style");
l.setAttribute("f-forigin", i[r].fOrigin), l.setAttribute("f-origin", i[r].origin), l.setAttribute("f-family", i[r].fFamily), l.type = "text/css", l.innerText = "@font-face {font-family: " + i[r].fFamily + "; font-style: normal; src: url('" + i[r].fPath + "');}", e.appendChild(l)
}
} else if ("g" === i[r].fOrigin || 1 === i[r].origin) {
for (o = 0, n = document.querySelectorAll('link[f-forigin="g"], link[f-origin="1"]'); o < n.length; o += 1) - 1 !== n[o].href.indexOf(i[r].fPath) && (h = !1);
if (h) {
var p = createTag("link");
p.setAttribute("f-forigin", i[r].fOrigin), p.setAttribute("f-origin", i[r].origin), p.type = "text/css", p.rel = "stylesheet", p.href = i[r].fPath, document.body.appendChild(p)
}
} else if ("t" === i[r].fOrigin || 2 === i[r].origin) {
for (o = 0, n = document.querySelectorAll('script[f-forigin="t"], script[f-origin="2"]'); o < n.length; o += 1) i[r].fPath === n[o].src && (h = !1);
if (h) {
var f = createTag("link");
f.setAttribute("f-forigin", i[r].fOrigin), f.setAttribute("f-origin", i[r].origin), f.setAttribute("rel", "stylesheet"), f.setAttribute("href", i[r].fPath), e.appendChild(f)
}
}
} else i[r].loaded = !0, a -= 1;
i[r].helper = createHelper(i[r], e), i[r].cache = {}, this.fonts.push(i[r])
}
0 === a ? this.isLoaded = !0 : setTimeout(this.checkLoadedFonts.bind(this), 100)
},
getCharData: function(e, i, s) {
for (var a = 0, r = this.chars.length; a < r;) {
if (this.chars[a].ch === e && this.chars[a].style === i && this.chars[a].fFamily === s) return this.chars[a];
a += 1
}
return ("string" == typeof e && 13 !== e.charCodeAt(0) || !e) && console && console.warn && !this._warned && (this._warned = !0, console.warn("Missing character from exported characters list: ", e, i, s)), t
},
getFontByName: function(t) {
for (var e = 0, i = this.fonts.length; e < i;) {
if (this.fonts[e].fName === t) return this.fonts[e];
e += 1
}
return this.fonts[0]
},
measureText: function(t, e, i) {
var s = this.getFontByName(e);
if (!s.cache[t]) {
var a = s.helper;
if (" " === t) {
var r = a.measureText("|" + t + "|"),
n = a.measureText("||");
s.cache[t] = (r - n) / 100
} else s.cache[t] = a.measureText(t) / 100
}
return s.cache[t] * i
},
checkLoadedFonts: function() {
var t, e, i, s = this.fonts.length,
a = s;
for (t = 0; t < s; t += 1) this.fonts[t].loaded ? a -= 1 : "n" === this.fonts[t].fOrigin || 0 === this.fonts[t].origin ? this.fonts[t].loaded = !0 : (e = this.fonts[t].monoCase.node, i = this.fonts[t].monoCase.w, e.offsetWidth !== i ? (a -= 1, this.fonts[t].loaded = !0) : (e = this.fonts[t].sansCase.node, i = this.fonts[t].sansCase.w, e.offsetWidth !== i && (a -= 1, this.fonts[t].loaded = !0)), this.fonts[t].loaded && (this.fonts[t].sansCase.parent.parentNode.removeChild(this.fonts[t].sansCase.parent), this.fonts[t].monoCase.parent.parentNode.removeChild(this.fonts[t].monoCase.parent)));
0 !== a && Date.now() - this.initTime < 5e3 ? setTimeout(this.checkLoadedFontsBinded, 20) : setTimeout(this.setIsLoadedBinded, 10)
},
setIsLoaded: function() {
this.isLoaded = !0
}
}, Font
}();
function SlotManager(t) {
this.animationData = t
}
function RenderableElement() {}
SlotManager.prototype.getProp = function(t) {
return this.animationData.slots && this.animationData.slots[t.sid] ? Object.assign(t, this.animationData.slots[t.sid].p) : t
}, RenderableElement.prototype = {
initRenderable: function() {
this.isInRange = !1, this.hidden = !1, this.isTransparent = !1, this.renderableComponents = []
},
addRenderableComponent: function(t) {
-1 === this.renderableComponents.indexOf(t) && this.renderableComponents.push(t)
},
removeRenderableComponent: function(t) {
-1 !== this.renderableComponents.indexOf(t) && this.renderableComponents.splice(this.renderableComponents.indexOf(t), 1)
},
prepareRenderableFrame: function(t) {
this.checkLayerLimits(t)
},
checkTransparency: function() {
this.finalTransform.mProp.o.v <= 0 ? !this.isTransparent && this.globalData.renderConfig.hideOnTransparent && (this.isTransparent = !0, this.hide()) : this.isTransparent && (this.isTransparent = !1, this.show())
},
checkLayerLimits: function(t) {
this.data.ip - this.data.st <= t && this.data.op - this.data.st > t ? !0 !== this.isInRange && (this.globalData._mdf = !0, this._mdf = !0, this.isInRange = !0, this.show()) : !1 !== this.isInRange && (this.globalData._mdf = !0, this.isInRange = !1, this.hide())
},
renderRenderable: function() {
var t, e = this.renderableComponents.length;
for (t = 0; t < e; t += 1) this.renderableComponents[t].renderFrame(this._isFirstFrame)
},
sourceRectAtTime: function() {
return {
top: 0,
left: 0,
width: 100,
height: 100
}
},
getLayerSize: function() {
return 5 === this.data.ty ? {
w: this.data.textData.width,
h: this.data.textData.height
} : {
w: this.data.width,
h: this.data.height
}
}
};
var ts = (l = {
0: "source-over",
1: "multiply",
2: "screen",
3: "overlay",
4: "darken",
5: "lighten",
6: "color-dodge",
7: "color-burn",
8: "hard-light",
9: "soft-light",
10: "difference",
11: "exclusion",
12: "hue",
13: "saturation",
14: "color",
15: "luminosity"
}, function(t) {
return l[t] || ""
});
function SliderEffect(t, e, i) {
this.p = N.getProp(e, t.v, 0, 0, i)
}
function AngleEffect(t, e, i) {
this.p = N.getProp(e, t.v, 0, 0, i)
}
function ColorEffect(t, e, i) {
this.p = N.getProp(e, t.v, 1, 0, i)
}
function PointEffect(t, e, i) {
this.p = N.getProp(e, t.v, 1, 0, i)
}
function LayerIndexEffect(t, e, i) {
this.p = N.getProp(e, t.v, 0, 0, i)
}
function MaskIndexEffect(t, e, i) {
this.p = N.getProp(e, t.v, 0, 0, i)
}
function CheckboxEffect(t, e, i) {
this.p = N.getProp(e, t.v, 0, 0, i)
}
function NoValueEffect() {
this.p = {}
}
function EffectsManager(t, e) {
var i, s, a = t.ef || [];
this.effectElements = [];
var r = a.length;
for (i = 0; i < r; i += 1) s = new GroupEffect(a[i], e), this.effectElements.push(s)
}
function GroupEffect(t, e) {
this.init(t, e)
}
function BaseElement() {}
function FrameElement() {}
function FootageElement(t, e, i) {
this.initFrame(), this.initRenderable(), this.assetData = e.getAssetData(t.refId), this.footageData = e.imageLoader.getAsset(this.assetData), this.initBaseData(t, e, i)
}
function AudioElement(t, e, i) {
this.initFrame(), this.initRenderable(), this.assetData = e.getAssetData(t.refId), this.initBaseData(t, e, i), this._isPlaying = !1, this._canPlay = !1;
var s = this.globalData.getAssetsPath(this.assetData);
this.audio = this.globalData.audioController.createAudio(s), this._currentTime = 0, this.globalData.audioController.addAudio(this), this._volumeMultiplier = 1, this._volume = 1, this._previousVolume = null, this.tm = t.tm ? N.getProp(this, t.tm, 0, e.frameRate, this) : {
_placeholder: !0
}, this.lv = N.getProp(this, t.au && t.au.lv ? t.au.lv : {
k: [100]
}, 1, .01, this)
}
function BaseRenderer() {}
extendPrototype([DynamicPropertyContainer], GroupEffect), GroupEffect.prototype.getValue = GroupEffect.prototype.iterateDynamicProperties, GroupEffect.prototype.init = function(t, e) {
this.data = t, this.effectElements = [], this.initDynamicPropertyContainer(e);
var i, s, a = this.data.ef.length,
r = this.data.ef;
for (i = 0; i < a; i += 1) {
switch (s = null, r[i].ty) {
case 0:
s = new SliderEffect(r[i], e, this);
break;
case 1:
s = new AngleEffect(r[i], e, this);
break;
case 2:
s = new ColorEffect(r[i], e, this);
break;
case 3:
s = new PointEffect(r[i], e, this);
break;
case 4:
case 7:
s = new CheckboxEffect(r[i], e, this);
break;
case 10:
s = new LayerIndexEffect(r[i], e, this);
break;
case 11:
s = new MaskIndexEffect(r[i], e, this);
break;
case 5:
s = new EffectsManager(r[i], e, this);
break;
default:
s = new NoValueEffect(r[i], e, this)
}
s && this.effectElements.push(s)
}
}, BaseElement.prototype = {
checkMasks: function() {
if (!this.data.hasMask) return !1;
for (var t = 0, e = this.data.masksProperties.length; t < e;) {
if ("n" !== this.data.masksProperties[t].mode && !1 !== this.data.masksProperties[t].cl) return !0;
t += 1
}
return !1
},
initExpressions: function() {
var t = getExpressionInterfaces();
if (t) {
var e = t("layer"),
i = t("effects"),
s = t("shape"),
a = t("text"),
r = t("comp");
this.layerInterface = e(this), this.data.hasMask && this.maskManager && this.layerInterface.registerMaskInterface(this.maskManager);
var n = i.createEffectsInterface(this, this.layerInterface);
this.layerInterface.registerEffectsInterface(n), 0 === this.data.ty || this.data.xt ? this.compInterface = r(this) : 4 === this.data.ty ? (this.layerInterface.shapeInterface = s(this.shapesData, this.itemsData, this.layerInterface), this.layerInterface.content = this.layerInterface.shapeInterface) : 5 === this.data.ty && (this.layerInterface.textInterface = a(this), this.layerInterface.text = this.layerInterface.textInterface)
}
},
setBlendMode: function() {
var t = ts(this.data.bm);
(this.baseElement || this.layerElement).style["mix-blend-mode"] = t
},
initBaseData: function(t, e, i) {
this.globalData = e, this.comp = i, this.data = t, this.layerId = D(), this.data.sr || (this.data.sr = 1), this.effectsManager = new EffectsManager(this.data, this, this.dynamicProperties)
},
getType: function() {
return this.type
},
sourceRectAtTime: function() {}
}, FrameElement.prototype = {
initFrame: function() {
this._isFirstFrame = !1, this.dynamicProperties = [], this._mdf = !1
},
prepareProperties: function(t, e) {
var i, s = this.dynamicProperties.length;
for (i = 0; i < s; i += 1)(e || this._isParent && "transform" === this.dynamicProperties[i].propType) && (this.dynamicProperties[i].getValue(), this.dynamicProperties[i]._mdf && (this.globalData._mdf = !0, this._mdf = !0))
},
addDynamicProperty: function(t) {
-1 === this.dynamicProperties.indexOf(t) && this.dynamicProperties.push(t)
}
}, FootageElement.prototype.prepareFrame = function() {}, extendPrototype([RenderableElement, BaseElement, FrameElement], FootageElement), FootageElement.prototype.getBaseElement = function() {
return null
}, FootageElement.prototype.renderFrame = function() {}, FootageElement.prototype.destroy = function() {}, FootageElement.prototype.initExpressions = function() {
var t = getExpressionInterfaces();
if (t) {
var e = t("footage");
this.layerInterface = e(this)
}
}, FootageElement.prototype.getFootageData = function() {
return this.footageData
}, AudioElement.prototype.prepareFrame = function(t) {
if (this.prepareRenderableFrame(t, !0), this.prepareProperties(t, !0), this.tm._placeholder) this._currentTime = t / this.data.sr;
else {
var e = this.tm.v;
this._currentTime = e
}
this._volume = this.lv.v[0];
var i = this._volume * this._volumeMultiplier;
this._previousVolume !== i && (this._previousVolume = i, this.audio.volume(i))
}, extendPrototype([RenderableElement, BaseElement, FrameElement], AudioElement), AudioElement.prototype.renderFrame = function() {
this.isInRange && this._canPlay && (this._isPlaying ? (!this.audio.playing() || Math.abs(this._currentTime / this.globalData.frameRate - this.audio.seek()) > .1) && this.audio.seek(this._currentTime / this.globalData.frameRate) : (this.audio.play(), this.audio.seek(this._currentTime / this.globalData.frameRate), this._isPlaying = !0))
}, AudioElement.prototype.show = function() {}, AudioElement.prototype.hide = function() {
this.audio.pause(), this._isPlaying = !1
}, AudioElement.prototype.pause = function() {
this.audio.pause(), this._isPlaying = !1, this._canPlay = !1
}, AudioElement.prototype.resume = function() {
this._canPlay = !0
}, AudioElement.prototype.setRate = function(t) {
this.audio.rate(t)
}, AudioElement.prototype.volume = function(t) {
this._volumeMultiplier = t, this._previousVolume = t * this._volume, this.audio.volume(this._previousVolume)
}, AudioElement.prototype.getBaseElement = function() {
return null
}, AudioElement.prototype.destroy = function() {}, AudioElement.prototype.sourceRectAtTime = function() {}, AudioElement.prototype.initExpressions = function() {}, BaseRenderer.prototype.checkLayers = function(t) {
var e, i, s = this.layers.length;
for (this.completeLayers = !0, e = s - 1; e >= 0; e -= 1) !this.elements[e] && (i = this.layers[e]).ip - i.st <= t - this.layers[e].st && i.op - i.st > t - this.layers[e].st && this.buildItem(e), this.completeLayers = !!this.elements[e] && this.completeLayers;
this.checkPendingElements()
}, BaseRenderer.prototype.createItem = function(t) {
switch (t.ty) {
case 2:
return this.createImage(t);
case 0:
return this.createComp(t);
case 1:
return this.createSolid(t);
case 3:
default:
return this.createNull(t);
case 4:
return this.createShape(t);
case 5:
return this.createText(t);
case 6:
return this.createAudio(t);
case 13:
return this.createCamera(t);
case 15:
return this.createFootage(t)
}
}, BaseRenderer.prototype.createCamera = function() {
throw Error("You're using a 3d camera. Try the html renderer.")
}, BaseRenderer.prototype.createAudio = function(t) {
return new AudioElement(t, this.globalData, this)
}, BaseRenderer.prototype.createFootage = function(t) {
return new FootageElement(t, this.globalData, this)
}, BaseRenderer.prototype.buildAllItems = function() {
var t, e = this.layers.length;
for (t = 0; t < e; t += 1) this.buildItem(t);
this.checkPendingElements()
}, BaseRenderer.prototype.includeLayers = function(t) {
this.completeLayers = !1;
var e, i, s = t.length,
a = this.layers.length;
for (e = 0; e < s; e += 1)
for (i = 0; i < a;) {
if (this.layers[i].id === t[e].id) {
this.layers[i] = t[e];
break
}
i += 1
}
}, BaseRenderer.prototype.setProjectInterface = function(t) {
this.globalData.projectInterface = t
}, BaseRenderer.prototype.initItems = function() {
this.globalData.progressiveLoad || this.buildAllItems()
}, BaseRenderer.prototype.buildElementParenting = function(t, e, i) {
for (var s = this.elements, a = this.layers, r = 0, n = a.length; r < n;) a[r].ind == e && (s[r] && !0 !== s[r] ? (i.push(s[r]), s[r].setAsParent(), void 0 !== a[r].parent ? this.buildElementParenting(t, a[r].parent, i) : t.setHierarchy(i)) : (this.buildItem(r), this.addPendingElement(t))), r += 1
}, BaseRenderer.prototype.addPendingElement = function(t) {
this.pendingElements.push(t)
}, BaseRenderer.prototype.searchExtraCompositions = function(t) {
var e, i = t.length;
for (e = 0; e < i; e += 1)
if (t[e].xt) {
var s = this.createComp(t[e]);
s.initExpressions(), this.globalData.projectInterface.registerComposition(s)
}
}, BaseRenderer.prototype.getElementById = function(t) {
var e, i = this.elements.length;
for (e = 0; e < i; e += 1)
if (this.elements[e].data.ind === t) return this.elements[e];
return null
}, BaseRenderer.prototype.getElementByPath = function(t) {
var e = t.shift();
if ("number" == typeof e) i = this.elements[e];
else {
var i, s, a = this.elements.length;
for (s = 0; s < a; s += 1)
if (this.elements[s].data.nm === e) {
i = this.elements[s];
break
}
}
return 0 === t.length ? i : i.getElementByPath(t)
}, BaseRenderer.prototype.setupGlobalData = function(t, e) {
this.globalData.fontManager = new ti, this.globalData.slotManager = new SlotManager(t), this.globalData.fontManager.addChars(t.chars), this.globalData.fontManager.addFonts(t.fonts, e), this.globalData.getAssetData = this.animationItem.getAssetData.bind(this.animationItem), this.globalData.getAssetsPath = this.animationItem.getAssetsPath.bind(this.animationItem), this.globalData.imageLoader = this.animationItem.imagePreloader, this.globalData.audioController = this.animationItem.audioController, this.globalData.frameId = 0, this.globalData.frameRate = t.fr, this.globalData.nm = t.nm, this.globalData.compSize = {
w: t.w,
h: t.h
}
};
var ta = {
TRANSFORM_EFFECT: "transformEFfect"
};
function TransformElement() {}
function MaskElement(t, e, i) {
this.data = t, this.element = e, this.globalData = i, this.storedData = [], this.masksProperties = this.data.masksProperties || [], this.maskElement = null;
var s = this.globalData.defs,
a = this.masksProperties ? this.masksProperties.length : 0;
this.viewData = createSizedArray(a), this.solidPath = "";
var r = this.masksProperties,
n = 0,
o = [],
h = D(),
l = "clipPath",
p = "clip-path";
for (f = 0; f < a; f += 1)
if (("a" !== r[f].mode && "n" !== r[f].mode || r[f].inv || 100 !== r[f].o.k || r[f].o.x) && (l = "mask", p = "mask"), ("s" === r[f].mode || "i" === r[f].mode) && 0 === n ? ((u = createNS("rect")).setAttribute("fill", "#ffffff"), u.setAttribute("width", this.element.comp.data.w || 0), u.setAttribute("height", this.element.comp.data.h || 0), o.push(u)) : u = null, m = createNS("path"), "n" === r[f].mode) this.viewData[f] = {
op: N.getProp(this.element, r[f].o, 0, .01, this.element),
prop: j.getShapeProp(this.element, r[f], 3),
elem: m,
lastPath: ""
}, s.appendChild(m);
else {
if (n += 1, m.setAttribute("fill", "s" === r[f].mode ? "#000000" : "#ffffff"), m.setAttribute("clip-rule", "nonzero"), 0 !== r[f].x.k ? (l = "mask", p = "mask", v = N.getProp(this.element, r[f].x, 0, null, this.element), S = D(), (g = createNS("filter")).setAttribute("id", S), (y = createNS("feMorphology")).setAttribute("operator", "erode"), y.setAttribute("in", "SourceGraphic"), y.setAttribute("radius", "0"), g.appendChild(y), s.appendChild(g), m.setAttribute("stroke", "s" === r[f].mode ? "#000000" : "#ffffff")) : (y = null, v = null), this.storedData[f] = {
elem: m,
x: v,
expan: y,
lastPath: "",
lastOperator: "",
filterId: S,
lastRadius: 0
}, "i" === r[f].mode) {
c = o.length;
var f, m, d, c, u, g, y, v, S, P = createNS("g");
for (d = 0; d < c; d += 1) P.appendChild(o[d]);
var b = createNS("mask");
b.setAttribute("mask-type", "alpha"), b.setAttribute("id", h + "_" + n), b.appendChild(m), s.appendChild(b), P.setAttribute("mask", "url(" + getLocationHref() + "#" + h + "_" + n + ")"), o.length = 0, o.push(P)
} else o.push(m);
r[f].inv && !this.solidPath && (this.solidPath = this.createLayerSolidPath()), this.viewData[f] = {
elem: m,
lastPath: "",
op: N.getProp(this.element, r[f].o, 0, .01, this.element),
prop: j.getShapeProp(this.element, r[f], 3),
invRect: u
}, this.viewData[f].prop.k || this.drawPath(r[f], this.viewData[f].prop.v, this.viewData[f])
} for (f = 0, this.maskElement = createNS(l), a = o.length; f < a; f += 1) this.maskElement.appendChild(o[f]);
n > 0 && (this.maskElement.setAttribute("id", h), this.element.maskedElement.setAttribute(p, "url(" + getLocationHref() + "#" + h + ")"), s.appendChild(this.maskElement)), this.viewData.length && this.element.addRenderableComponent(this)
}
TransformElement.prototype = {
initTransform: function() {
var t = new H;
this.finalTransform = {
mProp: this.data.ks ? te.getTransformProperty(this, this.data.ks, this) : {
o: 0
},
_matMdf: !1,
_localMatMdf: !1,
_opMdf: !1,
mat: t,
localMat: t,
localOpacity: 1
}, this.data.ao && (this.finalTransform.mProp.autoOriented = !0), this.data.ty
},
renderTransform: function() {
if (this.finalTransform._opMdf = this.finalTransform.mProp.o._mdf || this._isFirstFrame, this.finalTransform._matMdf = this.finalTransform.mProp._mdf || this._isFirstFrame, this.hierarchy) {
var t, e = this.finalTransform.mat,
i = 0,
s = this.hierarchy.length;
if (!this.finalTransform._matMdf)
for (; i < s;) {
if (this.hierarchy[i].finalTransform.mProp._mdf) {
this.finalTransform._matMdf = !0;
break
}
i += 1
}
if (this.finalTransform._matMdf)
for (t = this.finalTransform.mProp.v.props, e.cloneFromProps(t), i = 0; i < s; i += 1) e.multiply(this.hierarchy[i].finalTransform.mProp.v)
}
this.finalTransform._matMdf && (this.finalTransform._localMatMdf = this.finalTransform._matMdf), this.finalTransform._opMdf && (this.finalTransform.localOpacity = this.finalTransform.mProp.o.v)
},
renderLocalTransform: function() {
if (this.localTransforms) {
var t = 0,
e = this.localTransforms.length;
if (this.finalTransform._localMatMdf = this.finalTransform._matMdf, !this.finalTransform._localMatMdf || !this.finalTransform._opMdf)
for (; t < e;) this.localTransforms[t]._mdf && (this.finalTransform._localMatMdf = !0), this.localTransforms[t]._opMdf && !this.finalTransform._opMdf && (this.finalTransform.localOpacity = this.finalTransform.mProp.o.v, this.finalTransform._opMdf = !0), t += 1;
if (this.finalTransform._localMatMdf) {
var i = this.finalTransform.localMat;
for (this.localTransforms[0].matrix.clone(i), t = 1; t < e; t += 1) {
var s = this.localTransforms[t].matrix;
i.multiply(s)
}
i.multiply(this.finalTransform.mat)
}
if (this.finalTransform._opMdf) {
var a = this.finalTransform.localOpacity;
for (t = 0; t < e; t += 1) a *= .01 * this.localTransforms[t].opacity;
this.finalTransform.localOpacity = a
}
}
},
searchEffectTransforms: function() {
if (this.renderableEffectsManager) {
var t = this.renderableEffectsManager.getEffects(ta.TRANSFORM_EFFECT);
if (t.length) {
this.localTransforms = [], this.finalTransform.localMat = new H;
var e = 0,
i = t.length;
for (e = 0; e < i; e += 1) this.localTransforms.push(t[e])
}
}
},
globalToLocal: function(t) {
var e, i, s = [];
s.push(this.finalTransform);
for (var a = !0, r = this.comp; a;) r.finalTransform ? (r.data.hasMask && s.splice(0, 0, r.finalTransform), r = r.comp) : a = !1;
var n = s.length;
for (e = 0; e < n; e += 1) i = s[e].mat.applyToPointArray(0, 0, 0), t = [t[0] - i[0], t[1] - i[1], 0];
return t
},
mHelper: new H
}, MaskElement.prototype.getMaskProperty = function(t) {
return this.viewData[t].prop
}, MaskElement.prototype.renderFrame = function(t) {
var e, i = this.element.finalTransform.mat,
s = this.masksProperties.length;
for (e = 0; e < s; e += 1)
if ((this.viewData[e].prop._mdf || t) && this.drawPath(this.masksProperties[e], this.viewData[e].prop.v, this.viewData[e]), (this.viewData[e].op._mdf || t) && this.viewData[e].elem.setAttribute("fill-opacity", this.viewData[e].op.v), "n" !== this.masksProperties[e].mode && (this.viewData[e].invRect && (this.element.finalTransform.mProp._mdf || t) && this.viewData[e].invRect.setAttribute("transform", i.getInverseMatrix().to2dCSS()), this.storedData[e].x && (this.storedData[e].x._mdf || t))) {
var a = this.storedData[e].expan;
this.storedData[e].x.v < 0 ? ("erode" !== this.storedData[e].lastOperator && (this.storedData[e].lastOperator = "erode", this.storedData[e].elem.setAttribute("filter", "url(" + getLocationHref() + "#" + this.storedData[e].filterId + ")")), a.setAttribute("radius", -this.storedData[e].x.v)) : ("dilate" !== this.storedData[e].lastOperator && (this.storedData[e].lastOperator = "dilate", this.storedData[e].elem.setAttribute("filter", null)), this.storedData[e].elem.setAttribute("stroke-width", 2 * this.storedData[e].x.v))
}
}, MaskElement.prototype.getMaskelement = function() {
return this.maskElement
}, MaskElement.prototype.createLayerSolidPath = function() {
return "M0,0 " + (" h" + this.globalData.compSize.w + " v" + this.globalData.compSize.h + " h-" + this.globalData.compSize.w + " v-" + this.globalData.compSize.h) + " "
}, MaskElement.prototype.drawPath = function(t, e, i) {
var s, a, r = " M" + e.v[0][0] + "," + e.v[0][1];
for (s = 1, a = e._length; s < a; s += 1) r += " C" + e.o[s - 1][0] + "," + e.o[s - 1][1] + " " + e.i[s][0] + "," + e.i[s][1] + " " + e.v[s][0] + "," + e.v[s][1];
if (e.c && a > 1 && (r += " C" + e.o[s - 1][0] + "," + e.o[s - 1][1] + " " + e.i[0][0] + "," + e.i[0][1] + " " + e.v[0][0] + "," + e.v[0][1]), i.lastPath !== r) {
var n = "";
i.elem && (e.c && (n = t.inv ? this.solidPath + r : r), i.elem.setAttribute("d", n)), i.lastPath = r
}
}, MaskElement.prototype.destroy = function() {
this.element = null, this.globalData = null, this.maskElement = null, this.data = null, this.masksProperties = null
};
var tr = ((p = {}).createFilter = function(t, e) {
var i = createNS("filter");
return i.setAttribute("id", t), !0 !== e && (i.setAttribute("filterUnits", "objectBoundingBox"), i.setAttribute("x", "0%"), i.setAttribute("y", "0%"), i.setAttribute("width", "100%"), i.setAttribute("height", "100%")), i
}, p.createAlphaToLuminanceFilter = function() {
var t = createNS("feColorMatrix");
return t.setAttribute("type", "matrix"), t.setAttribute("color-interpolation-filters", "sRGB"), t.setAttribute("values", "0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1"), t
}, p),
tn = (f = {
maskType: !0,
svgLumaHidden: !0,
offscreenCanvas: "undefined" != typeof OffscreenCanvas
}, (/MSIE 10/i.test(navigator.userAgent) || /MSIE 9/i.test(navigator.userAgent) || /rv:11.0/i.test(navigator.userAgent) || /Edge\/\d./i.test(navigator.userAgent)) && (f.maskType = !1), /firefox/i.test(navigator.userAgent) && (f.svgLumaHidden = !1), f),
to = {},
th = "filter_result_";
function SVGEffects(t) {
var e, i, s = "SourceGraphic",
a = t.data.ef ? t.data.ef.length : 0,
r = D(),
n = tr.createFilter(r, !0),
o = 0;
for (e = 0, this.filters = []; e < a; e += 1) {
i = null;
var h = t.data.ef[e].ty;
to[h] && (i = new to[h].effect(n, t.effectsManager.effectElements[e], t, th + o, s), s = th + o, to[h].countsAsEffect && (o += 1)), i && this.filters.push(i)
}
o && (t.globalData.defs.appendChild(n), t.layerElement.setAttribute("filter", "url(" + getLocationHref() + "#" + r + ")")), this.filters.length && t.addRenderableComponent(this)
}
function SVGBaseElement() {}
function HierarchyElement() {}
function RenderableDOMElement() {}
function IImageElement(t, e, i) {
this.assetData = e.getAssetData(t.refId), this.assetData && this.assetData.sid && (this.assetData = e.slotManager.getProp(this.assetData)), this.initElement(t, e, i), this.sourceRect = {
top: 0,
left: 0,
width: this.assetData.w,
height: this.assetData.h
}
}
function ProcessedElement(t, e) {
this.elem = t, this.pos = e
}
function IShapeElement() {}
SVGEffects.prototype.renderFrame = function(t) {
var e, i = this.filters.length;
for (e = 0; e < i; e += 1) this.filters[e].renderFrame(t)
}, SVGEffects.prototype.getEffects = function(t) {
var e, i = this.filters.length,
s = [];
for (e = 0; e < i; e += 1) this.filters[e].type === t && s.push(this.filters[e]);
return s
}, SVGBaseElement.prototype = {
initRendererElement: function() {
this.layerElement = createNS("g")
},
createContainerElements: function() {
this.matteElement = createNS("g"), this.transformedElement = this.layerElement, this.maskedElement = this.layerElement, this._sizeChanged = !1;
var t = null;
if (this.data.td) {
this.matteMasks = {};
var e = createNS("g");
e.setAttribute("id", this.layerId), e.appendChild(this.layerElement), t = e, this.globalData.defs.appendChild(e)
} else this.data.tt ? (this.matteElement.appendChild(this.layerElement), t = this.matteElement, this.baseElement = this.matteElement) : this.baseElement = this.layerElement;
if (this.data.ln && this.layerElement.setAttribute("id", this.data.ln), this.data.cl && this.layerElement.setAttribute("class", this.data.cl), 0 === this.data.ty && !this.data.hd) {
var i = createNS("clipPath"),
s = createNS("path");
s.setAttribute("d", "M0,0 L" + this.data.w + ",0 L" + this.data.w + "," + this.data.h + " L0," + this.data.h + "z");
var a = D();
if (i.setAttribute("id", a), i.appendChild(s), this.globalData.defs.appendChild(i), this.checkMasks()) {
var r = createNS("g");
r.setAttribute("clip-path", "url(" + getLocationHref() + "#" + a + ")"), r.appendChild(this.layerElement), this.transformedElement = r, t ? t.appendChild(this.transformedElement) : this.baseElement = this.transformedElement
} else this.layerElement.setAttribute("clip-path", "url(" + getLocationHref() + "#" + a + ")")
}
0 !== this.data.bm && this.setBlendMode()
},
renderElement: function() {
this.finalTransform._localMatMdf && this.transformedElement.setAttribute("transform", this.finalTransform.localMat.to2dCSS()), this.finalTransform._opMdf && this.transformedElement.setAttribute("opacity", this.finalTransform.localOpacity)
},
destroyBaseElement: function() {
this.layerElement = null, this.matteElement = null, this.maskManager.destroy()
},
getBaseElement: function() {
return this.data.hd ? null : this.baseElement
},
createRenderableComponents: function() {
this.maskManager = new MaskElement(this.data, this, this.globalData), this.renderableEffectsManager = new SVGEffects(this), this.searchEffectTransforms()
},
getMatte: function(t) {
if (this.matteMasks || (this.matteMasks = {}), !this.matteMasks[t]) {
var e, i, s, a, r = this.layerId + "_" + t;
if (1 === t || 3 === t) {
var n = createNS("mask");
n.setAttribute("id", r), n.setAttribute("mask-type", 3 === t ? "luminance" : "alpha"), (s = createNS("use")).setAttributeNS("http://www.w3.org/1999/xlink", "href", "#" + this.layerId), n.appendChild(s), this.globalData.defs.appendChild(n), tn.maskType || 1 !== t || (n.setAttribute("mask-type", "luminance"), e = D(), i = tr.createFilter(e), this.globalData.defs.appendChild(i), i.appendChild(tr.createAlphaToLuminanceFilter()), (a = createNS("g")).appendChild(s), n.appendChild(a), a.setAttribute("filter", "url(" + getLocationHref() + "#" + e + ")"))
} else if (2 === t) {
var o = createNS("mask");
o.setAttribute("id", r), o.setAttribute("mask-type", "alpha");
var h = createNS("g");
o.appendChild(h), e = D(), i = tr.createFilter(e);
var l = createNS("feComponentTransfer");
l.setAttribute("in", "SourceGraphic"), i.appendChild(l);
var p = createNS("feFuncA");
p.setAttribute("type", "table"), p.setAttribute("tableValues", "1.0 0.0"), l.appendChild(p), this.globalData.defs.appendChild(i);
var f = createNS("rect");
f.setAttribute("width", this.comp.data.w), f.setAttribute("height", this.comp.data.h), f.setAttribute("x", "0"), f.setAttribute("y", "0"), f.setAttribute("fill", "#ffffff"), f.setAttribute("opacity", "0"), h.setAttribute("filter", "url(" + getLocationHref() + "#" + e + ")"), h.appendChild(f), (s = createNS("use")).setAttributeNS("http://www.w3.org/1999/xlink", "href", "#" + this.layerId), h.appendChild(s), tn.maskType || (o.setAttribute("mask-type", "luminance"), i.appendChild(tr.createAlphaToLuminanceFilter()), a = createNS("g"), h.appendChild(f), a.appendChild(this.layerElement), h.appendChild(a)), this.globalData.defs.appendChild(o)
}
this.matteMasks[t] = r
}
return this.matteMasks[t]
},
setMatte: function(t) {
this.matteElement && this.matteElement.setAttribute("mask", "url(" + getLocationHref() + "#" + t + ")")
}
}, HierarchyElement.prototype = {
initHierarchy: function() {
this.hierarchy = [], this._isParent = !1, this.checkParenting()
},
setHierarchy: function(t) {
this.hierarchy = t
},
setAsParent: function() {
this._isParent = !0
},
checkParenting: function() {
void 0 !== this.data.parent && this.comp.buildElementParenting(this, this.data.parent, [])
}
}, extendPrototype([RenderableElement, function(t) {
function ProxyFunction() {}
return ProxyFunction.prototype = t, ProxyFunction
}({
initElement: function(t, e, i) {
this.initFrame(), this.initBaseData(t, e, i), this.initTransform(t, e, i), this.initHierarchy(), this.initRenderable(), this.initRendererElement(), this.createContainerElements(), this.createRenderableComponents(), this.createContent(), this.hide()
},
hide: function() {
this.hidden || this.isInRange && !this.isTransparent || ((this.baseElement || this.layerElement).style.display = "none", this.hidden = !0)
},
show: function() {
this.isInRange && !this.isTransparent && (this.data.hd || ((this.baseElement || this.layerElement).style.display = "block"), this.hidden = !1, this._isFirstFrame = !0)
},
renderFrame: function() {
this.data.hd || this.hidden || (this.renderTransform(), this.renderRenderable(), this.renderLocalTransform(), this.renderElement(), this.renderInnerContent(), this._isFirstFrame && (this._isFirstFrame = !1))
},
renderInnerContent: function() {},
prepareFrame: function(t) {
this._mdf = !1, this.prepareRenderableFrame(t), this.prepareProperties(t, this.isInRange), this.checkTransparency()
},
destroy: function() {
this.innerElem = null, this.destroyBaseElement()
}
})], RenderableDOMElement), extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], IImageElement), IImageElement.prototype.createContent = function() {
var t = this.globalData.getAssetsPath(this.assetData);
this.innerElem = createNS("image"), this.innerElem.setAttribute("width", this.assetData.w + "px"), this.innerElem.setAttribute("height", this.assetData.h + "px"), this.innerElem.setAttribute("preserveAspectRatio", this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio), this.innerElem.setAttributeNS("http://www.w3.org/1999/xlink", "href", t), this.layerElement.appendChild(this.innerElem)
}, IImageElement.prototype.sourceRectAtTime = function() {
return this.sourceRect
}, IShapeElement.prototype = {
addShapeToModifiers: function(t) {
var e, i = this.shapeModifiers.length;
for (e = 0; e < i; e += 1) this.shapeModifiers[e].addShape(t)
},
isShapeInAnimatedModifiers: function(t) {
for (var e = this.shapeModifiers.length; 0 < e;)
if (this.shapeModifiers[0].isAnimatedWithShape(t)) return !0;
return !1
},
renderModifiers: function() {
if (this.shapeModifiers.length) {
var t, e = this.shapes.length;
for (t = 0; t < e; t += 1) this.shapes[t].sh.reset();
for (t = (e = this.shapeModifiers.length) - 1; t >= 0 && !this.shapeModifiers[t].processShapes(this._isFirstFrame); t -= 1);
}
},
searchProcessedElement: function(t) {
for (var e = this.processedElements, i = 0, s = e.length; i < s;) {
if (e[i].elem === t) return e[i].pos;
i += 1
}
return 0
},
addProcessedElement: function(t, e) {
for (var i = this.processedElements, s = i.length; s;)
if (i[s -= 1].elem === t) {
i[s].pos = e;
return
} i.push(new ProcessedElement(t, e))
},
prepareFrame: function(t) {
this.prepareRenderableFrame(t), this.prepareProperties(t, this.isInRange)
}
};
var tl = {
1: "butt",
2: "round",
3: "square"
},
tp = {
1: "miter",
2: "round",
3: "bevel"
};
function SVGShapeData(t, e, i) {
this.caches = [], this.styles = [], this.transformers = t, this.lStr = "", this.sh = i, this.lvl = e, this._isAnimated = !!i.k;
for (var s = 0, a = t.length; s < a;) {
if (t[s].mProps.dynamicProperties.length) {
this._isAnimated = !0;
break
}
s += 1
}
}
function SVGStyleData(t, e) {
this.data = t, this.type = t.ty, this.d = "", this.lvl = e, this._mdf = !1, this.closed = !0 === t.hd, this.pElem = createNS("path"), this.msElem = null
}
function DashProperty(t, e, i, s) {
this.elem = t, this.frameId = -1, this.dataProps = createSizedArray(e.length), this.renderer = i, this.k = !1, this.dashStr = "", this.dashArray = u("float32", e.length ? e.length - 1 : 0), this.dashoffset = u("float32", 1), this.initDynamicPropertyContainer(s);
var a, r, n = e.length || 0;
for (a = 0; a < n; a += 1) r = N.getProp(t, e[a].v, 0, 0, this), this.k = r.k || this.k, this.dataProps[a] = {
n: e[a].n,
p: r
};
this.k || this.getValue(!0), this._isAnimated = this.k
}
function SVGStrokeStyleData(t, e, i) {
this.initDynamicPropertyContainer(t), this.getValue = this.iterateDynamicProperties, this.o = N.getProp(t, e.o, 0, .01, this), this.w = N.getProp(t, e.w, 0, null, this), this.d = new DashProperty(t, e.d || {}, "svg", this), this.c = N.getProp(t, e.c, 1, 255, this), this.style = i, this._isAnimated = !!this._isAnimated
}
function SVGFillStyleData(t, e, i) {
this.initDynamicPropertyContainer(t), this.getValue = this.iterateDynamicProperties, this.o = N.getProp(t, e.o, 0, .01, this), this.c = N.getProp(t, e.c, 1, 255, this), this.style = i
}
function SVGNoStyleData(t, e, i) {
this.initDynamicPropertyContainer(t), this.getValue = this.iterateDynamicProperties, this.style = i
}
function GradientProperty(t, e, i) {
this.data = e, this.c = u("uint8c", 4 * e.p);
var s = e.k.k[0].s ? e.k.k[0].s.length - 4 * e.p : e.k.k.length - 4 * e.p;
this.o = u("float32", s), this._cmdf = !1, this._omdf = !1, this._collapsable = this.checkCollapsable(), this._hasOpacity = s, this.initDynamicPropertyContainer(i), this.prop = N.getProp(t, e.k, 1, null, this), this.k = this.prop.k, this.getValue(!0)
}
function SVGGradientFillStyleData(t, e, i) {
this.initDynamicPropertyContainer(t), this.getValue = this.iterateDynamicProperties, this.initGradientData(t, e, i)
}
function SVGGradientStrokeStyleData(t, e, i) {
this.initDynamicPropertyContainer(t), this.getValue = this.iterateDynamicProperties, this.w = N.getProp(t, e.w, 0, null, this), this.d = new DashProperty(t, e.d || {}, "svg", this), this.initGradientData(t, e, i), this._isAnimated = !!this._isAnimated
}
function ShapeGroupData() {
this.it = [], this.prevViewData = [], this.gr = createNS("g")
}
function SVGTransformData(t, e, i) {
this.transform = {
mProps: t,
op: e,
container: i
}, this.elements = [], this._isAnimated = this.transform.mProps.dynamicProperties.length || this.transform.op.effectsSequence.length
}
SVGShapeData.prototype.setAsAnimated = function() {
this._isAnimated = !0
}, SVGStyleData.prototype.reset = function() {
this.d = "", this._mdf = !1
}, DashProperty.prototype.getValue = function(t) {
if ((this.elem.globalData.frameId !== this.frameId || t) && (this.frameId = this.elem.globalData.frameId, this.iterateDynamicProperties(), this._mdf = this._mdf || t, this._mdf)) {
var e = 0,
i = this.dataProps.length;
for ("svg" === this.renderer && (this.dashStr = ""), e = 0; e < i; e += 1) "o" !== this.dataProps[e].n ? "svg" === this.renderer ? this.dashStr += " " + this.dataProps[e].p.v : this.dashArray[e] = this.dataProps[e].p.v : this.dashoffset[0] = this.dataProps[e].p.v
}
}, extendPrototype([DynamicPropertyContainer], DashProperty), extendPrototype([DynamicPropertyContainer], SVGStrokeStyleData), extendPrototype([DynamicPropertyContainer], SVGFillStyleData), extendPrototype([DynamicPropertyContainer], SVGNoStyleData), GradientProperty.prototype.comparePoints = function(t, e) {
for (var i = 0, s = this.o.length / 2; i < s;) {
if (Math.abs(t[4 * i] - t[4 * e + 2 * i]) > .01) return !1;
i += 1
}
return !0
}, GradientProperty.prototype.checkCollapsable = function() {
if (this.o.length / 2 != this.c.length / 4) return !1;
if (this.data.k.k[0].s)
for (var t = 0, e = this.data.k.k.length; t < e;) {
if (!this.comparePoints(this.data.k.k[t].s, this.data.p)) return !1;
t += 1
} else if (!this.comparePoints(this.data.k.k, this.data.p)) return !1;
return !0
}, GradientProperty.prototype.getValue = function(t) {
if (this.prop.getValue(), this._mdf = !1, this._cmdf = !1, this._omdf = !1, this.prop._mdf || t) {
var e, i, s, a = 4 * this.data.p;
for (e = 0; e < a; e += 1) i = e % 4 == 0 ? 100 : 255, s = Math.round(this.prop.v[e] * i), this.c[e] !== s && (this.c[e] = s, this._cmdf = !t);
if (this.o.length)
for (a = this.prop.v.length, e = 4 * this.data.p; e < a; e += 1) i = e % 2 == 0 ? 100 : 1, s = e % 2 == 0 ? Math.round(100 * this.prop.v[e]) : this.prop.v[e], this.o[e - 4 * this.data.p] !== s && (this.o[e - 4 * this.data.p] = s, this._omdf = !t);
this._mdf = !t
}
}, extendPrototype([DynamicPropertyContainer], GradientProperty), SVGGradientFillStyleData.prototype.initGradientData = function(t, e, i) {
this.o = N.getProp(t, e.o, 0, .01, this), this.s = N.getProp(t, e.s, 1, null, this), this.e = N.getProp(t, e.e, 1, null, this), this.h = N.getProp(t, e.h || {
k: 0
}, 0, .01, this), this.a = N.getProp(t, e.a || {
k: 0
}, 0, x, this), this.g = new GradientProperty(t, e.g, this), this.style = i, this.stops = [], this.setGradientData(i.pElem, e), this.setGradientOpacity(e, i), this._isAnimated = !!this._isAnimated
}, SVGGradientFillStyleData.prototype.setGradientData = function(t, e) {
var i, s, a, r = D(),
n = createNS(1 === e.t ? "linearGradient" : "radialGradient");
n.setAttribute("id", r), n.setAttribute("spreadMethod", "pad"), n.setAttribute("gradientUnits", "userSpaceOnUse");
var o = [];
for (s = 0, a = 4 * e.g.p; s < a; s += 4) i = createNS("stop"), n.appendChild(i), o.push(i);
t.setAttribute("gf" === e.ty ? "fill" : "stroke", "url(" + getLocationHref() + "#" + r + ")"), this.gf = n, this.cst = o
}, SVGGradientFillStyleData.prototype.setGradientOpacity = function(t, e) {
if (this.g._hasOpacity && !this.g._collapsable) {
var i, s, a, r = createNS("mask"),
n = createNS("path");
r.appendChild(n);
var o = D(),
h = D();
r.setAttribute("id", h);
var l = createNS(1 === t.t ? "linearGradient" : "radialGradient");
l.setAttribute("id", o), l.setAttribute("spreadMethod", "pad"), l.setAttribute("gradientUnits", "userSpaceOnUse"), a = t.g.k.k[0].s ? t.g.k.k[0].s.length : t.g.k.k.length;
var p = this.stops;
for (s = 4 * t.g.p; s < a; s += 2)(i = createNS("stop")).setAttribute("stop-color", "rgb(255,255,255)"), l.appendChild(i), p.push(i);
n.setAttribute("gf" === t.ty ? "fill" : "stroke", "url(" + getLocationHref() + "#" + o + ")"), "gs" === t.ty && (n.setAttribute("stroke-linecap", tl[t.lc || 2]), n.setAttribute("stroke-linejoin", tp[t.lj || 2]), 1 === t.lj && n.setAttribute("stroke-miterlimit", t.ml)), this.of = l, this.ms = r, this.ost = p, this.maskId = h, e.msElem = n
}
}, extendPrototype([DynamicPropertyContainer], SVGGradientFillStyleData), extendPrototype([SVGGradientFillStyleData, DynamicPropertyContainer], SVGGradientStrokeStyleData);
var buildShapeString = function(t, e, i, s) {
if (0 === e) return "";
var a, r = t.o,
n = t.i,
o = t.v,
h = " M" + s.applyToPointStringified(o[0][0], o[0][1]);
for (a = 1; a < e; a += 1) h += " C" + s.applyToPointStringified(r[a - 1][0], r[a - 1][1]) + " " + s.applyToPointStringified(n[a][0], n[a][1]) + " " + s.applyToPointStringified(o[a][0], o[a][1]);
return i && e && (h += " C" + s.applyToPointStringified(r[a - 1][0], r[a - 1][1]) + " " + s.applyToPointStringified(n[0][0], n[0][1]) + " " + s.applyToPointStringified(o[0][0], o[0][1]) + "z"), h
},
tf = function() {
var t = new H,
e = new H;
function renderContentTransform(t, e, i) {
(i || e.transform.op._mdf) && e.transform.container.setAttribute("opacity", e.transform.op.v), (i || e.transform.mProps._mdf) && e.transform.container.setAttribute("transform", e.transform.mProps.v.to2dCSS())
}
function renderNoop() {}
function renderPath(i, s, a) {
var r, n, o, h, l, p, f, m, d, c, u = s.styles.length,
g = s.lvl;
for (p = 0; p < u; p += 1) {
if (h = s.sh._mdf || a, s.styles[p].lvl < g) {
for (m = e.reset(), d = g - s.styles[p].lvl, c = s.transformers.length - 1; !h && d > 0;) h = s.transformers[c].mProps._mdf || h, d -= 1, c -= 1;
if (h)
for (d = g - s.styles[p].lvl, c = s.transformers.length - 1; d > 0;) m.multiply(s.transformers[c].mProps.v), d -= 1, c -= 1
} else m = t;
if (n = (f = s.sh.paths)._length, h) {
for (r = 0, o = ""; r < n; r += 1)(l = f.shapes[r]) && l._length && (o += buildShapeString(l, l._length, l.c, m));
s.caches[p] = o
} else o = s.caches[p];
s.styles[p].d += !0 === i.hd ? "" : o, s.styles[p]._mdf = h || s.styles[p]._mdf
}
}
function renderFill(t, e, i) {
var s = e.style;
(e.c._mdf || i) && s.pElem.setAttribute("fill", "rgb(" + _(e.c.v[0]) + "," + _(e.c.v[1]) + "," + _(e.c.v[2]) + ")"), (e.o._mdf || i) && s.pElem.setAttribute("fill-opacity", e.o.v)
}
function renderGradientStroke(t, e, i) {
renderGradient(t, e, i), renderStroke(t, e, i)
}
function renderGradient(t, e, i) {
var s, a, r, n, o, h = e.gf,
l = e.g._hasOpacity,
p = e.s.v,
f = e.e.v;
if (e.o._mdf || i) {
var m = "gf" === t.ty ? "fill-opacity" : "stroke-opacity";
e.style.pElem.setAttribute(m, e.o.v)
}
if (e.s._mdf || i) {
var d = 1 === t.t ? "x1" : "cx",
c = "x1" === d ? "y1" : "cy";
h.setAttribute(d, p[0]), h.setAttribute(c, p[1]), l && !e.g._collapsable && (e.of.setAttribute(d, p[0]), e.of.setAttribute(c, p[1]))
}
if (e.g._cmdf || i) {
s = e.cst;
var u = e.g.c;
for (a = 0, r = s.length; a < r; a += 1)(n = s[a]).setAttribute("offset", u[4 * a] + "%"), n.setAttribute("stop-color", "rgb(" + u[4 * a + 1] + "," + u[4 * a + 2] + "," + u[4 * a + 3] + ")")
}
if (l && (e.g._omdf || i)) {
var g = e.g.o;
for (a = 0, r = (s = e.g._collapsable ? e.cst : e.ost).length; a < r; a += 1) n = s[a], e.g._collapsable || n.setAttribute("offset", g[2 * a] + "%"), n.setAttribute("stop-opacity", g[2 * a + 1])
}
if (1 === t.t)(e.e._mdf || i) && (h.setAttribute("x2", f[0]), h.setAttribute("y2", f[1]), l && !e.g._collapsable && (e.of.setAttribute("x2", f[0]), e.of.setAttribute("y2", f[1])));
else if ((e.s._mdf || e.e._mdf || i) && (o = Math.sqrt(Math.pow(p[0] - f[0], 2) + Math.pow(p[1] - f[1], 2)), h.setAttribute("r", o), l && !e.g._collapsable && e.of.setAttribute("r", o)), e.e._mdf || e.h._mdf || e.a._mdf || i) {
o || (o = Math.sqrt(Math.pow(p[0] - f[0], 2) + Math.pow(p[1] - f[1], 2)));
var y = Math.atan2(f[1] - p[1], f[0] - p[0]),
v = e.h.v;
v >= 1 ? v = .99 : v <= -1 && (v = -.99);
var S = o * v,
P = Math.cos(y + e.a.v) * S + p[0],
b = Math.sin(y + e.a.v) * S + p[1];
h.setAttribute("fx", P), h.setAttribute("fy", b), l && !e.g._collapsable && (e.of.setAttribute("fx", P), e.of.setAttribute("fy", b))
}
}
function renderStroke(t, e, i) {
var s = e.style,
a = e.d;
a && (a._mdf || i) && a.dashStr && (s.pElem.setAttribute("stroke-dasharray", a.dashStr), s.pElem.setAttribute("stroke-dashoffset", a.dashoffset[0])), e.c && (e.c._mdf || i) && s.pElem.setAttribute("stroke", "rgb(" + _(e.c.v[0]) + "," + _(e.c.v[1]) + "," + _(e.c.v[2]) + ")"), (e.o._mdf || i) && s.pElem.setAttribute("stroke-opacity", e.o.v), (e.w._mdf || i) && (s.pElem.setAttribute("stroke-width", e.w.v), s.msElem && s.msElem.setAttribute("stroke-width", e.w.v))
}
return {
createRenderFunction: function(t) {
switch (t.ty) {
case "fl":
return renderFill;
case "gf":
return renderGradient;
case "gs":
return renderGradientStroke;
case "st":
return renderStroke;
case "sh":
case "el":
case "rc":
case "sr":
return renderPath;
case "tr":
return renderContentTransform;
case "no":
return renderNoop;
default:
return null
}
}
}
}();
function SVGShapeElement(t, e, i) {
this.shapes = [], this.shapesData = t.shapes, this.stylesList = [], this.shapeModifiers = [], this.itemsData = [], this.processedElements = [], this.animatedContents = [], this.initElement(t, e, i), this.prevViewData = []
}
function LetterProps(t, e, i, s, a, r) {
this.o = t, this.sw = e, this.sc = i, this.fc = s, this.m = a, this.p = r, this._mdf = {
o: !0,
sw: !!e,
sc: !!i,
fc: !!s,
m: !0,
p: !0
}
}
function TextProperty(t, e) {
this._frameId = -999999, this.pv = "", this.v = "", this.kf = !1, this._isFirstFrame = !0, this._mdf = !1, e.d && e.d.sid && (e.d = t.globalData.slotManager.getProp(e.d)), this.data = e, this.elem = t, this.comp = this.elem.comp, this.keysIndex = 0, this.canResize = !1, this.minimumFontSize = 1, this.effectsSequence = [], this.currentData = {
ascent: 0,
boxWidth: this.defaultBoxWidth,
f: "",
fStyle: "",
fWeight: "",
fc: "",
j: "",
justifyOffset: "",
l: [],
lh: 0,
lineWidths: [],
ls: "",
of: "",
s: "",
sc: "",
sw: 0,
t: 0,
tr: 0,
sz: 0,
ps: null,
fillColorAnim: !1,
strokeColorAnim: !1,
strokeWidthAnim: !1,
yOffset: 0,
finalSize: 0,
finalText: [],
finalLineHeight: 0,
__complete: !1
}, this.copyData(this.currentData, this.data.d.k[0].s), this.searchProperty() || this.completeTextData(this.currentData)
}
extendPrototype([BaseElement, TransformElement, SVGBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableDOMElement], SVGShapeElement), SVGShapeElement.prototype.initSecondaryElement = function() {}, SVGShapeElement.prototype.identityMatrix = new H, SVGShapeElement.prototype.buildExpressionInterface = function() {}, SVGShapeElement.prototype.createContent = function() {
this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], !0), this.filterUniqueShapes()
}, SVGShapeElement.prototype.filterUniqueShapes = function() {
var t, e, i, s, a = this.shapes.length,
r = this.stylesList.length,
n = [],
o = !1;
for (i = 0; i < r; i += 1) {
for (t = 0, s = this.stylesList[i], o = !1, n.length = 0; t < a; t += 1) - 1 !== (e = this.shapes[t]).styles.indexOf(s) && (n.push(e), o = e._isAnimated || o);
n.length > 1 && o && this.setShapesAsAnimated(n)
}
}, SVGShapeElement.prototype.setShapesAsAnimated = function(t) {
var e, i = t.length;
for (e = 0; e < i; e += 1) t[e].setAsAnimated()
}, SVGShapeElement.prototype.createStyleElement = function(t, e) {
var i, s = new SVGStyleData(t, e),
a = s.pElem;
return "st" === t.ty ? i = new SVGStrokeStyleData(this, t, s) : "fl" === t.ty ? i = new SVGFillStyleData(this, t, s) : "gf" === t.ty || "gs" === t.ty ? (i = new("gf" === t.ty ? SVGGradientFillStyleData : SVGGradientStrokeStyleData)(this, t, s), this.globalData.defs.appendChild(i.gf), i.maskId && (this.globalData.defs.appendChild(i.ms), this.globalData.defs.appendChild(i.of), a.setAttribute("mask", "url(" + getLocationHref() + "#" + i.maskId + ")"))) : "no" === t.ty && (i = new SVGNoStyleData(this, t, s)), ("st" === t.ty || "gs" === t.ty) && (a.setAttribute("stroke-linecap", tl[t.lc || 2]), a.setAttribute("stroke-linejoin", tp[t.lj || 2]), a.setAttribute("fill-opacity", "0"), 1 === t.lj && a.setAttribute("stroke-miterlimit", t.ml)), 2 === t.r && a.setAttribute("fill-rule", "evenodd"), t.ln && a.setAttribute("id", t.ln), t.cl && a.setAttribute("class", t.cl), t.bm && (a.style["mix-blend-mode"] = ts(t.bm)), this.stylesList.push(s), this.addToAnimatedContents(t, i), i
}, SVGShapeElement.prototype.createGroupElement = function(t) {
var e = new ShapeGroupData;
return t.ln && e.gr.setAttribute("id", t.ln), t.cl && e.gr.setAttribute("class", t.cl), t.bm && (e.gr.style["mix-blend-mode"] = ts(t.bm)), e
}, SVGShapeElement.prototype.createTransformElement = function(t, e) {
var i = te.getTransformProperty(this, t, this),
s = new SVGTransformData(i, i.o, e);
return this.addToAnimatedContents(t, s), s
}, SVGShapeElement.prototype.createShapeElement = function(t, e, i) {
var s = 4;
"rc" === t.ty ? s = 5 : "el" === t.ty ? s = 6 : "sr" === t.ty && (s = 7);
var a = j.getShapeProp(this, t, s, this),
r = new SVGShapeData(e, i, a);
return this.shapes.push(r), this.addShapeToModifiers(r), this.addToAnimatedContents(t, r), r
}, SVGShapeElement.prototype.addToAnimatedContents = function(t, e) {
for (var i = 0, s = this.animatedContents.length; i < s;) {
if (this.animatedContents[i].element === e) return;
i += 1
}
this.animatedContents.push({
fn: tf.createRenderFunction(t),
element: e,
data: t
})
}, SVGShapeElement.prototype.setElementStyles = function(t) {
var e, i = t.styles,
s = this.stylesList.length;
for (e = 0; e < s; e += 1) this.stylesList[e].closed || i.push(this.stylesList[e])
}, SVGShapeElement.prototype.reloadShapes = function() {
this._isFirstFrame = !0;
var t, e = this.itemsData.length;
for (t = 0; t < e; t += 1) this.prevViewData[t] = this.itemsData[t];
for (this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], !0), this.filterUniqueShapes(), e = this.dynamicProperties.length, t = 0; t < e; t += 1) this.dynamicProperties[t].getValue();
this.renderModifiers()
}, SVGShapeElement.prototype.searchShapes = function(t, e, i, s, a, r, n) {
var o, h, l, p, f, m, d = [].concat(r),
c = t.length - 1,
u = [],
g = [];
for (o = c; o >= 0; o -= 1) {
if ((m = this.searchProcessedElement(t[o])) ? e[o] = i[m - 1] : t[o]._render = n, "fl" === t[o].ty || "st" === t[o].ty || "gf" === t[o].ty || "gs" === t[o].ty || "no" === t[o].ty) m ? e[o].style.closed = !1 : e[o] = this.createStyleElement(t[o], a), t[o]._render && e[o].style.pElem.parentNode !== s && s.appendChild(e[o].style.pElem), u.push(e[o].style);
else if ("gr" === t[o].ty) {
if (m)
for (h = 0, l = e[o].it.length; h < l; h += 1) e[o].prevViewData[h] = e[o].it[h];
else e[o] = this.createGroupElement(t[o]);
this.searchShapes(t[o].it, e[o].it, e[o].prevViewData, e[o].gr, a + 1, d, n), t[o]._render && e[o].gr.parentNode !== s && s.appendChild(e[o].gr)
} else "tr" === t[o].ty ? (m || (e[o] = this.createTransformElement(t[o], s)), p = e[o].transform, d.push(p)) : "sh" === t[o].ty || "rc" === t[o].ty || "el" === t[o].ty || "sr" === t[o].ty ? (m || (e[o] = this.createShapeElement(t[o], d, a)), this.setElementStyles(e[o])) : "tm" === t[o].ty || "rd" === t[o].ty || "ms" === t[o].ty || "pb" === t[o].ty || "zz" === t[o].ty || "op" === t[o].ty ? (m ? (f = e[o]).closed = !1 : ((f = tt.getModifier(t[o].ty)).init(this, t[o]), e[o] = f, this.shapeModifiers.push(f)), g.push(f)) : "rp" === t[o].ty && (m ? (f = e[o]).closed = !0 : (f = tt.getModifier(t[o].ty), e[o] = f, f.init(this, t, o, e), this.shapeModifiers.push(f), n = !1), g.push(f));
this.addProcessedElement(t[o], o + 1)
}
for (o = 0, c = u.length; o < c; o += 1) u[o].closed = !0;
for (o = 0, c = g.length; o < c; o += 1) g[o].closed = !0
}, SVGShapeElement.prototype.renderInnerContent = function() {
this.renderModifiers();
var t, e = this.stylesList.length;
for (t = 0; t < e; t += 1) this.stylesList[t].reset();
for (this.renderShape(), t = 0; t < e; t += 1)(this.stylesList[t]._mdf || this._isFirstFrame) && (this.stylesList[t].msElem && (this.stylesList[t].msElem.setAttribute("d", this.stylesList[t].d), this.stylesList[t].d = "M0 0" + this.stylesList[t].d), this.stylesList[t].pElem.setAttribute("d", this.stylesList[t].d || "M0 0"))
}, SVGShapeElement.prototype.renderShape = function() {
var t, e, i = this.animatedContents.length;
for (t = 0; t < i; t += 1) e = this.animatedContents[t], (this._isFirstFrame || e.element._isAnimated) && !0 !== e.data && e.fn(e.data, e.element, this._isFirstFrame)
}, SVGShapeElement.prototype.destroy = function() {
this.destroyBaseElement(), this.shapesData = null, this.itemsData = null
}, LetterProps.prototype.update = function(t, e, i, s, a, r) {
this._mdf.o = !1, this._mdf.sw = !1, this._mdf.sc = !1, this._mdf.fc = !1, this._mdf.m = !1, this._mdf.p = !1;
var n = !1;
return this.o !== t && (this.o = t, this._mdf.o = !0, n = !0), this.sw !== e && (this.sw = e, this._mdf.sw = !0, n = !0), this.sc !== i && (this.sc = i, this._mdf.sc = !0, n = !0), this.fc !== s && (this.fc = s, this._mdf.fc = !0, n = !0), this.m !== a && (this.m = a, this._mdf.m = !0, n = !0), r.length && (this.p[0] !== r[0] || this.p[1] !== r[1] || this.p[4] !== r[4] || this.p[5] !== r[5] || this.p[12] !== r[12] || this.p[13] !== r[13]) && (this.p = r, this._mdf.p = !0, n = !0), n
}, TextProperty.prototype.defaultBoxWidth = [0, 0], TextProperty.prototype.copyData = function(t, e) {
for (var i in e) Object.prototype.hasOwnProperty.call(e, i) && (t[i] = e[i]);
return t
}, TextProperty.prototype.setCurrentData = function(t) {
t.__complete || this.completeTextData(t), this.currentData = t, this.currentData.boxWidth = this.currentData.boxWidth || this.defaultBoxWidth, this._mdf = !0
}, TextProperty.prototype.searchProperty = function() {
return this.searchKeyframes()
}, TextProperty.prototype.searchKeyframes = function() {
return this.kf = this.data.d.k.length > 1, this.kf && this.addEffect(this.getKeyframeValue.bind(this)), this.kf
}, TextProperty.prototype.addEffect = function(t) {
this.effectsSequence.push(t), this.elem.addDynamicProperty(this)
}, TextProperty.prototype.getValue = function(t) {
if (this.elem.globalData.frameId !== this.frameId && this.effectsSequence.length || t) {
this.currentData.t = this.data.d.k[this.keysIndex].s.t;
var e, i = this.currentData,
s = this.keysIndex;
if (this.lock) {
this.setCurrentData(this.currentData);
return
}
this.lock = !0, this._mdf = !1;
var a = this.effectsSequence.length,
r = t || this.data.d.k[this.keysIndex].s;
for (e = 0; e < a; e += 1) r = s !== this.keysIndex ? this.effectsSequence[e](r, r.t) : this.effectsSequence[e](this.currentData, r.t);
i !== r && this.setCurrentData(r), this.v = this.currentData, this.pv = this.v, this.lock = !1, this.frameId = this.elem.globalData.frameId
}
}, TextProperty.prototype.getKeyframeValue = function() {
for (var t = this.data.d.k, e = this.elem.comp.renderedFrame, i = 0, s = t.length; i <= s - 1 && i !== s - 1 && !(t[i + 1].t > e);) i += 1;
return this.keysIndex !== i && (this.keysIndex = i), this.data.d.k[this.keysIndex].s
}, TextProperty.prototype.buildFinalText = function(t) {
for (var e, i, s = [], a = 0, r = t.length, n = !1, o = !1, h = ""; a < r;) n = o, o = !1, e = t.charCodeAt(a), h = t.charAt(a), ti.isCombinedCharacter(e) ? n = !0 : e >= 55296 && e <= 56319 ? ti.isRegionalFlag(t, a) ? h = t.substr(a, 14) : (i = t.charCodeAt(a + 1)) >= 56320 && i <= 57343 && (ti.isModifier(e, i) ? (h = t.substr(a, 2), n = !0) : h = ti.isFlagEmoji(t.substr(a, 4)) ? t.substr(a, 4) : t.substr(a, 2)) : e > 56319 ? (i = t.charCodeAt(a + 1), ti.isVariationSelector(e) && (n = !0)) : ti.isZeroWidthJoiner(e) && (n = !0, o = !0), n ? (s[s.length - 1] += h, n = !1) : s.push(h), a += h.length;
return s
}, TextProperty.prototype.completeTextData = function(t) {
t.__complete = !0;
var e = this.elem.globalData.fontManager,
i = this.data,
s = [],
a = 0,
r = i.m.g,
n = 0,
o = 0,
h = 0,
l = [],
p = 0,
f = 0,
m = e.getFontByName(t.f),
d = 0,
c = getFontProperties(m);
t.fWeight = c.weight, t.fStyle = c.style, t.finalSize = t.s, t.finalText = this.buildFinalText(t.t), y = t.finalText.length, t.finalLineHeight = t.lh;
var u = t.tr / 1e3 * t.finalSize;
if (t.sz)
for (var g, y, v, S, P, b, _, A, E, k, x = !0, D = t.sz[0], M = t.sz[1]; x;) {
k = this.buildFinalText(t.t), E = 0, p = 0, y = k.length, u = t.tr / 1e3 * t.finalSize;
var C = -1;
for (g = 0; g < y; g += 1) A = k[g].charCodeAt(0), v = !1, " " === k[g] ? C = g : (13 === A || 3 === A) && (p = 0, v = !0, E += t.finalLineHeight || 1.2 * t.finalSize), e.chars ? (_ = e.getCharData(k[g], m.fStyle, m.fFamily), d = v ? 0 : _.w * t.finalSize / 100) : d = e.measureText(k[g], t.f, t.finalSize), p + d > D && " " !== k[g] ? (-1 === C ? y += 1 : g = C, E += t.finalLineHeight || 1.2 * t.finalSize, k.splice(g, C === g ? 1 : 0, "\r"), C = -1, p = 0) : p += d + u;
E += m.ascent * t.finalSize / 100, this.canResize && t.finalSize > this.minimumFontSize && M < E ? (t.finalSize -= 1, t.finalLineHeight = t.finalSize * t.lh / t.s) : (t.finalText = k, y = t.finalText.length, x = !1)
}
p = -u, d = 0;
var T = 0;
for (g = 0; g < y; g += 1)
if (v = !1, 13 === (A = (w = t.finalText[g]).charCodeAt(0)) || 3 === A ? (T = 0, l.push(p), f = p > f ? p : f, p = -2 * u, S = "", v = !0, h += 1) : S = w, e.chars ? (_ = e.getCharData(w, m.fStyle, e.getFontByName(t.f).fFamily), d = v ? 0 : _.w * t.finalSize / 100) : d = e.measureText(S, t.f, t.finalSize), " " === w ? T += d + u : (p += d + u + T, T = 0), s.push({
l: d,
an: d,
add: n,
n: v,
anIndexes: [],
val: S,
line: h,
animatorJustifyOffset: 0
}), 2 == r) {
if (n += d, "" === S || " " === S || g === y - 1) {
for (("" === S || " " === S) && (n -= d); o <= g;) s[o].an = n, s[o].ind = a, s[o].extra = d, o += 1;
a += 1, n = 0
}
} else if (3 == r) {
if (n += d, "" === S || g === y - 1) {
for ("" === S && (n -= d); o <= g;) s[o].an = n, s[o].ind = a, s[o].extra = d, o += 1;
n = 0, a += 1
}
} else s[a].ind = a, s[a].extra = 0, a += 1;
if (t.l = s, f = p > f ? p : f, l.push(p), t.sz) t.boxWidth = t.sz[0], t.justifyOffset = 0;
else switch (t.boxWidth = f, t.j) {
case 1:
t.justifyOffset = -t.boxWidth;
break;
case 2:
t.justifyOffset = -t.boxWidth / 2;
break;
default:
t.justifyOffset = 0
}
t.lineWidths = l;
var F = i.a;
b = F.length;
var I = [];
for (P = 0; P < b; P += 1) {
for ((L = F[P]).a.sc && (t.strokeColorAnim = !0), L.a.sw && (t.strokeWidthAnim = !0), (L.a.fc || L.a.fh || L.a.fs || L.a.fb) && (t.fillColorAnim = !0), B = 0, R = L.s.b, g = 0; g < y; g += 1)(V = s[g]).anIndexes[P] = B, (1 == R && "" !== V.val || 2 == R && "" !== V.val && " " !== V.val || 3 == R && (V.n || " " == V.val || g == y - 1) || 4 == R && (V.n || g == y - 1)) && (1 === L.s.rn && I.push(B), B += 1);
i.a[P].s.totalChars = B;
var w, L, V, R, B, z, N = -1;
if (1 === L.s.rn)
for (g = 0; g < y; g += 1) N != (V = s[g]).anIndexes[P] && (N = V.anIndexes[P], z = I.splice(Math.floor(Math.random() * I.length), 1)[0]), V.anIndexes[P] = z
}
t.yOffset = t.finalLineHeight || 1.2 * t.finalSize, t.ls = t.ls || 0, t.ascent = m.ascent * t.finalSize / 100
}, TextProperty.prototype.updateDocumentData = function(t, e) {
e = void 0 === e ? this.keysIndex : e;
var i = this.copyData({}, this.data.d.k[e].s);
i = this.copyData(i, t), this.data.d.k[e].s = i, this.recalculate(e), this.setCurrentData(i), this.elem.addDynamicProperty(this)
}, TextProperty.prototype.recalculate = function(t) {
var e = this.data.d.k[t].s;
e.__complete = !1, this.keysIndex = 0, this._isFirstFrame = !0, this.getValue(e)
}, TextProperty.prototype.canResizeFont = function(t) {
this.canResize = t, this.recalculate(this.keysIndex), this.elem.addDynamicProperty(this)
}, TextProperty.prototype.setMinimumFontSize = function(t) {
this.minimumFontSize = Math.floor(t) || 1, this.recalculate(this.keysIndex), this.elem.addDynamicProperty(this)
};
var tm = function() {
var t = Math.max,
e = Math.min,
i = Math.floor;
function TextSelectorPropFactory(t, e) {
this._currentTextLength = -1, this.k = !1, this.data = e, this.elem = t, this.comp = t.comp, this.finalS = 0, this.finalE = 0, this.initDynamicPropertyContainer(t), this.s = N.getProp(t, e.s || {
k: 0
}, 0, 0, this), "e" in e ? this.e = N.getProp(t, e.e, 0, 0, this) : this.e = {
v: 100
}, this.o = N.getProp(t, e.o || {
k: 0
}, 0, 0, this), this.xe = N.getProp(t, e.xe || {
k: 0
}, 0, 0, this), this.ne = N.getProp(t, e.ne || {
k: 0
}, 0, 0, this), this.sm = N.getProp(t, e.sm || {
k: 100
}, 0, 0, this), this.a = N.getProp(t, e.a, 0, .01, this), this.dynamicProperties.length || this.getValue()
}
return TextSelectorPropFactory.prototype = {
getMult: function(s) {
this._currentTextLength !== this.elem.textProperty.currentData.l.length && this.getValue();
var a = 0,
r = 0,
n = 1,
o = 1;
this.ne.v > 0 ? a = this.ne.v / 100 : r = -this.ne.v / 100, this.xe.v > 0 ? n = 1 - this.xe.v / 100 : o = 1 + this.xe.v / 100;
var h = w.getBezierEasing(a, r, n, o).get,
l = 0,
p = this.finalS,
f = this.finalE,
m = this.data.sh;
if (2 === m) l = h(l = f === p ? s >= f ? 1 : 0 : t(0, e(.5 / (f - p) + (s - p) / (f - p), 1)));
else if (3 === m) l = h(l = f === p ? s >= f ? 0 : 1 : 1 - t(0, e(.5 / (f - p) + (s - p) / (f - p), 1)));
else if (4 === m) f === p ? l = 0 : (l = t(0, e(.5 / (f - p) + (s - p) / (f - p), 1))) < .5 ? l *= 2 : l = 1 - 2 * (l - .5), l = h(l);
else if (5 === m) {
if (f === p) l = 0;
else {
var d = f - p,
c = -d / 2 + (s = e(t(0, s + .5 - p), f - p)),
u = d / 2;
l = Math.sqrt(1 - c * c / (u * u))
}
l = h(l)
} else 6 === m ? l = h(l = f === p ? 0 : (1 + Math.cos(Math.PI + 2 * Math.PI * (s = e(t(0, s + .5 - p), f - p)) / (f - p))) / 2) : (s >= i(p) && (l = s - p < 0 ? t(0, e(e(f, 1) - (p - s), 1)) : t(0, e(f - s, 1))), l = h(l));
if (100 !== this.sm.v) {
var g = .01 * this.sm.v;
0 === g && (g = 1e-8);
var y = .5 - .5 * g;
l < y ? l = 0 : (l = (l - y) / g) > 1 && (l = 1)
}
return l * this.a.v
},
getValue: function(t) {
this.iterateDynamicProperties(), this._mdf = t || this._mdf, this._currentTextLength = this.elem.textProperty.currentData.l.length || 0, t && 2 === this.data.r && (this.e.v = this._currentTextLength);
var e = 2 === this.data.r ? 1 : 100 / this.data.totalChars,
i = this.o.v / e,
s = this.s.v / e + i,
a = this.e.v / e + i;
if (s > a) {
var r = s;
s = a, a = r
}
this.finalS = s, this.finalE = a
}
}, extendPrototype([DynamicPropertyContainer], TextSelectorPropFactory), {
getTextSelectorProp: function(t, e, i) {
return new TextSelectorPropFactory(t, e, i)
}
}
}();
function TextAnimatorDataProperty(t, e, i) {
var s = {
propType: !1
},
a = N.getProp,
r = e.a;
this.a = {
r: r.r ? a(t, r.r, 0, x, i) : s,
rx: r.rx ? a(t, r.rx, 0, x, i) : s,
ry: r.ry ? a(t, r.ry, 0, x, i) : s,
sk: r.sk ? a(t, r.sk, 0, x, i) : s,
sa: r.sa ? a(t, r.sa, 0, x, i) : s,
s: r.s ? a(t, r.s, 1, .01, i) : s,
a: r.a ? a(t, r.a, 1, 0, i) : s,
o: r.o ? a(t, r.o, 0, .01, i) : s,
p: r.p ? a(t, r.p, 1, 0, i) : s,
sw: r.sw ? a(t, r.sw, 0, 0, i) : s,
sc: r.sc ? a(t, r.sc, 1, 0, i) : s,
fc: r.fc ? a(t, r.fc, 1, 0, i) : s,
fh: r.fh ? a(t, r.fh, 0, 0, i) : s,
fs: r.fs ? a(t, r.fs, 0, .01, i) : s,
fb: r.fb ? a(t, r.fb, 0, .01, i) : s,
t: r.t ? a(t, r.t, 0, 0, i) : s
}, this.s = tm.getTextSelectorProp(t, e.s, i), this.s.t = e.s.t
}
function TextAnimatorProperty(t, e, i) {
this._isFirstFrame = !0, this._hasMaskedPath = !1, this._frameId = -1, this._textData = t, this._renderType = e, this._elem = i, this._animatorsData = createSizedArray(this._textData.a.length), this._pathData = {}, this._moreOptions = {
alignment: {}
}, this.renderedLetters = [], this.lettersChangedFlag = !1, this.initDynamicPropertyContainer(i)
}
function ITextElement() {}
TextAnimatorProperty.prototype.searchProperties = function() {
var t, e, i = this._textData.a.length,
s = N.getProp;
for (t = 0; t < i; t += 1) e = this._textData.a[t], this._animatorsData[t] = new TextAnimatorDataProperty(this._elem, e, this);
this._textData.p && "m" in this._textData.p ? (this._pathData = {
a: s(this._elem, this._textData.p.a, 0, 0, this),
f: s(this._elem, this._textData.p.f, 0, 0, this),
l: s(this._elem, this._textData.p.l, 0, 0, this),
r: s(this._elem, this._textData.p.r, 0, 0, this),
p: s(this._elem, this._textData.p.p, 0, 0, this),
m: this._elem.maskManager.getMaskProperty(this._textData.p.m)
}, this._hasMaskedPath = !0) : this._hasMaskedPath = !1, this._moreOptions.alignment = s(this._elem, this._textData.m.a, 1, 0, this)
}, TextAnimatorProperty.prototype.getMeasures = function(t, e) {
if (this.lettersChangedFlag = e, this._mdf || this._isFirstFrame || e || this._hasMaskedPath && this._pathData.m._mdf) {
this._isFirstFrame = !1;
var i, s, a, r, n, o, h, l, p, f, m, d, c, u, g, y, v, S = this._moreOptions.alignment.v,
P = this._animatorsData,
b = this._textData,
_ = this.mHelper,
A = this._renderType,
E = this.renderedLetters.length,
k = t.l;
if (this._hasMaskedPath) {
if (H = this._pathData.m, !this._pathData.n || this._pathData._mdf) {
var x, D, M, C, T, F, I, w, L, V, R, z, N, G, O, q, j, H, W, Z = H.v;
for (this._pathData.r.v && (Z = Z.reverse()), T = {
tLength: 0,
segments: []
}, C = Z._length - 1, q = 0, M = 0; M < C; M += 1) W = B.buildBezierData(Z.v[M], Z.v[M + 1], [Z.o[M][0] - Z.v[M][0], Z.o[M][1] - Z.v[M][1]], [Z.i[M + 1][0] - Z.v[M + 1][0], Z.i[M + 1][1] - Z.v[M + 1][1]]), T.tLength += W.segmentLength, T.segments.push(W), q += W.segmentLength;
M = C, H.v.c && (W = B.buildBezierData(Z.v[M], Z.v[0], [Z.o[M][0] - Z.v[M][0], Z.o[M][1] - Z.v[M][1]], [Z.i[0][0] - Z.v[0][0], Z.i[0][1] - Z.v[0][1]]), T.tLength += W.segmentLength, T.segments.push(W), q += W.segmentLength), this._pathData.pi = T
}
if (T = this._pathData.pi, F = this._pathData.f.v, R = 0, V = 1, w = 0, L = !0, G = T.segments, F < 0 && H.v.c)
for (T.tLength < Math.abs(F) && (F = -Math.abs(F) % T.tLength), R = G.length - 1, V = (N = G[R].points).length - 1; F < 0;) F += N[V].partialLength, (V -= 1) < 0 && (R -= 1, V = (N = G[R].points).length - 1);
z = (N = G[R].points)[V - 1], O = (I = N[V]).partialLength
}
C = k.length, x = 0, D = 0;
var X = 1.2 * t.finalSize * .714,
Y = !0;
a = P.length;
var K = -1,
J = F,
U = R,
$ = V,
Q = -1,
tt = "",
te = this.defaultPropsArray;
if (2 === t.j || 1 === t.j) {
var ti = 0,
ts = 0,
ta = 2 === t.j ? -.5 : -1,
tr = 0,
tn = !0;
for (M = 0; M < C; M += 1)
if (k[M].n) {
for (ti && (ti += ts); tr < M;) k[tr].animatorJustifyOffset = ti, tr += 1;
ti = 0, tn = !0
} else {
for (s = 0; s < a; s += 1)(i = P[s].a).t.propType && (tn && 2 === t.j && (ts += i.t.v * ta), (n = (0, P[s].s).getMult(k[M].anIndexes[s], b.a[s].s.totalChars)).length ? ti += i.t.v * n[0] * ta : ti += i.t.v * n * ta);
tn = !1
} for (ti && (ti += ts); tr < M;) k[tr].animatorJustifyOffset = ti, tr += 1
}
for (M = 0; M < C; M += 1) {
if (_.reset(), p = 1, k[M].n) x = 0, D += t.yOffset + (Y ? 1 : 0), F = J, Y = !1, this._hasMaskedPath && (R = U, V = $, z = (N = G[R].points)[V - 1], O = (I = N[V]).partialLength, w = 0), tt = "", y = "", u = "", v = "", te = this.defaultPropsArray;
else {
if (this._hasMaskedPath) {
if (Q !== k[M].line) {
switch (t.j) {
case 1:
F += q - t.lineWidths[k[M].line];
break;
case 2:
F += (q - t.lineWidths[k[M].line]) / 2
}
Q = k[M].line
}
K !== k[M].ind && (k[K] && (F += k[K].extra), F += k[M].an / 2, K = k[M].ind), F += S[0] * k[M].an * .005;
var to = 0;
for (s = 0; s < a; s += 1)(i = P[s].a).p.propType && ((n = (0, P[s].s).getMult(k[M].anIndexes[s], b.a[s].s.totalChars)).length ? to += i.p.v[0] * n[0] : to += i.p.v[0] * n), i.a.propType && ((n = (0, P[s].s).getMult(k[M].anIndexes[s], b.a[s].s.totalChars)).length ? to += i.a.v[0] * n[0] : to += i.a.v[0] * n);
for (L = !0, this._pathData.a.v && (F = .5 * k[0].an + (q - this._pathData.f.v - .5 * k[0].an - .5 * k[k.length - 1].an) * K / (C - 1) + this._pathData.f.v); L;) w + O >= F + to || !N ? (j = (F + to - w) / I.partialLength, h = z.point[0] + (I.point[0] - z.point[0]) * j, l = z.point[1] + (I.point[1] - z.point[1]) * j, _.translate(-S[0] * k[M].an * .005, -(.01 * (S[1] * X))), L = !1) : N && (w += I.partialLength, (V += 1) >= N.length && (V = 0, G[R += 1] ? N = G[R].points : H.v.c ? (V = 0, N = G[R = 0].points) : (w -= I.partialLength, N = null)), N && (z = I, O = (I = N[V]).partialLength));
o = k[M].an / 2 - k[M].add, _.translate(-o, 0, 0)
} else o = k[M].an / 2 - k[M].add, _.translate(-o, 0, 0), _.translate(-S[0] * k[M].an * .005, -S[1] * X * .01, 0);
for (s = 0; s < a; s += 1)(i = P[s].a).t.propType && (n = (0, P[s].s).getMult(k[M].anIndexes[s], b.a[s].s.totalChars), (0 !== x || 0 !== t.j) && (this._hasMaskedPath ? n.length ? F += i.t.v * n[0] : F += i.t.v * n : n.length ? x += i.t.v * n[0] : x += i.t.v * n));
for (t.strokeWidthAnim && (m = t.sw || 0), t.strokeColorAnim && (f = t.sc ? [t.sc[0], t.sc[1], t.sc[2]] : [0, 0, 0]), t.fillColorAnim && t.fc && (d = [t.fc[0], t.fc[1], t.fc[2]]), s = 0; s < a; s += 1)(i = P[s].a).a.propType && ((n = (0, P[s].s).getMult(k[M].anIndexes[s], b.a[s].s.totalChars)).length ? _.translate(-i.a.v[0] * n[0], -i.a.v[1] * n[1], i.a.v[2] * n[2]) : _.translate(-i.a.v[0] * n, -i.a.v[1] * n, i.a.v[2] * n));
for (s = 0; s < a; s += 1)(i = P[s].a).s.propType && ((n = (0, P[s].s).getMult(k[M].anIndexes[s], b.a[s].s.totalChars)).length ? _.scale(1 + (i.s.v[0] - 1) * n[0], 1 + (i.s.v[1] - 1) * n[1], 1) : _.scale(1 + (i.s.v[0] - 1) * n, 1 + (i.s.v[1] - 1) * n, 1));
for (s = 0; s < a; s += 1) {
if (i = P[s].a, n = (0, P[s].s).getMult(k[M].anIndexes[s], b.a[s].s.totalChars), i.sk.propType && (n.length ? _.skewFromAxis(-i.sk.v * n[0], i.sa.v * n[1]) : _.skewFromAxis(-i.sk.v * n, i.sa.v * n)), i.r.propType && (n.length ? _.rotateZ(-i.r.v * n[2]) : _.rotateZ(-i.r.v * n)), i.ry.propType && (n.length ? _.rotateY(i.ry.v * n[1]) : _.rotateY(i.ry.v * n)), i.rx.propType && (n.length ? _.rotateX(i.rx.v * n[0]) : _.rotateX(i.rx.v * n)), i.o.propType && (n.length ? p += (i.o.v * n[0] - p) * n[0] : p += (i.o.v * n - p) * n), t.strokeWidthAnim && i.sw.propType && (n.length ? m += i.sw.v * n[0] : m += i.sw.v * n), t.strokeColorAnim && i.sc.propType)
for (c = 0; c < 3; c += 1) n.length ? f[c] += (i.sc.v[c] - f[c]) * n[0] : f[c] += (i.sc.v[c] - f[c]) * n;
if (t.fillColorAnim && t.fc) {
if (i.fc.propType)
for (c = 0; c < 3; c += 1) n.length ? d[c] += (i.fc.v[c] - d[c]) * n[0] : d[c] += (i.fc.v[c] - d[c]) * n;
i.fh.propType && (d = n.length ? addHueToRGB(d, i.fh.v * n[0]) : addHueToRGB(d, i.fh.v * n)), i.fs.propType && (d = n.length ? addSaturationToRGB(d, i.fs.v * n[0]) : addSaturationToRGB(d, i.fs.v * n)), i.fb.propType && (d = n.length ? addBrightnessToRGB(d, i.fb.v * n[0]) : addBrightnessToRGB(d, i.fb.v * n))
}
}
for (s = 0; s < a; s += 1)(i = P[s].a).p.propType && (n = (0, P[s].s).getMult(k[M].anIndexes[s], b.a[s].s.totalChars), this._hasMaskedPath ? n.length ? _.translate(0, i.p.v[1] * n[0], -i.p.v[2] * n[1]) : _.translate(0, i.p.v[1] * n, -i.p.v[2] * n) : n.length ? _.translate(i.p.v[0] * n[0], i.p.v[1] * n[1], -i.p.v[2] * n[2]) : _.translate(i.p.v[0] * n, i.p.v[1] * n, -i.p.v[2] * n));
if (t.strokeWidthAnim && (u = m < 0 ? 0 : m), t.strokeColorAnim && (g = "rgb(" + Math.round(255 * f[0]) + "," + Math.round(255 * f[1]) + "," + Math.round(255 * f[2]) + ")"), t.fillColorAnim && t.fc && (y = "rgb(" + Math.round(255 * d[0]) + "," + Math.round(255 * d[1]) + "," + Math.round(255 * d[2]) + ")"), this._hasMaskedPath) {
if (_.translate(0, -t.ls), _.translate(0, S[1] * X * .01 + D, 0), this._pathData.p.v) {
var th = 180 * Math.atan((I.point[1] - z.point[1]) / (I.point[0] - z.point[0])) / Math.PI;
I.point[0] < z.point[0] && (th += 180), _.rotate(-th * Math.PI / 180)
}
_.translate(h, l, 0), F -= S[0] * k[M].an * .005, k[M + 1] && K !== k[M + 1].ind && (F += k[M].an / 2 + .001 * t.tr * t.finalSize)
} else {
switch (_.translate(x, D, 0), t.ps && _.translate(t.ps[0], t.ps[1] + t.ascent, 0), t.j) {
case 1:
_.translate(k[M].animatorJustifyOffset + t.justifyOffset + (t.boxWidth - t.lineWidths[k[M].line]), 0, 0);
break;
case 2:
_.translate(k[M].animatorJustifyOffset + t.justifyOffset + (t.boxWidth - t.lineWidths[k[M].line]) / 2, 0, 0)
}
_.translate(0, -t.ls), _.translate(o, 0, 0), _.translate(S[0] * k[M].an * .005, S[1] * X * .01, 0), x += k[M].l + .001 * t.tr * t.finalSize
}
"html" === A ? tt = _.toCSS() : "svg" === A ? tt = _.to2dCSS() : te = [_.props[0], _.props[1], _.props[2], _.props[3], _.props[4], _.props[5], _.props[6], _.props[7], _.props[8], _.props[9], _.props[10], _.props[11], _.props[12], _.props[13], _.props[14], _.props[15]], v = p
}
E <= M ? (r = new LetterProps(v, u, g, y, tt, te), this.renderedLetters.push(r), E += 1, this.lettersChangedFlag = !0) : (r = this.renderedLetters[M], this.lettersChangedFlag = r.update(v, u, g, y, tt, te) || this.lettersChangedFlag)
}
}
}, TextAnimatorProperty.prototype.getValue = function() {
this._elem.globalData.frameId !== this._frameId && (this._frameId = this._elem.globalData.frameId, this.iterateDynamicProperties())
}, TextAnimatorProperty.prototype.mHelper = new H, TextAnimatorProperty.prototype.defaultPropsArray = [], extendPrototype([DynamicPropertyContainer], TextAnimatorProperty), ITextElement.prototype.initElement = function(t, e, i) {
this.lettersChangedFlag = !0, this.initFrame(), this.initBaseData(t, e, i), this.textProperty = new TextProperty(this, t.t, this.dynamicProperties), this.textAnimator = new TextAnimatorProperty(t.t, this.renderType, this), this.initTransform(t, e, i), this.initHierarchy(), this.initRenderable(), this.initRendererElement(), this.createContainerElements(), this.createRenderableComponents(), this.createContent(), this.hide(), this.textAnimator.searchProperties(this.dynamicProperties)
}, ITextElement.prototype.prepareFrame = function(t) {
this._mdf = !1, this.prepareRenderableFrame(t), this.prepareProperties(t, this.isInRange)
}, ITextElement.prototype.createPathShape = function(t, e) {
var i, s, a = e.length,
r = "";
for (i = 0; i < a; i += 1) "sh" === e[i].ty && (r += buildShapeString(s = e[i].ks.k, s.i.length, !0, t));
return r
}, ITextElement.prototype.updateDocumentData = function(t, e) {
this.textProperty.updateDocumentData(t, e)
}, ITextElement.prototype.canResizeFont = function(t) {
this.textProperty.canResizeFont(t)
}, ITextElement.prototype.setMinimumFontSize = function(t) {
this.textProperty.setMinimumFontSize(t)
}, ITextElement.prototype.applyTextPropertiesToMatrix = function(t, e, i, s, a) {
switch (t.ps && e.translate(t.ps[0], t.ps[1] + t.ascent, 0), e.translate(0, -t.ls, 0), t.j) {
case 1:
e.translate(t.justifyOffset + (t.boxWidth - t.lineWidths[i]), 0, 0);
break;
case 2:
e.translate(t.justifyOffset + (t.boxWidth - t.lineWidths[i]) / 2, 0, 0)
}
e.translate(s, a, 0)
}, ITextElement.prototype.buildColor = function(t) {
return "rgb(" + Math.round(255 * t[0]) + "," + Math.round(255 * t[1]) + "," + Math.round(255 * t[2]) + ")"
}, ITextElement.prototype.emptyProp = new LetterProps, ITextElement.prototype.destroy = function() {}, ITextElement.prototype.validateText = function() {
(this.textProperty._mdf || this.textProperty._isFirstFrame) && (this.buildNewText(), this.textProperty._isFirstFrame = !1, this.textProperty._mdf = !1)
};
var td = {
shapes: []
};
function SVGTextLottieElement(t, e, i) {
this.textSpans = [], this.renderType = "svg", this.initElement(t, e, i)
}
function ISolidElement(t, e, i) {
this.initElement(t, e, i)
}
function NullElement(t, e, i) {
this.initFrame(), this.initBaseData(t, e, i), this.initFrame(), this.initTransform(t, e, i), this.initHierarchy()
}
function SVGRendererBase() {}
function ICompElement() {}
function SVGCompElement(t, e, i) {
this.layers = t.layers, this.supports3d = !0, this.completeLayers = !1, this.pendingElements = [], this.elements = this.layers ? createSizedArray(this.layers.length) : [], this.initElement(t, e, i), this.tm = t.tm ? N.getProp(this, t.tm, 0, e.frameRate, this) : {
_placeholder: !0
}
}
function SVGRenderer(t, e) {
this.animationItem = t, this.layers = null, this.renderedFrame = -1, this.svgElement = createNS("svg");
var i = "";
if (e && e.title) {
var s = createNS("title"),
a = D();
s.setAttribute("id", a), s.textContent = e.title, this.svgElement.appendChild(s), i += a
}
if (e && e.description) {
var r = createNS("desc"),
n = D();
r.setAttribute("id", n), r.textContent = e.description, this.svgElement.appendChild(r), i += " " + n
}
i && this.svgElement.setAttribute("aria-labelledby", i);
var o = createNS("defs");
this.svgElement.appendChild(o);
var h = createNS("g");
this.svgElement.appendChild(h), this.layerElement = h, this.renderConfig = {
preserveAspectRatio: e && e.preserveAspectRatio || "xMidYMid meet",
imagePreserveAspectRatio: e && e.imagePreserveAspectRatio || "xMidYMid slice",
contentVisibility: e && e.contentVisibility || "visible",
progressiveLoad: e && e.progressiveLoad || !1,
hideOnTransparent: !(e && !1 === e.hideOnTransparent),
viewBoxOnly: e && e.viewBoxOnly || !1,
viewBoxSize: e && e.viewBoxSize || !1,
className: e && e.className || "",
id: e && e.id || "",
focusable: e && e.focusable,
filterSize: {
width: e && e.filterSize && e.filterSize.width || "100%",
height: e && e.filterSize && e.filterSize.height || "100%",
x: e && e.filterSize && e.filterSize.x || "0%",
y: e && e.filterSize && e.filterSize.y || "0%"
},
width: e && e.width,
height: e && e.height,
runExpressions: !e || void 0 === e.runExpressions || e.runExpressions
}, this.globalData = {
_mdf: !1,
frameNum: -1,
defs: o,
renderConfig: this.renderConfig
}, this.elements = [], this.pendingElements = [], this.destroyed = !1, this.rendererType = "svg"
}
return extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], SVGTextLottieElement), SVGTextLottieElement.prototype.createContent = function() {
this.data.singleShape && !this.globalData.fontManager.chars && (this.textContainer = createNS("text"))
}, SVGTextLottieElement.prototype.buildTextContents = function(t) {
for (var e = 0, i = t.length, s = [], a = ""; e < i;) "\r" === t[e] || "\x03" === t[e] ? (s.push(a), a = "") : a += t[e], e += 1;
return s.push(a), s
}, SVGTextLottieElement.prototype.buildShapeData = function(t, e) {
if (t.shapes && t.shapes.length) {
var i = t.shapes[0];
if (i.it) {
var s = i.it[i.it.length - 1];
s.s && (s.s.k[0] = e, s.s.k[1] = e)
}
}
return t
}, SVGTextLottieElement.prototype.buildNewText = function() {
this.addDynamicProperty(this);
var t = this.textProperty.currentData;
this.renderedLetters = createSizedArray(t ? t.l.length : 0), t.fc ? this.layerElement.setAttribute("fill", this.buildColor(t.fc)) : this.layerElement.setAttribute("fill", "rgba(0,0,0,0)"), t.sc && (this.layerElement.setAttribute("stroke", this.buildColor(t.sc)), this.layerElement.setAttribute("stroke-width", t.sw)), this.layerElement.setAttribute("font-size", t.finalSize);
var e = this.globalData.fontManager.getFontByName(t.f);
if (e.fClass) this.layerElement.setAttribute("class", e.fClass);
else {
this.layerElement.setAttribute("font-family", e.fFamily);
var i = t.fWeight,
s = t.fStyle;
this.layerElement.setAttribute("font-style", s), this.layerElement.setAttribute("font-weight", i)
}
this.layerElement.setAttribute("aria-label", t.t);
var a = t.l || [],
r = !!this.globalData.fontManager.chars;
u = a.length;
var n = this.mHelper,
o = this.data.singleShape,
h = 0,
l = 0,
p = !0,
f = .001 * t.tr * t.finalSize;
if (!o || r || t.sz) {
var m = this.textSpans.length;
for (c = 0; c < u; c += 1) {
if (this.textSpans[c] || (this.textSpans[c] = {
span: null,
childSpan: null,
glyph: null
}), !r || !o || 0 === c) {
if (g = m > c ? this.textSpans[c].span : createNS(r ? "g" : "text"), m <= c) {
if (g.setAttribute("stroke-linecap", "butt"), g.setAttribute("stroke-linejoin", "round"), g.setAttribute("stroke-miterlimit", "4"), this.textSpans[c].span = g, r) {
var d = createNS("g");
g.appendChild(d), this.textSpans[c].childSpan = d
}
this.textSpans[c].span = g, this.layerElement.appendChild(g)
}
g.style.display = "inherit"
}
if (n.reset(), o && (a[c].n && (h = -f, l += t.yOffset + (p ? 1 : 0), p = !1), this.applyTextPropertiesToMatrix(t, n, a[c].line, h, l), h += (a[c].l || 0) + f), r) {
if (1 === (y = this.globalData.fontManager.getCharData(t.finalText[c], e.fStyle, this.globalData.fontManager.getFontByName(t.f).fFamily)).t) v = new SVGCompElement(y.data, this.globalData, this);
else {
var c, u, g, y, v, S = td;
y.data && y.data.shapes && (S = this.buildShapeData(y.data, t.finalSize)), v = new SVGShapeElement(S, this.globalData, this)
}
if (this.textSpans[c].glyph) {
var P = this.textSpans[c].glyph;
this.textSpans[c].childSpan.removeChild(P.layerElement), P.destroy()
}
this.textSpans[c].glyph = v, v._debug = !0, v.prepareFrame(0), v.renderFrame(), this.textSpans[c].childSpan.appendChild(v.layerElement), 1 === y.t && this.textSpans[c].childSpan.setAttribute("transform", "scale(" + t.finalSize / 100 + "," + t.finalSize / 100 + ")")
} else o && g.setAttribute("transform", "translate(" + n.props[12] + "," + n.props[13] + ")"), g.textContent = a[c].val, g.setAttributeNS("http://www.w3.org/XML/1998/namespace", "xml:space", "preserve")
}
o && g && g.setAttribute("d", "")
} else {
var b = this.textContainer,
_ = "start";
switch (t.j) {
case 1:
_ = "end";
break;
case 2:
_ = "middle";
break;
default:
_ = "start"
}
b.setAttribute("text-anchor", _), b.setAttribute("letter-spacing", f);
var A = this.buildTextContents(t.finalText);
for (c = 0, u = A.length, l = t.ps ? t.ps[1] + t.ascent : 0; c < u; c += 1)(g = this.textSpans[c].span || createNS("tspan")).textContent = A[c], g.setAttribute("x", 0), g.setAttribute("y", l), g.style.display = "inherit", b.appendChild(g), this.textSpans[c] || (this.textSpans[c] = {
span: null,
glyph: null
}), this.textSpans[c].span = g, l += t.finalLineHeight;
this.layerElement.appendChild(b)
}
for (; c < this.textSpans.length;) this.textSpans[c].span.style.display = "none", c += 1;
this._sizeChanged = !0
}, SVGTextLottieElement.prototype.sourceRectAtTime = function() {
if (this.prepareFrame(this.comp.renderedFrame - this.data.st), this.renderInnerContent(), this._sizeChanged) {
this._sizeChanged = !1;
var t = this.layerElement.getBBox();
this.bbox = {
top: t.y,
left: t.x,
width: t.width,
height: t.height
}
}
return this.bbox
}, SVGTextLottieElement.prototype.getValue = function() {
var t, e, i = this.textSpans.length;
for (t = 0, this.renderedFrame = this.comp.renderedFrame; t < i; t += 1)(e = this.textSpans[t].glyph) && (e.prepareFrame(this.comp.renderedFrame - this.data.st), e._mdf && (this._mdf = !0))
}, SVGTextLottieElement.prototype.renderInnerContent = function() {
if (this.validateText(), (!this.data.singleShape || this._mdf) && (this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag), this.lettersChangedFlag || this.textAnimator.lettersChangedFlag)) {
this._sizeChanged = !0;
var t, e, i, s, a, r = this.textAnimator.renderedLetters,
n = this.textProperty.currentData.l;
for (t = 0, e = n.length; t < e; t += 1) !n[t].n && (i = r[t], s = this.textSpans[t].span, (a = this.textSpans[t].glyph) && a.renderFrame(), i._mdf.m && s.setAttribute("transform", i.m), i._mdf.o && s.setAttribute("opacity", i.o), i._mdf.sw && s.setAttribute("stroke-width", i.sw), i._mdf.sc && s.setAttribute("stroke", i.sc), i._mdf.fc && s.setAttribute("fill", i.fc))
}
}, extendPrototype([IImageElement], ISolidElement), ISolidElement.prototype.createContent = function() {
var t = createNS("rect");
t.setAttribute("width", this.data.sw), t.setAttribute("height", this.data.sh), t.setAttribute("fill", this.data.sc), this.layerElement.appendChild(t)
}, NullElement.prototype.prepareFrame = function(t) {
this.prepareProperties(t, !0)
}, NullElement.prototype.renderFrame = function() {}, NullElement.prototype.getBaseElement = function() {
return null
}, NullElement.prototype.destroy = function() {}, NullElement.prototype.sourceRectAtTime = function() {}, NullElement.prototype.hide = function() {}, extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement], NullElement), extendPrototype([BaseRenderer], SVGRendererBase), SVGRendererBase.prototype.createNull = function(t) {
return new NullElement(t, this.globalData, this)
}, SVGRendererBase.prototype.createShape = function(t) {
return new SVGShapeElement(t, this.globalData, this)
}, SVGRendererBase.prototype.createText = function(t) {
return new SVGTextLottieElement(t, this.globalData, this)
}, SVGRendererBase.prototype.createImage = function(t) {
return new IImageElement(t, this.globalData, this)
}, SVGRendererBase.prototype.createSolid = function(t) {
return new ISolidElement(t, this.globalData, this)
}, SVGRendererBase.prototype.configAnimation = function(t) {
this.svgElement.setAttribute("xmlns", "http://www.w3.org/2000/svg"), this.svgElement.setAttribute("xmlns:xlink", "http://www.w3.org/1999/xlink"), this.renderConfig.viewBoxSize ? this.svgElement.setAttribute("viewBox", this.renderConfig.viewBoxSize) : this.svgElement.setAttribute("viewBox", "0 0 " + t.w + " " + t.h), this.renderConfig.viewBoxOnly || (this.svgElement.setAttribute("width", t.w), this.svgElement.setAttribute("height", t.h), this.svgElement.style.width = "100%", this.svgElement.style.height = "100%", this.svgElement.style.transform = "translate3d(0,0,0)", this.svgElement.style.contentVisibility = this.renderConfig.contentVisibility), this.renderConfig.width && this.svgElement.setAttribute("width", this.renderConfig.width), this.renderConfig.height && this.svgElement.setAttribute("height", this.renderConfig.height), this.renderConfig.className && this.svgElement.setAttribute("class", this.renderConfig.className), this.renderConfig.id && this.svgElement.setAttribute("id", this.renderConfig.id), void 0 !== this.renderConfig.focusable && this.svgElement.setAttribute("focusable", this.renderConfig.focusable), this.svgElement.setAttribute("preserveAspectRatio", this.renderConfig.preserveAspectRatio), this.animationItem.wrapper.appendChild(this.svgElement);
var e = this.globalData.defs;
this.setupGlobalData(t, e), this.globalData.progressiveLoad = this.renderConfig.progressiveLoad, this.data = t;
var i = createNS("clipPath"),
s = createNS("rect");
s.setAttribute("width", t.w), s.setAttribute("height", t.h), s.setAttribute("x", 0), s.setAttribute("y", 0);
var a = D();
i.setAttribute("id", a), i.appendChild(s), this.layerElement.setAttribute("clip-path", "url(" + getLocationHref() + "#" + a + ")"), e.appendChild(i), this.layers = t.layers, this.elements = createSizedArray(t.layers.length)
}, SVGRendererBase.prototype.destroy = function() {
this.animationItem.wrapper && (this.animationItem.wrapper.innerText = ""), this.layerElement = null, this.globalData.defs = null;
var t, e = this.layers ? this.layers.length : 0;
for (t = 0; t < e; t += 1) this.elements[t] && this.elements[t].destroy && this.elements[t].destroy();
this.elements.length = 0, this.destroyed = !0, this.animationItem = null
}, SVGRendererBase.prototype.updateContainerSize = function() {}, SVGRendererBase.prototype.findIndexByInd = function(t) {
var e = 0,
i = this.layers.length;
for (e = 0; e < i; e += 1)
if (this.layers[e].ind === t) return e;
return -1
}, SVGRendererBase.prototype.buildItem = function(t) {
var e = this.elements;
if (!e[t] && 99 !== this.layers[t].ty) {
e[t] = !0;
var i = this.createItem(this.layers[t]);
if (e[t] = i, getExpressionsPlugin() && (0 === this.layers[t].ty && this.globalData.projectInterface.registerComposition(i), i.initExpressions()), this.appendElementInPos(i, t), this.layers[t].tt) {
var s = "tp" in this.layers[t] ? this.findIndexByInd(this.layers[t].tp) : t - 1;
if (-1 === s) return;
if (this.elements[s] && !0 !== this.elements[s]) {
var a = e[s].getMatte(this.layers[t].tt);
i.setMatte(a)
} else this.buildItem(s), this.addPendingElement(i)
}
}
}, SVGRendererBase.prototype.checkPendingElements = function() {
for (; this.pendingElements.length;) {
var t = this.pendingElements.pop();
if (t.checkParenting(), t.data.tt)
for (var e = 0, i = this.elements.length; e < i;) {
if (this.elements[e] === t) {
var s = "tp" in t.data ? this.findIndexByInd(t.data.tp) : e - 1,
a = this.elements[s].getMatte(this.layers[e].tt);
t.setMatte(a);
break
}
e += 1
}
}
}, SVGRendererBase.prototype.renderFrame = function(t) {
if (this.renderedFrame !== t && !this.destroyed) {
null === t ? t = this.renderedFrame : this.renderedFrame = t, this.globalData.frameNum = t, this.globalData.frameId += 1, this.globalData.projectInterface.currentFrame = t, this.globalData._mdf = !1;
var e, i = this.layers.length;
for (this.completeLayers || this.checkLayers(t), e = i - 1; e >= 0; e -= 1)(this.completeLayers || this.elements[e]) && this.elements[e].prepareFrame(t - this.layers[e].st);
if (this.globalData._mdf)
for (e = 0; e < i; e += 1)(this.completeLayers || this.elements[e]) && this.elements[e].renderFrame()
}
}, SVGRendererBase.prototype.appendElementInPos = function(t, e) {
var i, s = t.getBaseElement();
if (s) {
for (var a = 0; a < e;) this.elements[a] && !0 !== this.elements[a] && this.elements[a].getBaseElement() && (i = this.elements[a].getBaseElement()), a += 1;
i ? this.layerElement.insertBefore(s, i) : this.layerElement.appendChild(s)
}
}, SVGRendererBase.prototype.hide = function() {
this.layerElement.style.display = "none"
}, SVGRendererBase.prototype.show = function() {
this.layerElement.style.display = "block"
}, extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement, RenderableDOMElement], ICompElement), ICompElement.prototype.initElement = function(t, e, i) {
this.initFrame(), this.initBaseData(t, e, i), this.initTransform(t, e, i), this.initRenderable(), this.initHierarchy(), this.initRendererElement(), this.createContainerElements(), this.createRenderableComponents(), (this.data.xt || !e.progressiveLoad) && this.buildAllItems(), this.hide()
}, ICompElement.prototype.prepareFrame = function(t) {
if (this._mdf = !1, this.prepareRenderableFrame(t), this.prepareProperties(t, this.isInRange), this.isInRange || this.data.xt) {
if (this.tm._placeholder) this.renderedFrame = t / this.data.sr;
else {
var e, i = this.tm.v;
i === this.data.op && (i = this.data.op - 1), this.renderedFrame = i
}
var s = this.elements.length;
for (this.completeLayers || this.checkLayers(this.renderedFrame), e = s - 1; e >= 0; e -= 1)(this.completeLayers || this.elements[e]) && (this.elements[e].prepareFrame(this.renderedFrame - this.layers[e].st), this.elements[e]._mdf && (this._mdf = !0))
}
}, ICompElement.prototype.renderInnerContent = function() {
var t, e = this.layers.length;
for (t = 0; t < e; t += 1)(this.completeLayers || this.elements[t]) && this.elements[t].renderFrame()
}, ICompElement.prototype.setElements = function(t) {
this.elements = t
}, ICompElement.prototype.getElements = function() {
return this.elements
}, ICompElement.prototype.destroyElements = function() {
var t, e = this.layers.length;
for (t = 0; t < e; t += 1) this.elements[t] && this.elements[t].destroy()
}, ICompElement.prototype.destroy = function() {
this.destroyElements(), this.destroyBaseElement()
}, extendPrototype([SVGRendererBase, ICompElement, SVGBaseElement], SVGCompElement), SVGCompElement.prototype.createComp = function(t) {
return new SVGCompElement(t, this.globalData, this)
}, extendPrototype([SVGRendererBase], SVGRenderer), SVGRenderer.prototype.createComp = function(t) {
return new SVGCompElement(t, this.globalData, this)
}, F.svg = SVGRenderer, tt.registerModifier("tm", TrimModifier), tt.registerModifier("pb", PuckerAndBloatModifier), tt.registerModifier("rp", RepeaterModifier), tt.registerModifier("rd", RoundCornersModifier), tt.registerModifier("zz", ZigZagModifier), tt.registerModifier("op", OffsetPathModifier), W
}())
}
}
]);