              if (t >= u.t - this.offsetTime)
                p = 1;
              else if (t < c.t - this.offsetTime)
                p = 0;
              else {
                var b;
                c.__fnct ?
                    b = c.__fnct :
                    (b = W.getBezierEasing(c.o.x, c.o.y, c.i.x, c.i.y).get,
                     c.__fnct = b),
                    p =
                        b((t - (c.t - this.offsetTime)) /
                          (u.t - this.offsetTime - (c.t - this.offsetTime)))
              }
              a = u.s ? u.s[0] : c.e[0]
            }
            i = c.s[0]
          }
          for (o = e._length, l = i.i[0].length, s.lastIndex = d, n = 0; n < o;
               n += 1)
            for (h = 0; h < l; h += 1)
              f = r ? i.i[n][h] : i.i[n][h] + (a.i[n][h] - i.i[n][h]) * p,
              e.i[n][h] = f,
              f = r ? i.o[n][h] : i.o[n][h] + (a.o[n][h] - i.o[n][h]) * p,
              e.o[n][h] = f,
              f = r ? i.v[n][h] : i.v[n][h] + (a.v[n][h] - i.v[n][h]) * p,
              e.v[n][h] = f
        }
        function r() {
          this.paths = this.localShapeCollection
        }
        function e(t) {
          (function(t, e) {
            if (t._length !== e._length || t.c !== e.c) return !1;
            var s, i = t._length;
            for (s = 0; s < i; s += 1)
              if (t.v[s][0] !== e.v[s][0] || t.v[s][1] !== e.v[s][1] ||
                  t.o[s][0] !== e.o[s][0] || t.o[s][1] !== e.o[s][1] ||
                  t.i[s][0] !== e.i[s][0] || t.i[s][1] !== e.i[s][1])
                return !1;
            return !0
          })(this.v, t) ||
              (this.v = Dt.clone(t), this.localShapeCollection.releaseShapes(),
               this.localShapeCollection.addShape(this.v), this._mdf = !0,
               this.paths = this.localShapeCollection)
        }
        function s() {
          if (this.elem.globalData.frameId !== this.frameId)
            if (this.effectsSequence.length)
              if (this.lock)
                this.setVValue(this.pv);
              else {
                var t, e;
                this.lock = !0, this._mdf = !1,
                t = this.kf      ? this.pv :
                    this.data.ks ? this.data.ks.k :
                                   this.data.pt.k;
                var s = this.effectsSequence.length;
                for (e = 0; e < s; e += 1) t = this.effectsSequence[e](t);
                this.setVValue(t), this.lock = !1,
                                   this.frameId = this.elem.globalData.frameId
              }
            else
              this._mdf = !1
        }
        function n(t, e, s) {
          this.propType = 'shape', this.comp = t.comp, this.container = t,
          this.elem = t, this.data = e, this.k = !1, this.kf = !1,
          this._mdf = !1;
          var i = 3 === s ? e.pt.k : e.ks.k;
          this.v = Dt.clone(i), this.pv = Dt.clone(this.v),
          this.localShapeCollection = xt.newShapeCollection(),
          this.paths = this.localShapeCollection, this.paths.addShape(this.v),
          this.reset = r, this.effectsSequence = []
        }
        function i(t) {
          this.effectsSequence.push(t), this.container.addDynamicProperty(this)
        }
        function h(t, e, s) {
          this.propType = 'shape', this.comp = t.comp, this.elem = t,
          this.container = t, this.offsetTime = t.data.st,
          this.keyframes = 3 === s ? e.pt.k : e.ks.k, this.k = !0, this.kf = !0;
          var i = this.keyframes[0].s[0].i.length;
          this.v = Dt.newElement(),
          this.v.setPathData(this.keyframes[0].s[0].c, i),
          this.pv = Dt.clone(this.v),
          this.localShapeCollection = xt.newShapeCollection(),
          this.paths = this.localShapeCollection, this.paths.addShape(this.v),
          this.lastFrame = a, this.reset = r,
          this._caching = {lastFrame: a, lastIndex: 0},
          this.effectsSequence = [function() {
            var t = this.comp.renderedFrame - this.offsetTime,
                e = this.keyframes[0].t - this.offsetTime,
                s = this.keyframes[this.keyframes.length - 1].t -
                this.offsetTime,
                i = this._caching.lastFrame;
            return i !== a && (i < e && t < e || s < i && s < t) ||
                       (this._caching.lastIndex =
                            i < t ? this._caching.lastIndex : 0,
                        this.interpolateShape(t, this.pv, this._caching)),
                   this._caching.lastFrame = t, this.pv
          }.bind(this)]
        }
        n.prototype.interpolateShape = t, n.prototype.getValue = s,
        n.prototype.setVValue = e, n.prototype.addEffect = i,
        h.prototype.getValue = s, h.prototype.interpolateShape = t,
        h.prototype.setVValue = e, h.prototype.addEffect = i;
        var o = function() {
          var n = v;
          function t(t, e) {
            this.v = Dt.newElement(), this.v.setPathData(!0, 4),
            this.localShapeCollection = xt.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 = R.getProp(t, e.p, 1, 0, this),
            this.s = R.getProp(t, e.s, 1, 0, this),
            this.dynamicProperties.length ?
                this.k = !0 :
                (this.k = !1, this.convertEllToPath())
          }
          return t.prototype = {
            reset: r,
            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], s = this.s.v[0] / 2,
                  i = this.s.v[1] / 2, a = 3 !== this.d, r = this.v;
              r.v[0][0] = t, r.v[0][1] = e - i, r.v[1][0] = a ? t + s : t - s,
              r.v[1][1] = e, r.v[2][0] = t, r.v[2][1] = e + i,
              r.v[3][0] = a ? t - s : t + s, r.v[3][1] = e,
              r.i[0][0] = a ? t - s * n : t + s * n, r.i[0][1] = e - i,
              r.i[1][0] = a ? t + s : t - s, r.i[1][1] = e - i * n,
              r.i[2][0] = a ? t + s * n : t - s * n, r.i[2][1] = e + i,
              r.i[3][0] = a ? t - s : t + s, r.i[3][1] = e + i * n,
              r.o[0][0] = a ? t + s * n : t - s * n, r.o[0][1] = e - i,
              r.o[1][0] = a ? t + s : t - s, r.o[1][1] = e + i * n,
              r.o[2][0] = a ? t - s * n : t + s * n, r.o[2][1] = e + i,
              r.o[3][0] = a ? t - s : t + s, r.o[3][1] = e - i * n
            }
          },
                 M([F], t), t
        }(), l = function() {
          function t(t, e) {
            this.v = Dt.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 = R.getProp(t, e.ir, 0, 0, this),
                          this.is = R.getProp(t, e.is, 0, .01, this),
                          this.convertToPath = this.convertStarToPath) :
                         this.convertToPath = this.convertPolygonToPath,
            this.pt = R.getProp(t, e.pt, 0, 0, this),
            this.p = R.getProp(t, e.p, 1, 0, this),
            this.r = R.getProp(t, e.r, 0, B, this),
            this.or = R.getProp(t, e.or, 0, 0, this),
            this.os = R.getProp(t, e.os, 0, .01, this),
            this.localShapeCollection = xt.newShapeCollection(),
            this.localShapeCollection.addShape(this.v),
            this.paths = this.localShapeCollection,
            this.dynamicProperties.length ? this.k = !0 :
                                            (this.k = !1, this.convertToPath())
          }
          return t.prototype = {
            reset: r,
            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, s, i,
                  a = 2 * Math.floor(this.pt.v), r = 2 * Math.PI / a, n = !0,
                  h = this.or.v, o = this.ir.v, l = this.os.v, p = this.is.v,
                  f = 2 * Math.PI * h / (2 * a), d = 2 * Math.PI * o / (2 * a),
                  m = -Math.PI / 2;
              m += this.r.v;
              var c = 3 === this.data.d ? -1 : 1;
              for (t = this.v._length = 0; t < a; t += 1) {
                s = n ? l : p, i = n ? f : d;
                var u = (e = n ? h : o) * Math.cos(m), g = e * Math.sin(m),
                    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 * i * s * c, g - v * i * s * c,
                        u + y * i * s * c, g + v * i * s * c, t, !0),
                    n = !n, m += r * c
              }
            },
            convertPolygonToPath: function() {
              var t, e = Math.floor(this.pt.v), s = 2 * Math.PI / e,
                     i = this.or.v, a = this.os.v,
                     r = 2 * Math.PI * i / (4 * e), n = .5 * -Math.PI,
                     h = 3 === this.data.d ? -1 : 1;
              for (n += this.r.v, t = this.v._length = 0; t < e; t += 1) {
                var o = i * Math.cos(n), l = i * Math.sin(n),
                    p = 0 === o && 0 === l ? 0 : l / Math.sqrt(o * o + l * l),
                    f = 0 === o && 0 === l ? 0 : -o / Math.sqrt(o * o + l * l);
                o += +this.p.v[0], l += +this.p.v[1],
                    this.v.setTripleAt(
                        o, l, o - p * r * a * h, l - f * r * a * h,
                        o + p * r * a * h, l + f * r * a * h, t, !0),
                    n += s * h
              }
              this.paths.length = 0, this.paths[0] = this.v
            }
          },
                 M([F], t), t
        }(), p = function() {
          function t(t, e) {
            this.v = Dt.newElement(), this.v.c = !0,
            this.localShapeCollection = xt.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 = R.getProp(t, e.p, 1, 0, this),
            this.s = R.getProp(t, e.s, 1, 0, this),
            this.r = R.getProp(t, e.r, 0, 0, this),
            this.dynamicProperties.length ?
                this.k = !0 :
                (this.k = !1, this.convertRectToPath())
          }
          return t.prototype = {
            convertRectToPath: function() {
              var t = this.p.v[0], e = this.p.v[1], s = this.s.v[0] / 2,
                  i = this.s.v[1] / 2, a = d(s, i, this.r.v), r = a * (1 - v);
              this.v._length = 0,
              2 === this.d || 1 === this.d ?
                  (this.v.setTripleAt(
                       t + s, e - i + a, t + s, e - i + a, t + s, e - i + r, 0,
                       !0),
                   this.v.setTripleAt(
                       t + s, e + i - a, t + s, e + i - r, t + s, e + i - a, 1,
                       !0),
                   0 !== a ?
                       (this.v.setTripleAt(
                            t + s - a, e + i, t + s - a, e + i, t + s - r,
                            e + i, 2, !0),
                        this.v.setTripleAt(
                            t - s + a, e + i, t - s + r, e + i, t - s + a,
                            e + i, 3, !0),
                        this.v.setTripleAt(
                            t - s, e + i - a, t - s, e + i - a, t - s,
                            e + i - r, 4, !0),
                        this.v.setTripleAt(
                            t - s, e - i + a, t - s, e - i + r, t - s,
                            e - i + a, 5, !0),
                        this.v.setTripleAt(
                            t - s + a, e - i, t - s + a, e - i, t - s + r,
                            e - i, 6, !0),
                        this.v.setTripleAt(
                            t + s - a, e - i, t + s - r, e - i, t + s - a,
                            e - i, 7, !0)) :
                       (this.v.setTripleAt(
                            t - s, e + i, t - s + r, e + i, t - s, e + i, 2),
                        this.v.setTripleAt(
                            t - s, e - i, t - s, e - i + r, t - s, e - i, 3))) :
                  (this.v.setTripleAt(
                       t + s, e - i + a, t + s, e - i + r, t + s, e - i + a, 0,
                       !0),
                   0 !== a ? (this.v.setTripleAt(
                                  t + s - a, e - i, t + s - a, e - i, t + s - r,
                                  e - i, 1, !0),
                              this.v.setTripleAt(
                                  t - s + a, e - i, t - s + r, e - i, t - s + a,
                                  e - i, 2, !0),
                              this.v.setTripleAt(
                                  t - s, e - i + a, t - s, e - i + a, t - s,
                                  e - i + r, 3, !0),
                              this.v.setTripleAt(
                                  t - s, e + i - a, t - s, e + i - r, t - s,
                                  e + i - a, 4, !0),
                              this.v.setTripleAt(
                                  t - s + a, e + i, t - s + a, e + i, t - s + r,
                                  e + i, 5, !0),
                              this.v.setTripleAt(
                                  t + s - a, e + i, t + s - r, e + i, t + s - a,
                                  e + i, 6, !0),
                              this.v.setTripleAt(
                                  t + s, e + i - a, t + s, e + i - a, t + s,
                                  e + i - r, 7, !0)) :
                             (this.v.setTripleAt(
                                  t - s, e - i, t - s + r, e - i, t - s, e - i,
                                  1, !0),
                              this.v.setTripleAt(
                                  t - s, e + i, t - s, e + i - r, t - s, e + i,
                                  2, !0),
                              this.v.setTripleAt(
                                  t + s, e + i, t + s - r, e + i, t + s, e + i,
                                  3, !0)))
            },
            getValue: function() {
              this.elem.globalData.frameId !== this.frameId &&
                  (this.frameId = this.elem.globalData.frameId,
                   this.iterateDynamicProperties(),
                   this._mdf && this.convertRectToPath())
            },
            reset: r
          },
                 M([F], t), t
        }();
        var f = {
          getShapeProp: function(t, e, s) {
            var i;
            return 3 === s || 4 === s ? i = (3 === s ? e.pt : e.ks).k.length ?
                                        new h(t, e, s) :
                                        new n(t, e, s) :
                       5 === s        ? i = new p(t, e) :
                       6 === s        ? i = new o(t, e) :
                                        7 === s && (i = new l(t, e)),
                                        i.k && t.addDynamicProperty(i), i
          },
          getConstructorFunction: function() {
            return n
          },
          getKeyframedConstructorFunction: function() {
            return h
          }
        };
        return f
      }(),
      Y =
          (X = {},
           (O = {}).registerModifier =
               function(t, e) {
                 X[t] || (X[t] = e)
               },
           O.getModifier =
               function(t, e, s) {
                 return new X[t](e, s)
               },
           O);
  function G() {}
  function K() {}
  function J() {}
  function U() {}
  function Z() {}
  function Q() {
    this._length = 0, this._maxLength = 4, this.shapes = D(this._maxLength)
  }
  function $(t, e, s, i) {
    var a;
    this.elem = t, this.frameId = -1, this.dataProps = D(e.length),
    this.renderer = s, this.k = !1, this.dashStr = '',
    this.dashArray = j('float32', e.length ? e.length - 1 : 0),
    this.dashoffset = j('float32', 1), this.initDynamicPropertyContainer(i);
    var r, n = e.length || 0;
    for (a = 0; a < n; a += 1)
      r = R.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 tt(t, e, s) {
    this.data = e, this.c = j('uint8c', 4 * e.p);
    var i = e.k.k[0].s ? e.k.k[0].s.length - 4 * e.p : e.k.k.length - 4 * e.p;
    this.o = j('float32', i), this._cmdf = !1, this._omdf = !1,
    this._collapsable = this.checkCollapsable(), this._hasOpacity = i,
    this.initDynamicPropertyContainer(s),
    this.prop = R.getProp(t, e.k, 1, null, this), this.k = this.prop.k,
    this.getValue(!0)
  }
  G.prototype.initModifierProperties = function() {},
  G.prototype.addShapeToModifier = function() {},
  G.prototype.addShape =
      function(t) {
    if (!this.closed) {
      t.sh.container.addDynamicProperty(t.sh);
      var e = {
        shape: t.sh,
        data: t,
        localShapeCollection: xt.newShapeCollection()
      };
      this.shapes.push(e), this.addShapeToModifier(e),
          this._isAnimated && t.setAsAnimated()
    }
  },
  G.prototype.init =
      function(t, e) {
    this.shapes = [], this.elem = t, this.initDynamicPropertyContainer(t),
    this.initModifierProperties(t, e), this.frameId = s, this.closed = !1,
    this.k = !1, this.dynamicProperties.length ? this.k = !0 : this.getValue(!0)
  },
  G.prototype.processKeys =
      function() {
    this.elem.globalData.frameId !== this.frameId &&
        (this.frameId = this.elem.globalData.frameId,
         this.iterateDynamicProperties())
  },
  M([F], G), M([G], K),
  K.prototype.initModifierProperties =
      function(t, e) {
    this.s = R.getProp(t, e.s, 0, .01, this),
    this.e = R.getProp(t, e.e, 0, .01, this),
    this.o = R.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
  },
  K.prototype.addShapeToModifier =
      function(t) {
    t.pathsData = []
  },
  K.prototype.calculateShapeEdges =
      function(t, e, s, i, a) {
    var r = [];
    e <= 1     ? r.push({s: t, e: e}) :
        1 <= t ? r.push({s: t - 1, e: e - 1}) :
                 (r.push({s: t, e: 1}), r.push({s: 0, e: e - 1}));
    var n, h, o = [], l = r.length;
    for (n = 0; n < l; n += 1) {
      var p, f;
      if (!((h = r[n]).e * a < i || h.s * a > i + s))
        p = h.s * a <= i ? 0 : (h.s * a - i) / s,
        f = h.e * a >= i + s ? 1 : (h.e * a - i) / s, o.push([p, f])
    }
    return o.length || o.push([0, 0]), o
  },
  K.prototype.releasePathsData =
      function(t) {
    var e, s = t.length;
    for (e = 0; e < s; e += 1) wt.release(t[e]);
    return t.length = 0, t
  },
  K.prototype.processShapes =
      function(t) {
    var e, s, i, a;
    if (this._mdf || t) {
      var r = this.o.v % 360 / 360;
      if (r < 0 && (r += 1),
          e = 1 < this.s.v ? 1 + r :
              this.s.v < 0 ? 0 + r :
                             this.s.v + r,
          (s = 1 < this.e.v ? 1 + r :
               this.e.v < 0 ? 0 + r :
                              this.e.v + r) < e) {
        var n = e;
        e = s, s = n
      }
      e = 1e-4 * Math.round(1e4 * e), s = 1e-4 * Math.round(1e4 * s),
      this.sValue = e, this.eValue = s
    } else
      e = this.sValue, s = this.eValue;
    var h, o, l, p, f, d = this.shapes.length, m = 0;
    if (s === e)
      for (a = 0; a < d; a += 1)
        this.shapes[a].localShapeCollection.releaseShapes(),
            this.shapes[a].shape._mdf = !0,
            this.shapes[a].shape.paths = this.shapes[a].localShapeCollection,
            this._mdf && (this.shapes[a].pathsData.length = 0);
    else if (1 === s && 0 === e || 0 === s && 1 === e) {
      if (this._mdf)
        for (a = 0; a < d; a += 1)
          this.shapes[a].pathsData.length = 0, this.shapes[a].shape._mdf = !0
    } else {
      var c, u, g = [];
      for (a = 0; a < d; a += 1)
        if ((c = this.shapes[a]).shape._mdf || this._mdf || t || 2 === this.m) {
          if (o = (i = c.shape.paths)._length, f = 0,
              !c.shape._mdf && c.pathsData.length)
            f = c.totalShapeLength;
          else {
            for (l = this.releasePathsData(c.pathsData), h = 0; h < o; h += 1)
              p = dt.getSegmentsLength(i.shapes[h]), l.push(p),
              f += p.totalLength;
            c.totalShapeLength = f, c.pathsData = l
          }
          m += f, c.shape._mdf = !0
        } else
          c.shape.paths = c.localShapeCollection;
      var y, v = e, b = s, _ = 0;
      for (a = d - 1; 0 <= a; a -= 1)
        if ((c = this.shapes[a]).shape._mdf) {
          for ((u = c.localShapeCollection).releaseShapes(),
               2 === this.m && 1 < d ? (y = this.calculateShapeEdges(
                                            e, s, c.totalShapeLength, _, m),
                                       _ += c.totalShapeLength) :
                                       y = [[v, b]],
                                       o = y.length, h = 0;
               h < o; h += 1) {
            v = y[h][0], b = y[h][1], g.length = 0,
            b <= 1 ?
                g.push({s: c.totalShapeLength * v, e: c.totalShapeLength * b}) :
                1 <= v ?
                g.push({
                  s: c.totalShapeLength * (v - 1),
                  e: c.totalShapeLength * (b - 1)
                }) :
                (g.push({s: c.totalShapeLength * v, e: c.totalShapeLength}),
                 g.push({s: 0, e: c.totalShapeLength * (b - 1)}));
            var k = this.addShapes(c, g[0]);
            if (g[0].s !== g[0].e) {
              if (1 < g.length)
                if (c.shape.paths.shapes[c.shape.paths._length - 1].c) {
                  var A = k.pop();
                  this.addPaths(k, u), k = this.addShapes(c, g[1], A)
                } else
                  this.addPaths(k, u), k = this.addShapes(c, g[1]);
              this.addPaths(k, u)
            }
          }
          c.shape.paths = u
        }
    }
  },
  K.prototype.addPaths =
      function(t, e) {
    var s, i = t.length;
    for (s = 0; s < i; s += 1) e.addShape(t[s])
  },
  K.prototype.addSegment =
      function(t, e, s, i, a, r, n) {
    a.setXYAt(e[0], e[1], 'o', r), a.setXYAt(s[0], s[1], 'i', r + 1),
        n && a.setXYAt(t[0], t[1], 'v', r), a.setXYAt(i[0], i[1], 'v', r + 1)
  },
  K.prototype.addSegmentFromArray =
      function(t, e, s, i) {
    e.setXYAt(t[1], t[5], 'o', s), e.setXYAt(t[2], t[6], 'i', s + 1),
        i && e.setXYAt(t[0], t[4], 'v', s), e.setXYAt(t[3], t[7], 'v', s + 1)
  },
  K.prototype.addShapes =
      function(t, e, s) {
    var i, a, r, n, h, o, l, p, f = t.pathsData, d = t.shape.paths.shapes,
                                m = t.shape.paths._length, c = 0, u = [],
                                g = !0;
    for (p = s ? (h = s._length, s._length) : (s = Dt.newElement(), h = 0),
        u.push(s), i = 0;
         i < m; i += 1) {
      for (o = f[i].lengths, s.c = d[i].c, r = d[i].c ? o.length : o.length + 1,
          a = 1;
           a < r; a += 1)
        if (c + (n = o[a - 1]).addedLength < e.s)
          c += n.addedLength, s.c = !1;
        else {
          if (c > e.e) {
            s.c = !1;
            break
          }
          e.s <= c && e.e >= c + n.addedLength ?
              (this.addSegment(
                   d[i].v[a - 1], d[i].o[a - 1], d[i].i[a], d[i].v[a], s, h, g),
               g = !1) :
              (l = dt.getNewSegment(
                   d[i].v[a - 1], d[i].v[a], d[i].o[a - 1], d[i].i[a],
                   (e.s - c) / n.addedLength, (e.e - c) / n.addedLength,
                   o[a - 1]),
               this.addSegmentFromArray(l, s, h, g), g = !1, s.c = !1),
              c += n.addedLength, h += 1
        }
      if (d[i].c && o.length) {
        if (n = o[a - 1], c <= e.e) {
          var y = o[a - 1].addedLength;
          e.s <= c && e.e >= c + y ?
              (this.addSegment(
                   d[i].v[a - 1], d[i].o[a - 1], d[i].i[0], d[i].v[0], s, h, g),
               g = !1) :
              (l = dt.getNewSegment(
                   d[i].v[a - 1], d[i].v[0], d[i].o[a - 1], d[i].i[0],
                   (e.s - c) / y, (e.e - c) / y, o[a - 1]),
               this.addSegmentFromArray(l, s, h, g), g = !1, s.c = !1)
        } else
          s.c = !1;
        c += n.addedLength, h += 1
      }
      if (s._length &&
              (s.setXYAt(s.v[p][0], s.v[p][1], 'i', p),
               s.setXYAt(
                   s.v[s._length - 1][0], s.v[s._length - 1][1], 'o',
                   s._length - 1)),
          c > e.e)
        break;
      i < m - 1 && (s = Dt.newElement(), g = !0, u.push(s), h = 0)
    }
    return u
  },
  Y.registerModifier('tm', K), M([G], J),
  J.prototype.initModifierProperties =
      function(t, e) {
    this.getValue = this.processKeys,
    this.rd = R.getProp(t, e.r, 0, null, this),
    this._isAnimated = !!this.rd.effectsSequence.length
  },
  J.prototype.processPath =
      function(t, e) {
    var s, i = Dt.newElement();
    i.c = t.c;
    var a, r, n, h, o, l, p, f, d, m, c, u, g = t._length, y = 0;
    for (s = 0; s < g; s += 1)
      a = t.v[s], n = t.o[s], r = t.i[s],
      a[0] === n[0] && a[1] === n[1] && a[0] === r[0] && a[1] === r[1] ?
          0 !== s && s !== g - 1 || t.c ?
          (h = 0 === s ? t.v[g - 1] : t.v[s - 1],
           l = (o = Math.sqrt(
                    Math.pow(a[0] - h[0], 2) + Math.pow(a[1] - h[1], 2))) ?
               Math.min(o / 2, e) / o :
               0,
           p = c = a[0] + (h[0] - a[0]) * l, f = u = a[1] - (a[1] - h[1]) * l,
           d = p - (p - a[0]) * v, m = f - (f - a[1]) * v,
           i.setTripleAt(p, f, d, m, c, u, y), y += 1,
           h = s === g - 1 ? t.v[0] : t.v[s + 1],
           l = (o = Math.sqrt(
                    Math.pow(a[0] - h[0], 2) + Math.pow(a[1] - h[1], 2))) ?
               Math.min(o / 2, e) / o :
               0,
           p = d = a[0] + (h[0] - a[0]) * l, f = m = a[1] + (h[1] - a[1]) * l,
           c = p - (p - a[0]) * v, u = f - (f - a[1]) * v,
           i.setTripleAt(p, f, d, m, c, u, y)) :
          i.setTripleAt(a[0], a[1], n[0], n[1], r[0], r[1], y) :
          i.setTripleAt(
              t.v[s][0], t.v[s][1], t.o[s][0], t.o[s][1], t.i[s][0], t.i[s][1],
              y),
      y += 1;
    return i
  },
  J.prototype.processShapes =
      function(t) {
    var e, s, i, a, r, n, h = this.shapes.length, o = this.rd.v;
    if (0 !== o)
      for (s = 0; s < h; s += 1) {
        if (n = (r = this.shapes[s]).localShapeCollection,
            r.shape._mdf || this._mdf || t)
          for (n.releaseShapes(), r.shape._mdf = !0, e = r.shape.paths.shapes,
                                  a = r.shape.paths._length, i = 0;
               i < a; i += 1)
            n.addShape(this.processPath(e[i], o));
        r.shape.paths = r.localShapeCollection
      }
    this.dynamicProperties.length || (this._mdf = !1)
  },
  Y.registerModifier('rd', J), M([G], U),
  U.prototype.initModifierProperties =
      function(t, e) {
    this.getValue = this.processKeys,
    this.amount = R.getProp(t, e.a, 0, null, this),
    this._isAnimated = !!this.amount.effectsSequence.length
  },
  U.prototype.processPath =
      function(t, e) {
    var s = e / 100, i = [0, 0], a = t._length, r = 0;
    for (r = 0; r < a; r += 1) i[0] += t.v[r][0], i[1] += t.v[r][1];
    i[0] /= a, i[1] /= a;
    var n, h, o, l, p, f, d = Dt.newElement();
    for (d.c = t.c, r = 0; r < a; r += 1)
      n = t.v[r][0] + (i[0] - t.v[r][0]) * s,
      h = t.v[r][1] + (i[1] - t.v[r][1]) * s,
      o = t.o[r][0] + (i[0] - t.o[r][0]) * -s,
      l = t.o[r][1] + (i[1] - t.o[r][1]) * -s,
      p = t.i[r][0] + (i[0] - t.i[r][0]) * -s,
      f = t.i[r][1] + (i[1] - t.i[r][1]) * -s,
      d.setTripleAt(n, h, o, l, p, f, r);
    return d
  },
  U.prototype.processShapes =
      function(t) {
    var e, s, i, a, r, n, h = this.shapes.length, o = this.amount.v;
    if (0 !== o)
      for (s = 0; s < h; s += 1) {
        if (n = (r = this.shapes[s]).localShapeCollection,
            r.shape._mdf || this._mdf || t)
          for (n.releaseShapes(), r.shape._mdf = !0, e = r.shape.paths.shapes,
                                  a = r.shape.paths._length, i = 0;
               i < a; i += 1)
            n.addShape(this.processPath(e[i], o));
        r.shape.paths = r.localShapeCollection
      }
    this.dynamicProperties.length || (this._mdf = !1)
  },
  Y.registerModifier('pb', U), M([G], Z),
  Z.prototype.initModifierProperties = function(t, e) {
    this.getValue = this.processKeys, this.c = R.getProp(t, e.c, 0, null, this),
    this.o = R.getProp(t, e.o, 0, null, this),
    this.tr = z.getTransformProperty(t, e.tr, this),
    this.so = R.getProp(t, e.tr.so, 0, .01, this),
    this.eo = R.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 I,
    this.rMatrix = new I, this.sMatrix = new I, this.tMatrix = new I,
    this.matrix = new I
  }, Z.prototype.applyTransforms = function(t, e, s, i, a, r) {
    var n = r ? -1 : 1, h = i.s.v[0] + (1 - i.s.v[0]) * (1 - a),
        o = i.s.v[1] + (1 - i.s.v[1]) * (1 - a);
    t.translate(i.p.v[0] * n * a, i.p.v[1] * n * a, i.p.v[2]),
        e.translate(-i.a.v[0], -i.a.v[1], i.a.v[2]), e.rotate(-i.r.v * n * a),
        e.translate(i.a.v[0], i.a.v[1], i.a.v[2]),
        s.translate(-i.a.v[0], -i.a.v[1], i.a.v[2]),
        s.scale(r ? 1 / h : h, r ? 1 / o : o),
        s.translate(i.a.v[0], i.a.v[1], i.a.v[2])
  }, Z.prototype.init = function(t, e, s, i) {
    for (this.elem = t, this.arr = e, this.pos = s, this.elemsData = i,
        this._currentCopies = 0, this._elements = [], this._groups = [],
        this.frameId = -1, this.initDynamicPropertyContainer(t),
        this.initModifierProperties(t, e[s]);
         0 < s;)
      s -= 1, this._elements.unshift(e[s]);
    this.dynamicProperties.length ? this.k = !0 : this.getValue(!0)
  }, Z.prototype.resetElements = function(t) {
    var e, s = t.length;
    for (e = 0; e < s; e += 1)
      t[e]._processed = !1, 'gr' === t[e].ty && this.resetElements(t[e].it)
  }, Z.prototype.cloneElements = function(t) {
    var e = JSON.parse(JSON.stringify(t));
    return this.resetElements(e), e
  }, Z.prototype.changeGroupRender = function(t, e) {
    var s, i = t.length;
    for (s = 0; s < i; s += 1)
      t[s]._render = e, 'gr' === t[s].ty && this.changeGroupRender(t[s].it, e)
  }, Z.prototype.processShapes = function(t) {
    var e, s, i, a, r, n = !1;
    if (this._mdf || t) {
      var h, o = Math.ceil(this.c.v);
      if (this._groups.length < o) {
        for (; this._groups.length < o;) {
          var l = {it: this.cloneElements(this._elements), ty: 'gr'};
          l.it.push({
            a: {a: 0, ix: 1, k: [0, 0]},
            nm: 'Transform',
            o: {a: 0, ix: 7, k: 100},
            p: {a: 0, ix: 2, k: [0, 0]},
            r: {a: 1, ix: 6, k: [{s: 0, e: 0, t: 0}, {s: 0, e: 0, t: 1}]},
            s: {a: 0, ix: 3, k: [100, 100]},
            sa: {a: 0, ix: 5, k: 0},
            sk: {a: 0, ix: 4, k: 0},
            ty: 'tr'
          }),
              this.arr.splice(0, 0, l), this._groups.splice(0, 0, l),
              this._currentCopies += 1
        }
        this.elem.reloadShapes(), n = !0
      }
      for (i = r = 0; i <= this._groups.length - 1; i += 1) {
        if (h = r < o, this._groups[i]._render = h,
            this.changeGroupRender(this._groups[i].it, h), !h) {
          var p = this.elemsData[i].it, f = p[p.length - 1];
          0 !== f.transform.op.v ?
              (f.transform.op._mdf = !0, f.transform.op.v = 0) :
              f.transform.op._mdf = !1
        }
        r += 1
      }
      this._currentCopies = o;
      var d = this.o.v, m = d % 1, c = 0 < d ? Math.floor(d) : Math.ceil(d),
          u = this.pMatrix.props, g = this.rMatrix.props,
          y = this.sMatrix.props;
      this.pMatrix.reset(), this.rMatrix.reset(), this.sMatrix.reset(),
          this.tMatrix.reset(), this.matrix.reset();
      var v, b, _ = 0;
      if (0 < d) {
        for (; _ < c;)
          this.applyTransforms(
              this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, !1),
              _ += 1;
        m &&
            (this.applyTransforms(
                 this.pMatrix, this.rMatrix, this.sMatrix, this.tr, m, !1),
             _ += m)
      } else if (d < 0) {
        for (; c < _;)
          this.applyTransforms(
              this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, !0),
              _ -= 1;
        m &&
            (this.applyTransforms(
                 this.pMatrix, this.rMatrix, this.sMatrix, this.tr, -m, !0),
             _ -= m)
      }
      for (i = 1 === this.data.m ? 0 : this._currentCopies - 1,
          a = 1 === this.data.m ? 1 : -1, r = this._currentCopies;
           r;) {
        if (b = (s = (e = this.elemsData[i].it)[e.length - 1]
                         .transform.mProps.v.props)
                    .length,
            e[e.length - 1].transform.mProps._mdf = !0,
            e[e.length - 1].transform.op._mdf = !0,
            e[e.length - 1].transform.op.v = 1 === this._currentCopies ?
                this.so.v :
                this.so.v +
                    (this.eo.v - this.so.v) * (i / (this._currentCopies - 1)),
            0 !== _) {
          for ((0 !== i && 1 === a ||
                i !== this._currentCopies - 1 && -1 === a) &&
                   this.applyTransforms(
                       this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1,
                       !1),
               this.matrix.transform(
                   g[0], g[1], g[2], g[3], g[4], g[5], g[6], g[7], g[8], g[9],
                   g[10], g[11], g[12], g[13], g[14], g[15]),
               this.matrix.transform(
                   y[0], y[1], y[2], y[3], y[4], y[5], y[6], y[7], y[8], y[9],
                   y[10], y[11], y[12], y[13], y[14], y[15]),
               this.matrix.transform(
                   u[0], u[1], u[2], u[3], u[4], u[5], u[6], u[7], u[8], u[9],
                   u[10], u[11], u[12], u[13], u[14], u[15]),
               v = 0;
               v < b; v += 1)
            s[v] = this.matrix.props[v];
          this.matrix.reset()
        } else
          for (this.matrix.reset(), v = 0; v < b; v += 1)
            s[v] = this.matrix.props[v];
        _ += 1, r -= 1, i += a
      }
    } else
      for (r = this._currentCopies, i = 0, a = 1; r;)
        s = (e = this.elemsData[i].it)[e.length - 1].transform.mProps.v.props,
        e[e.length - 1].transform.mProps._mdf = !1,
        e[e.length - 1].transform.op._mdf = !1, r -= 1, i += a;
    return n
  }, Z.prototype.addShape = function() {
  }, Y.registerModifier('rp', Z), Q.prototype.addShape = function(t) {
    this._length === this._maxLength &&
        (this.shapes = this.shapes.concat(D(this._maxLength)),
         this._maxLength *= 2),
        this.shapes[this._length] = t, this._length += 1
  }, Q.prototype.releaseShapes = function() {
    var t;
    for (t = 0; t < this._length; t += 1) Dt.release(this.shapes[t]);
    this._length = 0
  }, $.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, s = this.dataProps.length;
      for ('svg' === this.renderer && (this.dashStr = ''), e = 0; e < s; 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
    }
  }, M([F], $), tt.prototype.comparePoints = function(t, e) {
    for (var s = 0, i = this.o.length / 2; s < i;) {
      if (.01 < Math.abs(t[4 * s] - t[4 * e + 2 * s])) return !1;
      s += 1
    }
    return !0
  }, tt.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
  }, tt.prototype.getValue = function(t) {
    if (this.prop.getValue(), this._mdf = !1, this._cmdf = !1, this._omdf = !1,
        this.prop._mdf || t) {
      var e, s, i, a = 4 * this.data.p;
      for (e = 0; e < a; e += 1)
        s = e % 4 == 0 ? 100 : 255, i = Math.round(this.prop.v[e] * s),
        this.c[e] !== i && (this.c[e] = i, this._cmdf = !t);
      if (this.o.length)
        for (a = this.prop.v.length, e = 4 * this.data.p; e < a; e += 1)
          s = e % 2 == 0 ? 100 : 1,
          i = e % 2 == 0 ? Math.round(100 * this.prop.v[e]) : this.prop.v[e],
          this.o[e - 4 * this.data.p] !== i &&
              (this.o[e - 4 * this.data.p] = i, this._omdf = !t);
      this._mdf = !t
    }
  }, M([F], tt);
  var et, st,
      it =
          function(t, e, s, i) {
        if (0 === e) return '';
        var a, r = t.o, n = t.i, h = t.v,
               o = ' M' + i.applyToPointStringified(h[0][0], h[0][1]);
        for (a = 1; a < e; a += 1)
          o += ' C' + i.applyToPointStringified(r[a - 1][0], r[a - 1][1]) +
              ' ' + i.applyToPointStringified(n[a][0], n[a][1]) + ' ' +
              i.applyToPointStringified(h[a][0], h[a][1]);
        return s && e &&
                   (o += ' C' +
                        i.applyToPointStringified(r[a - 1][0], r[a - 1][1]) +
                        ' ' + i.applyToPointStringified(n[0][0], n[0][1]) +
                        ' ' + i.applyToPointStringified(h[0][0], h[0][1]),
                    o += 'z'),
               o
      },
      at =
          function() {
        function t(t) {
          this.audios = [], this.audioFactory = t, this._volume = 1,
          this._isMuted = !1
        }
        return t.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, s = this.audios.length;
            for (e = 0; e < s; e += 1) this.audios[e].setRate(t)
          },
          createAudio: function(t) {
            return this.audioFactory ? this.audioFactory(t) :
                Howl                 ? new 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 t
               }
      }(),
      rt =
          function() {
        var a = function() {
          var t = w('canvas');
          t.width = 1, t.height = 1;
          var e = t.getContext('2d');
          return e.fillStyle = 'rgba(0,0,0,0)', e.fillRect(0, 0, 1, 1), t
        }();
        function t() {
          this.loadedAssets += 1,
              this.loadedAssets === this.totalImages &&
              this.loadedFootagesCount === this.totalFootages &&
              this.imagesLoadedCb && this.imagesLoadedCb(null)
        }
        function e() {
          this.loadedFootagesCount += 1,
              this.loadedAssets === this.totalImages &&
              this.loadedFootagesCount === this.totalFootages &&
              this.imagesLoadedCb && this.imagesLoadedCb(null)
        }
        function r(t, e, s) {
          var i = '';
          if (t.e)
            i = t.p;
          else if (e) {
            var a = t.p;
            -1 !== a.indexOf('images/') && (a = a.split('/')[1]), i = e + a
          } else
            i = s, i += t.u ? t.u : '', i += t.p;
          return i
        }
        function s() {
          this._imageLoaded = t.bind(this), this._footageLoaded = e.bind(this),
          this.testImageLoaded =
              function(t) {
            var e = 0, s = setInterval(function() {
                         (t.getBBox().width || 500 < e) &&
                             (this._imageLoaded(), clearInterval(s)),
                             e += 1
                       }.bind(this), 50)
          }.bind(this),
          this.createFootageData =
              function(t) {
            var e = {assetData: t}, s = r(t, this.assetsPath, this.path);
            return ot.load(
                       s,
                       function(t) {
                         e.img = t, this._footageLoaded()
                       }.bind(this),
                       function() {
                         e.img = {}, this._footageLoaded()
                       }.bind(this)),
                   e
          }.bind(this),
          this.assetsPath = '', this.path = '', this.totalImages = 0,
          this.totalFootages = 0, this.loadedAssets = 0,
          this.loadedFootagesCount = 0, this.imagesLoadedCb = null,
          this.images = []
        }
        return s.prototype = {
          loadAssets: function(t, e) {
            var s;
            this.imagesLoadedCb = e;
            var i = t.length;
            for (s = 0; s < i; s += 1)
              t[s].layers ||
                  (t[s].t ? 3 === t[s].t &&
                           (this.totalFootages += 1,
                            this.images.push(this.createFootageData(t[s]))) :
                            (this.totalImages += 1,
                             this.images.push(this._createImageData(t[s]))))
          },
          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, s = this.images.length; e < s;) {
              if (this.images[e].assetData === t) return this.images[e].img;
              e += 1
            }
            return null
          },
          createImgData: function(t) {
            var e = r(t, this.assetsPath, this.path), s = w('img');
            s.crossOrigin = 'anonymous',
            s.addEventListener('load', this._imageLoaded, !1),
            s.addEventListener('error', function() {
              i.img = a, this._imageLoaded()
            }.bind(this), !1), s.src = e;
            var i = {img: s, assetData: t};
            return i
          },
          createImageData: function(t) {
            var e = r(t, this.assetsPath, this.path), s = x('image');
            n ? this.testImageLoaded(s) :
                s.addEventListener('load', this._imageLoaded, !1),
                s.addEventListener(
                    'error',
                    function() {
                      i.img = a, 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 i = {img: s, assetData: t};
            return i
          },
          imageLoaded: t,
          footageLoaded: e,
          setCacheType: function(t, e) {
            this._createImageData = 'svg' === t ?
                (this._elementHelper = e, this.createImageData.bind(this)) :
                this.createImgData.bind(this)
          }
        },
               s
      }(),
      nt =
          (et = {maskType: !0},
           (/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)) &&
               (et.maskType = !1),
           et),
      ht =
          ((st = {}).createFilter =
               function(t, e) {
                 var s = x('filter');
                 return s.setAttribute('id', t),
                        !0 !== e &&
                            (s.setAttribute('filterUnits', 'objectBoundingBox'),
                             s.setAttribute('x', '0%'),
                             s.setAttribute('y', '0%'),
                             s.setAttribute('width', '100%'),
                             s.setAttribute('height', '100%')),
                        s
               },
           st.createAlphaToLuminanceFilter =
               function() {
                 var t = x('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
               },
           st),
      ot = function() {
        function r(t) {
          return t.response && 'object' == typeof 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, s) {
            var i, a = new XMLHttpRequest;
            try {
              a.responseType = 'json'
            } catch (t) {
            }
            a.onreadystatechange = function() {
              if (4 === a.readyState)
                if (200 === a.status)
                  i = r(a), e(i);
                else
                  try {
                    i = r(a), e(i)
                  } catch (t) {
                    s && s(t)
                  }
            }, a.open('GET', t, !0), a.send()
          }
        }
      }();
  function mt(t, e, s) {
    this._isFirstFrame = !0, this._hasMaskedPath = !1, this._frameId = -1,
    this._textData = t, this._renderType = e, this._elem = s,
    this._animatorsData = D(this._textData.a.length), this._pathData = {},
    this._moreOptions = {alignment: {}}, this.renderedLetters = [],
    this.lettersChangedFlag = !1, this.initDynamicPropertyContainer(s)
  }
  function ct(t, e, s) {
    var i = {propType: !1}, a = R.getProp, r = e.a;
    this.a = {
      r: r.r ? a(t, r.r, 0, B, s) : i,
      rx: r.rx ? a(t, r.rx, 0, B, s) : i,
      ry: r.ry ? a(t, r.ry, 0, B, s) : i,
      sk: r.sk ? a(t, r.sk, 0, B, s) : i,
      sa: r.sa ? a(t, r.sa, 0, B, s) : i,
      s: r.s ? a(t, r.s, 1, .01, s) : i,
      a: r.a ? a(t, r.a, 1, 0, s) : i,
      o: r.o ? a(t, r.o, 0, .01, s) : i,
      p: r.p ? a(t, r.p, 1, 0, s) : i,
      sw: r.sw ? a(t, r.sw, 0, 0, s) : i,
      sc: r.sc ? a(t, r.sc, 1, 0, s) : i,
      fc: r.fc ? a(t, r.fc, 1, 0, s) : i,
      fh: r.fh ? a(t, r.fh, 0, 0, s) : i,
      fs: r.fs ? a(t, r.fs, 0, .01, s) : i,
      fb: r.fb ? a(t, r.fb, 0, .01, s) : i,
      t: r.t ? a(t, r.t, 0, 0, s) : i
    },
    this.s = At.getTextSelectorProp(t, e.s, s), this.s.t = e.s.t
  }
  function ut(t, e, s, i, a, r) {
    this.o = t, this.sw = e, this.sc = s, this.fc = i, this.m = a, this.p = r,
    this._mdf = {
      o: !0,
      sw: !!e,
      sc: !!s,
      fc: !!i,
      m: !0,
      p: !0
    }
  }
  function gt(t, e) {
    this._frameId = s, this.pv = '', this.v = '', this.kf = !1,
    this._isFirstFrame = !0, this._mdf = !1, 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)
  }
  mt.prototype.searchProperties =
      function() {
    var t, e, s = this._textData.a.length, i = R.getProp;
    for (t = 0; t < s; t += 1)
      e = this._textData.a[t],
      this._animatorsData[t] = new ct(this._elem, e, this);
    this._textData.p && 'm' in this._textData.p ?
        (this._pathData = {
          f: i(this._elem, this._textData.p.f, 0, 0, this),
          l: i(this._elem, this._textData.p.l, 0, 0, this),
          r: this._textData.p.r,
          m: this._elem.maskManager.getMaskProperty(this._textData.p.m)
        },
         this._hasMaskedPath = !0) :
        this._hasMaskedPath = !1,
        this._moreOptions.alignment =
            i(this._elem, this._textData.m.a, 1, 0, this)
  },
  mt.prototype.getMeasures =
      function(t, e) {
    if (this.lettersChangedFlag = e,
        this._mdf || this._isFirstFrame || e ||
            this._hasMaskedPath && this._pathData.m._mdf) {
      this._isFirstFrame = !1;
      var s, i, a, r, n, h, o, l, p, f, d, m, c, u, g, y, v, b, _,
          k = this._moreOptions.alignment.v, A = this._animatorsData,
          P = this._textData, S = this.mHelper, C = this._renderType,
          D = this.renderedLetters.length, x = t.l;
      if (this._hasMaskedPath) {
        if (_ = this._pathData.m, !this._pathData.n || this._pathData._mdf) {
          var w, F = _.v;
          for (this._pathData.r && (F = F.reverse()),
               n = {tLength: 0, segments: []}, r = F._length - 1, a = y = 0;
               a < r; a += 1)
            w = dt.buildBezierData(
                F.v[a], F.v[a + 1],
                [F.o[a][0] - F.v[a][0], F.o[a][1] - F.v[a][1]],
                [F.i[a + 1][0] - F.v[a + 1][0], F.i[a + 1][1] - F.v[a + 1][1]]),
            n.tLength += w.segmentLength, n.segments.push(w),
            y += w.segmentLength;
          a = r,
          _.v.c &&
              (w = dt.buildBezierData(
                   F.v[a], F.v[0],
                   [F.o[a][0] - F.v[a][0], F.o[a][1] - F.v[a][1]],
                   [F.i[0][0] - F.v[0][0], F.i[0][1] - F.v[0][1]]),
               n.tLength += w.segmentLength, n.segments.push(w),
               y += w.segmentLength),
          this._pathData.pi = n
        }
        if (n = this._pathData.pi, h = this._pathData.f.v, f = 1,
            p = !(l = d = 0), u = n.segments, h < 0 && _.v.c)
          for (n.tLength < Math.abs(h) && (h = -Math.abs(h) % n.tLength),
               f = (c = u[d = u.length - 1].points).length - 1;
               h < 0;)
            h += c[f].partialLength,
                (f -= 1) < 0 && (f = (c = u[d -= 1].points).length - 1);
        m = (c = u[d].points)[f - 1], g = (o = c[f]).partialLength
      }
      r = x.length, i = s = 0;
      var T, E, M, I, L, V = 1.2 * t.finalSize * .714, R = !0;
      M = A.length;
      var z, N, O, q, B, j, W, X, H, Y, G, K, J = -1, U = h, Z = d, Q = f,
                                              $ = -1, tt = '',
                                              et = this.defaultPropsArray;
      if (2 === t.j || 1 === t.j) {
        var st = 0, it = 0, at = 2 === t.j ? -.5 : -1, rt = 0, nt = !0;
        for (a = 0; a < r; a += 1)
          if (x[a].n) {
            for (st && (st += it); rt < a;)
              x[rt].animatorJustifyOffset = st, rt += 1;
            nt = !(st = 0)
          } else {
            for (E = 0; E < M; E += 1)
              (T = A[E].a).t.propType &&
                  (nt && 2 === t.j && (it += T.t.v * at),
                   (L = A[E].s.getMult(x[a].anIndexes[E], P.a[E].s.totalChars))
                           .length ?
                       st += T.t.v * L[0]* at :
                       st += T.t.v * L * at);
            nt = !1
          }
        for (st && (st += it); rt < a;)
          x[rt].animatorJustifyOffset = st, rt += 1
      }
      for (a = 0; a < r; a += 1) {
        if (S.reset(), q = 1, x[a].n)
          s = 0, i += t.yOffset, i += R ? 1 : 0, h = U, R = !1,
          this._hasMaskedPath &&
              (f = Q, m = (c = u[d = Z].points)[f - 1],
               g = (o = c[f]).partialLength, l = 0),
          K = H = G = tt = '', et = this.defaultPropsArray;
        else {
          if (this._hasMaskedPath) {
            if ($ !== x[a].line) {
              switch (t.j) {
                case 1:
                  h += y - t.lineWidths[x[a].line];
                  break;
                case 2:
                  h += (y - t.lineWidths[x[a].line]) / 2
              }
              $ = x[a].line
            }
            J !== x[a].ind &&
                (x[J] && (h += x[J].extra), h += x[a].an / 2, J = x[a].ind),
                h += k[0] * x[a].an * .005;
            var ht = 0;
            for (E = 0; E < M; E += 1)
              (T = A[E].a).p.propType &&
                  ((L = A[E].s.getMult(x[a].anIndexes[E], P.a[E].s.totalChars))
                           .length ?
                       ht += T.p.v[0] * L[0] :
                       ht += T.p.v[0] * L),
                  T.a.propType &&
                  ((L = A[E].s.getMult(x[a].anIndexes[E], P.a[E].s.totalChars))
                           .length ?
                       ht += T.a.v[0] * L[0] :
                       ht += T.a.v[0] * L);
            for (p = !0; p;)
              h + ht <= l + g || !c ?
                  (v = (h + ht - l) / o.partialLength,
                   N = m.point[0] + (o.point[0] - m.point[0]) * v,
                   O = m.point[1] + (o.point[1] - m.point[1]) * v,
                   S.translate(-k[0] * x[a].an * .005, -k[1] * V * .01),
                   p = !1) :
                  c &&
                      (l += o.partialLength,
                       (f += 1) >= c.length &&
                           (f = 0,
                            c = u[d += 1] ? u[d].points :
                                _.v.c     ? u[d = f = 0].points :
                                            (l -= o.partialLength, null)),
                       c && (m = o, g = (o = c[f]).partialLength));
            z = x[a].an / 2 - x[a].add, S.translate(-z, 0, 0)
          } else
            z = x[a].an / 2 - x[a].add, S.translate(-z, 0, 0),
            S.translate(-k[0] * x[a].an * .005, -k[1] * V * .01, 0);
          for (E = 0; E < M; E += 1)
            (T = A[E].a).t.propType &&
                (L = A[E].s.getMult(x[a].anIndexes[E], P.a[E].s.totalChars),
                 0 === s && 0 === t.j ||
                     (this._hasMaskedPath ?
                          L.length ? h += T.t.v * L[0] : h += T.t.v* L :
                          L.length ? s += T.t.v * L[0] :
                                     s += T.t.v * L));
          for (t.strokeWidthAnim && (j = t.sw || 0),
               t.strokeColorAnim &&
                   (B = t.sc ? [t.sc[0], t.sc[1], t.sc[2]] : [0, 0, 0]),
               t.fillColorAnim && t.fc && (W = [t.fc[0], t.fc[1], t.fc[2]]),
               E = 0;
               E < M; E += 1)
            (T = A[E].a).a.propType &&
                ((L = A[E].s.getMult(x[a].anIndexes[E], P.a[E].s.totalChars))
                         .length ?
                     S.translate(
                         -T.a.v[0] * L[0], -T.a.v[1] * L[1], T.a.v[2] * L[2]) :
                     S.translate(-T.a.v[0] * L, -T.a.v[1] * L, T.a.v[2] * L));
          for (E = 0; E < M; E += 1)
            (T = A[E].a).s.propType &&
                ((L = A[E].s.getMult(x[a].anIndexes[E], P.a[E].s.totalChars))
                         .length ?
                     S.scale(
                         1 + (T.s.v[0] - 1) * L[0], 1 + (T.s.v[1] - 1) * L[1],
                         1) :
                     S.scale(
                         1 + (T.s.v[0] - 1) * L, 1 + (T.s.v[1] - 1) * L, 1));
          for (E = 0; E < M; E += 1) {
            if (T = A[E].a,
                L = A[E].s.getMult(x[a].anIndexes[E], P.a[E].s.totalChars),
                T.sk.propType &&
                    (L.length ? S.skewFromAxis(-T.sk.v * L[0], T.sa.v * L[1]) :
                                S.skewFromAxis(-T.sk.v * L, T.sa.v * L)),
                T.r.propType &&
                    (L.length ? S.rotateZ(-T.r.v * L[2]) :
                                S.rotateZ(-T.r.v * L)),
                T.ry.propType &&
                    (L.length ? S.rotateY(T.ry.v * L[1]) :
                                S.rotateY(T.ry.v * L)),
                T.rx.propType &&
                    (L.length ? S.rotateX(T.rx.v * L[0]) :
                                S.rotateX(T.rx.v * L)),
                T.o.propType &&
                    (L.length ? q += (T.o.v * L[0] - q) * L[0] :
                                q += (T.o.v * L - q) * L),
                t.strokeWidthAnim && T.sw.propType &&
                    (L.length ? j += T.sw.v * L[0] : j += T.sw.v * L),
                t.strokeColorAnim && T.sc.propType)
              for (X = 0; X < 3; X += 1)
                L.length ? B[X] += (T.sc.v[X] - B[X]) * L[0] :
                           B[X] += (T.sc.v[X] - B[X]) * L;
            if (t.fillColorAnim && t.fc) {
              if (T.fc.propType)
                for (X = 0; X < 3; X += 1)
                  L.length ? W[X] += (T.fc.v[X] - W[X]) * L[0] :
                             W[X] += (T.fc.v[X] - W[X]) * L;
              T.fh.propType &&
                  (W = L.length ? ft(W, T.fh.v * L[0]) : ft(W, T.fh.v * L)),
                  T.fs.propType &&
                  (W = L.length ? lt(W, T.fs.v * L[0]) : lt(W, T.fs.v * L)),
                  T.fb.propType &&
                  (W = L.length ? pt(W, T.fb.v * L[0]) : pt(W, T.fb.v * L))
            }
          }
          for (E = 0; E < M; E += 1)
            (T = A[E].a).p.propType &&
                (L = A[E].s.getMult(x[a].anIndexes[E], P.a[E].s.totalChars),
                 this._hasMaskedPath ?
                     L.length ?
                     S.translate(0, T.p.v[1] * L[0], -T.p.v[2] * L[1]) :
                     S.translate(0, T.p.v[1] * L, -T.p.v[2] * L) :
                     L.length ?
                     S.translate(
                         T.p.v[0] * L[0], T.p.v[1] * L[1], -T.p.v[2] * L[2]) :
                     S.translate(T.p.v[0] * L, T.p.v[1] * L, -T.p.v[2] * L));
          if (t.strokeWidthAnim && (H = j < 0 ? 0 : j),
              t.strokeColorAnim &&
                  (Y = 'rgb(' + Math.round(255 * B[0]) + ',' +
                       Math.round(255 * B[1]) + ',' + Math.round(255 * B[2]) +
                       ')'),
              t.fillColorAnim && t.fc &&
                  (G = 'rgb(' + Math.round(255 * W[0]) + ',' +
                       Math.round(255 * W[1]) + ',' + Math.round(255 * W[2]) +
                       ')'),
              this._hasMaskedPath) {
            if (S.translate(0, -t.ls), S.translate(0, k[1] * V * .01 + i, 0),
                P.p.p) {
              b = (o.point[1] - m.point[1]) / (o.point[0] - m.point[0]);
              var ot = 180 * Math.atan(b) / Math.PI;
              o.point[0] < m.point[0] && (ot += 180),
                  S.rotate(-ot * Math.PI / 180)
            }
            S.translate(N, O, 0), h -= k[0] * x[a].an * .005,
                x[a + 1] && J !== x[a + 1].ind &&
                (h += x[a].an / 2, h += .001 * t.tr * t.finalSize)
          } else {
            switch (S.translate(s, i, 0),
                    t.ps && S.translate(t.ps[0], t.ps[1] + t.ascent, 0), t.j) {
              case 1:
                S.translate(
                    x[a].animatorJustifyOffset + t.justifyOffset +
                        (t.boxWidth - t.lineWidths[x[a].line]),
                    0, 0);
                break;
              case 2:
                S.translate(
                    x[a].animatorJustifyOffset + t.justifyOffset +
                        (t.boxWidth - t.lineWidths[x[a].line]) / 2,
                    0, 0)
            }
            S.translate(0, -t.ls), S.translate(z, 0, 0),
                S.translate(k[0] * x[a