(self.webpackChunktradingview = self.webpackChunktradingview || []).push([
    [13523], {
        18184: e => {
            var t = window.document,
                n = window.navigator,
                r = window.location,
                i = function() {
                    var e, r, i, o, a = function(t, n) {
                            return new a.fn.init(t, n, e)
                        },
                        s = window.jQuery,
                        l = window.$,
                        u = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,
                        c = /\S/,
                        d = /^\s+/,
                        f = /\s+$/,
                        p = /^<(\w+)\s*\/?>(?:<\/\1>)?$/,
                        h = /^[\],:{}\s]*$/,
                        g = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,
                        v = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
                        m = /(?:^|:|,)(?:\s*\[)+/g,
                        y = /(webkit)[ \/]([\w.]+)/,
                        b = /(opera)(?:.*version)?[ \/]([\w.]+)/,
                        x = /(msie) ([\w.]+)/,
                        w = /(mozilla)(?:.*? rv:([\w.]+))?/,
                        k = /-([a-z]|[0-9])/gi,
                        T = /^-ms-/,
                        N = function(e, t) {
                            return (t + "").toUpperCase()
                        },
                        S = n.userAgent,
                        C = Object.prototype.toString,
                        L = Object.prototype.hasOwnProperty,
                        E = Array.prototype.push,
                        O = Array.prototype.slice,
                        A = String.prototype.trim,
                        j = Array.prototype.indexOf,
                        F = {};

                    function D() {
                        if (!a.isReady) {
                            try {
                                t.documentElement.doScroll("left")
                            } catch (e) {
                                return void setTimeout(D, 1)
                            }
                            a.ready()
                        }
                    }
                    return a.fn = a.prototype = {
                        constructor: a,
                        init: function(e, n, r) {
                            var i, o, s, l;
                            if (!e) return this;
                            if (e.nodeType) return this.context = this[0] = e, this.length = 1, this;
                            if ("body" === e && !n && t.body) return this.context = t, this[0] = t.body, this.selector = e, this.length = 1, this;
                            if ("string" == typeof e) {
                                if (!(i = "<" === e.charAt(0) && ">" === e.charAt(e.length - 1) && e.length >= 3 ? [null, e, null] : u.exec(e)) || !i[1] && n) return !n || n.jquery ? (n || r).find(e) : this.constructor(n).find(e);
                                if (i[1]) return l = (n = n instanceof a ? n[0] : n) ? n.ownerDocument || n : t, (s = p.exec(e)) ? a.isPlainObject(n) ? (e = [t.createElement(s[1])], a.fn.attr.call(e, n, !0)) : e = [l.createElement(s[1])] : e = ((s = a.buildFragment([i[1]], [l])).cacheable ? a.clone(s.fragment) : s.fragment).childNodes, a.merge(this, e);
                                if ((o = t.getElementById(i[2])) && o.parentNode) {
                                    if (o.id !== i[2]) return r.find(e);
                                    this.length = 1, this[0] = o
                                }
                                return this.context = t, this.selector = e, this
                            }
                            return a.isFunction(e) ? r.ready(e) : (void 0 !== e.selector && (this.selector = e.selector, this.context = e.context), a.makeArray(e, this))
                        },
                        selector: "",
                        jquery: "1.7.2",
                        length: 0,
                        size: function() {
                            return this.length
                        },
                        toArray: function() {
                            return O.call(this, 0)
                        },
                        get: function(e) {
                            return null == e ? this.toArray() : e < 0 ? this[this.length + e] : this[e]
                        },
                        pushStack: function(e, t, n) {
                            var r = this.constructor();
                            return a.isArray(e) ? E.apply(r, e) : a.merge(r, e), r.prevObject = this, r.context = this.context, "find" === t ? r.selector = this.selector + (this.selector ? " " : "") + n : t && (r.selector = this.selector + "." + t + "(" + n + ")"), r
                        },
                        each: function(e, t) {
                            return a.each(this, e, t)
                        },
                        ready: function(e) {
                            return a.bindReady(), i.add(e), this
                        },
                        eq: function(e) {
                            return -1 === (e = +e) ? this.slice(e) : this.slice(e, e + 1)
                        },
                        first: function() {
                            return this.eq(0)
                        },
                        last: function() {
                            return this.eq(-1)
                        },
                        slice: function() {
                            return this.pushStack(O.apply(this, arguments), "slice", O.call(arguments).join(","))
                        },
                        map: function(e) {
                            return this.pushStack(a.map(this, (function(t, n) {
                                return e.call(t, n, t)
                            })))
                        },
                        end: function() {
                            return this.prevObject || this.constructor(null)
                        },
                        push: E,
                        sort: [].sort,
                        splice: [].splice
                    }, a.fn.init.prototype = a.fn, a.extend = a.fn.extend = function() {
                        var e, t, n, r, i, o, s = arguments[0] || {},
                            l = 1,
                            u = arguments.length,
                            c = !1;
                        for ("boolean" == typeof s && (c = s, s = arguments[1] || {}, l = 2), "object" == typeof s || a.isFunction(s) || (s = {}), u === l && (s = this, --l); l < u; l++)
                            if (null != (e = arguments[l]))
                                for (t in e) n = s[t], s !== (r = e[t]) && (c && r && (a.isPlainObject(r) || (i = a.isArray(r))) ? (i ? (i = !1, o = n && a.isArray(n) ? n : []) : o = n && a.isPlainObject(n) ? n : {}, s[t] = a.extend(c, o, r)) : void 0 !== r && (s[t] = r));
                        return s
                    }, a.extend({
                        noConflict: function(e) {
                            return window.$ === a && (window.$ = l), e && window.jQuery === a && (window.jQuery = s), a
                        },
                        isReady: !1,
                        readyWait: 1,
                        holdReady: function(e) {
                            e ? a.readyWait++ : a.ready(!0)
                        },
                        ready: function(e) {
                            if (!0 === e && !--a.readyWait || !0 !== e && !a.isReady) {
                                if (!t.body) return setTimeout(a.ready, 1);
                                if (a.isReady = !0, !0 !== e && --a.readyWait > 0) return;
                                i.fireWith(t, [a]), a.fn.trigger && a(t).trigger("ready").off("ready")
                            }
                        },
                        bindReady: function() {
                            if (!i) {
                                if (i = a.Callbacks("once memory"), "complete" === t.readyState) return setTimeout(a.ready, 1);
                                if (t.addEventListener) t.addEventListener("DOMContentLoaded", o, !1), window.addEventListener("load", a.ready, !1);
                                else if (t.attachEvent) {
                                    t.attachEvent("onreadystatechange", o), window.attachEvent("onload", a.ready);
                                    var e = !1;
                                    try {
                                        e = null == window.frameElement
                                    } catch (e) {}
                                    t.documentElement.doScroll && e && D()
                                }
                            }
                        },
                        isFunction: function(e) {
                            return "function" === a.type(e)
                        },
                        isArray: Array.isArray || function(e) {
                            return "array" === a.type(e)
                        },
                        isWindow: function(e) {
                            return null != e && e == e.window
                        },
                        isNumeric: function(e) {
                            return !isNaN(parseFloat(e)) && isFinite(e)
                        },
                        type: function(e) {
                            return null == e ? String(e) : F[C.call(e)] || "object"
                        },
                        isPlainObject: function(e) {
                            if (!e || "object" !== a.type(e) || e.nodeType || a.isWindow(e)) return !1;
                            try {
                                if (e.constructor && !L.call(e, "constructor") && !L.call(e.constructor.prototype, "isPrototypeOf")) return !1
                            } catch (e) {
                                return !1
                            }
                            var t;
                            for (t in e);
                            return void 0 === t || L.call(e, t)
                        },
                        isEmptyObject: function(e) {
                            for (var t in e) return !1;
                            return !0
                        },
                        error: function(e) {
                            throw new Error(e)
                        },
                        parseJSON: function(e) {
                            return "string" == typeof e && e ? (e = a.trim(e), window.JSON && window.JSON.parse ? window.JSON.parse(e) : h.test(e.replace(g, "@").replace(v, "]").replace(m, "")) ? new Function("return " + e)() : void a.error("Invalid JSON: " + e)) : null
                        },
                        parseXML: function(e) {
                            if ("string" != typeof e || !e) return null;
                            var t;
                            try {
                                window.DOMParser ? t = (new DOMParser).parseFromString(e, "text/xml") : ((t = new ActiveXObject("Microsoft.XMLDOM")).async = "false", t.loadXML(e))
                            } catch (e) {
                                t = void 0
                            }
                            return t && t.documentElement && !t.getElementsByTagName("parsererror").length || a.error("Invalid XML: " + e), t
                        },
                        noop: function() {},
                        globalEval: function(e) {
                            e && c.test(e) && (window.execScript || function(e) {
                                window.eval.call(window, e)
                            })(e)
                        },
                        camelCase: function(e) {
                            return e.replace(T, "ms-").replace(k, N)
                        },
                        nodeName: function(e, t) {
                            return e.nodeName && e.nodeName.toUpperCase() === t.toUpperCase()
                        },
                        each: function(e, t, n) {
                            var r, i = 0,
                                o = e.length,
                                s = void 0 === o || a.isFunction(e);
                            if (n)
                                if (s) {
                                    for (r in e)
                                        if (!1 === t.apply(e[r], n)) break
                                } else
                                    for (; i < o && !1 !== t.apply(e[i++], n););
                            else if (s) {
                                for (r in e)
                                    if (!1 === t.call(e[r], r, e[r])) break
                            } else
                                for (; i < o && !1 !== t.call(e[i], i, e[i++]););
                            return e
                        },
                        trim: A ? function(e) {
                            return null == e ? "" : A.call(e)
                        } : function(e) {
                            return null == e ? "" : e.toString().replace(d, "").replace(f, "")
                        },
                        makeArray: function(e, t) {
                            var n = t || [];
                            if (null != e) {
                                var r = a.type(e);
                                null == e.length || "string" === r || "function" === r || "regexp" === r || a.isWindow(e) ? E.call(n, e) : a.merge(n, e)
                            }
                            return n
                        },
                        inArray: function(e, t, n) {
                            var r;
                            if (t) {
                                if (j) return j.call(t, e, n);
                                for (r = t.length, n = n ? n < 0 ? Math.max(0, r + n) : n : 0; n < r; n++)
                                    if (n in t && t[n] === e) return n
                            }
                            return -1
                        },
                        merge: function(e, t) {
                            var n = e.length,
                                r = 0;
                            if ("number" == typeof t.length)
                                for (var i = t.length; r < i; r++) e[n++] = t[r];
                            else
                                for (; void 0 !== t[r];) e[n++] = t[r++];
                            return e.length = n, e
                        },
                        grep: function(e, t, n) {
                            var r = [];
                            n = !!n;
                            for (var i = 0, o = e.length; i < o; i++) n !== !!t(e[i], i) && r.push(e[i]);
                            return r
                        },
                        map: function(e, t, n) {
                            var r, i, o = [],
                                s = 0,
                                l = e.length;
                            if (e instanceof a || void 0 !== l && "number" == typeof l && (l > 0 && e[0] && e[l - 1] || 0 === l || a.isArray(e)))
                                for (; s < l; s++) null != (r = t(e[s], s, n)) && (o[o.length] = r);
                            else
                                for (i in e) null != (r = t(e[i], i, n)) && (o[o.length] = r);
                            return o.concat.apply([], o)
                        },
                        guid: 1,
                        proxy: function(e, t) {
                            if ("string" == typeof t) {
                                var n = e[t];
                                t = e, e = n
                            }
                            if (a.isFunction(e)) {
                                var r = O.call(arguments, 2),
                                    i = function() {
                                        return e.apply(t, r.concat(O.call(arguments)))
                                    };
                                return i.guid = e.guid = e.guid || i.guid || a.guid++, i
                            }
                        },
                        access: function(e, t, n, r, i, o, s) {
                            var l, u = null == n,
                                c = 0,
                                d = e.length;
                            if (n && "object" == typeof n) {
                                for (c in n) a.access(e, t, c, n[c], 1, o, r);
                                i = 1
                            } else if (void 0 !== r) {
                                if (l = void 0 === s && a.isFunction(r), u && (l ? (l = t, t = function(e, t, n) {
                                        return l.call(a(e), n)
                                    }) : (t.call(e, r), t = null)), t)
                                    for (; c < d; c++) t(e[c], n, l ? r.call(e[c], c, t(e[c], n)) : r, s);
                                i = 1
                            }
                            return i ? e : u ? t.call(e) : d ? t(e[0], n) : o
                        },
                        now: function() {
                            return (new Date).getTime()
                        },
                        uaMatch: function(e) {
                            e = e.toLowerCase();
                            var t = y.exec(e) || b.exec(e) || x.exec(e) || e.indexOf("compatible") < 0 && w.exec(e) || [];
                            return {
                                browser: t[1] || "",
                                version: t[2] || "0"
                            }
                        },
                        sub: function() {
                            function e(t, n) {
                                return new e.fn.init(t, n)
                            }
                            a.extend(!0, e, this), e.superclass = this, e.fn = e.prototype = this(), e.fn.constructor = e, e.sub = this.sub, e.fn.init = function(t, r) {
                                return r && r instanceof a && !(r instanceof e) && (r = e(r)), a.fn.init.call(this, t, r, n)
                            }, e.fn.init.prototype = e.fn;
                            var n = e(t);
                            return e
                        },
                        browser: {}
                    }), a.each("Boolean Number String Function Array Date RegExp Object".split(" "), (function(e, t) {
                        F["[object " + t + "]"] = t.toLowerCase()
                    })), (r = a.uaMatch(S)).browser && (a.browser[r.browser] = !0, a.browser.version = r.version), a.browser.webkit && (a.browser.safari = !0), c.test(" ") && (d = /^[\s\xA0]+/, f = /[\s\xA0]+$/), e = a(t), t.addEventListener ? o = function() {
                        t.removeEventListener("DOMContentLoaded", o, !1), a.ready()
                    } : t.attachEvent && (o = function() {
                        "complete" === t.readyState && (t.detachEvent("onreadystatechange", o), a.ready())
                    }), a
                }(),
                o = {};
            i.Callbacks = function(e) {
                e = e ? o[e] || function(e) {
                    var t, n, r = o[e] = {};
                    for (t = 0, n = (e = e.split(/\s+/)).length; t < n; t++) r[e[t]] = !0;
                    return r
                }(e) : {};
                var t, n, r, a, s, l, u = [],
                    c = [],
                    d = function(t) {
                        var n, r, o, a;
                        for (n = 0, r = t.length; n < r; n++) o = t[n], "array" === (a = i.type(o)) ? d(o) : "function" === a && (e.unique && p.has(o) || u.push(o))
                    },
                    f = function(i, o) {
                        for (o = o || [], t = !e.memory || [i, o], n = !0, r = !0, l = a || 0, a = 0, s = u.length; u && l < s; l++)
                            if (!1 === u[l].apply(i, o) && e.stopOnFalse) {
                                t = !0;
                                break
                            }
                        r = !1, u && (e.once ? !0 === t ? p.disable() : u = [] : c && c.length && (t = c.shift(), p.fireWith(t[0], t[1])))
                    },
                    p = {
                        add: function() {
                            if (u) {
                                var e = u.length;
                                d(arguments),
                                    r ? s = u.length : t && !0 !== t && (a = e, f(t[0], t[1]))
                            }
                            return this
                        },
                        remove: function() {
                            if (u)
                                for (var t = arguments, n = 0, i = t.length; n < i; n++)
                                    for (var o = 0; o < u.length && (t[n] !== u[o] || (r && o <= s && (s--, o <= l && l--), u.splice(o--, 1), !e.unique)); o++);
                            return this
                        },
                        has: function(e) {
                            if (u)
                                for (var t = 0, n = u.length; t < n; t++)
                                    if (e === u[t]) return !0;
                            return !1
                        },
                        empty: function() {
                            return u = [], this
                        },
                        disable: function() {
                            return u = c = t = void 0, this
                        },
                        disabled: function() {
                            return !u
                        },
                        lock: function() {
                            return c = void 0, t && !0 !== t || p.disable(), this
                        },
                        locked: function() {
                            return !c
                        },
                        fireWith: function(n, i) {
                            return c && (r ? e.once || c.push([n, i]) : e.once && t || f(n, i)), this
                        },
                        fire: function() {
                            return p.fireWith(this, arguments), this
                        },
                        fired: function() {
                            return !!n
                        }
                    };
                return p
            };
            var a = [].slice;
            i.extend({
                Deferred: function(e) {
                    var t, n = i.Callbacks("once memory"),
                        r = i.Callbacks("once memory"),
                        o = i.Callbacks("memory"),
                        a = "pending",
                        s = {
                            resolve: n,
                            reject: r,
                            notify: o
                        },
                        l = {
                            done: n.add,
                            fail: r.add,
                            progress: o.add,
                            state: function() {
                                return a
                            },
                            isResolved: n.fired,
                            isRejected: r.fired,
                            then: function(e, t, n) {
                                return u.done(e).fail(t).progress(n), this
                            },
                            always: function() {
                                return u.done.apply(u, arguments).fail.apply(u, arguments), this
                            },
                            pipe: function(e, t, n) {
                                return i.Deferred((function(r) {
                                    i.each({
                                        done: [e, "resolve"],
                                        fail: [t, "reject"],
                                        progress: [n, "notify"]
                                    }, (function(e, t) {
                                        var n, o = t[0],
                                            a = t[1];
                                        i.isFunction(o) ? u[e]((function() {
                                            (n = o.apply(this, arguments)) && i.isFunction(n.promise) ? n.promise().then(r.resolve, r.reject, r.notify) : r[a + "With"](this === u ? r : this, [n])
                                        })) : u[e](r[a])
                                    }))
                                })).promise()
                            },
                            promise: function(e) {
                                if (null == e) e = l;
                                else
                                    for (var t in l) e[t] = l[t];
                                return e
                            }
                        },
                        u = l.promise({});
                    for (t in s) u[t] = s[t].fire, u[t + "With"] = s[t].fireWith;
                    return u.done((function() {
                        a = "resolved"
                    }), r.disable, o.lock).fail((function() {
                        a = "rejected"
                    }), n.disable, o.lock), e && e.call(u, u), u
                },
                when: function(e) {
                    var t = a.call(arguments, 0),
                        n = 0,
                        r = t.length,
                        o = new Array(r),
                        s = r,
                        l = r <= 1 && e && i.isFunction(e.promise) ? e : i.Deferred(),
                        u = l.promise();

                    function c(e) {
                        return function(n) {
                            t[e] = arguments.length > 1 ? a.call(arguments, 0) : n, --s || l.resolveWith(l, t)
                        }
                    }

                    function d(e) {
                        return function(t) {
                            o[e] = arguments.length > 1 ? a.call(arguments, 0) : t, l.notifyWith(u, o)
                        }
                    }
                    if (r > 1) {
                        for (; n < r; n++) t[n] && t[n].promise && i.isFunction(t[n].promise) ? t[n].promise().then(c(n), l.reject, d(n)) : --s;
                        s || l.resolveWith(l, t)
                    } else l !== e && l.resolveWith(l, r ? [e] : []);
                    return u
                }
            }), i.support = function() {
                var e, n, r, o, a, s, l, u, c, d, f, p = t.createElement("div");
                t.documentElement;
                if (p.setAttribute("className", "t"), p.innerHTML = "   <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>", n = p.getElementsByTagName("*"), r = p.getElementsByTagName("a")[0], !n || !n.length || !r) return {};
                a = (o = t.createElement("select")).appendChild(t.createElement("option")), s = p.getElementsByTagName("input")[0], e = {
                    leadingWhitespace: 3 === p.firstChild.nodeType,
                    tbody: !p.getElementsByTagName("tbody").length,
                    htmlSerialize: !!p.getElementsByTagName("link").length,
                    style: /top/.test(r.getAttribute("style")),
                    hrefNormalized: "/a" === r.getAttribute("href"),
                    opacity: /^0.55/.test(r.style.opacity),
                    cssFloat: !!r.style.cssFloat,
                    checkOn: "on" === s.value,
                    optSelected: a.selected,
                    getSetAttribute: "t" !== p.className,
                    enctype: !!t.createElement("form").enctype,
                    html5Clone: "<:nav></:nav>" !== t.createElement("nav").cloneNode(!0).outerHTML,
                    submitBubbles: !0,
                    changeBubbles: !0,
                    focusinBubbles: !1,
                    deleteExpando: !0,
                    noCloneEvent: !0,
                    inlineBlockNeedsLayout: !1,
                    shrinkWrapBlocks: !1,
                    reliableMarginRight: !0,
                    pixelMargin: !0
                }, i.boxModel = e.boxModel = "CSS1Compat" === t.compatMode, s.checked = !0, e.noCloneChecked = s.cloneNode(!0).checked, o.disabled = !0, e.optDisabled = !a.disabled;
                try {
                    delete p.test
                } catch (t) {
                    e.deleteExpando = !1
                }
                if (!p.addEventListener && p.attachEvent && p.fireEvent && (p.attachEvent("onclick", (function() {
                        e.noCloneEvent = !1
                    })), p.cloneNode(!0).fireEvent("onclick")), (s = t.createElement("input")).value = "t", s.setAttribute("type", "radio"), e.radioValue = "t" === s.value, s.setAttribute("checked", "checked"), s.setAttribute("name", "t"), p.appendChild(s), (l = t.createDocumentFragment()).appendChild(p.lastChild), e.checkClone = l.cloneNode(!0).cloneNode(!0).lastChild.checked, e.appendChecked = s.checked, l.removeChild(s), l.appendChild(p), p.attachEvent)
                    for (d in {
                            submit: 1,
                            change: 1,
                            focusin: 1
                        })(f = (c = "on" + d) in p) || (p.setAttribute(c, "return;"), f = "function" == typeof p[c]), e[d + "Bubbles"] = f;
                return l.removeChild(p), l = o = a = p = s = null, i((function() {
                    var n, r, o, a, s, l, c, d = t.getElementsByTagName("body")[0];
                    d && (c = "style='position:absolute;top:0;left:0;width:1px;height:1px;padding:0;margin:0;border:5px solid #000;", (n = t.createElement("div")).style.cssText = "padding:0;margin:0;border:0;visibility:hidden;width:0;height:0;position:static;top:0;margin-top:1px", d.insertBefore(n, d.firstChild), p = t.createElement("div"), n.appendChild(p), p.innerHTML = "<table><tr><td style='padding:0;margin:0;border:0;display:none'></td><td>t</td></tr></table>", u = p.getElementsByTagName("td"), f = 0 === u[0].offsetHeight, u[0].style.display = "", u[1].style.display = "none", e.reliableHiddenOffsets = f && 0 === u[0].offsetHeight, window.getComputedStyle && (p.innerHTML = "", (l = t.createElement("div")).style.width = "0", l.style.marginRight = "0", p.style.width = "2px", p.appendChild(l), e.reliableMarginRight = 0 === (parseInt((window.getComputedStyle(l, null) || {
                        marginRight: 0
                    }).marginRight, 10) || 0)), void 0 !== p.style.zoom && (p.innerHTML = "", p.style.width = p.style.padding = "1px", p.style.border = 0, p.style.overflow = "hidden", p.style.display = "inline", p.style.zoom = 1, e.inlineBlockNeedsLayout = 3 === p.offsetWidth, p.style.display = "block", p.style.overflow = "visible", p.innerHTML = "<div style='width:5px;'></div>", e.shrinkWrapBlocks = 3 !== p.offsetWidth), p.style.cssText = "position:absolute;top:0;left:0;width:1px;height:1px;padding:0;margin:0;border:0;visibility:hidden;", p.innerHTML = "<div style='position:absolute;top:0;left:0;width:1px;height:1px;padding:0;margin:0;border:5px solid #000;display:block;'><div style='padding:0;margin:0;border:0;display:block;overflow:hidden;'></div></div><table style='position:absolute;top:0;left:0;width:1px;height:1px;padding:0;margin:0;border:5px solid #000;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>", o = (r = p.firstChild).firstChild, a = r.nextSibling.firstChild.firstChild, s = {
                        doesNotAddBorder: 5 !== o.offsetTop,
                        doesAddBorderForTableAndCells: 5 === a.offsetTop
                    }, o.style.position = "fixed", o.style.top = "20px", s.fixedPosition = 20 === o.offsetTop || 15 === o.offsetTop, o.style.position = o.style.top = "", r.style.overflow = "hidden", r.style.position = "relative", s.subtractsBorderForOverflowNotVisible = -5 === o.offsetTop, s.doesNotIncludeMarginInBodyOffset = 1 !== d.offsetTop, window.getComputedStyle && (p.style.marginTop = "1%", e.pixelMargin = "1%" !== (window.getComputedStyle(p, null) || {
                        marginTop: 0
                    }).marginTop), void 0 !== n.style.zoom && (n.style.zoom = 1), d.removeChild(n), l = p = n = null, i.extend(e, s))
                })), e
            }();
            var s = /^(?:\{.*\}|\[.*\])$/,
                l = /([A-Z])/g;

            function u(e, t, n) {
                if (void 0 === n && 1 === e.nodeType) {
                    var r = "data-" + t.replace(l, "-$1").toLowerCase();
                    if ("string" == typeof(n = e.getAttribute(r))) {
                        try {
                            n = "true" === n || "false" !== n && ("null" === n ? null : i.isNumeric(n) ? +n : s.test(n) ? i.parseJSON(n) : n)
                        } catch (e) {}
                        i.data(e, t, n)
                    } else n = void 0
                }
                return n
            }

            function c(e) {
                for (var t in e)
                    if (("data" !== t || !i.isEmptyObject(e[t])) && "toJSON" !== t) return !1;
                return !0
            }

            function d(e, t, n) {
                var r = t + "defer",
                    o = t + "queue",
                    a = t + "mark",
                    s = i._data(e, r);
                !s || "queue" !== n && i._data(e, o) || "mark" !== n && i._data(e, a) || setTimeout((function() {
                    i._data(e, o) || i._data(e, a) || (i.removeData(e, r, !0), s.fire())
                }), 0)
            }
            i.extend({
                cache: {},
                uuid: 0,
                expando: "jQuery" + (i.fn.jquery + Math.random()).replace(/\D/g, ""),
                noData: {
                    embed: !0,
                    object: "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",
                    applet: !0
                },
                hasData: function(e) {
                    return !!(e = e.nodeType ? i.cache[e[i.expando]] : e[i.expando]) && !c(e)
                },
                data: function(e, t, n, r) {
                    if (i.acceptData(e)) {
                        var o, a, s, l = i.expando,
                            u = "string" == typeof t,
                            c = e.nodeType,
                            d = c ? i.cache : e,
                            f = c ? e[l] : e[l] && l,
                            p = "events" === t;
                        if (f && d[f] && (p || r || d[f].data) || !u || void 0 !== n) return f || (c ? e[l] = f = ++i.uuid : f = l), d[f] || (d[f] = {}, c || (d[f].toJSON = i.noop)), "object" != typeof t && "function" != typeof t || (r ? d[f] = i.extend(d[f], t) : d[f].data = i.extend(d[f].data, t)), o = a = d[f], r || (a.data || (a.data = {}), a = a.data), void 0 !== n && (a[i.camelCase(t)] = n), p && !a[t] ? o.events : (u ? null == (s = a[t]) && (s = a[i.camelCase(t)]) : s = a, s)
                    }
                },
                removeData: function(e, t, n) {
                    if (i.acceptData(e)) {
                        var r, o, a, s = i.expando,
                            l = e.nodeType,
                            u = l ? i.cache : e,
                            d = l ? e[s] : s;
                        if (u[d]) {
                            if (t && (r = n ? u[d] : u[d].data)) {
                                i.isArray(t) || (t = t in r || (t = i.camelCase(t)) in r ? [t] : t.split(" "));
                                for (o = 0, a = t.length; o < a; o++) delete r[t[o]];
                                if (!(n ? c : i.isEmptyObject)(r)) return
                            }(n || (delete u[d].data, c(u[d]))) && (i.support.deleteExpando || !u.setInterval ? delete u[d] : u[d] = null, l && (i.support.deleteExpando ? delete e[s] : e.removeAttribute ? e.removeAttribute(s) : e[s] = null))
                        }
                    }
                },
                _data: function(e, t, n) {
                    return i.data(e, t, n, !0)
                },
                acceptData: function(e) {
                    if (e.nodeName) {
                        var t = i.noData[e.nodeName.toLowerCase()];
                        if (t) return !(!0 === t || e.getAttribute("classid") !== t)
                    }
                    return !0
                }
            }), i.fn.extend({
                data: function(e, t) {
                    var n, r, o, a, s, l = this[0],
                        c = 0,
                        d = null;
                    if (void 0 === e) {
                        if (this.length && (d = i.data(l), 1 === l.nodeType && !i._data(l, "parsedAttrs"))) {
                            for (s = (o = l.attributes).length; c < s; c++) 0 === (a = o[c].name).indexOf("data-") && (a = i.camelCase(a.substring(5)), u(l, a, d[a]));
                            i._data(l, "parsedAttrs", !0)
                        }
                        return d
                    }
                    return "object" == typeof e ? this.each((function() {
                        i.data(this, e)
                    })) : ((n = e.split(".", 2))[1] = n[1] ? "." + n[1] : "", r = n[1] + "!",
                        i.access(this, (function(t) {
                            if (void 0 === t) return void 0 === (d = this.triggerHandler("getData" + r, [n[0]])) && l && (d = i.data(l, e), d = u(l, e, d)), void 0 === d && n[1] ? this.data(n[0]) : d;
                            n[1] = t, this.each((function() {
                                var o = i(this);
                                o.triggerHandler("setData" + r, n), i.data(this, e, t), o.triggerHandler("changeData" + r, n)
                            }))
                        }), null, t, arguments.length > 1, null, !1))
                },
                removeData: function(e) {
                    return this.each((function() {
                        i.removeData(this, e)
                    }))
                }
            }), i.extend({
                _mark: function(e, t) {
                    e && (t = (t || "fx") + "mark", i._data(e, t, (i._data(e, t) || 0) + 1))
                },
                _unmark: function(e, t, n) {
                    if (!0 !== e && (n = t, t = e, e = !1), t) {
                        var r = (n = n || "fx") + "mark",
                            o = e ? 0 : (i._data(t, r) || 1) - 1;
                        o ? i._data(t, r, o) : (i.removeData(t, r, !0), d(t, n, "mark"))
                    }
                },
                queue: function(e, t, n) {
                    var r;
                    if (e) return t = (t || "fx") + "queue", r = i._data(e, t), n && (!r || i.isArray(n) ? r = i._data(e, t, i.makeArray(n)) : r.push(n)), r || []
                },
                dequeue: function(e, t) {
                    t = t || "fx";
                    var n = i.queue(e, t),
                        r = n.shift(),
                        o = {};
                    "inprogress" === r && (r = n.shift()), r && ("fx" === t && n.unshift("inprogress"), i._data(e, t + ".run", o), r.call(e, (function() {
                        i.dequeue(e, t)
                    }), o)), n.length || (i.removeData(e, t + "queue " + t + ".run", !0), d(e, t, "queue"))
                }
            }), i.fn.extend({
                queue: function(e, t) {
                    var n = 2;
                    return "string" != typeof e && (t = e, e = "fx", n--), arguments.length < n ? i.queue(this[0], e) : void 0 === t ? this : this.each((function() {
                        var n = i.queue(this, e, t);
                        "fx" === e && "inprogress" !== n[0] && i.dequeue(this, e)
                    }))
                },
                dequeue: function(e) {
                    return this.each((function() {
                        i.dequeue(this, e)
                    }))
                },
                delay: function(e, t) {
                    return e = i.fx && i.fx.speeds[e] || e, t = t || "fx", this.queue(t, (function(t, n) {
                        var r = setTimeout(t, e);
                        n.stop = function() {
                            clearTimeout(r)
                        }
                    }))
                },
                clearQueue: function(e) {
                    return this.queue(e || "fx", [])
                },
                promise: function(e, t) {
                    "string" != typeof e && (t = e, e = void 0), e = e || "fx";
                    var n, r = i.Deferred(),
                        o = this,
                        a = o.length,
                        s = 1,
                        l = e + "defer",
                        u = e + "queue",
                        c = e + "mark";

                    function d() {
                        --s || r.resolveWith(o, [o])
                    }
                    for (; a--;)(n = i.data(o[a], l, void 0, !0) || (i.data(o[a], u, void 0, !0) || i.data(o[a], c, void 0, !0)) && i.data(o[a], l, i.Callbacks("once memory"), !0)) && (s++, n.add(d));
                    return d(), r.promise(t)
                }
            });
            var f, p, h, g = /[\n\t\r]/g,
                v = /\s+/,
                m = /\r/g,
                y = /^(?:button|input)$/i,
                b = /^(?:button|input|object|select|textarea)$/i,
                x = /^a(?:rea)?$/i,
                w = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,
                k = i.support.getSetAttribute;
            i.fn.extend({
                attr: function(e, t) {
                    return i.access(this, i.attr, e, t, arguments.length > 1)
                },
                removeAttr: function(e) {
                    return this.each((function() {
                        i.removeAttr(this, e)
                    }))
                },
                prop: function(e, t) {
                    return i.access(this, i.prop, e, t, arguments.length > 1)
                },
                removeProp: function(e) {
                    return e = i.propFix[e] || e, this.each((function() {
                        try {
                            this[e] = void 0, delete this[e]
                        } catch (e) {}
                    }))
                },
                addClass: function(e) {
                    var t, n, r, o, a, s, l;
                    if (i.isFunction(e)) return this.each((function(t) {
                        i(this).addClass(e.call(this, t, this.className))
                    }));
                    if (e && "string" == typeof e)
                        for (t = e.split(v), n = 0, r = this.length; n < r; n++)
                            if (1 === (o = this[n]).nodeType)
                                if (o.className || 1 !== t.length) {
                                    for (a = " " + o.className + " ", s = 0, l = t.length; s < l; s++) ~a.indexOf(" " + t[s] + " ") || (a += t[s] + " ");
                                    o.className = i.trim(a)
                                } else o.className = e;
                    return this
                },
                removeClass: function(e) {
                    var t, n, r, o, a, s, l;
                    if (i.isFunction(e)) return this.each((function(t) {
                        i(this).removeClass(e.call(this, t, this.className))
                    }));
                    if (e && "string" == typeof e || void 0 === e)
                        for (t = (e || "").split(v), n = 0, r = this.length; n < r; n++)
                            if (1 === (o = this[n]).nodeType && o.className)
                                if (e) {
                                    for (a = (" " + o.className + " ").replace(g, " "), s = 0, l = t.length; s < l; s++) a = a.replace(" " + t[s] + " ", " ");
                                    o.className = i.trim(a)
                                } else o.className = "";
                    return this
                },
                toggleClass: function(e, t) {
                    var n = typeof e,
                        r = "boolean" == typeof t;
                    return i.isFunction(e) ? this.each((function(n) {
                        i(this).toggleClass(e.call(this, n, this.className, t), t)
                    })) : this.each((function() {
                        if ("string" === n)
                            for (var o, a = 0, s = i(this), l = t, u = e.split(v); o = u[a++];) l = r ? l : !s.hasClass(o), s[l ? "addClass" : "removeClass"](o);
                        else "undefined" !== n && "boolean" !== n || (this.className && i._data(this, "__className__", this.className), this.className = this.className || !1 === e ? "" : i._data(this, "__className__") || "")
                    }))
                },
                hasClass: function(e) {
                    for (var t = " " + e + " ", n = 0, r = this.length; n < r; n++)
                        if (1 === this[n].nodeType && (" " + this[n].className + " ").replace(g, " ").indexOf(t) > -1) return !0;
                    return !1
                },
                val: function(e) {
                    var t, n, r, o = this[0];
                    return arguments.length ? (r = i.isFunction(e), this.each((function(n) {
                        var o, a = i(this);
                        1 === this.nodeType && (null == (o = r ? e.call(this, n, a.val()) : e) ? o = "" : "number" == typeof o ? o += "" : i.isArray(o) && (o = i.map(o, (function(e) {
                            return null == e ? "" : e + ""
                        }))), (t = i.valHooks[this.type] || i.valHooks[this.nodeName.toLowerCase()]) && "set" in t && void 0 !== t.set(this, o, "value") || (this.value = o))
                    }))) : o ? (t = i.valHooks[o.type] || i.valHooks[o.nodeName.toLowerCase()]) && "get" in t && void 0 !== (n = t.get(o, "value")) ? n : "string" == typeof(n = o.value) ? n.replace(m, "") : null == n ? "" : n : void 0
                }
            }), i.extend({
                valHooks: {
                    option: {
                        get: function(e) {
                            var t = e.attributes.value;
                            return !t || t.specified ? e.value : e.text
                        }
                    },
                    select: {
                        get: function(e) {
                            var t, n, r, o, a = e.selectedIndex,
                                s = [],
                                l = e.options,
                                u = "select-one" === e.type;
                            if (a < 0) return null;
                            for (n = u ? a : 0, r = u ? a + 1 : l.length; n < r; n++)
                                if ((o = l[n]).selected && (i.support.optDisabled ? !o.disabled : null === o.getAttribute("disabled")) && (!o.parentNode.disabled || !i.nodeName(o.parentNode, "optgroup"))) {
                                    if (t = i(o).val(), u) return t;
                                    s.push(t)
                                }
                            return u && !s.length && l.length ? i(l[a]).val() : s
                        },
                        set: function(e, t) {
                            var n = i.makeArray(t);
                            return i(e).find("option").each((function() {
                                this.selected = i.inArray(i(this).val(), n) >= 0
                            })), n.length || (e.selectedIndex = -1), n
                        }
                    }
                },
                attrFn: {
                    val: !0,
                    css: !0,
                    html: !0,
                    text: !0,
                    data: !0,
                    width: !0,
                    height: !0,
                    offset: !0
                },
                attr: function(e, t, n, r) {
                    var o, a, s, l = e.nodeType;
                    if (e && 3 !== l && 8 !== l && 2 !== l) return r && t in i.attrFn ? i(e)[t](n) : void 0 === e.getAttribute ? i.prop(e, t, n) : ((s = 1 !== l || !i.isXMLDoc(e)) && (t = t.toLowerCase(), a = i.attrHooks[t] || (w.test(t) ? p : f)), void 0 !== n ? null === n ? void i.removeAttr(e, t) : a && "set" in a && s && void 0 !== (o = a.set(e, n, t)) ? o : (e.setAttribute(t, "" + n), n) : a && "get" in a && s && null !== (o = a.get(e, t)) ? o : null === (o = e.getAttribute(t)) ? void 0 : o)
                },
                removeAttr: function(e, t) {
                    var n, r, o, a, s, l = 0;
                    if (t && 1 === e.nodeType)
                        for (a = (r = t.toLowerCase().split(v)).length; l < a; l++)(o = r[l]) && (n = i.propFix[o] || o, (s = w.test(o)) || i.attr(e, o, ""), e.removeAttribute(k ? o : n), s && n in e && (e[n] = !1))
                },
                attrHooks: {
                    type: {
                        set: function(e, t) {
                            if (y.test(e.nodeName) && e.parentNode) i.error("type property can't be changed");
                            else if (!i.support.radioValue && "radio" === t && i.nodeName(e, "input")) {
                                var n = e.value;
                                return e.setAttribute("type", t), n && (e.value = n), t
                            }
                        }
                    },
                    value: {
                        get: function(e, t) {
                            return f && i.nodeName(e, "button") ? f.get(e, t) : t in e ? e.value : null
                        },
                        set: function(e, t, n) {
                            if (f && i.nodeName(e, "button")) return f.set(e, t, n);
                            e.value = t
                        }
                    }
                },
                propFix: {
                    tabindex: "tabIndex",
                    readonly: "readOnly",
                    for: "htmlFor",
                    class: "className",
                    maxlength: "maxLength",
                    cellspacing: "cellSpacing",
                    cellpadding: "cellPadding",
                    rowspan: "rowSpan",
                    colspan: "colSpan",
                    usemap: "useMap",
                    frameborder: "frameBorder",
                    contenteditable: "contentEditable"
                },
                prop: function(e, t, n) {
                    var r, o, a = e.nodeType;
                    if (e && 3 !== a && 8 !== a && 2 !== a) return (1 !== a || !i.isXMLDoc(e)) && (t = i.propFix[t] || t, o = i.propHooks[t]), void 0 !== n ? o && "set" in o && void 0 !== (r = o.set(e, n, t)) ? r : e[t] = n : o && "get" in o && null !== (r = o.get(e, t)) ? r : e[t]
                },
                propHooks: {
                    tabIndex: {
                        get: function(e) {
                            var t = e.getAttributeNode("tabindex");
                            return t && t.specified ? parseInt(t.value, 10) : b.test(e.nodeName) || x.test(e.nodeName) && e.href ? 0 : void 0
                        }
                    }
                }
            }), i.attrHooks.tabindex = i.propHooks.tabIndex, p = {
                get: function(e, t) {
                    var n, r = i.prop(e, t);
                    return !0 === r || "boolean" != typeof r && (n = e.getAttributeNode(t)) && !1 !== n.nodeValue ? t.toLowerCase() : void 0
                },
                set: function(e, t, n) {
                    var r;
                    return !1 === t ? i.removeAttr(e, n) : ((r = i.propFix[n] || n) in e && (e[r] = !0), e.setAttribute(n, n.toLowerCase())), n
                }
            }, k || (h = {
                name: !0,
                id: !0,
                coords: !0
            }, f = i.valHooks.button = {
                get: function(e, t) {
                    var n;
                    return (n = e.getAttributeNode(t)) && (h[t] ? "" !== n.nodeValue : n.specified) ? n.nodeValue : void 0
                },
                set: function(e, n, r) {
                    var i = e.getAttributeNode(r);
                    return i || (i = t.createAttribute(r), e.setAttributeNode(i)), i.nodeValue = n + ""
                }
            }, i.attrHooks.tabindex.set = f.set, i.each(["width", "height"], (function(e, t) {
                i.attrHooks[t] = i.extend(i.attrHooks[t], {
                    set: function(e, n) {
                        if ("" === n) return e.setAttribute(t, "auto"), n
                    }
                })
            })), i.attrHooks.contenteditable = {
                get: f.get,
                set: function(e, t, n) {
                    "" === t && (t = "false"), f.set(e, t, n)
                }
            }), i.support.hrefNormalized || i.each(["href", "src", "width", "height"], (function(e, t) {
                i.attrHooks[t] = i.extend(i.attrHooks[t], {
                    get: function(e) {
                        var n = e.getAttribute(t, 2);
                        return null === n ? void 0 : n
                    }
                })
            })), i.support.style || (i.attrHooks.style = {
                get: function(e) {
                    return e.style.cssText.toLowerCase() || void 0
                },
                set: function(e, t) {
                    return e.style.cssText = "" + t
                }
            }), i.support.optSelected || (i.propHooks.selected = i.extend(i.propHooks.selected, {
                get: function(e) {
                    var t = e.parentNode;
                    return t && (t.selectedIndex, t.parentNode && t.parentNode.selectedIndex), null
                }
            })), i.support.enctype || (i.propFix.enctype = "encoding"), i.support.checkOn || i.each(["radio", "checkbox"], (function() {
                i.valHooks[this] = {
                    get: function(e) {
                        return null === e.getAttribute("value") ? "on" : e.value
                    }
                }
            })), i.each(["radio", "checkbox"], (function() {
                i.valHooks[this] = i.extend(i.valHooks[this], {
                    set: function(e, t) {
                        if (i.isArray(t)) return e.checked = i.inArray(i(e).val(), t) >= 0
                    }
                })
            }));
            var T = /^(?:textarea|input|select)$/i,
                N = /^([^\.]*)?(?:\.(.+))?$/,
                S = /(?:^|\s)hover(\.\S+)?\b/,
                C = /^key/,
                L = /^(?:mouse|contextmenu)|click/,
                E = /^(?:focusinfocus|focusoutblur)$/,
                O = /^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,
                A = function(e) {
                    var t = O.exec(e);
                    return t && (t[1] = (t[1] || "").toLowerCase(), t[3] = t[3] && new RegExp("(?:^|\\s)" + t[3] + "(?:\\s|$)")), t
                },
                j = function(e, t) {
                    var n = e.attributes || {};
                    return (!t[1] || e.nodeName.toLowerCase() === t[1]) && (!t[2] || (n.id || {}).value === t[2]) && (!t[3] || t[3].test((n.class || {}).value))
                },
                F = function(e) {
                    return i.event.special.hover ? e : e.replace(S, "mouseenter$1 mouseleave$1")
                };

            function D() {
                return !1
            }

            function _() {
                return !0
            }
            i.event = {
                    add: function(e, t, n, r, o) {
                        var a, s, l, u, c, d, f, p, h, g, v;
                        if (3 !== e.nodeType && 8 !== e.nodeType && t && n && (a = i._data(e))) {
                            for (n.handler && (n = (h = n).handler, o = h.selector), n.guid || (n.guid = i.guid++), (l = a.events) || (a.events = l = {}), (s = a.handle) || (a.handle = s = function(e) {
                                    return void 0 === i || e && i.event.triggered === e.type ? void 0 : i.event.dispatch.apply(s.elem, arguments)
                                }, s.elem = e), t = i.trim(F(t)).split(" "), u = 0; u < t.length; u++) d = (c = N.exec(t[u]) || [])[1], f = (c[2] || "").split(".").sort(), v = i.event.special[d] || {}, d = (o ? v.delegateType : v.bindType) || d, v = i.event.special[d] || {}, p = i.extend({
                                type: d,
                                origType: c[1],
                                data: r,
                                handler: n,
                                guid: n.guid,
                                selector: o,
                                quick: o && A(o),
                                namespace: f.join(".")
                            }, h), (g = l[d]) || ((g = l[d] = []).delegateCount = 0, v.setup && !1 !== v.setup.call(e, r, f, s) || (e.addEventListener ? e.addEventListener(d, s, !1) : e.attachEvent && e.attachEvent("on" + d, s))), v.add && (v.add.call(e, p), p.handler.guid || (p.handler.guid = n.guid)), o ? g.splice(g.delegateCount++, 0, p) : g.push(p), i.event.global[d] = !0;
                            e = null
                        }
                    },
                    global: {},
                    remove: function(e, t, n, r, o) {
                        var a, s, l, u, c, d, f, p, h, g, v, m, y = i.hasData(e) && i._data(e);
                        if (y && (p = y.events)) {
                            for (t = i.trim(F(t || "")).split(" "), a = 0; a < t.length; a++)
                                if (l = u = (s = N.exec(t[a]) || [])[1], c = s[2], l) {
                                    for (h = i.event.special[l] || {}, d = (v = p[l = (r ? h.delegateType : h.bindType) || l] || []).length, c = c ? new RegExp("(^|\\.)" + c.split(".").sort().join("\\.(?:.*\\.)?") + "(\\.|$)") : null, f = 0; f < v.length; f++) m = v[f], !o && u !== m.origType || n && n.guid !== m.guid || c && !c.test(m.namespace) || r && r !== m.selector && ("**" !== r || !m.selector) || (v.splice(f--, 1), m.selector && v.delegateCount--, h.remove && h.remove.call(e, m));
                                    0 === v.length && d !== v.length && (h.teardown && !1 !== h.teardown.call(e, c) || i.removeEvent(e, l, y.handle), delete p[l])
                                } else
                                    for (l in p) i.event.remove(e, l + t[a], n, r, !0);
                            i.isEmptyObject(p) && ((g = y.handle) && (g.elem = null), i.removeData(e, ["events", "handle"], !0))
                        }
                    },
                    customEvent: {
                        getData: !0,
                        setData: !0,
                        changeData: !0
                    },
                    trigger: function(e, t, n, r) {
                        if (!n || 3 !== n.nodeType && 8 !== n.nodeType) {
                            var o, a, s, l, u, c, d, f, p, h, g = e.type || e,
                                v = [];
                            if (!E.test(g + i.event.triggered) && (g.indexOf("!") >= 0 && (g = g.slice(0, -1), a = !0), g.indexOf(".") >= 0 && (v = g.split("."), g = v.shift(), v.sort()), n && !i.event.customEvent[g] || i.event.global[g]))
                                if ((e = "object" == typeof e ? e[i.expando] ? e : new i.Event(g, e) : new i.Event(g)).type = g, e.isTrigger = !0, e.exclusive = a, e.namespace = v.join("."), e.namespace_re = e.namespace ? new RegExp("(^|\\.)" + v.join("\\.(?:.*\\.)?") + "(\\.|$)") : null, c = g.indexOf(":") < 0 ? "on" + g : "", n) {
                                    if (e.result = void 0, e.target || (e.target = n),
                                        (t = null != t ? i.makeArray(t) : []).unshift(e), !(d = i.event.special[g] || {}).trigger || !1 !== d.trigger.apply(n, t)) {
                                        if (p = [
                                                [n, d.bindType || g]
                                            ], !r && !d.noBubble && !i.isWindow(n)) {
                                            for (h = d.delegateType || g, l = E.test(h + g) ? n : n.parentNode, u = null; l; l = l.parentNode) p.push([l, h]), u = l;
                                            u && u === n.ownerDocument && p.push([u.defaultView || u.parentWindow || window, h])
                                        }
                                        for (s = 0; s < p.length && !e.isPropagationStopped(); s++) l = p[s][0], e.type = p[s][1], (f = (i._data(l, "events") || {})[e.type] && i._data(l, "handle")) && f.apply(l, t), (f = c && l[c]) && i.acceptData(l) && !1 === f.apply(l, t) && e.preventDefault();
                                        return e.type = g, r || e.isDefaultPrevented() || d._default && !1 !== d._default.apply(n.ownerDocument, t) || "click" === g && i.nodeName(n, "a") || !i.acceptData(n) || c && n[g] && ("focus" !== g && "blur" !== g || 0 !== e.target.offsetWidth) && !i.isWindow(n) && ((u = n[c]) && (n[c] = null), i.event.triggered = g, n[g](), i.event.triggered = void 0, u && (n[c] = u)), e.result
                                    }
                                } else
                                    for (s in o = i.cache) o[s].events && o[s].events[g] && i.event.trigger(e, t, o[s].handle.elem, !0)
                        }
                    },
                    dispatch: function(e) {
                        e = i.event.fix(e || window.event);
                        var t, n, r, o, a, s, l, u, c, d, f = (i._data(this, "events") || {})[e.type] || [],
                            p = f.delegateCount,
                            h = [].slice.call(arguments, 0),
                            g = !e.exclusive && !e.namespace,
                            v = i.event.special[e.type] || {},
                            m = [];
                        if (h[0] = e, e.delegateTarget = this, !v.preDispatch || !1 !== v.preDispatch.call(this, e)) {
                            if (p && (!e.button || "click" !== e.type))
                                for ((o = i(this)).context = this.ownerDocument || this, r = e.target; r != this; r = r.parentNode || this)
                                    if (!0 !== r.disabled) {
                                        for (s = {}, u = [], o[0] = r, t = 0; t < p; t++) void 0 === s[d = (c = f[t]).selector] && (s[d] = c.quick ? j(r, c.quick) : o.is(d)), s[d] && u.push(c);
                                        u.length && m.push({
                                            elem: r,
                                            matches: u
                                        })
                                    }
                            for (f.length > p && m.push({
                                    elem: this,
                                    matches: f.slice(p)
                                }), t = 0; t < m.length && !e.isPropagationStopped(); t++)
                                for (l = m[t], e.currentTarget = l.elem, n = 0; n < l.matches.length && !e.isImmediatePropagationStopped(); n++) c = l.matches[n], (g || !e.namespace && !c.namespace || e.namespace_re && e.namespace_re.test(c.namespace)) && (e.data = c.data, e.handleObj = c, void 0 !== (a = ((i.event.special[c.origType] || {}).handle || c.handler).apply(l.elem, h)) && (e.result = a, !1 === a && (e.preventDefault(), e.stopPropagation())));
                            return v.postDispatch && v.postDispatch.call(this, e), e.result
                        }
                    },
                    props: "attrChange attrName relatedNode srcElement 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 fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
                        filter: function(e, n) {
                            var r, i, o, a = n.button,
                                s = n.fromElement;
                            return null == e.pageX && null != n.clientX && (i = (r = e.target.ownerDocument || t).documentElement, o = r.body, e.pageX = n.clientX + (i && i.scrollLeft || o && o.scrollLeft || 0) - (i && i.clientLeft || o && o.clientLeft || 0), e.pageY = n.clientY + (i && i.scrollTop || o && o.scrollTop || 0) - (i && i.clientTop || o && o.clientTop || 0)), !e.relatedTarget && s && (e.relatedTarget = s === e.target ? n.toElement : s), e.which || void 0 === a || (e.which = 1 & a ? 1 : 2 & a ? 3 : 4 & a ? 2 : 0), e
                        }
                    },
                    fix: function(e) {
                        if (e[i.expando]) return e;
                        var n, r, o = e,
                            a = i.event.fixHooks[e.type] || {},
                            s = a.props ? this.props.concat(a.props) : this.props;
                        for (e = i.Event(o), n = s.length; n;) e[r = s[--n]] = o[r];
                        return e.target || (e.target = o.srcElement || t), 3 === e.target.nodeType && (e.target = e.target.parentNode), void 0 === e.metaKey && (e.metaKey = e.ctrlKey), a.filter ? a.filter(e, o) : e
                    },
                    special: {
                        ready: {
                            setup: i.bindReady
                        },
                        load: {
                            noBubble: !0
                        },
                        focus: {
                            delegateType: "focusin"
                        },
                        blur: {
                            delegateType: "focusout"
                        },
                        beforeunload: {
                            setup: function(e, t, n) {
                                i.isWindow(this) && (this.onbeforeunload = n)
                            },
                            teardown: function(e, t) {
                                this.onbeforeunload === t && (this.onbeforeunload = null)
                            }
                        }
                    },
                    simulate: function(e, t, n, r) {
                        var o = i.extend(new i.Event, n, {
                            type: e,
                            isSimulated: !0,
                            originalEvent: {}
                        });
                        r ? i.event.trigger(o, null, t) : i.event.dispatch.call(t, o), o.isDefaultPrevented() && n.preventDefault()
                    }
                }, i.event.handle = i.event.dispatch, i.removeEvent = t.removeEventListener ? function(e, t, n) {
                    e.removeEventListener && e.removeEventListener(t, n, !1)
                } : function(e, t, n) {
                    e.detachEvent && e.detachEvent("on" + t, n)
                }, i.Event = function(e, t) {
                    if (!(this instanceof i.Event)) return new i.Event(e, t);
                    e && e.type ? (this.originalEvent = e, this.type = e.type, this.isDefaultPrevented = e.defaultPrevented || !1 === e.returnValue || e.getPreventDefault && e.getPreventDefault() ? _ : D) : this.type = e, t && i.extend(this, t), this.timeStamp = e && e.timeStamp || i.now(), this[i.expando] = !0
                }, i.Event.prototype = {
                    preventDefault: function() {
                        this.isDefaultPrevented = _;
                        var e = this.originalEvent;
                        e && (e.preventDefault ? e.preventDefault() : e.returnValue = !1)
                    },
                    stopPropagation: function() {
                        this.isPropagationStopped = _;
                        var e = this.originalEvent;
                        e && (e.stopPropagation && e.stopPropagation(), e.cancelBubble = !0)
                    },
                    stopImmediatePropagation: function() {
                        this.isImmediatePropagationStopped = _, this.stopPropagation()
                    },
                    isDefaultPrevented: D,
                    isPropagationStopped: D,
                    isImmediatePropagationStopped: D
                }, i.each({
                    mouseenter: "mouseover",
                    mouseleave: "mouseout"
                }, (function(e, t) {
                    i.event.special[e] = {
                        delegateType: t,
                        bindType: t,
                        handle: function(e) {
                            var n, r = this,
                                o = e.relatedTarget,
                                a = e.handleObj;
                            a.selector;
                            return o && (o === r || i.contains(r, o)) || (e.type = a.origType, n = a.handler.apply(this, arguments), e.type = t), n
                        }
                    }
                })), i.support.submitBubbles || (i.event.special.submit = {
                    setup: function() {
                        if (i.nodeName(this, "form")) return !1;
                        i.event.add(this, "click._submit keypress._submit", (function(e) {
                            var t = e.target,
                                n = i.nodeName(t, "input") || i.nodeName(t, "button") ? t.form : void 0;
                            n && !n._submit_attached && (i.event.add(n, "submit._submit", (function(e) {
                                e._submit_bubble = !0
                            })), n._submit_attached = !0)
                        }))
                    },
                    postDispatch: function(e) {
                        e._submit_bubble && (delete e._submit_bubble, this.parentNode && !e.isTrigger && i.event.simulate("submit", this.parentNode, e, !0))
                    },
                    teardown: function() {
                        if (i.nodeName(this, "form")) return !1;
                        i.event.remove(this, "._submit")
                    }
                }), i.support.changeBubbles || (i.event.special.change = {
                    setup: function() {
                        if (T.test(this.nodeName)) return "checkbox" !== this.type && "radio" !== this.type || (i.event.add(this, "propertychange._change", (function(e) {
                            "checked" === e.originalEvent.propertyName && (this._just_changed = !0)
                        })), i.event.add(this, "click._change", (function(e) {
                            this._just_changed && !e.isTrigger && (this._just_changed = !1,
                                i.event.simulate("change", this, e, !0))
                        }))), !1;
                        i.event.add(this, "beforeactivate._change", (function(e) {
                            var t = e.target;
                            T.test(t.nodeName) && !t._change_attached && (i.event.add(t, "change._change", (function(e) {
                                !this.parentNode || e.isSimulated || e.isTrigger || i.event.simulate("change", this.parentNode, e, !0)
                            })), t._change_attached = !0)
                        }))
                    },
                    handle: function(e) {
                        var t = e.target;
                        if (this !== t || e.isSimulated || e.isTrigger || "radio" !== t.type && "checkbox" !== t.type) return e.handleObj.handler.apply(this, arguments)
                    },
                    teardown: function() {
                        return i.event.remove(this, "._change"), T.test(this.nodeName)
                    }
                }), i.support.focusinBubbles || i.each({
                    focus: "focusin",
                    blur: "focusout"
                }, (function(e, n) {
                    var r = 0,
                        o = function(e) {
                            i.event.simulate(n, e.target, i.event.fix(e), !0)
                        };
                    i.event.special[n] = {
                        setup: function() {
                            0 == r++ && t.addEventListener(e, o, !0)
                        },
                        teardown: function() {
                            0 == --r && t.removeEventListener(e, o, !0)
                        }
                    }
                })), i.fn.extend({
                    on: function(e, t, n, r, o) {
                        var a, s;
                        if ("object" == typeof e) {
                            for (s in "string" != typeof t && (n = n || t, t = void 0), e) this.on(s, t, n, e[s], o);
                            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 = D;
                        else if (!r) return this;
                        return 1 === o && (a = r, (r = function(e) {
                            return i().off(e), a.apply(this, arguments)
                        }).guid = a.guid || (a.guid = i.guid++)), this.each((function() {
                            i.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) {
                        if (e && e.preventDefault && e.handleObj) {
                            var r = e.handleObj;
                            return i(e.delegateTarget).off(r.namespace ? r.origType + "." + r.namespace : r.origType, r.selector, r.handler), this
                        }
                        if ("object" == typeof e) {
                            for (var o in e) this.off(o, t, e[o]);
                            return this
                        }
                        return !1 !== t && "function" != typeof t || (n = t, t = void 0), !1 === n && (n = D), this.each((function() {
                            i.event.remove(this, e, n, t)
                        }))
                    },
                    bind: function(e, t, n) {
                        return this.on(e, null, t, n)
                    },
                    unbind: function(e, t) {
                        return this.off(e, null, t)
                    },
                    live: function(e, t, n) {
                        return i(this.context).on(e, this.selector, t, n), this
                    },
                    die: function(e, t) {
                        return i(this.context).off(e, this.selector || "**", t), this
                    },
                    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)
                    },
                    trigger: function(e, t) {
                        return this.each((function() {
                            i.event.trigger(e, t, this)
                        }))
                    },
                    triggerHandler: function(e, t) {
                        if (this[0]) return i.event.trigger(e, t, this[0], !0)
                    },
                    toggle: function(e) {
                        var t = arguments,
                            n = e.guid || i.guid++,
                            r = 0,
                            o = function(n) {
                                var o = (i._data(this, "lastToggle" + e.guid) || 0) % r;
                                return i._data(this, "lastToggle" + e.guid, o + 1), n.preventDefault(), t[o].apply(this, arguments) || !1
                            };
                        for (o.guid = n; r < t.length;) t[r++].guid = n;
                        return this.click(o)
                    },
                    hover: function(e, t) {
                        return this.mouseenter(e).mouseleave(t || e)
                    }
                }), i.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) {
                    i.fn[t] = function(e, n) {
                            return null == n && (n = e, e = null), arguments.length > 0 ? this.on(t, null, e, n) : this.trigger(t)
                        }, i.attrFn && (i.attrFn[t] = !0), C.test(t) && (i.event.fixHooks[t] = i.event.keyHooks),
                        L.test(t) && (i.event.fixHooks[t] = i.event.mouseHooks)
                })),
                function() {
                    var e = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
                        n = "sizcache" + (Math.random() + "").replace(".", ""),
                        r = 0,
                        o = Object.prototype.toString,
                        a = !1,
                        s = !0,
                        l = /\\/g,
                        u = /\r\n/g,
                        c = /\W/;
                    [0, 0].sort((function() {
                        return s = !1, 0
                    }));
                    var d = function(n, r, i, a) {
                        i = i || [];
                        var s = r = r || t;
                        if (1 !== r.nodeType && 9 !== r.nodeType) return [];
                        if (!n || "string" != typeof n) return i;
                        var l, u, c, f, g, v, m, y, b = !0,
                            w = d.isXML(r),
                            k = [],
                            N = n;
                        do {
                            if (e.exec(""), (l = e.exec(N)) && (N = l[3], k.push(l[1]), l[2])) {
                                f = l[3];
                                break
                            }
                        } while (l);
                        if (k.length > 1 && h.exec(n))
                            if (2 === k.length && p.relative[k[0]]) u = T(k[0] + k[1], r, a);
                            else
                                for (u = p.relative[k[0]] ? [r] : d(k.shift(), r); k.length;) n = k.shift(), p.relative[n] && (n += k.shift()), u = T(n, u, a);
                        else if (!a && k.length > 1 && 9 === r.nodeType && !w && p.match.ID.test(k[0]) && !p.match.ID.test(k[k.length - 1]) && (r = (g = d.find(k.shift(), r, w)).expr ? d.filter(g.expr, g.set)[0] : g.set[0]), r)
                            for (u = (g = a ? {
                                    expr: k.pop(),
                                    set: x(a)
                                } : d.find(k.pop(), 1 !== k.length || "~" !== k[0] && "+" !== k[0] || !r.parentNode ? r : r.parentNode, w)).expr ? d.filter(g.expr, g.set) : g.set, k.length > 0 ? c = x(u) : b = !1; k.length;) m = v = k.pop(), p.relative[v] ? m = k.pop() : v = "", null == m && (m = r), p.relative[v](c, m, w);
                        else c = k = [];
                        if (c || (c = u), c || d.error(v || n), "[object Array]" === o.call(c))
                            if (b)
                                if (r && 1 === r.nodeType)
                                    for (y = 0; null != c[y]; y++) c[y] && (!0 === c[y] || 1 === c[y].nodeType && d.contains(r, c[y])) && i.push(u[y]);
                                else
                                    for (y = 0; null != c[y]; y++) c[y] && 1 === c[y].nodeType && i.push(u[y]);
                        else i.push.apply(i, c);
                        else x(c, i);
                        return f && (d(f, s, i, a), d.uniqueSort(i)), i
                    };
                    d.uniqueSort = function(e) {
                        if (m && (a = s, e.sort(m), a))
                            for (var t = 1; t < e.length; t++) e[t] === e[t - 1] && e.splice(t--, 1);
                        return e
                    }, d.matches = function(e, t) {
                        return d(e, null, null, t)
                    }, d.matchesSelector = function(e, t) {
                        return d(t, null, null, [e]).length > 0
                    }, d.find = function(e, t, n) {
                        var r, i, o, a, s, u;
                        if (!e) return [];
                        for (i = 0, o = p.order.length; i < o; i++)
                            if (s = p.order[i], (a = p.leftMatch[s].exec(e)) && (u = a[1], a.splice(1, 1), "\\" !== u.substr(u.length - 1) && (a[1] = (a[1] || "").replace(l, ""), null != (r = p.find[s](a, t, n))))) {
                                e = e.replace(p.match[s], "");
                                break
                            }
                        return r || (r = void 0 !== t.getElementsByTagName ? t.getElementsByTagName("*") : []), {
                            set: r,
                            expr: e
                        }
                    }, d.filter = function(e, t, n, r) {
                        for (var i, o, a, s, l, u, c, f, h, g = e, v = [], m = t, y = t && t[0] && d.isXML(t[0]); e && t.length;) {
                            for (a in p.filter)
                                if (null != (i = p.leftMatch[a].exec(e)) && i[2]) {
                                    if (u = p.filter[a], c = i[1], o = !1, i.splice(1, 1), "\\" === c.substr(c.length - 1)) continue;
                                    if (m === v && (v = []), p.preFilter[a])
                                        if (i = p.preFilter[a](i, m, n, v, r, y)) {
                                            if (!0 === i) continue
                                        } else o = s = !0;
                                    if (i)
                                        for (f = 0; null != (l = m[f]); f++) l && (h = r ^ (s = u(l, i, f, m)), n && null != s ? h ? o = !0 : m[f] = !1 : h && (v.push(l), o = !0));
                                    if (void 0 !== s) {
                                        if (n || (m = v), e = e.replace(p.match[a], ""), !o) return [];
                                        break
                                    }
                                }
                            if (e === g) {
                                if (null != o) break;
                                d.error(e)
                            }
                            g = e
                        }
                        return m
                    }, d.error = function(e) {
                        throw new Error("Syntax error, unrecognized expression: " + e)
                    };
                    var f = d.getText = function(e) {
                            var t, n, r = e.nodeType,
                                i = "";
                            if (r) {
                                if (1 === r || 9 === r || 11 === r) {
                                    if ("string" == typeof e.textContent) return e.textContent;
                                    if ("string" == typeof e.innerText) return e.innerText.replace(u, "");
                                    for (e = e.firstChild; e; e = e.nextSibling) i += f(e)
                                } else if (3 === r || 4 === r) return e.nodeValue
                            } else
                                for (t = 0; n = e[t]; t++) 8 !== n.nodeType && (i += f(n));
                            return i
                        },
                        p = d.selectors = {
                            order: ["ID", "NAME", "TAG"],
                            match: {
                                ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
                                CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
                                NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,
                                ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,
                                TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,
                                CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,
                                POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,
                                PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/
                            },
                            leftMatch: {},
                            attrMap: {
                                class: "className",
                                for: "htmlFor"
                            },
                            attrHandle: {
                                href: function(e) {
                                    return e.getAttribute("href")
                                },
                                type: function(e) {
                                    return e.getAttribute("type")
                                }
                            },
                            relative: {
                                "+": function(e, t) {
                                    var n = "string" == typeof t,
                                        r = n && !c.test(t),
                                        i = n && !r;
                                    r && (t = t.toLowerCase());
                                    for (var o, a = 0, s = e.length; a < s; a++)
                                        if (o = e[a]) {
                                            for (;
                                                (o = o.previousSibling) && 1 !== o.nodeType;);
                                            e[a] = i || o && o.nodeName.toLowerCase() === t ? o || !1 : o === t
                                        }
                                    i && d.filter(t, e, !0)
                                },
                                ">": function(e, t) {
                                    var n, r = "string" == typeof t,
                                        i = 0,
                                        o = e.length;
                                    if (r && !c.test(t)) {
                                        for (t = t.toLowerCase(); i < o; i++)
                                            if (n = e[i]) {
                                                var a = n.parentNode;
                                                e[i] = a.nodeName.toLowerCase() === t && a
                                            }
                                    } else {
                                        for (; i < o; i++)(n = e[i]) && (e[i] = r ? n.parentNode : n.parentNode === t);
                                        r && d.filter(t, e, !0)
                                    }
                                },
                                "": function(e, t, n) {
                                    var i, o = r++,
                                        a = k;
                                    "string" != typeof t || c.test(t) || (i = t = t.toLowerCase(), a = w), a("parentNode", t, o, e, i, n)
                                },
                                "~": function(e, t, n) {
                                    var i, o = r++,
                                        a = k;
                                    "string" != typeof t || c.test(t) || (i = t = t.toLowerCase(), a = w), a("previousSibling", t, o, e, i, n)
                                }
                            },
                            find: {
                                ID: function(e, t, n) {
                                    if (void 0 !== t.getElementById && !n) {
                                        var r = t.getElementById(e[1]);
                                        return r && r.parentNode ? [r] : []
                                    }
                                },
                                NAME: function(e, t) {
                                    if (void 0 !== t.getElementsByName) {
                                        for (var n = [], r = t.getElementsByName(e[1]), i = 0, o = r.length; i < o; i++) r[i].getAttribute("name") === e[1] && n.push(r[i]);
                                        return 0 === n.length ? null : n
                                    }
                                },
                                TAG: function(e, t) {
                                    if (void 0 !== t.getElementsByTagName) return t.getElementsByTagName(e[1])
                                }
                            },
                            preFilter: {
                                CLASS: function(e, t, n, r, i, o) {
                                    if (e = " " + e[1].replace(l, "") + " ", o) return e;
                                    for (var a, s = 0; null != (a = t[s]); s++) a && (i ^ (a.className && (" " + a.className + " ").replace(/[\t\n\r]/g, " ").indexOf(e) >= 0) ? n || r.push(a) : n && (t[s] = !1));
                                    return !1
                                },
                                ID: function(e) {
                                    return e[1].replace(l, "")
                                },
                                TAG: function(e, t) {
                                    return e[1].replace(l, "").toLowerCase()
                                },
                                CHILD: function(e) {
                                    if ("nth" === e[1]) {
                                        e[2] || d.error(e[0]), e[2] = e[2].replace(/^\+|\s*/g, "");
                                        var t = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec(("even" === e[2] ? "2n" : "odd" === e[2] && "2n+1") || !/\D/.test(e[2]) && "0n+" + e[2] || e[2]);
                                        e[2] = t[1] + (t[2] || 1) - 0, e[3] = t[3] - 0
                                    } else e[2] && d.error(e[0]);
                                    return e[0] = r++, e
                                },
                                ATTR: function(e, t, n, r, i, o) {
                                    var a = e[1] = e[1].replace(l, "");
                                    return !o && p.attrMap[a] && (e[1] = p.attrMap[a]), e[4] = (e[4] || e[5] || "").replace(l, ""), "~=" === e[2] && (e[4] = " " + e[4] + " "), e
                                },
                                PSEUDO: function(t, n, r, i, o) {
                                    if ("not" === t[1]) {
                                        if (!((e.exec(t[3]) || "").length > 1 || /^\w/.test(t[3]))) {
                                            var a = d.filter(t[3], n, r, !0 ^ o);
                                            return r || i.push.apply(i, a), !1
                                        }
                                        t[3] = d(t[3], null, null, n)
                                    } else if (p.match.POS.test(t[0]) || p.match.CHILD.test(t[0])) return !0;
                                    return t
                                },
                                POS: function(e) {
                                    return e.unshift(!0), e
                                }
                            },
                            filters: {
                                enabled: function(e) {
                                    return !1 === e.disabled && "hidden" !== e.type
                                },
                                disabled: function(e) {
                                    return !0 === e.disabled
                                },
                                checked: function(e) {
                                    return !0 === e.checked
                                },
                                selected: function(e) {
                                    return e.parentNode && e.parentNode.selectedIndex, !0 === e.selected
                                },
                                parent: function(e) {
                                    return !!e.firstChild
                                },
                                empty: function(e) {
                                    return !e.firstChild
                                },
                                has: function(e, t, n) {
                                    return !!d(n[3], e).length
                                },
                                header: function(e) {
                                    return /h\d/i.test(e.nodeName)
                                },
                                text: function(e) {
                                    var t = e.getAttribute("type"),
                                        n = e.type;
                                    return "input" === e.nodeName.toLowerCase() && "text" === n && (t === n || null === t)
                                },
                                radio: function(e) {
                                    return "input" === e.nodeName.toLowerCase() && "radio" === e.type
                                },
                                checkbox: function(e) {
                                    return "input" === e.nodeName.toLowerCase() && "checkbox" === e.type
                                },
                                file: function(e) {
                                    return "input" === e.nodeName.toLowerCase() && "file" === e.type
                                },
                                password: function(e) {
                                    return "input" === e.nodeName.toLowerCase() && "password" === e.type
                                },
                                submit: function(e) {
                                    var t = e.nodeName.toLowerCase();
                                    return ("input" === t || "button" === t) && "submit" === e.type
                                },
                                image: function(e) {
                                    return "input" === e.nodeName.toLowerCase() && "image" === e.type
                                },
                                reset: function(e) {
                                    var t = e.nodeName.toLowerCase();
                                    return ("input" === t || "button" === t) && "reset" === e.type
                                },
                                button: function(e) {
                                    var t = e.nodeName.toLowerCase();
                                    return "input" === t && "button" === e.type || "button" === t
                                },
                                input: function(e) {
                                    return /input|select|textarea|button/i.test(e.nodeName)
                                },
                                focus: function(e) {
                                    return e === e.ownerDocument.activeElement
                                }
                            },
                            setFilters: {
                                first: function(e, t) {
                                    return 0 === t
                                },
                                last: function(e, t, n, r) {
                                    return t === r.length - 1
                                },
                                even: function(e, t) {
                                    return t % 2 == 0
                                },
                                odd: function(e, t) {
                                    return t % 2 == 1
                                },
                                lt: function(e, t, n) {
                                    return t < n[3] - 0
                                },
                                gt: function(e, t, n) {
                                    return t > n[3] - 0
                                },
                                nth: function(e, t, n) {
                                    return n[3] - 0 === t
                                },
                                eq: function(e, t, n) {
                                    return n[3] - 0 === t
                                }
                            },
                            filter: {
                                PSEUDO: function(e, t, n, r) {
                                    var i = t[1],
                                        o = p.filters[i];
                                    if (o) return o(e, n, t, r);
                                    if ("contains" === i) return (e.textContent || e.innerText || f([e]) || "").indexOf(t[3]) >= 0;
                                    if ("not" === i) {
                                        for (var a = t[3], s = 0, l = a.length; s < l; s++)
                                            if (a[s] === e) return !1;
                                        return !0
                                    }
                                    d.error(i)
                                },
                                CHILD: function(e, t) {
                                    var r, i, o, a, s, l, u = t[1],
                                        c = e;
                                    switch (u) {
                                        case "only":
                                        case "first":
                                            for (; c = c.previousSibling;)
                                                if (1 === c.nodeType) return !1;
                                            if ("first" === u) return !0;
                                            c = e;
                                        case "last":
                                            for (; c = c.nextSibling;)
                                                if (1 === c.nodeType) return !1;
                                            return !0;
                                        case "nth":
                                            if (r = t[2], i = t[3], 1 === r && 0 === i) return !0;
                                            if (o = t[0], (a = e.parentNode) && (a[n] !== o || !e.nodeIndex)) {
                                                for (s = 0, c = a.firstChild; c; c = c.nextSibling) 1 === c.nodeType && (c.nodeIndex = ++s);
                                                a[n] = o
                                            }
                                            return l = e.nodeIndex - i, 0 === r ? 0 === l : l % r == 0 && l / r >= 0
                                    }
                                },
                                ID: function(e, t) {
                                    return 1 === e.nodeType && e.getAttribute("id") === t
                                },
                                TAG: function(e, t) {
                                    return "*" === t && 1 === e.nodeType || !!e.nodeName && e.nodeName.toLowerCase() === t
                                },
                                CLASS: function(e, t) {
                                    return (" " + (e.className || e.getAttribute("class")) + " ").indexOf(t) > -1
                                },
                                ATTR: function(e, t) {
                                    var n = t[1],
                                        r = d.attr ? d.attr(e, n) : p.attrHandle[n] ? p.attrHandle[n](e) : null != e[n] ? e[n] : e.getAttribute(n),
                                        i = r + "",
                                        o = t[2],
                                        a = t[4];
                                    return null == r ? "!=" === o : !o && d.attr ? null != r : "=" === o ? i === a : "*=" === o ? i.indexOf(a) >= 0 : "~=" === o ? (" " + i + " ").indexOf(a) >= 0 : a ? "!=" === o ? i !== a : "^=" === o ? 0 === i.indexOf(a) : "$=" === o ? i.substr(i.length - a.length) === a : "|=" === o && (i === a || i.substr(0, a.length + 1) === a + "-") : i && !1 !== r
                                },
                                POS: function(e, t, n, r) {
                                    var i = t[2],
                                        o = p.setFilters[i];
                                    if (o) return o(e, n, t, r)
                                }
                            }
                        },
                        h = p.match.POS,
                        g = function(e, t) {
                            return "\\" + (t - 0 + 1)
                        };
                    for (var v in p.match) p.match[v] = new RegExp(p.match[v].source + /(?![^\[]*\])(?![^\(]*\))/.source), p.leftMatch[v] = new RegExp(/(^(?:.|\r|\n)*?)/.source + p.match[v].source.replace(/\\(\d+)/g, g));
                    p.match.globalPOS = h;
                    var m, y, b, x = function(e, t) {
                        return e = Array.prototype.slice.call(e, 0), t ? (t.push.apply(t, e), t) : e
                    };
                    try {
                        Array.prototype.slice.call(t.documentElement.childNodes, 0)[0].nodeType
                    } catch (e) {
                        x = function(e, t) {
                            var n = 0,
                                r = t || [];
                            if ("[object Array]" === o.call(e)) Array.prototype.push.apply(r, e);
                            else if ("number" == typeof e.length)
                                for (var i = e.length; n < i; n++) r.push(e[n]);
                            else
                                for (; e[n]; n++) r.push(e[n]);
                            return r
                        }
                    }

                    function w(e, t, r, i, o, a) {
                        for (var s = 0, l = i.length; s < l; s++) {
                            var u = i[s];
                            if (u) {
                                var c = !1;
                                for (u = u[e]; u;) {
                                    if (u[n] === r) {
                                        c = i[u.sizset];
                                        break
                                    }
                                    if (1 !== u.nodeType || a || (u[n] = r, u.sizset = s), u.nodeName.toLowerCase() === t) {
                                        c = u;
                                        break
                                    }
                                    u = u[e]
                                }
                                i[s] = c
                            }
                        }
                    }

                    function k(e, t, r, i, o, a) {
                        for (var s = 0, l = i.length; s < l; s++) {
                            var u = i[s];
                            if (u) {
                                var c = !1;
                                for (u = u[e]; u;) {
                                    if (u[n] === r) {
                                        c = i[u.sizset];
                                        break
                                    }
                                    if (1 === u.nodeType)
                                        if (a || (u[n] = r, u.sizset = s), "string" != typeof t) {
                                            if (u === t) {
                                                c = !0;
                                                break
                                            }
                                        } else if (d.filter(t, [u]).length > 0) {
                                        c = u;
                                        break
                                    }
                                    u = u[e]
                                }
                                i[s] = c
                            }
                        }
                    }
                    t.documentElement.compareDocumentPosition ? m = function(e, t) {
                            return e === t ? (a = !0, 0) : e.compareDocumentPosition && t.compareDocumentPosition ? 4 & e.compareDocumentPosition(t) ? -1 : 1 : e.compareDocumentPosition ? -1 : 1
                        } : (m = function(e, t) {
                            if (e === t) return a = !0, 0;
                            if (e.sourceIndex && t.sourceIndex) return e.sourceIndex - t.sourceIndex;
                            var n, r, i = [],
                                o = [],
                                s = e.parentNode,
                                l = t.parentNode,
                                u = s;
                            if (s === l) return y(e, t);
                            if (!s) return -1;
                            if (!l) return 1;
                            for (; u;) i.unshift(u), u = u.parentNode;
                            for (u = l; u;) o.unshift(u), u = u.parentNode;
                            n = i.length, r = o.length;
                            for (var c = 0; c < n && c < r; c++)
                                if (i[c] !== o[c]) return y(i[c], o[c]);
                            return c === n ? y(e, o[c], -1) : y(i[c], t, 1)
                        }, y = function(e, t, n) {
                            if (e === t) return n;
                            for (var r = e.nextSibling; r;) {
                                if (r === t) return -1;
                                r = r.nextSibling
                            }
                            return 1
                        }),
                        function() {
                            var e = t.createElement("div"),
                                n = "script" + (new Date).getTime(),
                                r = t.documentElement;
                            e.innerHTML = "<a name='" + n + "'/>", r.insertBefore(e, r.firstChild), t.getElementById(n) && (p.find.ID = function(e, t, n) {
                                if (void 0 !== t.getElementById && !n) {
                                    var r = t.getElementById(e[1]);
                                    return r ? r.id === e[1] || void 0 !== r.getAttributeNode && r.getAttributeNode("id").nodeValue === e[1] ? [r] : void 0 : []
                                }
                            }, p.filter.ID = function(e, t) {
                                var n = void 0 !== e.getAttributeNode && e.getAttributeNode("id");
                                return 1 === e.nodeType && n && n.nodeValue === t
                            }), r.removeChild(e), r = e = null
                        }(), (b = t.createElement("div")).appendChild(t.createComment("")), b.getElementsByTagName("*").length > 0 && (p.find.TAG = function(e, t) {
                            var n = t.getElementsByTagName(e[1]);
                            if ("*" === e[1]) {
                                for (var r = [], i = 0; n[i]; i++) 1 === n[i].nodeType && r.push(n[i]);
                                n = r
                            }
                            return n
                        }), b.innerHTML = "<a href='#'></a>",
                        b.firstChild && void 0 !== b.firstChild.getAttribute && "#" !== b.firstChild.getAttribute("href") && (p.attrHandle.href = function(e) {
                            return e.getAttribute("href", 2)
                        }), b = null, t.querySelectorAll && function() {
                            var e = d,
                                n = t.createElement("div");
                            if (n.innerHTML = "<p class='TEST'></p>", !n.querySelectorAll || 0 !== n.querySelectorAll(".TEST").length) {
                                for (var r in d = function(n, r, i, o) {
                                        if (r = r || t, !o && !d.isXML(r)) {
                                            var a = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(n);
                                            if (a && (1 === r.nodeType || 9 === r.nodeType)) {
                                                if (a[1]) return x(r.getElementsByTagName(n), i);
                                                if (a[2] && p.find.CLASS && r.getElementsByClassName) return x(r.getElementsByClassName(a[2]), i)
                                            }
                                            if (9 === r.nodeType) {
                                                if ("body" === n && r.body) return x([r.body], i);
                                                if (a && a[3]) {
                                                    var s = r.getElementById(a[3]);
                                                    if (!s || !s.parentNode) return x([], i);
                                                    if (s.id === a[3]) return x([s], i)
                                                }
                                                try {
                                                    return x(r.querySelectorAll(n), i)
                                                } catch (e) {}
                                            } else if (1 === r.nodeType && "object" !== r.nodeName.toLowerCase()) {
                                                var l = r,
                                                    u = r.getAttribute("id"),
                                                    c = u || "__sizzle__",
                                                    f = r.parentNode,
                                                    h = /^\s*[+~]/.test(n);
                                                u ? c = c.replace(/'/g, "\\$&") : r.setAttribute("id", c), h && f && (r = r.parentNode);
                                                try {
                                                    if (!h || f) return x(r.querySelectorAll("[id='" + c + "'] " + n), i)
                                                } catch (e) {} finally {
                                                    u || l.removeAttribute("id")
                                                }
                                            }
                                        }
                                        return e(n, r, i, o)
                                    }, e) d[r] = e[r];
                                n = null
                            }
                        }(),
                        function() {
                            var e = t.documentElement,
                                n = e.matchesSelector || e.mozMatchesSelector || e.webkitMatchesSelector || e.msMatchesSelector;
                            if (n) {
                                var r = !n.call(t.createElement("div"), "div"),
                                    i = !1;
                                try {
                                    n.call(t.documentElement, "[test!='']:sizzle")
                                } catch (e) {
                                    i = !0
                                }
                                d.matchesSelector = function(e, t) {
                                    if (t = t.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']"), !d.isXML(e)) try {
                                        if (i || !p.match.PSEUDO.test(t) && !/!=/.test(t)) {
                                            var o = n.call(e, t);
                                            if (o || !r || e.document && 11 !== e.document.nodeType) return o
                                        }
                                    } catch (e) {}
                                    return d(t, null, null, [e]).length > 0
                                }
                            }
                        }(),
                        function() {
                            var e = t.createElement("div");
                            e.innerHTML = "<div class='test e'></div><div class='test'></div>", e.getElementsByClassName && 0 !== e.getElementsByClassName("e").length && (e.lastChild.className = "e", 1 !== e.getElementsByClassName("e").length && (p.order.splice(1, 0, "CLASS"), p.find.CLASS = function(e, t, n) {
                                if (void 0 !== t.getElementsByClassName && !n) return t.getElementsByClassName(e[1])
                            }, e = null))
                        }(), t.documentElement.contains ? d.contains = function(e, t) {
                            return e !== t && (!e.contains || e.contains(t))
                        } : t.documentElement.compareDocumentPosition ? d.contains = function(e, t) {
                            return !!(16 & e.compareDocumentPosition(t))
                        } : d.contains = function() {
                            return !1
                        }, d.isXML = function(e) {
                            var t = (e ? e.ownerDocument || e : 0).documentElement;
                            return !!t && "HTML" !== t.nodeName
                        };
                    var T = function(e, t, n) {
                        for (var r, i = [], o = "", a = t.nodeType ? [t] : t; r = p.match.PSEUDO.exec(e);) o += r[0], e = e.replace(p.match.PSEUDO, "");
                        e = p.relative[e] ? e + "*" : e;
                        for (var s = 0, l = a.length; s < l; s++) d(e, a[s], i, n);
                        return d.filter(o, i)
                    };
                    d.attr = i.attr, d.selectors.attrMap = {}, i.find = d, i.expr = d.selectors, i.expr[":"] = i.expr.filters, i.unique = d.uniqueSort, i.text = d.getText, i.isXMLDoc = d.isXML, i.contains = d.contains
                }();
            var P = /Until$/,
                R = /^(?:parents|prevUntil|prevAll)/,
                M = /,/,
                H = /^.[^:#\[\.,]*$/,
                B = Array.prototype.slice,
                I = i.expr.match.globalPOS,
                $ = {
                    children: !0,
                    contents: !0,
                    next: !0,
                    prev: !0
                };

            function q(e) {
                return !e || !e.parentNode || 11 === e.parentNode.nodeType
            }

            function W(e, t, n) {
                if (t = t || 0, i.isFunction(t)) return i.grep(e, (function(e, r) {
                    return !!t.call(e, r, e) === n
                }));
                if (t.nodeType) return i.grep(e, (function(e, r) {
                    return e === t === n
                }));
                if ("string" == typeof t) {
                    var r = i.grep(e, (function(e) {
                        return 1 === e.nodeType
                    }));
                    if (H.test(t)) return i.filter(t, r, !n);
                    t = i.filter(t, r)
                }
                return i.grep(e, (function(e, r) {
                    return i.inArray(e, t) >= 0 === n
                }))
            }

            function z(e) {
                var t = V.split("|"),
                    n = e.createDocumentFragment();
                if (n.createElement)
                    for (; t.length;) n.createElement(t.pop());
                return n
            }
            i.fn.extend({
                find: function(e) {
                    var t, n, r = this;
                    if ("string" != typeof e) return i(e).filter((function() {
                        for (t = 0, n = r.length; t < n; t++)
                            if (i.contains(r[t], this)) return !0
                    }));
                    var o, a, s, l = this.pushStack("", "find", e);
                    for (t = 0, n = this.length; t < n; t++)
                        if (o = l.length, i.find(e, this[t], l), t > 0)
                            for (a = o; a < l.length; a++)
                                for (s = 0; s < o; s++)
                                    if (l[s] === l[a]) {
                                        l.splice(a--, 1);
                                        break
                                    }
                    return l
                },
                has: function(e) {
                    var t = i(e);
                    return this.filter((function() {
                        for (var e = 0, n = t.length; e < n; e++)
                            if (i.contains(this, t[e])) return !0
                    }))
                },
                not: function(e) {
                    return this.pushStack(W(this, e, !1), "not", e)
                },
                filter: function(e) {
                    return this.pushStack(W(this, e, !0), "filter", e)
                },
                is: function(e) {
                    return !!e && ("string" == typeof e ? I.test(e) ? i(e, this.context).index(this[0]) >= 0 : i.filter(e, this).length > 0 : this.filter(e).length > 0)
                },
                closest: function(e, t) {
                    var n, r, o = [],
                        a = this[0];
                    if (i.isArray(e)) {
                        for (var s = 1; a && a.ownerDocument && a !== t;) {
                            for (n = 0; n < e.length; n++) i(a).is(e[n]) && o.push({
                                selector: e[n],
                                elem: a,
                                level: s
                            });
                            a = a.parentNode, s++
                        }
                        return o
                    }
                    var l = I.test(e) || "string" != typeof e ? i(e, t || this.context) : 0;
                    for (n = 0, r = this.length; n < r; n++)
                        for (a = this[n]; a;) {
                            if (l ? l.index(a) > -1 : i.find.matchesSelector(a, e)) {
                                o.push(a);
                                break
                            }
                            if (!(a = a.parentNode) || !a.ownerDocument || a === t || 11 === a.nodeType) break
                        }
                    return o = o.length > 1 ? i.unique(o) : o, this.pushStack(o, "closest", e)
                },
                index: function(e) {
                    return e ? "string" == typeof e ? i.inArray(this[0], i(e)) : i.inArray(e.jquery ? e[0] : e, this) : this[0] && this[0].parentNode ? this.prevAll().length : -1
                },
                add: function(e, t) {
                    var n = "string" == typeof e ? i(e, t) : i.makeArray(e && e.nodeType ? [e] : e),
                        r = i.merge(this.get(), n);
                    return this.pushStack(q(n[0]) || q(r[0]) ? r : i.unique(r))
                },
                andSelf: function() {
                    return this.add(this.prevObject)
                }
            }), i.each({
                parent: function(e) {
                    var t = e.parentNode;
                    return t && 11 !== t.nodeType ? t : null
                },
                parents: function(e) {
                    return i.dir(e, "parentNode")
                },
                parentsUntil: function(e, t, n) {
                    return i.dir(e, "parentNode", n)
                },
                next: function(e) {
                    return i.nth(e, 2, "nextSibling")
                },
                prev: function(e) {
                    return i.nth(e, 2, "previousSibling")
                },
                nextAll: function(e) {
                    return i.dir(e, "nextSibling")
                },
                prevAll: function(e) {
                    return i.dir(e, "previousSibling")
                },
                nextUntil: function(e, t, n) {
                    return i.dir(e, "nextSibling", n)
                },
                prevUntil: function(e, t, n) {
                    return i.dir(e, "previousSibling", n)
                },
                siblings: function(e) {
                    return i.sibling((e.parentNode || {}).firstChild, e)
                },
                children: function(e) {
                    return i.sibling(e.firstChild)
                },
                contents: function(e) {
                    return i.nodeName(e, "iframe") ? e.contentDocument || e.contentWindow.document : i.makeArray(e.childNodes)
                }
            }, (function(e, t) {
                i.fn[e] = function(n, r) {
                    var o = i.map(this, t, n);
                    return P.test(e) || (r = n), r && "string" == typeof r && (o = i.filter(r, o)), o = this.length > 1 && !$[e] ? i.unique(o) : o,
                        (this.length > 1 || M.test(r)) && R.test(e) && (o = o.reverse()), this.pushStack(o, e, B.call(arguments).join(","))
                }
            })), i.extend({
                filter: function(e, t, n) {
                    return n && (e = ":not(" + e + ")"), 1 === t.length ? i.find.matchesSelector(t[0], e) ? [t[0]] : [] : i.find.matches(e, t)
                },
                dir: function(e, t, n) {
                    for (var r = [], o = e[t]; o && 9 !== o.nodeType && (void 0 === n || 1 !== o.nodeType || !i(o).is(n));) 1 === o.nodeType && r.push(o), o = o[t];
                    return r
                },
                nth: function(e, t, n, r) {
                    t = t || 1;
                    for (var i = 0; e && (1 !== e.nodeType || ++i !== t); e = e[n]);
                    return e
                },
                sibling: function(e, t) {
                    for (var n = []; e; e = e.nextSibling) 1 === e.nodeType && e !== t && n.push(e);
                    return n
                }
            });
            var V = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",
                U = / jQuery\d+="(?:\d+|null)"/g,
                X = /^\s+/,
                K = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
                J = /<([\w:]+)/,
                Y = /<tbody/i,
                G = /<|&#?\w+;/,
                Z = /<(?:script|style)/i,
                Q = /<(?:script|object|embed|option|style)/i,
                ee = new RegExp("<(?:" + V + ")[\\s/>]", "i"),
                te = /checked\s*(?:[^=]|=\s*.checked.)/i,
                ne = /\/(java|ecma)script/i,
                re = /^\s*<!(?:\[CDATA\[|\-\-)/,
                ie = {
                    option: [1, "<select multiple='multiple'>", "</select>"],
                    legend: [1, "<fieldset>", "</fieldset>"],
                    thead: [1, "<table>", "</table>"],
                    tr: [2, "<table><tbody>", "</tbody></table>"],
                    td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
                    col: [2, "<table><tbody></tbody><colgroup>", "</colgroup></table>"],
                    area: [1, "<map>", "</map>"],
                    _default: [0, "", ""]
                },
                oe = z(t);

            function ae(e, t) {
                return i.nodeName(e, "table") ? e.getElementsByTagName("tbody")[0] || e.appendChild(e.ownerDocument.createElement("tbody")) : e
            }

            function se(e, t) {
                if (1 === t.nodeType && i.hasData(e)) {
                    var n, r, o, a = i._data(e),
                        s = i._data(t, a),
                        l = a.events;
                    if (l)
                        for (n in delete s.handle, s.events = {}, l)
                            for (r = 0, o = l[n].length; r < o; r++) i.event.add(t, n, l[n][r]);
                    s.data && (s.data = i.extend({}, s.data))
                }
            }

            function le(e, t) {
                var n;
                1 === t.nodeType && (t.clearAttributes && t.clearAttributes(), t.mergeAttributes && t.mergeAttributes(e), "object" === (n = t.nodeName.toLowerCase()) ? t.outerHTML = e.outerHTML : "input" !== n || "checkbox" !== e.type && "radio" !== e.type ? "option" === n ? t.selected = e.defaultSelected : "input" === n || "textarea" === n ? t.defaultValue = e.defaultValue : "script" === n && t.text !== e.text && (t.text = e.text) : (e.checked && (t.defaultChecked = t.checked = e.checked), t.value !== e.value && (t.value = e.value)), t.removeAttribute(i.expando), t.removeAttribute("_submit_attached"), t.removeAttribute("_change_attached"))
            }

            function ue(e) {
                return void 0 !== e.getElementsByTagName ? e.getElementsByTagName("*") : void 0 !== e.querySelectorAll ? e.querySelectorAll("*") : []
            }

            function ce(e) {
                "checkbox" !== e.type && "radio" !== e.type || (e.defaultChecked = e.checked)
            }

            function de(e) {
                var t = (e.nodeName || "").toLowerCase();
                "input" === t ? ce(e) : "script" !== t && void 0 !== e.getElementsByTagName && i.grep(e.getElementsByTagName("input"), ce)
            }
            ie.optgroup = ie.option, ie.tbody = ie.tfoot = ie.colgroup = ie.caption = ie.thead, ie.th = ie.td, i.support.htmlSerialize || (ie._default = [1, "div<div>", "</div>"]), i.fn.extend({
                text: function(e) {
                    return i.access(this, (function(e) {
                        return void 0 === e ? i.text(this) : this.empty().append((this[0] && this[0].ownerDocument || t).createTextNode(e))
                    }), null, e, arguments.length)
                },
                wrapAll: function(e) {
                    if (i.isFunction(e)) return this.each((function(t) {
                        i(this).wrapAll(e.call(this, t))
                    }));
                    if (this[0]) {
                        var t = i(e, this[0].ownerDocument).eq(0).clone(!0);
                        this[0].parentNode && t.insertBefore(this[0]), t.map((function() {
                            for (var e = this; e.firstChild && 1 === e.firstChild.nodeType;) e = e.firstChild;
                            return e
                        })).append(this)
                    }
                    return this
                },
                wrapInner: function(e) {
                    return i.isFunction(e) ? this.each((function(t) {
                        i(this).wrapInner(e.call(this, t))
                    })) : this.each((function() {
                        var t = i(this),
                            n = t.contents();
                        n.length ? n.wrapAll(e) : t.append(e)
                    }))
                },
                wrap: function(e) {
                    var t = i.isFunction(e);
                    return this.each((function(n) {
                        i(this).wrapAll(t ? e.call(this, n) : e)
                    }))
                },
                unwrap: function() {
                    return this.parent().each((function() {
                        i.nodeName(this, "body") || i(this).replaceWith(this.childNodes)
                    })).end()
                },
                append: function() {
                    return this.domManip(arguments, !0, (function(e) {
                        1 === this.nodeType && this.appendChild(e)
                    }))
                },
                prepend: function() {
                    return this.domManip(arguments, !0, (function(e) {
                        1 === this.nodeType && this.insertBefore(e, this.firstChild)
                    }))
                },
                before: function() {
                    if (this[0] && this[0].parentNode) return this.domManip(arguments, !1, (function(e) {
                        this.parentNode.insertBefore(e, this)
                    }));
                    if (arguments.length) {
                        var e = i.clean(arguments);
                        return e.push.apply(e, this.toArray()), this.pushStack(e, "before", arguments)
                    }
                },
                after: function() {
                    if (this[0] && this[0].parentNode) return this.domManip(arguments, !1, (function(e) {
                        this.parentNode.insertBefore(e, this.nextSibling)
                    }));
                    if (arguments.length) {
                        var e = this.pushStack(this, "after", arguments);
                        return e.push.apply(e, i.clean(arguments)), e
                    }
                },
                remove: function(e, t) {
                    for (var n, r = 0; null != (n = this[r]); r++) e && !i.filter(e, [n]).length || (t || 1 !== n.nodeType || (i.cleanData(n.getElementsByTagName("*")), i.cleanData([n])), n.parentNode && n.parentNode.removeChild(n));
                    return this
                },
                empty: function() {
                    for (var e, t = 0; null != (e = this[t]); t++)
                        for (1 === e.nodeType && i.cleanData(e.getElementsByTagName("*")); e.firstChild;) e.removeChild(e.firstChild);
                    return this
                },
                clone: function(e, t) {
                    return e = null != e && e, t = null == t ? e : t, this.map((function() {
                        return i.clone(this, e, t)
                    }))
                },
                html: function(e) {
                    return i.access(this, (function(e) {
                        var t = this[0] || {},
                            n = 0,
                            r = this.length;
                        if (void 0 === e) return 1 === t.nodeType ? t.innerHTML.replace(U, "") : null;
                        if ("string" == typeof e && !Z.test(e) && (i.support.leadingWhitespace || !X.test(e)) && !ie[(J.exec(e) || ["", ""])[1].toLowerCase()]) {
                            e = e.replace(K, "<$1></$2>");
                            try {
                                for (; n < r; n++) 1 === (t = this[n] || {}).nodeType && (i.cleanData(t.getElementsByTagName("*")), t.innerHTML = e);
                                t = 0
                            } catch (e) {}
                        }
                        t && this.empty().append(e)
                    }), null, e, arguments.length)
                },
                replaceWith: function(e) {
                    return this[0] && this[0].parentNode ? i.isFunction(e) ? this.each((function(t) {
                        var n = i(this),
                            r = n.html();
                        n.replaceWith(e.call(this, t, r))
                    })) : ("string" != typeof e && (e = i(e).detach()), this.each((function() {
                        var t = this.nextSibling,
                            n = this.parentNode;
                        i(this).remove(), t ? i(t).before(e) : i(n).append(e)
                    }))) : this.length ? this.pushStack(i(i.isFunction(e) ? e() : e), "replaceWith", e) : this
                },
                detach: function(e) {
                    return this.remove(e, !0)
                },
                domManip: function(e, t, n) {
                    var r, o, a, s, l = e[0],
                        u = [];
                    if (!i.support.checkClone && 3 === arguments.length && "string" == typeof l && te.test(l)) return this.each((function() {
                        i(this).domManip(e, t, n, !0)
                    }));
                    if (i.isFunction(l)) return this.each((function(r) {
                        var o = i(this);
                        e[0] = l.call(this, r, t ? o.html() : void 0), o.domManip(e, t, n)
                    }));
                    if (this[0]) {
                        if (s = l && l.parentNode, o = 1 === (a = (r = i.support.parentNode && s && 11 === s.nodeType && s.childNodes.length === this.length ? {
                                fragment: s
                            } : i.buildFragment(e, this, u)).fragment).childNodes.length ? a = a.firstChild : a.firstChild) {
                            t = t && i.nodeName(o, "tr");
                            for (var c = 0, d = this.length, f = d - 1; c < d; c++) n.call(t ? ae(this[c], o) : this[c], r.cacheable || d > 1 && c < f ? i.clone(a, !0, !0) : a)
                        }
                        u.length && i.each(u, (function(e, t) {
                            t.src ? i.ajax({
                                type: "GET",
                                global: !1,
                                url: t.src,
                                async: !1,
                                dataType: "script"
                            }) : i.globalEval((t.text || t.textContent || t.innerHTML || "").replace(re, "/*$0*/")), t.parentNode && t.parentNode.removeChild(t)
                        }))
                    }
                    return this
                }
            }), i.buildFragment = function(e, n, r) {
                var o, a, s, l, u = e[0];
                return n && n[0] && (l = n[0].ownerDocument || n[0]), l.createDocumentFragment || (l = t), !(1 === e.length && "string" == typeof u && u.length < 512 && l === t && "<" === u.charAt(0)) || Q.test(u) || !i.support.checkClone && te.test(u) || !i.support.html5Clone && ee.test(u) || (a = !0, (s = i.fragments[u]) && 1 !== s && (o = s)), o || (o = l.createDocumentFragment(), i.clean(e, l, o, r)), a && (i.fragments[u] = s ? o : 1), {
                    fragment: o,
                    cacheable: a
                }
            }, i.fragments = {}, i.each({
                appendTo: "append",
                prependTo: "prepend",
                insertBefore: "before",
                insertAfter: "after",
                replaceAll: "replaceWith"
            }, (function(e, t) {
                i.fn[e] = function(n) {
                    var r = [],
                        o = i(n),
                        a = 1 === this.length && this[0].parentNode;
                    if (a && 11 === a.nodeType && 1 === a.childNodes.length && 1 === o.length) return o[t](this[0]), this;
                    for (var s = 0, l = o.length; s < l; s++) {
                        var u = (s > 0 ? this.clone(!0) : this).get();
                        i(o[s])[t](u), r = r.concat(u)
                    }
                    return this.pushStack(r, e, o.selector)
                }
            })), i.extend({
                clone: function(e, n, r) {
                    var o, a, s, l = i.support.html5Clone || i.isXMLDoc(e) || !ee.test("<" + e.nodeName + ">") ? e.cloneNode(!0) : function(e) {
                        var n = t.createElement("div");
                        return oe.appendChild(n), n.innerHTML = e.outerHTML, n.firstChild
                    }(e);
                    if (!(i.support.noCloneEvent && i.support.noCloneChecked || 1 !== e.nodeType && 11 !== e.nodeType || i.isXMLDoc(e)))
                        for (le(e, l), o = ue(e), a = ue(l), s = 0; o[s]; ++s) a[s] && le(o[s], a[s]);
                    if (n && (se(e, l), r))
                        for (o = ue(e), a = ue(l), s = 0; o[s]; ++s) se(o[s], a[s]);
                    return o = a = null, l
                },
                clean: function(e, n, r, o) {
                    var a, s, l, u = [];
                    void 0 === (n = n || t).createElement && (n = n.ownerDocument || n[0] && n[0].ownerDocument || t);
                    for (var c, d = 0; null != (c = e[d]); d++)
                        if ("number" == typeof c && (c += ""), c) {
                            if ("string" == typeof c)
                                if (G.test(c)) {
                                    c = c.replace(K, "<$1></$2>");
                                    var f, p = (J.exec(c) || ["", ""])[1].toLowerCase(),
                                        h = ie[p] || ie._default,
                                        g = h[0],
                                        v = n.createElement("div"),
                                        m = oe.childNodes;
                                    for (n === t ? oe.appendChild(v) : z(n).appendChild(v), v.innerHTML = h[1] + c + h[2]; g--;) v = v.lastChild;
                                    if (!i.support.tbody) {
                                        var y = Y.test(c),
                                            b = "table" !== p || y ? "<table>" !== h[1] || y ? [] : v.childNodes : v.firstChild && v.firstChild.childNodes;
                                        for (l = b.length - 1; l >= 0; --l) i.nodeName(b[l], "tbody") && !b[l].childNodes.length && b[l].parentNode.removeChild(b[l])
                                    }!i.support.leadingWhitespace && X.test(c) && v.insertBefore(n.createTextNode(X.exec(c)[0]), v.firstChild),
                                        c = v.childNodes, v && (v.parentNode.removeChild(v), m.length > 0 && (f = m[m.length - 1]) && f.parentNode && f.parentNode.removeChild(f))
                                } else c = n.createTextNode(c);
                            var x;
                            if (!i.support.appendChecked)
                                if (c[0] && "number" == typeof(x = c.length))
                                    for (l = 0; l < x; l++) de(c[l]);
                                else de(c);
                            c.nodeType ? u.push(c) : u = i.merge(u, c)
                        }
                    if (r)
                        for (a = function(e) {
                                return !e.type || ne.test(e.type)
                            }, d = 0; u[d]; d++)
                            if (s = u[d], o && i.nodeName(s, "script") && (!s.type || ne.test(s.type))) o.push(s.parentNode ? s.parentNode.removeChild(s) : s);
                            else {
                                if (1 === s.nodeType) {
                                    var w = i.grep(s.getElementsByTagName("script"), a);
                                    u.splice.apply(u, [d + 1, 0].concat(w))
                                }
                                r.appendChild(s)
                            }
                    return u
                },
                cleanData: function(e) {
                    for (var t, n, r, o = i.cache, a = i.event.special, s = i.support.deleteExpando, l = 0; null != (r = e[l]); l++)
                        if ((!r.nodeName || !i.noData[r.nodeName.toLowerCase()]) && (n = r[i.expando])) {
                            if ((t = o[n]) && t.events) {
                                for (var u in t.events) a[u] ? i.event.remove(r, u) : i.removeEvent(r, u, t.handle);
                                t.handle && (t.handle.elem = null)
                            }
                            s ? delete r[i.expando] : r.removeAttribute && r.removeAttribute(i.expando), delete o[n]
                        }
                }
            });
            var fe, pe, he, ge = /alpha\([^)]*\)/i,
                ve = /opacity=([^)]*)/,
                me = /([A-Z]|^ms)/g,
                ye = /^[\-+]?(?:\d*\.)?\d+$/i,
                be = /^-?(?:\d*\.)?\d+(?!px)[^\d\s]+$/i,
                xe = /^([\-+])=([\-+.\de]+)/,
                we = /^margin/,
                ke = {
                    position: "absolute",
                    visibility: "hidden",
                    display: "block"
                },
                Te = ["Top", "Right", "Bottom", "Left"];

            function Ne(e, t, n) {
                var r = "width" === t ? e.offsetWidth : e.offsetHeight,
                    o = "width" === t ? 1 : 0;
                if (r > 0) {
                    if ("border" !== n)
                        for (; o < 4; o += 2) n || (r -= parseFloat(i.css(e, "padding" + Te[o])) || 0), "margin" === n ? r += parseFloat(i.css(e, n + Te[o])) || 0 : r -= parseFloat(i.css(e, "border" + Te[o] + "Width")) || 0;
                    return r + "px"
                }
                if (((r = fe(e, t)) < 0 || null == r) && (r = e.style[t]), be.test(r)) return r;
                if (r = parseFloat(r) || 0, n)
                    for (; o < 4; o += 2) r += parseFloat(i.css(e, "padding" + Te[o])) || 0, "padding" !== n && (r += parseFloat(i.css(e, "border" + Te[o] + "Width")) || 0), "margin" === n && (r += parseFloat(i.css(e, n + Te[o])) || 0);
                return r + "px"
            }
            i.fn.css = function(e, t) {
                    return i.access(this, (function(e, t, n) {
                        return void 0 !== n ? i.style(e, t, n) : i.css(e, t)
                    }), e, t, arguments.length > 1)
                }, i.extend({
                    cssHooks: {
                        opacity: {
                            get: function(e, t) {
                                if (t) {
                                    var n = fe(e, "opacity");
                                    return "" === n ? "1" : n
                                }
                                return e.style.opacity
                            }
                        }
                    },
                    cssNumber: {
                        fillOpacity: !0,
                        fontWeight: !0,
                        lineHeight: !0,
                        opacity: !0,
                        orphans: !0,
                        widows: !0,
                        zIndex: !0,
                        zoom: !0
                    },
                    cssProps: {
                        float: i.support.cssFloat ? "cssFloat" : "styleFloat"
                    },
                    style: function(e, t, n, r) {
                        if (e && 3 !== e.nodeType && 8 !== e.nodeType && e.style) {
                            var o, a, s = i.camelCase(t),
                                l = e.style,
                                u = i.cssHooks[s];
                            if (t = i.cssProps[s] || s, void 0 === n) return u && "get" in u && void 0 !== (o = u.get(e, !1, r)) ? o : l[t];
                            if (!("string" === (a = typeof n) && (o = xe.exec(n)) && (n = +(o[1] + 1) * +o[2] + parseFloat(i.css(e, t)), a = "number"), null == n || "number" === a && isNaN(n) || ("number" !== a || i.cssNumber[s] || (n += "px"), u && "set" in u && void 0 === (n = u.set(e, n))))) try {
                                l[t] = n
                            } catch (e) {}
                        }
                    },
                    css: function(e, t, n) {
                        var r, o;
                        return t = i.camelCase(t), o = i.cssHooks[t], "cssFloat" === (t = i.cssProps[t] || t) && (t = "float"), o && "get" in o && void 0 !== (r = o.get(e, !0, n)) ? r : fe ? fe(e, t) : void 0
                    },
                    swap: 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
                    }
                }), i.curCSS = i.css,
                t.defaultView && t.defaultView.getComputedStyle && (pe = function(e, t) {
                    var n, r, o, a, s = e.style;
                    return t = t.replace(me, "-$1").toLowerCase(), (r = e.ownerDocument.defaultView) && (o = r.getComputedStyle(e, null)) && ("" !== (n = o.getPropertyValue(t)) || i.contains(e.ownerDocument.documentElement, e) || (n = i.style(e, t))), !i.support.pixelMargin && o && we.test(t) && be.test(n) && (a = s.width, s.width = n, n = o.width, s.width = a), n
                }), t.documentElement.currentStyle && (he = function(e, t) {
                    var n, r, i, o = e.currentStyle && e.currentStyle[t],
                        a = e.style;
                    return null == o && a && (i = a[t]) && (o = i), be.test(o) && (n = a.left, (r = e.runtimeStyle && e.runtimeStyle.left) && (e.runtimeStyle.left = e.currentStyle.left), a.left = "fontSize" === t ? "1em" : o, o = a.pixelLeft + "px", a.left = n, r && (e.runtimeStyle.left = r)), "" === o ? "auto" : o
                }), fe = pe || he, i.each(["height", "width"], (function(e, t) {
                    i.cssHooks[t] = {
                        get: function(e, n, r) {
                            if (n) return 0 !== e.offsetWidth ? Ne(e, t, r) : i.swap(e, ke, (function() {
                                return Ne(e, t, r)
                            }))
                        },
                        set: function(e, t) {
                            return ye.test(t) ? t + "px" : t
                        }
                    }
                })), i.support.opacity || (i.cssHooks.opacity = {
                    get: function(e, t) {
                        return ve.test((t && e.currentStyle ? e.currentStyle.filter : e.style.filter) || "") ? parseFloat(RegExp.$1) / 100 + "" : t ? "1" : ""
                    },
                    set: function(e, t) {
                        var n = e.style,
                            r = e.currentStyle,
                            o = i.isNumeric(t) ? "alpha(opacity=" + 100 * t + ")" : "",
                            a = r && r.filter || n.filter || "";
                        n.zoom = 1, t >= 1 && "" === i.trim(a.replace(ge, "")) && (n.removeAttribute("filter"), r && !r.filter) || (n.filter = ge.test(a) ? a.replace(ge, o) : a + " " + o)
                    }
                }), i((function() {
                    i.support.reliableMarginRight || (i.cssHooks.marginRight = {
                        get: function(e, t) {
                            return i.swap(e, {
                                display: "inline-block"
                            }, (function() {
                                return t ? fe(e, "margin-right") : e.style.marginRight
                            }))
                        }
                    })
                })), i.expr && i.expr.filters && (i.expr.filters.hidden = function(e) {
                    var t = e.offsetWidth,
                        n = e.offsetHeight;
                    return 0 === t && 0 === n || !i.support.reliableHiddenOffsets && "none" === (e.style && e.style.display || i.css(e, "display"))
                }, i.expr.filters.visible = function(e) {
                    return !i.expr.filters.hidden(e)
                }), i.each({
                    margin: "",
                    padding: "",
                    border: "Width"
                }, (function(e, t) {
                    i.cssHooks[e + t] = {
                        expand: function(n) {
                            var r, i = "string" == typeof n ? n.split(" ") : [n],
                                o = {};
                            for (r = 0; r < 4; r++) o[e + Te[r] + t] = i[r] || i[r - 2] || i[0];
                            return o
                        }
                    }
                }));
            var Se, Ce, Le = /%20/g,
                Ee = /\[\]$/,
                Oe = /\r?\n/g,
                Ae = /#.*$/,
                je = /^(.*?):[ \t]*([^\r\n]*)\r?$/gm,
                Fe = /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,
                De = /^(?:GET|HEAD)$/,
                _e = /^\/\//,
                Pe = /\?/,
                Re = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,
                Me = /^(?:select|textarea)/i,
                He = /\s+/,
                Be = /([?&])_=[^&]*/,
                Ie = /^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,
                $e = i.fn.load,
                qe = {},
                We = {},
                ze = ["*/"] + ["*"];
            try {
                Se = r.href
            } catch (e) {
                (Se = t.createElement("a")).href = "", Se = Se.href
            }

            function Ve(e) {
                return function(t, n) {
                    if ("string" != typeof t && (n = t, t = "*"), i.isFunction(n))
                        for (var r, o, a = t.toLowerCase().split(He), s = 0, l = a.length; s < l; s++) r = a[s], (o = /^\+/.test(r)) && (r = r.substr(1) || "*"), (e[r] = e[r] || [])[o ? "unshift" : "push"](n)
                }
            }

            function Ue(e, t, n, r, i, o) {
                (o = o || {})[i = i || t.dataTypes[0]] = !0;
                for (var a, s = e[i], l = 0, u = s ? s.length : 0, c = e === qe; l < u && (c || !a); l++) "string" == typeof(a = s[l](t, n, r)) && (!c || o[a] ? a = void 0 : (t.dataTypes.unshift(a), a = Ue(e, t, n, r, a, o)));
                return !c && a || o["*"] || (a = Ue(e, t, n, r, "*", o)), a
            }

            function Xe(e, t) {
                var n, r, o = i.ajaxSettings.flatOptions || {};
                for (n in t) void 0 !== t[n] && ((o[n] ? e : r || (r = {}))[n] = t[n]);
                r && i.extend(!0, e, r)
            }

            function Ke(e, t, n, r) {
                if (i.isArray(t)) i.each(t, (function(t, i) {
                    n || Ee.test(e) ? r(e, i) : Ke(e + "[" + ("object" == typeof i ? t : "") + "]", i, n, r)
                }));
                else if (n || "object" !== i.type(t)) r(e, t);
                else
                    for (var o in t) Ke(e + "[" + o + "]", t[o], n, r)
            }
            Ce = Ie.exec(Se.toLowerCase()) || [], i.fn.extend({
                load: function(e, t, n) {
                    if ("string" != typeof e && $e) return $e.apply(this, arguments);
                    if (!this.length) return this;
                    var r = e.indexOf(" ");
                    if (r >= 0) {
                        var o = e.slice(r, e.length);
                        e = e.slice(0, r)
                    }
                    var a = "GET";
                    t && (i.isFunction(t) ? (n = t, t = void 0) : "object" == typeof t && (t = i.param(t, i.ajaxSettings.traditional), a = "POST"));
                    var s = this;
                    return i.ajax({
                        url: e,
                        type: a,
                        dataType: "html",
                        data: t,
                        complete: function(e, t, r) {
                            r = e.responseText, e.isResolved() && (e.done((function(e) {
                                r = e
                            })), s.html(o ? i("<div>").append(r.replace(Re, "")).find(o) : r)), n && s.each(n, [r, t, e])
                        }
                    }), this
                },
                serialize: function() {
                    return i.param(this.serializeArray())
                },
                serializeArray: function() {
                    return this.map((function() {
                        return this.elements ? i.makeArray(this.elements) : this
                    })).filter((function() {
                        return this.name && !this.disabled && (this.checked || Me.test(this.nodeName) || Fe.test(this.type))
                    })).map((function(e, t) {
                        var n = i(this).val();
                        return null == n ? null : i.isArray(n) ? i.map(n, (function(e, n) {
                            return {
                                name: t.name,
                                value: e.replace(Oe, "\r\n")
                            }
                        })) : {
                            name: t.name,
                            value: n.replace(Oe, "\r\n")
                        }
                    })).get()
                }
            }), i.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), (function(e, t) {
                i.fn[t] = function(e) {
                    return this.on(t, e)
                }
            })), i.each(["get", "post"], (function(e, t) {
                i[t] = function(e, n, r, o) {
                    return i.isFunction(n) && (o = o || r, r = n, n = void 0), i.ajax({
                        type: t,
                        url: e,
                        data: n,
                        success: r,
                        dataType: o
                    })
                }
            })), i.extend({
                getScript: function(e, t) {
                    return i.get(e, void 0, t, "script")
                },
                getJSON: function(e, t, n) {
                    return i.get(e, t, n, "json")
                },
                ajaxSetup: function(e, t) {
                    return t ? Xe(e, i.ajaxSettings) : (t = e, e = i.ajaxSettings), Xe(e, t), e
                },
                ajaxSettings: {
                    url: Se,
                    isLocal: /^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/.test(Ce[1]),
                    global: !0,
                    type: "GET",
                    contentType: "application/x-www-form-urlencoded; charset=UTF-8",
                    processData: !0,
                    async: !0,
                    accepts: {
                        xml: "application/xml, text/xml",
                        html: "text/html",
                        text: "text/plain",
                        json: "application/json, text/javascript",
                        "*": ze
                    },
                    contents: {
                        xml: /xml/,
                        html: /html/,
                        json: /json/
                    },
                    responseFields: {
                        xml: "responseXML",
                        text: "responseText"
                    },
                    converters: {
                        "* text": window.String,
                        "text html": !0,
                        "text json": i.parseJSON,
                        "text xml": i.parseXML
                    },
                    flatOptions: {
                        context: !0,
                        url: !0
                    }
                },
                ajaxPrefilter: Ve(qe),
                ajaxTransport: Ve(We),
                ajax: function(e, t) {
                    "object" == typeof e && (t = e, e = void 0), t = t || {};
                    var n, r, o, a, s, l, u, c, d = i.ajaxSetup({}, t),
                        f = d.context || d,
                        p = f !== d && (f.nodeType || f instanceof i) ? i(f) : i.event,
                        h = i.Deferred(),
                        g = i.Callbacks("once memory"),
                        v = d.statusCode || {},
                        m = {},
                        y = {},
                        b = 0,
                        x = {
                            readyState: 0,
                            setRequestHeader: function(e, t) {
                                if (!b) {
                                    var n = e.toLowerCase();
                                    e = y[n] = y[n] || e, m[e] = t
                                }
                                return this
                            },
                            getAllResponseHeaders: function() {
                                return 2 === b ? r : null
                            },
                            getResponseHeader: function(e) {
                                var t;
                                if (2 === b) {
                                    if (!o)
                                        for (o = {}; t = je.exec(r);) o[t[1].toLowerCase()] = t[2];
                                    t = o[e.toLowerCase()]
                                }
                                return void 0 === t ? null : t
                            },
                            overrideMimeType: function(e) {
                                return b || (d.mimeType = e), this
                            },
                            abort: function(e) {
                                return e = e || "abort", a && a.abort(e), w(0, e), this
                            }
                        };

                    function w(e, t, o, l) {
                        if (2 !== b) {
                            b = 2, s && clearTimeout(s), a = void 0, r = l || "", x.readyState = e > 0 ? 4 : 0;
                            var c, m, y, w, k, T = t,
                                N = o ? function(e, t, n) {
                                    var r, i, o, a, s = e.contents,
                                        l = e.dataTypes,
                                        u = e.responseFields;
                                    for (i in u) i in n && (t[u[i]] = n[i]);
                                    for (;
                                        "*" === 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]
                                }(d, x, o) : void 0;
                            if (e >= 200 && e < 300 || 304 === e)
                                if (d.ifModified && ((w = x.getResponseHeader("Last-Modified")) && (i.lastModified[n] = w), (k = x.getResponseHeader("Etag")) && (i.etag[n] = k)), 304 === e) T = "notmodified", c = !0;
                                else try {
                                    m = function(e, t) {
                                        e.dataFilter && (t = e.dataFilter(t, e.dataType));
                                        var n, r, o, a, s, l, u, c, d = e.dataTypes,
                                            f = {},
                                            p = d.length,
                                            h = d[0];
                                        for (n = 1; n < p; n++) {
                                            if (1 === n)
                                                for (r in e.converters) "string" == typeof r && (f[r.toLowerCase()] = e.converters[r]);
                                            if (a = h, "*" === (h = d[n])) h = a;
                                            else if ("*" !== a && a !== h) {
                                                if (!(l = f[s = a + " " + h] || f["* " + h]))
                                                    for (u in c = void 0, f)
                                                        if (((o = u.split(" "))[0] === a || "*" === o[0]) && (c = f[o[1] + " " + h])) {
                                                            !0 === (u = f[u]) ? l = c : !0 === c && (l = u);
                                                            break
                                                        }
                                                l || c || i.error("No conversion from " + s.replace(" ", " to ")), !0 !== l && (t = l ? l(t) : c(u(t)))
                                            }
                                        }
                                        return t
                                    }(d, N), T = "success", c = !0
                                } catch (e) {
                                    T = "parsererror", y = e
                                } else y = T, T && !e || (T = "error", e < 0 && (e = 0));
                            x.status = e, x.statusText = "" + (t || T), c ? h.resolveWith(f, [m, T, x]) : h.rejectWith(f, [x, T, y]), x.statusCode(v), v = void 0, u && p.trigger("ajax" + (c ? "Success" : "Error"), [x, d, c ? m : y]), g.fireWith(f, [x, T]), u && (p.trigger("ajaxComplete", [x, d]), --i.active || i.event.trigger("ajaxStop"))
                        }
                    }
                    if (h.promise(x), x.success = x.done, x.error = x.fail, x.complete = g.add, x.statusCode = function(e) {
                            var t;
                            if (e)
                                if (b < 2)
                                    for (t in e) v[t] = [v[t], e[t]];
                                else t = e[x.status], x.then(t, t);
                            return this
                        }, d.url = ((e || d.url) + "").replace(Ae, "").replace(_e, Ce[1] + "//"), d.dataTypes = i.trim(d.dataType || "*").toLowerCase().split(He), null == d.crossDomain && (l = Ie.exec(d.url.toLowerCase()), d.crossDomain = !(!l || l[1] == Ce[1] && l[2] == Ce[2] && (l[3] || ("http:" === l[1] ? 80 : 443)) == (Ce[3] || ("http:" === Ce[1] ? 80 : 443)))), d.data && d.processData && "string" != typeof d.data && (d.data = i.param(d.data, d.traditional)), Ue(qe, d, t, x), 2 === b) return !1;
                    if (u = d.global, d.type = d.type.toUpperCase(), d.hasContent = !De.test(d.type), u && 0 == i.active++ && i.event.trigger("ajaxStart"), !d.hasContent && (d.data && (d.url += (Pe.test(d.url) ? "&" : "?") + d.data, delete d.data), n = d.url, !1 === d.cache)) {
                        var k = i.now(),
                            T = d.url.replace(Be, "$1_=" + k);
                        d.url = T + (T === d.url ? (Pe.test(d.url) ? "&" : "?") + "_=" + k : "")
                    }
                    for (c in (d.data && d.hasContent && !1 !== d.contentType || t.contentType) && x.setRequestHeader("Content-Type", d.contentType), d.ifModified && (n = n || d.url, i.lastModified[n] && x.setRequestHeader("If-Modified-Since", i.lastModified[n]), i.etag[n] && x.setRequestHeader("If-None-Match", i.etag[n])),
                        x.setRequestHeader("Accept", d.dataTypes[0] && d.accepts[d.dataTypes[0]] ? d.accepts[d.dataTypes[0]] + ("*" !== d.dataTypes[0] ? ", " + ze + "; q=0.01" : "") : d.accepts["*"]), d.headers) x.setRequestHeader(c, d.headers[c]);
                    if (d.beforeSend && (!1 === d.beforeSend.call(f, x, d) || 2 === b)) return x.abort(), !1;
                    for (c in {
                            success: 1,
                            error: 1,
                            complete: 1
                        }) x[c](d[c]);
                    if (a = Ue(We, d, t, x)) {
                        x.readyState = 1, u && p.trigger("ajaxSend", [x, d]), d.async && d.timeout > 0 && (s = setTimeout((function() {
                            x.abort("timeout")
                        }), d.timeout));
                        try {
                            b = 1, a.send(m, w)
                        } catch (e) {
                            if (!(b < 2)) throw e;
                            w(-1, e)
                        }
                    } else w(-1, "No Transport");
                    return x
                },
                param: function(e, t) {
                    var n = [],
                        r = function(e, t) {
                            t = i.isFunction(t) ? t() : t, n[n.length] = encodeURIComponent(e) + "=" + encodeURIComponent(t)
                        };
                    if (void 0 === t && (t = i.ajaxSettings.traditional), i.isArray(e) || e.jquery && !i.isPlainObject(e)) i.each(e, (function() {
                        r(this.name, this.value)
                    }));
                    else
                        for (var o in e) Ke(o, e[o], t, r);
                    return n.join("&").replace(Le, "+")
                }
            }), i.extend({
                active: 0,
                lastModified: {},
                etag: {}
            });
            var Je = i.now(),
                Ye = /(\=)\?(&|$)|\?\?/i;
            i.ajaxSetup({
                jsonp: "callback",
                jsonpCallback: function() {
                    return i.expando + "_" + Je++
                }
            }), i.ajaxPrefilter("json jsonp", (function(e, t, n) {
                var r = "string" == typeof e.data && /^application\/x\-www\-form\-urlencoded/.test(e.contentType);
                if ("jsonp" === e.dataTypes[0] || !1 !== e.jsonp && (Ye.test(e.url) || r && Ye.test(e.data))) {
                    var o, a = e.jsonpCallback = i.isFunction(e.jsonpCallback) ? e.jsonpCallback() : e.jsonpCallback,
                        s = window[a],
                        l = e.url,
                        u = e.data,
                        c = "$1" + a + "$2";
                    return !1 !== e.jsonp && (l = l.replace(Ye, c), e.url === l && (r && (u = u.replace(Ye, c)), e.data === u && (l += (/\?/.test(l) ? "&" : "?") + e.jsonp + "=" + a))), e.url = l, e.data = u, window[a] = function(e) {
                        o = [e]
                    }, n.always((function() {
                        window[a] = s, o && i.isFunction(s) && window[a](o[0])
                    })), e.converters["script json"] = function() {
                        return o || i.error(a + " was not called"), o[0]
                    }, e.dataTypes[0] = "json", "script"
                }
            })), i.ajaxSetup({
                accepts: {
                    script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
                },
                contents: {
                    script: /javascript|ecmascript/
                },
                converters: {
                    "text script": function(e) {
                        return i.globalEval(e), e
                    }
                }
            }), i.ajaxPrefilter("script", (function(e) {
                void 0 === e.cache && (e.cache = !1), e.crossDomain && (e.type = "GET", e.global = !1)
            })), i.ajaxTransport("script", (function(e) {
                if (e.crossDomain) {
                    var n, r = t.head || t.getElementsByTagName("head")[0] || t.documentElement;
                    return {
                        send: function(i, o) {
                            (n = t.createElement("script")).async = "async", e.scriptCharset && (n.charset = e.scriptCharset), n.src = e.url, n.onload = n.onreadystatechange = function(e, t) {
                                (t || !n.readyState || /loaded|complete/.test(n.readyState)) && (n.onload = n.onreadystatechange = null, r && n.parentNode && r.removeChild(n), n = void 0, t || o(200, "success"))
                            }, r.insertBefore(n, r.firstChild)
                        },
                        abort: function() {
                            n && n.onload(0, 1)
                        }
                    }
                }
            }));
            var Ge, Ze, Qe = !!window.ActiveXObject && function() {
                    for (var e in Ge) Ge[e](0, 1)
                },
                et = 0;

            function tt() {
                try {
                    return new window.XMLHttpRequest
                } catch (e) {}
            }
            i.ajaxSettings.xhr = window.ActiveXObject ? function() {
                    return !this.isLocal && tt() || function() {
                        try {
                            return new window.ActiveXObject("Microsoft.XMLHTTP")
                        } catch (e) {}
                    }()
                } : tt, Ze = i.ajaxSettings.xhr(), i.extend(i.support, {
                    ajax: !!Ze,
                    cors: !!Ze && "withCredentials" in Ze
                }),
                i.support.ajax && i.ajaxTransport((function(e) {
                    var t;
                    if (!e.crossDomain || i.support.cors) return {
                        send: function(n, r) {
                            var o, a, s = e.xhr();
                            if (e.username ? s.open(e.type, e.url, e.async, e.username, e.password) : s.open(e.type, e.url, e.async), e.xhrFields)
                                for (a in e.xhrFields) s[a] = e.xhrFields[a];
                            e.mimeType && s.overrideMimeType && s.overrideMimeType(e.mimeType), e.crossDomain || n["X-Requested-With"] || (n["X-Requested-With"] = "XMLHttpRequest");
                            try {
                                for (a in n) s.setRequestHeader(a, n[a])
                            } catch (e) {}
                            s.send(e.hasContent && e.data || null), t = function(n, a) {
                                var l, u, c, d, f;
                                try {
                                    if (t && (a || 4 === s.readyState))
                                        if (t = void 0, o && (s.onreadystatechange = i.noop, Qe && delete Ge[o]), a) 4 !== s.readyState && s.abort();
                                        else {
                                            l = s.status, c = s.getAllResponseHeaders(), d = {}, (f = s.responseXML) && f.documentElement && (d.xml = f);
                                            try {
                                                d.text = s.responseText
                                            } catch (n) {}
                                            try {
                                                u = s.statusText
                                            } catch (e) {
                                                u = ""
                                            }
                                            l || !e.isLocal || e.crossDomain ? 1223 === l && (l = 204) : l = d.text ? 200 : 404
                                        }
                                } catch (e) {
                                    a || r(-1, e)
                                }
                                d && r(l, u, d, c)
                            }, e.async && 4 !== s.readyState ? (o = ++et, Qe && (Ge || (Ge = {}, i(window).unload(Qe)), Ge[o] = t), s.onreadystatechange = t) : t()
                        },
                        abort: function() {
                            t && t(0, 1)
                        }
                    }
                }));
            var nt, rt, it, ot, at = {},
                st = /^(?:toggle|show|hide)$/,
                lt = /^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,
                ut = [
                    ["height", "marginTop", "marginBottom", "paddingTop", "paddingBottom"],
                    ["width", "marginLeft", "marginRight", "paddingLeft", "paddingRight"],
                    ["opacity"]
                ];

            function ct() {
                return setTimeout(dt, 0), ot = i.now()
            }

            function dt() {
                ot = void 0
            }

            function ft(e, t) {
                var n = {};
                return i.each(ut.concat.apply([], ut.slice(0, t)), (function() {
                    n[this] = e
                })), n
            }

            function pt(e) {
                if (!at[e]) {
                    var n = t.body,
                        r = i("<" + e + ">").appendTo(n),
                        o = r.css("display");
                    r.remove(), "none" !== o && "" !== o || (nt || ((nt = t.createElement("iframe")).frameBorder = nt.width = nt.height = 0), n.appendChild(nt), rt && nt.createElement || ((rt = (nt.contentWindow || nt.contentDocument).document).write((i.support.boxModel ? "<!doctype html>" : "") + "<html><body>"), rt.close()), r = rt.createElement(e), rt.body.appendChild(r), o = i.css(r, "display"), n.removeChild(nt)), at[e] = o
                }
                return at[e]
            }
            i.fn.extend({
                show: function(e, t, n) {
                    var r, o;
                    if (e || 0 === e) return this.animate(ft("show", 3), e, t, n);
                    for (var a = 0, s = this.length; a < s; a++)(r = this[a]).style && (o = r.style.display, i._data(r, "olddisplay") || "none" !== o || (o = r.style.display = ""), ("" === o && "none" === i.css(r, "display") || !i.contains(r.ownerDocument.documentElement, r)) && i._data(r, "olddisplay", pt(r.nodeName)));
                    for (a = 0; a < s; a++)(r = this[a]).style && ("" !== (o = r.style.display) && "none" !== o || (r.style.display = i._data(r, "olddisplay") || ""));
                    return this
                },
                hide: function(e, t, n) {
                    if (e || 0 === e) return this.animate(ft("hide", 3), e, t, n);
                    for (var r, o, a = 0, s = this.length; a < s; a++)(r = this[a]).style && ("none" === (o = i.css(r, "display")) || i._data(r, "olddisplay") || i._data(r, "olddisplay", o));
                    for (a = 0; a < s; a++) this[a].style && (this[a].style.display = "none");
                    return this
                },
                _toggle: i.fn.toggle,
                toggle: function(e, t, n) {
                    var r = "boolean" == typeof e;
                    return i.isFunction(e) && i.isFunction(t) ? this._toggle.apply(this, arguments) : null == e || r ? this.each((function() {
                        var t = r ? e : i(this).is(":hidden");
                        i(this)[t ? "show" : "hide"]()
                    })) : this.animate(ft("toggle", 3), e, t, n), this
                },
                fadeTo: function(e, t, n, r) {
                    return this.filter(":hidden").css("opacity", 0).show().end().animate({
                        opacity: t
                    }, e, n, r)
                },
                animate: function(e, t, n, r) {
                    var o = i.speed(t, n, r);
                    if (i.isEmptyObject(e)) return this.each(o.complete, [!1]);

                    function a() {
                        !1 === o.queue && i._mark(this);
                        var t, n, r, a, s, l, u, c, d, f, p, h = i.extend({}, o),
                            g = 1 === this.nodeType,
                            v = g && i(this).is(":hidden");
                        for (r in h.animatedProperties = {}, e)
                            if (r !== (t = i.camelCase(r)) && (e[t] = e[r], delete e[r]), (s = i.cssHooks[t]) && "expand" in s)
                                for (r in l = s.expand(e[t]), delete e[t], l) r in e || (e[r] = l[r]);
                        for (t in e) {
                            if (n = e[t], i.isArray(n) ? (h.animatedProperties[t] = n[1], n = e[t] = n[0]) : h.animatedProperties[t] = h.specialEasing && h.specialEasing[t] || h.easing || "swing", "hide" === n && v || "show" === n && !v) return h.complete.call(this);
                            !g || "height" !== t && "width" !== t || (h.overflow = [this.style.overflow, this.style.overflowX, this.style.overflowY], "inline" === i.css(this, "display") && "none" === i.css(this, "float") && (i.support.inlineBlockNeedsLayout && "inline" !== pt(this.nodeName) ? this.style.zoom = 1 : this.style.display = "inline-block"))
                        }
                        for (r in null != h.overflow && (this.style.overflow = "hidden"), e) a = new i.fx(this, h, r), n = e[r], st.test(n) ? (p = i._data(this, "toggle" + r) || ("toggle" === n ? v ? "show" : "hide" : 0)) ? (i._data(this, "toggle" + r, "show" === p ? "hide" : "show"), a[p]()) : a[n]() : (u = lt.exec(n), c = a.cur(), u ? (d = parseFloat(u[2]), "px" !== (f = u[3] || (i.cssNumber[r] ? "" : "px")) && (i.style(this, r, (d || 1) + f), c = (d || 1) / a.cur() * c, i.style(this, r, c + f)), u[1] && (d = ("-=" === u[1] ? -1 : 1) * d + c), a.custom(c, d, f)) : a.custom(c, n, ""));
                        return !0
                    }
                    return e = i.extend({}, e), !1 === o.queue ? this.each(a) : this.queue(o.queue, a)
                },
                stop: function(e, 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, r = !1,
                            o = i.timers,
                            a = i._data(this);

                        function s(e, t, r) {
                            var o = t[r];
                            i.removeData(e, r, !0), o.stop(n)
                        }
                        if (n || i._unmark(!0, this), null == e)
                            for (t in a) a[t] && a[t].stop && t.indexOf(".run") === t.length - 4 && s(this, a, t);
                        else a[t = e + ".run"] && a[t].stop && s(this, a, t);
                        for (t = o.length; t--;) o[t].elem !== this || null != e && o[t].queue !== e || (n ? o[t](!0) : o[t].saveState(), r = !0, o.splice(t, 1));
                        n && r || i.dequeue(this, e)
                    }))
                }
            }), i.each({
                slideDown: ft("show", 1),
                slideUp: ft("hide", 1),
                slideToggle: ft("toggle", 1),
                fadeIn: {
                    opacity: "show"
                },
                fadeOut: {
                    opacity: "hide"
                },
                fadeToggle: {
                    opacity: "toggle"
                }
            }, (function(e, t) {
                i.fn[e] = function(e, n, r) {
                    return this.animate(t, e, n, r)
                }
            })), i.extend({
                speed: function(e, t, n) {
                    var r = e && "object" == typeof e ? i.extend({}, e) : {
                        complete: n || !n && t || i.isFunction(e) && e,
                        duration: e,
                        easing: n && t || t && !i.isFunction(t) && t
                    };
                    return r.duration = i.fx.off ? 0 : "number" == typeof r.duration ? r.duration : r.duration in i.fx.speeds ? i.fx.speeds[r.duration] : i.fx.speeds._default, null != r.queue && !0 !== r.queue || (r.queue = "fx"), r.old = r.complete, r.complete = function(e) {
                        i.isFunction(r.old) && r.old.call(this), r.queue ? i.dequeue(this, r.queue) : !1 !== e && i._unmark(this)
                    }, r
                },
                easing: {
                    linear: function(e) {
                        return e
                    },
                    swing: function(e) {
                        return -Math.cos(e * Math.PI) / 2 + .5
                    }
                },
                timers: [],
                fx: function(e, t, n) {
                    this.options = t, this.elem = e, this.prop = n, t.orig = t.orig || {}
                }
            }), i.fx.prototype = {
                update: function() {
                    this.options.step && this.options.step.call(this.elem, this.now, this),
                        (i.fx.step[this.prop] || i.fx.step._default)(this)
                },
                cur: function() {
                    if (null != this.elem[this.prop] && (!this.elem.style || null == this.elem.style[this.prop])) return this.elem[this.prop];
                    var e, t = i.css(this.elem, this.prop);
                    return isNaN(e = parseFloat(t)) ? t && "auto" !== t ? t : 0 : e
                },
                custom: function(e, t, n) {
                    var r = this,
                        o = i.fx;

                    function a(e) {
                        return r.step(e)
                    }
                    this.startTime = ot || ct(), this.end = t, this.now = this.start = e, this.pos = this.state = 0, this.unit = n || this.unit || (i.cssNumber[this.prop] ? "" : "px"), a.queue = this.options.queue, a.elem = this.elem, a.saveState = function() {
                        void 0 === i._data(r.elem, "fxshow" + r.prop) && (r.options.hide ? i._data(r.elem, "fxshow" + r.prop, r.start) : r.options.show && i._data(r.elem, "fxshow" + r.prop, r.end))
                    }, a() && i.timers.push(a) && !it && (it = setInterval(o.tick, o.interval))
                },
                show: function() {
                    var e = i._data(this.elem, "fxshow" + this.prop);
                    this.options.orig[this.prop] = e || i.style(this.elem, this.prop), this.options.show = !0, void 0 !== e ? this.custom(this.cur(), e) : this.custom("width" === this.prop || "height" === this.prop ? 1 : 0, this.cur()), i(this.elem).show()
                },
                hide: function() {
                    this.options.orig[this.prop] = i._data(this.elem, "fxshow" + this.prop) || i.style(this.elem, this.prop), this.options.hide = !0, this.custom(this.cur(), 0)
                },
                step: function(e) {
                    var t, n, r, o = ot || ct(),
                        a = !0,
                        s = this.elem,
                        l = this.options;
                    if (e || o >= l.duration + this.startTime) {
                        for (t in this.now = this.end, this.pos = this.state = 1, this.update(), l.animatedProperties[this.prop] = !0, l.animatedProperties) !0 !== l.animatedProperties[t] && (a = !1);
                        if (a) {
                            if (null == l.overflow || i.support.shrinkWrapBlocks || i.each(["", "X", "Y"], (function(e, t) {
                                    s.style["overflow" + t] = l.overflow[e]
                                })), l.hide && i(s).hide(), l.hide || l.show)
                                for (t in l.animatedProperties) i.style(s, t, l.orig[t]), i.removeData(s, "fxshow" + t, !0), i.removeData(s, "toggle" + t, !0);
                            (r = l.complete) && (l.complete = !1, r.call(s))
                        }
                        return !1
                    }
                    return l.duration == 1 / 0 ? this.now = o : (n = o - this.startTime, this.state = n / l.duration, this.pos = i.easing[l.animatedProperties[this.prop]](this.state, n, 0, 1, l.duration), this.now = this.start + (this.end - this.start) * this.pos), this.update(), !0
                }
            }, i.extend(i.fx, {
                tick: function() {
                    for (var e, t = i.timers, n = 0; n < t.length; n++)(e = t[n])() || t[n] !== e || t.splice(n--, 1);
                    t.length || i.fx.stop()
                },
                interval: 13,
                stop: function() {
                    clearInterval(it), it = null
                },
                speeds: {
                    slow: 600,
                    fast: 200,
                    _default: 400
                },
                step: {
                    opacity: function(e) {
                        i.style(e.elem, "opacity", e.now)
                    },
                    _default: function(e) {
                        e.elem.style && null != e.elem.style[e.prop] ? e.elem.style[e.prop] = e.now + e.unit : e.elem[e.prop] = e.now
                    }
                }
            }), i.each(ut.concat.apply([], ut), (function(e, t) {
                t.indexOf("margin") && (i.fx.step[t] = function(e) {
                    i.style(e.elem, t, Math.max(0, e.now) + e.unit)
                })
            })), i.expr && i.expr.filters && (i.expr.filters.animated = function(e) {
                return i.grep(i.timers, (function(t) {
                    return e === t.elem
                })).length
            });
            var ht, gt = /^t(?:able|d|h)$/i,
                vt = /^(?:body|html)$/i;

            function mt(e) {
                return i.isWindow(e) ? e : 9 === e.nodeType && (e.defaultView || e.parentWindow)
            }
            ht = "getBoundingClientRect" in t.documentElement ? function(e, t, n, r) {
                try {
                    r = e.getBoundingClientRect()
                } catch (e) {}
                if (!r || !i.contains(n, e)) return r ? {
                    top: r.top,
                    left: r.left
                } : {
                    top: 0,
                    left: 0
                };
                var o = t.body,
                    a = mt(t),
                    s = n.clientTop || o.clientTop || 0,
                    l = n.clientLeft || o.clientLeft || 0,
                    u = a.pageYOffset || i.support.boxModel && n.scrollTop || o.scrollTop,
                    c = a.pageXOffset || i.support.boxModel && n.scrollLeft || o.scrollLeft;
                return {
                    top: r.top + u - s,
                    left: r.left + c - l
                }
            } : function(e, t, n) {
                for (var r, o = e.offsetParent, a = t.body, s = t.defaultView, l = s ? s.getComputedStyle(e, null) : e.currentStyle, u = e.offsetTop, c = e.offsetLeft;
                    (e = e.parentNode) && e !== a && e !== n && (!i.support.fixedPosition || "fixed" !== l.position);) r = s ? s.getComputedStyle(e, null) : e.currentStyle, u -= e.scrollTop, c -= e.scrollLeft, e === o && (u += e.offsetTop, c += e.offsetLeft, !i.support.doesNotAddBorder || i.support.doesAddBorderForTableAndCells && gt.test(e.nodeName) || (u += parseFloat(r.borderTopWidth) || 0, c += parseFloat(r.borderLeftWidth) || 0), o, o = e.offsetParent), i.support.subtractsBorderForOverflowNotVisible && "visible" !== r.overflow && (u += parseFloat(r.borderTopWidth) || 0, c += parseFloat(r.borderLeftWidth) || 0), l = r;
                return "relative" !== l.position && "static" !== l.position || (u += a.offsetTop, c += a.offsetLeft), i.support.fixedPosition && "fixed" === l.position && (u += Math.max(n.scrollTop, a.scrollTop), c += Math.max(n.scrollLeft, a.scrollLeft)), {
                    top: u,
                    left: c
                }
            }, i.fn.offset = function(e) {
                if (arguments.length) return void 0 === e ? this : this.each((function(t) {
                    i.offset.setOffset(this, e, t)
                }));
                var t = this[0],
                    n = t && t.ownerDocument;
                return n ? t === n.body ? i.offset.bodyOffset(t) : ht(t, n, n.documentElement) : null
            }, i.offset = {
                bodyOffset: function(e) {
                    var t = e.offsetTop,
                        n = e.offsetLeft;
                    return i.support.doesNotIncludeMarginInBodyOffset && (t += parseFloat(i.css(e, "marginTop")) || 0, n += parseFloat(i.css(e, "marginLeft")) || 0), {
                        top: t,
                        left: n
                    }
                },
                setOffset: function(e, t, n) {
                    var r = i.css(e, "position");
                    "static" === r && (e.style.position = "relative");
                    var o, a, s = i(e),
                        l = s.offset(),
                        u = i.css(e, "top"),
                        c = i.css(e, "left"),
                        d = {},
                        f = {};
                    ("absolute" === r || "fixed" === r) && i.inArray("auto", [u, c]) > -1 ? (o = (f = s.position()).top, a = f.left) : (o = parseFloat(u) || 0, a = parseFloat(c) || 0), i.isFunction(t) && (t = t.call(e, n, l)), null != t.top && (d.top = t.top - l.top + o), null != t.left && (d.left = t.left - l.left + a), "using" in t ? t.using.call(e, d) : s.css(d)
                }
            }, i.fn.extend({
                position: function() {
                    if (!this[0]) return null;
                    var e = this[0],
                        t = this.offsetParent(),
                        n = this.offset(),
                        r = vt.test(t[0].nodeName) ? {
                            top: 0,
                            left: 0
                        } : t.offset();
                    return n.top -= parseFloat(i.css(e, "marginTop")) || 0, n.left -= parseFloat(i.css(e, "marginLeft")) || 0, r.top += parseFloat(i.css(t[0], "borderTopWidth")) || 0, r.left += parseFloat(i.css(t[0], "borderLeftWidth")) || 0, {
                        top: n.top - r.top,
                        left: n.left - r.left
                    }
                },
                offsetParent: function() {
                    return this.map((function() {
                        for (var e = this.offsetParent || t.body; e && !vt.test(e.nodeName) && "static" === i.css(e, "position");) e = e.offsetParent;
                        return e
                    }))
                }
            }), i.each({
                scrollLeft: "pageXOffset",
                scrollTop: "pageYOffset"
            }, (function(e, t) {
                var n = /Y/.test(t);
                i.fn[e] = function(r) {
                    return i.access(this, (function(e, r, o) {
                        var a = mt(e);
                        if (void 0 === o) return a ? t in a ? a[t] : i.support.boxModel && a.document.documentElement[r] || a.document.body[r] : e[r];
                        a ? a.scrollTo(n ? i(a).scrollLeft() : o, n ? o : i(a).scrollTop()) : e[r] = o
                    }), e, r, arguments.length, null)
                }
            })), i.each({
                Height: "height",
                Width: "width"
            }, (function(e, t) {
                var n = "client" + e,
                    r = "scroll" + e,
                    o = "offset" + e;
                i.fn["inner" + e] = function() {
                    var e = this[0];
                    return e ? e.style ? parseFloat(i.css(e, t, "padding")) : this[t]() : null
                }, i.fn["outer" + e] = function(e) {
                    var n = this[0];
                    return n ? n.style ? parseFloat(i.css(n, t, e ? "margin" : "border")) : this[t]() : null
                }, i.fn[t] = function(e) {
                    return i.access(this, (function(e, t, a) {
                        var s, l, u, c;
                        return i.isWindow(e) ? (l = (s = e.document).documentElement[n], i.support.boxModel && l || s.body && s.body[n] || l) : 9 === e.nodeType ? (s = e.documentElement)[n] >= s[r] ? s[n] : Math.max(e.body[r], s[r], e.body[o], s[o]) : void 0 === a ? (u = i.css(e, t), c = parseFloat(u), i.isNumeric(c) ? c : u) : void i(e).css(t, a)
                    }), t, e, arguments.length, null)
                }
            })), e.exports = window.jQuery = window.$ = i
        },
        92733: () => {
            "use strict";
            var e, t, n, r, i, o;
            window.parent !== window && window.CanvasRenderingContext2D && window.TextMetrics && (t = window.CanvasRenderingContext2D.prototype) && t.hasOwnProperty("font") && t.hasOwnProperty("mozTextStyle") && "function" == typeof t.__lookupSetter__ && (n = t.__lookupSetter__("font")) && (t.__defineSetter__("font", (function(e) {
                try {
                    return n.call(this, e)
                } catch (e) {
                    if ("NS_ERROR_FAILURE" !== e.name) throw e
                }
            })), r = t.measureText, e = function() {
                this.width = 0, this.isFake = !0, this.__proto__ = window.TextMetrics.prototype
            }, t.measureText = function(t) {
                try {
                    return r.apply(this, arguments)
                } catch (t) {
                    if ("NS_ERROR_FAILURE" !== t.name) throw t;
                    return new e
                }
            }, i = t.fillText, t.fillText = function(e, t, n, r) {
                try {
                    i.apply(this, arguments)
                } catch (e) {
                    if ("NS_ERROR_FAILURE" !== e.name) throw e
                }
            }, o = t.strokeText, t.strokeText = function(e, t, n, r) {
                try {
                    o.apply(this, arguments)
                } catch (e) {
                    if ("NS_ERROR_FAILURE" !== e.name) throw e
                }
            })
        },
        6870: (e, t, n) => {
            "use strict";
            var r, i, o, a = n(18184);
            r = a, void 0 !== document.hidden ? (i = "hidden", o = "visibilitychange") : void 0 !== document.mozHidden ? (i = "mozHidden", o = "mozvisibilitychange") : void 0 !== document.msHidden ? (i = "msHidden", o = "msvisibilitychange") : void 0 !== document.webkitHidden && (i = "webkitHidden", o = "webkitvisibilitychange"), r.tabvisible = !0, o && (r(document).on(o, (function(e) {
                r.tabvisible = !document[i], r(window).trigger("visibilitychange", !document[i])
            })), r(document).trigger(o)), r.whenTabVisible = function(e) {
                !o || r.tabvisible ? e() : r(window).one("visibilitychange", e)
            }
        },
        7087: (e, t, n) => {
            "use strict";
            var r, i, o, a, s = n(18184);
            i = (r = s)(window), o = r(document), a = function(e) {
                var t = s.data(e.target);
                t.localScroll ? e.target.scrollTop > e.target.scrollHeight - r(e.target).height() - (t.tolerance || 190) && r(this).trigger("scrolltoend") : i.scrollTop() > o.height() - i.innerHeight() - (t.tolerance || 190) && r(this).trigger("scrolltoend")
            }, r.event.special.scrolltoend = {
                setup: function(e, t) {
                    r(this).bind("scroll.scrolltoend", a)
                },
                teardown: function(e) {
                    r(this).unbind("scroll.scrolltoend", a)
                }
            }, s.event.special.scrollto = {
                bindType: "scroll",
                handle: function(e) {
                    var t = e.handleObj;
                    e.scrollData || (e.scrollData = {
                        scrollTop: i.scrollTop()
                    });
                    var n = null;
                    if ("number" == typeof e.data.to) n = e.scrollData.scrollTop > e.data.to - (e.data.tolerance || 0);
                    else {
                        if ("bottom" !== e.data.to) throw new Error('Special event scrollto: property "to" has unexpected value');
                        e.scrollData.bottomOffset || (e.scrollData.bottomOffset = o.height() - i.innerHeight()),
                            n = e.scrollData.scrollTop > e.scrollData.bottomOffset - (e.data.tolerance || 0)
                    }
                    var r = Array.prototype.slice.apply(arguments);
                    return n ? (r.push(!0), t.handler.apply(this, r)) : e.data.twoway ? (r.push(!1), t.handler.apply(this, r)) : void 0
                }
            }
        },
        95355: (e, t, n) => {
            "use strict";
            n.r(t), n.d(t, {
                mobiletouch: () => i,
                touch: () => o,
                setClasses: () => a
            });
            const r = "ontouchstart" in window,
                i = r && "onorientationchange" in window,
                o = r || !!navigator.maxTouchPoints;

            function a() {
                document.documentElement.classList.add(o ? "feature-touch" : "feature-no-touch", i ? "feature-mobiletouch" : "feature-no-mobiletouch")
            }
        },
        68724: (e, t, n) => {
            "use strict";
            const {
                mobiletouch: r,
                touch: i
            } = n(95355);
            var o, a, s, l, u, c = window.TradingView = window.TradingView || {},
                d = window.chrome && window.chrome.runtime,
                f = window.navigator.userAgent.toLowerCase().indexOf("firefox") > -1,
                p = /\sEdge\/\d\d\b/.test(navigator.userAgent),
                h = navigator.vendor && navigator.vendor.indexOf("Apple") > -1 && -1 === navigator.userAgent.indexOf("CriOS") && -1 === navigator.userAgent.indexOf("FxiOS");
            c.className = function(e) {
                    for (var t in c)
                        if (c[t] === e) return t;
                    return null
                }, c.isMobile = (o = /Android/i.test(navigator.userAgent), a = /BlackBerry/i.test(navigator.userAgent), s = /iPhone|iPad|iPod/.test(navigator.platform), l = /Opera Mini/i.test(navigator.userAgent), u = o || a || s || l, {
                    Android: function() {
                        return o
                    },
                    BlackBerry: function() {
                        return a
                    },
                    iOS: function() {
                        return s
                    },
                    Opera: function() {
                        return l
                    },
                    any: function() {
                        return u
                    }
                }), c.supportTouch = function() {
                    return r || i || c.isMobile.any()
                }, c.onWidget = function() {
                    for (var e = ["^widgetembed/?$", "^cmewidgetembed/?$", "^([0-9a-zA-Z-]+)/widgetembed/?$", "^([0-9a-zA-Z-]+)/widgetstatic/?$", "^([0-9a-zA-Z-]+)?/?miniwidgetembed/?$", "^([0-9a-zA-Z-]+)?/?mediumwidgetembed/?$", "^embed(-static)?/([0-9a-zA-Z]{8})/?$", "^widgetpopup/?$", "^extension/?$", "^chatwidgetembed/?$", "^ideaswidgetembed/?$", "^ideas-widget/?$", "^view-idea-widget/([0-9a-zA-Z]{8})/?$", "^embed-quotes-provider/?$", "^idea-popup/?$", "^hotlistswidgetembed/?$", "^([0-9a-zA-Z-]+)/hotlistswidgetembed/?$", "^marketoverviewwidgetembed/?$", "^([0-9a-zA-Z-]+)/marketoverviewwidgetembed/?$", "^eventswidgetembed/?$", "^tickerswidgetembed/?$", "^forexcrossrateswidgetembed/?$", "^forexheatmapwidgetembed/?$", "^marketquoteswidgetembed/?$", "^screenerwidget/?$", "^cryptomktscreenerwidget/?$", "^([0-9a-zA-Z-]+)/cryptomktscreenerwidget/?$", "^([0-9a-zA-Z-]+)/marketquoteswidgetembed/?$", "^technical-analysis-widget-embed/$", "^singlequotewidgetembed/?$", "^([0-9a-zA-Z-]+)/singlequotewidgetembed/?$", "^embed-widget/([0-9a-zA-Z-]+)/(([0-9a-zA-Z-]+)/)?$"], t = window.location.pathname.replace(/^\//, ""), n = e.length - 1; n >= 0; n--)
                        if (new RegExp(e[n]).test(t)) return !0;
                    return !1
                }, c.onOrder = function() {
                    return "/order/" === window.location.pathname
                }, e.exports.isMac = function() {
                    return /mac/i.test(navigator.platform)
                }, e.exports.isWindows = function() {
                    return /Win32|Win64/i.test(navigator.platform)
                }, e.exports.isDesktopApp = function() {
                    return /TVDesktop/i.test(navigator.userAgent)
                }, e.exports.desktopAppVersion = function() {
                    const e = navigator.userAgent.match(/TVDesktop\/([^\s]+)/);
                    return e && e[1]
                }, e.exports.CheckMobile = c.isMobile, e.exports.onWidget = c.onWidget,
                e.exports.supportTouch = c.supportTouch, e.exports.checkPageType = function(e) {
                    return new URLSearchParams(window.location.search).get("page_type") === e
                }, e.exports.isChrome = d, e.exports.isFF = f, e.exports.isEdge = p, e.exports.isSafari = h, e.exports.onOrder = c.onOrder, e.exports.className = c.className, e.exports.onGoPro = function() {
                    return "/gopro/" === window.location.pathname
                }, e.exports.onMainPage = function() {
                    return "/" === window.location.pathname
                }
        },
        9792: (e, t, n) => {
            "use strict";
            n.d(t, {
                addTranslationFunctionToJQuery: () => o,
                addTranslationFunctionToWindow: () => i,
                translationFunction: () => a
            });
            const r = window;

            function i(e) {
                window.t = e
            }

            function o(e) {
                r.$ || (r.$ = {}), r.$.t = e
            }
            const a = (e, t) => e
        },
        8390: (e, t, n) => {
            "use strict";
            n.r(t), window.__tradingviewI18nextInited = !0
        },
        8107: (e, t, n) => {
            "use strict";
            n.r(t), n.d(t, {
                t: () => Q
            });
            n(84534);
            var r = n(9792);

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

            function o(e, t, n) {
                return t in e ? Object.defineProperty(e, t, {
                    value: n,
                    enumerable: !0,
                    configurable: !0,
                    writable: !0
                }) : e[t] = n, e
            }

            function a(e) {
                for (var t = 1; t < arguments.length; t++) {
                    var n = null != arguments[t] ? Object(arguments[t]) : {},
                        r = Object.keys(n);
                    "function" == typeof Object.getOwnPropertySymbols && r.push.apply(r, Object.getOwnPropertySymbols(n).filter((function(e) {
                        return Object.getOwnPropertyDescriptor(n, e).enumerable
                    }))), r.forEach((function(t) {
                        o(e, t, n[t])
                    }))
                }
                return e
            }

            function s(e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }

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

            function u(e, t, n) {
                return t && l(e.prototype, t), n && l(e, n), Object.defineProperty(e, "prototype", {
                    writable: !1
                }), e
            }

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

            function d(e, t) {
                if (t && ("object" === i(t) || "function" == typeof t)) return t;
                if (void 0 !== t) throw new TypeError("Derived constructors may only return object or undefined");
                return c(e)
            }

            function f(e) {
                return (f = Object.setPrototypeOf ? Object.getPrototypeOf : function(e) {
                    return e.__proto__ || Object.getPrototypeOf(e)
                })(e)
            }

            function p(e, t) {
                return (p = Object.setPrototypeOf || function(e, t) {
                    return e.__proto__ = t, e
                })(e, t)
            }

            function h(e, t) {
                if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
                e.prototype = Object.create(t && t.prototype, {
                    constructor: {
                        value: e,
                        writable: !0,
                        configurable: !0
                    }
                }), Object.defineProperty(e, "prototype", {
                    writable: !1
                }), t && p(e, t)
            }
            var g = {
                    type: "logger",
                    log: function(e) {
                        this.output("log", e)
                    },
                    warn: function(e) {
                        this.output("warn", e)
                    },
                    error: function(e) {
                        this.output("error", e)
                    },
                    output: function(e, t) {
                        console && console[e] && console[e].apply(console, t)
                    }
                },
                v = new(function() {
                    function e(t) {
                        var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
                        s(this, e), this.init(t, n)
                    }
                    return u(e, [{
                        key: "init",
                        value: function(e) {
                            var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
                            this.prefix = t.prefix || "i18next:", this.logger = e || g, this.options = t, this.debug = t.debug
                        }
                    }, {
                        key: "setDebug",
                        value: function(e) {
                            this.debug = e
                        }
                    }, {
                        key: "log",
                        value: function() {
                            for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++) t[n] = arguments[n];
                            return this.forward(t, "log", "", !0)
                        }
                    }, {
                        key: "warn",
                        value: function() {
                            for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++) t[n] = arguments[n];
                            return this.forward(t, "warn", "", !0)
                        }
                    }, {
                        key: "error",
                        value: function() {
                            for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++) t[n] = arguments[n];
                            return this.forward(t, "error", "")
                        }
                    }, {
                        key: "deprecate",
                        value: function() {
                            for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++) t[n] = arguments[n];
                            return this.forward(t, "warn", "WARNING DEPRECATED: ", !0)
                        }
                    }, {
                        key: "forward",
                        value: function(e, t, n, r) {
                            return r && !this.debug ? null : ("string" == typeof e[0] && (e[0] = "".concat(n).concat(this.prefix, " ").concat(e[0])), this.logger[t](e))
                        }
                    }, {
                        key: "create",
                        value: function(t) {
                            return new e(this.logger, a({}, {
                                prefix: "".concat(this.prefix, ":").concat(t, ":")
                            }, this.options))
                        }
                    }]), e
                }()),
                m = function() {
                    function e() {
                        s(this, e), this.observers = {}
                    }
                    return u(e, [{
                        key: "on",
                        value: function(e, t) {
                            var n = this;
                            return e.split(" ").forEach((function(e) {
                                n.observers[e] = n.observers[e] || [], n.observers[e].push(t)
                            })), this
                        }
                    }, {
                        key: "off",
                        value: function(e, t) {
                            this.observers[e] && (t ? this.observers[e] = this.observers[e].filter((function(e) {
                                return e !== t
                            })) : delete this.observers[e])
                        }
                    }, {
                        key: "emit",
                        value: function(e) {
                            for (var t = arguments.length, n = new Array(t > 1 ? t - 1 : 0), r = 1; r < t; r++) n[r - 1] = arguments[r];
                            if (this.observers[e]) {
                                var i = [].concat(this.observers[e]);
                                i.forEach((function(e) {
                                    e.apply(void 0, n)
                                }))
                            }
                            if (this.observers["*"]) {
                                var o = [].concat(this.observers["*"]);
                                o.forEach((function(t) {
                                    t.apply(t, [e].concat(n))
                                }))
                            }
                        }
                    }]), e
                }();

            function y() {
                var e, t, n = new Promise((function(n, r) {
                    e = n, t = r
                }));
                return n.resolve = e, n.reject = t, n
            }

            function b(e) {
                return null == e ? "" : "" + e
            }

            function x(e, t, n) {
                e.forEach((function(e) {
                    t[e] && (n[e] = t[e])
                }))
            }

            function w(e, t, n) {
                function r(e) {
                    return e && e.indexOf("###") > -1 ? e.replace(/###/g, ".") : e
                }

                function i() {
                    return !e || "string" == typeof e
                }
                for (var o = "string" != typeof t ? [].concat(t) : t.split("."); o.length > 1;) {
                    if (i()) return {};
                    var a = r(o.shift());
                    !e[a] && n && (e[a] = new n), e = Object.prototype.hasOwnProperty.call(e, a) ? e[a] : {}
                }
                return i() ? {} : {
                    obj: e,
                    k: r(o.shift())
                }
            }

            function k(e, t, n) {
                var r = w(e, t, Object);
                r.obj[r.k] = n
            }

            function T(e, t) {
                var n = w(e, t),
                    r = n.obj,
                    i = n.k;
                if (r) return r[i]
            }

            function N(e, t, n) {
                var r = T(e, n);
                return void 0 !== r ? r : T(t, n)
            }

            function S(e, t, n) {
                for (var r in t) "__proto__" !== r && "constructor" !== r && (r in e ? "string" == typeof e[r] || e[r] instanceof String || "string" == typeof t[r] || t[r] instanceof String ? n && (e[r] = t[r]) : S(e[r], t[r], n) : e[r] = t[r]);
                return e
            }

            function C(e) {
                return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&")
            }
            var L = {
                "&": "&amp;",
                "<": "&lt;",
                ">": "&gt;",
                '"': "&quot;",
                "'": "&#39;",
                "/": "&#x2F;"
            };

            function E(e) {
                return "string" == typeof e ? e.replace(/[&<>"'\/]/g, (function(e) {
                    return L[e]
                })) : e
            }
            var O = "undefined" != typeof window && window.navigator && window.navigator.userAgent && window.navigator.userAgent.indexOf("MSIE") > -1,
                A = [" ", ",", "?", "!", ";"];

            function j(e, t) {
                var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : ".";
                if (e) {
                    if (e[t]) return e[t];
                    for (var r = t.split(n), i = e, o = 0; o < r.length; ++o) {
                        if (!i) return;
                        if ("string" == typeof i[r[o]] && o + 1 < r.length) return;
                        if (void 0 === i[r[o]]) {
                            for (var a = 2, s = r.slice(o, o + a).join(n), l = i[s]; void 0 === l && r.length > o + a;) a++, l = i[s = r.slice(o, o + a).join(n)];
                            if (void 0 === l) return;
                            if ("string" == typeof l) return l;
                            if (s && "string" == typeof l[s]) return l[s];
                            var u = r.slice(o + a).join(n);
                            return u ? j(l, u, n) : void 0
                        }
                        i = i[r[o]]
                    }
                    return i
                }
            }
            var F = function(e) {
                    function t(e) {
                        var n, r = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {
                            ns: ["translation"],
                            defaultNS: "translation"
                        };
                        return s(this, t), n = d(this, f(t).call(this)), O && m.call(c(n)), n.data = e || {}, n.options = r, void 0 === n.options.keySeparator && (n.options.keySeparator = "."), void 0 === n.options.ignoreJSONStructure && (n.options.ignoreJSONStructure = !0), n
                    }
                    return h(t, e), u(t, [{
                        key: "addNamespaces",
                        value: function(e) {
                            this.options.ns.indexOf(e) < 0 && this.options.ns.push(e)
                        }
                    }, {
                        key: "removeNamespaces",
                        value: function(e) {
                            var t = this.options.ns.indexOf(e);
                            t > -1 && this.options.ns.splice(t, 1)
                        }
                    }, {
                        key: "getResource",
                        value: function(e, t, n) {
                            var r = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : {},
                                i = void 0 !== r.keySeparator ? r.keySeparator : this.options.keySeparator,
                                o = void 0 !== r.ignoreJSONStructure ? r.ignoreJSONStructure : this.options.ignoreJSONStructure,
                                a = [e, t];
                            n && "string" != typeof n && (a = a.concat(n)), n && "string" == typeof n && (a = a.concat(i ? n.split(i) : n)), e.indexOf(".") > -1 && (a = e.split("."));
                            var s = T(this.data, a);
                            return s || !o || "string" != typeof n ? s : j(this.data && this.data[e] && this.data[e][t], n, i)
                        }
                    }, {
                        key: "addResource",
                        value: function(e, t, n, r) {
                            var i = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : {
                                    silent: !1
                                },
                                o = this.options.keySeparator;
                            void 0 === o && (o = ".");
                            var a = [e, t];
                            n && (a = a.concat(o ? n.split(o) : n)), e.indexOf(".") > -1 && (r = t, t = (a = e.split("."))[1]), this.addNamespaces(t), k(this.data, a, r), i.silent || this.emit("added", e, t, n, r)
                        }
                    }, {
                        key: "addResources",
                        value: function(e, t, n) {
                            var r = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : {
                                silent: !1
                            };
                            for (var i in n) "string" != typeof n[i] && "[object Array]" !== Object.prototype.toString.apply(n[i]) || this.addResource(e, t, i, n[i], {
                                silent: !0
                            });
                            r.silent || this.emit("added", e, t, n)
                        }
                    }, {
                        key: "addResourceBundle",
                        value: function(e, t, n, r, i) {
                            var o = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : {
                                    silent: !1
                                },
                                s = [e, t];
                            e.indexOf(".") > -1 && (r = n, n = t, t = (s = e.split("."))[1]), this.addNamespaces(t);
                            var l = T(this.data, s) || {};
                            r ? S(l, n, i) : l = a({}, l, n), k(this.data, s, l), o.silent || this.emit("added", e, t, n)
                        }
                    }, {
                        key: "removeResourceBundle",
                        value: function(e, t) {
                            this.hasResourceBundle(e, t) && delete this.data[e][t], this.removeNamespaces(t), this.emit("removed", e, t)
                        }
                    }, {
                        key: "hasResourceBundle",
                        value: function(e, t) {
                            return void 0 !== this.getResource(e, t)
                        }
                    }, {
                        key: "getResourceBundle",
                        value: function(e, t) {
                            return t || (t = this.options.defaultNS),
                                "v1" === this.options.compatibilityAPI ? a({}, {}, this.getResource(e, t)) : this.getResource(e, t)
                        }
                    }, {
                        key: "getDataByLanguage",
                        value: function(e) {
                            return this.data[e]
                        }
                    }, {
                        key: "hasLanguageSomeTranslations",
                        value: function(e) {
                            var t = this.getDataByLanguage(e);
                            return !!(t && Object.keys(t) || []).find((function(e) {
                                return t[e] && Object.keys(t[e]).length > 0
                            }))
                        }
                    }, {
                        key: "toJSON",
                        value: function() {
                            return this.data
                        }
                    }]), t
                }(m),
                D = {
                    processors: {},
                    addPostProcessor: function(e) {
                        this.processors[e.name] = e
                    },
                    handle: function(e, t, n, r, i) {
                        var o = this;
                        return e.forEach((function(e) {
                            o.processors[e] && (t = o.processors[e].process(t, n, r, i))
                        })), t
                    }
                },
                _ = {},
                P = function(e) {
                    function t(e) {
                        var n, r = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
                        return s(this, t), n = d(this, f(t).call(this)), O && m.call(c(n)), x(["resourceStore", "languageUtils", "pluralResolver", "interpolator", "backendConnector", "i18nFormat", "utils"], e, c(n)), n.options = r, void 0 === n.options.keySeparator && (n.options.keySeparator = "."), n.logger = v.create("translator"), n
                    }
                    return h(t, e), u(t, [{
                        key: "changeLanguage",
                        value: function(e) {
                            e && (this.language = e)
                        }
                    }, {
                        key: "exists",
                        value: function(e) {
                            var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {
                                interpolation: {}
                            };
                            if (null == e) return !1;
                            var n = this.resolve(e, t);
                            return n && void 0 !== n.res
                        }
                    }, {
                        key: "extractFromKey",
                        value: function(e, t) {
                            var n = void 0 !== t.nsSeparator ? t.nsSeparator : this.options.nsSeparator;
                            void 0 === n && (n = ":");
                            var r = void 0 !== t.keySeparator ? t.keySeparator : this.options.keySeparator,
                                i = t.ns || this.options.defaultNS,
                                o = n && e.indexOf(n) > -1,
                                a = ! function(e, t, n) {
                                    t = t || "", n = n || "";
                                    var r = A.filter((function(e) {
                                        return t.indexOf(e) < 0 || n.indexOf(e) < 0
                                    }));
                                    return 0 === r.length || !new RegExp("(".concat(r.map((function(e) {
                                        return "?" === e ? "\\?" : e
                                    })).join("|"), ")")).test(e)
                                }(e, n, r);
                            if (o && !a) {
                                var s = e.match(this.interpolator.nestingRegexp);
                                if (s && s.length > 0) return {
                                    key: e,
                                    namespaces: i
                                };
                                var l = e.split(n);
                                (n !== r || n === r && this.options.ns.indexOf(l[0]) > -1) && (i = l.shift()), e = l.join(r)
                            }
                            return "string" == typeof i && (i = [i]), {
                                key: e,
                                namespaces: i
                            }
                        }
                    }, {
                        key: "translate",
                        value: function(e, n, r) {
                            var o = this;
                            if ("object" !== i(n) && this.options.overloadTranslationOptionHandler && (n = this.options.overloadTranslationOptionHandler(arguments)), n || (n = {}), null == e) return "";
                            Array.isArray(e) || (e = [String(e)]);
                            var s = void 0 !== n.keySeparator ? n.keySeparator : this.options.keySeparator,
                                l = this.extractFromKey(e[e.length - 1], n),
                                u = l.key,
                                c = l.namespaces,
                                d = c[c.length - 1],
                                f = n.lng || this.language,
                                p = n.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;
                            if (f && "cimode" === f.toLowerCase()) {
                                if (p) {
                                    var h = n.nsSeparator || this.options.nsSeparator;
                                    return d + h + u
                                }
                                return u
                            }
                            var g = this.resolve(e, n),
                                v = g && g.res,
                                m = g && g.usedKey || u,
                                y = g && g.exactUsedKey || u,
                                b = Object.prototype.toString.apply(v),
                                x = ["[object Number]", "[object Function]", "[object RegExp]"],
                                w = void 0 !== n.joinArrays ? n.joinArrays : this.options.joinArrays,
                                k = !this.i18nFormat || this.i18nFormat.handleAsObject,
                                T = "string" != typeof v && "boolean" != typeof v && "number" != typeof v;
                            if (k && v && T && x.indexOf(b) < 0 && ("string" != typeof w || "[object Array]" !== b)) {
                                if (!n.returnObjects && !this.options.returnObjects) return this.options.returnedObjectHandler || this.logger.warn("accessing an object - but returnObjects options is not enabled!"), this.options.returnedObjectHandler ? this.options.returnedObjectHandler(m, v, a({}, n, {
                                    ns: c
                                })) : "key '".concat(u, " (").concat(this.language, ")' returned an object instead of string.");
                                if (s) {
                                    var N = "[object Array]" === b,
                                        S = N ? [] : {},
                                        C = N ? y : m;
                                    for (var L in v)
                                        if (Object.prototype.hasOwnProperty.call(v, L)) {
                                            var E = "".concat(C).concat(s).concat(L);
                                            S[L] = this.translate(E, a({}, n, {
                                                joinArrays: !1,
                                                ns: c
                                            })), S[L] === E && (S[L] = v[L])
                                        }
                                    v = S
                                }
                            } else if (k && "string" == typeof w && "[object Array]" === b)(v = v.join(w)) && (v = this.extendTranslation(v, e, n, r));
                            else {
                                var O = !1,
                                    A = !1,
                                    j = void 0 !== n.count && "string" != typeof n.count,
                                    F = t.hasDefaultValue(n),
                                    D = j ? this.pluralResolver.getSuffix(f, n.count, n) : "",
                                    _ = n["defaultValue".concat(D)] || n.defaultValue;
                                !this.isValidLookup(v) && F && (O = !0, v = _), this.isValidLookup(v) || (A = !0, v = u);
                                var P = n.missingKeyNoValueFallbackToKey || this.options.missingKeyNoValueFallbackToKey,
                                    R = P && A ? void 0 : v,
                                    M = F && _ !== v && this.options.updateMissing;
                                if (A || O || M) {
                                    if (this.logger.log(M ? "updateKey" : "missingKey", f, d, u, M ? _ : v), s) {
                                        var H = this.resolve(u, a({}, n, {
                                            keySeparator: !1
                                        }));
                                        H && H.res && this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.")
                                    }
                                    var B = [],
                                        I = this.languageUtils.getFallbackCodes(this.options.fallbackLng, n.lng || this.language);
                                    if ("fallback" === this.options.saveMissingTo && I && I[0])
                                        for (var $ = 0; $ < I.length; $++) B.push(I[$]);
                                    else "all" === this.options.saveMissingTo ? B = this.languageUtils.toResolveHierarchy(n.lng || this.language) : B.push(n.lng || this.language);
                                    var q = function(e, t, r) {
                                        o.options.missingKeyHandler ? o.options.missingKeyHandler(e, d, t, M ? r : R, M, n) : o.backendConnector && o.backendConnector.saveMissing && o.backendConnector.saveMissing(e, d, t, M ? r : R, M, n), o.emit("missingKey", e, d, t, v)
                                    };
                                    this.options.saveMissing && (this.options.saveMissingPlurals && j ? B.forEach((function(e) {
                                        o.pluralResolver.getSuffixes(e).forEach((function(t) {
                                            q([e], u + t, n["defaultValue".concat(t)] || _)
                                        }))
                                    })) : q(B, u, _))
                                }
                                v = this.extendTranslation(v, e, n, g, r), A && v === u && this.options.appendNamespaceToMissingKey && (v = "".concat(d, ":").concat(u)), (A || O) && this.options.parseMissingKeyHandler && (v = this.options.parseMissingKeyHandler(v))
                            }
                            return v
                        }
                    }, {
                        key: "extendTranslation",
                        value: function(e, t, n, r, i) {
                            var o = this;
                            if (this.i18nFormat && this.i18nFormat.parse) e = this.i18nFormat.parse(e, n, r.usedLng, r.usedNS, r.usedKey, {
                                resolved: r
                            });
                            else if (!n.skipInterpolation) {
                                n.interpolation && this.interpolator.init(a({}, n, {
                                    interpolation: a({}, this.options.interpolation, n.interpolation)
                                }));
                                var s, l = n.interpolation && n.interpolation.skipOnVariables || this.options.interpolation.skipOnVariables;
                                if (l) {
                                    var u = e.match(this.interpolator.nestingRegexp);
                                    s = u && u.length
                                }
                                var c = n.replace && "string" != typeof n.replace ? n.replace : n;
                                if (this.options.interpolation.defaultVariables && (c = a({}, this.options.interpolation.defaultVariables, c)), e = this.interpolator.interpolate(e, c, n.lng || this.language, n),
                                    l) {
                                    var d = e.match(this.interpolator.nestingRegexp);
                                    s < (d && d.length) && (n.nest = !1)
                                }!1 !== n.nest && (e = this.interpolator.nest(e, (function() {
                                    for (var e = arguments.length, r = new Array(e), a = 0; a < e; a++) r[a] = arguments[a];
                                    return i && i[0] === r[0] && !n.context ? (o.logger.warn("It seems you are nesting recursively key: ".concat(r[0], " in key: ").concat(t[0])), null) : o.translate.apply(o, r.concat([t]))
                                }), n)), n.interpolation && this.interpolator.reset()
                            }
                            var f = n.postProcess || this.options.postProcess,
                                p = "string" == typeof f ? [f] : f;
                            return null != e && p && p.length && !1 !== n.applyPostProcessor && (e = D.handle(p, e, t, this.options && this.options.postProcessPassResolved ? a({
                                i18nResolved: r
                            }, n) : n, this)), e
                        }
                    }, {
                        key: "resolve",
                        value: function(e) {
                            var t, n, r, i, o, a = this,
                                s = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
                            return "string" == typeof e && (e = [e]), e.forEach((function(e) {
                                if (!a.isValidLookup(t)) {
                                    var l = a.extractFromKey(e, s),
                                        u = l.key;
                                    n = u;
                                    var c = l.namespaces;
                                    a.options.fallbackNS && (c = c.concat(a.options.fallbackNS));
                                    var d = void 0 !== s.count && "string" != typeof s.count,
                                        f = void 0 !== s.context && ("string" == typeof s.context || "number" == typeof s.context) && "" !== s.context,
                                        p = s.lngs ? s.lngs : a.languageUtils.toResolveHierarchy(s.lng || a.language, s.fallbackLng);
                                    c.forEach((function(e) {
                                        a.isValidLookup(t) || (o = e, !_["".concat(p[0], "-").concat(e)] && a.utils && a.utils.hasLoadedNamespace && !a.utils.hasLoadedNamespace(o) && (_["".concat(p[0], "-").concat(e)] = !0, a.logger.warn('key "'.concat(n, '" for languages "').concat(p.join(", "), '" won\'t get resolved as namespace "').concat(o, '" was not yet loaded'), "This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")), p.forEach((function(n) {
                                            if (!a.isValidLookup(t)) {
                                                i = n;
                                                var o, l, c = u,
                                                    p = [c];
                                                if (a.i18nFormat && a.i18nFormat.addLookupKeys) a.i18nFormat.addLookupKeys(p, u, n, e, s);
                                                else d && (o = a.pluralResolver.getSuffix(n, s.count, s)), d && f && p.push(c + o), f && p.push(c += "".concat(a.options.contextSeparator).concat(s.context)), d && p.push(c += o);
                                                for (; l = p.pop();) a.isValidLookup(t) || (r = l, t = a.getResource(n, e, l, s))
                                            }
                                        })))
                                    }))
                                }
                            })), {
                                res: t,
                                usedKey: n,
                                exactUsedKey: r,
                                usedLng: i,
                                usedNS: o
                            }
                        }
                    }, {
                        key: "isValidLookup",
                        value: function(e) {
                            return !(void 0 === e || !this.options.returnNull && null === e || !this.options.returnEmptyString && "" === e)
                        }
                    }, {
                        key: "getResource",
                        value: function(e, t, n) {
                            var r = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : {};
                            return this.i18nFormat && this.i18nFormat.getResource ? this.i18nFormat.getResource(e, t, n, r) : this.resourceStore.getResource(e, t, n, r)
                        }
                    }], [{
                        key: "hasDefaultValue",
                        value: function(e) {
                            for (var t in e)
                                if (Object.prototype.hasOwnProperty.call(e, t) && "defaultValue" === t.substring(0, "defaultValue".length) && void 0 !== e[t]) return !0;
                            return !1
                        }
                    }]), t
                }(m);

            function R(e) {
                return e.charAt(0).toUpperCase() + e.slice(1)
            }
            var M = function() {
                    function e(t) {
                        s(this, e), this.options = t, this.supportedLngs = this.options.supportedLngs || !1, this.logger = v.create("languageUtils")
                    }
                    return u(e, [{
                        key: "getScriptPartFromCode",
                        value: function(e) {
                            if (!e || e.indexOf("-") < 0) return null;
                            var t = e.split("-");
                            return 2 === t.length ? null : (t.pop(), "x" === t[t.length - 1].toLowerCase() ? null : this.formatLanguageCode(t.join("-")))
                        }
                    }, {
                        key: "getLanguagePartFromCode",
                        value: function(e) {
                            if (!e || e.indexOf("-") < 0) return e;
                            var t = e.split("-");
                            return this.formatLanguageCode(t[0])
                        }
                    }, {
                        key: "formatLanguageCode",
                        value: function(e) {
                            if ("string" == typeof e && e.indexOf("-") > -1) {
                                var t = ["hans", "hant", "latn", "cyrl", "cans", "mong", "arab"],
                                    n = e.split("-");
                                return this.options.lowerCaseLng ? n = n.map((function(e) {
                                    return e.toLowerCase()
                                })) : 2 === n.length ? (n[0] = n[0].toLowerCase(), n[1] = n[1].toUpperCase(), t.indexOf(n[1].toLowerCase()) > -1 && (n[1] = R(n[1].toLowerCase()))) : 3 === n.length && (n[0] = n[0].toLowerCase(), 2 === n[1].length && (n[1] = n[1].toUpperCase()), "sgn" !== n[0] && 2 === n[2].length && (n[2] = n[2].toUpperCase()), t.indexOf(n[1].toLowerCase()) > -1 && (n[1] = R(n[1].toLowerCase())), t.indexOf(n[2].toLowerCase()) > -1 && (n[2] = R(n[2].toLowerCase()))), n.join("-")
                            }
                            return this.options.cleanCode || this.options.lowerCaseLng ? e.toLowerCase() : e
                        }
                    }, {
                        key: "isSupportedCode",
                        value: function(e) {
                            return ("languageOnly" === this.options.load || this.options.nonExplicitSupportedLngs) && (e = this.getLanguagePartFromCode(e)), !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.indexOf(e) > -1
                        }
                    }, {
                        key: "getBestMatchFromCodes",
                        value: function(e) {
                            var t, n = this;
                            return e ? (e.forEach((function(e) {
                                if (!t) {
                                    var r = n.formatLanguageCode(e);
                                    n.options.supportedLngs && !n.isSupportedCode(r) || (t = r)
                                }
                            })), !t && this.options.supportedLngs && e.forEach((function(e) {
                                if (!t) {
                                    var r = n.getLanguagePartFromCode(e);
                                    if (n.isSupportedCode(r)) return t = r;
                                    t = n.options.supportedLngs.find((function(e) {
                                        if (0 === e.indexOf(r)) return e
                                    }))
                                }
                            })), t || (t = this.getFallbackCodes(this.options.fallbackLng)[0]), t) : null
                        }
                    }, {
                        key: "getFallbackCodes",
                        value: function(e, t) {
                            if (!e) return [];
                            if ("function" == typeof e && (e = e(t)), "string" == typeof e && (e = [e]), "[object Array]" === Object.prototype.toString.apply(e)) return e;
                            if (!t) return e.default || [];
                            var n = e[t];
                            return n || (n = e[this.getScriptPartFromCode(t)]), n || (n = e[this.formatLanguageCode(t)]), n || (n = e[this.getLanguagePartFromCode(t)]), n || (n = e.default), n || []
                        }
                    }, {
                        key: "toResolveHierarchy",
                        value: function(e, t) {
                            var n = this,
                                r = this.getFallbackCodes(t || this.options.fallbackLng || [], e),
                                i = [],
                                o = function(e) {
                                    e && (n.isSupportedCode(e) ? i.push(e) : n.logger.warn("rejecting language code not found in supportedLngs: ".concat(e)))
                                };
                            return "string" == typeof e && e.indexOf("-") > -1 ? ("languageOnly" !== this.options.load && o(this.formatLanguageCode(e)), "languageOnly" !== this.options.load && "currentOnly" !== this.options.load && o(this.getScriptPartFromCode(e)), "currentOnly" !== this.options.load && o(this.getLanguagePartFromCode(e))) : "string" == typeof e && o(this.formatLanguageCode(e)), r.forEach((function(e) {
                                i.indexOf(e) < 0 && o(n.formatLanguageCode(e))
                            })), i
                        }
                    }]), e
                }(),
                H = [{
                    lngs: ["ach", "ak", "am", "arn", "br", "fil", "gun", "ln", "mfe", "mg", "mi", "oc", "pt", "pt-BR", "tg", "tl", "ti", "tr", "uz", "wa"],
                    nr: [1, 2],
                    fc: 1
                }, {
                    lngs: ["af", "an", "ast", "az", "bg", "bn", "ca", "da", "de", "dev", "el", "en", "eo", "es", "et", "eu", "fi", "fo", "fur", "fy", "gl", "gu", "ha", "hi", "hu", "hy", "ia", "it", "kk", "kn", "ku", "lb", "mai", "ml", "mn", "mr", "nah", "nap", "nb", "ne", "nl", "nn", "no", "nso", "pa", "pap", "pms", "ps", "pt-PT", "rm", "sco", "se", "si", "so", "son", "sq", "sv", "sw", "ta", "te", "tk", "ur", "yo"],
                    nr: [1, 2],
                    fc: 2
                }, {
                    lngs: ["ay", "bo", "cgg", "fa", "ht", "id", "ja", "jbo", "ka", "km", "ko", "ky", "lo", "ms", "sah", "su", "th", "tt", "ug", "vi", "wo", "zh"],
                    nr: [1],
                    fc: 3
                }, {
                    lngs: ["be", "bs", "cnr", "dz", "hr", "ru", "sr", "uk"],
                    nr: [1, 2, 5],
                    fc: 4
                }, {
                    lngs: ["ar"],
                    nr: [0, 1, 2, 3, 11, 100],
                    fc: 5
                }, {
                    lngs: ["cs", "sk"],
                    nr: [1, 2, 5],
                    fc: 6
                }, {
                    lngs: ["csb", "pl"],
                    nr: [1, 2, 5],
                    fc: 7
                }, {
                    lngs: ["cy"],
                    nr: [1, 2, 3, 8],
                    fc: 8
                }, {
                    lngs: ["fr"],
                    nr: [1, 2],
                    fc: 9
                }, {
                    lngs: ["ga"],
                    nr: [1, 2, 3, 7, 11],
                    fc: 10
                }, {
                    lngs: ["gd"],
                    nr: [1, 2, 3, 20],
                    fc: 11
                }, {
                    lngs: ["is"],
                    nr: [1, 2],
                    fc: 12
                }, {
                    lngs: ["jv"],
                    nr: [0, 1],
                    fc: 13
                }, {
                    lngs: ["kw"],
                    nr: [1, 2, 3, 4],
                    fc: 14
                }, {
                    lngs: ["lt"],
                    nr: [1, 2, 10],
                    fc: 15
                }, {
                    lngs: ["lv"],
                    nr: [1, 2, 0],
                    fc: 16
                }, {
                    lngs: ["mk"],
                    nr: [1, 2],
                    fc: 17
                }, {
                    lngs: ["mnk"],
                    nr: [0, 1, 2],
                    fc: 18
                }, {
                    lngs: ["mt"],
                    nr: [1, 2, 11, 20],
                    fc: 19
                }, {
                    lngs: ["or"],
                    nr: [2, 1],
                    fc: 2
                }, {
                    lngs: ["ro"],
                    nr: [1, 2, 20],
                    fc: 20
                }, {
                    lngs: ["sl"],
                    nr: [5, 1, 2, 3],
                    fc: 21
                }, {
                    lngs: ["he", "iw"],
                    nr: [1, 2, 20, 21],
                    fc: 22
                }],
                B = {
                    1: function(e) {
                        return Number(e > 1)
                    },
                    2: function(e) {
                        return Number(1 != e)
                    },
                    3: function(e) {
                        return 0
                    },
                    4: function(e) {
                        return Number(e % 10 == 1 && e % 100 != 11 ? 0 : e % 10 >= 2 && e % 10 <= 4 && (e % 100 < 10 || e % 100 >= 20) ? 1 : 2)
                    },
                    5: function(e) {
                        return Number(0 == e ? 0 : 1 == e ? 1 : 2 == e ? 2 : e % 100 >= 3 && e % 100 <= 10 ? 3 : e % 100 >= 11 ? 4 : 5)
                    },
                    6: function(e) {
                        return Number(1 == e ? 0 : e >= 2 && e <= 4 ? 1 : 2)
                    },
                    7: function(e) {
                        return Number(1 == e ? 0 : e % 10 >= 2 && e % 10 <= 4 && (e % 100 < 10 || e % 100 >= 20) ? 1 : 2)
                    },
                    8: function(e) {
                        return Number(1 == e ? 0 : 2 == e ? 1 : 8 != e && 11 != e ? 2 : 3)
                    },
                    9: function(e) {
                        return Number(e >= 2)
                    },
                    10: function(e) {
                        return Number(1 == e ? 0 : 2 == e ? 1 : e < 7 ? 2 : e < 11 ? 3 : 4)
                    },
                    11: function(e) {
                        return Number(1 == e || 11 == e ? 0 : 2 == e || 12 == e ? 1 : e > 2 && e < 20 ? 2 : 3)
                    },
                    12: function(e) {
                        return Number(e % 10 != 1 || e % 100 == 11)
                    },
                    13: function(e) {
                        return Number(0 !== e)
                    },
                    14: function(e) {
                        return Number(1 == e ? 0 : 2 == e ? 1 : 3 == e ? 2 : 3)
                    },
                    15: function(e) {
                        return Number(e % 10 == 1 && e % 100 != 11 ? 0 : e % 10 >= 2 && (e % 100 < 10 || e % 100 >= 20) ? 1 : 2)
                    },
                    16: function(e) {
                        return Number(e % 10 == 1 && e % 100 != 11 ? 0 : 0 !== e ? 1 : 2)
                    },
                    17: function(e) {
                        return Number(1 == e || e % 10 == 1 && e % 100 != 11 ? 0 : 1)
                    },
                    18: function(e) {
                        return Number(0 == e ? 0 : 1 == e ? 1 : 2)
                    },
                    19: function(e) {
                        return Number(1 == e ? 0 : 0 == e || e % 100 > 1 && e % 100 < 11 ? 1 : e % 100 > 10 && e % 100 < 20 ? 2 : 3)
                    },
                    20: function(e) {
                        return Number(1 == e ? 0 : 0 == e || e % 100 > 0 && e % 100 < 20 ? 1 : 2)
                    },
                    21: function(e) {
                        return Number(e % 100 == 1 ? 1 : e % 100 == 2 ? 2 : e % 100 == 3 || e % 100 == 4 ? 3 : 0)
                    },
                    22: function(e) {
                        return Number(1 == e ? 0 : 2 == e ? 1 : (e < 0 || e > 10) && e % 10 == 0 ? 2 : 3)
                    }
                },
                I = ["v1", "v2", "v3"],
                $ = {
                    zero: 0,
                    one: 1,
                    two: 2,
                    few: 3,
                    many: 4,
                    other: 5
                };

            function q() {
                var e = {};
                return H.forEach((function(t) {
                    t.lngs.forEach((function(n) {
                        e[n] = {
                            numbers: t.nr,
                            plurals: B[t.fc]
                        }
                    }))
                })), e
            }
            var W = function() {
                    function e(t) {
                        var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
                        s(this, e), this.languageUtils = t, this.options = n, this.logger = v.create("pluralResolver"), this.rules = q()
                    }
                    return u(e, [{
                        key: "addRule",
                        value: function(e, t) {
                            this.rules[e] = t
                        }
                    }, {
                        key: "getRule",
                        value: function(e) {
                            var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
                            if (this.shouldUseIntlApi()) try {
                                return new Intl.PluralRules(e, {
                                    type: t.ordinal ? "ordinal" : "cardinal"
                                })
                            } catch (e) {
                                return
                            }
                            return this.rules[e] || this.rules[this.languageUtils.getLanguagePartFromCode(e)]
                        }
                    }, {
                        key: "needsPlural",
                        value: function(e) {
                            var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
                                n = this.getRule(e, t);
                            return this.shouldUseIntlApi() ? n && n.resolvedOptions().pluralCategories.length > 1 : n && n.numbers.length > 1
                        }
                    }, {
                        key: "getPluralFormsOfKey",
                        value: function(e, t) {
                            var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
                            return this.getSuffixes(e, n).map((function(e) {
                                return "".concat(t).concat(e)
                            }))
                        }
                    }, {
                        key: "getSuffixes",
                        value: function(e) {
                            var t = this,
                                n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
                                r = this.getRule(e, n);
                            return r ? this.shouldUseIntlApi() ? r.resolvedOptions().pluralCategories.sort((function(e, t) {
                                return $[e] - $[t]
                            })).map((function(e) {
                                return "".concat(t.options.prepend).concat(e)
                            })) : r.numbers.map((function(r) {
                                return t.getSuffix(e, r, n)
                            })) : []
                        }
                    }, {
                        key: "getSuffix",
                        value: function(e, t) {
                            var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
                                r = this.getRule(e, n);
                            return r ? this.shouldUseIntlApi() ? "".concat(this.options.prepend).concat(r.select(t)) : this.getSuffixRetroCompatible(r, t) : (this.logger.warn("no plural rule found for: ".concat(e)), "")
                        }
                    }, {
                        key: "getSuffixRetroCompatible",
                        value: function(e, t) {
                            var n = this,
                                r = e.noAbs ? e.plurals(t) : e.plurals(Math.abs(t)),
                                i = e.numbers[r];
                            this.options.simplifyPluralSuffix && 2 === e.numbers.length && 1 === e.numbers[0] && (2 === i ? i = "plural" : 1 === i && (i = ""));
                            var o = function() {
                                return n.options.prepend && i.toString() ? n.options.prepend + i.toString() : i.toString()
                            };
                            return "v1" === this.options.compatibilityJSON ? 1 === i ? "" : "number" == typeof i ? "_plural_".concat(i.toString()) : o() : "v2" === this.options.compatibilityJSON || this.options.simplifyPluralSuffix && 2 === e.numbers.length && 1 === e.numbers[0] ? o() : this.options.prepend && r.toString() ? this.options.prepend + r.toString() : r.toString()
                        }
                    }, {
                        key: "shouldUseIntlApi",
                        value: function() {
                            return !I.includes(this.options.compatibilityJSON)
                        }
                    }]), e
                }(),
                z = function() {
                    function e() {
                        var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
                        s(this, e), this.logger = v.create("interpolator"), this.options = t, this.format = t.interpolation && t.interpolation.format || function(e) {
                            return e
                        }, this.init(t)
                    }
                    return u(e, [{
                        key: "init",
                        value: function() {
                            var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
                            e.interpolation || (e.interpolation = {
                                escapeValue: !0
                            });
                            var t = e.interpolation;
                            this.escape = void 0 !== t.escape ? t.escape : E, this.escapeValue = void 0 === t.escapeValue || t.escapeValue, this.useRawValueToEscape = void 0 !== t.useRawValueToEscape && t.useRawValueToEscape, this.prefix = t.prefix ? C(t.prefix) : t.prefixEscaped || "{{", this.suffix = t.suffix ? C(t.suffix) : t.suffixEscaped || "}}", this.formatSeparator = t.formatSeparator ? t.formatSeparator : t.formatSeparator || ",", this.unescapePrefix = t.unescapeSuffix ? "" : t.unescapePrefix || "-", this.unescapeSuffix = this.unescapePrefix ? "" : t.unescapeSuffix || "", this.nestingPrefix = t.nestingPrefix ? C(t.nestingPrefix) : t.nestingPrefixEscaped || C("$t("),
                                this.nestingSuffix = t.nestingSuffix ? C(t.nestingSuffix) : t.nestingSuffixEscaped || C(")"), this.nestingOptionsSeparator = t.nestingOptionsSeparator ? t.nestingOptionsSeparator : t.nestingOptionsSeparator || ",", this.maxReplaces = t.maxReplaces ? t.maxReplaces : 1e3, this.alwaysFormat = void 0 !== t.alwaysFormat && t.alwaysFormat, this.resetRegExp()
                        }
                    }, {
                        key: "reset",
                        value: function() {
                            this.options && this.init(this.options)
                        }
                    }, {
                        key: "resetRegExp",
                        value: function() {
                            var e = "".concat(this.prefix, "(.+?)").concat(this.suffix);
                            this.regexp = new RegExp(e, "g");
                            var t = "".concat(this.prefix).concat(this.unescapePrefix, "(.+?)").concat(this.unescapeSuffix).concat(this.suffix);
                            this.regexpUnescape = new RegExp(t, "g");
                            var n = "".concat(this.nestingPrefix, "(.+?)").concat(this.nestingSuffix);
                            this.nestingRegexp = new RegExp(n, "g")
                        }
                    }, {
                        key: "interpolate",
                        value: function(e, t, n, r) {
                            var i, o, s, l = this,
                                u = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};

                            function c(e) {
                                return e.replace(/\$/g, "$$$$")
                            }
                            var d = function(e) {
                                if (e.indexOf(l.formatSeparator) < 0) {
                                    var i = N(t, u, e);
                                    return l.alwaysFormat ? l.format(i, void 0, n, a({}, r, t, {
                                        interpolationkey: e
                                    })) : i
                                }
                                var o = e.split(l.formatSeparator),
                                    s = o.shift().trim(),
                                    c = o.join(l.formatSeparator).trim();
                                return l.format(N(t, u, s), c, n, a({}, r, t, {
                                    interpolationkey: s
                                }))
                            };
                            this.resetRegExp();
                            var f = r && r.missingInterpolationHandler || this.options.missingInterpolationHandler,
                                p = r && r.interpolation && r.interpolation.skipOnVariables || this.options.interpolation.skipOnVariables;
                            return [{
                                regex: this.regexpUnescape,
                                safeValue: function(e) {
                                    return c(e)
                                }
                            }, {
                                regex: this.regexp,
                                safeValue: function(e) {
                                    return l.escapeValue ? c(l.escape(e)) : c(e)
                                }
                            }].forEach((function(t) {
                                for (s = 0; i = t.regex.exec(e);) {
                                    if (void 0 === (o = d(i[1].trim())))
                                        if ("function" == typeof f) {
                                            var n = f(e, i, r);
                                            o = "string" == typeof n ? n : ""
                                        } else {
                                            if (p) {
                                                o = i[0];
                                                continue
                                            }
                                            l.logger.warn("missed to pass in variable ".concat(i[1], " for interpolating ").concat(e)), o = ""
                                        }
                                    else "string" == typeof o || l.useRawValueToEscape || (o = b(o));
                                    var a = t.safeValue(o);
                                    if (e = e.replace(i[0], a), p ? (t.regex.lastIndex += a.length, t.regex.lastIndex -= i[0].length) : t.regex.lastIndex = 0, ++s >= l.maxReplaces) break
                                }
                            })), e
                        }
                    }, {
                        key: "nest",
                        value: function(e, t) {
                            var n, r, i = this,
                                o = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
                                s = a({}, o);

                            function l(e, t) {
                                var n = this.nestingOptionsSeparator;
                                if (e.indexOf(n) < 0) return e;
                                var r = e.split(new RegExp("".concat(n, "[ ]*{"))),
                                    i = "{".concat(r[1]);
                                e = r[0], i = (i = this.interpolate(i, s)).replace(/'/g, '"');
                                try {
                                    s = JSON.parse(i), t && (s = a({}, t, s))
                                } catch (t) {
                                    return this.logger.warn("failed parsing options string in nesting for key ".concat(e), t), "".concat(e).concat(n).concat(i)
                                }
                                return delete s.defaultValue, e
                            }
                            for (s.applyPostProcessor = !1, delete s.defaultValue; n = this.nestingRegexp.exec(e);) {
                                var u = [],
                                    c = !1;
                                if (-1 !== n[0].indexOf(this.formatSeparator) && !/{.*}/.test(n[1])) {
                                    var d = n[1].split(this.formatSeparator).map((function(e) {
                                        return e.trim()
                                    }));
                                    n[1] = d.shift(), u = d, c = !0
                                }
                                if ((r = t(l.call(this, n[1].trim(), s), s)) && n[0] === e && "string" != typeof r) return r;
                                "string" != typeof r && (r = b(r)), r || (this.logger.warn("missed to resolve ".concat(n[1], " for nesting ").concat(e)),
                                    r = ""), c && (r = u.reduce((function(e, t) {
                                    return i.format(e, t, o.lng, a({}, o, {
                                        interpolationkey: n[1].trim()
                                    }))
                                }), r.trim())), e = e.replace(n[0], r), this.regexp.lastIndex = 0
                            }
                            return e
                        }
                    }]), e
                }();
            var V = function(e) {
                function t(e, n, r) {
                    var i, o = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : {};
                    return s(this, t), i = d(this, f(t).call(this)), O && m.call(c(i)), i.backend = e, i.store = n, i.services = r, i.languageUtils = r.languageUtils, i.options = o, i.logger = v.create("backendConnector"), i.state = {}, i.queue = [], i.backend && i.backend.init && i.backend.init(r, o.backend, o), i
                }
                return h(t, e), u(t, [{
                    key: "queueLoad",
                    value: function(e, t, n, r) {
                        var i = this,
                            o = [],
                            a = [],
                            s = [],
                            l = [];
                        return e.forEach((function(e) {
                            var r = !0;
                            t.forEach((function(t) {
                                var s = "".concat(e, "|").concat(t);
                                !n.reload && i.store.hasResourceBundle(e, t) ? i.state[s] = 2 : i.state[s] < 0 || (1 === i.state[s] ? a.indexOf(s) < 0 && a.push(s) : (i.state[s] = 1, r = !1, a.indexOf(s) < 0 && a.push(s), o.indexOf(s) < 0 && o.push(s), l.indexOf(t) < 0 && l.push(t)))
                            })), r || s.push(e)
                        })), (o.length || a.length) && this.queue.push({
                            pending: a,
                            loaded: {},
                            errors: [],
                            callback: r
                        }), {
                            toLoad: o,
                            pending: a,
                            toLoadLanguages: s,
                            toLoadNamespaces: l
                        }
                    }
                }, {
                    key: "loaded",
                    value: function(e, t, n) {
                        var r = e.split("|"),
                            i = r[0],
                            o = r[1];
                        t && this.emit("failedLoading", i, o, t), n && this.store.addResourceBundle(i, o, n), this.state[e] = t ? -1 : 2;
                        var a = {};
                        this.queue.forEach((function(n) {
                            var r, s, l, u, c, d;
                            r = n.loaded, s = o, u = w(r, [i], Object), c = u.obj, d = u.k, c[d] = c[d] || [], l && (c[d] = c[d].concat(s)), l || c[d].push(s),
                                function(e, t) {
                                    for (var n = e.indexOf(t); - 1 !== n;) e.splice(n, 1), n = e.indexOf(t)
                                }(n.pending, e), t && n.errors.push(t), 0 !== n.pending.length || n.done || (Object.keys(n.loaded).forEach((function(e) {
                                    a[e] || (a[e] = []), n.loaded[e].length && n.loaded[e].forEach((function(t) {
                                        a[e].indexOf(t) < 0 && a[e].push(t)
                                    }))
                                })), n.done = !0, n.errors.length ? n.callback(n.errors) : n.callback())
                        })), this.emit("loaded", a), this.queue = this.queue.filter((function(e) {
                            return !e.done
                        }))
                    }
                }, {
                    key: "read",
                    value: function(e, t, n) {
                        var r = this,
                            i = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 0,
                            o = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : 350,
                            a = arguments.length > 5 ? arguments[5] : void 0;
                        return e.length ? this.backend[n](e, t, (function(s, l) {
                            s && l && i < 5 ? setTimeout((function() {
                                r.read.call(r, e, t, n, i + 1, 2 * o, a)
                            }), o) : a(s, l)
                        })) : a(null, {})
                    }
                }, {
                    key: "prepareLoading",
                    value: function(e, t) {
                        var n = this,
                            r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
                            i = arguments.length > 3 ? arguments[3] : void 0;
                        if (!this.backend) return this.logger.warn("No backend was added via i18next.use. Will not load resources."), i && i();
                        "string" == typeof e && (e = this.languageUtils.toResolveHierarchy(e)), "string" == typeof t && (t = [t]);
                        var o = this.queueLoad(e, t, r, i);
                        if (!o.toLoad.length) return o.pending.length || i(), null;
                        o.toLoad.forEach((function(e) {
                            n.loadOne(e)
                        }))
                    }
                }, {
                    key: "load",
                    value: function(e, t, n) {
                        this.prepareLoading(e, t, {}, n)
                    }
                }, {
                    key: "reload",
                    value: function(e, t, n) {
                        this.prepareLoading(e, t, {
                            reload: !0
                        }, n)
                    }
                }, {
                    key: "loadOne",
                    value: function(e) {
                        var t = this,
                            n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "",
                            r = e.split("|"),
                            i = r[0],
                            o = r[1];
                        this.read(i, o, "read", void 0, void 0, (function(r, a) {
                            r && t.logger.warn("".concat(n, "loading namespace ").concat(o, " for language ").concat(i, " failed"), r), !r && a && t.logger.log("".concat(n, "loaded namespace ").concat(o, " for language ").concat(i), a), t.loaded(e, r, a)
                        }))
                    }
                }, {
                    key: "saveMissing",
                    value: function(e, t, n, r, i) {
                        var o = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : {};
                        this.services.utils && this.services.utils.hasLoadedNamespace && !this.services.utils.hasLoadedNamespace(t) ? this.logger.warn('did not save key "'.concat(n, '" as the namespace "').concat(t, '" was not yet loaded'), "This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!") : null != n && "" !== n && (this.backend && this.backend.create && this.backend.create(e, t, n, r, null, a({}, o, {
                            isUpdate: i
                        })), e && e[0] && this.store.addResource(e[0], t, n, r))
                    }
                }]), t
            }(m);

            function U() {
                return {
                    debug: !1,
                    initImmediate: !0,
                    ns: ["translation"],
                    defaultNS: ["translation"],
                    fallbackLng: ["dev"],
                    fallbackNS: !1,
                    supportedLngs: !1,
                    nonExplicitSupportedLngs: !1,
                    load: "all",
                    preload: !1,
                    simplifyPluralSuffix: !0,
                    keySeparator: ".",
                    nsSeparator: ":",
                    pluralSeparator: "_",
                    contextSeparator: "_",
                    partialBundledLanguages: !1,
                    saveMissing: !1,
                    updateMissing: !1,
                    saveMissingTo: "fallback",
                    saveMissingPlurals: !0,
                    missingKeyHandler: !1,
                    missingInterpolationHandler: !1,
                    postProcess: !1,
                    postProcessPassResolved: !1,
                    returnNull: !0,
                    returnEmptyString: !0,
                    returnObjects: !1,
                    joinArrays: !1,
                    returnedObjectHandler: !1,
                    parseMissingKeyHandler: !1,
                    appendNamespaceToMissingKey: !1,
                    appendNamespaceToCIMode: !1,
                    overloadTranslationOptionHandler: function(e) {
                        var t = {};
                        if ("object" === i(e[1]) && (t = e[1]), "string" == typeof e[1] && (t.defaultValue = e[1]), "string" == typeof e[2] && (t.tDescription = e[2]), "object" === i(e[2]) || "object" === i(e[3])) {
                            var n = e[3] || e[2];
                            Object.keys(n).forEach((function(e) {
                                t[e] = n[e]
                            }))
                        }
                        return t
                    },
                    interpolation: {
                        escapeValue: !0,
                        format: function(e, t, n, r) {
                            return e
                        },
                        prefix: "{{",
                        suffix: "}}",
                        formatSeparator: ",",
                        unescapePrefix: "-",
                        nestingPrefix: "$t(",
                        nestingSuffix: ")",
                        nestingOptionsSeparator: ",",
                        maxReplaces: 1e3,
                        skipOnVariables: !0
                    }
                }
            }

            function X(e) {
                return "string" == typeof e.ns && (e.ns = [e.ns]), "string" == typeof e.fallbackLng && (e.fallbackLng = [e.fallbackLng]), "string" == typeof e.fallbackNS && (e.fallbackNS = [e.fallbackNS]), e.supportedLngs && e.supportedLngs.indexOf("cimode") < 0 && (e.supportedLngs = e.supportedLngs.concat(["cimode"])), e
            }

            function K() {}
            const J = new(function(e) {
                function t() {
                    var e, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
                        r = arguments.length > 1 ? arguments[1] : void 0;
                    if (s(this, t), e = d(this, f(t).call(this)), O && m.call(c(e)), e.options = X(n), e.services = {}, e.logger = v, e.modules = {
                            external: []
                        }, r && !e.isInitialized && !n.isClone) {
                        if (!e.options.initImmediate) return e.init(n, r), d(e, c(e));
                        setTimeout((function() {
                            e.init(n, r)
                        }), 0)
                    }
                    return e
                }
                return h(t, e), u(t, [{
                    key: "init",
                    value: function() {
                        var e = this,
                            t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
                            n = arguments.length > 1 ? arguments[1] : void 0;

                        function r(e) {
                            return e ? "function" == typeof e ? new e : e : null
                        }
                        if ("function" == typeof t && (n = t, t = {}), !t.defaultNS && t.ns && ("string" == typeof t.ns ? t.defaultNS = t.ns : t.defaultNS = t.ns[0]), this.options = a({}, U(), this.options, X(t)), this.format = this.options.interpolation.format, n || (n = K), !this.options.isClone) {
                            this.modules.logger ? v.init(r(this.modules.logger), this.options) : v.init(null, this.options);
                            var i = new M(this.options);
                            this.store = new F(this.options.resources, this.options);
                            var o = this.services;
                            o.logger = v, o.resourceStore = this.store, o.languageUtils = i, o.pluralResolver = new W(i, {
                                prepend: this.options.pluralSeparator,
                                compatibilityJSON: this.options.compatibilityJSON,
                                simplifyPluralSuffix: this.options.simplifyPluralSuffix
                            }), o.interpolator = new z(this.options), o.utils = {
                                hasLoadedNamespace: this.hasLoadedNamespace.bind(this)
                            }, o.backendConnector = new V(r(this.modules.backend), o.resourceStore, o, this.options), o.backendConnector.on("*", (function(t) {
                                for (var n = arguments.length, r = new Array(n > 1 ? n - 1 : 0), i = 1; i < n; i++) r[i - 1] = arguments[i];
                                e.emit.apply(e, [t].concat(r))
                            })), this.modules.languageDetector && (o.languageDetector = r(this.modules.languageDetector), o.languageDetector.init(o, this.options.detection, this.options)), this.modules.i18nFormat && (o.i18nFormat = r(this.modules.i18nFormat), o.i18nFormat.init && o.i18nFormat.init(this)), this.translator = new P(this.services, this.options), this.translator.on("*", (function(t) {
                                for (var n = arguments.length, r = new Array(n > 1 ? n - 1 : 0), i = 1; i < n; i++) r[i - 1] = arguments[i];
                                e.emit.apply(e, [t].concat(r))
                            })), this.modules.external.forEach((function(t) {
                                t.init && t.init(e)
                            }))
                        }
                        if (this.options.fallbackLng && !this.services.languageDetector && !this.options.lng) {
                            var s = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);
                            s.length > 0 && "dev" !== s[0] && (this.options.lng = s[0])
                        }
                        this.services.languageDetector || this.options.lng || this.logger.warn("init: no languageDetector is used and no lng is defined");
                        var l = ["getResource", "hasResourceBundle", "getResourceBundle", "getDataByLanguage"];
                        l.forEach((function(t) {
                            e[t] = function() {
                                var n;
                                return (n = e.store)[t].apply(n, arguments)
                            }
                        }));
                        var u = ["addResource", "addResources", "addResourceBundle", "removeResourceBundle"];
                        u.forEach((function(t) {
                            e[t] = function() {
                                var n;
                                return (n = e.store)[t].apply(n, arguments), e
                            }
                        }));
                        var c = y(),
                            d = function() {
                                var t = function(t, r) {
                                    e.isInitialized && !e.initializedStoreOnce && e.logger.warn("init: i18next is already initialized. You should call init just once!"), e.isInitialized = !0, e.options.isClone || e.logger.log("initialized", e.options), e.emit("initialized", e.options), c.resolve(r), n(t, r)
                                };
                                if (e.languages && "v1" !== e.options.compatibilityAPI && !e.isInitialized) return t(null, e.t.bind(e));
                                e.changeLanguage(e.options.lng, t)
                            };
                        return this.options.resources || !this.options.initImmediate ? d() : setTimeout(d, 0), c
                    }
                }, {
                    key: "loadResources",
                    value: function(e) {
                        var t = this,
                            n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : K,
                            r = n,
                            i = "string" == typeof e ? e : this.language;
                        if ("function" == typeof e && (r = e), !this.options.resources || this.options.partialBundledLanguages) {
                            if (i && "cimode" === i.toLowerCase()) return r();
                            var o = [],
                                a = function(e) {
                                    e && t.services.languageUtils.toResolveHierarchy(e).forEach((function(e) {
                                        o.indexOf(e) < 0 && o.push(e)
                                    }))
                                };
                            if (i) a(i);
                            else {
                                var s = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);
                                s.forEach((function(e) {
                                    return a(e)
                                }))
                            }
                            this.options.preload && this.options.preload.forEach((function(e) {
                                return a(e)
                            })), this.services.backendConnector.load(o, this.options.ns, r)
                        } else r(null)
                    }
                }, {
                    key: "reloadResources",
                    value: function(e, t, n) {
                        var r = y();
                        return e || (e = this.languages), t || (t = this.options.ns), n || (n = K), this.services.backendConnector.reload(e, t, (function(e) {
                            r.resolve(), n(e)
                        })), r
                    }
                }, {
                    key: "use",
                    value: function(e) {
                        if (!e) throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");
                        if (!e.type) throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");
                        return "backend" === e.type && (this.modules.backend = e), ("logger" === e.type || e.log && e.warn && e.error) && (this.modules.logger = e), "languageDetector" === e.type && (this.modules.languageDetector = e), "i18nFormat" === e.type && (this.modules.i18nFormat = e), "postProcessor" === e.type && D.addPostProcessor(e), "3rdParty" === e.type && this.modules.external.push(e), this
                    }
                }, {
                    key: "changeLanguage",
                    value: function(e, t) {
                        var n = this;
                        this.isLanguageChangingTo = e;
                        var r = y();
                        this.emit("languageChanging", e);
                        var i = function(e) {
                                if (n.language = e, n.languages = n.services.languageUtils.toResolveHierarchy(e), n.resolvedLanguage = void 0, !(["cimode", "dev"].indexOf(e) > -1))
                                    for (var t = 0; t < n.languages.length; t++) {
                                        var r = n.languages[t];
                                        if (!(["cimode", "dev"].indexOf(r) > -1) && n.store.hasLanguageSomeTranslations(r)) {
                                            n.resolvedLanguage = r;
                                            break
                                        }
                                    }
                            },
                            o = function(o) {
                                e || o || !n.services.languageDetector || (o = []);
                                var a = "string" == typeof o ? o : n.services.languageUtils.getBestMatchFromCodes(o);
                                a && (n.language || i(a), n.translator.language || n.translator.changeLanguage(a), n.services.languageDetector && n.services.languageDetector.cacheUserLanguage(a)), n.loadResources(a, (function(e) {
                                    ! function(e, o) {
                                        o ? (i(o), n.translator.changeLanguage(o), n.isLanguageChangingTo = void 0, n.emit("languageChanged", o), n.logger.log("languageChanged", o)) : n.isLanguageChangingTo = void 0, r.resolve((function() {
                                            return n.t.apply(n, arguments)
                                        })), t && t(e, (function() {
                                            return n.t.apply(n, arguments)
                                        }))
                                    }(e, a)
                                }))
                            };
                        return e || !this.services.languageDetector || this.services.languageDetector.async ? !e && this.services.languageDetector && this.services.languageDetector.async ? this.services.languageDetector.detect(o) : o(e) : o(this.services.languageDetector.detect()), r
                    }
                }, {
                    key: "getFixedT",
                    value: function(e, t, n) {
                        var r = this,
                            o = function e(t, o) {
                                var s;
                                if ("object" !== i(o)) {
                                    for (var l = arguments.length, u = new Array(l > 2 ? l - 2 : 0), c = 2; c < l; c++) u[c - 2] = arguments[c];
                                    s = r.options.overloadTranslationOptionHandler([t, o].concat(u))
                                } else s = a({}, o);
                                s.lng = s.lng || e.lng, s.lngs = s.lngs || e.lngs, s.ns = s.ns || e.ns;
                                var d = r.options.keySeparator || ".",
                                    f = n ? "".concat(n).concat(d).concat(t) : t;
                                return r.t(f, s)
                            };
                        return "string" == typeof e ? o.lng = e : o.lngs = e, o.ns = t, o.keyPrefix = n, o
                    }
                }, {
                    key: "t",
                    value: function() {
                        var e;
                        return this.translator && (e = this.translator).translate.apply(e, arguments)
                    }
                }, {
                    key: "exists",
                    value: function() {
                        var e;
                        return this.translator && (e = this.translator).exists.apply(e, arguments)
                    }
                }, {
                    key: "setDefaultNamespace",
                    value: function(e) {
                        this.options.defaultNS = e
                    }
                }, {
                    key: "hasLoadedNamespace",
                    value: function(e) {
                        var t = this,
                            n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
                        if (!this.isInitialized) return this.logger.warn("hasLoadedNamespace: i18next was not initialized", this.languages), !1;
                        if (!this.languages || !this.languages.length) return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty", this.languages), !1;
                        var r = this.resolvedLanguage || this.languages[0],
                            i = !!this.options && this.options.fallbackLng,
                            o = this.languages[this.languages.length - 1];
                        if ("cimode" === r.toLowerCase()) return !0;
                        var a = function(e, n) {
                            var r = t.services.backendConnector.state["".concat(e, "|").concat(n)];
                            return -1 === r || 2 === r
                        };
                        if (n.precheck) {
                            var s = n.precheck(this, a);
                            if (void 0 !== s) return s
                        }
                        return !!this.hasResourceBundle(r, e) || (!this.services.backendConnector.backend || !(!a(r, e) || i && !a(o, e)))
                    }
                }, {
                    key: "loadNamespaces",
                    value: function(e, t) {
                        var n = this,
                            r = y();
                        return this.options.ns ? ("string" == typeof e && (e = [e]), e.forEach((function(e) {
                            n.options.ns.indexOf(e) < 0 && n.options.ns.push(e)
                        })), this.loadResources((function(e) {
                            r.resolve(), t && t(e)
                        })), r) : (t && t(), Promise.resolve())
                    }
                }, {
                    key: "loadLanguages",
                    value: function(e, t) {
                        var n = y();
                        "string" == typeof e && (e = [e]);
                        var r = this.options.preload || [],
                            i = e.filter((function(e) {
                                return r.indexOf(e) < 0
                            }));
                        return i.length ? (this.options.preload = r.concat(i), this.loadResources((function(e) {
                            n.resolve(), t && t(e)
                        })), n) : (t && t(), Promise.resolve())
                    }
                }, {
                    key: "dir",
                    value: function(e) {
                        if (e || (e = this.resolvedLanguage || (this.languages && this.languages.length > 0 ? this.languages[0] : this.language)), !e) return "rtl";
                        return ["ar", "shu", "sqr", "ssh", "xaa", "yhd", "yud", "aao", "abh", "abv", "acm", "acq", "acw", "acx", "acy", "adf", "ads", "aeb", "aec", "afb", "ajp", "apc", "apd", "arb", "arq", "ars", "ary", "arz", "auz", "avl", "ayh", "ayl", "ayn", "ayp", "bbz", "pga", "he", "iw", "ps", "pbt", "pbu", "pst", "prp", "prd", "ug", "ur", "ydd", "yds", "yih", "ji", "yi", "hbo", "men", "xmn", "fa", "jpr", "peo", "pes", "prs", "dv", "sam"].indexOf(this.services.languageUtils.getLanguagePartFromCode(e)) >= 0 ? "rtl" : "ltr"
                    }
                }, {
                    key: "createInstance",
                    value: function() {
                        var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
                            n = arguments.length > 1 ? arguments[1] : void 0;
                        return new t(e, n)
                    }
                }, {
                    key: "cloneInstance",
                    value: function() {
                        var e = this,
                            n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
                            r = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : K,
                            i = a({}, this.options, n, {
                                isClone: !0
                            }),
                            o = new t(i),
                            s = ["store", "services", "language"];
                        return s.forEach((function(t) {
                            o[t] = e[t]
                        })), o.services = a({}, this.services), o.services.utils = {
                            hasLoadedNamespace: o.hasLoadedNamespace.bind(o)
                        }, o.translator = new P(o.services, o.options), o.translator.on("*", (function(e) {
                            for (var t = arguments.length, n = new Array(t > 1 ? t - 1 : 0), r = 1; r < t; r++) n[r - 1] = arguments[r];
                            o.emit.apply(o, [e].concat(n))
                        })), o.init(i, r), o.translator.options = o.options, o.translator.backendConnector.services.utils = {
                            hasLoadedNamespace: o.hasLoadedNamespace.bind(o)
                        }, o
                    }
                }, {
                    key: "toJSON",
                    value: function() {
                        return {
                            options: this.options,
                            store: this.store,
                            language: this.language,
                            languages: this.languages,
                            resolvedLanguage: this.resolvedLanguage
                        }
                    }
                }]), t
            }(m));
            var Y = n(48370);
            let G = r.translationFunction;
            const Z = window;
            if (!Z.__tradingviewI18nextInited) {
                let e = window.language || null,
                    t = ee(e);
                e && t || (console.error("No translation data"), e = "en", t = ee("en"));
                const n = (0, Y.getIsoLanguageCodeFromLanguage)(e);
                if (e && t) {
                    const e = {
                        compatibilityJSON: "v3",
                        interpolation: {
                            escapeValue: !1,
                            prefix: "{",
                            suffix: "}",
                            skipOnVariables: !0,
                            maxReplaces: 25
                        },
                        keySeparator: ":::",
                        lng: n,
                        nsSeparator: ":::",
                        resources: {
                            [n]: {
                                translation: t
                            }
                        }
                    };
                    J.init(e), G = J.t.bind(J);
                    window;
                    0, (0, r.addTranslationFunctionToWindow)(G), (0, r.addTranslationFunctionToJQuery)(G)
                }
                Z.__tradingviewI18nextInited = !0
            }

            function Q(e, t) {
                return G(e, t)
            }

            function ee(e) {
                return e && Z._tv_languages && Z._tv_languages[e] || null
            }
        },
        48370: (e, t, n) => {
            "use strict";
            n.d(t, {
                getIsoLanguageCodeFromLanguage: () => i
            });
            const r = {
                ar_AE: "ar",
                br: "pt",
                de_DE: "de",
                he_IL: "he",
                id_ID: "id",
                in: "en",
                kr: "ko",
                ms_MY: "ms",
                sv_SE: "sv",
                th_TH: "th",
                uk: "en",
                vi_VN: "vi",
                zh_CN: "zh-Hans",
                zh_TW: "zh-Hant",
                zh: "zh-Hans"
            };

            function i(e) {
                return r[e] || e
            }
        },
        84534: (e, t, n) => {
            "use strict";
            n.r(t), n.d(t, {
                t: () => r.translationFunction
            });
            var r = n(9792);
            (0, r.addTranslationFunctionToWindow)(r.translationFunction), (0, r.addTranslationFunctionToJQuery)(r.translationFunction)
        }
    }
]);