 {
      this.currentData.t = this.data.d.k[this.keysIndex].s.t;
      var e = this.currentData, s = this.keysIndex;
      if (this.lock)
        this.setCurrentData(this.currentData);
      else {
        var i;
        this.lock = !0, this._mdf = !1;
        var a = this.effectsSequence.length,
            r = t || this.data.d.k[this.keysIndex].s;
        for (i = 0; i < a; i += 1)
          r = s !== this.keysIndex ?
              this.effectsSequence[i](r, r.t) :
              this.effectsSequence[i](this.currentData, r.t);
        e !== r && this.setCurrentData(r),
            this.v = this.currentData, this.pv = this.v, this.lock = !1,
            this.frameId = this.elem.globalData.frameId
      }
    }
  }, gt.prototype.getKeyframeValue = function() {
    for (var t = this.data.d.k, e = this.elem.comp.renderedFrame, s = 0,
             i = t.length;
         s <= i - 1 && !(s === i - 1 || t[s + 1].t > e);)
      s += 1;
    return this.keysIndex !== s && (this.keysIndex = s),
           this.data.d.k[this.keysIndex].s
  }, gt.prototype.buildFinalText = function(t) {
    for (var e, s = V.getCombinedCharacterCodes(), i = [], a = 0, r = t.length;
         a < r;)
      e = t.charCodeAt(a),
      -1 !== s.indexOf(e) ? i[i.length - 1] += t.charAt(a) :
          55296 <= e && e <= 56319 && 56320 <= (e = t.charCodeAt(a + 1)) &&
              e <= 57343 ?
                            (i.push(t.substr(a, 2)), a += 1) :
                            i.push(t.charAt(a)),
      a += 1;
    return i
  }, gt.prototype.completeTextData = function(t) {
    t.__complete = !0;
    var e, s, i, a, r, n, h, o = this.elem.globalData.fontManager,
                             l = this.data, p = [], f = 0, d = l.m.g, m = 0,
                             c = 0, u = 0, g = [], y = 0, v = 0,
                             b = o.getFontByName(t.f), _ = 0, k = q(b);
    t.fWeight = k.weight, t.fStyle = k.style, t.finalSize = t.s,
    t.finalText = this.buildFinalText(t.t), s = t.finalText.length,
    t.finalLineHeight = t.lh;
    var A, P = t.tr / 1e3 * t.finalSize;
    if (t.sz)
      for (var S, C, D = !0, x = t.sz[0], w = t.sz[1]; D;) {
        y = S = 0, s = (C = this.buildFinalText(t.t)).length,
        P = t.tr / 1e3 * t.finalSize;
        var F = -1;
        for (e = 0; e < s; e += 1)
          A = C[e].charCodeAt(0), i = !1,
          ' ' === C[e] ? F = e :
                         13 !== A && 3 !== A ||
                  (i = !(y = 0), S += t.finalLineHeight || 1.2 * t.finalSize),
          x < y +
                          (_ = o.chars ?
                               (h = o.getCharData(C[e], b.fStyle, b.fFamily),
                                i ? 0 : h.w * t.finalSize / 100) :
                               o.measureText(C[e], t.f, t.finalSize)) &&
                  ' ' !== C[e] ?
              (-1 === F ? s += 1 : e = F,
               S += t.finalLineHeight || 1.2 * t.finalSize,
               C.splice(e, F === e ? 1 : 0, '\r'), F = -1, y = 0) :
              (y += _, y += P);
        S += b.ascent * t.finalSize / 100,
            this.canResize && t.finalSize > this.minimumFontSize && w < S ?
            (t.finalSize -= 1, t.finalLineHeight = t.finalSize * t.lh / t.s) :
            (t.finalText = C, s = t.finalText.length, D = !1)
      }
    y = -P;
    var T, E = _ = 0;
    for (e = 0; e < s; e += 1)
      if (i = !1,
          13 === (A = (T = t.finalText[e]).charCodeAt(0)) || 3 === A ?
              (E = 0, g.push(y), v = v < y ? y : v, y = -2 * P, i = !(a = ''),
               u += 1) :
              a = T,
          _ = o.chars ?
              (h = o.getCharData(T, b.fStyle, o.getFontByName(t.f).fFamily),
               i ? 0 : h.w * t.finalSize / 100) :
              o.measureText(a, t.f, t.finalSize),
          ' ' === T ? E += _ + P : (y += _ + P + E, E = 0), p.push({
            l: _,
            an: _,
            add: m,
            n: i,
            anIndexes: [],
            val: a,
            line: u,
            animatorJustifyOffset: 0
          }),
          2 == d) {
        if (m += _, '' === a || ' ' === a || e === s - 1) {
          for ('' !== a && ' ' !== a || (m -= _); c <= e;)
            p[c].an = m, p[c].ind = f, p[c].extra = _, c += 1;
          f += 1, m = 0
        }
      } else if (3 == d) {
        if (m += _, '' === a || e === s - 1) {
          for ('' === a && (m -= _); c <= e;)
            p[c].an = m, p[c].ind = f, p[c].extra = _, c += 1;
          m = 0, f += 1
        }
      } else
        p[f].ind = f, p[f].extra = 0, f += 1;
    if (t.l = p, v = v < y ? y : v, g.push(y), t.sz)
      t.boxWidth = t.sz[0], t.justifyOffset = 0;
    else
      switch (t.boxWidth = v, t.j) {
        case 1:
          t.justifyOffset = -t.boxWidth;
          break;
        case 2:
          t.justifyOffset = -t.boxWidth / 2;
          break;
        default:
          t.justifyOffset = 0
      }
    t.lineWidths = g;
    var M, I, L, V, R = l.a;
    n = R.length;
    var z = [];
    for (r = 0; r < n; r += 1) {
      for ((M = R[r]).a.sc && (t.strokeColorAnim = !0),
           M.a.sw && (t.strokeWidthAnim = !0),
           (M.a.fc || M.a.fh || M.a.fs || M.a.fb) && (t.fillColorAnim = !0),
           V = 0, L = M.s.b, e = 0;
           e < s; e += 1)
        (I = p[e]).anIndexes[r] = V,
             (1 == L && '' !== I.val ||
              2 == L && '' !== I.val && ' ' !== I.val ||
              3 == L && (I.n || ' ' == I.val || e == s - 1) ||
              4 == L && (I.n || e == s - 1)) &&
            (1 === M.s.rn && z.push(V), V += 1);
      l.a[r].s.totalChars = V;
      var N, O = -1;
      if (1 === M.s.rn)
        for (e = 0; e < s; e += 1)
          O != (I = p[e]).anIndexes[r] &&
              (O = I.anIndexes[r],
               N = z.splice(Math.floor(Math.random() * z.length), 1)[0]),
              I.anIndexes[r] = N
    }
    t.yOffset = t.finalLineHeight || 1.2 * t.finalSize, t.ls = t.ls || 0,
    t.ascent = b.ascent * t.finalSize / 100
  }, gt.prototype.updateDocumentData = function(t, e) {
    e = void 0 === e ? this.keysIndex : e;
    var s = this.copyData({}, this.data.d.k[e].s);
    s = this.copyData(s, t), this.data.d.k[e].s = s, this.recalculate(e),
    this.elem.addDynamicProperty(this)
  }, gt.prototype.recalculate = function(t) {
    var e = this.data.d.k[t].s;
    e.__complete = !1, this.keysIndex = 0, this._isFirstFrame = !0,
    this.getValue(e)
  }, gt.prototype.canResizeFont = function(t) {
    this.canResize = t, this.recalculate(this.keysIndex),
    this.elem.addDynamicProperty(this)
  }, gt.prototype.setMinimumFontSize = function(t) {
    this.minimumFontSize = Math.floor(t) || 1, this.recalculate(this.keysIndex),
    this.elem.addDynamicProperty(this)
  };
  var yt, vt, bt, _t, kt,
      At =
          function() {
        var m = Math.max, c = Math.min, u = Math.floor;
        function i(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 = R.getProp(t, e.s || {k: 0}, 0, 0, this),
          this.e = 'e' in e ? R.getProp(t, e.e, 0, 0, this) : {v: 100},
          this.o = R.getProp(t, e.o || {k: 0}, 0, 0, this),
          this.xe = R.getProp(t, e.xe || {k: 0}, 0, 0, this),
          this.ne = R.getProp(t, e.ne || {k: 0}, 0, 0, this),
          this.a = R.getProp(t, e.a, 0, .01, this),
          this.dynamicProperties.length || this.getValue()
        }
        return i.prototype = {
          getMult: function(t) {
            this._currentTextLength !==
                    this.elem.textProperty.currentData.l.length &&
                this.getValue();
            var e = 0, s = 0, i = 1, a = 1;
            0 < this.ne.v ? e = this.ne.v / 100 : s = -this.ne.v / 100,
                            0 < this.xe.v ? i = 1 - this.xe.v / 100 :
                                            a = 1 + this.xe.v / 100;
            var r = W.getBezierEasing(e, s, i, a).get, n = 0, h = this.finalS,
                o = this.finalE, l = this.data.sh;
            if (2 === l)
              n =
                  r(n = o === h ? o <= t ? 1 : 0 :
                                  m(0, c(.5 / (o - h) + (t - h) / (o - h), 1)));
            else if (3 === l)
              n =
                  r(n = o === h ?
                        o <= t ? 0 : 1 :
                        1 - m(0, c(.5 / (o - h) + (t - h) / (o - h), 1)));
            else if (4 === l)
              o === h ? n = 0 :
                  (n = m(0, c(.5 / (o - h) + (t - h) / (o - h), 1))) < .5 ?
                        n *= 2 :
                        n = 1 - 2 * (n - .5),
                        n = r(n);
            else if (5 === l) {
              if (o === h)
                n = 0;
              else {
                var p = o - h, f = -p / 2 + (t = c(m(0, t + .5 - h), o - h)),
                    d = p / 2;
                n = Math.sqrt(1 - f * f / (d * d))
              }
              n = r(n)
            } else
              n = 6 === l ?
                  r(n = o === h ?
                        0 :
                        (t = c(m(0, t + .5 - h), o - h),
                         (1 + Math.cos(Math.PI + 2 * Math.PI * t / (o - h))) /
                             2)) :
                  (t >= u(h) &&
                       (n = m(0, c(t - h < 0 ? c(o, 1) - (h - t) : o - t, 1))),
                   r(n));
            return n * 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,
                s = this.o.v / e, i = this.s.v / e + s, a = this.e.v / e + s;
            if (a < i) {
              var r = i;
              i = a, a = r
            }
            this.finalS = i, this.finalE = a
          }
        },
               M([F], i), {
          getTextSelectorProp: function(t, e, s) {
            return new i(t, e, s)
          }
        }
      }(),
      Pt =
          function(t, e, s) {
        var i = 0, a = t, r = D(a);
        return {
          newElement: function() {
            return i ? r[i -= 1] : e()
          }, release: function(t) {
            i === a && (r = St.double(r), a *= 2), s && s(t), r[i] = t, i += 1
          }
        }
      },
      St = {
        double: function(t) {
          return t.concat(D(t.length))
        }
      },
      Ct =
          Pt(8,
             function() {
               return j('float32', 2)
             }),
      Dt =
          ((yt = Pt(
                4,
                function() {
                  return new N
                },
                function(t) {
                  var e, s = t._length;
                  for (e = 0; e < s; e += 1)
                    Ct.release(t.v[e]), Ct.release(t.i[e]), Ct.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, s = yt.newElement(),
                        i = void 0 === t._length ? t.v.length : t._length;
                 for (s.setLength(i), s.c = t.c, e = 0; e < i; e += 1)
                   s.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 s
               },
           yt),
      xt =
          (vt = {
            newShapeCollection: function() {
              var t;
              t = bt ? kt[bt -= 1] : new Q;
              return t
            },
            release: function(t) {
              var e, s = t._length;
              for (e = 0; e < s; e += 1) Dt.release(t.shapes[e]);
              t._length = 0, bt === _t && (kt = St.double(kt), _t *= 2);
              kt[bt] = t, bt += 1
            }
          },
           bt = 0, kt = D(_t = 4), vt),
      wt =
          Pt(8,
             function() {
               return {
                 lengths: [], totalLength: 0
               }
             },
             function(t) {
               var e, s = t.lengths.length;
               for (e = 0; e < s; e += 1) Ft.release(t.lengths[e]);
               t.lengths.length = 0
             }),
      Ft = Pt(8, function() {
        return {
          addedLength: 0, percents: j('float32', P), lengths: j('float32', P)
        }
      }), Tt = function() {
        function r(t) {
          for (var e, s = t.split('\r\n'), i = {}, a = 0, r = 0; r < s.length;
               r += 1)
            2 === (e = s[r].split(':')).length &&
                (i[e[0]] = e[1].trim(), a += 1);
          if (0 === a) throw new Error;
          return i
        }
        return function(e) {
          for (var t = [], s = 0; s < e.length; s += 1) {
            var i = e[s], a = {time: i.tm, duration: i.dr};
            try {
              a.payload = JSON.parse(e[s].cm)
            } catch (t) {
              try {
                a.payload = r(e[s].cm)
              } catch (t) {
                a.payload = {name: e[s]}
              }
            }
            t.push(a)
          }
          return t
        }
      }();
  function Et() {}
  function Mt(t, e) {
    this.animationItem = t, this.layers = null, this.renderedFrame = -1,
    this.svgElement = x('svg');
    var s = '';
    if (e && e.title) {
      var i = x('title'), a = S();
      i.setAttribute('id', a), i.textContent = e.title,
                               this.svgElement.appendChild(i), s += a
    }
    if (e && e.description) {
      var r = x('desc'), n = S();
      r.setAttribute('id', n), r.textContent = e.description,
                               this.svgElement.appendChild(r), s += ' ' + n
    }
    s && this.svgElement.setAttribute('aria-labelledby', s);
    var h = x('defs');
    this.svgElement.appendChild(h);
    var o = x('g');
    this.svgElement.appendChild(o),
        this.layerElement = o, this.renderConfig = {
          preserveAspectRatio: e && e.preserveAspectRatio || 'xMidYMid meet',
          imagePreserveAspectRatio:
              e && e.imagePreserveAspectRatio || 'xMidYMid slice',
          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%'
          }
        },
        this.globalData =
            {_mdf: !1, frameNum: -1, defs: h, renderConfig: this.renderConfig},
        this.elements = [], this.pendingElements = [], this.destroyed = !1,
        this.rendererType = 'svg'
  }
  function It(t, e, s) {
    this.data = t, this.element = e, this.globalData = s, this.storedData = [],
    this.masksProperties = this.data.masksProperties || [],
    this.maskElement = null;
    var i, a, r = this.globalData.defs,
              n = this.masksProperties ? this.masksProperties.length : 0;
    this.viewData = D(n), this.solidPath = '';
    var h, o, l, p, f, d, m = this.masksProperties, c = 0, u = [], g = S(),
                          y = 'clipPath', v = 'clip-path';
    for (i = 0; i < n; i += 1)
      if (('a' !== m[i].mode && 'n' !== m[i].mode || m[i].inv ||
           100 !== m[i].o.k || m[i].o.x) &&
              (v = y = 'mask'),
          's' !== m[i].mode && 'i' !== m[i].mode || 0 !== c ?
              l = null :
              ((l = x('rect')).setAttribute('fill', '#ffffff'),
               l.setAttribute('width', this.element.comp.data.w || 0),
               l.setAttribute('height', this.element.comp.data.h || 0),
               u.push(l)),
          a = x('path'), 'n' === m[i].mode)
        this.viewData[i] = {
          op: R.getProp(this.element, m[i].o, 0, .01, this.element),
          prop: H.getShapeProp(this.element, m[i], 3),
          elem: a,
          lastPath: ''
        },
        r.appendChild(a);
      else {
        var b;
        if (c += 1,
            a.setAttribute('fill', 's' === m[i].mode ? '#000000' : '#ffffff'),
            a.setAttribute('clip-rule', 'nonzero'),
            0 !== m[i].x.k ?
                (v = y = 'mask',
                 d = R.getProp(this.element, m[i].x, 0, null, this.element),
                 b = S(), (p = x('filter')).setAttribute('id', b),
                 (f = x('feMorphology')).setAttribute('operator', 'erode'),
                 f.setAttribute('in', 'SourceGraphic'),
                 f.setAttribute('radius', '0'), p.appendChild(f),
                 r.appendChild(p),
                 a.setAttribute(
                     'stroke', 's' === m[i].mode ? '#000000' : '#ffffff')) :
                d = f = null,
            this.storedData[i] = {
              elem: a,
              x: d,
              expan: f,
              lastPath: '',
              lastOperator: '',
              filterId: b,
              lastRadius: 0
            },
            'i' === m[i].mode) {
          o = u.length;
          var _ = x('g');
          for (h = 0; h < o; h += 1) _.appendChild(u[h]);
          var k = x('mask');
          k.setAttribute('mask-type', 'alpha'),
              k.setAttribute('id', g + '_' + c), k.appendChild(a),
              r.appendChild(k),
              _.setAttribute('mask', 'url(' + A + '#' + g + '_' + c + ')'),
              u.length = 0, u.push(_)
        } else
          u.push(a);
        m[i].inv && !this.solidPath &&
            (this.solidPath = this.createLayerSolidPath()),
            this.viewData[i] = {
              elem: a,
              lastPath: '',
              op: R.getProp(this.element, m[i].o, 0, .01, this.element),
              prop: H.getShapeProp(this.element, m[i], 3),
              invRect: l
            },
            this.viewData[i].prop.k ||
            this.drawPath(m[i], this.viewData[i].prop.v, this.viewData[i])
      }
    for (this.maskElement = x(y), n = u.length, i = 0; i < n; i += 1)
      this.maskElement.appendChild(u[i]);
    0 < c &&
        (this.maskElement.setAttribute('id', g),
         this.element.maskedElement.setAttribute(v, 'url(' + A + '#' + g + ')'),
         r.appendChild(this.maskElement)),
        this.viewData.length && this.element.addRenderableComponent(this)
  }
  function Lt() {}
  function Vt() {}
  function Rt() {}
  function zt() {}
  function Nt() {}
  function Ot(t, e) {
    this.elem = t, this.pos = e
  }
  function qt(t, e) {
    this.data = t, this.type = t.ty, this.d = '', this.lvl = e, this._mdf = !1,
    this.closed = !0 === t.hd, this.pElem = x('path'), this.msElem = null
  }
  function Bt(t, e, s) {
    this.caches = [], this.styles = [], this.transformers = t, this.lStr = '',
    this.sh = s, this.lvl = e, this._isAnimated = !!s.k;
    for (var i = 0, a = t.length; i < a;) {
      if (t[i].mProps.dynamicProperties.length) {
        this._isAnimated = !0;
        break
      }
      i += 1
    }
  }
  function jt(t, e, s) {
    this.transform = {mProps: t, op: e, container: s}, this.elements = [],
    this._isAnimated = this.transform.mProps.dynamicProperties.length ||
        this.transform.op.effectsSequence.length
  }
  function Wt(t, e, s) {
    this.initDynamicPropertyContainer(t),
        this.getValue = this.iterateDynamicProperties,
        this.o = R.getProp(t, e.o, 0, .01, this),
        this.w = R.getProp(t, e.w, 0, null, this),
        this.d = new $(t, e.d || {}, 'svg', this),
        this.c = R.getProp(t, e.c, 1, 255, this), this.style = s,
        this._isAnimated = !!this._isAnimated
  }
  function Xt(t, e, s) {
    this.initDynamicPropertyContainer(t),
        this.getValue = this.iterateDynamicProperties,
        this.o = R.getProp(t, e.o, 0, .01, this),
        this.c = R.getProp(t, e.c, 1, 255, this), this.style = s
  }
  function Ht(t, e, s) {
    this.initDynamicPropertyContainer(t),
        this.getValue = this.iterateDynamicProperties,
        this.initGradientData(t, e, s)
  }
  function Yt(t, e, s) {
    this.initDynamicPropertyContainer(t),
        this.getValue = this.iterateDynamicProperties,
        this.w = R.getProp(t, e.w, 0, null, this),
        this.d = new $(t, e.d || {}, 'svg', this),
        this.initGradientData(t, e, s), this._isAnimated = !!this._isAnimated
  }
  function Gt() {
    this.it = [], this.prevViewData = [], this.gr = x('g')
  }
  Et.prototype.checkLayers =
      function(t) {
    var e, s, i = this.layers.length;
    for (this.completeLayers = !0, e = i - 1; 0 <= e; e -= 1)
      this.elements[e] ||
          (s = this.layers[e]).ip - s.st <= t - this.layers[e].st &&
              s.op - s.st > t - this.layers[e].st && this.buildItem(e),
          this.completeLayers = !!this.elements[e] && this.completeLayers;
    this.checkPendingElements()
  },
  Et.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:
        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);
      default:
        return this.createNull(t)
    }
  },
  Et.prototype.createCamera =
      function() {
    throw new Error('You\'re using a 3d camera. Try the html renderer.')
  },
  Et.prototype.createAudio =
      function(t) {
    return new ie(t, this.globalData, this)
  },
  Et.prototype.createFootage =
      function(t) {
    return new FootageElement(t, this.globalData, this)
  },
  Et.prototype.buildAllItems =
      function() {
    var t, e = this.layers.length;
    for (t = 0; t < e; t += 1) this.buildItem(t);
    this.checkPendingElements()
  },
  Et.prototype.includeLayers =
      function(t) {
    var e;
    this.completeLayers = !1;
    var s, i = t.length, a = this.layers.length;
    for (e = 0; e < i; e += 1)
      for (s = 0; s < a;) {
        if (this.layers[s].id === t[e].id) {
          this.layers[s] = t[e];
          break
        }
        s += 1
      }
  },
  Et.prototype.setProjectInterface =
      function(t) {
    this.globalData.projectInterface = t
  },
  Et.prototype.initItems =
      function() {
    this.globalData.progressiveLoad || this.buildAllItems()
  },
  Et.prototype.buildElementParenting =
      function(t, e, s) {
    for (var i = this.elements, a = this.layers, r = 0, n = a.length; r < n;)
      a[r].ind == e &&
          (i[r] && !0 !== i[r] ?
               (s.push(i[r]), i[r].setAsParent(),
                void 0 !== a[r].parent ?
                    this.buildElementParenting(t, a[r].parent, s) :
                    t.setHierarchy(s)) :
               (this.buildItem(r), this.addPendingElement(t))),
          r += 1
  },
  Et.prototype.addPendingElement =
      function(t) {
    this.pendingElements.push(t)
  },
  Et.prototype.searchExtraCompositions =
      function(t) {
    var e, s = t.length;
    for (e = 0; e < s; e += 1)
      if (t[e].xt) {
        var i = this.createComp(t[e]);
        i.initExpressions(),
            this.globalData.projectInterface.registerComposition(i)
      }
  },
  Et.prototype.setupGlobalData =
      function(t, e) {
    this.globalData.fontManager = new V,
    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}
  },
  M([Et], Mt),
  Mt.prototype.createNull =
      function(t) {
    return new Ut(t, this.globalData, this)
  },
  Mt.prototype.createShape =
      function(t) {
    return new ne(t, this.globalData, this)
  },
  Mt.prototype.createText =
      function(t) {
    return new re(t, this.globalData, this)
  },
  Mt.prototype.createImage =
      function(t) {
    return new ee(t, this.globalData, this)
  },
  Mt.prototype.createComp =
      function(t) {
    return new ae(t, this.globalData, this)
  },
  Mt.prototype.createSolid =
      function(t) {
    return new se(t, this.globalData, this)
  },
  Mt.prototype.configAnimation =
      function(t) {
    this.svgElement.setAttribute('xmlns', 'http://www.w3.org/2000/svg'),
        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.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 s = x('clipPath'), i = x('rect');
    i.setAttribute('width', t.w), i.setAttribute('height', t.h),
        i.setAttribute('x', 0), i.setAttribute('y', 0);
    var a = S();
    s.setAttribute('id', a), s.appendChild(i),
        this.layerElement.setAttribute('clip-path', 'url(' + A + '#' + a + ')'),
        e.appendChild(s), this.layers = t.layers,
                          this.elements = D(t.layers.length)
  },
  Mt.prototype.destroy =
      function() {
    var t;
    this.animationItem.wrapper && (this.animationItem.wrapper.innerText = ''),
        this.layerElement = null, this.globalData.defs = null;
    var e = this.layers ? this.layers.length : 0;
    for (t = 0; t < e; t += 1) this.elements[t] && this.elements[t].destroy();
    this.elements.length = 0, this.destroyed = !0, this.animationItem = null
  },
  Mt.prototype.updateContainerSize = function() {},
  Mt.prototype.buildItem =
      function(t) {
    var e = this.elements;
    if (!e[t] && 99 !== this.layers[t].ty) {
      e[t] = !0;
      var s = this.createItem(this.layers[t]);
      e[t] = s,
      h &&
          (0 === this.layers[t].ty &&
               this.globalData.projectInterface.registerComposition(s),
           s.initExpressions()),
      this.appendElementInPos(s, t),
      this.layers[t].tt &&
          (this.elements[t - 1] && !0 !== this.elements[t - 1] ?
               s.setMatte(e[t - 1].layerId) :
               (this.buildItem(t - 1), this.addPendingElement(s)))
    }
  },
  Mt.prototype.checkPendingElements =
      function() {
    for (; this.pendingElements.length;) {
      var t = this.pendingElements.pop();
      if (t.checkParenting(), t.data.tt)
        for (var e = 0, s = this.elements.length; e < s;) {
          if (this.elements[e] === t) {
            t.setMatte(this.elements[e - 1].layerId);
            break
          }
          e += 1
        }
    }
  },
  Mt.prototype.renderFrame =
      function(t) {
    if (this.renderedFrame !== t && !this.destroyed) {
      var e;
      null === t ? t = this.renderedFrame : this.renderedFrame = t,
                   this.globalData.frameNum = t, this.globalData.frameId += 1,
                   this.globalData.projectInterface.currentFrame = t,
                   this.globalData._mdf = !1;
      var s = this.layers.length;
      for (this.completeLayers || this.checkLayers(t), e = s - 1; 0 <= e;
           e -= 1)
        (this.completeLayers || this.elements[e]) &&
            this.elements[e].prepareFrame(t - this.layers[e].st);
      if (this.globalData._mdf)
        for (e = 0; e < s; e += 1)
          (this.completeLayers || this.elements[e]) &&
              this.elements[e].renderFrame()
    }
  },
  Mt.prototype.appendElementInPos =
      function(t, e) {
    var s = t.getBaseElement();
    if (s) {
      for (var i, a = 0; a < e;)
        this.elements[a] && !0 !== this.elements[a] &&
            this.elements[a].getBaseElement() &&
            (i = this.elements[a].getBaseElement()),
            a += 1;
      i ? this.layerElement.insertBefore(s, i) :
          this.layerElement.appendChild(s)
    }
  },
  Mt.prototype.hide =
      function() {
    this.layerElement.style.display = 'none'
  },
  Mt.prototype.show =
      function() {
    this.layerElement.style.display = 'block'
  },
  It.prototype.getMaskProperty =
      function(t) {
    return this.viewData[t].prop
  },
  It.prototype.renderFrame =
      function(t) {
    var e, s = this.element.finalTransform.mat, i = this.masksProperties.length;
    for (e = 0; e < i; e += 1)
      if ((this.viewData[e].prop._mdf || t) &&
              this.drawPath(
                  this.masksProperties[e], this.viewData[e].prop.v,
                  this.viewData[e]),
          (this.viewData[e].op._mdf || t) &&
              this.viewData[e].elem.setAttribute(
                  'fill-opacity', this.viewData[e].op.v),
          'n' !== this.masksProperties[e].mode &&
              (this.viewData[e].invRect &&
                   (this.element.finalTransform.mProp._mdf || t) &&
                   this.viewData[e].invRect.setAttribute(
                       'transform', s.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(' + A + '#' + 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))
      }
  },
  It.prototype.getMaskelement =
      function() {
    return this.maskElement
  },
  It.prototype.createLayerSolidPath =
      function() {
    var t = 'M0,0 ';
    return t += ' h' + this.globalData.compSize.w,
           t += ' v' + this.globalData.compSize.h,
           t += ' h-' + this.globalData.compSize.w,
           t += ' v-' + this.globalData.compSize.h + ' '
  },
  It.prototype.drawPath =
      function(t, e, s) {
    var i, a, r = ' M' + e.v[0][0] + ',' + e.v[0][1];
    for (a = e._length, i = 1; i < a; i += 1)
      r += ' C' + e.o[i - 1][0] + ',' + e.o[i - 1][1] + ' ' + e.i[i][0] + ',' +
          e.i[i][1] + ' ' + e.v[i][0] + ',' + e.v[i][1];
    if (e.c && 1 < a &&
            (r += ' C' + e.o[i - 1][0] + ',' + e.o[i - 1][1] + ' ' + e.i[0][0] +
                 ',' + e.i[0][1] + ' ' + e.v[0][0] + ',' + e.v[0][1]),
        s.lastPath !== r) {
      var n = '';
      s.elem &&
          (e.c && (n = t.inv ? this.solidPath + r : r),
           s.elem.setAttribute('d', n)),
          s.lastPath = r
    }
  },
  It.prototype.destroy =
      function() {
    this.element = null, this.globalData = null, this.maskElement = null,
    this.data = null, this.masksProperties = null
  },
  Lt.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, [])
    }
  },
  Vt.prototype = {
    initFrame: function() {
      this._isFirstFrame = !1, this.dynamicProperties = [], this._mdf = !1
    },
    prepareProperties: function(t, e) {
      var s, i = this.dynamicProperties.length;
      for (s = 0; s < i; s += 1)
        (e ||
         this._isParent &&
             'transform' === this.dynamicProperties[s].propType) &&
            (this.dynamicProperties[s].getValue(),
             this.dynamicProperties[s]._mdf &&
                 (this.globalData._mdf = !0, this._mdf = !0))
    },
    addDynamicProperty: function(t) {
      -1 === this.dynamicProperties.indexOf(t) && this.dynamicProperties.push(t)
    }
  },
  Rt.prototype = {
    initTransform: function() {
      this.finalTransform = {
        mProp: this.data.ks ? z.getTransformProperty(this, this.data.ks, this) :
                              {o: 0},
        _matMdf: !1,
        _opMdf: !1,
        mat: new I
      },
      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, s = 0, i = this.hierarchy.length;
        if (!this.finalTransform._matMdf)
          for (; s < i;) {
            if (this.hierarchy[s].finalTransform.mProp._mdf) {
              this.finalTransform._matMdf = !0;
              break
            }
            s += 1
          }
        if (this.finalTransform._matMdf)
          for (t = this.finalTransform.mProp.v.props, e.cloneFromProps(t),
              s = 0;
               s < i; s += 1)
            t = this.hierarchy[s].finalTransform.mProp.v.props,
            e.transform(
                t[0], t[1], t[2], t[3], t[4], t[5], t[6], t[7], t[8], t[9],
                t[10], t[11], t[12], t[13], t[14], t[15])
      }
    },
    globalToLocal: function(t) {
      var e = [];
      e.push(this.finalTransform);
      for (var s, i = !0, a = this.comp; i;)
        a.finalTransform ?
            (a.data.hasMask && e.splice(0, 0, a.finalTransform), a = a.comp) :
            i = !1;
      var r, n = e.length;
      for (s = 0; s < n; s += 1)
        r = e[s].mat.applyToPointArray(0, 0, 0),
        t = [t[0] - r[0], t[1] - r[1], 0];
      return t
    },
    mHelper: new I
  },
  zt.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}
    }
  },
  M(
      [
        zt,
        function(t) {
          function e() {}
          return e.prototype = t, e
        }({
          initElement: function(t, e, s) {
            this.initFrame(), this.initBaseData(t, e, s),
                this.initTransform(t, e, s), 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.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()
          }
        })
      ],
      Nt),
  qt.prototype.reset = function() {
    this.d = '', this._mdf = !1
  }, Bt.prototype.setAsAnimated = function() {
    this._isAnimated = !0
  }, M([F], Wt), M([F], Xt), Ht.prototype.initGradientData = function(t, e, s) {
    this.o = R.getProp(t, e.o, 0, .01, this),
    this.s = R.getProp(t, e.s, 1, null, this),
    this.e = R.getProp(t, e.e, 1, null, this),
    this.h = R.getProp(t, e.h || {k: 0}, 0, .01, this),
    this.a = R.getProp(t, e.a || {k: 0}, 0, B, this),
    this.g = new tt(t, e.g, this), this.style = s, this.stops = [],
    this.setGradientData(s.pElem, e), this.setGradientOpacity(e, s),
    this._isAnimated = !!this._isAnimated
  }, Ht.prototype.setGradientData = function(t, e) {
    var s = S(), i = x(1 === e.t ? 'linearGradient' : 'radialGradient');
    i.setAttribute('id', s), i.setAttribute('spreadMethod', 'pad'),
        i.setAttribute('gradientUnits', 'userSpaceOnUse');
    var a, r, n, h = [];
    for (n = 4 * e.g.p, r = 0; r < n; r += 4)
      a = x('stop'), i.appendChild(a), h.push(a);
    t.setAttribute(
        'gf' === e.ty ? 'fill' : 'stroke', 'url(' + A + '#' + s + ')'),
        this.gf = i, this.cst = h
  }, Ht.prototype.setGradientOpacity = function(t, e) {
    if (this.g._hasOpacity && !this.g._collapsable) {
      var s, i, a, r = x('mask'), n = x('path');
      r.appendChild(n);
      var h = S(), o = S();
      r.setAttribute('id', o);
      var l = x(1 === t.t ? 'linearGradient' : 'radialGradient');
      l.setAttribute('id', h), l.setAttribute('spreadMethod', 'pad'),
          l.setAttribute('gradientUnits', 'userSpaceOnUse'),
          a = t.g.k.k[0].s ? t.g.k.k[0].s.length : t.g.k.k.length;
      var p = this.stops;
      for (i = 4 * t.g.p; i < a; i += 2)
        (s = x('stop')).setAttribute('stop-color', 'rgb(255,255,255)'),
            l.appendChild(s), p.push(s);
      n.setAttribute(
          'gf' === t.ty ? 'fill' : 'stroke', 'url(' + A + '#' + h + ')'),
          this.of = l, this.ms = r, this.ost = p, this.maskId = o, e.msElem = n
    }
  }, M([F], Ht), M([Ht, F], Yt);
  var Kt = function() {
    var g = new I, y = new I;
    function e(t, e, s) {
      (s || e.transform.op._mdf) &&
          e.transform.container.setAttribute('opacity', e.transform.op.v),
          (s || e.transform.mProps._mdf) &&
          e.transform.container.setAttribute(
              'transform', e.transform.mProps.v.to2dCSS())
    }
    function s(t, e, s) {
      var i, a, r, n, h, o, l, p, f, d, m, c = e.styles.length, u = e.lvl;
      for (o = 0; o < c; o += 1) {
        if (n = e.sh._mdf || s, e.styles[o].lvl < u) {
          for (p = y.reset(), d = u - e.styles[o].lvl,
              m = e.transformers.length - 1;
               !n && 0 < d;)
            n = e.transformers[m].mProps._mdf || n, d -= 1, m -= 1;
          if (n)
            for (d = u - e.styles[o].lvl, m = e.transformers.length - 1; 0 < d;)
              f = e.transformers[m].mProps.v.props,
              p.transform(
                  f[0], f[1], f[2], f[3], f[4], f[5], f[6], f[7], f[8], f[9],
                  f[10], f[11], f[12], f[13], f[14], f[15]),
              d -= 1, m -= 1
        } else
          p = g;
        if (a = (l = e.sh.paths)._length, n) {
          for (r = '', i = 0; i < a; i += 1)
            (h = l.shapes[i]) && h._length && (r += it(h, h._length, h.c, p));
          e.caches[o] = r
        } else
          r = e.caches[o];
        e.styles[o].d += !0 === t.hd ? '' : r,
            e.styles[o]._mdf = n || e.styles[o]._mdf
      }
    }
    function i(t, e, s) {
      var i = e.style;
      (e.c._mdf || s) &&
          i.pElem.setAttribute(
              'fill',
              'rgb(' + f(e.c.v[0]) + ',' + f(e.c.v[1]) + ',' + f(e.c.v[2]) +
                  ')'),
          (e.o._mdf || s) && i.pElem.setAttribute('fill-opacity', e.o.v)
    }
    function a(t, e, s) {
      r(t, e, s), n(t, e, s)
    }
    function r(t, e, s) {
      var i, a, r, n, h, o = e.gf, l = e.g._hasOpacity, p = e.s.v, f = e.e.v;
      if (e.o._mdf || s) {
        var d = 'gf' === t.ty ? 'fill-opacity' : 'stroke-opacity';
        e.style.pElem.setAttribute(d, e.o.v)
      }
      if (e.s._mdf || s) {
        var m = 1 === t.t ? 'x1' : 'cx', c = 'x1' === m ? 'y1' : 'cy';
        o.setAttribute(m, p[0]), o.setAttribute(c, p[1]),
            l && !e.g._collapsable &&
            (e.of.setAttribute(m, p[0]), e.of.setAttribute(c, p[1]))
      }
      if (e.g._cmdf || s) {
        i = e.cst;
        var u = e.g.c;
        for (r = i.length, a = 0; a < r; a += 1)
          (n = i[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 || s)) {
        var g = e.g.o;
        for (r = (i = e.g._collapsable ? e.cst : e.ost).length, a = 0; a < r;
             a += 1)
          n = i[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 || s) &&
            (o.setAttribute('x2', f[0]), o.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 || s) &&
              (h = Math.sqrt(
                   Math.pow(p[0] - f[0], 2) + Math.pow(p[1] - f[1], 2)),
               o.setAttribute('r', h),
               l && !e.g._collapsable && e.of.setAttribute('r', h)),
          e.e._mdf || e.h._mdf || e.a._mdf || s) {
        h ||
            (h = 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;
        1 <= v ? v = .99 : v <= -1 && (v = -.99);
        var b = h * v, _ = Math.cos(y + e.a.v) * b + p[0],
            k = Math.sin(y + e.a.v) * b + p[1];
        o.setAttribute('fx', _), o.setAttribute('fy', k),
            l && !e.g._collapsable &&
            (e.of.setAttribute('fx', _), e.of.setAttribute('fy', k))
      }
    }
    function n(t, e, s) {
      var i = e.style, a = e.d;
      a && (a._mdf || s) && a.dashStr &&
          (i.pElem.setAttribute('stroke-dasharray', a.dashStr),
           i.pElem.setAttribute('stroke-dashoffset', a.dashoffset[0])),
          e.c && (e.c._mdf || s) &&
          i.pElem.setAttribute(
              'stroke',
              'rgb(' + f(e.c.v[0]) + ',' + f(e.c.v[1]) + ',' + f(e.c.v[2]) +
                  ')'),
          (e.o._mdf || s) && i.pElem.setAttribute('stroke-opacity', e.o.v),
          (e.w._mdf || s) &&
          (i.pElem.setAttribute('stroke-width', e.w.v),
           i.msElem && i.msElem.setAttribute('stroke-width', e.w.v))
    }
    return {
      createRenderFunction: function(t) {
        switch (t.ty) {
          case 'fl':
            return i;
          case 'gf':
            return r;
          case 'gs':
            return a;
          case 'st':
            return n;
          case 'sh':
          case 'el':
          case 'rc':
          case 'sr':
            return s;
          case 'tr':
            return e;
          default:
            return null
        }
      }
    }
  }();
  function Jt() {}
  function Ut(t, e, s) {
    this.initFrame(), this.initBaseData(t, e, s), this.initFrame(),
        this.initTransform(t, e, s), this.initHierarchy()
  }
  function Zt() {}
  function Qt() {}
  function $t() {}
  function te() {}
  function ee(t, e, s) {
    this.assetData = e.getAssetData(t.refId), this.initElement(t, e, s),
    this.sourceRect = {
      top: 0,
      left: 0,
      width: this.assetData.w,
      height: this.assetData.h
    }
  }
  function se(t, e, s) {
    this.initElement(t, e, s)
  }
  function ie(t, e, s) {
    this.initFrame(), this.initRenderable(),
        this.assetData = e.getAssetData(t.refId), this.initBaseData(t, e, s),
        this._isPlaying = !1, this._canPlay = !1;
    var i = this.globalData.getAssetsPath(this.assetData);
    this.audio = this.globalData.audioController.createAudio(i),
    this._currentTime = 0, this.globalData.audioController.addAudio(this),
    this.tm =
        t.tm ? R.getProp(this, t.tm, 0, e.frameRate, this) : {_placeholder: !0}
  }
  function ae(t, e, s) {
    this.layers = t.layers, this.supports3d = !0, this.completeLayers = !1,
    this.pendingElements = [],
    this.elements = this.layers ? D(this.layers.length) : [],
    this.initElement(t, e, s),
    this.tm =
        t.tm ? R.getProp(this, t.tm, 0, e.frameRate, this) : {_placeholder: !0}
  }
  function re(t, e, s) {
    this.textSpans = [], this.renderType = 'svg', this.initElement(t, e, s)
  }
  function ne(t, e, s) {
    this.shapes = [], this.shapesData = t.shapes, this.stylesList = [],
    this.shapeModifiers = [], this.itemsData = [], this.processedElements = [],
    this.animatedContents = [], this.initElement(t, e, s),
    this.prevViewData = []
  }
  Jt.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() {
      this.layerInterface = LayerExpressionInterface(this),
      this.data.hasMask && this.maskManager &&
          this.layerInterface.registerMaskInterface(this.maskManager);
      var t = EffectsExpressionInterface.createEffectsInterface(
          this, this.layerInterface);
      this.layerInterface.registerEffectsInterface(t),
          0 === this.data.ty || this.data.xt ?
          this.compInterface = CompExpressionInterface(this) :
          4 === this.data.ty ?
          (this.layerInterface.shapeInterface = ShapeExpressionInterface(
               this.shapesData, this.itemsData, this.layerInterface),
           this.layerInterface.content = this.layerInterface.shapeInterface) :
          5 === this.data.ty &&
              (this.layerInterface.textInterface =
                   TextExpressionInterface(this),
               this.layerInterface.text = this.layerInterface.textInterface)
    },
    setBlendMode: function() {
      var t = E(this.data.bm);
      (this.baseElement || this.layerElement).style['mix-blend-mode'] = t
    },
    initBaseData: function(t, e, s) {
      this.globalData = e, this.comp = s, this.data = t, this.layerId = S(),
      this.data.sr || (this.data.sr = 1),
      this.effectsManager = new fe(this.data, this, this.dynamicProperties)
    },
    getType: function() {
      return this.type
    },
    sourceRectAtTime: function() {}
  },
  Ut.prototype.prepareFrame =
      function(t) {
    this.prepareProperties(t, !0)
  },
  Ut.prototype.renderFrame = function() {},
  Ut.prototype.getBaseElement =
      function() {
    return null
  },
  Ut.prototype.destroy = function() {},
  Ut.prototype.sourceRectAtTime = function() {},
  Ut.prototype.hide = function() {}, M([Jt, Rt, Lt, Vt], Ut), Zt.prototype = {
    initRendererElement: function() {
      this.layerElement = x('g')
    },
    createContainerElements: function() {
      this.matteElement = x('g'), this.transformedElement = this.layerElement,
      this.maskedElement = this.layerElement, this._sizeChanged = !1;
      var t, e, s, i = null;
      if (this.data.td) {
        if (3 == this.data.td || 1 == this.data.td) {
          var a = x('mask');
          a.setAttribute('id', this.layerId),
              a.setAttribute(
                  'mask-type', 3 == this.data.td ? 'luminance' : 'alpha'),
              a.appendChild(this.layerElement),
              i = a, this.globalData.defs.appendChild(a),
              nt.maskType || 1 != this.data.td ||
              (a.setAttribute('mask-type', 'luminance'), t = S(),
               e = ht.createFilter(t), this.globalData.defs.appendChild(e),
               e.appendChild(ht.createAlphaToLuminanceFilter()),
               (s = x('g')).appendChild(this.layerElement), i = s,
               a.appendChild(s),
               s.setAttribute('filter', 'url(' + A + '#' + t + ')'))
        } else if (2 == this.data.td) {
          var r = x('mask');
          r.setAttribute('id', this.layerId),
              r.setAttribute('mask-type', 'alpha');
          var n = x('g');
          r.appendChild(n), t = S(), e = ht.createFilter(t);
          var h = x('feComponentTransfer');
          h.setAttribute('in', 'SourceGraphic'), e.appendChild(h);
          var o = x('feFuncA');
          o.setAttribute('type', 'table'),
              o.setAttribute('tableValues', '1.0 0.0'), h.appendChild(o),
              this.globalData.defs.appendChild(e);
          var l = x('rect');
          l.setAttribute('width', this.comp.data.w),
              l.setAttribute('height', this.comp.data.h),
              l.setAttribute('x', '0'), l.setAttribute('y', '0'),
              l.setAttribute('fill', '#ffffff'), l.setAttribute('opacity', '0'),
              n.setAttribute('filter', 'url(' + A + '#' + t + ')'),
              n.appendChild(l), n.appendChild(this.layerElement),
              i = n,
              nt.maskType ||
              (r.setAttribute('mask-type', 'luminance'),
               e.appendChild(ht.createAlphaToLuminanceFilter()), s = x('g'),
               n.appendChild(l), s.appendChild(this.layerElement), i = s,
               n.appendChild(s)),
              this.globalData.defs.appendChild(r)
        }
      } else
        this.data.tt ?
            (this.matteElement.appendChild(this.layerElement),
             i = 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 p = x('clipPath'), f = x('path');
        f.setAttribute(
            'd',
            'M0,0 L' + this.data.w + ',0 L' + this.data.w + ',' + this.data.h +
                ' L0,' + this.data.h + 'z');
        var d = S();
        if (p.setAttribute('id', d), p.appendChild(f),
            this.globalData.defs.appendChild(p), this.checkMasks()) {
          var m = x('g');
          m.setAttribute('clip-path', 'url(' + A + '#' + d + ')'),
              m.appendChild(this.layerElement),
              this.transformedElement = m,
              i ? i.appendChild(this.transformedElement) :
                  this.baseElement = this.transformedElement
        } else
          this.layerElement.setAttribute(
              'clip-path', 'url(' + A + '#' + d + ')')
      }
      0 !== this.data.bm && this.setBlendMode()
    },
    renderElement: function() {
      this.finalTransform._matMdf &&
          this.transformedElement.setAttribute(
              'transform', this.finalTransform.mat.to2dCSS()),
          this.finalTransform._opMdf &&
          this.transformedElement.setAttribute(
              'opacity', this.finalTransform.mProp.o.v)
    },
    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 It(this.data, this, this.globalData),
      this.renderableEffectsManager = new oe(this)
    },
    setMatte: function(t) {
      this.matteElement &&
          this.matteElement.setAttribute('mask', 'url(' + A + '#' + t + ')')
    }
  },
  Qt.prototype = {
    addShapeToModifiers: function(t) {
      var e, s = this.shapeModifiers.length;
      for (e = 0; e < s; 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; 0 <= t &&
             !this.shapeModifiers[t].processShapes(this._isFirstFrame);
             t -= 1);
      }
    },
    lcEnum: {1: 'butt', 2: 'round', 3: 'square'},
    ljEnum: {1: 'miter', 2: 'round', 3: 'bevel'},
    searchProcessedElement: function(t) {
      for (var e = this.processedElements, s = 0, i = e.length; s < i;) {
        if (e[s].elem === t) return e[s].pos;
        s += 1
      }
      return 0
    },
    addProcessedElement: function(t, e) {
      for (var s = this.processedElements, i = s.length; i;)
        if (s[i -= 1].elem === t) return void (s[i].pos = e);
      s.push(new Ot(t, e))
    },
    prepareFrame: function(t) {
      this.prepareRenderableFrame(t), this.prepareProperties(t, this.isInRange)
    }
  },
  $t.prototype.initElement =
      function(t, e, s) {
    this.lettersChangedFlag = !0, this.initFrame(), this.initBaseData(t, e, s),
    this.textProperty = new gt(this, t.t, this.dynamicProperties),
    this.textAnimator = new mt(t.t, this.renderType, this),
    this.initTransform(t, e, s), this.initHierarchy(), this.initRenderable(),
    this.initRendererElement(), this.createContainerElements(),
    this.createRenderableComponents(), this.createContent(), this.hide(),
    this.textAnimator.searchProperties(this.dynamicProperties)
  },
  $t.prototype.prepareFrame =
      function(t) {
    this._mdf = !1, this.prepareRenderableFrame(t),
    this.prepareProperties(t, this.isInRange),
    (this.textProperty._mdf || this.textProperty._isFirstFrame) &&
        (this.buildNewText(), this.textProperty._isFirstFrame = !1,
         this.textProperty._mdf = !1)
  },
  $t.prototype.createPathShape =
      function(t, e) {
    var s, i, a = e.length, r = '';
    for (s = 0; s < a; s += 1) i = e[s].ks.k, r += it(i, i.i.length, !0, t);
    return r
  },
  $t.prototype.updateDocumentData =
      function(t, e) {
    this.textProperty.updateDocumentData(t, e)
  },
  $t.prototype.canResizeFont =
      function(t) {
    this.textProperty.canResizeFont(t)
  },
  $t.prototype.setMinimumFontSize =
      function(t) {
    this.textProperty.setMinimumFontSize(t)
  },
  $t.prototype.applyTextPropertiesToMatrix =
      function(t, e, s, i, a) {
    switch (t.ps && e.translate(t.ps[0], t.ps[1] + t.ascent, 0),
            e.translate(0, -t.ls, 0), t.j) {
      case 1:
        e.translate(t.justifyOffset + (t.boxWidth - t.lineWidths[s]), 0, 0);
        break;
      case 2:
        e.translate(t.justifyOffset + (t.boxWidth - t.lineWidths[s]) / 2, 0, 0)
    }
    e.translate(i, a, 0)
  },
  $t.prototype.buildColor =
      function(t) {
    return 'rgb(' + Math.round(255 * t[0]) + ',' + Math.round(255 * t[1]) +
        ',' + Math.round(255 * t[2]) + ')'
  },
  $t.prototype.emptyProp = new ut, $t.prototype.destroy = function() {},
  M([Jt, Rt, Lt, Vt, Nt], te),
  te.prototype.initElement =
      function(t, e, s) {
    this.initFrame(), this.initBaseData(t, e, s), this.initTransform(t, e, s),
        this.initRenderable(), this.initHierarchy(), this.initRendererElement(),
        this.createContainerElements(), this.createRenderableComponents(),
        !this.data.xt && e.progressiveLoad || this.buildAllItems(), this.hide()
  },
  te.prototype.prepareFrame =
      function(t) {
    if (this._mdf = !1, this.prepareRenderableFrame(t),
        this.prepareProperties(t, this.isInRange),
        this.isInRange || this.data.xt) {
      if (this.tm._placeholder)
        this.renderedFrame = t / this.data.sr;
      else {
        var e = this.tm.v;
        e === this.data.op && (e = this.data.op - 1), this.renderedFrame = e
      }
      var s, i = this.elements.length;
      for (this.completeLayers || this.checkLayers(this.renderedFrame),
           s = i - 1;
           0 <= s; s -= 1)
        (this.completeLayers || this.elements[s]) &&
            (this.elements[s].prepareFrame(
                 this.renderedFrame - this.layers[s].st),
             this.elements[s]._mdf && (this._mdf = !0))
    }
  },
  te.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()
  },
  te.prototype.setElements =
      function(t) {
    this.elements = t
  },
  te.prototype.getElements =
      function() {
    return this.elements
  },
  te.prototype.destroyElements =
      function() {
    var t, e = this.layers.length;
    for (t = 0; t < e; t += 1) this.elements[t] && this.elements[t].destroy()
  },
  te.prototype.destroy =
      function() {
    this.destroyElements(), this.destroyBaseElement()
  },
  M([Jt, Rt, Zt, Lt, Vt, Nt], ee),
  ee.prototype.createContent =
      function() {
    var t = this.globalData.getAssetsPath(this.assetData);
    this.innerElem = x('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)
  },
  ee.prototype.sourceRectAtTime =
      function() {
    return this.sourceRect
  },
  M([ee], se),
  se.prototype.createContent =
      function() {
    var t = x('rect');
    t.setAttribute('width', this.data.sw),
        t.setAttribute('height', this.data.sh),
        t.setAttribute('fill', this.data.sc), this.layerElement.appendChild(t)
  },
  ie.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
    }
  },
  M([zt, Jt, Vt], ie),
  ie.prototype.renderFrame =
      function() {
    this.isInRange && this._canPlay &&
        (this._isPlaying ?
             (!this.audio.playing() ||
              .1 < Math.abs(
                       this._currentTime / this.globalData.frameRate -
                       this.audio.seek())) &&
                 this.audio.seek(
                     this._currentTime / this.globalData.frameRate) :
             (this.audio.play(),
              this.audio.seek(this._currentTime / this.globalData.frameRate),
              this._isPlaying = !0))
  },
  ie.prototype.show = function() {},
  ie.prototype.hide =
      function() {
    this.audio.pause(), this._isPlaying = !1
  },
  ie.prototype.pause =
      function() {
    this.audio.pause(), this._isPlaying = !1, this._canPlay = !1
  },
  ie.prototype.resume =
      function() {
    this._canPlay = !0
  },
  ie.prototype.setRate =
      function(t) {
    this.audio.rate(t)
  },
  ie.prototype.volume =
      function(t) {
    this.audio.volume(t)
  },
  ie.prototype.getBaseElement =
      function() {
    return null
  },
  ie.prototype.destroy = function() {},
  ie.prototype.sourceRectAtTime = function() {},
  ie.prototype.initExpressions = function() {}, M([Mt, te, Zt], ae),
  M([Jt, Rt, Zt, Lt, Vt, Nt, $t], re),
  re.prototype.createContent =
      function() {
    this.data.singleShape && !this