题目链接:https://match.yuanrenxue.cn/match/16

翻页看看⬇️

image

 点击Initiator看到是webpack⬇️

image

 点window.request对应的js进入断点⬇️

image

 在console执行下代码,发现m是btoa(p_s)得到的⬇️

image

断点btoa跟进去看看,通过传入的p_s时间戳长度进行循环,往c里面push,最后拼接一起得到m⬇️

image

 直接将这个webpack.js扣出来,运行补补window和document,调用window.btoa执行时间戳(不嫌麻烦可以一点点跟着代码执行轨迹还原出代码)

js代码如下,太长分为两截:

var window = {};
var document = {};
(()=>{
    var e = {

        98: (e,t,n)=>{
            var r, i, o;
            i = [n(755)],
            void 0 === (o = "function" == typeof (r = function(e) {
                function t(e) {
                    return a.raw ? e : encodeURIComponent(e)
                }
                function n(e) {
                    return a.raw ? e : decodeURIComponent(e)
                }
                function r(e) {
                    return t(a.json ? JSON.stringify(e) : String(e))
                }
                function i(t, n) {
                    var r = a.raw ? t : function(e) {
                        0 === e.indexOf('"') && (e = e.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, "\\"));
                        try {
                            return e = decodeURIComponent(e.replace(o, " ")),
                            a.json ? JSON.parse(e) : e
                        } catch (e) {}
                    }(t);
                    return e.isFunction(n) ? n(r) : r
                }
                var o = /\+/g
                  , a = e.cookie = function(o, s, l) {
                    if (void 0 !== s && !e.isFunction(s)) {
                        if ("number" == typeof (l = e.extend({}, a.defaults, l)).expires) {
                            var u = l.expires
                              , c = l.expires = new Date;
                            c.setTime(+c + 864e5 * u)
                        }
                        return document.cookie = [t(o), "=", r(s), l.expires ? "; expires=" + l.expires.toUTCString() : "", l.path ? "; path=" + l.path : "", l.domain ? "; domain=" + l.domain : "", l.secure ? "; secure" : ""].join("")
                    }
                    for (var f = o ? void 0 : {}, d = document.cookie ? document.cookie.split("; ") : [], p = 0, h = d.length; h > p; p++) {
                        var m = d[p].split("=")
                          , g = n(m.shift())
                          , v = m.join("=");
                        if (o && o === g) {
                            f = i(v, s);
                            break
                        }
                        o || void 0 === (v = i(v)) || (f[g] = v)
                    }
                    return f
                }
                ;
                a.defaults = {},
                e.removeCookie = function(t, n) {
                    return void 0 !== e.cookie(t) && (e.cookie(t, "", e.extend({}, n, {
                        expires: -1
                    })),
                    !e.cookie(t))
                }
            }
            ) ? r.apply(t, i) : r) || (e.exports = o)
        }
        ,
        129: ()=>{}
        ,
        46: function(e, t) {
            var n, r, i;
            r = "undefined" != typeof window ? window : this,
            i = function(r, i) {
                var o = []
                  , a = o.slice
                  , s = o.concat
                  , l = o.push
                  , u = o.indexOf
                  , c = {}
                  , f = c.toString
                  , d = c.hasOwnProperty
                  , p = {}
                  , h = r.document
                  , m = "2.1.4"
                  , g = function(e, t) {
                    return new g.fn.init(e,t)
                }
                  , v = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g
                  , y = /^-ms-/
                  , b = /-([\da-z])/gi
                  , x = function(e, t) {
                    return t.toUpperCase()
                };
                function w(e) {
                    var t = "length"in e && e.length
                      , n = g.type(e);
                    return "function" !== n && !g.isWindow(e) && (!(1 !== e.nodeType || !t) || "array" === n || 0 === t || "number" == typeof t && t > 0 && t - 1 in e)
                }
                g.fn = g.prototype = {
                    jquery: m,
                    constructor: g,
                    selector: "",
                    length: 0,
                    toArray: function() {
                        return a.call(this)
                    },
                    get: function(e) {
                        return null != e ? 0 > e ? this[e + this.length] : this[e] : a.call(this)
                    },
                    pushStack: function(e) {
                        var t = g.merge(this.constructor(), e);
                        return t.prevObject = this,
                        t.context = this.context,
                        t
                    },
                    each: function(e, t) {
                        return g.each(this, e, t)
                    },
                    map: function(e) {
                        return this.pushStack(g.map(this, (function(t, n) {
                            return e.call(t, n, t)
                        }
                        )))
                    },
                    slice: function() {
                        return this.pushStack(a.apply(this, arguments))
                    },
                    first: function() {
                        return this.eq(0)
                    },
                    last: function() {
                        return this.eq(-1)
                    },
                    eq: function(e) {
                        var t = this.length
                          , n = +e + (0 > e ? t : 0);
                        return this.pushStack(n >= 0 && t > n ? [this[n]] : [])
                    },
                    end: function() {
                        return this.prevObject || this.constructor(null)
                    },
                    push: l,
                    sort: o.sort,
                    splice: o.splice
                },
                g.extend = g.fn.extend = function() {
                    var e, t, n, r, i, o, a = arguments[0] || {}, s = 1, l = arguments.length, u = !1;
                    for ("boolean" == typeof a && (u = a,
                    a = arguments[s] || {},
                    s++),
                    "object" == typeof a || g.isFunction(a) || (a = {}),
                    s === l && (a = this,
                    s--); l > s; s++)
                        if (null != (e = arguments[s]))
                            for (t in e)
                                n = a[t],
                                a !== (r = e[t]) && (u && r && (g.isPlainObject(r) || (i = g.isArray(r))) ? (i ? (i = !1,
                                o = n && g.isArray(n) ? n : []) : o = n && g.isPlainObject(n) ? n : {},
                                a[t] = g.extend(u, o, r)) : void 0 !== r && (a[t] = r));
                    return a
                }
                ,
                g.extend({
                    expando: "jQuery" + (m + Math.random()).replace(/\D/g, ""),
                    isReady: !0,
                    error: function(e) {
                        throw new Error(e)
                    },
                    noop: function() {},
                    isFunction: function(e) {
                        return "function" === g.type(e)
                    },
                    isArray: Array.isArray,
                    isWindow: function(e) {
                        return null != e && e === e.window
                    },
                    isNumeric: function(e) {
                        return !g.isArray(e) && e - parseFloat(e) + 1 >= 0
                    },
                    isPlainObject: function(e) {
                        return !("object" !== g.type(e) || e.nodeType || g.isWindow(e) || e.constructor && !d.call(e.constructor.prototype, "isPrototypeOf"))
                    },
                    isEmptyObject: function(e) {
                        var t;
                        for (t in e)
                            return !1;
                        return !0
                    },
                    type: function(e) {
                        return null == e ? e + "" : "object" == typeof e || "function" == typeof e ? c[f.call(e)] || "object" : typeof e
                    },
                    globalEval: function(e) {
                        var t, n = eval;
                        (e = g.trim(e)) && (1 === e.indexOf("use strict") ? ((t = h.createElement("script")).text = e,
                        h.head.appendChild(t).parentNode.removeChild(t)) : n(e))
                    },
                    camelCase: function(e) {
                        return e.replace(y, "ms-").replace(b, x)
                    },
                    nodeName: function(e, t) {
                        return e.nodeName && e.nodeName.toLowerCase() === t.toLowerCase()
                    },
                    each: function(e, t, n) {
                        var r = 0
                          , i = e.length
                          , o = w(e);
                        if (n) {
                            if (o)
                                for (; i > r && !1 !== t.apply(e[r], n); r++)
                                    ;
                            else
                                for (r in e)
                                    if (!1 === t.apply(e[r], n))
                                        break
                        } else if (o)
                            for (; i > r && !1 !== t.call(e[r], r, e[r]); r++)
                                ;
                        else
                            for (r in e)
                                if (!1 === t.call(e[r], r, e[r]))
                                    break;
                        return e
                    },
                    trim: function(e) {
                        return null == e ? "" : (e + "").replace(v, "")
                    },
                    makeArray: function(e, t) {
                        var n = t || [];
                        return null != e && (w(Object(e)) ? g.merge(n, "string" == typeof e ? [e] : e) : l.call(n, e)),
                        n
                    },
                    inArray: function(e, t, n) {
                        return null == t ? -1 : u.call(t, e, n)
                    },
                    merge: function(e, t) {
                        for (var n = +t.length, r = 0, i = e.length; n > r; r++)
                            e[i++] = t[r];
                        return e.length = i,
                        e
                    },
                    grep: function(e, t, n) {
                        for (var r = [], i = 0, o = e.length, a = !n; o > i; i++)
                            !t(e[i], i) !== a && r.push(e[i]);
                        return r
                    },
                    map: function(e, t, n) {
                        var r, i = 0, o = e.length, a = [];
                        if (w(e))
                            for (; o > i; i++)
                                null != (r = t(e[i], i, n)) && a.push(r);
                        else
                            for (i in e)
                                null != (r = t(e[i], i, n)) && a.push(r);
                        return s.apply([], a)
                    },
                    guid: 1,
                    proxy: function(e, t) {
                        var n, r, i;
                        return "string" == typeof t && (n = e[t],
                        t = e,
                        e = n),
                        g.isFunction(e) ? (r = a.call(arguments, 2),
                        (i = function() {
                            return e.apply(t || this, r.concat(a.call(arguments)))
                        }
                        ).guid = e.guid = e.guid || g.guid++,
                        i) : void 0
                    },
                    now: Date.now,
                    support: p
                }),
                g.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), (function(e, t) {
                    c["[object " + t + "]"] = t.toLowerCase()
                }
                ));
                var T = function(e) {
                    var t, n, r, i, o, a, s, l, u, c, f, d, p, h, m, g, v, y, b, x = "sizzle" + 1 * new Date, w = e.document, T = 0, k = 0, C = ae(), E = ae(), S = ae(), A = function(e, t) {
                        return e === t && (f = !0),
                        0
                    }, D = 1 << 31, N = {}.hasOwnProperty, j = [], L = j.pop, O = j.push, q = j.push, $ = j.slice, I = function(e, t) {
                        for (var n = 0, r = e.length; r > n; n++)
                            if (e[n] === t)
                                return n;
                        return -1
                    }, M = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", P = "[\\x20\\t\\r\\n\\f]", H = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", R = H.replace("w", "w#"), F = "\\[" + P + "*(" + H + ")(?:" + P + "*([*^$|!~]?=)" + P + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + R + "))|)" + P + "*\\]", _ = ":(" + H + ")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|" + F + ")*)|.*)\\)|)", z = new RegExp(P + "+","g"), B = new RegExp("^" + P + "+|((?:^|[^\\\\])(?:\\\\.)*)" + P + "+$","g"), W = new RegExp("^" + P + "*," + P + "*"), U = new RegExp("^" + P + "*([>+~]|" + P + ")" + P + "*"), X = new RegExp("=" + P + "*([^\\]'\"]*?)" + P + "*\\]","g"), V = new RegExp(_), Q = new RegExp("^" + R + "$"), Y = {
                        ID: new RegExp("^#(" + H + ")"),
                        CLASS: new RegExp("^\\.(" + H + ")"),
                        TAG: new RegExp("^(" + H.replace("w", "w*") + ")"),
                        ATTR: new RegExp("^" + F),
                        PSEUDO: new RegExp("^" + _),
                        CHILD: new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + P + "*(even|odd|(([+-]|)(\\d*)n|)" + P + "*(?:([+-]|)" + P + "*(\\d+)|))" + P + "*\\)|)","i"),
                        bool: new RegExp("^(?:" + M + ")$","i"),
                        needsContext: new RegExp("^" + P + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + P + "*((?:-\\d)?\\d*)" + P + "*\\)|)(?=[^-]|$)","i")
                    }, G = /^(?:input|select|textarea|button)$/i, J = /^h\d$/i, K = /^[^{]+\{\s*\[native \w/, Z = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, ee = /[+~]/, te = /'|\\/g, ne = new RegExp("\\\\([\\da-f]{1,6}" + P + "?|(" + P + ")|.)","ig"), re = function(e, t, n) {
                        var r = "0x" + t - 65536;
                        return r != r || n ? t : 0 > r ? String.fromCharCode(r + 65536) : String.fromCharCode(r >> 10 | 55296, 1023 & r | 56320)
                    }, ie = function() {
                        d()
                    };
                    try {
                        q.apply(j = $.call(w.childNodes), w.childNodes),
                        j[w.childNodes.length].nodeType
                    } catch (e) {
                        q = {
                            apply: j.length ? function(e, t) {
                                O.apply(e, $.call(t))
                            }
                            : function(e, t) {
                                for (var n = e.length, r = 0; e[n++] = t[r++]; )
                                    ;
                                e.length = n - 1
                            }
                        }
                    }
                    function oe(e, t, r, i) {
                        var o, s, u, c, f, h, v, y, T, k;
                        if ((t ? t.ownerDocument || t : w) !== p && d(t),
                        r = r || [],
                        c = (t = t || p).nodeType,
                        "string" != typeof e || !e || 1 !== c && 9 !== c && 11 !== c)
                            return r;
                        if (!i && m) {
                            if (11 !== c && (o = Z.exec(e)))
                                if (u = o[1]) {
                                    if (9 === c) {
                                        if (!(s = t.getElementById(u)) || !s.parentNode)
                                            return r;
                                        if (s.id === u)
                                            return r.push(s),
                                            r
                                    } else if (t.ownerDocument && (s = t.ownerDocument.getElementById(u)) && b(t, s) && s.id === u)
                                        return r.push(s),
                                        r
                                } else {
                                    if (o[2])
                                        return q.apply(r, t.getElementsByTagName(e)),
                                        r;
                                    if ((u = o[3]) && n.getElementsByClassName)
                                        return q.apply(r, t.getElementsByClassName(u)),
                                        r
                                }
                            if (n.qsa && (!g || !g.test(e))) {
                                if (y = v = x,
                                T = t,
                                k = 1 !== c && e,
                                1 === c && "object" !== t.nodeName.toLowerCase()) {
                                    for (h = a(e),
                                    (v = t.getAttribute("id")) ? y = v.replace(te, "\\$&") : t.setAttribute("id", y),
                                    y = "[id='" + y + "'] ",
                                    f = h.length; f--; )
                                        h[f] = y + ge(h[f]);
                                    T = ee.test(e) && he(t.parentNode) || t,
                                    k = h.join(",")
                                }
                                if (k)
                                    try {
                                        return q.apply(r, T.querySelectorAll(k)),
                                        r
                                    } catch (e) {} finally {
                                        v || t.removeAttribute("id")
                                    }
                            }
                        }
                        return l(e.replace(B, "$1"), t, r, i)
                    }
                    function ae() {
                        var e = [];
                        return function t(n, i) {
                            return e.push(n + " ") > r.cacheLength && delete t[e.shift()],
                            t[n + " "] = i
                        }
                    }
                    function se(e) {
                        return e[x] = !0,
                        e
                    }
                    function le(e) {
                        var t = p.createElement("div");
                        try {
                            return !!e(t)
                        } catch (e) {
                            return !1
                        } finally {
                            t.parentNode && t.parentNode.removeChild(t),
                            t = null
                        }
                    }
                    function ue(e, t) {
                        for (var n = e.split("|"), i = e.length; i--; )
                            r.attrHandle[n[i]] = t
                    }
                    function ce(e, t) {
                        var n = t && e
                          , r = n && 1 === e.nodeType && 1 === t.nodeType && (~t.sourceIndex || D) - (~e.sourceIndex || D);
                        if (r)
                            return r;
                        if (n)
                            for (; n = n.nextSibling; )
                                if (n === t)
                                    return -1;
                        return e ? 1 : -1
                    }
                    function fe(e) {
                        return function(t) {
                            return "input" === t.nodeName.toLowerCase() && t.type === e
                        }
                    }
                    function de(e) {
                        return function(t) {
                            var n = t.nodeName.toLowerCase();
                            return ("input" === n || "button" === n) && t.type === e
                        }
                    }
                    function pe(e) {
                        return se((function(t) {
                            return t = +t,
                            se((function(n, r) {
                                for (var i, o = e([], n.length, t), a = o.length; a--; )
                                    n[i = o[a]] && (n[i] = !(r[i] = n[i]))
                            }
                            ))
                        }
                        ))
                    }
                    function he(e) {
                        return e && void 0 !== e.getElementsByTagName && e
                    }
                    for (t in n = oe.support = {},
                    o = oe.isXML = function(e) {
                        var t = e && (e.ownerDocument || e).documentElement;
                        return !!t && "HTML" !== t.nodeName
                    }
                    ,
                    d = oe.setDocument = function(e) {
                        var t, i, a = e ? e.ownerDocument || e : w;
                        return a !== p && 9 === a.nodeType && a.documentElement ? (p = a,
                        h = a.documentElement,
                        (i = a.defaultView) && i !== i.top && (i.addEventListener ? i.addEventListener("unload", ie, !1) : i.attachEvent && i.attachEvent("onunload", ie)),
                        m = !o(a),
                        n.attributes = le((function(e) {
                            return e.className = "i",
                            !e.getAttribute("className")
                        }
                        )),
                        n.getElementsByTagName = le((function(e) {
                            return e.appendChild(a.createComment("")),
                            !e.getElementsByTagName("*").length
                        }
                        )),
                        n.getElementsByClassName = K.test(a.getElementsByClassName),
                        n.getById = le((function(e) {
                            return h.appendChild(e).id = x,
                            !a.getElementsByName || !a.getElementsByName(x).length
                        }
                        )),
                        n.getById ? (r.find.ID = function(e, t) {
                            if (void 0 !== t.getElementById && m) {
                                var n = t.getElementById(e);
                                return n && n.parentNode ? [n] : []
                            }
                        }
                        ,
                        r.filter.ID = function(e) {
                            var t = e.replace(ne, re);
                            return function(e) {
                                return e.getAttribute("id") === t
                            }
                        }
                        ) : (delete r.find.ID,
                        r.filter.ID = function(e) {
                            var t = e.replace(ne, re);
                            return function(e) {
                                var n = void 0 !== e.getAttributeNode && e.getAttributeNode("id");
                                return n && n.value === t
                            }
                        }
                        ),
                        r.find.TAG = n.getElementsByTagName ? function(e, t) {
                            return void 0 !== t.getElementsByTagName ? t.getElementsByTagName(e) : n.qsa ? t.querySelectorAll(e) : void 0
                        }
                        : function(e, t) {
                            var n, r = [], i = 0, o = t.getElementsByTagName(e);
                            if ("*" === e) {
                                for (; n = o[i++]; )
                                    1 === n.nodeType && r.push(n);
                                return r
                            }
                            return o
                        }
                        ,
                        r.find.CLASS = n.getElementsByClassName && function(e, t) {
                            return m ? t.getElementsByClassName(e) : void 0
                        }
                        ,
                        v = [],
                        g = [],
                        (n.qsa = K.test(a.querySelectorAll)) && (le((function(e) {
                            h.appendChild(e).innerHTML = "<a id='" + x + "'></a><select id='" + x + "-\f]' msallowcapture=''><option selected=''></option></select>",
                            e.querySelectorAll("[msallowcapture^='']").length && g.push("[*^$]=" + P + "*(?:''|\"\")"),
                            e.querySelectorAll("[selected]").length || g.push("\\[" + P + "*(?:value|" + M + ")"),
                            e.querySelectorAll("[id~=" + x + "-]").length || g.push("~="),
                            e.querySelectorAll(":checked").length || g.push(":checked"),
                            e.querySelectorAll("a#" + x + "+*").length || g.push(".#.+[+~]")
                        }
                        )),
                        le((function(e) {
                            var t = a.createElement("input");
                            t.setAttribute("type", "hidden"),
                            e.appendChild(t).setAttribute("name", "D"),
                            e.querySelectorAll("[name=d]").length && g.push("name" + P + "*[*^$|!~]?="),
                            e.querySelectorAll(":enabled").length || g.push(":enabled", ":disabled"),
                            e.querySelectorAll("*,:x"),
                            g.push(",.*:")
                        }
                        ))),
                        (n.matchesSelector = K.test(y = h.matches || h.webkitMatchesSelector || h.mozMatchesSelector || h.oMatchesSelector || h.msMatchesSelector)) && le((function(e) {
                            n.disconnectedMatch = y.call(e, "div"),
                            y.call(e, "[s!='']:x"),
                            v.push("!=", _)
                        }
                        )),
                        g = g.length && new RegExp(g.join("|")),
                        v = v.length && new RegExp(v.join("|")),
                        t = K.test(h.compareDocumentPosition),
                        b = t || K.test(h.contains) ? function(e, t) {
                            var n = 9 === e.nodeType ? e.documentElement : e
                              , r = t && t.parentNode;
                            return e === r || !(!r || 1 !== r.nodeType || !(n.contains ? n.contains(r) : e.compareDocumentPosition && 16 & e.compareDocumentPosition(r)))
                        }
                        : function(e, t) {
                            if (t)
                                for (; t = t.parentNode; )
                                    if (t === e)
                                        return !0;
                            return !1
                        }
                        ,
                        A = t ? function(e, t) {
                            if (e === t)
                                return f = !0,
                                0;
                            var r = !e.compareDocumentPosition - !t.compareDocumentPosition;
                            return r || (1 & (r = (e.ownerDocument || e) === (t.ownerDocument || t) ? e.compareDocumentPosition(t) : 1) || !n.sortDetached && t.compareDocumentPosition(e) === r ? e === a || e.ownerDocument === w && b(w, e) ? -1 : t === a || t.ownerDocument === w && b(w, t) ? 1 : c ? I(c, e) - I(c, t) : 0 : 4 & r ? -1 : 1)
                        }
                        : function(e, t) {
                            if (e === t)
                                return f = !0,
                                0;
                            var n, r = 0, i = e.parentNode, o = t.parentNode, s = [e], l = [t];
                            if (!i || !o)
                                return e === a ? -1 : t === a ? 1 : i ? -1 : o ? 1 : c ? I(c, e) - I(c, t) : 0;
                            if (i === o)
                                return ce(e, t);
                            for (n = e; n = n.parentNode; )
                                s.unshift(n);
                            for (n = t; n = n.parentNode; )
                                l.unshift(n);
                            for (; s[r] === l[r]; )
                                r++;
                            return r ? ce(s[r], l[r]) : s[r] === w ? -1 : l[r] === w ? 1 : 0
                        }
                        ,
                        a) : p
                    }
                    ,
                    oe.matches = function(e, t) {
                        return oe(e, null, null, t)
                    }
                    ,
                    oe.matchesSelector = function(e, t) {
                        if ((e.ownerDocument || e) !== p && d(e),
                        t = t.replace(X, "='$1']"),
                        !(!n.matchesSelector || !m || v && v.test(t) || g && g.test(t)))
                            try {
                                var r = y.call(e, t);
                                if (r || n.disconnectedMatch || e.document && 11 !== e.document.nodeType)
                                    return r
                            } catch (e) {}
                        return oe(t, p, null, [e]).length > 0
                    }
                    ,
                    oe.contains = function(e, t) {
                        return (e.ownerDocument || e) !== p && d(e),
                        b(e, t)
                    }
                    ,
                    oe.attr = function(e, t) {
                        (e.ownerDocument || e) !== p && d(e);
                        var i = r.attrHandle[t.toLowerCase()]
                          , o = i && N.call(r.attrHandle, t.toLowerCase()) ? i(e, t, !m) : void 0;
                        return void 0 !== o ? o : n.attributes || !m ? e.getAttribute(t) : (o = e.getAttributeNode(t)) && o.specified ? o.value : null
                    }
                    ,
                    oe.error = function(e) {
                        throw new Error("Syntax error, unrecognized expression: " + e)
                    }
                    ,
                    oe.uniqueSort = function(e) {
                        var t, r = [], i = 0, o = 0;
                        if (f = !n.detectDuplicates,
                        c = !n.sortStable && e.slice(0),
                        e.sort(A),
                        f) {
                            for (; t = e[o++]; )
                                t === e[o] && (i = r.push(o));
                            for (; i--; )
                                e.splice(r[i], 1)
                        }
                        return c = null,
                        e
                    }
                    ,
                    i = oe.getText = function(e) {
                        var t, n = "", r = 0, o = e.nodeType;
                        if (o) {
                            if (1 === o || 9 === o || 11 === o) {
                                if ("string" == typeof e.textContent)
                                    return e.textContent;
                                for (e = e.firstChild; e; e = e.nextSibling)
                                    n += i(e)
                            } else if (3 === o || 4 === o)
                                return e.nodeValue
                        } else
                            for (; t = e[r++]; )
                                n += i(t);
                        return n
                    }
                    ,
                    (r = oe.selectors = {
                        cacheLength: 50,
                        createPseudo: se,
                        match: Y,
                        attrHandle: {},
                        find: {},
                        relative: {
                            ">": {
                                dir: "parentNode",
                                first: !0
                            },
                            " ": {
                                dir: "parentNode"
                            },
                            "+": {
                                dir: "previousSibling",
                                first: !0
                            },
                            "~": {
                                dir: "previousSibling"
                            }
                        },
                        preFilter: {
                            ATTR: function(e) {
                                return e[1] = e[1].replace(ne, re),
                                e[3] = (e[3] || e[4] || e[5] || "").replace(ne, re),
                                "~=" === e[2] && (e[3] = " " + e[3] + " "),
                                e.slice(0, 4)
                            },
                            CHILD: function(e) {
                                return e[1] = e[1].toLowerCase(),
                                "nth" === e[1].slice(0, 3) ? (e[3] || oe.error(e[0]),
                                e[4] = +(e[4] ? e[5] + (e[6] || 1) : 2 * ("even" === e[3] || "odd" === e[3])),
                                e[5] = +(e[7] + e[8] || "odd" === e[3])) : e[3] && oe.error(e[0]),
                                e
                            },
                            PSEUDO: function(e) {
                                var t, n = !e[6] && e[2];
                                return Y.CHILD.test(e[0]) ? null : (e[3] ? e[2] = e[4] || e[5] || "" : n && V.test(n) && (t = a(n, !0)) && (t = n.indexOf(")", n.length - t) - n.length) && (e[0] = e[0].slice(0, t),
                                e[2] = n.slice(0, t)),
                                e.slice(0, 3))
                            }
                        },
                        filter: {
                            TAG: function(e) {
                                var t = e.replace(ne, re).toLowerCase();
                                return "*" === e ? function() {
                                    return !0
                                }
                                : function(e) {
                                    return e.nodeName && e.nodeName.toLowerCase() === t
                                }
                            },
                            CLASS: function(e) {
                                var t = C[e + " "];
                                return t || (t = new RegExp("(^|" + P + ")" + e + "(" + P + "|$)")) && C(e, (function(e) {
                                    return t.test("string" == typeof e.className && e.className || void 0 !== e.getAttribute && e.getAttribute("class") || "")
                                }
                                ))
                            },
                            ATTR: function(e, t, n) {
                                return function(r) {
                                    var i = oe.attr(r, e);
                                    return null == i ? "!=" === t : !t || (i += "",
                                    "=" === t ? i === n : "!=" === t ? i !== n : "^=" === t ? n && 0 === i.indexOf(n) : "*=" === t ? n && i.indexOf(n) > -1 : "$=" === t ? n && i.slice(-n.length) === n : "~=" === t ? (" " + i.replace(z, " ") + " ").indexOf(n) > -1 : "|=" === t && (i === n || i.slice(0, n.length + 1) === n + "-"))
                                }
                            },
                            CHILD: function(e, t, n, r, i) {
                                var o = "nth" !== e.slice(0, 3)
                                  , a = "last" !== e.slice(-4)
                                  , s = "of-type" === t;
                                return 1 === r && 0 === i ? function(e) {
                                    return !!e.parentNode
                                }
                                : function(t, n, l) {
                                    var u, c, f, d, p, h, m = o !== a ? "nextSibling" : "previousSibling", g = t.parentNode, v = s && t.nodeName.toLowerCase(), y = !l && !s;
                                    if (g) {
                                        if (o) {
                                            for (; m; ) {
                                                for (f = t; f = f[m]; )
                                                    if (s ? f.nodeName.toLowerCase() === v : 1 === f.nodeType)
                                                        return !1;
                                                h = m = "only" === e && !h && "nextSibling"
                                            }
                                            return !0
                                        }
                                        if (h = [a ? g.firstChild : g.lastChild],
                                        a && y) {
                                            for (p = (u = (c = g[x] || (g[x] = {}))[e] || [])[0] === T && u[1],
                                            d = u[0] === T && u[2],
                                            f = p && g.childNodes[p]; f = ++p && f && f[m] || (d = p = 0) || h.pop(); )
                                                if (1 === f.nodeType && ++d && f === t) {
                                                    c[e] = [T, p, d];
                                                    break
                                                }
                                        } else if (y && (u = (t[x] || (t[x] = {}))[e]) && u[0] === T)
                                            d = u[1];
                                        else
                                            for (; (f = ++p && f && f[m] || (d = p = 0) || h.pop()) && ((s ? f.nodeName.toLowerCase() !== v : 1 !== f.nodeType) || !++d || (y && ((f[x] || (f[x] = {}))[e] = [T, d]),
                                            f !== t)); )
                                                ;
                                        return (d -= i) === r || d % r == 0 && d / r >= 0
                                    }
                                }
                            },
                            PSEUDO: function(e, t) {
                                var n, i = r.pseudos[e] || r.setFilters[e.toLowerCase()] || oe.error("unsupported pseudo: " + e);
                                return i[x] ? i(t) : i.length > 1 ? (n = [e, e, "", t],
                                r.setFilters.hasOwnProperty(e.toLowerCase()) ? se((function(e, n) {
                                    for (var r, o = i(e, t), a = o.length; a--; )
                                        e[r = I(e, o[a])] = !(n[r] = o[a])
                                }
                                )) : function(e) {
                                    return i(e, 0, n)
                                }
                                ) : i
                            }
                        },
                        pseudos: {
                            not: se((function(e) {
                                var t = []
                                  , n = []
                                  , r = s(e.replace(B, "$1"));
                                return r[x] ? se((function(e, t, n, i) {
                                    for (var o, a = r(e, null, i, []), s = e.length; s--; )
                                        (o = a[s]) && (e[s] = !(t[s] = o))
                                }
                                )) : function(e, i, o) {
                                    return t[0] = e,
                                    r(t, null, o, n),
                                    t[0] = null,
                                    !n.pop()
                                }
                            }
                            )),
                            has: se((function(e) {
                                return function(t) {
                                    return oe(e, t).length > 0
                                }
                            }
                            )),
                            contains: se((function(e) {
                                return e = e.replace(ne, re),
                                function(t) {
                                    return (t.textContent || t.innerText || i(t)).indexOf(e) > -1
                                }
                            }
                            )),
                            lang: se((function(e) {
                                return Q.test(e || "") || oe.error("unsupported lang: " + e),
                                e = e.replace(ne, re).toLowerCase(),
                                function(t) {
                                    var n;
                                    do {
                                        if (n = m ? t.lang : t.getAttribute("xml:lang") || t.getAttribute("lang"))
                                            return (n = n.toLowerCase()) === e || 0 === n.indexOf(e + "-")
                                    } while ((t = t.parentNode) && 1 === t.nodeType);
                                    return !1
                                }
                            }
                            )),
                            target: function(t) {
                                var n = e.location && e.location.hash;
                                return n && n.slice(1) === t.id
                            },
                            root: function(e) {
                                return e === h
                            },
                            focus: function(e) {
                                return e === p.activeElement && (!p.hasFocus || p.hasFocus()) && !!(e.type || e.href || ~e.tabIndex)
                            },
                            enabled: function(e) {
                                return !1 === e.disabled
                            },
                            disabled: function(e) {
                                return !0 === e.disabled
                            },
                            checked: function(e) {
                                var t = e.nodeName.toLowerCase();
                                return "input" === t && !!e.checked || "option" === t && !!e.selected
                            },
                            selected: function(e) {
                                return e.parentNode && e.parentNode.selectedIndex,
                                !0 === e.selected
                            },
                            empty: function(e) {
                                for (e = e.firstChild; e; e = e.nextSibling)
                                    if (e.nodeType < 6)
                                        return !1;
                                return !0
                            },
                            parent: function(e) {
                                return !r.pseudos.empty(e)
                            },
                            header: function(e) {
                                return J.test(e.nodeName)
                            },
                            input: function(e) {
                                return G.test(e.nodeName)
                            },
                            button: function(e) {
                                var t = e.nodeName.toLowerCase();
                                return "input" === t && "button" === e.type || "button" === t
                            },
                            text: function(e) {
                                var t;
                                return "input" === e.nodeName.toLowerCase() && "text" === e.type && (null == (t = e.getAttribute("type")) || "text" === t.toLowerCase())
                            },
                            first: pe((function() {
                                return [0]
                            }
                            )),
                            last: pe((function(e, t) {
                                return [t - 1]
                            }
                            )),
                            eq: pe((function(e, t, n) {
                                return [0 > n ? n + t : n]
                            }
                            )),
                            even: pe((function(e, t) {
                                for (var n = 0; t > n; n += 2)
                                    e.push(n);
                                return e
                            }
                            )),
                            odd: pe((function(e, t) {
                                for (var n = 1; t > n; n += 2)
                                    e.push(n);
                                return e
                            }
                            )),
                            lt: pe((function(e, t, n) {
                                for (var r = 0 > n ? n + t : n; --r >= 0; )
                                    e.push(r);
                                return e
                            }
                            )),
                            gt: pe((function(e, t, n) {
                                for (var r = 0 > n ? n + t : n; ++r < t; )
                                    e.push(r);
                                return e
                            }
                            ))
                        }
                    }).pseudos.nth = r.pseudos.eq,
                    {
                        radio: !0,
                        checkbox: !0,
                        file: !0,
                        password: !0,
                        image: !0
                    })
                        r.pseudos[t] = fe(t);
                    for (t in {
                        submit: !0,
                        reset: !0
                    })
                        r.pseudos[t] = de(t);
                    function me() {}
                    function ge(e) {
                        for (var t = 0, n = e.length, r = ""; n > t; t++)
                            r += e[t].value;
                        return r
                    }
                    function ve(e, t, n) {
                        var r = t.dir
                          , i = n && "parentNode" === r
                          , o = k++;
                        return t.first ? function(t, n, o) {
                            for (; t = t[r]; )
                                if (1 === t.nodeType || i)
                                    return e(t, n, o)
                        }
                        : function(t, n, a) {
                            var s, l, u = [T, o];
                            if (a) {
                                for (; t = t[r]; )
                                    if ((1 === t.nodeType || i) && e(t, n, a))
                                        return !0
                            } else
                                for (; t = t[r]; )
                                    if (1 === t.nodeType || i) {
                                        if ((s = (l = t[x] || (t[x] = {}))[r]) && s[0] === T && s[1] === o)
                                            return u[2] = s[2];
                                        if (l[r] = u,
                                        u[2] = e(t, n, a))
                                            return !0
                                    }
                        }
                    }
                    function ye(e) {
                        return e.length > 1 ? function(t, n, r) {
                            for (var i = e.length; i--; )
                                if (!e[i](t, n, r))
                                    return !1;
                            return !0
                        }
                        : e[0]
                    }
                    function be(e, t, n, r, i) {
                        for (var o, a = [], s = 0, l = e.length, u = null != t; l > s; s++)
                            (o = e[s]) && (!n || n(o, r, i)) && (a.push(o),
                            u && t.push(s));
                        return a
                    }
                    function xe(e, t, n, r, i, o) {
                        return r && !r[x] && (r = xe(r)),
                        i && !i[x] && (i = xe(i, o)),
                        se((function(o, a, s, l) {
                            var u, c, f, d = [], p = [], h = a.length, m = o || function(e, t, n) {
                                for (var r = 0, i = t.length; i > r; r++)
                                    oe(e, t[r], n);
                                return n
                            }(t || "*", s.nodeType ? [s] : s, []), g = !e || !o && t ? m : be(m, d, e, s, l), v = n ? i || (o ? e : h || r) ? [] : a : g;
                            if (n && n(g, v, s, l),
                            r)
                                for (u = be(v, p),
                                r(u, [], s, l),
                                c = u.length; c--; )
                                    (f = u[c]) && (v[p[c]] = !(g[p[c]] = f));
                            if (o) {
                                if (i || e) {
                                    if (i) {
                                        for (u = [],
                                        c = v.length; c--; )
                                            (f = v[c]) && u.push(g[c] = f);
                                        i(null, v = [], u, l)
                                    }
                                    for (c = v.length; c--; )
                                        (f = v[c]) && (u = i ? I(o, f) : d[c]) > -1 && (o[u] = !(a[u] = f))
                                }
                            } else
                                v = be(v === a ? v.splice(h, v.length) : v),
                                i ? i(null, a, v, l) : q.apply(a, v)
                        }
                        ))
                    }
                    function we(e) {
                        for (var t, n, i, o = e.length, a = r.relative[e[0].type], s = a || r.relative[" "], l = a ? 1 : 0, c = ve((function(e) {
                            return e === t
                        }
                        ), s, !0), f = ve((function(e) {
                            return I(t, e) > -1
                        }
                        ), s, !0), d = [function(e, n, r) {
                            var i = !a && (r || n !== u) || ((t = n).nodeType ? c(e, n, r) : f(e, n, r));
                            return t = null,
                            i
                        }
                        ]; o > l; l++)
                            if (n = r.relative[e[l].type])
                                d = [ve(ye(d), n)];
                            else {
                                if ((n = r.filter[e[l].type].apply(null, e[l].matches))[x]) {
                                    for (i = ++l; o > i && !r.relative[e[i].type]; i++)
                                        ;
                                    return xe(l > 1 && ye(d), l > 1 && ge(e.slice(0, l - 1).concat({
                                        value: " " === e[l - 2].type ? "*" : ""
                                    })).replace(B, "$1"), n, i > l && we(e.slice(l, i)), o > i && we(e = e.slice(i)), o > i && ge(e))
                                }
                                d.push(n)
                            }
                        return ye(d)
                    }
                    function Te(e, t) {
                        var n = t.length > 0
                          , i = e.length > 0
                          , o = function(o, a, s, l, c) {
                            var f, d, h, m = 0, g = "0", v = o && [], y = [], b = u, x = o || i && r.find.TAG("*", c), w = T += null == b ? 1 : Math.random() || .1, k = x.length;
                            for (c && (u = a !== p && a); g !== k && null != (f = x[g]); g++) {
                                if (i && f) {
                                    for (d = 0; h = e[d++]; )
                                        if (h(f, a, s)) {
                                            l.push(f);
                                            break
                                        }
                                    c && (T = w)
                                }
                                n && ((f = !h && f) && m--,
                                o && v.push(f))
                            }
                            if (m += g,
                            n && g !== m) {
                                for (d = 0; h = t[d++]; )
                                    h(v, y, a, s);
                                if (o) {
                                    if (m > 0)
                                        for (; g--; )
                                            v[g] || y[g] || (y[g] = L.call(l));
                                    y = be(y)
                                }
                                q.apply(l, y),
                                c && !o && y.length > 0 && m + t.length > 1 && oe.uniqueSort(l)
                            }
                            return c && (T = w,
                            u = b),
                            v
                        };
                        return n ? se(o) : o
                    }
                    return me.prototype = r.filters = r.pseudos,
                    r.setFilters = new me,
                    a = oe.tokenize = function(e, t) {
                        var n, i, o, a, s, l, u, c = E[e + " "];
                        if (c)
                            return t ? 0 : c.slice(0);
                        for (s = e,
                        l = [],
                        u = r.preFilter; s; ) {
                            for (a in (!n || (i = W.exec(s))) && (i && (s = s.slice(i[0].length) || s),
                            l.push(o = [])),
                            n = !1,
                            (i = U.exec(s)) && (n = i.shift(),
                            o.push({
                                value: n,
                                type: i[0].replace(B, " ")
                            }),
                            s = s.slice(n.length)),
                            r.filter)
                                !(i = Y[a].exec(s)) || u[a] && !(i = u[a](i)) || (n = i.shift(),
                                o.push({
                                    value: n,
                                    type: a,
                                    matches: i
                                }),
                                s = s.slice(n.length));
                            if (!n)
                                break
                        }
                        return t ? s.length : s ? oe.error(e) : E(e, l).slice(0)
                    }
                    ,
                    s = oe.compile = function(e, t) {
                        var n, r = [], i = [], o = S[e + " "];
                        if (!o) {
                            for (t || (t = a(e)),
                            n = t.length; n--; )
                                (o = we(t[n]))[x] ? r.push(o) : i.push(o);
                            (o = S(e, Te(i, r))).selector = e
                        }
                        return o
                    }
                    ,
                    l = oe.select = function(e, t, i, o) {
                        var l, u, c, f, d, p = "function" == typeof e && e, h = !o && a(e = p.selector || e);
                        if (i = i || [],
                        1 === h.length) {
                            if ((u = h[0] = h[0].slice(0)).length > 2 && "ID" === (c = u[0]).type && n.getById && 9 === t.nodeType && m && r.relative[u[1].type]) {
                                if (!(t = (r.find.ID(c.matches[0].replace(ne, re), t) || [])[0]))
                                    return i;
                                p && (t = t.parentNode),
                                e = e.slice(u.shift().value.length)
                            }
                            for (l = Y.needsContext.test(e) ? 0 : u.length; l-- && (c = u[l],
                            !r.relative[f = c.type]); )
                                if ((d = r.find[f]) && (o = d(c.matches[0].replace(ne, re), ee.test(u[0].type) && he(t.parentNode) || t))) {
                                    if (u.splice(l, 1),
                                    !(e = o.length && ge(u)))
                                        return q.apply(i, o),
                                        i;
                                    break
                                }
                        }
                        return (p || s(e, h))(o, t, !m, i, ee.test(e) && he(t.parentNode) || t),
                        i
                    }
                    ,
                    n.sortStable = x.split("").sort(A).join("") === x,
                    n.detectDuplicates = !!f,
                    d(),
                    n.sortDetached = le((function(e) {
                        return 1 & e.compareDocumentPosition(p.createElement("div"))
                    }
                    )),
                    le((function(e) {
                        return e.innerHTML = "<a href='#'></a>",
                        "#" === e.firstChild.getAttribute("href")
                    }
                    )) || ue("type|href|height|width", (function(e, t, n) {
                        return n ? void 0 : e.getAttribute(t, "type" === t.toLowerCase() ? 1 : 2)
                    }
                    )),
                    n.attributes && le((function(e) {
                        return e.innerHTML = "<input/>",
                        e.firstChild.setAttribute("value", ""),
                        "" === e.firstChild.getAttribute("value")
                    }
                    )) || ue("value", (function(e, t, n) {
                        return n || "input" !== e.nodeName.toLowerCase() ? void 0 : e.defaultValue
                    }
                    )),
                    le((function(e) {
                        return null == e.getAttribute("disabled")
                    }
                    )) || ue(M, (function(e, t, n) {
                        var r;
                        return n ? void 0 : !0 === e[t] ? t.toLowerCase() : (r = e.getAttributeNode(t)) && r.specified ? r.value : null
                    }
                    )),
                    oe
                }(r);
                g.find = T,
                g.expr = T.selectors,
                g.expr[":"] = g.expr.pseudos,
                g.unique = T.uniqueSort,
                g.text = T.getText,
                g.isXMLDoc = T.isXML,
                g.contains = T.contains;
                var k = g.expr.match.needsContext
                  , C = /^<(\w+)\s*\/?>(?:<\/\1>|)$/
                  , E = /^.[^:#\[\.,]*$/;
                function S(e, t, n) {
                    if (g.isFunction(t))
                        return g.grep(e, (function(e, r) {
                            return !!t.call(e, r, e) !== n
                        }
                        ));
                    if (t.nodeType)
                        return g.grep(e, (function(e) {
                            return e === t !== n
                        }
                        ));
                    if ("string" == typeof t) {
                        if (E.test(t))
                            return g.filter(t, e, n);
                        t = g.filter(t, e)
                    }
                    return g.grep(e, (function(e) {
                        return u.call(t, e) >= 0 !== n
                    }
                    ))
                }
                g.filter = function(e, t, n) {
                    var r = t[0];
                    return n && (e = ":not(" + e + ")"),
                    1 === t.length && 1 === r.nodeType ? g.find.matchesSelector(r, e) ? [r] : [] : g.find.matches(e, g.grep(t, (function(e) {
                        return 1 === e.nodeType
                    }
                    )))
                }
                ,
                g.fn.extend({
                    find: function(e) {
                        var t, n = this.length, r = [], i = this;
                        if ("string" != typeof e)
                            return this.pushStack(g(e).filter((function() {
                                for (t = 0; n > t; t++)
                                    if (g.contains(i[t], this))
                                        return !0
                            }
                            )));
                        for (t = 0; n > t; t++)
                            g.find(e, i[t], r);
                        return (r = this.pushStack(n > 1 ? g.unique(r) : r)).selector = this.selector ? this.selector + " " + e : e,
                        r
                    },
                    filter: function(e) {
                        return this.pushStack(S(this, e || [], !1))
                    },
                    not: function(e) {
                        return this.pushStack(S(this, e || [], !0))
                    },
                    is: function(e) {
                        return !!S(this, "string" == typeof e && k.test(e) ? g(e) : e || [], !1).length
                    }
                });
                var A, D = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/;
                (g.fn.init = function(e, t) {
                    var n, r;
                    if (!e)
                        return this;
                    if ("string" == typeof e) {
                        if (!(n = "<" === e[0] && ">" === e[e.length - 1] && e.length >= 3 ? [null, e, null] : D.exec(e)) || !n[1] && t)
                            return !t || t.jquery ? (t || A).find(e) : this.constructor(t).find(e);
                        if (n[1]) {
                            if (t = t instanceof g ? t[0] : t,
                            g.merge(this, g.parseHTML(n[1], t && t.nodeType ? t.ownerDocument || t : h, !0)),
                            C.test(n[1]) && g.isPlainObject(t))
                                for (n in t)
                                    g.isFunction(this[n]) ? this[n](t[n]) : this.attr(n, t[n]);
                            return this
                        }
                        return (r = h.getElementById(n[2])) && r.parentNode && (this.length = 1,
                        this[0] = r),
                        this.context = h,
                        this.selector = e,
                        this
                    }
                    return e.nodeType ? (this.context = this[0] = e,
                    this.length = 1,
                    this) : g.isFunction(e) ? void 0 !== A.ready ? A.ready(e) : e(g) : (void 0 !== e.selector && (this.selector = e.selector,
                    this.context = e.context),
                    g.makeArray(e, this))
                }
                ).prototype = g.fn,
                A = g(h);
                var N = /^(?:parents|prev(?:Until|All))/
                  , j = {
                    children: !0,
                    contents: !0,
                    next: !0,
                    prev: !0
                };
                function L(e, t) {
                    for (; (e = e[t]) && 1 !== e.nodeType; )
                        ;
                    return e
                }
                g.extend({
                    dir: function(e, t, n) {
                        for (var r = [], i = void 0 !== n; (e = e[t]) && 9 !== e.nodeType; )
                            if (1 === e.nodeType) {
                                if (i && g(e).is(n))
                                    break;
                                r.push(e)
                            }
                        return r
                    },
                    sibling: function(e, t) {
                        for (var n = []; e; e = e.nextSibling)
                            1 === e.nodeType && e !== t && n.push(e);
                        return n
                    }
                }),
                g.fn.extend({
                    has: function(e) {
                        var t = g(e, this)
                          , n = t.length;
                        return this.filter((function() {
                            for (var e = 0; n > e; e++)
                                if (g.contains(this, t[e]))
                                    return !0
                        }
                        ))
                    },
                    closest: function(e, t) {
                        for (var n, r = 0, i = this.length, o = [], a = k.test(e) || "string" != typeof e ? g(e, t || this.context) : 0; i > r; r++)
                            for (n = this[r]; n && n !== t; n = n.parentNode)
                                if (n.nodeType < 11 && (a ? a.index(n) > -1 : 1 === n.nodeType && g.find.matchesSelector(n, e))) {
                                    o.push(n);
                                    break
                                }
                        return this.pushStack(o.length > 1 ? g.unique(o) : o)
                    },
                    index: function(e) {
                        return e ? "string" == typeof e ? u.call(g(e), this[0]) : u.call(this, e.jquery ? e[0] : e) : this[0] && this[0].parentNode ? this.first().prevAll().length : -1
                    },
                    add: function(e, t) {
                        return this.pushStack(g.unique(g.merge(this.get(), g(e, t))))
                    },
                    addBack: function(e) {
                        return this.add(null == e ? this.prevObject : this.prevObject.filter(e))
                    }
                }),
                g.each({
                    parent: function(e) {
                        var t = e.parentNode;
                        return t && 11 !== t.nodeType ? t : null
                    },
                    parents: function(e) {
                        return g.dir(e, "parentNode")
                    },
                    parentsUntil: function(e, t, n) {
                        return g.dir(e, "parentNode", n)
                    },
                    next: function(e) {
                        return L(e, "nextSibling")
                    },
                    prev: function(e) {
                        return L(e, "previousSibling")
                    },
                    nextAll: function(e) {
                        return g.dir(e, "nextSibling")
                    },
                    prevAll: function(e) {
                        return g.dir(e, "previousSibling")
                    },
                    nextUntil: function(e, t, n) {
                        return g.dir(e, "nextSibling", n)
                    },
                    prevUntil: function(e, t, n) {
                        return g.dir(e, "previousSibling", n)
                    },
                    siblings: function(e) {
                        return g.sibling((e.parentNode || {}).firstChild, e)
                    },
                    children: function(e) {
                        return g.sibling(e.firstChild)
                    },
                    contents: function(e) {
                        return e.contentDocument || g.merge([], e.childNodes)
                    }
                }, (function(e, t) {
                    g.fn[e] = function(n, r) {
                        var i = g.map(this, t, n);
                        return "Until" !== e.slice(-5) && (r = n),
                        r && "string" == typeof r && (i = g.filter(r, i)),
                        this.length > 1 && (j[e] || g.unique(i),
                        N.test(e) && i.reverse()),
                        this.pushStack(i)
                    }
                }
                ));
                var O, q = /\S+/g, $ = {};
                function I() {
                    h.removeEventListener("DOMContentLoaded", I, !1),
                    r.removeEventListener("load", I, !1),
                    g.ready()
                }
                g.Callbacks = function(e) {
                    e = "string" == typeof e ? $[e] || function(e) {
                        var t = $[e] = {};
                        return g.each(e.match(q) || [], (function(e, n) {
                            t[n] = !0
                        }
                        )),
                        t
                    }(e) : g.extend({}, e);
                    var t, n, r, i, o, a, s = [], l = !e.once && [], u = function(f) {
                        for (t = e.memory && f,
                        n = !0,
                        a = i || 0,
                        i = 0,
                        o = s.length,
                        r = !0; s && o > a; a++)
                            if (!1 === s[a].apply(f[0], f[1]) && e.stopOnFalse) {
                                t = !1;
                                break
                            }
                        r = !1,
                        s && (l ? l.length && u(l.shift()) : t ? s = [] : c.disable())
                    }, c = {
                        add: function() {
                            if (s) {
                                var n = s.length;
                                !function t(n) {
                                    g.each(n, (function(n, r) {
                                        var i = g.type(r);
                                        "function" === i ? e.unique && c.has(r) || s.push(r) : r && r.length && "string" !== i && t(r)
                                    }
                                    ))
                                }(arguments),
                                r ? o = s.length : t && (i = n,
                                u(t))
                            }
                            return this
                        },
                        remove: function() {
                            return s && g.each(arguments, (function(e, t) {
                                for (var n; (n = g.inArray(t, s, n)) > -1; )
                                    s.splice(n, 1),
                                    r && (o >= n && o--,
                                    a >= n && a--)
                            }
                            )),
                            this
                        },
                        has: function(e) {
                            return e ? g.inArray(e, s) > -1 : !(!s || !s.length)
                        },
                        empty: function() {
                            return s = [],
                            o = 0,
                            this
                        },
                        disable: function() {
                            return s = l = t = void 0,
                            this
                        },
                        disabled: function() {
                            return !s
                        },
                        lock: function() {
                            return l = void 0,
                            t || c.disable(),
                            this
                        },
                        locked: function() {
                            return !l
                        },
                        fireWith: function(e, t) {
                            return !s || n && !l || (t = [e, (t = t || []).slice ? t.slice() : t],
                            r ? l.push(t) : u(t)),
                            this
                        },
                        fire: function() {
                            return c.fireWith(this, arguments),
                            this
                        },
                        fired: function() {
                            return !!n
                        }
                    };
                    return c
                }
                ,
                g.extend({
                    Deferred: function(e) {
                        var t = [["resolve", "done", g.Callbacks("once memory"), "resolved"], ["reject", "fail", g.Callbacks("once memory"), "rejected"], ["notify", "progress", g.Callbacks("memory")]]
                          , n = "pending"
                          , r = {
                            state: function() {
                                return n
                            },
                            always: function() {
                                return i.done(arguments).fail(arguments),
                                this
                            },
                            then: function() {
                                var e = arguments;
                                return g.Deferred((function(n) {
                                    g.each(t, (function(t, o) {
                                        var a = g.isFunction(e[t]) && e[t];
                                        i[o[1]]((function() {
                                            var e = a && a.apply(this, arguments);
                                            e && g.isFunction(e.promise) ? e.promise().done(n.resolve).fail(n.reject).progress(n.notify) : n[o[0] + "With"](this === r ? n.promise() : this, a ? [e] : arguments)
                                        }
                                        ))
                                    }
                                    )),
                                    e = null
                                }
                                )).promise()
                            },
                            promise: function(e) {
                                return null != e ? g.extend(e, r) : r
                            }
                        }
                          , i = {};
                        return r.pipe = r.then,
                        g.each(t, (function(e, o) {
                            var a = o[2]
                              , s = o[3];
                            r[o[1]] = a.add,
                            s && a.add((function() {
                                n = s
                            }
                            ), t[1 ^ e][2].disable, t[2][2].lock),
                            i[o[0]] = function() {
                                return i[o[0] + "With"](this === i ? r : this, arguments),
                                this
                            }
                            ,
                            i[o[0] + "With"] = a.fireWith
                        }
                        )),
                        r.promise(i),
                        e && e.call(i, i),
                        i
                    },
                    when: function(e) {
                        var t, n, r, i = 0, o = a.call(arguments), s = o.length, l = 1 !== s || e && g.isFunction(e.promise) ? s : 0, u = 1 === l ? e : g.Deferred(), c = function(e, n, r) {
                            return function(i) {
                                n[e] = this,
                                r[e] = arguments.length > 1 ? a.call(arguments) : i,
                                r === t ? u.notifyWith(n, r) : --l || u.resolveWith(n, r)
                            }
                        };
                        if (s > 1)
                            for (t = new Array(s),
                            n = new Array(s),
                            r = new Array(s); s > i; i++)
                                o[i] && g.isFunction(o[i].promise) ? o[i].promise().done(c(i, r, o)).fail(u.reject).progress(c(i, n, t)) : --l;
                        return l || u.resolveWith(r, o),
                        u.promise()
                    }
                }),
                g.fn.ready = function(e) {
                    return g.ready.promise().done(e),
                    this
                }
                ,
                g.extend({
                    isReady: !1,
                    readyWait: 1,
                    holdReady: function(e) {
                        e ? g.readyWait++ : g.ready(!0)
                    },
                    ready: function(e) {
                        (!0 === e ? --g.readyWait : g.isReady) || (g.isReady = !0,
                        !0 !== e && --g.readyWait > 0 || (O.resolveWith(h, [g]),
                        g.fn.triggerHandler && (g(h).triggerHandler("ready"),
                        g(h).off("ready"))))
                    }
                }),
                g.ready.promise = function(e) {
                    return O || (O = g.Deferred(),
                    "complete" === h.readyState ? setTimeout(g.ready) : (h.addEventListener("DOMContentLoaded", I, !1),
                    r.addEventListener("load", I, !1))),
                    O.promise(e)
                }
                ,
                g.ready.promise();
                var M = g.access = function(e, t, n, r, i, o, a) {
                    var s = 0
                      , l = e.length
                      , u = null == n;
                    if ("object" === g.type(n))
                        for (s in i = !0,
                        n)
                            g.access(e, t, s, n[s], !0, o, a);
                    else if (void 0 !== r && (i = !0,
                    g.isFunction(r) || (a = !0),
                    u && (a ? (t.call(e, r),
                    t = null) : (u = t,
                    t = function(e, t, n) {
                        return u.call(g(e), n)
                    }
                    )),
                    t))
                        for (; l > s; s++)
                            t(e[s], n, a ? r : r.call(e[s], s, t(e[s], n)));
                    return i ? e : u ? t.call(e) : l ? t(e[0], n) : o
                }
                ;
                function P() {
                    Object.defineProperty(this.cache = {}, 0, {
                        get: function() {
                            return {}
                        }
                    }),
                    this.expando = g.expando + P.uid++
                }
                g.acceptData = function(e) {
                    return 1 === e.nodeType || 9 === e.nodeType || !+e.nodeType
                }
                ,
                P.uid = 1,
                P.accepts = g.acceptData,
                P.prototype = {
                    key: function(e) {
                        if (!P.accepts(e))
                            return 0;
                        var t = {}
                          , n = e[this.expando];
                        if (!n) {
                            n = P.uid++;
                            try {
                                t[this.expando] = {
                                    value: n
                                },
                                Object.defineProperties(e, t)
                            } catch (r) {
                                t[this.expando] = n,
                                g.extend(e, t)
                            }
                        }
                        return this.cache[n] || (this.cache[n] = {}),
                        n
                    },
                    set: function(e, t, n) {
                        var r, i = this.key(e), o = this.cache[i];
                        if ("string" == typeof t)
                            o[t] = n;
                        else if (g.isEmptyObject(o))
                            g.extend(this.cache[i], t);
                        else
                            for (r in t)
                                o[r] = t[r];
                        return o
                    },
                    get: function(e, t) {
                        var n = this.cache[this.key(e)];
                        return void 0 === t ? n : n[t]
                    },
                    access: function(e, t, n) {
                        var r;
                        return void 0 === t || t && "string" == typeof t && void 0 === n ? void 0 !== (r = this.get(e, t)) ? r : this.get(e, g.camelCase(t)) : (this.set(e, t, n),
                        void 0 !== n ? n : t)
                    },
                    remove: function(e, t) {
                        var n, r, i, o = this.key(e), a = this.cache[o];
                        if (void 0 === t)
                            this.cache[o] = {};
                        else {
                            g.isArray(t) ? r = t.concat(t.map(g.camelCase)) : (i = g.camelCase(t),
                            r = t in a ? [t, i] : (r = i)in a ? [r] : r.match(q) || []),
                            n = r.length;
                            for (; n--; )
                                delete a[r[n]]
                        }
                    },
                    hasData: function(e) {
                        return !g.isEmptyObject(this.cache[e[this.expando]] || {})
                    },
                    discard: function(e) {
                        e[this.expando] && delete this.cache[e[this.expando]]
                    }
                };
                var H = new P
                  , R = new P
                  , F = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/
                  , _ = /([A-Z])/g;
                function z(e, t, n) {
                    var r;
                    if (void 0 === n && 1 === e.nodeType)
                        if (r = "data-" + t.replace(_, "-$1").toLowerCase(),
                        "string" == typeof (n = e.getAttribute(r))) {
                            try {
                                n = "true" === n || "false" !== n && ("null" === n ? null : +n + "" === n ? +n : F.test(n) ? g.parseJSON(n) : n)
                            } catch (e) {}
                            R.set(e, t, n)
                        } else
                            n = void 0;
                    return n
                }
                g.extend({
                    hasData: function(e) {
                        return R.hasData(e) || H.hasData(e)
                    },
                    data: function(e, t, n) {
                        return R.access(e, t, n)
                    },
                    removeData: function(e, t) {
                        R.remove(e, t)
                    },
                    _data: function(e, t, n) {
                        return H.access(e, t, n)
                    },
                    _removeData: function(e, t) {
                        H.remove(e, t)
                    }
                }),
                g.fn.extend({
                    data: function(e, t) {
                        var n, r, i, o = this[0], a = o && o.attributes;
                        if (void 0 === e) {
                            if (this.length && (i = R.get(o),
                            1 === o.nodeType && !H.get(o, "hasDataAttrs"))) {
                                for (n = a.length; n--; )
                                    a[n] && 0 === (r = a[n].name).indexOf("data-") && (r = g.camelCase(r.slice(5)),
                                    z(o, r, i[r]));
                                H.set(o, "hasDataAttrs", !0)
                            }
                            return i
                        }
                        return "object" == typeof e ? this.each((function() {
                            R.set(this, e)
                        }
                        )) : M(this, (function(t) {
                            var n, r = g.camelCase(e);
                            if (o && void 0 === t) {
                                if (void 0 !== (n = R.get(o, e)))
                                    return n;
                                if (void 0 !== (n = R.get(o, r)))
                                    return n;
                                if (void 0 !== (n = z(o, r, void 0)))
                                    return n
                            } else
                                this.each((function() {
                                    var n = R.get(this, r);
                                    R.set(this, r, t),
                                    -1 !== e.indexOf("-") && void 0 !== n && R.set(this, e, t)
                                }
                                ))
                        }
                        ), null, t, arguments.length > 1, null, !0)
                    },
                    removeData: function(e) {
                        return this.each((function() {
                            R.remove(this, e)
                        }
                        ))
                    }
                }),
                g.extend({
                    queue: function(e, t, n) {
                        var r;
                        return e ? (t = (t || "fx") + "queue",
                        r = H.get(e, t),
                        n && (!r || g.isArray(n) ? r = H.access(e, t, g.makeArray(n)) : r.push(n)),
                        r || []) : void 0
                    },
                    dequeue: function(e, t) {
                        t = t || "fx";
                        var n = g.queue(e, t)
                          , r = n.length
                          , i = n.shift()
                          , o = g._queueHooks(e, t);
                        "inprogress" === i && (i = n.shift(),
                        r--),
                        i && ("fx" === t && n.unshift("inprogress"),
                        delete o.stop,
                        i.call(e, (function() {
                            g.dequeue(e, t)
                        }
                        ), o)),
                        !r && o && o.empty.fire()
                    },
                    _queueHooks: function(e, t) {
                        var n = t + "queueHooks";
                        return H.get(e, n) || H.access(e, n, {
                            empty: g.Callbacks("once memory").add((function() {
                                H.remove(e, [t + "queue", n])
                            }
                            ))
                        })
                    }
                }),
                g.fn.extend({
                    queue: function(e, t) {
                        var n = 2;
                        return "string" != typeof e && (t = e,
                        e = "fx",
                        n--),
                        arguments.length < n ? g.queue(this[0], e) : void 0 === t ? this : this.each((function() {
                            var n = g.queue(this, e, t);
                            g._queueHooks(this, e),
                            "fx" === e && "inprogress" !== n[0] && g.dequeue(this, e)
                        }
                        ))
                    },
                    dequeue: function(e) {
                        return this.each((function() {
                            g.dequeue(this, e)
                        }
                        ))
                    },
                    clearQueue: function(e) {
                        return this.queue(e || "fx", [])
                    },
                    promise: function(e, t) {
                        var n, r = 1, i = g.Deferred(), o = this, a = this.length, s = function() {
                            --r || i.resolveWith(o, [o])
                        };
                        for ("string" != typeof e && (t = e,
                        e = void 0),
                        e = e || "fx"; a--; )
                            (n = H.get(o[a], e + "queueHooks")) && n.empty && (r++,
                            n.empty.add(s));
                        return s(),
                        i.promise(t)
                    }
                });
                var B = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source
                  , W = ["Top", "Right", "Bottom", "Left"]
                  , U = function(e, t) {
                    return e = t || e,
                    "none" === g.css(e, "display") || !g.contains(e.ownerDocument, e)
                }
                  , X = /^(?:checkbox|radio)$/i;
                !function() {
                    var e = h.createDocumentFragment().appendChild(h.createElement("div"))
                      , t = h.createElement("input");
                    t.setAttribute("type", "radio"),
                    t.setAttribute("checked", "checked"),
                    t.setAttribute("name", "t"),
                    e.appendChild(t),
                    p.checkClone = e.cloneNode(!0).cloneNode(!0).lastChild.checked,
                    e.innerHTML = "<textarea>x</textarea>",
                    p.noCloneChecked = !!e.cloneNode(!0).lastChild.defaultValue
                }();
                var V = "undefined";
                p.focusinBubbles = "onfocusin"in r;
                var Q = /^key/
                  , Y = /^(?:mouse|pointer|contextmenu)|click/
                  , G = /^(?:focusinfocus|focusoutblur)$/
                  , J = /^([^.]*)(?:\.(.+)|)$/;
                function K() {
                    return !0
                }
                function Z() {
                    return !1
                }
                function ee() {
                    try {
                        return h.activeElement
                    } catch (e) {}
                }
                g.event = {
                    global: {},
                    add: function(e, t, n, r, i) {
                        var o, a, s, l, u, c, f, d, p, h, m, v = H.get(e);
                        if (v)
                            for (n.handler && (n = (o = n).handler,
                            i = o.selector),
                            n.guid || (n.guid = g.guid++),
                            (l = v.events) || (l = v.events = {}),
                            (a = v.handle) || (a = v.handle = function(t) {
                                return typeof g !== V && g.event.triggered !== t.type ? g.event.dispatch.apply(e, arguments) : void 0
                            }
                            ),
                            u = (t = (t || "").match(q) || [""]).length; u--; )
                                p = m = (s = J.exec(t[u]) || [])[1],
                                h = (s[2] || "").split(".").sort(),
                                p && (f = g.event.special[p] || {},
                                p = (i ? f.delegateType : f.bindType) || p,
                                f = g.event.special[p] || {},
                                c = g.extend({
                                    type: p,
                                    origType: m,
                                    data: r,
                                    handler: n,
                                    guid: n.guid,
                                    selector: i,
                                    needsContext: i && g.expr.match.needsContext.test(i),
                                    namespace: h.join(".")
                                }, o),
                                (d = l[p]) || ((d = l[p] = []).delegateCount = 0,
                                f.setup && !1 !== f.setup.call(e, r, h, a) || e.addEventListener && e.addEventListener(p, a, !1)),
                                f.add && (f.add.call(e, c),
                                c.handler.guid || (c.handler.guid = n.guid)),
                                i ? d.splice(d.delegateCount++, 0, c) : d.push(c),
                                g.event.global[p] = !0)
                    },
                    remove: function(e, t, n, r, i) {
                        var o, a, s, l, u, c, f, d, p, h, m, v = H.hasData(e) && H.get(e);
                        if (v && (l = v.events)) {
                            for (u = (t = (t || "").match(q) || [""]).length; u--; )
                                if (p = m = (s = J.exec(t[u]) || [])[1],
                                h = (s[2] || "").split(".").sort(),
                                p) {
                                    for (f = g.event.special[p] || {},
                                    d = l[p = (r ? f.delegateType : f.bindType) || p] || [],
                                    s = s[2] && new RegExp("(^|\\.)" + h.join("\\.(?:.*\\.|)") + "(\\.|$)"),
                                    a = o = d.length; o--; )
                                        c = d[o],
                                        !i && m !== c.origType || n && n.guid !== c.guid || s && !s.test(c.namespace) || r && r !== c.selector && ("**" !== r || !c.selector) || (d.splice(o, 1),
                                        c.selector && d.delegateCount--,
                                        f.remove && f.remove.call(e, c));
                                    a && !d.length && (f.teardown && !1 !== f.teardown.call(e, h, v.handle) || g.removeEvent(e, p, v.handle),
                                    delete l[p])
                                } else
                                    for (p in l)
                                        g.event.remove(e, p + t[u], n, r, !0);
                            g.isEmptyObject(l) && (delete v.handle,
                            H.remove(e, "events"))
                        }
                    },
                    trigger: function(e, t, n, i) {
                        var o, a, s, l, u, c, f, p = [n || h], m = d.call(e, "type") ? e.type : e, v = d.call(e, "namespace") ? e.namespace.split(".") : [];
                        if (a = s = n = n || h,
                        3 !== n.nodeType && 8 !== n.nodeType && !G.test(m + g.event.triggered) && (m.indexOf(".") >= 0 && (v = m.split("."),
                        m = v.shift(),
                        v.sort()),
                        u = m.indexOf(":") < 0 && "on" + m,
                        (e = e[g.expando] ? e : new g.Event(m,"object" == typeof e && e)).isTrigger = i ? 2 : 3,
                        e.namespace = v.join("."),
                        e.namespace_re = e.namespace ? new RegExp("(^|\\.)" + v.join("\\.(?:.*\\.|)") + "(\\.|$)") : null,
                        e.result = void 0,
                        e.target || (e.target = n),
                        t = null == t ? [e] : g.makeArray(t, [e]),
                        f = g.event.special[m] || {},
                        i || !f.trigger || !1 !== f.trigger.apply(n, t))) {
                            if (!i && !f.noBubble && !g.isWindow(n)) {
                                for (l = f.delegateType || m,
                                G.test(l + m) || (a = a.parentNode); a; a = a.parentNode)
                                    p.push(a),
                                    s = a;
                                s === (n.ownerDocument || h) && p.push(s.defaultView || s.parentWindow || r)
                            }
                            for (o = 0; (a = p[o++]) && !e.isPropagationStopped(); )
                                e.type = o > 1 ? l : f.bindType || m,
                                (c = (H.get(a, "events") || {})[e.type] && H.get(a, "handle")) && c.apply(a, t),
                                (c = u && a[u]) && c.apply && g.acceptData(a) && (e.result = c.apply(a, t),
                                !1 === e.result && e.preventDefault());
                            return e.type = m,
                            i || e.isDefaultPrevented() || f._default && !1 !== f._default.apply(p.pop(), t) || !g.acceptData(n) || u && g.isFunction(n[m]) && !g.isWindow(n) && ((s = n[u]) && (n[u] = null),
                            g.event.triggered = m,
                            n[m](),
                            g.event.triggered = void 0,
                            s && (n[u] = s)),
                            e.result
                        }
                    },
                    dispatch: function(e) {
                        e = g.event.fix(e);
                        var t, n, r, i, o, s = [], l = a.call(arguments), u = (H.get(this, "events") || {})[e.type] || [], c = g.event.special[e.type] || {};
                        if (l[0] = e,
                        e.delegateTarget = this,
                        !c.preDispatch || !1 !== c.preDispatch.call(this, e)) {
                            for (s = g.event.handlers.call(this, e, u),
                            t = 0; (i = s[t++]) && !e.isPropagationStopped(); )
                                for (e.currentTarget = i.elem,
                                n = 0; (o = i.handlers[n++]) && !e.isImmediatePropagationStopped(); )
                                    (!e.namespace_re || e.namespace_re.test(o.namespace)) && (e.handleObj = o,
                                    e.data = o.data,
                                    void 0 !== (r = ((g.event.special[o.origType] || {}).handle || o.handler).apply(i.elem, l)) && !1 === (e.result = r) && (e.preventDefault(),
                                    e.stopPropagation()));
                            return c.postDispatch && c.postDispatch.call(this, e),
                            e.result
                        }
                    },
                    handlers: function(e, t) {
                        var n, r, i, o, a = [], s = t.delegateCount, l = e.target;
                        if (s && l.nodeType && (!e.button || "click" !== e.type))
                            for (; l !== this; l = l.parentNode || this)
                                if (!0 !== l.disabled || "click" !== e.type) {
                                    for (r = [],
                                    n = 0; s > n; n++)
                                        void 0 === r[i = (o = t[n]).selector + " "] && (r[i] = o.needsContext ? g(i, this).index(l) >= 0 : g.find(i, this, null, [l]).length),
                                        r[i] && r.push(o);
                                    r.length && a.push({
                                        elem: l,
                                        handlers: r
                                    })
                                }
                        return s < t.length && a.push({
                            elem: this,
                            handlers: t.slice(s)
                        }),
                        a
                    },
                    props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
                    fixHooks: {},
                    keyHooks: {
                        props: "char charCode key keyCode".split(" "),
                        filter: function(e, t) {
                            return null == e.which && (e.which = null != t.charCode ? t.charCode : t.keyCode),
                            e
                        }
                    },
                    mouseHooks: {
                        props: "button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
                        filter: function(e, t) {
                            var n, r, i, o = t.button;
                            return null == e.pageX && null != t.clientX && (r = (n = e.target.ownerDocument || h).documentElement,
                            i = n.body,
                            e.pageX = t.clientX + (r && r.scrollLeft || i && i.scrollLeft || 0) - (r && r.clientLeft || i && i.clientLeft || 0),
                            e.pageY = t.clientY + (r && r.scrollTop || i && i.scrollTop || 0) - (r && r.clientTop || i && i.clientTop || 0)),
                            e.which || void 0 === o || (e.which = 1 & o ? 1 : 2 & o ? 3 : 4 & o ? 2 : 0),
                            e
                        }
                    },
                    fix: function(e) {
                        if (e[g.expando])
                            return e;
                        var t, n, r, i = e.type, o = e, a = this.fixHooks[i];
                        for (a || (this.fixHooks[i] = a = Y.test(i) ? this.mouseHooks : Q.test(i) ? this.keyHooks : {}),
                        r = a.props ? this.props.concat(a.props) : this.props,
                        e = new g.Event(o),
                        t = r.length; t--; )
                            e[n = r[t]] = o[n];
                        return e.target || (e.target = h),
                        3 === e.target.nodeType && (e.target = e.target.parentNode),
                        a.filter ? a.filter(e, o) : e
                    },
                    special: {
                        load: {
                            noBubble: !0
                        },
                        focus: {
                            trigger: function() {
                                return this !== ee() && this.focus ? (this.focus(),
                                !1) : void 0
                            },
                            delegateType: "focusin"
                        },
                        blur: {
                            trigger: function() {
                                return this === ee() && this.blur ? (this.blur(),
                                !1) : void 0
                            },
                            delegateType: "focusout"
                        },
                        click: {
                            trigger: function() {
                                return "checkbox" === this.type && this.click && g.nodeName(this, "input") ? (this.click(),
                                !1) : void 0
                            },
                            _default: function(e) {
                                return g.nodeName(e.target, "a")
                            }
                        },
                        beforeunload: {
                            postDispatch: function(e) {
                                void 0 !== e.result && e.originalEvent && (e.originalEvent.returnValue = e.result)
                            }
                        }
                    },
                    simulate: function(e, t, n, r) {
                        var i = g.extend(new g.Event, n, {
                            type: e,
                            isSimulated: !0,
                            originalEvent: {}
                        });
                        r ? g.event.trigger(i, null, t) : g.event.dispatch.call(t, i),
                        i.isDefaultPrevented() && n.preventDefault()
                    }
                },
                g.removeEvent = function(e, t, n) {
                    e.removeEventListener && e.removeEventListener(t, n, !1)
                }
                ,
                g.Event = function(e, t) {
                    return this instanceof g.Event ? (e && e.type ? (this.originalEvent = e,
                    this.type = e.type,
                    this.isDefaultPrevented = e.defaultPrevented || void 0 === e.defaultPrevented && !1 === e.returnValue ? K : Z) : this.type = e,
                    t && g.extend(this, t),
                    this.timeStamp = e && e.timeStamp || g.now(),
                    void (this[g.expando] = !0)) : new g.Event(e,t)
                }
                ,
                g.Event.prototype = {
                    isDefaultPrevented: Z,
                    isPropagationStopped: Z,
                    isImmediatePropagationStopped: Z,
                    preventDefault: function() {
                        var e = this.originalEvent;
                        this.isDefaultPrevented = K,
                        e && e.preventDefault && e.preventDefault()
                    },
                    stopPropagation: function() {
                        var e = this.originalEvent;
                        this.isPropagationStopped = K,
                        e && e.stopPropagation && e.stopPropagation()
                    },
                    stopImmediatePropagation: function() {
                        var e = this.originalEvent;
                        this.isImmediatePropagationStopped = K,
                        e && e.stopImmediatePropagation && e.stopImmediatePropagation(),
                        this.stopPropagation()
                    }
                },
                g.each({
                    mouseenter: "mouseover",
                    mouseleave: "mouseout",
                    pointerenter: "pointerover",
                    pointerleave: "pointerout"
                }, (function(e, t) {
                    g.event.special[e] = {
                        delegateType: t,
                        bindType: t,
                        handle: function(e) {
                            var n, r = this, i = e.relatedTarget, o = e.handleObj;
                            return (!i || i !== r && !g.contains(r, i)) && (e.type = o.origType,
                            n = o.handler.apply(this, arguments),
                            e.type = t),
                            n
                        }
                    }
                }
                )),
                p.focusinBubbles || g.each({
                    focus: "focusin",
                    blur: "focusout"
                }, (function(e, t) {
                    var n = function(e) {
                        g.event.simulate(t, e.target, g.event.fix(e), !0)
                    };
                    g.event.special[t] = {
                        setup: function() {
                            var r = this.ownerDocument || this
                              , i = H.access(r, t);
                            i || r.addEventListener(e, n, !0),
                            H.access(r, t, (i || 0) + 1)
                        },
                        teardown: function() {
                            var r = this.ownerDocument || this
                              , i = H.access(r, t) - 1;
                            i ? H.access(r, t, i) : (r.removeEventListener(e, n, !0),
                            H.remove(r, t))
                        }
                    }
                }
                )),
                g.fn.extend({
                    on: function(e, t, n, r, i) {
                        var o, a;
                        if ("object" == typeof e) {
                            for (a in "string" != typeof t && (n = n || t,
                            t = void 0),
                            e)
                                this.on(a, t, n, e[a], i);
                            return this
                        }
                        if (null == n && null == r ? (r = t,
                        n = t = void 0) : null == r && ("string" == typeof t ? (r = n,
                        n = void 0) : (r = n,
                        n = t,
                        t = void 0)),
                        !1 === r)
                            r = Z;
                        else if (!r)
                            return this;
                        return 1 === i && (o = r,
                        (r = function(e) {
                            return g().off(e),
                            o.apply(this, arguments)
                        }
                        ).guid = o.guid || (o.guid = g.guid++)),
                        this.each((function() {
                            g.event.add(this, e, r, n, t)
                        }
                        ))
                    },
                    one: function(e, t, n, r) {
                        return this.on(e, t, n, r, 1)
                    },
                    off: function(e, t, n) {
                        var r, i;
                        if (e && e.preventDefault && e.handleObj)
                            return r = e.handleObj,
                            g(e.delegateTarget).off(r.namespace ? r.origType + "." + r.namespace : r.origType, r.selector, r.handler),
                            this;
                        if ("object" == typeof e) {
                            for (i in e)
                                this.off(i, t, e[i]);
                            return this
                        }
                        return (!1 === t || "function" == typeof t) && (n = t,
                        t = void 0),
                        !1 === n && (n = Z),
                        this.each((function() {
                            g.event.remove(this, e, n, t)
                        }
                        ))
                    },
                    trigger: function(e, t) {
                        return this.each((function() {
                            g.event.trigger(e, t, this)
                        }
                        ))
                    },
                    triggerHandler: function(e, t) {
                        var n = this[0];
                        return n ? g.event.trigger(e, t, n, !0) : void 0
                    }
                });
                var te = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi
                  , ne = /<([\w:]+)/
                  , re = /<|&#?\w+;/
                  , ie = /<(?:script|style|link)/i
                  , oe = /checked\s*(?:[^=]|=\s*.checked.)/i
                  , ae = /^$|\/(?:java|ecma)script/i
                  , se = /^true\/(.*)/
                  , le = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g
                  , ue = {
                    option: [1, "<select multiple='multiple'>", "</select>"],
                    thead: [1, "<table>", "</table>"],
                    col: [2, "<table><colgroup>", "</colgroup></table>"],
                    tr: [2, "<table><tbody>", "</tbody></table>"],
                    td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
                    _default: [0, "", ""]
                };
                function ce(e, t) {
                    return g.nodeName(e, "table") && g.nodeName(11 !== t.nodeType ? t : t.firstChild, "tr") ? e.getElementsByTagName("tbody")[0] || e.appendChild(e.ownerDocument.createElement("tbody")) : e
                }
                function fe(e) {
                    return e.type = (null !== e.getAttribute("type")) + "/" + e.type,
                    e
                }
                function de(e) {
                    var t = se.exec(e.type);
                    return t ? e.type = t[1] : e.removeAttribute("type"),
                    e
                }
                function pe(e, t) {
                    for (var n = 0, r = e.length; r > n; n++)
                        H.set(e[n], "globalEval", !t || H.get(t[n], "globalEval"))
                }
                function he(e, t) {
                    var n, r, i, o, a, s, l, u;
                    if (1 === t.nodeType) {
                        if (H.hasData(e) && (o = H.access(e),
                        a = H.set(t, o),
                        u = o.events))
                            for (i in delete a.handle,
                            a.events = {},
                            u)
                                for (n = 0,
                                r = u[i].length; r > n; n++)
                                    g.event.add(t, i, u[i][n]);
                        R.hasData(e) && (s = R.access(e),
                        l = g.extend({}, s),
                        R.set(t, l))
                    }
                }
                function me(e, t) {
                    var n = e.getElementsByTagName ? e.getElementsByTagName(t || "*") : e.querySelectorAll ? e.querySelectorAll(t || "*") : [];
                    return void 0 === t || t && g.nodeName(e, t) ? g.merge([e], n) : n
                }
                function ge(e, t) {
                    var n = t.nodeName.toLowerCase();
                    "input" === n && X.test(e.type) ? t.checked = e.checked : ("input" === n || "textarea" === n) && (t.defaultValue = e.defaultValue)
                }
                ue.optgroup = ue.option,
                ue.tbody = ue.tfoot = ue.colgroup = ue.caption = ue.thead,
                ue.th = ue.td,
                g.extend({
                    clone: function(e, t, n) {
                        var r, i, o, a, s = e.cloneNode(!0), l = g.contains(e.ownerDocument, e);
                        if (!(p.noCloneChecked || 1 !== e.nodeType && 11 !== e.nodeType || g.isXMLDoc(e)))
                            for (a = me(s),
                            r = 0,
                            i = (o = me(e)).length; i > r; r++)
                                ge(o[r], a[r]);
                        if (t)
                            if (n)
                                for (o = o || me(e),
                                a = a || me(s),
                                r = 0,
                                i = o.length; i > r; r++)
                                    he(o[r], a[r]);
                            else
                                he(e, s);
                        return (a = me(s, "script")).length > 0 && pe(a, !l && me(e, "script")),
                        s
                    },
                    buildFragment: function(e, t, n, r) {
                        for (var i, o, a, s, l, u, c = t.createDocumentFragment(), f = [], d = 0, p = e.length; p > d; d++)
                            if ((i = e[d]) || 0 === i)
                                if ("object" === g.type(i))
                                    g.merge(f, i.nodeType ? [i] : i);
                                else if (re.test(i)) {
                                    for (o = o || c.appendChild(t.createElement("div")),
                                    a = (ne.exec(i) || ["", ""])[1].toLowerCase(),
                                    s = ue[a] || ue._default,
                                    o.innerHTML = s[1] + i.replace(te, "<$1></$2>") + s[2],
                                    u = s[0]; u--; )
                                        o = o.lastChild;
                                    g.merge(f, o.childNodes),
                                    (o = c.firstChild).textContent = ""
                                } else
                                    f.push(t.createTextNode(i));
                        for (c.textContent = "",
                        d = 0; i = f[d++]; )
                            if ((!r || -1 === g.inArray(i, r)) && (l = g.contains(i.ownerDocument, i),
                            o = me(c.appendChild(i), "script"),
                            l && pe(o),
                            n))
                                for (u = 0; i = o[u++]; )
                                    ae.test(i.type || "") && n.push(i);
                        return c
                    },
                    cleanData: function(e) {
                        for (var t, n, r, i, o = g.event.special, a = 0; void 0 !== (n = e[a]); a++) {
                            if (g.acceptData(n) && (i = n[H.expando]) && (t = H.cache[i])) {
                                if (t.events)
                                    for (r in t.events)
                                        o[r] ? g.event.remove(n, r) : g.removeEvent(n, r, t.handle);
                                H.cache[i] && delete H.cache[i]
                            }
                            delete R.cache[n[R.expando]]
                        }
                    }
                }),
                g.fn.extend({
                    text: function(e) {
                        return M(this, (function(e) {
                            return void 0 === e ? g.text(this) : this.empty().each((function() {
                                (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) && (this.textContent = e)
                            }
                            ))
                        }
                        ), null, e, arguments.length)
                    },
                    append: function() {
                        return this.domManip(arguments, (function(e) {
                            1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType || ce(this, e).appendChild(e)
                        }
                        ))
                    },
                    prepend: function() {
                        return this.domManip(arguments, (function(e) {
                            if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) {
                                var t = ce(this, e);
                                t.insertBefore(e, t.firstChild)
                            }
                        }
                        ))
                    },
                    before: function() {
                        return this.domManip(arguments, (function(e) {
                            this.parentNode && this.parentNode.insertBefore(e, this)
                        }
                        ))
                    },
                    after: function() {
                        return this.domManip(arguments, (function(e) {
                            this.parentNode && this.parentNode.insertBefore(e, this.nextSibling)
                        }
                        ))
                    },
                    remove: function(e, t) {
                        for (var n, r = e ? g.filter(e, this) : this, i = 0; null != (n = r[i]); i++)
                            t || 1 !== n.nodeType || g.cleanData(me(n)),
                            n.parentNode && (t && g.contains(n.ownerDocument, n) && pe(me(n, "script")),
                            n.parentNode.removeChild(n));
                        return this
                    },
                    empty: function() {
                        for (var e, t = 0; null != (e = this[t]); t++)
                            1 === e.nodeType && (g.cleanData(me(e, !1)),
                            e.textContent = "");
                        return this
                    },
                    clone: function(e, t) {
                        return e = null != e && e,
                        t = null == t ? e : t,
                        this.map((function() {
                            return g.clone(this, e, t)
                        }
                        ))
                    },
                    html: function(e) {
                        return M(this, (function(e) {
                            var t = this[0] || {}
                              , n = 0
                              , r = this.length;
                            if (void 0 === e && 1 === t.nodeType)
                                return t.innerHTML;
                            if ("string" == typeof e && !ie.test(e) && !ue[(ne.exec(e) || ["", ""])[1].toLowerCase()]) {
                                e = e.replace(te, "<$1></$2>");
                                try {
                                    for (; r > n; n++)
                                        1 === (t = this[n] || {}).nodeType && (g.cleanData(me(t, !1)),
                                        t.innerHTML = e);
                                    t = 0
                                } catch (e) {}
                            }
                            t && this.empty().append(e)
                        }
                        ), null, e, arguments.length)
                    },
                    replaceWith: function() {
                        var e = arguments[0];
                        return this.domManip(arguments, (function(t) {
                            e = this.parentNode,
                            g.cleanData(me(this)),
                            e && e.replaceChild(t, this)
                        }
                        )),
                        e && (e.length || e.nodeType) ? this : this.remove()
                    },
                    detach: function(e) {
                        return this.remove(e, !0)
                    },
                    domManip: function(e, t) {
                        e = s.apply([], e);
                        var n, r, i, o, a, l, u = 0, c = this.length, f = this, d = c - 1, h = e[0], m = g.isFunction(h);
                        if (m || c > 1 && "string" == typeof h && !p.checkClone && oe.test(h))
                            return this.each((function(n) {
                                var r = f.eq(n);
                                m && (e[0] = h.call(this, n, r.html())),
                                r.domManip(e, t)
                            }
                            ));
                        if (c && (r = (n = g.buildFragment(e, this[0].ownerDocument, !1, this)).firstChild,
                        1 === n.childNodes.length && (n = r),
                        r)) {
                            for (o = (i = g.map(me(n, "script"), fe)).length; c > u; u++)
                                a = n,
                                u !== d && (a = g.clone(a, !0, !0),
                                o && g.merge(i, me(a, "script"))),
                                t.call(this[u], a, u);
                            if (o)
                                for (l = i[i.length - 1].ownerDocument,
                                g.map(i, de),
                                u = 0; o > u; u++)
                                    a = i[u],
                                    ae.test(a.type || "") && !H.access(a, "globalEval") && g.contains(l, a) && (a.src ? g._evalUrl && g._evalUrl(a.src) : g.globalEval(a.textContent.replace(le, "")))
                        }
                        return this
                    }
                }),
                g.each({
                    appendTo: "append",
                    prependTo: "prepend",
                    insertBefore: "before",
                    insertAfter: "after",
                    replaceAll: "replaceWith"
                }, (function(e, t) {
                    g.fn[e] = function(e) {
                        for (var n, r = [], i = g(e), o = i.length - 1, a = 0; o >= a; a++)
                            n = a === o ? this : this.clone(!0),
                            g(i[a])[t](n),
                            l.apply(r, n.get());
                        return this.pushStack(r)
                    }
                }
                ));
                var ve, ye = {};
                function be(e, t) {
                    var n, i = g(t.createElement(e)).appendTo(t.body), o = r.getDefaultComputedStyle && (n = r.getDefaultComputedStyle(i[0])) ? n.display : g.css(i[0], "display");
                    return i.detach(),
                    o
                }
                function xe(e) {
                    var t = h
                      , n = ye[e];
                    return n || ("none" !== (n = be(e, t)) && n || ((t = (ve = (ve || g("<iframe frameborder='0' width='0' height='0'/>")).appendTo(t.documentElement))[0].contentDocument).write(),
                    t.close(),
                    n = be(e, t),
                    ve.detach()),
                    ye[e] = n),
                    n
                }
                var we = /^margin/
                  , Te = new RegExp("^(" + B + ")(?!px)[a-z%]+$","i")
                  , ke = function(e) {
                    return e.ownerDocument.defaultView.opener ? e.ownerDocument.defaultView.getComputedStyle(e, null) : r.getComputedStyle(e, null)
                };
                function Ce(e, t, n) {
                    var r, i, o, a, s = e.style;
                    return (n = n || ke(e)) && (a = n.getPropertyValue(t) || n[t]),
                    n && ("" !== a || g.contains(e.ownerDocument, e) || (a = g.style(e, t)),
                    Te.test(a) && we.test(t) && (r = s.width,
                    i = s.minWidth,
                    o = s.maxWidth,
                    s.minWidth = s.maxWidth = s.width = a,
                    a = n.width,
                    s.width = r,
                    s.minWidth = i,
                    s.maxWidth = o)),
                    void 0 !== a ? a + "" : a
                }
                function Ee(e, t) {
                    return {
                        get: function() {
                            return e() ? void delete this.get : (this.get = t).apply(this, arguments)
                        }
                    }
                }
                !function() {
                    var e, t, n = h.documentElement, i = h.createElement("div"), o = h.createElement("div");
                    if (o.style) {
                        function a() {
                            o.style.cssText = "-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",
                            o.innerHTML = "",
                            n.appendChild(i);
                            var a = r.getComputedStyle(o, null);
                            e = "1%" !== a.top,
                            t = "4px" === a.width,
                            n.removeChild(i)
                        }
                        o.style.backgroundClip = "content-box",
                        o.cloneNode(!0).style.backgroundClip = "",
                        p.clearCloneStyle = "content-box" === o.style.backgroundClip,
                        i.style.cssText = "border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;position:absolute",
                        i.appendChild(o),
                        r.getComputedStyle && g.extend(p, {
                            pixelPosition: function() {
                                return a(),
                                e
                            },
                            boxSizingReliable: function() {
                                return null == t && a(),
                                t
                            },
                            reliableMarginRight: function() {
                                var e, t = o.appendChild(h.createElement("div"));
                                return t.style.cssText = o.style.cssText = "-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",
                                t.style.marginRight = t.style.width = "0",
                                o.style.width = "1px",
                                n.appendChild(i),
                                e = !parseFloat(r.getComputedStyle(t, null).marginRight),
                                n.removeChild(i),
                                o.removeChild(t),
                                e
                            }
                        })
                    }
                }(),
                g.swap = function(e, t, n, r) {
                    var i, o, a = {};
                    for (o in t)
                        a[o] = e.style[o],
                        e.style[o] = t[o];
                    for (o in i = n.apply(e, r || []),
                    t)
                        e.style[o] = a[o];
                    return i
                }
                ;
                var Se = /^(none|table(?!-c[ea]).+)/
                  , Ae = new RegExp("^(" + B + ")(.*)$","i")
                  , De = new RegExp("^([+-])=(" + B + ")","i")
                  , Ne = {
                    position: "absolute",
                    visibility: "hidden",
                    display: "block"
                }
                  , je = {
                    letterSpacing: "0",
                    fontWeight: "400"
                }
                  , Le = ["Webkit", "O", "Moz", "ms"];
                function Oe(e, t) {
                    if (t in e)
                        return t;
                    for (var n = t[0].toUpperCase() + t.slice(1), r = t, i = Le.length; i--; )
                        if ((t = Le[i] + n)in e)
                            return t;
                    return r
                }
                function qe(e, t, n) {
                    var r = Ae.exec(t);
                    return r ? Math.max(0, r[1] - (n || 0)) + (r[2] || "px") : t
                }
                function $e(e, t, n, r, i) {
                    for (var o = n === (r ? "border" : "content") ? 4 : "width" === t ? 1 : 0, a = 0; 4 > o; o += 2)
                        "margin" === n && (a += g.css(e, n + W[o], !0, i)),
                        r ? ("content" === n && (a -= g.css(e, "padding" + W[o], !0, i)),
                        "margin" !== n && (a -= g.css(e, "border" + W[o] + "Width", !0, i))) : (a += g.css(e, "padding" + W[o], !0, i),
                        "padding" !== n && (a += g.css(e, "border" + W[o] + "Width", !0, i)));
                    return a
                }
                function Ie(e, t, n) {
                    var r = !0
                      , i = "width" === t ? e.offsetWidth : e.offsetHeight
                      , o = ke(e)
                      , a = "border-box" === g.css(e, "boxSizing", !1, o);
                    if (0 >= i || null == i) {
                        if ((0 > (i = Ce(e, t, o)) || null == i) && (i = e.style[t]),
                        Te.test(i))
                            return i;
                        r = a && (p.boxSizingReliable() || i === e.style[t]),
                        i = parseFloat(i) || 0
                    }
                    return i + $e(e, t, n || (a ? "border" : "content"), r, o) + "px"
                }
                function Me(e, t) {
                    for (var n, r, i, o = [], a = 0, s = e.length; s > a; a++)
                        (r = e[a]).style && (o[a] = H.get(r, "olddisplay"),
                        n = r.style.display,
                        t ? (o[a] || "none" !== n || (r.style.display = ""),
                        "" === r.style.display && U(r) && (o[a] = H.access(r, "olddisplay", xe(r.nodeName)))) : (i = U(r),
                        "none" === n && i || H.set(r, "olddisplay", i ? n : g.css(r, "display"))));
                    for (a = 0; s > a; a++)
                        (r = e[a]).style && (t && "none" !== r.style.display && "" !== r.style.display || (r.style.display = t ? o[a] || "" : "none"));
                    return e
                }
                function Pe(e, t, n, r, i) {
                    return new Pe.prototype.init(e,t,n,r,i)
                }
                g.extend({
                    cssHooks: {
                        opacity: {
                            get: function(e, t) {
                                if (t) {
                                    var n = Ce(e, "opacity");
                                    return "" === n ? "1" : n
                                }
                            }
                        }
                    },
                    cssNumber: {
                        columnCount: !0,
                        fillOpacity: !0,
                        flexGrow: !0,
                        flexShrink: !0,
                        fontWeight: !0,
                        lineHeight: !0,
                        opacity: !0,
                        order: !0,
                        orphans: !0,
                        widows: !0,
                        zIndex: !0,
                        zoom: !0
                    },
                    cssProps: {
                        float: "cssFloat"
                    },
                    style: function(e, t, n, r) {
                        if (e && 3 !== e.nodeType && 8 !== e.nodeType && e.style) {
                            var i, o, a, s = g.camelCase(t), l = e.style;
                            return t = g.cssProps[s] || (g.cssProps[s] = Oe(l, s)),
                            a = g.cssHooks[t] || g.cssHooks[s],
                            void 0 === n ? a && "get"in a && void 0 !== (i = a.get(e, !1, r)) ? i : l[t] : ("string" == (o = typeof n) && (i = De.exec(n)) && (n = (i[1] + 1) * i[2] + parseFloat(g.css(e, t)),
                            o = "number"),
                            void (null != n && n == n && ("number" !== o || g.cssNumber[s] || (n += "px"),
                            p.clearCloneStyle || "" !== n || 0 !== t.indexOf("background") || (l[t] = "inherit"),
                            a && "set"in a && void 0 === (n = a.set(e, n, r)) || (l[t] = n))))
                        }
                    },
                    css: function(e, t, n, r) {
                        var i, o, a, s = g.camelCase(t);
                        return t = g.cssProps[s] || (g.cssProps[s] = Oe(e.style, s)),
                        (a = g.cssHooks[t] || g.cssHooks[s]) && "get"in a && (i = a.get(e, !0, n)),
                        void 0 === i && (i = Ce(e, t, r)),
                        "normal" === i && t in je && (i = je[t]),
                        "" === n || n ? (o = parseFloat(i),
                        !0 === n || g.isNumeric(o) ? o || 0 : i) : i
                    }
                }),
                g.each(["height", "width"], (function(e, t) {
                    g.cssHooks[t] = {
                        get: function(e, n, r) {
                            return n ? Se.test(g.css(e, "display")) && 0 === e.offsetWidth ? g.swap(e, Ne, (function() {
                                return Ie(e, t, r)
                            }
                            )) : Ie(e, t, r) : void 0
                        },
                        set: function(e, n, r) {
                            var i = r && ke(e);
                            return qe(0, n, r ? $e(e, t, r, "border-box" === g.css(e, "boxSizing", !1, i), i) : 0)
                        }
                    }
                }
                )),
                g.cssHooks.marginRight = Ee(p.reliableMarginRight, (function(e, t) {
                    return t ? g.swap(e, {
                        display: "inline-block"
                    }, Ce, [e, "marginRight"]) : void 0
                }
                )),
                g.each({
                    margin: "",
                    padding: "",
                    border: "Width"
                }, (function(e, t) {
                    g.cssHooks[e + t] = {
                        expand: function(n) {
                            for (var r = 0, i = {}, o = "string" == typeof n ? n.split(" ") : [n]; 4 > r; r++)
                                i[e + W[r] + t] = o[r] || o[r - 2] || o[0];
                            return i
                        }
                    },
                    we.test(e) || (g.cssHooks[e + t].set = qe)
                }
                )),
                g.fn.extend({
                    css: function(e, t) {
                        return M(this, (function(e, t, n) {
                            var r, i, o = {}, a = 0;
                            if (g.isArray(t)) {
                                for (r = ke(e),
                                i = t.length; i > a; a++)
                                    o[t[a]] = g.css(e, t[a], !1, r);
                                return o
                            }
                            return void 0 !== n ? g.style(e, t, n) : g.css(e, t)
                        }
                        ), e, t, arguments.length > 1)
                    },
                    show: function() {
                        return Me(this, !0)
                    },
                    hide: function() {
                        return Me(this)
                    },
                    toggle: function(e) {
                        return "boolean" == typeof e ? e ? this.show() : this.hide() : this.each((function() {
                            U(this) ? g(this).show() : g(this).hide()
                        }
                        ))
                    }
                }),
                g.Tween = Pe,
                Pe.prototype = {
                    constructor: Pe,
                    init: function(e, t, n, r, i, o) {
                        this.elem = e,
                        this.prop = n,
                        this.easing = i || "swing",
                        this.options = t,
                        this.start = this.now = this.cur(),
                        this.end = r,
                        this.unit = o || (g.cssNumber[n] ? "" : "px")
                    },
                    cur: function() {
                        var e = Pe.propHooks[this.prop];
                        return e && e.get ? e.get(this) : Pe.propHooks._default.get(this)
                    },
                    run: function(e) {
                        var t, n = Pe.propHooks[this.prop];
                        return this.options.duration ? this.pos = t = g.easing[this.easing](e, this.options.duration * e, 0, 1, this.options.duration) : this.pos = t = e,
                        this.now = (this.end - this.start) * t + this.start,
                        this.options.step && this.options.step.call(this.elem, this.now, this),
                        n && n.set ? n.set(this) : Pe.propHooks._default.set(this),
                        this
                    }
                },
                Pe.prototype.init.prototype = Pe.prototype,
                Pe.propHooks = {
                    _default: {
                        get: function(e) {
                            var t;
                            return null == e.elem[e.prop] || e.elem.style && null != e.elem.style[e.prop] ? (t = g.css(e.elem, e.prop, "")) && "auto" !== t ? t : 0 : e.elem[e.prop]
                        },
                        set: function(e) {
                            g.fx.step[e.prop] ? g.fx.step[e.prop](e) : e.elem.style && (null != e.elem.style[g.cssProps[e.prop]] || g.cssHooks[e.prop]) ? g.style(e.elem, e.prop, e.now + e.unit) : e.elem[e.prop] = e.now
                        }
                    }
                },
                Pe.propHooks.scrollTop = Pe.propHooks.scrollLeft = {
                    set: function(e) {
                        e.elem.nodeType && e.elem.parentNode && (e.elem[e.prop] = e.now)
                    }
                },
                g.easing = {
                    linear: function(e) {
                        return e
                    },
                    swing: function(e) {
                        return .5 - Math.cos(e * Math.PI) / 2
                    }
                },
                g.fx = Pe.prototype.init,
                g.fx.step = {};
                var He, Re, Fe = /^(?:toggle|show|hide)$/, _e = new RegExp("^(?:([+-])=|)(" + B + ")([a-z%]*)$","i"), ze = /queueHooks$/, Be = [function(e, t, n) {
                    var r, i, o, a, s, l, u, c = this, f = {}, d = e.style, p = e.nodeType && U(e), h = H.get(e, "fxshow");
                    for (r in n.queue || (null == (s = g._queueHooks(e, "fx")).unqueued && (s.unqueued = 0,
                    l = s.empty.fire,
                    s.empty.fire = function() {
                        s.unqueued || l()
                    }
                    ),
                    s.unqueued++,
                    c.always((function() {
                        c.always((function() {
                            s.unqueued--,
                            g.queue(e, "fx").length || s.empty.fire()
                        }
                        ))
                    }
                    ))),
                    1 === e.nodeType && ("height"in t || "width"in t) && (n.overflow = [d.overflow, d.overflowX, d.overflowY],
                    "inline" === ("none" === (u = g.css(e, "display")) ? H.get(e, "olddisplay") || xe(e.nodeName) : u) && "none" === g.css(e, "float") && (d.display = "inline-block")),
                    n.overflow && (d.overflow = "hidden",
                    c.always((function() {
                        d.overflow = n.overflow[0],
                        d.overflowX = n.overflow[1],
                        d.overflowY = n.overflow[2]
                    }
                    ))),
                    t)
                        if (i = t[r],
                        Fe.exec(i)) {
                            if (delete t[r],
                            o = o || "toggle" === i,
                            i === (p ? "hide" : "show")) {
                                if ("show" !== i || !h || void 0 === h[r])
                                    continue;
                                p = !0
                            }
                            f[r] = h && h[r] || g.style(e, r)
                        } else
                            u = void 0;
                    if (g.isEmptyObject(f))
                        "inline" === ("none" === u ? xe(e.nodeName) : u) && (d.display = u);
                    else
                        for (r in h ? "hidden"in h && (p = h.hidden) : h = H.access(e, "fxshow", {}),
                        o && (h.hidden = !p),
                        p ? g(e).show() : c.done((function() {
                            g(e).hide()
                        }
                        )),
                        c.done((function() {
                            var t;
                            for (t in H.remove(e, "fxshow"),
                            f)
                                g.style(e, t, f[t])
                        }
                        )),
                        f)
                            a = Ve(p ? h[r] : 0, r, c),
                            r in h || (h[r] = a.start,
                            p && (a.end = a.start,
                            a.start = "width" === r || "height" === r ? 1 : 0))
                }
                ], We = {
                    "*": [function(e, t) {
                        var n = this.createTween(e, t)
                          , r = n.cur()
                          , i = _e.exec(t)
                          , o = i && i[3] || (g.cssNumber[e] ? "" : "px")
                          , a = (g.cssNumber[e] || "px" !== o && +r) && _e.exec(g.css(n.elem, e))
                          , s = 1
                          , l = 20;
                        if (a && a[3] !== o) {
                            o = o || a[3],
                            i = i || [],
                            a = +r || 1;
                            do {
                                a /= s = s || ".5",
                                g.style(n.elem, e, a + o)
                            } while (s !== (s = n.cur() / r) && 1 !== s && --l)
                        }
                        return i && (a = n.start = +a || +r || 0,
                        n.unit = o,
                        n.end = i[1] ? a + (i[1] + 1) * i[2] : +i[2]),
                        n
                    }
                    ]
                };
                function Ue() {
                    return setTimeout((function() {
                        He = void 0
                    }
                    )),
                    He = g.now()
                }
                function Xe(e, t) {
                    var n, r = 0, i = {
                        height: e
                    };
                    for (t = t ? 1 : 0; 4 > r; r += 2 - t)
                        i["margin" + (n = W[r])] = i["padding" + n] = e;
                    return t && (i.opacity = i.width = e),
                    i
                }
                function Ve(e, t, n) {
                    for (var r, i = (We[t] || []).concat(We["*"]), o = 0, a = i.length; a > o; o++)
                        if (r = i[o].call(n, t, e))
                            return r
                }
                function Qe(e, t, n) {
                    var r, i, o = 0, a = Be.length, s = g.Deferred().always((function() {
                        delete l.elem
                    }
                    )), l = function() {
                        if (i)
                            return !1;
                        for (var t = He || Ue(), n = Math.max(0, u.startTime + u.duration - t), r = 1 - (n / u.duration || 0), o = 0, a = u.tweens.length; a > o; o++)
                            u.tweens[o].run(r);
                        return s.notifyWith(e, [u, r, n]),
                        1 > r && a ? n : (s.resolveWith(e, [u]),
                        !1)
                    }, u = s.promise({
                        elem: e,
                        props: g.extend({}, t),
                        opts: g.extend(!0, {
                            specialEasing: {}
                        }, n),
                        originalProperties: t,
                        originalOptions: n,
                        startTime: He || Ue(),
                        duration: n.duration,
                        tweens: [],
                        createTween: function(t, n) {
                            var r = g.Tween(e, u.opts, t, n, u.opts.specialEasing[t] || u.opts.easing);
                            return u.tweens.push(r),
                            r
                        },
                        stop: function(t) {
                            var n = 0
                              , r = t ? u.tweens.length : 0;
                            if (i)
                                return this;
                            for (i = !0; r > n; n++)
                                u.tweens[n].run(1);
                            return t ? s.resolveWith(e, [u, t]) : s.rejectWith(e, [u, t]),
                            this
                        }
                    }), c = u.props;
                    for (function(e, t) {
                        var n, r, i, o, a;
                        for (n in e)
                            if (i = t[r = g.camelCase(n)],
                            o = e[n],
                            g.isArray(o) && (i = o[1],
                            o = e[n] = o[0]),
                            n !== r && (e[r] = o,
                            delete e[n]),
                            (a = g.cssHooks[r]) && "expand"in a)
                                for (n in o = a.expand(o),
                                delete e[r],
                                o)
                                    n in e || (e[n] = o[n],
                                    t[n] = i);
                            else
                                t[r] = i
                    }(c, u.opts.specialEasing); a > o; o++)
                        if (r = Be[o].call(u, e, c, u.opts))
                            return r;
                    return g.map(c, Ve, u),
                    g.isFunction(u.opts.start) && u.opts.start.call(e, u),
                    g.fx.timer(g.extend(l, {
                        elem: e,
                        anim: u,
                        queue: u.opts.queue
                    })),
                    u.progress(u.opts.progress).done(u.opts.done, u.opts.complete).fail(u.opts.fail).always(u.opts.always)
                }
                g.Animation = g.extend(Qe, {
                    tweener: function(e, t) {
                        g.isFunction(e) ? (t = e,
                        e = ["*"]) : e = e.split(" ");
                        for (var n, r = 0, i = e.length; i > r; r++)
                            n = e[r],
                            We[n] = We[n] || [],
                            We[n].unshift(t)
                    },
                    prefilter: function(e, t) {
                        t ? Be.unshift(e) : Be.push(e)
                    }
                }),
                g.speed = function(e, t, n) {
                    var r = e && "object" == typeof e ? g.extend({}, e) : {
                        complete: n || !n && t || g.isFunction(e) && e,
                        duration: e,
                        easing: n && t || t && !g.isFunction(t) && t
                    };
                    return r.duration = g.fx.off ? 0 : "number" == typeof r.duration ? r.duration : r.duration in g.fx.speeds ? g.fx.speeds[r.duration] : g.fx.speeds._default,
                    (null == r.queue || !0 === r.queue) && (r.queue = "fx"),
                    r.old = r.complete,
                    r.complete = function() {
                        g.isFunction(r.old) && r.old.call(this),
                        r.queue && g.dequeue(this, r.queue)
                    }
                    ,
                    r
                }
                ,
                g.fn.extend({
                    fadeTo: function(e, t, n, r) {
                        return this.filter(U).css("opacity", 0).show().end().animate({
                            opacity: t
                        }, e, n, r)
                    },
                    animate: function(e, t, n, r) {
                        var i = g.isEmptyObject(e)
                          , o = g.speed(t, n, r)
                          , a = function() {
                            var t = Qe(this, g.extend({}, e), o);
                            (i || H.get(this, "finish")) && t.stop(!0)
                        };
                        return a.finish = a,
                        i || !1 === o.queue ? this.each(a) : this.queue(o.queue, a)
                    },
                    stop: function(e, t, n) {
                        var r = function(e) {
                            var t = e.stop;
                            delete e.stop,
                            t(n)
                        };
                        return "string" != typeof e && (n = t,
                        t = e,
                        e = void 0),
                        t && !1 !== e && this.queue(e || "fx", []),
                        this.each((function() {
                            var t = !0
                              , i = null != e && e + "queueHooks"
                              , o = g.timers
                              , a = H.get(this);
                            if (i)
                                a[i] && a[i].stop && r(a[i]);
                            else
                                for (i in a)
                                    a[i] && a[i].stop && ze.test(i) && r(a[i]);
                            for (i = o.length; i--; )
                                o[i].elem !== this || null != e && o[i].queue !== e || (o[i].anim.stop(n),
                                t = !1,
                                o.splice(i, 1));
                            (t || !n) && g.dequeue(this, e)
                        }
                        ))
                    },
                    finish: function(e) {
                        return !1 !== e && (e = e || "fx"),
                        this.each((function() {
                            var t, n = H.get(this), r = n[e + "queue"], i = n[e + "queueHooks"], o = g.timers, a = r ? r.length : 0;
                            for (n.finish = !0,
                            g.queue(this, e, []),
                            i && i.stop && i.stop.call(this, !0),
                            t = o.length; t--; )
                                o[t].elem === this && o[t].queue === e && (o[t].anim.stop(!0),
                                o.splice(t, 1));
                            for (t = 0; a > t; t++)
                                r[t] && r[t].finish && r[t].finish.call(this);
                            delete n.finish
                        }
                        ))
                    }
                }),
                g.each(["toggle", "show", "hide"], (function(e, t) {
                    var n = g.fn[t];
                    g.fn[t] = function(e, r, i) {
                        return null == e || "boolean" == typeof e ? n.apply(this, arguments) : this.animate(Xe(t, !0), e, r, i)
                    }
                }
                )),
                g.each({
                    slideDown: Xe("show"),
                    slideUp: Xe("hide"),
                    slideToggle: Xe("toggle"),
                    fadeIn: {
                        opacity: "show"
                    },
                    fadeOut: {
                        opacity: "hide"
                    },
                    fadeToggle: {
                        opacity: "toggle"
                    }
                }, (function(e, t) {
                    g.fn[e] = function(e, n, r) {
                        return this.animate(t, e, n, r)
                    }
                }
                )),
                g.timers = [],
                g.fx.tick = function() {
                    var e, t = 0, n = g.timers;
                    for (He = g.now(); t < n.length; t++)
                        (e = n[t])() || n[t] !== e || n.splice(t--, 1);
                    n.length || g.fx.stop(),
                    He = void 0
                }
                ,
                g.fx.timer = function(e) {
                    g.timers.push(e),
                    e() ? g.fx.start() : g.timers.pop()
                }
                ,
                g.fx.interval = 13,
                g.fx.start = function() {
                    Re || (Re = setInterval(g.fx.tick, g.fx.interval))
                }
                ,
                g.fx.stop = function() {
                    clearInterval(Re),
                    Re = null
                }
                ,
                g.fx.speeds = {
                    slow: 600,
                    fast: 200,
                    _default: 400
                },
                g.fn.delay = function(e, t) {
                    return e = g.fx && g.fx.speeds[e] || e,
                    t = t || "fx",
                    this.queue(t, (function(t, n) {
                        var r = setTimeout(t, e);
                        n.stop = function() {
                            clearTimeout(r)
                        }
                    }
                    ))
                }
                ,
                function() {
                    var e = h.createElement("input")
                      , t = h.createElement("select")
                      , n = t.appendChild(h.createElement("option"));
                    e.type = "checkbox",
                    p.checkOn = "" !== e.value,
                    p.optSelected = n.selected,
                    t.disabled = !0,
                    p.optDisabled = !n.disabled,
                    (e = h.createElement("input")).value = "t",
                    e.type = "radio",
                    p.radioValue = "t" === e.value
                }();
                var Ye, Ge = g.expr.attrHandle;
                g.fn.extend({
                    attr: function(e, t) {
                        return M(this, g.attr, e, t, arguments.length > 1)
                    },
                    removeAttr: function(e) {
                        return this.each((function() {
                            g.removeAttr(this, e)
                        }
                        ))
                    }
                }),
                g.extend({
                    attr: function(e, t, n) {
                        var r, i, o = e.nodeType;
                        if (e && 3 !== o && 8 !== o && 2 !== o)
                            return typeof e.getAttribute === V ? g.prop(e, t, n) : (1 === o && g.isXMLDoc(e) || (t = t.toLowerCase(),
                            r = g.attrHooks[t] || (g.expr.match.bool.test(t) ? Ye : void 0)),
                            void 0 === n ? r && "get"in r && null !== (i = r.get(e, t)) ? i : null == (i = g.find.attr(e, t)) ? void 0 : i : null !== n ? r && "set"in r && void 0 !== (i = r.set(e, n, t)) ? i : (e.setAttribute(t, n + ""),
                            n) : void g.removeAttr(e, t))
                    },
                    removeAttr: function(e, t) {
                        var n, r, i = 0, o = t && t.match(q);
                        if (o && 1 === e.nodeType)
                            for (; n = o[i++]; )
                                r = g.propFix[n] || n,
                                g.expr.match.bool.test(n) && (e[r] = !1),
                                e.removeAttribute(n)
                    },
                    attrHooks: {
                        type: {
                            set: function(e, t) {
                                if (!p.radioValue && "radio" === t && g.nodeName(e, "input")) {
                                    var n = e.value;
                                    return e.setAttribute("type", t),
                                    n && (e.value = n),
                                    t
                                }
                            }
                        }
                    }
                }),
                Ye = {
                    set: function(e, t, n) {
                        return !1 === t ? g.removeAttr(e, n) : e.setAttribute(n, n),
                        n
                    }
                },
                g.each(g.expr.match.bool.source.match(/\w+/g), (function(e, t) {
                    var n = Ge[t] || g.find.attr;
                    Ge[t] = function(e, t, r) {
                        var i, o;
                        return r || (o = Ge[t],
                        Ge[t] = i,
                        i = null != n(e, t, r) ? t.toLowerCase() : null,
                        Ge[t] = o),
                        i
                    }
                }
                ));
                var Je = /^(?:input|select|textarea|button)$/i;
                g.fn.extend({
                    prop: function(e, t) {
                        return M(this, g.prop, e, t, arguments.length > 1)
                    },
                    removeProp: function(e) {
                        return this.each((function() {
                            delete this[g.propFix[e] || e]
                        }
                        ))
                    }
                }),
                g.extend({
                    propFix: {
                        for: "htmlFor",
                        class: "className"
                    },
                    prop: function(e, t, n) {
                        var r, i, o = e.nodeType;
                        if (e && 3 !== o && 8 !== o && 2 !== o)
                            return (1 !== o || !g.isXMLDoc(e)) && (t = g.propFix[t] || t,
                            i = g.propHooks[t]),
                            void 0 !== n ? i && "set"in i && void 0 !== (r = i.set(e, n, t)) ? r : e[t] = n : i && "get"in i && null !== (r = i.get(e, t)) ? r : e[t]
                    },
                    propHooks: {
                        tabIndex: {
                            get: function(e) {
                                return e.hasAttribute("tabindex") || Je.test(e.nodeName) || e.href ? e.tabIndex : -1
                            }
                        }
                    }
                }),
                p.optSelected || (g.propHooks.selected = {
                    get: function(e) {
                        var t = e.parentNode;
                        return t && t.parentNode && t.parentNode.selectedIndex,
                        null
                    }
                }),
                g.each(["tabIndex", "readOnly", "maxLength", "cellSpacing", "cellPadding", "rowSpan", "colSpan", "useMap", "frameBorder", "contentEditable"], (function() {
                    g.propFix[this.toLowerCase()] = this
                }
                ));
                var Ke = /[\t\r\n\f]/g;
                g.fn.extend({
                    addClass: function(e) {
                        var t, n, r, i, o, a, s = "string" == typeof e && e, l = 0, u = this.length;
                        if (g.isFunction(e))
                            return this.each((function(t) {
                                g(this).addClass(e.call(this, t, this.className))
                            }
                            ));
                        if (s)
                            for (t = (e || "").match(q) || []; u > l; l++)
                                if (r = 1 === (n = this[l]).nodeType && (n.className ? (" " + n.className + " ").replace(Ke, " ") : " ")) {
                                    for (o = 0; i = t[o++]; )
                                        r.indexOf(" " + i + " ") < 0 && (r += i + " ");
                                    a = g.trim(r),
                                    n.className !== a && (n.className = a)
                                }
                        return this
                    },
                    removeClass: function(e) {
                        var t, n, r, i, o, a, s = 0 === arguments.length || "string" == typeof e && e, l = 0, u = this.length;
                        if (g.isFunction(e))
                            return this.each((function(t) {
                                g(this).removeClass(e.call(this, t, this.className))
                            }
                            ));
                        if (s)
                            for (t = (e || "").match(q) || []; u > l; l++)
                                if (r = 1 === (n = this[l]).nodeType && (n.className ? (" " + n.className + " ").replace(Ke, " ") : "")) {
                                    for (o = 0; i = t[o++]; )
                                        for (; r.indexOf(" " + i + " ") >= 0; )
                                            r = r.replace(" " + i + " ", " ");
                                    a = e ? g.trim(r) : "",
                                    n.className !== a && (n.className = a)
                                }
                        return this
                    },
                    toggleClass: function(e, t) {
                        var n = typeof e;
                        return "boolean" == typeof t && "string" === n ? t ? this.addClass(e) : this.removeClass(e) : this.each(g.isFunction(e) ? function(n) {
                            g(this).toggleClass(e.call(this, n, this.className, t), t)
                        }
                        : function() {
                            if ("string" === n)
                                for (var t, r = 0, i = g(this), o = e.match(q) || []; t = o[r++]; )
                                    i.hasClass(t) ? i.removeClass(t) : i.addClass(t);
                            else
                                (n === V || "boolean" === n) && (this.className && H.set(this, "__className__", this.className),
                                this.className = this.className || !1 === e ? "" : H.get(this, "__className__") || "")
                        }
                        )
                    },
                    hasClass: function(e) {
                        for (var t = " " + e + " ", n = 0, r = this.length; r > n; n++)
                            if (1 === this[n].nodeType && (" " + this[n].className + " ").replace(Ke, " ").indexOf(t) >= 0)
                                return !0;
                        return !1
                    }
                });
                var Ze = /\r/g;
                g.fn.extend({
                    val: function(e) {
                        var t, n, r, i = this[0];
                        return arguments.length ? (r = g.isFunction(e),
                        this.each((function(n) {
                            var i;
                            1 === this.nodeType && (null == (i = r ? e.call(this, n, g(this).val()) : e) ? i = "" : "number" == typeof i ? i += "" : g.isArray(i) && (i = g.map(i, (function(e) {
                                return null == e ? "" : e + ""
                            }
                            ))),
                            (t = g.valHooks[this.type] || g.valHooks[this.nodeName.toLowerCase()]) && "set"in t && void 0 !== t.set(this, i, "value") || (this.value = i))
                        }
                        ))) : i ? (t = g.valHooks[i.type] || g.valHooks[i.nodeName.toLowerCase()]) && "get"in t && void 0 !== (n = t.get(i, "value")) ? n : "string" == typeof (n = i.value) ? n.replace(Ze, "") : null == n ? "" : n : void 0
                    }
                }),
                g.extend({
                    valHooks: {
                        option: {
                            get: function(e) {
                                var t = g.find.attr(e, "value");
                                return null != t ? t : g.trim(g.text(e))
                            }
                        },
                        select: {
                            get: function(e) {
                                for (var t, n, r = e.options, i = e.selectedIndex, o = "select-one" === e.type || 0 > i, a = o ? null : [], s = o ? i + 1 : r.length, l = 0 > i ? s : o ? i : 0; s > l; l++)
                                    if (!(!(n = r[l]).selected && l !== i || (p.optDisabled ? n.disabled : null !== n.getAttribute("disabled")) || n.parentNode.disabled && g.nodeName(n.parentNode, "optgroup"))) {
                                        if (t = g(n).val(),
                                        o)
                                            return t;
                                        a.push(t)
                                    }
                                return a
                            },
                            set: function(e, t) {
                                for (var n, r, i = e.options, o = g.makeArray(t), a = i.length; a--; )
                                    ((r = i[a]).selected = g.inArray(r.value, o) >= 0) && (n = !0);
                                return n || (e.selectedIndex = -1),
                                o
                            }
                        }
                    }
                }),
                g.each(["radio", "checkbox"], (function() {
                    g.valHooks[this] = {
                        set: function(e, t) {
                            return g.isArray(t) ? e.checked = g.inArray(g(e).val(), t) >= 0 : void 0
                        }
                    },
                    p.checkOn || (g.valHooks[this].get = function(e) {
                        return null === e.getAttribute("value") ? "on" : e.value
                    }
                    )
                }
                )),
                g.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "), (function(e, t) {
                    g.fn[t] = function(e, n) {
                        return arguments.length > 0 ? this.on(t, null, e, n) : this.trigger(t)
                    }
                }
                )),
                g.fn.extend({
                    hover: function(e, t) {
                        return this.mouseenter(e).mouseleave(t || e)
                    },
                    bind: function(e, t, n) {
                        return this.on(e, null, t, n)
                    },
                    unbind: function(e, t) {
                        return this.off(e, null, t)
                    },
                    delegate: function(e, t, n, r) {
                        return this.on(t, e, n, r)
                    },
                    undelegate: function(e, t, n) {
                        return 1 === arguments.length ? this.off(e, "**") : this.off(t, e || "**", n)
                    }
                });
                var et = g.now()
                  , tt = /\?/;
                g.parseJSON = function(e) {
                    return JSON.parse(e + "")
                }
                ,
                g.parseXML = function(e) {
                    var t;
                    if (!e || "string" != typeof e)
                        return null;
                    try {
                        t = (new DOMParser).parseFromString(e, "text/xml")
                    } catch (e) {
                        t = void 0
                    }
                    return (!t || t.getElementsByTagName("parsererror").length) && g.error("Invalid XML: " + e),
                    t
                }
                ;
                var nt = /#.*$/
                  , rt = /([?&])_=[^&]*/
                  , it = /^(.*?):[ \t]*([^\r\n]*)$/gm
                  , ot = /^(?:GET|HEAD)$/
                  , at = /^\/\//
                  , st = /^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/
                  , lt = {}
                  , ut = {}
                  , ct = "*/".concat("*")
                  , ft = r.location.href
                  , dt = st.exec(ft.toLowerCase()) || [];
                function pt(e) {
                    return function(t, n) {
                        "string" != typeof t && (n = t,
                        t = "*");
                        var r, i = 0, o = t.toLowerCase().match(q) || [];
                        if (g.isFunction(n))
                            for (; r = o[i++]; )
                                "+" === r[0] ? (r = r.slice(1) || "*",
                                (e[r] = e[r] || []).unshift(n)) : (e[r] = e[r] || []).push(n)
                    }
                }
                function ht(e, t, n, r) {
                    var i = {}
                      , o = e === ut;
                    function a(s) {
                        var l;
                        return i[s] = !0,
                        g.each(e[s] || [], (function(e, s) {
                            var u = s(t, n, r);
                            return "string" != typeof u || o || i[u] ? o ? !(l = u) : void 0 : (t.dataTypes.unshift(u),
                            a(u),
                            !1)
                        }
                        )),
                        l
                    }
                    return a(t.dataTypes[0]) || !i["*"] && a("*")
                }
                function mt(e, t) {
                    var n, r, i = g.ajaxSettings.flatOptions || {};
                    for (n in t)
                        void 0 !== t[n] && ((i[n] ? e : r || (r = {}))[n] = t[n]);
                    return r && g.extend(!0, e, r),
                    e
                }
                g.extend({
                    active: 0,
                    lastModified: {},
                    etag: {},
                    ajaxSettings: {
                        url: ft,
                        type: "GET",
                        isLocal: /^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(dt[1]),
                        global: !0,
                        processData: !0,
                        async: !0,
                        contentType: "application/x-www-form-urlencoded; charset=UTF-8",
                        accepts: {
                            "*": ct,
                            text: "text/plain",
                            html: "text/html",
                            xml: "application/xml, text/xml",
                            json: "application/json, text/javascript"
                        },
                        contents: {
                            xml: /xml/,
                            html: /html/,
                            json: /json/
                        },
                        responseFields: {
                            xml: "responseXML",
                            text: "responseText",
                            json: "responseJSON"
                        },
                        converters: {
                            "* text": String,
                            "text html": !0,
                            "text json": g.parseJSON,
                            "text xml": g.parseXML
                        },
                        flatOptions: {
                            url: !0,
                            context: !0
                        }
                    },
                    ajaxSetup: function(e, t) {
                        return t ? mt(mt(e, g.ajaxSettings), t) : mt(g.ajaxSettings, e)
                    },
                    ajaxPrefilter: pt(lt),
                    ajaxTransport: pt(ut),
                    ajax: function(e, t) {
                        "object" == typeof e && (t = e,
                        e = void 0),
                        t = t || {};
                        var n, r, i, o, a, s, l, u, c = g.ajaxSetup({}, t), f = c.context || c, d = c.context && (f.nodeType || f.jquery) ? g(f) : g.event, p = g.Deferred(), h = g.Callbacks("once memory"), m = c.statusCode || {}, v = {}, y = {}, b = 0, x = "canceled", w = {
                            readyState: 0,
                            getResponseHeader: function(e) {
                                var t;
                                if (2 === b) {
                                    if (!o)
                                        for (o = {}; t = it.exec(i); )
                                            o[t[1].toLowerCase()] = t[2];
                                    t = o[e.toLowerCase()]
                                }
                                return null == t ? null : t
                            },
                            getAllResponseHeaders: function() {
                                return 2 === b ? i : null
                            },
                            setRequestHeader: function(e, t) {
                                var n = e.toLowerCase();
                                return b || (e = y[n] = y[n] || e,
                                v[e] = t),
                                this
                            },
                            overrideMimeType: function(e) {
                                return b || (c.mimeType = e),
                                this
                            },
                            statusCode: function(e) {
                                var t;
                                if (e)
                                    if (2 > b)
                                        for (t in e)
                                            m[t] = [m[t], e[t]];
                                    else
                                        w.always(e[w.status]);
                                return this
                            },
                            abort: function(e) {
                                var t = e || x;
                                return n && n.abort(t),
                                T(0, t),
                                this
                            }
                        };
                        if (p.promise(w).complete = h.add,
                        w.success = w.done,
                        w.error = w.fail,
                        c.url = ((e || c.url || ft) + "").replace(nt, "").replace(at, dt[1] + "//"),
                        c.type = t.method || t.type || c.method || c.type,
                        c.dataTypes = g.trim(c.dataType || "*").toLowerCase().match(q) || [""],
                        null == c.crossDomain && (s = st.exec(c.url.toLowerCase()),
                        c.crossDomain = !(!s || s[1] === dt[1] && s[2] === dt[2] && (s[3] || ("http:" === s[1] ? "80" : "443")) === (dt[3] || ("http:" === dt[1] ? "80" : "443")))),
                        c.data && c.processData && "string" != typeof c.data && (c.data = g.param(c.data, c.traditional)),
                        ht(lt, c, t, w),
                        2 === b)
                            return w;
                        for (u in (l = g.event && c.global) && 0 == g.active++ && g.event.trigger("ajaxStart"),
                        c.type = c.type.toUpperCase(),
                        c.hasContent = !ot.test(c.type),
                        r = c.url,
                        c.hasContent || (c.data && (r = c.url += (tt.test(r) ? "&" : "?") + c.data,
                        delete c.data),
                        !1 === c.cache && (c.url = rt.test(r) ? r.replace(rt, "$1_=" + et++) : r + (tt.test(r) ? "&" : "?") + "_=" + et++)),
                        c.ifModified && (g.lastModified[r] && w.setRequestHeader("If-Modified-Since", g.lastModified[r]),
                        g.etag[r] && w.setRequestHeader("If-None-Match", g.etag[r])),
                        (c.data && c.hasContent && !1 !== c.contentType || t.contentType) && w.setRequestHeader("Content-Type", c.contentType),
                        w.setRequestHeader("Accept", c.dataTypes[0] && c.accepts[c.dataTypes[0]] ? c.accepts[c.dataTypes[0]] + ("*" !== c.dataTypes[0] ? ", " + ct + "; q=0.01" : "") : c.accepts["*"]),
                        c.headers)
                            w.setRequestHeader(u, c.headers[u]);
                        if (c.beforeSend && (!1 === c.beforeSend.call(f, w, c) || 2 === b))
                            return w.abort();
                        for (u in x = "abort",
                        {
                            success: 1,
                            error: 1,
                            complete: 1
                        })
                            w[u](c[u]);
                        if (n = ht(ut, c, t, w)) {
                            w.readyState = 1,
                            l && d.trigger("ajaxSend", [w, c]),
                            c.async && c.timeout > 0 && (a = setTimeout((function() {
                                w.abort("timeout")
                            }
                            ), c.timeout));
                            try {
                                b = 1,
                                n.send(v, T)
                            } catch (e) {
                                if (!(2 > b))
                                    throw e;
                                T(-1, e)
                            }
                        } else
                            T(-1, "No Transport");
                        function T(e, t, o, s) {
                            var u, v, y, x, T, k = t;
                            2 !== b && (b = 2,
                            a && clearTimeout(a),
                            n = void 0,
                            i = s || "",
                            w.readyState = e > 0 ? 4 : 0,
                            u = e >= 200 && 300 > e || 304 === e,
                            o && (x = function(e, t, n) {
                                for (var r, i, o, a, s = e.contents, l = e.dataTypes; "*" === l[0]; )
                                    l.shift(),
                                    void 0 === r && (r = e.mimeType || t.getResponseHeader("Content-Type"));
                                if (r)
                                    for (i in s)
                                        if (s[i] && s[i].test(r)) {
                                            l.unshift(i);
                                            break
                                        }
                                if (l[0]in n)
                                    o = l[0];
                                else {
                                    for (i in n) {
                                        if (!l[0] || e.converters[i + " " + l[0]]) {
                                            o = i;
                                            break
                                        }
                                        a || (a = i)
                                    }
                                    o = o || a
                                }
                                return o ? (o !== l[0] && l.unshift(o),
                                n[o]) : void 0
                            }(c, w, o)),
                            x = function(e, t, n, r) {
                                var i, o, a, s, l, u = {}, c = e.dataTypes.slice();
                                if (c[1])
                                    for (a in e.converters)
                                        u[a.toLowerCase()] = e.converters[a];
                                for (o = c.shift(); o; )
                                    if (e.responseFields[o] && (n[e.responseFields[o]] = t),
                                    !l && r && e.dataFilter && (t = e.dataFilter(t, e.dataType)),
                                    l = o,
                                    o = c.shift())
                                        if ("*" === o)
                                            o = l;
                                        else if ("*" !== l && l !== o) {
                                            if (!(a = u[l + " " + o] || u["* " + o]))
                                                for (i in u)
                                                    if ((s = i.split(" "))[1] === o && (a = u[l + " " + s[0]] || u["* " + s[0]])) {
                                                        !0 === a ? a = u[i] : !0 !== u[i] && (o = s[0],
                                                        c.unshift(s[1]));
                                                        break
                                                    }
                                            if (!0 !== a)
                                                if (a && e.throws)
                                                    t = a(t);
                                                else
                                                    try {
                                                        t = a(t)
                                                    } catch (e) {
                                                        return {
                                                            state: "parsererror",
                                                            error: a ? e : "No conversion from " + l + " to " + o
                                                        }
                                                    }
                                        }
                                return {
                                    state: "success",
                                    data: t
                                }
                            }(c, x, w, u),
                            u ? (c.ifModified && ((T = w.getResponseHeader("Last-Modified")) && (g.lastModified[r] = T),
                            (T = w.getResponseHeader("etag")) && (g.etag[r] = T)),
                            204 === e || "HEAD" === c.type ? k = "nocontent" : 304 === e ? k = "notmodified" : (k = x.state,
                            v = x.data,
                            u = !(y = x.error))) : (y = k,
                            (e || !k) && (k = "error",
                            0 > e && (e = 0))),
                            w.status = e,
                            w.statusText = (t || k) + "",
                            u ? p.resolveWith(f, [v, k, w]) : p.rejectWith(f, [w, k, y]),
                            w.statusCode(m),
                            m = void 0,
                            l && d.trigger(u ? "ajaxSuccess" : "ajaxError", [w, c, u ? v : y]),
                            h.fireWith(f, [w, k]),
                            l && (d.trigger("ajaxComplete", [w, c]),
                            --g.active || g.event.trigger("ajaxStop")))
                        }
                        return w
                    },
                    getJSON: function(e, t, n) {
                        return g.get(e, t, n, "json")
                    },
                    getScript: function(e, t) {
                        return g.get(e, void 0, t, "script")
                    }
                }),
                g.each(["get", "post"], (function(e, t) {
                    g[t] = function(e, n, r, i) {
                        return g.isFunction(n) && (i = i || r,
                        r = n,
                        n = void 0),
                        g.ajax({
                            url: e,
                            type: t,
                            dataType: i,
                            data: n,
                            success: r
                        })
                    }
                }
                )),
                g._evalUrl = function(e) {
                    return g.ajax({
                        url: e,
                        type: "GET",
                        dataType: "script",
                        async: !1,
                        global: !1,
                        throws: !0
                    })
                }
                ,
                g.fn.extend({
                    wrapAll: function(e) {
                        var t;
                        return g.isFunction(e) ? this.each((function(t) {
                            g(this).wrapAll(e.call(this, t))
                        }
                        )) : (this[0] && (t = g(e, this[0].ownerDocument).eq(0).clone(!0),
                        this[0].parentNode && t.insertBefore(this[0]),
                        t.map((function() {
                            for (var e = this; e.firstElementChild; )
                                e = e.firstElementChild;
                            return e
                        }
                        )).append(this)),
                        this)
                    },
                    wrapInner: function(e) {
                        return this.each(g.isFunction(e) ? function(t) {
                            g(this).wrapInner(e.call(this, t))
                        }
                        : function() {
                            var t = g(this)
                              , n = t.contents();
                            n.length ? n.wrapAll(e) : t.append(e)
                        }
                        )
                    },
                    wrap: function(e) {
                        var t = g.isFunction(e);
                        return this.each((function(n) {
                            g(this).wrapAll(t ? e.call(this, n) : e)
                        }
                        ))
                    },
                    unwrap: function() {
                        return this.parent().each((function() {
                            g.nodeName(this, "body") || g(this).replaceWith(this.childNodes)
                        }
                        )).end()
                    }
                }),
                g.expr.filters.hidden = function(e) {
                    return e.offsetWidth <= 0 && e.offsetHeight <= 0
                }
                ,
                g.expr.filters.visible = function(e) {
                    return !g.expr.filters.hidden(e)
                }
                ;
                var gt = /%20/g
                  , vt = /\[\]$/
                  , yt = /\r?\n/g
                  , bt = /^(?:submit|button|image|reset|file)$/i
                  , xt = /^(?:input|select|textarea|keygen)/i;
                function wt(e, t, n, r) {
                    var i;
                    if (g.isArray(t))
                        g.each(t, (function(t, i) {
                            n || vt.test(e) ? r(e, i) : wt(e + "[" + ("object" == typeof i ? t : "") + "]", i, n, r)
                        }
                        ));
                    else if (n || "object" !== g.type(t))
                        r(e, t);
                    else
                        for (i in t)
                            wt(e + "[" + i + "]", t[i], n, r)
                }
                g.param = function(e, t) {
                    var n, r = [], i = function(e, t) {
                        t = g.isFunction(t) ? t() : null == t ? "" : t,
                        r[r.length] = encodeURIComponent(e) + "=" + encodeURIComponent(t)
                    };
                    if (void 0 === t && (t = g.ajaxSettings && g.ajaxSettings.traditional),
                    g.isArray(e) || e.jquery && !g.isPlainObject(e))
                        g.each(e, (function() {
                            i(this.name, this.value)
                        }
                        ));
                    else
                        for (n in e)
                            wt(n, e[n], t, i);
                    return r.join("&").replace(gt, "+")
                }
                ,
                g.fn.extend({
                    serialize: function() {
                        return g.param(this.serializeArray())
                    },
                    serializeArray: function() {
                        return this.map((function() {
                            var e = g.prop(this, "elements");
                            return e ? g.makeArray(e) : this
                        }
                        )).filter((function() {
                            var e = this.type;
                            return this.name && !g(this).is(":disabled") && xt.test(this.nodeName) && !bt.test(e) && (this.checked || !X.test(e))
                        }
                        )).map((function(e, t) {
                            var n = g(this).val();
                            return null == n ? null : g.isArray(n) ? g.map(n, (function(e) {
                                return {
                                    name: t.name,
                                    value: e.replace(yt, "\r\n")
                                }
                            }
                            )) : {
                                name: t.name,
                                value: n.replace(yt, "\r\n")
                            }
                        }
                        )).get()
                    }
                }),
                g.ajaxSettings.xhr = function() {
                    try {
                        return new XMLHttpRequest
                    } catch (e) {}
                }
                ;
                var Tt = 0
                  , kt = {}
                  , Ct = {
                    0: 200,
                    1223: 204
                }
                  , Et = g.ajaxSettings.xhr();
                r.attachEvent && r.attachEvent("onunload", (function() {
                    for (var e in kt)
                        kt[e]()
                }
                )),
                p.cors = !!Et && "withCredentials"in Et,
                p.ajax = Et = !!Et,
                g.ajaxTransport((function(e) {
                    var t;
                    return p.cors || Et && !e.crossDomain ? {
                        send: function(n, r) {
                            var i, o = e.xhr(), a = ++Tt;
                            if (o.open(e.type, e.url, e.async, e.username, e.password),
                            e.xhrFields)
                                for (i in e.xhrFields)
                                    o[i] = e.xhrFields[i];
                            for (i in e.mimeType && o.overrideMimeType && o.overrideMimeType(e.mimeType),
                            e.crossDomain || n["X-Requested-With"] || (n["X-Requested-With"] = "XMLHttpRequest"),
                            n)
                                o.setRequestHeader(i, n[i]);
                            t = function(e) {
                                return function() {
                                    t && (delete kt[a],
                                    t = o.onload = o.onerror = null,
                                    "abort" === e ? o.abort() : "error" === e ? r(o.status, o.statusText) : r(Ct[o.status] || o.status, o.statusText, "string" == typeof o.responseText ? {
                                        text: o.responseText
                                    } : void 0, o.getAllResponseHeaders()))
                                }
                            }
                            ,
                            o.onload = t(),
                            o.onerror = t("error"),
                            t = kt[a] = t("abort");
                            try {
                                o.send(e.hasContent && e.data || null)
                            } catch (e) {
                                if (t)
                                    throw e
                            }
                        },
                        abort: function() {
                            t && t()
                        }
                    } : void 0
                }
                )),
                g.ajaxSetup({
                    accepts: {
                        script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
                    },
                    contents: {
                        script: /(?:java|ecma)script/
                    },
                    converters: {
                        "text script": function(e) {
                            return g.globalEval(e),
                            e
                        }
                    }
                }),
                g.ajaxPrefilter("script", (function(e) {
                    void 0 === e.cache && (e.cache = !1),
                    e.crossDomain && (e.type = "GET")
                }
                )),
                g.ajaxTransport("script", (function(e) {
                    var t, n;
                    if (e.crossDomain)
                        return {
                            send: function(r, i) {
                                t = g("<script>").prop({
                                    async: !0,
                                    charset: e.scriptCharset,
                                    src: e.url
                                }).on("load error", n = function(e) {
                                    t.remove(),
                                    n = null,
                                    e && i("error" === e.type ? 404 : 200, e.type)
                                }
                                ),
                                h.head.appendChild(t[0])
                            },
                            abort: function() {
                                n && n()
                            }
                        }
                }
                ));
                var St = []
                  , At = /(=)\?(?=&|$)|\?\?/;
                g.ajaxSetup({
                    jsonp: "callback",
                    jsonpCallback: function() {
                        var e = St.pop() || g.expando + "_" + et++;
                        return this[e] = !0,
                        e
                    }
                }),
                g.ajaxPrefilter("json jsonp", (function(e, t, n) {
                    var i, o, a, s = !1 !== e.jsonp && (At.test(e.url) ? "url" : "string" == typeof e.data && !(e.contentType || "").indexOf("application/x-www-form-urlencoded") && At.test(e.data) && "data");
                    return s || "jsonp" === e.dataTypes[0] ? (i = e.jsonpCallback = g.isFunction(e.jsonpCallback) ? e.jsonpCallback() : e.jsonpCallback,
                    s ? e[s] = e[s].replace(At, "$1" + i) : !1 !== e.jsonp && (e.url += (tt.test(e.url) ? "&" : "?") + e.jsonp + "=" + i),
                    e.converters["script json"] = function() {
                        return a || g.error(i + " was not called"),
                        a[0]
                    }
                    ,
                    e.dataTypes[0] = "json",
                    o = r[i],
                    r[i] = function() {
                        a = arguments
                    }
                    ,
                    n.always((function() {
                        r[i] = o,
                        e[i] && (e.jsonpCallback = t.jsonpCallback,
                        St.push(i)),
                        a && g.isFunction(o) && o(a[0]),
                        a = o = void 0
                    }
                    )),
                    "script") : void 0
                }
                )),
                g.parseHTML = function(e, t, n) {
                    if (!e || "string" != typeof e)
                        return null;
                    "boolean" == typeof t && (n = t,
                    t = !1),
                    t = t || h;
                    var r = C.exec(e)
                      , i = !n && [];
                    return r ? [t.createElement(r[1])] : (r = g.buildFragment([e], t, i),
                    i && i.length && g(i).remove(),
                    g.merge([], r.childNodes))
                }
                ;
                var Dt = g.fn.load;
                g.fn.load = function(e, t, n) {
                    if ("string" != typeof e && Dt)
                        return Dt.apply(this, arguments);
                    var r, i, o, a = this, s = e.indexOf(" ");
                    return s >= 0 && (r = g.trim(e.slice(s)),
                    e = e.slice(0, s)),
                    g.isFunction(t) ? (n = t,
                    t = void 0) : t && "object" == typeof t && (i = "POST"),
                    a.length > 0 && g.ajax({
                        url: e,
                        type: i,
                        dataType: "html",
                        data: t
                    }).done((function(e) {
                        o = arguments,
                        a.html(r ? g("<div>").append(g.parseHTML(e)).find(r) : e)
                    }
                    )).complete(n && function(e, t) {
                        a.each(n, o || [e.responseText, t, e])
                    }
                    ),
                    this
                }
                ,
                g.each(["ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend"], (function(e, t) {
                    g.fn[t] = function(e) {
                        return this.on(t, e)
                    }
                }
                )),
                g.expr.filters.animated = function(e) {
                    return g.grep(g.timers, (function(t) {
                        return e === t.elem
                    }
                    )).length
                }
                ;
                var Nt = r.document.documentElement;
                function jt(e) {
                    return g.isWindow(e) ? e : 9 === e.nodeType && e.defaultView
                }
                g.offset = {
                    setOffset: function(e, t, n) {
                        var r, i, o, a, s, l, u = g.css(e, "position"), c = g(e), f = {};
                        "static" === u && (e.style.position = "relative"),
                        s = c.offset(),
                        o = g.css(e, "top"),
                        l = g.css(e, "left"),
                        ("absolute" === u || "fixed" === u) && (o + l).indexOf("auto") > -1 ? (a = (r = c.position()).top,
                        i = r.left) : (a = parseFloat(o) || 0,
                        i = parseFloat(l) || 0),
                        g.isFunction(t) && (t = t.call(e, n, s)),
                        null != t.top && (f.top = t.top - s.top + a),
                        null != t.left && (f.left = t.left - s.left + i),
                        "using"in t ? t.using.call(e, f) : c.css(f)
                    }
                },
                g.fn.extend({
                    offset: function(e) {
                        if (arguments.length)
                            return void 0 === e ? this : this.each((function(t) {
                                g.offset.setOffset(this, e, t)
                            }
                            ));
                        var t, n, r = this[0], i = {
                            top: 0,
                            left: 0
                        }, o = r && r.ownerDocument;
                        return o ? (t = o.documentElement,
                        g.contains(t, r) ? (typeof r.getBoundingClientRect !== V && (i = r.getBoundingClientRect()),
                        n = jt(o),
                        {
                            top: i.top + n.pageYOffset - t.clientTop,
                            left: i.left + n.pageXOffset - t.clientLeft
                        }) : i) : void 0
                    },
                    position: function() {
                        if (this[0]) {
                            var e, t, n = this[0], r = {
                                top: 0,
                                left: 0
                            };
                            return "fixed" === g.css(n, "position") ? t = n.getBoundingClientRect() : (e = this.offsetParent(),
                            t = this.offset(),
                            g.nodeName(e[0], "html") || (r = e.offset()),
                            r.top += g.css(e[0], "borderTopWidth", !0),
                            r.left += g.css(e[0], "borderLeftWidth", !0)),
                            {
                                top: t.top - r.top - g.css(n, "marginTop", !0),
                                left: t.left - r.left - g.css(n, "marginLeft", !0)
                            }
                        }
                    },
                    offsetParent: function() {
                        return this.map((function() {
                            for (var e = this.offsetParent || Nt; e && !g.nodeName(e, "html") && "static" === g.css(e, "position"); )
                                e = e.offsetParent;
                            return e || Nt
                        }
                        ))
                    }
                }),
                g.each({
                    scrollLeft: "pageXOffset",
                    scrollTop: "pageYOffset"
                }, (function(e, t) {
                    var n = "pageYOffset" === t;
                    g.fn[e] = function(i) {
                        return M(this, (function(e, i, o) {
                            var a = jt(e);
                            return void 0 === o ? a ? a[t] : e[i] : void (a ? a.scrollTo(n ? r.pageXOffset : o, n ? o : r.pageYOffset) : e[i] = o)
                        }
                        ), e, i, arguments.length, null)
                    }
                }
                )),
                g.each(["top", "left"], (function(e, t) {
                    g.cssHooks[t] = Ee(p.pixelPosition, (function(e, n) {
                        return n ? (n = Ce(e, t),
                        Te.test(n) ? g(e).position()[t] + "px" : n) : void 0
                    }
                    ))
                }
                )),
                g.each({
                    Height: "height",
                    Width: "width"
                }, (function(e, t) {
                    g.each({
                        padding: "inner" + e,
                        content: t,
                        "": "outer" + e
                    }, (function(n, r) {
                        g.fn[r] = function(r, i) {
                            var o = arguments.length && (n || "boolean" != typeof r)
                              , a = n || (!0 === r || !0 === i ? "margin" : "border");
                            return M(this, (function(t, n, r) {
                                var i;
                                return g.isWindow(t) ? t.document.documentElement["client" + e] : 9 === t.nodeType ? (i = t.documentElement,
                                Math.max(t.body["scroll" + e], i["scroll" + e], t.body["offset" + e], i["offset" + e], i["client" + e])) : void 0 === r ? g.css(t, n, a) : g.style(t, n, r, a)
                            }
                            ), t, o ? r : void 0, o, null)
                        }
                    }
                    ))
                }
                )),
                g.fn.size = function() {
                    return this.length
                }
                ,
                g.fn.andSelf = g.fn.addBack,
                void 0 === (n = function() {
                    return g
                }
                .apply(t, [])) || (e.exports = n);
                var Lt = r.jQuery
                  , Ot = r.$;
                return g.noConflict = function(e) {
                    return r.$ === g && (r.$ = Ot),
                    e && r.jQuery === g && (r.jQuery = Lt),
                    g
                }
                ,
                typeof i === V && (r.jQuery = r.$ = g),
                g
            }
            ,
            "object" == typeof e.exports ? e.exports = r.document ? i(r, !0) : function(e) {
                if (!e.document)
                    throw new Error("jQuery requires a window with a document");
                return i(e)
            }
            : i(r)
        },
        127: ()=>{
            var e, t;
            _0x4c28 = ["18|38|15|2", "ucisR", "wWwRM", "LzcOo", "yWGcu", "PlAEw", "ihcci", "hBKtU", "rvloG", "xcQTI", "uhJgH", "vRqUp", "EQEzR", "abc", "QgSUn", "0|45|44|19", "WMqBp", "koePJ", "jGSEC", "IKbhW", "wEOgn", "|49|71|11|", "xgzfr", "ABCDEF", "DdHPB", "aFxRD", "sFtiw", "concat", "YhaCC", "YVBwM", "abYok", "2|28|6|36|", "NLOsy", "bRLIN", "xGAWc", "length", "zYRlD", "14|67|61|3", "bolvy", "pagBT", "mdsJQ", "4|69|41|26", "kaXPV", "IWxBE", "pviAr", "5|0|2", "lvwPz", "YcDFe", "yGmJD", "FcYqi", "AAZoR", "|46|5|3|50", "PnITs", "ABCDEFGHIJ", "charCodeAt", "KLMNOPQRST", "prrXX", "FDiNG", "split", "oBesn", "9|24|10|56", "VaXsK", "fromCharCo", "FDfcp", "rrdPR", "HHkBN", "89+/", "mfuQZ", "PbrnX", "FcXlo", "rNapo", "fEXNi", "qtIDJ", "60|53|21|5", "Rtsed", "SUrST", "nsaps", "vyNVU", "2|29|23|64", "0|43|57|4|", "NNXUu", "nCrbn", "wQPIq", "XBcOb", "39|40|47|6", "ljkOt", "yMPhx", "TXzzv", "0123456789", "fmdcS", "iXQwu", "grCxb", "3|6|1|4|7|", "wKeAM", "Iekey", "opqrstuvwx", "|7|17", "BQgZQ", "BtzmV", "jZUAt", "HYhpy", "Yvoqt", "VyzBI", "NNVLf", "dbmfK", "0|58|16|32", "UAFHv", "WNIsZ", "2|1|4|3|5|", "JFqRJ", "zObVA", "d24fb0d696", "XfWkD", "MFmWH", "lZISZ", "WzbFA", "kaQlD", "3f7d28e17f", "eSwEi", "YpeFX", "kZhzK", "KxKIe", "LAIPf", "LjyKQ", "YLwOK", "iqfMz", "51|8|0|65|", "JRihE", "nqEyg", "|37|22|27|", "ZXsFi", "goEwl", "|31|63|48|", "wvVCN", "wnDlW", "Myvqp", "UlhBp", "fwCDC", "charAt", "Lmhlz", "WQCAS", "UXeVn", "KIXRL", "HiEZt", "WNzfT", "lNWda", "tsNzQ"],
            e = _0x4c28,
            t = 368,
            function(t) {
                for (; --t; )
                    e.push(e.shift())
            }(++t);
            var n = function(e, t) {
                return _0x4c28[e -= 0]
            };
            window.md5 = function(e) {
                var t = n
                  , r = {
                    fEXNi: function(e, t) {
                        return e(t)
                    },
                    LzcOo: function(e, t, n) {
                        return e(t, n)
                    }
                };
                r[t(3)] = function(e, t) {
                    return e(t)
                }
                ,
                r.wEOgn = function(e, t, n) {
                    return e(t, n)
                }
                ,
                r[t(120)] = function(e, t, n) {
                    return e(t, n)
                }
                ,
                r[t(69)] = function(e, t) {
                    return e == t
                }
                ,
                r[t(109)] = function(e, t) {
                    return e(t)
                }
                ,
                r[t(112)] = t(86),
                r.oBesn = "900150983c" + t(37) + t(43) + "72",
                r[t(70)] = t(18) + t(118),
                r[t(16)] = function(e, t) {
                    return e < t
                }
                ,
                r[t(2)] = t(110) + t(5) + t(133) + "|55|13|12|" + t(146) + t(114) + t(94) + "35|68|33|4" + t(104) + t(52) + t(73) + t(88) + t(55) + "25|34|1|2|" + t(10) + t(4) + t(124) + t(58) + "52|59|66|7" + t(31) + t(22),
                r[t(53)] = function(e, t, n, r, i, o, a, s) {
                    return e(t, n, r, i, o, a, s)
                }
                ,
                r[t(35)] = function(e, t) {
                    return e + t
                }
                ,
                r[t(141)] = function(e, t, n, r, i, o, a, s) {
                    return e(t, n, r, i, o, a, s)
                }
                ,
                r[t(91)] = function(e, t, n, r, i, o, a, s) {
                    return e(t, n, r, i, o, a, s)
                }
                ,
                r[t(65)] = function(e, t) {
                    return e + t
                }
                ,
                r[t(38)] = function(e, t, n, r, i, o, a, s) {
                    return e(t, n, r, i, o, a, s)
                }
                ,
                r[t(19)] = function(e, t) {
                    return e + t
                }
                ,
                r[t(117)] = function(e, t, n) {
                    return e(t, n)
                }
                ,
                r[t(92)] = function(e, t) {
                    return e + t
                }
                ,
                r[t(82)] = function(e, t) {
                    return e + t
                }
                ,
                r[t(111)] = function(e, t, n) {
                    return e(t, n)
                }
                ,
                r[t(78)] = function(e, t) {
                    return e + t
                }
                ,
                r.lZISZ = function(e, t, n, r, i, o, a, s) {
                    return e(t, n, r, i, o, a, s)
                }
                ,
                r.Iekey = function(e, t, n, r, i, o, a, s) {
                    return e(t, n, r, i, o, a, s)
                }
                ,
                r.AAZoR = function(e, t) {
                    return e + t
                }
                ,
                r[t(67)] = function(e, t, n, r, i, o, a, s) {
                    return e(t, n, r, i, o, a, s)
                }
                ,
                r.UlhBp = function(e, t) {
                    return e + t
                }
                ,
                r.yMPhx = function(e, t, n, r, i, o, a, s) {
                    return e(t, n, r, i, o, a, s)
                }
                ,
                r[t(138)] = function(e, t) {
                    return e + t
                }
                ,
                r[t(121)] = function(e, t) {
                    return e + t
                }
                ,
                r[t(98)] = function(e, t, n) {
                    return e(t, n)
                }
                ,
                r.kHuTw = function(e, t, n, r, i, o, a, s) {
                    return e(t, n, r, i, o, a, s)
                }
                ,
                r[t(50)] = function(e, t, n, r, i, o, a, s) {
                    return e(t, n, r, i, o, a, s)
                }
                ,
                r[t(142)] = function(e, t, n, r, i, o, a, s) {
                    return e(t, n, r, i, o, a, s)
                }
                ,
                r[t(87)] = function(e, t) {
                    return e + t
                }
                ,
                r[t(90)] = function(e, t) {
                    return e + t
                }
                ,
                r[t(59)] = function(e, t, n, r, i, o, a, s) {
                    return e(t, n, r, i, o, a, s)
                }
                ,
                r[t(28)] = function(e, t) {
                    return e + t
                }
                ,
                r[t(119)] = function(e, t) {
                    return e + t
                }
                ,
                r.YpeFX = function(e, t) {
                    return e + t
                }
                ,
                r[t(7)] = function(e, t, n, r, i, o, a, s) {
                    return e(t, n, r, i, o, a, s)
                }
                ,
                r.prrXX = function(e, t) {
                    return e + t
                }
                ,
                r.kaQlD = function(e, t) {
                    return e + t
                }
                ,
                r.qtIDJ = function(e, t, n, r, i, o, a, s) {
                    return e(t, n, r, i, o, a, s)
                }
                ,
                r.xGAWc = function(e, t) {
                    return e + t
                }
                ,
                r[t(134)] = function(e, t, n, r, i, o, a, s) {
                    return e(t, n, r, i, o, a, s)
                }
                ,
                r[t(89)] = function(e, t) {
                    return e + t
                }
                ,
                r[t(15)] = function(e, t, n, r, i, o, a, s) {
                    return e(t, n, r, i, o, a, s)
                }
                ,
                r[t(9)] = function(e, t) {
                    return e + t
                }
                ,
                r[t(56)] = function(e, t) {
                    return e + t
                }
                ,
                r[t(6)] = function(e, t, n, r, i, o, a, s) {
                    return e(t, n, r, i, o, a, s)
                }
                ,
                r[t(32)] = function(e, t) {
                    return e + t
                }
                ,
                r[t(99)] = function(e, t, n, r, i, o, a, s) {
                    return e(t, n, r, i, o, a, s)
                }
                ,
                r[t(39)] = function(e, t) {
                    return e + t
                }
                ,
                r[t(113)] = function(e, t, n, r, i, o, a, s) {
                    return e(t, n, r, i, o, a, s)
                }
                ,
                r[t(106)] = function(e, t, n, r, i, o, a, s) {
                    return e(t, n, r, i, o, a, s)
                }
                ,
                r[t(66)] = function(e, t, n, r, i, o, a, s) {
                    return e(t, n, r, i, o, a, s)
                }
                ,
                r.TXzzv = function(e, t) {
                    return e + t
                }
                ,
                r.NNVLf = function(e, t, n, r, i, o, a, s) {
                    return e(t, n, r, i, o, a, s)
                }
                ,
                r[t(79)] = function(e, t) {
                    return e + t
                }
                ,
                r[t(1)] = function(e, t, n, r, i, o, a, s) {
                    return e(t, n, r, i, o, a, s)
                }
                ,
                r[t(81)] = function(e, t) {
                    return e + t
                }
                ,
                r.MXnIN = function(e, t) {
                    return e >> t
                }
                ,
                r[t(23)] = function(e, t) {
                    return e << t
                }
                ,
                r.nqEyg = function(e, t) {
                    return e % t
                }
                ,
                r.kaXPV = function(e, t) {
                    return e >>> t
                }
                ,
                r[t(24)] = function(e, t, n) {
                    return e(t, n)
                }
                ,
                r[t(44)] = function(e, t, n) {
                    return e(t, n)
                }
                ,
                r[t(30)] = function(e, t, n) {
                    return e(t, n)
                }
                ,
                r[t(143)] = function(e, t) {
                    return e | t
                }
                ,
                r[t(101)] = function(e, t) {
                    return e & t
                }
                ,
                r[t(122)] = function(e, t, n, r, i, o, a) {
                    return e(t, n, r, i, o, a)
                }
                ,
                r.ZpUiH = function(e, t) {
                    return e & t
                }
                ,
                r[t(72)] = function(e, t) {
                    return e ^ t
                }
                ,
                r[t(130)] = function(e, t) {
                    return e ^ t
                }
                ,
                r[t(41)] = function(e, t) {
                    return e | t
                }
                ,
                r[t(116)] = function(e, t) {
                    return e > t
                }
                ,
                r[t(80)] = function(e, t) {
                    return e(t)
                }
                ,
                r[t(33)] = function(e, t, n) {
                    return e(t, n)
                }
                ,
                r[t(83)] = function(e, t) {
                    return e(t)
                }
                ,
                r[t(60)] = function(e, t) {
                    return e + t
                }
                ,
                r.FDfcp = function(e, t) {
                    return e * t
                }
                ,
                r[t(95)] = function(e, t) {
                    return e + t
                }
                ,
                r[t(51)] = function(e, t) {
                    return e & t
                }
                ,
                r.DdHPB = function(e, t) {
                    return e >> t
                }
                ,
                r.abYok = function(e, t) {
                    return e | t
                }
                ,
                r[t(84)] = function(e, t) {
                    return e << t
                }
                ,
                r[t(105)] = function(e, t) {
                    return e & t
                }
                ,
                r[t(8)] = function(e, t) {
                    return e - t
                }
                ,
                r[t(137)] = function(e) {
                    return e()
                }
                ,
                r.YVBwM = function(e, t) {
                    return e << t
                }
                ,
                r[t(27)] = function(e, t) {
                    return e & t
                }
                ,
                r[t(26)] = function(e, t) {
                    return e / t
                }
                ,
                r[t(74)] = function(e, t) {
                    return e * t
                }
                ,
                r[t(49)] = t(14) + "abcdef",
                r[t(36)] = function(e, t) {
                    return e >> t
                }
                ,
                r[t(46)] = function(e, t) {
                    return e + t
                }
                ,
                r[t(75)] = function(e, t) {
                    return e >> t
                }
                ,
                r[t(47)] = function(e, t) {
                    return e * t
                }
                ,
                r[t(11)] = t(126) + t(128) + "UVWXYZabcdefghijklmn" + t(21) + "yz01234567" + t(139),
                r[t(63)] = function(e, t) {
                    return e * t
                }
                ,
                r.KIXRL = function(e, t) {
                    return e << t
                }
                ,
                r[t(57)] = function(e, t) {
                    return e % t
                }
                ,
                r[t(77)] = function(e, t) {
                    return e << t
                }
                ,
                r[t(71)] = function(e, t) {
                    return e >> t
                }
                ,
                r.jZUAt = function(e, t) {
                    return e >> t
                }
                ,
                r[t(48)] = function(e, t) {
                    return e + t
                }
                ,
                r[t(17)] = function(e, t) {
                    return e % t
                }
                ,
                r[t(85)] = function(e, t) {
                    return e * t
                }
                ,
                r[t(61)] = function(e, t) {
                    return e < t
                }
                ,
                r.mfuQZ = function(e, t) {
                    return e + t
                }
                ,
                r[t(125)] = function(e, t) {
                    return e * t
                }
                ,
                r[t(0)] = function(e, t) {
                    return e(t)
                }
                ;
                var i = r;
                function o(e, n) {
                    for (var r = t, o = i.WNzfT[r(131)]("|"), a = 0; ; ) {
                        switch (o[a++]) {
                        case "0":
                            for (var d = 0; i.iXQwu(d, e.length); d += 16)
                                for (var p = i[r(2)][r(131)]("|"), h = 0; ; ) {
                                    switch (p[h++]) {
                                    case "0":
                                        w = i[r(53)](l, w, b, x, T, e[d + 2], 9, -51403784);
                                        continue;
                                    case "1":
                                        x = u(x, T, w, b, e[d + 6], 23, 76029189);
                                        continue;
                                    case "2":
                                        b = i[r(53)](u, b, x, T, w, e[i.JFqRJ(d, 9)], 4, -640364487);
                                        continue;
                                    case "3":
                                        T = i[r(141)](c, T, w, b, x, e[d + 10], 15, -1051523);
                                        continue;
                                    case "4":
                                        T = s(T, w, b, x, e[i.JFqRJ(d, 2)], 17, 606105819);
                                        continue;
                                    case "5":
                                        w = i[r(91)](c, w, b, x, T, e[i[r(65)](d, 3)], 10, -1894446606);
                                        continue;
                                    case "6":
                                        w = i.XfWkD(l, w, b, x, T, e[i.wKeAM(d, 14)], 9, -1019803690);
                                        continue;
                                    case "7":
                                        T = i.pviAr(f, T, v);
                                        continue;
                                    case "8":
                                        b = i.XfWkD(l, b, x, T, w, e[i[r(92)](d, 13)], 5, -1444681467);
                                        continue;
                                    case "9":
                                        x = i[r(38)](s, x, T, w, b, e[i[r(82)](d, 3)], 22, -1044525330);
                                        continue;
                                    case "10":
                                        w = s(w, b, x, T, e[i[r(82)](d, 5)], 12, 1200080426);
                                        continue;
                                    case "11":
                                        x = i[r(38)](l, x, T, w, b, e[i[r(82)](d, 0)], 20, -373897302);
                                        continue;
                                    case "12":
                                        w = i[r(38)](s, w, b, x, T, e[i[r(82)](d, 9)], 12, -1958435417);
                                        continue;
                                    case "13":
                                        b = i.XfWkD(s, b, x, T, w, e[i.xcQTI(d, 8)], 7, 1770035416);
                                        continue;
                                    case "14":
                                        var m = b;
                                        continue;
                                    case "15":
                                        w = i[r(38)](u, w, b, x, T, e[i.xcQTI(d, 8)], 11, -2022574463);
                                        continue;
                                    case "16":
                                        b = f(b, m);
                                        continue;
                                    case "17":
                                        w = i[r(111)](f, w, g);
                                        continue;
                                    case "18":
                                        x = l(x, T, w, b, e[i[r(78)](d, 12)], 20, -1921207734);
                                        continue;
                                    case "19":
                                        w = i[r(40)](u, w, b, x, T, e[d + 4], 11, 1272893353);
                                        continue;
                                    case "20":
                                        T = i[r(20)](u, T, w, b, x, e[i.PlAEw(d, 11)], 16, 1839030562);
                                        continue;
                                    case "21":
                                        b = s(b, x, T, w, e[i[r(123)](d, 12)], 7, 1804550682);
                                        continue;
                                    case "22":
                                        x = u(x, T, w, b, e[i[r(123)](d, 10)], 23, -1094730640);
                                        continue;
                                    case "23":
                                        T = i[r(67)](c, T, w, b, x, e[d + 14], 15, -1416354905);
                                        continue;
                                    case "24":
                                        b = s(b, x, T, w, e[i[r(123)](d, 4)], 7, -176418897);
                                        continue;
                                    case "25":
                                        w = i.UXeVn(u, w, b, x, T, e[d + 0], 11, -358537222);
                                        continue;
                                    case "26":
                                        b = i.UXeVn(l, b, x, T, w, e[i[r(62)](d, 1)], 5, -165796510);
                                        continue;
                                    case "27":
                                        b = i.UXeVn(u, b, x, T, w, e[i[r(62)](d, 13)], 4, 681279174);
                                        continue;
                                    case "28":
                                        b = i[r(12)](l, b, x, T, w, e[i[r(138)](d, 9)], 5, 568446438);
                                        continue;
                                    case "29":
                                        w = i.yMPhx(c, w, b, x, T, e[d + 7], 10, 11261161415);
                                        continue;
                                    case "30":
                                        var g = w;
                                        continue;
                                    case "31":
                                        b = c(b, x, T, w, e[i.yGmJD(d, 8)], 6, 1873313359);
                                        continue;
                                    case "32":
                                        x = i.aFxRD(f, x, y);
                                        continue;
                                    case "33":
                                        T = i[r(12)](l, T, w, b, x, e[i[r(121)](d, 15)], 14, -660478335);
                                        continue;
                                    case "34":
                                        T = i.kHuTw(u, T, w, b, x, e[d + 3], 16, -722881979);
                                        continue;
                                    case "35":
                                        b = i[r(50)](l, b, x, T, w, e[i[r(121)](d, 5)], 5, -701520691);
                                        continue;
                                    case "36":
                                        T = l(T, w, b, x, e[i[r(121)](d, 3)], 14, -187363961);
                                        continue;
                                    case "37":
                                        T = i[r(142)](u, T, w, b, x, e[i.QgSUn(d, 7)], 16, -155497632);
                                        continue;
                                    case "38":
                                        b = i.FcXlo(u, b, x, T, w, e[i.koePJ(d, 5)], 4, -378558);
                                        continue;
                                    case "39":
                                        w = i[r(142)](u, w, b, x, T, e[i[r(90)](d, 12)], 11, -421815835);
                                        continue;
                                    case "40":
                                        T = i[r(59)](u, T, w, b, x, e[i[r(28)](d, 15)], 16, 530742520);
                                        continue;
                                    case "41":
                                        x = i.wvVCN(s, x, T, w, b, e[d + 15], 22, 1236531029);
                                        continue;
                                    case "42":
                                        x = i[r(59)](l, x, T, w, b, e[i[r(119)](d, 4)], 20, -405537848);
                                        continue;
                                    case "43":
                                        b = i[r(59)](s, b, x, T, w, e[i.lvwPz(d, 0)], 7, -680976936);
                                        continue;
                                    case "44":
                                        b = i[r(59)](u, b, x, T, w, e[i[r(45)](d, 1)], 4, -1530992060);
                                        continue;
                                    case "45":
                                        x = i.nCrbn(u, x, T, w, b, e[i[r(129)](d, 14)], 23, -35311556);
                                        continue;
                                    case "46":
                                        b = c(b, x, T, w, e[i[r(42)](d, 12)], 6, 1700485571);
                                        continue;
                                    case "47":
                                        x = i[r(7)](u, x, T, w, b, e[i.kaQlD(d, 2)], 23, -995338651);
                                        continue;
                                    case "48":
                                        T = c(T, w, b, x, e[d + 6], 15, -1560198380);
                                        continue;
                                    case "49":
                                        w = i[r(145)](l, w, b, x, T, e[i[r(107)](d, 6)], 9, -1069501632);
                                        continue;
                                    case "50":
                                        x = i[r(134)](c, x, T, w, b, e[i[r(89)](d, 1)], 21, -2054922799);
                                        continue;
                                    case "51":
                                        x = i.fmdcS(l, x, T, w, b, e[d + 8], 20, 1163531501);
                                        continue;
                                    case "52":
                                        x = i[r(15)](c, x, T, w, b, e[i[r(9)](d, 13)], 21, 1309151649);
                                        continue;
                                    case "53":
                                        x = i[r(15)](s, x, T, w, b, e[i[r(56)](d, 11)], 22, -1990404162);
                                        continue;
                                    case "54":
                                        w = i[r(6)](s, w, b, x, T, e[i[r(32)](d, 13)], 12, -40341101);
                                        continue;
                                    case "55":
                                        x = i.sFtiw(s, x, T, w, b, e[i.UAFHv(d, 7)], 22, -45705983);
                                        continue;
                                    case "56":
                                        T = i.sFtiw(s, T, w, b, x, e[i.MFmWH(d, 6)], 17, -1473231341);
                                        continue;
                                    case "57":
                                        w = i[r(99)](s, w, b, x, T, e[i.MFmWH(d, 1)], 12, -389564586);
                                        continue;
                                    case "58":
                                        x = c(x, T, w, b, e[i[r(39)](d, 9)], 21, -343485551);
                                        continue;
                                    case "59":
                                        b = i[r(113)](c, b, x, T, w, e[i[r(39)](d, 4)], 6, -145523070);
                                        continue;
                                    case "60":
                                        T = i.bRLIN(s, T, w, b, x, e[i[r(39)](d, 10)], 17, -42063);
                                        continue;
                                    case "61":
                                        var v = T;
                                        continue;
                                    case "62":
                                        b = i[r(66)](c, b, x, T, w, e[d + 0], 6, -198630844);
                                        continue;
                                    case "63":
                                        w = i[r(66)](c, w, b, x, T, e[i[r(13)](d, 15)], 10, -30611744);
                                        continue;
                                    case "64":
                                        x = c(x, T, w, b, e[d + 5], 21, -57434055);
                                        continue;
                                    case "65":
                                        T = i[r(29)](l, T, w, b, x, e[i[r(13)](d, 7)], 14, 1735328473);
                                        continue;
                                    case "66":
                                        w = i[r(29)](c, w, b, x, T, e[i[r(79)](d, 11)], 10, -1120210379);
                                        continue;
                                    case "67":
                                        var y = x;
                                        continue;
                                    case "68":
                                        w = i[r(1)](l, w, b, x, T, e[d + 10], 9, 38016083);
                                        continue;
                                    case "69":
                                        T = i[r(1)](s, T, w, b, x, e[i[r(79)](d, 14)], 17, -1502002290);
                                        continue;
                                    case "70":
                                        T = i.SUrST(c, T, w, b, x, e[i[r(79)](d, 2)], 15, 718787259);
                                        continue;
                                    case "71":
                                        T = l(T, w, b, x, e[i[r(81)](d, 11)], 14, 643717713);
                                        continue
                                    }
                                    break
                                }
                            continue;
                        case "1":
                            var b = 1732584193;
                            continue;
                        case "2":
                            return Array(b, x, T, w);
                        case "3":
                            e[i.MXnIN(n, 5)] |= i[r(23)](128, i[r(54)](n, 32));
                            continue;
                        case "4":
                            var x = -271733879;
                            continue;
                        case "5":
                            var w = 271733878;
                            continue;
                        case "6":
                            e[i.BQgZQ(i[r(115)](n + 64, 9), 4) + 14] = n;
                            continue;
                        case "7":
                            var T = -1732584194;
                            continue
                        }
                        break
                    }
                }
                function a(e, n, r, o, a, s) {
                    var l = t;
                    return f(i.BtzmV(d, i[l(44)](f, i.dbmfK(f, n, e), i[l(30)](f, o, s)), a), r)
                }
                function s(e, n, r, o, s, l, u) {
                    var c = t;
                    return a(i[c(143)](i[c(101)](n, r), i[c(101)](~n, o)), e, n, s, l, u)
                }
                function l(e, n, r, o, s, l, u) {
                    var c = t;
                    return i[c(122)](a, i[c(143)](i.ZpUiH(n, o), i.ZpUiH(r, ~o)), e, n, s, l, u)
                }
                function u(e, n, r, o, s, l, u) {
                    return i[t(122)](a, i.tsNzQ(n ^ r, o), e, n, s, l, u)
                }
                function c(e, n, r, o, s, l, u) {
                    var c = t;
                    return i[c(122)](a, i[c(130)](r, i[c(41)](n, ~o)), e, n, s, l, u)
                }
                function f(e, n) {
                    var r = t
                      , o = i[r(95)](65535 & e, i.iqfMz(n, 65535))
                      , a = i[r(95)](e >> 16, i[r(97)](n, 16)) + i[r(97)](o, 16);
                    return i[r(103)](i[r(84)](a, 16), i[r(105)](o, 65535))
                }
                function d(e, n) {
                    var r = t;
                    return i.abYok(e << n, e >>> i[r(8)](32, n))
                }
                function p(e) {
                    for (var n = t, r = i[n(137)](Array), o = i[n(8)](i.vRqUp(1, 16), 1), a = 0; a < i.FDfcp(e[n(108)], 16); a += 16)
                        r[i[n(97)](a, 5)] |= i[n(102)](i[n(27)](e[n(127)](i[n(26)](a, 16)), o), i[n(54)](a, 32));
                    return r
                }
                function h(e) {
                    for (var n = t, r = i[n(49)], o = "", a = 0; i.iXQwu(a, i[n(74)](e[n(108)], 4)); a++)
                        o += i.xgzfr(r[n(64)](15 & i[n(36)](e[i[n(36)](a, 2)], i[n(46)](i[n(74)](a % 4, 8), 4))), r[n(64)](15 & i.wWwRM(e[a >> 2], i[n(47)](a % 4, 8))));
                    return o
                }
                return i[t(0)]((function(e) {
                    var n = t;
                    return i[n(144)](h, i[n(76)](o, i.vyNVU(p, e), 16 * e[n(108)]))
                }
                ), e)
            }
        }
        ,
        639: ()=>{
            "use strict";
            var e = function() {};
            e.__proto__.getAllElement = function(e) {
                let t = []
                  , n = e.children;
                if (0 !== e.children.length)
                    for (let e = 0; e < n.length; e++)
                        t.push(n[e]),
                        t = t.concat(this.getAllElement(n[e]));
                return t
            }
            ,
            e.__proto__.getNodeOriginalSize = function(t) {
                let n = [0, 0];
                return e.getAllElement(t).forEach((function(e) {
                    "absolute" != getComputedStyle(e, null).position && (n[0] = e.offsetWidth > n[0] ? e.offsetWidth : n[0],
                    e.parentNode === t && (n[1] += e.offsetHeight))
                }
                )),
                n
            }
            ,
            e.__proto__.maxZIndex = function() {
                let e = [].slice.call(document.all);
                return parseInt(e.reduce((function(e, t) {
                    let n = getComputedStyle(t, null).zIndex;
                    return Math.max(e, isNaN(n) ? 0 : n)
                }
                ), 0))
            }
            ,
            e.__proto__.eventTarget = function(e, t, n, r, i) {
                i && (i = !1),
                e.addEventListener(n, (function(n) {
                    if (n.target === e || n.target === e)
                        return !1;
                    let i = [].slice.call(e.querySelectorAll(t));
                    if (-1 !== i.indexOf(n.target))
                        r.apply(n.target);
                    else {
                        let t = n.target.parentNode;
                        for (; t !== e; ) {
                            if (-1 !== i.indexOf(t)) {
                                r.apply(t);
                                break
                            }
                            t = t.parentNode
                        }
                    }
                }
                ), i)
            }
            ,
            e.__proto__.objectToDom = function(e) {
                let t = {};
                for (let n in e) {
                    let r = document.createElement(e[n].nodeType);
                    if (void 0 !== e[n].nodeType) {
                        for (let t in e[n])
                            if ("nodeType" != t)
                                if ("innerhtml" == t.toLocaleLowerCase()) {
                                    let i = this.objectToDom(e[n][t]);
                                    for (let e in i)
                                        r.insertAdjacentElement("beforeend", i[e])
                                } else
                                    "innertext" == t.toLocaleLowerCase() ? r.insertAdjacentText("beforeend", e[n][t]) : r.setAttribute(t, e[n][t]);
                        t[n] = r
                    }
                }
                return t
            }
            ,
            e.__proto__.loadFile = function(e) {
                let t = null
                  , n = null;
                switch (e.substring(e.toLowerCase().lastIndexOf(".") + 1)) {
                case "css":
                    t = document.head.querySelectorAll("link"),
                    t = t.item(t.lenth - 1),
                    n = document.createElement("link"),
                    n.rel = "stylesheet",
                    n.href = e;
                    break;
                case "js":
                    t = document.head.querySelectorAll("script"),
                    t = t.item(t.length - 1),
                    n = document.createElement("script"),
                    n.src = e
                }
                t.insertAdjacentElement("afterend", n)
            }
            ,
            e.__proto__.deepClone = function(e) {
                return JSON.parse(JSON.stringify(e))
            }
            ,
            e.__proto__.launchFullscreen = function(e) {
                e.requestFullscreen ? e.requestFullscreen() : e.mozRequestFullScreen ? e.mozRequestFullScreen() : e.msRequestFullscreen ? e.msRequestFullscreen() : e.webkitRequestFullscreen && e.webkitRequestFullScreen()
            }
            ,
            e.__proto__.exitFullscreen = function() {
                document.exitFullscreen ? document.exitFullscreen() : document.msExitFullscreen ? document.msExitFullscreen() : document.mozCancelFullScreen ? document.mozCancelFullScreen() : document.webkitExitFullscreen && document.webkitExitFullscreen()
            }
            ,
            e.__proto__.getFullscreenNode = function() {
                return document.fullscreenElement || document.msFullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement || !1
            }
            ;
            var t = function(e) {
                try {
                    e.hook && "function" == typeof e.hook.initStart && e.hook.initStart(this);
                    let n = Object.getPrototypeOf(this);
                    Object.keys(n).forEach((function(e, r) {
                        "option" === e ? (this.option = {},
                        Object.keys(n[e]).forEach((function(r, i) {
                            ["text", "pageOption"].indexOf(r) >= 0 ? this.option[r] = t.assistant.util.deepClone(n[e][r]) : this.option[r] = n[e][r]
                        }
                        ), this)) : n[e]instanceof Function || (n[e]instanceof Object ? this[e] = t.assistant.util.deepClone(n[e]) : this[e] = n[e])
                    }
                    ), this),
                    this.initOption(e);
                    let r = this.initBuildData()
                      , i = this.initNode(r);
                    e.hook && "function" == typeof e.hook.initEnded && e.hook.initEnded(this),
                    Object.keys(i).forEach((function(e) {
                        document.body.insertAdjacentElement("beforeend", i[e])
                    }
                    ))
                } catch (e) {
                    return console.error(e),
                    {
                        status: "error",
                        message: e
                    }
                }
            };
            t.prototype.status = "hide",
            t.prototype.globalVariable = {},
            t.prototype.timeoutClock = [],
            t.prototype.intervalClock = [],
            t.prototype.option = {
                index: 0,
                title: null,
                content: null,
                okText: null,
                noText: null,
                cancelText: null,
                type: "msg",
                mask: !0,
                skin: "default",
                transitionTime: .2,
                transitionOpacity: 0,
                transitionScale: [.45, .45],
                areaProportion: [.18, .21],
                pageArea: [800, 600],
                popupTime: 5,
                resize: !0,
                drag: !0,
                dragOverflow: !1,
                clickMaskRemove: !0,
                contentFullContainer: !1,
                displayProgressBar: !1,
                displayProgressBarPos: "bottom",
                displayProgressBarColor: "deepskyblue",
                parentModalLayer: null,
                text: {
                    content: "",
                    title: "标题栏",
                    okButton: "确定",
                    noButton: "拒绝",
                    cancelButton: "取消"
                },
                pageOption: {
                    src: null,
                    srcdoc: null,
                    frameborder: 0,
                    scrolling: "no",
                    allowfullscreen: !0,
                    name: "modal-layer-page-"
                },
                hook: {
                    initStart: null,
                    initEnded: null
                },
                callback: {
                    ok: null,
                    no: null,
                    cancel: function() {
                        t.getModalLayerByDom(this).remove()
                    },
                    close: function() {
                        t.getModalLayerByDom(this).remove()
                    },
                    expand: function() {
                        let e = t.getModalLayerByDom(this)
                          , n = e.status
                          , r = e.getNodes().container.querySelector("iframe[name=" + e.option.pageOption.name + e.option.index + "]")
                          , i = function(t) {
                            t.target === r ? e.setStatus("expand") : !1 === t.target && (window.removeEventListener("fullscreenchange", i),
                            e.setStatus(n))
                        }
                          , o = function(e) {
                            t.msg({
                                mask: !1,
                                popupTime: 5,
                                title: "错误",
                                displayProgressBar: !0,
                                displayProgressBarPos: "bottom",
                                content: '<i class="fas fa-window-close" style="color: red"></i> 全屏失败, 错误原因: ' + e
                            }),
                            window.removeEventListener("fullscreenerror", o)
                        };
                        window.addEventListener("fullscreenerror", o),
                        window.addEventListener("fullscreenchange", i),
                        t.assistant.util.launchFullscreen(r)
                    },
                    minimize: function() {
                        t.getModalLayerByDom(this).minimize()
                    },
                    clickMask: function() {
                        t.getModalLayerByDom(this).remove()
                    }
                },
                event: {
                    active: function(e) {
                        let n = t.getModalLayerByDom(this)
                          , r = 0
                          , i = n.getNodes()
                          , o = (new Date).getTime();
                        if (!(0 !== (e || window.event).button || n.globalVariable.mousedown && n.globalVariable.mousedown[0] && o - n.globalVariable.mousedown[0] <= 200) && (n.globalVariable.mousedown = [!0, o],
                        t.instance.forEach((function(e) {
                            "show" === e.status && r++
                        }
                        ), n),
                        r >= 2)) {
                            let e = t.assistant.util.maxZIndex();
                            if (i.container.style.zIndex == e)
                                return;
                            Object.keys(i).forEach((function(t) {
                                i[t].style.zIndex = e + 1
                            }
                            ), n),
                            i.container.style.zIndex = parseInt(i.container.style.zIndex) + 1
                        }
                    },
                    drag: function(e) {
                        let n = t.getModalLayerByDom(this)
                          , r = n.status
                          , i = (new Date).getTime()
                          , o = e || window.event
                          , a = n.getNodes().container
                          , s = a.getBoundingClientRect()
                          , l = [o.screenX, o.screenY]
                          , u = (a.querySelector(".modal-layer-title"),
                        window.document.documentElement.getBoundingClientRect())
                          , c = [u.left, u.left + u.width, u.left, u.top + u.height];
                        if (0 !== o.button || n.globalVariable.mousedown && n.globalVariable.mousedown[0] && i - n.globalVariable.mousedown[0] <= 200)
                            return;
                        n.globalVariable.mousedown = [!0, i],
                        s.y = s.top,
                        s.x = s.left,
                        window.getSelection().removeAllRanges();
                        let f = a.querySelector(".modal-layer-drag-mask");
                        f || (f = t.assistant.util.objectToDom([n.nodeData.dragMask])[0],
                        a.querySelector(".modal-layer-content").insertAdjacentElement("afterbegin", f)),
                        f.style.visibility = "visible";
                        let d = function(e, t) {
                            n.option.dragOverflow || (s.x + e < c[0] && (s.x = c[0] - e),
                            s.x + s.width + e > c[1] && (s.x = c[1] - s.width - e),
                            s.y + t < c[2] && (s.y = c[2] - t),
                            s.y + s.height + t > c[3] && (s.y = c[3] - s.height - t)),
                            s.x += e,
                            s.y += t,
                            a.style.marginLeft = s.x + "px",
                            a.style.marginTop = s.y + "px",
                            n.setStatus("drag")
                        }
                          , p = function(e) {
                            let t = e || window.event
                              , n = t.screenX - l[0]
                              , r = t.screenY - l[1];
                            l = [t.screenX, t.screenY],
                            d(n, r)
                        }
                          , h = function(e) {
                            let n = []
                              , r = e || window.event
                              , i = r.keyCode || r.which
                              , o = [t.enum.arrow.up, t.enum.arrow.dw, t.enum.arrow.left, t.enum.arrow.right];
                            if (!(o.indexOf(i) < 0)) {
                                switch (i) {
                                case o[0]:
                                    n[1] = -1;
                                    break;
                                case o[1]:
                                    n[1] = 1;
                                    break;
                                case o[2]:
                                    n[0] = -1;
                                    break;
                                case o[3]:
                                    n[0] = 1
                                }
                                d(n[0], n[1])
                            }
                        }
                          , m = function() {
                            delete n.globalVariable.mousedown,
                            a.querySelector(".modal-layer-drag-mask").removeAttribute("style"),
                            document.removeEventListener("keydown", h),
                            document.removeEventListener("mousemove", p),
                            document.removeEventListener("mouseup", m),
                            n.setStatus(r)
                        };
                        document.addEventListener("mouseup", m),
                        document.addEventListener("mousemove", p),
                        document.addEventListener("keydown", h)
                    },
                    resize: function(e) {
                        let n = t.getModalLayerByDom(this)
                          , r = n.status
                          , i = (new Date).getTime()
                          , o = e || window.event
                          , a = o.target
                          , s = n.getNodes().container
                          , l = s.getBoundingClientRect()
                          , u = n.globalVariable.defaultArea
                          , c = [o.screenX, o.screenY]
                          , f = [l.width, l.height]
                          , d = document.documentElement.getBoundingClientRect();
                        if (0 !== o.button || n.globalVariable.mousedown && n.globalVariable.mousedown[0] && i - n.globalVariable.mousedown[0] <= 200)
                            return;
                        n.globalVariable.mousedown = [!0, i],
                        l.y = l.top,
                        l.x = l.left,
                        window.getSelection().removeAllRanges();
                        let p = s.querySelector(".modal-layer-resize-mask")
                          , h = document.querySelector(".modal-layer-resize-mask");
                        p || (p = t.assistant.util.objectToDom([n.nodeData.resizeMask])[0],
                        s.insertAdjacentElement("afterbegin", p)),
                        h.parentNode === document.body && p !== h && h || (h = t.assistant.util.objectToDom([n.nodeData.resizeMask])[0],
                        h.style.zIndex = parseInt(s.style.zIndex) - 1,
                        h.style.cssText += "top: 0; left: 0; right: 0; bottom: 0; position: fixed;",
                        document.body.insertAdjacentElement("afterbegin", h)),
                        p.style.visibility = "visible",
                        h.style.visibility = "visible";
                        let m = function(e) {
                            let t = e || window.event
                              , r = t.screenX - c[0]
                              , i = t.screenY - c[1]
                              , o = a.getAttribute("position-resize-bar")
                              , s = [l.x, l.y, f[0], f[1]];
                            n.setStatus("resize"),
                            o.indexOf("top") >= 0 && (s[1] += i,
                            s[3] -= i,
                            s[1] < d.y && (s[3] -= d.y - s[1]),
                            s[3] < u[1] && (s[1] += s[3] - u[1],
                            s[3] = u[1])),
                            o.indexOf("bottom") >= 0 && (s[3] += i,
                            s[3] < u[1] && (s[3] = u[1])),
                            o.indexOf("left") >= 0 && (s[0] += r,
                            s[2] -= r,
                            s[0] < d.x && (s[2] -= d.x - s[0]),
                            s[2] < u[0] && (s[0] += s[2] - u[0],
                            s[2] = u[0])),
                            o.indexOf("right") >= 0 && (s[2] += r,
                            s[2] < u[0] && (s[2] = u[0])),
                            n.resizeByXYWH(s[0], s[1], s[2], s[3])
                        }
                          , g = function() {
                            delete n.globalVariable.mousedown,
                            s.querySelector(".modal-layer-resize-mask").removeAttribute("style"),
                            document.body.removeChild(document.querySelector(".modal-layer-resize-mask")),
                            document.removeEventListener("mousemove", m),
                            document.removeEventListener("mouseup", g),
                            n.setStatus(r)
                        };
                        document.addEventListener("mouseup", g),
                        document.addEventListener("mousemove", m)
                    }
                }
            },
            t.prototype.nodeData = {
                mask: {
                    nodeType: "div",
                    id: "modal-layer-mask"
                },
                container: {
                    nodeType: "div",
                    id: "modal-layer-container"
                },
                title: {
                    nodeType: "div",
                    class: "modal-layer-title",
                    innerHTML: [{
                        nodeType: "h4",
                        class: "modal-layer-title-content"
                    }]
                },
                content: {
                    nodeType: "div",
                    class: "modal-layer-content"
                },
                contentPage: {
                    nodeType: "iframe",
                    name: "",
                    scrolling: "no",
                    frameborder: 0
                },
                dragMask: {
                    nodeType: "div",
                    class: "modal-layer-drag-mask"
                },
                interaction: {
                    nodeType: "div",
                    class: "modal-layer-interaction",
                    innerHTML: [{
                        nodeType: "span",
                        class: "modal-layer-button modal-layer-button-ok"
                    }, {
                        nodeType: "span",
                        class: "modal-layer-button modal-layer-button-cancel"
                    }, {
                        nodeType: "span",
                        class: "modal-layer-button modal-layer-button-no"
                    }]
                },
                action: {
                    nodeType: "div",
                    class: "modal-layer-action",
                    innerHTML: [{
                        nodeType: "span",
                        "data-fa-transform": "up-4 shrink-2",
                        class: "fas fa-window-minimize modal-layer-action-btn modal-layer-action-minimize"
                    }, {
                        nodeType: "span",
                        "data-fa-transform": "shrink-2",
                        class: "fas fa-expand-arrows-alt modal-layer-action-btn modal-layer-action-expand"
                    }, {
                        nodeType: "span",
                        "data-fa-transform": "rotate-45 grow-1",
                        class: "fas fa-plus modal-layer-action-btn modal-layer-action-close"
                    }]
                },
                displayProgressBar: {
                    nodeType: "div",
                    class: "modal-layer-display-progress-bar",
                    innerHTML: [{
                        nodeType: "div",
                        class: "modal-layer-display-progress-background",
                        innerHTML: [{
                            nodeType: "span",
                            class: "modal-layer-display-bar-progress"
                        }]
                    }]
                },
                resizeBox: {
                    nodeType: "div",
                    class: "modal-layer-resize-box",
                    innerHTML: [{
                        nodeType: "div",
                        class: "modal-layer-resize-bar",
                        "position-resize-bar": "top"
                    }, {
                        nodeType: "div",
                        class: "modal-layer-resize-bar",
                        "position-resize-bar": "left"
                    }, {
                        nodeType: "div",
                        class: "modal-layer-resize-bar",
                        "position-resize-bar": "right"
                    }, {
                        nodeType: "div",
                        class: "modal-layer-resize-bar",
                        "position-resize-bar": "bottom"
                    }, {
                        nodeType: "div",
                        class: "modal-layer-resize-bar",
                        "position-resize-bar": "left-top"
                    }, {
                        nodeType: "div",
                        class: "modal-layer-resize-bar",
                        "position-resize-bar": "right-top"
                    }, {
                        nodeType: "div",
                        class: "modal-layer-resize-bar",
                        "position-resize-bar": "left-bottom"
                    }, {
                        nodeType: "div",
                        class: "modal-layer-resize-bar",
                        "position-resize-bar": "right-bottom"
                    }]
                },
                resizeMask: {
                    nodeType: "div",
                    class: "modal-layer-resize-mask"
                },
                minimizeTaskbar: {
                    nodeType: "div",
                    id: "modal-layer-minimize-taskbar"
                },
                minimizeTaskbarItem: {
                    nodeType: "div",
                    class: "modal-layer-minimize-item",
                    innerHTML: [{
                        nodeType: "h4",
                        class: "modal-layer-minimize-item-title"
                    }]
                }
            },
            t.prototype.initOption = function(e) {
                Object.keys(e).forEach((function(n) {
                    if ("type" === n && void 0 === t.enum.type[e[n]])
                        throw Error("无效的类型");
                    ["text", "pageOption", "callback", "hook", "event"].indexOf(n) >= 0 ? Object.keys(e[n]).forEach((function(t) {
                        void 0 !== this.option[n][t] && ("function" == typeof e[n][t] ? this.option[n][t] = e[n][t].bind(this) : this.option[n][t] = e[n][t])
                    }
                    ), this) : void 0 !== this.option[n] && (this.option[n] = e[n])
                }
                ), this),
                this.option.popupTime <= 0 && (this.option.displayProgressBar = !1),
                !1 === this.option.mask && (this.option.clickMaskRemove = !1),
                "msg" === this.option.type && (this.option.title = !1),
                !1 === this.option.title && (this.option.drag = !1),
                !1 === this.option.drag && (this.option.dragOverflow = !1),
                this.option.index = t.instance.length
            }
            ,
            t.prototype.initBuildData = function() {
                let e = {};
                return this.option.mask && (e.mask = this.nodeData.mask),
                e.container = this.nodeData.container,
                void 0 === e.container.innerHTML && (e.container.innerHTML = []),
                void 0 === this.nodeData.content.innerHTML && (this.nodeData.content.innerHTML = []),
                this.option.resize && e.container.innerHTML.push(this.nodeData.resizeMask),
                !1 !== this.option.title && e.container.innerHTML.push(this.nodeData.title),
                this.option.drag && this.nodeData.content.innerHTML.push(this.nodeData.dragMask),
                ["page", "video", "audio"].indexOf(this.option.type) >= 0 && this.nodeData.content.innerHTML.push(this.nodeData.contentPage),
                e.container.innerHTML.push(this.nodeData.content),
                e.container.innerHTML.push(this.nodeData.interaction),
                e.container.innerHTML.push(this.nodeData.action),
                this.option.displayProgressBar && e.container.innerHTML.push(this.nodeData.displayProgressBar),
                this.option.resize && e.container.innerHTML.push(this.nodeData.resizeBox),
                e
            }
            ,
            t.prototype.initNode = function(e) {
                let n = "modal-layer-ui"
                  , r = "modal-layer-skin-" + this.option.skin
                  , i = "modal-layer-index-" + this.option.index
                  , o = t.assistant.util.objectToDom(e)
                  , a = Object.keys(o)
                  , s = t.assistant.util.maxZIndex()
                  , l = "opacity: " + this.option.transitionOpacity + ";"
                  , u = "opacity " + this.option.transitionTime + "s ease"
                  , c = "transform " + this.option.transitionTime + "s ease"
                  , f = ";-webkit-transition: " + u + ", " + c + "; -o-transition:" + u + ", " + c + "; transition:" + u + ", " + c + ";"
                  , d = ";-webkit-transform: scale(" + this.option.transitionScale[0] + ", " + this.option.transitionScale[1] + ");-ms-transform: scale(" + this.option.transitionScale[0] + ", " + this.option.transitionScale[1] + ");-o-transform: scale(" + this.option.transitionScale[0] + ", " + this.option.transitionScale[1] + ");transform: scale(" + this.option.transitionScale[0] + ", " + this.option.transitionScale[1] + ");";
                if (o.container.setAttribute("modal-layer-type", this.option.type),
                o.container.setAttribute("modal-layer-popup-time", this.option.popupTime),
                o.container.setAttribute("click-mask-remove", this.option.clickMaskRemove),
                o.container.setAttribute("content-full-container", this.option.contentFullContainer),
                this.option.drag && o.container.setAttribute("allow-drag", this.option.drag),
                this.option.resize && o.container.setAttribute("allow-resize", this.option.resize),
                this.option.displayProgressBar) {
                    let e = ["top", "left", "right", "bottom"]
                      , t = o.container.querySelector(".modal-layer-display-progress-bar");
                    !1 === e.indexOf(this.option.displayProgressBarPos.toLowerCase()) && (this.option.displayProgressBarPos = e[3]),
                    t.setAttribute("progress-bar-position", this.option.displayProgressBarPos),
                    t.querySelector(".modal-layer-display-bar-progress").style.cssText += "background: " + this.option.displayProgressBarColor
                }
                if ("page" === this.option.type) {
                    let e = o.container.querySelector(".modal-layer-content iframe")
                      , t = "display: block; width: " + this.option.pageArea[0] + "px; height: " + this.option.pageArea[1] + "px";
                    void 0 !== this.option.pageOption.srcdoc && void 0 !== this.option.pageOption.src && delete this.option.pageOption.srcdoc,
                    Object.keys(this.option.pageOption).forEach((function(t) {
                        "name" === t ? e.setAttribute("name", this.option.pageOption.name + this.option.index) : e.setAttribute(t, this.option.pageOption[t])
                    }
                    ), this),
                    e.style.cssText = t
                }
                return this.initContent(o.container),
                a.forEach((function(e) {
                    let a = t.assistant.util.getAllElement(o[e]);
                    for (let e = 0; e < a.length; e++) {
                        let t = a[e].classList;
                        t.contains(n),
                        t.add(n)
                    }
                    o[e].classList.add(n),
                    o[e].classList.add(r),
                    o[e].classList.add(i),
                    o[e].classList.add("modal-layer-hide"),
                    o[e].style.cssText = l + f,
                    o[e].style.zIndex = s + 1
                }
                ), this),
                o.container.style.cssText += d,
                this.initEvent(o),
                t.instance.push(this),
                o
            }
            ,
            t.prototype.initContent = function(e) {
                let t = e.querySelector(".modal-layer-title-content")
                  , n = e.querySelector(".modal-layer-content")
                  , r = e.querySelector(".modal-layer-interaction");
                "page" !== this.option.type && (this.option.drag ? n.innerHTML = e.querySelector(".modal-layer-drag-mask").outerHTML + (this.option.content ? this.option.content : this.option.text.content) : n.innerHTML = this.option.content ? this.option.content : this.option.text.content),
                "msg" !== this.option.type && (t.innerHTML = this.option.title ? this.option.title : this.option.text.title,
                r.querySelector(".modal-layer-button-ok").innerHTML = this.option.okText ? this.option.okText : this.option.text.okButton,
                r.querySelector(".modal-layer-button-no").innerHTML = this.option.noText ? this.option.noText : this.option.text.noButton,
                r.querySelector(".modal-layer-button-cancel").innerHTML = this.option.cancelText ? this.option.cancelText : this.option.text.cancelButton)
            }
            ,
            t.prototype.initEvent = function(e) {
                let n = this;
                if (this.option.mask && this.option.clickMaskRemove && e.mask.addEventListener("click", this.option.callback.clickMask),
                this.option.drag && e.container.querySelector(".modal-layer-title").addEventListener("mousedown", this.option.event.drag),
                this.option.resize && t.assistant.util.eventTarget(e.container, ".modal-layer-resize-bar", "mousedown", this.option.event.resize),
                e.container.addEventListener("mousedown", this.option.event.active),
                this.option.popupTime > 0) {
                    let t = "modal-layer-show"
                      , r = 1e3 * this.option.popupTime;
                    this.intervalClock.push(setInterval((function() {
                        if (e.container.classList.contains(t)) {
                            if (n.stopAllInterval(),
                            n.option.displayProgressBar) {
                                let t = ""
                                  , r = e.container.querySelector(".modal-layer-display-bar-progress");
                                switch (n.option.displayProgressBarPos) {
                                case "top":
                                case "bottom":
                                    t = "widthFull";
                                    break;
                                case "left":
                                case "right":
                                    t = "heightFull"
                                }
                                r.style.cssText += ";animation: " + t + " " + n.option.popupTime + "s linear; -webkit-animation: " + t + " " + n.option.popupTime + "s linear;"
                            }
                            n.timeoutClock.push(setTimeout((function() {
                                n.remove(n.option.index)
                            }
                            ), r))
                        }
                    }
                    ), 10))
                }
                if (this.option.callback.close && t.assistant.util.eventTarget(e.container, ".modal-layer-action-close", "click", this.option.callback.close),
                this.option.callback.expand && t.assistant.util.eventTarget(e.container, ".modal-layer-action-expand", "click", this.option.callback.expand),
                this.option.callback.minimize && t.assistant.util.eventTarget(e.container, ".modal-layer-action-minimize", "click", this.option.callback.minimize),
                "msg" !== this.option.type) {
                    let t = e.container.querySelector(".modal-layer-button-ok")
                      , n = e.container.querySelector(".modal-layer-button-no")
                      , r = e.container.querySelector(".modal-layer-button-cancel");
                    void 0 !== this.option.callback.ok && t.addEventListener("click", this.option.callback.ok),
                    void 0 !== this.option.callback.no && n.addEventListener("click", this.option.callback.no),
                    r.addEventListener("click", this.option.callback.cancel)
                }
            }
            ,
            t.prototype.stopAllInterval = function() {
                this.intervalClock.forEach((function(e, t) {
                    this.stopInterval(t)
                }
                ), this)
            }
            ,
            t.prototype.stopInterval = function(e) {
                clearInterval(this.intervalClock[e]),
                delete this.intervalClock[e]
            }
            ,
            t.prototype.stopAllTimeout = function() {
                this.timeoutClock.forEach((function(e, t) {
                    this.stopTimeout(t)
                }
                ), this)
            }
            ,
            t.prototype.stopTimeout = function(e) {
                clearTimeout(this.timeoutClock[e]),
                delete this.timeoutClock[e]
            }
            ,
            t.prototype.removeAllEvent = function() {
                let e = this.getNodes();
                if (0 === Object.keys(e).length)
                    return !1;
                this.option.mask && e.mask.removeEventListener("click", this.option.callback.clickMask),
                this.option.drag && e.container.querySelector(".modal-layer-title").removeEventListener("mousedown", this.option.event.drag),
                this.option.resize && e.container.removeEventListener("mousedown", this.option.event.resize),
                e.container.removeEventListener("mousedown", this.option.event.active);
                let t = e.container.querySelector(".modal-layer-button-ok")
                  , n = e.container.querySelector(".modal-layer-button-no")
                  , r = e.container.querySelector(".modal-layer-button-cancel");
                t && t.removeEventListener("click", this.option.callback.ok),
                n && n.removeEventListener("click", this.option.callback.no),
                r && r.removeEventListener("click", this.option.callback.cancel),
                e.container.removeEventListener("click", this.option.callback.close),
                e.container.removeEventListener("click", this.option.callback.expand),
                e.container.removeEventListener("click", this.option.callback.minimize)
            }
            ,
            t.__proto__.getModalLayerByDom = function(e) {
                let n = null
                  , r = e.classList
                  , i = "modal-layer-index-";
                for (; e.getAttribute("class").indexOf(i) < 0 && e !== document; )
                    r = e.classList,
                    e = e.parentNode;
                r = e.classList;
                for (let e = 0, t = r.length; e < t; e++) {
                    let t = r.item(e);
                    if (t.indexOf(i) >= 0) {
                        n = t.replace(i, "");
                        break
                    }
                }
                return t.instance[n]
            }
            ,
            t.prototype.getNodes = function() {
                let e = {}
                  , t = document.querySelector("#modal-layer-mask.modal-layer-index-" + this.option.index)
                  , n = document.querySelector("#modal-layer-container.modal-layer-index-" + this.option.index);
                return document.querySelector("#modal-layer-container.modal-layer-index-"),
                t && (e.mask = t),
                n && (e.container = n),
                e
            }
            ,
            t.prototype.setStatus = function(e) {
                if (void 0 === t.enum.status[e])
                    throw Error("不存在该状态, 无法设置.");
                this.status = e
            }
            ,
            t.prototype.resize = function() {
                let e = 0
                  , t = 0
                  , n = null
                  , r = window.innerWidth
                  , i = (window.innerHeight,
                this.getNodes().container)
                  , o = this.option.areaProportion[0].toString().length - (this.option.areaProportion[0].toString().indexOf(".") + 1);
                if (this.option.areaProportion[1].toString().length,
                this.option.areaProportion[1].toString().indexOf("."),
                "page" === this.option.type.toLowerCase()) {
                    let r = i.querySelector("iframe[name=" + this.option.pageOption.name + this.option.index + "]");
                    n = i.children,
                    e = r.offsetWidth + 2 * r.parentNode.offsetLeft;
                    for (let e = 0; e < n.length; e++)
                        t += "absolute" == getComputedStyle(n[e], null).position ? 0 : n[e].offsetHeight;
                    i.style.width = e + "px",
                    i.style.height = t + "px"
                } else {
                    e = r * (10 * o * this.option.areaProportion[0]) / (10 * o),
                    i.style.width = e + "px",
                    n = i.children;
                    for (let e = 0; e < n.length; e++)
                        t += "absolute" == getComputedStyle(n[e], null).position ? 0 : n[e].offsetHeight;
                    i.style.height = t + "px"
                }
                this.globalVariable.defaultArea = [e, t]
            }
            ,
            t.prototype.resizeByXYWH = function(e, t, n, r) {
                let i = this.getNodes().container
                  , o = document.documentElement.getBoundingClientRect();
                if (e < o.left && (e = o.left),
                e + n > o.right && (n = o.right - e),
                t < o.y && (t = o.y),
                t + r > o.bottom && (r = o.bottom - t),
                i.style.marginLeft = e + "px",
                i.style.marginTop = t + "px",
                i.style.width = n + "px",
                i.style.height = r + "px",
                ["page", "video", "audio"].indexOf(this.option.type) >= 0) {
                    let e = i.querySelector("iframe[name=" + this.option.pageOption.name + this.option.index + "]");
                    e.style.width = this.option.pageArea[0] + n - this.globalVariable.defaultArea[0] + "px",
                    e.style.height = this.option.pageArea[1] + r - this.globalVariable.defaultArea[1] + "px"
                }
            }
            ,
            t.prototype.show = function() {
                let e = "show"
                  , n = "modal-layer-hide"
                  , r = this.getNodes()
                  , i = t.assistant.util.maxZIndex();
                if (0 === Object.keys(r).length || this.status === e)
                    return !1;
                this.option.mask && (r.mask.style.zIndex = i + 1),
                r.container.style.zIndex = i + 2,
                this.option.mask && (r.mask.style.opacity = 1),
                r.container.style.opacity = 1,
                r.container.style.transform = "scale(1, 1)",
                Object.keys(r).forEach((function(e) {
                    r[e].classList.contains(n) && (r[e].classList.add("modal-layer-show"),
                    r[e].classList.remove(n))
                }
                )),
                this.setStatus(e)
            }
            ,
            t.prototype.hide = function(e) {
                let t = this
                  , n = "hide"
                  , r = "modal-layer-show"
                  , i = this.getNodes();
                if (0 === Object.keys(i).length || this.status === n)
                    return !1;
                this.option.mask && (i.mask.style.opacity = this.option.transitionOpacity),
                i.container.style.opacity = this.option.transitionOpacity,
                i.container.style.transform = "scale(" + this.option.transitionScale[0] + ", " + this.option.transitionScale[1] + ")",
                setTimeout((function() {
                    Object.keys(i).forEach((function(e) {
                        i[e].classList.contains(r) && (i[e].classList.add("modal-layer-hide"),
                        i[e].classList.remove(r))
                    }
                    )),
                    t.setStatus(n),
                    e instanceof Function && e.apply(t)
                }
                ), 1e3 * (1e3 * this.option.transitionTime / 700).toFixed(2))
            }
            ,
            t.prototype.minimize = function() {
                let e = null
                  , n = null
                  , r = null
                  , i = null
                  , o = "minimize";
                if (this.status === o)
                    return;
                n = document.querySelector("#modal-layer-minimize-taskbar"),
                n || (n = t.assistant.util.objectToDom([this.nodeData.minimizeTaskbar])[0],
                document.body.insertAdjacentElement("beforeend", n),
                t.assistant.util.eventTarget(n, ".modal-layer-minimize-item", "click", (function() {
                    if (this.getAttribute("clicked"))
                        return;
                    let e = this.getAttribute("modal-layer-index");
                    this.setAttribute("clicked", !0),
                    t.minimizeList.splice(t.minimizeList.indexOf(t.instance[e]), 1)[0].revert()
                }
                ))),
                i = t.minimizeList.length < 3 ? "25%" : t.minimizeList.length < 5 ? "20%" : "12.5%",
                e = 0 === this.option.title.length ? this.option.text.title : this.option.title,
                r = t.assistant.util.objectToDom([this.nodeData.minimizeTaskbarItem])[0],
                r.setAttribute("modal-layer-index", this.option.index),
                r.querySelector(".modal-layer-minimize-item-title").innerHTML = e,
                n.insertAdjacentElement("beforeend", r);
                let a = n.querySelectorAll("." + r.className);
                for (let e = 0, t = a.length; e < t; e++)
                    a[e].style.width = i;
                let s = setInterval((function() {
                    r.parentNode && (r.style.cssText += "opacity: 1;-webkit-transform: scale(1);-ms-transform: scale(1);-o-transform: scale(1);transform: scale(1);",
                    clearInterval(s))
                }
                ), 10);
                this.hide((function() {
                    this.setStatus(o),
                    t.minimizeList.push(this)
                }
                ))
            }
            ,
            t.prototype.revert = function() {
                let e = document.querySelector("#modal-layer-minimize-taskbar")
                  , n = e.querySelector('.modal-layer-minimize-item[modal-layer-index="' + this.option.index + '"]');
                ["minimize"].indexOf(this.status) < 0 || (this.show(),
                this.setStatus("show"),
                n.style.opacity = "",
                n.style.transform = "",
                setTimeout((function() {
                    e.removeChild(n),
                    t.minimizeList.length <= 0 && document.body.removeChild(e)
                }
                ), 250))
            }
            ,
            t.prototype.remove = function() {
                let e = "removed"
                  , t = "removing"
                  , n = this.getNodes();
                if (0 === Object.keys(n).length || this.status === t || this.status === e)
                    return !1;
                this.setStatus(t),
                this.stopAllTimeout(),
                this.stopAllInterval(),
                this.hide((function() {
                    this.removeAllEvent(),
                    Object.keys(n).forEach((function(e) {
                        n[e].parentNode.removeChild(n[e])
                    }
                    )),
                    this.setStatus(e),
                    null !== this.option.parentModalLayer && this.option.parentModalLayer.show()
                }
                ))
            }
            ,
            t.__proto__.removeAll = function() {
                for (let e = 0; e < t.instance.length; e++)
                    t.instance[e].remove()
            }
            ,
            t.__proto__.msg = function(e) {
                let n = null;
                return "string" == typeof e ? e = {
                    content: e
                } : e.type = "msg",
                n = new t(e),
                n.resize(),
                n.show(),
                n
            }
            ,
            t.__proto__.alert = function(e) {
                let n = null;
                return e.type = "alert",
                n = new t(e),
                n.resize(),
                n.show(),
                n
            }
            ,
            t.__proto__.prompt = function(e) {
                let n = null;
                return e.type = "prompt",
                n = new t(e),
                n.resize(),
                n.show(),
                n
            }
            ,
            t.__proto__.confirm = function(e) {
                let n = null;
                return e.type = "confirm",
                n = new t(e),
                n.resize(),
                n.show(),
                n
            }
            ,
            t.__proto__.page = function(e) {
                let n = null;
                return e.type = "page",
                e.callback || (e.callback = {}),
                n = new t(e),
                n.resize(),
                n.show(),
                n
            }
            ,
            t.__proto__.image = function(e) {}
            ,
            t.__proto__.video = function(e) {}
            ,
            t.__proto__.audio = function(e) {}
            ,
            t.__proto__.instance = [],
            t.__proto__.minimizeList = [],
            t.__proto__.assistant = {
                util: e
            },
            t.__proto__.enum = {
                type: {
                    msg: 0,
                    alert: 1,
                    prompt: 2,
                    confirm: 3,
                    page: 4,
                    loading: 5,
                    image: 6,
                    video: 7,
                    audio: 8
                },
                status: {
                    hide: 0,
                    show: 1,
                    expand: 2,
                    minimize: 3,
                    removing: 4,
                    removed: 5,
                    drag: 6,
                    resize: 7
                },
                arrow: {
                    left: 37,
                    up: 38,
                    right: 39,
                    dw: 40
                }
            }
        }
        ,
View Code
        732: function(e, t, n) {
            var r, o, a, s;
          _0x34e7 = [
    "split",
    "ABHICESQWK",
    "FKByN",
    "U987654321",
    "lmHcG",
    "dICfr",
    "Szksx",
    "Bgrij",
    "iwnNJ",
    "jihgfdecba",
    "GfTek",
    "gfdecbaZXY",
    "constructo",
    "QIoXW",
    "jLRMs",
    "AqLWq",
    "0zyxwvutsr",
    "TKgNw",
    "eMnqD",
    "thjIz",
    "btoa",
    "MNPQRSTWXY",
    "oPsqh",
    "niIlq",
    "evetF",
    "LVZVH",
    "fYWEX",
    "kmnprstwxy",
    "aYkvo",
    "tsrqpomnlk",
    "HfLqY",
    "aQCDK",
    "lGBLj",
    "test",
    "3210zyxwvu",
    "QWK2Fi",
    "return /\" ",
    "hsJtK",
    "jdwcO",
    "SlFsj",
    "OWUOc",
    "LCaAn",
    "[^ ]+)+)+[",
    "FAVYf",
    "2Fi+987654",
    "floor",
    "join",
    "EuwBW",
    "OXYrZ",
    "charCodeAt",
    "SkkHG",
    "iYuJr",
    "GwoYF",
    "kPdGe",
    "cVCcp",
    "INQRH",
    "INVALID_CH",
    "charAt",
    "push",
    "apply",
    "lalCJ",
    "kTcRS",
    "+ this + \"",
    "ykpOn",
    "gLnjm",
    "gmBaq",
    "kukBH",
    "dvEWE",
    "SFKLi",
    "^([^ ]+( +",
    "qpomnlkjih",
    "^ ]}",
    "pHtmC",
    "length"
],
            a = _0x34e7,
            s = function(e) {
                for (; --e; )
                    a.push(a.shift())
            }

            var l = function(e, t) {
                return _0x34e7[e -= 188]
            }
              , u = l

            var f = u(191) + u(204) + u(258) + u(199) + "WVUTSRQPON" + u(189) + u(232) + u(222) + u(217) + u(197) + "ZXYWVUTSRQPONABHICES" + u(223);
            function d(e) {
                var t = u
                  , n = {};
                n[t(214)] = function(e, t) {
                    return e || t
                }
                ,
                n.bWcgB = function(e, t) {
                    return e * t
                }
                ,
                n[t(227)] = "ABCDEFGHJK" + t(209) + "Zabcdefhij" + t(215) + "z2345678";
                for (var r = n, o = "1|3|0|4|2|5"[t(188)]("|"), a = 0; ; ) {
                    switch (o[a++]) {
                    case "0":
                        var s = l[t(261)];
                        continue;
                    case "1":
                        e = r[t(214)](e, 32);
                        continue;
                    case "2":
                        for (i = 0; i < e; i++)
                            c += l[t(245)](Math[t(233)](r.bWcgB(Math.random(), s)));
                        continue;
                    case "3":
                        var l = r[t(227)];
                        continue;
                    case "4":
                        var c = "";
                        continue;
                    case "5":
                        return c
                    }
                    break
                }
            }
            window[u(208)] = function(e) {
                var t = u
                  , r = {};
                r.TGmSp = t(244) + "ARACTER_ERR",
                r[t(238)] = t(224) + t(250) + "/",
                r[t(205)] = "^([^ ]+( +" + t(230) + t(259),
                r.aYkvo = function(e) {
                    return e()
                }
                ,
                r[t(254)] = function(e, t) {
                    return e % t
                }
                ,
                r.evetF = function(e, t) {
                    return e >> t
                }
                ,
                r.GfTek = t(196),
                r[t(260)] = function(e, t) {
                    return e << t
                }
                ,
                r[t(229)] = function(e, t) {
                    return e | t
                }
                ,
                r[t(242)] = function(e, t) {
                    return e << t
                }
                ,
                r[t(228)] = function(e, t) {
                    return e & t
                }
                ,
                r[t(207)] = function(e, t) {
                    return e << t
                }
                ,
                r[t(202)] = function(e, t) {
                    return e & t
                }
                ,
                r.jdwcO = function(e, t) {
                    return e === t
                }
                ,
                r.kPdGe = t(231),
                r[t(195)] = t(213),
                r[t(201)] = function(e, t) {
                    return e & t
                }
                ,
                r[t(206)] = function(e, t) {
                    return e == t
                }
                ,
                r[t(219)] = function(e, t) {
                    return e + t
                }
                ,
                r[t(220)] = function(e, t) {
                    return e(t)
                }
                ;
                var i = r;
                if (/([^\u0000-\u00ff])/.test(e))
                    throw new Error(i.TGmSp);
                for (var o, a, s, l = 0, c = []; l < e[t(261)]; ) {
                    switch (a = e[t(237)](l),
                    s = i.kukBH(l, 6)) {
                    case 0:
                        delete window,
                        delete document,
                        c[t(246)](f[t(245)](i[t(212)](a, 2)));
                        break;
                    case 1:
                        try {
                            "WhHMm" === i[t(198)] || n.g && c[t(246)](f[t(245)](i.pHtmC(2 & o, 3) | i.evetF(a, 4)))
                        } catch (e) {
                            c[t(246)](f[t(245)](i[t(229)](i.cVCcp(3 & o, 4), a >> 4)))
                        }
                        break;
                    case 2:
                        c[t(246)](f[t(245)](i[t(229)](i[t(242)](15 & o, 2), i.evetF(a, 6)))),
                        c[t(246)](f[t(245)](i[t(228)](a, 63)));
                        break;
                    case 3:
                        c[t(246)](f[t(245)](i[t(212)](a, 3)));
                        break;
                    case 4:
                        c.push(f[t(245)](i[t(229)](i[t(207)](i.OWUOc(o, 4), 6), i[t(212)](a, 6))));
                        break;
                    case 5:
                        c[t(246)](f[t(245)](i[t(229)](i[t(207)](i[t(202)](o, 15), 4), a >> 8))),
                        c.push(f.charAt(i[t(202)](a, 63)))
                    }
                    o = a,
                    l++
                }
                return 0 == s ? i[t(226)](i[t(241)], i[t(195)]) || (c[t(246)](f[t(245)](i[t(201)](o, 3) << 4)),
                c.push("FM")) : i.eMnqD(s, 1) && (c[t(246)](f[t(245)]((15 & o) << 2)),
                c[t(246)]("K")),
                i[t(219)](i.aQCDK(d(15), window.md5(c[t(234)](""))), i[t(220)](d, 10))
            }

        755: function(e, t) {
            var n;
            !function(t, n) {
                "use strict";
                "object" == typeof e.exports ? e.exports = t.document ? n(t, !0) : function(e) {
                    if (!e.document)
                        throw new Error("jQuery requires a window with a document");
                    return n(e)
                }
                : n(t)
            }("undefined" != typeof window ? window : this, (function(r, i) {
                "use strict";
                var o = []
                  , a = Object.getPrototypeOf
                  , s = o.slice
                  , l = o.flat ? function(e) {
                    return o.flat.call(e)
                }
                : function(e) {
                    return o.concat.apply([], e)
                }
                  , u = o.push
                  , c = o.indexOf
                  , f = {}
                  , d = f.toString
                  , p = f.hasOwnProperty
                  , h = p.toString
                  , m = h.call(Object)
                  , g = {}
                  , v = function(e) {
                    return "function" == typeof e && "number" != typeof e.nodeType
                }
                  , y = function(e) {
                    return null != e && e === e.window
                }
                  , b = r.document
                  , x = {
                    type: !0,
                    src: !0,
                    nonce: !0,
                    noModule: !0
                };
                function w(e, t, n) {
                    var r, i, o = (n = n || b).createElement("script");
                    if (o.text = e,
                    t)
                        for (r in x)
                            (i = t[r] || t.getAttribute && t.getAttribute(r)) && o.setAttribute(r, i);
                    n.head.appendChild(o).parentNode.removeChild(o)
                }
                function T(e) {
                    return null == e ? e + "" : "object" == typeof e || "function" == typeof e ? f[d.call(e)] || "object" : typeof e
                }
                var k = "3.5.1"
                  , C = function(e, t) {
                    return new C.fn.init(e,t)
                };
                function E(e) {
                    var t = !!e && "length"in e && e.length
                      , n = T(e);
                    return !v(e) && !y(e) && ("array" === n || 0 === t || "number" == typeof t && t > 0 && t - 1 in e)
                }
                C.fn = C.prototype = {
                    jquery: k,
                    constructor: C,
                    length: 0,
                    toArray: function() {
                        return s.call(this)
                    },
                    get: function(e) {
                        return null == e ? s.call(this) : e < 0 ? this[e + this.length] : this[e]
                    },
                    pushStack: function(e) {
                        var t = C.merge(this.constructor(), e);
                        return t.prevObject = this,
                        t
                    },
                    each: function(e) {
                        return C.each(this, e)
                    },
                    map: function(e) {
                        return this.pushStack(C.map(this, (function(t, n) {
                            return e.call(t, n, t)
                        }
                        )))
                    },
                    slice: function() {
                        return this.pushStack(s.apply(this, arguments))
                    },
                    first: function() {
                        return this.eq(0)
                    },
                    last: function() {
                        return this.eq(-1)
                    },
                    even: function() {
                        return this.pushStack(C.grep(this, (function(e, t) {
                            return (t + 1) % 2
                        }
                        )))
                    },
                    odd: function() {
                        return this.pushStack(C.grep(this, (function(e, t) {
                            return t % 2
                        }
                        )))
                    },
                    eq: function(e) {
                        var t = this.length
                          , n = +e + (e < 0 ? t : 0);
                        return this.pushStack(n >= 0 && n < t ? [this[n]] : [])
                    },
                    end: function() {
                        return this.prevObject || this.constructor()
                    },
                    push: u,
                    sort: o.sort,
                    splice: o.splice
                },
                C.extend = C.fn.extend = function() {
                    var e, t, n, r, i, o, a = arguments[0] || {}, s = 1, l = arguments.length, u = !1;
                    for ("boolean" == typeof a && (u = a,
                    a = arguments[s] || {},
                    s++),
                    "object" == typeof a || v(a) || (a = {}),
                    s === l && (a = this,
                    s--); s < l; s++)
                        if (null != (e = arguments[s]))
                            for (t in e)
                                r = e[t],
                                "__proto__" !== t && a !== r && (u && r && (C.isPlainObject(r) || (i = Array.isArray(r))) ? (n = a[t],
                                o = i && !Array.isArray(n) ? [] : i || C.isPlainObject(n) ? n : {},
                                i = !1,
                                a[t] = C.extend(u, o, r)) : void 0 !== r && (a[t] = r));
                    return a
                }
                ,
                C.extend({
                    expando: "jQuery" + (k + Math.random()).replace(/\D/g, ""),
                    isReady: !0,
                    error: function(e) {
                        throw new Error(e)
                    },
                    noop: function() {},
                    isPlainObject: function(e) {
                        var t, n;
                        return !(!e || "[object Object]" !== d.call(e) || (t = a(e)) && ("function" != typeof (n = p.call(t, "constructor") && t.constructor) || h.call(n) !== m))
                    },
                    isEmptyObject: function(e) {
                        var t;
                        for (t in e)
                            return !1;
                        return !0
                    },
                    globalEval: function(e, t, n) {
                        w(e, {
                            nonce: t && t.nonce
                        }, n)
                    },
                    each: function(e, t) {
                        var n, r = 0;
                        if (E(e))
                            for (n = e.length; r < n && !1 !== t.call(e[r], r, e[r]); r++)
                                ;
                        else
                            for (r in e)
                                if (!1 === t.call(e[r], r, e[r]))
                                    break;
                        return e
                    },
                    makeArray: function(e, t) {
                        var n = t || [];
                        return null != e && (E(Object(e)) ? C.merge(n, "string" == typeof e ? [e] : e) : u.call(n, e)),
                        n
                    },
                    inArray: function(e, t, n) {
                        return null == t ? -1 : c.call(t, e, n)
                    },
                    merge: function(e, t) {
                        for (var n = +t.length, r = 0, i = e.length; r < n; r++)
                            e[i++] = t[r];
                        return e.length = i,
                        e
                    },
                    grep: function(e, t, n) {
                        for (var r = [], i = 0, o = e.length, a = !n; i < o; i++)
                            !t(e[i], i) !== a && r.push(e[i]);
                        return r
                    },
                    map: function(e, t, n) {
                        var r, i, o = 0, a = [];
                        if (E(e))
                            for (r = e.length; o < r; o++)
                                null != (i = t(e[o], o, n)) && a.push(i);
                        else
                            for (o in e)
                                null != (i = t(e[o], o, n)) && a.push(i);
                        return l(a)
                    },
                    guid: 1,
                    support: g
                }),
                "function" == typeof Symbol && (C.fn[Symbol.iterator] = o[Symbol.iterator]),
                C.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "), (function(e, t) {
                    f["[object " + t + "]"] = t.toLowerCase()
                }
                ));
                var S = function(e) {
                    var t, n, r, i, o, a, s, l, u, c, f, d, p, h, m, g, v, y, b, x = "sizzle" + 1 * new Date, w = e.document, T = 0, k = 0, C = le(), E = le(), S = le(), A = le(), D = function(e, t) {
                        return e === t && (f = !0),
                        0
                    }, N = {}.hasOwnProperty, j = [], L = j.pop, O = j.push, q = j.push, $ = j.slice, I = function(e, t) {
                        for (var n = 0, r = e.length; n < r; n++)
                            if (e[n] === t)
                                return n;
                        return -1
                    }, M = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", P = "[\\x20\\t\\r\\n\\f]", H = "(?:\\\\[\\da-fA-F]{1,6}[\\x20\\t\\r\\n\\f]?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+", R = "\\[[\\x20\\t\\r\\n\\f]*(" + H + ")(?:" + P + "*([*^$|!~]?=)" + P + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + H + "))|)" + P + "*\\]", F = ":(" + H + ")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|" + R + ")*)|.*)\\)|)", _ = new RegExp(P + "+","g"), z = new RegExp("^[\\x20\\t\\r\\n\\f]+|((?:^|[^\\\\])(?:\\\\.)*)[\\x20\\t\\r\\n\\f]+$","g"), B = new RegExp("^[\\x20\\t\\r\\n\\f]*,[\\x20\\t\\r\\n\\f]*"), W = new RegExp("^[\\x20\\t\\r\\n\\f]*([>+~]|[\\x20\\t\\r\\n\\f])[\\x20\\t\\r\\n\\f]*"), U = new RegExp(P + "|>"), X = new RegExp(F), V = new RegExp("^" + H + "$"), Q = {
                        ID: new RegExp("^#(" + H + ")"),
                        CLASS: new RegExp("^\\.(" + H + ")"),
                        TAG: new RegExp("^(" + H + "|[*])"),
                        ATTR: new RegExp("^" + R),
                        PSEUDO: new RegExp("^" + F),
                        CHILD: new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\([\\x20\\t\\r\\n\\f]*(even|odd|(([+-]|)(\\d*)n|)[\\x20\\t\\r\\n\\f]*(?:([+-]|)[\\x20\\t\\r\\n\\f]*(\\d+)|))[\\x20\\t\\r\\n\\f]*\\)|)","i"),
                        bool: new RegExp("^(?:" + M + ")$","i"),
                        needsContext: new RegExp("^[\\x20\\t\\r\\n\\f]*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\([\\x20\\t\\r\\n\\f]*((?:-\\d)?\\d*)[\\x20\\t\\r\\n\\f]*\\)|)(?=[^-]|$)","i")
                    }, Y = /HTML$/i, G = /^(?:input|select|textarea|button)$/i, J = /^h\d$/i, K = /^[^{]+\{\s*\[native \w/, Z = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, ee = /[+~]/, te = new RegExp("\\\\[\\da-fA-F]{1,6}[\\x20\\t\\r\\n\\f]?|\\\\([^\\r\\n\\f])","g"), ne = function(e, t) {
                        var n = "0x" + e.slice(1) - 65536;
                        return t || (n < 0 ? String.fromCharCode(n + 65536) : String.fromCharCode(n >> 10 | 55296, 1023 & n | 56320))
                    }, re = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, ie = function(e, t) {
                        return t ? "\0" === e ? "�" : e.slice(0, -1) + "\\" + e.charCodeAt(e.length - 1).toString(16) + " " : "\\" + e
                    }, oe = function() {
                        d()
                    }, ae = xe((function(e) {
                        return !0 === e.disabled && "fieldset" === e.nodeName.toLowerCase()
                    }
                    ), {
                        dir: "parentNode",
                        next: "legend"
                    });
                    try {
                        q.apply(j = $.call(w.childNodes), w.childNodes),
                        j[w.childNodes.length].nodeType
                    } catch (e) {
                        q = {
                            apply: j.length ? function(e, t) {
                                O.apply(e, $.call(t))
                            }
                            : function(e, t) {
                                for (var n = e.length, r = 0; e[n++] = t[r++]; )
                                    ;
                                e.length = n - 1
                            }
                        }
                    }
                    function se(e, t, r, i) {
                        var o, s, u, c, f, h, v, y = t && t.ownerDocument, w = t ? t.nodeType : 9;
                        if (r = r || [],
                        "string" != typeof e || !e || 1 !== w && 9 !== w && 11 !== w)
                            return r;
                        if (!i && (d(t),
                        t = t || p,
                        m)) {
                            if (11 !== w && (f = Z.exec(e)))
                                if (o = f[1]) {
                                    if (9 === w) {
                                        if (!(u = t.getElementById(o)))
                                            return r;
                                        if (u.id === o)
                                            return r.push(u),
                                            r
                                    } else if (y && (u = y.getElementById(o)) && b(t, u) && u.id === o)
                                        return r.push(u),
                                        r
                                } else {
                                    if (f[2])
                                        return q.apply(r, t.getElementsByTagName(e)),
                                        r;
                                    if ((o = f[3]) && n.getElementsByClassName && t.getElementsByClassName)
                                        return q.apply(r, t.getElementsByClassName(o)),
                                        r
                                }
                            if (n.qsa && !A[e + " "] && (!g || !g.test(e)) && (1 !== w || "object" !== t.nodeName.toLowerCase())) {
                                if (v = e,
                                y = t,
                                1 === w && (U.test(e) || W.test(e))) {
                                    for ((y = ee.test(e) && ve(t.parentNode) || t) === t && n.scope || ((c = t.getAttribute("id")) ? c = c.replace(re, ie) : t.setAttribute("id", c = x)),
                                    s = (h = a(e)).length; s--; )
                                        h[s] = (c ? "#" + c : ":scope") + " " + be(h[s]);
                                    v = h.join(",")
                                }
                                try {
                                    return q.apply(r, y.querySelectorAll(v)),
                                    r
                                } catch (t) {
                                    A(e, !0)
                                } finally {
                                    c === x && t.removeAttribute("id")
                                }
                            }
                        }
                        return l(e.replace(z, "$1"), t, r, i)
                    }
                    function le() {
                        var e = [];
                        return function t(n, i) {
                            return e.push(n + " ") > r.cacheLength && delete t[e.shift()],
                            t[n + " "] = i
                        }
                    }
                    function ue(e) {
                        return e[x] = !0,
                        e
                    }
                    function ce(e) {
                        var t = p.createElement("fieldset");
                        try {
                            return !!e(t)
                        } catch (e) {
                            return !1
                        } finally {
                            t.parentNode && t.parentNode.removeChild(t),
                            t = null
                        }
                    }
                    function fe(e, t) {
                        for (var n = e.split("|"), i = n.length; i--; )
                            r.attrHandle[n[i]] = t
                    }
                    function de(e, t) {
                        var n = t && e
                          , r = n && 1 === e.nodeType && 1 === t.nodeType && e.sourceIndex - t.sourceIndex;
                        if (r)
                            return r;
                        if (n)
                            for (; n = n.nextSibling; )
                                if (n === t)
                                    return -1;
                        return e ? 1 : -1
                    }
                    function pe(e) {
                        return function(t) {
                            return "input" === t.nodeName.toLowerCase() && t.type === e
                        }
                    }
                    function he(e) {
                        return function(t) {
                            var n = t.nodeName.toLowerCase();
                            return ("input" === n || "button" === n) && t.type === e
                        }
                    }
                    function me(e) {
                        return function(t) {
                            return "form"in t ? t.parentNode && !1 === t.disabled ? "label"in t ? "label"in t.parentNode ? t.parentNode.disabled === e : t.disabled === e : t.isDisabled === e || t.isDisabled !== !e && ae(t) === e : t.disabled === e : "label"in t && t.disabled === e
                        }
                    }
                    function ge(e) {
                        return ue((function(t) {
                            return t = +t,
                            ue((function(n, r) {
                                for (var i, o = e([], n.length, t), a = o.length; a--; )
                                    n[i = o[a]] && (n[i] = !(r[i] = n[i]))
                            }
                            ))
                        }
                        ))
                    }
                    function ve(e) {
                        return e && void 0 !== e.getElementsByTagName && e
                    }
                    for (t in n = se.support = {},
                    o = se.isXML = function(e) {
                        var t = e.namespaceURI
                          , n = (e.ownerDocument || e).documentElement;
                        return !Y.test(t || n && n.nodeName || "HTML")
                    }
                    ,
                    d = se.setDocument = function(e) {
                        var t, i, a = e ? e.ownerDocument || e : w;
                        return a != p && 9 === a.nodeType && a.documentElement ? (h = (p = a).documentElement,
                        m = !o(p),
                        w != p && (i = p.defaultView) && i.top !== i && (i.addEventListener ? i.addEventListener("unload", oe, !1) : i.attachEvent && i.attachEvent("onunload", oe)),
                        n.scope = ce((function(e) {
                            return h.appendChild(e).appendChild(p.createElement("div")),
                            void 0 !== e.querySelectorAll && !e.querySelectorAll(":scope fieldset div").length
                        }
                        )),
                        n.attributes = ce((function(e) {
                            return e.className = "i",
                            !e.getAttribute("className")
                        }
                        )),
                        n.getElementsByTagName = ce((function(e) {
                            return e.appendChild(p.createComment("")),
                            !e.getElementsByTagName("*").length
                        }
                        )),
                        n.getElementsByClassName = K.test(p.getElementsByClassName),
                        n.getById = ce((function(e) {
                            return h.appendChild(e).id = x,
                            !p.getElementsByName || !p.getElementsByName(x).length
                        }
                        )),
                        n.getById ? (r.filter.ID = function(e) {
                            var t = e.replace(te, ne);
                            return function(e) {
                                return e.getAttribute("id") === t
                            }
                        }
                        ,
                        r.find.ID = function(e, t) {
                            if (void 0 !== t.getElementById && m) {
                                var n = t.getElementById(e);
                                return n ? [n] : []
                            }
                        }
                        ) : (r.filter.ID = function(e) {
                            var t = e.replace(te, ne);
                            return function(e) {
                                var n = void 0 !== e.getAttributeNode && e.getAttributeNode("id");
                                return n && n.value === t
                            }
                        }
                        ,
                        r.find.ID = function(e, t) {
                            if (void 0 !== t.getElementById && m) {
                                var n, r, i, o = t.getElementById(e);
                                if (o) {
                                    if ((n = o.getAttributeNode("id")) && n.value === e)
                                        return [o];
                                    for (i = t.getElementsByName(e),
                                    r = 0; o = i[r++]; )
                                        if ((n = o.getAttributeNode("id")) && n.value === e)
                                            return [o]
                                }
                                return []
                            }
                        }
                        ),
                        r.find.TAG = n.getElementsByTagName ? function(e, t) {
                            return void 0 !== t.getElementsByTagName ? t.getElementsByTagName(e) : n.qsa ? t.querySelectorAll(e) : void 0
                        }
                        : function(e, t) {
                            var n, r = [], i = 0, o = t.getElementsByTagName(e);
                            if ("*" === e) {
                                for (; n = o[i++]; )
                                    1 === n.nodeType && r.push(n);
                                return r
                            }
                            return o
                        }
                        ,
                        r.find.CLASS = n.getElementsByClassName && function(e, t) {
                            if (void 0 !== t.getElementsByClassName && m)
                                return t.getElementsByClassName(e)
                        }
                        ,
                        v = [],
                        g = [],
                        (n.qsa = K.test(p.querySelectorAll)) && (ce((function(e) {
                            var t;
                            h.appendChild(e).innerHTML = "<a id='" + x + "'></a><select id='" + x + "-\r\\' msallowcapture=''><option selected=''></option></select>",
                            e.querySelectorAll("[msallowcapture^='']").length && g.push("[*^$]=[\\x20\\t\\r\\n\\f]*(?:''|\"\")"),
                            e.querySelectorAll("[selected]").length || g.push("\\[[\\x20\\t\\r\\n\\f]*(?:value|" + M + ")"),
                            e.querySelectorAll("[id~=" + x + "-]").length || g.push("~="),
                            (t = p.createElement("input")).setAttribute("name", ""),
                            e.appendChild(t),
                            e.querySelectorAll("[name='']").length || g.push("\\[[\\x20\\t\\r\\n\\f]*name[\\x20\\t\\r\\n\\f]*=[\\x20\\t\\r\\n\\f]*(?:''|\"\")"),
                            e.querySelectorAll(":checked").length || g.push(":checked"),
                            e.querySelectorAll("a#" + x + "+*").length || g.push(".#.+[+~]"),
                            e.querySelectorAll("\\\f"),
                            g.push("[\\r\\n\\f]")
                        }
                        )),
                        ce((function(e) {
                            e.innerHTML = "<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";
                            var t = p.createElement("input");
                            t.setAttribute("type", "hidden"),
                            e.appendChild(t).setAttribute("name", "D"),
                            e.querySelectorAll("[name=d]").length && g.push("name[\\x20\\t\\r\\n\\f]*[*^$|!~]?="),
                            2 !== e.querySelectorAll(":enabled").length && g.push(":enabled", ":disabled"),
                            h.appendChild(e).disabled = !0,
                            2 !== e.querySelectorAll(":disabled").length && g.push(":enabled", ":disabled"),
                            e.querySelectorAll("*,:x"),
                            g.push(",.*:")
                        }
                        ))),
                        (n.matchesSelector = K.test(y = h.matches || h.webkitMatchesSelector || h.mozMatchesSelector || h.oMatchesSelector || h.msMatchesSelector)) && ce((function(e) {
                            n.disconnectedMatch = y.call(e, "*"),
                            y.call(e, "[s!='']:x"),
                            v.push("!=", F)
                        }
                        )),
                        g = g.length && new RegExp(g.join("|")),
                        v = v.length && new RegExp(v.join("|")),
                        t = K.test(h.compareDocumentPosition),
                        b = t || K.test(h.contains) ? function(e, t) {
                            var n = 9 === e.nodeType ? e.documentElement : e
                              , r = t && t.parentNode;
                            return e === r || !(!r || 1 !== r.nodeType || !(n.contains ? n.contains(r) : e.compareDocumentPosition && 16 & e.compareDocumentPosition(r)))
                        }
                        : function(e, t) {
                            if (t)
                                for (; t = t.parentNode; )
                                    if (t === e)
                                        return !0;
                            return !1
                        }
                        ,
                        D = t ? function(e, t) {
                            if (e === t)
                                return f = !0,
                                0;
                            var r = !e.compareDocumentPosition - !t.compareDocumentPosition;
                            return r || (1 & (r = (e.ownerDocument || e) == (t.ownerDocument || t) ? e.compareDocumentPosition(t) : 1) || !n.sortDetached && t.compareDocumentPosition(e) === r ? e == p || e.ownerDocument == w && b(w, e) ? -1 : t == p || t.ownerDocument == w && b(w, t) ? 1 : c ? I(c, e) - I(c, t) : 0 : 4 & r ? -1 : 1)
                        }
                        : function(e, t) {
                            if (e === t)
                                return f = !0,
                                0;
                            var n, r = 0, i = e.parentNode, o = t.parentNode, a = [e], s = [t];
                            if (!i || !o)
                                return e == p ? -1 : t == p ? 1 : i ? -1 : o ? 1 : c ? I(c, e) - I(c, t) : 0;
                            if (i === o)
                                return de(e, t);
                            for (n = e; n = n.parentNode; )
                                a.unshift(n);
                            for (n = t; n = n.parentNode; )
                                s.unshift(n);
                            for (; a[r] === s[r]; )
                                r++;
                            return r ? de(a[r], s[r]) : a[r] == w ? -1 : s[r] == w ? 1 : 0
                        }
                        ,
                        p) : p
                    }
                    ,
                    se.matches = function(e, t) {
                        return se(e, null, null, t)
                    }
                    ,
                    se.matchesSelector = function(e, t) {
                        if (d(e),
                        n.matchesSelector && m && !A[t + " "] && (!v || !v.test(t)) && (!g || !g.test(t)))
                            try {
                                var r = y.call(e, t);
                                if (r || n.disconnectedMatch || e.document && 11 !== e.document.nodeType)
                                    return r
                            } catch (e) {
                                A(t, !0)
                            }
                        return se(t, p, null, [e]).length > 0
                    }
                    ,
                    se.contains = function(e, t) {
                        return (e.ownerDocument || e) != p && d(e),
                        b(e, t)
                    }
                    ,
                    se.attr = function(e, t) {
                        (e.ownerDocument || e) != p && d(e);
                        var i = r.attrHandle[t.toLowerCase()]
                          , o = i && N.call(r.attrHandle, t.toLowerCase()) ? i(e, t, !m) : void 0;
                        return void 0 !== o ? o : n.attributes || !m ? e.getAttribute(t) : (o = e.getAttributeNode(t)) && o.specified ? o.value : null
                    }
                    ,
                    se.escape = function(e) {
                        return (e + "").replace(re, ie)
                    }
                    ,
                    se.error = function(e) {
                        throw new Error("Syntax error, unrecognized expression: " + e)
                    }
                    ,
                    se.uniqueSort = function(e) {
                        var t, r = [], i = 0, o = 0;
                        if (f = !n.detectDuplicates,
                        c = !n.sortStable && e.slice(0),
                        e.sort(D),
                        f) {
                            for (; t = e[o++]; )
                                t === e[o] && (i = r.push(o));
                            for (; i--; )
                                e.splice(r[i], 1)
                        }
                        return c = null,
                        e
                    }
                    ,
                    i = se.getText = function(e) {
                        var t, n = "", r = 0, o = e.nodeType;
                        if (o) {
                            if (1 === o || 9 === o || 11 === o) {
                                if ("string" == typeof e.textContent)
                                    return e.textContent;
                                for (e = e.firstChild; e; e = e.nextSibling)
                                    n += i(e)
                            } else if (3 === o || 4 === o)
                                return e.nodeValue
                        } else
                            for (; t = e[r++]; )
                                n += i(t);
                        return n
                    }
                    ,
                    (r = se.selectors = {
                        cacheLength: 50,
                        createPseudo: ue,
                        match: Q,
                        attrHandle: {},
                        find: {},
                        relative: {
                            ">": {
                                dir: "parentNode",
                                first: !0
                            },
                            " ": {
                                dir: "parentNode"
                            },
                            "+": {
                                dir: "previousSibling",
                                first: !0
                            },
                            "~": {
                                dir: "previousSibling"
                            }
                        },
                        preFilter: {
                            ATTR: function(e) {
                                return e[1] = e[1].replace(te, ne),
                                e[3] = (e[3] || e[4] || e[5] || "").replace(te, ne),
                                "~=" === e[2] && (e[3] = " " + e[3] + " "),
                                e.slice(0, 4)
                            },
                            CHILD: function(e) {
                                return e[1] = e[1].toLowerCase(),
                                "nth" === e[1].slice(0, 3) ? (e[3] || se.error(e[0]),
                                e[4] = +(e[4] ? e[5] + (e[6] || 1) : 2 * ("even" === e[3] || "odd" === e[3])),
                                e[5] = +(e[7] + e[8] || "odd" === e[3])) : e[3] && se.error(e[0]),
                                e
                            },
                            PSEUDO: function(e) {
                                var t, n = !e[6] && e[2];
                                return Q.CHILD.test(e[0]) ? null : (e[3] ? e[2] = e[4] || e[5] || "" : n && X.test(n) && (t = a(n, !0)) && (t = n.indexOf(")", n.length - t) - n.length) && (e[0] = e[0].slice(0, t),
                                e[2] = n.slice(0, t)),
                                e.slice(0, 3))
                            }
                        },
                        filter: {
                            TAG: function(e) {
                                var t = e.replace(te, ne).toLowerCase();
                                return "*" === e ? function() {
                                    return !0
                                }
                                : function(e) {
                                    return e.nodeName && e.nodeName.toLowerCase() === t
                                }
                            },
                            CLASS: function(e) {
                                var t = C[e + " "];
                                return t || (t = new RegExp("(^|[\\x20\\t\\r\\n\\f])" + e + "(" + P + "|$)")) && C(e, (function(e) {
                                    return t.test("string" == typeof e.className && e.className || void 0 !== e.getAttribute && e.getAttribute("class") || "")
                                }
                                ))
                            },
                            ATTR: function(e, t, n) {
                                return function(r) {
                                    var i = se.attr(r, e);
                                    return null == i ? "!=" === t : !t || (i += "",
                                    "=" === t ? i === n : "!=" === t ? i !== n : "^=" === t ? n && 0 === i.indexOf(n) : "*=" === t ? n && i.indexOf(n) > -1 : "$=" === t ? n && i.slice(-n.length) === n : "~=" === t ? (" " + i.replace(_, " ") + " ").indexOf(n) > -1 : "|=" === t && (i === n || i.slice(0, n.length + 1) === n + "-"))
                                }
                            },
                            CHILD: function(e, t, n, r, i) {
                                var o = "nth" !== e.slice(0, 3)
                                  , a = "last" !== e.slice(-4)
                                  , s = "of-type" === t;
                                return 1 === r && 0 === i ? function(e) {
                                    return !!e.parentNode
                                }
                                : function(t, n, l) {
                                    var u, c, f, d, p, h, m = o !== a ? "nextSibling" : "previousSibling", g = t.parentNode, v = s && t.nodeName.toLowerCase(), y = !l && !s, b = !1;
                                    if (g) {
                                        if (o) {
                                            for (; m; ) {
                                                for (d = t; d = d[m]; )
                                                    if (s ? d.nodeName.toLowerCase() === v : 1 === d.nodeType)
                                                        return !1;
                                                h = m = "only" === e && !h && "nextSibling"
                                            }
                                            return !0
                                        }
                                        if (h = [a ? g.firstChild : g.lastChild],
                                        a && y) {
                                            for (b = (p = (u = (c = (f = (d = g)[x] || (d[x] = {}))[d.uniqueID] || (f[d.uniqueID] = {}))[e] || [])[0] === T && u[1]) && u[2],
                                            d = p && g.childNodes[p]; d = ++p && d && d[m] || (b = p = 0) || h.pop(); )
                                                if (1 === d.nodeType && ++b && d === t) {
                                                    c[e] = [T, p, b];
                                                    break
                                                }
                                        } else if (y && (b = p = (u = (c = (f = (d = t)[x] || (d[x] = {}))[d.uniqueID] || (f[d.uniqueID] = {}))[e] || [])[0] === T && u[1]),
                                        !1 === b)
                                            for (; (d = ++p && d && d[m] || (b = p = 0) || h.pop()) && ((s ? d.nodeName.toLowerCase() !== v : 1 !== d.nodeType) || !++b || (y && ((c = (f = d[x] || (d[x] = {}))[d.uniqueID] || (f[d.uniqueID] = {}))[e] = [T, b]),
                                            d !== t)); )
                                                ;
                                        return (b -= i) === r || b % r == 0 && b / r >= 0
                                    }
                                }
                            },
                            PSEUDO: function(e, t) {
                                var n, i = r.pseudos[e] || r.setFilters[e.toLowerCase()] || se.error("unsupported pseudo: " + e);
                                return i[x] ? i(t) : i.length > 1 ? (n = [e, e, "", t],
                                r.setFilters.hasOwnProperty(e.toLowerCase()) ? ue((function(e, n) {
                                    for (var r, o = i(e, t), a = o.length; a--; )
                                        e[r = I(e, o[a])] = !(n[r] = o[a])
                                }
                                )) : function(e) {
                                    return i(e, 0, n)
                                }
                                ) : i
                            }
                        },
                        pseudos: {
                            not: ue((function(e) {
                                var t = []
                                  , n = []
                                  , r = s(e.replace(z, "$1"));
                                return r[x] ? ue((function(e, t, n, i) {
                                    for (var o, a = r(e, null, i, []), s = e.length; s--; )
                                        (o = a[s]) && (e[s] = !(t[s] = o))
                                }
                                )) : function(e, i, o) {
                                    return t[0] = e,
                                    r(t, null, o, n),
                                    t[0] = null,
                                    !n.pop()
                                }
                            }
                            )),
                            has: ue((function(e) {
                                return function(t) {
                                    return se(e, t).length > 0
                                }
                            }
                            )),
                            contains: ue((function(e) {
                                return e = e.replace(te, ne),
                                function(t) {
                                    return (t.textContent || i(t)).indexOf(e) > -1
                                }
                            }
                            )),
                            lang: ue((function(e) {
                                return V.test(e || "") || se.error("unsupported lang: " + e),
                                e = e.replace(te, ne).toLowerCase(),
                                function(t) {
                                    var n;
                                    do {
                                        if (n = m ? t.lang : t.getAttribute("xml:lang") || t.getAttribute("lang"))
                                            return (n = n.toLowerCase()) === e || 0 === n.indexOf(e + "-")
                                    } while ((t = t.parentNode) && 1 === t.nodeType);
                                    return !1
                                }
                            }
                            )),
                            target: function(t) {
                                var n = e.location && e.location.hash;
                                return n && n.slice(1) === t.id
                            },
                            root: function(e) {
                                return e === h
                            },
                            focus: function(e) {
                                return e === p.activeElement && (!p.hasFocus || p.hasFocus()) && !!(e.type || e.href || ~e.tabIndex)
                            },
                            enabled: me(!1),
                            disabled: me(!0),
                            checked: function(e) {
                                var t = e.nodeName.toLowerCase();
                                return "input" === t && !!e.checked || "option" === t && !!e.selected
                            },
                            selected: function(e) {
                                return e.parentNode && e.parentNode.selectedIndex,
                                !0 === e.selected
                            },
                            empty: function(e) {
                                for (e = e.firstChild; e; e = e.nextSibling)
                                    if (e.nodeType < 6)
                                        return !1;
                                return !0
                            },
                            parent: function(e) {
                                return !r.pseudos.empty(e)
                            },
                            header: function(e) {
                                return J.test(e.nodeName)
                            },
                            input: function(e) {
                                return G.test(e.nodeName)
                            },
                            button: function(e) {
                                var t = e.nodeName.toLowerCase();
                                return "input" === t && "button" === e.type || "button" === t
                            },
                            text: function(e) {
                                var t;
                                return "input" === e.nodeName.toLowerCase() && "text" === e.type && (null == (t = e.getAttribute("type")) || "text" === t.toLowerCase())
                            },
                            first: ge((function() {
                                return [0]
                            }
                            )),
                            last: ge((function(e, t) {
                                return [t - 1]
                            }
                            )),
                            eq: ge((function(e, t, n) {
                                return [n < 0 ? n + t : n]
                            }
                            )),
                            even: ge((function(e, t) {
                                for (var n = 0; n < t; n += 2)
                                    e.push(n);
                                return e
                            }
                            )),
                            odd: ge((function(e, t) {
                                for (var n = 1; n < t; n += 2)
                                    e.push(n);
                                return e
                            }
                            )),
                            lt: ge((function(e, t, n) {
                                for (var r = n < 0 ? n + t : n > t ? t : n; --r >= 0; )
                                    e.push(r);
                                return e
                            }
                            )),
                            gt: ge((function(e, t, n) {
                                for (var r = n < 0 ? n + t : n; ++r < t; )
                                    e.push(r);
                                return e
                            }
                            ))
                        }
                    }).pseudos.nth = r.pseudos.eq,
                    {
                        radio: !0,
                        checkbox: !0,
                        file: !0,
                        password: !0,
                        image: !0
                    })
                        r.pseudos[t] = pe(t);
                    for (t in {
                        submit: !0,
                        reset: !0
                    })
                        r.pseudos[t] = he(t);
                    function ye() {}
                    function be(e) {
                        for (var t = 0, n = e.length, r = ""; t < n; t++)
                            r += e[t].value;
                        return r
                    }
                    function xe(e, t, n) {
                        var r = t.dir
                          , i = t.next
                          , o = i || r
                          , a = n && "parentNode" === o
                          , s = k++;
                        return t.first ? function(t, n, i) {
                            for (; t = t[r]; )
                                if (1 === t.nodeType || a)
                                    return e(t, n, i);
                            return !1
                        }
                        : function(t, n, l) {
                            var u, c, f, d = [T, s];
                            if (l) {
                                for (; t = t[r]; )
                                    if ((1 === t.nodeType || a) && e(t, n, l))
                                        return !0
                            } else
                                for (; t = t[r]; )
                                    if (1 === t.nodeType || a)
                                        if (c = (f = t[x] || (t[x] = {}))[t.uniqueID] || (f[t.uniqueID] = {}),
                                        i && i === t.nodeName.toLowerCase())
                                            t = t[r] || t;
                                        else {
                                            if ((u = c[o]) && u[0] === T && u[1] === s)
                                                return d[2] = u[2];
                                            if (c[o] = d,
                                            d[2] = e(t, n, l))
                                                return !0
                                        }
                            return !1
                        }
                    }
                    function we(e) {
                        return e.length > 1 ? function(t, n, r) {
                            for (var i = e.length; i--; )
                                if (!e[i](t, n, r))
                                    return !1;
                            return !0
                        }
                        : e[0]
                    }
                    function Te(e, t, n, r, i) {
                        for (var o, a = [], s = 0, l = e.length, u = null != t; s < l; s++)
                            (o = e[s]) && (n && !n(o, r, i) || (a.push(o),
                            u && t.push(s)));
                        return a
                    }
                    function ke(e, t, n, r, i, o) {
                        return r && !r[x] && (r = ke(r)),
                        i && !i[x] && (i = ke(i, o)),
                        ue((function(o, a, s, l) {
                            var u, c, f, d = [], p = [], h = a.length, m = o || function(e, t, n) {
                                for (var r = 0, i = t.length; r < i; r++)
                                    se(e, t[r], n);
                                return n
                            }(t || "*", s.nodeType ? [s] : s, []), g = !e || !o && t ? m : Te(m, d, e, s, l), v = n ? i || (o ? e : h || r) ? [] : a : g;
                            if (n && n(g, v, s, l),
                            r)
                                for (u = Te(v, p),
                                r(u, [], s, l),
                                c = u.length; c--; )
                                    (f = u[c]) && (v[p[c]] = !(g[p[c]] = f));
                            if (o) {
                                if (i || e) {
                                    if (i) {
                                        for (u = [],
                                        c = v.length; c--; )
                                            (f = v[c]) && u.push(g[c] = f);
                                        i(null, v = [], u, l)
                                    }
                                    for (c = v.length; c--; )
                                        (f = v[c]) && (u = i ? I(o, f) : d[c]) > -1 && (o[u] = !(a[u] = f))
                                }
                            } else
                                v = Te(v === a ? v.splice(h, v.length) : v),
                                i ? i(null, a, v, l) : q.apply(a, v)
                        }
                        ))
                    }
                    function Ce(e) {
                        for (var t, n, i, o = e.length, a = r.relative[e[0].type], s = a || r.relative[" "], l = a ? 1 : 0, c = xe((function(e) {
                            return e === t
                        }
                        ), s, !0), f = xe((function(e) {
                            return I(t, e) > -1
                        }
                        ), s, !0), d = [function(e, n, r) {
                            var i = !a && (r || n !== u) || ((t = n).nodeType ? c(e, n, r) : f(e, n, r));
                            return t = null,
                            i
                        }
                        ]; l < o; l++)
                            if (n = r.relative[e[l].type])
                                d = [xe(we(d), n)];
                            else {
                                if ((n = r.filter[e[l].type].apply(null, e[l].matches))[x]) {
                                    for (i = ++l; i < o && !r.relative[e[i].type]; i++)
                                        ;
                                    return ke(l > 1 && we(d), l > 1 && be(e.slice(0, l - 1).concat({
                                        value: " " === e[l - 2].type ? "*" : ""
                                    })).replace(z, "$1"), n, l < i && Ce(e.slice(l, i)), i < o && Ce(e = e.slice(i)), i < o && be(e))
                                }
                                d.push(n)
                            }
                        return we(d)
                    }
                    return ye.prototype = r.filters = r.pseudos,
                    r.setFilters = new ye,
                    a = se.tokenize = function(e, t) {
                        var n, i, o, a, s, l, u, c = E[e + " "];
                        if (c)
                            return t ? 0 : c.slice(0);
                        for (s = e,
                        l = [],
                        u = r.preFilter; s; ) {
                            for (a in n && !(i = B.exec(s)) || (i && (s = s.slice(i[0].length) || s),
                            l.push(o = [])),
                            n = !1,
                            (i = W.exec(s)) && (n = i.shift(),
                            o.push({
                                value: n,
                                type: i[0].replace(z, " ")
                            }),
                            s = s.slice(n.length)),
                            r.filter)
                                !(i = Q[a].exec(s)) || u[a] && !(i = u[a](i)) || (n = i.shift(),
                                o.push({
                                    value: n,
                                    type: a,
                                    matches: i
                                }),
                                s = s.slice(n.length));
                            if (!n)
                                break
                        }
                        return t ? s.length : s ? se.error(e) : E(e, l).slice(0)
                    }
                    ,
                    s = se.compile = function(e, t) {
                        var n, i = [], o = [], s = S[e + " "];
                        if (!s) {
                            for (t || (t = a(e)),
                            n = t.length; n--; )
                                (s = Ce(t[n]))[x] ? i.push(s) : o.push(s);
                            (s = S(e, function(e, t) {
                                var n = t.length > 0
                                  , i = e.length > 0
                                  , o = function(o, a, s, l, c) {
                                    var f, h, g, v = 0, y = "0", b = o && [], x = [], w = u, k = o || i && r.find.TAG("*", c), C = T += null == w ? 1 : Math.random() || .1, E = k.length;
                                    for (c && (u = a == p || a || c); y !== E && null != (f = k[y]); y++) {
                                        if (i && f) {
                                            for (h = 0,
                                            a || f.ownerDocument == p || (d(f),
                                            s = !m); g = e[h++]; )
                                                if (g(f, a || p, s)) {
                                                    l.push(f);
                                                    break
                                                }
                                            c && (T = C)
                                        }
                                        n && ((f = !g && f) && v--,
                                        o && b.push(f))
                                    }
                                    if (v += y,
                                    n && y !== v) {
                                        for (h = 0; g = t[h++]; )
                                            g(b, x, a, s);
                                        if (o) {
                                            if (v > 0)
                                                for (; y--; )
                                                    b[y] || x[y] || (x[y] = L.call(l));
                                            x = Te(x)
                                        }
                                        q.apply(l, x),
                                        c && !o && x.length > 0 && v + t.length > 1 && se.uniqueSort(l)
                                    }
                                    return c && (T = C,
                                    u = w),
                                    b
                                };
                                return n ? ue(o) : o
                            }(o, i))).selector = e
                        }
                        return s
                    }
                    ,
                    l = se.select = function(e, t, n, i) {
                        var o, l, u, c, f, d = "function" == typeof e && e, p = !i && a(e = d.selector || e);
                        if (n = n || [],
                        1 === p.length) {
                            if ((l = p[0] = p[0].slice(0)).length > 2 && "ID" === (u = l[0]).type && 9 === t.nodeType && m && r.relative[l[1].type]) {
                                if (!(t = (r.find.ID(u.matches[0].replace(te, ne), t) || [])[0]))
                                    return n;
                                d && (t = t.parentNode),
                                e = e.slice(l.shift().value.length)
                            }
                            for (o = Q.needsContext.test(e) ? 0 : l.length; o-- && (u = l[o],
                            !r.relative[c = u.type]); )
                                if ((f = r.find[c]) && (i = f(u.matches[0].replace(te, ne), ee.test(l[0].type) && ve(t.parentNode) || t))) {
                                    if (l.splice(o, 1),
                                    !(e = i.length && be(l)))
                                        return q.apply(n, i),
                                        n;
                                    break
                                }
                        }
                        return (d || s(e, p))(i, t, !m, n, !t || ee.test(e) && ve(t.parentNode) || t),
                        n
                    }
                    ,
                    n.sortStable = x.split("").sort(D).join("") === x,
                    n.detectDuplicates = !!f,
                    d(),
                    n.sortDetached = ce((function(e) {
                        return 1 & e.compareDocumentPosition(p.createElement("fieldset"))
                    }
                    )),
                    ce((function(e) {
                        return e.innerHTML = "<a href='#'></a>",
                        "#" === e.firstChild.getAttribute("href")
                    }
                    )) || fe("type|href|height|width", (function(e, t, n) {
                        if (!n)
                            return e.getAttribute(t, "type" === t.toLowerCase() ? 1 : 2)
                    }
                    )),
                    n.attributes && ce((function(e) {
                        return e.innerHTML = "<input/>",
                        e.firstChild.setAttribute("value", ""),
                        "" === e.firstChild.getAttribute("value")
                    }
                    )) || fe("value", (function(e, t, n) {
                        if (!n && "input" === e.nodeName.toLowerCase())
                            return e.defaultValue
                    }
                    )),
                    ce((function(e) {
                        return null == e.getAttribute("disabled")
                    }
                    )) || fe(M, (function(e, t, n) {
                        var r;
                        if (!n)
                            return !0 === e[t] ? t.toLowerCase() : (r = e.getAttributeNode(t)) && r.specified ? r.value : null
                    }
                    )),
                    se
                }(r);
                C.find = S,
                C.expr = S.selectors,
                C.expr[":"] = C.expr.pseudos,
                C.uniqueSort = C.unique = S.uniqueSort,
                C.text = S.getText,
                C.isXMLDoc = S.isXML,
                C.contains = S.contains,
                C.escapeSelector = S.escape;
                var A = function(e, t, n) {
                    for (var r = [], i = void 0 !== n; (e = e[t]) && 9 !== e.nodeType; )
                        if (1 === e.nodeType) {
                            if (i && C(e).is(n))
                                break;
                            r.push(e)
                        }
                    return r
                }
                  , D = function(e, t) {
                    for (var n = []; e; e = e.nextSibling)
                        1 === e.nodeType && e !== t && n.push(e);
                    return n
                }
                  , N = C.expr.match.needsContext;
                function j(e, t) {
                    return e.nodeName && e.nodeName.toLowerCase() === t.toLowerCase()
                }
                var L = /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;
                function O(e, t, n) {
                    return v(t) ? C.grep(e, (function(e, r) {
                        return !!t.call(e, r, e) !== n
                    }
                    )) : t.nodeType ? C.grep(e, (function(e) {
                        return e === t !== n
                    }
                    )) : "string" != typeof t ? C.grep(e, (function(e) {
                        return c.call(t, e) > -1 !== n
                    }
                    )) : C.filter(t, e, n)
                }
                C.filter = function(e, t, n) {
                    var r = t[0];
                    return n && (e = ":not(" + e + ")"),
                    1 === t.length && 1 === r.nodeType ? C.find.matchesSelector(r, e) ? [r] : [] : C.find.matches(e, C.grep(t, (function(e) {
                        return 1 === e.nodeType
                    }
                    )))
                }
                ,
                C.fn.extend({
                    find: function(e) {
                        var t, n, r = this.length, i = this;
                        if ("string" != typeof e)
                            return this.pushStack(C(e).filter((function() {
                                for (t = 0; t < r; t++)
                                    if (C.contains(i[t], this))
                                        return !0
                            }
                            )));
                        for (n = this.pushStack([]),
                        t = 0; t < r; t++)
                            C.find(e, i[t], n);
                        return r > 1 ? C.uniqueSort(n) : n
                    },
                    filter: function(e) {
                        return this.pushStack(O(this, e || [], !1))
                    },
                    not: function(e) {
                        return this.pushStack(O(this, e || [], !0))
                    },
                    is: function(e) {
                        return !!O(this, "string" == typeof e && N.test(e) ? C(e) : e || [], !1).length
                    }
                });
                var q, $ = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;
                (C.fn.init = function(e, t, n) {
                    var r, i;
                    if (!e)
                        return this;
                    if (n = n || q,
                    "string" == typeof e) {
                        if (!(r = "<" === e[0] && ">" === e[e.length - 1] && e.length >= 3 ? [null, e, null] : $.exec(e)) || !r[1] && t)
                            return !t || t.jquery ? (t || n).find(e) : this.constructor(t).find(e);
                        if (r[1]) {
                            if (t = t instanceof C ? t[0] : t,
                            C.merge(this, C.parseHTML(r[1], t && t.nodeType ? t.ownerDocument || t : b, !0)),
                            L.test(r[1]) && C.isPlainObject(t))
                                for (r in t)
                                    v(this[r]) ? this[r](t[r]) : this.attr(r, t[r]);
                            return this
                        }
                        return (i = b.getElementById(r[2])) && (this[0] = i,
                        this.length = 1),
                        this
                    }
                    return e.nodeType ? (this[0] = e,
                    this.length = 1,
                    this) : v(e) ? void 0 !== n.ready ? n.ready(e) : e(C) : C.makeArray(e, this)
                }
                ).prototype = C.fn,
                q = C(b);
                var I = /^(?:parents|prev(?:Until|All))/
                  , M = {
                    children: !0,
                    contents: !0,
                    next: !0,
                    prev: !0
                };
                function P(e, t) {
                    for (; (e = e[t]) && 1 !== e.nodeType; )
                        ;
                    return e
                }
                C.fn.extend({
                    has: function(e) {
                        var t = C(e, this)
                          , n = t.length;
                        return this.filter((function() {
                            for (var e = 0; e < n; e++)
                                if (C.contains(this, t[e]))
                                    return !0
                        }
                        ))
                    },
                    closest: function(e, t) {
                        var n, r = 0, i = this.length, o = [], a = "string" != typeof e && C(e);
                        if (!N.test(e))
                            for (; r < i; r++)
                                for (n = this[r]; n && n !== t; n = n.parentNode)
                                    if (n.nodeType < 11 && (a ? a.index(n) > -1 : 1 === n.nodeType && C.find.matchesSelector(n, e))) {
                                        o.push(n);
                                        break
                                    }
                        return this.pushStack(o.length > 1 ? C.uniqueSort(o) : o)
                    },
                    index: function(e) {
                        return e ? "string" == typeof e ? c.call(C(e), this[0]) : c.call(this, e.jquery ? e[0] : e) : this[0] && this[0].parentNode ? this.first().prevAll().length : -1
                    },
                    add: function(e, t) {
                        return this.pushStack(C.uniqueSort(C.merge(this.get(), C(e, t))))
                    },
                    addBack: function(e) {
                        return this.add(null == e ? this.prevObject : this.prevObject.filter(e))
                    }
                }),
                C.each({
                    parent: function(e) {
                        var t = e.parentNode;
                        return t && 11 !== t.nodeType ? t : null
                    },
                    parents: function(e) {
                        return A(e, "parentNode")
                    },
                    parentsUntil: function(e, t, n) {
                        return A(e, "parentNode", n)
                    },
                    next: function(e) {
                        return P(e, "nextSibling")
                    },
                    prev: function(e) {
                        return P(e, "previousSibling")
                    },
                    nextAll: function(e) {
                        return A(e, "nextSibling")
                    },
                    prevAll: function(e) {
                        return A(e, "previousSibling")
                    },
                    nextUntil: function(e, t, n) {
                        return A(e, "nextSibling", n)
                    },
                    prevUntil: function(e, t, n) {
                        return A(e, "previousSibling", n)
                    },
                    siblings: function(e) {
                        return D((e.parentNode || {}).firstChild, e)
                    },
                    children: function(e) {
                        return D(e.firstChild)
                    },
                    contents: function(e) {
                        return null != e.contentDocument && a(e.contentDocument) ? e.contentDocument : (j(e, "template") && (e = e.content || e),
                        C.merge([], e.childNodes))
                    }
                }, (function(e, t) {
                    C.fn[e] = function(n, r) {
                        var i = C.map(this, t, n);
                        return "Until" !== e.slice(-5) && (r = n),
                        r && "string" == typeof r && (i = C.filter(r, i)),
                        this.length > 1 && (M[e] || C.uniqueSort(i),
                        I.test(e) && i.reverse()),
                        this.pushStack(i)
                    }
                }
                ));
                var H = /[^\x20\t\r\n\f]+/g;
                function R(e) {
                    return e
                }
                function F(e) {
                    throw e
                }
                function _(e, t, n, r) {
                    var i;
                    try {
                        e && v(i = e.promise) ? i.call(e).done(t).fail(n) : e && v(i = e.then) ? i.call(e, t, n) : t.apply(void 0, [e].slice(r))
                    } catch (e) {
                        n.apply(void 0, [e])
                    }
                }
                C.Callbacks = function(e) {
                    e = "string" == typeof e ? function(e) {
                        var t = {};
                        return C.each(e.match(H) || [], (function(e, n) {
                            t[n] = !0
                        }
                        )),
                        t
                    }(e) : C.extend({}, e);
                    var t, n, r, i, o = [], a = [], s = -1, l = function() {
                        for (i = i || e.once,
                        r = t = !0; a.length; s = -1)
                            for (n = a.shift(); ++s < o.length; )
                                !1 === o[s].apply(n[0], n[1]) && e.stopOnFalse && (s = o.length,
                                n = !1);
                        e.memory || (n = !1),
                        t = !1,
                        i && (o = n ? [] : "")
                    }, u = {
                        add: function() {
                            return o && (n && !t && (s = o.length - 1,
                            a.push(n)),
                            function t(n) {
                                C.each(n, (function(n, r) {
                                    v(r) ? e.unique && u.has(r) || o.push(r) : r && r.length && "string" !== T(r) && t(r)
                                }
                                ))
                            }(arguments),
                            n && !t && l()),
                            this
                        },
                        remove: function() {
                            return C.each(arguments, (function(e, t) {
                                for (var n; (n = C.inArray(t, o, n)) > -1; )
                                    o.splice(n, 1),
                                    n <= s && s--
                            }
                            )),
                            this
                        },
                        has: function(e) {
                            return e ? C.inArray(e, o) > -1 : o.length > 0
                        },
                        empty: function() {
                            return o && (o = []),
                            this
                        },
                        disable: function() {
                            return i = a = [],
                            o = n = "",
                            this
                        },
                        disabled: function() {
                            return !o
                        },
                        lock: function() {
                            return i = a = [],
                            n || t || (o = n = ""),
                            this
                        },
                        locked: function() {
                            return !!i
                        },
                        fireWith: function(e, n) {
                            return i || (n = [e, (n = n || []).slice ? n.slice() : n],
                            a.push(n),
                            t || l()),
                            this
                        },
                        fire: function() {
                            return u.fireWith(this, arguments),
                            this
                        },
                        fired: function() {
                            return !!r
                        }
                    };
                    return u
                }
                ,
                C.extend({
                    Deferred: function(e) {
                        var t = [["notify", "progress", C.Callbacks("memory"), C.Callbacks("memory"), 2], ["resolve", "done", C.Callbacks("once memory"), C.Callbacks("once memory"), 0, "resolved"], ["reject", "fail", C.Callbacks("once memory"), C.Callbacks("once memory"), 1, "rejected"]]
                          , n = "pending"
                          , i = {
                            state: function() {
                                return n
                            },
                            always: function() {
                                return o.done(arguments).fail(arguments),
                                this
                            },
                            catch: function(e) {
                                return i.then(null, e)
                            },
                            pipe: function() {
                                var e = arguments;
                                return C.Deferred((function(n) {
                                    C.each(t, (function(t, r) {
                                        var i = v(e[r[4]]) && e[r[4]];
                                        o[r[1]]((function() {
                                            var e = i && i.apply(this, arguments);
                                            e && v(e.promise) ? e.promise().progress(n.notify).done(n.resolve).fail(n.reject) : n[r[0] + "With"](this, i ? [e] : arguments)
                                        }
                                        ))
                                    }
                                    )),
                                    e = null
                                }
                                )).promise()
                            },
                            then: function(e, n, i) {
                                var o = 0;
                                function a(e, t, n, i) {
                                    return function() {
                                        var s = this
                                          , l = arguments
                                          , u = function() {
                                            var r, u;
                                            if (!(e < o)) {
                                                if ((r = n.apply(s, l)) === t.promise())
                                                    throw new TypeError("Thenable self-resolution");
                                                u = r && ("object" == typeof r || "function" == typeof r) && r.then,
                                                v(u) ? i ? u.call(r, a(o, t, R, i), a(o, t, F, i)) : (o++,
                                                u.call(r, a(o, t, R, i), a(o, t, F, i), a(o, t, R, t.notifyWith))) : (n !== R && (s = void 0,
                                                l = [r]),
                                                (i || t.resolveWith)(s, l))
                                            }
                                        }
                                          , c = i ? u : function() {
                                            try {
                                                u()
                                            } catch (r) {
                                                C.Deferred.exceptionHook && C.Deferred.exceptionHook(r, c.stackTrace),
                                                e + 1 >= o && (n !== F && (s = void 0,
                                                l = [r]),
                                                t.rejectWith(s, l))
                                            }
                                        }
                                        ;
                                        e ? c() : (C.Deferred.getStackHook && (c.stackTrace = C.Deferred.getStackHook()),
                                        r.setTimeout(c))
                                    }
                                }
                                return C.Deferred((function(r) {
                                    t[0][3].add(a(0, r, v(i) ? i : R, r.notifyWith)),
                                    t[1][3].add(a(0, r, v(e) ? e : R)),
                                    t[2][3].add(a(0, r, v(n) ? n : F))
                                }
                                )).promise()
                            },
                            promise: function(e) {
                                return null != e ? C.extend(e, i) : i
                            }
                        }
                          , o = {};
                        return C.each(t, (function(e, r) {
                            var a = r[2]
                              , s = r[5];
                            i[r[1]] = a.add,
                            s && a.add((function() {
                                n = s
                            }
                            ), t[3 - e][2].disable, t[3 - e][3].disable, t[0][2].lock, t[0][3].lock),
                            a.add(r[3].fire),
                            o[r[0]] = function() {
                                return o[r[0] + "With"](this === o ? void 0 : this, arguments),
                                this
                            }
                            ,
                            o[r[0] + "With"] = a.fireWith
                        }
                        )),
                        i.promise(o),
                        e && e.call(o, o),
                        o
                    },
                    when: function(e) {
                        var t = arguments.length
                          , n = t
                          , r = Array(n)
                          , i = s.call(arguments)
                          , o = C.Deferred()
                          , a = function(e) {
                            return function(n) {
                                r[e] = this,
                                i[e] = arguments.length > 1 ? s.call(arguments) : n,
                                --t || o.resolveWith(r, i)
                            }
                        };
                        if (t <= 1 && (_(e, o.done(a(n)).resolve, o.reject, !t),
                        "pending" === o.state() || v(i[n] && i[n].then)))
                            return o.then();
                        for (; n--; )
                            _(i[n], a(n), o.reject);
                        return o.promise()
                    }
                });
                var z = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
                C.Deferred.exceptionHook = function(e, t) {
                    r.console && r.console.warn && e && z.test(e.name) && r.console.warn("jQuery.Deferred exception: " + e.message, e.stack, t)
                }
                ,
                C.readyException = function(e) {
                    r.setTimeout((function() {
                        throw e
                    }
                    ))
                }
                ;
                var B = C.Deferred();
                function W() {
                    b.removeEventListener("DOMContentLoaded", W),
                    r.removeEventListener("load", W),
                    C.ready()
                }
                C.fn.ready = function(e) {
                    return B.then(e).catch((function(e) {
                        C.readyException(e)
                    }
                    )),
                    this
                }
                ,
                C.extend({
                    isReady: !1,
                    readyWait: 1,
                    ready: function(e) {
                        (!0 === e ? --C.readyWait : C.isReady) || (C.isReady = !0,
                        !0 !== e && --C.readyWait > 0 || B.resolveWith(b, [C]))
                    }
                }),
                C.ready.then = B.then,
                "complete" === b.readyState || "loading" !== b.readyState && !b.documentElement.doScroll ? r.setTimeout(C.ready) : (b.addEventListener("DOMContentLoaded", W),
                r.addEventListener("load", W));
                var U = function(e, t, n, r, i, o, a) {
                    var s = 0
                      , l = e.length
                      , u = null == n;
                    if ("object" === T(n))
                        for (s in i = !0,
                        n)
                            U(e, t, s, n[s], !0, o, a);
                    else if (void 0 !== r && (i = !0,
                    v(r) || (a = !0),
                    u && (a ? (t.call(e, r),
                    t = null) : (u = t,
                    t = function(e, t, n) {
                        return u.call(C(e), n)
                    }
                    )),
                    t))
                        for (; s < l; s++)
                            t(e[s], n, a ? r : r.call(e[s], s, t(e[s], n)));
                    return i ? e : u ? t.call(e) : l ? t(e[0], n) : o
                }
                  , X = /^-ms-/
                  , V = /-([a-z])/g;
                function Q(e, t) {
                    return t.toUpperCase()
                }
                function Y(e) {
                    return e.replace(X, "ms-").replace(V, Q)
                }
                var G = function(e) {
                    return 1 === e.nodeType || 9 === e.nodeType || !+e.nodeType
                };
                function J() {
                    this.expando = C.expando + J.uid++
                }
                J.uid = 1,
                J.prototype = {
                    cache: function(e) {
                        var t = e[this.expando];
                        return t || (t = {},
                        G(e) && (e.nodeType ? e[this.expando] = t : Object.defineProperty(e, this.expando, {
                            value: t,
                            configurable: !0
                        }))),
                        t
                    },
                    set: function(e, t, n) {
                        var r, i = this.cache(e);
                        if ("string" == typeof t)
                            i[Y(t)] = n;
                        else
                            for (r in t)
                                i[Y(r)] = t[r];
                        return i
                    },
                    get: function(e, t) {
                        return void 0 === t ? this.cache(e) : e[this.expando] && e[this.expando][Y(t)]
                    },
                    access: function(e, t, n) {
                        return void 0 === t || t && "string" == typeof t && void 0 === n ? this.get(e, t) : (this.set(e, t, n),
                        void 0 !== n ? n : t)
                    },
                    remove: function(e, t) {
                        var n, r = e[this.expando];
                        if (void 0 !== r) {
                            if (void 0 !== t) {
                                n = (t = Array.isArray(t) ? t.map(Y) : (t = Y(t))in r ? [t] : t.match(H) || []).length;
                                for (; n--; )
                                    delete r[t[n]]
                            }
                            (void 0 === t || C.isEmptyObject(r)) && (e.nodeType ? e[this.expando] = void 0 : delete e[this.expando])
                        }
                    },
                    hasData: function(e) {
                        var t = e[this.expando];
                        return void 0 !== t && !C.isEmptyObject(t)
                    }
                };
                var K = new J
                  , Z = new J
                  , ee = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/
                  , te = /[A-Z]/g;
                function ne(e, t, n) {
                    var r;
                    if (void 0 === n && 1 === e.nodeType)
                        if (r = "data-" + t.replace(te, "-$&").toLowerCase(),
                        "string" == typeof (n = e.getAttribute(r))) {
                            try {
                                n = function(e) {
                                    return "true" === e || "false" !== e && ("null" === e ? null : e === +e + "" ? +e : ee.test(e) ? JSON.parse(e) : e)
                                }(n)
                            } catch (e) {}
                            Z.set(e, t, n)
                        } else
                            n = void 0;
                    return n
                }
                C.extend({
                    hasData: function(e) {
                        return Z.hasData(e) || K.hasData(e)
                    },
                    data: function(e, t, n) {
                        return Z.access(e, t, n)
                    },
                    removeData: function(e, t) {
                        Z.remove(e, t)
                    },
                    _data: function(e, t, n) {
                        return K.access(e, t, n)
                    },
                    _removeData: function(e, t) {
                        K.remove(e, t)
                    }
                }),
                C.fn.extend({
                    data: function(e, t) {
                        var n, r, i, o = this[0], a = o && o.attributes;
                        if (void 0 === e) {
                            if (this.length && (i = Z.get(o),
                            1 === o.nodeType && !K.get(o, "hasDataAttrs"))) {
                                for (n = a.length; n--; )
                                    a[n] && 0 === (r = a[n].name).indexOf("data-") && (r = Y(r.slice(5)),
                                    ne(o, r, i[r]));
                                K.set(o, "hasDataAttrs", !0)
                            }
                            return i
                        }
                        return "object" == typeof e ? this.each((function() {
                            Z.set(this, e)
                        }
                        )) : U(this, (function(t) {
                            var n;
                            if (o && void 0 === t)
                                return void 0 !== (n = Z.get(o, e)) || void 0 !== (n = ne(o, e)) ? n : void 0;
                            this.each((function() {
                                Z.set(this, e, t)
                            }
                            ))
                        }
                        ), null, t, arguments.length > 1, null, !0)
                    },
                    removeData: function(e) {
                        return this.each((function() {
                            Z.remove(this, e)
                        }
                        ))
                    }
                }),
                C.extend({
                    queue: function(e, t, n) {
                        var r;
                        if (e)
                            return t = (t || "fx") + "queue",
                            r = K.get(e, t),
                            n && (!r || Array.isArray(n) ? r = K.access(e, t, C.makeArray(n)) : r.push(n)),
                            r || []
                    },
                    dequeue: function(e, t) {
                        t = t || "fx";
                        var n = C.queue(e, t)
                          , r = n.length
                          , i = n.shift()
                          , o = C._queueHooks(e, t);
                        "inprogress" === i && (i = n.shift(),
                        r--),
                        i && ("fx" === t && n.unshift("inprogress"),
                        delete o.stop,
                        i.call(e, (function() {
                            C.dequeue(e, t)
                        }
                        ), o)),
                        !r && o && o.empty.fire()
                    },
                    _queueHooks: function(e, t) {
                        var n = t + "queueHooks";
                        return K.get(e, n) || K.access(e, n, {
                            empty: C.Callbacks("once memory").add((function() {
                                K.remove(e, [t + "queue", n])
                            }
                            ))
                        })
                    }
                }),
                C.fn.extend({
                    queue: function(e, t) {
                        var n = 2;
                        return "string" != typeof e && (t = e,
                        e = "fx",
                        n--),
                        arguments.length < n ? C.queue(this[0], e) : void 0 === t ? this : this.each((function() {
                            var n = C.queue(this, e, t);
                            C._queueHooks(this, e),
                            "fx" === e && "inprogress" !== n[0] && C.dequeue(this, e)
                        }
                        ))
                    },
                    dequeue: function(e) {
                        return this.each((function() {
                            C.dequeue(this, e)
                        }
                        ))
                    },
                    clearQueue: function(e) {
                        return this.queue(e || "fx", [])
                    },
                    promise: function(e, t) {
                        var n, r = 1, i = C.Deferred(), o = this, a = this.length, s = function() {
                            --r || i.resolveWith(o, [o])
                        };
                        for ("string" != typeof e && (t = e,
                        e = void 0),
                        e = e || "fx"; a--; )
                            (n = K.get(o[a], e + "queueHooks")) && n.empty && (r++,
                            n.empty.add(s));
                        return s(),
                        i.promise(t)
                    }
                });
                var re = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source
                  , ie = new RegExp("^(?:([+-])=|)(" + re + ")([a-z%]*)$","i")
                  , oe = ["Top", "Right", "Bottom", "Left"]
                  , ae = b.documentElement
                  , se = function(e) {
                    return C.contains(e.ownerDocument, e)
                }
                  , le = {
                    composed: !0
                };
                ae.getRootNode && (se = function(e) {
                    return C.contains(e.ownerDocument, e) || e.getRootNode(le) === e.ownerDocument
                }
                );
                var ue = function(e, t) {
                    return "none" === (e = t || e).style.display || "" === e.style.display && se(e) && "none" === C.css(e, "display")
                };
                function ce(e, t, n, r) {
                    var i, o, a = 20, s = r ? function() {
                        return r.cur()
                    }
                    : function() {
                        return C.css(e, t, "")
                    }
                    , l = s(), u = n && n[3] || (C.cssNumber[t] ? "" : "px"), c = e.nodeType && (C.cssNumber[t] || "px" !== u && +l) && ie.exec(C.css(e, t));
                    if (c && c[3] !== u) {
                        for (l /= 2,
                        u = u || c[3],
                        c = +l || 1; a--; )
                            C.style(e, t, c + u),
                            (1 - o) * (1 - (o = s() / l || .5)) <= 0 && (a = 0),
                            c /= o;
                        c *= 2,
                        C.style(e, t, c + u),
                        n = n || []
                    }
                    return n && (c = +c || +l || 0,
                    i = n[1] ? c + (n[1] + 1) * n[2] : +n[2],
                    r && (r.unit = u,
                    r.start = c,
                    r.end = i)),
                    i
                }
                var fe = {};
                function de(e) {
                    var t, n = e.ownerDocument, r = e.nodeName, i = fe[r];
                    return i || (t = n.body.appendChild(n.createElement(r)),
                    i = C.css(t, "display"),
                    t.parentNode.removeChild(t),
                    "none" === i && (i = "block"),
                    fe[r] = i,
                    i)
                }
                function pe(e, t) {
                    for (var n, r, i = [], o = 0, a = e.length; o < a; o++)
                        (r = e[o]).style && (n = r.style.display,
                        t ? ("none" === n && (i[o] = K.get(r, "display") || null,
                        i[o] || (r.style.display = "")),
                        "" === r.style.display && ue(r) && (i[o] = de(r))) : "none" !== n && (i[o] = "none",
                        K.set(r, "display", n)));
                    for (o = 0; o < a; o++)
                        null != i[o] && (e[o].style.display = i[o]);
                    return e
                }
                C.fn.extend({
                    show: function() {
                        return pe(this, !0)
                    },
                    hide: function() {
                        return pe(this)
                    },
                    toggle: function(e) {
                        return "boolean" == typeof e ? e ? this.show() : this.hide() : this.each((function() {
                            ue(this) ? C(this).show() : C(this).hide()
                        }
                        ))
                    }
                });
                var he, me, ge = /^(?:checkbox|radio)$/i, ve = /<([a-z][^\/\0>\x20\t\r\n\f]*)/i, ye = /^$|^module$|\/(?:java|ecma)script/i;
                he = b.createDocumentFragment().appendChild(b.createElement("div")),
                (me = b.createElement("input")).setAttribute("type", "radio"),
                me.setAttribute("checked", "checked"),
                me.setAttribute("name", "t"),
                he.appendChild(me),
                g.checkClone = he.cloneNode(!0).cloneNode(!0).lastChild.checked,
                he.innerHTML = "<textarea>x</textarea>",
                g.noCloneChecked = !!he.cloneNode(!0).lastChild.defaultValue,
                he.innerHTML = "<option></option>",
                g.option = !!he.lastChild;
                var be = {
                    thead: [1, "<table>", "</table>"],
                    col: [2, "<table><colgroup>", "</colgroup></table>"],
                    tr: [2, "<table><tbody>", "</tbody></table>"],
                    td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
                    _default: [0, "", ""]
                };
                function xe(e, t) {
                    var n;
                    return n = void 0 !== e.getElementsByTagName ? e.getElementsByTagName(t || "*") : void 0 !== e.querySelectorAll ? e.querySelectorAll(t || "*") : [],
                    void 0 === t || t && j(e, t) ? C.merge([e], n) : n
                }
                function we(e, t) {
                    for (var n = 0, r = e.length; n < r; n++)
                        K.set(e[n], "globalEval", !t || K.get(t[n], "globalEval"))
                }
                be.tbody = be.tfoot = be.colgroup = be.caption = be.thead,
                be.th = be.td,
                g.option || (be.optgroup = be.option = [1, "<select multiple='multiple'>", "</select>"]);
                var Te = /<|&#?\w+;/;
                function ke(e, t, n, r, i) {
                    for (var o, a, s, l, u, c, f = t.createDocumentFragment(), d = [], p = 0, h = e.length; p < h; p++)
                        if ((o = e[p]) || 0 === o)
                            if ("object" === T(o))
                                C.merge(d, o.nodeType ? [o] : o);
                            else if (Te.test(o)) {
                                for (a = a || f.appendChild(t.createElement("div")),
                                s = (ve.exec(o) || ["", ""])[1].toLowerCase(),
                                l = be[s] || be._default,
                                a.innerHTML = l[1] + C.htmlPrefilter(o) + l[2],
                                c = l[0]; c--; )
                                    a = a.lastChild;
                                C.merge(d, a.childNodes),
                                (a = f.firstChild).textContent = ""
                            } else
                                d.push(t.createTextNode(o));
                    for (f.textContent = "",
                    p = 0; o = d[p++]; )
                        if (r && C.inArray(o, r) > -1)
                            i && i.push(o);
                        else if (u = se(o),
                        a = xe(f.appendChild(o), "script"),
                        u && we(a),
                        n)
                            for (c = 0; o = a[c++]; )
                                ye.test(o.type || "") && n.push(o);
                    return f
                }
                var Ce = /^key/
                  , Ee = /^(?:mouse|pointer|contextmenu|drag|drop)|click/
                  , Se = /^([^.]*)(?:\.(.+)|)/;
                function Ae() {
                    return !0
                }
                function De() {
                    return !1
                }
                function Ne(e, t) {
                    return e === function() {
                        try {
                            return b.activeElement
                        } catch (e) {}
                    }() == ("focus" === t)
                }
                function je(e, t, n, r, i, o) {
                    var a, s;
                    if ("object" == typeof t) {
                        for (s in "string" != typeof n && (r = r || n,
                        n = void 0),
                        t)
                            je(e, s, n, r, t[s], o);
                        return e
                    }
                    if (null == r && null == i ? (i = n,
                    r = n = void 0) : null == i && ("string" == typeof n ? (i = r,
                    r = void 0) : (i = r,
                    r = n,
                    n = void 0)),
                    !1 === i)
                        i = De;
                    else if (!i)
                        return e;
                    return 1 === o && (a = i,
                    (i = function(e) {
                        return C().off(e),
                        a.apply(this, arguments)
                    }
                    ).guid = a.guid || (a.guid = C.guid++)),
                    e.each((function() {
                        C.event.add(this, t, i, r, n)
                    }
                    ))
                }
                function Le(e, t, n) {
                    n ? (K.set(e, t, !1),
                    C.event.add(e, t, {
                        namespace: !1,
                        handler: function(e) {
                            var r, i, o = K.get(this, t);
                            if (1 & e.isTrigger && this[t]) {
                                if (o.length)
                                    (C.event.special[t] || {}).delegateType && e.stopPropagation();
                                else if (o = s.call(arguments),
                                K.set(this, t, o),
                                r = n(this, t),
                                this[t](),
                                o !== (i = K.get(this, t)) || r ? K.set(this, t, !1) : i = {},
                                o !== i)
                                    return e.stopImmediatePropagation(),
                                    e.preventDefault(),
                                    i.value
                            } else
                                o.length && (K.set(this, t, {
                                    value: C.event.trigger(C.extend(o[0], C.Event.prototype), o.slice(1), this)
                                }),
                                e.stopImmediatePropagation())
                        }
                    })) : void 0 === K.get(e, t) && C.event.add(e, t, Ae)
                }
                C.event = {
                    global: {},
                    add: function(e, t, n, r, i) {
                        var o, a, s, l, u, c, f, d, p, h, m, g = K.get(e);
                        if (G(e))
                            for (n.handler && (n = (o = n).handler,
                            i = o.selector),
                            i && C.find.matchesSelector(ae, i),
                            n.guid || (n.guid = C.guid++),
                            (l = g.events) || (l = g.events = Object.create(null)),
                            (a = g.handle) || (a = g.handle = function(t) {
                                return void 0 !== C && C.event.triggered !== t.type ? C.event.dispatch.apply(e, arguments) : void 0
                            }
                            ),
                            u = (t = (t || "").match(H) || [""]).length; u--; )
                                p = m = (s = Se.exec(t[u]) || [])[1],
                                h = (s[2] || "").split(".").sort(),
                                p && (f = C.event.special[p] || {},
                                p = (i ? f.delegateType : f.bindType) || p,
                                f = C.event.special[p] || {},
                                c = C.extend({
                                    type: p,
                                    origType: m,
                                    data: r,
                                    handler: n,
                                    guid: n.guid,
                                    selector: i,
                                    needsContext: i && C.expr.match.needsContext.test(i),
                                    namespace: h.join(".")
                                }, o),
                                (d = l[p]) || ((d = l[p] = []).delegateCount = 0,
                                f.setup && !1 !== f.setup.call(e, r, h, a) || e.addEventListener && e.addEventListener(p, a)),
                                f.add && (f.add.call(e, c),
                                c.handler.guid || (c.handler.guid = n.guid)),
                                i ? d.splice(d.delegateCount++, 0, c) : d.push(c),
                                C.event.global[p] = !0)
                    },
                    remove: function(e, t, n, r, i) {
                        var o, a, s, l, u, c, f, d, p, h, m, g = K.hasData(e) && K.get(e);
                        if (g && (l = g.events)) {
                            for (u = (t = (t || "").match(H) || [""]).length; u--; )
                                if (p = m = (s = Se.exec(t[u]) || [])[1],
                                h = (s[2] || "").split(".").sort(),
                                p) {
                                    for (f = C.event.special[p] || {},
                                    d = l[p = (r ? f.delegateType : f.bindType) || p] || [],
                                    s = s[2] && new RegExp("(^|\\.)" + h.join("\\.(?:.*\\.|)") + "(\\.|$)"),
                                    a = o = d.length; o--; )
                                        c = d[o],
                                        !i && m !== c.origType || n && n.guid !== c.guid || s && !s.test(c.namespace) || r && r !== c.selector && ("**" !== r || !c.selector) || (d.splice(o, 1),
                                        c.selector && d.delegateCount--,
                                        f.remove && f.remove.call(e, c));
                                    a && !d.length && (f.teardown && !1 !== f.teardown.call(e, h, g.handle) || C.removeEvent(e, p, g.handle),
                                    delete l[p])
                                } else
                                    for (p in l)
                                        C.event.remove(e, p + t[u], n, r, !0);
                            C.isEmptyObject(l) && K.remove(e, "handle events")
                        }
                    },
                    dispatch: function(e) {
                        var t, n, r, i, o, a, s = new Array(arguments.length), l = C.event.fix(e), u = (K.get(this, "events") || Object.create(null))[l.type] || [], c = C.event.special[l.type] || {};
                        for (s[0] = l,
                        t = 1; t < arguments.length; t++)
                            s[t] = arguments[t];
                        if (l.delegateTarget = this,
                        !c.preDispatch || !1 !== c.preDispatch.call(this, l)) {
                            for (a = C.event.handlers.call(this, l, u),
                            t = 0; (i = a[t++]) && !l.isPropagationStopped(); )
                                for (l.currentTarget = i.elem,
                                n = 0; (o = i.handlers[n++]) && !l.isImmediatePropagationStopped(); )
                                    l.rnamespace && !1 !== o.namespace && !l.rnamespace.test(o.namespace) || (l.handleObj = o,
                                    l.data = o.data,
                                    void 0 !== (r = ((C.event.special[o.origType] || {}).handle || o.handler).apply(i.elem, s)) && !1 === (l.result = r) && (l.preventDefault(),
                                    l.stopPropagation()));
                            return c.postDispatch && c.postDispatch.call(this, l),
                            l.result
                        }
                    },
                    handlers: function(e, t) {
                        var n, r, i, o, a, s = [], l = t.delegateCount, u = e.target;
                        if (l && u.nodeType && !("click" === e.type && e.button >= 1))
                            for (; u !== this; u = u.parentNode || this)
                                if (1 === u.nodeType && ("click" !== e.type || !0 !== u.disabled)) {
                                    for (o = [],
                                    a = {},
                                    n = 0; n < l; n++)
                                        void 0 === a[i = (r = t[n]).selector + " "] && (a[i] = r.needsContext ? C(i, this).index(u) > -1 : C.find(i, this, null, [u]).length),
                                        a[i] && o.push(r);
                                    o.length && s.push({
                                        elem: u,
                                        handlers: o
                                    })
                                }
                        return u = this,
                        l < t.length && s.push({
                            elem: u,
                            handlers: t.slice(l)
                        }),
                        s
                    },
                    addProp: function(e, t) {
                        Object.defineProperty(C.Event.prototype, e, {
                            enumerable: !0,
                            configurable: !0,
                            get: v(t) ? function() {
                                if (this.originalEvent)
                                    return t(this.originalEvent)
                            }
                            : function() {
                                if (this.originalEvent)
                                    return this.originalEvent[e]
                            }
                            ,
                            set: function(t) {
                                Object.defineProperty(this, e, {
                                    enumerable: !0,
                                    configurable: !0,
                                    writable: !0,
                                    value: t
                                })
                            }
                        })
                    },
                    fix: function(e) {
                        return e[C.expando] ? e : new C.Event(e)
                    },
                    special: {
                        load: {
                            noBubble: !0
                        },
                        click: {
                            setup: function(e) {
                                var t = this || e;
                                return ge.test(t.type) && t.click && j(t, "input") && Le(t, "click", Ae),
                                !1
                            },
                            trigger: function(e) {
                                var t = this || e;
                                return ge.test(t.type) && t.click && j(t, "input") && Le(t, "click"),
                                !0
                            },
                            _default: function(e) {
                                var t = e.target;
                                return ge.test(t.type) && t.click && j(t, "input") && K.get(t, "click") || j(t, "a")
                            }
                        },
                        beforeunload: {
                            postDispatch: function(e) {
                                void 0 !== e.result && e.originalEvent && (e.originalEvent.returnValue = e.result)
                            }
                        }
                    }
                },
                C.removeEvent = function(e, t, n) {
                    e.removeEventListener && e.removeEventListener(t, n)
                }
                ,
                C.Event = function(e, t) {
                    if (!(this instanceof C.Event))
                        return new C.Event(e,t);
                    e && e.type ? (this.originalEvent = e,
                    this.type = e.type,
                    this.isDefaultPrevented = e.defaultPrevented || void 0 === e.defaultPrevented && !1 === e.returnValue ? Ae : De,
                    this.target = e.target && 3 === e.target.nodeType ? e.target.parentNode : e.target,
                    this.currentTarget = e.currentTarget,
                    this.relatedTarget = e.relatedTarget) : this.type = e,
                    t && C.extend(this, t),
                    this.timeStamp = e && e.timeStamp || Date.now(),
                    this[C.expando] = !0
                }
                ,
                C.Event.prototype = {
                    constructor: C.Event,
                    isDefaultPrevented: De,
                    isPropagationStopped: De,
                    isImmediatePropagationStopped: De,
                    isSimulated: !1,
                    preventDefault: function() {
                        var e = this.originalEvent;
                        this.isDefaultPrevented = Ae,
                        e && !this.isSimulated && e.preventDefault()
                    },
                    stopPropagation: function() {
                        var e = this.originalEvent;
                        this.isPropagationStopped = Ae,
                        e && !this.isSimulated && e.stopPropagation()
                    },
                    stopImmediatePropagation: function() {
                        var e = this.originalEvent;
                        this.isImmediatePropagationStopped = Ae,
                        e && !this.isSimulated && e.stopImmediatePropagation(),
                        this.stopPropagation()
                    }
                },
                C.each({
                    altKey: !0,
                    bubbles: !0,
                    cancelable: !0,
                    changedTouches: !0,
                    ctrlKey: !0,
                    detail: !0,
                    eventPhase: !0,
                    metaKey: !0,
                    pageX: !0,
                    pageY: !0,
                    shiftKey: !0,
                    view: !0,
                    char: !0,
                    code: !0,
                    charCode: !0,
                    key: !0,
                    keyCode: !0,
                    button: !0,
                    buttons: !0,
                    clientX: !0,
                    clientY: !0,
                    offsetX: !0,
                    offsetY: !0,
                    pointerId: !0,
                    pointerType: !0,
                    screenX: !0,
                    screenY: !0,
                    targetTouches: !0,
                    toElement: !0,
                    touches: !0,
                    which: function(e) {
                        var t = e.button;
                        return null == e.which && Ce.test(e.type) ? null != e.charCode ? e.charCode : e.keyCode : !e.which && void 0 !== t && Ee.test(e.type) ? 1 & t ? 1 : 2 & t ? 3 : 4 & t ? 2 : 0 : e.which
                    }
                }, C.event.addProp),
                C.each({
                    focus: "focusin",
                    blur: "focusout"
                }, (function(e, t) {
                    C.event.special[e] = {
                        setup: function() {
                            return Le(this, e, Ne),
                            !1
                        },
                        trigger: function() {
                            return Le(this, e),
                            !0
                        },
                        delegateType: t
                    }
                }
                )),
                C.each({
                    mouseenter: "mouseover",
                    mouseleave: "mouseout",
                    pointerenter: "pointerover",
                    pointerleave: "pointerout"
                }, (function(e, t) {
                    C.event.special[e] = {
                        delegateType: t,
                        bindType: t,
                        handle: function(e) {
                            var n, r = this, i = e.relatedTarget, o = e.handleObj;
                            return i && (i === r || C.contains(r, i)) || (e.type = o.origType,
                            n = o.handler.apply(this, arguments),
                            e.type = t),
                            n
                        }
                    }
                }
                )),
                C.fn.extend({
                    on: function(e, t, n, r) {
                        return je(this, e, t, n, r)
                    },
                    one: function(e, t, n, r) {
                        return je(this, e, t, n, r, 1)
                    },
                    off: function(e, t, n) {
                        var r, i;
                        if (e && e.preventDefault && e.handleObj)
                            return r = e.handleObj,
                            C(e.delegateTarget).off(r.namespace ? r.origType + "." + r.namespace : r.origType, r.selector, r.handler),
                            this;
                        if ("object" == typeof e) {
                            for (i in e)
                                this.off(i, t, e[i]);
                            return this
                        }
                        return !1 !== t && "function" != typeof t || (n = t,
                        t = void 0),
                        !1 === n && (n = De),
                        this.each((function() {
                            C.event.remove(this, e, n, t)
                        }
                        ))
                    }
                });
                var Oe = /<script|<style|<link/i
                  , qe = /checked\s*(?:[^=]|=\s*.checked.)/i
                  , $e = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
                function Ie(e, t) {
                    return j(e, "table") && j(11 !== t.nodeType ? t : t.firstChild, "tr") && C(e).children("tbody")[0] || e
                }
                function Me(e) {
                    return e.type = (null !== e.getAttribute("type")) + "/" + e.type,
                    e
                }
                function Pe(e) {
                    return "true/" === (e.type || "").slice(0, 5) ? e.type = e.type.slice(5) : e.removeAttribute("type"),
                    e
                }
                function He(e, t) {
                    var n, r, i, o, a, s;
                    if (1 === t.nodeType) {
                        if (K.hasData(e) && (s = K.get(e).events))
                            for (i in K.remove(t, "handle events"),
                            s)
                                for (n = 0,
                                r = s[i].length; n < r; n++)
                                    C.event.add(t, i, s[i][n]);
                        Z.hasData(e) && (o = Z.access(e),
                        a = C.extend({}, o),
                        Z.set(t, a))
                    }
                }
                function Re(e, t) {
                    var n = t.nodeName.toLowerCase();
                    "input" === n && ge.test(e.type) ? t.checked = e.checked : "input" !== n && "textarea" !== n || (t.defaultValue = e.defaultValue)
                }
                function Fe(e, t, n, r) {
                    t = l(t);
                    var i, o, a, s, u, c, f = 0, d = e.length, p = d - 1, h = t[0], m = v(h);
                    if (m || d > 1 && "string" == typeof h && !g.checkClone && qe.test(h))
                        return e.each((function(i) {
                            var o = e.eq(i);
                            m && (t[0] = h.call(this, i, o.html())),
                            Fe(o, t, n, r)
                        }
                        ));
                    if (d && (o = (i = ke(t, e[0].ownerDocument, !1, e, r)).firstChild,
                    1 === i.childNodes.length && (i = o),
                    o || r)) {
                        for (s = (a = C.map(xe(i, "script"), Me)).length; f < d; f++)
                            u = i,
                            f !== p && (u = C.clone(u, !0, !0),
                            s && C.merge(a, xe(u, "script"))),
                            n.call(e[f], u, f);
                        if (s)
                            for (c = a[a.length - 1].ownerDocument,
                            C.map(a, Pe),
                            f = 0; f < s; f++)
                                u = a[f],
                                ye.test(u.type || "") && !K.access(u, "globalEval") && C.contains(c, u) && (u.src && "module" !== (u.type || "").toLowerCase() ? C._evalUrl && !u.noModule && C._evalUrl(u.src, {
                                    nonce: u.nonce || u.getAttribute("nonce")
                                }, c) : w(u.textContent.replace($e, ""), u, c))
                    }
                    return e
                }
                function _e(e, t, n) {
                    for (var r, i = t ? C.filter(t, e) : e, o = 0; null != (r = i[o]); o++)
                        n || 1 !== r.nodeType || C.cleanData(xe(r)),
                        r.parentNode && (n && se(r) && we(xe(r, "script")),
                        r.parentNode.removeChild(r));
                    return e
                }
                C.extend({
                    htmlPrefilter: function(e) {
                        return e
                    },
                    clone: function(e, t, n) {
                        var r, i, o, a, s = e.cloneNode(!0), l = se(e);
                        if (!(g.noCloneChecked || 1 !== e.nodeType && 11 !== e.nodeType || C.isXMLDoc(e)))
                            for (a = xe(s),
                            r = 0,
                            i = (o = xe(e)).length; r < i; r++)
                                Re(o[r], a[r]);
                        if (t)
                            if (n)
                                for (o = o || xe(e),
                                a = a || xe(s),
                                r = 0,
                                i = o.length; r < i; r++)
                                    He(o[r], a[r]);
                            else
                                He(e, s);
                        return (a = xe(s, "script")).length > 0 && we(a, !l && xe(e, "script")),
                        s
                    },
                    cleanData: function(e) {
                        for (var t, n, r, i = C.event.special, o = 0; void 0 !== (n = e[o]); o++)
                            if (G(n)) {
                                if (t = n[K.expando]) {
                                    if (t.events)
                                        for (r in t.events)
                                            i[r] ? C.event.remove(n, r) : C.removeEvent(n, r, t.handle);
                                    n[K.expando] = void 0
                                }
                                n[Z.expando] && (n[Z.expando] = void 0)
                            }
                    }
                }),
                C.fn.extend({
                    detach: function(e) {
                        return _e(this, e, !0)
                    },
                    remove: function(e) {
                        return _e(this, e)
                    },
                    text: function(e) {
                        return U(this, (function(e) {
                            return void 0 === e ? C.text(this) : this.empty().each((function() {
                                1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType || (this.textContent = e)
                            }
                            ))
                        }
                        ), null, e, arguments.length)
                    },
                    append: function() {
                        return Fe(this, arguments, (function(e) {
                            1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType || Ie(this, e).appendChild(e)
                        }
                        ))
                    },
                    prepend: function() {
                        return Fe(this, arguments, (function(e) {
                            if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) {
                                var t = Ie(this, e);
                                t.insertBefore(e, t.firstChild)
                            }
                        }
                        ))
                    },
                    before: function() {
                        return Fe(this, arguments, (function(e) {
                            this.parentNode && this.parentNode.insertBefore(e, this)
                        }
                        ))
                    },
                    after: function() {
                        return Fe(this, arguments, (function(e) {
                            this.parentNode && this.parentNode.insertBefore(e, this.nextSibling)
                        }
                        ))
                    },
                    empty: function() {
                        for (var e, t = 0; null != (e = this[t]); t++)
                            1 === e.nodeType && (C.cleanData(xe(e, !1)),
                            e.textContent = "");
                        return this
                    },
                    clone: function(e, t) {
                        return e = null != e && e,
                        t = null == t ? e : t,
                        this.map((function() {
                            return C.clone(this, e, t)
                        }
                        ))
                    },
                    html: function(e) {
                        return U(this, (function(e) {
                            var t = this[0] || {}
                              , n = 0
                              , r = this.length;
                            if (void 0 === e && 1 === t.nodeType)
                                return t.innerHTML;
                            if ("string" == typeof e && !Oe.test(e) && !be[(ve.exec(e) || ["", ""])[1].toLowerCase()]) {
                                e = C.htmlPrefilter(e);
                                try {
                                    for (; n < r; n++)
                                        1 === (t = this[n] || {}).nodeType && (C.cleanData(xe(t, !1)),
                                        t.innerHTML = e);
                                    t = 0
                                } catch (e) {}
                            }
                            t && this.empty().append(e)
                        }
                        ), null, e, arguments.length)
                    },
                    replaceWith: function() {
                        var e = [];
                        return Fe(this, arguments, (function(t) {
                            var n = this.parentNode;
                            C.inArray(this, e) < 0 && (C.cleanData(xe(this)),
                            n && n.replaceChild(t, this))
                        }
                        ), e)
                    }
                }),
                C.each({
                    appendTo: "append",
                    prependTo: "prepend",
                    insertBefore: "before",
                    insertAfter: "after",
                    replaceAll: "replaceWith"
                }, (function(e, t) {
                    C.fn[e] = function(e) {
                        for (var n, r = [], i = C(e), o = i.length - 1, a = 0; a <= o; a++)
                            n = a === o ? this : this.clone(!0),
                            C(i[a])[t](n),
                            u.apply(r, n.get());
                        return this.pushStack(r)
                    }
                }
                ));
                var ze = new RegExp("^(" + re + ")(?!px)[a-z%]+$","i")
                  , Be = function(e) {
                    var t = e.ownerDocument.defaultView;
                    return t && t.opener || (t = r),
                    t.getComputedStyle(e)
                }
                  , We = function(e, t, n) {
                    var r, i, o = {};
                    for (i in t)
                        o[i] = e.style[i],
                        e.style[i] = t[i];
                    for (i in r = n.call(e),
                    t)
                        e.style[i] = o[i];
                    return r
                }
                  , Ue = new RegExp(oe.join("|"),"i");
                function Xe(e, t, n) {
                    var r, i, o, a, s = e.style;
                    return (n = n || Be(e)) && ("" !== (a = n.getPropertyValue(t) || n[t]) || se(e) || (a = C.style(e, t)),
                    !g.pixelBoxStyles() && ze.test(a) && Ue.test(t) && (r = s.width,
                    i = s.minWidth,
                    o = s.maxWidth,
                    s.minWidth = s.maxWidth = s.width = a,
                    a = n.width,
                    s.width = r,
                    s.minWidth = i,
                    s.maxWidth = o)),
                    void 0 !== a ? a + "" : a
                }
                function Ve(e, t) {
                    return {
                        get: function() {
                            if (!e())
                                return (this.get = t).apply(this, arguments);
                            delete this.get
                        }
                    }
                }
                !function() {
                    function e() {
                        if (c) {
                            u.style.cssText = "position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",
                            c.style.cssText = "position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",
                            ae.appendChild(u).appendChild(c);
                            var e = r.getComputedStyle(c);
                            n = "1%" !== e.top,
                            l = 12 === t(e.marginLeft),
                            c.style.right = "60%",
                            a = 36 === t(e.right),
                            i = 36 === t(e.width),
                            c.style.position = "absolute",
                            o = 12 === t(c.offsetWidth / 3),
                            ae.removeChild(u),
                            c = null
                        }
                    }
                    function t(e) {
                        return Math.round(parseFloat(e))
                    }
                    var n, i, o, a, s, l, u = b.createElement("div"), c = b.createElement("div");
                    c.style && (c.style.backgroundClip = "content-box",
                    c.cloneNode(!0).style.backgroundClip = "",
                    g.clearCloneStyle = "content-box" === c.style.backgroundClip,
                    C.extend(g, {
                        boxSizingReliable: function() {
                            return e(),
                            i
                        },
                        pixelBoxStyles: function() {
                            return e(),
                            a
                        },
                        pixelPosition: function() {
                            return e(),
                            n
                        },
                        reliableMarginLeft: function() {
                            return e(),
                            l
                        },
                        scrollboxSize: function() {
                            return e(),
                            o
                        },
                        reliableTrDimensions: function() {
                            var e, t, n, i;
                            return null == s && (e = b.createElement("table"),
                            t = b.createElement("tr"),
                            n = b.createElement("div"),
                            e.style.cssText = "position:absolute;left:-11111px",
                            t.style.height = "1px",
                            n.style.height = "9px",
                            ae.appendChild(e).appendChild(t).appendChild(n),
                            i = r.getComputedStyle(t),
                            s = parseInt(i.height) > 3,
                            ae.removeChild(e)),
                            s
                        }
                    }))
                }();
                var Qe = ["Webkit", "Moz", "ms"]
                  , Ye = b.createElement("div").style
                  , Ge = {};
                function Je(e) {
                    return C.cssProps[e] || Ge[e] || (e in Ye ? e : Ge[e] = function(e) {
                        for (var t = e[0].toUpperCase() + e.slice(1), n = Qe.length; n--; )
                            if ((e = Qe[n] + t)in Ye)
                                return e
                    }(e) || e)
                }
                var Ke = /^(none|table(?!-c[ea]).+)/
                  , Ze = /^--/
                  , et = {
                    position: "absolute",
                    visibility: "hidden",
                    display: "block"
                }
                  , tt = {
                    letterSpacing: "0",
                    fontWeight: "400"
                };
                function nt(e, t, n) {
                    var r = ie.exec(t);
                    return r ? Math.max(0, r[2] - (n || 0)) + (r[3] || "px") : t
                }
                function rt(e, t, n, r, i, o) {
                    var a = "width" === t ? 1 : 0
                      , s = 0
                      , l = 0;
                    if (n === (r ? "border" : "content"))
                        return 0;
                    for (; a < 4; a += 2)
                        "margin" === n && (l += C.css(e, n + oe[a], !0, i)),
                        r ? ("content" === n && (l -= C.css(e, "padding" + oe[a], !0, i)),
                        "margin" !== n && (l -= C.css(e, "border" + oe[a] + "Width", !0, i))) : (l += C.css(e, "padding" + oe[a], !0, i),
                        "padding" !== n ? l += C.css(e, "border" + oe[a] + "Width", !0, i) : s += C.css(e, "border" + oe[a] + "Width", !0, i));
                    return !r && o >= 0 && (l += Math.max(0, Math.ceil(e["offset" + t[0].toUpperCase() + t.slice(1)] - o - l - s - .5)) || 0),
                    l
                }
                function it(e, t, n) {
                    var r = Be(e)
                      , i = (!g.boxSizingReliable() || n) && "border-box" === C.css(e, "boxSizing", !1, r)
                      , o = i
                      , a = Xe(e, t, r)
                      , s = "offset" + t[0].toUpperCase() + t.slice(1);
                    if (ze.test(a)) {
                        if (!n)
                            return a;
                        a = "auto"
                    }
                    return (!g.boxSizingReliable() && i || !g.reliableTrDimensions() && j(e, "tr") || "auto" === a || !parseFloat(a) && "inline" === C.css(e, "display", !1, r)) && e.getClientRects().length && (i = "border-box" === C.css(e, "boxSizing", !1, r),
                    (o = s in e) && (a = e[s])),
                    (a = parseFloat(a) || 0) + rt(e, t, n || (i ? "border" : "content"), o, r, a) + "px"
                }
                function ot(e, t, n, r, i) {
                    return new ot.prototype.init(e,t,n,r,i)
                }
                C.extend({
                    cssHooks: {
                        opacity: {
                            get: function(e, t) {
                                if (t) {
                                    var n = Xe(e, "opacity");
                                    return "" === n ? "1" : n
                                }
                            }
                        }
                    },
                    cssNumber: {
                        animationIterationCount: !0,
                        columnCount: !0,
                        fillOpacity: !0,
                        flexGrow: !0,
                        flexShrink: !0,
                        fontWeight: !0,
                        gridArea: !0,
                        gridColumn: !0,
                        gridColumnEnd: !0,
                        gridColumnStart: !0,
                        gridRow: !0,
                        gridRowEnd: !0,
                        gridRowStart: !0,
                        lineHeight: !0,
                        opacity: !0,
                        order: !0,
                        orphans: !0,
                        widows: !0,
                        zIndex: !0,
                        zoom: !0
                    },
                    cssProps: {},
                    style: function(e, t, n, r) {
                        if (e && 3 !== e.nodeType && 8 !== e.nodeType && e.style) {
                            var i, o, a, s = Y(t), l = Ze.test(t), u = e.style;
                            if (l || (t = Je(s)),
                            a = C.cssHooks[t] || C.cssHooks[s],
                            void 0 === n)
                                return a && "get"in a && void 0 !== (i = a.get(e, !1, r)) ? i : u[t];
                            "string" == (o = typeof n) && (i = ie.exec(n)) && i[1] && (n = ce(e, t, i),
                            o = "number"),
                            null != n && n == n && ("number" !== o || l || (n += i && i[3] || (C.cssNumber[s] ? "" : "px")),
                            g.clearCloneStyle || "" !== n || 0 !== t.indexOf("background") || (u[t] = "inherit"),
                            a && "set"in a && void 0 === (n = a.set(e, n, r)) || (l ? u.setProperty(t, n) : u[t] = n))
                        }
                    },
                    css: function(e, t, n, r) {
                        var i, o, a, s = Y(t);
                        return Ze.test(t) || (t = Je(s)),
                        (a = C.cssHooks[t] || C.cssHooks[s]) && "get"in a && (i = a.get(e, !0, n)),
                        void 0 === i && (i = Xe(e, t, r)),
                        "normal" === i && t in tt && (i = tt[t]),
                        "" === n || n ? (o = parseFloat(i),
                        !0 === n || isFinite(o) ? o || 0 : i) : i
                    }
                }),
                C.each(["height", "width"], (function(e, t) {
                    C.cssHooks[t] = {
                        get: function(e, n, r) {
                            if (n)
                                return !Ke.test(C.css(e, "display")) || e.getClientRects().length && e.getBoundingClientRect().width ? it(e, t, r) : We(e, et, (function() {
                                    return it(e, t, r)
                                }
                                ))
                        },
                        set: function(e, n, r) {
                            var i, o = Be(e), a = !g.scrollboxSize() && "absolute" === o.position, s = (a || r) && "border-box" === C.css(e, "boxSizing", !1, o), l = r ? rt(e, t, r, s, o) : 0;
                            return s && a && (l -= Math.ceil(e["offset" + t[0].toUpperCase() + t.slice(1)] - parseFloat(o[t]) - rt(e, t, "border", !1, o) - .5)),
                            l && (i = ie.exec(n)) && "px" !== (i[3] || "px") && (e.style[t] = n,
                            n = C.css(e, t)),
                            nt(0, n, l)
                        }
                    }
                }
                )),
                C.cssHooks.marginLeft = Ve(g.reliableMarginLeft, (function(e, t) {
                    if (t)
                        return (parseFloat(Xe(e, "marginLeft")) || e.getBoundingClientRect().left - We(e, {
                            marginLeft: 0
                        }, (function() {
                            return e.getBoundingClientRect().left
                        }
                        ))) + "px"
                }
                )),
                C.each({
                    margin: "",
                    padding: "",
                    border: "Width"
                }, (function(e, t) {
                    C.cssHooks[e + t] = {
                        expand: function(n) {
                            for (var r = 0, i = {}, o = "string" == typeof n ? n.split(" ") : [n]; r < 4; r++)
                                i[e + oe[r] + t] = o[r] || o[r - 2] || o[0];
                            return i
                        }
                    },
                    "margin" !== e && (C.cssHooks[e + t].set = nt)
                }
                )),
                C.fn.extend({
                    css: function(e, t) {
                        return U(this, (function(e, t, n) {
                            var r, i, o = {}, a = 0;
                            if (Array.isArray(t)) {
                                for (r = Be(e),
                                i = t.length; a < i; a++)
                                    o[t[a]] = C.css(e, t[a], !1, r);
                                return o
                            }
                            return void 0 !== n ? C.style(e, t, n) : C.css(e, t)
                        }
                        ), e, t, arguments.length > 1)
                    }
                }),
                C.Tween = ot,
                ot.prototype = {
                    constructor: ot,
                    init: function(e, t, n, r, i, o) {
                        this.elem = e,
                        this.prop = n,
                        this.easing = i || C.easing._default,
                        this.options = t,
                        this.start = this.now = this.cur(),
                        this.end = r,
                        this.unit = o || (C.cssNumber[n] ? "" : "px")
                    },
                    cur: function() {
                        var e = ot.propHooks[this.prop];
                        return e && e.get ? e.get(this) : ot.propHooks._default.get(this)
                    },
                    run: function(e) {
                        var t, n = ot.propHooks[this.prop];
                        return this.options.duration ? this.pos = t = C.easing[this.easing](e, this.options.duration * e, 0, 1, this.options.duration) : this.pos = t = e,
                        this.now = (this.end - this.start) * t + this.start,
                        this.options.step && this.options.step.call(this.elem, this.now, this),
                        n && n.set ? n.set(this) : ot.propHooks._default.set(this),
                        this
                    }
                },
                ot.prototype.init.prototype = ot.prototype,
                ot.propHooks = {
                    _default: {
                        get: function(e) {
                            var t;
                            return 1 !== e.elem.nodeType || null != e.elem[e.prop] && null == e.elem.style[e.prop] ? e.elem[e.prop] : (t = C.css(e.elem, e.prop, "")) && "auto" !== t ? t : 0
                        },
                        set: function(e) {
                            C.fx.step[e.prop] ? C.fx.step[e.prop](e) : 1 !== e.elem.nodeType || !C.cssHooks[e.prop] && null == e.elem.style[Je(e.prop)] ? e.elem[e.prop] = e.now : C.style(e.elem, e.prop, e.now + e.unit)
                        }
                    }
                },
                ot.propHooks.scrollTop = ot.propHooks.scrollLeft = {
                    set: function(e) {
                        e.elem.nodeType && e.elem.parentNode && (e.elem[e.prop] = e.now)
                    }
                },
                C.easing = {
                    linear: function(e) {
                        return e
                    },
                    swing: function(e) {
                        return .5 - Math.cos(e * Math.PI) / 2
                    },
                    _default: "swing"
                },
                C.fx = ot.prototype.init,
                C.fx.step = {};
                var at, st, lt = /^(?:toggle|show|hide)$/, ut = /queueHooks$/;
                function ct() {
                    st && (!1 === b.hidden && r.requestAnimationFrame ? r.requestAnimationFrame(ct) : r.setTimeout(ct, C.fx.interval),
                    C.fx.tick())
                }
                function ft() {
                    return r.setTimeout((function() {
                        at = void 0
                    }
                    )),
                    at = Date.now()
                }
                function dt(e, t) {
                    var n, r = 0, i = {
                        height: e
                    };
                    for (t = t ? 1 : 0; r < 4; r += 2 - t)
                        i["margin" + (n = oe[r])] = i["padding" + n] = e;
                    return t && (i.opacity = i.width = e),
                    i
                }
                function pt(e, t, n) {
                    for (var r, i = (ht.tweeners[t] || []).concat(ht.tweeners["*"]), o = 0, a = i.length; o < a; o++)
                        if (r = i[o].call(n, t, e))
                            return r
                }
                function ht(e, t, n) {
                    var r, i, o = 0, a = ht.prefilters.length, s = C.Deferred().always((function() {
                        delete l.elem
                    }
                    )), l = function() {
                        if (i)
                            return !1;
                        for (var t = at || ft(), n = Math.max(0, u.startTime + u.duration - t), r = 1 - (n / u.duration || 0), o = 0, a = u.tweens.length; o < a; o++)
                            u.tweens[o].run(r);
                        return s.notifyWith(e, [u, r, n]),
                        r < 1 && a ? n : (a || s.notifyWith(e, [u, 1, 0]),
                        s.resolveWith(e, [u]),
                        !1)
                    }, u = s.promise({
                        elem: e,
                        props: C.extend({}, t),
                        opts: C.extend(!0, {
                            specialEasing: {},
                            easing: C.easing._default
                        }, n),
                        originalProperties: t,
                        originalOptions: n,
                        startTime: at || ft(),
                        duration: n.duration,
                        tweens: [],
                        createTween: function(t, n) {
                            var r = C.Tween(e, u.opts, t, n, u.opts.specialEasing[t] || u.opts.easing);
                            return u.tweens.push(r),
                            r
                        },
                        stop: function(t) {
                            var n = 0
                              , r = t ? u.tweens.length : 0;
                            if (i)
                                return this;
                            for (i = !0; n < r; n++)
                                u.tweens[n].run(1);
                            return t ? (s.notifyWith(e, [u, 1, 0]),
                            s.resolveWith(e, [u, t])) : s.rejectWith(e, [u, t]),
                            this
                        }
                    }), c = u.props;
                    for (function(e, t) {
                        var n, r, i, o, a;
                        for (n in e)
                            if (i = t[r = Y(n)],
                            o = e[n],
                            Array.isArray(o) && (i = o[1],
                            o = e[n] = o[0]),
                            n !== r && (e[r] = o,
                            delete e[n]),
                            (a = C.cssHooks[r]) && "expand"in a)
                                for (n in o = a.expand(o),
                                delete e[r],
                                o)
                                    n in e || (e[n] = o[n],
                                    t[n] = i);
                            else
                                t[r] = i
                    }(c, u.opts.specialEasing); o < a; o++)
                        if (r = ht.prefilters[o].call(u, e, c, u.opts))
                            return v(r.stop) && (C._queueHooks(u.elem, u.opts.queue).stop = r.stop.bind(r)),
                            r;
                    return C.map(c, pt, u),
                    v(u.opts.start) && u.opts.start.call(e, u),
                    u.progress(u.opts.progress).done(u.opts.done, u.opts.complete).fail(u.opts.fail).always(u.opts.always),
                    C.fx.timer(C.extend(l, {
                        elem: e,
                        anim: u,
                        queue: u.opts.queue
                    })),
                    u
                }
                C.Animation = C.extend(ht, {
                    tweeners: {
                        "*": [function(e, t) {
                            var n = this.createTween(e, t);
                            return ce(n.elem, e, ie.exec(t), n),
                            n
                        }
                        ]
                    },
                    tweener: function(e, t) {
                        v(e) ? (t = e,
                        e = ["*"]) : e = e.match(H);
                        for (var n, r = 0, i = e.length; r < i; r++)
                            n = e[r],
                            ht.tweeners[n] = ht.tweeners[n] || [],
                            ht.tweeners[n].unshift(t)
                    },
                    prefilters: [function(e, t, n) {
                        var r, i, o, a, s, l, u, c, f = "width"in t || "height"in t, d = this, p = {}, h = e.style, m = e.nodeType && ue(e), g = K.get(e, "fxshow");
                        for (r in n.queue || (null == (a = C._queueHooks(e, "fx")).unqueued && (a.unqueued = 0,
                        s = a.empty.fire,
                        a.empty.fire = function() {
                            a.unqueued || s()
                        }
                        ),
                        a.unqueued++,
                        d.always((function() {
                            d.always((function() {
                                a.unqueued--,
                                C.queue(e, "fx").length || a.empty.fire()
                            }
                            ))
                        }
                        ))),
                        t)
                            if (i = t[r],
                            lt.test(i)) {
                                if (delete t[r],
                                o = o || "toggle" === i,
                                i === (m ? "hide" : "show")) {
                                    if ("show" !== i || !g || void 0 === g[r])
                                        continue;
                                    m = !0
                                }
                                p[r] = g && g[r] || C.style(e, r)
                            }
                        if ((l = !C.isEmptyObject(t)) || !C.isEmptyObject(p))
                            for (r in f && 1 === e.nodeType && (n.overflow = [h.overflow, h.overflowX, h.overflowY],
                            null == (u = g && g.display) && (u = K.get(e, "display")),
                            "none" === (c = C.css(e, "display")) && (u ? c = u : (pe([e], !0),
                            u = e.style.display || u,
                            c = C.css(e, "display"),
                            pe([e]))),
                            ("inline" === c || "inline-block" === c && null != u) && "none" === C.css(e, "float") && (l || (d.done((function() {
                                h.display = u
                            }
                            )),
                            null == u && (c = h.display,
                            u = "none" === c ? "" : c)),
                            h.display = "inline-block")),
                            n.overflow && (h.overflow = "hidden",
                            d.always((function() {
                                h.overflow = n.overflow[0],
                                h.overflowX = n.overflow[1],
                                h.overflowY = n.overflow[2]
                            }
                            ))),
                            l = !1,
                            p)
                                l || (g ? "hidden"in g && (m = g.hidden) : g = K.access(e, "fxshow", {
                                    display: u
                                }),
                                o && (g.hidden = !m),
                                m && pe([e], !0),
                                d.done((function() {
                                    for (r in m || pe([e]),
                                    K.remove(e, "fxshow"),
                                    p)
                                        C.style(e, r, p[r])
                                }
                                ))),
                                l = pt(m ? g[r] : 0, r, d),
                                r in g || (g[r] = l.start,
                                m && (l.end = l.start,
                                l.start = 0))
                    }
                    ],
                    prefilter: function(e, t) {
                        t ? ht.prefilters.unshift(e) : ht.prefilters.push(e)
                    }
                }),
                C.speed = function(e, t, n) {
                    var r = e && "object" == typeof e ? C.extend({}, e) : {
                        complete: n || !n && t || v(e) && e,
                        duration: e,
                        easing: n && t || t && !v(t) && t
                    };
                    return C.fx.off ? r.duration = 0 : "number" != typeof r.duration && (r.duration in C.fx.speeds ? r.duration = C.fx.speeds[r.duration] : r.duration = C.fx.speeds._default),
                    null != r.queue && !0 !== r.queue || (r.queue = "fx"),
                    r.old = r.complete,
                    r.complete = function() {
                        v(r.old) && r.old.call(this),
                        r.queue && C.dequeue(this, r.queue)
                    }
                    ,
                    r
                }
                ,
                C.fn.extend({
                    fadeTo: function(e, t, n, r) {
                        return this.filter(ue).css("opacity", 0).show().end().animate({
                            opacity: t
                        }, e, n, r)
                    },
                    animate: function(e, t, n, r) {
                        var i = C.isEmptyObject(e)
                          , o = C.speed(t, n, r)
                          , a = function() {
                            var t = ht(this, C.extend({}, e), o);
                            (i || K.get(this, "finish")) && t.stop(!0)
                        };
                        return a.finish = a,
                        i || !1 === o.queue ? this.each(a) : this.queue(o.queue, a)
                    },
                    stop: function(e, t, n) {
                        var r = function(e) {
                            var t = e.stop;
                            delete e.stop,
                            t(n)
                        };
                        return "string" != typeof e && (n = t,
                        t = e,
                        e = void 0),
                        t && this.queue(e || "fx", []),
                        this.each((function() {
                            var t = !0
                              , i = null != e && e + "queueHooks"
                              , o = C.timers
                              , a = K.get(this);
                            if (i)
                                a[i] && a[i].stop && r(a[i]);
                            else
                                for (i in a)
                                    a[i] && a[i].stop && ut.test(i) && r(a[i]);
                            for (i = o.length; i--; )
                                o[i].elem !== this || null != e && o[i].queue !== e || (o[i].anim.stop(n),
                                t = !1,
                                o.splice(i, 1));
                            !t && n || C.dequeue(this, e)
                        }
                        ))
                    },
                    finish: function(e) {
                        return !1 !== e && (e = e || "fx"),
                        this.each((function() {
                            var t, n = K.get(this), r = n[e + "queue"], i = n[e + "queueHooks"], o = C.timers, a = r ? r.length : 0;
                            for (n.finish = !0,
                            C.queue(this, e, []),
                            i && i.stop && i.stop.call(this, !0),
                            t = o.length; t--; )
                                o[t].elem === this && o[t].queue === e && (o[t].anim.stop(!0),
                                o.splice(t, 1));
                            for (t = 0; t < a; t++)
                                r[t] && r[t].finish && r[t].finish.call(this);
                            delete n.finish
                        }
                        ))
                    }
                }),
                C.each(["toggle", "show", "hide"], (function(e, t) {
                    var n = C.fn[t];
                    C.fn[t] = function(e, r, i) {
                        return null == e || "boolean" == typeof e ? n.apply(this, arguments) : this.animate(dt(t, !0), e, r, i)
                    }
                }
                )),
                C.each({
                    slideDown: dt("show"),
                    slideUp: dt("hide"),
                    slideToggle: dt("toggle"),
                    fadeIn: {
                        opacity: "show"
                    },
                    fadeOut: {
                        opacity: "hide"
                    },
                    fadeToggle: {
                        opacity: "toggle"
                    }
                }, (function(e, t) {
                    C.fn[e] = function(e, n, r) {
                        return this.animate(t, e, n, r)
                    }
                }
                )),
                C.timers = [],
                C.fx.tick = function() {
                    var e, t = 0, n = C.timers;
                    for (at = Date.now(); t < n.length; t++)
                        (e = n[t])() || n[t] !== e || n.splice(t--, 1);
                    n.length || C.fx.stop(),
                    at = void 0
                }
                ,
                C.fx.timer = function(e) {
                    C.timers.push(e),
                    C.fx.start()
                }
                ,
                C.fx.interval = 13,
                C.fx.start = function() {
                    st || (st = !0,
                    ct())
                }
                ,
                C.fx.stop = function() {
                    st = null
                }
                ,
                C.fx.speeds = {
                    slow: 600,
                    fast: 200,
                    _default: 400
                },
                C.fn.delay = function(e, t) {
                    return e = C.fx && C.fx.speeds[e] || e,
                    t = t || "fx",
                    this.queue(t, (function(t, n) {
                        var i = r.setTimeout(t, e);
                        n.stop = function() {
                            r.clearTimeout(i)
                        }
                    }
                    ))
                }
                ,
                function() {
                    var e = b.createElement("input")
                      , t = b.createElement("select").appendChild(b.createElement("option"));
                    e.type = "checkbox",
                    g.checkOn = "" !== e.value,
                    g.optSelected = t.selected,
                    (e = b.createElement("input")).value = "t",
                    e.type = "radio",
                    g.radioValue = "t" === e.value
                }();
                var mt, gt = C.expr.attrHandle;
                C.fn.extend({
                    attr: function(e, t) {
                        return U(this, C.attr, e, t, arguments.length > 1)
                    },
                    removeAttr: function(e) {
                        return this.each((function() {
                            C.removeAttr(this, e)
                        }
                        ))
                    }
                }),
                C.extend({
                    attr: function(e, t, n) {
                        var r, i, o = e.nodeType;
                        if (3 !== o && 8 !== o && 2 !== o)
                            return void 0 === e.getAttribute ? C.prop(e, t, n) : (1 === o && C.isXMLDoc(e) || (i = C.attrHooks[t.toLowerCase()] || (C.expr.match.bool.test(t) ? mt : void 0)),
                            void 0 !== n ? null === n ? void C.removeAttr(e, t) : i && "set"in i && void 0 !== (r = i.set(e, n, t)) ? r : (e.setAttribute(t, n + ""),
                            n) : i && "get"in i && null !== (r = i.get(e, t)) ? r : null == (r = C.find.attr(e, t)) ? void 0 : r)
                    },
                    attrHooks: {
                        type: {
                            set: function(e, t) {
                                if (!g.radioValue && "radio" === t && j(e, "input")) {
                                    var n = e.value;
                                    return e.setAttribute("type", t),
                                    n && (e.value = n),
                                    t
                                }
                            }
                        }
                    },
                    removeAttr: function(e, t) {
                        var n, r = 0, i = t && t.match(H);
                        if (i && 1 === e.nodeType)
                            for (; n = i[r++]; )
                                e.removeAttribute(n)
                    }
                }),
                mt = {
                    set: function(e, t, n) {
                        return !1 === t ? C.removeAttr(e, n) : e.setAttribute(n, n),
                        n
                    }
                },
                C.each(C.expr.match.bool.source.match(/\w+/g), (function(e, t) {
                    var n = gt[t] || C.find.attr;
                    gt[t] = function(e, t, r) {
                        var i, o, a = t.toLowerCase();
                        return r || (o = gt[a],
                        gt[a] = i,
                        i = null != n(e, t, r) ? a : null,
                        gt[a] = o),
                        i
                    }
                }
                ));
                var vt = /^(?:input|select|textarea|button)$/i
                  , yt = /^(?:a|area)$/i;
                function bt(e) {
                    return (e.match(H) || []).join(" ")
                }
                function xt(e) {
                    return e.getAttribute && e.getAttribute("class") || ""
                }
                function wt(e) {
                    return Array.isArray(e) ? e : "string" == typeof e && e.match(H) || []
                }
                C.fn.extend({
                    prop: function(e, t) {
                        return U(this, C.prop, e, t, arguments.length > 1)
                    },
                    removeProp: function(e) {
                        return this.each((function() {
                            delete this[C.propFix[e] || e]
                        }
                        ))
                    }
                }),
                C.extend({
                    prop: function(e, t, n) {
                        var r, i, o = e.nodeType;
                        if (3 !== o && 8 !== o && 2 !== o)
                            return 1 === o && C.isXMLDoc(e) || (t = C.propFix[t] || t,
                            i = C.propHooks[t]),
                            void 0 !== n ? i && "set"in i && void 0 !== (r = i.set(e, n, t)) ? r : e[t] = n : i && "get"in i && null !== (r = i.get(e, t)) ? r : e[t]
                    },
                    propHooks: {
                        tabIndex: {
                            get: function(e) {
                                var t = C.find.attr(e, "tabindex");
                                return t ? parseInt(t, 10) : vt.test(e.nodeName) || yt.test(e.nodeName) && e.href ? 0 : -1
                            }
                        }
                    },
                    propFix: {
                        for: "htmlFor",
                        class: "className"
                    }
                }),
                g.optSelected || (C.propHooks.selected = {
                    get: function(e) {
                        var t = e.parentNode;
                        return t && t.parentNode && t.parentNode.selectedIndex,
                        null
                    },
                    set: function(e) {
                        var t = e.parentNode;
                        t && (t.selectedIndex,
                        t.parentNode && t.parentNode.selectedIndex)
                    }
                }),
                C.each(["tabIndex", "readOnly", "maxLength", "cellSpacing", "cellPadding", "rowSpan", "colSpan", "useMap", "frameBorder", "contentEditable"], (function() {
                    C.propFix[this.toLowerCase()] = this
                }
                )),
                C.fn.extend({
                    addClass: function(e) {
                        var t, n, r, i, o, a, s, l = 0;
                        if (v(e))
                            return this.each((function(t) {
                                C(this).addClass(e.call(this, t, xt(this)))
                            }
                            ));
                        if ((t = wt(e)).length)
                            for (; n = this[l++]; )
                                if (i = xt(n),
                                r = 1 === n.nodeType && " " + bt(i) + " ") {
                                    for (a = 0; o = t[a++]; )
                                        r.indexOf(" " + o + " ") < 0 && (r += o + " ");
                                    i !== (s = bt(r)) && n.setAttribute("class", s)
                                }
                        return this
                    },
                    removeClass: function(e) {
                        var t, n, r, i, o, a, s, l = 0;
                        if (v(e))
                            return this.each((function(t) {
                                C(this).removeClass(e.call(this, t, xt(this)))
                            }
                            ));
                        if (!arguments.length)
                            return this.attr("class", "");
                        if ((t = wt(e)).length)
                            for (; n = this[l++]; )
                                if (i = xt(n),
                                r = 1 === n.nodeType && " " + bt(i) + " ") {
                                    for (a = 0; o = t[a++]; )
                                        for (; r.indexOf(" " + o + " ") > -1; )
                                            r = r.replace(" " + o + " ", " ");
                                    i !== (s = bt(r)) && n.setAttribute("class", s)
                                }
                        return this
                    },
                    toggleClass: function(e, t) {
                        var n = typeof e
                          , r = "string" === n || Array.isArray(e);
                        return "boolean" == typeof t && r ? t ? this.addClass(e) : this.removeClass(e) : v(e) ? this.each((function(n) {
                            C(this).toggleClass(e.call(this, n, xt(this), t), t)
                        }
                        )) : this.each((function() {
                            var t, i, o, a;
                            if (r)
                                for (i = 0,
                                o = C(this),
                                a = wt(e); t = a[i++]; )
                                    o.hasClass(t) ? o.removeClass(t) : o.addClass(t);
                            else
                                void 0 !== e && "boolean" !== n || ((t = xt(this)) && K.set(this, "__className__", t),
                                this.setAttribute && this.setAttribute("class", t || !1 === e ? "" : K.get(this, "__className__") || ""))
                        }
                        ))
                    },
                    hasClass: function(e) {
                        var t, n, r = 0;
                        for (t = " " + e + " "; n = this[r++]; )
                            if (1 === n.nodeType && (" " + bt(xt(n)) + " ").indexOf(t) > -1)
                                return !0;
                        return !1
                    }
                });
                var Tt = /\r/g;
                C.fn.extend({
                    val: function(e) {
                        var t, n, r, i = this[0];
                        return arguments.length ? (r = v(e),
                        this.each((function(n) {
                            var i;
                            1 === this.nodeType && (null == (i = r ? e.call(this, n, C(this).val()) : e) ? i = "" : "number" == typeof i ? i += "" : Array.isArray(i) && (i = C.map(i, (function(e) {
                                return null == e ? "" : e + ""
                            }
                            ))),
                            (t = C.valHooks[this.type] || C.valHooks[this.nodeName.toLowerCase()]) && "set"in t && void 0 !== t.set(this, i, "value") || (this.value = i))
                        }
                        ))) : i ? (t = C.valHooks[i.type] || C.valHooks[i.nodeName.toLowerCase()]) && "get"in t && void 0 !== (n = t.get(i, "value")) ? n : "string" == typeof (n = i.value) ? n.replace(Tt, "") : null == n ? "" : n : void 0
                    }
                }),
                C.extend({
                    valHooks: {
                        option: {
                            get: function(e) {
                                var t = C.find.attr(e, "value");
                                return null != t ? t : bt(C.text(e))
                            }
                        },
                        select: {
                            get: function(e) {
                                var t, n, r, i = e.options, o = e.selectedIndex, a = "select-one" === e.type, s = a ? null : [], l = a ? o + 1 : i.length;
                                for (r = o < 0 ? l : a ? o : 0; r < l; r++)
                                    if (((n = i[r]).selected || r === o) && !n.disabled && (!n.parentNode.disabled || !j(n.parentNode, "optgroup"))) {
                                        if (t = C(n).val(),
                                        a)
                                            return t;
                                        s.push(t)
                                    }
                                return s
                            },
                            set: function(e, t) {
                                for (var n, r, i = e.options, o = C.makeArray(t), a = i.length; a--; )
                                    ((r = i[a]).selected = C.inArray(C.valHooks.option.get(r), o) > -1) && (n = !0);
                                return n || (e.selectedIndex = -1),
                                o
                            }
                        }
                    }
                }),
                C.each(["radio", "checkbox"], (function() {
                    C.valHooks[this] = {
                        set: function(e, t) {
                            if (Array.isArray(t))
                                return e.checked = C.inArray(C(e).val(), t) > -1
                        }
                    },
                    g.checkOn || (C.valHooks[this].get = function(e) {
                        return null === e.getAttribute("value") ? "on" : e.value
                    }
                    )
                }
                )),
                g.focusin = "onfocusin"in r;
                var kt = /^(?:focusinfocus|focusoutblur)$/
                  , Ct = function(e) {
                    e.stopPropagation()
                };
                C.extend(C.event, {
                    trigger: function(e, t, n, i) {
                        var o, a, s, l, u, c, f, d, h = [n || b], m = p.call(e, "type") ? e.type : e, g = p.call(e, "namespace") ? e.namespace.split(".") : [];
                        if (a = d = s = n = n || b,
                        3 !== n.nodeType && 8 !== n.nodeType && !kt.test(m + C.event.triggered) && (m.indexOf(".") > -1 && (g = m.split("."),
                        m = g.shift(),
                        g.sort()),
                        u = m.indexOf(":") < 0 && "on" + m,
                        (e = e[C.expando] ? e : new C.Event(m,"object" == typeof e && e)).isTrigger = i ? 2 : 3,
                        e.namespace = g.join("."),
                        e.rnamespace = e.namespace ? new RegExp("(^|\\.)" + g.join("\\.(?:.*\\.|)") + "(\\.|$)") : null,
                        e.result = void 0,
                        e.target || (e.target = n),
                        t = null == t ? [e] : C.makeArray(t, [e]),
                        f = C.event.special[m] || {},
                        i || !f.trigger || !1 !== f.trigger.apply(n, t))) {
                            if (!i && !f.noBubble && !y(n)) {
                                for (l = f.delegateType || m,
                                kt.test(l + m) || (a = a.parentNode); a; a = a.parentNode)
                                    h.push(a),
                                    s = a;
                                s === (n.ownerDocument || b) && h.push(s.defaultView || s.parentWindow || r)
                            }
                            for (o = 0; (a = h[o++]) && !e.isPropagationStopped(); )
                                d = a,
                                e.type = o > 1 ? l : f.bindType || m,
                                (c = (K.get(a, "events") || Object.create(null))[e.type] && K.get(a, "handle")) && c.apply(a, t),
                                (c = u && a[u]) && c.apply && G(a) && (e.result = c.apply(a, t),
                                !1 === e.result && e.preventDefault());
                            return e.type = m,
                            i || e.isDefaultPrevented() || f._default && !1 !== f._default.apply(h.pop(), t) || !G(n) || u && v(n[m]) && !y(n) && ((s = n[u]) && (n[u] = null),
                            C.event.triggered = m,
                            e.isPropagationStopped() && d.addEventListener(m, Ct),
                            n[m](),
                            e.isPropagationStopped() && d.removeEventListener(m, Ct),
                            C.event.triggered = void 0,
                            s && (n[u] = s)),
                            e.result
                        }
                    },
                    simulate: function(e, t, n) {
                        var r = C.extend(new C.Event, n, {
                            type: e,
                            isSimulated: !0
                        });
                        C.event.trigger(r, null, t)
                    }
                }),
                C.fn.extend({
                    trigger: function(e, t) {
                        return this.each((function() {
                            C.event.trigger(e, t, this)
                        }
                        ))
                    },
                    triggerHandler: function(e, t) {
                        var n = this[0];
                        if (n)
                            return C.event.trigger(e, t, n, !0)
                    }
                }),
                g.focusin || C.each({
                    focus: "focusin",
                    blur: "focusout"
                }, (function(e, t) {
                    var n = function(e) {
                        C.event.simulate(t, e.target, C.event.fix(e))
                    };
                    C.event.special[t] = {
                        setup: function() {
                            var r = this.ownerDocument || this.document || this
                              , i = K.access(r, t);
                            i || r.addEventListener(e, n, !0),
                            K.access(r, t, (i || 0) + 1)
                        },
                        teardown: function() {
                            var r = this.ownerDocument || this.document || this
                              , i = K.access(r, t) - 1;
                            i ? K.access(r, t, i) : (r.removeEventListener(e, n, !0),
                            K.remove(r, t))
                        }
                    }
                }
                ));
                var Et = r.location
                  , St = {
                    guid: Date.now()
                }
                  , At = /\?/;
                C.parseXML = function(e) {
                    var t;
                    if (!e || "string" != typeof e)
                        return null;
                    try {
                        t = (new r.DOMParser).parseFromString(e, "text/xml")
                    } catch (e) {
                        t = void 0
                    }
                    return t && !t.getElementsByTagName("parsererror").length || C.error("Invalid XML: " + e),
                    t
                }
                ;
                var Dt = /\[\]$/
                  , Nt = /\r?\n/g
                  , jt = /^(?:submit|button|image|reset|file)$/i
                  , Lt = /^(?:input|select|textarea|keygen)/i;
                function Ot(e, t, n, r) {
                    var i;
                    if (Array.isArray(t))
                        C.each(t, (function(t, i) {
                            n || Dt.test(e) ? r(e, i) : Ot(e + "[" + ("object" == typeof i && null != i ? t : "") + "]", i, n, r)
                        }
                        ));
                    else if (n || "object" !== T(t))
                        r(e, t);
                    else
                        for (i in t)
                            Ot(e + "[" + i + "]", t[i], n, r)
                }
                C.param = function(e, t) {
                    var n, r = [], i = function(e, t) {
                        var n = v(t) ? t() : t;
                        r[r.length] = encodeURIComponent(e) + "=" + encodeURIComponent(null == n ? "" : n)
                    };
                    if (null == e)
                        return "";
                    if (Array.isArray(e) || e.jquery && !C.isPlainObject(e))
                        C.each(e, (function() {
                            i(this.name, this.value)
                        }
                        ));
                    else
                        for (n in e)
                            Ot(n, e[n], t, i);
                    return r.join("&")
                }
                ,
                C.fn.extend({
                    serialize: function() {
                        return C.param(this.serializeArray())
                    },
                    serializeArray: function() {
                        return this.map((function() {
                            var e = C.prop(this, "elements");
                            return e ? C.makeArray(e) : this
                        }
                        )).filter((function() {
                            var e = this.type;
                            return this.name && !C(this).is(":disabled") && Lt.test(this.nodeName) && !jt.test(e) && (this.checked || !ge.test(e))
                        }
                        )).map((function(e, t) {
                            var n = C(this).val();
                            return null == n ? null : Array.isArray(n) ? C.map(n, (function(e) {
                                return {
                                    name: t.name,
                                    value: e.replace(Nt, "\r\n")
                                }
                            }
                            )) : {
                                name: t.name,
                                value: n.replace(Nt, "\r\n")
                            }
                        }
                        )).get()
                    }
                });
                var qt = /%20/g
                  , $t = /#.*$/
                  , It = /([?&])_=[^&]*/
                  , Mt = /^(.*?):[ \t]*([^\r\n]*)$/gm
                  , Pt = /^(?:GET|HEAD)$/
                  , Ht = /^\/\//
                  , Rt = {}
                  , Ft = {}
                  , _t = "*/".concat("*")
                  , zt = b.createElement("a");
                function Bt(e) {
                    return function(t, n) {
                        "string" != typeof t && (n = t,
                        t = "*");
                        var r, i = 0, o = t.toLowerCase().match(H) || [];
                        if (v(n))
                            for (; r = o[i++]; )
                                "+" === r[0] ? (r = r.slice(1) || "*",
                                (e[r] = e[r] || []).unshift(n)) : (e[r] = e[r] || []).push(n)
                    }
                }
                function Wt(e, t, n, r) {
                    var i = {}
                      , o = e === Ft;
                    function a(s) {
                        var l;
                        return i[s] = !0,
                        C.each(e[s] || [], (function(e, s) {
                            var u = s(t, n, r);
                            return "string" != typeof u || o || i[u] ? o ? !(l = u) : void 0 : (t.dataTypes.unshift(u),
                            a(u),
                            !1)
                        }
                        )),
                        l
                    }
                    return a(t.dataTypes[0]) || !i["*"] && a("*")
                }
                function Ut(e, t) {
                    var n, r, i = C.ajaxSettings.flatOptions || {};
                    for (n in t)
                        void 0 !== t[n] && ((i[n] ? e : r || (r = {}))[n] = t[n]);
                    return r && C.extend(!0, e, r),
                    e
                }
                zt.href = Et.href,
                C.extend({
                    active: 0,
                    lastModified: {},
                    etag: {},
                    ajaxSettings: {
                        url: Et.href,
                        type: "GET",
                        isLocal: /^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Et.protocol),
                        global: !0,
                        processData: !0,
                        async: !0,
                        contentType: "application/x-www-form-urlencoded; charset=UTF-8",
                        accepts: {
                            "*": _t,
                            text: "text/plain",
                            html: "text/html",
                            xml: "application/xml, text/xml",
                            json: "application/json, text/javascript"
                        },
                        contents: {
                            xml: /\bxml\b/,
                            html: /\bhtml/,
                            json: /\bjson\b/
                        },
                        responseFields: {
                            xml: "responseXML",
                            text: "responseText",
                            json: "responseJSON"
                        },
                        converters: {
                            "* text": String,
                            "text html": !0,
                            "text json": JSON.parse,
                            "text xml": C.parseXML
                        },
                        flatOptions: {
                            url: !0,
                            context: !0
                        }
                    },
                    ajaxSetup: function(e, t) {
                        return t ? Ut(Ut(e, C.ajaxSettings), t) : Ut(C.ajaxSettings, e)
                    },
                    ajaxPrefilter: Bt(Rt),
                    ajaxTransport: Bt(Ft),
                    ajax: function(e, t) {
                        "object" == typeof e && (t = e,
                        e = void 0),
                        t = t || {};
                        var n, i, o, a, s, l, u, c, f, d, p = C.ajaxSetup({}, t), h = p.context || p, m = p.context && (h.nodeType || h.jquery) ? C(h) : C.event, g = C.Deferred(), v = C.Callbacks("once memory"), y = p.statusCode || {}, x = {}, w = {}, T = "canceled", k = {
                            readyState: 0,
                            getResponseHeader: function(e) {
                                var t;
                                if (u) {
                                    if (!a)
                                        for (a = {}; t = Mt.exec(o); )
                                            a[t[1].toLowerCase() + " "] = (a[t[1].toLowerCase() + " "] || []).concat(t[2]);
                                    t = a[e.toLowerCase() + " "]
                                }
                                return null == t ? null : t.join(", ")
                            },
                            getAllResponseHeaders: function() {
                                return u ? o : null
                            },
                            setRequestHeader: function(e, t) {
                                return null == u && (e = w[e.toLowerCase()] = w[e.toLowerCase()] || e,
                                x[e] = t),
                                this
                            },
                            overrideMimeType: function(e) {
                                return null == u && (p.mimeType = e),
                                this
                            },
                            statusCode: function(e) {
                                var t;
                                if (e)
                                    if (u)
                                        k.always(e[k.status]);
                                    else
                                        for (t in e)
                                            y[t] = [y[t], e[t]];
                                return this
                            },
                            abort: function(e) {
                                var t = e || T;
                                return n && n.abort(t),
                                E(0, t),
                                this
                            }
                        };
                        if (g.promise(k),
                        p.url = ((e || p.url || Et.href) + "").replace(Ht, Et.protocol + "//"),
                        p.type = t.method || t.type || p.method || p.type,
                        p.dataTypes = (p.dataType || "*").toLowerCase().match(H) || [""],
                        null == p.crossDomain) {
                            l = b.createElement("a");
                            try {
                                l.href = p.url,
                                l.href = l.href,
                                p.crossDomain = zt.protocol + "//" + zt.host != l.protocol + "//" + l.host
                            } catch (e) {
                                p.crossDomain = !0
                            }
                        }
                        if (p.data && p.processData && "string" != typeof p.data && (p.data = C.param(p.data, p.traditional)),
                        Wt(Rt, p, t, k),
                        u)
                            return k;
                        for (f in (c = C.event && p.global) && 0 == C.active++ && C.event.trigger("ajaxStart"),
                        p.type = p.type.toUpperCase(),
                        p.hasContent = !Pt.test(p.type),
                        i = p.url.replace($t, ""),
                        p.hasContent ? p.data && p.processData && 0 === (p.contentType || "").indexOf("application/x-www-form-urlencoded") && (p.data = p.data.replace(qt, "+")) : (d = p.url.slice(i.length),
                        p.data && (p.processData || "string" == typeof p.data) && (i += (At.test(i) ? "&" : "?") + p.data,
                        delete p.data),
                        !1 === p.cache && (i = i.replace(It, "$1"),
                        d = (At.test(i) ? "&" : "?") + "_=" + St.guid++ + d),
                        p.url = i + d),
                        p.ifModified && (C.lastModified[i] && k.setRequestHeader("If-Modified-Since", C.lastModified[i]),
                        C.etag[i] && k.setRequestHeader("If-None-Match", C.etag[i])),
                        (p.data && p.hasContent && !1 !== p.contentType || t.contentType) && k.setRequestHeader("Content-Type", p.contentType),
                        k.setRequestHeader("Accept", p.dataTypes[0] && p.accepts[p.dataTypes[0]] ? p.accepts[p.dataTypes[0]] + ("*" !== p.dataTypes[0] ? ", " + _t + "; q=0.01" : "") : p.accepts["*"]),
                        p.headers)
                            k.setRequestHeader(f, p.headers[f]);
                        if (p.beforeSend && (!1 === p.beforeSend.call(h, k, p) || u))
                            return k.abort();
                        if (T = "abort",
                        v.add(p.complete),
                        k.done(p.success),
                        k.fail(p.error),
                        n = Wt(Ft, p, t, k)) {
                            if (k.readyState = 1,
                            c && m.trigger("ajaxSend", [k, p]),
                            u)
                                return k;
                            p.async && p.timeout > 0 && (s = r.setTimeout((function() {
                                k.abort("timeout")
                            }
                            ), p.timeout));
                            try {
                                u = !1,
                                n.send(x, E)
                            } catch (e) {
                                if (u)
                                    throw e;
                                E(-1, e)
                            }
                        } else
                            E(-1, "No Transport");
                        function E(e, t, a, l) {
                            var f, d, b, x, w, T = t;
                            u || (u = !0,
                            s && r.clearTimeout(s),
                            n = void 0,
                            o = l || "",
                            k.readyState = e > 0 ? 4 : 0,
                            f = e >= 200 && e < 300 || 304 === e,
                            a && (x = function(e, t, n) {
                                for (var r, i, o, a, s = e.contents, l = e.dataTypes; "*" === l[0]; )
                                    l.shift(),
                                    void 0 === r && (r = e.mimeType || t.getResponseHeader("Content-Type"));
                                if (r)
                                    for (i in s)
                                        if (s[i] && s[i].test(r)) {
                                            l.unshift(i);
                                            break
                                        }
                                if (l[0]in n)
                                    o = l[0];
                                else {
                                    for (i in n) {
                                        if (!l[0] || e.converters[i + " " + l[0]]) {
                                            o = i;
                                            break
                                        }
                                        a || (a = i)
                                    }
                                    o = o || a
                                }
                                if (o)
                                    return o !== l[0] && l.unshift(o),
                                    n[o]
                            }(p, k, a)),
                            !f && C.inArray("script", p.dataTypes) > -1 && (p.converters["text script"] = function() {}
                            ),
                            x = function(e, t, n, r) {
                                var i, o, a, s, l, u = {}, c = e.dataTypes.slice();
                                if (c[1])
                                    for (a in e.converters)
                                        u[a.toLowerCase()] = e.converters[a];
                                for (o = c.shift(); o; )
                                    if (e.responseFields[o] && (n[e.responseFields[o]] = t),
                                    !l && r && e.dataFilter && (t = e.dataFilter(t, e.dataType)),
                                    l = o,
                                    o = c.shift())
                                        if ("*" === o)
                                            o = l;
                                        else if ("*" !== l && l !== o) {
                                            if (!(a = u[l + " " + o] || u["* " + o]))
                                                for (i in u)
                                                    if ((s = i.split(" "))[1] === o && (a = u[l + " " + s[0]] || u["* " + s[0]])) {
                                                        !0 === a ? a = u[i] : !0 !== u[i] && (o = s[0],
                                                        c.unshift(s[1]));
                                                        break
                                                    }
                                            if (!0 !== a)
                                                if (a && e.throws)
                                                    t = a(t);
                                                else
                                                    try {
                                                        t = a(t)
                                                    } catch (e) {
                                                        return {
                                                            state: "parsererror",
                                                            error: a ? e : "No conversion from " + l + " to " + o
                                                        }
                                                    }
                                        }
                                return {
                                    state: "success",
                                    data: t
                                }
                            }(p, x, k, f),
                            f ? (p.ifModified && ((w = k.getResponseHeader("Last-Modified")) && (C.lastModified[i] = w),
                            (w = k.getResponseHeader("etag")) && (C.etag[i] = w)),
                            204 === e || "HEAD" === p.type ? T = "nocontent" : 304 === e ? T = "notmodified" : (T = x.state,
                            d = x.data,
                            f = !(b = x.error))) : (b = T,
                            !e && T || (T = "error",
                            e < 0 && (e = 0))),
                            k.status = e,
                            k.statusText = (t || T) + "",
                            f ? g.resolveWith(h, [d, T, k]) : g.rejectWith(h, [k, T, b]),
                            k.statusCode(y),
                            y = void 0,
                            c && m.trigger(f ? "ajaxSuccess" : "ajaxError", [k, p, f ? d : b]),
                            v.fireWith(h, [k, T]),
                            c && (m.trigger("ajaxComplete", [k, p]),
                            --C.active || C.event.trigger("ajaxStop")))
                        }
                        return k
                    },
                    getJSON: function(e, t, n) {
                        return C.get(e, t, n, "json")
                    },
                    getScript: function(e, t) {
                        return C.get(e, void 0, t, "script")
                    }
                }),
                C.each(["get", "post"], (function(e, t) {
                    C[t] = function(e, n, r, i) {
                        return v(n) && (i = i || r,
                        r = n,
                        n = void 0),
                        C.ajax(C.extend({
                            url: e,
                            type: t,
                            dataType: i,
                            data: n,
                            success: r
                        }, C.isPlainObject(e) && e))
                    }
                }
                )),
                C.ajaxPrefilter((function(e) {
                    var t;
                    for (t in e.headers)
                        "content-type" === t.toLowerCase() && (e.contentType = e.headers[t] || "")
                }
                )),
                C._evalUrl = function(e, t, n) {
                    return C.ajax({
                        url: e,
                        type: "GET",
                        dataType: "script",
                        cache: !0,
                        async: !1,
                        global: !1,
                        converters: {
                            "text script": function() {}
                        },
                        dataFilter: function(e) {
                            C.globalEval(e, t, n)
                        }
                    })
                }
                ,
                C.fn.extend({
                    wrapAll: function(e) {
                        var t;
                        return this[0] && (v(e) && (e = e.call(this[0])),
                        t = C(e, this[0].ownerDocument).eq(0).clone(!0),
                        this[0].parentNode && t.insertBefore(this[0]),
                        t.map((function() {
                            for (var e = this; e.firstElementChild; )
                                e = e.firstElementChild;
                            return e
                        }
                        )).append(this)),
                        this
                    },
                    wrapInner: function(e) {
                        return v(e) ? this.each((function(t) {
                            C(this).wrapInner(e.call(this, t))
                        }
                        )) : this.each((function() {
                            var t = C(this)
                              , n = t.contents();
                            n.length ? n.wrapAll(e) : t.append(e)
                        }
                        ))
                    },
                    wrap: function(e) {
                        var t = v(e);
                        return this.each((function(n) {
                            C(this).wrapAll(t ? e.call(this, n) : e)
                        }
                        ))
                    },
                    unwrap: function(e) {
                        return this.parent(e).not("body").each((function() {
                            C(this).replaceWith(this.childNodes)
                        }
                        )),
                        this
                    }
                }),
                C.expr.pseudos.hidden = function(e) {
                    return !C.expr.pseudos.visible(e)
                }
                ,
                C.expr.pseudos.visible = function(e) {
                    return !!(e.offsetWidth || e.offsetHeight || e.getClientRects().length)
                }
                ,
                C.ajaxSettings.xhr = function() {
                    try {
                        return new r.XMLHttpRequest
                    } catch (e) {}
                }
                ;
                var Xt = {
                    0: 200,
                    1223: 204
                }
                  , Vt = C.ajaxSettings.xhr();
                g.cors = !!Vt && "withCredentials"in Vt,
                g.ajax = Vt = !!Vt,
                C.ajaxTransport((function(e) {
                    var t, n;
                    if (g.cors || Vt && !e.crossDomain)
                        return {
                            send: function(i, o) {
                                var a, s = e.xhr();
                                if (s.open(e.type, e.url, e.async, e.username, e.password),
                                e.xhrFields)
                                    for (a in e.xhrFields)
                                        s[a] = e.xhrFields[a];
                                for (a in e.mimeType && s.overrideMimeType && s.overrideMimeType(e.mimeType),
                                e.crossDomain || i["X-Requested-With"] || (i["X-Requested-With"] = "XMLHttpRequest"),
                                i)
                                    s.setRequestHeader(a, i[a]);
                                t = function(e) {
                                    return function() {
                                        t && (t = n = s.onload = s.onerror = s.onabort = s.ontimeout = s.onreadystatechange = null,
                                        "abort" === e ? s.abort() : "error" === e ? "number" != typeof s.status ? o(0, "error") : o(s.status, s.statusText) : o(Xt[s.status] || s.status, s.statusText, "text" !== (s.responseType || "text") || "string" != typeof s.responseText ? {
                                            binary: s.response
                                        } : {
                                            text: s.responseText
                                        }, s.getAllResponseHeaders()))
                                    }
                                }
                                ,
                                s.onload = t(),
                                n = s.onerror = s.ontimeout = t("error"),
                                void 0 !== s.onabort ? s.onabort = n : s.onreadystatechange = function() {
                                    4 === s.readyState && r.setTimeout((function() {
                                        t && n()
                                    }
                                    ))
                                }
                                ,
                                t = t("abort");
                                try {
                                    s.send(e.hasContent && e.data || null)
                                } catch (e) {
                                    if (t)
                                        throw e
                                }
                            },
                            abort: function() {
                                t && t()
                            }
                        }
                }
                )),
                C.ajaxPrefilter((function(e) {
                    e.crossDomain && (e.contents.script = !1)
                }
                )),
                C.ajaxSetup({
                    accepts: {
                        script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
                    },
                    contents: {
                        script: /\b(?:java|ecma)script\b/
                    },
                    converters: {
                        "text script": function(e) {
                            return C.globalEval(e),
                            e
                        }
                    }
                }),
                C.ajaxPrefilter("script", (function(e) {
                    void 0 === e.cache && (e.cache = !1),
                    e.crossDomain && (e.type = "GET")
                }
                )),
                C.ajaxTransport("script", (function(e) {
                    var t, n;
                    if (e.crossDomain || e.scriptAttrs)
                        return {
                            send: function(r, i) {
                                t = C("<script>").attr(e.scriptAttrs || {}).prop({
                                    charset: e.scriptCharset,
                                    src: e.url
                                }).on("load error", n = function(e) {
                                    t.remove(),
                                    n = null,
                                    e && i("error" === e.type ? 404 : 200, e.type)
                                }
                                ),
                                b.head.appendChild(t[0])
                            },
                            abort: function() {
                                n && n()
                            }
                        }
                }
                ));
                var Qt, Yt = [], Gt = /(=)\?(?=&|$)|\?\?/;
                C.ajaxSetup({
                    jsonp: "callback",
                    jsonpCallback: function() {
                        var e = Yt.pop() || C.expando + "_" + St.guid++;
                        return this[e] = !0,
                        e
                    }
                }),
                C.ajaxPrefilter("json jsonp", (function(e, t, n) {
                    var i, o, a, s = !1 !== e.jsonp && (Gt.test(e.url) ? "url" : "string" == typeof e.data && 0 === (e.contentType || "").indexOf("application/x-www-form-urlencoded") && Gt.test(e.data) && "data");
                    if (s || "jsonp" === e.dataTypes[0])
                        return i = e.jsonpCallback = v(e.jsonpCallback) ? e.jsonpCallback() : e.jsonpCallback,
                        s ? e[s] = e[s].replace(Gt, "$1" + i) : !1 !== e.jsonp && (e.url += (At.test(e.url) ? "&" : "?") + e.jsonp + "=" + i),
                        e.converters["script json"] = function() {
                            return a || C.error(i + " was not called"),
                            a[0]
                        }
                        ,
                        e.dataTypes[0] = "json",
                        o = r[i],
                        r[i] = function() {
                            a = arguments
                        }
                        ,
                        n.always((function() {
                            void 0 === o ? C(r).removeProp(i) : r[i] = o,
                            e[i] && (e.jsonpCallback = t.jsonpCallback,
                            Yt.push(i)),
                            a && v(o) && o(a[0]),
                            a = o = void 0
                        }
                        )),
                        "script"
                }
                )),
                g.createHTMLDocument = ((Qt = b.implementation.createHTMLDocument("").body).innerHTML = "<form></form><form></form>",
                2 === Qt.childNodes.length),
                C.parseHTML = function(e, t, n) {
                    return "string" != typeof e ? [] : ("boolean" == typeof t && (n = t,
                    t = !1),
                    t || (g.createHTMLDocument ? ((r = (t = b.implementation.createHTMLDocument("")).createElement("base")).href = b.location.href,
                    t.head.appendChild(r)) : t = b),
                    o = !n && [],
                    (i = L.exec(e)) ? [t.createElement(i[1])] : (i = ke([e], t, o),
                    o && o.length && C(o).remove(),
                    C.merge([], i.childNodes)));
                    var r, i, o
                }
                ,
                C.fn.load = function(e, t, n) {
                    var r, i, o, a = this, s = e.indexOf(" ");
                    return s > -1 && (r = bt(e.slice(s)),
                    e = e.slice(0, s)),
                    v(t) ? (n = t,
                    t = void 0) : t && "object" == typeof t && (i = "POST"),
                    a.length > 0 && C.ajax({
                        url: e,
                        type: i || "GET",
                        dataType: "html",
                        data: t
                    }).done((function(e) {
                        o = arguments,
                        a.html(r ? C("<div>").append(C.parseHTML(e)).find(r) : e)
                    }
                    )).always(n && function(e, t) {
                        a.each((function() {
                            n.apply(this, o || [e.responseText, t, e])
                        }
                        ))
                    }
                    ),
                    this
                }
                ,
                C.expr.pseudos.animated = function(e) {
                    return C.grep(C.timers, (function(t) {
                        return e === t.elem
                    }
                    )).length
                }
                ,
                C.offset = {
                    setOffset: function(e, t, n) {
                        var r, i, o, a, s, l, u = C.css(e, "position"), c = C(e), f = {};
                        "static" === u && (e.style.position = "relative"),
                        s = c.offset(),
                        o = C.css(e, "top"),
                        l = C.css(e, "left"),
                        ("absolute" === u || "fixed" === u) && (o + l).indexOf("auto") > -1 ? (a = (r = c.position()).top,
                        i = r.left) : (a = parseFloat(o) || 0,
                        i = parseFloat(l) || 0),
                        v(t) && (t = t.call(e, n, C.extend({}, s))),
                        null != t.top && (f.top = t.top - s.top + a),
                        null != t.left && (f.left = t.left - s.left + i),
                        "using"in t ? t.using.call(e, f) : ("number" == typeof f.top && (f.top += "px"),
                        "number" == typeof f.left && (f.left += "px"),
                        c.css(f))
                    }
                },
                C.fn.extend({
                    offset: function(e) {
                        if (arguments.length)
                            return void 0 === e ? this : this.each((function(t) {
                                C.offset.setOffset(this, e, t)
                            }
                            ));
                        var t, n, r = this[0];
                        return r ? r.getClientRects().length ? (t = r.getBoundingClientRect(),
                        n = r.ownerDocument.defaultView,
                        {
                            top: t.top + n.pageYOffset,
                            left: t.left + n.pageXOffset
                        }) : {
                            top: 0,
                            left: 0
                        } : void 0
                    },
                    position: function() {
                        if (this[0]) {
                            var e, t, n, r = this[0], i = {
                                top: 0,
                                left: 0
                            };
                            if ("fixed" === C.css(r, "position"))
                                t = r.getBoundingClientRect();
                            else {
                                for (t = this.offset(),
                                n = r.ownerDocument,
                                e = r.offsetParent || n.documentElement; e && (e === n.body || e === n.documentElement) && "static" === C.css(e, "position"); )
                                    e = e.parentNode;
                                e && e !== r && 1 === e.nodeType && ((i = C(e).offset()).top += C.css(e, "borderTopWidth", !0),
                                i.left += C.css(e, "borderLeftWidth", !0))
                            }
                            return {
                                top: t.top - i.top - C.css(r, "marginTop", !0),
                                left: t.left - i.left - C.css(r, "marginLeft", !0)
                            }
                        }
                    },
                    offsetParent: function() {
                        return this.map((function() {
                            for (var e = this.offsetParent; e && "static" === C.css(e, "position"); )
                                e = e.offsetParent;
                            return e || ae
                        }
                        ))
                    }
                }),
                C.each({
                    scrollLeft: "pageXOffset",
                    scrollTop: "pageYOffset"
                }, (function(e, t) {
                    var n = "pageYOffset" === t;
                    C.fn[e] = function(r) {
                        return U(this, (function(e, r, i) {
                            var o;
                            if (y(e) ? o = e : 9 === e.nodeType && (o = e.defaultView),
                            void 0 === i)
                                return o ? o[t] : e[r];
                            o ? o.scrollTo(n ? o.pageXOffset : i, n ? i : o.pageYOffset) : e[r] = i
                        }
                        ), e, r, arguments.length)
                    }
                }
                )),
                C.each(["top", "left"], (function(e, t) {
                    C.cssHooks[t] = Ve(g.pixelPosition, (function(e, n) {
                        if (n)
                            return n = Xe(e, t),
                            ze.test(n) ? C(e).position()[t] + "px" : n
                    }
                    ))
                }
                )),
                C.each({
                    Height: "height",
                    Width: "width"
                }, (function(e, t) {
                    C.each({
                        padding: "inner" + e,
                        content: t,
                        "": "outer" + e
                    }, (function(n, r) {
                        C.fn[r] = function(i, o) {
                            var a = arguments.length && (n || "boolean" != typeof i)
                              , s = n || (!0 === i || !0 === o ? "margin" : "border");
                            return U(this, (function(t, n, i) {
                                var o;
                                return y(t) ? 0 === r.indexOf("outer") ? t["inner" + e] : t.document.documentElement["client" + e] : 9 === t.nodeType ? (o = t.documentElement,
                                Math.max(t.body["scroll" + e], o["scroll" + e], t.body["offset" + e], o["offset" + e], o["client" + e])) : void 0 === i ? C.css(t, n, s) : C.style(t, n, i, s)
                            }
                            ), t, a ? i : void 0, a)
                        }
                    }
                    ))
                }
                )),
                C.each(["ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend"], (function(e, t) {
                    C.fn[t] = function(e) {
                        return this.on(t, e)
                    }
                }
                )),
                C.fn.extend({
                    bind: function(e, t, n) {
                        return this.on(e, null, t, n)
                    },
                    unbind: function(e, t) {
                        return this.off(e, null, t)
                    },
                    delegate: function(e, t, n, r) {
                        return this.on(t, e, n, r)
                    },
                    undelegate: function(e, t, n) {
                        return 1 === arguments.length ? this.off(e, "**") : this.off(t, e || "**", n)
                    },
                    hover: function(e, t) {
                        return this.mouseenter(e).mouseleave(t || e)
                    }
                }),
                C.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "), (function(e, t) {
                    C.fn[t] = function(e, n) {
                        return arguments.length > 0 ? this.on(t, null, e, n) : this.trigger(t)
                    }
                }
                ));
                var Jt = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
                C.proxy = function(e, t) {
                    var n, r, i;
                    if ("string" == typeof t && (n = e[t],
                    t = e,
                    e = n),
                    v(e))
                        return r = s.call(arguments, 2),
                        (i = function() {
                            return e.apply(t || this, r.concat(s.call(arguments)))
                        }
                        ).guid = e.guid = e.guid || C.guid++,
                        i
                }
                ,
                C.holdReady = function(e) {
                    e ? C.readyWait++ : C.ready(!0)
                }
                ,
                C.isArray = Array.isArray,
                C.parseJSON = JSON.parse,
                C.nodeName = j,
                C.isFunction = v,
                C.isWindow = y,
                C.camelCase = Y,
                C.type = T,
                C.now = Date.now,
                C.isNumeric = function(e) {
                    var t = C.type(e);
                    return ("number" === t || "string" === t) && !isNaN(e - parseFloat(e))
                }
                ,
                C.trim = function(e) {
                    return null == e ? "" : (e + "").replace(Jt, "")
                }
                ,
                void 0 === (n = function() {
                    return C
                }
                .apply(t, [])) || (e.exports = n);
                var Kt = r.jQuery
                  , Zt = r.$;
                return C.noConflict = function(e) {
                    return r.$ === C && (r.$ = Zt),
                    e && r.jQuery === C && (r.jQuery = Kt),
                    C
                }
                ,
                void 0 === i && (r.jQuery = r.$ = C),
                C
            }
            ))
        }
    }
      , t = {};
    function n(r) {
        if (t[r])
            return t[r].exports;
        var i = t[r] = {
            exports: {}
        };
        return e[r].call(i.exports, i, i.exports, n),
        i.exports
    }
    n.g = function() {
        if ("object" == typeof globalThis)
            return globalThis;
        try {
            return this || new Function("return this")()
        } catch (e) {
            if ("object" == typeof window)
                return window
        }
    }(),
    // n(454),
    // window.ScrollReveal = n(859),
    jQuery = n(46),
    window.jQuery = jQuery,
    window.$ = jQuery,
    n(127),
    n(98),
    n(129),
    // n(772),
    n(639),
    n(732)
    // n(58),
    // n(570)
}
)();


function get_btoa_m(timestamp) {
    var m_m = window.btoa(timestamp);
    return m_m
}

// mm = get_btoa_m('1774335170000')
// console.log(mm)
View Code

python代码如下:

import json
import time
import requests


def get_question_16_result():
    """webpack btoa"""
    url = "https://match.yuanrenxue.cn/api/question/16"
    headers = {
        "accept": "application/json, text/javascript, */*; q=0.01",
        # "accept-encoding": "gzip, deflate, br",
        "accept-language": "zh-CN,zh;q=0.9",
        "cookie": "Hm_lvt_f80b2b389f44bbfb3bfe1704817d44e0=1773998064; sessionid=1p34qxd0wn3sc2nlip8vx6izgffrh0m9; m=a37ca75833ca865d11a7451f18043a14|1774000280348; HMACCOUNT=5CCC201FDBE7CB2F; yuanrenxue_cookie=1774248315|H9iyxX7cyNbIKK3lJpCJQzOvYnqIJjbhyhj3BfcKkEeWIOqhIAmtsCqygVmvm4rOBcvzZHu; Hm_lpvt_f80b2b389f44bbfb3bfe1704817d44e0=1774257731",
        "referer": "https://match.yuanrenxue.cn/match/16",
        "sec-ch-ua": "\"Chromium\";v=\"94\", \"Google Chrome\";v=\"94\", \";Not A Brand\";v=\"99\"",
        "sec-ch-ua-mobile": "?0",
        "sec-ch-ua-platform": "\"Windows\"",
        "sec-fetch-dest": "empty",
        "sec-fetch-mode": "cors",
        "sec-fetch-site": "same-origin",
        "user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36",
        "x-requested-with": "XMLHttpRequest"
    }
    sum_data = 0
    s = requests.Session()
    s.headers.clear()
    s.headers.update(headers)
    for page in range(1, 6):
        timestamp = int(time.time()*1000)
        if page == 5:
            headers['user-agent'] = 'yuanrenxue'
            s.headers.update(headers)
        with open('btoa_js.js', 'r', encoding='gbk', errors='ignore') as f:
            obj = f.read()
        m = execjs.compile(obj).call('get_btoa_m', str(timestamp))
        params = {
            "page": page,
            # "pageSize": "10",
            "t": timestamp,
            "m": m,
        }
        try:
            r = s.get(url=url, params=params, verify=False)
            if r.status_code == 200:
                data = r.json()['data']
                sum_data += sum(data)
                print(f"翻第{str(page)}页,累计求和:{sum_data}")
            else:
                print(f'error:{r.status_code}-----{r.text}')
        except Exception as e:
            raise ValueError(e)


if __name__ == '__main__':
    get_question_16_result()

 

posted on 2026-05-19 14:51  落叶虽美只活一世  阅读(35)  评论(0)    收藏  举报
Live2D