/*!
 * Flickity PACKAGED v2.2.2
 * Touch, responsive, flickable carousels
 *
 * Licensed GPLv3 for open source use
 * or Flickity Commercial License for commercial use
 *
 * https://flickity.metafizzy.co
 * Copyright 2015-2021 Metafizzy
 */
(function (e, i) {
    if (typeof define == "function" && define.amd) {
        define("jquery-bridget/jquery-bridget", ["jquery"], function (t) {
            return i(e, t)
        })
    } else if (typeof module == "object" && module.exports) {
        module.exports = i(e, require("jquery"))
    } else {
        e.jQueryBridget = i(e, e.jQuery)
    }
})(window, function t(e, r) {
    "use strict";
    var o = Array.prototype.slice;
    var i = e.console;
    var u = typeof i == "undefined" ? function () {
    } : function (t) {
        i.error(t)
    };

    function n(h, s, c) {
        c = c || r || e.jQuery;
        if (!c) {
            return
        }
        if (!s.prototype.option) {
            s.prototype.option = function (t) {
                if (!c.isPlainObject(t)) {
                    return
                }
                this.options = c.extend(true, this.options, t)
            }
        }
        c.fn[h] = function (t) {
            if (typeof t == "string") {
                var e = o.call(arguments, 1);
                return i(this, t, e)
            }
            n(this, t);
            return this
        };

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

        function n(t, n) {
            t.each(function (t, e) {
                var i = c.data(e, h);
                if (i) {
                    i.option(n);
                    i._init()
                } else {
                    i = new s(e, n);
                    c.data(e, h, i)
                }
            })
        }

        a(c)
    }

    function a(t) {
        if (!t || t && t.bridget) {
            return
        }
        t.bridget = n
    }

    a(r || e.jQuery);
    return n
});
(function (t, e) {
    if (typeof define == "function" && define.amd) {
        define("ev-emitter/ev-emitter", e)
    } else if (typeof module == "object" && module.exports) {
        module.exports = e()
    } else {
        t.EvEmitter = e()
    }
})(typeof window != "undefined" ? window : this, function () {
    function t() {
    }

    var e = t.prototype;
    e.on = function (t, e) {
        if (!t || !e) {
            return
        }
        var i = this._events = this._events || {};
        var n = i[t] = i[t] || [];
        if (n.indexOf(e) == -1) {
            n.push(e)
        }
        return this
    };
    e.once = function (t, e) {
        if (!t || !e) {
            return
        }
        this.on(t, e);
        var i = this._onceEvents = this._onceEvents || {};
        var n = i[t] = i[t] || {};
        n[e] = true;
        return this
    };
    e.off = function (t, e) {
        var i = this._events && this._events[t];
        if (!i || !i.length) {
            return
        }
        var n = i.indexOf(e);
        if (n != -1) {
            i.splice(n, 1)
        }
        return this
    };
    e.emitEvent = function (t, e) {
        var i = this._events && this._events[t];
        if (!i || !i.length) {
            return
        }
        i = i.slice(0);
        e = e || [];
        var n = this._onceEvents && this._onceEvents[t];
        for (var s = 0; s < i.length; s++) {
            var r = i[s];
            var o = n && n[r];
            if (o) {
                this.off(t, r);
                delete n[r]
            }
            r.apply(this, e)
        }
        return this
    };
    e.allOff = function () {
        delete this._events;
        delete this._onceEvents
    };
    return t
});
/*!
 * getSize v2.0.3
 * measure size of elements
 * MIT license
 */
