/*!
 * Bootstrap v3.3.7 (http://getbootstrap.com)
 * Copyright 2011-2016 Twitter, Inc.
 * Licensed under the MIT license
 */
if ("undefined" == typeof jQuery)
    throw new Error("Bootstrap's JavaScript requires jQuery");
+function(a) {
    "use strict";
    var b = a.fn.jquery.split(" ")[0].split(".");
    if (b[0] < 2 && b[1] < 9 || 1 == b[0] && 9 == b[1] && b[2] < 1 || b[0] > 3)
        throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4")
}(jQuery),
+function(a) {
    "use strict";
    function b() {
        var a = document.createElement("bootstrap")
          , b = {
            WebkitTransition: "webkitTransitionEnd",
            MozTransition: "transitionend",
            OTransition: "oTransitionEnd otransitionend",
            transition: "transitionend"
        };
        for (var c in b)
            if (void 0 !== a.style[c])
                return {
                    end: b[c]
                };
        return !1
    }
    a.fn.emulateTransitionEnd = function(b) {
        var c = !1
          , d = this;
        a(this).one("bsTransitionEnd", function() {
            c = !0
        });
        var e = function() {
            c || a(d).trigger(a.support.transition.end)
        };
        return setTimeout(e, b),
        this
    }
    ,
    a(function() {
        a.support.transition = b(),
        a.support.transition && (a.event.special.bsTransitionEnd = {
            bindType: a.support.transition.end,
            delegateType: a.support.transition.end,
            handle: function(b) {
                if (a(b.target).is(this))
                    return b.handleObj.handler.apply(this, arguments)
            }
        })
    })
}(jQuery),
+function(a) {
    "use strict";
    function b(b) {
        return this.each(function() {
            var c = a(this)
              , e = c.data("bs.alert");
            e || c.data("bs.alert", e = new d(this)),
            "string" == typeof b && e[b].call(c)
        })
    }
    var c = '[data-dismiss="alert"]'
      , d = function(b) {
        a(b).on("click", c, this.close)
    };
    d.VERSION = "3.3.7",
    d.TRANSITION_DURATION = 150,
    d.prototype.close = function(b) {
        function c() {
            g.detach().trigger("closed.bs.alert").remove()
        }
        var e = a(this)
          , f = e.attr("data-target");
        f || (f = e.attr("href"),
        f = f && f.replace(/.*(?=#[^\s]*$)/, ""));
        var g = a("#" === f ? [] : f);
        b && b.preventDefault(),
        g.length || (g = e.closest(".alert")),
        g.trigger(b = a.Event("close.bs.alert")),
        b.isDefaultPrevented() || (g.removeClass("in"),
        a.support.transition && g.hasClass("fade") ? g.one("bsTransitionEnd", c).emulateTransitionEnd(d.TRANSITION_DURATION) : c())
    }
    ;
    var e = a.fn.alert;
    a.fn.alert = b,
    a.fn.alert.Constructor = d,
    a.fn.alert.noConflict = function() {
        return a.fn.alert = e,
        this
    }
    ,
    a(document).on("click.bs.alert.data-api", c, d.prototype.close)
}(jQuery),
+function(a) {
    "use strict";
    function b(b) {
        return this.each(function() {
            var d = a(this)
              , e = d.data("bs.button")
              , f = "object" == typeof b && b;
            e || d.data("bs.button", e = new c(this,f)),
            "toggle" == b ? e.toggle() : b && e.setState(b)
        })
    }
    var c = function(b, d) {
        this.$element = a(b),
        this.options = a.extend({}, c.DEFAULTS, d),
        this.isLoading = !1
    };
    c.VERSION = "3.3.7",
    c.DEFAULTS = {
        loadingText: "loading..."
    },
    c.prototype.setState = function(b) {
        var c = "disabled"
          , d = this.$element
          , e = d.is("input") ? "val" : "html"
          , f = d.data();
        b += "Text",
        null == f.resetText && d.data("resetText", d[e]()),
        setTimeout(a.proxy(function() {
            d[e](null == f[b] ? this.options[b] : f[b]),
            "loadingText" == b ? (this.isLoading = !0,
            d.addClass(c).attr(c, c).prop(c, !0)) : this.isLoading && (this.isLoading = !1,
            d.removeClass(c).removeAttr(c).prop(c, !1))
        }, this), 0)
    }
    ,
    c.prototype.toggle = function() {
        var a = !0
          , b = this.$element.closest('[data-toggle="buttons"]');
        if (b.length) {
            var c = this.$element.find("input");
            "radio" == c.prop("type") ? (c.prop("checked") && (a = !1),
            b.find(".active").removeClass("active"),
            this.$element.addClass("active")) : "checkbox" == c.prop("type") && (c.prop("checked") !== this.$element.hasClass("active") && (a = !1),
            this.$element.toggleClass("active")),
            c.prop("checked", this.$element.hasClass("active")),
            a && c.trigger("change")
        } else
            this.$element.attr("aria-pressed", !this.$element.hasClass("active")),
            this.$element.toggleClass("active")
    }
    ;
    var d = a.fn.button;
    a.fn.button = b,
    a.fn.button.Constructor = c,
    a.fn.button.noConflict = function() {
        return a.fn.button = d,
        this
    }
    ,
    a(document).on("click.bs.button.data-api", '[data-toggle^="button"]', function(c) {
        var d = a(c.target).closest(".btn");
        b.call(d, "toggle"),
        a(c.target).is('input[type="radio"], input[type="checkbox"]') || (c.preventDefault(),
        d.is("input,button") ? d.trigger("focus") : d.find("input:visible,button:visible").first().trigger("focus"))
    }).on("focus.bs.button.data-api blur.bs.button.data-api", '[data-toggle^="button"]', function(b) {
        a(b.target).closest(".btn").toggleClass("focus", /^focus(in)?$/.test(b.type))
    })
}(jQuery),
+function(a) {
    "use strict";
    function b(b) {
        return this.each(function() {
            var d = a(this)
              , e = d.data("bs.carousel")
              , f = a.extend({}, c.DEFAULTS, d.data(), "object" == typeof b && b)
              , g = "string" == typeof b ? b : f.slide;
            e || d.data("bs.carousel", e = new c(this,f)),
            "number" == typeof b ? e.to(b) : g ? e[g]() : f.interval && e.pause().cycle()
        })
    }
    var c = function(b, c) {
        this.$element = a(b),
        this.$indicators = this.$element.find(".carousel-indicators"),
        this.options = c,
        this.paused = null,
        this.sliding = null,
        this.interval = null,
        this.$active = null,
        this.$items = null,
        this.options.keyboard && this.$element.on("keydown.bs.carousel", a.proxy(this.keydown, this)),
        "hover" == this.options.pause && !("ontouchstart"in document.documentElement) && this.$element.on("mouseenter.bs.carousel", a.proxy(this.pause, this)).on("mouseleave.bs.carousel", a.proxy(this.cycle, this))
    };
    c.VERSION = "3.3.7",
    c.TRANSITION_DURATION = 600,
    c.DEFAULTS = {
        interval: 5e3,
        pause: "hover",
        wrap: !0,
        keyboard: !0
    },
    c.prototype.keydown = function(a) {
        if (!/input|textarea/i.test(a.target.tagName)) {
            switch (a.which) {
            case 37:
                this.prev();
                break;
            case 39:
                this.next();
                break;
            default:
                return
            }
            a.preventDefault()
        }
    }
    ,
    c.prototype.cycle = function(b) {
        return b || (this.paused = !1),
        this.interval && clearInterval(this.interval),
        this.options.interval && !this.paused && (this.interval = setInterval(a.proxy(this.next, this), this.options.interval)),
        this
    }
    ,
    c.prototype.getItemIndex = function(a) {
        return this.$items = a.parent().children(".item"),
        this.$items.index(a || this.$active)
    }
    ,
    c.prototype.getItemForDirection = function(a, b) {
        var c = this.getItemIndex(b)
          , d = "prev" == a && 0 === c || "next" == a && c == this.$items.length - 1;
        if (d && !this.options.wrap)
            return b;
        var e = "prev" == a ? -1 : 1
          , f = (c + e) % this.$items.length;
        return this.$items.eq(f)
    }
    ,
    c.prototype.to = function(a) {
        var b = this
          , c = this.getItemIndex(this.$active = this.$element.find(".item.active"));
        if (!(a > this.$items.length - 1 || a < 0))
            return this.sliding ? this.$element.one("slid.bs.carousel", function() {
                b.to(a)
            }) : c == a ? this.pause().cycle() : this.slide(a > c ? "next" : "prev", this.$items.eq(a))
    }
    ,
    c.prototype.pause = function(b) {
        return b || (this.paused = !0),
        this.$element.find(".next, .prev").length && a.support.transition && (this.$element.trigger(a.support.transition.end),
        this.cycle(!0)),
        this.interval = clearInterval(this.interval),
        this
    }
    ,
    c.prototype.next = function() {
        if (!this.sliding)
            return this.slide("next")
    }
    ,
    c.prototype.prev = function() {
        if (!this.sliding)
            return this.slide("prev")
    }
    ,
    c.prototype.slide = function(b, d) {
        var e = this.$element.find(".item.active")
          , f = d || this.getItemForDirection(b, e)
          , g = this.interval
          , h = "next" == b ? "left" : "right"
          , i = this;
        if (f.hasClass("active"))
            return this.sliding = !1;
        var j = f[0]
          , k = a.Event("slide.bs.carousel", {
            relatedTarget: j,
            direction: h
        });
        if (this.$element.trigger(k),
        !k.isDefaultPrevented()) {
            if (this.sliding = !0,
            g && this.pause(),
            this.$indicators.length) {
                this.$indicators.find(".active").removeClass("active");
                var l = a(this.$indicators.children()[this.getItemIndex(f)]);
                l && l.addClass("active")
            }
            var m = a.Event("slid.bs.carousel", {
                relatedTarget: j,
                direction: h
            });
            return a.support.transition && this.$element.hasClass("slide") ? (f.addClass(b),
            f[0].offsetWidth,
            e.addClass(h),
            f.addClass(h),
            e.one("bsTransitionEnd", function() {
                f.removeClass([b, h].join(" ")).addClass("active"),
                e.removeClass(["active", h].join(" ")),
                i.sliding = !1,
                setTimeout(function() {
                    i.$element.trigger(m)
                }, 0)
            }).emulateTransitionEnd(c.TRANSITION_DURATION)) : (e.removeClass("active"),
            f.addClass("active"),
            this.sliding = !1,
            this.$element.trigger(m)),
            g && this.cycle(),
            this
        }
    }
    ;
    var d = a.fn.carousel;
    a.fn.carousel = b,
    a.fn.carousel.Constructor = c,
    a.fn.carousel.noConflict = function() {
        return a.fn.carousel = d,
        this
    }
    ;
    var e = function(c) {
        var d, e = a(this), f = a(e.attr("data-target") || (d = e.attr("href")) && d.replace(/.*(?=#[^\s]+$)/, ""));
        if (f.hasClass("carousel")) {
            var g = a.extend({}, f.data(), e.data())
              , h = e.attr("data-slide-to");
            h && (g.interval = !1),
            b.call(f, g),
            h && f.data("bs.carousel").to(h),
            c.preventDefault()
        }
    };
    a(document).on("click.bs.carousel.data-api", "[data-slide]", e).on("click.bs.carousel.data-api", "[data-slide-to]", e),
    a(window).on("load", function() {
        a('[data-ride="carousel"]').each(function() {
            var c = a(this);
            b.call(c, c.data())
        })
    })
}(jQuery),
+function(a) {
    "use strict";
    function b(b) {
        var c, d = b.attr("data-target") || (c = b.attr("href")) && c.replace(/.*(?=#[^\s]+$)/, "");
        return a(d)
    }
    function c(b) {
        return this.each(function() {
            var c = a(this)
              , e = c.data("bs.collapse")
              , f = a.extend({}, d.DEFAULTS, c.data(), "object" == typeof b && b);
            !e && f.toggle && /show|hide/.test(b) && (f.toggle = !1),
            e || c.data("bs.collapse", e = new d(this,f)),
            "string" == typeof b && e[b]()
        })
    }
    var d = function(b, c) {
        this.$element = a(b),
        this.options = a.extend({}, d.DEFAULTS, c),
        this.$trigger = a('[data-toggle="collapse"][href="#' + b.id + '"],[data-toggle="collapse"][data-target="#' + b.id + '"]'),
        this.transitioning = null,
        this.options.parent ? this.$parent = this.getParent() : this.addAriaAndCollapsedClass(this.$element, this.$trigger),
        this.options.toggle && this.toggle()
    };
    d.VERSION = "3.3.7",
    d.TRANSITION_DURATION = 350,
    d.DEFAULTS = {
        toggle: !0
    },
    d.prototype.dimension = function() {
        var a = this.$element.hasClass("width");
        return a ? "width" : "height"
    }
    ,
    d.prototype.show = function() {
        if (!this.transitioning && !this.$element.hasClass("in")) {
            var b, e = this.$parent && this.$parent.children(".panel").children(".in, .collapsing");
            if (!(e && e.length && (b = e.data("bs.collapse"),
            b && b.transitioning))) {
                var f = a.Event("show.bs.collapse");
                if (this.$element.trigger(f),
                !f.isDefaultPrevented()) {
                    e && e.length && (c.call(e, "hide"),
                    b || e.data("bs.collapse", null));
                    var g = this.dimension();
                    this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded", !0),
                    this.$trigger.removeClass("collapsed").attr("aria-expanded", !0),
                    this.transitioning = 1;
                    var h = function() {
                        this.$element.removeClass("collapsing").addClass("collapse in")[g](""),
                        this.transitioning = 0,
                        this.$element.trigger("shown.bs.collapse")
                    };
                    if (!a.support.transition)
                        return h.call(this);
                    var i = a.camelCase(["scroll", g].join("-"));
                    this.$element.one("bsTransitionEnd", a.proxy(h, this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])
                }
            }
        }
    }
    ,
    d.prototype.hide = function() {
        if (!this.transitioning && this.$element.hasClass("in")) {
            var b = a.Event("hide.bs.collapse");
            if (this.$element.trigger(b),
            !b.isDefaultPrevented()) {
                var c = this.dimension();
                this.$element[c](this.$element[c]())[0].offsetHeight,
                this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded", !1),
                this.$trigger.addClass("collapsed").attr("aria-expanded", !1),
                this.transitioning = 1;
                var e = function() {
                    this.transitioning = 0,
                    this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")
                };
                return a.support.transition ? void this.$element[c](0).one("bsTransitionEnd", a.proxy(e, this)).emulateTransitionEnd(d.TRANSITION_DURATION) : e.call(this)
            }
        }
    }
    ,
    d.prototype.toggle = function() {
        this[this.$element.hasClass("in") ? "hide" : "show"]()
    }
    ,
    d.prototype.getParent = function() {
        return a(this.options.parent).find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]').each(a.proxy(function(c, d) {
            var e = a(d);
            this.addAriaAndCollapsedClass(b(e), e)
        }, this)).end()
    }
    ,
    d.prototype.addAriaAndCollapsedClass = function(a, b) {
        var c = a.hasClass("in");
        a.attr("aria-expanded", c),
        b.toggleClass("collapsed", !c).attr("aria-expanded", c)
    }
    ;
    var e = a.fn.collapse;
    a.fn.collapse = c,
    a.fn.collapse.Constructor = d,
    a.fn.collapse.noConflict = function() {
        return a.fn.collapse = e,
        this
    }
    ,
    a(document).on("click.bs.collapse.data-api", '[data-toggle="collapse"]', function(d) {
        var e = a(this);
        e.attr("data-target") || d.preventDefault();
        var f = b(e)
          , g = f.data("bs.collapse")
          , h = g ? "toggle" : e.data();
        c.call(f, h)
    })
}(jQuery),
+function(a) {
    "use strict";
    function b(b) {
        var c = b.attr("data-target");
        c || (c = b.attr("href"),
        c = c && /#[A-Za-z]/.test(c) && c.replace(/.*(?=#[^\s]*$)/, ""));
        var d = c && a(c);
        return d && d.length ? d : b.parent()
    }
    function c(c) {
        c && 3 === c.which || (a(e).remove(),
        a(f).each(function() {
            var d = a(this)
              , e = b(d)
              , f = {
                relatedTarget: this
            };
            e.hasClass("open") && (c && "click" == c.type && /input|textarea/i.test(c.target.tagName) && a.contains(e[0], c.target) || (e.trigger(c = a.Event("hide.bs.dropdown", f)),
            c.isDefaultPrevented() || (d.attr("aria-expanded", "false"),
            e.removeClass("open").trigger(a.Event("hidden.bs.dropdown", f)))))
        }))
    }
    function d(b) {
        return this.each(function() {
            var c = a(this)
              , d = c.data("bs.dropdown");
            d || c.data("bs.dropdown", d = new g(this)),
            "string" == typeof b && d[b].call(c)
        })
    }
    var e = ".dropdown-backdrop"
      , f = '[data-toggle="dropdown"]'
      , g = function(b) {
        a(b).on("click.bs.dropdown", this.toggle)
    };
    g.VERSION = "3.3.7",
    g.prototype.toggle = function(d) {
        var e = a(this);
        if (!e.is(".disabled, :disabled")) {
            var f = b(e)
              , g = f.hasClass("open");
            if (c(),
            !g) {
                "ontouchstart"in document.documentElement && !f.closest(".navbar-nav").length && a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click", c);
                var h = {
                    relatedTarget: this
                };
                if (f.trigger(d = a.Event("show.bs.dropdown", h)),
                d.isDefaultPrevented())
                    return;
                e.trigger("focus").attr("aria-expanded", "true"),
                f.toggleClass("open").trigger(a.Event("shown.bs.dropdown", h))
            }
            return !1
        }
    }
    ,
    g.prototype.keydown = function(c) {
        if (/(38|40|27|32)/.test(c.which) && !/input|textarea/i.test(c.target.tagName)) {
            var d = a(this);
            if (c.preventDefault(),
            c.stopPropagation(),
            !d.is(".disabled, :disabled")) {
                var e = b(d)
                  , g = e.hasClass("open");
                if (!g && 27 != c.which || g && 27 == c.which)
                    return 27 == c.which && e.find(f).trigger("focus"),
                    d.trigger("click");
                var h = " li:not(.disabled):visible a"
                  , i = e.find(".dropdown-menu" + h);
                if (i.length) {
                    var j = i.index(c.target);
                    38 == c.which && j > 0 && j--,
                    40 == c.which && j < i.length - 1 && j++,
                    ~j || (j = 0),
                    i.eq(j).trigger("focus")
                }
            }
        }
    }
    ;
    var h = a.fn.dropdown;
    a.fn.dropdown = d,
    a.fn.dropdown.Constructor = g,
    a.fn.dropdown.noConflict = function() {
        return a.fn.dropdown = h,
        this
    }
    ,
    a(document).on("click.bs.dropdown.data-api", c).on("click.bs.dropdown.data-api", ".dropdown form", function(a) {
        a.stopPropagation()
    }).on("click.bs.dropdown.data-api", f, g.prototype.toggle).on("keydown.bs.dropdown.data-api", f, g.prototype.keydown).on("keydown.bs.dropdown.data-api", ".dropdown-menu", g.prototype.keydown)
}(jQuery),
+function(a) {
    "use strict";
    function b(b, d) {
        return this.each(function() {
            var e = a(this)
              , f = e.data("bs.modal")
              , g = a.extend({}, c.DEFAULTS, e.data(), "object" == typeof b && b);
            f || e.data("bs.modal", f = new c(this,g)),
            "string" == typeof b ? f[b](d) : g.show && f.show(d)
        })
    }
    var c = function(b, c) {
        this.options = c,
        this.$body = a(document.body),
        this.$element = a(b),
        this.$dialog = this.$element.find(".modal-dialog"),
        this.$backdrop = null,
        this.isShown = null,
        this.originalBodyPad = null,
        this.scrollbarWidth = 0,
        this.ignoreBackdropClick = !1,
        this.options.remote && this.$element.find(".modal-content").load(this.options.remote, a.proxy(function() {
            this.$element.trigger("loaded.bs.modal")
        }, this))
    };
    c.VERSION = "3.3.7",
    c.TRANSITION_DURATION = 300,
    c.BACKDROP_TRANSITION_DURATION = 150,
    c.DEFAULTS = {
        backdrop: !0,
        keyboard: !0,
        show: !0
    },
    c.prototype.toggle = function(a) {
        return this.isShown ? this.hide() : this.show(a)
    }
    ,
    c.prototype.show = function(b) {
        var d = this
          , e = a.Event("show.bs.modal", {
            relatedTarget: b
        });
        this.$element.trigger(e),
        this.isShown || e.isDefaultPrevented() || (this.isShown = !0,
        this.checkScrollbar(),
        this.setScrollbar(),
        this.$body.addClass("modal-open"),
        this.escape(),
        this.resize(),
        this.$element.on("click.dismiss.bs.modal", '[data-dismiss="modal"]', a.proxy(this.hide, this)),
        this.$dialog.on("mousedown.dismiss.bs.modal", function() {
            d.$element.one("mouseup.dismiss.bs.modal", function(b) {
                a(b.target).is(d.$element) && (d.ignoreBackdropClick = !0)
            })
        }),
        this.backdrop(function() {
            var e = a.support.transition && d.$element.hasClass("fade");
            d.$element.parent().length || d.$element.appendTo(d.$body),
            d.$element.show().scrollTop(0),
            d.adjustDialog(),
            e && d.$element[0].offsetWidth,
            d.$element.addClass("in"),
            d.enforceFocus();
            var f = a.Event("shown.bs.modal", {
                relatedTarget: b
            });
            e ? d.$dialog.one("bsTransitionEnd", function() {
                d.$element.trigger("focus").trigger(f)
            }).emulateTransitionEnd(c.TRANSITION_DURATION) : d.$element.trigger("focus").trigger(f)
        }))
    }
    ,
    c.prototype.hide = function(b) {
        b && b.preventDefault(),
        b = a.Event("hide.bs.modal"),
        this.$element.trigger(b),
        this.isShown && !b.isDefaultPrevented() && (this.isShown = !1,
        this.escape(),
        this.resize(),
        a(document).off("focusin.bs.modal"),
        this.$element.removeClass("in").off("click.dismiss.bs.modal").off("mouseup.dismiss.bs.modal"),
        this.$dialog.off("mousedown.dismiss.bs.modal"),
        a.support.transition && this.$element.hasClass("fade") ? this.$element.one("bsTransitionEnd", a.proxy(this.hideModal, this)).emulateTransitionEnd(c.TRANSITION_DURATION) : this.hideModal())
    }
    ,
    c.prototype.enforceFocus = function() {
        a(document).off("focusin.bs.modal").on("focusin.bs.modal", a.proxy(function(a) {
            document === a.target || this.$element[0] === a.target || this.$element.has(a.target).length || this.$element.trigger("focus")
        }, this))
    }
    ,
    c.prototype.escape = function() {
        this.isShown && this.options.keyboard ? this.$element.on("keydown.dismiss.bs.modal", a.proxy(function(a) {
            27 == a.which && this.hide()
        }, this)) : this.isShown || this.$element.off("keydown.dismiss.bs.modal")
    }
    ,
    c.prototype.resize = function() {
        this.isShown ? a(window).on("resize.bs.modal", a.proxy(this.handleUpdate, this)) : a(window).off("resize.bs.modal")
    }
    ,
    c.prototype.hideModal = function() {
        var a = this;
        this.$element.hide(),
        this.backdrop(function() {
            a.$body.removeClass("modal-open"),
            a.resetAdjustments(),
            a.resetScrollbar(),
            a.$element.trigger("hidden.bs.modal")
        })
    }
    ,
    c.prototype.removeBackdrop = function() {
        this.$backdrop && this.$backdrop.remove(),
        this.$backdrop = null
    }
    ,
    c.prototype.backdrop = function(b) {
        var d = this
          , e = this.$element.hasClass("fade") ? "fade" : "";
        if (this.isShown && this.options.backdrop) {
            var f = a.support.transition && e;
            if (this.$backdrop = a(document.createElement("div")).addClass("modal-backdrop " + e).appendTo(this.$body),
            this.$element.on("click.dismiss.bs.modal", a.proxy(function(a) {
                return this.ignoreBackdropClick ? void (this.ignoreBackdropClick = !1) : void (a.target === a.currentTarget && ("static" == this.options.backdrop ? this.$element[0].focus() : this.hide()))
            }, this)),
            f && this.$backdrop[0].offsetWidth,
            this.$backdrop.addClass("in"),
            !b)
                return;
            f ? this.$backdrop.one("bsTransitionEnd", b).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION) : b()
        } else if (!this.isShown && this.$backdrop) {
            this.$backdrop.removeClass("in");
            var g = function() {
                d.removeBackdrop(),
                b && b()
            };
            a.support.transition && this.$element.hasClass("fade") ? this.$backdrop.one("bsTransitionEnd", g).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION) : g()
        } else
            b && b()
    }
    ,
    c.prototype.handleUpdate = function() {
        this.adjustDialog()
    }
    ,
    c.prototype.adjustDialog = function() {
        var a = this.$element[0].scrollHeight > document.documentElement.clientHeight;
        this.$element.css({
            paddingLeft: !this.bodyIsOverflowing && a ? this.scrollbarWidth : "",
            paddingRight: this.bodyIsOverflowing && !a ? this.scrollbarWidth : ""
        })
    }
    ,
    c.prototype.resetAdjustments = function() {
        this.$element.css({
            paddingLeft: "",
            paddingRight: ""
        })
    }
    ,
    c.prototype.checkScrollbar = function() {
        var a = window.innerWidth;
        if (!a) {
            var b = document.documentElement.getBoundingClientRect();
            a = b.right - Math.abs(b.left)
        }
        this.bodyIsOverflowing = document.body.clientWidth < a,
        this.scrollbarWidth = this.measureScrollbar()
    }
    ,
    c.prototype.setScrollbar = function() {
        var a = parseInt(this.$body.css("padding-right") || 0, 10);
        this.originalBodyPad = document.body.style.paddingRight || "",
        this.bodyIsOverflowing && this.$body.css("padding-right", a + this.scrollbarWidth)
    }
    ,
    c.prototype.resetScrollbar = function() {
        this.$body.css("padding-right", this.originalBodyPad)
    }
    ,
    c.prototype.measureScrollbar = function() {
        var a = document.createElement("div");
        a.className = "modal-scrollbar-measure",
        this.$body.append(a);
        var b = a.offsetWidth - a.clientWidth;
        return this.$body[0].removeChild(a),
        b
    }
    ;
    var d = a.fn.modal;
    a.fn.modal = b,
    a.fn.modal.Constructor = c,
    a.fn.modal.noConflict = function() {
        return a.fn.modal = d,
        this
    }
    ,
    a(document).on("click.bs.modal.data-api", '[data-toggle="modal"]', function(c) {
        var d = a(this)
          , e = d.attr("href")
          , f = a(d.attr("data-target") || e && e.replace(/.*(?=#[^\s]+$)/, ""))
          , g = f.data("bs.modal") ? "toggle" : a.extend({
            remote: !/#/.test(e) && e
        }, f.data(), d.data());
        d.is("a") && c.preventDefault(),
        f.one("show.bs.modal", function(a) {
            a.isDefaultPrevented() || f.one("hidden.bs.modal", function() {
                d.is(":visible") && d.trigger("focus")
            })
        }),
        b.call(f, g, this)
    })
}(jQuery),
+function(a) {
    "use strict";
    function b(b) {
        return this.each(function() {
            var d = a(this)
              , e = d.data("bs.tooltip")
              , f = "object" == typeof b && b;
            !e && /destroy|hide/.test(b) || (e || d.data("bs.tooltip", e = new c(this,f)),
            "string" == typeof b && e[b]())
        })
    }
    var c = function(a, b) {
        this.type = null,
        this.options = null,
        this.enabled = null,
        this.timeout = null,
        this.hoverState = null,
        this.$element = null,
        this.inState = null,
        this.init("tooltip", a, b)
    };
    c.VERSION = "3.3.7",
    c.TRANSITION_DURATION = 150,
    c.DEFAULTS = {
        animation: !0,
        placement: "top",
        selector: !1,
        template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
        trigger: "hover focus",
        title: "",
        delay: 0,
        html: !1,
        container: !1,
        viewport: {
            selector: "body",
            padding: 0
        }
    },
    c.prototype.init = function(b, c, d) {
        if (this.enabled = !0,
        this.type = b,
        this.$element = a(c),
        this.options = this.getOptions(d),
        this.$viewport = this.options.viewport && a(a.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : this.options.viewport.selector || this.options.viewport),
        this.inState = {
            click: !1,
            hover: !1,
            focus: !1
        },
        this.$element[0]instanceof document.constructor && !this.options.selector)
            throw new Error("`selector` option must be specified when initializing " + this.type + " on the window.document object!");
        for (var e = this.options.trigger.split(" "), f = e.length; f--; ) {
            var g = e[f];
            if ("click" == g)
                this.$element.on("click." + this.type, this.options.selector, a.proxy(this.toggle, this));
            else if ("manual" != g) {
                var h = "hover" == g ? "mouseenter" : "focusin"
                  , i = "hover" == g ? "mouseleave" : "focusout";
                this.$element.on(h + "." + this.type, this.options.selector, a.proxy(this.enter, this)),
                this.$element.on(i + "." + this.type, this.options.selector, a.proxy(this.leave, this))
            }
        }
        this.options.selector ? this._options = a.extend({}, this.options, {
            trigger: "manual",
            selector: ""
        }) : this.fixTitle()
    }
    ,
    c.prototype.getDefaults = function() {
        return c.DEFAULTS
    }
    ,
    c.prototype.getOptions = function(b) {
        return b = a.extend({}, this.getDefaults(), this.$element.data(), b),
        b.delay && "number" == typeof b.delay && (b.delay = {
            show: b.delay,
            hide: b.delay
        }),
        b
    }
    ,
    c.prototype.getDelegateOptions = function() {
        var b = {}
          , c = this.getDefaults();
        return this._options && a.each(this._options, function(a, d) {
            c[a] != d && (b[a] = d)
        }),
        b
    }
    ,
    c.prototype.enter = function(b) {
        var c = b instanceof this.constructor ? b : a(b.currentTarget).data("bs." + this.type);
        return c || (c = new this.constructor(b.currentTarget,this.getDelegateOptions()),
        a(b.currentTarget).data("bs." + this.type, c)),
        b instanceof a.Event && (c.inState["focusin" == b.type ? "focus" : "hover"] = !0),
        c.tip().hasClass("in") || "in" == c.hoverState ? void (c.hoverState = "in") : (clearTimeout(c.timeout),
        c.hoverState = "in",
        c.options.delay && c.options.delay.show ? void (c.timeout = setTimeout(function() {
            "in" == c.hoverState && c.show()
        }, c.options.delay.show)) : c.show())
    }
    ,
    c.prototype.isInStateTrue = function() {
        for (var a in this.inState)
            if (this.inState[a])
                return !0;
        return !1
    }
    ,
    c.prototype.leave = function(b) {
        var c = b instanceof this.constructor ? b : a(b.currentTarget).data("bs." + this.type);
        if (c || (c = new this.constructor(b.currentTarget,this.getDelegateOptions()),
        a(b.currentTarget).data("bs." + this.type, c)),
        b instanceof a.Event && (c.inState["focusout" == b.type ? "focus" : "hover"] = !1),
        !c.isInStateTrue())
            return clearTimeout(c.timeout),
            c.hoverState = "out",
            c.options.delay && c.options.delay.hide ? void (c.timeout = setTimeout(function() {
                "out" == c.hoverState && c.hide()
            }, c.options.delay.hide)) : c.hide()
    }
    ,
    c.prototype.show = function() {
        var b = a.Event("show.bs." + this.type);
        if (this.hasContent() && this.enabled) {
            this.$element.trigger(b);
            var d = a.contains(this.$element[0].ownerDocument.documentElement, this.$element[0]);
            if (b.isDefaultPrevented() || !d)
                return;
            var e = this
              , f = this.tip()
              , g = this.getUID(this.type);
            this.setContent(),
            f.attr("id", g),
            this.$element.attr("aria-describedby", g),
            this.options.animation && f.addClass("fade");
            var h = "function" == typeof this.options.placement ? this.options.placement.call(this, f[0], this.$element[0]) : this.options.placement
              , i = /\s?auto?\s?/i
              , j = i.test(h);
            j && (h = h.replace(i, "") || "top"),
            f.detach().css({
                top: 0,
                left: 0,
                display: "block"
            }).addClass(h).data("bs." + this.type, this),
            this.options.container ? f.appendTo(this.options.container) : f.insertAfter(this.$element),
            this.$element.trigger("inserted.bs." + this.type);
            var k = this.getPosition()
              , l = f[0].offsetWidth
              , m = f[0].offsetHeight;
            if (j) {
                var n = h
                  , o = this.getPosition(this.$viewport);
                h = "bottom" == h && k.bottom + m > o.bottom ? "top" : "top" == h && k.top - m < o.top ? "bottom" : "right" == h && k.right + l > o.width ? "left" : "left" == h && k.left - l < o.left ? "right" : h,
                f.removeClass(n).addClass(h)
            }
            var p = this.getCalculatedOffset(h, k, l, m);
            this.applyPlacement(p, h);
            var q = function() {
                var a = e.hoverState;
                e.$element.trigger("shown.bs." + e.type),
                e.hoverState = null,
                "out" == a && e.leave(e)
            };
            a.support.transition && this.$tip.hasClass("fade") ? f.one("bsTransitionEnd", q).emulateTransitionEnd(c.TRANSITION_DURATION) : q()
        }
    }
    ,
    c.prototype.applyPlacement = function(b, c) {
        var d = this.tip()
          , e = d[0].offsetWidth
          , f = d[0].offsetHeight
          , g = parseInt(d.css("margin-top"), 10)
          , h = parseInt(d.css("margin-left"), 10);
        isNaN(g) && (g = 0),
        isNaN(h) && (h = 0),
        b.top += g,
        b.left += h,
        a.offset.setOffset(d[0], a.extend({
            using: function(a) {
                d.css({
                    top: Math.round(a.top),
                    left: Math.round(a.left)
                })
            }
        }, b), 0),
        d.addClass("in");
        var i = d[0].offsetWidth
          , j = d[0].offsetHeight;
        "top" == c && j != f && (b.top = b.top + f - j);
        var k = this.getViewportAdjustedDelta(c, b, i, j);
        k.left ? b.left += k.left : b.top += k.top;
        var l = /top|bottom/.test(c)
          , m = l ? 2 * k.left - e + i : 2 * k.top - f + j
          , n = l ? "offsetWidth" : "offsetHeight";
        d.offset(b),
        this.replaceArrow(m, d[0][n], l)
    }
    ,
    c.prototype.replaceArrow = function(a, b, c) {
        this.arrow().css(c ? "left" : "top", 50 * (1 - a / b) + "%").css(c ? "top" : "left", "")
    }
    ,
    c.prototype.setContent = function() {
        var a = this.tip()
          , b = this.getTitle();
        a.find(".tooltip-inner")[this.options.html ? "html" : "text"](b),
        a.removeClass("fade in top bottom left right")
    }
    ,
    c.prototype.hide = function(b) {
        function d() {
            "in" != e.hoverState && f.detach(),
            e.$element && e.$element.removeAttr("aria-describedby").trigger("hidden.bs." + e.type),
            b && b()
        }
        var e = this
          , f = a(this.$tip)
          , g = a.Event("hide.bs." + this.type);
        if (this.$element.trigger(g),
        !g.isDefaultPrevented())
            return f.removeClass("in"),
            a.support.transition && f.hasClass("fade") ? f.one("bsTransitionEnd", d).emulateTransitionEnd(c.TRANSITION_DURATION) : d(),
            this.hoverState = null,
            this
    }
    ,
    c.prototype.fixTitle = function() {
        var a = this.$element;
        (a.attr("title") || "string" != typeof a.attr("data-original-title")) && a.attr("data-original-title", a.attr("title") || "").attr("title", "")
    }
    ,
    c.prototype.hasContent = function() {
        return this.getTitle()
    }
    ,
    c.prototype.getPosition = function(b) {
        b = b || this.$element;
        var c = b[0]
          , d = "BODY" == c.tagName
          , e = c.getBoundingClientRect();
        null == e.width && (e = a.extend({}, e, {
            width: e.right - e.left,
            height: e.bottom - e.top
        }));
        var f = window.SVGElement && c instanceof window.SVGElement
          , g = d ? {
            top: 0,
            left: 0
        } : f ? null : b.offset()
          , h = {
            scroll: d ? document.documentElement.scrollTop || document.body.scrollTop : b.scrollTop()
        }
          , i = d ? {
            width: a(window).width(),
            height: a(window).height()
        } : null;
        return a.extend({}, e, h, i, g)
    }
    ,
    c.prototype.getCalculatedOffset = function(a, b, c, d) {
        return "bottom" == a ? {
            top: b.top + b.height,
            left: b.left + b.width / 2 - c / 2
        } : "top" == a ? {
            top: b.top - d,
            left: b.left + b.width / 2 - c / 2
        } : "left" == a ? {
            top: b.top + b.height / 2 - d / 2,
            left: b.left - c
        } : {
            top: b.top + b.height / 2 - d / 2,
            left: b.left + b.width
        }
    }
    ,
    c.prototype.getViewportAdjustedDelta = function(a, b, c, d) {
        var e = {
            top: 0,
            left: 0
        };
        if (!this.$viewport)
            return e;
        var f = this.options.viewport && this.options.viewport.padding || 0
          , g = this.getPosition(this.$viewport);
        if (/right|left/.test(a)) {
            var h = b.top - f - g.scroll
              , i = b.top + f - g.scroll + d;
            h < g.top ? e.top = g.top - h : i > g.top + g.height && (e.top = g.top + g.height - i)
        } else {
            var j = b.left - f
              , k = b.left + f + c;
            j < g.left ? e.left = g.left - j : k > g.right && (e.left = g.left + g.width - k)
        }
        return e
    }
    ,
    c.prototype.getTitle = function() {
        var a, b = this.$element, c = this.options;
        return a = b.attr("data-original-title") || ("function" == typeof c.title ? c.title.call(b[0]) : c.title)
    }
    ,
    c.prototype.getUID = function(a) {
        do
            a += ~~(1e6 * Math.random());
        while (document.getElementById(a));
        return a
    }
    ,
    c.prototype.tip = function() {
        if (!this.$tip && (this.$tip = a(this.options.template),
        1 != this.$tip.length))
            throw new Error(this.type + " `template` option must consist of exactly 1 top-level element!");
        return this.$tip
    }
    ,
    c.prototype.arrow = function() {
        return this.$arrow = this.$arrow || this.tip().find(".tooltip-arrow")
    }
    ,
    c.prototype.enable = function() {
        this.enabled = !0
    }
    ,
    c.prototype.disable = function() {
        this.enabled = !1
    }
    ,
    c.prototype.toggleEnabled = function() {
        this.enabled = !this.enabled
    }
    ,
    c.prototype.toggle = function(b) {
        var c = this;
        b && (c = a(b.currentTarget).data("bs." + this.type),
        c || (c = new this.constructor(b.currentTarget,this.getDelegateOptions()),
        a(b.currentTarget).data("bs." + this.type, c))),
        b ? (c.inState.click = !c.inState.click,
        c.isInStateTrue() ? c.enter(c) : c.leave(c)) : c.tip().hasClass("in") ? c.leave(c) : c.enter(c)
    }
    ,
    c.prototype.destroy = function() {
        var a = this;
        clearTimeout(this.timeout),
        this.hide(function() {
            a.$element.off("." + a.type).removeData("bs." + a.type),
            a.$tip && a.$tip.detach(),
            a.$tip = null,
            a.$arrow = null,
            a.$viewport = null,
            a.$element = null
        })
    }
    ;
    var d = a.fn.tooltip;
    a.fn.tooltip = b,
    a.fn.tooltip.Constructor = c,
    a.fn.tooltip.noConflict = function() {
        return a.fn.tooltip = d,
        this
    }
}(jQuery),
+function(a) {
    "use strict";
    function b(b) {
        return this.each(function() {
            var d = a(this)
              , e = d.data("bs.popover")
              , f = "object" == typeof b && b;
            !e && /destroy|hide/.test(b) || (e || d.data("bs.popover", e = new c(this,f)),
            "string" == typeof b && e[b]())
        })
    }
    var c = function(a, b) {
        this.init("popover", a, b)
    };
    if (!a.fn.tooltip)
        throw new Error("Popover requires tooltip.js");
    c.VERSION = "3.3.7",
    c.DEFAULTS = a.extend({}, a.fn.tooltip.Constructor.DEFAULTS, {
        placement: "right",
        trigger: "click",
        content: "",
        template: '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
    }),
    c.prototype = a.extend({}, a.fn.tooltip.Constructor.prototype),
    c.prototype.constructor = c,
    c.prototype.getDefaults = function() {
        return c.DEFAULTS
    }
    ,
    c.prototype.setContent = function() {
        var a = this.tip()
          , b = this.getTitle()
          , c = this.getContent();
        a.find(".popover-title")[this.options.html ? "html" : "text"](b),
        a.find(".popover-content").children().detach().end()[this.options.html ? "string" == typeof c ? "html" : "append" : "text"](c),
        a.removeClass("fade top bottom left right in"),
        a.find(".popover-title").html() || a.find(".popover-title").hide()
    }
    ,
    c.prototype.hasContent = function() {
        return this.getTitle() || this.getContent()
    }
    ,
    c.prototype.getContent = function() {
        var a = this.$element
          , b = this.options;
        return a.attr("data-content") || ("function" == typeof b.content ? b.content.call(a[0]) : b.content)
    }
    ,
    c.prototype.arrow = function() {
        return this.$arrow = this.$arrow || this.tip().find(".arrow")
    }
    ;
    var d = a.fn.popover;
    a.fn.popover = b,
    a.fn.popover.Constructor = c,
    a.fn.popover.noConflict = function() {
        return a.fn.popover = d,
        this
    }
}(jQuery),
+function(a) {
    "use strict";
    function b(c, d) {
        this.$body = a(document.body),
        this.$scrollElement = a(a(c).is(document.body) ? window : c),
        this.options = a.extend({}, b.DEFAULTS, d),
        this.selector = (this.options.target || "") + " .nav li > a",
        this.offsets = [],
        this.targets = [],
        this.activeTarget = null,
        this.scrollHeight = 0,
        this.$scrollElement.on("scroll.bs.scrollspy", a.proxy(this.process, this)),
        this.refresh(),
        this.process()
    }
    function c(c) {
        return this.each(function() {
            var d = a(this)
              , e = d.data("bs.scrollspy")
              , f = "object" == typeof c && c;
            e || d.data("bs.scrollspy", e = new b(this,f)),
            "string" == typeof c && e[c]()
        })
    }
    b.VERSION = "3.3.7",
    b.DEFAULTS = {
        offset: 10
    },
    b.prototype.getScrollHeight = function() {
        return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)
    }
    ,
    b.prototype.refresh = function() {
        var b = this
          , c = "offset"
          , d = 0;
        this.offsets = [],
        this.targets = [],
        this.scrollHeight = this.getScrollHeight(),
        a.isWindow(this.$scrollElement[0]) || (c = "position",
        d = this.$scrollElement.scrollTop()),
        this.$body.find(this.selector).map(function() {
            var b = a(this)
              , e = b.data("target") || b.attr("href")
              , f = /^#./.test(e) && a(e);
            return f && f.length && f.is(":visible") && [[f[c]().top + d, e]] || null
        }).sort(function(a, b) {
            return a[0] - b[0]
        }).each(function() {
            b.offsets.push(this[0]),
            b.targets.push(this[1])
        })
    }
    ,
    b.prototype.process = function() {
        var a, b = this.$scrollElement.scrollTop() + this.options.offset, c = this.getScrollHeight(), d = this.options.offset + c - this.$scrollElement.height(), e = this.offsets, f = this.targets, g = this.activeTarget;
        if (this.scrollHeight != c && this.refresh(),
        b >= d)
            return g != (a = f[f.length - 1]) && this.activate(a);
        if (g && b < e[0])
            return this.activeTarget = null,
            this.clear();
        for (a = e.length; a--; )
            g != f[a] && b >= e[a] && (void 0 === e[a + 1] || b < e[a + 1]) && this.activate(f[a])
    }
    ,
    b.prototype.activate = function(b) {
        this.activeTarget = b,
        this.clear();
        var c = this.selector + '[data-target="' + b + '"],' + this.selector + '[href="' + b + '"]'
          , d = a(c).parents("li").addClass("active");
        d.parent(".dropdown-menu").length && (d = d.closest("li.dropdown").addClass("active")),
        d.trigger("activate.bs.scrollspy")
    }
    ,
    b.prototype.clear = function() {
        a(this.selector).parentsUntil(this.options.target, ".active").removeClass("active")
    }
    ;
    var d = a.fn.scrollspy;
    a.fn.scrollspy = c,
    a.fn.scrollspy.Constructor = b,
    a.fn.scrollspy.noConflict = function() {
        return a.fn.scrollspy = d,
        this
    }
    ,
    a(window).on("load.bs.scrollspy.data-api", function() {
        a('[data-spy="scroll"]').each(function() {
            var b = a(this);
            c.call(b, b.data())
        })
    })
}(jQuery),
+function(a) {
    "use strict";
    function b(b) {
        return this.each(function() {
            var d = a(this)
              , e = d.data("bs.tab");
            e || d.data("bs.tab", e = new c(this)),
            "string" == typeof b && e[b]()
        })
    }
    var c = function(b) {
        this.element = a(b)
    };
    c.VERSION = "3.3.7",
    c.TRANSITION_DURATION = 150,
    c.prototype.show = function() {
        var b = this.element
          , c = b.closest("ul:not(.dropdown-menu)")
          , d = b.data("target");
        if (d || (d = b.attr("href"),
        d = d && d.replace(/.*(?=#[^\s]*$)/, "")),
        !b.parent("li").hasClass("active")) {
            var e = c.find(".active:last a")
              , f = a.Event("hide.bs.tab", {
                relatedTarget: b[0]
            })
              , g = a.Event("show.bs.tab", {
                relatedTarget: e[0]
            });
            if (e.trigger(f),
            b.trigger(g),
            !g.isDefaultPrevented() && !f.isDefaultPrevented()) {
                var h = a(d);
                this.activate(b.closest("li"), c),
                this.activate(h, h.parent(), function() {
                    e.trigger({
                        type: "hidden.bs.tab",
                        relatedTarget: b[0]
                    }),
                    b.trigger({
                        type: "shown.bs.tab",
                        relatedTarget: e[0]
                    })
                })
            }
        }
    }
    ,
    c.prototype.activate = function(b, d, e) {
        function f() {
            g.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded", !1),
            b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded", !0),
            h ? (b[0].offsetWidth,
            b.addClass("in")) : b.removeClass("fade"),
            b.parent(".dropdown-menu").length && b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded", !0),
            e && e()
        }
        var g = d.find("> .active")
          , h = e && a.support.transition && (g.length && g.hasClass("fade") || !!d.find("> .fade").length);
        g.length && h ? g.one("bsTransitionEnd", f).emulateTransitionEnd(c.TRANSITION_DURATION) : f(),
        g.removeClass("in")
    }
    ;
    var d = a.fn.tab;
    a.fn.tab = b,
    a.fn.tab.Constructor = c,
    a.fn.tab.noConflict = function() {
        return a.fn.tab = d,
        this
    }
    ;
    var e = function(c) {
        c.preventDefault(),
        b.call(a(this), "show")
    };
    a(document).on("click.bs.tab.data-api", '[data-toggle="tab"]', e).on("click.bs.tab.data-api", '[data-toggle="pill"]', e)
}(jQuery),
+function(a) {
    "use strict";
    function b(b) {
        return this.each(function() {
            var d = a(this)
              , e = d.data("bs.affix")
              , f = "object" == typeof b && b;
            e || d.data("bs.affix", e = new c(this,f)),
            "string" == typeof b && e[b]()
        })
    }
    var c = function(b, d) {
        this.options = a.extend({}, c.DEFAULTS, d),
        this.$target = a(this.options.target).on("scroll.bs.affix.data-api", a.proxy(this.checkPosition, this)).on("click.bs.affix.data-api", a.proxy(this.checkPositionWithEventLoop, this)),
        this.$element = a(b),
        this.affixed = null,
        this.unpin = null,
        this.pinnedOffset = null,
        this.checkPosition()
    };
    c.VERSION = "3.3.7",
    c.RESET = "affix affix-top affix-bottom",
    c.DEFAULTS = {
        offset: 0,
        target: window
    },
    c.prototype.getState = function(a, b, c, d) {
        var e = this.$target.scrollTop()
          , f = this.$element.offset()
          , g = this.$target.height();
        if (null != c && "top" == this.affixed)
            return e < c && "top";
        if ("bottom" == this.affixed)
            return null != c ? !(e + this.unpin <= f.top) && "bottom" : !(e + g <= a - d) && "bottom";
        var h = null == this.affixed
          , i = h ? e : f.top
          , j = h ? g : b;
        return null != c && e <= c ? "top" : null != d && i + j >= a - d && "bottom"
    }
    ,
    c.prototype.getPinnedOffset = function() {
        if (this.pinnedOffset)
            return this.pinnedOffset;
        this.$element.removeClass(c.RESET).addClass("affix");
        var a = this.$target.scrollTop()
          , b = this.$element.offset();
        return this.pinnedOffset = b.top - a
    }
    ,
    c.prototype.checkPositionWithEventLoop = function() {
        setTimeout(a.proxy(this.checkPosition, this), 1)
    }
    ,
    c.prototype.checkPosition = function() {
        if (this.$element.is(":visible")) {
            var b = this.$element.height()
              , d = this.options.offset
              , e = d.top
              , f = d.bottom
              , g = Math.max(a(document).height(), a(document.body).height());
            "object" != typeof d && (f = e = d),
            "function" == typeof e && (e = d.top(this.$element)),
            "function" == typeof f && (f = d.bottom(this.$element));
            var h = this.getState(g, b, e, f);
            if (this.affixed != h) {
                null != this.unpin && this.$element.css("top", "");
                var i = "affix" + (h ? "-" + h : "")
                  , j = a.Event(i + ".bs.affix");
                if (this.$element.trigger(j),
                j.isDefaultPrevented())
                    return;
                this.affixed = h,
                this.unpin = "bottom" == h ? this.getPinnedOffset() : null,
                this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix", "affixed") + ".bs.affix")
            }
            "bottom" == h && this.$element.offset({
                top: g - b - f
            })
        }
    }
    ;
    var d = a.fn.affix;
    a.fn.affix = b,
    a.fn.affix.Constructor = c,
    a.fn.affix.noConflict = function() {
        return a.fn.affix = d,
        this
    }
    ,
    a(window).on("load", function() {
        a('[data-spy="affix"]').each(function() {
            var c = a(this)
              , d = c.data();
            d.offset = d.offset || {},
            null != d.offsetBottom && (d.offset.bottom = d.offsetBottom),
            null != d.offsetTop && (d.offset.top = d.offsetTop),
            b.call(c, d)
        })
    })
}(jQuery);
/*
 * This combined file was created by the DataTables downloader builder:
 *   https://datatables.net/download
 *
 * To rebuild or modify this file with the latest versions of the included
 * software please visit:
 *   https://datatables.net/download/#bs/dt-1.10.12
 *
 * Included libraries:
 *   DataTables 1.10.12
 */

/*!
 DataTables 1.10.12
 ©2008-2015 SpryMedia Ltd - datatables.net/license
*/
(function(h) {
    "function" === typeof define && define.amd ? define(["jquery"], function(D) {
        return h(D, window, document)
    }) : "object" === typeof exports ? module.exports = function(D, I) {
        D || (D = window);
        I || (I = "undefined" !== typeof window ? require("jquery") : require("jquery")(D));
        return h(I, D, D.document)
    }
    : h(jQuery, window, document)
}
)(function(h, D, I, k) {
    function X(a) {
        var b, c, d = {};
        h.each(a, function(e) {
            if ((b = e.match(/^([^A-Z]+?)([A-Z])/)) && -1 !== "a aa ai ao as b fn i m o s ".indexOf(b[1] + " "))
                c = e.replace(b[0], b[2].toLowerCase()),
                d[c] = e,
                "o" === b[1] && X(a[e])
        });
        a._hungarianMap = d
    }
    function K(a, b, c) {
        a._hungarianMap || X(a);
        var d;
        h.each(b, function(e) {
            d = a._hungarianMap[e];
            if (d !== k && (c || b[d] === k))
                "o" === d.charAt(0) ? (b[d] || (b[d] = {}),
                h.extend(!0, b[d], b[e]),
                K(a[d], b[d], c)) : b[d] = b[e]
        })
    }
    function Da(a) {
        var b = m.defaults.oLanguage
          , c = a.sZeroRecords;
        !a.sEmptyTable && (c && "No data available in table" === b.sEmptyTable) && E(a, a, "sZeroRecords", "sEmptyTable");
        !a.sLoadingRecords && (c && "Loading..." === b.sLoadingRecords) && E(a, a, "sZeroRecords", "sLoadingRecords");
        a.sInfoThousands && (a.sThousands = a.sInfoThousands);
        (a = a.sDecimal) && db(a)
    }
    function eb(a) {
        A(a, "ordering", "bSort");
        A(a, "orderMulti", "bSortMulti");
        A(a, "orderClasses", "bSortClasses");
        A(a, "orderCellsTop", "bSortCellsTop");
        A(a, "order", "aaSorting");
        A(a, "orderFixed", "aaSortingFixed");
        A(a, "paging", "bPaginate");
        A(a, "pagingType", "sPaginationType");
        A(a, "pageLength", "iDisplayLength");
        A(a, "searching", "bFilter");
        "boolean" === typeof a.sScrollX && (a.sScrollX = a.sScrollX ? "100%" : "");
        "boolean" === typeof a.scrollX && (a.scrollX = a.scrollX ? "100%" : "");
        if (a = a.aoSearchCols)
            for (var b = 0, c = a.length; b < c; b++)
                a[b] && K(m.models.oSearch, a[b])
    }
    function fb(a) {
        A(a, "orderable", "bSortable");
        A(a, "orderData", "aDataSort");
        A(a, "orderSequence", "asSorting");
        A(a, "orderDataType", "sortDataType");
        var b = a.aDataSort;
        b && !h.isArray(b) && (a.aDataSort = [b])
    }
    function gb(a) {
        if (!m.__browser) {
            var b = {};
            m.__browser = b;
            var c = h("<div/>").css({
                position: "fixed",
                top: 0,
                left: 0,
                height: 1,
                width: 1,
                overflow: "hidden"
            }).append(h("<div/>").css({
                position: "absolute",
                top: 1,
                left: 1,
                width: 100,
                overflow: "scroll"
            }).append(h("<div/>").css({
                width: "100%",
                height: 10
            }))).appendTo("body")
              , d = c.children()
              , e = d.children();
            b.barWidth = d[0].offsetWidth - d[0].clientWidth;
            b.bScrollOversize = 100 === e[0].offsetWidth && 100 !== d[0].clientWidth;
            b.bScrollbarLeft = 1 !== Math.round(e.offset().left);
            b.bBounding = c[0].getBoundingClientRect().width ? !0 : !1;
            c.remove()
        }
        h.extend(a.oBrowser, m.__browser);
        a.oScroll.iBarWidth = m.__browser.barWidth
    }
    function hb(a, b, c, d, e, f) {
        var g, j = !1;
        c !== k && (g = c,
        j = !0);
        for (; d !== e; )
            a.hasOwnProperty(d) && (g = j ? b(g, a[d], d, a) : a[d],
            j = !0,
            d += f);
        return g
    }
    function Ea(a, b) {
        var c = m.defaults.column
          , d = a.aoColumns.length
          , c = h.extend({}, m.models.oColumn, c, {
            nTh: b ? b : I.createElement("th"),
            sTitle: c.sTitle ? c.sTitle : b ? b.innerHTML : "",
            aDataSort: c.aDataSort ? c.aDataSort : [d],
            mData: c.mData ? c.mData : d,
            idx: d
        });
        a.aoColumns.push(c);
        c = a.aoPreSearchCols;
        c[d] = h.extend({}, m.models.oSearch, c[d]);
        ja(a, d, h(b).data())
    }
    function ja(a, b, c) {
        var b = a.aoColumns[b]
          , d = a.oClasses
          , e = h(b.nTh);
        if (!b.sWidthOrig) {
            b.sWidthOrig = e.attr("width") || null;
            var f = (e.attr("style") || "").match(/width:\s*(\d+[pxem%]+)/);
            f && (b.sWidthOrig = f[1])
        }
        c !== k && null !== c && (fb(c),
        K(m.defaults.column, c),
        c.mDataProp !== k && !c.mData && (c.mData = c.mDataProp),
        c.sType && (b._sManualType = c.sType),
        c.className && !c.sClass && (c.sClass = c.className),
        h.extend(b, c),
        E(b, c, "sWidth", "sWidthOrig"),
        c.iDataSort !== k && (b.aDataSort = [c.iDataSort]),
        E(b, c, "aDataSort"));
        var g = b.mData
          , j = Q(g)
          , i = b.mRender ? Q(b.mRender) : null
          , c = function(a) {
            return "string" === typeof a && -1 !== a.indexOf("@")
        };
        b._bAttrSrc = h.isPlainObject(g) && (c(g.sort) || c(g.type) || c(g.filter));
        b._setter = null;
        b.fnGetData = function(a, b, c) {
            var d = j(a, b, k, c);
            return i && b ? i(d, b, a, c) : d
        }
        ;
        b.fnSetData = function(a, b, c) {
            return R(g)(a, b, c)
        }
        ;
        "number" !== typeof g && (a._rowReadObject = !0);
        a.oFeatures.bSort || (b.bSortable = !1,
        e.addClass(d.sSortableNone));
        a = -1 !== h.inArray("asc", b.asSorting);
        c = -1 !== h.inArray("desc", b.asSorting);
        !b.bSortable || !a && !c ? (b.sSortingClass = d.sSortableNone,
        b.sSortingClassJUI = "") : a && !c ? (b.sSortingClass = d.sSortableAsc,
        b.sSortingClassJUI = d.sSortJUIAscAllowed) : !a && c ? (b.sSortingClass = d.sSortableDesc,
        b.sSortingClassJUI = d.sSortJUIDescAllowed) : (b.sSortingClass = d.sSortable,
        b.sSortingClassJUI = d.sSortJUI)
    }
    function Y(a) {
        if (!1 !== a.oFeatures.bAutoWidth) {
            var b = a.aoColumns;
            Fa(a);
            for (var c = 0, d = b.length; c < d; c++)
                b[c].nTh.style.width = b[c].sWidth
        }
        b = a.oScroll;
        ("" !== b.sY || "" !== b.sX) && ka(a);
        u(a, null, "column-sizing", [a])
    }
    function Z(a, b) {
        var c = la(a, "bVisible");
        return "number" === typeof c[b] ? c[b] : null
    }
    function $(a, b) {
        var c = la(a, "bVisible")
          , c = h.inArray(b, c);
        return -1 !== c ? c : null
    }
    function aa(a) {
        var b = 0;
        h.each(a.aoColumns, function(a, d) {
            d.bVisible && "none" !== h(d.nTh).css("display") && b++
        });
        return b
    }
    function la(a, b) {
        var c = [];
        h.map(a.aoColumns, function(a, e) {
            a[b] && c.push(e)
        });
        return c
    }
    function Ga(a) {
        var b = a.aoColumns, c = a.aoData, d = m.ext.type.detect, e, f, g, j, i, h, l, q, t;
        e = 0;
        for (f = b.length; e < f; e++)
            if (l = b[e],
            t = [],
            !l.sType && l._sManualType)
                l.sType = l._sManualType;
            else if (!l.sType) {
                g = 0;
                for (j = d.length; g < j; g++) {
                    i = 0;
                    for (h = c.length; i < h; i++) {
                        t[i] === k && (t[i] = B(a, i, e, "type"));
                        q = d[g](t[i], a);
                        if (!q && g !== d.length - 1)
                            break;
                        if ("html" === q)
                            break
                    }
                    if (q) {
                        l.sType = q;
                        break
                    }
                }
                l.sType || (l.sType = "string")
            }
    }
    function ib(a, b, c, d) {
        var e, f, g, j, i, n, l = a.aoColumns;
        if (b)
            for (e = b.length - 1; 0 <= e; e--) {
                n = b[e];
                var q = n.targets !== k ? n.targets : n.aTargets;
                h.isArray(q) || (q = [q]);
                f = 0;
                for (g = q.length; f < g; f++)
                    if ("number" === typeof q[f] && 0 <= q[f]) {
                        for (; l.length <= q[f]; )
                            Ea(a);
                        d(q[f], n)
                    } else if ("number" === typeof q[f] && 0 > q[f])
                        d(l.length + q[f], n);
                    else if ("string" === typeof q[f]) {
                        j = 0;
                        for (i = l.length; j < i; j++)
                            ("_all" == q[f] || h(l[j].nTh).hasClass(q[f])) && d(j, n)
                    }
            }
        if (c) {
            e = 0;
            for (a = c.length; e < a; e++)
                d(e, c[e])
        }
    }
    function N(a, b, c, d) {
        var e = a.aoData.length
          , f = h.extend(!0, {}, m.models.oRow, {
            src: c ? "dom" : "data",
            idx: e
        });
        f._aData = b;
        a.aoData.push(f);
        for (var g = a.aoColumns, j = 0, i = g.length; j < i; j++)
            g[j].sType = null;
        a.aiDisplayMaster.push(e);
        b = a.rowIdFn(b);
        b !== k && (a.aIds[b] = f);
        (c || !a.oFeatures.bDeferRender) && Ha(a, e, c, d);
        return e
    }
    function ma(a, b) {
        var c;
        b instanceof h || (b = h(b));
        return b.map(function(b, e) {
            c = Ia(a, e);
            return N(a, c.data, e, c.cells)
        })
    }
    function B(a, b, c, d) {
        var e = a.iDraw
          , f = a.aoColumns[c]
          , g = a.aoData[b]._aData
          , j = f.sDefaultContent
          , i = f.fnGetData(g, d, {
            settings: a,
            row: b,
            col: c
        });
        if (i === k)
            return a.iDrawError != e && null === j && (L(a, 0, "Requested unknown parameter " + ("function" == typeof f.mData ? "{function}" : "'" + f.mData + "'") + " for row " + b + ", column " + c, 4),
            a.iDrawError = e),
            j;
        if ((i === g || null === i) && null !== j && d !== k)
            i = j;
        else if ("function" === typeof i)
            return i.call(g);
        return null === i && "display" == d ? "" : i
    }
    function jb(a, b, c, d) {
        a.aoColumns[c].fnSetData(a.aoData[b]._aData, d, {
            settings: a,
            row: b,
            col: c
        })
    }
    function Ja(a) {
        return h.map(a.match(/(\\.|[^\.])+/g) || [""], function(a) {
            return a.replace(/\\./g, ".")
        })
    }
    function Q(a) {
        if (h.isPlainObject(a)) {
            var b = {};
            h.each(a, function(a, c) {
                c && (b[a] = Q(c))
            });
            return function(a, c, f, g) {
                var j = b[c] || b._;
                return j !== k ? j(a, c, f, g) : a
            }
        }
        if (null === a)
            return function(a) {
                return a
            }
            ;
        if ("function" === typeof a)
            return function(b, c, f, g) {
                return a(b, c, f, g)
            }
            ;
        if ("string" === typeof a && (-1 !== a.indexOf(".") || -1 !== a.indexOf("[") || -1 !== a.indexOf("("))) {
            var c = function(a, b, f) {
                var g, j;
                if ("" !== f) {
                    j = Ja(f);
                    for (var i = 0, n = j.length; i < n; i++) {
                        f = j[i].match(ba);
                        g = j[i].match(U);
                        if (f) {
                            j[i] = j[i].replace(ba, "");
                            "" !== j[i] && (a = a[j[i]]);
                            g = [];
                            j.splice(0, i + 1);
                            j = j.join(".");
                            if (h.isArray(a)) {
                                i = 0;
                                for (n = a.length; i < n; i++)
                                    g.push(c(a[i], b, j))
                            }
                            a = f[0].substring(1, f[0].length - 1);
                            a = "" === a ? g : g.join(a);
                            break
                        } else if (g) {
                            j[i] = j[i].replace(U, "");
                            a = a[j[i]]();
                            continue
                        }
                        if (null === a || a[j[i]] === k)
                            return k;
                        a = a[j[i]]
                    }
                }
                return a
            };
            return function(b, e) {
                return c(b, e, a)
            }
        }
        return function(b) {
            return b[a]
        }
    }
    function R(a) {
        if (h.isPlainObject(a))
            return R(a._);
        if (null === a)
            return function() {}
            ;
        if ("function" === typeof a)
            return function(b, d, e) {
                a(b, "set", d, e)
            }
            ;
        if ("string" === typeof a && (-1 !== a.indexOf(".") || -1 !== a.indexOf("[") || -1 !== a.indexOf("("))) {
            var b = function(a, d, e) {
                var e = Ja(e), f;
                f = e[e.length - 1];
                for (var g, j, i = 0, n = e.length - 1; i < n; i++) {
                    g = e[i].match(ba);
                    j = e[i].match(U);
                    if (g) {
                        e[i] = e[i].replace(ba, "");
                        a[e[i]] = [];
                        f = e.slice();
                        f.splice(0, i + 1);
                        g = f.join(".");
                        if (h.isArray(d)) {
                            j = 0;
                            for (n = d.length; j < n; j++)
                                f = {},
                                b(f, d[j], g),
                                a[e[i]].push(f)
                        } else
                            a[e[i]] = d;
                        return
                    }
                    j && (e[i] = e[i].replace(U, ""),
                    a = a[e[i]](d));
                    if (null === a[e[i]] || a[e[i]] === k)
                        a[e[i]] = {};
                    a = a[e[i]]
                }
                if (f.match(U))
                    a[f.replace(U, "")](d);
                else
                    a[f.replace(ba, "")] = d
            };
            return function(c, d) {
                return b(c, d, a)
            }
        }
        return function(b, d) {
            b[a] = d
        }
    }
    function Ka(a) {
        return G(a.aoData, "_aData")
    }
    function na(a) {
        a.aoData.length = 0;
        a.aiDisplayMaster.length = 0;
        a.aiDisplay.length = 0;
        a.aIds = {}
    }
    function oa(a, b, c) {
        for (var d = -1, e = 0, f = a.length; e < f; e++)
            a[e] == b ? d = e : a[e] > b && a[e]--;
        -1 != d && c === k && a.splice(d, 1)
    }
    function ca(a, b, c, d) {
        var e = a.aoData[b], f, g = function(c, d) {
            for (; c.childNodes.length; )
                c.removeChild(c.firstChild);
            c.innerHTML = B(a, b, d, "display")
        };
        if ("dom" === c || (!c || "auto" === c) && "dom" === e.src)
            e._aData = Ia(a, e, d, d === k ? k : e._aData).data;
        else {
            var j = e.anCells;
            if (j)
                if (d !== k)
                    g(j[d], d);
                else {
                    c = 0;
                    for (f = j.length; c < f; c++)
                        g(j[c], c)
                }
        }
        e._aSortData = null;
        e._aFilterData = null;
        g = a.aoColumns;
        if (d !== k)
            g[d].sType = null;
        else {
            c = 0;
            for (f = g.length; c < f; c++)
                g[c].sType = null;
            La(a, e)
        }
    }
    function Ia(a, b, c, d) {
        var e = [], f = b.firstChild, g, j, i = 0, n, l = a.aoColumns, q = a._rowReadObject, d = d !== k ? d : q ? {} : [], t = function(a, b) {
            if ("string" === typeof a) {
                var c = a.indexOf("@");
                -1 !== c && (c = a.substring(c + 1),
                R(a)(d, b.getAttribute(c)))
            }
        }, S = function(a) {
            if (c === k || c === i)
                j = l[i],
                n = h.trim(a.innerHTML),
                j && j._bAttrSrc ? (R(j.mData._)(d, n),
                t(j.mData.sort, a),
                t(j.mData.type, a),
                t(j.mData.filter, a)) : q ? (j._setter || (j._setter = R(j.mData)),
                j._setter(d, n)) : d[i] = n;
            i++
        };
        if (f)
            for (; f; ) {
                g = f.nodeName.toUpperCase();
                if ("TD" == g || "TH" == g)
                    S(f),
                    e.push(f);
                f = f.nextSibling
            }
        else {
            e = b.anCells;
            f = 0;
            for (g = e.length; f < g; f++)
                S(e[f])
        }
        if (b = b.firstChild ? b : b.nTr)
            (b = b.getAttribute("id")) && R(a.rowId)(d, b);
        return {
            data: d,
            cells: e
        }
    }
    function Ha(a, b, c, d) {
        var e = a.aoData[b], f = e._aData, g = [], j, i, n, l, q;
        if (null === e.nTr) {
            j = c || I.createElement("tr");
            e.nTr = j;
            e.anCells = g;
            j._DT_RowIndex = b;
            La(a, e);
            l = 0;
            for (q = a.aoColumns.length; l < q; l++) {
                n = a.aoColumns[l];
                i = c ? d[l] : I.createElement(n.sCellType);
                i._DT_CellIndex = {
                    row: b,
                    column: l
                };
                g.push(i);
                if ((!c || n.mRender || n.mData !== l) && (!h.isPlainObject(n.mData) || n.mData._ !== l + ".display"))
                    i.innerHTML = B(a, b, l, "display");
                n.sClass && (i.className += " " + n.sClass);
                n.bVisible && !c ? j.appendChild(i) : !n.bVisible && c && i.parentNode.removeChild(i);
                n.fnCreatedCell && n.fnCreatedCell.call(a.oInstance, i, B(a, b, l), f, b, l)
            }
            u(a, "aoRowCreatedCallback", null, [j, f, b])
        }
        e.nTr.setAttribute("role", "row")
    }
    function La(a, b) {
        var c = b.nTr
          , d = b._aData;
        if (c) {
            var e = a.rowIdFn(d);
            e && (c.id = e);
            d.DT_RowClass && (e = d.DT_RowClass.split(" "),
            b.__rowc = b.__rowc ? pa(b.__rowc.concat(e)) : e,
            h(c).removeClass(b.__rowc.join(" ")).addClass(d.DT_RowClass));
            d.DT_RowAttr && h(c).attr(d.DT_RowAttr);
            d.DT_RowData && h(c).data(d.DT_RowData)
        }
    }
    function kb(a) {
        var b, c, d, e, f, g = a.nTHead, j = a.nTFoot, i = 0 === h("th, td", g).length, n = a.oClasses, l = a.aoColumns;
        i && (e = h("<tr/>").appendTo(g));
        b = 0;
        for (c = l.length; b < c; b++)
            f = l[b],
            d = h(f.nTh).addClass(f.sClass),
            i && d.appendTo(e),
            a.oFeatures.bSort && (d.addClass(f.sSortingClass),
            !1 !== f.bSortable && (d.attr("tabindex", a.iTabIndex).attr("aria-controls", a.sTableId),
            Ma(a, f.nTh, b))),
            f.sTitle != d[0].innerHTML && d.html(f.sTitle),
            Na(a, "header")(a, d, f, n);
        i && da(a.aoHeader, g);
        h(g).find(">tr").attr("role", "row");
        h(g).find(">tr>th, >tr>td").addClass(n.sHeaderTH);
        h(j).find(">tr>th, >tr>td").addClass(n.sFooterTH);
        if (null !== j) {
            a = a.aoFooter[0];
            b = 0;
            for (c = a.length; b < c; b++)
                f = l[b],
                f.nTf = a[b].cell,
                f.sClass && h(f.nTf).addClass(f.sClass)
        }
    }
    function ea(a, b, c) {
        var d, e, f, g = [], j = [], i = a.aoColumns.length, n;
        if (b) {
            c === k && (c = !1);
            d = 0;
            for (e = b.length; d < e; d++) {
                g[d] = b[d].slice();
                g[d].nTr = b[d].nTr;
                for (f = i - 1; 0 <= f; f--)
                    !a.aoColumns[f].bVisible && !c && g[d].splice(f, 1);
                j.push([])
            }
            d = 0;
            for (e = g.length; d < e; d++) {
                if (a = g[d].nTr)
                    for (; f = a.firstChild; )
                        a.removeChild(f);
                f = 0;
                for (b = g[d].length; f < b; f++)
                    if (n = i = 1,
                    j[d][f] === k) {
                        a.appendChild(g[d][f].cell);
                        for (j[d][f] = 1; g[d + i] !== k && g[d][f].cell == g[d + i][f].cell; )
                            j[d + i][f] = 1,
                            i++;
                        for (; g[d][f + n] !== k && g[d][f].cell == g[d][f + n].cell; ) {
                            for (c = 0; c < i; c++)
                                j[d + c][f + n] = 1;
                            n++
                        }
                        h(g[d][f].cell).attr("rowspan", i).attr("colspan", n)
                    }
            }
        }
    }
    function O(a) {
        var b = u(a, "aoPreDrawCallback", "preDraw", [a]);
        if (-1 !== h.inArray(!1, b))
            C(a, !1);
        else {
            var b = []
              , c = 0
              , d = a.asStripeClasses
              , e = d.length
              , f = a.oLanguage
              , g = a.iInitDisplayStart
              , j = "ssp" == y(a)
              , i = a.aiDisplay;
            a.bDrawing = !0;
            g !== k && -1 !== g && (a._iDisplayStart = j ? g : g >= a.fnRecordsDisplay() ? 0 : g,
            a.iInitDisplayStart = -1);
            var g = a._iDisplayStart
              , n = a.fnDisplayEnd();
            if (a.bDeferLoading)
                a.bDeferLoading = !1,
                a.iDraw++,
                C(a, !1);
            else if (j) {
                if (!a.bDestroying && !lb(a))
                    return
            } else
                a.iDraw++;
            if (0 !== i.length) {
                f = j ? a.aoData.length : n;
                for (j = j ? 0 : g; j < f; j++) {
                    var l = i[j]
                      , q = a.aoData[l];
                    null === q.nTr && Ha(a, l);
                    l = q.nTr;
                    if (0 !== e) {
                        var t = d[c % e];
                        q._sRowStripe != t && (h(l).removeClass(q._sRowStripe).addClass(t),
                        q._sRowStripe = t)
                    }
                    u(a, "aoRowCallback", null, [l, q._aData, c, j]);
                    b.push(l);
                    c++
                }
            } else
                c = f.sZeroRecords,
                1 == a.iDraw && "ajax" == y(a) ? c = f.sLoadingRecords : f.sEmptyTable && 0 === a.fnRecordsTotal() && (c = f.sEmptyTable),
                b[0] = h("<tr/>", {
                    "class": e ? d[0] : ""
                }).append(h("<td />", {
                    valign: "top",
                    colSpan: aa(a),
                    "class": a.oClasses.sRowEmpty
                }).html(c))[0];
            u(a, "aoHeaderCallback", "header", [h(a.nTHead).children("tr")[0], Ka(a), g, n, i]);
            u(a, "aoFooterCallback", "footer", [h(a.nTFoot).children("tr")[0], Ka(a), g, n, i]);
            d = h(a.nTBody);
            d.children().detach();
            d.append(h(b));
            u(a, "aoDrawCallback", "draw", [a]);
            a.bSorted = !1;
            a.bFiltered = !1;
            a.bDrawing = !1
        }
    }
    function T(a, b) {
        var c = a.oFeatures
          , d = c.bFilter;
        c.bSort && mb(a);
        d ? fa(a, a.oPreviousSearch) : a.aiDisplay = a.aiDisplayMaster.slice();
        !0 !== b && (a._iDisplayStart = 0);
        a._drawHold = b;
        O(a);
        a._drawHold = !1
    }
    function nb(a) {
        var b = a.oClasses
          , c = h(a.nTable)
          , c = h("<div/>").insertBefore(c)
          , d = a.oFeatures
          , e = h("<div/>", {
            id: a.sTableId + "_wrapper",
            "class": b.sWrapper + (a.nTFoot ? "" : " " + b.sNoFooter)
        });
        a.nHolding = c[0];
        a.nTableWrapper = e[0];
        a.nTableReinsertBefore = a.nTable.nextSibling;
        for (var f = a.sDom.split(""), g, j, i, n, l, q, t = 0; t < f.length; t++) {
            g = null;
            j = f[t];
            if ("<" == j) {
                i = h("<div/>")[0];
                n = f[t + 1];
                if ("'" == n || '"' == n) {
                    l = "";
                    for (q = 2; f[t + q] != n; )
                        l += f[t + q],
                        q++;
                    "H" == l ? l = b.sJUIHeader : "F" == l && (l = b.sJUIFooter);
                    -1 != l.indexOf(".") ? (n = l.split("."),
                    i.id = n[0].substr(1, n[0].length - 1),
                    i.className = n[1]) : "#" == l.charAt(0) ? i.id = l.substr(1, l.length - 1) : i.className = l;
                    t += q
                }
                e.append(i);
                e = h(i)
            } else if (">" == j)
                e = e.parent();
            else if ("l" == j && d.bPaginate && d.bLengthChange)
                g = ob(a);
            else if ("f" == j && d.bFilter)
                g = pb(a);
            else if ("r" == j && d.bProcessing)
                g = qb(a);
            else if ("t" == j)
                g = rb(a);
            else if ("i" == j && d.bInfo)
                g = sb(a);
            else if ("p" == j && d.bPaginate)
                g = tb(a);
            else if (0 !== m.ext.feature.length) {
                i = m.ext.feature;
                q = 0;
                for (n = i.length; q < n; q++)
                    if (j == i[q].cFeature) {
                        g = i[q].fnInit(a);
                        break
                    }
            }
            g && (i = a.aanFeatures,
            i[j] || (i[j] = []),
            i[j].push(g),
            e.append(g))
        }
        c.replaceWith(e);
        a.nHolding = null
    }
    function da(a, b) {
        var c = h(b).children("tr"), d, e, f, g, j, i, n, l, q, t;
        a.splice(0, a.length);
        f = 0;
        for (i = c.length; f < i; f++)
            a.push([]);
        f = 0;
        for (i = c.length; f < i; f++) {
            d = c[f];
            for (e = d.firstChild; e; ) {
                if ("TD" == e.nodeName.toUpperCase() || "TH" == e.nodeName.toUpperCase()) {
                    l = 1 * e.getAttribute("colspan");
                    q = 1 * e.getAttribute("rowspan");
                    l = !l || 0 === l || 1 === l ? 1 : l;
                    q = !q || 0 === q || 1 === q ? 1 : q;
                    g = 0;
                    for (j = a[f]; j[g]; )
                        g++;
                    n = g;
                    t = 1 === l ? !0 : !1;
                    for (j = 0; j < l; j++)
                        for (g = 0; g < q; g++)
                            a[f + g][n + j] = {
                                cell: e,
                                unique: t
                            },
                            a[f + g].nTr = d
                }
                e = e.nextSibling
            }
        }
    }
    function qa(a, b, c) {
        var d = [];
        c || (c = a.aoHeader,
        b && (c = [],
        da(c, b)));
        for (var b = 0, e = c.length; b < e; b++)
            for (var f = 0, g = c[b].length; f < g; f++)
                if (c[b][f].unique && (!d[f] || !a.bSortCellsTop))
                    d[f] = c[b][f].cell;
        return d
    }
    function ra(a, b, c) {
        u(a, "aoServerParams", "serverParams", [b]);
        if (b && h.isArray(b)) {
            var d = {}
              , e = /(.*?)\[\]$/;
            h.each(b, function(a, b) {
                var c = b.name.match(e);
                c ? (c = c[0],
                d[c] || (d[c] = []),
                d[c].push(b.value)) : d[b.name] = b.value
            });
            b = d
        }
        var f, g = a.ajax, j = a.oInstance, i = function(b) {
            u(a, null, "xhr", [a, b, a.jqXHR]);
            c(b)
        };
        if (h.isPlainObject(g) && g.data) {
            f = g.data;
            var n = h.isFunction(f) ? f(b, a) : f
              , b = h.isFunction(f) && n ? n : h.extend(!0, b, n);
            delete g.data
        }
        n = {
            data: b,
            success: function(b) {
                var c = b.error || b.sError;
                c && L(a, 0, c);
                a.json = b;
                i(b)
            },
            dataType: "json",
            cache: !1,
            type: a.sServerMethod,
            error: function(b, c) {
                var d = u(a, null, "xhr", [a, null, a.jqXHR]);
                -1 === h.inArray(!0, d) && ("parsererror" == c ? L(a, 0, "Invalid JSON response", 1) : 4 === b.readyState && L(a, 0, "Ajax error", 7));
                C(a, !1)
            }
        };
        a.oAjaxData = b;
        u(a, null, "preXhr", [a, b]);
        a.fnServerData ? a.fnServerData.call(j, a.sAjaxSource, h.map(b, function(a, b) {
            return {
                name: b,
                value: a
            }
        }), i, a) : a.sAjaxSource || "string" === typeof g ? a.jqXHR = h.ajax(h.extend(n, {
            url: g || a.sAjaxSource
        })) : h.isFunction(g) ? a.jqXHR = g.call(j, b, i, a) : (a.jqXHR = h.ajax(h.extend(n, g)),
        g.data = f)
    }
    function lb(a) {
        return a.bAjaxDataGet ? (a.iDraw++,
        C(a, !0),
        ra(a, ub(a), function(b) {
            vb(a, b)
        }),
        !1) : !0
    }
    function ub(a) {
        var b = a.aoColumns, c = b.length, d = a.oFeatures, e = a.oPreviousSearch, f = a.aoPreSearchCols, g, j = [], i, n, l, q = V(a);
        g = a._iDisplayStart;
        i = !1 !== d.bPaginate ? a._iDisplayLength : -1;
        var k = function(a, b) {
            j.push({
                name: a,
                value: b
            })
        };
        k("sEcho", a.iDraw);
        k("iColumns", c);
        k("sColumns", G(b, "sName").join(","));
        k("iDisplayStart", g);
        k("iDisplayLength", i);
        var S = {
            draw: a.iDraw,
            columns: [],
            order: [],
            start: g,
            length: i,
            search: {
                value: e.sSearch,
                regex: e.bRegex
            }
        };
        for (g = 0; g < c; g++)
            n = b[g],
            l = f[g],
            i = "function" == typeof n.mData ? "function" : n.mData,
            S.columns.push({
                data: i,
                name: n.sName,
                searchable: n.bSearchable,
                orderable: n.bSortable,
                search: {
                    value: l.sSearch,
                    regex: l.bRegex
                }
            }),
            k("mDataProp_" + g, i),
            d.bFilter && (k("sSearch_" + g, l.sSearch),
            k("bRegex_" + g, l.bRegex),
            k("bSearchable_" + g, n.bSearchable)),
            d.bSort && k("bSortable_" + g, n.bSortable);
        d.bFilter && (k("sSearch", e.sSearch),
        k("bRegex", e.bRegex));
        d.bSort && (h.each(q, function(a, b) {
            S.order.push({
                column: b.col,
                dir: b.dir
            });
            k("iSortCol_" + a, b.col);
            k("sSortDir_" + a, b.dir)
        }),
        k("iSortingCols", q.length));
        b = m.ext.legacy.ajax;
        return null === b ? a.sAjaxSource ? j : S : b ? j : S
    }
    function vb(a, b) {
        var c = sa(a, b)
          , d = b.sEcho !== k ? b.sEcho : b.draw
          , e = b.iTotalRecords !== k ? b.iTotalRecords : b.recordsTotal
          , f = b.iTotalDisplayRecords !== k ? b.iTotalDisplayRecords : b.recordsFiltered;
        if (d) {
            if (1 * d < a.iDraw)
                return;
            a.iDraw = 1 * d
        }
        na(a);
        a._iRecordsTotal = parseInt(e, 10);
        a._iRecordsDisplay = parseInt(f, 10);
        d = 0;
        for (e = c.length; d < e; d++)
            N(a, c[d]);
        a.aiDisplay = a.aiDisplayMaster.slice();
        a.bAjaxDataGet = !1;
        O(a);
        a._bInitComplete || ta(a, b);
        a.bAjaxDataGet = !0;
        C(a, !1)
    }
    function sa(a, b) {
        var c = h.isPlainObject(a.ajax) && a.ajax.dataSrc !== k ? a.ajax.dataSrc : a.sAjaxDataProp;
        return "data" === c ? b.aaData || b[c] : "" !== c ? Q(c)(b) : b
    }
    function pb(a) {
        var b = a.oClasses
          , c = a.sTableId
          , d = a.oLanguage
          , e = a.oPreviousSearch
          , f = a.aanFeatures
          , g = '<input type="search" class="' + b.sFilterInput + '"/>'
          , j = d.sSearch
          , j = j.match(/_INPUT_/) ? j.replace("_INPUT_", g) : j + g
          , b = h("<div/>", {
            id: !f.f ? c + "_filter" : null,
            "class": b.sFilter
        }).append(h("<label/>").append(j))
          , f = function() {
            var b = !this.value ? "" : this.value;
            b != e.sSearch && (fa(a, {
                sSearch: b,
                bRegex: e.bRegex,
                bSmart: e.bSmart,
                bCaseInsensitive: e.bCaseInsensitive
            }),
            a._iDisplayStart = 0,
            O(a))
        }
          , g = null !== a.searchDelay ? a.searchDelay : "ssp" === y(a) ? 400 : 0
          , i = h("input", b).val(e.sSearch).attr("placeholder", d.sSearchPlaceholder).bind("keyup.DT search.DT input.DT paste.DT cut.DT", g ? Oa(f, g) : f).bind("keypress.DT", function(a) {
            if (13 == a.keyCode)
                return !1
        }).attr("aria-controls", c);
        h(a.nTable).on("search.dt.DT", function(b, c) {
            if (a === c)
                try {
                    i[0] !== I.activeElement && i.val(e.sSearch)
                } catch (d) {}
        });
        return b[0]
    }
    function fa(a, b, c) {
        var d = a.oPreviousSearch
          , e = a.aoPreSearchCols
          , f = function(a) {
            d.sSearch = a.sSearch;
            d.bRegex = a.bRegex;
            d.bSmart = a.bSmart;
            d.bCaseInsensitive = a.bCaseInsensitive
        };
        Ga(a);
        if ("ssp" != y(a)) {
            wb(a, b.sSearch, c, b.bEscapeRegex !== k ? !b.bEscapeRegex : b.bRegex, b.bSmart, b.bCaseInsensitive);
            f(b);
            for (b = 0; b < e.length; b++)
                xb(a, e[b].sSearch, b, e[b].bEscapeRegex !== k ? !e[b].bEscapeRegex : e[b].bRegex, e[b].bSmart, e[b].bCaseInsensitive);
            yb(a)
        } else
            f(b);
        a.bFiltered = !0;
        u(a, null, "search", [a])
    }
    function yb(a) {
        for (var b = m.ext.search, c = a.aiDisplay, d, e, f = 0, g = b.length; f < g; f++) {
            for (var j = [], i = 0, n = c.length; i < n; i++)
                e = c[i],
                d = a.aoData[e],
                b[f](a, d._aFilterData, e, d._aData, i) && j.push(e);
            c.length = 0;
            h.merge(c, j)
        }
    }
    function xb(a, b, c, d, e, f) {
        if ("" !== b)
            for (var g = a.aiDisplay, d = Pa(b, d, e, f), e = g.length - 1; 0 <= e; e--)
                b = a.aoData[g[e]]._aFilterData[c],
                d.test(b) || g.splice(e, 1)
    }
    function wb(a, b, c, d, e, f) {
        var d = Pa(b, d, e, f), e = a.oPreviousSearch.sSearch, f = a.aiDisplayMaster, g;
        0 !== m.ext.search.length && (c = !0);
        g = zb(a);
        if (0 >= b.length)
            a.aiDisplay = f.slice();
        else {
            if (g || c || e.length > b.length || 0 !== b.indexOf(e) || a.bSorted)
                a.aiDisplay = f.slice();
            b = a.aiDisplay;
            for (c = b.length - 1; 0 <= c; c--)
                d.test(a.aoData[b[c]]._sFilterRow) || b.splice(c, 1)
        }
    }
    function Pa(a, b, c, d) {
        a = b ? a : Qa(a);
        c && (a = "^(?=.*?" + h.map(a.match(/"[^"]+"|[^ ]+/g) || [""], function(a) {
            if ('"' === a.charAt(0))
                var b = a.match(/^"(.*)"$/)
                  , a = b ? b[1] : a;
            return a.replace('"', "")
        }).join(")(?=.*?") + ").*$");
        return RegExp(a, d ? "i" : "")
    }
    function zb(a) {
        var b = a.aoColumns, c, d, e, f, g, j, i, h, l = m.ext.type.search;
        c = !1;
        d = 0;
        for (f = a.aoData.length; d < f; d++)
            if (h = a.aoData[d],
            !h._aFilterData) {
                j = [];
                e = 0;
                for (g = b.length; e < g; e++)
                    c = b[e],
                    c.bSearchable ? (i = B(a, d, e, "filter"),
                    l[c.sType] && (i = l[c.sType](i)),
                    null === i && (i = ""),
                    "string" !== typeof i && i.toString && (i = i.toString())) : i = "",
                    i.indexOf && -1 !== i.indexOf("&") && (ua.innerHTML = i,
                    i = Zb ? ua.textContent : ua.innerText),
                    i.replace && (i = i.replace(/[\r\n]/g, "")),
                    j.push(i);
                h._aFilterData = j;
                h._sFilterRow = j.join("  ");
                c = !0
            }
        return c
    }
    function Ab(a) {
        return {
            search: a.sSearch,
            smart: a.bSmart,
            regex: a.bRegex,
            caseInsensitive: a.bCaseInsensitive
        }
    }
    function Bb(a) {
        return {
            sSearch: a.search,
            bSmart: a.smart,
            bRegex: a.regex,
            bCaseInsensitive: a.caseInsensitive
        }
    }
    function sb(a) {
        var b = a.sTableId
          , c = a.aanFeatures.i
          , d = h("<div/>", {
            "class": a.oClasses.sInfo,
            id: !c ? b + "_info" : null
        });
        c || (a.aoDrawCallback.push({
            fn: Cb,
            sName: "information"
        }),
        d.attr("role", "status").attr("aria-live", "polite"),
        h(a.nTable).attr("aria-describedby", b + "_info"));
        return d[0]
    }
    function Cb(a) {
        var b = a.aanFeatures.i;
        if (0 !== b.length) {
            var c = a.oLanguage
              , d = a._iDisplayStart + 1
              , e = a.fnDisplayEnd()
              , f = a.fnRecordsTotal()
              , g = a.fnRecordsDisplay()
              , j = g ? c.sInfo : c.sInfoEmpty;
            g !== f && (j += " " + c.sInfoFiltered);
            j += c.sInfoPostFix;
            j = Db(a, j);
            c = c.fnInfoCallback;
            null !== c && (j = c.call(a.oInstance, a, d, e, f, g, j));
            h(b).html(j)
        }
    }
    function Db(a, b) {
        var c = a.fnFormatNumber
          , d = a._iDisplayStart + 1
          , e = a._iDisplayLength
          , f = a.fnRecordsDisplay()
          , g = -1 === e;
        return b.replace(/_START_/g, c.call(a, d)).replace(/_END_/g, c.call(a, a.fnDisplayEnd())).replace(/_MAX_/g, c.call(a, a.fnRecordsTotal())).replace(/_TOTAL_/g, c.call(a, f)).replace(/_PAGE_/g, c.call(a, g ? 1 : Math.ceil(d / e))).replace(/_PAGES_/g, c.call(a, g ? 1 : Math.ceil(f / e)))
    }
    function ga(a) {
        var b, c, d = a.iInitDisplayStart, e = a.aoColumns, f;
        c = a.oFeatures;
        var g = a.bDeferLoading;
        if (a.bInitialised) {
            nb(a);
            kb(a);
            ea(a, a.aoHeader);
            ea(a, a.aoFooter);
            C(a, !0);
            c.bAutoWidth && Fa(a);
            b = 0;
            for (c = e.length; b < c; b++)
                f = e[b],
                f.sWidth && (f.nTh.style.width = x(f.sWidth));
            u(a, null, "preInit", [a]);
            T(a);
            e = y(a);
            if ("ssp" != e || g)
                "ajax" == e ? ra(a, [], function(c) {
                    var f = sa(a, c);
                    for (b = 0; b < f.length; b++)
                        N(a, f[b]);
                    a.iInitDisplayStart = d;
                    T(a);
                    C(a, !1);
                    ta(a, c)
                }, a) : (C(a, !1),
                ta(a))
        } else
            setTimeout(function() {
                ga(a)
            }, 200)
    }
    function ta(a, b) {
        a._bInitComplete = !0;
        (b || a.oInit.aaData) && Y(a);
        u(a, null, "plugin-init", [a, b]);
        u(a, "aoInitComplete", "init", [a, b])
    }
    function Ra(a, b) {
        var c = parseInt(b, 10);
        a._iDisplayLength = c;
        Sa(a);
        u(a, null, "length", [a, c])
    }
    function ob(a) {
        for (var b = a.oClasses, c = a.sTableId, d = a.aLengthMenu, e = h.isArray(d[0]), f = e ? d[0] : d, d = e ? d[1] : d, e = h("<select/>", {
            name: c + "_length",
            "aria-controls": c,
            "class": b.sLengthSelect
        }), g = 0, j = f.length; g < j; g++)
            e[0][g] = new Option(d[g],f[g]);
        var i = h("<div><label/></div>").addClass(b.sLength);
        a.aanFeatures.l || (i[0].id = c + "_length");
        i.children().append(a.oLanguage.sLengthMenu.replace("_MENU_", e[0].outerHTML));
        h("select", i).val(a._iDisplayLength).bind("change.DT", function() {
            Ra(a, h(this).val());
            O(a)
        });
        h(a.nTable).bind("length.dt.DT", function(b, c, d) {
            a === c && h("select", i).val(d)
        });
        return i[0]
    }
    function tb(a) {
        var b = a.sPaginationType
          , c = m.ext.pager[b]
          , d = "function" === typeof c
          , e = function(a) {
            O(a)
        }
          , b = h("<div/>").addClass(a.oClasses.sPaging + b)[0]
          , f = a.aanFeatures;
        d || c.fnInit(a, b, e);
        f.p || (b.id = a.sTableId + "_paginate",
        a.aoDrawCallback.push({
            fn: function(a) {
                if (d) {
                    var b = a._iDisplayStart, i = a._iDisplayLength, h = a.fnRecordsDisplay(), l = -1 === i, b = l ? 0 : Math.ceil(b / i), i = l ? 1 : Math.ceil(h / i), h = c(b, i), k, l = 0;
                    for (k = f.p.length; l < k; l++)
                        Na(a, "pageButton")(a, f.p[l], l, h, b, i)
                } else
                    c.fnUpdate(a, e)
            },
            sName: "pagination"
        }));
        return b
    }
    function Ta(a, b, c) {
        var d = a._iDisplayStart
          , e = a._iDisplayLength
          , f = a.fnRecordsDisplay();
        0 === f || -1 === e ? d = 0 : "number" === typeof b ? (d = b * e,
        d > f && (d = 0)) : "first" == b ? d = 0 : "previous" == b ? (d = 0 <= e ? d - e : 0,
        0 > d && (d = 0)) : "next" == b ? d + e < f && (d += e) : "last" == b ? d = Math.floor((f - 1) / e) * e : L(a, 0, "Unknown paging action: " + b, 5);
        b = a._iDisplayStart !== d;
        a._iDisplayStart = d;
        b && (u(a, null, "page", [a]),
        c && O(a));
        return b
    }
    function qb(a) {
        return h("<div/>", {
            id: !a.aanFeatures.r ? a.sTableId + "_processing" : null,
            "class": a.oClasses.sProcessing
        }).html(a.oLanguage.sProcessing).insertBefore(a.nTable)[0]
    }
    function C(a, b) {
        a.oFeatures.bProcessing && h(a.aanFeatures.r).css("display", b ? "block" : "none");
        u(a, null, "processing", [a, b])
    }
    function rb(a) {
        var b = h(a.nTable);
        b.attr("role", "grid");
        var c = a.oScroll;
        if ("" === c.sX && "" === c.sY)
            return a.nTable;
        var d = c.sX
          , e = c.sY
          , f = a.oClasses
          , g = b.children("caption")
          , j = g.length ? g[0]._captionSide : null
          , i = h(b[0].cloneNode(!1))
          , n = h(b[0].cloneNode(!1))
          , l = b.children("tfoot");
        l.length || (l = null);
        i = h("<div/>", {
            "class": f.sScrollWrapper
        }).append(h("<div/>", {
            "class": f.sScrollHead
        }).css({
            overflow: "hidden",
            position: "relative",
            border: 0,
            width: d ? !d ? null : x(d) : "100%"
        }).append(h("<div/>", {
            "class": f.sScrollHeadInner
        }).css({
            "box-sizing": "content-box",
            width: c.sXInner || "100%"
        }).append(i.removeAttr("id").css("margin-left", 0).append("top" === j ? g : null).append(b.children("thead"))))).append(h("<div/>", {
            "class": f.sScrollBody
        }).css({
            position: "relative",
            overflow: "auto",
            width: !d ? null : x(d)
        }).append(b));
        l && i.append(h("<div/>", {
            "class": f.sScrollFoot
        }).css({
            overflow: "hidden",
            border: 0,
            width: d ? !d ? null : x(d) : "100%"
        }).append(h("<div/>", {
            "class": f.sScrollFootInner
        }).append(n.removeAttr("id").css("margin-left", 0).append("bottom" === j ? g : null).append(b.children("tfoot")))));
        var b = i.children()
          , k = b[0]
          , f = b[1]
          , t = l ? b[2] : null;
        if (d)
            h(f).on("scroll.DT", function() {
                var a = this.scrollLeft;
                k.scrollLeft = a;
                l && (t.scrollLeft = a)
            });
        h(f).css(e && c.bCollapse ? "max-height" : "height", e);
        a.nScrollHead = k;
        a.nScrollBody = f;
        a.nScrollFoot = t;
        a.aoDrawCallback.push({
            fn: ka,
            sName: "scrolling"
        });
        return i[0]
    }
    function ka(a) {
        var b = a.oScroll, c = b.sX, d = b.sXInner, e = b.sY, b = b.iBarWidth, f = h(a.nScrollHead), g = f[0].style, j = f.children("div"), i = j[0].style, n = j.children("table"), j = a.nScrollBody, l = h(j), q = j.style, t = h(a.nScrollFoot).children("div"), m = t.children("table"), o = h(a.nTHead), F = h(a.nTable), p = F[0], r = p.style, u = a.nTFoot ? h(a.nTFoot) : null, Eb = a.oBrowser, Ua = Eb.bScrollOversize, s = G(a.aoColumns, "nTh"), P, v, w, y, z = [], A = [], B = [], C = [], D, E = function(a) {
            a = a.style;
            a.paddingTop = "0";
            a.paddingBottom = "0";
            a.borderTopWidth = "0";
            a.borderBottomWidth = "0";
            a.height = 0
        };
        v = j.scrollHeight > j.clientHeight;
        if (a.scrollBarVis !== v && a.scrollBarVis !== k)
            a.scrollBarVis = v,
            Y(a);
        else {
            a.scrollBarVis = v;
            F.children("thead, tfoot").remove();
            u && (w = u.clone().prependTo(F),
            P = u.find("tr"),
            w = w.find("tr"));
            y = o.clone().prependTo(F);
            o = o.find("tr");
            v = y.find("tr");
            y.find("th, td").removeAttr("tabindex");
            c || (q.width = "100%",
            f[0].style.width = "100%");
            h.each(qa(a, y), function(b, c) {
                D = Z(a, b);
                c.style.width = a.aoColumns[D].sWidth
            });
            u && J(function(a) {
                a.style.width = ""
            }, w);
            f = F.outerWidth();
            if ("" === c) {
                r.width = "100%";
                if (Ua && (F.find("tbody").height() > j.offsetHeight || "scroll" == l.css("overflow-y")))
                    r.width = x(F.outerWidth() - b);
                f = F.outerWidth()
            } else
                "" !== d && (r.width = x(d),
                f = F.outerWidth());
            J(E, v);
            J(function(a) {
                B.push(a.innerHTML);
                z.push(x(h(a).css("width")))
            }, v);
            J(function(a, b) {
                if (h.inArray(a, s) !== -1)
                    a.style.width = z[b]
            }, o);
            h(v).height(0);
            u && (J(E, w),
            J(function(a) {
                C.push(a.innerHTML);
                A.push(x(h(a).css("width")))
            }, w),
            J(function(a, b) {
                a.style.width = A[b]
            }, P),
            h(w).height(0));
            J(function(a, b) {
                a.innerHTML = '<div class="dataTables_sizing" style="height:0;overflow:hidden;">' + B[b] + "</div>";
                a.style.width = z[b]
            }, v);
            u && J(function(a, b) {
                a.innerHTML = '<div class="dataTables_sizing" style="height:0;overflow:hidden;">' + C[b] + "</div>";
                a.style.width = A[b]
            }, w);
            if (F.outerWidth() < f) {
                P = j.scrollHeight > j.offsetHeight || "scroll" == l.css("overflow-y") ? f + b : f;
                if (Ua && (j.scrollHeight > j.offsetHeight || "scroll" == l.css("overflow-y")))
                    r.width = x(P - b);
                ("" === c || "" !== d) && L(a, 1, "Possible column misalignment", 6)
            } else
                P = "100%";
            q.width = x(P);
            g.width = x(P);
            u && (a.nScrollFoot.style.width = x(P));
            !e && Ua && (q.height = x(p.offsetHeight + b));
            c = F.outerWidth();
            n[0].style.width = x(c);
            i.width = x(c);
            d = F.height() > j.clientHeight || "scroll" == l.css("overflow-y");
            e = "padding" + (Eb.bScrollbarLeft ? "Left" : "Right");
            i[e] = d ? b + "px" : "0px";
            u && (m[0].style.width = x(c),
            t[0].style.width = x(c),
            t[0].style[e] = d ? b + "px" : "0px");
            F.children("colgroup").insertBefore(F.children("thead"));
            l.scroll();
            if ((a.bSorted || a.bFiltered) && !a._drawHold)
                j.scrollTop = 0
        }
    }
    function J(a, b, c) {
        for (var d = 0, e = 0, f = b.length, g, j; e < f; ) {
            g = b[e].firstChild;
            for (j = c ? c[e].firstChild : null; g; )
                1 === g.nodeType && (c ? a(g, j, d) : a(g, d),
                d++),
                g = g.nextSibling,
                j = c ? j.nextSibling : null;
            e++
        }
    }
    function Fa(a) {
        var b = a.nTable, c = a.aoColumns, d = a.oScroll, e = d.sY, f = d.sX, g = d.sXInner, j = c.length, i = la(a, "bVisible"), n = h("th", a.nTHead), l = b.getAttribute("width"), k = b.parentNode, t = !1, m, o, p = a.oBrowser, d = p.bScrollOversize;
        (m = b.style.width) && -1 !== m.indexOf("%") && (l = m);
        for (m = 0; m < i.length; m++)
            o = c[i[m]],
            null !== o.sWidth && (o.sWidth = Fb(o.sWidthOrig, k),
            t = !0);
        if (d || !t && !f && !e && j == aa(a) && j == n.length)
            for (m = 0; m < j; m++)
                i = Z(a, m),
                null !== i && (c[i].sWidth = x(n.eq(m).width()));
        else {
            j = h(b).clone().css("visibility", "hidden").removeAttr("id");
            j.find("tbody tr").remove();
            var r = h("<tr/>").appendTo(j.find("tbody"));
            j.find("thead, tfoot").remove();
            j.append(h(a.nTHead).clone()).append(h(a.nTFoot).clone());
            j.find("tfoot th, tfoot td").css("width", "");
            n = qa(a, j.find("thead")[0]);
            for (m = 0; m < i.length; m++)
                o = c[i[m]],
                n[m].style.width = null !== o.sWidthOrig && "" !== o.sWidthOrig ? x(o.sWidthOrig) : "",
                o.sWidthOrig && f && h(n[m]).append(h("<div/>").css({
                    width: o.sWidthOrig,
                    margin: 0,
                    padding: 0,
                    border: 0,
                    height: 1
                }));
            if (a.aoData.length)
                for (m = 0; m < i.length; m++)
                    t = i[m],
                    o = c[t],
                    h(Gb(a, t)).clone(!1).append(o.sContentPadding).appendTo(r);
            h("[name]", j).removeAttr("name");
            o = h("<div/>").css(f || e ? {
                position: "absolute",
                top: 0,
                left: 0,
                height: 1,
                right: 0,
                overflow: "hidden"
            } : {}).append(j).appendTo(k);
            f && g ? j.width(g) : f ? (j.css("width", "auto"),
            j.removeAttr("width"),
            j.width() < k.clientWidth && l && j.width(k.clientWidth)) : e ? j.width(k.clientWidth) : l && j.width(l);
            for (m = e = 0; m < i.length; m++)
                k = h(n[m]),
                g = k.outerWidth() - k.width(),
                k = p.bBounding ? Math.ceil(n[m].getBoundingClientRect().width) : k.outerWidth(),
                e += k,
                c[i[m]].sWidth = x(k - g);
            b.style.width = x(e);
            o.remove()
        }
        l && (b.style.width = x(l));
        if ((l || f) && !a._reszEvt)
            b = function() {
                h(D).bind("resize.DT-" + a.sInstance, Oa(function() {
                    Y(a)
                }))
            }
            ,
            d ? setTimeout(b, 1E3) : b(),
            a._reszEvt = !0
    }
    function Fb(a, b) {
        if (!a)
            return 0;
        var c = h("<div/>").css("width", x(a)).appendTo(b || I.body)
          , d = c[0].offsetWidth;
        c.remove();
        return d
    }
    function Gb(a, b) {
        var c = Hb(a, b);
        if (0 > c)
            return null;
        var d = a.aoData[c];
        return !d.nTr ? h("<td/>").html(B(a, c, b, "display"))[0] : d.anCells[b]
    }
    function Hb(a, b) {
        for (var c, d = -1, e = -1, f = 0, g = a.aoData.length; f < g; f++)
            c = B(a, f, b, "display") + "",
            c = c.replace($b, ""),
            c = c.replace(/&nbsp;/g, " "),
            c.length > d && (d = c.length,
            e = f);
        return e
    }
    function x(a) {
        return null === a ? "0px" : "number" == typeof a ? 0 > a ? "0px" : a + "px" : a.match(/\d$/) ? a + "px" : a
    }
    function V(a) {
        var b, c, d = [], e = a.aoColumns, f, g, j, i;
        b = a.aaSortingFixed;
        c = h.isPlainObject(b);
        var n = [];
        f = function(a) {
            a.length && !h.isArray(a[0]) ? n.push(a) : h.merge(n, a)
        }
        ;
        h.isArray(b) && f(b);
        c && b.pre && f(b.pre);
        f(a.aaSorting);
        c && b.post && f(b.post);
        for (a = 0; a < n.length; a++) {
            i = n[a][0];
            f = e[i].aDataSort;
            b = 0;
            for (c = f.length; b < c; b++)
                g = f[b],
                j = e[g].sType || "string",
                n[a]._idx === k && (n[a]._idx = h.inArray(n[a][1], e[g].asSorting)),
                d.push({
                    src: i,
                    col: g,
                    dir: n[a][1],
                    index: n[a]._idx,
                    type: j,
                    formatter: m.ext.type.order[j + "-pre"]
                })
        }
        return d
    }
    function mb(a) {
        var b, c, d = [], e = m.ext.type.order, f = a.aoData, g = 0, j, i = a.aiDisplayMaster, h;
        Ga(a);
        h = V(a);
        b = 0;
        for (c = h.length; b < c; b++)
            j = h[b],
            j.formatter && g++,
            Ib(a, j.col);
        if ("ssp" != y(a) && 0 !== h.length) {
            b = 0;
            for (c = i.length; b < c; b++)
                d[i[b]] = b;
            g === h.length ? i.sort(function(a, b) {
                var c, e, g, j, i = h.length, k = f[a]._aSortData, m = f[b]._aSortData;
                for (g = 0; g < i; g++)
                    if (j = h[g],
                    c = k[j.col],
                    e = m[j.col],
                    c = c < e ? -1 : c > e ? 1 : 0,
                    0 !== c)
                        return "asc" === j.dir ? c : -c;
                c = d[a];
                e = d[b];
                return c < e ? -1 : c > e ? 1 : 0
            }) : i.sort(function(a, b) {
                var c, g, j, i, k = h.length, m = f[a]._aSortData, p = f[b]._aSortData;
                for (j = 0; j < k; j++)
                    if (i = h[j],
                    c = m[i.col],
                    g = p[i.col],
                    i = e[i.type + "-" + i.dir] || e["string-" + i.dir],
                    c = i(c, g),
                    0 !== c)
                        return c;
                c = d[a];
                g = d[b];
                return c < g ? -1 : c > g ? 1 : 0
            })
        }
        a.bSorted = !0
    }
    function Jb(a) {
        for (var b, c, d = a.aoColumns, e = V(a), a = a.oLanguage.oAria, f = 0, g = d.length; f < g; f++) {
            c = d[f];
            var j = c.asSorting;
            b = c.sTitle.replace(/<.*?>/g, "");
            var i = c.nTh;
            i.removeAttribute("aria-sort");
            c.bSortable && (0 < e.length && e[0].col == f ? (i.setAttribute("aria-sort", "asc" == e[0].dir ? "ascending" : "descending"),
            c = j[e[0].index + 1] || j[0]) : c = j[0],
            b += "asc" === c ? a.sSortAscending : a.sSortDescending);
            i.setAttribute("aria-label", b)
        }
    }
    function Va(a, b, c, d) {
        var e = a.aaSorting
          , f = a.aoColumns[b].asSorting
          , g = function(a, b) {
            var c = a._idx;
            c === k && (c = h.inArray(a[1], f));
            return c + 1 < f.length ? c + 1 : b ? null : 0
        };
        "number" === typeof e[0] && (e = a.aaSorting = [e]);
        c && a.oFeatures.bSortMulti ? (c = h.inArray(b, G(e, "0")),
        -1 !== c ? (b = g(e[c], !0),
        null === b && 1 === e.length && (b = 0),
        null === b ? e.splice(c, 1) : (e[c][1] = f[b],
        e[c]._idx = b)) : (e.push([b, f[0], 0]),
        e[e.length - 1]._idx = 0)) : e.length && e[0][0] == b ? (b = g(e[0]),
        e.length = 1,
        e[0][1] = f[b],
        e[0]._idx = b) : (e.length = 0,
        e.push([b, f[0]]),
        e[0]._idx = 0);
        T(a);
        "function" == typeof d && d(a)
    }
    function Ma(a, b, c, d) {
        var e = a.aoColumns[c];
        Wa(b, {}, function(b) {
            !1 !== e.bSortable && (a.oFeatures.bProcessing ? (C(a, !0),
            setTimeout(function() {
                Va(a, c, b.shiftKey, d);
                "ssp" !== y(a) && C(a, !1)
            }, 0)) : Va(a, c, b.shiftKey, d))
        })
    }
    function va(a) {
        var b = a.aLastSort, c = a.oClasses.sSortColumn, d = V(a), e = a.oFeatures, f, g;
        if (e.bSort && e.bSortClasses) {
            e = 0;
            for (f = b.length; e < f; e++)
                g = b[e].src,
                h(G(a.aoData, "anCells", g)).removeClass(c + (2 > e ? e + 1 : 3));
            e = 0;
            for (f = d.length; e < f; e++)
                g = d[e].src,
                h(G(a.aoData, "anCells", g)).addClass(c + (2 > e ? e + 1 : 3))
        }
        a.aLastSort = d
    }
    function Ib(a, b) {
        var c = a.aoColumns[b], d = m.ext.order[c.sSortDataType], e;
        d && (e = d.call(a.oInstance, a, b, $(a, b)));
        for (var f, g = m.ext.type.order[c.sType + "-pre"], j = 0, i = a.aoData.length; j < i; j++)
            if (c = a.aoData[j],
            c._aSortData || (c._aSortData = []),
            !c._aSortData[b] || d)
                f = d ? e[j] : B(a, j, b, "sort"),
                c._aSortData[b] = g ? g(f) : f
    }
    function wa(a) {
        if (a.oFeatures.bStateSave && !a.bDestroying) {
            var b = {
                time: +new Date,
                start: a._iDisplayStart,
                length: a._iDisplayLength,
                order: h.extend(!0, [], a.aaSorting),
                search: Ab(a.oPreviousSearch),
                columns: h.map(a.aoColumns, function(b, d) {
                    return {
                        visible: b.bVisible,
                        search: Ab(a.aoPreSearchCols[d])
                    }
                })
            };
            u(a, "aoStateSaveParams", "stateSaveParams", [a, b]);
            a.oSavedState = b;
            a.fnStateSaveCallback.call(a.oInstance, a, b)
        }
    }
    function Kb(a) {
        var b, c, d = a.aoColumns;
        if (a.oFeatures.bStateSave) {
            var e = a.fnStateLoadCallback.call(a.oInstance, a);
            if (e && e.time && (b = u(a, "aoStateLoadParams", "stateLoadParams", [a, e]),
            -1 === h.inArray(!1, b) && (b = a.iStateDuration,
            !(0 < b && e.time < +new Date - 1E3 * b) && d.length === e.columns.length))) {
                a.oLoadedState = h.extend(!0, {}, e);
                e.start !== k && (a._iDisplayStart = e.start,
                a.iInitDisplayStart = e.start);
                e.length !== k && (a._iDisplayLength = e.length);
                e.order !== k && (a.aaSorting = [],
                h.each(e.order, function(b, c) {
                    a.aaSorting.push(c[0] >= d.length ? [0, c[1]] : c)
                }));
                e.search !== k && h.extend(a.oPreviousSearch, Bb(e.search));
                b = 0;
                for (c = e.columns.length; b < c; b++) {
                    var f = e.columns[b];
                    f.visible !== k && (d[b].bVisible = f.visible);
                    f.search !== k && h.extend(a.aoPreSearchCols[b], Bb(f.search))
                }
                u(a, "aoStateLoaded", "stateLoaded", [a, e])
            }
        }
    }
    function xa(a) {
        var b = m.settings
          , a = h.inArray(a, G(b, "nTable"));
        return -1 !== a ? b[a] : null
    }
    function L(a, b, c, d) {
        c = "DataTables warning: " + (a ? "table id=" + a.sTableId + " - " : "") + c;
        d && (c += ". For more information about this error, please see http://datatables.net/tn/" + d);
        if (b)
            D.console && console.log && console.log(c);
        else if (b = m.ext,
        b = b.sErrMode || b.errMode,
        a && u(a, null, "error", [a, d, c]),
        "alert" == b)
            alert(c);
        else {
            if ("throw" == b)
                throw Error(c);
            "function" == typeof b && b(a, d, c)
        }
    }
    function E(a, b, c, d) {
        h.isArray(c) ? h.each(c, function(c, d) {
            h.isArray(d) ? E(a, b, d[0], d[1]) : E(a, b, d)
        }) : (d === k && (d = c),
        b[c] !== k && (a[d] = b[c]))
    }
    function Lb(a, b, c) {
        var d, e;
        for (e in b)
            b.hasOwnProperty(e) && (d = b[e],
            h.isPlainObject(d) ? (h.isPlainObject(a[e]) || (a[e] = {}),
            h.extend(!0, a[e], d)) : a[e] = c && "data" !== e && "aaData" !== e && h.isArray(d) ? d.slice() : d);
        return a
    }
    function Wa(a, b, c) {
        h(a).bind("click.DT", b, function(b) {
            a.blur();
            c(b)
        }).bind("keypress.DT", b, function(a) {
            13 === a.which && (a.preventDefault(),
            c(a))
        }).bind("selectstart.DT", function() {
            return !1
        })
    }
    function z(a, b, c, d) {
        c && a[b].push({
            fn: c,
            sName: d
        })
    }
    function u(a, b, c, d) {
        var e = [];
        b && (e = h.map(a[b].slice().reverse(), function(b) {
            return b.fn.apply(a.oInstance, d)
        }));
        null !== c && (b = h.Event(c + ".dt"),
        h(a.nTable).trigger(b, d),
        e.push(b.result));
        return e
    }
    function Sa(a) {
        var b = a._iDisplayStart
          , c = a.fnDisplayEnd()
          , d = a._iDisplayLength;
        b >= c && (b = c - d);
        b -= b % d;
        if (-1 === d || 0 > b)
            b = 0;
        a._iDisplayStart = b
    }
    function Na(a, b) {
        var c = a.renderer
          , d = m.ext.renderer[b];
        return h.isPlainObject(c) && c[b] ? d[c[b]] || d._ : "string" === typeof c ? d[c] || d._ : d._
    }
    function y(a) {
        return a.oFeatures.bServerSide ? "ssp" : a.ajax || a.sAjaxSource ? "ajax" : "dom"
    }
    function ya(a, b) {
        var c = []
          , c = Mb.numbers_length
          , d = Math.floor(c / 2);
        b <= c ? c = W(0, b) : a <= d ? (c = W(0, c - 2),
        c.push("ellipsis"),
        c.push(b - 1)) : (a >= b - 1 - d ? c = W(b - (c - 2), b) : (c = W(a - d + 2, a + d - 1),
        c.push("ellipsis"),
        c.push(b - 1)),
        c.splice(0, 0, "ellipsis"),
        c.splice(0, 0, 0));
        c.DT_el = "span";
        return c
    }
    function db(a) {
        h.each({
            num: function(b) {
                return za(b, a)
            },
            "num-fmt": function(b) {
                return za(b, a, Xa)
            },
            "html-num": function(b) {
                return za(b, a, Aa)
            },
            "html-num-fmt": function(b) {
                return za(b, a, Aa, Xa)
            }
        }, function(b, c) {
            v.type.order[b + a + "-pre"] = c;
            b.match(/^html\-/) && (v.type.search[b + a] = v.type.search.html)
        })
    }
    function Nb(a) {
        return function() {
            var b = [xa(this[m.ext.iApiIndex])].concat(Array.prototype.slice.call(arguments));
            return m.ext.internal[a].apply(this, b)
        }
    }
    var m = function(a) {
        this.$ = function(a, b) {
            return this.api(!0).$(a, b)
        }
        ;
        this._ = function(a, b) {
            return this.api(!0).rows(a, b).data()
        }
        ;
        this.api = function(a) {
            return a ? new r(xa(this[v.iApiIndex])) : new r(this)
        }
        ;
        this.fnAddData = function(a, b) {
            var c = this.api(!0)
              , d = h.isArray(a) && (h.isArray(a[0]) || h.isPlainObject(a[0])) ? c.rows.add(a) : c.row.add(a);
            (b === k || b) && c.draw();
            return d.flatten().toArray()
        }
        ;
        this.fnAdjustColumnSizing = function(a) {
            var b = this.api(!0).columns.adjust()
              , c = b.settings()[0]
              , d = c.oScroll;
            a === k || a ? b.draw(!1) : ("" !== d.sX || "" !== d.sY) && ka(c)
        }
        ;
        this.fnClearTable = function(a) {
            var b = this.api(!0).clear();
            (a === k || a) && b.draw()
        }
        ;
        this.fnClose = function(a) {
            this.api(!0).row(a).child.hide()
        }
        ;
        this.fnDeleteRow = function(a, b, c) {
            var d = this.api(!0)
              , a = d.rows(a)
              , e = a.settings()[0]
              , h = e.aoData[a[0][0]];
            a.remove();
            b && b.call(this, e, h);
            (c === k || c) && d.draw();
            return h
        }
        ;
        this.fnDestroy = function(a) {
            this.api(!0).destroy(a)
        }
        ;
        this.fnDraw = function(a) {
            this.api(!0).draw(a)
        }
        ;
        this.fnFilter = function(a, b, c, d, e, h) {
            e = this.api(!0);
            null === b || b === k ? e.search(a, c, d, h) : e.column(b).search(a, c, d, h);
            e.draw()
        }
        ;
        this.fnGetData = function(a, b) {
            var c = this.api(!0);
            if (a !== k) {
                var d = a.nodeName ? a.nodeName.toLowerCase() : "";
                return b !== k || "td" == d || "th" == d ? c.cell(a, b).data() : c.row(a).data() || null
            }
            return c.data().toArray()
        }
        ;
        this.fnGetNodes = function(a) {
            var b = this.api(!0);
            return a !== k ? b.row(a).node() : b.rows().nodes().flatten().toArray()
        }
        ;
        this.fnGetPosition = function(a) {
            var b = this.api(!0)
              , c = a.nodeName.toUpperCase();
            return "TR" == c ? b.row(a).index() : "TD" == c || "TH" == c ? (a = b.cell(a).index(),
            [a.row, a.columnVisible, a.column]) : null
        }
        ;
        this.fnIsOpen = function(a) {
            return this.api(!0).row(a).child.isShown()
        }
        ;
        this.fnOpen = function(a, b, c) {
            return this.api(!0).row(a).child(b, c).show().child()[0]
        }
        ;
        this.fnPageChange = function(a, b) {
            var c = this.api(!0).page(a);
            (b === k || b) && c.draw(!1)
        }
        ;
        this.fnSetColumnVis = function(a, b, c) {
            a = this.api(!0).column(a).visible(b);
            (c === k || c) && a.columns.adjust().draw()
        }
        ;
        this.fnSettings = function() {
            return xa(this[v.iApiIndex])
        }
        ;
        this.fnSort = function(a) {
            this.api(!0).order(a).draw()
        }
        ;
        this.fnSortListener = function(a, b, c) {
            this.api(!0).order.listener(a, b, c)
        }
        ;
        this.fnUpdate = function(a, b, c, d, e) {
            var h = this.api(!0);
            c === k || null === c ? h.row(b).data(a) : h.cell(b, c).data(a);
            (e === k || e) && h.columns.adjust();
            (d === k || d) && h.draw();
            return 0
        }
        ;
        this.fnVersionCheck = v.fnVersionCheck;
        var b = this
          , c = a === k
          , d = this.length;
        c && (a = {});
        this.oApi = this.internal = v.internal;
        for (var e in m.ext.internal)
            e && (this[e] = Nb(e));
        this.each(function() {
            var e = {}, e = 1 < d ? Lb(e, a, !0) : a, g = 0, j, i = this.getAttribute("id"), n = !1, l = m.defaults, q = h(this);
            if ("table" != this.nodeName.toLowerCase())
                L(null, 0, "Non-table node initialisation (" + this.nodeName + ")", 2);
            else {
                eb(l);
                fb(l.column);
                K(l, l, !0);
                K(l.column, l.column, !0);
                K(l, h.extend(e, q.data()));
                var t = m.settings
                  , g = 0;
                for (j = t.length; g < j; g++) {
                    var p = t[g];
                    if (p.nTable == this || p.nTHead.parentNode == this || p.nTFoot && p.nTFoot.parentNode == this) {
                        g = e.bRetrieve !== k ? e.bRetrieve : l.bRetrieve;
                        if (c || g)
                            return p.oInstance;
                        if (e.bDestroy !== k ? e.bDestroy : l.bDestroy) {
                            p.oInstance.fnDestroy();
                            break
                        } else {
                            L(p, 0, "Cannot reinitialise DataTable", 3);
                            return
                        }
                    }
                    if (p.sTableId == this.id) {
                        t.splice(g, 1);
                        break
                    }
                }
                if (null === i || "" === i)
                    this.id = i = "DataTables_Table_" + m.ext._unique++;
                var o = h.extend(!0, {}, m.models.oSettings, {
                    sDestroyWidth: q[0].style.width,
                    sInstance: i,
                    sTableId: i
                });
                o.nTable = this;
                o.oApi = b.internal;
                o.oInit = e;
                t.push(o);
                o.oInstance = 1 === b.length ? b : q.dataTable();
                eb(e);
                e.oLanguage && Da(e.oLanguage);
                e.aLengthMenu && !e.iDisplayLength && (e.iDisplayLength = h.isArray(e.aLengthMenu[0]) ? e.aLengthMenu[0][0] : e.aLengthMenu[0]);
                e = Lb(h.extend(!0, {}, l), e);
                E(o.oFeatures, e, "bPaginate bLengthChange bFilter bSort bSortMulti bInfo bProcessing bAutoWidth bSortClasses bServerSide bDeferRender".split(" "));
                E(o, e, ["asStripeClasses", "ajax", "fnServerData", "fnFormatNumber", "sServerMethod", "aaSorting", "aaSortingFixed", "aLengthMenu", "sPaginationType", "sAjaxSource", "sAjaxDataProp", "iStateDuration", "sDom", "bSortCellsTop", "iTabIndex", "fnStateLoadCallback", "fnStateSaveCallback", "renderer", "searchDelay", "rowId", ["iCookieDuration", "iStateDuration"], ["oSearch", "oPreviousSearch"], ["aoSearchCols", "aoPreSearchCols"], ["iDisplayLength", "_iDisplayLength"], ["bJQueryUI", "bJUI"]]);
                E(o.oScroll, e, [["sScrollX", "sX"], ["sScrollXInner", "sXInner"], ["sScrollY", "sY"], ["bScrollCollapse", "bCollapse"]]);
                E(o.oLanguage, e, "fnInfoCallback");
                z(o, "aoDrawCallback", e.fnDrawCallback, "user");
                z(o, "aoServerParams", e.fnServerParams, "user");
                z(o, "aoStateSaveParams", e.fnStateSaveParams, "user");
                z(o, "aoStateLoadParams", e.fnStateLoadParams, "user");
                z(o, "aoStateLoaded", e.fnStateLoaded, "user");
                z(o, "aoRowCallback", e.fnRowCallback, "user");
                z(o, "aoRowCreatedCallback", e.fnCreatedRow, "user");
                z(o, "aoHeaderCallback", e.fnHeaderCallback, "user");
                z(o, "aoFooterCallback", e.fnFooterCallback, "user");
                z(o, "aoInitComplete", e.fnInitComplete, "user");
                z(o, "aoPreDrawCallback", e.fnPreDrawCallback, "user");
                o.rowIdFn = Q(e.rowId);
                gb(o);
                i = o.oClasses;
                e.bJQueryUI ? (h.extend(i, m.ext.oJUIClasses, e.oClasses),
                e.sDom === l.sDom && "lfrtip" === l.sDom && (o.sDom = '<"H"lfr>t<"F"ip>'),
                o.renderer) ? h.isPlainObject(o.renderer) && !o.renderer.header && (o.renderer.header = "jqueryui") : o.renderer = "jqueryui" : h.extend(i, m.ext.classes, e.oClasses);
                q.addClass(i.sTable);
                o.iInitDisplayStart === k && (o.iInitDisplayStart = e.iDisplayStart,
                o._iDisplayStart = e.iDisplayStart);
                null !== e.iDeferLoading && (o.bDeferLoading = !0,
                g = h.isArray(e.iDeferLoading),
                o._iRecordsDisplay = g ? e.iDeferLoading[0] : e.iDeferLoading,
                o._iRecordsTotal = g ? e.iDeferLoading[1] : e.iDeferLoading);
                var r = o.oLanguage;
                h.extend(!0, r, e.oLanguage);
                "" !== r.sUrl && (h.ajax({
                    dataType: "json",
                    url: r.sUrl,
                    success: function(a) {
                        Da(a);
                        K(l.oLanguage, a);
                        h.extend(true, r, a);
                        ga(o)
                    },
                    error: function() {
                        ga(o)
                    }
                }),
                n = !0);
                null === e.asStripeClasses && (o.asStripeClasses = [i.sStripeOdd, i.sStripeEven]);
                var g = o.asStripeClasses
                  , v = q.children("tbody").find("tr").eq(0);
                -1 !== h.inArray(!0, h.map(g, function(a) {
                    return v.hasClass(a)
                })) && (h("tbody tr", this).removeClass(g.join(" ")),
                o.asDestroyStripes = g.slice());
                t = [];
                g = this.getElementsByTagName("thead");
                0 !== g.length && (da(o.aoHeader, g[0]),
                t = qa(o));
                if (null === e.aoColumns) {
                    p = [];
                    g = 0;
                    for (j = t.length; g < j; g++)
                        p.push(null)
                } else
                    p = e.aoColumns;
                g = 0;
                for (j = p.length; g < j; g++)
                    Ea(o, t ? t[g] : null);
                ib(o, e.aoColumnDefs, p, function(a, b) {
                    ja(o, a, b)
                });
                if (v.length) {
                    var s = function(a, b) {
                        return a.getAttribute("data-" + b) !== null ? b : null
                    };
                    h(v[0]).children("th, td").each(function(a, b) {
                        var c = o.aoColumns[a];
                        if (c.mData === a) {
                            var d = s(b, "sort") || s(b, "order")
                              , e = s(b, "filter") || s(b, "search");
                            if (d !== null || e !== null) {
                                c.mData = {
                                    _: a + ".display",
                                    sort: d !== null ? a + ".@data-" + d : k,
                                    type: d !== null ? a + ".@data-" + d : k,
                                    filter: e !== null ? a + ".@data-" + e : k
                                };
                                ja(o, a)
                            }
                        }
                    })
                }
                var w = o.oFeatures;
                e.bStateSave && (w.bStateSave = !0,
                Kb(o, e),
                z(o, "aoDrawCallback", wa, "state_save"));
                if (e.aaSorting === k) {
                    t = o.aaSorting;
                    g = 0;
                    for (j = t.length; g < j; g++)
                        t[g][1] = o.aoColumns[g].asSorting[0]
                }
                va(o);
                w.bSort && z(o, "aoDrawCallback", function() {
                    if (o.bSorted) {
                        var a = V(o)
                          , b = {};
                        h.each(a, function(a, c) {
                            b[c.src] = c.dir
                        });
                        u(o, null, "order", [o, a, b]);
                        Jb(o)
                    }
                });
                z(o, "aoDrawCallback", function() {
                    (o.bSorted || y(o) === "ssp" || w.bDeferRender) && va(o)
                }, "sc");
                g = q.children("caption").each(function() {
                    this._captionSide = q.css("caption-side")
                });
                j = q.children("thead");
                0 === j.length && (j = h("<thead/>").appendTo(this));
                o.nTHead = j[0];
                j = q.children("tbody");
                0 === j.length && (j = h("<tbody/>").appendTo(this));
                o.nTBody = j[0];
                j = q.children("tfoot");
                if (0 === j.length && 0 < g.length && ("" !== o.oScroll.sX || "" !== o.oScroll.sY))
                    j = h("<tfoot/>").appendTo(this);
                0 === j.length || 0 === j.children().length ? q.addClass(i.sNoFooter) : 0 < j.length && (o.nTFoot = j[0],
                da(o.aoFooter, o.nTFoot));
                if (e.aaData)
                    for (g = 0; g < e.aaData.length; g++)
                        N(o, e.aaData[g]);
                else
                    (o.bDeferLoading || "dom" == y(o)) && ma(o, h(o.nTBody).children("tr"));
                o.aiDisplay = o.aiDisplayMaster.slice();
                o.bInitialised = !0;
                !1 === n && ga(o)
            }
        });
        b = null;
        return this
    }, v, r, p, s, Ya = {}, Ob = /[\r\n]/g, Aa = /<.*?>/g, ac = /^[\w\+\-]/, bc = /[\w\+\-]$/, cc = RegExp("(\\/|\\.|\\*|\\+|\\?|\\||\\(|\\)|\\[|\\]|\\{|\\}|\\\\|\\$|\\^|\\-)", "g"), Xa = /[',$£€¥%\u2009\u202F\u20BD\u20a9\u20BArfk]/gi, M = function(a) {
        return !a || !0 === a || "-" === a ? !0 : !1
    }, Pb = function(a) {
        var b = parseInt(a, 10);
        return !isNaN(b) && isFinite(a) ? b : null
    }, Qb = function(a, b) {
        Ya[b] || (Ya[b] = RegExp(Qa(b), "g"));
        return "string" === typeof a && "." !== b ? a.replace(/\./g, "").replace(Ya[b], ".") : a
    }, Za = function(a, b, c) {
        var d = "string" === typeof a;
        if (M(a))
            return !0;
        b && d && (a = Qb(a, b));
        c && d && (a = a.replace(Xa, ""));
        return !isNaN(parseFloat(a)) && isFinite(a)
    }, Rb = function(a, b, c) {
        return M(a) ? !0 : !(M(a) || "string" === typeof a) ? null : Za(a.replace(Aa, ""), b, c) ? !0 : null
    }, G = function(a, b, c) {
        var d = []
          , e = 0
          , f = a.length;
        if (c !== k)
            for (; e < f; e++)
                a[e] && a[e][b] && d.push(a[e][b][c]);
        else
            for (; e < f; e++)
                a[e] && d.push(a[e][b]);
        return d
    }, ha = function(a, b, c, d) {
        var e = []
          , f = 0
          , g = b.length;
        if (d !== k)
            for (; f < g; f++)
                a[b[f]][c] && e.push(a[b[f]][c][d]);
        else
            for (; f < g; f++)
                e.push(a[b[f]][c]);
        return e
    }, W = function(a, b) {
        var c = [], d;
        b === k ? (b = 0,
        d = a) : (d = b,
        b = a);
        for (var e = b; e < d; e++)
            c.push(e);
        return c
    }, Sb = function(a) {
        for (var b = [], c = 0, d = a.length; c < d; c++)
            a[c] && b.push(a[c]);
        return b
    }, pa = function(a) {
        var b = [], c, d, e = a.length, f, g = 0;
        d = 0;
        a: for (; d < e; d++) {
            c = a[d];
            for (f = 0; f < g; f++)
                if (b[f] === c)
                    continue a;
            b.push(c);
            g++
        }
        return b
    };
    m.util = {
        throttle: function(a, b) {
            var c = b !== k ? b : 200, d, e;
            return function() {
                var b = this
                  , g = +new Date
                  , h = arguments;
                d && g < d + c ? (clearTimeout(e),
                e = setTimeout(function() {
                    d = k;
                    a.apply(b, h)
                }, c)) : (d = g,
                a.apply(b, h))
            }
        },
        escapeRegex: function(a) {
            return a.replace(cc, "\\$1")
        }
    };
    var A = function(a, b, c) {
        a[b] !== k && (a[c] = a[b])
    }
      , ba = /\[.*?\]$/
      , U = /\(\)$/
      , Qa = m.util.escapeRegex
      , ua = h("<div>")[0]
      , Zb = ua.textContent !== k
      , $b = /<.*?>/g
      , Oa = m.util.throttle
      , Tb = []
      , w = Array.prototype
      , dc = function(a) {
        var b, c, d = m.settings, e = h.map(d, function(a) {
            return a.nTable
        });
        if (a) {
            if (a.nTable && a.oApi)
                return [a];
            if (a.nodeName && "table" === a.nodeName.toLowerCase())
                return b = h.inArray(a, e),
                -1 !== b ? [d[b]] : null;
            if (a && "function" === typeof a.settings)
                return a.settings().toArray();
            "string" === typeof a ? c = h(a) : a instanceof h && (c = a)
        } else
            return [];
        if (c)
            return c.map(function() {
                b = h.inArray(this, e);
                return -1 !== b ? d[b] : null
            }).toArray()
    };
    r = function(a, b) {
        if (!(this instanceof r))
            return new r(a,b);
        var c = []
          , d = function(a) {
            (a = dc(a)) && (c = c.concat(a))
        };
        if (h.isArray(a))
            for (var e = 0, f = a.length; e < f; e++)
                d(a[e]);
        else
            d(a);
        this.context = pa(c);
        b && h.merge(this, b);
        this.selector = {
            rows: null,
            cols: null,
            opts: null
        };
        r.extend(this, this, Tb)
    }
    ;
    m.Api = r;
    h.extend(r.prototype, {
        any: function() {
            return 0 !== this.count()
        },
        concat: w.concat,
        context: [],
        count: function() {
            return this.flatten().length
        },
        each: function(a) {
            for (var b = 0, c = this.length; b < c; b++)
                a.call(this, this[b], b, this);
            return this
        },
        eq: function(a) {
            var b = this.context;
            return b.length > a ? new r(b[a],this[a]) : null
        },
        filter: function(a) {
            var b = [];
            if (w.filter)
                b = w.filter.call(this, a, this);
            else
                for (var c = 0, d = this.length; c < d; c++)
                    a.call(this, this[c], c, this) && b.push(this[c]);
            return new r(this.context,b)
        },
        flatten: function() {
            var a = [];
            return new r(this.context,a.concat.apply(a, this.toArray()))
        },
        join: w.join,
        indexOf: w.indexOf || function(a, b) {
            for (var c = b || 0, d = this.length; c < d; c++)
                if (this[c] === a)
                    return c;
            return -1
        }
        ,
        iterator: function(a, b, c, d) {
            var e = [], f, g, h, i, n, l = this.context, m, t, p = this.selector;
            "string" === typeof a && (d = c,
            c = b,
            b = a,
            a = !1);
            g = 0;
            for (h = l.length; g < h; g++) {
                var o = new r(l[g]);
                if ("table" === b)
                    f = c.call(o, l[g], g),
                    f !== k && e.push(f);
                else if ("columns" === b || "rows" === b)
                    f = c.call(o, l[g], this[g], g),
                    f !== k && e.push(f);
                else if ("column" === b || "column-rows" === b || "row" === b || "cell" === b) {
                    t = this[g];
                    "column-rows" === b && (m = Ba(l[g], p.opts));
                    i = 0;
                    for (n = t.length; i < n; i++)
                        f = t[i],
                        f = "cell" === b ? c.call(o, l[g], f.row, f.column, g, i) : c.call(o, l[g], f, g, i, m),
                        f !== k && e.push(f)
                }
            }
            return e.length || d ? (a = new r(l,a ? e.concat.apply([], e) : e),
            b = a.selector,
            b.rows = p.rows,
            b.cols = p.cols,
            b.opts = p.opts,
            a) : this
        },
        lastIndexOf: w.lastIndexOf || function(a, b) {
            return this.indexOf.apply(this.toArray.reverse(), arguments)
        }
        ,
        length: 0,
        map: function(a) {
            var b = [];
            if (w.map)
                b = w.map.call(this, a, this);
            else
                for (var c = 0, d = this.length; c < d; c++)
                    b.push(a.call(this, this[c], c));
            return new r(this.context,b)
        },
        pluck: function(a) {
            return this.map(function(b) {
                return b[a]
            })
        },
        pop: w.pop,
        push: w.push,
        reduce: w.reduce || function(a, b) {
            return hb(this, a, b, 0, this.length, 1)
        }
        ,
        reduceRight: w.reduceRight || function(a, b) {
            return hb(this, a, b, this.length - 1, -1, -1)
        }
        ,
        reverse: w.reverse,
        selector: null,
        shift: w.shift,
        sort: w.sort,
        splice: w.splice,
        toArray: function() {
            return w.slice.call(this)
        },
        to$: function() {
            return h(this)
        },
        toJQuery: function() {
            return h(this)
        },
        unique: function() {
            return new r(this.context,pa(this))
        },
        unshift: w.unshift
    });
    r.extend = function(a, b, c) {
        if (c.length && b && (b instanceof r || b.__dt_wrapper)) {
            var d, e, f, g = function(a, b, c) {
                return function() {
                    var d = b.apply(a, arguments);
                    r.extend(d, d, c.methodExt);
                    return d
                }
            };
            d = 0;
            for (e = c.length; d < e; d++)
                f = c[d],
                b[f.name] = "function" === typeof f.val ? g(a, f.val, f) : h.isPlainObject(f.val) ? {} : f.val,
                b[f.name].__dt_wrapper = !0,
                r.extend(a, b[f.name], f.propExt)
        }
    }
    ;
    r.register = p = function(a, b) {
        if (h.isArray(a))
            for (var c = 0, d = a.length; c < d; c++)
                r.register(a[c], b);
        else
            for (var e = a.split("."), f = Tb, g, j, c = 0, d = e.length; c < d; c++) {
                g = (j = -1 !== e[c].indexOf("()")) ? e[c].replace("()", "") : e[c];
                var i;
                a: {
                    i = 0;
                    for (var n = f.length; i < n; i++)
                        if (f[i].name === g) {
                            i = f[i];
                            break a
                        }
                    i = null
                }
                i || (i = {
                    name: g,
                    val: {},
                    methodExt: [],
                    propExt: []
                },
                f.push(i));
                c === d - 1 ? i.val = b : f = j ? i.methodExt : i.propExt
            }
    }
    ;
    r.registerPlural = s = function(a, b, c) {
        r.register(a, c);
        r.register(b, function() {
            var a = c.apply(this, arguments);
            return a === this ? this : a instanceof r ? a.length ? h.isArray(a[0]) ? new r(a.context,a[0]) : a[0] : k : a
        })
    }
    ;
    p("tables()", function(a) {
        var b;
        if (a) {
            b = r;
            var c = this.context;
            if ("number" === typeof a)
                a = [c[a]];
            else
                var d = h.map(c, function(a) {
                    return a.nTable
                })
                  , a = h(d).filter(a).map(function() {
                    var a = h.inArray(this, d);
                    return c[a]
                }).toArray();
            b = new b(a)
        } else
            b = this;
        return b
    });
    p("table()", function(a) {
        var a = this.tables(a)
          , b = a.context;
        return b.length ? new r(b[0]) : a
    });
    s("tables().nodes()", "table().node()", function() {
        return this.iterator("table", function(a) {
            return a.nTable
        }, 1)
    });
    s("tables().body()", "table().body()", function() {
        return this.iterator("table", function(a) {
            return a.nTBody
        }, 1)
    });
    s("tables().header()", "table().header()", function() {
        return this.iterator("table", function(a) {
            return a.nTHead
        }, 1)
    });
    s("tables().footer()", "table().footer()", function() {
        return this.iterator("table", function(a) {
            return a.nTFoot
        }, 1)
    });
    s("tables().containers()", "table().container()", function() {
        return this.iterator("table", function(a) {
            return a.nTableWrapper
        }, 1)
    });
    p("draw()", function(a) {
        return this.iterator("table", function(b) {
            "page" === a ? O(b) : ("string" === typeof a && (a = "full-hold" === a ? !1 : !0),
            T(b, !1 === a))
        })
    });
    p("page()", function(a) {
        return a === k ? this.page.info().page : this.iterator("table", function(b) {
            Ta(b, a)
        })
    });
    p("page.info()", function() {
        if (0 === this.context.length)
            return k;
        var a = this.context[0]
          , b = a._iDisplayStart
          , c = a.oFeatures.bPaginate ? a._iDisplayLength : -1
          , d = a.fnRecordsDisplay()
          , e = -1 === c;
        return {
            page: e ? 0 : Math.floor(b / c),
            pages: e ? 1 : Math.ceil(d / c),
            start: b,
            end: a.fnDisplayEnd(),
            length: c,
            recordsTotal: a.fnRecordsTotal(),
            recordsDisplay: d,
            serverSide: "ssp" === y(a)
        }
    });
    p("page.len()", function(a) {
        return a === k ? 0 !== this.context.length ? this.context[0]._iDisplayLength : k : this.iterator("table", function(b) {
            Ra(b, a)
        })
    });
    var Ub = function(a, b, c) {
        if (c) {
            var d = new r(a);
            d.one("draw", function() {
                c(d.ajax.json())
            })
        }
        if ("ssp" == y(a))
            T(a, b);
        else {
            C(a, !0);
            var e = a.jqXHR;
            e && 4 !== e.readyState && e.abort();
            ra(a, [], function(c) {
                na(a);
                for (var c = sa(a, c), d = 0, e = c.length; d < e; d++)
                    N(a, c[d]);
                T(a, b);
                C(a, !1)
            })
        }
    };
    p("ajax.json()", function() {
        var a = this.context;
        if (0 < a.length)
            return a[0].json
    });
    p("ajax.params()", function() {
        var a = this.context;
        if (0 < a.length)
            return a[0].oAjaxData
    });
    p("ajax.reload()", function(a, b) {
        return this.iterator("table", function(c) {
            Ub(c, !1 === b, a)
        })
    });
    p("ajax.url()", function(a) {
        var b = this.context;
        if (a === k) {
            if (0 === b.length)
                return k;
            b = b[0];
            return b.ajax ? h.isPlainObject(b.ajax) ? b.ajax.url : b.ajax : b.sAjaxSource
        }
        return this.iterator("table", function(b) {
            h.isPlainObject(b.ajax) ? b.ajax.url = a : b.ajax = a
        })
    });
    p("ajax.url().load()", function(a, b) {
        return this.iterator("table", function(c) {
            Ub(c, !1 === b, a)
        })
    });
    var $a = function(a, b, c, d, e) {
        var f = [], g, j, i, n, l, m;
        i = typeof b;
        if (!b || "string" === i || "function" === i || b.length === k)
            b = [b];
        i = 0;
        for (n = b.length; i < n; i++) {
            j = b[i] && b[i].split ? b[i].split(",") : [b[i]];
            l = 0;
            for (m = j.length; l < m; l++)
                (g = c("string" === typeof j[l] ? h.trim(j[l]) : j[l])) && g.length && (f = f.concat(g))
        }
        a = v.selector[a];
        if (a.length) {
            i = 0;
            for (n = a.length; i < n; i++)
                f = a[i](d, e, f)
        }
        return pa(f)
    }
      , ab = function(a) {
        a || (a = {});
        a.filter && a.search === k && (a.search = a.filter);
        return h.extend({
            search: "none",
            order: "current",
            page: "all"
        }, a)
    }
      , bb = function(a) {
        for (var b = 0, c = a.length; b < c; b++)
            if (0 < a[b].length)
                return a[0] = a[b],
                a[0].length = 1,
                a.length = 1,
                a.context = [a.context[b]],
                a;
        a.length = 0;
        return a
    }
      , Ba = function(a, b) {
        var c, d, e, f = [], g = a.aiDisplay;
        c = a.aiDisplayMaster;
        var j = b.search;
        d = b.order;
        e = b.page;
        if ("ssp" == y(a))
            return "removed" === j ? [] : W(0, c.length);
        if ("current" == e) {
            c = a._iDisplayStart;
            for (d = a.fnDisplayEnd(); c < d; c++)
                f.push(g[c])
        } else if ("current" == d || "applied" == d)
            f = "none" == j ? c.slice() : "applied" == j ? g.slice() : h.map(c, function(a) {
                return -1 === h.inArray(a, g) ? a : null
            });
        else if ("index" == d || "original" == d) {
            c = 0;
            for (d = a.aoData.length; c < d; c++)
                "none" == j ? f.push(c) : (e = h.inArray(c, g),
                (-1 === e && "removed" == j || 0 <= e && "applied" == j) && f.push(c))
        }
        return f
    };
    p("rows()", function(a, b) {
        a === k ? a = "" : h.isPlainObject(a) && (b = a,
        a = "");
        var b = ab(b)
          , c = this.iterator("table", function(c) {
            var e = b;
            return $a("row", a, function(a) {
                var b = Pb(a);
                if (b !== null && !e)
                    return [b];
                var j = Ba(c, e);
                if (b !== null && h.inArray(b, j) !== -1)
                    return [b];
                if (!a)
                    return j;
                if (typeof a === "function")
                    return h.map(j, function(b) {
                        var e = c.aoData[b];
                        return a(b, e._aData, e.nTr) ? b : null
                    });
                b = Sb(ha(c.aoData, j, "nTr"));
                if (a.nodeName) {
                    if (a._DT_RowIndex !== k)
                        return [a._DT_RowIndex];
                    if (a._DT_CellIndex)
                        return [a._DT_CellIndex.row];
                    b = h(a).closest("*[data-dt-row]");
                    return b.length ? [b.data("dt-row")] : []
                }
                if (typeof a === "string" && a.charAt(0) === "#") {
                    j = c.aIds[a.replace(/^#/, "")];
                    if (j !== k)
                        return [j.idx]
                }
                return h(b).filter(a).map(function() {
                    return this._DT_RowIndex
                }).toArray()
            }, c, e)
        }, 1);
        c.selector.rows = a;
        c.selector.opts = b;
        return c
    });
    p("rows().nodes()", function() {
        return this.iterator("row", function(a, b) {
            return a.aoData[b].nTr || k
        }, 1)
    });
    p("rows().data()", function() {
        return this.iterator(!0, "rows", function(a, b) {
            return ha(a.aoData, b, "_aData")
        }, 1)
    });
    s("rows().cache()", "row().cache()", function(a) {
        return this.iterator("row", function(b, c) {
            var d = b.aoData[c];
            return "search" === a ? d._aFilterData : d._aSortData
        }, 1)
    });
    s("rows().invalidate()", "row().invalidate()", function(a) {
        return this.iterator("row", function(b, c) {
            ca(b, c, a)
        })
    });
    s("rows().indexes()", "row().index()", function() {
        return this.iterator("row", function(a, b) {
            return b
        }, 1)
    });
    s("rows().ids()", "row().id()", function(a) {
        for (var b = [], c = this.context, d = 0, e = c.length; d < e; d++)
            for (var f = 0, g = this[d].length; f < g; f++) {
                var h = c[d].rowIdFn(c[d].aoData[this[d][f]]._aData);
                b.push((!0 === a ? "#" : "") + h)
            }
        return new r(c,b)
    });
    s("rows().remove()", "row().remove()", function() {
        var a = this;
        this.iterator("row", function(b, c, d) {
            var e = b.aoData, f = e[c], g, h, i, n, l;
            e.splice(c, 1);
            g = 0;
            for (h = e.length; g < h; g++)
                if (i = e[g],
                l = i.anCells,
                null !== i.nTr && (i.nTr._DT_RowIndex = g),
                null !== l) {
                    i = 0;
                    for (n = l.length; i < n; i++)
                        l[i]._DT_CellIndex.row = g
                }
            oa(b.aiDisplayMaster, c);
            oa(b.aiDisplay, c);
            oa(a[d], c, !1);
            Sa(b);
            c = b.rowIdFn(f._aData);
            c !== k && delete b.aIds[c]
        });
        this.iterator("table", function(a) {
            for (var c = 0, d = a.aoData.length; c < d; c++)
                a.aoData[c].idx = c
        });
        return this
    });
    p("rows.add()", function(a) {
        var b = this.iterator("table", function(b) {
            var c, f, g, h = [];
            f = 0;
            for (g = a.length; f < g; f++)
                c = a[f],
                c.nodeName && "TR" === c.nodeName.toUpperCase() ? h.push(ma(b, c)[0]) : h.push(N(b, c));
            return h
        }, 1)
          , c = this.rows(-1);
        c.pop();
        h.merge(c, b);
        return c
    });
    p("row()", function(a, b) {
        return bb(this.rows(a, b))
    });
    p("row().data()", function(a) {
        var b = this.context;
        if (a === k)
            return b.length && this.length ? b[0].aoData[this[0]]._aData : k;
        b[0].aoData[this[0]]._aData = a;
        ca(b[0], this[0], "data");
        return this
    });
    p("row().node()", function() {
        var a = this.context;
        return a.length && this.length ? a[0].aoData[this[0]].nTr || null : null
    });
    p("row.add()", function(a) {
        a instanceof h && a.length && (a = a[0]);
        var b = this.iterator("table", function(b) {
            return a.nodeName && "TR" === a.nodeName.toUpperCase() ? ma(b, a)[0] : N(b, a)
        });
        return this.row(b[0])
    });
    var cb = function(a, b) {
        var c = a.context;
        if (c.length && (c = c[0].aoData[b !== k ? b : a[0]]) && c._details)
            c._details.remove(),
            c._detailsShow = k,
            c._details = k
    }
      , Vb = function(a, b) {
        var c = a.context;
        if (c.length && a.length) {
            var d = c[0].aoData[a[0]];
            if (d._details) {
                (d._detailsShow = b) ? d._details.insertAfter(d.nTr) : d._details.detach();
                var e = c[0]
                  , f = new r(e)
                  , g = e.aoData;
                f.off("draw.dt.DT_details column-visibility.dt.DT_details destroy.dt.DT_details");
                0 < G(g, "_details").length && (f.on("draw.dt.DT_details", function(a, b) {
                    e === b && f.rows({
                        page: "current"
                    }).eq(0).each(function(a) {
                        a = g[a];
                        a._detailsShow && a._details.insertAfter(a.nTr)
                    })
                }),
                f.on("column-visibility.dt.DT_details", function(a, b) {
                    if (e === b)
                        for (var c, d = aa(b), f = 0, h = g.length; f < h; f++)
                            c = g[f],
                            c._details && c._details.children("td[colspan]").attr("colspan", d)
                }),
                f.on("destroy.dt.DT_details", function(a, b) {
                    if (e === b)
                        for (var c = 0, d = g.length; c < d; c++)
                            g[c]._details && cb(f, c)
                }))
            }
        }
    };
    p("row().child()", function(a, b) {
        var c = this.context;
        if (a === k)
            return c.length && this.length ? c[0].aoData[this[0]]._details : k;
        if (!0 === a)
            this.child.show();
        else if (!1 === a)
            cb(this);
        else if (c.length && this.length) {
            var d = c[0]
              , c = c[0].aoData[this[0]]
              , e = []
              , f = function(a, b) {
                if (h.isArray(a) || a instanceof h)
                    for (var c = 0, k = a.length; c < k; c++)
                        f(a[c], b);
                else
                    a.nodeName && "tr" === a.nodeName.toLowerCase() ? e.push(a) : (c = h("<tr><td/></tr>").addClass(b),
                    h("td", c).addClass(b).html(a)[0].colSpan = aa(d),
                    e.push(c[0]))
            };
            f(a, b);
            c._details && c._details.remove();
            c._details = h(e);
            c._detailsShow && c._details.insertAfter(c.nTr)
        }
        return this
    });
    p(["row().child.show()", "row().child().show()"], function() {
        Vb(this, !0);
        return this
    });
    p(["row().child.hide()", "row().child().hide()"], function() {
        Vb(this, !1);
        return this
    });
    p(["row().child.remove()", "row().child().remove()"], function() {
        cb(this);
        return this
    });
    p("row().child.isShown()", function() {
        var a = this.context;
        return a.length && this.length ? a[0].aoData[this[0]]._detailsShow || !1 : !1
    });
    var ec = /^(.+):(name|visIdx|visible)$/
      , Wb = function(a, b, c, d, e) {
        for (var c = [], d = 0, f = e.length; d < f; d++)
            c.push(B(a, e[d], b));
        return c
    };
    p("columns()", function(a, b) {
        a === k ? a = "" : h.isPlainObject(a) && (b = a,
        a = "");
        var b = ab(b)
          , c = this.iterator("table", function(c) {
            var e = a
              , f = b
              , g = c.aoColumns
              , j = G(g, "sName")
              , i = G(g, "nTh");
            return $a("column", e, function(a) {
                var b = Pb(a);
                if (a === "")
                    return W(g.length);
                if (b !== null)
                    return [b >= 0 ? b : g.length + b];
                if (typeof a === "function") {
                    var e = Ba(c, f);
                    return h.map(g, function(b, f) {
                        return a(f, Wb(c, f, 0, 0, e), i[f]) ? f : null
                    })
                }
                var k = typeof a === "string" ? a.match(ec) : "";
                if (k)
                    switch (k[2]) {
                    case "visIdx":
                    case "visible":
                        b = parseInt(k[1], 10);
                        if (b < 0) {
                            var m = h.map(g, function(a, b) {
                                return a.bVisible ? b : null
                            });
                            return [m[m.length + b]]
                        }
                        return [Z(c, b)];
                    case "name":
                        return h.map(j, function(a, b) {
                            return a === k[1] ? b : null
                        });
                    default:
                        return []
                    }
                if (a.nodeName && a._DT_CellIndex)
                    return [a._DT_CellIndex.column];
                b = h(i).filter(a).map(function() {
                    return h.inArray(this, i)
                }).toArray();
                if (b.length || !a.nodeName)
                    return b;
                b = h(a).closest("*[data-dt-column]");
                return b.length ? [b.data("dt-column")] : []
            }, c, f)
        }, 1);
        c.selector.cols = a;
        c.selector.opts = b;
        return c
    });
    s("columns().header()", "column().header()", function() {
        return this.iterator("column", function(a, b) {
            return a.aoColumns[b].nTh
        }, 1)
    });
    s("columns().footer()", "column().footer()", function() {
        return this.iterator("column", function(a, b) {
            return a.aoColumns[b].nTf
        }, 1)
    });
    s("columns().data()", "column().data()", function() {
        return this.iterator("column-rows", Wb, 1)
    });
    s("columns().dataSrc()", "column().dataSrc()", function() {
        return this.iterator("column", function(a, b) {
            return a.aoColumns[b].mData
        }, 1)
    });
    s("columns().cache()", "column().cache()", function(a) {
        return this.iterator("column-rows", function(b, c, d, e, f) {
            return ha(b.aoData, f, "search" === a ? "_aFilterData" : "_aSortData", c)
        }, 1)
    });
    s("columns().nodes()", "column().nodes()", function() {
        return this.iterator("column-rows", function(a, b, c, d, e) {
            return ha(a.aoData, e, "anCells", b)
        }, 1)
    });
    s("columns().visible()", "column().visible()", function(a, b) {
        var c = this.iterator("column", function(b, c) {
            if (a === k)
                return b.aoColumns[c].bVisible;
            var f = b.aoColumns, g = f[c], j = b.aoData, i, n, l;
            if (a !== k && g.bVisible !== a) {
                if (a) {
                    var m = h.inArray(!0, G(f, "bVisible"), c + 1);
                    i = 0;
                    for (n = j.length; i < n; i++)
                        l = j[i].nTr,
                        f = j[i].anCells,
                        l && l.insertBefore(f[c], f[m] || null)
                } else
                    h(G(b.aoData, "anCells", c)).detach();
                g.bVisible = a;
                ea(b, b.aoHeader);
                ea(b, b.aoFooter);
                wa(b)
            }
        });
        a !== k && (this.iterator("column", function(c, e) {
            u(c, null, "column-visibility", [c, e, a, b])
        }),
        (b === k || b) && this.columns.adjust());
        return c
    });
    s("columns().indexes()", "column().index()", function(a) {
        return this.iterator("column", function(b, c) {
            return "visible" === a ? $(b, c) : c
        }, 1)
    });
    p("columns.adjust()", function() {
        return this.iterator("table", function(a) {
            Y(a)
        }, 1)
    });
    p("column.index()", function(a, b) {
        if (0 !== this.context.length) {
            var c = this.context[0];
            if ("fromVisible" === a || "toData" === a)
                return Z(c, b);
            if ("fromData" === a || "toVisible" === a)
                return $(c, b)
        }
    });
    p("column()", function(a, b) {
        return bb(this.columns(a, b))
    });
    p("cells()", function(a, b, c) {
        h.isPlainObject(a) && (a.row === k ? (c = a,
        a = null) : (c = b,
        b = null));
        h.isPlainObject(b) && (c = b,
        b = null);
        if (null === b || b === k)
            return this.iterator("table", function(b) {
                var d = a, e = ab(c), f = b.aoData, g = Ba(b, e), j = Sb(ha(f, g, "anCells")), i = h([].concat.apply([], j)), l, n = b.aoColumns.length, m, p, r, u, v, s;
                return $a("cell", d, function(a) {
                    var c = typeof a === "function";
                    if (a === null || a === k || c) {
                        m = [];
                        p = 0;
                        for (r = g.length; p < r; p++) {
                            l = g[p];
                            for (u = 0; u < n; u++) {
                                v = {
                                    row: l,
                                    column: u
                                };
                                if (c) {
                                    s = f[l];
                                    a(v, B(b, l, u), s.anCells ? s.anCells[u] : null) && m.push(v)
                                } else
                                    m.push(v)
                            }
                        }
                        return m
                    }
                    if (h.isPlainObject(a))
                        return [a];
                    c = i.filter(a).map(function(a, b) {
                        return {
                            row: b._DT_CellIndex.row,
                            column: b._DT_CellIndex.column
                        }
                    }).toArray();
                    if (c.length || !a.nodeName)
                        return c;
                    s = h(a).closest("*[data-dt-row]");
                    return s.length ? [{
                        row: s.data("dt-row"),
                        column: s.data("dt-column")
                    }] : []
                }, b, e)
            });
        var d = this.columns(b, c), e = this.rows(a, c), f, g, j, i, n, l = this.iterator("table", function(a, b) {
            f = [];
            g = 0;
            for (j = e[b].length; g < j; g++) {
                i = 0;
                for (n = d[b].length; i < n; i++)
                    f.push({
                        row: e[b][g],
                        column: d[b][i]
                    })
            }
            return f
        }, 1);
        h.extend(l.selector, {
            cols: b,
            rows: a,
            opts: c
        });
        return l
    });
    s("cells().nodes()", "cell().node()", function() {
        return this.iterator("cell", function(a, b, c) {
            return (a = a.aoData[b]) && a.anCells ? a.anCells[c] : k
        }, 1)
    });
    p("cells().data()", function() {
        return this.iterator("cell", function(a, b, c) {
            return B(a, b, c)
        }, 1)
    });
    s("cells().cache()", "cell().cache()", function(a) {
        a = "search" === a ? "_aFilterData" : "_aSortData";
        return this.iterator("cell", function(b, c, d) {
            return b.aoData[c][a][d]
        }, 1)
    });
    s("cells().render()", "cell().render()", function(a) {
        return this.iterator("cell", function(b, c, d) {
            return B(b, c, d, a)
        }, 1)
    });
    s("cells().indexes()", "cell().index()", function() {
        return this.iterator("cell", function(a, b, c) {
            return {
                row: b,
                column: c,
                columnVisible: $(a, c)
            }
        }, 1)
    });
    s("cells().invalidate()", "cell().invalidate()", function(a) {
        return this.iterator("cell", function(b, c, d) {
            ca(b, c, a, d)
        })
    });
    p("cell()", function(a, b, c) {
        return bb(this.cells(a, b, c))
    });
    p("cell().data()", function(a) {
        var b = this.context
          , c = this[0];
        if (a === k)
            return b.length && c.length ? B(b[0], c[0].row, c[0].column) : k;
        jb(b[0], c[0].row, c[0].column, a);
        ca(b[0], c[0].row, "data", c[0].column);
        return this
    });
    p("order()", function(a, b) {
        var c = this.context;
        if (a === k)
            return 0 !== c.length ? c[0].aaSorting : k;
        "number" === typeof a ? a = [[a, b]] : a.length && !h.isArray(a[0]) && (a = Array.prototype.slice.call(arguments));
        return this.iterator("table", function(b) {
            b.aaSorting = a.slice()
        })
    });
    p("order.listener()", function(a, b, c) {
        return this.iterator("table", function(d) {
            Ma(d, a, b, c)
        })
    });
    p("order.fixed()", function(a) {
        if (!a) {
            var b = this.context
              , b = b.length ? b[0].aaSortingFixed : k;
            return h.isArray(b) ? {
                pre: b
            } : b
        }
        return this.iterator("table", function(b) {
            b.aaSortingFixed = h.extend(!0, {}, a)
        })
    });
    p(["columns().order()", "column().order()"], function(a) {
        var b = this;
        return this.iterator("table", function(c, d) {
            var e = [];
            h.each(b[d], function(b, c) {
                e.push([c, a])
            });
            c.aaSorting = e
        })
    });
    p("search()", function(a, b, c, d) {
        var e = this.context;
        return a === k ? 0 !== e.length ? e[0].oPreviousSearch.sSearch : k : this.iterator("table", function(e) {
            e.oFeatures.bFilter && fa(e, h.extend({}, e.oPreviousSearch, {
                sSearch: a + "",
                bRegex: null === b ? !1 : b,
                bSmart: null === c ? !0 : c,
                bCaseInsensitive: null === d ? !0 : d
            }), 1)
        })
    });
    s("columns().search()", "column().search()", function(a, b, c, d) {
        return this.iterator("column", function(e, f) {
            var g = e.aoPreSearchCols;
            if (a === k)
                return g[f].sSearch;
            e.oFeatures.bFilter && (h.extend(g[f], {
                sSearch: a + "",
                bRegex: null === b ? !1 : b,
                bSmart: null === c ? !0 : c,
                bCaseInsensitive: null === d ? !0 : d
            }),
            fa(e, e.oPreviousSearch, 1))
        })
    });
    p("state()", function() {
        return this.context.length ? this.context[0].oSavedState : null
    });
    p("state.clear()", function() {
        return this.iterator("table", function(a) {
            a.fnStateSaveCallback.call(a.oInstance, a, {})
        })
    });
    p("state.loaded()", function() {
        return this.context.length ? this.context[0].oLoadedState : null
    });
    p("state.save()", function() {
        return this.iterator("table", function(a) {
            wa(a)
        })
    });
    m.versionCheck = m.fnVersionCheck = function(a) {
        for (var b = m.version.split("."), a = a.split("."), c, d, e = 0, f = a.length; e < f; e++)
            if (c = parseInt(b[e], 10) || 0,
            d = parseInt(a[e], 10) || 0,
            c !== d)
                return c > d;
        return !0
    }
    ;
    m.isDataTable = m.fnIsDataTable = function(a) {
        var b = h(a).get(0)
          , c = !1;
        h.each(m.settings, function(a, e) {
            var f = e.nScrollHead ? h("table", e.nScrollHead)[0] : null
              , g = e.nScrollFoot ? h("table", e.nScrollFoot)[0] : null;
            if (e.nTable === b || f === b || g === b)
                c = !0
        });
        return c
    }
    ;
    m.tables = m.fnTables = function(a) {
        var b = !1;
        h.isPlainObject(a) && (b = a.api,
        a = a.visible);
        var c = h.map(m.settings, function(b) {
            if (!a || a && h(b.nTable).is(":visible"))
                return b.nTable
        });
        return b ? new r(c) : c
    }
    ;
    m.camelToHungarian = K;
    p("$()", function(a, b) {
        var c = this.rows(b).nodes()
          , c = h(c);
        return h([].concat(c.filter(a).toArray(), c.find(a).toArray()))
    });
    h.each(["on", "one", "off"], function(a, b) {
        p(b + "()", function() {
            var a = Array.prototype.slice.call(arguments);
            a[0].match(/\.dt\b/) || (a[0] += ".dt");
            var d = h(this.tables().nodes());
            d[b].apply(d, a);
            return this
        })
    });
    p("clear()", function() {
        return this.iterator("table", function(a) {
            na(a)
        })
    });
    p("settings()", function() {
        return new r(this.context,this.context)
    });
    p("init()", function() {
        var a = this.context;
        return a.length ? a[0].oInit : null
    });
    p("data()", function() {
        return this.iterator("table", function(a) {
            return G(a.aoData, "_aData")
        }).flatten()
    });
    p("destroy()", function(a) {
        a = a || !1;
        return this.iterator("table", function(b) {
            var c = b.nTableWrapper.parentNode, d = b.oClasses, e = b.nTable, f = b.nTBody, g = b.nTHead, j = b.nTFoot, i = h(e), f = h(f), k = h(b.nTableWrapper), l = h.map(b.aoData, function(a) {
                return a.nTr
            }), p;
            b.bDestroying = !0;
            u(b, "aoDestroyCallback", "destroy", [b]);
            a || (new r(b)).columns().visible(!0);
            k.unbind(".DT").find(":not(tbody *)").unbind(".DT");
            h(D).unbind(".DT-" + b.sInstance);
            e != g.parentNode && (i.children("thead").detach(),
            i.append(g));
            j && e != j.parentNode && (i.children("tfoot").detach(),
            i.append(j));
            b.aaSorting = [];
            b.aaSortingFixed = [];
            va(b);
            h(l).removeClass(b.asStripeClasses.join(" "));
            h("th, td", g).removeClass(d.sSortable + " " + d.sSortableAsc + " " + d.sSortableDesc + " " + d.sSortableNone);
            b.bJUI && (h("th span." + d.sSortIcon + ", td span." + d.sSortIcon, g).detach(),
            h("th, td", g).each(function() {
                var a = h("div." + d.sSortJUIWrapper, this);
                h(this).append(a.contents());
                a.detach()
            }));
            f.children().detach();
            f.append(l);
            g = a ? "remove" : "detach";
            i[g]();
            k[g]();
            !a && c && (c.insertBefore(e, b.nTableReinsertBefore),
            i.css("width", b.sDestroyWidth).removeClass(d.sTable),
            (p = b.asDestroyStripes.length) && f.children().each(function(a) {
                h(this).addClass(b.asDestroyStripes[a % p])
            }));
            c = h.inArray(b, m.settings);
            -1 !== c && m.settings.splice(c, 1)
        })
    });
    h.each(["column", "row", "cell"], function(a, b) {
        p(b + "s().every()", function(a) {
            var d = this.selector.opts
              , e = this;
            return this.iterator(b, function(f, g, h, i, n) {
                a.call(e[b](g, "cell" === b ? h : d, "cell" === b ? d : k), g, h, i, n)
            })
        })
    });
    p("i18n()", function(a, b, c) {
        var d = this.context[0]
          , a = Q(a)(d.oLanguage);
        a === k && (a = b);
        c !== k && h.isPlainObject(a) && (a = a[c] !== k ? a[c] : a._);
        return a.replace("%d", c)
    });
    m.version = "1.10.12";
    m.settings = [];
    m.models = {};
    m.models.oSearch = {
        bCaseInsensitive: !0,
        sSearch: "",
        bRegex: !1,
        bSmart: !0
    };
    m.models.oRow = {
        nTr: null,
        anCells: null,
        _aData: [],
        _aSortData: null,
        _aFilterData: null,
        _sFilterRow: null,
        _sRowStripe: "",
        src: null,
        idx: -1
    };
    m.models.oColumn = {
        idx: null,
        aDataSort: null,
        asSorting: null,
        bSearchable: null,
        bSortable: null,
        bVisible: null,
        _sManualType: null,
        _bAttrSrc: !1,
        fnCreatedCell: null,
        fnGetData: null,
        fnSetData: null,
        mData: null,
        mRender: null,
        nTh: null,
        nTf: null,
        sClass: null,
        sContentPadding: null,
        sDefaultContent: null,
        sName: null,
        sSortDataType: "std",
        sSortingClass: null,
        sSortingClassJUI: null,
        sTitle: null,
        sType: null,
        sWidth: null,
        sWidthOrig: null
    };
    m.defaults = {
        aaData: null,
        aaSorting: [[0, "asc"]],
        aaSortingFixed: [],
        ajax: null,
        aLengthMenu: [10, 25, 50, 100],
        aoColumns: null,
        aoColumnDefs: null,
        aoSearchCols: [],
        asStripeClasses: null,
        bAutoWidth: !0,
        bDeferRender: !1,
        bDestroy: !1,
        bFilter: !0,
        bInfo: !0,
        bJQueryUI: !1,
        bLengthChange: !0,
        bPaginate: !0,
        bProcessing: !1,
        bRetrieve: !1,
        bScrollCollapse: !1,
        bServerSide: !1,
        bSort: !0,
        bSortMulti: !0,
        bSortCellsTop: !1,
        bSortClasses: !0,
        bStateSave: !1,
        fnCreatedRow: null,
        fnDrawCallback: null,
        fnFooterCallback: null,
        fnFormatNumber: function(a) {
            return a.toString().replace(/\B(?=(\d{3})+(?!\d))/g, this.oLanguage.sThousands)
        },
        fnHeaderCallback: null,
        fnInfoCallback: null,
        fnInitComplete: null,
        fnPreDrawCallback: null,
        fnRowCallback: null,
        fnServerData: null,
        fnServerParams: null,
        fnStateLoadCallback: function(a) {
            try {
                return JSON.parse((-1 === a.iStateDuration ? sessionStorage : localStorage).getItem("DataTables_" + a.sInstance + "_" + location.pathname))
            } catch (b) {}
        },
        fnStateLoadParams: null,
        fnStateLoaded: null,
        fnStateSaveCallback: function(a, b) {
            try {
                (-1 === a.iStateDuration ? sessionStorage : localStorage).setItem("DataTables_" + a.sInstance + "_" + location.pathname, JSON.stringify(b))
            } catch (c) {}
        },
        fnStateSaveParams: null,
        iStateDuration: 7200,
        iDeferLoading: null,
        iDisplayLength: 10,
        iDisplayStart: 0,
        iTabIndex: 0,
        oClasses: {},
        oLanguage: {
            oAria: {
                sSortAscending: ": activate to sort column ascending",
                sSortDescending: ": activate to sort column descending"
            },
            oPaginate: {
                sFirst: "First",
                sLast: "Last",
                sNext: "Next",
                sPrevious: "Previous"
            },
            sEmptyTable: "No data available in table",
            sInfo: "Showing _START_ to _END_ of _TOTAL_ entries",
            sInfoEmpty: "Showing 0 to 0 of 0 entries",
            sInfoFiltered: "(filtered from _MAX_ total entries)",
            sInfoPostFix: "",
            sDecimal: "",
            sThousands: ",",
            sLengthMenu: "Show _MENU_ entries",
            sLoadingRecords: "Loading...",
            sProcessing: "Processing...",
            sSearch: "Search:",
            sSearchPlaceholder: "",
            sUrl: "",
            sZeroRecords: "No matching records found"
        },
        oSearch: h.extend({}, m.models.oSearch),
        sAjaxDataProp: "data",
        sAjaxSource: null,
        sDom: "lfrtip",
        searchDelay: null,
        sPaginationType: "simple_numbers",
        sScrollX: "",
        sScrollXInner: "",
        sScrollY: "",
        sServerMethod: "GET",
        renderer: null,
        rowId: "DT_RowId"
    };
    X(m.defaults);
    m.defaults.column = {
        aDataSort: null,
        iDataSort: -1,
        asSorting: ["asc", "desc"],
        bSearchable: !0,
        bSortable: !0,
        bVisible: !0,
        fnCreatedCell: null,
        mData: null,
        mRender: null,
        sCellType: "td",
        sClass: "",
        sContentPadding: "",
        sDefaultContent: null,
        sName: "",
        sSortDataType: "std",
        sTitle: null,
        sType: null,
        sWidth: null
    };
    X(m.defaults.column);
    m.models.oSettings = {
        oFeatures: {
            bAutoWidth: null,
            bDeferRender: null,
            bFilter: null,
            bInfo: null,
            bLengthChange: null,
            bPaginate: null,
            bProcessing: null,
            bServerSide: null,
            bSort: null,
            bSortMulti: null,
            bSortClasses: null,
            bStateSave: null
        },
        oScroll: {
            bCollapse: null,
            iBarWidth: 0,
            sX: null,
            sXInner: null,
            sY: null
        },
        oLanguage: {
            fnInfoCallback: null
        },
        oBrowser: {
            bScrollOversize: !1,
            bScrollbarLeft: !1,
            bBounding: !1,
            barWidth: 0
        },
        ajax: null,
        aanFeatures: [],
        aoData: [],
        aiDisplay: [],
        aiDisplayMaster: [],
        aIds: {},
        aoColumns: [],
        aoHeader: [],
        aoFooter: [],
        oPreviousSearch: {},
        aoPreSearchCols: [],
        aaSorting: null,
        aaSortingFixed: [],
        asStripeClasses: null,
        asDestroyStripes: [],
        sDestroyWidth: 0,
        aoRowCallback: [],
        aoHeaderCallback: [],
        aoFooterCallback: [],
        aoDrawCallback: [],
        aoRowCreatedCallback: [],
        aoPreDrawCallback: [],
        aoInitComplete: [],
        aoStateSaveParams: [],
        aoStateLoadParams: [],
        aoStateLoaded: [],
        sTableId: "",
        nTable: null,
        nTHead: null,
        nTFoot: null,
        nTBody: null,
        nTableWrapper: null,
        bDeferLoading: !1,
        bInitialised: !1,
        aoOpenRows: [],
        sDom: null,
        searchDelay: null,
        sPaginationType: "two_button",
        iStateDuration: 0,
        aoStateSave: [],
        aoStateLoad: [],
        oSavedState: null,
        oLoadedState: null,
        sAjaxSource: null,
        sAjaxDataProp: null,
        bAjaxDataGet: !0,
        jqXHR: null,
        json: k,
        oAjaxData: k,
        fnServerData: null,
        aoServerParams: [],
        sServerMethod: null,
        fnFormatNumber: null,
        aLengthMenu: null,
        iDraw: 0,
        bDrawing: !1,
        iDrawError: -1,
        _iDisplayLength: 10,
        _iDisplayStart: 0,
        _iRecordsTotal: 0,
        _iRecordsDisplay: 0,
        bJUI: null,
        oClasses: {},
        bFiltered: !1,
        bSorted: !1,
        bSortCellsTop: null,
        oInit: null,
        aoDestroyCallback: [],
        fnRecordsTotal: function() {
            return "ssp" == y(this) ? 1 * this._iRecordsTotal : this.aiDisplayMaster.length
        },
        fnRecordsDisplay: function() {
            return "ssp" == y(this) ? 1 * this._iRecordsDisplay : this.aiDisplay.length
        },
        fnDisplayEnd: function() {
            var a = this._iDisplayLength
              , b = this._iDisplayStart
              , c = b + a
              , d = this.aiDisplay.length
              , e = this.oFeatures
              , f = e.bPaginate;
            return e.bServerSide ? !1 === f || -1 === a ? b + d : Math.min(b + a, this._iRecordsDisplay) : !f || c > d || -1 === a ? d : c
        },
        oInstance: null,
        sInstance: null,
        iTabIndex: 0,
        nScrollHead: null,
        nScrollFoot: null,
        aLastSort: [],
        oPlugins: {},
        rowIdFn: null,
        rowId: null
    };
    m.ext = v = {
        buttons: {},
        classes: {},
        build: "bs/dt-1.10.12",
        errMode: "alert",
        feature: [],
        search: [],
        selector: {
            cell: [],
            column: [],
            row: []
        },
        internal: {},
        legacy: {
            ajax: null
        },
        pager: {},
        renderer: {
            pageButton: {},
            header: {}
        },
        order: {},
        type: {
            detect: [],
            search: {},
            order: {}
        },
        _unique: 0,
        fnVersionCheck: m.fnVersionCheck,
        iApiIndex: 0,
        oJUIClasses: {},
        sVersion: m.version
    };
    h.extend(v, {
        afnFiltering: v.search,
        aTypes: v.type.detect,
        ofnSearch: v.type.search,
        oSort: v.type.order,
        afnSortData: v.order,
        aoFeatures: v.feature,
        oApi: v.internal,
        oStdClasses: v.classes,
        oPagination: v.pager
    });
    h.extend(m.ext.classes, {
        sTable: "dataTable",
        sNoFooter: "no-footer",
        sPageButton: "paginate_button",
        sPageButtonActive: "current",
        sPageButtonDisabled: "disabled",
        sStripeOdd: "odd",
        sStripeEven: "even",
        sRowEmpty: "dataTables_empty",
        sWrapper: "dataTables_wrapper",
        sFilter: "dataTables_filter",
        sInfo: "dataTables_info",
        sPaging: "dataTables_paginate paging_",
        sLength: "dataTables_length",
        sProcessing: "dataTables_processing",
        sSortAsc: "sorting_asc",
        sSortDesc: "sorting_desc",
        sSortable: "sorting",
        sSortableAsc: "sorting_asc_disabled",
        sSortableDesc: "sorting_desc_disabled",
        sSortableNone: "sorting_disabled",
        sSortColumn: "sorting_",
        sFilterInput: "",
        sLengthSelect: "",
        sScrollWrapper: "dataTables_scroll",
        sScrollHead: "dataTables_scrollHead",
        sScrollHeadInner: "dataTables_scrollHeadInner",
        sScrollBody: "dataTables_scrollBody",
        sScrollFoot: "dataTables_scrollFoot",
        sScrollFootInner: "dataTables_scrollFootInner",
        sHeaderTH: "",
        sFooterTH: "",
        sSortJUIAsc: "",
        sSortJUIDesc: "",
        sSortJUI: "",
        sSortJUIAscAllowed: "",
        sSortJUIDescAllowed: "",
        sSortJUIWrapper: "",
        sSortIcon: "",
        sJUIHeader: "",
        sJUIFooter: ""
    });
    var Ca = ""
      , Ca = ""
      , H = Ca + "ui-state-default"
      , ia = Ca + "css_right ui-icon ui-icon-"
      , Xb = Ca + "fg-toolbar ui-toolbar ui-widget-header ui-helper-clearfix";
    h.extend(m.ext.oJUIClasses, m.ext.classes, {
        sPageButton: "fg-button ui-button " + H,
        sPageButtonActive: "ui-state-disabled",
        sPageButtonDisabled: "ui-state-disabled",
        sPaging: "dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi ui-buttonset-multi paging_",
        sSortAsc: H + " sorting_asc",
        sSortDesc: H + " sorting_desc",
        sSortable: H + " sorting",
        sSortableAsc: H + " sorting_asc_disabled",
        sSortableDesc: H + " sorting_desc_disabled",
        sSortableNone: H + " sorting_disabled",
        sSortJUIAsc: ia + "triangle-1-n",
        sSortJUIDesc: ia + "triangle-1-s",
        sSortJUI: ia + "carat-2-n-s",
        sSortJUIAscAllowed: ia + "carat-1-n",
        sSortJUIDescAllowed: ia + "carat-1-s",
        sSortJUIWrapper: "DataTables_sort_wrapper",
        sSortIcon: "DataTables_sort_icon",
        sScrollHead: "dataTables_scrollHead " + H,
        sScrollFoot: "dataTables_scrollFoot " + H,
        sHeaderTH: H,
        sFooterTH: H,
        sJUIHeader: Xb + " ui-corner-tl ui-corner-tr",
        sJUIFooter: Xb + " ui-corner-bl ui-corner-br"
    });
    var Mb = m.ext.pager;
    h.extend(Mb, {
        simple: function() {
            return ["previous", "next"]
        },
        full: function() {
            return ["first", "previous", "next", "last"]
        },
        numbers: function(a, b) {
            return [ya(a, b)]
        },
        simple_numbers: function(a, b) {
            return ["previous", ya(a, b), "next"]
        },
        full_numbers: function(a, b) {
            return ["first", "previous", ya(a, b), "next", "last"]
        },
        _numbers: ya,
        numbers_length: 7
    });
    h.extend(!0, m.ext.renderer, {
        pageButton: {
            _: function(a, b, c, d, e, f) {
                var g = a.oClasses, j = a.oLanguage.oPaginate, i = a.oLanguage.oAria.paginate || {}, k, l, m = 0, p = function(b, d) {
                    var o, r, u, s, v = function(b) {
                        Ta(a, b.data.action, true)
                    };
                    o = 0;
                    for (r = d.length; o < r; o++) {
                        s = d[o];
                        if (h.isArray(s)) {
                            u = h("<" + (s.DT_el || "div") + "/>").appendTo(b);
                            p(u, s)
                        } else {
                            k = null;
                            l = "";
                            switch (s) {
                            case "ellipsis":
                                b.append('<span class="ellipsis">&#x2026;</span>');
                                break;
                            case "first":
                                k = j.sFirst;
                                l = s + (e > 0 ? "" : " " + g.sPageButtonDisabled);
                                break;
                            case "previous":
                                k = j.sPrevious;
                                l = s + (e > 0 ? "" : " " + g.sPageButtonDisabled);
                                break;
                            case "next":
                                k = j.sNext;
                                l = s + (e < f - 1 ? "" : " " + g.sPageButtonDisabled);
                                break;
                            case "last":
                                k = j.sLast;
                                l = s + (e < f - 1 ? "" : " " + g.sPageButtonDisabled);
                                break;
                            default:
                                k = s + 1;
                                l = e === s ? g.sPageButtonActive : ""
                            }
                            if (k !== null) {
                                u = h("<a>", {
                                    "class": g.sPageButton + " " + l,
                                    "aria-controls": a.sTableId,
                                    "aria-label": i[s],
                                    "data-dt-idx": m,
                                    tabindex: a.iTabIndex,
                                    id: c === 0 && typeof s === "string" ? a.sTableId + "_" + s : null
                                }).html(k).appendTo(b);
                                Wa(u, {
                                    action: s
                                }, v);
                                m++
                            }
                        }
                    }
                }, r;
                try {
                    r = h(b).find(I.activeElement).data("dt-idx")
                } catch (o) {}
                p(h(b).empty(), d);
                r && h(b).find("[data-dt-idx=" + r + "]").focus()
            }
        }
    });
    h.extend(m.ext.type.detect, [function(a, b) {
        var c = b.oLanguage.sDecimal;
        return Za(a, c) ? "num" + c : null
    }
    , function(a) {
        if (a && !(a instanceof Date) && (!ac.test(a) || !bc.test(a)))
            return null;
        var b = Date.parse(a);
        return null !== b && !isNaN(b) || M(a) ? "date" : null
    }
    , function(a, b) {
        var c = b.oLanguage.sDecimal;
        return Za(a, c, !0) ? "num-fmt" + c : null
    }
    , function(a, b) {
        var c = b.oLanguage.sDecimal;
        return Rb(a, c) ? "html-num" + c : null
    }
    , function(a, b) {
        var c = b.oLanguage.sDecimal;
        return Rb(a, c, !0) ? "html-num-fmt" + c : null
    }
    , function(a) {
        return M(a) || "string" === typeof a && -1 !== a.indexOf("<") ? "html" : null
    }
    ]);
    h.extend(m.ext.type.search, {
        html: function(a) {
            return M(a) ? a : "string" === typeof a ? a.replace(Ob, " ").replace(Aa, "") : ""
        },
        string: function(a) {
            return M(a) ? a : "string" === typeof a ? a.replace(Ob, " ") : a
        }
    });
    var za = function(a, b, c, d) {
        if (0 !== a && (!a || "-" === a))
            return -Infinity;
        b && (a = Qb(a, b));
        a.replace && (c && (a = a.replace(c, "")),
        d && (a = a.replace(d, "")));
        return 1 * a
    };
    h.extend(v.type.order, {
        "date-pre": function(a) {
            return Date.parse(a) || 0
        },
        "html-pre": function(a) {
            return M(a) ? "" : a.replace ? a.replace(/<.*?>/g, "").toLowerCase() : a + ""
        },
        "string-pre": function(a) {
            return M(a) ? "" : "string" === typeof a ? a.toLowerCase() : !a.toString ? "" : a.toString()
        },
        "string-asc": function(a, b) {
            return a < b ? -1 : a > b ? 1 : 0
        },
        "string-desc": function(a, b) {
            return a < b ? 1 : a > b ? -1 : 0
        }
    });
    db("");
    h.extend(!0, m.ext.renderer, {
        header: {
            _: function(a, b, c, d) {
                h(a.nTable).on("order.dt.DT", function(e, f, g, h) {
                    if (a === f) {
                        e = c.idx;
                        b.removeClass(c.sSortingClass + " " + d.sSortAsc + " " + d.sSortDesc).addClass(h[e] == "asc" ? d.sSortAsc : h[e] == "desc" ? d.sSortDesc : c.sSortingClass)
                    }
                })
            },
            jqueryui: function(a, b, c, d) {
                h("<div/>").addClass(d.sSortJUIWrapper).append(b.contents()).append(h("<span/>").addClass(d.sSortIcon + " " + c.sSortingClassJUI)).appendTo(b);
                h(a.nTable).on("order.dt.DT", function(e, f, g, h) {
                    if (a === f) {
                        e = c.idx;
                        b.removeClass(d.sSortAsc + " " + d.sSortDesc).addClass(h[e] == "asc" ? d.sSortAsc : h[e] == "desc" ? d.sSortDesc : c.sSortingClass);
                        b.find("span." + d.sSortIcon).removeClass(d.sSortJUIAsc + " " + d.sSortJUIDesc + " " + d.sSortJUI + " " + d.sSortJUIAscAllowed + " " + d.sSortJUIDescAllowed).addClass(h[e] == "asc" ? d.sSortJUIAsc : h[e] == "desc" ? d.sSortJUIDesc : c.sSortingClassJUI)
                    }
                })
            }
        }
    });
    var Yb = function(a) {
        return "string" === typeof a ? a.replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;") : a
    };
    m.render = {
        number: function(a, b, c, d, e) {
            return {
                display: function(f) {
                    if ("number" !== typeof f && "string" !== typeof f)
                        return f;
                    var g = 0 > f ? "-" : ""
                      , h = parseFloat(f);
                    if (isNaN(h))
                        return Yb(f);
                    f = Math.abs(h);
                    h = parseInt(f, 10);
                    f = c ? b + (f - h).toFixed(c).substring(2) : "";
                    return g + (d || "") + h.toString().replace(/\B(?=(\d{3})+(?!\d))/g, a) + f + (e || "")
                }
            }
        },
        text: function() {
            return {
                display: Yb
            }
        }
    };
    h.extend(m.ext.internal, {
        _fnExternApiFunc: Nb,
        _fnBuildAjax: ra,
        _fnAjaxUpdate: lb,
        _fnAjaxParameters: ub,
        _fnAjaxUpdateDraw: vb,
        _fnAjaxDataSrc: sa,
        _fnAddColumn: Ea,
        _fnColumnOptions: ja,
        _fnAdjustColumnSizing: Y,
        _fnVisibleToColumnIndex: Z,
        _fnColumnIndexToVisible: $,
        _fnVisbleColumns: aa,
        _fnGetColumns: la,
        _fnColumnTypes: Ga,
        _fnApplyColumnDefs: ib,
        _fnHungarianMap: X,
        _fnCamelToHungarian: K,
        _fnLanguageCompat: Da,
        _fnBrowserDetect: gb,
        _fnAddData: N,
        _fnAddTr: ma,
        _fnNodeToDataIndex: function(a, b) {
            return b._DT_RowIndex !== k ? b._DT_RowIndex : null
        },
        _fnNodeToColumnIndex: function(a, b, c) {
            return h.inArray(c, a.aoData[b].anCells)
        },
        _fnGetCellData: B,
        _fnSetCellData: jb,
        _fnSplitObjNotation: Ja,
        _fnGetObjectDataFn: Q,
        _fnSetObjectDataFn: R,
        _fnGetDataMaster: Ka,
        _fnClearTable: na,
        _fnDeleteIndex: oa,
        _fnInvalidate: ca,
        _fnGetRowElements: Ia,
        _fnCreateTr: Ha,
        _fnBuildHead: kb,
        _fnDrawHead: ea,
        _fnDraw: O,
        _fnReDraw: T,
        _fnAddOptionsHtml: nb,
        _fnDetectHeader: da,
        _fnGetUniqueThs: qa,
        _fnFeatureHtmlFilter: pb,
        _fnFilterComplete: fa,
        _fnFilterCustom: yb,
        _fnFilterColumn: xb,
        _fnFilter: wb,
        _fnFilterCreateSearch: Pa,
        _fnEscapeRegex: Qa,
        _fnFilterData: zb,
        _fnFeatureHtmlInfo: sb,
        _fnUpdateInfo: Cb,
        _fnInfoMacros: Db,
        _fnInitialise: ga,
        _fnInitComplete: ta,
        _fnLengthChange: Ra,
        _fnFeatureHtmlLength: ob,
        _fnFeatureHtmlPaginate: tb,
        _fnPageChange: Ta,
        _fnFeatureHtmlProcessing: qb,
        _fnProcessingDisplay: C,
        _fnFeatureHtmlTable: rb,
        _fnScrollDraw: ka,
        _fnApplyToChildren: J,
        _fnCalculateColumnWidths: Fa,
        _fnThrottle: Oa,
        _fnConvertToWidth: Fb,
        _fnGetWidestNode: Gb,
        _fnGetMaxLenString: Hb,
        _fnStringToCss: x,
        _fnSortFlatten: V,
        _fnSort: mb,
        _fnSortAria: Jb,
        _fnSortListener: Va,
        _fnSortAttachListener: Ma,
        _fnSortingClasses: va,
        _fnSortData: Ib,
        _fnSaveState: wa,
        _fnLoadState: Kb,
        _fnSettingsFromNode: xa,
        _fnLog: L,
        _fnMap: E,
        _fnBindAction: Wa,
        _fnCallbackReg: z,
        _fnCallbackFire: u,
        _fnLengthOverflow: Sa,
        _fnRenderer: Na,
        _fnDataSource: y,
        _fnRowAttributes: La,
        _fnCalculateEnd: function() {}
    });
    h.fn.dataTable = m;
    m.$ = h;
    h.fn.dataTableSettings = m.settings;
    h.fn.dataTableExt = m.ext;
    h.fn.DataTable = function(a) {
        return h(this).dataTable(a).api()
    }
    ;
    h.each(m, function(a, b) {
        h.fn.DataTable[a] = b
    });
    return h.fn.dataTable
});

/*!
 DataTables Bootstrap 3 integration
 ©2011-2015 SpryMedia Ltd - datatables.net/license
*/
(function(b) {
    "function" === typeof define && define.amd ? define(["jquery", "datatables.net"], function(a) {
        return b(a, window, document)
    }) : "object" === typeof exports ? module.exports = function(a, d) {
        a || (a = window);
        if (!d || !d.fn.dataTable)
            d = require("datatables.net")(a, d).$;
        return b(d, a, a.document)
    }
    : b(jQuery, window, document)
}
)(function(b, a, d) {
    var f = b.fn.dataTable;
    b.extend(!0, f.defaults, {
        dom: "<'row'<'col-sm-6'l><'col-sm-6'f>><'row'<'col-sm-12'tr>><'row'<'col-sm-5'i><'col-sm-7'p>>",
        renderer: "bootstrap"
    });
    b.extend(f.ext.classes, {
        sWrapper: "dataTables_wrapper form-inline dt-bootstrap",
        sFilterInput: "form-control input-sm",
        sLengthSelect: "form-control input-sm",
        sProcessing: "dataTables_processing panel panel-default"
    });
    f.ext.renderer.pageButton.bootstrap = function(a, h, r, m, j, n) {
        var o = new f.Api(a), s = a.oClasses, k = a.oLanguage.oPaginate, t = a.oLanguage.oAria.paginate || {}, e, g, p = 0, q = function(d, f) {
            var l, h, i, c, m = function(a) {
                a.preventDefault();
                !b(a.currentTarget).hasClass("disabled") && o.page() != a.data.action && o.page(a.data.action).draw("page")
            };
            l = 0;
            for (h = f.length; l < h; l++)
                if (c = f[l],
                b.isArray(c))
                    q(d, c);
                else {
                    g = e = "";
                    switch (c) {
                    case "ellipsis":
                        e = "&#x2026;";
                        g = "disabled";
                        break;
                    case "first":
                        e = k.sFirst;
                        g = c + (0 < j ? "" : " disabled");
                        break;
                    case "previous":
                        e = k.sPrevious;
                        g = c + (0 < j ? "" : " disabled");
                        break;
                    case "next":
                        e = k.sNext;
                        g = c + (j < n - 1 ? "" : " disabled");
                        break;
                    case "last":
                        e = k.sLast;
                        g = c + (j < n - 1 ? "" : " disabled");
                        break;
                    default:
                        e = c + 1,
                        g = j === c ? "active" : ""
                    }
                    e && (i = b("<li>", {
                        "class": s.sPageButton + " " + g,
                        id: 0 === r && "string" === typeof c ? a.sTableId + "_" + c : null
                    }).append(b("<a>", {
                        href: "#",
                        "aria-controls": a.sTableId,
                        "aria-label": t[c],
                        "data-dt-idx": p,
                        tabindex: a.iTabIndex
                    }).html(e)).appendTo(d),
                    a.oApi._fnBindAction(i, {
                        action: c
                    }, m),
                    p++)
                }
        }, i;
        try {
            i = b(h).find(d.activeElement).data("dt-idx")
        } catch (u) {}
        q(b(h).empty().html('<ul class="pagination"/>').children("ul"), m);
        i && b(h).find("[data-dt-idx=" + i + "]").focus()
    }
    ;
    return f
});

/*! js-url - v2.2.1 - 2016-03-10 */
window.url = function() {
    function a() {}
    function b(a) {
        return decodeURIComponent(a.replace(/\+/g, " "))
    }
    function c(a, b) {
        var c = a.charAt(0)
          , d = b.split(c);
        return c === a ? d : (a = parseInt(a.substring(1), 10),
        d[0 > a ? d.length + a : a - 1])
    }
    function d(a, c) {
        for (var d = a.charAt(0), e = c.split("&"), f = [], g = {}, h = [], i = a.substring(1), j = 0, k = e.length; k > j; j++)
            if (f = e[j].match(/(.*?)=(.*)/),
            f || (f = [e[j], e[j], ""]),
            "" !== f[1].replace(/\s/g, "")) {
                if (f[2] = b(f[2] || ""),
                i === f[1])
                    return f[2];
                h = f[1].match(/(.*)\[([0-9]+)\]/),
                h ? (g[h[1]] = g[h[1]] || [],
                g[h[1]][h[2]] = f[2]) : g[f[1]] = f[2]
            }
        return d === a ? g : g[i]
    }
    return function(b, e) {
        var f, g = {};
        if ("tld?" === b)
            return a();
        if (e = e || window.location.toString(),
        !b)
            return e;
        if (b = b.toString(),
        f = e.match(/^mailto:([^\/].+)/))
            g.protocol = "mailto",
            g.email = f[1];
        else {
            if ((f = e.match(/(.*?)#(.*)/)) && (g.hash = f[2],
            e = f[1]),
            g.hash && b.match(/^#/))
                return d(b, g.hash);
            if ((f = e.match(/(.*?)\?(.*)/)) && (g.query = f[2],
            e = f[1]),
            g.query && b.match(/^\?/))
                return d(b, g.query);
            if ((f = e.match(/(.*?)\:?\/\/(.*)/)) && (g.protocol = f[1].toLowerCase(),
            e = f[2]),
            (f = e.match(/(.*?)(\/.*)/)) && (g.path = f[2],
            e = f[1]),
            g.path = (g.path || "").replace(/^([^\/])/, "/$1").replace(/\/$/, ""),
            b.match(/^[\-0-9]+$/) && (b = b.replace(/^([^\/])/, "/$1")),
            b.match(/^\//))
                return c(b, g.path.substring(1));
            if (f = c("/-1", g.path.substring(1)),
            f && (f = f.match(/(.*?)\.(.*)/)) && (g.file = f[0],
            g.filename = f[1],
            g.fileext = f[2]),
            (f = e.match(/(.*)\:([0-9]+)$/)) && (g.port = f[2],
            e = f[1]),
            (f = e.match(/(.*?)@(.*)/)) && (g.auth = f[1],
            e = f[2]),
            g.auth && (f = g.auth.match(/(.*)\:(.*)/),
            g.user = f ? f[1] : g.auth,
            g.pass = f ? f[2] : void 0),
            g.hostname = e.toLowerCase(),
            "." === b.charAt(0))
                return c(b, g.hostname);
            a() && (f = g.hostname.match(a()),
            f && (g.tld = f[3],
            g.domain = f[2] ? f[2] + "." + f[3] : void 0,
            g.sub = f[1] || void 0)),
            g.port = g.port || ("https" === g.protocol ? "443" : "80"),
            g.protocol = g.protocol || ("443" === g.port ? "https" : "http")
        }
        return b in g ? g[b] : "{}" === b ? g : void 0
    }
}(),
"undefined" != typeof jQuery && jQuery.extend({
    url: function(a, b) {
        return window.url(a, b)
    }
});
if (typeof jQuery == "undefined") {
    throw new Error("jQuery is not loaded")
}
$.fn.zabuto_calendar = function(b) {
    var c = $.extend({}, $.fn.zabuto_calendar_defaults(), b);
    var a = $.fn.zabuto_calendar_language(c.language);
    c = $.extend({}, c, a);
    this.each(function() {
        var j = $(this);
        j.attr("id", "zabuto_calendar_" + Math.floor(Math.random() * 99999).toString(36));
        j.data("initYear", c.year);
        j.data("initMonth", c.month);
        j.data("monthLabels", c.month_labels);
        j.data("weekStartsOn", c.weekstartson);
        j.data("navIcons", c.nav_icon);
        j.data("dowLabels", c.dow_labels);
        j.data("showToday", c.today);
        j.data("showDays", c.show_days);
        j.data("showPrevious", c.show_previous);
        j.data("showNext", c.show_next);
        j.data("cellBorder", c.cell_border);
        j.data("jsonData", c.data);
        j.data("ajaxSettings", c.ajax);
        j.data("legendList", c.legend);
        j.data("actionFunction", c.action);
        j.data("actionNavFunction", c.action_nav);
        l();
        function l() {
            var y = parseInt(j.data("initYear"));
            var B = parseInt(j.data("initMonth")) - 1;
            var C = new Date(y,B,1,0,0,0,0);
            j.data("initDate", C);
            var D = (j.data("cellBorder") === true) ? " table-bordered" : "";
            $tableObj = $('<table class="table' + D + '"></table>');
            $tableObj = w(j, $tableObj, C.getFullYear(), C.getMonth());
            $legendObj = g(j);
            var z = $('<div class="zabuto_calendar" id="' + j.attr("id") + '"></div>');
            z.append($tableObj);
            z.append($legendObj);
            j.append(z);
            var A = j.data("jsonData");
            if (false !== A) {
                r(j, C.getFullYear(), C.getMonth())
            }
        }
        function w(A, C, z, B) {
            var y = new Date(z,B,1,0,0,0,0);
            A.data("currDate", y);
            C.empty();
            C = s(A, C, z, B);
            C = e(A, C);
            C = q(A, C, z, B);
            r(A, z, B);
            return C
        }
        function g(A) {
            var y = $('<div class="legend" id="' + A.attr("id") + '_legend"></div>');
            var z = A.data("legendList");
            if (typeof (z) == "object" && z.length > 0) {
                $(z).each(function(E, G) {
                    if (typeof (G) == "object") {
                        if ("type"in G) {
                            var F = "";
                            if ("label"in G) {
                                F = G.label
                            }
                            switch (G.type) {
                            case "text":
                                if (F !== "") {
                                    var D = "";
                                    if ("badge"in G) {
                                        if (typeof (G.classname) === "undefined") {
                                            var H = "badge-event"
                                        } else {
                                            var H = G.classname
                                        }
                                        D = '<span class="badge ' + H + '">' + G.badge + "</span> "
                                    }
                                    y.append('<span class="legend-' + G.type + '">' + D + F + "</span>")
                                }
                                break;
                            case "block":
                                if (F !== "") {
                                    F = "<span>" + F + "</span>"
                                }
                                if (typeof (G.classname) === "undefined") {
                                    var C = "event"
                                } else {
                                    var C = "event-styled " + G.classname
                                }
                                y.append('<span class="legend-' + G.type + '"><ul class="legend"><li class="' + C + '"></li></u>' + F + "</span>");
                                break;
                            case "list":
                                if ("list"in G && typeof (G.list) == "object" && G.list.length > 0) {
                                    var B = $('<ul class="legend"></u>');
                                    $(G.list).each(function(J, I) {
                                        B.append('<li class="' + I + '"></li>')
                                    });
                                    y.append(B)
                                }
                                break;
                            case "spacer":
                                y.append('<span class="legend-' + G.type + '"> </span>');
                                break
                            }
                        }
                    }
                })
            }
            return y
        }
        function s(N, B, K, I) {
            var J = N.data("navIcons");
            var G = $('<span><span class="glyphicon glyphicon-chevron-left"><span class=\"visuallyhidden\">rückwärts</span></span></span>');
            var H = $('<span><span class="glyphicon glyphicon-chevron-right"><span class=\"visuallyhidden\">vorwärts</span></span></span>');
            if (typeof (J) === "object") {
                if ("prev"in J) {
                    G.html(J.prev)
                }
                if ("next"in J) {
                    H.html(J.next)
                }
            }
            var M = N.data("showPrevious");
            if (typeof (M) === "number" || M === false) {
                M = p(N.data("showPrevious"), true)
            }
            var L = $('<div class="calendar-month-navigation"></div>');
            L.attr("id", N.attr("id") + "_nav-prev");
            L.data("navigation", "prev");
            if (M !== false) {
                prevMonth = (I - 1);
                prevYear = K;
                if (prevMonth == -1) {
                    prevYear = (prevYear - 1);
                    prevMonth = 11
                }
                L.data("to", {
                    year: prevYear,
                    month: (prevMonth + 1)
                });
                L.append(G);
                if (typeof (N.data("actionNavFunction")) === "function") {
                    L.click(N.data("actionNavFunction"))
                }
                L.click(function(P) {
                    w(N, B, prevYear, prevMonth)
                })
            }
            var F = N.data("showNext");
            if (typeof (F) === "number" || F === false) {
                F = p(N.data("showNext"), false)
            }
            var D = $('<div class="calendar-month-navigation"></div>');
            D.attr("id", N.attr("id") + "_nav-next");
            D.data("navigation", "next");
            if (F !== false) {
                nextMonth = (I + 1);
                nextYear = K;
                if (nextMonth == 12) {
                    nextYear = (nextYear + 1);
                    nextMonth = 0
                }
                D.data("to", {
                    year: nextYear,
                    month: (nextMonth + 1)
                });
                D.append(H);
                if (typeof (N.data("actionNavFunction")) === "function") {
                    D.click(N.data("actionNavFunction"))
                }
                D.click(function(P) {
                    w(N, B, nextYear, nextMonth)
                })
            }
            var O = N.data("monthLabels");
            var E = $("<th></th>").append(L);
            var y = $("<th></th>").append(D);
            var C = $("<span>" + O[I] + " " + K + "</span>");
            C.dblclick(function() {
                var P = N.data("initDate");
                w(N, B, P.getFullYear(), P.getMonth())
            });
            var z = $('<th colspan="5"></th>');
            z.append(C);
            var A = $('<tr class="calendar-month-header"></tr>');
            A.append(E, z, y);
            B.append(A);
            return B
        }
        function e(B, D) {
            if (B.data("showDays") === true) {
                var y = B.data("weekStartsOn");
                var z = B.data("dowLabels");
                if (y === 0) {
                    var C = $.extend([], z);
                    var E = new Array(C.pop());
                    z = E.concat(C)
                }
                var A = $('<tr class="calendar-dow-header"></tr>');
                $(z).each(function(F, G) {
                    A.append("<th>" + G + "</th>")
                });
                D.append(A)
            }
            return D
        }
        function q(G, F, I, N) {
            var E = G.data("ajaxSettings");
            var H = t(I, N);
            var y = o(I, N);
            var D = i(I, N, 1);
            var P = i(I, N, y);
            var C = 1;
            var B = G.data("weekStartsOn");
            if (B === 0) {
                if (P == 6) {
                    H++
                }
                if (D == 6 && (P == 0 || P == 1 || P == 5)) {
                    H--
                }
                D++;
                if (D == 7) {
                    D = 0
                }
            }
            for (var A = 0; A < H; A++) {
                var z = $('<tr class="calendar-dow"></tr>');
                for (var K = 0; K < 7; K++) {
                    if (K < D || C > y) {
                        z.append("<td></td>")
                    } else {
                        var O = G.attr("id") + "_" + k(I, N, C);
                        var M = O + "_day";
                        var L = $('<div id="' + M + '" class="day" >' + C + "</div>");
                        L.data("day", C);
                        if (G.data("showToday") === true) {
                            if (x(I, N, C)) {
                                L.html('<span class="badge badge-today">' + C + "</span>")
                            }
                        }
                        var J = $('<td id="' + O + '"></td>');
                        J.append(L);
                        J.data("date", k(I, N, C));
                        J.data("hasEvent", false);
                        if (typeof (G.data("actionFunction")) === "function") {
                            J.addClass("dow-clickable");
                            J.click(function() {
                                G.data("selectedDate", $(this).data("date"))
                            });
                            J.click(G.data("actionFunction"))
                        }
                        z.append(J);
                        C++
                    }
                    if (K == 6) {
                        D = 0
                    }
                }
                F.append(z)
            }
            return F
        }
        function h(B, H, G, J) {
            var I = $('<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>');
            var A = $('<h4 class="modal-title" id="' + B + '_modal_title">' + H + "</h4>");
            var K = $('<div class="modal-header"></div>');
            K.append(I);
            K.append(A);
            var F = $('<div class="modal-body" id="' + B + '_modal_body">' + G + "</div>");
            var E = $('<div class="modal-footer" id="' + B + '_modal_footer"></div>');
            if (typeof (J) !== "undefined") {
                var z = $("<div>" + J + "</div>");
                E.append(z)
            }
            var C = $('<div class="modal-content"></div>');
            C.append(K);
            C.append(F);
            C.append(E);
            var y = $('<div class="modal-dialog"></div>');
            y.append(C);
            var D = $('<div class="modal fade" id="' + B + '_modal" tabindex="-1" role="dialog" aria-labelledby="' + B + '_modal_title" aria-hidden="true"></div>');
            D.append(y);
            D.data("dateId", B);
            D.attr("dateId", B);
            return D
        }
        function r(A, z, C) {
            var y = A.data("jsonData");
            var B = A.data("ajaxSettings");
            A.data("events", false);
            if (false !== y) {
                return n(A)
            } else {
                if (false !== B) {
                    return u(A, z, C)
                }
            }
            return true
        }
        function n(z) {
            var y = z.data("jsonData");
            z.data("events", y);
            f(z, "json");
            return true
        }
        function u(z, y, C) {
            var B = z.data("ajaxSettings");
            if (typeof (B) != "object" || typeof (B.url) == "undefined") {
                alert("Invalid calendar event settings");
                return false
            }
            var A = {
                year: y,
                month: (C + 1)
            };
            $.ajax({
                type: "GET",
                url: B.url,
                data: A,
                dataType: "json"
            }).done(function(D) {
                var E = [];
                $.each(D, function(G, F) {
                    E.push(D[G])
                });
                z.data("events", E);
                f(z, "ajax")
            });
            return true
        }
        function f(B, A) {
            var z = B.data("jsonData");
            var C = B.data("ajaxSettings");
            var y = B.data("events");
            if (y !== false) {
                $(y).each(function(H, J) {
                    var D = B.attr("id") + "_" + J.date;
                    var F = $("#" + D);
                    var K = $("#" + D + "_day");
                    F.data("hasEvent", true);
                    if (typeof (J.title) !== "undefined") {
                        F.attr("title", J.title)
                    }
                    if (typeof (J.classname) === "undefined") {
                        F.addClass("event")
                    } else {
                        F.addClass("event-styled");
                        K.addClass(J.classname)
                    }
                    if (typeof (J.badge) !== "undefined" && J.badge !== false) {
                        var E = (J.badge === true) ? "" : " badge-" + J.badge;
                        var G = K.data("day");
                        K.html('<span class="badge badge-event' + E + '">' + G + "</span>")
                    }
                    if (typeof (J.body) !== "undefined") {
                        var I = false;
                        if (A === "json" && typeof (J.modal) !== "undefined" && J.modal === true) {
                            I = true
                        } else {
                            if (A === "ajax" && "modal"in C && C.modal === true) {
                                I = true
                            }
                        }
                        if (I === true) {
                            F.addClass("event-clickable");
                            var L = h(D, J.title, J.body, J.footer);
                            $("body").append(L);
                            $("#" + D).click(function() {
                                $("#" + D + "_modal").modal()
                            })
                        }
                    }
                })
            }
        }
        function x(A, B, z) {
            var C = new Date();
            var y = new Date(A,B,z);
            return (y.toDateString() == C.toDateString())
        }
        function k(z, A, y) {
            d = (y < 10) ? "0" + y : y;
            m = A + 1;
            m = (m < 10) ? "0" + m : m;
            return z + "-" + m + "-" + d
        }
        function i(A, B, z) {
            var y = new Date(A,B,z,0,0,0,0);
            var C = y.getDay();
            if (C == 0) {
                C = 6
            } else {
                C--
            }
            return C
        }
        function o(z, A) {
            var y = 28;
            while (v(z, A + 1, y + 1)) {
                y++
            }
            return y
        }
        function t(A, C) {
            var y = o(A, C);
            var E = i(A, C, 1);
            var B = i(A, C, y);
            var D = y;
            var z = (E - B);
            if (z > 0) {
                D += z
            }
            return Math.ceil(D / 7)
        }
        function v(B, z, A) {
            return z > 0 && z < 13 && B > 0 && B < 32768 && A > 0 && A <= (new Date(B,z,0)).getDate()
        }
        function p(A, C) {
            if (A === false) {
                A = 0
            }
            var B = j.data("currDate");
            var z = j.data("initDate");
            var y;
            y = (z.getFullYear() - B.getFullYear()) * 12;
            y -= B.getMonth() + 1;
            y += z.getMonth();
            if (C === true) {
                if (y < (parseInt(A) - 1)) {
                    return true
                }
            } else {
                if (y >= (0 - parseInt(A))) {
                    return true
                }
            }
            return false
        }
    });
    return this
}
;
$.fn.zabuto_calendar_defaults = function() {
    var a = new Date();
    var c = a.getFullYear();
    var e = a.getMonth() + 1;
    var b = {
        language: false,
        year: c,
        month: e,
        show_previous: true,
        show_next: true,
        cell_border: false,
        today: false,
        show_days: true,
        weekstartson: 1,
        nav_icon: false,
        data: false,
        ajax: false,
        legend: false,
        action: false,
        action_nav: false
    };
    return b
}
;
$.fn.zabuto_calendar_language = function(a) {
    if (typeof (a) == "undefined" || a === false) {
        a = "en"
    }
    switch (a.toLowerCase()) {
    case "de":
        return {
            month_labels: ["Januar", "Februar", "MÃ¤rz", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"],
            dow_labels: ["Mo", "Di", "Mi", "Do", "Fr", "Sa", "So"]
        };
        break;
    case "en":
        return {
            month_labels: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
            dow_labels: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
        };
        break;
    case "es":
        return {
            month_labels: ["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"],
            dow_labels: ["Lu", "Ma", "Mi", "Ju", "Vi", "SÃ¡", "Do"]
        };
        break;
    case "fr":
        return {
            month_labels: ["Janvier", "FÃ©vrier", "Mars", "Avril", "Mai", "Juin", "Juillet", "AoÃ»t", "Septembre", "Octobre", "Novembre", "DÃ©cembre"],
            dow_labels: ["Lun", "Mar", "Mer", "Jeu", "Ven", "Sam", "Dim"]
        };
        break;
    case "it":
        return {
            month_labels: ["Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre"],
            dow_labels: ["Lun", "Mar", "Mer", "Gio", "Ven", "Sab", "Dom"]
        };
        break;
    case "nl":
        return {
            month_labels: ["Januari", "Februari", "Maart", "April", "Mei", "Juni", "Juli", "Augustus", "September", "Oktober", "November", "December"],
            dow_labels: ["Ma", "Di", "Wo", "Do", "Vr", "Za", "Zo"]
        };
        break;
    case "pt":
        return {
            month_labels: ["Janeiro", "Fevereiro", "Marco", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"],
            dow_labels: ["S", "T", "Q", "Q", "S", "S", "D"]
        };
        break;
    case "ru":
        return {
            month_labels: ["Ð¯Ð½Ð²Ð°Ñ€ÑŒ", "Ð¤ÐµÐ²Ñ€Ð°Ð»ÑŒ", "ÐœÐ°Ñ€Ñ‚", "ÐÐ¿Ñ€ÐµÐ»ÑŒ", "ÐœÐ°Ð¹", "Ð˜ÑŽÐ½ÑŒ", "Ð˜ÑŽÐ»ÑŒ", "ÐÐ²Ð³ÑƒÑÑ‚", "Ð¡ÐµÐ½Ñ‚ÑÐ±Ñ€ÑŒ", "ÐžÐºÑ‚ÑÐ±Ñ€ÑŒ", "ÐÐ¾ÑÐ±Ñ€ÑŒ", "Ð”ÐµÐºÐ°Ð±Ñ€ÑŒ"],
            dow_labels: ["ÐŸÐ½", "Ð’Ñ‚", "Ð¡Ñ€", "Ð§Ñ‚", "ÐŸÑ‚", "Ð¡Ð±", "Ð’ÑÐº"]
        };
        break;
    case "se":
        return {
            month_labels: ["Januari", "Februari", "Mars", "April", "Maj", "Juni", "Juli", "Augusti", "September", "Oktober", "November", "December"],
            dow_labels: ["MÃ¥n", "Tis", "Ons", "Tor", "Fre", "LÃ¶r", "SÃ¶n"]
        };
        break;
    case "tr":
        return {
            month_labels: ["Ocak", "Åžubat", "Mart", "Nisan", "MayÄ±s", "Haziran", "Temmuz", "AÄŸustos", "EylÃ¼l", "Ekim", "KasÄ±m", "AralÄ±k"],
            dow_labels: ["Pts", "SalÄ±", "Ã‡ar", "Per", "Cuma", "Cts", "Paz"]
        };
        break
    }
}
;
// ==================================================
// fancyBox v3.5.7
//
// Licensed GPLv3 for open source use
// or fancyBox Commercial License for commercial use
//
// http://fancyapps.com/fancybox/
// Copyright 2019 fancyApps
//
// ==================================================
!function(t, e, n, o) {
    "use strict";
    function i(t, e) {
        var o, i, a, s = [], r = 0;
        t && t.isDefaultPrevented() || (t.preventDefault(),
        e = e || {},
        t && t.data && (e = h(t.data.options, e)),
        o = e.$target || n(t.currentTarget).trigger("blur"),
        (a = n.fancybox.getInstance()) && a.$trigger && a.$trigger.is(o) || (e.selector ? s = n(e.selector) : (i = o.attr("data-fancybox") || "",
        i ? (s = t.data ? t.data.items : [],
        s = s.length ? s.filter('[data-fancybox="' + i + '"]') : n('[data-fancybox="' + i + '"]')) : s = [o]),
        r = n(s).index(o),
        r < 0 && (r = 0),
        a = n.fancybox.open(s, e, r),
        a.$trigger = o))
    }
    if (t.console = t.console || {
        info: function(t) {}
    },
    n) {
        if (n.fn.fancybox)
            return void console.info("fancyBox already initialized");
        var a = {
            closeExisting: !1,
            loop: !1,
            gutter: 50,
            keyboard: !0,
            preventCaptionOverlap: !0,
            arrows: !0,
            infobar: !0,
            smallBtn: "auto",
            toolbar: "auto",
            buttons: ["zoom", "slideShow", "thumbs", "close"],
            idleTime: 3,
            protect: !1,
            modal: !1,
            image: {
                preload: !1
            },
            ajax: {
                settings: {
                    data: {
                        fancybox: !0
                    }
                }
            },
            iframe: {
                tpl: '<iframe id="fancybox-frame{rnd}" name="fancybox-frame{rnd}" class="fancybox-iframe" allowfullscreen="allowfullscreen" allow="autoplay; fullscreen" src=""></iframe>',
                preload: !0,
                css: {},
                attr: {
                    scrolling: "auto"
                }
            },
            video: {
                tpl: '<video class="fancybox-video" controls controlsList="nodownload" poster="{{poster}}"><source src="{{src}}" type="{{format}}" />Sorry, your browser doesn\'t support embedded videos, <a href="{{src}}">download</a> and watch with your favorite video player!</video>',
                format: "",
                autoStart: !0
            },
            defaultType: "image",
            animationEffect: "zoom",
            animationDuration: 366,
            zoomOpacity: "auto",
            transitionEffect: "fade",
            transitionDuration: 366,
            slideClass: "",
            baseClass: "",
            baseTpl: '<div class="fancybox-container" role="dialog" tabindex="-1"><div class="fancybox-bg"></div><div class="fancybox-inner"><div class="fancybox-infobar"><span data-fancybox-index></span>&nbsp;/&nbsp;<span data-fancybox-count></span></div><div class="fancybox-toolbar">{{buttons}}</div><div class="fancybox-navigation">{{arrows}}</div><div class="fancybox-stage"></div><div class="fancybox-caption"><div class="fancybox-caption__body"></div></div></div></div>',
            spinnerTpl: '<div class="fancybox-loading"></div>',
            errorTpl: '<div class="fancybox-error"><p>{{ERROR}}</p></div>',
            btnTpl: {
                download: '<a download data-fancybox-download class="fancybox-button fancybox-button--download" title="{{DOWNLOAD}}" href="javascript:;"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18.62 17.09V19H5.38v-1.91zm-2.97-6.96L17 11.45l-5 4.87-5-4.87 1.36-1.32 2.68 2.64V5h1.92v7.77z"/></svg></a>',
                zoom: '<button data-fancybox-zoom class="fancybox-button fancybox-button--zoom" title="{{ZOOM}}"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18.7 17.3l-3-3a5.9 5.9 0 0 0-.6-7.6 5.9 5.9 0 0 0-8.4 0 5.9 5.9 0 0 0 0 8.4 5.9 5.9 0 0 0 7.7.7l3 3a1 1 0 0 0 1.3 0c.4-.5.4-1 0-1.5zM8.1 13.8a4 4 0 0 1 0-5.7 4 4 0 0 1 5.7 0 4 4 0 0 1 0 5.7 4 4 0 0 1-5.7 0z"/></svg></button>',
                close: '<button data-fancybox-close class="fancybox-button fancybox-button--close" title="{{CLOSE}}"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 10.6L6.6 5.2 5.2 6.6l5.4 5.4-5.4 5.4 1.4 1.4 5.4-5.4 5.4 5.4 1.4-1.4-5.4-5.4 5.4-5.4-1.4-1.4-5.4 5.4z"/></svg></button>',
                arrowLeft: '<button data-fancybox-prev class="fancybox-button fancybox-button--arrow_left" title="{{PREV}}"><div><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M11.28 15.7l-1.34 1.37L5 12l4.94-5.07 1.34 1.38-2.68 2.72H19v1.94H8.6z"/></svg></div></button>',
                arrowRight: '<button data-fancybox-next class="fancybox-button fancybox-button--arrow_right" title="{{NEXT}}"><div><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M15.4 12.97l-2.68 2.72 1.34 1.38L19 12l-4.94-5.07-1.34 1.38 2.68 2.72H5v1.94z"/></svg></div></button>',
                smallBtn: '<button type="button" data-fancybox-close class="fancybox-button fancybox-close-small" title="{{CLOSE}}"><svg xmlns="http://www.w3.org/2000/svg" version="1" viewBox="0 0 24 24"><path d="M13 12l5-5-1-1-5 5-5-5-1 1 5 5-5 5 1 1 5-5 5 5 1-1z"/></svg></button>'
            },
            parentEl: "body",
            hideScrollbar: !0,
            autoFocus: !0,
            backFocus: !0,
            trapFocus: !0,
            fullScreen: {
                autoStart: !1
            },
            touch: {
                vertical: !0,
                momentum: !0
            },
            hash: null,
            media: {},
            slideShow: {
                autoStart: !1,
                speed: 3e3
            },
            thumbs: {
                autoStart: !1,
                hideOnClose: !0,
                parentEl: ".fancybox-container",
                axis: "y"
            },
            wheel: "auto",
            onInit: n.noop,
            beforeLoad: n.noop,
            afterLoad: n.noop,
            beforeShow: n.noop,
            afterShow: n.noop,
            beforeClose: n.noop,
            afterClose: n.noop,
            onActivate: n.noop,
            onDeactivate: n.noop,
            clickContent: function(t, e) {
                return "image" === t.type && "zoom"
            },
            clickSlide: "close",
            clickOutside: "close",
            dblclickContent: !1,
            dblclickSlide: !1,
            dblclickOutside: !1,
            mobile: {
                preventCaptionOverlap: !1,
                idleTime: !1,
                clickContent: function(t, e) {
                    return "image" === t.type && "toggleControls"
                },
                clickSlide: function(t, e) {
                    return "image" === t.type ? "toggleControls" : "close"
                },
                dblclickContent: function(t, e) {
                    return "image" === t.type && "zoom"
                },
                dblclickSlide: function(t, e) {
                    return "image" === t.type && "zoom"
                }
            },
            lang: "en",
            i18n: {
                en: {
                    CLOSE: "Close",
                    NEXT: "Next",
                    PREV: "Previous",
                    ERROR: "The requested content cannot be loaded. <br/> Please try again later.",
                    PLAY_START: "Start slideshow",
                    PLAY_STOP: "Pause slideshow",
                    FULL_SCREEN: "Full screen",
                    THUMBS: "Thumbnails",
                    DOWNLOAD: "Download",
                    SHARE: "Share",
                    ZOOM: "Zoom"
                },
                de: {
                    CLOSE: "Schlie&szlig;en",
                    NEXT: "Weiter",
                    PREV: "Zur&uuml;ck",
                    ERROR: "Die angeforderten Daten konnten nicht geladen werden. <br/> Bitte versuchen Sie es sp&auml;ter nochmal.",
                    PLAY_START: "Diaschau starten",
                    PLAY_STOP: "Diaschau beenden",
                    FULL_SCREEN: "Vollbild",
                    THUMBS: "Vorschaubilder",
                    DOWNLOAD: "Herunterladen",
                    SHARE: "Teilen",
                    ZOOM: "Vergr&ouml;&szlig;ern"
                }
            }
        }
          , s = n(t)
          , r = n(e)
          , c = 0
          , l = function(t) {
            return t && t.hasOwnProperty && t instanceof n
        }
          , d = function() {
            return t.requestAnimationFrame || t.webkitRequestAnimationFrame || t.mozRequestAnimationFrame || t.oRequestAnimationFrame || function(e) {
                return t.setTimeout(e, 1e3 / 60)
            }
        }()
          , u = function() {
            return t.cancelAnimationFrame || t.webkitCancelAnimationFrame || t.mozCancelAnimationFrame || t.oCancelAnimationFrame || function(e) {
                t.clearTimeout(e)
            }
        }()
          , f = function() {
            var t, n = e.createElement("fakeelement"), o = {
                transition: "transitionend",
                OTransition: "oTransitionEnd",
                MozTransition: "transitionend",
                WebkitTransition: "webkitTransitionEnd"
            };
            for (t in o)
                if (void 0 !== n.style[t])
                    return o[t];
            return "transitionend"
        }()
          , p = function(t) {
            return t && t.length && t[0].offsetHeight
        }
          , h = function(t, e) {
            var o = n.extend(!0, {}, t, e);
            return n.each(e, function(t, e) {
                n.isArray(e) && (o[t] = e)
            }),
            o
        }
          , g = function(t) {
            var o, i;
            return !(!t || t.ownerDocument !== e) && (n(".fancybox-container").css("pointer-events", "none"),
            o = {
                x: t.getBoundingClientRect().left + t.offsetWidth / 2,
                y: t.getBoundingClientRect().top + t.offsetHeight / 2
            },
            i = e.elementFromPoint(o.x, o.y) === t,
            n(".fancybox-container").css("pointer-events", ""),
            i)
        }
          , b = function(t, e, o) {
            var i = this;
            i.opts = h({
                index: o
            }, n.fancybox.defaults),
            n.isPlainObject(e) && (i.opts = h(i.opts, e)),
            n.fancybox.isMobile && (i.opts = h(i.opts, i.opts.mobile)),
            i.id = i.opts.id || ++c,
            i.currIndex = parseInt(i.opts.index, 10) || 0,
            i.prevIndex = null,
            i.prevPos = null,
            i.currPos = 0,
            i.firstRun = !0,
            i.group = [],
            i.slides = {},
            i.addContent(t),
            i.group.length && i.init()
        };
        n.extend(b.prototype, {
            init: function() {
                var o, i, a = this, s = a.group[a.currIndex], r = s.opts;
                r.closeExisting && n.fancybox.close(!0),
                n("body").addClass("fancybox-active"),
                !n.fancybox.getInstance() && !1 !== r.hideScrollbar && !n.fancybox.isMobile && e.body.scrollHeight > t.innerHeight && (n("head").append('<style id="fancybox-style-noscroll" type="text/css">.compensate-for-scrollbar{margin-right:' + (t.innerWidth - e.documentElement.clientWidth) + "px;}</style>"),
                n("body").addClass("compensate-for-scrollbar")),
                i = "",
                n.each(r.buttons, function(t, e) {
                    i += r.btnTpl[e] || ""
                }),
                o = n(a.translate(a, r.baseTpl.replace("{{buttons}}", i).replace("{{arrows}}", r.btnTpl.arrowLeft + r.btnTpl.arrowRight))).attr("id", "fancybox-container-" + a.id).addClass(r.baseClass).data("FancyBox", a).appendTo(r.parentEl),
                a.$refs = {
                    container: o
                },
                ["bg", "inner", "infobar", "toolbar", "stage", "caption", "navigation"].forEach(function(t) {
                    a.$refs[t] = o.find(".fancybox-" + t)
                }),
                a.trigger("onInit"),
                a.activate(),
                a.jumpTo(a.currIndex)
            },
            translate: function(t, e) {
                var n = t.opts.i18n[t.opts.lang] || t.opts.i18n.en;
                return e.replace(/\{\{(\w+)\}\}/g, function(t, e) {
                    return void 0 === n[e] ? t : n[e]
                })
            },
            addContent: function(t) {
                var e, o = this, i = n.makeArray(t);
                n.each(i, function(t, e) {
                    var i, a, s, r, c, l = {}, d = {};
                    n.isPlainObject(e) ? (l = e,
                    d = e.opts || e) : "object" === n.type(e) && n(e).length ? (i = n(e),
                    d = i.data() || {},
                    d = n.extend(!0, {}, d, d.options),
                    d.$orig = i,
                    l.src = o.opts.src || d.src || i.attr("href"),
                    l.type || l.src || (l.type = "inline",
                    l.src = e)) : l = {
                        type: "html",
                        src: e + ""
                    },
                    l.opts = n.extend(!0, {}, o.opts, d),
                    n.isArray(d.buttons) && (l.opts.buttons = d.buttons),
                    n.fancybox.isMobile && l.opts.mobile && (l.opts = h(l.opts, l.opts.mobile)),
                    a = l.type || l.opts.type,
                    r = l.src || "",
                    !a && r && ((s = r.match(/\.(mp4|mov|ogv|webm)((\?|#).*)?$/i)) ? (a = "video",
                    l.opts.video.format || (l.opts.video.format = "video/" + ("ogv" === s[1] ? "ogg" : s[1]))) : r.match(/(^data:image\/[a-z0-9+\/=]*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg|ico)((\?|#).*)?$)/i) ? a = "image" : r.match(/\.(pdf)((\?|#).*)?$/i) ? (a = "iframe",
                    l = n.extend(!0, l, {
                        contentType: "pdf",
                        opts: {
                            iframe: {
                                preload: !1
                            }
                        }
                    })) : "#" === r.charAt(0) && (a = "inline")),
                    a ? l.type = a : o.trigger("objectNeedsType", l),
                    l.contentType || (l.contentType = n.inArray(l.type, ["html", "inline", "ajax"]) > -1 ? "html" : l.type),
                    l.index = o.group.length,
                    "auto" == l.opts.smallBtn && (l.opts.smallBtn = n.inArray(l.type, ["html", "inline", "ajax"]) > -1),
                    "auto" === l.opts.toolbar && (l.opts.toolbar = !l.opts.smallBtn),
                    l.$thumb = l.opts.$thumb || null,
                    l.opts.$trigger && l.index === o.opts.index && (l.$thumb = l.opts.$trigger.find("img:first"),
                    l.$thumb.length && (l.opts.$orig = l.opts.$trigger)),
                    l.$thumb && l.$thumb.length || !l.opts.$orig || (l.$thumb = l.opts.$orig.find("img:first")),
                    l.$thumb && !l.$thumb.length && (l.$thumb = null),
                    l.thumb = l.opts.thumb || (l.$thumb ? l.$thumb[0].src : null),
                    "function" === n.type(l.opts.caption) && (l.opts.caption = l.opts.caption.apply(e, [o, l])),
                    "function" === n.type(o.opts.caption) && (l.opts.caption = o.opts.caption.apply(e, [o, l])),
                    l.opts.caption instanceof n || (l.opts.caption = void 0 === l.opts.caption ? "" : l.opts.caption + ""),
                    "ajax" === l.type && (c = r.split(/\s+/, 2),
                    c.length > 1 && (l.src = c.shift(),
                    l.opts.filter = c.shift())),
                    l.opts.modal && (l.opts = n.extend(!0, l.opts, {
                        trapFocus: !0,
                        infobar: 0,
                        toolbar: 0,
                        smallBtn: 0,
                        keyboard: 0,
                        slideShow: 0,
                        fullScreen: 0,
                        thumbs: 0,
                        touch: 0,
                        clickContent: !1,
                        clickSlide: !1,
                        clickOutside: !1,
                        dblclickContent: !1,
                        dblclickSlide: !1,
                        dblclickOutside: !1
                    })),
                    o.group.push(l)
                }),
                Object.keys(o.slides).length && (o.updateControls(),
                (e = o.Thumbs) && e.isActive && (e.create(),
                e.focus()))
            },
            addEvents: function() {
                var e = this;
                e.removeEvents(),
                e.$refs.container.on("click.fb-close", "[data-fancybox-close]", function(t) {
                    t.stopPropagation(),
                    t.preventDefault(),
                    e.close(t)
                }).on("touchstart.fb-prev click.fb-prev", "[data-fancybox-prev]", function(t) {
                    t.stopPropagation(),
                    t.preventDefault(),
                    e.previous()
                }).on("touchstart.fb-next click.fb-next", "[data-fancybox-next]", function(t) {
                    t.stopPropagation(),
                    t.preventDefault(),
                    e.next()
                }).on("click.fb", "[data-fancybox-zoom]", function(t) {
                    e[e.isScaledDown() ? "scaleToActual" : "scaleToFit"]()
                }),
                s.on("orientationchange.fb resize.fb", function(t) {
                    t && t.originalEvent && "resize" === t.originalEvent.type ? (e.requestId && u(e.requestId),
                    e.requestId = d(function() {
                        e.update(t)
                    })) : (e.current && "iframe" === e.current.type && e.$refs.stage.hide(),
                    setTimeout(function() {
                        e.$refs.stage.show(),
                        e.update(t)
                    }, n.fancybox.isMobile ? 600 : 250))
                }),
                r.on("keydown.fb", function(t) {
                    var o = n.fancybox ? n.fancybox.getInstance() : null
                      , i = o.current
                      , a = t.keyCode || t.which;
                    if (9 == a)
                        return void (i.opts.trapFocus && e.focus(t));
                    if (!(!i.opts.keyboard || t.ctrlKey || t.altKey || t.shiftKey || n(t.target).is("input,textarea,video,audio,select")))
                        return 8 === a || 27 === a ? (t.preventDefault(),
                        void e.close(t)) : 37 === a || 38 === a ? (t.preventDefault(),
                        void e.previous()) : 39 === a || 40 === a ? (t.preventDefault(),
                        void e.next()) : void e.trigger("afterKeydown", t, a)
                }),
                e.group[e.currIndex].opts.idleTime && (e.idleSecondsCounter = 0,
                r.on("mousemove.fb-idle mouseleave.fb-idle mousedown.fb-idle touchstart.fb-idle touchmove.fb-idle scroll.fb-idle keydown.fb-idle", function(t) {
                    e.idleSecondsCounter = 0,
                    e.isIdle && e.showControls(),
                    e.isIdle = !1
                }),
                e.idleInterval = t.setInterval(function() {
                    ++e.idleSecondsCounter >= e.group[e.currIndex].opts.idleTime && !e.isDragging && (e.isIdle = !0,
                    e.idleSecondsCounter = 0,
                    e.hideControls())
                }, 1e3))
            },
            removeEvents: function() {
                var e = this;
                s.off("orientationchange.fb resize.fb"),
                r.off("keydown.fb .fb-idle"),
                this.$refs.container.off(".fb-close .fb-prev .fb-next"),
                e.idleInterval && (t.clearInterval(e.idleInterval),
                e.idleInterval = null)
            },
            previous: function(t) {
                return this.jumpTo(this.currPos - 1, t)
            },
            next: function(t) {
                return this.jumpTo(this.currPos + 1, t)
            },
            jumpTo: function(t, e) {
                var o, i, a, s, r, c, l, d, u, f = this, h = f.group.length;
                if (!(f.isDragging || f.isClosing || f.isAnimating && f.firstRun)) {
                    if (t = parseInt(t, 10),
                    !(a = f.current ? f.current.opts.loop : f.opts.loop) && (t < 0 || t >= h))
                        return !1;
                    if (o = f.firstRun = !Object.keys(f.slides).length,
                    r = f.current,
                    f.prevIndex = f.currIndex,
                    f.prevPos = f.currPos,
                    s = f.createSlide(t),
                    h > 1 && ((a || s.index < h - 1) && f.createSlide(t + 1),
                    (a || s.index > 0) && f.createSlide(t - 1)),
                    f.current = s,
                    f.currIndex = s.index,
                    f.currPos = s.pos,
                    f.trigger("beforeShow", o),
                    f.updateControls(),
                    s.forcedDuration = void 0,
                    n.isNumeric(e) ? s.forcedDuration = e : e = s.opts[o ? "animationDuration" : "transitionDuration"],
                    e = parseInt(e, 10),
                    i = f.isMoved(s),
                    s.$slide.addClass("fancybox-slide--current"),
                    o)
                        return s.opts.animationEffect && e && f.$refs.container.css("transition-duration", e + "ms"),
                        f.$refs.container.addClass("fancybox-is-open").trigger("focus"),
                        f.loadSlide(s),
                        void f.preload("image");
                    c = n.fancybox.getTranslate(r.$slide),
                    l = n.fancybox.getTranslate(f.$refs.stage),
                    n.each(f.slides, function(t, e) {
                        n.fancybox.stop(e.$slide, !0)
                    }),
                    r.pos !== s.pos && (r.isComplete = !1),
                    r.$slide.removeClass("fancybox-slide--complete fancybox-slide--current"),
                    i ? (u = c.left - (r.pos * c.width + r.pos * r.opts.gutter),
                    n.each(f.slides, function(t, o) {
                        o.$slide.removeClass("fancybox-animated").removeClass(function(t, e) {
                            return (e.match(/(^|\s)fancybox-fx-\S+/g) || []).join(" ")
                        });
                        var i = o.pos * c.width + o.pos * o.opts.gutter;
                        n.fancybox.setTranslate(o.$slide, {
                            top: 0,
                            left: i - l.left + u
                        }),
                        o.pos !== s.pos && o.$slide.addClass("fancybox-slide--" + (o.pos > s.pos ? "next" : "previous")),
                        p(o.$slide),
                        n.fancybox.animate(o.$slide, {
                            top: 0,
                            left: (o.pos - s.pos) * c.width + (o.pos - s.pos) * o.opts.gutter
                        }, e, function() {
                            o.$slide.css({
                                transform: "",
                                opacity: ""
                            }).removeClass("fancybox-slide--next fancybox-slide--previous"),
                            o.pos === f.currPos && f.complete()
                        })
                    })) : e && s.opts.transitionEffect && (d = "fancybox-animated fancybox-fx-" + s.opts.transitionEffect,
                    r.$slide.addClass("fancybox-slide--" + (r.pos > s.pos ? "next" : "previous")),
                    n.fancybox.animate(r.$slide, d, e, function() {
                        r.$slide.removeClass(d).removeClass("fancybox-slide--next fancybox-slide--previous")
                    }, !1)),
                    s.isLoaded ? f.revealContent(s) : f.loadSlide(s),
                    f.preload("image")
                }
            },
            createSlide: function(t) {
                var e, o, i = this;
                return o = t % i.group.length,
                o = o < 0 ? i.group.length + o : o,
                !i.slides[t] && i.group[o] && (e = n('<div class="fancybox-slide"></div>').appendTo(i.$refs.stage),
                i.slides[t] = n.extend(!0, {}, i.group[o], {
                    pos: t,
                    $slide: e,
                    isLoaded: !1
                }),
                i.updateSlide(i.slides[t])),
                i.slides[t]
            },
            scaleToActual: function(t, e, o) {
                var i, a, s, r, c, l = this, d = l.current, u = d.$content, f = n.fancybox.getTranslate(d.$slide).width, p = n.fancybox.getTranslate(d.$slide).height, h = d.width, g = d.height;
                l.isAnimating || l.isMoved() || !u || "image" != d.type || !d.isLoaded || d.hasError || (l.isAnimating = !0,
                n.fancybox.stop(u),
                t = void 0 === t ? .5 * f : t,
                e = void 0 === e ? .5 * p : e,
                i = n.fancybox.getTranslate(u),
                i.top -= n.fancybox.getTranslate(d.$slide).top,
                i.left -= n.fancybox.getTranslate(d.$slide).left,
                r = h / i.width,
                c = g / i.height,
                a = .5 * f - .5 * h,
                s = .5 * p - .5 * g,
                h > f && (a = i.left * r - (t * r - t),
                a > 0 && (a = 0),
                a < f - h && (a = f - h)),
                g > p && (s = i.top * c - (e * c - e),
                s > 0 && (s = 0),
                s < p - g && (s = p - g)),
                l.updateCursor(h, g),
                n.fancybox.animate(u, {
                    top: s,
                    left: a,
                    scaleX: r,
                    scaleY: c
                }, o || 366, function() {
                    l.isAnimating = !1
                }),
                l.SlideShow && l.SlideShow.isActive && l.SlideShow.stop())
            },
            scaleToFit: function(t) {
                var e, o = this, i = o.current, a = i.$content;
                o.isAnimating || o.isMoved() || !a || "image" != i.type || !i.isLoaded || i.hasError || (o.isAnimating = !0,
                n.fancybox.stop(a),
                e = o.getFitPos(i),
                o.updateCursor(e.width, e.height),
                n.fancybox.animate(a, {
                    top: e.top,
                    left: e.left,
                    scaleX: e.width / a.width(),
                    scaleY: e.height / a.height()
                }, t || 366, function() {
                    o.isAnimating = !1
                }))
            },
            getFitPos: function(t) {
                var e, o, i, a, s = this, r = t.$content, c = t.$slide, l = t.width || t.opts.width, d = t.height || t.opts.height, u = {};
                return !!(t.isLoaded && r && r.length) && (e = n.fancybox.getTranslate(s.$refs.stage).width,
                o = n.fancybox.getTranslate(s.$refs.stage).height,
                e -= parseFloat(c.css("paddingLeft")) + parseFloat(c.css("paddingRight")) + parseFloat(r.css("marginLeft")) + parseFloat(r.css("marginRight")),
                o -= parseFloat(c.css("paddingTop")) + parseFloat(c.css("paddingBottom")) + parseFloat(r.css("marginTop")) + parseFloat(r.css("marginBottom")),
                l && d || (l = e,
                d = o),
                i = Math.min(1, e / l, o / d),
                l *= i,
                d *= i,
                l > e - .5 && (l = e),
                d > o - .5 && (d = o),
                "image" === t.type ? (u.top = Math.floor(.5 * (o - d)) + parseFloat(c.css("paddingTop")),
                u.left = Math.floor(.5 * (e - l)) + parseFloat(c.css("paddingLeft"))) : "video" === t.contentType && (a = t.opts.width && t.opts.height ? l / d : t.opts.ratio || 16 / 9,
                d > l / a ? d = l / a : l > d * a && (l = d * a)),
                u.width = l,
                u.height = d,
                u)
            },
            update: function(t) {
                var e = this;
                n.each(e.slides, function(n, o) {
                    e.updateSlide(o, t)
                })
            },
            updateSlide: function(t, e) {
                var o = this
                  , i = t && t.$content
                  , a = t.width || t.opts.width
                  , s = t.height || t.opts.height
                  , r = t.$slide;
                o.adjustCaption(t),
                i && (a || s || "video" === t.contentType) && !t.hasError && (n.fancybox.stop(i),
                n.fancybox.setTranslate(i, o.getFitPos(t)),
                t.pos === o.currPos && (o.isAnimating = !1,
                o.updateCursor())),
                o.adjustLayout(t),
                r.length && (r.trigger("refresh"),
                t.pos === o.currPos && o.$refs.toolbar.add(o.$refs.navigation.find(".fancybox-button--arrow_right")).toggleClass("compensate-for-scrollbar", r.get(0).scrollHeight > r.get(0).clientHeight)),
                o.trigger("onUpdate", t, e)
            },
            centerSlide: function(t) {
                var e = this
                  , o = e.current
                  , i = o.$slide;
                !e.isClosing && o && (i.siblings().css({
                    transform: "",
                    opacity: ""
                }),
                i.parent().children().removeClass("fancybox-slide--previous fancybox-slide--next"),
                n.fancybox.animate(i, {
                    top: 0,
                    left: 0,
                    opacity: 1
                }, void 0 === t ? 0 : t, function() {
                    i.css({
                        transform: "",
                        opacity: ""
                    }),
                    o.isComplete || e.complete()
                }, !1))
            },
            isMoved: function(t) {
                var e, o, i = t || this.current;
                return !!i && (o = n.fancybox.getTranslate(this.$refs.stage),
                e = n.fancybox.getTranslate(i.$slide),
                !i.$slide.hasClass("fancybox-animated") && (Math.abs(e.top - o.top) > .5 || Math.abs(e.left - o.left) > .5))
            },
            updateCursor: function(t, e) {
                var o, i, a = this, s = a.current, r = a.$refs.container;
                s && !a.isClosing && a.Guestures && (r.removeClass("fancybox-is-zoomable fancybox-can-zoomIn fancybox-can-zoomOut fancybox-can-swipe fancybox-can-pan"),
                o = a.canPan(t, e),
                i = !!o || a.isZoomable(),
                r.toggleClass("fancybox-is-zoomable", i),
                n("[data-fancybox-zoom]").prop("disabled", !i),
                o ? r.addClass("fancybox-can-pan") : i && ("zoom" === s.opts.clickContent || n.isFunction(s.opts.clickContent) && "zoom" == s.opts.clickContent(s)) ? r.addClass("fancybox-can-zoomIn") : s.opts.touch && (s.opts.touch.vertical || a.group.length > 1) && "video" !== s.contentType && r.addClass("fancybox-can-swipe"))
            },
            isZoomable: function() {
                var t, e = this, n = e.current;
                if (n && !e.isClosing && "image" === n.type && !n.hasError) {
                    if (!n.isLoaded)
                        return !0;
                    if ((t = e.getFitPos(n)) && (n.width > t.width || n.height > t.height))
                        return !0
                }
                return !1
            },
            isScaledDown: function(t, e) {
                var o = this
                  , i = !1
                  , a = o.current
                  , s = a.$content;
                return void 0 !== t && void 0 !== e ? i = t < a.width && e < a.height : s && (i = n.fancybox.getTranslate(s),
                i = i.width < a.width && i.height < a.height),
                i
            },
            canPan: function(t, e) {
                var o = this
                  , i = o.current
                  , a = null
                  , s = !1;
                return "image" === i.type && (i.isComplete || t && e) && !i.hasError && (s = o.getFitPos(i),
                void 0 !== t && void 0 !== e ? a = {
                    width: t,
                    height: e
                } : i.isComplete && (a = n.fancybox.getTranslate(i.$content)),
                a && s && (s = Math.abs(a.width - s.width) > 1.5 || Math.abs(a.height - s.height) > 1.5)),
                s
            },
            loadSlide: function(t) {
                var e, o, i, a = this;
                if (!t.isLoading && !t.isLoaded) {
                    if (t.isLoading = !0,
                    !1 === a.trigger("beforeLoad", t))
                        return t.isLoading = !1,
                        !1;
                    switch (e = t.type,
                    o = t.$slide,
                    o.off("refresh").trigger("onReset").addClass(t.opts.slideClass),
                    e) {
                    case "image":
                        a.setImage(t);
                        break;
                    case "iframe":
                        a.setIframe(t);
                        break;
                    case "html":
                        a.setContent(t, t.src || t.content);
                        break;
                    case "video":
                        a.setContent(t, t.opts.video.tpl.replace(/\{\{src\}\}/gi, t.src).replace("{{format}}", t.opts.videoFormat || t.opts.video.format || "").replace("{{poster}}", t.thumb || ""));
                        break;
                    case "inline":
                        n(t.src).length ? a.setContent(t, n(t.src)) : a.setError(t);
                        break;
                    case "ajax":
                        a.showLoading(t),
                        i = n.ajax(n.extend({}, t.opts.ajax.settings, {
                            url: t.src,
                            success: function(e, n) {
                                "success" === n && a.setContent(t, e)
                            },
                            error: function(e, n) {
                                e && "abort" !== n && a.setError(t)
                            }
                        })),
                        o.one("onReset", function() {
                            i.abort()
                        });
                        break;
                    default:
                        a.setError(t)
                    }
                    return !0
                }
            },
            setImage: function(t) {
                var o, i = this;
                setTimeout(function() {
                    var e = t.$image;
                    i.isClosing || !t.isLoading || e && e.length && e[0].complete || t.hasError || i.showLoading(t)
                }, 50),
                i.checkSrcset(t),
                t.$content = n('<div class="fancybox-content"></div>').addClass("fancybox-is-hidden").appendTo(t.$slide.addClass("fancybox-slide--image")),
                !1 !== t.opts.preload && t.opts.width && t.opts.height && t.thumb && (t.width = t.opts.width,
                t.height = t.opts.height,
                o = e.createElement("img"),
                o.onerror = function() {
                    n(this).remove(),
                    t.$ghost = null
                }
                ,
                o.onload = function() {
                    i.afterLoad(t)
                }
                ,
                t.$ghost = n(o).addClass("fancybox-image").appendTo(t.$content).attr("src", t.thumb)),
                i.setBigImage(t)
            },
            checkSrcset: function(e) {
                var n, o, i, a, s = e.opts.srcset || e.opts.image.srcset;
                if (s) {
                    i = t.devicePixelRatio || 1,
                    a = t.innerWidth * i,
                    o = s.split(",").map(function(t) {
                        var e = {};
                        return t.trim().split(/\s+/).forEach(function(t, n) {
                            var o = parseInt(t.substring(0, t.length - 1), 10);
                            if (0 === n)
                                return e.url = t;
                            o && (e.value = o,
                            e.postfix = t[t.length - 1])
                        }),
                        e
                    }),
                    o.sort(function(t, e) {
                        return t.value - e.value
                    });
                    for (var r = 0; r < o.length; r++) {
                        var c = o[r];
                        if ("w" === c.postfix && c.value >= a || "x" === c.postfix && c.value >= i) {
                            n = c;
                            break
                        }
                    }
                    !n && o.length && (n = o[o.length - 1]),
                    n && (e.src = n.url,
                    e.width && e.height && "w" == n.postfix && (e.height = e.width / e.height * n.value,
                    e.width = n.value),
                    e.opts.srcset = s)
                }
            },
            setBigImage: function(t) {
                var o = this
                  , i = e.createElement("img")
                  , a = n(i);
                t.$image = a.one("error", function() {
                    o.setError(t)
                }).one("load", function() {
                    var e;
                    t.$ghost || (o.resolveImageSlideSize(t, this.naturalWidth, this.naturalHeight),
                    o.afterLoad(t)),
                    o.isClosing || (t.opts.srcset && (e = t.opts.sizes,
                    e && "auto" !== e || (e = (t.width / t.height > 1 && s.width() / s.height() > 1 ? "100" : Math.round(t.width / t.height * 100)) + "vw"),
                    a.attr("sizes", e).attr("srcset", t.opts.srcset)),
                    t.$ghost && setTimeout(function() {
                        t.$ghost && !o.isClosing && t.$ghost.hide()
                    }, Math.min(300, Math.max(1e3, t.height / 1600))),
                    o.hideLoading(t))
                }).addClass("fancybox-image").attr("src", t.src).appendTo(t.$content),
                (i.complete || "complete" == i.readyState) && a.naturalWidth && a.naturalHeight ? a.trigger("load") : i.error && a.trigger("error")
            },
            resolveImageSlideSize: function(t, e, n) {
                var o = parseInt(t.opts.width, 10)
                  , i = parseInt(t.opts.height, 10);
                t.width = e,
                t.height = n,
                o > 0 && (t.width = o,
                t.height = Math.floor(o * n / e)),
                i > 0 && (t.width = Math.floor(i * e / n),
                t.height = i)
            },
            setIframe: function(t) {
                var e, o = this, i = t.opts.iframe, a = t.$slide;
                t.$content = n('<div class="fancybox-content' + (i.preload ? " fancybox-is-hidden" : "") + '"></div>').css(i.css).appendTo(a),
                a.addClass("fancybox-slide--" + t.contentType),
                t.$iframe = e = n(i.tpl.replace(/\{rnd\}/g, (new Date).getTime())).attr(i.attr).appendTo(t.$content),
                i.preload ? (o.showLoading(t),
                e.on("load.fb error.fb", function(e) {
                    this.isReady = 1,
                    t.$slide.trigger("refresh"),
                    o.afterLoad(t)
                }),
                a.on("refresh.fb", function() {
                    var n, o, s = t.$content, r = i.css.width, c = i.css.height;
                    if (1 === e[0].isReady) {
                        try {
                            n = e.contents(),
                            o = n.find("body")
                        } catch (t) {}
                        o && o.length && o.children().length && (a.css("overflow", "visible"),
                        s.css({
                            width: "100%",
                            "max-width": "100%",
                            height: "9999px"
                        }),
                        void 0 === r && (r = Math.ceil(Math.max(o[0].clientWidth, o.outerWidth(!0)))),
                        s.css("width", r || "").css("max-width", ""),
                        void 0 === c && (c = Math.ceil(Math.max(o[0].clientHeight, o.outerHeight(!0)))),
                        s.css("height", c || ""),
                        a.css("overflow", "auto")),
                        s.removeClass("fancybox-is-hidden")
                    }
                })) : o.afterLoad(t),
                e.attr("src", t.src),
                a.one("onReset", function() {
                    try {
                        n(this).find("iframe").hide().unbind().attr("src", "//about:blank")
                    } catch (t) {}
                    n(this).off("refresh.fb").empty(),
                    t.isLoaded = !1,
                    t.isRevealed = !1
                })
            },
            setContent: function(t, e) {
                var o = this;
                o.isClosing || (o.hideLoading(t),
                t.$content && n.fancybox.stop(t.$content),
                t.$slide.empty(),
                l(e) && e.parent().length ? ((e.hasClass("fancybox-content") || e.parent().hasClass("fancybox-content")) && e.parents(".fancybox-slide").trigger("onReset"),
                t.$placeholder = n("<div>").hide().insertAfter(e),
                e.css("display", "inline-block")) : t.hasError || ("string" === n.type(e) && (e = n("<div>").append(n.trim(e)).contents()),
                t.opts.filter && (e = n("<div>").html(e).find(t.opts.filter))),
                t.$slide.one("onReset", function() {
                    n(this).find("video,audio").trigger("pause"),
                    t.$placeholder && (t.$placeholder.after(e.removeClass("fancybox-content").hide()).remove(),
                    t.$placeholder = null),
                    t.$smallBtn && (t.$smallBtn.remove(),
                    t.$smallBtn = null),
                    t.hasError || (n(this).empty(),
                    t.isLoaded = !1,
                    t.isRevealed = !1)
                }),
                n(e).appendTo(t.$slide),
                n(e).is("video,audio") && (n(e).addClass("fancybox-video"),
                n(e).wrap("<div></div>"),
                t.contentType = "video",
                t.opts.width = t.opts.width || n(e).attr("width"),
                t.opts.height = t.opts.height || n(e).attr("height")),
                t.$content = t.$slide.children().filter("div,form,main,video,audio,article,.fancybox-content").first(),
                t.$content.siblings().hide(),
                t.$content.length || (t.$content = t.$slide.wrapInner("<div></div>").children().first()),
                t.$content.addClass("fancybox-content"),
                t.$slide.addClass("fancybox-slide--" + t.contentType),
                o.afterLoad(t))
            },
            setError: function(t) {
                t.hasError = !0,
                t.$slide.trigger("onReset").removeClass("fancybox-slide--" + t.contentType).addClass("fancybox-slide--error"),
                t.contentType = "html",
                this.setContent(t, this.translate(t, t.opts.errorTpl)),
                t.pos === this.currPos && (this.isAnimating = !1)
            },
            showLoading: function(t) {
                var e = this;
                (t = t || e.current) && !t.$spinner && (t.$spinner = n(e.translate(e, e.opts.spinnerTpl)).appendTo(t.$slide).hide().fadeIn("fast"))
            },
            hideLoading: function(t) {
                var e = this;
                (t = t || e.current) && t.$spinner && (t.$spinner.stop().remove(),
                delete t.$spinner)
            },
            afterLoad: function(t) {
                var e = this;
                e.isClosing || (t.isLoading = !1,
                t.isLoaded = !0,
                e.trigger("afterLoad", t),
                e.hideLoading(t),
                !t.opts.smallBtn || t.$smallBtn && t.$smallBtn.length || (t.$smallBtn = n(e.translate(t, t.opts.btnTpl.smallBtn)).appendTo(t.$content)),
                t.opts.protect && t.$content && !t.hasError && (t.$content.on("contextmenu.fb", function(t) {
                    return 2 == t.button && t.preventDefault(),
                    !0
                }),
                "image" === t.type && n('<div class="fancybox-spaceball"></div>').appendTo(t.$content)),
                e.adjustCaption(t),
                e.adjustLayout(t),
                t.pos === e.currPos && e.updateCursor(),
                e.revealContent(t))
            },
            adjustCaption: function(t) {
                var e, n = this, o = t || n.current, i = o.opts.caption, a = o.opts.preventCaptionOverlap, s = n.$refs.caption, r = !1;
                s.toggleClass("fancybox-caption--separate", a),
                a && i && i.length && (o.pos !== n.currPos ? (e = s.clone().appendTo(s.parent()),
                e.children().eq(0).empty().html(i),
                r = e.outerHeight(!0),
                e.empty().remove()) : n.$caption && (r = n.$caption.outerHeight(!0)),
                o.$slide.css("padding-bottom", r || ""))
            },
            adjustLayout: function(t) {
                var e, n, o, i, a = this, s = t || a.current;
                s.isLoaded && !0 !== s.opts.disableLayoutFix && (s.$content.css("margin-bottom", ""),
                s.$content.outerHeight() > s.$slide.height() + .5 && (o = s.$slide[0].style["padding-bottom"],
                i = s.$slide.css("padding-bottom"),
                parseFloat(i) > 0 && (e = s.$slide[0].scrollHeight,
                s.$slide.css("padding-bottom", 0),
                Math.abs(e - s.$slide[0].scrollHeight) < 1 && (n = i),
                s.$slide.css("padding-bottom", o))),
                s.$content.css("margin-bottom", n))
            },
            revealContent: function(t) {
                var e, o, i, a, s = this, r = t.$slide, c = !1, l = !1, d = s.isMoved(t), u = t.isRevealed;
                return t.isRevealed = !0,
                e = t.opts[s.firstRun ? "animationEffect" : "transitionEffect"],
                i = t.opts[s.firstRun ? "animationDuration" : "transitionDuration"],
                i = parseInt(void 0 === t.forcedDuration ? i : t.forcedDuration, 10),
                !d && t.pos === s.currPos && i || (e = !1),
                "zoom" === e && (t.pos === s.currPos && i && "image" === t.type && !t.hasError && (l = s.getThumbPos(t)) ? c = s.getFitPos(t) : e = "fade"),
                "zoom" === e ? (s.isAnimating = !0,
                c.scaleX = c.width / l.width,
                c.scaleY = c.height / l.height,
                a = t.opts.zoomOpacity,
                "auto" == a && (a = Math.abs(t.width / t.height - l.width / l.height) > .1),
                a && (l.opacity = .1,
                c.opacity = 1),
                n.fancybox.setTranslate(t.$content.removeClass("fancybox-is-hidden"), l),
                p(t.$content),
                void n.fancybox.animate(t.$content, c, i, function() {
                    s.isAnimating = !1,
                    s.complete()
                })) : (s.updateSlide(t),
                e ? (n.fancybox.stop(r),
                o = "fancybox-slide--" + (t.pos >= s.prevPos ? "next" : "previous") + " fancybox-animated fancybox-fx-" + e,
                r.addClass(o).removeClass("fancybox-slide--current"),
                t.$content.removeClass("fancybox-is-hidden"),
                p(r),
                "image" !== t.type && t.$content.hide().show(0),
                void n.fancybox.animate(r, "fancybox-slide--current", i, function() {
                    r.removeClass(o).css({
                        transform: "",
                        opacity: ""
                    }),
                    t.pos === s.currPos && s.complete()
                }, !0)) : (t.$content.removeClass("fancybox-is-hidden"),
                u || !d || "image" !== t.type || t.hasError || t.$content.hide().fadeIn("fast"),
                void (t.pos === s.currPos && s.complete())))
            },
            getThumbPos: function(t) {
                var e, o, i, a, s, r = !1, c = t.$thumb;
                return !(!c || !g(c[0])) && (e = n.fancybox.getTranslate(c),
                o = parseFloat(c.css("border-top-width") || 0),
                i = parseFloat(c.css("border-right-width") || 0),
                a = parseFloat(c.css("border-bottom-width") || 0),
                s = parseFloat(c.css("border-left-width") || 0),
                r = {
                    top: e.top + o,
                    left: e.left + s,
                    width: e.width - i - s,
                    height: e.height - o - a,
                    scaleX: 1,
                    scaleY: 1
                },
                e.width > 0 && e.height > 0 && r)
            },
            complete: function() {
                var t, e = this, o = e.current, i = {};
                !e.isMoved() && o.isLoaded && (o.isComplete || (o.isComplete = !0,
                o.$slide.siblings().trigger("onReset"),
                e.preload("inline"),
                p(o.$slide),
                o.$slide.addClass("fancybox-slide--complete"),
                n.each(e.slides, function(t, o) {
                    o.pos >= e.currPos - 1 && o.pos <= e.currPos + 1 ? i[o.pos] = o : o && (n.fancybox.stop(o.$slide),
                    o.$slide.off().remove())
                }),
                e.slides = i),
                e.isAnimating = !1,
                e.updateCursor(),
                e.trigger("afterShow"),
                o.opts.video.autoStart && o.$slide.find("video,audio").filter(":visible:first").trigger("play").one("ended", function() {
                    Document.exitFullscreen ? Document.exitFullscreen() : this.webkitExitFullscreen && this.webkitExitFullscreen(),
                    e.next()
                }),
                o.opts.autoFocus && "html" === o.contentType && (t = o.$content.find("input[autofocus]:enabled:visible:first"),
                t.length ? t.trigger("focus") : e.focus(null, !0)),
                o.$slide.scrollTop(0).scrollLeft(0))
            },
            preload: function(t) {
                var e, n, o = this;
                o.group.length < 2 || (n = o.slides[o.currPos + 1],
                e = o.slides[o.currPos - 1],
                e && e.type === t && o.loadSlide(e),
                n && n.type === t && o.loadSlide(n))
            },
            focus: function(t, o) {
                var i, a, s = this, r = ["a[href]", "area[href]", 'input:not([disabled]):not([type="hidden"]):not([aria-hidden])', "select:not([disabled]):not([aria-hidden])", "textarea:not([disabled]):not([aria-hidden])", "button:not([disabled]):not([aria-hidden])", "iframe", "object", "embed", "video", "audio", "[contenteditable]", '[tabindex]:not([tabindex^="-"])'].join(",");
                s.isClosing || (i = !t && s.current && s.current.isComplete ? s.current.$slide.find("*:visible" + (o ? ":not(.fancybox-close-small)" : "")) : s.$refs.container.find("*:visible"),
                i = i.filter(r).filter(function() {
                    return "hidden" !== n(this).css("visibility") && !n(this).hasClass("disabled")
                }),
                i.length ? (a = i.index(e.activeElement),
                t && t.shiftKey ? (a < 0 || 0 == a) && (t.preventDefault(),
                i.eq(i.length - 1).trigger("focus")) : (a < 0 || a == i.length - 1) && (t && t.preventDefault(),
                i.eq(0).trigger("focus"))) : s.$refs.container.trigger("focus"))
            },
            activate: function() {
                var t = this;
                n(".fancybox-container").each(function() {
                    var e = n(this).data("FancyBox");
                    e && e.id !== t.id && !e.isClosing && (e.trigger("onDeactivate"),
                    e.removeEvents(),
                    e.isVisible = !1)
                }),
                t.isVisible = !0,
                (t.current || t.isIdle) && (t.update(),
                t.updateControls()),
                t.trigger("onActivate"),
                t.addEvents()
            },
            close: function(t, e) {
                var o, i, a, s, r, c, l, u = this, f = u.current, h = function() {
                    u.cleanUp(t)
                };
                return !u.isClosing && (u.isClosing = !0,
                !1 === u.trigger("beforeClose", t) ? (u.isClosing = !1,
                d(function() {
                    u.update()
                }),
                !1) : (u.removeEvents(),
                a = f.$content,
                o = f.opts.animationEffect,
                i = n.isNumeric(e) ? e : o ? f.opts.animationDuration : 0,
                f.$slide.removeClass("fancybox-slide--complete fancybox-slide--next fancybox-slide--previous fancybox-animated"),
                !0 !== t ? n.fancybox.stop(f.$slide) : o = !1,
                f.$slide.siblings().trigger("onReset").remove(),
                i && u.$refs.container.removeClass("fancybox-is-open").addClass("fancybox-is-closing").css("transition-duration", i + "ms"),
                u.hideLoading(f),
                u.hideControls(!0),
                u.updateCursor(),
                "zoom" !== o || a && i && "image" === f.type && !u.isMoved() && !f.hasError && (l = u.getThumbPos(f)) || (o = "fade"),
                "zoom" === o ? (n.fancybox.stop(a),
                s = n.fancybox.getTranslate(a),
                c = {
                    top: s.top,
                    left: s.left,
                    scaleX: s.width / l.width,
                    scaleY: s.height / l.height,
                    width: l.width,
                    height: l.height
                },
                r = f.opts.zoomOpacity,
                "auto" == r && (r = Math.abs(f.width / f.height - l.width / l.height) > .1),
                r && (l.opacity = 0),
                n.fancybox.setTranslate(a, c),
                p(a),
                n.fancybox.animate(a, l, i, h),
                !0) : (o && i ? n.fancybox.animate(f.$slide.addClass("fancybox-slide--previous").removeClass("fancybox-slide--current"), "fancybox-animated fancybox-fx-" + o, i, h) : !0 === t ? setTimeout(h, i) : h(),
                !0)))
            },
            cleanUp: function(e) {
                var o, i, a, s = this, r = s.current.opts.$orig;
                s.current.$slide.trigger("onReset"),
                s.$refs.container.empty().remove(),
                s.trigger("afterClose", e),
                s.current.opts.backFocus && (r && r.length && r.is(":visible") || (r = s.$trigger),
                r && r.length && (i = t.scrollX,
                a = t.scrollY,
                r.trigger("focus"),
                n("html, body").scrollTop(a).scrollLeft(i))),
                s.current = null,
                o = n.fancybox.getInstance(),
                o ? o.activate() : (n("body").removeClass("fancybox-active compensate-for-scrollbar"),
                n("#fancybox-style-noscroll").remove())
            },
            trigger: function(t, e) {
                var o, i = Array.prototype.slice.call(arguments, 1), a = this, s = e && e.opts ? e : a.current;
                if (s ? i.unshift(s) : s = a,
                i.unshift(a),
                n.isFunction(s.opts[t]) && (o = s.opts[t].apply(s, i)),
                !1 === o)
                    return o;
                "afterClose" !== t && a.$refs ? a.$refs.container.trigger(t + ".fb", i) : r.trigger(t + ".fb", i)
            },
            updateControls: function() {
                var t = this
                  , o = t.current
                  , i = o.index
                  , a = t.$refs.container
                  , s = t.$refs.caption
                  , r = o.opts.caption;
                o.$slide.trigger("refresh"),
                r && r.length ? (t.$caption = s,
                s.children().eq(0).html(r)) : t.$caption = null,
                t.hasHiddenControls || t.isIdle || t.showControls(),
                a.find("[data-fancybox-count]").html(t.group.length),
                a.find("[data-fancybox-index]").html(i + 1),
                a.find("[data-fancybox-prev]").prop("disabled", !o.opts.loop && i <= 0),
                a.find("[data-fancybox-next]").prop("disabled", !o.opts.loop && i >= t.group.length - 1),
                "image" === o.type ? a.find("[data-fancybox-zoom]").show().end().find("[data-fancybox-download]").attr("href", o.opts.image.src || o.src).show() : o.opts.toolbar && a.find("[data-fancybox-download],[data-fancybox-zoom]").hide(),
                n(e.activeElement).is(":hidden,[disabled]") && t.$refs.container.trigger("focus")
            },
            hideControls: function(t) {
                var e = this
                  , n = ["infobar", "toolbar", "nav"];
                !t && e.current.opts.preventCaptionOverlap || n.push("caption"),
                this.$refs.container.removeClass(n.map(function(t) {
                    return "fancybox-show-" + t
                }).join(" ")),
                this.hasHiddenControls = !0
            },
            showControls: function() {
                var t = this
                  , e = t.current ? t.current.opts : t.opts
                  , n = t.$refs.container;
                t.hasHiddenControls = !1,
                t.idleSecondsCounter = 0,
                n.toggleClass("fancybox-show-toolbar", !(!e.toolbar || !e.buttons)).toggleClass("fancybox-show-infobar", !!(e.infobar && t.group.length > 1)).toggleClass("fancybox-show-caption", !!t.$caption).toggleClass("fancybox-show-nav", !!(e.arrows && t.group.length > 1)).toggleClass("fancybox-is-modal", !!e.modal)
            },
            toggleControls: function() {
                this.hasHiddenControls ? this.showControls() : this.hideControls()
            }
        }),
        n.fancybox = {
            version: "3.5.7",
            defaults: a,
            getInstance: function(t) {
                var e = n('.fancybox-container:not(".fancybox-is-closing"):last').data("FancyBox")
                  , o = Array.prototype.slice.call(arguments, 1);
                return e instanceof b && ("string" === n.type(t) ? e[t].apply(e, o) : "function" === n.type(t) && t.apply(e, o),
                e)
            },
            open: function(t, e, n) {
                return new b(t,e,n)
            },
            close: function(t) {
                var e = this.getInstance();
                e && (e.close(),
                !0 === t && this.close(t))
            },
            destroy: function() {
                this.close(!0),
                r.add("body").off("click.fb-start", "**")
            },
            isMobile: /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),
            use3d: function() {
                var n = e.createElement("div");
                return t.getComputedStyle && t.getComputedStyle(n) && t.getComputedStyle(n).getPropertyValue("transform") && !(e.documentMode && e.documentMode < 11)
            }(),
            getTranslate: function(t) {
                var e;
                return !(!t || !t.length) && (e = t[0].getBoundingClientRect(),
                {
                    top: e.top || 0,
                    left: e.left || 0,
                    width: e.width,
                    height: e.height,
                    opacity: parseFloat(t.css("opacity"))
                })
            },
            setTranslate: function(t, e) {
                var n = ""
                  , o = {};
                if (t && e)
                    return void 0 === e.left && void 0 === e.top || (n = (void 0 === e.left ? t.position().left : e.left) + "px, " + (void 0 === e.top ? t.position().top : e.top) + "px",
                    n = this.use3d ? "translate3d(" + n + ", 0px)" : "translate(" + n + ")"),
                    void 0 !== e.scaleX && void 0 !== e.scaleY ? n += " scale(" + e.scaleX + ", " + e.scaleY + ")" : void 0 !== e.scaleX && (n += " scaleX(" + e.scaleX + ")"),
                    n.length && (o.transform = n),
                    void 0 !== e.opacity && (o.opacity = e.opacity),
                    void 0 !== e.width && (o.width = e.width),
                    void 0 !== e.height && (o.height = e.height),
                    t.css(o)
            },
            animate: function(t, e, o, i, a) {
                var s, r = this;
                n.isFunction(o) && (i = o,
                o = null),
                r.stop(t),
                s = r.getTranslate(t),
                t.on(f, function(c) {
                    (!c || !c.originalEvent || t.is(c.originalEvent.target) && "z-index" != c.originalEvent.propertyName) && (r.stop(t),
                    n.isNumeric(o) && t.css("transition-duration", ""),
                    n.isPlainObject(e) ? void 0 !== e.scaleX && void 0 !== e.scaleY && r.setTranslate(t, {
                        top: e.top,
                        left: e.left,
                        width: s.width * e.scaleX,
                        height: s.height * e.scaleY,
                        scaleX: 1,
                        scaleY: 1
                    }) : !0 !== a && t.removeClass(e),
                    n.isFunction(i) && i(c))
                }),
                n.isNumeric(o) && t.css("transition-duration", o + "ms"),
                n.isPlainObject(e) ? (void 0 !== e.scaleX && void 0 !== e.scaleY && (delete e.width,
                delete e.height,
                t.parent().hasClass("fancybox-slide--image") && t.parent().addClass("fancybox-is-scaling")),
                n.fancybox.setTranslate(t, e)) : t.addClass(e),
                t.data("timer", setTimeout(function() {
                    t.trigger(f)
                }, o + 33))
            },
            stop: function(t, e) {
                t && t.length && (clearTimeout(t.data("timer")),
                e && t.trigger(f),
                t.off(f).css("transition-duration", ""),
                t.parent().removeClass("fancybox-is-scaling"))
            }
        },
        n.fn.fancybox = function(t) {
            var e;
            return t = t || {},
            e = t.selector || !1,
            e ? n("body").off("click.fb-start", e).on("click.fb-start", e, {
                options: t
            }, i) : this.off("click.fb-start").on("click.fb-start", {
                items: this,
                options: t
            }, i),
            this
        }
        ,
        r.on("click.fb-start", "[data-fancybox]", i),
        r.on("click.fb-start", "[data-fancybox-trigger]", function(t) {
            n('[data-fancybox="' + n(this).attr("data-fancybox-trigger") + '"]').eq(n(this).attr("data-fancybox-index") || 0).trigger("click.fb-start", {
                $trigger: n(this)
            })
        }),
        function() {
            var t = null;
            r.on("mousedown mouseup focus blur", ".fancybox-button", function(e) {
                switch (e.type) {
                case "mousedown":
                    t = n(this);
                    break;
                case "mouseup":
                    t = null;
                    break;
                case "focusin":
                    n(".fancybox-button").removeClass("fancybox-focus"),
                    n(this).is(t) || n(this).is("[disabled]") || n(this).addClass("fancybox-focus");
                    break;
                case "focusout":
                    n(".fancybox-button").removeClass("fancybox-focus")
                }
            })
        }()
    }
}(window, document, jQuery),
function(t) {
    "use strict";
    var e = {
        youtube: {
            matcher: /(youtube\.com|youtu\.be|youtube\-nocookie\.com)\/(watch\?(.*&)?v=|v\/|u\/|embed\/?)?(videoseries\?list=(.*)|[\w-]{11}|\?listType=(.*)&list=(.*))(.*)/i,
            params: {
                autoplay: 1,
                autohide: 1,
                fs: 1,
                rel: 0,
                hd: 1,
                wmode: "transparent",
                enablejsapi: 1,
                html5: 1
            },
            paramPlace: 8,
            type: "iframe",
            url: "https://www.youtube-nocookie.com/embed/$4",
            thumb: "https://img.youtube.com/vi/$4/hqdefault.jpg"
        },
        vimeo: {
            matcher: /^.+vimeo.com\/(.*\/)?([\d]+)(.*)?/,
            params: {
                autoplay: 1,
                hd: 1,
                show_title: 1,
                show_byline: 1,
                show_portrait: 0,
                fullscreen: 1
            },
            paramPlace: 3,
            type: "iframe",
            url: "//player.vimeo.com/video/$2"
        },
        instagram: {
            matcher: /(instagr\.am|instagram\.com)\/p\/([a-zA-Z0-9_\-]+)\/?/i,
            type: "image",
            url: "//$1/p/$2/media/?size=l"
        },
        gmap_place: {
            matcher: /(maps\.)?google\.([a-z]{2,3}(\.[a-z]{2})?)\/(((maps\/(place\/(.*)\/)?\@(.*),(\d+.?\d+?)z))|(\?ll=))(.*)?/i,
            type: "iframe",
            url: function(t) {
                return "//maps.google." + t[2] + "/?ll=" + (t[9] ? t[9] + "&z=" + Math.floor(t[10]) + (t[12] ? t[12].replace(/^\//, "&") : "") : t[12] + "").replace(/\?/, "&") + "&output=" + (t[12] && t[12].indexOf("layer=c") > 0 ? "svembed" : "embed")
            }
        },
        gmap_search: {
            matcher: /(maps\.)?google\.([a-z]{2,3}(\.[a-z]{2})?)\/(maps\/search\/)(.*)/i,
            type: "iframe",
            url: function(t) {
                return "//maps.google." + t[2] + "/maps?q=" + t[5].replace("query=", "q=").replace("api=1", "") + "&output=embed"
            }
        }
    }
      , n = function(e, n, o) {
        if (e)
            return o = o || "",
            "object" === t.type(o) && (o = t.param(o, !0)),
            t.each(n, function(t, n) {
                e = e.replace("$" + t, n || "")
            }),
            o.length && (e += (e.indexOf("?") > 0 ? "&" : "?") + o),
            e
    };
    t(document).on("objectNeedsType.fb", function(o, i, a) {
        var s, r, c, l, d, u, f, p = a.src || "", h = !1;
        s = t.extend(!0, {}, e, a.opts.media),
        t.each(s, function(e, o) {
            if (c = p.match(o.matcher)) {
                if (h = o.type,
                f = e,
                u = {},
                o.paramPlace && c[o.paramPlace]) {
                    d = c[o.paramPlace],
                    "?" == d[0] && (d = d.substring(1)),
                    d = d.split("&");
                    for (var i = 0; i < d.length; ++i) {
                        var s = d[i].split("=", 2);
                        2 == s.length && (u[s[0]] = decodeURIComponent(s[1].replace(/\+/g, " ")))
                    }
                }
                return l = t.extend(!0, {}, o.params, a.opts[e], u),
                p = "function" === t.type(o.url) ? o.url.call(this, c, l, a) : n(o.url, c, l),
                r = "function" === t.type(o.thumb) ? o.thumb.call(this, c, l, a) : n(o.thumb, c),
                "youtube" === e ? p = p.replace(/&t=((\d+)m)?(\d+)s/, function(t, e, n, o) {
                    return "&start=" + ((n ? 60 * parseInt(n, 10) : 0) + parseInt(o, 10))
                }) : "vimeo" === e && (p = p.replace("&%23", "#")),
                !1
            }
        }),
        h ? (a.opts.thumb || a.opts.$thumb && a.opts.$thumb.length || (a.opts.thumb = r),
        "iframe" === h && (a.opts = t.extend(!0, a.opts, {
            iframe: {
                preload: !1,
                attr: {
                    scrolling: "no"
                }
            }
        })),
        t.extend(a, {
            type: h,
            src: p,
            origSrc: a.src,
            contentSource: f,
            contentType: "image" === h ? "image" : "gmap_place" == f || "gmap_search" == f ? "map" : "video"
        })) : p && (a.type = a.opts.defaultType)
    });
    var o = {
        youtube: {
            src: "https://www.youtube.com/iframe_api",
            class: "YT",
            loading: !1,
            loaded: !1
        },
        vimeo: {
            src: "https://player.vimeo.com/api/player.js",
            class: "Vimeo",
            loading: !1,
            loaded: !1
        },
        load: function(t) {
            var e, n = this;
            if (this[t].loaded)
                return void setTimeout(function() {
                    n.done(t)
                });
            this[t].loading || (this[t].loading = !0,
            e = document.createElement("script"),
            e.type = "text/javascript",
            e.src = this[t].src,
            "youtube" === t ? window.onYouTubeIframeAPIReady = function() {
                n[t].loaded = !0,
                n.done(t)
            }
            : e.onload = function() {
                n[t].loaded = !0,
                n.done(t)
            }
            ,
            document.body.appendChild(e))
        },
        done: function(e) {
            var n, o, i;
            "youtube" === e && delete window.onYouTubeIframeAPIReady,
            (n = t.fancybox.getInstance()) && (o = n.current.$content.find("iframe"),
            "youtube" === e && void 0 !== YT && YT ? i = new YT.Player(o.attr("id"),{
                events: {
                    onStateChange: function(t) {
                        0 == t.data && n.next()
                    }
                }
            }) : "vimeo" === e && void 0 !== Vimeo && Vimeo && (i = new Vimeo.Player(o),
            i.on("ended", function() {
                n.next()
            })))
        }
    };
    t(document).on({
        "afterShow.fb": function(t, e, n) {
            e.group.length > 1 && ("youtube" === n.contentSource || "vimeo" === n.contentSource) && o.load(n.contentSource)
        }
    })
}(jQuery),
function(t, e, n) {
    "use strict";
    var o = function() {
        return t.requestAnimationFrame || t.webkitRequestAnimationFrame || t.mozRequestAnimationFrame || t.oRequestAnimationFrame || function(e) {
            return t.setTimeout(e, 1e3 / 60)
        }
    }()
      , i = function() {
        return t.cancelAnimationFrame || t.webkitCancelAnimationFrame || t.mozCancelAnimationFrame || t.oCancelAnimationFrame || function(e) {
            t.clearTimeout(e)
        }
    }()
      , a = function(e) {
        var n = [];
        e = e.originalEvent || e || t.e,
        e = e.touches && e.touches.length ? e.touches : e.changedTouches && e.changedTouches.length ? e.changedTouches : [e];
        for (var o in e)
            e[o].pageX ? n.push({
                x: e[o].pageX,
                y: e[o].pageY
            }) : e[o].clientX && n.push({
                x: e[o].clientX,
                y: e[o].clientY
            });
        return n
    }
      , s = function(t, e, n) {
        return e && t ? "x" === n ? t.x - e.x : "y" === n ? t.y - e.y : Math.sqrt(Math.pow(t.x - e.x, 2) + Math.pow(t.y - e.y, 2)) : 0
    }
      , r = function(t) {
        if (t.is('a,area,button,[role="button"],input,label,select,summary,textarea,video,audio,iframe') || n.isFunction(t.get(0).onclick) || t.data("selectable"))
            return !0;
        for (var e = 0, o = t[0].attributes, i = o.length; e < i; e++)
            if ("data-fancybox-" === o[e].nodeName.substr(0, 14))
                return !0;
        return !1
    }
      , c = function(e) {
        var n = t.getComputedStyle(e)["overflow-y"]
          , o = t.getComputedStyle(e)["overflow-x"]
          , i = ("scroll" === n || "auto" === n) && e.scrollHeight > e.clientHeight
          , a = ("scroll" === o || "auto" === o) && e.scrollWidth > e.clientWidth;
        return i || a
    }
      , l = function(t) {
        for (var e = !1; ; ) {
            if (e = c(t.get(0)))
                break;
            if (t = t.parent(),
            !t.length || t.hasClass("fancybox-stage") || t.is("body"))
                break
        }
        return e
    }
      , d = function(t) {
        var e = this;
        e.instance = t,
        e.$bg = t.$refs.bg,
        e.$stage = t.$refs.stage,
        e.$container = t.$refs.container,
        e.destroy(),
        e.$container.on("touchstart.fb.touch mousedown.fb.touch", n.proxy(e, "ontouchstart"))
    };
    d.prototype.destroy = function() {
        var t = this;
        t.$container.off(".fb.touch"),
        n(e).off(".fb.touch"),
        t.requestId && (i(t.requestId),
        t.requestId = null),
        t.tapped && (clearTimeout(t.tapped),
        t.tapped = null)
    }
    ,
    d.prototype.ontouchstart = function(o) {
        var i = this
          , c = n(o.target)
          , d = i.instance
          , u = d.current
          , f = u.$slide
          , p = u.$content
          , h = "touchstart" == o.type;
        if (h && i.$container.off("mousedown.fb.touch"),
        (!o.originalEvent || 2 != o.originalEvent.button) && f.length && c.length && !r(c) && !r(c.parent()) && (c.is("img") || !(o.originalEvent.clientX > c[0].clientWidth + c.offset().left))) {
            if (!u || d.isAnimating || u.$slide.hasClass("fancybox-animated"))
                return o.stopPropagation(),
                void o.preventDefault();
            i.realPoints = i.startPoints = a(o),
            i.startPoints.length && (u.touch && o.stopPropagation(),
            i.startEvent = o,
            i.canTap = !0,
            i.$target = c,
            i.$content = p,
            i.opts = u.opts.touch,
            i.isPanning = !1,
            i.isSwiping = !1,
            i.isZooming = !1,
            i.isScrolling = !1,
            i.canPan = d.canPan(),
            i.startTime = (new Date).getTime(),
            i.distanceX = i.distanceY = i.distance = 0,
            i.canvasWidth = Math.round(f[0].clientWidth),
            i.canvasHeight = Math.round(f[0].clientHeight),
            i.contentLastPos = null,
            i.contentStartPos = n.fancybox.getTranslate(i.$content) || {
                top: 0,
                left: 0
            },
            i.sliderStartPos = n.fancybox.getTranslate(f),
            i.stagePos = n.fancybox.getTranslate(d.$refs.stage),
            i.sliderStartPos.top -= i.stagePos.top,
            i.sliderStartPos.left -= i.stagePos.left,
            i.contentStartPos.top -= i.stagePos.top,
            i.contentStartPos.left -= i.stagePos.left,
            n(e).off(".fb.touch").on(h ? "touchend.fb.touch touchcancel.fb.touch" : "mouseup.fb.touch mouseleave.fb.touch", n.proxy(i, "ontouchend")).on(h ? "touchmove.fb.touch" : "mousemove.fb.touch", n.proxy(i, "ontouchmove")),
            n.fancybox.isMobile && e.addEventListener("scroll", i.onscroll, !0),
            ((i.opts || i.canPan) && (c.is(i.$stage) || i.$stage.find(c).length) || (c.is(".fancybox-image") && o.preventDefault(),
            n.fancybox.isMobile && c.parents(".fancybox-caption").length)) && (i.isScrollable = l(c) || l(c.parent()),
            n.fancybox.isMobile && i.isScrollable || o.preventDefault(),
            (1 === i.startPoints.length || u.hasError) && (i.canPan ? (n.fancybox.stop(i.$content),
            i.isPanning = !0) : i.isSwiping = !0,
            i.$container.addClass("fancybox-is-grabbing")),
            2 === i.startPoints.length && "image" === u.type && (u.isLoaded || u.$ghost) && (i.canTap = !1,
            i.isSwiping = !1,
            i.isPanning = !1,
            i.isZooming = !0,
            n.fancybox.stop(i.$content),
            i.centerPointStartX = .5 * (i.startPoints[0].x + i.startPoints[1].x) - n(t).scrollLeft(),
            i.centerPointStartY = .5 * (i.startPoints[0].y + i.startPoints[1].y) - n(t).scrollTop(),
            i.percentageOfImageAtPinchPointX = (i.centerPointStartX - i.contentStartPos.left) / i.contentStartPos.width,
            i.percentageOfImageAtPinchPointY = (i.centerPointStartY - i.contentStartPos.top) / i.contentStartPos.height,
            i.startDistanceBetweenFingers = s(i.startPoints[0], i.startPoints[1]))))
        }
    }
    ,
    d.prototype.onscroll = function(t) {
        var n = this;
        n.isScrolling = !0,
        e.removeEventListener("scroll", n.onscroll, !0)
    }
    ,
    d.prototype.ontouchmove = function(t) {
        var e = this;
        return void 0 !== t.originalEvent.buttons && 0 === t.originalEvent.buttons ? void e.ontouchend(t) : e.isScrolling ? void (e.canTap = !1) : (e.newPoints = a(t),
        void ((e.opts || e.canPan) && e.newPoints.length && e.newPoints.length && (e.isSwiping && !0 === e.isSwiping || t.preventDefault(),
        e.distanceX = s(e.newPoints[0], e.startPoints[0], "x"),
        e.distanceY = s(e.newPoints[0], e.startPoints[0], "y"),
        e.distance = s(e.newPoints[0], e.startPoints[0]),
        e.distance > 0 && (e.isSwiping ? e.onSwipe(t) : e.isPanning ? e.onPan() : e.isZooming && e.onZoom()))))
    }
    ,
    d.prototype.onSwipe = function(e) {
        var a, s = this, r = s.instance, c = s.isSwiping, l = s.sliderStartPos.left || 0;
        if (!0 !== c)
            "x" == c && (s.distanceX > 0 && (s.instance.group.length < 2 || 0 === s.instance.current.index && !s.instance.current.opts.loop) ? l += Math.pow(s.distanceX, .8) : s.distanceX < 0 && (s.instance.group.length < 2 || s.instance.current.index === s.instance.group.length - 1 && !s.instance.current.opts.loop) ? l -= Math.pow(-s.distanceX, .8) : l += s.distanceX),
            s.sliderLastPos = {
                top: "x" == c ? 0 : s.sliderStartPos.top + s.distanceY,
                left: l
            },
            s.requestId && (i(s.requestId),
            s.requestId = null),
            s.requestId = o(function() {
                s.sliderLastPos && (n.each(s.instance.slides, function(t, e) {
                    var o = e.pos - s.instance.currPos;
                    n.fancybox.setTranslate(e.$slide, {
                        top: s.sliderLastPos.top,
                        left: s.sliderLastPos.left + o * s.canvasWidth + o * e.opts.gutter
                    })
                }),
                s.$container.addClass("fancybox-is-sliding"))
            });
        else if (Math.abs(s.distance) > 10) {
            if (s.canTap = !1,
            r.group.length < 2 && s.opts.vertical ? s.isSwiping = "y" : r.isDragging || !1 === s.opts.vertical || "auto" === s.opts.vertical && n(t).width() > 800 ? s.isSwiping = "x" : (a = Math.abs(180 * Math.atan2(s.distanceY, s.distanceX) / Math.PI),
            s.isSwiping = a > 45 && a < 135 ? "y" : "x"),
            "y" === s.isSwiping && n.fancybox.isMobile && s.isScrollable)
                return void (s.isScrolling = !0);
            r.isDragging = s.isSwiping,
            s.startPoints = s.newPoints,
            n.each(r.slides, function(t, e) {
                var o, i;
                n.fancybox.stop(e.$slide),
                o = n.fancybox.getTranslate(e.$slide),
                i = n.fancybox.getTranslate(r.$refs.stage),
                e.$slide.css({
                    transform: "",
                    opacity: "",
                    "transition-duration": ""
                }).removeClass("fancybox-animated").removeClass(function(t, e) {
                    return (e.match(/(^|\s)fancybox-fx-\S+/g) || []).join(" ")
                }),
                e.pos === r.current.pos && (s.sliderStartPos.top = o.top - i.top,
                s.sliderStartPos.left = o.left - i.left),
                n.fancybox.setTranslate(e.$slide, {
                    top: o.top - i.top,
                    left: o.left - i.left
                })
            }),
            r.SlideShow && r.SlideShow.isActive && r.SlideShow.stop()
        }
    }
    ,
    d.prototype.onPan = function() {
        var t = this;
        if (s(t.newPoints[0], t.realPoints[0]) < (n.fancybox.isMobile ? 10 : 5))
            return void (t.startPoints = t.newPoints);
        t.canTap = !1,
        t.contentLastPos = t.limitMovement(),
        t.requestId && i(t.requestId),
        t.requestId = o(function() {
            n.fancybox.setTranslate(t.$content, t.contentLastPos)
        })
    }
    ,
    d.prototype.limitMovement = function() {
        var t, e, n, o, i, a, s = this, r = s.canvasWidth, c = s.canvasHeight, l = s.distanceX, d = s.distanceY, u = s.contentStartPos, f = u.left, p = u.top, h = u.width, g = u.height;
        return i = h > r ? f + l : f,
        a = p + d,
        t = Math.max(0, .5 * r - .5 * h),
        e = Math.max(0, .5 * c - .5 * g),
        n = Math.min(r - h, .5 * r - .5 * h),
        o = Math.min(c - g, .5 * c - .5 * g),
        l > 0 && i > t && (i = t - 1 + Math.pow(-t + f + l, .8) || 0),
        l < 0 && i < n && (i = n + 1 - Math.pow(n - f - l, .8) || 0),
        d > 0 && a > e && (a = e - 1 + Math.pow(-e + p + d, .8) || 0),
        d < 0 && a < o && (a = o + 1 - Math.pow(o - p - d, .8) || 0),
        {
            top: a,
            left: i
        }
    }
    ,
    d.prototype.limitPosition = function(t, e, n, o) {
        var i = this
          , a = i.canvasWidth
          , s = i.canvasHeight;
        return n > a ? (t = t > 0 ? 0 : t,
        t = t < a - n ? a - n : t) : t = Math.max(0, a / 2 - n / 2),
        o > s ? (e = e > 0 ? 0 : e,
        e = e < s - o ? s - o : e) : e = Math.max(0, s / 2 - o / 2),
        {
            top: e,
            left: t
        }
    }
    ,
    d.prototype.onZoom = function() {
        var e = this
          , a = e.contentStartPos
          , r = a.width
          , c = a.height
          , l = a.left
          , d = a.top
          , u = s(e.newPoints[0], e.newPoints[1])
          , f = u / e.startDistanceBetweenFingers
          , p = Math.floor(r * f)
          , h = Math.floor(c * f)
          , g = (r - p) * e.percentageOfImageAtPinchPointX
          , b = (c - h) * e.percentageOfImageAtPinchPointY
          , m = (e.newPoints[0].x + e.newPoints[1].x) / 2 - n(t).scrollLeft()
          , v = (e.newPoints[0].y + e.newPoints[1].y) / 2 - n(t).scrollTop()
          , y = m - e.centerPointStartX
          , x = v - e.centerPointStartY
          , w = l + (g + y)
          , $ = d + (b + x)
          , S = {
            top: $,
            left: w,
            scaleX: f,
            scaleY: f
        };
        e.canTap = !1,
        e.newWidth = p,
        e.newHeight = h,
        e.contentLastPos = S,
        e.requestId && i(e.requestId),
        e.requestId = o(function() {
            n.fancybox.setTranslate(e.$content, e.contentLastPos)
        })
    }
    ,
    d.prototype.ontouchend = function(t) {
        var o = this
          , s = o.isSwiping
          , r = o.isPanning
          , c = o.isZooming
          , l = o.isScrolling;
        if (o.endPoints = a(t),
        o.dMs = Math.max((new Date).getTime() - o.startTime, 1),
        o.$container.removeClass("fancybox-is-grabbing"),
        n(e).off(".fb.touch"),
        e.removeEventListener("scroll", o.onscroll, !0),
        o.requestId && (i(o.requestId),
        o.requestId = null),
        o.isSwiping = !1,
        o.isPanning = !1,
        o.isZooming = !1,
        o.isScrolling = !1,
        o.instance.isDragging = !1,
        o.canTap)
            return o.onTap(t);
        o.speed = 100,
        o.velocityX = o.distanceX / o.dMs * .5,
        o.velocityY = o.distanceY / o.dMs * .5,
        r ? o.endPanning() : c ? o.endZooming() : o.endSwiping(s, l)
    }
    ,
    d.prototype.endSwiping = function(t, e) {
        var o = this
          , i = !1
          , a = o.instance.group.length
          , s = Math.abs(o.distanceX)
          , r = "x" == t && a > 1 && (o.dMs > 130 && s > 10 || s > 50);
        o.sliderLastPos = null,
        "y" == t && !e && Math.abs(o.distanceY) > 50 ? (n.fancybox.animate(o.instance.current.$slide, {
            top: o.sliderStartPos.top + o.distanceY + 150 * o.velocityY,
            opacity: 0
        }, 200),
        i = o.instance.close(!0, 250)) : r && o.distanceX > 0 ? i = o.instance.previous(300) : r && o.distanceX < 0 && (i = o.instance.next(300)),
        !1 !== i || "x" != t && "y" != t || o.instance.centerSlide(200),
        o.$container.removeClass("fancybox-is-sliding")
    }
    ,
    d.prototype.endPanning = function() {
        var t, e, o, i = this;
        i.contentLastPos && (!1 === i.opts.momentum || i.dMs > 350 ? (t = i.contentLastPos.left,
        e = i.contentLastPos.top) : (t = i.contentLastPos.left + 500 * i.velocityX,
        e = i.contentLastPos.top + 500 * i.velocityY),
        o = i.limitPosition(t, e, i.contentStartPos.width, i.contentStartPos.height),
        o.width = i.contentStartPos.width,
        o.height = i.contentStartPos.height,
        n.fancybox.animate(i.$content, o, 366))
    }
    ,
    d.prototype.endZooming = function() {
        var t, e, o, i, a = this, s = a.instance.current, r = a.newWidth, c = a.newHeight;
        a.contentLastPos && (t = a.contentLastPos.left,
        e = a.contentLastPos.top,
        i = {
            top: e,
            left: t,
            width: r,
            height: c,
            scaleX: 1,
            scaleY: 1
        },
        n.fancybox.setTranslate(a.$content, i),
        r < a.canvasWidth && c < a.canvasHeight ? a.instance.scaleToFit(150) : r > s.width || c > s.height ? a.instance.scaleToActual(a.centerPointStartX, a.centerPointStartY, 150) : (o = a.limitPosition(t, e, r, c),
        n.fancybox.animate(a.$content, o, 150)))
    }
    ,
    d.prototype.onTap = function(e) {
        var o, i = this, s = n(e.target), r = i.instance, c = r.current, l = e && a(e) || i.startPoints, d = l[0] ? l[0].x - n(t).scrollLeft() - i.stagePos.left : 0, u = l[0] ? l[0].y - n(t).scrollTop() - i.stagePos.top : 0, f = function(t) {
            var o = c.opts[t];
            if (n.isFunction(o) && (o = o.apply(r, [c, e])),
            o)
                switch (o) {
                case "close":
                    r.close(i.startEvent);
                    break;
                case "toggleControls":
                    r.toggleControls();
                    break;
                case "next":
                    r.next();
                    break;
                case "nextOrClose":
                    r.group.length > 1 ? r.next() : r.close(i.startEvent);
                    break;
                case "zoom":
                    "image" == c.type && (c.isLoaded || c.$ghost) && (r.canPan() ? r.scaleToFit() : r.isScaledDown() ? r.scaleToActual(d, u) : r.group.length < 2 && r.close(i.startEvent))
                }
        };
        if ((!e.originalEvent || 2 != e.originalEvent.button) && (s.is("img") || !(d > s[0].clientWidth + s.offset().left))) {
            if (s.is(".fancybox-bg,.fancybox-inner,.fancybox-outer,.fancybox-container"))
                o = "Outside";
            else if (s.is(".fancybox-slide"))
                o = "Slide";
            else {
                if (!r.current.$content || !r.current.$content.find(s).addBack().filter(s).length)
                    return;
                o = "Content"
            }
            if (i.tapped) {
                if (clearTimeout(i.tapped),
                i.tapped = null,
                Math.abs(d - i.tapX) > 50 || Math.abs(u - i.tapY) > 50)
                    return this;
                f("dblclick" + o)
            } else
                i.tapX = d,
                i.tapY = u,
                c.opts["dblclick" + o] && c.opts["dblclick" + o] !== c.opts["click" + o] ? i.tapped = setTimeout(function() {
                    i.tapped = null,
                    r.isAnimating || f("click" + o)
                }, 500) : f("click" + o);
            return this
        }
    }
    ,
    n(e).on("onActivate.fb", function(t, e) {
        e && !e.Guestures && (e.Guestures = new d(e))
    }).on("beforeClose.fb", function(t, e) {
        e && e.Guestures && e.Guestures.destroy()
    })
}(window, document, jQuery),
function(t, e) {
    "use strict";
    e.extend(!0, e.fancybox.defaults, {
        btnTpl: {
            slideShow: '<button data-fancybox-play class="fancybox-button fancybox-button--play" title="{{PLAY_START}}"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M6.5 5.4v13.2l11-6.6z"/></svg><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M8.33 5.75h2.2v12.5h-2.2V5.75zm5.15 0h2.2v12.5h-2.2V5.75z"/></svg></button>'
        },
        slideShow: {
            autoStart: !1,
            speed: 3e3,
            progress: !0
        }
    });
    var n = function(t) {
        this.instance = t,
        this.init()
    };
    e.extend(n.prototype, {
        timer: null,
        isActive: !1,
        $button: null,
        init: function() {
            var t = this
              , n = t.instance
              , o = n.group[n.currIndex].opts.slideShow;
            t.$button = n.$refs.toolbar.find("[data-fancybox-play]").on("click", function() {
                t.toggle()
            }),
            n.group.length < 2 || !o ? t.$button.hide() : o.progress && (t.$progress = e('<div class="fancybox-progress"></div>').appendTo(n.$refs.inner))
        },
        set: function(t) {
            var n = this
              , o = n.instance
              , i = o.current;
            i && (!0 === t || i.opts.loop || o.currIndex < o.group.length - 1) ? n.isActive && "video" !== i.contentType && (n.$progress && e.fancybox.animate(n.$progress.show(), {
                scaleX: 1
            }, i.opts.slideShow.speed),
            n.timer = setTimeout(function() {
                o.current.opts.loop || o.current.index != o.group.length - 1 ? o.next() : o.jumpTo(0)
            }, i.opts.slideShow.speed)) : (n.stop(),
            o.idleSecondsCounter = 0,
            o.showControls())
        },
        clear: function() {
            var t = this;
            clearTimeout(t.timer),
            t.timer = null,
            t.$progress && t.$progress.removeAttr("style").hide()
        },
        start: function() {
            var t = this
              , e = t.instance.current;
            e && (t.$button.attr("title", (e.opts.i18n[e.opts.lang] || e.opts.i18n.en).PLAY_STOP).removeClass("fancybox-button--play").addClass("fancybox-button--pause"),
            t.isActive = !0,
            e.isComplete && t.set(!0),
            t.instance.trigger("onSlideShowChange", !0))
        },
        stop: function() {
            var t = this
              , e = t.instance.current;
            t.clear(),
            t.$button.attr("title", (e.opts.i18n[e.opts.lang] || e.opts.i18n.en).PLAY_START).removeClass("fancybox-button--pause").addClass("fancybox-button--play"),
            t.isActive = !1,
            t.instance.trigger("onSlideShowChange", !1),
            t.$progress && t.$progress.removeAttr("style").hide()
        },
        toggle: function() {
            var t = this;
            t.isActive ? t.stop() : t.start()
        }
    }),
    e(t).on({
        "onInit.fb": function(t, e) {
            e && !e.SlideShow && (e.SlideShow = new n(e))
        },
        "beforeShow.fb": function(t, e, n, o) {
            var i = e && e.SlideShow;
            o ? i && n.opts.slideShow.autoStart && i.start() : i && i.isActive && i.clear()
        },
        "afterShow.fb": function(t, e, n) {
            var o = e && e.SlideShow;
            o && o.isActive && o.set()
        },
        "afterKeydown.fb": function(n, o, i, a, s) {
            var r = o && o.SlideShow;
            !r || !i.opts.slideShow || 80 !== s && 32 !== s || e(t.activeElement).is("button,a,input") || (a.preventDefault(),
            r.toggle())
        },
        "beforeClose.fb onDeactivate.fb": function(t, e) {
            var n = e && e.SlideShow;
            n && n.stop()
        }
    }),
    e(t).on("visibilitychange", function() {
        var n = e.fancybox.getInstance()
          , o = n && n.SlideShow;
        o && o.isActive && (t.hidden ? o.clear() : o.set())
    })
}(document, jQuery),
function(t, e) {
    "use strict";
    var n = function() {
        for (var e = [["requestFullscreen", "exitFullscreen", "fullscreenElement", "fullscreenEnabled", "fullscreenchange", "fullscreenerror"], ["webkitRequestFullscreen", "webkitExitFullscreen", "webkitFullscreenElement", "webkitFullscreenEnabled", "webkitfullscreenchange", "webkitfullscreenerror"], ["webkitRequestFullScreen", "webkitCancelFullScreen", "webkitCurrentFullScreenElement", "webkitCancelFullScreen", "webkitfullscreenchange", "webkitfullscreenerror"], ["mozRequestFullScreen", "mozCancelFullScreen", "mozFullScreenElement", "mozFullScreenEnabled", "mozfullscreenchange", "mozfullscreenerror"], ["msRequestFullscreen", "msExitFullscreen", "msFullscreenElement", "msFullscreenEnabled", "MSFullscreenChange", "MSFullscreenError"]], n = {}, o = 0; o < e.length; o++) {
            var i = e[o];
            if (i && i[1]in t) {
                for (var a = 0; a < i.length; a++)
                    n[e[0][a]] = i[a];
                return n
            }
        }
        return !1
    }();
    if (n) {
        var o = {
            request: function(e) {
                e = e || t.documentElement,
                e[n.requestFullscreen](e.ALLOW_KEYBOARD_INPUT)
            },
            exit: function() {
                t[n.exitFullscreen]()
            },
            toggle: function(e) {
                e = e || t.documentElement,
                this.isFullscreen() ? this.exit() : this.request(e)
            },
            isFullscreen: function() {
                return Boolean(t[n.fullscreenElement])
            },
            enabled: function() {
                return Boolean(t[n.fullscreenEnabled])
            }
        };
        e.extend(!0, e.fancybox.defaults, {
            btnTpl: {
                fullScreen: '<button data-fancybox-fullscreen class="fancybox-button fancybox-button--fsenter" title="{{FULL_SCREEN}}"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z"/></svg><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M5 16h3v3h2v-5H5zm3-8H5v2h5V5H8zm6 11h2v-3h3v-2h-5zm2-11V5h-2v5h5V8z"/></svg></button>'
            },
            fullScreen: {
                autoStart: !1
            }
        }),
        e(t).on(n.fullscreenchange, function() {
            var t = o.isFullscreen()
              , n = e.fancybox.getInstance();
            n && (n.current && "image" === n.current.type && n.isAnimating && (n.isAnimating = !1,
            n.update(!0, !0, 0),
            n.isComplete || n.complete()),
            n.trigger("onFullscreenChange", t),
            n.$refs.container.toggleClass("fancybox-is-fullscreen", t),
            n.$refs.toolbar.find("[data-fancybox-fullscreen]").toggleClass("fancybox-button--fsenter", !t).toggleClass("fancybox-button--fsexit", t))
        })
    }
    e(t).on({
        "onInit.fb": function(t, e) {
            var i;
            if (!n)
                return void e.$refs.toolbar.find("[data-fancybox-fullscreen]").remove();
            e && e.group[e.currIndex].opts.fullScreen ? (i = e.$refs.container,
            i.on("click.fb-fullscreen", "[data-fancybox-fullscreen]", function(t) {
                t.stopPropagation(),
                t.preventDefault(),
                o.toggle()
            }),
            e.opts.fullScreen && !0 === e.opts.fullScreen.autoStart && o.request(),
            e.FullScreen = o) : e && e.$refs.toolbar.find("[data-fancybox-fullscreen]").hide()
        },
        "afterKeydown.fb": function(t, e, n, o, i) {
            e && e.FullScreen && 70 === i && (o.preventDefault(),
            e.FullScreen.toggle())
        },
        "beforeClose.fb": function(t, e) {
            e && e.FullScreen && e.$refs.container.hasClass("fancybox-is-fullscreen") && o.exit()
        }
    })
}(document, jQuery),
function(t, e) {
    "use strict";
    var n = "fancybox-thumbs";
    e.fancybox.defaults = e.extend(!0, {
        btnTpl: {
            thumbs: '<button data-fancybox-thumbs class="fancybox-button fancybox-button--thumbs" title="{{THUMBS}}"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M14.59 14.59h3.76v3.76h-3.76v-3.76zm-4.47 0h3.76v3.76h-3.76v-3.76zm-4.47 0h3.76v3.76H5.65v-3.76zm8.94-4.47h3.76v3.76h-3.76v-3.76zm-4.47 0h3.76v3.76h-3.76v-3.76zm-4.47 0h3.76v3.76H5.65v-3.76zm8.94-4.47h3.76v3.76h-3.76V5.65zm-4.47 0h3.76v3.76h-3.76V5.65zm-4.47 0h3.76v3.76H5.65V5.65z"/></svg></button>'
        },
        thumbs: {
            autoStart: !1,
            hideOnClose: !0,
            parentEl: ".fancybox-container",
            axis: "y"
        }
    }, e.fancybox.defaults);
    var o = function(t) {
        this.init(t)
    };
    e.extend(o.prototype, {
        $button: null,
        $grid: null,
        $list: null,
        isVisible: !1,
        isActive: !1,
        init: function(t) {
            var e = this
              , n = t.group
              , o = 0;
            e.instance = t,
            e.opts = n[t.currIndex].opts.thumbs,
            t.Thumbs = e,
            e.$button = t.$refs.toolbar.find("[data-fancybox-thumbs]");
            for (var i = 0, a = n.length; i < a && (n[i].thumb && o++,
            !(o > 1)); i++)
                ;
            o > 1 && e.opts ? (e.$button.removeAttr("style").on("click", function() {
                e.toggle()
            }),
            e.isActive = !0) : e.$button.hide()
        },
        create: function() {
            var t, o = this, i = o.instance, a = o.opts.parentEl, s = [];
            o.$grid || (o.$grid = e('<div class="' + n + " " + n + "-" + o.opts.axis + '"></div>').appendTo(i.$refs.container.find(a).addBack().filter(a)),
            o.$grid.on("click", "a", function() {
                i.jumpTo(e(this).attr("data-index"))
            })),
            o.$list || (o.$list = e('<div class="' + n + '__list">').appendTo(o.$grid)),
            e.each(i.group, function(e, n) {
                t = n.thumb,
                t || "image" !== n.type || (t = n.src),
                s.push('<a href="javascript:;" tabindex="0" data-index="' + e + '"' + (t && t.length ? ' style="background-image:url(' + t + ')"' : 'class="fancybox-thumbs-missing"') + "></a>")
            }),
            o.$list[0].innerHTML = s.join(""),
            "x" === o.opts.axis && o.$list.width(parseInt(o.$grid.css("padding-right"), 10) + i.group.length * o.$list.children().eq(0).outerWidth(!0))
        },
        focus: function(t) {
            var e, n, o = this, i = o.$list, a = o.$grid;
            o.instance.current && (e = i.children().removeClass("fancybox-thumbs-active").filter('[data-index="' + o.instance.current.index + '"]').addClass("fancybox-thumbs-active"),
            n = e.position(),
            "y" === o.opts.axis && (n.top < 0 || n.top > i.height() - e.outerHeight()) ? i.stop().animate({
                scrollTop: i.scrollTop() + n.top
            }, t) : "x" === o.opts.axis && (n.left < a.scrollLeft() || n.left > a.scrollLeft() + (a.width() - e.outerWidth())) && i.parent().stop().animate({
                scrollLeft: n.left
            }, t))
        },
        update: function() {
            var t = this;
            t.instance.$refs.container.toggleClass("fancybox-show-thumbs", this.isVisible),
            t.isVisible ? (t.$grid || t.create(),
            t.instance.trigger("onThumbsShow"),
            t.focus(0)) : t.$grid && t.instance.trigger("onThumbsHide"),
            t.instance.update()
        },
        hide: function() {
            this.isVisible = !1,
            this.update()
        },
        show: function() {
            this.isVisible = !0,
            this.update()
        },
        toggle: function() {
            this.isVisible = !this.isVisible,
            this.update()
        }
    }),
    e(t).on({
        "onInit.fb": function(t, e) {
            var n;
            e && !e.Thumbs && (n = new o(e),
            n.isActive && !0 === n.opts.autoStart && n.show())
        },
        "beforeShow.fb": function(t, e, n, o) {
            var i = e && e.Thumbs;
            i && i.isVisible && i.focus(o ? 0 : 250)
        },
        "afterKeydown.fb": function(t, e, n, o, i) {
            var a = e && e.Thumbs;
            a && a.isActive && 71 === i && (o.preventDefault(),
            a.toggle())
        },
        "beforeClose.fb": function(t, e) {
            var n = e && e.Thumbs;
            n && n.isVisible && !1 !== n.opts.hideOnClose && n.$grid.hide()
        }
    })
}(document, jQuery),
function(t, e) {
    "use strict";
    function n(t) {
        var e = {
            "&": "&amp;",
            "<": "&lt;",
            ">": "&gt;",
            '"': "&quot;",
            "'": "&#39;",
            "/": "&#x2F;",
            "`": "&#x60;",
            "=": "&#x3D;"
        };
        return String(t).replace(/[&<>"'`=\/]/g, function(t) {
            return e[t]
        })
    }
    e.extend(!0, e.fancybox.defaults, {
        btnTpl: {
            share: '<button data-fancybox-share class="fancybox-button fancybox-button--share" title="{{SHARE}}"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M2.55 19c1.4-8.4 9.1-9.8 11.9-9.8V5l7 7-7 6.3v-3.5c-2.8 0-10.5 2.1-11.9 4.2z"/></svg></button>'
        },
        share: {
            url: function(t, e) {
                return !t.currentHash && "inline" !== e.type && "html" !== e.type && (e.origSrc || e.src) || window.location
            },
            tpl: '<div class="fancybox-share"><h1>{{SHARE}}</h1><p><a class="fancybox-share__button fancybox-share__button--fb" href="https://www.facebook.com/sharer/sharer.php?u={{url}}"><svg viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="m287 456v-299c0-21 6-35 35-35h38v-63c-7-1-29-3-55-3-54 0-91 33-91 94v306m143-254h-205v72h196" /></svg><span>Facebook</span></a><a class="fancybox-share__button fancybox-share__button--tw" href="https://twitter.com/intent/tweet?url={{url}}&text={{descr}}"><svg viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="m456 133c-14 7-31 11-47 13 17-10 30-27 37-46-15 10-34 16-52 20-61-62-157-7-141 75-68-3-129-35-169-85-22 37-11 86 26 109-13 0-26-4-37-9 0 39 28 72 65 80-12 3-25 4-37 2 10 33 41 57 77 57-42 30-77 38-122 34 170 111 378-32 359-208 16-11 30-25 41-42z" /></svg><span>Twitter</span></a><a class="fancybox-share__button fancybox-share__button--pt" href="https://www.pinterest.com/pin/create/button/?url={{url}}&description={{descr}}&media={{media}}"><svg viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="m265 56c-109 0-164 78-164 144 0 39 15 74 47 87 5 2 10 0 12-5l4-19c2-6 1-8-3-13-9-11-15-25-15-45 0-58 43-110 113-110 62 0 96 38 96 88 0 67-30 122-73 122-24 0-42-19-36-44 6-29 20-60 20-81 0-19-10-35-31-35-25 0-44 26-44 60 0 21 7 36 7 36l-30 125c-8 37-1 83 0 87 0 3 4 4 5 2 2-3 32-39 42-75l16-64c8 16 31 29 56 29 74 0 124-67 124-157 0-69-58-132-146-132z" fill="#fff"/></svg><span>Pinterest</span></a></p><p><input class="fancybox-share__input" type="text" value="{{url_raw}}" onclick="select()" /></p></div>'
        }
    }),
    e(t).on("click", "[data-fancybox-share]", function() {
        var t, o, i = e.fancybox.getInstance(), a = i.current || null;
        a && ("function" === e.type(a.opts.share.url) && (t = a.opts.share.url.apply(a, [i, a])),
        o = a.opts.share.tpl.replace(/\{\{media\}\}/g, "image" === a.type ? encodeURIComponent(a.src) : "").replace(/\{\{url\}\}/g, encodeURIComponent(t)).replace(/\{\{url_raw\}\}/g, n(t)).replace(/\{\{descr\}\}/g, i.$caption ? encodeURIComponent(i.$caption.text()) : ""),
        e.fancybox.open({
            src: i.translate(i, o),
            type: "html",
            opts: {
                touch: !1,
                animationEffect: !1,
                afterLoad: function(t, e) {
                    i.$refs.container.one("beforeClose.fb", function() {
                        t.close(null, 0)
                    }),
                    e.$content.find(".fancybox-share__button").click(function() {
                        return window.open(this.href, "Share", "width=550, height=450"),
                        !1
                    })
                },
                mobile: {
                    autoFocus: !1
                }
            }
        }))
    })
}(document, jQuery),
function(t, e, n) {
    "use strict";
    function o() {
        var e = t.location.hash.substr(1)
          , n = e.split("-")
          , o = n.length > 1 && /^\+?\d+$/.test(n[n.length - 1]) ? parseInt(n.pop(-1), 10) || 1 : 1
          , i = n.join("-");
        return {
            hash: e,
            index: o < 1 ? 1 : o,
            gallery: i
        }
    }
    function i(t) {
        "" !== t.gallery && n("[data-fancybox='" + n.escapeSelector(t.gallery) + "']").eq(t.index - 1).focus().trigger("click.fb-start")
    }
    function a(t) {
        var e, n;
        return !!t && (e = t.current ? t.current.opts : t.opts,
        "" !== (n = e.hash || (e.$orig ? e.$orig.data("fancybox") || e.$orig.data("fancybox-trigger") : "")) && n)
    }
    n.escapeSelector || (n.escapeSelector = function(t) {
        return (t + "").replace(/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g, function(t, e) {
            return e ? "\0" === t ? "�" : t.slice(0, -1) + "\\" + t.charCodeAt(t.length - 1).toString(16) + " " : "\\" + t
        })
    }
    ),
    n(function() {
        !1 !== n.fancybox.defaults.hash && (n(e).on({
            "onInit.fb": function(t, e) {
                var n, i;
                !1 !== e.group[e.currIndex].opts.hash && (n = o(),
                (i = a(e)) && n.gallery && i == n.gallery && (e.currIndex = n.index - 1))
            },
            "beforeShow.fb": function(n, o, i, s) {
                var r;
                i && !1 !== i.opts.hash && (r = a(o)) && (o.currentHash = r + (o.group.length > 1 ? "-" + (i.index + 1) : ""),
                t.location.hash !== "#" + o.currentHash && (s && !o.origHash && (o.origHash = t.location.hash),
                o.hashTimer && clearTimeout(o.hashTimer),
                o.hashTimer = setTimeout(function() {
                    "replaceState"in t.history ? (t.history[s ? "pushState" : "replaceState"]({}, e.title, t.location.pathname + t.location.search + "#" + o.currentHash),
                    s && (o.hasCreatedHistory = !0)) : t.location.hash = o.currentHash,
                    o.hashTimer = null
                }, 300)))
            },
            "beforeClose.fb": function(n, o, i) {
                i && !1 !== i.opts.hash && (clearTimeout(o.hashTimer),
                o.currentHash && o.hasCreatedHistory ? t.history.back() : o.currentHash && ("replaceState"in t.history ? t.history.replaceState({}, e.title, t.location.pathname + t.location.search + (o.origHash || "")) : t.location.hash = o.origHash),
                o.currentHash = null)
            }
        }),
        n(t).on("hashchange.fb", function() {
            var t = o()
              , e = null;
            n.each(n(".fancybox-container").get().reverse(), function(t, o) {
                var i = n(o).data("FancyBox");
                if (i && i.currentHash)
                    return e = i,
                    !1
            }),
            e ? e.currentHash === t.gallery + "-" + t.index || 1 === t.index && e.currentHash == t.gallery || (e.currentHash = null,
            e.close()) : "" !== t.gallery && i(t)
        }),
        setTimeout(function() {
            n.fancybox.getInstance() || i(o())
        }, 50))
    })
}(window, document, jQuery),
function(t, e) {
    "use strict";
    var n = (new Date).getTime();
    e(t).on({
        "onInit.fb": function(t, e, o) {
            e.$refs.stage.on("mousewheel DOMMouseScroll wheel MozMousePixelScroll", function(t) {
                var o = e.current
                  , i = (new Date).getTime();
                e.group.length < 2 || !1 === o.opts.wheel || "auto" === o.opts.wheel && "image" !== o.type || (t.preventDefault(),
                t.stopPropagation(),
                o.$slide.hasClass("fancybox-animated") || (t = t.originalEvent || t,
                i - n < 250 || (n = i,
                e[(-t.deltaY || -t.deltaX || t.wheelDelta || -t.detail) < 0 ? "next" : "previous"]())))
            })
        }
    })
}(document, jQuery);
/*!
 * Infinite Ajax Scroll v2.2.2
 * A jQuery plugin for infinite scrolling
 * http://infiniteajaxscroll.com
 *
 * Commercial use requires one-time purchase of a commercial license
 * http://infiniteajaxscroll.com/docs/license.html
 *
 * Non-commercial use is licensed under the MIT License
 *
 * Copyright (c) 2016 Webcreate (Jeroen Fiege)
 */
var IASCallbacks = function(a) {
    return this.list = [],
    this.fireStack = [],
    this.isFiring = !1,
    this.isDisabled = !1,
    this.fire = function(a) {
        var b = a[0]
          , c = a[1]
          , d = a[2];
        this.isFiring = !0;
        for (var e = 0, f = this.list.length; f > e; e++)
            if (void 0 != this.list[e] && !1 === this.list[e].fn.apply(b, d)) {
                c.reject();
                break
            }
        this.isFiring = !1,
        c.resolve(),
        this.fireStack.length && this.fire(this.fireStack.shift())
    }
    ,
    this.inList = function(a, b) {
        b = b || 0;
        for (var c = b, d = this.list.length; d > c; c++)
            if (this.list[c].fn === a || a.guid && this.list[c].fn.guid && a.guid === this.list[c].fn.guid)
                return c;
        return -1
    }
    ,
    this
};
IASCallbacks.prototype = {
    add: function(a, b) {
        var c = {
            fn: a,
            priority: b
        };
        b = b || 0;
        for (var d = 0, e = this.list.length; e > d; d++)
            if (b > this.list[d].priority)
                return this.list.splice(d, 0, c),
                this;
        return this.list.push(c),
        this
    },
    remove: function(a) {
        for (var b = 0; (b = this.inList(a, b)) > -1; )
            this.list.splice(b, 1);
        return this
    },
    has: function(a) {
        return this.inList(a) > -1
    },
    fireWith: function(a, b) {
        var c = $.Deferred();
        return this.isDisabled ? c.reject() : (b = b || [],
        b = [a, c, b.slice ? b.slice() : b],
        this.isFiring ? this.fireStack.push(b) : this.fire(b),
        c)
    },
    disable: function() {
        this.isDisabled = !0
    },
    enable: function() {
        this.isDisabled = !1
    }
},
function(a) {
    "use strict";
    var b = -1
      , c = function(c, d) {
        return this.itemsContainerSelector = d.container,
        this.itemSelector = d.item,
        this.nextSelector = d.next,
        this.paginationSelector = d.pagination,
        this.$scrollContainer = c,
        this.$container = window === c.get(0) ? a(document) : c,
        this.defaultDelay = d.delay,
        this.negativeMargin = d.negativeMargin,
        this.nextUrl = null,
        this.isBound = !1,
        this.isPaused = !1,
        this.isInitialized = !1,
        this.jsXhr = !1,
        this.listeners = {
            next: new IASCallbacks(a),
            load: new IASCallbacks(a),
            loaded: new IASCallbacks(a),
            render: new IASCallbacks(a),
            rendered: new IASCallbacks(a),
            scroll: new IASCallbacks(a),
            noneLeft: new IASCallbacks(a),
            ready: new IASCallbacks(a)
        },
        this.extensions = [],
        this.scrollHandler = function() {
            if (this.isBound && !this.isPaused) {
                var a = this.getCurrentScrollOffset(this.$scrollContainer)
                  , c = this.getScrollThreshold();
                b != c && (this.fire("scroll", [a, c]),
                a >= c && this.next())
            }
        }
        ,
        this.getItemsContainer = function() {
            return a(this.itemsContainerSelector, this.$container)
        }
        ,
        this.getLastItem = function() {
            return a(this.itemSelector, this.getItemsContainer().get(0)).last()
        }
        ,
        this.getFirstItem = function() {
            return a(this.itemSelector, this.getItemsContainer().get(0)).first()
        }
        ,
        this.getScrollThreshold = function(a) {
            var c;
            return a = a || this.negativeMargin,
            a = a >= 0 ? -1 * a : a,
            c = this.getLastItem(),
            0 === c.length ? b : c.offset().top + c.height() + a
        }
        ,
        this.getCurrentScrollOffset = function(a) {
            var b = 0
              , c = a.height();
            return b = window === a.get(0) ? a.scrollTop() : a.offset().top,
            (-1 != navigator.platform.indexOf("iPhone") || -1 != navigator.platform.indexOf("iPod")) && (c += 80),
            b + c
        }
        ,
        this.getNextUrl = function(b) {
            return b = b || this.$container,
            a(this.nextSelector, b).last().attr("href")
        }
        ,
        this.load = function(b, c, d) {
            var e, f, g = this, h = [], i = +new Date;
            d = d || this.defaultDelay;
            var j = {
                url: b
            };
            return g.fire("load", [j]),
            this.jsXhr = a.get(j.url, null, a.proxy(function(b) {
                e = a(this.itemsContainerSelector, b).eq(0),
                0 === e.length && (e = a(b).filter(this.itemsContainerSelector).eq(0)),
                e && e.find(this.itemSelector).each(function() {
                    h.push(this)
                }),
                g.fire("loaded", [b, h]),
                c && (f = +new Date - i,
                d > f ? setTimeout(function() {
                    c.call(g, b, h)
                }, d - f) : c.call(g, b, h))
            }, g), "html"),
            this.jsXhr
        }
        ,
        this.render = function(b, c) {
            var d = this
              , e = this.getLastItem()
              , f = 0
              , g = this.fire("render", [b]);
            g.done(function() {
                a(b).hide(),
                e.after(b),
                a(b).fadeIn(400, function() {
                    ++f < b.length || (d.fire("rendered", [b]),
                    c && c())
                })
            }),
            g.fail(function() {
                c && c()
            })
        }
        ,
        this.hidePagination = function() {
            this.paginationSelector && a(this.paginationSelector, this.$container).hide()
        }
        ,
        this.restorePagination = function() {
            this.paginationSelector && a(this.paginationSelector, this.$container).show()
        }
        ,
        this.throttle = function(b, c) {
            var d, e, f = 0;
            return d = function() {
                function a() {
                    f = +new Date,
                    b.apply(d, g)
                }
                var d = this
                  , g = arguments
                  , h = +new Date - f;
                e ? clearTimeout(e) : a(),
                h > c ? a() : e = setTimeout(a, c)
            }
            ,
            a.guid && (d.guid = b.guid = b.guid || a.guid++),
            d
        }
        ,
        this.fire = function(a, b) {
            return this.listeners[a].fireWith(this, b)
        }
        ,
        this.pause = function() {
            this.isPaused = !0
        }
        ,
        this.resume = function() {
            this.isPaused = !1
        }
        ,
        this
    };
    c.prototype.initialize = function() {
        if (this.isInitialized)
            return !1;
        var a = !!("onscroll"in this.$scrollContainer.get(0))
          , b = this.getCurrentScrollOffset(this.$scrollContainer)
          , c = this.getScrollThreshold();
        return a ? (this.hidePagination(),
        this.bind(),
        this.fire("ready"),
        this.nextUrl = this.getNextUrl(),
        b >= c ? (this.next(),
        this.one("rendered", function() {
            this.isInitialized = !0
        })) : this.isInitialized = !0,
        this) : !1
    }
    ,
    c.prototype.reinitialize = function() {
        this.isInitialized = !1,
        this.unbind(),
        this.initialize()
    }
    ,
    c.prototype.bind = function() {
        if (!this.isBound) {
            this.$scrollContainer.on("scroll", a.proxy(this.throttle(this.scrollHandler, 150), this));
            for (var b = 0, c = this.extensions.length; c > b; b++)
                this.extensions[b].bind(this);
            this.isBound = !0,
            this.resume()
        }
    }
    ,
    c.prototype.unbind = function() {
        if (this.isBound) {
            this.$scrollContainer.off("scroll", this.scrollHandler);
            for (var a = 0, b = this.extensions.length; b > a; a++)
                "undefined" != typeof this.extensions[a].unbind && this.extensions[a].unbind(this);
            this.isBound = !1
        }
    }
    ,
    c.prototype.destroy = function() {
        try {
            this.jsXhr.abort()
        } catch (a) {}
        this.unbind(),
        this.$scrollContainer.data("ias", null)
    }
    ,
    c.prototype.on = function(b, c, d) {
        if ("undefined" == typeof this.listeners[b])
            throw new Error('There is no event called "' + b + '"');
        return d = d || 0,
        this.listeners[b].add(a.proxy(c, this), d),
        this
    }
    ,
    c.prototype.one = function(a, b) {
        var c = this
          , d = function() {
            c.off(a, b),
            c.off(a, d)
        };
        return this.on(a, b),
        this.on(a, d),
        this
    }
    ,
    c.prototype.off = function(a, b) {
        if ("undefined" == typeof this.listeners[a])
            throw new Error('There is no event called "' + a + '"');
        return this.listeners[a].remove(b),
        this
    }
    ,
    c.prototype.next = function() {
        var a = this.nextUrl
          , b = this;
        if (this.pause(),
        !a)
            return this.fire("noneLeft", [this.getLastItem()]),
            this.listeners.noneLeft.disable(),
            b.resume(),
            !1;
        var c = this.fire("next", [a]);
        return c.done(function() {
            b.load(a, function(a, c) {
                b.render(c, function() {
                    b.nextUrl = b.getNextUrl(a),
                    b.resume()
                })
            })
        }),
        c.fail(function() {
            b.resume()
        }),
        !0
    }
    ,
    c.prototype.extension = function(a) {
        if ("undefined" == typeof a.bind)
            throw new Error('Extension doesn\'t have required method "bind"');
        return "undefined" != typeof a.initialize && a.initialize(this),
        this.extensions.push(a),
        this.isInitialized && this.reinitialize(),
        this
    }
    ,
    a.ias = function(b) {
        var c = a(window);
        return c.ias.apply(c, arguments)
    }
    ,
    a.fn.ias = function(b) {
        var d = Array.prototype.slice.call(arguments)
          , e = this;
        return this.each(function() {
            var f = a(this)
              , g = f.data("ias")
              , h = a.extend({}, a.fn.ias.defaults, f.data(), "object" == typeof b && b);
            if (g || (f.data("ias", g = new c(f,h)),
            a(document).ready(a.proxy(g.initialize, g))),
            "string" == typeof b) {
                if ("function" != typeof g[b])
                    throw new Error('There is no method called "' + b + '"');
                d.shift(),
                g[b].apply(g, d)
            }
            e = g
        }),
        e
    }
    ,
    a.fn.ias.defaults = {
        item: ".item",
        container: ".listing",
        next: ".next",
        pagination: !1,
        delay: 600,
        negativeMargin: 10
    }
}(jQuery);
var IASHistoryExtension = function(a) {
    return a = jQuery.extend({}, this.defaults, a),
    this.ias = null,
    this.prevSelector = a.prev,
    this.prevUrl = null,
    this.listeners = {
        prev: new IASCallbacks
    },
    this.onPageChange = function(a, b, c) {
        if (window.history && window.history.replaceState) {
            var d = history.state;
            history.replaceState(d, document.title, c)
        }
    }
    ,
    this.onScroll = function(a, b) {
        var c = this.getScrollThresholdFirstItem();
        this.prevUrl && (a -= this.ias.$scrollContainer.height(),
        c >= a && this.prev())
    }
    ,
    this.onReady = function() {
        var a = this.ias.getCurrentScrollOffset(this.ias.$scrollContainer)
          , b = this.getScrollThresholdFirstItem();
        a -= this.ias.$scrollContainer.height(),
        b >= a && this.prev()
    }
    ,
    this.getPrevUrl = function(a) {
        return a || (a = this.ias.$container),
        jQuery(this.prevSelector, a).last().attr("href")
    }
    ,
    this.getScrollThresholdFirstItem = function() {
        var a;
        return a = this.ias.getFirstItem(),
        0 === a.length ? -1 : a.offset().top
    }
    ,
    this.renderBefore = function(a, b) {
        var c = this.ias
          , d = c.getFirstItem()
          , e = 0;
        c.fire("render", [a]),
        jQuery(a).hide(),
        d.before(a),
        jQuery(a).fadeIn(400, function() {
            ++e < a.length || (c.fire("rendered", [a]),
            b && b())
        })
    }
    ,
    this
};
IASHistoryExtension.prototype.initialize = function(a) {
    var b = this;
    this.ias = a,
    jQuery.extend(a.listeners, this.listeners),
    a.prev = function() {
        return b.prev()
    }
    ,
    this.prevUrl = this.getPrevUrl()
}
,
IASHistoryExtension.prototype.bind = function(a) {
    a.on("pageChange", jQuery.proxy(this.onPageChange, this)),
    a.on("scroll", jQuery.proxy(this.onScroll, this)),
    a.on("ready", jQuery.proxy(this.onReady, this))
}
,
IASHistoryExtension.prototype.unbind = function(a) {
    a.off("pageChange", this.onPageChange),
    a.off("scroll", this.onScroll),
    a.off("ready", this.onReady)
}
,
IASHistoryExtension.prototype.prev = function() {
    var a = this.prevUrl
      , b = this
      , c = this.ias;
    if (!a)
        return !1;
    c.pause();
    var d = c.fire("prev", [a]);
    return d.done(function() {
        c.load(a, function(a, d) {
            b.renderBefore(d, function() {
                b.prevUrl = b.getPrevUrl(a),
                c.resume(),
                b.prevUrl && b.prev()
            })
        })
    }),
    d.fail(function() {
        c.resume()
    }),
    !0
}
,
IASHistoryExtension.prototype.defaults = {
    prev: ".prev"
};
var IASNoneLeftExtension = function(a) {
    return a = jQuery.extend({}, this.defaults, a),
    this.ias = null,
    this.uid = (new Date).getTime(),
    this.html = a.html.replace("{text}", a.text),
    this.showNoneLeft = function() {
        var a = jQuery(this.html).attr("id", "ias_noneleft_" + this.uid)
          , b = this.ias.getLastItem();
        b.after(a),
        a.fadeIn()
    }
    ,
    this
};
IASNoneLeftExtension.prototype.bind = function(a) {
    this.ias = a,
    a.on("noneLeft", jQuery.proxy(this.showNoneLeft, this))
}
,
IASNoneLeftExtension.prototype.unbind = function(a) {
    a.off("noneLeft", this.showNoneLeft)
}
,
IASNoneLeftExtension.prototype.defaults = {
    text: "You reached the end.",
    html: '<div class="ias-noneleft" style="text-align: center;">{text}</div>'
};
var IASPagingExtension = function() {
    return this.ias = null,
    this.pagebreaks = [[0, document.location.toString()]],
    this.lastPageNum = 1,
    this.enabled = !0,
    this.listeners = {
        pageChange: new IASCallbacks
    },
    this.onScroll = function(a, b) {
        if (this.enabled) {
            var c, d = this.ias, e = this.getCurrentPageNum(a), f = this.getCurrentPagebreak(a);
            this.lastPageNum !== e && (c = f[1],
            d.fire("pageChange", [e, a, c])),
            this.lastPageNum = e
        }
    }
    ,
    this.onNext = function(a) {
        var b = this.ias.getCurrentScrollOffset(this.ias.$scrollContainer);
        this.pagebreaks.push([b, a]);
        var c = this.getCurrentPageNum(b) + 1;
        this.ias.fire("pageChange", [c, b, a]),
        this.lastPageNum = c
    }
    ,
    this.onPrev = function(a) {
        var b = this
          , c = b.ias
          , d = c.getCurrentScrollOffset(c.$scrollContainer)
          , e = d - c.$scrollContainer.height()
          , f = c.getFirstItem();
        this.enabled = !1,
        this.pagebreaks.unshift([0, a]),
        c.one("rendered", function() {
            for (var d = 1, g = b.pagebreaks.length; g > d; d++)
                b.pagebreaks[d][0] = b.pagebreaks[d][0] + f.offset().top;
            var h = b.getCurrentPageNum(e) + 1;
            c.fire("pageChange", [h, e, a]),
            b.lastPageNum = h,
            b.enabled = !0
        })
    }
    ,
    this
};
IASPagingExtension.prototype.initialize = function(a) {
    this.ias = a,
    jQuery.extend(a.listeners, this.listeners)
}
,
IASPagingExtension.prototype.bind = function(a) {
    try {
        a.on("prev", jQuery.proxy(this.onPrev, this), this.priority)
    } catch (b) {}
    a.on("next", jQuery.proxy(this.onNext, this), this.priority),
    a.on("scroll", jQuery.proxy(this.onScroll, this), this.priority)
}
,
IASPagingExtension.prototype.unbind = function(a) {
    try {
        a.off("prev", this.onPrev)
    } catch (b) {}
    a.off("next", this.onNext),
    a.off("scroll", this.onScroll)
}
,
IASPagingExtension.prototype.getCurrentPageNum = function(a) {
    for (var b = this.pagebreaks.length - 1; b > 0; b--)
        if (a > this.pagebreaks[b][0])
            return b + 1;
    return 1
}
,
IASPagingExtension.prototype.getCurrentPagebreak = function(a) {
    for (var b = this.pagebreaks.length - 1; b >= 0; b--)
        if (a > this.pagebreaks[b][0])
            return this.pagebreaks[b];
    return null
}
,
IASPagingExtension.prototype.priority = 500;
var IASSpinnerExtension = function(a) {
    return a = jQuery.extend({}, this.defaults, a),
    this.ias = null,
    this.uid = (new Date).getTime(),
    this.src = a.src,
    this.html = a.html.replace("{src}", this.src),
    this.showSpinner = function() {
        var a = this.getSpinner() || this.createSpinner()
          , b = this.ias.getLastItem();
        b.after(a),
        a.fadeIn()
    }
    ,
    this.showSpinnerBefore = function() {
        var a = this.getSpinner() || this.createSpinner()
          , b = this.ias.getFirstItem();
        b.before(a),
        a.fadeIn()
    }
    ,
    this.removeSpinner = function() {
        this.hasSpinner() && this.getSpinner().remove()
    }
    ,
    this.getSpinner = function() {
        var a = jQuery("#ias_spinner_" + this.uid);
        return a.length > 0 ? a : !1
    }
    ,
    this.hasSpinner = function() {
        var a = jQuery("#ias_spinner_" + this.uid);
        return a.length > 0
    }
    ,
    this.createSpinner = function() {
        var a = jQuery(this.html).attr("id", "ias_spinner_" + this.uid);
        return a.hide(),
        a
    }
    ,
    this
};
IASSpinnerExtension.prototype.bind = function(a) {
    this.ias = a,
    a.on("next", jQuery.proxy(this.showSpinner, this)),
    a.on("render", jQuery.proxy(this.removeSpinner, this));
    try {
        a.on("prev", jQuery.proxy(this.showSpinnerBefore, this))
    } catch (b) {}
}
,
IASSpinnerExtension.prototype.unbind = function(a) {
    a.off("next", this.showSpinner),
    a.off("render", this.removeSpinner);
    try {
        a.off("prev", this.showSpinnerBefore)
    } catch (b) {}
}
,
IASSpinnerExtension.prototype.defaults = {
    src: "data:image/gif;base64,R0lGODlhEAAQAPQAAP///wAAAPDw8IqKiuDg4EZGRnp6egAAAFhYWCQkJKysrL6+vhQUFJycnAQEBDY2NmhoaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAAFdyAgAgIJIeWoAkRCCMdBkKtIHIngyMKsErPBYbADpkSCwhDmQCBethRB6Vj4kFCkQPG4IlWDgrNRIwnO4UKBXDufzQvDMaoSDBgFb886MiQadgNABAokfCwzBA8LCg0Egl8jAggGAA1kBIA1BAYzlyILczULC2UhACH5BAkKAAAALAAAAAAQABAAAAV2ICACAmlAZTmOREEIyUEQjLKKxPHADhEvqxlgcGgkGI1DYSVAIAWMx+lwSKkICJ0QsHi9RgKBwnVTiRQQgwF4I4UFDQQEwi6/3YSGWRRmjhEETAJfIgMFCnAKM0KDV4EEEAQLiF18TAYNXDaSe3x6mjidN1s3IQAh+QQJCgAAACwAAAAAEAAQAAAFeCAgAgLZDGU5jgRECEUiCI+yioSDwDJyLKsXoHFQxBSHAoAAFBhqtMJg8DgQBgfrEsJAEAg4YhZIEiwgKtHiMBgtpg3wbUZXGO7kOb1MUKRFMysCChAoggJCIg0GC2aNe4gqQldfL4l/Ag1AXySJgn5LcoE3QXI3IQAh+QQJCgAAACwAAAAAEAAQAAAFdiAgAgLZNGU5joQhCEjxIssqEo8bC9BRjy9Ag7GILQ4QEoE0gBAEBcOpcBA0DoxSK/e8LRIHn+i1cK0IyKdg0VAoljYIg+GgnRrwVS/8IAkICyosBIQpBAMoKy9dImxPhS+GKkFrkX+TigtLlIyKXUF+NjagNiEAIfkECQoAAAAsAAAAABAAEAAABWwgIAICaRhlOY4EIgjH8R7LKhKHGwsMvb4AAy3WODBIBBKCsYA9TjuhDNDKEVSERezQEL0WrhXucRUQGuik7bFlngzqVW9LMl9XWvLdjFaJtDFqZ1cEZUB0dUgvL3dgP4WJZn4jkomWNpSTIyEAIfkECQoAAAAsAAAAABAAEAAABX4gIAICuSxlOY6CIgiD8RrEKgqGOwxwUrMlAoSwIzAGpJpgoSDAGifDY5kopBYDlEpAQBwevxfBtRIUGi8xwWkDNBCIwmC9Vq0aiQQDQuK+VgQPDXV9hCJjBwcFYU5pLwwHXQcMKSmNLQcIAExlbH8JBwttaX0ABAcNbWVbKyEAIfkECQoAAAAsAAAAABAAEAAABXkgIAICSRBlOY7CIghN8zbEKsKoIjdFzZaEgUBHKChMJtRwcWpAWoWnifm6ESAMhO8lQK0EEAV3rFopIBCEcGwDKAqPh4HUrY4ICHH1dSoTFgcHUiZjBhAJB2AHDykpKAwHAwdzf19KkASIPl9cDgcnDkdtNwiMJCshACH5BAkKAAAALAAAAAAQABAAAAV3ICACAkkQZTmOAiosiyAoxCq+KPxCNVsSMRgBsiClWrLTSWFoIQZHl6pleBh6suxKMIhlvzbAwkBWfFWrBQTxNLq2RG2yhSUkDs2b63AYDAoJXAcFRwADeAkJDX0AQCsEfAQMDAIPBz0rCgcxky0JRWE1AmwpKyEAIfkECQoAAAAsAAAAABAAEAAABXkgIAICKZzkqJ4nQZxLqZKv4NqNLKK2/Q4Ek4lFXChsg5ypJjs1II3gEDUSRInEGYAw6B6zM4JhrDAtEosVkLUtHA7RHaHAGJQEjsODcEg0FBAFVgkQJQ1pAwcDDw8KcFtSInwJAowCCA6RIwqZAgkPNgVpWndjdyohACH5BAkKAAAALAAAAAAQABAAAAV5ICACAimc5KieLEuUKvm2xAKLqDCfC2GaO9eL0LABWTiBYmA06W6kHgvCqEJiAIJiu3gcvgUsscHUERm+kaCxyxa+zRPk0SgJEgfIvbAdIAQLCAYlCj4DBw0IBQsMCjIqBAcPAooCBg9pKgsJLwUFOhCZKyQDA3YqIQAh+QQJCgAAACwAAAAAEAAQAAAFdSAgAgIpnOSonmxbqiThCrJKEHFbo8JxDDOZYFFb+A41E4H4OhkOipXwBElYITDAckFEOBgMQ3arkMkUBdxIUGZpEb7kaQBRlASPg0FQQHAbEEMGDSVEAA1QBhAED1E0NgwFAooCDWljaQIQCE5qMHcNhCkjIQAh+QQJCgAAACwAAAAAEAAQAAAFeSAgAgIpnOSoLgxxvqgKLEcCC65KEAByKK8cSpA4DAiHQ/DkKhGKh4ZCtCyZGo6F6iYYPAqFgYy02xkSaLEMV34tELyRYNEsCQyHlvWkGCzsPgMCEAY7Cg04Uk48LAsDhRA8MVQPEF0GAgqYYwSRlycNcWskCkApIyEAOwAAAAAAAAAAAA==",
    html: '<div class="ias-spinner" style="text-align: center;"><img src="{src}"/></div>'
};
var IASTriggerExtension = function(a) {
    return a = jQuery.extend({}, this.defaults, a),
    this.ias = null,
    this.html = a.html.replace("{text}", a.text),
    this.htmlPrev = a.htmlPrev.replace("{text}", a.textPrev),
    this.enabled = !0,
    this.count = 0,
    this.offset = a.offset,
    this.$triggerNext = null,
    this.$triggerPrev = null,
    this.showTriggerNext = function() {
        if (!this.enabled)
            return !0;
        if (!1 === this.offset || ++this.count < this.offset)
            return !0;
        var a = this.$triggerNext || (this.$triggerNext = this.createTrigger(this.next, this.html))
          , b = this.ias.getLastItem();
        return b.after(a),
        a.fadeIn(),
        !1
    }
    ,
    this.showTriggerPrev = function() {
        if (!this.enabled)
            return !0;
        var a = this.$triggerPrev || (this.$triggerPrev = this.createTrigger(this.prev, this.htmlPrev))
          , b = this.ias.getFirstItem();
        return b.before(a),
        a.fadeIn(),
        !1
    }
    ,
    this.onRendered = function() {
        this.enabled = !0
    }
    ,
    this.createTrigger = function(a, b) {
        var c, d = (new Date).getTime();
        return b = b || this.html,
        c = jQuery(b).attr("id", "ias_trigger_" + d),
        c.hide(),
        c.on("click", jQuery.proxy(a, this)),
        c
    }
    ,
    this
};
IASTriggerExtension.prototype.bind = function(a) {
    this.ias = a,
    a.on("next", jQuery.proxy(this.showTriggerNext, this), this.priority),
    a.on("rendered", jQuery.proxy(this.onRendered, this), this.priority);
    try {
        a.on("prev", jQuery.proxy(this.showTriggerPrev, this), this.priority)
    } catch (b) {}
}
,
IASTriggerExtension.prototype.unbind = function(a) {
    a.off("next", this.showTriggerNext),
    a.off("rendered", this.onRendered);
    try {
        a.off("prev", this.showTriggerPrev)
    } catch (b) {}
}
,
IASTriggerExtension.prototype.next = function() {
    this.enabled = !1,
    this.ias.pause(),
    this.$triggerNext && (this.$triggerNext.remove(),
    this.$triggerNext = null),
    this.ias.next()
}
,
IASTriggerExtension.prototype.prev = function() {
    this.enabled = !1,
    this.ias.pause(),
    this.$triggerPrev && (this.$triggerPrev.remove(),
    this.$triggerPrev = null),
    this.ias.prev()
}
,
IASTriggerExtension.prototype.defaults = {
    text: "Load more items",
    html: '<div class="ias-trigger ias-trigger-next" style="text-align: center; cursor: pointer;"><a>{text}</a></div>',
    textPrev: "Load previous items",
    htmlPrev: '<div class="ias-trigger ias-trigger-prev" style="text-align: center; cursor: pointer;"><a>{text}</a></div>',
    offset: 0
},
IASTriggerExtension.prototype.priority = 1e3;
/*
     _ _      _       _
 ___| (_) ___| | __  (_)___
/ __| | |/ __| |/ /  | / __|
\__ \ | | (__|   < _ | \__ \
|___/_|_|\___|_|\_(_)/ |___/
                   |__/

 Version: 1.6.0
  Author: Ken Wheeler
 Website: http://kenwheeler.github.io
    Docs: http://kenwheeler.github.io/slick
    Repo: http://github.com/kenwheeler/slick
  Issues: http://github.com/kenwheeler/slick/issues

 */
!function(a) {
    "use strict";
    "function" == typeof define && define.amd ? define(["jquery"], a) : "undefined" != typeof exports ? module.exports = a(require("jquery")) : a(jQuery)
}(function(a) {
    "use strict";
    var b = window.Slick || {};
    b = function() {
        function c(c, d) {
            var f, e = this;
            e.defaults = {
                accessibility: !0,
                adaptiveHeight: !1,
                appendArrows: a(c),
                appendDots: a(c),
                arrows: !0,
                asNavFor: null,
                prevArrow: '<button type="button" data-role="none" class="slick-prev" aria-label="Previous" tabindex="0" role="button">Previous</button>',
                nextArrow: '<button type="button" data-role="none" class="slick-next" aria-label="Next" tabindex="0" role="button">Next</button>',
                autoplay: !1,
                autoplaySpeed: 3e3,
                centerMode: !1,
                centerPadding: "50px",
                cssEase: "ease",
                customPaging: function(b, c) {
                    return a('<button type="button" data-role="none" role="button" tabindex="0" />').text(c + 1)
                },
                dots: !1,
                dotsClass: "slick-dots",
                draggable: !0,
                easing: "linear",
                edgeFriction: .35,
                fade: !1,
                focusOnSelect: !1,
                infinite: !0,
                initialSlide: 0,
                lazyLoad: "ondemand",
                mobileFirst: !1,
                pauseOnHover: !0,
                pauseOnFocus: !0,
                pauseOnDotsHover: !1,
                respondTo: "window",
                responsive: null,
                rows: 1,
                rtl: !1,
                slide: "",
                slidesPerRow: 1,
                slidesToShow: 1,
                slidesToScroll: 1,
                speed: 500,
                swipe: !0,
                swipeToSlide: !1,
                touchMove: !0,
                touchThreshold: 5,
                useCSS: !0,
                useTransform: !0,
                variableWidth: !1,
                vertical: !1,
                verticalSwiping: !1,
                waitForAnimate: !0,
                zIndex: 1e3
            },
            e.initials = {
                animating: !1,
                dragging: !1,
                autoPlayTimer: null,
                currentDirection: 0,
                currentLeft: null,
                currentSlide: 0,
                direction: 1,
                $dots: null,
                listWidth: null,
                listHeight: null,
                loadIndex: 0,
                $nextArrow: null,
                $prevArrow: null,
                slideCount: null,
                slideWidth: null,
                $slideTrack: null,
                $slides: null,
                sliding: !1,
                slideOffset: 0,
                swipeLeft: null,
                $list: null,
                touchObject: {},
                transformsEnabled: !1,
                unslicked: !1
            },
            a.extend(e, e.initials),
            e.activeBreakpoint = null,
            e.animType = null,
            e.animProp = null,
            e.breakpoints = [],
            e.breakpointSettings = [],
            e.cssTransitions = !1,
            e.focussed = !1,
            e.interrupted = !1,
            e.hidden = "hidden",
            e.paused = !0,
            e.positionProp = null,
            e.respondTo = null,
            e.rowCount = 1,
            e.shouldClick = !0,
            e.$slider = a(c),
            e.$slidesCache = null,
            e.transformType = null,
            e.transitionType = null,
            e.visibilityChange = "visibilitychange",
            e.windowWidth = 0,
            e.windowTimer = null,
            f = a(c).data("slick") || {},
            e.options = a.extend({}, e.defaults, d, f),
            e.currentSlide = e.options.initialSlide,
            e.originalSettings = e.options,
            "undefined" != typeof document.mozHidden ? (e.hidden = "mozHidden",
            e.visibilityChange = "mozvisibilitychange") : "undefined" != typeof document.webkitHidden && (e.hidden = "webkitHidden",
            e.visibilityChange = "webkitvisibilitychange"),
            e.autoPlay = a.proxy(e.autoPlay, e),
            e.autoPlayClear = a.proxy(e.autoPlayClear, e),
            e.autoPlayIterator = a.proxy(e.autoPlayIterator, e),
            e.changeSlide = a.proxy(e.changeSlide, e),
            e.clickHandler = a.proxy(e.clickHandler, e),
            e.selectHandler = a.proxy(e.selectHandler, e),
            e.setPosition = a.proxy(e.setPosition, e),
            e.swipeHandler = a.proxy(e.swipeHandler, e),
            e.dragHandler = a.proxy(e.dragHandler, e),
            e.keyHandler = a.proxy(e.keyHandler, e),
            e.instanceUid = b++,
            e.htmlExpr = /^(?:\s*(<[\w\W]+>)[^>]*)$/,
            e.registerBreakpoints(),
            e.init(!0)
        }
        var b = 0;
        return c
    }(),
    b.prototype.activateADA = function() {
        var a = this;
        a.$slideTrack.find(".slick-active").attr({
            "aria-hidden": "false"
        }).find("a, input, button, select").attr({
            tabindex: "0"
        })
    }
    ,
    b.prototype.addSlide = b.prototype.slickAdd = function(b, c, d) {
        var e = this;
        if ("boolean" == typeof c)
            d = c,
            c = null;
        else if (0 > c || c >= e.slideCount)
            return !1;
        e.unload(),
        "number" == typeof c ? 0 === c && 0 === e.$slides.length ? a(b).appendTo(e.$slideTrack) : d ? a(b).insertBefore(e.$slides.eq(c)) : a(b).insertAfter(e.$slides.eq(c)) : d === !0 ? a(b).prependTo(e.$slideTrack) : a(b).appendTo(e.$slideTrack),
        e.$slides = e.$slideTrack.children(this.options.slide),
        e.$slideTrack.children(this.options.slide).detach(),
        e.$slideTrack.append(e.$slides),
        e.$slides.each(function(b, c) {
            a(c).attr("data-slick-index", b)
        }),
        e.$slidesCache = e.$slides,
        e.reinit()
    }
    ,
    b.prototype.animateHeight = function() {
        var a = this;
        if (1 === a.options.slidesToShow && a.options.adaptiveHeight === !0 && a.options.vertical === !1) {
            var b = a.$slides.eq(a.currentSlide).outerHeight(!0);
            a.$list.animate({
                height: b
            }, a.options.speed)
        }
    }
    ,
    b.prototype.animateSlide = function(b, c) {
        var d = {}
          , e = this;
        e.animateHeight(),
        e.options.rtl === !0 && e.options.vertical === !1 && (b = -b),
        e.transformsEnabled === !1 ? e.options.vertical === !1 ? e.$slideTrack.animate({
            left: b
        }, e.options.speed, e.options.easing, c) : e.$slideTrack.animate({
            top: b
        }, e.options.speed, e.options.easing, c) : e.cssTransitions === !1 ? (e.options.rtl === !0 && (e.currentLeft = -e.currentLeft),
        a({
            animStart: e.currentLeft
        }).animate({
            animStart: b
        }, {
            duration: e.options.speed,
            easing: e.options.easing,
            step: function(a) {
                a = Math.ceil(a),
                e.options.vertical === !1 ? (d[e.animType] = "translate(" + a + "px, 0px)",
                e.$slideTrack.css(d)) : (d[e.animType] = "translate(0px," + a + "px)",
                e.$slideTrack.css(d))
            },
            complete: function() {
                c && c.call()
            }
        })) : (e.applyTransition(),
        b = Math.ceil(b),
        e.options.vertical === !1 ? d[e.animType] = "translate3d(" + b + "px, 0px, 0px)" : d[e.animType] = "translate3d(0px," + b + "px, 0px)",
        e.$slideTrack.css(d),
        c && setTimeout(function() {
            e.disableTransition(),
            c.call()
        }, e.options.speed))
    }
    ,
    b.prototype.getNavTarget = function() {
        var b = this
          , c = b.options.asNavFor;
        return c && null !== c && (c = a(c).not(b.$slider)),
        c
    }
    ,
    b.prototype.asNavFor = function(b) {
        var c = this
          , d = c.getNavTarget();
        null !== d && "object" == typeof d && d.each(function() {
            var c = a(this).slick("getSlick");
            c.unslicked || c.slideHandler(b, !0)
        })
    }
    ,
    b.prototype.applyTransition = function(a) {
        var b = this
          , c = {};
        b.options.fade === !1 ? c[b.transitionType] = b.transformType + " " + b.options.speed + "ms " + b.options.cssEase : c[b.transitionType] = "opacity " + b.options.speed + "ms " + b.options.cssEase,
        b.options.fade === !1 ? b.$slideTrack.css(c) : b.$slides.eq(a).css(c)
    }
    ,
    b.prototype.autoPlay = function() {
        var a = this;
        a.autoPlayClear(),
        a.slideCount > a.options.slidesToShow && (a.autoPlayTimer = setInterval(a.autoPlayIterator, a.options.autoplaySpeed))
    }
    ,
    b.prototype.autoPlayClear = function() {
        var a = this;
        a.autoPlayTimer && clearInterval(a.autoPlayTimer)
    }
    ,
    b.prototype.autoPlayIterator = function() {
        var a = this
          , b = a.currentSlide + a.options.slidesToScroll;
        a.paused || a.interrupted || a.focussed || (a.options.infinite === !1 && (1 === a.direction && a.currentSlide + 1 === a.slideCount - 1 ? a.direction = 0 : 0 === a.direction && (b = a.currentSlide - a.options.slidesToScroll,
        a.currentSlide - 1 === 0 && (a.direction = 1))),
        a.slideHandler(b))
    }
    ,
    b.prototype.buildArrows = function() {
        var b = this;
        b.options.arrows === !0 && (b.$prevArrow = a(b.options.prevArrow).addClass("slick-arrow"),
        b.$nextArrow = a(b.options.nextArrow).addClass("slick-arrow"),
        b.slideCount > b.options.slidesToShow ? (b.$prevArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"),
        b.$nextArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"),
        b.htmlExpr.test(b.options.prevArrow) && b.$prevArrow.prependTo(b.options.appendArrows),
        b.htmlExpr.test(b.options.nextArrow) && b.$nextArrow.appendTo(b.options.appendArrows),
        b.options.infinite !== !0 && b.$prevArrow.addClass("slick-disabled").attr("aria-disabled", "true")) : b.$prevArrow.add(b.$nextArrow).addClass("slick-hidden").attr({
            "aria-disabled": "true",
            tabindex: "-1"
        }))
    }
    ,
    b.prototype.buildDots = function() {
        var c, d, b = this;
        if (b.options.dots === !0 && b.slideCount > b.options.slidesToShow) {
            for (b.$slider.addClass("slick-dotted"),
            d = a("<ul />").addClass(b.options.dotsClass),
            c = 0; c <= b.getDotCount(); c += 1)
                d.append(a("<li />").append(b.options.customPaging.call(this, b, c)));
            b.$dots = d.appendTo(b.options.appendDots),
            b.$dots.find("li").first().addClass("slick-active").attr("aria-hidden", "false")
        }
    }
    ,
    b.prototype.buildOut = function() {
        var b = this;
        b.$slides = b.$slider.children(b.options.slide + ":not(.slick-cloned)").addClass("slick-slide"),
        b.slideCount = b.$slides.length,
        b.$slides.each(function(b, c) {
            a(c).attr("data-slick-index", b).data("originalStyling", a(c).attr("style") || "")
        }),
        b.$slider.addClass("slick-slider"),
        b.$slideTrack = 0 === b.slideCount ? a('<div class="slick-track"/>').appendTo(b.$slider) : b.$slides.wrapAll('<div class="slick-track"/>').parent(),
        b.$list = b.$slideTrack.wrap('<div aria-live="polite" class="slick-list"/>').parent(),
        b.$slideTrack.css("opacity", 0),
        (b.options.centerMode === !0 || b.options.swipeToSlide === !0) && (b.options.slidesToScroll = 1),
        a("img[data-lazy]", b.$slider).not("[src]").addClass("slick-loading"),
        b.setupInfinite(),
        b.buildArrows(),
        b.buildDots(),
        b.updateDots(),
        b.setSlideClasses("number" == typeof b.currentSlide ? b.currentSlide : 0),
        b.options.draggable === !0 && b.$list.addClass("draggable")
    }
    ,
    b.prototype.buildRows = function() {
        var b, c, d, e, f, g, h, a = this;
        if (e = document.createDocumentFragment(),
        g = a.$slider.children(),
        a.options.rows > 1) {
            for (h = a.options.slidesPerRow * a.options.rows,
            f = Math.ceil(g.length / h),
            b = 0; f > b; b++) {
                var i = document.createElement("div");
                for (c = 0; c < a.options.rows; c++) {
                    var j = document.createElement("div");
                    for (d = 0; d < a.options.slidesPerRow; d++) {
                        var k = b * h + (c * a.options.slidesPerRow + d);
                        g.get(k) && j.appendChild(g.get(k))
                    }
                    i.appendChild(j)
                }
                e.appendChild(i)
            }
            a.$slider.empty().append(e),
            a.$slider.children().children().children().css({
                width: 100 / a.options.slidesPerRow + "%",
                display: "inline-block"
            })
        }
    }
    ,
    b.prototype.checkResponsive = function(b, c) {
        var e, f, g, d = this, h = !1, i = d.$slider.width(), j = window.innerWidth || a(window).width();
        if ("window" === d.respondTo ? g = j : "slider" === d.respondTo ? g = i : "min" === d.respondTo && (g = Math.min(j, i)),
        d.options.responsive && d.options.responsive.length && null !== d.options.responsive) {
            f = null;
            for (e in d.breakpoints)
                d.breakpoints.hasOwnProperty(e) && (d.originalSettings.mobileFirst === !1 ? g < d.breakpoints[e] && (f = d.breakpoints[e]) : g > d.breakpoints[e] && (f = d.breakpoints[e]));
            null !== f ? null !== d.activeBreakpoint ? (f !== d.activeBreakpoint || c) && (d.activeBreakpoint = f,
            "unslick" === d.breakpointSettings[f] ? d.unslick(f) : (d.options = a.extend({}, d.originalSettings, d.breakpointSettings[f]),
            b === !0 && (d.currentSlide = d.options.initialSlide),
            d.refresh(b)),
            h = f) : (d.activeBreakpoint = f,
            "unslick" === d.breakpointSettings[f] ? d.unslick(f) : (d.options = a.extend({}, d.originalSettings, d.breakpointSettings[f]),
            b === !0 && (d.currentSlide = d.options.initialSlide),
            d.refresh(b)),
            h = f) : null !== d.activeBreakpoint && (d.activeBreakpoint = null,
            d.options = d.originalSettings,
            b === !0 && (d.currentSlide = d.options.initialSlide),
            d.refresh(b),
            h = f),
            b || h === !1 || d.$slider.trigger("breakpoint", [d, h])
        }
    }
    ,
    b.prototype.changeSlide = function(b, c) {
        var f, g, h, d = this, e = a(b.currentTarget);
        switch (e.is("a") && b.preventDefault(),
        e.is("li") || (e = e.closest("li")),
        h = d.slideCount % d.options.slidesToScroll !== 0,
        f = h ? 0 : (d.slideCount - d.currentSlide) % d.options.slidesToScroll,
        b.data.message) {
        case "previous":
            g = 0 === f ? d.options.slidesToScroll : d.options.slidesToShow - f,
            d.slideCount > d.options.slidesToShow && d.slideHandler(d.currentSlide - g, !1, c);
            break;
        case "next":
            g = 0 === f ? d.options.slidesToScroll : f,
            d.slideCount > d.options.slidesToShow && d.slideHandler(d.currentSlide + g, !1, c);
            break;
        case "index":
            var i = 0 === b.data.index ? 0 : b.data.index || e.index() * d.options.slidesToScroll;
            d.slideHandler(d.checkNavigable(i), !1, c),
            e.children().trigger("focus");
            break;
        default:
            return
        }
    }
    ,
    b.prototype.checkNavigable = function(a) {
        var c, d, b = this;
        if (c = b.getNavigableIndexes(),
        d = 0,
        a > c[c.length - 1])
            a = c[c.length - 1];
        else
            for (var e in c) {
                if (a < c[e]) {
                    a = d;
                    break
                }
                d = c[e]
            }
        return a
    }
    ,
    b.prototype.cleanUpEvents = function() {
        var b = this;
        b.options.dots && null !== b.$dots && a("li", b.$dots).off("click.slick", b.changeSlide).off("mouseenter.slick", a.proxy(b.interrupt, b, !0)).off("mouseleave.slick", a.proxy(b.interrupt, b, !1)),
        b.$slider.off("focus.slick blur.slick"),
        b.options.arrows === !0 && b.slideCount > b.options.slidesToShow && (b.$prevArrow && b.$prevArrow.off("click.slick", b.changeSlide),
        b.$nextArrow && b.$nextArrow.off("click.slick", b.changeSlide)),
        b.$list.off("touchstart.slick mousedown.slick", b.swipeHandler),
        b.$list.off("touchmove.slick mousemove.slick", b.swipeHandler),
        b.$list.off("touchend.slick mouseup.slick", b.swipeHandler),
        b.$list.off("touchcancel.slick mouseleave.slick", b.swipeHandler),
        b.$list.off("click.slick", b.clickHandler),
        a(document).off(b.visibilityChange, b.visibility),
        b.cleanUpSlideEvents(),
        b.options.accessibility === !0 && b.$list.off("keydown.slick", b.keyHandler),
        b.options.focusOnSelect === !0 && a(b.$slideTrack).children().off("click.slick", b.selectHandler),
        a(window).off("orientationchange.slick.slick-" + b.instanceUid, b.orientationChange),
        a(window).off("resize.slick.slick-" + b.instanceUid, b.resize),
        a("[draggable!=true]", b.$slideTrack).off("dragstart", b.preventDefault),
        a(window).off("load.slick.slick-" + b.instanceUid, b.setPosition),
        a(document).off("ready.slick.slick-" + b.instanceUid, b.setPosition)
    }
    ,
    b.prototype.cleanUpSlideEvents = function() {
        var b = this;
        b.$list.off("mouseenter.slick", a.proxy(b.interrupt, b, !0)),
        b.$list.off("mouseleave.slick", a.proxy(b.interrupt, b, !1))
    }
    ,
    b.prototype.cleanUpRows = function() {
        var b, a = this;
        a.options.rows > 1 && (b = a.$slides.children().children(),
        b.removeAttr("style"),
        a.$slider.empty().append(b))
    }
    ,
    b.prototype.clickHandler = function(a) {
        var b = this;
        b.shouldClick === !1 && (a.stopImmediatePropagation(),
        a.stopPropagation(),
        a.preventDefault())
    }
    ,
    b.prototype.destroy = function(b) {
        var c = this;
        c.autoPlayClear(),
        c.touchObject = {},
        c.cleanUpEvents(),
        a(".slick-cloned", c.$slider).detach(),
        c.$dots && c.$dots.remove(),
        c.$prevArrow && c.$prevArrow.length && (c.$prevArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display", ""),
        c.htmlExpr.test(c.options.prevArrow) && c.$prevArrow.remove()),
        c.$nextArrow && c.$nextArrow.length && (c.$nextArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display", ""),
        c.htmlExpr.test(c.options.nextArrow) && c.$nextArrow.remove()),
        c.$slides && (c.$slides.removeClass("slick-slide slick-active slick-center slick-visible slick-current").removeAttr("aria-hidden").removeAttr("data-slick-index").each(function() {
            a(this).attr("style", a(this).data("originalStyling"))
        }),
        c.$slideTrack.children(this.options.slide).detach(),
        c.$slideTrack.detach(),
        c.$list.detach(),
        c.$slider.append(c.$slides)),
        c.cleanUpRows(),
        c.$slider.removeClass("slick-slider"),
        c.$slider.removeClass("slick-initialized"),
        c.$slider.removeClass("slick-dotted"),
        c.unslicked = !0,
        b || c.$slider.trigger("destroy", [c])
    }
    ,
    b.prototype.disableTransition = function(a) {
        var b = this
          , c = {};
        c[b.transitionType] = "",
        b.options.fade === !1 ? b.$slideTrack.css(c) : b.$slides.eq(a).css(c)
    }
    ,
    b.prototype.fadeSlide = function(a, b) {
        var c = this;
        c.cssTransitions === !1 ? (c.$slides.eq(a).css({
            zIndex: c.options.zIndex
        }),
        c.$slides.eq(a).animate({
            opacity: 1
        }, c.options.speed, c.options.easing, b)) : (c.applyTransition(a),
        c.$slides.eq(a).css({
            opacity: 1,
            zIndex: c.options.zIndex
        }),
        b && setTimeout(function() {
            c.disableTransition(a),
            b.call()
        }, c.options.speed))
    }
    ,
    b.prototype.fadeSlideOut = function(a) {
        var b = this;
        b.cssTransitions === !1 ? b.$slides.eq(a).animate({
            opacity: 0,
            zIndex: b.options.zIndex - 2
        }, b.options.speed, b.options.easing) : (b.applyTransition(a),
        b.$slides.eq(a).css({
            opacity: 0,
            zIndex: b.options.zIndex - 2
        }))
    }
    ,
    b.prototype.filterSlides = b.prototype.slickFilter = function(a) {
        var b = this;
        null !== a && (b.$slidesCache = b.$slides,
        b.unload(),
        b.$slideTrack.children(this.options.slide).detach(),
        b.$slidesCache.filter(a).appendTo(b.$slideTrack),
        b.reinit())
    }
    ,
    b.prototype.focusHandler = function() {
        var b = this;
        b.$slider.off("focus.slick blur.slick").on("focus.slick blur.slick", "*:not(.slick-arrow)", function(c) {
            c.stopImmediatePropagation();
            var d = a(this);
            setTimeout(function() {
                b.options.pauseOnFocus && (b.focussed = d.is(":focus"),
                b.autoPlay())
            }, 0)
        })
    }
    ,
    b.prototype.getCurrent = b.prototype.slickCurrentSlide = function() {
        var a = this;
        return a.currentSlide
    }
    ,
    b.prototype.getDotCount = function() {
        var a = this
          , b = 0
          , c = 0
          , d = 0;
        if (a.options.infinite === !0)
            for (; b < a.slideCount; )
                ++d,
                b = c + a.options.slidesToScroll,
                c += a.options.slidesToScroll <= a.options.slidesToShow ? a.options.slidesToScroll : a.options.slidesToShow;
        else if (a.options.centerMode === !0)
            d = a.slideCount;
        else if (a.options.asNavFor)
            for (; b < a.slideCount; )
                ++d,
                b = c + a.options.slidesToScroll,
                c += a.options.slidesToScroll <= a.options.slidesToShow ? a.options.slidesToScroll : a.options.slidesToShow;
        else
            d = 1 + Math.ceil((a.slideCount - a.options.slidesToShow) / a.options.slidesToScroll);
        return d - 1
    }
    ,
    b.prototype.getLeft = function(a) {
        var c, d, f, b = this, e = 0;
        return b.slideOffset = 0,
        d = b.$slides.first().outerHeight(!0),
        b.options.infinite === !0 ? (b.slideCount > b.options.slidesToShow && (b.slideOffset = b.slideWidth * b.options.slidesToShow * -1,
        e = d * b.options.slidesToShow * -1),
        b.slideCount % b.options.slidesToScroll !== 0 && a + b.options.slidesToScroll > b.slideCount && b.slideCount > b.options.slidesToShow && (a > b.slideCount ? (b.slideOffset = (b.options.slidesToShow - (a - b.slideCount)) * b.slideWidth * -1,
        e = (b.options.slidesToShow - (a - b.slideCount)) * d * -1) : (b.slideOffset = b.slideCount % b.options.slidesToScroll * b.slideWidth * -1,
        e = b.slideCount % b.options.slidesToScroll * d * -1))) : a + b.options.slidesToShow > b.slideCount && (b.slideOffset = (a + b.options.slidesToShow - b.slideCount) * b.slideWidth,
        e = (a + b.options.slidesToShow - b.slideCount) * d),
        b.slideCount <= b.options.slidesToShow && (b.slideOffset = 0,
        e = 0),
        b.options.centerMode === !0 && b.options.infinite === !0 ? b.slideOffset += b.slideWidth * Math.floor(b.options.slidesToShow / 2) - b.slideWidth : b.options.centerMode === !0 && (b.slideOffset = 0,
        b.slideOffset += b.slideWidth * Math.floor(b.options.slidesToShow / 2)),
        c = b.options.vertical === !1 ? a * b.slideWidth * -1 + b.slideOffset : a * d * -1 + e,
        b.options.variableWidth === !0 && (f = b.slideCount <= b.options.slidesToShow || b.options.infinite === !1 ? b.$slideTrack.children(".slick-slide").eq(a) : b.$slideTrack.children(".slick-slide").eq(a + b.options.slidesToShow),
        c = b.options.rtl === !0 ? f[0] ? -1 * (b.$slideTrack.width() - f[0].offsetLeft - f.width()) : 0 : f[0] ? -1 * f[0].offsetLeft : 0,
        b.options.centerMode === !0 && (f = b.slideCount <= b.options.slidesToShow || b.options.infinite === !1 ? b.$slideTrack.children(".slick-slide").eq(a) : b.$slideTrack.children(".slick-slide").eq(a + b.options.slidesToShow + 1),
        c = b.options.rtl === !0 ? f[0] ? -1 * (b.$slideTrack.width() - f[0].offsetLeft - f.width()) : 0 : f[0] ? -1 * f[0].offsetLeft : 0,
        c += (b.$list.width() - f.outerWidth()) / 2)),
        c
    }
    ,
    b.prototype.getOption = b.prototype.slickGetOption = function(a) {
        var b = this;
        return b.options[a]
    }
    ,
    b.prototype.getNavigableIndexes = function() {
        var e, a = this, b = 0, c = 0, d = [];
        for (a.options.infinite === !1 ? e = a.slideCount : (b = -1 * a.options.slidesToScroll,
        c = -1 * a.options.slidesToScroll,
        e = 2 * a.slideCount); e > b; )
            d.push(b),
            b = c + a.options.slidesToScroll,
            c += a.options.slidesToScroll <= a.options.slidesToShow ? a.options.slidesToScroll : a.options.slidesToShow;
        return d
    }
    ,
    b.prototype.getSlick = function() {
        return this
    }
    ,
    b.prototype.getSlideCount = function() {
        var c, d, e, b = this;
        return e = b.options.centerMode === !0 ? b.slideWidth * Math.floor(b.options.slidesToShow / 2) : 0,
        b.options.swipeToSlide === !0 ? (b.$slideTrack.find(".slick-slide").each(function(c, f) {
            return f.offsetLeft - e + a(f).outerWidth() / 2 > -1 * b.swipeLeft ? (d = f,
            !1) : void 0
        }),
        c = Math.abs(a(d).attr("data-slick-index") - b.currentSlide) || 1) : b.options.slidesToScroll
    }
    ,
    b.prototype.goTo = b.prototype.slickGoTo = function(a, b) {
        var c = this;
        c.changeSlide({
            data: {
                message: "index",
                index: parseInt(a)
            }
        }, b)
    }
    ,
    b.prototype.init = function(b) {
        var c = this;
        a(c.$slider).hasClass("slick-initialized") || (a(c.$slider).addClass("slick-initialized"),
        c.buildRows(),
        c.buildOut(),
        c.setProps(),
        c.startLoad(),
        c.loadSlider(),
        c.initializeEvents(),
        c.updateArrows(),
        c.updateDots(),
        c.checkResponsive(!0),
        c.focusHandler()),
        b && c.$slider.trigger("init", [c]),
        c.options.accessibility === !0 && c.initADA(),
        c.options.autoplay && (c.paused = !1,
        c.autoPlay())
    }
    ,
    b.prototype.initADA = function() {
        var b = this;
        b.$slides.add(b.$slideTrack.find(".slick-cloned")).attr({
            "aria-hidden": "true",
            tabindex: "-1"
        }).find("a, input, button, select").attr({
            tabindex: "-1"
        }),
        b.$slideTrack.attr("role", "listbox"),
        b.$slides.not(b.$slideTrack.find(".slick-cloned")).each(function(c) {
            a(this).attr({
                role: "option",
                "aria-describedby": "slick-slide" + b.instanceUid + c
            })
        }),
        null !== b.$dots && b.$dots.attr("role", "tablist").find("li").each(function(c) {
            a(this).attr({
                role: "presentation",
                "aria-selected": "false",
                "aria-controls": "navigation" + b.instanceUid + c,
                id: "slick-slide" + b.instanceUid + c
            })
        }).first().attr("aria-selected", "true").end().find("button").attr("role", "button").end().closest("div").attr("role", "toolbar"),
        b.activateADA()
    }
    ,
    b.prototype.initArrowEvents = function() {
        var a = this;
        a.options.arrows === !0 && a.slideCount > a.options.slidesToShow && (a.$prevArrow.off("click.slick").on("click.slick", {
            message: "previous"
        }, a.changeSlide),
        a.$nextArrow.off("click.slick").on("click.slick", {
            message: "next"
        }, a.changeSlide))
    }
    ,
    b.prototype.initDotEvents = function() {
        var b = this;
        b.options.dots === !0 && b.slideCount > b.options.slidesToShow && a("li", b.$dots).on("click.slick", {
            message: "index"
        }, b.changeSlide),
        b.options.dots === !0 && b.options.pauseOnDotsHover === !0 && a("li", b.$dots).on("mouseenter.slick", a.proxy(b.interrupt, b, !0)).on("mouseleave.slick", a.proxy(b.interrupt, b, !1))
    }
    ,
    b.prototype.initSlideEvents = function() {
        var b = this;
        b.options.pauseOnHover && (b.$list.on("mouseenter.slick", a.proxy(b.interrupt, b, !0)),
        b.$list.on("mouseleave.slick", a.proxy(b.interrupt, b, !1)))
    }
    ,
    b.prototype.initializeEvents = function() {
        var b = this;
        b.initArrowEvents(),
        b.initDotEvents(),
        b.initSlideEvents(),
        b.$list.on("touchstart.slick mousedown.slick", {
            action: "start"
        }, b.swipeHandler),
        b.$list.on("touchmove.slick mousemove.slick", {
            action: "move"
        }, b.swipeHandler),
        b.$list.on("touchend.slick mouseup.slick", {
            action: "end"
        }, b.swipeHandler),
        b.$list.on("touchcancel.slick mouseleave.slick", {
            action: "end"
        }, b.swipeHandler),
        b.$list.on("click.slick", b.clickHandler),
        a(document).on(b.visibilityChange, a.proxy(b.visibility, b)),
        b.options.accessibility === !0 && b.$list.on("keydown.slick", b.keyHandler),
        b.options.focusOnSelect === !0 && a(b.$slideTrack).children().on("click.slick", b.selectHandler),
        a(window).on("orientationchange.slick.slick-" + b.instanceUid, a.proxy(b.orientationChange, b)),
        a(window).on("resize.slick.slick-" + b.instanceUid, a.proxy(b.resize, b)),
        a("[draggable!=true]", b.$slideTrack).on("dragstart", b.preventDefault),
        a(window).on("load.slick.slick-" + b.instanceUid, b.setPosition),
        a(document).on("ready.slick.slick-" + b.instanceUid, b.setPosition)
    }
    ,
    b.prototype.initUI = function() {
        var a = this;
        a.options.arrows === !0 && a.slideCount > a.options.slidesToShow && (a.$prevArrow.show(),
        a.$nextArrow.show()),
        a.options.dots === !0 && a.slideCount > a.options.slidesToShow && a.$dots.show()
    }
    ,
    b.prototype.keyHandler = function(a) {
        var b = this;
        a.target.tagName.match("TEXTAREA|INPUT|SELECT") || (37 === a.keyCode && b.options.accessibility === !0 ? b.changeSlide({
            data: {
                message: b.options.rtl === !0 ? "next" : "previous"
            }
        }) : 39 === a.keyCode && b.options.accessibility === !0 && b.changeSlide({
            data: {
                message: b.options.rtl === !0 ? "previous" : "next"
            }
        }))
    }
    ,
    b.prototype.lazyLoad = function() {
        function g(c) {
            a("img[data-lazy]", c).each(function() {
                var c = a(this)
                  , d = a(this).attr("data-lazy")
                  , e = document.createElement("img");
                e.onload = function() {
                    c.animate({
                        opacity: 0
                    }, 100, function() {
                        c.attr("src", d).animate({
                            opacity: 1
                        }, 200, function() {
                            c.removeAttr("data-lazy").removeClass("slick-loading")
                        }),
                        b.$slider.trigger("lazyLoaded", [b, c, d])
                    })
                }
                ,
                e.onerror = function() {
                    c.removeAttr("data-lazy").removeClass("slick-loading").addClass("slick-lazyload-error"),
                    b.$slider.trigger("lazyLoadError", [b, c, d])
                }
                ,
                e.src = d
            })
        }
        var c, d, e, f, b = this;
        b.options.centerMode === !0 ? b.options.infinite === !0 ? (e = b.currentSlide + (b.options.slidesToShow / 2 + 1),
        f = e + b.options.slidesToShow + 2) : (e = Math.max(0, b.currentSlide - (b.options.slidesToShow / 2 + 1)),
        f = 2 + (b.options.slidesToShow / 2 + 1) + b.currentSlide) : (e = b.options.infinite ? b.options.slidesToShow + b.currentSlide : b.currentSlide,
        f = Math.ceil(e + b.options.slidesToShow),
        b.options.fade === !0 && (e > 0 && e--,
        f <= b.slideCount && f++)),
        c = b.$slider.find(".slick-slide").slice(e, f),
        g(c),
        b.slideCount <= b.options.slidesToShow ? (d = b.$slider.find(".slick-slide"),
        g(d)) : b.currentSlide >= b.slideCount - b.options.slidesToShow ? (d = b.$slider.find(".slick-cloned").slice(0, b.options.slidesToShow),
        g(d)) : 0 === b.currentSlide && (d = b.$slider.find(".slick-cloned").slice(-1 * b.options.slidesToShow),
        g(d))
    }
    ,
    b.prototype.loadSlider = function() {
        var a = this;
        a.setPosition(),
        a.$slideTrack.css({
            opacity: 1
        }),
        a.$slider.removeClass("slick-loading"),
        a.initUI(),
        "progressive" === a.options.lazyLoad && a.progressiveLazyLoad()
    }
    ,
    b.prototype.next = b.prototype.slickNext = function() {
        var a = this;
        a.changeSlide({
            data: {
                message: "next"
            }
        })
    }
    ,
    b.prototype.orientationChange = function() {
        var a = this;
        a.checkResponsive(),
        a.setPosition()
    }
    ,
    b.prototype.pause = b.prototype.slickPause = function() {
        var a = this;
        a.autoPlayClear(),
        a.paused = !0
    }
    ,
    b.prototype.play = b.prototype.slickPlay = function() {
        var a = this;
        a.autoPlay(),
        a.options.autoplay = !0,
        a.paused = !1,
        a.focussed = !1,
        a.interrupted = !1
    }
    ,
    b.prototype.postSlide = function(a) {
        var b = this;
        b.unslicked || (b.$slider.trigger("afterChange", [b, a]),
        b.animating = !1,
        b.setPosition(),
        b.swipeLeft = null,
        b.options.autoplay && b.autoPlay(),
        b.options.accessibility === !0 && b.initADA())
    }
    ,
    b.prototype.prev = b.prototype.slickPrev = function() {
        var a = this;
        a.changeSlide({
            data: {
                message: "previous"
            }
        })
    }
    ,
    b.prototype.preventDefault = function(a) {
        a.preventDefault()
    }
    ,
    b.prototype.progressiveLazyLoad = function(b) {
        b = b || 1;
        var e, f, g, c = this, d = a("img[data-lazy]", c.$slider);
        d.length ? (e = d.first(),
        f = e.attr("data-lazy"),
        g = document.createElement("img"),
        g.onload = function() {
            e.attr("src", f).removeAttr("data-lazy").removeClass("slick-loading"),
            c.options.adaptiveHeight === !0 && c.setPosition(),
            c.$slider.trigger("lazyLoaded", [c, e, f]),
            c.progressiveLazyLoad()
        }
        ,
        g.onerror = function() {
            3 > b ? setTimeout(function() {
                c.progressiveLazyLoad(b + 1)
            }, 500) : (e.removeAttr("data-lazy").removeClass("slick-loading").addClass("slick-lazyload-error"),
            c.$slider.trigger("lazyLoadError", [c, e, f]),
            c.progressiveLazyLoad())
        }
        ,
        g.src = f) : c.$slider.trigger("allImagesLoaded", [c])
    }
    ,
    b.prototype.refresh = function(b) {
        var d, e, c = this;
        e = c.slideCount - c.options.slidesToShow,
        !c.options.infinite && c.currentSlide > e && (c.currentSlide = e),
        c.slideCount <= c.options.slidesToShow && (c.currentSlide = 0),
        d = c.currentSlide,
        c.destroy(!0),
        a.extend(c, c.initials, {
            currentSlide: d
        }),
        c.init(),
        b || c.changeSlide({
            data: {
                message: "index",
                index: d
            }
        }, !1)
    }
    ,
    b.prototype.registerBreakpoints = function() {
        var c, d, e, b = this, f = b.options.responsive || null;
        if ("array" === a.type(f) && f.length) {
            b.respondTo = b.options.respondTo || "window";
            for (c in f)
                if (e = b.breakpoints.length - 1,
                d = f[c].breakpoint,
                f.hasOwnProperty(c)) {
                    for (; e >= 0; )
                        b.breakpoints[e] && b.breakpoints[e] === d && b.breakpoints.splice(e, 1),
                        e--;
                    b.breakpoints.push(d),
                    b.breakpointSettings[d] = f[c].settings
                }
            b.breakpoints.sort(function(a, c) {
                return b.options.mobileFirst ? a - c : c - a
            })
        }
    }
    ,
    b.prototype.reinit = function() {
        var b = this;
        b.$slides = b.$slideTrack.children(b.options.slide).addClass("slick-slide"),
        b.slideCount = b.$slides.length,
        b.currentSlide >= b.slideCount && 0 !== b.currentSlide && (b.currentSlide = b.currentSlide - b.options.slidesToScroll),
        b.slideCount <= b.options.slidesToShow && (b.currentSlide = 0),
        b.registerBreakpoints(),
        b.setProps(),
        b.setupInfinite(),
        b.buildArrows(),
        b.updateArrows(),
        b.initArrowEvents(),
        b.buildDots(),
        b.updateDots(),
        b.initDotEvents(),
        b.cleanUpSlideEvents(),
        b.initSlideEvents(),
        b.checkResponsive(!1, !0),
        b.options.focusOnSelect === !0 && a(b.$slideTrack).children().on("click.slick", b.selectHandler),
        b.setSlideClasses("number" == typeof b.currentSlide ? b.currentSlide : 0),
        b.setPosition(),
        b.focusHandler(),
        b.paused = !b.options.autoplay,
        b.autoPlay(),
        b.$slider.trigger("reInit", [b])
    }
    ,
    b.prototype.resize = function() {
        var b = this;
        a(window).width() !== b.windowWidth && (clearTimeout(b.windowDelay),
        b.windowDelay = window.setTimeout(function() {
            b.windowWidth = a(window).width(),
            b.checkResponsive(),
            b.unslicked || b.setPosition()
        }, 50))
    }
    ,
    b.prototype.removeSlide = b.prototype.slickRemove = function(a, b, c) {
        var d = this;
        return "boolean" == typeof a ? (b = a,
        a = b === !0 ? 0 : d.slideCount - 1) : a = b === !0 ? --a : a,
        d.slideCount < 1 || 0 > a || a > d.slideCount - 1 ? !1 : (d.unload(),
        c === !0 ? d.$slideTrack.children().remove() : d.$slideTrack.children(this.options.slide).eq(a).remove(),
        d.$slides = d.$slideTrack.children(this.options.slide),
        d.$slideTrack.children(this.options.slide).detach(),
        d.$slideTrack.append(d.$slides),
        d.$slidesCache = d.$slides,
        void d.reinit())
    }
    ,
    b.prototype.setCSS = function(a) {
        var d, e, b = this, c = {};
        b.options.rtl === !0 && (a = -a),
        d = "left" == b.positionProp ? Math.ceil(a) + "px" : "0px",
        e = "top" == b.positionProp ? Math.ceil(a) + "px" : "0px",
        c[b.positionProp] = a,
        b.transformsEnabled === !1 ? b.$slideTrack.css(c) : (c = {},
        b.cssTransitions === !1 ? (c[b.animType] = "translate(" + d + ", " + e + ")",
        b.$slideTrack.css(c)) : (c[b.animType] = "translate3d(" + d + ", " + e + ", 0px)",
        b.$slideTrack.css(c)))
    }
    ,
    b.prototype.setDimensions = function() {
        var a = this;
        a.options.vertical === !1 ? a.options.centerMode === !0 && a.$list.css({
            padding: "0px " + a.options.centerPadding
        }) : (a.$list.height(a.$slides.first().outerHeight(!0) * a.options.slidesToShow),
        a.options.centerMode === !0 && a.$list.css({
            padding: a.options.centerPadding + " 0px"
        })),
        a.listWidth = a.$list.width(),
        a.listHeight = a.$list.height(),
        a.options.vertical === !1 && a.options.variableWidth === !1 ? (a.slideWidth = Math.ceil(a.listWidth / a.options.slidesToShow),
        a.$slideTrack.width(Math.ceil(a.slideWidth * a.$slideTrack.children(".slick-slide").length))) : a.options.variableWidth === !0 ? a.$slideTrack.width(5e3 * a.slideCount) : (a.slideWidth = Math.ceil(a.listWidth),
        a.$slideTrack.height(Math.ceil(a.$slides.first().outerHeight(!0) * a.$slideTrack.children(".slick-slide").length)));
        var b = a.$slides.first().outerWidth(!0) - a.$slides.first().width();
        a.options.variableWidth === !1 && a.$slideTrack.children(".slick-slide").width(a.slideWidth - b)
    }
    ,
    b.prototype.setFade = function() {
        var c, b = this;
        b.$slides.each(function(d, e) {
            c = b.slideWidth * d * -1,
            b.options.rtl === !0 ? a(e).css({
                position: "relative",
                right: c,
                top: 0,
                zIndex: b.options.zIndex - 2,
                opacity: 0
            }) : a(e).css({
                position: "relative",
                left: c,
                top: 0,
                zIndex: b.options.zIndex - 2,
                opacity: 0
            })
        }),
        b.$slides.eq(b.currentSlide).css({
            zIndex: b.options.zIndex - 1,
            opacity: 1
        })
    }
    ,
    b.prototype.setHeight = function() {
        var a = this;
        if (1 === a.options.slidesToShow && a.options.adaptiveHeight === !0 && a.options.vertical === !1) {
            var b = a.$slides.eq(a.currentSlide).outerHeight(!0);
            a.$list.css("height", b)
        }
    }
    ,
    b.prototype.setOption = b.prototype.slickSetOption = function() {
        var c, d, e, f, h, b = this, g = !1;
        if ("object" === a.type(arguments[0]) ? (e = arguments[0],
        g = arguments[1],
        h = "multiple") : "string" === a.type(arguments[0]) && (e = arguments[0],
        f = arguments[1],
        g = arguments[2],
        "responsive" === arguments[0] && "array" === a.type(arguments[1]) ? h = "responsive" : "undefined" != typeof arguments[1] && (h = "single")),
        "single" === h)
            b.options[e] = f;
        else if ("multiple" === h)
            a.each(e, function(a, c) {
                b.options[a] = c
            });
        else if ("responsive" === h)
            for (d in f)
                if ("array" !== a.type(b.options.responsive))
                    b.options.responsive = [f[d]];
                else {
                    for (c = b.options.responsive.length - 1; c >= 0; )
                        b.options.responsive[c].breakpoint === f[d].breakpoint && b.options.responsive.splice(c, 1),
                        c--;
                    b.options.responsive.push(f[d])
                }
        g && (b.unload(),
        b.reinit())
    }
    ,
    b.prototype.setPosition = function() {
        var a = this;
        a.setDimensions(),
        a.setHeight(),
        a.options.fade === !1 ? a.setCSS(a.getLeft(a.currentSlide)) : a.setFade(),
        a.$slider.trigger("setPosition", [a])
    }
    ,
    b.prototype.setProps = function() {
        var a = this
          , b = document.body.style;
        a.positionProp = a.options.vertical === !0 ? "top" : "left",
        "top" === a.positionProp ? a.$slider.addClass("slick-vertical") : a.$slider.removeClass("slick-vertical"),
        (void 0 !== b.WebkitTransition || void 0 !== b.MozTransition || void 0 !== b.msTransition) && a.options.useCSS === !0 && (a.cssTransitions = !0),
        a.options.fade && ("number" == typeof a.options.zIndex ? a.options.zIndex < 3 && (a.options.zIndex = 3) : a.options.zIndex = a.defaults.zIndex),
        void 0 !== b.OTransform && (a.animType = "OTransform",
        a.transformType = "-o-transform",
        a.transitionType = "OTransition",
        void 0 === b.perspectiveProperty && void 0 === b.webkitPerspective && (a.animType = !1)),
        void 0 !== b.MozTransform && (a.animType = "MozTransform",
        a.transformType = "-moz-transform",
        a.transitionType = "MozTransition",
        void 0 === b.perspectiveProperty && void 0 === b.MozPerspective && (a.animType = !1)),
        void 0 !== b.webkitTransform && (a.animType = "webkitTransform",
        a.transformType = "-webkit-transform",
        a.transitionType = "webkitTransition",
        void 0 === b.perspectiveProperty && void 0 === b.webkitPerspective && (a.animType = !1)),
        void 0 !== b.msTransform && (a.animType = "msTransform",
        a.transformType = "-ms-transform",
        a.transitionType = "msTransition",
        void 0 === b.msTransform && (a.animType = !1)),
        void 0 !== b.transform && a.animType !== !1 && (a.animType = "transform",
        a.transformType = "transform",
        a.transitionType = "transition"),
        a.transformsEnabled = a.options.useTransform && null !== a.animType && a.animType !== !1
    }
    ,
    b.prototype.setSlideClasses = function(a) {
        var c, d, e, f, b = this;
        d = b.$slider.find(".slick-slide").removeClass("slick-active slick-center slick-current").attr("aria-hidden", "true"),
        b.$slides.eq(a).addClass("slick-current"),
        b.options.centerMode === !0 ? (c = Math.floor(b.options.slidesToShow / 2),
        b.options.infinite === !0 && (a >= c && a <= b.slideCount - 1 - c ? b.$slides.slice(a - c, a + c + 1).addClass("slick-active").attr("aria-hidden", "false") : (e = b.options.slidesToShow + a,
        d.slice(e - c + 1, e + c + 2).addClass("slick-active").attr("aria-hidden", "false")),
        0 === a ? d.eq(d.length - 1 - b.options.slidesToShow).addClass("slick-center") : a === b.slideCount - 1 && d.eq(b.options.slidesToShow).addClass("slick-center")),
        b.$slides.eq(a).addClass("slick-center")) : a >= 0 && a <= b.slideCount - b.options.slidesToShow ? b.$slides.slice(a, a + b.options.slidesToShow).addClass("slick-active").attr("aria-hidden", "false") : d.length <= b.options.slidesToShow ? d.addClass("slick-active").attr("aria-hidden", "false") : (f = b.slideCount % b.options.slidesToShow,
        e = b.options.infinite === !0 ? b.options.slidesToShow + a : a,
        b.options.slidesToShow == b.options.slidesToScroll && b.slideCount - a < b.options.slidesToShow ? d.slice(e - (b.options.slidesToShow - f), e + f).addClass("slick-active").attr("aria-hidden", "false") : d.slice(e, e + b.options.slidesToShow).addClass("slick-active").attr("aria-hidden", "false")),
        "ondemand" === b.options.lazyLoad && b.lazyLoad()
    }
    ,
    b.prototype.setupInfinite = function() {
        var c, d, e, b = this;
        if (b.options.fade === !0 && (b.options.centerMode = !1),
        b.options.infinite === !0 && b.options.fade === !1 && (d = null,
        b.slideCount > b.options.slidesToShow)) {
            for (e = b.options.centerMode === !0 ? b.options.slidesToShow + 1 : b.options.slidesToShow,
            c = b.slideCount; c > b.slideCount - e; c -= 1)
                d = c - 1,
                a(b.$slides[d]).clone(!0).attr("id", "").attr("data-slick-index", d - b.slideCount).prependTo(b.$slideTrack).addClass("slick-cloned");
            for (c = 0; e > c; c += 1)
                d = c,
                a(b.$slides[d]).clone(!0).attr("id", "").attr("data-slick-index", d + b.slideCount).appendTo(b.$slideTrack).addClass("slick-cloned");
            b.$slideTrack.find(".slick-cloned").find("[id]").each(function() {
                a(this).attr("id", "")
            })
        }
    }
    ,
    b.prototype.interrupt = function(a) {
        var b = this;
        a || b.autoPlay(),
        b.interrupted = a
    }
    ,
    b.prototype.selectHandler = function(b) {
        var c = this
          , d = a(b.target).is(".slick-slide") ? a(b.target) : a(b.target).parents(".slick-slide")
          , e = parseInt(d.attr("data-slick-index"));
        return e || (e = 0),
        c.slideCount <= c.options.slidesToShow ? (c.setSlideClasses(e),
        void c.asNavFor(e)) : void c.slideHandler(e)
    }
    ,
    b.prototype.slideHandler = function(a, b, c) {
        var d, e, f, g, j, h = null, i = this;
        return b = b || !1,
        i.animating === !0 && i.options.waitForAnimate === !0 || i.options.fade === !0 && i.currentSlide === a || i.slideCount <= i.options.slidesToShow ? void 0 : (b === !1 && i.asNavFor(a),
        d = a,
        h = i.getLeft(d),
        g = i.getLeft(i.currentSlide),
        i.currentLeft = null === i.swipeLeft ? g : i.swipeLeft,
        i.options.infinite === !1 && i.options.centerMode === !1 && (0 > a || a > i.getDotCount() * i.options.slidesToScroll) ? void (i.options.fade === !1 && (d = i.currentSlide,
        c !== !0 ? i.animateSlide(g, function() {
            i.postSlide(d)
        }) : i.postSlide(d))) : i.options.infinite === !1 && i.options.centerMode === !0 && (0 > a || a > i.slideCount - i.options.slidesToScroll) ? void (i.options.fade === !1 && (d = i.currentSlide,
        c !== !0 ? i.animateSlide(g, function() {
            i.postSlide(d)
        }) : i.postSlide(d))) : (i.options.autoplay && clearInterval(i.autoPlayTimer),
        e = 0 > d ? i.slideCount % i.options.slidesToScroll !== 0 ? i.slideCount - i.slideCount % i.options.slidesToScroll : i.slideCount + d : d >= i.slideCount ? i.slideCount % i.options.slidesToScroll !== 0 ? 0 : d - i.slideCount : d,
        i.animating = !0,
        i.$slider.trigger("beforeChange", [i, i.currentSlide, e]),
        f = i.currentSlide,
        i.currentSlide = e,
        i.setSlideClasses(i.currentSlide),
        i.options.asNavFor && (j = i.getNavTarget(),
        j = j.slick("getSlick"),
        j.slideCount <= j.options.slidesToShow && j.setSlideClasses(i.currentSlide)),
        i.updateDots(),
        i.updateArrows(),
        i.options.fade === !0 ? (c !== !0 ? (i.fadeSlideOut(f),
        i.fadeSlide(e, function() {
            i.postSlide(e)
        })) : i.postSlide(e),
        void i.animateHeight()) : void (c !== !0 ? i.animateSlide(h, function() {
            i.postSlide(e)
        }) : i.postSlide(e))))
    }
    ,
    b.prototype.startLoad = function() {
        var a = this;
        a.options.arrows === !0 && a.slideCount > a.options.slidesToShow && (a.$prevArrow.hide(),
        a.$nextArrow.hide()),
        a.options.dots === !0 && a.slideCount > a.options.slidesToShow && a.$dots.hide(),
        a.$slider.addClass("slick-loading")
    }
    ,
    b.prototype.swipeDirection = function() {
        var a, b, c, d, e = this;
        return a = e.touchObject.startX - e.touchObject.curX,
        b = e.touchObject.startY - e.touchObject.curY,
        c = Math.atan2(b, a),
        d = Math.round(180 * c / Math.PI),
        0 > d && (d = 360 - Math.abs(d)),
        45 >= d && d >= 0 ? e.options.rtl === !1 ? "left" : "right" : 360 >= d && d >= 315 ? e.options.rtl === !1 ? "left" : "right" : d >= 135 && 225 >= d ? e.options.rtl === !1 ? "right" : "left" : e.options.verticalSwiping === !0 ? d >= 35 && 135 >= d ? "down" : "up" : "vertical"
    }
    ,
    b.prototype.swipeEnd = function(a) {
        var c, d, b = this;
        if (b.dragging = !1,
        b.interrupted = !1,
        b.shouldClick = b.touchObject.swipeLength > 10 ? !1 : !0,
        void 0 === b.touchObject.curX)
            return !1;
        if (b.touchObject.edgeHit === !0 && b.$slider.trigger("edge", [b, b.swipeDirection()]),
        b.touchObject.swipeLength >= b.touchObject.minSwipe) {
            switch (d = b.swipeDirection()) {
            case "left":
            case "down":
                c = b.options.swipeToSlide ? b.checkNavigable(b.currentSlide + b.getSlideCount()) : b.currentSlide + b.getSlideCount(),
                b.currentDirection = 0;
                break;
            case "right":
            case "up":
                c = b.options.swipeToSlide ? b.checkNavigable(b.currentSlide - b.getSlideCount()) : b.currentSlide - b.getSlideCount(),
                b.currentDirection = 1
            }
            "vertical" != d && (b.slideHandler(c),
            b.touchObject = {},
            b.$slider.trigger("swipe", [b, d]))
        } else
            b.touchObject.startX !== b.touchObject.curX && (b.slideHandler(b.currentSlide),
            b.touchObject = {})
    }
    ,
    b.prototype.swipeHandler = function(a) {
        var b = this;
        if (!(b.options.swipe === !1 || "ontouchend"in document && b.options.swipe === !1 || b.options.draggable === !1 && -1 !== a.type.indexOf("mouse")))
            switch (b.touchObject.fingerCount = a.originalEvent && void 0 !== a.originalEvent.touches ? a.originalEvent.touches.length : 1,
            b.touchObject.minSwipe = b.listWidth / b.options.touchThreshold,
            b.options.verticalSwiping === !0 && (b.touchObject.minSwipe = b.listHeight / b.options.touchThreshold),
            a.data.action) {
            case "start":
                b.swipeStart(a);
                break;
            case "move":
                b.swipeMove(a);
                break;
            case "end":
                b.swipeEnd(a)
            }
    }
    ,
    b.prototype.swipeMove = function(a) {
        var d, e, f, g, h, b = this;
        return h = void 0 !== a.originalEvent ? a.originalEvent.touches : null,
        !b.dragging || h && 1 !== h.length ? !1 : (d = b.getLeft(b.currentSlide),
        b.touchObject.curX = void 0 !== h ? h[0].pageX : a.clientX,
        b.touchObject.curY = void 0 !== h ? h[0].pageY : a.clientY,
        b.touchObject.swipeLength = Math.round(Math.sqrt(Math.pow(b.touchObject.curX - b.touchObject.startX, 2))),
        b.options.verticalSwiping === !0 && (b.touchObject.swipeLength = Math.round(Math.sqrt(Math.pow(b.touchObject.curY - b.touchObject.startY, 2)))),
        e = b.swipeDirection(),
        "vertical" !== e ? (void 0 !== a.originalEvent && b.touchObject.swipeLength > 4 && a.preventDefault(),
        g = (b.options.rtl === !1 ? 1 : -1) * (b.touchObject.curX > b.touchObject.startX ? 1 : -1),
        b.options.verticalSwiping === !0 && (g = b.touchObject.curY > b.touchObject.startY ? 1 : -1),
        f = b.touchObject.swipeLength,
        b.touchObject.edgeHit = !1,
        b.options.infinite === !1 && (0 === b.currentSlide && "right" === e || b.currentSlide >= b.getDotCount() && "left" === e) && (f = b.touchObject.swipeLength * b.options.edgeFriction,
        b.touchObject.edgeHit = !0),
        b.options.vertical === !1 ? b.swipeLeft = d + f * g : b.swipeLeft = d + f * (b.$list.height() / b.listWidth) * g,
        b.options.verticalSwiping === !0 && (b.swipeLeft = d + f * g),
        b.options.fade === !0 || b.options.touchMove === !1 ? !1 : b.animating === !0 ? (b.swipeLeft = null,
        !1) : void b.setCSS(b.swipeLeft)) : void 0)
    }
    ,
    b.prototype.swipeStart = function(a) {
        var c, b = this;
        return b.interrupted = !0,
        1 !== b.touchObject.fingerCount || b.slideCount <= b.options.slidesToShow ? (b.touchObject = {},
        !1) : (void 0 !== a.originalEvent && void 0 !== a.originalEvent.touches && (c = a.originalEvent.touches[0]),
        b.touchObject.startX = b.touchObject.curX = void 0 !== c ? c.pageX : a.clientX,
        b.touchObject.startY = b.touchObject.curY = void 0 !== c ? c.pageY : a.clientY,
        void (b.dragging = !0))
    }
    ,
    b.prototype.unfilterSlides = b.prototype.slickUnfilter = function() {
        var a = this;
        null !== a.$slidesCache && (a.unload(),
        a.$slideTrack.children(this.options.slide).detach(),
        a.$slidesCache.appendTo(a.$slideTrack),
        a.reinit())
    }
    ,
    b.prototype.unload = function() {
        var b = this;
        a(".slick-cloned", b.$slider).remove(),
        b.$dots && b.$dots.remove(),
        b.$prevArrow && b.htmlExpr.test(b.options.prevArrow) && b.$prevArrow.remove(),
        b.$nextArrow && b.htmlExpr.test(b.options.nextArrow) && b.$nextArrow.remove(),
        b.$slides.removeClass("slick-slide slick-active slick-visible slick-current").attr("aria-hidden", "true").css("width", "")
    }
    ,
    b.prototype.unslick = function(a) {
        var b = this;
        b.$slider.trigger("unslick", [b, a]),
        b.destroy()
    }
    ,
    b.prototype.updateArrows = function() {
        var b, a = this;
        b = Math.floor(a.options.slidesToShow / 2),
        a.options.arrows === !0 && a.slideCount > a.options.slidesToShow && !a.options.infinite && (a.$prevArrow.removeClass("slick-disabled").attr("aria-disabled", "false"),
        a.$nextArrow.removeClass("slick-disabled").attr("aria-disabled", "false"),
        0 === a.currentSlide ? (a.$prevArrow.addClass("slick-disabled").attr("aria-disabled", "true"),
        a.$nextArrow.removeClass("slick-disabled").attr("aria-disabled", "false")) : a.currentSlide >= a.slideCount - a.options.slidesToShow && a.options.centerMode === !1 ? (a.$nextArrow.addClass("slick-disabled").attr("aria-disabled", "true"),
        a.$prevArrow.removeClass("slick-disabled").attr("aria-disabled", "false")) : a.currentSlide >= a.slideCount - 1 && a.options.centerMode === !0 && (a.$nextArrow.addClass("slick-disabled").attr("aria-disabled", "true"),
        a.$prevArrow.removeClass("slick-disabled").attr("aria-disabled", "false")))
    }
    ,
    b.prototype.updateDots = function() {
        var a = this;
        null !== a.$dots && (a.$dots.find("li").removeClass("slick-active").attr("aria-hidden", "true"),
        a.$dots.find("li").eq(Math.floor(a.currentSlide / a.options.slidesToScroll)).addClass("slick-active").attr("aria-hidden", "false"))
    }
    ,
    b.prototype.visibility = function() {
        var a = this;
        a.options.autoplay && (document[a.hidden] ? a.interrupted = !0 : a.interrupted = !1)
    }
    ,
    a.fn.slick = function() {
        var f, g, a = this, c = arguments[0], d = Array.prototype.slice.call(arguments, 1), e = a.length;
        for (f = 0; e > f; f++)
            if ("object" == typeof c || "undefined" == typeof c ? a[f].slick = new b(a[f],c) : g = a[f].slick[c].apply(a[f].slick, d),
            "undefined" != typeof g)
                return g;
        return a
    }
});
/*! flatpickr v2.4.8, @license MIT */
function Flatpickr(e, t) {
    function n(e) {
        return e && e.bind ? e.bind(oe) : e
    }
    function a(e) {
        oe.config.noCalendar && !oe.selectedDates.length && (oe.selectedDates = [oe.now]),
        re(e),
        oe.selectedDates.length && (!oe.minDateHasTime || "input" !== e.type || e.target.value.length >= 2 ? (i(),
        G()) : setTimeout(function() {
            i(),
            G()
        }, 1e3))
    }
    function i() {
        if (oe.config.enableTime) {
            var e = (parseInt(oe.hourElement.value, 10) || 0) % (oe.amPM ? 12 : 24)
              , t = (parseInt(oe.minuteElement.value, 10) || 0) % 60
              , n = oe.config.enableSeconds ? parseInt(oe.secondElement.value, 10) || 0 : 0;
            oe.amPM && (e = e % 12 + 12 * ("PM" === oe.amPM.textContent)),
            oe.minDateHasTime && 0 === ie(oe.latestSelectedDateObj, oe.config.minDate) && (e = Math.max(e, oe.config.minDate.getHours())) === oe.config.minDate.getHours() && (t = Math.max(t, oe.config.minDate.getMinutes())),
            oe.maxDateHasTime && 0 === ie(oe.latestSelectedDateObj, oe.config.maxDate) && (e = Math.min(e, oe.config.maxDate.getHours())) === oe.config.maxDate.getHours() && (t = Math.min(t, oe.config.maxDate.getMinutes())),
            o(e, t, n)
        }
    }
    function r(e) {
        var t = e || oe.latestSelectedDateObj;
        t && o(t.getHours(), t.getMinutes(), t.getSeconds())
    }
    function o(e, t, n) {
        oe.selectedDates.length && oe.latestSelectedDateObj.setHours(e % 24, t, n || 0, 0),
        oe.config.enableTime && !oe.isMobile && (oe.hourElement.value = oe.pad(oe.config.time_24hr ? e : (12 + e) % 12 + 12 * (e % 12 == 0)),
        oe.minuteElement.value = oe.pad(t),
        oe.config.time_24hr || (oe.amPM.textContent = e >= 12 ? "PM" : "AM"),
        oe.config.enableSeconds && (oe.secondElement.value = oe.pad(n)))
    }
    function l(e) {
        var t = e.target.value;
        e.delta && (t = (parseInt(t) + e.delta).toString()),
        4 === t.length && (oe.currentYearElement.blur(),
        /[^\d]/.test(t) || T(t))
    }
    function c(e) {
        e.preventDefault(),
        oe.changeMonth(Math.max(-1, Math.min(1, e.wheelDelta || -e.deltaY)))
    }
    function s() {
        if (oe.config.wrap && ["open", "close", "toggle", "clear"].forEach(function(e) {
            for (var t = oe.element.querySelectorAll("[data-" + e + "]"), n = 0; n < t.length; n++)
                t[n].addEventListener("click", oe[e])
        }),
        void 0 !== window.document.createEvent && (oe.changeEvent = window.document.createEvent("HTMLEvents"),
        oe.changeEvent.initEvent("change", !1, !0)),
        oe.isMobile)
            return B();
        oe.debouncedResize = ae(N, 50),
        oe.triggerChange = function() {
            V("Change")
        }
        ,
        oe.debouncedChange = ae(oe.triggerChange, 300),
        "range" === oe.config.mode && oe.days && oe.days.addEventListener("mouseover", Y),
        oe.calendarContainer.addEventListener("keydown", I),
        oe.config.static || (oe.altInput || oe.input).addEventListener("keydown", I),
        oe.config.inline || oe.config.static || window.addEventListener("resize", oe.debouncedResize),
        window.ontouchstart && window.document.addEventListener("touchstart", x),
        window.document.addEventListener("click", x),
        (oe.altInput || oe.input).addEventListener("blur", x),
        oe.config.clickOpens && (oe.altInput || oe.input).addEventListener("focus", S),
        oe.config.noCalendar || (oe.prevMonthNav.addEventListener("click", function() {
            return y(-1)
        }),
        oe.nextMonthNav.addEventListener("click", function() {
            return y(1)
        }),
        oe.currentMonthElement.addEventListener("wheel", function(e) {
            return ae(c(e), 50)
        }),
        oe.currentYearElement.addEventListener("wheel", function(e) {
            return ae(X(e), 50)
        }),
        oe.currentYearElement.addEventListener("focus", function() {
            oe.currentYearElement.select()
        }),
        oe.currentYearElement.addEventListener("input", l),
        oe.currentYearElement.addEventListener("increment", l),
        oe.days.addEventListener("click", P)),
        oe.config.enableTime && (oe.timeContainer.addEventListener("transitionend", A),
        oe.timeContainer.addEventListener("wheel", function(e) {
            return ae(a(e), 5)
        }),
        oe.timeContainer.addEventListener("input", a),
        oe.timeContainer.addEventListener("increment", a),
        oe.timeContainer.addEventListener("increment", oe.debouncedChange),
        oe.timeContainer.addEventListener("wheel", oe.debouncedChange),
        oe.timeContainer.addEventListener("input", oe.triggerChange),
        oe.hourElement.addEventListener("focus", function() {
            oe.hourElement.select()
        }),
        oe.minuteElement.addEventListener("focus", function() {
            oe.minuteElement.select()
        }),
        oe.secondElement && oe.secondElement.addEventListener("focus", function() {
            oe.secondElement.select()
        }),
        oe.amPM && oe.amPM.addEventListener("click", function(e) {
            a(e),
            oe.triggerChange(e)
        }))
    }
    function u(e) {
        e = e ? oe.parseDate(e) : oe.latestSelectedDateObj || (oe.config.minDate > oe.now ? oe.config.minDate : oe.config.maxDate && oe.config.maxDate < oe.now ? oe.config.maxDate : oe.now);
        try {
            oe.currentYear = e.getFullYear(),
            oe.currentMonth = e.getMonth()
        } catch (t) {
            console.error(t.stack),
            console.warn("Invalid date supplied: " + e)
        }
        oe.redraw()
    }
    function d(e, t, n) {
        var a = n || e.target.parentNode.childNodes[0]
          , i = void 0;
        try {
            i = new Event("increment",{
                bubbles: !0
            })
        } catch (e) {
            i = window.document.createEvent("CustomEvent"),
            i.initCustomEvent("increment", !0, !0, {})
        }
        i.delta = t,
        a.dispatchEvent(i)
    }
    function f(e) {
        var t = ee("div", "numInputWrapper")
          , n = ee("input", "numInput " + e)
          , a = ee("span", "arrowUp")
          , i = ee("span", "arrowDown");
        return n.type = "text",
        n.pattern = "\\d*",
        t.appendChild(n),
        t.appendChild(a),
        t.appendChild(i),
        a.addEventListener("click", function(e) {
            return d(e, 1)
        }),
        i.addEventListener("click", function(e) {
            return d(e, -1)
        }),
        t
    }
    function p() {
        var e = window.document.createDocumentFragment();
        oe.calendarContainer = ee("div", "flatpickr-calendar"),
        oe.numInputType = navigator.userAgent.indexOf("MSIE 9.0") > 0 ? "text" : "number",
        oe.config.noCalendar || (e.appendChild(D()),
        oe.innerContainer = ee("div", "flatpickr-innerContainer"),
        oe.config.weekNumbers && oe.innerContainer.appendChild(b()),
        oe.rContainer = ee("div", "flatpickr-rContainer"),
        oe.rContainer.appendChild(w()),
        oe.days || (oe.days = ee("div", "flatpickr-days"),
        oe.days.tabIndex = -1),
        h(),
        oe.rContainer.appendChild(oe.days),
        oe.innerContainer.appendChild(oe.rContainer),
        e.appendChild(oe.innerContainer)),
        oe.config.enableTime && e.appendChild(v()),
        "range" === oe.config.mode && oe.calendarContainer.classList.add("rangeMode"),
        oe.calendarContainer.appendChild(e);
        var t = oe.config.appendTo && oe.config.appendTo.nodeType;
        if (oe.config.inline || oe.config.static) {
            if (oe.calendarContainer.classList.add(oe.config.inline ? "inline" : "static"),
            oe.config.inline && !t)
                return oe.element.parentNode.insertBefore(oe.calendarContainer, (oe.altInput || oe.input).nextSibling);
            if (oe.config.static) {
                var n = ee("div", "flatpickr-wrapper");
                return oe.element.parentNode.insertBefore(n, oe.element),
                n.appendChild(oe.element),
                oe.altInput && n.appendChild(oe.altInput),
                void n.appendChild(oe.calendarContainer)
            }
        }
        (t ? oe.config.appendTo : window.document.body).appendChild(oe.calendarContainer)
    }
    function g(e, t, n, a) {
        var i = F(t, !0)
          , r = ee("span", "flatpickr-day " + e, t.getDate());
        return r.dateObj = t,
        r.$i = a,
        r.setAttribute("aria-label", oe.formatDate(t, "F j, Y")),
        0 === ie(t, oe.now) && (oe.todayDateElem = r,
        r.classList.add("today")),
        i ? (r.tabIndex = -1,
        Z(t) && (r.classList.add("selected"),
        oe.selectedDateElem = r,
        "range" === oe.config.mode && (ne(r, "startRange", 0 === ie(t, oe.selectedDates[0])),
        ne(r, "endRange", 0 === ie(t, oe.selectedDates[1]))))) : (r.classList.add("disabled"),
        oe.selectedDates[0] && t > oe.minRangeDate && t < oe.selectedDates[0] ? oe.minRangeDate = t : oe.selectedDates[0] && t < oe.maxRangeDate && t > oe.selectedDates[0] && (oe.maxRangeDate = t)),
        "range" === oe.config.mode && (q(t) && !Z(t) && r.classList.add("inRange"),
        1 === oe.selectedDates.length && (t < oe.minRangeDate || t > oe.maxRangeDate) && r.classList.add("notAllowed")),
        oe.config.weekNumbers && "prevMonthDay" !== e && n % 7 == 1 && oe.weekNumbers.insertAdjacentHTML("beforeend", "<span class='disabled flatpickr-day'>" + oe.config.getWeek(t) + "</span>"),
        V("DayCreate", r),
        r
    }
    function m(e, t) {
        if (void 0 === e)
            return (oe.todayDateElem || oe.days.childNodes[0]).focus();
        var n = e + t || 0
          , a = oe.days.childNodes[n];
        a ? a.focus() : t > 0 ? (oe.changeMonth(1),
        oe.days.childNodes[n % 42].focus()) : (oe.changeMonth(-1),
        oe.days.childNodes[42 + n].focus())
    }
    function h(e, t) {
        var n = (new Date(oe.currentYear,oe.currentMonth,1).getDay() - oe.l10n.firstDayOfWeek + 7) % 7
          , a = "range" === oe.config.mode;
        oe.prevMonthDays = oe.utils.getDaysinMonth((oe.currentMonth - 1 + 12) % 12),
        oe.todayDateElem = null;
        var i = oe.utils.getDaysinMonth()
          , r = window.document.createDocumentFragment()
          , o = oe.prevMonthDays + 1 - n
          , l = 0;
        for (oe.config.weekNumbers && oe.weekNumbers.firstChild && (oe.weekNumbers.textContent = ""),
        a && (oe.minRangeDate = new Date(oe.currentYear,oe.currentMonth - 1,o),
        oe.maxRangeDate = new Date(oe.currentYear,oe.currentMonth + 1,(42 - n) % i)),
        oe.days.firstChild && (oe.days.textContent = ""); o <= oe.prevMonthDays; o++,
        l++)
            r.appendChild(g("prevMonthDay", new Date(oe.currentYear,oe.currentMonth - 1,o), o, l));
        for (o = 1; o <= i; o++,
        l++)
            r.appendChild(g("", new Date(oe.currentYear,oe.currentMonth,o), o, l));
        for (var c = i + 1; c <= 42 - n; c++,
        l++)
            r.appendChild(g("nextMonthDay", new Date(oe.currentYear,oe.currentMonth + 1,c % i), c, l));
        return a && 1 === oe.selectedDates.length && r.childNodes[0] ? (oe._hidePrevMonthArrow = oe._hidePrevMonthArrow || oe.minRangeDate > r.childNodes[0].dateObj,
        oe._hideNextMonthArrow = oe._hideNextMonthArrow || oe.maxRangeDate < new Date(oe.currentYear,oe.currentMonth + 1,1)) : Q(),
        oe.days.appendChild(r),
        oe.days
    }
    function D() {
        var e = window.document.createDocumentFragment();
        oe.monthNav = ee("div", "flatpickr-month"),
        oe.prevMonthNav = ee("span", "flatpickr-prev-month"),
        oe.prevMonthNav.innerHTML = oe.config.prevArrow,
        oe.currentMonthElement = ee("span", "cur-month"),
        oe.currentMonthElement.title = oe.l10n.scrollTitle;
        var t = f("cur-year");
        return oe.currentYearElement = t.childNodes[0],
        oe.currentYearElement.title = oe.l10n.scrollTitle,
        oe.config.minDate && (oe.currentYearElement.min = oe.config.minDate.getFullYear()),
        oe.config.maxDate && (oe.currentYearElement.max = oe.config.maxDate.getFullYear(),
        oe.currentYearElement.disabled = oe.config.minDate && oe.config.minDate.getFullYear() === oe.config.maxDate.getFullYear()),
        oe.nextMonthNav = ee("span", "flatpickr-next-month"),
        oe.nextMonthNav.innerHTML = oe.config.nextArrow,
        oe.navigationCurrentMonth = ee("span", "flatpickr-current-month"),
        oe.navigationCurrentMonth.appendChild(oe.currentMonthElement),
        oe.navigationCurrentMonth.appendChild(t),
        e.appendChild(oe.prevMonthNav),
        e.appendChild(oe.navigationCurrentMonth),
        e.appendChild(oe.nextMonthNav),
        oe.monthNav.appendChild(e),
        Object.defineProperty(oe, "_hidePrevMonthArrow", {
            get: function() {
                return this.__hidePrevMonthArrow
            },
            set: function(e) {
                this.__hidePrevMonthArrow !== e && (oe.prevMonthNav.style.display = e ? "none" : "block"),
                this.__hidePrevMonthArrow = e
            }
        }),
        Object.defineProperty(oe, "_hideNextMonthArrow", {
            get: function() {
                return this.__hideNextMonthArrow
            },
            set: function(e) {
                this.__hideNextMonthArrow !== e && (oe.nextMonthNav.style.display = e ? "none" : "block"),
                this.__hideNextMonthArrow = e
            }
        }),
        Q(),
        oe.monthNav
    }
    function v() {
        oe.calendarContainer.classList.add("hasTime"),
        oe.config.noCalendar && oe.calendarContainer.classList.add("noCalendar"),
        oe.timeContainer = ee("div", "flatpickr-time"),
        oe.timeContainer.tabIndex = -1;
        var e = ee("span", "flatpickr-time-separator", ":")
          , t = f("flatpickr-hour");
        oe.hourElement = t.childNodes[0];
        var n = f("flatpickr-minute");
        if (oe.minuteElement = n.childNodes[0],
        oe.hourElement.tabIndex = oe.minuteElement.tabIndex = -1,
        oe.hourElement.value = oe.pad(oe.latestSelectedDateObj ? oe.latestSelectedDateObj.getHours() : oe.config.defaultHour),
        oe.minuteElement.value = oe.pad(oe.latestSelectedDateObj ? oe.latestSelectedDateObj.getMinutes() : oe.config.defaultMinute),
        oe.hourElement.step = oe.config.hourIncrement,
        oe.minuteElement.step = oe.config.minuteIncrement,
        oe.hourElement.min = oe.config.time_24hr ? 0 : 1,
        oe.hourElement.max = oe.config.time_24hr ? 23 : 12,
        oe.minuteElement.min = 0,
        oe.minuteElement.max = 59,
        oe.hourElement.title = oe.minuteElement.title = oe.l10n.scrollTitle,
        oe.timeContainer.appendChild(t),
        oe.timeContainer.appendChild(e),
        oe.timeContainer.appendChild(n),
        oe.config.time_24hr && oe.timeContainer.classList.add("time24hr"),
        oe.config.enableSeconds) {
            oe.timeContainer.classList.add("hasSeconds");
            var a = f("flatpickr-second");
            oe.secondElement = a.childNodes[0],
            oe.secondElement.value = oe.latestSelectedDateObj ? oe.pad(oe.latestSelectedDateObj.getSeconds()) : "00",
            oe.secondElement.step = oe.minuteElement.step,
            oe.secondElement.min = oe.minuteElement.min,
            oe.secondElement.max = oe.minuteElement.max,
            oe.timeContainer.appendChild(ee("span", "flatpickr-time-separator", ":")),
            oe.timeContainer.appendChild(a)
        }
        return oe.config.time_24hr || (oe.amPM = ee("span", "flatpickr-am-pm", ["AM", "PM"][oe.hourElement.value > 11 | 0]),
        oe.amPM.title = oe.l10n.toggleTitle,
        oe.amPM.tabIndex = -1,
        oe.timeContainer.appendChild(oe.amPM)),
        oe.timeContainer
    }
    function w() {
        oe.weekdayContainer || (oe.weekdayContainer = ee("div", "flatpickr-weekdays"));
        var e = oe.l10n.firstDayOfWeek
          , t = oe.l10n.weekdays.shorthand.slice();
        return e > 0 && e < t.length && (t = [].concat(t.splice(e, t.length), t.splice(0, e))),
        oe.weekdayContainer.innerHTML = "\n\t\t<span class=flatpickr-weekday>\n\t\t\t" + t.join("</span><span class=flatpickr-weekday>") + "\n\t\t</span>\n\t\t",
        oe.weekdayContainer
    }
    function b() {
        return oe.calendarContainer.classList.add("hasWeeks"),
        oe.weekWrapper = ee("div", "flatpickr-weekwrapper"),
        oe.weekWrapper.appendChild(ee("span", "flatpickr-weekday", oe.l10n.weekAbbreviation)),
        oe.weekNumbers = ee("div", "flatpickr-weeks"),
        oe.weekWrapper.appendChild(oe.weekNumbers),
        oe.weekWrapper
    }
    function y(e, t) {
        t = void 0 === t || t;
        var n = t ? e : e - oe.currentMonth;
        n < 0 && oe._hidePrevMonthArrow || n > 0 && oe._hideNextMonthArrow || (oe.currentMonth += n,
        (oe.currentMonth < 0 || oe.currentMonth > 11) && (oe.currentYear += oe.currentMonth > 11 ? 1 : -1,
        oe.currentMonth = (oe.currentMonth + 12) % 12,
        V("YearChange")),
        Q(),
        h(),
        V("MonthChange"))
    }
    function M(e) {
        oe.input.value = "",
        oe.altInput && (oe.altInput.value = ""),
        oe.mobileInput && (oe.mobileInput.value = ""),
        oe.selectedDates = [],
        oe.latestSelectedDateObj = null,
        oe.showTimeInput = !1,
        oe.redraw(),
        e !== !1 && V("Change")
    }
    function C() {
        oe.isOpen = !1,
        oe.isMobile || (oe.calendarContainer.classList.remove("open"),
        (oe.altInput || oe.input).classList.remove("active")),
        V("Close")
    }
    function k(e) {
        e = e || oe,
        e.clear(!1),
        window.removeEventListener("resize", e.debouncedResize),
        window.document.removeEventListener("click", x),
        window.document.removeEventListener("touchstart", x),
        window.document.removeEventListener("blur", x),
        e.timeContainer && e.timeContainer.removeEventListener("transitionend", A),
        e.mobileInput ? (e.mobileInput.parentNode && e.mobileInput.parentNode.removeChild(e.mobileInput),
        delete e.mobileInput) : e.calendarContainer && e.calendarContainer.parentNode && e.calendarContainer.parentNode.removeChild(e.calendarContainer),
        e.altInput && (e.input.type = "text",
        e.altInput.parentNode && e.altInput.parentNode.removeChild(e.altInput),
        delete e.altInput),
        e.input.type = e.input._type,
        e.input.classList.remove("flatpickr-input"),
        e.input.removeEventListener("focus", S),
        e.input.removeAttribute("readonly"),
        delete e.input._flatpickr
    }
    function E(e) {
        return !(!oe.config.appendTo || !oe.config.appendTo.contains(e)) || oe.calendarContainer.contains(e)
    }
    function x(e) {
        if (oe.isOpen && !oe.config.inline) {
            var t = E(e.target)
              , n = e.target === oe.input || e.target === oe.altInput || oe.element.contains(e.target) || e.path && e.path.indexOf && (~e.path.indexOf(oe.input) || ~e.path.indexOf(oe.altInput));
            ("blur" === e.type ? n && e.relatedTarget && !E(e.relatedTarget) : !n && !t) && (e.preventDefault(),
            oe.close(),
            "range" === oe.config.mode && 1 === oe.selectedDates.length && (oe.clear(),
            oe.redraw()))
        }
    }
    function T(e) {
        if (!(!e || oe.currentYearElement.min && e < oe.currentYearElement.min || oe.currentYearElement.max && e > oe.currentYearElement.max)) {
            var t = parseInt(e, 10)
              , n = oe.currentYear !== t;
            oe.currentYear = t || oe.currentYear,
            oe.config.maxDate && oe.currentYear === oe.config.maxDate.getFullYear() ? oe.currentMonth = Math.min(oe.config.maxDate.getMonth(), oe.currentMonth) : oe.config.minDate && oe.currentYear === oe.config.minDate.getFullYear() && (oe.currentMonth = Math.max(oe.config.minDate.getMonth(), oe.currentMonth)),
            n && (oe.redraw(),
            V("YearChange"))
        }
    }
    function F(e, t) {
        var n = ie(e, oe.config.minDate, void 0 !== t ? t : !oe.minDateHasTime) < 0
          , a = ie(e, oe.config.maxDate, void 0 !== t ? t : !oe.maxDateHasTime) > 0;
        if (n || a)
            return !1;
        if (!oe.config.enable.length && !oe.config.disable.length)
            return !0;
        for (var i, r = oe.parseDate(e, !0), o = oe.config.enable.length > 0, l = o ? oe.config.enable : oe.config.disable, c = 0; c < l.length; c++) {
            if ((i = l[c])instanceof Function && i(r))
                return o;
            if (i instanceof Date && i.getTime() === r.getTime())
                return o;
            if ("string" == typeof i && oe.parseDate(i, !0).getTime() === r.getTime())
                return o;
            if ("object" === (void 0 === i ? "undefined" : _typeof(i)) && i.from && i.to && r >= i.from && r <= i.to)
                return o
        }
        return !o
    }
    function I(e) {
        if (e.target === (oe.altInput || oe.input) && "Enter" === e.key)
            P(e);
        else if (oe.isOpen || oe.config.inline) {
            switch (e.key) {
            case "Enter":
                oe.timeContainer && oe.timeContainer.contains(e.target) ? G() : P(e);
                break;
            case "Escape":
                e.preventDefault(),
                oe.close();
                break;
            case "ArrowLeft":
                e.preventDefault(),
                e.ctrlKey ? (y(-1, !0),
                m(e.target.$i, 0)) : m(e.target.$i, -1);
                break;
            case "ArrowRight":
                e.preventDefault(),
                e.ctrlKey ? (y(1, !0),
                m(e.target.$i, 0)) : m(e.target.$i, 1);
                break;
            case "ArrowUp":
                e.preventDefault(),
                e.ctrlKey ? (T(oe.currentYear + 1),
                m(e.target.$i, 0)) : oe.timeContainer && oe.timeContainer.contains(e.target) ? a(e) : m(e.target.$i, -7);
                break;
            case "ArrowDown":
                e.preventDefault(),
                e.ctrlKey ? (T(oe.currentYear - 1),
                m(e.target.$i, 0)) : oe.timeContainer && oe.timeContainer.contains(e.target) ? a(e) : m(e.target.$i, 7);
                break;
            case "Tab":
                e.target === oe.hourElement ? (e.preventDefault(),
                oe.minuteElement.select()) : e.target === oe.minuteElement && oe.amPM && (e.preventDefault(),
                oe.amPM.focus());
                break;
            case "a":
                e.target === oe.amPM && (oe.amPM.textContent = "AM",
                i(),
                G());
                break;
            case "p":
                e.target === oe.amPM && (oe.amPM.textContent = "PM",
                i(),
                G())
            }
            V("KeyDown", e)
        }
    }
    function Y(e) {
        if (1 === oe.selectedDates.length && e.target.classList.contains("flatpickr-day")) {
            for (var t = e.target.dateObj, n = oe.parseDate(oe.selectedDates[0], !0), a = Math.min(t.getTime(), oe.selectedDates[0].getTime()), i = Math.max(t.getTime(), oe.selectedDates[0].getTime()), r = !1, o = a; o < i; o += oe.utils.duration.DAY)
                if (!F(new Date(o))) {
                    r = !0;
                    break
                }
            for (var l = oe.days.childNodes[0].dateObj.getTime(), c = 0; c < 42; c++,
            l += oe.utils.duration.DAY) {
                (function(o, l) {
                    var c = o < oe.minRangeDate.getTime() || o > oe.maxRangeDate.getTime();
                    if (c)
                        return oe.days.childNodes[l].classList.add("notAllowed"),
                        ["inRange", "startRange", "endRange"].forEach(function(e) {
                            oe.days.childNodes[l].classList.remove(e)
                        }),
                        "continue";
                    if (r && !c)
                        return "continue";
                    ["startRange", "inRange", "endRange", "notAllowed"].forEach(function(e) {
                        oe.days.childNodes[l].classList.remove(e)
                    });
                    var s = Math.max(oe.minRangeDate.getTime(), a)
                      , u = Math.min(oe.maxRangeDate.getTime(), i);
                    e.target.classList.add(t < oe.selectedDates[0] ? "startRange" : "endRange"),
                    n > t && o === n.getTime() ? oe.days.childNodes[l].classList.add("endRange") : n < t && o === n.getTime() ? oe.days.childNodes[l].classList.add("startRange") : o >= s && o <= u && oe.days.childNodes[l].classList.add("inRange")
                }
                )(l, c)
            }
        }
    }
    function N() {
        !oe.isOpen || oe.config.static || oe.config.inline || A()
    }
    function S(e) {
        if (oe.isMobile)
            return e && (e.preventDefault(),
            e.target.blur()),
            setTimeout(function() {
                oe.mobileInput.click()
            }, 0),
            void V("Open");
        oe.isOpen || (oe.altInput || oe.input).disabled || oe.config.inline || (oe.isOpen = !0,
        oe.calendarContainer.classList.add("open"),
        A(),
        (oe.altInput || oe.input).classList.add("active"),
        V("Open"))
    }
    function L(e) {
        return function(t) {
            var n = oe.config["_" + e + "Date"] = oe.parseDate(t)
              , a = oe.config["_" + ("min" === e ? "max" : "min") + "Date"]
              , i = t && n instanceof Date;
            i && (oe[e + "DateHasTime"] = n.getHours() || n.getMinutes() || n.getSeconds()),
            oe.selectedDates && (oe.selectedDates = oe.selectedDates.filter(function(e) {
                return F(e)
            }),
            oe.selectedDates.length || "min" !== e || r(n),
            G()),
            oe.days && (j(),
            i ? oe.currentYearElement[e] = n.getFullYear() : oe.currentYearElement.removeAttribute(e),
            oe.currentYearElement.disabled = a && n && a.getFullYear() === n.getFullYear())
        }
    }
    function O() {
        var e = ["utc", "wrap", "weekNumbers", "allowInput", "clickOpens", "time_24hr", "enableTime", "noCalendar", "altInput", "shorthandCurrentMonth", "inline", "static", "enableSeconds", "disableMobile"]
          , t = ["onChange", "onClose", "onDayCreate", "onKeyDown", "onMonthChange", "onOpen", "onParseConfig", "onReady", "onValueUpdate", "onYearChange"];
        oe.config = Object.create(Flatpickr.defaultConfig);
        var a = _extends({}, oe.instanceConfig, JSON.parse(JSON.stringify(oe.element.dataset || {})));
        oe.config.parseDate = a.parseDate,
        oe.config.formatDate = a.formatDate,
        _extends(oe.config, a),
        !a.dateFormat && a.enableTime && (oe.config.dateFormat = oe.config.noCalendar ? "H:i" + (oe.config.enableSeconds ? ":S" : "") : Flatpickr.defaultConfig.dateFormat + " H:i" + (oe.config.enableSeconds ? ":S" : "")),
        a.altInput && a.enableTime && !a.altFormat && (oe.config.altFormat = oe.config.noCalendar ? "h:i" + (oe.config.enableSeconds ? ":S K" : " K") : Flatpickr.defaultConfig.altFormat + " h:i" + (oe.config.enableSeconds ? ":S" : "") + " K"),
        Object.defineProperty(oe.config, "minDate", {
            get: function() {
                return this._minDate
            },
            set: L("min")
        }),
        Object.defineProperty(oe.config, "maxDate", {
            get: function() {
                return this._maxDate
            },
            set: L("max")
        }),
        oe.config.minDate = a.minDate,
        oe.config.maxDate = a.maxDate;
        for (var i = 0; i < e.length; i++)
            oe.config[e[i]] = oe.config[e[i]] === !0 || "true" === oe.config[e[i]];
        for (var r = 0; r < t.length; r++)
            oe.config[t[r]] = te(oe.config[t[r]] || []).map(n);
        for (var o = 0; o < oe.config.plugins.length; o++) {
            var l = oe.config.plugins[o](oe) || {};
            for (var c in l)
                Array.isArray(oe.config[c]) || ~t.indexOf(c) ? oe.config[c] = te(l[c]).map(n).concat(oe.config[c]) : void 0 === a[c] && (oe.config[c] = l[c])
        }
        V("ParseConfig")
    }
    function _() {
        "object" !== _typeof(oe.config.locale) && void 0 === Flatpickr.l10ns[oe.config.locale] && console.warn("flatpickr: invalid locale " + oe.config.locale),
        oe.l10n = _extends(Object.create(Flatpickr.l10ns.default), "object" === _typeof(oe.config.locale) ? oe.config.locale : "default" !== oe.config.locale ? Flatpickr.l10ns[oe.config.locale] || {} : {})
    }
    function A(e) {
        if (!e || e.target === oe.timeContainer) {
            var t = oe.calendarContainer.offsetHeight
              , n = oe.calendarContainer.offsetWidth
              , a = oe.config.position
              , i = oe.altInput || oe.input
              , r = i.getBoundingClientRect()
              , o = window.innerHeight - r.bottom + i.offsetHeight
              , l = "above" === a || "below" !== a && o < t && r.top > t
              , c = window.pageYOffset + r.top + (l ? -t - 2 : i.offsetHeight + 2);
            if (ne(oe.calendarContainer, "arrowTop", !l),
            ne(oe.calendarContainer, "arrowBottom", l),
            !oe.config.inline) {
                var s = window.pageXOffset + r.left
                  , u = window.document.body.offsetWidth - r.right
                  , d = s + n > window.document.body.offsetWidth;
                ne(oe.calendarContainer, "rightMost", d),
                oe.config.static || (oe.calendarContainer.style.top = c + "px",
                d ? (oe.calendarContainer.style.left = "auto",
                oe.calendarContainer.style.right = u + "px") : (oe.calendarContainer.style.left = s + "px",
                oe.calendarContainer.style.right = "auto"))
            }
        }
    }
    function j() {
        oe.config.noCalendar || oe.isMobile || (w(),
        Q(),
        h())
    }
    function P(e) {
        if (e.preventDefault(),
        e.stopPropagation(),
        oe.config.allowInput && "Enter" === e.key && e.target === (oe.altInput || oe.input))
            return oe.setDate((oe.altInput || oe.input).value, !0, e.target === oe.altInput ? oe.config.altFormat : oe.config.dateFormat),
            e.target.blur();
        if (e.target.classList.contains("flatpickr-day") && !e.target.classList.contains("disabled") && !e.target.classList.contains("notAllowed")) {
            var t = oe.latestSelectedDateObj = new Date(e.target.dateObj.getTime());
            if (oe.selectedDateElem = e.target,
            "single" === oe.config.mode)
                oe.selectedDates = [t];
            else if ("multiple" === oe.config.mode) {
                var n = Z(t);
                n ? oe.selectedDates.splice(n, 1) : oe.selectedDates.push(t)
            } else
                "range" === oe.config.mode && (2 === oe.selectedDates.length && oe.clear(),
                oe.selectedDates.push(t),
                0 !== ie(t, oe.selectedDates[0], !0) && oe.selectedDates.sort(function(e, t) {
                    return e.getTime() - t.getTime()
                }));
            if (i(),
            t.getMonth() !== oe.currentMonth && "range" !== oe.config.mode) {
                var a = oe.currentYear !== t.getFullYear();
                oe.currentYear = t.getFullYear(),
                oe.currentMonth = t.getMonth(),
                a && V("YearChange"),
                V("MonthChange")
            }
            h(),
            oe.minDateHasTime && oe.config.enableTime && 0 === ie(t, oe.config.minDate) && r(oe.config.minDate),
            G(),
            setTimeout(function() {
                return oe.showTimeInput = !0
            }, 50),
            "range" === oe.config.mode && (1 === oe.selectedDates.length ? (Y(e),
            oe._hidePrevMonthArrow = oe._hidePrevMonthArrow || oe.minRangeDate > oe.days.childNodes[0].dateObj,
            oe._hideNextMonthArrow = oe._hideNextMonthArrow || oe.maxRangeDate < new Date(oe.currentYear,oe.currentMonth + 1,1)) : (Q(),
            oe.close())),
            oe.config.enableTime && setTimeout(function() {
                return oe.hourElement.select()
            }, 451),
            "single" !== oe.config.mode || oe.config.enableTime || oe.close(),
            V("Change")
        }
    }
    function H(e, t) {
        oe.config[e] = t,
        oe.redraw(),
        u()
    }
    function R(e, t) {
        if (Array.isArray(e))
            oe.selectedDates = e.map(function(e) {
                return oe.parseDate(e, !1, t)
            });
        else if (e instanceof Date || !isNaN(e))
            oe.selectedDates = [oe.parseDate(e)];
        else if (e && e.substring)
            switch (oe.config.mode) {
            case "single":
                oe.selectedDates = [oe.parseDate(e, !1, t)];
                break;
            case "multiple":
                oe.selectedDates = e.split("; ").map(function(e) {
                    return oe.parseDate(e, !1, t)
                });
                break;
            case "range":
                oe.selectedDates = e.split(oe.l10n.rangeSeparator).map(function(e) {
                    return oe.parseDate(e, !1, t)
                })
            }
        oe.selectedDates = oe.selectedDates.filter(function(e) {
            return e instanceof Date && F(e, !1)
        }),
        oe.selectedDates.sort(function(e, t) {
            return e.getTime() - t.getTime()
        })
    }
    function W(e, t, n) {
        if (!e)
            return oe.clear(t);
        R(e, n),
        oe.showTimeInput = oe.selectedDates.length > 0,
        oe.latestSelectedDateObj = oe.selectedDates[0],
        oe.redraw(),
        u(),
        r(),
        G(),
        t && V("Change")
    }
    function U() {
        function e(e) {
            for (var t = e.length; t--; )
                "string" == typeof e[t] || +e[t] ? e[t] = oe.parseDate(e[t], !0) : e[t] && e[t].from && e[t].to && (e[t].from = oe.parseDate(e[t].from),
                e[t].to = oe.parseDate(e[t].to));
            return e.filter(function(e) {
                return e
            })
        }
        oe.selectedDates = [],
        oe.now = new Date,
        oe.config.disable.length && (oe.config.disable = e(oe.config.disable)),
        oe.config.enable.length && (oe.config.enable = e(oe.config.enable)),
        R(oe.config.defaultDate || oe.input.value);
        var t = oe.selectedDates.length ? oe.selectedDates[0] : oe.config.minDate && oe.config.minDate.getTime() > oe.now ? oe.config.minDate : oe.config.maxDate && oe.config.maxDate.getTime() < oe.now ? oe.config.maxDate : oe.now;
        oe.currentYear = t.getFullYear(),
        oe.currentMonth = t.getMonth(),
        oe.selectedDates.length && (oe.latestSelectedDateObj = oe.selectedDates[0]),
        oe.minDateHasTime = oe.config.minDate && (oe.config.minDate.getHours() || oe.config.minDate.getMinutes() || oe.config.minDate.getSeconds()),
        oe.maxDateHasTime = oe.config.maxDate && (oe.config.maxDate.getHours() || oe.config.maxDate.getMinutes() || oe.config.maxDate.getSeconds()),
        Object.defineProperty(oe, "latestSelectedDateObj", {
            get: function() {
                return oe._selectedDateObj || oe.selectedDates[oe.selectedDates.length - 1] || null
            },
            set: function(e) {
                oe._selectedDateObj = e
            }
        }),
        oe.isMobile || Object.defineProperty(oe, "showTimeInput", {
            get: function() {
                return oe._showTimeInput
            },
            set: function(e) {
                oe._showTimeInput = e,
                oe.calendarContainer && ne(oe.calendarContainer, "showTimeInput", e)
            }
        })
    }
    function K() {
        oe.utils = {
            duration: {
                DAY: 864e5
            },
            getDaysinMonth: function(e, t) {
                return e = void 0 === e ? oe.currentMonth : e,
                t = void 0 === t ? oe.currentYear : t,
                1 === e && (t % 4 == 0 && t % 100 != 0 || t % 400 == 0) ? 29 : oe.l10n.daysInMonth[e]
            },
            monthToStr: function(e, t) {
                return t = void 0 === t ? oe.config.shorthandCurrentMonth : t,
                oe.l10n.months[(t ? "short" : "long") + "hand"][e]
            }
        }
    }
    function J() {
        ["D", "F", "J", "M", "W", "l"].forEach(function(e) {
            oe.formats[e] = Flatpickr.prototype.formats[e].bind(oe)
        }),
        oe.revFormat.F = Flatpickr.prototype.revFormat.F.bind(oe),
        oe.revFormat.M = Flatpickr.prototype.revFormat.M.bind(oe)
    }
    function $() {
        if (oe.input = oe.config.wrap ? oe.element.querySelector("[data-input]") : oe.element,
        !oe.input)
            return console.warn("Error: invalid input element specified", oe.input);
        oe.input._type = oe.input.type,
        oe.input.type = "text",
        oe.input.classList.add("flatpickr-input"),
        oe.config.altInput && (oe.altInput = ee(oe.input.nodeName, oe.input.className + " " + oe.config.altInputClass),
        oe.altInput.placeholder = oe.input.placeholder,
        oe.altInput.type = "text",
        oe.input.type = "hidden",
        !oe.config.static && oe.input.parentNode && oe.input.parentNode.insertBefore(oe.altInput, oe.input.nextSibling)),
        oe.config.allowInput || (oe.altInput || oe.input).setAttribute("readonly", "readonly")
    }
    function B() {
        var e = oe.config.enableTime ? oe.config.noCalendar ? "time" : "datetime-local" : "date";
        oe.mobileInput = ee("input", oe.input.className + " flatpickr-mobile"),
        oe.mobileInput.step = "any",
        oe.mobileInput.tabIndex = 1,
        oe.mobileInput.type = e,
        oe.mobileInput.disabled = oe.input.disabled,
        oe.mobileInput.placeholder = oe.input.placeholder,
        oe.mobileFormatStr = "datetime-local" === e ? "Y-m-d\\TH:i:S" : "date" === e ? "Y-m-d" : "H:i:S",
        oe.selectedDates.length && (oe.mobileInput.defaultValue = oe.mobileInput.value = oe.formatDate(oe.selectedDates[0], oe.mobileFormatStr)),
        oe.config.minDate && (oe.mobileInput.min = oe.formatDate(oe.config.minDate, "Y-m-d")),
        oe.config.maxDate && (oe.mobileInput.max = oe.formatDate(oe.config.maxDate, "Y-m-d")),
        oe.input.type = "hidden",
        oe.config.altInput && (oe.altInput.type = "hidden");
        try {
            oe.input.parentNode.insertBefore(oe.mobileInput, oe.input.nextSibling)
        } catch (e) {}
        oe.mobileInput.addEventListener("change", function(e) {
            oe.latestSelectedDateObj = oe.parseDate(e.target.value),
            oe.setDate(oe.latestSelectedDateObj),
            V("Change"),
            V("Close")
        })
    }
    function z() {
        oe.isOpen ? oe.close() : oe.open()
    }
    function V(e, t) {
        var n = oe.config["on" + e];
        if (n)
            for (var a = 0; n[a] && a < n.length; a++)
                n[a](oe.selectedDates, oe.input && oe.input.value, oe, t);
        if ("Change" === e)
            if ("function" == typeof Event && Event.constructor)
                oe.input.dispatchEvent(new Event("change",{
                    bubbles: !0
                })),
                oe.input.dispatchEvent(new Event("input",{
                    bubbles: !0
                }));
            else {
                if (void 0 !== window.document.createEvent)
                    return oe.input.dispatchEvent(oe.changeEvent);
                oe.input.fireEvent("onchange")
            }
    }
    function Z(e) {
        for (var t = 0; t < oe.selectedDates.length; t++)
            if (0 === ie(oe.selectedDates[t], e))
                return "" + t;
        return !1
    }
    function q(e) {
        return !("range" !== oe.config.mode || oe.selectedDates.length < 2) && (ie(e, oe.selectedDates[0]) >= 0 && ie(e, oe.selectedDates[1]) <= 0)
    }
    function Q() {
        oe.config.noCalendar || oe.isMobile || !oe.monthNav || (oe.currentMonthElement.textContent = oe.utils.monthToStr(oe.currentMonth) + " ",
        oe.currentYearElement.value = oe.currentYear,
        oe._hidePrevMonthArrow = oe.config.minDate && (oe.currentYear === oe.config.minDate.getFullYear() ? oe.currentMonth <= oe.config.minDate.getMonth() : oe.currentYear < oe.config.minDate.getFullYear()),
        oe._hideNextMonthArrow = oe.config.maxDate && (oe.currentYear === oe.config.maxDate.getFullYear() ? oe.currentMonth + 1 > oe.config.maxDate.getMonth() : oe.currentYear > oe.config.maxDate.getFullYear()))
    }
    function G() {
        if (!oe.selectedDates.length)
            return oe.clear();
        oe.isMobile && (oe.mobileInput.value = oe.selectedDates.length ? oe.formatDate(oe.latestSelectedDateObj, oe.mobileFormatStr) : "");
        var e = "range" !== oe.config.mode ? "; " : oe.l10n.rangeSeparator;
        oe.input.value = oe.selectedDates.map(function(e) {
            return oe.formatDate(e, oe.config.dateFormat)
        }).join(e),
        oe.config.altInput && (oe.altInput.value = oe.selectedDates.map(function(e) {
            return oe.formatDate(e, oe.config.altFormat)
        }).join(e)),
        V("ValueUpdate")
    }
    function X(e) {
        e.preventDefault();
        var t = Math.max(-1, Math.min(1, e.wheelDelta || -e.deltaY));
        T(parseInt(e.target.value, 10) + t),
        e.target.value = oe.currentYear
    }
    function ee(e, t, n) {
        var a = window.document.createElement(e);
        return t = t || "",
        n = n || "",
        a.className = t,
        n && (a.textContent = n),
        a
    }
    function te(e) {
        return Array.isArray(e) ? e : [e]
    }
    function ne(e, t, n) {
        if (n)
            return e.classList.add(t);
        e.classList.remove(t)
    }
    function ae(e, t, n) {
        var a = void 0;
        return function() {
            var i = this
              , r = arguments;
            clearTimeout(a),
            a = setTimeout(function() {
                a = null,
                n || e.apply(i, r)
            }, t),
            n && !a && e.apply(i, r)
        }
    }
    function ie(e, t, n) {
        return e instanceof Date && t instanceof Date && (n !== !1 ? new Date(e.getTime()).setHours(0, 0, 0, 0) - new Date(t.getTime()).setHours(0, 0, 0, 0) : e.getTime() - t.getTime())
    }
    function re(e) {
        e.preventDefault();
        var t = "keydown" === e.type
          , n = (e.type,
        e.type,
        e.target);
        if ("input" !== e.type && !t && (e.target.value || e.target.textContent).length >= 2 && (e.target.focus(),
        e.target.blur()),
        oe.amPM && e.target === oe.amPM)
            return e.target.textContent = ["AM", "PM"]["AM" === e.target.textContent | 0];
        var a = Number(n.min)
          , i = Number(n.max)
          , r = Number(n.step)
          , o = parseInt(n.value, 10)
          , l = e.delta || (t ? 38 === e.which ? 1 : -1 : Math.max(-1, Math.min(1, e.wheelDelta || -e.deltaY)) || 0)
          , c = o + r * l;
        if (void 0 !== n.value && 2 === n.value.length) {
            var s = n === oe.hourElement
              , u = n === oe.minuteElement;
            c < a ? (c = i + c + !s + (s && !oe.amPM),
            u && d(null, -1, oe.hourElement)) : c > i && (c = n === oe.hourElement ? c - i - !oe.amPM : a,
            u && d(null, 1, oe.hourElement)),
            oe.amPM && s && (1 === r ? c + o === 23 : Math.abs(c - o) > r) && (oe.amPM.textContent = "PM" === oe.amPM.textContent ? "AM" : "PM"),
            n.value = oe.pad(c)
        }
    }
    var oe = this;
    return oe.changeMonth = y,
    oe.changeYear = T,
    oe.clear = M,
    oe.close = C,
    oe._createElement = ee,
    oe.destroy = k,
    oe.isEnabled = F,
    oe.jumpToDate = u,
    oe.open = S,
    oe.redraw = j,
    oe.set = H,
    oe.setDate = W,
    oe.toggle = z,
    function() {
        e._flatpickr && k(e._flatpickr),
        e._flatpickr = oe,
        oe.element = e,
        oe.instanceConfig = t || {},
        oe.parseDate = Flatpickr.prototype.parseDate.bind(oe),
        oe.formatDate = Flatpickr.prototype.formatDate.bind(oe),
        J(),
        O(),
        _(),
        $(),
        U(),
        K(),
        oe.isOpen = oe.config.inline,
        oe.isMobile = !oe.config.disableMobile && !oe.config.inline && "single" === oe.config.mode && !oe.config.disable.length && !oe.config.enable.length && !oe.config.weekNumbers && /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),
        oe.isMobile || p(),
        s(),
        (oe.selectedDates.length || oe.config.noCalendar) && (oe.config.enableTime && r(oe.config.noCalendar ? oe.latestSelectedDateObj || oe.config.minDate : null),
        G()),
        oe.config.weekNumbers && (oe.calendarContainer.style.width = oe.days.clientWidth + oe.weekWrapper.clientWidth + "px"),
        oe.showTimeInput = oe.selectedDates.length > 0 || oe.config.noCalendar,
        oe.isMobile || A(),
        V("Ready")
    }(),
    oe
}
function _flatpickr(e, t) {
    for (var n = Array.prototype.slice.call(e), a = [], i = 0; i < n.length; i++)
        try {
            n[i]._flatpickr = new Flatpickr(n[i],t || {}),
            a.push(n[i]._flatpickr)
        } catch (e) {
            console.warn(e, e.stack)
        }
    return 1 === a.length ? a[0] : a
}
function flatpickr(e, t) {
    return _flatpickr(window.document.querySelectorAll(e), t)
}
var _extends = Object.assign || function(e) {
    for (var t = 1; t < arguments.length; t++) {
        var n = arguments[t];
        for (var a in n)
            Object.prototype.hasOwnProperty.call(n, a) && (e[a] = n[a])
    }
    return e
}
  , _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
    return typeof e
}
: function(e) {
    return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
}
;
Flatpickr.defaultConfig = {
    mode: "single",
    position: "top",
    utc: !1,
    wrap: !1,
    weekNumbers: !1,
    allowInput: !1,
    clickOpens: !0,
    time_24hr: !1,
    enableTime: !1,
    noCalendar: !1,
    dateFormat: "Y-m-d",
    altInput: !1,
    altInputClass: "flatpickr-input form-control input",
    altFormat: "F j, Y",
    defaultDate: null,
    minDate: null,
    maxDate: null,
    parseDate: null,
    formatDate: null,
    getWeek: function(e) {
        var t = new Date(e.getTime());
        t.setHours(0, 0, 0, 0),
        t.setDate(t.getDate() + 3 - (t.getDay() + 6) % 7);
        var n = new Date(t.getFullYear(),0,4);
        return 1 + Math.round(((t.getTime() - n.getTime()) / 864e5 - 3 + (n.getDay() + 6) % 7) / 7)
    },
    enable: [],
    disable: [],
    shorthandCurrentMonth: !1,
    inline: !1,
    static: !1,
    appendTo: null,
    prevArrow: "<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M5.207 8.471l7.146 7.147-0.707 0.707-7.853-7.854 7.854-7.853 0.707 0.707-7.147 7.146z' /></svg>",
    nextArrow: "<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M13.207 8.472l-7.854 7.854-0.707-0.707 7.146-7.146-7.146-7.148 0.707-0.707 7.854 7.854z' /></svg>",
    enableSeconds: !1,
    hourIncrement: 1,
    minuteIncrement: 5,
    defaultHour: 12,
    defaultMinute: 0,
    disableMobile: !1,
    locale: "default",
    plugins: [],
    onClose: [],
    onChange: [],
    onDayCreate: [],
    onMonthChange: [],
    onOpen: [],
    onParseConfig: [],
    onReady: [],
    onValueUpdate: [],
    onYearChange: [],
    onKeyDown: []
},
Flatpickr.l10ns = {
    en: {
        weekdays: {
            shorthand: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
            longhand: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]
        },
        months: {
            shorthand: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
            longhand: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]
        },
        daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
        firstDayOfWeek: 0,
        ordinal: function(e) {
            var t = e % 100;
            if (t > 3 && t < 21)
                return "th";
            switch (t % 10) {
            case 1:
                return "st";
            case 2:
                return "nd";
            case 3:
                return "rd";
            default:
                return "th"
            }
        },
        rangeSeparator: " to ",
        weekAbbreviation: "Wk",
        scrollTitle: "Scroll to increment",
        toggleTitle: "Click to toggle"
    }
},
Flatpickr.l10ns.default = Object.create(Flatpickr.l10ns.en),
Flatpickr.localize = function(e) {
    return _extends(Flatpickr.l10ns.default, e || {})
}
,
Flatpickr.setDefaults = function(e) {
    return _extends(Flatpickr.defaultConfig, e || {})
}
,
Flatpickr.prototype = {
    formats: {
        Z: function(e) {
            return e.toISOString()
        },
        D: function(e) {
            return this.l10n.weekdays.shorthand[this.formats.w(e)]
        },
        F: function(e) {
            return this.utils.monthToStr(this.formats.n(e) - 1, !1)
        },
        H: function(e) {
            return Flatpickr.prototype.pad(e.getHours())
        },
        J: function(e) {
            return e.getDate() + this.l10n.ordinal(e.getDate())
        },
        K: function(e) {
            return e.getHours() > 11 ? "PM" : "AM"
        },
        M: function(e) {
            return this.utils.monthToStr(e.getMonth(), !0)
        },
        S: function(e) {
            return Flatpickr.prototype.pad(e.getSeconds())
        },
        U: function(e) {
            return e.getTime() / 1e3
        },
        W: function(e) {
            return this.config.getWeek(e)
        },
        Y: function(e) {
            return e.getFullYear()
        },
        d: function(e) {
            return Flatpickr.prototype.pad(e.getDate())
        },
        h: function(e) {
            return e.getHours() % 12 ? e.getHours() % 12 : 12
        },
        i: function(e) {
            return Flatpickr.prototype.pad(e.getMinutes())
        },
        j: function(e) {
            return e.getDate()
        },
        l: function(e) {
            return this.l10n.weekdays.longhand[e.getDay()]
        },
        m: function(e) {
            return Flatpickr.prototype.pad(e.getMonth() + 1)
        },
        n: function(e) {
            return e.getMonth() + 1
        },
        s: function(e) {
            return e.getSeconds()
        },
        w: function(e) {
            return e.getDay()
        },
        y: function(e) {
            return String(e.getFullYear()).substring(2)
        }
    },
    formatDate: function(e, t) {
        var n = this;
        if (this.config.formatDate)
            try {
                return this.config.formatDate(e, t)
            } catch (n) {
                return console.warn("Please swap the format string and the date object parameters in your formatDate option", "\nThe old signature will be deprecated by v2.5"),
                this.config.formatDate(t, e)
            }
        return t.split("").map(function(t, a, i) {
            return n.formats[t] && "\\" !== i[a - 1] ? n.formats[t](e) : "\\" !== t ? t : ""
        }).join("")
    },
    revFormat: {
        D: function() {},
        F: function(e, t) {
            e.setMonth(this.l10n.months.longhand.indexOf(t))
        },
        H: function(e, t) {
            return e.setHours(parseFloat(t))
        },
        J: function(e, t) {
            return e.setDate(parseFloat(t))
        },
        K: function(e, t) {
            var n = e.getHours();
            12 !== n && e.setHours(n % 12 + 12 * /pm/i.test(t))
        },
        M: function(e, t) {
            e.setMonth(this.l10n.months.shorthand.indexOf(t))
        },
        S: function(e, t) {
            return e.setSeconds(t)
        },
        W: function() {},
        Y: function(e, t) {
            return e.setFullYear(t)
        },
        Z: function(e, t) {
            return new Date(t)
        },
        d: function(e, t) {
            return e.setDate(parseFloat(t))
        },
        h: function(e, t) {
            return e.setHours(parseFloat(t))
        },
        i: function(e, t) {
            return e.setMinutes(parseFloat(t))
        },
        j: function(e, t) {
            return e.setDate(parseFloat(t))
        },
        l: function() {},
        m: function(e, t) {
            return e.setMonth(parseFloat(t) - 1)
        },
        n: function(e, t) {
            return e.setMonth(parseFloat(t) - 1)
        },
        s: function(e, t) {
            return e.setSeconds(parseFloat(t))
        },
        w: function() {},
        y: function(e, t) {
            return e.setFullYear(2e3 + parseFloat(t))
        }
    },
    tokenRegex: {
        D: "(\\w+)",
        F: "(\\w+)",
        H: "(\\d\\d|\\d)",
        J: "(\\d\\d|\\d)\\w+",
        K: "(\\w+)",
        M: "(\\w+)",
        S: "(\\d\\d|\\d)",
        Y: "(\\d{4})",
        Z: "(.+)",
        d: "(\\d\\d|\\d)",
        h: "(\\d\\d|\\d)",
        i: "(\\d\\d|\\d)",
        j: "(\\d\\d|\\d)",
        l: "(\\w+)",
        m: "(\\d\\d|\\d)",
        n: "(\\d\\d|\\d)",
        s: "(\\d\\d|\\d)",
        w: "(\\d\\d|\\d)",
        y: "(\\d{2})"
    },
    pad: function(e) {
        return ("0" + e).slice(-2)
    },
    parseDate: function(e, t, n) {
        if (!e)
            return null;
        var a = e;
        if (e.toFixed || /^\d{8}/.test(e))
            e = new Date(parseInt(e, 10));
        else if ("string" == typeof e) {
            var i = "string" == typeof n ? n : this.config.dateFormat;
            if ("today" === (e = e.trim()))
                e = new Date,
                t = !0;
            else if (this.config && this.config.parseDate)
                e = this.config.parseDate(e);
            else if (/Z$/.test(e) || /GMT$/.test(e))
                e = new Date(e);
            else {
                for (var r = this.config.noCalendar ? new Date((new Date).setHours(0, 0, 0, 0)) : new Date((new Date).getFullYear(),0,1,0,0,0,0), o = !1, l = 0, c = 0, s = ""; l < i.length; l++) {
                    var u = i[l]
                      , d = "\\" === u
                      , f = "\\" === i[l - 1] || d;
                    if (this.tokenRegex[u] && !f) {
                        s += this.tokenRegex[u];
                        var p = new RegExp(s).exec(e);
                        p && (o = !0) && this.revFormat[u](r, p[++c])
                    } else
                        d || (s += ".")
                }
                e = o ? r : null
            }
        } else
            e instanceof Date && (e = new Date(e.getTime()));
        return e instanceof Date ? (this.config && this.config.utc && !e.fp_isUTC && (e = e.fp_toUTC()),
        t === !0 && e.setHours(0, 0, 0, 0),
        e) : (console.warn("flatpickr: invalid date " + a),
        console.info(this.element),
        null)
    }
},
"undefined" != typeof HTMLElement && (HTMLCollection.prototype.flatpickr = NodeList.prototype.flatpickr = function(e) {
    return _flatpickr(this, e)
}
,
HTMLElement.prototype.flatpickr = function(e) {
    return _flatpickr([this], e)
}
),
"undefined" != typeof jQuery && (jQuery.fn.flatpickr = function(e) {
    return _flatpickr(this, e)
}
),
Date.prototype.fp_incr = function(e) {
    return new Date(this.getFullYear(),this.getMonth(),this.getDate() + parseInt(e, 10))
}
,
Date.prototype.fp_isUTC = !1,
Date.prototype.fp_toUTC = function() {
    var e = new Date(this.getUTCFullYear(),this.getUTCMonth(),this.getUTCDate(),this.getUTCHours(),this.getUTCMinutes(),this.getUTCSeconds());
    return e.fp_isUTC = !0,
    e
}
,
!window.document.documentElement.classList && Object.defineProperty && "undefined" != typeof HTMLElement && Object.defineProperty(HTMLElement.prototype, "classList", {
    get: function() {
        function e(e) {
            return function(n) {
                var a = t.className.split(/\s+/)
                  , i = a.indexOf(n);
                e(a, i, n),
                t.className = a.join(" ")
            }
        }
        var t = this
          , n = {
            add: e(function(e, t, n) {
                ~t || e.push(n)
            }),
            remove: e(function(e, t) {
                ~t && e.splice(t, 1)
            }),
            toggle: e(function(e, t, n) {
                ~t ? e.splice(t, 1) : e.push(n)
            }),
            contains: function(e) {
                return !!~t.className.split(/\s+/).indexOf(e)
            },
            item: function(e) {
                return t.className.split(/\s+/)[e] || null
            }
        };
        return Object.defineProperty(n, "length", {
            get: function() {
                return t.className.split(/\s+/).length
            }
        }),
        n
    }
}),
"undefined" != typeof module && (module.exports = Flatpickr);
/* German locals for flatpickr */
var Flatpickr = Flatpickr || {
    l10ns: {}
};
Flatpickr.l10ns.de = {};

Flatpickr.l10ns.de.weekdays = {
    shorthand: ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'],
    longhand: ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag']
};

Flatpickr.l10ns.de.months = {
    shorthand: ['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'],
    longhand: ['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember']
};

Flatpickr.l10ns.de.firstDayOfWeek = 1;
Flatpickr.l10ns.de.weekAbbreviation = 'KW';
Flatpickr.l10ns.de.rangeSeparator = ' bis ';

if (typeof module !== "undefined") {
    module.exports = Flatpickr.l10ns;
}
$(function() {
  // INIT EVENT CALENDER IF NEEDED
  if ($("div[id='evt-kalender']").length > 0) {
    var evtdata;
    evtdata = $.getJSON(window.AKL_EVT_URL, function(data) {
      $("#evtcalendar").zabuto_calendar({   
        language: "de",
        today: true,
        data: data,
        action: function() {
          return myDateFunction(this.id);
        }
      });
    });
  }

  if ($("#events_datefrom").length > 0) {
    $("#events_datefrom").flatpickr({
      locale: "de",
      dateFormat: "d.m.Y"
    });
  }

    if ($("#events_dateto").length > 0) {
        $("#events_dateto").flatpickr({
            locale: "de",
            dateFormat: "d.m.Y"
        });
    }

    // INIT SOCIAL MEDIA BUTTONS IF NEEDED
    if ($(".social-bar").length > 0) {
        var socialshare = new Socialshare();
        console.log("INIT SOCIAL MEDIA BUTTONS");
    }

    /* replaces existing querystring of given URL with given querystring */
    function replace_querystring(url, qs) {
        var pos = url.indexOf("?");
        if (pos >= -0)
            url = url.slice(0, pos);
        return url + "?" + qs;
    }

    $('[name="eventsFilterSubmit"]').on("click", function() {
        $.ajax({
            method: "POST",
            url: $(this)[0].form.getAttribute("action"),
            cache: false,
            data: $(".eventsFilter").serialize()
        }).done(function(ret) {
            /* set querystring in "Ergebnis als PDF speichern" link to filter */
            var data, node, href;
            data = $(".eventsFilter").serialize();
            node = $("#pdfExportLink")[0];
            href = node.getAttribute("href");
            href = replace_querystring(href, data);
            node.setAttribute("href", href);

            /* populate table with filtered data */
            $("#resultTable").html(ret);
            initTable();
        });
    });

    function myDateFunction(id) {
        var date = $("#" + id).data("date");
        var hasEvent = $("#" + id).data("hasEvent");
        tmp = {};
        tmp.DATE = date;
        if (hasEvent == true) {
            evtdata = $.getJSON(window.AKL_EVTDATA_URL, tmp, function(data) {
                $(".modal-title").html(data.HEAD);
                $(".modal-body").html(data.BODY);
                $('#myModal').modal('show');
            });
        }
        return true;
    }

    // INIT LAZY LOADING IF NEEDED
    if (false && $(".lazy").length > 0) {
        var ias = $.ias({
            container: ".lazy",
            item: ".media",
            pagination: "#pagination",
            next: "a.next"
        });

        ias.extension(new IASSpinnerExtension());
        // shows a spinner (a.k.a. loader)
    }

    // INIT SLICK IF NEEDED
    if ($('.lemon42-gallery-item-inner') !== undefined & $('.lemon42-gallery-item-inner') !== "") {
        $('[data-slick]').each(function() {
            try {
                var options = $(this).data('slick') || {};
            } catch (e) {
            }
            options.prevArrow = ".lemon42-gallery-left";
            options.nextArrow = ".lemon42-gallery-right";
            $(this).slick(options);
        });
    }

    function initTable() {
        $(".pageTable").DataTable({
            aaSorting: [],
            lengthChange: false,
            searching: false,
            destroy: true,
            pageLength: 20,
            language: {
                paginate: {
                    next: "Nächste",
                    previous: "Vorherige"
                },
                info: "Zeige _START_ bis _END_ von _TOTAL_ Einträgen",
                infoEmpty: "Keine Daten gefunden.",
                zeroRecords: "Keine Daten gefunden."
            }
        });
    }

    // INIT DataTables IF NEEDED
    if ($(".pageTable").length > 0) {
        initTable();
    }

    // LIST OF MAJORS
    $("#majorFunctionSelect").on("change", function() {
        var param;
        param = {
            "position": $("#majorFunctionSelect").val()
        };
        $.get("/Verwaltung/Gemeinden/BuergermeisterInnen-Mandatare/getData", param, function(data) {
            $(".pageTable").DataTable().destroy();
            $("#majorData").html(data).promise().done(initTable());
            $("#csvDownloadLink").attr("href", window.location.href + "/XLS-Export?pk_position=" + $("#majorFunctionSelect").children('option:selected').data('position'));
        }, "html");
    });

    // LIST OF MANAGERS
    $("#managerFunctionSelect").on("change", function() {
        var param;
        param = {
            "position": $("#managerFunctionSelect").val()
        };
        $.get("/Verwaltung/Gemeinden/AmtsleiterInnen-MitarbeiterInnen/getData", param, function(data) {
            $(".pageTable").DataTable().destroy();
            $("#managerData").html(data).promise().done(initTable());
            $("#csvDownloadLink").attr("href", window.location.href + "/XLS-Export?pk_position=" + $("#managerFunctionSelect").children('option:selected').data('position'));
        }, "html");
    });

    // WIDGET TABS
    $(".nav-tabs li a").on("click", function(e) {
        e.preventDefault();
        $(".nav-tabs li.active").removeClass("active");
        $(this).parent().addClass("active");
        $(".wdgt-events-data").removeClass("show");
        $("#" + $(this).data("content")).addClass("show");
    });

    // DESKTOP SEARCH AJAX
    $("#searchFormDesktop").on("submit", function(e) {
        e.preventDefault();
        var param;
        var searchQuery = $("#searchQuery").val();

        if ($("#searchArea option:selected").val() == "8") {
            window.location.href = "/Service/Formulare-und-Leistungen?searchfield=" + searchQuery + "#search=" + searchQuery;
            return true
        }

        param = {
            "searchQuery": searchQuery,
            "searchArea": $("#searchArea option:selected").val()
        };
        $.get("/Diverses/Suche", param, function(data) {
            $(".main").html(data);
        });
    });

    // MOBILE SEARCH AJAX
    $("#searchFormMobile").on("submit", function(e) {
        e.preventDefault();
        var param;
        var searchQuery = $("#searchQueryMobile").val();

        if ($("#searchAreaMobile option:selected").val() == "8") {
            window.location.href = "/Service/Formulare-und-Leistungen?searchfield=" + searchQuery + "#search=" + searchQuery;
            return true
        }

        param = {
            "searchQuery": searchQuery,
            "searchArea": $("#searchAreaMobile option:selected").val()
        };
        $.get("/Diverses/Suche", param, function(data) {
            $(".main").html(data);
        });
    });

    // SEARCH TABS
    $(".search-tabs li a").on("click", function(e) {
        e.preventDefault();
        $(".search-tabs li.active").removeClass("active");
        $(this).parent().addClass("active");
        $(".search-result-tab").removeClass("show");
        $("#" + $(this).data("content")).addClass("show");
    });

    // NAV TABS
    $(".mainnav li a").not('.listelement').on("click", function(e) {       
          e.preventDefault();      
        // IF CLICK = DESKTOP SEARCH
        if ($(this).hasClass("searchLinkDesktop")) {
            $(".mainnav li.active").removeClass("active");
            $(".subnav").css("display", "");
            $("[id^='subnav']").addClass("hidden");
            $(".mainnav").hide();
            $(".searchDesktop").show();
            $("#searchQuery").focus();
            return true;
        }

        // IF CLICK = MOBILE SEARCH
        if ($(this).hasClass("mobile-search-switch")) {
            // FOR SOME REASON TOGGLE() DON'T WORK
            if ($(".searchMobile").is(":visible")) {
                $(".searchMobile").hide();
            } else {
                $(".searchMobile").show();
            }
            return true;
        }
      

        // IF CLICK IS EVERYTHING ELSE
      
        if ($(this).parent().hasClass("active")){          
            $(this).parent().removeClass("active")
            $(".subnav").css("display", "");
            $("[id^='subnav']").addClass("hidden");
        } else {
            $(".ak_list").addClass("hidden");
            $("#ak_opener").children("span").addClass("icon-angle-down");
            $("#ak_opener").children("span").removeClass("icon-angle-up");
            $(".mainnav li.active").removeClass("active");
            $(this).parent().addClass("active");
            $(".subnav").css("display", "block");
            $("[id^='subnav']").addClass("hidden");
            $("[id='subnav" + $(this).data("nav") + "']").toggleClass("hidden");
        }      
    });

    // CLOSE DESKTOP SEARCH PANEL
    $("#searchClose").on("click", function() {
        $(".searchDesktop").hide();
        $(".mainnav").show();
    });

    // CLOSE MOBILE SEARCH PANEL
    $("#searchCloseMobile").on("click", function() {
        $(".searchMobile").hide();
    });

    // OPEN/CLOSE MOBILE SIDEBAR NAV
    $("#menu-toggle, #sidebar-close").on("click", function(e) {
        e.preventDefault();
        $("#wrapper").toggleClass("toggled");
        $(".mobile-nav-switch").children(".icon-bars").toggleClass("icon-angle-double-left");
        $(".mobile-nav-switch").parent("li").removeClass("active");
    });

    // TOGGLE SIDEBAR SUBNAV
    $(".sidebar-subnav-link .subnav-opener").on("click", function(e) {
        e.preventDefault();
        var id = $(this).parent("a").data("subnav");
        $("#" + id).toggleClass("open");
        $(this).toggleClass("icon-angle-down").toggleClass("icon-angle-up");
        $(this).parents("li").toggleClass("lighten");
    });

    // TOGGLE MOBILE BREADCRUMB
    $(".mobile-breadcrumb .panel-heading").on("click", function() {
        var id = $(this).data("toggle");
        $("#" + id).toggleClass("in");
        $(this).toggleClass("open");
    });

    // TOGGLE MOBILE SUBNAV
    $(".mobile-subnav-item a").on("click", function() {
        $(".mobile-subnav-item a").removeClass("active");
        $(this).addClass("active");
    });
    $(".mobile-subnav-item .panel-heading").on("click", function() {
        var id = $(this).data("toggle");
        $("#" + id).toggleClass("in");
        $(this).toggleClass("open");
        $(this).children("a").addClass("active");

    });

    $('[data-copy="wdgt-focus2"]').html($('.wdgt-focus1>.wdgt-focus2').html());

    // ================ CUSTOM LAZY LOAD ===================
    // display: none ist das Problem, offset funkt nicht bei display: none;

    $(document).on('scroll', function() {
        $('.media.hidden').each(function() {
            if (isScrolledIntoView($(this))) {
                $(this).removeClass('hidden').css({
                    'display': 'none'
                }).fadeIn();
            }
        });
    });

    // SET "Route planen" LINK AUTOMATICALLY TO GIVEN ADDRESS
    if ($(".location").length > 0 && $(".route").length > 0) {
        var address;

        // GET THE ADDRESS FROM THE ".LOCATION" AREA AND FORMAT IT
        address = $(".location p").clone()//clone the element
        .children()//select all the children
        .remove()//remove all the children
        .end()//again go back to selected element
        .text().trim().replace(/\n(\s)+/g, ",");

        $(".route").attr("href", "https://maps.google.at/?q=" + address);
    }

    // ==================== DISPLAY GOOGLE MAPS ON EVENT DETAILS =================================

    function codeAddress() {
        var address = $("#evt_street").text() + ",AT-" + $("#evt_city").text();
        geocoder.geocode({
            'address': address
        }, function(results, status) {
            if (status == google.maps.GeocoderStatus.OK) {
                map.setCenter(results[0].geometry.location);
                var marker = new google.maps.Marker({
                    map: map,
                    position: results[0].geometry.location
                });
            } else {
                alert('Geocode was not successful for the following reason: ' + status);
            }
        });
    }

    function initialize() {
        geocoder = new google.maps.Geocoder();
        var latlng = new google.maps.LatLng(-34.397,150.644);
        var mapOptions = {
            zoom: 16,
            center: latlng,
            mapTypeId: google.maps.MapTypeId.ROADMAP
        };
        map = new google.maps.Map(document.getElementById('event-map'),mapOptions);
        codeAddress();
    }

    if ($("#event-map").length > 0) {
        var map;
        var geocoder;

        initialize();
    }

    // =================== NEWSLETTER ===================

    $("#nl-begutachtung-form").on("submit", function(e) {
        e.preventDefault();
        tmp = {};
        tmp.email = $("#nl-begutachtung-form #nl-begutachtung-email").val();
        evtdata = $.getJSON($(this)[0].getAttribute("action"), tmp, function(data) {
            res = data;

            if (res.STATUS == "ERROR") {
                alert("Es ist ein Fehler aufgetreten. Bitte versuchen Sie es erneut.");
                return false;
            }

            if (res.STATUS == "OK") {
                $("#nl-begutachtung-form").html("<strong>Die Anmeldung war erfolgreich. Sie erhalten ein Bestätigungsmail.</strong>");
                return true;
            }

        });

    });

    $("#nl-kundmachungen-form").on("submit", function(e) {
        e.preventDefault();
        tmp = {};
        tmp.email = $("#nl-kundmachungen-form #nl-kundmachungen-email").val();
        evtdata = $.getJSON($(this)[0].getAttribute("action"), tmp, function(data) {
            res = data;

            if (res.STATUS == "ERROR") {
                alert("Es ist ein Fehler aufgetreten. Bitte versuchen Sie es erneut.");
                return false;
            }

            if (res.STATUS == "OK") {
                $("#nl-kundmachungen-form").html("<strong>Die Anmeldung war erfolgreich. Sie erhalten ein Bestätigungsmail.</strong>");
                return true;
            }

        });

    });

});

// =================== ALLGEMEINES ==================
$.urlParam = function(name) {
    var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href);
    if (results == null) {
        return null;
    } else {
        return results[1] || 0;
    }
}
// =================== ACCESSKEYS ===================
$("#ak_opener").on("click", function() {
    if ($(".ak_list").hasClass("hidden")) {
        $(".mainnav li").removeClass("active")
        $(".subnav").css("display", "");
        $("[id^='subnav']").addClass("hidden");
        $(".ak_list").removeClass("hidden");
        $(this).children("span").removeClass("icon-angle-down");
        $(this).children("span").addClass("icon-angle-up");
    } else {
        $(".ak_list").addClass("hidden");
        $(this).children("span").addClass("icon-angle-down");
        $(this).children("span").removeClass("icon-angle-up");
    }

});
// =================== GEMEINDEN ===================
function setGemeindeName(data) {
    if (data.HEADER1 != "") {
        $(".header1").html(data.HEADER1);
    }
    $(".subnav-lvl2 li a[title='Gemeinde'], .breadcrumb li a[title='Gemeinde'], .panel-body li a[title='Gemeinde']").html(data.ORG_NAME);
    $(".subnav-lvl2 li a[title='Gemeinde'], .subnav-lvl3 li a, .mobile-subnav-item a, .breadcrumb .active a, .breadcrumb li a[title='Gemeinde'], .panel-body li a[title='Gemeinde'], .panel-body .active a").each(function(i) {
        var link = $(this)
          , originalhref = link.attr('href');
        link.attr('href', originalhref + "?key=" + data.GEMEINDENUMMER);
    });
}
;
function loadGemeindewappen(gmdId) {
    var $image = $("#imgWappen");
    var $downloadingImage = $("<img>");
    $downloadingImage.load(function() {
        $image.attr("src", $(this).attr("src"));
    });
    $downloadingImage.attr("src", "https://www.ktn.gv.at/gemeinde/images/GooglW_" + gmdId + "__wappenLA_kl_f.png");
}

function showMarktinfo() {
    var idx = $("#markt").val();
    $("div.show").addClass("hidden").removeClass("show");
    $("#marktinfo" + idx).addClass("show").removeClass("hidden");
}

// =================== THEMEN A-Z ===================
function setThemenInfo(data) {
    var themalink, subthemalink;

    // SET HEADER1
    $(".header1").html(data.HEADER1);

    // SET DESKTOP BREADBRUMB;
    themalink = "<a href=\"" + data.THEMA.URL + "\" title=\"" + data.THEMA.TITLE + "\">" + data.THEMA.TITLE + "</a>";
    $(".breadcrumb, .mobile-breadcrumb ol").append("<li>" + themalink + "</li>");
    $(".mobile-breadcrumb .current").html(data.THEMA.TITLE);
    if (data.SUBTHEMA.TITLE != "") {
        subthemalink = "<a href=\"" + data.SUBTHEMA.URL + "\" title=\"" + data.SUBTHEMA.TITLE + "\">" + data.SUBTHEMA.TITLE + "</a>";
        $(".breadcrumb, #collapseBreadcrumbMobile ol").append("<li>" + subthemalink + "</li>");
        $(".mobile-breadcrumb .current").html(data.SUBTHEMA.TITLE);
    }
    $(".breadcrumb li:last").addClass("active");

}
;
// ====================== CUSTOM LAZY LOAD ==============================

function isScrolledIntoView(elem) {
    //console.log("ELEM ", $(elem));
    var docViewTop = $(window).scrollTop();
    var docViewBottom = docViewTop + $(window).height();

    var elemTop = $(elem).offset().top;
    var elemBottom = elemTop + $(elem).height();
    //console.log("docViewTop = " + docViewTop + ", docViewBottom = " + docViewBottom + ", elemTop = " + elemTop + ", elemBottom = " + elemBottom);
    //console.log("RETURN " + ((elemBottom <= docViewBottom) && (elemTop >= docViewTop)));
    return ((elemBottom <= docViewBottom) && (elemTop >= docViewTop));
}


function sortSearchResultByAttr(attrName) {
    const newsContainer = document.getElementById('news');
    const divsToSort = Array.from(newsContainer.children).filter(
        (child) => child.tagName === 'DIV' && child.hasAttribute(attrName)
    );
   const sortedDivs = divsToSort.sort((a, b) => {
        const attA = a.getAttribute(attrName);
        const attB = b.getAttribute(attrName);
        if (attA === null || attB === null) {
            return 0;
        }
        return attB - attA; // Sort in descending order
    });
    divsToSort.forEach((div) => div.remove());
    sortedDivs.forEach((div) => newsContainer.appendChild(div));
}

function filterSearchResultByAttr(attrName, attrValue) {
    const newsContainer = document.getElementById('news');
    const divsToCheck = Array.from(newsContainer.children).filter(
        (child) => child.hasAttribute(attrName)
    )
    divsToCheck.forEach((div) => {
      const display = div.getAttribute(attrName) == attrValue ? "block" : "none"
      // console.log(div.getAttribute(attrName), attrValue, visibility)
      div.style.display = display;
    })
}
