Find this useful? Enter your email to receive occasional updates for securing PHP code.

Signing you up...

Thank you for signing up!

PHP Decode

(function(e, t) { function _(e) { var t = M[e] = {}; return v.each(..

Decoded Output download

<?  (function(e, t) { 
    function _(e) { 
        var t = M[e] = {}; 
        return v.each(e.split(y), function(e, n) { 
            t[n] = !0 
        }), 
        t 
    } 
    function H(e, n, r) { 
        if (r === t && e.nodeType === 1) { 
            var i = "data-" + n.replace(P, "-$1").toLowerCase(); 
            r = e.getAttribute(i); 
            if (typeof r == "string") { 
                try { 
                    r = r === "true" ? !0 : r === "false" ? !1 : r === "null" ? null : +r + "" === r ? +r : D.test(r) ? v.parseJSON(r) : r 
                } catch (s) {} 
                v.data(e, n, r) 
            } else 
                r = t 
        } 
        return r 
    } 
    function B(e) { 
        var t; 
        for (t in e) { 
            if (t === "data" && v.isEmptyObject(e[t])) 
                continue; 
            if (t !== "toJSON") 
                return !1 
        } 
        return !0 
    } 
    function et() { 
        return !1 
    } 
    function tt() { 
        return !0 
    } 
    function ut(e) { 
        return !e || !e.parentNode || e.parentNode.nodeType === 11 
    } 
    function at(e, t) { 
        do 
            e = e[t]; 
        while (e && e.nodeType !== 1); 
        return e 
    } 
    function ft(e, t, n) { 
        t = t || 0; 
        if (v.isFunction(t)) 
            return v.grep(e, function(e, r) { 
                var i = !!t.call(e, r, e); 
                return i === n 
            }); 
        if (t.nodeType) 
            return v.grep(e, function(e, r) { 
                return e === t === n 
            }); 
        if (typeof t == "string") { 
            var r = v.grep(e, function(e) { 
                return e.nodeType === 1 
            }); 
            if (it.test(t)) 
                return v.filter(t, r, !n); 
            t = v.filter(t, r) 
        } 
        return v.grep(e, function(e, r) { 
            return v.inArray(e, t) >= 0 === n 
        }) 
    } 
    function lt(e) { 
        var t = ct.split("|") 
          , n = e.createDocumentFragment(); 
        if (n.createElement) 
            while (t.length) 
                n.createElement(t.pop()); 
        return n 
    } 
    function Lt(e, t) { 
        return e.getElementsByTagName(t)[0] || e.appendChild(e.ownerDocument.createElement(t)) 
    } 
    function At(e, t) { 
        if (t.nodeType !== 1 || !v.hasData(e)) 
            return; 
        var n, r, i, s = v._data(e), o = v._data(t, s), u = s.events; 
        if (u) { 
            delete o.handle, 
            o.events = {}; 
            for (n in u) 
                for (r = 0, 
                i = u[n].length; r < i; r++) 
                    v.event.add(t, n, u[n][r]) 
        } 
        o.data && (o.data = v.extend({}, o.data)) 
    } 
    function Ot(e, t) { 
        var n; 
        if (t.nodeType !== 1) 
            return; 
        t.clearAttributes && t.clearAttributes(), 
        t.mergeAttributes && t.mergeAttributes(e), 
        n = t.nodeName.toLowerCase(), 
        n === "object" ? (t.parentNode && (t.outerHTML = e.outerHTML), 
        v.support.html5Clone && e.innerHTML && !v.trim(t.innerHTML) && (t.innerHTML = e.innerHTML)) : n === "input" && Et.test(e.type) ? (t.defaultChecked = t.checked = e.checked, 
        t.value !== e.value && (t.value = e.value)) : n === "option" ? t.selected = e.defaultSelected : n === "input" || n === "textarea" ? t.defaultValue = e.defaultValue : n === "script" && t.text !== e.text && (t.text = e.text), 
        t.removeAttribute(v.expando) 
    } 
    function Mt(e) { 
        return typeof e.getElementsByTagName != "undefined" ? e.getElementsByTagName("*") : typeof e.querySelectorAll != "undefined" ? e.querySelectorAll("*") : [] 
    } 
    function _t(e) { 
        Et.test(e.type) && (e.defaultChecked = e.checked) 
    } 
    function Qt(e, t) { 
        if (t in e) 
            return t; 
        var n = t.charAt(0).toUpperCase() + t.slice(1) 
          , r = t 
          , i = Jt.length; 
        while (i--) { 
            t = Jt[i] + n; 
            if (t in e) 
                return t 
        } 
        return r 
    } 
    function Gt(e, t) { 
        return e = t || e, 
        v.css(e, "display") === "none" || !v.contains(e.ownerDocument, e) 
    } 
    function Yt(e, t) { 
        var n, r, i = [], s = 0, o = e.length; 
        for (; s < o; s++) { 
            n = e[s]; 
            if (!n.style) 
                continue; 
            i[s] = v._data(n, "olddisplay"), 
            t ? (!i[s] && n.style.display === "none" && (n.style.display = ""), 
            n.style.display === "" && Gt(n) && (i[s] = v._data(n, "olddisplay", nn(n.nodeName)))) : (r = Dt(n, "display"), 
            !i[s] && r !== "none" && v._data(n, "olddisplay", r)) 
        } 
        for (s = 0; s < o; s++) { 
            n = e[s]; 
            if (!n.style) 
                continue; 
            if (!t || n.style.display === "none" || n.style.display === "") 
                n.style.display = t ? i[s] || "" : "none" 
        } 
        return e 
    } 
    function Zt(e, t, n) { 
        var r = Rt.exec(t); 
        return r ? Math.max(0, r[1] - (n || 0)) + (r[2] || "px") : t 
    } 
    function en(e, t, n, r) { 
        var i = n === (r ? "border" : "content") ? 4 : t === "width" ? 1 : 0 
          , s = 0; 
        for (; i < 4; i += 2) 
            n === "margin" && (s += v.css(e, n + $t[i], !0)), 
            r ? (n === "content" && (s -= parseFloat(Dt(e, "padding" + $t[i])) || 0), 
            n !== "margin" && (s -= parseFloat(Dt(e, "border" + $t[i] + "Width")) || 0)) : (s += parseFloat(Dt(e, "padding" + $t[i])) || 0, 
            n !== "padding" && (s += parseFloat(Dt(e, "border" + $t[i] + "Width")) || 0)); 
        return s 
    } 
    function tn(e, t, n) { 
        var r = t === "width" ? e.offsetWidth : e.offsetHeight 
          , i = !0 
          , s = v.support.boxSizing && v.css(e, "boxSizing") === "border-box"; 
        if (r <= 0 || r == null) { 
            r = Dt(e, t); 
            if (r < 0 || r == null) 
                r = e.style[t]; 
            if (Ut.test(r)) 
                return r; 
            i = s && (v.support.boxSizingReliable || r === e.style[t]), 
            r = parseFloat(r) || 0 
        } 
        return r + en(e, t, n || (s ? "border" : "content"), i) + "px" 
    } 
    function nn(e) { 
        if (Wt[e]) 
            return Wt[e]; 
        var t = v("<" + e + ">").appendTo(i.body) 
          , n = t.css("display"); 
        t.remove(); 
        if (n === "none" || n === "") { 
            Pt = i.body.appendChild(Pt || v.extend(i.createElement("iframe"), { 
                frameBorder: 0, 
                width: 0, 
                height: 0 
            })); 
            if (!Ht || !Pt.createElement) 
                Ht = (Pt.contentWindow || Pt.contentDocument).document, 
                Ht.write("<!doctype html><html><body>"), 
                Ht.close(); 
            t = Ht.body.appendChild(Ht.createElement(e)), 
            n = Dt(t, "display"), 
            i.body.removeChild(Pt) 
        } 
        return Wt[e] = n, 
        n 
    } 
    function fn(e, t, n, r) { 
        var i; 
        if (v.isArray(t)) 
            v.each(t, function(t, i) { 
                n || sn.test(e) ? r(e, i) : fn(e + "[" + (typeof i == "object" ? t : "") + "]", i, n, r) 
            }); 
        else if (!n && v.type(t) === "object") 
            for (i in t) 
                fn(e + "[" + i + "]", t[i], n, r); 
        else 
            r(e, t) 
    } 
    function Cn(e) { 
        return function(t, n) { 
            typeof t != "string" && (n = t, 
            t = "*"); 
            var r, i, s, o = t.toLowerCase().split(y), u = 0, a = o.length; 
            if (v.isFunction(n)) 
                for (; u < a; u++) 
                    r = o[u], 
                    s = /^\+/.test(r), 
                    s && (r = r.substr(1) || "*"), 
                    i = e[r] = e[r] || [], 
                    i[s ? "unshift" : "push"](n) 
        } 
    } 
    function kn(e, n, r, i, s, o) { 
        s = s || n.dataTypes[0], 
        o = o || {}, 
        o[s] = !0; 
        var u, a = e[s], f = 0, l = a ? a.length : 0, c = e === Sn; 
        for (; f < l && (c || !u); f++) 
            u = a[f](n, r, i), 
            typeof u == "string" && (!c || o[u] ? u = t : (n.dataTypes.unshift(u), 
            u = kn(e, n, r, i, u, o))); 
        return (c || !u) && !o["*"] && (u = kn(e, n, r, i, "*", o)), 
        u 
    } 
    function Ln(e, n) { 
        var r, i, s = v.ajaxSettings.flatOptions || {}; 
        for (r in n) 
            n[r] !== t && ((s[r] ? e : i || (i = {}))[r] = n[r]); 
        i && v.extend(!0, e, i) 
    } 
    function An(e, n, r) { 
        var i, s, o, u, a = e.contents, f = e.dataTypes, l = e.responseFields; 
        for (s in l) 
            s in r && (n[l[s]] = r[s]); 
        while (f[0] === "*") 
            f.shift(), 
            i === t && (i = e.mimeType || n.getResponseHeader("content-type")); 
        if (i) 
            for (s in a) 
                if (a[s] && a[s].test(i)) { 
                    f.unshift(s); 
                    break 
                } 
        if (f[0]in r) 
            o = f[0]; 
        else { 
            for (s in r) { 
                if (!f[0] || e.converters[s + " " + f[0]]) { 
                    o = s; 
                    break 
                } 
                u || (u = s) 
            } 
            o = o || u 
        } 
        if (o) 
            return o !== f[0] && f.unshift(o), 
            r[o] 
    } 
    function On(e, t) { 
        var n, r, i, s, o = e.dataTypes.slice(), u = o[0], a = {}, f = 0; 
        e.dataFilter && (t = e.dataFilter(t, e.dataType)); 
        if (o[1]) 
            for (n in e.converters) 
                a[n.toLowerCase()] = e.converters[n]; 
        for (; i = o[++f]; ) 
            if (i !== "*") { 
                if (u !== "*" && u !== i) { 
                    n = a[u + " " + i] || a["* " + i]; 
                    if (!n) 
                        for (r in a) { 
                            s = r.split(" "); 
                            if (s[1] === i) { 
                                n = a[u + " " + s[0]] || a["* " + s[0]]; 
                                if (n) { 
                                    n === !0 ? n = a[r] : a[r] !== !0 && (i = s[0], 
                                    o.splice(f--, 0, i)); 
                                    break 
                                } 
                            } 
                        } 
                    if (n !== !0) 
                        if (n && e["throws"]) 
                            t = n(t); 
                        else 
                            try { 
                                t = n(t) 
                            } catch (l) { 
                                return { 
                                    state: "parsererror", 
                                    error: n ? l : "No conversion from " + u + " to " + i 
                                } 
                            } 
                } 
                u = i 
            } 
        return { 
            state: "success", 
            data: t 
        } 
    } 
    function Fn() { 
        try { 
            return new e.XMLHttpRequest 
        } catch (t) {} 
    } 
    function In() { 
        try { 
            return new e.ActiveXObject("Microsoft.XMLHTTP") 
        } catch (t) {} 
    } 
    function $n() { 
        return setTimeout(function() { 
            qn = t 
        }, 0), 
        qn = v.now() 
    } 
    function Jn(e, t) { 
        v.each(t, function(t, n) { 
            var r = (Vn[t] || []).concat(Vn["*"]) 
              , i = 0 
              , s = r.length; 
            for (; i < s; i++) 
                if (r[i].call(e, t, n)) 
                    return 
        }) 
    } 
    function Kn(e, t, n) { 
        var r, i = 0, s = 0, o = Xn.length, u = v.Deferred().always(function() { 
            delete a.elem 
        }), a = function() { 
            var t = qn || $n() 
              , n = Math.max(0, f.startTime + f.duration - t) 
              , r = n / f.duration || 0 
              , i = 1 - r 
              , s = 0 
              , o = f.tweens.length; 
            for (; s < o; s++) 
                f.tweens[s].run(i); 
            return u.notifyWith(e, [f, i, n]), 
            i < 1 && o ? n : (u.resolveWith(e, [f]), 
            !1) 
        }, f = u.promise({ 
            elem: e, 
            props: v.extend({}, t), 
            opts: v.extend(!0, { 
                specialEasing: {} 
            }, n), 
            originalProperties: t, 
            originalOptions: n, 
            startTime: qn || $n(), 
            duration: n.duration, 
            tweens: [], 
            createTween: function(t, n, r) { 
                var i = v.Tween(e, f.opts, t, n, f.opts.specialEasing[t] || f.opts.easing); 
                return f.tweens.push(i), 
                i 
            }, 
            stop: function(t) { 
                var n = 0 
                  , r = t ? f.tweens.length : 0; 
                for (; n < r; n++) 
                    f.tweens[n].run(1); 
                return t ? u.resolveWith(e, [f, t]) : u.rejectWith(e, [f, t]), 
                this 
            } 
        }), l = f.props; 
        Qn(l, f.opts.specialEasing); 
        for (; i < o; i++) { 
            r = Xn[i].call(f, e, l, f.opts); 
            if (r) 
                return r 
        } 
        return Jn(f, l), 
        v.isFunction(f.opts.start) && f.opts.start.call(e, f), 
        v.fx.timer(v.extend(a, { 
            anim: f, 
            queue: f.opts.queue, 
            elem: e 
        })), 
        f.progress(f.opts.progress).done(f.opts.done, f.opts.complete).fail(f.opts.fail).always(f.opts.always) 
    } 
    function Qn(e, t) { 
        var n, r, i, s, o; 
        for (n in e) { 
            r = v.camelCase(n), 
            i = t[r], 
            s = e[n], 
            v.isArray(s) && (i = s[1], 
            s = e[n] = s[0]), 
            n !== r && (e[r] = s, 
            delete e[n]), 
            o = v.cssHooks[r]; 
            if (o && "expand"in o) { 
                s = o.expand(s), 
                delete e[r]; 
                for (n in s) 
                    n in e || (e[n] = s[n], 
                    t[n] = i) 
            } else 
                t[r] = i 
        } 
    } 
    function Gn(e, t, n) { 
        var r, i, s, o, u, a, f, l, c, h = this, p = e.style, d = {}, m = [], g = e.nodeType && Gt(e); 
        n.queue || (l = v._queueHooks(e, "fx"), 
        l.unqueued == null && (l.unqueued = 0, 
        c = l.empty.fire, 
        l.empty.fire = function() { 
            l.unqueued || c() 
        } 
        ), 
        l.unqueued++, 
        h.always(function() { 
            h.always(function() { 
                l.unqueued--, 
                v.queue(e, "fx").length || l.empty.fire() 
            }) 
        })), 
        e.nodeType === 1 && ("height"in t || "width"in t) && (n.overflow = [p.overflow, p.overflowX, p.overflowY], 
        v.css(e, "display") === "inline" && v.css(e, "float") === "none" && (!v.support.inlineBlockNeedsLayout || nn(e.nodeName) === "inline" ? p.display = "inline-block" : p.zoom = 1)), 
        n.overflow && (p.overflow = "hidden", 
        v.support.shrinkWrapBlocks || h.done(function() { 
            p.overflow = n.overflow[0], 
            p.overflowX = n.overflow[1], 
            p.overflowY = n.overflow[2] 
        })); 
        for (r in t) { 
            s = t[r]; 
            if (Un.exec(s)) { 
                delete t[r], 
                a = a || s === "toggle"; 
                if (s === (g ? "hide" : "show")) 
                    continue; 
                m.push(r) 
            } 
        } 
        o = m.length; 
        if (o) { 
            u = v._data(e, "fxshow") || v._data(e, "fxshow", {}), 
            "hidden"in u && (g = u.hidden), 
            a && (u.hidden = !g), 
            g ? v(e).show() : h.done(function() { 
                v(e).hide() 
            }), 
            h.done(function() { 
                var t; 
                v.removeData(e, "fxshow", !0); 
                for (t in d) 
                    v.style(e, t, d[t]) 
            }); 
            for (r = 0; r < o; r++) 
                i = m[r], 
                f = h.createTween(i, g ? u[i] : 0), 
                d[i] = u[i] || v.style(e, i), 
                i in u || (u[i] = f.start, 
                g && (f.end = f.start, 
                f.start = i === "width" || i === "height" ? 1 : 0)) 
        } 
    } 
    function Yn(e, t, n, r, i) { 
        return new Yn.prototype.init(e,t,n,r,i) 
    } 
    function Zn(e, t) { 
        var n, r = { 
            height: e 
        }, i = 0; 
        t = t ? 1 : 0; 
        for (; i < 4; i += 2 - t) 
            n = $t[i], 
            r["margin" + n] = r["padding" + n] = e; 
        return t && (r.opacity = r.width = e), 
        r 
    } 
    function tr(e) { 
        return v.isWindow(e) ? e : e.nodeType === 9 ? e.defaultView || e.parentWindow : !1 
    } 
    var n, r, i = e.document, s = e.location, o = e.navigator, u = e.jQuery, a = e.$, f = Array.prototype.push, l = Array.prototype.slice, c = Array.prototype.indexOf, h = Object.prototype.toString, p = Object.prototype.hasOwnProperty, d = String.prototype.trim, v = function(e, t) { 
        return new v.fn.init(e,t,n) 
    }, m = /[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source, g = /\S/, y = /\s+/, b = /^[\s]+|[\s]+$/g, w = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/, E = /^<(\w+)\s*\/?>(?:<\/>|)$/, S = /^[\],:{}\s]*$/, x = /(?:^|:|,)(?:\s*\[)+/g, T = /\(?:["\\/bfnrt]|u[\da-fA-F]{4})/g, N = /"[^"\
]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g, C = /^-ms-/, k = /-([\da-z])/gi, L = function(e, t) { 
        return (t + "").toUpperCase() 
    }, A = function() { 
        i.addEventListener ? (i.removeEventListener("DOMContentLoaded", A, !1), 
        v.ready()) : i.readyState === "complete" && (i.detachEvent("onreadystatechange", A), 
        v.ready()) 
    }, O = {}; 
    v.fn = v.prototype = { 
        constructor: v, 
        init: function(e, n, r) { 
            var s, o, u, a; 
            if (!e) 
                return this; 
            if (e.nodeType) 
                return this.context = this[0] = e, 
                this.length = 1, 
                this; 
            if (typeof e == "string") { 
                e.charAt(0) === "<" && e.charAt(e.length - 1) === ">" && e.length >= 3 ? s = [null, e, null] : s = w.exec(e); 
                if (s && (s[1] || !n)) { 
                    if (s[1]) 
                        return n = n instanceof v ? n[0] : n, 
                        a = n && n.nodeType ? n.ownerDocument || n : i, 
                        e = v.parseHTML(s[1], a, !0), 
                        E.test(s[1]) && v.isPlainObject(n) && this.attr.call(e, n, !0), 
                        v.merge(this, e); 
                    o = i.getElementById(s[2]); 
                    if (o && o.parentNode) { 
                        if (o.id !== s[2]) 
                            return r.find(e); 
                        this.length = 1, 
                        this[0] = o 
                    } 
                    return this.context = i, 
                    this.selector = e, 
                    this 
                } 
                return !n || n.jquery ? (n || r).find(e) : this.constructor(n).find(e) 
            } 
            return v.isFunction(e) ? r.ready(e) : (e.selector !== t && (this.selector = e.selector, 
            this.context = e.context), 
            v.makeArray(e, this)) 
        }, 
        selector: "", 
        jquery: "1.8.3", 
        length: 0, 
        size: function() { 
            return this.length 
        }, 
        toArray: function() { 
            return l.call(this) 
        }, 
        get: function(e) { 
            return e == null ? this.toArray() : e < 0 ? this[this.length + e] : this[e] 
        }, 
        pushStack: function(e, t, n) { 
            var r = v.merge(this.constructor(), e); 
            return r.prevObject = this, 
            r.context = this.context, 
            t === "find" ? r.selector = this.selector + (this.selector ? " " : "") + n : t && (r.selector = this.selector + "." + t + "(" + n + ")"), 
            r 
        }, 
        each: function(e, t) { 
            return v.each(this, e, t) 
        }, 
        ready: function(e) { 
            return v.ready.promise().done(e), 
            this 
        }, 
        eq: function(e) { 
            return e = +e, 
            e === -1 ? 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(l.apply(this, arguments), "slice", l.call(arguments).join(",")) 
        }, 
        map: function(e) { 
            return this.pushStack(v.map(this, function(t, n) { 
                return e.call(t, n, t) 
            })) 
        }, 
        end: function() { 
            return this.prevObject || this.constructor(null) 
        }, 
        push: f, 
        sort: [].sort, 
        splice: [].splice 
    }, 
    v.fn.init.prototype = v.fn, 
    v.extend = v.fn.extend = function() { 
        var e, n, r, i, s, o, u = arguments[0] || {}, a = 1, f = arguments.length, l = !1; 
        typeof u == "boolean" && (l = u, 
        u = arguments[1] || {}, 
        a = 2), 
        typeof u != "object" && !v.isFunction(u) && (u = {}), 
        f === a && (u = this, 
        --a); 
        for (; a < f; a++) 
            if ((e = arguments[a]) != null) 
                for (n in e) { 
                    r = u[n], 
                    i = e[n]; 
                    if (u === i) 
                        continue; 
                    l && i && (v.isPlainObject(i) || (s = v.isArray(i))) ? (s ? (s = !1, 
                    o = r && v.isArray(r) ? r : []) : o = r && v.isPlainObject(r) ? r : {}, 
                    u[n] = v.extend(l, o, i)) : i !== t && (u[n] = i) 
                } 
        return u 
    } 
    , 
    v.extend({ 
        noConflict: function(t) { 
            return e.$ === v && (e.$ = a), 
            t && e.jQuery === v && (e.jQuery = u), 
            v 
        }, 
        isReady: !1, 
        readyWait: 1, 
        holdReady: function(e) { 
            e ? v.readyWait++ : v.ready(!0) 
        }, 
        ready: function(e) { 
            if (e === !0 ? --v.readyWait : v.isReady) 
                return; 
            if (!i.body) 
                return setTimeout(v.ready, 1); 
            v.isReady = !0; 
            if (e !== !0 && --v.readyWait > 0) 
                return; 
            r.resolveWith(i, [v]), 
            v.fn.trigger && v(i).trigger("ready").off("ready") 
        }, 
        isFunction: function(e) { 
            return v.type(e) === "function" 
        }, 
        isArray: Array.isArray || function(e) { 
            return v.type(e) === "array" 
        } 
        , 
        isWindow: function(e) { 
            return e != null && e == e.window 
        }, 
        isNumeric: function(e) { 
            return !isNaN(parseFloat(e)) && isFinite(e) 
        }, 
        type: function(e) { 
            return e == null ? String(e) : O[h.call(e)] || "object" 
        }, 
        isPlainObject: function(e) { 
            if (!e || v.type(e) !== "object" || e.nodeType || v.isWindow(e)) 
                return !1; 
            try { 
                if (e.constructor && !p.call(e, "constructor") && !p.call(e.constructor.prototype, "isPrototypeOf")) 
                    return !1 
            } catch (n) { 
                return !1 
            } 
            var r; 
            for (r in e) 
                ; 
            return r === t || p.call(e, r) 
        }, 
        isEmptyObject: function(e) { 
            var t; 
            for (t in e) 
                return !1; 
            return !0 
        }, 
        error: function(e) { 
            throw new Error(e) 
        }, 
        parseHTML: function(e, t, n) { 
            var r; 
            return !e || typeof e != "string" ? null : (typeof t == "boolean" && (n = t, 
            t = 0), 
            t = t || i, 
            (r = E.exec(e)) ? [t.createElement(r[1])] : (r = v.buildFragment([e], t, n ? null : []), 
            v.merge([], (r.cacheable ? v.clone(r.fragment) : r.fragment).childNodes))) 
        }, 
        parseJSON: function(t) { 
            if (!t || typeof t != "string") 
                return null; 
            t = v.trim(t); 
            if (e.JSON && e.JSON.parse) 
                return e.JSON.parse(t); 
            if (S.test(t.replace(T, "@").replace(N, "]").replace(x, ""))) 
                return (new Function("return " + t))(); 
            v.error("Invalid JSON: " + t) 
        }, 
        parseXML: function(n) { 
            var r, i; 
            if (!n || typeof n != "string") 
                return null; 
            try { 
                e.DOMParser ? (i = new DOMParser, 
                r = i.parseFromString(n, "text/xml")) : (r = new ActiveXObject("Microsoft.XMLDOM"), 
                r.async = "false", 
                r.loadXML(n)) 
            } catch (s) { 
                r = t 
            } 
            return (!r || !r.documentElement || r.getElementsByTagName("parsererror").length) && v.error("Invalid XML: " + n), 
            r 
        }, 
        noop: function() {}, 
        globalEval: function(t) { 
            t && g.test(t) && (e.execScript || function(t) { 
                e.eval.call(e, t) 
            } 
            )(t) 
        }, 
        camelCase: function(e) { 
            return e.replace(C, "ms-").replace(k, L) 
        }, 
        nodeName: function(e, t) { 
            return e.nodeName && e.nodeName.toLowerCase() === t.toLowerCase() 
        }, 
        each: function(e, n, r) { 
            var i, s = 0, o = e.length, u = o === t || v.isFunction(e); 
            if (r) { 
                if (u) { 
                    for (i in e) 
                        if (n.apply(e[i], r) === !1) 
                            break 
                } else 
                    for (; s < o; ) 
                        if (n.apply(e[s++], r) === !1) 
                            break 
            } else if (u) { 
                for (i in e) 
                    if (n.call(e[i], i, e[i]) === !1) 
                        break 
            } else 
                for (; s < o; ) 
                    if (n.call(e[s], s, e[s++]) === !1) 
                        break; 
            return e 
        }, 
        trim: d && !d.call("") ? function(e) { 
            return e == null ? "" : d.call(e) 
        } 
        : function(e) { 
            return e == null ? "" : (e + "").replace(b, "") 
        } 
        , 
        makeArray: function(e, t) { 
            var n, r = t || []; 
            return e != null && (n = v.type(e), 
            e.length == null || n === "string" || n === "function" || n === "regexp" || v.isWindow(e) ? f.call(r, e) : v.merge(r, e)), 
            r 
        }, 
        inArray: function(e, t, n) { 
            var r; 
            if (t) { 
                if (c) 
                    return c.call(t, e, n); 
                r = t.length, 
                n = n ? n < 0 ? Math.max(0, r + n) : n : 0; 
                for (; n < r; n++) 
                    if (n in t && t[n] === e) 
                        return n 
            } 
            return -1 
        }, 
        merge: function(e, n) { 
            var r = n.length 
              , i = e.length 
              , s = 0; 
            if (typeof r == "number") 
                for (; s < r; s++) 
                    e[i++] = n[s]; 
            else 
                while (n[s] !== t) 
                    e[i++] = n[s++]; 
            return e.length = i, 
            e 
        }, 
        grep: function(e, t, n) { 
            var r, i = [], s = 0, o = e.length; 
            n = !!n; 
            for (; s < o; s++) 
                r = !!t(e[s], s), 
                n !== r && i.push(e[s]); 
            return i 
        }, 
        map: function(e, n, r) { 
            var i, s, o = [], u = 0, a = e.length, f = e instanceof v || a !== t && typeof a == "number" && (a > 0 && e[0] && e[a - 1] || a === 0 || v.isArray(e)); 
            if (f) 
                for (; u < a; u++) 
                    i = n(e[u], u, r), 
                    i != null && (o[o.length] = i); 
            else 
                for (s in e) 
                    i = n(e[s], s, r), 
                    i != null && (o[o.length] = i); 
            return o.concat.apply([], o) 
        }, 
        guid: 1, 
        proxy: function(e, n) { 
            var r, i, s; 
            return typeof n == "string" && (r = e[n], 
            n = e, 
            e = r), 
            v.isFunction(e) ? (i = l.call(arguments, 2), 
            s = function() { 
                return e.apply(n, i.concat(l.call(arguments))) 
            } 
            , 
            s.guid = e.guid = e.guid || v.guid++, 
            s) : t 
        }, 
        access: function(e, n, r, i, s, o, u) { 
            var a, f = r == null, l = 0, c = e.length; 
            if (r && typeof r == "object") { 
                for (l in r) 
                    v.access(e, n, l, r[l], 1, o, i); 
                s = 1 
            } else if (i !== t) { 
                a = u === t && v.isFunction(i), 
                f && (a ? (a = n, 
                n = function(e, t, n) { 
                    return a.call(v(e), n) 
                } 
                ) : (n.call(e, i), 
                n = null)); 
                if (n) 
                    for (; l < c; l++) 
                        n(e[l], r, a ? i.call(e[l], l, n(e[l], r)) : i, u); 
                s = 1 
            } 
            return s ? e : f ? n.call(e) : c ? n(e[0], r) : o 
        }, 
        now: function() { 
            return (new Date).getTime() 
        } 
    }), 
    v.ready.promise = function(t) { 
        if (!r) { 
            r = v.Deferred(); 
            if (i.readyState === "complete") 
                setTimeout(v.ready, 1); 
            else if (i.addEventListener) 
                i.addEventListener("DOMContentLoaded", A, !1), 
                e.addEventListener("load", v.ready, !1); 
            else { 
                i.attachEvent("onreadystatechange", A), 
                e.attachEvent("onload", v.ready); 
                var n = !1; 
                try { 
                    n = e.frameElement == null && i.documentElement 
                } catch (s) {} 
                n && n.doScroll && function o() { 
                    if (!v.isReady) { 
                        try { 
                            n.doScroll("left") 
                        } catch (e) { 
                            return setTimeout(o, 50) 
                        } 
                        v.ready() 
                    } 
                }() 
            } 
        } 
        return r.promise(t) 
    } 
    , 
    v.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(e, t) { 
        O["[object " + t + "]"] = t.toLowerCase() 
    }), 
    n = v(i); 
    var M = {}; 
    v.Callbacks = function(e) { 
        e = typeof e == "string" ? M[e] || _(e) : v.extend({}, e); 
        var n, r, i, s, o, u, a = [], f = !e.once && [], l = function(t) { 
            n = e.memory && t, 
            r = !0, 
            u = s || 0, 
            s = 0, 
            o = a.length, 
            i = !0; 
            for (; a && u < o; u++) 
                if (a[u].apply(t[0], t[1]) === !1 && e.stopOnFalse) { 
                    n = !1; 
                    break 
                } 
            i = !1, 
            a && (f ? f.length && l(f.shift()) : n ? a = [] : c.disable()) 
        }, c = { 
            add: function() { 
                if (a) { 
                    var t = a.length; 
                    (function r(t) { 
                        v.each(t, function(t, n) { 
                            var i = v.type(n); 
                            i === "function" ? (!e.unique || !c.has(n)) && a.push(n) : n && n.length && i !== "string" && r(n) 
                        }) 
                    } 
                    )(arguments), 
                    i ? o = a.length : n && (s = t, 
                    l(n)) 
                } 
                return this 
            }, 
            remove: function() { 
                return a && v.each(arguments, function(e, t) { 
                    var n; 
                    while ((n = v.inArray(t, a, n)) > -1) 
                        a.splice(n, 1), 
                        i && (n <= o && o--, 
                        n <= u && u--) 
                }), 
                this 
            }, 
            has: function(e) { 
                return v.inArray(e, a) > -1 
            }, 
            empty: function() { 
                return a = [], 
                this 
            }, 
            disable: function() { 
                return a = f = n = t, 
                this 
            }, 
            disabled: function() { 
                return !a 
            }, 
            lock: function() { 
                return f = t, 
                n || c.disable(), 
                this 
            }, 
            locked: function() { 
                return !f 
            }, 
            fireWith: function(e, t) { 
                return t = t || [], 
                t = [e, t.slice ? t.slice() : t], 
                a && (!r || f) && (i ? f.push(t) : l(t)), 
                this 
            }, 
            fire: function() { 
                return c.fireWith(this, arguments), 
                this 
            }, 
            fired: function() { 
                return !!r 
            } 
        }; 
        return c 
    } 
    , 
    v.extend({ 
        Deferred: function(e) { 
            var t = [["resolve", "done", v.Callbacks("once memory"), "resolved"], ["reject", "fail", v.Callbacks("once memory"), "rejected"], ["notify", "progress", v.Callbacks("memory")]] 
              , n = "pending" 
              , r = { 
                state: function() { 
                    return n 
                }, 
                always: function() { 
                    return i.done(arguments).fail(arguments), 
                    this 
                }, 
                then: function() { 
                    var e = arguments; 
                    return v.Deferred(function(n) { 
                        v.each(t, function(t, r) { 
                            var s = r[0] 
                              , o = e[t]; 
                            i[r[1]](v.isFunction(o) ? function() { 
                                var e = o.apply(this, arguments); 
                                e && v.isFunction(e.promise) ? e.promise().done(n.resolve).fail(n.reject).progress(n.notify) : n[s + "With"](this === i ? n : this, [e]) 
                            } 
                            : n[s]) 
                        }), 
                        e = null 
                    }).promise() 
                }, 
                promise: function(e) { 
                    return e != null ? v.extend(e, r) : r 
                } 
            } 
              , i = {}; 
            return r.pipe = r.then, 
            v.each(t, function(e, s) { 
                var o = s[2] 
                  , u = s[3]; 
                r[s[1]] = o.add, 
                u && o.add(function() { 
                    n = u 
                }, t[e ^ 1][2].disable, t[2][2].lock), 
                i[s[0]] = o.fire, 
                i[s[0] + "With"] = o.fireWith 
            }), 
            r.promise(i), 
            e && e.call(i, i), 
            i 
        }, 
        when: function(e) { 
            var t = 0, n = l.call(arguments), r = n.length, i = r !== 1 || e && v.isFunction(e.promise) ? r : 0, s = i === 1 ? e : v.Deferred(), o = function(e, t, n) { 
                return function(r) { 
                    t[e] = this, 
                    n[e] = arguments.length > 1 ? l.call(arguments) : r, 
                    n === u ? s.notifyWith(t, n) : --i || s.resolveWith(t, n) 
                } 
            }, u, a, f; 
            if (r > 1) { 
                u = new Array(r), 
                a = new Array(r), 
                f = new Array(r); 
                for (; t < r; t++) 
                    n[t] && v.isFunction(n[t].promise) ? n[t].promise().done(o(t, f, n)).fail(s.reject).progress(o(t, a, u)) : --i 
            } 
            return i || s.resolveWith(f, n), 
            s.promise() 
        } 
    }), 
    v.support = function() { 
        var t, n, r, s, o, u, a, f, l, c, h, p = i.createElement("div"); 
        p.setAttribute("className", "t"), 
        p.innerHTML = "  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>", 
        n = p.getElementsByTagName("*"), 
        r = p.getElementsByTagName("a")[0]; 
        if (!n || !r || !n.length) 
            return {}; 
        s = i.createElement("select"), 
        o = s.appendChild(i.createElement("option")), 
        u = p.getElementsByTagName("input")[0], 
        r.style.cssText = "top:1px;float:left;opacity:.5", 
        t = { 
            leadingWhitespace: p.firstChild.nodeType === 3, 
            tbody: !p.getElementsByTagName("tbody").length, 
            htmlSerialize: !!p.getElementsByTagName("link").length, 
            style: /top/.test(r.getAttribute("style")), 
            hrefNormalized: r.getAttribute("href") === "/a", 
            opacity: /^0.5/.test(r.style.opacity), 
            cssFloat: !!r.style.cssFloat, 
            checkOn: u.value === "on", 
            optSelected: o.selected, 
            getSetAttribute: p.className !== "t", 
            enctype: !!i.createElement("form").enctype, 
            html5Clone: i.createElement("nav").cloneNode(!0).outerHTML !== "<:nav></:nav>", 
            boxModel: i.compatMode === "CSS1Compat", 
            submitBubbles: !0, 
            changeBubbles: !0, 
            focusinBubbles: !1, 
            deleteExpando: !0, 
            noCloneEvent: !0, 
            inlineBlockNeedsLayout: !1, 
            shrinkWrapBlocks: !1, 
            reliableMarginRight: !0, 
            boxSizingReliable: !0, 
            pixelPosition: !1 
        }, 
        u.checked = !0, 
        t.noCloneChecked = u.cloneNode(!0).checked, 
        s.disabled = !0, 
        t.optDisabled = !o.disabled; 
        try { 
            delete p.test 
        } catch (d) { 
            t.deleteExpando = !1 
        } 
        !p.addEventListener && p.attachEvent && p.fireEvent && (p.attachEvent("onclick", h = function() { 
            t.noCloneEvent = !1 
        } 
        ), 
        p.cloneNode(!0).fireEvent("onclick"), 
        p.detachEvent("onclick", h)), 
        u = i.createElement("input"), 
        u.value = "t", 
        u.setAttribute("type", "radio"), 
        t.radioValue = u.value === "t", 
        u.setAttribute("checked", "checked"), 
        u.setAttribute("name", "t"), 
        p.appendChild(u), 
        a = i.createDocumentFragment(), 
        a.appendChild(p.lastChild), 
        t.checkClone = a.cloneNode(!0).cloneNode(!0).lastChild.checked, 
        t.appendChecked = u.checked, 
        a.removeChild(u), 
        a.appendChild(p); 
        if (p.attachEvent) 
            for (l in { 
                submit: !0, 
                change: !0, 
                focusin: !0 
            }) 
                f = "on" + l, 
                c = f in p, 
                c || (p.setAttribute(f, "return;"), 
                c = typeof p[f] == "function"), 
                t[l + "Bubbles"] = c; 
        return v(function() { 
            var n, r, s, o, u = "padding:0;margin:0;border:0;display:block;overflow:hidden;", a = i.getElementsByTagName("body")[0]; 
            if (!a) 
                return; 
            n = i.createElement("div"), 
            n.style.cssText = "visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px", 
            a.insertBefore(n, a.firstChild), 
            r = i.createElement("div"), 
            n.appendChild(r), 
            r.innerHTML = "<table><tr><td></td><td>t</td></tr></table>", 
            s = r.getElementsByTagName("td"), 
            s[0].style.cssText = "padding:0;margin:0;border:0;display:none", 
            c = s[0].offsetHeight === 0, 
            s[0].style.display = "", 
            s[1].style.display = "none", 
            t.reliableHiddenOffsets = c && s[0].offsetHeight === 0, 
            r.innerHTML = "", 
            r.style.cssText = "box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;", 
            t.boxSizing = r.offsetWidth === 4, 
            t.doesNotIncludeMarginInBodyOffset = a.offsetTop !== 1, 
            e.getComputedStyle && (t.pixelPosition = (e.getComputedStyle(r, null) || {}).top !== "1%", 
            t.boxSizingReliable = (e.getComputedStyle(r, null) || { 
                width: "4px" 
            }).width === "4px", 
            o = i.createElement("div"), 
            o.style.cssText = r.style.cssText = u, 
            o.style.marginRight = o.style.width = "0", 
            r.style.width = "1px", 
            r.appendChild(o), 
            t.reliableMarginRight = !parseFloat((e.getComputedStyle(o, null) || {}).marginRight)), 
            typeof r.style.zoom != "undefined" && (r.innerHTML = "", 
            r.style.cssText = u + "width:1px;padding:1px;display:inline;zoom:1", 
            t.inlineBlockNeedsLayout = r.offsetWidth === 3, 
            r.style.display = "block", 
            r.style.overflow = "visible", 
            r.innerHTML = "<div></div>", 
            r.firstChild.style.width = "5px", 
            t.shrinkWrapBlocks = r.offsetWidth !== 3, 
            n.style.zoom = 1), 
            a.removeChild(n), 
            n = r = s = o = null 
        }), 
        a.removeChild(p), 
        n = r = s = o = u = a = p = null, 
        t 
    }(); 
    var D = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/ 
      , P = /([A-Z])/g; 
    v.extend({ 
        cache: {}, 
        deletedIds: [], 
        uuid: 0, 
        expando: "jQuery" + (v.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 ? v.cache[e[v.expando]] : e[v.expando], 
            !!e && !B(e) 
        }, 
        data: function(e, n, r, i) { 
            if (!v.acceptData(e)) 
                return; 
            var s, o, u = v.expando, a = typeof n == "string", f = e.nodeType, l = f ? v.cache : e, c = f ? e[u] : e[u] && u; 
            if ((!c || !l[c] || !i && !l[c].data) && a && r === t) 
                return; 
            c || (f ? e[u] = c = v.deletedIds.pop() || v.guid++ : c = u), 
            l[c] || (l[c] = {}, 
            f || (l[c].toJSON = v.noop)); 
            if (typeof n == "object" || typeof n == "function") 
                i ? l[c] = v.extend(l[c], n) : l[c].data = v.extend(l[c].data, n); 
            return s = l[c], 
            i || (s.data || (s.data = {}), 
            s = s.data), 
            r !== t && (s[v.camelCase(n)] = r), 
            a ? (o = s[n], 
            o == null && (o = s[v.camelCase(n)])) : o = s, 
            o 
        }, 
        removeData: function(e, t, n) { 
            if (!v.acceptData(e)) 
                return; 
            var r, i, s, o = e.nodeType, u = o ? v.cache : e, a = o ? e[v.expando] : v.expando; 
            if (!u[a]) 
                return; 
            if (t) { 
                r = n ? u[a] : u[a].data; 
                if (r) { 
                    v.isArray(t) || (t in r ? t = [t] : (t = v.camelCase(t), 
                    t in r ? t = [t] : t = t.split(" "))); 
                    for (i = 0, 
                    s = t.length; i < s; i++) 
                        delete r[t[i]]; 
                    if (!(n ? B : v.isEmptyObject)(r)) 
                        return 
                } 
            } 
            if (!n) { 
                delete u[a].data; 
                if (!B(u[a])) 
                    return 
            } 
            o ? v.cleanData([e], !0) : v.support.deleteExpando || u != u.window ? delete u[a] : u[a] = null 
        }, 
        _data: function(e, t, n) { 
            return v.data(e, t, n, !0) 
        }, 
        acceptData: function(e) { 
            var t = e.nodeName && v.noData[e.nodeName.toLowerCase()]; 
            return !t || t !== !0 && e.getAttribute("classid") === t 
        } 
    }), 
    v.fn.extend({ 
        data: function(e, n) { 
            var r, i, s, o, u, a = this[0], f = 0, l = null; 
            if (e === t) { 
                if (this.length) { 
                    l = v.data(a); 
                    if (a.nodeType === 1 && !v._data(a, "parsedAttrs")) { 
                        s = a.attributes; 
                        for (u = s.length; f < u; f++) 
                            o = s[f].name, 
                            o.indexOf("data-") || (o = v.camelCase(o.substring(5)), 
                            H(a, o, l[o])); 
                        v._data(a, "parsedAttrs", !0) 
                    } 
                } 
                return l 
            } 
            return typeof e == "object" ? this.each(function() { 
                v.data(this, e) 
            }) : (r = e.split(".", 2), 
            r[1] = r[1] ? "." + r[1] : "", 
            i = r[1] + "!", 
            v.access(this, function(n) { 
                if (n === t) 
                    return l = this.triggerHandler("getData" + i, [r[0]]), 
                    l === t && a && (l = v.data(a, e), 
                    l = H(a, e, l)), 
                    l === t && r[1] ? this.data(r[0]) : l; 
                r[1] = n, 
                this.each(function() { 
                    var t = v(this); 
                    t.triggerHandler("setData" + i, r), 
                    v.data(this, e, n), 
                    t.triggerHandler("changeData" + i, r) 
                }) 
            }, null, n, arguments.length > 1, null, !1)) 
        }, 
        removeData: function(e) { 
            return this.each(function() { 
                v.removeData(this, e) 
            }) 
        } 
    }), 
    v.extend({ 
        queue: function(e, t, n) { 
            var r; 
            if (e) 
                return t = (t || "fx") + "queue", 
                r = v._data(e, t), 
                n && (!r || v.isArray(n) ? r = v._data(e, t, v.makeArray(n)) : r.push(n)), 
                r || [] 
        }, 
        dequeue: function(e, t) { 
            t = t || "fx"; 
            var n = v.queue(e, t) 
              , r = n.length 
              , i = n.shift() 
              , s = v._queueHooks(e, t) 
              , o = function() { 
                v.dequeue(e, t) 
            }; 
            i === "inprogress" && (i = n.shift(), 
            r--), 
            i && (t === "fx" && n.unshift("inprogress"), 
            delete s.stop, 
            i.call(e, o, s)), 
            !r && s && s.empty.fire() 
        }, 
        _queueHooks: function(e, t) { 
            var n = t + "queueHooks"; 
            return v._data(e, n) || v._data(e, n, { 
                empty: v.Callbacks("once memory").add(function() { 
                    v.removeData(e, t + "queue", !0), 
                    v.removeData(e, n, !0) 
                }) 
            }) 
        } 
    }), 
    v.fn.extend({ 
        queue: function(e, n) { 
            var r = 2; 
            return typeof e != "string" && (n = e, 
            e = "fx", 
            r--), 
            arguments.length < r ? v.queue(this[0], e) : n === t ? this : this.each(function() { 
                var t = v.queue(this, e, n); 
                v._queueHooks(this, e), 
                e === "fx" && t[0] !== "inprogress" && v.dequeue(this, e) 
            }) 
        }, 
        dequeue: function(e) { 
            return this.each(function() { 
                v.dequeue(this, e) 
            }) 
        }, 
        delay: function(e, t) { 
            return e = v.fx ? v.fx.speeds[e] || 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, n) { 
            var r, i = 1, s = v.Deferred(), o = this, u = this.length, a = function() { 
                --i || s.resolveWith(o, [o]) 
            }; 
            typeof e != "string" && (n = e, 
            e = t), 
            e = e || "fx"; 
            while (u--) 
                r = v._data(o[u], e + "queueHooks"), 
                r && r.empty && (i++, 
                r.empty.add(a)); 
            return a(), 
            s.promise(n) 
        } 
    }); 
    var j, F, I, q = /[	
]/g, R = /
/g, U = /^(?:button|input)$/i, z = /^(?:button|input|object|select|textarea)$/i, W = /^a(?:rea|)$/i, X = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i, V = v.support.getSetAttribute; 
    v.fn.extend({ 
        attr: function(e, t) { 
            return v.access(this, v.attr, e, t, arguments.length > 1) 
        }, 
        removeAttr: function(e) { 
            return this.each(function() { 
                v.removeAttr(this, e) 
            }) 
        }, 
        prop: function(e, t) { 
            return v.access(this, v.prop, e, t, arguments.length > 1) 
        }, 
        removeProp: function(e) { 
            return e = v.propFix[e] || e, 
            this.each(function() { 
                try { 
                    this[e] = t, 
                    delete this[e] 
                } catch (n) {} 
            }) 
        }, 
        addClass: function(e) { 
            var t, n, r, i, s, o, u; 
            if (v.isFunction(e)) 
                return this.each(function(t) { 
                    v(this).addClass(e.call(this, t, this.className)) 
                }); 
            if (e && typeof e == "string") { 
                t = e.split(y); 
                for (n = 0, 
                r = this.length; n < r; n++) { 
                    i = this[n]; 
                    if (i.nodeType === 1) 
                        if (!i.className && t.length === 1) 
                            i.className = e; 
                        else { 
                            s = " " + i.className + " "; 
                            for (o = 0, 
                            u = t.length; o < u; o++) 
                                s.indexOf(" " + t[o] + " ") < 0 && (s += t[o] + " "); 
                            i.className = v.trim(s) 
                        } 
                } 
            } 
            return this 
        }, 
        removeClass: function(e) { 
            var n, r, i, s, o, u, a; 
            if (v.isFunction(e)) 
                return this.each(function(t) { 
                    v(this).removeClass(e.call(this, t, this.className)) 
                }); 
            if (e && typeof e == "string" || e === t) { 
                n = (e || "").split(y); 
                for (u = 0, 
                a = this.length; u < a; u++) { 
                    i = this[u]; 
                    if (i.nodeType === 1 && i.className) { 
                        r = (" " + i.className + " ").replace(q, " "); 
                        for (s = 0, 
                        o = n.length; s < o; s++) 
                            while (r.indexOf(" " + n[s] + " ") >= 0) 
                                r = r.replace(" " + n[s] + " ", " "); 
                        i.className = e ? v.trim(r) : "" 
                    } 
                } 
            } 
            return this 
        }, 
        toggleClass: function(e, t) { 
            var n = typeof e 
              , r = typeof t == "boolean"; 
            return v.isFunction(e) ? this.each(function(n) { 
                v(this).toggleClass(e.call(this, n, this.className, t), t) 
            }) : this.each(function() { 
                if (n === "string") { 
                    var i, s = 0, o = v(this), u = t, a = e.split(y); 
                    while (i = a[s++]) 
                        u = r ? u : !o.hasClass(i), 
                        o[u ? "addClass" : "removeClass"](i) 
                } else if (n === "undefined" || n === "boolean") 
                    this.className && v._data(this, "__className__", this.className), 
                    this.className = this.className || e === !1 ? "" : v._data(this, "__className__") || "" 
            }) 
        }, 
        hasClass: function(e) { 
            var t = " " + e + " " 
              , n = 0 
              , r = this.length; 
            for (; n < r; n++) 
                if (this[n].nodeType === 1 && (" " + this[n].className + " ").replace(q, " ").indexOf(t) >= 0) 
                    return !0; 
            return !1 
        }, 
        val: function(e) { 
            var n, r, i, s = this[0]; 
            if (!arguments.length) { 
                if (s) 
                    return n = v.valHooks[s.type] || v.valHooks[s.nodeName.toLowerCase()], 
                    n && "get"in n && (r = n.get(s, "value")) !== t ? r : (r = s.value, 
                    typeof r == "string" ? r.replace(R, "") : r == null ? "" : r); 
                return 
            } 
            return i = v.isFunction(e), 
            this.each(function(r) { 
                var s, o = v(this); 
                if (this.nodeType !== 1) 
                    return; 
                i ? s = e.call(this, r, o.val()) : s = e, 
                s == null ? s = "" : typeof s == "number" ? s += "" : v.isArray(s) && (s = v.map(s, function(e) { 
                    return e == null ? "" : e + "" 
                })), 
                n = v.valHooks[this.type] || v.valHooks[this.nodeName.toLowerCase()]; 
                if (!n || !("set"in n) || n.set(this, s, "value") === t) 
                    this.value = s 
            }) 
        } 
    }), 
    v.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 = e.options, i = e.selectedIndex, s = e.type === "select-one" || i < 0, o = s ? null : [], u = s ? i + 1 : r.length, a = i < 0 ? u : s ? i : 0; 
                    for (; a < u; a++) { 
                        n = r[a]; 
                        if ((n.selected || a === i) && (v.support.optDisabled ? !n.disabled : n.getAttribute("disabled") === null) && (!n.parentNode.disabled || !v.nodeName(n.parentNode, "optgroup"))) { 
                            t = v(n).val(); 
                            if (s) 
                                return t; 
                            o.push(t) 
                        } 
                    } 
                    return o 
                }, 
                set: function(e, t) { 
                    var n = v.makeArray(t); 
                    return v(e).find("option").each(function() { 
                        this.selected = v.inArray(v(this).val(), n) >= 0 
                    }), 
                    n.length || (e.selectedIndex = -1), 
                    n 
                } 
            } 
        }, 
        attrFn: {}, 
        attr: function(e, n, r, i) { 
            var s, o, u, a = e.nodeType; 
            if (!e || a === 3 || a === 8 || a === 2) 
                return; 
            if (i && v.isFunction(v.fn[n])) 
                return v(e)[n](r); 
            if (typeof e.getAttribute == "undefined") 
                return v.prop(e, n, r); 
            u = a !== 1 || !v.isXMLDoc(e), 
            u && (n = n.toLowerCase(), 
            o = v.attrHooks[n] || (X.test(n) ? F : j)); 
            if (r !== t) { 
                if (r === null) { 
                    v.removeAttr(e, n); 
                    return 
                } 
                return o && "set"in o && u && (s = o.set(e, r, n)) !== t ? s : (e.setAttribute(n, r + ""), 
                r) 
            } 
            return o && "get"in o && u && (s = o.get(e, n)) !== null ? s : (s = e.getAttribute(n), 
            s === null ? t : s) 
        }, 
        removeAttr: function(e, t) { 
            var n, r, i, s, o = 0; 
            if (t && e.nodeType === 1) { 
                r = t.split(y); 
                for (; o < r.length; o++) 
                    i = r[o], 
                    i && (n = v.propFix[i] || i, 
                    s = X.test(i), 
                    s || v.attr(e, i, ""), 
                    e.removeAttribute(V ? i : n), 
                    s && n in e && (e[n] = !1)) 
            } 
        }, 
        attrHooks: { 
            type: { 
                set: function(e, t) { 
                    if (U.test(e.nodeName) && e.parentNode) 
                        v.error("type property can't be changed"); 
                    else if (!v.support.radioValue && t === "radio" && v.nodeName(e, "input")) { 
                        var n = e.value; 
                        return e.setAttribute("type", t), 
                        n && (e.value = n), 
                        t 
                    } 
                } 
            }, 
            value: { 
                get: function(e, t) { 
                    return j && v.nodeName(e, "button") ? j.get(e, t) : t in e ? e.value : null 
                }, 
                set: function(e, t, n) { 
                    if (j && v.nodeName(e, "button")) 
                        return j.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, n, r) { 
            var i, s, o, u = e.nodeType; 
            if (!e || u === 3 || u === 8 || u === 2) 
                return; 
            return o = u !== 1 || !v.isXMLDoc(e), 
            o && (n = v.propFix[n] || n, 
            s = v.propHooks[n]), 
            r !== t ? s && "set"in s && (i = s.set(e, r, n)) !== t ? i : e[n] = r : s && "get"in s && (i = s.get(e, n)) !== null ? i : e[n] 
        }, 
        propHooks: { 
            tabIndex: { 
                get: function(e) { 
                    var n = e.getAttributeNode("tabindex"); 
                    return n && n.specified ? parseInt(n.value, 10) : z.test(e.nodeName) || W.test(e.nodeName) && e.href ? 0 : t 
                } 
            } 
        } 
    }), 
    F = { 
        get: function(e, n) { 
            var r, i = v.prop(e, n); 
            return i === !0 || typeof i != "boolean" && (r = e.getAttributeNode(n)) && r.nodeValue !== !1 ? n.toLowerCase() : t 
        }, 
        set: function(e, t, n) { 
            var r; 
            return t === !1 ? v.removeAttr(e, n) : (r = v.propFix[n] || n, 
            r in e && (e[r] = !0), 
            e.setAttribute(n, n.toLowerCase())), 
            n 
        } 
    }, 
    V || (I = { 
        name: !0, 
        id: !0, 
        coords: !0 
    }, 
    j = v.valHooks.button = { 
        get: function(e, n) { 
            var r; 
            return r = e.getAttributeNode(n), 
            r && (I[n] ? r.value !== "" : r.specified) ? r.value : t 
        }, 
        set: function(e, t, n) { 
            var r = e.getAttributeNode(n); 
            return r || (r = i.createAttribute(n), 
            e.setAttributeNode(r)), 
            r.value = t + "" 
        } 
    }, 
    v.each(["width", "height"], function(e, t) { 
        v.attrHooks[t] = v.extend(v.attrHooks[t], { 
            set: function(e, n) { 
                if (n === "") 
                    return e.setAttribute(t, "auto"), 
                    n 
            } 
        }) 
    }), 
    v.attrHooks.contenteditable = { 
        get: j.get, 
        set: function(e, t, n) { 
            t === "" && (t = "false"), 
            j.set(e, t, n) 
        } 
    }), 
    v.support.hrefNormalized || v.each(["href", "src", "width", "height"], function(e, n) { 
        v.attrHooks[n] = v.extend(v.attrHooks[n], { 
            get: function(e) { 
                var r = e.getAttribute(n, 2); 
                return r === null ? t : r 
            } 
        }) 
    }), 
    v.support.style || (v.attrHooks.style = { 
        get: function(e) { 
            return e.style.cssText.toLowerCase() || t 
        }, 
        set: function(e, t) { 
            return e.style.cssText = t + "" 
        } 
    }), 
    v.support.optSelected || (v.propHooks.selected = v.extend(v.propHooks.selected, { 
        get: function(e) { 
            var t = e.parentNode; 
            return t && (t.selectedIndex, 
            t.parentNode && t.parentNode.selectedIndex), 
            null 
        } 
    })), 
    v.support.enctype || (v.propFix.enctype = "encoding"), 
    v.support.checkOn || v.each(["radio", "checkbox"], function() { 
        v.valHooks[this] = { 
            get: function(e) { 
                return e.getAttribute("value") === null ? "on" : e.value 
            } 
        } 
    }), 
    v.each(["radio", "checkbox"], function() { 
        v.valHooks[this] = v.extend(v.valHooks[this], { 
            set: function(e, t) { 
                if (v.isArray(t)) 
                    return e.checked = v.inArray(v(e).val(), t) >= 0 
            } 
        }) 
    }); 
    var $ = /^(?:textarea|input|select)$/i 
      , J = /^([^\.]*|)(?:\.(.+)|)$/ 
      , K = /(?:^|\s)hover(\.\S+|)/ 
      , Q = /^key/ 
      , G = /^(?:mouse|contextmenu)|click/ 
      , Y = /^(?:focusinfocus|focusoutblur)$/ 
      , Z = function(e) { 
        return v.event.special.hover ? e : e.replace(K, "mouseenter$1 mouseleave$1") 
    }; 
    v.event = { 
        add: function(e, n, r, i, s) { 
            var o, u, a, f, l, c, h, p, d, m, g; 
            if (e.nodeType === 3 || e.nodeType === 8 || !n || !r || !(o = v._data(e))) 
                return; 
            r.handler && (d = r, 
            r = d.handler, 
            s = d.selector), 
            r.guid || (r.guid = v.guid++), 
            a = o.events, 
            a || (o.events = a = {}), 
            u = o.handle, 
            u || (o.handle = u = function(e) { 
                return typeof v == "undefined" || !!e && v.event.triggered === e.type ? t : v.event.dispatch.apply(u.elem, arguments) 
            } 
            , 
            u.elem = e), 
            n = v.trim(Z(n)).split(" "); 
            for (f = 0; f < n.length; f++) { 
                l = J.exec(n[f]) || [], 
                c = l[1], 
                h = (l[2] || "").split(".").sort(), 
                g = v.event.special[c] || {}, 
                c = (s ? g.delegateType : g.bindType) || c, 
                g = v.event.special[c] || {}, 
                p = v.extend({ 
                    type: c, 
                    origType: l[1], 
                    data: i, 
                    handler: r, 
                    guid: r.guid, 
                    selector: s, 
                    needsContext: s && v.expr.match.needsContext.test(s), 
                    namespace: h.join(".") 
                }, d), 
                m = a[c]; 
                if (!m) { 
                    m = a[c] = [], 
                    m.delegateCount = 0; 
                    if (!g.setup || g.setup.call(e, i, h, u) === !1) 
                        e.addEventListener ? e.addEventListener(c, u, !1) : e.attachEvent && e.attachEvent("on" + c, u) 
                } 
                g.add && (g.add.call(e, p), 
                p.handler.guid || (p.handler.guid = r.guid)), 
                s ? m.splice(m.delegateCount++, 0, p) : m.push(p), 
                v.event.global[c] = !0 
            } 
            e = null 
        }, 
        global: {}, 
        remove: function(e, t, n, r, i) { 
            var s, o, u, a, f, l, c, h, p, d, m, g = v.hasData(e) && v._data(e); 
            if (!g || !(h = g.events)) 
                return; 
            t = v.trim(Z(t || "")).split(" "); 
            for (s = 0; s < t.length; s++) { 
                o = J.exec(t[s]) || [], 
                u = a = o[1], 
                f = o[2]; 
                if (!u) { 
                    for (u in h) 
                        v.event.remove(e, u + t[s], n, r, !0); 
                    continue 
                } 
                p = v.event.special[u] || {}, 
                u = (r ? p.delegateType : p.bindType) || u, 
                d = h[u] || [], 
                l = d.length, 
                f = f ? new RegExp("(^|\.)" + f.split(".").sort().join("\.(?:.*\.|)") + "(\.|$)") : null; 
                for (c = 0; c < d.length; c++) 
                    m = d[c], 
                    (i || a === m.origType) && (!n || n.guid === m.guid) && (!f || f.test(m.namespace)) && (!r || r === m.selector || r === "**" && m.selector) && (d.splice(c--, 1), 
                    m.selector && d.delegateCount--, 
                    p.remove && p.remove.call(e, m)); 
                d.length === 0 && l !== d.length && ((!p.teardown || p.teardown.call(e, f, g.handle) === !1) && v.removeEvent(e, u, g.handle), 
                delete h[u]) 
            } 
            v.isEmptyObject(h) && (delete g.handle, 
            v.removeData(e, "events", !0)) 
        }, 
        customEvent: { 
            getData: !0, 
            setData: !0, 
            changeData: !0 
        }, 
        trigger: function(n, r, s, o) { 
            if (!s || s.nodeType !== 3 && s.nodeType !== 8) { 
                var u, a, f, l, c, h, p, d, m, g, y = n.type || n, b = []; 
                if (Y.test(y + v.event.triggered)) 
                    return; 
                y.indexOf("!") >= 0 && (y = y.slice(0, -1), 
                a = !0), 
                y.indexOf(".") >= 0 && (b = y.split("."), 
                y = b.shift(), 
                b.sort()); 
                if ((!s || v.event.customEvent[y]) && !v.event.global[y]) 
                    return; 
                n = typeof n == "object" ? n[v.expando] ? n : new v.Event(y,n) : new v.Event(y), 
                n.type = y, 
                n.isTrigger = !0, 
                n.exclusive = a, 
                n.namespace = b.join("."), 
                n.namespace_re = n.namespace ? new RegExp("(^|\.)" + b.join("\.(?:.*\.|)") + "(\.|$)") : null, 
                h = y.indexOf(":") < 0 ? "on" + y : ""; 
                if (!s) { 
                    u = v.cache; 
                    for (f in u) 
                        u[f].events && u[f].events[y] && v.event.trigger(n, r, u[f].handle.elem, !0); 
                    return 
                } 
                n.result = t, 
                n.target || (n.target = s), 
                r = r != null ? v.makeArray(r) : [], 
                r.unshift(n), 
                p = v.event.special[y] || {}; 
                if (p.trigger && p.trigger.apply(s, r) === !1) 
                    return; 
                m = [[s, p.bindType || y]]; 
                if (!o && !p.noBubble && !v.isWindow(s)) { 
                    g = p.delegateType || y, 
                    l = Y.test(g + y) ? s : s.parentNode; 
                    for (c = s; l; l = l.parentNode) 
                        m.push([l, g]), 
                        c = l; 
                    c === (s.ownerDocument || i) && m.push([c.defaultView || c.parentWindow || e, g]) 
                } 
                for (f = 0; f < m.length && !n.isPropagationStopped(); f++) 
                    l = m[f][0], 
                    n.type = m[f][1], 
                    d = (v._data(l, "events") || {})[n.type] && v._data(l, "handle"), 
                    d && d.apply(l, r), 
                    d = h && l[h], 
                    d && v.acceptData(l) && d.apply && d.apply(l, r) === !1 && n.preventDefault(); 
                return n.type = y, 
                !o && !n.isDefaultPrevented() && (!p._default || p._default.apply(s.ownerDocument, r) === !1) && (y !== "click" || !v.nodeName(s, "a")) && v.acceptData(s) && h && s[y] && (y !== "focus" && y !== "blur" || n.target.offsetWidth !== 0) && !v.isWindow(s) && (c = s[h], 
                c && (s[h] = null), 
                v.event.triggered = y, 
                s[y](), 
                v.event.triggered = t, 
                c && (s[h] = c)), 
                n.result 
            } 
            return 
        }, 
        dispatch: function(n) { 
            n = v.event.fix(n || e.event); 
            var r, i, s, o, u, a, f, c, h, p, d = (v._data(this, "events") || {})[n.type] || [], m = d.delegateCount, g = l.call(arguments), y = !n.exclusive && !n.namespace, b = v.event.special[n.type] || {}, w = []; 
            g[0] = n, 
            n.delegateTarget = this; 
            if (b.preDispatch && b.preDispatch.call(this, n) === !1) 
                return; 
            if (m && (!n.button || n.type !== "click")) 
                for (s = n.target; s != this; s = s.parentNode || this) 
                    if (s.disabled !== !0 || n.type !== "click") { 
                        u = {}, 
                        f = []; 
                        for (r = 0; r < m; r++) 
                            c = d[r], 
                            h = c.selector, 
                            u[h] === t && (u[h] = c.needsContext ? v(h, this).index(s) >= 0 : v.find(h, this, null, [s]).length), 
                            u[h] && f.push(c); 
                        f.length && w.push({ 
                            elem: s, 
                            matches: f 
                        }) 
                    } 
            d.length > m && w.push({ 
                elem: this, 
                matches: d.slice(m) 
            }); 
            for (r = 0; r < w.length && !n.isPropagationStopped(); r++) { 
                a = w[r], 
                n.currentTarget = a.elem; 
                for (i = 0; i < a.matches.length && !n.isImmediatePropagationStopped(); i++) { 
                    c = a.matches[i]; 
                    if (y || !n.namespace && !c.namespace || n.namespace_re && n.namespace_re.test(c.namespace)) 
                        n.data = c.data, 
                        n.handleObj = c, 
                        o = ((v.event.special[c.origType] || {}).handle || c.handler).apply(a.elem, g), 
                        o !== t && (n.result = o, 
                        o === !1 && (n.preventDefault(), 
                        n.stopPropagation())) 
                } 
            } 
            return b.postDispatch && b.postDispatch.call(this, n), 
            n.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 e.which == null && (e.which = t.charCode != null ? 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, s, o, u = n.button, a = n.fromElement; 
                return e.pageX == null && n.clientX != null && (r = e.target.ownerDocument || i, 
                s = r.documentElement, 
                o = r.body, 
                e.pageX = n.clientX + (s && s.scrollLeft || o && o.scrollLeft || 0) - (s && s.clientLeft || o && o.clientLeft || 0), 
                e.pageY = n.clientY + (s && s.scrollTop || o && o.scrollTop || 0) - (s && s.clientTop || o && o.clientTop || 0)), 
                !e.relatedTarget && a && (e.relatedTarget = a === e.target ? n.toElement : a), 
                !e.which && u !== t && (e.which = u & 1 ? 1 : u & 2 ? 3 : u & 4 ? 2 : 0), 
                e 
            } 
        }, 
        fix: function(e) { 
            if (e[v.expando]) 
                return e; 
            var t, n, r = e, s = v.event.fixHooks[e.type] || {}, o = s.props ? this.props.concat(s.props) : this.props; 
            e = v.Event(r); 
            for (t = o.length; t; ) 
                n = o[--t], 
                e[n] = r[n]; 
            return e.target || (e.target = r.srcElement || i), 
            e.target.nodeType === 3 && (e.target = e.target.parentNode), 
            e.metaKey = !!e.metaKey, 
            s.filter ? s.filter(e, r) : e 
        }, 
        special: { 
            load: { 
                noBubble: !0 
            }, 
            focus: { 
                delegateType: "focusin" 
            }, 
            blur: { 
                delegateType: "focusout" 
            }, 
            beforeunload: { 
                setup: function(e, t, n) { 
                    v.isWindow(this) && (this.onbeforeunload = n) 
                }, 
                teardown: function(e, t) { 
                    this.onbeforeunload === t && (this.onbeforeunload = null) 
                } 
            } 
        }, 
        simulate: function(e, t, n, r) { 
            var i = v.extend(new v.Event, n, { 
                type: e, 
                isSimulated: !0, 
                originalEvent: {} 
            }); 
            r ? v.event.trigger(i, null, t) : v.event.dispatch.call(t, i), 
            i.isDefaultPrevented() && n.preventDefault() 
        } 
    }, 
    v.event.handle = v.event.dispatch, 
    v.removeEvent = i.removeEventListener ? function(e, t, n) { 
        e.removeEventListener && e.removeEventListener(t, n, !1) 
    } 
    : function(e, t, n) { 
        var r = "on" + t; 
        e.detachEvent && (typeof e[r] == "undefined" && (e[r] = null), 
        e.detachEvent(r, n)) 
    } 
    , 
    v.Event = function(e, t) { 
        if (!(this instanceof v.Event)) 
            return new v.Event(e,t); 
        e && e.type ? (this.originalEvent = e, 
        this.type = e.type, 
        this.isDefaultPrevented = e.defaultPrevented || e.returnValue === !1 || e.getPreventDefault && e.getPreventDefault() ? tt : et) : this.type = e, 
        t && v.extend(this, t), 
        this.timeStamp = e && e.timeStamp || v.now(), 
        this[v.expando] = !0 
    } 
    , 
    v.Event.prototype = { 
        preventDefault: function() { 
            this.isDefaultPrevented = tt; 
            var e = this.originalEvent; 
            if (!e) 
                return; 
            e.preventDefault ? e.preventDefault() : e.returnValue = !1 
        }, 
        stopPropagation: function() { 
            this.isPropagationStopped = tt; 
            var e = this.originalEvent; 
            if (!e) 
                return; 
            e.stopPropagation && e.stopPropagation(), 
            e.cancelBubble = !0 
        }, 
        stopImmediatePropagation: function() { 
            this.isImmediatePropagationStopped = tt, 
            this.stopPropagation() 
        }, 
        isDefaultPrevented: et, 
        isPropagationStopped: et, 
        isImmediatePropagationStopped: et 
    }, 
    v.each({ 
        mouseenter: "mouseover", 
        mouseleave: "mouseout" 
    }, function(e, t) { 
        v.event.special[e] = { 
            delegateType: t, 
            bindType: t, 
            handle: function(e) { 
                var n, r = this, i = e.relatedTarget, s = e.handleObj, o = s.selector; 
                if (!i || i !== r && !v.contains(r, i)) 
                    e.type = s.origType, 
                    n = s.handler.apply(this, arguments), 
                    e.type = t; 
                return n 
            } 
        } 
    }), 
    v.support.submitBubbles || (v.event.special.submit = { 
        setup: function() { 
            if (v.nodeName(this, "form")) 
                return !1; 
            v.event.add(this, "click._submit keypress._submit", function(e) { 
                var n = e.target 
                  , r = v.nodeName(n, "input") || v.nodeName(n, "button") ? n.form : t; 
                r && !v._data(r, "_submit_attached") && (v.event.add(r, "submit._submit", function(e) { 
                    e._submit_bubble = !0 
                }), 
                v._data(r, "_submit_attached", !0)) 
            }) 
        }, 
        postDispatch: function(e) { 
            e._submit_bubble && (delete e._submit_bubble, 
            this.parentNode && !e.isTrigger && v.event.simulate("submit", this.parentNode, e, !0)) 
        }, 
        teardown: function() { 
            if (v.nodeName(this, "form")) 
                return !1; 
            v.event.remove(this, "._submit") 
        } 
    }), 
    v.support.changeBubbles || (v.event.special.change = { 
        setup: function() { 
            if ($.test(this.nodeName)) { 
                if (this.type === "checkbox" || this.type === "radio") 
                    v.event.add(this, "propertychange._change", function(e) { 
                        e.originalEvent.propertyName === "checked" && (this._just_changed = !0) 
                    }), 
                    v.event.add(this, "click._change", function(e) { 
                        this._just_changed && !e.isTrigger && (this._just_changed = !1), 
                        v.event.simulate("change", this, e, !0) 
                    }); 
                return !1 
            } 
            v.event.add(this, "beforeactivate._change", function(e) { 
                var t = e.target; 
                $.test(t.nodeName) && !v._data(t, "_change_attached") && (v.event.add(t, "change._change", function(e) { 
                    this.parentNode && !e.isSimulated && !e.isTrigger && v.event.simulate("change", this.parentNode, e, !0) 
                }), 
                v._data(t, "_change_attached", !0)) 
            }) 
        }, 
        handle: function(e) { 
            var t = e.target; 
            if (this !== t || e.isSimulated || e.isTrigger || t.type !== "radio" && t.type !== "checkbox") 
                return e.handleObj.handler.apply(this, arguments) 
        }, 
        teardown: function() { 
            return v.event.remove(this, "._change"), 
            !$.test(this.nodeName) 
        } 
    }), 
    v.support.focusinBubbles || v.each({ 
        focus: "focusin", 
        blur: "focusout" 
    }, function(e, t) { 
        var n = 0 
          , r = function(e) { 
            v.event.simulate(t, e.target, v.event.fix(e), !0) 
        }; 
        v.event.special[t] = { 
            setup: function() { 
                n++ === 0 && i.addEventListener(e, r, !0) 
            }, 
            teardown: function() { 
                --n === 0 && i.removeEventListener(e, r, !0) 
            } 
        } 
    }), 
    v.fn.extend({ 
        on: function(e, n, r, i, s) { 
            var o, u; 
            if (typeof e == "object") { 
                typeof n != "string" && (r = r || n, 
                n = t); 
                for (u in e) 
                    this.on(u, n, r, e[u], s); 
                return this 
            } 
            r == null && i == null ? (i = n, 
            r = n = t) : i == null && (typeof n == "string" ? (i = r, 
            r = t) : (i = r, 
            r = n, 
            n = t)); 
            if (i === !1) 
                i = et; 
            else if (!i) 
                return this; 
            return s === 1 && (o = i, 
            i = function(e) { 
                return v().off(e), 
                o.apply(this, arguments) 
            } 
            , 
            i.guid = o.guid || (o.guid = v.guid++)), 
            this.each(function() { 
                v.event.add(this, e, i, r, n) 
            }) 
        }, 
        one: function(e, t, n, r) { 
            return this.on(e, t, n, r, 1) 
        }, 
        off: function(e, n, r) { 
            var i, s; 
            if (e && e.preventDefault && e.handleObj) 
                return i = e.handleObj, 
                v(e.delegateTarget).off(i.namespace ? i.origType + "." + i.namespace : i.origType, i.selector, i.handler), 
                this; 
            if (typeof e == "object") { 
                for (s in e) 
                    this.off(s, n, e[s]); 
                return this 
            } 
            if (n === !1 || typeof n == "function") 
                r = n, 
                n = t; 
            return r === !1 && (r = et), 
            this.each(function() { 
                v.event.remove(this, e, r, n) 
            }) 
        }, 
        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 v(this.context).on(e, this.selector, t, n), 
            this 
        }, 
        die: function(e, t) { 
            return v(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 arguments.length === 1 ? this.off(e, "**") : this.off(t, e || "**", n) 
        }, 
        trigger: function(e, t) { 
            return this.each(function() { 
                v.event.trigger(e, t, this) 
            }) 
        }, 
        triggerHandler: function(e, t) { 
            if (this[0]) 
                return v.event.trigger(e, t, this[0], !0) 
        }, 
        toggle: function(e) { 
            var t = arguments 
              , n = e.guid || v.guid++ 
              , r = 0 
              , i = function(n) { 
                var i = (v._data(this, "lastToggle" + e.guid) || 0) % r; 
                return v._data(this, "lastToggle" + e.guid, i + 1), 
                n.preventDefault(), 
                t[i].apply(this, arguments) || !1 
            }; 
            i.guid = n; 
            while (r < t.length) 
                t[r++].guid = n; 
            return this.click(i) 
        }, 
        hover: function(e, t) { 
            return this.mouseenter(e).mouseleave(t || e) 
        } 
    }), 
    v.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) { 
        v.fn[t] = function(e, n) { 
            return n == null && (n = e, 
            e = null), 
            arguments.length > 0 ? this.on(t, null, e, n) : this.trigger(t) 
        } 
        , 
        Q.test(t) && (v.event.fixHooks[t] = v.event.keyHooks), 
        G.test(t) && (v.event.fixHooks[t] = v.event.mouseHooks) 
    }), 
    function(e, t) { 
        function nt(e, t, n, r) { 
            n = n || [], 
            t = t || g; 
            var i, s, a, f, l = t.nodeType; 
            if (!e || typeof e != "string") 
                return n; 
            if (l !== 1 && l !== 9) 
                return []; 
            a = o(t); 
            if (!a && !r) 
                if (i = R.exec(e)) 
                    if (f = i[1]) { 
                        if (l === 9) { 
                            s = t.getElementById(f); 
                            if (!s || !s.parentNode) 
                                return n; 
                            if (s.id === f) 
                                return n.push(s), 
                                n 
                        } else if (t.ownerDocument && (s = t.ownerDocument.getElementById(f)) && u(t, s) && s.id === f) 
                            return n.push(s), 
                            n 
                    } else { 
                        if (i[2]) 
                            return S.apply(n, x.call(t.getElementsByTagName(e), 0)), 
                            n; 
                        if ((f = i[3]) && Z && t.getElementsByClassName) 
                            return S.apply(n, x.call(t.getElementsByClassName(f), 0)), 
                            n 
                    } 
            return vt(e.replace(j, "$1"), t, n, r, a) 
        } 
        function rt(e) { 
            return function(t) { 
                var n = t.nodeName.toLowerCase(); 
                return n === "input" && t.type === e 
            } 
        } 
        function it(e) { 
            return function(t) { 
                var n = t.nodeName.toLowerCase(); 
                return (n === "input" || n === "button") && t.type === e 
            } 
        } 
        function st(e) { 
            return N(function(t) { 
                return t = +t, 
                N(function(n, r) { 
                    var i, s = e([], n.length, t), o = s.length; 
                    while (o--) 
                        n[i = s[o]] && (n[i] = !(r[i] = n[i])) 
                }) 
            }) 
        } 
        function ot(e, t, n) { 
            if (e === t) 
                return n; 
            var r = e.nextSibling; 
            while (r) { 
                if (r === t) 
                    return -1; 
                r = r.nextSibling 
            } 
            return 1 
        } 
        function ut(e, t) { 
            var n, r, s, o, u, a, f, l = L[d][e + " "]; 
            if (l) 
                return t ? 0 : l.slice(0); 
            u = e, 
            a = [], 
            f = i.preFilter; 
            while (u) { 
                if (!n || (r = F.exec(u))) 
                    r && (u = u.slice(r[0].length) || u), 
                    a.push(s = []); 
                n = !1; 
                if (r = I.exec(u)) 
                    s.push(n = new m(r.shift())), 
                    u = u.slice(n.length), 
                    n.type = r[0].replace(j, " "); 
                for (o in i.filter) 
                    (r = J[o].exec(u)) && (!f[o] || (r = f[o](r))) && (s.push(n = new m(r.shift())), 
                    u = u.slice(n.length), 
                    n.type = o, 
                    n.matches = r); 
                if (!n) 
                    break 
            } 
            return t ? u.length : u ? nt.error(e) : L(e, a).slice(0) 
        } 
        function at(e, t, r) { 
            var i = t.dir 
              , s = r && t.dir === "parentNode" 
              , o = w++; 
            return t.first ? function(t, n, r) { 
                while (t = t[i]) 
                    if (s || t.nodeType === 1) 
                        return e(t, n, r) 
            } 
            : function(t, r, u) { 
                if (!u) { 
                    var a, f = b + " " + o + " ", l = f + n; 
                    while (t = t[i]) 
                        if (s || t.nodeType === 1) { 
                            if ((a = t[d]) === l) 
                                return t.sizset; 
                            if (typeof a == "string" && a.indexOf(f) === 0) { 
                                if (t.sizset) 
                                    return t 
                            } else { 
                                t[d] = l; 
                                if (e(t, r, u)) 
                                    return t.sizset = !0, 
                                    t; 
                                t.sizset = !1 
                            } 
                        } 
                } else 
                    while (t = t[i]) 
                        if (s || t.nodeType === 1) 
                            if (e(t, r, u)) 
                                return t 
            } 
        } 
        function ft(e) { 
            return e.length > 1 ? function(t, n, r) { 
                var i = e.length; 
                while (i--) 
                    if (!e[i](t, n, r)) 
                        return !1; 
                return !0 
            } 
            : e[0] 
        } 
        function lt(e, t, n, r, i) { 
            var s, o = [], u = 0, a = e.length, f = t != null; 
            for (; u < a; u++) 
                if (s = e[u]) 
                    if (!n || n(s, r, i)) 
                        o.push(s), 
                        f && t.push(u); 
            return o 
        } 
        function ct(e, t, n, r, i, s) { 
            return r && !r[d] && (r = ct(r)), 
            i && !i[d] && (i = ct(i, s)), 
            N(function(s, o, u, a) { 
                var f, l, c, h = [], p = [], d = o.length, v = s || dt(t || "*", u.nodeType ? [u] : u, []), m = e && (s || !t) ? lt(v, h, e, u, a) : v, g = n ? i || (s ? e : d || r) ? [] : o : m; 
                n && n(m, g, u, a); 
                if (r) { 
                    f = lt(g, p), 
                    r(f, [], u, a), 
                    l = f.length; 
                    while (l--) 
                        if (c = f[l]) 
                            g[p[l]] = !(m[p[l]] = c) 
                } 
                if (s) { 
                    if (i || e) { 
                        if (i) { 
                            f = [], 
                            l = g.length; 
                            while (l--) 
                                (c = g[l]) && f.push(m[l] = c); 
                            i(null, g = [], f, a) 
                        } 
                        l = g.length; 
                        while (l--) 
                            (c = g[l]) && (f = i ? T.call(s, c) : h[l]) > -1 && (s[f] = !(o[f] = c)) 
                    } 
                } else 
                    g = lt(g === o ? g.splice(d, g.length) : g), 
                    i ? i(null, o, g, a) : S.apply(o, g) 
            }) 
        } 
        function ht(e) { 
            var t, n, r, s = e.length, o = i.relative[e[0].type], u = o || i.relative[" "], a = o ? 1 : 0, f = at(function(e) { 
                return e === t 
            }, u, !0), l = at(function(e) { 
                return T.call(t, e) > -1 
            }, u, !0), h = [function(e, n, r) { 
                return !o && (r || n !== c) || ((t = n).nodeType ? f(e, n, r) : l(e, n, r)) 
            } 
            ]; 
            for (; a < s; a++) 
                if (n = i.relative[e[a].type]) 
                    h = [at(ft(h), n)]; 
                else { 
                    n = i.filter[e[a].type].apply(null, e[a].matches); 
                    if (n[d]) { 
                        r = ++a; 
                        for (; r < s; r++) 
                            if (i.relative[e[r].type]) 
                                break; 
                        return ct(a > 1 && ft(h), a > 1 && e.slice(0, a - 1).join("").replace(j, "$1"), n, a < r && ht(e.slice(a, r)), r < s && ht(e = e.slice(r)), r < s && e.join("")) 
                    } 
                    h.push(n) 
                } 
            return ft(h) 
        } 
        function pt(e, t) { 
            var r = t.length > 0 
              , s = e.length > 0 
              , o = function(u, a, f, l, h) { 
                var p, d, v, m = [], y = 0, w = "0", x = u && [], T = h != null, N = c, C = u || s && i.find.TAG("*", h && a.parentNode || a), k = b += N == null ? 1 : Math.E; 
                T && (c = a !== g && a, 
                n = o.el); 
                for (; (p = C[w]) != null; w++) { 
                    if (s && p) { 
                        for (d = 0; v = e[d]; d++) 
                            if (v(p, a, f)) { 
                                l.push(p); 
                                break 
                            } 
                        T && (b = k, 
                        n = ++o.el) 
                    } 
                    r && ((p = !v && p) && y--, 
                    u && x.push(p)) 
                } 
                y += w; 
                if (r && w !== y) { 
                    for (d = 0; v = t[d]; d++) 
                        v(x, m, a, f); 
                    if (u) { 
                        if (y > 0) 
                            while (w--) 
                                !x[w] && !m[w] && (m[w] = E.call(l)); 
                        m = lt(m) 
                    } 
                    S.apply(l, m), 
                    T && !u && m.length > 0 && y + t.length > 1 && nt.uniqueSort(l) 
                } 
                return T && (b = k, 
                c = N), 
                x 
            }; 
            return o.el = 0, 
            r ? N(o) : o 
        } 
        function dt(e, t, n) { 
            var r = 0 
              , i = t.length; 
            for (; r < i; r++) 
                nt(e, t[r], n); 
            return n 
        } 
        function vt(e, t, n, r, s) { 
            var o, u, f, l, c, h = ut(e), p = h.length; 
            if (!r && h.length === 1) { 
                u = h[0] = h[0].slice(0); 
                if (u.length > 2 && (f = u[0]).type === "ID" && t.nodeType === 9 && !s && i.relative[u[1].type]) { 
                    t = i.find.ID(f.matches[0].replace($, ""), t, s)[0]; 
                    if (!t) 
                        return n; 
                    e = e.slice(u.shift().length) 
                } 
                for (o = J.POS.test(e) ? -1 : u.length - 1; o >= 0; o--) { 
                    f = u[o]; 
                    if (i.relative[l = f.type]) 
                        break; 
                    if (c = i.find[l]) 
                        if (r = c(f.matches[0].replace($, ""), z.test(u[0].type) && t.parentNode || t, s)) { 
                            u.splice(o, 1), 
                            e = r.length && u.join(""); 
                            if (!e) 
                                return S.apply(n, x.call(r, 0)), 
                                n; 
                            break 
                        } 
                } 
            } 
            return a(e, h)(r, t, s, n, z.test(e)), 
            n 
        } 
        function mt() {} 
        var n, r, i, s, o, u, a, f, l, c, h = !0, p = "undefined", d = ("sizcache" + Math.random()).replace(".", ""), m = String, g = e.document, y = g.documentElement, b = 0, w = 0, E = [].pop, S = [].push, x = [].slice, T = [].indexOf || function(e) { 
            var t = 0 
              , n = this.length; 
            for (; t < n; t++) 
                if (this[t] === e) 
                    return t; 
            return -1 
        } 
        , N = function(e, t) { 
            return e[d] = t == null || t, 
            e 
        }, C = function() { 
            var e = {} 
              , t = []; 
            return N(function(n, r) { 
                return t.push(n) > i.cacheLength && delete e[t.shift()], 
                e[n + " "] = r 
            }, e) 
        }, k = C(), L = C(), A = C(), O = "[\ \t\r\n\f]", M = "(?:\\.|[-\w]|[^\x00-\xa0])+", _ = M.replace("w", "w#"), D = "([*^$|!~]?=)", P = "\[" + O + "*(" + M + ")" + O + "*(?:" + D + O + "*(?:(['\"])((?:\\.|[^\\])*?)\3|(" + _ + ")|)|)" + O + "*\]", H = ":(" + M + ")(?:\((?:(['\"])((?:\\.|[^\\])*?)\2|([^()[\]]*|(?:(?:" + P + ")|[^:]|\\.)*|.*))\)|)", B = ":(even|odd|eq|gt|lt|nth|first|last)(?:\(" + O + "*((?:-\d)?\d*)" + O + "*\)|)(?=[^-]|$)", j = new RegExp("^" + O + "+|((?:^|[^\\])(?:\\.)*)" + O + "+$","g"), F = new RegExp("^" + O + "*," + O + "*"), I = new RegExp("^" + O + "*([\ \t\r\n\f>+~])" + O + "*"), q = new RegExp(H), R = /^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/, U = /^:not/, z = /[ 	
]*[+~]/, W = /:not\($/, X = /h\d/i, V = /input|select|textarea|button/i, $ = /\(?!\)/g, J = { 
            ID: new RegExp("^#(" + M + ")"), 
            CLASS: new RegExp("^\.(" + M + ")"), 
            NAME: new RegExp("^\[name=['\"]?(" + M + ")['\"]?\]"), 
            TAG: new RegExp("^(" + M.replace("w", "w*") + ")"), 
            ATTR: new RegExp("^" + P), 
            PSEUDO: new RegExp("^" + H), 
            POS: new RegExp(B,"i"), 
            CHILD: new RegExp("^:(only|nth|first|last)-child(?:\(" + O + "*(even|odd|(([+-]|)(\d*)n|)" + O + "*(?:([+-]|)" + O + "*(\d+)|))" + O + "*\)|)","i"), 
            needsContext: new RegExp("^" + O + "*[>+~]|" + B,"i") 
        }, K = function(e) { 
            var t = g.createElement("div"); 
            try { 
                return e(t) 
            } catch (n) { 
                return !1 
            } finally { 
                t = null 
            } 
        }, Q = K(function(e) { 
            return e.appendChild(g.createComment("")), 
            !e.getElementsByTagName("*").length 
        }), G = K(function(e) { 
            return e.innerHTML = "<a href='#'></a>", 
            e.firstChild && typeof e.firstChild.getAttribute !== p && e.firstChild.getAttribute("href") === "#" 
        }), Y = K(function(e) { 
            e.innerHTML = "<select></select>"; 
            var t = typeof e.lastChild.getAttribute("multiple"); 
            return t !== "boolean" && t !== "string" 
        }), Z = K(function(e) { 
            return e.innerHTML = "<div class='hidden e'></div><div class='hidden'></div>", 
            !e.getElementsByClassName || !e.getElementsByClassName("e").length ? !1 : (e.lastChild.className = "e", 
            e.getElementsByClassName("e").length === 2) 
        }), et = K(function(e) { 
            e.id = d + 0, 
            e.innerHTML = "<a name='" + d + "'></a><div name='" + d + "'></div>", 
            y.insertBefore(e, y.firstChild); 
            var t = g.getElementsByName && g.getElementsByName(d).length === 2 + g.getElementsByName(d + 0).length; 
            return r = !g.getElementById(d), 
            y.removeChild(e), 
            t 
        }); 
        try { 
            x.call(y.childNodes, 0)[0].nodeType 
        } catch (tt) { 
            x = function(e) { 
                var t, n = []; 
                for (; t = this[e]; e++) 
                    n.push(t); 
                return n 
            } 
        } 
        nt.matches = function(e, t) { 
            return nt(e, null, null, t) 
        } 
        , 
        nt.matchesSelector = function(e, t) { 
            return nt(t, null, null, [e]).length > 0 
        } 
        , 
        s = nt.getText = function(e) { 
            var t, n = "", r = 0, i = e.nodeType; 
            if (i) { 
                if (i === 1 || i === 9 || i === 11) { 
                    if (typeof e.textContent == "string") 
                        return e.textContent; 
                    for (e = e.firstChild; e; e = e.nextSibling) 
                        n += s(e) 
                } else if (i === 3 || i === 4) 
                    return e.nodeValue 
            } else 
                for (; t = e[r]; r++) 
                    n += s(t); 
            return n 
        } 
        , 
        o = nt.isXML = function(e) { 
            var t = e && (e.ownerDocument || e).documentElement; 
            return t ? t.nodeName !== "HTML" : !1 
        } 
        , 
        u = nt.contains = y.contains ? function(e, t) { 
            var n = e.nodeType === 9 ? e.documentElement : e 
              , r = t && t.parentNode; 
            return e === r || !!(r && r.nodeType === 1 && n.contains && n.contains(r)) 
        } 
        : y.compareDocumentPosition ? function(e, t) { 
            return t && !!(e.compareDocumentPosition(t) & 16) 
        } 
        : function(e, t) { 
            while (t = t.parentNode) 
                if (t === e) 
                    return !0; 
            return !1 
        } 
        , 
        nt.attr = function(e, t) { 
            var n, r = o(e); 
            return r || (t = t.toLowerCase()), 
            (n = i.attrHandle[t]) ? n(e) : r || Y ? e.getAttribute(t) : (n = e.getAttributeNode(t), 
            n ? typeof e[t] == "boolean" ? e[t] ? t : null : n.specified ? n.value : null : null) 
        } 
        , 
        i = nt.selectors = { 
            cacheLength: 50, 
            createPseudo: N, 
            match: J, 
            attrHandle: G ? {} : { 
                href: function(e) { 
                    return e.getAttribute("href", 2) 
                }, 
                type: function(e) { 
                    return e.getAttribute("type") 
                } 
            }, 
            find: { 
                ID: r ? function(e, t, n) { 
                    if (typeof t.getElementById !== p && !n) { 
                        var r = t.getElementById(e); 
                        return r && r.parentNode ? [r] : [] 
                    } 
                } 
                : function(e, n, r) { 
                    if (typeof n.getElementById !== p && !r) { 
                        var i = n.getElementById(e); 
                        return i ? i.id === e || typeof i.getAttributeNode !== p && i.getAttributeNode("id").value === e ? [i] : t : [] 
                    } 
                } 
                , 
                TAG: Q ? function(e, t) { 
                    if (typeof t.getElementsByTagName !== p) 
                        return t.getElementsByTagName(e) 
                } 
                : function(e, t) { 
                    var n = t.getElementsByTagName(e); 
                    if (e === "*") { 
                        var r, i = [], s = 0; 
                        for (; r = n[s]; s++) 
                            r.nodeType === 1 && i.push(r); 
                        return i 
                    } 
                    return n 
                } 
                , 
                NAME: et && function(e, t) { 
                    if (typeof t.getElementsByName !== p) 
                        return t.getElementsByName(name) 
                } 
                , 
                CLASS: Z && function(e, t, n) { 
                    if (typeof t.getElementsByClassName !== p && !n) 
                        return t.getElementsByClassName(e) 
                } 
            }, 
            relative: { 
                ">": { 
                    dir: "parentNode", 
                    first: !0 
                }, 
                " ": { 
                    dir: "parentNode" 
                }, 
                "+": { 
                    dir: "previousSibling", 
                    first: !0 
                }, 
                "~": { 
                    dir: "previousSibling" 
                } 
            }, 
            preFilter: { 
                ATTR: function(e) { 
                    return e[1] = e[1].replace($, ""), 
                    e[3] = (e[4] || e[5] || "").replace($, ""), 
                    e[2] === "~=" && (e[3] = " " + e[3] + " "), 
                    e.slice(0, 4) 
                }, 
                CHILD: function(e) { 
                    return e[1] = e[1].toLowerCase(), 
                    e[1] === "nth" ? (e[2] || nt.error(e[0]), 
                    e[3] = +(e[3] ? e[4] + (e[5] || 1) : 2 * (e[2] === "even" || e[2] === "odd")), 
                    e[4] = +(e[6] + e[7] || e[2] === "odd")) : e[2] && nt.error(e[0]), 
                    e 
                }, 
                PSEUDO: function(e) { 
                    var t, n; 
                    if (J.CHILD.test(e[0])) 
                        return null; 
                    if (e[3]) 
                        e[2] = e[3]; 
                    else if (t = e[4]) 
                        q.test(t) && (n = ut(t, !0)) && (n = t.indexOf(")", t.length - n) - t.length) && (t = t.slice(0, n), 
                        e[0] = e[0].slice(0, n)), 
                        e[2] = t; 
                    return e.slice(0, 3) 
                } 
            }, 
            filter: { 
                ID: r ? function(e) { 
                    return e = e.replace($, ""), 
                    function(t) { 
                        return t.getAttribute("id") === e 
                    } 
                } 
                : function(e) { 
                    return e = e.replace($, ""), 
                    function(t) { 
                        var n = typeof t.getAttributeNode !== p && t.getAttributeNode("id"); 
                        return n && n.value === e 
                    } 
                } 
                , 
                TAG: function(e) { 
                    return e === "*" ? function() { 
                        return !0 
                    } 
                    : (e = e.replace($, "").toLowerCase(), 
                    function(t) { 
                        return t.nodeName && t.nodeName.toLowerCase() === e 
                    } 
                    ) 
                }, 
                CLASS: function(e) { 
                    var t = k[d][e + " "]; 
                    return t || (t = new RegExp("(^|" + O + ")" + e + "(" + O + "|$)")) && k(e, function(e) { 
                        return t.test(e.className || typeof e.getAttribute !== p && e.getAttribute("class") || "") 
                    }) 
                }, 
                ATTR: function(e, t, n) { 
                    return function(r, i) { 
                        var s = nt.attr(r, e); 
                        return s == null ? t === "!=" : t ? (s += "", 
                        t === "=" ? s === n : t === "!=" ? s !== n : t === "^=" ? n && s.indexOf(n) === 0 : t === "*=" ? n && s.indexOf(n) > -1 : t === "$=" ? n && s.substr(s.length - n.length) === n : t === "~=" ? (" " + s + " ").indexOf(n) > -1 : t === "|=" ? s === n || s.substr(0, n.length + 1) === n + "-" : !1) : !0 
                    } 
                }, 
                CHILD: function(e, t, n, r) { 
                    return e === "nth" ? function(e) { 
                        var t, i, s = e.parentNode; 
                        if (n === 1 && r === 0) 
                            return !0; 
                        if (s) { 
                            i = 0; 
                            for (t = s.firstChild; t; t = t.nextSibling) 
                                if (t.nodeType === 1) { 
                                    i++; 
                                    if (e === t) 
                                        break 
                                } 
                        } 
                        return i -= r, 
                        i === n || i % n === 0 && i / n >= 0 
                    } 
                    : function(t) { 
                        var n = t; 
                        switch (e) { 
                        case "only": 
                        case "first": 
                            while (n = n.previousSibling) 
                                if (n.nodeType === 1) 
                                    return !1; 
                            if (e === "first") 
                                return !0; 
                            n = t; 
                        case "last": 
                            while (n = n.nextSibling) 
                                if (n.nodeType === 1) 
                                    return !1; 
                            return !0 
                        } 
                    } 
                }, 
                PSEUDO: function(e, t) { 
                    var n, r = i.pseudos[e] || i.setFilters[e.toLowerCase()] || nt.error("unsupported pseudo: " + e); 
                    return r[d] ? r(t) : r.length > 1 ? (n = [e, e, "", t], 
                    i.setFilters.hasOwnProperty(e.toLowerCase()) ? N(function(e, n) { 
                        var i, s = r(e, t), o = s.length; 
                        while (o--) 
                            i = T.call(e, s[o]), 
                            e[i] = !(n[i] = s[o]) 
                    }) : function(e) { 
                        return r(e, 0, n) 
                    } 
                    ) : r 
                } 
            }, 
            pseudos: { 
                not: N(function(e) { 
                    var t = [] 
                      , n = [] 
                      , r = a(e.replace(j, "$1")); 
                    return r[d] ? N(function(e, t, n, i) { 
                        var s, o = r(e, null, i, []), u = e.length; 
                        while (u--) 
                            if (s = o[u]) 
                                e[u] = !(t[u] = s) 
                    }) : function(e, i, s) { 
                        return t[0] = e, 
                        r(t, null, s, n), 
                        !n.pop() 
                    } 
                }), 
                has: N(function(e) { 
                    return function(t) { 
                        return nt(e, t).length > 0 
                    } 
                }), 
                contains: N(function(e) { 
                    return function(t) { 
                        return (t.textContent || t.innerText || s(t)).indexOf(e) > -1 
                    } 
                }), 
                enabled: function(e) { 
                    return e.disabled === !1 
                }, 
                disabled: function(e) { 
                    return e.disabled === !0 
                }, 
                checked: function(e) { 
                    var t = e.nodeName.toLowerCase(); 
                    return t === "input" && !!e.checked || t === "option" && !!e.selected 
                }, 
                selected: function(e) { 
                    return e.parentNode && e.parentNode.selectedIndex, 
                    e.selected === !0 
                }, 
                parent: function(e) { 
                    return !i.pseudos.empty(e) 
                }, 
                empty: function(e) { 
                    var t; 
                    e = e.firstChild; 
                    while (e) { 
                        if (e.nodeName > "@" || (t = e.nodeType) === 3 || t === 4) 
                            return !1; 
                        e = e.nextSibling 
                    } 
                    return !0 
                }, 
                header: function(e) { 
                    return X.test(e.nodeName) 
                }, 
                text: function(e) { 
                    var t, n; 
                    return e.nodeName.toLowerCase() === "input" && (t = e.type) === "text" && ((n = e.getAttribute("type")) == null || n.toLowerCase() === t) 
                }, 
                radio: rt("radio"), 
                checkbox: rt("checkbox"), 
                file: rt("file"), 
                password: rt("password"), 
                image: rt("image"), 
                submit: it("submit"), 
                reset: it("reset"), 
                button: function(e) { 
                    var t = e.nodeName.toLowerCase(); 
                    return t === "input" && e.type === "button" || t === "button" 
                }, 
                input: function(e) { 
                    return V.test(e.nodeName) 
                }, 
                focus: function(e) { 
                    var t = e.ownerDocument; 
                    return e === t.activeElement && (!t.hasFocus || t.hasFocus()) && !!(e.type || e.href || ~e.tabIndex) 
                }, 
                active: function(e) { 
                    return e === e.ownerDocument.activeElement 
                }, 
                first: st(function() { 
                    return [0] 
                }), 
                last: st(function(e, t) { 
                    return [t - 1] 
                }), 
                eq: st(function(e, t, n) { 
                    return [n < 0 ? n + t : n] 
                }), 
                even: st(function(e, t) { 
                    for (var n = 0; n < t; n += 2) 
                        e.push(n); 
                    return e 
                }), 
                odd: st(function(e, t) { 
                    for (var n = 1; n < t; n += 2) 
                        e.push(n); 
                    return e 
                }), 
                lt: st(function(e, t, n) { 
                    for (var r = n < 0 ? n + t : n; --r >= 0; ) 
                        e.push(r); 
                    return e 
                }), 
                gt: st(function(e, t, n) { 
                    for (var r = n < 0 ? n + t : n; ++r < t; ) 
                        e.push(r); 
                    return e 
                }) 
            } 
        }, 
        f = y.compareDocumentPosition ? function(e, t) { 
            return e === t ? (l = !0, 
            0) : (!e.compareDocumentPosition || !t.compareDocumentPosition ? e.compareDocumentPosition : e.compareDocumentPosition(t) & 4) ? -1 : 1 
        } 
        : function(e, t) { 
            if (e === t) 
                return l = !0, 
                0; 
            if (e.sourceIndex && t.sourceIndex) 
                return e.sourceIndex - t.sourceIndex; 
            var n, r, i = [], s = [], o = e.parentNode, u = t.parentNode, a = o; 
            if (o === u) 
                return ot(e, t); 
            if (!o) 
                return -1; 
            if (!u) 
                return 1; 
            while (a) 
                i.unshift(a), 
                a = a.parentNode; 
            a = u; 
            while (a) 
                s.unshift(a), 
                a = a.parentNode; 
            n = i.length, 
            r = s.length; 
            for (var f = 0; f < n && f < r; f++) 
                if (i[f] !== s[f]) 
                    return ot(i[f], s[f]); 
            return f === n ? ot(e, s[f], -1) : ot(i[f], t, 1) 
        } 
        , 
        [0, 0].sort(f), 
        h = !l, 
        nt.uniqueSort = function(e) { 
            var t, n = [], r = 1, i = 0; 
            l = h, 
            e.sort(f); 
            if (l) { 
                for (; t = e[r]; r++) 
                    t === e[r - 1] && (i = n.push(r)); 
                while (i--) 
                    e.splice(n[i], 1) 
            } 
            return e 
        } 
        , 
        nt.error = function(e) { 
            throw new Error("Syntax error, unrecognized expression: " + e) 
        } 
        , 
        a = nt.compile = function(e, t) { 
            var n, r = [], i = [], s = A[d][e + " "]; 
            if (!s) { 
                t || (t = ut(e)), 
                n = t.length; 
                while (n--) 
                    s = ht(t[n]), 
                    s[d] ? r.push(s) : i.push(s); 
                s = A(e, pt(i, r)) 
            } 
            return s 
        } 
        , 
        g.querySelectorAll && function() { 
            var e, t = vt, n = /'|\/g, r = /\=[ 	
]*([^'"\]]*)[ 	
]*\]/g, i = [":focus"], s = [":active"], u = y.matchesSelector || y.mozMatchesSelector || y.webkitMatchesSelector || y.oMatchesSelector || y.msMatchesSelector; 
            K(function(e) { 
                e.innerHTML = "<select><option selected=''></option></select>", 
                e.querySelectorAll("[selected]").length || i.push("\[" + O + "*(?:checked|disabled|ismap|multiple|readonly|selected|value)"), 
                e.querySelectorAll(":checked").length || i.push(":checked") 
            }), 
            K(function(e) { 
                e.innerHTML = "<p test=''></p>", 
                e.querySelectorAll("[test^='']").length && i.push("[*^$]=" + O + "*(?:\"\"|'')"), 
                e.innerHTML = "<input type='hidden'/>", 
                e.querySelectorAll(":enabled").length || i.push(":enabled", ":disabled") 
            }), 
            i = new RegExp(i.join("|")), 
            vt = function(e, r, s, o, u) { 
                if (!o && !u && !i.test(e)) { 
                    var a, f, l = !0, c = d, h = r, p = r.nodeType === 9 && e; 
                    if (r.nodeType === 1 && r.nodeName.toLowerCase() !== "object") { 
                        a = ut(e), 
                        (l = r.getAttribute("id")) ? c = l.replace(n, "\$&") : r.setAttribute("id", c), 
                        c = "[id='" + c + "'] ", 
                        f = a.length; 
                        while (f--) 
                            a[f] = c + a[f].join(""); 
                        h = z.test(e) && r.parentNode || r, 
                        p = a.join(",") 
                    } 
                    if (p) 
                        try { 
                            return S.apply(s, x.call(h.querySelectorAll(p), 0)), 
                            s 
                        } catch (v) {} finally { 
                            l || r.removeAttribute("id") 
                        } 
                } 
                return t(e, r, s, o, u) 
            } 
            , 
            u && (K(function(t) { 
                e = u.call(t, "div"); 
                try { 
                    u.call(t, "[test!='']:sizzle"), 
                    s.push("!=", H) 
                } catch (n) {} 
            }), 
            s = new RegExp(s.join("|")), 
            nt.matchesSelector = function(t, n) { 
                n = n.replace(r, "='$1']"); 
                if (!o(t) && !s.test(n) && !i.test(n)) 
                    try { 
                        var a = u.call(t, n); 
                        if (a || e || t.document && t.document.nodeType !== 11) 
                            return a 
                    } catch (f) {} 
                return nt(n, null, null, [t]).length > 0 
            } 
            ) 
        }(), 
        i.pseudos.nth = i.pseudos.eq, 
        i.filters = mt.prototype = i.pseudos, 
        i.setFilters = new mt, 
        nt.attr = v.attr, 
        v.find = nt, 
        v.expr = nt.selectors, 
        v.expr[":"] = v.expr.pseudos, 
        v.unique = nt.uniqueSort, 
        v.text = nt.getText, 
        v.isXMLDoc = nt.isXML, 
        v.contains = nt.contains 
    }(e); 
    var nt = /Until$/ 
      , rt = /^(?:parents|prev(?:Until|All))/ 
      , it = /^.[^:#\[\.,]*$/ 
      , st = v.expr.match.needsContext 
      , ot = { 
        children: !0, 
        contents: !0, 
        next: !0, 
        prev: !0 
    }; 
    v.fn.extend({ 
        find: function(e) { 
            var t, n, r, i, s, o, u = this; 
            if (typeof e != "string") 
                return v(e).filter(function() { 
                    for (t = 0, 
                    n = u.length; t < n; t++) 
                        if (v.contains(u[t], this)) 
                            return !0 
                }); 
            o = this.pushStack("", "find", e); 
            for (t = 0, 
            n = this.length; t < n; t++) { 
                r = o.length, 
                v.find(e, this[t], o); 
                if (t > 0) 
                    for (i = r; i < o.length; i++) 
                        for (s = 0; s < r; s++) 
                            if (o[s] === o[i]) { 
                                o.splice(i--, 1); 
                                break 
                            } 
            } 
            return o 
        }, 
        has: function(e) { 
            var t, n = v(e, this), r = n.length; 
            return this.filter(function() { 
                for (t = 0; t < r; t++) 
                    if (v.contains(this, n[t])) 
                        return !0 
            }) 
        }, 
        not: function(e) { 
            return this.pushStack(ft(this, e, !1), "not", e) 
        }, 
        filter: function(e) { 
            return this.pushStack(ft(this, e, !0), "filter", e) 
        }, 
        is: function(e) { 
            return !!e && (typeof e == "string" ? st.test(e) ? v(e, this.context).index(this[0]) >= 0 : v.filter(e, this).length > 0 : this.filter(e).length > 0) 
        }, 
        closest: function(e, t) { 
            var n, r = 0, i = this.length, s = [], o = st.test(e) || typeof e != "string" ? v(e, t || this.context) : 0; 
            for (; r < i; r++) { 
                n = this[r]; 
                while (n && n.ownerDocument && n !== t && n.nodeType !== 11) { 
                    if (o ? o.index(n) > -1 : v.find.matchesSelector(n, e)) { 
                        s.push(n); 
                        break 
                    } 
                    n = n.parentNode 
                } 
            } 
            return s = s.length > 1 ? v.unique(s) : s, 
            this.pushStack(s, "closest", e) 
        }, 
        index: function(e) { 
            return e ? typeof e == "string" ? v.inArray(this[0], v(e)) : v.inArray(e.jquery ? e[0] : e, this) : this[0] && this[0].parentNode ? this.prevAll().length : -1 
        }, 
        add: function(e, t) { 
            var n = typeof e == "string" ? v(e, t) : v.makeArray(e && e.nodeType ? [e] : e) 
              , r = v.merge(this.get(), n); 
            return this.pushStack(ut(n[0]) || ut(r[0]) ? r : v.unique(r)) 
        }, 
        addBack: function(e) { 
            return this.add(e == null ? this.prevObject : this.prevObject.filter(e)) 
        } 
    }), 
    v.fn.andSelf = v.fn.addBack, 
    v.each({ 
        parent: function(e) { 
            var t = e.parentNode; 
            return t && t.nodeType !== 11 ? t : null 
        }, 
        parents: function(e) { 
            return v.dir(e, "parentNode") 
        }, 
        parentsUntil: function(e, t, n) { 
            return v.dir(e, "parentNode", n) 
        }, 
        next: function(e) { 
            return at(e, "nextSibling") 
        }, 
        prev: function(e) { 
            return at(e, "previousSibling") 
        }, 
        nextAll: function(e) { 
            return v.dir(e, "nextSibling") 
        }, 
        prevAll: function(e) { 
            return v.dir(e, "previousSibling") 
        }, 
        nextUntil: function(e, t, n) { 
            return v.dir(e, "nextSibling", n) 
        }, 
        prevUntil: function(e, t, n) { 
            return v.dir(e, "previousSibling", n) 
        }, 
        siblings: function(e) { 
            return v.sibling((e.parentNode || {}).firstChild, e) 
        }, 
        children: function(e) { 
            return v.sibling(e.firstChild) 
        }, 
        contents: function(e) { 
            return v.nodeName(e, "iframe") ? e.contentDocument || e.contentWindow.document : v.merge([], e.childNodes) 
        } 
    }, function(e, t) { 
        v.fn[e] = function(n, r) { 
            var i = v.map(this, t, n); 
            return nt.test(e) || (r = n), 
            r && typeof r == "string" && (i = v.filter(r, i)), 
            i = this.length > 1 && !ot[e] ? v.unique(i) : i, 
            this.length > 1 && rt.test(e) && (i = i.reverse()), 
            this.pushStack(i, e, l.call(arguments).join(",")) 
        } 
    }), 
    v.extend({ 
        filter: function(e, t, n) { 
            return n && (e = ":not(" + e + ")"), 
            t.length === 1 ? v.find.matchesSelector(t[0], e) ? [t[0]] : [] : v.find.matches(e, t) 
        }, 
        dir: function(e, n, r) { 
            var i = [] 
              , s = e[n]; 
            while (s && s.nodeType !== 9 && (r === t || s.nodeType !== 1 || !v(s).is(r))) 
                s.nodeType === 1 && i.push(s), 
                s = s[n]; 
            return i 
        }, 
        sibling: function(e, t) { 
            var n = []; 
            for (; e; e = e.nextSibling) 
                e.nodeType === 1 && e !== t && n.push(e); 
            return n 
        } 
    }); 
    var ct = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video" 
      , ht = / jQuery\d+="(?:null|\d+)"/g 
      , pt = /^\s+/ 
      , dt = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi 
      , vt = /<([\w:]+)/ 
      , mt = /<tbody/i 
      , gt = /<|&#?\w+;/ 
      , yt = /<(?:script|style|link)/i 
      , bt = /<(?:script|object|embed|option|style)/i 
      , wt = new RegExp("<(?:" + ct + ")[\s/>]","i") 
      , Et = /^(?:checkbox|radio)$/ 
      , St = /checked\s*(?:[^=]|=\s*.checked.)/i 
      , xt = /\/(java|ecma)script/i 
      , Tt = /^\s*<!(?:\[CDATA\[|\-\-)|[\]\-]{2}>\s*$/g 
      , Nt = { 
        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, "", ""] 
    } 
      , Ct = lt(i) 
      , kt = Ct.appendChild(i.createElement("div")); 
    Nt.optgroup = Nt.option, 
    Nt.tbody = Nt.tfoot = Nt.colgroup = Nt.caption = Nt.thead, 
    Nt.th = Nt.td, 
    v.support.htmlSerialize || (Nt._default = [1, "X<div>", "</div>"]), 
    v.fn.extend({ 
        text: function(e) { 
            return v.access(this, function(e) { 
                return e === t ? v.text(this) : this.empty().append((this[0] && this[0].ownerDocument || i).createTextNode(e)) 
            }, null, e, arguments.length) 
        }, 
        wrapAll: function(e) { 
            if (v.isFunction(e)) 
                return this.each(function(t) { 
                    v(this).wrapAll(e.call(this, t)) 
                }); 
            if (this[0]) { 
                var t = v(e, this[0].ownerDocument).eq(0).clone(!0); 
                this[0].parentNode && t.insertBefore(this[0]), 
                t.map(function() { 
                    var e = this; 
                    while (e.firstChild && e.firstChild.nodeType === 1) 
                        e = e.firstChild; 
                    return e 
                }).append(this) 
            } 
            return this 
        }, 
        wrapInner: function(e) { 
            return v.isFunction(e) ? this.each(function(t) { 
                v(this).wrapInner(e.call(this, t)) 
            }) : this.each(function() { 
                var t = v(this) 
                  , n = t.contents(); 
                n.length ? n.wrapAll(e) : t.append(e) 
            }) 
        }, 
        wrap: function(e) { 
            var t = v.isFunction(e); 
            return this.each(function(n) { 
                v(this).wrapAll(t ? e.call(this, n) : e) 
            }) 
        }, 
        unwrap: function() { 
            return this.parent().each(function() { 
                v.nodeName(this, "body") || v(this).replaceWith(this.childNodes) 
            }).end() 
        }, 
        append: function() { 
            return this.domManip(arguments, !0, function(e) { 
                (this.nodeType === 1 || this.nodeType === 11) && this.appendChild(e) 
            }) 
        }, 
        prepend: function() { 
            return this.domManip(arguments, !0, function(e) { 
                (this.nodeType === 1 || this.nodeType === 11) && this.insertBefore(e, this.firstChild) 
            }) 
        }, 
        before: function() { 
            if (!ut(this[0])) 
                return this.domManip(arguments, !1, function(e) { 
                    this.parentNode.insertBefore(e, this) 
                }); 
            if (arguments.length) { 
                var e = v.clean(arguments); 
                return this.pushStack(v.merge(e, this), "before", this.selector) 
            } 
        }, 
        after: function() { 
            if (!ut(this[0])) 
                return this.domManip(arguments, !1, function(e) { 
                    this.parentNode.insertBefore(e, this.nextSibling) 
                }); 
            if (arguments.length) { 
                var e = v.clean(arguments); 
                return this.pushStack(v.merge(this, e), "after", this.selector) 
            } 
        }, 
        remove: function(e, t) { 
            var n, r = 0; 
            for (; (n = this[r]) != null; r++) 
                if (!e || v.filter(e, [n]).length) 
                    !t && n.nodeType === 1 && (v.cleanData(n.getElementsByTagName("*")), 
                    v.cleanData([n])), 
                    n.parentNode && n.parentNode.removeChild(n); 
            return this 
        }, 
        empty: function() { 
            var e, t = 0; 
            for (; (e = this[t]) != null; t++) { 
                e.nodeType === 1 && v.cleanData(e.getElementsByTagName("*")); 
                while (e.firstChild) 
                    e.removeChild(e.firstChild) 
            } 
            return this 
        }, 
        clone: function(e, t) { 
            return e = e == null ? !1 : e, 
            t = t == null ? e : t, 
            this.map(function() { 
                return v.clone(this, e, t) 
            }) 
        }, 
        html: function(e) { 
            return v.access(this, function(e) { 
                var n = this[0] || {} 
                  , r = 0 
                  , i = this.length; 
                if (e === t) 
                    return n.nodeType === 1 ? n.innerHTML.replace(ht, "") : t; 
                if (typeof e == "string" && !yt.test(e) && (v.support.htmlSerialize || !wt.test(e)) && (v.support.leadingWhitespace || !pt.test(e)) && !Nt[(vt.exec(e) || ["", ""])[1].toLowerCase()]) { 
                    e = e.replace(dt, "<$1></$2>"); 
                    try { 
                        for (; r < i; r++) 
                            n = this[r] || {}, 
                            n.nodeType === 1 && (v.cleanData(n.getElementsByTagName("*")), 
                            n.innerHTML = e); 
                        n = 0 
                    } catch (s) {} 
                } 
                n && this.empty().append(e) 
            }, null, e, arguments.length) 
        }, 
        replaceWith: function(e) { 
            return ut(this[0]) ? this.length ? this.pushStack(v(v.isFunction(e) ? e() : e), "replaceWith", e) : this : v.isFunction(e) ? this.each(function(t) { 
                var n = v(this) 
                  , r = n.html(); 
                n.replaceWith(e.call(this, t, r)) 
            }) : (typeof e != "string" && (e = v(e).detach()), 
            this.each(function() { 
                var t = this.nextSibling 
                  , n = this.parentNode; 
                v(this).remove(), 
                t ? v(t).before(e) : v(n).append(e) 
            })) 
        }, 
        detach: function(e) { 
            return this.remove(e, !0) 
        }, 
        domManip: function(e, n, r) { 
            e = [].concat.apply([], e); 
            var i, s, o, u, a = 0, f = e[0], l = [], c = this.length; 
            if (!v.support.checkClone && c > 1 && typeof f == "string" && St.test(f)) 
                return this.each(function() { 
                    v(this).domManip(e, n, r) 
                }); 
            if (v.isFunction(f)) 
                return this.each(function(i) { 
                    var s = v(this); 
                    e[0] = f.call(this, i, n ? s.html() : t), 
                    s.domManip(e, n, r) 
                }); 
            if (this[0]) { 
                i = v.buildFragment(e, this, l), 
                o = i.fragment, 
                s = o.firstChild, 
                o.childNodes.length === 1 && (o = s); 
                if (s) { 
                    n = n && v.nodeName(s, "tr"); 
                    for (u = i.cacheable || c - 1; a < c; a++) 
                        r.call(n && v.nodeName(this[a], "table") ? Lt(this[a], "tbody") : this[a], a === u ? o : v.clone(o, !0, !0)) 
                } 
                o = s = null, 
                l.length && v.each(l, function(e, t) { 
                    t.src ? v.ajax ? v.ajax({ 
                        url: t.src, 
                        type: "GET", 
                        dataType: "script", 
                        async: !1, 
                        global: !1, 
                        "throws": !0 
                    }) : v.error("no ajax") : v.globalEval((t.text || t.textContent || t.innerHTML || "").replace(Tt, "")), 
                    t.parentNode && t.parentNode.removeChild(t) 
                }) 
            } 
            return this 
        } 
    }), 
    v.buildFragment = function(e, n, r) { 
        var s, o, u, a = e[0]; 
        return n = n || i, 
        n = !n.nodeType && n[0] || n, 
        n = n.ownerDocument || n, 
        e.length === 1 && typeof a == "string" && a.length < 512 && n === i && a.charAt(0) === "<" && !bt.test(a) && (v.support.checkClone || !St.test(a)) && (v.support.html5Clone || !wt.test(a)) && (o = !0, 
        s = v.fragments[a], 
        u = s !== t), 
        s || (s = n.createDocumentFragment(), 
        v.clean(e, n, s, r), 
        o && (v.fragments[a] = u && s)), 
        { 
            fragment: s, 
            cacheable: o 
        } 
    } 
    , 
    v.fragments = {}, 
    v.each({ 
        appendTo: "append", 
        prependTo: "prepend", 
        insertBefore: "before", 
        insertAfter: "after", 
        replaceAll: "replaceWith" 
    }, function(e, t) { 
        v.fn[e] = function(n) { 
            var r, i = 0, s = [], o = v(n), u = o.length, a = this.length === 1 && this[0].parentNode; 
            if ((a == null || a && a.nodeType === 11 && a.childNodes.length === 1) && u === 1) 
                return o[t](this[0]), 
                this; 
            for (; i < u; i++) 
                r = (i > 0 ? this.clone(!0) : this).get(), 
                v(o[i])[t](r), 
                s = s.concat(r); 
            return this.pushStack(s, e, o.selector) 
        } 
    }), 
    v.extend({ 
        clone: function(e, t, n) { 
            var r, i, s, o; 
            v.support.html5Clone || v.isXMLDoc(e) || !wt.test("<" + e.nodeName + ">") ? o = e.cloneNode(!0) : (kt.innerHTML = e.outerHTML, 
            kt.removeChild(o = kt.firstChild)); 
            if ((!v.support.noCloneEvent || !v.support.noCloneChecked) && (e.nodeType === 1 || e.nodeType === 11) && !v.isXMLDoc(e)) { 
                Ot(e, o), 
                r = Mt(e), 
                i = Mt(o); 
                for (s = 0; r[s]; ++s) 
                    i[s] && Ot(r[s], i[s]) 
            } 
            if (t) { 
                At(e, o); 
                if (n) { 
                    r = Mt(e), 
                    i = Mt(o); 
                    for (s = 0; r[s]; ++s) 
                        At(r[s], i[s]) 
                } 
            } 
            return r = i = null, 
            o 
        }, 
        clean: function(e, t, n, r) { 
            var s, o, u, a, f, l, c, h, p, d, m, g, y = t === i && Ct, b = []; 
            if (!t || typeof t.createDocumentFragment == "undefined") 
                t = i; 
            for (s = 0; (u = e[s]) != null; s++) { 
                typeof u == "number" && (u += ""); 
                if (!u) 
                    continue; 
                if (typeof u == "string") 
                    if (!gt.test(u)) 
                        u = t.createTextNode(u); 
                    else { 
                        y = y || lt(t), 
                        c = t.createElement("div"), 
                        y.appendChild(c), 
                        u = u.replace(dt, "<$1></$2>"), 
                        a = (vt.exec(u) || ["", ""])[1].toLowerCase(), 
                        f = Nt[a] || Nt._default, 
                        l = f[0], 
                        c.innerHTML = f[1] + u + f[2]; 
                        while (l--) 
                            c = c.lastChild; 
                        if (!v.support.tbody) { 
                            h = mt.test(u), 
                            p = a === "table" && !h ? c.firstChild && c.firstChild.childNodes : f[1] === "<table>" && !h ? c.childNodes : []; 
                            for (o = p.length - 1; o >= 0; --o) 
                                v.nodeName(p[o], "tbody") && !p[o].childNodes.length && p[o].parentNode.removeChild(p[o]) 
                        } 
                        !v.support.leadingWhitespace && pt.test(u) && c.insertBefore(t.createTextNode(pt.exec(u)[0]), c.firstChild), 
                        u = c.childNodes, 
                        c.parentNode.removeChild(c) 
                    } 
                u.nodeType ? b.push(u) : v.merge(b, u) 
            } 
            c && (u = c = y = null); 
            if (!v.support.appendChecked) 
                for (s = 0; (u = b[s]) != null; s++) 
                    v.nodeName(u, "input") ? _t(u) : typeof u.getElementsByTagName != "undefined" && v.grep(u.getElementsByTagName("input"), _t); 
            if (n) { 
                m = function(e) { 
                    if (!e.type || xt.test(e.type)) 
                        return r ? r.push(e.parentNode ? e.parentNode.removeChild(e) : e) : n.appendChild(e) 
                } 
                ; 
                for (s = 0; (u = b[s]) != null; s++) 
                    if (!v.nodeName(u, "script") || !m(u)) 
                        n.appendChild(u), 
                        typeof u.getElementsByTagName != "undefined" && (g = v.grep(v.merge([], u.getElementsByTagName("script")), m), 
                        b.splice.apply(b, [s + 1, 0].concat(g)), 
                        s += g.length) 
            } 
            return b 
        }, 
        cleanData: function(e, t) { 
            var n, r, i, s, o = 0, u = v.expando, a = v.cache, f = v.support.deleteExpando, l = v.event.special; 
            for (; (i = e[o]) != null; o++) 
                if (t || v.acceptData(i)) { 
                    r = i[u], 
                    n = r && a[r]; 
                    if (n) { 
                        if (n.events) 
                            for (s in n.events) 
                                l[s] ? v.event.remove(i, s) : v.removeEvent(i, s, n.handle); 
                        a[r] && (delete a[r], 
                        f ? delete i[u] : i.removeAttribute ? i.removeAttribute(u) : i[u] = null, 
                        v.deletedIds.push(r)) 
                    } 
                } 
        } 
    }), 
    function() { 
        var e, t; 
        v.uaMatch = function(e) { 
            e = e.toLowerCase(); 
            var t = /(chrome)[ \/]([\w.]+)/.exec(e) || /(webkit)[ \/]([\w.]+)/.exec(e) || /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(e) || /(msie) ([\w.]+)/.exec(e) || e.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(e) || []; 
            return { 
                browser: t[1] || "", 
                version: t[2] || "0" 
            } 
        } 
        , 
        e = v.uaMatch(o.userAgent), 
        t = {}, 
        e.browser && (t[e.browser] = !0, 
        t.version = e.version), 
        t.chrome ? t.webkit = !0 : t.webkit && (t.safari = !0), 
        v.browser = t, 
        v.sub = function() { 
            function e(t, n) { 
                return new e.fn.init(t,n) 
            } 
            v.extend(!0, e, this), 
            e.superclass = this, 
            e.fn = e.prototype = this(), 
            e.fn.constructor = e, 
            e.sub = this.sub, 
            e.fn.init = function(r, i) { 
                return i && i instanceof v && !(i instanceof e) && (i = e(i)), 
                v.fn.init.call(this, r, i, t) 
            } 
            , 
            e.fn.init.prototype = e.fn; 
            var t = e(i); 
            return e 
        } 
    }(); 
    var Dt, Pt, Ht, Bt = /alpha\([^)]*\)/i, jt = /opacity=([^)]*)/, Ft = /^(top|right|bottom|left)$/, It = /^(none|table(?!-c[ea]).+)/, qt = /^margin/, Rt = new RegExp("^(" + m + ")(.*)$","i"), Ut = new RegExp("^(" + m + ")(?!px)[a-z%]+$","i"), zt = new RegExp("^([-+])=(" + m + ")","i"), Wt = { 
        BODY: "block" 
    }, Xt = { 
        position: "absolute", 
        visibility: "hidden", 
        display: "block" 
    }, Vt = { 
        letterSpacing: 0, 
        fontWeight: 400 
    }, $t = ["Top", "Right", "Bottom", "Left"], Jt = ["Webkit", "O", "Moz", "ms"], Kt = v.fn.toggle; 
    v.fn.extend({ 
        css: function(e, n) { 
            return v.access(this, function(e, n, r) { 
                return r !== t ? v.style(e, n, r) : v.css(e, n) 
            }, e, n, arguments.length > 1) 
        }, 
        show: function() { 
            return Yt(this, !0) 
        }, 
        hide: function() { 
            return Yt(this) 
        }, 
        toggle: function(e, t) { 
            var n = typeof e == "boolean"; 
            return v.isFunction(e) && v.isFunction(t) ? Kt.apply(this, arguments) : this.each(function() { 
                (n ? e : Gt(this)) ? v(this).show() : v(this).hide() 
            }) 
        } 
    }), 
    v.extend({ 
        cssHooks: { 
            opacity: { 
                get: function(e, t) { 
                    if (t) { 
                        var n = Dt(e, "opacity"); 
                        return n === "" ? "1" : n 
                    } 
                } 
            } 
        }, 
        cssNumber: { 
            fillOpacity: !0, 
            fontWeight: !0, 
            lineHeight: !0, 
            opacity: !0, 
            orphans: !0, 
            widows: !0, 
            zIndex: !0, 
            zoom: !0 
        }, 
        cssProps: { 
            "float": v.support.cssFloat ? "cssFloat" : "styleFloat" 
        }, 
        style: function(e, n, r, i) { 
            if (!e || e.nodeType === 3 || e.nodeType === 8 || !e.style) 
                return; 
            var s, o, u, a = v.camelCase(n), f = e.style; 
            n = v.cssProps[a] || (v.cssProps[a] = Qt(f, a)), 
            u = v.cssHooks[n] || v.cssHooks[a]; 
            if (r === t) 
                return u && "get"in u && (s = u.get(e, !1, i)) !== t ? s : f[n]; 
            o = typeof r, 
            o === "string" && (s = zt.exec(r)) && (r = (s[1] + 1) * s[2] + parseFloat(v.css(e, n)), 
            o = "number"); 
            if (r == null || o === "number" && isNaN(r)) 
                return; 
            o === "number" && !v.cssNumber[a] && (r += "px"); 
            if (!u || !("set"in u) || (r = u.set(e, r, i)) !== t) 
                try { 
                    f[n] = r 
                } catch (l) {} 
        }, 
        css: function(e, n, r, i) { 
            var s, o, u, a = v.camelCase(n); 
            return n = v.cssProps[a] || (v.cssProps[a] = Qt(e.style, a)), 
            u = v.cssHooks[n] || v.cssHooks[a], 
            u && "get"in u && (s = u.get(e, !0, i)), 
            s === t && (s = Dt(e, n)), 
            s === "normal" && n in Vt && (s = Vt[n]), 
            r || i !== t ? (o = parseFloat(s), 
            r || v.isNumeric(o) ? o || 0 : s) : s 
        }, 
        swap: function(e, t, n) { 
            var r, i, s = {}; 
            for (i in t) 
                s[i] = e.style[i], 
                e.style[i] = t[i]; 
            r = n.call(e); 
            for (i in t) 
                e.style[i] = s[i]; 
            return r 
        } 
    }), 
    e.getComputedStyle ? Dt = function(t, n) { 
        var r, i, s, o, u = e.getComputedStyle(t, null), a = t.style; 
        return u && (r = u.getPropertyValue(n) || u[n], 
        r === "" && !v.contains(t.ownerDocument, t) && (r = v.style(t, n)), 
        Ut.test(r) && qt.test(n) && (i = a.width, 
        s = a.minWidth, 
        o = a.maxWidth, 
        a.minWidth = a.maxWidth = a.width = r, 
        r = u.width, 
        a.width = i, 
        a.minWidth = s, 
        a.maxWidth = o)), 
        r 
    } 
    : i.documentElement.currentStyle && (Dt = function(e, t) { 
        var n, r, i = e.currentStyle && e.currentStyle[t], s = e.style; 
        return i == null && s && s[t] && (i = s[t]), 
        Ut.test(i) && !Ft.test(t) && (n = s.left, 
        r = e.runtimeStyle && e.runtimeStyle.left, 
        r && (e.runtimeStyle.left = e.currentStyle.left), 
        s.left = t === "fontSize" ? "1em" : i, 
        i = s.pixelLeft + "px", 
        s.left = n, 
        r && (e.runtimeStyle.left = r)), 
        i === "" ? "auto" : i 
    } 
    ), 
    v.each(["height", "width"], function(e, t) { 
        v.cssHooks[t] = { 
            get: function(e, n, r) { 
                if (n) 
                    return e.offsetWidth === 0 && It.test(Dt(e, "display")) ? v.swap(e, Xt, function() { 
                        return tn(e, t, r) 
                    }) : tn(e, t, r) 
            }, 
            set: function(e, n, r) { 
                return Zt(e, n, r ? en(e, t, r, v.support.boxSizing && v.css(e, "boxSizing") === "border-box") : 0) 
            } 
        } 
    }), 
    v.support.opacity || (v.cssHooks.opacity = { 
        get: function(e, t) { 
            return jt.test((t && e.currentStyle ? e.currentStyle.filter : e.style.filter) || "") ? .01 * parseFloat(RegExp.$1) + "" : t ? "1" : "" 
        }, 
        set: function(e, t) { 
            var n = e.style 
              , r = e.currentStyle 
              , i = v.isNumeric(t) ? "alpha(opacity=" + t * 100 + ")" : "" 
              , s = r && r.filter || n.filter || ""; 
            n.zoom = 1; 
            if (t >= 1 && v.trim(s.replace(Bt, "")) === "" && n.removeAttribute) { 
                n.removeAttribute("filter"); 
                if (r && !r.filter) 
                    return 
            } 
            n.filter = Bt.test(s) ? s.replace(Bt, i) : s + " " + i 
        } 
    }), 
    v(function() { 
        v.support.reliableMarginRight || (v.cssHooks.marginRight = { 
            get: function(e, t) { 
                return v.swap(e, { 
                    display: "inline-block" 
                }, function() { 
                    if (t) 
                        return Dt(e, "marginRight") 
                }) 
            } 
        }), 
        !v.support.pixelPosition && v.fn.position && v.each(["top", "left"], function(e, t) { 
            v.cssHooks[t] = { 
                get: function(e, n) { 
                    if (n) { 
                        var r = Dt(e, t); 
                        return Ut.test(r) ? v(e).position()[t] + "px" : r 
                    } 
                } 
            } 
        }) 
    }), 
    v.expr && v.expr.filters && (v.expr.filters.hidden = function(e) { 
        return e.offsetWidth === 0 && e.offsetHeight === 0 || !v.support.reliableHiddenOffsets && (e.style && e.style.display || Dt(e, "display")) === "none" 
    } 
    , 
    v.expr.filters.visible = function(e) { 
        return !v.expr.filters.hidden(e) 
    } 
    ), 
    v.each({ 
        margin: "", 
        padding: "", 
        border: "Width" 
    }, function(e, t) { 
        v.cssHooks[e + t] = { 
            expand: function(n) { 
                var r, i = typeof n == "string" ? n.split(" ") : [n], s = {}; 
                for (r = 0; r < 4; r++) 
                    s[e + $t[r] + t] = i[r] || i[r - 2] || i[0]; 
                return s 
            } 
        }, 
        qt.test(e) || (v.cssHooks[e + t].set = Zt) 
    }); 
    var rn = /%20/g 
      , sn = /\[\]$/ 
      , on = /
?
/g 
      , un = /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i 
      , an = /^(?:select|textarea)/i; 
    v.fn.extend({ 
        serialize: function() { 
            return v.param(this.serializeArray()) 
        }, 
        serializeArray: function() { 
            return this.map(function() { 
                return this.elements ? v.makeArray(this.elements) : this 
            }).filter(function() { 
                return this.name && !this.disabled && (this.checked || an.test(this.nodeName) || un.test(this.type)) 
            }).map(function(e, t) { 
                var n = v(this).val(); 
                return n == null ? null : v.isArray(n) ? v.map(n, function(e, n) { 
                    return { 
                        name: t.name, 
                        value: e.replace(on, "
") 
                    } 
                }) : { 
                    name: t.name, 
                    value: n.replace(on, "
") 
                } 
            }).get() 
        } 
    }), 
    v.param = function(e, n) { 
        var r, i = [], s = function(e, t) { 
            t = v.isFunction(t) ? t() : t == null ? "" : t, 
            i[i.length] = encodeURIComponent(e) + "=" + encodeURIComponent(t) 
        }; 
        n === t && (n = v.ajaxSettings && v.ajaxSettings.traditional); 
        if (v.isArray(e) || e.jquery && !v.isPlainObject(e)) 
            v.each(e, function() { 
                s(this.name, this.value) 
            }); 
        else 
            for (r in e) 
                fn(r, e[r], n, s); 
        return i.join("&").replace(rn, "+") 
    } 
    ; 
    var ln, cn, hn = /#.*$/, pn = /^(.*?):[ 	]*([^
]*)
?$/mg, dn = /^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/, vn = /^(?:GET|HEAD)$/, mn = /^\/\//, gn = /\?/, yn = /<script[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi, bn = /([?&])_=[^&]*/, wn = /^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/, En = v.fn.load, Sn = {}, xn = {}, Tn = ["*/"] + ["*"]; 
    try { 
        cn = s.href 
    } catch (Nn) { 
        cn = i.createElement("a"), 
        cn.href = "", 
        cn = cn.href 
    } 
    ln = wn.exec(cn.toLowerCase()) || [], 
    v.fn.load = function(e, n, r) { 
        if (typeof e != "string" && En) 
            return En.apply(this, arguments); 
        if (!this.length) 
            return this; 
        var i, s, o, u = this, a = e.indexOf(" "); 
        return a >= 0 && (i = e.slice(a, e.length), 
        e = e.slice(0, a)), 
        v.isFunction(n) ? (r = n, 
        n = t) : n && typeof n == "object" && (s = "POST"), 
        v.ajax({ 
            url: e, 
            type: s, 
            dataType: "html", 
            data: n, 
            complete: function(e, t) { 
                r && u.each(r, o || [e.responseText, t, e]) 
            } 
        }).done(function(e) { 
            o = arguments, 
            u.html(i ? v("<div>").append(e.replace(yn, "")).find(i) : e) 
        }), 
        this 
    } 
    , 
    v.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), function(e, t) { 
        v.fn[t] = function(e) { 
            return this.on(t, e) 
        } 
    }), 
    v.each(["get", "post"], function(e, n) { 
        v[n] = function(e, r, i, s) { 
            return v.isFunction(r) && (s = s || i, 
            i = r, 
            r = t), 
            v.ajax({ 
                type: n, 
                url: e, 
                data: r, 
                success: i, 
                dataType: s 
            }) 
        } 
    }), 
    v.extend({ 
        getScript: function(e, n) { 
            return v.get(e, t, n, "script") 
        }, 
        getJSON: function(e, t, n) { 
            return v.get(e, t, n, "json") 
        }, 
        ajaxSetup: function(e, t) { 
            return t ? Ln(e, v.ajaxSettings) : (t = e, 
            e = v.ajaxSettings), 
            Ln(e, t), 
            e 
        }, 
        ajaxSettings: { 
            url: cn, 
            isLocal: dn.test(ln[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", 
                "*": Tn 
            }, 
            contents: { 
                xml: /xml/, 
                html: /html/, 
                json: /json/ 
            }, 
            responseFields: { 
                xml: "responseXML", 
                text: "responseText" 
            }, 
            converters: { 
                "* text": e.String, 
                "text html": !0, 
                "text json": v.parseJSON, 
                "text xml": v.parseXML 
            }, 
            flatOptions: { 
                context: !0, 
                url: !0 
            } 
        }, 
        ajaxPrefilter: Cn(Sn), 
        ajaxTransport: Cn(xn), 
        ajax: function(e, n) { 
            function T(e, n, s, a) { 
                var l, y, b, w, S, T = n; 
                if (E === 2) 
                    return; 
                E = 2, 
                u && clearTimeout(u), 
                o = t, 
                i = a || "", 
                x.readyState = e > 0 ? 4 : 0, 
                s && (w = An(c, x, s)); 
                if (e >= 200 && e < 300 || e === 304) 
                    c.ifModified && (S = x.getResponseHeader("Last-Modified"), 
                    S && (v.lastModified[r] = S), 
                    S = x.getResponseHeader("Etag"), 
                    S && (v.etag[r] = S)), 
                    e === 304 ? (T = "notmodified", 
                    l = !0) : (l = On(c, w), 
                    T = l.state, 
                    y = l.data, 
                    b = l.error, 
                    l = !b); 
                else { 
                    b = T; 
                    if (!T || e) 
                        T = "error", 
                        e < 0 && (e = 0) 
                } 
                x.status = e, 
                x.statusText = (n || T) + "", 
                l ? d.resolveWith(h, [y, T, x]) : d.rejectWith(h, [x, T, b]), 
                x.statusCode(g), 
                g = t, 
                f && p.trigger("ajax" + (l ? "Success" : "Error"), [x, c, l ? y : b]), 
                m.fireWith(h, [x, T]), 
                f && (p.trigger("ajaxComplete", [x, c]), 
                --v.active || v.event.trigger("ajaxStop")) 
            } 
            typeof e == "object" && (n = e, 
            e = t), 
            n = n || {}; 
            var r, i, s, o, u, a, f, l, c = v.ajaxSetup({}, n), h = c.context || c, p = h !== c && (h.nodeType || h instanceof v) ? v(h) : v.event, d = v.Deferred(), m = v.Callbacks("once memory"), g = c.statusCode || {}, b = {}, w = {}, E = 0, S = "canceled", x = { 
                readyState: 0, 
                setRequestHeader: function(e, t) { 
                    if (!E) { 
                        var n = e.toLowerCase(); 
                        e = w[n] = w[n] || e, 
                        b[e] = t 
                    } 
                    return this 
                }, 
                getAllResponseHeaders: function() { 
                    return E === 2 ? i : null 
                }, 
                getResponseHeader: function(e) { 
                    var n; 
                    if (E === 2) { 
                        if (!s) { 
                            s = {}; 
                            while (n = pn.exec(i)) 
                                s[n[1].toLowerCase()] = n[2] 
                        } 
                        n = s[e.toLowerCase()] 
                    } 
                    return n === t ? null : n 
                }, 
                overrideMimeType: function(e) { 
                    return E || (c.mimeType = e), 
                    this 
                }, 
                abort: function(e) { 
                    return e = e || S, 
                    o && o.abort(e), 
                    T(0, e), 
                    this 
                } 
            }; 
            d.promise(x), 
            x.success = x.done, 
            x.error = x.fail, 
            x.complete = m.add, 
            x.statusCode = function(e) { 
                if (e) { 
                    var t; 
                    if (E < 2) 
                        for (t in e) 
                            g[t] = [g[t], e[t]]; 
                    else 
                        t = e[x.status], 
                        x.always(t) 
                } 
                return this 
            } 
            , 
            c.url = ((e || c.url) + "").replace(hn, "").replace(mn, ln[1] + "//"), 
            c.dataTypes = v.trim(c.dataType || "*").toLowerCase().split(y), 
            c.crossDomain == null && (a = wn.exec(c.url.toLowerCase()), 
            c.crossDomain = !(!a || a[1] === ln[1] && a[2] === ln[2] && (a[3] || (a[1] === "http:" ? 80 : 443)) == (ln[3] || (ln[1] === "http:" ? 80 : 443)))), 
            c.data && c.processData && typeof c.data != "string" && (c.data = v.param(c.data, c.traditional)), 
            kn(Sn, c, n, x); 
            if (E === 2) 
                return x; 
            f = c.global, 
            c.type = c.type.toUpperCase(), 
            c.hasContent = !vn.test(c.type), 
            f && v.active++ === 0 && v.event.trigger("ajaxStart"); 
            if (!c.hasContent) { 
                c.data && (c.url += (gn.test(c.url) ? "&" : "?") + c.data, 
                delete c.data), 
                r = c.url; 
                if (c.cache === !1) { 
                    var N = v.now() 
                      , C = c.url.replace(bn, "$1_=" + N); 
                    c.url = C + (C === c.url ? (gn.test(c.url) ? "&" : "?") + "_=" + N : "") 
                } 
            } 
            (c.data && c.hasContent && c.contentType !== !1 || n.contentType) && x.setRequestHeader("Content-Type", c.contentType), 
            c.ifModified && (r = r || c.url, 
            v.lastModified[r] && x.setRequestHeader("If-Modified-Since", v.lastModified[r]), 
            v.etag[r] && x.setRequestHeader("If-None-Match", v.etag[r])), 
            x.setRequestHeader("Accept", c.dataTypes[0] && c.accepts[c.dataTypes[0]] ? c.accepts[c.dataTypes[0]] + (c.dataTypes[0] !== "*" ? ", " + Tn + "; q=0.01" : "") : c.accepts["*"]); 
            for (l in c.headers) 
                x.setRequestHeader(l, c.headers[l]); 
            if (!c.beforeSend || c.beforeSend.call(h, x, c) !== !1 && E !== 2) { 
                S = "abort"; 
                for (l in { 
                    success: 1, 
                    error: 1, 
                    complete: 1 
                }) 
                    x[l](c[l]); 
                o = kn(xn, c, n, x); 
                if (!o) 
                    T(-1, "No Transport"); 
                else { 
                    x.readyState = 1, 
                    f && p.trigger("ajaxSend", [x, c]), 
                    c.async && c.timeout > 0 && (u = setTimeout(function() { 
                        x.abort("timeout") 
                    }, c.timeout)); 
                    try { 
                        E = 1, 
                        o.send(b, T) 
                    } catch (k) { 
                        if (!(E < 2)) 
                            throw k; 
                        T(-1, k) 
                    } 
                } 
                return x 
            } 
            return x.abort() 
        }, 
        active: 0, 
        lastModified: {}, 
        etag: {} 
    }); 
    var Mn = [] 
      , _n = /\?/ 
      , Dn = /(=)\?(?=&|$)|\?\?/ 
      , Pn = v.now(); 
    v.ajaxSetup({ 
        jsonp: "callback", 
        jsonpCallback: function() { 
            var e = Mn.pop() || v.expando + "_" + Pn++; 
            return this[e] = !0, 
            e 
        } 
    }), 
    v.ajaxPrefilter("json jsonp", function(n, r, i) { 
        var s, o, u, a = n.data, f = n.url, l = n.jsonp !== !1, c = l && Dn.test(f), h = l && !c && typeof a == "string" && !(n.contentType || "").indexOf("application/x-www-form-urlencoded") && Dn.test(a); 
        if (n.dataTypes[0] === "jsonp" || c || h) 
            return s = n.jsonpCallback = v.isFunction(n.jsonpCallback) ? n.jsonpCallback() : n.jsonpCallback, 
            o = e[s], 
            c ? n.url = f.replace(Dn, "$1" + s) : h ? n.data = a.replace(Dn, "$1" + s) : l && (n.url += (_n.test(f) ? "&" : "?") + n.jsonp + "=" + s), 
            n.converters["script json"] = function() { 
                return u || v.error(s + " was not called"), 
                u[0] 
            } 
            , 
            n.dataTypes[0] = "json", 
            e[s] = function() { 
                u = arguments 
            } 
            , 
            i.always(function() { 
                e[s] = o, 
                n[s] && (n.jsonpCallback = r.jsonpCallback, 
                Mn.push(s)), 
                u && v.isFunction(o) && o(u[0]), 
                u = o = t 
            }), 
            "script" 
    }), 
    v.ajaxSetup({ 
        accepts: { 
            script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript" 
        }, 
        contents: { 
            script: /javascript|ecmascript/ 
        }, 
        converters: { 
            "text script": function(e) { 
                return v.globalEval(e), 
                e 
            } 
        } 
    }), 
    v.ajaxPrefilter("script", function(e) { 
        e.cache === t && (e.cache = !1), 
        e.crossDomain && (e.type = "GET", 
        e.global = !1) 
    }), 
    v.ajaxTransport("script", function(e) { 
        if (e.crossDomain) { 
            var n, r = i.head || i.getElementsByTagName("head")[0] || i.documentElement; 
            return { 
                send: function(s, o) { 
                    n = i.createElement("script"), 
                    n.async = "async", 
                    e.scriptCharset && (n.charset = e.scriptCharset), 
                    n.src = e.url, 
                    n.onload = n.onreadystatechange = function(e, i) { 
                        if (i || !n.readyState || /loaded|complete/.test(n.readyState)) 
                            n.onload = n.onreadystatechange = null, 
                            r && n.parentNode && r.removeChild(n), 
                            n = t, 
                            i || o(200, "success") 
                    } 
                    , 
                    r.insertBefore(n, r.firstChild) 
                }, 
                abort: function() { 
                    n && n.onload(0, 1) 
                } 
            } 
        } 
    }); 
    var Hn, Bn = e.ActiveXObject ? function() { 
        for (var e in Hn) 
            Hn[e](0, 1) 
    } 
    : !1, jn = 0; 
    v.ajaxSettings.xhr = e.ActiveXObject ? function() { 
        return !this.isLocal && Fn() || In() 
    } 
    : Fn, 
    function(e) { 
        v.extend(v.support, { 
            ajax: !!e, 
            cors: !!e && "withCredentials"in e 
        }) 
    }(v.ajaxSettings.xhr()), 
    v.support.ajax && v.ajaxTransport(function(n) { 
        if (!n.crossDomain || v.support.cors) { 
            var r; 
            return { 
                send: function(i, s) { 
                    var o, u, a = n.xhr(); 
                    n.username ? a.open(n.type, n.url, n.async, n.username, n.password) : a.open(n.type, n.url, n.async); 
                    if (n.xhrFields) 
                        for (u in n.xhrFields) 
                            a[u] = n.xhrFields[u]; 
                    n.mimeType && a.overrideMimeType && a.overrideMimeType(n.mimeType), 
                    !n.crossDomain && !i["X-Requested-With"] && (i["X-Requested-With"] = "XMLHttpRequest"); 
                    try { 
                        for (u in i) 
                            a.setRequestHeader(u, i[u]) 
                    } catch (f) {} 
                    a.send(n.hasContent && n.data || null), 
                    r = function(e, i) { 
                        var u, f, l, c, h; 
                        try { 
                            if (r && (i || a.readyState === 4)) { 
                                r = t, 
                                o && (a.onreadystatechange = v.noop, 
                                Bn && delete Hn[o]); 
                                if (i) 
                                    a.readyState !== 4 && a.abort(); 
                                else { 
                                    u = a.status, 
                                    l = a.getAllResponseHeaders(), 
                                    c = {}, 
                                    h = a.responseXML, 
                                    h && h.documentElement && (c.xml = h); 
                                    try { 
                                        c.text = a.responseText 
                                    } catch (p) {} 
                                    try { 
                                        f = a.statusText 
                                    } catch (p) { 
                                        f = "" 
                                    } 
                                    !u && n.isLocal && !n.crossDomain ? u = c.text ? 200 : 404 : u === 1223 && (u = 204) 
                                } 
                            } 
                        } catch (d) { 
                            i || s(-1, d) 
                        } 
                        c && s(u, f, c, l) 
                    } 
                    , 
                    n.async ? a.readyState === 4 ? setTimeout(r, 0) : (o = ++jn, 
                    Bn && (Hn || (Hn = {}, 
                    v(e).unload(Bn)), 
                    Hn[o] = r), 
                    a.onreadystatechange = r) : r() 
                }, 
                abort: function() { 
                    r && r(0, 1) 
                } 
            } 
        } 
    }); 
    var qn, Rn, Un = /^(?:toggle|show|hide)$/, zn = new RegExp("^(?:([-+])=|)(" + m + ")([a-z%]*)$","i"), Wn = /queueHooks$/, Xn = [Gn], Vn = { 
        "*": [function(e, t) { 
            var n, r, i = this.createTween(e, t), s = zn.exec(t), o = i.cur(), u = +o || 0, a = 1, f = 20; 
            if (s) { 
                n = +s[2], 
                r = s[3] || (v.cssNumber[e] ? "" : "px"); 
                if (r !== "px" && u) { 
                    u = v.css(i.elem, e, !0) || n || 1; 
                    do 
                        a = a || ".5", 
                        u /= a, 
                        v.style(i.elem, e, u + r); 
                    while (a !== (a = i.cur() / o) && a !== 1 && --f) 
                } 
                i.unit = r, 
                i.start = u, 
                i.end = s[1] ? u + (s[1] + 1) * n : n 
            } 
            return i 
        } 
        ] 
    }; 
    v.Animation = v.extend(Kn, { 
        tweener: function(e, t) { 
            v.isFunction(e) ? (t = e, 
            e = ["*"]) : e = e.split(" "); 
            var n, r = 0, i = e.length; 
            for (; r < i; r++) 
                n = e[r], 
                Vn[n] = Vn[n] || [], 
                Vn[n].unshift(t) 
        }, 
        prefilter: function(e, t) { 
            t ? Xn.unshift(e) : Xn.push(e) 
        } 
    }), 
    v.Tween = Yn, 
    Yn.prototype = { 
        constructor: Yn, 
        init: function(e, t, n, r, i, s) { 
            this.elem = e, 
            this.prop = n, 
            this.easing = i || "swing", 
            this.options = t, 
            this.start = this.now = this.cur(), 
            this.end = r, 
            this.unit = s || (v.cssNumber[n] ? "" : "px") 
        }, 
        cur: function() { 
            var e = Yn.propHooks[this.prop]; 
            return e && e.get ? e.get(this) : Yn.propHooks._default.get(this) 
        }, 
        run: function(e) { 
            var t, n = Yn.propHooks[this.prop]; 
            return this.options.duration ? this.pos = t = v.easing[this.easing](e, this.options.duration * e, 0, 1, this.options.duration) : this.pos = t = e, 
            this.now = (this.end - this.start) * t + this.start, 
            this.options.step && this.options.step.call(this.elem, this.now, this), 
            n && n.set ? n.set(this) : Yn.propHooks._default.set(this), 
            this 
        } 
    }, 
    Yn.prototype.init.prototype = Yn.prototype, 
    Yn.propHooks = { 
        _default: { 
            get: function(e) { 
                var t; 
                return e.elem[e.prop] == null || !!e.elem.style && e.elem.style[e.prop] != null ? (t = v.css(e.elem, e.prop, !1, ""), 
                !t || t === "auto" ? 0 : t) : e.elem[e.prop] 
            }, 
            set: function(e) { 
                v.fx.step[e.prop] ? v.fx.step[e.prop](e) : e.elem.style && (e.elem.style[v.cssProps[e.prop]] != null || v.cssHooks[e.prop]) ? v.style(e.elem, e.prop, e.now + e.unit) : e.elem[e.prop] = e.now 
            } 
        } 
    }, 
    Yn.propHooks.scrollTop = Yn.propHooks.scrollLeft = { 
        set: function(e) { 
            e.elem.nodeType && e.elem.parentNode && (e.elem[e.prop] = e.now) 
        } 
    }, 
    v.each(["toggle", "show", "hide"], function(e, t) { 
        var n = v.fn[t]; 
        v.fn[t] = function(r, i, s) { 
            return r == null || typeof r == "boolean" || !e && v.isFunction(r) && v.isFunction(i) ? n.apply(this, arguments) : this.animate(Zn(t, !0), r, i, s) 
        } 
    }), 
    v.fn.extend({ 
        fadeTo: function(e, t, n, r) { 
            return this.filter(Gt).css("opacity", 0).show().end().animate({ 
                opacity: t 
            }, e, n, r) 
        }, 
        animate: function(e, t, n, r) { 
            var i = v.isEmptyObject(e) 
              , s = v.speed(t, n, r) 
              , o = function() { 
                var t = Kn(this, v.extend({}, e), s); 
                i && t.stop(!0) 
            }; 
            return i || s.queue === !1 ? this.each(o) : this.queue(s.queue, o) 
        }, 
        stop: function(e, n, r) { 
            var i = function(e) { 
                var t = e.stop; 
                delete e.stop, 
                t(r) 
            }; 
            return typeof e != "string" && (r = n, 
            n = e, 
            e = t), 
            n && e !== !1 && this.queue(e || "fx", []), 
            this.each(function() { 
                var t = !0 
                  , n = e != null && e + "queueHooks" 
                  , s = v.timers 
                  , o = v._data(this); 
                if (n) 
                    o[n] && o[n].stop && i(o[n]); 
                else 
                    for (n in o) 
                        o[n] && o[n].stop && Wn.test(n) && i(o[n]); 
                for (n = s.length; n--; ) 
                    s[n].elem === this && (e == null || s[n].queue === e) && (s[n].anim.stop(r), 
                    t = !1, 
                    s.splice(n, 1)); 
                (t || !r) && v.dequeue(this, e) 
            }) 
        } 
    }), 
    v.each({ 
        slideDown: Zn("show"), 
        slideUp: Zn("hide"), 
        slideToggle: Zn("toggle"), 
        fadeIn: { 
            opacity: "show" 
        }, 
        fadeOut: { 
            opacity: "hide" 
        }, 
        fadeToggle: { 
            opacity: "toggle" 
        } 
    }, function(e, t) { 
        v.fn[e] = function(e, n, r) { 
            return this.animate(t, e, n, r) 
        } 
    }), 
    v.speed = function(e, t, n) { 
        var r = e && typeof e == "object" ? v.extend({}, e) : { 
            complete: n || !n && t || v.isFunction(e) && e, 
            duration: e, 
            easing: n && t || t && !v.isFunction(t) && t 
        }; 
        r.duration = v.fx.off ? 0 : typeof r.duration == "number" ? r.duration : r.duration in v.fx.speeds ? v.fx.speeds[r.duration] : v.fx.speeds._default; 
        if (r.queue == null || r.queue === !0) 
            r.queue = "fx"; 
        return r.old = r.complete, 
        r.complete = function() { 
            v.isFunction(r.old) && r.old.call(this), 
            r.queue && v.dequeue(this, r.queue) 
        } 
        , 
        r 
    } 
    , 
    v.easing = { 
        linear: function(e) { 
            return e 
        }, 
        swing: function(e) { 
            return .5 - Math.cos(e * Math.PI) / 2 
        } 
    }, 
    v.timers = [], 
    v.fx = Yn.prototype.init, 
    v.fx.tick = function() { 
        var e, n = v.timers, r = 0; 
        qn = v.now(); 
        for (; r < n.length; r++) 
            e = n[r], 
            !e() && n[r] === e && n.splice(r--, 1); 
        n.length || v.fx.stop(), 
        qn = t 
    } 
    , 
    v.fx.timer = function(e) { 
        e() && v.timers.push(e) && !Rn && (Rn = setInterval(v.fx.tick, v.fx.interval)) 
    } 
    , 
    v.fx.interval = 13, 
    v.fx.stop = function() { 
        clearInterval(Rn), 
        Rn = null 
    } 
    , 
    v.fx.speeds = { 
        slow: 600, 
        fast: 200, 
        _default: 400 
    }, 
    v.fx.step = {}, 
    v.expr && v.expr.filters && (v.expr.filters.animated = function(e) { 
        return v.grep(v.timers, function(t) { 
            return e === t.elem 
        }).length 
    } 
    ); 
    var er = /^(?:body|html)$/i; 
    v.fn.offset = function(e) { 
        if (arguments.length) 
            return e === t ? this : this.each(function(t) { 
                v.offset.setOffset(this, e, t) 
            }); 
        var n, r, i, s, o, u, a, f = { 
            top: 0, 
            left: 0 
        }, l = this[0], c = l && l.ownerDocument; 
        if (!c) 
            return; 
        return (r = c.body) === l ? v.offset.bodyOffset(l) : (n = c.documentElement, 
        v.contains(n, l) ? (typeof l.getBoundingClientRect != "undefined" && (f = l.getBoundingClientRect()), 
        i = tr(c), 
        s = n.clientTop || r.clientTop || 0, 
        o = n.clientLeft || r.clientLeft || 0, 
        u = i.pageYOffset || n.scrollTop, 
        a = i.pageXOffset || n.scrollLeft, 
        { 
            top: f.top + u - s, 
            left: f.left + a - o 
        }) : f) 
    } 
    , 
    v.offset = { 
        bodyOffset: function(e) { 
            var t = e.offsetTop 
              , n = e.offsetLeft; 
            return v.support.doesNotIncludeMarginInBodyOffset && (t += parseFloat(v.css(e, "marginTop")) || 0, 
            n += parseFloat(v.css(e, "marginLeft")) || 0), 
            { 
                top: t, 
                left: n 
            } 
        }, 
        setOffset: function(e, t, n) { 
            var r = v.css(e, "position"); 
            r === "static" && (e.style.position = "relative"); 
            var i = v(e), s = i.offset(), o = v.css(e, "top"), u = v.css(e, "left"), a = (r === "absolute" || r === "fixed") && v.inArray("auto", [o, u]) > -1, f = {}, l = {}, c, h; 
            a ? (l = i.position(), 
            c = l.top, 
            h = l.left) : (c = parseFloat(o) || 0, 
            h = parseFloat(u) || 0), 
            v.isFunction(t) && (t = t.call(e, n, s)), 
            t.top != null && (f.top = t.top - s.top + c), 
            t.left != null && (f.left = t.left - s.left + h), 
            "using"in t ? t.using.call(e, f) : i.css(f) 
        } 
    }, 
    v.fn.extend({ 
        position: function() { 
            if (!this[0]) 
                return; 
            var e = this[0] 
              , t = this.offsetParent() 
              , n = this.offset() 
              , r = er.test(t[0].nodeName) ? { 
                top: 0, 
                left: 0 
            } : t.offset(); 
            return n.top -= parseFloat(v.css(e, "marginTop")) || 0, 
            n.left -= parseFloat(v.css(e, "marginLeft")) || 0, 
            r.top += parseFloat(v.css(t[0], "borderTopWidth")) || 0, 
            r.left += parseFloat(v.css(t[0], "borderLeftWidth")) || 0, 
            { 
                top: n.top - r.top, 
                left: n.left - r.left 
            } 
        }, 
        offsetParent: function() { 
            return this.map(function() { 
                var e = this.offsetParent || i.body; 
                while (e && !er.test(e.nodeName) && v.css(e, "position") === "static") 
                    e = e.offsetParent; 
                return e || i.body 
            }) 
        } 
    }), 
    v.each({ 
        scrollLeft: "pageXOffset", 
        scrollTop: "pageYOffset" 
    }, function(e, n) { 
        var r = /Y/.test(n); 
        v.fn[e] = function(i) { 
            return v.access(this, function(e, i, s) { 
                var o = tr(e); 
                if (s === t) 
                    return o ? n in o ? o[n] : o.document.documentElement[i] : e[i]; 
                o ? o.scrollTo(r ? v(o).scrollLeft() : s, r ? s : v(o).scrollTop()) : e[i] = s 
            }, e, i, arguments.length, null) 
        } 
    }), 
    v.each({ 
        Height: "height", 
        Width: "width" 
    }, function(e, n) { 
        v.each({ 
            padding: "inner" + e, 
            content: n, 
            "": "outer" + e 
        }, function(r, i) { 
            v.fn[i] = function(i, s) { 
                var o = arguments.length && (r || typeof i != "boolean") 
                  , u = r || (i === !0 || s === !0 ? "margin" : "border"); 
                return v.access(this, function(n, r, i) { 
                    var s; 
                    return v.isWindow(n) ? n.document.documentElement["client" + e] : n.nodeType === 9 ? (s = n.documentElement, 
                    Math.max(n.body["scroll" + e], s["scroll" + e], n.body["offset" + e], s["offset" + e], s["client" + e])) : i === t ? v.css(n, r, i, u) : v.style(n, r, i, u) 
                }, n, o ? i : t, o, null) 
            } 
        }) 
    }), 
    e.jQuery = e.$ = v, 
    typeof define == "function" && define.amd && define.amd.jQuery && define("jquery", [], function() { 
        return v 
    }) 
} 
)(window); 
(function($) { 
    $.fn.extend({ 
        submitForm: function() { 
            return this.closest('form').submit(); 
        }, 
        moveTo: function(position) { 
            if (position === 'top') { 
                return this.parent().prepend(this); 
            } 
            if (position === 'bottom') { 
                return this.parent().append(this); 
            } 
            return this; 
        }, 
        toggleLoader: function() { 
            return this.each(function() { 
                $(this).toggleClass('ajax-loader'); 
            }); 
        }, 
        toggleAjaxLoader: function() { 
            return this.each(function() { 
                if ($(this).hasClass('ajax-loaders')) { 
                    $(this).removeClass('ajax-loaders').next().remove(); 
                } else { 
                    $(this).addClass('ajax-loaders').after('<span class="ajax-loader-container">&nbsp;</span>'); 
                } 
            }); 
        }, 
        disable: function() { 
            return $(this).each(function(i, item) { 
                var $this = $(item); 
                $this.attr('disabled', 'disabled').addClass('disabled').removeClass('enabled'); 
                if ($this.is(':checkbox')) { 
                    $this.next('label').addClass('disabled').removeClass('enabled'); 
                } 
            }); 
        }, 
        enable: function() { 
            return $(this).each(function(i, item) { 
                var $this = $(item); 
                $this.removeAttr('disabled').removeClass('disabled').addClass('enabled'); 
                if ($this.is(':checkbox')) { 
                    $this.next('label').removeClass('disabled').addClass('enabled'); 
                } else if ($this.is('option')) { 
                    $this.attr('selected', 'selected'); 
                } 
            }); 
        }, 
        clearAll: function() { 
            return $(this).filter(':checkbox, option').each(function() { 
                $(this).removeAttr('checked').removeAttr('selected'); 
            }); 
        }, 
        pluck: function(val, callback) { 
            return $(this).map(function() { 
                var v = $(this).attr(val); 
                return $.isFunction(callback) ? callback(v) : v; 
            }).get(); 
        }, 
        min: function() { 
            return Math.min.apply(Math, this); 
        }, 
        max: function() { 
            return Math.max.apply(Math, this); 
        }, 
        throwTo: function(target, speed) { 
            return this.each(function() { 
                var $source = $(this); 
                var $target = $(target); 
                var sourceXY = $source.offset(); 
                var targetXY = $target.offset(); 
                if ($source.offset() === null || $target.offset() === null) { 
                    return $source; 
                } 
                if ('undefined' === typeof speed) { 
                    speed = 500; 
                } 
                var newItemDim = { 
                    width: $source.width() / 4, 
                    height: $source.height() / 4 
                }; 
                return $source.clone().css({ 
                    'position': 'absolute', 
                    'z-index': '999999' 
                }).removeAttr('id').offset({ 
                    left: sourceXY.left, 
                    top: sourceXY.top 
                }).prependTo('body').animate({ 
                    opacity: 0.1, 
                    marginLeft: Math.abs(targetXY.left - sourceXY.left), 
                    marginTop: Math.abs(targetXY.top - sourceXY.top), 
                    width: newItemDim.width, 
                    height: newItemDim.height 
                }, speed, function() { 
                    $(this).remove(); 
                }); 
            }); 
        }, 
        parentIdentify: function() { 
            return this.closest('[id]').attr('id'); 
        }, 
        bbqhistory: function() { 
            var self = this; 
            return self.each(function() { 
                var $this = $(this); 
                var uid = $this.parentIdentify(); 
                var $tabs = $this.data('tabs'); 
                if (typeof $tabs == 'undefined') { 
                    return; 
                } 
                $this.bind('onBeforeClick', function(e, tabIndex) { 
                    var state = {}; 
                    state[uid] = tabIndex; 
                    var hash = $.deparam.fragment(); 
                    hash = self.makeObject(hash); 
                    state = $.extend({}, hash, state); 
                    $.bbq.pushState(state, 2); 
                }); 
                $(window).bind('hashchange', function(e) { 
                    var state = e.getState(uid, true); 
                    if (state) 
                        $tabs.click(state); 
                }); 
            }); 
        }, 
        jqToolsTabs: function(pane_selector, options, onclick_callback) { 
            var $this = $(this); 
            var config = { 
                onClick: function(e, tabIndex) { 
                    this.getTabs().each(function() { 
                        var $this = $(this); 
                        $this.closest('li').attr('class', '').children('span, strong').remove(); 
                        $this.html($this.text()); 
                    }); 
                    if (tabIndex > 0) { 
                        this.getTabs().eq(tabIndex - 1).closest('li'); 
                    } 
                    if (tabIndex < this.getTabs().length - 1) { 
                        this.getTabs().eq(tabIndex + 1).closest('li'); 
                    } 
                    var current_tab = this.getTabs().eq(tabIndex); 
                    current_tab.closest('li').prepend('<span></span>').append('<strong></strong>').addClass('active-tab fwb'); 
                    if (typeof onclick_callback == 'function') 
                        onclick_callback(tabIndex); 
                } 
            }; 
            options = $.extend(config, options); 
            return $this.tabs(pane_selector, options); 
        }, 
        makeObject: function(a) { 
            var self = this; 
            var ro = {}; 
            if ($.isEmptyObject(a)) { 
                return ro; 
            } 
            $.each(a, function(i, value) { 
                if ($.isArray(value)) { 
                    value = self.makeObject(value); 
                } 
                if (typeof value !== 'undefined' && typeof value !== 'null') { 
                    ro[i] = value; 
                } 
            }); 
            return ro; 
        }, 
        fadeToggle: function(speed, easing, callback) { 
            var op = $(this).css('opacity'); 
            return this.animate({ 
                opacity: op != 0.3 ? 0.3 : 1.0 
            }, speed, easing, callback); 
        }, 
        enableCheckboxRangeSelection: function() { 
            var lastCheckbox = null; 
            var $spec = this; 
            $spec.unbind('click.checkboxrange'); 
            $spec.bind('click.checkboxrange', function(e) { 
                if (lastCheckbox != null && (e.shiftKey || e.metaKey)) { 
                    var $range = $spec.slice(Math.min($spec.index(lastCheckbox), $spec.index(e.target)), Math.max($spec.index(lastCheckbox), $spec.index(e.target)) + 1); 
                    if (e.target.checked) { 
                        $range.attr('checked', 'checked'); 
                    } else { 
                        $range.removeAttr('checked'); 
                    } 
                } 
                lastCheckbox = e.target; 
            }); 
        } 
    }); 
    $.download = function(url, data, method, target) { 
        if (url && data) { 
            data = typeof data == 'string' ? data : $.param(data); 
            var inputs = ''; 
            $.each(data.split('&'), function() { 
                var pair = this.split('='); 
                inputs += '<input type="hidden" name="' + pair[0] + '" value="' + pair[1] + '" />'; 
            }); 
            $('<form target="' + target + '" action="' + url + '" method="' + (method || 'post') + '">' + inputs + '</form>').appendTo('body').submit().remove(); 
        } 
    } 
    ; 
    $.showError = function(message) { 
        return alert(message); 
    } 
    ; 
} 
)(jQuery); 
Array.prototype.min = function() { 
    return Math.min.apply(Math, this); 
} 
; 
Array.prototype.max = function() { 
    return Math.max.apply(Math, this); 
} 
; 
String.prototype.parseFloat = function() { 
    return parseFloat(this); 
} 
; 
String.prototype.trim = function() { 
    return $.trim(this); 
} 
; 
Number.prototype.formatNumber = function(a, f, c) { 
    var d, e, b; 
    d = this; 
    a = isNaN(a = Math.abs(a)) ? 2 : a; 
    f = f == undefined ? ',' : f; 
    c = c == undefined ? '.' : c; 
    var s = d < 0 ? '-' : ''; 
    e = parseInt(d = Math.abs(+d || 0).toFixed(a), 10) + ''; 
    b = (b = e.length) > 3 ? b % 3 : 0; 
    return s + (b ? e.substr(0, b) + c : '') + e.substr(b).replace(/(\d{3})(?=\d)/g, '$1' + c) + (a ? f + Math.abs(d - e).toFixed(a).slice(2) : ''); 
} 
; 
Number.prototype.between = function(a, b) { 
    return (a <= this) && (this <= b); 
} 
; 
function site_url(segments) { 
    if (segments.match(/^https?/i) !== null) { 
        return encodeURI(segments); 
    } 
    if (-1 !== segments.indexOf('admin') && !base_url.match('/\/[a-z]{2}$/') && !segments.match('/^[a-z]{2}/')) { 
        segments = abbr + '/' + segments; 
    } 
    return encodeURI(base_url.replace(/\/$/, '') + '/' + $.trim(segments).replace(/^\/|\/$/g, '')); 
} 
function hide_datepicker_div() { 
    $('#ui-datepicker-div').hide(); 
} 
$(document).ready(function() { 
    const $body = $('body'); 
    var hover_visible = false; 
    var hover_move_func = function(e) { 
        var $content = e.data.$content; 
        if (!hover_visible) { 
            $content.removeClass('dn'); 
            hover_visible = true; 
        } 
        if (e.pageY - 20 - $content.height() < 0) { 
            $content.css({ 
                'left': (e.pageX - $content.width()) + 'px', 
                'top': (e.pageY + 15) + 'px' 
            }); 
        } else { 
            $content.css({ 
                'left': (e.pageX - $content.width()) + 'px', 
                'top': (e.pageY - 25 - $content.height()) + 'px' 
            }); 
        } 
    }; 
    var hover_content_items = []; 
    var collect_hover_garbage = function() { 
        if (hover_content_items.length > 10000) { 
            $('.hover-content-trigger').each(function() { 
                var $this = $(this); 
                var content_index = $this.data('content_index'); 
                if (typeof content_index !== 'undefined') { 
                    var $content = hover_content_items[content_index]; 
                    $content.remove().appendTo($this.parent()); 
                    $this.removeData(); 
                } 
            }); 
            hover_content_items.length = 0; 
        } 
    }; 
    $('.hover-content-trigger').live('mouseenter', function() { 
        collect_hover_garbage(); 
        var $this = $(this); 
        var content_index = $this.data('content_index'); 
        var $content = false; 
        if (typeof content_index === 'undefined') { 
            $content = $this.parent().find('.hover-content'); 
            $content.remove().prependTo($('body')); 
            $this.data('content_index', hover_content_items.length); 
            hover_content_items.push($content); 
        } else { 
            $content = hover_content_items[content_index]; 
        } 
        if ($content) { 
            var hover_mouse_leave = function(e) { 
                hover_visible = false; 
                e.data.$content.addClass('dn'); 
                $(this).unbind('mousemove', hover_move_func); 
                $(this).unbind('mouseleave', hover_mouse_leave); 
            }; 
            if ($content.size() > 0) { 
                hover_visible = false; 
                $this.bind('mousemove', { 
                    $content: $content 
                }, hover_move_func); 
                $this.bind('mouseleave', { 
                    $content: $content 
                }, hover_mouse_leave); 
            } 
        } 
    }); 
    $body.on('keyup', 'input[data-filter="true"]', function(e) { 
        let value = $(this).val().toLowerCase(); 
        let where = $(this).data('search'); 
        let $within = $('.' + $(this).data('container')); 
        let $what = $('.' + $(this).data('hide'), $within); 
        if (value === '') { 
            $what.toggle(true); 
            return; 
        } 
        $what.each(function() { 
            let $where = $('.' + where, $(this)); 
            let visible = -1 !== $where.text().trim().toLowerCase().search(value); 
            $(this).toggle(visible); 
        }); 
    }).on('click', 'a.disabled', function(e) { 
        e.preventDefault(); 
        return false; 
    }); 
    $('.entity-collection-append a').live('click', function() { 
        var $addLink = $(this); 
        var $collection = $addLink.parent().parent().find('div.entity-collection:first'); 
        var prototype = $collection.attr('data-prototype'); 
        var $newForm = $(prototype.replace(/__name__/g, $collection.children().length).replace(/__name1__/g, $collection.children().length + 1)); 
        $collection.append($newForm); 
        $collection.trigger('append'); 
        $('body').trigger('reloaded'); 
    }); 
    $('.remove-collection-item').live('click', function() { 
        var $a = $(this); 
        var $parent = $a.parents('.form-wrap:first'); 
        $parent.hide('fast', function() { 
            $parent.remove(); 
            $('body').trigger('reloaded'); 
        }); 
    }); 
}); 
$(function() { 
    var setActiveMenu = function() { 
        var $path = window.location.pathname; 
        $path = $path.replace(/\/$/, ""); 
        $path = decodeURIComponent($path); 
        $('#main-menu > li').each(function() { 
            if ($path && $(this).find('a[href$="' + $path + '"]:first').length) { 
                $(this).addClass('active'); 
                return true; 
            } 
        }); 
    }; 
    if ($('#main-menu').length) { 
        setActiveMenu(); 
    } 
}); 
(function($, undefined) { 
    var uuid = 0 
      , runiqueId = /^ui-id-\d+$/; 
    $.ui = $.ui || {}; 
    if ($.ui.version) { 
        return; 
    } 
    $.extend($.ui, { 
        version: "1.9.2", 
        keyCode: { 
            BACKSPACE: 8, 
            COMMA: 188, 
            DELETE: 46, 
            DOWN: 40, 
            END: 35, 
            ENTER: 13, 
            ESCAPE: 27, 
            HOME: 36, 
            LEFT: 37, 
            NUMPAD_ADD: 107, 
            NUMPAD_DECIMAL: 110, 
            NUMPAD_DIVIDE: 111, 
            NUMPAD_ENTER: 108, 
            NUMPAD_MULTIPLY: 106, 
            NUMPAD_SUBTRACT: 109, 
            PAGE_DOWN: 34, 
            PAGE_UP: 33, 
            PERIOD: 190, 
            RIGHT: 39, 
            SPACE: 32, 
            TAB: 9, 
            UP: 38 
        } 
    }); 
    $.fn.extend({ 
        _focus: $.fn.focus, 
        focus: function(delay, fn) { 
            return typeof delay === "number" ? this.each(function() { 
                var elem = this; 
                setTimeout(function() { 
                    $(elem).focus(); 
                    if (fn) { 
                        fn.call(elem); 
                    } 
                }, delay); 
            }) : this._focus.apply(this, arguments); 
        }, 
        scrollParent: function() { 
            var scrollParent; 
            if (($.ui.ie && (/(static|relative)/).test(this.css('position'))) || (/absolute/).test(this.css('position'))) { 
                scrollParent = this.parents().filter(function() { 
                    return (/(relative|absolute|fixed)/).test($.css(this, 'position')) && (/(auto|scroll)/).test($.css(this, 'overflow') + $.css(this, 'overflow-y') + $.css(this, 'overflow-x')); 
                }).eq(0); 
            } else { 
                scrollParent = this.parents().filter(function() { 
                    return (/(auto|scroll)/).test($.css(this, 'overflow') + $.css(this, 'overflow-y') + $.css(this, 'overflow-x')); 
                }).eq(0); 
            } 
            return (/fixed/).test(this.css('position')) || !scrollParent.length ? $(document) : scrollParent; 
        }, 
        zIndex: function(zIndex) { 
            if (zIndex !== undefined) { 
                return this.css("zIndex", zIndex); 
            } 
            if (this.length) { 
                var elem = $(this[0]), position, value; 
                while (elem.length && elem[0] !== document) { 
                    position = elem.css("position"); 
                    if (position === "absolute" || position === "relative" || position === "fixed") { 
                        value = parseInt(elem.css("zIndex"), 10); 
                        if (!isNaN(value) && value !== 0) { 
                            return value; 
                        } 
                    } 
                    elem = elem.parent(); 
                } 
            } 
            return 0; 
        }, 
        uniqueId: function() { 
            return this.each(function() { 
                if (!this.id) { 
                    this.id = "ui-id-" + (++uuid); 
                } 
            }); 
        }, 
        removeUniqueId: function() { 
            return this.each(function() { 
                if (runiqueId.test(this.id)) { 
                    $(this).removeAttr("id"); 
                } 
            }); 
        } 
    }); 
    function focusable(element, isTabIndexNotNaN) { 
        var map, mapName, img, nodeName = element.nodeName.toLowerCase(); 
        if ("area" === nodeName) { 
            map = element.parentNode; 
            mapName = map.name; 
            if (!element.href || !mapName || map.nodeName.toLowerCase() !== "map") { 
                return false; 
            } 
            img = $("img[usemap=#" + mapName + "]")[0]; 
            return !!img && visible(img); 
        } 
        return (/input|select|textarea|button|object/.test(nodeName) ? !element.disabled : "a" === nodeName ? element.href || isTabIndexNotNaN : isTabIndexNotNaN) && visible(element); 
    } 
    function visible(element) { 
        return $.expr.filters.visible(element) && !$(element).parents().andSelf().filter(function() { 
            return $.css(this, "visibility") === "hidden"; 
        }).length; 
    } 
    $.extend($.expr[":"], { 
        data: $.expr.createPseudo ? $.expr.createPseudo(function(dataName) { 
            return function(elem) { 
                return !!$.data(elem, dataName); 
            } 
            ; 
        }) : function(elem, i, match) { 
            return !!$.data(elem, match[3]); 
        } 
        , 
        focusable: function(element) { 
            return focusable(element, !isNaN($.attr(element, "tabindex"))); 
        }, 
        tabbable: function(element) { 
            var tabIndex = $.attr(element, "tabindex") 
              , isTabIndexNaN = isNaN(tabIndex); 
            return (isTabIndexNaN || tabIndex >= 0) && focusable(element, !isTabIndexNaN); 
        } 
    }); 
    $(function() { 
        var body = document.body 
          , div = body.appendChild(div = document.createElement("div")); 
        div.offsetHeight; 
        $.extend(div.style, { 
            minHeight: "100px", 
            height: "auto", 
            padding: 0, 
            borderWidth: 0 
        }); 
        $.support.minHeight = div.offsetHeight === 100; 
        $.support.selectstart = "onselectstart"in div; 
        body.removeChild(div).style.display = "none"; 
    }); 
    if (!$("<a>").outerWidth(1).jquery) { 
        $.each(["Width", "Height"], function(i, name) { 
            var side = name === "Width" ? ["Left", "Right"] : ["Top", "Bottom"] 
              , type = name.toLowerCase() 
              , orig = { 
                innerWidth: $.fn.innerWidth, 
                innerHeight: $.fn.innerHeight, 
                outerWidth: $.fn.outerWidth, 
                outerHeight: $.fn.outerHeight 
            }; 
            function reduce(elem, size, border, margin) { 
                $.each(side, function() { 
                    size -= parseFloat($.css(elem, "padding" + this)) || 0; 
                    if (border) { 
                        size -= parseFloat($.css(elem, "border" + this + "Width")) || 0; 
                    } 
                    if (margin) { 
                        size -= parseFloat($.css(elem, "margin" + this)) || 0; 
                    } 
                }); 
                return size; 
            } 
            $.fn["inner" + name] = function(size) { 
                if (size === undefined) { 
                    return orig["inner" + name].call(this); 
                } 
                return this.each(function() { 
                    $(this).css(type, reduce(this, size) + "px"); 
                }); 
            } 
            ; 
            $.fn["outer" + name] = function(size, margin) { 
                if (typeof size !== "number") { 
                    return orig["outer" + name].call(this, size); 
                } 
                return this.each(function() { 
                    $(this).css(type, reduce(this, size, true, margin) + "px"); 
                }); 
            } 
            ; 
        }); 
    } 
    if ($("<a>").data("a-b", "a").removeData("a-b").data("a-b")) { 
        $.fn.removeData = (function(removeData) { 
            return function(key) { 
                if (arguments.length) { 
                    return removeData.call(this, $.camelCase(key)); 
                } else { 
                    return removeData.call(this); 
                } 
            } 
            ; 
        } 
        )($.fn.removeData); 
    } 
    (function() { 
        var uaMatch = /msie ([\w.]+)/.exec(navigator.userAgent.toLowerCase()) || []; 
        $.ui.ie = uaMatch.length ? true : false; 
        $.ui.ie6 = parseFloat(uaMatch[1], 10) === 6; 
    } 
    )(); 
    $.fn.extend({ 
        disableSelection: function() { 
            return this.bind(($.support.selectstart ? "selectstart" : "mousedown") + ".ui-disableSelection", function(event) { 
                event.preventDefault(); 
            }); 
        }, 
        enableSelection: function() { 
            return this.unbind(".ui-disableSelection"); 
        } 
    }); 
    $.extend($.ui, { 
        plugin: { 
            add: function(module, option, set) { 
                var i, proto = $.ui[module].prototype; 
                for (i in set) { 
                    proto.plugins[i] = proto.plugins[i] || []; 
                    proto.plugins[i].push([option, set[i]]); 
                } 
            }, 
            call: function(instance, name, args) { 
                var i, set = instance.plugins[name]; 
                if (!set || !instance.element[0].parentNode || instance.element[0].parentNode.nodeType === 11) { 
                    return; 
                } 
                for (i = 0; i < set.length; i++) { 
                    if (instance.options[set[i][0]]) { 
                        set[i][1].apply(instance.element, args); 
                    } 
                } 
            } 
        }, 
        contains: $.contains, 
        hasScroll: function(el, a) { 
            if ($(el).css("overflow") === "hidden") { 
                return false; 
            } 
            var scroll = (a && a === "left") ? "scrollLeft" : "scrollTop" 
              , has = false; 
            if (el[scroll] > 0) { 
                return true; 
            } 
            el[scroll] = 1; 
            has = (el[scroll] > 0); 
            el[scroll] = 0; 
            return has; 
        }, 
        isOverAxis: function(x, reference, size) { 
            return (x > reference) && (x < (reference + size)); 
        }, 
        isOver: function(y, x, top, left, height, width) { 
            return $.ui.isOverAxis(y, top, height) && $.ui.isOverAxis(x, left, width); 
        } 
    }); 
} 
)(jQuery); 
(function($, undefined) { 
    var uuid = 0 
      , slice = Array.prototype.slice 
      , _cleanData = $.cleanData; 
    $.cleanData = function(elems) { 
        for (var i = 0, elem; (elem = elems[i]) != null; i++) { 
            try { 
                $(elem).triggerHandler("remove"); 
            } catch (e) {} 
        } 
        _cleanData(elems); 
    } 
    ; 
    $.widget = function(name, base, prototype) { 
        var fullName, existingConstructor, constructor, basePrototype, namespace = name.split(".")[0]; 
        name = name.split(".")[1]; 
        fullName = namespace + "-" + name; 
        if (!prototype) { 
            prototype = base; 
            base = $.Widget; 
        } 
        $.expr[":"][fullName.toLowerCase()] = function(elem) { 
            return !!$.data(elem, fullName); 
        } 
        ; 
        $[namespace] = $[namespace] || {}; 
        existingConstructor = $[namespace][name]; 
        constructor = $[namespace][name] = function(options, element) { 
            if (!this._createWidget) { 
                return new constructor(options,element); 
            } 
            if (arguments.length) { 
                this._createWidget(options, element); 
            } 
        } 
        ; 
        $.extend(constructor, existingConstructor, { 
            version: prototype.version, 
            _proto: $.extend({}, prototype), 
            _childConstructors: [] 
        }); 
        basePrototype = new base(); 
        basePrototype.options = $.widget.extend({}, basePrototype.options); 
        $.each(prototype, function(prop, value) { 
            if ($.isFunction(value)) { 
                prototype[prop] = (function() { 
                    var _super = function() { 
                        return base.prototype[prop].apply(this, arguments); 
                    } 
                      , _superApply = function(args) { 
                        return base.prototype[prop].apply(this, args); 
                    }; 
                    return function() { 
                        var __super = this._super, __superApply = this._superApply, returnValue; 
                        this._super = _super; 
                        this._superApply = _superApply; 
                        returnValue = value.apply(this, arguments); 
                        this._super = __super; 
                        this._superApply = __superApply; 
                        return returnValue; 
                    } 
                    ; 
                } 
                )(); 
            } 
        }); 
        constructor.prototype = $.widget.extend(basePrototype, { 
            widgetEventPrefix: existingConstructor ? basePrototype.widgetEventPrefix : name 
        }, prototype, { 
            constructor: constructor, 
            namespace: namespace, 
            widgetName: name, 
            widgetBaseClass: fullName, 
            widgetFullName: fullName 
        }); 
        if (existingConstructor) { 
            $.each(existingConstructor._childConstructors, function(i, child) { 
                var childPrototype = child.prototype; 
                $.widget(childPrototype.namespace + "." + childPrototype.widgetName, constructor, child._proto); 
            }); 
            delete existingConstructor._childConstructors; 
        } else { 
            base._childConstructors.push(constructor); 
        } 
        $.widget.bridge(name, constructor); 
    } 
    ; 
    $.widget.extend = function(target) { 
        var input = slice.call(arguments, 1), inputIndex = 0, inputLength = input.length, key, value; 
        for (; inputIndex < inputLength; inputIndex++) { 
            for (key in input[inputIndex]) { 
                value = input[inputIndex][key]; 
                if (input[inputIndex].hasOwnProperty(key) && value !== undefined) { 
                    if ($.isPlainObject(value)) { 
                        target[key] = $.isPlainObject(target[key]) ? $.widget.extend({}, target[key], value) : $.widget.extend({}, value); 
                    } else { 
                        target[key] = value; 
                    } 
                } 
            } 
        } 
        return target; 
    } 
    ; 
    $.widget.bridge = function(name, object) { 
        var fullName = object.prototype.widgetFullName || name; 
        $.fn[name] = function(options) { 
            var isMethodCall = typeof options === "string" 
              , args = slice.call(arguments, 1) 
              , returnValue = this; 
            options = !isMethodCall && args.length ? $.widget.extend.apply(null, [options].concat(args)) : options; 
            if (isMethodCall) { 
                this.each(function() { 
                    var methodValue, instance = $.data(this, fullName); 
                    if (!instance) { 
                        return $.error("cannot call methods on " + name + " prior to initialization; " + "attempted to call method '" + options + "'"); 
                    } 
                    if (!$.isFunction(instance[options]) || options.charAt(0) === "_") { 
                        return $.error("no such method '" + options + "' for " + name + " widget instance"); 
                    } 
                    methodValue = instance[options].apply(instance, args); 
                    if (methodValue !== instance && methodValue !== undefined) { 
                        returnValue = methodValue && methodValue.jquery ? returnValue.pushStack(methodValue.get()) : methodValue; 
                        return false; 
                    } 
                }); 
            } else { 
                this.each(function() { 
                    var instance = $.data(this, fullName); 
                    if (instance) { 
                        instance.option(options || {})._init(); 
                    } else { 
                        $.data(this, fullName, new object(options,this)); 
                    } 
                }); 
            } 
            return returnValue; 
        } 
        ; 
    } 
    ; 
    $.Widget = function() {} 
    ; 
    $.Widget._childConstructors = []; 
    $.Widget.prototype = { 
        widgetName: "widget", 
        widgetEventPrefix: "", 
        defaultElement: "<div>", 
        options: { 
            disabled: false, 
            create: null 
        }, 
        _createWidget: function(options, element) { 
            element = $(element || this.defaultElement || this)[0]; 
            this.element = $(element); 
            this.uuid = uuid++; 
            this.eventNamespace = "." + this.widgetName + this.uuid; 
            this.options = $.widget.extend({}, this.options, this._getCreateOptions(), options); 
            this.bindings = $(); 
            this.hoverable = $(); 
            this.focusable = $(); 
            if (element !== this) { 
                $.data(element, this.widgetName, this); 
                $.data(element, this.widgetFullName, this); 
                this._on(true, this.element, { 
                    remove: function(event) { 
                        if (event.target === element) { 
                            this.destroy(); 
                        } 
                    } 
                }); 
                this.document = $(element.style ? element.ownerDocument : element.document || element); 
                this.window = $(this.document[0].defaultView || this.document[0].parentWindow); 
            } 
            this._create(); 
            this._trigger("create", null, this._getCreateEventData()); 
            this._init(); 
        }, 
        _getCreateOptions: $.noop, 
        _getCreateEventData: $.noop, 
        _create: $.noop, 
        _init: $.noop, 
        destroy: function() { 
            this._destroy(); 
            this.element.unbind(this.eventNamespace).removeData(this.widgetName).removeData(this.widgetFullName).removeData($.camelCase(this.widgetFullName)); 
            this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName + "-disabled " + "ui-state-disabled"); 
            this.bindings.unbind(this.eventNamespace); 
            this.hoverable.removeClass("ui-state-hover"); 
            this.focusable.removeClass("ui-state-focus"); 
        }, 
        _destroy: $.noop, 
        widget: function() { 
            return this.element; 
        }, 
        option: function(key, value) { 
            var options = key, parts, curOption, i; 
            if (arguments.length === 0) { 
                return $.widget.extend({}, this.options); 
            } 
            if (typeof key === "string") { 
                options = {}; 
                parts = key.split("."); 
                key = parts.shift(); 
                if (parts.length) { 
                    curOption = options[key] = $.widget.extend({}, this.options[key]); 
                    for (i = 0; i < parts.length - 1; i++) { 
                        curOption[parts[i]] = curOption[parts[i]] || {}; 
                        curOption = curOption[parts[i]]; 
                    } 
                    key = parts.pop(); 
                    if (value === undefined) { 
                        return curOption[key] === undefined ? null : curOption[key]; 
                    } 
                    curOption[key] = value; 
                } else { 
                    if (value === undefined) { 
                        return this.options[key] === undefined ? null : this.options[key]; 
                    } 
                    options[key] = value; 
                } 
            } 
            this._setOptions(options); 
            return this; 
        }, 
        _setOptions: function(options) { 
            var key; 
            for (key in options) { 
                this._setOption(key, options[key]); 
            } 
            return this; 
        }, 
        _setOption: function(key, value) { 
            this.options[key] = value; 
            if (key === "disabled") { 
                this.widget().toggleClass(this.widgetFullName + "-disabled ui-state-disabled", !!value).attr("aria-disabled", value); 
                this.hoverable.removeClass("ui-state-hover"); 
                this.focusable.removeClass("ui-state-focus"); 
            } 
            return this; 
        }, 
        enable: function() { 
            return this._setOption("disabled", false); 
        }, 
        disable: function() { 
            return this._setOption("disabled", true); 
        }, 
        _on: function(suppressDisabledCheck, element, handlers) { 
            var delegateElement, instance = this; 
            if (typeof suppressDisabledCheck !== "boolean") { 
                handlers = element; 
                element = suppressDisabledCheck; 
                suppressDisabledCheck = false; 
            } 
            if (!handlers) { 
                handlers = element; 
                element = this.element; 
                delegateElement = this.widget(); 
            } else { 
                element = delegateElement = $(element); 
                this.bindings = this.bindings.add(element); 
            } 
            $.each(handlers, function(event, handler) { 
                function handlerProxy() { 
                    if (!suppressDisabledCheck && (instance.options.disabled === true || $(this).hasClass("ui-state-disabled"))) { 
                        return; 
                    } 
                    return (typeof handler === "string" ? instance[handler] : handler).apply(instance, arguments); 
                } 
                if (typeof handler !== "string") { 
                    handlerProxy.guid = handler.guid = handler.guid || handlerProxy.guid || $.guid++; 
                } 
                var match = event.match(/^(\w+)\s*(.*)$/) 
                  , eventName = match[1] + instance.eventNamespace 
                  , selector = match[2]; 
                if (selector) { 
                    delegateElement.delegate(selector, eventName, handlerProxy); 
                } else { 
                    element.bind(eventName, handlerProxy); 
                } 
            }); 
        }, 
        _off: function(element, eventName) { 
            eventName = (eventName || "").split(" ").join(this.eventNamespace + " ") + this.eventNamespace; 
            element.unbind(eventName).undelegate(eventName); 
        }, 
        _delay: function(handler, delay) { 
            function handlerProxy() { 
                return (typeof handler === "string" ? instance[handler] : handler).apply(instance, arguments); 
            } 
            var instance = this; 
            return setTimeout(handlerProxy, delay || 0); 
        }, 
        _hoverable: function(element) { 
            this.hoverable = this.hoverable.add(element); 
            this._on(element, { 
                mouseenter: function(event) { 
                    $(event.currentTarget).addClass("ui-state-hover"); 
                }, 
                mouseleave: function(event) { 
                    $(event.currentTarget).removeClass("ui-state-hover"); 
                } 
            }); 
        }, 
        _focusable: function(element) { 
            this.focusable = this.focusable.add(element); 
            this._on(element, { 
                focusin: function(event) { 
                    $(event.currentTarget).addClass("ui-state-focus"); 
                }, 
                focusout: function(event) { 
                    $(event.currentTarget).removeClass("ui-state-focus"); 
                } 
            }); 
        }, 
        _trigger: function(type, event, data) { 
            var prop, orig, callback = this.options[type]; 
            data = data || {}; 
            event = $.Event(event); 
            event.type = (type === this.widgetEventPrefix ? type : this.widgetEventPrefix + type).toLowerCase(); 
            event.target = this.element[0]; 
            orig = event.originalEvent; 
            if (orig) { 
                for (prop in orig) { 
                    if (!(prop in event)) { 
                        event[prop] = orig[prop]; 
                    } 
                } 
            } 
            this.element.trigger(event, data); 
            return !($.isFunction(callback) && callback.apply(this.element[0], [event].concat(data)) === false || event.isDefaultPrevented()); 
        } 
    }; 
    $.each({ 
        show: "fadeIn", 
        hide: "fadeOut" 
    }, function(method, defaultEffect) { 
        $.Widget.prototype["_" + method] = function(element, options, callback) { 
            if (typeof options === "string") { 
                options = { 
                    effect: options 
                }; 
            } 
            var hasOptions, effectName = !options ? method : options === true || typeof options === "number" ? defaultEffect : options.effect || defaultEffect; 
            options = options || {}; 
            if (typeof options === "number") { 
                options = { 
                    duration: options 
                }; 
            } 
            hasOptions = !$.isEmptyObject(options); 
            options.complete = callback; 
            if (options.delay) { 
                element.delay(options.delay); 
            } 
            if (hasOptions && $.effects && ($.effects.effect[effectName] || $.uiBackCompat !== false && $.effects[effectName])) { 
                element[method](options); 
            } else if (effectName !== method && element[effectName]) { 
                element[effectName](options.duration, options.easing, callback); 
            } else { 
                element.queue(function(next) { 
                    $(this)[method](); 
                    if (callback) { 
                        callback.call(element[0]); 
                    } 
                    next(); 
                }); 
            } 
        } 
        ; 
    }); 
    if ($.uiBackCompat !== false) { 
        $.Widget.prototype._getCreateOptions = function() { 
            return $.metadata && $.metadata.get(this.element[0])[this.widgetName]; 
        } 
        ; 
    } 
} 
)(jQuery); 
(function($, undefined) { 
    var mouseHandled = false; 
    $(document).mouseup(function(e) { 
        mouseHandled = false; 
    }); 
    $.widget("ui.mouse", { 
        version: "1.9.2", 
        options: { 
            cancel: 'input,textarea,button,select,option', 
            distance: 1, 
            delay: 0 
        }, 
        _mouseInit: function() { 
            var that = this; 
            this.element.bind('mousedown.' + this.widgetName, function(event) { 
                return that._mouseDown(event); 
            }).bind('click.' + this.widgetName, function(event) { 
                if (true === $.data(event.target, that.widgetName + '.preventClickEvent')) { 
                    $.removeData(event.target, that.widgetName + '.preventClickEvent'); 
                    event.stopImmediatePropagation(); 
                    return false; 
                } 
            }); 
            this.started = false; 
        }, 
        _mouseDestroy: function() { 
            this.element.unbind('.' + this.widgetName); 
            if (this._mouseMoveDelegate) { 
                $(document).unbind('mousemove.' + this.widgetName, this._mouseMoveDelegate).unbind('mouseup.' + this.widgetName, this._mouseUpDelegate); 
            } 
        }, 
        _mouseDown: function(event) { 
            if (mouseHandled) { 
                return; 
            } 
            (this._mouseStarted && this._mouseUp(event)); 
            this._mouseDownEvent = event; 
            var that = this 
              , btnIsLeft = (event.which === 1) 
              , elIsCancel = (typeof this.options.cancel === "string" && event.target.nodeName ? $(event.target).closest(this.options.cancel).length : false); 
            if (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) { 
                return true; 
            } 
            this.mouseDelayMet = !this.options.delay; 
            if (!this.mouseDelayMet) { 
                this._mouseDelayTimer = setTimeout(function() { 
                    that.mouseDelayMet = true; 
                }, this.options.delay); 
            } 
            if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) { 
                this._mouseStarted = (this._mouseStart(event) !== false); 
                if (!this._mouseStarted) { 
                    event.preventDefault(); 
                    return true; 
                } 
            } 
            if (true === $.data(event.target, this.widgetName + '.preventClickEvent')) { 
                $.removeData(event.target, this.widgetName + '.preventClickEvent'); 
            } 
            this._mouseMoveDelegate = function(event) { 
                return that._mouseMove(event); 
            } 
            ; 
            this._mouseUpDelegate = function(event) { 
                return that._mouseUp(event); 
            } 
            ; 
            $(document).bind('mousemove.' + this.widgetName, this._mouseMoveDelegate).bind('mouseup.' + this.widgetName, this._mouseUpDelegate); 
            event.preventDefault(); 
            mouseHandled = true; 
            return true; 
        }, 
        _mouseMove: function(event) { 
            if ($.ui.ie && !(document.documentMode >= 9) && !event.button) { 
                return this._mouseUp(event); 
            } 
            if (this._mouseStarted) { 
                this._mouseDrag(event); 
                return event.preventDefault(); 
            } 
            if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) { 
                this._mouseStarted = (this._mouseStart(this._mouseDownEvent, event) !== false); 
                (this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event)); 
            } 
            return !this._mouseStarted; 
        }, 
        _mouseUp: function(event) { 
            $(document).unbind('mousemove.' + this.widgetName, this._mouseMoveDelegate).unbind('mouseup.' + this.widgetName, this._mouseUpDelegate); 
            if (this._mouseStarted) { 
                this._mouseStarted = false; 
                if (event.target === this._mouseDownEvent.target) { 
                    $.data(event.target, this.widgetName + '.preventClickEvent', true); 
                } 
                this._mouseStop(event); 
            } 
            return false; 
        }, 
        _mouseDistanceMet: function(event) { 
            return (Math.max(Math.abs(this._mouseDownEvent.pageX - event.pageX), Math.abs(this._mouseDownEvent.pageY - event.pageY)) >= this.options.distance); 
        }, 
        _mouseDelayMet: function(event) { 
            return this.mouseDelayMet; 
        }, 
        _mouseStart: function(event) {}, 
        _mouseDrag: function(event) {}, 
        _mouseStop: function(event) {}, 
        _mouseCapture: function(event) { 
            return true; 
        } 
    }); 
} 
)(jQuery); 
(function($, undefined) { 
    $.ui = $.ui || {}; 
    var cachedScrollbarWidth, max = Math.max, abs = Math.abs, round = Math.round, rhorizontal = /left|center|right/, rvertical = /top|center|bottom/, roffset = /[\+\-]\d+%?/, rposition = /^\w+/, rpercent = /%$/, _position = $.fn.position; 
    function getOffsets(offsets, width, height) { 
        return [parseInt(offsets[0], 10) * (rpercent.test(offsets[0]) ? width / 100 : 1), parseInt(offsets[1], 10) * (rpercent.test(offsets[1]) ? height / 100 : 1)]; 
    } 
    function parseCss(element, property) { 
        return parseInt($.css(element, property), 10) || 0; 
    } 
    $.position = { 
        scrollbarWidth: function() { 
            if (cachedScrollbarWidth !== undefined) { 
                return cachedScrollbarWidth; 
            } 
            var w1, w2, div = $("<div style='display:block;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"), innerDiv = div.children()[0]; 
            $("body").append(div); 
            w1 = innerDiv.offsetWidth; 
            div.css("overflow", "scroll"); 
            w2 = innerDiv.offsetWidth; 
            if (w1 === w2) { 
                w2 = div[0].clientWidth; 
            } 
            div.remove(); 
            return (cachedScrollbarWidth = w1 - w2); 
        }, 
        getScrollInfo: function(within) { 
            var overflowX = within.isWindow ? "" : within.element.css("overflow-x") 
              , overflowY = within.isWindow ? "" : within.element.css("overflow-y") 
              , hasOverflowX = overflowX === "scroll" || (overflowX === "auto" && within.width < within.element[0].scrollWidth) 
              , hasOverflowY = overflowY === "scroll" || (overflowY === "auto" && within.height < within.element[0].scrollHeight); 
            return { 
                width: hasOverflowX ? $.position.scrollbarWidth() : 0, 
                height: hasOverflowY ? $.position.scrollbarWidth() : 0 
            }; 
        }, 
        getWithinInfo: function(element) { 
            var withinElement = $(element || window) 
              , isWindow = $.isWindow(withinElement[0]); 
            return { 
                element: withinElement, 
                isWindow: isWindow, 
                offset: withinElement.offset() || { 
                    left: 0, 
                    top: 0 
                }, 
                scrollLeft: withinElement.scrollLeft(), 
                scrollTop: withinElement.scrollTop(), 
                width: isWindow ? withinElement.width() : withinElement.outerWidth(), 
                height: isWindow ? withinElement.height() : withinElement.outerHeight() 
            }; 
        } 
    }; 
    $.fn.position = function(options) { 
        if (!options || !options.of) { 
            return _position.apply(this, arguments); 
        } 
        options = $.extend({}, options); 
        var atOffset, targetWidth, targetHeight, targetOffset, basePosition, target = $(options.of), within = $.position.getWithinInfo(options.within), scrollInfo = $.position.getScrollInfo(within), targetElem = target[0], collision = (options.collision || "flip").split(" "), offsets = {}; 
        if (targetElem.nodeType === 9) { 
            targetWidth = target.width(); 
            targetHeight = target.height(); 
            targetOffset = { 
                top: 0, 
                left: 0 
            }; 
        } else if ($.isWindow(targetElem)) { 
            targetWidth = target.width(); 
            targetHeight = target.height(); 
            targetOffset = { 
                top: target.scrollTop(), 
                left: target.scrollLeft() 
            }; 
        } else if (targetElem.preventDefault) { 
            options.at = "left top"; 
            targetWidth = targetHeight = 0; 
            targetOffset = { 
                top: targetElem.pageY, 
                left: targetElem.pageX 
            }; 
        } else { 
            targetWidth = target.outerWidth(); 
            targetHeight = target.outerHeight(); 
            targetOffset = target.offset(); 
        } 
        basePosition = $.extend({}, targetOffset); 
        $.each(["my", "at"], function() { 
            var pos = (options[this] || "").split(" "), horizontalOffset, verticalOffset; 
            if (pos.length === 1) { 
                pos = rhorizontal.test(pos[0]) ? pos.concat(["center"]) : rvertical.test(pos[0]) ? ["center"].concat(pos) : ["center", "center"]; 
            } 
            pos[0] = rhorizontal.test(pos[0]) ? pos[0] : "center"; 
            pos[1] = rvertical.test(pos[1]) ? pos[1] : "center"; 
            horizontalOffset = roffset.exec(pos[0]); 
            verticalOffset = roffset.exec(pos[1]); 
            offsets[this] = [horizontalOffset ? horizontalOffset[0] : 0, verticalOffset ? verticalOffset[0] : 0]; 
            options[this] = [rposition.exec(pos[0])[0], rposition.exec(pos[1])[0]]; 
        }); 
        if (collision.length === 1) { 
            collision[1] = collision[0]; 
        } 
        if (options.at[0] === "right") { 
            basePosition.left += targetWidth; 
        } else if (options.at[0] === "center") { 
            basePosition.left += targetWidth / 2; 
        } 
        if (options.at[1] === "bottom") { 
            basePosition.top += targetHeight; 
        } else if (options.at[1] === "center") { 
            basePosition.top += targetHeight / 2; 
        } 
        atOffset = getOffsets(offsets.at, targetWidth, targetHeight); 
        basePosition.left += atOffset[0]; 
        basePosition.top += atOffset[1]; 
        return this.each(function() { 
            var collisionPosition, using, elem = $(this), elemWidth = elem.outerWidth(), elemHeight = elem.outerHeight(), marginLeft = parseCss(this, "marginLeft"), marginTop = parseCss(this, "marginTop"), collisionWidth = elemWidth + marginLeft + parseCss(this, "marginRight") + scrollInfo.width, collisionHeight = elemHeight + marginTop + parseCss(this, "marginBottom") + scrollInfo.height, position = $.extend({}, basePosition), myOffset = getOffsets(offsets.my, elem.outerWidth(), elem.outerHeight()); 
            if (options.my[0] === "right") { 
                position.left -= elemWidth; 
            } else if (options.my[0] === "center") { 
                position.left -= elemWidth / 2; 
            } 
            if (options.my[1] === "bottom") { 
                position.top -= elemHeight; 
            } else if (options.my[1] === "center") { 
                position.top -= elemHeight / 2; 
            } 
            position.left += myOffset[0]; 
            position.top += myOffset[1]; 
            if (!$.support.offsetFractions) { 
                position.left = round(position.left); 
                position.top = round(position.top); 
            } 
            collisionPosition = { 
                marginLeft: marginLeft, 
                marginTop: marginTop 
            }; 
            $.each(["left", "top"], function(i, dir) { 
                if ($.ui.position[collision[i]]) { 
                    $.ui.position[collision[i]][dir](position, { 
                        targetWidth: targetWidth, 
                        targetHeight: targetHeight, 
                        elemWidth: elemWidth, 
                        elemHeight: elemHeight, 
                        collisionPosition: collisionPosition, 
                        collisionWidth: collisionWidth, 
                        collisionHeight: collisionHeight, 
                        offset: [atOffset[0] + myOffset[0], atOffset[1] + myOffset[1]], 
                        my: options.my, 
                        at: options.at, 
                        within: within, 
                        elem: elem 
                    }); 
                } 
            }); 
            if ($.fn.bgiframe) { 
                elem.bgiframe(); 
            } 
            if (options.using) { 
                using = function(props) { 
                    var left = targetOffset.left - position.left 
                      , right = left + targetWidth - elemWidth 
                      , top = targetOffset.top - position.top 
                      , bottom = top + targetHeight - elemHeight 
                      , feedback = { 
                        target: { 
                            element: target, 
                            left: targetOffset.left, 
                            top: targetOffset.top, 
                            width: targetWidth, 
                            height: targetHeight 
                        }, 
                        element: { 
                            element: elem, 
                            left: position.left, 
                            top: position.top, 
                            width: elemWidth, 
                            height: elemHeight 
                        }, 
                        horizontal: right < 0 ? "left" : left > 0 ? "right" : "center", 
                        vertical: bottom < 0 ? "top" : top > 0 ? "bottom" : "middle" 
                    }; 
                    if (targetWidth < elemWidth && abs(left + right) < targetWidth) { 
                        feedback.horizontal = "center"; 
                    } 
                    if (targetHeight < elemHeight && abs(top + bottom) < targetHeight) { 
                        feedback.vertical = "middle"; 
                    } 
                    if (max(abs(left), abs(right)) > max(abs(top), abs(bottom))) { 
                        feedback.important = "horizontal"; 
                    } else { 
                        feedback.important = "vertical"; 
                    } 
                    options.using.call(this, props, feedback); 
                } 
                ; 
            } 
            elem.offset($.extend(position, { 
                using: using 
            })); 
        }); 
    } 
    ; 
    $.ui.position = { 
        fit: { 
            left: function(position, data) { 
                var within = data.within, withinOffset = within.isWindow ? within.scrollLeft : within.offset.left, outerWidth = within.width, collisionPosLeft = position.left - data.collisionPosition.marginLeft, overLeft = withinOffset - collisionPosLeft, overRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset, newOverRight; 
                if (data.collisionWidth > outerWidth) { 
                    if (overLeft > 0 && overRight <= 0) { 
                        newOverRight = position.left + overLeft + data.collisionWidth - outerWidth - withinOffset; 
                        position.left += overLeft - newOverRight; 
                    } else if (overRight > 0 && overLeft <= 0) { 
                        position.left = withinOffset; 
                    } else { 
                        if (overLeft > overRight) { 
                            position.left = withinOffset + outerWidth - data.collisionWidth; 
                        } else { 
                            position.left = withinOffset; 
                        } 
                    } 
                } else if (overLeft > 0) { 
                    position.left += overLeft; 
                } else if (overRight > 0) { 
                    position.left -= overRight; 
                } else { 
                    position.left = max(position.left - collisionPosLeft, position.left); 
                } 
            }, 
            top: function(position, data) { 
                var within = data.within, withinOffset = within.isWindow ? within.scrollTop : within.offset.top, outerHeight = data.within.height, collisionPosTop = position.top - data.collisionPosition.marginTop, overTop = withinOffset - collisionPosTop, overBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset, newOverBottom; 
                if (data.collisionHeight > outerHeight) { 
                    if (overTop > 0 && overBottom <= 0) { 
                        newOverBottom = position.top + overTop + data.collisionHeight - outerHeight - withinOffset; 
                        position.top += overTop - newOverBottom; 
                    } else if (overBottom > 0 && overTop <= 0) { 
                        position.top = withinOffset; 
                    } else { 
                        if (overTop > overBottom) { 
                            position.top = withinOffset + outerHeight - data.collisionHeight; 
                        } else { 
                            position.top = withinOffset; 
                        } 
                    } 
                } else if (overTop > 0) { 
                    position.top += overTop; 
                } else if (overBottom > 0) { 
                    position.top -= overBottom; 
                } else { 
                    position.top = max(position.top - collisionPosTop, position.top); 
                } 
            } 
        }, 
        flip: { 
            left: function(position, data) { 
                var within = data.within, withinOffset = within.offset.left + within.scrollLeft, outerWidth = within.width, offsetLeft = within.isWindow ? within.scrollLeft : within.offset.left, collisionPosLeft = position.left - data.collisionPosition.marginLeft, overLeft = collisionPosLeft - offsetLeft, overRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft, myOffset = data.my[0] === "left" ? -data.elemWidth : data.my[0] === "right" ? data.elemWidth : 0, atOffset = data.at[0] === "left" ? data.targetWidth : data.at[0] === "right" ? -data.targetWidth : 0, offset = -2 * data.offset[0], newOverRight, newOverLeft; 
                if (overLeft < 0) { 
                    newOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth - outerWidth - withinOffset; 
                    if (newOverRight < 0 || newOverRight < abs(overLeft)) { 
                        position.left += myOffset + atOffset + offset; 
                    } 
                } else if (overRight > 0) { 
                    newOverLeft = position.left - data.collisionPosition.marginLeft + myOffset + atOffset + offset - offsetLeft; 
                    if (newOverLeft > 0 || abs(newOverLeft) < overRight) { 
                        position.left += myOffset + atOffset + offset; 
                    } 
                } 
            }, 
            top: function(position, data) { 
                var within = data.within, withinOffset = within.offset.top + within.scrollTop, outerHeight = within.height, offsetTop = within.isWindow ? within.scrollTop : within.offset.top, collisionPosTop = position.top - data.collisionPosition.marginTop, overTop = collisionPosTop - offsetTop, overBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop, top = data.my[1] === "top", myOffset = top ? -data.elemHeight : data.my[1] === "bottom" ? data.elemHeight : 0, atOffset = data.at[1] === "top" ? data.targetHeight : data.at[1] === "bottom" ? -data.targetHeight : 0, offset = -2 * data.offset[1], newOverTop, newOverBottom; 
                if (overTop < 0) { 
                    newOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight - outerHeight - withinOffset; 
                    if ((position.top + myOffset + atOffset + offset) > overTop && (newOverBottom < 0 || newOverBottom < abs(overTop))) { 
                        position.top += myOffset + atOffset + offset; 
                    } 
                } else if (overBottom > 0) { 
                    newOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset + offset - offsetTop; 
                    if ((position.top + myOffset + atOffset + offset) > overBottom && (newOverTop > 0 || abs(newOverTop) < overBottom)) { 
                        position.top += myOffset + atOffset + offset; 
                    } 
                } 
            } 
        }, 
        flipfit: { 
            left: function() { 
                $.ui.position.flip.left.apply(this, arguments); 
                $.ui.position.fit.left.apply(this, arguments); 
            }, 
            top: function() { 
                $.ui.position.flip.top.apply(this, arguments); 
                $.ui.position.fit.top.apply(this, arguments); 
            } 
        } 
    }; 
    (function() { 
        var testElement, testElementParent, testElementStyle, offsetLeft, i, body = document.getElementsByTagName("body")[0], div = document.createElement("div"); 
        testElement = document.createElement(body ? "div" : "body"); 
        testElementStyle = { 
            visibility: "hidden", 
            width: 0, 
            height: 0, 
            border: 0, 
            margin: 0, 
            background: "none" 
        }; 
        if (body) { 
            $.extend(testElementStyle, { 
                position: "absolute", 
                left: "-1000px", 
                top: "-1000px" 
            }); 
        } 
        for (i in testElementStyle) { 
            testElement.style[i] = testElementStyle[i]; 
        } 
        testElement.appendChild(div); 
        testElementParent = body || document.documentElement; 
        testElementParent.insertBefore(testElement, testElementParent.firstChild); 
        div.style.cssText = "position: absolute; left: 10.7432222px;"; 
        offsetLeft = $(div).offset().left; 
        $.support.offsetFractions = offsetLeft > 10 && offsetLeft < 11; 
        testElement.innerHTML = ""; 
        testElementParent.removeChild(testElement); 
    } 
    )(); 
    if ($.uiBackCompat !== false) { 
        (function($) { 
            var _position = $.fn.position; 
            $.fn.position = function(options) { 
                if (!options || !options.offset) { 
                    return _position.call(this, options); 
                } 
                var offset = options.offset.split(" ") 
                  , at = options.at.split(" "); 
                if (offset.length === 1) { 
                    offset[1] = offset[0]; 
                } 
                if (/^\d/.test(offset[0])) { 
                    offset[0] = "+" + offset[0]; 
                } 
                if (/^\d/.test(offset[1])) { 
                    offset[1] = "+" + offset[1]; 
                } 
                if (at.length === 1) { 
                    if (/left|center|right/.test(at[0])) { 
                        at[1] = "center"; 
                    } else { 
                        at[1] = at[0]; 
                        at[0] = "center"; 
                    } 
                } 
                return _position.call(this, $.extend(options, { 
                    at: at[0] + offset[0] + " " + at[1] + offset[1], 
                    offset: undefined 
                })); 
            } 
            ; 
        }(jQuery)); 
    } 
}(jQuery)); 
(function($, undefined) { 
    $.widget("ui.draggable", $.ui.mouse, { 
        version: "1.9.2", 
        widgetEventPrefix: "drag", 
        options: { 
            addClasses: true, 
            appendTo: "parent", 
            axis: false, 
            connectToSortable: false, 
            containment: false, 
            cursor: "auto", 
            cursorAt: false, 
            grid: false, 
            handle: false, 
            helper: "original", 
            iframeFix: false, 
            opacity: false, 
            refreshPositions: false, 
            revert: false, 
            revertDuration: 500, 
            scope: "default", 
            scroll: true, 
            scrollSensitivity: 20, 
            scrollSpeed: 20, 
            snap: false, 
            snapMode: "both", 
            snapTolerance: 20, 
            stack: false, 
            zIndex: false 
        }, 
        _create: function() { 
            if (this.options.helper == 'original' && !(/^(?:r|a|f)/).test(this.element.css("position"))) 
                this.element[0].style.position = 'relative'; 
            (this.options.addClasses && this.element.addClass("ui-draggable")); 
            (this.options.disabled && this.element.addClass("ui-draggable-disabled")); 
            this._mouseInit(); 
        }, 
        _destroy: function() { 
            this.element.removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"); 
            this._mouseDestroy(); 
        }, 
        _mouseCapture: function(event) { 
            var o = this.options; 
            if (this.helper || o.disabled || $(event.target).is('.ui-resizable-handle')) 
                return false; 
            this.handle = this._getHandle(event); 
            if (!this.handle) 
                return false; 
            $(o.iframeFix === true ? "iframe" : o.iframeFix).each(function() { 
                $('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>').css({ 
                    width: this.offsetWidth + "px", 
                    height: this.offsetHeight + "px", 
                    position: "absolute", 
                    opacity: "0.001", 
                    zIndex: 1000 
                }).css($(this).offset()).appendTo("body"); 
            }); 
            return true; 
        }, 
        _mouseStart: function(event) { 
            var o = this.options; 
            this.helper = this._createHelper(event); 
            this.helper.addClass("ui-draggable-dragging"); 
            this._cacheHelperProportions(); 
            if ($.ui.ddmanager) 
                $.ui.ddmanager.current = this; 
            this._cacheMargins(); 
            this.cssPosition = this.helper.css("position"); 
            this.scrollParent = this.helper.scrollParent(); 
            this.offset = this.positionAbs = this.element.offset(); 
            this.offset = { 
                top: this.offset.top - this.margins.top, 
                left: this.offset.left - this.margins.left 
            }; 
            $.extend(this.offset, { 
                click: { 
                    left: event.pageX - this.offset.left, 
                    top: event.pageY - this.offset.top 
                }, 
                parent: this._getParentOffset(), 
                relative: this._getRelativeOffset() 
            }); 
            this.originalPosition = this.position = this._generatePosition(event); 
            this.originalPageX = event.pageX; 
            this.originalPageY = event.pageY; 
            (o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt)); 
            if (o.containment) 
                this._setContainment(); 
            if (this._trigger("start", event) === false) { 
                this._clear(); 
                return false; 
            } 
            this._cacheHelperProportions(); 
            if ($.ui.ddmanager && !o.dropBehaviour) 
                $.ui.ddmanager.prepareOffsets(this, event); 
            this._mouseDrag(event, true); 
            if ($.ui.ddmanager) 
                $.ui.ddmanager.dragStart(this, event); 
            return true; 
        }, 
        _mouseDrag: function(event, noPropagation) { 
            this.position = this._generatePosition(event); 
            this.positionAbs = this._convertPositionTo("absolute"); 
            if (!noPropagation) { 
                var ui = this._uiHash(); 
                if (this._trigger('drag', event, ui) === false) { 
                    this._mouseUp({}); 
                    return false; 
                } 
                this.position = ui.position; 
            } 
            if (!this.options.axis || this.options.axis != "y") 
                this.helper[0].style.left = this.position.left + 'px'; 
            if (!this.options.axis || this.options.axis != "x") 
                this.helper[0].style.top = this.position.top + 'px'; 
            if ($.ui.ddmanager) 
                $.ui.ddmanager.drag(this, event); 
            return false; 
        }, 
        _mouseStop: function(event) { 
            var dropped = false; 
            if ($.ui.ddmanager && !this.options.dropBehaviour) 
                dropped = $.ui.ddmanager.drop(this, event); 
            if (this.dropped) { 
                dropped = this.dropped; 
                this.dropped = false; 
            } 
            var element = this.element[0] 
              , elementInDom = false; 
            while (element && (element = element.parentNode)) { 
                if (element == document) { 
                    elementInDom = true; 
                } 
            } 
            if (!elementInDom && this.options.helper === "original") 
                return false; 
            if ((this.options.revert == "invalid" && !dropped) || (this.options.revert == "valid" && dropped) || this.options.revert === true || ($.isFunction(this.options.revert) && this.options.revert.call(this.element, dropped))) { 
                var that = this; 
                $(this.helper).animate(this.originalPosition, parseInt(this.options.revertDuration, 10), function() { 
                    if (that._trigger("stop", event) !== false) { 
                        that._clear(); 
                    } 
                }); 
            } else { 
                if (this._trigger("stop", event) !== false) { 
                    this._clear(); 
                } 
            } 
            return false; 
        }, 
        _mouseUp: function(event) { 
            $("div.ui-draggable-iframeFix").each(function() { 
                this.parentNode.removeChild(this); 
            }); 
            if ($.ui.ddmanager) 
                $.ui.ddmanager.dragStop(this, event); 
            return $.ui.mouse.prototype._mouseUp.call(this, event); 
        }, 
        cancel: function() { 
            if (this.helper.is(".ui-draggable-dragging")) { 
                this._mouseUp({}); 
            } else { 
                this._clear(); 
            } 
            return this; 
        }, 
        _getHandle: function(event) { 
            var handle = !this.options.handle || !$(this.options.handle, this.element).length ? true : false; 
            $(this.options.handle, this.element).find("*").andSelf().each(function() { 
                if (this == event.target) 
                    handle = true; 
            }); 
            return handle; 
        }, 
        _createHelper: function(event) { 
            var o = this.options; 
            var helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event])) : (o.helper == 'clone' ? this.element.clone().removeAttr('id') : this.element); 
            if (!helper.parents('body').length) 
                helper.appendTo((o.appendTo == 'parent' ? this.element[0].parentNode : o.appendTo)); 
            if (helper[0] != this.element[0] && !(/(fixed|absolute)/).test(helper.css("position"))) 
                helper.css("position", "absolute"); 
            return helper; 
        }, 
        _adjustOffsetFromHelper: function(obj) { 
            if (typeof obj == 'string') { 
                obj = obj.split(' '); 
            } 
            if ($.isArray(obj)) { 
                obj = { 
                    left: +obj[0], 
                    top: +obj[1] || 0 
                }; 
            } 
            if ('left'in obj) { 
                this.offset.click.left = obj.left + this.margins.left; 
            } 
            if ('right'in obj) { 
                this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left; 
            } 
            if ('top'in obj) { 
                this.offset.click.top = obj.top + this.margins.top; 
            } 
            if ('bottom'in obj) { 
                this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top; 
            } 
        }, 
        _getParentOffset: function() { 
            this.offsetParent = this.helper.offsetParent(); 
            var po = this.offsetParent.offset(); 
            if (this.cssPosition == 'absolute' && this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) { 
                po.left += this.scrollParent.scrollLeft(); 
                po.top += this.scrollParent.scrollTop(); 
            } 
            if ((this.offsetParent[0] == document.body) || (this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() == 'html' && $.ui.ie)) 
                po = { 
                    top: 0, 
                    left: 0 
                }; 
            return { 
                top: po.top + (parseInt(this.offsetParent.css("borderTopWidth"), 10) || 0), 
                left: po.left + (parseInt(this.offsetParent.css("borderLeftWidth"), 10) || 0) 
            }; 
        }, 
        _getRelativeOffset: function() { 
            if (this.cssPosition == "relative") { 
                var p = this.element.position(); 
                return { 
                    top: p.top - (parseInt(this.helper.css("top"), 10) || 0) + this.scrollParent.scrollTop(), 
                    left: p.left - (parseInt(this.helper.css("left"), 10) || 0) + this.scrollParent.scrollLeft() 
                }; 
            } else { 
                return { 
                    top: 0, 
                    left: 0 
                }; 
            } 
        }, 
        _cacheMargins: function() { 
            this.margins = { 
                left: (parseInt(this.element.css("marginLeft"), 10) || 0), 
                top: (parseInt(this.element.css("marginTop"), 10) || 0), 
                right: (parseInt(this.element.css("marginRight"), 10) || 0), 
                bottom: (parseInt(this.element.css("marginBottom"), 10) || 0) 
            }; 
        }, 
        _cacheHelperProportions: function() { 
            this.helperProportions = { 
                width: this.helper.outerWidth(), 
                height: this.helper.outerHeight() 
            }; 
        }, 
        _setContainment: function() { 
            var o = this.options; 
            if (o.containment == 'parent') 
                o.containment = this.helper[0].parentNode; 
            if (o.containment == 'document' || o.containment == 'window') 
                this.containment = [o.containment == 'document' ? 0 : $(window).scrollLeft() - this.offset.relative.left - this.offset.parent.left, o.containment == 'document' ? 0 : $(window).scrollTop() - this.offset.relative.top - this.offset.parent.top, (o.containment == 'document' ? 0 : $(window).scrollLeft()) + $(o.containment == 'document' ? document : window).width() - this.helperProportions.width - this.margins.left, (o.containment == 'document' ? 0 : $(window).scrollTop()) + ($(o.containment == 'document' ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top]; 
            if (!(/^(document|window|parent)$/).test(o.containment) && o.containment.constructor != Array) { 
                var c = $(o.containment); 
                var ce = c[0]; 
                if (!ce) 
                    return; 
                var co = c.offset(); 
                var over = ($(ce).css("overflow") != 'hidden'); 
                this.containment = [(parseInt($(ce).css("borderLeftWidth"), 10) || 0) + (parseInt($(ce).css("paddingLeft"), 10) || 0), (parseInt($(ce).css("borderTopWidth"), 10) || 0) + (parseInt($(ce).css("paddingTop"), 10) || 0), (over ? Math.max(ce.scrollWidth, ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css("borderLeftWidth"), 10) || 0) - (parseInt($(ce).css("paddingRight"), 10) || 0) - this.helperProportions.width - this.margins.left - this.margins.right, (over ? Math.max(ce.scrollHeight, ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css("borderTopWidth"), 10) || 0) - (parseInt($(ce).css("paddingBottom"), 10) || 0) - this.helperProportions.height - this.margins.top - this.margins.bottom]; 
                this.relative_container = c; 
            } else if (o.containment.constructor == Array) { 
                this.containment = o.containment; 
            } 
        }, 
        _convertPositionTo: function(d, pos) { 
            if (!pos) 
                pos = this.position; 
            var mod = d == "absolute" ? 1 : -1; 
            var o = this.options 
              , scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent 
              , scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName); 
            return { 
                top: (pos.top + this.offset.relative.top * mod + this.offset.parent.top * mod - ((this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : (scrollIsRootNode ? 0 : scroll.scrollTop())) * mod)), 
                left: (pos.left + this.offset.relative.left * mod + this.offset.parent.left * mod - ((this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft()) * mod)) 
            }; 
        }, 
        _generatePosition: function(event) { 
            var o = this.options 
              , scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent 
              , scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName); 
            var pageX = event.pageX; 
            var pageY = event.pageY; 
            if (this.originalPosition) { 
                var containment; 
                if (this.containment) { 
                    if (this.relative_container) { 
                        var co = this.relative_container.offset(); 
                        containment = [this.containment[0] + co.left, this.containment[1] + co.top, this.containment[2] + co.left, this.containment[3] + co.top]; 
                    } else { 
                        containment = this.containment; 
                    } 
                    if (event.pageX - this.offset.click.left < containment[0]) 
                        pageX = containment[0] + this.offset.click.left; 
                    if (event.pageY - this.offset.click.top < containment[1]) 
                        pageY = containment[1] + this.offset.click.top; 
                    if (event.pageX - this.offset.click.left > containment[2]) 
                        pageX = containment[2] + this.offset.click.left; 
                    if (event.pageY - this.offset.click.top > containment[3]) 
                        pageY = containment[3] + this.offset.click.top; 
                } 
                if (o.grid) { 
                    var top = o.grid[1] ? this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1] : this.originalPageY; 
                    pageY = containment ? (!(top - this.offset.click.top < containment[1] || top - this.offset.click.top > containment[3]) ? top : (!(top - this.offset.click.top < containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top; 
                    var left = o.grid[0] ? this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0] : this.originalPageX; 
                    pageX = containment ? (!(left - this.offset.click.left < containment[0] || left - this.offset.click.left > containment[2]) ? left : (!(left - this.offset.click.left < containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left; 
                } 
            } 
            return { 
                top: (pageY - this.offset.click.top - this.offset.relative.top - this.offset.parent.top + ((this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : (scrollIsRootNode ? 0 : scroll.scrollTop())))), 
                left: (pageX - this.offset.click.left - this.offset.relative.left - this.offset.parent.left + ((this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft()))) 
            }; 
        }, 
        _clear: function() { 
            this.helper.removeClass("ui-draggable-dragging"); 
            if (this.helper[0] != this.element[0] && !this.cancelHelperRemoval) 
                this.helper.remove(); 
            this.helper = null; 
            this.cancelHelperRemoval = false; 
        }, 
        _trigger: function(type, event, ui) { 
            ui = ui || this._uiHash(); 
            $.ui.plugin.call(this, type, [event, ui]); 
            if (type == "drag") 
                this.positionAbs = this._convertPositionTo("absolute"); 
            return $.Widget.prototype._trigger.call(this, type, event, ui); 
        }, 
        plugins: {}, 
        _uiHash: function(event) { 
            return { 
                helper: this.helper, 
                position: this.position, 
                originalPosition: this.originalPosition, 
                offset: this.positionAbs 
            }; 
        } 
    }); 
    $.ui.plugin.add("draggable", "connectToSortable", { 
        start: function(event, ui) { 
            var inst = $(this).data("draggable") 
              , o = inst.options 
              , uiSortable = $.extend({}, ui, { 
                item: inst.element 
            }); 
            inst.sortables = []; 
            $(o.connectToSortable).each(function() { 
                var sortable = $.data(this, 'sortable'); 
                if (sortable && !sortable.options.disabled) { 
                    inst.sortables.push({ 
                        instance: sortable, 
                        shouldRevert: sortable.options.revert 
                    }); 
                    sortable.refreshPositions(); 
                    sortable._trigger("activate", event, uiSortable); 
                } 
            }); 
        }, 
        stop: function(event, ui) { 
            var inst = $(this).data("draggable") 
              , uiSortable = $.extend({}, ui, { 
                item: inst.element 
            }); 
            $.each(inst.sortables, function() { 
                if (this.instance.isOver) { 
                    this.instance.isOver = 0; 
                    inst.cancelHelperRemoval = true; 
                    this.instance.cancelHelperRemoval = false; 
                    if (this.shouldRevert) 
                        this.instance.options.revert = true; 
                    this.instance._mouseStop(event); 
                    this.instance.options.helper = this.instance.options._helper; 
                    if (inst.options.helper == 'original') 
                        this.instance.currentItem.css({ 
                            top: 'auto', 
                            left: 'auto' 
                        }); 
                } else { 
                    this.instance.cancelHelperRemoval = false; 
                    this.instance._trigger("deactivate", event, uiSortable); 
                } 
            }); 
        }, 
        drag: function(event, ui) { 
            var inst = $(this).data("draggable") 
              , that = this; 
            var checkPos = function(o) { 
                var dyClick = this.offset.click.top 
                  , dxClick = this.offset.click.left; 
                var helperTop = this.positionAbs.top 
                  , helperLeft = this.positionAbs.left; 
                var itemHeight = o.height 
                  , itemWidth = o.width; 
                var itemTop = o.top 
                  , itemLeft = o.left; 
                return $.ui.isOver(helperTop + dyClick, helperLeft + dxClick, itemTop, itemLeft, itemHeight, itemWidth); 
            }; 
            $.each(inst.sortables, function(i) { 
                var innermostIntersecting = false; 
                var thisSortable = this; 
                this.instance.positionAbs = inst.positionAbs; 
                this.instance.helperProportions = inst.helperProportions; 
                this.instance.offset.click = inst.offset.click; 
                if (this.instance._intersectsWith(this.instance.containerCache)) { 
                    innermostIntersecting = true; 
                    $.each(inst.sortables, function() { 
                        this.instance.positionAbs = inst.positionAbs; 
                        this.instance.helperProportions = inst.helperProportions; 
                        this.instance.offset.click = inst.offset.click; 
                        if (this != thisSortable && this.instance._intersectsWith(this.instance.containerCache) && $.ui.contains(thisSortable.instance.element[0], this.instance.element[0])) 
                            innermostIntersecting = false; 
                        return innermostIntersecting; 
                    }); 
                } 
                if (innermostIntersecting) { 
                    if (!this.instance.isOver) { 
                        this.instance.isOver = 1; 
                        this.instance.currentItem = $(that).clone().removeAttr('id').appendTo(this.instance.element).data("sortable-item", true); 
                        this.instance.options._helper = this.instance.options.helper; 
                        this.instance.options.helper = function() { 
                            return ui.helper[0]; 
                        } 
                        ; 
                        event.target = this.instance.currentItem[0]; 
                        this.instance._mouseCapture(event, true); 
                        this.instance._mouseStart(event, true, true); 
                        this.instance.offset.click.top = inst.offset.click.top; 
                        this.instance.offset.click.left = inst.offset.click.left; 
                        this.instance.offset.parent.left -= inst.offset.parent.left - this.instance.offset.parent.left; 
                        this.instance.offset.parent.top -= inst.offset.parent.top - this.instance.offset.parent.top; 
                        inst._trigger("toSortable", event); 
                        inst.dropped = this.instance.element; 
                        inst.currentItem = inst.element; 
                        this.instance.fromOutside = inst; 
                    } 
                    if (this.instance.currentItem) 
                        this.instance._mouseDrag(event); 
                } else { 
                    if (this.instance.isOver) { 
                        this.instance.isOver = 0; 
                        this.instance.cancelHelperRemoval = true; 
                        this.instance.options.revert = false; 
                        this.instance._trigger('out', event, this.instance._uiHash(this.instance)); 
                        this.instance._mouseStop(event, true); 
                        this.instance.options.helper = this.instance.options._helper; 
                        this.instance.currentItem.remove(); 
                        if (this.instance.placeholder) 
                            this.instance.placeholder.remove(); 
                        inst._trigger("fromSortable", event); 
                        inst.dropped = false; 
                    } 
                } 
                ; 
            }); 
        } 
    }); 
    $.ui.plugin.add("draggable", "cursor", { 
        start: function(event, ui) { 
            var t = $('body') 
              , o = $(this).data('draggable').options; 
            if (t.css("cursor")) 
                o._cursor = t.css("cursor"); 
            t.css("cursor", o.cursor); 
        }, 
        stop: function(event, ui) { 
            var o = $(this).data('draggable').options; 
            if (o._cursor) 
                $('body').css("cursor", o._cursor); 
        } 
    }); 
    $.ui.plugin.add("draggable", "opacity", { 
        start: function(event, ui) { 
            var t = $(ui.helper) 
              , o = $(this).data('draggable').options; 
            if (t.css("opacity")) 
                o._opacity = t.css("opacity"); 
            t.css('opacity', o.opacity); 
        }, 
        stop: function(event, ui) { 
            var o = $(this).data('draggable').options; 
            if (o._opacity) 
                $(ui.helper).css('opacity', o._opacity); 
        } 
    }); 
    $.ui.plugin.add("draggable", "scroll", { 
        start: function(event, ui) { 
            var i = $(this).data("draggable"); 
            if (i.scrollParent[0] != document && i.scrollParent[0].tagName != 'HTML') 
                i.overflowOffset = i.scrollParent.offset(); 
        }, 
        drag: function(event, ui) { 
            var i = $(this).data("draggable") 
              , o = i.options 
              , scrolled = false; 
            if (i.scrollParent[0] != document && i.scrollParent[0].tagName != 'HTML') { 
                if (!o.axis || o.axis != 'x') { 
                    if ((i.overflowOffset.top + i.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity) 
                        i.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop + o.scrollSpeed; 
                    else if (event.pageY - i.overflowOffset.top < o.scrollSensitivity) 
                        i.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop - o.scrollSpeed; 
                } 
                if (!o.axis || o.axis != 'y') { 
                    if ((i.overflowOffset.left + i.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity) 
                        i.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft + o.scrollSpeed; 
                    else if (event.pageX - i.overflowOffset.left < o.scrollSensitivity) 
                        i.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft - o.scrollSpeed; 
                } 
            } else { 
                if (!o.axis || o.axis != 'x') { 
                    if (event.pageY - $(document).scrollTop() < o.scrollSensitivity) 
                        scrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed); 
                    else if ($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity) 
                        scrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed); 
                } 
                if (!o.axis || o.axis != 'y') { 
                    if (event.pageX - $(document).scrollLeft() < o.scrollSensitivity) 
                        scrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed); 
                    else if ($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity) 
                        scrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed); 
                } 
            } 
            if (scrolled !== false && $.ui.ddmanager && !o.dropBehaviour) 
                $.ui.ddmanager.prepareOffsets(i, event); 
        } 
    }); 
    $.ui.plugin.add("draggable", "snap", { 
        start: function(event, ui) { 
            var i = $(this).data("draggable") 
              , o = i.options; 
            i.snapElements = []; 
            $(o.snap.constructor != String ? (o.snap.items || ':data(draggable)') : o.snap).each(function() { 
                var $t = $(this); 
                var $o = $t.offset(); 
                if (this != i.element[0]) 
                    i.snapElements.push({ 
                        item: this, 
                        width: $t.outerWidth(), 
                        height: $t.outerHeight(), 
                        top: $o.top, 
                        left: $o.left 
                    }); 
            }); 
        }, 
        drag: function(event, ui) { 
            var inst = $(this).data("draggable") 
              , o = inst.options; 
            var d = o.snapTolerance; 
            var x1 = ui.offset.left 
              , x2 = x1 + inst.helperProportions.width 
              , y1 = ui.offset.top 
              , y2 = y1 + inst.helperProportions.height; 
            for (var i = inst.snapElements.length - 1; i >= 0; i--) { 
                var l = inst.snapElements[i].left 
                  , r = l + inst.snapElements[i].width 
                  , t = inst.snapElements[i].top 
                  , b = t + inst.snapElements[i].height; 
                if (!((l - d < x1 && x1 < r + d && t - d < y1 && y1 < b + d) || (l - d < x1 && x1 < r + d && t - d < y2 && y2 < b + d) || (l - d < x2 && x2 < r + d && t - d < y1 && y1 < b + d) || (l - d < x2 && x2 < r + d && t - d < y2 && y2 < b + d))) { 
                    if (inst.snapElements[i].snapping) 
                        (inst.options.snap.release && inst.options.snap.release.call(inst.element, event, $.extend(inst._uiHash(), { 
                            snapItem: inst.snapElements[i].item 
                        }))); 
                    inst.snapElements[i].snapping = false; 
                    continue; 
                } 
                if (o.snapMode != 'inner') { 
                    var ts = Math.abs(t - y2) <= d; 
                    var bs = Math.abs(b - y1) <= d; 
                    var ls = Math.abs(l - x2) <= d; 
                    var rs = Math.abs(r - x1) <= d; 
                    if (ts) 
                        ui.position.top = inst._convertPositionTo("relative", { 
                            top: t - inst.helperProportions.height, 
                            left: 0 
                        }).top - inst.margins.top; 
                    if (bs) 
                        ui.position.top = inst._convertPositionTo("relative", { 
                            top: b, 
                            left: 0 
                        }).top - inst.margins.top; 
                    if (ls) 
                        ui.position.left = inst._convertPositionTo("relative", { 
                            top: 0, 
                            left: l - inst.helperProportions.width 
                        }).left - inst.margins.left; 
                    if (rs) 
                        ui.position.left = inst._convertPositionTo("relative", { 
                            top: 0, 
                            left: r 
                        }).left - inst.margins.left; 
                } 
                var first = (ts || bs || ls || rs); 
                if (o.snapMode != 'outer') { 
                    var ts = Math.abs(t - y1) <= d; 
                    var bs = Math.abs(b - y2) <= d; 
                    var ls = Math.abs(l - x1) <= d; 
                    var rs = Math.abs(r - x2) <= d; 
                    if (ts) 
                        ui.position.top = inst._convertPositionTo("relative", { 
                            top: t, 
                            left: 0 
                        }).top - inst.margins.top; 
                    if (bs) 
                        ui.position.top = inst._convertPositionTo("relative", { 
                            top: b - inst.helperProportions.height, 
                            left: 0 
                        }).top - inst.margins.top; 
                    if (ls) 
                        ui.position.left = inst._convertPositionTo("relative", { 
                            top: 0, 
                            left: l 
                        }).left - inst.margins.left; 
                    if (rs) 
                        ui.position.left = inst._convertPositionTo("relative", { 
                            top: 0, 
                            left: r - inst.helperProportions.width 
                        }).left - inst.margins.left; 
                } 
                if (!inst.snapElements[i].snapping && (ts || bs || ls || rs || first)) 
                    (inst.options.snap.snap && inst.options.snap.snap.call(inst.element, event, $.extend(inst._uiHash(), { 
                        snapItem: inst.snapElements[i].item 
                    }))); 
                inst.snapElements[i].snapping = (ts || bs || ls || rs || first); 
            } 
            ; 
        } 
    }); 
    $.ui.plugin.add("draggable", "stack", { 
        start: function(event, ui) { 
            var o = $(this).data("draggable").options; 
            var group = $.makeArray($(o.stack)).sort(function(a, b) { 
                return (parseInt($(a).css("zIndex"), 10) || 0) - (parseInt($(b).css("zIndex"), 10) || 0); 
            }); 
            if (!group.length) { 
                return; 
            } 
            var min = parseInt(group[0].style.zIndex) || 0; 
            $(group).each(function(i) { 
                this.style.zIndex = min + i; 
            }); 
            this[0].style.zIndex = min + group.length; 
        } 
    }); 
    $.ui.plugin.add("draggable", "zIndex", { 
        start: function(event, ui) { 
            var t = $(ui.helper) 
              , o = $(this).data("draggable").options; 
            if (t.css("zIndex")) 
                o._zIndex = t.css("zIndex"); 
            t.css('zIndex', o.zIndex); 
        }, 
        stop: function(event, ui) { 
            var o = $(this).data("draggable").options; 
            if (o._zIndex) 
                $(ui.helper).css('zIndex', o._zIndex); 
        } 
    }); 
} 
)(jQuery); 
(function($, undefined) { 
    $.widget("ui.droppable", { 
        version: "1.9.2", 
        widgetEventPrefix: "drop", 
        options: { 
            accept: '*', 
            activeClass: false, 
            addClasses: true, 
            greedy: false, 
            hoverClass: false, 
            scope: 'default', 
            tolerance: 'intersect' 
        }, 
        _create: function() { 
            var o = this.options 
              , accept = o.accept; 
            this.isover = 0; 
            this.isout = 1; 
            this.accept = $.isFunction(accept) ? accept : function(d) { 
                return d.is(accept); 
            } 
            ; 
            this.proportions = { 
                width: this.element[0].offsetWidth, 
                height: this.element[0].offsetHeight 
            }; 
            $.ui.ddmanager.droppables[o.scope] = $.ui.ddmanager.droppables[o.scope] || []; 
            $.ui.ddmanager.droppables[o.scope].push(this); 
            (o.addClasses && this.element.addClass("ui-droppable")); 
        }, 
        _destroy: function() { 
            var drop = $.ui.ddmanager.droppables[this.options.scope]; 
            for (var i = 0; i < drop.length; i++) 
                if (drop[i] == this) 
                    drop.splice(i, 1); 
            this.element.removeClass("ui-droppable ui-droppable-disabled"); 
        }, 
        _setOption: function(key, value) { 
            if (key == 'accept') { 
                this.accept = $.isFunction(value) ? value : function(d) { 
                    return d.is(value); 
                } 
                ; 
            } 
            $.Widget.prototype._setOption.apply(this, arguments); 
        }, 
        _activate: function(event) { 
            var draggable = $.ui.ddmanager.current; 
            if (this.options.activeClass) 
                this.element.addClass(this.options.activeClass); 
            (draggable && this._trigger('activate', event, this.ui(draggable))); 
        }, 
        _deactivate: function(event) { 
            var draggable = $.ui.ddmanager.current; 
            if (this.options.activeClass) 
                this.element.removeClass(this.options.activeClass); 
            (draggable && this._trigger('deactivate', event, this.ui(draggable))); 
        }, 
        _over: function(event) { 
            var draggable = $.ui.ddmanager.current; 
            if (!draggable || (draggable.currentItem || draggable.element)[0] == this.element[0]) 
                return; 
            if (this.accept.call(this.element[0], (draggable.currentItem || draggable.element))) { 
                if (this.options.hoverClass) 
                    this.element.addClass(this.options.hoverClass); 
                this._trigger('over', event, this.ui(draggable)); 
            } 
        }, 
        _out: function(event) { 
            var draggable = $.ui.ddmanager.current; 
            if (!draggable || (draggable.currentItem || draggable.element)[0] == this.element[0]) 
                return; 
            if (this.accept.call(this.element[0], (draggable.currentItem || draggable.element))) { 
                if (this.options.hoverClass) 
                    this.element.removeClass(this.options.hoverClass); 
                this._trigger('out', event, this.ui(draggable)); 
            } 
        }, 
        _drop: function(event, custom) { 
            var draggable = custom || $.ui.ddmanager.current; 
            if (!draggable || (draggable.currentItem || draggable.element)[0] == this.element[0]) 
                return false; 
            var childrenIntersection = false; 
            this.element.find(":data(droppable)").not(".ui-draggable-dragging").each(function() { 
                var inst = $.data(this, 'droppable'); 
                if (inst.options.greedy && !inst.options.disabled && inst.options.scope == draggable.options.scope && inst.accept.call(inst.element[0], (draggable.currentItem || draggable.element)) && $.ui.intersect(draggable, $.extend(inst, { 
                    offset: inst.element.offset() 
                }), inst.options.tolerance)) { 
                    childrenIntersection = true; 
                    return false; 
                } 
            }); 
            if (childrenIntersection) 
                return false; 
            if (this.accept.call(this.element[0], (draggable.currentItem || draggable.element))) { 
                if (this.options.activeClass) 
                    this.element.removeClass(this.options.activeClass); 
                if (this.options.hoverClass) 
                    this.element.removeClass(this.options.hoverClass); 
                this._trigger('drop', event, this.ui(draggable)); 
                return this.element; 
            } 
            return false; 
        }, 
        ui: function(c) { 
            return { 
                draggable: (c.currentItem || c.element), 
                helper: c.helper, 
                position: c.position, 
                offset: c.positionAbs 
            }; 
        } 
    }); 
    $.ui.intersect = function(draggable, droppable, toleranceMode) { 
        if (!droppable.offset) 
            return false; 
        var x1 = (draggable.positionAbs || draggable.position.absolute).left 
          , x2 = x1 + draggable.helperProportions.width 
          , y1 = (draggable.positionAbs || draggable.position.absolute).top 
          , y2 = y1 + draggable.helperProportions.height; 
        var l = droppable.offset.left 
          , r = l + droppable.proportions.width 
          , t = droppable.offset.top 
          , b = t + droppable.proportions.height; 
        switch (toleranceMode) { 
        case 'fit': 
            return (l <= x1 && x2 <= r && t <= y1 && y2 <= b); 
            break; 
        case 'intersect': 
            return (l < x1 + (draggable.helperProportions.width / 2) && x2 - (draggable.helperProportions.width / 2) < r && t < y1 + (draggable.helperProportions.height / 2) && y2 - (draggable.helperProportions.height / 2) < b); 
            break; 
        case 'pointer': 
            var draggableLeft = ((draggable.positionAbs || draggable.position.absolute).left + (draggable.clickOffset || draggable.offset.click).left) 
              , draggableTop = ((draggable.positionAbs || draggable.position.absolute).top + (draggable.clickOffset || draggable.offset.click).top) 
              , isOver = $.ui.isOver(draggableTop, draggableLeft, t, l, droppable.proportions.height, droppable.proportions.width); 
            return isOver; 
            break; 
        case 'touch': 
            return ((y1 >= t && y1 <= b) || (y2 >= t && y2 <= b) || (y1 < t && y2 > b)) && ((x1 >= l && x1 <= r) || (x2 >= l && x2 <= r) || (x1 < l && x2 > r)); 
            break; 
        default: 
            return false; 
            break; 
        } 
    } 
    ; 
    $.ui.ddmanager = { 
        current: null, 
        droppables: { 
            'default': [] 
        }, 
        prepareOffsets: function(t, event) { 
            var m = $.ui.ddmanager.droppables[t.options.scope] || []; 
            var type = event ? event.type : null; 
            var list = (t.currentItem || t.element).find(":data(droppable)").andSelf(); 
            droppablesLoop: for (var i = 0; i < m.length; i++) { 
                if (m[i].options.disabled || (t && !m[i].accept.call(m[i].element[0], (t.currentItem || t.element)))) 
                    continue; 
                for (var j = 0; j < list.length; j++) { 
                    if (list[j] == m[i].element[0]) { 
                        m[i].proportions.height = 0; 
                        continue droppablesLoop; 
                    } 
                } 
                ;m[i].visible = m[i].element.css("display") != "none"; 
                if (!m[i].visible) 
                    continue; 
                if (type == "mousedown") 
                    m[i]._activate.call(m[i], event); 
                m[i].offset = m[i].element.offset(); 
                m[i].proportions = { 
                    width: m[i].element[0].offsetWidth, 
                    height: m[i].element[0].offsetHeight 
                }; 
            } 
        }, 
        drop: function(draggable, event) { 
            var dropped = false; 
            $.each($.ui.ddmanager.droppables[draggable.options.scope] || [], function() { 
                if (!this.options) 
                    return; 
                if (!this.options.disabled && this.visible && $.ui.intersect(draggable, this, this.options.tolerance)) 
                    dropped = this._drop.call(this, event) || dropped; 
                if (!this.options.disabled && this.visible && this.accept.call(this.element[0], (draggable.currentItem || draggable.element))) { 
                    this.isout = 1; 
                    this.isover = 0; 
                    this._deactivate.call(this, event); 
                } 
            }); 
            return dropped; 
        }, 
        dragStart: function(draggable, event) { 
            draggable.element.parentsUntil("body").bind("scroll.droppable", function() { 
                if (!draggable.options.refreshPositions) 
                    $.ui.ddmanager.prepareOffsets(draggable, event); 
            }); 
        }, 
        drag: function(draggable, event) { 
            if (draggable.options.refreshPositions) 
                $.ui.ddmanager.prepareOffsets(draggable, event); 
            $.each($.ui.ddmanager.droppables[draggable.options.scope] || [], function() { 
                if (this.options.disabled || this.greedyChild || !this.visible) 
                    return; 
                var intersects = $.ui.intersect(draggable, this, this.options.tolerance); 
                var c = !intersects && this.isover == 1 ? 'isout' : (intersects && this.isover == 0 ? 'isover' : null); 
                if (!c) 
                    return; 
                var parentInstance; 
                if (this.options.greedy) { 
                    var scope = this.options.scope; 
                    var parent = this.element.parents(':data(droppable)').filter(function() { 
                        return $.data(this, 'droppable').options.scope === scope; 
                    }); 
                    if (parent.length) { 
                        parentInstance = $.data(parent[0], 'droppable'); 
                        parentInstance.greedyChild = (c == 'isover' ? 1 : 0); 
                    } 
                } 
                if (parentInstance && c == 'isover') { 
                    parentInstance['isover'] = 0; 
                    parentInstance['isout'] = 1; 
                    parentInstance._out.call(parentInstance, event); 
                } 
                this[c] = 1; 
                this[c == 'isout' ? 'isover' : 'isout'] = 0; 
                this[c == "isover" ? "_over" : "_out"].call(this, event); 
                if (parentInstance && c == 'isout') { 
                    parentInstance['isout'] = 0; 
                    parentInstance['isover'] = 1; 
                    parentInstance._over.call(parentInstance, event); 
                } 
            }); 
        }, 
        dragStop: function(draggable, event) { 
            draggable.element.parentsUntil("body").unbind("scroll.droppable"); 
            if (!draggable.options.refreshPositions) 
                $.ui.ddmanager.prepareOffsets(draggable, event); 
        } 
    }; 
} 
)(jQuery); 
(function($, undefined) { 
    $.widget("ui.resizable", $.ui.mouse, { 
        version: "1.9.2", 
        widgetEventPrefix: "resize", 
        options: { 
            alsoResize: false, 
            animate: false, 
            animateDuration: "slow", 
            animateEasing: "swing", 
            aspectRatio: false, 
            autoHide: false, 
            containment: false, 
            ghost: false, 
            grid: false, 
            handles: "e,s,se", 
            helper: false, 
            maxHeight: null, 
            maxWidth: null, 
            minHeight: 10, 
            minWidth: 10, 
            zIndex: 1000 
        }, 
        _create: function() { 
            var that = this 
              , o = this.options; 
            this.element.addClass("ui-resizable"); 
            $.extend(this, { 
                _aspectRatio: !!(o.aspectRatio), 
                aspectRatio: o.aspectRatio, 
                originalElement: this.element, 
                _proportionallyResizeElements: [], 
                _helper: o.helper || o.ghost || o.animate ? o.helper || 'ui-resizable-helper' : null 
            }); 
            if (this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)) { 
                this.element.wrap($('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({ 
                    position: this.element.css('position'), 
                    width: this.element.outerWidth(), 
                    height: this.element.outerHeight(), 
                    top: this.element.css('top'), 
                    left: this.element.css('left') 
                })); 
                this.element = this.element.parent().data("resizable", this.element.data('resizable')); 
                this.elementIsWrapper = true; 
                this.element.css({ 
                    marginLeft: this.originalElement.css("marginLeft"), 
                    marginTop: this.originalElement.css("marginTop"), 
                    marginRight: this.originalElement.css("marginRight"), 
                    marginBottom: this.originalElement.css("marginBottom") 
                }); 
                this.originalElement.css({ 
                    marginLeft: 0, 
                    marginTop: 0, 
                    marginRight: 0, 
                    marginBottom: 0 
                }); 
                this.originalResizeStyle = this.originalElement.css('resize'); 
                this.originalElement.css('resize', 'none'); 
                this._proportionallyResizeElements.push(this.originalElement.css({ 
                    position: 'static', 
                    zoom: 1, 
                    display: 'block' 
                })); 
                this.originalElement.css({ 
                    margin: this.originalElement.css('margin') 
                }); 
                this._proportionallyResize(); 
            } 
            this.handles = o.handles || (!$('.ui-resizable-handle', this.element).length ? "e,s,se" : { 
                n: '.ui-resizable-n', 
                e: '.ui-resizable-e', 
                s: '.ui-resizable-s', 
                w: '.ui-resizable-w', 
                se: '.ui-resizable-se', 
                sw: '.ui-resizable-sw', 
                ne: '.ui-resizable-ne', 
                nw: '.ui-resizable-nw' 
            }); 
            if (this.handles.constructor == String) { 
                if (this.handles == 'all') 
                    this.handles = 'n,e,s,w,se,sw,ne,nw'; 
                var n = this.handles.split(","); 
                this.handles = {}; 
                for (var i = 0; i < n.length; i++) { 
                    var handle = $.trim(n[i]) 
                      , hname = 'ui-resizable-' + handle; 
                    var axis = $('<div class="ui-resizable-handle ' + hname + '"></div>'); 
                    axis.css({ 
                        zIndex: o.zIndex 
                    }); 
                    if ('se' == handle) { 
                        axis.addClass('ui-icon ui-icon-gripsmall-diagonal-se'); 
                    } 
                    ;this.handles[handle] = '.ui-resizable-' + handle; 
                    this.element.append(axis); 
                } 
            } 
            this._renderAxis = function(target) { 
                target = target || this.element; 
                for (var i in this.handles) { 
                    if (this.handles[i].constructor == String) 
                        this.handles[i] = $(this.handles[i], this.element).show(); 
                    if (this.elementIsWrapper && this.originalElement[0].nodeName.match(/textarea|input|select|button/i)) { 
                        var axis = $(this.handles[i], this.element) 
                          , padWrapper = 0; 
                        padWrapper = /sw|ne|nw|se|n|s/.test(i) ? axis.outerHeight() : axis.outerWidth(); 
                        var padPos = ['padding', /ne|nw|n/.test(i) ? 'Top' : /se|sw|s/.test(i) ? 'Bottom' : /^e$/.test(i) ? 'Right' : 'Left'].join(""); 
                        target.css(padPos, padWrapper); 
                        this._proportionallyResize(); 
                    } 
                    if (!$(this.handles[i]).length) 
                        continue; 
                } 
            } 
            ; 
            this._renderAxis(this.element); 
            this._handles = $('.ui-resizable-handle', this.element).disableSelection(); 
            this._handles.mouseover(function() { 
                if (!that.resizing) { 
                    if (this.className) 
                        var axis = this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i); 
                    that.axis = axis && axis[1] ? axis[1] : 'se'; 
                } 
            }); 
            if (o.autoHide) { 
                this._handles.hide(); 
                $(this.element).addClass("ui-resizable-autohide").mouseenter(function() { 
                    if (o.disabled) 
                        return; 
                    $(this).removeClass("ui-resizable-autohide"); 
                    that._handles.show(); 
                }).mouseleave(function() { 
                    if (o.disabled) 
                        return; 
                    if (!that.resizing) { 
                        $(this).addClass("ui-resizable-autohide"); 
                        that._handles.hide(); 
                    } 
                }); 
            } 
            this._mouseInit(); 
        }, 
        _destroy: function() { 
            this._mouseDestroy(); 
            var _destroy = function(exp) { 
                $(exp).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").removeData("ui-resizable").unbind(".resizable").find('.ui-resizable-handle').remove(); 
            }; 
            if (this.elementIsWrapper) { 
                _destroy(this.element); 
                var wrapper = this.element; 
                this.originalElement.css({ 
                    position: wrapper.css('position'), 
                    width: wrapper.outerWidth(), 
                    height: wrapper.outerHeight(), 
                    top: wrapper.css('top'), 
                    left: wrapper.css('left') 
                }).insertAfter(wrapper); 
                wrapper.remove(); 
            } 
            this.originalElement.css('resize', this.originalResizeStyle); 
            _destroy(this.originalElement); 
            return this; 
        }, 
        _mouseCapture: function(event) { 
            var handle = false; 
            for (var i in this.handles) { 
                if ($(this.handles[i])[0] == event.target) { 
                    handle = true; 
                } 
            } 
            return !this.options.disabled && handle; 
        }, 
        _mouseStart: function(event) { 
            var o = this.options 
              , iniPos = this.element.position() 
              , el = this.element; 
            this.resizing = true; 
            this.documentScroll = { 
                top: $(document).scrollTop(), 
                left: $(document).scrollLeft() 
            }; 
            if (el.is('.ui-draggable') || (/absolute/).test(el.css('position'))) { 
                el.css({ 
                    position: 'absolute', 
                    top: iniPos.top, 
                    left: iniPos.left 
                }); 
            } 
            this._renderProxy(); 
            var curleft = num(this.helper.css('left')) 
              , curtop = num(this.helper.css('top')); 
            if (o.containment) { 
                curleft += $(o.containment).scrollLeft() || 0; 
                curtop += $(o.containment).scrollTop() || 0; 
            } 
            this.offset = this.helper.offset(); 
            this.position = { 
                left: curleft, 
                top: curtop 
            }; 
            this.size = this._helper ? { 
                width: el.outerWidth(), 
                height: el.outerHeight() 
            } : { 
                width: el.width(), 
                height: el.height() 
            }; 
            this.originalSize = this._helper ? { 
                width: el.outerWidth(), 
                height: el.outerHeight() 
            } : { 
                width: el.width(), 
                height: el.height() 
            }; 
            this.originalPosition = { 
                left: curleft, 
                top: curtop 
            }; 
            this.sizeDiff = { 
                width: el.outerWidth() - el.width(), 
                height: el.outerHeight() - el.height() 
            }; 
            this.originalMousePosition = { 
                left: event.pageX, 
                top: event.pageY 
            }; 
            this.aspectRatio = (typeof o.aspectRatio == 'number') ? o.aspectRatio : ((this.originalSize.width / this.originalSize.height) || 1); 
            var cursor = $('.ui-resizable-' + this.axis).css('cursor'); 
            $('body').css('cursor', cursor == 'auto' ? this.axis + '-resize' : cursor); 
            el.addClass("ui-resizable-resizing"); 
            this._propagate("start", event); 
            return true; 
        }, 
        _mouseDrag: function(event) { 
            var el = this.helper 
              , o = this.options 
              , props = {} 
              , that = this 
              , smp = this.originalMousePosition 
              , a = this.axis; 
            var dx = (event.pageX - smp.left) || 0 
              , dy = (event.pageY - smp.top) || 0; 
            var trigger = this._change[a]; 
            if (!trigger) 
                return false; 
            var data = trigger.apply(this, [event, dx, dy]); 
            this._updateVirtualBoundaries(event.shiftKey); 
            if (this._aspectRatio || event.shiftKey) 
                data = this._updateRatio(data, event); 
            data = this._respectSize(data, event); 
            this._propagate("resize", event); 
            el.css({ 
                top: this.position.top + "px", 
                left: this.position.left + "px", 
                width: this.size.width + "px", 
                height: this.size.height + "px" 
            }); 
            if (!this._helper && this._proportionallyResizeElements.length) 
                this._proportionallyResize(); 
            this._updateCache(data); 
            this._trigger('resize', event, this.ui()); 
            return false; 
        }, 
        _mouseStop: function(event) { 
            this.resizing = false; 
            var o = this.options 
              , that = this; 
            if (this._helper) { 
                var pr = this._proportionallyResizeElements 
                  , ista = pr.length && (/textarea/i).test(pr[0].nodeName) 
                  , soffseth = ista && $.ui.hasScroll(pr[0], 'left') ? 0 : that.sizeDiff.height 
                  , soffsetw = ista ? 0 : that.sizeDiff.width; 
                var s = { 
                    width: (that.helper.width() - soffsetw), 
                    height: (that.helper.height() - soffseth) 
                } 
                  , left = (parseInt(that.element.css('left'), 10) + (that.position.left - that.originalPosition.left)) || null 
                  , top = (parseInt(that.element.css('top'), 10) + (that.position.top - that.originalPosition.top)) || null; 
                if (!o.animate) 
                    this.element.css($.extend(s, { 
                        top: top, 
                        left: left 
                    })); 
                that.helper.height(that.size.height); 
                that.helper.width(that.size.width); 
                if (this._helper && !o.animate) 
                    this._proportionallyResize(); 
            } 
            $('body').css('cursor', 'auto'); 
            this.element.removeClass("ui-resizable-resizing"); 
            this._propagate("stop", event); 
            if (this._helper) 
                this.helper.remove(); 
            return false; 
        }, 
        _updateVirtualBoundaries: function(forceAspectRatio) { 
            var o = this.options, pMinWidth, pMaxWidth, pMinHeight, pMaxHeight, b; 
            b = { 
                minWidth: isNumber(o.minWidth) ? o.minWidth : 0, 
                maxWidth: isNumber(o.maxWidth) ? o.maxWidth : Infinity, 
                minHeight: isNumber(o.minHeight) ? o.minHeight : 0, 
                maxHeight: isNumber(o.maxHeight) ? o.maxHeight : Infinity 
            }; 
            if (this._aspectRatio || forceAspectRatio) { 
                pMinWidth = b.minHeight * this.aspectRatio; 
                pMinHeight = b.minWidth / this.aspectRatio; 
                pMaxWidth = b.maxHeight * this.aspectRatio; 
                pMaxHeight = b.maxWidth / this.aspectRatio; 
                if (pMinWidth > b.minWidth) 
                    b.minWidth = pMinWidth; 
                if (pMinHeight > b.minHeight) 
                    b.minHeight = pMinHeight; 
                if (pMaxWidth < b.maxWidth) 
                    b.maxWidth = pMaxWidth; 
                if (pMaxHeight < b.maxHeight) 
                    b.maxHeight = pMaxHeight; 
            } 
            this._vBoundaries = b; 
        }, 
        _updateCache: function(data) { 
            var o = this.options; 
            this.offset = this.helper.offset(); 
            if (isNumber(data.left)) 
                this.position.left = data.left; 
            if (isNumber(data.top)) 
                this.position.top = data.top; 
            if (isNumber(data.height)) 
                this.size.height = data.height; 
            if (isNumber(data.width)) 
                this.size.width = data.width; 
        }, 
        _updateRatio: function(data, event) { 
            var o = this.options 
              , cpos = this.position 
              , csize = this.size 
              , a = this.axis; 
            if (isNumber(data.height)) 
                data.width = (data.height * this.aspectRatio); 
            else if (isNumber(data.width)) 
                data.height = (data.width / this.aspectRatio); 
            if (a == 'sw') { 
                data.left = cpos.left + (csize.width - data.width); 
                data.top = null; 
            } 
            if (a == 'nw') { 
                data.top = cpos.top + (csize.height - data.height); 
                data.left = cpos.left + (csize.width - data.width); 
            } 
            return data; 
        }, 
        _respectSize: function(data, event) { 
            var el = this.helper 
              , o = this._vBoundaries 
              , pRatio = this._aspectRatio || event.shiftKey 
              , a = this.axis 
              , ismaxw = isNumber(data.width) && o.maxWidth && (o.maxWidth < data.width) 
              , ismaxh = isNumber(data.height) && o.maxHeight && (o.maxHeight < data.height) 
              , isminw = isNumber(data.width) && o.minWidth && (o.minWidth > data.width) 
              , isminh = isNumber(data.height) && o.minHeight && (o.minHeight > data.height); 
            if (isminw) 
                data.width = o.minWidth; 
            if (isminh) 
                data.height = o.minHeight; 
            if (ismaxw) 
                data.width = o.maxWidth; 
            if (ismaxh) 
                data.height = o.maxHeight; 
            var dw = this.originalPosition.left + this.originalSize.width 
              , dh = this.position.top + this.size.height; 
            var cw = /sw|nw|w/.test(a) 
              , ch = /nw|ne|n/.test(a); 
            if (isminw && cw) 
                data.left = dw - o.minWidth; 
            if (ismaxw && cw) 
                data.left = dw - o.maxWidth; 
            if (isminh && ch) 
                data.top = dh - o.minHeight; 
            if (ismaxh && ch) 
                data.top = dh - o.maxHeight; 
            var isNotwh = !data.width && !data.height; 
            if (isNotwh && !data.left && data.top) 
                data.top = null; 
            else if (isNotwh && !data.top && data.left) 
                data.left = null; 
            return data; 
        }, 
        _proportionallyResize: function() { 
            var o = this.options; 
            if (!this._proportionallyResizeElements.length) 
                return; 
            var element = this.helper || this.element; 
            for (var i = 0; i < this._proportionallyResizeElements.length; i++) { 
                var prel = this._proportionallyResizeElements[i]; 
                if (!this.borderDif) { 
                    var b = [prel.css('borderTopWidth'), prel.css('borderRightWidth'), prel.css('borderBottomWidth'), prel.css('borderLeftWidth')] 
                      , p = [prel.css('paddingTop'), prel.css('paddingRight'), prel.css('paddingBottom'), prel.css('paddingLeft')]; 
                    this.borderDif = $.map(b, function(v, i) { 
                        var border = parseInt(v, 10) || 0 
                          , padding = parseInt(p[i], 10) || 0; 
                        return border + padding; 
                    }); 
                } 
                prel.css({ 
                    height: (element.height() - this.borderDif[0] - this.borderDif[2]) || 0, 
                    width: (element.width() - this.borderDif[1] - this.borderDif[3]) || 0 
                }); 
            } 
            ; 
        }, 
        _renderProxy: function() { 
            var el = this.element 
              , o = this.options; 
            this.elementOffset = el.offset(); 
            if (this._helper) { 
                this.helper = this.helper || $('<div style="overflow:hidden;"></div>'); 
                var ie6offset = ($.ui.ie6 ? 1 : 0) 
                  , pxyoffset = ($.ui.ie6 ? 2 : -1); 
                this.helper.addClass(this._helper).css({ 
                    width: this.element.outerWidth() + pxyoffset, 
                    height: this.element.outerHeight() + pxyoffset, 
                    position: 'absolute', 
                    left: this.elementOffset.left - ie6offset + 'px', 
                    top: this.elementOffset.top - ie6offset + 'px', 
                    zIndex: ++o.zIndex 
                }); 
                this.helper.appendTo("body").disableSelection(); 
            } else { 
                this.helper = this.element; 
            } 
        }, 
        _change: { 
            e: function(event, dx, dy) { 
                return { 
                    width: this.originalSize.width + dx 
                }; 
            }, 
            w: function(event, dx, dy) { 
                var o = this.options 
                  , cs = this.originalSize 
                  , sp = this.originalPosition; 
                return { 
                    left: sp.left + dx, 
                    width: cs.width - dx 
                }; 
            }, 
            n: function(event, dx, dy) { 
                var o = this.options 
                  , cs = this.originalSize 
                  , sp = this.originalPosition; 
                return { 
                    top: sp.top + dy, 
                    height: cs.height - dy 
                }; 
            }, 
            s: function(event, dx, dy) { 
                return { 
                    height: this.originalSize.height + dy 
                }; 
            }, 
            se: function(event, dx, dy) { 
                return $.extend(this._change.s.apply(this, arguments), this._change.e.apply(this, [event, dx, dy])); 
            }, 
            sw: function(event, dx, dy) { 
                return $.extend(this._change.s.apply(this, arguments), this._change.w.apply(this, [event, dx, dy])); 
            }, 
            ne: function(event, dx, dy) { 
                return $.extend(this._change.n.apply(this, arguments), this._change.e.apply(this, [event, dx, dy])); 
            }, 
            nw: function(event, dx, dy) { 
                return $.extend(this._change.n.apply(this, arguments), this._change.w.apply(this, [event, dx, dy])); 
            } 
        }, 
        _propagate: function(n, event) { 
            $.ui.plugin.call(this, n, [event, this.ui()]); 
            (n != "resize" && this._trigger(n, event, this.ui())); 
        }, 
        plugins: {}, 
        ui: function() { 
            return { 
                originalElement: this.originalElement, 
                element: this.element, 
                helper: this.helper, 
                position: this.position, 
                size: this.size, 
                originalSize: this.originalSize, 
                originalPosition: this.originalPosition 
            }; 
        } 
    }); 
    $.ui.plugin.add("resizable", "alsoResize", { 
        start: function(event, ui) { 
            var that = $(this).data("resizable") 
              , o = that.options; 
            var _store = function(exp) { 
                $(exp).each(function() { 
                    var el = $(this); 
                    el.data("resizable-alsoresize", { 
                        width: parseInt(el.width(), 10), 
                        height: parseInt(el.height(), 10), 
                        left: parseInt(el.css('left'), 10), 
                        top: parseInt(el.css('top'), 10) 
                    }); 
                }); 
            }; 
            if (typeof (o.alsoResize) == 'object' && !o.alsoResize.parentNode) { 
                if (o.alsoResize.length) { 
                    o.alsoResize = o.alsoResize[0]; 
                    _store(o.alsoResize); 
                } else { 
                    $.each(o.alsoResize, function(exp) { 
                        _store(exp); 
                    }); 
                } 
            } else { 
                _store(o.alsoResize); 
            } 
        }, 
        resize: function(event, ui) { 
            var that = $(this).data("resizable") 
              , o = that.options 
              , os = that.originalSize 
              , op = that.originalPosition; 
            var delta = { 
                height: (that.size.height - os.height) || 0, 
                width: (that.size.width - os.width) || 0, 
                top: (that.position.top - op.top) || 0, 
                left: (that.position.left - op.left) || 0 
            } 
              , _alsoResize = function(exp, c) { 
                $(exp).each(function() { 
                    var el = $(this) 
                      , start = $(this).data("resizable-alsoresize") 
                      , style = {} 
                      , css = c && c.length ? c : el.parents(ui.originalElement[0]).length ? ['width', 'height'] : ['width', 'height', 'top', 'left']; 
                    $.each(css, function(i, prop) { 
                        var sum = (start[prop] || 0) + (delta[prop] || 0); 
                        if (sum && sum >= 0) 
                            style[prop] = sum || null; 
                    }); 
                    el.css(style); 
                }); 
            }; 
            if (typeof (o.alsoResize) == 'object' && !o.alsoResize.nodeType) { 
                $.each(o.alsoResize, function(exp, c) { 
                    _alsoResize(exp, c); 
                }); 
            } else { 
                _alsoResize(o.alsoResize); 
            } 
        }, 
        stop: function(event, ui) { 
            $(this).removeData("resizable-alsoresize"); 
        } 
    }); 
    $.ui.plugin.add("resizable", "animate", { 
        stop: function(event, ui) { 
            var that = $(this).data("resizable") 
              , o = that.options; 
            var pr = that._proportionallyResizeElements 
              , ista = pr.length && (/textarea/i).test(pr[0].nodeName) 
              , soffseth = ista && $.ui.hasScroll(pr[0], 'left') ? 0 : that.sizeDiff.height 
              , soffsetw = ista ? 0 : that.sizeDiff.width; 
            var style = { 
                width: (that.size.width - soffsetw), 
                height: (that.size.height - soffseth) 
            } 
              , left = (parseInt(that.element.css('left'), 10) + (that.position.left - that.originalPosition.left)) || null 
              , top = (parseInt(that.element.css('top'), 10) + (that.position.top - that.originalPosition.top)) || null; 
            that.element.animate($.extend(style, top && left ? { 
                top: top, 
                left: left 
            } : {}), { 
                duration: o.animateDuration, 
                easing: o.animateEasing, 
                step: function() { 
                    var data = { 
                        width: parseInt(that.element.css('width'), 10), 
                        height: parseInt(that.element.css('height'), 10), 
                        top: parseInt(that.element.css('top'), 10), 
                        left: parseInt(that.element.css('left'), 10) 
                    }; 
                    if (pr && pr.length) 
                        $(pr[0]).css({ 
                            width: data.width, 
                            height: data.height 
                        }); 
                    that._updateCache(data); 
                    that._propagate("resize", event); 
                } 
            }); 
        } 
    }); 
    $.ui.plugin.add("resizable", "containment", { 
        start: function(event, ui) { 
            var that = $(this).data("resizable") 
              , o = that.options 
              , el = that.element; 
            var oc = o.containment 
              , ce = (oc instanceof $) ? oc.get(0) : (/parent/.test(oc)) ? el.parent().get(0) : oc; 
            if (!ce) 
                return; 
            that.containerElement = $(ce); 
            if (/document/.test(oc) || oc == document) { 
                that.containerOffset = { 
                    left: 0, 
                    top: 0 
                }; 
                that.containerPosition = { 
                    left: 0, 
                    top: 0 
                }; 
                that.parentData = { 
                    element: $(document), 
                    left: 0, 
                    top: 0, 
                    width: $(document).width(), 
                    height: $(document).height() || document.body.parentNode.scrollHeight 
                }; 
            } else { 
                var element = $(ce) 
                  , p = []; 
                $(["Top", "Right", "Left", "Bottom"]).each(function(i, name) { 
                    p[i] = num(element.css("padding" + name)); 
                }); 
                that.containerOffset = element.offset(); 
                that.containerPosition = element.position(); 
                that.containerSize = { 
                    height: (element.innerHeight() - p[3]), 
                    width: (element.innerWidth() - p[1]) 
                }; 
                var co = that.containerOffset 
                  , ch = that.containerSize.height 
                  , cw = that.containerSize.width 
                  , width = ($.ui.hasScroll(ce, "left") ? ce.scrollWidth : cw) 
                  , height = ($.ui.hasScroll(ce) ? ce.scrollHeight : ch); 
                that.parentData = { 
                    element: ce, 
                    left: co.left, 
                    top: co.top, 
                    width: width, 
                    height: height 
                }; 
            } 
        }, 
        resize: function(event, ui) { 
            var that = $(this).data("resizable") 
              , o = that.options 
              , ps = that.containerSize 
              , co = that.containerOffset 
              , cs = that.size 
              , cp = that.position 
              , pRatio = that._aspectRatio || event.shiftKey 
              , cop = { 
                top: 0, 
                left: 0 
            } 
              , ce = that.containerElement; 
            if (ce[0] != document && (/static/).test(ce.css('position'))) 
                cop = co; 
            if (cp.left < (that._helper ? co.left : 0)) { 
                that.size.width = that.size.width + (that._helper ? (that.position.left - co.left) : (that.position.left - cop.left)); 
                if (pRatio) 
                    that.size.height = that.size.width / that.aspectRatio; 
                that.position.left = o.helper ? co.left : 0; 
            } 
            if (cp.top < (that._helper ? co.top : 0)) { 
                that.size.height = that.size.height + (that._helper ? (that.position.top - co.top) : that.position.top); 
                if (pRatio) 
                    that.size.width = that.size.height * that.aspectRatio; 
                that.position.top = that._helper ? co.top : 0; 
            } 
            that.offset.left = that.parentData.left + that.position.left; 
            that.offset.top = that.parentData.top + that.position.top; 
            var woset = Math.abs((that._helper ? that.offset.left - cop.left : (that.offset.left - cop.left)) + that.sizeDiff.width) 
              , hoset = Math.abs((that._helper ? that.offset.top - cop.top : (that.offset.top - co.top)) + that.sizeDiff.height); 
            var isParent = that.containerElement.get(0) == that.element.parent().get(0) 
              , isOffsetRelative = /relative|absolute/.test(that.containerElement.css('position')); 
            if (isParent && isOffsetRelative) 
                woset -= that.parentData.left; 
            if (woset + that.size.width >= that.parentData.width) { 
                that.size.width = that.parentData.width - woset; 
                if (pRatio) 
                    that.size.height = that.size.width / that.aspectRatio; 
            } 
            if (hoset + that.size.height >= that.parentData.height) { 
                that.size.height = that.parentData.height - hoset; 
                if (pRatio) 
                    that.size.width = that.size.height * that.aspectRatio; 
            } 
        }, 
        stop: function(event, ui) { 
            var that = $(this).data("resizable") 
              , o = that.options 
              , cp = that.position 
              , co = that.containerOffset 
              , cop = that.containerPosition 
              , ce = that.containerElement; 
            var helper = $(that.helper) 
              , ho = helper.offset() 
              , w = helper.outerWidth() - that.sizeDiff.width 
              , h = helper.outerHeight() - that.sizeDiff.height; 
            if (that._helper && !o.animate && (/relative/).test(ce.css('position'))) 
                $(this).css({ 
                    left: ho.left - cop.left - co.left, 
                    width: w, 
                    height: h 
                }); 
            if (that._helper && !o.animate && (/static/).test(ce.css('position'))) 
                $(this).css({ 
                    left: ho.left - cop.left - co.left, 
                    width: w, 
                    height: h 
                }); 
        } 
    }); 
    $.ui.plugin.add("resizable", "ghost", { 
        start: function(event, ui) { 
            var that = $(this).data("resizable") 
              , o = that.options 
              , cs = that.size; 
            that.ghost = that.originalElement.clone(); 
            that.ghost.css({ 
                opacity: .25, 
                display: 'block', 
                position: 'relative', 
                height: cs.height, 
                width: cs.width, 
                margin: 0, 
                left: 0, 
                top: 0 
            }).addClass('ui-resizable-ghost').addClass(typeof o.ghost == 'string' ? o.ghost : ''); 
            that.ghost.appendTo(that.helper); 
        }, 
        resize: function(event, ui) { 
            var that = $(this).data("resizable") 
              , o = that.options; 
            if (that.ghost) 
                that.ghost.css({ 
                    position: 'relative', 
                    height: that.size.height, 
                    width: that.size.width 
                }); 
        }, 
        stop: function(event, ui) { 
            var that = $(this).data("resizable") 
              , o = that.options; 
            if (that.ghost && that.helper) 
                that.helper.get(0).removeChild(that.ghost.get(0)); 
        } 
    }); 
    $.ui.plugin.add("resizable", "grid", { 
        resize: function(event, ui) { 
            var that = $(this).data("resizable") 
              , o = that.options 
              , cs = that.size 
              , os = that.originalSize 
              , op = that.originalPosition 
              , a = that.axis 
              , ratio = o._aspectRatio || event.shiftKey; 
            o.grid = typeof o.grid == "number" ? [o.grid, o.grid] : o.grid; 
            var ox = Math.round((cs.width - os.width) / (o.grid[0] || 1)) * (o.grid[0] || 1) 
              , oy = Math.round((cs.height - os.height) / (o.grid[1] || 1)) * (o.grid[1] || 1); 
            if (/^(se|s|e)$/.test(a)) { 
                that.size.width = os.width + ox; 
                that.size.height = os.height + oy; 
            } else if (/^(ne)$/.test(a)) { 
                that.size.width = os.width + ox; 
                that.size.height = os.height + oy; 
                that.position.top = op.top - oy; 
            } else if (/^(sw)$/.test(a)) { 
                that.size.width = os.width + ox; 
                that.size.height = os.height + oy; 
                that.position.left = op.left - ox; 
            } else { 
                that.size.width = os.width + ox; 
                that.size.height = os.height + oy; 
                that.position.top = op.top - oy; 
                that.position.left = op.left - ox; 
            } 
        } 
    }); 
    var num = function(v) { 
        return parseInt(v, 10) || 0; 
    }; 
    var isNumber = function(value) { 
        return !isNaN(parseInt(value, 10)); 
    }; 
} 
)(jQuery); 
(function($, undefined) { 
    $.widget("ui.selectable", $.ui.mouse, { 
        version: "1.9.2", 
        options: { 
            appendTo: 'body', 
            autoRefresh: true, 
            distance: 0, 
            filter: '*', 
            tolerance: 'touch' 
        }, 
        _create: function() { 
            var that = this; 
            this.element.addClass("ui-selectable"); 
            this.dragged = false; 
            var selectees; 
            this.refresh = function() { 
                selectees = $(that.options.filter, that.element[0]); 
                selectees.addClass("ui-selectee"); 
                selectees.each(function() { 
                    var $this = $(this); 
                    var pos = $this.offset(); 
                    $.data(this, "selectable-item", { 
                        element: this, 
                        $element: $this, 
                        left: pos.left, 
                        top: pos.top, 
                        right: pos.left + $this.outerWidth(), 
                        bottom: pos.top + $this.outerHeight(), 
                        startselected: false, 
                        selected: $this.hasClass('ui-selected'), 
                        selecting: $this.hasClass('ui-selecting'), 
                        unselecting: $this.hasClass('ui-unselecting') 
                    }); 
                }); 
            } 
            ; 
            this.refresh(); 
            this.selectees = selectees.addClass("ui-selectee"); 
            this._mouseInit(); 
            this.helper = $("<div class='ui-selectable-helper'></div>"); 
        }, 
        _destroy: function() { 
            this.selectees.removeClass("ui-selectee").removeData("selectable-item"); 
            this.element.removeClass("ui-selectable ui-selectable-disabled"); 
            this._mouseDestroy(); 
        }, 
        _mouseStart: function(event) { 
            var that = this; 
            this.opos = [event.pageX, event.pageY]; 
            if (this.options.disabled) 
                return; 
            var options = this.options; 
            this.selectees = $(options.filter, this.element[0]); 
            this._trigger("start", event); 
            $(options.appendTo).append(this.helper); 
            this.helper.css({ 
                "left": event.clientX, 
                "top": event.clientY, 
                "width": 0, 
                "height": 0 
            }); 
            if (options.autoRefresh) { 
                this.refresh(); 
            } 
            this.selectees.filter('.ui-selected').each(function() { 
                var selectee = $.data(this, "selectable-item"); 
                selectee.startselected = true; 
                if (!event.metaKey && !event.ctrlKey) { 
                    selectee.$element.removeClass('ui-selected'); 
                    selectee.selected = false; 
                    selectee.$element.addClass('ui-unselecting'); 
                    selectee.unselecting = true; 
                    that._trigger("unselecting", event, { 
                        unselecting: selectee.element 
                    }); 
                } 
            }); 
            $(event.target).parents().andSelf().each(function() { 
                var selectee = $.data(this, "selectable-item"); 
                if (selectee) { 
                    var doSelect = (!event.metaKey && !event.ctrlKey) || !selectee.$element.hasClass('ui-selected'); 
                    selectee.$element.removeClass(doSelect ? "ui-unselecting" : "ui-selected").addClass(doSelect ? "ui-selecting" : "ui-unselecting"); 
                    selectee.unselecting = !doSelect; 
                    selectee.selecting = doSelect; 
                    selectee.selected = doSelect; 
                    if (doSelect) { 
                        that._trigger("selecting", event, { 
                            selecting: selectee.element 
                        }); 
                    } else { 
                        that._trigger("unselecting", event, { 
                            unselecting: selectee.element 
                        }); 
                    } 
                    return false; 
                } 
            }); 
        }, 
        _mouseDrag: function(event) { 
            var that = this; 
            this.dragged = true; 
            if (this.options.disabled) 
                return; 
            var options = this.options; 
            var x1 = this.opos[0] 
              , y1 = this.opos[1] 
              , x2 = event.pageX 
              , y2 = event.pageY; 
            if (x1 > x2) { 
                var tmp = x2; 
                x2 = x1; 
                x1 = tmp; 
            } 
            if (y1 > y2) { 
                var tmp = y2; 
                y2 = y1; 
                y1 = tmp; 
            } 
            this.helper.css({ 
                left: x1, 
                top: y1, 
                width: x2 - x1, 
                height: y2 - y1 
            }); 
            this.selectees.each(function() { 
                var selectee = $.data(this, "selectable-item"); 
                if (!selectee || selectee.element == that.element[0]) 
                    return; 
                var hit = false; 
                if (options.tolerance == 'touch') { 
                    hit = (!(selectee.left > x2 || selectee.right < x1 || selectee.top > y2 || selectee.bottom < y1)); 
                } else if (options.tolerance == 'fit') { 
                    hit = (selectee.left > x1 && selectee.right < x2 && selectee.top > y1 && selectee.bottom < y2); 
                } 
                if (hit) { 
                    if (selectee.selected) { 
                        selectee.$element.removeClass('ui-selected'); 
                        selectee.selected = false; 
                    } 
                    if (selectee.unselecting) { 
                        selectee.$element.removeClass('ui-unselecting'); 
                        selectee.unselecting = false; 
                    } 
                    if (!selectee.selecting) { 
                        selectee.$element.addClass('ui-selecting'); 
                        selectee.selecting = true; 
                        that._trigger("selecting", event, { 
                            selecting: selectee.element 
                        }); 
                    } 
                } else { 
                    if (selectee.selecting) { 
                        if ((event.metaKey || event.ctrlKey) && selectee.startselected) { 
                            selectee.$element.removeClass('ui-selecting'); 
                            selectee.selecting = false; 
                            selectee.$element.addClass('ui-selected'); 
                            selectee.selected = true; 
                        } else { 
                            selectee.$element.removeClass('ui-selecting'); 
                            selectee.selecting = false; 
                            if (selectee.startselected) { 
                                selectee.$element.addClass('ui-unselecting'); 
                                selectee.unselecting = true; 
                            } 
                            that._trigger("unselecting", event, { 
                                unselecting: selectee.element 
                            }); 
                        } 
                    } 
                    if (selectee.selected) { 
                        if (!event.metaKey && !event.ctrlKey && !selectee.startselected) { 
                            selectee.$element.removeClass('ui-selected'); 
                            selectee.selected = false; 
                            selectee.$element.addClass('ui-unselecting'); 
                            selectee.unselecting = true; 
                            that._trigger("unselecting", event, { 
                                unselecting: selectee.element 
                            }); 
                        } 
                    } 
                } 
            }); 
            return false; 
        }, 
        _mouseStop: function(event) { 
            var that = this; 
            this.dragged = false; 
            var options = this.options; 
            $('.ui-unselecting', this.element[0]).each(function() { 
                var selectee = $.data(this, "selectable-item"); 
                selectee.$element.removeClass('ui-unselecting'); 
                selectee.unselecting = false; 
                selectee.startselected = false; 
                that._trigger("unselected", event, { 
                    unselected: selectee.element 
                }); 
            }); 
            $('.ui-selecting', this.element[0]).each(function() { 
                var selectee = $.data(this, "selectable-item"); 
                selectee.$element.removeClass('ui-selecting').addClass('ui-selected'); 
                selectee.selecting = false; 
                selectee.selected = true; 
                selectee.startselected = true; 
                that._trigger("selected", event, { 
                    selected: selectee.element 
                }); 
            }); 
            this._trigger("stop", event); 
            this.helper.remove(); 
            return false; 
        } 
    }); 
} 
)(jQuery); 
(function($, undefined) { 
    $.widget("ui.sortable", $.ui.mouse, { 
        version: "1.9.2", 
        widgetEventPrefix: "sort", 
        ready: false, 
        options: { 
            appendTo: "parent", 
            axis: false, 
            connectWith: false, 
            containment: false, 
            cursor: 'auto', 
            cursorAt: false, 
            dropOnEmpty: true, 
            forcePlaceholderSize: false, 
            forceHelperSize: false, 
            grid: false, 
            handle: false, 
            helper: "original", 
            items: '> *', 
            opacity: false, 
            placeholder: false, 
            revert: false, 
            scroll: true, 
            scrollSensitivity: 20, 
            scrollSpeed: 20, 
            scope: "default", 
            tolerance: "intersect", 
            zIndex: 1000 
        }, 
        _create: function() { 
            var o = this.options; 
            this.containerCache = {}; 
            this.element.addClass("ui-sortable"); 
            this.refresh(); 
            this.floating = this.items.length ? o.axis === 'x' || (/left|right/).test(this.items[0].item.css('float')) || (/inline|table-cell/).test(this.items[0].item.css('display')) : false; 
            this.offset = this.element.offset(); 
            this._mouseInit(); 
            this.ready = true 
        }, 
        _destroy: function() { 
            this.element.removeClass("ui-sortable ui-sortable-disabled"); 
            this._mouseDestroy(); 
            for (var i = this.items.length - 1; i >= 0; i--) 
                this.items[i].item.removeData(this.widgetName + "-item"); 
            return this; 
        }, 
        _setOption: function(key, value) { 
            if (key === "disabled") { 
                this.options[key] = value; 
                this.widget().toggleClass("ui-sortable-disabled", !!value); 
            } else { 
                $.Widget.prototype._setOption.apply(this, arguments); 
            } 
        }, 
        _mouseCapture: function(event, overrideHandle) { 
            var that = this; 
            if (this.reverting) { 
                return false; 
            } 
            if (this.options.disabled || this.options.type == 'static') 
                return false; 
            this._refreshItems(event); 
            var currentItem = null 
              , nodes = $(event.target).parents().each(function() { 
                if ($.data(this, that.widgetName + '-item') == that) { 
                    currentItem = $(this); 
                    return false; 
                } 
            }); 
            if ($.data(event.target, that.widgetName + '-item') == that) 
                currentItem = $(event.target); 
            if (!currentItem) 
                return false; 
            if (this.options.handle && !overrideHandle) { 
                var validHandle = false; 
                $(this.options.handle, currentItem).find("*").andSelf().each(function() { 
                    if (this == event.target) 
                        validHandle = true; 
                }); 
                if (!validHandle) 
                    return false; 
            } 
            this.currentItem = currentItem; 
            this._removeCurrentsFromItems(); 
            return true; 
        }, 
        _mouseStart: function(event, overrideHandle, noActivation) { 
            var o = this.options; 
            this.currentContainer = this; 
            this.refreshPositions(); 
            this.helper = this._createHelper(event); 
            this._cacheHelperProportions(); 
            this._cacheMargins(); 
            this.scrollParent = this.helper.scrollParent(); 
            this.offset = this.currentItem.offset(); 
            this.offset = { 
                top: this.offset.top - this.margins.top, 
                left: this.offset.left - this.margins.left 
            }; 
            $.extend(this.offset, { 
                click: { 
                    left: event.pageX - this.offset.left, 
                    top: event.pageY - this.offset.top 
                }, 
                parent: this._getParentOffset(), 
                relative: this._getRelativeOffset() 
            }); 
            this.helper.css("position", "absolute"); 
            this.cssPosition = this.helper.css("position"); 
            this.originalPosition = this._generatePosition(event); 
            this.originalPageX = event.pageX; 
            this.originalPageY = event.pageY; 
            (o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt)); 
            this.domPosition = { 
                prev: this.currentItem.prev()[0], 
                parent: this.currentItem.parent()[0] 
            }; 
            if (this.helper[0] != this.currentItem[0]) { 
                this.currentItem.hide(); 
            } 
            this._createPlaceholder(); 
            if (o.containment) 
                this._setContainment(); 
            if (o.cursor) { 
                if ($('body').css("cursor")) 
                    this._storedCursor = $('body').css("cursor"); 
                $('body').css("cursor", o.cursor); 
            } 
            if (o.opacity) { 
                if (this.helper.css("opacity")) 
                    this._storedOpacity = this.helper.css("opacity"); 
                this.helper.css("opacity", o.opacity); 
            } 
            if (o.zIndex) { 
                if (this.helper.css("zIndex")) 
                    this._storedZIndex = this.helper.css("zIndex"); 
                this.helper.css("zIndex", o.zIndex); 
            } 
            if (this.scrollParent[0] != document && this.scrollParent[0].tagName != 'HTML') 
                this.overflowOffset = this.scrollParent.offset(); 
            this._trigger("start", event, this._uiHash()); 
            if (!this._preserveHelperProportions) 
                this._cacheHelperProportions(); 
            if (!noActivation) { 
                for (var i = this.containers.length - 1; i >= 0; i--) { 
                    this.containers[i]._trigger("activate", event, this._uiHash(this)); 
                } 
            } 
            if ($.ui.ddmanager) 
                $.ui.ddmanager.current = this; 
            if ($.ui.ddmanager && !o.dropBehaviour) 
                $.ui.ddmanager.prepareOffsets(this, event); 
            this.dragging = true; 
            this.helper.addClass("ui-sortable-helper"); 
            this._mouseDrag(event); 
            return true; 
        }, 
        _mouseDrag: function(event) { 
            this.position = this._generatePosition(event); 
            this.positionAbs = this._convertPositionTo("absolute"); 
            if (!this.lastPositionAbs) { 
                this.lastPositionAbs = this.positionAbs; 
            } 
            if (this.options.scroll) { 
                var o = this.options 
                  , scrolled = false; 
                if (this.scrollParent[0] != document && this.scrollParent[0].tagName != 'HTML') { 
                    if ((this.overflowOffset.top + this.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity) 
                        this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop + o.scrollSpeed; 
                    else if (event.pageY - this.overflowOffset.top < o.scrollSensitivity) 
                        this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop - o.scrollSpeed; 
                    if ((this.overflowOffset.left + this.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity) 
                        this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft + o.scrollSpeed; 
                    else if (event.pageX - this.overflowOffset.left < o.scrollSensitivity) 
                        this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft - o.scrollSpeed; 
                } else { 
                    if (event.pageY - $(document).scrollTop() < o.scrollSensitivity) 
                        scrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed); 
                    else if ($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity) 
                        scrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed); 
                    if (event.pageX - $(document).scrollLeft() < o.scrollSensitivity) 
                        scrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed); 
                    else if ($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity) 
                        scrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed); 
                } 
                if (scrolled !== false && $.ui.ddmanager && !o.dropBehaviour) 
                    $.ui.ddmanager.prepareOffsets(this, event); 
            } 
            this.positionAbs = this._convertPositionTo("absolute"); 
            if (!this.options.axis || this.options.axis != "y") 
                this.helper[0].style.left = this.position.left + 'px'; 
            if (!this.options.axis || this.options.axis != "x") 
                this.helper[0].style.top = this.position.top + 'px'; 
            for (var i = this.items.length - 1; i >= 0; i--) { 
                var item = this.items[i] 
                  , itemElement = item.item[0] 
                  , intersection = this._intersectsWithPointer(item); 
                if (!intersection) 
                    continue; 
                if (item.instance !== this.currentContainer) 
                    continue; 
                if (itemElement != this.currentItem[0] && this.placeholder[intersection == 1 ? "next" : "prev"]()[0] != itemElement && !$.contains(this.placeholder[0], itemElement) && (this.options.type == 'semi-dynamic' ? !$.contains(this.element[0], itemElement) : true)) { 
                    this.direction = intersection == 1 ? "down" : "up"; 
                    if (this.options.tolerance == "pointer" || this._intersectsWithSides(item)) { 
                        this._rearrange(event, item); 
                    } else { 
                        break; 
                    } 
                    this._trigger("change", event, this._uiHash()); 
                    break; 
                } 
            } 
            this._contactContainers(event); 
            if ($.ui.ddmanager) 
                $.ui.ddmanager.drag(this, event); 
            this._trigger('sort', event, this._uiHash()); 
            this.lastPositionAbs = this.positionAbs; 
            return false; 
        }, 
        _mouseStop: function(event, noPropagation) { 
            if (!event) 
                return; 
            if ($.ui.ddmanager && !this.options.dropBehaviour) 
                $.ui.ddmanager.drop(this, event); 
            if (this.options.revert) { 
                var that = this; 
                var cur = this.placeholder.offset(); 
                this.reverting = true; 
                $(this.helper).animate({ 
                    left: cur.left - this.offset.parent.left - this.margins.left + (this.offsetParent[0] == document.body ? 0 : this.offsetParent[0].scrollLeft), 
                    top: cur.top - this.offset.parent.top - this.margins.top + (this.offsetParent[0] == document.body ? 0 : this.offsetParent[0].scrollTop) 
                }, parseInt(this.options.revert, 10) || 500, function() { 
                    that._clear(event); 
                }); 
            } else { 
                this._clear(event, noPropagation); 
            } 
            return false; 
        }, 
        cancel: function() { 
            if (this.dragging) { 
                this._mouseUp({ 
                    target: null 
                }); 
                if (this.options.helper == "original") 
                    this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"); 
                else 
                    this.currentItem.show(); 
                for (var i = this.containers.length - 1; i >= 0; i--) { 
                    this.containers[i]._trigger("deactivate", null, this._uiHash(this)); 
                    if (this.containers[i].containerCache.over) { 
                        this.containers[i]._trigger("out", null, this._uiHash(this)); 
                        this.containers[i].containerCache.over = 0; 
                    } 
                } 
            } 
            if (this.placeholder) { 
                if (this.placeholder[0].parentNode) 
                    this.placeholder[0].parentNode.removeChild(this.placeholder[0]); 
                if (this.options.helper != "original" && this.helper && this.helper[0].parentNode) 
                    this.helper.remove(); 
                $.extend(this, { 
                    helper: null, 
                    dragging: false, 
                    reverting: false, 
                    _noFinalSort: null 
                }); 
                if (this.domPosition.prev) { 
                    $(this.domPosition.prev).after(this.currentItem); 
                } else { 
                    $(this.domPosition.parent).prepend(this.currentItem); 
                } 
            } 
            return this; 
        }, 
        serialize: function(o) { 
            var items = this._getItemsAsjQuery(o && o.connected); 
            var str = []; 
            o = o || {}; 
            $(items).each(function() { 
                var res = ($(o.item || this).attr(o.attribute || 'id') || '').match(o.expression || (/(.+)[-=_](.+)/)); 
                if (res) 
                    str.push((o.key || res[1] + '[]') + '=' + (o.key && o.expression ? res[1] : res[2])); 
            }); 
            if (!str.length && o.key) { 
                str.push(o.key + '='); 
            } 
            return str.join('&'); 
        }, 
        toArray: function(o) { 
            var items = this._getItemsAsjQuery(o && o.connected); 
            var ret = []; 
            o = o || {}; 
            items.each(function() { 
                ret.push($(o.item || this).attr(o.attribute || 'id') || ''); 
            }); 
            return ret; 
        }, 
        _intersectsWith: function(item) { 
            var x1 = this.positionAbs.left 
              , x2 = x1 + this.helperProportions.width 
              , y1 = this.positionAbs.top 
              , y2 = y1 + this.helperProportions.height; 
            var l = item.left 
              , r = l + item.width 
              , t = item.top 
              , b = t + item.height; 
            var dyClick = this.offset.click.top 
              , dxClick = this.offset.click.left; 
            var isOverElement = (y1 + dyClick) > t && (y1 + dyClick) < b && (x1 + dxClick) > l && (x1 + dxClick) < r; 
            if (this.options.tolerance == "pointer" || this.options.forcePointerForContainers || (this.options.tolerance != "pointer" && this.helperProportions[this.floating ? 'width' : 'height'] > item[this.floating ? 'width' : 'height'])) { 
                return isOverElement; 
            } else { 
                return (l < x1 + (this.helperProportions.width / 2) && x2 - (this.helperProportions.width / 2) < r && t < y1 + (this.helperProportions.height / 2) && y2 - (this.helperProportions.height / 2) < b); 
            } 
        }, 
        _intersectsWithPointer: function(item) { 
            var isOverElementHeight = (this.options.axis === 'x') || $.ui.isOverAxis(this.positionAbs.top + this.offset.click.top, item.top, item.height) 
              , isOverElementWidth = (this.options.axis === 'y') || $.ui.isOverAxis(this.positionAbs.left + this.offset.click.left, item.left, item.width) 
              , isOverElement = isOverElementHeight && isOverElementWidth 
              , verticalDirection = this._getDragVerticalDirection() 
              , horizontalDirection = this._getDragHorizontalDirection(); 
            if (!isOverElement) 
                return false; 
            return this.floating ? (((horizontalDirection && horizontalDirection == "right") || verticalDirection == "down") ? 2 : 1) : (verticalDirection && (verticalDirection == "down" ? 2 : 1)); 
        }, 
        _intersectsWithSides: function(item) { 
            var isOverBottomHalf = $.ui.isOverAxis(this.positionAbs.top + this.offset.click.top, item.top + (item.height / 2), item.height) 
              , isOverRightHalf = $.ui.isOverAxis(this.positionAbs.left + this.offset.click.left, item.left + (item.width / 2), item.width) 
              , verticalDirection = this._getDragVerticalDirection() 
              , horizontalDirection = this._getDragHorizontalDirection(); 
            if (this.floating && horizontalDirection) { 
                return ((horizontalDirection == "right" && isOverRightHalf) || (horizontalDirection == "left" && !isOverRightHalf)); 
            } else { 
                return verticalDirection && ((verticalDirection == "down" && isOverBottomHalf) || (verticalDirection == "up" && !isOverBottomHalf)); 
            } 
        }, 
        _getDragVerticalDirection: function() { 
            var delta = this.positionAbs.top - this.lastPositionAbs.top; 
            return delta != 0 && (delta > 0 ? "down" : "up"); 
        }, 
        _getDragHorizontalDirection: function() { 
            var delta = this.positionAbs.left - this.lastPositionAbs.left; 
            return delta != 0 && (delta > 0 ? "right" : "left"); 
        }, 
        refresh: function(event) { 
            this._refreshItems(event); 
            this.refreshPositions(); 
            return this; 
        }, 
        _connectWith: function() { 
            var options = this.options; 
            return options.connectWith.constructor == String ? [options.connectWith] : options.connectWith; 
        }, 
        _getItemsAsjQuery: function(connected) { 
            var items = []; 
            var queries = []; 
            var connectWith = this._connectWith(); 
            if (connectWith && connected) { 
                for (var i = connectWith.length - 1; i >= 0; i--) { 
                    var cur = $(connectWith[i]); 
                    for (var j = cur.length - 1; j >= 0; j--) { 
                        var inst = $.data(cur[j], this.widgetName); 
                        if (inst && inst != this && !inst.options.disabled) { 
                            queries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element) : $(inst.options.items, inst.element).not(".ui-sortable-helper").not('.ui-sortable-placeholder'), inst]); 
                        } 
                    } 
                    ; 
                } 
                ; 
            } 
            queries.push([$.isFunction(this.options.items) ? this.options.items.call(this.element, null, { 
                options: this.options, 
                item: this.currentItem 
            }) : $(this.options.items, this.element).not(".ui-sortable-helper").not('.ui-sortable-placeholder'), this]); 
            for (var i = queries.length - 1; i >= 0; i--) { 
                queries[i][0].each(function() { 
                    items.push(this); 
                }); 
            } 
            ;return $(items); 
        }, 
        _removeCurrentsFromItems: function() { 
            var list = this.currentItem.find(":data(" + this.widgetName + "-item)"); 
            this.items = $.grep(this.items, function(item) { 
                for (var j = 0; j < list.length; j++) { 
                    if (list[j] == item.item[0]) 
                        return false; 
                } 
                ;return true; 
            }); 
        }, 
        _refreshItems: function(event) { 
            this.items = []; 
            this.containers = [this]; 
            var items = this.items; 
            var queries = [[$.isFunction(this.options.items) ? this.options.items.call(this.element[0], event, { 
                item: this.currentItem 
            }) : $(this.options.items, this.element), this]]; 
            var connectWith = this._connectWith(); 
            if (connectWith && this.ready) { 
                for (var i = connectWith.length - 1; i >= 0; i--) { 
                    var cur = $(connectWith[i]); 
                    for (var j = cur.length - 1; j >= 0; j--) { 
                        var inst = $.data(cur[j], this.widgetName); 
                        if (inst && inst != this && !inst.options.disabled) { 
                            queries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element[0], event, { 
                                item: this.currentItem 
                            }) : $(inst.options.items, inst.element), inst]); 
                            this.containers.push(inst); 
                        } 
                    } 
                    ; 
                } 
                ; 
            } 
            for (var i = queries.length - 1; i >= 0; i--) { 
                var targetData = queries[i][1]; 
                var _queries = queries[i][0]; 
                for (var j = 0, queriesLength = _queries.length; j < queriesLength; j++) { 
                    var item = $(_queries[j]); 
                    item.data(this.widgetName + '-item', targetData); 
                    items.push({ 
                        item: item, 
                        instance: targetData, 
                        width: 0, 
                        height: 0, 
                        left: 0, 
                        top: 0 
                    }); 
                } 
                ; 
            } 
            ; 
        }, 
        refreshPositions: function(fast) { 
            if (this.offsetParent && this.helper) { 
                this.offset.parent = this._getParentOffset(); 
            } 
            for (var i = this.items.length - 1; i >= 0; i--) { 
                var item = this.items[i]; 
                if (item.instance != this.currentContainer && this.currentContainer && item.item[0] != this.currentItem[0]) 
                    continue; 
                var t = this.options.toleranceElement ? $(this.options.toleranceElement, item.item) : item.item; 
                if (!fast) { 
                    item.width = t.outerWidth(); 
                    item.height = t.outerHeight(); 
                } 
                var p = t.offset(); 
                item.left = p.left; 
                item.top = p.top; 
            } 
            ;if (this.options.custom && this.options.custom.refreshContainers) { 
                this.options.custom.refreshContainers.call(this); 
            } else { 
                for (var i = this.containers.length - 1; i >= 0; i--) { 
                    var p = this.containers[i].element.offset(); 
                    this.containers[i].containerCache.left = p.left; 
                    this.containers[i].containerCache.top = p.top; 
                    this.containers[i].containerCache.width = this.containers[i].element.outerWidth(); 
                    this.containers[i].containerCache.height = this.containers[i].element.outerHeight(); 
                } 
                ; 
            } 
            return this; 
        }, 
        _createPlaceholder: function(that) { 
            that = that || this; 
            var o = that.options; 
            if (!o.placeholder || o.placeholder.constructor == String) { 
                var className = o.placeholder; 
                o.placeholder = { 
                    element: function() { 
                        var el = $(document.createElement(that.currentItem[0].nodeName)).addClass(className || that.currentItem[0].className + " ui-sortable-placeholder").removeClass("ui-sortable-helper")[0]; 
                        if (!className) 
                            el.style.visibility = "hidden"; 
                        return el; 
                    }, 
                    update: function(container, p) { 
                        if (className && !o.forcePlaceholderSize) 
                            return; 
                        if (!p.height()) { 
                            p.height(that.currentItem.innerHeight() - parseInt(that.currentItem.css('paddingTop') || 0, 10) - parseInt(that.currentItem.css('paddingBottom') || 0, 10)); 
                        } 
                        ;if (!p.width()) { 
                            p.width(that.currentItem.innerWidth() - parseInt(that.currentItem.css('paddingLeft') || 0, 10) - parseInt(that.currentItem.css('paddingRight') || 0, 10)); 
                        } 
                        ; 
                    } 
                }; 
            } 
            that.placeholder = $(o.placeholder.element.call(that.element, that.currentItem)); 
            that.currentItem.after(that.placeholder); 
            o.placeholder.update(that, that.placeholder); 
        }, 
        _contactContainers: function(event) { 
            var innermostContainer = null 
              , innermostIndex = null; 
            for (var i = this.containers.length - 1; i >= 0; i--) { 
                if ($.contains(this.currentItem[0], this.containers[i].element[0])) 
                    continue; 
                if (this._intersectsWith(this.containers[i].containerCache)) { 
                    if (innermostContainer && $.contains(this.containers[i].element[0], innermostContainer.element[0])) 
                        continue; 
                    innermostContainer = this.containers[i]; 
                    innermostIndex = i; 
                } else { 
                    if (this.containers[i].containerCache.over) { 
                        this.containers[i]._trigger("out", event, this._uiHash(this)); 
                        this.containers[i].containerCache.over = 0; 
                    } 
                } 
            } 
            if (!innermostContainer) 
                return; 
            if (this.containers.length === 1) { 
                this.containers[innermostIndex]._trigger("over", event, this._uiHash(this)); 
                this.containers[innermostIndex].containerCache.over = 1; 
            } else if (this.currentContainer !== this.containers[innermostIndex]) { 
                var dist = 10000; 
                var itemWithLeastDistance = null; 
                var posProperty = this.containers[innermostIndex].floating ? 'left' : 'top'; 
                var sizeProperty = this.containers[innermostIndex].floating ? 'width' : 'height'; 
                var base = this.positionAbs[posProperty] + this.offset.click[posProperty]; 
                for (var j = this.items.length - 1; j >= 0; j--) { 
                    if (!$.contains(this.containers[innermostIndex].element[0], this.items[j].item[0])) 
                        continue; 
                    if (this.items[j].item[0] == this.currentItem[0]) 
                        continue; 
                    var cur = this.items[j].item.offset()[posProperty]; 
                    var nearBottom = false; 
                    if (Math.abs(cur - base) > Math.abs(cur + this.items[j][sizeProperty] - base)) { 
                        nearBottom = true; 
                        cur += this.items[j][sizeProperty]; 
                    } 
                    if (Math.abs(cur - base) < dist) { 
                        dist = Math.abs(cur - base); 
                        itemWithLeastDistance = this.items[j]; 
                        this.direction = nearBottom ? "up" : "down"; 
                    } 
                } 
                if (!itemWithLeastDistance && !this.options.dropOnEmpty) 
                    return; 
                this.currentContainer = this.containers[innermostIndex]; 
                itemWithLeastDistance ? this._rearrange(event, itemWithLeastDistance, null, true) : this._rearrange(event, null, this.containers[innermostIndex].element, true); 
                this._trigger("change", event, this._uiHash()); 
                this.containers[innermostIndex]._trigger("change", event, this._uiHash(this)); 
                this.options.placeholder.update(this.currentContainer, this.placeholder); 
                this.containers[innermostIndex]._trigger("over", event, this._uiHash(this)); 
                this.containers[innermostIndex].containerCache.over = 1; 
            } 
        }, 
        _createHelper: function(event) { 
            var o = this.options; 
            var helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event, this.currentItem])) : (o.helper == 'clone' ? this.currentItem.clone() : this.currentItem); 
            if (!helper.parents('body').length) 
                $(o.appendTo != 'parent' ? o.appendTo : this.currentItem[0].parentNode)[0].appendChild(helper[0]); 
            if (helper[0] == this.currentItem[0]) 
                this._storedCSS = { 
                    width: this.currentItem[0].style.width, 
                    height: this.currentItem[0].style.height, 
                    position: this.currentItem.css("position"), 
                    top: this.currentItem.css("top"), 
                    left: this.currentItem.css("left") 
                }; 
            if (helper[0].style.width == '' || o.forceHelperSize) 
                helper.width(this.currentItem.width()); 
            if (helper[0].style.height == '' || o.forceHelperSize) 
                helper.height(this.currentItem.height()); 
            return helper; 
        }, 
        _adjustOffsetFromHelper: function(obj) { 
            if (typeof obj == 'string') { 
                obj = obj.split(' '); 
            } 
            if ($.isArray(obj)) { 
                obj = { 
                    left: +obj[0], 
                    top: +obj[1] || 0 
                }; 
            } 
            if ('left'in obj) { 
                this.offset.click.left = obj.left + this.margins.left; 
            } 
            if ('right'in obj) { 
                this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left; 
            } 
            if ('top'in obj) { 
                this.offset.click.top = obj.top + this.margins.top; 
            } 
            if ('bottom'in obj) { 
                this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top; 
            } 
        }, 
        _getParentOffset: function() { 
            this.offsetParent = this.helper.offsetParent(); 
            var po = this.offsetParent.offset(); 
            if (this.cssPosition == 'absolute' && this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) { 
                po.left += this.scrollParent.scrollLeft(); 
                po.top += this.scrollParent.scrollTop(); 
            } 
            if ((this.offsetParent[0] == document.body) || (this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() == 'html' && $.ui.ie)) 
                po = { 
                    top: 0, 
                    left: 0 
                }; 
            return { 
                top: po.top + (parseInt(this.offsetParent.css("borderTopWidth"), 10) || 0), 
                left: po.left + (parseInt(this.offsetParent.css("borderLeftWidth"), 10) || 0) 
            }; 
        }, 
        _getRelativeOffset: function() { 
            if (this.cssPosition == "relative") { 
                var p = this.currentItem.position(); 
                return { 
                    top: p.top - (parseInt(this.helper.css("top"), 10) || 0) + this.scrollParent.scrollTop(), 
                    left: p.left - (parseInt(this.helper.css("left"), 10) || 0) + this.scrollParent.scrollLeft() 
                }; 
            } else { 
                return { 
                    top: 0, 
                    left: 0 
                }; 
            } 
        }, 
        _cacheMargins: function() { 
            this.margins = { 
                left: (parseInt(this.currentItem.css("marginLeft"), 10) || 0), 
                top: (parseInt(this.currentItem.css("marginTop"), 10) || 0) 
            }; 
        }, 
        _cacheHelperProportions: function() { 
            this.helperProportions = { 
                width: this.helper.outerWidth(), 
                height: this.helper.outerHeight() 
            }; 
        }, 
        _setContainment: function() { 
            var o = this.options; 
            if (o.containment == 'parent') 
                o.containment = this.helper[0].parentNode; 
            if (o.containment == 'document' || o.containment == 'window') 
                this.containment = [0 - this.offset.relative.left - this.offset.parent.left, 0 - this.offset.relative.top - this.offset.parent.top, $(o.containment == 'document' ? document : window).width() - this.helperProportions.width - this.margins.left, ($(o.containment == 'document' ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top]; 
            if (!(/^(document|window|parent)$/).test(o.containment)) { 
                var ce = $(o.containment)[0]; 
                var co = $(o.containment).offset(); 
                var over = ($(ce).css("overflow") != 'hidden'); 
                this.containment = [co.left + (parseInt($(ce).css("borderLeftWidth"), 10) || 0) + (parseInt($(ce).css("paddingLeft"), 10) || 0) - this.margins.left, co.top + (parseInt($(ce).css("borderTopWidth"), 10) || 0) + (parseInt($(ce).css("paddingTop"), 10) || 0) - this.margins.top, co.left + (over ? Math.max(ce.scrollWidth, ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css("borderLeftWidth"), 10) || 0) - (parseInt($(ce).css("paddingRight"), 10) || 0) - this.helperProportions.width - this.margins.left, co.top + (over ? Math.max(ce.scrollHeight, ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css("borderTopWidth"), 10) || 0) - (parseInt($(ce).css("paddingBottom"), 10) || 0) - this.helperProportions.height - this.margins.top]; 
            } 
        }, 
        _convertPositionTo: function(d, pos) { 
            if (!pos) 
                pos = this.position; 
            var mod = d == "absolute" ? 1 : -1; 
            var o = this.options 
              , scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent 
              , scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName); 
            return { 
                top: (pos.top + this.offset.relative.top * mod + this.offset.parent.top * mod - ((this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : (scrollIsRootNode ? 0 : scroll.scrollTop())) * mod)), 
                left: (pos.left + this.offset.relative.left * mod + this.offset.parent.left * mod - ((this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft()) * mod)) 
            }; 
        }, 
        _generatePosition: function(event) { 
            var o = this.options 
              , scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent 
              , scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName); 
            if (this.cssPosition == 'relative' && !(this.scrollParent[0] != document && this.scrollParent[0] != this.offsetParent[0])) { 
                this.offset.relative = this._getRelativeOffset(); 
            } 
            var pageX = event.pageX; 
            var pageY = event.pageY; 
            if (this.originalPosition) { 
                if (this.containment) { 
                    if (event.pageX - this.offset.click.left < this.containment[0]) 
                        pageX = this.containment[0] + this.offset.click.left; 
                    if (event.pageY - this.offset.click.top < this.containment[1]) 
                        pageY = this.containment[1] + this.offset.click.top; 
                    if (event.pageX - this.offset.click.left > this.containment[2]) 
                        pageX = this.containment[2] + this.offset.click.left; 
                    if (event.pageY - this.offset.click.top > this.containment[3]) 
                        pageY = this.containment[3] + this.offset.click.top; 
                } 
                if (o.grid) { 
                    var top = this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1]; 
                    pageY = this.containment ? (!(top - this.offset.click.top < this.containment[1] || top - this.offset.click.top > this.containment[3]) ? top : (!(top - this.offset.click.top < this.containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top; 
                    var left = this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0]; 
                    pageX = this.containment ? (!(left - this.offset.click.left < this.containment[0] || left - this.offset.click.left > this.containment[2]) ? left : (!(left - this.offset.click.left < this.containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left; 
                } 
            } 
            return { 
                top: (pageY - this.offset.click.top - this.offset.relative.top - this.offset.parent.top + ((this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : (scrollIsRootNode ? 0 : scroll.scrollTop())))), 
                left: (pageX - this.offset.click.left - this.offset.relative.left - this.offset.parent.left + ((this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft()))) 
            }; 
        }, 
        _rearrange: function(event, i, a, hardRefresh) { 
            a ? a[0].appendChild(this.placeholder[0]) : i.item[0].parentNode.insertBefore(this.placeholder[0], (this.direction == 'down' ? i.item[0] : i.item[0].nextSibling)); 
            this.counter = this.counter ? ++this.counter : 1; 
            var counter = this.counter; 
            this._delay(function() { 
                if (counter == this.counter) 
                    this.refreshPositions(!hardRefresh); 
            }); 
        }, 
        _clear: function(event, noPropagation) { 
            this.reverting = false; 
            var delayedTriggers = []; 
            if (!this._noFinalSort && this.currentItem.parent().length) 
                this.placeholder.before(this.currentItem); 
            this._noFinalSort = null; 
            if (this.helper[0] == this.currentItem[0]) { 
                for (var i in this._storedCSS) { 
                    if (this._storedCSS[i] == 'auto' || this._storedCSS[i] == 'static') 
                        this._storedCSS[i] = ''; 
                } 
                this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"); 
            } else { 
                this.currentItem.show(); 
            } 
            if (this.fromOutside && !noPropagation) 
                delayedTriggers.push(function(event) { 
                    this._trigger("receive", event, this._uiHash(this.fromOutside)); 
                }); 
            if ((this.fromOutside || this.domPosition.prev != this.currentItem.prev().not(".ui-sortable-helper")[0] || this.domPosition.parent != this.currentItem.parent()[0]) && !noPropagation) 
                delayedTriggers.push(function(event) { 
                    this._trigger("update", event, this._uiHash()); 
                }); 
            if (this !== this.currentContainer) { 
                if (!noPropagation) { 
                    delayedTriggers.push(function(event) { 
                        this._trigger("remove", event, this._uiHash()); 
                    }); 
                    delayedTriggers.push((function(c) { 
                        return function(event) { 
                            c._trigger("receive", event, this._uiHash(this)); 
                        } 
                        ; 
                    } 
                    ).call(this, this.currentContainer)); 
                    delayedTriggers.push((function(c) { 
                        return function(event) { 
                            c._trigger("update", event, this._uiHash(this)); 
                        } 
                        ; 
                    } 
                    ).call(this, this.currentContainer)); 
                } 
            } 
            for (var i = this.containers.length - 1; i >= 0; i--) { 
                if (!noPropagation) 
                    delayedTriggers.push((function(c) { 
                        return function(event) { 
                            c._trigger("deactivate", event, this._uiHash(this)); 
                        } 
                        ; 
                    } 
                    ).call(this, this.containers[i])); 
                if (this.containers[i].containerCache.over) { 
                    delayedTriggers.push((function(c) { 
                        return function(event) { 
                            c._trigger("out", event, this._uiHash(this)); 
                        } 
                        ; 
                    } 
                    ).call(this, this.containers[i])); 
                    this.containers[i].containerCache.over = 0; 
                } 
            } 
            if (this._storedCursor) 
                $('body').css("cursor", this._storedCursor); 
            if (this._storedOpacity) 
                this.helper.css("opacity", this._storedOpacity); 
            if (this._storedZIndex) 
                this.helper.css("zIndex", this._storedZIndex == 'auto' ? '' : this._storedZIndex); 
            this.dragging = false; 
            if (this.cancelHelperRemoval) { 
                if (!noPropagation) { 
                    this._trigger("beforeStop", event, this._uiHash()); 
                    for (var i = 0; i < delayedTriggers.length; i++) { 
                        delayedTriggers[i].call(this, event); 
                    } 
                    ;this._trigger("stop", event, this._uiHash()); 
                } 
                this.fromOutside = false; 
                return false; 
            } 
            if (!noPropagation) 
                this._trigger("beforeStop", event, this._uiHash()); 
            this.placeholder[0].parentNode.removeChild(this.placeholder[0]); 
            if (this.helper[0] != this.currentItem[0]) 
                this.helper.remove(); 
            this.helper = null; 
            if (!noPropagation) { 
                for (var i = 0; i < delayedTriggers.length; i++) { 
                    delayedTriggers[i].call(this, event); 
                } 
                ;this._trigger("stop", event, this._uiHash()); 
            } 
            this.fromOutside = false; 
            return true; 
        }, 
        _trigger: function() { 
            if ($.Widget.prototype._trigger.apply(this, arguments) === false) { 
                this.cancel(); 
            } 
        }, 
        _uiHash: function(_inst) { 
            var inst = _inst || this; 
            return { 
                helper: inst.helper, 
                placeholder: inst.placeholder || $([]), 
                position: inst.position, 
                originalPosition: inst.originalPosition, 
                offset: inst.positionAbs, 
                item: inst.currentItem, 
                sender: _inst ? _inst.element : null 
            }; 
        } 
    }); 
} 
)(jQuery); 
(function($, undefined) { 
    var uid = 0 
      , hideProps = {} 
      , showProps = {}; 
    hideProps.height = hideProps.paddingTop = hideProps.paddingBottom = hideProps.borderTopWidth = hideProps.borderBottomWidth = "hide"; 
    showProps.height = showProps.paddingTop = showProps.paddingBottom = showProps.borderTopWidth = showProps.borderBottomWidth = "show"; 
    $.widget("ui.accordion", { 
        version: "1.9.2", 
        options: { 
            active: 0, 
            animate: {}, 
            collapsible: false, 
            event: "click", 
            header: "> li > :first-child,> :not(li):even", 
            heightStyle: "auto", 
            icons: { 
                activeHeader: "ui-icon-triangle-1-s", 
                header: "ui-icon-triangle-1-e" 
            }, 
            activate: null, 
            beforeActivate: null 
        }, 
        _create: function() { 
            var accordionId = this.accordionId = "ui-accordion-" + (this.element.attr("id") || ++uid) 
              , options = this.options; 
            this.prevShow = this.prevHide = $(); 
            this.element.addClass("ui-accordion ui-widget ui-helper-reset"); 
            this.headers = this.element.find(options.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all"); 
            this._hoverable(this.headers); 
            this._focusable(this.headers); 
            this.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom").hide(); 
            if (!options.collapsible && (options.active === false || options.active == null)) { 
                options.active = 0; 
            } 
            if (options.active < 0) { 
                options.active += this.headers.length; 
            } 
            this.active = this._findActive(options.active).addClass("ui-accordion-header-active ui-state-active").toggleClass("ui-corner-all ui-corner-top"); 
            this.active.next().addClass("ui-accordion-content-active").show(); 
            this._createIcons(); 
            this.refresh(); 
            this.element.attr("role", "tablist"); 
            this.headers.attr("role", "tab").each(function(i) { 
                var header = $(this) 
                  , headerId = header.attr("id") 
                  , panel = header.next() 
                  , panelId = panel.attr("id"); 
                if (!headerId) { 
                    headerId = accordionId + "-header-" + i; 
                    header.attr("id", headerId); 
                } 
                if (!panelId) { 
                    panelId = accordionId + "-panel-" + i; 
                    panel.attr("id", panelId); 
                } 
                header.attr("aria-controls", panelId); 
                panel.attr("aria-labelledby", headerId); 
            }).next().attr("role", "tabpanel"); 
            this.headers.not(this.active).attr({ 
                "aria-selected": "false", 
                tabIndex: -1 
            }).next().attr({ 
                "aria-expanded": "false", 
                "aria-hidden": "true" 
            }).hide(); 
            if (!this.active.length) { 
                this.headers.eq(0).attr("tabIndex", 0); 
            } else { 
                this.active.attr({ 
                    "aria-selected": "true", 
                    tabIndex: 0 
                }).next().attr({ 
                    "aria-expanded": "true", 
                    "aria-hidden": "false" 
                }); 
            } 
            this._on(this.headers, { 
                keydown: "_keydown" 
            }); 
            this._on(this.headers.next(), { 
                keydown: "_panelKeyDown" 
            }); 
            this._setupEvents(options.event); 
        }, 
        _getCreateEventData: function() { 
            return { 
                header: this.active, 
                content: !this.active.length ? $() : this.active.next() 
            }; 
        }, 
        _createIcons: function() { 
            var icons = this.options.icons; 
            if (icons) { 
                $("<span>").addClass("ui-accordion-header-icon ui-icon " + icons.header).prependTo(this.headers); 
                this.active.children(".ui-accordion-header-icon").removeClass(icons.header).addClass(icons.activeHeader); 
                this.headers.addClass("ui-accordion-icons"); 
            } 
        }, 
        _destroyIcons: function() { 
            this.headers.removeClass("ui-accordion-icons").children(".ui-accordion-header-icon").remove(); 
        }, 
        _destroy: function() { 
            var contents; 
            this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role"); 
            this.headers.removeClass("ui-accordion-header ui-accordion-header-active ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-selected").removeAttr("aria-controls").removeAttr("tabIndex").each(function() { 
                if (/^ui-accordion/.test(this.id)) { 
                    this.removeAttribute("id"); 
                } 
            }); 
            this._destroyIcons(); 
            contents = this.headers.next().css("display", "").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled").each(function() { 
                if (/^ui-accordion/.test(this.id)) { 
                    this.removeAttribute("id"); 
                } 
            }); 
            if (this.options.heightStyle !== "content") { 
                contents.css("height", ""); 
            } 
        }, 
        _setOption: function(key, value) { 
            if (key === "active") { 
                this._activate(value); 
                return; 
            } 
            if (key === "event") { 
                if (this.options.event) { 
                    this._off(this.headers, this.options.event); 
                } 
                this._setupEvents(value); 
            } 
            this._super(key, value); 
            if (key === "collapsible" && !value && this.options.active === false) { 
                this._activate(0); 
            } 
            if (key === "icons") { 
                this._destroyIcons(); 
                if (value) { 
                    this._createIcons(); 
                } 
            } 
            if (key === "disabled") { 
                this.headers.add(this.headers.next()).toggleClass("ui-state-disabled", !!value); 
            } 
        }, 
        _keydown: function(event) { 
            if (event.altKey || event.ctrlKey) { 
                return; 
            } 
            var keyCode = $.ui.keyCode 
              , length = this.headers.length 
              , currentIndex = this.headers.index(event.target) 
              , toFocus = false; 
            switch (event.keyCode) { 
            case keyCode.RIGHT: 
            case keyCode.DOWN: 
                toFocus = this.headers[(currentIndex + 1) % length]; 
                break; 
            case keyCode.LEFT: 
            case keyCode.UP: 
                toFocus = this.headers[(currentIndex - 1 + length) % length]; 
                break; 
            case keyCode.SPACE: 
            case keyCode.ENTER: 
                this._eventHandler(event); 
                break; 
            case keyCode.HOME: 
                toFocus = this.headers[0]; 
                break; 
            case keyCode.END: 
                toFocus = this.headers[length - 1]; 
                break; 
            } 
            if (toFocus) { 
                $(event.target).attr("tabIndex", -1); 
                $(toFocus).attr("tabIndex", 0); 
                toFocus.focus(); 
                event.preventDefault(); 
            } 
        }, 
        _panelKeyDown: function(event) { 
            if (event.keyCode === $.ui.keyCode.UP && event.ctrlKey) { 
                $(event.currentTarget).prev().focus(); 
            } 
        }, 
        refresh: function() { 
            var maxHeight, overflow, heightStyle = this.options.heightStyle, parent = this.element.parent(); 
            if (heightStyle === "fill") { 
                if (!$.support.minHeight) { 
                    overflow = parent.css("overflow"); 
                    parent.css("overflow", "hidden"); 
                } 
                maxHeight = parent.height(); 
                this.element.siblings(":visible").each(function() { 
                    var elem = $(this) 
                      , position = elem.css("position"); 
                    if (position === "absolute" || position === "fixed") { 
                        return; 
                    } 
                    maxHeight -= elem.outerHeight(true); 
                }); 
                if (overflow) { 
                    parent.css("overflow", overflow); 
                } 
                this.headers.each(function() { 
                    maxHeight -= $(this).outerHeight(true); 
                }); 
                this.headers.next().each(function() { 
                    $(this).height(Math.max(0, maxHeight - $(this).innerHeight() + $(this).height())); 
                }).css("overflow", "auto"); 
            } else if (heightStyle === "auto") { 
                maxHeight = 0; 
                this.headers.next().each(function() { 
                    maxHeight = Math.max(maxHeight, $(this).css("height", "").height()); 
                }).height(maxHeight); 
            } 
        }, 
        _activate: function(index) { 
            var active = this._findActive(index)[0]; 
            if (active === this.active[0]) { 
                return; 
            } 
            active = active || this.active[0]; 
            this._eventHandler({ 
                target: active, 
                currentTarget: active, 
                preventDefault: $.noop 
            }); 
        }, 
        _findActive: function(selector) { 
            return typeof selector === "number" ? this.headers.eq(selector) : $(); 
        }, 
        _setupEvents: function(event) { 
            var events = {}; 
            if (!event) { 
                return; 
            } 
            $.each(event.split(" "), function(index, eventName) { 
                events[eventName] = "_eventHandler"; 
            }); 
            this._on(this.headers, events); 
        }, 
        _eventHandler: function(event) { 
            var options = this.options 
              , active = this.active 
              , clicked = $(event.currentTarget) 
              , clickedIsActive = clicked[0] === active[0] 
              , collapsing = clickedIsActive && options.collapsible 
              , toShow = collapsing ? $() : clicked.next() 
              , toHide = active.next() 
              , eventData = { 
                oldHeader: active, 
                oldPanel: toHide, 
                newHeader: collapsing ? $() : clicked, 
                newPanel: toShow 
            }; 
            event.preventDefault(); 
            if ((clickedIsActive && !options.collapsible) || (this._trigger("beforeActivate", event, eventData) === false)) { 
                return; 
            } 
            options.active = collapsing ? false : this.headers.index(clicked); 
            this.active = clickedIsActive ? $() : clicked; 
            this._toggle(eventData); 
            active.removeClass("ui-accordion-header-active ui-state-active"); 
            if (options.icons) { 
                active.children(".ui-accordion-header-icon").removeClass(options.icons.activeHeader).addClass(options.icons.header); 
            } 
            if (!clickedIsActive) { 
                clicked.removeClass("ui-corner-all").addClass("ui-accordion-header-active ui-state-active ui-corner-top"); 
                if (options.icons) { 
                    clicked.children(".ui-accordion-header-icon").removeClass(options.icons.header).addClass(options.icons.activeHeader); 
                } 
                clicked.next().addClass("ui-accordion-content-active"); 
            } 
        }, 
        _toggle: function(data) { 
            var toShow = data.newPanel 
              , toHide = this.prevShow.length ? this.prevShow : data.oldPanel; 
            this.prevShow.add(this.prevHide).stop(true, true); 
            this.prevShow = toShow; 
            this.prevHide = toHide; 
            if (this.options.animate) { 
                this._animate(toShow, toHide, data); 
            } else { 
                toHide.hide(); 
                toShow.show(); 
                this._toggleComplete(data); 
            } 
            toHide.attr({ 
                "aria-expanded": "false", 
                "aria-hidden": "true" 
            }); 
            toHide.prev().attr("aria-selected", "false"); 
            if (toShow.length && toHide.length) { 
                toHide.prev().attr("tabIndex", -1); 
            } else if (toShow.length) { 
                this.headers.filter(function() { 
                    return $(this).attr("tabIndex") === 0; 
                }).attr("tabIndex", -1); 
            } 
            toShow.attr({ 
                "aria-expanded": "true", 
                "aria-hidden": "false" 
            }).prev().attr({ 
                "aria-selected": "true", 
                tabIndex: 0 
            }); 
        }, 
        _animate: function(toShow, toHide, data) { 
            var total, easing, duration, that = this, adjust = 0, down = toShow.length && (!toHide.length || (toShow.index() < toHide.index())), animate = this.options.animate || {}, options = down && animate.down || animate, complete = function() { 
                that._toggleComplete(data); 
            }; 
            if (typeof options === "number") { 
                duration = options; 
            } 
            if (typeof options === "string") { 
                easing = options; 
            } 
            easing = easing || options.easing || animate.easing; 
            duration = duration || options.duration || animate.duration; 
            if (!toHide.length) { 
                return toShow.animate(showProps, duration, easing, complete); 
            } 
            if (!toShow.length) { 
                return toHide.animate(hideProps, duration, easing, complete); 
            } 
            total = toShow.show().outerHeight(); 
            toHide.animate(hideProps, { 
                duration: duration, 
                easing: easing, 
                step: function(now, fx) { 
                    fx.now = Math.round(now); 
                } 
            }); 
            toShow.hide().animate(showProps, { 
                duration: duration, 
                easing: easing, 
                complete: complete, 
                step: function(now, fx) { 
                    fx.now = Math.round(now); 
                    if (fx.prop !== "height") { 
                        adjust += fx.now; 
                    } else if (that.options.heightStyle !== "content") { 
                        fx.now = Math.round(total - toHide.outerHeight() - adjust); 
                        adjust = 0; 
                    } 
                } 
            }); 
        }, 
        _toggleComplete: function(data) { 
            var toHide = data.oldPanel; 
            toHide.removeClass("ui-accordion-content-active").prev().removeClass("ui-corner-top").addClass("ui-corner-all"); 
            if (toHide.length) { 
                toHide.parent()[0].className = toHide.parent()[0].className; 
            } 
            this._trigger("activate", null, data); 
        } 
    }); 
    if ($.uiBackCompat !== false) { 
        (function($, prototype) { 
            $.extend(prototype.options, { 
                navigation: false, 
                navigationFilter: function() { 
                    return this.href.toLowerCase() === location.href.toLowerCase(); 
                } 
            }); 
            var _create = prototype._create; 
            prototype._create = function() { 
                if (this.options.navigation) { 
                    var that = this 
                      , headers = this.element.find(this.options.header) 
                      , content = headers.next() 
                      , current = headers.add(content).find("a").filter(this.options.navigationFilter)[0]; 
                    if (current) { 
                        headers.add(content).each(function(index) { 
                            if ($.contains(this, current)) { 
                                that.options.active = Math.floor(index / 2); 
                                return false; 
                            } 
                        }); 
                    } 
                } 
                _create.call(this); 
            } 
            ; 
        }(jQuery, jQuery.ui.accordion.prototype)); 
        (function($, prototype) { 
            $.extend(prototype.options, { 
                heightStyle: null, 
                autoHeight: true, 
                clearStyle: false, 
                fillSpace: false 
            }); 
            var _create = prototype._create 
              , _setOption = prototype._setOption; 
            $.extend(prototype, { 
                _create: function() { 
                    this.options.heightStyle = this.options.heightStyle || this._mergeHeightStyle(); 
                    _create.call(this); 
                }, 
                _setOption: function(key) { 
                    if (key === "autoHeight" || key === "clearStyle" || key === "fillSpace") { 
                        this.options.heightStyle = this._mergeHeightStyle(); 
                    } 
                    _setOption.apply(this, arguments); 
                }, 
                _mergeHeightStyle: function() { 
                    var options = this.options; 
                    if (options.fillSpace) { 
                        return "fill"; 
                    } 
                    if (options.clearStyle) { 
                        return "content"; 
                    } 
                    if (options.autoHeight) { 
                        return "auto"; 
                    } 
                } 
            }); 
        }(jQuery, jQuery.ui.accordion.prototype)); 
        (function($, prototype) { 
            $.extend(prototype.options.icons, { 
                activeHeader: null, 
                headerSelected: "ui-icon-triangle-1-s" 
            }); 
            var _createIcons = prototype._createIcons; 
            prototype._createIcons = function() { 
                if (this.options.icons) { 
                    this.options.icons.activeHeader = this.options.icons.activeHeader || this.options.icons.headerSelected; 
                } 
                _createIcons.call(this); 
            } 
            ; 
        }(jQuery, jQuery.ui.accordion.prototype)); 
        (function($, prototype) { 
            prototype.activate = prototype._activate; 
            var _findActive = prototype._findActive; 
            prototype._findActive = function(index) { 
                if (index === -1) { 
                    index = false; 
                } 
                if (index && typeof index !== "number") { 
                    index = this.headers.index(this.headers.filter(index)); 
                    if (index === -1) { 
                        index = false; 
                    } 
                } 
                return _findActive.call(this, index); 
            } 
            ; 
        }(jQuery, jQuery.ui.accordion.prototype)); 
        jQuery.ui.accordion.prototype.resize = jQuery.ui.accordion.prototype.refresh; 
        (function($, prototype) { 
            $.extend(prototype.options, { 
                change: null, 
                changestart: null 
            }); 
            var _trigger = prototype._trigger; 
            prototype._trigger = function(type, event, data) { 
                var ret = _trigger.apply(this, arguments); 
                if (!ret) { 
                    return false; 
                } 
                if (type === "beforeActivate") { 
                    ret = _trigger.call(this, "changestart", event, { 
                        oldHeader: data.oldHeader, 
                        oldContent: data.oldPanel, 
                        newHeader: data.newHeader, 
                        newContent: data.newPanel 
                    }); 
                } else if (type === "activate") { 
                    ret = _trigger.call(this, "change", event, { 
                        oldHeader: data.oldHeader, 
                        oldContent: data.oldPanel, 
                        newHeader: data.newHeader, 
                        newContent: data.newPanel 
                    }); 
                } 
                return ret; 
            } 
            ; 
        }(jQuery, jQuery.ui.accordion.prototype)); 
        (function($, prototype) { 
            $.extend(prototype.options, { 
                animate: null, 
                animated: "slide" 
            }); 
            var _create = prototype._create; 
            prototype._create = function() { 
                var options = this.options; 
                if (options.animate === null) { 
                    if (!options.animated) { 
                        options.animate = false; 
                    } else if (options.animated === "slide") { 
                        options.animate = 300; 
                    } else if (options.animated === "bounceslide") { 
                        options.animate = { 
                            duration: 200, 
                            down: { 
                                easing: "easeOutBounce", 
                                duration: 1000 
                            } 
                        }; 
                    } else { 
                        options.animate = options.animated; 
                    } 
                } 
                _create.call(this); 
            } 
            ; 
        }(jQuery, jQuery.ui.accordion.prototype)); 
    } 
} 
)(jQuery); 
(function($, undefined) { 
    var requestIndex = 0; 
    $.widget("ui.autocomplete", { 
        version: "1.9.2", 
        defaultElement: "<input>", 
        options: { 
            appendTo: "body", 
            autoFocus: false, 
            delay: 300, 
            minLength: 1, 
            position: { 
                my: "left top", 
                at: "left bottom", 
                collision: "none" 
            }, 
            source: null, 
            change: null, 
            close: null, 
            focus: null, 
            open: null, 
            response: null, 
            search: null, 
            select: null 
        }, 
        pending: 0, 
        _create: function() { 
            var suppressKeyPress, suppressKeyPressRepeat, suppressInput; 
            this.isMultiLine = this._isMultiLine(); 
            this.valueMethod = this.element[this.element.is("input,textarea") ? "val" : "text"]; 
            this.isNewMenu = true; 
            this.element.addClass("ui-autocomplete-input").attr("autocomplete", "disabled"); 
            this._on(this.element, { 
                keydown: function(event) { 
                    if (this.element.prop("readOnly")) { 
                        suppressKeyPress = true; 
                        suppressInput = true; 
                        suppressKeyPressRepeat = true; 
                        return; 
                    } 
                    suppressKeyPress = false; 
                    suppressInput = false; 
                    suppressKeyPressRepeat = false; 
                    var keyCode = $.ui.keyCode; 
                    switch (event.keyCode) { 
                    case keyCode.PAGE_UP: 
                        suppressKeyPress = true; 
                        this._move("previousPage", event); 
                        break; 
                    case keyCode.PAGE_DOWN: 
                        suppressKeyPress = true; 
                        this._move("nextPage", event); 
                        break; 
                    case keyCode.UP: 
                        suppressKeyPress = true; 
                        this._keyEvent("previous", event); 
                        break; 
                    case keyCode.DOWN: 
                        suppressKeyPress = true; 
                        this._keyEvent("next", event); 
                        break; 
                    case keyCode.ENTER: 
                    case keyCode.NUMPAD_ENTER: 
                        if (this.menu.active) { 
                            suppressKeyPress = true; 
                            event.preventDefault(); 
                            this.menu.select(event); 
                        } 
                        break; 
                    case keyCode.TAB: 
                        if (this.menu.active) { 
                            this.menu.select(event); 
                        } 
                        break; 
                    case keyCode.ESCAPE: 
                        if (this.menu.element.is(":visible")) { 
                            this._value(this.term); 
                            this.close(event); 
                            event.preventDefault(); 
                        } 
                        break; 
                    default: 
                        suppressKeyPressRepeat = true; 
                        this._searchTimeout(event); 
                        break; 
                    } 
                }, 
                keypress: function(event) { 
                    if (suppressKeyPress) { 
                        suppressKeyPress = false; 
                        event.preventDefault(); 
                        return; 
                    } 
                    if (suppressKeyPressRepeat) { 
                        return; 
                    } 
                    var keyCode = $.ui.keyCode; 
                    switch (event.keyCode) { 
                    case keyCode.PAGE_UP: 
                        this._move("previousPage", event); 
                        break; 
                    case keyCode.PAGE_DOWN: 
                        this._move("nextPage", event); 
                        break; 
                    case keyCode.UP: 
                        this._keyEvent("previous", event); 
                        break; 
                    case keyCode.DOWN: 
                        this._keyEvent("next", event); 
                        break; 
                    } 
                }, 
                input: function(event) { 
                    if (suppressInput) { 
                        suppressInput = false; 
                        event.preventDefault(); 
                        return; 
                    } 
                    this._searchTimeout(event); 
                }, 
                focus: function() { 
                    this.selectedItem = null; 
                    this.previous = this._value(); 
                }, 
                blur: function(event) { 
                    if (this.cancelBlur) { 
                        delete this.cancelBlur; 
                        return; 
                    } 
                    clearTimeout(this.searching); 
                    this.close(event); 
                    this._change(event); 
                } 
            }); 
            this._initSource(); 
            this.menu = $("<ul>").addClass("ui-autocomplete").appendTo(this.document.find(this.options.appendTo || "body")[0]).menu({ 
                input: $(), 
                role: null 
            }).zIndex(this.element.zIndex() + 1).hide().data("menu"); 
            this._on(this.menu.element, { 
                mousedown: function(event) { 
                    event.preventDefault(); 
                    this.cancelBlur = true; 
                    this._delay(function() { 
                        delete this.cancelBlur; 
                    }); 
                    var menuElement = this.menu.element[0]; 
                    if (!$(event.target).closest(".ui-menu-item").length) { 
                        this._delay(function() { 
                            var that = this; 
                            this.document.one("mousedown", function(event) { 
                                if (event.target !== that.element[0] && event.target !== menuElement && !$.contains(menuElement, event.target)) { 
                                    that.close(); 
                                } 
                            }); 
                        }); 
                    } 
                }, 
                menufocus: function(event, ui) { 
                    if (this.isNewMenu) { 
                        this.isNewMenu = false; 
                        if (event.originalEvent && /^mouse/.test(event.originalEvent.type)) { 
                            this.menu.blur(); 
                            this.document.one("mousemove", function() { 
                                $(event.target).trigger(event.originalEvent); 
                            }); 
                            return; 
                        } 
                    } 
                    var item = ui.item.data("ui-autocomplete-item") || ui.item.data("item.autocomplete"); 
                    if (false !== this._trigger("focus", event, { 
                        item: item 
                    })) { 
                        if (event.originalEvent && /^key/.test(event.originalEvent.type)) { 
                            this._value(item.value); 
                        } 
                    } else { 
                        this.liveRegion.text(item.value); 
                    } 
                }, 
                menuselect: function(event, ui) { 
                    var item = ui.item.data("ui-autocomplete-item") || ui.item.data("item.autocomplete") 
                      , previous = this.previous; 
                    if (this.element[0] !== this.document[0].activeElement) { 
                        this.element.focus(); 
                        this.previous = previous; 
                        this._delay(function() { 
                            this.previous = previous; 
                            this.selectedItem = item; 
                        }); 
                    } 
                    if (false !== this._trigger("select", event, { 
                        item: item 
                    })) { 
                        this._value(item.value); 
                    } 
                    this.term = this._value(); 
                    this.close(event); 
                    this.selectedItem = item; 
                } 
            }); 
            this.liveRegion = $("<span>", { 
                role: "status", 
                "aria-live": "polite" 
            }).addClass("ui-helper-hidden-accessible").insertAfter(this.element); 
            if ($.fn.bgiframe) { 
                this.menu.element.bgiframe(); 
            } 
            this._on(this.window, { 
                beforeunload: function() { 
                    this.element.removeAttr("autocomplete"); 
                } 
            }); 
        }, 
        _destroy: function() { 
            clearTimeout(this.searching); 
            this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete"); 
            this.menu.element.remove(); 
            this.liveRegion.remove(); 
        }, 
        _setOption: function(key, value) { 
            this._super(key, value); 
            if (key === "source") { 
                this._initSource(); 
            } 
            if (key === "appendTo") { 
                this.menu.element.appendTo(this.document.find(value || "body")[0]); 
            } 
            if (key === "disabled" && value && this.xhr) { 
                this.xhr.abort(); 
            } 
        }, 
        _isMultiLine: function() { 
            if (this.element.is("textarea")) { 
                return true; 
            } 
            if (this.element.is("input")) { 
                return false; 
            } 
            return this.element.prop("isContentEditable"); 
        }, 
        _initSource: function() { 
            var array, url, that = this; 
            if ($.isArray(this.options.source)) { 
                array = this.options.source; 
                this.source = function(request, response) { 
                    response($.ui.autocomplete.filter(array, request.term)); 
                } 
                ; 
            } else if (typeof this.options.source === "string") { 
                url = this.options.source; 
                this.source = function(request, response) { 
                    if (that.xhr) { 
                        that.xhr.abort(); 
                    } 
                    that.xhr = $.ajax({ 
                        url: url, 
                        data: request, 
                        dataType: "json", 
                        success: function(data) { 
                            response(data); 
                        }, 
                        error: function() { 
                            response([]); 
                        } 
                    }); 
                } 
                ; 
            } else { 
                this.source = this.options.source; 
            } 
        }, 
        _searchTimeout: function(event) { 
            clearTimeout(this.searching); 
            this.searching = this._delay(function() { 
                if (this.term !== this._value()) { 
                    this.selectedItem = null; 
                    this.search(null, event); 
                } 
            }, this.options.delay); 
        }, 
        search: function(value, event) { 
            value = value != null ? value : this._value(); 
            this.term = this._value(); 
            if (value.length < this.options.minLength) { 
                return this.close(event); 
            } 
            if (this._trigger("search", event) === false) { 
                return; 
            } 
            return this._search(value); 
        }, 
        _search: function(value) { 
            this.pending++; 
            this.element.addClass("ui-autocomplete-loading"); 
            this.cancelSearch = false; 
            this.source({ 
                term: value 
            }, this._response()); 
        }, 
        _response: function() { 
            var that = this 
              , index = ++requestIndex; 
            return function(content) { 
                if (index === requestIndex) { 
                    that.__response(content); 
                } 
                that.pending--; 
                if (!that.pending) { 
                    that.element.removeClass("ui-autocomplete-loading"); 
                } 
            } 
            ; 
        }, 
        __response: function(content) { 
            if (content) { 
                content = this._normalize(content); 
            } 
            this._trigger("response", null, { 
                content: content 
            }); 
            if (!this.options.disabled && content && content.length && !this.cancelSearch) { 
                this._suggest(content); 
                this._trigger("open"); 
            } else { 
                this._close(); 
            } 
        }, 
        close: function(event) { 
            this.cancelSearch = true; 
            this._close(event); 
        }, 
        _close: function(event) { 
            if (this.menu.element.is(":visible")) { 
                this.menu.element.hide(); 
                this.menu.blur(); 
                this.isNewMenu = true; 
                this._trigger("close", event); 
            } 
        }, 
        _change: function(event) { 
            if (this.previous !== this._value()) { 
                this._trigger("change", event, { 
                    item: this.selectedItem 
                }); 
            } 
        }, 
        _normalize: function(items) { 
            if (items.length && items[0].label && items[0].value) { 
                return items; 
            } 
            return $.map(items, function(item) { 
                if (typeof item === "string") { 
                    return { 
                        label: item, 
                        value: item 
                    }; 
                } 
                return $.extend({ 
                    label: item.label || item.value, 
                    value: item.value || item.label 
                }, item); 
            }); 
        }, 
        _suggest: function(items) { 
            var ul = this.menu.element.empty().zIndex(this.element.zIndex() + 1); 
            this._renderMenu(ul, items); 
            this.menu.refresh(); 
            ul.show(); 
            this._resizeMenu(); 
            ul.position($.extend({ 
                of: this.element 
            }, this.options.position)); 
            if (this.options.autoFocus) { 
                this.menu.next(); 
            } 
        }, 
        _resizeMenu: function() { 
            var ul = this.menu.element; 
            ul.outerWidth(Math.max(ul.width("").outerWidth() + 1, this.element.outerWidth())); 
        }, 
        _renderMenu: function(ul, items) { 
            var that = this; 
            $.each(items, function(index, item) { 
                that._renderItemData(ul, item); 
            }); 
        }, 
        _renderItemData: function(ul, item) { 
            return this._renderItem(ul, item).data("ui-autocomplete-item", item); 
        }, 
        _renderItem: function(ul, item) { 
            return $("<li>").append($("<a>").text(item.label)).appendTo(ul); 
        }, 
        _move: function(direction, event) { 
            if (!this.menu.element.is(":visible")) { 
                this.search(null, event); 
                return; 
            } 
            if (this.menu.isFirstItem() && /^previous/.test(direction) || this.menu.isLastItem() && /^next/.test(direction)) { 
                this._value(this.term); 
                this.menu.blur(); 
                return; 
            } 
            this.menu[direction](event); 
        }, 
        widget: function() { 
            return this.menu.element; 
        }, 
        _value: function() { 
            return this.valueMethod.apply(this.element, arguments); 
        }, 
        _keyEvent: function(keyEvent, event) { 
            if (!this.isMultiLine || this.menu.element.is(":visible")) { 
                this._move(keyEvent, event); 
                event.preventDefault(); 
            } 
        } 
    }); 
    $.extend($.ui.autocomplete, { 
        escapeRegex: function(value) { 
            return value.replace(/[\-\[\]{}()*+?.,\\^$|#\s]/g, "\$&"); 
        }, 
        filter: function(array, term) { 
            var matcher = new RegExp($.ui.autocomplete.escapeRegex(term),"i"); 
            return $.grep(array, function(value) { 
                return matcher.test(value.label || value.value || value); 
            }); 
        } 
    }); 
    $.widget("ui.autocomplete", $.ui.autocomplete, { 
        options: { 
            messages: { 
                noResults: "No search results.", 
                results: function(amount) { 
                    return amount + (amount > 1 ? " results are" : " result is") + " available, use up and down arrow keys to navigate."; 
                } 
            } 
        }, 
        __response: function(content) { 
            var message; 
            this._superApply(arguments); 
            if (this.options.disabled || this.cancelSearch) { 
                return; 
            } 
            if (content && content.length) { 
                message = this.options.messages.results(content.length); 
            } else { 
                message = this.options.messages.noResults; 
            } 
            this.liveRegion.text(message); 
        } 
    }); 
}(jQuery)); 
(function($, undefined) { 
    var lastActive, startXPos, startYPos, clickDragged, baseClasses = "ui-button ui-widget ui-state-default ui-corner-all", stateClasses = "ui-state-hover ui-state-active ", typeClasses = "ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only", formResetHandler = function() { 
        var buttons = $(this).find(":ui-button"); 
        setTimeout(function() { 
            buttons.button("refresh"); 
        }, 1); 
    }, radioGroup = function(radio) { 
        var name = radio.name 
          , form = radio.form 
          , radios = $([]); 
        if (name) { 
            if (form) { 
                radios = $(form).find("[name='" + name + "']"); 
            } else { 
                radios = $("[name='" + name + "']", radio.ownerDocument).filter(function() { 
                    return !this.form; 
                }); 
            } 
        } 
        return radios; 
    }; 
    $.widget("ui.button", { 
        version: "1.9.2", 
        defaultElement: "<button>", 
        options: { 
            disabled: null, 
            text: true, 
            label: null, 
            icons: { 
                primary: null, 
                secondary: null 
            } 
        }, 
        _create: function() { 
            this.element.closest("form").unbind("reset" + this.eventNamespace).bind("reset" + this.eventNamespace, formResetHandler); 
            if (typeof this.options.disabled !== "boolean") { 
                this.options.disabled = !!this.element.prop("disabled"); 
            } else { 
                this.element.prop("disabled", this.options.disabled); 
            } 
            this._determineButtonType(); 
            this.hasTitle = !!this.buttonElement.attr("title"); 
            var that = this 
              , options = this.options 
              , toggleButton = this.type === "checkbox" || this.type === "radio" 
              , activeClass = !toggleButton ? "ui-state-active" : "" 
              , focusClass = "ui-state-focus"; 
            if (options.label === null) { 
                options.label = (this.type === "input" ? this.buttonElement.val() : this.buttonElement.html()); 
            } 
            this._hoverable(this.buttonElement); 
            this.buttonElement.addClass(baseClasses).attr("role", "button").bind("mouseenter" + this.eventNamespace, function() { 
                if (options.disabled) { 
                    return; 
                } 
                if (this === lastActive) { 
                    $(this).addClass("ui-state-active"); 
                } 
            }).bind("mouseleave" + this.eventNamespace, function() { 
                if (options.disabled) { 
                    return; 
                } 
                $(this).removeClass(activeClass); 
            }).bind("click" + this.eventNamespace, function(event) { 
                if (options.disabled) { 
                    event.preventDefault(); 
                    event.stopImmediatePropagation(); 
                } 
            }); 
            this.element.bind("focus" + this.eventNamespace, function() { 
                that.buttonElement.addClass(focusClass); 
            }).bind("blur" + this.eventNamespace, function() { 
                that.buttonElement.removeClass(focusClass); 
            }); 
            if (toggleButton) { 
                this.element.bind("change" + this.eventNamespace, function() { 
                    if (clickDragged) { 
                        return; 
                    } 
                    that.refresh(); 
                }); 
                this.buttonElement.bind("mousedown" + this.eventNamespace, function(event) { 
                    if (options.disabled) { 
                        return; 
                    } 
                    clickDragged = false; 
                    startXPos = event.pageX; 
                    startYPos = event.pageY; 
                }).bind("mouseup" + this.eventNamespace, function(event) { 
                    if (options.disabled) { 
                        return; 
                    } 
                    if (startXPos !== event.pageX || startYPos !== event.pageY) { 
                        clickDragged = true; 
                    } 
                }); 
            } 
            if (this.type === "checkbox") { 
                this.buttonElement.bind("click" + this.eventNamespace, function() { 
                    if (options.disabled || clickDragged) { 
                        return false; 
                    } 
                    $(this).toggleClass("ui-state-active"); 
                    that.buttonElement.attr("aria-pressed", that.element[0].checked); 
                }); 
            } else if (this.type === "radio") { 
                this.buttonElement.bind("click" + this.eventNamespace, function() { 
                    if (options.disabled || clickDragged) { 
                        return false; 
                    } 
                    $(this).addClass("ui-state-active"); 
                    that.buttonElement.attr("aria-pressed", "true"); 
                    var radio = that.element[0]; 
                    radioGroup(radio).not(radio).map(function() { 
                        return $(this).button("widget")[0]; 
                    }).removeClass("ui-state-active").attr("aria-pressed", "false"); 
                }); 
            } else { 
                this.buttonElement.bind("mousedown" + this.eventNamespace, function() { 
                    if (options.disabled) { 
                        return false; 
                    } 
                    $(this).addClass("ui-state-active"); 
                    lastActive = this; 
                    that.document.one("mouseup", function() { 
                        lastActive = null; 
                    }); 
                }).bind("mouseup" + this.eventNamespace, function() { 
                    if (options.disabled) { 
                        return false; 
                    } 
                    $(this).removeClass("ui-state-active"); 
                }).bind("keydown" + this.eventNamespace, function(event) { 
                    if (options.disabled) { 
                        return false; 
                    } 
                    if (event.keyCode === $.ui.keyCode.SPACE || event.keyCode === $.ui.keyCode.ENTER) { 
                        $(this).addClass("ui-state-active"); 
                    } 
                }).bind("keyup" + this.eventNamespace, function() { 
                    $(this).removeClass("ui-state-active"); 
                }); 
                if (this.buttonElement.is("a")) { 
                    this.buttonElement.keyup(function(event) { 
                        if (event.keyCode === $.ui.keyCode.SPACE) { 
                            $(this).click(); 
                        } 
                    }); 
                } 
            } 
            this._setOption("disabled", options.disabled); 
            this._resetButton(); 
        }, 
        _determineButtonType: function() { 
            var ancestor, labelSelector, checked; 
            if (this.element.is("[type=checkbox]")) { 
                this.type = "checkbox"; 
            } else if (this.element.is("[type=radio]")) { 
                this.type = "radio"; 
            } else if (this.element.is("input")) { 
                this.type = "input"; 
            } else { 
                this.type = "button"; 
            } 
            if (this.type === "checkbox" || this.type === "radio") { 
                ancestor = this.element.parents().last(); 
                labelSelector = "label[for='" + this.element.attr("id") + "']"; 
                this.buttonElement = ancestor.find(labelSelector); 
                if (!this.buttonElement.length) { 
                    ancestor = ancestor.length ? ancestor.siblings() : this.element.siblings(); 
                    this.buttonElement = ancestor.filter(labelSelector); 
                    if (!this.buttonElement.length) { 
                        this.buttonElement = ancestor.find(labelSelector); 
                    } 
                } 
                this.element.addClass("ui-helper-hidden-accessible"); 
                checked = this.element.is(":checked"); 
                if (checked) { 
                    this.buttonElement.addClass("ui-state-active"); 
                } 
                this.buttonElement.prop("aria-pressed", checked); 
            } else { 
                this.buttonElement = this.element; 
            } 
        }, 
        widget: function() { 
            return this.buttonElement; 
        }, 
        _destroy: function() { 
            this.element.removeClass("ui-helper-hidden-accessible"); 
            this.buttonElement.removeClass(baseClasses + " " + stateClasses + " " + typeClasses).removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html()); 
            if (!this.hasTitle) { 
                this.buttonElement.removeAttr("title"); 
            } 
        }, 
        _setOption: function(key, value) { 
            this._super(key, value); 
            if (key === "disabled") { 
                if (value) { 
                    this.element.prop("disabled", true); 
                } else { 
                    this.element.prop("disabled", false); 
                } 
                return; 
            } 
            this._resetButton(); 
        }, 
        refresh: function() { 
            var isDisabled = this.element.is("input, button") ? this.element.is(":disabled") : this.element.hasClass("ui-button-disabled"); 
            if (isDisabled !== this.options.disabled) { 
                this._setOption("disabled", isDisabled); 
            } 
            if (this.type === "radio") { 
                radioGroup(this.element[0]).each(function() { 
                    if ($(this).is(":checked")) { 
                        $(this).button("widget").addClass("ui-state-active").attr("aria-pressed", "true"); 
                    } else { 
                        $(this).button("widget").removeClass("ui-state-active").attr("aria-pressed", "false"); 
                    } 
                }); 
            } else if (this.type === "checkbox") { 
                if (this.element.is(":checked")) { 
                    this.buttonElement.addClass("ui-state-active").attr("aria-pressed", "true"); 
                } else { 
                    this.buttonElement.removeClass("ui-state-active").attr("aria-pressed", "false"); 
                } 
            } 
        }, 
        _resetButton: function() { 
            if (this.type === "input") { 
                if (this.options.label) { 
                    this.element.val(this.options.label); 
                } 
                return; 
            } 
            var buttonElement = this.buttonElement.removeClass(typeClasses) 
              , buttonText = $("<span></span>", this.document[0]).addClass("ui-button-text").html(this.options.label).appendTo(buttonElement.empty()).text() 
              , icons = this.options.icons 
              , multipleIcons = icons.primary && icons.secondary 
              , buttonClasses = []; 
            if (icons.primary || icons.secondary) { 
                if (this.options.text) { 
                    buttonClasses.push("ui-button-text-icon" + (multipleIcons ? "s" : (icons.primary ? "-primary" : "-secondary"))); 
                } 
                if (icons.primary) { 
                    buttonElement.prepend("<span class='ui-button-icon-primary ui-icon " + icons.primary + "'></span>"); 
                } 
                if (icons.secondary) { 
                    buttonElement.append("<span class='ui-button-icon-secondary ui-icon " + icons.secondary + "'></span>"); 
                } 
                if (!this.options.text) { 
                    buttonClasses.push(multipleIcons ? "ui-button-icons-only" : "ui-button-icon-only"); 
                    if (!this.hasTitle) { 
                        buttonElement.attr("title", $.trim(buttonText)); 
                    } 
                } 
            } else { 
                buttonClasses.push("ui-button-text-only"); 
            } 
            buttonElement.addClass(buttonClasses.join(" ")); 
        } 
    }); 
    $.widget("ui.buttonset", { 
        version: "1.9.2", 
        options: { 
            items: "button, input[type=button], input[type=submit], input[type=reset], input[type=checkbox], input[type=radio], a, :data(button)" 
        }, 
        _create: function() { 
            this.element.addClass("ui-buttonset"); 
        }, 
        _init: function() { 
            this.refresh(); 
        }, 
        _setOption: function(key, value) { 
            if (key === "disabled") { 
                this.buttons.button("option", key, value); 
            } 
            this._super(key, value); 
        }, 
        refresh: function() { 
            var rtl = this.element.css("direction") === "rtl"; 
            this.buttons = this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function() { 
                return $(this).button("widget")[0]; 
            }).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(rtl ? "ui-corner-right" : "ui-corner-left").end().filter(":last").addClass(rtl ? "ui-corner-left" : "ui-corner-right").end().end(); 
        }, 
        _destroy: function() { 
            this.element.removeClass("ui-buttonset"); 
            this.buttons.map(function() { 
                return $(this).button("widget")[0]; 
            }).removeClass("ui-corner-left ui-corner-right").end().button("destroy"); 
        } 
    }); 
}(jQuery)); 
(function($, undefined) { 
    $.extend($.ui, { 
        datepicker: { 
            version: "1.9.2" 
        } 
    }); 
    var PROP_NAME = 'datepicker'; 
    var dpuuid = new Date().getTime(); 
    var instActive; 
    function Datepicker() { 
        this.debug = false; 
        this._curInst = null; 
        this._keyEvent = false; 
        this._disabledInputs = []; 
        this._datepickerShowing = false; 
        this._inDialog = false; 
        this._mainDivId = 'ui-datepicker-div'; 
        this._inlineClass = 'ui-datepicker-inline'; 
        this._appendClass = 'ui-datepicker-append'; 
        this._triggerClass = 'ui-datepicker-trigger'; 
        this._dialogClass = 'ui-datepicker-dialog'; 
        this._disableClass = 'ui-datepicker-disabled'; 
        this._unselectableClass = 'ui-datepicker-unselectable'; 
        this._currentClass = 'ui-datepicker-current-day'; 
        this._dayOverClass = 'ui-datepicker-days-cell-over'; 
        this.regional = []; 
        this.regional[''] = { 
            closeText: 'Done', 
            prevText: 'Prev', 
            nextText: 'Next', 
            currentText: 'Today', 
            monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], 
            monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], 
            dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], 
            dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], 
            dayNamesMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'], 
            weekHeader: 'Wk', 
            dateFormat: 'mm/dd/yy', 
            firstDay: 0, 
            isRTL: false, 
            showMonthAfterYear: false, 
            yearSuffix: '' 
        }; 
        this._defaults = { 
            showOn: 'focus', 
            showAnim: 'fadeIn', 
            showOptions: {}, 
            defaultDate: null, 
            appendText: '', 
            buttonText: '...', 
            buttonImage: '', 
            buttonImageOnly: false, 
            hideIfNoPrevNext: false, 
            navigationAsDateFormat: false, 
            gotoCurrent: false, 
            changeMonth: false, 
            changeYear: false, 
            yearRange: 'c-10:c+10', 
            showOtherMonths: false, 
            selectOtherMonths: false, 
            showWeek: false, 
            calculateWeek: this.iso8601Week, 
            shortYearCutoff: '+10', 
            minDate: null, 
            maxDate: null, 
            duration: 'fast', 
            beforeShowDay: null, 
            beforeShow: null, 
            onSelect: null, 
            onChangeMonthYear: null, 
            onClose: null, 
            numberOfMonths: 1, 
            showCurrentAtPos: 0, 
            stepMonths: 1, 
            stepBigMonths: 12, 
            altField: '', 
            altFormat: '', 
            constrainInput: true, 
            showButtonPanel: false, 
            autoSize: false, 
            disabled: false 
        }; 
        $.extend(this._defaults, this.regional['']); 
        this.dpDiv = bindHover($('<div id="' + this._mainDivId + '" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>')); 
    } 
    $.extend(Datepicker.prototype, { 
        markerClassName: 'hasDatepicker', 
        maxRows: 4, 
        log: function() { 
            if (this.debug) 
                console.log.apply('', arguments); 
        }, 
        _widgetDatepicker: function() { 
            return this.dpDiv; 
        }, 
        setDefaults: function(settings) { 
            extendRemove(this._defaults, settings || {}); 
            return this; 
        }, 
        _attachDatepicker: function(target, settings) { 
            var inlineSettings = null; 
            for (var attrName in this._defaults) { 
                var attrValue = target.getAttribute('date:' + attrName); 
                if (attrValue) { 
                    inlineSettings = inlineSettings || {}; 
                    try { 
                        inlineSettings[attrName] = eval(attrValue); 
                    } catch (err) { 
                        inlineSettings[attrName] = attrValue; 
                    } 
                } 
            } 
            var nodeName = target.nodeName.toLowerCase(); 
            var inline = (nodeName == 'div' || nodeName == 'span'); 
            if (!target.id) { 
                this.uuid += 1; 
                target.id = 'dp' + this.uuid; 
            } 
            var inst = this._newInst($(target), inline); 
            inst.settings = $.extend({}, settings || {}, inlineSettings || {}); 
            if (nodeName == 'input') { 
                this._connectDatepicker(target, inst); 
            } else if (inline) { 
                this._inlineDatepicker(target, inst); 
            } 
        }, 
        _newInst: function(target, inline) { 
            var id = target[0].id.replace(/([^A-Za-z0-9_-])/g, '\\$1'); 
            return { 
                id: id, 
                input: target, 
                selectedDay: 0, 
                selectedMonth: 0, 
                selectedYear: 0, 
                drawMonth: 0, 
                drawYear: 0, 
                inline: inline, 
                dpDiv: (!inline ? this.dpDiv : bindHover($('<div class="' + this._inlineClass + ' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))) 
            }; 
        }, 
        _connectDatepicker: function(target, inst) { 
            var input = $(target); 
            inst.append = $([]); 
            inst.trigger = $([]); 
            if (input.hasClass(this.markerClassName)) 
                return; 
            this._attachments(input, inst); 
            input.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker", function(event, key, value) { 
                inst.settings[key] = value; 
            }).bind("getData.datepicker", function(event, key) { 
                return this._get(inst, key); 
            }); 
            this._autoSize(inst); 
            $.data(target, PROP_NAME, inst); 
            if (inst.settings.disabled) { 
                this._disableDatepicker(target); 
            } 
        }, 
        _attachments: function(input, inst) { 
            var appendText = this._get(inst, 'appendText'); 
            var isRTL = this._get(inst, 'isRTL'); 
            if (inst.append) 
                inst.append.remove(); 
            if (appendText) { 
                inst.append = $('<span class="' + this._appendClass + '">' + appendText + '</span>'); 
                input[isRTL ? 'before' : 'after'](inst.append); 
            } 
            input.unbind('focus', this._showDatepicker); 
            if (inst.trigger) 
                inst.trigger.remove(); 
            var showOn = this._get(inst, 'showOn'); 
            if (showOn == 'focus' || showOn == 'both') 
                input.focus(this._showDatepicker); 
            if (showOn == 'button' || showOn == 'both') { 
                var buttonText = this._get(inst, 'buttonText'); 
                var buttonImage = this._get(inst, 'buttonImage'); 
                inst.trigger = $(this._get(inst, 'buttonImageOnly') ? $('<img/>').addClass(this._triggerClass).attr({ 
                    src: buttonImage, 
                    alt: buttonText, 
                    title: buttonText 
                }) : $('<button type="button"></button>').addClass(this._triggerClass).html(buttonImage == '' ? buttonText : $('<img/>').attr({ 
                    src: buttonImage, 
                    alt: buttonText, 
                    title: buttonText 
                }))); 
                input[isRTL ? 'before' : 'after'](inst.trigger); 
                inst.trigger.click(function() { 
                    if ($.datepicker._datepickerShowing && $.datepicker._lastInput == input[0]) 
                        $.datepicker._hideDatepicker(); 
                    else if ($.datepicker._datepickerShowing && $.datepicker._lastInput != input[0]) { 
                        $.datepicker._hideDatepicker(); 
                        $.datepicker._showDatepicker(input[0]); 
                    } else 
                        $.datepicker._showDatepicker(input[0]); 
                    return false; 
                }); 
            } 
        }, 
        _autoSize: function(inst) { 
            if (this._get(inst, 'autoSize') && !inst.inline) { 
                var date = new Date(2009,12 - 1,20); 
                var dateFormat = this._get(inst, 'dateFormat'); 
                if (dateFormat.match(/[DM]/)) { 
                    var findMax = function(names) { 
                        var max = 0; 
                        var maxI = 0; 
                        for (var i = 0; i < names.length; i++) { 
                            if (names[i].length > max) { 
                                max = names[i].length; 
                                maxI = i; 
                            } 
                        } 
                        return maxI; 
                    }; 
                    date.setMonth(findMax(this._get(inst, (dateFormat.match(/MM/) ? 'monthNames' : 'monthNamesShort')))); 
                    date.setDate(findMax(this._get(inst, (dateFormat.match(/DD/) ? 'dayNames' : 'dayNamesShort'))) + 20 - date.getDay()); 
                } 
                inst.input.attr('size', this._formatDate(inst, date).length); 
            } 
        }, 
        _inlineDatepicker: function(target, inst) { 
            var divSpan = $(target); 
            if (divSpan.hasClass(this.markerClassName)) 
                return; 
            divSpan.addClass(this.markerClassName).append(inst.dpDiv).bind("setData.datepicker", function(event, key, value) { 
                inst.settings[key] = value; 
            }).bind("getData.datepicker", function(event, key) { 
                return this._get(inst, key); 
            }); 
            $.data(target, PROP_NAME, inst); 
            this._setDate(inst, this._getDefaultDate(inst), true); 
            this._updateDatepicker(inst); 
            this._updateAlternate(inst); 
            if (inst.settings.disabled) { 
                this._disableDatepicker(target); 
            } 
            inst.dpDiv.css("display", "block"); 
        }, 
        _dialogDatepicker: function(input, date, onSelect, settings, pos) { 
            var inst = this._dialogInst; 
            if (!inst) { 
                this.uuid += 1; 
                var id = 'dp' + this.uuid; 
                this._dialogInput = $('<input type="text" id="' + id + '" style="position: absolute; top: -100px; width: 0px;"/>'); 
                this._dialogInput.keydown(this._doKeyDown); 
                $('body').append(this._dialogInput); 
                inst = this._dialogInst = this._newInst(this._dialogInput, false); 
                inst.settings = {}; 
                $.data(this._dialogInput[0], PROP_NAME, inst); 
            } 
            extendRemove(inst.settings, settings || {}); 
            date = (date && date.constructor == Date ? this._formatDate(inst, date) : date); 
            this._dialogInput.val(date); 
            this._pos = (pos ? (pos.length ? pos : [pos.pageX, pos.pageY]) : null); 
            if (!this._pos) { 
                var browserWidth = document.documentElement.clientWidth; 
                var browserHeight = document.documentElement.clientHeight; 
                var scrollX = document.documentElement.scrollLeft || document.body.scrollLeft; 
                var scrollY = document.documentElement.scrollTop || document.body.scrollTop; 
                this._pos = [(browserWidth / 2) - 100 + scrollX, (browserHeight / 2) - 150 + scrollY]; 
            } 
            this._dialogInput.css('left', (this._pos[0] + 20) + 'px').css('top', this._pos[1] + 'px'); 
            inst.settings.onSelect = onSelect; 
            this._inDialog = true; 
            this.dpDiv.addClass(this._dialogClass); 
            this._showDatepicker(this._dialogInput[0]); 
            if ($.blockUI) 
                $.blockUI(this.dpDiv); 
            $.data(this._dialogInput[0], PROP_NAME, inst); 
            return this; 
        }, 
        _destroyDatepicker: function(target) { 
            var $target = $(target); 
            var inst = $.data(target, PROP_NAME); 
            if (!$target.hasClass(this.markerClassName)) { 
                return; 
            } 
            var nodeName = target.nodeName.toLowerCase(); 
            $.removeData(target, PROP_NAME); 
            if (nodeName == 'input') { 
                inst.append.remove(); 
                inst.trigger.remove(); 
                $target.removeClass(this.markerClassName).unbind('focus', this._showDatepicker).unbind('keydown', this._doKeyDown).unbind('keypress', this._doKeyPress).unbind('keyup', this._doKeyUp); 
            } else if (nodeName == 'div' || nodeName == 'span') 
                $target.removeClass(this.markerClassName).empty(); 
        }, 
        _enableDatepicker: function(target) { 
            var $target = $(target); 
            var inst = $.data(target, PROP_NAME); 
            if (!$target.hasClass(this.markerClassName)) { 
                return; 
            } 
            var nodeName = target.nodeName.toLowerCase(); 
            if (nodeName == 'input') { 
                target.disabled = false; 
                inst.trigger.filter('button').each(function() { 
                    this.disabled = false; 
                }).end().filter('img').css({ 
                    opacity: '1.0', 
                    cursor: '' 
                }); 
            } else if (nodeName == 'div' || nodeName == 'span') { 
                var inline = $target.children('.' + this._inlineClass); 
                inline.children().removeClass('ui-state-disabled'); 
                inline.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled", false); 
            } 
            this._disabledInputs = $.map(this._disabledInputs, function(value) { 
                return (value == target ? null : value); 
            }); 
        }, 
        _disableDatepicker: function(target) { 
            var $target = $(target); 
            var inst = $.data(target, PROP_NAME); 
            if (!$target.hasClass(this.markerClassName)) { 
                return; 
            } 
            var nodeName = target.nodeName.toLowerCase(); 
            if (nodeName == 'input') { 
                target.disabled = true; 
                inst.trigger.filter('button').each(function() { 
                    this.disabled = true; 
                }).end().filter('img').css({ 
                    opacity: '0.5', 
                    cursor: 'default' 
                }); 
            } else if (nodeName == 'div' || nodeName == 'span') { 
                var inline = $target.children('.' + this._inlineClass); 
                inline.children().addClass('ui-state-disabled'); 
                inline.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled", true); 
            } 
            this._disabledInputs = $.map(this._disabledInputs, function(value) { 
                return (value == target ? null : value); 
            }); 
            this._disabledInputs[this._disabledInputs.length] = target; 
        }, 
        _isDisabledDatepicker: function(target) { 
            if (!target) { 
                return false; 
            } 
            for (var i = 0; i < this._disabledInputs.length; i++) { 
                if (this._disabledInputs[i] == target) 
                    return true; 
            } 
            return false; 
        }, 
        _getInst: function(target) { 
            try { 
                return $.data(target, PROP_NAME); 
            } catch (err) { 
                throw 'Missing instance data for this datepicker'; 
            } 
        }, 
        _optionDatepicker: function(target, name, value) { 
            var inst = this._getInst(target); 
            if (arguments.length == 2 && typeof name == 'string') { 
                return (name == 'defaults' ? $.extend({}, $.datepicker._defaults) : (inst ? (name == 'all' ? $.extend({}, inst.settings) : this._get(inst, name)) : null)); 
            } 
            var settings = name || {}; 
            if (typeof name == 'string') { 
                settings = {}; 
                settings[name] = value; 
            } 
            if (inst) { 
                if (this._curInst == inst) { 
                    this._hideDatepicker(); 
                } 
                var date = this._getDateDatepicker(target, true); 
                var minDate = this._getMinMaxDate(inst, 'min'); 
                var maxDate = this._getMinMaxDate(inst, 'max'); 
                extendRemove(inst.settings, settings); 
                if (minDate !== null && settings['dateFormat'] !== undefined && settings['minDate'] === undefined) 
                    inst.settings.minDate = this._formatDate(inst, minDate); 
                if (maxDate !== null && settings['dateFormat'] !== undefined && settings['maxDate'] === undefined) 
                    inst.settings.maxDate = this._formatDate(inst, maxDate); 
                this._attachments($(target), inst); 
                this._autoSize(inst); 
                this._setDate(inst, date); 
                this._updateAlternate(inst); 
                this._updateDatepicker(inst); 
            } 
        }, 
        _changeDatepicker: function(target, name, value) { 
            this._optionDatepicker(target, name, value); 
        }, 
        _refreshDatepicker: function(target) { 
            var inst = this._getInst(target); 
            if (inst) { 
                this._updateDatepicker(inst); 
            } 
        }, 
        _setDateDatepicker: function(target, date) { 
            var inst = this._getInst(target); 
            if (inst) { 
                this._setDate(inst, date); 
                this._updateDatepicker(inst); 
                this._updateAlternate(inst); 
            } 
        }, 
        _getDateDatepicker: function(target, noDefault) { 
            var inst = this._getInst(target); 
            if (inst && !inst.inline) 
                this._setDateFromField(inst, noDefault); 
            return (inst ? this._getDate(inst) : null); 
        }, 
        _doKeyDown: function(event) { 
            var inst = $.datepicker._getInst(event.target); 
            var handled = true; 
            var isRTL = inst.dpDiv.is('.ui-datepicker-rtl'); 
            inst._keyEvent = true; 
            if ($.datepicker._datepickerShowing) 
                switch (event.keyCode) { 
                case 9: 
                    $.datepicker._hideDatepicker(); 
                    handled = false; 
                    break; 
                case 13: 
                    var sel = $('td.' + $.datepicker._dayOverClass + ':not(.' + $.datepicker._currentClass + ')', inst.dpDiv); 
                    if (sel[0]) 
                        $.datepicker._selectDay(event.target, inst.selectedMonth, inst.selectedYear, sel[0]); 
                    var onSelect = $.datepicker._get(inst, 'onSelect'); 
                    if (onSelect) { 
                        var dateStr = $.datepicker._formatDate(inst); 
                        onSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]); 
                    } else 
                        $.datepicker._hideDatepicker(); 
                    return false; 
                    break; 
                case 27: 
                    $.datepicker._hideDatepicker(); 
                    break; 
                case 33: 
                    $.datepicker._adjustDate(event.target, (event.ctrlKey ? -$.datepicker._get(inst, 'stepBigMonths') : -$.datepicker._get(inst, 'stepMonths')), 'M'); 
                    break; 
                case 34: 
                    $.datepicker._adjustDate(event.target, (event.ctrlKey ? +$.datepicker._get(inst, 'stepBigMonths') : +$.datepicker._get(inst, 'stepMonths')), 'M'); 
                    break; 
                case 35: 
                    if (event.ctrlKey || event.metaKey) 
                        $.datepicker._clearDate(event.target); 
                    handled = event.ctrlKey || event.metaKey; 
                    break; 
                case 36: 
                    if (event.ctrlKey || event.metaKey) 
                        $.datepicker._gotoToday(event.target); 
                    handled = event.ctrlKey || event.metaKey; 
                    break; 
                case 37: 
                    if (event.ctrlKey || event.metaKey) 
                        $.datepicker._adjustDate(event.target, (isRTL ? +1 : -1), 'D'); 
                    handled = event.ctrlKey || event.metaKey; 
                    if (event.originalEvent.altKey) 
                        $.datepicker._adjustDate(event.target, (event.ctrlKey ? -$.datepicker._get(inst, 'stepBigMonths') : -$.datepicker._get(inst, 'stepMonths')), 'M'); 
                    break; 
                case 38: 
                    if (event.ctrlKey || event.metaKey) 
                        $.datepicker._adjustDate(event.target, -7, 'D'); 
                    handled = event.ctrlKey || event.metaKey; 
                    break; 
                case 39: 
                    if (event.ctrlKey || event.metaKey) 
                        $.datepicker._adjustDate(event.target, (isRTL ? -1 : +1), 'D'); 
                    handled = event.ctrlKey || event.metaKey; 
                    if (event.originalEvent.altKey) 
                        $.datepicker._adjustDate(event.target, (event.ctrlKey ? +$.datepicker._get(inst, 'stepBigMonths') : +$.datepicker._get(inst, 'stepMonths')), 'M'); 
                    break; 
                case 40: 
                    if (event.ctrlKey || event.metaKey) 
                        $.datepicker._adjustDate(event.target, +7, 'D'); 
                    handled = event.ctrlKey || event.metaKey; 
                    break; 
                default: 
                    handled = false; 
                } 
            else if (event.keyCode == 36 && event.ctrlKey) 
                $.datepicker._showDatepicker(this); 
            else { 
                handled = false; 
            } 
            if (handled) { 
                event.preventDefault(); 
                event.stopPropagation(); 
            } 
        }, 
        _doKeyPress: function(event) { 
            var inst = $.datepicker._getInst(event.target); 
            if ($.datepicker._get(inst, 'constrainInput')) { 
                var chars = $.datepicker._possibleChars($.datepicker._get(inst, 'dateFormat')); 
                var chr = String.fromCharCode(event.charCode == undefined ? event.keyCode : event.charCode); 
                return event.ctrlKey || event.metaKey || (chr < ' ' || !chars || chars.indexOf(chr) > -1); 
            } 
        }, 
        _doKeyUp: function(event) { 
            var inst = $.datepicker._getInst(event.target); 
            if (inst.input.val() != inst.lastVal) { 
                try { 
                    var date = $.datepicker.parseDate($.datepicker._get(inst, 'dateFormat'), (inst.input ? inst.input.val() : null), $.datepicker._getFormatConfig(inst)); 
                    if (date) { 
                        $.datepicker._setDateFromField(inst); 
                        $.datepicker._updateAlternate(inst); 
                        $.datepicker._updateDatepicker(inst); 
                    } 
                } catch (err) { 
                    $.datepicker.log(err); 
                } 
            } 
            return true; 
        }, 
        _showDatepicker: function(input) { 
            input = input.target || input; 
            if (input.nodeName.toLowerCase() != 'input') 
                input = $('input', input.parentNode)[0]; 
            if ($.datepicker._isDisabledDatepicker(input) || $.datepicker._lastInput == input) 
                return; 
            var inst = $.datepicker._getInst(input); 
            if ($.datepicker._curInst && $.datepicker._curInst != inst) { 
                $.datepicker._curInst.dpDiv.stop(true, true); 
                if (inst && $.datepicker._datepickerShowing) { 
                    $.datepicker._hideDatepicker($.datepicker._curInst.input[0]); 
                } 
            } 
            var beforeShow = $.datepicker._get(inst, 'beforeShow'); 
            var beforeShowSettings = beforeShow ? beforeShow.apply(input, [input, inst]) : {}; 
            if (beforeShowSettings === false) { 
                return; 
            } 
            extendRemove(inst.settings, beforeShowSettings); 
            inst.lastVal = null; 
            $.datepicker._lastInput = input; 
            $.datepicker._setDateFromField(inst); 
            if ($.datepicker._inDialog) 
                input.value = ''; 
            if (!$.datepicker._pos) { 
                $.datepicker._pos = $.datepicker._findPos(input); 
                $.datepicker._pos[1] += input.offsetHeight; 
            } 
            var isFixed = false; 
            $(input).parents().each(function() { 
                isFixed |= $(this).css('position') == 'fixed'; 
                return !isFixed; 
            }); 
            var offset = { 
                left: $.datepicker._pos[0], 
                top: $.datepicker._pos[1] 
            }; 
            $.datepicker._pos = null; 
            inst.dpDiv.empty(); 
            inst.dpDiv.css({ 
                position: 'absolute', 
                display: 'block', 
                top: '-1000px' 
            }); 
            $.datepicker._updateDatepicker(inst); 
            offset = $.datepicker._checkOffset(inst, offset, isFixed); 
            inst.dpDiv.css({ 
                position: ($.datepicker._inDialog && $.blockUI ? 'static' : (isFixed ? 'fixed' : 'absolute')), 
                display: 'none', 
                left: offset.left + 'px', 
                top: offset.top + 'px' 
            }); 
            if (!inst.inline) { 
                var showAnim = $.datepicker._get(inst, 'showAnim'); 
                var duration = $.datepicker._get(inst, 'duration'); 
                var postProcess = function() { 
                    var cover = inst.dpDiv.find('iframe.ui-datepicker-cover'); 
                    if (!!cover.length) { 
                        var borders = $.datepicker._getBorders(inst.dpDiv); 
                        cover.css({ 
                            left: -borders[0], 
                            top: -borders[1], 
                            width: inst.dpDiv.outerWidth(), 
                            height: inst.dpDiv.outerHeight() 
                        }); 
                    } 
                }; 
                inst.dpDiv.zIndex($(input).zIndex() + 1); 
                $.datepicker._datepickerShowing = true; 
                if ($.effects && ($.effects.effect[showAnim] || $.effects[showAnim])) 
                    inst.dpDiv.show(showAnim, $.datepicker._get(inst, 'showOptions'), duration, postProcess); 
                else 
                    inst.dpDiv[showAnim || 'show']((showAnim ? duration : null), postProcess); 
                if (!showAnim || !duration) 
                    postProcess(); 
                if (inst.input.is(':visible') && !inst.input.is(':disabled')) 
                    inst.input.focus(); 
                $.datepicker._curInst = inst; 
            } 
        }, 
        _updateDatepicker: function(inst) { 
            this.maxRows = 4; 
            var borders = $.datepicker._getBorders(inst.dpDiv); 
            instActive = inst; 
            inst.dpDiv.empty().append(this._generateHTML(inst)); 
            this._attachHandlers(inst); 
            var cover = inst.dpDiv.find('iframe.ui-datepicker-cover'); 
            if (!!cover.length) { 
                cover.css({ 
                    left: -borders[0], 
                    top: -borders[1], 
                    width: inst.dpDiv.outerWidth(), 
                    height: inst.dpDiv.outerHeight() 
                }) 
            } 
            inst.dpDiv.find('.' + this._dayOverClass + ' a').mouseover(); 
            var numMonths = this._getNumberOfMonths(inst); 
            var cols = numMonths[1]; 
            var width = 17; 
            inst.dpDiv.removeClass('ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4').width(''); 
            if (cols > 1) 
                inst.dpDiv.addClass('ui-datepicker-multi-' + cols).css('width', (width * cols) + 'em'); 
            inst.dpDiv[(numMonths[0] != 1 || numMonths[1] != 1 ? 'add' : 'remove') + 'Class']('ui-datepicker-multi'); 
            inst.dpDiv[(this._get(inst, 'isRTL') ? 'add' : 'remove') + 'Class']('ui-datepicker-rtl'); 
            if (inst == $.datepicker._curInst && $.datepicker._datepickerShowing && inst.input && inst.input.is(':visible') && !inst.input.is(':disabled') && inst.input[0] != document.activeElement) 
                inst.input.focus(); 
            if (inst.yearshtml) { 
                var origyearshtml = inst.yearshtml; 
                setTimeout(function() { 
                    if (origyearshtml === inst.yearshtml && inst.yearshtml) { 
                        inst.dpDiv.find('select.ui-datepicker-year:first').replaceWith(inst.yearshtml); 
                    } 
                    origyearshtml = inst.yearshtml = null; 
                }, 0); 
            } 
        }, 
        _getBorders: function(elem) { 
            var convert = function(value) { 
                return { 
                    thin: 1, 
                    medium: 2, 
                    thick: 3 
                }[value] || value; 
            }; 
            return [parseFloat(convert(elem.css('border-left-width'))), parseFloat(convert(elem.css('border-top-width')))]; 
        }, 
        _checkOffset: function(inst, offset, isFixed) { 
            var dpWidth = inst.dpDiv.outerWidth(); 
            var dpHeight = inst.dpDiv.outerHeight(); 
            var inputWidth = inst.input ? inst.input.outerWidth() : 0; 
            var inputHeight = inst.input ? inst.input.outerHeight() : 0; 
            var viewWidth = document.documentElement.clientWidth + (isFixed ? 0 : $(document).scrollLeft()); 
            var viewHeight = document.documentElement.clientHeight + (isFixed ? 0 : $(document).scrollTop()); 
            offset.left -= (this._get(inst, 'isRTL') ? (dpWidth - inputWidth) : 0); 
            offset.left -= (isFixed && offset.left == inst.input.offset().left) ? $(document).scrollLeft() : 0; 
            offset.top -= (isFixed && offset.top == (inst.input.offset().top + inputHeight)) ? $(document).scrollTop() : 0; 
            offset.left -= Math.min(offset.left, (offset.left + dpWidth > viewWidth && viewWidth > dpWidth) ? Math.abs(offset.left + dpWidth - viewWidth) : 0); 
            offset.top -= Math.min(offset.top, (offset.top + dpHeight > viewHeight && viewHeight > dpHeight) ? Math.abs(dpHeight + inputHeight) : 0); 
            return offset; 
        }, 
        _findPos: function(obj) { 
            var inst = this._getInst(obj); 
            var isRTL = this._get(inst, 'isRTL'); 
            while (obj && (obj.type == 'hidden' || obj.nodeType != 1 || $.expr.filters.hidden(obj))) { 
                obj = obj[isRTL ? 'previousSibling' : 'nextSibling']; 
            } 
            var position = $(obj).offset(); 
            return [position.left, position.top]; 
        }, 
        _hideDatepicker: function(input) { 
            var inst = this._curInst; 
            if (!inst || (input && inst != $.data(input, PROP_NAME))) 
                return; 
            if (this._datepickerShowing) { 
                var showAnim = this._get(inst, 'showAnim'); 
                var duration = this._get(inst, 'duration'); 
                var postProcess = function() { 
                    $.datepicker._tidyDialog(inst); 
                }; 
                if ($.effects && ($.effects.effect[showAnim] || $.effects[showAnim])) 
                    inst.dpDiv.hide(showAnim, $.datepicker._get(inst, 'showOptions'), duration, postProcess); 
                else 
                    inst.dpDiv[(showAnim == 'slideDown' ? 'slideUp' : (showAnim == 'fadeIn' ? 'fadeOut' : 'hide'))]((showAnim ? duration : null), postProcess); 
                if (!showAnim) 
                    postProcess(); 
                this._datepickerShowing = false; 
                var onClose = this._get(inst, 'onClose'); 
                if (onClose) 
                    onClose.apply((inst.input ? inst.input[0] : null), [(inst.input ? inst.input.val() : ''), inst]); 
                this._lastInput = null; 
                if (this._inDialog) { 
                    this._dialogInput.css({ 
                        position: 'absolute', 
                        left: '0', 
                        top: '-100px' 
                    }); 
                    if ($.blockUI) { 
                        $.unblockUI(); 
                        $('body').append(this.dpDiv); 
                    } 
                } 
                this._inDialog = false; 
            } 
        }, 
        _tidyDialog: function(inst) { 
            inst.dpDiv.removeClass(this._dialogClass).unbind('.ui-datepicker-calendar'); 
        }, 
        _checkExternalClick: function(event) { 
            if (!$.datepicker._curInst) 
                return; 
            var $target = $(event.target) 
              , inst = $.datepicker._getInst($target[0]); 
            if ((($target[0].id != $.datepicker._mainDivId && $target.parents('#' + $.datepicker._mainDivId).length == 0 && !$target.hasClass($.datepicker.markerClassName) && !$target.closest("." + $.datepicker._triggerClass).length && $.datepicker._datepickerShowing && !($.datepicker._inDialog && $.blockUI))) || ($target.hasClass($.datepicker.markerClassName) && $.datepicker._curInst != inst)) 
                $.datepicker._hideDatepicker(); 
        }, 
        _adjustDate: function(id, offset, period) { 
            var target = $(id); 
            var inst = this._getInst(target[0]); 
            if (this._isDisabledDatepicker(target[0])) { 
                return; 
            } 
            this._adjustInstDate(inst, offset + (period == 'M' ? this._get(inst, 'showCurrentAtPos') : 0), period); 
            this._updateDatepicker(inst); 
        }, 
        _gotoToday: function(id) { 
            var target = $(id); 
            var inst = this._getInst(target[0]); 
            if (this._get(inst, 'gotoCurrent') && inst.currentDay) { 
                inst.selectedDay = inst.currentDay; 
                inst.drawMonth = inst.selectedMonth = inst.currentMonth; 
                inst.drawYear = inst.selectedYear = inst.currentYear; 
            } else { 
                var date = new Date(); 
                inst.selectedDay = date.getDate(); 
                inst.drawMonth = inst.selectedMonth = date.getMonth(); 
                inst.drawYear = inst.selectedYear = date.getFullYear(); 
            } 
            this._notifyChange(inst); 
            this._adjustDate(target); 
        }, 
        _selectMonthYear: function(id, select, period) { 
            var target = $(id); 
            var inst = this._getInst(target[0]); 
            inst['selected' + (period == 'M' ? 'Month' : 'Year')] = inst['draw' + (period == 'M' ? 'Month' : 'Year')] = parseInt(select.options[select.selectedIndex].value, 10); 
            this._notifyChange(inst); 
            this._adjustDate(target); 
        }, 
        _selectDay: function(id, month, year, td) { 
            var target = $(id); 
            if ($(td).hasClass(this._unselectableClass) || this._isDisabledDatepicker(target[0])) { 
                return; 
            } 
            var inst = this._getInst(target[0]); 
            inst.selectedDay = inst.currentDay = $('a', td).html(); 
            inst.selectedMonth = inst.currentMonth = month; 
            inst.selectedYear = inst.currentYear = year; 
            this._selectDate(id, this._formatDate(inst, inst.currentDay, inst.currentMonth, inst.currentYear)); 
        }, 
        _clearDate: function(id) { 
            var target = $(id); 
            var inst = this._getInst(target[0]); 
            this._selectDate(target, ''); 
        }, 
        _selectDate: function(id, dateStr) { 
            var target = $(id); 
            var inst = this._getInst(target[0]); 
            dateStr = (dateStr != null ? dateStr : this._formatDate(inst)); 
            if (inst.input) 
                inst.input.val(dateStr); 
            this._updateAlternate(inst); 
            var onSelect = this._get(inst, 'onSelect'); 
            if (onSelect) 
                onSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]); 
            else if (inst.input) 
                inst.input.trigger('change'); 
            if (inst.inline) 
                this._updateDatepicker(inst); 
            else { 
                this._hideDatepicker(); 
                this._lastInput = inst.input[0]; 
                if (typeof (inst.input[0]) != 'object') 
                    inst.input.focus(); 
                this._lastInput = null; 
            } 
        }, 
        _updateAlternate: function(inst) { 
            var altField = this._get(inst, 'altField'); 
            if (altField) { 
                var altFormat = this._get(inst, 'altFormat') || this._get(inst, 'dateFormat'); 
                var date = this._getDate(inst); 
                var dateStr = this.formatDate(altFormat, date, this._getFormatConfig(inst)); 
                $(altField).each(function() { 
                    $(this).val(dateStr); 
                }); 
            } 
        }, 
        noWeekends: function(date) { 
            var day = date.getDay(); 
            return [(day > 0 && day < 6), '']; 
        }, 
        iso8601Week: function(date) { 
            var checkDate = new Date(date.getTime()); 
            checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7)); 
            var time = checkDate.getTime(); 
            checkDate.setMonth(0); 
            checkDate.setDate(1); 
            return Math.floor(Math.round((time - checkDate) / 86400000) / 7) + 1; 
        }, 
        parseDate: function(format, value, settings) { 
            if (format == null || value == null) 
                throw 'Invalid arguments'; 
            value = (typeof value == 'object' ? value.toString() : value + ''); 
            if (value == '') 
                return null; 
            var shortYearCutoff = (settings ? settings.shortYearCutoff : null) || this._defaults.shortYearCutoff; 
            shortYearCutoff = (typeof shortYearCutoff != 'string' ? shortYearCutoff : new Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10)); 
            var dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort; 
            var dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames; 
            var monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort; 
            var monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames; 
            var year = -1; 
            var month = -1; 
            var day = -1; 
            var doy = -1; 
            var literal = false; 
            var lookAhead = function(match) { 
                var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) == match); 
                if (matches) 
                    iFormat++; 
                return matches; 
            }; 
            var getNumber = function(match) { 
                var isDoubled = lookAhead(match); 
                var size = (match == '@' ? 14 : (match == '!' ? 20 : (match == 'y' && isDoubled ? 4 : (match == 'o' ? 3 : 2)))); 
                var digits = new RegExp('^\d{1,' + size + '}'); 
                var num = value.substring(iValue).match(digits); 
                if (!num) 
                    throw 'Missing number at position ' + iValue; 
                iValue += num[0].length; 
                return parseInt(num[0], 10); 
            }; 
            var getName = function(match, shortNames, longNames) { 
                var names = $.map(lookAhead(match) ? longNames : shortNames, function(v, k) { 
                    return [[k, v]]; 
                }).sort(function(a, b) { 
                    return -(a[1].length - b[1].length); 
                }); 
                var index = -1; 
                $.each(names, function(i, pair) { 
                    var name = pair[1]; 
                    if (value.substr(iValue, name.length).toLowerCase() == name.toLowerCase()) { 
                        index = pair[0]; 
                        iValue += name.length; 
                        return false; 
                    } 
                }); 
                if (index != -1) 
                    return index + 1; 
                else 
                    throw 'Unknown name at position ' + iValue; 
            }; 
            var checkLiteral = function() { 
                if (value.charAt(iValue) != format.charAt(iFormat)) 
                    throw 'Unexpected literal at position ' + iValue; 
                iValue++; 
            }; 
            var iValue = 0; 
            for (var iFormat = 0; iFormat < format.length; iFormat++) { 
                if (literal) 
                    if (format.charAt(iFormat) == "'" && !lookAhead("'")) 
                        literal = false; 
                    else 
                        checkLiteral(); 
                else 
                    switch (format.charAt(iFormat)) { 
                    case 'd': 
                        day = getNumber('d'); 
                        break; 
                    case 'D': 
                        getName('D', dayNamesShort, dayNames); 
                        break; 
                    case 'o': 
                        doy = getNumber('o'); 
                        break; 
                    case 'm': 
                        month = getNumber('m'); 
                        break; 
                    case 'M': 
                        month = getName('M', monthNamesShort, monthNames); 
                        break; 
                    case 'y': 
                        year = getNumber('y'); 
                        break; 
                    case '@': 
                        var date = new Date(getNumber('@')); 
                        year = date.getFullYear(); 
                        month = date.getMonth() + 1; 
                        day = date.getDate(); 
                        break; 
                    case '!': 
                        var date = new Date((getNumber('!') - this._ticksTo1970) / 10000); 
                        year = date.getFullYear(); 
                        month = date.getMonth() + 1; 
                        day = date.getDate(); 
                        break; 
                    case "'": 
                        if (lookAhead("'")) 
                            checkLiteral(); 
                        else 
                            literal = true; 
                        break; 
                    default: 
                        checkLiteral(); 
                    } 
            } 
            if (iValue < value.length) { 
                var extra = value.substr(iValue); 
                if (!/^\s+/.test(extra)) { 
                    throw "Extra/unparsed characters found in date: " + extra; 
                } 
            } 
            if (year == -1) 
                year = new Date().getFullYear(); 
            else if (year < 100) 
                year += new Date().getFullYear() - new Date().getFullYear() % 100 + (year <= shortYearCutoff ? 0 : -100); 
            if (doy > -1) { 
                month = 1; 
                day = doy; 
                do { 
                    var dim = this._getDaysInMonth(year, month - 1); 
                    if (day <= dim) 
                        break; 
                    month++; 
                    day -= dim; 
                } while (true); 
            } 
            var date = this._daylightSavingAdjust(new Date(year,month - 1,day)); 
            if (date.getFullYear() != year || date.getMonth() + 1 != month || date.getDate() != day) 
                throw 'Invalid date'; 
            return date; 
        }, 
        ATOM: 'yy-mm-dd', 
        COOKIE: 'D, dd M yy', 
        ISO_8601: 'yy-mm-dd', 
        RFC_822: 'D, d M y', 
        RFC_850: 'DD, dd-M-y', 
        RFC_1036: 'D, d M y', 
        RFC_1123: 'D, d M yy', 
        RFC_2822: 'D, d M yy', 
        RSS: 'D, d M y', 
        TICKS: '!', 
        TIMESTAMP: '@', 
        W3C: 'yy-mm-dd', 
        _ticksTo1970: (((1970 - 1) * 365 + Math.floor(1970 / 4) - Math.floor(1970 / 100) + Math.floor(1970 / 400)) * 24 * 60 * 60 * 10000000), 
        formatDate: function(format, date, settings) { 
            if (!date) 
                return ''; 
            var dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort; 
            var dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames; 
            var monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort; 
            var monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames; 
            var lookAhead = function(match) { 
                var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) == match); 
                if (matches) 
                    iFormat++; 
                return matches; 
            }; 
            var formatNumber = function(match, value, len) { 
                var num = '' + value; 
                if (lookAhead(match)) 
                    while (num.length < len) 
                        num = '0' + num; 
                return num; 
            }; 
            var formatName = function(match, value, shortNames, longNames) { 
                return (lookAhead(match) ? longNames[value] : shortNames[value]); 
            }; 
            var output = ''; 
            var literal = false; 
            if (date) 
                for (var iFormat = 0; iFormat < format.length; iFormat++) { 
                    if (literal) 
                        if (format.charAt(iFormat) == "'" && !lookAhead("'")) 
                            literal = false; 
                        else 
                            output += format.charAt(iFormat); 
                    else 
                        switch (format.charAt(iFormat)) { 
                        case 'd': 
                            output += formatNumber('d', date.getDate(), 2); 
                            break; 
                        case 'D': 
                            output += formatName('D', date.getDay(), dayNamesShort, dayNames); 
                            break; 
                        case 'o': 
                            output += formatNumber('o', Math.round((new Date(date.getFullYear(),date.getMonth(),date.getDate()).getTime() - new Date(date.getFullYear(),0,0).getTime()) / 86400000), 3); 
                            break; 
                        case 'm': 
                            output += formatNumber('m', date.getMonth() + 1, 2); 
                            break; 
                        case 'M': 
                            output += formatName('M', date.getMonth(), monthNamesShort, monthNames); 
                            break; 
                        case 'y': 
                            output += (lookAhead('y') ? date.getFullYear() : (date.getYear() % 100 < 10 ? '0' : '') + date.getYear() % 100); 
                            break; 
                        case '@': 
                            output += date.getTime(); 
                            break; 
                        case '!': 
                            output += date.getTime() * 10000 + this._ticksTo1970; 
                            break; 
                        case "'": 
                            if (lookAhead("'")) 
                                output += "'"; 
                            else 
                                literal = true; 
                            break; 
                        default: 
                            output += format.charAt(iFormat); 
                        } 
                } 
            return output; 
        }, 
        _possibleChars: function(format) { 
            var chars = ''; 
            var literal = false; 
            var lookAhead = function(match) { 
                var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) == match); 
                if (matches) 
                    iFormat++; 
                return matches; 
            }; 
            for (var iFormat = 0; iFormat < format.length; iFormat++) 
                if (literal) 
                    if (format.charAt(iFormat) == "'" && !lookAhead("'")) 
                        literal = false; 
                    else 
                        chars += format.charAt(iFormat); 
                else 
                    switch (format.charAt(iFormat)) { 
                    case 'd': 
                    case 'm': 
                    case 'y': 
                    case '@': 
                        chars += '0123456789'; 
                        break; 
                    case 'D': 
                    case 'M': 
                        return null; 
                    case "'": 
                        if (lookAhead("'")) 
                            chars += "'"; 
                        else 
                            literal = true; 
                        break; 
                    default: 
                        chars += format.charAt(iFormat); 
                    } 
            return chars; 
        }, 
        _get: function(inst, name) { 
            return inst.settings[name] !== undefined ? inst.settings[name] : this._defaults[name]; 
        }, 
        _setDateFromField: function(inst, noDefault) { 
            if (inst.input.val() == inst.lastVal) { 
                return; 
            } 
            var dateFormat = this._get(inst, 'dateFormat'); 
            var dates = inst.lastVal = inst.input ? inst.input.val() : null; 
            var date, defaultDate; 
            date = defaultDate = this._getDefaultDate(inst); 
            var settings = this._getFormatConfig(inst); 
            try { 
                date = this.parseDate(dateFormat, dates, settings) || defaultDate; 
            } catch (event) { 
                this.log(event); 
                dates = (noDefault ? '' : dates); 
            } 
            inst.selectedDay = date.getDate(); 
            inst.drawMonth = inst.selectedMonth = date.getMonth(); 
            inst.drawYear = inst.selectedYear = date.getFullYear(); 
            inst.currentDay = (dates ? date.getDate() : 0); 
            inst.currentMonth = (dates ? date.getMonth() : 0); 
            inst.currentYear = (dates ? date.getFullYear() : 0); 
            this._adjustInstDate(inst); 
        }, 
        _getDefaultDate: function(inst) { 
            return this._restrictMinMax(inst, this._determineDate(inst, this._get(inst, 'defaultDate'), new Date())); 
        }, 
        _determineDate: function(inst, date, defaultDate) { 
            var offsetNumeric = function(offset) { 
                var date = new Date(); 
                date.setDate(date.getDate() + offset); 
                return date; 
            }; 
            var offsetString = function(offset) { 
                try { 
                    return $.datepicker.parseDate($.datepicker._get(inst, 'dateFormat'), offset, $.datepicker._getFormatConfig(inst)); 
                } catch (e) {} 
                var date = (offset.toLowerCase().match(/^c/) ? $.datepicker._getDate(inst) : null) || new Date(); 
                var year = date.getFullYear(); 
                var month = date.getMonth(); 
                var day = date.getDate(); 
                var pattern = /([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g; 
                var matches = pattern.exec(offset); 
                while (matches) { 
                    switch (matches[2] || 'd') { 
                    case 'd': 
                    case 'D': 
                        day += parseInt(matches[1], 10); 
                        break; 
                    case 'w': 
                    case 'W': 
                        day += parseInt(matches[1], 10) * 7; 
                        break; 
                    case 'm': 
                    case 'M': 
                        month += parseInt(matches[1], 10); 
                        day = Math.min(day, $.datepicker._getDaysInMonth(year, month)); 
                        break; 
                    case 'y': 
                    case 'Y': 
                        year += parseInt(matches[1], 10); 
                        day = Math.min(day, $.datepicker._getDaysInMonth(year, month)); 
                        break; 
                    } 
                    matches = pattern.exec(offset); 
                } 
                return new Date(year,month,day); 
            }; 
            var newDate = (date == null || date === '' ? defaultDate : (typeof date == 'string' ? offsetString(date) : (typeof date == 'number' ? (isNaN(date) ? defaultDate : offsetNumeric(date)) : new Date(date.getTime())))); 
            newDate = (newDate && newDate.toString() == 'Invalid Date' ? defaultDate : newDate); 
            if (newDate) { 
                newDate.setHours(0); 
                newDate.setMinutes(0); 
                newDate.setSeconds(0); 
                newDate.setMilliseconds(0); 
            } 
            return this._daylightSavingAdjust(newDate); 
        }, 
        _daylightSavingAdjust: function(date) { 
            if (!date) 
                return null; 
            date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0); 
            return date; 
        }, 
        _setDate: function(inst, date, noChange) { 
            var clear = !date; 
            var origMonth = inst.selectedMonth; 
            var origYear = inst.selectedYear; 
            var newDate = this._restrictMinMax(inst, this._determineDate(inst, date, new Date())); 
            inst.selectedDay = inst.currentDay = newDate.getDate(); 
            inst.drawMonth = inst.selectedMonth = inst.currentMonth = newDate.getMonth(); 
            inst.drawYear = inst.selectedYear = inst.currentYear = newDate.getFullYear(); 
            if ((origMonth != inst.selectedMonth || origYear != inst.selectedYear) && !noChange) 
                this._notifyChange(inst); 
            this._adjustInstDate(inst); 
            if (inst.input) { 
                inst.input.val(clear ? '' : this._formatDate(inst)); 
            } 
        }, 
        _getDate: function(inst) { 
            var startDate = (!inst.currentYear || (inst.input && inst.input.val() == '') ? null : this._daylightSavingAdjust(new Date(inst.currentYear,inst.currentMonth,inst.currentDay))); 
            return startDate; 
        }, 
        _attachHandlers: function(inst) { 
            var stepMonths = this._get(inst, 'stepMonths'); 
            var id = '#' + inst.id.replace(/\\/g, "\"); 
            inst.dpDiv.find('[data-handler]').map(function() { 
                var handler = { 
                    prev: function() { 
                        window['DP_jQuery_' + dpuuid].datepicker._adjustDate(id, -stepMonths, 'M'); 
                    }, 
                    next: function() { 
                        window['DP_jQuery_' + dpuuid].datepicker._adjustDate(id, +stepMonths, 'M'); 
                    }, 
                    hide: function() { 
                        window['DP_jQuery_' + dpuuid].datepicker._hideDatepicker(); 
                    }, 
                    today: function() { 
                        window['DP_jQuery_' + dpuuid].datepicker._gotoToday(id); 
                    }, 
                    selectDay: function() { 
                        window['DP_jQuery_' + dpuuid].datepicker._selectDay(id, +this.getAttribute('data-month'), +this.getAttribute('data-year'), this); 
                        return false; 
                    }, 
                    selectMonth: function() { 
                        window['DP_jQuery_' + dpuuid].datepicker._selectMonthYear(id, this, 'M'); 
                        return false; 
                    }, 
                    selectYear: function() { 
                        window['DP_jQuery_' + dpuuid].datepicker._selectMonthYear(id, this, 'Y'); 
                        return false; 
                    } 
                }; 
                $(this).bind(this.getAttribute('data-event'), handler[this.getAttribute('data-handler')]); 
            }); 
        }, 
        _generateHTML: function(inst) { 
            var today = new Date(); 
            today = this._daylightSavingAdjust(new Date(today.getFullYear(),today.getMonth(),today.getDate())); 
            var isRTL = this._get(inst, 'isRTL'); 
            var showButtonPanel = this._get(inst, 'showButtonPanel'); 
            var hideIfNoPrevNext = this._get(inst, 'hideIfNoPrevNext'); 
            var navigationAsDateFormat = this._get(inst, 'navigationAsDateFormat'); 
            var numMonths = this._getNumberOfMonths(inst); 
            var showCurrentAtPos = this._get(inst, 'showCurrentAtPos'); 
            var stepMonths = this._get(inst, 'stepMonths'); 
            var isMultiMonth = (numMonths[0] != 1 || numMonths[1] != 1); 
            var currentDate = this._daylightSavingAdjust((!inst.currentDay ? new Date(9999,9,9) : new Date(inst.currentYear,inst.currentMonth,inst.currentDay))); 
            var minDate = this._getMinMaxDate(inst, 'min'); 
            var maxDate = this._getMinMaxDate(inst, 'max'); 
            var drawMonth = inst.drawMonth - showCurrentAtPos; 
            var drawYear = inst.drawYear; 
            if (drawMonth < 0) { 
                drawMonth += 12; 
                drawYear--; 
            } 
            if (maxDate) { 
                var maxDraw = this._daylightSavingAdjust(new Date(maxDate.getFullYear(),maxDate.getMonth() - (numMonths[0] * numMonths[1]) + 1,maxDate.getDate())); 
                maxDraw = (minDate && maxDraw < minDate ? minDate : maxDraw); 
                while (this._daylightSavingAdjust(new Date(drawYear,drawMonth,1)) > maxDraw) { 
                    drawMonth--; 
                    if (drawMonth < 0) { 
                        drawMonth = 11; 
                        drawYear--; 
                    } 
                } 
            } 
            inst.drawMonth = drawMonth; 
            inst.drawYear = drawYear; 
            var prevText = this._get(inst, 'prevText'); 
            prevText = (!navigationAsDateFormat ? prevText : this.formatDate(prevText, this._daylightSavingAdjust(new Date(drawYear,drawMonth - stepMonths,1)), this._getFormatConfig(inst))); 
            var prev = (this._canAdjustMonth(inst, -1, drawYear, drawMonth) ? '<a class="ui-datepicker-prev ui-corner-all" data-handler="prev" data-event="click"' + ' title="' + prevText + '"><span class="ui-icon ui-icon-circle-triangle-' + (isRTL ? 'e' : 'w') + '">' + prevText + '</span></a>' : (hideIfNoPrevNext ? '' : '<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="' + prevText + '"><span class="ui-icon ui-icon-circle-triangle-' + (isRTL ? 'e' : 'w') + '">' + prevText + '</span></a>')); 
            var nextText = this._get(inst, 'nextText'); 
            nextText = (!navigationAsDateFormat ? nextText : this.formatDate(nextText, this._daylightSavingAdjust(new Date(drawYear,drawMonth + stepMonths,1)), this._getFormatConfig(inst))); 
            var next = (this._canAdjustMonth(inst, +1, drawYear, drawMonth) ? '<a class="ui-datepicker-next ui-corner-all" data-handler="next" data-event="click"' + ' title="' + nextText + '"><span class="ui-icon ui-icon-circle-triangle-' + (isRTL ? 'w' : 'e') + '">' + nextText + '</span></a>' : (hideIfNoPrevNext ? '' : '<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="' + nextText + '"><span class="ui-icon ui-icon-circle-triangle-' + (isRTL ? 'w' : 'e') + '">' + nextText + '</span></a>')); 
            var currentText = this._get(inst, 'currentText'); 
            var gotoDate = (this._get(inst, 'gotoCurrent') && inst.currentDay ? currentDate : today); 
            currentText = (!navigationAsDateFormat ? currentText : this.formatDate(currentText, gotoDate, this._getFormatConfig(inst))); 
            var controls = (!inst.inline ? '<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" data-handler="hide" data-event="click">' + this._get(inst, 'closeText') + '</button>' : ''); 
            var buttonPanel = (showButtonPanel) ? '<div class="ui-datepicker-buttonpane ui-widget-content">' + (isRTL ? controls : '') + (this._isInRange(inst, gotoDate) ? '<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" data-handler="today" data-event="click"' + '>' + currentText + '</button>' : '') + (isRTL ? '' : controls) + '</div>' : ''; 
            var firstDay = parseInt(this._get(inst, 'firstDay'), 10); 
            firstDay = (isNaN(firstDay) ? 0 : firstDay); 
            var showWeek = this._get(inst, 'showWeek'); 
            var dayNames = this._get(inst, 'dayNames'); 
            var dayNamesShort = this._get(inst, 'dayNamesShort'); 
            var dayNamesMin = this._get(inst, 'dayNamesMin'); 
            var monthNames = this._get(inst, 'monthNames'); 
            var monthNamesShort = this._get(inst, 'monthNamesShort'); 
            var beforeShowDay = this._get(inst, 'beforeShowDay'); 
            var showOtherMonths = this._get(inst, 'showOtherMonths'); 
            var selectOtherMonths = this._get(inst, 'selectOtherMonths'); 
            var calculateWeek = this._get(inst, 'calculateWeek') || this.iso8601Week; 
            var defaultDate = this._getDefaultDate(inst); 
            var html = ''; 
            for (var row = 0; row < numMonths[0]; row++) { 
                var group = ''; 
                this.maxRows = 4; 
                for (var col = 0; col < numMonths[1]; col++) { 
                    var selectedDate = this._daylightSavingAdjust(new Date(drawYear,drawMonth,inst.selectedDay)); 
                    var cornerClass = ' ui-corner-all'; 
                    var calender = ''; 
                    if (isMultiMonth) { 
                        calender += '<div class="ui-datepicker-group'; 
                        if (numMonths[1] > 1) 
                            switch (col) { 
                            case 0: 
                                calender += ' ui-datepicker-group-first'; 
                                cornerClass = ' ui-corner-' + (isRTL ? 'right' : 'left'); 
                                break; 
                            case numMonths[1] - 1: 
                                calender += ' ui-datepicker-group-last'; 
                                cornerClass = ' ui-corner-' + (isRTL ? 'left' : 'right'); 
                                break; 
                            default: 
                                calender += ' ui-datepicker-group-middle'; 
                                cornerClass = ''; 
                                break; 
                            } 
                        calender += '">'; 
                    } 
                    calender += '<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix' + cornerClass + '">' + (/all|left/.test(cornerClass) && row == 0 ? (isRTL ? next : prev) : '') + (/all|right/.test(cornerClass) && row == 0 ? (isRTL ? prev : next) : '') + this._generateMonthYearHeader(inst, drawMonth, drawYear, minDate, maxDate, row > 0 || col > 0, monthNames, monthNamesShort) + '</div><table class="ui-datepicker-calendar"><thead>' + '<tr>'; 
                    var thead = (showWeek ? '<th class="ui-datepicker-week-col">' + this._get(inst, 'weekHeader') + '</th>' : ''); 
                    for (var dow = 0; dow < 7; dow++) { 
                        var day = (dow + firstDay) % 7; 
                        thead += '<th' + ((dow + firstDay + 6) % 7 >= 5 ? ' class="ui-datepicker-week-end"' : '') + '>' + '<span title="' + dayNames[day] + '">' + dayNamesMin[day] + '</span></th>'; 
                    } 
                    calender += thead + '</tr></thead><tbody>'; 
                    var daysInMonth = this._getDaysInMonth(drawYear, drawMonth); 
                    if (drawYear == inst.selectedYear && drawMonth == inst.selectedMonth) 
                        inst.selectedDay = Math.min(inst.selectedDay, daysInMonth); 
                    var leadDays = (this._getFirstDayOfMonth(drawYear, drawMonth) - firstDay + 7) % 7; 
                    var curRows = Math.ceil((leadDays + daysInMonth) / 7); 
                    var numRows = (isMultiMonth ? this.maxRows > curRows ? this.maxRows : curRows : curRows); 
                    this.maxRows = numRows; 
                    var printDate = this._daylightSavingAdjust(new Date(drawYear,drawMonth,1 - leadDays)); 
                    for (var dRow = 0; dRow < numRows; dRow++) { 
                        calender += '<tr>'; 
                        var tbody = (!showWeek ? '' : '<td class="ui-datepicker-week-col">' + this._get(inst, 'calculateWeek')(printDate) + '</td>'); 
                        for (var dow = 0; dow < 7; dow++) { 
                            var daySettings = (beforeShowDay ? beforeShowDay.apply((inst.input ? inst.input[0] : null), [printDate]) : [true, '']); 
                            var otherMonth = (printDate.getMonth() != drawMonth); 
                            var unselectable = (otherMonth && !selectOtherMonths) || !daySettings[0] || (minDate && printDate < minDate) || (maxDate && printDate > maxDate); 
                            tbody += '<td class="' + ((dow + firstDay + 6) % 7 >= 5 ? ' ui-datepicker-week-end' : '') + (otherMonth ? ' ui-datepicker-other-month' : '') + ((printDate.getTime() == selectedDate.getTime() && drawMonth == inst.selectedMonth && inst._keyEvent) || (defaultDate.getTime() == printDate.getTime() && defaultDate.getTime() == selectedDate.getTime()) ? ' ' + this._dayOverClass : '') + (unselectable ? ' ' + this._unselectableClass + ' ui-state-disabled' : '') + (otherMonth && !showOtherMonths ? '' : ' ' + daySettings[1] + (printDate.getTime() == currentDate.getTime() ? ' ' + this._currentClass : '') + (printDate.getTime() == today.getTime() ? ' ui-datepicker-today' : '')) + '"' + ((!otherMonth || showOtherMonths) && daySettings[2] ? ' title="' + daySettings[2] + '"' : '') + (unselectable ? '' : ' data-handler="selectDay" data-event="click" data-month="' + printDate.getMonth() + '" data-year="' + printDate.getFullYear() + '"') + '>' + (otherMonth && !showOtherMonths ? '&#xa0;' : (unselectable ? '<span class="ui-state-default">' + printDate.getDate() + '</span>' : '<a class="ui-state-default' + (printDate.getTime() == today.getTime() ? ' ui-state-highlight' : '') + (printDate.getTime() == currentDate.getTime() ? ' ui-state-active' : '') + (otherMonth ? ' ui-priority-secondary' : '') + '" href="#">' + printDate.getDate() + '</a>')) + '</td>'; 
                            printDate.setDate(printDate.getDate() + 1); 
                            printDate = this._daylightSavingAdjust(printDate); 
                        } 
                        calender += tbody + '</tr>'; 
                    } 
                    drawMonth++; 
                    if (drawMonth > 11) { 
                        drawMonth = 0; 
                        drawYear++; 
                    } 
                    calender += '</tbody></table>' + (isMultiMonth ? '</div>' + ((numMonths[0] > 0 && col == numMonths[1] - 1) ? '<div class="ui-datepicker-row-break"></div>' : '') : ''); 
                    group += calender; 
                } 
                html += group; 
            } 
            html += buttonPanel + ($.ui.ie6 && !inst.inline ? '<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>' : ''); 
            inst._keyEvent = false; 
            return html; 
        }, 
        _generateMonthYearHeader: function(inst, drawMonth, drawYear, minDate, maxDate, secondary, monthNames, monthNamesShort) { 
            var changeMonth = this._get(inst, 'changeMonth'); 
            var changeYear = this._get(inst, 'changeYear'); 
            var showMonthAfterYear = this._get(inst, 'showMonthAfterYear'); 
            var html = '<div class="ui-datepicker-title">'; 
            var monthHtml = ''; 
            if (secondary || !changeMonth) 
                monthHtml += '<span class="ui-datepicker-month">' + monthNames[drawMonth] + '</span>'; 
            else { 
                var inMinYear = (minDate && minDate.getFullYear() == drawYear); 
                var inMaxYear = (maxDate && maxDate.getFullYear() == drawYear); 
                monthHtml += '<select class="ui-datepicker-month" data-handler="selectMonth" data-event="change">'; 
                for (var month = 0; month < 12; month++) { 
                    if ((!inMinYear || month >= minDate.getMonth()) && (!inMaxYear || month <= maxDate.getMonth())) 
                        monthHtml += '<option value="' + month + '"' + (month == drawMonth ? ' selected="selected"' : '') + '>' + monthNamesShort[month] + '</option>'; 
                } 
                monthHtml += '</select>'; 
            } 
            if (!showMonthAfterYear) 
                html += monthHtml + (secondary || !(changeMonth && changeYear) ? '&#xa0;' : ''); 
            if (!inst.yearshtml) { 
                inst.yearshtml = ''; 
                if (secondary || !changeYear) 
                    html += '<span class="ui-datepicker-year">' + drawYear + '</span>'; 
                else { 
                    var years = this._get(inst, 'yearRange').split(':'); 
                    var thisYear = new Date().getFullYear(); 
                    var determineYear = function(value) { 
                        var year = (value.match(/c[+-].*/) ? drawYear + parseInt(value.substring(1), 10) : (value.match(/[+-].*/) ? thisYear + parseInt(value, 10) : parseInt(value, 10))); 
                        return (isNaN(year) ? thisYear : year); 
                    }; 
                    var year = determineYear(years[0]); 
                    var endYear = Math.max(year, determineYear(years[1] || '')); 
                    year = (minDate ? Math.max(year, minDate.getFullYear()) : year); 
                    endYear = (maxDate ? Math.min(endYear, maxDate.getFullYear()) : endYear); 
                    inst.yearshtml += '<select class="ui-datepicker-year" data-handler="selectYear" data-event="change">'; 
                    for (; year <= endYear; year++) { 
                        inst.yearshtml += '<option value="' + year + '"' + (year == drawYear ? ' selected="selected"' : '') + '>' + year + '</option>'; 
                    } 
                    inst.yearshtml += '</select>'; 
                    html += inst.yearshtml; 
                    inst.yearshtml = null; 
                } 
            } 
            html += this._get(inst, 'yearSuffix'); 
            if (showMonthAfterYear) 
                html += (secondary || !(changeMonth && changeYear) ? '&#xa0;' : '') + monthHtml; 
            html += '</div>'; 
            return html; 
        }, 
        _adjustInstDate: function(inst, offset, period) { 
            var year = inst.drawYear + (period == 'Y' ? offset : 0); 
            var month = inst.drawMonth + (period == 'M' ? offset : 0); 
            var day = Math.min(inst.selectedDay, this._getDaysInMonth(year, month)) + (period == 'D' ? offset : 0); 
            var date = this._restrictMinMax(inst, this._daylightSavingAdjust(new Date(year,month,day))); 
            inst.selectedDay = date.getDate(); 
            inst.drawMonth = inst.selectedMonth = date.getMonth(); 
            inst.drawYear = inst.selectedYear = date.getFullYear(); 
            if (period == 'M' || period == 'Y') 
                this._notifyChange(inst); 
        }, 
        _restrictMinMax: function(inst, date) { 
            var minDate = this._getMinMaxDate(inst, 'min'); 
            var maxDate = this._getMinMaxDate(inst, 'max'); 
            var newDate = (minDate && date < minDate ? minDate : date); 
            newDate = (maxDate && newDate > maxDate ? maxDate : newDate); 
            return newDate; 
        }, 
        _notifyChange: function(inst) { 
            var onChange = this._get(inst, 'onChangeMonthYear'); 
            if (onChange) 
                onChange.apply((inst.input ? inst.input[0] : null), [inst.selectedYear, inst.selectedMonth + 1, inst]); 
        }, 
        _getNumberOfMonths: function(inst) { 
            var numMonths = this._get(inst, 'numberOfMonths'); 
            return (numMonths == null ? [1, 1] : (typeof numMonths == 'number' ? [1, numMonths] : numMonths)); 
        }, 
        _getMinMaxDate: function(inst, minMax) { 
            return this._determineDate(inst, this._get(inst, minMax + 'Date'), null); 
        }, 
        _getDaysInMonth: function(year, month) { 
            return 32 - this._daylightSavingAdjust(new Date(year,month,32)).getDate(); 
        }, 
        _getFirstDayOfMonth: function(year, month) { 
            return new Date(year,month,1).getDay(); 
        }, 
        _canAdjustMonth: function(inst, offset, curYear, curMonth) { 
            var numMonths = this._getNumberOfMonths(inst); 
            var date = this._daylightSavingAdjust(new Date(curYear,curMonth + (offset < 0 ? offset : numMonths[0] * numMonths[1]),1)); 
            if (offset < 0) 
                date.setDate(this._getDaysInMonth(date.getFullYear(), date.getMonth())); 
            return this._isInRange(inst, date); 
        }, 
        _isInRange: function(inst, date) { 
            var minDate = this._getMinMaxDate(inst, 'min'); 
            var maxDate = this._getMinMaxDate(inst, 'max'); 
            return ((!minDate || date.getTime() >= minDate.getTime()) && (!maxDate || date.getTime() <= maxDate.getTime())); 
        }, 
        _getFormatConfig: function(inst) { 
            var shortYearCutoff = this._get(inst, 'shortYearCutoff'); 
            shortYearCutoff = (typeof shortYearCutoff != 'string' ? shortYearCutoff : new Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10)); 
            return { 
                shortYearCutoff: shortYearCutoff, 
                dayNamesShort: this._get(inst, 'dayNamesShort'), 
                dayNames: this._get(inst, 'dayNames'), 
                monthNamesShort: this._get(inst, 'monthNamesShort'), 
                monthNames: this._get(inst, 'monthNames') 
            }; 
        }, 
        _formatDate: function(inst, day, month, year) { 
            if (!day) { 
                inst.currentDay = inst.selectedDay; 
                inst.currentMonth = inst.selectedMonth; 
                inst.currentYear = inst.selectedYear; 
            } 
            var date = (day ? (typeof day == 'object' ? day : this._daylightSavingAdjust(new Date(year,month,day))) : this._daylightSavingAdjust(new Date(inst.currentYear,inst.currentMonth,inst.currentDay))); 
            return this.formatDate(this._get(inst, 'dateFormat'), date, this._getFormatConfig(inst)); 
        } 
    }); 
    function bindHover(dpDiv) { 
        var selector = 'button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a'; 
        return dpDiv.delegate(selector, 'mouseout', function() { 
            $(this).removeClass('ui-state-hover'); 
            if (this.className.indexOf('ui-datepicker-prev') != -1) 
                $(this).removeClass('ui-datepicker-prev-hover'); 
            if (this.className.indexOf('ui-datepicker-next') != -1) 
                $(this).removeClass('ui-datepicker-next-hover'); 
        }).delegate(selector, 'mouseover', function() { 
            if (!$.datepicker._isDisabledDatepicker(instActive.inline ? dpDiv.parent()[0] : instActive.input[0])) { 
                $(this).parents('.ui-datepicker-calendar').find('a').removeClass('ui-state-hover'); 
                $(this).addClass('ui-state-hover'); 
                if (this.className.indexOf('ui-datepicker-prev') != -1) 
                    $(this).addClass('ui-datepicker-prev-hover'); 
                if (this.className.indexOf('ui-datepicker-next') != -1) 
                    $(this).addClass('ui-datepicker-next-hover'); 
            } 
        }); 
    } 
    function extendRemove(target, props) { 
        $.extend(target, props); 
        for (var name in props) 
            if (props[name] == null || props[name] == undefined) 
                target[name] = props[name]; 
        return target; 
    } 
    ;$.fn.datepicker = function(options) { 
        if (!this.length) { 
            return this; 
        } 
        if (!$.datepicker.initialized) { 
            $(document).mousedown($.datepicker._checkExternalClick).find(document.body).append($.datepicker.dpDiv); 
            $.datepicker.initialized = true; 
        } 
        var otherArgs = Array.prototype.slice.call(arguments, 1); 
        if (typeof options == 'string' && (options == 'isDisabled' || options == 'getDate' || options == 'widget')) 
            return $.datepicker['_' + options + 'Datepicker'].apply($.datepicker, [this[0]].concat(otherArgs)); 
        if (options == 'option' && arguments.length == 2 && typeof arguments[1] == 'string') 
            return $.datepicker['_' + options + 'Datepicker'].apply($.datepicker, [this[0]].concat(otherArgs)); 
        return this.each(function() { 
            typeof options == 'string' ? $.datepicker['_' + options + 'Datepicker'].apply($.datepicker, [this].concat(otherArgs)) : $.datepicker._attachDatepicker(this, options); 
        }); 
    } 
    ; 
    $.datepicker = new Datepicker(); 
    $.datepicker.initialized = false; 
    $.datepicker.uuid = new Date().getTime(); 
    $.datepicker.version = "1.9.2"; 
    window['DP_jQuery_' + dpuuid] = $; 
} 
)(jQuery); 
(function($, undefined) { 
    var uiDialogClasses = "ui-dialog ui-widget ui-widget-content ui-corner-all " 
      , sizeRelatedOptions = { 
        buttons: true, 
        height: true, 
        maxHeight: true, 
        maxWidth: true, 
        minHeight: true, 
        minWidth: true, 
        width: true 
    } 
      , resizableRelatedOptions = { 
        maxHeight: true, 
        maxWidth: true, 
        minHeight: true, 
        minWidth: true 
    }; 
    $.widget("ui.dialog", { 
        version: "1.9.2", 
        options: { 
            autoOpen: true, 
            buttons: {}, 
            closeOnEscape: true, 
            closeText: "close", 
            dialogClass: "", 
            draggable: true, 
            hide: null, 
            height: "auto", 
            maxHeight: false, 
            maxWidth: false, 
            minHeight: 150, 
            minWidth: 150, 
            modal: false, 
            position: { 
                my: "center", 
                at: "center", 
                of: window, 
                collision: "fit", 
                using: function(pos) { 
                    var topOffset = $(this).css(pos).offset().top; 
                    if (topOffset < 0) { 
                        $(this).css("top", pos.top - topOffset); 
                    } 
                } 
            }, 
            resizable: true, 
            show: null, 
            stack: true, 
            title: "", 
            width: 300, 
            zIndex: 1000 
        }, 
        _create: function() { 
            this.originalTitle = this.element.attr("title"); 
            if (typeof this.originalTitle !== "string") { 
                this.originalTitle = ""; 
            } 
            this.oldPosition = { 
                parent: this.element.parent(), 
                index: this.element.parent().children().index(this.element) 
            }; 
            this.options.title = this.options.title || this.originalTitle; 
            var that = this, options = this.options, title = options.title || "&#160;", uiDialog, uiDialogTitlebar, uiDialogTitlebarClose, uiDialogTitle, uiDialogButtonPane; 
            uiDialog = (this.uiDialog = $("<div>")).addClass(uiDialogClasses + options.dialogClass).css({ 
                display: "none", 
                outline: 0, 
                zIndex: options.zIndex 
            }).attr("tabIndex", -1).keydown(function(event) { 
                if (options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode && event.keyCode === $.ui.keyCode.ESCAPE) { 
                    that.close(event); 
                    event.preventDefault(); 
                } 
            }).mousedown(function(event) { 
                that.moveToTop(false, event); 
            }).appendTo("body"); 
            this.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(uiDialog); 
            uiDialogTitlebar = (this.uiDialogTitlebar = $("<div>")).addClass("ui-dialog-titlebar  ui-widget-header  " + "ui-corner-all  ui-helper-clearfix").bind("mousedown", function() { 
                uiDialog.focus(); 
            }).prependTo(uiDialog); 
            uiDialogTitlebarClose = $("<a href='#'></a>").addClass("ui-dialog-titlebar-close  ui-corner-all").attr("role", "button").click(function(event) { 
                event.preventDefault(); 
                that.close(event); 
            }).appendTo(uiDialogTitlebar); 
            (this.uiDialogTitlebarCloseText = $("<span>")).addClass("ui-icon ui-icon-closethick").text(options.closeText).appendTo(uiDialogTitlebarClose); 
            uiDialogTitle = $("<span>").uniqueId().addClass("ui-dialog-title").html(title).prependTo(uiDialogTitlebar); 
            uiDialogButtonPane = (this.uiDialogButtonPane = $("<div>")).addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"); 
            (this.uiButtonSet = $("<div>")).addClass("ui-dialog-buttonset").appendTo(uiDialogButtonPane); 
            uiDialog.attr({ 
                role: "dialog", 
                "aria-labelledby": uiDialogTitle.attr("id") 
            }); 
            uiDialogTitlebar.find("*").add(uiDialogTitlebar).disableSelection(); 
            this._hoverable(uiDialogTitlebarClose); 
            this._focusable(uiDialogTitlebarClose); 
            if (options.draggable && $.fn.draggable) { 
                this._makeDraggable(); 
            } 
            if (options.resizable && $.fn.resizable) { 
                this._makeResizable(); 
            } 
            this._createButtons(options.buttons); 
            this._isOpen = false; 
            if ($.fn.bgiframe) { 
                uiDialog.bgiframe(); 
            } 
            this._on(uiDialog, { 
                keydown: function(event) { 
                    if (!options.modal || event.keyCode !== $.ui.keyCode.TAB) { 
                        return; 
                    } 
                    var tabbables = $(":tabbable", uiDialog) 
                      , first = tabbables.filter(":first") 
                      , last = tabbables.filter(":last"); 
                    if (event.target === last[0] && !event.shiftKey) { 
                        first.focus(1); 
                        return false; 
                    } else if (event.target === first[0] && event.shiftKey) { 
                        last.focus(1); 
                        return false; 
                    } 
                } 
            }); 
        }, 
        _init: function() { 
            if (this.options.autoOpen) { 
                this.open(); 
            } 
        }, 
        _destroy: function() { 
            var next, oldPosition = this.oldPosition; 
            if (this.overlay) { 
                this.overlay.destroy(); 
            } 
            this.uiDialog.hide(); 
            this.element.removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body"); 
            this.uiDialog.remove(); 
            if (this.originalTitle) { 
                this.element.attr("title", this.originalTitle); 
            } 
            next = oldPosition.parent.children().eq(oldPosition.index); 
            if (next.length && next[0] !== this.element[0]) { 
                next.before(this.element); 
            } else { 
                oldPosition.parent.append(this.element); 
            } 
        }, 
        widget: function() { 
            return this.uiDialog; 
        }, 
        close: function(event) { 
            var that = this, maxZ, thisZ; 
            if (!this._isOpen) { 
                return; 
            } 
            if (false === this._trigger("beforeClose", event)) { 
                return; 
            } 
            this._isOpen = false; 
            if (this.overlay) { 
                this.overlay.destroy(); 
            } 
            if (this.options.hide) { 
                this._hide(this.uiDialog, this.options.hide, function() { 
                    that._trigger("close", event); 
                }); 
            } else { 
                this.uiDialog.hide(); 
                this._trigger("close", event); 
            } 
            $.ui.dialog.overlay.resize(); 
            if (this.options.modal) { 
                maxZ = 0; 
                $(".ui-dialog").each(function() { 
                    if (this !== that.uiDialog[0]) { 
                        thisZ = $(this).css("z-index"); 
                        if (!isNaN(thisZ)) { 
                            maxZ = Math.max(maxZ, thisZ); 
                        } 
                    } 
                }); 
                $.ui.dialog.maxZ = maxZ; 
            } 
            return this; 
        }, 
        isOpen: function() { 
            return this._isOpen; 
        }, 
        moveToTop: function(force, event) { 
            var options = this.options, saveScroll; 
            if ((options.modal && !force) || (!options.stack && !options.modal)) { 
                return this._trigger("focus", event); 
            } 
            if (options.zIndex > $.ui.dialog.maxZ) { 
                $.ui.dialog.maxZ = options.zIndex; 
            } 
            if (this.overlay) { 
                $.ui.dialog.maxZ += 1; 
                $.ui.dialog.overlay.maxZ = $.ui.dialog.maxZ; 
                this.overlay.$el.css("z-index", $.ui.dialog.overlay.maxZ); 
            } 
            saveScroll = { 
                scrollTop: this.element.scrollTop(), 
                scrollLeft: this.element.scrollLeft() 
            }; 
            $.ui.dialog.maxZ += 1; 
            this.uiDialog.css("z-index", $.ui.dialog.maxZ); 
            this.element.attr(saveScroll); 
            this._trigger("focus", event); 
            return this; 
        }, 
        open: function() { 
            if (this._isOpen) { 
                return; 
            } 
            var hasFocus, options = this.options, uiDialog = this.uiDialog; 
            this._size(); 
            this._position(options.position); 
            uiDialog.show(options.show); 
            this.overlay = options.modal ? new $.ui.dialog.overlay(this) : null; 
            this.moveToTop(true); 
            hasFocus = this.element.find(":tabbable"); 
            if (!hasFocus.length) { 
                hasFocus = this.uiDialogButtonPane.find(":tabbable"); 
                if (!hasFocus.length) { 
                    hasFocus = uiDialog; 
                } 
            } 
            hasFocus.eq(0).focus(); 
            this._isOpen = true; 
            this._trigger("open"); 
            return this; 
        }, 
        _createButtons: function(buttons) { 
            var that = this 
              , hasButtons = false; 
            this.uiDialogButtonPane.remove(); 
            this.uiButtonSet.empty(); 
            if (typeof buttons === "object" && buttons !== null) { 
                $.each(buttons, function() { 
                    return !(hasButtons = true); 
                }); 
            } 
            if (hasButtons) { 
                $.each(buttons, function(name, props) { 
                    var button, click; 
                    props = $.isFunction(props) ? { 
                        click: props, 
                        text: name 
                    } : props; 
                    props = $.extend({ 
                        type: "button" 
                    }, props); 
                    click = props.click; 
                    props.click = function() { 
                        click.apply(that.element[0], arguments); 
                    } 
                    ; 
                    button = $("<button></button>", props).appendTo(that.uiButtonSet); 
                    if ($.fn.button) { 
                        button.button(); 
                    } 
                }); 
                this.uiDialog.addClass("ui-dialog-buttons"); 
                this.uiDialogButtonPane.appendTo(this.uiDialog); 
            } else { 
                this.uiDialog.removeClass("ui-dialog-buttons"); 
            } 
        }, 
        _makeDraggable: function() { 
            var that = this 
              , options = this.options; 
            function filteredUi(ui) { 
                return { 
                    position: ui.position, 
                    offset: ui.offset 
                }; 
            } 
            this.uiDialog.draggable({ 
                cancel: ".ui-dialog-content, .ui-dialog-titlebar-close", 
                handle: ".ui-dialog-titlebar", 
                containment: "document", 
                start: function(event, ui) { 
                    $(this).addClass("ui-dialog-dragging"); 
                    that._trigger("dragStart", event, filteredUi(ui)); 
                }, 
                drag: function(event, ui) { 
                    that._trigger("drag", event, filteredUi(ui)); 
                }, 
                stop: function(event, ui) { 
                    options.position = [ui.position.left - that.document.scrollLeft(), ui.position.top - that.document.scrollTop()]; 
                    $(this).removeClass("ui-dialog-dragging"); 
                    that._trigger("dragStop", event, filteredUi(ui)); 
                    $.ui.dialog.overlay.resize(); 
                } 
            }); 
        }, 
        _makeResizable: function(handles) { 
            handles = (handles === undefined ? this.options.resizable : handles); 
            var that = this 
              , options = this.options 
              , position = this.uiDialog.css("position") 
              , resizeHandles = typeof handles === 'string' ? handles : "n,e,s,w,se,sw,ne,nw"; 
            function filteredUi(ui) { 
                return { 
                    originalPosition: ui.originalPosition, 
                    originalSize: ui.originalSize, 
                    position: ui.position, 
                    size: ui.size 
                }; 
            } 
            this.uiDialog.resizable({ 
                cancel: ".ui-dialog-content", 
                containment: "document", 
                alsoResize: this.element, 
                maxWidth: options.maxWidth, 
                maxHeight: options.maxHeight, 
                minWidth: options.minWidth, 
                minHeight: this._minHeight(), 
                handles: resizeHandles, 
                start: function(event, ui) { 
                    $(this).addClass("ui-dialog-resizing"); 
                    that._trigger("resizeStart", event, filteredUi(ui)); 
                }, 
                resize: function(event, ui) { 
                    that._trigger("resize", event, filteredUi(ui)); 
                }, 
                stop: function(event, ui) { 
                    $(this).removeClass("ui-dialog-resizing"); 
                    options.height = $(this).height(); 
                    options.width = $(this).width(); 
                    that._trigger("resizeStop", event, filteredUi(ui)); 
                    $.ui.dialog.overlay.resize(); 
                } 
            }).css("position", position).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se"); 
        }, 
        _minHeight: function() { 
            var options = this.options; 
            if (options.height === "auto") { 
                return options.minHeight; 
            } else { 
                return Math.min(options.minHeight, options.height); 
            } 
        }, 
        _position: function(position) { 
            var myAt = [], offset = [0, 0], isVisible; 
            if (position) { 
                if (typeof position === "string" || (typeof position === "object" && "0"in position)) { 
                    myAt = position.split ? position.split(" ") : [position[0], position[1]]; 
                    if (myAt.length === 1) { 
                        myAt[1] = myAt[0]; 
                    } 
                    $.each(["left", "top"], function(i, offsetPosition) { 
                        if (+myAt[i] === myAt[i]) { 
                            offset[i] = myAt[i]; 
                            myAt[i] = offsetPosition; 
                        } 
                    }); 
                    position = { 
                        my: myAt[0] + (offset[0] < 0 ? offset[0] : "+" + offset[0]) + " " + myAt[1] + (offset[1] < 0 ? offset[1] : "+" + offset[1]), 
                        at: myAt.join(" ") 
                    }; 
                } 
                position = $.extend({}, $.ui.dialog.prototype.options.position, position); 
            } else { 
                position = $.ui.dialog.prototype.options.position; 
            } 
            isVisible = this.uiDialog.is(":visible"); 
            if (!isVisible) { 
                this.uiDialog.show(); 
            } 
            this.uiDialog.position(position); 
            if (!isVisible) { 
                this.uiDialog.hide(); 
            } 
        }, 
        _setOptions: function(options) { 
            var that = this 
              , resizableOptions = {} 
              , resize = false; 
            $.each(options, function(key, value) { 
                that._setOption(key, value); 
                if (key in sizeRelatedOptions) { 
                    resize = true; 
                } 
                if (key in resizableRelatedOptions) { 
                    resizableOptions[key] = value; 
                } 
            }); 
            if (resize) { 
                this._size(); 
            } 
            if (this.uiDialog.is(":data(resizable)")) { 
                this.uiDialog.resizable("option", resizableOptions); 
            } 
        }, 
        _setOption: function(key, value) { 
            var isDraggable, isResizable, uiDialog = this.uiDialog; 
            switch (key) { 
            case "buttons": 
                this._createButtons(value); 
                break; 
            case "closeText": 
                this.uiDialogTitlebarCloseText.text("" + value); 
                break; 
            case "dialogClass": 
                uiDialog.removeClass(this.options.dialogClass).addClass(uiDialogClasses + value); 
                break; 
            case "disabled": 
                if (value) { 
                    uiDialog.addClass("ui-dialog-disabled"); 
                } else { 
                    uiDialog.removeClass("ui-dialog-disabled"); 
                } 
                break; 
            case "draggable": 
                isDraggable = uiDialog.is(":data(draggable)"); 
                if (isDraggable && !value) { 
                    uiDialog.draggable("destroy"); 
                } 
                if (!isDraggable && value) { 
                    this._makeDraggable(); 
                } 
                break; 
            case "position": 
                this._position(value); 
                break; 
            case "resizable": 
                isResizable = uiDialog.is(":data(resizable)"); 
                if (isResizable && !value) { 
                    uiDialog.resizable("destroy"); 
                } 
                if (isResizable && typeof value === "string") { 
                    uiDialog.resizable("option", "handles", value); 
                } 
                if (!isResizable && value !== false) { 
                    this._makeResizable(value); 
                } 
                break; 
            case "title": 
                $(".ui-dialog-title", this.uiDialogTitlebar).html("" + (value || "&#160;")); 
                break; 
            } 
            this._super(key, value); 
        }, 
        _size: function() { 
            var nonContentHeight, minContentHeight, autoHeight, options = this.options, isVisible = this.uiDialog.is(":visible"); 
            this.element.show().css({ 
                width: "auto", 
                minHeight: 0, 
                height: 0 
            }); 
            if (options.minWidth > options.width) { 
                options.width = options.minWidth; 
            } 
            nonContentHeight = this.uiDialog.css({ 
                height: "auto", 
                width: options.width 
            }).outerHeight(); 
            minContentHeight = Math.max(0, options.minHeight - nonContentHeight); 
            if (options.height === "auto") { 
                if ($.support.minHeight) { 
                    this.element.css({ 
                        minHeight: minContentHeight, 
                        height: "auto" 
                    }); 
                } else { 
                    this.uiDialog.show(); 
                    autoHeight = this.element.css("height", "auto").height(); 
                    if (!isVisible) { 
                        this.uiDialog.hide(); 
                    } 
                    this.element.height(Math.max(autoHeight, minContentHeight)); 
                } 
            } else { 
                this.element.height(Math.max(options.height - nonContentHeight, 0)); 
            } 
            if (this.uiDialog.is(":data(resizable)")) { 
                this.uiDialog.resizable("option", "minHeight", this._minHeight()); 
            } 
        } 
    }); 
    $.extend($.ui.dialog, { 
        uuid: 0, 
        maxZ: 0, 
        getTitleId: function($el) { 
            var id = $el.attr("id"); 
            if (!id) { 
                this.uuid += 1; 
                id = this.uuid; 
            } 
            return "ui-dialog-title-" + id; 
        }, 
        overlay: function(dialog) { 
            this.$el = $.ui.dialog.overlay.create(dialog); 
        } 
    }); 
    $.extend($.ui.dialog.overlay, { 
        instances: [], 
        oldInstances: [], 
        maxZ: 0, 
        events: $.map("focus,mousedown,mouseup,keydown,keypress,click".split(","), function(event) { 
            return event + ".dialog-overlay"; 
        }).join(" "), 
        create: function(dialog) { 
            if (this.instances.length === 0) { 
                setTimeout(function() { 
                    if ($.ui.dialog.overlay.instances.length) { 
                        $(document).bind($.ui.dialog.overlay.events, function(event) { 
                            if ($(event.target).zIndex() < $.ui.dialog.overlay.maxZ) { 
                                return false; 
                            } 
                        }); 
                    } 
                }, 1); 
                $(window).bind("resize.dialog-overlay", $.ui.dialog.overlay.resize); 
            } 
            var $el = (this.oldInstances.pop() || $("<div>").addClass("ui-widget-overlay")); 
            $(document).bind("keydown.dialog-overlay", function(event) { 
                var instances = $.ui.dialog.overlay.instances; 
                if (instances.length !== 0 && instances[instances.length - 1] === $el && dialog.options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode && event.keyCode === $.ui.keyCode.ESCAPE) { 
                    dialog.close(event); 
                    event.preventDefault(); 
                } 
            }); 
            $el.appendTo(document.body).css({ 
                width: this.width(), 
                height: this.height() 
            }); 
            if ($.fn.bgiframe) { 
                $el.bgiframe(); 
            } 
            this.instances.push($el); 
            return $el; 
        }, 
        destroy: function($el) { 
            var indexOf = $.inArray($el, this.instances) 
              , maxZ = 0; 
            if (indexOf !== -1) { 
                this.oldInstances.push(this.instances.splice(indexOf, 1)[0]); 
            } 
            if (this.instances.length === 0) { 
                $([document, window]).unbind(".dialog-overlay"); 
            } 
            $el.height(0).width(0).remove(); 
            $.each(this.instances, function() { 
                maxZ = Math.max(maxZ, this.css("z-index")); 
            }); 
            this.maxZ = maxZ; 
        }, 
        height: function() { 
            var scrollHeight, offsetHeight; 
            if ($.ui.ie) { 
                scrollHeight = Math.max(document.documentElement.scrollHeight, document.body.scrollHeight); 
                offsetHeight = Math.max(document.documentElement.offsetHeight, document.body.offsetHeight); 
                if (scrollHeight < offsetHeight) { 
                    return $(window).height() + "px"; 
                } else { 
                    return scrollHeight + "px"; 
                } 
            } else { 
                return $(document).height() + "px"; 
            } 
        }, 
        width: function() { 
            var scrollWidth, offsetWidth; 
            if ($.ui.ie) { 
                scrollWidth = Math.max(document.documentElement.scrollWidth, document.body.scrollWidth); 
                offsetWidth = Math.max(document.documentElement.offsetWidth, document.body.offsetWidth); 
                if (scrollWidth < offsetWidth) { 
                    return $(window).width() + "px"; 
                } else { 
                    return scrollWidth + "px"; 
                } 
            } else { 
                return $(document).width() + "px"; 
            } 
        }, 
        resize: function() { 
            var $overlays = $([]); 
            $.each($.ui.dialog.overlay.instances, function() { 
                $overlays = $overlays.add(this); 
            }); 
            $overlays.css({ 
                width: 0, 
                height: 0 
            }).css({ 
                width: $.ui.dialog.overlay.width(), 
                height: $.ui.dialog.overlay.height() 
            }); 
        } 
    }); 
    $.extend($.ui.dialog.overlay.prototype, { 
        destroy: function() { 
            $.ui.dialog.overlay.destroy(this.$el); 
        } 
    }); 
}(jQuery)); 
(function($, undefined) { 
    var mouseHandled = false; 
    $.widget("ui.menu", { 
        version: "1.9.2", 
        defaultElement: "<ul>", 
        delay: 300, 
        options: { 
            icons: { 
                submenu: "ui-icon-carat-1-e" 
            }, 
            menus: "ul", 
            position: { 
                my: "left top", 
                at: "right top" 
            }, 
            role: "menu", 
            blur: null, 
            focus: null, 
            select: null 
        }, 
        _create: function() { 
            this.activeMenu = this.element; 
            this.element.uniqueId().addClass("ui-menu ui-widget ui-widget-content ui-corner-all").toggleClass("ui-menu-icons", !!this.element.find(".ui-icon").length).attr({ 
                role: this.options.role, 
                tabIndex: 0 
            }).bind("click" + this.eventNamespace, $.proxy(function(event) { 
                if (this.options.disabled) { 
                    event.preventDefault(); 
                } 
            }, this)); 
            if (this.options.disabled) { 
                this.element.addClass("ui-state-disabled").attr("aria-disabled", "true"); 
            } 
            this._on({ 
                "mousedown .ui-menu-item > a": function(event) { 
                    event.preventDefault(); 
                }, 
                "click .ui-state-disabled > a": function(event) { 
                    event.preventDefault(); 
                }, 
                "click .ui-menu-item:has(a)": function(event) { 
                    var target = $(event.target).closest(".ui-menu-item"); 
                    if (!mouseHandled && target.not(".ui-state-disabled").length) { 
                        mouseHandled = true; 
                        this.select(event); 
                        if (target.has(".ui-menu").length) { 
                            this.expand(event); 
                        } else if (!this.element.is(":focus")) { 
                            this.element.trigger("focus", [true]); 
                            if (this.active && this.active.parents(".ui-menu").length === 1) { 
                                clearTimeout(this.timer); 
                            } 
                        } 
                    } 
                }, 
                "mouseenter .ui-menu-item": function(event) { 
                    var target = $(event.currentTarget); 
                    target.siblings().children(".ui-state-active").removeClass("ui-state-active"); 
                    this.focus(event, target); 
                }, 
                mouseleave: "collapseAll", 
                "mouseleave .ui-menu": "collapseAll", 
                focus: function(event, keepActiveItem) { 
                    var item = this.active || this.element.children(".ui-menu-item").eq(0); 
                    if (!keepActiveItem) { 
                        this.focus(event, item); 
                    } 
                }, 
                blur: function(event) { 
                    this._delay(function() { 
                        if (!$.contains(this.element[0], this.document[0].activeElement)) { 
                            this.collapseAll(event); 
                        } 
                    }); 
                }, 
                keydown: "_keydown" 
            }); 
            this.refresh(); 
            this._on(this.document, { 
                click: function(event) { 
                    if (!$(event.target).closest(".ui-menu").length) { 
                        this.collapseAll(event); 
                    } 
                    mouseHandled = false; 
                } 
            }); 
        }, 
        _destroy: function() { 
            this.element.removeAttr("aria-activedescendant").find(".ui-menu").andSelf().removeClass("ui-menu ui-widget ui-widget-content ui-corner-all ui-menu-icons").removeAttr("role").removeAttr("tabIndex").removeAttr("aria-labelledby").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-disabled").removeUniqueId().show(); 
            this.element.find(".ui-menu-item").removeClass("ui-menu-item").removeAttr("role").removeAttr("aria-disabled").children("a").removeUniqueId().removeClass("ui-corner-all ui-state-hover").removeAttr("tabIndex").removeAttr("role").removeAttr("aria-haspopup").children().each(function() { 
                var elem = $(this); 
                if (elem.data("ui-menu-submenu-carat")) { 
                    elem.remove(); 
                } 
            }); 
            this.element.find(".ui-menu-divider").removeClass("ui-menu-divider ui-widget-content"); 
        }, 
        _keydown: function(event) { 
            var match, prev, character, skip, regex, preventDefault = true; 
            function escape(value) { 
                return value.replace(/[\-\[\]{}()*+?.,\\^$|#\s]/g, "\$&"); 
            } 
            switch (event.keyCode) { 
            case $.ui.keyCode.PAGE_UP: 
                this.previousPage(event); 
                break; 
            case $.ui.keyCode.PAGE_DOWN: 
                this.nextPage(event); 
                break; 
            case $.ui.keyCode.HOME: 
                this._move("first", "first", event); 
                break; 
            case $.ui.keyCode.END: 
                this._move("last", "last", event); 
                break; 
            case $.ui.keyCode.UP: 
                this.previous(event); 
                break; 
            case $.ui.keyCode.DOWN: 
                this.next(event); 
                break; 
            case $.ui.keyCode.LEFT: 
                this.collapse(event); 
                break; 
            case $.ui.keyCode.RIGHT: 
                if (this.active && !this.active.is(".ui-state-disabled")) { 
                    this.expand(event); 
                } 
                break; 
            case $.ui.keyCode.ENTER: 
            case $.ui.keyCode.SPACE: 
                this._activate(event); 
                break; 
            case $.ui.keyCode.ESCAPE: 
                this.collapse(event); 
                break; 
            default: 
                preventDefault = false; 
                prev = this.previousFilter || ""; 
                character = String.fromCharCode(event.keyCode); 
                skip = false; 
                clearTimeout(this.filterTimer); 
                if (character === prev) { 
                    skip = true; 
                } else { 
                    character = prev + character; 
                } 
                regex = new RegExp("^" + escape(character),"i"); 
                match = this.activeMenu.children(".ui-menu-item").filter(function() { 
                    return regex.test($(this).children("a").text()); 
                }); 
                match = skip && match.index(this.active.next()) !== -1 ? this.active.nextAll(".ui-menu-item") : match; 
                if (!match.length) { 
                    character = String.fromCharCode(event.keyCode); 
                    regex = new RegExp("^" + escape(character),"i"); 
                    match = this.activeMenu.children(".ui-menu-item").filter(function() { 
                        return regex.test($(this).children("a").text()); 
                    }); 
                } 
                if (match.length) { 
                    this.focus(event, match); 
                    if (match.length > 1) { 
                        this.previousFilter = character; 
                        this.filterTimer = this._delay(function() { 
                            delete this.previousFilter; 
                        }, 1000); 
                    } else { 
                        delete this.previousFilter; 
                    } 
                } else { 
                    delete this.previousFilter; 
                } 
            } 
            if (preventDefault) { 
                event.preventDefault(); 
            } 
        }, 
        _activate: function(event) { 
            if (!this.active.is(".ui-state-disabled")) { 
                if (this.active.children("a[aria-haspopup='true']").length) { 
                    this.expand(event); 
                } else { 
                    this.select(event); 
                } 
            } 
        }, 
        refresh: function() { 
            var menus, icon = this.options.icons.submenu, submenus = this.element.find(this.options.menus); 
            submenus.filter(":not(.ui-menu)").addClass("ui-menu ui-widget ui-widget-content ui-corner-all").hide().attr({ 
                role: this.options.role, 
                "aria-hidden": "true", 
                "aria-expanded": "false" 
            }).each(function() { 
                var menu = $(this) 
                  , item = menu.prev("a") 
                  , submenuCarat = $("<span>").addClass("ui-menu-icon ui-icon " + icon).data("ui-menu-submenu-carat", true); 
                item.attr("aria-haspopup", "true").prepend(submenuCarat); 
                menu.attr("aria-labelledby", item.attr("id")); 
            }); 
            menus = submenus.add(this.element); 
            menus.children(":not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role", "presentation").children("a").uniqueId().addClass("ui-corner-all").attr({ 
                tabIndex: -1, 
                role: this._itemRole() 
            }); 
            menus.children(":not(.ui-menu-item)").each(function() { 
                var item = $(this); 
                if (!/[^\-\s]/.test(item.text())) { 
                    item.addClass("ui-widget-content ui-menu-divider"); 
                } 
            }); 
            menus.children(".ui-state-disabled").attr("aria-disabled", "true"); 
            if (this.active && !$.contains(this.element[0], this.active[0])) { 
                this.blur(); 
            } 
        }, 
        _itemRole: function() { 
            return { 
                menu: "menuitem", 
                listbox: "option" 
            }[this.options.role]; 
        }, 
        focus: function(event, item) { 
            var nested, focused; 
            this.blur(event, event && event.type === "focus"); 
            this._scrollIntoView(item); 
            this.active = item.first(); 
            focused = this.active.children("a").addClass("ui-state-focus"); 
            if (this.options.role) { 
                this.element.attr("aria-activedescendant", focused.attr("id")); 
            } 
            this.active.parent().closest(".ui-menu-item").children("a:first").addClass("ui-state-active"); 
            if (event && event.type === "keydown") { 
                this._close(); 
            } else { 
                this.timer = this._delay(function() { 
                    this._close(); 
                }, this.delay); 
            } 
            nested = item.children(".ui-menu"); 
            if (nested.length && (/^mouse/.test(event.type))) { 
                this._startOpening(nested); 
            } 
            this.activeMenu = item.parent(); 
            this._trigger("focus", event, { 
                item: item 
            }); 
        }, 
        _scrollIntoView: function(item) { 
            var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight; 
            if (this._hasScroll()) { 
                borderTop = parseFloat($.css(this.activeMenu[0], "borderTopWidth")) || 0; 
                paddingTop = parseFloat($.css(this.activeMenu[0], "paddingTop")) || 0; 
                offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop; 
                scroll = this.activeMenu.scrollTop(); 
                elementHeight = this.activeMenu.height(); 
                itemHeight = item.height(); 
                if (offset < 0) { 
                    this.activeMenu.scrollTop(scroll + offset); 
                } else if (offset + itemHeight > elementHeight) { 
                    this.activeMenu.scrollTop(scroll + offset - elementHeight + itemHeight); 
                } 
            } 
        }, 
        blur: function(event, fromFocus) { 
            if (!fromFocus) { 
                clearTimeout(this.timer); 
            } 
            if (!this.active) { 
                return; 
            } 
            this.active.children("a").removeClass("ui-state-focus"); 
            this.active = null; 
            this._trigger("blur", event, { 
                item: this.active 
            }); 
        }, 
        _startOpening: function(submenu) { 
            clearTimeout(this.timer); 
            if (submenu.attr("aria-hidden") !== "true") { 
                return; 
            } 
            this.timer = this._delay(function() { 
                this._close(); 
                this._open(submenu); 
            }, this.delay); 
        }, 
        _open: function(submenu) { 
            var position = $.extend({ 
                of: this.active 
            }, this.options.position); 
            clearTimeout(this.timer); 
            this.element.find(".ui-menu").not(submenu.parents(".ui-menu")).hide().attr("aria-hidden", "true"); 
            submenu.show().removeAttr("aria-hidden").attr("aria-expanded", "true").position(position); 
        }, 
        collapseAll: function(event, all) { 
            clearTimeout(this.timer); 
            this.timer = this._delay(function() { 
                var currentMenu = all ? this.element : $(event && event.target).closest(this.element.find(".ui-menu")); 
                if (!currentMenu.length) { 
                    currentMenu = this.element; 
                } 
                this._close(currentMenu); 
                this.blur(event); 
                this.activeMenu = currentMenu; 
            }, this.delay); 
        }, 
        _close: function(startMenu) { 
            if (!startMenu) { 
                startMenu = this.active ? this.active.parent() : this.element; 
            } 
            startMenu.find(".ui-menu").hide().attr("aria-hidden", "true").attr("aria-expanded", "false").end().find("a.ui-state-active").removeClass("ui-state-active"); 
        }, 
        collapse: function(event) { 
            var newItem = this.active && this.active.parent().closest(".ui-menu-item", this.element); 
            if (newItem && newItem.length) { 
                this._close(); 
                this.focus(event, newItem); 
            } 
        }, 
        expand: function(event) { 
            var newItem = this.active && this.active.children(".ui-menu ").children(".ui-menu-item").first(); 
            if (newItem && newItem.length) { 
                this._open(newItem.parent()); 
                this._delay(function() { 
                    this.focus(event, newItem); 
                }); 
            } 
        }, 
        next: function(event) { 
            this._move("next", "first", event); 
        }, 
        previous: function(event) { 
            this._move("prev", "last", event); 
        }, 
        isFirstItem: function() { 
            return this.active && !this.active.prevAll(".ui-menu-item").length; 
        }, 
        isLastItem: function() { 
            return this.active && !this.active.nextAll(".ui-menu-item").length; 
        }, 
        _move: function(direction, filter, event) { 
            var next; 
            if (this.active) { 
                if (direction === "first" || direction === "last") { 
                    next = this.active[direction === "first" ? "prevAll" : "nextAll"](".ui-menu-item").eq(-1); 
                } else { 
                    next = this.active[direction + "All"](".ui-menu-item").eq(0); 
                } 
            } 
            if (!next || !next.length || !this.active) { 
                next = this.activeMenu.children(".ui-menu-item")[filter](); 
            } 
            this.focus(event, next); 
        }, 
        nextPage: function(event) { 
            var item, base, height; 
            if (!this.active) { 
                this.next(event); 
                return; 
            } 
            if (this.isLastItem()) { 
                return; 
            } 
            if (this._hasScroll()) { 
                base = this.active.offset().top; 
                height = this.element.height(); 
                this.active.nextAll(".ui-menu-item").each(function() { 
                    item = $(this); 
                    return item.offset().top - base - height < 0; 
                }); 
                this.focus(event, item); 
            } else { 
                this.focus(event, this.activeMenu.children(".ui-menu-item")[!this.active ? "first" : "last"]()); 
            } 
        }, 
        previousPage: function(event) { 
            var item, base, height; 
            if (!this.active) { 
                this.next(event); 
                return; 
            } 
            if (this.isFirstItem()) { 
                return; 
            } 
            if (this._hasScroll()) { 
                base = this.active.offset().top; 
                height = this.element.height(); 
                this.active.prevAll(".ui-menu-item").each(function() { 
                    item = $(this); 
                    return item.offset().top - base + height > 0; 
                }); 
                this.focus(event, item); 
            } else { 
                this.focus(event, this.activeMenu.children(".ui-menu-item").first()); 
            } 
        }, 
        _hasScroll: function() { 
            return this.element.outerHeight() < this.element.prop("scrollHeight"); 
        }, 
        select: function(event) { 
            this.active = this.active || $(event.target).closest(".ui-menu-item"); 
            var ui = { 
                item: this.active 
            }; 
            if (!this.active.has(".ui-menu").length) { 
                this.collapseAll(event, true); 
            } 
            this._trigger("select", event, ui); 
        } 
    }); 
}(jQuery)); 
(function($, undefined) { 
    $.widget("ui.progressbar", { 
        version: "1.9.2", 
        options: { 
            value: 0, 
            max: 100 
        }, 
        min: 0, 
        _create: function() { 
            this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({ 
                role: "progressbar", 
                "aria-valuemin": this.min, 
                "aria-valuemax": this.options.max, 
                "aria-valuenow": this._value() 
            }); 
            this.valueDiv = $("<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>").appendTo(this.element); 
            this.oldValue = this._value(); 
            this._refreshValue(); 
        }, 
        _destroy: function() { 
            this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"); 
            this.valueDiv.remove(); 
        }, 
        value: function(newValue) { 
            if (newValue === undefined) { 
                return this._value(); 
            } 
            this._setOption("value", newValue); 
            return this; 
        }, 
        _setOption: function(key, value) { 
            if (key === "value") { 
                this.options.value = value; 
                this._refreshValue(); 
                if (this._value() === this.options.max) { 
                    this._trigger("complete"); 
                } 
            } 
            this._super(key, value); 
        }, 
        _value: function() { 
            var val = this.options.value; 
            if (typeof val !== "number") { 
                val = 0; 
            } 
            return Math.min(this.options.max, Math.max(this.min, val)); 
        }, 
        _percentage: function() { 
            return 100 * this._value() / this.options.max; 
        }, 
        _refreshValue: function() { 
            var value = this.value() 
              , percentage = this._percentage(); 
            if (this.oldValue !== value) { 
                this.oldValue = value; 
                this._trigger("change"); 
            } 
            this.valueDiv.toggle(value > this.min).toggleClass("ui-corner-right", value === this.options.max).width(percentage.toFixed(0) + "%"); 
            this.element.attr("aria-valuenow", value); 
        } 
    }); 
} 
)(jQuery); 
(function($, undefined) { 
    var numPages = 5; 
    $.widget("ui.slider", $.ui.mouse, { 
        version: "1.9.2", 
        widgetEventPrefix: "slide", 
        options: { 
            animate: false, 
            distance: 0, 
            max: 100, 
            min: 0, 
            orientation: "horizontal", 
            range: false, 
            step: 1, 
            value: 0, 
            values: null 
        }, 
        _create: function() { 
            var i, handleCount, o = this.options, existingHandles = this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"), handle = "<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>", handles = []; 
            this._keySliding = false; 
            this._mouseSliding = false; 
            this._animateOff = true; 
            this._handleIndex = null; 
            this._detectOrientation(); 
            this._mouseInit(); 
            this.element.addClass("ui-slider" + " ui-slider-" + this.orientation + " ui-widget" + " ui-widget-content" + " ui-corner-all" + (o.disabled ? " ui-slider-disabled ui-disabled" : "")); 
            this.range = $([]); 
            if (o.range) { 
                if (o.range === true) { 
                    if (!o.values) { 
                        o.values = [this._valueMin(), this._valueMin()]; 
                    } 
                    if (o.values.length && o.values.length !== 2) { 
                        o.values = [o.values[0], o.values[0]]; 
                    } 
                } 
                this.range = $("<div></div>").appendTo(this.element).addClass("ui-slider-range" + " ui-widget-header" + ((o.range === "min" || o.range === "max") ? " ui-slider-range-" + o.range : "")); 
            } 
            handleCount = (o.values && o.values.length) || 1; 
            for (i = existingHandles.length; i < handleCount; i++) { 
                handles.push(handle); 
            } 
            this.handles = existingHandles.add($(handles.join("")).appendTo(this.element)); 
            this.handle = this.handles.eq(0); 
            this.handles.add(this.range).filter("a").click(function(event) { 
                event.preventDefault(); 
            }).mouseenter(function() { 
                if (!o.disabled) { 
                    $(this).addClass("ui-state-hover"); 
                } 
            }).mouseleave(function() { 
                $(this).removeClass("ui-state-hover"); 
            }).focus(function() { 
                if (!o.disabled) { 
                    $(".ui-slider .ui-state-focus").removeClass("ui-state-focus"); 
                    $(this).addClass("ui-state-focus"); 
                } else { 
                    $(this).blur(); 
                } 
            }).blur(function() { 
                $(this).removeClass("ui-state-focus"); 
            }); 
            this.handles.each(function(i) { 
                $(this).data("ui-slider-handle-index", i); 
            }); 
            this._on(this.handles, { 
                keydown: function(event) { 
                    var allowed, curVal, newVal, step, index = $(event.target).data("ui-slider-handle-index"); 
                    switch (event.keyCode) { 
                    case $.ui.keyCode.HOME: 
                    case $.ui.keyCode.END: 
                    case $.ui.keyCode.PAGE_UP: 
                    case $.ui.keyCode.PAGE_DOWN: 
                    case $.ui.keyCode.UP: 
                    case $.ui.keyCode.RIGHT: 
                    case $.ui.keyCode.DOWN: 
                    case $.ui.keyCode.LEFT: 
                        event.preventDefault(); 
                        if (!this._keySliding) { 
                            this._keySliding = true; 
                            $(event.target).addClass("ui-state-active"); 
                            allowed = this._start(event, index); 
                            if (allowed === false) { 
                                return; 
                            } 
                        } 
                        break; 
                    } 
                    step = this.options.step; 
                    if (this.options.values && this.options.values.length) { 
                        curVal = newVal = this.values(index); 
                    } else { 
                        curVal = newVal = this.value(); 
                    } 
                    switch (event.keyCode) { 
                    case $.ui.keyCode.HOME: 
                        newVal = this._valueMin(); 
                        break; 
                    case $.ui.keyCode.END: 
                        newVal = this._valueMax(); 
                        break; 
                    case $.ui.keyCode.PAGE_UP: 
                        newVal = this._trimAlignValue(curVal + ((this._valueMax() - this._valueMin()) / numPages)); 
                        break; 
                    case $.ui.keyCode.PAGE_DOWN: 
                        newVal = this._trimAlignValue(curVal - ((this._valueMax() - this._valueMin()) / numPages)); 
                        break; 
                    case $.ui.keyCode.UP: 
                    case $.ui.keyCode.RIGHT: 
                        if (curVal === this._valueMax()) { 
                            return; 
                        } 
                        newVal = this._trimAlignValue(curVal + step); 
                        break; 
                    case $.ui.keyCode.DOWN: 
                    case $.ui.keyCode.LEFT: 
                        if (curVal === this._valueMin()) { 
                            return; 
                        } 
                        newVal = this._trimAlignValue(curVal - step); 
                        break; 
                    } 
                    this._slide(event, index, newVal); 
                }, 
                keyup: function(event) { 
                    var index = $(event.target).data("ui-slider-handle-index"); 
                    if (this._keySliding) { 
                        this._keySliding = false; 
                        this._stop(event, index); 
                        this._change(event, index); 
                        $(event.target).removeClass("ui-state-active"); 
                    } 
                } 
            }); 
            this._refreshValue(); 
            this._animateOff = false; 
        }, 
        _destroy: function() { 
            this.handles.remove(); 
            this.range.remove(); 
            this.element.removeClass("ui-slider" + " ui-slider-horizontal" + " ui-slider-vertical" + " ui-slider-disabled" + " ui-widget" + " ui-widget-content" + " ui-corner-all"); 
            this._mouseDestroy(); 
        }, 
        _mouseCapture: function(event) { 
            var position, normValue, distance, closestHandle, index, allowed, offset, mouseOverHandle, that = this, o = this.options; 
            if (o.disabled) { 
                return false; 
            } 
            this.elementSize = { 
                width: this.element.outerWidth(), 
                height: this.element.outerHeight() 
            }; 
            this.elementOffset = this.element.offset(); 
            position = { 
                x: event.pageX, 
                y: event.pageY 
            }; 
            normValue = this._normValueFromMouse(position); 
            distance = this._valueMax() - this._valueMin() + 1; 
            this.handles.each(function(i) { 
                var thisDistance = Math.abs(normValue - that.values(i)); 
                if (distance > thisDistance) { 
                    distance = thisDistance; 
                    closestHandle = $(this); 
                    index = i; 
                } 
            }); 
            if (o.range === true && this.values(1) === o.min) { 
                index += 1; 
                closestHandle = $(this.handles[index]); 
            } 
            allowed = this._start(event, index); 
            if (allowed === false) { 
                return false; 
            } 
            this._mouseSliding = true; 
            this._handleIndex = index; 
            closestHandle.addClass("ui-state-active").focus(); 
            offset = closestHandle.offset(); 
            mouseOverHandle = !$(event.target).parents().andSelf().is(".ui-slider-handle"); 
            this._clickOffset = mouseOverHandle ? { 
                left: 0, 
                top: 0 
            } : { 
                left: event.pageX - offset.left - (closestHandle.width() / 2), 
                top: event.pageY - offset.top - (closestHandle.height() / 2) - (parseInt(closestHandle.css("borderTopWidth"), 10) || 0) - (parseInt(closestHandle.css("borderBottomWidth"), 10) || 0) + (parseInt(closestHandle.css("marginTop"), 10) || 0) 
            }; 
            if (!this.handles.hasClass("ui-state-hover")) { 
                this._slide(event, index, normValue); 
            } 
            this._animateOff = true; 
            return true; 
        }, 
        _mouseStart: function() { 
            return true; 
        }, 
        _mouseDrag: function(event) { 
            var position = { 
                x: event.pageX, 
                y: event.pageY 
            } 
              , normValue = this._normValueFromMouse(position); 
            this._slide(event, this._handleIndex, normValue); 
            return false; 
        }, 
        _mouseStop: function(event) { 
            this.handles.removeClass("ui-state-active"); 
            this._mouseSliding = false; 
            this._stop(event, this._handleIndex); 
            this._change(event, this._handleIndex); 
            this._handleIndex = null; 
            this._clickOffset = null; 
            this._animateOff = false; 
            return false; 
        }, 
        _detectOrientation: function() { 
            this.orientation = (this.options.orientation === "vertical") ? "vertical" : "horizontal"; 
        }, 
        _normValueFromMouse: function(position) { 
            var pixelTotal, pixelMouse, percentMouse, valueTotal, valueMouse; 
            if (this.orientation === "horizontal") { 
                pixelTotal = this.elementSize.width; 
                pixelMouse = position.x - this.elementOffset.left - (this._clickOffset ? this._clickOffset.left : 0); 
            } else { 
                pixelTotal = this.elementSize.height; 
                pixelMouse = position.y - this.elementOffset.top - (this._clickOffset ? this._clickOffset.top : 0); 
            } 
            percentMouse = (pixelMouse / pixelTotal); 
            if (percentMouse > 1) { 
                percentMouse = 1; 
            } 
            if (percentMouse < 0) { 
                percentMouse = 0; 
            } 
            if (this.orientation === "vertical") { 
                percentMouse = 1 - percentMouse; 
            } 
            valueTotal = this._valueMax() - this._valueMin(); 
            valueMouse = this._valueMin() + percentMouse * valueTotal; 
            return this._trimAlignValue(valueMouse); 
        }, 
        _start: function(event, index) { 
            var uiHash = { 
                handle: this.handles[index], 
                value: this.value() 
            }; 
            if (this.options.values && this.options.values.length) { 
                uiHash.value = this.values(index); 
                uiHash.values = this.values(); 
            } 
            return this._trigger("start", event, uiHash); 
        }, 
        _slide: function(event, index, newVal) { 
            var otherVal, newValues, allowed; 
            if (this.options.values && this.options.values.length) { 
                otherVal = this.values(index ? 0 : 1); 
                if ((this.options.values.length === 2 && this.options.range === true) && ((index === 0 && newVal > otherVal) || (index === 1 && newVal < otherVal))) { 
                    newVal = otherVal; 
                } 
                if (newVal !== this.values(index)) { 
                    newValues = this.values(); 
                    newValues[index] = newVal; 
                    allowed = this._trigger("slide", event, { 
                        handle: this.handles[index], 
                        value: newVal, 
                        values: newValues 
                    }); 
                    otherVal = this.values(index ? 0 : 1); 
                    if (allowed !== false) { 
                        this.values(index, newVal, true); 
                    } 
                } 
            } else { 
                if (newVal !== this.value()) { 
                    allowed = this._trigger("slide", event, { 
                        handle: this.handles[index], 
                        value: newVal 
                    }); 
                    if (allowed !== false) { 
                        this.value(newVal); 
                    } 
                } 
            } 
        }, 
        _stop: function(event, index) { 
            var uiHash = { 
                handle: this.handles[index], 
                value: this.value() 
            }; 
            if (this.options.values && this.options.values.length) { 
                uiHash.value = this.values(index); 
                uiHash.values = this.values(); 
            } 
            this._trigger("stop", event, uiHash); 
        }, 
        _change: function(event, index) { 
            if (!this._keySliding && !this._mouseSliding) { 
                var uiHash = { 
                    handle: this.handles[index], 
                    value: this.value() 
                }; 
                if (this.options.values && this.options.values.length) { 
                    uiHash.value = this.values(index); 
                    uiHash.values = this.values(); 
                } 
                this._trigger("change", event, uiHash); 
            } 
        }, 
        value: function(newValue) { 
            if (arguments.length) { 
                this.options.value = this._trimAlignValue(newValue); 
                this._refreshValue(); 
                this._change(null, 0); 
                return; 
            } 
            return this._value(); 
        }, 
        values: function(index, newValue) { 
            var vals, newValues, i; 
            if (arguments.length > 1) { 
                this.options.values[index] = this._trimAlignValue(newValue); 
                this._refreshValue(); 
                this._change(null, index); 
                return; 
            } 
            if (arguments.length) { 
                if ($.isArray(arguments[0])) { 
                    vals = this.options.values; 
                    newValues = arguments[0]; 
                    for (i = 0; i < vals.length; i += 1) { 
                        vals[i] = this._trimAlignValue(newValues[i]); 
                        this._change(null, i); 
                    } 
                    this._refreshValue(); 
                } else { 
                    if (this.options.values && this.options.values.length) { 
                        return this._values(index); 
                    } else { 
                        return this.value(); 
                    } 
                } 
            } else { 
                return this._values(); 
            } 
        }, 
        _setOption: function(key, value) { 
            var i, valsLength = 0; 
            if ($.isArray(this.options.values)) { 
                valsLength = this.options.values.length; 
            } 
            $.Widget.prototype._setOption.apply(this, arguments); 
            switch (key) { 
            case "disabled": 
                if (value) { 
                    this.handles.filter(".ui-state-focus").blur(); 
                    this.handles.removeClass("ui-state-hover"); 
                    this.handles.prop("disabled", true); 
                    this.element.addClass("ui-disabled"); 
                } else { 
                    this.handles.prop("disabled", false); 
                    this.element.removeClass("ui-disabled"); 
                } 
                break; 
            case "orientation": 
                this._detectOrientation(); 
                this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-" + this.orientation); 
                this._refreshValue(); 
                break; 
            case "value": 
                this._animateOff = true; 
                this._refreshValue(); 
                this._change(null, 0); 
                this._animateOff = false; 
                break; 
            case "values": 
                this._animateOff = true; 
                this._refreshValue(); 
                for (i = 0; i < valsLength; i += 1) { 
                    this._change(null, i); 
                } 
                this._animateOff = false; 
                break; 
            case "min": 
            case "max": 
                this._animateOff = true; 
                this._refreshValue(); 
                this._animateOff = false; 
                break; 
            } 
        }, 
        _value: function() { 
            var val = this.options.value; 
            val = this._trimAlignValue(val); 
            return val; 
        }, 
        _values: function(index) { 
            var val, vals, i; 
            if (arguments.length) { 
                val = this.options.values[index]; 
                val = this._trimAlignValue(val); 
                return val; 
            } else { 
                vals = this.options.values.slice(); 
                for (i = 0; i < vals.length; i += 1) { 
                    vals[i] = this._trimAlignValue(vals[i]); 
                } 
                return vals; 
            } 
        }, 
        _trimAlignValue: function(val) { 
            if (val <= this._valueMin()) { 
                return this._valueMin(); 
            } 
            if (val >= this._valueMax()) { 
                return this._valueMax(); 
            } 
            var step = (this.options.step > 0) ? this.options.step : 1 
              , valModStep = (val - this._valueMin()) % step 
              , alignValue = val - valModStep; 
            if (Math.abs(valModStep) * 2 >= step) { 
                alignValue += (valModStep > 0) ? step : (-step); 
            } 
            return parseFloat(alignValue.toFixed(5)); 
        }, 
        _valueMin: function() { 
            return this.options.min; 
        }, 
        _valueMax: function() { 
            return this.options.max; 
        }, 
        _refreshValue: function() { 
            var lastValPercent, valPercent, value, valueMin, valueMax, oRange = this.options.range, o = this.options, that = this, animate = (!this._animateOff) ? o.animate : false, _set = {}; 
            if (this.options.values && this.options.values.length) { 
                this.handles.each(function(i) { 
                    valPercent = (that.values(i) - that._valueMin()) / (that._valueMax() - that._valueMin()) * 100; 
                    _set[that.orientation === "horizontal" ? "left" : "bottom"] = valPercent + "%"; 
                    $(this).stop(1, 1)[animate ? "animate" : "css"](_set, o.animate); 
                    if (that.options.range === true) { 
                        if (that.orientation === "horizontal") { 
                            if (i === 0) { 
                                that.range.stop(1, 1)[animate ? "animate" : "css"]({ 
                                    left: valPercent + "%" 
                                }, o.animate); 
                            } 
                            if (i === 1) { 
                                that.range[animate ? "animate" : "css"]({ 
                                    width: (valPercent - lastValPercent) + "%" 
                                }, { 
                                    queue: false, 
                                    duration: o.animate 
                                }); 
                            } 
                        } else { 
                            if (i === 0) { 
                                that.range.stop(1, 1)[animate ? "animate" : "css"]({ 
                                    bottom: (valPercent) + "%" 
                                }, o.animate); 
                            } 
                            if (i === 1) { 
                                that.range[animate ? "animate" : "css"]({ 
                                    height: (valPercent - lastValPercent) + "%" 
                                }, { 
                                    queue: false, 
                                    duration: o.animate 
                                }); 
                            } 
                        } 
                    } 
                    lastValPercent = valPercent; 
                }); 
            } else { 
                value = this.value(); 
                valueMin = this._valueMin(); 
                valueMax = this._valueMax(); 
                valPercent = (valueMax !== valueMin) ? (value - valueMin) / (valueMax - valueMin) * 100 : 0; 
                _set[this.orientation === "horizontal" ? "left" : "bottom"] = valPercent + "%"; 
                this.handle.stop(1, 1)[animate ? "animate" : "css"](_set, o.animate); 
                if (oRange === "min" && this.orientation === "horizontal") { 
                    this.range.stop(1, 1)[animate ? "animate" : "css"]({ 
                        width: valPercent + "%" 
                    }, o.animate); 
                } 
                if (oRange === "max" && this.orientation === "horizontal") { 
                    this.range[animate ? "animate" : "css"]({ 
                        width: (100 - valPercent) + "%" 
                    }, { 
                        queue: false, 
                        duration: o.animate 
                    }); 
                } 
                if (oRange === "min" && this.orientation === "vertical") { 
                    this.range.stop(1, 1)[animate ? "animate" : "css"]({ 
                        height: valPercent + "%" 
                    }, o.animate); 
                } 
                if (oRange === "max" && this.orientation === "vertical") { 
                    this.range[animate ? "animate" : "css"]({ 
                        height: (100 - valPercent) + "%" 
                    }, { 
                        queue: false, 
                        duration: o.animate 
                    }); 
                } 
            } 
        } 
    }); 
}(jQuery)); 
(function($) { 
    function modifier(fn) { 
        return function() { 
            var previous = this.element.val(); 
            fn.apply(this, arguments); 
            this._refresh(); 
            if (previous !== this.element.val()) { 
                this._trigger("change"); 
            } 
        } 
        ; 
    } 
    $.widget("ui.spinner", { 
        version: "1.9.2", 
        defaultElement: "<input>", 
        widgetEventPrefix: "spin", 
        options: { 
            culture: null, 
            icons: { 
                down: "ui-icon-triangle-1-s", 
                up: "ui-icon-triangle-1-n" 
            }, 
            incremental: true, 
            max: null, 
            min: null, 
            numberFormat: null, 
            page: 10, 
            step: 1, 
            change: null, 
            spin: null, 
            start: null, 
            stop: null 
        }, 
        _create: function() { 
            this._setOption("max", this.options.max); 
            this._setOption("min", this.options.min); 
            this._setOption("step", this.options.step); 
            this._value(this.element.val(), true); 
            this._draw(); 
            this._on(this._events); 
            this._refresh(); 
            this._on(this.window, { 
                beforeunload: function() { 
                    this.element.removeAttr("autocomplete"); 
                } 
            }); 
        }, 
        _getCreateOptions: function() { 
            var options = {} 
              , element = this.element; 
            $.each(["min", "max", "step"], function(i, option) { 
                var value = element.attr(option); 
                if (value !== undefined && value.length) { 
                    options[option] = value; 
                } 
            }); 
            return options; 
        }, 
        _events: { 
            keydown: function(event) { 
                if (this._start(event) && this._keydown(event)) { 
                    event.preventDefault(); 
                } 
            }, 
            keyup: "_stop", 
            focus: function() { 
                this.previous = this.element.val(); 
            }, 
            blur: function(event) { 
                if (this.cancelBlur) { 
                    delete this.cancelBlur; 
                    return; 
                } 
                this._refresh(); 
                if (this.previous !== this.element.val()) { 
                    this._trigger("change", event); 
                } 
            }, 
            mousewheel: function(event, delta) { 
                if (!delta) { 
                    return; 
                } 
                if (!this.spinning && !this._start(event)) { 
                    return false; 
                } 
                this._spin((delta > 0 ? 1 : -1) * this.options.step, event); 
                clearTimeout(this.mousewheelTimer); 
                this.mousewheelTimer = this._delay(function() { 
                    if (this.spinning) { 
                        this._stop(event); 
                    } 
                }, 100); 
                event.preventDefault(); 
            }, 
            "mousedown .ui-spinner-button": function(event) { 
                var previous; 
                previous = this.element[0] === this.document[0].activeElement ? this.previous : this.element.val(); 
                function checkFocus() { 
                    var isActive = this.element[0] === this.document[0].activeElement; 
                    if (!isActive) { 
                        this.element.focus(); 
                        this.previous = previous; 
                        this._delay(function() { 
                            this.previous = previous; 
                        }); 
                    } 
                } 
                event.preventDefault(); 
                checkFocus.call(this); 
                this.cancelBlur = true; 
                this._delay(function() { 
                    delete this.cancelBlur; 
                    checkFocus.call(this); 
                }); 
                if (this._start(event) === false) { 
                    return; 
                } 
                this._repeat(null, $(event.currentTarget).hasClass("ui-spinner-up") ? 1 : -1, event); 
            }, 
            "mouseup .ui-spinner-button": "_stop", 
            "mouseenter .ui-spinner-button": function(event) { 
                if (!$(event.currentTarget).hasClass("ui-state-active")) { 
                    return; 
                } 
                if (this._start(event) === false) { 
                    return false; 
                } 
                this._repeat(null, $(event.currentTarget).hasClass("ui-spinner-up") ? 1 : -1, event); 
            }, 
            "mouseleave .ui-spinner-button": "_stop" 
        }, 
        _draw: function() { 
            var uiSpinner = this.uiSpinner = this.element.addClass("ui-spinner-input").attr("autocomplete", "off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml()); 
            this.element.attr("role", "spinbutton"); 
            this.buttons = uiSpinner.find(".ui-spinner-button").attr("tabIndex", -1).button().removeClass("ui-corner-all"); 
            if (this.buttons.height() > Math.ceil(uiSpinner.height() * 0.5) && uiSpinner.height() > 0) { 
                uiSpinner.height(uiSpinner.height()); 
            } 
            if (this.options.disabled) { 
                this.disable(); 
            } 
        }, 
        _keydown: function(event) { 
            var options = this.options 
              , keyCode = $.ui.keyCode; 
            switch (event.keyCode) { 
            case keyCode.UP: 
                this._repeat(null, 1, event); 
                return true; 
            case keyCode.DOWN: 
                this._repeat(null, -1, event); 
                return true; 
            case keyCode.PAGE_UP: 
                this._repeat(null, options.page, event); 
                return true; 
            case keyCode.PAGE_DOWN: 
                this._repeat(null, -options.page, event); 
                return true; 
            } 
            return false; 
        }, 
        _uiSpinnerHtml: function() { 
            return "<span class='ui-spinner ui-widget ui-widget-content ui-corner-all'></span>"; 
        }, 
        _buttonHtml: function() { 
            return "" + "<a class='ui-spinner-button ui-spinner-up ui-corner-tr'>" + "<span class='ui-icon " + this.options.icons.up + "'>&#9650;</span>" + "</a>" + "<a class='ui-spinner-button ui-spinner-down ui-corner-br'>" + "<span class='ui-icon " + this.options.icons.down + "'>&#9660;</span>" + "</a>"; 
        }, 
        _start: function(event) { 
            if (!this.spinning && this._trigger("start", event) === false) { 
                return false; 
            } 
            if (!this.counter) { 
                this.counter = 1; 
            } 
            this.spinning = true; 
            return true; 
        }, 
        _repeat: function(i, steps, event) { 
            i = i || 500; 
            clearTimeout(this.timer); 
            this.timer = this._delay(function() { 
                this._repeat(40, steps, event); 
            }, i); 
            this._spin(steps * this.options.step, event); 
        }, 
        _spin: function(step, event) { 
            var value = this.value() || 0; 
            if (!this.counter) { 
                this.counter = 1; 
            } 
            value = this._adjustValue(value + step * this._increment(this.counter)); 
            if (!this.spinning || this._trigger("spin", event, { 
                value: value 
            }) !== false) { 
                this._value(value); 
                this.counter++; 
            } 
        }, 
        _increment: function(i) { 
            var incremental = this.options.incremental; 
            if (incremental) { 
                return $.isFunction(incremental) ? incremental(i) : Math.floor(i * i * i / 50000 - i * i / 500 + 17 * i / 200 + 1); 
            } 
            return 1; 
        }, 
        _precision: function() { 
            var precision = this._precisionOf(this.options.step); 
            if (this.options.min !== null) { 
                precision = Math.max(precision, this._precisionOf(this.options.min)); 
            } 
            return precision; 
        }, 
        _precisionOf: function(num) { 
            var str = num.toString() 
              , decimal = str.indexOf("."); 
            return decimal === -1 ? 0 : str.length - decimal - 1; 
        }, 
        _adjustValue: function(value) { 
            var base, aboveMin, options = this.options; 
            base = options.min !== null ? options.min : 0; 
            aboveMin = value - base; 
            aboveMin = Math.round(aboveMin / options.step) * options.step; 
            value = base + aboveMin; 
            value = parseFloat(value.toFixed(this._precision())); 
            if (options.max !== null && value > options.max) { 
                return options.max; 
            } 
            if (options.min !== null && value < options.min) { 
                return options.min; 
            } 
            return value; 
        }, 
        _stop: function(event) { 
            if (!this.spinning) { 
                return; 
            } 
            clearTimeout(this.timer); 
            clearTimeout(this.mousewheelTimer); 
            this.counter = 0; 
            this.spinning = false; 
            this._trigger("stop", event); 
        }, 
        _setOption: function(key, value) { 
            if (key === "culture" || key === "numberFormat") { 
                var prevValue = this._parse(this.element.val()); 
                this.options[key] = value; 
                this.element.val(this._format(prevValue)); 
                return; 
            } 
            if (key === "max" || key === "min" || key === "step") { 
                if (typeof value === "string") { 
                    value = this._parse(value); 
                } 
            } 
            this._super(key, value); 
            if (key === "disabled") { 
                if (value) { 
                    this.element.prop("disabled", true); 
                    this.buttons.button("disable"); 
                } else { 
                    this.element.prop("disabled", false); 
                    this.buttons.button("enable"); 
                } 
            } 
        }, 
        _setOptions: modifier(function(options) { 
            this._super(options); 
            this._value(this.element.val()); 
        }), 
        _parse: function(val) { 
            if (typeof val === "string" && val !== "") { 
                val = window.Globalize && this.options.numberFormat ? Globalize.parseFloat(val, 10, this.options.culture) : +val; 
            } 
            return val === "" || isNaN(val) ? null : val; 
        }, 
        _format: function(value) { 
            if (value === "") { 
                return ""; 
            } 
            return window.Globalize && this.options.numberFormat ? Globalize.format(value, this.options.numberFormat, this.options.culture) : value; 
        }, 
        _refresh: function() { 
            this.element.attr({ 
                "aria-valuemin": this.options.min, 
                "aria-valuemax": this.options.max, 
                "aria-valuenow": this._parse(this.element.val()) 
            }); 
        }, 
        _value: function(value, allowAny) { 
            var parsed; 
            if (value !== "") { 
                parsed = this._parse(value); 
                if (parsed !== null) { 
                    if (!allowAny) { 
                        parsed = this._adjustValue(parsed); 
                    } 
                    value = this._format(parsed); 
                } 
            } 
            this.element.val(value); 
            this._refresh(); 
        }, 
        _destroy: function() { 
            this.element.removeClass("ui-spinner-input").prop("disabled", false).removeAttr("autocomplete").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"); 
            this.uiSpinner.replaceWith(this.element); 
        }, 
        stepUp: modifier(function(steps) { 
            this._stepUp(steps); 
        }), 
        _stepUp: function(steps) { 
            this._spin((steps || 1) * this.options.step); 
        }, 
        stepDown: modifier(function(steps) { 
            this._stepDown(steps); 
        }), 
        _stepDown: function(steps) { 
            this._spin((steps || 1) * -this.options.step); 
        }, 
        pageUp: modifier(function(pages) { 
            this._stepUp((pages || 1) * this.options.page); 
        }), 
        pageDown: modifier(function(pages) { 
            this._stepDown((pages || 1) * this.options.page); 
        }), 
        value: function(newVal) { 
            if (!arguments.length) { 
                return this._parse(this.element.val()); 
            } 
            modifier(this._value).call(this, newVal); 
        }, 
        widget: function() { 
            return this.uiSpinner; 
        } 
    }); 
}(jQuery)); 
(function($, undefined) { 
    var tabId = 0 
      , rhash = /#.*$/; 
    function getNextTabId() { 
        return ++tabId; 
    } 
    function isLocal(anchor) { 
        return anchor.hash.length > 1 && anchor.href.replace(rhash, "") === location.href.replace(rhash, "").replace(/\s/g, "%20"); 
    } 
    $.widget("ui.tabs", { 
        version: "1.9.2", 
        delay: 300, 
        options: { 
            active: null, 
            collapsible: false, 
            event: "click", 
            heightStyle: "content", 
            hide: null, 
            show: null, 
            activate: null, 
            beforeActivate: null, 
            beforeLoad: null, 
            load: null 
        }, 
        _create: function() { 
            var that = this 
              , options = this.options 
              , active = options.active 
              , locationHash = location.hash.substring(1); 
            this.running = false; 
            this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all").toggleClass("ui-tabs-collapsible", options.collapsible).delegate(".ui-tabs-nav > li", "mousedown" + this.eventNamespace, function(event) { 
                if ($(this).is(".ui-state-disabled")) { 
                    event.preventDefault(); 
                } 
            }).delegate(".ui-tabs-anchor", "focus" + this.eventNamespace, function() { 
                if ($(this).closest("li").is(".ui-state-disabled")) { 
                    this.blur(); 
                } 
            }); 
            this._processTabs(); 
            if (active === null) { 
                if (locationHash) { 
                    this.tabs.each(function(i, tab) { 
                        if ($(tab).attr("aria-controls") === locationHash) { 
                            active = i; 
                            return false; 
                        } 
                    }); 
                } 
                if (active === null) { 
                    active = this.tabs.index(this.tabs.filter(".ui-tabs-active")); 
                } 
                if (active === null || active === -1) { 
                    active = this.tabs.length ? 0 : false; 
                } 
            } 
            if (active !== false) { 
                active = this.tabs.index(this.tabs.eq(active)); 
                if (active === -1) { 
                    active = options.collapsible ? false : 0; 
                } 
            } 
            options.active = active; 
            if (!options.collapsible && options.active === false && this.anchors.length) { 
                options.active = 0; 
            } 
            if ($.isArray(options.disabled)) { 
                options.disabled = $.unique(options.disabled.concat($.map(this.tabs.filter(".ui-state-disabled"), function(li) { 
                    return that.tabs.index(li); 
                }))).sort(); 
            } 
            if (this.options.active !== false && this.anchors.length) { 
                this.active = this._findActive(this.options.active); 
            } else { 
                this.active = $(); 
            } 
            this._refresh(); 
            if (this.active.length) { 
                this.load(options.active); 
            } 
        }, 
        _getCreateEventData: function() { 
            return { 
                tab: this.active, 
                panel: !this.active.length ? $() : this._getPanelForTab(this.active) 
            }; 
        }, 
        _tabKeydown: function(event) { 
            var focusedTab = $(this.document[0].activeElement).closest("li") 
              , selectedIndex = this.tabs.index(focusedTab) 
              , goingForward = true; 
            if (this._handlePageNav(event)) { 
                return; 
            } 
            switch (event.keyCode) { 
            case $.ui.keyCode.RIGHT: 
            case $.ui.keyCode.DOWN: 
                selectedIndex++; 
                break; 
            case $.ui.keyCode.UP: 
            case $.ui.keyCode.LEFT: 
                goingForward = false; 
                selectedIndex--; 
                break; 
            case $.ui.keyCode.END: 
                selectedIndex = this.anchors.length - 1; 
                break; 
            case $.ui.keyCode.HOME: 
                selectedIndex = 0; 
                break; 
            case $.ui.keyCode.SPACE: 
                event.preventDefault(); 
                clearTimeout(this.activating); 
                this._activate(selectedIndex); 
                return; 
            case $.ui.keyCode.ENTER: 
                event.preventDefault(); 
                clearTimeout(this.activating); 
                this._activate(selectedIndex === this.options.active ? false : selectedIndex); 
                return; 
            default: 
                return; 
            } 
            event.preventDefault(); 
            clearTimeout(this.activating); 
            selectedIndex = this._focusNextTab(selectedIndex, goingForward); 
            if (!event.ctrlKey) { 
                focusedTab.attr("aria-selected", "false"); 
                this.tabs.eq(selectedIndex).attr("aria-selected", "true"); 
                this.activating = this._delay(function() { 
                    this.option("active", selectedIndex); 
                }, this.delay); 
            } 
        }, 
        _panelKeydown: function(event) { 
            if (this._handlePageNav(event)) { 
                return; 
            } 
            if (event.ctrlKey && event.keyCode === $.ui.keyCode.UP) { 
                event.preventDefault(); 
                this.active.focus(); 
            } 
        }, 
        _handlePageNav: function(event) { 
            if (event.altKey && event.keyCode === $.ui.keyCode.PAGE_UP) { 
                this._activate(this._focusNextTab(this.options.active - 1, false)); 
                return true; 
            } 
            if (event.altKey && event.keyCode === $.ui.keyCode.PAGE_DOWN) { 
                this._activate(this._focusNextTab(this.options.active + 1, true)); 
                return true; 
            } 
        }, 
        _findNextTab: function(index, goingForward) { 
            var lastTabIndex = this.tabs.length - 1; 
            function constrain() { 
                if (index > lastTabIndex) { 
                    index = 0; 
                } 
                if (index < 0) { 
                    index = lastTabIndex; 
                } 
                return index; 
            } 
            while ($.inArray(constrain(), this.options.disabled) !== -1) { 
                index = goingForward ? index + 1 : index - 1; 
            } 
            return index; 
        }, 
        _focusNextTab: function(index, goingForward) { 
            index = this._findNextTab(index, goingForward); 
            this.tabs.eq(index).focus(); 
            return index; 
        }, 
        _setOption: function(key, value) { 
            if (key === "active") { 
                this._activate(value); 
                return; 
            } 
            if (key === "disabled") { 
                this._setupDisabled(value); 
                return; 
            } 
            this._super(key, value); 
            if (key === "collapsible") { 
                this.element.toggleClass("ui-tabs-collapsible", value); 
                if (!value && this.options.active === false) { 
                    this._activate(0); 
                } 
            } 
            if (key === "event") { 
                this._setupEvents(value); 
            } 
            if (key === "heightStyle") { 
                this._setupHeightStyle(value); 
            } 
        }, 
        _tabId: function(tab) { 
            return tab.attr("aria-controls") || "ui-tabs-" + getNextTabId(); 
        }, 
        _sanitizeSelector: function(hash) { 
            return hash ? hash.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g, "\$&") : ""; 
        }, 
        refresh: function() { 
            var options = this.options 
              , lis = this.tablist.children(":has(a[href])"); 
            options.disabled = $.map(lis.filter(".ui-state-disabled"), function(tab) { 
                return lis.index(tab); 
            }); 
            this._processTabs(); 
            if (options.active === false || !this.anchors.length) { 
                options.active = false; 
                this.active = $(); 
            } else if (this.active.length && !$.contains(this.tablist[0], this.active[0])) { 
                if (this.tabs.length === options.disabled.length) { 
                    options.active = false; 
                    this.active = $(); 
                } else { 
                    this._activate(this._findNextTab(Math.max(0, options.active - 1), false)); 
                } 
            } else { 
                options.active = this.tabs.index(this.active); 
            } 
            this._refresh(); 
        }, 
        _refresh: function() { 
            this._setupDisabled(this.options.disabled); 
            this._setupEvents(this.options.event); 
            this._setupHeightStyle(this.options.heightStyle); 
            this.tabs.not(this.active).attr({ 
                "aria-selected": "false", 
                tabIndex: -1 
            }); 
            this.panels.not(this._getPanelForTab(this.active)).hide().attr({ 
                "aria-expanded": "false", 
                "aria-hidden": "true" 
            }); 
            if (!this.active.length) { 
                this.tabs.eq(0).attr("tabIndex", 0); 
            } else { 
                this.active.addClass("ui-tabs-active ui-state-active").attr({ 
                    "aria-selected": "true", 
                    tabIndex: 0 
                }); 
                this._getPanelForTab(this.active).show().attr({ 
                    "aria-expanded": "true", 
                    "aria-hidden": "false" 
                }); 
            } 
        }, 
        _processTabs: function() { 
            var that = this; 
            this.tablist = this._getList().addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").attr("role", "tablist"); 
            this.tabs = this.tablist.find("> li:has(a[href])").addClass("ui-state-default ui-corner-top").attr({ 
                role: "tab", 
                tabIndex: -1 
            }); 
            this.anchors = this.tabs.map(function() { 
                return $("a", this)[0]; 
            }).addClass("ui-tabs-anchor").attr({ 
                role: "presentation", 
                tabIndex: -1 
            }); 
            this.panels = $(); 
            this.anchors.each(function(i, anchor) { 
                var selector, panel, panelId, anchorId = $(anchor).uniqueId().attr("id"), tab = $(anchor).closest("li"), originalAriaControls = tab.attr("aria-controls"); 
                if (isLocal(anchor)) { 
                    selector = anchor.hash; 
                    panel = that.element.find(that._sanitizeSelector(selector)); 
                } else { 
                    panelId = that._tabId(tab); 
                    selector = "#" + panelId; 
                    panel = that.element.find(selector); 
                    if (!panel.length) { 
                        panel = that._createPanel(panelId); 
                        panel.insertAfter(that.panels[i - 1] || that.tablist); 
                    } 
                    panel.attr("aria-live", "polite"); 
                } 
                if (panel.length) { 
                    that.panels = that.panels.add(panel); 
                } 
                if (originalAriaControls) { 
                    tab.data("ui-tabs-aria-controls", originalAriaControls); 
                } 
                tab.attr({ 
                    "aria-controls": selector.substring(1), 
                    "aria-labelledby": anchorId 
                }); 
                panel.attr("aria-labelledby", anchorId); 
            }); 
            this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").attr("role", "tabpanel"); 
        }, 
        _getList: function() { 
            return this.element.find("ol,ul").eq(0); 
        }, 
        _createPanel: function(id) { 
            return $("<div>").attr("id", id).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").data("ui-tabs-destroy", true); 
        }, 
        _setupDisabled: function(disabled) { 
            if ($.isArray(disabled)) { 
                if (!disabled.length) { 
                    disabled = false; 
                } else if (disabled.length === this.anchors.length) { 
                    disabled = true; 
                } 
            } 
            for (var i = 0, li; (li = this.tabs[i]); i++) { 
                if (disabled === true || $.inArray(i, disabled) !== -1) { 
                    $(li).addClass("ui-state-disabled").attr("aria-disabled", "true"); 
                } else { 
                    $(li).removeClass("ui-state-disabled").removeAttr("aria-disabled"); 
                } 
            } 
            this.options.disabled = disabled; 
        }, 
        _setupEvents: function(event) { 
            var events = { 
                click: function(event) { 
                    event.preventDefault(); 
                } 
            }; 
            if (event) { 
                $.each(event.split(" "), function(index, eventName) { 
                    events[eventName] = "_eventHandler"; 
                }); 
            } 
            this._off(this.anchors.add(this.tabs).add(this.panels)); 
            this._on(this.anchors, events); 
            this._on(this.tabs, { 
                keydown: "_tabKeydown" 
            }); 
            this._on(this.panels, { 
                keydown: "_panelKeydown" 
            }); 
            this._focusable(this.tabs); 
            this._hoverable(this.tabs); 
        }, 
        _setupHeightStyle: function(heightStyle) { 
            var maxHeight, overflow, parent = this.element.parent(); 
            if (heightStyle === "fill") { 
                if (!$.support.minHeight) { 
                    overflow = parent.css("overflow"); 
                    parent.css("overflow", "hidden"); 
                } 
                maxHeight = parent.height(); 
                this.element.siblings(":visible").each(function() { 
                    var elem = $(this) 
                      , position = elem.css("position"); 
                    if (position === "absolute" || position === "fixed") { 
                        return; 
                    } 
                    maxHeight -= elem.outerHeight(true); 
                }); 
                if (overflow) { 
                    parent.css("overflow", overflow); 
                } 
                this.element.children().not(this.panels).each(function() { 
                    maxHeight -= $(this).outerHeight(true); 
                }); 
                this.panels.each(function() { 
                    $(this).height(Math.max(0, maxHeight - $(this).innerHeight() + $(this).height())); 
                }).css("overflow", "auto"); 
            } else if (heightStyle === "auto") { 
                maxHeight = 0; 
                this.panels.each(function() { 
                    maxHeight = Math.max(maxHeight, $(this).height("").height()); 
                }).height(maxHeight); 
            } 
        }, 
        _eventHandler: function(event) { 
            var options = this.options 
              , active = this.active 
              , anchor = $(event.currentTarget) 
              , tab = anchor.closest("li") 
              , clickedIsActive = tab[0] === active[0] 
              , collapsing = clickedIsActive && options.collapsible 
              , toShow = collapsing ? $() : this._getPanelForTab(tab) 
              , toHide = !active.length ? $() : this._getPanelForTab(active) 
              , eventData = { 
                oldTab: active, 
                oldPanel: toHide, 
                newTab: collapsing ? $() : tab, 
                newPanel: toShow 
            }; 
            event.preventDefault(); 
            if (tab.hasClass("ui-state-disabled") || tab.hasClass("ui-tabs-loading") || this.running || (clickedIsActive && !options.collapsible) || (this._trigger("beforeActivate", event, eventData) === false)) { 
                return; 
            } 
            options.active = collapsing ? false : this.tabs.index(tab); 
            this.active = clickedIsActive ? $() : tab; 
            if (this.xhr) { 
                this.xhr.abort(); 
            } 
            if (!toHide.length && !toShow.length) { 
                $.error("jQuery UI Tabs: Mismatching fragment identifier."); 
            } 
            if (toShow.length) { 
                this.load(this.tabs.index(tab), event); 
            } 
            this._toggle(event, eventData); 
        }, 
        _toggle: function(event, eventData) { 
            var that = this 
              , toShow = eventData.newPanel 
              , toHide = eventData.oldPanel; 
            this.running = true; 
            function complete() { 
                that.running = false; 
                that._trigger("activate", event, eventData); 
            } 
            function show() { 
                eventData.newTab.closest("li").addClass("ui-tabs-active ui-state-active"); 
                if (toShow.length && that.options.show) { 
                    that._show(toShow, that.options.show, complete); 
                } else { 
                    toShow.show(); 
                    complete(); 
                } 
            } 
            if (toHide.length && this.options.hide) { 
                this._hide(toHide, this.options.hide, function() { 
                    eventData.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"); 
                    show(); 
                }); 
            } else { 
                eventData.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"); 
                toHide.hide(); 
                show(); 
            } 
            toHide.attr({ 
                "aria-expanded": "false", 
                "aria-hidden": "true" 
            }); 
            eventData.oldTab.attr("aria-selected", "false"); 
            if (toShow.length && toHide.length) { 
                eventData.oldTab.attr("tabIndex", -1); 
            } else if (toShow.length) { 
                this.tabs.filter(function() { 
                    return $(this).attr("tabIndex") === 0; 
                }).attr("tabIndex", -1); 
            } 
            toShow.attr({ 
                "aria-expanded": "true", 
                "aria-hidden": "false" 
            }); 
            eventData.newTab.attr({ 
                "aria-selected": "true", 
                tabIndex: 0 
            }); 
        }, 
        _activate: function(index) { 
            var anchor, active = this._findActive(index); 
            if (active[0] === this.active[0]) { 
                return; 
            } 
            if (!active.length) { 
                active = this.active; 
            } 
            anchor = active.find(".ui-tabs-anchor")[0]; 
            this._eventHandler({ 
                target: anchor, 
                currentTarget: anchor, 
                preventDefault: $.noop 
            }); 
        }, 
        _findActive: function(index) { 
            return index === false ? $() : this.tabs.eq(index); 
        }, 
        _getIndex: function(index) { 
            if (typeof index === "string") { 
                index = this.anchors.index(this.anchors.filter("[href$='" + index + "']")); 
            } 
            return index; 
        }, 
        _destroy: function() { 
            if (this.xhr) { 
                this.xhr.abort(); 
            } 
            this.element.removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible"); 
            this.tablist.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").removeAttr("role"); 
            this.anchors.removeClass("ui-tabs-anchor").removeAttr("role").removeAttr("tabIndex").removeData("href.tabs").removeData("load.tabs").removeUniqueId(); 
            this.tabs.add(this.panels).each(function() { 
                if ($.data(this, "ui-tabs-destroy")) { 
                    $(this).remove(); 
                } else { 
                    $(this).removeClass("ui-state-default ui-state-active ui-state-disabled " + "ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel").removeAttr("tabIndex").removeAttr("aria-live").removeAttr("aria-busy").removeAttr("aria-selected").removeAttr("aria-labelledby").removeAttr("aria-hidden").removeAttr("aria-expanded").removeAttr("role"); 
                } 
            }); 
            this.tabs.each(function() { 
                var li = $(this) 
                  , prev = li.data("ui-tabs-aria-controls"); 
                if (prev) { 
                    li.attr("aria-controls", prev); 
                } else { 
                    li.removeAttr("aria-controls"); 
                } 
            }); 
            this.panels.show(); 
            if (this.options.heightStyle !== "content") { 
                this.panels.css("height", ""); 
            } 
        }, 
        enable: function(index) { 
            var disabled = this.options.disabled; 
            if (disabled === false) { 
                return; 
            } 
            if (index === undefined) { 
                disabled = false; 
            } else { 
                index = this._getIndex(index); 
                if ($.isArray(disabled)) { 
                    disabled = $.map(disabled, function(num) { 
                        return num !== index ? num : null; 
                    }); 
                } else { 
                    disabled = $.map(this.tabs, function(li, num) { 
                        return num !== index ? num : null; 
                    }); 
                } 
            } 
            this._setupDisabled(disabled); 
        }, 
        disable: function(index) { 
            var disabled = this.options.disabled; 
            if (disabled === true) { 
                return; 
            } 
            if (index === undefined) { 
                disabled = true; 
            } else { 
                index = this._getIndex(index); 
                if ($.inArray(index, disabled) !== -1) { 
                    return; 
                } 
                if ($.isArray(disabled)) { 
                    disabled = $.merge([index], disabled).sort(); 
                } else { 
                    disabled = [index]; 
                } 
            } 
            this._setupDisabled(disabled); 
        }, 
        load: function(index, event) { 
            index = this._getIndex(index); 
            var that = this 
              , tab = this.tabs.eq(index) 
              , anchor = tab.find(".ui-tabs-anchor") 
              , panel = this._getPanelForTab(tab) 
              , eventData = { 
                tab: tab, 
                panel: panel 
            }; 
            if (isLocal(anchor[0])) { 
                return; 
            } 
            this.xhr = $.ajax(this._ajaxSettings(anchor, event, eventData)); 
            if (this.xhr && this.xhr.statusText !== "canceled") { 
                tab.addClass("ui-tabs-loading"); 
                panel.attr("aria-busy", "true"); 
                this.xhr.success(function(response) { 
                    setTimeout(function() { 
                        panel.html(response); 
                        that._trigger("load", event, eventData); 
                    }, 1); 
                }).complete(function(jqXHR, status) { 
                    setTimeout(function() { 
                        if (status === "abort") { 
                            that.panels.stop(false, true); 
                        } 
                        tab.removeClass("ui-tabs-loading"); 
                        panel.removeAttr("aria-busy"); 
                        if (jqXHR === that.xhr) { 
                            delete that.xhr; 
                        } 
                    }, 1); 
                }); 
            } 
        }, 
        _ajaxSettings: function(anchor, event, eventData) { 
            var that = this; 
            return { 
                url: anchor.attr("href"), 
                beforeSend: function(jqXHR, settings) { 
                    return that._trigger("beforeLoad", event, $.extend({ 
                        jqXHR: jqXHR, 
                        ajaxSettings: settings 
                    }, eventData)); 
                } 
            }; 
        }, 
        _getPanelForTab: function(tab) { 
            var id = $(tab).attr("aria-controls"); 
            return this.element.find(this._sanitizeSelector("#" + id)); 
        } 
    }); 
    if ($.uiBackCompat !== false) { 
        $.ui.tabs.prototype._ui = function(tab, panel) { 
            return { 
                tab: tab, 
                panel: panel, 
                index: this.anchors.index(tab) 
            }; 
        } 
        ; 
        $.widget("ui.tabs", $.ui.tabs, { 
            url: function(index, url) { 
                this.anchors.eq(index).attr("href", url); 
            } 
        }); 
        $.widget("ui.tabs", $.ui.tabs, { 
            options: { 
                ajaxOptions: null, 
                cache: false 
            }, 
            _create: function() { 
                this._super(); 
                var that = this; 
                this._on({ 
                    tabsbeforeload: function(event, ui) { 
                        if ($.data(ui.tab[0], "cache.tabs")) { 
                            event.preventDefault(); 
                            return; 
                        } 
                        ui.jqXHR.success(function() { 
                            if (that.options.cache) { 
                                $.data(ui.tab[0], "cache.tabs", true); 
                            } 
                        }); 
                    } 
                }); 
            }, 
            _ajaxSettings: function(anchor, event, ui) { 
                var ajaxOptions = this.options.ajaxOptions; 
                return $.extend({}, ajaxOptions, { 
                    error: function(xhr, status) { 
                        try { 
                            ajaxOptions.error(xhr, status, ui.tab.closest("li").index(), ui.tab[0]); 
                        } catch (error) {} 
                    } 
                }, this._superApply(arguments)); 
            }, 
            _setOption: function(key, value) { 
                if (key === "cache" && value === false) { 
                    this.anchors.removeData("cache.tabs"); 
                } 
                this._super(key, value); 
            }, 
            _destroy: function() { 
                this.anchors.removeData("cache.tabs"); 
                this._super(); 
            }, 
            url: function(index) { 
                this.anchors.eq(index).removeData("cache.tabs"); 
                this._superApply(arguments); 
            } 
        }); 
        $.widget("ui.tabs", $.ui.tabs, { 
            abort: function() { 
                if (this.xhr) { 
                    this.xhr.abort(); 
                } 
            } 
        }); 
        $.widget("ui.tabs", $.ui.tabs, { 
            options: { 
                spinner: "<em>Loading&#8230;</em>" 
            }, 
            _create: function() { 
                this._super(); 
                this._on({ 
                    tabsbeforeload: function(event, ui) { 
                        if (event.target !== this.element[0] || !this.options.spinner) { 
                            return; 
                        } 
                        var span = ui.tab.find("span") 
                          , html = span.html(); 
                        span.html(this.options.spinner); 
                        ui.jqXHR.complete(function() { 
                            span.html(html); 
                        }); 
                    } 
                }); 
            } 
        }); 
        $.widget("ui.tabs", $.ui.tabs, { 
            options: { 
                enable: null, 
                disable: null 
            }, 
            enable: function(index) { 
                var options = this.options, trigger; 
                if (index && options.disabled === true || ($.isArray(options.disabled) && $.inArray(index, options.disabled) !== -1)) { 
                    trigger = true; 
                } 
                this._superApply(arguments); 
                if (trigger) { 
                    this._trigger("enable", null, this._ui(this.anchors[index], this.panels[index])); 
                } 
            }, 
            disable: function(index) { 
                var options = this.options, trigger; 
                if (index && options.disabled === false || ($.isArray(options.disabled) && $.inArray(index, options.disabled) === -1)) { 
                    trigger = true; 
                } 
                this._superApply(arguments); 
                if (trigger) { 
                    this._trigger("disable", null, this._ui(this.anchors[index], this.panels[index])); 
                } 
            } 
        }); 
        $.widget("ui.tabs", $.ui.tabs, { 
            options: { 
                add: null, 
                remove: null, 
                tabTemplate: "<li><a href='#{href}'><span>#{label}</span></a></li>" 
            }, 
            add: function(url, label, index) { 
                if (index === undefined) { 
                    index = this.anchors.length; 
                } 
                var doInsertAfter, panel, options = this.options, li = $(options.tabTemplate.replace(/#\{href\}/g, url).replace(/#\{label\}/g, label)), id = !url.indexOf("#") ? url.replace("#", "") : this._tabId(li); 
                li.addClass("ui-state-default ui-corner-top").data("ui-tabs-destroy", true); 
                li.attr("aria-controls", id); 
                doInsertAfter = index >= this.tabs.length; 
                panel = this.element.find("#" + id); 
                if (!panel.length) { 
                    panel = this._createPanel(id); 
                    if (doInsertAfter) { 
                        if (index > 0) { 
                            panel.insertAfter(this.panels.eq(-1)); 
                        } else { 
                            panel.appendTo(this.element); 
                        } 
                    } else { 
                        panel.insertBefore(this.panels[index]); 
                    } 
                } 
                panel.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").hide(); 
                if (doInsertAfter) { 
                    li.appendTo(this.tablist); 
                } else { 
                    li.insertBefore(this.tabs[index]); 
                } 
                options.disabled = $.map(options.disabled, function(n) { 
                    return n >= index ? ++n : n; 
                }); 
                this.refresh(); 
                if (this.tabs.length === 1 && options.active === false) { 
                    this.option("active", 0); 
                } 
                this._trigger("add", null, this._ui(this.anchors[index], this.panels[index])); 
                return this; 
            }, 
            remove: function(index) { 
                index = this._getIndex(index); 
                var options = this.options 
                  , tab = this.tabs.eq(index).remove() 
                  , panel = this._getPanelForTab(tab).remove(); 
                if (tab.hasClass("ui-tabs-active") && this.anchors.length > 2) { 
                    this._activate(index + (index + 1 < this.anchors.length ? 1 : -1)); 
                } 
                options.disabled = $.map($.grep(options.disabled, function(n) { 
                    return n !== index; 
                }), function(n) { 
                    return n >= index ? --n : n; 
                }); 
                this.refresh(); 
                this._trigger("remove", null, this._ui(tab.find("a")[0], panel[0])); 
                return this; 
            } 
        }); 
        $.widget("ui.tabs", $.ui.tabs, { 
            length: function() { 
                return this.anchors.length; 
            } 
        }); 
        $.widget("ui.tabs", $.ui.tabs, { 
            options: { 
                idPrefix: "ui-tabs-" 
            }, 
            _tabId: function(tab) { 
                var a = tab.is("li") ? tab.find("a[href]") : tab; 
                a = a[0]; 
                return $(a).closest("li").attr("aria-controls") || a.title && a.title.replace(/\s/g, "_").replace(/[^\w-\-]/g, "") || this.options.idPrefix + getNextTabId(); 
            } 
        }); 
        $.widget("ui.tabs", $.ui.tabs, { 
            options: { 
                panelTemplate: "<div></div>" 
            }, 
            _createPanel: function(id) { 
                return $(this.options.panelTemplate).attr("id", id).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").data("ui-tabs-destroy", true); 
            } 
        }); 
        $.widget("ui.tabs", $.ui.tabs, { 
            _create: function() { 
                var options = this.options; 
                if (options.active === null && options.selected !== undefined) { 
                    options.active = options.selected === -1 ? false : options.selected; 
                } 
                this._super(); 
                options.selected = options.active; 
                if (options.selected === false) { 
                    options.selected = -1; 
                } 
            }, 
            _setOption: function(key, value) { 
                if (key !== "selected") { 
                    return this._super(key, value); 
                } 
                var options = this.options; 
                this._super("active", value === -1 ? false : value); 
                options.selected = options.active; 
                if (options.selected === false) { 
                    options.selected = -1; 
                } 
            }, 
            _eventHandler: function() { 
                this._superApply(arguments); 
                this.options.selected = this.options.active; 
                if (this.options.selected === false) { 
                    this.options.selected = -1; 
                } 
            } 
        }); 
        $.widget("ui.tabs", $.ui.tabs, { 
            options: { 
                show: null, 
                select: null 
            }, 
            _create: function() { 
                this._super(); 
                if (this.options.active !== false) { 
                    this._trigger("show", null, this._ui(this.active.find(".ui-tabs-anchor")[0], this._getPanelForTab(this.active)[0])); 
                } 
            }, 
            _trigger: function(type, event, data) { 
                var tab, panel, ret = this._superApply(arguments); 
                if (!ret) { 
                    return false; 
                } 
                if (type === "beforeActivate") { 
                    tab = data.newTab.length ? data.newTab : data.oldTab; 
                    panel = data.newPanel.length ? data.newPanel : data.oldPanel; 
                    ret = this._super("select", event, { 
                        tab: tab.find(".ui-tabs-anchor")[0], 
                        panel: panel[0], 
                        index: tab.closest("li").index() 
                    }); 
                } else if (type === "activate" && data.newTab.length) { 
                    ret = this._super("show", event, { 
                        tab: data.newTab.find(".ui-tabs-anchor")[0], 
                        panel: data.newPanel[0], 
                        index: data.newTab.closest("li").index() 
                    }); 
                } 
                return ret; 
            } 
        }); 
        $.widget("ui.tabs", $.ui.tabs, { 
            select: function(index) { 
                index = this._getIndex(index); 
                if (index === -1) { 
                    if (this.options.collapsible && this.options.selected !== -1) { 
                        index = this.options.selected; 
                    } else { 
                        return; 
                    } 
                } 
                this.anchors.eq(index).trigger(this.options.event + this.eventNamespace); 
            } 
        }); 
        (function() { 
            var listId = 0; 
            $.widget("ui.tabs", $.ui.tabs, { 
                options: { 
                    cookie: null 
                }, 
                _create: function() { 
                    var options = this.options, active; 
                    if (options.active == null && options.cookie) { 
                        active = parseInt(this._cookie(), 10); 
                        if (active === -1) { 
                            active = false; 
                        } 
                        options.active = active; 
                    } 
                    this._super(); 
                }, 
                _cookie: function(active) { 
                    var cookie = [this.cookie || (this.cookie = this.options.cookie.name || "ui-tabs-" + (++listId))]; 
                    if (arguments.length) { 
                        cookie.push(active === false ? -1 : active); 
                        cookie.push(this.options.cookie); 
                    } 
                    return $.cookie.apply(null, cookie); 
                }, 
                _refresh: function() { 
                    this._super(); 
                    if (this.options.cookie) { 
                        this._cookie(this.options.active, this.options.cookie); 
                    } 
                }, 
                _eventHandler: function() { 
                    this._superApply(arguments); 
                    if (this.options.cookie) { 
                        this._cookie(this.options.active, this.options.cookie); 
                    } 
                }, 
                _destroy: function() { 
                    this._super(); 
                    if (this.options.cookie) { 
                        this._cookie(null, this.options.cookie); 
                    } 
                } 
            }); 
        } 
        )(); 
        $.widget("ui.tabs", $.ui.tabs, { 
            _trigger: function(type, event, data) { 
                var _data = $.extend({}, data); 
                if (type === "load") { 
                    _data.panel = _data.panel[0]; 
                    _data.tab = _data.tab.find(".ui-tabs-anchor")[0]; 
                } 
                return this._super(type, event, _data); 
            } 
        }); 
        $.widget("ui.tabs", $.ui.tabs, { 
            options: { 
                fx: null 
            }, 
            _getFx: function() { 
                var hide, show, fx = this.options.fx; 
                if (fx) { 
                    if ($.isArray(fx)) { 
                        hide = fx[0]; 
                        show = fx[1]; 
                    } else { 
                        hide = show = fx; 
                    } 
                } 
                return fx ? { 
                    show: show, 
                    hide: hide 
                } : null; 
            }, 
            _toggle: function(event, eventData) { 
                var that = this 
                  , toShow = eventData.newPanel 
                  , toHide = eventData.oldPanel 
                  , fx = this._getFx(); 
                if (!fx) { 
                    return this._super(event, eventData); 
                } 
                that.running = true; 
                function complete() { 
                    that.running = false; 
                    that._trigger("activate", event, eventData); 
                } 
                function show() { 
                    eventData.newTab.closest("li").addClass("ui-tabs-active ui-state-active"); 
                    if (toShow.length && fx.show) { 
                        toShow.animate(fx.show, fx.show.duration, function() { 
                            complete(); 
                        }); 
                    } else { 
                        toShow.show(); 
                        complete(); 
                    } 
                } 
                if (toHide.length && fx.hide) { 
                    toHide.animate(fx.hide, fx.hide.duration, function() { 
                        eventData.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"); 
                        show(); 
                    }); 
                } else { 
                    eventData.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"); 
                    toHide.hide(); 
                    show(); 
                } 
            } 
        }); 
    } 
} 
)(jQuery); 
(function($) { 
    var increments = 0; 
    function addDescribedBy(elem, id) { 
        var describedby = (elem.attr("aria-describedby") || "").split(/\s+/); 
        describedby.push(id); 
        elem.data("ui-tooltip-id", id).attr("aria-describedby", $.trim(describedby.join(" "))); 
    } 
    function removeDescribedBy(elem) { 
        var id = elem.data("ui-tooltip-id") 
          , describedby = (elem.attr("aria-describedby") || "").split(/\s+/) 
          , index = $.inArray(id, describedby); 
        if (index !== -1) { 
            describedby.splice(index, 1); 
        } 
        elem.removeData("ui-tooltip-id"); 
        describedby = $.trim(describedby.join(" ")); 
        if (describedby) { 
            elem.attr("aria-describedby", describedby); 
        } else { 
            elem.removeAttr("aria-describedby"); 
        } 
    } 
    $.widget("ui.tooltip", { 
        version: "1.9.2", 
        options: { 
            content: function() { 
                return $(this).attr("title"); 
            }, 
            hide: true, 
            items: "[title]:not([disabled])", 
            position: { 
                my: "left top+15", 
                at: "left bottom", 
                collision: "flipfit flip" 
            }, 
            show: true, 
            tooltipClass: null, 
            track: false, 
            close: null, 
            open: null 
        }, 
        _create: function() { 
            this._on({ 
                mouseover: "open", 
                focusin: "open" 
            }); 
            this.tooltips = {}; 
            this.parents = {}; 
            if (this.options.disabled) { 
                this._disable(); 
            } 
        }, 
        _setOption: function(key, value) { 
            var that = this; 
            if (key === "disabled") { 
                this[value ? "_disable" : "_enable"](); 
                this.options[key] = value; 
                return; 
            } 
            this._super(key, value); 
            if (key === "content") { 
                $.each(this.tooltips, function(id, element) { 
                    that._updateContent(element); 
                }); 
            } 
        }, 
        _disable: function() { 
            var that = this; 
            $.each(this.tooltips, function(id, element) { 
                var event = $.Event("blur"); 
                event.target = event.currentTarget = element[0]; 
                that.close(event, true); 
            }); 
            this.element.find(this.options.items).andSelf().each(function() { 
                var element = $(this); 
                if (element.is("[title]")) { 
                    element.data("ui-tooltip-title", element.attr("title")).attr("title", ""); 
                } 
            }); 
        }, 
        _enable: function() { 
            this.element.find(this.options.items).andSelf().each(function() { 
                var element = $(this); 
                if (element.data("ui-tooltip-title")) { 
                    element.attr("title", element.data("ui-tooltip-title")); 
                } 
            }); 
        }, 
        open: function(event) { 
            var that = this 
              , target = $(event ? event.target : this.element).closest(this.options.items); 
            if (!target.length || target.data("ui-tooltip-id")) { 
                return; 
            } 
            if (target.attr("title")) { 
                target.data("ui-tooltip-title", target.attr("title")); 
            } 
            target.data("ui-tooltip-open", true); 
            if (event && event.type === "mouseover") { 
                target.parents().each(function() { 
                    var parent = $(this), blurEvent; 
                    if (parent.data("ui-tooltip-open")) { 
                        blurEvent = $.Event("blur"); 
                        blurEvent.target = blurEvent.currentTarget = this; 
                        that.close(blurEvent, true); 
                    } 
                    if (parent.attr("title")) { 
                        parent.uniqueId(); 
                        that.parents[this.id] = { 
                            element: this, 
                            title: parent.attr("title") 
                        }; 
                        parent.attr("title", ""); 
                    } 
                }); 
            } 
            this._updateContent(target, event); 
        }, 
        _updateContent: function(target, event) { 
            var content, contentOption = this.options.content, that = this, eventType = event ? event.type : null; 
            if (typeof contentOption === "string") { 
                return this._open(event, target, contentOption); 
            } 
            content = contentOption.call(target[0], function(response) { 
                if (!target.data("ui-tooltip-open")) { 
                    return; 
                } 
                that._delay(function() { 
                    if (event) { 
                        event.type = eventType; 
                    } 
                    this._open(event, target, response); 
                }); 
            }); 
            if (content) { 
                this._open(event, target, content); 
            } 
        }, 
        _open: function(event, target, content) { 
            var tooltip, events, delayedShow, positionOption = $.extend({}, this.options.position); 
            if (!content) { 
                return; 
            } 
            tooltip = this._find(target); 
            if (tooltip.length) { 
                tooltip.find(".ui-tooltip-content").html(content); 
                return; 
            } 
            if (target.is("[title]")) { 
                if (event && event.type === "mouseover") { 
                    target.attr("title", ""); 
                } else { 
                    target.removeAttr("title"); 
                } 
            } 
            tooltip = this._tooltip(target); 
            addDescribedBy(target, tooltip.attr("id")); 
            tooltip.find(".ui-tooltip-content").html(content); 
            function position(event) { 
                positionOption.of = event; 
                if (tooltip.is(":hidden")) { 
                    return; 
                } 
                tooltip.position(positionOption); 
            } 
            if (this.options.track && event && /^mouse/.test(event.type)) { 
                this._on(this.document, { 
                    mousemove: position 
                }); 
                position(event); 
            } else { 
                tooltip.position($.extend({ 
                    of: target 
                }, this.options.position)); 
            } 
            tooltip.hide(); 
            this._show(tooltip, this.options.show); 
            if (this.options.show && this.options.show.delay) { 
                delayedShow = setInterval(function() { 
                    if (tooltip.is(":visible")) { 
                        position(positionOption.of); 
                        clearInterval(delayedShow); 
                    } 
                }, $.fx.interval); 
            } 
            this._trigger("open", event, { 
                tooltip: tooltip 
            }); 
            events = { 
                keyup: function(event) { 
                    if (event.keyCode === $.ui.keyCode.ESCAPE) { 
                        var fakeEvent = $.Event(event); 
                        fakeEvent.currentTarget = target[0]; 
                        this.close(fakeEvent, true); 
                    } 
                }, 
                remove: function() { 
                    this._removeTooltip(tooltip); 
                } 
            }; 
            if (!event || event.type === "mouseover") { 
                events.mouseleave = "close"; 
            } 
            if (!event || event.type === "focusin") { 
                events.focusout = "close"; 
            } 
            this._on(true, target, events); 
        }, 
        close: function(event) { 
            var that = this 
              , target = $(event ? event.currentTarget : this.element) 
              , tooltip = this._find(target); 
            if (this.closing) { 
                return; 
            } 
            if (target.data("ui-tooltip-title")) { 
                target.attr("title", target.data("ui-tooltip-title")); 
            } 
            removeDescribedBy(target); 
            tooltip.stop(true); 
            this._hide(tooltip, this.options.hide, function() { 
                that._removeTooltip($(this)); 
            }); 
            target.removeData("ui-tooltip-open"); 
            this._off(target, "mouseleave focusout keyup"); 
            if (target[0] !== this.element[0]) { 
                this._off(target, "remove"); 
            } 
            this._off(this.document, "mousemove"); 
            if (event && event.type === "mouseleave") { 
                $.each(this.parents, function(id, parent) { 
                    $(parent.element).attr("title", parent.title); 
                    delete that.parents[id]; 
                }); 
            } 
            this.closing = true; 
            this._trigger("close", event, { 
                tooltip: tooltip 
            }); 
            this.closing = false; 
        }, 
        _tooltip: function(element) { 
            var id = "ui-tooltip-" + increments++ 
              , tooltip = $("<div>").attr({ 
                id: id, 
                role: "tooltip" 
            }).addClass("ui-tooltip ui-widget ui-corner-all ui-widget-content " + (this.options.tooltipClass || "")); 
            $("<div>").addClass("ui-tooltip-content").appendTo(tooltip); 
            tooltip.appendTo(this.document[0].body); 
            if ($.fn.bgiframe) { 
                tooltip.bgiframe(); 
            } 
            this.tooltips[id] = element; 
            return tooltip; 
        }, 
        _find: function(target) { 
            var id = target.data("ui-tooltip-id"); 
            return id ? $("#" + id) : $(); 
        }, 
        _removeTooltip: function(tooltip) { 
            tooltip.remove(); 
            delete this.tooltips[tooltip.attr("id")]; 
        }, 
        _destroy: function() { 
            var that = this; 
            $.each(this.tooltips, function(id, element) { 
                var event = $.Event("blur"); 
                event.target = event.currentTarget = element[0]; 
                that.close(event, true); 
                $("#" + id).remove(); 
                if (element.data("ui-tooltip-title")) { 
                    element.attr("title", element.data("ui-tooltip-title")); 
                    element.removeData("ui-tooltip-title"); 
                } 
            }); 
        } 
    }); 
}(jQuery)); 
;(jQuery.effects || (function($, undefined) { 
    var backCompat = $.uiBackCompat !== false 
      , dataSpace = "ui-effects-"; 
    $.effects = { 
        effect: {} 
    }; 
    (function(jQuery, undefined) { 
        var stepHooks = "backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor".split(" "), rplusequals = /^([\-+])=\s*(\d+\.?\d*)/, stringParsers = [{ 
            re: /rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/, 
            parse: function(execResult) { 
                return [execResult[1], execResult[2], execResult[3], execResult[4]]; 
            } 
        }, { 
            re: /rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/, 
            parse: function(execResult) { 
                return [execResult[1] * 2.55, execResult[2] * 2.55, execResult[3] * 2.55, execResult[4]]; 
            } 
        }, { 
            re: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/, 
            parse: function(execResult) { 
                return [parseInt(execResult[1], 16), parseInt(execResult[2], 16), parseInt(execResult[3], 16)]; 
            } 
        }, { 
            re: /#([a-f0-9])([a-f0-9])([a-f0-9])/, 
            parse: function(execResult) { 
                return [parseInt(execResult[1] + execResult[1], 16), parseInt(execResult[2] + execResult[2], 16), parseInt(execResult[3] + execResult[3], 16)]; 
            } 
        }, { 
            re: /hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/, 
            space: "hsla", 
            parse: function(execResult) { 
                return [execResult[1], execResult[2] / 100, execResult[3] / 100, execResult[4]]; 
            } 
        }], color = jQuery.Color = function(color, green, blue, alpha) { 
            return new jQuery.Color.fn.parse(color,green,blue,alpha); 
        } 
        , spaces = { 
            rgba: { 
                props: { 
                    red: { 
                        idx: 0, 
                        type: "byte" 
                    }, 
                    green: { 
                        idx: 1, 
                        type: "byte" 
                    }, 
                    blue: { 
                        idx: 2, 
                        type: "byte" 
                    } 
                } 
            }, 
            hsla: { 
                props: { 
                    hue: { 
                        idx: 0, 
                        type: "degrees" 
                    }, 
                    saturation: { 
                        idx: 1, 
                        type: "percent" 
                    }, 
                    lightness: { 
                        idx: 2, 
                        type: "percent" 
                    } 
                } 
            } 
        }, propTypes = { 
            "byte": { 
                floor: true, 
                max: 255 
            }, 
            "percent": { 
                max: 1 
            }, 
            "degrees": { 
                mod: 360, 
                floor: true 
            } 
        }, support = color.support = {}, supportElem = jQuery("<p>")[0], colors, each = jQuery.each; 
        supportElem.style.cssText = "background-color:rgba(1,1,1,.5)"; 
        support.rgba = supportElem.style.backgroundColor.indexOf("rgba") > -1; 
        each(spaces, function(spaceName, space) { 
            space.cache = "_" + spaceName; 
            space.props.alpha = { 
                idx: 3, 
                type: "percent", 
                def: 1 
            }; 
        }); 
        function clamp(value, prop, allowEmpty) { 
            var type = propTypes[prop.type] || {}; 
            if (value == null) { 
                return (allowEmpty || !prop.def) ? null : prop.def; 
            } 
            value = type.floor ? ~~value : parseFloat(value); 
            if (isNaN(value)) { 
                return prop.def; 
            } 
            if (type.mod) { 
                return (value + type.mod) % type.mod; 
            } 
            return 0 > value ? 0 : type.max < value ? type.max : value; 
        } 
        function stringParse(string) { 
            var inst = color() 
              , rgba = inst._rgba = []; 
            string = string.toLowerCase(); 
            each(stringParsers, function(i, parser) { 
                var parsed, match = parser.re.exec(string), values = match && parser.parse(match), spaceName = parser.space || "rgba"; 
                if (values) { 
                    parsed = inst[spaceName](values); 
                    inst[spaces[spaceName].cache] = parsed[spaces[spaceName].cache]; 
                    rgba = inst._rgba = parsed._rgba; 
                    return false; 
                } 
            }); 
            if (rgba.length) { 
                if (rgba.join() === "0,0,0,0") { 
                    jQuery.extend(rgba, colors.transparent); 
                } 
                return inst; 
            } 
            return colors[string]; 
        } 
        color.fn = jQuery.extend(color.prototype, { 
            parse: function(red, green, blue, alpha) { 
                if (red === undefined) { 
                    this._rgba = [null, null, null, null]; 
                    return this; 
                } 
                if (red.jquery || red.nodeType) { 
                    red = jQuery(red).css(green); 
                    green = undefined; 
                } 
                var inst = this 
                  , type = jQuery.type(red) 
                  , rgba = this._rgba = []; 
                if (green !== undefined) { 
                    red = [red, green, blue, alpha]; 
                    type = "array"; 
                } 
                if (type === "string") { 
                    return this.parse(stringParse(red) || colors._default); 
                } 
                if (type === "array") { 
                    each(spaces.rgba.props, function(key, prop) { 
                        rgba[prop.idx] = clamp(red[prop.idx], prop); 
                    }); 
                    return this; 
                } 
                if (type === "object") { 
                    if (red instanceof color) { 
                        each(spaces, function(spaceName, space) { 
                            if (red[space.cache]) { 
                                inst[space.cache] = red[space.cache].slice(); 
                            } 
                        }); 
                    } else { 
                        each(spaces, function(spaceName, space) { 
                            var cache = space.cache; 
                            each(space.props, function(key, prop) { 
                                if (!inst[cache] && space.to) { 
                                    if (key === "alpha" || red[key] == null) { 
                                        return; 
                                    } 
                                    inst[cache] = space.to(inst._rgba); 
                                } 
                                inst[cache][prop.idx] = clamp(red[key], prop, true); 
                            }); 
                            if (inst[cache] && $.inArray(null, inst[cache].slice(0, 3)) < 0) { 
                                inst[cache][3] = 1; 
                                if (space.from) { 
                                    inst._rgba = space.from(inst[cache]); 
                                } 
                            } 
                        }); 
                    } 
                    return this; 
                } 
            }, 
            is: function(compare) { 
                var is = color(compare) 
                  , same = true 
                  , inst = this; 
                each(spaces, function(_, space) { 
                    var localCache, isCache = is[space.cache]; 
                    if (isCache) { 
                        localCache = inst[space.cache] || space.to && space.to(inst._rgba) || []; 
                        each(space.props, function(_, prop) { 
                            if (isCache[prop.idx] != null) { 
                                same = (isCache[prop.idx] === localCache[prop.idx]); 
                                return same; 
                            } 
                        }); 
                    } 
                    return same; 
                }); 
                return same; 
            }, 
            _space: function() { 
                var used = [] 
                  , inst = this; 
                each(spaces, function(spaceName, space) { 
                    if (inst[space.cache]) { 
                        used.push(spaceName); 
                    } 
                }); 
                return used.pop(); 
            }, 
            transition: function(other, distance) { 
                var end = color(other) 
                  , spaceName = end._space() 
                  , space = spaces[spaceName] 
                  , startColor = this.alpha() === 0 ? color("transparent") : this 
                  , start = startColor[space.cache] || space.to(startColor._rgba) 
                  , result = start.slice(); 
                end = end[space.cache]; 
                each(space.props, function(key, prop) { 
                    var index = prop.idx 
                      , startValue = start[index] 
                      , endValue = end[index] 
                      , type = propTypes[prop.type] || {}; 
                    if (endValue === null) { 
                        return; 
                    } 
                    if (startValue === null) { 
                        result[index] = endValue; 
                    } else { 
                        if (type.mod) { 
                            if (endValue - startValue > type.mod / 2) { 
                                startValue += type.mod; 
                            } else if (startValue - endValue > type.mod / 2) { 
                                startValue -= type.mod; 
                            } 
                        } 
                        result[index] = clamp((endValue - startValue) * distance + startValue, prop); 
                    } 
                }); 
                return this[spaceName](result); 
            }, 
            blend: function(opaque) { 
                if (this._rgba[3] === 1) { 
                    return this; 
                } 
                var rgb = this._rgba.slice() 
                  , a = rgb.pop() 
                  , blend = color(opaque)._rgba; 
                return color(jQuery.map(rgb, function(v, i) { 
                    return (1 - a) * blend[i] + a * v; 
                })); 
            }, 
            toRgbaString: function() { 
                var prefix = "rgba(" 
                  , rgba = jQuery.map(this._rgba, function(v, i) { 
                    return v == null ? (i > 2 ? 1 : 0) : v; 
                }); 
                if (rgba[3] === 1) { 
                    rgba.pop(); 
                    prefix = "rgb("; 
                } 
                return prefix + rgba.join() + ")"; 
            }, 
            toHslaString: function() { 
                var prefix = "hsla(" 
                  , hsla = jQuery.map(this.hsla(), function(v, i) { 
                    if (v == null) { 
                        v = i > 2 ? 1 : 0; 
                    } 
                    if (i && i < 3) { 
                        v = Math.round(v * 100) + "%"; 
                    } 
                    return v; 
                }); 
                if (hsla[3] === 1) { 
                    hsla.pop(); 
                    prefix = "hsl("; 
                } 
                return prefix + hsla.join() + ")"; 
            }, 
            toHexString: function(includeAlpha) { 
                var rgba = this._rgba.slice() 
                  , alpha = rgba.pop(); 
                if (includeAlpha) { 
                    rgba.push(~~(alpha * 255)); 
                } 
                return "#" + jQuery.map(rgba, function(v) { 
                    v = (v || 0).toString(16); 
                    return v.length === 1 ? "0" + v : v; 
                }).join(""); 
            }, 
            toString: function() { 
                return this._rgba[3] === 0 ? "transparent" : this.toRgbaString(); 
            } 
        }); 
        color.fn.parse.prototype = color.fn; 
        function hue2rgb(p, q, h) { 
            h = (h + 1) % 1; 
            if (h * 6 < 1) { 
                return p + (q - p) * h * 6; 
            } 
            if (h * 2 < 1) { 
                return q; 
            } 
            if (h * 3 < 2) { 
                return p + (q - p) * ((2 / 3) - h) * 6; 
            } 
            return p; 
        } 
        spaces.hsla.to = function(rgba) { 
            if (rgba[0] == null || rgba[1] == null || rgba[2] == null) { 
                return [null, null, null, rgba[3]]; 
            } 
            var r = rgba[0] / 255, g = rgba[1] / 255, b = rgba[2] / 255, a = rgba[3], max = Math.max(r, g, b), min = Math.min(r, g, b), diff = max - min, add = max + min, l = add * 0.5, h, s; 
            if (min === max) { 
                h = 0; 
            } else if (r === max) { 
                h = (60 * (g - b) / diff) + 360; 
            } else if (g === max) { 
                h = (60 * (b - r) / diff) + 120; 
            } else { 
                h = (60 * (r - g) / diff) + 240; 
            } 
            if (l === 0 || l === 1) { 
                s = l; 
            } else if (l <= 0.5) { 
                s = diff / add; 
            } else { 
                s = diff / (2 - add); 
            } 
            return [Math.round(h) % 360, s, l, a == null ? 1 : a]; 
        } 
        ; 
        spaces.hsla.from = function(hsla) { 
            if (hsla[0] == null || hsla[1] == null || hsla[2] == null) { 
                return [null, null, null, hsla[3]]; 
            } 
            var h = hsla[0] / 360 
              , s = hsla[1] 
              , l = hsla[2] 
              , a = hsla[3] 
              , q = l <= 0.5 ? l * (1 + s) : l + s - l * s 
              , p = 2 * l - q; 
            return [Math.round(hue2rgb(p, q, h + (1 / 3)) * 255), Math.round(hue2rgb(p, q, h) * 255), Math.round(hue2rgb(p, q, h - (1 / 3)) * 255), a]; 
        } 
        ; 
        each(spaces, function(spaceName, space) { 
            var props = space.props 
              , cache = space.cache 
              , to = space.to 
              , from = space.from; 
            color.fn[spaceName] = function(value) { 
                if (to && !this[cache]) { 
                    this[cache] = to(this._rgba); 
                } 
                if (value === undefined) { 
                    return this[cache].slice(); 
                } 
                var ret, type = jQuery.type(value), arr = (type === "array" || type === "object") ? value : arguments, local = this[cache].slice(); 
                each(props, function(key, prop) { 
                    var val = arr[type === "object" ? key : prop.idx]; 
                    if (val == null) { 
                        val = local[prop.idx]; 
                    } 
                    local[prop.idx] = clamp(val, prop); 
                }); 
                if (from) { 
                    ret = color(from(local)); 
                    ret[cache] = local; 
                    return ret; 
                } else { 
                    return color(local); 
                } 
            } 
            ; 
            each(props, function(key, prop) { 
                if (color.fn[key]) { 
                    return; 
                } 
                color.fn[key] = function(value) { 
                    var vtype = jQuery.type(value), fn = (key === "alpha" ? (this._hsla ? "hsla" : "rgba") : spaceName), local = this[fn](), cur = local[prop.idx], match; 
                    if (vtype === "undefined") { 
                        return cur; 
                    } 
                    if (vtype === "function") { 
                        value = value.call(this, cur); 
                        vtype = jQuery.type(value); 
                    } 
                    if (value == null && prop.empty) { 
                        return this; 
                    } 
                    if (vtype === "string") { 
                        match = rplusequals.exec(value); 
                        if (match) { 
                            value = cur + parseFloat(match[2]) * (match[1] === "+" ? 1 : -1); 
                        } 
                    } 
                    local[prop.idx] = value; 
                    return this[fn](local); 
                } 
                ; 
            }); 
        }); 
        each(stepHooks, function(i, hook) { 
            jQuery.cssHooks[hook] = { 
                set: function(elem, value) { 
                    var parsed, curElem, backgroundColor = ""; 
                    if (jQuery.type(value) !== "string" || (parsed = stringParse(value))) { 
                        value = color(parsed || value); 
                        if (!support.rgba && value._rgba[3] !== 1) { 
                            curElem = hook === "backgroundColor" ? elem.parentNode : elem; 
                            while ((backgroundColor === "" || backgroundColor === "transparent") && curElem && curElem.style) { 
                                try { 
                                    backgroundColor = jQuery.css(curElem, "backgroundColor"); 
                                    curElem = curElem.parentNode; 
                                } catch (e) {} 
                            } 
                            value = value.blend(backgroundColor && backgroundColor !== "transparent" ? backgroundColor : "_default"); 
                        } 
                        value = value.toRgbaString(); 
                    } 
                    try { 
                        elem.style[hook] = value; 
                    } catch (error) {} 
                } 
            }; 
            jQuery.fx.step[hook] = function(fx) { 
                if (!fx.colorInit) { 
                    fx.start = color(fx.elem, hook); 
                    fx.end = color(fx.end); 
                    fx.colorInit = true; 
                } 
                jQuery.cssHooks[hook].set(fx.elem, fx.start.transition(fx.end, fx.pos)); 
            } 
            ; 
        }); 
        jQuery.cssHooks.borderColor = { 
            expand: function(value) { 
                var expanded = {}; 
                each(["Top", "Right", "Bottom", "Left"], function(i, part) { 
                    expanded["border" + part + "Color"] = value; 
                }); 
                return expanded; 
            } 
        }; 
        colors = jQuery.Color.names = { 
            aqua: "#00ffff", 
            black: "#000000", 
            blue: "#0000ff", 
            fuchsia: "#ff00ff", 
            gray: "#808080", 
            green: "#008000", 
            lime: "#00ff00", 
            maroon: "#800000", 
            navy: "#000080", 
            olive: "#808000", 
            purple: "#800080", 
            red: "#ff0000", 
            silver: "#c0c0c0", 
            teal: "#008080", 
            white: "#ffffff", 
            yellow: "#ffff00", 
            transparent: [null, null, null, 0], 
            _default: "#ffffff" 
        }; 
    } 
    )(jQuery); 
    (function() { 
        var classAnimationActions = ["add", "remove", "toggle"] 
          , shorthandStyles = { 
            border: 1, 
            borderBottom: 1, 
            borderColor: 1, 
            borderLeft: 1, 
            borderRight: 1, 
            borderTop: 1, 
            borderWidth: 1, 
            margin: 1, 
            padding: 1 
        }; 
        $.each(["borderLeftStyle", "borderRightStyle", "borderBottomStyle", "borderTopStyle"], function(_, prop) { 
            $.fx.step[prop] = function(fx) { 
                if (fx.end !== "none" && !fx.setAttr || fx.pos === 1 && !fx.setAttr) { 
                    jQuery.style(fx.elem, prop, fx.end); 
                    fx.setAttr = true; 
                } 
            } 
            ; 
        }); 
        function getElementStyles() { 
            var style = this.ownerDocument.defaultView ? this.ownerDocument.defaultView.getComputedStyle(this, null) : this.currentStyle, newStyle = {}, key, len; 
            if (style && style.length && style[0] && style[style[0]]) { 
                len = style.length; 
                while (len--) { 
                    key = style[len]; 
                    if (typeof style[key] === "string") { 
                        newStyle[$.camelCase(key)] = style[key]; 
                    } 
                } 
            } else { 
                for (key in style) { 
                    if (typeof style[key] === "string") { 
                        newStyle[key] = style[key]; 
                    } 
                } 
            } 
            return newStyle; 
        } 
        function styleDifference(oldStyle, newStyle) { 
            var diff = {}, name, value; 
            for (name in newStyle) { 
                value = newStyle[name]; 
                if (oldStyle[name] !== value) { 
                    if (!shorthandStyles[name]) { 
                        if ($.fx.step[name] || !isNaN(parseFloat(value))) { 
                            diff[name] = value; 
                        } 
                    } 
                } 
            } 
            return diff; 
        } 
        $.effects.animateClass = function(value, duration, easing, callback) { 
            var o = $.speed(duration, easing, callback); 
            return this.queue(function() { 
                var animated = $(this), baseClass = animated.attr("class") || "", applyClassChange, allAnimations = o.children ? animated.find("*").andSelf() : animated; 
                allAnimations = allAnimations.map(function() { 
                    var el = $(this); 
                    return { 
                        el: el, 
                        start: getElementStyles.call(this) 
                    }; 
                }); 
                applyClassChange = function() { 
                    $.each(classAnimationActions, function(i, action) { 
                        if (value[action]) { 
                            animated[action + "Class"](value[action]); 
                        } 
                    }); 
                } 
                ; 
                applyClassChange(); 
                allAnimations = allAnimations.map(function() { 
                    this.end = getElementStyles.call(this.el[0]); 
                    this.diff = styleDifference(this.start, this.end); 
                    return this; 
                }); 
                animated.attr("class", baseClass); 
                allAnimations = allAnimations.map(function() { 
                    var styleInfo = this 
                      , dfd = $.Deferred() 
                      , opts = jQuery.extend({}, o, { 
                        queue: false, 
                        complete: function() { 
                            dfd.resolve(styleInfo); 
                        } 
                    }); 
                    this.el.animate(this.diff, opts); 
                    return dfd.promise(); 
                }); 
                $.when.apply($, allAnimations.get()).done(function() { 
                    applyClassChange(); 
                    $.each(arguments, function() { 
                        var el = this.el; 
                        $.each(this.diff, function(key) { 
                            el.css(key, ''); 
                        }); 
                    }); 
                    o.complete.call(animated[0]); 
                }); 
            }); 
        } 
        ; 
        $.fn.extend({ 
            _addClass: $.fn.addClass, 
            addClass: function(classNames, speed, easing, callback) { 
                return speed ? $.effects.animateClass.call(this, { 
                    add: classNames 
                }, speed, easing, callback) : this._addClass(classNames); 
            }, 
            _removeClass: $.fn.removeClass, 
            removeClass: function(classNames, speed, easing, callback) { 
                return speed ? $.effects.animateClass.call(this, { 
                    remove: classNames 
                }, speed, easing, callback) : this._removeClass(classNames); 
            }, 
            _toggleClass: $.fn.toggleClass, 
            toggleClass: function(classNames, force, speed, easing, callback) { 
                if (typeof force === "boolean" || force === undefined) { 
                    if (!speed) { 
                        return this._toggleClass(classNames, force); 
                    } else { 
                        return $.effects.animateClass.call(this, (force ? { 
                            add: classNames 
                        } : { 
                            remove: classNames 
                        }), speed, easing, callback); 
                    } 
                } else { 
                    return $.effects.animateClass.call(this, { 
                        toggle: classNames 
                    }, force, speed, easing); 
                } 
            }, 
            switchClass: function(remove, add, speed, easing, callback) { 
                return $.effects.animateClass.call(this, { 
                    add: add, 
                    remove: remove 
                }, speed, easing, callback); 
            } 
        }); 
    } 
    )(); 
    (function() { 
        $.extend($.effects, { 
            version: "1.9.2", 
            save: function(element, set) { 
                for (var i = 0; i < set.length; i++) { 
                    if (set[i] !== null) { 
                        element.data(dataSpace + set[i], element[0].style[set[i]]); 
                    } 
                } 
            }, 
            restore: function(element, set) { 
                var val, i; 
                for (i = 0; i < set.length; i++) { 
                    if (set[i] !== null) { 
                        val = element.data(dataSpace + set[i]); 
                        if (val === undefined) { 
                            val = ""; 
                        } 
                        element.css(set[i], val); 
                    } 
                } 
            }, 
            setMode: function(el, mode) { 
                if (mode === "toggle") { 
                    mode = el.is(":hidden") ? "show" : "hide"; 
                } 
                return mode; 
            }, 
            getBaseline: function(origin, original) { 
                var y, x; 
                switch (origin[0]) { 
                case "top": 
                    y = 0; 
                    break; 
                case "middle": 
                    y = 0.5; 
                    break; 
                case "bottom": 
                    y = 1; 
                    break; 
                default: 
                    y = origin[0] / original.height; 
                } 
                switch (origin[1]) { 
                case "left": 
                    x = 0; 
                    break; 
                case "center": 
                    x = 0.5; 
                    break; 
                case "right": 
                    x = 1; 
                    break; 
                default: 
                    x = origin[1] / original.width; 
                } 
                return { 
                    x: x, 
                    y: y 
                }; 
            }, 
            createWrapper: function(element) { 
                if (element.parent().is(".ui-effects-wrapper")) { 
                    return element.parent(); 
                } 
                var props = { 
                    width: element.outerWidth(true), 
                    height: element.outerHeight(true), 
                    "float": element.css("float") 
                } 
                  , wrapper = $("<div></div>").addClass("ui-effects-wrapper").css({ 
                    fontSize: "100%", 
                    background: "transparent", 
                    border: "none", 
                    margin: 0, 
                    padding: 0 
                }) 
                  , size = { 
                    width: element.width(), 
                    height: element.height() 
                } 
                  , active = document.activeElement; 
                try { 
                    active.id; 
                } catch (e) { 
                    active = document.body; 
                } 
                element.wrap(wrapper); 
                if (element[0] === active || $.contains(element[0], active)) { 
                    $(active).focus(); 
                } 
                wrapper = element.parent(); 
                if (element.css("position") === "static") { 
                    wrapper.css({ 
                        position: "relative" 
                    }); 
                    element.css({ 
                        position: "relative" 
                    }); 
                } else { 
                    $.extend(props, { 
                        position: element.css("position"), 
                        zIndex: element.css("z-index") 
                    }); 
                    $.each(["top", "left", "bottom", "right"], function(i, pos) { 
                        props[pos] = element.css(pos); 
                        if (isNaN(parseInt(props[pos], 10))) { 
                            props[pos] = "auto"; 
                        } 
                    }); 
                    element.css({ 
                        position: "relative", 
                        top: 0, 
                        left: 0, 
                        right: "auto", 
                        bottom: "auto" 
                    }); 
                } 
                element.css(size); 
                return wrapper.css(props).show(); 
            }, 
            removeWrapper: function(element) { 
                var active = document.activeElement; 
                if (element.parent().is(".ui-effects-wrapper")) { 
                    element.parent().replaceWith(element); 
                    if (element[0] === active || $.contains(element[0], active)) { 
                        $(active).focus(); 
                    } 
                } 
                return element; 
            }, 
            setTransition: function(element, list, factor, value) { 
                value = value || {}; 
                $.each(list, function(i, x) { 
                    var unit = element.cssUnit(x); 
                    if (unit[0] > 0) { 
                        value[x] = unit[0] * factor + unit[1]; 
                    } 
                }); 
                return value; 
            } 
        }); 
        function _normalizeArguments(effect, options, speed, callback) { 
            if ($.isPlainObject(effect)) { 
                options = effect; 
                effect = effect.effect; 
            } 
            effect = { 
                effect: effect 
            }; 
            if (options == null) { 
                options = {}; 
            } 
            if ($.isFunction(options)) { 
                callback = options; 
                speed = null; 
                options = {}; 
            } 
            if (typeof options === "number" || $.fx.speeds[options]) { 
                callback = speed; 
                speed = options; 
                options = {}; 
            } 
            if ($.isFunction(speed)) { 
                callback = speed; 
                speed = null; 
            } 
            if (options) { 
                $.extend(effect, options); 
            } 
            speed = speed || options.duration; 
            effect.duration = $.fx.off ? 0 : typeof speed === "number" ? speed : speed in $.fx.speeds ? $.fx.speeds[speed] : $.fx.speeds._default; 
            effect.complete = callback || options.complete; 
            return effect; 
        } 
        function standardSpeed(speed) { 
            if (!speed || typeof speed === "number" || $.fx.speeds[speed]) { 
                return true; 
            } 
            if (typeof speed === "string" && !$.effects.effect[speed]) { 
                if (backCompat && $.effects[speed]) { 
                    return false; 
                } 
                return true; 
            } 
            return false; 
        } 
        $.fn.extend({ 
            effect: function() { 
                var args = _normalizeArguments.apply(this, arguments) 
                  , mode = args.mode 
                  , queue = args.queue 
                  , effectMethod = $.effects.effect[args.effect] 
                  , oldEffectMethod = !effectMethod && backCompat && $.effects[args.effect]; 
                if ($.fx.off || !(effectMethod || oldEffectMethod)) { 
                    if (mode) { 
                        return this[mode](args.duration, args.complete); 
                    } else { 
                        return this.each(function() { 
                            if (args.complete) { 
                                args.complete.call(this); 
                            } 
                        }); 
                    } 
                } 
                function run(next) { 
                    var elem = $(this) 
                      , complete = args.complete 
                      , mode = args.mode; 
                    function done() { 
                        if ($.isFunction(complete)) { 
                            complete.call(elem[0]); 
                        } 
                        if ($.isFunction(next)) { 
                            next(); 
                        } 
                    } 
                    if (elem.is(":hidden") ? mode === "hide" : mode === "show") { 
                        done(); 
                    } else { 
                        effectMethod.call(elem[0], args, done); 
                    } 
                } 
                if (effectMethod) { 
                    return queue === false ? this.each(run) : this.queue(queue || "fx", run); 
                } else { 
                    return oldEffectMethod.call(this, { 
                        options: args, 
                        duration: args.duration, 
                        callback: args.complete, 
                        mode: args.mode 
                    }); 
                } 
            }, 
            _show: $.fn.show, 
            show: function(speed) { 
                if (standardSpeed(speed)) { 
                    return this._show.apply(this, arguments); 
                } else { 
                    var args = _normalizeArguments.apply(this, arguments); 
                    args.mode = "show"; 
                    return this.effect.call(this, args); 
                } 
            }, 
            _hide: $.fn.hide, 
            hide: function(speed) { 
                if (standardSpeed(speed)) { 
                    return this._hide.apply(this, arguments); 
                } else { 
                    var args = _normalizeArguments.apply(this, arguments); 
                    args.mode = "hide"; 
                    return this.effect.call(this, args); 
                } 
            }, 
            __toggle: $.fn.toggle, 
            toggle: function(speed) { 
                if (standardSpeed(speed) || typeof speed === "boolean" || $.isFunction(speed)) { 
                    return this.__toggle.apply(this, arguments); 
                } else { 
                    var args = _normalizeArguments.apply(this, arguments); 
                    args.mode = "toggle"; 
                    return this.effect.call(this, args); 
                } 
            }, 
            cssUnit: function(key) { 
                var style = this.css(key) 
                  , val = []; 
                $.each(["em", "px", "%", "pt"], function(i, unit) { 
                    if (style.indexOf(unit) > 0) { 
                        val = [parseFloat(style), unit]; 
                    } 
                }); 
                return val; 
            } 
        }); 
    } 
    )(); 
    (function() { 
        var baseEasings = {}; 
        $.each(["Quad", "Cubic", "Quart", "Quint", "Expo"], function(i, name) { 
            baseEasings[name] = function(p) { 
                return Math.pow(p, i + 2); 
            } 
            ; 
        }); 
        $.extend(baseEasings, { 
            Sine: function(p) { 
                return 1 - Math.cos(p * Math.PI / 2); 
            }, 
            Circ: function(p) { 
                return 1 - Math.sqrt(1 - p * p); 
            }, 
            Elastic: function(p) { 
                return p === 0 || p === 1 ? p : -Math.pow(2, 8 * (p - 1)) * Math.sin(((p - 1) * 80 - 7.5) * Math.PI / 15); 
            }, 
            Back: function(p) { 
                return p * p * (3 * p - 2); 
            }, 
            Bounce: function(p) { 
                var pow2, bounce = 4; 
                while (p < ((pow2 = Math.pow(2, --bounce)) - 1) / 11) {} 
                return 1 / Math.pow(4, 3 - bounce) - 7.5625 * Math.pow((pow2 * 3 - 2) / 22 - p, 2); 
            } 
        }); 
        $.each(baseEasings, function(name, easeIn) { 
            $.easing["easeIn" + name] = easeIn; 
            $.easing["easeOut" + name] = function(p) { 
                return 1 - easeIn(1 - p); 
            } 
            ; 
            $.easing["easeInOut" + name] = function(p) { 
                return p < 0.5 ? easeIn(p * 2) / 2 : 1 - easeIn(p * -2 + 2) / 2; 
            } 
            ; 
        }); 
    } 
    )(); 
} 
)(jQuery)); 
(function($, undefined) { 
    var rvertical = /up|down|vertical/ 
      , rpositivemotion = /up|left|vertical|horizontal/; 
    $.effects.effect.blind = function(o, done) { 
        var el = $(this), props = ["position", "top", "bottom", "left", "right", "height", "width"], mode = $.effects.setMode(el, o.mode || "hide"), direction = o.direction || "up", vertical = rvertical.test(direction), ref = vertical ? "height" : "width", ref2 = vertical ? "top" : "left", motion = rpositivemotion.test(direction), animation = {}, show = mode === "show", wrapper, distance, margin; 
        if (el.parent().is(".ui-effects-wrapper")) { 
            $.effects.save(el.parent(), props); 
        } else { 
            $.effects.save(el, props); 
        } 
        el.show(); 
        wrapper = $.effects.createWrapper(el).css({ 
            overflow: "hidden" 
        }); 
        distance = wrapper[ref](); 
        margin = parseFloat(wrapper.css(ref2)) || 0; 
        animation[ref] = show ? distance : 0; 
        if (!motion) { 
            el.css(vertical ? "bottom" : "right", 0).css(vertical ? "top" : "left", "auto").css({ 
                position: "absolute" 
            }); 
            animation[ref2] = show ? margin : distance + margin; 
        } 
        if (show) { 
            wrapper.css(ref, 0); 
            if (!motion) { 
                wrapper.css(ref2, margin + distance); 
            } 
        } 
        wrapper.animate(animation, { 
            duration: o.duration, 
            easing: o.easing, 
            queue: false, 
            complete: function() { 
                if (mode === "hide") { 
                    el.hide(); 
                } 
                $.effects.restore(el, props); 
                $.effects.removeWrapper(el); 
                done(); 
            } 
        }); 
    } 
    ; 
} 
)(jQuery); 
(function($, undefined) { 
    $.effects.effect.bounce = function(o, done) { 
        var el = $(this), props = ["position", "top", "bottom", "left", "right", "height", "width"], mode = $.effects.setMode(el, o.mode || "effect"), hide = mode === "hide", show = mode === "show", direction = o.direction || "up", distance = o.distance, times = o.times || 5, anims = times * 2 + (show || hide ? 1 : 0), speed = o.duration / anims, easing = o.easing, ref = (direction === "up" || direction === "down") ? "top" : "left", motion = (direction === "up" || direction === "left"), i, upAnim, downAnim, queue = el.queue(), queuelen = queue.length; 
        if (show || hide) { 
            props.push("opacity"); 
        } 
        $.effects.save(el, props); 
        el.show(); 
        $.effects.createWrapper(el); 
        if (!distance) { 
            distance = el[ref === "top" ? "outerHeight" : "outerWidth"]() / 3; 
        } 
        if (show) { 
            downAnim = { 
                opacity: 1 
            }; 
            downAnim[ref] = 0; 
            el.css("opacity", 0).css(ref, motion ? -distance * 2 : distance * 2).animate(downAnim, speed, easing); 
        } 
        if (hide) { 
            distance = distance / Math.pow(2, times - 1); 
        } 
        downAnim = {}; 
        downAnim[ref] = 0; 
        for (i = 0; i < times; i++) { 
            upAnim = {}; 
            upAnim[ref] = (motion ? "-=" : "+=") + distance; 
            el.animate(upAnim, speed, easing).animate(downAnim, speed, easing); 
            distance = hide ? distance * 2 : distance / 2; 
        } 
        if (hide) { 
            upAnim = { 
                opacity: 0 
            }; 
            upAnim[ref] = (motion ? "-=" : "+=") + distance; 
            el.animate(upAnim, speed, easing); 
        } 
        el.queue(function() { 
            if (hide) { 
                el.hide(); 
            } 
            $.effects.restore(el, props); 
            $.effects.removeWrapper(el); 
            done(); 
        }); 
        if (queuelen > 1) { 
            queue.splice.apply(queue, [1, 0].concat(queue.splice(queuelen, anims + 1))); 
        } 
        el.dequeue(); 
    } 
    ; 
} 
)(jQuery); 
(function($, undefined) { 
    $.effects.effect.clip = function(o, done) { 
        var el = $(this), props = ["position", "top", "bottom", "left", "right", "height", "width"], mode = $.effects.setMode(el, o.mode || "hide"), show = mode === "show", direction = o.direction || "vertical", vert = direction === "vertical", size = vert ? "height" : "width", position = vert ? "top" : "left", animation = {}, wrapper, animate, distance; 
        $.effects.save(el, props); 
        el.show(); 
        wrapper = $.effects.createWrapper(el).css({ 
            overflow: "hidden" 
        }); 
        animate = (el[0].tagName === "IMG") ? wrapper : el; 
        distance = animate[size](); 
        if (show) { 
            animate.css(size, 0); 
            animate.css(position, distance / 2); 
        } 
        animation[size] = show ? distance : 0; 
        animation[position] = show ? 0 : distance / 2; 
        animate.animate(animation, { 
            queue: false, 
            duration: o.duration, 
            easing: o.easing, 
            complete: function() { 
                if (!show) { 
                    el.hide(); 
                } 
                $.effects.restore(el, props); 
                $.effects.removeWrapper(el); 
                done(); 
            } 
        }); 
    } 
    ; 
} 
)(jQuery); 
(function($, undefined) { 
    $.effects.effect.drop = function(o, done) { 
        var el = $(this), props = ["position", "top", "bottom", "left", "right", "opacity", "height", "width"], mode = $.effects.setMode(el, o.mode || "hide"), show = mode === "show", direction = o.direction || "left", ref = (direction === "up" || direction === "down") ? "top" : "left", motion = (direction === "up" || direction === "left") ? "pos" : "neg", animation = { 
            opacity: show ? 1 : 0 
        }, distance; 
        $.effects.save(el, props); 
        el.show(); 
        $.effects.createWrapper(el); 
        distance = o.distance || el[ref === "top" ? "outerHeight" : "outerWidth"](true) / 2; 
        if (show) { 
            el.css("opacity", 0).css(ref, motion === "pos" ? -distance : distance); 
        } 
        animation[ref] = (show ? (motion === "pos" ? "+=" : "-=") : (motion === "pos" ? "-=" : "+=")) + distance; 
        el.animate(animation, { 
            queue: false, 
            duration: o.duration, 
            easing: o.easing, 
            complete: function() { 
                if (mode === "hide") { 
                    el.hide(); 
                } 
                $.effects.restore(el, props); 
                $.effects.removeWrapper(el); 
                done(); 
            } 
        }); 
    } 
    ; 
} 
)(jQuery); 
(function($, undefined) { 
    $.effects.effect.explode = function(o, done) { 
        var rows = o.pieces ? Math.round(Math.sqrt(o.pieces)) : 3, cells = rows, el = $(this), mode = $.effects.setMode(el, o.mode || "hide"), show = mode === "show", offset = el.show().css("visibility", "hidden").offset(), width = Math.ceil(el.outerWidth() / cells), height = Math.ceil(el.outerHeight() / rows), pieces = [], i, j, left, top, mx, my; 
        function childComplete() { 
            pieces.push(this); 
            if (pieces.length === rows * cells) { 
                animComplete(); 
            } 
        } 
        for (i = 0; i < rows; i++) { 
            top = offset.top + i * height; 
            my = i - (rows - 1) / 2; 
            for (j = 0; j < cells; j++) { 
                left = offset.left + j * width; 
                mx = j - (cells - 1) / 2; 
                el.clone().appendTo("body").wrap("<div></div>").css({ 
                    position: "absolute", 
                    visibility: "visible", 
                    left: -j * width, 
                    top: -i * height 
                }).parent().addClass("ui-effects-explode").css({ 
                    position: "absolute", 
                    overflow: "hidden", 
                    width: width, 
                    height: height, 
                    left: left + (show ? mx * width : 0), 
                    top: top + (show ? my * height : 0), 
                    opacity: show ? 0 : 1 
                }).animate({ 
                    left: left + (show ? 0 : mx * width), 
                    top: top + (show ? 0 : my * height), 
                    opacity: show ? 1 : 0 
                }, o.duration || 500, o.easing, childComplete); 
            } 
        } 
        function animComplete() { 
            el.css({ 
                visibility: "visible" 
            }); 
            $(pieces).remove(); 
            if (!show) { 
                el.hide(); 
            } 
            done(); 
        } 
    } 
    ; 
} 
)(jQuery); 
(function($, undefined) { 
    $.effects.effect.fade = function(o, done) { 
        var el = $(this) 
          , mode = $.effects.setMode(el, o.mode || "toggle"); 
        el.animate({ 
            opacity: mode 
        }, { 
            queue: false, 
            duration: o.duration, 
            easing: o.easing, 
            complete: done 
        }); 
    } 
    ; 
} 
)(jQuery); 
(function($, undefined) { 
    $.effects.effect.fold = function(o, done) { 
        var el = $(this), props = ["position", "top", "bottom", "left", "right", "height", "width"], mode = $.effects.setMode(el, o.mode || "hide"), show = mode === "show", hide = mode === "hide", size = o.size || 15, percent = /([0-9]+)%/.exec(size), horizFirst = !!o.horizFirst, widthFirst = show !== horizFirst, ref = widthFirst ? ["width", "height"] : ["height", "width"], duration = o.duration / 2, wrapper, distance, animation1 = {}, animation2 = {}; 
        $.effects.save(el, props); 
        el.show(); 
        wrapper = $.effects.createWrapper(el).css({ 
            overflow: "hidden" 
        }); 
        distance = widthFirst ? [wrapper.width(), wrapper.height()] : [wrapper.height(), wrapper.width()]; 
        if (percent) { 
            size = parseInt(percent[1], 10) / 100 * distance[hide ? 0 : 1]; 
        } 
        if (show) { 
            wrapper.css(horizFirst ? { 
                height: 0, 
                width: size 
            } : { 
                height: size, 
                width: 0 
            }); 
        } 
        animation1[ref[0]] = show ? distance[0] : size; 
        animation2[ref[1]] = show ? distance[1] : 0; 
        wrapper.animate(animation1, duration, o.easing).animate(animation2, duration, o.easing, function() { 
            if (hide) { 
                el.hide(); 
            } 
            $.effects.restore(el, props); 
            $.effects.removeWrapper(el); 
            done(); 
        }); 
    } 
    ; 
} 
)(jQuery); 
(function($, undefined) { 
    $.effects.effect.highlight = function(o, done) { 
        var elem = $(this) 
          , props = ["backgroundImage", "backgroundColor", "opacity"] 
          , mode = $.effects.setMode(elem, o.mode || "show") 
          , animation = { 
            backgroundColor: elem.css("backgroundColor") 
        }; 
        if (mode === "hide") { 
            animation.opacity = 0; 
        } 
        $.effects.save(elem, props); 
        elem.show().css({ 
            backgroundImage: "none", 
            backgroundColor: o.color || "#ffff99" 
        }).animate(animation, { 
            queue: false, 
            duration: o.duration, 
            easing: o.easing, 
            complete: function() { 
                if (mode === "hide") { 
                    elem.hide(); 
                } 
                $.effects.restore(elem, props); 
                done(); 
            } 
        }); 
    } 
    ; 
} 
)(jQuery); 
(function($, undefined) { 
    $.effects.effect.pulsate = function(o, done) { 
        var elem = $(this), mode = $.effects.setMode(elem, o.mode || "show"), show = mode === "show", hide = mode === "hide", showhide = (show || mode === "hide"), anims = ((o.times || 5) * 2) + (showhide ? 1 : 0), duration = o.duration / anims, animateTo = 0, queue = elem.queue(), queuelen = queue.length, i; 
        if (show || !elem.is(":visible")) { 
            elem.css("opacity", 0).show(); 
            animateTo = 1; 
        } 
        for (i = 1; i < anims; i++) { 
            elem.animate({ 
                opacity: animateTo 
            }, duration, o.easing); 
            animateTo = 1 - animateTo; 
        } 
        elem.animate({ 
            opacity: animateTo 
        }, duration, o.easing); 
        elem.queue(function() { 
            if (hide) { 
                elem.hide(); 
            } 
            done(); 
        }); 
        if (queuelen > 1) { 
            queue.splice.apply(queue, [1, 0].concat(queue.splice(queuelen, anims + 1))); 
        } 
        elem.dequeue(); 
    } 
    ; 
} 
)(jQuery); 
(function($, undefined) { 
    $.effects.effect.puff = function(o, done) { 
        var elem = $(this) 
          , mode = $.effects.setMode(elem, o.mode || "hide") 
          , hide = mode === "hide" 
          , percent = parseInt(o.percent, 10) || 150 
          , factor = percent / 100 
          , original = { 
            height: elem.height(), 
            width: elem.width(), 
            outerHeight: elem.outerHeight(), 
            outerWidth: elem.outerWidth() 
        }; 
        $.extend(o, { 
            effect: "scale", 
            queue: false, 
            fade: true, 
            mode: mode, 
            complete: done, 
            percent: hide ? percent : 100, 
            from: hide ? original : { 
                height: original.height * factor, 
                width: original.width * factor, 
                outerHeight: original.outerHeight * factor, 
                outerWidth: original.outerWidth * factor 
            } 
        }); 
        elem.effect(o); 
    } 
    ; 
    $.effects.effect.scale = function(o, done) { 
        var el = $(this) 
          , options = $.extend(true, {}, o) 
          , mode = $.effects.setMode(el, o.mode || "effect") 
          , percent = parseInt(o.percent, 10) || (parseInt(o.percent, 10) === 0 ? 0 : (mode === "hide" ? 0 : 100)) 
          , direction = o.direction || "both" 
          , origin = o.origin 
          , original = { 
            height: el.height(), 
            width: el.width(), 
            outerHeight: el.outerHeight(), 
            outerWidth: el.outerWidth() 
        } 
          , factor = { 
            y: direction !== "horizontal" ? (percent / 100) : 1, 
            x: direction !== "vertical" ? (percent / 100) : 1 
        }; 
        options.effect = "size"; 
        options.queue = false; 
        options.complete = done; 
        if (mode !== "effect") { 
            options.origin = origin || ["middle", "center"]; 
            options.restore = true; 
        } 
        options.from = o.from || (mode === "show" ? { 
            height: 0, 
            width: 0, 
            outerHeight: 0, 
            outerWidth: 0 
        } : original); 
        options.to = { 
            height: original.height * factor.y, 
            width: original.width * factor.x, 
            outerHeight: original.outerHeight * factor.y, 
            outerWidth: original.outerWidth * factor.x 
        }; 
        if (options.fade) { 
            if (mode === "show") { 
                options.from.opacity = 0; 
                options.to.opacity = 1; 
            } 
            if (mode === "hide") { 
                options.from.opacity = 1; 
                options.to.opacity = 0; 
            } 
        } 
        el.effect(options); 
    } 
    ; 
    $.effects.effect.size = function(o, done) { 
        var original, baseline, factor, el = $(this), props0 = ["position", "top", "bottom", "left", "right", "width", "height", "overflow", "opacity"], props1 = ["position", "top", "bottom", "left", "right", "overflow", "opacity"], props2 = ["width", "height", "overflow"], cProps = ["fontSize"], vProps = ["borderTopWidth", "borderBottomWidth", "paddingTop", "paddingBottom"], hProps = ["borderLeftWidth", "borderRightWidth", "paddingLeft", "paddingRight"], mode = $.effects.setMode(el, o.mode || "effect"), restore = o.restore || mode !== "effect", scale = o.scale || "both", origin = o.origin || ["middle", "center"], position = el.css("position"), props = restore ? props0 : props1, zero = { 
            height: 0, 
            width: 0, 
            outerHeight: 0, 
            outerWidth: 0 
        }; 
        if (mode === "show") { 
            el.show(); 
        } 
        original = { 
            height: el.height(), 
            width: el.width(), 
            outerHeight: el.outerHeight(), 
            outerWidth: el.outerWidth() 
        }; 
        if (o.mode === "toggle" && mode === "show") { 
            el.from = o.to || zero; 
            el.to = o.from || original; 
        } else { 
            el.from = o.from || (mode === "show" ? zero : original); 
            el.to = o.to || (mode === "hide" ? zero : original); 
        } 
        factor = { 
            from: { 
                y: el.from.height / original.height, 
                x: el.from.width / original.width 
            }, 
            to: { 
                y: el.to.height / original.height, 
                x: el.to.width / original.width 
            } 
        }; 
        if (scale === "box" || scale === "both") { 
            if (factor.from.y !== factor.to.y) { 
                props = props.concat(vProps); 
                el.from = $.effects.setTransition(el, vProps, factor.from.y, el.from); 
                el.to = $.effects.setTransition(el, vProps, factor.to.y, el.to); 
            } 
            if (factor.from.x !== factor.to.x) { 
                props = props.concat(hProps); 
                el.from = $.effects.setTransition(el, hProps, factor.from.x, el.from); 
                el.to = $.effects.setTransition(el, hProps, factor.to.x, el.to); 
            } 
        } 
        if (scale === "content" || scale === "both") { 
            if (factor.from.y !== factor.to.y) { 
                props = props.concat(cProps).concat(props2); 
                el.from = $.effects.setTransition(el, cProps, factor.from.y, el.from); 
                el.to = $.effects.setTransition(el, cProps, factor.to.y, el.to); 
            } 
        } 
        $.effects.save(el, props); 
        el.show(); 
        $.effects.createWrapper(el); 
        el.css("overflow", "hidden").css(el.from); 
        if (origin) { 
            baseline = $.effects.getBaseline(origin, original); 
            el.from.top = (original.outerHeight - el.outerHeight()) * baseline.y; 
            el.from.left = (original.outerWidth - el.outerWidth()) * baseline.x; 
            el.to.top = (original.outerHeight - el.to.outerHeight) * baseline.y; 
            el.to.left = (original.outerWidth - el.to.outerWidth) * baseline.x; 
        } 
        el.css(el.from); 
        if (scale === "content" || scale === "both") { 
            vProps = vProps.concat(["marginTop", "marginBottom"]).concat(cProps); 
            hProps = hProps.concat(["marginLeft", "marginRight"]); 
            props2 = props0.concat(vProps).concat(hProps); 
            el.find("*[width]").each(function() { 
                var child = $(this) 
                  , c_original = { 
                    height: child.height(), 
                    width: child.width(), 
                    outerHeight: child.outerHeight(), 
                    outerWidth: child.outerWidth() 
                }; 
                if (restore) { 
                    $.effects.save(child, props2); 
                } 
                child.from = { 
                    height: c_original.height * factor.from.y, 
                    width: c_original.width * factor.from.x, 
                    outerHeight: c_original.outerHeight * factor.from.y, 
                    outerWidth: c_original.outerWidth * factor.from.x 
                }; 
                child.to = { 
                    height: c_original.height * factor.to.y, 
                    width: c_original.width * factor.to.x, 
                    outerHeight: c_original.height * factor.to.y, 
                    outerWidth: c_original.width * factor.to.x 
                }; 
                if (factor.from.y !== factor.to.y) { 
                    child.from = $.effects.setTransition(child, vProps, factor.from.y, child.from); 
                    child.to = $.effects.setTransition(child, vProps, factor.to.y, child.to); 
                } 
                if (factor.from.x !== factor.to.x) { 
                    child.from = $.effects.setTransition(child, hProps, factor.from.x, child.from); 
                    child.to = $.effects.setTransition(child, hProps, factor.to.x, child.to); 
                } 
                child.css(child.from); 
                child.animate(child.to, o.duration, o.easing, function() { 
                    if (restore) { 
                        $.effects.restore(child, props2); 
                    } 
                }); 
            }); 
        } 
        el.animate(el.to, { 
            queue: false, 
            duration: o.duration, 
            easing: o.easing, 
            complete: function() { 
                if (el.to.opacity === 0) { 
                    el.css("opacity", el.from.opacity); 
                } 
                if (mode === "hide") { 
                    el.hide(); 
                } 
                $.effects.restore(el, props); 
                if (!restore) { 
                    if (position === "static") { 
                        el.css({ 
                            position: "relative", 
                            top: el.to.top, 
                            left: el.to.left 
                        }); 
                    } else { 
                        $.each(["top", "left"], function(idx, pos) { 
                            el.css(pos, function(_, str) { 
                                var val = parseInt(str, 10) 
                                  , toRef = idx ? el.to.left : el.to.top; 
                                if (str === "auto") { 
                                    return toRef + "px"; 
                                } 
                                return val + toRef + "px"; 
                            }); 
                        }); 
                    } 
                } 
                $.effects.removeWrapper(el); 
                done(); 
            } 
        }); 
    } 
    ; 
} 
)(jQuery); 
(function($, undefined) { 
    $.effects.effect.shake = function(o, done) { 
        var el = $(this), props = ["position", "top", "bottom", "left", "right", "height", "width"], mode = $.effects.setMode(el, o.mode || "effect"), direction = o.direction || "left", distance = o.distance || 20, times = o.times || 3, anims = times * 2 + 1, speed = Math.round(o.duration / anims), ref = (direction === "up" || direction === "down") ? "top" : "left", positiveMotion = (direction === "up" || direction === "left"), animation = {}, animation1 = {}, animation2 = {}, i, queue = el.queue(), queuelen = queue.length; 
        $.effects.save(el, props); 
        el.show(); 
        $.effects.createWrapper(el); 
        animation[ref] = (positiveMotion ? "-=" : "+=") + distance; 
        animation1[ref] = (positiveMotion ? "+=" : "-=") + distance * 2; 
        animation2[ref] = (positiveMotion ? "-=" : "+=") + distance * 2; 
        el.animate(animation, speed, o.easing); 
        for (i = 1; i < times; i++) { 
            el.animate(animation1, speed, o.easing).animate(animation2, speed, o.easing); 
        } 
        el.animate(animation1, speed, o.easing).animate(animation, speed / 2, o.easing).queue(function() { 
            if (mode === "hide") { 
                el.hide(); 
            } 
            $.effects.restore(el, props); 
            $.effects.removeWrapper(el); 
            done(); 
        }); 
        if (queuelen > 1) { 
            queue.splice.apply(queue, [1, 0].concat(queue.splice(queuelen, anims + 1))); 
        } 
        el.dequeue(); 
    } 
    ; 
} 
)(jQuery); 
(function($, undefined) { 
    $.effects.effect.slide = function(o, done) { 
        var el = $(this), props = ["position", "top", "bottom", "left", "right", "width", "height"], mode = $.effects.setMode(el, o.mode || "show"), show = mode === "show", direction = o.direction || "left", ref = (direction === "up" || direction === "down") ? "top" : "left", positiveMotion = (direction === "up" || direction === "left"), distance, animation = {}; 
        $.effects.save(el, props); 
        el.show(); 
        distance = o.distance || el[ref === "top" ? "outerHeight" : "outerWidth"](true); 
        $.effects.createWrapper(el).css({ 
            overflow: "hidden" 
        }); 
        if (show) { 
            el.css(ref, positiveMotion ? (isNaN(distance) ? "-" + distance : -distance) : distance); 
        } 
        animation[ref] = (show ? (positiveMotion ? "+=" : "-=") : (positiveMotion ? "-=" : "+=")) + distance; 
        el.animate(animation, { 
            queue: false, 
            duration: o.duration, 
            easing: o.easing, 
            complete: function() { 
                if (mode === "hide") { 
                    el.hide(); 
                } 
                $.effects.restore(el, props); 
                $.effects.removeWrapper(el); 
                done(); 
            } 
        }); 
    } 
    ; 
} 
)(jQuery); 
(function($, undefined) { 
    $.effects.effect.transfer = function(o, done) { 
        var elem = $(this) 
          , target = $(o.to) 
          , targetFixed = target.css("position") === "fixed" 
          , body = $("body") 
          , fixTop = targetFixed ? body.scrollTop() : 0 
          , fixLeft = targetFixed ? body.scrollLeft() : 0 
          , endPosition = target.offset() 
          , animation = { 
            top: endPosition.top - fixTop, 
            left: endPosition.left - fixLeft, 
            height: target.innerHeight(), 
            width: target.innerWidth() 
        } 
          , startPosition = elem.offset() 
          , transfer = $('<div class="ui-effects-transfer"></div>').appendTo(document.body).addClass(o.className).css({ 
            top: startPosition.top - fixTop, 
            left: startPosition.left - fixLeft, 
            height: elem.innerHeight(), 
            width: elem.innerWidth(), 
            position: targetFixed ? "fixed" : "absolute" 
        }).animate(animation, o.duration, o.easing, function() { 
            transfer.remove(); 
            done(); 
        }); 
    } 
    ; 
} 
)(jQuery); 
(function($) { 
    $.support.touch = 'ontouchend'in document; 
    if (!$.support.touch) { 
        return; 
    } 
    var mouseProto = $.ui.mouse.prototype, _mouseInit = mouseProto._mouseInit, _mouseDestroy = mouseProto._mouseDestroy, touchHandled; 
    function simulateMouseEvent(event, simulatedType) { 
        if (event.originalEvent.touches.length > 1) { 
            return; 
        } 
        if (event.cancelable) { 
            event.preventDefault(); 
        } 
        var touch = event.originalEvent.changedTouches[0] 
          , simulatedEvent = document.createEvent('MouseEvents'); 
        simulatedEvent.initMouseEvent(simulatedType, true, true, window, 1, touch.screenX, touch.screenY, touch.clientX, touch.clientY, false, false, false, false, 0, null); 
        event.target.dispatchEvent(simulatedEvent); 
    } 
    mouseProto._touchStart = function(event) { 
        var self = this; 
        if (touchHandled || !self._mouseCapture(event.originalEvent.changedTouches[0])) { 
            return; 
        } 
        touchHandled = true; 
        self._touchMoved = false; 
        simulateMouseEvent(event, 'mouseover'); 
        simulateMouseEvent(event, 'mousemove'); 
        simulateMouseEvent(event, 'mousedown'); 
    } 
    ; 
    mouseProto._touchMove = function(event) { 
        if (!touchHandled) { 
            return; 
        } 
        this._touchMoved = true; 
        simulateMouseEvent(event, 'mousemove'); 
    } 
    ; 
    mouseProto._touchEnd = function(event) { 
        if (!touchHandled) { 
            return; 
        } 
        simulateMouseEvent(event, 'mouseup'); 
        simulateMouseEvent(event, 'mouseout'); 
        if (!this._touchMoved) { 
            simulateMouseEvent(event, 'click'); 
        } 
        touchHandled = false; 
    } 
    ; 
    mouseProto._mouseInit = function() { 
        var self = this; 
        self.element.bind({ 
            touchstart: $.proxy(self, '_touchStart'), 
            touchmove: $.proxy(self, '_touchMove'), 
            touchend: $.proxy(self, '_touchEnd') 
        }); 
        _mouseInit.call(self); 
    } 
    ; 
    mouseProto._mouseDestroy = function() { 
        var self = this; 
        self.element.unbind({ 
            touchstart: $.proxy(self, '_touchStart'), 
            touchmove: $.proxy(self, '_touchMove'), 
            touchend: $.proxy(self, '_touchEnd') 
        }); 
        _mouseDestroy.call(self); 
    } 
    ; 
} 
)(jQuery); 
;(function($) { 
    'use strict' 
    function safeAdd(x, y) { 
        var lsw = (x & 0xffff) + (y & 0xffff) 
        var msw = (x >> 16) + (y >> 16) + (lsw >> 16) 
        return (msw << 16) | (lsw & 0xffff) 
    } 
    function bitRotateLeft(num, cnt) { 
        return (num << cnt) | (num >>> (32 - cnt)) 
    } 
    function md5cmn(q, a, b, x, s, t) { 
        return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b) 
    } 
    function md5ff(a, b, c, d, x, s, t) { 
        return md5cmn((b & c) | (~b & d), a, b, x, s, t) 
    } 
    function md5gg(a, b, c, d, x, s, t) { 
        return md5cmn((b & d) | (c & ~d), a, b, x, s, t) 
    } 
    function md5hh(a, b, c, d, x, s, t) { 
        return md5cmn(b ^ c ^ d, a, b, x, s, t) 
    } 
    function md5ii(a, b, c, d, x, s, t) { 
        return md5cmn(c ^ (b | ~d), a, b, x, s, t) 
    } 
    function binlMD5(x, len) { 
        x[len >> 5] |= 0x80 << len % 32 
        x[(((len + 64) >>> 9) << 4) + 14] = len 
        var i 
        var olda 
        var oldb 
        var oldc 
        var oldd 
        var a = 1732584193 
        var b = -271733879 
        var c = -1732584194 
        var d = 271733878 
        for (i = 0; i < x.length; i += 16) { 
            olda = a 
            oldb = b 
            oldc = c 
            oldd = d 
            a = md5ff(a, b, c, d, x[i], 7, -680876936) 
            d = md5ff(d, a, b, c, x[i + 1], 12, -389564586) 
            c = md5ff(c, d, a, b, x[i + 2], 17, 606105819) 
            b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330) 
            a = md5ff(a, b, c, d, x[i + 4], 7, -176418897) 
            d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426) 
            c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341) 
            b = md5ff(b, c, d, a, x[i + 7], 22, -45705983) 
            a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416) 
            d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417) 
            c = md5ff(c, d, a, b, x[i + 10], 17, -42063) 
            b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162) 
            a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682) 
            d = md5ff(d, a, b, c, x[i + 13], 12, -40341101) 
            c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290) 
            b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329) 
            a = md5gg(a, b, c, d, x[i + 1], 5, -165796510) 
            d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632) 
            c = md5gg(c, d, a, b, x[i + 11], 14, 643717713) 
            b = md5gg(b, c, d, a, x[i], 20, -373897302) 
            a = md5gg(a, b, c, d, x[i + 5], 5, -701558691) 
            d = md5gg(d, a, b, c, x[i + 10], 9, 38016083) 
            c = md5gg(c, d, a, b, x[i + 15], 14, -660478335) 
            b = md5gg(b, c, d, a, x[i + 4], 20, -405537848) 
            a = md5gg(a, b, c, d, x[i + 9], 5, 568446438) 
            d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690) 
            c = md5gg(c, d, a, b, x[i + 3], 14, -187363961) 
            b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501) 
            a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467) 
            d = md5gg(d, a, b, c, x[i + 2], 9, -51403784) 
            c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473) 
            b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734) 
            a = md5hh(a, b, c, d, x[i + 5], 4, -378558) 
            d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463) 
            c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562) 
            b = md5hh(b, c, d, a, x[i + 14], 23, -35309556) 
            a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060) 
            d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353) 
            c = md5hh(c, d, a, b, x[i + 7], 16, -155497632) 
            b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640) 
            a = md5hh(a, b, c, d, x[i + 13], 4, 681279174) 
            d = md5hh(d, a, b, c, x[i], 11, -358537222) 
            c = md5hh(c, d, a, b, x[i + 3], 16, -722521979) 
            b = md5hh(b, c, d, a, x[i + 6], 23, 76029189) 
            a = md5hh(a, b, c, d, x[i + 9], 4, -640364487) 
            d = md5hh(d, a, b, c, x[i + 12], 11, -421815835) 
            c = md5hh(c, d, a, b, x[i + 15], 16, 530742520) 
            b = md5hh(b, c, d, a, x[i + 2], 23, -995338651) 
            a = md5ii(a, b, c, d, x[i], 6, -198630844) 
            d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415) 
            c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905) 
            b = md5ii(b, c, d, a, x[i + 5], 21, -57434055) 
            a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571) 
            d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606) 
            c = md5ii(c, d, a, b, x[i + 10], 15, -1051523) 
            b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799) 
            a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359) 
            d = md5ii(d, a, b, c, x[i + 15], 10, -30611744) 
            c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380) 
            b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649) 
            a = md5ii(a, b, c, d, x[i + 4], 6, -145523070) 
            d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379) 
            c = md5ii(c, d, a, b, x[i + 2], 15, 718787259) 
            b = md5ii(b, c, d, a, x[i + 9], 21, -343485551) 
            a = safeAdd(a, olda) 
            b = safeAdd(b, oldb) 
            c = safeAdd(c, oldc) 
            d = safeAdd(d, oldd) 
        } 
        return [a, b, c, d] 
    } 
    function binl2rstr(input) { 
        var i 
        var output = '' 
        var length32 = input.length * 32 
        for (i = 0; i < length32; i += 8) { 
            output += String.fromCharCode((input[i >> 5] >>> i % 32) & 0xff) 
        } 
        return output 
    } 
    function rstr2binl(input) { 
        var i 
        var output = [] 
        output[(input.length >> 2) - 1] = undefined 
        for (i = 0; i < output.length; i += 1) { 
            output[i] = 0 
        } 
        var length8 = input.length * 8 
        for (i = 0; i < length8; i += 8) { 
            output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << i % 32 
        } 
        return output 
    } 
    function rstrMD5(s) { 
        return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)) 
    } 
    function rstrHMACMD5(key, data) { 
        var i 
        var bkey = rstr2binl(key) 
        var ipad = [] 
        var opad = [] 
        var hash 
        ipad[15] = opad[15] = undefined 
        if (bkey.length > 16) { 
            bkey = binlMD5(bkey, key.length * 8) 
        } 
        for (i = 0; i < 16; i += 1) { 
            ipad[i] = bkey[i] ^ 0x36363636 
            opad[i] = bkey[i] ^ 0x5c5c5c5c 
        } 
        hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8) 
        return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)) 
    } 
    function rstr2hex(input) { 
        var hexTab = '0123456789abcdef' 
        var output = '' 
        var x 
        var i 
        for (i = 0; i < input.length; i += 1) { 
            x = input.charCodeAt(i) 
            output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f) 
        } 
        return output 
    } 
    function str2rstrUTF8(input) { 
        return unescape(encodeURIComponent(input)) 
    } 
    function rawMD5(s) { 
        return rstrMD5(str2rstrUTF8(s)) 
    } 
    function hexMD5(s) { 
        return rstr2hex(rawMD5(s)) 
    } 
    function rawHMACMD5(k, d) { 
        return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)) 
    } 
    function hexHMACMD5(k, d) { 
        return rstr2hex(rawHMACMD5(k, d)) 
    } 
    function md5(string, key, raw) { 
        if (!key) { 
            if (!raw) { 
                return hexMD5(string) 
            } 
            return rawMD5(string) 
        } 
        if (!raw) { 
            return hexHMACMD5(key, string) 
        } 
        return rawHMACMD5(key, string) 
    } 
    if (typeof define === 'function' && define.amd) { 
        define(function() { 
            return md5 
        }) 
    } else if (typeof module === 'object' && module.exports) { 
        module.exports = md5 
    } else { 
        $.md5 = md5 
    } 
} 
)(this); 
(function(cc) { 
    if (cc.hasInitialised) 
        return; 
    var util = { 
        escapeRegExp: function(str) { 
            return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\^\$\|]/g, '\$&'); 
        }, 
        hasClass: function(element, selector) { 
            var s = ' '; 
            return element.nodeType === 1 && (s + element.className + s).replace(/[
	]/g, s).indexOf(s + selector + s) >= 0; 
        }, 
        addClass: function(element, className) { 
            element.className += ' ' + className; 
        }, 
        removeClass: function(element, className) { 
            var regex = new RegExp('\b' + this.escapeRegExp(className) + '\b'); 
            element.className = element.className.replace(regex, ''); 
        }, 
        interpolateString: function(str, callback) { 
            var marker = /{{([a-z][a-z0-9\-_]*)}}/ig; 
            return str.replace(marker, function(matches) { 
                return callback(arguments[1]) || ''; 
            }) 
        }, 
        getCookie: function(name) { 
            var value = '; ' + document.cookie; 
            var parts = value.split('; ' + name + '='); 
            return parts.length != 2 ? undefined : parts.pop().split(';').shift(); 
        }, 
        setCookie: function(name, value, expiryDays, domain, path) { 
            var exdate = new Date(); 
            exdate.setDate(exdate.getDate() + (expiryDays || 365)); 
            var cookie = [name + '=' + value, 'expires=' + exdate.toUTCString(), 'path=' + (path || '/')]; 
            if (domain) { 
                cookie.push('domain=' + domain); 
            } 
            document.cookie = cookie.join(';'); 
        }, 
        deepExtend: function(target, source) { 
            for (var prop in source) { 
                if (source.hasOwnProperty(prop)) { 
                    if (prop in target && this.isPlainObject(target[prop]) && this.isPlainObject(source[prop])) { 
                        this.deepExtend(target[prop], source[prop]); 
                    } else { 
                        target[prop] = source[prop]; 
                    } 
                } 
            } 
            return target; 
        }, 
        throttle: function(callback, limit) { 
            var wait = false; 
            return function() { 
                if (!wait) { 
                    callback.apply(this, arguments); 
                    wait = true; 
                    setTimeout(function() { 
                        wait = false; 
                    }, limit); 
                } 
            } 
        }, 
        hash: function(str) { 
            var hash = 0, i, chr, len; 
            if (str.length === 0) 
                return hash; 
            for (i = 0, 
            len = str.length; i < len; ++i) { 
                chr = str.charCodeAt(i); 
                hash = ((hash << 5) - hash) + chr; 
                hash |= 0; 
            } 
            return hash; 
        }, 
        normaliseHex: function(hex) { 
            if (hex[0] == '#') { 
                hex = hex.substr(1); 
            } 
            if (hex.length == 3) { 
                hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2]; 
            } 
            return hex; 
        }, 
        getContrast: function(hex) { 
            hex = this.normaliseHex(hex); 
            var r = parseInt(hex.substr(0, 2), 16); 
            var g = parseInt(hex.substr(2, 2), 16); 
            var b = parseInt(hex.substr(4, 2), 16); 
            var yiq = ((r * 299) + (g * 587) + (b * 114)) / 1000; 
            return (yiq >= 128) ? '#000' : '#fff'; 
        }, 
        getLuminance: function(hex) { 
            var num = parseInt(this.normaliseHex(hex), 16) 
              , amt = 38 
              , R = (num >> 16) + amt 
              , B = (num >> 8 & 0x00FF) + amt 
              , G = (num & 0x0000FF) + amt; 
            var newColour = (0x1000000 + (R < 255 ? R < 1 ? 0 : R : 255) * 0x10000 + (B < 255 ? B < 1 ? 0 : B : 255) * 0x100 + (G < 255 ? G < 1 ? 0 : G : 255)).toString(16).slice(1); 
            return '#' + newColour; 
        }, 
        isMobile: function() { 
            return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent); 
        }, 
        isPlainObject: function(obj) { 
            return typeof obj === 'object' && obj !== null && obj.constructor == Object; 
        }, 
    }; 
    cc.status = { 
        deny: 'deny', 
        allow: 'allow', 
        dismiss: 'dismiss' 
    }; 
    cc.transitionEnd = (function() { 
        var el = document.createElement('div'); 
        var trans = { 
            t: "transitionend", 
            OT: "oTransitionEnd", 
            msT: "MSTransitionEnd", 
            MozT: "transitionend", 
            WebkitT: "webkitTransitionEnd", 
        }; 
        for (var prefix in trans) { 
            if (trans.hasOwnProperty(prefix) && typeof el.style[prefix + 'ransition'] != 'undefined') { 
                return trans[prefix]; 
            } 
        } 
        return ''; 
    }()); 
    cc.hasTransition = !!cc.transitionEnd; 
    var __allowedStatuses = Object.keys(cc.status).map(util.escapeRegExp); 
    cc.customStyles = {}; 
    cc.Popup = (function() { 
        var defaultOptions = { 
            enabled: true, 
            container: null, 
            cookie: { 
                name: 'cookieconsent_status', 
                path: '/', 
                domain: '', 
                expiryDays: 365, 
            }, 
            onPopupOpen: function() {}, 
            onPopupClose: function() {}, 
            onInitialise: function(status) {}, 
            onStatusChange: function(status, chosenBefore) {}, 
            onRevokeChoice: function() {}, 
            content: { 
                header: 'Cookies used on the website!', 
                message: 'This website uses cookies to ensure you get the best experience on our website.', 
                dismiss: 'Got it!', 
                allow: 'Allow cookies', 
                deny: 'Decline', 
                link: 'Learn more', 
                href: 'http://cookiesandyou.com', 
                close: '&#x274c;', 
            }, 
            elements: { 
                header: '<span class="cc-header">{{header}}</span>&nbsp;', 
                message: '<span id="cookieconsent:desc" class="cc-message">{{message}}</span>', 
                messagelink: '<span id="cookieconsent:desc" class="cc-message">{{message}} <a aria-label="learn more about cookies" role=button tabindex="0" class="cc-link" href="{{href}}" target="_blank">{{link}}</a></span>', 
                dismiss: '<a aria-label="dismiss cookie message" role=button tabindex="0" class="cc-btn cc-dismiss">{{dismiss}}</a>', 
                allow: '<a aria-label="allow cookies" role=button tabindex="0"  class="cc-btn cc-allow">{{allow}}</a>', 
                deny: '<a aria-label="deny cookies" role=button tabindex="0" class="cc-btn cc-deny">{{deny}}</a>', 
                link: '<a aria-label="learn more about cookies" role=button tabindex="0" class="cc-link" href="{{href}}" target="_blank">{{link}}</a>', 
                close: '<span aria-label="dismiss cookie message" role=button tabindex="0" class="cc-close">{{close}}</span>', 
            }, 
            window: '<div role="dialog" aria-live="polite" aria-label="cookieconsent" aria-describedby="cookieconsent:desc" class="cc-window {{classes}}"><!--googleoff: all-->{{children}}<!--googleon: all--></div>', 
            revokeBtn: '<div class="cc-revoke {{classes}}">Cookie Policy</div>', 
            compliance: { 
                'info': '<div class="cc-compliance">{{dismiss}}</div>', 
                'opt-in': '<div class="cc-compliance cc-highlight">{{dismiss}}{{allow}}</div>', 
                'opt-out': '<div class="cc-compliance cc-highlight">{{deny}}{{dismiss}}</div>', 
            }, 
            type: 'info', 
            layouts: { 
                'basic': '{{messagelink}}{{compliance}}', 
                'basic-close': '{{messagelink}}{{compliance}}{{close}}', 
                'basic-header': '{{header}}{{message}}{{link}}{{compliance}}', 
            }, 
            layout: 'basic', 
            position: 'bottom', 
            theme: 'block', 
            static: false, 
            palette: null, 
            revokable: false, 
            animateRevokable: true, 
            showLink: true, 
            dismissOnScroll: false, 
            dismissOnTimeout: false, 
            autoOpen: true, 
            autoAttach: true, 
            whitelistPage: [], 
            blacklistPage: [], 
            overrideHTML: null, 
        }; 
        function CookiePopup() { 
            this.initialise.apply(this, arguments); 
        } 
        CookiePopup.prototype.initialise = function(options) { 
            if (this.options) { 
                this.destroy(); 
            } 
            util.deepExtend(this.options = {}, defaultOptions); 
            if (util.isPlainObject(options)) { 
                util.deepExtend(this.options, options); 
            } 
            if (checkCallbackHooks.call(this)) { 
                this.options.enabled = false; 
            } 
            if (arrayContainsMatches(this.options.blacklistPage, location.pathname)) { 
                this.options.enabled = false; 
            } 
            if (arrayContainsMatches(this.options.whitelistPage, location.pathname)) { 
                this.options.enabled = true; 
            } 
            var cookiePopup = this.options.window.replace('{{classes}}', getPopupClasses.call(this).join(' ')).replace('{{children}}', getPopupInnerMarkup.call(this)); 
            var customHTML = this.options.overrideHTML; 
            if (typeof customHTML == 'string' && customHTML.length) { 
                cookiePopup = customHTML; 
            } 
            if (this.options.static) { 
                var wrapper = appendMarkup.call(this, '<div class="cc-grower">' + cookiePopup + '</div>'); 
                wrapper.style.display = ''; 
                this.element = wrapper.firstChild; 
                this.element.style.display = 'none'; 
                util.addClass(this.element, 'cc-invisible'); 
            } else { 
                this.element = appendMarkup.call(this, cookiePopup); 
            } 
            applyAutoDismiss.call(this); 
            applyRevokeButton.call(this); 
            if (this.options.autoOpen) { 
                this.autoOpen(); 
            } 
        } 
        ; 
        CookiePopup.prototype.destroy = function() { 
            if (this.onButtonClick && this.element) { 
                this.element.removeEventListener('click', this.onButtonClick); 
                this.onButtonClick = null; 
            } 
            if (this.dismissTimeout) { 
                clearTimeout(this.dismissTimeout); 
                this.dismissTimeout = null; 
            } 
            if (this.onWindowScroll) { 
                window.removeEventListener('scroll', this.onWindowScroll); 
                this.onWindowScroll = null; 
            } 
            if (this.onMouseMove) { 
                window.removeEventListener('mousemove', this.onMouseMove); 
                this.onMouseMove = null; 
            } 
            if (this.element && this.element.parentNode) { 
                this.element.parentNode.removeChild(this.element); 
            } 
            this.element = null; 
            if (this.revokeBtn && this.revokeBtn.parentNode) { 
                this.revokeBtn.parentNode.removeChild(this.revokeBtn); 
            } 
            this.revokeBtn = null; 
            removeCustomStyle(this.options.palette); 
            this.options = null; 
        } 
        ; 
        CookiePopup.prototype.open = function(callback) { 
            if (!this.element) 
                return; 
            if (!this.isOpen()) { 
                if (cc.hasTransition) { 
                    this.fadeIn(); 
                } else { 
                    this.element.style.display = ''; 
                } 
                if (this.options.revokable) { 
                    this.toggleRevokeButton(); 
                } 
                this.options.onPopupOpen.call(this); 
            } 
            return this; 
        } 
        ; 
        CookiePopup.prototype.close = function(showRevoke) { 
            if (!this.element) 
                return; 
            if (this.isOpen()) { 
                if (cc.hasTransition) { 
                    this.fadeOut(); 
                } else { 
                    this.element.style.display = 'none'; 
                } 
                if (showRevoke && this.options.revokable) { 
                    this.toggleRevokeButton(true); 
                } 
                this.options.onPopupClose.call(this); 
            } 
            return this; 
        } 
        ; 
        CookiePopup.prototype.fadeIn = function() { 
            var el = this.element; 
            if (!cc.hasTransition || !el) 
                return; 
            if (this.afterTransition) { 
                afterFadeOut.call(this, el) 
            } 
            if (util.hasClass(el, 'cc-invisible')) { 
                el.style.display = ''; 
                if (this.options.static) { 
                    var height = this.element.clientHeight; 
                    this.element.parentNode.style.maxHeight = height + 'px'; 
                } 
                var fadeInTimeout = 20; 
                this.openingTimeout = setTimeout(afterFadeIn.bind(this, el), fadeInTimeout); 
            } 
        } 
        ; 
        CookiePopup.prototype.fadeOut = function() { 
            var el = this.element; 
            if (!cc.hasTransition || !el) 
                return; 
            if (this.openingTimeout) { 
                clearTimeout(this.openingTimeout); 
                afterFadeIn.bind(this, el); 
            } 
            if (!util.hasClass(el, 'cc-invisible')) { 
                if (this.options.static) { 
                    this.element.parentNode.style.maxHeight = ''; 
                } 
                this.afterTransition = afterFadeOut.bind(this, el); 
                el.addEventListener(cc.transitionEnd, this.afterTransition); 
                util.addClass(el, 'cc-invisible'); 
            } 
        } 
        ; 
        CookiePopup.prototype.isOpen = function() { 
            return this.element && this.element.style.display == '' && (cc.hasTransition ? !util.hasClass(this.element, 'cc-invisible') : true); 
        } 
        ; 
        CookiePopup.prototype.toggleRevokeButton = function(show) { 
            if (this.revokeBtn) 
                this.revokeBtn.style.display = show ? '' : 'none'; 
        } 
        ; 
        CookiePopup.prototype.revokeChoice = function(preventOpen) { 
            this.options.enabled = true; 
            this.clearStatus(); 
            this.options.onRevokeChoice.call(this); 
            if (!preventOpen) { 
                this.autoOpen(); 
            } 
        } 
        ; 
        CookiePopup.prototype.hasAnswered = function(options) { 
            return Object.keys(cc.status).indexOf(this.getStatus()) >= 0; 
        } 
        ; 
        CookiePopup.prototype.hasConsented = function(options) { 
            var val = this.getStatus(); 
            return val == cc.status.allow || val == cc.status.dismiss; 
        } 
        ; 
        CookiePopup.prototype.autoOpen = function(options) { 
            !this.hasAnswered() && this.options.enabled && this.open(); 
        } 
        ; 
        CookiePopup.prototype.setStatus = function(status) { 
            var c = this.options.cookie; 
            var value = util.getCookie(c.name); 
            var chosenBefore = Object.keys(cc.status).indexOf(value) >= 0; 
            if (Object.keys(cc.status).indexOf(status) >= 0) { 
                util.setCookie(c.name, status, c.expiryDays, c.domain, c.path); 
                this.options.onStatusChange.call(this, status, chosenBefore); 
            } else { 
                this.clearStatus(); 
            } 
        } 
        ; 
        CookiePopup.prototype.getStatus = function() { 
            return util.getCookie(this.options.cookie.name); 
        } 
        ; 
        CookiePopup.prototype.clearStatus = function() { 
            var c = this.options.cookie; 
            util.setCookie(c.name, '', -1, c.domain, c.path); 
        } 
        ; 
        function afterFadeIn(el) { 
            this.openingTimeout = null; 
            util.removeClass(el, 'cc-invisible'); 
        } 
        function afterFadeOut(el) { 
            el.style.display = 'none'; 
            el.removeEventListener(cc.transitionEnd, this.afterTransition); 
            this.afterTransition = null; 
        } 
        function checkCallbackHooks() { 
            var complete = this.options.onInitialise.bind(this); 
            if (!window.navigator.cookieEnabled) { 
                complete(cc.status.deny); 
                return true; 
            } 
            if (window.CookiesOK || window.navigator.CookiesOK) { 
                complete(cc.status.allow); 
                return true; 
            } 
            var allowed = Object.keys(cc.status); 
            var answer = this.getStatus(); 
            var match = allowed.indexOf(answer) >= 0; 
            if (match) { 
                complete(answer); 
            } 
            return match; 
        } 
        function getPositionClasses() { 
            var positions = this.options.position.split('-'); 
            var classes = []; 
            positions.forEach(function(cur) { 
                classes.push('cc-' + cur); 
            }); 
            return classes; 
        } 
        function getPopupClasses() { 
            var opts = this.options; 
            var positionStyle = (opts.position == 'top' || opts.position == 'bottom') ? 'banner' : 'floating'; 
            if (util.isMobile()) { 
                positionStyle = 'floating'; 
            } 
            var classes = ['cc-' + positionStyle, 'cc-type-' + opts.type, 'cc-theme-' + opts.theme, ]; 
            if (opts.static) { 
                classes.push('cc-static'); 
            } 
            classes.push.apply(classes, getPositionClasses.call(this)); 
            var didAttach = attachCustomPalette.call(this, this.options.palette); 
            if (this.customStyleSelector) { 
                classes.push(this.customStyleSelector); 
            } 
            return classes; 
        } 
        function getPopupInnerMarkup() { 
            var interpolated = {}; 
            var opts = this.options; 
            if (!opts.showLink) { 
                opts.elements.link = ''; 
                opts.elements.messagelink = opts.elements.message; 
            } 
            Object.keys(opts.elements).forEach(function(prop) { 
                interpolated[prop] = util.interpolateString(opts.elements[prop], function(name) { 
                    var str = opts.content[name]; 
                    return (name && typeof str == 'string' && str.length) ? str : ''; 
                }) 
            }); 
            var complianceType = opts.compliance[opts.type]; 
            if (!complianceType) { 
                complianceType = opts.compliance.info; 
            } 
            interpolated.compliance = util.interpolateString(complianceType, function(name) { 
                return interpolated[name]; 
            }); 
            var layout = opts.layouts[opts.layout]; 
            if (!layout) { 
                layout = opts.layouts.basic; 
            } 
            return util.interpolateString(layout, function(match) { 
                return interpolated[match]; 
            }); 
        } 
        function appendMarkup(markup) { 
            var opts = this.options; 
            var div = document.createElement('div'); 
            var cont = (opts.container && opts.container.nodeType === 1) ? opts.container : document.body; 
            div.innerHTML = markup; 
            var el = div.children[0]; 
            el.style.display = 'none'; 
            if (util.hasClass(el, 'cc-window') && cc.hasTransition) { 
                util.addClass(el, 'cc-invisible'); 
            } 
            this.onButtonClick = handleButtonClick.bind(this); 
            el.addEventListener('click', this.onButtonClick); 
            if (opts.autoAttach) { 
                if (!cont.firstChild) { 
                    cont.appendChild(el); 
                } else { 
                    cont.insertBefore(el, cont.firstChild) 
                } 
            } 
            return el; 
        } 
        function handleButtonClick(event) { 
            var targ = event.target; 
            if (util.hasClass(targ, 'cc-btn')) { 
                var matches = targ.className.match(new RegExp("\bcc-(" + __allowedStatuses.join('|') + ")\b")); 
                var match = (matches && matches[1]) || false; 
                if (match) { 
                    this.setStatus(match); 
                    this.close(true); 
                } 
            } 
            if (util.hasClass(targ, 'cc-close')) { 
                this.setStatus(cc.status.dismiss); 
                this.close(true); 
            } 
            if (util.hasClass(targ, 'cc-revoke')) { 
                this.revokeChoice(); 
            } 
        } 
        function attachCustomPalette(palette) { 
            var hash = util.hash(JSON.stringify(palette)); 
            var selector = 'cc-color-override-' + hash; 
            var isValid = util.isPlainObject(palette); 
            this.customStyleSelector = isValid ? selector : null; 
            if (isValid) { 
                addCustomStyle(hash, palette, '.' + selector); 
            } 
            return isValid; 
        } 
        function addCustomStyle(hash, palette, prefix) { 
            if (cc.customStyles[hash]) { 
                ++cc.customStyles[hash].references; 
                return; 
            } 
            var colorStyles = {}; 
            var popup = palette.popup; 
            var button = palette.button; 
            var highlight = palette.highlight; 
            if (popup) { 
                popup.text = popup.text ? popup.text : util.getContrast(popup.background); 
                popup.link = popup.link ? popup.link : popup.text; 
                colorStyles[prefix + '.cc-window'] = ['color: ' + popup.text, 'background-color: ' + popup.background]; 
                colorStyles[prefix + '.cc-revoke'] = ['color: ' + popup.text, 'background-color: ' + popup.background]; 
                colorStyles[prefix + ' .cc-link,' + prefix + ' .cc-link:active,' + prefix + ' .cc-link:visited'] = ['color: ' + popup.link]; 
                if (button) { 
                    button.text = button.text ? button.text : util.getContrast(button.background); 
                    button.border = button.border ? button.border : 'transparent'; 
                    colorStyles[prefix + ' .cc-btn'] = ['color: ' + button.text, 'border-color: ' + button.border, 'background-color: ' + button.background]; 
                    if (button.background != 'transparent') 
                        colorStyles[prefix + ' .cc-btn:hover, ' + prefix + ' .cc-btn:focus'] = ['background-color: ' + getHoverColour(button.background)]; 
                    if (highlight) { 
                        highlight.text = highlight.text ? highlight.text : util.getContrast(highlight.background); 
                        highlight.border = highlight.border ? highlight.border : 'transparent'; 
                        colorStyles[prefix + ' .cc-highlight .cc-btn:first-child'] = ['color: ' + highlight.text, 'border-color: ' + highlight.border, 'background-color: ' + highlight.background]; 
                    } else { 
                        colorStyles[prefix + ' .cc-highlight .cc-btn:first-child'] = ['color: ' + popup.text]; 
                    } 
                } 
            } 
            var style = document.createElement('style'); 
            document.head.appendChild(style); 
            cc.customStyles[hash] = { 
                references: 1, 
                element: style.sheet 
            }; 
            var ruleIndex = -1; 
            for (var prop in colorStyles) { 
                if (colorStyles.hasOwnProperty(prop)) { 
                    style.sheet.insertRule(prop + '{' + colorStyles[prop].join(';') + '}', ++ruleIndex); 
                } 
            } 
        } 
        function getHoverColour(hex) { 
            hex = util.normaliseHex(hex); 
            if (hex == '000000') { 
                return '#222'; 
            } 
            return util.getLuminance(hex); 
        } 
        function removeCustomStyle(palette) { 
            if (util.isPlainObject(palette)) { 
                var hash = util.hash(JSON.stringify(palette)); 
                var customStyle = cc.customStyles[hash]; 
                if (customStyle && !--customStyle.references) { 
                    var styleNode = customStyle.element.ownerNode; 
                    if (styleNode && styleNode.parentNode) { 
                        styleNode.parentNode.removeChild(styleNode); 
                    } 
                    cc.customStyles[hash] = null; 
                } 
            } 
        } 
        function arrayContainsMatches(array, search) { 
            for (var i = 0, l = array.length; i < l; ++i) { 
                var str = array[i]; 
                if ((str instanceof RegExp && str.test(search)) || (typeof str == 'string' && str.length && str === search)) { 
                    return true; 
                } 
            } 
            return false; 
        } 
        function applyAutoDismiss() { 
            var setStatus = this.setStatus.bind(this); 
            var delay = this.options.dismissOnTimeout; 
            if (typeof delay == 'number' && delay >= 0) { 
                this.dismissTimeout = window.setTimeout(function() { 
                    setStatus(cc.status.dismiss); 
                }, Math.floor(delay)); 
            } 
            var scrollRange = this.options.dismissOnScroll; 
            if (typeof scrollRange == 'number' && scrollRange >= 0) { 
                var onWindowScroll = function(evt) { 
                    if (window.pageYOffset > Math.floor(scrollRange)) { 
                        setStatus(cc.status.dismiss); 
                        window.removeEventListener('scroll', onWindowScroll); 
                        this.onWindowScroll = null; 
                    } 
                }; 
                this.onWindowScroll = onWindowScroll; 
                window.addEventListener('scroll', onWindowScroll); 
            } 
        } 
        function applyRevokeButton() { 
            if (this.options.type != 'info') 
                this.options.revokable = true; 
            if (util.isMobile()) 
                this.options.animateRevokable = false; 
            if (this.options.revokable) { 
                var classes = getPositionClasses.call(this); 
                if (this.options.animateRevokable) { 
                    classes.push('cc-animate'); 
                } 
                if (this.customStyleSelector) { 
                    classes.push(this.customStyleSelector) 
                } 
                var revokeBtn = this.options.revokeBtn.replace('{{classes}}', classes.join(' ')); 
                this.revokeBtn = appendMarkup.call(this, revokeBtn); 
                var btn = this.revokeBtn; 
                if (this.options.animateRevokable) { 
                    var wait = false; 
                    var onMouseMove = util.throttle(function(evt) { 
                        var active = false; 
                        var minY = 20; 
                        var maxY = (window.innerHeight - 20); 
                        if (util.hasClass(btn, 'cc-top') && evt.clientY < minY) 
                            active = true; 
                        if (util.hasClass(btn, 'cc-bottom') && evt.clientY > maxY) 
                            active = true; 
                        if (active) { 
                            if (!util.hasClass(btn, 'cc-active')) { 
                                util.addClass(btn, 'cc-active'); 
                            } 
                        } else { 
                            if (util.hasClass(btn, 'cc-active')) { 
                                util.removeClass(btn, 'cc-active'); 
                            } 
                        } 
                    }, 200); 
                    this.onMouseMove = onMouseMove; 
                    window.addEventListener('mousemove', onMouseMove); 
                } 
            } 
        } 
        return CookiePopup 
    }()); 
    cc.Location = (function() { 
        var defaultOptions = { 
            timeout: 5000, 
            services: ['freegeoip', 'ipinfo', 'maxmind'], 
            serviceDefinitions: { 
                freegeoip: function() { 
                    return { 
                        url: '//freegeoip.net/json/?callback={callback}', 
                        isScript: true, 
                        callback: function(done, response) { 
                            try { 
                                var json = JSON.parse(response); 
                                return json.error ? toError(json) : { 
                                    code: json.country_code 
                                }; 
                            } catch (err) { 
                                return toError({ 
                                    error: 'Invalid response (' + err + ')' 
                                }); 
                            } 
                        } 
                    } 
                }, 
                ipinfo: function() { 
                    return { 
                        url: '//ipinfo.io', 
                        headers: ['Accept: application/json'], 
                        callback: function(done, response) { 
                            try { 
                                var json = JSON.parse(response); 
                                return json.error ? toError(json) : { 
                                    code: json.country 
                                }; 
                            } catch (err) { 
                                return toError({ 
                                    error: 'Invalid response (' + err + ')' 
                                }); 
                            } 
                        } 
                    } 
                }, 
                ipinfodb: function(options) { 
                    return { 
                        url: '//api.ipinfodb.com/v3/ip-country/?key={api_key}&format=json&callback={callback}', 
                        isScript: true, 
                        callback: function(done, response) { 
                            try { 
                                var json = JSON.parse(response); 
                                return json.statusCode == 'ERROR' ? toError({ 
                                    error: json.statusMessage 
                                }) : { 
                                    code: json.countryCode 
                                }; 
                            } catch (err) { 
                                return toError({ 
                                    error: 'Invalid response (' + err + ')' 
                                }); 
                            } 
                        } 
                    } 
                }, 
                maxmind: function() { 
                    return { 
                        url: '//js.maxmind.com/js/apis/geoip2/v2.1/geoip2.js', 
                        isScript: true, 
                        callback: function(done) { 
                            if (!window.geoip2) { 
                                done(new Error('Unexpected response format. The downloaded script should have exported `geoip2` to the global scope')); 
                                return; 
                            } 
                            geoip2.country(function(location) { 
                                try { 
                                    done({ 
                                        code: location.country.iso_code 
                                    }); 
                                } catch (err) { 
                                    done(toError(err)); 
                                } 
                            }, function(err) { 
                                done(toError(err)); 
                            }); 
                        } 
                    } 
                }, 
            }, 
        }; 
        function Location(options) { 
            util.deepExtend(this.options = {}, defaultOptions); 
            if (util.isPlainObject(options)) { 
                util.deepExtend(this.options, options); 
            } 
            this.currentServiceIndex = -1; 
        } 
        Location.prototype.getNextService = function() { 
            var service; 
            do { 
                service = this.getServiceByIdx(++this.currentServiceIndex); 
            } while (this.currentServiceIndex < this.options.services.length && !service); 
            return service; 
        } 
        ; 
        Location.prototype.getServiceByIdx = function(idx) { 
            var serviceOption = this.options.services[idx]; 
            if (typeof serviceOption === 'function') { 
                var dynamicOpts = serviceOption(); 
                if (dynamicOpts.name) { 
                    util.deepExtend(dynamicOpts, this.options.serviceDefinitions[dynamicOpts.name](dynamicOpts)); 
                } 
                return dynamicOpts; 
            } 
            if (typeof serviceOption === 'string') { 
                return this.options.serviceDefinitions[serviceOption](); 
            } 
            if (util.isPlainObject(serviceOption)) { 
                return this.options.serviceDefinitions[serviceOption.name](serviceOption); 
            } 
            return null; 
        } 
        ; 
        Location.prototype.locate = function(complete, error) { 
            var service = this.getNextService(); 
            if (!service) { 
                error(new Error('No services to run')); 
                return; 
            } 
            this.callbackComplete = complete; 
            this.callbackError = error; 
            this.runService(service, this.runNextServiceOnError.bind(this)); 
        } 
        ; 
        Location.prototype.setupUrl = function(service) { 
            var serviceOpts = this.getCurrentServiceOpts(); 
            return service.url.replace(/\{(.*?)\}/g, function(_, param) { 
                if (param === 'callback') { 
                    var tempName = 'callback' + Date.now(); 
                    window[tempName] = function(res) { 
                        service.__JSONP_DATA = JSON.stringify(res); 
                    } 
                    return tempName; 
                } 
                if (param in serviceOpts.interpolateUrl) { 
                    return serviceOpts.interpolateUrl[param]; 
                } 
            }); 
        } 
        ; 
        Location.prototype.runService = function(service, complete) { 
            var self = this; 
            if (!service || !service.url || !service.callback) { 
                return; 
            } 
            var requestFunction = service.isScript ? getScript : makeAsyncRequest; 
            var url = this.setupUrl(service); 
            requestFunction(url, function(xhr) { 
                var responseText = xhr ? xhr.responseText : ''; 
                if (service.__JSONP_DATA) { 
                    responseText = service.__JSONP_DATA; 
                    delete service.__JSONP_DATA; 
                } 
                self.runServiceCallback.call(self, complete, service, responseText); 
            }, this.options.timeout, service.data, service.headers); 
        } 
        ; 
        Location.prototype.runServiceCallback = function(complete, service, responseText) { 
            var self = this; 
            var serviceResultHandler = function(asyncResult) { 
                if (!result) { 
                    self.onServiceResult.call(self, complete, asyncResult) 
                } 
            }; 
            var result = service.callback(serviceResultHandler, responseText); 
            if (result) { 
                this.onServiceResult.call(this, complete, result); 
            } 
        } 
        ; 
        Location.prototype.onServiceResult = function(complete, result) { 
            if (result instanceof Error || (result && result.error)) { 
                complete.call(this, result, null); 
            } else { 
                complete.call(this, null, result); 
            } 
        } 
        ; 
        Location.prototype.runNextServiceOnError = function(err, data) { 
            if (err) { 
                this.logError(err); 
                var nextService = this.getNextService(); 
                if (nextService) { 
                    this.runService(nextService, this.runNextServiceOnError.bind(this)); 
                } else { 
                    this.completeService.call(this, this.callbackError, new Error('All services failed')); 
                } 
            } else { 
                this.completeService.call(this, this.callbackComplete, data); 
            } 
        } 
        ; 
        Location.prototype.getCurrentServiceOpts = function() { 
            var val = this.options.services[this.currentServiceIndex]; 
            if (typeof val == 'string') { 
                return { 
                    name: val 
                }; 
            } 
            if (typeof val == 'function') { 
                return val(); 
            } 
            if (util.isPlainObject(val)) { 
                return val; 
            } 
            return {}; 
        } 
        ; 
        Location.prototype.completeService = function(fn, data) { 
            this.currentServiceIndex = -1; 
            fn && fn(data); 
        } 
        ; 
        Location.prototype.logError = function(err) { 
            var idx = this.currentServiceIndex; 
            var service = this.getServiceByIdx(idx); 
            console.error('The service[' + idx + '] (' + service.url + ') responded with the following error', err); 
        } 
        ; 
        function getScript(url, callback, timeout) { 
            var timeoutIdx, s = document.createElement('script'); 
            s.type = 'text/' + (url.type || 'javascript'); 
            s.src = url.src || url; 
            s.async = false; 
            s.onreadystatechange = s.onload = function() { 
                var state = s.readyState; 
                clearTimeout(timeoutIdx); 
                if (!callback.done && (!state || /loaded|complete/.test(state))) { 
                    callback.done = true; 
                    callback(); 
                    s.onreadystatechange = s.onload = null; 
                } 
            } 
            ; 
            document.body.appendChild(s); 
            timeoutIdx = setTimeout(function() { 
                callback.done = true; 
                callback(); 
                s.onreadystatechange = s.onload = null; 
            }, timeout); 
        } 
        function makeAsyncRequest(url, onComplete, timeout, postData, requestHeaders) { 
            var xhr = new (window.XMLHttpRequest || window.ActiveXObject)('MSXML2.XMLHTTP.3.0'); 
            xhr.open(postData ? 'POST' : 'GET', url, 1); 
            xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); 
            xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); 
            if (Array.isArray(requestHeaders)) { 
                for (var i = 0, l = requestHeaders.length; i < l; ++i) { 
                    var split = requestHeaders[i].split(':', 2) 
                    xhr.setRequestHeader(split[0].replace(/^\s+|\s+$/g, ''), split[1].replace(/^\s+|\s+$/g, '')); 
                } 
            } 
            if (typeof onComplete == 'function') { 
                xhr.onreadystatechange = function() { 
                    if (xhr.readyState > 3) { 
                        onComplete(xhr); 
                    } 
                } 
                ; 
            } 
            xhr.send(postData); 
        } 
        function toError(obj) { 
            return new Error('Error [' + (obj.code || 'UNKNOWN') + ']: ' + obj.error); 
        } 
        return Location; 
    }()); 
    cc.Law = (function() { 
        var defaultOptions = { 
            regionalLaw: true, 
            hasLaw: ['AT', 'BE', 'BG', 'HR', 'CZ', 'CY', 'DK', 'EE', 'FI', 'FR', 'DE', 'EL', 'HU', 'IE', 'IT', 'LV', 'LT', 'LU', 'MT', 'NL', 'PL', 'PT', 'SK', 'SI', 'ES', 'SE', 'GB', 'UK'], 
            revokable: ['HR', 'CY', 'DK', 'EE', 'FR', 'DE', 'LV', 'LT', 'NL', 'PT', 'ES'], 
            explicitAction: ['HR', 'IT', 'ES'], 
        }; 
        function Law(options) { 
            this.initialise.apply(this, arguments); 
        } 
        Law.prototype.initialise = function(options) { 
            util.deepExtend(this.options = {}, defaultOptions); 
            if (util.isPlainObject(options)) { 
                util.deepExtend(this.options, options); 
            } 
        } 
        ; 
        Law.prototype.get = function(countryCode) { 
            var opts = this.options; 
            return { 
                hasLaw: opts.hasLaw.indexOf(countryCode) >= 0, 
                revokable: opts.revokable.indexOf(countryCode) >= 0, 
                explicitAction: opts.explicitAction.indexOf(countryCode) >= 0, 
            }; 
        } 
        ; 
        Law.prototype.applyLaw = function(options, countryCode) { 
            var country = this.get(countryCode); 
            if (!country.hasLaw) { 
                options.enabled = false; 
            } 
            if (this.options.regionalLaw) { 
                if (country.revokable) { 
                    options.revokable = true; 
                } 
                if (country.explicitAction) { 
                    options.dismissOnScroll = false; 
                    options.dismissOnTimeout = false; 
                } 
            } 
            return options; 
        } 
        ; 
        return Law; 
    }()); 
    cc.initialise = function(options, complete, error) { 
        var law = new cc.Law(options.law); 
        if (!complete) 
            complete = function() {} 
            ; 
        if (!error) 
            error = function() {} 
            ; 
        cc.getCountryCode(options, function(result) { 
            delete options.law; 
            delete options.location; 
            if (result.code) { 
                options = law.applyLaw(options, result.code); 
            } 
            complete(new cc.Popup(options)); 
        }, function(err) { 
            delete options.law; 
            delete options.location; 
            error(err, new cc.Popup(options)); 
        }); 
    } 
    ; 
    cc.getCountryCode = function(options, complete, error) { 
        if (options.law && options.law.countryCode) { 
            complete({ 
                code: options.law.countryCode 
            }); 
            return; 
        } 
        if (options.location) { 
            var locator = new cc.Location(options.location); 
            locator.locate(function(serviceResult) { 
                complete(serviceResult || {}); 
            }, error); 
            return; 
        } 
        complete({}); 
    } 
    ; 
    cc.utils = util; 
    cc.hasInitialised = true; 
    window.cookieconsent = cc; 
}(window.cookieconsent || {})); 
;(function(factory) { 
    'use strict'; 
    if (typeof define === 'function' && define.amd) { 
        define(['jquery'], factory); 
    } else if (typeof exports !== 'undefined') { 
        module.exports = factory(require('jquery')); 
    } else { 
        factory(jQuery); 
    } 
}(function($) { 
    'use strict'; 
    var Slick = window.Slick || {}; 
    Slick = (function() { 
        var instanceUid = 0; 
        function Slick(element, settings) { 
            var _ = this, dataSettings; 
            _.defaults = { 
                accessibility: true, 
                adaptiveHeight: false, 
                appendArrows: $(element), 
                appendDots: $(element), 
                arrows: true, 
                asNavFor: null, 
                prevArrow: '<button class="slick-prev" aria-label="Previous" type="button">Previous</button>', 
                nextArrow: '<button class="slick-next" aria-label="Next" type="button">Next</button>', 
                autoplay: false, 
                autoplaySpeed: 3000, 
                centerMode: false, 
                verskisIgnoreCenterOffset: false, 
                centerPadding: '50px', 
                cssEase: 'ease', 
                customPaging: function(slider, i) { 
                    return $('<button type="button" />').text(i + 1); 
                }, 
                dots: false, 
                dotsClass: 'slick-dots', 
                draggable: true, 
                easing: 'linear', 
                edgeFriction: 0.35, 
                fade: false, 
                focusOnSelect: false, 
                focusOnChange: false, 
                infinite: true, 
                initialSlide: 0, 
                lazyLoad: 'ondemand', 
                mobileFirst: false, 
                pauseOnHover: true, 
                pauseOnFocus: true, 
                pauseOnDotsHover: false, 
                respondTo: 'window', 
                responsive: null, 
                rows: 1, 
                rtl: false, 
                slide: '', 
                slidesPerRow: 1, 
                slidesToShow: 1, 
                slidesToScroll: 1, 
                speed: 500, 
                swipe: true, 
                swipeToSlide: false, 
                touchMove: true, 
                touchThreshold: 5, 
                useCSS: true, 
                useTransform: true, 
                variableWidth: false, 
                vertical: false, 
                verticalSwiping: false, 
                waitForAnimate: true, 
                zIndex: 1000 
            }; 
            _.initials = { 
                animating: false, 
                dragging: false, 
                autoPlayTimer: null, 
                currentDirection: 0, 
                currentLeft: null, 
                currentSlide: 0, 
                direction: 1, 
                $dots: null, 
                listWidth: null, 
                listHeight: null, 
                loadIndex: 0, 
                $nextArrow: null, 
                $prevArrow: null, 
                scrolling: false, 
                slideCount: null, 
                slideWidth: null, 
                $slideTrack: null, 
                $slides: null, 
                sliding: false, 
                slideOffset: 0, 
                swipeLeft: null, 
                swiping: false, 
                $list: null, 
                touchObject: {}, 
                transformsEnabled: false, 
                unslicked: false 
            }; 
            $.extend(_, _.initials); 
            _.activeBreakpoint = null; 
            _.animType = null; 
            _.animProp = null; 
            _.breakpoints = []; 
            _.breakpointSettings = []; 
            _.cssTransitions = false; 
            _.focussed = false; 
            _.interrupted = false; 
            _.hidden = 'hidden'; 
            _.paused = true; 
            _.positionProp = null; 
            _.respondTo = null; 
            _.rowCount = 1; 
            _.shouldClick = true; 
            _.$slider = $(element); 
            _.$slidesCache = null; 
            _.transformType = null; 
            _.transitionType = null; 
            _.visibilityChange = 'visibilitychange'; 
            _.windowWidth = 0; 
            _.windowTimer = null; 
            dataSettings = $(element).data('slick') || {}; 
            _.options = $.extend({}, _.defaults, settings, dataSettings); 
            _.currentSlide = _.options.initialSlide; 
            _.originalSettings = _.options; 
            if (typeof document.mozHidden !== 'undefined') { 
                _.hidden = 'mozHidden'; 
                _.visibilityChange = 'mozvisibilitychange'; 
            } else if (typeof document.webkitHidden !== 'undefined') { 
                _.hidden = 'webkitHidden'; 
                _.visibilityChange = 'webkitvisibilitychange'; 
            } 
            _.autoPlay = $.proxy(_.autoPlay, _); 
            _.autoPlayClear = $.proxy(_.autoPlayClear, _); 
            _.autoPlayIterator = $.proxy(_.autoPlayIterator, _); 
            _.changeSlide = $.proxy(_.changeSlide, _); 
            _.clickHandler = $.proxy(_.clickHandler, _); 
            _.selectHandler = $.proxy(_.selectHandler, _); 
            _.setPosition = $.proxy(_.setPosition, _); 
            _.swipeHandler = $.proxy(_.swipeHandler, _); 
            _.dragHandler = $.proxy(_.dragHandler, _); 
            _.keyHandler = $.proxy(_.keyHandler, _); 
            _.instanceUid = instanceUid++; 
            _.htmlExpr = /^(?:\s*(<[\w\W]+>)[^>]*)$/; 
            _.registerBreakpoints(); 
            _.init(true); 
        } 
        return Slick; 
    }()); 
    Slick.prototype.activateADA = function() { 
        var _ = this; 
        _.$slideTrack.find('.slick-active').attr({ 
            'aria-hidden': 'false' 
        }).find('a, input, button, select').attr({ 
            'tabindex': '0' 
        }); 
    } 
    ; 
    Slick.prototype.addSlide = Slick.prototype.slickAdd = function(markup, index, addBefore) { 
        var _ = this; 
        if (typeof (index) === 'boolean') { 
            addBefore = index; 
            index = null; 
        } else if (index < 0 || (index >= _.slideCount)) { 
            return false; 
        } 
        _.unload(); 
        if (typeof (index) === 'number') { 
            if (index === 0 && _.$slides.length === 0) { 
                $(markup).appendTo(_.$slideTrack); 
            } else if (addBefore) { 
                $(markup).insertBefore(_.$slides.eq(index)); 
            } else { 
                $(markup).insertAfter(_.$slides.eq(index)); 
            } 
        } else { 
            if (addBefore === true) { 
                $(markup).prependTo(_.$slideTrack); 
            } else { 
                $(markup).appendTo(_.$slideTrack); 
            } 
        } 
        _.$slides = _.$slideTrack.children(this.options.slide); 
        _.$slideTrack.children(this.options.slide).detach(); 
        _.$slideTrack.append(_.$slides); 
        _.$slides.each(function(index, element) { 
            $(element).attr('data-slick-index', index); 
        }); 
        _.$slidesCache = _.$slides; 
        _.reinit(); 
    } 
    ; 
    Slick.prototype.animateHeight = function() { 
        var _ = this; 
        if (_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) { 
            var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true); 
            _.$list.animate({ 
                height: targetHeight 
            }, _.options.speed); 
        } 
    } 
    ; 
    Slick.prototype.animateSlide = function(targetLeft, callback) { 
        var animProps = {} 
          , _ = this; 
        _.animateHeight(); 
        if (_.options.rtl === true && _.options.vertical === false) { 
            targetLeft = -targetLeft; 
        } 
        if (_.transformsEnabled === false) { 
            if (_.options.vertical === false) { 
                _.$slideTrack.animate({ 
                    left: targetLeft 
                }, _.options.speed, _.options.easing, callback); 
            } else { 
                _.$slideTrack.animate({ 
                    top: targetLeft 
                }, _.options.speed, _.options.easing, callback); 
            } 
        } else { 
            if (_.cssTransitions === false) { 
                if (_.options.rtl === true) { 
                    _.currentLeft = -(_.currentLeft); 
                } 
                $({ 
                    animStart: _.currentLeft 
                }).animate({ 
                    animStart: targetLeft 
                }, { 
                    duration: _.options.speed, 
                    easing: _.options.easing, 
                    step: function(now) { 
                        now = Math.ceil(now); 
                        if (_.options.vertical === false) { 
                            animProps[_.animType] = 'translate(' + now + 'px, 0px)'; 
                            _.$slideTrack.css(animProps); 
                        } else { 
                            animProps[_.animType] = 'translate(0px,' + now + 'px)'; 
                            _.$slideTrack.css(animProps); 
                        } 
                    }, 
                    complete: function() { 
                        if (callback) { 
                            callback.call(); 
                        } 
                    } 
                }); 
            } else { 
                _.applyTransition(); 
                targetLeft = Math.ceil(targetLeft); 
                if (_.options.vertical === false) { 
                    animProps[_.animType] = 'translate3d(' + targetLeft + 'px, 0px, 0px)'; 
                } else { 
                    animProps[_.animType] = 'translate3d(0px,' + targetLeft + 'px, 0px)'; 
                } 
                _.$slideTrack.css(animProps); 
                if (callback) { 
                    setTimeout(function() { 
                        _.disableTransition(); 
                        callback.call(); 
                    }, _.options.speed); 
                } 
            } 
        } 
    } 
    ; 
    Slick.prototype.getNavTarget = function() { 
        var _ = this 
          , asNavFor = _.options.asNavFor; 
        if (asNavFor && asNavFor !== null) { 
            asNavFor = $(asNavFor).not(_.$slider); 
        } 
        return asNavFor; 
    } 
    ; 
    Slick.prototype.asNavFor = function(index) { 
        var _ = this 
          , asNavFor = _.getNavTarget(); 
        if (asNavFor !== null && typeof asNavFor === 'object') { 
            asNavFor.each(function() { 
                var target = $(this).slick('getSlick'); 
                if (!target.unslicked) { 
                    target.slideHandler(index, true); 
                } 
            }); 
        } 
    } 
    ; 
    Slick.prototype.applyTransition = function(slide) { 
        var _ = this 
          , transition = {}; 
        if (_.options.fade === false) { 
            transition[_.transitionType] = _.transformType + ' ' + _.options.speed + 'ms ' + _.options.cssEase; 
        } else { 
            transition[_.transitionType] = 'opacity ' + _.options.speed + 'ms ' + _.options.cssEase; 
        } 
        if (_.options.fade === false) { 
            _.$slideTrack.css(transition); 
        } else { 
            _.$slides.eq(slide).css(transition); 
        } 
    } 
    ; 
    Slick.prototype.autoPlay = function() { 
        var _ = this; 
        _.autoPlayClear(); 
        if (_.slideCount > _.options.slidesToShow) { 
            _.autoPlayTimer = setInterval(_.autoPlayIterator, _.options.autoplaySpeed); 
        } 
    } 
    ; 
    Slick.prototype.autoPlayClear = function() { 
        var _ = this; 
        if (_.autoPlayTimer) { 
            clearInterval(_.autoPlayTimer); 
        } 
    } 
    ; 
    Slick.prototype.autoPlayIterator = function() { 
        var _ = this 
          , slideTo = _.currentSlide + _.options.slidesToScroll; 
        if (!_.paused && !_.interrupted && !_.focussed) { 
            if (_.options.infinite === false) { 
                if (_.direction === 1 && (_.currentSlide + 1) === (_.slideCount - 1)) { 
                    _.direction = 0; 
                } else if (_.direction === 0) { 
                    slideTo = _.currentSlide - _.options.slidesToScroll; 
                    if (_.currentSlide - 1 === 0) { 
                        _.direction = 1; 
                    } 
                } 
            } 
            _.slideHandler(slideTo); 
        } 
    } 
    ; 
    Slick.prototype.buildArrows = function() { 
        var _ = this; 
        if (_.options.arrows === true) { 
            _.$prevArrow = $(_.options.prevArrow).addClass('slick-arrow'); 
            _.$nextArrow = $(_.options.nextArrow).addClass('slick-arrow'); 
            if (_.slideCount > _.options.slidesToShow) { 
                _.$prevArrow.removeClass('slick-hidden').removeAttr('aria-hidden tabindex'); 
                _.$nextArrow.removeClass('slick-hidden').removeAttr('aria-hidden tabindex'); 
                if (_.htmlExpr.test(_.options.prevArrow)) { 
                    _.$prevArrow.prependTo(_.options.appendArrows); 
                } 
                if (_.htmlExpr.test(_.options.nextArrow)) { 
                    _.$nextArrow.appendTo(_.options.appendArrows); 
                } 
                if (_.options.infinite !== true) { 
                    _.$prevArrow.addClass('slick-disabled').attr('aria-disabled', 'true'); 
                } 
            } else { 
                _.$prevArrow.add(_.$nextArrow).addClass('slick-hidden').attr({ 
                    'aria-disabled': 'true', 
                    'tabindex': '-1' 
                }); 
            } 
        } 
    } 
    ; 
    Slick.prototype.buildDots = function() { 
        var _ = this, i, dot; 
        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) { 
            _.$slider.addClass('slick-dotted'); 
            dot = $('<ul />').addClass(_.options.dotsClass); 
            for (i = 0; i <= _.getDotCount(); i += 1) { 
                dot.append($('<li />').append(_.options.customPaging.call(this, _, i))); 
            } 
            _.$dots = dot.appendTo(_.options.appendDots); 
            _.$dots.find('li').first().addClass('slick-active'); 
        } 
    } 
    ; 
    Slick.prototype.buildOut = function() { 
        var _ = this; 
        _.$slides = _.$slider.children(_.options.slide + ':not(.slick-cloned)').addClass('slick-slide'); 
        _.slideCount = _.$slides.length; 
        _.$slides.each(function(index, element) { 
            $(element).attr('data-slick-index', index).data('originalStyling', $(element).attr('style') || ''); 
        }); 
        _.$slider.addClass('slick-slider'); 
        _.$slideTrack = (_.slideCount === 0) ? $('<div class="slick-track"/>').appendTo(_.$slider) : _.$slides.wrapAll('<div class="slick-track"/>').parent(); 
        _.$list = _.$slideTrack.wrap('<div class="slick-list"/>').parent(); 
        _.$slideTrack.css('opacity', 0); 
        if (_.options.centerMode === true || _.options.swipeToSlide === true) { 
            _.options.slidesToScroll = 1; 
        } 
        $('img[data-lazy]', _.$slider).not('[src]').addClass('slick-loading'); 
        _.setupInfinite(); 
        _.buildArrows(); 
        _.buildDots(); 
        _.updateDots(); 
        _.setSlideClasses(typeof _.currentSlide === 'number' ? _.currentSlide : 0); 
        if (_.options.draggable === true) { 
            _.$list.addClass('draggable'); 
        } 
    } 
    ; 
    Slick.prototype.buildRows = function() { 
        var _ = this, a, b, c, newSlides, numOfSlides, originalSlides, slidesPerSection; 
        newSlides = document.createDocumentFragment(); 
        originalSlides = _.$slider.children(); 
        if (_.options.rows > 0) { 
            slidesPerSection = _.options.slidesPerRow * _.options.rows; 
            numOfSlides = Math.ceil(originalSlides.length / slidesPerSection); 
            for (a = 0; a < numOfSlides; a++) { 
                var slide = document.createElement('div'); 
                for (b = 0; b < _.options.rows; b++) { 
                    var row = document.createElement('div'); 
                    for (c = 0; c < _.options.slidesPerRow; c++) { 
                        var target = (a * slidesPerSection + ((b * _.options.slidesPerRow) + c)); 
                        if (originalSlides.get(target)) { 
                            row.appendChild(originalSlides.get(target)); 
                        } 
                    } 
                    slide.appendChild(row); 
                } 
                newSlides.appendChild(slide); 
            } 
            _.$slider.empty().append(newSlides); 
            _.$slider.children().children().children().css({ 
                'width': (100 / _.options.slidesPerRow) + '%', 
                'display': 'inline-block' 
            }); 
        } 
    } 
    ; 
    Slick.prototype.checkResponsive = function(initial, forceUpdate) { 
        var _ = this, breakpoint, targetBreakpoint, respondToWidth, triggerBreakpoint = false; 
        var sliderWidth = _.$slider.width(); 
        var windowWidth = window.innerWidth || $(window).width(); 
        if (_.respondTo === 'window') { 
            respondToWidth = windowWidth; 
        } else if (_.respondTo === 'slider') { 
            respondToWidth = sliderWidth; 
        } else if (_.respondTo === 'min') { 
            respondToWidth = Math.min(windowWidth, sliderWidth); 
        } 
        if (_.options.responsive && _.options.responsive.length && _.options.responsive !== null) { 
            targetBreakpoint = null; 
            for (breakpoint in _.breakpoints) { 
                if (_.breakpoints.hasOwnProperty(breakpoint)) { 
                    if (_.originalSettings.mobileFirst === false) { 
                        if (respondToWidth < _.breakpoints[breakpoint]) { 
                            targetBreakpoint = _.breakpoints[breakpoint]; 
                        } 
                    } else { 
                        if (respondToWidth > _.breakpoints[breakpoint]) { 
                            targetBreakpoint = _.breakpoints[breakpoint]; 
                        } 
                    } 
                } 
            } 
            if (targetBreakpoint !== null) { 
                if (_.activeBreakpoint !== null) { 
                    if (targetBreakpoint !== _.activeBreakpoint || forceUpdate) { 
                        _.activeBreakpoint = targetBreakpoint; 
                        if (_.breakpointSettings[targetBreakpoint] === 'unslick') { 
                            _.unslick(targetBreakpoint); 
                        } else { 
                            _.options = $.extend({}, _.originalSettings, _.breakpointSettings[targetBreakpoint]); 
                            if (initial === true) { 
                                _.currentSlide = _.options.initialSlide; 
                            } 
                            _.refresh(initial); 
                        } 
                        triggerBreakpoint = targetBreakpoint; 
                    } 
                } else { 
                    _.activeBreakpoint = targetBreakpoint; 
                    if (_.breakpointSettings[targetBreakpoint] === 'unslick') { 
                        _.unslick(targetBreakpoint); 
                    } else { 
                        _.options = $.extend({}, _.originalSettings, _.breakpointSettings[targetBreakpoint]); 
                        if (initial === true) { 
                            _.currentSlide = _.options.initialSlide; 
                        } 
                        _.refresh(initial); 
                    } 
                    triggerBreakpoint = targetBreakpoint; 
                } 
            } else { 
                if (_.activeBreakpoint !== null) { 
                    _.activeBreakpoint = null; 
                    _.options = _.originalSettings; 
                    if (initial === true) { 
                        _.currentSlide = _.options.initialSlide; 
                    } 
                    _.refresh(initial); 
                    triggerBreakpoint = targetBreakpoint; 
                } 
            } 
            if (!initial && triggerBreakpoint !== false) { 
                _.$slider.trigger('breakpoint', [_, triggerBreakpoint]); 
            } 
        } 
    } 
    ; 
    Slick.prototype.changeSlide = function(event, dontAnimate) { 
        var _ = this, $target = $(event.currentTarget), indexOffset, slideOffset, unevenOffset; 
        if ($target.is('a')) { 
            event.preventDefault(); 
        } 
        if (!$target.is('li')) { 
            $target = $target.closest('li'); 
        } 
        unevenOffset = (_.slideCount % _.options.slidesToScroll !== 0); 
        indexOffset = unevenOffset ? 0 : (_.slideCount - _.currentSlide) % _.options.slidesToScroll; 
        switch (event.data.message) { 
        case 'previous': 
            slideOffset = indexOffset === 0 ? _.options.slidesToScroll : _.options.slidesToShow - indexOffset; 
            if (_.slideCount > _.options.slidesToShow) { 
                _.slideHandler(_.currentSlide - slideOffset, false, dontAnimate); 
            } 
            break; 
        case 'next': 
            slideOffset = indexOffset === 0 ? _.options.slidesToScroll : indexOffset; 
            if (_.slideCount > _.options.slidesToShow) { 
                _.slideHandler(_.currentSlide + slideOffset, false, dontAnimate); 
            } 
            break; 
        case 'index': 
            var index = event.data.index === 0 ? 0 : event.data.index || $target.index() * _.options.slidesToScroll; 
            _.slideHandler(_.checkNavigable(index), false, dontAnimate); 
            $target.children().trigger('focus'); 
            break; 
        default: 
            return; 
        } 
    } 
    ; 
    Slick.prototype.checkNavigable = function(index) { 
        var _ = this, navigables, prevNavigable; 
        navigables = _.getNavigableIndexes(); 
        prevNavigable = 0; 
        if (index > navigables[navigables.length - 1]) { 
            index = navigables[navigables.length - 1]; 
        } else { 
            for (var n in navigables) { 
                if (index < navigables[n]) { 
                    index = prevNavigable; 
                    break; 
                } 
                prevNavigable = navigables[n]; 
            } 
        } 
        return index; 
    } 
    ; 
    Slick.prototype.cleanUpEvents = function() { 
        var _ = this; 
        if (_.options.dots && _.$dots !== null) { 
            $('li', _.$dots).off('click.slick', _.changeSlide).off('mouseenter.slick', $.proxy(_.interrupt, _, true)).off('mouseleave.slick', $.proxy(_.interrupt, _, false)); 
            if (_.options.accessibility === true) { 
                _.$dots.off('keydown.slick', _.keyHandler); 
            } 
        } 
        _.$slider.off('focus.slick blur.slick'); 
        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) { 
            _.$prevArrow && _.$prevArrow.off('click.slick', _.changeSlide); 
            _.$nextArrow && _.$nextArrow.off('click.slick', _.changeSlide); 
            if (_.options.accessibility === true) { 
                _.$prevArrow && _.$prevArrow.off('keydown.slick', _.keyHandler); 
                _.$nextArrow && _.$nextArrow.off('keydown.slick', _.keyHandler); 
            } 
        } 
        _.$list.off('touchstart.slick mousedown.slick', _.swipeHandler); 
        _.$list.off('touchmove.slick mousemove.slick', _.swipeHandler); 
        _.$list.off('touchend.slick mouseup.slick', _.swipeHandler); 
        _.$list.off('touchcancel.slick mouseleave.slick', _.swipeHandler); 
        _.$list.off('click.slick', _.clickHandler); 
        $(document).off(_.visibilityChange, _.visibility); 
        _.cleanUpSlideEvents(); 
        if (_.options.accessibility === true) { 
            _.$list.off('keydown.slick', _.keyHandler); 
        } 
        if (_.options.focusOnSelect === true) { 
            $(_.$slideTrack).children().off('click.slick', _.selectHandler); 
        } 
        $(window).off('orientationchange.slick.slick-' + _.instanceUid, _.orientationChange); 
        $(window).off('resize.slick.slick-' + _.instanceUid, _.resize); 
        $('[draggable!=true]', _.$slideTrack).off('dragstart', _.preventDefault); 
        $(window).off('load.slick.slick-' + _.instanceUid, _.setPosition); 
    } 
    ; 
    Slick.prototype.cleanUpSlideEvents = function() { 
        var _ = this; 
        _.$list.off('mouseenter.slick', $.proxy(_.interrupt, _, true)); 
        _.$list.off('mouseleave.slick', $.proxy(_.interrupt, _, false)); 
    } 
    ; 
    Slick.prototype.cleanUpRows = function() { 
        var _ = this, originalSlides; 
        if (_.options.rows > 0) { 
            originalSlides = _.$slides.children().children(); 
            originalSlides.removeAttr('style'); 
            _.$slider.empty().append(originalSlides); 
        } 
    } 
    ; 
    Slick.prototype.clickHandler = function(event) { 
        var _ = this; 
        if (_.shouldClick === false) { 
            event.stopImmediatePropagation(); 
            event.stopPropagation(); 
            event.preventDefault(); 
        } 
    } 
    ; 
    Slick.prototype.destroy = function(refresh) { 
        var _ = this; 
        _.autoPlayClear(); 
        _.touchObject = {}; 
        _.cleanUpEvents(); 
        $('.slick-cloned', _.$slider).detach(); 
        if (_.$dots) { 
            _.$dots.remove(); 
        } 
        if (_.$prevArrow && _.$prevArrow.length) { 
            _.$prevArrow.removeClass('slick-disabled slick-arrow slick-hidden').removeAttr('aria-hidden aria-disabled tabindex').css('display', ''); 
            if (_.htmlExpr.test(_.options.prevArrow)) { 
                _.$prevArrow.remove(); 
            } 
        } 
        if (_.$nextArrow && _.$nextArrow.length) { 
            _.$nextArrow.removeClass('slick-disabled slick-arrow slick-hidden').removeAttr('aria-hidden aria-disabled tabindex').css('display', ''); 
            if (_.htmlExpr.test(_.options.nextArrow)) { 
                _.$nextArrow.remove(); 
            } 
        } 
        if (_.$slides) { 
            _.$slides.removeClass('slick-slide slick-active slick-center slick-visible slick-current').removeAttr('aria-hidden').removeAttr('data-slick-index').each(function() { 
                $(this).attr('style', $(this).data('originalStyling')); 
            }); 
            _.$slideTrack.children(this.options.slide).detach(); 
            _.$slideTrack.detach(); 
            _.$list.detach(); 
            _.$slider.append(_.$slides); 
        } 
        _.cleanUpRows(); 
        _.$slider.removeClass('slick-slider'); 
        _.$slider.removeClass('slick-initialized'); 
        _.$slider.removeClass('slick-dotted'); 
        _.unslicked = true; 
        if (!refresh) { 
            _.$slider.trigger('destroy', [_]); 
        } 
    } 
    ; 
    Slick.prototype.disableTransition = function(slide) { 
        var _ = this 
          , transition = {}; 
        transition[_.transitionType] = ''; 
        if (_.options.fade === false) { 
            _.$slideTrack.css(transition); 
        } else { 
            _.$slides.eq(slide).css(transition); 
        } 
    } 
    ; 
    Slick.prototype.fadeSlide = function(slideIndex, callback) { 
        var _ = this; 
        if (_.cssTransitions === false) { 
            _.$slides.eq(slideIndex).css({ 
                zIndex: _.options.zIndex 
            }); 
            _.$slides.eq(slideIndex).animate({ 
                opacity: 1 
            }, _.options.speed, _.options.easing, callback); 
        } else { 
            _.applyTransition(slideIndex); 
            _.$slides.eq(slideIndex).css({ 
                opacity: 1, 
                zIndex: _.options.zIndex 
            }); 
            if (callback) { 
                setTimeout(function() { 
                    _.disableTransition(slideIndex); 
                    callback.call(); 
                }, _.options.speed); 
            } 
        } 
    } 
    ; 
    Slick.prototype.fadeSlideOut = function(slideIndex) { 
        var _ = this; 
        if (_.cssTransitions === false) { 
            _.$slides.eq(slideIndex).animate({ 
                opacity: 0, 
                zIndex: _.options.zIndex - 2 
            }, _.options.speed, _.options.easing); 
        } else { 
            _.applyTransition(slideIndex); 
            _.$slides.eq(slideIndex).css({ 
                opacity: 0, 
                zIndex: _.options.zIndex - 2 
            }); 
        } 
    } 
    ; 
    Slick.prototype.filterSlides = Slick.prototype.slickFilter = function(filter) { 
        var _ = this; 
        if (filter !== null) { 
            _.$slidesCache = _.$slides; 
            _.unload(); 
            _.$slideTrack.children(this.options.slide).detach(); 
            _.$slidesCache.filter(filter).appendTo(_.$slideTrack); 
            _.reinit(); 
        } 
    } 
    ; 
    Slick.prototype.focusHandler = function() { 
        var _ = this; 
        _.$slider.off('focus.slick blur.slick').on('focus.slick blur.slick', '*', function(event) { 
            event.stopImmediatePropagation(); 
            var $sf = $(this); 
            setTimeout(function() { 
                if (_.options.pauseOnFocus) { 
                    _.focussed = $sf.is(':focus'); 
                    _.autoPlay(); 
                } 
            }, 0); 
        }); 
    } 
    ; 
    Slick.prototype.getCurrent = Slick.prototype.slickCurrentSlide = function() { 
        var _ = this; 
        return _.currentSlide; 
    } 
    ; 
    Slick.prototype.getDotCount = function() { 
        var _ = this; 
        var breakPoint = 0; 
        var counter = 0; 
        var pagerQty = 0; 
        if (_.options.infinite === true) { 
            if (_.slideCount <= _.options.slidesToShow) { 
                ++pagerQty; 
            } else { 
                while (breakPoint < _.slideCount) { 
                    ++pagerQty; 
                    breakPoint = counter + _.options.slidesToScroll; 
                    counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow; 
                } 
            } 
        } else if (_.options.centerMode === true) { 
            pagerQty = _.slideCount; 
        } else if (!_.options.asNavFor) { 
            pagerQty = 1 + Math.ceil((_.slideCount - _.options.slidesToShow) / _.options.slidesToScroll); 
        } else { 
            while (breakPoint < _.slideCount) { 
                ++pagerQty; 
                breakPoint = counter + _.options.slidesToScroll; 
                counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow; 
            } 
        } 
        return pagerQty - 1; 
    } 
    ; 
    Slick.prototype.getLeft = function(slideIndex) { 
        var _ = this, targetLeft, verticalHeight, verticalOffset = 0, targetSlide, coef; 
        _.slideOffset = 0; 
        verticalHeight = _.$slides.first().outerHeight(true); 
        if (_.options.infinite === true) { 
            if (_.slideCount > _.options.slidesToShow) { 
                _.slideOffset = (_.slideWidth * _.options.slidesToShow) * -1; 
                coef = -1 
                if (_.options.vertical === true && _.options.centerMode === true) { 
                    if (_.options.slidesToShow === 2) { 
                        coef = -1.5; 
                    } else if (_.options.slidesToShow === 1) { 
                        coef = -2 
                    } 
                } 
                verticalOffset = (verticalHeight * _.options.slidesToShow) * coef; 
            } 
            if (_.slideCount % _.options.slidesToScroll !== 0) { 
                if (slideIndex + _.options.slidesToScroll > _.slideCount && _.slideCount > _.options.slidesToShow) { 
                    if (slideIndex > _.slideCount) { 
                        _.slideOffset = ((_.options.slidesToShow - (slideIndex - _.slideCount)) * _.slideWidth) * -1; 
                        verticalOffset = ((_.options.slidesToShow - (slideIndex - _.slideCount)) * verticalHeight) * -1; 
                    } else { 
                        _.slideOffset = ((_.slideCount % _.options.slidesToScroll) * _.slideWidth) * -1; 
                        verticalOffset = ((_.slideCount % _.options.slidesToScroll) * verticalHeight) * -1; 
                    } 
                } 
            } 
        } else { 
            if (slideIndex + _.options.slidesToShow > _.slideCount) { 
                _.slideOffset = ((slideIndex + _.options.slidesToShow) - _.slideCount) * _.slideWidth; 
                verticalOffset = ((slideIndex + _.options.slidesToShow) - _.slideCount) * verticalHeight; 
            } 
        } 
        if (_.slideCount <= _.options.slidesToShow) { 
            _.slideOffset = 0; 
            verticalOffset = 0; 
        } 
        if (_.options.centerMode === true && _.slideCount <= _.options.slidesToShow) { 
            _.slideOffset = ((_.slideWidth * Math.floor(_.options.slidesToShow)) / 2) - ((_.slideWidth * _.slideCount) / 2); 
            if (_.options.verskisIgnoreCenterOffset) { 
                _.slideOffset = 0; 
            } 
        } else if (_.options.centerMode === true && _.options.infinite === true) { 
            _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2) - _.slideWidth; 
            if (_.options.verskisIgnoreCenterOffset) { 
                _.slideOffset = 0; 
            } 
        } else if (_.options.centerMode === true) { 
            _.slideOffset = 0; 
            _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2); 
            if (_.options.verskisIgnoreCenterOffset) { 
                if (_.slideCount - (slideIndex + _.options.slidesToShow) < 0) { 
                    _.slideOffset = ((slideIndex + _.options.slidesToShow) - _.slideCount) * _.slideWidth; 
                } else { 
                    _.slideOffset = 0; 
                } 
            } 
        } 
        if (_.options.vertical === false) { 
            targetLeft = ((slideIndex * _.slideWidth) * -1) + _.slideOffset; 
        } else { 
            targetLeft = ((slideIndex * verticalHeight) * -1) + verticalOffset; 
        } 
        if (_.options.variableWidth === true) { 
            if (_.slideCount <= _.options.slidesToShow || _.options.infinite === false) { 
                targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex); 
            } else { 
                targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex + _.options.slidesToShow); 
            } 
            if (_.options.rtl === true) { 
                if (targetSlide[0]) { 
                    targetLeft = (_.$slideTrack.width() - targetSlide[0].offsetLeft - targetSlide.width()) * -1; 
                } else { 
                    targetLeft = 0; 
                } 
            } else { 
                targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0; 
            } 
            if (_.options.centerMode === true) { 
                if (_.slideCount <= _.options.slidesToShow || _.options.infinite === false) { 
                    targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex); 
                } else { 
                    targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex + _.options.slidesToShow + 1); 
                } 
                if (_.options.rtl === true) { 
                    if (targetSlide[0]) { 
                        targetLeft = (_.$slideTrack.width() - targetSlide[0].offsetLeft - targetSlide.width()) * -1; 
                    } else { 
                        targetLeft = 0; 
                    } 
                } else { 
                    targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0; 
                } 
                targetLeft += (_.$list.width() - targetSlide.outerWidth()) / 2; 
            } 
        } 
        return targetLeft; 
    } 
    ; 
    Slick.prototype.getOption = Slick.prototype.slickGetOption = function(option) { 
        var _ = this; 
        return _.options[option]; 
    } 
    ; 
    Slick.prototype.getNavigableIndexes = function() { 
        var _ = this, breakPoint = 0, counter = 0, indexes = [], max; 
        if (_.options.infinite === false) { 
            max = _.slideCount; 
        } else { 
            breakPoint = _.options.slidesToScroll * -1; 
            counter = _.options.slidesToScroll * -1; 
            max = _.slideCount * 2; 
        } 
        while (breakPoint < max) { 
            indexes.push(breakPoint); 
            breakPoint = counter + _.options.slidesToScroll; 
            counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow; 
        } 
        return indexes; 
    } 
    ; 
    Slick.prototype.getSlick = function() { 
        return this; 
    } 
    ; 
    Slick.prototype.getSlideCount = function() { 
        var _ = this, slidesTraversed, swipedSlide, centerOffset; 
        centerOffset = _.options.centerMode === true ? _.slideWidth * Math.floor(_.options.slidesToShow / 2) : 0; 
        if (_.options.verskisIgnoreCenterOffset) { 
            centerOffset = 0; 
        } 
        if (_.options.swipeToSlide === true) { 
            _.$slideTrack.find('.slick-slide').each(function(index, slide) { 
                if (slide.offsetLeft - centerOffset + ($(slide).outerWidth() / 2) > (_.swipeLeft * -1)) { 
                    swipedSlide = slide; 
                    return false; 
                } 
            }); 
            slidesTraversed = Math.abs($(swipedSlide).attr('data-slick-index') - _.currentSlide) || 1; 
            return slidesTraversed; 
        } else { 
            return _.options.slidesToScroll; 
        } 
    } 
    ; 
    Slick.prototype.goTo = Slick.prototype.slickGoTo = function(slide, dontAnimate) { 
        var _ = this; 
        _.changeSlide({ 
            data: { 
                message: 'index', 
                index: parseInt(slide) 
            } 
        }, dontAnimate); 
    } 
    ; 
    Slick.prototype.init = function(creation) { 
        var _ = this; 
        if (!$(_.$slider).hasClass('slick-initialized')) { 
            $(_.$slider).addClass('slick-initialized'); 
            _.buildRows(); 
            _.buildOut(); 
            _.setProps(); 
            _.startLoad(); 
            _.loadSlider(); 
            _.initializeEvents(); 
            _.updateArrows(); 
            _.updateDots(); 
            _.checkResponsive(true); 
            _.focusHandler(); 
        } 
        if (creation) { 
            _.$slider.trigger('init', [_]); 
        } 
        if (_.options.accessibility === true) { 
            _.initADA(); 
        } 
        if (_.options.autoplay) { 
            _.paused = false; 
            _.autoPlay(); 
        } 
    } 
    ; 
    Slick.prototype.initADA = function() { 
        var _ = this 
          , numDotGroups = Math.ceil(_.slideCount / _.options.slidesToShow) 
          , tabControlIndexes = _.getNavigableIndexes().filter(function(val) { 
            return (val >= 0) && (val < _.slideCount); 
        }); 
        _.$slides.add(_.$slideTrack.find('.slick-cloned')).attr({ 
            'aria-hidden': 'true', 
            'tabindex': '-1' 
        }).find('a, input, button, select').attr({ 
            'tabindex': '-1' 
        }); 
        if (_.$dots !== null) { 
            _.$slides.not(_.$slideTrack.find('.slick-cloned')).each(function(i) { 
                var slideControlIndex = tabControlIndexes.indexOf(i); 
                $(this).attr({ 
                    'role': 'tabpanel', 
                    'id': 'slick-slide' + _.instanceUid + i, 
                    'tabindex': -1 
                }); 
                if (slideControlIndex !== -1) { 
                    var ariaButtonControl = 'slick-slide-control' + _.instanceUid + slideControlIndex 
                    if ($('#' + ariaButtonControl).length) { 
                        $(this).attr({ 
                            'aria-describedby': ariaButtonControl 
                        }); 
                    } 
                } 
            }); 
            _.$dots.attr('role', 'tablist').find('li').each(function(i) { 
                var mappedSlideIndex = tabControlIndexes[i]; 
                $(this).attr({ 
                    'role': 'presentation' 
                }); 
                $(this).find('button').first().attr({ 
                    'role': 'tab', 
                    'id': 'slick-slide-control' + _.instanceUid + i, 
                    'aria-controls': 'slick-slide' + _.instanceUid + mappedSlideIndex, 
                    'aria-label': (i + 1) + ' of ' + numDotGroups, 
                    'aria-selected': null, 
                    'tabindex': '-1' 
                }); 
            }).eq(_.currentSlide).find('button').attr({ 
                'aria-selected': 'true', 
                'tabindex': '0' 
            }).end(); 
        } 
        for (var i = _.currentSlide, max = i + _.options.slidesToShow; i < max; i++) { 
            if (_.options.focusOnChange) { 
                _.$slides.eq(i).attr({ 
                    'tabindex': '0' 
                }); 
            } else { 
                _.$slides.eq(i).removeAttr('tabindex'); 
            } 
        } 
        _.activateADA(); 
    } 
    ; 
    Slick.prototype.initArrowEvents = function() { 
        var _ = this; 
        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) { 
            _.$prevArrow.off('click.slick').on('click.slick', { 
                message: 'previous' 
            }, _.changeSlide); 
            _.$nextArrow.off('click.slick').on('click.slick', { 
                message: 'next' 
            }, _.changeSlide); 
            if (_.options.accessibility === true) { 
                _.$prevArrow.on('keydown.slick', _.keyHandler); 
                _.$nextArrow.on('keydown.slick', _.keyHandler); 
            } 
        } 
    } 
    ; 
    Slick.prototype.initDotEvents = function() { 
        var _ = this; 
        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) { 
            $('li', _.$dots).on('click.slick', { 
                message: 'index' 
            }, _.changeSlide); 
            if (_.options.accessibility === true) { 
                _.$dots.on('keydown.slick', _.keyHandler); 
            } 
        } 
        if (_.options.dots === true && _.options.pauseOnDotsHover === true && _.slideCount > _.options.slidesToShow) { 
            $('li', _.$dots).on('mouseenter.slick', $.proxy(_.interrupt, _, true)).on('mouseleave.slick', $.proxy(_.interrupt, _, false)); 
        } 
    } 
    ; 
    Slick.prototype.initSlideEvents = function() { 
        var _ = this; 
        if (_.options.pauseOnHover) { 
            _.$list.on('mouseenter.slick', $.proxy(_.interrupt, _, true)); 
            _.$list.on('mouseleave.slick', $.proxy(_.interrupt, _, false)); 
        } 
    } 
    ; 
    Slick.prototype.initializeEvents = function() { 
        var _ = this; 
        _.initArrowEvents(); 
        _.initDotEvents(); 
        _.initSlideEvents(); 
        _.$list.on('touchstart.slick mousedown.slick', { 
            action: 'start' 
        }, _.swipeHandler); 
        _.$list.on('touchmove.slick mousemove.slick', { 
            action: 'move' 
        }, _.swipeHandler); 
        _.$list.on('touchend.slick mouseup.slick', { 
            action: 'end' 
        }, _.swipeHandler); 
        _.$list.on('touchcancel.slick mouseleave.slick', { 
            action: 'end' 
        }, _.swipeHandler); 
        _.$list.on('click.slick', _.clickHandler); 
        $(document).on(_.visibilityChange, $.proxy(_.visibility, _)); 
        if (_.options.accessibility === true) { 
            _.$list.on('keydown.slick', _.keyHandler); 
        } 
        if (_.options.focusOnSelect === true) { 
            $(_.$slideTrack).children().on('click.slick', _.selectHandler); 
        } 
        $(window).on('orientationchange.slick.slick-' + _.instanceUid, $.proxy(_.orientationChange, _)); 
        $(window).on('resize.slick.slick-' + _.instanceUid, $.proxy(_.resize, _)); 
        $('[draggable!=true]', _.$slideTrack).on('dragstart', _.preventDefault); 
        $(window).on('load.slick.slick-' + _.instanceUid, _.setPosition); 
        $(_.setPosition); 
    } 
    ; 
    Slick.prototype.initUI = function() { 
        var _ = this; 
        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) { 
            _.$prevArrow.show(); 
            _.$nextArrow.show(); 
        } 
        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) { 
            _.$dots.show(); 
        } 
    } 
    ; 
    Slick.prototype.keyHandler = function(event) { 
        var _ = this; 
        if (!event.target.tagName.match('TEXTAREA|INPUT|SELECT')) { 
            if (event.keyCode === 37 && _.options.accessibility === true) { 
                _.changeSlide({ 
                    data: { 
                        message: _.options.rtl === true ? 'next' : 'previous' 
                    } 
                }); 
            } else if (event.keyCode === 39 && _.options.accessibility === true) { 
                _.changeSlide({ 
                    data: { 
                        message: _.options.rtl === true ? 'previous' : 'next' 
                    } 
                }); 
            } 
        } 
    } 
    ; 
    Slick.prototype.lazyLoad = function() { 
        var _ = this, loadRange, cloneRange, rangeStart, rangeEnd; 
        function loadImages(imagesScope) { 
            $('img[data-lazy]', imagesScope).each(function() { 
                var image = $(this) 
                  , imageSource = $(this).attr('data-lazy') 
                  , imageSrcSet = $(this).attr('data-srcset') 
                  , imageSizes = $(this).attr('data-sizes') || _.$slider.attr('data-sizes') 
                  , imageToLoad = document.createElement('img'); 
                imageToLoad.onload = function() { 
                    image.animate({ 
                        opacity: 0 
                    }, 100, function() { 
                        if (imageSrcSet) { 
                            image.attr('srcset', imageSrcSet); 
                            if (imageSizes) { 
                                image.attr('sizes', imageSizes); 
                            } 
                        } 
                        image.attr('src', imageSource).animate({ 
                            opacity: 1 
                        }, 200, function() { 
                            image.removeAttr('data-lazy data-srcset data-sizes').removeClass('slick-loading'); 
                        }); 
                        _.$slider.trigger('lazyLoaded', [_, image, imageSource]); 
                    }); 
                } 
                ; 
                imageToLoad.onerror = function() { 
                    image.removeAttr('data-lazy').removeClass('slick-loading').addClass('slick-lazyload-error'); 
                    _.$slider.trigger('lazyLoadError', [_, image, imageSource]); 
                } 
                ; 
                imageToLoad.src = imageSource; 
            }); 
        } 
        if (_.options.centerMode === true) { 
            if (_.options.infinite === true) { 
                rangeStart = _.currentSlide + (_.options.slidesToShow / 2 + 1); 
                rangeEnd = rangeStart + _.options.slidesToShow + 2; 
            } else { 
                rangeStart = Math.max(0, _.currentSlide - (_.options.slidesToShow / 2 + 1)); 
                rangeEnd = 2 + (_.options.slidesToShow / 2 + 1) + _.currentSlide; 
            } 
        } else { 
            rangeStart = _.options.infinite ? _.options.slidesToShow + _.currentSlide : _.currentSlide; 
            rangeEnd = Math.ceil(rangeStart + _.options.slidesToShow); 
            if (_.options.fade === true) { 
                if (rangeStart > 0) 
                    rangeStart--; 
                if (rangeEnd <= _.slideCount) 
                    rangeEnd++; 
            } 
        } 
        loadRange = _.$slider.find('.slick-slide').slice(rangeStart, rangeEnd); 
        if (_.options.lazyLoad === 'anticipated') { 
            var prevSlide = rangeStart - 1 
              , nextSlide = rangeEnd 
              , $slides = _.$slider.find('.slick-slide'); 
            for (var i = 0; i < _.options.slidesToScroll; i++) { 
                if (prevSlide < 0) 
                    prevSlide = _.slideCount - 1; 
                loadRange = loadRange.add($slides.eq(prevSlide)); 
                loadRange = loadRange.add($slides.eq(nextSlide)); 
                prevSlide--; 
                nextSlide++; 
            } 
        } 
        loadImages(loadRange); 
        if (_.slideCount <= _.options.slidesToShow) { 
            cloneRange = _.$slider.find('.slick-slide'); 
            loadImages(cloneRange); 
        } else if (_.currentSlide >= _.slideCount - _.options.slidesToShow) { 
            cloneRange = _.$slider.find('.slick-cloned').slice(0, _.options.slidesToShow); 
            loadImages(cloneRange); 
        } else if (_.currentSlide === 0) { 
            cloneRange = _.$slider.find('.slick-cloned').slice(_.options.slidesToShow * -1); 
            loadImages(cloneRange); 
        } 
    } 
    ; 
    Slick.prototype.loadSlider = function() { 
        var _ = this; 
        _.setPosition(); 
        _.$slideTrack.css({ 
            opacity: 1 
        }); 
        _.$slider.removeClass('slick-loading'); 
        _.initUI(); 
        if (_.options.lazyLoad === 'progressive') { 
            _.progressiveLazyLoad(); 
        } 
    } 
    ; 
    Slick.prototype.next = Slick.prototype.slickNext = function() { 
        var _ = this; 
        _.changeSlide({ 
            data: { 
                message: 'next' 
            } 
        }); 
    } 
    ; 
    Slick.prototype.orientationChange = function() { 
        var _ = this; 
        _.checkResponsive(); 
        _.setPosition(); 
    } 
    ; 
    Slick.prototype.pause = Slick.prototype.slickPause = function() { 
        var _ = this; 
        _.autoPlayClear(); 
        _.paused = true; 
    } 
    ; 
    Slick.prototype.play = Slick.prototype.slickPlay = function() { 
        var _ = this; 
        _.autoPlay(); 
        _.options.autoplay = true; 
        _.paused = false; 
        _.focussed = false; 
        _.interrupted = false; 
    } 
    ; 
    Slick.prototype.postSlide = function(index) { 
        var _ = this; 
        if (!_.unslicked) { 
            _.$slider.trigger('afterChange', [_, index]); 
            _.animating = false; 
            if (_.slideCount > _.options.slidesToShow) { 
                _.setPosition(); 
            } 
            _.swipeLeft = null; 
            if (_.options.autoplay) { 
                _.autoPlay(); 
            } 
            if (_.options.accessibility === true) { 
                _.initADA(); 
                if (_.options.focusOnChange) { 
                    var $currentSlide = $(_.$slides.get(_.currentSlide)); 
                    $currentSlide.attr('tabindex', 0).focus(); 
                } 
            } 
        } 
    } 
    ; 
    Slick.prototype.prev = Slick.prototype.slickPrev = function() { 
        var _ = this; 
        _.changeSlide({ 
            data: { 
                message: 'previous' 
            } 
        }); 
    } 
    ; 
    Slick.prototype.preventDefault = function(event) { 
        event.preventDefault(); 
    } 
    ; 
    Slick.prototype.progressiveLazyLoad = function(tryCount) { 
        tryCount = tryCount || 1; 
        var _ = this, $imgsToLoad = $('img[data-lazy]', _.$slider), image, imageSource, imageSrcSet, imageSizes, imageToLoad; 
        if ($imgsToLoad.length) { 
            image = $imgsToLoad.first(); 
            imageSource = image.attr('data-lazy'); 
            imageSrcSet = image.attr('data-srcset'); 
            imageSizes = image.attr('data-sizes') || _.$slider.attr('data-sizes'); 
            imageToLoad = document.createElement('img'); 
            imageToLoad.onload = function() { 
                if (imageSrcSet) { 
                    image.attr('srcset', imageSrcSet); 
                    if (imageSizes) { 
                        image.attr('sizes', imageSizes); 
                    } 
                } 
                image.attr('src', imageSource).removeAttr('data-lazy data-srcset data-sizes').removeClass('slick-loading'); 
                if (_.options.adaptiveHeight === true) { 
                    _.setPosition(); 
                } 
                _.$slider.trigger('lazyLoaded', [_, image, imageSource]); 
                _.progressiveLazyLoad(); 
            } 
            ; 
            imageToLoad.onerror = function() { 
                if (tryCount < 3) { 
                    setTimeout(function() { 
                        _.progressiveLazyLoad(tryCount + 1); 
                    }, 500); 
                } else { 
                    image.removeAttr('data-lazy').removeClass('slick-loading').addClass('slick-lazyload-error'); 
                    _.$slider.trigger('lazyLoadError', [_, image, imageSource]); 
                    _.progressiveLazyLoad(); 
                } 
            } 
            ; 
            imageToLoad.src = imageSource; 
        } else { 
            _.$slider.trigger('allImagesLoaded', [_]); 
        } 
    } 
    ; 
    Slick.prototype.refresh = function(initializing) { 
        var _ = this, currentSlide, lastVisibleIndex; 
        lastVisibleIndex = _.slideCount - _.options.slidesToShow; 
        if (!_.options.infinite && (_.currentSlide > lastVisibleIndex)) { 
            _.currentSlide = lastVisibleIndex; 
        } 
        if (_.slideCount <= _.options.slidesToShow) { 
            _.currentSlide = 0; 
        } 
        currentSlide = _.currentSlide; 
        _.destroy(true); 
        $.extend(_, _.initials, { 
            currentSlide: currentSlide 
        }); 
        _.init(); 
        if (!initializing) { 
            _.changeSlide({ 
                data: { 
                    message: 'index', 
                    index: currentSlide 
                } 
            }, false); 
        } 
    } 
    ; 
    Slick.prototype.registerBreakpoints = function() { 
        var _ = this, breakpoint, currentBreakpoint, l, responsiveSettings = _.options.responsive || null; 
        if ($.type(responsiveSettings) === 'array' && responsiveSettings.length) { 
            _.respondTo = _.options.respondTo || 'window'; 
            for (breakpoint in responsiveSettings) { 
                l = _.breakpoints.length - 1; 
                if (responsiveSettings.hasOwnProperty(breakpoint)) { 
                    currentBreakpoint = responsiveSettings[breakpoint].breakpoint; 
                    while (l >= 0) { 
                        if (_.breakpoints[l] && _.breakpoints[l] === currentBreakpoint) { 
                            _.breakpoints.splice(l, 1); 
                        } 
                        l--; 
                    } 
                    _.breakpoints.push(currentBreakpoint); 
                    _.breakpointSettings[currentBreakpoint] = responsiveSettings[breakpoint].settings; 
                } 
            } 
            _.breakpoints.sort(function(a, b) { 
                return (_.options.mobileFirst) ? a - b : b - a; 
            }); 
        } 
    } 
    ; 
    Slick.prototype.reinit = function() { 
        var _ = this; 
        _.$slides = _.$slideTrack.children(_.options.slide).addClass('slick-slide'); 
        _.slideCount = _.$slides.length; 
        if (_.currentSlide >= _.slideCount && _.currentSlide !== 0) { 
            _.currentSlide = _.currentSlide - _.options.slidesToScroll; 
        } 
        if (_.slideCount <= _.options.slidesToShow) { 
            _.currentSlide = 0; 
        } 
        _.registerBreakpoints(); 
        _.setProps(); 
        _.setupInfinite(); 
        _.buildArrows(); 
        _.updateArrows(); 
        _.initArrowEvents(); 
        _.buildDots(); 
        _.updateDots(); 
        _.initDotEvents(); 
        _.cleanUpSlideEvents(); 
        _.initSlideEvents(); 
        _.checkResponsive(false, true); 
        if (_.options.focusOnSelect === true) { 
            $(_.$slideTrack).children().on('click.slick', _.selectHandler); 
        } 
        _.setSlideClasses(typeof _.currentSlide === 'number' ? _.currentSlide : 0); 
        _.setPosition(); 
        _.focusHandler(); 
        _.paused = !_.options.autoplay; 
        _.autoPlay(); 
        _.$slider.trigger('reInit', [_]); 
    } 
    ; 
    Slick.prototype.resize = function() { 
        var _ = this; 
        if ($(window).width() !== _.windowWidth) { 
            clearTimeout(_.windowDelay); 
            _.windowDelay = window.setTimeout(function() { 
                _.windowWidth = $(window).width(); 
                _.checkResponsive(); 
                if (!_.unslicked) { 
                    _.setPosition(); 
                } 
            }, 50); 
        } 
    } 
    ; 
    Slick.prototype.removeSlide = Slick.prototype.slickRemove = function(index, removeBefore, removeAll) { 
        var _ = this; 
        if (typeof (index) === 'boolean') { 
            removeBefore = index; 
            index = removeBefore === true ? 0 : _.slideCount - 1; 
        } else { 
            index = removeBefore === true ? --index : index; 
        } 
        if (_.slideCount < 1 || index < 0 || index > _.slideCount - 1) { 
            return false; 
        } 
        _.unload(); 
        if (removeAll === true) { 
            _.$slideTrack.children().remove(); 
        } else { 
            _.$slideTrack.children(this.options.slide).eq(index).remove(); 
        } 
        _.$slides = _.$slideTrack.children(this.options.slide); 
        _.$slideTrack.children(this.options.slide).detach(); 
        _.$slideTrack.append(_.$slides); 
        _.$slidesCache = _.$slides; 
        _.reinit(); 
    } 
    ; 
    Slick.prototype.setCSS = function(position) { 
        var _ = this, positionProps = {}, x, y; 
        if (_.options.rtl === true) { 
            position = -position; 
        } 
        x = _.positionProp == 'left' ? Math.ceil(position) + 'px' : '0px'; 
        y = _.positionProp == 'top' ? Math.ceil(position) + 'px' : '0px'; 
        positionProps[_.positionProp] = position; 
        if (_.transformsEnabled === false) { 
            _.$slideTrack.css(positionProps); 
        } else { 
            positionProps = {}; 
            if (_.cssTransitions === false) { 
                positionProps[_.animType] = 'translate(' + x + ', ' + y + ')'; 
                _.$slideTrack.css(positionProps); 
            } else { 
                positionProps[_.animType] = 'translate3d(' + x + ', ' + y + ', 0px)'; 
                _.$slideTrack.css(positionProps); 
            } 
        } 
    } 
    ; 
    Slick.prototype.setDimensions = function() { 
        var _ = this; 
        if (_.options.vertical === false) { 
            if (_.options.centerMode === true) { 
                _.$list.css({ 
                    padding: ('0px ' + _.options.centerPadding) 
                }); 
            } 
        } else { 
            _.$list.height(_.$slides.first().outerHeight(true) * _.options.slidesToShow); 
            if (_.options.centerMode === true) { 
                _.$list.css({ 
                    padding: (_.options.centerPadding + ' 0px') 
                }); 
            } 
        } 
        _.listWidth = _.$list.width(); 
        _.listHeight = _.$list.height(); 
        if (_.options.vertical === false && _.options.variableWidth === false) { 
            _.slideWidth = Math.ceil(_.listWidth / _.options.slidesToShow); 
            _.$slideTrack.width(Math.ceil((_.slideWidth * _.$slideTrack.children('.slick-slide').length))); 
        } else if (_.options.variableWidth === true) { 
            _.$slideTrack.width(5000 * _.slideCount); 
        } else { 
            _.slideWidth = Math.ceil(_.listWidth); 
            _.$slideTrack.height(Math.ceil((_.$slides.first().outerHeight(true) * _.$slideTrack.children('.slick-slide').length))); 
        } 
        var offset = _.$slides.first().outerWidth(true) - _.$slides.first().width(); 
        if (_.options.variableWidth === false) 
            _.$slideTrack.children('.slick-slide').width(_.slideWidth - offset); 
    } 
    ; 
    Slick.prototype.setFade = function() { 
        var _ = this, targetLeft; 
        _.$slides.each(function(index, element) { 
            targetLeft = (_.slideWidth * index) * -1; 
            if (_.options.rtl === true) { 
                $(element).css({ 
                    position: 'relative', 
                    right: targetLeft, 
                    top: 0, 
                    zIndex: _.options.zIndex - 2, 
                    opacity: 0 
                }); 
            } else { 
                $(element).css({ 
                    position: 'relative', 
                    left: targetLeft, 
                    top: 0, 
                    zIndex: _.options.zIndex - 2, 
                    opacity: 0 
                }); 
            } 
        }); 
        _.$slides.eq(_.currentSlide).css({ 
            zIndex: _.options.zIndex - 1, 
            opacity: 1 
        }); 
    } 
    ; 
    Slick.prototype.setHeight = function() { 
        var _ = this; 
        if (_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) { 
            var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true); 
            _.$list.css('height', targetHeight); 
        } 
    } 
    ; 
    Slick.prototype.setOption = Slick.prototype.slickSetOption = function() { 
        var _ = this, l, item, option, value, refresh = false, type; 
        if ($.type(arguments[0]) === 'object') { 
            option = arguments[0]; 
            refresh = arguments[1]; 
            type = 'multiple'; 
        } else if ($.type(arguments[0]) === 'string') { 
            option = arguments[0]; 
            value = arguments[1]; 
            refresh = arguments[2]; 
            if (arguments[0] === 'responsive' && $.type(arguments[1]) === 'array') { 
                type = 'responsive'; 
            } else if (typeof arguments[1] !== 'undefined') { 
                type = 'single'; 
            } 
        } 
        if (type === 'single') { 
            _.options[option] = value; 
        } else if (type === 'multiple') { 
            $.each(option, function(opt, val) { 
                _.options[opt] = val; 
            }); 
        } else if (type === 'responsive') { 
            for (item in value) { 
                if ($.type(_.options.responsive) !== 'array') { 
                    _.options.responsive = [value[item]]; 
                } else { 
                    l = _.options.responsive.length - 1; 
                    while (l >= 0) { 
                        if (_.options.responsive[l].breakpoint === value[item].breakpoint) { 
                            _.options.responsive.splice(l, 1); 
                        } 
                        l--; 
                    } 
                    _.options.responsive.push(value[item]); 
                } 
            } 
        } 
        if (refresh) { 
            _.unload(); 
            _.reinit(); 
        } 
    } 
    ; 
    Slick.prototype.setPosition = function() { 
        var _ = this; 
        _.setDimensions(); 
        _.setHeight(); 
        if (_.options.fade === false) { 
            _.setCSS(_.getLeft(_.currentSlide)); 
        } else { 
            _.setFade(); 
        } 
        _.$slider.trigger('setPosition', [_]); 
    } 
    ; 
    Slick.prototype.setProps = function() { 
        var _ = this 
          , bodyStyle = document.body.style; 
        _.positionProp = _.options.vertical === true ? 'top' : 'left'; 
        if (_.positionProp === 'top') { 
            _.$slider.addClass('slick-vertical'); 
        } else { 
            _.$slider.removeClass('slick-vertical'); 
        } 
        if (bodyStyle.WebkitTransition !== undefined || bodyStyle.MozTransition !== undefined || bodyStyle.msTransition !== undefined) { 
            if (_.options.useCSS === true) { 
                _.cssTransitions = true; 
            } 
        } 
        if (_.options.fade) { 
            if (typeof _.options.zIndex === 'number') { 
                if (_.options.zIndex < 3) { 
                    _.options.zIndex = 3; 
                } 
            } else { 
                _.options.zIndex = _.defaults.zIndex; 
            } 
        } 
        if (bodyStyle.OTransform !== undefined) { 
            _.animType = 'OTransform'; 
            _.transformType = '-o-transform'; 
            _.transitionType = 'OTransition'; 
            if (bodyStyle.perspectiveProperty === undefined && bodyStyle.webkitPerspective === undefined) 
                _.animType = false; 
        } 
        if (bodyStyle.MozTransform !== undefined) { 
            _.animType = 'MozTransform'; 
            _.transformType = '-moz-transform'; 
            _.transitionType = 'MozTransition'; 
            if (bodyStyle.perspectiveProperty === undefined && bodyStyle.MozPerspective === undefined) 
                _.animType = false; 
        } 
        if (bodyStyle.webkitTransform !== undefined) { 
            _.animType = 'webkitTransform'; 
            _.transformType = '-webkit-transform'; 
            _.transitionType = 'webkitTransition'; 
            if (bodyStyle.perspectiveProperty === undefined && bodyStyle.webkitPerspective === undefined) 
                _.animType = false; 
        } 
        if (bodyStyle.msTransform !== undefined) { 
            _.animType = 'msTransform'; 
            _.transformType = '-ms-transform'; 
            _.transitionType = 'msTransition'; 
            if (bodyStyle.msTransform === undefined) 
                _.animType = false; 
        } 
        if (bodyStyle.transform !== undefined && _.animType !== false) { 
            _.animType = 'transform'; 
            _.transformType = 'transform'; 
            _.transitionType = 'transition'; 
        } 
        _.transformsEnabled = _.options.useTransform && (_.animType !== null && _.animType !== false); 
    } 
    ; 
    Slick.prototype.setSlideClasses = function(index) { 
        var _ = this, centerOffset, allSlides, indexOffset, remainder; 
        allSlides = _.$slider.find('.slick-slide').removeClass('slick-active slick-center slick-current').attr('aria-hidden', 'true'); 
        _.$slides.eq(index).addClass('slick-current'); 
        if (_.options.centerMode === true) { 
            var evenCoef = _.options.slidesToShow % 2 === 0 ? 1 : 0; 
            centerOffset = Math.floor(_.options.slidesToShow / 2); 
            if (_.options.verskisIgnoreCenterOffset) { 
                centerOffset = 0; 
            } 
            if (_.options.infinite === true) { 
                if (index >= centerOffset && index <= (_.slideCount - 1) - centerOffset) { 
                    _.$slides.slice(index - centerOffset + evenCoef, index + centerOffset + 1).addClass('slick-active').attr('aria-hidden', 'false'); 
                } else { 
                    indexOffset = _.options.slidesToShow + index; 
                    allSlides.slice(indexOffset - centerOffset + 1 + evenCoef, indexOffset + centerOffset + 2).addClass('slick-active').attr('aria-hidden', 'false'); 
                } 
                if (index === 0) { 
                    allSlides.eq(allSlides.length - 1 - _.options.slidesToShow).addClass('slick-center'); 
                } else if (index === _.slideCount - 1) { 
                    allSlides.eq(_.options.slidesToShow).addClass('slick-center'); 
                } 
            } 
            _.$slides.eq(index).addClass('slick-center'); 
        } else { 
            if (index >= 0 && index <= (_.slideCount - _.options.slidesToShow)) { 
                _.$slides.slice(index, index + _.options.slidesToShow).addClass('slick-active').attr('aria-hidden', 'false'); 
            } else if (allSlides.length <= _.options.slidesToShow) { 
                allSlides.addClass('slick-active').attr('aria-hidden', 'false'); 
            } else { 
                remainder = _.slideCount % _.options.slidesToShow; 
                indexOffset = _.options.infinite === true ? _.options.slidesToShow + index : index; 
                if (_.options.slidesToShow == _.options.slidesToScroll && (_.slideCount - index) < _.options.slidesToShow) { 
                    allSlides.slice(indexOffset - (_.options.slidesToShow - remainder), indexOffset + remainder).addClass('slick-active').attr('aria-hidden', 'false'); 
                } else { 
                    allSlides.slice(indexOffset, indexOffset + _.options.slidesToShow).addClass('slick-active').attr('aria-hidden', 'false'); 
                } 
            } 
        } 
        if (_.options.lazyLoad === 'ondemand' || _.options.lazyLoad === 'anticipated') { 
            _.lazyLoad(); 
        } 
    } 
    ; 
    Slick.prototype.setupInfinite = function() { 
        var _ = this, i, slideIndex, infiniteCount; 
        if (_.options.fade === true) { 
            _.options.centerMode = false; 
        } 
        if (_.options.infinite === true && _.options.fade === false) { 
            slideIndex = null; 
            if (_.slideCount > _.options.slidesToShow) { 
                if (_.options.centerMode === true) { 
                    infiniteCount = _.options.slidesToShow + 1; 
                } else { 
                    infiniteCount = _.options.slidesToShow; 
                } 
                for (i = _.slideCount; i > (_.slideCount - infiniteCount); i -= 1) { 
                    slideIndex = i - 1; 
                    $(_.$slides[slideIndex]).clone(true).attr('id', '').attr('data-slick-index', slideIndex - _.slideCount).prependTo(_.$slideTrack).addClass('slick-cloned'); 
                } 
                for (i = 0; i < infiniteCount + _.slideCount; i += 1) { 
                    slideIndex = i; 
                    $(_.$slides[slideIndex]).clone(true).attr('id', '').attr('data-slick-index', slideIndex + _.slideCount).appendTo(_.$slideTrack).addClass('slick-cloned'); 
                } 
                _.$slideTrack.find('.slick-cloned').find('[id]').each(function() { 
                    $(this).attr('id', ''); 
                }); 
            } 
        } 
    } 
    ; 
    Slick.prototype.interrupt = function(toggle) { 
        var _ = this; 
        if (!toggle) { 
            _.autoPlay(); 
        } 
        _.interrupted = toggle; 
    } 
    ; 
    Slick.prototype.selectHandler = function(event) { 
        var _ = this; 
        var targetElement = $(event.target).is('.slick-slide') ? $(event.target) : $(event.target).parents('.slick-slide'); 
        var index = parseInt(targetElement.attr('data-slick-index')); 
        if (!index) 
            index = 0; 
        if (_.slideCount <= _.options.slidesToShow) { 
            _.slideHandler(index, false, true); 
            return; 
        } 
        _.slideHandler(index); 
    } 
    ; 
    Slick.prototype.slideHandler = function(index, sync, dontAnimate) { 
        var targetSlide, animSlide, oldSlide, slideLeft, targetLeft = null, _ = this, navTarget; 
        sync = sync || false; 
        if (_.animating === true && _.options.waitForAnimate === true) { 
            return; 
        } 
        if (_.options.fade === true && _.currentSlide === index) { 
            return; 
        } 
        if (sync === false) { 
            _.asNavFor(index); 
        } 
        targetSlide = index; 
        targetLeft = _.getLeft(targetSlide); 
        slideLeft = _.getLeft(_.currentSlide); 
        _.currentLeft = _.swipeLeft === null ? slideLeft : _.swipeLeft; 
        if (_.options.infinite === false && _.options.centerMode === false && (index < 0 || index > _.getDotCount() * _.options.slidesToScroll)) { 
            if (_.options.fade === false) { 
                targetSlide = _.currentSlide; 
                if (dontAnimate !== true && _.slideCount > _.options.slidesToShow) { 
                    _.animateSlide(slideLeft, function() { 
                        _.postSlide(targetSlide); 
                    }); 
                } else { 
                    _.postSlide(targetSlide); 
                } 
            } 
            return; 
        } else if (_.options.infinite === false && _.options.centerMode === true && (index < 0 || index > (_.slideCount - _.options.slidesToScroll))) { 
            if (_.options.fade === false) { 
                targetSlide = _.currentSlide; 
                if (dontAnimate !== true && _.slideCount > _.options.slidesToShow) { 
                    _.animateSlide(slideLeft, function() { 
                        _.postSlide(targetSlide); 
                    }); 
                } else { 
                    _.postSlide(targetSlide); 
                } 
            } 
            return; 
        } 
        if (_.options.autoplay) { 
            clearInterval(_.autoPlayTimer); 
        } 
        if (targetSlide < 0) { 
            if (_.slideCount % _.options.slidesToScroll !== 0) { 
                animSlide = _.slideCount - (_.slideCount % _.options.slidesToScroll); 
            } else { 
                animSlide = _.slideCount + targetSlide; 
            } 
        } else if (targetSlide >= _.slideCount) { 
            if (_.slideCount % _.options.slidesToScroll !== 0) { 
                animSlide = 0; 
            } else { 
                animSlide = targetSlide - _.slideCount; 
            } 
        } else { 
            animSlide = targetSlide; 
        } 
        _.animating = true; 
        _.$slider.trigger('beforeChange', [_, _.currentSlide, animSlide]); 
        oldSlide = _.currentSlide; 
        _.currentSlide = animSlide; 
        _.setSlideClasses(_.currentSlide); 
        if (_.options.asNavFor) { 
            navTarget = _.getNavTarget(); 
            navTarget = navTarget.slick('getSlick'); 
            if (navTarget.slideCount <= navTarget.options.slidesToShow) { 
                navTarget.setSlideClasses(_.currentSlide); 
            } 
        } 
        _.updateDots(); 
        _.updateArrows(); 
        if (_.options.fade === true) { 
            if (dontAnimate !== true) { 
                _.fadeSlideOut(oldSlide); 
                _.fadeSlide(animSlide, function() { 
                    _.postSlide(animSlide); 
                }); 
            } else { 
                _.postSlide(animSlide); 
            } 
            _.animateHeight(); 
            return; 
        } 
        if (dontAnimate !== true && _.slideCount > _.options.slidesToShow) { 
            _.animateSlide(targetLeft, function() { 
                _.postSlide(animSlide); 
            }); 
        } else { 
            _.postSlide(animSlide); 
        } 
    } 
    ; 
    Slick.prototype.startLoad = function() { 
        var _ = this; 
        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) { 
            _.$prevArrow.hide(); 
            _.$nextArrow.hide(); 
        } 
        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) { 
            _.$dots.hide(); 
        } 
        _.$slider.addClass('slick-loading'); 
    } 
    ; 
    Slick.prototype.swipeDirection = function() { 
        var xDist, yDist, r, swipeAngle, _ = this; 
        xDist = _.touchObject.startX - _.touchObject.curX; 
        yDist = _.touchObject.startY - _.touchObject.curY; 
        r = Math.atan2(yDist, xDist); 
        swipeAngle = Math.round(r * 180 / Math.PI); 
        if (swipeAngle < 0) { 
            swipeAngle = 360 - Math.abs(swipeAngle); 
        } 
        if ((swipeAngle <= 45) && (swipeAngle >= 0)) { 
            return (_.options.rtl === false ? 'left' : 'right'); 
        } 
        if ((swipeAngle <= 360) && (swipeAngle >= 315)) { 
            return (_.options.rtl === false ? 'left' : 'right'); 
        } 
        if ((swipeAngle >= 135) && (swipeAngle <= 225)) { 
            return (_.options.rtl === false ? 'right' : 'left'); 
        } 
        if (_.options.verticalSwiping === true) { 
            if ((swipeAngle >= 35) && (swipeAngle <= 135)) { 
                return 'down'; 
            } else { 
                return 'up'; 
            } 
        } 
        return 'vertical'; 
    } 
    ; 
    Slick.prototype.swipeEnd = function(event) { 
        var _ = this, slideCount, direction; 
        _.dragging = false; 
        _.swiping = false; 
        if (_.scrolling) { 
            _.scrolling = false; 
            return false; 
        } 
        _.interrupted = false; 
        _.shouldClick = (_.touchObject.swipeLength > 10) ? false : true; 
        if (_.touchObject.curX === undefined) { 
            return false; 
        } 
        if (_.touchObject.edgeHit === true) { 
            _.$slider.trigger('edge', [_, _.swipeDirection()]); 
        } 
        if (_.touchObject.swipeLength >= _.touchObject.minSwipe) { 
            direction = _.swipeDirection(); 
            switch (direction) { 
            case 'left': 
            case 'down': 
                slideCount = _.options.swipeToSlide ? _.checkNavigable(_.currentSlide + _.getSlideCount()) : _.currentSlide + _.getSlideCount(); 
                _.currentDirection = 0; 
                break; 
            case 'right': 
            case 'up': 
                slideCount = _.options.swipeToSlide ? _.checkNavigable(_.currentSlide - _.getSlideCount()) : _.currentSlide - _.getSlideCount(); 
                _.currentDirection = 1; 
                break; 
            default: 
            } 
            if (direction != 'vertical') { 
                _.slideHandler(slideCount); 
                _.touchObject = {}; 
                _.$slider.trigger('swipe', [_, direction]); 
            } 
        } else { 
            if (_.touchObject.startX !== _.touchObject.curX) { 
                _.slideHandler(_.currentSlide); 
                _.touchObject = {}; 
            } 
        } 
    } 
    ; 
    Slick.prototype.swipeHandler = function(event) { 
        var _ = this; 
        if ((_.options.swipe === false) || ('ontouchend'in document && _.options.swipe === false)) { 
            return; 
        } else if (_.options.draggable === false && event.type.indexOf('mouse') !== -1) { 
            return; 
        } 
        _.touchObject.fingerCount = event.originalEvent && event.originalEvent.touches !== undefined ? event.originalEvent.touches.length : 1; 
        _.touchObject.minSwipe = _.listWidth / _.options.touchThreshold; 
        if (_.options.verticalSwiping === true) { 
            _.touchObject.minSwipe = _.listHeight / _.options.touchThreshold; 
        } 
        switch (event.data.action) { 
        case 'start': 
            _.swipeStart(event); 
            break; 
        case 'move': 
            _.swipeMove(event); 
            break; 
        case 'end': 
            _.swipeEnd(event); 
            break; 
        } 
    } 
    ; 
    Slick.prototype.swipeMove = function(event) { 
        var _ = this, edgeWasHit = false, curLeft, swipeDirection, swipeLength, positionOffset, touches, verticalSwipeLength; 
        touches = event.originalEvent !== undefined ? event.originalEvent.touches : null; 
        if (!_.dragging || _.scrolling || touches && touches.length !== 1) { 
            return false; 
        } 
        curLeft = _.getLeft(_.currentSlide); 
        _.touchObject.curX = touches !== undefined ? touches[0].pageX : event.clientX; 
        _.touchObject.curY = touches !== undefined ? touches[0].pageY : event.clientY; 
        _.touchObject.swipeLength = Math.round(Math.sqrt(Math.pow(_.touchObject.curX - _.touchObject.startX, 2))); 
        verticalSwipeLength = Math.round(Math.sqrt(Math.pow(_.touchObject.curY - _.touchObject.startY, 2))); 
        if (!_.options.verticalSwiping && !_.swiping && verticalSwipeLength > 4) { 
            _.scrolling = true; 
            return false; 
        } 
        if (_.options.verticalSwiping === true) { 
            _.touchObject.swipeLength = verticalSwipeLength; 
        } 
        swipeDirection = _.swipeDirection(); 
        if (event.originalEvent !== undefined && _.touchObject.swipeLength > 4) { 
            _.swiping = true; 
            event.preventDefault(); 
        } 
        positionOffset = (_.options.rtl === false ? 1 : -1) * (_.touchObject.curX > _.touchObject.startX ? 1 : -1); 
        if (_.options.verticalSwiping === true) { 
            positionOffset = _.touchObject.curY > _.touchObject.startY ? 1 : -1; 
        } 
        swipeLength = _.touchObject.swipeLength; 
        _.touchObject.edgeHit = false; 
        if (_.options.infinite === false) { 
            if ((_.currentSlide === 0 && swipeDirection === 'right') || (_.currentSlide >= _.getDotCount() && swipeDirection === 'left')) { 
                swipeLength = _.touchObject.swipeLength * _.options.edgeFriction; 
                _.touchObject.edgeHit = true; 
            } 
        } 
        if (_.options.vertical === false) { 
            _.swipeLeft = curLeft + swipeLength * positionOffset; 
        } else { 
            _.swipeLeft = curLeft + (swipeLength * (_.$list.height() / _.listWidth)) * positionOffset; 
        } 
        if (_.options.verticalSwiping === true) { 
            _.swipeLeft = curLeft + swipeLength * positionOffset; 
        } 
        if (_.options.fade === true || _.options.touchMove === false) { 
            return false; 
        } 
        if (_.animating === true) { 
            _.swipeLeft = null; 
            return false; 
        } 
        _.setCSS(_.swipeLeft); 
    } 
    ; 
    Slick.prototype.swipeStart = function(event) { 
        var _ = this, touches; 
        _.interrupted = true; 
        if (_.touchObject.fingerCount !== 1 || _.slideCount <= _.options.slidesToShow) { 
            _.touchObject = {}; 
            return false; 
        } 
        if (event.originalEvent !== undefined && event.originalEvent.touches !== undefined) { 
            touches = event.originalEvent.touches[0]; 
        } 
        _.touchObject.startX = _.touchObject.curX = touches !== undefined ? touches.pageX : event.clientX; 
        _.touchObject.startY = _.touchObject.curY = touches !== undefined ? touches.pageY : event.clientY; 
        _.dragging = true; 
    } 
    ; 
    Slick.prototype.unfilterSlides = Slick.prototype.slickUnfilter = function() { 
        var _ = this; 
        if (_.$slidesCache !== null) { 
            _.unload(); 
            _.$slideTrack.children(this.options.slide).detach(); 
            _.$slidesCache.appendTo(_.$slideTrack); 
            _.reinit(); 
        } 
    } 
    ; 
    Slick.prototype.unload = function() { 
        var _ = this; 
        $('.slick-cloned', _.$slider).remove(); 
        if (_.$dots) { 
            _.$dots.remove(); 
        } 
        if (_.$prevArrow && _.htmlExpr.test(_.options.prevArrow)) { 
            _.$prevArrow.remove(); 
        } 
        if (_.$nextArrow && _.htmlExpr.test(_.options.nextArrow)) { 
            _.$nextArrow.remove(); 
        } 
        _.$slides.removeClass('slick-slide slick-active slick-visible slick-current').attr('aria-hidden', 'true').css('width', ''); 
    } 
    ; 
    Slick.prototype.unslick = function(fromBreakpoint) { 
        var _ = this; 
        _.$slider.trigger('unslick', [_, fromBreakpoint]); 
        _.destroy(); 
    } 
    ; 
    Slick.prototype.updateArrows = function() { 
        var _ = this, centerOffset; 
        centerOffset = Math.floor(_.options.slidesToShow / 2); 
        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow && !_.options.infinite) { 
            _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false'); 
            _.$nextArrow.removeClass('slick-disabled').attr('aria-disabled', 'false'); 
            if (_.currentSlide === 0) { 
                _.$prevArrow.addClass('slick-disabled').attr('aria-disabled', 'true'); 
                _.$nextArrow.removeClass('slick-disabled').attr('aria-disabled', 'false'); 
            } else if (_.currentSlide >= _.slideCount - _.options.slidesToShow && _.options.centerMode === false) { 
                _.$nextArrow.addClass('slick-disabled').attr('aria-disabled', 'true'); 
                _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false'); 
            } else if (_.currentSlide >= _.slideCount - 1 && _.options.centerMode === true) { 
                _.$nextArrow.addClass('slick-disabled').attr('aria-disabled', 'true'); 
                _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false'); 
            } 
        } 
    } 
    ; 
    Slick.prototype.updateDots = function() { 
        var _ = this; 
        if (_.$dots !== null) { 
            _.$dots.find('li').removeClass('slick-active').end(); 
            _.$dots.find('li').eq(Math.floor(_.currentSlide / _.options.slidesToScroll)).addClass('slick-active'); 
        } 
    } 
    ; 
    Slick.prototype.visibility = function() { 
        var _ = this; 
        if (_.options.autoplay) { 
            if (document[_.hidden]) { 
                _.interrupted = true; 
            } else { 
                _.interrupted = false; 
            } 
        } 
    } 
    ; 
    $.fn.slick = function() { 
        var _ = this, opt = arguments[0], args = Array.prototype.slice.call(arguments, 1), l = _.length, i, ret; 
        for (i = 0; i < l; i++) { 
            if (typeof opt == 'object' || typeof opt == 'undefined') 
                _[i].slick = new Slick(_[i],opt); 
            else 
                ret = _[i].slick[opt].apply(_[i].slick, args); 
            if (typeof ret != 'undefined') 
                return ret; 
        } 
        return _; 
    } 
    ; 
})); 
var Mailcheck = { 
    domainThreshold: 2, 
    secondLevelThreshold: 2, 
    topLevelThreshold: 2, 
    defaultDomains: ['msn.com', 'bellsouth.net', 'telus.net', 'comcast.net', 'optusnet.com.au', 'earthlink.net', 'qq.com', 'sky.com', 'icloud.com', 'mac.com', 'sympatico.ca', 'googlemail.com', 'att.net', 'xtra.co.nz', 'web.de', 'cox.net', 'gmail.com', 'ymail.com', 'aim.com', 'rogers.com', 'verizon.net', 'rocketmail.com', 'google.com', 'optonline.net', 'sbcglobal.net', 'aol.com', 'me.com', 'btinternet.com', 'charter.net', 'shaw.ca'], 
    defaultSecondLevelDomains: ["yahoo", "hotmail", "mail", "live", "outlook", "gmx"], 
    defaultTopLevelDomains: ["com", "com.au", "com.tw", "ca", "co.nz", "co.uk", "de", "fr", "it", "ru", "net", "org", "edu", "gov", "jp", "lt", "lv", "nl", "kr", "se", "eu", "ie", "co.il", "us", "at", "be", "dk", "hk", "es", "gr", "ch", "no", "cz", "in", "net", "net.au", "info", "biz", "mil", "co.jp", "sg", "hu", "uk"], 
    run: function(opts) { 
        opts.domains = opts.domains || Mailcheck.defaultDomains; 
        opts.secondLevelDomains = opts.secondLevelDomains || Mailcheck.defaultSecondLevelDomains; 
        opts.topLevelDomains = opts.topLevelDomains || Mailcheck.defaultTopLevelDomains; 
        opts.distanceFunction = opts.distanceFunction || Mailcheck.sift4Distance; 
        var defaultCallback = function(result) { 
            return result; 
        }; 
        var suggestedCallback = opts.suggested || defaultCallback; 
        var emptyCallback = opts.empty || defaultCallback; 
        var result = Mailcheck.suggest(Mailcheck.encodeEmail(opts.email), opts.domains, opts.secondLevelDomains, opts.topLevelDomains, opts.distanceFunction); 
        return result ? suggestedCallback(result) : emptyCallback(); 
    }, 
    suggest: function(email, domains, secondLevelDomains, topLevelDomains, distanceFunction) { 
        email = email.toLowerCase(); 
        var emailParts = this.splitEmail(email); 
        if (secondLevelDomains && topLevelDomains) { 
            if (secondLevelDomains.indexOf(emailParts.secondLevelDomain) !== -1 && topLevelDomains.indexOf(emailParts.topLevelDomain) !== -1) { 
                return false; 
            } 
        } 
        var closestDomain = this.findClosestDomain(emailParts.domain, domains, distanceFunction, this.domainThreshold); 
        if (closestDomain) { 
            if (closestDomain == emailParts.domain) { 
                return false; 
            } else { 
                return { 
                    address: emailParts.address, 
                    domain: closestDomain, 
                    full: emailParts.address + "@" + closestDomain 
                }; 
            } 
        } 
        var closestSecondLevelDomain = this.findClosestDomain(emailParts.secondLevelDomain, secondLevelDomains, distanceFunction, this.secondLevelThreshold); 
        var closestTopLevelDomain = this.findClosestDomain(emailParts.topLevelDomain, topLevelDomains, distanceFunction, this.topLevelThreshold); 
        if (emailParts.domain) { 
            closestDomain = emailParts.domain; 
            var rtrn = false; 
            if (closestSecondLevelDomain && closestSecondLevelDomain != emailParts.secondLevelDomain) { 
                closestDomain = closestDomain.replace(emailParts.secondLevelDomain, closestSecondLevelDomain); 
                rtrn = true; 
            } 
            if (closestTopLevelDomain && closestTopLevelDomain != emailParts.topLevelDomain && emailParts.secondLevelDomain !== '') { 
                closestDomain = closestDomain.replace(new RegExp(emailParts.topLevelDomain + "$"), closestTopLevelDomain); 
                rtrn = true; 
            } 
            if (rtrn) { 
                return { 
                    address: emailParts.address, 
                    domain: closestDomain, 
                    full: emailParts.address + "@" + closestDomain 
                }; 
            } 
        } 
        return false; 
    }, 
    findClosestDomain: function(domain, domains, distanceFunction, threshold) { 
        threshold = threshold || this.topLevelThreshold; 
        var dist; 
        var minDist = Infinity; 
        var closestDomain = null; 
        if (!domain || !domains) { 
            return false; 
        } 
        if (!distanceFunction) { 
            distanceFunction = this.sift4Distance; 
        } 
        for (var i = 0; i < domains.length; i++) { 
            if (domain === domains[i]) { 
                return domain; 
            } 
            dist = distanceFunction(domain, domains[i]); 
            if (dist < minDist) { 
                minDist = dist; 
                closestDomain = domains[i]; 
            } 
        } 
        if (minDist <= threshold && closestDomain !== null) { 
            return closestDomain; 
        } else { 
            return false; 
        } 
    }, 
    sift4Distance: function(s1, s2, maxOffset) { 
        if (maxOffset === undefined) { 
            maxOffset = 5; 
        } 
        if (!s1 || !s1.length) { 
            if (!s2) { 
                return 0; 
            } 
            return s2.length; 
        } 
        if (!s2 || !s2.length) { 
            return s1.length; 
        } 
        var l1 = s1.length; 
        var l2 = s2.length; 
        var c1 = 0; 
        var c2 = 0; 
        var lcss = 0; 
        var local_cs = 0; 
        var trans = 0; 
        var offset_arr = []; 
        while ((c1 < l1) && (c2 < l2)) { 
            if (s1.charAt(c1) == s2.charAt(c2)) { 
                local_cs++; 
                var isTrans = false; 
                var i = 0; 
                while (i < offset_arr.length) { 
                    var ofs = offset_arr[i]; 
                    if (c1 <= ofs.c1 || c2 <= ofs.c2) { 
                        isTrans = Math.abs(c2 - c1) >= Math.abs(ofs.c2 - ofs.c1); 
                        if (isTrans) { 
                            trans++; 
                        } else { 
                            if (!ofs.trans) { 
                                ofs.trans = true; 
                                trans++; 
                            } 
                        } 
                        break; 
                    } else { 
                        if (c1 > ofs.c2 && c2 > ofs.c1) { 
                            offset_arr.splice(i, 1); 
                        } else { 
                            i++; 
                        } 
                    } 
                } 
                offset_arr.push({ 
                    c1: c1, 
                    c2: c2, 
                    trans: isTrans 
                }); 
            } else { 
                lcss += local_cs; 
                local_cs = 0; 
                if (c1 != c2) { 
                    c1 = c2 = Math.min(c1, c2); 
                } 
                for (var j = 0; j < maxOffset && (c1 + j < l1 || c2 + j < l2); j++) { 
                    if ((c1 + j < l1) && (s1.charAt(c1 + j) == s2.charAt(c2))) { 
                        c1 += j - 1; 
                        c2--; 
                        break; 
                    } 
                    if ((c2 + j < l2) && (s1.charAt(c1) == s2.charAt(c2 + j))) { 
                        c1--; 
                        c2 += j - 1; 
                        break; 
                    } 
                } 
            } 
            c1++; 
            c2++; 
            if ((c1 >= l1) || (c2 >= l2)) { 
                lcss += local_cs; 
                local_cs = 0; 
                c1 = c2 = Math.min(c1, c2); 
            } 
        } 
        lcss += local_cs; 
        return Math.round(Math.max(l1, l2) - lcss + trans); 
    }, 
    splitEmail: function(email) { 
        email = email !== null ? (email.replace(/^\s*/, '').replace(/\s*$/, '')) : null; 
        var parts = email.split('@'); 
        if (parts.length < 2) { 
            return false; 
        } 
        for (var i = 0; i < parts.length; i++) { 
            if (parts[i] === '') { 
                return false; 
            } 
        } 
        var domain = parts.pop(); 
        var domainParts = domain.split('.'); 
        var sld = ''; 
        var tld = ''; 
        if (domainParts.length === 0) { 
            return false; 
        } else if (domainParts.length == 1) { 
            tld = domainParts[0]; 
        } else { 
            sld = domainParts[0]; 
            for (var j = 1; j < domainParts.length; j++) { 
                tld += domainParts[j] + '.'; 
            } 
            tld = tld.substring(0, tld.length - 1); 
        } 
        return { 
            topLevelDomain: tld, 
            secondLevelDomain: sld, 
            domain: domain, 
            address: parts.join('@') 
        }; 
    }, 
    encodeEmail: function(email) { 
        var result = encodeURI(email); 
        result = result.replace('%20', ' ').replace('%25', '%').replace('%5E', '^').replace('%60', '`').replace('%7B', '{').replace('%7C', '|').replace('%7D', '}'); 
        return result; 
    } 
}; 
if (typeof module !== 'undefined' && module.exports) { 
    module.exports = Mailcheck; 
} 
if (typeof define === "function" && define.amd) { 
    define("mailcheck", [], function() { 
        return Mailcheck; 
    }); 
} 
if (typeof window !== 'undefined' && window.jQuery) { 
    (function($) { 
        $.fn.mailcheck = function(opts) { 
            var self = this; 
            if (opts.suggested) { 
                var oldSuggested = opts.suggested; 
                opts.suggested = function(result) { 
                    oldSuggested(self, result); 
                } 
                ; 
            } 
            if (opts.empty) { 
                var oldEmpty = opts.empty; 
                opts.empty = function() { 
                    oldEmpty.call(null, self); 
                } 
                ; 
            } 
            opts.email = this.val(); 
            Mailcheck.run(opts); 
        } 
        ; 
    } 
    )(jQuery); 
} 
$(document).ready(function() { 
    $('<div class="mailcheck_suggestion dn">' + did_you_mean + ' <a href="javascript:;" class="suggestion"></a>?</div>').insertAfter($(':input.mailcheck')); 
    $('body').on('blur', ':input.mailcheck', function() { 
        const $input = $(this); 
        const $help = $input.siblings('.mailcheck_suggestion:first'); 
        const $email = $('.suggestion', $help); 
        if (!$email.length) { 
            return; 
        } 
        $email.on('click', function(e) { 
            e.preventDefault(); 
            $input.val($(this).text()); 
            $help.toggleClass('dn', true); 
        }); 
        $input.mailcheck({ 
            suggested: function(element, suggestion) { 
                $email.html(suggestion.full); 
                $help.toggleClass('dn', false); 
            }, 
            empty: function(element) { 
                $help.toggleClass('dn', true); 
            } 
        }); 
    }); 
}); 
!function(e, t) { 
    if ("object" == typeof exports && "object" == typeof module) 
        module.exports = t(); 
    else if ("function" == typeof define && define.amd) 
        define([], t); 
    else { 
        var n = t(); 
        for (var r in n) 
            ("object" == typeof exports ? exports : e)[r] = n[r] 
    } 
}(self, (function() { 
    return function() { 
        var e = { 
            3099: function(e) { 
                e.exports = function(e) { 
                    if ("function" != typeof e) 
                        throw TypeError(String(e) + " is not a function"); 
                    return e 
                } 
            }, 
            6077: function(e, t, n) { 
                var r = n(111); 
                e.exports = function(e) { 
                    if (!r(e) && null !== e) 
                        throw TypeError("Can't set " + String(e) + " as a prototype"); 
                    return e 
                } 
            }, 
            1223: function(e, t, n) { 
                var r = n(5112) 
                  , i = n(30) 
                  , o = n(3070) 
                  , a = r("unscopables") 
                  , u = Array.prototype; 
                null == u[a] && o.f(u, a, { 
                    configurable: !0, 
                    value: i(null) 
                }), 
                e.exports = function(e) { 
                    u[a][e] = !0 
                } 
            }, 
            1530: function(e, t, n) { 
                "use strict"; 
                var r = n(8710).charAt; 
                e.exports = function(e, t, n) { 
                    return t + (n ? r(e, t).length : 1) 
                } 
            }, 
            5787: function(e) { 
                e.exports = function(e, t, n) { 
                    if (!(e instanceof t)) 
                        throw TypeError("Incorrect " + (n ? n + " " : "") + "invocation"); 
                    return e 
                } 
            }, 
            9670: function(e, t, n) { 
                var r = n(111); 
                e.exports = function(e) { 
                    if (!r(e)) 
                        throw TypeError(String(e) + " is not an object"); 
                    return e 
                } 
            }, 
            4019: function(e) { 
                e.exports = "undefined" != typeof ArrayBuffer && "undefined" != typeof DataView 
            }, 
            260: function(e, t, n) { 
                "use strict"; 
                var r, i = n(4019), o = n(9781), a = n(7854), u = n(111), s = n(6656), l = n(648), c = n(8880), f = n(1320), p = n(3070).f, h = n(9518), d = n(7674), v = n(5112), y = n(9711), g = a.Int8Array, m = g && g.prototype, b = a.Uint8ClampedArray, x = b && b.prototype, w = g && h(g), E = m && h(m), k = Object.prototype, A = k.isPrototypeOf, S = v("toStringTag"), F = y("TYPED_ARRAY_TAG"), T = i && !!d && "Opera" !== l(a.opera), C = !1, L = { 
                    Int8Array: 1, 
                    Uint8Array: 1, 
                    Uint8ClampedArray: 1, 
                    Int16Array: 2, 
                    Uint16Array: 2, 
                    Int32Array: 4, 
                    Uint32Array: 4, 
                    Float32Array: 4, 
                    Float64Array: 8 
                }, R = { 
                    BigInt64Array: 8, 
                    BigUint64Array: 8 
                }, I = function(e) { 
                    if (!u(e)) 
                        return !1; 
                    var t = l(e); 
                    return s(L, t) || s(R, t) 
                }; 
                for (r in L) 
                    a[r] || (T = !1); 
                if ((!T || "function" != typeof w || w === Function.prototype) && (w = function() { 
                    throw TypeError("Incorrect invocation") 
                } 
                , 
                T)) 
                    for (r in L) 
                        a[r] && d(a[r], w); 
                if ((!T || !E || E === k) && (E = w.prototype, 
                T)) 
                    for (r in L) 
                        a[r] && d(a[r].prototype, E); 
                if (T && h(x) !== E && d(x, E), 
                o && !s(E, S)) 
                    for (r in C = !0, 
                    p(E, S, { 
                        get: function() { 
                            return u(this) ? this[F] : void 0 
                        } 
                    }), 
                    L) 
                        a[r] && c(a[r], F, r); 
                e.exports = { 
                    NATIVE_ARRAY_BUFFER_VIEWS: T, 
                    TYPED_ARRAY_TAG: C && F, 
                    aTypedArray: function(e) { 
                        if (I(e)) 
                            return e; 
                        throw TypeError("Target is not a typed array") 
                    }, 
                    aTypedArrayConstructor: function(e) { 
                        if (d) { 
                            if (A.call(w, e)) 
                                return e 
                        } else 
                            for (var t in L) 
                                if (s(L, r)) { 
                                    var n = a[t]; 
                                    if (n && (e === n || A.call(n, e))) 
                                        return e 
                                } 
                        throw TypeError("Target is not a typed array constructor") 
                    }, 
                    exportTypedArrayMethod: function(e, t, n) { 
                        if (o) { 
                            if (n) 
                                for (var r in L) { 
                                    var i = a[r]; 
                                    i && s(i.prototype, e) && delete i.prototype[e] 
                                } 
                            E[e] && !n || f(E, e, n ? t : T && m[e] || t) 
                        } 
                    }, 
                    exportTypedArrayStaticMethod: function(e, t, n) { 
                        var r, i; 
                        if (o) { 
                            if (d) { 
                                if (n) 
                                    for (r in L) 
                                        (i = a[r]) && s(i, e) && delete i[e]; 
                                if (w[e] && !n) 
                                    return; 
                                try { 
                                    return f(w, e, n ? t : T && g[e] || t) 
                                } catch (e) {} 
                            } 
                            for (r in L) 
                                !(i = a[r]) || i[e] && !n || f(i, e, t) 
                        } 
                    }, 
                    isView: function(e) { 
                        if (!u(e)) 
                            return !1; 
                        var t = l(e); 
                        return "DataView" === t || s(L, t) || s(R, t) 
                    }, 
                    isTypedArray: I, 
                    TypedArray: w, 
                    TypedArrayPrototype: E 
                } 
            }, 
            3331: function(e, t, n) { 
                "use strict"; 
                var r = n(7854) 
                  , i = n(9781) 
                  , o = n(4019) 
                  , a = n(8880) 
                  , u = n(2248) 
                  , s = n(7293) 
                  , l = n(5787) 
                  , c = n(9958) 
                  , f = n(7466) 
                  , p = n(7067) 
                  , h = n(1179) 
                  , d = n(9518) 
                  , v = n(7674) 
                  , y = n(8006).f 
                  , g = n(3070).f 
                  , m = n(1285) 
                  , b = n(8003) 
                  , x = n(9909) 
                  , w = x.get 
                  , E = x.set 
                  , k = "ArrayBuffer" 
                  , A = "DataView" 
                  , S = "Wrong index" 
                  , F = r.ArrayBuffer 
                  , T = F 
                  , C = r.DataView 
                  , L = C && C.prototype 
                  , R = Object.prototype 
                  , I = r.RangeError 
                  , U = h.pack 
                  , O = h.unpack 
                  , _ = function(e) { 
                    return [255 & e] 
                } 
                  , M = function(e) { 
                    return [255 & e, e >> 8 & 255] 
                } 
                  , z = function(e) { 
                    return [255 & e, e >> 8 & 255, e >> 16 & 255, e >> 24 & 255] 
                } 
                  , P = function(e) { 
                    return e[3] << 24 | e[2] << 16 | e[1] << 8 | e[0] 
                } 
                  , j = function(e) { 
                    return U(e, 23, 4) 
                } 
                  , D = function(e) { 
                    return U(e, 52, 8) 
                } 
                  , N = function(e, t) { 
                    g(e.prototype, t, { 
                        get: function() { 
                            return w(this)[t] 
                        } 
                    }) 
                } 
                  , B = function(e, t, n, r) { 
                    var i = p(n) 
                      , o = w(e); 
                    if (i + t > o.byteLength) 
                        throw I(S); 
                    var a = w(o.buffer).bytes 
                      , u = i + o.byteOffset 
                      , s = a.slice(u, u + t); 
                    return r ? s : s.reverse() 
                } 
                  , q = function(e, t, n, r, i, o) { 
                    var a = p(n) 
                      , u = w(e); 
                    if (a + t > u.byteLength) 
                        throw I(S); 
                    for (var s = w(u.buffer).bytes, l = a + u.byteOffset, c = r(+i), f = 0; f < t; f++) 
                        s[l + f] = c[o ? f : t - f - 1] 
                }; 
                if (o) { 
                    if (!s((function() { 
                        F(1) 
                    } 
                    )) || !s((function() { 
                        new F(-1) 
                    } 
                    )) || s((function() { 
                        return new F, 
                        new F(1.5), 
                        new F(NaN), 
                        F.name != k 
                    } 
                    ))) { 
                        for (var W, H = (T = function(e) { 
                            return l(this, T), 
                            new F(p(e)) 
                        } 
                        ).prototype = F.prototype, Y = y(F), G = 0; Y.length > G; ) 
                            (W = Y[G++])in T || a(T, W, F[W]); 
                        H.constructor = T 
                    } 
                    v && d(L) !== R && v(L, R); 
                    var Q = new C(new T(2)) 
                      , $ = L.setInt8; 
                    Q.setInt8(0, 2147483648), 
                    Q.setInt8(1, 2147483649), 
                    !Q.getInt8(0) && Q.getInt8(1) || u(L, { 
                        setInt8: function(e, t) { 
                            $.call(this, e, t << 24 >> 24) 
                        }, 
                        setUint8: function(e, t) { 
                            $.call(this, e, t << 24 >> 24) 
                        } 
                    }, { 
                        unsafe: !0 
                    }) 
                } else 
                    T = function(e) { 
                        l(this, T, k); 
                        var t = p(e); 
                        E(this, { 
                            bytes: m.call(new Array(t), 0), 
                            byteLength: t 
                        }), 
                        i || (this.byteLength = t) 
                    } 
                    , 
                    C = function(e, t, n) { 
                        l(this, C, A), 
                        l(e, T, A); 
                        var r = w(e).byteLength 
                          , o = c(t); 
                        if (o < 0 || o > r) 
                            throw I("Wrong offset"); 
                        if (o + (n = void 0 === n ? r - o : f(n)) > r) 
                            throw I("Wrong length"); 
                        E(this, { 
                            buffer: e, 
                            byteLength: n, 
                            byteOffset: o 
                        }), 
                        i || (this.buffer = e, 
                        this.byteLength = n, 
                        this.byteOffset = o) 
                    } 
                    , 
                    i && (N(T, "byteLength"), 
                    N(C, "buffer"), 
                    N(C, "byteLength"), 
                    N(C, "byteOffset")), 
                    u(C.prototype, { 
                        getInt8: function(e) { 
                            return B(this, 1, e)[0] << 24 >> 24 
                        }, 
                        getUint8: function(e) { 
                            return B(this, 1, e)[0] 
                        }, 
                        getInt16: function(e) { 
                            var t = B(this, 2, e, arguments.length > 1 ? arguments[1] : void 0); 
                            return (t[1] << 8 | t[0]) << 16 >> 16 
                        }, 
                        getUint16: function(e) { 
                            var t = B(this, 2, e, arguments.length > 1 ? arguments[1] : void 0); 
                            return t[1] << 8 | t[0] 
                        }, 
                        getInt32: function(e) { 
                            return P(B(this, 4, e, arguments.length > 1 ? arguments[1] : void 0)) 
                        }, 
                        getUint32: function(e) { 
                            return P(B(this, 4, e, arguments.length > 1 ? arguments[1] : void 0)) >>> 0 
                        }, 
                        getFloat32: function(e) { 
                            return O(B(this, 4, e, arguments.length > 1 ? arguments[1] : void 0), 23) 
                        }, 
                        getFloat64: function(e) { 
                            return O(B(this, 8, e, arguments.length > 1 ? arguments[1] : void 0), 52) 
                        }, 
                        setInt8: function(e, t) { 
                            q(this, 1, e, _, t) 
                        }, 
                        setUint8: function(e, t) { 
                            q(this, 1, e, _, t) 
                        }, 
                        setInt16: function(e, t) { 
                            q(this, 2, e, M, t, arguments.length > 2 ? arguments[2] : void 0) 
                        }, 
                        setUint16: function(e, t) { 
                            q(this, 2, e, M, t, arguments.length > 2 ? arguments[2] : void 0) 
                        }, 
                        setInt32: function(e, t) { 
                            q(this, 4, e, z, t, arguments.length > 2 ? arguments[2] : void 0) 
                        }, 
                        setUint32: function(e, t) { 
                            q(this, 4, e, z, t, arguments.length > 2 ? arguments[2] : void 0) 
                        }, 
                        setFloat32: function(e, t) { 
                            q(this, 4, e, j, t, arguments.length > 2 ? arguments[2] : void 0) 
                        }, 
                        setFloat64: function(e, t) { 
                            q(this, 8, e, D, t, arguments.length > 2 ? arguments[2] : void 0) 
                        } 
                    }); 
                b(T, k), 
                b(C, A), 
                e.exports = { 
                    ArrayBuffer: T, 
                    DataView: C 
                } 
            }, 
            1048: function(e, t, n) { 
                "use strict"; 
                var r = n(7908) 
                  , i = n(1400) 
                  , o = n(7466) 
                  , a = Math.min; 
                e.exports = [].copyWithin || function(e, t) { 
                    var n = r(this) 
                      , u = o(n.length) 
                      , s = i(e, u) 
                      , l = i(t, u) 
                      , c = arguments.length > 2 ? arguments[2] : void 0 
                      , f = a((void 0 === c ? u : i(c, u)) - l, u - s) 
                      , p = 1; 
                    for (l < s && s < l + f && (p = -1, 
                    l += f - 1, 
                    s += f - 1); f-- > 0; ) 
                        l in n ? n[s] = n[l] : delete n[s], 
                        s += p, 
                        l += p; 
                    return n 
                } 
            }, 
            1285: function(e, t, n) { 
                "use strict"; 
                var r = n(7908) 
                  , i = n(1400) 
                  , o = n(7466); 
                e.exports = function(e) { 
                    for (var t = r(this), n = o(t.length), a = arguments.length, u = i(a > 1 ? arguments[1] : void 0, n), s = a > 2 ? arguments[2] : void 0, l = void 0 === s ? n : i(s, n); l > u; ) 
                        t[u++] = e; 
                    return t 
                } 
            }, 
            8533: function(e, t, n) { 
                "use strict"; 
                var r = n(2092).forEach 
                  , i = n(9341)("forEach"); 
                e.exports = i ? [].forEach : function(e) { 
                    return r(this, e, arguments.length > 1 ? arguments[1] : void 0) 
                } 
            }, 
            8457: function(e, t, n) { 
                "use strict"; 
                var r = n(9974) 
                  , i = n(7908) 
                  , o = n(3411) 
                  , a = n(7659) 
                  , u = n(7466) 
                  , s = n(6135) 
                  , l = n(1246); 
                e.exports = function(e) { 
                    var t, n, c, f, p, h, d = i(e), v = "function" == typeof this ? this : Array, y = arguments.length, g = y > 1 ? arguments[1] : void 0, m = void 0 !== g, b = l(d), x = 0; 
                    if (m && (g = r(g, y > 2 ? arguments[2] : void 0, 2)), 
                    null == b || v == Array && a(b)) 
                        for (n = new v(t = u(d.length)); t > x; x++) 
                            h = m ? g(d[x], x) : d[x], 
                            s(n, x, h); 
                    else 
                        for (p = (f = b.call(d)).next, 
                        n = new v; !(c = p.call(f)).done; x++) 
                            h = m ? o(f, g, [c.value, x], !0) : c.value, 
                            s(n, x, h); 
                    return n.length = x, 
                    n 
                } 
            }, 
            1318: function(e, t, n) { 
                var r = n(5656) 
                  , i = n(7466) 
                  , o = n(1400) 
                  , a = function(e) { 
                    return function(t, n, a) { 
                        var u, s = r(t), l = i(s.length), c = o(a, l); 
                        if (e && n != n) { 
                            for (; l > c; ) 
                                if ((u = s[c++]) != u) 
                                    return !0 
                        } else 
                            for (; l > c; c++) 
                                if ((e || c in s) && s[c] === n) 
                                    return e || c || 0; 
                        return !e && -1 
                    } 
                }; 
                e.exports = { 
                    includes: a(!0), 
                    indexOf: a(!1) 
                } 
            }, 
            2092: function(e, t, n) { 
                var r = n(9974) 
                  , i = n(8361) 
                  , o = n(7908) 
                  , a = n(7466) 
                  , u = n(5417) 
                  , s = [].push 
                  , l = function(e) { 
                    var t = 1 == e 
                      , n = 2 == e 
                      , l = 3 == e 
                      , c = 4 == e 
                      , f = 6 == e 
                      , p = 7 == e 
                      , h = 5 == e || f; 
                    return function(d, v, y, g) { 
                        for (var m, b, x = o(d), w = i(x), E = r(v, y, 3), k = a(w.length), A = 0, S = g || u, F = t ? S(d, k) : n || p ? S(d, 0) : void 0; k > A; A++) 
                            if ((h || A in w) && (b = E(m = w[A], A, x), 
                            e)) 
                                if (t) 
                                    F[A] = b; 
                                else if (b) 
                                    switch (e) { 
                                    case 3: 
                                        return !0; 
                                    case 5: 
                                        return m; 
                                    case 6: 
                                        return A; 
                                    case 2: 
                                        s.call(F, m) 
                                    } 
                                else 
                                    switch (e) { 
                                    case 4: 
                                        return !1; 
                                    case 7: 
                                        s.call(F, m) 
                                    } 
                        return f ? -1 : l || c ? c : F 
                    } 
                }; 
                e.exports = { 
                    forEach: l(0), 
                    map: l(1), 
                    filter: l(2), 
                    some: l(3), 
                    every: l(4), 
                    find: l(5), 
                    findIndex: l(6), 
                    filterOut: l(7) 
                } 
            }, 
            6583: function(e, t, n) { 
                "use strict"; 
                var r = n(5656) 
                  , i = n(9958) 
                  , o = n(7466) 
                  , a = n(9341) 
                  , u = Math.min 
                  , s = [].lastIndexOf 
                  , l = !!s && 1 / [1].lastIndexOf(1, -0) < 0 
                  , c = a("lastIndexOf") 
                  , f = l || !c; 
                e.exports = f ? function(e) { 
                    if (l) 
                        return s.apply(this, arguments) || 0; 
                    var t = r(this) 
                      , n = o(t.length) 
                      , a = n - 1; 
                    for (arguments.length > 1 && (a = u(a, i(arguments[1]))), 
                    a < 0 && (a = n + a); a >= 0; a--) 
                        if (a in t && t[a] === e) 
                            return a || 0; 
                    return -1 
                } 
                : s 
            }, 
            1194: function(e, t, n) { 
                var r = n(7293) 
                  , i = n(5112) 
                  , o = n(7392) 
                  , a = i("species"); 
                e.exports = function(e) { 
                    return o >= 51 || !r((function() { 
                        var t = []; 
                        return (t.constructor = {})[a] = function() { 
                            return { 
                                foo: 1 
                            } 
                        } 
                        , 
                        1 !== t[e](Boolean).foo 
                    } 
                    )) 
                } 
            }, 
            9341: function(e, t, n) { 
                "use strict"; 
                var r = n(7293); 
                e.exports = function(e, t) { 
                    var n = [][e]; 
                    return !!n && r((function() { 
                        n.call(null, t || function() { 
                            throw 1 
                        } 
                        , 1) 
                    } 
                    )) 
                } 
            }, 
            3671: function(e, t, n) { 
                var r = n(3099) 
                  , i = n(7908) 
                  , o = n(8361) 
                  , a = n(7466) 
                  , u = function(e) { 
                    return function(t, n, u, s) { 
                        r(n); 
                        var l = i(t) 
                          , c = o(l) 
                          , f = a(l.length) 
                          , p = e ? f - 1 : 0 
                          , h = e ? -1 : 1; 
                        if (u < 2) 
                            for (; ; ) { 
                                if (p in c) { 
                                    s = c[p], 
                                    p += h; 
                                    break 
                                } 
                                if (p += h, 
                                e ? p < 0 : f <= p) 
                                    throw TypeError("Reduce of empty array with no initial value") 
                            } 
                        for (; e ? p >= 0 : f > p; p += h) 
                            p in c && (s = n(s, c[p], p, l)); 
                        return s 
                    } 
                }; 
                e.exports = { 
                    left: u(!1), 
                    right: u(!0) 
                } 
            }, 
            5417: function(e, t, n) { 
                var r = n(111) 
                  , i = n(3157) 
                  , o = n(5112)("species"); 
                e.exports = function(e, t) { 
                    var n; 
                    return i(e) && ("function" != typeof (n = e.constructor) || n !== Array && !i(n.prototype) ? r(n) && null === (n = n[o]) && (n = void 0) : n = void 0), 
                    new (void 0 === n ? Array : n)(0 === t ? 0 : t) 
                } 
            }, 
            3411: function(e, t, n) { 
                var r = n(9670) 
                  , i = n(9212); 
                e.exports = function(e, t, n, o) { 
                    try { 
                        return o ? t(r(n)[0], n[1]) : t(n) 
                    } catch (t) { 
                        throw i(e), 
                        t 
                    } 
                } 
            }, 
            7072: function(e, t, n) { 
                var r = n(5112)("iterator") 
                  , i = !1; 
                try { 
                    var o = 0 
                      , a = { 
                        next: function() { 
                            return { 
                                done: !!o++ 
                            } 
                        }, 
                        return: function() { 
                            i = !0 
                        } 
                    }; 
                    a[r] = function() { 
                        return this 
                    } 
                    , 
                    Array.from(a, (function() { 
                        throw 2 
                    } 
                    )) 
                } catch (e) {} 
                e.exports = function(e, t) { 
                    if (!t && !i) 
                        return !1; 
                    var n = !1; 
                    try { 
                        var o = {}; 
                        o[r] = function() { 
                            return { 
                                next: function() { 
                                    return { 
                                        done: n = !0 
                                    } 
                                } 
                            } 
                        } 
                        , 
                        e(o) 
                    } catch (e) {} 
                    return n 
                } 
            }, 
            4326: function(e) { 
                var t = {}.toString; 
                e.exports = function(e) { 
                    return t.call(e).slice(8, -1) 
                } 
            }, 
            648: function(e, t, n) { 
                var r = n(1694) 
                  , i = n(4326) 
                  , o = n(5112)("toStringTag") 
                  , a = "Arguments" == i(function() { 
                    return arguments 
                }()); 
                e.exports = r ? i : function(e) { 
                    var t, n, r; 
                    return void 0 === e ? "Undefined" : null === e ? "Null" : "string" == typeof (n = function(e, t) { 
                        try { 
                            return e[t] 
                        } catch (e) {} 
                    }(t = Object(e), o)) ? n : a ? i(t) : "Object" == (r = i(t)) && "function" == typeof t.callee ? "Arguments" : r 
                } 
            }, 
            9920: function(e, t, n) { 
                var r = n(6656) 
                  , i = n(3887) 
                  , o = n(1236) 
                  , a = n(3070); 
                e.exports = function(e, t) { 
                    for (var n = i(t), u = a.f, s = o.f, l = 0; l < n.length; l++) { 
                        var c = n[l]; 
                        r(e, c) || u(e, c, s(t, c)) 
                    } 
                } 
            }, 
            8544: function(e, t, n) { 
                var r = n(7293); 
                e.exports = !r((function() { 
                    function e() {} 
                    return e.prototype.constructor = null, 
                    Object.getPrototypeOf(new e) !== e.prototype 
                } 
                )) 
            }, 
            4994: function(e, t, n) { 
                "use strict"; 
                var r = n(3383).IteratorPrototype 
                  , i = n(30) 
                  , o = n(9114) 
                  , a = n(8003) 
                  , u = n(7497) 
                  , s = function() { 
                    return this 
                }; 
                e.exports = function(e, t, n) { 
                    var l = t + " Iterator"; 
                    return e.prototype = i(r, { 
                        next: o(1, n) 
                    }), 
                    a(e, l, !1, !0), 
                    u[l] = s, 
                    e 
                } 
            }, 
            8880: function(e, t, n) { 
                var r = n(9781) 
                  , i = n(3070) 
                  , o = n(9114); 
                e.exports = r ? function(e, t, n) { 
                    return i.f(e, t, o(1, n)) 
                } 
                : function(e, t, n) { 
                    return e[t] = n, 
                    e 
                } 
            }, 
            9114: function(e) { 
                e.exports = function(e, t) { 
                    return { 
                        enumerable: !(1 & e), 
                        configurable: !(2 & e), 
                        writable: !(4 & e), 
                        value: t 
                    } 
                } 
            }, 
            6135: function(e, t, n) { 
                "use strict"; 
                var r = n(7593) 
                  , i = n(3070) 
                  , o = n(9114); 
                e.exports = function(e, t, n) { 
                    var a = r(t); 
                    a in e ? i.f(e, a, o(0, n)) : e[a] = n 
                } 
            }, 
            654: function(e, t, n) { 
                "use strict"; 
                var r = n(2109) 
                  , i = n(4994) 
                  , o = n(9518) 
                  , a = n(7674) 
                  , u = n(8003) 
                  , s = n(8880) 
                  , l = n(1320) 
                  , c = n(5112) 
                  , f = n(1913) 
                  , p = n(7497) 
                  , h = n(3383) 
                  , d = h.IteratorPrototype 
                  , v = h.BUGGY_SAFARI_ITERATORS 
                  , y = c("iterator") 
                  , g = "keys" 
                  , m = "values" 
                  , b = "entries" 
                  , x = function() { 
                    return this 
                }; 
                e.exports = function(e, t, n, c, h, w, E) { 
                    i(n, t, c); 
                    var k, A, S, F = function(e) { 
                        if (e === h && I) 
                            return I; 
                        if (!v && e in L) 
                            return L[e]; 
                        switch (e) { 
                        case g: 
                        case m: 
                        case b: 
                            return function() { 
                                return new n(this,e) 
                            } 
                        } 
                        return function() { 
                            return new n(this) 
                        } 
                    }, T = t + " Iterator", C = !1, L = e.prototype, R = L[y] || L["@@iterator"] || h && L[h], I = !v && R || F(h), U = "Array" == t && L.entries || R; 
                    if (U && (k = o(U.call(new e)), 
                    d !== Object.prototype && k.next && (f || o(k) === d || (a ? a(k, d) : "function" != typeof k[y] && s(k, y, x)), 
                    u(k, T, !0, !0), 
                    f && (p[T] = x))), 
                    h == m && R && R.name !== m && (C = !0, 
                    I = function() { 
                        return R.call(this) 
                    } 
                    ), 
                    f && !E || L[y] === I || s(L, y, I), 
                    p[t] = I, 
                    h) 
                        if (A = { 
                            values: F(m), 
                            keys: w ? I : F(g), 
                            entries: F(b) 
                        }, 
                        E) 
                            for (S in A) 
                                (v || C || !(S in L)) && l(L, S, A[S]); 
                        else 
                            r({ 
                                target: t, 
                                proto: !0, 
                                forced: v || C 
                            }, A); 
                    return A 
                } 
            }, 
            9781: function(e, t, n) { 
                var r = n(7293); 
                e.exports = !r((function() { 
                    return 7 != Object.defineProperty({}, 1, { 
                        get: function() { 
                            return 7 
                        } 
                    })[1] 
                } 
                )) 
            }, 
            317: function(e, t, n) { 
                var r = n(7854) 
                  , i = n(111) 
                  , o = r.document 
                  , a = i(o) && i(o.createElement); 
                e.exports = function(e) { 
                    return a ? o.createElement(e) : {} 
                } 
            }, 
            8324: function(e) { 
                e.exports = { 
                    CSSRuleList: 0, 
                    CSSStyleDeclaration: 0, 
                    CSSValueList: 0, 
                    ClientRectList: 0, 
                    DOMRectList: 0, 
                    DOMStringList: 0, 
                    DOMTokenList: 1, 
                    DataTransferItemList: 0, 
                    FileList: 0, 
                    HTMLAllCollection: 0, 
                    HTMLCollection: 0, 
                    HTMLFormElement: 0, 
                    HTMLSelectElement: 0, 
                    MediaList: 0, 
                    MimeTypeArray: 0, 
                    NamedNodeMap: 0, 
                    NodeList: 1, 
                    PaintRequestList: 0, 
                    Plugin: 0, 
                    PluginArray: 0, 
                    SVGLengthList: 0, 
                    SVGNumberList: 0, 
                    SVGPathSegList: 0, 
                    SVGPointList: 0, 
                    SVGStringList: 0, 
                    SVGTransformList: 0, 
                    SourceBufferList: 0, 
                    StyleSheetList: 0, 
                    TextTrackCueList: 0, 
                    TextTrackList: 0, 
                    TouchList: 0 
                } 
            }, 
            8113: function(e, t, n) { 
                var r = n(5005); 
                e.exports = r("navigator", "userAgent") || "" 
            }, 
            7392: function(e, t, n) { 
                var r, i, o = n(7854), a = n(8113), u = o.process, s = u && u.versions, l = s && s.v8; 
                l ? i = (r = l.split("."))[0] + r[1] : a && (!(r = a.match(/Edge\/(\d+)/)) || r[1] >= 74) && (r = a.match(/Chrome\/(\d+)/)) && (i = r[1]), 
                e.exports = i && +i 
            }, 
            748: function(e) { 
                e.exports = ["constructor", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", "toLocaleString", "toString", "valueOf"] 
            }, 
            2109: function(e, t, n) { 
                var r = n(7854) 
                  , i = n(1236).f 
                  , o = n(8880) 
                  , a = n(1320) 
                  , u = n(3505) 
                  , s = n(9920) 
                  , l = n(4705); 
                e.exports = function(e, t) { 
                    var n, c, f, p, h, d = e.target, v = e.global, y = e.stat; 
                    if (n = v ? r : y ? r[d] || u(d, {}) : (r[d] || {}).prototype) 
                        for (c in t) { 
                            if (p = t[c], 
                            f = e.noTargetGet ? (h = i(n, c)) && h.value : n[c], 
                            !l(v ? c : d + (y ? "." : "#") + c, e.forced) && void 0 !== f) { 
                                if (typeof p == typeof f) 
                                    continue; 
                                s(p, f) 
                            } 
                            (e.sham || f && f.sham) && o(p, "sham", !0), 
                            a(n, c, p, e) 
                        } 
                } 
            }, 
            7293: function(e) { 
                e.exports = function(e) { 
                    try { 
                        return !!e() 
                    } catch (e) { 
                        return !0 
                    } 
                } 
            }, 
            7007: function(e, t, n) { 
                "use strict"; 
                n(4916); 
                var r = n(1320) 
                  , i = n(7293) 
                  , o = n(5112) 
                  , a = n(2261) 
                  , u = n(8880) 
                  , s = o("species") 
                  , l = !i((function() { 
                    var e = /./; 
                    return e.exec = function() { 
                        var e = []; 
                        return e.groups = { 
                            a: "7" 
                        }, 
                        e 
                    } 
                    , 
                    "7" !== "".replace(e, "$<a>") 
                } 
                )) 
                  , c = "$0" === "a".replace(/./, "$0") 
                  , f = o("replace") 
                  , p = !!/./[f] && "" === /./[f]("a", "$0") 
                  , h = !i((function() { 
                    var e = /(?:)/ 
                      , t = e.exec; 
                    e.exec = function() { 
                        return t.apply(this, arguments) 
                    } 
                    ; 
                    var n = "ab".split(e); 
                    return 2 !== n.length || "a" !== n[0] || "b" !== n[1] 
                } 
                )); 
                e.exports = function(e, t, n, f) { 
                    var d = o(e) 
                      , v = !i((function() { 
                        var t = {}; 
                        return t[d] = function() { 
                            return 7 
                        } 
                        , 
                        7 != ""[e](t) 
                    } 
                    )) 
                      , y = v && !i((function() { 
                        var t = !1 
                          , n = /a/; 
                        return "split" === e && ((n = {}).constructor = {}, 
                        n.constructor[s] = function() { 
                            return n 
                        } 
                        , 
                        n.flags = "", 
                        n[d] = /./[d]), 
                        n.exec = function() { 
                            return t = !0, 
                            null 
                        } 
                        , 
                        n[d](""), 
                        !t 
                    } 
                    )); 
                    if (!v || !y || "replace" === e && (!l || !c || p) || "split" === e && !h) { 
                        var g = /./[d] 
                          , m = n(d, ""[e], (function(e, t, n, r, i) { 
                            return t.exec === a ? v && !i ? { 
                                done: !0, 
                                value: g.call(t, n, r) 
                            } : { 
                                done: !0, 
                                value: e.call(n, t, r) 
                            } : { 
                                done: !1 
                            } 
                        } 
                        ), { 
                            REPLACE_KEEPS_$0: c, 
                            REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE: p 
                        }) 
                          , b = m[0] 
                          , x = m[1]; 
                        r(String.prototype, e, b), 
                        r(RegExp.prototype, d, 2 == t ? function(e, t) { 
                            return x.call(e, this, t) 
                        } 
                        : function(e) { 
                            return x.call(e, this) 
                        } 
                        ) 
                    } 
                    f && u(RegExp.prototype[d], "sham", !0) 
                } 
            }, 
            9974: function(e, t, n) { 
                var r = n(3099); 
                e.exports = function(e, t, n) { 
                    if (r(e), 
                    void 0 === t) 
                        return e; 
                    switch (n) { 
                    case 0: 
                        return function() { 
                            return e.call(t) 
                        } 
                        ; 
                    case 1: 
                        return function(n) { 
                            return e.call(t, n) 
                        } 
                        ; 
                    case 2: 
                        return function(n, r) { 
                            return e.call(t, n, r) 
                        } 
                        ; 
                    case 3: 
                        return function(n, r, i) { 
                            return e.call(t, n, r, i) 
                        } 
                    } 
                    return function() { 
                        return e.apply(t, arguments) 
                    } 
                } 
            }, 
            5005: function(e, t, n) { 
                var r = n(857) 
                  , i = n(7854) 
                  , o = function(e) { 
                    return "function" == typeof e ? e : void 0 
                }; 
                e.exports = function(e, t) { 
                    return arguments.length < 2 ? o(r[e]) || o(i[e]) : r[e] && r[e][t] || i[e] && i[e][t] 
                } 
            }, 
            1246: function(e, t, n) { 
                var r = n(648) 
                  , i = n(7497) 
                  , o = n(5112)("iterator"); 
                e.exports = function(e) { 
                    if (null != e) 
                        return e[o] || e["@@iterator"] || i[r(e)] 
                } 
            }, 
            8554: function(e, t, n) { 
                var r = n(9670) 
                  , i = n(1246); 
                e.exports = function(e) { 
                    var t = i(e); 
                    if ("function" != typeof t) 
                        throw TypeError(String(e) + " is not iterable"); 
                    return r(t.call(e)) 
                } 
            }, 
            647: function(e, t, n) { 
                var r = n(7908) 
                  , i = Math.floor 
                  , o = "".replace 
                  , a = /\$([$&'`]|\d\d?|<[^>]*>)/g 
                  , u = /\$([$&'`]|\d\d?)/g; 
                e.exports = function(e, t, n, s, l, c) { 
                    var f = n + e.length 
                      , p = s.length 
                      , h = u; 
                    return void 0 !== l && (l = r(l), 
                    h = a), 
                    o.call(c, h, (function(r, o) { 
                        var a; 
                        switch (o.charAt(0)) { 
                        case "$": 
                            return "$"; 
                        case "&": 
                            return e; 
                        case "`": 
                            return t.slice(0, n); 
                        case "'": 
                            return t.slice(f); 
                        case "<": 
                            a = l[o.slice(1, -1)]; 
                            break; 
                        default: 
                            var u = +o; 
                            if (0 === u) 
                                return r; 
                            if (u > p) { 
                                var c = i(u / 10); 
                                return 0 === c ? r : c <= p ? void 0 === s[c - 1] ? o.charAt(1) : s[c - 1] + o.charAt(1) : r 
                            } 
                            a = s[u - 1] 
                        } 
                        return void 0 === a ? "" : a 
                    } 
                    )) 
                } 
            }, 
            7854: function(e, t, n) { 
                var r = function(e) { 
                    return e && e.Math == Math && e 
                }; 
                e.exports = r("object" == typeof globalThis && globalThis) || r("object" == typeof window && window) || r("object" == typeof self && self) || r("object" == typeof n.g && n.g) || function() { 
                    return this 
                }() || Function("return this")() 
            }, 
            6656: function(e) { 
                var t = {}.hasOwnProperty; 
                e.exports = function(e, n) { 
                    return t.call(e, n) 
                } 
            }, 
            3501: function(e) { 
                e.exports = {} 
            }, 
            490: function(e, t, n) { 
                var r = n(5005); 
                e.exports = r("document", "documentElement") 
            }, 
            4664: function(e, t, n) { 
                var r = n(9781) 
                  , i = n(7293) 
                  , o = n(317); 
                e.exports = !r && !i((function() { 
                    return 7 != Object.defineProperty(o("div"), "a", { 
                        get: function() { 
                            return 7 
                        } 
                    }).a 
                } 
                )) 
            }, 
            1179: function(e) { 
                var t = Math.abs 
                  , n = Math.pow 
                  , r = Math.floor 
                  , i = Math.log 
                  , o = Math.LN2; 
                e.exports = { 
                    pack: function(e, a, u) { 
                        var s, l, c, f = new Array(u), p = 8 * u - a - 1, h = (1 << p) - 1, d = h >> 1, v = 23 === a ? n(2, -24) - n(2, -77) : 0, y = e < 0 || 0 === e && 1 / e < 0 ? 1 : 0, g = 0; 
                        for ((e = t(e)) != e || e === 1 / 0 ? (l = e != e ? 1 : 0, 
                        s = h) : (s = r(i(e) / o), 
                        e * (c = n(2, -s)) < 1 && (s--, 
                        c *= 2), 
                        (e += s + d >= 1 ? v / c : v * n(2, 1 - d)) * c >= 2 && (s++, 
                        c /= 2), 
                        s + d >= h ? (l = 0, 
                        s = h) : s + d >= 1 ? (l = (e * c - 1) * n(2, a), 
                        s += d) : (l = e * n(2, d - 1) * n(2, a), 
                        s = 0)); a >= 8; f[g++] = 255 & l, 
                        l /= 256, 
                        a -= 8) 
                            ; 
                        for (s = s << a | l, 
                        p += a; p > 0; f[g++] = 255 & s, 
                        s /= 256, 
                        p -= 8) 
                            ; 
                        return f[--g] |= 128 * y, 
                        f 
                    }, 
                    unpack: function(e, t) { 
                        var r, i = e.length, o = 8 * i - t - 1, a = (1 << o) - 1, u = a >> 1, s = o - 7, l = i - 1, c = e[l--], f = 127 & c; 
                        for (c >>= 7; s > 0; f = 256 * f + e[l], 
                        l--, 
                        s -= 8) 
                            ; 
                        for (r = f & (1 << -s) - 1, 
                        f >>= -s, 
                        s += t; s > 0; r = 256 * r + e[l], 
                        l--, 
                        s -= 8) 
                            ; 
                        if (0 === f) 
                            f = 1 - u; 
                        else { 
                            if (f === a) 
                                return r ? NaN : c ? -1 / 0 : 1 / 0; 
                            r += n(2, t), 
                            f -= u 
                        } 
                        return (c ? -1 : 1) * r * n(2, f - t) 
                    } 
                } 
            }, 
            8361: function(e, t, n) { 
                var r = n(7293) 
                  , i = n(4326) 
                  , o = "".split; 
                e.exports = r((function() { 
                    return !Object("z").propertyIsEnumerable(0) 
                } 
                )) ? function(e) { 
                    return "String" == i(e) ? o.call(e, "") : Object(e) 
                } 
                : Object 
            }, 
            9587: function(e, t, n) { 
                var r = n(111) 
                  , i = n(7674); 
                e.exports = function(e, t, n) { 
                    var o, a; 
                    return i && "function" == typeof (o = t.constructor) && o !== n && r(a = o.prototype) && a !== n.prototype && i(e, a), 
                    e 
                } 
            }, 
            2788: function(e, t, n) { 
                var r = n(5465) 
                  , i = Function.toString; 
                "function" != typeof r.inspectSource && (r.inspectSource = function(e) { 
                    return i.call(e) 
                } 
                ), 
                e.exports = r.inspectSource 
            }, 
            9909: function(e, t, n) { 
                var r, i, o, a = n(8536), u = n(7854), s = n(111), l = n(8880), c = n(6656), f = n(5465), p = n(6200), h = n(3501), d = u.WeakMap; 
                if (a) { 
                    var v = f.state || (f.state = new d) 
                      , y = v.get 
                      , g = v.has 
                      , m = v.set; 
                    r = function(e, t) { 
                        return t.facade = e, 
                        m.call(v, e, t), 
                        t 
                    } 
                    , 
                    i = function(e) { 
                        return y.call(v, e) || {} 
                    } 
                    , 
                    o = function(e) { 
                        return g.call(v, e) 
                    } 
                } else { 
                    var b = p("state"); 
                    h[b] = !0, 
                    r = function(e, t) { 
                        return t.facade = e, 
                        l(e, b, t), 
                        t 
                    } 
                    , 
                    i = function(e) { 
                        return c(e, b) ? e[b] : {} 
                    } 
                    , 
                    o = function(e) { 
                        return c(e, b) 
                    } 
                } 
                e.exports = { 
                    set: r, 
                    get: i, 
                    has: o, 
                    enforce: function(e) { 
                        return o(e) ? i(e) : r(e, {}) 
                    }, 
                    getterFor: function(e) { 
                        return function(t) { 
                            var n; 
                            if (!s(t) || (n = i(t)).type !== e) 
                                throw TypeError("Incompatible receiver, " + e + " required"); 
                            return n 
                        } 
                    } 
                } 
            }, 
            7659: function(e, t, n) { 
                var r = n(5112) 
                  , i = n(7497) 
                  , o = r("iterator") 
                  , a = Array.prototype; 
                e.exports = function(e) { 
                    return void 0 !== e && (i.Array === e || a[o] === e) 
                } 
            }, 
            3157: function(e, t, n) { 
                var r = n(4326); 
                e.exports = Array.isArray || function(e) { 
                    return "Array" == r(e) 
                } 
            }, 
            4705: function(e, t, n) { 
                var r = n(7293) 
                  , i = /#|\.prototype\./ 
                  , o = function(e, t) { 
                    var n = u[a(e)]; 
                    return n == l || n != s && ("function" == typeof t ? r(t) : !!t) 
                } 
                  , a = o.normalize = function(e) { 
                    return String(e).replace(i, ".").toLowerCase() 
                } 
                  , u = o.data = {} 
                  , s = o.NATIVE = "N" 
                  , l = o.POLYFILL = "P"; 
                e.exports = o 
            }, 
            111: function(e) { 
                e.exports = function(e) { 
                    return "object" == typeof e ? null !== e : "function" == typeof e 
                } 
            }, 
            1913: function(e) { 
                e.exports = !1 
            }, 
            7850: function(e, t, n) { 
                var r = n(111) 
                  , i = n(4326) 
                  , o = n(5112)("match"); 
                e.exports = function(e) { 
                    var t; 
                    return r(e) && (void 0 !== (t = e[o]) ? !!t : "RegExp" == i(e)) 
                } 
            }, 
            9212: function(e, t, n) { 
                var r = n(9670); 
                e.exports = function(e) { 
                    var t = e.return; 
                    if (void 0 !== t) 
                        return r(t.call(e)).value 
                } 
            }, 
            3383: function(e, t, n) { 
                "use strict"; 
                var r, i, o, a = n(7293), u = n(9518), s = n(8880), l = n(6656), c = n(5112), f = n(1913), p = c("iterator"), h = !1; 
                [].keys && ("next"in (o = [].keys()) ? (i = u(u(o))) !== Object.prototype && (r = i) : h = !0); 
                var d = null == r || a((function() { 
                    var e = {}; 
                    return r[p].call(e) !== e 
                } 
                )); 
                d && (r = {}), 
                f && !d || l(r, p) || s(r, p, (function() { 
                    return this 
                } 
                )), 
                e.exports = { 
                    IteratorPrototype: r, 
                    BUGGY_SAFARI_ITERATORS: h 
                } 
            }, 
            7497: function(e) { 
                e.exports = {} 
            }, 
            133: function(e, t, n) { 
                var r = n(7293); 
                e.exports = !!Object.getOwnPropertySymbols && !r((function() { 
                    return !String(Symbol()) 
                } 
                )) 
            }, 
            590: function(e, t, n) { 
                var r = n(7293) 
                  , i = n(5112) 
                  , o = n(1913) 
                  , a = i("iterator"); 
                e.exports = !r((function() { 
                    var e = new URL("b?a=1&b=2&c=3","http://a") 
                      , t = e.searchParams 
                      , n = ""; 
                    return e.pathname = "c%20d", 
                    t.forEach((function(e, r) { 
                        t.delete("b"), 
                        n += r + e 
                    } 
                    )), 
                    o && !e.toJSON || !t.sort || "http://a/c%20d?a=1&c=3" !== e.href || "3" !== t.get("c") || "a=1" !== String(new URLSearchParams("?a=1")) || !t[a] || "a" !== new URL("https://a@b").username || "b" !== new URLSearchParams(new URLSearchParams("a=b")).get("a") || "xn--e1aybc" !== new URL("http://").host || "#%D0%B1" !== new URL("http://a#").hash || "a1c3" !== n || "x" !== new URL("http://x",void 0).host 
                } 
                )) 
            }, 
            8536: function(e, t, n) { 
                var r = n(7854) 
                  , i = n(2788) 
                  , o = r.WeakMap; 
                e.exports = "function" == typeof o && /native code/.test(i(o)) 
            }, 
            1574: function(e, t, n) { 
                "use strict"; 
                var r = n(9781) 
                  , i = n(7293) 
                  , o = n(1956) 
                  , a = n(5181) 
                  , u = n(5296) 
                  , s = n(7908) 
                  , l = n(8361) 
                  , c = Object.assign 
                  , f = Object.defineProperty; 
                e.exports = !c || i((function() { 
                    if (r && 1 !== c({ 
                        b: 1 
                    }, c(f({}, "a", { 
                        enumerable: !0, 
                        get: function() { 
                            f(this, "b", { 
                                value: 3, 
                                enumerable: !1 
                            }) 
                        } 
                    }), { 
                        b: 2 
                    })).b) 
                        return !0; 
                    var e = {} 
                      , t = {} 
                      , n = Symbol() 
                      , i = "abcdefghijklmnopqrst"; 
                    return e[n] = 7, 
                    i.split("").forEach((function(e) { 
                        t[e] = e 
                    } 
                    )), 
                    7 != c({}, e)[n] || o(c({}, t)).join("") != i 
                } 
                )) ? function(e, t) { 
                    for (var n = s(e), i = arguments.length, c = 1, f = a.f, p = u.f; i > c; ) 
                        for (var h, d = l(arguments[c++]), v = f ? o(d).concat(f(d)) : o(d), y = v.length, g = 0; y > g; ) 
                            h = v[g++], 
                            r && !p.call(d, h) || (n[h] = d[h]); 
                    return n 
                } 
                : c 
            }, 
            30: function(e, t, n) { 
                var r, i = n(9670), o = n(6048), a = n(748), u = n(3501), s = n(490), l = n(317), c = n(6200)("IE_PROTO"), f = function() {}, p = function(e) { 
                    return "<script>" + e + "<\/script>" 
                }, h = function() { 
                    try { 
                        r = document.domain && new ActiveXObject("htmlfile") 
                    } catch (e) {} 
                    var e, t; 
                    h = r ? function(e) { 
                        e.write(p("")), 
                        e.close(); 
                        var t = e.parentWindow.Object; 
                        return e = null, 
                        t 
                    }(r) : ((t = l("iframe")).style.display = "none", 
                    s.appendChild(t), 
                    t.src = String("javascript:"), 
                    (e = t.contentWindow.document).open(), 
                    e.write(p("document.F=Object")), 
                    e.close(), 
                    e.F); 
                    for (var n = a.length; n--; ) 
                        delete h.prototype[a[n]]; 
                    return h() 
                }; 
                u[c] = !0, 
                e.exports = Object.create || function(e, t) { 
                    var n; 
                    return null !== e ? (f.prototype = i(e), 
                    n = new f, 
                    f.prototype = null, 
                    n[c] = e) : n = h(), 
                    void 0 === t ? n : o(n, t) 
                } 
            }, 
            6048: function(e, t, n) { 
                var r = n(9781) 
                  , i = n(3070) 
                  , o = n(9670) 
                  , a = n(1956); 
                e.exports = r ? Object.defineProperties : function(e, t) { 
                    o(e); 
                    for (var n, r = a(t), u = r.length, s = 0; u > s; ) 
                        i.f(e, n = r[s++], t[n]); 
                    return e 
                } 
            }, 
            3070: function(e, t, n) { 
                var r = n(9781) 
                  , i = n(4664) 
                  , o = n(9670) 
                  , a = n(7593) 
                  , u = Object.defineProperty; 
                t.f = r ? u : function(e, t, n) { 
                    if (o(e), 
                    t = a(t, !0), 
                    o(n), 
                    i) 
                        try { 
                            return u(e, t, n) 
                        } catch (e) {} 
                    if ("get"in n || "set"in n) 
                        throw TypeError("Accessors not supported"); 
                    return "value"in n && (e[t] = n.value), 
                    e 
                } 
            }, 
            1236: function(e, t, n) { 
                var r = n(9781) 
                  , i = n(5296) 
                  , o = n(9114) 
                  , a = n(5656) 
                  , u = n(7593) 
                  , s = n(6656) 
                  , l = n(4664) 
                  , c = Object.getOwnPropertyDescriptor; 
                t.f = r ? c : function(e, t) { 
                    if (e = a(e), 
                    t = u(t, !0), 
                    l) 
                        try { 
                            return c(e, t) 
                        } catch (e) {} 
                    if (s(e, t)) 
                        return o(!i.f.call(e, t), e[t]) 
                } 
            }, 
            8006: function(e, t, n) { 
                var r = n(6324) 
                  , i = n(748).concat("length", "prototype"); 
                t.f = Object.getOwnPropertyNames || function(e) { 
                    return r(e, i) 
                } 
            }, 
            5181: function(e, t) { 
                t.f = Object.getOwnPropertySymbols 
            }, 
            9518: function(e, t, n) { 
                var r = n(6656) 
                  , i = n(7908) 
                  , o = n(6200) 
                  , a = n(8544) 
                  , u = o("IE_PROTO") 
                  , s = Object.prototype; 
                e.exports = a ? Object.getPrototypeOf : function(e) { 
                    return e = i(e), 
                    r(e, u) ? e[u] : "function" == typeof e.constructor && e instanceof e.constructor ? e.constructor.prototype : e instanceof Object ? s : null 
                } 
            }, 
            6324: function(e, t, n) { 
                var r = n(6656) 
                  , i = n(5656) 
                  , o = n(1318).indexOf 
                  , a = n(3501); 
                e.exports = function(e, t) { 
                    var n, u = i(e), s = 0, l = []; 
                    for (n in u) 
                        !r(a, n) && r(u, n) && l.push(n); 
                    for (; t.length > s; ) 
                        r(u, n = t[s++]) && (~o(l, n) || l.push(n)); 
                    return l 
                } 
            }, 
            1956: function(e, t, n) { 
                var r = n(6324) 
                  , i = n(748); 
                e.exports = Object.keys || function(e) { 
                    return r(e, i) 
                } 
            }, 
            5296: function(e, t) { 
                "use strict"; 
                var n = {}.propertyIsEnumerable 
                  , r = Object.getOwnPropertyDescriptor 
                  , i = r && !n.call({ 
                    1: 2 
                }, 1); 
                t.f = i ? function(e) { 
                    var t = r(this, e); 
                    return !!t && t.enumerable 
                } 
                : n 
            }, 
            7674: function(e, t, n) { 
                var r = n(9670) 
                  , i = n(6077); 
                e.exports = Object.setPrototypeOf || ("__proto__"in {} ? function() { 
                    var e, t = !1, n = {}; 
                    try { 
                        (e = Object.getOwnPropertyDescriptor(Object.prototype, "__proto__").set).call(n, []), 
                        t = n instanceof Array 
                    } catch (e) {} 
                    return function(n, o) { 
                        return r(n), 
                        i(o), 
                        t ? e.call(n, o) : n.__proto__ = o, 
                        n 
                    } 
                }() : void 0) 
            }, 
            288: function(e, t, n) { 
                "use strict"; 
                var r = n(1694) 
                  , i = n(648); 
                e.exports = r ? {}.toString : function() { 
                    return "[object " + i(this) + "]" 
                } 
            }, 
            3887: function(e, t, n) { 
                var r = n(5005) 
                  , i = n(8006) 
                  , o = n(5181) 
                  , a = n(9670); 
                e.exports = r("Reflect", "ownKeys") || function(e) { 
                    var t = i.f(a(e)) 
                      , n = o.f; 
                    return n ? t.concat(n(e)) : t 
                } 
            }, 
            857: function(e, t, n) { 
                var r = n(7854); 
                e.exports = r 
            }, 
            2248: function(e, t, n) { 
                var r = n(1320); 
                e.exports = function(e, t, n) { 
                    for (var i in t) 
                        r(e, i, t[i], n); 
                    return e 
                } 
            }, 
            1320: function(e, t, n) { 
                var r = n(7854) 
                  , i = n(8880) 
                  , o = n(6656) 
                  , a = n(3505) 
                  , u = n(2788) 
                  , s = n(9909) 
                  , l = s.get 
                  , c = s.enforce 
                  , f = String(String).split("String"); 
                (e.exports = function(e, t, n, u) { 
                    var s, l = !!u && !!u.unsafe, p = !!u && !!u.enumerable, h = !!u && !!u.noTargetGet; 
                    "function" == typeof n && ("string" != typeof t || o(n, "name") || i(n, "name", t), 
                    (s = c(n)).source || (s.source = f.join("string" == typeof t ? t : ""))), 
                    e !== r ? (l ? !h && e[t] && (p = !0) : delete e[t], 
                    p ? e[t] = n : i(e, t, n)) : p ? e[t] = n : a(t, n) 
                } 
                )(Function.prototype, "toString", (function() { 
                    return "function" == typeof this && l(this).source || u(this) 
                } 
                )) 
            }, 
            7651: function(e, t, n) { 
                var r = n(4326) 
                  , i = n(2261); 
                e.exports = function(e, t) { 
                    var n = e.exec; 
                    if ("function" == typeof n) { 
                        var o = n.call(e, t); 
                        if ("object" != typeof o) 
                            throw TypeError("RegExp exec method returned something other than an Object or null"); 
                        return o 
                    } 
                    if ("RegExp" !== r(e)) 
                        throw TypeError("RegExp#exec called on incompatible receiver"); 
                    return i.call(e, t) 
                } 
            }, 
            2261: function(e, t, n) { 
                "use strict"; 
                var r, i, o = n(7066), a = n(2999), u = RegExp.prototype.exec, s = String.prototype.replace, l = u, c = (r = /a/, 
                i = /b*/g, 
                u.call(r, "a"), 
                u.call(i, "a"), 
                0 !== r.lastIndex || 0 !== i.lastIndex), f = a.UNSUPPORTED_Y || a.BROKEN_CARET, p = void 0 !== /()??/.exec("")[1]; 
                (c || p || f) && (l = function(e) { 
                    var t, n, r, i, a = this, l = f && a.sticky, h = o.call(a), d = a.source, v = 0, y = e; 
                    return l && (-1 === (h = h.replace("y", "")).indexOf("g") && (h += "g"), 
                    y = String(e).slice(a.lastIndex), 
                    a.lastIndex > 0 && (!a.multiline || a.multiline && "
" !== e[a.lastIndex - 1]) && (d = "(?: " + d + ")", 
                    y = " " + y, 
                    v++), 
                    n = new RegExp("^(?:" + d + ")",h)), 
                    p && (n = new RegExp("^" + d + "$(?!\s)",h)), 
                    c && (t = a.lastIndex), 
                    r = u.call(l ? n : a, y), 
                    l ? r ? (r.input = r.input.slice(v), 
                    r[0] = r[0].slice(v), 
                    r.index = a.lastIndex, 
                    a.lastIndex += r[0].length) : a.lastIndex = 0 : c && r && (a.lastIndex = a.global ? r.index + r[0].length : t), 
                    p && r && r.length > 1 && s.call(r[0], n, (function() { 
                        for (i = 1; i < arguments.length - 2; i++) 
                            void 0 === arguments[i] && (r[i] = void 0) 
                    } 
                    )), 
                    r 
                } 
                ), 
                e.exports = l 
            }, 
            7066: function(e, t, n) { 
                "use strict"; 
                var r = n(9670); 
                e.exports = function() { 
                    var e = r(this) 
                      , t = ""; 
                    return e.global && (t += "g"), 
                    e.ignoreCase && (t += "i"), 
                    e.multiline && (t += "m"), 
                    e.dotAll && (t += "s"), 
                    e.unicode && (t += "u"), 
                    e.sticky && (t += "y"), 
                    t 
                } 
            }, 
            2999: function(e, t, n) { 
                "use strict"; 
                var r = n(7293); 
                function i(e, t) { 
                    return RegExp(e, t) 
                } 
                t.UNSUPPORTED_Y = r((function() { 
                    var e = i("a", "y"); 
                    return e.lastIndex = 2, 
                    null != e.exec("abcd") 
                } 
                )), 
                t.BROKEN_CARET = r((function() { 
                    var e = i("^r", "gy"); 
                    return e.lastIndex = 2, 
                    null != e.exec("str") 
                } 
                )) 
            }, 
            4488: function(e) { 
                e.exports = function(e) { 
                    if (null == e) 
                        throw TypeError("Can't call method on " + e); 
                    return e 
                } 
            }, 
            3505: function(e, t, n) { 
                var r = n(7854) 
                  , i = n(8880); 
                e.exports = function(e, t) { 
                    try { 
                        i(r, e, t) 
                    } catch (n) { 
                        r[e] = t 
                    } 
                    return t 
                } 
            }, 
            6340: function(e, t, n) { 
                "use strict"; 
                var r = n(5005) 
                  , i = n(3070) 
                  , o = n(5112) 
                  , a = n(9781) 
                  , u = o("species"); 
                e.exports = function(e) { 
                    var t = r(e) 
                      , n = i.f; 
                    a && t && !t[u] && n(t, u, { 
                        configurable: !0, 
                        get: function() { 
                            return this 
                        } 
                    }) 
                } 
            }, 
            8003: function(e, t, n) { 
                var r = n(3070).f 
                  , i = n(6656) 
                  , o = n(5112)("toStringTag"); 
                e.exports = function(e, t, n) { 
                    e && !i(e = n ? e : e.prototype, o) && r(e, o, { 
                        configurable: !0, 
                        value: t 
                    }) 
                } 
            }, 
            6200: function(e, t, n) { 
                var r = n(2309) 
                  , i = n(9711) 
                  , o = r("keys"); 
                e.exports = function(e) { 
                    return o[e] || (o[e] = i(e)) 
                } 
            }, 
            5465: function(e, t, n) { 
                var r = n(7854) 
                  , i = n(3505) 
                  , o = "__core-js_shared__" 
                  , a = r[o] || i(o, {}); 
                e.exports = a 
            }, 
            2309: function(e, t, n) { 
                var r = n(1913) 
                  , i = n(5465); 
                (e.exports = function(e, t) { 
                    return i[e] || (i[e] = void 0 !== t ? t : {}) 
                } 
                )("versions", []).push({ 
                    version: "3.9.0", 
                    mode: r ? "pure" : "global", 
                    copyright: " 2021 Denis Pushkarev (zloirock.ru)" 
                }) 
            }, 
            6707: function(e, t, n) { 
                var r = n(9670) 
                  , i = n(3099) 
                  , o = n(5112)("species"); 
                e.exports = function(e, t) { 
                    var n, a = r(e).constructor; 
                    return void 0 === a || null == (n = r(a)[o]) ? t : i(n) 
                } 
            }, 
            8710: function(e, t, n) { 
                var r = n(9958) 
                  , i = n(4488) 
                  , o = function(e) { 
                    return function(t, n) { 
                        var o, a, u = String(i(t)), s = r(n), l = u.length; 
                        return s < 0 || s >= l ? e ? "" : void 0 : (o = u.charCodeAt(s)) < 55296 || o > 56319 || s + 1 === l || (a = u.charCodeAt(s + 1)) < 56320 || a > 57343 ? e ? u.charAt(s) : o : e ? u.slice(s, s + 2) : a - 56320 + (o - 55296 << 10) + 65536 
                    } 
                }; 
                e.exports = { 
                    codeAt: o(!1), 
                    charAt: o(!0) 
                } 
            }, 
            3197: function(e) { 
                "use strict"; 
                var t = 2147483647 
                  , n = /[^-~]/ 
                  , r = /[.]/g 
                  , i = "Overflow: input needs wider integers to process" 
                  , o = Math.floor 
                  , a = String.fromCharCode 
                  , u = function(e) { 
                    return e + 22 + 75 * (e < 26) 
                } 
                  , s = function(e, t, n) { 
                    var r = 0; 
                    for (e = n ? o(e / 700) : e >> 1, 
                    e += o(e / t); e > 455; r += 36) 
                        e = o(e / 35); 
                    return o(r + 36 * e / (e + 38)) 
                } 
                  , l = function(e) { 
                    var n, r, l = [], c = (e = function(e) { 
                        for (var t = [], n = 0, r = e.length; n < r; ) { 
                            var i = e.charCodeAt(n++); 
                            if (i >= 55296 && i <= 56319 && n < r) { 
                                var o = e.charCodeAt(n++); 
                                56320 == (64512 & o) ? t.push(((1023 & i) << 10) + (1023 & o) + 65536) : (t.push(i), 
                                n--) 
                            } else 
                                t.push(i) 
                        } 
                        return t 
                    }(e)).length, f = 128, p = 0, h = 72; 
                    for (n = 0; n < e.length; n++) 
                        (r = e[n]) < 128 && l.push(a(r)); 
                    var d = l.length 
                      , v = d; 
                    for (d && l.push("-"); v < c; ) { 
                        var y = t; 
                        for (n = 0; n < e.length; n++) 
                            (r = e[n]) >= f && r < y && (y = r); 
                        var g = v + 1; 
                        if (y - f > o((t - p) / g)) 
                            throw RangeError(i); 
                        for (p += (y - f) * g, 
                        f = y, 
                        n = 0; n < e.length; n++) { 
                            if ((r = e[n]) < f && ++p > t) 
                                throw RangeError(i); 
                            if (r == f) { 
                                for (var m = p, b = 36; ; b += 36) { 
                                    var x = b <= h ? 1 : b >= h + 26 ? 26 : b - h; 
                                    if (m < x) 
                                        break; 
                                    var w = m - x 
                                      , E = 36 - x; 
                                    l.push(a(u(x + w % E))), 
                                    m = o(w / E) 
                                } 
                                l.push(a(u(m))), 
                                h = s(p, g, v == d), 
                                p = 0, 
                                ++v 
                            } 
                        } 
                        ++p, 
                        ++f 
                    } 
                    return l.join("") 
                }; 
                e.exports = function(e) { 
                    var t, i, o = [], a = e.toLowerCase().replace(r, ".").split("."); 
                    for (t = 0; t < a.length; t++) 
                        i = a[t], 
                        o.push(n.test(i) ? "xn--" + l(i) : i); 
                    return o.join(".") 
                } 
            }, 
            6091: function(e, t, n) { 
                var r = n(7293) 
                  , i = n(1361); 
                e.exports = function(e) { 
                    return r((function() { 
                        return !!i[e]() || "" != ""[e]() || i[e].name !== e 
                    } 
                    )) 
                } 
            }, 
            3111: function(e, t, n) { 
                var r = n(4488) 
                  , i = "[" + n(1361) + "]" 
                  , o = RegExp("^" + i + i + "*") 
                  , a = RegExp(i + i + "*$") 
                  , u = function(e) { 
                    return function(t) { 
                        var n = String(r(t)); 
                        return 1 & e && (n = n.replace(o, "")), 
                        2 & e && (n = n.replace(a, "")), 
                        n 
                    } 
                }; 
                e.exports = { 
                    start: u(1), 
                    end: u(2), 
                    trim: u(3) 
                } 
            }, 
            1400: function(e, t, n) { 
                var r = n(9958) 
                  , i = Math.max 
                  , o = Math.min; 
                e.exports = function(e, t) { 
                    var n = r(e); 
                    return n < 0 ? i(n + t, 0) : o(n, t) 
                } 
            }, 
            7067: function(e, t, n) { 
                var r = n(9958) 
                  , i = n(7466); 
                e.exports = function(e) { 
                    if (void 0 === e) 
                        return 0; 
                    var t = r(e) 
                      , n = i(t); 
                    if (t !== n) 
                        throw RangeError("Wrong length or index"); 
                    return n 
                } 
            }, 
            5656: function(e, t, n) { 
                var r = n(8361) 
                  , i = n(4488); 
                e.exports = function(e) { 
                    return r(i(e)) 
                } 
            }, 
            9958: function(e) { 
                var t = Math.ceil 
                  , n = Math.floor; 
                e.exports = function(e) { 
                    return isNaN(e = +e) ? 0 : (e > 0 ? n : t)(e) 
                } 
            }, 
            7466: function(e, t, n) { 
                var r = n(9958) 
                  , i = Math.min; 
                e.exports = function(e) { 
                    return e > 0 ? i(r(e), 9007199254740991) : 0 
                } 
            }, 
            7908: function(e, t, n) { 
                var r = n(4488); 
                e.exports = function(e) { 
                    return Object(r(e)) 
                } 
            }, 
            4590: function(e, t, n) { 
                var r = n(3002); 
                e.exports = function(e, t) { 
                    var n = r(e); 
                    if (n % t) 
                        throw RangeError("Wrong offset"); 
                    return n 
                } 
            }, 
            3002: function(e, t, n) { 
                var r = n(9958); 
                e.exports = function(e) { 
                    var t = r(e); 
                    if (t < 0) 
                        throw RangeError("The argument can't be less than 0"); 
                    return t 
                } 
            }, 
            7593: function(e, t, n) { 
                var r = n(111); 
                e.exports = function(e, t) { 
                    if (!r(e)) 
                        return e; 
                    var n, i; 
                    if (t && "function" == typeof (n = e.toString) && !r(i = n.call(e))) 
                        return i; 
                    if ("function" == typeof (n = e.valueOf) && !r(i = n.call(e))) 
                        return i; 
                    if (!t && "function" == typeof (n = e.toString) && !r(i = n.call(e))) 
                        return i; 
                    throw TypeError("Can't convert object to primitive value") 
                } 
            }, 
            1694: function(e, t, n) { 
                var r = {}; 
                r[n(5112)("toStringTag")] = "z", 
                e.exports = "[object z]" === String(r) 
            }, 
            9843: function(e, t, n) { 
                "use strict"; 
                var r = n(2109) 
                  , i = n(7854) 
                  , o = n(9781) 
                  , a = n(3832) 
                  , u = n(260) 
                  , s = n(3331) 
                  , l = n(5787) 
                  , c = n(9114) 
                  , f = n(8880) 
                  , p = n(7466) 
                  , h = n(7067) 
                  , d = n(4590) 
                  , v = n(7593) 
                  , y = n(6656) 
                  , g = n(648) 
                  , m = n(111) 
                  , b = n(30) 
                  , x = n(7674) 
                  , w = n(8006).f 
                  , E = n(7321) 
                  , k = n(2092).forEach 
                  , A = n(6340) 
                  , S = n(3070) 
                  , F = n(1236) 
                  , T = n(9909) 
                  , C = n(9587) 
                  , L = T.get 
                  , R = T.set 
                  , I = S.f 
                  , U = F.f 
                  , O = Math.round 
                  , _ = i.RangeError 
                  , M = s.ArrayBuffer 
                  , z = s.DataView 
                  , P = u.NATIVE_ARRAY_BUFFER_VIEWS 
                  , j = u.TYPED_ARRAY_TAG 
                  , D = u.TypedArray 
                  , N = u.TypedArrayPrototype 
                  , B = u.aTypedArrayConstructor 
                  , q = u.isTypedArray 
                  , W = "BYTES_PER_ELEMENT" 
                  , H = "Wrong length" 
                  , Y = function(e, t) { 
                    for (var n = 0, r = t.length, i = new (B(e))(r); r > n; ) 
                        i[n] = t[n++]; 
                    return i 
                } 
                  , G = function(e, t) { 
                    I(e, t, { 
                        get: function() { 
                            return L(this)[t] 
                        } 
                    }) 
                } 
                  , Q = function(e) { 
                    var t; 
                    return e instanceof M || "ArrayBuffer" == (t = g(e)) || "SharedArrayBuffer" == t 
                } 
                  , $ = function(e, t) { 
                    return q(e) && "symbol" != typeof t && t in e && String(+t) == String(t) 
                } 
                  , V = function(e, t) { 
                    return $(e, t = v(t, !0)) ? c(2, e[t]) : U(e, t) 
                } 
                  , X = function(e, t, n) { 
                    return !($(e, t = v(t, !0)) && m(n) && y(n, "value")) || y(n, "get") || y(n, "set") || n.configurable || y(n, "writable") && !n.writable || y(n, "enumerable") && !n.enumerable ? I(e, t, n) : (e[t] = n.value, 
                    e) 
                }; 
                o ? (P || (F.f = V, 
                S.f = X, 
                G(N, "buffer"), 
                G(N, "byteOffset"), 
                G(N, "byteLength"), 
                G(N, "length")), 
                r({ 
                    target: "Object", 
                    stat: !0, 
                    forced: !P 
                }, { 
                    getOwnPropertyDescriptor: V, 
                    defineProperty: X 
                }), 
                e.exports = function(e, t, n) { 
                    var o = e.match(/\d+$/)[0] / 8 
                      , u = e + (n ? "Clamped" : "") + "Array" 
                      , s = "get" + e 
                      , c = "set" + e 
                      , v = i[u] 
                      , y = v 
                      , g = y && y.prototype 
                      , S = {} 
                      , F = function(e, t) { 
                        I(e, t, { 
                            get: function() { 
                                return function(e, t) { 
                                    var n = L(e); 
                                    return n.view[s](t * o + n.byteOffset, !0) 
                                }(this, t) 
                            }, 
                            set: function(e) { 
                                return function(e, t, r) { 
                                    var i = L(e); 
                                    n && (r = (r = O(r)) < 0 ? 0 : r > 255 ? 255 : 255 & r), 
                                    i.view[c](t * o + i.byteOffset, r, !0) 
                                }(this, t, e) 
                            }, 
                            enumerable: !0 
                        }) 
                    }; 
                    P ? a && (y = t((function(e, t, n, r) { 
                        return l(e, y, u), 
                        C(m(t) ? Q(t) ? void 0 !== r ? new v(t,d(n, o),r) : void 0 !== n ? new v(t,d(n, o)) : new v(t) : q(t) ? Y(y, t) : E.call(y, t) : new v(h(t)), e, y) 
                    } 
                    )), 
                    x && x(y, D), 
                    k(w(v), (function(e) { 
                        e in y || f(y, e, v[e]) 
                    } 
                    )), 
                    y.prototype = g) : (y = t((function(e, t, n, r) { 
                        l(e, y, u); 
                        var i, a, s, c = 0, f = 0; 
                        if (m(t)) { 
                            if (!Q(t)) 
                                return q(t) ? Y(y, t) : E.call(y, t); 
                            i = t, 
                            f = d(n, o); 
                            var v = t.byteLength; 
                            if (void 0 === r) { 
                                if (v % o) 
                                    throw _(H); 
                                if ((a = v - f) < 0) 
                                    throw _(H) 
                            } else if ((a = p(r) * o) + f > v) 
                                throw _(H); 
                            s = a / o 
                        } else 
                            s = h(t), 
                            i = new M(a = s * o); 
                        for (R(e, { 
                            buffer: i, 
                            byteOffset: f, 
                            byteLength: a, 
                            length: s, 
                            view: new z(i) 
                        }); c < s; ) 
                            F(e, c++) 
                    } 
                    )), 
                    x && x(y, D), 
                    g = y.prototype = b(N)), 
                    g.constructor !== y && f(g, "constructor", y), 
                    j && f(g, j, u), 
                    S[u] = y, 
                    r({ 
                        global: !0, 
                        forced: y != v, 
                        sham: !P 
                    }, S), 
                    W in y || f(y, W, o), 
                    W in g || f(g, W, o), 
                    A(u) 
                } 
                ) : e.exports = function() {} 
            }, 
            3832: function(e, t, n) { 
                var r = n(7854) 
                  , i = n(7293) 
                  , o = n(7072) 
                  , a = n(260).NATIVE_ARRAY_BUFFER_VIEWS 
                  , u = r.ArrayBuffer 
                  , s = r.Int8Array; 
                e.exports = !a || !i((function() { 
                    s(1) 
                } 
                )) || !i((function() { 
                    new s(-1) 
                } 
                )) || !o((function(e) { 
                    new s, 
                    new s(null), 
                    new s(1.5), 
                    new s(e) 
                } 
                ), !0) || i((function() { 
                    return 1 !== new s(new u(2),1,void 0).length 
                } 
                )) 
            }, 
            3074: function(e, t, n) { 
                var r = n(260).aTypedArrayConstructor 
                  , i = n(6707); 
                e.exports = function(e, t) { 
                    for (var n = i(e, e.constructor), o = 0, a = t.length, u = new (r(n))(a); a > o; ) 
                        u[o] = t[o++]; 
                    return u 
                } 
            }, 
            7321: function(e, t, n) { 
                var r = n(7908) 
                  , i = n(7466) 
                  , o = n(1246) 
                  , a = n(7659) 
                  , u = n(9974) 
                  , s = n(260).aTypedArrayConstructor; 
                e.exports = function(e) { 
                    var t, n, l, c, f, p, h = r(e), d = arguments.length, v = d > 1 ? arguments[1] : void 0, y = void 0 !== v, g = o(h); 
                    if (null != g && !a(g)) 
                        for (p = (f = g.call(h)).next, 
                        h = []; !(c = p.call(f)).done; ) 
                            h.push(c.value); 
                    for (y && d > 2 && (v = u(v, arguments[2], 2)), 
                    n = i(h.length), 
                    l = new (s(this))(n), 
                    t = 0; n > t; t++) 
                        l[t] = y ? v(h[t], t) : h[t]; 
                    return l 
                } 
            }, 
            9711: function(e) { 
                var t = 0 
                  , n = Math.random(); 
                e.exports = function(e) { 
                    return "Symbol(" + String(void 0 === e ? "" : e) + ")_" + (++t + n).toString(36) 
                } 
            }, 
            3307: function(e, t, n) { 
                var r = n(133); 
                e.exports = r && !Symbol.sham && "symbol" == typeof Symbol.iterator 
            }, 
            5112: function(e, t, n) { 
                var r = n(7854) 
                  , i = n(2309) 
                  , o = n(6656) 
                  , a = n(9711) 
                  , u = n(133) 
                  , s = n(3307) 
                  , l = i("wks") 
                  , c = r.Symbol 
                  , f = s ? c : c && c.withoutSetter || a; 
                e.exports = function(e) { 
                    return o(l, e) || (u && o(c, e) ? l[e] = c[e] : l[e] = f("Symbol." + e)), 
                    l[e] 
                } 
            }, 
            1361: function(e) { 
                e.exports = "	

 " 
            }, 
            8264: function(e, t, n) { 
                "use strict"; 
                var r = n(2109) 
                  , i = n(7854) 
                  , o = n(3331) 
                  , a = n(6340) 
                  , u = o.ArrayBuffer; 
                r({ 
                    global: !0, 
                    forced: i.ArrayBuffer !== u 
                }, { 
                    ArrayBuffer: u 
                }), 
                a("ArrayBuffer") 
            }, 
            2222: function(e, t, n) { 
                "use strict"; 
                var r = n(2109) 
                  , i = n(7293) 
                  , o = n(3157) 
                  , a = n(111) 
                  , u = n(7908) 
                  , s = n(7466) 
                  , l = n(6135) 
                  , c = n(5417) 
                  , f = n(1194) 
                  , p = n(5112) 
                  , h = n(7392) 
                  , d = p("isConcatSpreadable") 
                  , v = 9007199254740991 
                  , y = "Maximum allowed index exceeded" 
                  , g = h >= 51 || !i((function() { 
                    var e = []; 
                    return e[d] = !1, 
                    e.concat()[0] !== e 
                } 
                )) 
                  , m = f("concat") 
                  , b = function(e) { 
                    if (!a(e)) 
                        return !1; 
                    var t = e[d]; 
                    return void 0 !== t ? !!t : o(e) 
                }; 
                r({ 
                    target: "Array", 
                    proto: !0, 
                    forced: !g || !m 
                }, { 
                    concat: function(e) { 
                        var t, n, r, i, o, a = u(this), f = c(a, 0), p = 0; 
                        for (t = -1, 
                        r = arguments.length; t < r; t++) 
                            if (b(o = -1 === t ? a : arguments[t])) { 
                                if (p + (i = s(o.length)) > v) 
                                    throw TypeError(y); 
                                for (n = 0; n < i; n++, 
                                p++) 
                                    n in o && l(f, p, o[n]) 
                            } else { 
                                if (p >= v) 
                                    throw TypeError(y); 
                                l(f, p++, o) 
                            } 
                        return f.length = p, 
                        f 
                    } 
                }) 
            }, 
            7327: function(e, t, n) { 
                "use strict"; 
                var r = n(2109) 
                  , i = n(2092).filter; 
                r({ 
                    target: "Array", 
                    proto: !0, 
                    forced: !n(1194)("filter") 
                }, { 
                    filter: function(e) { 
                        return i(this, e, arguments.length > 1 ? arguments[1] : void 0) 
                    } 
                }) 
            }, 
            2772: function(e, t, n) { 
                "use strict"; 
                var r = n(2109) 
                  , i = n(1318).indexOf 
                  , o = n(9341) 
                  , a = [].indexOf 
                  , u = !!a && 1 / [1].indexOf(1, -0) < 0 
                  , s = o("indexOf"); 
                r({ 
                    target: "Array", 
                    proto: !0, 
                    forced: u || !s 
                }, { 
                    indexOf: function(e) { 
                        return u ? a.apply(this, arguments) || 0 : i(this, e, arguments.length > 1 ? arguments[1] : void 0) 
                    } 
                }) 
            }, 
            6992: function(e, t, n) { 
                "use strict"; 
                var r = n(5656) 
                  , i = n(1223) 
                  , o = n(7497) 
                  , a = n(9909) 
                  , u = n(654) 
                  , s = "Array Iterator" 
                  , l = a.set 
                  , c = a.getterFor(s); 
                e.exports = u(Array, "Array", (function(e, t) { 
                    l(this, { 
                        type: s, 
                        target: r(e), 
                        index: 0, 
                        kind: t 
                    }) 
                } 
                ), (function() { 
                    var e = c(this) 
                      , t = e.target 
                      , n = e.kind 
                      , r = e.index++; 
                    return !t || r >= t.length ? (e.target = void 0, 
                    { 
                        value: void 0, 
                        done: !0 
                    }) : "keys" == n ? { 
                        value: r, 
                        done: !1 
                    } : "values" == n ? { 
                        value: t[r], 
                        done: !1 
                    } : { 
                        value: [r, t[r]], 
                        done: !1 
                    } 
                } 
                ), "values"), 
                o.Arguments = o.Array, 
                i("keys"), 
                i("values"), 
                i("entries") 
            }, 
            1249: function(e, t, n) { 
                "use strict"; 
                var r = n(2109) 
                  , i = n(2092).map; 
                r({ 
                    target: "Array", 
                    proto: !0, 
                    forced: !n(1194)("map") 
                }, { 
                    map: function(e) { 
                        return i(this, e, arguments.length > 1 ? arguments[1] : void 0) 
                    } 
                }) 
            }, 
            7042: function(e, t, n) { 
                "use strict"; 
                var r = n(2109) 
                  , i = n(111) 
                  , o = n(3157) 
                  , a = n(1400) 
                  , u = n(7466) 
                  , s = n(5656) 
                  , l = n(6135) 
                  , c = n(5112) 
                  , f = n(1194)("slice") 
                  , p = c("species") 
                  , h = [].slice 
                  , d = Math.max; 
                r({ 
                    target: "Array", 
                    proto: !0, 
                    forced: !f 
                }, { 
                    slice: function(e, t) { 
                        var n, r, c, f = s(this), v = u(f.length), y = a(e, v), g = a(void 0 === t ? v : t, v); 
                        if (o(f) && ("function" != typeof (n = f.constructor) || n !== Array && !o(n.prototype) ? i(n) && null === (n = n[p]) && (n = void 0) : n = void 0, 
                        n === Array || void 0 === n)) 
                            return h.call(f, y, g); 
                        for (r = new (void 0 === n ? Array : n)(d(g - y, 0)), 
                        c = 0; y < g; y++, 
                        c++) 
                            y in f && l(r, c, f[y]); 
                        return r.length = c, 
                        r 
                    } 
                }) 
            }, 
            561: function(e, t, n) { 
                "use strict"; 
                var r = n(2109) 
                  , i = n(1400) 
                  , o = n(9958) 
                  , a = n(7466) 
                  , u = n(7908) 
                  , s = n(5417) 
                  , l = n(6135) 
                  , c = n(1194)("splice") 
                  , f = Math.max 
                  , p = Math.min 
                  , h = 9007199254740991 
                  , d = "Maximum allowed length exceeded"; 
                r({ 
                    target: "Array", 
                    proto: !0, 
                    forced: !c 
                }, { 
                    splice: function(e, t) { 
                        var n, r, c, v, y, g, m = u(this), b = a(m.length), x = i(e, b), w = arguments.length; 
                        if (0 === w ? n = r = 0 : 1 === w ? (n = 0, 
                        r = b - x) : (n = w - 2, 
                        r = p(f(o(t), 0), b - x)), 
                        b + n - r > h) 
                            throw TypeError(d); 
                        for (c = s(m, r), 
                        v = 0; v < r; v++) 
                            (y = x + v)in m && l(c, v, m[y]); 
                        if (c.length = r, 
                        n < r) { 
                            for (v = x; v < b - r; v++) 
                                g = v + n, 
                                (y = v + r)in m ? m[g] = m[y] : delete m[g]; 
                            for (v = b; v > b - r + n; v--) 
                                delete m[v - 1] 
                        } else if (n > r) 
                            for (v = b - r; v > x; v--) 
                                g = v + n - 1, 
                                (y = v + r - 1)in m ? m[g] = m[y] : delete m[g]; 
                        for (v = 0; v < n; v++) 
                            m[v + x] = arguments[v + 2]; 
                        return m.length = b - r + n, 
                        c 
                    } 
                }) 
            }, 
            8309: function(e, t, n) { 
                var r = n(9781) 
                  , i = n(3070).f 
                  , o = Function.prototype 
                  , a = o.toString 
                  , u = /^\s*function ([^ (]*)/ 
                  , s = "name"; 
                r && !(s in o) && i(o, s, { 
                    configurable: !0, 
                    get: function() { 
                        try { 
                            return a.call(this).match(u)[1] 
                        } catch (e) { 
                            return "" 
                        } 
                    } 
                }) 
            }, 
            489: function(e, t, n) { 
                var r = n(2109) 
                  , i = n(7293) 
                  , o = n(7908) 
                  , a = n(9518) 
                  , u = n(8544); 
                r({ 
                    target: "Object", 
                    stat: !0, 
                    forced: i((function() { 
                        a(1) 
                    } 
                    )), 
                    sham: !u 
                }, { 
                    getPrototypeOf: function(e) { 
                        return a(o(e)) 
                    } 
                }) 
            }, 
            1539: function(e, t, n) { 
                var r = n(1694) 
                  , i = n(1320) 
                  , o = n(288); 
                r || i(Object.prototype, "toString", o, { 
                    unsafe: !0 
                }) 
            }, 
            4916: function(e, t, n) { 
                "use strict"; 
                var r = n(2109) 
                  , i = n(2261); 
                r({ 
                    target: "RegExp", 
                    proto: !0, 
                    forced: /./.exec !== i 
                }, { 
                    exec: i 
                }) 
            }, 
            9714: function(e, t, n) { 
                "use strict"; 
                var r = n(1320) 
                  , i = n(9670) 
                  , o = n(7293) 
                  , a = n(7066) 
                  , u = "toString" 
                  , s = RegExp.prototype 
                  , l = s.toString 
                  , c = o((function() { 
                    return "/a/b" != l.call({ 
                        source: "a", 
                        flags: "b" 
                    }) 
                } 
                )) 
                  , f = l.name != u; 
                (c || f) && r(RegExp.prototype, u, (function() { 
                    var e = i(this) 
                      , t = String(e.source) 
                      , n = e.flags; 
                    return "/" + t + "/" + String(void 0 === n && e instanceof RegExp && !("flags"in s) ? a.call(e) : n) 
                } 
                ), { 
                    unsafe: !0 
                }) 
            }, 
            8783: function(e, t, n) { 
                "use strict"; 
                var r = n(8710).charAt 
                  , i = n(9909) 
                  , o = n(654) 
                  , a = "String Iterator" 
                  , u = i.set 
                  , s = i.getterFor(a); 
                o(String, "String", (function(e) { 
                    u(this, { 
                        type: a, 
                        string: String(e), 
                        index: 0 
                    }) 
                } 
                ), (function() { 
                    var e, t = s(this), n = t.string, i = t.index; 
                    return i >= n.length ? { 
                        value: void 0, 
                        done: !0 
                    } : (e = r(n, i), 
                    t.index += e.length, 
                    { 
                        value: e, 
                        done: !1 
                    }) 
                } 
                )) 
            }, 
            4723: function(e, t, n) { 
                "use strict"; 
                var r = n(7007) 
                  , i = n(9670) 
                  , o = n(7466) 
                  , a = n(4488) 
                  , u = n(1530) 
                  , s = n(7651); 
                r("match", 1, (function(e, t, n) { 
                    return [function(t) { 
                        var n = a(this) 
                          , r = null == t ? void 0 : t[e]; 
                        return void 0 !== r ? r.call(t, n) : new RegExp(t)[e](String(n)) 
                    } 
                    , function(e) { 
                        var r = n(t, e, this); 
                        if (r.done) 
                            return r.value; 
                        var a = i(e) 
                          , l = String(this); 
                        if (!a.global) 
                            return s(a, l); 
                        var c = a.unicode; 
                        a.lastIndex = 0; 
                        for (var f, p = [], h = 0; null !== (f = s(a, l)); ) { 
                            var d = String(f[0]); 
                            p[h] = d, 
                            "" === d && (a.lastIndex = u(l, o(a.lastIndex), c)), 
                            h++ 
                        } 
                        return 0 === h ? null : p 
                    } 
                    ] 
                } 
                )) 
            }, 
            5306: function(e, t, n) { 
                "use strict"; 
                var r = n(7007) 
                  , i = n(9670) 
                  , o = n(7466) 
                  , a = n(9958) 
                  , u = n(4488) 
                  , s = n(1530) 
                  , l = n(647) 
                  , c = n(7651) 
                  , f = Math.max 
                  , p = Math.min; 
                r("replace", 2, (function(e, t, n, r) { 
                    var h = r.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE 
                      , d = r.REPLACE_KEEPS_$0 
                      , v = h ? "$" : "$0"; 
                    return [function(n, r) { 
                        var i = u(this) 
                          , o = null == n ? void 0 : n[e]; 
                        return void 0 !== o ? o.call(n, i, r) : t.call(String(i), n, r) 
                    } 
                    , function(e, r) { 
                        if (!h && d || "string" == typeof r && -1 === r.indexOf(v)) { 
                            var u = n(t, e, this, r); 
                            if (u.done) 
                                return u.value 
                        } 
                        var y = i(e) 
                          , g = String(this) 
                          , m = "function" == typeof r; 
                        m || (r = String(r)); 
                        var b = y.global; 
                        if (b) { 
                            var x = y.unicode; 
                            y.lastIndex = 0 
                        } 
                        for (var w = []; ; ) { 
                            var E = c(y, g); 
                            if (null === E) 
                                break; 
                            if (w.push(E), 
                            !b) 
                                break; 
                            "" === String(E[0]) && (y.lastIndex = s(g, o(y.lastIndex), x)) 
                        } 
                        for (var k, A = "", S = 0, F = 0; F < w.length; F++) { 
                            E = w[F]; 
                            for (var T = String(E[0]), C = f(p(a(E.index), g.length), 0), L = [], R = 1; R < E.length; R++) 
                                L.push(void 0 === (k = E[R]) ? k : String(k)); 
                            var I = E.groups; 
                            if (m) { 
                                var U = [T].concat(L, C, g); 
                                void 0 !== I && U.push(I); 
                                var O = String(r.apply(void 0, U)) 
                            } else 
                                O = l(T, g, C, L, I, r); 
                            C >= S && (A += g.slice(S, C) + O, 
                            S = C + T.length) 
                        } 
                        return A + g.slice(S) 
                    } 
                    ] 
                } 
                )) 
            }, 
            3123: function(e, t, n) { 
                "use strict"; 
                var r = n(7007) 
                  , i = n(7850) 
                  , o = n(9670) 
                  , a = n(4488) 
                  , u = n(6707) 
                  , s = n(1530) 
                  , l = n(7466) 
                  , c = n(7651) 
                  , f = n(2261) 
                  , p = n(7293) 
                  , h = [].push 
                  , d = Math.min 
                  , v = 4294967295 
                  , y = !p((function() { 
                    return !RegExp(v, "y") 
                } 
                )); 
                r("split", 2, (function(e, t, n) { 
                    var r; 
                    return r = "c" == "abbc".split(/(b)*/)[1] || 4 != "test".split(/(?:)/, -1).length || 2 != "ab".split(/(?:ab)*/).length || 4 != ".".split(/(.?)(.?)/).length || ".".split(/()()/).length > 1 || "".split(/.?/).length ? function(e, n) { 
                        var r = String(a(this)) 
                          , o = void 0 === n ? v : n >>> 0; 
                        if (0 === o) 
                            return []; 
                        if (void 0 === e) 
                            return [r]; 
                        if (!i(e)) 
                            return t.call(r, e, o); 
                        for (var u, s, l, c = [], p = (e.ignoreCase ? "i" : "") + (e.multiline ? "m" : "") + (e.unicode ? "u" : "") + (e.sticky ? "y" : ""), d = 0, y = new RegExp(e.source,p + "g"); (u = f.call(y, r)) && !((s = y.lastIndex) > d && (c.push(r.slice(d, u.index)), 
                        u.length > 1 && u.index < r.length && h.apply(c, u.slice(1)), 
                        l = u[0].length, 
                        d = s, 
                        c.length >= o)); ) 
                            y.lastIndex === u.index && y.lastIndex++; 
                        return d === r.length ? !l && y.test("") || c.push("") : c.push(r.slice(d)), 
                        c.length > o ? c.slice(0, o) : c 
                    } 
                    : "0".split(void 0, 0).length ? function(e, n) { 
                        return void 0 === e && 0 === n ? [] : t.call(this, e, n) 
                    } 
                    : t, 
                    [function(t, n) { 
                        var i = a(this) 
                          , o = null == t ? void 0 : t[e]; 
                        return void 0 !== o ? o.call(t, i, n) : r.call(String(i), t, n) 
                    } 
                    , function(e, i) { 
                        var a = n(r, e, this, i, r !== t); 
                        if (a.done) 
                            return a.value; 
                        var f = o(e) 
                          , p = String(this) 
                          , h = u(f, RegExp) 
                          , g = f.unicode 
                          , m = (f.ignoreCase ? "i" : "") + (f.multiline ? "m" : "") + (f.unicode ? "u" : "") + (y ? "y" : "g") 
                          , b = new h(y ? f : "^(?:" + f.source + ")",m) 
                          , x = void 0 === i ? v : i >>> 0; 
                        if (0 === x) 
                            return []; 
                        if (0 === p.length) 
                            return null === c(b, p) ? [p] : []; 
                        fo