(function (t, e) {
    if (typeof define == "function" && define.amd) {
        define("get-size/get-size", e)
    } else if (typeof module == "object" && module.exports) {
        module.exports = e()
    } else {
        t.getSize = e()
    }
})(window, function t() {
    "use strict";

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

    function e() {
    }

    var i = typeof console == "undefined" ? e : function (t) {
        console.error(t)
    };
    var y = ["paddingLeft", "paddingRight", "paddingTop", "paddingBottom", "marginLeft", "marginRight", "marginTop", "marginBottom", "borderLeftWidth", "borderRightWidth", "borderTopWidth", "borderBottomWidth"];
    var b = y.length;

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

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

    var n = false;
    var C;

    function x() {
        if (n) {
            return
        }
        n = true;
        var t = document.createElement("div");
        t.style.width = "200px";
        t.style.padding = "1px 2px 3px 4px";
        t.style.borderStyle = "solid";
        t.style.borderWidth = "1px 2px 3px 4px";
        t.style.boxSizing = "border-box";
        var e = document.body || document.documentElement;
        e.appendChild(t);
        var i = S(t);
        C = Math.round(m(i.width)) == 200;
        s.isBoxSizeOuter = C;
        e.removeChild(t)
    }

    function s(t) {
        x();
        if (typeof t == "string") {
            t = document.querySelector(t)
        }
        if (!t || typeof t != "object" || !t.nodeType) {
            return
        }
        var e = S(t);
        if (e.display == "none") {
            return E()
        }
        var i = {};
        i.width = t.offsetWidth;
        i.height = t.offsetHeight;
        var n = i.isBorderBox = e.boxSizing == "border-box";
        for (var s = 0; s < b; s++) {
            var r = y[s];
            var o = e[r];
            var a = parseFloat(o);
            i[r] = !isNaN(a) ? a : 0
        }
        var l = i.paddingLeft + i.paddingRight;
        var h = i.paddingTop + i.paddingBottom;
        var c = i.marginLeft + i.marginRight;
        var u = i.marginTop + i.marginBottom;
        var d = i.borderLeftWidth + i.borderRightWidth;
        var f = i.borderTopWidth + i.borderBottomWidth;
        var p = n && C;
        var v = m(e.width);
        if (v !== false) {
            i.width = v + (p ? 0 : l + d)
        }
        var g = m(e.height);
        if (g !== false) {
            i.height = g + (p ? 0 : h + f)
        }
        i.innerWidth = i.width - (l + d);
        i.innerHeight = i.height - (h + f);
        i.outerWidth = i.width + c;
        i.outerHeight = i.height + u;
        return i
    }

    return s
});
(function (t, e) {
    "use strict";
    if (typeof define == "function" && define.amd) {
        define("desandro-matches-selector/matches-selector", e)
    } else if (typeof module == "object" && module.exports) {
        module.exports = e()
    } else {
        t.matchesSelector = e()
    }
})(window, function t() {
    "use strict";
    var n = function () {
        var t = window.Element.prototype;
        if (t.matches) {
            return "matches"
        }
        if (t.matchesSelector) {
            return "matchesSelector"
        }
        var e = ["webkit", "moz", "ms", "o"];
        for (var i = 0; i < e.length; i++) {
            var n = e[i];
            var s = n + "MatchesSelector";
            if (t[s]) {
                return s
            }
        }
    }();
    return function t(e, i) {
        return e[n](i)
    }
});
(function (e, i) {
    if (typeof define == "function" && define.amd) {
        define("fizzy-ui-utils/utils", ["desandro-matches-selector/matches-selector"], function (t) {
            return i(e, t)
        })
    } else if (typeof module == "object" && module.exports) {
        module.exports = i(e, require("desandro-matches-selector"))
    } else {
        e.fizzyUIUtils = i(e, e.matchesSelector)
    }
})(window, function t(h, r) {
    var c = {};
    c.extend = function (t, e) {
        for (var i in e) {
            t[i] = e[i]
        }
        return t
    };
    c.modulo = function (t, e) {
        return (t % e + e) % e
    };
    var i = Array.prototype.slice;
    c.makeArray = function (t) {
        if (Array.isArray(t)) {
            return t
        }
        if (t === null || t === undefined) {
            return []
        }
        var e = typeof t == "object" && typeof t.length == "number";
        if (e) {
            return i.call(t)
        }
        return [t]
    };
    c.removeFrom = function (t, e) {
        var i = t.indexOf(e);
        if (i != -1) {
            t.splice(i, 1)
        }
    };
    c.getParent = function (t, e) {
        while (t.parentNode && t != document.body) {
            t = t.parentNode;
            if (r(t, e)) {
                return t
            }
        }
    };
    c.getQueryElement = function (t) {
        if (typeof t == "string") {
            return document.querySelector(t)
        }
        return t
    };
    c.handleEvent = function (t) {
        var e = "on" + t.type;
        if (this[e]) {
            this[e](t)
        }
    };
    c.filterFindElements = function (t, n) {
        t = c.makeArray(t);
        var s = [];
        t.forEach(function (t) {
            if (!(t instanceof HTMLElement)) {
                return
            }
            if (!n) {
                s.push(t);
                return
            }
            if (r(t, n)) {
                s.push(t)
            }
            var e = t.querySelectorAll(n);
            for (var i = 0; i < e.length; i++) {
                s.push(e[i])
            }
        });
        return s
    };
    c.debounceMethod = function (t, e, n) {
        n = n || 100;
        var s = t.prototype[e];
        var r = e + "Timeout";
        t.prototype[e] = function () {
            var t = this[r];
            clearTimeout(t);
            var e = arguments;
            var i = this;
            this[r] = setTimeout(function () {
                s.apply(i, e);
                delete i[r]
            }, n)
        }
    };
    c.docReady = function (t) {
        var e = document.readyState;
        if (e == "complete" || e == "interactive") {
            setTimeout(t)
        } else {
            document.addEventListener("DOMContentLoaded", t)
        }
    };
    c.toDashed = function (t) {
        return t.replace(/(.)([A-Z])/g, function (t, e, i) {
            return e + "-" + i
        }).toLowerCase()
    };
    var u = h.console;
    c.htmlInit = function (a, l) {
        c.docReady(function () {
            var t = c.toDashed(l);
            var s = "data-" + t;
            var e = document.querySelectorAll("[" + s + "]");
            var i = document.querySelectorAll(".js-" + t);
            var n = c.makeArray(e).concat(c.makeArray(i));
            var r = s + "-options";
            var o = h.jQuery;
            n.forEach(function (e) {
                var t = e.getAttribute(s) || e.getAttribute(r);
                var i;
                try {
                    i = t && JSON.parse(t)
                } catch (t) {
                    if (u) {
                        u.error("Error parsing " + s + " on " + e.className + ": " + t)
                    }
                    return
                }
                var n = new a(e, i);
                if (o) {
                    o.data(e, l, n)
                }
            })
        })
    };
    return c
});
(function (e, i) {
    if (typeof define == "function" && define.amd) {
        define("flickity/js/cell", ["get-size/get-size"], function (t) {
            return i(e, t)
        })
    } else if (typeof module == "object" && module.exports) {
        module.exports = i(e, require("get-size"))
    } else {
        e.Flickity = e.Flickity || {};
        e.Flickity.Cell = i(e, e.getSize)
    }
})(window, function t(e, i) {
    function n(t, e) {
        this.element = t;
        this.parent = e;
        this.create()
    }

    var s = n.prototype;
    s.create = function () {
        this.element.style.position = "absolute";
        this.element.setAttribute("aria-hidden", "true");
        this.x = 0;
        this.shift = 0
    };
    s.destroy = function () {
        this.unselect();
        this.element.style.position = "";
        var t = this.parent.originSide;
        this.element.style[t] = "";
        this.element.removeAttribute("aria-hidden")
    };
    s.getSize = function () {
        this.size = i(this.element)
    };
    s.setPosition = function (t) {
        this.x = t;
        this.updateTarget();
        this.renderPosition(t)
    };
    s.updateTarget = s.setDefaultTarget = function () {
        var t = this.parent.originSide == "left" ? "marginLeft" : "marginRight";
        this.target = this.x + this.size[t] + this.size.width * this.parent.cellAlign
    };
    s.renderPosition = function (t) {
        var e = this.parent.originSide;
        this.element.style[e] = this.parent.getPositionValue(t)
    };
    s.select = function () {
        this.element.classList.add("is-selected");
        this.element.removeAttribute("aria-hidden")
    };
    s.unselect = function () {
        this.element.classList.remove("is-selected");
        this.element.setAttribute("aria-hidden", "true")
    };
    s.wrapShift = function (t) {
        this.shift = t;
        this.renderPosition(this.x + this.parent.slideableWidth * t)
    };
    s.remove = function () {
        this.element.parentNode.removeChild(this.element)
    };
    return n
});
(function (t, e) {
    if (typeof define == "function" && define.amd) {
        define("flickity/js/slide", e)
    } else if (typeof module == "object" && module.exports) {
        module.exports = e()
    } else {
        t.Flickity = t.Flickity || {};
        t.Flickity.Slide = e()
    }
})(window, function t() {
    "use strict";

    function e(t) {
        this.parent = t;
        this.isOriginLeft = t.originSide == "left";
        this.cells = [];
        this.outerWidth = 0;
        this.height = 0
    }

    var i = e.prototype;
    i.addCell = function (t) {
        this.cells.push(t);
        this.outerWidth += t.size.outerWidth;
        this.height = Math.max(t.size.outerHeight, this.height);
        if (this.cells.length == 1) {
            this.x = t.x;
            var e = this.isOriginLeft ? "marginLeft" : "marginRight";
            this.firstMargin = t.size[e]
        }
    };
    i.updateTarget = function () {
        var t = this.isOriginLeft ? "marginRight" : "marginLeft";
        var e = this.getLastCell();
        var i = e ? e.size[t] : 0;
        var n = this.outerWidth - (this.firstMargin + i);
        this.target = this.x + this.firstMargin + n * this.parent.cellAlign
    };
    i.getLastCell = function () {
        return this.cells[this.cells.length - 1]
    };
    i.select = function () {
        this.cells.forEach(function (t) {
            t.select()
        })
    };
    i.unselect = function () {
        this.cells.forEach(function (t) {
            t.unselect()
        })
    };
    i.getCellElements = function () {
        return this.cells.map(function (t) {
            return t.element
        })
    };
    return e
});
(function (e, i) {
    if (typeof define == "function" && define.amd) {
        define("flickity/js/animate", ["fizzy-ui-utils/utils"], function (t) {
            return i(e, t)
        })
    } else if (typeof module == "object" && module.exports) {
        module.exports = i(e, require("fizzy-ui-utils"))
    } else {
        e.Flickity = e.Flickity || {};
        e.Flickity.animatePrototype = i(e, e.fizzyUIUtils)
    }
})(window, function t(e, i) {
    var n = {};
    n.startAnimation = function () {
        if (this.isAnimating) {
            return
        }
        this.isAnimating = true;
        this.restingFrames = 0;
        this.animate()
    };
    n.animate = function () {
        this.applyDragForce();
        this.applySelectedAttraction();
        var t = this.x;
        this.integratePhysics();
        this.positionSlider();
        this.settle(t);
        if (this.isAnimating) {
            var e = this;
            requestAnimationFrame(function t() {
                e.animate()
            })
        }
    };
    n.positionSlider = function () {
        var t = this.x;
        if (this.options.wrapAround && this.cells.length > 1) {
            t = i.modulo(t, this.slideableWidth);
            t -= this.slideableWidth;
            this.shiftWrapCells(t)
        }
        this.setTranslateX(t, this.isAnimating);
        this.dispatchScrollEvent()
    };
    n.setTranslateX = function (t, e) {
        t += this.cursorPosition;
        t = this.options.rightToLeft ? -t : t;
        var i = this.getPositionValue(t);
        this.slider.style.transform = e ? "translate3d(" + i + ",0,0)" : "translateX(" + i + ")"
    };
    n.dispatchScrollEvent = function () {
        var t = this.slides[0];
        if (!t) {
            return
        }
        var e = -this.x - t.target;
        var i = e / this.slidesWidth;
        this.dispatchEvent("scroll", null, [i, e])
    };
    n.positionSliderAtSelected = function () {
        if (!this.cells.length) {
            return
        }
        this.x = -this.selectedSlide.target;
        this.velocity = 0;
        this.positionSlider()
    };
    n.getPositionValue = function (t) {
        if (this.options.percentPosition) {
            return Math.round(t / this.size.innerWidth * 1e4) * .01 + "%"
        } else {
            return Math.round(t) + "px"
        }
    };
    n.settle = function (t) {
        var e = !this.isPointerDown && Math.round(this.x * 100) == Math.round(t * 100);
        if (e) {
            this.restingFrames++
        }
        if (this.restingFrames > 2) {
            this.isAnimating = false;
            delete this.isFreeScrolling;
            this.positionSlider();
            this.dispatchEvent("settle", null, [this.selectedIndex])
        }
    };
    n.shiftWrapCells = function (t) {
        var e = this.cursorPosition + t;
        this._shiftCells(this.beforeShiftCells, e, -1);
        var i = this.size.innerWidth - (t + this.slideableWidth + this.cursorPosition);
        this._shiftCells(this.afterShiftCells, i, 1)
    };
    n._shiftCells = function (t, e, i) {
        for (var n = 0; n < t.length; n++) {
            var s = t[n];
            var r = e > 0 ? i : 0;
            s.wrapShift(r);
            e -= s.size.outerWidth
        }
    };
    n._unshiftCells = function (t) {
        if (!t || !t.length) {
            return
        }
        for (var e = 0; e < t.length; e++) {
            t[e].wrapShift(0)
        }
    };
    n.integratePhysics = function () {
        this.x += this.velocity;
        this.velocity *= this.getFrictionFactor()
    };
    n.applyForce = function (t) {
        this.velocity += t
    };
    n.getFrictionFactor = function () {
        return 1 - this.options[this.isFreeScrolling ? "freeScrollFriction" : "friction"]
    };
    n.getRestingPosition = function () {
        return this.x + this.velocity / (1 - this.getFrictionFactor())
    };
    n.applyDragForce = function () {
        if (!this.isDraggable || !this.isPointerDown) {
            return
        }
        var t = this.dragX - this.x;
        var e = t - this.velocity;
        this.applyForce(e)
    };
    n.applySelectedAttraction = function () {
        var t = this.isDraggable && this.isPointerDown;
        if (t || this.isFreeScrolling || !this.slides.length) {
            return
        }
        var e = this.selectedSlide.target * -1 - this.x;
        var i = e * this.options.selectedAttraction;
        this.applyForce(i)
    };
    return n
});
(function (o, a) {
    if (typeof define == "function" && define.amd) {
        define("flickity/js/flickity", ["ev-emitter/ev-emitter", "get-size/get-size", "fizzy-ui-utils/utils", "./cell", "./slide", "./animate"], function (t, e, i, n, s, r) {
            return a(o, t, e, i, n, s, r)
        })
    } else if (typeof module == "object" && module.exports) {
        module.exports = a(o, require("ev-emitter"), require("get-size"), require("fizzy-ui-utils"), require("./cell"), require("./slide"), require("./animate"))
    } else {
        var t = o.Flickity;
        o.Flickity = a(o, o.EvEmitter, o.getSize, o.fizzyUIUtils, t.Cell, t.Slide, t.animatePrototype)
    }
})(window, function t(n, e, i, a, s, o, r) {
    var l = n.jQuery;
    var h = n.getComputedStyle;
    var c = n.console;

    function u(t, e) {
        t = a.makeArray(t);
        while (t.length) {
            e.appendChild(t.shift())
        }
    }

    var d = 0;
    var f = {};

    function p(t, e) {
        var i = a.getQueryElement(t);
        if (!i) {
            if (c) {
                c.error("Bad element for Flickity: " + (i || t))
            }
            return
        }
        this.element = i;
        if (this.element.flickityGUID) {
            var n = f[this.element.flickityGUID];
            if (n) n.option(e);
            return n
        }
        if (l) {
            this.$element = l(this.element)
        }
        this.options = a.extend({}, this.constructor.defaults);
        this.option(e);
        this._create()
    }

    p.defaults = {
        accessibility: true,
        cellAlign: "center",
        freeScrollFriction: .075,
        friction: .28,
        namespaceJQueryEvents: true,
        percentPosition: true,
        resize: true,
        selectedAttraction: .025,
        setGallerySize: true
    };
    p.createMethods = [];
    var v = p.prototype;
    a.extend(v, e.prototype);
    v._create = function () {
        var t = this.guid = ++d;
        this.element.flickityGUID = t;
        f[t] = this;
        this.selectedIndex = 0;
        this.restingFrames = 0;
        this.x = 0;
        this.velocity = 0;
        this.originSide = this.options.rightToLeft ? "right" : "left";
        this.viewport = document.createElement("div");
        this.viewport.className = "flickity-viewport";
        this._createSlider();
        if (this.options.resize || this.options.watchCSS) {
            n.addEventListener("resize", this)
        }
        for (var e in this.options.on) {
            var i = this.options.on[e];
            this.on(e, i)
        }
        p.createMethods.forEach(function (t) {
            this[t]()
        }, this);
        if (this.options.watchCSS) {
            this.watchCSS()
        } else {
            this.activate()
        }
    };
    v.option = function (t) {
        a.extend(this.options, t)
    };
    v.activate = function () {
        if (this.isActive) {
            return
        }
        this.isActive = true;
        this.element.classList.add("flickity-enabled");
        if (this.options.rightToLeft) {
            this.element.classList.add("flickity-rtl")
        }
        this.getSize();
        var t = this._filterFindCellElements(this.element.children);
        u(t, this.slider);
        this.viewport.appendChild(this.slider);
        this.element.appendChild(this.viewport);
        this.reloadCells();
        if (this.options.accessibility) {
            this.element.tabIndex = 0;
            this.element.addEventListener("keydown", this)
        }
        this.emitEvent("activate");
        this.selectInitialIndex();
        this.isInitActivated = true;
        this.dispatchEvent("ready")
    };
    v._createSlider = function () {
        var t = document.createElement("div");
        t.className = "flickity-slider";
        t.style[this.originSide] = 0;
        this.slider = t
    };
    v._filterFindCellElements = function (t) {
        return a.filterFindElements(t, this.options.cellSelector)
    };
    v.reloadCells = function () {
        this.cells = this._makeCells(this.slider.children);
        this.positionCells();
        this._getWrapShiftCells();
        this.setGallerySize()
    };
    v._makeCells = function (t) {
        var e = this._filterFindCellElements(t);
        var i = e.map(function (t) {
            return new s(t, this)
        }, this);
        return i
    };
    v.getLastCell = function () {
        return this.cells[this.cells.length - 1]
    };
    v.getLastSlide = function () {
        return this.slides[this.slides.length - 1]
    };
    v.positionCells = function () {
        this._sizeCells(this.cells);
        this._positionCells(0)
    };
    v._positionCells = function (t) {
        t = t || 0;
        this.maxCellHeight = t ? this.maxCellHeight || 0 : 0;
        var e = 0;
        if (t > 0) {
            var i = this.cells[t - 1];
            e = i.x + i.size.outerWidth
        }
        var n = this.cells.length;
        for (var s = t; s < n; s++) {
            var r = this.cells[s];
            r.setPosition(e);
            e += r.size.outerWidth;
            this.maxCellHeight = Math.max(r.size.outerHeight, this.maxCellHeight)
        }
        this.slideableWidth = e;
        this.updateSlides();
        this._containSlides();
        this.slidesWidth = n ? this.getLastSlide().target - this.slides[0].target : 0
    };
    v._sizeCells = function (t) {
        t.forEach(function (t) {
            t.getSize()
        })
    };
    v.updateSlides = function () {
        this.slides = [];
        if (!this.cells.length) {
            return
        }
        var n = new o(this);
        this.slides.push(n);
        var t = this.originSide == "left";
        var s = t ? "marginRight" : "marginLeft";
        var r = this._getCanCellFit();
        this.cells.forEach(function (t, e) {
            if (!n.cells.length) {
                n.addCell(t);
                return
            }
            var i = n.outerWidth - n.firstMargin + (t.size.outerWidth - t.size[s]);
            if (r.call(this, e, i)) {
                n.addCell(t)
            } else {
                n.updateTarget();
                n = new o(this);
                this.slides.push(n);
                n.addCell(t)
            }
        }, this);
        n.updateTarget();
        this.updateSelectedSlide()
    };
    v._getCanCellFit = function () {
        var t = this.options.groupCells;
        if (!t) {
            return function () {
                return false
            }
        } else if (typeof t == "number") {
            var e = parseInt(t, 10);
            return function (t) {
                return t % e !== 0
            }
        }
        var i = typeof t == "string" && t.match(/^(\d+)%$/);
        var n = i ? parseInt(i[1], 10) / 100 : 1;
        return function (t, e) {
            return e <= (this.size.innerWidth + 1) * n
        }
    };
    v._init = v.reposition = function () {
        this.positionCells();
        this.positionSliderAtSelected()
    };
    v.getSize = function () {
        this.size = i(this.element);
        this.setCellAlign();
        this.cursorPosition = this.size.innerWidth * this.cellAlign
    };
    var g = {center: {left: .5, right: .5}, left: {left: 0, right: 1}, right: {right: 0, left: 1}};
    v.setCellAlign = function () {
        var t = g[this.options.cellAlign];
        this.cellAlign = t ? t[this.originSide] : this.options.cellAlign
    };
    v.setGallerySize = function () {
        if (this.options.setGallerySize) {
            var t = this.options.adaptiveHeight && this.selectedSlide ? this.selectedSlide.height : this.maxCellHeight;
            this.viewport.style.height = t + "px"
        }
    };
    v._getWrapShiftCells = function () {
        if (!this.options.wrapAround) {
            return
        }
        this._unshiftCells(this.beforeShiftCells);
        this._unshiftCells(this.afterShiftCells);
        var t = this.cursorPosition;
        var e = this.cells.length - 1;
        this.beforeShiftCells = this._getGapCells(t, e, -1);
        t = this.size.innerWidth - this.cursorPosition;
        this.afterShiftCells = this._getGapCells(t, 0, 1)
    };
    v._getGapCells = function (t, e, i) {
        var n = [];
        while (t > 0) {
            var s = this.cells[e];
            if (!s) {
                break
            }
            n.push(s);
            e += i;
            t -= s.size.outerWidth
        }
        return n
    };
    v._containSlides = function () {
        if (!this.options.contain || this.options.wrapAround || !this.cells.length) {
            return
        }
        var t = this.options.rightToLeft;
        var e = t ? "marginRight" : "marginLeft";
        var i = t ? "marginLeft" : "marginRight";
        var n = this.slideableWidth - this.getLastCell().size[i];
        var s = n < this.size.innerWidth;
        var r = this.cursorPosition + this.cells[0].size[e];
        var o = n - this.size.innerWidth * (1 - this.cellAlign);
        this.slides.forEach(function (t) {
            if (s) {
                t.target = n * this.cellAlign
            } else {
                t.target = Math.max(t.target, r);
                t.target = Math.min(t.target, o)
            }
        }, this)
    };
    v.dispatchEvent = function (t, e, i) {
        var n = e ? [e].concat(i) : i;
        this.emitEvent(t, n);
        if (l && this.$element) {
            t += this.options.namespaceJQueryEvents ? ".flickity" : "";
            var s = t;
            if (e) {
                var r = new l.Event(e);
                r.type = t;
                s = r
            }
            this.$element.trigger(s, i)
        }
    };
    v.select = function (t, e, i) {
        if (!this.isActive) {
            return
        }
        t = parseInt(t, 10);
        this._wrapSelect(t);
        if (this.options.wrapAround || e) {
            t = a.modulo(t, this.slides.length)
        }
        if (!this.slides[t]) {
            return
        }
        var n = this.selectedIndex;
        this.selectedIndex = t;
        this.updateSelectedSlide();
        if (i) {
            this.positionSliderAtSelected()
        } else {
            this.startAnimation()
        }
        if (this.options.adaptiveHeight) {
            this.setGallerySize()
        }
        this.dispatchEvent("select", null, [t]);
        if (t != n) {
            this.dispatchEvent("change", null, [t])
        }
        this.dispatchEvent("cellSelect")
    };
    v._wrapSelect = function (t) {
        var e = this.slides.length;
        var i = this.options.wrapAround && e > 1;
        if (!i) {
            return t
        }
        var n = a.modulo(t, e);
        var s = Math.abs(n - this.selectedIndex);
        var r = Math.abs(n + e - this.selectedIndex);
        var o = Math.abs(n - e - this.selectedIndex);
        if (!this.isDragSelect && r < s) {
            t += e
        } else if (!this.isDragSelect && o < s) {
            t -= e
        }
        if (t < 0) {
            this.x -= this.slideableWidth
        } else if (t >= e) {
            this.x += this.slideableWidth
        }
    };
    v.previous = function (t, e) {
        this.select(this.selectedIndex - 1, t, e)
    };
    v.next = function (t, e) {
        this.select(this.selectedIndex + 1, t, e)
    };
    v.updateSelectedSlide = function () {
        var t = this.slides[this.selectedIndex];
        if (!t) {
            return
        }
        this.unselectSelectedSlide();
        this.selectedSlide = t;
        t.select();
        this.selectedCells = t.cells;
        this.selectedElements = t.getCellElements();
        this.selectedCell = t.cells[0];
        this.selectedElement = this.selectedElements[0]
    };
    v.unselectSelectedSlide = function () {
        if (this.selectedSlide) {
            this.selectedSlide.unselect()
        }
    };
    v.selectInitialIndex = function () {
        var t = this.options.initialIndex;
        if (this.isInitActivated) {
            this.select(this.selectedIndex, false, true);
            return
        }
        if (t && typeof t == "string") {
            var e = this.queryCell(t);
            if (e) {
                this.selectCell(t, false, true);
                return
            }
        }
        var i = 0;
        if (t && this.slides[t]) {
            i = t
        }
        this.select(i, false, true)
    };
    v.selectCell = function (t, e, i) {
        var n = this.queryCell(t);
        if (!n) {
            return
        }
        var s = this.getCellSlideIndex(n);
        this.select(s, e, i)
    };
    v.getCellSlideIndex = function (t) {
        for (var e = 0; e < this.slides.length; e++) {
            var i = this.slides[e];
            var n = i.cells.indexOf(t);
            if (n != -1) {
                return e
            }
        }
    };
    v.getCell = function (t) {
        for (var e = 0; e < this.cells.length; e++) {
            var i = this.cells[e];
            if (i.element == t) {
                return i
            }
        }
    };
    v.getCells = function (t) {
        t = a.makeArray(t);
        var i = [];
        t.forEach(function (t) {
            var e = this.getCell(t);
            if (e) {
                i.push(e)
            }
        }, this);
        return i
    };
    v.getCellElements = function () {
        return this.cells.map(function (t) {
            return t.element
        })
    };
    v.getParentCell = function (t) {
        var e = this.getCell(t);
        if (e) {
            return e
        }
        t = a.getParent(t, ".flickity-slider > *");
        return this.getCell(t)
    };
    v.getAdjacentCellElements = function (t, e) {
        if (!t) {
            return this.selectedSlide.getCellElements()
        }
        e = e === undefined ? this.selectedIndex : e;
        var i = this.slides.length;
        if (1 + t * 2 >= i) {
            return this.getCellElements()
        }
        var n = [];
        for (var s = e - t; s <= e + t; s++) {
            var r = this.options.wrapAround ? a.modulo(s, i) : s;
            var o = this.slides[r];
            if (o) {
                n = n.concat(o.getCellElements())
            }
        }
        return n
    };
    v.queryCell = function (t) {
        if (typeof t == "number") {
            return this.cells[t]
        }
        if (typeof t == "string") {
            if (t.match(/^[#.]?[\d/]/)) {
                return
            }
            t = this.element.querySelector(t)
        }
        return this.getCell(t)
    };
    v.uiChange = function () {
        this.emitEvent("uiChange")
    };
    v.childUIPointerDown = function (t) {
        if (t.type != "touchstart") {
            t.preventDefault()
        }
        this.focus()
    };
    v.onresize = function () {
        this.watchCSS();
        this.resize()
    };
    a.debounceMethod(p, "onresize", 150);
    v.resize = function () {
        if (!this.isActive) {
            return
        }
        this.getSize();
        if (this.options.wrapAround) {
            this.x = a.modulo(this.x, this.slideableWidth)
        }
        this.positionCells();
        this._getWrapShiftCells();
        this.setGallerySize();
        this.emitEvent("resize");
        var t = this.selectedElements && this.selectedElements[0];
        this.selectCell(t, false, true)
    };
    v.watchCSS = function () {
        var t = this.options.watchCSS;
        if (!t) {
            return
        }
        var e = h(this.element, ":after").content;
        if (e.indexOf("flickity") != -1) {
            this.activate()
        } else {
            this.deactivate()
        }
    };
    v.onkeydown = function (t) {
        var e = document.activeElement && document.activeElement != this.element;
        if (!this.options.accessibility || e) {
            return
        }
        var i = p.keyboardHandlers[t.keyCode];
        if (i) {
            i.call(this)
        }
    };
    p.keyboardHandlers = {
        37: function () {
            var t = this.options.rightToLeft ? "next" : "previous";
            this.uiChange();
            this[t]()
        }, 39: function () {
            var t = this.options.rightToLeft ? "previous" : "next";
            this.uiChange();
            this[t]()
        }
    };
    v.focus = function () {
        var t = n.pageYOffset;
        this.element.focus({preventScroll: true});
        if (n.pageYOffset != t) {
            n.scrollTo(n.pageXOffset, t)
        }
    };
    v.deactivate = function () {
        if (!this.isActive) {
            return
        }
        this.element.classList.remove("flickity-enabled");
        this.element.classList.remove("flickity-rtl");
        this.unselectSelectedSlide();
        this.cells.forEach(function (t) {
            t.destroy()
        });
        this.element.removeChild(this.viewport);
        u(this.slider.children, this.element);
        if (this.options.accessibility) {
            this.element.removeAttribute("tabIndex");
            this.element.removeEventListener("keydown", this)
        }
        this.isActive = false;
        this.emitEvent("deactivate")
    };
    v.destroy = function () {
        this.deactivate();
        n.removeEventListener("resize", this);
        this.allOff();
        this.emitEvent("destroy");
        if (l && this.$element) {
            l.removeData(this.element, "flickity")
        }
        delete this.element.flickityGUID;
        delete f[this.guid]
    };
    a.extend(v, r);
    p.data = function (t) {
        t = a.getQueryElement(t);
        var e = t && t.flickityGUID;
        return e && f[e]
    };
    a.htmlInit(p, "flickity");
    if (l && l.bridget) {
        l.bridget("flickity", p)
    }
    p.setJQuery = function (t) {
        l = t
    };
    p.Cell = s;
    p.Slide = o;
    return p
});
/*!
 * Unipointer v2.3.0
 * base class for doing one thing with pointer event
 * MIT license
 */
(function (e, i) {
    if (typeof define == "function" && define.amd) {
        define("unipointer/unipointer", ["ev-emitter/ev-emitter"], function (t) {
            return i(e, t)
        })
    } else if (typeof module == "object" && module.exports) {
        module.exports = i(e, require("ev-emitter"))
    } else {
        e.Unipointer = i(e, e.EvEmitter)
    }
})(window, function t(s, e) {
    function i() {
    }

    function n() {
    }

    var r = n.prototype = Object.create(e.prototype);
    r.bindStartEvent = function (t) {
        this._bindStartEvent(t, true)
    };
    r.unbindStartEvent = function (t) {
        this._bindStartEvent(t, false)
    };
    r._bindStartEvent = function (t, e) {
        e = e === undefined ? true : e;
        var i = e ? "addEventListener" : "removeEventListener";
        var n = "mousedown";
        if (s.PointerEvent) {
            n = "pointerdown"
        } else if ("ontouchstart" in s) {
            n = "touchstart"
        }
        t[i](n, this)
    };
    r.handleEvent = function (t) {
        var e = "on" + t.type;
        if (this[e]) {
            this[e](t)
        }
    };
    r.getTouch = function (t) {
        for (var e = 0; e < t.length; e++) {
            var i = t[e];
            if (i.identifier == this.pointerIdentifier) {
                return i
            }
        }
    };
    r.onmousedown = function (t) {
        var e = t.button;
        if (e && (e !== 0 && e !== 1)) {
            return
        }
        this._pointerDown(t, t)
    };
    r.ontouchstart = function (t) {
        this._pointerDown(t, t.changedTouches[0])
    };
    r.onpointerdown = function (t) {
        this._pointerDown(t, t)
    };
    r._pointerDown = function (t, e) {
        if (t.button || this.isPointerDown) {
            return
        }
        this.isPointerDown = true;
        this.pointerIdentifier = e.pointerId !== undefined ? e.pointerId : e.identifier;
        this.pointerDown(t, e)
    };
    r.pointerDown = function (t, e) {
        this._bindPostStartEvents(t);
        this.emitEvent("pointerDown", [t, e])
    };
    var o = {mousedown: ["mousemove", "mouseup"], touchstart: ["touchmove", "touchend", "touchcancel"], pointerdown: ["pointermove", "pointerup", "pointercancel"]};
    r._bindPostStartEvents = function (t) {
        if (!t) {
            return
        }
        var e = o[t.type];
        e.forEach(function (t) {
            s.addEventListener(t, this)
        }, this);
        this._boundPointerEvents = e
    };
    r._unbindPostStartEvents = function () {
        if (!this._boundPointerEvents) {
            return
        }
        this._boundPointerEvents.forEach(function (t) {
            s.removeEventListener(t, this)
        }, this);
        delete this._boundPointerEvents
    };
    r.onmousemove = function (t) {
        this._pointerMove(t, t)
    };
    r.onpointermove = function (t) {
        if (t.pointerId == this.pointerIdentifier) {
            this._pointerMove(t, t)
        }
    };
    r.ontouchmove = function (t) {
        var e = this.getTouch(t.changedTouches);
        if (e) {
            this._pointerMove(t, e)
        }
    };
    r._pointerMove = function (t, e) {
        this.pointerMove(t, e)
    };
    r.pointerMove = function (t, e) {
        this.emitEvent("pointerMove", [t, e])
    };
    r.onmouseup = function (t) {
        this._pointerUp(t, t)
    };
    r.onpointerup = function (t) {
        if (t.pointerId == this.pointerIdentifier) {
            this._pointerUp(t, t)
        }
    };
    r.ontouchend = function (t) {
        var e = this.getTouch(t.changedTouches);
        if (e) {
            this._pointerUp(t, e)
        }
    };
    r._pointerUp = function (t, e) {
        this._pointerDone();
        this.pointerUp(t, e)
    };
    r.pointerUp = function (t, e) {
        this.emitEvent("pointerUp", [t, e])
    };
    r._pointerDone = function () {
        this._pointerReset();
        this._unbindPostStartEvents();
        this.pointerDone()
    };
    r._pointerReset = function () {
        this.isPointerDown = false;
        delete this.pointerIdentifier
    };
    r.pointerDone = i;
    r.onpointercancel = function (t) {
        if (t.pointerId == this.pointerIdentifier) {
            this._pointerCancel(t, t)
        }
    };
    r.ontouchcancel = function (t) {
        var e = this.getTouch(t.changedTouches);
        if (e) {
            this._pointerCancel(t, e)
        }
    };
    r._pointerCancel = function (t, e) {
        this._pointerDone();
        this.pointerCancel(t, e)
    };
    r.pointerCancel = function (t, e) {
        this.emitEvent("pointerCancel", [t, e])
    };
    n.getPointerPoint = function (t) {
        return {x: t.pageX, y: t.pageY}
    };
    return n
});
/*!
 * Unidragger v2.3.1
 * Draggable base class
 * MIT license
 */
(function (e, i) {
    if (typeof define == "function" && define.amd) {
        define("unidragger/unidragger", ["unipointer/unipointer"], function (t) {
            return i(e, t)
        })
    } else if (typeof module == "object" && module.exports) {
        module.exports = i(e, require("unipointer"))
    } else {
        e.Unidragger = i(e, e.Unipointer)
    }
})(window, function t(r, e) {
    function i() {
    }

    var n = i.prototype = Object.create(e.prototype);
    n.bindHandles = function () {
        this._bindHandles(true)
    };
    n.unbindHandles = function () {
        this._bindHandles(false)
    };
    n._bindHandles = function (t) {
        t = t === undefined ? true : t;
        var e = t ? "addEventListener" : "removeEventListener";
        var i = t ? this._touchActionValue : "";
        for (var n = 0; n < this.handles.length; n++) {
            var s = this.handles[n];
            this._bindStartEvent(s, t);
            s[e]("click", this);
            if (r.PointerEvent) {
                s.style.touchAction = i
            }
        }
    };
    n._touchActionValue = "none";
    n.pointerDown = function (t, e) {
        var i = this.okayPointerDown(t);
        if (!i) {
            return
        }
        this.pointerDownPointer = {pageX: e.pageX, pageY: e.pageY};
        t.preventDefault();
        this.pointerDownBlur();
        this._bindPostStartEvents(t);
        this.emitEvent("pointerDown", [t, e])
    };
    var s = {TEXTAREA: true, INPUT: true, SELECT: true, OPTION: true};
    var o = {radio: true, checkbox: true, button: true, submit: true, image: true, file: true};
    n.okayPointerDown = function (t) {
        var e = s[t.target.nodeName];
        var i = o[t.target.type];
        var n = !e || i;
        if (!n) {
            this._pointerReset()
        }
        return n
    };
    n.pointerDownBlur = function () {
        var t = document.activeElement;
        var e = t && t.blur && t != document.body;
        if (e) {
            t.blur()
        }
    };
    n.pointerMove = function (t, e) {
        var i = this._dragPointerMove(t, e);
        this.emitEvent("pointerMove", [t, e, i]);
        this._dragMove(t, e, i)
    };
    n._dragPointerMove = function (t, e) {
        var i = {x: e.pageX - this.pointerDownPointer.pageX, y: e.pageY - this.pointerDownPointer.pageY};
        if (!this.isDragging && this.hasDragStarted(i)) {
            this._dragStart(t, e)
        }
        return i
    };
    n.hasDragStarted = function (t) {
        return Math.abs(t.x) > 3 || Math.abs(t.y) > 3
    };
    n.pointerUp = function (t, e) {
        this.emitEvent("pointerUp", [t, e]);
        this._dragPointerUp(t, e)
    };
    n._dragPointerUp = function (t, e) {
        if (this.isDragging) {
            this._dragEnd(t, e)
        } else {
            this._staticClick(t, e)
        }
    };
    n._dragStart = function (t, e) {
        this.isDragging = true;
        this.isPreventingClicks = true;
        this.dragStart(t, e)
    };
    n.dragStart = function (t, e) {
        this.emitEvent("dragStart", [t, e])
    };
    n._dragMove = function (t, e, i) {
        if (!this.isDragging) {
            return
        }
        this.dragMove(t, e, i)
    };
    n.dragMove = function (t, e, i) {
        t.preventDefault();
        this.emitEvent("dragMove", [t, e, i])
    };
    n._dragEnd = function (t, e) {
        this.isDragging = false;
        setTimeout(function () {
            delete this.isPreventingClicks
        }.bind(this));
        this.dragEnd(t, e)
    };
    n.dragEnd = function (t, e) {
        this.emitEvent("dragEnd", [t, e])
    };
    n.onclick = function (t) {
        if (this.isPreventingClicks) {
            t.preventDefault()
        }
    };
    n._staticClick = function (t, e) {
        if (this.isIgnoringMouseUp && t.type == "mouseup") {
            return
        }
        this.staticClick(t, e);
        if (t.type != "mouseup") {
            this.isIgnoringMouseUp = true;
            setTimeout(function () {
                delete this.isIgnoringMouseUp
            }.bind(this), 400)
        }
    };
    n.staticClick = function (t, e) {
        this.emitEvent("staticClick", [t, e])
    };
    i.getPointerPoint = e.getPointerPoint;
    return i
});
(function (n, s) {
    if (typeof define == "function" && define.amd) {
        define("flickity/js/drag", ["./flickity", "unidragger/unidragger", "fizzy-ui-utils/utils"], function (t, e, i) {
            return s(n, t, e, i)
        })
    } else if (typeof module == "object" && module.exports) {
        module.exports = s(n, require("./flickity"), require("unidragger"), require("fizzy-ui-utils"))
    } else {
        n.Flickity = s(n, n.Flickity, n.Unidragger, n.fizzyUIUtils)
    }
})(window, function t(n, e, i, a) {
    a.extend(e.defaults, {draggable: ">1", dragThreshold: 3});
    e.createMethods.push("_createDrag");
    var s = e.prototype;
    a.extend(s, i.prototype);
    s._touchActionValue = "pan-y";
    var r = "createTouch" in document;
    var o = false;
    s._createDrag = function () {
        this.on("activate", this.onActivateDrag);
        this.on("uiChange", this._uiChangeDrag);
        this.on("deactivate", this.onDeactivateDrag);
        this.on("cellChange", this.updateDraggable);
        if (r && !o) {
            n.addEventListener("touchmove", function () {
            });
            o = true
        }
    };
    s.onActivateDrag = function () {
        this.handles = [this.viewport];
        this.bindHandles();
        this.updateDraggable()
    };
    s.onDeactivateDrag = function () {
        this.unbindHandles();
        this.element.classList.remove("is-draggable")
    };
    s.updateDraggable = function () {
        if (this.options.draggable == ">1") {
            this.isDraggable = this.slides.length > 1
        } else {
            this.isDraggable = this.options.draggable
        }
        if (this.isDraggable) {
            this.element.classList.add("is-draggable")
        } else {
            this.element.classList.remove("is-draggable")
        }
    };
    s.bindDrag = function () {
        this.options.draggable = true;
        this.updateDraggable()
    };
    s.unbindDrag = function () {
        this.options.draggable = false;
        this.updateDraggable()
    };
    s._uiChangeDrag = function () {
        delete this.isFreeScrolling
    };
    s.pointerDown = function (t, e) {
        if (!this.isDraggable) {
            this._pointerDownDefault(t, e);
            return
        }
        var i = this.okayPointerDown(t);
        if (!i) {
            return
        }
        this._pointerDownPreventDefault(t);
        this.pointerDownFocus(t);
        if (document.activeElement != this.element) {
            this.pointerDownBlur()
        }
        this.dragX = this.x;
        this.viewport.classList.add("is-pointer-down");
        this.pointerDownScroll = h();
        n.addEventListener("scroll", this);
        this._pointerDownDefault(t, e)
    };
    s._pointerDownDefault = function (t, e) {
        this.pointerDownPointer = {pageX: e.pageX, pageY: e.pageY};
        this._bindPostStartEvents(t);
        this.dispatchEvent("pointerDown", t, [e])
    };
    var l = {INPUT: true, TEXTAREA: true, SELECT: true};
    s.pointerDownFocus = function (t) {
        var e = l[t.target.nodeName];
        if (!e) {
            this.focus()
        }
    };
    s._pointerDownPreventDefault = function (t) {
        var e = t.type == "touchstart";
        var i = t.pointerType == "touch";
        var n = l[t.target.nodeName];
        if (!e && !i && !n) {
            t.preventDefault()
        }
    };
    s.hasDragStarted = function (t) {
        return Math.abs(t.x) > this.options.dragThreshold
    };
    s.pointerUp = function (t, e) {
        delete this.isTouchScrolling;
        this.viewport.classList.remove("is-pointer-down");
        this.dispatchEvent("pointerUp", t, [e]);
        this._dragPointerUp(t, e)
    };
    s.pointerDone = function () {
        n.removeEventListener("scroll", this);
        delete this.pointerDownScroll
    };
    s.dragStart = function (t, e) {
        if (!this.isDraggable) {
            return
        }
        this.dragStartPosition = this.x;
        this.startAnimation();
        n.removeEventListener("scroll", this);
        this.dispatchEvent("dragStart", t, [e])
    };
    s.pointerMove = function (t, e) {
        var i = this._dragPointerMove(t, e);
        this.dispatchEvent("pointerMove", t, [e, i]);
        this._dragMove(t, e, i)
    };
    s.dragMove = function (t, e, i) {
        if (!this.isDraggable) {
            return
        }
        t.preventDefault();
        this.previousDragX = this.dragX;
        var n = this.options.rightToLeft ? -1 : 1;
        if (this.options.wrapAround) {
            i.x %= this.slideableWidth
        }
        var s = this.dragStartPosition + i.x * n;
        if (!this.options.wrapAround && this.slides.length) {
            var r = Math.max(-this.slides[0].target, this.dragStartPosition);
            s = s > r ? (s + r) * .5 : s;
            var o = Math.min(-this.getLastSlide().target, this.dragStartPosition);
            s = s < o ? (s + o) * .5 : s
        }
        this.dragX = s;
        this.dragMoveTime = new Date;
        this.dispatchEvent("dragMove", t, [e, i])
    };
    s.dragEnd = function (t, e) {
        if (!this.isDraggable) {
            return
        }
        if (this.options.freeScroll) {
            this.isFreeScrolling = true
        }
        var i = this.dragEndRestingSelect();
        if (this.options.freeScroll && !this.options.wrapAround) {
            var n = this.getRestingPosition();
            this.isFreeScrolling = -n > this.slides[0].target && -n < this.getLastSlide().target
        } else if (!this.options.freeScroll && i == this.selectedIndex) {
            i += this.dragEndBoostSelect()
        }
        delete this.previousDragX;
        this.isDragSelect = this.options.wrapAround;
        this.select(i);
        delete this.isDragSelect;
        this.dispatchEvent("dragEnd", t, [e])
    };
    s.dragEndRestingSelect = function () {
        var t = this.getRestingPosition();
        var e = Math.abs(this.getSlideDistance(-t, this.selectedIndex));
        var i = this._getClosestResting(t, e, 1);
        var n = this._getClosestResting(t, e, -1);
        var s = i.distance < n.distance ? i.index : n.index;
        return s
    };
    s._getClosestResting = function (t, e, i) {
        var n = this.selectedIndex;
        var s = Infinity;
        var r = this.options.contain && !this.options.wrapAround ? function (t, e) {
            return t <= e
        } : function (t, e) {
            return t < e
        };
        while (r(e, s)) {
            n += i;
            s = e;
            e = this.getSlideDistance(-t, n);
            if (e === null) {
                break
            }
            e = Math.abs(e)
        }
        return {distance: s, index: n - i}
    };
    s.getSlideDistance = function (t, e) {
        var i = this.slides.length;
        var n = this.options.wrapAround && i > 1;
        var s = n ? a.modulo(e, i) : e;
        var r = this.slides[s];
        if (!r) {
            return null
        }
        var o = n ? this.slideableWidth * Math.floor(e / i) : 0;
        return t - (r.target + o)
    };
    s.dragEndBoostSelect = function () {
        if (this.previousDragX === undefined || !this.dragMoveTime || new Date - this.dragMoveTime > 100) {
            return 0
        }
        var t = this.getSlideDistance(-this.dragX, this.selectedIndex);
        var e = this.previousDragX - this.dragX;
        if (t > 0 && e > 0) {
            return 1
        } else if (t < 0 && e < 0) {
            return -1
        }
        return 0
    };
    s.staticClick = function (t, e) {
        var i = this.getParentCell(t.target);
        var n = i && i.element;
        var s = i && this.cells.indexOf(i);
        this.dispatchEvent("staticClick", t, [e, n, s])
    };
    s.onscroll = function () {
        var t = h();
        var e = this.pointerDownScroll.x - t.x;
        var i = this.pointerDownScroll.y - t.y;
        if (Math.abs(e) > 3 || Math.abs(i) > 3) {
            this._pointerDone()
        }
    };

    function h() {
        return {x: n.pageXOffset, y: n.pageYOffset}
    }

    return e
});
(function (n, s) {
    if (typeof define == "function" && define.amd) {
        define("flickity/js/prev-next-button", ["./flickity", "unipointer/unipointer", "fizzy-ui-utils/utils"], function (t, e, i) {
            return s(n, t, e, i)
        })
    } else if (typeof module == "object" && module.exports) {
        module.exports = s(n, require("./flickity"), require("unipointer"), require("fizzy-ui-utils"))
    } else {
        s(n, n.Flickity, n.Unipointer, n.fizzyUIUtils)
    }
})(window, function t(e, i, n, s) {
    "use strict";
    var r = "http://www.w3.org/2000/svg";

    function o(t, e) {
        this.direction = t;
        this.parent = e;
        this._create()
    }

    o.prototype = Object.create(n.prototype);
    o.prototype._create = function () {
        this.isEnabled = true;
        this.isPrevious = this.direction == -1;
        var t = this.parent.options.rightToLeft ? 1 : -1;
        this.isLeft = this.direction == t;
        var e = this.element = document.createElement("button");
        e.className = "flickity-button flickity-prev-next-button";
        e.className += this.isPrevious ? " previous" : " next";
        e.setAttribute("type", "button");
        this.disable();
        e.setAttribute("aria-label", this.isPrevious ? "Previous" : "Next");
        var i = this.createSVG();
        e.appendChild(i);
        this.parent.on("select", this.update.bind(this));
        this.on("pointerDown", this.parent.childUIPointerDown.bind(this.parent))
    };
    o.prototype.activate = function () {
        this.bindStartEvent(this.element);
        this.element.addEventListener("click", this);
        this.parent.element.appendChild(this.element)
    };
    o.prototype.deactivate = function () {
        this.parent.element.removeChild(this.element);
        this.unbindStartEvent(this.element);
        this.element.removeEventListener("click", this)
    };
    o.prototype.createSVG = function () {
        var t = document.createElementNS(r, "svg");
        t.setAttribute("class", "flickity-button-icon");
        t.setAttribute("viewBox", "0 0 100 100");
        var e = document.createElementNS(r, "path");
        var i = a(this.parent.options.arrowShape);
        e.setAttribute("d", i);
        e.setAttribute("class", "arrow");
        if (!this.isLeft) {
            e.setAttribute("transform", "translate(100, 100) rotate(180) ")
        }
        t.appendChild(e);
        return t
    };

    function a(t) {
        if (typeof t == "string") {
            return t
        }
        return "M " + t.x0 + ",50" + " L " + t.x1 + "," + (t.y1 + 50) + " L " + t.x2 + "," + (t.y2 + 50) + " L " + t.x3 + ",50 " + " L " + t.x2 + "," + (50 - t.y2) + " L " + t.x1 + "," + (50 - t.y1) + " Z"
    }

    o.prototype.handleEvent = s.handleEvent;
    o.prototype.onclick = function () {
        if (!this.isEnabled) {
            return
        }
        this.parent.uiChange();
        var t = this.isPrevious ? "previous" : "next";
        this.parent[t]()
    };
    o.prototype.enable = function () {
        if (this.isEnabled) {
            return
        }
        this.element.disabled = false;
        this.isEnabled = true
    };
    o.prototype.disable = function () {
        if (!this.isEnabled) {
            return
        }
        this.element.disabled = true;
        this.isEnabled = false
    };
    o.prototype.update = function () {
        var t = this.parent.slides;
        if (this.parent.options.wrapAround && t.length > 1) {
            this.enable();
            return
        }
        var e = t.length ? t.length - 1 : 0;
        var i = this.isPrevious ? 0 : e;
        var n = this.parent.selectedIndex == i ? "disable" : "enable";
        this[n]()
    };
    o.prototype.destroy = function () {
        this.deactivate();
        this.allOff()
    };
    s.extend(i.defaults, {prevNextButtons: true, arrowShape: {x0: 10, x1: 60, y1: 50, x2: 70, y2: 40, x3: 30}});
    i.createMethods.push("_createPrevNextButtons");
    var l = i.prototype;
    l._createPrevNextButtons = function () {
        if (!this.options.prevNextButtons) {
            return
        }
        this.prevButton = new o(-1, this);
        this.nextButton = new o(1, this);
        this.on("activate", this.activatePrevNextButtons)
    };
    l.activatePrevNextButtons = function () {
        this.prevButton.activate();
        this.nextButton.activate();
        this.on("deactivate", this.deactivatePrevNextButtons)
    };
    l.deactivatePrevNextButtons = function () {
        this.prevButton.deactivate();
        this.nextButton.deactivate();
        this.off("deactivate", this.deactivatePrevNextButtons)
    };
    i.PrevNextButton = o;
    return i
});
(function (n, s) {
    if (typeof define == "function" && define.amd) {
        define("flickity/js/page-dots", ["./flickity", "unipointer/unipointer", "fizzy-ui-utils/utils"], function (t, e, i) {
            return s(n, t, e, i)
        })
    } else if (typeof module == "object" && module.exports) {
        module.exports = s(n, require("./flickity"), require("unipointer"), require("fizzy-ui-utils"))
    } else {
        s(n, n.Flickity, n.Unipointer, n.fizzyUIUtils)
    }
})(window, function t(e, i, n, s) {
    function r(t) {
        this.parent = t;
        this._create()
    }

    r.prototype = Object.create(n.prototype);
    r.prototype._create = function () {
        this.holder = document.createElement("ol");
        this.holder.className = "flickity-page-dots";
        this.dots = [];
        this.handleClick = this.onClick.bind(this);
        this.on("pointerDown", this.parent.childUIPointerDown.bind(this.parent))
    };
    r.prototype.activate = function () {
        this.setDots();
        this.holder.addEventListener("click", this.handleClick);
        this.bindStartEvent(this.holder);
        this.parent.element.appendChild(this.holder)
    };
    r.prototype.deactivate = function () {
        this.holder.removeEventListener("click", this.handleClick);
        this.unbindStartEvent(this.holder);
        this.parent.element.removeChild(this.holder)
    };
    r.prototype.setDots = function () {
        var t = this.parent.slides.length - this.dots.length;
        if (t > 0) {
            this.addDots(t)
        } else if (t < 0) {
            this.removeDots(-t)
        }
    };
    r.prototype.addDots = function (t) {
        var e = document.createDocumentFragment();
        var i = [];
        var n = this.dots.length;
        var s = n + t;
        for (var r = n; r < s; r++) {
            var o = document.createElement("li");
            o.className = "dot";
            o.setAttribute("aria-label", "Page dot " + (r + 1));
            e.appendChild(o);
            i.push(o)
        }
        this.holder.appendChild(e);
        this.dots = this.dots.concat(i)
    };
    r.prototype.removeDots = function (t) {
        var e = this.dots.splice(this.dots.length - t, t);
        e.forEach(function (t) {
            this.holder.removeChild(t)
        }, this)
    };
    r.prototype.updateSelected = function () {
        if (this.selectedDot) {
            this.selectedDot.className = "dot";
            this.selectedDot.removeAttribute("aria-current")
        }
        if (!this.dots.length) {
            return
        }
        this.selectedDot = this.dots[this.parent.selectedIndex];
        this.selectedDot.className = "dot is-selected";
        this.selectedDot.setAttribute("aria-current", "step")
    };
    r.prototype.onTap = r.prototype.onClick = function (t) {
        var e = t.target;
        if (e.nodeName != "LI") {
            return
        }
        this.parent.uiChange();
        var i = this.dots.indexOf(e);
        this.parent.select(i)
    };
    r.prototype.destroy = function () {
        this.deactivate();
        this.allOff()
    };
    i.PageDots = r;
    s.extend(i.defaults, {pageDots: true});
    i.createMethods.push("_createPageDots");
    var o = i.prototype;
    o._createPageDots = function () {
        if (!this.options.pageDots) {
            return
        }
        this.pageDots = new r(this);
        this.on("activate", this.activatePageDots);
        this.on("select", this.updateSelectedPageDots);
        this.on("cellChange", this.updatePageDots);
        this.on("resize", this.updatePageDots);
        this.on("deactivate", this.deactivatePageDots)
    };
    o.activatePageDots = function () {
        this.pageDots.activate()
    };
    o.updateSelectedPageDots = function () {
        this.pageDots.updateSelected()
    };
    o.updatePageDots = function () {
        this.pageDots.setDots()
    };
    o.deactivatePageDots = function () {
        this.pageDots.deactivate()
    };
    i.PageDots = r;
    return i
});
(function (t, n) {
    if (typeof define == "function" && define.amd) {
        define("flickity/js/player", ["ev-emitter/ev-emitter", "fizzy-ui-utils/utils", "./flickity"], function (t, e, i) {
            return n(t, e, i)
        })
    } else if (typeof module == "object" && module.exports) {
        module.exports = n(require("ev-emitter"), require("fizzy-ui-utils"), require("./flickity"))
    } else {
        n(t.EvEmitter, t.fizzyUIUtils, t.Flickity)
    }
})(window, function t(e, i, n) {
    function s(t) {
        this.parent = t;
        this.state = "stopped";
        this.onVisibilityChange = this.visibilityChange.bind(this);
        this.onVisibilityPlay = this.visibilityPlay.bind(this)
    }

    s.prototype = Object.create(e.prototype);
    s.prototype.play = function () {
        if (this.state == "playing") {
            return
        }
        var t = document.hidden;
        if (t) {
            document.addEventListener("visibilitychange", this.onVisibilityPlay);
            return
        }
        this.state = "playing";
        document.addEventListener("visibilitychange", this.onVisibilityChange);
        this.tick()
    };
    s.prototype.tick = function () {
        if (this.state != "playing") {
            return
        }
        var t = this.parent.options.autoPlay;
        t = typeof t == "number" ? t : 3e3;
        var e = this;
        this.clear();
        this.timeout = setTimeout(function () {
            e.parent.next(true);
            e.tick()
        }, t)
    };
    s.prototype.stop = function () {
        this.state = "stopped";
        this.clear();
        document.removeEventListener("visibilitychange", this.onVisibilityChange)
    };
    s.prototype.clear = function () {
        clearTimeout(this.timeout)
    };
    s.prototype.pause = function () {
        if (this.state == "playing") {
            this.state = "paused";
            this.clear()
        }
    };
    s.prototype.unpause = function () {
        if (this.state == "paused") {
            this.play()
        }
    };
    s.prototype.visibilityChange = function () {
        var t = document.hidden;
        this[t ? "pause" : "unpause"]()
    };
    s.prototype.visibilityPlay = function () {
        this.play();
        document.removeEventListener("visibilitychange", this.onVisibilityPlay)
    };
    i.extend(n.defaults, {pauseAutoPlayOnHover: true});
    n.createMethods.push("_createPlayer");
    var r = n.prototype;
    r._createPlayer = function () {
        this.player = new s(this);
        this.on("activate", this.activatePlayer);
        this.on("uiChange", this.stopPlayer);
        this.on("pointerDown", this.stopPlayer);
        this.on("deactivate", this.deactivatePlayer)
    };
    r.activatePlayer = function () {
        if (!this.options.autoPlay) {
            return
        }
        this.player.play();
        this.element.addEventListener("mouseenter", this)
    };
    r.playPlayer = function () {
        this.player.play()
    };
    r.stopPlayer = function () {
        this.player.stop()
    };
    r.pausePlayer = function () {
        this.player.pause()
    };
    r.unpausePlayer = function () {
        this.player.unpause()
    };
    r.deactivatePlayer = function () {
        this.player.stop();
        this.element.removeEventListener("mouseenter", this)
    };
    r.onmouseenter = function () {
        if (!this.options.pauseAutoPlayOnHover) {
            return
        }
        this.player.pause();
        this.element.addEventListener("mouseleave", this)
    };
    r.onmouseleave = function () {
        this.player.unpause();
        this.element.removeEventListener("mouseleave", this)
    };
    n.Player = s;
    return n
});
(function (i, n) {
    if (typeof define == "function" && define.amd) {
        define("flickity/js/add-remove-cell", ["./flickity", "fizzy-ui-utils/utils"], function (t, e) {
            return n(i, t, e)
        })
    } else if (typeof module == "object" && module.exports) {
        module.exports = n(i, require("./flickity"), require("fizzy-ui-utils"))
    } else {
        n(i, i.Flickity, i.fizzyUIUtils)
    }
})(window, function t(e, i, n) {
    function l(t) {
        var e = document.createDocumentFragment();
        t.forEach(function (t) {
            e.appendChild(t.element)
        });
        return e
    }

    var s = i.prototype;
    s.insert = function (t, e) {
        var i = this._makeCells(t);
        if (!i || !i.length) {
            return
        }
        var n = this.cells.length;
        e = e === undefined ? n : e;
        var s = l(i);
        var r = e == n;
        if (r) {
            this.slider.appendChild(s)
        } else {
            var o = this.cells[e].element;
            this.slider.insertBefore(s, o)
        }
        if (e === 0) {
            this.cells = i.concat(this.cells)
        } else if (r) {
            this.cells = this.cells.concat(i)
        } else {
            var a = this.cells.splice(e, n - e);
            this.cells = this.cells.concat(i).concat(a)
        }
        this._sizeCells(i);
        this.cellChange(e, true)
    };
    s.append = function (t) {
        this.insert(t, this.cells.length)
    };
    s.prepend = function (t) {
        this.insert(t, 0)
    };
    s.remove = function (t) {
        var e = this.getCells(t);
        if (!e || !e.length) {
            return
        }
        var i = this.cells.length - 1;
        e.forEach(function (t) {
            t.remove();
            var e = this.cells.indexOf(t);
            i = Math.min(e, i);
            n.removeFrom(this.cells, t)
        }, this);
        this.cellChange(i, true)
    };
    s.cellSizeChange = function (t) {
        var e = this.getCell(t);
        if (!e) {
            return
        }
        e.getSize();
        var i = this.cells.indexOf(e);
        this.cellChange(i)
    };
    s.cellChange = function (t, e) {
        var i = this.selectedElement;
        this._positionCells(t);
        this._getWrapShiftCells();
        this.setGallerySize();
        var n = this.getCell(i);
        if (n) {
            this.selectedIndex = this.getCellSlideIndex(n)
        }
        this.selectedIndex = Math.min(this.slides.length - 1, this.selectedIndex);
        this.emitEvent("cellChange", [t]);
        this.select(this.selectedIndex);
        if (e) {
            this.positionSliderAtSelected()
        }
    };
    return i
});
(function (i, n) {
    if (typeof define == "function" && define.amd) {
        define("flickity/js/lazyload", ["./flickity", "fizzy-ui-utils/utils"], function (t, e) {
            return n(i, t, e)
        })
    } else if (typeof module == "object" && module.exports) {
        module.exports = n(i, require("./flickity"), require("fizzy-ui-utils"))
    } else {
        n(i, i.Flickity, i.fizzyUIUtils)
    }
})(window, function t(e, i, o) {
    "use strict";
    i.createMethods.push("_createLazyload");
    var n = i.prototype;
    n._createLazyload = function () {
        this.on("select", this.lazyLoad)
    };
    n.lazyLoad = function () {
        var t = this.options.lazyLoad;
        if (!t) {
            return
        }
        var e = typeof t == "number" ? t : 0;
        var i = this.getAdjacentCellElements(e);
        var n = [];
        i.forEach(function (t) {
            var e = s(t);
            n = n.concat(e)
        });
        n.forEach(function (t) {
            new r(t, this)
        }, this)
    };

    function s(t) {
        if (t.nodeName == "IMG") {
            var e = t.getAttribute("data-flickity-lazyload");
            var i = t.getAttribute("data-flickity-lazyload-src");
            var n = t.getAttribute("data-flickity-lazyload-srcset");
            if (e || i || n) {
                return [t]
            }
        }
        var s = "img[data-flickity-lazyload], " + "img[data-flickity-lazyload-src], img[data-flickity-lazyload-srcset]";
        var r = t.querySelectorAll(s);
        return o.makeArray(r)
    }

    function r(t, e) {
        this.img = t;
        this.flickity = e;
        this.load()
    }

    r.prototype.handleEvent = o.handleEvent;
    r.prototype.load = function () {
        this.img.addEventListener("load", this);
        this.img.addEventListener("error", this);
        var t = this.img.getAttribute("data-flickity-lazyload") || this.img.getAttribute("data-flickity-lazyload-src");
        var e = this.img.getAttribute("data-flickity-lazyload-srcset");
        this.img.src = t;
        if (e) {
            this.img.setAttribute("srcset", e)
        }
        this.img.removeAttribute("data-flickity-lazyload");
        this.img.removeAttribute("data-flickity-lazyload-src");
        this.img.removeAttribute("data-flickity-lazyload-srcset")
    };
    r.prototype.onload = function (t) {
        this.complete(t, "flickity-lazyloaded")
    };
    r.prototype.onerror = function (t) {
        this.complete(t, "flickity-lazyerror")
    };
    r.prototype.complete = function (t, e) {
        this.img.removeEventListener("load", this);
        this.img.removeEventListener("error", this);
        var i = this.flickity.getParentCell(this.img);
        var n = i && i.element;
        this.flickity.cellSizeChange(n);
        this.img.classList.add(e);
        this.flickity.dispatchEvent("lazyLoad", t, n)
    };
    i.LazyLoader = r;
    return i
});
/*!
 * Flickity v2.2.2
 * Touch, responsive, flickable carousels
 *
 * Licensed GPLv3 for open source use
 * or Flickity Commercial License for commercial use
 *
 * https://flickity.metafizzy.co
 * Copyright 2015-2021 Metafizzy
 */
(function (t, e) {
    if (typeof define == "function" && define.amd) {
        define("flickity/js/index", ["./flickity", "./drag", "./prev-next-button", "./page-dots", "./player", "./add-remove-cell", "./lazyload"], e)
    } else if (typeof module == "object" && module.exports) {
        module.exports = e(require("./flickity"), require("./drag"), require("./prev-next-button"), require("./page-dots"), require("./player"), require("./add-remove-cell"), require("./lazyload"))
    }
})(window, function t(e) {
    return e
});
/*!
 * Flickity asNavFor v2.0.2
 * enable asNavFor for Flickity
 */
(function (t, e) {
    if (typeof define == "function" && define.amd) {
        define("flickity-as-nav-for/as-nav-for", ["flickity/js/index", "fizzy-ui-utils/utils"], e)
    } else if (typeof module == "object" && module.exports) {
        module.exports = e(require("flickity"), require("fizzy-ui-utils"))
    } else {
        t.Flickity = e(t.Flickity, t.fizzyUIUtils)
    }
})(window, function t(n, s) {
    n.createMethods.push("_createAsNavFor");
    var e = n.prototype;
    e._createAsNavFor = function () {
        this.on("activate", this.activateAsNavFor);
        this.on("deactivate", this.deactivateAsNavFor);
        this.on("destroy", this.destroyAsNavFor);
        var e = this.options.asNavFor;
        if (!e) {
            return
        }
        var i = this;
        setTimeout(function t() {
            i.setNavCompanion(e)
        })
    };
    e.setNavCompanion = function (t) {
        t = s.getQueryElement(t);
        var e = n.data(t);
        if (!e || e == this) {
            return
        }
        this.navCompanion = e;
        var i = this;
        this.onNavCompanionSelect = function () {
            i.navCompanionSelect()
        };
        e.on("select", this.onNavCompanionSelect);
        this.on("staticClick", this.onNavStaticClick);
        this.navCompanionSelect(true)
    };
    e.navCompanionSelect = function (t) {
        var e = this.navCompanion && this.navCompanion.selectedCells;
        if (!e) {
            return
        }
        var i = e[0];
        var n = this.navCompanion.cells.indexOf(i);
        var s = n + e.length - 1;
        var r = Math.floor(a(n, s, this.navCompanion.cellAlign));
        this.selectCell(r, false, t);
        this.removeNavSelectedElements();
        if (r >= this.cells.length) {
            return
        }
        var o = this.cells.slice(n, s + 1);
        this.navSelectedElements = o.map(function (t) {
            return t.element
        });
        this.changeNavSelectedClass("add")
    };

    function a(t, e, i) {
        return (e - t) * i + t
    }

    e.changeNavSelectedClass = function (e) {
        this.navSelectedElements.forEach(function (t) {
            t.classList[e]("is-nav-selected")
        })
    };
    e.activateAsNavFor = function () {
        this.navCompanionSelect(true)
    };
    e.removeNavSelectedElements = function () {
        if (!this.navSelectedElements) {
            return
        }
        this.changeNavSelectedClass("remove");
        delete this.navSelectedElements
    };
    e.onNavStaticClick = function (t, e, i, n) {
        if (typeof n == "number") {
            this.navCompanion.selectCell(n)
        }
    };
    e.deactivateAsNavFor = function () {
        this.removeNavSelectedElements()
    };
    e.destroyAsNavFor = function () {
        if (!this.navCompanion) {
            return
        }
        this.navCompanion.off("select", this.onNavCompanionSelect);
        this.off("staticClick", this.onNavStaticClick);
        delete this.navCompanion
    };
    return n
});
/*!
 * imagesLoaded v4.1.4
 * JavaScript is all like "You images are done yet or what?"
 * MIT License
 */
(function (e, i) {
    "use strict";
    if (typeof define == "function" && define.amd) {
        define("imagesloaded/imagesloaded", ["ev-emitter/ev-emitter"], function (t) {
            return i(e, t)
        })
    } else if (typeof module == "object" && module.exports) {
        module.exports = i(e, require("ev-emitter"))
    } else {
        e.imagesLoaded = i(e, e.EvEmitter)
    }
})(typeof window !== "undefined" ? window : this, function t(e, i) {
    var s = e.jQuery;
    var r = e.console;

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

    var n = Array.prototype.slice;

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

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

    l.prototype = Object.create(i.prototype);
    l.prototype.options = {};
    l.prototype.getImages = function () {
        this.images = [];
        this.elements.forEach(this.addElementImages, this)
    };
    l.prototype.addElementImages = function (t) {
        if (t.nodeName == "IMG") {
            this.addImage(t)
        }
        if (this.options.background === true) {
            this.addElementBackgroundImages(t)
        }
        var e = t.nodeType;
        if (!e || !h[e]) {
            return
        }
        var i = t.querySelectorAll("img");
        for (var n = 0; n < i.length; n++) {
            var s = i[n];
            this.addImage(s)
        }
        if (typeof this.options.background == "string") {
            var r = t.querySelectorAll(this.options.background);
            for (n = 0; n < r.length; n++) {
                var o = r[n];
                this.addElementBackgroundImages(o)
            }
        }
    };
    var h = {1: true, 9: true, 11: true};
    l.prototype.addElementBackgroundImages = function (t) {
        var e = getComputedStyle(t);
        if (!e) {
            return
        }
        var i = /url\((['"])?(.*?)\1\)/gi;
        var n = i.exec(e.backgroundImage);
        while (n !== null) {
            var s = n && n[2];
            if (s) {
                this.addBackground(s, t)
            }
            n = i.exec(e.backgroundImage)
        }
    };
    l.prototype.addImage = function (t) {
        var e = new c(t);
        this.images.push(e)
    };
    l.prototype.addBackground = function (t, e) {
        var i = new u(t, e);
        this.images.push(i)
    };
    l.prototype.check = function () {
        var n = this;
        this.progressedCount = 0;
        this.hasAnyBroken = false;
        if (!this.images.length) {
            this.complete();
            return
        }

        function e(t, e, i) {
            setTimeout(function () {
                n.progress(t, e, i)
            })
        }

        this.images.forEach(function (t) {
            t.once("progress", e);
            t.check()
        })
    };
    l.prototype.progress = function (t, e, i) {
        this.progressedCount++;
        this.hasAnyBroken = this.hasAnyBroken || !t.isLoaded;
        this.emitEvent("progress", [this, t, e]);
        if (this.jqDeferred && this.jqDeferred.notify) {
            this.jqDeferred.notify(this, t)
        }
        if (this.progressedCount == this.images.length) {
            this.complete()
        }
        if (this.options.debug && r) {
            r.log("progress: " + i, t, e)
        }
    };
    l.prototype.complete = function () {
        var t = this.hasAnyBroken ? "fail" : "done";
        this.isComplete = true;
        this.emitEvent(t, [this]);
        this.emitEvent("always", [this]);
        if (this.jqDeferred) {
            var e = this.hasAnyBroken ? "reject" : "resolve";
            this.jqDeferred[e](this)
        }
    };

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

    c.prototype = Object.create(i.prototype);
    c.prototype.check = function () {
        var t = this.getIsImageComplete();
        if (t) {
            this.confirm(this.img.naturalWidth !== 0, "naturalWidth");
            return
        }
        this.proxyImage = new Image;
        this.proxyImage.addEventListener("load", this);
        this.proxyImage.addEventListener("error", this);
        this.img.addEventListener("load", this);
        this.img.addEventListener("error", this);
        this.proxyImage.src = this.img.src
    };
    c.prototype.getIsImageComplete = function () {
        return this.img.complete && this.img.naturalWidth
    };
    c.prototype.confirm = function (t, e) {
        this.isLoaded = t;
        this.emitEvent("progress", [this, this.img, e])
    };
    c.prototype.handleEvent = function (t) {
        var e = "on" + t.type;
        if (this[e]) {
            this[e](t)
        }
    };
    c.prototype.onload = function () {
        this.confirm(true, "onload");
        this.unbindEvents()
    };
    c.prototype.onerror = function () {
        this.confirm(false, "onerror");
        this.unbindEvents()
    };
    c.prototype.unbindEvents = function () {
        this.proxyImage.removeEventListener("load", this);
        this.proxyImage.removeEventListener("error", this);
        this.img.removeEventListener("load", this);
        this.img.removeEventListener("error", this)
    };

    function u(t, e) {
        this.url = t;
        this.element = e;
        this.img = new Image
    }

    u.prototype = Object.create(c.prototype);
    u.prototype.check = function () {
        this.img.addEventListener("load", this);
        this.img.addEventListener("error", this);
        this.img.src = this.url;
        var t = this.getIsImageComplete();
        if (t) {
            this.confirm(this.img.naturalWidth !== 0, "naturalWidth");
            this.unbindEvents()
        }
    };
    u.prototype.unbindEvents = function () {
        this.img.removeEventListener("load", this);
        this.img.removeEventListener("error", this)
    };
    u.prototype.confirm = function (t, e) {
        this.isLoaded = t;
        this.emitEvent("progress", [this, this.element, e])
    };
    l.makeJQueryPlugin = function (t) {
        t = t || e.jQuery;
        if (!t) {
            return
        }
        s = t;
        s.fn.imagesLoaded = function (t, e) {
            var i = new l(this, t, e);
            return i.jqDeferred.promise(s(this))
        }
    };
    l.makeJQueryPlugin();
    return l
});
/*!
 * Flickity imagesLoaded v2.0.0
 * enables imagesLoaded option for Flickity
 */
(function (i, n) {
    if (typeof define == "function" && define.amd) {
        define(["flickity/js/index", "imagesloaded/imagesloaded"], function (t, e) {
            return n(i, t, e)
        })
    } else if (typeof module == "object" && module.exports) {
        module.exports = n(i, require("flickity"), require("imagesloaded"))
    } else {
        i.Flickity = n(i, i.Flickity, i.imagesLoaded)
    }
})(window, function t(e, i, s) {
    "use strict";
    i.createMethods.push("_createImagesLoaded");
    var n = i.prototype;
    n._createImagesLoaded = function () {
        this.on("activate", this.imagesLoaded)
    };
    n.imagesLoaded = function () {
        if (!this.options.imagesLoaded) {
            return
        }
        var n = this;

        function t(t, e) {
            var i = n.getParentCell(e.img);
            n.cellSizeChange(i && i.element);
            if (!n.options.freeScroll) {
                n.positionSliderAtSelected()
            }
        }

        s(this.slider).on("progress", t)
    };
    return i
});