<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">! function() {
    "use strict";

    function t(e) {
        return (t = "function" == typeof Symbol &amp;&amp; "symbol" == typeof Symbol.iterator ? function(t) {
            return typeof t
        } : function(t) {
            return t &amp;&amp; "function" == typeof Symbol &amp;&amp; t.constructor === Symbol &amp;&amp; t !== Symbol.prototype ? "symbol" : typeof t
        })(e)
    }

    function e(t, i, a) {
        return (e = "undefined" != typeof Reflect &amp;&amp; Reflect.get ? Reflect.get : function(t, e, i) {
            var a = function(t, e) {
                for (; !Object.prototype.hasOwnProperty.call(t, e) &amp;&amp; null !== (t = r(t)););
                return t
            }(t, e);
            if (a) {
                var s = Object.getOwnPropertyDescriptor(a, e);
                return s.get ? s.get.call(i) : s.value
            }
        })(t, i, a || t)
    }

    function i(e, i) {
        return !i || "object" !== t(i) &amp;&amp; "function" != typeof i ? a(e) : i
    }

    function a(t) {
        if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
        return t
    }

    function r(t) {
        return (r = Object.setPrototypeOf ? Object.getPrototypeOf : function(t) {
            return t.__proto__ || Object.getPrototypeOf(t)
        })(t)
    }

    function s(t, e) {
        if ("function" != typeof e &amp;&amp; null !== e) throw new TypeError("Super expression must either be null or a function");
        t.prototype = Object.create(e &amp;&amp; e.prototype, {
            constructor: {
                value: t,
                writable: !0,
                configurable: !0
            }
        }), e &amp;&amp; function(t, e) {
            (Object.setPrototypeOf || function(t, e) {
                return t.__proto__ = e, t
            })(t, e)
        }(t, e)
    }

    function n(t, e) {
        for (var i = 0; i &lt; e.length; i++) {
            var a = e[i];
            a.enumerable = a.enumerable || !1, a.configurable = !0, "value" in a &amp;&amp; (a.writable = !0), Object.defineProperty(t, a.key, a)
        }
    }

    function h(t, e, i) {
        return e &amp;&amp; n(t.prototype, e), i &amp;&amp; n(t, i), t
    }

    function l(t, e) {
        if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }! function(t, n) {
        var o = function t() {
            l(this, t)
        };
        o.Skeleton = null, o.AnimationTemplet = null, o.Templet = null;
        var u = function t() {
                l(this, t)
            },
            c = function t() {
                l(this, t)
            },
            p = function t() {
                l(this, t)
            },
            _ = function() {
                function t() {
                    l(this, t)
                }
                return h(t, null, [{
                    key: "parse",
                    value: function(t, e) {
                        var i, a, r, s, h, l, _, d = e.__getBuffer(),
                            f = e.readUTFString();
                        t._aniClassName = f;
                        var y, m = e.readUTFString().split("\n"),
                            g = e.getUint8(),
                            v = e.getUint32(),
                            x = e.getUint32();
                        v &gt; 0 &amp;&amp; (y = d.slice(v, x));
                        var M = new n.Byte(y);
                        for (x &gt; 0 &amp;&amp; (t._publicExtData = d.slice(x, d.byteLength)), t._useParent = !!e.getUint8(), t._anis.length = g, i = 0; i &lt; g; i++) {
                            var D = t._anis[i] = new u;
                            D.nodes = [];
                            var k = D.name = m[e.getUint16()];
                            t._aniMap[k] = i, D.bone3DMap = {}, D.playTime = e.getFloat32();
                            var I = D.nodes.length = e.getUint8();
                            for (D.totalKeyframeDatasLength = 0, a = 0; a &lt; I; a++) {
                                var A = D.nodes[a] = new c;
                                A.childs = [];
                                var S = e.getInt16();
                                S &gt;= 0 &amp;&amp; (A.name = m[S], D.bone3DMap[A.name] = a), A.keyFrame = [], A.parentIndex = e.getInt16(), -1 == A.parentIndex ? A.parent = null : A.parent = D.nodes[A.parentIndex], A.lerpType = e.getUint8();
                                var b = e.getUint32();
                                M.pos = b;
                                var T = A.keyframeWidth = M.getUint16();
                                if (D.totalKeyframeDatasLength += T, 0 === A.lerpType || 1 === A.lerpType)
                                    for (A.interpolationMethod = [], A.interpolationMethod.length = T, r = 0; r &lt; T; r++) A.interpolationMethod[r] = o.AnimationTemplet.interpolation[M.getUint8()];
                                null != A.parent &amp;&amp; A.parent.childs.push(A);
                                var C = e.getUint16();
                                C &gt; 0 &amp;&amp; (A.extenData = d.slice(e.pos, e.pos + C), e.pos += C);
                                var F = e.getUint16();
                                A.keyFrame.length = F;
                                var w, P = 0;
                                for (r = 0, s = F; r &lt; s; r++) {
                                    if ((w = A.keyFrame[r] = new p).duration = e.getFloat32(), w.startTime = P, 2 === A.lerpType) {
                                        w.interpolationData = [];
                                        var L, U = e.getUint8();
                                        switch (L = e.getFloat32()) {
                                            case 254:
                                                for (w.interpolationData.length = T, _ = 0; _ &lt; T; _++) w.interpolationData[_] = 0;
                                                break;
                                            case 255:
                                                for (w.interpolationData.length = T, _ = 0; _ &lt; T; _++) w.interpolationData[_] = 5;
                                                break;
                                            default:
                                                for (w.interpolationData.push(L), l = 1; l &lt; U; l++) w.interpolationData.push(e.getFloat32())
                                        }
                                    }
                                    for (w.data = new Float32Array(T), w.dData = new Float32Array(T), w.nextData = new Float32Array(T), h = 0; h &lt; T; h++) w.data[h] = e.getFloat32(), w.data[h] &gt; -1e-8 &amp;&amp; w.data[h] &lt; 1e-8 &amp;&amp; (w.data[h] = 0);
                                    P += w.duration
                                }
                                w.startTime = D.playTime, A.playTime = D.playTime, t._calculateKeyFrame(A, F, T)
                            }
                        }
                    }
                }]), t
            }(),
            d = function() {
                function t() {
                    l(this, t)
                }
                return h(t, null, [{
                    key: "READ_DATA",
                    value: function() {
                        t._DATA.offset = t._reader.getUint32(), t._DATA.size = t._reader.getUint32()
                    }
                }, {
                    key: "READ_BLOCK",
                    value: function() {
                        for (var e = t._BLOCK.count = t._reader.getUint16(), i = t._BLOCK.blockStarts = [], a = t._BLOCK.blockLengths = [], r = 0; r &lt; e; r++) i.push(t._reader.getUint32()), a.push(t._reader.getUint32())
                    }
                }, {
                    key: "READ_STRINGS",
                    value: function() {
                        var e = t._reader.getUint32(),
                            i = t._reader.getUint16(),
                            a = t._reader.pos;
                        t._reader.pos = e + t._DATA.offset;
                        for (var r = 0; r &lt; i; r++) t._strings[r] = t._reader.readUTFString();
                        t._reader.pos = a
                    }
                }, {
                    key: "parse",
                    value: function(e, i) {
                        t._templet = e, t._reader = i, i.__getBuffer(), t.READ_DATA(), t.READ_BLOCK(), t.READ_STRINGS();
                        for (var a = 0, r = t._BLOCK.count; a &lt; r; a++) {
                            var s = i.getUint16(),
                                n = t._strings[s],
                                h = t["READ_" + n];
                            if (null == h) throw new Error("model file err,no this function:" + s + " " + n);
                            h.call(null)
                        }
                    }
                }, {
                    key: "READ_ANIMATIONS",
                    value: function() {
                        var e, i, a, r, s = t._reader,
                            n = s.__getBuffer(),
                            h = s.getUint16(),
                            l = [];
                        for (l.length = h, e = 0; e &lt; h; e++) l[e] = o.AnimationTemplet.interpolation[s.getByte()];
                        var _ = s.getUint8();
                        for (t._templet._anis.length = _, e = 0; e &lt; _; e++) {
                            var d = t._templet._anis[e] = new u;
                            d.nodes = [];
                            var f = d.name = t._strings[s.getUint16()];
                            t._templet._aniMap[f] = e, d.bone3DMap = {}, d.playTime = s.getFloat32();
                            var y = d.nodes.length = s.getInt16();
                            for (d.totalKeyframeDatasLength = 0, i = 0; i &lt; y; i++) {
                                var m = d.nodes[i] = new c;
                                m.keyframeWidth = h, m.childs = [];
                                var g = s.getUint16();
                                g &gt;= 0 &amp;&amp; (m.name = t._strings[g], d.bone3DMap[m.name] = i), m.keyFrame = [], m.parentIndex = s.getInt16(), -1 == m.parentIndex ? m.parent = null : m.parent = d.nodes[m.parentIndex], d.totalKeyframeDatasLength += h, m.interpolationMethod = l, null != m.parent &amp;&amp; m.parent.childs.push(m);
                                var v = s.getUint16();
                                m.keyFrame.length = v;
                                var x = null,
                                    M = null;
                                for (a = 0, r = v; a &lt; r; a++) {
                                    (x = m.keyFrame[a] = new p).startTime = s.getFloat32(), M &amp;&amp; (M.duration = x.startTime - M.startTime), x.dData = new Float32Array(h), x.nextData = new Float32Array(h);
                                    var D = t._DATA.offset,
                                        k = s.getUint32(),
                                        I = 4 * h,
                                        A = n.slice(D + k, D + k + I);
                                    x.data = new Float32Array(A), M = x
                                }
                                x.duration = 0, m.playTime = d.playTime, t._templet._calculateKeyFrame(m, v, h)
                            }
                        }
                    }
                }]), t
            }();
        d._strings = [], d._BLOCK = {
            count: 0
        }, d._DATA = {
            offset: 0,
            size: 0
        };
        var f = function t() {
            l(this, t)
        };
        f.stopped = 0, f.paused = 1, f.playing = 2;
        var y = function(t) {
                function e() {
                    var t;
                    return l(this, e), (t = i(this, r(e).call(this))).isCache = !0, t.playbackRate = 1, t._destroyed = !1, t._currentAnimationClipIndex = -1, t._currentKeyframeIndex = -1, t._currentTime = 0, t._overallDuration = Number.MAX_VALUE, t._stopWhenCircleFinish = !1, t._elapsedPlaybackTime = 0, t._startUpdateLoopCount = -1, t._cachePlayRate = 1, t.cacheFrameRate = 60, t.returnToZeroStopped = !1, t
                }
                return s(e, t), h(e, [{
                    key: "_onTempletLoadedComputeFullKeyframeIndices",
                    value: function(t, e, i) {
                        this._templet === i &amp;&amp; this._cachePlayRate === t &amp;&amp; this._cacheFrameRate === e &amp;&amp; this._computeFullKeyframeIndices()
                    }
                }, {
                    key: "_computeFullKeyframeIndices",
                    value: function() {}
                }, {
                    key: "_onAnimationTempletLoaded",
                    value: function() {
                        this.destroyed || this._calculatePlayDuration()
                    }
                }, {
                    key: "_calculatePlayDuration",
                    value: function() {
                        if (this.state !== f.stopped) {
                            var t = this._templet.getAniDuration(this._currentAnimationClipIndex);
                            0 === this._playEnd &amp;&amp; (this._playEnd = t), this._playEnd &gt; t &amp;&amp; (this._playEnd = t), this._playDuration = this._playEnd - this._playStart
                        }
                    }
                }, {
                    key: "_setPlayParams",
                    value: function(t, e) {
                        this._currentTime = t, this._currentKeyframeIndex = Math.floor(this.currentPlayTime / e + .01), this._currentFrameTime = this._currentKeyframeIndex * e
                    }
                }, {
                    key: "_setPlayParamsWhenStop",
                    value: function(t, e) {
                        var i = arguments.length &gt; 2 &amp;&amp; void 0 !== arguments[2] ? arguments[2] : -1;
                        this._currentTime = t;
                        var a = i &gt; 0 ? i : t;
                        this._currentKeyframeIndex = Math.floor(a / e + .01), this._currentKeyframeIndex = Math.floor(t / e + .01), this._currentFrameTime = this._currentKeyframeIndex * e, this._currentAnimationClipIndex = -1
                    }
                }, {
                    key: "_update",
                    value: function(t) {
                        if (-1 !== this._currentAnimationClipIndex &amp;&amp; !this._paused &amp;&amp; this._templet) {
                            var e = this._cacheFrameRateInterval * this._cachePlayRate,
                                i = 0;
                            this._startUpdateLoopCount !== n.Stat.loopCount &amp;&amp; (i = t * this.playbackRate, this._elapsedPlaybackTime += i);
                            var a = this.playDuration;
                            if (i += this._currentTime, 0 !== this._overallDuration &amp;&amp; this._elapsedPlaybackTime &gt;= this._overallDuration || 0 === this._overallDuration &amp;&amp; this._elapsedPlaybackTime &gt;= a || 0 === this._overallDuration &amp;&amp; i &gt;= this.playEnd) return this._setPlayParamsWhenStop(a, e, this.playEnd), void this.event(n.Event.STOPPED);
                            if (a &gt; 0) {
                                if (i &gt;= a) return this._stopWhenCircleFinish ? (this._setPlayParamsWhenStop(a, e), this._stopWhenCircleFinish = !1, void this.event(n.Event.STOPPED)) : (i %= a, this._setPlayParams(i, e), void this.event(n.Event.COMPLETE));
                                this._setPlayParams(i, e)
                            } else {
                                if (this._stopWhenCircleFinish) return this._setPlayParamsWhenStop(a, e), this._stopWhenCircleFinish = !1, void this.event(n.Event.STOPPED);
                                this._currentTime = this._currentFrameTime = this._currentKeyframeIndex = 0, this.event(n.Event.COMPLETE)
                            }
                        }
                    }
                }, {
                    key: "_destroy",
                    value: function() {
                        this.offAll(), this._templet = null, this._destroyed = !0
                    }
                }, {
                    key: "play",
                    value: function() {
                        var t = arguments.length &gt; 0 &amp;&amp; void 0 !== arguments[0] ? arguments[0] : 0,
                            e = arguments.length &gt; 1 &amp;&amp; void 0 !== arguments[1] ? arguments[1] : 1,
                            i = arguments.length &gt; 2 &amp;&amp; void 0 !== arguments[2] ? arguments[2] : 2147483647,
                            a = arguments.length &gt; 3 &amp;&amp; void 0 !== arguments[3] ? arguments[3] : 0,
                            r = arguments.length &gt; 4 &amp;&amp; void 0 !== arguments[4] ? arguments[4] : 0;
                        if (!this._templet) throw new Error("AnimationPlayer:templet must not be null,maybe you need to set url.");
                        if (i &lt; 0 || a &lt; 0 || r &lt; 0) throw new Error("AnimationPlayer:overallDuration,playStart and playEnd must large than zero.");
                        if (0 !== r &amp;&amp; a &gt; r) throw new Error("AnimationPlayer:start must less than end.");
                        this._currentTime = 0, this._currentFrameTime = 0, this._elapsedPlaybackTime = 0, this.playbackRate = e, this._overallDuration = i, this._playStart = a, this._playEnd = r, this._paused = !1, this._currentAnimationClipIndex = t, this._currentKeyframeIndex = 0, this._startUpdateLoopCount = n.Stat.loopCount, this.event(n.Event.PLAYED), this._calculatePlayDuration(), this._update(0)
                    }
                }, {
                    key: "playByFrame",
                    value: function() {
                        var t = arguments.length &gt; 0 &amp;&amp; void 0 !== arguments[0] ? arguments[0] : 0,
                            e = arguments.length &gt; 1 &amp;&amp; void 0 !== arguments[1] ? arguments[1] : 1,
                            i = arguments.length &gt; 2 &amp;&amp; void 0 !== arguments[2] ? arguments[2] : 2147483647,
                            a = arguments.length &gt; 3 &amp;&amp; void 0 !== arguments[3] ? arguments[3] : 0,
                            r = arguments.length &gt; 4 &amp;&amp; void 0 !== arguments[4] ? arguments[4] : 0,
                            s = arguments.length &gt; 5 &amp;&amp; void 0 !== arguments[5] ? arguments[5] : 30,
                            n = 1e3 / s;
                        this.play(t, e, i, a * n, r * n)
                    }
                }, {
                    key: "stop",
                    value: function() {
                        var t = !(arguments.length &gt; 0 &amp;&amp; void 0 !== arguments[0]) || arguments[0];
                        t ? (this._currentTime = this._currentFrameTime = this._currentKeyframeIndex = 0, this._currentAnimationClipIndex = -1, this.event(n.Event.STOPPED)) : this._stopWhenCircleFinish = !0
                    }
                }, {
                    key: "destroy",
                    value: function() {}
                }, {
                    key: "templet",
                    get: function() {
                        return this._templet
                    },
                    set: function(t) {
                        this.state !== f.stopped &amp;&amp; this.stop(!0), this._templet !== t &amp;&amp; (this._templet = t, this._computeFullKeyframeIndices())
                    }
                }, {
                    key: "playStart",
                    get: function() {
                        return this._playStart
                    }
                }, {
                    key: "playEnd",
                    get: function() {
                        return this._playEnd
                    }
                }, {
                    key: "playDuration",
                    get: function() {
                        return this._playDuration
                    }
                }, {
                    key: "overallDuration",
                    get: function() {
                        return this._overallDuration
                    }
                }, {
                    key: "currentAnimationClipIndex",
                    get: function() {
                        return this._currentAnimationClipIndex
                    }
                }, {
                    key: "currentKeyframeIndex",
                    get: function() {
                        return this._currentKeyframeIndex
                    }
                }, {
                    key: "currentPlayTime",
                    get: function() {
                        return this._currentTime + this._playStart
                    }
                }, {
                    key: "currentFrameTime",
                    get: function() {
                        return this._currentFrameTime
                    }
                }, {
                    key: "cachePlayRate",
                    get: function() {
                        return this._cachePlayRate
                    },
                    set: function(t) {
                        this._cachePlayRate !== t &amp;&amp; (this._cachePlayRate = t, this._templet &amp;&amp; this._computeFullKeyframeIndices())
                    }
                }, {
                    key: "cacheFrameRate",
                    get: function() {
                        return this._cacheFrameRate
                    },
                    set: function(t) {
                        this._cacheFrameRate !== t &amp;&amp; (this._cacheFrameRate = t, this._cacheFrameRateInterval = 1e3 / this._cacheFrameRate, this._templet &amp;&amp; this._computeFullKeyframeIndices())
                    }
                }, {
                    key: "currentTime",
                    set: function(t) {
                        if (-1 !== this._currentAnimationClipIndex &amp;&amp; this._templet) {
                            if (t &lt; this._playStart || t &gt; this._playEnd) throw new Error("AnimationPlayer:value must large than playStartTime,small than playEndTime.");
                            this._startUpdateLoopCount = n.Stat.loopCount;
                            var e = this._cacheFrameRateInterval * this._cachePlayRate;
                            this._currentTime = t, this._currentKeyframeIndex = Math.floor(this.currentPlayTime / e), this._currentFrameTime = this._currentKeyframeIndex * e
                        }
                    }
                }, {
                    key: "paused",
                    get: function() {
                        return this._paused
                    },
                    set: function(t) {
                        this._paused = t, t &amp;&amp; this.event(n.Event.PAUSED)
                    }
                }, {
                    key: "cacheFrameRateInterval",
                    get: function() {
                        return this._cacheFrameRateInterval
                    }
                }, {
                    key: "state",
                    get: function() {
                        return -1 === this._currentAnimationClipIndex ? f.stopped : this._paused ? f.paused : f.playing
                    }
                }, {
                    key: "destroyed",
                    get: function() {
                        return this._destroyed
                    }
                }]), e
            }(n.EventDispatcher),
            m = function() {
                function t() {
                    l(this, t)
                }
                return h(t, null, [{
                    key: "getBezierRate",
                    value: function(e, i, a, r, s) {
                        var n = t._getBezierParamKey(i, a, r, s),
                            h = 100 * n + e;
                        if (t._bezierResultCache[h]) return t._bezierResultCache[h];
                        var l, o, u = t._getBezierPoints(i, a, r, s, n);
                        for (o = u.length, l = 0; l &lt; o; l += 2)
                            if (e &lt;= u[l]) return t._bezierResultCache[h] = u[l + 1], u[l + 1];
                        return t._bezierResultCache[h] = 1, 1
                    }
                }, {
                    key: "_getBezierParamKey",
                    value: function(t, e, i, a) {
                        return 100 * (100 * (100 * (100 * t + e) + i) + a)
                    }
                }, {
                    key: "_getBezierPoints",
                    value: function(e, i, a, r, s) {
                        return t._bezierPointsCache[s] ? t._bezierPointsCache[s] : (h = [0, 0, e, i, a, r, 1, 1], l = (new n.Bezier).getBezierPoints(h, 100, 3), t._bezierPointsCache[s] = l, l);
                        var h, l
                    }
                }]), t
            }();
        m._bezierResultCache = {}, m._bezierPointsCache = {};
        var g = function(t) {
            function e() {
                var t;
                return l(this, e), (t = i(this, r(e).call(this)))._anis = [], t._aniMap = {}, t.unfixedLastAniIndex = -1, t._fullFrames = null, t._boneCurKeyFrm = [], t
            }
            return s(e, t), h(e, [{
                key: "parse",
                value: function(t) {
                    var e = new n.Byte(t);
                    this._aniVersion = e.readUTFString(), _.parse(this, e)
                }
            }, {
                key: "_calculateKeyFrame",
                value: function(t, e, i) {
                    var a = t.keyFrame;
                    a[e] = a[0];
                    for (var r = 0; r &lt; e; r++)
                        for (var s = a[r], n = 0; n &lt; i; n++) s.dData[n] = 0 === s.duration ? 0 : (a[r + 1].data[n] - s.data[n]) / s.duration, s.nextData[n] = a[r + 1].data[n];
                    a.length--
                }
            }, {
                key: "_onAsynLoaded",
                value: function(t) {
                    var e = new n.Byte(t);
                    switch (this._aniVersion = e.readUTFString(), this._aniVersion) {
                        case "LAYAANIMATION:02":
                            d.parse(this, e);
                            break;
                        default:
                            _.parse(this, e)
                    }
                }
            }, {
                key: "getAnimationCount",
                value: function() {
                    return this._anis.length
                }
            }, {
                key: "getAnimation",
                value: function(t) {
                    return this._anis[t]
                }
            }, {
                key: "getAniDuration",
                value: function(t) {
                    return this._anis[t].playTime
                }
            }, {
                key: "getNodes",
                value: function(t) {
                    return this._anis[t].nodes
                }
            }, {
                key: "getNodeIndexWithName",
                value: function(t, e) {
                    return this._anis[t].bone3DMap[e]
                }
            }, {
                key: "getNodeCount",
                value: function(t) {
                    return this._anis[t].nodes.length
                }
            }, {
                key: "getTotalkeyframesLength",
                value: function(t) {
                    return this._anis[t].totalKeyframeDatasLength
                }
            }, {
                key: "getPublicExtData",
                value: function() {
                    return this._publicExtData
                }
            }, {
                key: "getAnimationDataWithCache",
                value: function(t, e, i, a) {
                    var r = e[i];
                    if (r) {
                        var s = r[t];
                        return s ? s[a] : null
                    }
                    return null
                }
            }, {
                key: "setAnimationDataWithCache",
                value: function(t, e, i, a, r) {
                    var s = e[i] || (e[i] = {});
                    (s[t] || (s[t] = []))[a] = r
                }
            }, {
                key: "getNodeKeyFrame",
                value: function(t, e, i) {
                    var a = this._boneCurKeyFrm[e],
                        r = t.length;
                    (null == a || a &gt;= r) &amp;&amp; (a = this._boneCurKeyFrm[e] = 0);
                    var s = t[a],
                        n = i - s.startTime;
                    if (0 == n || n &gt; 0 &amp;&amp; s.duration &gt; n) return a;
                    var h = 0;
                    if (n &gt; 0) {
                        for (i += .01, h = a + 1; h &lt; r; h++)
                            if ((s = t[h]).startTime &lt;= i &amp;&amp; s.startTime + s.duration &gt; i) return this._boneCurKeyFrm[e] = h, h;
                        return r - 1
                    }
                    for (h = 0; h &lt; a; h++)
                        if ((s = t[h]).startTime &lt;= i &amp;&amp; s.startTime + s.duration &gt; i) return this._boneCurKeyFrm[e] = h, h;
                    return a
                }
            }, {
                key: "getOriginalData",
                value: function(t, i, a, r, s) {
                    var n = this._anis[t].nodes,
                        h = this._boneCurKeyFrm;
                    h.length &lt; n.length &amp;&amp; (h.length = n.length);
                    for (var l = 0, o = 0, u = n.length, c = 0; o &lt; u; o++) {
                        var p, _ = n[o],
                            d = _.keyFrame;
                        p = d[this.getNodeKeyFrame(d, o, s)], _.dataOffset = c;
                        var f = s - p.startTime,
                            y = _.lerpType;
                        if (y) switch (y) {
                            case 0:
                            case 1:
                                for (l = 0; l &lt; _.keyframeWidth;) l += _.interpolationMethod[l](_, l, i, c + l, p.data, f, p.dData, p.duration, p.nextData);
                                break;
                            case 2:
                                var m = p.interpolationData,
                                    g = m.length,
                                    v = 0;
                                for (l = 0; l &lt; g;) {
                                    var x = m[l];
                                    switch (x) {
                                        case 6:
                                        case 7:
                                            l += e.interpolation[x](_, v, i, c + v, p.data, f, p.dData, p.duration, p.nextData, m, l + 1);
                                            break;
                                        default:
                                            l += e.interpolation[x](_, v, i, c + v, p.data, f, p.dData, p.duration, p.nextData)
                                    }
                                    v++
                                }
                        } else
                            for (l = 0; l &lt; _.keyframeWidth;) l += _.interpolationMethod[l](_, l, i, c + l, p.data, f, p.dData, p.duration, p.nextData);
                        c += _.keyframeWidth
                    }
                }
            }, {
                key: "getNodesCurrentFrameIndex",
                value: function(t, e) {
                    var i = this._anis[t].nodes;
                    t !== this.unfixedLastAniIndex &amp;&amp; (this.unfixedCurrentFrameIndexes = new Uint32Array(i.length), this.unfixedCurrentTimes = new Float32Array(i.length), this.unfixedLastAniIndex = t);
                    for (var a = 0, r = i.length; a &lt; r; a++) {
                        var s = i[a];
                        for (e &lt; this.unfixedCurrentTimes[a] &amp;&amp; (this.unfixedCurrentFrameIndexes[a] = 0), this.unfixedCurrentTimes[a] = e; this.unfixedCurrentFrameIndexes[a] &lt; s.keyFrame.length &amp;&amp; !(s.keyFrame[this.unfixedCurrentFrameIndexes[a]].startTime &gt; this.unfixedCurrentTimes[a]);) this.unfixedCurrentFrameIndexes[a]++;
                        this.unfixedCurrentFrameIndexes[a]--
                    }
                    return this.unfixedCurrentFrameIndexes
                }
            }, {
                key: "getOriginalDataUnfixedRate",
                value: function(t, i, a) {
                    var r = this._anis[t].nodes;
                    t !== this.unfixedLastAniIndex &amp;&amp; (this.unfixedCurrentFrameIndexes = new Uint32Array(r.length), this.unfixedCurrentTimes = new Float32Array(r.length), this.unfixedKeyframes = [], this.unfixedLastAniIndex = t);
                    for (var s = 0, n = 0, h = r.length, l = 0; n &lt; h; n++) {
                        var o = r[n];
                        for (a &lt; this.unfixedCurrentTimes[n] &amp;&amp; (this.unfixedCurrentFrameIndexes[n] = 0), this.unfixedCurrentTimes[n] = a; this.unfixedCurrentFrameIndexes[n] &lt; o.keyFrame.length &amp;&amp; !(o.keyFrame[this.unfixedCurrentFrameIndexes[n]].startTime &gt; this.unfixedCurrentTimes[n]);) this.unfixedKeyframes[n] = o.keyFrame[this.unfixedCurrentFrameIndexes[n]], this.unfixedCurrentFrameIndexes[n]++;
                        var u = this.unfixedKeyframes[n];
                        o.dataOffset = l;
                        var c = a - u.startTime;
                        if (o.lerpType) switch (o.lerpType) {
                            case 0:
                            case 1:
                                for (s = 0; s &lt; o.keyframeWidth;) s += o.interpolationMethod[s](o, s, i, l + s, u.data, c, u.dData, u.duration, u.nextData);
                                break;
                            case 2:
                                var p = u.interpolationData,
                                    _ = p.length,
                                    d = 0;
                                for (s = 0; s &lt; _;) {
                                    var f = p[s];
                                    switch (f) {
                                        case 6:
                                        case 7:
                                            s += e.interpolation[f](o, d, i, l + d, u.data, c, u.dData, u.duration, u.nextData, p, s + 1);
                                            break;
                                        default:
                                            s += e.interpolation[f](o, d, i, l + d, u.data, c, u.dData, u.duration, u.nextData)
                                    }
                                    d++
                                }
                        } else
                            for (s = 0; s &lt; o.keyframeWidth;) s += o.interpolationMethod[s](o, s, i, l + s, u.data, c, u.dData, u.duration, u.nextData);
                        l += o.keyframeWidth
                    }
                }
            }], [{
                key: "_LinearInterpolation_0",
                value: function(t, e, i, a, r, s, n, h, l) {
                    return i[a] = r[e] + s * n[e], 1
                }
            }, {
                key: "_QuaternionInterpolation_1",
                value: function(t, e, i, a, r, s, h, l, o) {
                    var u = 0 === l ? 0 : s / l;
                    return n.MathUtil.slerpQuaternionArray(r, e, o, e, u, i, a), 4
                }
            }, {
                key: "_AngleInterpolation_2",
                value: function(t, e, i, a, r, s, n, h, l) {
                    return 0
                }
            }, {
                key: "_RadiansInterpolation_3",
                value: function(t, e, i, a, r, s, n, h, l) {
                    return 0
                }
            }, {
                key: "_Matrix4x4Interpolation_4",
                value: function(t, e, i, a, r, s, n, h, l) {
                    for (var o = 0; o &lt; 16; o++, e++) i[a + o] = r[e] + s * n[e];
                    return 16
                }
            }, {
                key: "_NoInterpolation_5",
                value: function(t, e, i, a, r, s, n, h, l) {
                    return i[a] = r[e], 1
                }
            }, {
                key: "_BezierInterpolation_6",
                value: function(t, e, i, a, r, s, n, h, l) {
                    var o = arguments.length &gt; 9 &amp;&amp; void 0 !== arguments[9] ? arguments[9] : null,
                        u = arguments.length &gt; 10 &amp;&amp; void 0 !== arguments[10] ? arguments[10] : 0;
                    return i[a] = r[e] + (l[e] - r[e]) * m.getBezierRate(s / h, o[u], o[u + 1], o[u + 2], o[u + 3]), 5
                }
            }, {
                key: "_BezierInterpolation_7",
                value: function(t, e, i, a, r, s, n, h, l) {
                    var o = arguments.length &gt; 9 &amp;&amp; void 0 !== arguments[9] ? arguments[9] : null,
                        u = arguments.length &gt; 10 &amp;&amp; void 0 !== arguments[10] ? arguments[10] : 0;
                    return i[a] = o[u + 4] + o[u + 5] * m.getBezierRate((.001 * s + o[u + 6]) / o[u + 7], o[u], o[u + 1], o[u + 2], o[u + 3]), 9
                }
            }]), e
        }(n.Resource);
        g.interpolation = [g._LinearInterpolation_0, g._QuaternionInterpolation_1, g._AngleInterpolation_2, g._RadiansInterpolation_3, g._Matrix4x4Interpolation_4, g._NoInterpolation_5, g._BezierInterpolation_6, g._BezierInterpolation_7], o.AnimationTemplet = g;
        var v = function(t) {
            function e() {
                return l(this, e), i(this, r(e).apply(this, arguments))
            }
            return s(e, t), h(e, [{
                key: "drawSkin",
                value: function(t, e) {
                    this.drawTriangles(t.texture, 0, 0, t.vertices, t.uvs, t.indexes, t.transform || n.Matrix.EMPTY, e)
                }
            }], [{
                key: "create",
                value: function() {
                    return e._caches.pop() || new e
                }
            }, {
                key: "recycle",
                value: function(t) {
                    t.clear(), e._caches.push(t)
                }
            }]), e
        }(n.Graphics);
        v._caches = [];
        var x = function() {
                function t() {
                    l(this, t), this.skX = 0, this.skY = 0, this.scX = 1, this.scY = 1, this.x = 0, this.y = 0, this.skewX = 0, this.skewY = 0
                }
                return h(t, [{
                    key: "initData",
                    value: function(t) {
                        null != t.x &amp;&amp; (this.x = t.x), null != t.y &amp;&amp; (this.y = t.y), null != t.skX &amp;&amp; (this.skX = t.skX), null != t.skY &amp;&amp; (this.skY = t.skY), null != t.scX &amp;&amp; (this.scX = t.scX), null != t.scY &amp;&amp; (this.scY = t.scY)
                    }
                }, {
                    key: "getMatrix",
                    value: function() {
                        var t;
                        return (t = this.mMatrix ? this.mMatrix : this.mMatrix = new n.Matrix).identity(), t.scale(this.scX, this.scY), (this.skewX || this.skewY) &amp;&amp; this.skew(t, this.skewX * Math.PI / 180, this.skewY * Math.PI / 180), t.rotate(this.skX * Math.PI / 180), t.translate(this.x, this.y), t
                    }
                }, {
                    key: "skew",
                    value: function(t, e, i) {
                        var a = Math.sin(i),
                            r = Math.cos(i),
                            s = Math.sin(e),
                            n = Math.cos(e);
                        return t.setTo(t.a * n - t.b * a, t.a * s + t.b * r, t.c * n - t.d * a, t.c * s + t.d * r, t.tx * n - t.ty * a, t.tx * s + t.ty * r), t
                    }
                }]), t
            }(),
            M = function() {
                function t() {
                    l(this, t), this.length = 10, this.resultTransform = new x, this.resultMatrix = new n.Matrix, this.inheritScale = !0, this.inheritRotation = !0, this.d = -1, this._children = []
                }
                return h(t, [{
                    key: "setTempMatrix",
                    value: function(t) {
                        this._tempMatrix = t;
                        var e, i = 0;
                        for (i = 0, e = this._children.length; i &lt; e; i++) this._children[i].setTempMatrix(this._tempMatrix)
                    }
                }, {
                    key: "update",
                    value: function() {
                        var t, e = arguments.length &gt; 0 &amp;&amp; void 0 !== arguments[0] ? arguments[0] : null;
                        if (this.rotation = this.transform.skX, e) t = this.resultTransform.getMatrix(), n.Matrix.mul(t, e, this.resultMatrix), this.resultRotation = this.rotation;
                        else if (this.resultRotation = this.rotation + this.parentBone.resultRotation, this.parentBone)
                            if (this.inheritRotation &amp;&amp; this.inheritScale) t = this.resultTransform.getMatrix(), n.Matrix.mul(t, this.parentBone.resultMatrix, this.resultMatrix);
                            else {
                                var i, a, r, s = this.parentBone,
                                    h = this.parentBone.resultMatrix;
                                t = this.resultTransform.getMatrix();
                                var l = h.a * t.tx + h.c * t.ty + h.tx,
                                    o = h.b * t.tx + h.d * t.ty + h.ty,
                                    u = new n.Matrix;
                                this.inheritRotation ? (i = Math.atan2(s.resultMatrix.b, s.resultMatrix.a), a = Math.cos(i), r = Math.sin(i), u.setTo(a, r, -r, a, 0, 0), n.Matrix.mul(this._tempMatrix, u, n.Matrix.TEMP), n.Matrix.TEMP.copyTo(u), t = this.resultTransform.getMatrix(), n.Matrix.mul(t, u, this.resultMatrix), this.resultTransform.scX * this.resultTransform.scY &lt; 0 &amp;&amp; this.resultMatrix.rotate(.5 * Math.PI), this.resultMatrix.tx = l, this.resultMatrix.ty = o) : (this.inheritScale, t = this.resultTransform.getMatrix(), n.Matrix.TEMP.identity(), n.Matrix.TEMP.d = this.d, n.Matrix.mul(t, n.Matrix.TEMP, this.resultMatrix), this.resultMatrix.tx = l, this.resultMatrix.ty = o)
                            }
                        else(t = this.resultTransform.getMatrix()).copyTo(this.resultMatrix);
                        var c = 0,
                            p = 0;
                        for (c = 0, p = this._children.length; c &lt; p; c++) this._children[c].update()
                    }
                }, {
                    key: "updateChild",
                    value: function() {
                        var t, e = 0;
                        for (e = 0, t = this._children.length; e &lt; t; e++) this._children[e].update()
                    }
                }, {
                    key: "setRotation",
                    value: function(t) {
                        this._sprite &amp;&amp; (this._sprite.rotation = 180 * t / Math.PI)
                    }
                }, {
                    key: "updateDraw",
                    value: function(e, i) {
                        t.ShowBones &amp;&amp; !t.ShowBones[this.name] || (this._sprite ? (this._sprite.x = e + this.resultMatrix.tx, this._sprite.y = i + this.resultMatrix.ty) : (this._sprite = new n.Sprite, this._sprite.graphics.drawCircle(0, 0, 5, "#ff0000"), this._sprite.graphics.drawLine(0, 0, this.length, 0, "#00ff00"), this._sprite.graphics.fillText(this.name, 0, 0, "20px Arial", "#00ff00", "center"), n.ILaya.stage.addChild(this._sprite), this._sprite.x = e + this.resultMatrix.tx, this._sprite.y = i + this.resultMatrix.ty));
                        var a, r = 0;
                        for (r = 0, a = this._children.length; r &lt; a; r++) this._children[r].updateDraw(e, i)
                    }
                }, {
                    key: "addChild",
                    value: function(t) {
                        this._children.push(t), t.parentBone = this
                    }
                }, {
                    key: "findBone",
                    value: function(t) {
                        if (this.name == t) return this;
                        var e, i, a;
                        for (e = 0, i = this._children.length; e &lt; i; e++)
                            if (a = this._children[e].findBone(t)) return a;
                        return null
                    }
                }, {
                    key: "localToWorld",
                    value: function(t) {
                        var e = t[0],
                            i = t[1];
                        t[0] = e * this.resultMatrix.a + i * this.resultMatrix.c + this.resultMatrix.tx, t[1] = e * this.resultMatrix.b + i * this.resultMatrix.d + this.resultMatrix.ty
                    }
                }]), t
            }();
        M.ShowBones = {};
        var D = function() {
                function t() {
                    l(this, t)
                }
                return h(t, null, [{
                    key: "getRelativeUV",
                    value: function(t, e) {
                        var i, a, r = arguments.length &gt; 2 &amp;&amp; void 0 !== arguments[2] ? arguments[2] : null,
                            s = t[0],
                            n = t[2] - t[0],
                            h = t[1],
                            l = t[5] - t[1];
                        r || (r = []), r.length = e.length, a = r.length;
                        var o = 1 / n,
                            u = 1 / l;
                        for (i = 0; i &lt; a; i += 2) r[i] = (e[i] - s) * o, r[i + 1] = (e[i + 1] - h) * u;
                        return r
                    }
                }, {
                    key: "getAbsoluteUV",
                    value: function(t, e) {
                        var i = arguments.length &gt; 2 &amp;&amp; void 0 !== arguments[2] ? arguments[2] : null;
                        if (0 == t[0] &amp;&amp; 0 == t[1] &amp;&amp; 1 == t[4] &amp;&amp; 1 == t[5]) return i ? (n.Utils.copyArray(i, e), i) : e;
                        var a, r, s = t[0],
                            h = t[2] - t[0],
                            l = t[1],
                            o = t[5] - t[1];
                        for (i || (i = []), i.length = e.length, r = i.length, a = 0; a &lt; r; a += 2) i[a] = e[a] * h + s, i[a + 1] = e[a + 1] * o + l;
                        return i
                    }
                }]), t
            }(),
            k = function() {
                function t() {
                    l(this, t), this.uvs = new Float32Array([0, 0, 1, 0, 1, 1, 0, 1]), this.vertices = new Float32Array([0, 0, 100, 0, 100, 100, 0, 100]), this.indexes = new Uint16Array([0, 1, 3, 3, 1, 2]), this.useUvTransform = !1, this.canvasPadding = 1
                }
                return h(t, [{
                    key: "getBounds",
                    value: function() {
                        return n.Rectangle._getWrapRec(this.vertices)
                    }
                }]), t
            }(),
            I = function(t) {
                function e() {
                    return l(this, e), i(this, r(e).call(this))
                }
                return s(e, t), h(e, [{
                    key: "init2",
                    value: function(t, e, i, a) {
                        this.transform &amp;&amp; (this.transform = null);
                        var r = e || [0, 1, 3, 3, 1, 2];
                        this.texture = t, this.indexes = new Uint16Array(r), this.vertices = new Float32Array(i), this.uvs = new Float32Array(a)
                    }
                }]), e
            }(k),
            A = function() {
                function t() {
                    l(this, t), this.srcDisplayIndex = -1, this.type = "src", this.displayIndex = -1, this.originalIndex = -1, this._replaceDic = {}
                }
                return h(t, [{
                    key: "showSlotData",
                    value: function(t) {
                        var e = !(arguments.length &gt; 1 &amp;&amp; void 0 !== arguments[1]) || arguments[1];
                        this.currSlotData = t, e &amp;&amp; (this.displayIndex = this.srcDisplayIndex), this.currDisplayData = null, this.currTexture = null
                    }
                }, {
                    key: "showDisplayByName",
                    value: function(t) {
                        this.currSlotData &amp;&amp; this.showDisplayByIndex(this.currSlotData.getDisplayByName(t))
                    }
                }, {
                    key: "replaceDisplayByName",
                    value: function(t, e) {
                        var i, a;
                        this.currSlotData &amp;&amp; (i = this.currSlotData.getDisplayByName(t), a = this.currSlotData.getDisplayByName(e), this.replaceDisplayByIndex(i, a))
                    }
                }, {
                    key: "replaceDisplayByIndex",
                    value: function(t, e) {
                        this.currSlotData &amp;&amp; (this._replaceDic[t] = e, this.originalIndex == t &amp;&amp; this.showDisplayByIndex(t))
                    }
                }, {
                    key: "showDisplayByIndex",
                    value: function(t) {
                        if (this.originalIndex = t, null != this._replaceDic[t] &amp;&amp; (t = this._replaceDic[t]), this.currSlotData &amp;&amp; t &gt; -1 &amp;&amp; t &lt; this.currSlotData.displayArr.length) {
                            if (this.displayIndex = t, this.currDisplayData = this.currSlotData.displayArr[t], this.currDisplayData) {
                                var e = this.currDisplayData.name;
                                this.currTexture = this.templet.getTexture(e), this.currTexture &amp;&amp; 0 == this.currDisplayData.type &amp;&amp; this.currDisplayData.uvs &amp;&amp; (this.currTexture = this.currDisplayData.createTexture(this.currTexture))
                            }
                        } else this.displayIndex = -1, this.currDisplayData = null, this.currTexture = null
                    }
                }, {
                    key: "replaceSkin",
                    value: function(t) {
                        this._diyTexture = t, this._curDiyUV &amp;&amp; (this._curDiyUV.length = 0), this.currDisplayData &amp;&amp; this._diyTexture == this.currDisplayData.texture &amp;&amp; (this._diyTexture = null)
                    }
                }, {
                    key: "setParentMatrix",
                    value: function(t) {
                        this._parentMatrix = t
                    }
                }, {
                    key: "getSaveVerticle",
                    value: function(e) {
                        return t.useSameMatrixAndVerticle &amp;&amp; this._preGraphicVerticle &amp;&amp; t.isSameArr(e, this._preGraphicVerticle) ? e = this._preGraphicVerticle : (e = n.ILaya.Utils.copyArray([], e), this._preGraphicVerticle = e), e
                    }
                }, {
                    key: "getSaveMatrix",
                    value: function(e) {
                        if (t.useSameMatrixAndVerticle &amp;&amp; this._preGraphicMatrix &amp;&amp; t.isSameMatrix(e, this._preGraphicMatrix)) e = this._preGraphicMatrix;
                        else {
                            var i = e.clone();
                            e = i, this._preGraphicMatrix = e
                        }
                        return e
                    }
                }, {
                    key: "draw",
                    value: function(e, i) {
                        var a = arguments.length &gt; 2 &amp;&amp; void 0 !== arguments[2] &amp;&amp; arguments[2],
                            r = arguments.length &gt; 3 &amp;&amp; void 0 !== arguments[3] ? arguments[3] : 1;
                        if ((null != this._diyTexture || null != this.currTexture) &amp;&amp; null != this.currDisplayData || this.currDisplayData &amp;&amp; 3 == this.currDisplayData.type) {
                            var s, h = this.currTexture;
                            switch (this._diyTexture &amp;&amp; (h = this._diyTexture), this.currDisplayData.type) {
                                case 0:
                                    if (e) {
                                        var l = this.getDisplayMatrix();
                                        if (this._parentMatrix) {
                                            var o = !1;
                                            if (l) {
                                                var u;
                                                if (n.Matrix.mul(l, this._parentMatrix, n.Matrix.TEMP), a ? (null == this._resultMatrix &amp;&amp; (this._resultMatrix = new n.Matrix), u = this._resultMatrix) : u = t._tempResultMatrix, this._diyTexture &amp;&amp; this.currDisplayData.uvs) {
                                                    var c = t._tempMatrix;
                                                    c.identity(), this.currDisplayData.uvs[1] &gt; this.currDisplayData.uvs[5] &amp;&amp; (c.d = -1), this.currDisplayData.uvs[0] &gt; this.currDisplayData.uvs[4] &amp;&amp; this.currDisplayData.uvs[1] &gt; this.currDisplayData.uvs[5] &amp;&amp; (o = !0, c.rotate(-Math.PI / 2)), n.Matrix.mul(c, n.Matrix.TEMP, u)
                                                } else n.Matrix.TEMP.copyTo(u);
                                                a || (u = this.getSaveMatrix(u)), u._checkTransform(), o ? e.drawTexture(h, -this.currDisplayData.height / 2, -this.currDisplayData.width / 2, this.currDisplayData.height, this.currDisplayData.width, u, r) : e.drawTexture(h, -this.currDisplayData.width / 2, -this.currDisplayData.height / 2, this.currDisplayData.width, this.currDisplayData.height, u, r)
                                            }
                                        }
                                    }
                                    break;
                                case 1:
                                    if (a ? (null == this._skinSprite &amp;&amp; (this._skinSprite = t.createSkinMesh()), s = this._skinSprite) : s = t.createSkinMesh(), null == s) return;
                                    var p;
                                    if (null == this.currDisplayData.bones) {
                                        var _, d = this.currDisplayData.weights;
                                        this.deformData &amp;&amp; (d = this.deformData), this._diyTexture ? (this._curDiyUV || (this._curDiyUV = []), 0 == this._curDiyUV.length &amp;&amp; (this._curDiyUV = D.getRelativeUV(this.currTexture.uv, this.currDisplayData.uvs, this._curDiyUV), this._curDiyUV = D.getAbsoluteUV(this._diyTexture.uv, this._curDiyUV, this._curDiyUV)), _ = this._curDiyUV) : _ = this.currDisplayData.uvs, this._mVerticleArr = d, this.currDisplayData.triangles.length, p = this.currDisplayData.triangles, this.deformData &amp;&amp; (a || (this._mVerticleArr = this.getSaveVerticle(this._mVerticleArr))), s.init2(h, p, this._mVerticleArr, _);
                                        var f, y = this.getDisplayMatrix();
                                        this._parentMatrix &amp;&amp; y &amp;&amp; (n.Matrix.mul(y, this._parentMatrix, n.Matrix.TEMP), a ? (null == this._resultMatrix &amp;&amp; (this._resultMatrix = new n.Matrix), f = this._resultMatrix) : f = t._tempResultMatrix, n.Matrix.TEMP.copyTo(f), a || (f = this.getSaveMatrix(f)), s.transform = f)
                                    } else this.skinMesh(i, s);
                                    e.drawSkin(s, r);
                                    break;
                                case 2:
                                    if (a ? (null == this._skinSprite &amp;&amp; (this._skinSprite = t.createSkinMesh()), s = this._skinSprite) : s = t.createSkinMesh(), null == s) return;
                                    this.skinMesh(i, s), e.drawSkin(s, r)
                            }
                        }
                    }
                }, {
                    key: "skinMesh",
                    value: function(e, i) {
                        var a, r = this.currTexture,
                            s = this.currDisplayData.bones;
                        this._diyTexture ? (r = this._diyTexture, this._curDiyUV || (this._curDiyUV = []), 0 == this._curDiyUV.length &amp;&amp; (this._curDiyUV = D.getRelativeUV(this.currTexture.uv, this.currDisplayData.uvs, this._curDiyUV), this._curDiyUV = D.getAbsoluteUV(this._diyTexture.uv, this._curDiyUV, this._curDiyUV)), a = this._curDiyUV) : a = this.currDisplayData.uvs;
                        var n, h, l, o, u, c = this.currDisplayData.weights,
                            p = this.currDisplayData.triangles,
                            _ = 0,
                            d = 0,
                            f = 0,
                            y = 0,
                            m = 0,
                            g = 0,
                            v = 0;
                        if (t._tempVerticleArr.length = 0, u = t._tempVerticleArr, this.deformData &amp;&amp; this.deformData.length &gt; 0) {
                            var x = 0;
                            for (g = 0, v = s.length; g &lt; v;) {
                                for (f = s[g++] + g, _ = 0, d = 0; g &lt; f; g++) h = e[s[g]], l = c[y] + this.deformData[x++], o = c[y + 1] + this.deformData[x++], m = c[y + 2], _ += (l * h.a + o * h.c + h.tx) * m, d += (l * h.b + o * h.d + h.ty) * m, y += 3;
                                u.push(_, d)
                            }
                        } else
                            for (g = 0, v = s.length; g &lt; v;) {
                                for (f = s[g++] + g, _ = 0, d = 0; g &lt; f; g++) h = e[s[g]], l = c[y], o = c[y + 1], m = c[y + 2], _ += (l * h.a + o * h.c + h.tx) * m, d += (l * h.b + o * h.d + h.ty) * m, y += 3;
                                u.push(_, d)
                            }
                        this._mVerticleArr = u, n = p, this._mVerticleArr = this.getSaveVerticle(this._mVerticleArr), i.init2(r, n, this._mVerticleArr, a)
                    }
                }, {
                    key: "drawBonePoint",
                    value: function(t) {
                        t &amp;&amp; this._parentMatrix &amp;&amp; t.drawCircle(this._parentMatrix.tx, this._parentMatrix.ty, 5, "#ff0000")
                    }
                }, {
                    key: "getDisplayMatrix",
                    value: function() {
                        return this.currDisplayData ? this.currDisplayData.transform.getMatrix() : null
                    }
                }, {
                    key: "getMatrix",
                    value: function() {
                        return this._resultMatrix
                    }
                }, {
                    key: "copy",
                    value: function() {
                        var e = new t;
                        return e.type = "copy", e.name = this.name, e.attachmentName = this.attachmentName, e.srcDisplayIndex = this.srcDisplayIndex, e.parent = this.parent, e.displayIndex = this.displayIndex, e.templet = this.templet, e.currSlotData = this.currSlotData, e.currTexture = this.currTexture, e.currDisplayData = this.currDisplayData, e
                    }
                }], [{
                    key: "createSkinMesh",
                    value: function() {
                        return new I
                    }
                }, {
                    key: "isSameArr",
                    value: function(t, e) {
                        if (t.length != e.length) return !1;
                        var i, a;
                        for (a = t.length, i = 0; i &lt; a; i++)
                            if (t[i] != e[i]) return !1;
                        return !0
                    }
                }, {
                    key: "isSameMatrix",
                    value: function(t, e) {
                        return t.a == e.a &amp;&amp; t.b == e.b &amp;&amp; t.c == e.c &amp;&amp; t.d == e.d &amp;&amp; Math.abs(t.tx - e.tx) &lt; 1e-5 &amp;&amp; Math.abs(t.ty - e.ty) &lt; 1e-5
                    }
                }]), t
            }();
        A._tempMatrix = new n.Matrix, A._tempResultMatrix = new n.Matrix, A.useSameMatrixAndVerticle = !0, A._tempVerticleArr = [];
        var S = function t() {
                l(this, t), this.deformSlotDataList = []
            },
            b = function t() {
                l(this, t), this.deformSlotDisplayList = []
            },
            T = function() {
                function t() {
                    l(this, t), this.slotIndex = -1, this.timeList = [], this.vectices = [], this.tweenKeyList = [], this.frameIndex = 0
                }
                return h(t, [{
                    key: "binarySearch1",
                    value: function(t, e) {
                        var i = 0,
                            a = t.length - 2;
                        if (0 == a) return 1;
                        for (var r = a &gt;&gt;&gt; 1;;) {
                            if (t[Math.floor(r + 1)] &lt;= e ? i = r + 1 : a = r, i == a) return i + 1;
                            r = i + a &gt;&gt;&gt; 1
                        }
                        return 0
                    }
                }, {
                    key: "apply",
                    value: function(t, e) {
                        var i = arguments.length &gt; 2 &amp;&amp; void 0 !== arguments[2] ? arguments[2] : 1;
                        if (t += .05, !(this.timeList.length &lt;= 0)) {
                            var a = 0,
                                r = this.timeList[0];
                            if (!(t &lt; r)) {
                                var s = this.vectices[0].length,
                                    n = [],
                                    h = this.binarySearch1(this.timeList, t);
                                if (this.frameIndex = h, t &gt;= this.timeList[this.timeList.length - 1]) {
                                    var l = this.vectices[this.vectices.length - 1];
                                    if (i &lt; 1)
                                        for (a = 0; a &lt; s; a++) n[a] += (l[a] - n[a]) * i;
                                    else
                                        for (a = 0; a &lt; s; a++) n[a] = l[a];
                                    this.deformData = n
                                } else {
                                    var o, u = this.vectices[this.frameIndex - 1],
                                        c = this.vectices[this.frameIndex],
                                        p = this.timeList[this.frameIndex - 1],
                                        _ = this.timeList[this.frameIndex];
                                    for (i = this.tweenKeyList[h - 1] ? (t - p) / (_ - p) : 0, a = 0; a &lt; s; a++) o = u[a], n[a] = o + (c[a] - o) * i;
                                    this.deformData = n
                                }
                            }
                        }
                    }
                }]), t
            }(),
            C = function t() {
                l(this, t), this.drawOrder = []
            },
            F = function t() {
                l(this, t)
            },
            w = function() {
                function t(e, i) {
                    l(this, t), this.isSpine = !0, this.isDebug = !1, this._targetBone = i[e.targetBoneIndex], this.isSpine = e.isSpine, null == this._bones &amp;&amp; (this._bones = []), this._bones.length = 0;
                    for (var a = 0, r = e.boneIndexs.length; a &lt; r; a++) this._bones.push(i[e.boneIndexs[a]]);
                    this.name = e.name, this.mix = e.mix, this.bendDirection = e.bendDirection
                }
                return h(t, [{
                    key: "apply",
                    value: function() {
                        switch (this._bones.length) {
                            case 1:
                                this._applyIk1(this._bones[0], this._targetBone.resultMatrix.tx, this._targetBone.resultMatrix.ty, this.mix);
                                break;
                            case 2:
                                this.isSpine ? this._applyIk2(this._bones[0], this._bones[1], this._targetBone.resultMatrix.tx, this._targetBone.resultMatrix.ty, this.bendDirection, this.mix) : this._applyIk3(this._bones[0], this._bones[1], this._targetBone.resultMatrix.tx, this._targetBone.resultMatrix.ty, this.bendDirection, this.mix)
                        }
                    }
                }, {
                    key: "_applyIk1",
                    value: function(e, i, a, r) {
                        var s = e.parentBone,
                            n = 1 / (s.resultMatrix.a * s.resultMatrix.d - s.resultMatrix.b * s.resultMatrix.c),
                            h = i - s.resultMatrix.tx,
                            l = a - s.resultMatrix.ty,
                            o = (h * s.resultMatrix.d - l * s.resultMatrix.c) * n - e.transform.x,
                            u = (l * s.resultMatrix.a - h * s.resultMatrix.b) * n - e.transform.y,
                            c = Math.atan2(u, o) * t.radDeg - 0 - e.transform.skX;
                        e.transform.scX &lt; 0 &amp;&amp; (c += 180), c &gt; 180 ? c -= 360 : c &lt; -180 &amp;&amp; (c += 360), e.transform.skX = e.transform.skY = e.transform.skX + c * r, e.update()
                    }
                }, {
                    key: "updatePos",
                    value: function(t, e) {
                        this._sp &amp;&amp; this._sp.pos(t, e)
                    }
                }, {
                    key: "_applyIk2",
                    value: function(e, i, a, r, s, h) {
                        if (0 != h) {
                            var l, o, u, c = e.resultTransform.x,
                                p = e.resultTransform.y,
                                _ = e.transform.scX,
                                d = e.transform.scY,
                                f = i.transform.scX;
                            _ &lt; 0 ? (_ = -_, l = 180, u = -1) : (l = 0, u = 1), d &lt; 0 &amp;&amp; (d = -d, u = -u), f &lt; 0 ? (f = -f, o = 180) : o = 0;
                            var y, m, g, v = i.resultTransform.x,
                                x = e.resultMatrix.a,
                                M = e.resultMatrix.c,
                                D = e.resultMatrix.b,
                                k = e.resultMatrix.d,
                                I = Math.abs(_ - d) &lt;= 1e-4;
                            I ? (m = x * v + M * (y = i.resultTransform.y) + e.resultMatrix.tx, g = D * v + k * y + e.resultMatrix.ty) : (y = 0, m = x * v + e.resultMatrix.tx, g = D * v + e.resultMatrix.ty), this.isDebug &amp;&amp; (this._sp || (this._sp = new n.Sprite, n.ILaya.stage.addChild(this._sp)), this._sp.graphics.clear(), this._sp.graphics.drawCircle(a, r, 15, "#ffff00"), this._sp.graphics.drawCircle(m, g, 15, "#ff00ff")), e.setRotation(Math.atan2(g - e.resultMatrix.ty, m - e.resultMatrix.tx));
                            var A = e.parentBone;
                            x = A.resultMatrix.a, M = A.resultMatrix.c, D = A.resultMatrix.b;
                            var S, b, T = 1 / (x * (k = A.resultMatrix.d) - M * D),
                                C = a - A.resultMatrix.tx,
                                F = r - A.resultMatrix.ty,
                                w = (C * k - F * M) * T - c,
                                P = (F * x - C * D) * T - p,
                                L = ((C = m - A.resultMatrix.tx) * k - (F = g - A.resultMatrix.ty) * M) * T - c,
                                U = (F * x - C * D) * T - p,
                                B = Math.sqrt(L * L + U * U),
                                E = i.length * f;
                            if (I) {
                                var R = (w * w + P * P - B * B - (E *= _) * E) / (2 * B * E);
                                R &lt; -1 ? R = -1 : R &gt; 1 &amp;&amp; (R = 1), b = Math.acos(R) * s, x = B + E * R, M = E * Math.sin(b), S = Math.atan2(P * x - w * M, w * x + P * M)
                            } else {
                                var N = (x = _ * E) * x,
                                    O = (M = d * E) * M,
                                    V = w * w + P * P,
                                    Y = Math.atan2(P, w),
                                    K = -2 * O * B,
                                    X = O - N;
                                if ((k = K * K - 4 * X * (D = O * B * B + N * V - N * O)) &gt; 0) {
                                    var W = Math.sqrt(k);
                                    K &lt; 0 &amp;&amp; (W = -W);
                                    var z = (W = -(K + W) / 2) / X,
                                        G = D / W,
                                        q = Math.abs(z) &lt; Math.abs(G) ? z : G;
                                    q * q &lt;= V &amp;&amp; (F = Math.sqrt(V - q * q) * s, S = Y - Math.atan2(F, q), b = Math.atan2(F / d, (q - B) / _))
                                }
                                var H = 0,
                                    j = Number.MAX_VALUE,
                                    Q = 0,
                                    Z = 0,
                                    J = 0,
                                    $ = 0,
                                    tt = 0,
                                    et = 0;
                                (k = (C = B + x) * C) &gt; $ &amp;&amp; (J = 0, $ = k, tt = C), (k = (C = B - x) * C) &lt; j &amp;&amp; (H = Math.PI, j = k, Q = C);
                                var it = Math.acos(-x * B / (N - O));
                                (k = (C = x * Math.cos(it) + B) * C + (F = M * Math.sin(it)) * F) &lt; j &amp;&amp; (H = it, j = k, Q = C, Z = F), k &gt; $ &amp;&amp; (J = it, $ = k, tt = C, et = F), V &lt;= (j + $) / 2 ? (S = Y - Math.atan2(Z * s, Q), b = H * s) : (S = Y - Math.atan2(et * s, tt), b = J * s)
                            }
                            var at = Math.atan2(y, v) * u,
                                rt = e.resultTransform.skX;
                            (S = (S - at) * t.radDeg + l - rt) &gt; 180 ? S -= 360 : S &lt; -180 &amp;&amp; (S += 360), e.resultTransform.x = c, e.resultTransform.y = p, e.resultTransform.skX = e.resultTransform.skY = rt + S * h, rt = i.resultTransform.skX, rt %= 360, (b = ((b + at) * t.radDeg - 0) * u + o - rt) &gt; 180 ? b -= 360 : b &lt; -180 &amp;&amp; (b += 360), i.resultTransform.x = v, i.resultTransform.y = y, i.resultTransform.skX = i.resultTransform.skY = i.resultTransform.skY + b * h, e.update()
                        }
                    }
                }, {
                    key: "_applyIk3",
                    value: function(e, i, a, r, s, h) {
                        if (0 != h) {
                            var l, o, u, c, p, _, d = i.resultMatrix.a * i.length,
                                f = i.resultMatrix.b * i.length,
                                y = d * d + f * f,
                                m = Math.sqrt(y),
                                g = e.resultMatrix.tx,
                                v = e.resultMatrix.ty,
                                x = i.resultMatrix.tx,
                                M = i.resultMatrix.ty,
                                D = x - g,
                                k = M - v,
                                I = D * D + k * k,
                                A = Math.sqrt(I),
                                S = (D = a - e.resultMatrix.tx) * D + (k = r - e.resultMatrix.ty) * k,
                                b = Math.sqrt(S);
                            if (m + A &lt;= b || b + m &lt;= A || b + A &lt;= m) {
                                var T;
                                x = g + (T = m + A &lt;= b ? 1 : -1) * (a - g) * A / b, M = v + T * (r - v) * A / b
                            } else {
                                var C = (I - y + S) / (2 * S),
                                    F = Math.sqrt(I - C * C * S) / b,
                                    w = g + D * C,
                                    P = v + k * C,
                                    L = -k * F,
                                    U = D * F;
                                s &gt; 0 ? (x = w - L, M = P - U) : (x = w + L, M = P + U)
                            }
                            l = x, o = M, this.isDebug &amp;&amp; (this._sp || (this._sp = new n.Sprite, n.ILaya.stage.addChild(this._sp)), this._sp.graphics.clear(), this._sp.graphics.drawCircle(g, v, 15, "#ff00ff"), this._sp.graphics.drawCircle(a, r, 15, "#ffff00"), this._sp.graphics.drawCircle(l, o, 15, "#ff00ff")), u = Math.atan2(o - e.resultMatrix.ty, l - e.resultMatrix.tx), e.setRotation(u), (c = t._tempMatrix).identity(), c.rotate(u), c.scale(e.resultMatrix.getScaleX(), e.resultMatrix.getScaleY()), c.translate(e.resultMatrix.tx, e.resultMatrix.ty), c.copyTo(e.resultMatrix), e.updateChild(), p = Math.atan2(r - o, a - l), i.setRotation(p), (_ = t._tempMatrix).identity(), _.rotate(p), _.scale(i.resultMatrix.getScaleX(), i.resultMatrix.getScaleY()), _.translate(l, o), c.copyTo(i.resultMatrix), i.updateChild()
                        }
                    }
                }]), t
            }();
        w.radDeg = 180 / Math.PI, w.degRad = Math.PI / 180, w._tempMatrix = new n.Matrix;
        var P = function t() {
                l(this, t), this.boneNames = [], this.bendDirection = 1, this.mix = 1, this.isSpine = !0, this.targetBoneIndex = -1, this.boneIndexs = []
            },
            L = function() {
                function t(e, i) {
                    l(this, t), this._debugKey = !1, this._segments = [], this._curves = [], this.data = e, this.position = e.position, this.spacing = e.spacing, this.rotateMix = e.rotateMix, this.translateMix = e.translateMix, this.bones = [];
                    for (var a = this.data.bones, r = 0, s = a.length; r &lt; s; r++) this.bones.push(i[a[r]])
                }
                return h(t, [{
                    key: "apply",
                    value: function(t, e) {
                        if (this.target) {
                            var i = this.translateMix,
                                a = this.translateMix,
                                r = a &gt; 0,
                                s = this.data.spacingMode,
                                n = "length" == s,
                                h = this.data.rotateMode,
                                l = "tangent" == h,
                                o = "chainScale" == h,
                                u = [],
                                c = this.bones.length,
                                p = l ? c : c + 1,
                                _ = [];
                            this._spaces = _, _[0] = this.position;
                            var d = this.spacing;
                            if (o || n)
                                for (var f = 0, y = p - 1; f &lt; y;) {
                                    var m = this.bones[f],
                                        g = m.length,
                                        v = g * m.resultMatrix.a,
                                        x = g * m.resultMatrix.b;
                                    g = Math.sqrt(v * v + x * x), o &amp;&amp; (u[f] = g), _[++f] = n ? Math.max(0, g + d) : d
                                } else
                                    for (f = 1; f &lt; p; f++) _[f] = d;
                            var M = this.computeWorldPositions(this.target, t, e, p, l, "percent" == this.data.positionMode, "percent" == s);
                            if (this._debugKey) {
                                for (f = 0; f &lt; M.length; f++) e.drawCircle(M[f++], M[f++], 5, "#00ff00");
                                var D = [];
                                for (f = 0; f &lt; M.length; f++) D.push(M[f++], M[f++]);
                                e.drawLines(0, 0, D, "#ff0000")
                            }
                            var k, I = M[0],
                                A = M[1],
                                S = this.data.offsetRotation,
                                b = "chain" == h &amp;&amp; 0 == S;
                            for (f = 0, k = 3; f &lt; c; f++, k += 3) {
                                (m = this.bones[f]).resultMatrix.tx += (I - m.resultMatrix.tx) * i, m.resultMatrix.ty += (A - m.resultMatrix.ty) * i;
                                var T = (v = M[k]) - I,
                                    C = (x = M[k + 1]) - A;
                                if (o &amp;&amp; 0 != (g = u[f])) {
                                    var F = (Math.sqrt(T * T + C * C) / g - 1) * a + 1;
                                    m.resultMatrix.a *= F, m.resultMatrix.c *= F
                                }
                                if (I = v, A = x, r) {
                                    var w, P, L, U = m.resultMatrix.a,
                                        B = m.resultMatrix.c,
                                        E = m.resultMatrix.b,
                                        R = m.resultMatrix.d;
                                    w = l ? M[k - 1] : 0 == _[f + 1] ? M[k + 2] : Math.atan2(C, T), w -= Math.atan2(E, U) - S / 180 * Math.PI, b &amp;&amp; (P = Math.cos(w), L = Math.sin(w), I += ((g = m.length) * (P * U - L * E) - T) * a, A += (g * (L * U + P * E) - C) * a), w &gt; Math.PI ? w -= 2 * Math.PI : w &lt; -Math.PI &amp;&amp; (w += 2 * Math.PI), w *= a, P = Math.cos(w), L = Math.sin(w), m.resultMatrix.a = P * U - L * E, m.resultMatrix.c = P * B - L * R, m.resultMatrix.b = L * U + P * E, m.resultMatrix.d = L * B + P * R
                                }
                            }
                        }
                    }
                }, {
                    key: "computeWorldVertices2",
                    value: function(e, i, a, r, s, n) {
                        var h, l, o, u = e.currDisplayData.bones,
                            c = e.currDisplayData.weights,
                            p = e.currDisplayData.triangles,
                            _ = 0,
                            d = 0,
                            f = 0,
                            y = 0,
                            m = 0,
                            g = 0,
                            v = 0,
                            x = 0,
                            M = 0,
                            D = 0;
                        if (null != u) {
                            for (_ = 0; _ &lt; a; _ += 2) d += (y = u[d]) + 1, f += y;
                            var k = i;
                            for (m = n, g = 3 * f; m &lt; r; m += 2) {
                                for (v = 0, x = 0, y = u[d++], y += d; d &lt; y; d++, g += 3) {
                                    h = k[u[d]].resultMatrix, M = c[g], D = c[g + 1];
                                    var I = c[g + 2];
                                    v += (M * h.a + D * h.c + h.tx) * I, x += (M * h.b + D * h.d + h.ty) * I
                                }
                                s[m] = v, s[m + 1] = x
                            }
                        } else {
                            var A, S;
                            if (p || (p = c), e.deformData &amp;&amp; (p = e.deformData), A = e.parent, i)
                                for (o = i.length, _ = 0; _ &lt; o; _++)
                                    if (i[_].name == A) {
                                        l = i[_];
                                        break
                                    }
                            l &amp;&amp; (S = l.resultMatrix), S || (S = t._tempMt);
                            var b = S.tx,
                                T = S.ty,
                                C = S.a,
                                F = S.b,
                                w = S.c,
                                P = S.d;
                            for (l &amp;&amp; (P *= l.d), d = a, m = n; m &lt; r; d += 2, m += 2) M = p[d], D = p[d + 1], s[m] = M * C + D * F + b, s[m + 1] = -(M * w + D * P + T)
                        }
                    }
                }, {
                    key: "computeWorldPositions",
                    value: function(t, e, i, a, r, s, n) {
                        t.currDisplayData.bones, t.currDisplayData.weights, t.currDisplayData.triangles;
                        var h, l, o, u, c, p, _, d, f = [],
                            y = 0,
                            m = t.currDisplayData.verLen,
                            g = this.position,
                            v = this._spaces,
                            x = [],
                            M = m / 6,
                            D = -1;
                        if (M--, m -= 4, this.computeWorldVertices2(t, e, 2, m, f, 0), this._debugKey)
                            for (y = 0; y &lt; f.length;) i.drawCircle(f[y++], f[y++], 10, "#ff0000");
                        h = f, this._curves.length = M;
                        var k = this._curves;
                        l = 0;
                        var I, A, S, b, T, C, F, w, P, L = h[0],
                            U = h[1],
                            B = 0,
                            E = 0,
                            R = 0,
                            N = 0,
                            O = 0,
                            V = 0;
                        for (y = 0, P = 2; y &lt; M; y++, P += 6) T = 2 * (I = .1875 * (L - 2 * (B = h[P]) + (R = h[P + 2]))) + (S = .09375 * (3 * (B - R) - L + (O = h[P + 4]))), C = 2 * (A = .1875 * (U - 2 * (E = h[P + 1]) + (N = h[P + 3]))) + (b = .09375 * (3 * (E - N) - U + (V = h[P + 5]))), F = .75 * (B - L) + I + .16666667 * S, w = .75 * (E - U) + A + .16666667 * b, l += Math.sqrt(F * F + w * w), F += T, w += C, T += S, C += b, l += Math.sqrt(F * F + w * w), F += T, w += C, l += Math.sqrt(F * F + w * w), F += T + S, w += C + b, l += Math.sqrt(F * F + w * w), k[y] = l, L = O, U = V;
                        if (s &amp;&amp; (g *= l), n)
                            for (y = 0; y &lt; a; y++) v[y] *= l;
                        var Y, K = this._segments,
                            X = 0;
                        for (y = 0, o = 0, u = 0, Y = 0; y &lt; a; y++, o += 3)
                            if ((c = g += p = v[y]) &lt; 0) this.addBeforePosition(c, h, 0, x, o);
                            else if (c &gt; l) this.addAfterPosition(c - l, h, m - 4, x, o);
                        else {
                            for (;; u++)
                                if (!(c &gt; (d = k[u]))) {
                                    0 == u ? c /= d : c = (c - (_ = k[u - 1])) / (d - _);
                                    break
                                }
                            if (u != D) {
                                D = u;
                                var W = 6 * u;
                                for (T = 2 * (I = .03 * ((L = h[W]) - 2 * (B = h[W + 2]) + (R = h[W + 4]))) + (S = .006 * (3 * (B - R) - L + (O = h[W + 6]))), C = 2 * (A = .03 * ((U = h[W + 1]) - 2 * (E = h[W + 3]) + (N = h[W + 5]))) + (b = .006 * (3 * (E - N) - U + (V = h[W + 7]))), F = .3 * (B - L) + I + .16666667 * S, w = .3 * (E - U) + A + .16666667 * b, X = Math.sqrt(F * F + w * w), K[0] = X, W = 1; W &lt; 8; W++) F += T, w += C, T += S, C += b, X += Math.sqrt(F * F + w * w), K[W] = X;
                                F += T, w += C, X += Math.sqrt(F * F + w * w), K[8] = X, F += T + S, w += C + b, X += Math.sqrt(F * F + w * w), K[9] = X, Y = 0
                            }
                            for (c *= X;; Y++)
                                if (!(c &gt; (d = K[Y]))) {
                                    0 == Y ? c /= d : c = Y + (c - (_ = K[Y - 1])) / (d - _);
                                    break
                                }
                            this.addCurvePosition(.1 * c, L, U, B, E, R, N, O, V, x, o, r || y &gt; 0 &amp;&amp; 0 == p)
                        }
                        return x
                    }
                }, {
                    key: "addBeforePosition",
                    value: function(t, e, i, a, r) {
                        var s = e[i],
                            n = e[i + 1],
                            h = e[i + 2] - s,
                            l = e[i + 3] - n,
                            o = Math.atan2(l, h);
                        a[r] = s + t * Math.cos(o), a[r + 1] = n + t * Math.sin(o), a[r + 2] = o
                    }
                }, {
                    key: "addAfterPosition",
                    value: function(t, e, i, a, r) {
                        var s = e[i + 2],
                            n = e[i + 3],
                            h = s - e[i],
                            l = n - e[i + 1],
                            o = Math.atan2(l, h);
                        a[r] = s + t * Math.cos(o), a[r + 1] = n + t * Math.sin(o), a[r + 2] = o
                    }
                }, {
                    key: "addCurvePosition",
                    value: function(t, e, i, a, r, s, n, h, l, o, u, c) {
                        0 == t &amp;&amp; (t = 1e-4);
                        var p = t * t,
                            _ = p * t,
                            d = 1 - t,
                            f = d * d,
                            y = f * d,
                            m = d * t,
                            g = 3 * m,
                            v = d * g,
                            x = g * t,
                            M = e * y + a * v + s * x + h * _,
                            D = i * y + r * v + n * x + l * _;
                        o[u] = M, o[u + 1] = D, o[u + 2] = c ? Math.atan2(D - (i * f + r * m * 2 + n * p), M - (e * f + a * m * 2 + s * p)) : 0
                    }
                }]), t
            }();
        L.BEFORE = -2, L.AFTER = -3, L._tempMt = new n.Matrix;
        var U = function t() {
                l(this, t), this.bones = []
            },
            B = function() {
                function t(e, i) {
                    var a, r;
                    for (l(this, t), this._temp = [], this._data = e, null == this._bones &amp;&amp; (this._bones = []), this.target = i[e.targetIndex], a = 0, r = e.boneIndexs.length; a &lt; r; a++) this._bones.push(i[e.boneIndexs[a]]);
                    this.rotateMix = e.rotateMix, this.translateMix = e.translateMix, this.scaleMix = e.scaleMix, this.shearMix = e.shearMix
                }
                return h(t, [{
                    key: "apply",
                    value: function() {
                        for (var t, e = this.target.resultMatrix.a, i = this.target.resultMatrix.b, a = this.target.resultMatrix.c, r = this.target.resultMatrix.d, s = 0, n = this._bones.length; s &lt; n; s++) {
                            if (t = this._bones[s], this.rotateMix &gt; 0) {
                                var h = t.resultMatrix.a,
                                    l = t.resultMatrix.b,
                                    o = t.resultMatrix.c,
                                    u = t.resultMatrix.d,
                                    c = Math.atan2(a, e) - Math.atan2(o, h) + this._data.offsetRotation * Math.PI / 180;
                                c &gt; Math.PI ? c -= 2 * Math.PI : c &lt; -Math.PI &amp;&amp; (c += 2 * Math.PI), c *= this.rotateMix;
                                var p = Math.cos(c),
                                    _ = Math.sin(c);
                                t.resultMatrix.a = p * h - _ * o, t.resultMatrix.b = p * l - _ * u, t.resultMatrix.c = _ * h + p * o, t.resultMatrix.d = _ * l + p * u
                            }
                            if (this.translateMix &amp;&amp; (this._temp[0] = this._data.offsetX, this._temp[1] = this._data.offsetY, this.target.localToWorld(this._temp), t.resultMatrix.tx += (this._temp[0] - t.resultMatrix.tx) * this.translateMix, t.resultMatrix.ty += (this._temp[1] - t.resultMatrix.ty) * this.translateMix, t.updateChild()), this.scaleMix &gt; 0) {
                                var d = Math.sqrt(t.resultMatrix.a * t.resultMatrix.a + t.resultMatrix.c * t.resultMatrix.c),
                                    f = Math.sqrt(e * e + a * a),
                                    y = d &gt; 1e-5 ? (d + (f - d + this._data.offsetScaleX) * this.scaleMix) / d : 0;
                                t.resultMatrix.a *= y, t.resultMatrix.c *= y, d = Math.sqrt(t.resultMatrix.b * t.resultMatrix.b + t.resultMatrix.d * t.resultMatrix.d), f = Math.sqrt(i * i + r * r), y = d &gt; 1e-5 ? (d + (f - d + this._data.offsetScaleY) * this.scaleMix) / d : 0, t.resultMatrix.b *= y, t.resultMatrix.d *= y
                            }
                            if (this.shearMix &gt; 0) {
                                l = t.resultMatrix.b, u = t.resultMatrix.d;
                                var m = Math.atan2(u, l);
                                (c = Math.atan2(r, i) - Math.atan2(a, e) - (m - Math.atan2(t.resultMatrix.c, t.resultMatrix.a))) &gt; Math.PI ? c -= 2 * Math.PI : c &lt; -Math.PI &amp;&amp; (c += 2 * Math.PI), c = m + (c + this._data.offsetShearY * Math.PI / 180) * this.shearMix, y = Math.sqrt(l * l + u * u), t.resultMatrix.b = Math.cos(c) * y, t.resultMatrix.d = Math.sin(c) * y
                            }
                        }
                    }
                }]), t
            }(),
            E = function(t) {
                function a() {
                    var t, e = arguments.length &gt; 0 &amp;&amp; void 0 !== arguments[0] ? arguments[0] : null,
                        s = arguments.length &gt; 1 &amp;&amp; void 0 !== arguments[1] ? arguments[1] : 0;
                    return l(this, a), (t = i(this, r(a).call(this)))._boneMatrixArray = [], t._lastTime = 0, t._currAniIndex = -1, t._pause = !0, t._aniClipIndex = -1, t._clipIndex = -1, t._skinIndex = 0, t._skinName = "default", t._aniMode = 0, t._index = -1, t._total = -1, t._indexControl = !1, t._eventIndex = 0, t._drawOrderIndex = 0, t._drawOrder = null, t._lastAniClipIndex = -1, t._lastUpdateAniClipIndex = -1, t._playAudio = !0, t._soundChannelArr = [], e &amp;&amp; t.init(e, s), t
                }
                return s(a, t), h(a, [{
                    key: "init",
                    value: function(t) {
                        var e, i, a, r, s = arguments.length &gt; 1 &amp;&amp; void 0 !== arguments[1] ? arguments[1] : 0,
                            h = 0;
                        if (1 == s)
                            for (this._graphicsCache = [], h = 0, e = t.getAnimationCount(); h &lt; e; h++) this._graphicsCache.push([]);
                        if (this._yReverseMatrix = t.yReverseMatrix, this._aniMode = s, this._templet = t, this._templet._addReference(1), this._player = new y, this._player.cacheFrameRate = t.rate, this._player.templet = t, this._player.play(), this._parseSrcBoneMatrix(), this._boneList = t.mBoneArr, this._rootBone = t.mRootBone, this._aniSectionDic = t.aniSectionDic, t.ikArr.length &gt; 0)
                            for (this._ikArr = [], h = 0, e = t.ikArr.length; h &lt; e; h++) this._ikArr.push(new w(t.ikArr[h], this._boneList));
                        if (t.pathArr.length &gt; 0)
                            for (null == this._pathDic &amp;&amp; (this._pathDic = {}), h = 0, e = t.pathArr.length; h &lt; e; h++) i = t.pathArr[h], a = new L(i, this._boneList), (r = this._boneSlotDic[i.name]) &amp;&amp; ((a = new L(i, this._boneList)).target = r), this._pathDic[i.name] = a;
                        if (t.tfArr.length &gt; 0)
                            for (this._tfArr = [], h = 0, e = t.tfArr.length; h &lt; e; h++) this._tfArr.push(new B(t.tfArr[h], this._boneList));
                        if (t.skinDataArray.length &gt; 0) {
                            var l = this._templet.skinDataArray[this._skinIndex];
                            this._skinName = l.name
                        }
                        this._player.on(n.Event.PLAYED, this, this._onPlay), this._player.on(n.Event.STOPPED, this, this._onStop), this._player.on(n.Event.PAUSED, this, this._onPause)
                    }
                }, {
                    key: "load",
                    value: function(t) {
                        var e = arguments.length &gt; 1 &amp;&amp; void 0 !== arguments[1] ? arguments[1] : null,
                            i = arguments.length &gt; 2 &amp;&amp; void 0 !== arguments[2] ? arguments[2] : 0;
                        this._aniPath = t, this._complete = e, this._loadAniMode = i, n.ILaya.loader.load([{
                            url: t,
                            type: n.ILaya.Loader.BUFFER
                        }], n.Handler.create(this, this._onLoaded))
                    }
                }, {
                    key: "_onLoaded",
                    value: function() {
                        var t, e = n.ILaya.Loader.getRes(this._aniPath);
                        null != e &amp;&amp; (null == o.Templet.TEMPLET_DICTIONARY &amp;&amp; (o.Templet.TEMPLET_DICTIONARY = {}), (t = o.Templet.TEMPLET_DICTIONARY[this._aniPath]) ? t.isParseFail ? this._parseFail() : t.isParserComplete ? this._parseComplete() : (t.on(n.Event.COMPLETE, this, this._parseComplete), t.on(n.Event.ERROR, this, this._parseFail)) : ((t = new o.Templet)._setCreateURL(this._aniPath), o.Templet.TEMPLET_DICTIONARY[this._aniPath] = t, t.on(n.Event.COMPLETE, this, this._parseComplete), t.on(n.Event.ERROR, this, this._parseFail), t.isParserComplete = !1, t.parseData(null, e)))
                    }
                }, {
                    key: "_parseComplete",
                    value: function() {
                        var t = o.Templet.TEMPLET_DICTIONARY[this._aniPath];
                        t &amp;&amp; (this.init(t, this._loadAniMode), this.play(0, !0)), this._complete &amp;&amp; this._complete.runWith(this)
                    }
                }, {
                    key: "_parseFail",
                    value: function() {
                        console.log("[Error]:" + this._aniPath + "è§£æžå¤±è´¥")
                    }
                }, {
                    key: "_onPlay",
                    value: function() {
                        this.event(n.Event.PLAYED)
                    }
                }, {
                    key: "_onStop",
                    value: function() {
                        var t, e = this._templet.eventAniArr[this._aniClipIndex];
                        if (e &amp;&amp; this._eventIndex &lt; e.length)
                            for (; this._eventIndex &lt; e.length; this._eventIndex++)(t = e[this._eventIndex]).time &gt;= this._player.playStart &amp;&amp; t.time &lt;= this._player.playEnd &amp;&amp; this.event(n.Event.LABEL, t);
                        this._drawOrder = null, this.event(n.Event.STOPPED)
                    }
                }, {
                    key: "_onPause",
                    value: function() {
                        this.event(n.Event.PAUSED)
                    }
                }, {
                    key: "_parseSrcBoneMatrix",
                    value: function() {
                        var t = 0,
                            e = 0;
                        for (e = this._templet.srcBoneMatrixArr.length, t = 0; t &lt; e; t++) this._boneMatrixArray.push(new n.Matrix);
                        if (0 == this._aniMode) this._boneSlotDic = this._templet.boneSlotDic, this._bindBoneBoneSlotDic = this._templet.bindBoneBoneSlotDic, this._boneSlotArray = this._templet.boneSlotArray;
                        else {
                            null == this._boneSlotDic &amp;&amp; (this._boneSlotDic = {}), null == this._bindBoneBoneSlotDic &amp;&amp; (this._bindBoneBoneSlotDic = {}), null == this._boneSlotArray &amp;&amp; (this._boneSlotArray = []);
                            var i, a, r = this._templet.boneSlotArray;
                            for (t = 0, e = r.length; t &lt; e; t++) i = r[t], null == (a = this._bindBoneBoneSlotDic[i.parent]) &amp;&amp; (this._bindBoneBoneSlotDic[i.parent] = a = []), this._boneSlotDic[i.name] = i = i.copy(), a.push(i), this._boneSlotArray.push(i)
                        }
                    }
                }, {
                    key: "_emitMissedEvents",
                    value: function(t, e) {
                        var i = arguments.length &gt; 2 &amp;&amp; void 0 !== arguments[2] ? arguments[2] : 0,
                            a = this._templet.eventAniArr,
                            r = a[this._player.currentAnimationClipIndex];
                        if (r) {
                            var s, h, l = 0;
                            for (s = r.length, l = i; l &lt; s; l++)(h = r[l]).time &gt;= this._player.playStart &amp;&amp; h.time &lt;= this._player.playEnd &amp;&amp; this.event(n.Event.LABEL, h)
                        }
                    }
                }, {
                    key: "_update",
                    value: function() {
                        var t = !(arguments.length &gt; 0 &amp;&amp; void 0 !== arguments[0]) || arguments[0];
                        if (!(this._pause || t &amp;&amp; this._indexControl)) {
                            var e = this.timer.currTimer,
                                i = this._player.currentKeyframeIndex,
                                a = e - this._lastTime;
                            if (t ? this._player._update(a) : i = -1, this._lastTime = e, this._player &amp;&amp; (this._index = this._clipIndex = this._player.currentKeyframeIndex, !(this._index &lt; 0 || a &gt; 0 &amp;&amp; this._clipIndex == i &amp;&amp; this._lastUpdateAniClipIndex == this._aniClipIndex))) {
                                this._lastUpdateAniClipIndex = this._aniClipIndex, i &gt; this._clipIndex &amp;&amp; 0 != this._eventIndex &amp;&amp; (this._emitMissedEvents(this._player.playStart, this._player.playEnd, this._eventIndex), this._eventIndex = 0);
                                var r, s, h = this._templet.eventAniArr[this._aniClipIndex];
                                if (h &amp;&amp; this._eventIndex &lt; h.length) {
                                    var l = h[this._eventIndex];
                                    l.time &gt;= this._player.playStart &amp;&amp; l.time &lt;= this._player.playEnd ? this._player.currentPlayTime &gt;= l.time &amp;&amp; (this.event(n.Event.LABEL, l), this._eventIndex++, this._playAudio &amp;&amp; l.audioValue &amp;&amp; "null" !== l.audioValue &amp;&amp; "undefined" !== l.audioValue &amp;&amp; (r = n.SoundManager.playSound(this._player.templet._path + l.audioValue, 1, n.Handler.create(this, this._onAniSoundStoped)), n.SoundManager.playbackRate = this._player.playbackRate, r &amp;&amp; this._soundChannelArr.push(r))) : l.time &lt; this._player.playStart &amp;&amp; this._playAudio &amp;&amp; l.audioValue &amp;&amp; "null" !== l.audioValue &amp;&amp; "undefined" !== l.audioValue ? (this._eventIndex++, r = n.SoundManager.playSound(this._player.templet._path + l.audioValue, 1, n.Handler.create(this, this._onAniSoundStoped), null, (this._player.currentPlayTime - l.time) / 1e3), n.SoundManager.playbackRate = this._player.playbackRate, r &amp;&amp; this._soundChannelArr.push(r)) : this._eventIndex++
                                }
                                0 == this._aniMode ? (s = this._templet.getGrahicsDataWithCache(this._aniClipIndex, this._clipIndex) || this._createGraphics()) &amp;&amp; this.graphics != s &amp;&amp; (this.graphics = s) : 1 == this._aniMode ? (s = this._getGrahicsDataWithCache(this._aniClipIndex, this._clipIndex) || this._createGraphics()) &amp;&amp; this.graphics != s &amp;&amp; (this.graphics = s) : this._createGraphics()
                            }
                        }
                    }
                }, {
                    key: "_onAniSoundStoped",
                    value: function(t) {
                        for (var e, i = this._soundChannelArr.length, a = 0; a &lt; i; a++)((e = this._soundChannelArr[a]).isStopped || t) &amp;&amp; (!e.isStopped &amp;&amp; e.stop(), this._soundChannelArr.splice(a, 1), i--, a--)
                    }
                }, {
                    key: "_createGraphics",
                    value: function() {
                        var t = arguments.length &gt; 0 &amp;&amp; void 0 !== arguments[0] ? arguments[0] : -1; - 1 == t &amp;&amp; (t = this._clipIndex);
                        var e, i = t * this._player.cacheFrameRateInterval,
                            a = this._templet.drawOrderAniArr,
                            r = a[this._aniClipIndex];
                        if (r &amp;&amp; r.length &gt; 0)
                            for (this._drawOrderIndex = 0, e = r[this._drawOrderIndex]; i &gt;= e.time &amp;&amp; (this._drawOrder = e.drawOrder, this._drawOrderIndex++, !(this._drawOrderIndex &gt;= r.length));) e = r[this._drawOrderIndex];
                        0 == this._aniMode || 1 == this._aniMode ? this.graphics = v.create() : this.graphics instanceof v ? this.graphics.clear() : this.graphics = v.create();
                        var s = this.graphics,
                            h = this._templet.getNodes(this._aniClipIndex),
                            l = 0 == this._player.state;
                        this._templet.getOriginalData(this._aniClipIndex, this._curOriginalData, null, t, l ? i + this._player.cacheFrameRateInterval : i);
                        var o, u, c, p, _ = this._aniSectionDic[this._aniClipIndex],
                            d = 0,
                            f = 0,
                            y = 0,
                            m = 0,
                            g = 0,
                            x = this._templet.srcBoneMatrixArr.length,
                            M = this._curOriginalData;
                        for (f = 0, g = _[0]; f &lt; x; f++) {
                            var D = (p = this._boneList[f]).resultTransform;
                            c = this._templet.srcBoneMatrixArr[f], D.scX = c.scX * M[d++], D.skX = c.skX + M[d++], D.skY = c.skY + M[d++], D.scY = c.scY * M[d++], D.x = c.x + M[d++], D.y = c.y + M[d++], 8 === this._templet.tMatrixDataLen &amp;&amp; (D.skewX = c.skewX + M[d++], D.skewY = c.skewY + M[d++])
                        }
                        var k, I = {},
                            A = {};
                        for (g += _[1]; f &lt; g; f++) I[(k = h[f]).name] = M[d++], A[k.name] = M[d++], d += 4;
                        var S, b, T = {},
                            C = {};
                        for (g += _[2]; f &lt; g; f++) T[(k = h[f]).name] = M[d++], C[k.name] = M[d++], d += 4;
                        if (this._pathDic)
                            for (g += _[3]; f &lt; g; f++)
                                if (k = h[f], S = this._pathDic[k.name]) {
                                    var F = new n.Byte(k.extenData);
                                    switch (F.getByte()) {
                                        case 1:
                                            S.position = M[d++];
                                            break;
                                        case 2:
                                            S.spacing = M[d++];
                                            break;
                                        case 3:
                                            S.rotateMix = M[d++], S.translateMix = M[d++]
                                    }
                                }
                        if (this._rootBone.update(this._yReverseMatrix || n.Matrix.TEMP.identity()), this._ikArr)
                            for (f = 0, g = this._ikArr.length; f &lt; g; f++)(b = this._ikArr[f]).name in T &amp;&amp; (b.bendDirection = T[b.name]), b.name in C &amp;&amp; (b.mix = C[b.name]), b.apply();
                        if (this._pathDic)
                            for (var w in this._pathDic)(S = this._pathDic[w]).apply(this._boneList, s);
                        if (this._tfArr)
                            for (f = 0, m = this._tfArr.length; f &lt; m; f++) this._tfArr[f].apply();
                        for (f = 0, m = this._boneList.length; f &lt; m; f++)
                            if (p = this._boneList[f], u = this._bindBoneBoneSlotDic[p.name], p.resultMatrix.copyTo(this._boneMatrixArray[f]), u)
                                for (y = 0, g = u.length; y &lt; g; y++)(o = u[y]) &amp;&amp; o.setParentMatrix(p.resultMatrix);
                        var P, L, U, B, E = {},
                            R = this._templet.deformAniArr;
                        if (R &amp;&amp; R.length &gt; 0) {
                            if (this._lastAniClipIndex != this._aniClipIndex)
                                for (this._lastAniClipIndex = this._aniClipIndex, f = 0, g = this._boneSlotArray.length; f &lt; g; f++)(o = this._boneSlotArray[f]).deformData = null;
                            var N, O = R[this._aniClipIndex];
                            for (N in P = O.default, this._setDeform(P, E, this._boneSlotArray, i), O) "default" != N &amp;&amp; N != this._skinName &amp;&amp; (P = O[N], this._setDeform(P, E, this._boneSlotArray, i));
                            P = O[this._skinName], this._setDeform(P, E, this._boneSlotArray, i)
                        }
                        if (this._drawOrder)
                            for (f = 0, g = this._drawOrder.length; f &lt; g; f++) L = I[(o = this._boneSlotArray[this._drawOrder[f]]).name], U = A[o.name], isNaN(L) || -2 == L || (this._templet.attachmentNames ? o.showDisplayByName(this._templet.attachmentNames[L]) : o.showDisplayByIndex(L)), E[this._drawOrder[f]] ? (B = E[this._drawOrder[f]], o.currDisplayData &amp;&amp; B[o.currDisplayData.attachmentName] ? o.deformData = B[o.currDisplayData.attachmentName] : o.deformData = null) : o.deformData = null, isNaN(U) ? o.draw(s, this._boneMatrixArray, 2 == this._aniMode) : o.draw(s, this._boneMatrixArray, 2 == this._aniMode, U);
                        else
                            for (f = 0, g = this._boneSlotArray.length; f &lt; g; f++) L = I[(o = this._boneSlotArray[f]).name], U = A[o.name], isNaN(L) || -2 == L || (this._templet.attachmentNames ? o.showDisplayByName(this._templet.attachmentNames[L]) : o.showDisplayByIndex(L)), E[f] ? (B = E[f], o.currDisplayData &amp;&amp; B[o.currDisplayData.attachmentName] ? o.deformData = B[o.currDisplayData.attachmentName] : o.deformData = null) : o.deformData = null, isNaN(U) ? o.draw(s, this._boneMatrixArray, 2 == this._aniMode) : o.draw(s, this._boneMatrixArray, 2 == this._aniMode, U);
                        return 0 == this._aniMode ? (this._templet.setGrahicsDataWithCache(this._aniClipIndex, t, s), this._checkIsAllParsed(this._aniClipIndex)) : 1 == this._aniMode &amp;&amp; this._setGrahicsDataWithCache(this._aniClipIndex, t, s), s
                    }
                }, {
                    key: "_checkIsAllParsed",
                    value: function(t) {
                        var e, i;
                        for (i = Math.floor(.01 + this._templet.getAniDuration(t) / 1e3 * this._player.cacheFrameRate), e = 0; e &lt; i; e++)
                            if (!this._templet.getGrahicsDataWithCache(t, e)) return;
                        this._templet.getGrahicsDataWithCache(t, i) ? this._templet.deleteAniData(t) : this._createGraphics(i)
                    }
                }, {
                    key: "_setDeform",
                    value: function(t, e, i, a) {
                        var r, s, n, h, l, o;
                        if (t &amp;&amp; t)
                            for (h = 0, l = t.deformSlotDataList.length; h &lt; l; h++)
                                for (r = t.deformSlotDataList[h], o = 0; o &lt; r.deformSlotDisplayList.length; o++) n = i[(s = r.deformSlotDisplayList[o]).slotIndex], s.apply(a, n), e[s.slotIndex] || (e[s.slotIndex] = {}), e[s.slotIndex][s.attachment] = s.deformData
                    }
                }, {
                    key: "getAnimNum",
                    value: function() {
                        return this._templet.getAnimationCount()
                    }
                }, {
                    key: "getAniNameByIndex",
                    value: function(t) {
                        return this._templet.getAniNameByIndex(t)
                    }
                }, {
                    key: "getSlotByName",
                    value: function(t) {
                        return this._boneSlotDic[t]
                    }
                }, {
                    key: "showSkinByName",
                    value: function(t) {
                        var e = !(arguments.length &gt; 1 &amp;&amp; void 0 !== arguments[1]) || arguments[1];
                        this.showSkinByIndex(this._templet.getSkinIndexByName(t), e)
                    }
                }, {
                    key: "showSkinByIndex",
                    value: function(t) {
                        for (var e = !(arguments.length &gt; 1 &amp;&amp; void 0 !== arguments[1]) || arguments[1], i = 0; i &lt; this._boneSlotArray.length; i++) this._boneSlotArray[i].showSlotData(null, e);
                        if (this._templet.showSkinByIndex(this._boneSlotDic, t, e)) {
                            var a = this._templet.skinDataArray[t];
                            this._skinIndex = t, this._skinName = a.name
                        }
                        this._clearCache()
                    }
                }, {
                    key: "showSlotSkinByIndex",
                    value: function(t, e) {
                        if (0 != this._aniMode) {
                            var i = this.getSlotByName(t);
                            i &amp;&amp; i.showDisplayByIndex(e), this._clearCache()
                        }
                    }
                }, {
                    key: "showSlotSkinByName",
                    value: function(t, e) {
                        if (0 != this._aniMode) {
                            var i = this.getSlotByName(t);
                            i &amp;&amp; i.showDisplayByName(e), this._clearCache()
                        }
                    }
                }, {
                    key: "replaceSlotSkinName",
                    value: function(t, e, i) {
                        if (0 != this._aniMode) {
                            var a = this.getSlotByName(t);
                            a &amp;&amp; a.replaceDisplayByName(e, i), this._clearCache()
                        }
                    }
                }, {
                    key: "replaceSlotSkinByIndex",
                    value: function(t, e, i) {
                        if (0 != this._aniMode) {
                            var a = this.getSlotByName(t);
                            a &amp;&amp; a.replaceDisplayByIndex(e, i), this._clearCache()
                        }
                    }
                }, {
                    key: "setSlotSkin",
                    value: function(t, e) {
                        if (0 != this._aniMode) {
                            var i = this.getSlotByName(t);
                            i &amp;&amp; i.replaceSkin(e), this._clearCache()
                        }
                    }
                }, {
                    key: "_clearCache",
                    value: function() {
                        if (1 == this._aniMode)
                            for (var t = 0, e = this._graphicsCache.length; t &lt; e; t++) {
                                for (var i = 0, a = this._graphicsCache[t].length; i &lt; a; i++) {
                                    var r = this._graphicsCache[t][i];
                                    r &amp;&amp; r != this.graphics &amp;&amp; v.recycle(r)
                                }
                                this._graphicsCache[t].length = 0
                            }
                    }
                }, {
                    key: "play",
                    value: function(t, e) {
                        var i = !(arguments.length &gt; 2 &amp;&amp; void 0 !== arguments[2]) || arguments[2],
                            a = arguments.length &gt; 3 &amp;&amp; void 0 !== arguments[3] ? arguments[3] : 0,
                            r = arguments.length &gt; 4 &amp;&amp; void 0 !== arguments[4] ? arguments[4] : 0,
                            s = !(arguments.length &gt; 5 &amp;&amp; void 0 !== arguments[5]) || arguments[5],
                            h = !(arguments.length &gt; 6 &amp;&amp; void 0 !== arguments[6]) || arguments[6];
                        this._playAudio = h, this._indexControl = !1;
                        var l, o = -1;
                        if (l = e ? 2147483647 : 0, "string" == typeof t)
                            for (var u = 0, c = this._templet.getAnimationCount(); u &lt; c; u++) {
                                var p = this._templet.getAnimation(u);
                                if (p &amp;&amp; t == p.name) {
                                    o = u;
                                    break
                                }
                            } else o = t;
                        o &gt; -1 &amp;&amp; o &lt; this.getAnimNum() &amp;&amp; (this._aniClipIndex = o, (i || this._pause || this._currAniIndex != o) &amp;&amp; (this._currAniIndex = o, this._curOriginalData = new Float32Array(this._templet.getTotalkeyframesLength(o)), this._drawOrder = null, this._eventIndex = 0, this._player.play(o, this._player.playbackRate, l, a, r), s &amp;&amp; this._templet.showSkinByIndex(this._boneSlotDic, this._skinIndex), this._pause &amp;&amp; (this._pause = !1, this._lastTime = n.ILaya.Browser.now(), this.timer.frameLoop(1, this, this._update, null, !0)), this._update()))
                    }
                }, {
                    key: "stop",
                    value: function() {
                        this._pause || (this._pause = !0, this._player &amp;&amp; this._player.stop(!0), this._soundChannelArr.length &gt; 0 &amp;&amp; this._onAniSoundStoped(!0), this.timer.clear(this, this._update))
                    }
                }, {
                    key: "playbackRate",
                    value: function(t) {
                        this._player &amp;&amp; (this._player.playbackRate = t)
                    }
                }, {
                    key: "paused",
                    value: function() {
                        if (!this._pause) {
                            if (this._pause = !0, this._player &amp;&amp; (this._player.paused = !0), this._soundChannelArr.length &gt; 0)
                                for (var t, e = this._soundChannelArr.length, i = 0; i &lt; e; i++)(t = this._soundChannelArr[i]).isStopped || t.pause();
                            this.timer.clear(this, this._update)
                        }
                    }
                }, {
                    key: "resume",
                    value: function() {
                        if (this._indexControl = !1, this._pause) {
                            if (this._pause = !1, this._player &amp;&amp; (this._player.paused = !1), this._soundChannelArr.length &gt; 0)
                                for (var t, e = this._soundChannelArr.length, i = 0; i &lt; e; i++)(t = this._soundChannelArr[i]).audioBuffer &amp;&amp; t.resume();
                            this._lastTime = n.ILaya.Browser.now(), this.timer.frameLoop(1, this, this._update, null, !0)
                        }
                    }
                }, {
                    key: "_getGrahicsDataWithCache",
                    value: function(t, e) {
                        return this._graphicsCache[t][e]
                    }
                }, {
                    key: "_setGrahicsDataWithCache",
                    value: function(t, e, i) {
                        this._graphicsCache[t][e] = i
                    }
                }, {
                    key: "destroy",
                    value: function() {
                        var t = !(arguments.length &gt; 0 &amp;&amp; void 0 !== arguments[0]) || arguments[0];
                        e(r(a.prototype), "destroy", this).call(this, t), this._templet._removeReference(1), this._templet = null, this._player &amp;&amp; this._player.offAll(), this._player = null, this._curOriginalData = null, this._boneMatrixArray.length = 0, this._lastTime = 0, this.timer.clear(this, this._update), this._soundChannelArr.length &gt; 0 &amp;&amp; this._onAniSoundStoped(!0)
                    }
                }, {
                    key: "url",
                    get: function() {
                        return this._aniPath
                    },
                    set: function(t) {
                        this.load(t)
                    }
                }, {
                    key: "index",
                    get: function() {
                        return this._index
                    },
                    set: function(t) {
                        this.player &amp;&amp; (this._index = t, this._player.currentTime = 1e3 * this._index / this._player.cacheFrameRate, this._indexControl = !0, this._update(!1))
                    }
                }, {
                    key: "total",
                    get: function() {
                        return this._templet &amp;&amp; this._player ? this._total = Math.floor(this._templet.getAniDuration(this._player.currentAnimationClipIndex) / 1e3 * this._player.cacheFrameRate) : this._total = -1, this._total
                    }
                }, {
                    key: "player",
                    get: function() {
                        return this._player
                    }
                }, {
                    key: "templet",
                    get: function() {
                        return this._templet
                    }
                }]), a
            }(n.Sprite);
        E.useSimpleMeshInCanvas = !1, o.Skeleton = E, n.ILaya.regClass(E), n.ClassUtils.regClass("laya.ani.bone.Skeleton", E), n.ClassUtils.regClass("Laya.Skeleton", E);
        var R = function t() {
                l(this, t), this.slotArr = []
            },
            N = function() {
                function t() {
                    l(this, t)
                }
                return h(t, [{
                    key: "createTexture",
                    value: function(t) {
                        return this.texture || (this.texture = new n.Texture(t.bitmap, this.uvs), this.uvs[0] &gt; this.uvs[4] &amp;&amp; this.uvs[1] &gt; this.uvs[5] ? (this.texture.width = t.height, this.texture.height = t.width, this.texture.offsetX = -t.offsetX, this.texture.offsetY = -t.offsetY, this.texture.sourceWidth = t.sourceHeight, this.texture.sourceHeight = t.sourceWidth) : (this.texture.width = t.width, this.texture.height = t.height, this.texture.offsetX = -t.offsetX, this.texture.offsetY = -t.offsetY, this.texture.sourceWidth = t.sourceWidth, this.texture.sourceHeight = t.sourceHeight)), this.texture
                    }
                }, {
                    key: "destory",
                    value: function() {
                        this.texture &amp;&amp; this.texture.destroy()
                    }
                }]), t
            }(),
            O = function() {
                function t() {
                    l(this, t), this.displayArr = []
                }
                return h(t, [{
                    key: "getDisplayByName",
                    value: function(t) {
                        for (var e = 0, i = this.displayArr.length; e &lt; i; e++)
                            if (this.displayArr[e].attachmentName == t) return e;
                        return -1
                    }
                }]), t
            }(),
            V = function t() {
                l(this, t), this.boneIndexs = []
            },
            Y = function(t) {
                function a() {
                    var t;
                    return l(this, a), (t = i(this, r(a).apply(this, arguments)))._graphicsCache = [], t.srcBoneMatrixArr = [], t.ikArr = [], t.tfArr = [], t.pathArr = [], t.boneSlotDic = {}, t.bindBoneBoneSlotDic = {}, t.boneSlotArray = [], t.skinDataArray = [], t.skinDic = {}, t.subTextureDic = {}, t.isParseFail = !1, t.drawOrderAniArr = [], t.eventAniArr = [], t.attachmentNames = null, t.deformAniArr = [], t.skinSlotDisplayDataArr = [], t._isParseAudio = !1, t._isDestroyed = !1, t._rate = 30, t.isParserComplete = !1, t.aniSectionDic = {}, t._textureDic = {}, t.mBoneArr = [], t
                }
                return s(a, t), h(a, [{
                    key: "loadAni",
                    value: function(t) {
                        this._skBufferUrl = t, n.ILaya.loader.load(t, n.Handler.create(this, this.onComplete), null, n.ILaya.Loader.BUFFER)
                    }
                }, {
                    key: "onComplete",
                    value: function() {
                        if (this._isDestroyed) this.destroy();
                        else {
                            var t = n.ILaya.Loader.getRes(this._skBufferUrl);
                            t ? (this._path = this._skBufferUrl.slice(0, this._skBufferUrl.lastIndexOf("/")) + "/", this.parseData(null, t)) : this.event(n.Event.ERROR, "load failed:" + this._skBufferUrl)
                        }
                    }
                }, {
                    key: "parseData",
                    value: function(t, e) {
                        var i = arguments.length &gt; 2 &amp;&amp; void 0 !== arguments[2] ? arguments[2] : 30;
                        if (!this._path) {
                            var a = this._relativeUrl || this.url;
                            if (a) {
                                var r = a.lastIndexOf("/");
                                this._path = r &gt; 0 ? a.slice(0, r) + "/" : ""
                            }
                        }
                        this._mainTexture = t, this._rate = i, this.parse(e)
                    }
                }, {
                    key: "buildArmature",
                    value: function() {
                        var t = arguments.length &gt; 0 &amp;&amp; void 0 !== arguments[0] ? arguments[0] : 0;
                        return new E(this, t)
                    }
                }, {
                    key: "parse",
                    value: function(t) {
                        e(r(a.prototype), "parse", this).call(this, t), this.event(n.Event.LOADED, this), this._aniVersion === a.LAYA_ANIMATION_VISION ? this._isParseAudio = !0 : this._aniVersion != a.LAYA_ANIMATION_160_VISION &amp;&amp; console.log("[Error] ç‰ˆæœ¬ä¸ä¸€è‡´ï¼Œè¯·ä½¿ç”¨IDEç‰ˆæœ¬é…å¥—çš„é‡æ–°å¯¼å‡º" + this._aniVersion + "-&gt;" + a.LAYA_ANIMATION_VISION), this._mainTexture ? this._parsePublicExtData() : this._parseTexturePath()
                    }
                }, {
                    key: "_parseTexturePath",
                    value: function() {
                        if (this._isDestroyed) this.destroy();
                        else {
                            var t = 0;
                            this._loadList = [];
                            var e, i = new n.Byte(this.getPublicExtData()),
                                a = i.getInt32(),
                                r = i.readUTFString(),
                                s = r.split("\n");
                            for (t = 0; t &lt; a; t++) e = this._path + s[2 * t], r = s[2 * t + 1], i.getFloat32(), i.getFloat32(), i.getFloat32(), i.getFloat32(), i.getFloat32(), i.getFloat32(), i.getFloat32(), i.getFloat32(), -1 == this._loadList.indexOf(e) &amp;&amp; this._loadList.push(e);
                            n.ILaya.loader.load(this._loadList, n.Handler.create(this, this._textureComplete))
                        }
                    }
                }, {
                    key: "_textureComplete",
                    value: function() {
                        for (var t, e = 0, i = this._loadList.length; e &lt; i; e++) t = this._loadList[e], this._textureDic[t] = n.ILaya.Loader.getRes(t);
                        this._parsePublicExtData()
                    }
                }, {
                    key: "_parsePublicExtData",
                    value: function() {
                        var t, e = 0,
                            i = 0,
                            a = 0,
                            r = 0,
                            s = 0;
                        for (e = 0, s = this.getAnimationCount(); e &lt; s; e++) this._graphicsCache.push([]);
                        t = "Dragon" != this._aniClassName;
                        var h, l, o = new n.Byte(this.getPublicExtData()),
                            u = 0,
                            c = 0,
                            p = 0,
                            _ = 0,
                            d = 0,
                            f = 0,
                            y = 0,
                            m = 0,
                            g = 0,
                            v = o.getInt32(),
                            D = o.readUTFString(),
                            k = D.split("\n");
                        for (e = 0; e &lt; v; e++) {
                            if (h = this._mainTexture, l = this._path + k[2 * e], D = k[2 * e + 1], null == this._mainTexture &amp;&amp; (h = this._textureDic[l]), !h) return this.event(n.Event.ERROR, this), void(this.isParseFail = !0);
                            u = o.getFloat32(), c = o.getFloat32(), p = o.getFloat32(), _ = o.getFloat32(), g = o.getFloat32(), d = isNaN(g) ? 0 : g, g = o.getFloat32(), f = isNaN(g) ? 0 : g, g = o.getFloat32(), y = isNaN(g) ? p : g, g = o.getFloat32(), m = isNaN(g) ? _ : g, this.subTextureDic[D] = n.Texture.create(h, u, c, p, _, -d, -f, y, m)
                        }
                        this._mainTexture = h;
                        var I, w, L, B, E, Y = o.getUint16();
                        for (e = 0; e &lt; Y; e++)(I = []).push(o.getUint16()), I.push(o.getUint16()), I.push(o.getUint16()), I.push(o.getUint16()), this.aniSectionDic[e] = I;
                        var K, X = o.getInt16(),
                            W = {};
                        for (e = 0; e &lt; X; e++) w = new M, 0 == e ? K = w : w.root = K, w.d = t ? -1 : 1, B = o.readUTFString(), E = o.readUTFString(), w.length = o.getFloat32(), 1 == o.getByte() &amp;&amp; (w.inheritRotation = !1), 1 == o.getByte() &amp;&amp; (w.inheritScale = !1), w.name = B, E &amp;&amp; ((L = W[E]) ? L.addChild(w) : this.mRootBone = w), W[B] = w, this.mBoneArr.push(w);
                        this.tMatrixDataLen = o.getUint16();
                        var z, G, q = o.getUint16(),
                            H = Math.floor(q / this.tMatrixDataLen),
                            j = this.srcBoneMatrixArr;
                        for (e = 0; e &lt; H; e++)(z = new x).scX = o.getFloat32(), z.skX = o.getFloat32(), z.skY = o.getFloat32(), z.scY = o.getFloat32(), z.x = o.getFloat32(), z.y = o.getFloat32(), 8 === this.tMatrixDataLen &amp;&amp; (z.skewX = o.getFloat32(), z.skewY = o.getFloat32()), j.push(z), (w = this.mBoneArr[e]).transform = z;
                        var Q, Z, J = o.getUint16();
                        for (e = 0; e &lt; J; e++) {
                            for (G = new P, Q = o.getUint16(), i = 0; i &lt; Q; i++) G.boneNames.push(o.readUTFString()), G.boneIndexs.push(o.getInt16());
                            G.name = o.readUTFString(), G.targetBoneName = o.readUTFString(), G.targetBoneIndex = o.getInt16(), G.bendDirection = o.getFloat32(), G.mix = o.getFloat32(), G.isSpine = t, this.ikArr.push(G)
                        }
                        var $, tt, et = o.getUint16();
                        for (e = 0; e &lt; et; e++) {
                            for (Z = new V, $ = o.getUint16(), i = 0; i &lt; $; i++) Z.boneIndexs.push(o.getInt16());
                            Z.name = o.getUTFString(), Z.targetIndex = o.getInt16(), Z.rotateMix = o.getFloat32(), Z.translateMix = o.getFloat32(), Z.scaleMix = o.getFloat32(), Z.shearMix = o.getFloat32(), Z.offsetRotation = o.getFloat32(), Z.offsetX = o.getFloat32(), Z.offsetY = o.getFloat32(), Z.offsetScaleX = o.getFloat32(), Z.offsetScaleY = o.getFloat32(), Z.offsetShearY = o.getFloat32(), this.tfArr.push(Z)
                        }
                        var it, at, rt, st, nt, ht, lt, ot, ut, ct, pt = o.getUint16();
                        for (e = 0; e &lt; pt; e++) {
                            for ((tt = new U).name = o.readUTFString(), it = o.getUint16(), i = 0; i &lt; it; i++) tt.bones.push(o.getInt16());
                            tt.target = o.readUTFString(), tt.positionMode = o.readUTFString(), tt.spacingMode = o.readUTFString(), tt.rotateMode = o.readUTFString(), tt.offsetRotation = o.getFloat32(), tt.position = o.getFloat32(), tt.spacing = o.getFloat32(), tt.rotateMix = o.getFloat32(), tt.translateMix = o.getFloat32(), this.pathArr.push(tt)
                        }
                        var _t, dt = o.getInt16();
                        for (e = 0; e &lt; dt; e++) {
                            var ft = o.getUint8(),
                                yt = {};
                            this.deformAniArr.push(yt);
                            for (var mt = 0; mt &lt; ft; mt++)
                                for ((lt = new S).skinName = o.getUTFString(), yt[lt.skinName] = lt, at = o.getInt16(), i = 0; i &lt; at; i++)
                                    for (ot = new b, lt.deformSlotDataList.push(ot), rt = o.getInt16(), a = 0; a &lt; rt; a++)
                                        for (ut = new T, ot.deformSlotDisplayList.push(ut), ut.slotIndex = o.getInt16(), ut.attachment = o.getUTFString(), st = o.getInt16(), r = 0; r &lt; st; r++)
                                            for (1 == o.getByte() ? ut.tweenKeyList.push(!0) : ut.tweenKeyList.push(!1), nt = o.getFloat32(), ut.timeList.push(nt), ct = [], ut.vectices.push(ct), ht = o.getInt16(), s = 0; s &lt; ht; s++) ct.push(o.getFloat32())
                        }
                        var gt, vt, xt, Mt, Dt = o.getInt16();
                        for (e = 0; e &lt; Dt; e++) {
                            for (gt = o.getInt16(), _t = [], i = 0; i &lt; gt; i++) {
                                for ((vt = new C).time = o.getFloat32(), xt = o.getInt16(), a = 0; a &lt; xt; a++) vt.drawOrder.push(o.getInt16());
                                _t.push(vt)
                            }
                            this.drawOrderAniArr.push(_t)
                        }
                        var kt, It, At = o.getInt16();
                        for (e = 0; e &lt; At; e++) {
                            for (kt = o.getInt16(), Mt = [], i = 0; i &lt; kt; i++)(It = new F).name = o.getUTFString(), this._isParseAudio &amp;&amp; (It.audioValue = o.getUTFString()), It.intValue = o.getInt32(), It.floatValue = o.getFloat32(), It.stringValue = o.getUTFString(), It.time = o.getFloat32(), Mt.push(It);
                            this.eventAniArr.push(Mt)
                        }
                        var St = o.getInt16();
                        if (St &gt; 0)
                            for (this.attachmentNames = [], e = 0; e &lt; St; e++) this.attachmentNames.push(o.getUTFString());
                        var bt, Tt, Ct = o.getInt16();
                        for (e = 0; e &lt; Ct; e++)(bt = new A).name = o.readUTFString(), bt.parent = o.readUTFString(), bt.attachmentName = o.readUTFString(), bt.srcDisplayIndex = bt.displayIndex = o.getInt16(), bt.templet = this, this.boneSlotDic[bt.name] = bt, null == (Tt = this.bindBoneBoneSlotDic[bt.parent]) &amp;&amp; (this.bindBoneBoneSlotDic[bt.parent] = Tt = []), Tt.push(bt), this.boneSlotArray.push(bt);
                        var Ft, wt, Pt, Lt, Ut, Bt, Et, Rt, Nt, Ot, Vt = o.readUTFString().split("\n"),
                            Yt = 0,
                            Kt = o.getUint8();
                        for (e = 0; e &lt; Kt; e++) {
                            for ((Ft = new R).name = Vt[Yt++], Lt = o.getUint8(), i = 0; i &lt; Lt; i++) {
                                for ((wt = new O).name = Vt[Yt++], bt = this.boneSlotDic[wt.name], Ut = o.getUint8(), a = 0; a &lt; Ut; a++) {
                                    if (Pt = new N, this.skinSlotDisplayDataArr.push(Pt), Pt.name = Vt[Yt++], Pt.attachmentName = Vt[Yt++], Pt.transform = new x, Pt.transform.scX = o.getFloat32(), Pt.transform.skX = o.getFloat32(), Pt.transform.skY = o.getFloat32(), Pt.transform.scY = o.getFloat32(), Pt.transform.x = o.getFloat32(), Pt.transform.y = o.getFloat32(), wt.displayArr.push(Pt), Pt.width = o.getFloat32(), Pt.height = o.getFloat32(), Pt.type = o.getUint8(), Pt.verLen = o.getUint16(), (X = o.getUint16()) &gt; 0)
                                        for (Pt.bones = [], r = 0; r &lt; X; r++) {
                                            var Xt = o.getUint16();
                                            Pt.bones.push(Xt)
                                        }
                                    if ((Bt = o.getUint16()) &gt; 0)
                                        for (Pt.uvs = [], r = 0; r &lt; Bt; r++) Pt.uvs.push(o.getFloat32());
                                    if ((Et = o.getUint16()) &gt; 0)
                                        for (Pt.weights = [], r = 0; r &lt; Et; r++) Pt.weights.push(o.getFloat32());
                                    if ((Rt = o.getUint16()) &gt; 0)
                                        for (Pt.triangles = [], r = 0; r &lt; Rt; r++) Pt.triangles.push(o.getUint16());
                                    if ((Nt = o.getUint16()) &gt; 0)
                                        for (Pt.vertices = [], r = 0; r &lt; Nt; r++) Pt.vertices.push(o.getFloat32());
                                    if ((Ot = o.getUint16()) &gt; 0)
                                        for (Pt.lengths = [], r = 0; r &lt; Ot; r++) Pt.lengths.push(o.getFloat32())
                                }
                                Ft.slotArr.push(wt)
                            }
                            this.skinDic[Ft.name] = Ft, this.skinDataArray.push(Ft)
                        }
                        1 == o.getUint8() ? (this.yReverseMatrix = new n.Matrix(1, 0, 0, -1, 0, 0), K &amp;&amp; K.setTempMatrix(this.yReverseMatrix)) : K &amp;&amp; K.setTempMatrix(new n.Matrix), this.showSkinByIndex(this.boneSlotDic, 0), this.isParserComplete = !0, this.event(n.Event.COMPLETE, this)
                    }
                }, {
                    key: "getTexture",
                    value: function(t) {
                        var e = this.subTextureDic[t];
                        return e || (e = this.subTextureDic[t.substr(0, t.length - 1)]), null == e ? this._mainTexture : e
                    }
                }, {
                    key: "showSkinByIndex",
                    value: function(t, e) {
                        var i, a, r, s, n = !(arguments.length &gt; 2 &amp;&amp; void 0 !== arguments[2]) || arguments[2];
                        if (e &lt; 0 &amp;&amp; e &gt;= this.skinDataArray.length) return !1;
                        var h = this.skinDataArray[e];
                        if (h) {
                            for (i = 0, a = h.slotArr.length; i &lt; a; i++)(s = h.slotArr[i]) &amp;&amp; (r = t[s.name]) &amp;&amp; (r.showSlotData(s, n), n &amp;&amp; "undefined" != r.attachmentName &amp;&amp; "null" != r.attachmentName ? r.showDisplayByName(r.attachmentName) : r.showDisplayByIndex(r.displayIndex));
                            return !0
                        }
                        return !1
                    }
                }, {
                    key: "getSkinIndexByName",
                    value: function(t) {
                        for (var e = 0, i = this.skinDataArray.length; e &lt; i; e++)
                            if (this.skinDataArray[e].name == t) return e;
                        return -1
                    }
                }, {
                    key: "getGrahicsDataWithCache",
                    value: function(t, e) {
                        return this._graphicsCache[t] &amp;&amp; this._graphicsCache[t][e] ? this._graphicsCache[t][e] : null
                    }
                }, {
                    key: "_setCreateURL",
                    value: function(t) {
                        this._skBufferUrl = this._relativeUrl = t, e(r(a.prototype), "_setCreateURL", this).call(this, t)
                    }
                }, {
                    key: "setGrahicsDataWithCache",
                    value: function(t, e, i) {
                        this._graphicsCache[t][e] = i
                    }
                }, {
                    key: "deleteAniData",
                    value: function(t) {
                        if (this._anis[t]) {
                            var e = this._anis[t];
                            e.bone3DMap = null, e.nodes = null
                        }
                    }
                }, {
                    key: "destroy",
                    value: function() {
                        var t;
                        for (t in this._isDestroyed = !0, this.subTextureDic) t &amp;&amp; this.subTextureDic[t].destroy();
                        for (t in this._textureDic) t &amp;&amp; this._textureDic[t].destroy();
                        for (var i = 0, s = this.skinSlotDisplayDataArr.length; i &lt; s; i++) this.skinSlotDisplayDataArr[i].destory();
                        this.skinSlotDisplayDataArr.length = 0, this._relativeUrl &amp;&amp; delete a.TEMPLET_DICTIONARY[this._relativeUrl], e(r(a.prototype), "destroy", this).call(this), n.ILaya.loader.clearRes(this._skBufferUrl)
                    }
                }, {
                    key: "getAniNameByIndex",
                    value: function(t) {
                        var e = this.getAnimation(t);
                        return e ? e.name : null
                    }
                }, {
                    key: "rate",
                    get: function() {
                        return this._rate
                    },
                    set: function(t) {
                        this._rate = t
                    }
                }]), a
            }(g);
        Y.LAYA_ANIMATION_160_VISION = "LAYAANIMATION:1.6.0", Y.LAYA_ANIMATION_VISION = "LAYAANIMATION:1.7.0", o.Templet = Y;
        var K = function(t) {
            function o() {
                var t, e = arguments.length &gt; 0 &amp;&amp; void 0 !== arguments[0] ? arguments[0] : null;
                return l(this, o), (t = i(this, r(o).call(this)))._start = 0, t._Pos = 0, t._ended = !0, t._loadedImage = {}, t._endFrame = -1, t.interval = 30, t._ids = {}, t._idOfSprite = [], t._reset(), t._playing = !1, t._parentMovieClip = e, e ? (t._isRoot = !1, t._movieClipList = e._movieClipList, t._movieClipList.push(a(t))) : (t._movieClipList = [a(t)], t._isRoot = !0, t._setBitUp(n.Const.DISPLAY)), t
            }
            return s(o, t), h(o, [{
                key: "destroy",
                value: function() {
                    var t = !(arguments.length &gt; 0 &amp;&amp; void 0 !== arguments[0]) || arguments[0];
                    this._clear(), e(r(o.prototype), "destroy", this).call(this, t)
                }
            }, {
                key: "_setDisplay",
                value: function(t) {
                    e(r(o.prototype), "_setDisplay", this).call(this, t), this._isRoot &amp;&amp; this._onDisplay(t)
                }
            }, {
                key: "_onDisplay",
                value: function(t) {
                    t ? this.timer.loop(this.interval, this, this.updates, null, !0) : this.timer.clear(this, this.updates)
                }
            }, {
                key: "updates",
                value: function() {
                    var t, e;
                    if (!this._parentMovieClip)
                        for (e = this._movieClipList.length, t = 0; t &lt; e; t++) this._movieClipList[t] &amp;&amp; this._movieClipList[t]._update()
                }
            }, {
                key: "addLabel",
                value: function(t, e) {
                    this._labels || (this._labels = {}), this._labels[e] = t
                }
            }, {
                key: "removeLabel",
                value: function(t) {
                    if (t) {
                        if (!this._labels)
                            for (var e in this._labels)
                                if (this._labels[e] === t) {
                                    delete this._labels[e];
                                    break
                                }
                    } else this._labels = null
                }
            }, {
                key: "_update",
                value: function() {
                    if (this._data &amp;&amp; this._playing) {
                        if (this._playIndex++, this._playIndex &gt;= this._count) {
                            if (!this.loop) return this._playIndex--, void this.stop();
                            this._playIndex = 0
                        }
                        if (this._parseFrame(this._playIndex), this._labels &amp;&amp; this._labels[this._playIndex] &amp;&amp; this.event(n.Event.LABEL, this._labels[this._playIndex]), -1 != this._endFrame &amp;&amp; this._endFrame == this._playIndex) {
                            if (this._endFrame = -1, null != this._completeHandler) {
                                var t = this._completeHandler;
                                this._completeHandler = null, t.run()
                            }
                            this.stop()
                        }
                    }
                }
            }, {
                key: "stop",
                value: function() {
                    this._playing = !1
                }
            }, {
                key: "gotoAndStop",
                value: function(t) {
                    this.index = t, this.stop()
                }
            }, {
                key: "_clear",
                value: function() {
                    if (this.stop(), this._idOfSprite.length = 0, !this._parentMovieClip) {
                        var t, e;
                        for (this.timer.clear(this, this.updates), e = this._movieClipList.length, t = 0; t &lt; e; t++) this._movieClipList[t] != this &amp;&amp; this._movieClipList[t]._clear();
                        this._movieClipList.length = 0
                    }
                    var i;
                    for (i in this._atlasPath &amp;&amp; n.ILaya.Loader.clearRes(this._atlasPath), this._loadedImage) this._loadedImage[i] &amp;&amp; (n.ILaya.Loader.clearRes(i), this._loadedImage[i] = !1);
                    this.removeChildren(), this.graphics = null, this._parentMovieClip = null
                }
            }, {
                key: "play",
                value: function() {
                    var t = arguments.length &gt; 0 &amp;&amp; void 0 !== arguments[0] ? arguments[0] : 0,
                        e = !(arguments.length &gt; 1 &amp;&amp; void 0 !== arguments[1]) || arguments[1];
                    this.loop = e, this._playing = !0, this._data &amp;&amp; this._displayFrame(t)
                }
            }, {
                key: "_displayFrame",
                value: function() {
                    var t = arguments.length &gt; 0 &amp;&amp; void 0 !== arguments[0] ? arguments[0] : -1; - 1 != t &amp;&amp; (this._curIndex &gt; t &amp;&amp; this._reset(), this._parseFrame(t))
                }
            }, {
                key: "_reset",
                value: function() {
                    var t = !(arguments.length &gt; 0 &amp;&amp; void 0 !== arguments[0]) || arguments[0];
                    t &amp;&amp; 1 != this._curIndex &amp;&amp; this.removeChildren(), this._preIndex = this._curIndex = -1, this._Pos = this._start
                }
            }, {
                key: "_parseFrame",
                value: function(t) {
                    var e, i, a, r, s, h, l = !1,
                        u = this._idOfSprite,
                        c = this._data;
                    for (this._ended &amp;&amp; this._reset(), c.pos = this._Pos, this._ended = !1, this._playIndex = t, this._curIndex &gt; t &amp;&amp; t &lt; this._preIndex &amp;&amp; (this._reset(!0), c.pos = this._Pos); this._curIndex &lt;= t &amp;&amp; !this._ended;) switch (c.getUint16()) {
                        case 12:
                            if (a = c.getUint16(), r = this._ids[c.getUint16()], this._Pos = c.pos, c.pos = r, 0 == (s = c.getUint8())) {
                                var p = c.getUint16();
                                if (!(i = u[a])) {
                                    i = u[a] = new n.Sprite;
                                    var _ = new n.Sprite;
                                    _.loadImage(this.basePath + p + ".png"), this._loadedImage[this.basePath + p + ".png"] = !0, i.addChild(_), _.size(c.getFloat32(), c.getFloat32());
                                    var d = c._getMatrix();
                                    _.transform = d
                                }
                                i.alpha = 1
                            } else 1 == s &amp;&amp; ((e = u[a]) || (u[a] = e = new o(this), e.interval = this.interval, e._ids = this._ids, e.basePath = this.basePath, e._setData(c, r), e._initState(), e.play(0)), e.alpha = 1);
                            c.pos = this._Pos;
                            break;
                        case 3:
                            var f = u[c.getUint16()];
                            f &amp;&amp; (this.addChild(f), f.zOrder = c.getUint16(), l = !0);
                            break;
                        case 4:
                            (f = u[c.getUint16()]) &amp;&amp; f.removeSelf();
                            break;
                        case 5:
                            u[c.getUint16()][o._ValueList[c.getUint16()]] = c.getFloat32();
                            break;
                        case 6:
                            u[c.getUint16()].visible = c.getUint8() &gt; 0;
                            break;
                        case 7:
                            var y = (i = u[c.getUint16()]).transform || n.Matrix.create();
                            y.setTo(c.getFloat32(), c.getFloat32(), c.getFloat32(), c.getFloat32(), c.getFloat32(), c.getFloat32()), i.transform = y;
                            break;
                        case 8:
                            u[c.getUint16()].setPos(c.getFloat32(), c.getFloat32());
                            break;
                        case 9:
                            u[c.getUint16()].setSize(c.getFloat32(), c.getFloat32());
                            break;
                        case 10:
                            u[c.getUint16()].alpha = c.getFloat32();
                            break;
                        case 11:
                            u[c.getUint16()].setScale(c.getFloat32(), c.getFloat32());
                            break;
                        case 98:
                            h = c.getString(), this.event(h), "stop" == h &amp;&amp; this.stop();
                            break;
                        case 99:
                            this._curIndex = c.getUint16(), l &amp;&amp; this.updateZOrder();
                            break;
                        case 100:
                            this._count = this._curIndex + 1, this._ended = !0, this._playing &amp;&amp; (this.event(n.Event.FRAME), this.event(n.Event.END), this.event(n.Event.COMPLETE)), this._reset(!1)
                    }
                    this._playing &amp;&amp; !this._ended &amp;&amp; this.event(n.Event.FRAME), this._Pos = c.pos
                }
            }, {
                key: "_setData",
                value: function(t, e) {
                    this._data = t, this._start = e + 3
                }
            }, {
                key: "load",
                value: function(t) {
                    var e, i = arguments.length &gt; 1 &amp;&amp; void 0 !== arguments[1] &amp;&amp; arguments[1],
                        a = arguments.length &gt; 2 &amp;&amp; void 0 !== arguments[2] ? arguments[2] : null;
                    this._url = t, i &amp;&amp; (this._atlasPath = a || t.split(".swf")[0] + ".json"), this.stop(), this._clear(), this._movieClipList = [this], e = [{
                        url: t,
                        type: n.ILaya.Loader.BUFFER
                    }], this._atlasPath &amp;&amp; e.push({
                        url: this._atlasPath,
                        type: n.ILaya.Loader.ATLAS
                    }), n.ILaya.loader.load(e, n.Handler.create(this, this._onLoaded))
                }
            }, {
                key: "_onLoaded",
                value: function() {
                    var t;
                    (t = n.ILaya.Loader.getRes(this._url)) ? !this._atlasPath || n.ILaya.Loader.getAtlas(this._atlasPath) ? (this.basePath = this._atlasPath ? n.ILaya.Loader.getAtlas(this._atlasPath).dir : this._url.split(".swf")[0] + "/image/", this._initData(t)) : this.event(n.Event.ERROR, "Atlas not find"): this.event(n.Event.ERROR, "file not find")
                }
            }, {
                key: "_initState",
                value: function() {
                    this._reset(), this._ended = !1;
                    var t = this._playing;
                    for (this._playing = !1, this._curIndex = 0; !this._ended;) this._parseFrame(++this._curIndex);
                    this._playing = t
                }
            }, {
                key: "_initData",
                value: function(t) {
                    this._data = new n.Byte(t);
                    var e, i = this._data.getUint16();
                    for (e = 0; e &lt; i; e++) this._ids[this._data.getInt16()] = this._data.getInt32();
                    this.interval = 1e3 / this._data.getUint16(), this._setData(this._data, this._ids[32767]), this._initState(), this.play(0), this.event(n.Event.LOADED), this._parentMovieClip || this.timer.loop(this.interval, this, this.updates, null, !0)
                }
            }, {
                key: "playTo",
                value: function(t, e) {
                    var i = arguments.length &gt; 2 &amp;&amp; void 0 !== arguments[2] ? arguments[2] : null;
                    this._completeHandler = i, this._endFrame = e, this.play(t, !1)
                }
            }, {
                key: "index",
                get: function() {
                    return this._playIndex
                },
                set: function(t) {
                    this._playIndex = t, this._data &amp;&amp; this._displayFrame(this._playIndex), this._labels &amp;&amp; this._labels[t] &amp;&amp; this.event(n.Event.LABEL, this._labels[t])
                }
            }, {
                key: "count",
                get: function() {
                    return this._count
                }
            }, {
                key: "playing",
                get: function() {
                    return this._playing
                }
            }, {
                key: "url",
                set: function(t) {
                    this.load(t)
                }
            }]), o
        }(n.Sprite);
        K._ValueList = ["x", "y", "width", "height", "scaleX", "scaleY", "rotation", "alpha"], t.AnimationContent = u, t.AnimationNodeContent = c, t.AnimationParser01 = _, t.AnimationParser02 = d, t.AnimationPlayer = y, t.AnimationState = f, t.AnimationTemplet = g, t.BezierLerp = m, t.Bone = M, t.BoneSlot = A, t.DeformAniData = S, t.DeformSlotData = b, t.DeformSlotDisplayData = T, t.DrawOrderData = C, t.EventData = F, t.GraphicsAni = v, t.IAniLib = o, t.IkConstraint = w, t.IkConstraintData = P, t.KeyFramesContent = p, t.MeshData = k, t.MovieClip = K, t.PathConstraint = L, t.PathConstraintData = U, t.Skeleton = E, t.SkinData = R, t.SkinMeshForGraphic = I, t.SkinSlotDisplayData = N, t.SlotData = O, t.Templet = Y, t.TfConstraint = B, t.TfConstraintData = V, t.Transform = x, t.UVTools = D
    }(window.Laya = window.Laya || {}, Laya)
}();</pre></body></html>