View file Corano/corano-package/html/assets/js/isotope.min.js

File size: 107.56Kb
! function(t, e) { "function" == typeof define && define.amd ? define(e) : "object" == typeof module && module.exports ? module.exports = e() : t.getSize = e() }(window, function() {
    "use strict";

    function t(t) {
        var e = parseFloat(t),
            i = t.indexOf("%") == -1 && !isNaN(e);
        return i && e
    }

    function e() {}

    function i() {
        for (var t = { width: 0, height: 0, innerWidth: 0, innerHeight: 0, outerWidth: 0, outerHeight: 0 }, e = 0; e < g; e++) {
            var i = a[e];
            t[i] = 0
        }
        return t
    }

    function o(t) { var e = getComputedStyle(t); return e || h("Style returned " + e + ". Are you running this code in a hidden iframe on Firefox? See https://bit.ly/getsizebug1"), e }

    function r() {
        if (!p) {
            p = !0;
            var e = document.createElement("div");
            e.style.width = "200px", e.style.padding = "1px 2px 3px 4px", e.style.borderStyle = "solid", e.style.borderWidth = "1px 2px 3px 4px", e.style.boxSizing = "border-box";
            var i = document.body || document.documentElement;
            i.appendChild(e);
            var r = o(e);
            n = 200 == Math.round(t(r.width)), d.isBoxSizeOuter = n, i.removeChild(e)
        }
    }

    function d(e) {
        if (r(), "string" == typeof e && (e = document.querySelector(e)), e && "object" == typeof e && e.nodeType) {
            var d = o(e);
            if ("none" == d.display) return i();
            var h = {};
            h.width = e.offsetWidth, h.height = e.offsetHeight;
            for (var p = h.isBorderBox = "border-box" == d.boxSizing, u = 0; u < g; u++) {
                var f = a[u],
                    m = d[f],
                    s = parseFloat(m);
                h[f] = isNaN(s) ? 0 : s
            }
            var l = h.paddingLeft + h.paddingRight,
                c = h.paddingTop + h.paddingBottom,
                b = h.marginLeft + h.marginRight,
                x = h.marginTop + h.marginBottom,
                y = h.borderLeftWidth + h.borderRightWidth,
                v = h.borderTopWidth + h.borderBottomWidth,
                W = p && n,
                w = t(d.width);
            w !== !1 && (h.width = w + (W ? 0 : l + y));
            var B = t(d.height);
            return B !== !1 && (h.height = B + (W ? 0 : c + v)), h.innerWidth = h.width - (l + y), h.innerHeight = h.height - (c + v), h.outerWidth = h.width + b, h.outerHeight = h.height + x, h
        }
    }
    var n, h = "undefined" == typeof console ? e : function(t) { console.error(t) },
        a = ["paddingLeft", "paddingRight", "paddingTop", "paddingBottom", "marginLeft", "marginRight", "marginTop", "marginBottom", "borderLeftWidth", "borderRightWidth", "borderTopWidth", "borderBottomWidth"],
        g = a.length,
        p = !1;
    return d
});
! function(e, t) { "use strict"; "function" == typeof define && define.amd ? define(t) : "object" == typeof module && module.exports ? module.exports = t() : e.matchesSelector = t() }(window, function() {
    "use strict";
    var e = function() {
        var e = window.Element.prototype;
        if (e.matches) return "matches";
        if (e.matchesSelector) return "matchesSelector";
        for (var t = ["webkit", "moz", "ms", "o"], o = 0; o < t.length; o++) {
            var r = t[o],
                n = r + "MatchesSelector";
            if (e[n]) return n
        }
    }();
    return function(t, o) { return t[e](o) }
});
! function(e, t) { "function" == typeof define && define.amd ? define(t) : "object" == typeof module && module.exports ? module.exports = t() : e.EvEmitter = t() }("undefined" != typeof window ? window : this, function() {
    "use strict";

    function e() {}
    var t = e.prototype;
    return t.on = function(e, t) {
        if (e && t) {
            var n = this._events = this._events || {},
                i = n[e] = n[e] || [];
            return i.indexOf(t) == -1 && i.push(t), this
        }
    }, t.once = function(e, t) {
        if (e && t) {
            this.on(e, t);
            var n = this._onceEvents = this._onceEvents || {},
                i = n[e] = n[e] || {};
            return i[t] = !0, this
        }
    }, t.off = function(e, t) { var n = this._events && this._events[e]; if (n && n.length) { var i = n.indexOf(t); return i != -1 && n.splice(i, 1), this } }, t.emitEvent = function(e, t) {
        var n = this._events && this._events[e];
        if (n && n.length) {
            n = n.slice(0), t = t || [];
            for (var i = this._onceEvents && this._onceEvents[e], s = 0; s < n.length; s++) {
                var o = n[s],
                    f = i && i[o];
                f && (this.off(e, o), delete i[o]), o.apply(this, t)
            }
            return this
        }
    }, t.allOff = function() { delete this._events, delete this._onceEvents }, e
});
! function(e, t) { "function" == typeof define && define.amd ? define(["desandro-matches-selector/matches-selector"], function(r) { return t(e, r) }) : "object" == typeof module && module.exports ? module.exports = t(e, require("desandro-matches-selector")) : e.fizzyUIUtils = t(e, e.matchesSelector) }(window, function(e, t) {
    "use strict";
    var r = {};
    r.extend = function(e, t) { for (var r in t) e[r] = t[r]; return e }, r.modulo = function(e, t) { return (e % t + t) % t };
    var n = Array.prototype.slice;
    r.makeArray = function(e) { if (Array.isArray(e)) return e; if (null === e || void 0 === e) return []; var t = "object" == typeof e && "number" == typeof e.length; return t ? n.call(e) : [e] }, r.removeFrom = function(e, t) {
        var r = e.indexOf(t);
        r != -1 && e.splice(r, 1)
    }, r.getParent = function(e, r) {
        for (; e.parentNode && e != document.body;)
            if (e = e.parentNode, t(e, r)) return e
    }, r.getQueryElement = function(e) { return "string" == typeof e ? document.querySelector(e) : e }, r.handleEvent = function(e) {
        var t = "on" + e.type;
        this[t] && this[t](e)
    }, r.filterFindElements = function(e, n) {
        e = r.makeArray(e);
        var o = [];
        return e.forEach(function(e) {
            if (e instanceof HTMLElement) {
                if (!n) return void o.push(e);
                t(e, n) && o.push(e);
                for (var r = e.querySelectorAll(n), u = 0; u < r.length; u++) o.push(r[u])
            }
        }), o
    }, r.debounceMethod = function(e, t, r) {
        r = r || 100;
        var n = e.prototype[t],
            o = t + "Timeout";
        e.prototype[t] = function() {
            var e = this[o];
            clearTimeout(e);
            var t = arguments,
                u = this;
            this[o] = setTimeout(function() { n.apply(u, t), delete u[o] }, r)
        }
    }, r.docReady = function(e) { var t = document.readyState; "complete" == t || "interactive" == t ? setTimeout(e) : document.addEventListener("DOMContentLoaded", e) }, r.toDashed = function(e) { return e.replace(/(.)([A-Z])/g, function(e, t, r) { return t + "-" + r }).toLowerCase() };
    var o = e.console;
    return r.htmlInit = function(t, n) {
        r.docReady(function() {
            var u = r.toDashed(n),
                a = "data-" + u,
                i = document.querySelectorAll("[" + a + "]"),
                c = document.querySelectorAll(".js-" + u),
                d = r.makeArray(i).concat(r.makeArray(c)),
                f = a + "-options",
                s = e.jQuery;
            d.forEach(function(e) {
                var r, u = e.getAttribute(a) || e.getAttribute(f);
                try { r = u && JSON.parse(u) } catch (i) { return void(o && o.error("Error parsing " + a + " on " + e.className + ": " + i)) }
                var c = new t(e, r);
                s && s.data(e, n, c)
            })
        })
    }, r
});
! function(t, n) { "function" == typeof define && define.amd ? define(["jquery"], function(i) { return n(t, i) }) : "object" == typeof module && module.exports ? module.exports = n(t, require("jquery")) : t.jQueryBridget = n(t, t.jQuery) }(window, function(t, n) {
    "use strict";

    function i(i, r, a) {
        function f(t, n, e) {
            var o, r = "$()." + i + '("' + n + '")';
            return t.each(function(t, f) {
                var d = a.data(f, i);
                if (!d) return void u(i + " not initialized. Cannot call methods, i.e. " + r);
                var c = d[n];
                if (!c || "_" == n.charAt(0)) return void u(r + " is not a valid method");
                var p = c.apply(d, e);
                o = void 0 === o ? p : o
            }), void 0 !== o ? o : t
        }

        function d(t, n) {
            t.each(function(t, e) {
                var o = a.data(e, i);
                o ? (o.option(n), o._init()) : (o = new r(e, n), a.data(e, i, o))
            })
        }
        a = a || n || t.jQuery, a && (r.prototype.option || (r.prototype.option = function(t) { a.isPlainObject(t) && (this.options = a.extend(!0, this.options, t)) }), a.fn[i] = function(t) { if ("string" == typeof t) { var n = o.call(arguments, 1); return f(this, t, n) } return d(this, t), this }, e(a))
    }

    function e(t) {!t || t && t.bridget || (t.bridget = i) }
    var o = Array.prototype.slice,
        r = t.console,
        u = "undefined" == typeof r ? function() {} : function(t) { r.error(t) };
    return e(n || t.jQuery), i
});
! function(t, i) { "function" == typeof define && define.amd ? define(["ev-emitter/ev-emitter", "get-size/get-size"], i) : "object" == typeof module && module.exports ? module.exports = i(require("ev-emitter"), require("get-size")) : (t.Outlayer = {}, t.Outlayer.Item = i(t.EvEmitter, t.getSize)) }(window, function(t, i) {
    "use strict";

    function n(t) { for (var i in t) return !1; return i = null, !0 }

    function o(t, i) { t && (this.element = t, this.layout = i, this.position = { x: 0, y: 0 }, this._create()) }

    function e(t) { return t.replace(/([A-Z])/g, function(t) { return "-" + t.toLowerCase() }) }
    var s = document.documentElement.style,
        r = "string" == typeof s.transition ? "transition" : "WebkitTransition",
        a = "string" == typeof s.transform ? "transform" : "WebkitTransform",
        h = { WebkitTransition: "webkitTransitionEnd", transition: "transitionend" }[r],
        l = { transform: a, transition: r, transitionDuration: r + "Duration", transitionProperty: r + "Property", transitionDelay: r + "Delay" },
        u = o.prototype = Object.create(t.prototype);
    u.constructor = o, u._create = function() { this._transn = { ingProperties: {}, clean: {}, onEnd: {} }, this.css({ position: "absolute" }) }, u.handleEvent = function(t) {
        var i = "on" + t.type;
        this[i] && this[i](t)
    }, u.getSize = function() { this.size = i(this.element) }, u.css = function(t) {
        var i = this.element.style;
        for (var n in t) {
            var o = l[n] || n;
            i[o] = t[n]
        }
    }, u.getPosition = function() {
        var t = getComputedStyle(this.element),
            i = this.layout._getOption("originLeft"),
            n = this.layout._getOption("originTop"),
            o = t[i ? "left" : "right"],
            e = t[n ? "top" : "bottom"],
            s = parseFloat(o),
            r = parseFloat(e),
            a = this.layout.size;
        o.indexOf("%") != -1 && (s = s / 100 * a.width), e.indexOf("%") != -1 && (r = r / 100 * a.height), s = isNaN(s) ? 0 : s, r = isNaN(r) ? 0 : r, s -= i ? a.paddingLeft : a.paddingRight, r -= n ? a.paddingTop : a.paddingBottom, this.position.x = s, this.position.y = r
    }, u.layoutPosition = function() {
        var t = this.layout.size,
            i = {},
            n = this.layout._getOption("originLeft"),
            o = this.layout._getOption("originTop"),
            e = n ? "paddingLeft" : "paddingRight",
            s = n ? "left" : "right",
            r = n ? "right" : "left",
            a = this.position.x + t[e];
        i[s] = this.getXValue(a), i[r] = "";
        var h = o ? "paddingTop" : "paddingBottom",
            l = o ? "top" : "bottom",
            u = o ? "bottom" : "top",
            d = this.position.y + t[h];
        i[l] = this.getYValue(d), i[u] = "", this.css(i), this.emitEvent("layout", [this])
    }, u.getXValue = function(t) { var i = this.layout._getOption("horizontal"); return this.layout.options.percentPosition && !i ? t / this.layout.size.width * 100 + "%" : t + "px" }, u.getYValue = function(t) { var i = this.layout._getOption("horizontal"); return this.layout.options.percentPosition && i ? t / this.layout.size.height * 100 + "%" : t + "px" }, u._transitionTo = function(t, i) {
        this.getPosition();
        var n = this.position.x,
            o = this.position.y,
            e = t == this.position.x && i == this.position.y;
        if (this.setPosition(t, i), e && !this.isTransitioning) return void this.layoutPosition();
        var s = t - n,
            r = i - o,
            a = {};
        a.transform = this.getTranslate(s, r), this.transition({ to: a, onTransitionEnd: { transform: this.layoutPosition }, isCleaning: !0 })
    }, u.getTranslate = function(t, i) {
        var n = this.layout._getOption("originLeft"),
            o = this.layout._getOption("originTop");
        return t = n ? t : -t, i = o ? i : -i, "translate3d(" + t + "px, " + i + "px, 0)"
    }, u.goTo = function(t, i) { this.setPosition(t, i), this.layoutPosition() }, u.moveTo = u._transitionTo, u.setPosition = function(t, i) { this.position.x = parseFloat(t), this.position.y = parseFloat(i) }, u._nonTransition = function(t) { this.css(t.to), t.isCleaning && this._removeStyles(t.to); for (var i in t.onTransitionEnd) t.onTransitionEnd[i].call(this) }, u.transition = function(t) {
        if (!parseFloat(this.layout.options.transitionDuration)) return void this._nonTransition(t);
        var i = this._transn;
        for (var n in t.onTransitionEnd) i.onEnd[n] = t.onTransitionEnd[n];
        for (n in t.to) i.ingProperties[n] = !0, t.isCleaning && (i.clean[n] = !0);
        if (t.from) {
            this.css(t.from);
            var o = this.element.offsetHeight;
            o = null
        }
        this.enableTransition(t.to), this.css(t.to), this.isTransitioning = !0
    };
    var d = "opacity," + e(a);
    u.enableTransition = function() {
        if (!this.isTransitioning) {
            var t = this.layout.options.transitionDuration;
            t = "number" == typeof t ? t + "ms" : t, this.css({ transitionProperty: d, transitionDuration: t, transitionDelay: this.staggerDelay || 0 }), this.element.addEventListener(h, this, !1)
        }
    }, u.onwebkitTransitionEnd = function(t) { this.ontransitionend(t) }, u.onotransitionend = function(t) { this.ontransitionend(t) };
    var p = { "-webkit-transform": "transform" };
    u.ontransitionend = function(t) {
        if (t.target === this.element) {
            var i = this._transn,
                o = p[t.propertyName] || t.propertyName;
            if (delete i.ingProperties[o], n(i.ingProperties) && this.disableTransition(), o in i.clean && (this.element.style[t.propertyName] = "", delete i.clean[o]), o in i.onEnd) {
                var e = i.onEnd[o];
                e.call(this), delete i.onEnd[o]
            }
            this.emitEvent("transitionEnd", [this])
        }
    }, u.disableTransition = function() { this.removeTransitionStyles(), this.element.removeEventListener(h, this, !1), this.isTransitioning = !1 }, u._removeStyles = function(t) {
        var i = {};
        for (var n in t) i[n] = "";
        this.css(i)
    };
    var f = { transitionProperty: "", transitionDuration: "", transitionDelay: "" };
    return u.removeTransitionStyles = function() { this.css(f) }, u.stagger = function(t) { t = isNaN(t) ? 0 : t, this.staggerDelay = t + "ms" }, u.removeElem = function() { this.element.parentNode.removeChild(this.element), this.css({ display: "" }), this.emitEvent("remove", [this]) }, u.remove = function() { return r && parseFloat(this.layout.options.transitionDuration) ? (this.once("transitionEnd", function() { this.removeElem() }), void this.hide()) : void this.removeElem() }, u.reveal = function() {
        delete this.isHidden, this.css({ display: "" });
        var t = this.layout.options,
            i = {},
            n = this.getHideRevealTransitionEndProperty("visibleStyle");
        i[n] = this.onRevealTransitionEnd, this.transition({ from: t.hiddenStyle, to: t.visibleStyle, isCleaning: !0, onTransitionEnd: i })
    }, u.onRevealTransitionEnd = function() { this.isHidden || this.emitEvent("reveal") }, u.getHideRevealTransitionEndProperty = function(t) { var i = this.layout.options[t]; if (i.opacity) return "opacity"; for (var n in i) return n }, u.hide = function() {
        this.isHidden = !0, this.css({ display: "" });
        var t = this.layout.options,
            i = {},
            n = this.getHideRevealTransitionEndProperty("hiddenStyle");
        i[n] = this.onHideTransitionEnd, this.transition({ from: t.visibleStyle, to: t.hiddenStyle, isCleaning: !0, onTransitionEnd: i })
    }, u.onHideTransitionEnd = function() { this.isHidden && (this.css({ display: "none" }), this.emitEvent("hide")) }, u.destroy = function() { this.css({ position: "", left: "", right: "", top: "", bottom: "", transition: "", transform: "" }) }, o
});
! function(t, e) { "use strict"; "function" == typeof define && define.amd ? define(["ev-emitter/ev-emitter", "get-size/get-size", "fizzy-ui-utils/utils", "./item"], function(i, n, s, o) { return e(t, i, n, s, o) }) : "object" == typeof module && module.exports ? module.exports = e(t, require("ev-emitter"), require("get-size"), require("fizzy-ui-utils"), require("./item")) : t.Outlayer = e(t, t.EvEmitter, t.getSize, t.fizzyUIUtils, t.Outlayer.Item) }(window, function(t, e, i, n, s) {
    "use strict";

    function o(t, e) {
        var i = n.getQueryElement(t);
        if (!i) return void(h && h.error("Bad element for " + this.constructor.namespace + ": " + (i || t)));
        this.element = i, u && (this.$element = u(this.element)), this.options = n.extend({}, this.constructor.defaults), this.option(e);
        var s = ++c;
        this.element.outlayerGUID = s, f[s] = this, this._create();
        var o = this._getOption("initLayout");
        o && this.layout()
    }

    function r(t) {
        function e() { t.apply(this, arguments) }
        return e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e
    }

    function a(t) {
        if ("number" == typeof t) return t;
        var e = t.match(/(^\d*\.?\d*)(\w*)/),
            i = e && e[1],
            n = e && e[2];
        if (!i.length) return 0;
        i = parseFloat(i);
        var s = d[n] || 1;
        return i * s
    }
    var h = t.console,
        u = t.jQuery,
        m = function() {},
        c = 0,
        f = {};
    o.namespace = "outlayer", o.Item = s, o.defaults = { containerStyle: { position: "relative" }, initLayout: !0, originLeft: !0, originTop: !0, resize: !0, resizeContainer: !0, transitionDuration: "0.4s", hiddenStyle: { opacity: 0, transform: "scale(0.001)" }, visibleStyle: { opacity: 1, transform: "scale(1)" } };
    var l = o.prototype;
    n.extend(l, e.prototype), l.option = function(t) { n.extend(this.options, t) }, l._getOption = function(t) { var e = this.constructor.compatOptions[t]; return e && void 0 !== this.options[e] ? this.options[e] : this.options[t] }, o.compatOptions = { initLayout: "isInitLayout", horizontal: "isHorizontal", layoutInstant: "isLayoutInstant", originLeft: "isOriginLeft", originTop: "isOriginTop", resize: "isResizeBound", resizeContainer: "isResizingContainer" }, l._create = function() {
        this.reloadItems(), this.stamps = [], this.stamp(this.options.stamp), n.extend(this.element.style, this.options.containerStyle);
        var t = this._getOption("resize");
        t && this.bindResize()
    }, l.reloadItems = function() { this.items = this._itemize(this.element.children) }, l._itemize = function(t) {
        for (var e = this._filterFindItemElements(t), i = this.constructor.Item, n = [], s = 0; s < e.length; s++) {
            var o = e[s],
                r = new i(o, this);
            n.push(r)
        }
        return n
    }, l._filterFindItemElements = function(t) { return n.filterFindElements(t, this.options.itemSelector) }, l.getItemElements = function() { return this.items.map(function(t) { return t.element }) }, l.layout = function() {
        this._resetLayout(), this._manageStamps();
        var t = this._getOption("layoutInstant"),
            e = void 0 !== t ? t : !this._isLayoutInited;
        this.layoutItems(this.items, e), this._isLayoutInited = !0
    }, l._init = l.layout, l._resetLayout = function() { this.getSize() }, l.getSize = function() { this.size = i(this.element) }, l._getMeasurement = function(t, e) {
        var n, s = this.options[t];
        s ? ("string" == typeof s ? n = this.element.querySelector(s) : s instanceof HTMLElement && (n = s), this[t] = n ? i(n)[e] : s) : this[t] = 0
    }, l.layoutItems = function(t, e) { t = this._getItemsForLayout(t), this._layoutItems(t, e), this._postLayout() }, l._getItemsForLayout = function(t) { return t.filter(function(t) { return !t.isIgnored }) }, l._layoutItems = function(t, e) {
        if (this._emitCompleteOnItems("layout", t), t && t.length) {
            var i = [];
            t.forEach(function(t) {
                var n = this._getItemLayoutPosition(t);
                n.item = t, n.isInstant = e || t.isLayoutInstant, i.push(n)
            }, this), this._processLayoutQueue(i)
        }
    }, l._getItemLayoutPosition = function() { return { x: 0, y: 0 } }, l._processLayoutQueue = function(t) { this.updateStagger(), t.forEach(function(t, e) { this._positionItem(t.item, t.x, t.y, t.isInstant, e) }, this) }, l.updateStagger = function() { var t = this.options.stagger; return null === t || void 0 === t ? void(this.stagger = 0) : (this.stagger = a(t), this.stagger) }, l._positionItem = function(t, e, i, n, s) { n ? t.goTo(e, i) : (t.stagger(s * this.stagger), t.moveTo(e, i)) }, l._postLayout = function() { this.resizeContainer() }, l.resizeContainer = function() {
        var t = this._getOption("resizeContainer");
        if (t) {
            var e = this._getContainerSize();
            e && (this._setContainerMeasure(e.width, !0), this._setContainerMeasure(e.height, !1))
        }
    }, l._getContainerSize = m, l._setContainerMeasure = function(t, e) {
        if (void 0 !== t) {
            var i = this.size;
            i.isBorderBox && (t += e ? i.paddingLeft + i.paddingRight + i.borderLeftWidth + i.borderRightWidth : i.paddingBottom + i.paddingTop + i.borderTopWidth + i.borderBottomWidth), t = Math.max(t, 0), this.element.style[e ? "width" : "height"] = t + "px"
        }
    }, l._emitCompleteOnItems = function(t, e) {
        function i() { s.dispatchEvent(t + "Complete", null, [e]) }

        function n() { r++, r == o && i() }
        var s = this,
            o = e.length;
        if (!e || !o) return void i();
        var r = 0;
        e.forEach(function(e) { e.once(t, n) })
    }, l.dispatchEvent = function(t, e, i) {
        var n = e ? [e].concat(i) : i;
        if (this.emitEvent(t, n), u)
            if (this.$element = this.$element || u(this.element), e) {
                var s = u.Event(e);
                s.type = t, this.$element.trigger(s, i)
            } else this.$element.trigger(t, i)
    }, l.ignore = function(t) {
        var e = this.getItem(t);
        e && (e.isIgnored = !0)
    }, l.unignore = function(t) {
        var e = this.getItem(t);
        e && delete e.isIgnored
    }, l.stamp = function(t) { t = this._find(t), t && (this.stamps = this.stamps.concat(t), t.forEach(this.ignore, this)) }, l.unstamp = function(t) { t = this._find(t), t && t.forEach(function(t) { n.removeFrom(this.stamps, t), this.unignore(t) }, this) }, l._find = function(t) { if (t) return "string" == typeof t && (t = this.element.querySelectorAll(t)), t = n.makeArray(t) }, l._manageStamps = function() { this.stamps && this.stamps.length && (this._getBoundingRect(), this.stamps.forEach(this._manageStamp, this)) }, l._getBoundingRect = function() {
        var t = this.element.getBoundingClientRect(),
            e = this.size;
        this._boundingRect = { left: t.left + e.paddingLeft + e.borderLeftWidth, top: t.top + e.paddingTop + e.borderTopWidth, right: t.right - (e.paddingRight + e.borderRightWidth), bottom: t.bottom - (e.paddingBottom + e.borderBottomWidth) }
    }, l._manageStamp = m, l._getElementOffset = function(t) {
        var e = t.getBoundingClientRect(),
            n = this._boundingRect,
            s = i(t),
            o = { left: e.left - n.left - s.marginLeft, top: e.top - n.top - s.marginTop, right: n.right - e.right - s.marginRight, bottom: n.bottom - e.bottom - s.marginBottom };
        return o
    }, l.handleEvent = n.handleEvent, l.bindResize = function() { t.addEventListener("resize", this), this.isResizeBound = !0 }, l.unbindResize = function() { t.removeEventListener("resize", this), this.isResizeBound = !1 }, l.onresize = function() { this.resize() }, n.debounceMethod(o, "onresize", 100), l.resize = function() { this.isResizeBound && this.needsResizeLayout() && this.layout() }, l.needsResizeLayout = function() {
        var t = i(this.element),
            e = this.size && t;
        return e && t.innerWidth !== this.size.innerWidth
    }, l.addItems = function(t) { var e = this._itemize(t); return e.length && (this.items = this.items.concat(e)), e }, l.appended = function(t) {
        var e = this.addItems(t);
        e.length && (this.layoutItems(e, !0), this.reveal(e))
    }, l.prepended = function(t) {
        var e = this._itemize(t);
        if (e.length) {
            var i = this.items.slice(0);
            this.items = e.concat(i), this._resetLayout(), this._manageStamps(), this.layoutItems(e, !0), this.reveal(e), this.layoutItems(i)
        }
    }, l.reveal = function(t) {
        if (this._emitCompleteOnItems("reveal", t), t && t.length) {
            var e = this.updateStagger();
            t.forEach(function(t, i) { t.stagger(i * e), t.reveal() })
        }
    }, l.hide = function(t) {
        if (this._emitCompleteOnItems("hide", t), t && t.length) {
            var e = this.updateStagger();
            t.forEach(function(t, i) { t.stagger(i * e), t.hide() })
        }
    }, l.revealItemElements = function(t) {
        var e = this.getItems(t);
        this.reveal(e)
    }, l.hideItemElements = function(t) {
        var e = this.getItems(t);
        this.hide(e)
    }, l.getItem = function(t) { for (var e = 0; e < this.items.length; e++) { var i = this.items[e]; if (i.element == t) return i } }, l.getItems = function(t) {
        t = n.makeArray(t);
        var e = [];
        return t.forEach(function(t) {
            var i = this.getItem(t);
            i && e.push(i)
        }, this), e
    }, l.remove = function(t) {
        var e = this.getItems(t);
        this._emitCompleteOnItems("remove", e), e && e.length && e.forEach(function(t) { t.remove(), n.removeFrom(this.items, t) }, this)
    }, l.destroy = function() {
        var t = this.element.style;
        t.height = "", t.position = "", t.width = "", this.items.forEach(function(t) { t.destroy() }), this.unbindResize();
        var e = this.element.outlayerGUID;
        delete f[e], delete this.element.outlayerGUID, u && u.removeData(this.element, this.constructor.namespace)
    }, o.data = function(t) { t = n.getQueryElement(t); var e = t && t.outlayerGUID; return e && f[e] }, o.create = function(t, e) { var i = r(o); return i.defaults = n.extend({}, o.defaults), n.extend(i.defaults, e), i.compatOptions = n.extend({}, o.compatOptions), i.namespace = t, i.data = o.data, i.Item = r(s), n.htmlInit(i, t), u && u.bridget && u.bridget(t, i), i };
    var d = { ms: 1, s: 1e3 };
    return o.Item = s, o
});
! function(e, t) { "function" == typeof define && define.amd ? define(["get-size/get-size", "outlayer/outlayer"], t) : "object" == typeof module && module.exports ? module.exports = t(require("get-size"), require("outlayer")) : (e.Isotope = e.Isotope || {}, e.Isotope.LayoutMode = t(e.getSize, e.Outlayer)) }(window, function(e, t) {
    "use strict";

    function i(e) { this.isotope = e, e && (this.options = e.options[this.namespace], this.element = e.element, this.items = e.filteredItems, this.size = e.size) }
    var o = i.prototype,
        s = ["_resetLayout", "_getItemLayoutPosition", "_manageStamp", "_getContainerSize", "_getElementOffset", "needsResizeLayout", "_getOption"];
    return s.forEach(function(e) { o[e] = function() { return t.prototype[e].apply(this.isotope, arguments) } }), o.needsVerticalResizeLayout = function() {
        var t = e(this.isotope.element),
            i = this.isotope.size && t;
        return i && t.innerHeight != this.isotope.size.innerHeight
    }, o._getMeasurement = function() { this.isotope._getMeasurement.apply(this, arguments) }, o.getColumnWidth = function() { this.getSegmentSize("column", "Width") }, o.getRowHeight = function() { this.getSegmentSize("row", "Height") }, o.getSegmentSize = function(e, t) {
        var i = e + t,
            o = "outer" + t;
        if (this._getMeasurement(i, o), !this[i]) {
            var s = this.getFirstItemSize();
            this[i] = s && s[o] || this.isotope.size["inner" + t]
        }
    }, o.getFirstItemSize = function() { var t = this.isotope.filteredItems[0]; return t && t.element && e(t.element) }, o.layout = function() { this.isotope.layout.apply(this.isotope, arguments) }, o.getSize = function() { this.isotope.getSize(), this.size = this.isotope.size }, i.modes = {}, i.create = function(e, t) {
        function s() { i.apply(this, arguments) }
        return s.prototype = Object.create(o), s.prototype.constructor = s, t && (s.options = t), s.prototype.namespace = e, i.modes[e] = s, s
    }, i
});
! function(t, o) { "function" == typeof define && define.amd ? define(["outlayer/outlayer"], o) : "object" == typeof module && module.exports ? module.exports = o(require("outlayer")) : (t.Isotope = t.Isotope || {}, t.Isotope.Item = o(t.Outlayer)) }(window, function(t) {
    "use strict";

    function o() { t.Item.apply(this, arguments) }
    var e = o.prototype = Object.create(t.Item.prototype),
        i = e._create;
    e._create = function() { this.id = this.layout.itemGUID++, i.call(this), this.sortData = {} }, e.updateSortData = function() {
        if (!this.isIgnored) {
            this.sortData.id = this.id, this.sortData["original-order"] = this.id, this.sortData.random = Math.random();
            var t = this.layout.options.getSortData,
                o = this.layout._sorters;
            for (var e in t) {
                var i = o[e];
                this.sortData[e] = i(this.element, this)
            }
        }
    };
    var a = e.destroy;
    return e.destroy = function() { a.apply(this, arguments), this.css({ display: "" }) }, o
});
! function(t, e) { "function" == typeof define && define.amd ? define(["outlayer/outlayer", "get-size/get-size", "desandro-matches-selector/matches-selector", "fizzy-ui-utils/utils", "./item", "./layout-mode", "./layout-modes/masonry", "./layout-modes/fit-rows", "./layout-modes/vertical"], function(i, r, o, s, n, a) { return e(t, i, r, o, s, n, a) }) : "object" == typeof module && module.exports ? module.exports = e(t, require("outlayer"), require("get-size"), require("desandro-matches-selector"), require("fizzy-ui-utils"), require("./item"), require("./layout-mode"), require("./layout-modes/masonry"), require("./layout-modes/fit-rows"), require("./layout-modes/vertical")) : t.Isotope = e(t, t.Outlayer, t.getSize, t.matchesSelector, t.fizzyUIUtils, t.Isotope.Item, t.Isotope.LayoutMode) }(window, function(t, e, i, r, o, s, n) {
    "use strict";

    function a(t, e) {
        return function(i, r) {
            for (var o = 0; o < t.length; o++) {
                var s = t[o],
                    n = i.sortData[s],
                    a = r.sortData[s];
                if (n > a || n < a) {
                    var u = void 0 !== e[s] ? e[s] : e,
                        h = u ? 1 : -1;
                    return (n > a ? 1 : -1) * h
                }
            }
            return 0
        }
    }
    var u = t.jQuery,
        h = String.prototype.trim ? function(t) { return t.trim() } : function(t) { return t.replace(/^\s+|\s+$/g, "") },
        l = e.create("isotope", { layoutMode: "masonry", isJQueryFiltering: !0, sortAscending: !0 });
    l.Item = s, l.LayoutMode = n;
    var m = l.prototype;
    m._create = function() { this.itemGUID = 0, this._sorters = {}, this._getSorters(), e.prototype._create.call(this), this.modes = {}, this.filteredItems = this.items, this.sortHistory = ["original-order"]; for (var t in n.modes) this._initLayoutMode(t) }, m.reloadItems = function() { this.itemGUID = 0, e.prototype.reloadItems.call(this) }, m._itemize = function() {
        for (var t = e.prototype._itemize.apply(this, arguments), i = 0; i < t.length; i++) {
            var r = t[i];
            r.id = this.itemGUID++
        }
        return this._updateItemsSortData(t), t
    }, m._initLayoutMode = function(t) {
        var e = n.modes[t],
            i = this.options[t] || {};
        this.options[t] = e.options ? o.extend(e.options, i) : i, this.modes[t] = new e(this)
    }, m.layout = function() { return !this._isLayoutInited && this._getOption("initLayout") ? void this.arrange() : void this._layout() }, m._layout = function() {
        var t = this._getIsInstant();
        this._resetLayout(), this._manageStamps(), this.layoutItems(this.filteredItems, t), this._isLayoutInited = !0
    }, m.arrange = function(t) {
        this.option(t), this._getIsInstant();
        var e = this._filter(this.items);
        this.filteredItems = e.matches, this._bindArrangeComplete(), this._isInstant ? this._noTransition(this._hideReveal, [e]) : this._hideReveal(e), this._sort(), this._layout()
    }, m._init = m.arrange, m._hideReveal = function(t) { this.reveal(t.needReveal), this.hide(t.needHide) }, m._getIsInstant = function() {
        var t = this._getOption("layoutInstant"),
            e = void 0 !== t ? t : !this._isLayoutInited;
        return this._isInstant = e, e
    }, m._bindArrangeComplete = function() {
        function t() { e && i && r && o.dispatchEvent("arrangeComplete", null, [o.filteredItems]) }
        var e, i, r, o = this;
        this.once("layoutComplete", function() { e = !0, t() }), this.once("hideComplete", function() { i = !0, t() }), this.once("revealComplete", function() { r = !0, t() })
    }, m._filter = function(t) {
        var e = this.options.filter;
        e = e || "*";
        for (var i = [], r = [], o = [], s = this._getFilterTest(e), n = 0; n < t.length; n++) {
            var a = t[n];
            if (!a.isIgnored) {
                var u = s(a);
                u && i.push(a), u && a.isHidden ? r.push(a) : u || a.isHidden || o.push(a)
            }
        }
        return { matches: i, needReveal: r, needHide: o }
    }, m._getFilterTest = function(t) { return u && this.options.isJQueryFiltering ? function(e) { return u(e.element).is(t) } : "function" == typeof t ? function(e) { return t(e.element) } : function(e) { return r(e.element, t) } }, m.updateSortData = function(t) {
        var e;
        t ? (t = o.makeArray(t), e = this.getItems(t)) : e = this.items, this._getSorters(), this._updateItemsSortData(e)
    }, m._getSorters = function() {
        var t = this.options.getSortData;
        for (var e in t) {
            var i = t[e];
            this._sorters[e] = d(i)
        }
    }, m._updateItemsSortData = function(t) {
        for (var e = t && t.length, i = 0; e && i < e; i++) {
            var r = t[i];
            r.updateSortData()
        }
    };
    var d = function() {
        function t(t) {
            if ("string" != typeof t) return t;
            var i = h(t).split(" "),
                r = i[0],
                o = r.match(/^\[(.+)\]$/),
                s = o && o[1],
                n = e(s, r),
                a = l.sortDataParsers[i[1]];
            return t = a ? function(t) { return t && a(n(t)) } : function(t) { return t && n(t) }
        }

        function e(t, e) { return t ? function(e) { return e.getAttribute(t) } : function(t) { var i = t.querySelector(e); return i && i.textContent } }
        return t
    }();
    l.sortDataParsers = { parseInt: function(t) { return parseInt(t, 10) }, parseFloat: function(t) { return parseFloat(t) } }, m._sort = function() {
        if (this.options.sortBy) {
            var t = o.makeArray(this.options.sortBy);
            this._getIsSameSortBy(t) || (this.sortHistory = t.concat(this.sortHistory));
            var e = a(this.sortHistory, this.options.sortAscending);
            this.filteredItems.sort(e)
        }
    }, m._getIsSameSortBy = function(t) {
        for (var e = 0; e < t.length; e++)
            if (t[e] != this.sortHistory[e]) return !1;
        return !0
    }, m._mode = function() {
        var t = this.options.layoutMode,
            e = this.modes[t];
        if (!e) throw new Error("No layout mode: " + t);
        return e.options = this.options[t], e
    }, m._resetLayout = function() { e.prototype._resetLayout.call(this), this._mode()._resetLayout() }, m._getItemLayoutPosition = function(t) { return this._mode()._getItemLayoutPosition(t) }, m._manageStamp = function(t) { this._mode()._manageStamp(t) }, m._getContainerSize = function() { return this._mode()._getContainerSize() }, m.needsResizeLayout = function() { return this._mode().needsResizeLayout() }, m.appended = function(t) {
        var e = this.addItems(t);
        if (e.length) {
            var i = this._filterRevealAdded(e);
            this.filteredItems = this.filteredItems.concat(i)
        }
    }, m.prepended = function(t) {
        var e = this._itemize(t);
        if (e.length) {
            this._resetLayout(), this._manageStamps();
            var i = this._filterRevealAdded(e);
            this.layoutItems(this.filteredItems), this.filteredItems = i.concat(this.filteredItems), this.items = e.concat(this.items)
        }
    }, m._filterRevealAdded = function(t) { var e = this._filter(t); return this.hide(e.needHide), this.reveal(e.matches), this.layoutItems(e.matches, !0), e.matches }, m.insert = function(t) {
        var e = this.addItems(t);
        if (e.length) {
            var i, r, o = e.length;
            for (i = 0; i < o; i++) r = e[i], this.element.appendChild(r.element);
            var s = this._filter(e).matches;
            for (i = 0; i < o; i++) e[i].isLayoutInstant = !0;
            for (this.arrange(), i = 0; i < o; i++) delete e[i].isLayoutInstant;
            this.reveal(s)
        }
    };
    var f = m.remove;
    return m.remove = function(t) {
        t = o.makeArray(t);
        var e = this.getItems(t);
        f.call(this, t);
        for (var i = e && e.length, r = 0; i && r < i; r++) {
            var s = e[r];
            o.removeFrom(this.filteredItems, s)
        }
    }, m.shuffle = function() {
        for (var t = 0; t < this.items.length; t++) {
            var e = this.items[t];
            e.sortData.random = Math.random()
        }
        this.options.sortBy = "random", this._sort(), this._layout()
    }, m._noTransition = function(t, e) {
        var i = this.options.transitionDuration;
        this.options.transitionDuration = 0;
        var r = t.apply(this, e);
        return this.options.transitionDuration = i, r
    }, m.getFilteredItemElements = function() { return this.filteredItems.map(function(t) { return t.element }) }, l
});
! function(t, e) { "function" == typeof define && define.amd ? define(["../layout-mode"], e) : "object" == typeof exports ? module.exports = e(require("../layout-mode")) : e(t.Isotope.LayoutMode) }(window, function(t) {
    "use strict";
    var e = t.create("fitRows"),
        i = e.prototype;
    return i._resetLayout = function() { this.x = 0, this.y = 0, this.maxY = 0, this._getMeasurement("gutter", "outerWidth") }, i._getItemLayoutPosition = function(t) {
        t.getSize();
        var e = t.size.outerWidth + this.gutter,
            i = this.isotope.size.innerWidth + this.gutter;
        0 !== this.x && e + this.x > i && (this.x = 0, this.y = this.maxY);
        var o = { x: this.x, y: this.y };
        return this.maxY = Math.max(this.maxY, this.y + t.size.outerHeight), this.x += e, o
    }, i._getContainerSize = function() { return { height: this.maxY } }, e
});
! function(t, e) { "function" == typeof define && define.amd ? define(["../layout-mode"], e) : "object" == typeof module && module.exports ? module.exports = e(require("../layout-mode")) : e(t.Isotope.LayoutMode) }(window, function(t) {
    "use strict";
    var e = t.create("vertical", { horizontalAlignment: 0 }),
        o = e.prototype;
    return o._resetLayout = function() { this.y = 0 }, o._getItemLayoutPosition = function(t) {
        t.getSize();
        var e = (this.isotope.size.innerWidth - t.size.outerWidth) * this.options.horizontalAlignment,
            o = this.y;
        return this.y += t.size.outerHeight, { x: e, y: o }
    }, o._getContainerSize = function() { return { height: this.y } }, e
});
! function(t, i) { "function" == typeof define && define.amd ? define(["outlayer/outlayer", "get-size/get-size"], i) : "object" == typeof module && module.exports ? module.exports = i(require("outlayer"), require("get-size")) : t.Masonry = i(t.Outlayer, t.getSize) }(window, function(t, i) {
    "use strict";
    var o = t.create("masonry");
    o.compatOptions.fitWidth = "isFitWidth";
    var e = o.prototype;
    return e._resetLayout = function() {
        this.getSize(), this._getMeasurement("columnWidth", "outerWidth"), this._getMeasurement("gutter", "outerWidth"), this.measureColumns(), this.colYs = [];
        for (var t = 0; t < this.cols; t++) this.colYs.push(0);
        this.maxY = 0, this.horizontalColIndex = 0
    }, e.measureColumns = function() {
        if (this.getContainerWidth(), !this.columnWidth) {
            var t = this.items[0],
                o = t && t.element;
            this.columnWidth = o && i(o).outerWidth || this.containerWidth
        }
        var e = this.columnWidth += this.gutter,
            h = this.containerWidth + this.gutter,
            n = h / e,
            s = e - h % e,
            r = s && s < 1 ? "round" : "floor";
        n = Math[r](n), this.cols = Math.max(n, 1)
    }, e.getContainerWidth = function() {
        var t = this._getOption("fitWidth"),
            o = t ? this.element.parentNode : this.element,
            e = i(o);
        this.containerWidth = e && e.innerWidth
    }, e._getItemLayoutPosition = function(t) {
        t.getSize();
        var i = t.size.outerWidth % this.columnWidth,
            o = i && i < 1 ? "round" : "ceil",
            e = Math[o](t.size.outerWidth / this.columnWidth);
        e = Math.min(e, this.cols);
        for (var h = this.options.horizontalOrder ? "_getHorizontalColPosition" : "_getTopColPosition", n = this[h](e, t), s = { x: this.columnWidth * n.col, y: n.y }, r = n.y + t.size.outerHeight, a = e + n.col, u = n.col; u < a; u++) this.colYs[u] = r;
        return s
    }, e._getTopColPosition = function(t) {
        var i = this._getTopColGroup(t),
            o = Math.min.apply(Math, i);
        return { col: i.indexOf(o), y: o }
    }, e._getTopColGroup = function(t) { if (t < 2) return this.colYs; for (var i = [], o = this.cols + 1 - t, e = 0; e < o; e++) i[e] = this._getColGroupY(e, t); return i }, e._getColGroupY = function(t, i) { if (i < 2) return this.colYs[t]; var o = this.colYs.slice(t, t + i); return Math.max.apply(Math, o) }, e._getHorizontalColPosition = function(t, i) {
        var o = this.horizontalColIndex % this.cols,
            e = t > 1 && o + t > this.cols;
        o = e ? 0 : o;
        var h = i.size.outerWidth && i.size.outerHeight;
        return this.horizontalColIndex = h ? o + t : this.horizontalColIndex, { col: o, y: this._getColGroupY(o, t) }
    }, e._manageStamp = function(t) {
        var o = i(t),
            e = this._getElementOffset(t),
            h = this._getOption("originLeft"),
            n = h ? e.left : e.right,
            s = n + o.outerWidth,
            r = Math.floor(n / this.columnWidth);
        r = Math.max(0, r);
        var a = Math.floor(s / this.columnWidth);
        a -= s % this.columnWidth ? 0 : 1, a = Math.min(this.cols - 1, a);
        for (var u = this._getOption("originTop"), l = (u ? e.top : e.bottom) + o.outerHeight, c = r; c <= a; c++) this.colYs[c] = Math.max(l, this.colYs[c])
    }, e._getContainerSize = function() { this.maxY = Math.max.apply(Math, this.colYs); var t = { height: this.maxY }; return this._getOption("fitWidth") && (t.width = this._getContainerFitWidth()), t }, e._getContainerFitWidth = function() { for (var t = 0, i = this.cols; --i && 0 === this.colYs[i];) t++; return (this.cols - t) * this.columnWidth - this.gutter }, e.needsResizeLayout = function() { var t = this.containerWidth; return this.getContainerWidth(), t != this.containerWidth }, o
});
! function(t, o) { "function" == typeof define && define.amd ? define(["../layout-mode", "masonry-layout/masonry"], o) : "object" == typeof module && module.exports ? module.exports = o(require("../layout-mode"), require("masonry-layout")) : o(t.Isotope.LayoutMode, t.Masonry) }(window, function(t, o) {
    "use strict";
    var e = t.create("masonry"),
        i = e.prototype,
        s = { _getElementOffset: !0, layout: !0, _getMeasurement: !0 };
    for (var n in o.prototype) s[n] || (i[n] = o.prototype[n]);
    var r = i.measureColumns;
    i.measureColumns = function() { this.items = this.isotope.filteredItems, r.call(this) };
    var u = i._getOption;
    return i._getOption = function(t) { return "fitWidth" == t ? void 0 !== this.options.isFitWidth ? this.options.isFitWidth : this.options.fitWidth : u.apply(this.isotope, arguments) }, e
});
! function(t, e) { "function" == typeof define && define.amd ? define(["isotope-layout/js/layout-mode"], e) : "object" == typeof exports ? module.exports = e(require("isotope-layout/js/layout-mode")) : e(t.Isotope.LayoutMode) }(window, function(t) {
    "use strict";
    var e = t.create("cellsByColumn"),
        i = e.prototype;
    return i._resetLayout = function() { this.itemIndex = 0, this.getColumnWidth(), this.getRowHeight(), this.rows = Math.floor(this.isotope.size.innerHeight / this.rowHeight), this.rows = Math.max(this.rows, 1) }, i._getItemLayoutPosition = function(t) {
        t.getSize();
        var e = Math.floor(this.itemIndex / this.rows),
            i = this.itemIndex % this.rows,
            o = (e + .5) * this.columnWidth - t.size.outerWidth / 2,
            s = (i + .5) * this.rowHeight - t.size.outerHeight / 2;
        return this.itemIndex++, { x: o, y: s }
    }, i._getContainerSize = function() { return { width: Math.ceil(this.itemIndex / this.rows) * this.columnWidth } }, i.needsResizeLayout = function() { return this.needsVerticalResizeLayout() }, e
});
! function(t, e) { "function" == typeof define && define.amd ? define(["isotope-layout/js/layout-mode"], e) : "object" == typeof exports ? module.exports = e(require("isotope-layout/js/layout-mode")) : e(t.Isotope.LayoutMode) }(window, function(t) {
    "use strict";
    var e = t.create("cellsByRow"),
        i = e.prototype;
    return i._resetLayout = function() { this.itemIndex = 0, this.getColumnWidth(), this.getRowHeight(), this.cols = Math.floor(this.isotope.size.innerWidth / this.columnWidth), this.cols = Math.max(this.cols, 1) }, i._getItemLayoutPosition = function(t) {
        t.getSize();
        var e = this.itemIndex % this.cols,
            i = Math.floor(this.itemIndex / this.cols),
            o = (e + .5) * this.columnWidth - t.size.outerWidth / 2,
            s = (i + .5) * this.rowHeight - t.size.outerHeight / 2;
        return this.itemIndex++, { x: o, y: s }
    }, i._getContainerSize = function() { return { height: Math.ceil(this.itemIndex / this.cols) * this.rowHeight } }, e
});
! function(t, e) { "function" == typeof define && define.amd ? define(["isotope-layout/js/layout-mode"], e) : "object" == typeof exports ? module.exports = e(require("isotope-layout/js/layout-mode")) : e(t.Isotope.LayoutMode) }(window, function(t) {
    "use strict";
    var e = t.create("fitColumns"),
        i = e.prototype;
    return i._resetLayout = function() { this.x = 0, this.y = 0, this.maxX = 0 }, i._getItemLayoutPosition = function(t) { t.getSize(), 0 !== this.y && t.size.outerHeight + this.y > this.isotope.size.innerHeight && (this.y = 0, this.x = this.maxX); var e = { x: this.x, y: this.y }; return this.maxX = Math.max(this.maxX, this.x + t.size.outerWidth), this.y += t.size.outerHeight, e }, i._getContainerSize = function() { return { width: this.maxX } }, i.needsResizeLayout = function() { return this.needsVerticalResizeLayout() }, e
});
! function(e, t) { "function" == typeof define && define.amd ? define(["isotope-layout/js/layout-mode"], t) : "object" == typeof module && module.exports ? module.exports = t(require("isotope-layout/js/layout-mode")) : t(e.Isotope.LayoutMode) }(window, function(e) {
    "use strict";
    var t = e.create("horiz", { verticalAlignment: 0 }),
        o = t.prototype;
    return o._resetLayout = function() { this.x = 0 }, o._getItemLayoutPosition = function(e) {
        e.getSize();
        var t = (this.isotope.size.innerHeight - e.size.outerHeight) * this.options.verticalAlignment,
            o = this.x;
        return this.x += e.size.outerWidth, { x: o, y: t }
    }, o._getContainerSize = function() { return { width: this.x } }, o.needsResizeLayout = function() { return this.needsVerticalResizeLayout() }, t
});
! function(t, e) { "use strict"; "function" == typeof define && define.amd ? define(["get-size/get-size", "isotope-layout/js/layout-mode"], e) : "object" == typeof module && module.exports ? module.exports = e(require("get-size"), require("isotope-layout/js/layout-mode")) : e(t.getSize, t.Isotope.LayoutMode) }(window, function(t, e) {
    "use strict";
    var i = e.create("masonryHorizontal"),
        o = i.prototype;
    return o._resetLayout = function() {
        this.getRowHeight(), this._getMeasurement("gutter", "outerHeight"), this.rowHeight += this.gutter, this.rows = Math.floor((this.isotope.size.innerHeight + this.gutter) / this.rowHeight), this.rows = Math.max(this.rows, 1);
        var t = this.rows;
        for (this.rowXs = []; t--;) this.rowXs.push(0);
        this.maxX = 0
    }, o._getItemLayoutPosition = function(t) {
        t.getSize();
        var e = t.size.outerHeight % this.rowHeight,
            i = e && e < 1 ? "round" : "ceil",
            o = Math[i](t.size.outerHeight / this.rowHeight);
        o = Math.min(o, this.rows);
        for (var r = this._getRowGroup(o), s = Math.min.apply(Math, r), h = r.indexOf(s), a = { x: s, y: this.rowHeight * h }, n = s + t.size.outerWidth, u = this.rows + 1 - r.length, g = 0; g < u; g++) this.rowXs[h + g] = n;
        return a
    }, o._getRowGroup = function(t) {
        if (t < 2) return this.rowXs;
        for (var e = [], i = this.rows + 1 - t, o = 0; o < i; o++) {
            var r = this.rowXs.slice(o, o + t);
            e[o] = Math.max.apply(Math, r)
        }
        return e
    }, o._manageStamp = function(e) {
        var i = t(e),
            o = this.isotope._getElementOffset(e),
            r = this._getOption("originTop") ? o.top : o.bottom,
            s = r + i.outerHeight,
            h = Math.floor(r / this.rowHeight);
        h = Math.max(0, h);
        var a = Math.floor(s / this.rowHeight);
        a = Math.min(this.rows - 1, a);
        for (var n = (this._getOption("originLeft") ? o.left : o.right) + i.outerWidth, u = h; u <= a; u++) this.rowXs[u] = Math.max(n, this.rowXs[u])
    }, o._getContainerSize = function() { return this.maxX = Math.max.apply(Math, this.rowXs), { width: this.maxX } }, o.needsResizeLayout = function() { return this.needsVerticalResizeLayout() }, i
});
! function(t, h) { "function" == typeof define && define.amd ? define(h) : "object" == typeof module && module.exports ? module.exports = h() : (t.Packery = t.Packery || {}, t.Packery.Rect = h()) }(window, function() {
    "use strict";

    function t(h) { for (var i in t.defaults) this[i] = t.defaults[i]; for (i in h) this[i] = h[i] }
    t.defaults = { x: 0, y: 0, width: 0, height: 0 };
    var h = t.prototype;
    return h.contains = function(t) {
        var h = t.width || 0,
            i = t.height || 0;
        return this.x <= t.x && this.y <= t.y && this.x + this.width >= t.x + h && this.y + this.height >= t.y + i
    }, h.overlaps = function(t) {
        var h = this.x + this.width,
            i = this.y + this.height,
            e = t.x + t.width,
            s = t.y + t.height;
        return this.x < e && h > t.x && this.y < s && i > t.y
    }, h.getMaximalFreeRects = function(h) {
        if (!this.overlaps(h)) return !1;
        var i, e = [],
            s = this.x + this.width,
            n = this.y + this.height,
            r = h.x + h.width,
            y = h.y + h.height;
        return this.y < h.y && (i = new t({ x: this.x, y: this.y, width: this.width, height: h.y - this.y }), e.push(i)), s > r && (i = new t({ x: r, y: this.y, width: s - r, height: this.height }), e.push(i)), n > y && (i = new t({ x: this.x, y: y, width: this.width, height: n - y }), e.push(i)), this.x < h.x && (i = new t({ x: this.x, y: this.y, width: h.x - this.x, height: this.height }), e.push(i)), e
    }, h.canFit = function(t) { return this.width >= t.width && this.height >= t.height }, t
});
! function(t, e) {
    if ("function" == typeof define && define.amd) define(["./rect"], e);
    else if ("object" == typeof module && module.exports) module.exports = e(require("./rect"));
    else {
        var i = t.Packery = t.Packery || {};
        i.Packer = e(i.Rect)
    }
}(window, function(t) {
    "use strict";

    function e(t, e, i) { this.width = t || 0, this.height = e || 0, this.sortDirection = i || "downwardLeftToRight", this.reset() }
    var i = e.prototype;
    i.reset = function() {
        this.spaces = [];
        var e = new t({ x: 0, y: 0, width: this.width, height: this.height });
        this.spaces.push(e), this.sorter = s[this.sortDirection] || s.downwardLeftToRight
    }, i.pack = function(t) { for (var e = 0; e < this.spaces.length; e++) { var i = this.spaces[e]; if (i.canFit(t)) { this.placeInSpace(t, i); break } } }, i.columnPack = function(t) {
        for (var e = 0; e < this.spaces.length; e++) {
            var i = this.spaces[e],
                s = i.x <= t.x && i.x + i.width >= t.x + t.width && i.height >= t.height - .01;
            if (s) { t.y = i.y, this.placed(t); break }
        }
    }, i.rowPack = function(t) {
        for (var e = 0; e < this.spaces.length; e++) {
            var i = this.spaces[e],
                s = i.y <= t.y && i.y + i.height >= t.y + t.height && i.width >= t.width - .01;
            if (s) { t.x = i.x, this.placed(t); break }
        }
    }, i.placeInSpace = function(t, e) { t.x = e.x, t.y = e.y, this.placed(t) }, i.placed = function(t) {
        for (var e = [], i = 0; i < this.spaces.length; i++) {
            var s = this.spaces[i],
                r = s.getMaximalFreeRects(t);
            r ? e.push.apply(e, r) : e.push(s)
        }
        this.spaces = e, this.mergeSortSpaces()
    }, i.mergeSortSpaces = function() { e.mergeRects(this.spaces), this.spaces.sort(this.sorter) }, i.addSpace = function(t) { this.spaces.push(t), this.mergeSortSpaces() }, e.mergeRects = function(t) {
        var e = 0,
            i = t[e];
        t: for (; i;) {
            for (var s = 0, r = t[e + s]; r;) {
                if (r == i) s++;
                else {
                    if (r.contains(i)) { t.splice(e, 1), i = t[e]; continue t }
                    i.contains(r) ? t.splice(e + s, 1) : s++
                }
                r = t[e + s]
            }
            e++, i = t[e]
        }
        return t
    };
    var s = { downwardLeftToRight: function(t, e) { return t.y - e.y || t.x - e.x }, rightwardTopToBottom: function(t, e) { return t.x - e.x || t.y - e.y } };
    return e
});
! function(e, t) { "function" == typeof define && define.amd ? define(["outlayer/outlayer", "./rect"], t) : "object" == typeof module && module.exports ? module.exports = t(require("outlayer"), require("./rect")) : e.Packery.Item = t(e.Outlayer, e.Packery.Rect) }(window, function(e, t) {
    "use strict";
    var i = document.documentElement.style,
        o = "string" == typeof i.transform ? "transform" : "WebkitTransform",
        s = function() { e.Item.apply(this, arguments) },
        r = s.prototype = Object.create(e.Item.prototype),
        n = r._create;
    r._create = function() { n.call(this), this.rect = new t };
    var a = r.moveTo;
    return r.moveTo = function(e, t) {
        var i = Math.abs(this.position.x - e),
            o = Math.abs(this.position.y - t),
            s = this.layout.dragItemCount && !this.isPlacing && !this.isTransitioning && i < 1 && o < 1;
        return s ? void this.goTo(e, t) : void a.apply(this, arguments)
    }, r.enablePlacing = function() { this.removeTransitionStyles(), this.isTransitioning && o && (this.element.style[o] = "none"), this.isTransitioning = !1, this.getSize(), this.layout._setRectSize(this.element, this.rect), this.isPlacing = !0 }, r.disablePlacing = function() { this.isPlacing = !1 }, r.removeElem = function() { this.element.parentNode.removeChild(this.element), this.layout.packer.addSpace(this.rect), this.emitEvent("remove", [this]) }, r.showDropPlaceholder = function() {
        var e = this.dropPlaceholder;
        e || (e = this.dropPlaceholder = document.createElement("div"), e.className = "packery-drop-placeholder", e.style.position = "absolute"), e.style.width = this.size.width + "px", e.style.height = this.size.height + "px", this.positionDropPlaceholder(), this.layout.element.appendChild(e)
    }, r.positionDropPlaceholder = function() { this.dropPlaceholder.style[o] = "translate(" + this.rect.x + "px, " + this.rect.y + "px)" }, r.hideDropPlaceholder = function() {
        var e = this.dropPlaceholder.parentNode;
        e && e.removeChild(this.dropPlaceholder)
    }, s
});
! function(t, i) { "function" == typeof define && define.amd ? define(["get-size/get-size", "outlayer/outlayer", "./rect", "./packer", "./item"], i) : "object" == typeof module && module.exports ? module.exports = i(require("get-size"), require("outlayer"), require("./rect"), require("./packer"), require("./item")) : t.Packery = i(t.getSize, t.Outlayer, t.Packery.Rect, t.Packery.Packer, t.Packery.Item) }(window, function(t, i, e, s, r) {
    "use strict";

    function a(t, i) { return t.position.y - i.position.y || t.position.x - i.position.x }

    function h(t, i) { return t.position.x - i.position.x || t.position.y - i.position.y }

    function n(t, i) {
        var e = i.x - t.x,
            s = i.y - t.y;
        return Math.sqrt(e * e + s * s)
    }
    e.prototype.canFit = function(t) { return this.width >= t.width - 1 && this.height >= t.height - 1 };
    var o = i.create("packery");
    o.Item = r;
    var g = o.prototype;
    g._create = function() {
        i.prototype._create.call(this), this.packer = new s, this.shiftPacker = new s, this.isEnabled = !0, this.dragItemCount = 0;
        var t = this;
        this.handleDraggabilly = { dragStart: function() { t.itemDragStart(this.element) }, dragMove: function() { t.itemDragMove(this.element, this.position.x, this.position.y) }, dragEnd: function() { t.itemDragEnd(this.element) } }, this.handleUIDraggable = { start: function(i, e) { e && t.itemDragStart(i.currentTarget) }, drag: function(i, e) { e && t.itemDragMove(i.currentTarget, e.position.left, e.position.top) }, stop: function(i, e) { e && t.itemDragEnd(i.currentTarget) } }
    }, g._resetLayout = function() {
        this.getSize(), this._getMeasurements();
        var t, i, e;
        this._getOption("horizontal") ? (t = 1 / 0, i = this.size.innerHeight + this.gutter, e = "rightwardTopToBottom") : (t = this.size.innerWidth + this.gutter, i = 1 / 0, e = "downwardLeftToRight"), this.packer.width = this.shiftPacker.width = t, this.packer.height = this.shiftPacker.height = i, this.packer.sortDirection = this.shiftPacker.sortDirection = e, this.packer.reset(), this.maxY = 0, this.maxX = 0
    }, g._getMeasurements = function() { this._getMeasurement("columnWidth", "width"), this._getMeasurement("rowHeight", "height"), this._getMeasurement("gutter", "width") }, g._getItemLayoutPosition = function(t) {
        if (this._setRectSize(t.element, t.rect), this.isShifting || this.dragItemCount > 0) {
            var i = this._getPackMethod();
            this.packer[i](t.rect)
        } else this.packer.pack(t.rect);
        return this._setMaxXY(t.rect), t.rect
    }, g.shiftLayout = function() { this.isShifting = !0, this.layout(), delete this.isShifting }, g._getPackMethod = function() { return this._getOption("horizontal") ? "rowPack" : "columnPack" }, g._setMaxXY = function(t) { this.maxX = Math.max(t.x + t.width, this.maxX), this.maxY = Math.max(t.y + t.height, this.maxY) }, g._setRectSize = function(i, e) {
        var s = t(i),
            r = s.outerWidth,
            a = s.outerHeight;
        (r || a) && (r = this._applyGridGutter(r, this.columnWidth), a = this._applyGridGutter(a, this.rowHeight)), e.width = Math.min(r, this.packer.width), e.height = Math.min(a, this.packer.height)
    }, g._applyGridGutter = function(t, i) {
        if (!i) return t + this.gutter;
        i += this.gutter;
        var e = t % i,
            s = e && e < 1 ? "round" : "ceil";
        return t = Math[s](t / i) * i
    }, g._getContainerSize = function() { return this._getOption("horizontal") ? { width: this.maxX - this.gutter } : { height: this.maxY - this.gutter } }, g._manageStamp = function(t) {
        var i, s = this.getItem(t);
        if (s && s.isPlacing) i = s.rect;
        else {
            var r = this._getElementOffset(t);
            i = new e({ x: this._getOption("originLeft") ? r.left : r.right, y: this._getOption("originTop") ? r.top : r.bottom })
        }
        this._setRectSize(t, i), this.packer.placed(i), this._setMaxXY(i)
    }, g.sortItemsByPosition = function() {
        var t = this._getOption("horizontal") ? h : a;
        this.items.sort(t)
    }, g.fit = function(t, i, e) {
        var s = this.getItem(t);
        s && (this.stamp(s.element), s.enablePlacing(), this.updateShiftTargets(s), i = void 0 === i ? s.rect.x : i, e = void 0 === e ? s.rect.y : e, this.shift(s, i, e), this._bindFitEvents(s), s.moveTo(s.rect.x, s.rect.y), this.shiftLayout(), this.unstamp(s.element), this.sortItemsByPosition(), s.disablePlacing())
    }, g._bindFitEvents = function(t) {
        function i() { s++, 2 == s && e.dispatchEvent("fitComplete", null, [t]) }
        var e = this,
            s = 0;
        t.once("layout", i), this.once("layoutComplete", i)
    }, g.resize = function() { this.isResizeBound && this.needsResizeLayout() && (this.options.shiftPercentResize ? this.resizeShiftPercentLayout() : this.layout()) }, g.needsResizeLayout = function() {
        var i = t(this.element),
            e = this._getOption("horizontal") ? "innerHeight" : "innerWidth";
        return i[e] != this.size[e]
    }, g.resizeShiftPercentLayout = function() {
        var i = this._getItemsForLayout(this.items),
            e = this._getOption("horizontal"),
            s = e ? "y" : "x",
            r = e ? "height" : "width",
            a = e ? "rowHeight" : "columnWidth",
            h = e ? "innerHeight" : "innerWidth",
            n = this[a];
        if (n = n && n + this.gutter) {
            this._getMeasurements();
            var o = this[a] + this.gutter;
            i.forEach(function(t) {
                var i = Math.round(t.rect[s] / n);
                t.rect[s] = i * o
            })
        } else {
            var g = t(this.element)[h] + this.gutter,
                c = this.packer[r];
            i.forEach(function(t) { t.rect[s] = t.rect[s] / c * g })
        }
        this.shiftLayout()
    }, g.itemDragStart = function(t) {
        if (this.isEnabled) {
            this.stamp(t);
            var i = this.getItem(t);
            i && (i.enablePlacing(), i.showDropPlaceholder(), this.dragItemCount++, this.updateShiftTargets(i))
        }
    }, g.updateShiftTargets = function(t) {
        this.shiftPacker.reset(), this._getBoundingRect();
        var i = this._getOption("originLeft"),
            s = this._getOption("originTop");
        this.stamps.forEach(function(t) {
            var r = this.getItem(t);
            if (!r || !r.isPlacing) {
                var a = this._getElementOffset(t),
                    h = new e({ x: i ? a.left : a.right, y: s ? a.top : a.bottom });
                this._setRectSize(t, h), this.shiftPacker.placed(h)
            }
        }, this);
        var r = this._getOption("horizontal"),
            a = r ? "rowHeight" : "columnWidth",
            h = r ? "height" : "width";
        this.shiftTargetKeys = [], this.shiftTargets = [];
        var n, o = this[a];
        if (o = o && o + this.gutter) {
            var g = Math.ceil(t.rect[h] / o),
                c = Math.floor((this.shiftPacker[h] + this.gutter) / o);
            n = (c - g) * o;
            for (var u = 0; u < c; u++) {
                var d = r ? 0 : u * o,
                    f = r ? u * o : 0;
                this._addShiftTarget(d, f, n)
            }
        } else n = this.shiftPacker[h] + this.gutter - t.rect[h], this._addShiftTarget(0, 0, n);
        var l = this._getItemsForLayout(this.items),
            m = this._getPackMethod();
        l.forEach(function(t) {
            var i = t.rect;
            this._setRectSize(t.element, i), this.shiftPacker[m](i), this._addShiftTarget(i.x, i.y, n);
            var e = r ? i.x + i.width : i.x,
                s = r ? i.y : i.y + i.height;
            if (this._addShiftTarget(e, s, n), o)
                for (var a = Math.round(i[h] / o), g = 1; g < a; g++) {
                    var c = r ? e : i.x + o * g,
                        u = r ? i.y + o * g : s;
                    this._addShiftTarget(c, u, n)
                }
        }, this)
    }, g._addShiftTarget = function(t, i, e) {
        var s = this._getOption("horizontal") ? i : t;
        if (!(0 !== s && s > e)) {
            var r = t + "," + i,
                a = this.shiftTargetKeys.indexOf(r) != -1;
            a || (this.shiftTargetKeys.push(r), this.shiftTargets.push({ x: t, y: i }))
        }
    }, g.shift = function(t, i, e) {
        var s, r = 1 / 0,
            a = { x: i, y: e };
        this.shiftTargets.forEach(function(t) {
            var i = n(t, a);
            i < r && (s = t, r = i)
        }), t.rect.x = s.x, t.rect.y = s.y
    };
    var c = 120;
    g.itemDragMove = function(t, i, e) {
        function s() { a.shift(r, i, e), r.positionDropPlaceholder(), a.layout() }
        var r = this.isEnabled && this.getItem(t);
        if (r) {
            i -= this.size.paddingLeft, e -= this.size.paddingTop;
            var a = this,
                h = new Date;
            this._itemDragTime && h - this._itemDragTime < c ? (clearTimeout(this.dragTimeout), this.dragTimeout = setTimeout(s, c)) : (s(), this._itemDragTime = h)
        }
    }, g.itemDragEnd = function(t) {
        function i() { s++, 2 == s && (e.element.classList.remove("is-positioning-post-drag"), e.hideDropPlaceholder(), r.dispatchEvent("dragItemPositioned", null, [e])) }
        var e = this.isEnabled && this.getItem(t);
        if (e) {
            clearTimeout(this.dragTimeout), e.element.classList.add("is-positioning-post-drag");
            var s = 0,
                r = this;
            e.once("layout", i), this.once("layoutComplete", i), e.moveTo(e.rect.x, e.rect.y), this.layout(), this.dragItemCount = Math.max(0, this.dragItemCount - 1), this.sortItemsByPosition(), e.disablePlacing(), this.unstamp(e.element)
        }
    }, g.bindDraggabillyEvents = function(t) { this._bindDraggabillyEvents(t, "on") }, g.unbindDraggabillyEvents = function(t) { this._bindDraggabillyEvents(t, "off") }, g._bindDraggabillyEvents = function(t, i) {
        var e = this.handleDraggabilly;
        t[i]("dragStart", e.dragStart), t[i]("dragMove", e.dragMove), t[i]("dragEnd", e.dragEnd)
    }, g.bindUIDraggableEvents = function(t) { this._bindUIDraggableEvents(t, "on") }, g.unbindUIDraggableEvents = function(t) { this._bindUIDraggableEvents(t, "off") }, g._bindUIDraggableEvents = function(t, i) {
        var e = this.handleUIDraggable;
        t[i]("dragstart", e.start)[i]("drag", e.drag)[i]("dragstop", e.stop)
    };
    var u = g.destroy;
    return g.destroy = function() { u.apply(this, arguments), this.isEnabled = !1 }, o.Rect = e, o.Packer = s, o
});
! function(t, e) { "use strict"; "function" == typeof define && define.amd ? define(["isotope-layout/js/layout-mode", "packery/js/packery"], e) : "object" == typeof module && module.exports ? module.exports = e(require("isotope-layout/js/layout-mode"), require("packery")) : e(t.Isotope.LayoutMode, t.Packery) }(window, function(t, e) {
    "use strict";
    var o = t.create("packery"),
        i = o.prototype,
        r = { _getElementOffset: !0, _getMeasurement: !0 };
    for (var s in e.prototype) r[s] || (i[s] = e.prototype[s]);
    var n = i._resetLayout;
    i._resetLayout = function() { this.packer = this.packer || new e.Packer, this.shiftPacker = this.shiftPacker || new e.Packer, n.apply(this, arguments) };
    var a = i._getItemLayoutPosition;
    i._getItemLayoutPosition = function(t) { return t.rect = t.rect || new e.Rect, a.call(this, t) };
    var u = i.needsResizeLayout;
    i.needsResizeLayout = function() { return this._getOption("horizontal") ? this.needsVerticalResizeLayout() : u.call(this) };
    var p = i._getOption;
    return i._getOption = function(t) { return "horizontal" == t ? void 0 !== this.options.isHorizontal ? this.options.isHorizontal : this.options.horizontal : p.apply(this.isotope, arguments) }, o
});
! function(t, e) { "use strict"; "function" == typeof define && define.amd ? define(["ev-emitter/ev-emitter"], function(i) { return e(t, i) }) : "object" == typeof module && module.exports ? module.exports = e(t, require("ev-emitter")) : t.imagesLoaded = e(t, t.EvEmitter) }("undefined" != typeof window ? window : this, function(t, e) {
    "use strict";

    function i(t, e) { for (var i in e) t[i] = e[i]; return t }

    function o(t) { if (Array.isArray(t)) return t; var e = "object" == typeof t && "number" == typeof t.length; return e ? d.call(t) : [t] }

    function r(t, e, n) { if (!(this instanceof r)) return new r(t, e, n); var s = t; return "string" == typeof t && (s = document.querySelectorAll(t)), s ? (this.elements = o(s), this.options = i({}, this.options), "function" == typeof e ? n = e : i(this.options, e), n && this.on("always", n), this.getImages(), h && (this.jqDeferred = new h.Deferred), void setTimeout(this.check.bind(this))) : void a.error("Bad element for imagesLoaded " + (s || t)) }

    function n(t) { this.img = t }

    function s(t, e) { this.url = t, this.element = e, this.img = new Image }
    var h = t.jQuery,
        a = t.console,
        d = Array.prototype.slice;
    r.prototype = Object.create(e.prototype), r.prototype.options = {}, r.prototype.getImages = function() { this.images = [], this.elements.forEach(this.addElementImages, this) }, r.prototype.addElementImages = function(t) {
        "IMG" == t.nodeName && this.addImage(t), this.options.background === !0 && this.addElementBackgroundImages(t);
        var e = t.nodeType;
        if (e && m[e]) {
            for (var i = t.querySelectorAll("img"), o = 0; o < i.length; o++) {
                var r = i[o];
                this.addImage(r)
            }
            if ("string" == typeof this.options.background) {
                var n = t.querySelectorAll(this.options.background);
                for (o = 0; o < n.length; o++) {
                    var s = n[o];
                    this.addElementBackgroundImages(s)
                }
            }
        }
    };
    var m = { 1: !0, 9: !0, 11: !0 };
    return r.prototype.addElementBackgroundImages = function(t) {
        var e = getComputedStyle(t);
        if (e)
            for (var i = /url\((['"])?(.*?)\1\)/gi, o = i.exec(e.backgroundImage); null !== o;) {
                var r = o && o[2];
                r && this.addBackground(r, t), o = i.exec(e.backgroundImage)
            }
    }, r.prototype.addImage = function(t) {
        var e = new n(t);
        this.images.push(e)
    }, r.prototype.addBackground = function(t, e) {
        var i = new s(t, e);
        this.images.push(i)
    }, r.prototype.check = function() {
        function t(t, i, o) { setTimeout(function() { e.progress(t, i, o) }) }
        var e = this;
        return this.progressedCount = 0, this.hasAnyBroken = !1, this.images.length ? void this.images.forEach(function(e) { e.once("progress", t), e.check() }) : void this.complete()
    }, r.prototype.progress = function(t, e, i) { this.progressedCount++, this.hasAnyBroken = this.hasAnyBroken || !t.isLoaded, this.emitEvent("progress", [this, t, e]), this.jqDeferred && this.jqDeferred.notify && this.jqDeferred.notify(this, t), this.progressedCount == this.images.length && this.complete(), this.options.debug && a && a.log("progress: " + i, t, e) }, r.prototype.complete = function() {
        var t = this.hasAnyBroken ? "fail" : "done";
        if (this.isComplete = !0, this.emitEvent(t, [this]), this.emitEvent("always", [this]), this.jqDeferred) {
            var e = this.hasAnyBroken ? "reject" : "resolve";
            this.jqDeferred[e](this)
        }
    }, n.prototype = Object.create(e.prototype), n.prototype.check = function() { var t = this.getIsImageComplete(); return t ? void this.confirm(0 !== this.img.naturalWidth, "naturalWidth") : (this.proxyImage = new Image, this.proxyImage.addEventListener("load", this), this.proxyImage.addEventListener("error", this), this.img.addEventListener("load", this), this.img.addEventListener("error", this), void(this.proxyImage.src = this.img.src)) }, n.prototype.getIsImageComplete = function() { return this.img.complete && this.img.naturalWidth }, n.prototype.confirm = function(t, e) { this.isLoaded = t, this.emitEvent("progress", [this, this.img, e]) }, n.prototype.handleEvent = function(t) {
        var e = "on" + t.type;
        this[e] && this[e](t)
    }, n.prototype.onload = function() { this.confirm(!0, "onload"), this.unbindEvents() }, n.prototype.onerror = function() { this.confirm(!1, "onerror"), this.unbindEvents() }, n.prototype.unbindEvents = function() { this.proxyImage.removeEventListener("load", this), this.proxyImage.removeEventListener("error", this), this.img.removeEventListener("load", this), this.img.removeEventListener("error", this) }, s.prototype = Object.create(n.prototype), s.prototype.check = function() {
        this.img.addEventListener("load", this), this.img.addEventListener("error", this), this.img.src = this.url;
        var t = this.getIsImageComplete();
        t && (this.confirm(0 !== this.img.naturalWidth, "naturalWidth"), this.unbindEvents())
    }, s.prototype.unbindEvents = function() { this.img.removeEventListener("load", this), this.img.removeEventListener("error", this) }, s.prototype.confirm = function(t, e) { this.isLoaded = t, this.emitEvent("progress", [this, this.element, e]) }, r.makeJQueryPlugin = function(e) { e = e || t.jQuery, e && (h = e, h.fn.imagesLoaded = function(t, e) { var i = new r(this, t, e); return i.jqDeferred.promise(h(this)) }) }, r.makeJQueryPlugin(), r
});
! function() { window.FizzyDocs = {}, window.filterBind = function(n, t, i, e) { n.addEventListener(t, function(n) { matchesSelector(n.target, i) && e(n) }) } }();
FizzyDocs["commercial-license-agreement"] = function(e) {
    "use strict";

    function t(e) {
        var t = o.querySelector(".is-selected");
        t && t.classList.remove("is-selected"), e.classList.add("is-selected");
        var i = e.getAttribute("data-license-option"),
            n = r[i];
        l.forEach(function(e) { e.element.textContent = n[e.property] })
    }
    var r = { developer: { title: "Developer", "for-official": "one (1) Licensed Developer", "for-plain": "one individual Developer" }, team: { title: "Team", "for-official": "up to eight (8) Licensed Developer(s)", "for-plain": "up to 8 Developers" }, organization: { title: "Organization", "for-official": "an unlimited number of Licensed Developer(s)", "for-plain": "an unlimited number of Developers" } },
        o = e.querySelector(".button-group"),
        i = e.querySelector("h2"),
        n = i.cloneNode(!0);
    n.style.borderTop = "none", n.style.marginTop = 0, n.id = "", n.innerHTML = n.innerHTML.replace("Commercial License", 'Commercial <span data-license-property="title"></span> License'), i.textContent = "", o.parentNode.insertBefore(n, o.nextSibling);
    for (var l = [], a = e.querySelectorAll("[data-license-property]"), c = 0, s = a.length; c < s; c++) {
        var p = a[c],
            u = { property: p.getAttribute("data-license-property"), element: p };
        l.push(u)
    }
    t(o.querySelector(".button--developer")), filterBind(o, "click", ".button", function(e) { t(e.target) })
};
! function() {
    var t = 0;
    FizzyDocs["gh-button"] = function(n) {
        function e(t) { return t.toString().replace(/(\d)(?=(\d{3})+$)/g, "$1,") }
        var a = n.href.split("/"),
            r = a[3],
            c = a[4],
            o = n.querySelector(".gh-button__stat__text");
        t++;
        var u = "ghButtonCallback" + t;
        window[u] = function(t) {
            var n = e(t.data.stargazers_count);
            o.textContent = n
        };
        var i = document.createElement("script");
        i.src = "https://api.github.com/repos/" + r + "/" + c + "?callback=" + u, document.head.appendChild(i)
    }
}();
FizzyDocs["shirt-promo"] = function(e) {
    var t = new Date(2017, 9, 6),
        o = Math.round((t - new Date) / 864e5),
        r = e.querySelector(".shirt-promo__title");
    r.textContent += ". Only on sale for " + o + " more days."
};
! function(o) {
    "use strict";
    o.IsotopeDocs = {}
}(window);
! function(e) { var r = "object" == typeof window && window || "object" == typeof self && self; "undefined" != typeof exports ? e(exports) : r && (r.hljs = e({}), "function" == typeof define && define.amd && define([], function() { return r.hljs })) }(function(e) {
    function r(e) { return e.replace(/&/gm, "&amp;").replace(/</gm, "&lt;").replace(/>/gm, "&gt;") }

    function t(e) { return e.nodeName.toLowerCase() }

    function n(e, r) { var t = e && e.exec(r); return t && 0 == t.index }

    function a(e) { return /^(no-?highlight|plain|text)$/i.test(e) }

    function c(e) {
        var r, t, n, c = e.className + " ";
        if (c += e.parentNode ? e.parentNode.className : "", t = /\blang(?:uage)?-([\w-]+)\b/i.exec(c)) return E(t[1]) ? t[1] : "no-highlight";
        for (c = c.split(/\s+/), r = 0, n = c.length; n > r; r++)
            if (E(c[r]) || a(c[r])) return c[r]
    }

    function i(e, r) {
        var t, n = {};
        for (t in e) n[t] = e[t];
        if (r)
            for (t in r) n[t] = r[t];
        return n
    }

    function o(e) { var r = []; return function n(e, a) { for (var c = e.firstChild; c; c = c.nextSibling) 3 == c.nodeType ? a += c.nodeValue.length : 1 == c.nodeType && (r.push({ event: "start", offset: a, node: c }), a = n(c, a), t(c).match(/br|hr|img|input/) || r.push({ event: "stop", offset: a, node: c })); return a }(e, 0), r }

    function s(e, n, a) {
        function c() { return e.length && n.length ? e[0].offset != n[0].offset ? e[0].offset < n[0].offset ? e : n : "start" == n[0].event ? e : n : e.length ? e : n }

        function i(e) {
            function n(e) { return " " + e.nodeName + '="' + r(e.value) + '"' }
            l += "<" + t(e) + Array.prototype.map.call(e.attributes, n).join("") + ">"
        }

        function o(e) { l += "</" + t(e) + ">" }

        function s(e) {
            ("start" == e.event ? i : o)(e.node)
        }
        for (var u = 0, l = "", f = []; e.length || n.length;) {
            var b = c();
            if (l += r(a.substr(u, b[0].offset - u)), u = b[0].offset, b == e) {
                f.reverse().forEach(o);
                do s(b.splice(0, 1)[0]), b = c(); while (b == e && b.length && b[0].offset == u);
                f.reverse().forEach(i)
            } else "start" == b[0].event ? f.push(b[0].node) : f.pop(), s(b.splice(0, 1)[0])
        }
        return l + r(a.substr(u))
    }

    function u(e) {
        function r(e) { return e && e.source || e }

        function t(t, n) { return new RegExp(r(t), "m" + (e.cI ? "i" : "") + (n ? "g" : "")) }

        function n(a, c) {
            if (!a.compiled) {
                if (a.compiled = !0, a.k = a.k || a.bK, a.k) {
                    var o = {},
                        s = function(r, t) {
                            e.cI && (t = t.toLowerCase()), t.split(" ").forEach(function(e) {
                                var t = e.split("|");
                                o[t[0]] = [r, t[1] ? Number(t[1]) : 1]
                            })
                        };
                    "string" == typeof a.k ? s("keyword", a.k) : Object.keys(a.k).forEach(function(e) { s(e, a.k[e]) }), a.k = o
                }
                a.lR = t(a.l || /\w+/, !0), c && (a.bK && (a.b = "\\b(" + a.bK.split(" ").join("|") + ")\\b"), a.b || (a.b = /\B|\b/), a.bR = t(a.b), a.e || a.eW || (a.e = /\B|\b/), a.e && (a.eR = t(a.e)), a.tE = r(a.e) || "", a.eW && c.tE && (a.tE += (a.e ? "|" : "") + c.tE)), a.i && (a.iR = t(a.i)), void 0 === a.r && (a.r = 1), a.c || (a.c = []);
                var u = [];
                a.c.forEach(function(e) { e.v ? e.v.forEach(function(r) { u.push(i(e, r)) }) : u.push("self" == e ? a : e) }), a.c = u, a.c.forEach(function(e) { n(e, a) }), a.starts && n(a.starts, c);
                var l = a.c.map(function(e) { return e.bK ? "\\.?(" + e.b + ")\\.?" : e.b }).concat([a.tE, a.i]).map(r).filter(Boolean);
                a.t = l.length ? t(l.join("|"), !0) : { exec: function() { return null } }
            }
        }
        n(e)
    }

    function l(e, t, a, c) {
        function i(e, r) {
            for (var t = 0; t < r.c.length; t++)
                if (n(r.c[t].bR, e)) return r.c[t]
        }

        function o(e, r) { if (n(e.eR, r)) { for (; e.endsParent && e.parent;) e = e.parent; return e } return e.eW ? o(e.parent, r) : void 0 }

        function s(e, r) { return !a && n(r.iR, e) }

        function b(e, r) { var t = N.cI ? r[0].toLowerCase() : r[0]; return e.k.hasOwnProperty(t) && e.k[t] }

        function g(e, r, t, n) {
            var a = n ? "" : w.classPrefix,
                c = '<span class="' + a,
                i = t ? "" : "</span>";
            return c += e + '">', c + r + i
        }

        function p() {
            if (!C.k) return r(k);
            var e = "",
                t = 0;
            C.lR.lastIndex = 0;
            for (var n = C.lR.exec(k); n;) {
                e += r(k.substr(t, n.index - t));
                var a = b(C, n);
                a ? (A += a[1], e += g(a[0], r(n[0]))) : e += r(n[0]), t = C.lR.lastIndex, n = C.lR.exec(k)
            }
            return e + r(k.substr(t))
        }

        function d() { var e = "string" == typeof C.sL; if (e && !y[C.sL]) return r(k); var t = e ? l(C.sL, k, !0, R[C.sL]) : f(k, C.sL.length ? C.sL : void 0); return C.r > 0 && (A += t.r), e && (R[C.sL] = t.top), g(t.language, t.value, !1, !0) }

        function h() { x += void 0 !== C.sL ? d() : p(), k = "" }

        function m(e, r) { x += e.cN ? g(e.cN, "", !0) : "", C = Object.create(e, { parent: { value: C } }) }

        function v(e, r) {
            if (k += e, void 0 === r) return h(), 0;
            var t = i(r, C);
            if (t) return t.skip ? k += r : (t.eB && (k += r), h(), t.rB || t.eB || (k = r)), m(t, r), t.rB ? 0 : r.length;
            var n = o(C, r);
            if (n) {
                var a = C;
                a.skip ? k += r : (a.rE || a.eE || (k += r), h(), a.eE && (k = r));
                do C.cN && (x += "</span>"), C.skip || (A += C.r), C = C.parent; while (C != n.parent);
                return n.starts && m(n.starts, ""), a.rE ? 0 : r.length
            }
            if (s(r, C)) throw new Error('Illegal lexeme "' + r + '" for mode "' + (C.cN || "<unnamed>") + '"');
            return k += r, r.length || 1
        }
        var N = E(e);
        if (!N) throw new Error('Unknown language: "' + e + '"');
        u(N);
        var M, C = c || N,
            R = {},
            x = "";
        for (M = C; M != N; M = M.parent) M.cN && (x = g(M.cN, "", !0) + x);
        var k = "",
            A = 0;
        try { for (var S, B, L = 0; C.t.lastIndex = L, S = C.t.exec(t), S;) B = v(t.substr(L, S.index - L), S[0]), L = S.index + B; for (v(t.substr(L)), M = C; M.parent; M = M.parent) M.cN && (x += "</span>"); return { r: A, value: x, language: e, top: C } } catch (I) { if (-1 != I.message.indexOf("Illegal")) return { r: 0, value: r(t) }; throw I }
    }

    function f(e, t) {
        t = t || w.languages || Object.keys(y);
        var n = { r: 0, value: r(e) },
            a = n;
        return t.filter(E).forEach(function(r) {
            var t = l(r, e, !1);
            t.language = r, t.r > a.r && (a = t), t.r > n.r && (a = n, n = t)
        }), a.language && (n.second_best = a), n
    }

    function b(e) { return w.tabReplace && (e = e.replace(/^((<[^>]+>|\t)+)/gm, function(e, r) { return r.replace(/\t/g, w.tabReplace) })), w.useBR && (e = e.replace(/\n/g, "<br>")), e }

    function g(e, r, t) {
        var n = r ? M[r] : t,
            a = [e.trim()];
        return e.match(/\bhljs\b/) || a.push("hljs"), -1 === e.indexOf(n) && a.push(n), a.join(" ").trim()
    }

    function p(e) {
        var r = c(e);
        if (!a(r)) {
            var t;
            w.useBR ? (t = document.createElementNS("http://www.w3.org/1999/xhtml", "div"), t.innerHTML = e.innerHTML.replace(/\n/g, "").replace(/<br[ \/]*>/g, "\n")) : t = e;
            var n = t.textContent,
                i = r ? l(r, n, !0) : f(n),
                u = o(t);
            if (u.length) {
                var p = document.createElementNS("http://www.w3.org/1999/xhtml", "div");
                p.innerHTML = i.value, i.value = s(u, o(p), n)
            }
            i.value = b(i.value), e.innerHTML = i.value, e.className = g(e.className, r, i.language), e.result = { language: i.language, re: i.r }, i.second_best && (e.second_best = { language: i.second_best.language, re: i.second_best.r })
        }
    }

    function d(e) { w = i(w, e) }

    function h() {
        if (!h.called) {
            h.called = !0;
            var e = document.querySelectorAll("pre code");
            Array.prototype.forEach.call(e, p)
        }
    }

    function m() { addEventListener("DOMContentLoaded", h, !1), addEventListener("load", h, !1) }

    function v(r, t) {
        var n = y[r] = t(e);
        n.aliases && n.aliases.forEach(function(e) { M[e] = r })
    }

    function N() { return Object.keys(y) }

    function E(e) { return e = (e || "").toLowerCase(), y[e] || y[M[e]] }
    var w = { classPrefix: "hljs-", tabReplace: null, useBR: !1, languages: void 0 },
        y = {},
        M = {};
    return e.highlight = l, e.highlightAuto = f, e.fixMarkup = b, e.highlightBlock = p, e.configure = d, e.initHighlighting = h, e.initHighlightingOnLoad = m, e.registerLanguage = v, e.listLanguages = N, e.getLanguage = E, e.inherit = i, e.IR = "[a-zA-Z]\\w*", e.UIR = "[a-zA-Z_]\\w*", e.NR = "\\b\\d+(\\.\\d+)?", e.CNR = "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", e.BNR = "\\b(0b[01]+)", e.RSR = "!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~", e.BE = { b: "\\\\[\\s\\S]", r: 0 }, e.ASM = { cN: "string", b: "'", e: "'", i: "\\n", c: [e.BE] }, e.QSM = { cN: "string", b: '"', e: '"', i: "\\n", c: [e.BE] }, e.PWM = { b: /\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|like)\b/ }, e.C = function(r, t, n) { var a = e.inherit({ cN: "comment", b: r, e: t, c: [] }, n || {}); return a.c.push(e.PWM), a.c.push({ cN: "doctag", b: "(?:TODO|FIXME|NOTE|BUG|XXX):", r: 0 }), a }, e.CLCM = e.C("//", "$"), e.CBCM = e.C("/\\*", "\\*/"), e.HCM = e.C("#", "$"), e.NM = { cN: "number", b: e.NR, r: 0 }, e.CNM = { cN: "number", b: e.CNR, r: 0 }, e.BNM = { cN: "number", b: e.BNR, r: 0 }, e.CSSNM = { cN: "number", b: e.NR + "(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?", r: 0 }, e.RM = { cN: "regexp", b: /\//, e: /\/[gimuy]*/, i: /\n/, c: [e.BE, { b: /\[/, e: /\]/, r: 0, c: [e.BE] }] }, e.TM = { cN: "title", b: e.IR, r: 0 }, e.UTM = { cN: "title", b: e.UIR, r: 0 }, e.METHOD_GUARD = { b: "\\.\\s*" + e.UIR, r: 0 }, e
}), hljs.registerLanguage("css", function(e) {
    var r = "[a-zA-Z-][a-zA-Z0-9_-]*",
        t = { b: /[A-Z\_\.\-]+\s*:/, rB: !0, e: ";", eW: !0, c: [{ cN: "attribute", b: /\S/, e: ":", eE: !0, starts: { eW: !0, eE: !0, c: [{ b: /[\w-]+\(/, rB: !0, c: [{ cN: "built_in", b: /[\w-]+/ }, { b: /\(/, e: /\)/, c: [e.ASM, e.QSM] }] }, e.CSSNM, e.QSM, e.ASM, e.CBCM, { cN: "number", b: "#[0-9A-Fa-f]+" }, { cN: "meta", b: "!important" }] } }] };
    return { cI: !0, i: /[=\/|'\$]/, c: [e.CBCM, { cN: "selector-id", b: /#[A-Za-z0-9_-]+/ }, { cN: "selector-class", b: /\.[A-Za-z0-9_-]+/ }, { cN: "selector-attr", b: /\[/, e: /\]/, i: "$" }, { cN: "selector-pseudo", b: /:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/ }, { b: "@(font-face|page)", l: "[a-z-]+", k: "font-face page" }, { b: "@", e: "[{;]", i: /:/, c: [{ cN: "keyword", b: /\w+/ }, { b: /\s/, eW: !0, eE: !0, r: 0, c: [e.ASM, e.QSM, e.CSSNM] }] }, { cN: "selector-tag", b: r, r: 0 }, { b: "{", e: "}", i: /\S/, c: [e.CBCM, t] }] }
}), hljs.registerLanguage("javascript", function(e) { return { aliases: ["js", "jsx"], k: { keyword: "in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await static import from as", literal: "true false null undefined NaN Infinity", built_in: "eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise" }, c: [{ cN: "meta", r: 10, b: /^\s*['"]use (strict|asm)['"]/ }, { cN: "meta", b: /^#!/, e: /$/ }, e.ASM, e.QSM, { cN: "string", b: "`", e: "`", c: [e.BE, { cN: "subst", b: "\\$\\{", e: "\\}" }] }, e.CLCM, e.CBCM, { cN: "number", v: [{ b: "\\b(0[bB][01]+)" }, { b: "\\b(0[oO][0-7]+)" }, { b: e.CNR }], r: 0 }, { b: "(" + e.RSR + "|\\b(case|return|throw)\\b)\\s*", k: "return throw case", c: [e.CLCM, e.CBCM, e.RM, { b: /</, e: /(\/\w+|\w+\/)>/, sL: "xml", c: [{ b: /<\w+\s*\/>/, skip: !0 }, { b: /<\w+/, e: /(\/\w+|\w+\/)>/, skip: !0, c: ["self"] }] }], r: 0 }, { cN: "function", bK: "function", e: /\{/, eE: !0, c: [e.inherit(e.TM, { b: /[A-Za-z$_][0-9A-Za-z$_]*/ }), { cN: "params", b: /\(/, e: /\)/, eB: !0, eE: !0, c: [e.CLCM, e.CBCM] }], i: /\[|%/ }, { b: /\$[(.]/ }, e.METHOD_GUARD, { cN: "class", bK: "class", e: /[{;=]/, eE: !0, i: /[:"\[\]]/, c: [{ bK: "extends" }, e.UTM] }, { bK: "constructor", e: /\{/, eE: !0 }], i: /#(?!!)/ } }), hljs.registerLanguage("json", function(e) {
    var r = { literal: "true false null" },
        t = [e.QSM, e.CNM],
        n = { e: ",", eW: !0, eE: !0, c: t, k: r },
        a = { b: "{", e: "}", c: [{ cN: "attr", b: /"/, e: /"/, c: [e.BE], i: "\\n" }, e.inherit(n, { b: /:/ })], i: "\\S" },
        c = { b: "\\[", e: "\\]", c: [e.inherit(n)], i: "\\S" };
    return t.splice(t.length, 0, a, c), { c: t, k: r, i: "\\S" }
}), hljs.registerLanguage("xml", function(e) {
    var r = "[A-Za-z0-9\\._:-]+",
        t = { eW: !0, i: /</, r: 0, c: [{ cN: "attr", b: r, r: 0 }, { b: /=\s*/, r: 0, c: [{ cN: "string", endsParent: !0, v: [{ b: /"/, e: /"/ }, { b: /'/, e: /'/ }, { b: /[^\s"'=<>`]+/ }] }] }] };
    return { aliases: ["html", "xhtml", "rss", "atom", "xsl", "plist"], cI: !0, c: [{ cN: "meta", b: "<!DOCTYPE", e: ">", r: 10, c: [{ b: "\\[", e: "\\]" }] }, e.C("<!--", "-->", { r: 10 }), { b: "<\\!\\[CDATA\\[", e: "\\]\\]>", r: 10 }, { b: /<\?(php)?/, e: /\?>/, sL: "php", c: [{ b: "/\\*", e: "\\*/", skip: !0 }] }, { cN: "tag", b: "<style(?=\\s|>|$)", e: ">", k: { name: "style" }, c: [t], starts: { e: "</style>", rE: !0, sL: ["css", "xml"] } }, { cN: "tag", b: "<script(?=\\s|>|$)", e: ">", k: { name: "script" }, c: [t], starts: { e: "</script>", rE: !0, sL: ["actionscript", "javascript", "handlebars", "xml"] } }, { cN: "meta", v: [{ b: /<\?xml/, e: /\?>/, r: 10 }, { b: /<\?\w+/, e: /\?>/ }] }, { cN: "tag", b: "</?", e: "/?>", c: [{ cN: "name", b: /[^\/><\s]+/, r: 0 }, t] }] }
});
! function() {
    "use strict";
    IsotopeDocs.getItemElement = function() {
        var t = document.createElement("div"),
            i = Math.random(),
            e = Math.random(),
            n = i > .8 ? "grid-item--width3" : i > .6 ? "grid-item--width2" : "",
            r = e > .8 ? "grid-item--height3" : e > .5 ? "grid-item--height2" : "";
        return t.className = "grid-item " + n + " " + r, t
    }, hljs.configure({ classPrefix: "" }), $.fn.displayIsotopeCode = function(t, i, e) {
        e = e || 0, i = "string" == typeof i && i.indexOf("function") === -1 ? "'" + i + "'" : i;
        var n = "$grid.isotope({ " + t + ": " + i + " })",
            r = n.match(/\n/g);
        r = r && r.length || 0;
        for (var o = 0; r + o < e; o++) n += "\n";
        n = hljs.highlight("js", n).value, this.html(n)
    }
}();
IsotopeDocs["gh-button"] = function(t) {
    function e(t) { return t.toString().replace(/(\d)(?=(\d{3})+$)/g, "$1,") }
    var o = "metafizzy",
        a = "isotope",
        n = "ghButtonCallback" + Math.floor(1e4 * Math.random());
    window[n] = function(o) {
        var a = e(o.data.stargazers_count);
        t.querySelector(".gh-button__stat__text").textContent = a
    };
    var r = document.createElement("script");
    r.src = "https://api.github.com/repos/" + o + "/" + a + "?callback=" + n, document.head.appendChild(r)
};
IsotopeDocs["hero-demo"] = function(t) {
    "use strict";
    var e = $(t),
        n = e.find(".grid").isotope({ itemSelector: ".element-item", layoutMode: "fitRows", transitionDuration: "0.6s", getSortData: { name: ".name", symbol: ".symbol", number: ".number parseInt", category: "[data-category]", weight: function(t) { var e = $(t).find(".weight").text(); return parseFloat(e.replace(/[\(\)]/g, "")) } } }),
        r = { numberGreaterThan50: function() { var t = $(this).find(".number").text(); return parseInt(t, 10) > 50 }, ium: function() { var t = $(this).find(".name").text(); return t.match(/ium$/) } },
        i = { numberGreaterThan50: "function() {\n  var number = $(this).find('.number').text();\n  return parseInt( number, 10 ) > 50;\n}", ium: "function() {\n  var name = $(this).find('.name').text();\n  return name.match( /ium$/ );\n}" },
        o = e.find(".code-display code");
    e.find(".sort-by").on("click", "li.button", function() {
        var t = $(this).attr("data-sort-by");
        n.isotope({ sortBy: t }), o.displayIsotopeCode("sortBy", t, 5)
    }), e.find(".filters").on("click", "button", function() {
        var t = $(this).attr("data-filter"),
            e = r[t] || t,
            a = i[t] || t;
        n.isotope({ filter: e }), o.displayIsotopeCode("filter", a, 5)
    })
};
IsotopeDocs["in-use-grid"] = function(e) {
    "use strict";
    var i = $(e);
    i.find(".in-use-grid__item").hide(), i.isotope({ itemSelector: "none", masonry: { columnWidth: ".grid-sizer", gutter: ".gutter-sizer" } }), i.isotope("option", { itemSelector: ".in-use-grid__item" }), i.imagesLoaded().progress(function(e, t) {
        var o = $(t.img).parents(".in-use-grid__item");
        o.show(), i.isotope("appended", o)
    })
};
IsotopeDocs.notification = function(t) {
    "use strict";

    function n() {
        var t = new Date,
            n = e(t.getMinutes()),
            o = e(t.getSeconds());
        return [t.getHours(), n, o].join(":")
    }

    function e(t) { return t < 10 ? "0" + t : t }

    function o() { t.style[c] = "opacity 1.0s", t.style.opacity = "0" }
    var i, s = document.documentElement,
        c = "string" == typeof s.style.transition ? "transition" : "WebkitTransition";
    ID.notify = function(e) { t.textContent = e + " at " + n(), t.style[c] = "none", t.style.display = "block", t.style.opacity = "1", clearTimeout(i), i = setTimeout(o, 1e3) }
};
! function() {
    "use strict";

    function t(t) { this.element = t, this.originalY = this.element.getBoundingClientRect().top + window.pageYOffset, window.addEventListener("scroll", this), this.isFixed = !1, this.onscroll() }

    function i(t, i, e) {
        var n = t.prototype[i],
            o = i + "Timeout";
        t.prototype[i] = function() {
            if (!this[o]) {
                n.apply(this, arguments);
                var t = this;
                this[o] = setTimeout(function() { n.apply(t, arguments), delete t[o] }, e || 100)
            }
        }
    }
    IsotopeDocs["page-nav"] = function(i) {
        var e = getSize(i).outerHeight;
        window.innerWidth < 768 || e >= window.innerHeight || new t(i)
    }, t.prototype.handleEvent = function(t) {
        var i = "on" + t.type;
        this[i] && this[i](t)
    }, t.prototype.onscroll = function() {
        var t = window.pageYOffset >= this.originalY;
        t !== this.isFixed && (this.element.classList.toggle("is-fixed"), this.isFixed = t)
    }, i(t, "onscroll", 50)
}();
IsotopeDocs["animate-item-size"] = function(i) {
    "use strict";
    var t = $(i),
        e = t.find(".grid").isotope({ masonry: { columnWidth: 60 } });
    e.on("click", ".animate-item-size-item", function() { $(this).toggleClass("is-expanded"), e.isotope("layout") })
};
IsotopeDocs["animate-item-size-responsive"] = function(t) {
    "use strict";

    function i(t) {
        var i = getSize(t);
        t.style[o] = "none", t.style.width = i.width + "px", t.style.height = i.height + "px"
    }

    function e(t) {
        if (o) {
            var i = function() { t.style.width = "", t.style.height = "", t.removeEventListener(r, i, !1) };
            t.addEventListener(r, i, !1)
        }
    }

    function n(t, i) {
        var e = getSize(i);
        t.style.width = e.width + "px", t.style.height = e.height + "px"
    }
    var s = document.documentElement.style,
        o = "string" == typeof s.transition ? "transition" : "WebkitTransition",
        r = { WebkitTransition: "webkitTransitionEnd", transition: "transitionend" }[o],
        a = $(t),
        d = a.find(".grid").isotope({ itemSelector: ".animate-item-size-item", percentPosition: !0, masonry: { columnWidth: ".grid-sizer" } });
    d.on("click", ".animate-item-size-item__content", function() {
        var t = this;
        i(t);
        var s = t.parentNode;
        s.classList.toggle("is-expanded");
        t.offsetWidth;
        t.style[o] = "", e(t), n(t, s), d.isotope("layout")
    })
};
IsotopeDocs.appended = function(e) {
    "use strict";
    var o = $(e),
        t = o.find(".grid").isotope({ masonry: { columnWidth: 50 } });
    o.find(".append-button").on("click", function() {
        var e = $([IsotopeDocs.getItemElement(), IsotopeDocs.getItemElement(), IsotopeDocs.getItemElement()]);
        t.append(e).isotope("appended", e)
    })
};
IsotopeDocs["arrange-complete"] = function(t) {
    "use strict";
    var o = $(t),
        n = o.find(".grid").isotope({ masonry: { columnWidth: 50 } });
    n.on("arrangeComplete", function(t, o) { ID.notify("Isotope arrange completed on " + o.length + " items") }), o.find(".button-group").on("click", "li.button", function() {
        var t = $(this).attr("data-filter");
        n.isotope({ filter: t })
    })
};
IsotopeDocs["filter-sec"] = function(t) {
    "use strict";

    function o(t) { var o = ""; for (var i in t) o += t[i]; return o }
    var i = $(t),
        r = i.find(".grid").isotope({ itemSelector: ".grid-item", columnWidth: 80, transitionDuration: "0.6s" }),
        n = i.find(".code-display code"),
        e = {};
    i.on("click", ".button", function() {
        var t = $(this),
            i = t.parents(".button-group"),
            a = i.attr("data-filter-group");
        e[a] = t.attr("data-filter");
        var s = o(e);
        r.isotope({ filter: s }), n.displayIsotopeCode("filter", s)
    })
};
IsotopeDocs.destroy = function(o) {
    "use strict";
    var t = $(o),
        i = { masonry: { columnWidth: 50 } },
        n = t.find(".grid").isotope(i),
        s = !0;
    t.find(".toggle-button").on("click", function() { s ? n.isotope("destroy") : n.isotope(i), s = !s })
};
IsotopeDocs["filtering-demo"] = function(t) {
    "use strict";
    var n = $(t),
        e = n.find(".grid").isotope({ itemSelector: ".element-item", layoutMode: "fitRows", transitionDuration: "0.6s" }),
        i = { numberGreaterThan50: function() { var t = $(this).find(".number").text(); return parseInt(t, 10) > 50 }, ium: function() { var t = $(this).find(".name").text(); return t.match(/ium$/) } },
        r = { numberGreaterThan50: "function() {\n  var number = $(this).find('.number').text();\n  return parseInt( number, 10 ) > 50;\n}", ium: "function() {\n  var name = $(this).find('.name').text();\n  return name.match( /ium$/ );\n}" },
        o = n.find(".code-display code");
    n.find(".filter-button-group").on("click", "li.button", function() {
        var t = $(this).attr("data-filter"),
            n = i[t] || t,
            a = r[t] || t;
        e.isotope({ filter: n }), o.displayIsotopeCode("filter", a)
    })
};
IsotopeDocs["imagesloaded-callback"] = function(e) { "use strict"; var i = $(e).imagesLoaded(function() { i.isotope({ itemSelector: ".grid-image-item", percentPosition: !0, masonry: { columnWidth: ".grid-sizer" } }) }) };
IsotopeDocs["imagesloaded-progress"] = function(o) {
    "use strict";
    var e = $(o).isotope({ itemSelector: ".grid-image-item", percentPosition: !0, masonry: { columnWidth: ".grid-sizer" } });
    e.imagesLoaded().progress(function() { e.isotope("layout") })
};
IsotopeDocs.insert = function(t) {
    "use strict";
    var n = $(t),
        r = n.find(".grid").isotope({ masonry: { columnWidth: 50 }, filter: function() { var t = $(this).find(".number").text(); return parseInt(t, 10) % 2 }, sortBy: "number", getSortData: { number: ".number parseInt" } });
    n.find(".insert-button").on("click", function() {
        for (var t = [], n = 0; n < 3; n++) {
            var e = IsotopeDocs.getItemElement(),
                o = Math.floor(100 * Math.random());
            $(e).append('<p class="number">' + o + "</p>"), t.push(e)
        }
        r.isotope("insert", t)
    })
};
IsotopeDocs["layout-complete"] = function(o) {
    "use strict";
    var t = $(o),
        i = t.find(".grid").isotope({ masonry: { columnWidth: 50 } });
    i.on("layoutComplete", function(o, t) { ID.notify("Isotope layout completed on " + t.length + " items") }), i.on("click", ".grid-item", function() { $(this).toggleClass("grid-item--gigante"), i.isotope("layout") })
};
IsotopeDocs["layout-demo"] = function(o) {
    "use strict";
    var i = $(o),
        t = i.find(".grid").isotope({ masonry: { columnWidth: 50 } });
    t.on("click", ".grid-item", function() { $(this).toggleClass("grid-item--gigante"), t.isotope("layout") })
};
IsotopeDocs["layout-modes-demo"] = function(o) {
    "use strict";
    var t = $(window),
        i = $(o),
        a = i.find(".grid").isotope({ itemSelector: ".grid-splash-item", layoutMode: "masonry", transitionDuration: "0.6s", masonry: { columnWidth: 110 }, cellsByRow: { columnWidth: 220, rowHeight: 220 }, masonryHorizontal: { rowHeight: 110 }, cellsByColumn: { columnWidth: 220, rowHeight: 220 } }),
        e = !1,
        d = i.find(".code-display code");
    i.find(".button-group").on("click", "li.button", function() {
        var o = $(this),
            i = !!o.attr("data-is-horizontal");
        if (e != i) {
            var n = i ? { height: .7 * t.height() } : { width: "auto" };
            a.css(n), e = i
        }
        var s = o.attr("data-layout-mode");
        a.isotope({ layoutMode: s }), d.displayIsotopeCode("layoutMode", s)
    })
};
IsotopeDocs["multiple-sort-by"] = function(t) {
    "use strict";

    function o(t) { return t.split(",") }
    var r = $(t),
        i = r.find(".button-group"),
        e = r.find(".grid").isotope({ layoutMode: "fitRows", itemSelector: ".grid-multi-item", getSortData: { case: "[data-color]", number: ".number parseInt" }, sortBy: ["case", "number"] });
    i.on("click", "li.button", function() { e.isotope({ sortBy: o(this.getAttribute("data-sort-by")) }) })
};
IsotopeDocs.prepended = function(e) {
    "use strict";
    var o = $(e),
        t = o.find(".grid").isotope({ masonry: { columnWidth: 50 } });
    o.find(".prepend-button").on("click", function() {
        var e = $([IsotopeDocs.getItemElement(), IsotopeDocs.getItemElement(), IsotopeDocs.getItemElement()]);
        t.prepend(e).isotope("prepended", e)
    })
};
IsotopeDocs.remove = function(o) {
    "use strict";
    var i = $(o),
        t = i.find(".grid").isotope({ masonry: { columnWidth: 50 } });
    t.on("click", ".grid-item", function() { t.isotope("remove", this).isotope("layout") })
};
IsotopeDocs["remove-complete"] = function(o) {
    "use strict";
    var e = $(o),
        t = e.find(".grid").isotope({ masonry: { columnWidth: 50 } });
    t.on("removeComplete", function(o, e) { ID.notify("Removed " + e.length + " items") }), t.on("click", ".grid-item", function() { t.isotope("remove", this).isotope("layout") })
};
IsotopeDocs.shuffle = function(o) {
    "use strict";
    var f = $(o),
        i = f.find(".grid").isotope({ masonry: { columnWidth: 50 } });
    f.find(".shuffle-button").on("click", function() { i.isotope("shuffle") })
};
IsotopeDocs["sorting-demo"] = function(t) {
    "use strict";
    var o = $(t),
        e = o.find(".sort-by-button-group"),
        r = o.find(".grid").isotope({ itemSelector: ".element-item", layoutMode: "fitRows", transitionDuration: "0.6s", getSortData: { name: ".name", symbol: ".symbol", number: ".number parseInt", category: "[data-category]", weight: function(t) { var o = $(t).find(".weight").text(); return parseFloat(o.replace(/[\(\)]/g, "")) } } }),
        i = o.find(".code-display code");
    e.on("click", "li.button", function() {
        var t = $(this).attr("data-sort-by");
        r.isotope({ sortBy: t }), i.displayIsotopeCode("sortBy", t)
    })
};
IsotopeDocs.stagger = function(t) {
    "use strict";
    var o = $(t),
        r = o.find(".grid").isotope({ layoutMode: "fitRows", stagger: 30 });
    o.find(".button-group").on("click", ".button", function(t) {
        var o = $(t.currentTarget).attr("data-filter");
        r.isotope({ filter: o })
    })
};
IsotopeDocs["stamp-methods"] = function(t) {
    "use strict";
    var o = $(t),
        i = o.find(".grid").isotope({ itemSelector: ".grid-item", masonry: { columnWidth: 50 } }),
        s = i.find(".stamp"),
        n = !1;
    o.find(".stamp-button").on("click", function() { n ? i.isotope("unstamp", s) : i.isotope("stamp", s), i.isotope("layout"), n = !n })
};
IsotopeDocs["vertical-list"] = function(t) {
    "use strict";
    var o = $(t),
        e = o.find(".vertical-list").isotope({ itemSelector: "li", layoutMode: "vertical", transitionDuration: "0.6s", getSortData: { name: ".name", symbol: ".symbol", number: ".number parseInt", category: ".category", weight: function(t) { var o = $(t).find(".weight").text(); return parseFloat(o.replace(/[\(\)]/g, "")) } } });
    o.find(".button-group").on("click", "li.button", function() {
        var t = $(this).attr("data-sort-by");
        e.isotope({ sortBy: t })
    })
};
IsotopeDocs["visible-hidden-style"] = function(t) {
    "use strict";
    var i = $(t),
        o = i.find(".grid").isotope({ layoutMode: "fitRows", visibleStyle: { opacity: 1 }, hiddenStyle: { opacity: 0 } });
    i.find(".button-group").on("click", ".button", function(t) {
        var i = $(t.currentTarget).attr("data-filter");
        o.isotope({ filter: i })
    })
};
! function() {
    "use strict";
    $("[data-js]").each(function(t, s) {
        var c = s.getAttribute("data-js"),
            e = IsotopeDocs[c] || FizzyDocs[c];
        e && e(s)
    }), $(".manasory-filter").each(function(t, s) {
        var c = $(s);
        c.find(":active").parent().addClass("active"), c.on("click", "input, li.button", function() {
            c.find(".active").removeClass("active");
            var t = $(this),
                s = t.hasClass("button") ? t : t.parents(".button");
            s.addClass("active")
        })
    })
}();