function _classCallCheck(n, t) { if (! (n instanceof t)) throw new TypeError("Cannot call a class as a function"); } function _defineProperties(n, t) { for (var i, r = 0; r < t.length; r++) i = t[r], i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(n, i.key, i) } function _createClass(n, t, i) { return t && _defineProperties(n.prototype, t), i && _defineProperties(n, i), n } (function() { "use strict"; function e(n) { this.time = n.time; this.target = n.target; this.rootBounds = n.rootBounds; this.boundingClientRect = n.boundingClientRect; this.intersectionRect = n.intersectionRect || u(); this.isIntersecting = !!n.intersectionRect; var t = this.boundingClientRect, i = t.width * t.height, r = this.intersectionRect, f = r.width * r.height; this.intersectionRatio = i ? Number((f / i).toFixed(4)) : this.isIntersecting ? 1 : 0 } function n(n, t) { var i = t || {}; if (typeof n != "function") throw new Error("callback must be a function"); if (i.root && i.root.nodeType != 1) throw new Error("root must be an Element"); this._checkForIntersections = l(this._checkForIntersections.bind(this), this.THROTTLE_TIMEOUT); this._callback = n; this._observationTargets = []; this._queuedEntries = []; this._rootMarginValues = this._parseRootMargin(i.rootMargin); this.thresholds = this._initThresholds(i.threshold); this.root = i.root || null; this.rootMargin = this._rootMarginValues.map(function(n) { return n.value + n.unit }).join(" ") } function c() { return window.performance && performance.now && performance.now() } function l(n, t) { var i = null; return function() { i || (i = setTimeout(function() { n(); i = null }, t)) } } function o(n, t, i, r) { typeof n.addEventListener == "function" ? n.addEventListener(t, i, r || !1) : typeof n.attachEvent == "function" && n.attachEvent("on" + t, i) } function s(n, t, i, r) { typeof n.removeEventListener == "function" ? n.removeEventListener(t, i, r || !1) : typeof n.detatchEvent == "function" && n.detatchEvent("on" + t, i) } function a(n, t) { var i = Math.max(n.top, t.top), r = Math.min(n.bottom, t.bottom), u = Math.max(n.left, t.left), f = Math.min(n.right, t.right), e = f - u, o = r - i; return e >= 0 && o >= 0 && { top: i, bottom: r, left: u, right: f, width: e, height: o } } function r(n) { var t; try { t = n.getBoundingClientRect() } catch(i) {} return t ? (t.width && t.height || (t = { top: t.top, right: t.right, bottom: t.bottom, left: t.left, width: t.right - t.left, height: t.bottom - t.top }), t) : u() } function u() { return { top: 0, bottom: 0, left: 0, right: 0, width: 0, height: 0 } } function h(n, t) { for (var i = t; i;) { if (i == n) return ! 0; i = f(i) } return ! 1 } function f(n) { var t = n.parentNode; return t && t.nodeType == 11 && t.host ? t.host: t && t.assignedSlot ? t.assignedSlot.parentNode: t } if (typeof window == "object") { if ("IntersectionObserver" in window && "IntersectionObserverEntry" in window && "intersectionRatio" in window.IntersectionObserverEntry.prototype) { "isIntersecting" in window.IntersectionObserverEntry.prototype || Object.defineProperty(window.IntersectionObserverEntry.prototype, "isIntersecting", { get: function() { return this.intersectionRatio > 0 } }); return } var t = window.document, i = []; n.prototype.THROTTLE_TIMEOUT = 100; n.prototype.POLL_INTERVAL = null; n.prototype.USE_MUTATION_OBSERVER = !0; n.prototype.observe = function(n) { var t = this._observationTargets.some(function(t) { return t.element == n }); if (!t) { if (! (n && n.nodeType == 1)) throw new Error("target must be an Element"); this._registerInstance(); this._observationTargets.push({ element: n, entry: null }); this._monitorIntersections(); this._checkForIntersections() } }; n.prototype.unobserve = function(n) { this._observationTargets = this._observationTargets.filter(function(t) { return t.element != n }); this._observationTargets.length || (this._unmonitorIntersections(), this._unregisterInstance()) }; n.prototype.disconnect = function() { this._observationTargets = []; this._unmonitorIntersections(); this._unregisterInstance() }; n.prototype.takeRecords = function() { var n = this._queuedEntries.slice(); return this._queuedEntries = [], n }; n.prototype._initThresholds = function(n) { var t = n || [0]; return Array.isArray(t) || (t = [t]), t.sort().filter(function(n, t, i) { if (typeof n != "number" || isNaN(n) || n < 0 || n > 1) throw new Error("threshold must be a number between 0 and 1 inclusively"); return n !== i[t - 1] }) }; n.prototype._parseRootMargin = function(n) { var i = n || "0px", t = i.split(/\s+/).map(function(n) { var t = /^(-?\d*\.?\d+)(px|%)$/.exec(n); if (!t) throw new Error("rootMargin must be specified in pixels or percent"); return { value: parseFloat(t[1]), unit: t[2] } }); return t[1] = t[1] || t[0], t[2] = t[2] || t[0], t[3] = t[3] || t[1], t }; n.prototype._monitorIntersections = function() { this._monitoringIntersections || (this._monitoringIntersections = !0, this.POLL_INTERVAL ? this._monitoringInterval = setInterval(this._checkForIntersections, this.POLL_INTERVAL) : (o(window, "resize", this._checkForIntersections, !0), o(t, "scroll", this._checkForIntersections, !0), this.USE_MUTATION_OBSERVER && "MutationObserver" in window && (this._domObserver = new MutationObserver(this._checkForIntersections), this._domObserver.observe(t, { attributes: !0, childList: !0, characterData: !0, subtree: !0 })))) }; n.prototype._unmonitorIntersections = function() { this._monitoringIntersections && (this._monitoringIntersections = !1, clearInterval(this._monitoringInterval), this._monitoringInterval = null, s(window, "resize", this._checkForIntersections, !0), s(t, "scroll", this._checkForIntersections, !0), this._domObserver && (this._domObserver.disconnect(), this._domObserver = null)) }; n.prototype._checkForIntersections = function() { var n = this._rootIsInDom(), t = n ? this._getRootRect() : u(); this._observationTargets.forEach(function(i) { var u = i.element, h = r(u), s = this._rootContainsTarget(u), f = i.entry, l = n && s && this._computeTargetAndRootIntersection(u, t), o = i.entry = new e({ time: c(), target: u, boundingClientRect: h, rootBounds: t, intersectionRect: l }); f ? n && s ? this._hasCrossedThreshold(f, o) && this._queuedEntries.push(o) : f && f.isIntersecting && this._queuedEntries.push(o) : this._queuedEntries.push(o) }, this); this._queuedEntries.length && this._callback(this.takeRecords(), this) }; n.prototype._computeTargetAndRootIntersection = function(n, i) { var e, s; if (window.getComputedStyle(n).display != "none") { for (var c = r(n), o = c, u = f(n), h = !1; ! h;) { if (e = null, s = u.nodeType == 1 ? window.getComputedStyle(u) : {}, s.display == "none") return; if (u == this.root || u == t ? (h = !0, e = i) : u != t.body && u != t.documentElement && s.overflow != "visible" && (e = r(u)), e && (o = a(e, o), !o)) break; u = f(u) } return o } }; n.prototype._getRootRect = function() { var u, n, i; return this.root ? u = r(this.root) : (n = t.documentElement, i = t.body, u = { top: 0, left: 0, right: n.clientWidth || i.clientWidth, width: n.clientWidth || i.clientWidth, bottom: n.clientHeight || i.clientHeight, height: n.clientHeight || i.clientHeight }), this._expandRectByRootMargin(u) }; n.prototype._expandRectByRootMargin = function(n) { var i = this._rootMarginValues.map(function(t, i) { return t.unit == "px" ? t.value: t.value * (i % 2 ? n.width: n.height) / 100 }), t = { top: n.top - i[0], right: n.right + i[1], bottom: n.bottom + i[2], left: n.left - i[3] }; return t.width = t.right - t.left, t.height = t.bottom - t.top, t }; n.prototype._hasCrossedThreshold = function(n, t) { var u = n && n.isIntersecting ? n.intersectionRatio || 0 : -1, f = t.isIntersecting ? t.intersectionRatio || 0 : -1, r, i; if (u !== f) for (r = 0; r < this.thresholds.length; r++) if (i = this.thresholds[r], i == u || i == f || i < u != i < f) return ! 0 }; n.prototype._rootIsInDom = function() { return ! this.root || h(t, this.root) }; n.prototype._rootContainsTarget = function(n) { return h(this.root || t, n) }; n.prototype._registerInstance = function() { i.indexOf(this) < 0 && i.push(this) }; n.prototype._unregisterInstance = function() { var n = i.indexOf(this); n != -1 && i.splice(n, 1) }; window.IntersectionObserver = n; window.IntersectionObserverEntry = e } })(); Array.from || (Array.from = function() { var t = Object.prototype.toString, n = function(n) { return typeof n == "function" || t.call(n) === "[object Function]" }, i = function(n) { var t = Number(n); return isNaN(t) ? 0 : t === 0 || !isFinite(t) ? t: (t > 0 ? 1 : -1) * Math.floor(Math.abs(t)) }, r = Math.pow(2, 53) - 1, u = function(n) { var t = i(n); return Math.min(Math.max(t, 0), r) }; return function(t) { var h = this, c = Object(t), i, o; if (t == null) throw new TypeError("Array.from requires an array-like object - not null or undefined"); if (i = arguments.length > 1 ? arguments[1] : void undefined, typeof i != "undefined") { if (!n(i)) throw new TypeError("Array.from: when provided, the second argument must be a function"); arguments.length > 2 && (o = arguments[2]) } for (var f = u(c.length), s = n(h) ? Object(new h(f)) : new Array(f), r = 0, e; r < f;) e = c[r], s[r] = i ? typeof o == "undefined" ? i(e, r) : i.call(o, e, r) : e, r += 1; return s.length = f, s } } ()); Element.prototype.matches || (Element.prototype.matches = Element.prototype.webkitMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.mozMatchesSelector); Element.prototype.closest || (Element.prototype.closest = function(n) { for (var t = this; t;) { if (t.matches(n)) return t; t = "SVGElement" in window && t instanceof SVGElement ? t.parentNode: t.parentElement } return null }); window.Event && Window.prototype.Event || (window.Event = Window.prototype.Event = Document.prototype.Event = Element.prototype.Event = function(n, t) { if (!n) throw new Error("Not enough arguments"); var i, r = t && t.bubbles !== undefined ? t.bubbles: !1, u = t && t.cancelable !== undefined ? t.cancelable: !1; return "createEvent" in document ? (i = document.createEvent("Event"), i.initEvent(n, r, u)) : (i = document.createEventObject(), i.type = n, i.bubbles = r, i.cancelable = u), i }); window.CustomEvent && Window.prototype.CustomEvent || (window.CustomEvent = Window.prototype.CustomEvent = Document.prototype.CustomEvent = Element.prototype.CustomEvent = function(n, t) { if (!n) throw Error('TypeError: Failed to construct "CustomEvent": An event name must be provided.'); var i = new Event(n, t); return i.detail = t && t.detail || null, i }); Node.prototype.contains || (Node.prototype.contains = function(n) { while (n = n.parentNode) if (n === this) return ! 0; return ! 1 }), function(n, t) { typeof exports == "object" && typeof module != "undefined" ? module.exports = t() : typeof define == "function" && define.amd ? define(t) : (n = n || self, n.BSN = t()) } (this, function() { "use strict"; function b(n) { var t = s ? parseFloat(getComputedStyle(n)[w]) : 0; return typeof t == "number" && !isNaN(t) ? t * 1e3: 0 } function u(n, t) { var i = 0, r = b(n); r ? n.addEventListener(o, function u(r) { i || t(r); i = 1; n.removeEventListener(o, u) }) : setTimeout(function() { i || t(); i = 1 }, 17) } function n(n, t) { var i = t && t instanceof Element ? t: document; return n instanceof Element ? n: i.querySelector(n) } function t(n, t, i) { var r = new CustomEvent(n + ".bs." + t, { cancelable: !0 }); return r.relatedTarget = i, r } function i(n) { this && this.dispatchEvent(n) } function c(r, f) { function b(n, t) { (i.call(n, l), l.defaultPrevented) || (n.isAnimating = !0, n.classList.add("collapsing"), n.classList.remove("collapse"), n.style.height = n.scrollHeight + "px", u(n, function() { n.isAnimating = !1; n.setAttribute("aria-expanded", "true"); t.setAttribute("aria-expanded", "true"); n.classList.remove("collapsing"); n.classList.add("collapse"); n.classList.add("show"); n.style.height = ""; i.call(n, v) })) } function p(n, t) { (i.call(n, a), a.defaultPrevented) || (n.isAnimating = !0, n.style.height = n.scrollHeight + "px", n.classList.remove("collapse"), n.classList.remove("show"), n.classList.add("collapsing"), n.offsetWidth, n.style.height = "0px", u(n, function() { n.isAnimating = !1; n.setAttribute("aria-expanded", "false"); t.setAttribute("aria-expanded", "false"); n.classList.remove("collapsing"); n.classList.add("collapse"); n.style.height = ""; i.call(n, y) })) } var w; f = f || {}; var e = this, h = null, o = null, s, c, l, v, a, y; e.toggle = function(n) { (n && n.target.tagName === "A" || r.tagName === "A") && n.preventDefault(); (r.contains(n.target) || n.target === r) && (o.classList.contains("show") ? e.hide() : e.show()) }; e.hide = function() { o.isAnimating || (p(o, r), r.classList.add("collapsed")) }; e.show = function() { h && (s = h.getElementsByClassName("collapse show")[0], c = s && (n('[data-target="#' + s.id + '"]', h) || n('[href="#' + s.id + '"]', h))); o.isAnimating || (c && s !== o && (p(s, c), c.classList.add("collapsed")), b(o, r), r.classList.remove("collapsed")) }; e.dispose = function() { r.removeEventListener("click", e.toggle, !1); delete r.Collapse }; r = n(r); r.Collapse && r.Collapse.dispose(); w = r.getAttribute("data-parent"); l = t("show", "collapse"); v = t("shown", "collapse"); a = t("hide", "collapse"); y = t("hidden", "collapse"); o = n(f.target || r.getAttribute("data-target") || r.getAttribute("href")); o.isAnimating = !1; h = r.closest(f.parent || w); r.Collapse || r.addEventListener("click", e.toggle, !1); r.Collapse = e } function f(n) { n.focus ? n.focus() : n.setActive() } function l(r, u) { function b(n) { (n.href && n.href.slice( - 1) === "#" || n.parentNode && n.parentNode.href && n.parentNode.href.slice( - 1) === "#") && this.preventDefault() } function k() { var n = r.open ? "addEventListener": "removeEventListener"; document[n]("click", d, !1); document[n]("keydown", g, !1); document[n]("keyup", nt, !1); document[n]("focus", d, !1) } function d(n) { var t = n.target, i = t && (t.getAttribute("data-toggle") || t.parentNode && t.parentNode.getAttribute && t.parentNode.getAttribute("data-toggle")); n.type === "focus" && (t === r || t === e || e.contains(t)) || (t === e || e.contains(t)) && (w || i) || (c = t === r || r.contains(t) ? r: null, o.hide(), b.call(n, t)) } function l(n) { c = r; o.show(); b.call(n, n.target) } function g(n) { var t = n.which || n.keyCode; (t === 38 || t === 40) && n.preventDefault() } function nt(n) { var u = n.which || n.keyCode, i = document.activeElement, s = i === r, l = e.contains(i), a = i.parentNode === e || i.parentNode.parentNode === e, t = h.indexOf(i); a && (t = s ? 0 : u === 38 ? t > 1 ? t - 1 : 0 : u === 40 ? t < h.length - 1 ? t + 1 : t: t, h[t] && f(h[t])); (h.length && a || !h.length && (l || s) || !l) && r.open && u === 27 && (o.toggle(), c = null) } var o = this, a, y, v, p, c = null, s, e, h = [], w; o.show = function() { (a = t("show", "dropdown", c), i.call(s, a), a.defaultPrevented) || (e.classList.add("show"), s.classList.add("show"), r.setAttribute("aria-expanded", !0), r.open = !0, r.removeEventListener("click", l, !1), setTimeout(function() { f(e.getElementsByTagName("INPUT")[0] || r); k(); y = t("shown", "dropdown", c); i.call(s, y) }, 1)) }; o.hide = function() { (v = t("hide", "dropdown", c), i.call(s, v), v.defaultPrevented) || (e.classList.remove("show"), s.classList.remove("show"), r.setAttribute("aria-expanded", !1), r.open = !1, k(), f(r), setTimeout(function() { r.Dropdown && r.addEventListener("click", l, !1) }, 1), p = t("hidden", "dropdown", c), i.call(s, p)) }; o.toggle = function() { s.classList.contains("show") && r.open ? o.hide() : o.show() }; o.dispose = function() { s.classList.contains("show") && r.open && o.hide(); r.removeEventListener("click", l, !1); delete r.Dropdown }; r = n(r); r.Dropdown && r.Dropdown.dispose(); s = r.parentNode; e = n(".dropdown-menu", s); Array.from(e.children).map(function(n) { n.children.length && n.children[0].tagName === "A" && h.push(n.children[0]); n.tagName === "A" && h.push(n) }); r.Dropdown || ("tabindex" in e || e.setAttribute("tabindex", "0"), r.addEventListener("click", l, !1)); w = u === !0 || r.getAttribute("data-persist") === "true" || !1; r.open = !1; r.Dropdown = o } function d() { return { y: window.pageYOffset || document.documentElement.scrollTop, x: window.pageXOffset || document.documentElement.scrollLeft } } function a(r, u) { function y() { var t = s.getElementsByTagName("A"); f.length !== t.length && (f.items = [], f.targets = [], Array.from(t).map(function(t) { var i = t.getAttribute("href"), r = i && i.charAt(0) === "#" && i.slice( - 1) !== "#" && n(i); r && (f.items.push(t), f.targets.push(r)) }), f.length = t.length) } function p(n) { var u = f.items[n], c = f.targets[n], l = u.classList.contains("dropdown-item") && u.closest(".dropdown-menu"), e = l && l.previousElementSibling, a = u.nextElementSibling, y = a && a.getElementsByClassName("active").length, v = f.isWindow && c.getBoundingClientRect(), s = u.classList.contains("active") || !1, p = (f.isWindow ? v.top + f.scrollOffset: c.offsetTop) - o.offset, w = f.isWindow ? v.bottom + f.scrollOffset - o.offset: f.targets[n + 1] ? f.targets[n + 1].offsetTop - o.offset: r.scrollHeight, h = y || f.scrollOffset >= p && w > f.scrollOffset; if (!s && h) u.classList.add("active"), e && !e.classList.contains("active") && e.classList.add("active"), i.call(r, t("activate", "scrollspy", f.items[n])); else if (s && !h) u.classList.remove("active"), e && e.classList.contains("active") && !u.parentNode.getElementsByClassName("active").length && e.classList.remove("active"); else if (s && h || !h && !s) return } function w() { y(); f.scrollOffset = f.isWindow ? d().y: r.scrollTop; f.items.map(function(n, t) { return p(t) }) } function v(n) { n = n ? "addEventListener": "removeEventListener"; c[n]("scroll", e.refresh, h); window[n]("resize", e.refresh, h) } u = u || {}; var e = this, f, l, a, s, c, o = {}; (e.refresh = function() { w() }, e.dispose = function() { v(); delete r.ScrollSpy }, r = n(r), r.ScrollSpy && r.ScrollSpy.dispose(), l = r.getAttribute("data-target"), a = r.getAttribute("data-offset"), s = n(u.target || l), c = r.offsetHeight < r.scrollHeight ? r: window, s) && (o.target = s, o.offset = parseInt(u.offset || a) || 10, f = {}, f.length = 0, f.items = [], f.targets = [], f.isWindow = c === window, r.ScrollSpy || v(1), e.refresh(), r.ScrollSpy = e) } function v(r, f) { function rt() { e.style.height = ""; e.classList.remove("collapsing"); h.isAnimating = !1 } function ut() { e ? tt ? rt() : setTimeout(function() { e.style.height = k + "px"; e.offsetWidth; u(e, rt) }, 50) : h.isAnimating = !1; g = t("shown", "tab", a); i.call(o, g) } function ft() { (e && (c.style.float = "left", l.style.float = "left", b = c.scrollHeight), p = t("show", "tab", a), nt = t("hidden", "tab", o), i.call(o, p), p.defaultPrevented) || (l.classList.add("active"), c.classList.remove("active"), e && (k = l.scrollHeight, tt = k === b, e.classList.add("collapsing"), e.style.height = b + "px", e.offsetHeight, c.style.float = "", l.style.float = ""), l.classList.contains("fade") ? setTimeout(function() { l.classList.add("show"); u(l, ut) }, 20) : ut(), i.call(a, nt)) } function et() { var n = h.getElementsByClassName("active"), t; return n.length !== 1 || n[0].parentNode.classList.contains("dropdown") ? n.length > 1 && (t = n[n.length - 1]) : t = n[0], t } function ot() { return n(et().getAttribute("href")) } function st(n) { n.preventDefault(); o = n.currentTarget; h.isAnimating || y.show() } f = f || {}; var y = this, d, h, v, p, g, w, nt, o, e = !1, a, c, l, b, tt, k, it; y.show = function() { if (o = o || r, !o.classList.contains("active")) { if (l = n(o.getAttribute("href")), a = et(), c = ot(), w = t("hide", "tab", o), i.call(a, w), w.defaultPrevented) return; h.isAnimating = !0; a.classList.remove("active"); a.setAttribute("aria-selected", "false"); o.classList.add("active"); o.setAttribute("aria-selected", "true"); v && (r.parentNode.classList.contains("dropdown-menu") ? v.classList.contains("active") || v.classList.add("active") : v.classList.contains("active") && v.classList.remove("active")); c.classList.contains("fade") ? (c.classList.remove("show"), u(c, ft)) : ft() } }; y.dispose = function() { r.removeEventListener("click", st, !1); delete r.Tab }; r = n(r); r.Tab && r.Tab.dispose(); d = r.getAttribute("data-height"); h = r.closest(".nav"); v = h && n(".dropdown-toggle", h); it = !s || f.height === !1 || d === "false" ? !1 : !0; h.isAnimating = !1; r.Tab || r.addEventListener("click", st, !1); it && (e = ot().parentNode); r.Tab = y } function g(n, t) { Array.from(t).map(function(t) { return new n(t) }) } function e(n) { n = n || document; for (var t in r) g(r[t][0], n.querySelectorAll(r[t][1])) } function tt(n, t) { Array.from(t).map(function(t) { return t[n].dispose() }) } function it(n) { n = n || document; for (var t in r) tt(t, n.querySelectorAll(r[t][1])) } var o = "webkitTransition" in document.body.style ? "webkitTransitionEnd": "transitionend", s = "webkitTransition" in document.body.style || "transition" in document.body.style, w = "webkitTransition" in document.body.style ? "webkitTransitionDuration": "transitionDuration", k = function() { var t = !1, n; try { n = Object.defineProperty({}, "passive", { get: function() { t = !0 } }); document.addEventListener("DOMContentLoaded", function i() { document.removeEventListener("DOMContentLoaded", i, n) }, n) } catch(r) {} return t } (), h = k ? { passive: !0 }: !1, r = {}, y, p; return r.Collapse = [c, '[data-toggle="collapse"]'], r.Dropdown = [l, '[data-toggle="dropdown"]'], r.ScrollSpy = [a, '[data-spy="scroll"]'], r.Tab = [v, '[data-toggle="tab"]'], document.body ? e() : document.addEventListener("DOMContentLoaded", function nt() { e(); document.removeEventListener("DOMContentLoaded", nt, !1) }, !1), y = "3.0.9", p = { Collapse: c, Dropdown: l, ScrollSpy: a, Tab: v, initCallback: e, removeDataAPI: it, componentsInit: r, Version: y }, p }), function(n) { "use strict"; function f(n, t) { var i = (n & 65535) + (t & 65535), r = (n >> 16) + (t >> 16) + (i >> 16); return r << 16 | i & 65535 } function p(n, t) { return n << t | n >>> 32 - t } function e(n, t, i, r, u, e) { return f(p(f(f(t, n), f(r, e)), u), i) } function t(n, t, i, r, u, f, o) { return e(t & i | ~t & r, n, t, u, f, o) } function i(n, t, i, r, u, f, o) { return e(t & r | i & ~r, n, t, u, f, o) } function r(n, t, i, r, u, f, o) { return e(t ^ i ^ r, n, t, u, f, o) } function u(n, t, i, r, u, f, o) { return e(i ^ (t | ~r), n, t, u, f, o) } function o(n, e) { n[e >> 5] |= 128 << e % 32; n[(e + 64 >>> 9 << 4) + 14] = e; for (var a, v, y, p, o = 1732584193, s = -271733879, h = -1732584194, c = 271733878, l = 0; l < n.length; l += 16) a = o, v = s, y = h, p = c, o = t(o, s, h, c, n[l], 7, -680876936), c = t(c, o, s, h, n[l + 1], 12, -389564586), h = t(h, c, o, s, n[l + 2], 17, 606105819), s = t(s, h, c, o, n[l + 3], 22, -1044525330), o = t(o, s, h, c, n[l + 4], 7, -176418897), c = t(c, o, s, h, n[l + 5], 12, 1200080426), h = t(h, c, o, s, n[l + 6], 17, -1473231341), s = t(s, h, c, o, n[l + 7], 22, -45705983), o = t(o, s, h, c, n[l + 8], 7, 1770035416), c = t(c, o, s, h, n[l + 9], 12, -1958414417), h = t(h, c, o, s, n[l + 10], 17, -42063), s = t(s, h, c, o, n[l + 11], 22, -1990404162), o = t(o, s, h, c, n[l + 12], 7, 1804603682), c = t(c, o, s, h, n[l + 13], 12, -40341101), h = t(h, c, o, s, n[l + 14], 17, -1502002290), s = t(s, h, c, o, n[l + 15], 22, 1236535329), o = i(o, s, h, c, n[l + 1], 5, -165796510), c = i(c, o, s, h, n[l + 6], 9, -1069501632), h = i(h, c, o, s, n[l + 11], 14, 643717713), s = i(s, h, c, o, n[l], 20, -373897302), o = i(o, s, h, c, n[l + 5], 5, -701558691), c = i(c, o, s, h, n[l + 10], 9, 38016083), h = i(h, c, o, s, n[l + 15], 14, -660478335), s = i(s, h, c, o, n[l + 4], 20, -405537848), o = i(o, s, h, c, n[l + 9], 5, 568446438), c = i(c, o, s, h, n[l + 14], 9, -1019803690), h = i(h, c, o, s, n[l + 3], 14, -187363961), s = i(s, h, c, o, n[l + 8], 20, 1163531501), o = i(o, s, h, c, n[l + 13], 5, -1444681467), c = i(c, o, s, h, n[l + 2], 9, -51403784), h = i(h, c, o, s, n[l + 7], 14, 1735328473), s = i(s, h, c, o, n[l + 12], 20, -1926607734), o = r(o, s, h, c, n[l + 5], 4, -378558), c = r(c, o, s, h, n[l + 8], 11, -2022574463), h = r(h, c, o, s, n[l + 11], 16, 1839030562), s = r(s, h, c, o, n[l + 14], 23, -35309556), o = r(o, s, h, c, n[l + 1], 4, -1530992060), c = r(c, o, s, h, n[l + 4], 11, 1272893353), h = r(h, c, o, s, n[l + 7], 16, -155497632), s = r(s, h, c, o, n[l + 10], 23, -1094730640), o = r(o, s, h, c, n[l + 13], 4, 681279174), c = r(c, o, s, h, n[l], 11, -358537222), h = r(h, c, o, s, n[l + 3], 16, -722521979), s = r(s, h, c, o, n[l + 6], 23, 76029189), o = r(o, s, h, c, n[l + 9], 4, -640364487), c = r(c, o, s, h, n[l + 12], 11, -421815835), h = r(h, c, o, s, n[l + 15], 16, 530742520), s = r(s, h, c, o, n[l + 2], 23, -995338651), o = u(o, s, h, c, n[l], 6, -198630844), c = u(c, o, s, h, n[l + 7], 10, 1126891415), h = u(h, c, o, s, n[l + 14], 15, -1416354905), s = u(s, h, c, o, n[l + 5], 21, -57434055), o = u(o, s, h, c, n[l + 12], 6, 1700485571), c = u(c, o, s, h, n[l + 3], 10, -1894986606), h = u(h, c, o, s, n[l + 10], 15, -1051523), s = u(s, h, c, o, n[l + 1], 21, -2054922799), o = u(o, s, h, c, n[l + 8], 6, 1873313359), c = u(c, o, s, h, n[l + 15], 10, -30611744), h = u(h, c, o, s, n[l + 6], 15, -1560198380), s = u(s, h, c, o, n[l + 13], 21, 1309151649), o = u(o, s, h, c, n[l + 4], 6, -145523070), c = u(c, o, s, h, n[l + 11], 10, -1120210379), h = u(h, c, o, s, n[l + 2], 15, 718787259), s = u(s, h, c, o, n[l + 9], 21, -343485551), o = f(o, a), s = f(s, v), h = f(h, y), c = f(c, p); return [o, s, h, c] } function l(n) { for (var i = "", r = n.length * 32, t = 0; t < r; t += 8) i += String.fromCharCode(n[t >> 5] >>> t % 32 & 255); return i } function s(n) { var t, i = [], r; for (i[(n.length >> 2) - 1] = undefined, t = 0; t < i.length; t += 1) i[t] = 0; for (r = n.length * 8, t = 0; t < r; t += 8) i[t >> 5] |= (n.charCodeAt(t / 8) & 255) << t % 32; return i } function w(n) { return l(o(s(n), n.length * 8)) } function b(n, t) { var i, r = s(n), u = [], f = [], e; for (u[15] = f[15] = undefined, r.length > 16 && (r = o(r, n.length * 8)), i = 0; i < 16; i += 1) u[i] = r[i] ^ 909522486, f[i] = r[i] ^ 1549556828; return e = o(u.concat(s(t)), 512 + t.length * 8), l(o(f.concat(e), 640)) } function a(n) { for (var r = "0123456789abcdef", u = "", i, t = 0; t < n.length; t += 1) i = n.charCodeAt(t), u += r.charAt(i >>> 4 & 15) + r.charAt(i & 15); return u } function h(n) { return unescape(encodeURIComponent(n)) } function v(n) { return w(h(n)) } function k(n) { return a(v(n)) } function y(n, t) { return b(h(n), h(t)) } function d(n, t) { return a(y(n, t)) } function c(n, t, i) { return t ? i ? y(t, n) : d(t, n) : i ? v(n) : k(n) } typeof define == "function" && define.amd ? define(function() { return c }) : typeof module == "object" && module.exports ? module.exports = c: n.md5 = c } (this), function(n, t) { typeof exports == "object" && typeof module != "undefined" ? module.exports = t() : typeof define == "function" && define.amd ? define(t) : (n = n || self, n.Swiper = t()) } (this, function() { "use strict"; function n(n, t) { var s = [], u = 0, h, c, e, o; if (n && !t && n instanceof f) return n; if (n) if (typeof n == "string") if (e = n.trim(), e.indexOf("<") >= 0 && e.indexOf(">") >= 0) for (o = "div", e.indexOf(":~]/) ? (t || r).querySelectorAll(n.trim()) : [r.getElementById(n.trim().split("#")[1])], u = 0; u < h.length; u += 1) h[u] && s.push(h[u]); else if (n.nodeType || n === i || n === r) s.push(n); else if (n.length > 0 && n[0].nodeType) for (u = 0; u < n.length; u += 1) s.push(n[u]); return new f(s) } function y(n) { for (var i = [], t = 0; t < n.length; t += 1) i.indexOf(n[t]) === -1 && i.push(n[t]); return i } function kt(n) { var r, i, t; if (typeof n == "undefined") return this; for (r = n.split(" "), i = 0; i < r.length; i += 1) for (t = 0; t < this.length; t += 1) typeof this[t] != "undefined" && typeof this[t].classList != "undefined" && this[t].classList.add(r[i]); return this } function dt(n) { for (var t, r = n.split(" "), i = 0; i < r.length; i += 1) for (t = 0; t < this.length; t += 1) typeof this[t] != "undefined" && typeof this[t].classList != "undefined" && this[t].classList.remove(r[i]); return this } function gt(n) { return this[0] ? this[0].classList.contains(n) : !1 } function ni(n) { for (var t, r = n.split(" "), i = 0; i < r.length; i += 1) for (t = 0; t < this.length; t += 1) typeof this[t] != "undefined" && typeof this[t].classList != "undefined" && this[t].classList.toggle(r[i]); return this } function ti(n, t) { var u = arguments, i, r; if (arguments.length === 1 && typeof n == "string") return this[0] ? this[0].getAttribute(n) : undefined; for (i = 0; i < this.length; i += 1) if (u.length === 2) this[i].setAttribute(n, t); else for (r in n) this[i][r] = n[r], this[i].setAttribute(r, n[r]); return this } function ii(n) { for (var t = 0; t < this.length; t += 1) this[t].removeAttribute(n); return this } function ri(n, t) { var i, u, r; if (typeof t == "undefined") return (i = this[0], i) ? i.dom7ElementDataStorage && n in i.dom7ElementDataStorage ? i.dom7ElementDataStorage[n] : (u = i.getAttribute("data-" + n), u) ? u: undefined: undefined; for (r = 0; r < this.length; r += 1) i = this[r], i.dom7ElementDataStorage || (i.dom7ElementDataStorage = {}), i.dom7ElementDataStorage[n] = t; return this } function ui(n) { for (var i, t = 0; t < this.length; t += 1) i = this[t].style, i.webkitTransform = n, i.transform = n; return this } function fi(n) { var t, i; for (typeof n != "string" && (n = n + "ms"), t = 0; t < this.length; t += 1) i = this[t].style, i.webkitTransitionDuration = n, i.transitionDuration = n; return this } function ei() { function y(t) { var f = t.target, i, e, r; if (f) if (i = t.target.dom7EventData || [], i.indexOf(t) < 0 && i.unshift(t), n(f).is(c)) u.apply(f, i); else for (e = n(f).parents(), r = 0; r < e.length; r += 1) n(e[r]).is(c) && u.apply(e[r], i) } function p(n) { var t = n && n.target ? n.target.dom7EventData || [] : []; t.indexOf(n) < 0 && t.unshift(n); u.apply(this, t) } for (var h, r = [], a = arguments.length, e, i, l, t, o, s; a--;) r[a] = arguments[a]; var v = r[0], c = r[1], u = r[2], f = r[3]; for (typeof r[1] == "function" && (h = r, v = h[0], u = h[1], f = h[2], c = undefined), f || (f = !1), e = v.split(" "), l = 0; l < this.length; l += 1) if (t = this[l], c) for (i = 0; i < e.length; i += 1) s = e[i], t.dom7LiveListeners || (t.dom7LiveListeners = {}), t.dom7LiveListeners[s] || (t.dom7LiveListeners[s] = []), t.dom7LiveListeners[s].push({ listener: u, proxyListener: y }), t.addEventListener(s, y, f); else for (i = 0; i < e.length; i += 1) o = e[i], t.dom7Listeners || (t.dom7Listeners = {}), t.dom7Listeners[o] || (t.dom7Listeners[o] = []), t.dom7Listeners[o].push({ listener: u, proxyListener: p }), t.addEventListener(o, p, f); return this } function oi() { for (var s, r = [], l = arguments.length, v, h, o, c, t, n, u, i; l--;) r[l] = arguments[l]; var y = r[0], a = r[1], f = r[2], e = r[3]; for (typeof r[1] == "function" && (s = r, y = s[0], f = s[1], e = s[2], a = undefined), e || (e = !1), v = y.split(" "), h = 0; h < v.length; h += 1) for (o = v[h], c = 0; c < this.length; c += 1) if (t = this[c], n = void 0, !a && t.dom7Listeners ? n = t.dom7Listeners[o] : a && t.dom7LiveListeners && (n = t.dom7LiveListeners[o]), n && n.length) for (u = n.length - 1; u >= 0; u -= 1) i = n[u], f && i.listener === f ? (t.removeEventListener(o, i.proxyListener, e), n.splice(u, 1)) : f && i.listener && i.listener.dom7proxy && i.listener.dom7proxy === f ? (t.removeEventListener(o, i.proxyListener, e), n.splice(u, 1)) : f || (t.removeEventListener(o, i.proxyListener, e), n.splice(u, 1)); return this } function si() { for (var u = [], o = arguments.length, s, h, f, c, e, t, n; o--;) u[o] = arguments[o]; for (s = u[0].split(" "), h = u[1], f = 0; f < s.length; f += 1) for (c = s[f], e = 0; e < this.length; e += 1) { t = this[e]; n = void 0; try { n = new i.CustomEvent(c, { detail: h, bubbles: !0, cancelable: !0 }) } catch(l) { n = r.createEvent("Event"); n.initEvent(c, !0, !0); n.detail = h } t.dom7EventData = u.filter(function(n, t) { return t > 0 }); t.dispatchEvent(n); t.dom7EventData = []; delete t.dom7EventData } return this } function hi(n) { function u(f) { if (f.target === this) for (n.call(this, f), t = 0; t < i.length; t += 1) r.off(i[t], u) } var i = ["webkitTransitionEnd", "transitionend"], r = this, t; if (n) for (t = 0; t < i.length; t += 1) r.on(i[t], u); return this } function ci(n) { if (this.length > 0) { if (n) { var t = this.styles(); return this[0].offsetWidth + parseFloat(t.getPropertyValue("margin-right")) + parseFloat(t.getPropertyValue("margin-left")) } return this[0].offsetWidth } return null } function li(n) { if (this.length > 0) { if (n) { var t = this.styles(); return this[0].offsetHeight + parseFloat(t.getPropertyValue("margin-top")) + parseFloat(t.getPropertyValue("margin-bottom")) } return this[0].offsetHeight } return null } function ai() { if (this.length > 0) { var n = this[0], t = n.getBoundingClientRect(), u = r.body, f = n.clientTop || u.clientTop || 0, e = n.clientLeft || u.clientLeft || 0, o = n === i ? i.scrollY: n.scrollTop, s = n === i ? i.scrollX: n.scrollLeft; return { top: t.top + o - f, left: t.left + s - e } } return null } function vi() { return this[0] ? i.getComputedStyle(this[0], null) : {} } function yi(n, t) { var r, u; if (arguments.length === 1) if (typeof n == "string") { if (this[0]) return i.getComputedStyle(this[0], null).getPropertyValue(n) } else { for (r = 0; r < this.length; r += 1) for (u in n) this[r].style[u] = n[u]; return this } if (arguments.length === 2 && typeof n == "string") { for (r = 0; r < this.length; r += 1) this[r].style[n] = t; return this } return this } function pi(n) { if (!n) return this; for (var t = 0; t < this.length; t += 1) if (n.call(this[t], t, this[t]) === !1) return this; return this } function wi(n) { if (typeof n == "undefined") return this[0] ? this[0].innerHTML: undefined; for (var t = 0; t < this.length; t += 1) this[t].innerHTML = n; return this } function bi(n) { if (typeof n == "undefined") return this[0] ? this[0].textContent.trim() : null; for (var t = 0; t < this.length; t += 1) this[t].textContent = n; return this } function ki(t) { var u = this[0], o, e; if (!u || typeof t == "undefined") return ! 1; if (typeof t == "string") { if (u.matches) return u.matches(t); if (u.webkitMatchesSelector) return u.webkitMatchesSelector(t); if (u.msMatchesSelector) return u.msMatchesSelector(t); for (o = n(t), e = 0; e < o.length; e += 1) if (o[e] === u) return ! 0; return ! 1 } if (t === r) return u === r; if (t === i) return u === i; if (t.nodeType || t instanceof f) { for (o = t.nodeType ? [t] : t, e = 0; e < o.length; e += 1) if (o[e] === u) return ! 0; return ! 1 } return ! 1 } function di() { var n = this[0], t; if (n) { for (t = 0; (n = n.previousSibling) !== null;) n.nodeType === 1 && (t += 1); return t } return undefined } function gi(n) { if (typeof n == "undefined") return this; var i = this.length, t; return n > i - 1 ? new f([]) : n < 0 ? (t = i + n, t < 0) ? new f([]) : new f([this[t]]) : new f([this[n]]) } function nr() { for (var o = [], s = arguments.length, n, i, t, u, e; s--;) o[s] = arguments[s]; for (i = 0; i < o.length; i += 1) for (n = o[i], t = 0; t < this.length; t += 1) if (typeof n == "string") for (u = r.createElement("div"), u.innerHTML = n; u.firstChild;) this[t].appendChild(u.firstChild); else if (n instanceof f) for (e = 0; e < n.length; e += 1) this[t].appendChild(n[e]); else this[t].appendChild(n); return this } function tr(n) { for (var i, u, t = 0; t < this.length; t += 1) if (typeof n == "string") for (u = r.createElement("div"), u.innerHTML = n, i = u.childNodes.length - 1; i >= 0; i -= 1) this[t].insertBefore(u.childNodes[i], this[t].childNodes[0]); else if (n instanceof f) for (i = 0; i < n.length; i += 1) this[t].insertBefore(n[i], this[t].childNodes[0]); else this[t].insertBefore(n, this[t].childNodes[0]); return this } function ir(t) { return this.length > 0 ? t ? this[0].nextElementSibling && n(this[0].nextElementSibling).is(t) ? new f([this[0].nextElementSibling]) : new f([]) : this[0].nextElementSibling ? new f([this[0].nextElementSibling]) : new f([]) : new f([]) } function rr(t) { var u = [], r = this[0], i; if (!r) return new f([]); while (r.nextElementSibling) i = r.nextElementSibling, t ? n(i).is(t) && u.push(i) : u.push(i), r = i; return new f(u) } function ur(t) { if (this.length > 0) { var i = this[0]; return t ? i.previousElementSibling && n(i.previousElementSibling).is(t) ? new f([i.previousElementSibling]) : new f([]) : i.previousElementSibling ? new f([i.previousElementSibling]) : new f([]) } return new f([]) } function fr(t) { var u = [], r = this[0], i; if (!r) return new f([]); while (r.previousElementSibling) i = r.previousElementSibling, t ? n(i).is(t) && u.push(i) : u.push(i), r = i; return new f(u) } function er(t) { for (var r = [], i = 0; i < this.length; i += 1) this[i].parentNode !== null && (t ? n(this[i].parentNode).is(t) && r.push(this[i].parentNode) : r.push(this[i].parentNode)); return n(y(r)) } function or(t) { for (var i, r = [], u = 0; u < this.length; u += 1) for (i = this[u].parentNode; i;) t ? n(i).is(t) && r.push(i) : r.push(i), i = i.parentNode; return n(y(r)) } function sr(n) { var t = this; return typeof n == "undefined" ? new f([]) : (t.is(n) || (t = t.parents(n).eq(0)), t) } function hr(n) { for (var r, t, u = [], i = 0; i < this.length; i += 1) for (r = this[i].querySelectorAll(n), t = 0; t < r.length; t += 1) u.push(r[t]); return new f(u) } function cr(t) { for (var r, i, u = [], e = 0; e < this.length; e += 1) for (r = this[e].childNodes, i = 0; i < r.length; i += 1) t ? r[i].nodeType === 1 && n(r[i]).is(t) && u.push(r[i]) : r[i].nodeType === 1 && u.push(r[i]); return new f(y(u)) } function lr() { for (var n = 0; n < this.length; n += 1) this[n].parentNode && this[n].parentNode.removeChild(this[n]); return this } function ar() { for (var u = [], f = arguments.length, t, i, r, e; f--;) u[f] = arguments[f]; for (t = this, i = 0; i < u.length; i += 1) for (e = n(u[i]), r = 0; r < e.length; r += 1) t[t.length] = e[r], t.length += 1; return t } function vr() { var n = this, i, r, u = n.$el; (i = typeof n.params.width != "undefined" ? n.params.width: u[0].clientWidth, r = typeof n.params.height != "undefined" ? n.params.height: u[0].clientHeight, i === 0 && n.isHorizontal() || r === 0 && n.isVertical()) || (i = i - parseInt(u.css("padding-left"), 10) - parseInt(u.css("padding-right"), 10), r = r - parseInt(u.css("padding-top"), 10) - parseInt(u.css("padding-bottom"), 10), t.extend(n, { width: i, height: r, size: n.isHorizontal() ? i: r })) } function yr() { var r = this, n = r.params, k = r.$wrapperEl, p = r.size, ht = r.rtlTranslate, si = r.wrongRTL, kt = r.virtual && n.virtual.enabled, hi = kt ? r.virtual.slides.length: r.slides.length, l = k.children("." + r.params.slideClass), b = kt ? r.virtual.slides.length: l.length, f = [], d = [], ct = [], lt = n.slidesOffsetBefore, et, g, h, a, yt, it, rt, ot, ut, st, ft, bt; typeof lt == "function" && (lt = n.slidesOffsetBefore.call(r)); et = n.slidesOffsetAfter; typeof et == "function" && (et = n.slidesOffsetAfter.call(r)); var ci = r.snapGrid.length, li = r.snapGrid.length, c = n.spaceBetween, e = -lt, at = 0, vt = 0; if (typeof p != "undefined") { typeof c == "string" && c.indexOf("%") >= 0 && (c = parseFloat(c.replace("%", "")) / 100 * p); r.virtualSize = -c; ht ? l.css({ marginLeft: "", marginTop: "" }) : l.css({ marginRight: "", marginBottom: "" }); n.slidesPerColumn > 1 && (g = Math.floor(b / n.slidesPerColumn) === b / r.params.slidesPerColumn ? b: Math.ceil(b / n.slidesPerColumn) * n.slidesPerColumn, n.slidesPerView !== "auto" && n.slidesPerColumnFill === "row" && (g = Math.max(g, n.slidesPerView * n.slidesPerColumn))); var s, nt = n.slidesPerColumn, dt = g / nt, gt = Math.floor(b / n.slidesPerColumn); for (h = 0; h < b; h += 1) { if (s = 0, a = l.eq(h), n.slidesPerColumn > 1) { var tt = void 0, w = void 0, v = void 0; n.slidesPerColumnFill === "column" || n.slidesPerColumnFill === "row" && n.slidesPerGroup > 1 ? (n.slidesPerColumnFill === "column" ? (w = Math.floor(h / nt), v = h - w * nt, (w > gt || w === gt && v === nt - 1) && (v += 1, v >= nt && (v = 0, w += 1))) : (yt = Math.floor(h / n.slidesPerGroup), v = Math.floor(h / n.slidesPerView) - yt * n.slidesPerColumn, w = h - v * n.slidesPerView - yt * n.slidesPerView), tt = w + v * g / nt, a.css({ "-webkit-box-ordinal-group": tt, "-moz-box-ordinal-group": tt, "-ms-flex-order": tt, "-webkit-order": tt, order: tt })) : (v = Math.floor(h / dt), w = h - v * dt); a.css("margin-" + (r.isHorizontal() ? "top": "left"), v !== 0 && n.spaceBetween && n.spaceBetween + "px").attr("data-swiper-column", w).attr("data-swiper-row", v) } if (a.css("display") !== "none") { if (n.slidesPerView === "auto") { var y = i.getComputedStyle(a[0], null), pt = a[0].style.transform, wt = a[0].style.webkitTransform; if (pt && (a[0].style.transform = "none"), wt && (a[0].style.webkitTransform = "none"), n.roundLengths) s = r.isHorizontal() ? a.outerWidth(!0) : a.outerHeight(!0); else if (r.isHorizontal()) { var ni = parseFloat(y.getPropertyValue("width")), ai = parseFloat(y.getPropertyValue("padding-left")), vi = parseFloat(y.getPropertyValue("padding-right")), ti = parseFloat(y.getPropertyValue("margin-left")), ii = parseFloat(y.getPropertyValue("margin-right")), ri = y.getPropertyValue("box-sizing"); s = ri && ri === "border-box" && !o.isIE ? ni + ti + ii: ni + ai + vi + ti + ii } else { var ui = parseFloat(y.getPropertyValue("height")), yi = parseFloat(y.getPropertyValue("padding-top")), pi = parseFloat(y.getPropertyValue("padding-bottom")), fi = parseFloat(y.getPropertyValue("margin-top")), ei = parseFloat(y.getPropertyValue("margin-bottom")), oi = y.getPropertyValue("box-sizing"); s = oi && oi === "border-box" && !o.isIE ? ui + fi + ei: ui + yi + pi + fi + ei } pt && (a[0].style.transform = pt); wt && (a[0].style.webkitTransform = wt); n.roundLengths && (s = Math.floor(s)) } else s = (p - (n.slidesPerView - 1) * c) / n.slidesPerView, n.roundLengths && (s = Math.floor(s)), l[h] && (r.isHorizontal() ? l[h].style.width = s + "px": l[h].style.height = s + "px"); l[h] && (l[h].swiperSlideSize = s); ct.push(s); n.centeredSlides ? (e = e + s / 2 + at / 2 + c, at === 0 && h !== 0 && (e = e - p / 2 - c), h === 0 && (e = e - p / 2 - c), Math.abs(e) < 1 / 1e3 && (e = 0), n.roundLengths && (e = Math.floor(e)), vt % n.slidesPerGroup == 0 && f.push(e), d.push(e)) : (n.roundLengths && (e = Math.floor(e)), vt % n.slidesPerGroup == 0 && f.push(e), d.push(e), e = e + s + c); r.virtualSize += s + c; at = s; vt += 1 } } if (r.virtualSize = Math.max(r.virtualSize, p) + et, ht && si && (n.effect === "slide" || n.effect === "coverflow") && k.css({ width: r.virtualSize + n.spaceBetween + "px" }), (!u.flexbox || n.setWrapperSize) && (r.isHorizontal() ? k.css({ width: r.virtualSize + n.spaceBetween + "px" }) : k.css({ height: r.virtualSize + n.spaceBetween + "px" })), n.slidesPerColumn > 1 && (r.virtualSize = (s + n.spaceBetween) * g, r.virtualSize = Math.ceil(r.virtualSize / n.slidesPerColumn) - n.spaceBetween, r.isHorizontal() ? k.css({ width: r.virtualSize + n.spaceBetween + "px" }) : k.css({ height: r.virtualSize + n.spaceBetween + "px" }), n.centeredSlides)) { for (it = [], rt = 0; rt < f.length; rt += 1) ot = f[rt], n.roundLengths && (ot = Math.floor(ot)), f[rt] < r.virtualSize + f[0] && it.push(ot); f = it } if (!n.centeredSlides) { for (it = [], ut = 0; ut < f.length; ut += 1) st = f[ut], n.roundLengths && (st = Math.floor(st)), f[ut] <= r.virtualSize - p && it.push(st); f = it; Math.floor(r.virtualSize - p) - Math.floor(f[f.length - 1]) > 1 && f.push(r.virtualSize - p) } f.length === 0 && (f = [0]); n.spaceBetween !== 0 && (r.isHorizontal() ? ht ? l.css({ marginLeft: c + "px" }) : l.css({ marginRight: c + "px" }) : l.css({ marginBottom: c + "px" })); n.centerInsufficientSlides && (ft = 0, ct.forEach(function(t) { ft += t + (n.spaceBetween ? n.spaceBetween: 0) }), ft -= n.spaceBetween, ft < p && (bt = (p - ft) / 2, f.forEach(function(n, t) { f[t] = n - bt }), d.forEach(function(n, t) { d[t] = n + bt }))); t.extend(r, { slides: l, snapGrid: f, slidesGrid: d, slidesSizesGrid: ct }); b !== hi && r.emit("slidesLengthChange"); f.length !== ci && (r.params.watchOverflow && r.checkOverflow(), r.emit("snapGridLengthChange")); d.length !== li && r.emit("slidesGridLengthChange"); (n.watchSlidesProgress || n.watchSlidesVisibility) && r.updateSlidesOffset() } } function pr(n) { var t = this, r = [], u = 0, i, f, e; if (typeof n == "number" ? t.setTransition(n) : n === !0 && t.setTransition(t.params.speed), t.params.slidesPerView !== "auto" && t.params.slidesPerView > 1) for (i = 0; i < Math.ceil(t.params.slidesPerView); i += 1) { if (f = t.activeIndex + i, f > t.slides.length) break; r.push(t.slides.eq(f)[0]) } else r.push(t.slides.eq(t.activeIndex)[0]); for (i = 0; i < r.length; i += 1) typeof r[i] != "undefined" && (e = r[i].offsetHeight, u = e > u ? e: u); u && t.$wrapperEl.css("height", u + "px") } function wr() { for (var i = this, t = i.slides, n = 0; n < t.length; n += 1) t[n].swiperSlideOffset = i.isHorizontal() ? t[n].offsetLeft: t[n].offsetTop } function br(t) { var i = this, e = i.params, r, h, o, u, f, c; if (typeof t == "undefined" && (t = i && i.translate || 0), r = i.slides, h = i.rtlTranslate, r.length !== 0) { for (typeof r[0].swiperSlideOffset == "undefined" && i.updateSlidesOffset(), o = -t, h && (o = t), r.removeClass(e.slideVisibleClass), i.visibleSlidesIndexes = [], i.visibleSlides = [], u = 0; u < r.length; u += 1) { if (f = r[u], c = (o + (e.centeredSlides ? i.minTranslate() : 0) - f.swiperSlideOffset) / (f.swiperSlideSize + e.spaceBetween), e.watchSlidesVisibility) { var s = -(o - f.swiperSlideOffset), l = s + i.slidesSizesGrid[u], a = s >= 0 && s < i.size - 1 || l > 1 && l <= i.size || s <= 0 && l >= i.size; a && (i.visibleSlides.push(f), i.visibleSlidesIndexes.push(u), r.eq(u).addClass(e.slideVisibleClass)) } f.progress = h ? -c: c } i.visibleSlides = n(i.visibleSlides) } } function kr(n) { var i = this, e = i.params, o; typeof n == "undefined" && (o = i.rtlTranslate ? -1 : 1, n = i && i.translate && i.translate * o || 0); var s = i.maxTranslate() - i.minTranslate(), r = i.progress, u = i.isBeginning, f = i.isEnd, h = u, c = f; s === 0 ? (r = 0, u = !0, f = !0) : (r = (n - i.minTranslate()) / s, u = r <= 0, f = r >= 1); t.extend(i, { progress: r, isBeginning: u, isEnd: f }); (e.watchSlidesProgress || e.watchSlidesVisibility) && i.updateSlidesProgress(n); u && !h && i.emit("reachBeginning toEdge"); f && !c && i.emit("reachEnd toEdge"); (h && !u || c && !f) && i.emit("fromEdge"); i.emit("progress", r) } function dr() { var t = this, e = t.slides, n = t.params, u = t.$wrapperEl, o = t.activeIndex, s = t.realIndex, h = t.virtual && n.virtual.enabled, f, i, r; e.removeClass(n.slideActiveClass + " " + n.slideNextClass + " " + n.slidePrevClass + " " + n.slideDuplicateActiveClass + " " + n.slideDuplicateNextClass + " " + n.slideDuplicatePrevClass); f = h ? t.$wrapperEl.find("." + n.slideClass + '[data-swiper-slide-index="' + o + '"]') : e.eq(o); f.addClass(n.slideActiveClass); n.loop && (f.hasClass(n.slideDuplicateClass) ? u.children("." + n.slideClass + ":not(." + n.slideDuplicateClass + ')[data-swiper-slide-index="' + s + '"]').addClass(n.slideDuplicateActiveClass) : u.children("." + n.slideClass + "." + n.slideDuplicateClass + '[data-swiper-slide-index="' + s + '"]').addClass(n.slideDuplicateActiveClass)); i = f.nextAll("." + n.slideClass).eq(0).addClass(n.slideNextClass); n.loop && i.length === 0 && (i = e.eq(0), i.addClass(n.slideNextClass)); r = f.prevAll("." + n.slideClass).eq(0).addClass(n.slidePrevClass); n.loop && r.length === 0 && (r = e.eq( - 1), r.addClass(n.slidePrevClass)); n.loop && (i.hasClass(n.slideDuplicateClass) ? u.children("." + n.slideClass + ":not(." + n.slideDuplicateClass + ')[data-swiper-slide-index="' + i.attr("data-swiper-slide-index") + '"]').addClass(n.slideDuplicateNextClass) : u.children("." + n.slideClass + "." + n.slideDuplicateClass + '[data-swiper-slide-index="' + i.attr("data-swiper-slide-index") + '"]').addClass(n.slideDuplicateNextClass), r.hasClass(n.slideDuplicateClass) ? u.children("." + n.slideClass + ":not(." + n.slideDuplicateClass + ')[data-swiper-slide-index="' + r.attr("data-swiper-slide-index") + '"]').addClass(n.slideDuplicatePrevClass) : u.children("." + n.slideClass + "." + n.slideDuplicateClass + '[data-swiper-slide-index="' + r.attr("data-swiper-slide-index") + '"]').addClass(n.slideDuplicatePrevClass)) } function gr(n) { var i = this, e = i.rtlTranslate ? i.translate: -i.translate, f = i.slidesGrid, s = i.snapGrid, c = i.params, l = i.activeIndex, a = i.realIndex, v = i.snapIndex, u = n, o, r, h; if (typeof u == "undefined") { for (r = 0; r < f.length; r += 1) typeof f[r + 1] != "undefined" ? e >= f[r] && e < f[r + 1] - (f[r + 1] - f[r]) / 2 ? u = r: e >= f[r] && e < f[r + 1] && (u = r + 1) : e >= f[r] && (u = r); c.normalizeSlideIndex && (u < 0 || typeof u == "undefined") && (u = 0) } if (o = s.indexOf(e) >= 0 ? s.indexOf(e) : Math.floor(u / c.slidesPerGroup), o >= s.length && (o = s.length - 1), u === l) { o !== v && (i.snapIndex = o, i.emit("snapIndexChange")); return } h = parseInt(i.slides.eq(u).attr("data-swiper-slide-index") || u, 10); t.extend(i, { snapIndex: o, realIndex: h, previousIndex: l, activeIndex: u }); i.emit("activeIndexChange"); i.emit("snapIndexChange"); a !== h && i.emit("realIndexChange"); (i.initialized || i.runCallbacksOnInit) && i.emit("slideChange") } function nu(t) { var i = this, f = i.params, r = n(t.target).closest("." + f.slideClass)[0], e = !1, u; if (r) for (u = 0; u < i.slides.length; u += 1) i.slides[u] === r && (e = !0); if (r && e) i.clickedSlide = r, i.clickedIndex = i.virtual && i.params.virtual.enabled ? parseInt(n(r).attr("data-swiper-slide-index"), 10) : n(r).index(); else { i.clickedSlide = undefined; i.clickedIndex = undefined; return } f.slideToClickedSlide && i.clickedIndex !== undefined && i.clickedIndex !== i.activeIndex && i.slideToClickedSlide() } function tu(n) { var r; n === void 0 && (n = this.isHorizontal() ? "x": "y"); var i = this, e = i.params, u = i.rtlTranslate, f = i.translate, o = i.$wrapperEl; return e.virtualTranslate ? u ? -f: f: (r = t.getTranslate(o[0], n), u && (r = -r), r || 0) } function iu(n, t) { var i = this, c = i.rtlTranslate, o = i.params, s = i.$wrapperEl, l = i.progress, r = 0, f = 0, h, e; i.isHorizontal() ? r = c ? -n: n: f = n; o.roundLengths && (r = Math.floor(r), f = Math.floor(f)); o.virtualTranslate || (u.transforms3d ? s.transform("translate3d(" + r + "px, " + f + "px, 0px)") : s.transform("translate(" + r + "px, " + f + "px)")); i.previousTranslate = i.translate; i.translate = i.isHorizontal() ? r: f; e = i.maxTranslate() - i.minTranslate(); h = e === 0 ? 0 : (n - i.minTranslate()) / e; h !== l && i.updateProgress(n); i.emit("setTranslate", i.translate, t) } function ru() { return - this.snapGrid[0] } function uu() { return - this.snapGrid[this.snapGrid.length - 1] } function fu(n, t) { var i = this; i.$wrapperEl.transition(n); i.emit("setTransition", n, t) } function eu(n, t) { var r; n === void 0 && (n = !0); var i = this, u = i.activeIndex, e = i.params, f = i.previousIndex; if (e.autoHeight && i.updateAutoHeight(), r = t, r || (r = u > f ? "next": u < f ? "prev": "reset"), i.emit("transitionStart"), n && u !== f) { if (r === "reset") { i.emit("slideResetTransitionStart"); return } i.emit("slideChangeTransitionStart"); r === "next" ? i.emit("slideNextTransitionStart") : i.emit("slidePrevTransitionStart") } } function ou(n, t) { var r; n === void 0 && (n = !0); var i = this, u = i.activeIndex, f = i.previousIndex; if (i.animating = !1, i.setTransition(0), r = t, r || (r = u > f ? "next": u < f ? "prev": "reset"), i.emit("transitionEnd"), n && u !== f) { if (r === "reset") { i.emit("slideResetTransitionEnd"); return } i.emit("slideChangeTransitionEnd"); r === "next" ? i.emit("slideNextTransitionEnd") : i.emit("slidePrevTransitionEnd") } } function su(n, t, i, r) { var f, e, a, o, l, s; n === void 0 && (n = 0); t === void 0 && (t = this.params.speed); i === void 0 && (i = !0); f = this; e = n; e < 0 && (e = 0); var h = f.params, v = f.snapGrid, y = f.slidesGrid, w = f.previousIndex, c = f.activeIndex, p = f.rtlTranslate; if (f.animating && h.preventInteractionOnTransition) return ! 1; if (a = Math.floor(e / h.slidesPerGroup), a >= v.length && (a = v.length - 1), (c || h.initialSlide || 0) === (w || 0) && i && f.emit("beforeSlideChangeStart"), o = -v[a], f.updateProgress(o), h.normalizeSlideIndex) for (l = 0; l < y.length; l += 1) - Math.floor(o * 100) >= Math.floor(y[l] * 100) && (e = l); return f.initialized && e !== c && (!f.allowSlideNext && o < f.translate && o < f.minTranslate() || !f.allowSlidePrev && o > f.translate && o > f.maxTranslate() && (c || 0) !== e) ? !1 : (s = e > c ? "next": e < c ? "prev": "reset", p && -o === f.translate || !p && o === f.translate) ? (f.updateActiveIndex(e), h.autoHeight && f.updateAutoHeight(), f.updateSlidesClasses(), h.effect !== "slide" && f.setTranslate(o), s !== "reset" && (f.transitionStart(i, s), f.transitionEnd(i, s)), !1) : (t !== 0 && u.transition ? (f.setTransition(t), f.setTranslate(o), f.updateActiveIndex(e), f.updateSlidesClasses(), f.emit("beforeTransitionStart", t, r), f.transitionStart(i, s), f.animating || (f.animating = !0, f.onSlideToWrapperTransitionEnd || (f.onSlideToWrapperTransitionEnd = function(n) { f && !f.destroyed && n.target === this && (f.$wrapperEl[0].removeEventListener("transitionend", f.onSlideToWrapperTransitionEnd), f.$wrapperEl[0].removeEventListener("webkitTransitionEnd", f.onSlideToWrapperTransitionEnd), f.onSlideToWrapperTransitionEnd = null, delete f.onSlideToWrapperTransitionEnd, f.transitionEnd(i, s)) }), f.$wrapperEl[0].addEventListener("transitionend", f.onSlideToWrapperTransitionEnd), f.$wrapperEl[0].addEventListener("webkitTransitionEnd", f.onSlideToWrapperTransitionEnd))) : (f.setTransition(0), f.setTranslate(o), f.updateActiveIndex(e), f.updateSlidesClasses(), f.emit("beforeTransitionStart", t, r), f.transitionStart(i, s), f.transitionEnd(i, s)), !0) } function hu(n, t, i, r) { n === void 0 && (n = 0); t === void 0 && (t = this.params.speed); i === void 0 && (i = !0); var u = this, f = n; return u.params.loop && (f += u.loopedSlides), u.slideTo(f, t, i, r) } function cu(n, t, i) { n === void 0 && (n = this.params.speed); t === void 0 && (t = !0); var r = this, u = r.params, f = r.animating; return u.loop ? f ? !1 : (r.loopFix(), r._clientLeft = r.$wrapperEl[0].clientLeft, r.slideTo(r.activeIndex + u.slidesPerGroup, n, t, i)) : r.slideTo(r.activeIndex + u.slidesPerGroup, n, t, i) } function lu(n, t, i) { function e(n) { return n < 0 ? -Math.floor(Math.abs(n)) : Math.floor(n) } var s; n === void 0 && (n = this.params.speed); t === void 0 && (t = !0); var r = this, a = r.params, v = r.animating, f = r.snapGrid, o = r.slidesGrid, y = r.rtlTranslate; if (a.loop) { if (v) return ! 1; r.loopFix(); r._clientLeft = r.$wrapperEl[0].clientLeft } s = y ? r.translate: -r.translate; var h = e(s), c = f.map(function(n) { return e(n) }), p = o.map(function(n) { return e(n) }), w = f[c.indexOf(h)], l = f[c.indexOf(h) - 1], u; return typeof l != "undefined" && (u = o.indexOf(l), u < 0 && (u = r.activeIndex - 1)), r.slideTo(u, n, t, i) } function au(n, t, i) { n === void 0 && (n = this.params.speed); t === void 0 && (t = !0); var r = this; return r.slideTo(r.activeIndex, n, t, i) } function vu(n, t, i) { n === void 0 && (n = this.params.speed); t === void 0 && (t = !0); var r = this, u = r.activeIndex, f = Math.floor(u / r.params.slidesPerGroup); if (f < r.snapGrid.length - 1) { var o = r.rtlTranslate ? r.translate: -r.translate, e = r.snapGrid[f], s = r.snapGrid[f + 1]; o - e > (s - e) / 2 && (u = r.params.slidesPerGroup) } return r.slideTo(u, n, t, i) } function yu() { var i = this, u = i.params, o = i.$wrapperEl, f = u.slidesPerView === "auto" ? i.slidesPerViewDynamic() : u.slidesPerView, r = i.clickedIndex, e; if (u.loop) { if (i.animating) return; e = parseInt(n(i.clickedSlide).attr("data-swiper-slide-index"), 10); u.centeredSlides ? r < i.loopedSlides - f / 2 || r > i.slides.length - i.loopedSlides + f / 2 ? (i.loopFix(), r = o.children("." + u.slideClass + '[data-swiper-slide-index="' + e + '"]:not(.' + u.slideDuplicateClass + ")").eq(0).index(), t.nextTick(function() { i.slideTo(r) })) : i.slideTo(r) : r > i.slides.length - f ? (i.loopFix(), r = o.children("." + u.slideClass + '[data-swiper-slide-index="' + e + '"]:not(.' + u.slideDuplicateClass + ")").eq(0).index(), t.nextTick(function() { i.slideTo(r) })) : i.slideTo(r) } else i.slideTo(r) } function pu() { var u = this, t = u.params, f = u.$wrapperEl, i, c, l, a, e, o, s, h; if (f.children("." + t.slideClass + "." + t.slideDuplicateClass).remove(), i = f.children("." + t.slideClass), t.loopFillGroupWithBlank && (c = t.slidesPerGroup - i.length % t.slidesPerGroup, c !== t.slidesPerGroup)) { for (l = 0; l < c; l += 1) a = n(r.createElement("div")).addClass(t.slideClass + " " + t.slideBlankClass), f.append(a); i = f.children("." + t.slideClass) } for (t.slidesPerView !== "auto" || t.loopedSlides || (t.loopedSlides = i.length), u.loopedSlides = parseInt(t.loopedSlides || t.slidesPerView, 10), u.loopedSlides += t.loopAdditionalSlides, u.loopedSlides > i.length && (u.loopedSlides = i.length), e = [], o = [], i.each(function(t, r) { var f = n(r); t < u.loopedSlides && o.push(r); t < i.length && t >= i.length - u.loopedSlides && e.push(r); f.attr("data-swiper-slide-index", t) }), s = 0; s < o.length; s += 1) f.append(n(o[s].cloneNode(!0)).addClass(t.slideDuplicateClass)); for (h = e.length - 1; h >= 0; h -= 1) f.prepend(n(e[h].cloneNode(!0)).addClass(t.slideDuplicateClass)) } function wu() { var n = this, c = n.params, i = n.activeIndex, f = n.slides, t = n.loopedSlides, l = n.allowSlidePrev, a = n.allowSlideNext, v = n.snapGrid, e = n.rtlTranslate, r, o, u, s, h; n.allowSlidePrev = !0; n.allowSlideNext = !0; o = -v[i]; u = o - n.getTranslate(); i < t ? (r = f.length - t * 3 + i, r += t, s = n.slideTo(r, 0, !1, !0), s && u !== 0 && n.setTranslate((e ? -n.translate: n.translate) - u)) : (c.slidesPerView === "auto" && i >= t * 2 || i >= f.length - t) && (r = -f.length + i + t, r += t, h = n.slideTo(r, 0, !1, !0), h && u !== 0 && n.setTranslate((e ? -n.translate: n.translate) - u)); n.allowSlidePrev = l; n.allowSlideNext = a } function bu() { var t = this, i = t.$wrapperEl, n = t.params, r = t.slides; i.children("." + n.slideClass + "." + n.slideDuplicateClass + ",." + n.slideClass + "." + n.slideBlankClass).remove(); r.removeAttr("data-swiper-slide-index") } function ku(n) { var i = this, t; u.touch || !i.params.simulateTouch || i.params.watchOverflow && i.isLocked || (t = i.el, t.style.cursor = "move", t.style.cursor = n ? "-webkit-grabbing": "-webkit-grab", t.style.cursor = n ? "-moz-grabbin": "-moz-grab", t.style.cursor = n ? "grabbing": "grab") } function du() { var n = this; u.touch || n.params.watchOverflow && n.isLocked || (n.el.style.cursor = "") } function gu(n) { var t = this, f = t.$wrapperEl, r = t.params, i; if (r.loop && t.loopDestroy(), typeof n == "object" && "length" in n) for (i = 0; i < n.length; i += 1) n[i] && f.append(n[i]); else f.append(n); r.loop && t.loopCreate(); r.observer && u.observer || t.update() } function nf(n) { var t = this, r = t.params, e = t.$wrapperEl, o = t.activeIndex, f, i; if (r.loop && t.loopDestroy(), f = o + 1, typeof n == "object" && "length" in n) { for (i = 0; i < n.length; i += 1) n[i] && e.prepend(n[i]); f = o + n.length } else e.prepend(n); r.loop && t.loopCreate(); r.observer && u.observer || t.update(); t.slideTo(f, 0, !1) } function tf(n, t) { var i = this, o = i.$wrapperEl, f = i.params, y = i.activeIndex, r = y, a, s, h, c, v, e, l; if (f.loop && (r -= i.loopedSlides, i.loopDestroy(), i.slides = o.children("." + f.slideClass)), a = i.slides.length, n <= 0) { i.prependSlide(t); return } if (n >= a) { i.appendSlide(t); return } for (s = r > n ? r + 1 : r, h = [], c = a - 1; c >= n; c -= 1) v = i.slides.eq(c), v.remove(), h.unshift(v); if (typeof t == "object" && "length" in t) { for (e = 0; e < t.length; e += 1) t[e] && o.append(t[e]); s = r > n ? r + t.length: r } else o.append(t); for (l = 0; l < h.length; l += 1) o.append(h[l]); f.loop && i.loopCreate(); f.observer && u.observer || i.update(); f.loop ? i.slideTo(s + i.loopedSlides, 0, !1) : i.slideTo(s, 0, !1) } function rf(n) { var t = this, f = t.params, s = t.$wrapperEl, h = t.activeIndex, o = h, i, r, e; if (f.loop && (o -= t.loopedSlides, t.loopDestroy(), t.slides = s.children("." + f.slideClass)), i = o, typeof n == "object" && "length" in n) { for (e = 0; e < n.length; e += 1) r = n[e], t.slides[r] && t.slides.eq(r).remove(), r < i && (i -= 1); i = Math.max(i, 0) } else r = n, t.slides[r] && t.slides.eq(r).remove(), r < i && (i -= 1), i = Math.max(i, 0); f.loop && t.loopCreate(); f.observer && u.observer || t.update(); f.loop ? t.slideTo(i + t.loopedSlides, 0, !1) : t.slideTo(i, 0, !1) } function uf() { for (var t = this, i = [], n = 0; n < t.slides.length; n += 1) i.push(n); t.removeSlide(i) } function ff(u) { var o = this, s = o.touchEventsData, e = o.params, h = o.touches, f, l, v; if ((!o.animating || !e.preventInteractionOnTransition) && (f = u, f.originalEvent && (f = f.originalEvent), s.isTouchEvent = f.type === "touchstart", s.isTouchEvent || !("which" in f) || f.which !== 3) && (s.isTouchEvent || !("button" in f) || !(f.button > 0)) && (!s.isTouched || !s.isMoved)) { if (e.noSwiping && n(f.target).closest(e.noSwipingSelector ? e.noSwipingSelector: "." + e.noSwipingClass)[0]) { o.allowClick = !0; return } if (!e.swipeHandler || n(f).closest(e.swipeHandler)[0]) { h.currentX = f.type === "touchstart" ? f.targetTouches[0].pageX: f.pageX; h.currentY = f.type === "touchstart" ? f.targetTouches[0].pageY: f.pageY; var c = h.currentX, y = h.currentY, p = e.edgeSwipeDetection || e.iOSEdgeSwipeDetection, a = e.edgeSwipeThreshold || e.iOSEdgeSwipeThreshold; p && (c <= a || c >= i.screen.width - a) || (t.extend(s, { isTouched: !0, isMoved: !1, allowTouchCallbacks: !0, isScrolling: undefined, startMoving: undefined }), h.startX = c, h.startY = y, s.touchStartTime = t.now(), o.allowClick = !0, o.updateSize(), o.swipeDirection = undefined, e.threshold > 0 && (s.allowThresholdMove = !1), f.type !== "touchstart" && (l = !0, n(f.target).is(s.formElements) && (l = !1), r.activeElement && n(r.activeElement).is(s.formElements) && r.activeElement !== f.target && r.activeElement.blur(), v = l && o.allowTouchMove && e.touchStartPreventDefault, (e.touchStartForcePreventDefault || v) && f.preventDefault()), o.emit("touchStart", f)) } } } function ef(i) { var f = this, u = f.touchEventsData, s = f.params, e = f.touches, k = f.rtlTranslate, o = i, a, v, w, h, y, p; if (o.originalEvent && (o = o.originalEvent), !u.isTouched) { u.startMoving && u.isScrolling && f.emit("touchMoveOpposite", o); return } if (!u.isTouchEvent || o.type !== "mousemove") { var b = o.type === "touchmove" && o.targetTouches && (o.targetTouches[0] || o.changedTouches[0]), c = o.type === "touchmove" ? b.pageX: o.pageX, l = o.type === "touchmove" ? b.pageY: o.pageY; if (o.preventedByNestedSwiper) { e.startX = c; e.startY = l; return } if (!f.allowTouchMove) { f.allowClick = !1; u.isTouched && (t.extend(e, { startX: c, startY: l, currentX: c, currentY: l }), u.touchStartTime = t.now()); return } if (u.isTouchEvent && s.touchReleaseOnEdges && !s.loop) if (f.isVertical()) { if (l < e.startY && f.translate <= f.maxTranslate() || l > e.startY && f.translate >= f.minTranslate()) { u.isTouched = !1; u.isMoved = !1; return } } else if (c < e.startX && f.translate <= f.maxTranslate() || c > e.startX && f.translate >= f.minTranslate()) return; if (u.isTouchEvent && r.activeElement && o.target === r.activeElement && n(o.target).is(u.formElements)) { u.isMoved = !0; f.allowClick = !1; return } if ((u.allowTouchCallbacks && f.emit("touchMove", o), !o.targetTouches || !(o.targetTouches.length > 1)) && (e.currentX = c, e.currentY = l, a = e.currentX - e.startX, v = e.currentY - e.startY, !f.params.threshold || !(Math.sqrt(Math.pow(a, 2) + Math.pow(v, 2)) < f.params.threshold))) { if (typeof u.isScrolling == "undefined" && (f.isHorizontal() && e.currentY === e.startY || f.isVertical() && e.currentX === e.startX ? u.isScrolling = !1 : a * a + v * v >= 25 && (w = Math.atan2(Math.abs(v), Math.abs(a)) * 180 / Math.PI, u.isScrolling = f.isHorizontal() ? w > s.touchAngle: 90 - w > s.touchAngle)), u.isScrolling && f.emit("touchMoveOpposite", o), typeof u.startMoving == "undefined" && (e.currentX !== e.startX || e.currentY !== e.startY) && (u.startMoving = !0), u.isScrolling) { u.isTouched = !1; return } if (u.startMoving) { if (f.allowClick = !1, o.preventDefault(), s.touchMoveStopPropagation && !s.nested && o.stopPropagation(), u.isMoved || (s.loop && f.loopFix(), u.startTranslate = f.getTranslate(), f.setTransition(0), f.animating && f.$wrapperEl.trigger("webkitTransitionEnd transitionend"), u.allowMomentumBounce = !1, s.grabCursor && (f.allowSlideNext === !0 || f.allowSlidePrev === !0) && f.setGrabCursor(!0), f.emit("sliderFirstMove", o)), f.emit("sliderMove", o), u.isMoved = !0, h = f.isHorizontal() ? a: v, e.diff = h, h *= s.touchRatio, k && (h = -h), f.swipeDirection = h > 0 ? "prev": "next", u.currentTranslate = h + u.startTranslate, y = !0, p = s.resistanceRatio, s.touchReleaseOnEdges && (p = 0), h > 0 && u.currentTranslate > f.minTranslate() ? (y = !1, s.resistance && (u.currentTranslate = f.minTranslate() - 1 + Math.pow( - f.minTranslate() + u.startTranslate + h, p))) : h < 0 && u.currentTranslate < f.maxTranslate() && (y = !1, s.resistance && (u.currentTranslate = f.maxTranslate() + 1 - Math.pow(f.maxTranslate() - u.startTranslate - h, p))), y && (o.preventedByNestedSwiper = !0), !f.allowSlideNext && f.swipeDirection === "next" && u.currentTranslate < u.startTranslate && (u.currentTranslate = u.startTranslate), !f.allowSlidePrev && f.swipeDirection === "prev" && u.currentTranslate > u.startTranslate && (u.currentTranslate = u.startTranslate), s.threshold > 0) if (Math.abs(h) > s.threshold || u.allowThresholdMove) { if (!u.allowThresholdMove) { u.allowThresholdMove = !0; e.startX = e.currentX; e.startY = e.currentY; u.currentTranslate = u.startTranslate; e.diff = f.isHorizontal() ? e.currentX - e.startX: e.currentY - e.startY; return } } else { u.currentTranslate = u.startTranslate; return } s.followFinger && ((s.freeMode || s.watchSlidesProgress || s.watchSlidesVisibility) && (f.updateActiveIndex(), f.updateSlidesClasses()), s.freeMode && (u.velocities.length === 0 && u.velocities.push({ position: e[f.isHorizontal() ? "startX": "startY"], time: u.touchStartTime }), u.velocities.push({ position: e[f.isHorizontal() ? "currentX": "currentY"], time: t.now() })), f.updateProgress(u.currentTranslate), f.setTranslate(u.currentTranslate)) } } } } function of(n) { var i = this, r = i.touchEventsData, u = i.params, ot = i.touches, nt = i.rtlTranslate, tt = i.$wrapperEl, e = i.slidesGrid, h = i.snapGrid, c = n, w, a, l, k, d, v, rt, y, p, s, g, o, ut; if (c.originalEvent && (c = c.originalEvent), r.allowTouchCallbacks && i.emit("touchEnd", c), r.allowTouchCallbacks = !1, !r.isTouched) { r.isMoved && u.grabCursor && i.setGrabCursor(!1); r.isMoved = !1; r.startMoving = !1; return } if (u.grabCursor && r.isMoved && r.isTouched && (i.allowSlideNext === !0 || i.allowSlidePrev === !0) && i.setGrabCursor(!1), w = t.now(), a = w - r.touchStartTime, i.allowClick && (i.updateClickedSlide(c), i.emit("tap", c), a < 300 && w - r.lastClickTime > 300 && (r.clickTimeout && clearTimeout(r.clickTimeout), r.clickTimeout = t.nextTick(function() { i && !i.destroyed && i.emit("click", c) }, 300)), a < 300 && w - r.lastClickTime < 300 && (r.clickTimeout && clearTimeout(r.clickTimeout), i.emit("doubleTap", c))), r.lastClickTime = t.now(), t.nextTick(function() { i.destroyed || (i.allowClick = !0) }), !r.isTouched || !r.isMoved || !i.swipeDirection || ot.diff === 0 || r.currentTranslate === r.startTranslate) { r.isTouched = !1; r.isMoved = !1; r.startMoving = !1; return } if (r.isTouched = !1, r.isMoved = !1, r.startMoving = !1, l = u.followFinger ? nt ? i.translate: -i.translate: -r.currentTranslate, u.freeMode) { if (l < -i.minTranslate()) { i.slideTo(i.activeIndex); return } if (l > -i.maxTranslate()) { i.slides.length < h.length ? i.slideTo(h.length - 1) : i.slideTo(i.slides.length - 1); return } if (u.freeModeMomentum) { if (r.velocities.length > 1) { var it = r.velocities.pop(), ft = r.velocities.pop(), st = it.position - ft.position, et = it.time - ft.time; i.velocity = st / et; i.velocity /= 2; Math.abs(i.velocity) < u.freeModeMinimumVelocity && (i.velocity = 0); (et > 150 || t.now() - it.time > 300) && (i.velocity = 0) } else i.velocity = 0; i.velocity *= u.freeModeMomentumVelocityRatio; r.velocities.length = 0; var b = 1e3 * u.freeModeMomentumRatio, ht = i.velocity * b, f = i.translate + ht; if (nt && (f = -f), k = !1, v = Math.abs(i.velocity) * 20 * u.freeModeMomentumBounceRatio, f < i.maxTranslate()) u.freeModeMomentumBounce ? (f + i.maxTranslate() < -v && (f = i.maxTranslate() - v), d = i.maxTranslate(), k = !0, r.allowMomentumBounce = !0) : f = i.maxTranslate(), u.loop && u.centeredSlides && (rt = !0); else if (f > i.minTranslate()) u.freeModeMomentumBounce ? (f - i.minTranslate() > v && (f = i.minTranslate() + v), d = i.minTranslate(), k = !0, r.allowMomentumBounce = !0) : f = i.minTranslate(), u.loop && u.centeredSlides && (rt = !0); else if (u.freeModeSticky) { for (p = 0; p < h.length; p += 1) if (h[p] > -f) { y = p; break } f = Math.abs(h[y] - f) < Math.abs(h[y - 1] - f) || i.swipeDirection === "next" ? h[y] : h[y - 1]; f = -f } if (rt) i.once("transitionEnd", function() { i.loopFix() }); if (i.velocity !== 0) b = nt ? Math.abs(( - f - i.translate) / i.velocity) : Math.abs((f - i.translate) / i.velocity); else if (u.freeModeSticky) { i.slideToClosest(); return } u.freeModeMomentumBounce && k ? (i.updateProgress(d), i.setTransition(b), i.setTranslate(f), i.transitionStart(!0, i.swipeDirection), i.animating = !0, tt.transitionEnd(function() { i && !i.destroyed && r.allowMomentumBounce && (i.emit("momentumBounce"), i.setTransition(u.speed), i.setTranslate(d), tt.transitionEnd(function() { i && !i.destroyed && i.transitionEnd() })) })) : i.velocity ? (i.updateProgress(f), i.setTransition(b), i.setTranslate(f), i.transitionStart(!0, i.swipeDirection), i.animating || (i.animating = !0, tt.transitionEnd(function() { i && !i.destroyed && i.transitionEnd() }))) : i.updateProgress(f); i.updateActiveIndex(); i.updateSlidesClasses() } else if (u.freeModeSticky) { i.slideToClosest(); return } (!u.freeModeMomentum || a >= u.longSwipesMs) && (i.updateProgress(), i.updateActiveIndex(), i.updateSlidesClasses()); return } for (s = 0, g = i.slidesSizesGrid[0], o = 0; o < e.length; o += u.slidesPerGroup) typeof e[o + u.slidesPerGroup] != "undefined" ? l >= e[o] && l < e[o + u.slidesPerGroup] && (s = o, g = e[o + u.slidesPerGroup] - e[o]) : l >= e[o] && (s = o, g = e[e.length - 1] - e[e.length - 2]); if (ut = (l - e[s]) / g, a > u.longSwipesMs) { if (!u.longSwipes) { i.slideTo(i.activeIndex); return } i.swipeDirection === "next" && (ut >= u.longSwipesRatio ? i.slideTo(s + u.slidesPerGroup) : i.slideTo(s)); i.swipeDirection === "prev" && (ut > 1 - u.longSwipesRatio ? i.slideTo(s + u.slidesPerGroup) : i.slideTo(s)) } else { if (!u.shortSwipes) { i.slideTo(i.activeIndex); return } i.swipeDirection === "next" && i.slideTo(s + u.slidesPerGroup); i.swipeDirection === "prev" && i.slideTo(s) } } function st() { var n = this, t = n.params, i = n.el, r; if (!i || i.offsetWidth !== 0) { t.breakpoints && n.setBreakpoint(); var u = n.allowSlideNext, f = n.allowSlidePrev, e = n.snapGrid; n.allowSlideNext = !0; n.allowSlidePrev = !0; n.updateSize(); n.updateSlides(); t.freeMode ? (r = Math.min(Math.max(n.translate, n.maxTranslate()), n.minTranslate()), n.setTranslate(r), n.updateActiveIndex(), n.updateSlidesClasses(), t.autoHeight && n.updateAutoHeight()) : (n.updateSlidesClasses(), (t.slidesPerView === "auto" || t.slidesPerView > 1) && n.isEnd && !n.params.centeredSlides ? n.slideTo(n.slides.length - 1, 0, !1, !0) : n.slideTo(n.activeIndex, 0, !1, !0)); n.autoplay && n.autoplay.running && n.autoplay.paused && n.autoplay.run(); n.allowSlidePrev = f; n.allowSlideNext = u; n.params.watchOverflow && e !== n.snapGrid && n.checkOverflow() } } function sf(n) { var t = this; t.allowClick || (t.params.preventClicks && n.preventDefault(), t.params.preventClicksPropagation && t.animating && (n.stopPropagation(), n.stopImmediatePropagation())) } function hf() {} function cf() { var n = this, t = n.params, i = n.touchEvents, h = n.el, c = n.wrapperEl, f, o, s; n.onTouchStart = ff.bind(n); n.onTouchMove = ef.bind(n); n.onTouchEnd = of.bind(n); n.onClick = sf.bind(n); f = t.touchEventsTarget === "container" ? h: c; o = !!t.nested; ! u.touch && (u.pointerEvents || u.prefixedPointerEvents) ? (f.addEventListener(i.start, n.onTouchStart, !1), r.addEventListener(i.move, n.onTouchMove, o), r.addEventListener(i.end, n.onTouchEnd, !1)) : (u.touch && (s = i.start === "touchstart" && u.passiveListener && t.passiveListeners ? { passive: !0, capture: !1 }: !1, f.addEventListener(i.start, n.onTouchStart, s), f.addEventListener(i.move, n.onTouchMove, u.passiveListener ? { passive: !1, capture: o }: o), f.addEventListener(i.end, n.onTouchEnd, s), w || (r.addEventListener("touchstart", hf), w = !0)), (t.simulateTouch && !e.ios && !e.android || t.simulateTouch && !u.touch && e.ios) && (f.addEventListener("mousedown", n.onTouchStart, !1), r.addEventListener("mousemove", n.onTouchMove, o), r.addEventListener("mouseup", n.onTouchEnd, !1))); (t.preventClicks || t.preventClicksPropagation) && f.addEventListener("click", n.onClick, !0); n.on(e.ios || e.android ? "resize orientationchange observerUpdate": "resize observerUpdate", st, !0) } function lf() { var n = this, t = n.params, i = n.touchEvents, h = n.el, c = n.wrapperEl, f = t.touchEventsTarget === "container" ? h: c, o = !!t.nested, s; ! u.touch && (u.pointerEvents || u.prefixedPointerEvents) ? (f.removeEventListener(i.start, n.onTouchStart, !1), r.removeEventListener(i.move, n.onTouchMove, o), r.removeEventListener(i.end, n.onTouchEnd, !1)) : (u.touch && (s = i.start === "onTouchStart" && u.passiveListener && t.passiveListeners ? { passive: !0, capture: !1 }: !1, f.removeEventListener(i.start, n.onTouchStart, s), f.removeEventListener(i.move, n.onTouchMove, o), f.removeEventListener(i.end, n.onTouchEnd, s)), (t.simulateTouch && !e.ios && !e.android || t.simulateTouch && !u.touch && e.ios) && (f.removeEventListener("mousedown", n.onTouchStart, !1), r.removeEventListener("mousemove", n.onTouchMove, o), r.removeEventListener("mouseup", n.onTouchEnd, !1))); (t.preventClicks || t.preventClicksPropagation) && f.removeEventListener("click", n.onClick, !0); n.off(e.ios || e.android ? "resize orientationchange observerUpdate": "resize observerUpdate", st) } function af() { var n = this, c = n.activeIndex, s = n.initialized, o = n.loopedSlides, f, i, u, r; if ((o === void 0 && (o = 0), f = n.params, i = f.breakpoints, i && (!i || Object.keys(i).length !== 0)) && (u = n.getBreakpoint(i), u && n.currentBreakpoint !== u)) { r = u in i ? i[u] : undefined; r && ["slidesPerView", "spaceBetween", "slidesPerGroup"].forEach(function(n) { var t = r[n]; typeof t != "undefined" && (r[n] = n === "slidesPerView" && (t === "AUTO" || t === "auto") ? "auto": n === "slidesPerView" ? parseFloat(t) : parseInt(t, 10)) }); var e = r || n.originalParams, h = e.direction && e.direction !== f.direction, l = f.loop && (e.slidesPerView !== f.slidesPerView || h); h && s && n.changeDirection(); t.extend(n.params, e); t.extend(n, { allowTouchMove: n.params.allowTouchMove, allowSlideNext: n.params.allowSlideNext, allowSlidePrev: n.params.allowSlidePrev }); n.currentBreakpoint = u; l && s && (n.loopDestroy(), n.loopCreate(), n.updateSlides(), n.slideTo(c - o + n.loopedSlides, 0, !1)); n.emit("breakpoint", e) } } function vf(n) { var e = this, t, r, f, u; if (!n) return undefined; for (t = !1, r = [], Object.keys(n).forEach(function(n) { r.push(n) }), r.sort(function(n, t) { return parseInt(n, 10) - parseInt(t, 10) }), f = 0; f < r.length; f += 1) u = r[f], e.params.breakpointsInverse ? u <= i.innerWidth && (t = u) : u >= i.innerWidth && !t && (t = u); return t || "max" } function yf() { var i = this, r = i.classNames, t = i.params, f = i.rtl, s = i.$el, n = []; n.push("initialized"); n.push(t.direction); t.freeMode && n.push("free-mode"); u.flexbox || n.push("no-flexbox"); t.autoHeight && n.push("autoheight"); f && n.push("rtl"); t.slidesPerColumn > 1 && n.push("multirow"); e.android && n.push("android"); e.ios && n.push("ios"); (o.isIE || o.isEdge) && (u.pointerEvents || u.prefixedPointerEvents) && n.push("wp8-" + t.direction); n.forEach(function(n) { r.push(t.containerModifierClass + n) }); s.addClass(r.join(" ")) } function pf() { var n = this, t = n.$el, i = n.classNames; t.removeClass(i.join(" ")) } function wf(n, t, r, u, f, e) { function s() { e && e() } var o; n.complete && f ? s() : t ? (o = new i.Image, o.onload = s, o.onerror = s, u && (o.sizes = u), r && (o.srcset = r), t && (o.src = t)) : s() } function bf() { function r() { typeof n != "undefined" && n !== null && n && !n.destroyed && (n.imagesLoaded !== undefined && (n.imagesLoaded += 1), n.imagesLoaded === n.imagesToLoad.length && (n.params.updateOnImagesReady && n.update(), n.emit("imagesReady"))) } var n = this, i, t; for (n.imagesToLoad = n.$el.find("img"), i = 0; i < n.imagesToLoad.length; i += 1) t = n.imagesToLoad[i], n.loadImage(t, t.currentSrc || t.getAttribute("src"), t.srcset || t.getAttribute("srcset"), t.sizes || t.getAttribute("sizes"), !0, r) } function kf() { var n = this, t = n.isLocked; n.isLocked = n.snapGrid.length === 1; n.allowSlideNext = !n.isLocked; n.allowSlidePrev = !n.isLocked; t !== n.isLocked && n.emit(n.isLocked ? "lock": "unlock"); t && t !== n.isLocked && (n.isEnd = !1, n.navigation.update()) } var r = typeof document == "undefined" ? { body: {}, addEventListener: function() {}, removeEventListener: function() {}, activeElement: { blur: function() {}, nodeName: "" }, querySelector: function() { return null }, querySelectorAll: function() { return [] }, getElementById: function() { return null }, createEvent: function() { return { initEvent: function() {} } }, createElement: function() { return { children: [], childNodes: [], style: {}, setAttribute: function() {}, getElementsByTagName: function() { return [] } } }, location: { hash: "" } }: document, i = typeof window == "undefined" ? { document: r, navigator: { userAgent: "" }, location: {}, history: {}, CustomEvent: function() { return this }, addEventListener: function() {}, removeEventListener: function() {}, getComputedStyle: function() { return { getPropertyValue: function() { return "" } } }, Image: function() {}, Date: function() {}, screen: {}, setTimeout: function() {}, clearTimeout: function() {} }: window, f = function(n) { for (var i = this, t = 0; t < n.length; t += 1) i[t] = n[t]; return i.length = n.length, this }, p, tt, it, rt, ut, ft, et, ot, e, w, ht, ct, lt, at; n.fn = f.prototype; n.Class = f; n.Dom7 = f; p = { addClass: kt, removeClass: dt, hasClass: gt, toggleClass: ni, attr: ti, removeAttr: ii, data: ri, transform: ui, transition: fi, on: ei, off: oi, trigger: si, transitionEnd: hi, outerWidth: ci, outerHeight: li, offset: ai, css: yi, each: pi, html: wi, text: bi, is: ki, index: di, eq: gi, append: nr, prepend: tr, next: ir, nextAll: rr, prev: ur, prevAll: fr, parent: er, parents: or, closest: sr, find: hr, children: cr, remove: lr, add: ar, styles: vi }; Object.keys(p).forEach(function(t) { n.fn[t] = n.fn[t] || p[t] }); var t = { deleteProps: function(n) { var t = n; Object.keys(t).forEach(function(n) { try { t[n] = null } catch(i) {} try { delete t[n] } catch(i) {} }) }, nextTick: function(n, t) { return t === void 0 && (t = 0), setTimeout(n, t) }, now: function() { return Date.now() }, getTranslate: function(n, t) { t === void 0 && (t = "x"); var f, r, e, u = i.getComputedStyle(n, null); return i.WebKitCSSMatrix ? (r = u.transform || u.webkitTransform, r.split(",").length > 6 && (r = r.split(", ").map(function(n) { return n.replace(",", ".") }).join(", ")), e = new i.WebKitCSSMatrix(r === "none" ? "": r)) : (e = u.MozTransform || u.OTransform || u.MsTransform || u.msTransform || u.transform || u.getPropertyValue("transform").replace("translate(", "matrix(1, 0, 0, 1,"), f = e.toString().split(",")), t === "x" && (r = i.WebKitCSSMatrix ? e.m41: f.length === 16 ? parseFloat(f[12]) : parseFloat(f[4])), t === "y" && (r = i.WebKitCSSMatrix ? e.m42: f.length === 16 ? parseFloat(f[13]) : parseFloat(f[5])), r || 0 }, parseUrlQuery: function(n) { var e = {}, t = n || i.location.href, r, f, u, o; if (typeof t == "string" && t.length) for (t = t.indexOf("?") > -1 ? t.replace(/\S*\?/, "") : "", f = t.split("&").filter(function(n) { return n !== "" }), o = f.length, r = 0; r < o; r += 1) u = f[r].replace(/#\S+/g, "").split("="), e[decodeURIComponent(u[0])] = typeof u[1] == "undefined" ? undefined: decodeURIComponent(u[1]) || ""; return e }, isObject: function(n) { return typeof n == "object" && n !== null && n.constructor && n.constructor === Object }, extend: function() { for (var u = [], o = arguments.length, r, f, i, s, e, c, n, h; o--;) u[o] = arguments[o]; for (r = Object(u[0]), f = 1; f < u.length; f += 1) if (i = u[f], i !== undefined && i !== null) for (s = Object.keys(Object(i)), e = 0, c = s.length; e < c; e += 1) n = s[e], h = Object.getOwnPropertyDescriptor(i, n), h !== undefined && h.enumerable && (t.isObject(r[n]) && t.isObject(i[n]) ? t.extend(r[n], i[n]) : !t.isObject(r[n]) && t.isObject(i[n]) ? (r[n] = {}, t.extend(r[n], i[n])) : r[n] = i[n]); return r } }, u = function() { var n = r.createElement("div"); return { touch: i.Modernizr && i.Modernizr.touch === !0 || function() { return !! (i.navigator.maxTouchPoints > 0 || "ontouchstart" in i || i.DocumentTouch && r instanceof i.DocumentTouch) } (), pointerEvents: !!(i.navigator.pointerEnabled || i.PointerEvent || "maxTouchPoints" in i.navigator && i.navigator.maxTouchPoints > 0), prefixedPointerEvents: !!i.navigator.msPointerEnabled, transition: function() { var t = n.style; return "transition" in t || "webkitTransition" in t || "MozTransition" in t } (), transforms3d: i.Modernizr && i.Modernizr.csstransforms3d === !0 || function() { var t = n.style; return "webkitPerspective" in t || "MozPerspective" in t || "OPerspective" in t || "MsPerspective" in t || "perspective" in t } (), flexbox: function() { for (var r = n.style, i = "alignItems webkitAlignItems webkitBoxAlign msFlexAlign mozBoxAlign webkitFlexDirection msFlexDirection mozBoxDirection mozBoxOrient webkitBoxDirection webkitBoxOrient".split(" "), t = 0; t < i.length; t += 1) if (i[t] in r) return ! 0; return ! 1 } (), observer: function() { return "MutationObserver" in i || "WebkitMutationObserver" in i } (), passiveListener: function() { var n = !1, t; try { t = Object.defineProperty({}, "passive", { get: function() { n = !0 } }); i.addEventListener("testPassiveListener", null, t) } catch(u) {} return n } (), gestures: function() { return "ongesturestart" in i } () } } (), o = function() { function n() { var n = i.navigator.userAgent.toLowerCase(); return n.indexOf("safari") >= 0 && n.indexOf("chrome") < 0 && n.indexOf("android") < 0 } return { isIE: !!i.navigator.userAgent.match(/Trident/g) || !!i.navigator.userAgent.match(/MSIE/g), isEdge: !!i.navigator.userAgent.match(/Edge/g), isSafari: n(), isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(i.navigator.userAgent) } } (), s = function(n) { n === void 0 && (n = {}); var t = this; t.params = n; t.eventsListeners = {}; t.params && t.params.on && Object.keys(t.params.on).forEach(function(n) { t.on(n, t.params.on[n]) }) }, nt = { components: { configurable: !0 } }; s.prototype.on = function(n, t, i) { var r = this, u; return typeof t != "function" ? r: (u = i ? "unshift": "push", n.split(" ").forEach(function(n) { r.eventsListeners[n] || (r.eventsListeners[n] = []); r.eventsListeners[n][u](t) }), r) }; s.prototype.once = function(n, t, i) { function r() { for (var f = [], i = arguments.length; i--;) f[i] = arguments[i]; t.apply(u, f); u.off(n, r); r.f7proxy && delete r.f7proxy } var u = this; if (typeof t != "function") return u; r.f7proxy = t; return u.on(n, r, i) }; s.prototype.off = function(n, t) { var i = this; return i.eventsListeners ? (n.split(" ").forEach(function(n) { typeof t == "undefined" ? i.eventsListeners[n] = [] : i.eventsListeners[n] && i.eventsListeners[n].length && i.eventsListeners[n].forEach(function(r, u) { (r === t || r.f7proxy && r.f7proxy === t) && i.eventsListeners[n].splice(u, 1) }) }), i) : i }; s.prototype.emit = function() { for (var n = [], r = arguments.length, t, i, u, f, e; r--;) n[r] = arguments[r]; return (t = this, !t.eventsListeners) ? t: (typeof n[0] == "string" || Array.isArray(n[0]) ? (i = n[0], u = n.slice(1, n.length), f = t) : (i = n[0].events, u = n[0].data, f = n[0].context || t), e = Array.isArray(i) ? i: i.split(" "), e.forEach(function(n) { if (t.eventsListeners && t.eventsListeners[n]) { var i = []; t.eventsListeners[n].forEach(function(n) { i.push(n) }); i.forEach(function(n) { n.apply(f, u) }) } }), t) }; s.prototype.useModulesParams = function(n) { var i = this; i.modules && Object.keys(i.modules).forEach(function(r) { var u = i.modules[r]; u.params && t.extend(n, u.params) }) }; s.prototype.useModules = function(n) { n === void 0 && (n = {}); var t = this; t.modules && Object.keys(t.modules).forEach(function(i) { var r = t.modules[i], u = n[i] || {}; r.instance && Object.keys(r.instance).forEach(function(n) { var i = r.instance[n]; t[n] = typeof i == "function" ? i.bind(t) : i }); r.on && t.on && Object.keys(r.on).forEach(function(n) { t.on(n, r.on[n]) }); r.create && r.create.bind(t)(u) }) }; nt.components.set = function(n) { var t = this; t.use && t.use(n) }; s.installModule = function(n) { for (var u = [], r = arguments.length - 1, i, f; r-->0;) u[r] = arguments[r + 1]; return i = this, i.prototype.modules || (i.prototype.modules = {}), f = n.name || Object.keys(i.prototype.modules).length + "_" + t.now(), i.prototype.modules[f] = n, n.proto && Object.keys(n.proto).forEach(function(t) { i.prototype[t] = n.proto[t] }), n.static && Object.keys(n.static).forEach(function(t) { i[t] = n.static[t] }), n.install && n.install.apply(i, u), i }; s.use = function(n) { for (var r = [], i = arguments.length - 1, t; i-->0;) r[i] = arguments[i + 1]; return (t = this, Array.isArray(n)) ? (n.forEach(function(n) { return t.installModule(n) }), t) : t.installModule.apply(t, [n].concat(r)) }; Object.defineProperties(s, nt); tt = { updateSize: vr, updateSlides: yr, updateAutoHeight: pr, updateSlidesOffset: wr, updateSlidesProgress: br, updateProgress: kr, updateSlidesClasses: dr, updateActiveIndex: gr, updateClickedSlide: nu }; it = { getTranslate: tu, setTranslate: iu, minTranslate: ru, maxTranslate: uu }; rt = { setTransition: fu, transitionStart: eu, transitionEnd: ou }; ut = { slideTo: su, slideToLoop: hu, slideNext: cu, slidePrev: lu, slideReset: au, slideToClosest: vu, slideToClickedSlide: yu }; ft = { loopCreate: pu, loopFix: wu, loopDestroy: bu }; et = { setGrabCursor: ku, unsetGrabCursor: du }; ot = { appendSlide: gu, prependSlide: nf, addSlide: tf, removeSlide: rf, removeAllSlides: uf }; e = function() { var t = i.navigator.userAgent, n = { ios: !1, android: !1, androidChrome: !1, desktop: !1, windows: !1, iphone: !1, ipod: !1, ipad: !1, cordova: i.cordova || i.phonegap, phonegap: i.cordova || i.phonegap }, s = t.match(/(Windows Phone);?[\s\/]+([\d.]+)?/), c = t.match(/(Android);?[\s\/]+([\d.]+)?/), f = t.match(/(iPad).*OS\s([\d_]+)/), u = t.match(/(iPod)(.*OS\s([\d_]+))?/), e = !f && t.match(/(iPhone\sOS|iOS)\s([\d_]+)/), o, h; return s && (n.os = "windows", n.osVersion = s[2], n.windows = !0), c && !s && (n.os = "android", n.osVersion = c[2], n.android = !0, n.androidChrome = t.toLowerCase().indexOf("chrome") >= 0), (f || e || u) && (n.os = "ios", n.ios = !0), e && !u && (n.osVersion = e[2].replace(/_/g, "."), n.iphone = !0), f && (n.osVersion = f[2].replace(/_/g, "."), n.ipad = !0), u && (n.osVersion = u[3] ? u[3].replace(/_/g, ".") : null, n.iphone = !0), n.ios && n.osVersion && t.indexOf("Version/") >= 0 && n.osVersion.split(".")[0] === "10" && (n.osVersion = t.toLowerCase().split("version/")[1].split(" ")[0]), n.desktop = !(n.os || n.android || n.webView), n.webView = (e || f || u) && t.match(/.*AppleWebKit(?!.*Safari)/i), n.os && n.os === "ios" && (o = n.osVersion.split("."), h = r.querySelector('meta[name="viewport"]'), n.minimalUi = !n.webView && (u || e) && (o[0] * 1 == 7 ? o[1] * 1 >= 1 : o[0] * 1 > 7) && h && h.getAttribute("content").indexOf("minimal-ui") >= 0), n.pixelRatio = i.devicePixelRatio || 1, n } (); w = !1; ht = { attachEvents: cf, detachEvents: lf }; ct = { setBreakpoint: af, getBreakpoint: vf }; lt = { addClasses: yf, removeClasses: pf }; at = { loadImage: wf, preloadImages: bf }; var df = { checkOverflow: kf }, vt = { init: !0, direction: "horizontal", touchEventsTarget: "container", initialSlide: 0, speed: 300, preventInteractionOnTransition: !1, edgeSwipeDetection: !1, edgeSwipeThreshold: 20, freeMode: !1, freeModeMomentum: !0, freeModeMomentumRatio: 1, freeModeMomentumBounce: !0, freeModeMomentumBounceRatio: 1, freeModeMomentumVelocityRatio: 1, freeModeSticky: !1, freeModeMinimumVelocity: .02, autoHeight: !1, setWrapperSize: !1, virtualTranslate: !1, effect: "slide", breakpoints: undefined, breakpointsInverse: !1, spaceBetween: 0, slidesPerView: 1, slidesPerColumn: 1, slidesPerColumnFill: "column", slidesPerGroup: 1, centeredSlides: !1, slidesOffsetBefore: 0, slidesOffsetAfter: 0, normalizeSlideIndex: !0, centerInsufficientSlides: !1, watchOverflow: !1, roundLengths: !1, touchRatio: 1, touchAngle: 45, simulateTouch: !0, shortSwipes: !0, longSwipes: !0, longSwipesRatio: .5, longSwipesMs: 300, followFinger: !0, allowTouchMove: !0, threshold: 0, touchMoveStopPropagation: !0, touchStartPreventDefault: !0, touchStartForcePreventDefault: !1, touchReleaseOnEdges: !1, uniqueNavElements: !0, resistance: !0, resistanceRatio: .85, watchSlidesProgress: !1, watchSlidesVisibility: !1, grabCursor: !1, preventClicks: !0, preventClicksPropagation: !0, slideToClickedSlide: !1, preloadImages: !0, updateOnImagesReady: !0, loop: !1, loopAdditionalSlides: 0, loopedSlides: null, loopFillGroupWithBlank: !1, allowSlidePrev: !0, allowSlideNext: !0, swipeHandler: null, noSwiping: !0, noSwipingClass: "swiper-no-swiping", noSwipingSelector: null, passiveListeners: !0, containerModifierClass: "swiper-container-", slideClass: "swiper-slide", slideBlankClass: "swiper-slide-invisible-blank", slideActiveClass: "swiper-slide-active", slideDuplicateActiveClass: "swiper-slide-duplicate-active", slideVisibleClass: "swiper-slide-visible", slideDuplicateClass: "swiper-slide-duplicate", slideNextClass: "swiper-slide-next", slideDuplicateNextClass: "swiper-slide-duplicate-next", slidePrevClass: "swiper-slide-prev", slideDuplicatePrevClass: "swiper-slide-duplicate-prev", wrapperClass: "swiper-wrapper", runCallbacksOnInit: !0 }, b = { update: tt, translate: it, transition: rt, slide: ut, loop: ft, grabCursor: et, manipulation: ot, events: ht, breakpoints: ct, checkOverflow: df, classes: lt, images: at }, k = {}, h = function(i) { function r() { for (var l, h = [], a = arguments.length, o, e, f, v, s, y, c; a--;) h[a] = arguments[a]; return (h.length === 1 && h[0].constructor && h[0].constructor === Object ? e = h[0] : (l = h, o = l[0], e = l[1]), e || (e = {}), e = t.extend({}, e), o && !e.el && (e.el = o), i.call(this, e), Object.keys(b).forEach(function(n) { Object.keys(b[n]).forEach(function(t) { r.prototype[t] || (r.prototype[t] = b[n][t]) }) }), f = this, typeof f.modules == "undefined" && (f.modules = {}), Object.keys(f.modules).forEach(function(n) { var r = f.modules[n], t, i; if (r.params) { if (t = Object.keys(r.params)[0], i = r.params[t], typeof i != "object" || i === null) return; if (! (t in e && "enabled" in i)) return; e[t] === !0 && (e[t] = { enabled: !0 }); typeof e[t] != "object" || "enabled" in e[t] || (e[t].enabled = !0); e[t] || (e[t] = { enabled: !1 }) } }), v = t.extend({}, vt), f.useModulesParams(v), f.params = t.extend({}, v, k, e), f.originalParams = t.extend({}, f.params), f.passedParams = t.extend({}, e), f.$ = n, s = n(f.params.el), o = s[0], !o) ? undefined: s.length > 1 ? (y = [], s.each(function(n, i) { var u = t.extend({}, e, { el: i }); y.push(new r(u)) }), y) : (o.swiper = f, s.data("swiper", f), c = s.children("." + f.params.wrapperClass), t.extend(f, { $el: s, el: o, $wrapperEl: c, wrapperEl: c[0], classNames: [], slides: n(), slidesGrid: [], snapGrid: [], slidesSizesGrid: [], isHorizontal: function() { return f.params.direction === "horizontal" }, isVertical: function() { return f.params.direction === "vertical" }, rtl: o.dir.toLowerCase() === "rtl" || s.css("direction") === "rtl", rtlTranslate: f.params.direction === "horizontal" && (o.dir.toLowerCase() === "rtl" || s.css("direction") === "rtl"), wrongRTL: c.css("display") === "-webkit-box", activeIndex: 0, realIndex: 0, isBeginning: !0, isEnd: !1, translate: 0, previousTranslate: 0, progress: 0, velocity: 0, animating: !1, allowSlideNext: f.params.allowSlideNext, allowSlidePrev: f.params.allowSlidePrev, touchEvents: function() { var t = ["touchstart", "touchmove", "touchend"], n = ["mousedown", "mousemove", "mouseup"]; return u.pointerEvents ? n = ["pointerdown", "pointermove", "pointerup"] : u.prefixedPointerEvents && (n = ["MSPointerDown", "MSPointerMove", "MSPointerUp"]), f.touchEventsTouch = { start: t[0], move: t[1], end: t[2] }, f.touchEventsDesktop = { start: n[0], move: n[1], end: n[2] }, u.touch || !f.params.simulateTouch ? f.touchEventsTouch: f.touchEventsDesktop } (), touchEventsData: { isTouched: undefined, isMoved: undefined, allowTouchCallbacks: undefined, touchStartTime: undefined, isScrolling: undefined, currentTranslate: undefined, startTranslate: undefined, allowThresholdMove: undefined, formElements: "input, select, option, textarea, button, video", lastClickTime: t.now(), clickTimeout: undefined, velocities: [], allowMomentumBounce: undefined, isTouchEvent: undefined, startMoving: undefined }, allowClick: !0, allowTouchMove: f.params.allowTouchMove, touches: { startX: 0, startY: 0, currentX: 0, currentY: 0, diff: 0 }, imagesToLoad: [], imagesLoaded: 0 }), f.useModules(), f.params.init && f.init(), f) } i && (r.__proto__ = i); r.prototype = Object.create(i && i.prototype); r.prototype.constructor = r; var f = { extendedDefaults: { configurable: !0 }, defaults: { configurable: !0 }, Class: { configurable: !0 }, $: { configurable: !0 } }; return r.prototype.slidesPerViewDynamic = function() { var t = this, l = t.params, n = t.slides, c = t.slidesGrid, h = t.size, i = t.activeIndex, e = 1, r, o, u, f, s; if (l.centeredSlides) { for (r = n[i].swiperSlideSize, u = i + 1; u < n.length; u += 1) n[u] && !o && (r += n[u].swiperSlideSize, e += 1, r > h && (o = !0)); for (f = i - 1; f >= 0; f -= 1) n[f] && !o && (r += n[f].swiperSlideSize, e += 1, r > h && (o = !0)) } else for (s = i + 1; s < n.length; s += 1) c[s] - c[i] < h && (e += 1); return e }, r.prototype.update = function() { function r() { var t = n.rtlTranslate ? n.translate * -1 : n.translate, i = Math.min(Math.max(t, n.maxTranslate()), n.minTranslate()); n.setTranslate(i); n.updateActiveIndex(); n.updateSlidesClasses() } var n = this, i, t, u; n && !n.destroyed && (i = n.snapGrid, t = n.params, t.breakpoints && n.setBreakpoint(), n.updateSize(), n.updateSlides(), n.updateProgress(), n.updateSlidesClasses(), n.params.freeMode ? (r(), n.params.autoHeight && n.updateAutoHeight()) : (u = (n.params.slidesPerView === "auto" || n.params.slidesPerView > 1) && n.isEnd && !n.params.centeredSlides ? n.slideTo(n.slides.length - 1, 0, !1, !0) : n.slideTo(n.activeIndex, 0, !1, !0), u || r()), t.watchOverflow && i !== n.snapGrid && n.checkOverflow(), n.emit("update")) }, r.prototype.changeDirection = function(n, t) { t === void 0 && (t = !0); var i = this, r = i.params.direction; return (n || (n = r === "horizontal" ? "vertical": "horizontal"), n === r || n !== "horizontal" && n !== "vertical") ? i: (i.$el.removeClass("" + i.params.containerModifierClass + r + " wp8-" + r).addClass("" + i.params.containerModifierClass + n), (o.isIE || o.isEdge) && (u.pointerEvents || u.prefixedPointerEvents) && i.$el.addClass(i.params.containerModifierClass + "wp8-" + n), i.params.direction = n, i.slides.each(function(t, i) { n === "vertical" ? i.style.width = "": i.style.height = "" }), i.emit("changeDirection"), t && i.update(), i) }, r.prototype.init = function() { var n = this; n.initialized || (n.emit("beforeInit"), n.params.breakpoints && n.setBreakpoint(), n.addClasses(), n.params.loop && n.loopCreate(), n.updateSize(), n.updateSlides(), n.params.watchOverflow && n.checkOverflow(), n.params.grabCursor && n.setGrabCursor(), n.params.preloadImages && n.preloadImages(), n.params.loop ? n.slideTo(n.params.initialSlide + n.loopedSlides, 0, n.params.runCallbacksOnInit) : n.slideTo(n.params.initialSlide, 0, n.params.runCallbacksOnInit), n.attachEvents(), n.initialized = !0, n.emit("init")) }, r.prototype.destroy = function(n, i) { n === void 0 && (n = !0); i === void 0 && (i = !0); var r = this, u = r.params, e = r.$el, o = r.$wrapperEl, f = r.slides; return typeof r.params == "undefined" || r.destroyed ? null: (r.emit("beforeDestroy"), r.initialized = !1, r.detachEvents(), u.loop && r.loopDestroy(), i && (r.removeClasses(), e.removeAttr("style"), o.removeAttr("style"), f && f.length && f.removeClass([u.slideVisibleClass, u.slideActiveClass, u.slideNextClass, u.slidePrevClass].join(" ")).removeAttr("style").removeAttr("data-swiper-slide-index").removeAttr("data-swiper-column").removeAttr("data-swiper-row")), r.emit("destroy"), Object.keys(r.eventsListeners).forEach(function(n) { r.off(n) }), n !== !1 && (r.$el[0].swiper = null, r.$el.data("swiper", null), t.deleteProps(r)), r.destroyed = !0, null) }, r.extendDefaults = function(n) { t.extend(k, n) }, f.extendedDefaults.get = function() { return k }, f.defaults.get = function() { return vt }, f.Class.get = function() { return i }, f.$.get = function() { return n }, Object.defineProperties(r, f), r } (s), gf = { name: "device", proto: { device: e }, "static": { device: e } }, ne = { name: "support", proto: { support: u }, "static": { support: u } }, te = { name: "browser", proto: { browser: o }, "static": { browser: o } }, ie = { name: "resize", create: function() { var n = this; t.extend(n, { resize: { resizeHandler: function() { n && !n.destroyed && n.initialized && (n.emit("beforeResize"), n.emit("resize")) }, orientationChangeHandler: function() { n && !n.destroyed && n.initialized && n.emit("orientationchange") } } }) }, on: { init: function() { var n = this; i.addEventListener("resize", n.resize.resizeHandler); i.addEventListener("orientationchange", n.resize.orientationChangeHandler) }, destroy: function() { var n = this; i.removeEventListener("resize", n.resize.resizeHandler); i.removeEventListener("orientationchange", n.resize.orientationChangeHandler) } } }, l = { func: i.MutationObserver || i.WebkitMutationObserver, attach: function(n, t) { t === void 0 && (t = {}); var r = this, f = l.func, u = new f(function(n) { if (n.length === 1) { r.emit("observerUpdate", n[0]); return } var t = function() { r.emit("observerUpdate", n[0]) }; i.requestAnimationFrame ? i.requestAnimationFrame(t) : i.setTimeout(t, 0) }); u.observe(n, { attributes: typeof t.attributes == "undefined" ? !0 : t.attributes, childList: typeof t.childList == "undefined" ? !0 : t.childList, characterData: typeof t.characterData == "undefined" ? !0 : t.characterData }); r.observer.observers.push(u) }, init: function() { var n = this, i, t; if (u.observer && n.params.observer) { if (n.params.observeParents) for (i = n.$el.parents(), t = 0; t < i.length; t += 1) n.observer.attach(i[t]); n.observer.attach(n.$el[0], { childList: n.params.observeSlideChildren }); n.observer.attach(n.$wrapperEl[0], { attributes: !1 }) } }, destroy: function() { var n = this; n.observer.observers.forEach(function(n) { n.disconnect() }); n.observer.observers = [] } }, re = { name: "observer", params: { observer: !1, observeParents: !1, observeSlideChildren: !1 }, create: function() { var n = this; t.extend(n, { observer: { init: l.init.bind(n), attach: l.attach.bind(n), destroy: l.destroy.bind(n), observers: [] } }) }, on: { init: function() { var n = this; n.observer.init() }, destroy: function() { var n = this; n.observer.destroy() } } }; var c = { update: function() { var n = this, t = n.params.navigation; if (!n.params.loop) { var u = n.navigation, i = u.$nextEl, r = u.$prevEl; r && r.length > 0 && (n.isBeginning ? r.addClass(t.disabledClass) : r.removeClass(t.disabledClass), r[n.params.watchOverflow && n.isLocked ? "addClass": "removeClass"](t.lockClass)); i && i.length > 0 && (n.isEnd ? i.addClass(t.disabledClass) : i.removeClass(t.disabledClass), i[n.params.watchOverflow && n.isLocked ? "addClass": "removeClass"](t.lockClass)) } }, onPrevClick: function(n) { var t = this; (n.preventDefault(), !t.isBeginning || t.params.loop) && t.slidePrev() }, onNextClick: function(n) { var t = this; (n.preventDefault(), !t.isEnd || t.params.loop) && t.slideNext() }, init: function() { var r = this, i = r.params.navigation, u, f; if (i.nextEl || i.prevEl) { if (i.nextEl && (u = n(i.nextEl), r.params.uniqueNavElements && typeof i.nextEl == "string" && u.length > 1 && r.$el.find(i.nextEl).length === 1 && (u = r.$el.find(i.nextEl))), i.prevEl && (f = n(i.prevEl), r.params.uniqueNavElements && typeof i.prevEl == "string" && f.length > 1 && r.$el.find(i.prevEl).length === 1 && (f = r.$el.find(i.prevEl))), u && u.length > 0) u.on("click", r.navigation.onNextClick); if (f && f.length > 0) f.on("click", r.navigation.onPrevClick); t.extend(r.navigation, { $nextEl: u, nextEl: u && u[0], $prevEl: f, prevEl: f && f[0] }) } }, destroy: function() { var n = this, r = n.navigation, t = r.$nextEl, i = r.$prevEl; t && t.length && (t.off("click", n.navigation.onNextClick), t.removeClass(n.params.navigation.disabledClass)); i && i.length && (i.off("click", n.navigation.onPrevClick), i.removeClass(n.params.navigation.disabledClass)) } }, ue = { name: "navigation", params: { navigation: { nextEl: null, prevEl: null, hideOnClick: !1, disabledClass: "swiper-button-disabled", hiddenClass: "swiper-button-hidden", lockClass: "swiper-button-lock" } }, create: function() { var n = this; t.extend(n, { navigation: { init: c.init.bind(n), update: c.update.bind(n), destroy: c.destroy.bind(n), onNextClick: c.onNextClick.bind(n), onPrevClick: c.onPrevClick.bind(n) } }) }, on: { init: function() { var n = this; n.navigation.init(); n.navigation.update() }, toEdge: function() { var n = this; n.navigation.update() }, fromEdge: function() { var n = this; n.navigation.update() }, destroy: function() { var n = this; n.navigation.destroy() }, click: function(t) { var i = this, e = i.navigation, r = e.$nextEl, u = e.$prevEl, f; ! i.params.navigation.hideOnClick || n(t.target).is(u) || n(t.target).is(r) || (r ? f = r.hasClass(i.params.navigation.hiddenClass) : u && (f = u.hasClass(i.params.navigation.hiddenClass)), f === !0 ? i.emit("navigationShow", i) : i.emit("navigationHide", i), r && r.toggleClass(i.params.navigation.hiddenClass), u && u.toggleClass(i.params.navigation.hiddenClass)) } } }, a = { update: function() { var t = this, d = t.rtl, i = t.params.pagination, u, e, s, l, a, v, y, h, p; if (i.el && t.pagination.el && t.pagination.$el && t.pagination.$el.length !== 0) { var c = t.virtual && t.params.virtual.enabled ? t.virtual.slides.length: t.slides.length, f = t.pagination.$el, r, o = t.params.loop ? Math.ceil((c - t.loopedSlides * 2) / t.params.slidesPerGroup) : t.snapGrid.length; if (t.params.loop ? (r = Math.ceil((t.activeIndex - t.loopedSlides) / t.params.slidesPerGroup), r > c - 1 - t.loopedSlides * 2 && (r -= c - t.loopedSlides * 2), r > o - 1 && (r -= o), r < 0 && t.params.paginationType !== "bullets" && (r = o + r)) : r = typeof t.snapIndex != "undefined" ? t.snapIndex: t.activeIndex || 0, i.type === "bullets" && t.pagination.bullets && t.pagination.bullets.length > 0) { if (u = t.pagination.bullets, i.dynamicBullets && (t.pagination.bulletSize = u.eq(0)[t.isHorizontal() ? "outerWidth": "outerHeight"](!0), f.css(t.isHorizontal() ? "width": "height", t.pagination.bulletSize * (i.dynamicMainBullets + 4) + "px"), i.dynamicMainBullets > 1 && t.previousIndex !== undefined && (t.pagination.dynamicBulletIndex += r - t.previousIndex, t.pagination.dynamicBulletIndex > i.dynamicMainBullets - 1 ? t.pagination.dynamicBulletIndex = i.dynamicMainBullets - 1 : t.pagination.dynamicBulletIndex < 0 && (t.pagination.dynamicBulletIndex = 0)), e = r - t.pagination.dynamicBulletIndex, s = e + (Math.min(u.length, i.dynamicMainBullets) - 1), l = (s + e) / 2), u.removeClass(i.bulletActiveClass + " " + i.bulletActiveClass + "-next " + i.bulletActiveClass + "-next-next " + i.bulletActiveClass + "-prev " + i.bulletActiveClass + "-prev-prev " + i.bulletActiveClass + "-main"), f.length > 1) u.each(function(t, u) { var f = n(u), o = f.index(); o === r && f.addClass(i.bulletActiveClass); i.dynamicBullets && (o >= e && o <= s && f.addClass(i.bulletActiveClass + "-main"), o === e && f.prev().addClass(i.bulletActiveClass + "-prev").prev().addClass(i.bulletActiveClass + "-prev-prev"), o === s && f.next().addClass(i.bulletActiveClass + "-next").next().addClass(i.bulletActiveClass + "-next-next")) }); else if (a = u.eq(r), a.addClass(i.bulletActiveClass), i.dynamicBullets) { for (v = u.eq(e), y = u.eq(s), h = e; h <= s; h += 1) u.eq(h).addClass(i.bulletActiveClass + "-main"); v.prev().addClass(i.bulletActiveClass + "-prev").prev().addClass(i.bulletActiveClass + "-prev-prev"); y.next().addClass(i.bulletActiveClass + "-next").next().addClass(i.bulletActiveClass + "-next-next") } if (i.dynamicBullets) { var g = Math.min(u.length, i.dynamicMainBullets + 4), nt = (t.pagination.bulletSize * g - t.pagination.bulletSize) / 2 - l * t.pagination.bulletSize, tt = d ? "right": "left"; u.css(t.isHorizontal() ? tt: "top", nt + "px") } } if (i.type === "fraction" && (f.find("." + i.currentClass).text(i.formatFractionCurrent(r + 1)), f.find("." + i.totalClass).text(i.formatFractionTotal(o))), i.type === "progressbar") { p = i.progressbarOpposite ? t.isHorizontal() ? "vertical": "horizontal": t.isHorizontal() ? "horizontal": "vertical"; var w = (r + 1) / o, b = 1, k = 1; p === "horizontal" ? b = w: k = w; f.find("." + i.progressbarFillClass).transform("translate3d(0,0,0) scaleX(" + b + ") scaleY(" + k + ")").transition(t.params.speed) } i.type === "custom" && i.renderCustom ? (f.html(i.renderCustom(t, r + 1, o)), t.emit("paginationRender", t, f[0])) : t.emit("paginationUpdate", t, f[0]); f[t.params.watchOverflow && t.isLocked ? "addClass": "removeClass"](i.lockClass) } }, render: function() { var t = this, n = t.params.pagination, f, u; if (n.el && t.pagination.el && t.pagination.$el && t.pagination.$el.length !== 0) { var e = t.virtual && t.params.virtual.enabled ? t.virtual.slides.length: t.slides.length, r = t.pagination.$el, i = ""; if (n.type === "bullets") { for (f = t.params.loop ? Math.ceil((e - t.loopedSlides * 2) / t.params.slidesPerGroup) : t.snapGrid.length, u = 0; u < f; u += 1) i += n.renderBullet ? n.renderBullet.call(t, u, n.bulletClass) : "<" + n.bulletElement + ' class="' + n.bulletClass + '"><\/' + n.bulletElement + ">"; r.html(i); t.pagination.bullets = r.find("." + n.bulletClass) } n.type === "fraction" && (i = n.renderFraction ? n.renderFraction.call(t, n.currentClass, n.totalClass) : '<\/span> / <\/span>', r.html(i)); n.type === "progressbar" && (i = n.renderProgressbar ? n.renderProgressbar.call(t, n.progressbarFillClass) : '<\/span>', r.html(i)); n.type !== "custom" && t.emit("paginationRender", t.pagination.$el[0]) } }, init: function() { var u = this, i = u.params.pagination, r; if (i.el && (r = n(i.el), r.length !== 0)) { if (u.params.uniqueNavElements && typeof i.el == "string" && r.length > 1 && u.$el.find(i.el).length === 1 && (r = u.$el.find(i.el)), i.type === "bullets" && i.clickable && r.addClass(i.clickableClass), r.addClass(i.modifierClass + i.type), i.type === "bullets" && i.dynamicBullets && (r.addClass("" + i.modifierClass + i.type + "-dynamic"), u.pagination.dynamicBulletIndex = 0, i.dynamicMainBullets < 1 && (i.dynamicMainBullets = 1)), i.type === "progressbar" && i.progressbarOpposite && r.addClass(i.progressbarOppositeClass), i.clickable) r.on("click", "." + i.bulletClass, function(t) { t.preventDefault(); var i = n(this).index() * u.params.slidesPerGroup; u.params.loop && (i += u.loopedSlides); u.slideTo(i) }); t.extend(u.pagination, { $el: r, el: r[0] }) } }, destroy: function() { var n = this, t = n.params.pagination, i; t.el && n.pagination.el && n.pagination.$el && n.pagination.$el.length !== 0 && (i = n.pagination.$el, i.removeClass(t.hiddenClass), i.removeClass(t.modifierClass + t.type), n.pagination.bullets && n.pagination.bullets.removeClass(t.bulletActiveClass), t.clickable && i.off("click", "." + t.bulletClass)) } }, fe = { name: "pagination", params: { pagination: { el: null, bulletElement: "span", clickable: !1, hideOnClick: !1, renderBullet: null, renderProgressbar: null, renderFraction: null, renderCustom: null, progressbarOpposite: !1, type: "bullets", dynamicBullets: !1, dynamicMainBullets: 1, formatFractionCurrent: function(n) { return n }, formatFractionTotal: function(n) { return n }, bulletClass: "swiper-pagination-bullet", bulletActiveClass: "swiper-pagination-bullet-active", modifierClass: "swiper-pagination-", currentClass: "swiper-pagination-current", totalClass: "swiper-pagination-total", hiddenClass: "swiper-pagination-hidden", progressbarFillClass: "swiper-pagination-progressbar-fill", progressbarOppositeClass: "swiper-pagination-progressbar-opposite", clickableClass: "swiper-pagination-clickable", lockClass: "swiper-pagination-lock" } }, create: function() { var n = this; t.extend(n, { pagination: { init: a.init.bind(n), render: a.render.bind(n), update: a.update.bind(n), destroy: a.destroy.bind(n), dynamicBulletIndex: 0 } }) }, on: { init: function() { var n = this; n.pagination.init(); n.pagination.render(); n.pagination.update() }, activeIndexChange: function() { var n = this; n.params.loop ? n.pagination.update() : typeof n.snapIndex == "undefined" && n.pagination.update() }, snapIndexChange: function() { var n = this; n.params.loop || n.pagination.update() }, slidesLengthChange: function() { var n = this; n.params.loop && (n.pagination.render(), n.pagination.update()) }, snapGridLengthChange: function() { var n = this; n.params.loop || (n.pagination.render(), n.pagination.update()) }, destroy: function() { var n = this; n.pagination.destroy() }, click: function(t) { var i = this, r; i.params.pagination.el && i.params.pagination.hideOnClick && i.pagination.$el.length > 0 && !n(t.target).hasClass(i.params.pagination.bulletClass) && (r = i.pagination.$el.hasClass(i.params.pagination.hiddenClass), r === !0 ? i.emit("paginationShow", i) : i.emit("paginationHide", i), i.pagination.$el.toggleClass(i.params.pagination.hiddenClass)) } } }, d = { setTransform: function(t, i) { var s = this, v = s.rtl, f = n(t), h = v ? -1 : 1, c = f.attr("data-swiper-parallax") || "0", r = f.attr("data-swiper-parallax-x"), u = f.attr("data-swiper-parallax-y"), e = f.attr("data-swiper-parallax-scale"), o = f.attr("data-swiper-parallax-opacity"), l, a; r || u ? (r = r || "0", u = u || "0") : s.isHorizontal() ? (r = c, u = "0") : (u = c, r = "0"); r = r.indexOf("%") >= 0 ? parseInt(r, 10) * i * h + "%": r * i * h + "px"; u = u.indexOf("%") >= 0 ? parseInt(u, 10) * i + "%": u * i + "px"; typeof o != "undefined" && o !== null && (l = o - (o - 1) * (1 - Math.abs(i)), f[0].style.opacity = l); typeof e == "undefined" || e === null ? f.transform("translate3d(" + r + ", " + u + ", 0px)") : (a = e - (e - 1) * (1 - Math.abs(i)), f.transform("translate3d(" + r + ", " + u + ", 0px) scale(" + a + ")")) }, setTranslate: function() { var t = this, r = t.$el, u = t.slides, i = t.progress, f = t.snapGrid; r.children("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each(function(n, r) { t.parallax.setTransform(r, i) }); u.each(function(r, u) { var e = u.progress; t.params.slidesPerGroup > 1 && t.params.slidesPerView !== "auto" && (e += Math.ceil(r / 2) - i * (f.length - 1)); e = Math.min(Math.max(e, -1), 1); n(u).find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each(function(n, i) { t.parallax.setTransform(i, e) }) }) }, setTransition: function(t) { t === void 0 && (t = this.params.speed); var i = this, r = i.$el; r.find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each(function(i, r) { var u = n(r), f = parseInt(u.attr("data-swiper-parallax-duration"), 10) || t; t === 0 && (f = 0); u.transition(f) }) } }, ee = { name: "parallax", params: { parallax: { enabled: !1 } }, create: function() { var n = this; t.extend(n, { parallax: { setTransform: d.setTransform.bind(n), setTranslate: d.setTranslate.bind(n), setTransition: d.setTransition.bind(n) } }) }, on: { beforeInit: function() { var n = this; n.params.parallax.enabled && (n.params.watchSlidesProgress = !0, n.originalParams.watchSlidesProgress = !0) }, init: function() { var n = this; n.params.parallax.enabled && n.parallax.setTranslate() }, setTranslate: function() { var n = this; n.params.parallax.enabled && n.parallax.setTranslate() }, setTransition: function(n) { var t = this; t.params.parallax.enabled && t.parallax.setTransition(n) } } }, yt = { loadInSlide: function(t, i) { var r, u; if ((i === void 0 && (i = !0), r = this, u = r.params.lazy, typeof t != "undefined") && r.slides.length !== 0) { var o = r.virtual && r.params.virtual.enabled, f = o ? r.$wrapperEl.children("." + r.params.slideClass + '[data-swiper-slide-index="' + t + '"]') : r.slides.eq(t), e = f.find("." + u.elementClass + ":not(." + u.loadedClass + "):not(." + u.loadingClass + ")"); (!f.hasClass(u.elementClass) || f.hasClass(u.loadedClass) || f.hasClass(u.loadingClass) || (e = e.add(f[0])), e.length !== 0) && e.each(function(t, e) { var o = n(e); o.addClass(u.loadingClass); var s = o.attr("data-background"), h = o.attr("data-src"), c = o.attr("data-srcset"), l = o.attr("data-sizes"); r.loadImage(o[0], h || s, c, l, !1, function() { var n, t, e; typeof r != "undefined" && r !== null && r && (!r || r.params) && !r.destroyed && (s ? (o.css("background-image", 'url("' + s + '")'), o.removeAttr("data-background")) : (c && (o.attr("srcset", c), o.removeAttr("data-srcset")), l && (o.attr("sizes", l), o.removeAttr("data-sizes")), h && (o.attr("src", h), o.removeAttr("data-src"))), o.addClass(u.loadedClass).removeClass(u.loadingClass), f.find("." + u.preloaderClass).remove(), r.params.loop && i && (n = f.attr("data-swiper-slide-index"), f.hasClass(r.params.slideDuplicateClass) ? (t = r.$wrapperEl.children('[data-swiper-slide-index="' + n + '"]:not(.' + r.params.slideDuplicateClass + ")"), r.lazy.loadInSlide(t.index(), !1)) : (e = r.$wrapperEl.children("." + r.params.slideDuplicateClass + '[data-swiper-slide-index="' + n + '"]'), r.lazy.loadInSlide(e.index(), !1))), r.emit("lazyImageReady", f[0], o[0])) }); r.emit("lazyImageLoad", f[0], o[0]) }) } }, load: function() { function l(n) { if (c) { if (s.children("." + i.slideClass + '[data-swiper-slide-index="' + n + '"]').length) return ! 0 } else if (p[n]) return ! 0; return ! 1 } function w(t) { return c ? n(t).attr("data-swiper-slide-index") : n(t).index() } var t = this, s = t.$wrapperEl, i = t.params, p = t.slides, r = t.activeIndex, c = t.virtual && i.virtual.enabled, h = i.lazy, u = i.slidesPerView, f, e, o, v, y; if (u === "auto" && (u = 0), t.lazy.initialImageLoaded || (t.lazy.initialImageLoaded = !0), t.params.watchSlidesVisibility) s.children("." + i.slideVisibleClass).each(function(i, r) { var u = c ? n(r).attr("data-swiper-slide-index") : n(r).index(); t.lazy.loadInSlide(u) }); else if (u > 1) for (f = r; f < r + u; f += 1) l(f) && t.lazy.loadInSlide(f); else t.lazy.loadInSlide(r); if (h.loadPrevNext) if (u > 1 || h.loadPrevNextAmount && h.loadPrevNextAmount > 1) { var b = h.loadPrevNextAmount, a = u, k = Math.min(r + a + Math.max(b, a), p.length), d = Math.max(r - Math.max(a, b), 0); for (e = r + u; e < k; e += 1) l(e) && t.lazy.loadInSlide(e); for (o = d; o < r; o += 1) l(o) && t.lazy.loadInSlide(o) } else v = s.children("." + i.slideNextClass), v.length > 0 && t.lazy.loadInSlide(w(v)), y = s.children("." + i.slidePrevClass), y.length > 0 && t.lazy.loadInSlide(w(y)) } }, oe = { name: "lazy", params: { lazy: { enabled: !1, loadPrevNext: !1, loadPrevNextAmount: 1, loadOnTransitionStart: !1, elementClass: "swiper-lazy", loadingClass: "swiper-lazy-loading", loadedClass: "swiper-lazy-loaded", preloaderClass: "swiper-lazy-preloader" } }, create: function() { var n = this; t.extend(n, { lazy: { initialImageLoaded: !1, load: yt.load.bind(n), loadInSlide: yt.loadInSlide.bind(n) } }) }, on: { beforeInit: function() { var n = this; n.params.lazy.enabled && n.params.preloadImages && (n.params.preloadImages = !1) }, init: function() { var n = this; n.params.lazy.enabled && !n.params.loop && n.params.initialSlide === 0 && n.lazy.load() }, scroll: function() { var n = this; n.params.freeMode && !n.params.freeModeSticky && n.lazy.load() }, resize: function() { var n = this; n.params.lazy.enabled && n.lazy.load() }, scrollbarDragMove: function() { var n = this; n.params.lazy.enabled && n.lazy.load() }, transitionStart: function() { var n = this; n.params.lazy.enabled && (!n.params.lazy.loadOnTransitionStart && (n.params.lazy.loadOnTransitionStart || n.lazy.initialImageLoaded) || n.lazy.load()) }, transitionEnd: function() { var n = this; n.params.lazy.enabled && !n.params.lazy.loadOnTransitionStart && n.lazy.load() } } }, v = { run: function() { var n = this, i = n.slides.eq(n.activeIndex), r = n.params.autoplay.delay; i.attr("data-swiper-autoplay") && (r = i.attr("data-swiper-autoplay") || n.params.autoplay.delay); clearTimeout(n.autoplay.timeout); n.autoplay.timeout = t.nextTick(function() { n.params.autoplay.reverseDirection ? n.params.loop ? (n.loopFix(), n.slidePrev(n.params.speed, !0, !0), n.emit("autoplay")) : n.isBeginning ? n.params.autoplay.stopOnLastSlide ? n.autoplay.stop() : (n.slideTo(n.slides.length - 1, n.params.speed, !0, !0), n.emit("autoplay")) : (n.slidePrev(n.params.speed, !0, !0), n.emit("autoplay")) : n.params.loop ? (n.loopFix(), n.slideNext(n.params.speed, !0, !0), n.emit("autoplay")) : n.isEnd ? n.params.autoplay.stopOnLastSlide ? n.autoplay.stop() : (n.slideTo(0, n.params.speed, !0, !0), n.emit("autoplay")) : (n.slideNext(n.params.speed, !0, !0), n.emit("autoplay")) }, r) }, start: function() { var n = this; return typeof n.autoplay.timeout != "undefined" ? !1 : n.autoplay.running ? !1 : (n.autoplay.running = !0, n.emit("autoplayStart"), n.autoplay.run(), !0) }, stop: function() { var n = this; return n.autoplay.running ? typeof n.autoplay.timeout == "undefined" ? !1 : (n.autoplay.timeout && (clearTimeout(n.autoplay.timeout), n.autoplay.timeout = undefined), n.autoplay.running = !1, n.emit("autoplayStop"), !0) : !1 }, pause: function(n) { var t = this; t.autoplay.running && (t.autoplay.paused || (t.autoplay.timeout && clearTimeout(t.autoplay.timeout), t.autoplay.paused = !0, n !== 0 && t.params.autoplay.waitForTransition ? (t.$wrapperEl[0].addEventListener("transitionend", t.autoplay.onTransitionEnd), t.$wrapperEl[0].addEventListener("webkitTransitionEnd", t.autoplay.onTransitionEnd)) : (t.autoplay.paused = !1, t.autoplay.run()))) } }, se = { name: "autoplay", params: { autoplay: { enabled: !1, delay: 3e3, waitForTransition: !0, disableOnInteraction: !0, stopOnLastSlide: !1, reverseDirection: !1 } }, create: function() { var n = this; t.extend(n, { autoplay: { running: !1, paused: !1, run: v.run.bind(n), start: v.start.bind(n), stop: v.stop.bind(n), pause: v.pause.bind(n), onTransitionEnd: function(t) { n && !n.destroyed && n.$wrapperEl && t.target === this && (n.$wrapperEl[0].removeEventListener("transitionend", n.autoplay.onTransitionEnd), n.$wrapperEl[0].removeEventListener("webkitTransitionEnd", n.autoplay.onTransitionEnd), n.autoplay.paused = !1, n.autoplay.running ? n.autoplay.run() : n.autoplay.stop()) } } }) }, on: { init: function() { var n = this; n.params.autoplay.enabled && n.autoplay.start() }, beforeTransitionStart: function(n, t) { var i = this; i.autoplay.running && (t || !i.params.autoplay.disableOnInteraction ? i.autoplay.pause(n) : i.autoplay.stop()) }, sliderFirstMove: function() { var n = this; n.autoplay.running && (n.params.autoplay.disableOnInteraction ? n.autoplay.stop() : n.autoplay.pause()) }, destroy: function() { var n = this; n.autoplay.running && n.autoplay.stop() } } }, pt = { setTranslate: function() { for (var u, f, n = this, e = n.slides, r = 0; r < e.length; r += 1) { var t = n.slides.eq(r), o = t[0].swiperSlideOffset, i = -o; n.params.virtualTranslate || (i -= n.translate); u = 0; n.isHorizontal() || (u = i, i = 0); f = n.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(t[0].progress), 0) : 1 + Math.min(Math.max(t[0].progress, -1), 0); t.css({ opacity: f }).transform("translate3d(" + i + "px, " + u + "px, 0px)") } }, setTransition: function(n) { var t = this, r = t.slides, u = t.$wrapperEl, i; r.transition(n); t.params.virtualTranslate && n !== 0 && (i = !1, r.transitionEnd(function() { var r, n; if (!i && t && !t.destroyed) for (i = !0, t.animating = !1, r = ["webkitTransitionEnd", "transitionend"], n = 0; n < r.length; n += 1) u.trigger(r[n]) })) } }, he = { name: "effect-fade", params: { fadeEffect: { crossFade: !1 } }, create: function() { var n = this; t.extend(n, { fadeEffect: { setTranslate: pt.setTranslate.bind(n), setTransition: pt.setTransition.bind(n) } }) }, on: { beforeInit: function() { var n = this, i; n.params.effect === "fade" && (n.classNames.push(n.params.containerModifierClass + "fade"), i = { slidesPerView: 1, slidesPerColumn: 1, slidesPerGroup: 1, watchSlidesProgress: !0, spaceBetween: 0, virtualTranslate: !0 }, t.extend(n.params, i), t.extend(n.originalParams, i)) }, setTranslate: function() { var n = this; n.params.effect === "fade" && n.fadeEffect.setTranslate() }, setTransition: function(n) { var t = this; t.params.effect === "fade" && t.fadeEffect.setTransition(n) } } }, wt = { setTranslate: function() { var t = this, nt = t.$el, k = t.$wrapperEl, tt = t.slides, d = t.width, it = t.height, g = t.rtlTranslate, i = t.size, h = t.params.cubeEffect, f = t.isHorizontal(), st = t.virtual && t.params.virtual.enabled, l = 0, r, w, u, e, c, a, ut, y, p, ot; for (h.shadow && (f ? (r = k.find(".swiper-cube-shadow"), r.length === 0 && (r = n('
<\/div>'), k.append(r)), r.css({ height: d + "px" })) : (r = nt.find(".swiper-cube-shadow"), r.length === 0 && (r = n('
<\/div>'), nt.append(r)))), w = 0; w < tt.length; w += 1) { u = tt.eq(w); e = w; st && (e = parseInt(u.attr("data-swiper-slide-index"), 10)); c = e * 90; a = Math.floor(c / 360); g && (c = -c, a = Math.floor( - c / 360)); var v = Math.max(Math.min(u[0].progress, 1), -1), s = 0, rt = 0, b = 0; e % 4 == 0 ? (s = -a * 4 * i, b = 0) : (e - 1) % 4 == 0 ? (s = 0, b = -a * 4 * i) : (e - 2) % 4 == 0 ? (s = i + a * 4 * i, b = i) : (e - 3) % 4 == 0 && (s = -i, b = 3 * i + i * 4 * a); g && (s = -s); f || (rt = s, s = 0); ut = "rotateX(" + (f ? 0 : -c) + "deg) rotateY(" + (f ? c: 0) + "deg) translate3d(" + s + "px, " + rt + "px, " + b + "px)"; v <= 1 && v > -1 && (l = e * 90 + v * 90, g && (l = -e * 90 - v * 90)); u.transform(ut); h.slideShadows && (y = f ? u.find(".swiper-slide-shadow-left") : u.find(".swiper-slide-shadow-top"), p = f ? u.find(".swiper-slide-shadow-right") : u.find(".swiper-slide-shadow-bottom"), y.length === 0 && (y = n('
<\/div>'), u.append(y)), p.length === 0 && (p = n('
<\/div>'), u.append(p)), y.length && (y[0].style.opacity = Math.max( - v, 0)), p.length && (p[0].style.opacity = Math.max(v, 0))) } if (k.css({ "-webkit-transform-origin": "50% 50% -" + i / 2 + "px", "-moz-transform-origin": "50% 50% -" + i / 2 + "px", "-ms-transform-origin": "50% 50% -" + i / 2 + "px", "transform-origin": "50% 50% -" + i / 2 + "px" }), h.shadow) if (f) r.transform("translate3d(0px, " + (d / 2 + h.shadowOffset) + "px, " + -d / 2 + "px) rotateX(90deg) rotateZ(0deg) scale(" + h.shadowScale + ")"); else { var ft = Math.abs(l) - Math.floor(Math.abs(l) / 90) * 90, ht = 1.5 - (Math.sin(ft * 2 * Math.PI / 360) / 2 + Math.cos(ft * 2 * Math.PI / 360) / 2), ct = h.shadowScale, et = h.shadowScale / ht, lt = h.shadowOffset; r.transform("scale3d(" + ct + ", 1, " + et + ") translate3d(0px, " + (it / 2 + lt) + "px, " + -it / 2 / et + "px) rotateX(-90deg)") } ot = o.isSafari || o.isUiWebView ? -i / 2 : 0; k.transform("translate3d(0px,0," + ot + "px) rotateX(" + (t.isHorizontal() ? 0 : l) + "deg) rotateY(" + (t.isHorizontal() ? -l: 0) + "deg)") }, setTransition: function(n) { var t = this, i = t.$el, r = t.slides; r.transition(n).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(n); t.params.cubeEffect.shadow && !t.isHorizontal() && i.find(".swiper-cube-shadow").transition(n) } }, ce = { name: "effect-cube", params: { cubeEffect: { slideShadows: !0, shadow: !0, shadowOffset: 20, shadowScale: .94 } }, create: function() { var n = this; t.extend(n, { cubeEffect: { setTranslate: wt.setTranslate.bind(n), setTransition: wt.setTransition.bind(n) } }) }, on: { beforeInit: function() { var n = this, i; n.params.effect === "cube" && (n.classNames.push(n.params.containerModifierClass + "cube"), n.classNames.push(n.params.containerModifierClass + "3d"), i = { slidesPerView: 1, slidesPerColumn: 1, slidesPerGroup: 1, watchSlidesProgress: !0, resistanceRatio: 0, spaceBetween: 0, centeredSlides: !1, virtualTranslate: !0 }, t.extend(n.params, i), t.extend(n.originalParams, i)) }, setTranslate: function() { var n = this; n.params.effect === "cube" && n.cubeEffect.setTranslate() }, setTransition: function(n) { var t = this; t.params.effect === "cube" && t.cubeEffect.setTransition(n) } } }, bt = { setTranslate: function() { for (var g, o, s, nt, f = this, tt = f.width, it = f.height, p = f.slides, rt = f.$wrapperEl, ut = f.slidesSizesGrid, e = f.params.coverflowEffect, t = f.isHorizontal(), w = f.translate, b = t ? -w + tt / 2 : -w + it / 2, k = t ? e.rotate: -e.rotate, ft = e.depth, h = 0, et = p.length; h < et; h += 1) { var r = p.eq(h), d = ut[h], ot = r[0].swiperSlideOffset, i = (b - ot - d / 2) / d * e.modifier, c = t ? k * i: 0, l = t ? 0 : k * i, a = -ft * Math.abs(i), v = t ? 0 : e.stretch * i, y = t ? e.stretch * i: 0; Math.abs(y) < .001 && (y = 0); Math.abs(v) < .001 && (v = 0); Math.abs(a) < .001 && (a = 0); Math.abs(c) < .001 && (c = 0); Math.abs(l) < .001 && (l = 0); g = "translate3d(" + y + "px," + v + "px," + a + "px) rotateX(" + l + "deg) rotateY(" + c + "deg)"; r.transform(g); r[0].style.zIndex = -Math.abs(Math.round(i)) + 1; e.slideShadows && (o = t ? r.find(".swiper-slide-shadow-left") : r.find(".swiper-slide-shadow-top"), s = t ? r.find(".swiper-slide-shadow-right") : r.find(".swiper-slide-shadow-bottom"), o.length === 0 && (o = n('
<\/div>'), r.append(o)), s.length === 0 && (s = n('
<\/div>'), r.append(s)), o.length && (o[0].style.opacity = i > 0 ? i: 0), s.length && (s[0].style.opacity = -i > 0 ? -i: 0)) } (u.pointerEvents || u.prefixedPointerEvents) && (nt = rt[0].style, nt.perspectiveOrigin = b + "px 50%") }, setTransition: function(n) { var t = this; t.slides.transition(n).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(n) } }, le = { name: "effect-coverflow", params: { coverflowEffect: { rotate: 50, stretch: 0, depth: 100, modifier: 1, slideShadows: !0 } }, create: function() { var n = this; t.extend(n, { coverflowEffect: { setTranslate: bt.setTranslate.bind(n), setTransition: bt.setTransition.bind(n) } }) }, on: { beforeInit: function() { var n = this; n.params.effect === "coverflow" && (n.classNames.push(n.params.containerModifierClass + "coverflow"), n.classNames.push(n.params.containerModifierClass + "3d"), n.params.watchSlidesProgress = !0, n.originalParams.watchSlidesProgress = !0) }, setTranslate: function() { var n = this; n.params.effect === "coverflow" && n.coverflowEffect.setTranslate() }, setTransition: function(n) { var t = this; t.params.effect === "coverflow" && t.coverflowEffect.setTransition(n) } } }, g = { init: function() { var n = this, u = n.params, i = u.thumbs, r = n.constructor; i.swiper instanceof r ? (n.thumbs.swiper = i.swiper, t.extend(n.thumbs.swiper.originalParams, { watchSlidesProgress: !0, slideToClickedSlide: !1 }), t.extend(n.thumbs.swiper.params, { watchSlidesProgress: !0, slideToClickedSlide: !1 })) : t.isObject(i.swiper) && (n.thumbs.swiper = new r(t.extend({}, i.swiper, { watchSlidesVisibility: !0, watchSlidesProgress: !0, slideToClickedSlide: !1 })), n.thumbs.swiperCreated = !0); n.thumbs.swiper.$el.addClass(n.params.thumbs.thumbsContainerClass); n.thumbs.swiper.on("tap", n.thumbs.onThumbClick) }, onThumbClick: function() { var t = this, r = t.thumbs.swiper, o, s, u, i, f, e; r && ((o = r.clickedIndex, s = r.clickedSlide, s && n(s).hasClass(t.params.thumbs.slideThumbActiveClass)) || typeof o != "undefined" && o !== null && (u = r.params.loop ? parseInt(n(r.clickedSlide).attr("data-swiper-slide-index"), 10) : o, t.params.loop && (i = t.activeIndex, t.slides.eq(i).hasClass(t.params.slideDuplicateClass) && (t.loopFix(), t._clientLeft = t.$wrapperEl[0].clientLeft, i = t.activeIndex), f = t.slides.eq(i).prevAll('[data-swiper-slide-index="' + u + '"]').eq(0).index(), e = t.slides.eq(i).nextAll('[data-swiper-slide-index="' + u + '"]').eq(0).index(), u = typeof f == "undefined" ? e: typeof e == "undefined" ? f: e - i < i - f ? e: f), t.slideTo(u))) }, update: function(n) { var r = this, t = r.thumbs.swiper, o, i, u, f, e, s, h, c, l; if (t) if (o = t.params.slidesPerView === "auto" ? t.slidesPerViewDynamic() : t.params.slidesPerView, r.realIndex !== t.realIndex && (i = t.activeIndex, t.params.loop ? (t.slides.eq(i).hasClass(t.params.slideDuplicateClass) && (t.loopFix(), t._clientLeft = t.$wrapperEl[0].clientLeft, i = t.activeIndex), f = t.slides.eq(i).prevAll('[data-swiper-slide-index="' + r.realIndex + '"]').eq(0).index(), e = t.slides.eq(i).nextAll('[data-swiper-slide-index="' + r.realIndex + '"]').eq(0).index(), u = typeof f == "undefined" ? e: typeof e == "undefined" ? f: e - i == i - f ? i: e - i < i - f ? e: f) : u = r.realIndex, t.visibleSlidesIndexes && t.visibleSlidesIndexes.indexOf(u) < 0 && (t.params.centeredSlides ? u = u > i ? u - Math.floor(o / 2) + 1 : u + Math.floor(o / 2) - 1 : u > i && (u = u - o + 1), t.slideTo(u, n ? 0 : undefined))), s = 1, h = r.params.thumbs.slideThumbActiveClass, r.params.slidesPerView > 1 && !r.params.centeredSlides && (s = r.params.slidesPerView), t.slides.removeClass(h), t.params.loop || t.params.virtual) for (c = 0; c < s; c += 1) t.$wrapperEl.children('[data-swiper-slide-index="' + (r.realIndex + c) + '"]').addClass(h); else for (l = 0; l < s; l += 1) t.slides.eq(r.realIndex + l).addClass(h) } }, ae = { name: "thumbs", params: { thumbs: { swiper: null, slideThumbActiveClass: "swiper-slide-thumb-active", thumbsContainerClass: "swiper-container-thumbs" } }, create: function() { var n = this; t.extend(n, { thumbs: { swiper: null, init: g.init.bind(n), update: g.update.bind(n), onThumbClick: g.onThumbClick.bind(n) } }) }, on: { beforeInit: function() { var n = this, i = n.params, t = i.thumbs; t && t.swiper && (n.thumbs.init(), n.thumbs.update(!0)) }, slideChange: function() { var n = this; n.thumbs.swiper && n.thumbs.update() }, update: function() { var n = this; n.thumbs.swiper && n.thumbs.update() }, resize: function() { var n = this; n.thumbs.swiper && n.thumbs.update() }, observerUpdate: function() { var n = this; n.thumbs.swiper && n.thumbs.update() }, setTransition: function(n) { var i = this, t = i.thumbs.swiper; t && t.setTransition(n) }, beforeDestroy: function() { var t = this, n = t.thumbs.swiper; n && t.thumbs.swiperCreated && n && n.destroy() } } }, ve = [gf, ne, te, ie, re, ue, fe, ee, oe, se, he, ce, le, ae]; return typeof h.use == "undefined" && (h.use = h.Class.use, h.installModule = h.Class.installModule), h.use(ve), h }), function(n, t) { typeof exports == "object" && typeof module != "undefined" ? module.exports = t() : typeof define == "function" && define.amd ? define(t) : (n = n || self, n.LazyLoad = t()) } (this, function() { "use strict"; function l() { return l = Object.assign || function(n) { for (var i, r, t = 1; t < arguments.length; t++) { i = arguments[t]; for (r in i) Object.prototype.hasOwnProperty.call(i, r) && (n[r] = i[r]) } return n }, l.apply(this, arguments) } var u = typeof window != "undefined", it = u && !("onscroll" in window) || typeof navigator != "undefined" && /(gle|ing|ro)bot|crawl|spider/i.test(navigator.userAgent), rt = u && "IntersectionObserver" in window, ut = u && "classList" in document.createElement("p"), ft = u && window.devicePixelRatio > 1, ai = { elements_selector: ".lazy", container: it || u ? document: null, threshold: 300, thresholds: null, data_src: "src", data_srcset: "srcset", data_sizes: "sizes", data_bg: "bg", data_bg_hidpi: "bg-hidpi", data_bg_multi: "bg-multi", data_bg_multi_hidpi: "bg-multi-hidpi", data_poster: "poster", class_applied: "applied", class_loading: "loading", class_loaded: "loaded", class_error: "error", unobserve_completed: !0, unobserve_entered: !1, cancel_on_exit: !0, callback_enter: null, callback_exit: null, callback_applied: null, callback_loading: null, callback_loaded: null, callback_error: null, callback_finish: null, callback_cancel: null, use_native: !1 }, et = function(n) { return l({}, ai, n) }, ot = function(n, t) { var i, r = "LazyLoad::Initialized", u = new n(t); try { i = new CustomEvent(r, { detail: { instance: u } }) } catch(f) { i = document.createEvent("CustomEvent"); i.initCustomEvent(r, !1, !1, { instance: u }) } window.dispatchEvent(i) }, vi = function(n, t) { if (t) if (t.length) for (var i = 0, r; r = t[i]; i += 1) ot(n, r); else ot(n, t) }, a = "loading", st = "loaded", ht = "applied", yi = "entered", v = "error", ct = "native", lt = "data-", at = "ll-status", t = function(n, t) { return n.getAttribute(lt + t) }, n = function(n, t, i) { var r = lt + t; if (i === null) { n.removeAttribute(r); return } n.setAttribute(r, i) }, e = function(n) { return t(n, at) }, f = function(t, i) { return n(t, at, i) }, y = function(n) { return f(n, null) }, vt = function(n) { return e(n) === null }, pi = function(n) { return e(n) === a }, wi = function(n) { return e(n) === v }, yt = function(n) { return e(n) === ct }, bi = [a, st, ht, v], ki = function(n) { return bi.indexOf(e(n)) >= 0 }, r = function(n, t, i, r) { if (n) { if (r !== undefined) { n(t, i, r); return } if (i !== undefined) { n(t, i); return } n(t) } }, s = function(n, t) { if (ut) { n.classList.add(t); return } n.className += (n.className ? " ": "") + t }, p = function(n, t) { if (ut) { n.classList.remove(t); return } n.className = n.className.replace(new RegExp("(^|\\s+)" + t + "(\\s+|$)"), " ").replace(/^\s+/, "").replace(/\s+$/, "") }, di = function(n) { n.llTempImage = document.createElement("IMG") }, gi = function(n) { delete n.llTempImage }, pt = function(n) { return n.llTempImage }, h = function(n, t) { if (t) { var i = t._observer; i && i.unobserve(n) } }, nr = function(n) { n.disconnect() }, tr = function(n, t, i) { t.unobserve_entered && h(n, i) }, w = function(n, t) { n && (n.loadingCount += t) }, ir = function(n) { n && (n.toLoadCount -= 1) }, wt = function(n, t) { n && (n.toLoadCount = t) }, rr = function(n) { return n.loadingCount > 0 }, ur = function(n) { return n.toLoadCount > 0 }, bt = function(n) { for (var i = [], r = 0, t; t = n.children[r]; r += 1) t.tagName === "SOURCE" && i.push(t); return i }, i = function(n, t, i) { i && n.setAttribute(t, i) }, b = function(n, t) { n.removeAttribute(t) }, kt = function(n) { return !! n.llOriginalAttrs }, dt = function(n) { if (!kt(n)) { var t = {}; t.src = n.getAttribute("src"); t.srcset = n.getAttribute("srcset"); t.sizes = n.getAttribute("sizes"); n.llOriginalAttrs = t } }, gt = function(n) { if (kt(n)) { var t = n.llOriginalAttrs; i(n, "src", t.src); i(n, "srcset", t.srcset); i(n, "sizes", t.sizes) } }, ni = function(n, r) { i(n, "sizes", t(n, r.data_sizes)); i(n, "srcset", t(n, r.data_srcset)); i(n, "src", t(n, r.data_src)) }, ti = function(n) { b(n, "src"); b(n, "srcset"); b(n, "sizes") }, c = function(n, t) { var i = n.parentNode, r; i && i.tagName === "PICTURE" && (r = bt(i), r.forEach(t)) }, ii = function(n, t) { var i = bt(n); i.forEach(t) }, fr = function(n) { c(n, function(n) { gt(n) }); gt(n) }, er = function(n, t) { c(n, function(n) { dt(n); ni(n, t) }); dt(n); ni(n, t) }, or = function(n) { c(n, function(n) { ti(n) }); ti(n) }, sr = function(n, r) { i(n, "src", t(n, r.data_src)) }, hr = function(n, r) { ii(n, function(n) { i(n, "src", t(n, r.data_src)) }); i(n, "poster", t(n, r.data_poster)); i(n, "src", t(n, r.data_src)); n.load() }, cr = { IMG: er, IFRAME: sr, VIDEO: hr }, lr = function(n, i, r) { var e = t(n, i.data_bg), f = t(n, i.data_bg_hidpi), u = ft && f ? f: e; u && (n.style.backgroundImage = 'url("'.concat(u, '")'), pt(n).setAttribute("src", u), ui(n, i, r)) }, ar = function(n, i, r) { var e = t(n, i.data_bg_multi), u = t(n, i.data_bg_multi_hidpi), f = ft && u ? u: e; f && (n.style.backgroundImage = f, vr(n, i, r)) }, ri = function(n, t) { var i = cr[n.tagName]; i && i(n, t) }, vr = function(n, t, i) { s(n, t.class_applied); f(n, ht); dr(n, t); t.unobserve_completed && h(n, t); r(t.callback_applied, n, i) }, ui = function(n, t, i) { w(i, 1); s(n, t.class_loading); f(n, a); r(t.callback_loading, n, i) }, yr = function(t, i) { n(t, i.data_src, null); n(t, i.data_srcset, null); n(t, i.data_sizes, null); c(t, function(t) { n(t, i.data_srcset, null); n(t, i.data_sizes, null) }) }, pr = function(t, i) { n(t, i.data_src, null) }, wr = function(t, i) { n(t, i.data_src, null); n(t, i.data_poster, null); ii(t, function(t) { n(t, i.data_src, null) }) }, br = { IMG: yr, IFRAME: pr, VIDEO: wr }, kr = function(t, i) { n(t, i.data_bg, null); n(t, i.data_bg_hidpi, null) }, dr = function(t, i) { n(t, i.data_bg_multi, null); n(t, i.data_bg_multi_hidpi, null) }, fi = function(n, t) { var i = br[n.tagName]; if (i) { i(n, t); return } kr(n, t) }, gr = ["IMG", "IFRAME", "VIDEO"], nu = function(n) { return gr.indexOf(n.tagName) > -1 }, ei = function(n, t) { ! t || rr(t) || ur(t) || r(n.callback_finish, t) }, oi = function(n, t, i) { n.addEventListener(t, i); n.llEvLisnrs[t] = i }, tu = function(n, t, i) { n.removeEventListener(t, i) }, k = function(n) { return !! n.llEvLisnrs }, iu = function(n, t, i) { k(n) || (n.llEvLisnrs = {}); var r = n.tagName === "VIDEO" ? "loadeddata": "load"; oi(n, r, t); oi(n, "error", i) }, d = function(n) { var t, i, r; if (k(n)) { t = n.llEvLisnrs; for (i in t) r = t[i], tu(n, i, r); delete n.llEvLisnrs } }, si = function(n, t, i) { gi(n); w(i, -1); ir(i); p(n, t.class_loading); t.unobserve_completed && h(n, i) }, ru = function(n, t, i, u) { var e = yt(t); si(t, i, u); s(t, i.class_loaded); f(t, st); fi(t, i); r(i.callback_loaded, t, u); e || ei(i, u) }, uu = function(n, t, i, u) { var e = yt(t); si(t, i, u); s(t, i.class_error); f(t, v); r(i.callback_error, t, u); e || ei(i, u) }, g = function(n, t, i) { var r = pt(n) || n, u, f; k(r) || (u = function(u) { ru(u, n, t, i); d(r) }, f = function(u) { uu(u, n, t, i); d(r) }, iu(r, u, f)) }, fu = function(n, t, i) { di(n); g(n, t, i); lr(n, t, i); ar(n, t, i) }, eu = function(n, t, i) { g(n, t, i); ri(n, t); ui(n, t, i) }, nt = function(n, t, i) { nu(n) ? eu(n, t, i) : fu(n, t, i) }, ou = function(n, t, i) { g(n, t, i); ri(n, t); fi(n, t); f(n, ct) }, su = function(n, t, i, u) { i.cancel_on_exit && pi(n) && n.tagName === "IMG" && (d(n), or(n), fr(n), p(n, i.class_loading), w(u, -1), y(n), r(i.callback_cancel, n, t, u)) }, hu = function(n, t, i, u) { (f(n, yi), tr(n, i, u), r(i.callback_enter, n, t, u), ki(n)) || nt(n, i, u) }, cu = function(n, t, i, u) { vt(n) || (su(n, t, i, u), r(i.callback_exit, n, t, u)) }, lu = ["IMG", "IFRAME"], hi = function(n) { return n.use_native && "loading" in HTMLImageElement.prototype }, au = function(n, t, i) { n.forEach(function(n) { lu.indexOf(n.tagName) !== -1 && (n.setAttribute("loading", "lazy"), ou(n, t, i)) }); wt(i, 0) }, vu = function(n) { return n.isIntersecting || n.intersectionRatio > 0 }, yu = function(n) { return { root: n.container === document ? null: n.container, rootMargin: n.thresholds || n.threshold + "px" } }, pu = function(n, t, i) { n.forEach(function(n) { return vu(n) ? hu(n.target, n, t, i) : cu(n.target, n, t, i) }) }, wu = function(n, t) { t.forEach(function(t) { n.observe(t) }) }, bu = function(n, t) { nr(n); wu(n, t) }, ku = function(n, t) { rt && !hi(n) && (t._observer = new IntersectionObserver(function(i) { pu(i, n, t) }, yu(n))) }, ci = function(n) { return Array.prototype.slice.call(n) }, tt = function(n) { return n.container.querySelectorAll(n.elements_selector) }, du = function(n) { return ci(n).filter(vt) }, gu = function(n) { return wi(n) }, nf = function(n) { return ci(n).filter(gu) }, li = function(n, t) { return du(n || tt(t)) }, tf = function(n, t) { var i = nf(tt(n)); i.forEach(function(t) { p(t, n.class_error); y(t) }); t.update() }, rf = function(n, t) { u && window.addEventListener("online", function() { tf(n, t) }) }, o = function(n, t) { var i = et(n); this._settings = i; this.loadingCount = 0; ku(i, this); rf(i, this); this.update(t) }; return o.prototype = { update: function(n) { var i = this._settings, t = li(n, i); if (wt(this, t.length), it || !rt) { this.loadAll(t); return } if (hi(i)) { au(t, i, this); return } bu(this._observer, t) }, destroy: function() { this._observer && this._observer.disconnect(); tt(this._settings).forEach(function(n) { delete n.llOriginalAttrs }); delete this._observer; delete this._settings; delete this.loadingCount; delete this.toLoadCount }, loadAll: function(n) { var t = this, i = this._settings, r = li(n, i); r.forEach(function(n) { h(n, t); nt(n, i, t) }) } }, o.load = function(n, t) { var i = et(t); nt(n, i) }, o.resetStatus = function(n) { y(n) }, u && vi(o, window.lazyLoadOptions), o }); var Sticky = function() { function n() { var i = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "", t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; _classCallCheck(this, n); this.selector = i; this.elements = []; this.version = "1.3.0"; this.vp = this.getViewportSize(); this.body = document.querySelector("body"); this.options = { wrap: t.wrap || !1, wrapWith: t.wrapWith || "<\/span>", marginTop: t.marginTop || 0, marginBottom: t.marginBottom || 0, stickyFor: t.stickyFor || 0, stickyClass: t.stickyClass || null, stickyContainer: t.stickyContainer || "body" }; this.updateScrollTopPosition = this.updateScrollTopPosition.bind(this); this.updateScrollTopPosition(); window.addEventListener("load", this.updateScrollTopPosition); window.addEventListener("scroll", this.updateScrollTopPosition); this.run() } return _createClass(n, [{ key: "run", value: function() { var n = this, t = setInterval(function() { if (document.readyState === "complete") { clearInterval(t); var i = document.querySelectorAll(n.selector); n.forEach(i, function(t) { return n.renderElement(t) }) } }, 10) } }, { key: "renderElement", value: function(n) { var t = this; n.sticky = {}; n.sticky.active = !1; n.sticky.marginTop = parseInt(n.getAttribute("data-margin-top")) || this.options.marginTop; n.sticky.marginBottom = parseInt(n.getAttribute("data-margin-bottom")) || this.options.marginBottom; n.sticky.stickyFor = parseInt(n.getAttribute("data-sticky-for")) || this.options.stickyFor; n.sticky.stickyClass = n.getAttribute("data-sticky-class") || this.options.stickyClass; n.sticky.wrap = n.hasAttribute("data-sticky-wrap") ? !0 : this.options.wrap; n.sticky.stickyContainer = this.options.stickyContainer; n.sticky.container = this.getStickyContainer(n); n.sticky.container.rect = this.getRectangle(n.sticky.container); n.sticky.rect = this.getRectangle(n); n.tagName.toLowerCase() === "img" && (n.onload = function() { return n.sticky.rect = t.getRectangle(n) }); n.sticky.wrap && this.wrapElement(n); this.activate(n) } }, { key: "wrapElement", value: function(n) { n.insertAdjacentHTML("beforebegin", n.getAttribute("data-sticky-wrapWith") || this.options.wrapWith); n.previousSibling.appendChild(n) } }, { key: "activate", value: function(n) { n.sticky.rect.top + n.sticky.rect.height < n.sticky.container.rect.top + n.sticky.container.rect.height && n.sticky.stickyFor < this.vp.width && !n.sticky.active && (n.sticky.active = !0); this.elements.indexOf(n) < 0 && this.elements.push(n); n.sticky.resizeEvent || (this.initResizeEvents(n), n.sticky.resizeEvent = !0); n.sticky.scrollEvent || (this.initScrollEvents(n), n.sticky.scrollEvent = !0); this.setPosition(n) } }, { key: "initResizeEvents", value: function(n) { var t = this; n.sticky.resizeListener = function() { return t.onResizeEvents(n) }; window.addEventListener("resize", n.sticky.resizeListener) } }, { key: "destroyResizeEvents", value: function(n) { window.removeEventListener("resize", n.sticky.resizeListener) } }, { key: "onResizeEvents", value: function(n) { this.vp = this.getViewportSize(); n.sticky.rect = this.getRectangle(n); n.sticky.container.rect = this.getRectangle(n.sticky.container); n.sticky.rect.top + n.sticky.rect.height < n.sticky.container.rect.top + n.sticky.container.rect.height && n.sticky.stickyFor < this.vp.width && !n.sticky.active ? n.sticky.active = !0 : (n.sticky.rect.top + n.sticky.rect.height >= n.sticky.container.rect.top + n.sticky.container.rect.height || n.sticky.stickyFor >= this.vp.width && n.sticky.active) && (n.sticky.active = !1); this.setPosition(n) } }, { key: "initScrollEvents", value: function(n) { var t = this; n.sticky.scrollListener = function() { return t.onScrollEvents(n) }; window.addEventListener("scroll", n.sticky.scrollListener) } }, { key: "destroyScrollEvents", value: function(n) { window.removeEventListener("scroll", n.sticky.scrollListener) } }, { key: "onScrollEvents", value: function(n) { n.sticky && n.sticky.active && this.setPosition(n) } }, { key: "setPosition", value: function(n) { (this.css(n, { position: "", width: "", top: "", left: "" }), this.vp.height < n.sticky.rect.height || !n.sticky.active) || (n.sticky.rect.width || (n.sticky.rect = this.getRectangle(n)), n.sticky.wrap && this.css(n.parentNode, { display: "block", width: n.sticky.rect.width + "px", height: n.sticky.rect.height + "px" }), n.sticky.rect.top === 0 && n.sticky.container === this.body ? (this.css(n, { position: "fixed", top: n.sticky.rect.top + "px", left: n.sticky.rect.left + "px", width: n.sticky.rect.width + "px" }), n.sticky.stickyClass && n.classList.add(n.sticky.stickyClass)) : this.scrollTop > n.sticky.rect.top - n.sticky.marginTop ? (this.css(n, { position: "fixed", width: n.sticky.rect.width + "px", left: n.sticky.rect.left + "px" }), this.scrollTop + n.sticky.rect.height + n.sticky.marginTop > n.sticky.container.rect.top + n.sticky.container.offsetHeight - n.sticky.marginBottom ? (n.sticky.stickyClass && n.classList.remove(n.sticky.stickyClass), this.css(n, { top: n.sticky.container.rect.top + n.sticky.container.offsetHeight - (this.scrollTop + n.sticky.rect.height + n.sticky.marginBottom) + "px" })) : (n.sticky.stickyClass && n.classList.add(n.sticky.stickyClass), this.css(n, { top: n.sticky.marginTop + "px" }))) : (n.sticky.stickyClass && n.classList.remove(n.sticky.stickyClass), this.css(n, { position: "", width: "", top: "", left: "" }), n.sticky.wrap && this.css(n.parentNode, { display: "", width: "", height: "" }))) } }, { key: "update", value: function() { var n = this; this.forEach(this.elements, function(t) { t.sticky.rect = n.getRectangle(t); t.sticky.container.rect = n.getRectangle(t.sticky.container); n.activate(t); n.setPosition(t) }) } }, { key: "destroy", value: function() { var n = this; window.removeEventListener("load", this.updateScrollTopPosition); window.removeEventListener("scroll", this.updateScrollTopPosition); this.forEach(this.elements, function(t) { n.destroyResizeEvents(t); n.destroyScrollEvents(t); delete t.sticky }) } }, { key: "getStickyContainer", value: function(n) { for (var t = n.parentNode; ! t.hasAttribute("data-sticky-container") && !t.parentNode.querySelector(n.sticky.stickyContainer) && t !== this.body;) t = t.parentNode; return t } }, { key: "getRectangle", value: function(n) { this.css(n, { position: "", width: "", top: "", left: "" }); var r = Math.max(n.offsetWidth, n.clientWidth, n.scrollWidth), u = Math.max(n.offsetHeight, n.clientHeight, n.scrollHeight), t = 0, i = 0; do t += n.offsetTop || 0, i += n.offsetLeft || 0, n = n.offsetParent; while (n); return { top: t, left: i, width: r, height: u } } }, { key: "getViewportSize", value: function() { return { width: Math.max(document.documentElement.clientWidth, window.innerWidth || 0), height: Math.max(document.documentElement.clientHeight, window.innerHeight || 0) } } }, { key: "updateScrollTopPosition", value: function() { this.scrollTop = (window.pageYOffset || document.scrollTop) - (document.clientTop || 0) || 0 } }, { key: "forEach", value: function(n, t) { for (var i = 0, r = n.length; i < r; i++) t(n[i]) } }, { key: "css", value: function(n, t) { for (var i in t) t.hasOwnProperty(i) && (n.style[i] = t[i]) } }]), n } (); (function(n, t) { typeof exports != "undefined" ? module.exports = t: typeof define == "function" && define.amd ? define([], function() { return t }) : n.Sticky = t })(this, Sticky); window.MagicZoom = function() { function r(n) { var i = [], r = null; return n && (r = t(n)) && (i = u.filter(function(n) { return n.placeholder === r })), i.length ? i[0] : null } function et(n) { var i = t(window).jGetSize(), r = t(window).jGetScroll(); return n = n || 0, { left: n, right: i.width - n, top: n, bottom: i.height - n, x: r.x, y: r.y } } function d(n) { return Object.assign({}, n, { type: n.type, pageX: n.pageX, pageY: n.pageY, screenX: n.screenX, screenY: n.screenY, clientX: n.clientX, clientY: n.clientY, cloned: !0 }) } function f() { var r = n.$A(arguments), u = r.shift(), i = c[u], t; if (i) for (t = 0; t < i.length; t++) i[t].apply(null, r) } function ot() { var t = arguments[0], u, r, i = []; try { do r = t.tagName, /^[A-Za-z]*$/.test(r) && ((u = t.getAttribute("id")) && /^[A-Za-z][-A-Za-z0-9_]*/.test(u) && (r += "#" + u), i.push(r)), t = t.parentNode; while (t && t !== document.documentElement); i = i.reverse(); n.addCSS(i.join(" ") + "> .mz-figure > img", { transition: "none", transform: "none" }, "mz-runtime-css", !0); n.addCSS(i.join(" ") + ":not(.mz-no-rt-width-css)> .mz-figure:not(.mz-no-rt-width-css) > img", { width: "100% !important;" }, "mz-runtime-css", !0) } catch(f) {} } function st() { n.addCSS(".magic-hidden-wrapper, .magic-temporary-img", { display: "block !important", "min-height": "0 !important", "min-width": "0 !important", "max-height": "none !important", "max-width": "none !important", width: "10px !important", height: "10px !important", position: "absolute !important", top: "-10000px !important", left: "0 !important", overflow: "hidden !important", "-webkit-transform": "none !important", transform: "none !important", "-webkit-transition": "none !important", transition: "none !important" }, "magiczoom-reset-css"); n.addCSS(".magic-temporary-img img, .magic-temporary-img picture", { display: "inline-block !important", border: "0 !important", padding: "0 !important", "min-height": "0 !important", "min-width": "0 !important", "max-height": "none !important", "max-width": "none !important", "-webkit-transform": "none !important", transform: "none !important", "-webkit-transition": "none !important", transition: "none !important" }, "magiczoom-reset-css"); n.addCSS(".magic-temporary-img picture, .magic-temporary-img picture > img", { width: "auto !important", height: "auto !important" }, "magiczoom-reset-css"); n.browser.androidBrowser && n.addCSS(".mobile-magic .mz-expand .mz-expand-bg", { display: "none !important" }, "magiczoom-reset-css"); n.browser.androidBrowser && (n.browser.uaName !== "chrome" || n.browser.uaVersion === 44) && n.addCSS(".mobile-magic .mz-zoom-window.mz-magnifier, .mobile-magic .mz-zoom-window.mz-magnifier:before", { "border-radius": "0 !important" }, "magiczoom-reset-css") } var i, n, t, s, p; i = n = function() { function s(n) { var t = n.charAt(0).toUpperCase() + n.slice(1); return n in r || "Webkit" + t in r || "Moz" + t in r || "ms" + t in r || "O" + t in r } function l(t) { var i, u; return (u = n.browser.webkit && "filter" == t ? !1 : t in r, !u && (i = n.browser.cssDomPrefix + t.charAt(0).toUpperCase() + t.slice(1), i in r)) ? i: t } var t = { version: "v3.3.4", UUID: 0, storage: {}, $uuid: function(t) { return t.$J_UUID || (t.$J_UUID = ++n.UUID) }, getStorage: function(t) { return n.storage[t] || (n.storage[t] = {}) }, $F: function() {}, $false: function() { return ! 1 }, $true: function() { return ! 0 }, stylesId: "mjs-" + Math.floor(Math.random() * (new Date).getTime()), defined: function(n) { return undefined != n }, ifndef: function(n, t) { return undefined != n ? n: t }, exists: function(n) { return !! n }, jTypeOf: function(t) { if (!n.defined(t)) return ! 1; if (t.$J_TYPE) return t.$J_TYPE; if ( !! t.nodeType) { if (1 == t.nodeType) return "element"; if (3 == t.nodeType) return "textnode" } if (t.length && t.item) return "collection"; if (t.length && t.callee) return "arguments"; if ((t instanceof window.Object || t instanceof window.Function) && t.constructor === n.Class) return "class"; if (t instanceof window.Array) return "array"; if (t instanceof window.Function) return "function"; if (t instanceof window.String) return "string"; if (n.browser.trident) { if (n.defined(t.cancelBubble)) return "event" } else if (t === window.event || t.constructor == window.Event || t.constructor == window.MouseEvent || t.constructor == window.UIEvent || t.constructor == window.KeyboardEvent || t.constructor == window.KeyEvent) return "event"; return t instanceof window.Date ? "date": t instanceof window.RegExp ? "regexp": t === window ? "window": t === document ? "document": typeof t }, extend: function(t, i) { var r, f, u; if (t instanceof window.Array || (t = [t]), !i) return t[0]; for (r = 0, f = t.length; r < f; r++) if (n.defined(t)) for (u in i) if (Object.prototype.hasOwnProperty.call(i, u)) try { t[r][u] = i[u] } catch(e) {} return t[0] }, implement: function(t, i) { var r, f, u; for (t instanceof window.Array || (t = [t]), r = 0, f = t.length; r < f; r++) if (n.defined(t[r]) && t[r].prototype) for (u in i || {}) t[r].prototype[u] || (t[r].prototype[u] = i[u]); return t[0] }, nativize: function(t, i) { if (!n.defined(t)) return t; for (var r in i || {}) t[r] || (t[r] = i[r]); return t }, $try: function() { for (var n = 0, t = arguments.length; n < t; n++) try { return arguments[n]() } catch(i) {} return null }, $A: function(t) { if (!n.defined(t)) return n.$([]); if (t.toArray) return n.$(t.toArray()); if (t.item) { for (var i = t.length || 0, r = new Array(i); i--;) r[i] = t[i]; return n.$(r) } return n.$(Array.prototype.slice.call(t)) }, now: function() { return (new Date).getTime() }, detach: function(t) { var i, u, r, f; switch (n.jTypeOf(t)) { case "object": i = {}; for (u in t) i[u] = n.detach(t[u]); break; case "array": for (i = [], r = 0, f = t.length; r < f; r++) i[r] = n.detach(t[r]); break; default: return t } return n.$(i) }, $: function(t) { var r = !0, i; if (!n.defined(t)) return null; if (t.$J_EXT) return t; switch (n.jTypeOf(t)) { case "array": return t = n.nativize(t, n.extend(n.Array, { $J_EXT: n.$F })), t.jEach = t.forEach, t.contains = n.Array.contains, t; case "string": return (i = document.getElementById(t), n.defined(i)) ? n.$(i) : null; case "window": case "document": n.$uuid(t); t = n.extend(t, n.Doc); break; case "element": n.$uuid(t); t = n.extend(t, n.Element); break; case "event": t = n.extend(t, n.Event); break; case "textnode": case "function": case "array": case "date": default: r = !1 } return r ? n.extend(t, { $J_EXT: n.$F }) : t }, $new: function(t, i, r) { return n.$(n.doc.createElement(t)).setProps(i || {}).jSetCss(r || {}) }, addCSS: function(t, i, r) { var f, u, s = [], o = -1, e; if (r || (r = n.stylesId), f = n.$(r) || n.$new("style", { id: r, type: "text/css" }).jAppendTo(document.head || document.body, "top"), u = f.sheet || f.styleSheet, "string" != n.jTypeOf(i)) { for (e in i) s.push(e + ":" + i[e]); i = s.join(";") } if (u.insertRule) o = u.insertRule(t + " {" + i + "}", u.cssRules.length); else try { o = u.addRule(t, i, u.rules.length) } catch(h) {} return o }, removeCSS: function(t, i) { var u, r; (u = n.$(t), "element" === n.jTypeOf(u)) && (r = u.sheet || u.styleSheet, r.deleteRule ? r.deleteRule(i) : r.removeRule && r.removeRule(i)) }, generateUUID: function() { return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function(n) { var t = Math.random() * 16 | 0, i = n == "x" ? t: t & 3 | 8; return i.toString(16) }).toUpperCase() }, getAbsoluteURL: function() { var n; return function(t) { return n || (n = document.createElement("a")), n.setAttribute("href", t), ("!!" + n.href).replace("!!", "") } } (), getHashCode: function(n) { for (var t = 0, r = n.length, i = 0; i < r; ++i) t = (31 * t + n.charCodeAt(i)) % 4294967296; return t } }, n = t, p = t.$; window.magicJS || (window.magicJS = t, window.$mjs = t.$); n.Array = { $J_TYPE: "array", indexOf: function(n, t) { for (var u = this.length, r = this.length, i = t < 0 ? Math.max(0, r + t) : t || 0; i < r; i++) if (this[i] === n) return i; return - 1 }, contains: function(n, t) { return this.indexOf(n, t) != -1 }, forEach: function(n, t) { for (var i = 0, r = this.length; i < r; i++) i in this && n.call(t, this[i], i, this) }, filter: function(n, t) { for (var u, r = [], i = 0, f = this.length; i < f; i++) i in this && (u = this[i], n.call(t, this[i], i, this) && r.push(u)); return r }, map: function(n, t) { for (var r = [], i = 0, u = this.length; i < u; i++) i in this && (r[i] = n.call(t, this[i], i, this)); return r } }; n.implement(String, { $J_TYPE: "string", jTrim: function() { return this.replace(/^\s+|\s+$/g, "") }, eq: function(n, t) { return t || !1 ? this.toString() === n.toString() : this.toLowerCase().toString() === n.toLowerCase().toString() }, jCamelize: function() { return this.replace(/-\D/g, function(n) { return n.charAt(1).toUpperCase() }) }, dashize: function() { return this.replace(/[A-Z]/g, function(n) { return "-" + n.charAt(0).toLowerCase() }) }, jToInt: function(n) { return parseInt(this, n || 10) }, toFloat: function() { return parseFloat(this) }, jToBool: function() { return ! this.replace(/true/i, "").jTrim() }, has: function(n, t) { return t = t || "", (t + this + t).indexOf(t + n + t) > -1 } }); t.implement(Function, { $J_TYPE: "function", jBind: function() { var t = n.$A(arguments), i = this, r = t.shift(); return function() { return i.apply(r || null, t.concat(n.$A(arguments))) } }, jBindAsEvent: function() { var t = n.$A(arguments), i = this, r = t.shift(); return function(u) { return i.apply(r || null, n.$([u || (n.browser.ieMode ? window.event: null)]).concat(t)) } }, jDelay: function() { var t = n.$A(arguments), i = this, r = t.shift(); return window.setTimeout(function() { return i.apply(i, t) }, r || 0) }, jDefer: function() { var i = n.$A(arguments), t = this; return function() { return t.jDelay.apply(t, i) } }, interval: function() { var t = n.$A(arguments), i = this, r = t.shift(); return window.setInterval(function() { return i.apply(i, t) }, r || 0) } }); var f = {}, u = navigator.userAgent.toLowerCase(), e = u.match(/(webkit|gecko|trident|presto)\/(\d+\.?\d*)/i), i = u.match(/(edge|opr)\/(\d+\.?\d*)/i) || u.match(/(crios|chrome|safari|firefox|opera|opr)\/(\d+\.?\d*)/i), o = u.match(/version\/(\d+\.?\d*)/i), r = document.documentElement.style; n.browser = { features: { xpath: !!document.evaluate, air: !!window.runtime, query: !!document.querySelector, fullScreen: !!(document.fullscreenEnabled || document.msFullscreenEnabled || document.exitFullscreen || document.cancelFullScreen || document.webkitexitFullscreen || document.webkitCancelFullScreen || document.mozCancelFullScreen || document.oCancelFullScreen || document.msCancelFullScreen), xhr2: !!window.ProgressEvent && !!window.FormData && window.XMLHttpRequest && "withCredentials" in new XMLHttpRequest, transition: s("transition"), transform: s("transform"), perspective: s("perspective"), animation: s("animation"), requestAnimationFrame: !1, multibackground: !1, cssFilters: !1, canvas: !1, svg: function() { return document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#Image", "1.1") } () }, touchScreen: function() { return "ontouchstart" in window || window.DocumentTouch && document instanceof DocumentTouch || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0 } (), mobile: !!u.match(/(android|bb\d+|meego).+|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od|ad)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/), engine: e && e[1] ? e[1].toLowerCase() : window.opera ? "presto": !window.ActiveXObject ? document.getBoxObjectFor !== undefined || window.mozInnerScreenY !== null ? "gecko": window.WebKitPoint !== null || !navigator.taintEnabled ? "webkit": "unknown": "trident", version: e && e[2] ? parseFloat(e[2]) : 0, uaName: i && i[1] ? i[1].toLowerCase() : "", uaVersion: i && i[2] ? parseFloat(i[2]) : 0, cssPrefix: "", cssDomPrefix: "", domPrefix: "", ieMode: 0, platform: u.match(/ip(?:ad|od|hone)/) ? "ios": (u.match(/(?:webos|android)/) || navigator.platform.match(/mac|win|linux/i) || ["other"])[0].toLowerCase(), backCompat: document.compatMode && document.compatMode.toLowerCase() === "backcompat", scrollbarsWidth: 0, getDoc: function() { return document.compatMode && document.compatMode.toLowerCase() === "backcompat" ? document.body: document.documentElement }, requestAnimationFrame: window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || undefined, cancelAnimationFrame: window.cancelAnimationFrame || window.mozCancelAnimationFrame || window.mozCancelAnimationFrame || window.oCancelAnimationFrame || window.msCancelAnimationFrame || window.webkitCancelRequestAnimationFrame || undefined, ready: !1, onready: function() { var t, i, r; if (!n.browser.ready) { n.browser.ready = !0; n.body = n.$(document.body); n.win = n.$(window); try { r = n.$new("div").jSetCss({ width: 100, height: 100, overflow: "scroll", position: "absolute", top: -9999 }).jAppendTo(document.body); n.browser.scrollbarsWidth = r.offsetWidth - r.clientWidth; r.jRemove() } catch(u) {} try { t = n.$new("div"); i = t.style; i.cssText = "background:url(https://),url(https://),red url(https://)"; n.browser.features.multibackground = /(url\s*\(.*?){3}/.test(i.background); i = null; t = null } catch(u) {} n.browser.cssTransformProp || (n.browser.cssTransformProp = n.normalizeCSS("transform").dashize()); try { t = n.$new("div"); t.style.cssText = n.normalizeCSS("filter").dashize() + ":blur(2px);"; n.browser.features.cssFilters = !!t.style.length && (!n.browser.ieMode || n.browser.ieMode > 9); t = null } catch(u) {} n.browser.features.cssFilters || n.$(document.documentElement).jAddClass("no-cssfilters-magic"); try { n.browser.features.canvas = function() { var t = n.$new("canvas"); return !! (t.getContext && t.getContext("2d")) } () } catch(u) {} window.TransitionEvent === undefined && window.WebKitTransitionEvent !== undefined && (f.transitionend = "webkitTransitionEnd"); n.Doc.jCallEvent.call(n.$(document), "domready") } } }, function() { var t, r; switch (n.browser.engine) { case "trident": n.browser.version || (n.browser.version = !window.XMLHttpRequest ? 2 : 3); break; case "gecko": n.browser.version = i && i[2] ? parseFloat(i[2]) : 0 } n.browser[n.browser.engine] = !0; i && i[1] === "crios" && (n.browser.uaName = "chrome"); ! window.chrome || (n.browser.chrome = !0); i && i[1] === "opr" && (n.browser.uaName = "opera", n.browser.opera = !0); n.browser.uaName === "safari" && o && o[1] && (n.browser.uaVersion = parseFloat(o[1])); n.browser.platform === "android" && n.browser.webkit && o && o[1] && (n.browser.androidBrowser = !0); t = { gecko: ["-moz-", "Moz", "moz"], webkit: ["-webkit-", "Webkit", "webkit"], trident: ["-ms-", "ms", "ms"], presto: ["-o-", "O", "o"] } [n.browser.engine] || ["", "", ""]; n.browser.cssPrefix = t[0]; n.browser.cssDomPrefix = t[1]; n.browser.domPrefix = t[2]; n.browser.ieMode = n.browser.trident ? document.documentMode ? document.documentMode: function() { var t = 0; if (n.browser.backCompat) return 5; switch (n.browser.version) { case 2: t = 6; break; case 3: t = 7 } return t } () : undefined; ! n.browser.mobile && n.browser.platform === "mac" && n.browser.touchScreen && (n.browser.mobile = !0, n.browser.platform = "ios"); n.browser.webkit && n.browser.version < 536 && (n.browser.features.fullScreen = !1); n.browser.requestAnimationFrame && n.browser.requestAnimationFrame.call(window, function() { n.browser.features.requestAnimationFrame = !0 }); r = (document.documentElement.className || "").match(/\S+/g) || []; document.documentElement.className = n.$(r).concat([]).join(" "); n.browser.ieMode && n.browser.ieMode < 9 && (document.createElement("figure"), document.createElement("figcaption")); window.navigator.pointerEnabled || n.$(["Down", "Up", "Move", "Over", "Out"]).jEach(function(n) { f["pointer" + n.toLowerCase()] = window.navigator.msPointerEnabled ? "MSPointer" + n: -1 }) } (), function() { n.browser.fullScreen = { capable: n.browser.features.fullScreen, enabled: function() { return !! (document.fullscreenElement || document[n.browser.domPrefix + "FullscreenElement"] || document.fullScreen || document.webkitIsFullScreen || document[n.browser.domPrefix + "FullScreen"]) }, request: function(t, i) { i || (i = {}); this.capable ? (n.$(document).jAddEvent(this.changeEventName, this.onchange = function() { this.enabled() ? i.onEnter && i.onEnter() : (n.$(document).jRemoveEvent(this.changeEventName, this.onchange), i.onExit && i.onExit()) }.jBindAsEvent(this)), n.$(document).jAddEvent(this.errorEventName, this.onerror = function() { i.fallback && i.fallback(); n.$(document).jRemoveEvent(this.errorEventName, this.onerror) }.jBindAsEvent(this)), (t.requestFullscreen || t[n.browser.domPrefix + "RequestFullscreen"] || t[n.browser.domPrefix + "RequestFullScreen"] || function() {}).call(t)) : i.fallback && i.fallback() }, cancel: (document.exitFullscreen || document.cancelFullScreen || document[n.browser.domPrefix + "ExitFullscreen"] || document[n.browser.domPrefix + "CancelFullScreen"] || function() {}).jBind(document), changeEventName: document.msExitFullscreen ? "MSFullscreenChange": (document.exitFullscreen ? "": n.browser.domPrefix) + "fullscreenchange", errorEventName: document.msExitFullscreen ? "MSFullscreenError": (document.exitFullscreen ? "": n.browser.domPrefix) + "fullscreenerror", prefix: n.browser.domPrefix, activeElement: null } } (); var h = /\S+/g, a = /^(border(Top|Bottom|Left|Right)Width)|((padding|margin)(Top|Bottom|Left|Right))$/, c = { float: "undefined" == typeof r.styleFloat ? "cssFloat": "styleFloat" }, v = { fontWeight: !0, lineHeight: !0, opacity: !0, zIndex: !0, zoom: !0 }, y = window.getComputedStyle ? function(n, t) { var i = window.getComputedStyle(n, null); return i ? i.getPropertyValue(t) || i[t] : null }: function(n, t) { var r = n.currentStyle, i = null; return i = r ? r[t] : null, null == i && n.style && n.style[t] && (i = n.style[t]), i }; return n.normalizeCSS = l, n.Element = { jHasClass: function(n) { return ! (n || "").has(" ") && (this.className || "").has(n, " ") }, jAddClass: function(t) { for (var r = (this.className || "").match(h) || [], u = (t || "").match(h) || [], f = u.length, i = 0; i < f; i++) n.$(r).contains(u[i]) || r.push(u[i]); return this.className = r.join(" "), this }, jRemoveClass: function(t) { for (var i = (this.className || "").match(h) || [], u = (t || "").match(h) || [], e = u.length, r = 0, f; r < e; r++)(f = n.$(i).indexOf(u[r])) > -1 && i.splice(f, 1); return this.className = t ? i.join(" ") : "", this }, jToggleClass: function(n) { return this.jHasClass(n) ? this.jRemoveClass(n) : this.jAddClass(n) }, jGetCss: function(t) { var r = t.jCamelize(), i = null; if (t = c[r] || (c[r] = l(r)), i = y(this, t), "auto" === i && (i = null), null !== i) { if ("opacity" == t) return n.defined(i) ? parseFloat(i) : 1; a.test(t) && (i = parseInt(i, 10) ? i: "0px") } return i }, jSetCssProp: function(t, i) { var r = t.jCamelize(); try { if ("opacity" == t) return this.jSetOpacity(i), this; t = c[r] || (c[r] = l(r)); this.style[t] = i + ("number" == n.jTypeOf(i) && !v[r] ? "px": "") } catch(u) {} return this }, jSetCss: function(n) { for (var t in n) this.jSetCssProp(t, n[t]); return this }, jGetStyles: function() { var t = {}; return n.$A(arguments).jEach(function(n) { t[n] = this.jGetCss(n) }, this), t }, jSetOpacity: function(t, i) { return i = i || !1, this.style.opacity = t, t = parseInt(parseFloat(t) * 100), i && (0 === t ? "hidden" != this.style.visibility && (this.style.visibility = "hidden") : "visible" != this.style.visibility && (this.style.visibility = "visible")), n.browser.ieMode && n.browser.ieMode < 9 && (isNaN(t) ? (this.style.filter = this.style.filter.replace(/progid:DXImageTransform.Microsoft.Alpha\(Opacity=\d*\)/i, "").jTrim(), "" === this.style.filter && this.style.removeAttribute("filter")) : ~this.style.filter.indexOf("Alpha") ? this.style.filter = this.style.filter.replace(/Opacity=\d*/i, "Opacity=" + t) : this.style.filter += " progid:DXImageTransform.Microsoft.Alpha(Opacity=" + t + ")"), this }, setProps: function(n) { for (var t in n)"class" === t ? this.jAddClass("" + n[t]) : this.setAttribute(t, "" + n[t]); return this }, jGetTransitionDuration: function() { var n = 0, t = 0; return n = this.jGetCss("transition-duration"), t = this.jGetCss("transition-delay"), n = n.indexOf("ms") > -1 ? parseFloat(n) : n.indexOf("s") > -1 ? parseFloat(n) * 1e3: 0, t = t.indexOf("ms") > -1 ? parseFloat(t) : t.indexOf("s") > -1 ? parseFloat(t) * 1e3: 0, n + t }, hide: function() { return this.jSetCss({ display: "none", visibility: "hidden" }) }, show: function() { return this.jSetCss({ display: "", visibility: "visible" }) }, jGetSize: function() { return { width: this.offsetWidth, height: this.offsetHeight } }, getInnerSize: function(n) { var t = this.jGetSize(); return t.width -= parseFloat(this.jGetCss("border-left-width") || 0) + parseFloat(this.jGetCss("border-right-width") || 0), t.height -= parseFloat(this.jGetCss("border-top-width") || 0) + parseFloat(this.jGetCss("border-bottom-width") || 0), n || (t.width -= parseFloat(this.jGetCss("padding-left") || 0) + parseFloat(this.jGetCss("padding-right") || 0), t.height -= parseFloat(this.jGetCss("padding-top") || 0) + parseFloat(this.jGetCss("padding-bottom") || 0)), t }, jGetScroll: function() { return { top: this.scrollTop, left: this.scrollLeft } }, jGetFullScroll: function() { var n = this, t = { top: 0, left: 0 }; do t.left += n.scrollLeft || 0, t.top += n.scrollTop || 0, n = n.parentNode; while (n); return t }, jGetPosition: function() { var t = this, i = 0, r = 0; if (n.defined(document.documentElement.getBoundingClientRect)) { var u = this.getBoundingClientRect(), f = n.$(document).jGetScroll(), e = n.browser.getDoc(); return { top: u.top + f.y - e.clientTop, left: u.left + f.x - e.clientLeft } } do i += t.offsetLeft || 0, r += t.offsetTop || 0, t = t.offsetParent; while (t && !/^(?:body|html)$/i.test(t.tagName)); return { top: r, left: i } }, jGetRect: function() { var n = this.jGetPosition(), t = this.jGetSize(); return { top: n.top, bottom: n.top + t.height, left: n.left, right: n.left + t.width } }, changeContent: function(n) { try { this.innerHTML = n } catch(t) { this.innerText = n } return this }, jRemove: function() { return this.parentNode ? this.parentNode.removeChild(this) : this }, kill: function() { return n.$A(this.childNodes).jEach(function(t) { 3 != t.nodeType && 8 != t.nodeType && n.$(t).kill() }), this.jRemove(), this.jClearEvents(), this.$J_UUID && (n.storage[this.$J_UUID] = null, delete n.storage[this.$J_UUID]), null }, append: function(n, t) { t = t || "bottom"; var i = this.firstChild; return "top" == t && i ? this.insertBefore(n, i) : this.appendChild(n), this }, jAppendTo: function(t, i) { var r = n.$(t).append(this, i); return this }, enclose: function(n) { return this.append(n.parentNode.replaceChild(this, n)), this }, hasChild: function(t) { return "element" !== n.jTypeOf("string" == n.jTypeOf(t) ? t = document.getElementById(t) : t) ? !1 : this == t ? !1 : this.contains && !n.browser.webkit419 ? this.contains(t) : this.compareDocumentPosition ? !!(this.compareDocumentPosition(t) & 16) : n.$A(this.byTag(t.tagName)).contains(t) } }, n.Element.jGetStyle = n.Element.jGetCss, n.Element.jSetStyle = n.Element.jSetCss, window.Element || (window.Element = n.$F, n.browser.engine.webkit && window.document.createElement("iframe"), window.Element.prototype = n.browser.engine.webkit ? window["[[DOMElement.prototype]]"] : {}), n.implement(window.Element, { $J_TYPE: "element" }), n.Doc = { jGetSize: function() { return n.browser.touchScreen || n.browser.presto925 || n.browser.webkit419 ? { width: window.innerWidth, height: window.innerHeight }: { width: n.browser.getDoc().clientWidth, height: n.browser.getDoc().clientHeight } }, jGetScroll: function() { return { x: window.pageXOffset || n.browser.getDoc().scrollLeft, y: window.pageYOffset || n.browser.getDoc().scrollTop } }, jGetFullSize: function() { var t = this.jGetSize(); return { width: Math.max(n.browser.getDoc().scrollWidth, t.width), height: Math.max(n.browser.getDoc().scrollHeight, t.height) } } }, n.extend(document, { $J_TYPE: "document" }), n.extend(window, { $J_TYPE: "window" }), n.extend([n.Element, n.Doc], { jFetch: function(t, i) { var u = n.getStorage(this.$J_UUID), r = u[t]; return undefined !== i && undefined === r && (r = u[t] = i), n.defined(r) ? r: null }, jStore: function(t, i) { var r = n.getStorage(this.$J_UUID); return r[t] = i, this }, jDel: function(t) { var i = n.getStorage(this.$J_UUID); return delete i[t], this } }), window.HTMLElement && window.HTMLElement.prototype && window.HTMLElement.prototype.getElementsByClassName || n.extend([n.Element, n.Doc], { getElementsByClassName: function(t) { return n.$A(this.getElementsByTagName("*")).filter(function(n) { try { return 1 == n.nodeType && n.className.has(t, " ") } catch(i) {} }) } }), n.extend([n.Element, n.Doc], { byClass: function() { return this.getElementsByClassName(arguments[0]) }, byTag: function() { return this.getElementsByTagName(arguments[0]) } }), n.browser.fullScreen.capable && !document.requestFullScreen && (n.Element.requestFullScreen = function() { n.browser.fullScreen.request(this) }), n.Event = { $J_TYPE: "event", isQueueStopped: n.$false, stop: function() { return this.stopDistribution().stopDefaults() }, stopDistribution: function() { return this.stopPropagation ? this.stopPropagation() : this.cancelBubble = !0, this }, stopDefaults: function() { return this.preventDefault ? this.preventDefault() : this.returnValue = !1, this }, stopQueue: function() { return this.isQueueStopped = n.$true, this }, getClientXY: function() { var t = /touch/i.test(this.type) ? this.changedTouches[0] : this; return n.defined(t) ? { x: t.clientX, y: t.clientY }: { x: 0, y: 0 } }, jGetPageXY: function() { var t = /touch/i.test(this.type) ? this.changedTouches[0] : this; return n.defined(t) ? { x: t.pageX || t.clientX + n.browser.getDoc().scrollLeft, y: t.pageY || t.clientY + n.browser.getDoc().scrollTop }: { x: 0, y: 0 } }, getTarget: function() { for (var n = this.target || this.srcElement; n && n.nodeType === 3;) n = n.parentNode; return n }, getRelated: function() { var n = null; switch (this.type) { case "mouseover": case "pointerover": case "MSPointerOver": n = this.relatedTarget || this.fromElement; break; case "mouseout": case "pointerout": case "MSPointerOut": n = this.relatedTarget || this.toElement; break; default: return n } try { while (n && n.nodeType === 3) n = n.parentNode } catch(t) { n = null } return n }, getButton: function() { return ! this.which && this.button !== undefined ? this.button & 1 ? 1 : this.button & 2 ? 3 : this.button & 4 ? 2 : 0 : this.which }, isTouchEvent: function() { return this.pointerType && (this.pointerType === "touch" || this.pointerType === this.MSPOINTER_TYPE_TOUCH) || /touch/i.test(this.type) }, isPrimaryTouch: function() { return this.pointerType ? (this.pointerType === "touch" || this.MSPOINTER_TYPE_TOUCH === this.pointerType) && this.isPrimary: this instanceof window.TouchEvent ? this.changedTouches.length === 1 && (this.targetTouches.length ? this.targetTouches.length === 1 && this.targetTouches[0].identifier === this.changedTouches[0].identifier: !0) : !1 }, getPrimaryTouch: function() { return this.pointerType ? this.isPrimary && (this.pointerType === "touch" || this.MSPOINTER_TYPE_TOUCH === this.pointerType) ? this: null: this instanceof window.TouchEvent ? this.changedTouches[0] : null }, getPrimaryTouchId: function() { return this.pointerType ? this.isPrimary && (this.pointerType === "touch" || this.MSPOINTER_TYPE_TOUCH === this.pointerType) ? this.pointerId: null: this instanceof window.TouchEvent ? this.changedTouches[0].identifier: null } }, n._event_add_ = "addEventListener", n._event_del_ = "removeEventListener", n._event_prefix_ = "", document.addEventListener || (n._event_add_ = "attachEvent", n._event_del_ = "detachEvent", n._event_prefix_ = "on"), n.Event.Custom = { type: "", x: null, y: null, timeStamp: null, button: null, target: null, relatedTarget: null, $J_TYPE: "event.custom", isQueueStopped: n.$false, events: n.$([]), pushToEvents: function(n) { var t = n; this.events.push(t) }, stop: function() { return this.stopDistribution().stopDefaults() }, stopDistribution: function() { return this.events.jEach(function(n) { try { n.stopDistribution() } catch(t) {} }), this }, stopDefaults: function() { return this.events.jEach(function(n) { try { n.stopDefaults() } catch(t) {} }), this }, stopQueue: function() { return this.isQueueStopped = n.$true, this }, getClientXY: function() { return { x: this.clientX, y: this.clientY } }, jGetPageXY: function() { return { x: this.x, y: this.y } }, getTarget: function() { return this.target }, getRelated: function() { return this.relatedTarget }, getButton: function() { return this.button }, getOriginalTarget: function() { return this.events.length > 0 ? this.events[0].getTarget() : undefined }, isTouchEvent: function() { return this.pointerType && (this.pointerType === "touch" || this.pointerType === this.MSPOINTER_TYPE_TOUCH) || /touch/i.test(this.type) }, isPrimaryTouch: function() { return this.pointerType ? (this.pointerType === "touch" || this.MSPOINTER_TYPE_TOUCH === this.pointerType) && this.isPrimary: this instanceof window.TouchEvent ? this.changedTouches.length === 1 && (this.targetTouches.length ? this.targetTouches[0].identifier === this.changedTouches[0].identifier: !0) : !1 }, getPrimaryTouch: function() { return this.pointerType ? this.isPrimary && (this.pointerType === "touch" || this.MSPOINTER_TYPE_TOUCH === this.pointerType) ? this: null: this instanceof window.TouchEvent ? this.changedTouches[0] : null }, getPrimaryTouchId: function() { return this.pointerType ? this.isPrimary && (this.pointerType === "touch" || this.MSPOINTER_TYPE_TOUCH === this.pointerType) ? this.pointerId: null: this instanceof window.TouchEvent ? this.changedTouches[0].identifier: null } }, n.extend([n.Element, n.Doc], { jAddEvent: function(t, i, r, u) { var o, e, h, c, s; return (n.jTypeOf(t) === "string" && (s = t.split(" "), s.length > 1 && (t = s)), n.jTypeOf(t) === "array") ? (n.$(t).jEach(this.jAddEvent.jBindAsEvent(this, i, r, u)), this) : (t = f[t] || t, !t || !i || n.jTypeOf(t) !== "string" || n.jTypeOf(i) !== "function") ? this: t === "domready" && n.browser.ready ? (i.call(this), this) : (r = parseInt(r || 50, 10), i.$J_EUID || (i.$J_EUID = Math.floor(Math.random() * n.now())), o = n.Doc.jFetch.call(this, "_EVENTS_", {}), e = o[t], e || (o[t] = e = n.$([]), h = this, n.Event.Custom[t] ? n.Event.Custom[t].handler.add.call(this, u) : (e.handle = function(i) { i = n.extend(i || window.e, { $J_TYPE: "event" }); n.Doc.jCallEvent.call(h, t, n.$(i)) }, this[n._event_add_](n._event_prefix_ + t, e.handle, !1))), c = { type: t, fn: i, priority: r, euid: i.$J_EUID }, e.push(c), e.sort(function(n, t) { return n.priority - t.priority }), this) }, jRemoveEvent: function(t) { var e = n.Doc.jFetch.call(this, "_EVENTS_", {}), i, s, r, h, u, o; if (u = arguments.length > 1 ? arguments[1] : -100, n.jTypeOf(t) === "string" && (o = t.split(" "), o.length > 1 && (t = o)), n.jTypeOf(t) === "array") return n.$(t).jEach(this.jRemoveEvent.jBindAsEvent(this, u)), this; if (t = f[t] || t, !t || n.jTypeOf(t) !== "string" || !e || !e[t]) return this; for (i = e[t] || [], r = 0; r < i.length; r++) s = i[r], u !== -100 && (!u || u.$J_EUID !== s.euid) || (h = i.splice(r--, 1)); return i.length === 0 && (n.Event.Custom[t] ? n.Event.Custom[t].handler.jRemove.call(this) : this[n._event_del_](n._event_prefix_ + t, i.handle, !1), delete e[t]), this }, jCallEvent: function(t, i) { var u = n.Doc.jFetch.call(this, "_EVENTS_", {}), e, r; if (t = f[t] || t, !t || n.jTypeOf(t) !== "string" || !u || !u[t]) return this; try { i = n.extend(i || {}, { type: t }) } catch(o) {} for (i.timeStamp === undefined && (i.timeStamp = n.now()), e = u[t] || [], r = 0; r < e.length && !(i.isQueueStopped && i.isQueueStopped()); r++) e[r].fn.call(this, i) }, jRaiseEvent: function(t, i) { var e = t !== "domready", u = this, r; return (t = f[t] || t, !e) ? (n.Doc.jCallEvent.call(this, t), this) : (u === document && document.createEvent && !u.dispatchEvent && (u = document.documentElement), document.createEvent ? (r = document.createEvent(t), r.initEvent(i, !0, !0)) : (r = document.createEventObject(), r.eventType = t), document.createEvent ? u.dispatchEvent(r) : u.fireEvent("on" + i, r), r) }, jClearEvents: function() { var t = n.Doc.jFetch.call(this, "_EVENTS_"), i; if (!t) return this; for (i in t) n.Doc.jRemoveEvent.call(this, i); return n.Doc.jDel.call(this, "_EVENTS_"), this } }), function(n) { if (document.readyState === "complete") return n.browser.onready.jDelay(1); n.browser.webkit && n.browser.version < 420 ? function() { n.$(["loaded", "complete"]).contains(document.readyState) ? n.browser.onready() : arguments.callee.jDelay(50) } () : n.browser.trident && n.browser.ieMode < 9 && window === top ? function() { n.$try(function() { return n.browser.getDoc().doScroll("left"), !0 }) ? n.browser.onready() : arguments.callee.jDelay(50) } () : (n.Doc.jAddEvent.call(n.$(document), "DOMContentLoaded", n.browser.onready), n.Doc.jAddEvent.call(n.$(window), "load", n.browser.onready)) } (t), n.Class = function() { var i = null, r = n.$A(arguments), t, u, f; if ("class" == n.jTypeOf(r[0]) && (i = r.shift()), t = function() { var r, u, t, i, f; for (r in this) this[r] = n.detach(this[r]); if (this.constructor.$parent) { this.$parent = {}; u = this.constructor.$parent; for (t in u) { i = u[t]; switch (n.jTypeOf(i)) { case "function": this.$parent[t] = n.Class.wrap(this, i); break; case "object": this.$parent[t] = n.detach(i); break; case "array": this.$parent[t] = n.detach(i) } } } return f = this.init ? this.init.apply(this, arguments) : this, delete this.caller, f }, t.prototype.init || (t.prototype.init = n.$F), i) { u = function() {}; u.prototype = i.prototype; t.prototype = new u; t.$parent = {}; for (f in i.prototype) t.$parent[f] = i.prototype[f] } else t.$parent = null; return t.constructor = n.Class, t.prototype.constructor = t, n.extend(t.prototype, r[0]), n.extend(t, { $J_TYPE: "class" }), t }, t.Class.wrap = function(n, t) { return function() { var i = this.caller; return t.apply(n, arguments) } }, function(n) { var i = n.$, t = 5; n.Event.Custom.btnclick = new n.Class(n.extend(n.Event.Custom, { type: "btnclick", init: function(n, t) { var i = t.jGetPageXY(); this.x = i.x; this.y = i.y; this.clientX = t.clientX; this.clientY = t.clientY; this.timeStamp = t.timeStamp; this.button = t.getButton(); this.target = n; this.pushToEvents(t) } })); n.Event.Custom.btnclick.handler = { options: { threshold: 300, button: 1 }, add: function(t) { this.jStore("event:btnclick:options", n.extend(n.detach(n.Event.Custom.btnclick.handler.options), t || {})); this.jAddEvent("mousedown", n.Event.Custom.btnclick.handler.handle, 1); this.jAddEvent("mouseup", n.Event.Custom.btnclick.handler.handle, 1); this.jAddEvent("click", n.Event.Custom.btnclick.handler.onclick, 1); n.browser.trident && n.browser.ieMode < 9 && this.jAddEvent("dblclick", n.Event.Custom.btnclick.handler.handle, 1) }, jRemove: function() { this.jRemoveEvent("mousedown", n.Event.Custom.btnclick.handler.handle); this.jRemoveEvent("mouseup", n.Event.Custom.btnclick.handler.handle); this.jRemoveEvent("click", n.Event.Custom.btnclick.handler.onclick); n.browser.trident && n.browser.ieMode < 9 && this.jRemoveEvent("dblclick", n.Event.Custom.btnclick.handler.handle) }, onclick: function(n) { n.stopDefaults() }, handle: function(i) { var r, u, f; if (u = this.jFetch("event:btnclick:options"), i.type == "dblclick" || i.getButton() == u.button) { if (this.jFetch("event:btnclick:ignore")) { this.jDel("event:btnclick:ignore"); return } if ("mousedown" == i.type) r = new n.Event.Custom.btnclick(this, i), this.jStore("event:btnclick:btnclickEvent", r); else if ("mouseup" == i.type) { if (r = this.jFetch("event:btnclick:btnclickEvent"), !r) return; f = i.jGetPageXY(); this.jDel("event:btnclick:btnclickEvent"); r.pushToEvents(i); i.timeStamp - r.timeStamp <= u.threshold && Math.sqrt(Math.pow(f.x - r.x, 2) + Math.pow(f.y - r.y, 2)) <= t && this.jCallEvent("btnclick", r); document.jCallEvent("mouseup", i) } else i.type == "dblclick" && (r = new n.Event.Custom.btnclick(this, i), this.jCallEvent("btnclick", r)) } } } } (t), function(n) { var t = n.$; n.Event.Custom.mousedrag = new n.Class(n.extend(n.Event.Custom, { type: "mousedrag", state: "dragstart", dragged: !1, init: function(n, t, i) { var r = t.jGetPageXY(); this.x = r.x; this.y = r.y; this.clientX = t.clientX; this.clientY = t.clientY; this.timeStamp = t.timeStamp; this.button = t.getButton(); this.target = n; this.pushToEvents(t); this.state = i } })); n.Event.Custom.mousedrag.handler = { add: function() { var t = n.Event.Custom.mousedrag.handler.handleMouseMove.jBindAsEvent(this), i = n.Event.Custom.mousedrag.handler.handleMouseUp.jBindAsEvent(this); this.jAddEvent("mousedown", n.Event.Custom.mousedrag.handler.handleMouseDown, 1); this.jAddEvent("mouseup", n.Event.Custom.mousedrag.handler.handleMouseUp, 1); document.jAddEvent("mousemove", t, 1); document.jAddEvent("mouseup", i, 1); this.jStore("event:mousedrag:listeners:document:move", t); this.jStore("event:mousedrag:listeners:document:end", i) }, jRemove: function() { this.jRemoveEvent("mousedown", n.Event.Custom.mousedrag.handler.handleMouseDown); this.jRemoveEvent("mouseup", n.Event.Custom.mousedrag.handler.handleMouseUp); t(document).jRemoveEvent("mousemove", this.jFetch("event:mousedrag:listeners:document:move") || n.$F); t(document).jRemoveEvent("mouseup", this.jFetch("event:mousedrag:listeners:document:end") || n.$F); this.jDel("event:mousedrag:listeners:document:move"); this.jDel("event:mousedrag:listeners:document:end") }, handleMouseDown: function(t) { var i; t.getButton() === 1 && (i = new n.Event.Custom.mousedrag(this, t, "dragstart"), this.jStore("event:mousedrag:dragstart", i)) }, handleMouseUp: function(t) { var i; (i = this.jFetch("event:mousedrag:dragstart"), i) && (i.dragged && t.stopDefaults(), i = new n.Event.Custom.mousedrag(this, t, "dragend"), this.jDel("event:mousedrag:dragstart"), this.jCallEvent("mousedrag", i)) }, handleMouseMove: function(t) { var i; (i = this.jFetch("event:mousedrag:dragstart"), i) && (t.stopDefaults(), i.dragged || (i.dragged = !0, this.jCallEvent("mousedrag", i)), i = new n.Event.Custom.mousedrag(this, t, "dragmove"), this.jCallEvent("mousedrag", i)) } } } (t), function(n) { var t = n.$; n.Event.Custom.dblbtnclick = new n.Class(n.extend(n.Event.Custom, { type: "dblbtnclick", timedout: !1, tm: null, init: function(n, t) { var i = t.jGetPageXY(); this.x = i.x; this.y = i.y; this.clientX = t.clientX; this.clientY = t.clientY; this.timeStamp = t.timeStamp; this.button = t.getButton(); this.target = n; this.pushToEvents(t) } })); n.Event.Custom.dblbtnclick.handler = { options: { threshold: 200 }, add: function(t) { this.jStore("event:dblbtnclick:options", n.extend(n.detach(n.Event.Custom.dblbtnclick.handler.options), t || {})); this.jAddEvent("btnclick", n.Event.Custom.dblbtnclick.handler.handle, 1) }, jRemove: function() { this.jRemoveEvent("btnclick", n.Event.Custom.dblbtnclick.handler.handle) }, handle: function(t) { var i, r; i = this.jFetch("event:dblbtnclick:event"); r = this.jFetch("event:dblbtnclick:options"); i ? (clearTimeout(i.tm), this.jDel("event:dblbtnclick:event"), i.timedout || (i.pushToEvents(t), t.stopQueue().stop(), this.jCallEvent("dblbtnclick", i))) : (i = new n.Event.Custom.dblbtnclick(this, t), i.tm = setTimeout(function() { i.timedout = !0; t.isQueueStopped = n.$false; this.jCallEvent("btnclick", t); this.jDel("event:dblbtnclick:event") }.jBind(this), r.threshold + 10), this.jStore("event:dblbtnclick:event", i), t.stopQueue()) } } } (t), function(n) { var r = n.$, t = 10, i = 200; n.Event.Custom.tap = new n.Class(n.extend(n.Event.Custom, { type: "tap", id: null, init: function(n, t) { var i = t.getPrimaryTouch(); this.id = i.pointerId || i.identifier; this.x = i.pageX; this.y = i.pageY; this.pageX = i.pageX; this.pageY = i.pageY; this.clientX = i.clientX; this.clientY = i.clientY; this.timeStamp = t.timeStamp; this.button = 0; this.target = n; this.pushToEvents(t) } })); n.Event.Custom.tap.handler = { add: function() { this.jAddEvent(["touchstart", "pointerdown"], n.Event.Custom.tap.handler.onTouchStart, 1); this.jAddEvent(["touchend", "pointerup"], n.Event.Custom.tap.handler.onTouchEnd, 1); this.jAddEvent("click", n.Event.Custom.tap.handler.onClick, 1) }, jRemove: function() { this.jRemoveEvent(["touchstart", "pointerdown"], n.Event.Custom.tap.handler.onTouchStart); this.jRemoveEvent(["touchend", "pointerup"], n.Event.Custom.tap.handler.onTouchEnd); this.jRemoveEvent("click", n.Event.Custom.tap.handler.onClick) }, onClick: function(n) { n.stopDefaults() }, onTouchStart: function(t) { if (!t.isPrimaryTouch()) { this.jDel("event:tap:event"); return } this.jStore("event:tap:event", new n.Event.Custom.tap(this, t)); this.jStore("event:btnclick:ignore", !0) }, onTouchEnd: function(r) { var f = n.now(), u = this.jFetch("event:tap:event"), e = this.jFetch("event:tap:options"); u && r.isPrimaryTouch() && (this.jDel("event:tap:event"), u.id === r.getPrimaryTouchId() && r.timeStamp - u.timeStamp <= i && Math.sqrt(Math.pow(r.getPrimaryTouch().pageX - u.x, 2) + Math.pow(r.getPrimaryTouch().pageY - u.y, 2)) <= t && (this.jDel("event:btnclick:btnclickEvent"), r.stop(), u.pushToEvents(r), this.jCallEvent("tap", u))) } } } (t), n.Event.Custom.dbltap = new n.Class(n.extend(n.Event.Custom, { type: "dbltap", timedout: !1, tm: null, init: function(n, t) { this.x = t.x; this.y = t.y; this.clientX = t.clientX; this.clientY = t.clientY; this.timeStamp = t.timeStamp; this.button = 0; this.target = n; this.pushToEvents(t) } })), n.Event.Custom.dbltap.handler = { options: { threshold: 300 }, add: function(t) { this.jStore("event:dbltap:options", n.extend(n.detach(n.Event.Custom.dbltap.handler.options), t || {})); this.jAddEvent("tap", n.Event.Custom.dbltap.handler.handle, 1) }, jRemove: function() { this.jRemoveEvent("tap", n.Event.Custom.dbltap.handler.handle) }, handle: function(t) { var i, r; i = this.jFetch("event:dbltap:event"); r = this.jFetch("event:dbltap:options"); i ? (clearTimeout(i.tm), this.jDel("event:dbltap:event"), i.timedout || (i.pushToEvents(t), t.stopQueue().stop(), this.jCallEvent("dbltap", i))) : (i = new n.Event.Custom.dbltap(this, t), i.tm = setTimeout(function() { i.timedout = !0; t.isQueueStopped = n.$false; this.jCallEvent("tap", t) }.jBind(this), r.threshold + 10), this.jStore("event:dbltap:event", i), t.stopQueue()) } }, function(n) { var t = n.$, i = 10; n.Event.Custom.touchdrag = new n.Class(n.extend(n.Event.Custom, { type: "touchdrag", state: "dragstart", id: null, dragged: !1, init: function(n, t, i) { var r = t.getPrimaryTouch(); this.id = r.pointerId || r.identifier; this.clientX = r.clientX; this.clientY = r.clientY; this.pageX = r.pageX; this.pageY = r.pageY; this.x = r.pageX; this.y = r.pageY; this.timeStamp = t.timeStamp; this.button = 0; this.target = n; this.pushToEvents(t); this.state = i } })); n.Event.Custom.touchdrag.handler = { add: function() { var i = n.Event.Custom.touchdrag.handler.onTouchMove.jBind(this), r = n.Event.Custom.touchdrag.handler.onTouchEnd.jBind(this); this.jAddEvent(["touchstart", "pointerdown"], n.Event.Custom.touchdrag.handler.onTouchStart, 1); this.jAddEvent(["touchend", "pointerup"], n.Event.Custom.touchdrag.handler.onTouchEnd, 1); this.jAddEvent(["touchmove", "pointermove"], n.Event.Custom.touchdrag.handler.onTouchMove, 1); this.jStore("event:touchdrag:listeners:document:move", i); this.jStore("event:touchdrag:listeners:document:end", r); t(document).jAddEvent("pointermove", i, 1); t(document).jAddEvent("pointerup", r, 1) }, jRemove: function() { this.jRemoveEvent(["touchstart", "pointerdown"], n.Event.Custom.touchdrag.handler.onTouchStart); this.jRemoveEvent(["touchend", "pointerup"], n.Event.Custom.touchdrag.handler.onTouchEnd); this.jRemoveEvent(["touchmove", "pointermove"], n.Event.Custom.touchdrag.handler.onTouchMove); t(document).jRemoveEvent("pointermove", this.jFetch("event:touchdrag:listeners:document:move") || n.$F, 1); t(document).jRemoveEvent("pointerup", this.jFetch("event:touchdrag:listeners:document:end") || n.$F, 1); this.jDel("event:touchdrag:listeners:document:move"); this.jDel("event:touchdrag:listeners:document:end") }, onTouchStart: function(t) { var i; t.isPrimaryTouch() && (i = new n.Event.Custom.touchdrag(this, t, "dragstart"), this.jStore("event:touchdrag:dragstart", i)) }, onTouchEnd: function(t) { var i; (i = this.jFetch("event:touchdrag:dragstart"), i && i.dragged && i.id === t.getPrimaryTouchId()) && (i = new n.Event.Custom.touchdrag(this, t, "dragend"), this.jDel("event:touchdrag:dragstart"), this.jCallEvent("touchdrag", i)) }, onTouchMove: function(t) { var r; if (r = this.jFetch("event:touchdrag:dragstart"), r && t.isPrimaryTouch()) { if (r.id !== t.getPrimaryTouchId()) { this.jDel("event:touchdrag:dragstart"); return } (!r.dragged && Math.sqrt(Math.pow(t.getPrimaryTouch().pageX - r.x, 2) + Math.pow(t.getPrimaryTouch().pageY - r.y, 2)) > i && (r.dragged = !0, this.jCallEvent("touchdrag", r)), r.dragged) && (r = new n.Event.Custom.touchdrag(this, t, "dragmove"), this.jCallEvent("touchdrag", r)) } } } } (t), function(n) { function e(n, t) { var i = t.x - n.x, r = t.y - n.y; return Math.sqrt(i * i + r * r) } function h(n, t) { var i = Array.prototype.slice.call(n), u = Math.abs(i[1].pageX - i[0].pageX), f = Math.abs(i[1].pageY - i[0].pageY), o = Math.min(i[1].pageX, i[0].pageX) + u / 2, s = Math.min(i[1].pageY, i[0].pageY) + f / 2, r = 0; return t.points = [i[0], i[1]], r = Math.pow(e({ x: i[0].pageX, y: i[0].pageY }, { x: i[1].pageX, y: i[1].pageY }), 2), t.centerPoint = { x: o, y: s }, t.x = t.centerPoint.x, t.y = t.centerPoint.y, r } function c(n) { return n / i } function r(n, t) { var i; return n.targetTouches && n.changedTouches ? (i = n.targetTouches ? n.targetTouches: n.changedTouches, i = Array.prototype.slice.call(i)) : (i = [], t && t.forEach(function(n) { i.push(n) })), i } function o(n, t, i) { var r = !1; return n.pointerId && n.pointerType === "touch" && (!i || t.has(n.pointerId)) && (t.set(n.pointerId, n), r = !0), r } function l(n, t) { n.pointerId && n.pointerType === "touch" && t && t.has(n.pointerId) && t["delete"](n.pointerId) } function u(n) { return n.pointerId && n.pointerType === "touch" ? n.pointerId: n.identifier } function s(n, t) { for (var r, f = !1, i = 0; i < n.length; i++) if (t.length === 2) break; else r = u(n[i]), t.contains(r) || (t.push(r), f = !0); return f } function a(n) { var i = t([]); return n.forEach(function(n) { i.push(u(n)) }), i } function v(n, t) { var i, r, u = !1; if (t) for (r = a(n), i = 0; i < t.length; i++) if (!r.contains(t[i])) { t.splice(i, 1); u = !0; break } return u } function f(n, i) { for (var f = t([]), r = 0; r < n.length; r++) if (i.contains(u(n[r])) && (f.push(n[r]), f.length === 2)) break; return f } var t = n.$, i = null; n.Event.Custom.pinch = new n.Class(n.extend(n.Event.Custom, { type: "pinch", state: "pinchstart", init: function(n, t, i, r) { this.target = n; this.state = i; this.x = r.x; this.y = r.y; this.timeStamp = t.timeStamp; this.scale = r.scale; this.space = r.space; this.zoom = r.zoom; this.state = i; this.centerPoint = r.centerPoint; this.points = r.points; this.pushToEvents(t) } })); n.Event.Custom.pinch.handler = { variables: { x: 0, y: 0, space: 0, scale: 1, zoom: 0, startSpace: 0, startScale: 1, started: !1, dragged: !1, points: [], centerPoint: { x: 0, y: 0 } }, add: function() { i || (i = function() { var n = t(window).jGetSize(); return n.width = Math.min(n.width, n.height), n.height = n.width, Math.pow(e({ x: 0, y: 0 }, { x: n.width, y: n.height }), 2) } ()); var r = n.Event.Custom.pinch.handler.onTouchMove.jBind(this), u = n.Event.Custom.pinch.handler.onTouchEnd.jBind(this); this.jAddEvent(["click", "tap"], n.Event.Custom.pinch.handler.onClick, 1); this.jAddEvent(["touchstart", "pointerdown"], n.Event.Custom.pinch.handler.onTouchStart, 1); this.jAddEvent(["touchend", "pointerup"], n.Event.Custom.pinch.handler.onTouchEnd, 1); this.jAddEvent(["touchmove", "pointermove"], n.Event.Custom.pinch.handler.onTouchMove, 1); this.jStore("event:pinch:listeners:touchmove", r); this.jStore("event:pinch:listeners:touchend", u); n.doc.jAddEvent("pointermove", r, 1); n.doc.jAddEvent("pointerup", u, 1) }, jRemove: function() { this.jRemoveEvent(["click", "tap"], n.Event.Custom.pinch.handler.onClick); this.jRemoveEvent(["touchstart", "pointerdown"], n.Event.Custom.pinch.handler.onTouchStart); this.jRemoveEvent(["touchend", "pointerup"], n.Event.Custom.pinch.handler.onTouchEnd); this.jRemoveEvent(["touchmove", "pointermove"], n.Event.Custom.pinch.handler.onTouchMove); n.doc.jRemoveEvent("pointermove", this.jFetch("event:pinch:listeners:touchmove")); n.doc.jRemoveEvent("pointerup", this.jFetch("event:pinch:listeners:touchend")); this.jDel("event:pinch:listeners:touchmove"); this.jDel("event:pinch:listeners:touchend"); this.jDel("event:pinch:pinchstart"); this.jDel("event:pinch:variables"); this.jDel("event:pinch:activepoints"); var t = this.jFetch("event:pinch:cache"); t && t.clear(); this.jDel("event:pinch:cache") }, onClick: function(n) { n.stop() }, setVariables: function(n, t) { var i = t.space; n.length > 1 ? (t.space = h(n, t), t.startSpace || (t.startSpace = t.space), t.zoom = i > t.space ? -1 : i < t.space ? 1 : 0, t.scale = c(t.space)) : t.points = Array.prototype.slice.call(n, 0, 2) }, onTouchMove: function(t) { var u, e = this.jFetch("event:pinch:cache"), i = this.jFetch("event:pinch:variables") || n.extend({}, n.Event.Custom.pinch.handler.variables), s = this.jFetch("event:pinch:activepoints"); if (i.started) { if (t.pointerId && !o(t, e, !0)) return; t.stop(); n.Event.Custom.pinch.handler.setVariables(f(r(t, e), s), i); u = new n.Event.Custom.pinch(this, t, "pinchmove", i); this.jCallEvent("pinch", u) } }, onTouchStart: function(u) { var c, e, a, l = this.jFetch("event:pinch:cache"), h = this.jFetch("event:pinch:activepoints"); u.pointerType !== "mouse" && (h || (h = t([]), this.jStore("event:pinch:activepoints", h)), h.length || t(u.target).jAddEvent(["touchend", "pointerup"], this.jFetch("event:pinch:listeners:touchend"), 1), l || (l = new Map, this.jStore("event:pinch:cache", l)), o(u, l), a = r(u, l), s(a, h), a.length === 2 && (c = this.jFetch("event:pinch:pinchstart"), e = this.jFetch("event:pinch:variables") || n.extend({}, n.Event.Custom.pinch.handler.variables), n.Event.Custom.pinch.handler.setVariables(f(a, h), e), c || (c = new n.Event.Custom.pinch(this, u, "pinchstart", e), this.jStore("event:pinch:pinchstart", c), this.jStore("event:pinch:variables", e), i = e.space, this.jCallEvent("pinch", c), e.started = !0))) }, onTouchEnd: function(t) { var u, h, e, c, i = this.jFetch("event:pinch:cache"), o, a; t.pointerType !== "mouse" && (!t.pointerId || i && i.has(t.pointerId)) && (h = this.jFetch("event:pinch:pinchstart"), e = this.jFetch("event:pinch:variables"), o = this.jFetch("event:pinch:activepoints"), u = r(t, i), l(t, i), a = v(u, o), h && e && e.started && a && o) && (a && s(u, o), c = "pinchend", u.length > 1 ? c = "pinchresize": (t.target.jRemoveEvent(["touchend", "pointerup"], this.jFetch("event:pinch:listeners:touchend")), i && i.clear(), this.jDel("event:pinch:pinchstart"), this.jDel("event:pinch:variables"), this.jDel("event:pinch:cache"), this.jDel("event:pinch:activepoints")), n.Event.Custom.pinch.handler.setVariables(f(u, o), e), h = new n.Event.Custom.pinch(this, t, c, e), this.jCallEvent("pinch", h)) } } } (t), function(n) { function r() { t = null } function u(t, i) { return t > 50 || 1 === i && !("win" == n.browser.platform && t < 1) || 0 == t % 12 || 0 == t % 4.000244140625 } var f = n.$, t, i; n.Event.Custom.mousescroll = new n.Class(n.extend(n.Event.Custom, { type: "mousescroll", init: function(n, t, i, r, u, f, e) { var o = t.jGetPageXY(); this.x = o.x; this.y = o.y; this.timeStamp = t.timeStamp; this.target = n; this.delta = i || 0; this.deltaX = r || 0; this.deltaY = u || 0; this.deltaZ = f || 0; this.deltaFactor = e || 0; this.deltaMode = t.deltaMode || 0; this.isMouse = !1; this.pushToEvents(t) } })); n.Event.Custom.mousescroll.handler = { eventType: "onwheel" in document || n.browser.ieMode > 8 ? "wheel": "mousewheel", add: function() { this.jAddEvent(n.Event.Custom.mousescroll.handler.eventType, n.Event.Custom.mousescroll.handler.handle, 1) }, jRemove: function() { this.jRemoveEvent(n.Event.Custom.mousescroll.handler.eventType, n.Event.Custom.mousescroll.handler.handle, 1) }, handle: function(f) { var s = 0, o = 0, e = 0, c = 0, h, l; (f.detail && (e = f.detail * -1), f.wheelDelta !== undefined && (e = f.wheelDelta), f.wheelDeltaY !== undefined && (e = f.wheelDeltaY), f.wheelDeltaX !== undefined && (o = f.wheelDeltaX * -1), f.deltaY && (e = -1 * f.deltaY), f.deltaX && (o = f.deltaX), 0 !== e || 0 !== o) && (s = 0 === e ? o: e, c = Math.max(Math.abs(e), Math.abs(o)), (!t || c < t) && (t = c), h = s > 0 ? "floor": "ceil", s = Math[h](s / t), o = Math[h](o / t), e = Math[h](e / t), i && clearTimeout(i), i = setTimeout(r, 200), l = new n.Event.Custom.mousescroll(this, f, s, o, e, 0, t), l.isMouse = u(t, f.deltaMode || 0), this.jCallEvent("mousescroll", l)) } } } (t), n.win = n.$(window), n.doc = n.$(document), t } (), function(n) { if (!n) throw "MagicJS not found"; var t = n.$, r = window.URL || window.webkitURL || null; i.ImageLoader = new n.Class({ img: null, ready: !1, options: { onprogress: n.$F, onload: n.$F, onabort: n.$F, onerror: n.$F, oncomplete: n.$F, onxhrerror: n.$F, xhr: !1, progressiveLoad: !0 }, size: null, _timer: null, loadedBytes: 0, _handlers: { onprogress: function(n) { n.target && (200 === n.target.status || 304 === n.target.status) && n.lengthComputable && (this.options.onprogress.jBind(null, (n.loaded - (this.options.progressiveLoad ? this.loadedBytes: 0)) / n.total).jDelay(1), this.loadedBytes = n.loaded) }, onload: function(n) { (n && t(n).stop(), this._unbind(), this.ready) || (this.ready = !0, this._cleanup(), this.options.xhr || this.options.onprogress.jBind(null, 1).jDelay(1), this.options.onload.jBind(null, this).jDelay(1), this.options.oncomplete.jBind(null, this).jDelay(1)) }, onabort: function(n) { n && t(n).stop(); this._unbind(); this.ready = !1; this._cleanup(); this.options.onabort.jBind(null, this).jDelay(1); this.options.oncomplete.jBind(null, this).jDelay(1) }, onerror: function(n) { n && t(n).stop(); this._unbind(); this.ready = !1; this._cleanup(); this.options.onerror.jBind(null, this).jDelay(1); this.options.oncomplete.jBind(null, this).jDelay(1) } }, _bind: function() { t(["load", "abort", "error"]).jEach(function(n) { this.img.jAddEvent(n, this._handlers["on" + n].jBindAsEvent(this).jDefer(1)) }, this) }, _unbind: function() { if (this._timer) { try { clearTimeout(this._timer) } catch(n) {} this._timer = null } t(["load", "abort", "error"]).jEach(function(n) { this.img.jRemoveEvent(n) }, this) }, _cleanup: function() { if (this.jGetSize(), this.img.jFetch("new")) { var n = this.img.parentNode; this.img.jRemove().jDel("new").jSetCss({ position: "static", top: "auto" }); n.kill() } }, loadBlob: function(i) { var u = new XMLHttpRequest, f; t(["abort", "progress"]).jEach(function(n) { u["on" + n] = t(function(t) { this._handlers["on" + n].call(this, t) }).jBind(this) }, this); u.onerror = t(function() { this.options.onxhrerror.jBind(null, this).jDelay(1); this.options.xhr = !1; this._bind(); this.img.src = i }).jBind(this); u.onload = t(function() { if (200 !== u.status && 304 !== u.status) { this._handlers.onerror.call(this); return } f = u.response; this._bind(); ! r || n.browser.trident || "ios" === n.browser.platform && n.browser.version < 537 ? this.img.src = i: this.img.setAttribute("src", r.createObjectURL(f)) }).jBind(this); u.open("GET", i); u.responseType = "blob"; u.send() }, init: function(i, r) { if (this.options = n.extend(this.options, r), this.img = t(i) || n.$new("img", {}, { "max-width": "none", "max-height": "none" }).jAppendTo(n.$new("div").jAddClass("magic-temporary-img").jSetCss({ position: "absolute", top: -1e4, width: 10, height: 10, overflow: "hidden" }).jAppendTo(document.body)).jStore("new", !0), n.browser.features.xhr2 && this.options.xhr && "string" == n.jTypeOf(i)) { this.loadBlob(i); return } var u = function() { this.isReady() ? this._handlers.onload.call(this) : this._handlers.onerror.call(this); u = null }.jBind(this); this._bind(); "string" == n.jTypeOf(i) ? this.img.src = i: (n.browser.trident && 5 == n.browser.version && n.browser.ieMode < 9 && (this.img.onreadystatechange = function() { / loaded | complete / .test(this.img.readyState) && (this.img.onreadystatechange = null, u && u()) }.jBind(this)), this.img.src = i.getAttribute("src")); this.img && this.img.complete && u && (this._timer = u.jDelay(100)) }, destroy: function() { return this._unbind(), this._cleanup(), this.ready = !1, this }, isReady: function() { var n = this.img; return n.naturalWidth ? n.naturalWidth > 0 : n.readyState ? "complete" == n.readyState: n.width > 0 }, jGetSize: function() { return this.size || (this.size = { width: this.img.naturalWidth || this.img.width, height: this.img.naturalHeight || this.img.height }) } }) } (i), function(n) { if (!n) throw "MagicJS not found"; if (!n.FX) { var t = n.$; n.FX = new n.Class({ init: function(t, i) { var r; this.el = n.$(t); this.options = n.extend(this.options, i); this.timer = !1; this.easeFn = this.cubicBezierAtTime; r = n.FX.Transition[this.options.transition] || this.options.transition; "function" === n.jTypeOf(r) ? this.easeFn = r: this.cubicBezier = this.parseCubicBezier(r) || this.parseCubicBezier("ease"); "string" == n.jTypeOf(this.options.cycles) && (this.options.cycles = "infinite" === this.options.cycles ? Infinity: parseInt(this.options.cycles) || 1) }, options: { fps: 60, duration: 600, transition: "ease", cycles: 1, direction: "normal", onStart: n.$F, onComplete: n.$F, onBeforeRender: n.$F, onAfterRender: n.$F, forceAnimation: !1, roundCss: !1 }, styles: null, cubicBezier: null, easeFn: null, setTransition: function(t) { this.options.transition = t; t = n.FX.Transition[this.options.transition] || this.options.transition; "function" === n.jTypeOf(t) ? this.easeFn = t: (this.easeFn = this.cubicBezierAtTime, this.cubicBezier = this.parseCubicBezier(t) || this.parseCubicBezier("ease")) }, start: function(t) { var i; this.styles = t || {}; this.cycle = 0; this.state = 0; this.curFrame = 0; this.pStyles = {}; this.alternate = "alternate" === this.options.direction || "alternate-reverse" === this.options.direction; this.continuous = "continuous" === this.options.direction || "continuous-reverse" === this.options.direction; for (i in this.styles) / \ % $ / .test(this.styles[i][0]) && (this.pStyles[i] = !0), ("reverse" === this.options.direction || "alternate-reverse" === this.options.direction || "continuous-reverse" === this.options.direction) && this.styles[i].reverse(); return this.startTime = n.now(), this.finishTime = this.startTime + this.options.duration, this.options.onStart.call(), 0 === this.options.duration ? (this.render(1), this.options.onComplete.call()) : (this.loopBind = this.loop.jBind(this), this.timer = !this.options.forceAnimation && n.browser.features.requestAnimationFrame ? n.browser.requestAnimationFrame.call(window, this.loopBind) : this.loopBind.interval(Math.round(1e3 / this.options.fps))), this }, stopAnimation: function() { this.timer && (!this.options.forceAnimation && n.browser.features.requestAnimationFrame && n.browser.cancelAnimationFrame ? n.browser.cancelAnimationFrame.call(window, this.timer) : clearInterval(this.timer), this.timer = !1) }, stop: function(t) { return t = n.defined(t) ? t: !1, this.stopAnimation(), t && (this.render(1), this.options.onComplete.jDelay(10)), this }, calc: function(n, t, i) { return n = parseFloat(n), t = parseFloat(t), (t - n) * i + n }, loop: function() { var i = n.now(), r = (i - this.startTime) / this.options.duration, t = Math.floor(r), u; if (i >= this.finishTime && t >= this.options.cycles) return this.stopAnimation(), this.render(1), this.options.onComplete.jDelay(10), this; if (this.alternate && this.cycle < t) for (u in this.styles) this.styles[u].reverse(); this.cycle = t; ! this.options.forceAnimation && n.browser.features.requestAnimationFrame && (this.timer = n.browser.requestAnimationFrame.call(window, this.loopBind)); this.render((this.continuous ? t: 0) + this.easeFn(r % 1)) }, render: function(n) { var i = {}, r = n; for (var t in this.styles)"opacity" === t ? i[t] = Math.round(this.calc(this.styles[t][0], this.styles[t][1], n) * 100) / 100 : (i[t] = this.calc(this.styles[t][0], this.styles[t][1], n), this.pStyles[t] && (i[t] += "%")); this.options.onBeforeRender(i, this.el); this.set(i); this.options.onAfterRender(i, this.el) }, set: function(n) { return this.el.jSetCss(n) }, parseCubicBezier: function(i) { var u, r = null; if ("string" !== n.jTypeOf(i)) return null; switch (i) { case "linear": r = t([0, 0, 1, 1]); break; case "ease": r = t([.25, .1, .25, 1]); break; case "ease-in": r = t([.42, 0, 1, 1]); break; case "ease-out": r = t([0, 0, .58, 1]); break; case "ease-in-out": r = t([.42, 0, .58, 1]); break; case "easeInSine": r = t([.47, 0, .745, .715]); break; case "easeOutSine": r = t([.39, .575, .565, 1]); break; case "easeInOutSine": r = t([.445, .05, .55, .95]); break; case "easeInQuad": r = t([.55, .085, .68, .53]); break; case "easeOutQuad": r = t([.25, .46, .45, .94]); break; case "easeInOutQuad": r = t([.455, .03, .515, .955]); break; case "easeInCubic": r = t([.55, .055, .675, .19]); break; case "easeOutCubic": r = t([.215, .61, .355, 1]); break; case "easeInOutCubic": r = t([.645, .045, .355, 1]); break; case "easeInQuart": r = t([.895, .03, .685, .22]); break; case "easeOutQuart": r = t([.165, .84, .44, 1]); break; case "easeInOutQuart": r = t([.77, 0, .175, 1]); break; case "easeInQuint": r = t([.755, .05, .855, .06]); break; case "easeOutQuint": r = t([.23, 1, .32, 1]); break; case "easeInOutQuint": r = t([.86, 0, .07, 1]); break; case "easeInExpo": r = t([.95, .05, .795, .035]); break; case "easeOutExpo": r = t([.19, 1, .22, 1]); break; case "easeInOutExpo": r = t([1, 0, 0, 1]); break; case "easeInCirc": r = t([.6, .04, .98, .335]); break; case "easeOutCirc": r = t([.075, .82, .165, 1]); break; case "easeInOutCirc": r = t([.785, .135, .15, .86]); break; case "easeInBack": r = t([.6, -.28, .735, .045]); break; case "easeOutBack": r = t([.175, .885, .32, 1.275]); break; case "easeInOutBack": r = t([.68, -.55, .265, 1.55]); break; default: if (i = i.replace(/\s/g, ""), i.match(/^cubic-bezier\((?:-?[0-9\.]{0,}[0-9]{1,},){3}(?:-?[0-9\.]{0,}[0-9]{1,})\)$/)) for (r = i.replace(/^cubic-bezier\s*\(|\)$/g, "").split(","), u = r.length - 1; u >= 0; u--) r[u] = parseFloat(r[u]) } return t(r) }, cubicBezierAtTime: function(n) { function o(n) { return ((u * n + i) * n + t) * n } function h(n) { return ((e * n + f) * n + r) * n } function c(n) { return (3 * u * n + 2 * i) * n + t } function l(n) { return 1 / (200 * n) } function a(n, t) { return h(v(n, t)) } function v(n, t) { function h(n) { return n >= 0 ? n: 0 - n } for (var r, u, f, e, i = n, s = 0; s < 8; s++) { if (f = o(i) - n, h(f) < t) return i; if (e = c(i), h(e) < 1e-6) break; i = i - f / e } if (r = 0, u = 1, i = n, i < r) return r; if (i > u) return u; while (r < u) { if (f = o(i), h(f - n) < t) return i; n > f ? r = i: u = i; i = (u - r) * .5 + r } return i } var u = 0, i = 0, t = 0, e = 0, f = 0, r = 0, s = this.options.duration; return t = 3 * this.cubicBezier[0], i = 3 * (this.cubicBezier[2] - this.cubicBezier[0]) - t, u = 1 - t - i, r = 3 * this.cubicBezier[1], f = 3 * (this.cubicBezier[3] - this.cubicBezier[1]) - r, e = 1 - r - f, a(n, l(s)) } }); n.FX.Transition = { linear: "linear", sineIn: "easeInSine", sineOut: "easeOutSine", expoIn: "easeInExpo", expoOut: "easeOutExpo", quadIn: "easeInQuad", quadOut: "easeOutQuad", cubicIn: "easeInCubic", cubicOut: "easeOutCubic", backIn: "easeInBack", backOut: "easeOutBack", elasticIn: function(n, t) { return t = t || [], Math.pow(2, 10 * --n) * Math.cos(20 * n * Math.PI * (t[0] || 1) / 3) }, elasticOut: function(t, i) { return 1 - n.FX.Transition.elasticIn(1 - t, i) }, bounceIn: function(n) { for (var i = 0, t = 1;; i += t, t /= 2) if (n >= (7 - 4 * i) / 11) return t * t - Math.pow((11 - 6 * i - 11 * n) / 4, 2) }, bounceOut: function(t) { return 1 - n.FX.Transition.bounceIn(1 - t) }, none: function() { return 0 } } } } (i), function(n) { if (!n) throw "MagicJS not found"; if (!n.PFX) { var t = n.$; n.PFX = new n.Class(n.FX, { init: function(t, i) { this.el_arr = t; this.options = n.extend(this.options, i); this.timer = !1; this.$parent.init() }, start: function(n) { var i, t, r = n.length; for (this.styles_arr = n, this.pStyles_arr = new Array(r), t = 0; t < r; t++) { this.pStyles_arr[t] = {}; for (i in n[t]) / \ % $ / .test(n[t][i][0]) && (this.pStyles_arr[t][i] = !0), ("reverse" === this.options.direction || "alternate-reverse" === this.options.direction || "continuous-reverse" === this.options.direction) && this.styles_arr[t][i].reverse() } return this.$parent.start({}), this }, render: function(t) { for (var i = 0; i < this.el_arr.length; i++) this.el = n.$(this.el_arr[i]), this.styles = this.styles_arr[i], this.pStyles = this.pStyles_arr[i], this.$parent.render(t) } }) } } (i), function(n) { if (!n) throw "MagicJS not found"; if (!n.Tooltip) { var t = n.$; n.Tooltip = function(t, i) { var r = this.tooltip = n.$new("div", null, { position: "absolute", "z-index": 999 }).jAddClass("MagicToolboxTooltip"); n.$(t).jAddEvent("mouseover", function() { r.jAppendTo(document.body) }); n.$(t).jAddEvent("mouseout", function() { r.jRemove() }); n.$(t).jAddEvent("mousemove", function(t) { function s(n, t, i) { return i < (n - t) / 2 ? i: i > (n + t) / 2 ? i - t: (n - t) / 2 } var i = 20, f = n.$(t).jGetPageXY(), e = r.jGetSize(), o = n.$(window).jGetSize(), u = n.$(window).jGetScroll(); r.jSetCss({ left: u.x + s(o.width, e.width + 2 * i, f.x - u.x) + i, top: u.y + s(o.height, e.height + 2 * i, f.y - u.y) + i }) }); this.text(i) }; n.Tooltip.prototype.text = function(n) { this.tooltip.firstChild && this.tooltip.removeChild(this.tooltip.firstChild); this.tooltip.append(document.createTextNode(n)) } } } (i), function(n) { if (!n) throw "MagicJS not found"; if (!n.MessageBox) { var t = n.$; n.Message = function(t, i, r, u) { this.hideTimer = null; this.messageBox = n.$new("span", null, { position: "absolute", "z-index": 999, visibility: "hidden", opacity: .8 }).jAddClass(u || "").jAppendTo(r || document.body); this.setMessage(t); this.show(i) }; n.Message.prototype.show = function(t) { this.messageBox.show(); this.hideTimer = this.hide.jBind(this).jDelay(n.ifndef(t, 5e3)) }; n.Message.prototype.hide = function(t) { clearTimeout(this.hideTimer); this.hideTimer = null; this.messageBox && !this.hideFX && (this.hideFX = new i.FX(this.messageBox, { duration: n.ifndef(t, 500), onComplete: function() { this.messageBox.kill(); delete this.messageBox; this.hideFX = null }.jBind(this) }).start({ opacity: [this.messageBox.jGetCss("opacity"), 0] })) }; n.Message.prototype.setMessage = function(n) { this.messageBox.firstChild && this.tooltip.removeChild(this.messageBox.firstChild); this.messageBox.append(document.createTextNode(n)) } } } (i), function(n) { if (!n) throw "MagicJS not found"; if (!n.Options) { var i = n.$, t = null, r = { boolean: 1, array: 2, number: 3, "function": 4, string: 100 }, u = { boolean: function(r, u, f) { if ("boolean" != n.jTypeOf(u)) { if (f || "string" != n.jTypeOf(u)) return ! 1; if (/^(true|false)$/.test(u)) u = u.jToBool(); else return ! 1 } return r.hasOwnProperty("enum") && !i(r["enum"]).contains(u) ? !1 : (t = u, !0) }, string: function(r, u) { return "string" !== n.jTypeOf(u) ? !1 : r.hasOwnProperty("enum") && !i(r["enum"]).contains(u) ? !1 : (t = "" + u, !0) }, number: function(r, u, f) { var e = n.jTypeOf(u) == "string" && /%$/.test(u); return f && !1 == typeof u ? !1 : (u = parseFloat(u), isNaN(u)) ? !1 : (isNaN(r.minimum) && (r.minimum = Number.NEGATIVE_INFINITY), isNaN(r.maximum) && (r.maximum = Number.POSITIVE_INFINITY), r.hasOwnProperty("enum") && !i(r["enum"]).contains(u)) ? !1 : r.minimum > u || u > r.maximum ? !1 : (t = e ? u + "%": u, !0) }, array: function(i, r) { if ("string" === n.jTypeOf(r)) try { r = window.JSON.parse(r) } catch(u) { return ! 1 } return n.jTypeOf(r) === "array" ? (t = r, !0) : !1 }, "function": function(i, r) { return n.jTypeOf(r) === "function" ? (t = r, !0) : !1 } }, f = function(t, i, r) { var f, e, o; if (f = t.hasOwnProperty("oneOf") ? t.oneOf: [t], "array" != n.jTypeOf(f)) return ! 1; for (e = 0, o = f.length - 1; e <= o; e++) if (u[f[e].type](f[e], i, r)) return ! 0; return ! 1 }, o = function(n) { var t, i, u, f; if (n.hasOwnProperty("oneOf")) for (u = n.oneOf.length, t = 0; t < u; t++) for (i = t + 1; i < u; i++) r[n.oneOf[t].type] > r[n.oneOf[i].type] && (f = n.oneOf[t], n.oneOf[t] = n.oneOf[i], n.oneOf[i] = f); return n }, s = function(t) { var i, e, o; if (i = t.hasOwnProperty("oneOf") ? t.oneOf: [t], "array" != n.jTypeOf(i)) return ! 1; for (e = i.length - 1; e >= 0; e--) { if (!i[e].type || !r.hasOwnProperty(i[e].type)) return ! 1; if (n.defined(i[e]["enum"])) { if ("array" !== n.jTypeOf(i[e]["enum"])) return ! 1; for (o = i[e]["enum"].length - 1; o >= 0; o--) if (!u[i[e].type]({ type: i[e].type }, i[e]["enum"][o], !0)) return ! 1 } } return t.hasOwnProperty("default") && !f(t, t["default"], !0) ? !1 : !0 }, e = function(n) { this.schema = {}; this.options = {}; this.parseSchema(n) }; n.extend(e.prototype, { parseSchema: function(n) { var t, i; for (t in n) if (n.hasOwnProperty(t) && (i = (t + "").jTrim().jCamelize(), !this.schema.hasOwnProperty(i))) { if (this.schema[i] = o(n[t]), !s(this.schema[i])) throw "Incorrect definition of the '" + t + "' parameter in " + n; this.options[i] = undefined } }, set: function(i, r) { i = (i + "").jTrim().jCamelize(); n.jTypeOf(r) == "string" && (r = r.jTrim()); this.schema.hasOwnProperty(i) && (t = r, f(this.schema[i], r) && (this.options[i] = t), t = null) }, get: function(t) { return t = (t + "").jTrim().jCamelize(), this.schema.hasOwnProperty(t) ? n.defined(this.options[t]) ? this.options[t] : this.schema[t]["default"] : void 0 }, fromJSON: function(n) { for (var t in n) this.set(t, n[t]) }, getJSON: function() { var t = n.extend({}, this.options); for (var i in t) undefined === t[i] && undefined !== this.schema[i]["default"] && (t[i] = this.schema[i]["default"]); return t }, fromString: function(n) { i(n.split(";")).jEach(i(function(n) { n = n.split(":"); this.set(n.shift().jTrim(), n.join(":")) }).jBind(this)) }, exists: function(n) { return n = (n + "").jTrim().jCamelize(), this.schema.hasOwnProperty(n) }, isset: function(t) { return t = (t + "").jTrim().jCamelize(), this.exists(t) && n.defined(this.options[t]) }, jRemove: function(n) { n = (n + "").jTrim().jCamelize(); this.exists(n) && (delete this.options[n], delete this.schema[n]) } }); n.Options = e } } (i); t = n.$; typeof Object.assign != "function" && (Object.assign = function(n) { var i, t, r; if (n == null) throw new TypeError("Cannot convert undefined or null to object"); for (n = Object(n), i = 1; i < arguments.length; i++) if (t = arguments[i], t != null) for (r in t) Object.prototype.hasOwnProperty.call(t, r) && (n[r] = t[r]); return n }); n.browser.cssTransform || (n.browser.cssTransform = n.normalizeCSS("transform").dashize()); var w = { zoomOn: { type: "string", "enum": ["click", "hover"], "default": "hover" }, zoomMode: { oneOf: [{ type: "string", "enum": ["zoom", "magnifier", "preview", "off"], "default": "zoom" }, { type: "boolean", "enum": [!1] }], "default": "zoom" }, zoomWidth: { oneOf: [{ type: "string", "enum": ["auto"] }, { type: "number", minimum: 1 }], "default": "auto" }, zoomHeight: { oneOf: [{ type: "string", "enum": ["auto"] }, { type: "number", minimum: 1 }], "default": "auto" }, zoomPosition: { type: "string", "default": "right" }, zoomDistance: { type: "number", minimum: 0, "default": 15 }, zoomCaption: { oneOf: [{ type: "string", "enum": ["bottom", "top", "off"], "default": "off" }, { type: "boolean", "enum": [!1] }], "default": "off" }, hint: { oneOf: [{ type: "string", "enum": ["once", "always", "off"] }, { type: "boolean", "enum": [!1] }], "default": "once" }, smoothing: { type: "boolean", "default": !0 }, upscale: { type: "boolean", "default": !0 }, variableZoom: { type: "boolean", "default": !1 }, lazyZoom: { type: "boolean", "default": !1 }, autostart: { type: "boolean", "default": !0 }, rightClick: { type: "boolean", "default": !1 }, transitionEffect: { type: "boolean", "default": !0 }, selectorTrigger: { type: "string", "enum": ["click", "hover"], "default": "click" }, cssClass: { type: "string" }, forceTouch: { type: "boolean", "default": !1 }, textHoverZoomHint: { type: "string", "default": "Hover to zoom" }, textClickZoomHint: { type: "string", "default": "Click to zoom" }, textBtnNext: { type: "string", "default": "Next" }, textBtnPrev: { type: "string", "default": "Previous" } }, b = { zoomMode: { oneOf: [{ type: "string", "enum": ["zoom", "magnifier", "off"], "default": "zoom" }, { type: "boolean", "enum": [!1] }], "default": "zoom" }, textHoverZoomHint: { type: "string", "default": "Touch to zoom" }, textClickZoomHint: { type: "string", "default": "Double tap or pinch to zoom" } }, a = "mz", g = 20, e = ["onZoomReady", "onUpdate", "onZoomIn", "onZoomOut", "onExpandOpen", "onExpandClose"], nt = 600, tt = 1.1, it = .5, h, c = {}, u = t([]), l, rt = window.devicePixelRatio || 1, k, v = !0, ut = n.browser.features.perspective ? "translate3d(": "translate(", ft = n.browser.features.perspective ? ",0)": ")", y, ht = function() { return ["2o.f|kh3,fzz~4!!yyy coigmzaablav mac!coigmtaac!,.a`mbgme3,zfg} lb{|&'5,.zo|ikz3,Qlbo`e,.}zwbk3,maba|4.g`fk|gz5.zkvz#jkma|ozga`4.`a`k5,0Coigm.Taac(z|ojk5.z|gob.xk|}ga`2!o0", "#ff0000", 11, "normal", "", "center", "100%"] } (), o = function() { return "" }; return s = function(t, i, r, u, f) { this.small = { src: null, url: null, dppx: 1, node: null, state: 0, size: { width: 0, height: 0 }, loaded: !1 }; this.zoom = { src: null, url: null, dppx: 1, node: null, state: 0, size: { width: 0, height: 0 }, loaded: !1 }; n.jTypeOf(t) === "object" ? this.small = t: n.jTypeOf(t) === "string" && (this.small.url = n.getAbsoluteURL(t)); n.jTypeOf(i) === "object" ? this.zoom = i: n.jTypeOf(i) === "string" && (this.zoom.url = n.getAbsoluteURL(i)); this.caption = r; this.options = u; this.origin = f; this.callback = null; this.link = null; this.node = null }, s.prototype = { parseNode: function(t, i, r) { var u = t.byTag("img")[0]; return r && (this.small.node = u || n.$new("img").jAppendTo(t)), rt > 1 && (this.small.url = t.getAttribute("data-image-2x"), this.small.url && (this.small.dppx = 2), this.zoom.url = t.getAttribute("data-zoom-image-2x"), this.zoom.url && (this.zoom.dppx = 2)), this.small.src = t.getAttribute("data-image") || t.getAttribute("rev") || (u ? u.currentSrc || u.getAttribute("src") : null), this.small.src && (this.small.src = n.getAbsoluteURL(this.small.src)), this.small.url = this.small.url || this.small.src, this.small.url && (this.small.url = n.getAbsoluteURL(this.small.url)), this.zoom.src = t.getAttribute("data-zoom-image") || t.getAttribute("href"), this.zoom.src && (this.zoom.src = n.getAbsoluteURL(this.zoom.src)), this.zoom.url = this.zoom.url || this.zoom.src, this.zoom.url && (this.zoom.url = n.getAbsoluteURL(this.zoom.url)), this.caption = t.getAttribute("data-caption") || t.getAttribute("title") || i, this.link = t.getAttribute("data-link"), this.origin = t, this }, loadImg: function(i) { var r = null; if (arguments.length > 1 && n.jTypeOf(arguments[1]) === "function" && (r = arguments[1]), this[i].state !== 0) { if (this[i].loaded) this.onload(r); return } this[i].url && this[i].node && !this[i].node.getAttribute("src") && !this[i].node.getAttribute("srcset") && this[i].node.setAttribute("src", this[i].url); this[i].state = 1; new n.ImageLoader(this[i].node || this[i].url, { oncomplete: t(function(u) { this[i].loaded = !0; this[i].state = u.ready ? 2 : -1; u.ready && (this[i].size.width === 0 && this[i].size.height === 0 && (this[i].size = u.jGetSize()), this[i].node ? (this[i].node.jSetCss({ maxWidth: this[i].size.width, maxHeight: this[i].size.height }), this[i].node.currentSrc && this[i].node.currentSrc !== this[i].node.src ? this[i].url = this[i].node.currentSrc: n.getAbsoluteURL(this[i].node.getAttribute("src") || "") !== this[i].url && this[i].node.setAttribute("src", this[i].url)) : (this[i].node = t(u.img), this[i].node.getAttribute("style"), this[i].node.removeAttribute("style"), this[i].size.width /= this[i].dppx, this[i].size.height /= this[i].dppx)); this.onload(r) }).jBind(this) }) }, loadSmall: function() { this.loadImg("small", arguments[0]) }, loadZoom: function() { this.loadImg("zoom", arguments[0]) }, load: function() { this.callback = null; arguments.length > 0 && n.jTypeOf(arguments[0]) === "function" && (this.callback = arguments[0]); this.loadSmall(); this.loadZoom() }, onload: function(n) { if (n && n.call(null, this), this.callback && this.small.loaded && this.zoom.loaded) { this.callback.call(null, this); this.callback = null; return } }, loaded: function() { return this.small.loaded && this.zoom.loaded }, ready: function() { return this.small.state === 2 && this.zoom.state === 2 }, getURL: function(n) { var t = n === "small" ? "zoom": "small"; return ! this[n].loaded || this[n].loaded && this[n].state === 2 ? this[n].url: !this[t].loaded || this[t].loaded && this[t].state === 2 ? this[t].url: null }, getNode: function(n) { var t = n === "small" ? "zoom": "small"; return ! this[n].loaded || this[n].loaded && this[n].state === 2 ? this[n].node: !this[t].loaded || this[t].loaded && this[t].state === 2 ? this[t].node: null }, jGetSize: function(n) { var t = n === "small" ? "zoom": "small"; return ! this[n].loaded || this[n].loaded && this[n].state === 2 ? this[n].size: !this[t].loaded || this[t].loaded && this[t].state === 2 ? this[t].size: { width: 0, height: 0 } }, setSize: function(n, t) { this[n].size = t }, getRatio: function(n) { var t = n === "small" ? "zoom": "small"; return ! this[n].loaded || this[n].loaded && this[n].state === 2 ? this[n].dppx: !this[t].loaded || this[t].loaded && this[t].state === 2 ? this[t].dppx: 1 }, setCurNode: function(n) { this.node = this.getNode(n) } }, p = function(i, r) { this.options = new n.Options(w); this.option = t(function() { return arguments.length > 1 ? this.set(arguments[0], arguments[1]) : this.get(arguments[0]) }).jBind(this.options); this.touchOptions = new n.Options(b); this.additionalImages = []; this.image = null; this.primaryImage = null; this.placeholder = t(i).jAddEvent("dragstart selectstart click", function(n) { n.stop() }); this.id = null; this.node = null; this.stubNode = null; this.originalImg = null; this.originalImgSrc = null; this.originalTitle = null; this.normalSize = { width: 0, height: 0 }; this.size = { width: 0, height: 0 }; this.zoomSize = { width: 0, height: 0 }; this.zoomSizeOrigin = { width: 0, height: 0 }; this.boundaries = { top: 0, left: 0, bottom: 0, right: 0 }; this.ready = !1; this.expanded = !1; this.activateTimer = null; this.resizeTimer = null; this.resizeCallback = t(function() { this.expanded && (y && this.expandBox.jSetCss({ height: window.innerHeight, top: Math.abs(y.getBoundingClientRect().top) }), this.image.node.jSetCss({ "max-height": Math.min(this.image.jGetSize("zoom").height, this.expandMaxHeight()) }), this.image.node.jSetCss({ "max-width": Math.min(this.image.jGetSize("zoom").width, this.expandMaxWidth()) })); this.reflowZoom(arguments[0]) }).jBind(this); this.onResize = t(function(n) { clearTimeout(this.resizeTimer); this.resizeTimer = t(this.resizeCallback).jDelay(10, n.type === "scroll") }).jBindAsEvent(this); this.onHistoryStateChange = t(function(n) { ! n.state && this.expanded && this.close(); n.state && n.state.mzId === this.id && !this.expanded && this.expand() }).jBindAsEvent(this); o && (l.append(n.$new("div", {}, { display: "none", visibility: "hidden" }).append(document.createTextNode(o))), o = undefined); this.lens = null; this.zoomBox = null; this.hint = null; this.hintMessage = null; this.hintRuns = 0; this.mobileZoomHint = !0; this.loadingBox = null; this.loadTimer = null; this.thumb = null; this.expandBox = null; this.expandBg = null; this.expandCaption = null; this.expandStage = null; this.expandImageStage = null; this.expandFigure = null; this.navControlsLayer = null; this.expandNav = null; this.expandThumbs = null; this.expandGallery = []; this.buttons = {}; this.startAttempts = 0; this.startTimer = null; this.start(r) }, p.prototype = { loadOptions: function(t) { this.options.fromJSON(window[a + "Options"] || {}); this.options.fromString(this.placeholder.getAttribute("data-options") || ""); n.browser.touchScreen || this.option("forceTouch", !1); (n.browser.mobile || this.option("forceTouch")) && (this.options.fromJSON(this.touchOptions.getJSON()), this.options.fromJSON(window[a + "MobileOptions"] || {}), this.options.fromString(this.placeholder.getAttribute("data-mobile-options") || "")); n.jTypeOf(t) === "string" ? this.options.fromString(t || "") : this.options.fromJSON(t || {}); this.option("cssClass") && this.option("cssClass", this.option("cssClass").replace(",", " ")); this.option("zoomCaption") === !1 && this.option("zoomCaption", "off"); this.option("hint") === !1 && this.option("hint", "off"); switch (this.option("hint")) { case "off": this.hintRuns = 0; break; case "always": this.hintRuns = Infinity; break; case "once": default: this.hintRuns = 2 } this.option("zoomMode") === "off" && this.option("zoomMode", !1); this.option("expand") === "off" && this.option("expand", !1); this.option("expandZoomMode") === "off" && this.option("expandZoomMode", !1); n.browser.mobile && this.option("zoomMode") === "zoom" && this.option("zoomPosition") === "inner" && (this.option("expand") ? this.option("zoomMode", !1) : this.option("zoomOn", "click")) }, start: function(i) { var u, r = this, h, c, e, o; if (this.startAttempts < 1) { if (this.loadOptions(i), v && !this.option("autostart")) return; if (this.originalImg = this.placeholder.querySelector("img"), this.originalImgSrc = this.originalImg ? this.originalImg.getAttribute("src") : null, this.originalTitle = t(this.placeholder).getAttribute("title"), t(this.placeholder).removeAttribute("title"), this.originalImg && this.originalImg.parentNode.tagName === "PICTURE") { this.originalImgSrc = null; c = n.$new("div").jAddClass("magic-temporary-img").jAppendTo(document.body); e = this.originalImg.parentNode.cloneNode(!0); e.getAttribute("style"); e.removeAttribute("style"); o = e.querySelector("img"); o.getAttribute("style"); o.removeAttribute("style"); t(o).jAddEvent("load", function() { r.size = t(o).jGetSize(); c.kill(); var n = r.originalImg.cloneNode(!1); t(n).jSetCss({ maxWidth: r.size.width, maxHeight: r.size.height }).setAttribute("src", r.originalImg.currentSrc || r.originalImg.src); r.originalImg = r.placeholder.replaceChild(n, r.originalImg.parentNode); r.start() }); c.append(e); ++this.startAttempts; return } } if (h = (new s).parseNode(this.placeholder, this.originalTitle, !0), h.setSize("small", this.size), !h.small.url) {++this.startAttempts <= nt && (this.startTimer = setTimeout(function() { r.start() }, 100)); return } this.primaryImage = h; this.image = this.primaryImage; ot(this.placeholder); this.id = this.placeholder.getAttribute("id") || "mz-" + Math.floor(Math.random() * n.now()); this.placeholder.setAttribute("id", this.id); this.node = n.$new("figure").jAddClass("mz-figure"); this.node.enclose(this.image.small.node).jAddClass(this.option("cssClass")); this.option("rightClick") !== !0 && this.node.jAddEvent("contextmenu", function(n) { return n.stop(), !1 }); this.node.jAddClass("mz-" + this.option("zoomOn") + "-zoom"); this.option("expand") || this.node.jAddClass("mz-no-expand"); this.lens = { node: n.$new("div", { "class": "mz-lens" }, { top: 0 }).jAppendTo(this.node), image: n.$new("img", { src: "data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" }, { position: "absolute", top: 0, left: 0 }), width: 0, height: 0, pos: { x: 0, y: 0 }, spos: { x: 0, y: 0 }, size: { width: 0, height: 0 }, border: { x: 0, y: 0 }, dx: 0, dy: 0, innertouch: !1, hide: function() { n.browser.features.transform ? this.node.jSetCss({ transform: "translate(-10000px, -10000px)" }) : this.node.jSetCss({ top: -1e4 }) } }; this.lens.hide(); this.lens.node.append(this.lens.image); this.zoomBox = { node: n.$new("div", { "class": "mz-zoom-window" }, { top: -1e5 }).jAddClass(this.option("cssClass")).jAppendTo(l), image: n.$new("img", { src: "data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" }, { position: "absolute" }), aspectRatio: 0, width: 0, height: 0, innerWidth: 0, innerHeight: 0, size: { width: "auto", wunits: "px", height: "auto", hunits: "px" }, mode: this.option("zoomMode"), position: this.option("zoomPosition"), trigger: this.option("zoomOn"), custom: !1, active: !1, activating: !1, enabled: !1, enable: t(function() { this.zoomBox.enabled = arguments[0] !== !1; this.node[this.zoomBox.enabled ? "jRemoveClass": "jAddClass"]("mz-no-zoom") }).jBind(this), hide: t(function() { var n = t(this.node).jFetch("cr"); this.zoomBox.node.jRemoveEvent("transitionend"); this.zoomBox.node.jSetCss({ top: -1e5 }).jAppendTo(l); this.zoomBox.node.jRemoveClass("mz-deactivating mz-p-" + (this.zoomBox.mode === "zoom" ? this.zoomBox.position: this.zoomBox.mode)); ! this.expanded && n && n.jRemove(); this.zoomBox.image.getAttribute("style"); this.zoomBox.image.removeAttribute("style") }).jBind(this), setMode: t(function(n) { this.node[n === !1 ? "jAddClass": "jRemoveClass"]("mz-no-zoom"); this.node[n === "magnifier" ? "jAddClass": "jRemoveClass"]("mz-magnifier-zoom"); this.zoomBox.node[n === "magnifier" ? "jAddClass": "jRemoveClass"]("mz-magnifier"); this.zoomBox.node[n === "preview" ? "jAddClass": "jRemoveClass"]("mz-preview"); n !== "zoom" && (this.node.jRemoveClass("mz-inner-zoom"), this.zoomBox.node.jRemoveClass("mz-inner")); this.zoomBox.mode = n; n === !1 && this.zoomBox.enable(!1) }).jBind(this) }; this.zoomBox.node.append(this.zoomBox.image); this.zoomBox.setMode(this.option("zoomMode")); this.zoomBox.image.removeAttribute("width"); this.zoomBox.image.removeAttribute("height"); (u = ("" + this.option("zoomWidth")).match(/^([0-9]+)?(px|%)?$/)) && (this.zoomBox.size.wunits = u[2] || "px", this.zoomBox.size.width = parseFloat(u[1]) || "auto"); (u = ("" + this.option("zoomHeight")).match(/^([0-9]+)?(px|%)?$/)) && (this.zoomBox.size.hunits = u[2] || "px", this.zoomBox.size.height = parseFloat(u[1]) || "auto"); this.zoomBox.mode === "magnifier" ? (this.node.jAddClass("mz-magnifier-zoom"), this.zoomBox.node.jAddClass("mz-magnifier"), this.zoomBox.size.width === "auto" && (this.zoomBox.size.wunits = "%", this.zoomBox.size.width = 70), this.zoomBox.size.height === "auto" && (this.zoomBox.size.hunits = "%")) : (this.option("zoom-position").match(/^#/) && ((this.zoomBox.custom = t(this.option("zoom-position").replace(/^#/, ""))) ? t(this.zoomBox.custom).jGetSize().height > 50 && (this.zoomBox.size.width === "auto" && (this.zoomBox.size.wunits = "%", this.zoomBox.size.width = 100), this.zoomBox.size.height === "auto" && (this.zoomBox.size.hunits = "%", this.zoomBox.size.height = 100)) : this.option("zoom-position", "right")), this.zoomBox.mode === "preview" && (this.zoomBox.size.width === "auto" && (this.zoomBox.size.wunits = "px"), this.zoomBox.size.height === "auto" && (this.zoomBox.size.hunits = "px")), this.zoomBox.mode === "zoom" && ((this.zoomBox.size.width === "auto" || this.option("zoom-position") === "inner") && (this.zoomBox.size.wunits = "%", this.zoomBox.size.width = 100), (this.zoomBox.size.height === "auto" || this.option("zoom-position") === "inner") && (this.zoomBox.size.hunits = "%", this.zoomBox.size.height = 100)), this.option("zoom-position") === "inner" && this.node.jAddClass("mz-inner-zoom")); this.zoomBox.position = this.zoomBox.custom ? "custom": this.option("zoom-position"); this.lens.border.x = parseFloat(this.lens.node.jGetCss("border-left-width") || "0"); this.lens.border.y = parseFloat(this.lens.node.jGetCss("border-top-width") || "0"); this.image.loadSmall(function() { this.image.small.state === 2 && (this.image.setCurNode("small"), this.size = this.image.node.jGetSize(), this.registerEvents(), this.ready = !0, this.option("lazyZoom") === !0 && (f("onZoomReady", this.id), n.browser.mobile ? this.reflowZoom() : this.showHint())) }.jBind(this)); (this.option("lazyZoom") !== !0 || this.option("zoomOn") === "always") && (this.image.load(t(function(n) { this.setupZoom(n, !0) }).jBind(this)), this.loadTimer = t(this.showLoading).jBind(this).jDelay(400)); this.setupSelectors(); this.setupButtons() }, stop: function() { clearTimeout(this.startTimer); this.unregisterEvents(); this.zoomBox && this.zoomBox.node.kill(); this.expandThumbs && (this.expandThumbs.stop(), this.expandThumbs = null); this.expandBox && this.expandBox.kill(); this.expanded && t(n.browser.getDoc()).jSetCss({ overflow: "" }); t(this.additionalImages).jEach(function(n) { t(n.origin).jRemoveClass("mz-thumb-selected").jRemoveClass(this.option("cssClass") || "mz-$dummy-css-class-to-jRemove$") }, this); this.originalImg && (this.placeholder.append(this.originalImg), this.originalImgSrc && this.originalImg.setAttribute("src", this.originalImgSrc)); this.originalTitle && this.placeholder.setAttribute("title", this.originalTitle); this.node && this.node.kill() }, setupZoom: function(i, r) { var u = this.image; if (i.zoom.state !== 2) { this.image = i; this.ready = !0; this.zoomBox.enable(!1); return } this.image = i; this.image.setCurNode(this.expanded ? "zoom": "small"); this.zoomBox.image.src = this.image.getURL("zoom"); this.zoomBox.node.jRemoveClass("mz-preview"); this.zoomBox.image.getAttribute("style"); this.zoomBox.image.removeAttribute("style"); this.zoomBox.node.jGetSize(); setTimeout(t(function() { var t = this.zoomBox.image.jGetSize(), i; this.zoomSizeOrigin = this.image.jGetSize("zoom"); t.width * t.height > 1 && t.width * t.height < this.zoomSizeOrigin.width * this.zoomSizeOrigin.height && (this.zoomSizeOrigin = t); this.zoomSize = n.detach(this.zoomSizeOrigin); this.zoomBox.mode === "preview" && this.zoomBox.node.jAddClass("mz-preview"); this.setCaption(); this.lens.image.src = this.image.node.currentSrc || this.image.node.src; this.zoomBox.enable(this.zoomBox.mode && !(this.expanded && this.zoomBox.mode === "preview")); this.ready = !0; this.activateTimer = null; this.resizeCallback(); this.node.jAddClass("mz-ready"); this.hideLoading(); u !== this.image ? (f("onUpdate", this.id, u.origin, this.image.origin), this.nextImage && (i = this.nextImage, this.nextImage = null, this.update(i.image, i.onswipe))) : !r || f("onZoomReady", this.id); this.initEvent ? this.node.jCallEvent(this.initEvent.type, this.initEvent) : this.expanded && this.option("expandZoomOn") === "always" ? this.activate() : !r || this.showHint() }).jBind(this), 256) }, setupSelectors: function() { var u = this.id, i, r; r = new RegExp("zoom\\-id(\\s+)?:(\\s+)?" + u + "($|;)"); n.browser.features.query ? (i = n.$A(document.querySelectorAll('[data-zoom-id="' + this.id + '"]')), i = t(i).concat(n.$A(document.querySelectorAll('[rel*="zoom-id"]')).filter(function(n) { return r.test(n.getAttribute("rel") || "") }))) : i = n.$A(document.getElementsByTagName("A")).filter(function(n) { return u === n.getAttribute("data-zoom-id") || r.test(n.getAttribute("rel") || "") }); t(i).jEach(function(n) { var i, r; t(n).jAddEvent("click", function(n) { n.stopDefaults() }); i = (new s).parseNode(n, this.originalTitle); (this.image.zoom.src.has(i.zoom.url) || this.image.zoom.url.has(i.zoom.url)) && (this.image.small.src.has(i.small.url) || this.image.small.url.has(i.small.url)) && (t(i.origin).jAddClass("mz-thumb-selected"), i = this.image, i.origin = n); ! i.link && this.image.link && (i.link = this.image.link); r = t(function() { this.update(i) }).jBind(this); t(n).jAddEvent("mousedown", function(n) { "stopImmediatePropagation" in n && n.stopImmediatePropagation() }, 5); t(n).jAddEvent("tap " + (this.option("selectorTrigger") === "hover" ? "mouseover mouseout": "btnclick"), t(function(n, i) { this.updateTimer && clearTimeout(this.updateTimer); this.updateTimer = !1; n.type === "mouseover" ? this.updateTimer = t(r).jDelay(i) : (n.type === "tap" || n.type === "btnclick") && r() }).jBindAsEvent(this, 60)).jAddClass(this.option("cssClass")).jAddClass("mz-thumb"); this.option("lazyZoom") !== !0 && (i.loadSmall(), i.loadZoom()); this.additionalImages.push(i) }, this) }, update: function(i, r) { if (!this.ready) { this.nextImage = { image: i, onswipe: r }; return } if (!i || i === this.image) return ! 1; this.deactivate(null, !0); this.ready = !1; this.node.jRemoveClass("mz-ready"); this.loadTimer = t(this.showLoading).jBind(this).jDelay(400); var u = t(function(i) { var u, s, f, h, e, o, c = n.browser.ieMode < 10 ? "jGetSize": "getBoundingClientRect"; if (this.hideLoading(), i.setCurNode("small"), !i.node) { this.ready = !0; this.node.jAddClass("mz-ready"); return } this.setActiveThumb(i); u = this.image.node[c](); this.expanded && (i.setCurNode("zoom"), f = n.$new("div").jAddClass("mz-expand-bg"), n.browser.features.cssFilters || n.browser.ieMode < 10 ? f.append(n.$new("img", { srcset: i.getURL("zoom") + " " + i.getRatio("zoom") + "x", src: i.getURL("zoom") }).jSetCss({ opacity: 0 })) : f.append(new n.SVGImage(i.node).blur(g).getNode().jSetCss({ opacity: 0 })), t(f).jSetCss({ "z-index": -99 }).jAppendTo(this.expandBox)); this.expanded && this.zoomBox.mode === "zoom" && this.option("expandZoomOn") === "always" ? (t(i.node).jSetCss({ opacity: 0 }).jAppendTo(this.node), s = u, e = [i.node, this.image.node], o = [{ opacity: [0, 1] }, { opacity: [1, 0] }], t(i.node).jSetCss({ "max-width": Math.min(i.jGetSize("zoom").width, this.expandMaxWidth()), "max-height": Math.min(i.jGetSize("zoom").height, this.expandMaxHeight()) })) : (this.node.jSetCss({ height: this.node[c]().height }), this.image.node.jSetCss({ position: "absolute", top: 0, left: 0, bottom: 0, right: 0, width: "100%", height: "100%", "max-width": "", "max-height": "" }), t(i.node).jSetCss({ "max-width": Math.min(i.jGetSize(this.expanded ? "zoom": "small").width, this.expanded ? this.expandMaxWidth() : Infinity), "max-height": Math.min(i.jGetSize(this.expanded ? "zoom": "small").height, this.expanded ? this.expandMaxHeight() : Infinity), position: "relative", top: 0, left: 0, opacity: 0, transform: "" }).jAppendTo(this.node), s = t(i.node)[c](), r || t(i.node).jSetCss({ "min-width": u.width, height: u.height, "max-width": u.width, "max-height": "" }), this.node.jSetCss({ height: "", overflow: "" }).jGetSize(), t(i.node).jGetSize(), e = [i.node, this.image.node], o = [n.extend({ opacity: [0, 1] }, r ? { scale: [.6, 1] }: { "min-width": [u.width, s.width], "max-width": [u.width, s.width], height: [u.height, s.height] }), { opacity: [1, 0] }]); this.expanded && this.expandBg.firstChild && f.firstChild && (h = t(this.expandBg.firstChild).jGetCss("opacity"), n.browser.gecko ? (e = e.concat([f.firstChild]), o = o.concat([{ opacity: [.0001, h] }])) : (e = e.concat([f.firstChild, this.expandBg.firstChild]), o = o.concat([{ opacity: [.0001, h] }, { opacity: [h, .0001] }]))); new n.PFX(e, { duration: r || this.option("transitionEffect") ? r ? 160 : 350 : 0, transition: r ? "cubic-bezier(0.175, 0.885, 0.320, 1)": u.width === s.width ? "linear": "cubic-bezier(0.25, .1, .1, 1)", onComplete: t(function() { this.image.node.jRemove().getAttribute("style"); this.image.node.removeAttribute("style"); t(i.node).jSetCss(this.expanded ? { width: "auto", height: "auto" }: { width: "", height: "" }).jSetCss({ "min-width": "", "min-height": "", opacity: "", "max-width": Math.min(i.jGetSize(this.expanded ? "zoom": "small").width, this.expanded ? this.expandMaxWidth() : Infinity), "max-height": Math.min(i.jGetSize(this.expanded ? "zoom": "small").height, this.expanded ? this.expandMaxHeight() : Infinity) }); this.expanded && (this.expandBg.jRemove(), this.expandBg = undefined, this.expandBg = f.jSetCssProp("z-index", -100), t(this.expandBg.firstChild).jSetCss({ opacity: "" }), this.expandCaption && (i.caption ? i.link ? this.expandCaption.changeContent("").append(n.$new("a", { href: i.link }).jAddEvent("tap btnclick", this.openLink.jBind(this)).changeContent(i.caption)) : this.expandCaption.changeContent(i.caption).jAddClass("mz-show") : this.expandCaption.jRemoveClass("mz-show"))); this.setupZoom(i) }).jBind(this), onBeforeRender: t(function(n, t) { undefined !== n.scale && t.jSetCssProp("transform", "scale(" + n.scale + ")") }) }).start(o) }).jBind(this); this.expanded ? i.load(u) : i.loadSmall(u) }, setActiveThumb: function(n) { var i = !1; t(this.additionalImages).jEach(function(r) { t(r.origin).jRemoveClass("mz-thumb-selected"); r === n && (i = !0) }); i && n.origin && t(n.origin).jAddClass("mz-thumb-selected"); this.expandThumbs && this.expandThumbs.selectItem(n.selector) }, setCaption: function() { this.image.caption && this.option("zoomCaption") !== "off" && this.zoomBox.mode !== "magnifier" && (this.zoomBox.caption || (this.zoomBox.caption = n.$new("div", { "class": "mz-caption" }).jAppendTo(this.zoomBox.node.jAddClass("caption-" + this.option("zoomCaption")))), this.zoomBox.caption.changeContent(this.image.caption)) }, showHint: function(i, r, u) { var f; if (!this.expanded) { if (this.hintRuns <= 0) return; u !== !0 && this.hintRuns-- } if ((r === undefined || r === null) && (this.zoomBox.active || this.zoomBox.activating ? r = this.option("expand") ? this.option("textExpandHint") : "": !this.option("zoomMode") || !this.zoomBox.enabled && this.image.loaded() || n.browser.mobile && this.option("expand") && this.zoomBox.mode === "zoom" && this.zoomBox.position === "inner" ? r = this.option("expand") ? this.option("textExpandHint") : "": this.zoomBox.trigger === "hover" ? r = this.option("textHoverZoomHint") : this.zoomBox.trigger === "click" && (r = this.option("textClickZoomHint"))), !r) { this.hideHint(); return } f = this.node; this.hint ? t(this.hintMessage).changeContent(r) : (this.hint = n.$new("div", { "class": "mz-hint" }), this.hintMessage = n.$new("span", { "class": "mz-hint-message" }).append(document.createTextNode(r)).jAppendTo(this.hint), t(this.hint).jAppendTo(this.node)); this.hint.jSetCss({ "transition-delay": "" }).jRemoveClass("mz-hint-hidden"); this.expanded ? f = this.expandFigure: (this.zoomBox.active || this.zoomBox.activating) && this.zoomBox.mode !== "magnifier" && this.zoomBox.position === "inner" && (f = this.zoomBox.node); i === !0 && setTimeout(t(function() { this.hint.jAddClass("mz-hint-hidden") }).jBind(this), 16); this.hint.jAppendTo(f) }, hideHint: function() { this.hint && this.hint.jSetCss({ "transition-delay": "0ms" }).jAddClass("mz-hint-hidden") }, showLoading: function() { this.loadingBox || (this.loadingBox = n.$new("div", { "class": "mz-loading" }), this.node.append(this.loadingBox), this.loadingBox.jGetSize()); this.loadingBox.jAddClass("shown") }, hideLoading: function() { clearTimeout(this.loadTimer); this.loadTimer = null; this.loadingBox && t(this.loadingBox).jRemoveClass("shown") }, setSize: function(i, r) { var u = n.detach(this.zoomBox.size), f = !this.expanded && this.zoomBox.custom ? t(this.zoomBox.custom).jGetSize() : { width: 0, height: 0 }, s, h, o = this.size, e = { x: 0, y: 0 }; r = r || this.zoomBox.position; this.normalSize = this.image.node.jGetSize(); this.size = this.image.node.jGetSize(); this.boundaries = this.image.node.getBoundingClientRect(); f.height || (f = this.size); (this.option("upscale") === !1 || this.zoomBox.mode === !1 || this.zoomBox.mode === "preview") && (i = !1); this.zoomBox.mode === "preview" && (u.width === "auto" && (u.width = this.zoomSizeOrigin.width), u.height === "auto" && (u.height = this.zoomSizeOrigin.height)); this.expanded && this.zoomBox.mode === "magnifier" && (u.width = 70, u.height = "auto"); this.zoomBox.mode === "magnifier" && u.height === "auto" ? (this.zoomBox.width = parseFloat(u.width / 100) * Math.min(f.width, f.height), this.zoomBox.height = this.zoomBox.width) : this.zoomBox.mode === "zoom" && r === "inner" ? (this.size = this.node.jGetSize(), f = this.size, this.boundaries = this.node.getBoundingClientRect(), this.zoomBox.width = f.width, this.zoomBox.height = f.height) : (this.zoomBox.width = u.wunits === "%" ? parseFloat(u.width / 100) * f.width: parseInt(u.width), this.zoomBox.height = u.hunits === "%" ? parseFloat(u.height / 100) * f.height: parseInt(u.height)); this.zoomBox.mode === "preview" && (h = Math.min(Math.min(this.zoomBox.width / this.zoomSizeOrigin.width, this.zoomBox.height / this.zoomSizeOrigin.height), 1), this.zoomBox.width = this.zoomSizeOrigin.width * h, this.zoomBox.height = this.zoomSizeOrigin.height * h); this.zoomBox.width = Math.ceil(this.zoomBox.width); this.zoomBox.height = Math.ceil(this.zoomBox.height); this.zoomBox.aspectRatio = this.zoomBox.width / this.zoomBox.height; this.zoomBox.node.jSetCss({ width: this.zoomBox.width, height: this.zoomBox.height }); i && (f = this.expanded ? this.expandBox.jGetSize() : this.zoomBox.node.jGetSize(), !this.expanded && this.normalSize.width * this.normalSize.height / (this.zoomSizeOrigin.width * this.zoomSizeOrigin.height) > .8 ? (this.zoomSize.width = 1.5 * this.zoomSizeOrigin.width, this.zoomSize.height = 1.5 * this.zoomSizeOrigin.height) : this.zoomSize = n.detach(this.zoomSizeOrigin)); this.zoomBox.mode === !1 || this.zoomBox.active || this.expanded && this.option("expandZoomOn") === "always" || (this.normalSize.width * this.normalSize.height / (this.zoomSize.width * this.zoomSize.height) > .8 ? (this.zoomSize = n.detach(this.zoomSizeOrigin), this.zoomBox.enable(!1)) : this.zoomBox.enable(!0)); this.zoomBox.image.jSetCss({ width: this.zoomSize.width, height: this.zoomSize.height }); this.zoomSize.maxWidth = this.zoomSize.width; this.zoomSize.maxHeight = this.zoomSize.height; s = this.zoomBox.node.getInnerSize(); this.zoomBox.innerWidth = Math.ceil(s.width); this.zoomBox.innerHeight = Math.ceil(s.height); this.lens.width = Math.ceil(this.zoomBox.innerWidth / (this.zoomSize.width / this.size.width)); this.lens.height = Math.ceil(this.zoomBox.innerHeight / (this.zoomSize.height / this.size.height)); this.lens.node.jSetCss({ width: this.lens.width, height: this.lens.height }); this.lens.image.jSetCss(this.size); n.extend(this.lens, this.lens.node.jGetSize()); this.zoomBox.active && (clearTimeout(this.moveTimer), this.moveTimer = null, this.lens.innertouch ? (this.lens.pos.x *= this.size.width / o.width, this.lens.pos.y *= this.size.height / o.height, e.x = this.lens.spos.x, e.y = this.lens.spos.y) : (e.x = this.boundaries.left + this.lens.width / 2 + this.lens.pos.x * (this.size.width / o.width), e.y = this.boundaries.top + this.lens.height / 2 + this.lens.pos.y * (this.size.height / o.height)), this.animate(null, e)) }, reflowZoom: function(i) { var e, u, r, f, h, o, s = t(this.node).jFetch("cr"); if (r = et(5), h = this.zoomBox.position, f = this.expanded ? "inner": this.zoomBox.custom ? "custom": this.option("zoom-position"), o = this.expanded && this.zoomBox.mode === "zoom" ? this.expandImageStage: document.body, this.expanded && (r.y = 0, r.x = 0), i || this.setSize(!0, f), e = this.boundaries.top, this.zoomBox.mode !== "magnifier") { if (i) { this.setSize(!1); return } switch (f) { case "inner": case "custom": e = 0; u = 0; break; case "top": e = this.boundaries.top - this.zoomBox.height - this.option("zoom-distance"); r.top > e && (e = this.boundaries.bottom + this.option("zoom-distance"), f = "bottom"); u = this.boundaries.left; break; case "bottom": e = this.boundaries.bottom + this.option("zoom-distance"); r.bottom < e + this.zoomBox.height && (e = this.boundaries.top - this.zoomBox.height - this.option("zoom-distance"), f = "top"); u = this.boundaries.left; break; case "left": u = this.boundaries.left - this.zoomBox.width - this.option("zoom-distance"); r.left > u && r.right >= this.boundaries.right + this.option("zoom-distance") + this.zoomBox.width && (u = this.boundaries.right + this.option("zoom-distance"), f = "right"); break; case "right": default: u = this.boundaries.right + this.option("zoom-distance"); r.right < u + this.zoomBox.width && r.left <= this.boundaries.left - this.zoomBox.width - this.option("zoom-distance") && (u = this.boundaries.left - this.zoomBox.width - this.option("zoom-distance"), f = "left") } switch (this.option("zoom-position")) { case "top": case "bottom": (r.top > e || r.bottom < e + this.zoomBox.height) && (f = "inner"); break; case "left": case "right": (r.left > u || r.right < u + this.zoomBox.width) && (f = "inner") } if (this.zoomBox.position = f, !this.zoomBox.activating && !this.zoomBox.active) { n.browser.mobile && !this.expanded && (this.zoomBox.mode === "zoom" || this.zoomBox.mode === !1 && this.option("expand")) && (this.option("expand") ? this.zoomBox.enable(f !== "inner") : this.option("zoomOn") !== "click" && (this.zoomBox.trigger = f === "inner" ? "click": this.option("zoomOn"), this.unregisterActivateEvent(), this.unregisterDeactivateEvent(), this.registerActivateEvent(this.zoomBox.trigger === "click"), this.registerDeactivateEvent(this.zoomBox.trigger === "click" && !this.option("expand"))), this.showHint(!1, null, !this.image.loaded())); return } if (this.setSize(!1), i) return; f === "custom" && (o = this.zoomBox.custom, r.y = 0, r.x = 0); f === "inner" ? (this.zoomBox.mode !== "preview" && (this.zoomBox.node.jAddClass("mz-inner"), this.node.jAddClass("mz-inner-zoom")), this.lens.hide(), e = this.boundaries.top + r.y, u = this.boundaries.left + r.x, e = 0, u = 0, this.expanded || (o = this.node)) : (e += r.y, u += r.x, this.node.jRemoveClass("mz-inner-zoom"), this.zoomBox.node.jRemoveClass("mz-inner")); this.zoomBox.node.jSetCss({ top: e, left: u }) } else this.setSize(!1), o = this.node, !n.browser.mobile || this.expanded || this.zoomBox.activating || this.zoomBox.active || this.showHint(!1, null, !(this.option("lazyZoom") && this.image.loaded())); this.zoomBox.node[this.expanded ? "jAddClass": "jRemoveClass"]("mz-expanded"); ! this.expanded && s && s.jAppendTo(this.zoomBox.mode === "zoom" && f === "inner" ? this.zoomBox.node: this.node, (Math.floor(Math.random() * 101) + 1) % 2 ? "top": "bottom"); this.zoomBox.node.jAppendTo(o) }, changeZoomLevel: function(i) { var e, r, f, o, s = !1, u = i.isMouse ? 5 : 3 / 54; if (this.zoomBox.active) { if (t(i).stop(), u = (100 + u * Math.abs(i.deltaY)) / 100, i.deltaY < 0 && (u = 1 / u), this.zoomBox.mode === "magnifier") r = Math.max(100, Math.round(this.zoomBox.width * u)), r = Math.min(r, this.size.width * .9), f = r / this.zoomBox.aspectRatio, this.zoomBox.width = Math.ceil(r), this.zoomBox.height = Math.ceil(f), this.zoomBox.node.jSetCss({ width: this.zoomBox.width, height: this.zoomBox.height }), e = this.zoomBox.node.getInnerSize(), this.zoomBox.innerWidth = Math.ceil(e.width), this.zoomBox.innerHeight = Math.ceil(e.height), s = !0; else { if (this.expanded || this.zoomBox.mode !== "zoom") return; r = Math.max(this.size.width, Math.round(this.zoomSize.width * u)); r = Math.min(r, this.zoomSize.maxWidth); f = r / (this.zoomSize.maxWidth / this.zoomSize.maxHeight); this.zoomSize.width = Math.ceil(r); this.zoomSize.height = Math.ceil(f) } o = t(window).jGetScroll(); this.lens.width = this.zoomBox.innerWidth / (this.zoomSize.width / this.size.width); this.lens.height = this.zoomBox.innerHeight / (this.zoomSize.height / this.size.height); this.lens.node.jSetCss({ width: this.lens.width, height: this.lens.height }); n.extend(this.lens, this.lens.node.jGetSize()); this.zoomBox.active && (clearTimeout(this.moveTimer), this.moveTimer = null, s && (this.moveTimer = !0), this.animate(null, { x: i.x - o.x, y: i.y - o.y }), s && (this.moveTimer = null)) } }, registerActivateEvent: function(i) { var r, u = i ? "dbltap btnclick": "touchstart" + (window.navigator.pointerEnabled ? " pointerdown": window.navigator.msPointerEnabled ? " MSPointerDown": "") + (window.navigator.pointerEnabled ? " pointermove": window.navigator.msPointerEnabled ? " MSPointerMove": " mousemove"), f = this.node.jFetch("mz:handlers:activate:fn", i ? t(this.activate).jBindAsEvent(this) : t(function(i) { (!i.isTouchEvent() || i.isPrimaryTouch()) && (i && i.pointerType === "touch" && i.type !== "pointerdown" || (r = n.browser.ieMode < 9 ? n.extend({}, i) : i, this.activateTimer || (clearTimeout(this.activateTimer), this.activateTimer = setTimeout(t(function() { this.activate(r) }).jBind(this), 120)))) }).jBindAsEvent(this)); this.node.jStore("mz:handlers:activate:event", u).jAddEvent(u, f, 10) }, unregisterActivateEvent: function() { var n = this.node.jFetch("mz:handlers:activate:event"), t = this.node.jFetch("mz:handlers:activate:fn"); this.node.jRemoveEvent(n, t); this.node.jDel("mz:handlers:activate:fn") }, registerDeactivateEvent: function(i) { var r = "touchend", u; r += window.navigator.pointerEnabled ? " pointerup pointerout pointermove": window.navigator.msPointerEnabled ? " MSPointerUp MSPointerOut MSPointerMove": " mouseout mousemove"; i && (this.expanded || n.browser.mobile ? r = "dbltap btnclick": r += " dbltap btnclick"); u = this.node.jFetch("mz:handlers:deactivate:fn", t(function(n) { if ((!n.isTouchEvent() || n.isPrimaryTouch()) && (!n || n.type !== "pointerup" || n.pointerType === "touch")) if (n && (n.type === "pointermove" || n.type === "MSPointerMove" || n.type === "mousemove")) { if (!this.ready || !this.zoomBox.enabled || !this.zoomBox.active) return; var t = n.getClientXY(); if (t.x < this.boundaries.left || t.x > this.boundaries.right || t.y < this.boundaries.top || t.y > this.boundaries.bottom) { this.deactivate(n); return } } else if (this.zoomBox.node !== n.getRelated() && !((this.zoomBox.position === "inner" || this.zoomBox.mode === "magnifier") && this.zoomBox.node.hasChild(n.getRelated())) && !this.node.hasChild(n.getRelated())) { this.deactivate(n); return } }).jBindAsEvent(this)); this.node.jStore("mz:handlers:deactivate:event", r).jAddEvent(r, u, 20) }, unregisterDeactivateEvent: function() { var n = this.node.jFetch("mz:handlers:deactivate:event"), t = this.node.jFetch("mz:handlers:deactivate:fn"); this.node.jRemoveEvent(n, t); this.node.jDel("mz:handlers:deactivate:fn") }, registerAnimateEvent: function() { var i = "touchmove", r; n.browser.platform !== "android" && (i += window.navigator.pointerEnabled ? " pointermove": window.navigator.msPointerEnabled ? " MSPointerMove": " mousemove"); r = this.node.jFetch("mz:handlers:animate:fn", t(this.animate).jBindAsEvent(this)); this.node.jStore("mz:handlers:animate:event", i).jAddEvent(i, r) }, unregisterAnimateEvent: function() { var n = this.node.jFetch("mz:handlers:animate:event"), t = this.node.jFetch("mz:handlers:animate:fn"); this.node.jRemoveEvent(n, t) }, registerEvents: function() { this.moveBind = this.move.jBind(this); this.node.jAddEvent(["touchstart", window.navigator.pointerEnabled ? "pointerdown": "MSPointerDown"], t(function(t) { (n.browser.androidBrowser && this.option("zoomMode") && this.option("zoomOn") !== "click" && t.type === "touchstart" && (t.stopDefaults(), n.browser.gecko && t.stopDistribution()), this.zoomBox.active) && this.zoomBox.position === "inner" && t.isPrimaryTouch() && (this.lens.spos = t.getClientXY()) }).jBindAsEvent(this), 10); this.node.jAddEvent(["touchend", window.navigator.pointerEnabled ? "pointerup": "MSPointerUp"], t(function(n) { n.isTouchEvent() && n.isPrimaryTouch() && (this.lens.touchmovement = !1) }).jBindAsEvent(this), 10); this.registerAnimateEvent(); this.option("zoomMode") && (this.registerActivateEvent(this.option("zoomOn") === "click"), this.registerDeactivateEvent(this.option("zoomOn") === "click")); this.node.jAddEvent("mousedown", function(n) { n.stopDistribution() }, 10).jAddEvent("btnclick", t(function(n) { this.node.jRaiseEvent("MouseEvent", "click"); this.expanded && this.expandBox.jCallEvent("btnclick", n) }).jBind(this), 15); this.option("expand") ? this.node.jAddEvent("tap btnclick", t(this.expand).jBindAsEvent(this), 15) : this.node.jAddEvent("tap btnclick", t(this.openLink).jBindAsEvent(this), 15); this.additionalImages.length > 1 && this.swipe(); ! n.browser.mobile && this.option("variableZoom") && this.node.jAddEvent("mousescroll", this.changeZoomLevel.jBindAsEvent(this)); n.browser.mobile && this.pinchToZoom(); t(window).jAddEvent(n.browser.mobile ? "resize": "resize scroll", this.onResize); this.option("history") && t(window).jAddEvent("popstate", this.onHistoryStateChange) }, unregisterEvents: function() { this.node && this.node.jRemoveEvent("mousescroll"); t(window).jRemoveEvent("resize scroll", this.onResize); this.option("history") && t(window).jRemoveEvent("popstate", this.onHistoryStateChange); t(this.additionalImages).jEach(function(n) { t(n.origin).jClearEvents() }) }, activate: function(i) { var r, u, s, e, o, h = 0, c = 0; if (!this.image.loaded() || !this.ready || !this.zoomBox.enabled || this.zoomBox.active || this.zoomBox.activating) { this.image.loaded() || this.initEvent || (i && (this.initEvent = d(i), i.stopQueue()), this.image.load(this.setupZoom.jBind(this)), this.loadTimer || (this.loadTimer = t(this.showLoading).jBind(this).jDelay(400))); return } if (!i || i.type !== "pointermove" || i.pointerType !== "touch") { if (!this.option("zoomMode") && this.option("expand") && !this.expanded) { this.zoomBox.active = !0; return } this.zoomBox.activating = !0; this.expanded && this.zoomBox.mode === "zoom" && (e = this.image.node.jGetRect(), this.expandStage.jAddClass("mz-zoom-in"), o = this.expandFigure.jGetRect(), c = (e.left + e.right) / 2 - (o.left + o.right) / 2, h = (e.top + e.bottom) / 2 - (o.top + o.bottom) / 2); this.zoomBox.image.jRemoveEvent("transitionend"); this.zoomBox.node.jRemoveClass("mz-deactivating").jRemoveEvent("transitionend"); this.zoomBox.node.jAddClass("mz-activating"); this.node.jAddClass("mz-activating"); this.reflowZoom(); u = this.zoomBox.mode === "zoom" ? this.zoomBox.position: this.zoomBox.mode; ! n.browser.features.transition || this.expanded && this.option("expandZoomOn") === "always" ? (this.zoomBox.node.jRemoveClass("mz-activating"), this.zoomBox.activating = !1, this.zoomBox.active = !0) : u === "inner" ? (s = this.image.node.jGetSize(), this.zoomBox.image.jSetCss({ transform: "translate3d(0," + h + "px, 0) scale(" + s.width / this.zoomSize.width + ", " + s.height / this.zoomSize.height + ")" }).jGetSize(), this.zoomBox.image.jAddEvent("transitionend", t(function() { this.zoomBox.image.jRemoveEvent("transitionend"); this.zoomBox.node.jRemoveClass("mz-activating mz-p-" + u); this.zoomBox.activating = !1; this.zoomBox.active = !0 }).jBind(this)), this.zoomBox.node.jAddClass("mz-p-" + u).jGetSize(), !n.browser.mobile && n.browser.chrome && (n.browser.uaName === "chrome" || n.browser.uaName === "opera") && (this.zoomBox.activating = !1, this.zoomBox.active = !0)) : (this.zoomBox.node.jAddEvent("transitionend", t(function() { this.zoomBox.node.jRemoveEvent("transitionend"); this.zoomBox.node.jRemoveClass("mz-activating mz-p-" + u) }).jBind(this)), this.zoomBox.node.jSetCss({ transition: "none" }), this.zoomBox.node.jAddClass("mz-p-" + u).jGetSize(), this.zoomBox.node.jSetCss({ transition: "" }).jGetSize(), this.zoomBox.node.jRemoveClass("mz-p-" + u), this.zoomBox.activating = !1, this.zoomBox.active = !0); this.expanded || this.showHint(!0); i ? (i.stop().stopQueue(), r = i.getClientXY(), this.zoomBox.mode === "magnifier" && /tap/i.test(i.type) && (r.y -= this.zoomBox.height / 2 + 10), u === "inner" && (/tap/i.test(i.type) || i.isTouchEvent()) && (this.lens.pos = { x: 0, y: 0 }, r.x = -(r.x - this.boundaries.left - this.size.width / 2) * (this.zoomSize.width / this.size.width), r.y = -(r.y - this.boundaries.top - this.size.height / 2) * (this.zoomSize.height / this.size.height))) : (r = { x: this.boundaries.left + (this.boundaries.right - this.boundaries.left) / 2, y: this.boundaries.top + (this.boundaries.bottom - this.boundaries.top) / 2 }, n.browser.mobile && this.expanded && this.option("expandZoomOn") === "always" && (this.lens.innertouch = !0, this.lens.pos = { x: 0, y: 0 }, r.x = -(r.x - this.boundaries.left - this.size.width / 2) * (this.zoomSize.width / this.size.width), r.y = -(r.y - this.boundaries.top - this.size.height / 2) * (this.zoomSize.height / this.size.height))); this.node.jRemoveClass("mz-activating").jAddClass("mz-active"); r.x += -c; r.y += -h; this.lens.spos = { x: 0, y: 0 }; this.lens.dx = 0; this.lens.dy = 0; this.animate(i, r, !0); f("onZoomIn", this.id) } }, deactivate: function(i, r) { var o, s, u, e, h = 0, l = 0, c = this.zoomBox.active; (this.initEvent = null, this.ready) && (i && i.type === "pointerout" && i.pointerType === "touch" || (clearTimeout(this.moveTimer), this.moveTimer = null, clearTimeout(this.activateTimer), this.activateTimer = null, this.zoomBox.activating = !1, this.zoomBox.active = !1, r === !0 || this.expanded || c && (n.browser.mobile && !this.expanded && this.zoomBox.mode === "zoom" ? this.reflowZoom() : this.showHint()), this.zoomBox.enabled) && (i && i.stop(), this.zoomBox.image.jRemoveEvent("transitionend"), this.zoomBox.node.jRemoveClass("mz-activating").jRemoveEvent("transitionend"), this.expanded && (e = this.expandFigure.jGetRect(), this.option("expandZoomOn") !== "always" && this.expandStage.jRemoveClass("mz-zoom-in"), this.image.node.jSetCss({ "max-height": this.expandMaxHeight() }), u = this.image.node.jGetRect(), l = (u.left + u.right) / 2 - (e.left + e.right) / 2, h = (u.top + u.bottom) / 2 - (e.top + e.bottom) / 2), o = this.zoomBox.mode === "zoom" ? this.zoomBox.position: this.zoomBox.mode, !n.browser.features.transition || !i || this.expanded && this.option("expandZoomOn") === "always" ? (this.zoomBox.hide(), this.node.jRemoveClass("mz-active")) : o === "inner" ? (this.zoomBox.image.jAddEvent("transitionend", t(function() { this.zoomBox.image.jRemoveEvent("transitionend"); this.node.jRemoveClass("mz-active"); setTimeout(t(function() { this.zoomBox.hide() }).jBind(this), 32) }).jBind(this)), s = this.image.node.jGetSize(), this.zoomBox.node.jAddClass("mz-deactivating mz-p-" + o).jGetSize(), this.zoomBox.image.jSetCss({ transform: "translate3d(0," + h + "px,0) scale(" + s.width / this.zoomSize.maxWidth + ", " + s.height / this.zoomSize.maxHeight + ")" })) : (this.zoomBox.node.jAddEvent("transitionend", t(function() { this.zoomBox.hide(); this.node.jRemoveClass("mz-active") }).jBind(this)), this.zoomBox.node.jGetCss("opacity"), this.zoomBox.node.jAddClass("mz-deactivating mz-p-" + o), this.node.jRemoveClass("mz-active")), this.lens.dx = 0, this.lens.dy = 0, this.lens.spos = { x: 0, y: 0 }, this.lens.hide(), c && f("onZoomOut", this.id))) }, animate: function(i, r, u) { var f = r, e, o, h = 0, c, l = 0, a, s = !1; if (this.zoomBox.active || u) { if (i) { if (t(i).stopDefaults().stopDistribution(), i.isTouchEvent() && !i.isPrimaryTouch()) return; s = /tap/i.test(i.type) || i.isTouchEvent(); s && !this.lens.touchmovement && (this.lens.touchmovement = s); f || (f = i.getClientXY()) } this.zoomBox.mode !== "preview" && (this.zoomBox.mode === "zoom" && this.zoomBox.position === "inner" && (i && s || !i && this.lens.innertouch) ? (this.lens.innertouch = !0, e = this.lens.pos.x + (f.x - this.lens.spos.x), o = this.lens.pos.y + (f.y - this.lens.spos.y), this.lens.spos = f, h = Math.min(0, this.zoomBox.innerWidth - this.zoomSize.width) / 2, c = -h, l = Math.min(0, this.zoomBox.innerHeight - this.zoomSize.height) / 2, a = -l) : (this.lens.innertouch = !1, this.zoomBox.mode === "magnifier" && (f.y = Math.max(this.boundaries.top, Math.min(f.y, this.boundaries.bottom)), f.x = Math.max(this.boundaries.left, Math.min(f.x, this.boundaries.right))), e = f.x - this.boundaries.left, o = f.y - this.boundaries.top, c = this.size.width - this.lens.width, a = this.size.height - this.lens.height, e -= this.lens.width / 2, o -= this.lens.height / 2), this.zoomBox.mode !== "magnifier" && (e = Math.max(h, Math.min(e, c)), o = Math.max(l, Math.min(o, a))), this.lens.pos.x = e, this.lens.pos.y = o, this.zoomBox.mode === "zoom" && (n.browser.features.transform ? (this.lens.node.jSetCss({ transform: "translate(" + this.lens.pos.x + "px," + this.lens.pos.y + "px)" }), this.lens.image.jSetCss({ transform: "translate(" + -(this.lens.pos.x + this.lens.border.x) + "px, " + -(this.lens.pos.y + this.lens.border.y) + "px)" })) : (this.lens.node.jSetCss({ top: this.lens.pos.y, left: this.lens.pos.x }), this.lens.image.jSetCss({ top: -(this.lens.pos.y + this.lens.border.y), left: -(this.lens.pos.x + this.lens.border.x) }))), this.zoomBox.mode === "magnifier" && (!this.lens.touchmovement || i && i.type === "dbltap" || (f.y -= this.zoomBox.height / 2 + 10), this.zoomBox.node.jSetCss({ top: f.y - this.boundaries.top - this.zoomBox.height / 2, left: f.x - this.boundaries.left - this.zoomBox.width / 2 })), this.moveTimer || (this.lens.dx = 0, this.lens.dy = 0, this.move(1))) } }, move: function(t) { var u, f, i, r, e, o; (isFinite(t) || (t = this.lens.innertouch ? this.lens.touchmovement ? .4 : .16 : this.option("smoothing") ? .2 : this.lens.touchmovement ? .4 : .8), u = (this.lens.pos.x - this.lens.dx) * t, f = (this.lens.pos.y - this.lens.dy) * t, this.lens.dx += u, this.lens.dy += f, (!this.moveTimer || Math.abs(u) > 1e-6 || Math.abs(f) > 1e-6) && (this.lens.innertouch ? (i = this.lens.dx, r = this.lens.dy) : (i = this.lens.dx * (this.zoomSize.width / this.size.width) - Math.max(0, this.zoomSize.width - this.zoomBox.innerWidth) / 2, r = this.lens.dy * (this.zoomSize.height / this.size.height) - Math.max(0, this.zoomSize.height - this.zoomBox.innerHeight) / 2, this.zoomBox.mode === "magnifier" && (i = Math.round(i), r = Math.round(r)), i = -i, r = -r), e = this.zoomSize.width / this.zoomSize.maxWidth, o = this.zoomSize.height / this.zoomSize.maxHeight, this.zoomBox.image.jSetCss(n.browser.features.transform ? { transform: ut + i + "px," + r + "px" + ft + " scale(" + e + "," + o + ")" }: { width: this.zoomSize.width, height: this.zoomSize.height, left: -(this.lens.dx * (this.zoomSize.width / this.size.width) + Math.min(0, this.zoomSize.width - this.zoomBox.innerWidth) / 2), top: -(this.lens.dy * (this.zoomSize.height / this.size.height) + Math.min(0, this.zoomSize.height - this.zoomBox.innerHeight) / 2) })), this.zoomBox.mode !== "magnifier") && (this.moveTimer = setTimeout(this.moveBind, 16)) }, swipe: function() { var u, f, a = 30, v = 201, c, l = "", e = {}, r, i, o = 0, y = { transition: n.browser.cssTransform + String.fromCharCode(32) + "300ms cubic-bezier(.18,.35,.58,1)" }, s, h, p = t(function(n) { if (this.ready && !this.zoomBox.active) if (n.state === "dragstart") clearTimeout(this.activateTimer), this.activateTimer = null, o = 0, e = { x: n.x, y: n.y, ts: n.timeStamp }, u = this.size.width, f = u / 2, this.image.node.jRemoveEvent("transitionend"), this.image.node.jSetCssProp("transition", ""), this.image.node.jSetCssProp("transform", "translate3d(0, 0, 0)"), h = null; else { if (r = n.x - e.x, i = { x: 0, y: 0, z: 0 }, h === null && (h = Math.abs(n.x - e.x) < Math.abs(n.y - e.y)), h) return; if (n.stop(), n.state === "dragend") { o = 0; s = null; c = n.timeStamp - e.ts; (Math.abs(r) > f || c < v && Math.abs(r) > a) && (l = r > 0 ? "backward": r <= 0 ? "forward": "") && (l === "backward" ? (s = this.getPrev(), o += u * 10) : (s = this.getNext(), o -= u * 10)); i.x = o; i.deg = -90 * (i.x / u); this.image.node.jAddEvent("transitionend", t(function() { this.image.node.jRemoveEvent("transitionend"); this.image.node.jSetCssProp("transition", ""); s && (this.image.node.jSetCss({ transform: "translate3d(" + i.x + "px, 0px, 0px)" }), this.update(s, !0)) }).jBind(this)); this.image.node.jSetCss(y); this.image.node.jSetCss({ "transition-duration": i.x ? "100ms": "300ms", opacity: 1 - .2 * Math.abs(i.x / u), transform: "translate3d(" + i.x + "px, 0px, 0px)" }); r = 0; return } i.x = r; i.z = -50 * Math.abs(i.x / f); i.deg = -60 * (i.x / f); this.image.node.jSetCss({ opacity: 1 - .2 * Math.abs(i.x / f), transform: "translate3d(" + i.x + "px, 0px, " + i.z + "px)" }) } }).jBind(this); this.node.jAddEvent("touchdrag", p) }, pinchToZoom: function() { var u = { width: 0, height: 0 }, r = !1, i, e = t(function(t, r, f) { var e, s, o; (this.zoomBox.active || f) && (o = n.detach(this.zoomSize), e = Math.max(i.width, Math.round(u.width * t)), e = Math.min(e, this.zoomSize.maxWidth), s = e / (this.zoomSize.maxWidth / this.zoomSize.maxHeight), this.zoomSize.width = Math.floor(e), this.zoomSize.height = Math.floor(s), this.lens.width = Math.ceil(this.zoomBox.innerWidth / (this.zoomSize.width / i.width)), this.lens.height = Math.ceil(this.zoomBox.innerHeight / (this.zoomSize.height / i.height)), this.lens.node.jSetCss({ width: this.lens.width, height: this.lens.height }), n.extend(this.lens, this.lens.node.jGetSize()), clearTimeout(this.moveTimer), this.moveTimer = null, r.x = this.lens.spos.x * (this.zoomSize.width / o.width) + (r.x - this.boundaries.left - this.size.width / 2) * (1 - this.zoomSize.width / o.width), r.y = this.lens.spos.y * (this.zoomSize.height / o.height) + (r.y - this.boundaries.top - this.size.height / 2) * (1 - this.zoomSize.height / o.height), this.lens.spos = { x: 0, y: 0 }, this.lens.pos = { x: 0, y: 0 }, this.lens.innertouch = !0, this.animate(null, { x: r.x, y: r.y }), clearTimeout(this.moveTimer), this.moveTimer = null) }).jBind(this), o = t(function(o) { if (r || o.state === "pinchstart" || o.cloned) { o.stop(); var h = t(window).jGetScroll(), s = !1, c = { x: o.centerPoint.x - h.x, y: o.centerPoint.y - h.y }; switch (o.state) { case "pinchstart": this.unregisterAnimateEvent(); u = n.detach(this.zoomSize); i = this.expanded ? this.image.node.jGetSize() : this.size; clearTimeout(this.moveTimer); this.moveTimer = null; this.zoomBox.active && (this.lens.spos = n.detach(this.lens.pos)); r = !0; break; case "pinchend": r = !1; this.zoomBox.active && (this.option("expandZoomOn") !== "always" && this.zoomSize.width <= i.width && this.zoomSize.height <= i.height ? (r = !1, this.deactivate(null)) : o.points.length > 0 && (this.lens.spos = { x: o.points[0].clientX, y: o.points[0].clientY })); this.registerAnimateEvent(); break; case "pinchmove": if (this.expanded && o.zoom === -1 && (!this.zoomBox.active || this.option("expandZoomOn") === "always")) o.scale < it && this.close(); else if (!this.expanded || o.zoom !== 1 || this.option("expandZoomOn") !== "always") if (this.option("expand") && !this.expanded) { if (o.scale > tt) { r = !1; this.registerAnimateEvent(); this.expand(o); return } } else { if (o.zoom === 1 && !this.zoomBox.active) { if (!this.image.loaded() || !this.ready || !this.zoomBox.enabled) { this.image.loaded() || this.initEvent || (o && (this.initEvent = d(o), o.stopQueue()), this.image.load(this.setupZoom.jBind(this)), this.loadTimer || (this.loadTimer = t(this.showLoading).jBind(this).jDelay(400))); return } this.zoomBox.activating = !0; this.expanded && this.zoomBox.mode === "zoom" && this.expandStage.jAddClass("mz-zoom-in"); this.zoomBox.image.jRemoveEvent("transitionend"); this.zoomBox.node.jRemoveClass("mz-deactivating").jRemoveEvent("transitionend"); this.zoomBox.node.jAddClass("mz-activating"); this.node.jAddClass("mz-activating"); this.reflowZoom(); this.zoomSize.width = i.width; this.zoomSize.height = i.height; this.zoomBox.activating = !1; this.zoomBox.active = !0; u = n.detach(this.zoomSize); this.zoomBox.node.jRemoveClass("mz-activating"); this.node.jRemoveClass("mz-activating").jAddClass("mz-active"); this.lens.spos = { x: 0, y: 0 }; this.lens.pos = { x: 0, y: 0 }; s = !0 } e(o.scale, c, s); s && f("onZoomIn", this.id) } } } }).jBind(this); this.node.jAddEvent("pinch", o) }, setupButtons: function() { var i = document.createDocumentFragment(); t(["prev", "next", "close"]).jEach(function(t) { var r = "mz-button"; this.buttons[t] = n.$new("button", { type: "button", title: this.option("text-btn-" + t) }).jAddClass(r).jAddClass(r + "-" + t); i.appendChild(this.buttons[t]); switch (t) { case "prev": this.buttons[t].jAddEvent("tap btnclick", function(n) { n.stop(); this.update(this.getPrev()) }.jBindAsEvent(this)); break; case "next": this.buttons[t].jAddEvent("tap btnclick", function(n) { n.stop(); this.update(this.getNext()) }.jBindAsEvent(this)); break; case "close": this.buttons[t].jAddEvent("tap btnclick", function(n) { n.stop(); this.close() }.jBindAsEvent(this)).hide() } }, this); this.toggleNavButtons(this.additionalImages.length > 1); this.navControlsLayer = n.$new("div").jAddClass("mz-nav-controls").append(i).jAppendTo(this.node) }, toggleNavButtons: function(n) { n ? (this.buttons.next.show(), this.buttons.prev.show()) : (this.buttons.next.hide(), this.buttons.prev.hide()) }, openLink: function() { this.image.link && window.open(this.image.link, "_self") }, getNext: function() { var n = (this.expanded ? this.expandGallery: this.additionalImages).filter(function(n) { return n.small.state !== -1 || n.zoom.state !== -1 }), i = n.length, r = t(n).indexOf(this.image) + 1; return i <= 1 ? null: n[r >= i ? 0 : r] }, getPrev: function() { var n = (this.expanded ? this.expandGallery: this.additionalImages).filter(function(n) { return n.small.state !== -1 || n.zoom.state !== -1 }), i = n.length, r = t(n).indexOf(this.image) - 1; return i <= 1 ? null: n[r < 0 ? i - 1 : r] }, imageByURL: function(t, i) { var r = this.additionalImages.filter(function(n) { return (n.zoom.src.has(t) || n.zoom.url.has(t)) && (n.small.src.has(i) || n.small.url.has(i)) }) || []; return r[0] || (i && t && n.jTypeOf(i) === "string" && n.jTypeOf(t) === "string" ? new s(i, t) : null) }, imageByOrigin: function(n) { var t = this.additionalImages.filter(function(t) { return t.origin === n }) || []; return t[0] }, imageByIndex: function(n) { return this.additionalImages[n] } }, h = { version: "v5.3.3 DEMO", start: function(i, f) { var e = null, o = []; return n.$A(i ? [t(i)] : n.$A(document.byClass("magiczoom")).concat(n.$A(document.byClass("magiczoomPlus")))).jEach(t(function(n) { t(n) && (r(n) || (e = new p(n, f), v && !e.option("autostart") ? (e.stop(), e = null) : (u.push(e), o.push(e)))) }).jBind(this)), i ? o[0] : o }, stop: function(n) { var i, t; if (n) { (t = r(n)) && (t = u.splice(u.indexOf(t), 1)) && t[0].stop() && delete t[0]; return } while (i = u.length) t = u.splice(i - 1, 1), t[0].stop(), delete t[0] }, refresh: function(n) { return this.stop(n), this.start(n) }, update: function(t, i, u) { var f = r(t), e; f && (e = n.jTypeOf(i) === "element" ? f.imageByOrigin(i) : f.imageByURL(i, u), e && f.update(e)) }, switchTo: function(t, i) { var u = r(t), f; if (u) { switch (n.jTypeOf(i)) { case "element": f = u.imageByOrigin(i); break; case "number": f = u.imageByIndex(i) } f && u.update(f) } }, prev: function(n) { var t; (t = r(n)) && t.update(t.getPrev()) }, next: function(n) { var t; (t = r(n)) && t.update(t.getNext()) }, zoomIn: function(n) { var t; (t = r(n)) && t.activate() }, zoomOut: function(n) { var t; (t = r(n)) && t.deactivate() }, registerCallback: function(t, i) { c[t] || (c[t] = []); n.jTypeOf(i) === "function" && c[t].push(i) }, running: function(n) { return !! r(n) } }, t(document).jAddEvent("domready", function() { var i = window[a + "Options"] || {}, t; for (o = o(), st(), l = n.$new("div", { "class": "magic-hidden-wrapper" }).jAppendTo(document.body), k = n.browser.mobile && window.matchMedia && window.matchMedia("(max-device-width: 767px), (max-device-height: 767px)").matches, n.browser.mobile && n.extend(w, b), k && n.browser.platform === "ios" && (y = n.$new("div").jSetCss({ position: "fixed", top: 0, width: 0, height: "100vh" })), t = 0; t < e.length; t++) i[e[t]] && n.$F !== i[e[t]] && h.registerCallback(e[t], i[e[t]]); h.start(); v = !1 }), window.MagicZoomPlus = window.MagicZoomPlus || {}, h } (), function() { var n = function() {}; n.version = "20200509"; n.query = function(n) { n = n.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]"); var i = new RegExp("[\\?&]" + n + "=([^&#]*)"), t = i.exec(window.location.href); return t === null ? "": decodeURIComponent(t[1]) }; n.isNullOrEmpty = function(n) { if (n === null || n === undefined) return ! 0; var t = n.replace(/^\s+|\s+$/g, ""); return t === "" || t.length === 0 }; n.closest = function(n, t) { for (var i = n.matches || n.webkitMatchesSelector || n.mozMatchesSelector || n.msMatchesSelector; n;) { if (i.call(n, t)) break; n = n.parentElement } return n }; n.serializeForm = function(n) { for (var f = [], t = null, u, s, i, e, h = n, r = 0, o = h.elements.length; r < o; r++) if (t = h.elements[r], !t.disabled) switch (t.type) { case "file": case "submit": case "button": case "image": case "reset": case undefined: break; case "select-one": case "select-multiple": if (t.name && t.name.length) for (u = 0, s = t.options.length; u < s; u++) i = t.options[u], e = "", i.selected && (e = i.hasAttribute ? i.hasAttribute("value") ? i.value: i.text: i.attributes("value").specified ? i.value: i.text, f.push(encodeURIComponent(t.name) + "=" + encodeURIComponent(e))); break; case "radio": case "checkbox": if (!t.checked) break; default: t.name && t.name.length && f.push(encodeURIComponent(t.name) + "=" + encodeURIComponent(t.value)) } return f.join("&") }; n.serialize = function(n) { var i = []; for (var t in n) n.hasOwnProperty(t) && i.push(encodeURIComponent(t) + "=" + encodeURIComponent(n[t])); return i.join("&") }; n.ajax = function(n, t, i, r) { var u = new XMLHttpRequest; u.ontimeout = function() { console.error("The request for " + n + " timed out.") }; u.onreadystatechange = function() { if (r) switch (u.readyState) { case 1: r.beforeSend && r.beforeSend(); break; case 4: u.status === 200 ? r.success && r.success(u.responseText) : r.error && r.error(u.responseText); r.complete && r.complete() } }; u.open(t, n, !0); u.timeout = 5e3; u.setRequestHeader("X-Requested-With", "XMLHttpRequest"); u.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8"); u.send(i) }; n.search = function(n) { var t = n, r, f; if (event.type === "click" || event.type === "keyup" && event.keyCode === 13) { if (event.keyCode !== 13 && (r = n.getAttribute("data-control-id"), t = document.getElementById(r)), t === null || t === undefined || t.value === "") return; var u = t.getAttribute("data-pagesize"), e = t.getAttribute("data-type"), o = t.value, i = "/search/" + e + "?q=" + o; t.hasAttribute("data-categoryid") && (f = t.getAttribute("data-categoryid"), i += "&cid=" + f); u != null && (i += "&s=" + u); location.href = i } }; n.download = function(t, i, r) { var u = {}; u.type = t; u.cid = i; u.key = r; n.ajax("/do_down/beforeprocess", "POST", n.serialize(u), { success: function(n) { var t = JSON.parse(n); switch (t.Status) { case "Error": alert(t.Message); window.location.href = "/user/login"; break; case "Warning": alert(t.Message); break; case "Success": window.location.target = "_blank"; window.location.href = "/do_down/get?key=" + t.Content } } }) }; n.bannerInit = function() { var r = document.getElementsByClassName("swiper-container"), u, i, n, t, f; if (r.length > 0) for (u = [], i = 0; i < r.length; i++) n = r[i], n.hasAttribute("data-thumbs") || (t = n.getAttribute("data-ident"), f = new Swiper(n, { autoplay: n.hasAttribute("data-autoplay") ? { delay: parseInt(n.getAttribute("data-delay")), disableOnInteraction: n.hasAttribute("data-disableOnInteraction") }: !1, initialSlide: n.getAttribute("data-initialSlide") !== null ? parseInt(n.getAttribute("data-initialSlide")) : 0, centeredSlides: n.hasAttribute("data-centeredSlides"), centeredSlidesBounds: !0, loop: n.hasAttribute("data-loop"), direction: n.getAttribute("data-direction") || "horizontal", speed: parseInt(n.getAttribute("data-speed")), parallax: n.hasAttribute("data-parallax"), autoHeight: !1, roundLengths: !0, keyboard: { enabled: !0, onlyInViewport: !0 }, lazy: n.hasAttribute("data-lazy"), effect: n.getAttribute("data-effect") || "slide", fadeEffect: { crossFade: !0 }, cubeEffect: { slideShadows: !1, shadow: !1, shadowOffset: 100, shadowScale: .6 }, breakpoints: n.getAttribute("data-breakpoints") !== null ? JSON.parse(n.getAttribute("data-breakpoints")) : "", slidesPerColumnFill: "row", spaceBetween: n.getAttribute("data-spaceBetween") !== null ? parseInt(n.getAttribute("data-spaceBetween")) : 0, slidesPerView: n.getAttribute("data-slidesPerView") !== null ? n.getAttribute("data-slidesPerView") : 1, watchSlide: n.hasAttribute("data-watchSlide"), watchSlidesProgress: n.hasAttribute("data-watchSlide"), watchSlidesVisibility: !0, observer: !0, observeParents: !0, pagination: { el: "#swiper-pagination-" + t, type: n.getAttribute("data-paginationType") || "bullets", clickable: !0 }, navigation: { nextEl: "#swiper-button-next-" + t, prevEl: "#swiper-button-prev-" + t }, thumbs: { swiper: n.hasAttribute("data-thumb-enable") ? { el: ".gallery-thumb-" + t, watchSlidesVisibility: !0, slidesPerView: document.getElementsByClassName("gallery-thumb-" + t)[0].getAttribute("data-slidesPerView"), spaceBetween: document.getElementsByClassName("gallery-thumb-" + t)[0].getAttribute("data-spaceBetween"), breakpoints: JSON.parse(document.getElementsByClassName("gallery-thumb-" + t)[0].getAttribute("data-breakpoints")) }: null }, on: { init: function() { var i = this, r = document.getElementById("swiper-button-prev-custom-" + t), n; r != null && r.addEventListener("click", function() { i.slidePrev() }); n = document.getElementById("swiper-button-next-custom-" + t); n != null && n.addEventListener("click", function() { i.slideNext() }) }, progress: function() { var r, t; if (this.params.watchSlide === !0 && this.slides.length > 0) for (r = this.slides.eq(0)[0].clientWidth, t = 0; t < this.slides.length; t++) { var i = this.slides.eq(t), n = this.slides[t].progress, u = 1; Math.abs(n) > 1 && (u = (Math.abs(n) - 1) * .15 + 1); var f = n * u * (r / 2) + "px", e = 1 - Math.abs(n) / 5, o = 999 - Math.abs(Math.round(10 * n)); i.transform("translateX(" + f + ") scale(" + e + ")"); i.css("zIndex", o); i.css("opacity", 1); Math.abs(n) > 5 && i.css("opacity", 0) } }, setTransition: function(n) { for (var i, t = 0; t < this.slides.length; t++) i = this.slides.eq(t), i.transition(n) } } })) }; n.postMessageInit = function() { var i = document.querySelectorAll('input[data-provider="post-message"],button[data-provider="post-message"]'), t; if (i.length > 0) for (t = 0; t < i.length; t++) i[t].addEventListener("click", function(t) { var i = this, u = i.nextElementSibling, r = n.closest(this, "form"); r.checkValidity() === !1 ? (t.preventDefault(), t.stopPropagation(), r.classList.add("was-validated")) : n.ajax("/enquiry/post", "POST", n.serializeForm(r), { beforeSend: function() { i.setAttribute("disabled", "disabled") }, success: function(t) { var c = JSON.parse(t), o, r, f, e; if (u.innerHTML = c.Message, c.Success) { for (o = document.querySelectorAll("form input[type='text'],form textarea,form input[type='email']"), r = 0; r < o.length; r++) o[r].value = ""; if (f = document.querySelectorAll("form img[data-name='captchacode']"), f.length > 0) for (e = 0; e < f.length; e++) f[e].src = "/validate/captcha?t=" + Math.random(); var l = i.getAttribute("data-track"), s = i.getAttribute("data-track-category"), h = i.getAttribute("data-track-action"), a = i.getAttribute("data-track-opt"); if (!n.isNullOrEmpty(l) && !n.isNullOrEmpty(s) && !n.isNullOrEmpty(h)) switch (l.toLowerCase()) { case "google": gtag("event", h, { event_category: s, event_label: a }); break; case "baidu": _hmt.push(["_trackEvent", s, h, a]); break; default: return } } }, error: function(n) { u.innerHTML = n }, complete: function() { i.removeAttribute("disabled") } }) }) }; n.initShare = function() { var t = encodeURIComponent(location.href), s = (window.screen.width - 410) / 2, i = "width=400,height=400,top=100,left=" + s, r = document.getElementsByClassName("share-facebook"), u = document.getElementsByClassName("share-linkedin"), f = document.getElementsByClassName("share-twitter"), e = document.getElementsByClassName("share-qq"), o = document.getElementsByClassName("share-weibo"), n; if (r.length > 0) for (n = 0; n < r.length; n++) r[n].addEventListener("click", function() { window.open("https://www.facebook.com/sharer/sharer.php?u=" + t, "", i) }); if (u.length > 0) for (n = 0; n < u.length; n++) u[n].addEventListener("click", function() { window.open("https://www.linkedin.com/shareArticle?mini=true&url=" + t, "", i) }); if (f.length > 0) for (n = 0; n < f.length; n++) f[n].addEventListener("click", function() { window.open("https://twitter.com/intent/tweet?url=" + t, "", i) }); if (o.length > 0) for (n = 0; n < o.length; n++) o[n].addEventListener("click", function() { window.open("http://service.weibo.com/share/share.php?url=" + t, "", i) }); if (e.length > 0) for (n = 0; n < e.length; n++) e[n].addEventListener("click", function() { window.open("http://connect.qq.com/widget/shareqq/index.html?url=" + t, "", i) }) }; n.sticky = function() { var n = document.querySelectorAll('[data-provider="sticky"]'), t; n.length > 0 && (t = new Sticky(n)) }; n.responsiveTable = function() { var n = document.getElementById("license"), r, t, u, i; if (n !== null && (r = n.getAttribute("data-responsive-table"), t = n.getAttribute("data-container"), r === "true" && t !== "")) for (u = document.querySelectorAll(t + "table"), i = 0; i < u.length; i++); }; n.scrollTop = function() { var n = document.getElementById("scroll-top"); if (n != null) { var i = null, t = 0, r = n.getAttribute("data-top") || 500; window.addEventListener("scroll", function() { t = document.documentElement.scrollTop || document.body.scrollTop; n.style.display = t > r ? "block": "none" }); n.addEventListener("click", function() { i = setInterval(function() { var n = Math.floor( - t / 10); document.documentElement.scrollTop = t + n; t <= 0 && clearInterval(i) }, 5) }) } }; n.auth = function() { var n = document.getElementById("license"), i = md5(document.domain).split("").reverse().join("").substring(10, 20), t; if (n == null || n.content !== i) { //alert("您正在使用未经授权的模板"); return } t = n.getAttribute("data-menu"); t === "true" && (document.oncontextmenu = function() { return ! 1 }) }; n.track = function(n, t) { typeof gtag == "function" && gtag("event", n, { event_category: t }) }; window.cms = n } (), function() { window.addEventListener("DOMContentLoaded", function() { var n = new LazyLoad({ elements_selector: ".lazy" }); window.setTimeout(function() { cms.sticky(); cms.bannerInit() }, 20); window.setTimeout(function() { cms.postMessageInit() }, 30); window.setTimeout(function() { cms.initShare() }, 40); window.setTimeout(function() { cms.auth() }, 50); window.setTimeout(function() { cms.scrollTop() }, 60) }) } ();