var oi = Object.defineProperty, di = Object.defineProperties var ci = Object.getOwnPropertyDescriptors var nt = Object.getOwnPropertySymbols var fi = Object.prototype.hasOwnProperty, ui = Object.prototype.propertyIsEnumerable var lt = (j, _, Z) => _ in j ? oi(j, _, { enumerable: !0, configurable: !0, writable: !0, value: Z }) : (j[_] = Z), Ye = (j, _) => { for (var Z in _ || (_ = {})) fi.call(_, Z) && lt(j, Z, _[Z]) if (nt) for (var Z of nt(_)) ui.call(_, Z) && lt(j, Z, _[Z]) return j }, Xe = (j, _) => di(j, ci(_)) ;(function (j) { typeof define == 'function' && define.amd ? define(j) : j() })(function () { 'use strict' function j(s) { return ( s !== null && typeof s == 'object' && 'constructor' in s && s.constructor === Object ) } function _(s, e) { s === void 0 && (s = {}), e === void 0 && (e = {}), Object.keys(e).forEach((t) => { typeof s[t] == 'undefined' ? (s[t] = e[t]) : j(e[t]) && j(s[t]) && Object.keys(e[t]).length > 0 && _(s[t], e[t]) }) } const Z = { body: {}, addEventListener() {}, removeEventListener() {}, activeElement: { blur() {}, nodeName: '' }, querySelector() { return null }, querySelectorAll() { return [] }, getElementById() { return null }, createEvent() { return { initEvent() {} } }, createElement() { return { children: [], childNodes: [], style: {}, setAttribute() {}, getElementsByTagName() { return [] }, } }, createElementNS() { return {} }, importNode() { return null }, location: { hash: '', host: '', hostname: '', href: '', origin: '', pathname: '', protocol: '', search: '', }, } function q() { const s = typeof document != 'undefined' ? document : {} return _(s, Z), s } const ot = { document: Z, navigator: { userAgent: '' }, location: { hash: '', host: '', hostname: '', href: '', origin: '', pathname: '', protocol: '', search: '', }, history: { replaceState() {}, pushState() {}, go() {}, back() {} }, CustomEvent: function () { return this }, addEventListener() {}, removeEventListener() {}, getComputedStyle() { return { getPropertyValue() { return '' }, } }, Image() {}, Date() {}, screen: {}, setTimeout() {}, clearTimeout() {}, matchMedia() { return {} }, requestAnimationFrame(s) { return typeof setTimeout == 'undefined' ? (s(), null) : setTimeout(s, 0) }, cancelAnimationFrame(s) { typeof setTimeout != 'undefined' && clearTimeout(s) }, } function X() { const s = typeof window != 'undefined' ? window : {} return _(s, ot), s } function ie(s) { return ( s === void 0 && (s = ''), s .trim() .split(' ') .filter((e) => !!e.trim()) ) } function dt(s) { const e = s Object.keys(e).forEach((t) => { try { e[t] = null } catch {} try { delete e[t] } catch {} }) } function ae(s, e) { return e === void 0 && (e = 0), setTimeout(s, e) } function ee() { return Date.now() } function ct(s) { const e = X() let t return ( e.getComputedStyle && (t = e.getComputedStyle(s, null)), !t && s.currentStyle && (t = s.currentStyle), t || (t = s.style), t ) } function Le(s, e) { e === void 0 && (e = 'x') const t = X() let i, r, a const f = ct(s) return ( t.WebKitCSSMatrix ? ((r = f.transform || f.webkitTransform), r.split(',').length > 6 && (r = r .split(', ') .map((c) => c.replace(',', '.')) .join(', ')), (a = new t.WebKitCSSMatrix(r === 'none' ? '' : r))) : ((a = f.MozTransform || f.OTransform || f.MsTransform || f.msTransform || f.transform || f .getPropertyValue('transform') .replace('translate(', 'matrix(1, 0, 0, 1,')), (i = a.toString().split(','))), e === 'x' && (t.WebKitCSSMatrix ? (r = a.m41) : i.length === 16 ? (r = parseFloat(i[12])) : (r = parseFloat(i[4]))), e === 'y' && (t.WebKitCSSMatrix ? (r = a.m42) : i.length === 16 ? (r = parseFloat(i[13])) : (r = parseFloat(i[5]))), r || 0 ) } function ue(s) { return ( typeof s == 'object' && s !== null && s.constructor && Object.prototype.toString.call(s).slice(8, -1) === 'Object' ) } function ft(s) { return typeof window != 'undefined' && typeof window.HTMLElement != 'undefined' ? s instanceof HTMLElement : s && (s.nodeType === 1 || s.nodeType === 11) } function Q() { const s = Object(arguments.length <= 0 ? void 0 : arguments[0]), e = ['__proto__', 'constructor', 'prototype'] for (let t = 1; t < arguments.length; t += 1) { const i = t < 0 || arguments.length <= t ? void 0 : arguments[t] if (i != null && !ft(i)) { const r = Object.keys(Object(i)).filter((a) => e.indexOf(a) < 0) for (let a = 0, f = r.length; a < f; a += 1) { const c = r[a], n = Object.getOwnPropertyDescriptor(i, c) n !== void 0 && n.enumerable && (ue(s[c]) && ue(i[c]) ? i[c].__swiper__ ? (s[c] = i[c]) : Q(s[c], i[c]) : !ue(s[c]) && ue(i[c]) ? ((s[c] = {}), i[c].__swiper__ ? (s[c] = i[c]) : Q(s[c], i[c])) : (s[c] = i[c])) } } } return s } function pe(s, e, t) { s.style.setProperty(e, t) } function qe(s) { let { swiper: e, targetPosition: t, side: i } = s const r = X(), a = -e.translate let f = null, c const n = e.params.speed ;(e.wrapperEl.style.scrollSnapType = 'none'), r.cancelAnimationFrame(e.cssModeFrameID) const u = t > a ? 'next' : 'prev', o = (d, p) => (u === 'next' && d >= p) || (u === 'prev' && d <= p), l = () => { ;(c = new Date().getTime()), f === null && (f = c) const d = Math.max(Math.min((c - f) / n, 1), 0), p = 0.5 - Math.cos(d * Math.PI) / 2 let h = a + p * (t - a) if ((o(h, t) && (h = t), e.wrapperEl.scrollTo({ [i]: h }), o(h, t))) { ;(e.wrapperEl.style.overflow = 'hidden'), (e.wrapperEl.style.scrollSnapType = ''), setTimeout(() => { ;(e.wrapperEl.style.overflow = ''), e.wrapperEl.scrollTo({ [i]: h }) }), r.cancelAnimationFrame(e.cssModeFrameID) return } e.cssModeFrameID = r.requestAnimationFrame(l) } l() } function ne(s) { return ( s.querySelector('.swiper-slide-transform') || (s.shadowRoot && s.shadowRoot.querySelector('.swiper-slide-transform')) || s ) } function W(s, e) { e === void 0 && (e = '') const t = [...s.children] return ( s instanceof HTMLSlotElement && t.push(...s.assignedElements()), e ? t.filter((i) => i.matches(e)) : t ) } function ut(s, e) { const t = e.contains(s) return !t && e instanceof HTMLSlotElement ? [...e.assignedElements()].includes(s) : t } function ye(s) { try { console.warn(s) return } catch {} } function J(s, e) { e === void 0 && (e = []) const t = document.createElement(s) return t.classList.add(...(Array.isArray(e) ? e : ie(e))), t } function be(s) { const e = X(), t = q(), i = s.getBoundingClientRect(), r = t.body, a = s.clientTop || r.clientTop || 0, f = s.clientLeft || r.clientLeft || 0, c = s === e ? e.scrollY : s.scrollTop, n = s === e ? e.scrollX : s.scrollLeft return { top: i.top + c - a, left: i.left + n - f } } function pt(s, e) { const t = [] for (; s.previousElementSibling; ) { const i = s.previousElementSibling e ? i.matches(e) && t.push(i) : t.push(i), (s = i) } return t } function mt(s, e) { const t = [] for (; s.nextElementSibling; ) { const i = s.nextElementSibling e ? i.matches(e) && t.push(i) : t.push(i), (s = i) } return t } function re(s, e) { return X().getComputedStyle(s, null).getPropertyValue(e) } function me(s) { let e = s, t if (e) { for (t = 0; (e = e.previousSibling) !== null; ) e.nodeType === 1 && (t += 1) return t } } function le(s, e) { const t = [] let i = s.parentElement for (; i; ) e ? i.matches(e) && t.push(i) : t.push(i), (i = i.parentElement) return t } function he(s, e) { function t(i) { i.target === s && (e.call(s, i), s.removeEventListener('transitionend', t)) } e && s.addEventListener('transitionend', t) } function Ie(s, e, t) { const i = X() return t ? s[e === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat( i .getComputedStyle(s, null) .getPropertyValue(e === 'width' ? 'margin-right' : 'margin-top') ) + parseFloat( i .getComputedStyle(s, null) .getPropertyValue(e === 'width' ? 'margin-left' : 'margin-bottom') ) : s.offsetWidth } function N(s) { return (Array.isArray(s) ? s : [s]).filter((e) => !!e) } function Se(s) { return (e) => Math.abs(e) > 0 && s.browser && s.browser.need3dFix && Math.abs(e) % 90 == 0 ? e + 0.001 : e } let Ae function ht() { const s = X(), e = q() return { smoothScroll: e.documentElement && e.documentElement.style && 'scrollBehavior' in e.documentElement.style, touch: !!( 'ontouchstart' in s || (s.DocumentTouch && e instanceof s.DocumentTouch) ), } } function We() { return Ae || (Ae = ht()), Ae } let ze function gt(s) { let { userAgent: e } = s === void 0 ? {} : s const t = We(), i = X(), r = i.navigator.platform, a = e || i.navigator.userAgent, f = { ios: !1, android: !1 }, c = i.screen.width, n = i.screen.height, u = a.match(/(Android);?[\s\/]+([\d.]+)?/) let o = a.match(/(iPad).*OS\s([\d_]+)/) const l = a.match(/(iPod)(.*OS\s([\d_]+))?/), d = !o && a.match(/(iPhone\sOS|iOS)\s([\d_]+)/), p = r === 'Win32' let h = r === 'MacIntel' const g = [ '1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810', ] return ( !o && h && t.touch && g.indexOf(`${c}x${n}`) >= 0 && ((o = a.match(/(Version)\/([\d.]+)/)), o || (o = [0, 1, '13_0_0']), (h = !1)), u && !p && ((f.os = 'android'), (f.android = !0)), (o || d || l) && ((f.os = 'ios'), (f.ios = !0)), f ) } function _e(s) { return s === void 0 && (s = {}), ze || (ze = gt(s)), ze } let De function vt() { const s = X(), e = _e() let t = !1 function i() { const c = s.navigator.userAgent.toLowerCase() return ( c.indexOf('safari') >= 0 && c.indexOf('chrome') < 0 && c.indexOf('android') < 0 ) } if (i()) { const c = String(s.navigator.userAgent) if (c.includes('Version/')) { const [n, u] = c .split('Version/')[1] .split(' ')[0] .split('.') .map((o) => Number(o)) t = n < 16 || (n === 16 && u < 2) } } const r = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test( s.navigator.userAgent ), a = i(), f = a || (r && e.ios) return { isSafari: t || a, needPerspectiveFix: t, need3dFix: f, isWebView: r, } } function wt() { return De || (De = vt()), De } function yt(s) { let { swiper: e, on: t, emit: i } = s const r = X() let a = null, f = null const c = () => { !e || e.destroyed || !e.initialized || (i('beforeResize'), i('resize')) }, n = () => { !e || e.destroyed || !e.initialized || ((a = new ResizeObserver((l) => { f = r.requestAnimationFrame(() => { const { width: d, height: p } = e let h = d, g = p l.forEach((w) => { let { contentBoxSize: y, contentRect: v, target: m } = w ;(m && m !== e.el) || ((h = v ? v.width : (y[0] || y).inlineSize), (g = v ? v.height : (y[0] || y).blockSize)) }), (h !== d || g !== p) && c() }) })), a.observe(e.el)) }, u = () => { f && r.cancelAnimationFrame(f), a && a.unobserve && e.el && (a.unobserve(e.el), (a = null)) }, o = () => { !e || e.destroyed || !e.initialized || i('orientationchange') } t('init', () => { if (e.params.resizeObserver && typeof r.ResizeObserver != 'undefined') { n() return } r.addEventListener('resize', c), r.addEventListener('orientationchange', o) }), t('destroy', () => { u(), r.removeEventListener('resize', c), r.removeEventListener('orientationchange', o) }) } function bt(s) { let { swiper: e, extendParams: t, on: i, emit: r } = s const a = [], f = X(), c = function (o, l) { l === void 0 && (l = {}) const d = f.MutationObserver || f.WebkitMutationObserver, p = new d((h) => { if (e.__preventObserver__) return if (h.length === 1) { r('observerUpdate', h[0]) return } const g = function () { r('observerUpdate', h[0]) } f.requestAnimationFrame ? f.requestAnimationFrame(g) : f.setTimeout(g, 0) }) p.observe(o, { attributes: typeof l.attributes == 'undefined' ? !0 : l.attributes, childList: e.isElement || (typeof l.childList == 'undefined' ? !0 : l).childList, characterData: typeof l.characterData == 'undefined' ? !0 : l.characterData, }), a.push(p) }, n = () => { if (!!e.params.observer) { if (e.params.observeParents) { const o = le(e.hostEl) for (let l = 0; l < o.length; l += 1) c(o[l]) } c(e.hostEl, { childList: e.params.observeSlideChildren }), c(e.wrapperEl, { attributes: !1 }) } }, u = () => { a.forEach((o) => { o.disconnect() }), a.splice(0, a.length) } t({ observer: !1, observeParents: !1, observeSlideChildren: !1 }), i('init', n), i('destroy', u) } var St = { on(s, e, t) { const i = this if (!i.eventsListeners || i.destroyed || typeof e != 'function') return i const r = t ? 'unshift' : 'push' return ( s.split(' ').forEach((a) => { i.eventsListeners[a] || (i.eventsListeners[a] = []), i.eventsListeners[a][r](e) }), i ) }, once(s, e, t) { const i = this if (!i.eventsListeners || i.destroyed || typeof e != 'function') return i function r() { i.off(s, r), r.__emitterProxy && delete r.__emitterProxy for (var a = arguments.length, f = new Array(a), c = 0; c < a; c++) f[c] = arguments[c] e.apply(i, f) } return (r.__emitterProxy = e), i.on(s, r, t) }, onAny(s, e) { const t = this if (!t.eventsListeners || t.destroyed || typeof s != 'function') return t const i = e ? 'unshift' : 'push' return ( t.eventsAnyListeners.indexOf(s) < 0 && t.eventsAnyListeners[i](s), t ) }, offAny(s) { const e = this if (!e.eventsListeners || e.destroyed || !e.eventsAnyListeners) return e const t = e.eventsAnyListeners.indexOf(s) return t >= 0 && e.eventsAnyListeners.splice(t, 1), e }, off(s, e) { const t = this return ( !t.eventsListeners || t.destroyed || !t.eventsListeners || s.split(' ').forEach((i) => { typeof e == 'undefined' ? (t.eventsListeners[i] = []) : t.eventsListeners[i] && t.eventsListeners[i].forEach((r, a) => { ;(r === e || (r.__emitterProxy && r.__emitterProxy === e)) && t.eventsListeners[i].splice(a, 1) }) }), t ) }, emit() { const s = this if (!s.eventsListeners || s.destroyed || !s.eventsListeners) return s let e, t, i for (var r = arguments.length, a = new Array(r), f = 0; f < r; f++) a[f] = arguments[f] return ( typeof a[0] == 'string' || Array.isArray(a[0]) ? ((e = a[0]), (t = a.slice(1, a.length)), (i = s)) : ((e = a[0].events), (t = a[0].data), (i = a[0].context || s)), t.unshift(i), (Array.isArray(e) ? e : e.split(' ')).forEach((n) => { s.eventsAnyListeners && s.eventsAnyListeners.length && s.eventsAnyListeners.forEach((u) => { u.apply(i, [n, ...t]) }), s.eventsListeners && s.eventsListeners[n] && s.eventsListeners[n].forEach((u) => { u.apply(i, t) }) }), s ) }, } function Et() { const s = this let e, t const i = s.el typeof s.params.width != 'undefined' && s.params.width !== null ? (e = s.params.width) : (e = i.clientWidth), typeof s.params.height != 'undefined' && s.params.height !== null ? (t = s.params.height) : (t = i.clientHeight), !((e === 0 && s.isHorizontal()) || (t === 0 && s.isVertical())) && ((e = e - parseInt(re(i, 'padding-left') || 0, 10) - parseInt(re(i, 'padding-right') || 0, 10)), (t = t - parseInt(re(i, 'padding-top') || 0, 10) - parseInt(re(i, 'padding-bottom') || 0, 10)), Number.isNaN(e) && (e = 0), Number.isNaN(t) && (t = 0), Object.assign(s, { width: e, height: t, size: s.isHorizontal() ? e : t, })) } function xt() { const s = this function e(P, I) { return parseFloat(P.getPropertyValue(s.getDirectionLabel(I)) || 0) } const t = s.params, { wrapperEl: i, slidesEl: r, size: a, rtlTranslate: f, wrongRTL: c } = s, n = s.virtual && t.virtual.enabled, u = n ? s.virtual.slides.length : s.slides.length, o = W(r, `.${s.params.slideClass}, swiper-slide`), l = n ? s.virtual.slides.length : o.length let d = [] const p = [], h = [] let g = t.slidesOffsetBefore typeof g == 'function' && (g = t.slidesOffsetBefore.call(s)) let w = t.slidesOffsetAfter typeof w == 'function' && (w = t.slidesOffsetAfter.call(s)) const y = s.snapGrid.length, v = s.slidesGrid.length let m = t.spaceBetween, b = -g, S = 0, A = 0 if (typeof a == 'undefined') return typeof m == 'string' && m.indexOf('%') >= 0 ? (m = (parseFloat(m.replace('%', '')) / 100) * a) : typeof m == 'string' && (m = parseFloat(m)), (s.virtualSize = -m), o.forEach((P) => { f ? (P.style.marginLeft = '') : (P.style.marginRight = ''), (P.style.marginBottom = ''), (P.style.marginTop = '') }), t.centeredSlides && t.cssMode && (pe(i, '--swiper-centered-offset-before', ''), pe(i, '--swiper-centered-offset-after', '')) const O = t.grid && t.grid.rows > 1 && s.grid O ? s.grid.initSlides(o) : s.grid && s.grid.unsetSlides() let z const T = t.slidesPerView === 'auto' && t.breakpoints && Object.keys(t.breakpoints).filter( (P) => typeof t.breakpoints[P].slidesPerView != 'undefined' ).length > 0 for (let P = 0; P < l; P += 1) { z = 0 let I if ( (o[P] && (I = o[P]), O && s.grid.updateSlide(P, I, o), !(o[P] && re(I, 'display') === 'none')) ) { if (t.slidesPerView === 'auto') { T && (o[P].style[s.getDirectionLabel('width')] = '') const C = getComputedStyle(I), E = I.style.transform, x = I.style.webkitTransform if ( (E && (I.style.transform = 'none'), x && (I.style.webkitTransform = 'none'), t.roundLengths) ) z = s.isHorizontal() ? Ie(I, 'width', !0) : Ie(I, 'height', !0) else { const D = e(C, 'width'), G = e(C, 'padding-left'), M = e(C, 'padding-right'), L = e(C, 'margin-left'), V = e(C, 'margin-right'), F = C.getPropertyValue('box-sizing') if (F && F === 'border-box') z = D + L + V else { const { clientWidth: $, offsetWidth: k } = I z = D + G + M + L + V + (k - $) } } E && (I.style.transform = E), x && (I.style.webkitTransform = x), t.roundLengths && (z = Math.floor(z)) } else (z = (a - (t.slidesPerView - 1) * m) / t.slidesPerView), t.roundLengths && (z = Math.floor(z)), o[P] && (o[P].style[s.getDirectionLabel('width')] = `${z}px`) o[P] && (o[P].swiperSlideSize = z), h.push(z), t.centeredSlides ? ((b = b + z / 2 + S / 2 + m), S === 0 && P !== 0 && (b = b - a / 2 - m), P === 0 && (b = b - a / 2 - m), Math.abs(b) < 1 / 1e3 && (b = 0), t.roundLengths && (b = Math.floor(b)), A % t.slidesPerGroup == 0 && d.push(b), p.push(b)) : (t.roundLengths && (b = Math.floor(b)), (A - Math.min(s.params.slidesPerGroupSkip, A)) % s.params.slidesPerGroup == 0 && d.push(b), p.push(b), (b = b + z + m)), (s.virtualSize += z + m), (S = z), (A += 1) } } if ( ((s.virtualSize = Math.max(s.virtualSize, a) + w), f && c && (t.effect === 'slide' || t.effect === 'coverflow') && (i.style.width = `${s.virtualSize + m}px`), t.setWrapperSize && (i.style[s.getDirectionLabel('width')] = `${s.virtualSize + m}px`), O && s.grid.updateWrapperSize(z, d), !t.centeredSlides) ) { const P = [] for (let I = 0; I < d.length; I += 1) { let C = d[I] t.roundLengths && (C = Math.floor(C)), d[I] <= s.virtualSize - a && P.push(C) } ;(d = P), Math.floor(s.virtualSize - a) - Math.floor(d[d.length - 1]) > 1 && d.push(s.virtualSize - a) } if (n && t.loop) { const P = h[0] + m if (t.slidesPerGroup > 1) { const I = Math.ceil( (s.virtual.slidesBefore + s.virtual.slidesAfter) / t.slidesPerGroup ), C = P * t.slidesPerGroup for (let E = 0; E < I; E += 1) d.push(d[d.length - 1] + C) } for ( let I = 0; I < s.virtual.slidesBefore + s.virtual.slidesAfter; I += 1 ) t.slidesPerGroup === 1 && d.push(d[d.length - 1] + P), p.push(p[p.length - 1] + P), (s.virtualSize += P) } if ((d.length === 0 && (d = [0]), m !== 0)) { const P = s.isHorizontal() && f ? 'marginLeft' : s.getDirectionLabel('marginRight') o.filter((I, C) => !t.cssMode || t.loop ? !0 : C !== o.length - 1 ).forEach((I) => { I.style[P] = `${m}px` }) } if (t.centeredSlides && t.centeredSlidesBounds) { let P = 0 h.forEach((C) => { P += C + (m || 0) }), (P -= m) const I = P > a ? P - a : 0 d = d.map((C) => (C <= 0 ? -g : C > I ? I + w : C)) } if (t.centerInsufficientSlides) { let P = 0 h.forEach((C) => { P += C + (m || 0) }), (P -= m) const I = (t.slidesOffsetBefore || 0) + (t.slidesOffsetAfter || 0) if (P + I < a) { const C = (a - P - I) / 2 d.forEach((E, x) => { d[x] = E - C }), p.forEach((E, x) => { p[x] = E + C }) } } if ( (Object.assign(s, { slides: o, snapGrid: d, slidesGrid: p, slidesSizesGrid: h, }), t.centeredSlides && t.cssMode && !t.centeredSlidesBounds) ) { pe(i, '--swiper-centered-offset-before', `${-d[0]}px`), pe( i, '--swiper-centered-offset-after', `${s.size / 2 - h[h.length - 1] / 2}px` ) const P = -s.snapGrid[0], I = -s.slidesGrid[0] ;(s.snapGrid = s.snapGrid.map((C) => C + P)), (s.slidesGrid = s.slidesGrid.map((C) => C + I)) } if ( (l !== u && s.emit('slidesLengthChange'), d.length !== y && (s.params.watchOverflow && s.checkOverflow(), s.emit('snapGridLengthChange')), p.length !== v && s.emit('slidesGridLengthChange'), t.watchSlidesProgress && s.updateSlidesOffset(), s.emit('slidesUpdated'), !n && !t.cssMode && (t.effect === 'slide' || t.effect === 'fade')) ) { const P = `${t.containerModifierClass}backface-hidden`, I = s.el.classList.contains(P) l <= t.maxBackfaceHiddenSlides ? I || s.el.classList.add(P) : I && s.el.classList.remove(P) } } function Tt(s) { const e = this, t = [], i = e.virtual && e.params.virtual.enabled let r = 0, a typeof s == 'number' ? e.setTransition(s) : s === !0 && e.setTransition(e.params.speed) const f = (c) => (i ? e.slides[e.getSlideIndexByData(c)] : e.slides[c]) if (e.params.slidesPerView !== 'auto' && e.params.slidesPerView > 1) if (e.params.centeredSlides) (e.visibleSlides || []).forEach((c) => { t.push(c) }) else for (a = 0; a < Math.ceil(e.params.slidesPerView); a += 1) { const c = e.activeIndex + a if (c > e.slides.length && !i) break t.push(f(c)) } else t.push(f(e.activeIndex)) for (a = 0; a < t.length; a += 1) if (typeof t[a] != 'undefined') { const c = t[a].offsetHeight r = c > r ? c : r } ;(r || r === 0) && (e.wrapperEl.style.height = `${r}px`) } function Mt() { const s = this, e = s.slides, t = s.isElement ? s.isHorizontal() ? s.wrapperEl.offsetLeft : s.wrapperEl.offsetTop : 0 for (let i = 0; i < e.length; i += 1) e[i].swiperSlideOffset = (s.isHorizontal() ? e[i].offsetLeft : e[i].offsetTop) - t - s.cssOverflowAdjustment() } const je = (s, e, t) => { e && !s.classList.contains(t) ? s.classList.add(t) : !e && s.classList.contains(t) && s.classList.remove(t) } function Ct(s) { s === void 0 && (s = (this && this.translate) || 0) const e = this, t = e.params, { slides: i, rtlTranslate: r, snapGrid: a } = e if (i.length === 0) return typeof i[0].swiperSlideOffset == 'undefined' && e.updateSlidesOffset() let f = -s r && (f = s), (e.visibleSlidesIndexes = []), (e.visibleSlides = []) let c = t.spaceBetween typeof c == 'string' && c.indexOf('%') >= 0 ? (c = (parseFloat(c.replace('%', '')) / 100) * e.size) : typeof c == 'string' && (c = parseFloat(c)) for (let n = 0; n < i.length; n += 1) { const u = i[n] let o = u.swiperSlideOffset t.cssMode && t.centeredSlides && (o -= i[0].swiperSlideOffset) const l = (f + (t.centeredSlides ? e.minTranslate() : 0) - o) / (u.swiperSlideSize + c), d = (f - a[0] + (t.centeredSlides ? e.minTranslate() : 0) - o) / (u.swiperSlideSize + c), p = -(f - o), h = p + e.slidesSizesGrid[n], g = p >= 0 && p <= e.size - e.slidesSizesGrid[n], w = (p >= 0 && p < e.size - 1) || (h > 1 && h <= e.size) || (p <= 0 && h >= e.size) w && (e.visibleSlides.push(u), e.visibleSlidesIndexes.push(n)), je(u, w, t.slideVisibleClass), je(u, g, t.slideFullyVisibleClass), (u.progress = r ? -l : l), (u.originalProgress = r ? -d : d) } } function Pt(s) { const e = this if (typeof s == 'undefined') { const o = e.rtlTranslate ? -1 : 1 s = (e && e.translate && e.translate * o) || 0 } const t = e.params, i = e.maxTranslate() - e.minTranslate() let { progress: r, isBeginning: a, isEnd: f, progressLoop: c } = e const n = a, u = f if (i === 0) (r = 0), (a = !0), (f = !0) else { r = (s - e.minTranslate()) / i const o = Math.abs(s - e.minTranslate()) < 1, l = Math.abs(s - e.maxTranslate()) < 1 ;(a = o || r <= 0), (f = l || r >= 1), o && (r = 0), l && (r = 1) } if (t.loop) { const o = e.getSlideIndexByData(0), l = e.getSlideIndexByData(e.slides.length - 1), d = e.slidesGrid[o], p = e.slidesGrid[l], h = e.slidesGrid[e.slidesGrid.length - 1], g = Math.abs(s) g >= d ? (c = (g - d) / h) : (c = (g + h - p) / h), c > 1 && (c -= 1) } Object.assign(e, { progress: r, progressLoop: c, isBeginning: a, isEnd: f, }), (t.watchSlidesProgress || (t.centeredSlides && t.autoHeight)) && e.updateSlidesProgress(s), a && !n && e.emit('reachBeginning toEdge'), f && !u && e.emit('reachEnd toEdge'), ((n && !a) || (u && !f)) && e.emit('fromEdge'), e.emit('progress', r) } const Oe = (s, e, t) => { e && !s.classList.contains(t) ? s.classList.add(t) : !e && s.classList.contains(t) && s.classList.remove(t) } function Lt() { const s = this, { slides: e, params: t, slidesEl: i, activeIndex: r } = s, a = s.virtual && t.virtual.enabled, f = s.grid && t.grid && t.grid.rows > 1, c = (l) => W(i, `.${t.slideClass}${l}, swiper-slide${l}`)[0] let n, u, o if (a) if (t.loop) { let l = r - s.virtual.slidesBefore l < 0 && (l = s.virtual.slides.length + l), l >= s.virtual.slides.length && (l -= s.virtual.slides.length), (n = c(`[data-swiper-slide-index="${l}"]`)) } else n = c(`[data-swiper-slide-index="${r}"]`) else f ? ((n = e.filter((l) => l.column === r)[0]), (o = e.filter((l) => l.column === r + 1)[0]), (u = e.filter((l) => l.column === r - 1)[0])) : (n = e[r]) n && (f || ((o = mt(n, `.${t.slideClass}, swiper-slide`)[0]), t.loop && !o && (o = e[0]), (u = pt(n, `.${t.slideClass}, swiper-slide`)[0]), t.loop && !u === 0 && (u = e[e.length - 1]))), e.forEach((l) => { Oe(l, l === n, t.slideActiveClass), Oe(l, l === o, t.slideNextClass), Oe(l, l === u, t.slidePrevClass) }), s.emitSlidesClasses() } const Ee = (s, e) => { if (!s || s.destroyed || !s.params) return const t = () => s.isElement ? 'swiper-slide' : `.${s.params.slideClass}`, i = e.closest(t()) if (i) { let r = i.querySelector(`.${s.params.lazyPreloaderClass}`) !r && s.isElement && (i.shadowRoot ? (r = i.shadowRoot.querySelector( `.${s.params.lazyPreloaderClass}` )) : requestAnimationFrame(() => { i.shadowRoot && ((r = i.shadowRoot.querySelector( `.${s.params.lazyPreloaderClass}` )), r && r.remove()) })), r && r.remove() } }, $e = (s, e) => { if (!s.slides[e]) return const t = s.slides[e].querySelector('[loading="lazy"]') t && t.removeAttribute('loading') }, ke = (s) => { if (!s || s.destroyed || !s.params) return let e = s.params.lazyPreloadPrevNext const t = s.slides.length if (!t || !e || e < 0) return e = Math.min(e, t) const i = s.params.slidesPerView === 'auto' ? s.slidesPerViewDynamic() : Math.ceil(s.params.slidesPerView), r = s.activeIndex if (s.params.grid && s.params.grid.rows > 1) { const f = r, c = [f - e] c.push(...Array.from({ length: e }).map((n, u) => f + i + u)), s.slides.forEach((n, u) => { c.includes(n.column) && $e(s, u) }) return } const a = r + i - 1 if (s.params.rewind || s.params.loop) for (let f = r - e; f <= a + e; f += 1) { const c = ((f % t) + t) % t ;(c < r || c > a) && $e(s, c) } else for (let f = Math.max(r - e, 0); f <= Math.min(a + e, t - 1); f += 1) f !== r && (f > a || f < r) && $e(s, f) } function It(s) { const { slidesGrid: e, params: t } = s, i = s.rtlTranslate ? s.translate : -s.translate let r for (let a = 0; a < e.length; a += 1) typeof e[a + 1] != 'undefined' ? i >= e[a] && i < e[a + 1] - (e[a + 1] - e[a]) / 2 ? (r = a) : i >= e[a] && i < e[a + 1] && (r = a + 1) : i >= e[a] && (r = a) return ( t.normalizeSlideIndex && (r < 0 || typeof r == 'undefined') && (r = 0), r ) } function At(s) { const e = this, t = e.rtlTranslate ? e.translate : -e.translate, { snapGrid: i, params: r, activeIndex: a, realIndex: f, snapIndex: c } = e let n = s, u const o = (p) => { let h = p - e.virtual.slidesBefore return ( h < 0 && (h = e.virtual.slides.length + h), h >= e.virtual.slides.length && (h -= e.virtual.slides.length), h ) } if ((typeof n == 'undefined' && (n = It(e)), i.indexOf(t) >= 0)) u = i.indexOf(t) else { const p = Math.min(r.slidesPerGroupSkip, n) u = p + Math.floor((n - p) / r.slidesPerGroup) } if ((u >= i.length && (u = i.length - 1), n === a && !e.params.loop)) { u !== c && ((e.snapIndex = u), e.emit('snapIndexChange')) return } if (n === a && e.params.loop && e.virtual && e.params.virtual.enabled) { e.realIndex = o(n) return } const l = e.grid && r.grid && r.grid.rows > 1 let d if (e.virtual && r.virtual.enabled && r.loop) d = o(n) else if (l) { const p = e.slides.filter((g) => g.column === n)[0] let h = parseInt(p.getAttribute('data-swiper-slide-index'), 10) Number.isNaN(h) && (h = Math.max(e.slides.indexOf(p), 0)), (d = Math.floor(h / r.grid.rows)) } else if (e.slides[n]) { const p = e.slides[n].getAttribute('data-swiper-slide-index') p ? (d = parseInt(p, 10)) : (d = n) } else d = n Object.assign(e, { previousSnapIndex: c, snapIndex: u, previousRealIndex: f, realIndex: d, previousIndex: a, activeIndex: n, }), e.initialized && ke(e), e.emit('activeIndexChange'), e.emit('snapIndexChange'), (e.initialized || e.params.runCallbacksOnInit) && (f !== d && e.emit('realIndexChange'), e.emit('slideChange')) } function zt(s, e) { const t = this, i = t.params let r = s.closest(`.${i.slideClass}, swiper-slide`) !r && t.isElement && e && e.length > 1 && e.includes(s) && [...e.slice(e.indexOf(s) + 1, e.length)].forEach((c) => { !r && c.matches && c.matches(`.${i.slideClass}, swiper-slide`) && (r = c) }) let a = !1, f if (r) { for (let c = 0; c < t.slides.length; c += 1) if (t.slides[c] === r) { ;(a = !0), (f = c) break } } if (r && a) (t.clickedSlide = r), t.virtual && t.params.virtual.enabled ? (t.clickedIndex = parseInt( r.getAttribute('data-swiper-slide-index'), 10 )) : (t.clickedIndex = f) else { ;(t.clickedSlide = void 0), (t.clickedIndex = void 0) return } i.slideToClickedSlide && t.clickedIndex !== void 0 && t.clickedIndex !== t.activeIndex && t.slideToClickedSlide() } var Dt = { updateSize: Et, updateSlides: xt, updateAutoHeight: Tt, updateSlidesOffset: Mt, updateSlidesProgress: Ct, updateProgress: Pt, updateSlidesClasses: Lt, updateActiveIndex: At, updateClickedSlide: zt, } function Ot(s) { s === void 0 && (s = this.isHorizontal() ? 'x' : 'y') const e = this, { params: t, rtlTranslate: i, translate: r, wrapperEl: a } = e if (t.virtualTranslate) return i ? -r : r if (t.cssMode) return r let f = Le(a, s) return (f += e.cssOverflowAdjustment()), i && (f = -f), f || 0 } function $t(s, e) { const t = this, { rtlTranslate: i, params: r, wrapperEl: a, progress: f } = t let c = 0, n = 0 const u = 0 t.isHorizontal() ? (c = i ? -s : s) : (n = s), r.roundLengths && ((c = Math.floor(c)), (n = Math.floor(n))), (t.previousTranslate = t.translate), (t.translate = t.isHorizontal() ? c : n), r.cssMode ? (a[t.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = t.isHorizontal() ? -c : -n) : r.virtualTranslate || (t.isHorizontal() ? (c -= t.cssOverflowAdjustment()) : (n -= t.cssOverflowAdjustment()), (a.style.transform = `translate3d(${c}px, ${n}px, ${u}px)`)) let o const l = t.maxTranslate() - t.minTranslate() l === 0 ? (o = 0) : (o = (s - t.minTranslate()) / l), o !== f && t.updateProgress(s), t.emit('setTranslate', t.translate, e) } function kt() { return -this.snapGrid[0] } function Vt() { return -this.snapGrid[this.snapGrid.length - 1] } function Gt(s, e, t, i, r) { s === void 0 && (s = 0), e === void 0 && (e = this.params.speed), t === void 0 && (t = !0), i === void 0 && (i = !0) const a = this, { params: f, wrapperEl: c } = a if (a.animating && f.preventInteractionOnTransition) return !1 const n = a.minTranslate(), u = a.maxTranslate() let o if ( (i && s > n ? (o = n) : i && s < u ? (o = u) : (o = s), a.updateProgress(o), f.cssMode) ) { const l = a.isHorizontal() if (e === 0) c[l ? 'scrollLeft' : 'scrollTop'] = -o else { if (!a.support.smoothScroll) return ( qe({ swiper: a, targetPosition: -o, side: l ? 'left' : 'top' }), !0 ) c.scrollTo({ [l ? 'left' : 'top']: -o, behavior: 'smooth' }) } return !0 } return ( e === 0 ? (a.setTransition(0), a.setTranslate(o), t && (a.emit('beforeTransitionStart', e, r), a.emit('transitionEnd'))) : (a.setTransition(e), a.setTranslate(o), t && (a.emit('beforeTransitionStart', e, r), a.emit('transitionStart')), a.animating || ((a.animating = !0), a.onTranslateToWrapperTransitionEnd || (a.onTranslateToWrapperTransitionEnd = function (d) { !a || a.destroyed || (d.target === this && (a.wrapperEl.removeEventListener( 'transitionend', a.onTranslateToWrapperTransitionEnd ), (a.onTranslateToWrapperTransitionEnd = null), delete a.onTranslateToWrapperTransitionEnd, (a.animating = !1), t && a.emit('transitionEnd'))) }), a.wrapperEl.addEventListener( 'transitionend', a.onTranslateToWrapperTransitionEnd ))), !0 ) } var Bt = { getTranslate: Ot, setTranslate: $t, minTranslate: kt, maxTranslate: Vt, translateTo: Gt, } function Ht(s, e) { const t = this t.params.cssMode || ((t.wrapperEl.style.transitionDuration = `${s}ms`), (t.wrapperEl.style.transitionDelay = s === 0 ? '0ms' : '')), t.emit('setTransition', s, e) } function Ue(s) { let { swiper: e, runCallbacks: t, direction: i, step: r } = s const { activeIndex: a, previousIndex: f } = e let c = i if ( (c || (a > f ? (c = 'next') : a < f ? (c = 'prev') : (c = 'reset')), e.emit(`transition${r}`), t && a !== f) ) { if (c === 'reset') { e.emit(`slideResetTransition${r}`) return } e.emit(`slideChangeTransition${r}`), c === 'next' ? e.emit(`slideNextTransition${r}`) : e.emit(`slidePrevTransition${r}`) } } function Ft(s, e) { s === void 0 && (s = !0) const t = this, { params: i } = t i.cssMode || (i.autoHeight && t.updateAutoHeight(), Ue({ swiper: t, runCallbacks: s, direction: e, step: 'Start' })) } function Nt(s, e) { s === void 0 && (s = !0) const t = this, { params: i } = t ;(t.animating = !1), !i.cssMode && (t.setTransition(0), Ue({ swiper: t, runCallbacks: s, direction: e, step: 'End' })) } var Rt = { setTransition: Ht, transitionStart: Ft, transitionEnd: Nt } function Yt(s, e, t, i, r) { s === void 0 && (s = 0), t === void 0 && (t = !0), typeof s == 'string' && (s = parseInt(s, 10)) const a = this let f = s f < 0 && (f = 0) const { params: c, snapGrid: n, slidesGrid: u, previousIndex: o, activeIndex: l, rtlTranslate: d, wrapperEl: p, enabled: h, } = a if ( (!h && !i && !r) || a.destroyed || (a.animating && c.preventInteractionOnTransition) ) return !1 typeof e == 'undefined' && (e = a.params.speed) const g = Math.min(a.params.slidesPerGroupSkip, f) let w = g + Math.floor((f - g) / a.params.slidesPerGroup) w >= n.length && (w = n.length - 1) const y = -n[w] if (c.normalizeSlideIndex) for (let S = 0; S < u.length; S += 1) { const A = -Math.floor(y * 100), O = Math.floor(u[S] * 100), z = Math.floor(u[S + 1] * 100) typeof u[S + 1] != 'undefined' ? A >= O && A < z - (z - O) / 2 ? (f = S) : A >= O && A < z && (f = S + 1) : A >= O && (f = S) } if ( a.initialized && f !== l && ((!a.allowSlideNext && (d ? y > a.translate && y > a.minTranslate() : y < a.translate && y < a.minTranslate())) || (!a.allowSlidePrev && y > a.translate && y > a.maxTranslate() && (l || 0) !== f)) ) return !1 f !== (o || 0) && t && a.emit('beforeSlideChangeStart'), a.updateProgress(y) let v f > l ? (v = 'next') : f < l ? (v = 'prev') : (v = 'reset') const m = a.virtual && a.params.virtual.enabled if (!(m && r) && ((d && -y === a.translate) || (!d && y === a.translate))) return ( a.updateActiveIndex(f), c.autoHeight && a.updateAutoHeight(), a.updateSlidesClasses(), c.effect !== 'slide' && a.setTranslate(y), v !== 'reset' && (a.transitionStart(t, v), a.transitionEnd(t, v)), !1 ) if (c.cssMode) { const S = a.isHorizontal(), A = d ? y : -y if (e === 0) m && ((a.wrapperEl.style.scrollSnapType = 'none'), (a._immediateVirtual = !0)), m && !a._cssModeVirtualInitialSet && a.params.initialSlide > 0 ? ((a._cssModeVirtualInitialSet = !0), requestAnimationFrame(() => { p[S ? 'scrollLeft' : 'scrollTop'] = A })) : (p[S ? 'scrollLeft' : 'scrollTop'] = A), m && requestAnimationFrame(() => { ;(a.wrapperEl.style.scrollSnapType = ''), (a._immediateVirtual = !1) }) else { if (!a.support.smoothScroll) return ( qe({ swiper: a, targetPosition: A, side: S ? 'left' : 'top' }), !0 ) p.scrollTo({ [S ? 'left' : 'top']: A, behavior: 'smooth' }) } return !0 } return ( a.setTransition(e), a.setTranslate(y), a.updateActiveIndex(f), a.updateSlidesClasses(), a.emit('beforeTransitionStart', e, i), a.transitionStart(t, v), e === 0 ? a.transitionEnd(t, v) : a.animating || ((a.animating = !0), a.onSlideToWrapperTransitionEnd || (a.onSlideToWrapperTransitionEnd = function (A) { !a || a.destroyed || (A.target === this && (a.wrapperEl.removeEventListener( 'transitionend', a.onSlideToWrapperTransitionEnd ), (a.onSlideToWrapperTransitionEnd = null), delete a.onSlideToWrapperTransitionEnd, a.transitionEnd(t, v))) }), a.wrapperEl.addEventListener( 'transitionend', a.onSlideToWrapperTransitionEnd )), !0 ) } function Xt(s, e, t, i) { s === void 0 && (s = 0), t === void 0 && (t = !0), typeof s == 'string' && (s = parseInt(s, 10)) const r = this if (r.destroyed) return typeof e == 'undefined' && (e = r.params.speed) const a = r.grid && r.params.grid && r.params.grid.rows > 1 let f = s if (r.params.loop) if (r.virtual && r.params.virtual.enabled) f = f + r.virtual.slidesBefore else { let c if (a) { const d = f * r.params.grid.rows c = r.slides.filter( (p) => p.getAttribute('data-swiper-slide-index') * 1 === d )[0].column } else c = r.getSlideIndexByData(f) const n = a ? Math.ceil(r.slides.length / r.params.grid.rows) : r.slides.length, { centeredSlides: u } = r.params let o = r.params.slidesPerView o === 'auto' ? (o = r.slidesPerViewDynamic()) : ((o = Math.ceil(parseFloat(r.params.slidesPerView, 10))), u && o % 2 == 0 && (o = o + 1)) let l = n - c < o if ( (u && (l = l || c < Math.ceil(o / 2)), i && u && r.params.slidesPerView !== 'auto' && !a && (l = !1), l) ) { const d = u ? c < r.activeIndex ? 'prev' : 'next' : c - r.activeIndex - 1 < r.params.slidesPerView ? 'next' : 'prev' r.loopFix({ direction: d, slideTo: !0, activeSlideIndex: d === 'next' ? c + 1 : c - n + 1, slideRealIndex: d === 'next' ? r.realIndex : void 0, }) } if (a) { const d = f * r.params.grid.rows f = r.slides.filter( (p) => p.getAttribute('data-swiper-slide-index') * 1 === d )[0].column } else f = r.getSlideIndexByData(f) } return ( requestAnimationFrame(() => { r.slideTo(f, e, t, i) }), r ) } function qt(s, e, t) { e === void 0 && (e = !0) const i = this, { enabled: r, params: a, animating: f } = i if (!r || i.destroyed) return i typeof s == 'undefined' && (s = i.params.speed) let c = a.slidesPerGroup a.slidesPerView === 'auto' && a.slidesPerGroup === 1 && a.slidesPerGroupAuto && (c = Math.max(i.slidesPerViewDynamic('current', !0), 1)) const n = i.activeIndex < a.slidesPerGroupSkip ? 1 : c, u = i.virtual && a.virtual.enabled if (a.loop) { if (f && !u && a.loopPreventsSliding) return !1 if ( (i.loopFix({ direction: 'next' }), (i._clientLeft = i.wrapperEl.clientLeft), i.activeIndex === i.slides.length - 1 && a.cssMode) ) return ( requestAnimationFrame(() => { i.slideTo(i.activeIndex + n, s, e, t) }), !0 ) } return a.rewind && i.isEnd ? i.slideTo(0, s, e, t) : i.slideTo(i.activeIndex + n, s, e, t) } function Wt(s, e, t) { e === void 0 && (e = !0) const i = this, { params: r, snapGrid: a, slidesGrid: f, rtlTranslate: c, enabled: n, animating: u, } = i if (!n || i.destroyed) return i typeof s == 'undefined' && (s = i.params.speed) const o = i.virtual && r.virtual.enabled if (r.loop) { if (u && !o && r.loopPreventsSliding) return !1 i.loopFix({ direction: 'prev' }), (i._clientLeft = i.wrapperEl.clientLeft) } const l = c ? i.translate : -i.translate function d(y) { return y < 0 ? -Math.floor(Math.abs(y)) : Math.floor(y) } const p = d(l), h = a.map((y) => d(y)) let g = a[h.indexOf(p) - 1] if (typeof g == 'undefined' && r.cssMode) { let y a.forEach((v, m) => { p >= v && (y = m) }), typeof y != 'undefined' && (g = a[y > 0 ? y - 1 : y]) } let w = 0 if ( (typeof g != 'undefined' && ((w = f.indexOf(g)), w < 0 && (w = i.activeIndex - 1), r.slidesPerView === 'auto' && r.slidesPerGroup === 1 && r.slidesPerGroupAuto && ((w = w - i.slidesPerViewDynamic('previous', !0) + 1), (w = Math.max(w, 0)))), r.rewind && i.isBeginning) ) { const y = i.params.virtual && i.params.virtual.enabled && i.virtual ? i.virtual.slides.length - 1 : i.slides.length - 1 return i.slideTo(y, s, e, t) } else if (r.loop && i.activeIndex === 0 && r.cssMode) return ( requestAnimationFrame(() => { i.slideTo(w, s, e, t) }), !0 ) return i.slideTo(w, s, e, t) } function _t(s, e, t) { e === void 0 && (e = !0) const i = this if (!i.destroyed) return ( typeof s == 'undefined' && (s = i.params.speed), i.slideTo(i.activeIndex, s, e, t) ) } function jt(s, e, t, i) { e === void 0 && (e = !0), i === void 0 && (i = 0.5) const r = this if (r.destroyed) return typeof s == 'undefined' && (s = r.params.speed) let a = r.activeIndex const f = Math.min(r.params.slidesPerGroupSkip, a), c = f + Math.floor((a - f) / r.params.slidesPerGroup), n = r.rtlTranslate ? r.translate : -r.translate if (n >= r.snapGrid[c]) { const u = r.snapGrid[c], o = r.snapGrid[c + 1] n - u > (o - u) * i && (a += r.params.slidesPerGroup) } else { const u = r.snapGrid[c - 1], o = r.snapGrid[c] n - u <= (o - u) * i && (a -= r.params.slidesPerGroup) } return ( (a = Math.max(a, 0)), (a = Math.min(a, r.slidesGrid.length - 1)), r.slideTo(a, s, e, t) ) } function Ut() { const s = this if (s.destroyed) return const { params: e, slidesEl: t } = s, i = e.slidesPerView === 'auto' ? s.slidesPerViewDynamic() : e.slidesPerView let r = s.clickedIndex, a const f = s.isElement ? 'swiper-slide' : `.${e.slideClass}` if (e.loop) { if (s.animating) return ;(a = parseInt( s.clickedSlide.getAttribute('data-swiper-slide-index'), 10 )), e.centeredSlides ? r < s.loopedSlides - i / 2 || r > s.slides.length - s.loopedSlides + i / 2 ? (s.loopFix(), (r = s.getSlideIndex( W(t, `${f}[data-swiper-slide-index="${a}"]`)[0] )), ae(() => { s.slideTo(r) })) : s.slideTo(r) : r > s.slides.length - i ? (s.loopFix(), (r = s.getSlideIndex( W(t, `${f}[data-swiper-slide-index="${a}"]`)[0] )), ae(() => { s.slideTo(r) })) : s.slideTo(r) } else s.slideTo(r) } var Kt = { slideTo: Yt, slideToLoop: Xt, slideNext: qt, slidePrev: Wt, slideReset: _t, slideToClosest: jt, slideToClickedSlide: Ut, } function Zt(s) { const e = this, { params: t, slidesEl: i } = e if (!t.loop || (e.virtual && e.params.virtual.enabled)) return const r = () => { W(i, `.${t.slideClass}, swiper-slide`).forEach((l, d) => { l.setAttribute('data-swiper-slide-index', d) }) }, a = e.grid && t.grid && t.grid.rows > 1, f = t.slidesPerGroup * (a ? t.grid.rows : 1), c = e.slides.length % f != 0, n = a && e.slides.length % t.grid.rows != 0, u = (o) => { for (let l = 0; l < o; l += 1) { const d = e.isElement ? J('swiper-slide', [t.slideBlankClass]) : J('div', [t.slideClass, t.slideBlankClass]) e.slidesEl.append(d) } } if (c) { if (t.loopAddBlankSlides) { const o = f - (e.slides.length % f) u(o), e.recalcSlides(), e.updateSlides() } else ye( 'Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)' ) r() } else if (n) { if (t.loopAddBlankSlides) { const o = t.grid.rows - (e.slides.length % t.grid.rows) u(o), e.recalcSlides(), e.updateSlides() } else ye( 'Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)' ) r() } else r() e.loopFix({ slideRealIndex: s, direction: t.centeredSlides ? void 0 : 'next', }) } function Qt(s) { let { slideRealIndex: e, slideTo: t = !0, direction: i, setTranslate: r, activeSlideIndex: a, byController: f, byMousewheel: c, } = s === void 0 ? {} : s const n = this if (!n.params.loop) return n.emit('beforeLoopFix') const { slides: u, allowSlidePrev: o, allowSlideNext: l, slidesEl: d, params: p, } = n, { centeredSlides: h } = p if ( ((n.allowSlidePrev = !0), (n.allowSlideNext = !0), n.virtual && p.virtual.enabled) ) { t && (!p.centeredSlides && n.snapIndex === 0 ? n.slideTo(n.virtual.slides.length, 0, !1, !0) : p.centeredSlides && n.snapIndex < p.slidesPerView ? n.slideTo(n.virtual.slides.length + n.snapIndex, 0, !1, !0) : n.snapIndex === n.snapGrid.length - 1 && n.slideTo(n.virtual.slidesBefore, 0, !1, !0)), (n.allowSlidePrev = o), (n.allowSlideNext = l), n.emit('loopFix') return } let g = p.slidesPerView g === 'auto' ? (g = n.slidesPerViewDynamic()) : ((g = Math.ceil(parseFloat(p.slidesPerView, 10))), h && g % 2 == 0 && (g = g + 1)) const w = p.slidesPerGroupAuto ? g : p.slidesPerGroup let y = w y % w != 0 && (y += w - (y % w)), (y += p.loopAdditionalSlides), (n.loopedSlides = y) const v = n.grid && p.grid && p.grid.rows > 1 u.length < g + y ? ye( 'Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters' ) : v && p.grid.fill === 'row' && ye( 'Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`' ) const m = [], b = [] let S = n.activeIndex typeof a == 'undefined' ? (a = n.getSlideIndex( u.filter((E) => E.classList.contains(p.slideActiveClass))[0] )) : (S = a) const A = i === 'next' || !i, O = i === 'prev' || !i let z = 0, T = 0 const P = v ? Math.ceil(u.length / p.grid.rows) : u.length, C = (v ? u[a].column : a) + (h && typeof r == 'undefined' ? -g / 2 + 0.5 : 0) if (C < y) { z = Math.max(y - C, w) for (let E = 0; E < y - C; E += 1) { const x = E - Math.floor(E / P) * P if (v) { const D = P - x - 1 for (let G = u.length - 1; G >= 0; G -= 1) u[G].column === D && m.push(G) } else m.push(P - x - 1) } } else if (C + g > P - y) { T = Math.max(C - (P - y * 2), w) for (let E = 0; E < T; E += 1) { const x = E - Math.floor(E / P) * P v ? u.forEach((D, G) => { D.column === x && b.push(G) }) : b.push(x) } } if ( ((n.__preventObserver__ = !0), requestAnimationFrame(() => { n.__preventObserver__ = !1 }), O && m.forEach((E) => { ;(u[E].swiperLoopMoveDOM = !0), d.prepend(u[E]), (u[E].swiperLoopMoveDOM = !1) }), A && b.forEach((E) => { ;(u[E].swiperLoopMoveDOM = !0), d.append(u[E]), (u[E].swiperLoopMoveDOM = !1) }), n.recalcSlides(), p.slidesPerView === 'auto' ? n.updateSlides() : v && ((m.length > 0 && O) || (b.length > 0 && A)) && n.slides.forEach((E, x) => { n.grid.updateSlide(x, E, n.slides) }), p.watchSlidesProgress && n.updateSlidesOffset(), t) ) { if (m.length > 0 && O) { if (typeof e == 'undefined') { const E = n.slidesGrid[S], D = n.slidesGrid[S + z] - E c ? n.setTranslate(n.translate - D) : (n.slideTo(S + Math.ceil(z), 0, !1, !0), r && ((n.touchEventsData.startTranslate = n.touchEventsData.startTranslate - D), (n.touchEventsData.currentTranslate = n.touchEventsData.currentTranslate - D))) } else if (r) { const E = v ? m.length / p.grid.rows : m.length n.slideTo(n.activeIndex + E, 0, !1, !0), (n.touchEventsData.currentTranslate = n.translate) } } else if (b.length > 0 && A) if (typeof e == 'undefined') { const E = n.slidesGrid[S], D = n.slidesGrid[S - T] - E c ? n.setTranslate(n.translate - D) : (n.slideTo(S - T, 0, !1, !0), r && ((n.touchEventsData.startTranslate = n.touchEventsData.startTranslate - D), (n.touchEventsData.currentTranslate = n.touchEventsData.currentTranslate - D))) } else { const E = v ? b.length / p.grid.rows : b.length n.slideTo(n.activeIndex - E, 0, !1, !0) } } if ( ((n.allowSlidePrev = o), (n.allowSlideNext = l), n.controller && n.controller.control && !f) ) { const E = { slideRealIndex: e, direction: i, setTranslate: r, activeSlideIndex: a, byController: !0, } Array.isArray(n.controller.control) ? n.controller.control.forEach((x) => { !x.destroyed && x.params.loop && x.loopFix( Xe(Ye({}, E), { slideTo: x.params.slidesPerView === p.slidesPerView ? t : !1, }) ) }) : n.controller.control instanceof n.constructor && n.controller.control.params.loop && n.controller.control.loopFix( Xe(Ye({}, E), { slideTo: n.controller.control.params.slidesPerView === p.slidesPerView ? t : !1, }) ) } n.emit('loopFix') } function Jt() { const s = this, { params: e, slidesEl: t } = s if (!e.loop || (s.virtual && s.params.virtual.enabled)) return s.recalcSlides() const i = [] s.slides.forEach((r) => { const a = typeof r.swiperSlideIndex == 'undefined' ? r.getAttribute('data-swiper-slide-index') * 1 : r.swiperSlideIndex i[a] = r }), s.slides.forEach((r) => { r.removeAttribute('data-swiper-slide-index') }), i.forEach((r) => { t.append(r) }), s.recalcSlides(), s.slideTo(s.realIndex, 0) } var es = { loopCreate: Zt, loopFix: Qt, loopDestroy: Jt } function ts(s) { const e = this if ( !e.params.simulateTouch || (e.params.watchOverflow && e.isLocked) || e.params.cssMode ) return const t = e.params.touchEventsTarget === 'container' ? e.el : e.wrapperEl e.isElement && (e.__preventObserver__ = !0), (t.style.cursor = 'move'), (t.style.cursor = s ? 'grabbing' : 'grab'), e.isElement && requestAnimationFrame(() => { e.__preventObserver__ = !1 }) } function ss() { const s = this ;(s.params.watchOverflow && s.isLocked) || s.params.cssMode || (s.isElement && (s.__preventObserver__ = !0), (s[ s.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl' ].style.cursor = ''), s.isElement && requestAnimationFrame(() => { s.__preventObserver__ = !1 })) } var is = { setGrabCursor: ts, unsetGrabCursor: ss } function rs(s, e) { e === void 0 && (e = this) function t(i) { if (!i || i === q() || i === X()) return null i.assignedSlot && (i = i.assignedSlot) const r = i.closest(s) return !r && !i.getRootNode ? null : r || t(i.getRootNode().host) } return t(e) } function Ke(s, e, t) { const i = X(), { params: r } = s, a = r.edgeSwipeDetection, f = r.edgeSwipeThreshold return a && (t <= f || t >= i.innerWidth - f) ? a === 'prevent' ? (e.preventDefault(), !0) : !1 : !0 } function as(s) { const e = this, t = q() let i = s i.originalEvent && (i = i.originalEvent) const r = e.touchEventsData if (i.type === 'pointerdown') { if (r.pointerId !== null && r.pointerId !== i.pointerId) return r.pointerId = i.pointerId } else i.type === 'touchstart' && i.targetTouches.length === 1 && (r.touchId = i.targetTouches[0].identifier) if (i.type === 'touchstart') { Ke(e, i, i.targetTouches[0].pageX) return } const { params: a, touches: f, enabled: c } = e if ( !c || (!a.simulateTouch && i.pointerType === 'mouse') || (e.animating && a.preventInteractionOnTransition) ) return !e.animating && a.cssMode && a.loop && e.loopFix() let n = i.target if ( (a.touchEventsTarget === 'wrapper' && !ut(n, e.wrapperEl)) || ('which' in i && i.which === 3) || ('button' in i && i.button > 0) || (r.isTouched && r.isMoved) ) return const u = !!a.noSwipingClass && a.noSwipingClass !== '', o = i.composedPath ? i.composedPath() : i.path u && i.target && i.target.shadowRoot && o && (n = o[0]) const l = a.noSwipingSelector ? a.noSwipingSelector : `.${a.noSwipingClass}`, d = !!(i.target && i.target.shadowRoot) if (a.noSwiping && (d ? rs(l, n) : n.closest(l))) { e.allowClick = !0 return } if (a.swipeHandler && !n.closest(a.swipeHandler)) return ;(f.currentX = i.pageX), (f.currentY = i.pageY) const p = f.currentX, h = f.currentY if (!Ke(e, i, p)) return Object.assign(r, { isTouched: !0, isMoved: !1, allowTouchCallbacks: !0, isScrolling: void 0, startMoving: void 0, }), (f.startX = p), (f.startY = h), (r.touchStartTime = ee()), (e.allowClick = !0), e.updateSize(), (e.swipeDirection = void 0), a.threshold > 0 && (r.allowThresholdMove = !1) let g = !0 n.matches(r.focusableElements) && ((g = !1), n.nodeName === 'SELECT' && (r.isTouched = !1)), t.activeElement && t.activeElement.matches(r.focusableElements) && t.activeElement !== n && t.activeElement.blur() const w = g && e.allowTouchMove && a.touchStartPreventDefault ;(a.touchStartForcePreventDefault || w) && !n.isContentEditable && i.preventDefault(), a.freeMode && a.freeMode.enabled && e.freeMode && e.animating && !a.cssMode && e.freeMode.onTouchStart(), e.emit('touchStart', i) } function ns(s) { const e = q(), t = this, i = t.touchEventsData, { params: r, touches: a, rtlTranslate: f, enabled: c } = t if (!c || (!r.simulateTouch && s.pointerType === 'mouse')) return let n = s if ( (n.originalEvent && (n = n.originalEvent), n.type === 'pointermove' && (i.touchId !== null || n.pointerId !== i.pointerId)) ) return let u if (n.type === 'touchmove') { if ( ((u = [...n.changedTouches].filter( (A) => A.identifier === i.touchId )[0]), !u || u.identifier !== i.touchId) ) return } else u = n if (!i.isTouched) { i.startMoving && i.isScrolling && t.emit('touchMoveOpposite', n) return } const o = u.pageX, l = u.pageY if (n.preventedByNestedSwiper) { ;(a.startX = o), (a.startY = l) return } if (!t.allowTouchMove) { n.target.matches(i.focusableElements) || (t.allowClick = !1), i.isTouched && (Object.assign(a, { startX: o, startY: l, currentX: o, currentY: l }), (i.touchStartTime = ee())) return } if (r.touchReleaseOnEdges && !r.loop) { if (t.isVertical()) { if ( (l < a.startY && t.translate <= t.maxTranslate()) || (l > a.startY && t.translate >= t.minTranslate()) ) { ;(i.isTouched = !1), (i.isMoved = !1) return } } else if ( (o < a.startX && t.translate <= t.maxTranslate()) || (o > a.startX && t.translate >= t.minTranslate()) ) return } if ( e.activeElement && n.target === e.activeElement && n.target.matches(i.focusableElements) ) { ;(i.isMoved = !0), (t.allowClick = !1) return } i.allowTouchCallbacks && t.emit('touchMove', n), (a.previousX = a.currentX), (a.previousY = a.currentY), (a.currentX = o), (a.currentY = l) const d = a.currentX - a.startX, p = a.currentY - a.startY if (t.params.threshold && Math.sqrt(d ** 2 + p ** 2) < t.params.threshold) return if (typeof i.isScrolling == 'undefined') { let A ;(t.isHorizontal() && a.currentY === a.startY) || (t.isVertical() && a.currentX === a.startX) ? (i.isScrolling = !1) : d * d + p * p >= 25 && ((A = (Math.atan2(Math.abs(p), Math.abs(d)) * 180) / Math.PI), (i.isScrolling = t.isHorizontal() ? A > r.touchAngle : 90 - A > r.touchAngle)) } if ( (i.isScrolling && t.emit('touchMoveOpposite', n), typeof i.startMoving == 'undefined' && (a.currentX !== a.startX || a.currentY !== a.startY) && (i.startMoving = !0), i.isScrolling || (n.type === 'touchmove' && i.preventTouchMoveFromPointerMove)) ) { i.isTouched = !1 return } if (!i.startMoving) return ;(t.allowClick = !1), !r.cssMode && n.cancelable && n.preventDefault(), r.touchMoveStopPropagation && !r.nested && n.stopPropagation() let h = t.isHorizontal() ? d : p, g = t.isHorizontal() ? a.currentX - a.previousX : a.currentY - a.previousY r.oneWayMovement && ((h = Math.abs(h) * (f ? 1 : -1)), (g = Math.abs(g) * (f ? 1 : -1))), (a.diff = h), (h *= r.touchRatio), f && ((h = -h), (g = -g)) const w = t.touchesDirection ;(t.swipeDirection = h > 0 ? 'prev' : 'next'), (t.touchesDirection = g > 0 ? 'prev' : 'next') const y = t.params.loop && !r.cssMode, v = (t.touchesDirection === 'next' && t.allowSlideNext) || (t.touchesDirection === 'prev' && t.allowSlidePrev) if (!i.isMoved) { if ( (y && v && t.loopFix({ direction: t.swipeDirection }), (i.startTranslate = t.getTranslate()), t.setTransition(0), t.animating) ) { const A = new window.CustomEvent('transitionend', { bubbles: !0, cancelable: !0, detail: { bySwiperTouchMove: !0 }, }) t.wrapperEl.dispatchEvent(A) } ;(i.allowMomentumBounce = !1), r.grabCursor && (t.allowSlideNext === !0 || t.allowSlidePrev === !0) && t.setGrabCursor(!0), t.emit('sliderFirstMove', n) } let m if ( (new Date().getTime(), i.isMoved && i.allowThresholdMove && w !== t.touchesDirection && y && v && Math.abs(h) >= 1) ) { Object.assign(a, { startX: o, startY: l, currentX: o, currentY: l, startTranslate: i.currentTranslate, }), (i.loopSwapReset = !0), (i.startTranslate = i.currentTranslate) return } t.emit('sliderMove', n), (i.isMoved = !0), (i.currentTranslate = h + i.startTranslate) let b = !0, S = r.resistanceRatio if ( (r.touchReleaseOnEdges && (S = 0), h > 0 ? (y && v && !m && i.allowThresholdMove && i.currentTranslate > (r.centeredSlides ? t.minTranslate() - t.slidesSizesGrid[t.activeIndex + 1] - (r.slidesPerView !== 'auto' && t.slides.length - r.slidesPerView >= 2 ? t.slidesSizesGrid[t.activeIndex + 1] + t.params.spaceBetween : 0) - t.params.spaceBetween : t.minTranslate()) && t.loopFix({ direction: 'prev', setTranslate: !0, activeSlideIndex: 0, }), i.currentTranslate > t.minTranslate() && ((b = !1), r.resistance && (i.currentTranslate = t.minTranslate() - 1 + (-t.minTranslate() + i.startTranslate + h) ** S))) : h < 0 && (y && v && !m && i.allowThresholdMove && i.currentTranslate < (r.centeredSlides ? t.maxTranslate() + t.slidesSizesGrid[t.slidesSizesGrid.length - 1] + t.params.spaceBetween + (r.slidesPerView !== 'auto' && t.slides.length - r.slidesPerView >= 2 ? t.slidesSizesGrid[t.slidesSizesGrid.length - 1] + t.params.spaceBetween : 0) : t.maxTranslate()) && t.loopFix({ direction: 'next', setTranslate: !0, activeSlideIndex: t.slides.length - (r.slidesPerView === 'auto' ? t.slidesPerViewDynamic() : Math.ceil(parseFloat(r.slidesPerView, 10))), }), i.currentTranslate < t.maxTranslate() && ((b = !1), r.resistance && (i.currentTranslate = t.maxTranslate() + 1 - (t.maxTranslate() - i.startTranslate - h) ** S))), b && (n.preventedByNestedSwiper = !0), !t.allowSlideNext && t.swipeDirection === 'next' && i.currentTranslate < i.startTranslate && (i.currentTranslate = i.startTranslate), !t.allowSlidePrev && t.swipeDirection === 'prev' && i.currentTranslate > i.startTranslate && (i.currentTranslate = i.startTranslate), !t.allowSlidePrev && !t.allowSlideNext && (i.currentTranslate = i.startTranslate), r.threshold > 0) ) if (Math.abs(h) > r.threshold || i.allowThresholdMove) { if (!i.allowThresholdMove) { ;(i.allowThresholdMove = !0), (a.startX = a.currentX), (a.startY = a.currentY), (i.currentTranslate = i.startTranslate), (a.diff = t.isHorizontal() ? a.currentX - a.startX : a.currentY - a.startY) return } } else { i.currentTranslate = i.startTranslate return } !r.followFinger || r.cssMode || (((r.freeMode && r.freeMode.enabled && t.freeMode) || r.watchSlidesProgress) && (t.updateActiveIndex(), t.updateSlidesClasses()), r.freeMode && r.freeMode.enabled && t.freeMode && t.freeMode.onTouchMove(), t.updateProgress(i.currentTranslate), t.setTranslate(i.currentTranslate)) } function ls(s) { const e = this, t = e.touchEventsData let i = s i.originalEvent && (i = i.originalEvent) let r if (i.type === 'touchend' || i.type === 'touchcancel') { if ( ((r = [...i.changedTouches].filter( (S) => S.identifier === t.touchId )[0]), !r || r.identifier !== t.touchId) ) return } else { if (t.touchId !== null || i.pointerId !== t.pointerId) return r = i } if ( ['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes( i.type ) && !( ['pointercancel', 'contextmenu'].includes(i.type) && (e.browser.isSafari || e.browser.isWebView) ) ) return ;(t.pointerId = null), (t.touchId = null) const { params: f, touches: c, rtlTranslate: n, slidesGrid: u, enabled: o, } = e if (!o || (!f.simulateTouch && i.pointerType === 'mouse')) return if ( (t.allowTouchCallbacks && e.emit('touchEnd', i), (t.allowTouchCallbacks = !1), !t.isTouched) ) { t.isMoved && f.grabCursor && e.setGrabCursor(!1), (t.isMoved = !1), (t.startMoving = !1) return } f.grabCursor && t.isMoved && t.isTouched && (e.allowSlideNext === !0 || e.allowSlidePrev === !0) && e.setGrabCursor(!1) const l = ee(), d = l - t.touchStartTime if (e.allowClick) { const S = i.path || (i.composedPath && i.composedPath()) e.updateClickedSlide((S && S[0]) || i.target, S), e.emit('tap click', i), d < 300 && l - t.lastClickTime < 300 && e.emit('doubleTap doubleClick', i) } if ( ((t.lastClickTime = ee()), ae(() => { e.destroyed || (e.allowClick = !0) }), !t.isTouched || !t.isMoved || !e.swipeDirection || (c.diff === 0 && !t.loopSwapReset) || (t.currentTranslate === t.startTranslate && !t.loopSwapReset)) ) { ;(t.isTouched = !1), (t.isMoved = !1), (t.startMoving = !1) return } ;(t.isTouched = !1), (t.isMoved = !1), (t.startMoving = !1) let p if ( (f.followFinger ? (p = n ? e.translate : -e.translate) : (p = -t.currentTranslate), f.cssMode) ) return if (f.freeMode && f.freeMode.enabled) { e.freeMode.onTouchEnd({ currentPos: p }) return } const h = p >= -e.maxTranslate() && !e.params.loop let g = 0, w = e.slidesSizesGrid[0] for ( let S = 0; S < u.length; S += S < f.slidesPerGroupSkip ? 1 : f.slidesPerGroup ) { const A = S < f.slidesPerGroupSkip - 1 ? 1 : f.slidesPerGroup typeof u[S + A] != 'undefined' ? (h || (p >= u[S] && p < u[S + A])) && ((g = S), (w = u[S + A] - u[S])) : (h || p >= u[S]) && ((g = S), (w = u[u.length - 1] - u[u.length - 2])) } let y = null, v = null f.rewind && (e.isBeginning ? (v = f.virtual && f.virtual.enabled && e.virtual ? e.virtual.slides.length - 1 : e.slides.length - 1) : e.isEnd && (y = 0)) const m = (p - u[g]) / w, b = g < f.slidesPerGroupSkip - 1 ? 1 : f.slidesPerGroup if (d > f.longSwipesMs) { if (!f.longSwipes) { e.slideTo(e.activeIndex) return } e.swipeDirection === 'next' && (m >= f.longSwipesRatio ? e.slideTo(f.rewind && e.isEnd ? y : g + b) : e.slideTo(g)), e.swipeDirection === 'prev' && (m > 1 - f.longSwipesRatio ? e.slideTo(g + b) : v !== null && m < 0 && Math.abs(m) > f.longSwipesRatio ? e.slideTo(v) : e.slideTo(g)) } else { if (!f.shortSwipes) { e.slideTo(e.activeIndex) return } e.navigation && (i.target === e.navigation.nextEl || i.target === e.navigation.prevEl) ? i.target === e.navigation.nextEl ? e.slideTo(g + b) : e.slideTo(g) : (e.swipeDirection === 'next' && e.slideTo(y !== null ? y : g + b), e.swipeDirection === 'prev' && e.slideTo(v !== null ? v : g)) } } function Ze() { const s = this, { params: e, el: t } = s if (t && t.offsetWidth === 0) return e.breakpoints && s.setBreakpoint() const { allowSlideNext: i, allowSlidePrev: r, snapGrid: a } = s, f = s.virtual && s.params.virtual.enabled ;(s.allowSlideNext = !0), (s.allowSlidePrev = !0), s.updateSize(), s.updateSlides(), s.updateSlidesClasses() const c = f && e.loop ;(e.slidesPerView === 'auto' || e.slidesPerView > 1) && s.isEnd && !s.isBeginning && !s.params.centeredSlides && !c ? s.slideTo(s.slides.length - 1, 0, !1, !0) : s.params.loop && !f ? s.slideToLoop(s.realIndex, 0, !1, !0) : s.slideTo(s.activeIndex, 0, !1, !0), s.autoplay && s.autoplay.running && s.autoplay.paused && (clearTimeout(s.autoplay.resizeTimeout), (s.autoplay.resizeTimeout = setTimeout(() => { s.autoplay && s.autoplay.running && s.autoplay.paused && s.autoplay.resume() }, 500))), (s.allowSlidePrev = r), (s.allowSlideNext = i), s.params.watchOverflow && a !== s.snapGrid && s.checkOverflow() } function os(s) { const e = this !e.enabled || e.allowClick || (e.params.preventClicks && s.preventDefault(), e.params.preventClicksPropagation && e.animating && (s.stopPropagation(), s.stopImmediatePropagation())) } function ds() { const s = this, { wrapperEl: e, rtlTranslate: t, enabled: i } = s if (!i) return ;(s.previousTranslate = s.translate), s.isHorizontal() ? (s.translate = -e.scrollLeft) : (s.translate = -e.scrollTop), s.translate === 0 && (s.translate = 0), s.updateActiveIndex(), s.updateSlidesClasses() let r const a = s.maxTranslate() - s.minTranslate() a === 0 ? (r = 0) : (r = (s.translate - s.minTranslate()) / a), r !== s.progress && s.updateProgress(t ? -s.translate : s.translate), s.emit('setTranslate', s.translate, !1) } function cs(s) { const e = this Ee(e, s.target), !( e.params.cssMode || (e.params.slidesPerView !== 'auto' && !e.params.autoHeight) ) && e.update() } function fs() { const s = this s.documentTouchHandlerProceeded || ((s.documentTouchHandlerProceeded = !0), s.params.touchReleaseOnEdges && (s.el.style.touchAction = 'auto')) } const Qe = (s, e) => { const t = q(), { params: i, el: r, wrapperEl: a, device: f } = s, c = !!i.nested, n = e === 'on' ? 'addEventListener' : 'removeEventListener', u = e !r || typeof r == 'string' || (t[n]('touchstart', s.onDocumentTouchStart, { passive: !1, capture: c }), r[n]('touchstart', s.onTouchStart, { passive: !1 }), r[n]('pointerdown', s.onTouchStart, { passive: !1 }), t[n]('touchmove', s.onTouchMove, { passive: !1, capture: c }), t[n]('pointermove', s.onTouchMove, { passive: !1, capture: c }), t[n]('touchend', s.onTouchEnd, { passive: !0 }), t[n]('pointerup', s.onTouchEnd, { passive: !0 }), t[n]('pointercancel', s.onTouchEnd, { passive: !0 }), t[n]('touchcancel', s.onTouchEnd, { passive: !0 }), t[n]('pointerout', s.onTouchEnd, { passive: !0 }), t[n]('pointerleave', s.onTouchEnd, { passive: !0 }), t[n]('contextmenu', s.onTouchEnd, { passive: !0 }), (i.preventClicks || i.preventClicksPropagation) && r[n]('click', s.onClick, !0), i.cssMode && a[n]('scroll', s.onScroll), i.updateOnWindowResize ? s[u]( f.ios || f.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', Ze, !0 ) : s[u]('observerUpdate', Ze, !0), r[n]('load', s.onLoad, { capture: !0 })) } function us() { const s = this, { params: e } = s ;(s.onTouchStart = as.bind(s)), (s.onTouchMove = ns.bind(s)), (s.onTouchEnd = ls.bind(s)), (s.onDocumentTouchStart = fs.bind(s)), e.cssMode && (s.onScroll = ds.bind(s)), (s.onClick = os.bind(s)), (s.onLoad = cs.bind(s)), Qe(s, 'on') } function ps() { Qe(this, 'off') } var ms = { attachEvents: us, detachEvents: ps } const Je = (s, e) => s.grid && e.grid && e.grid.rows > 1 function hs() { const s = this, { realIndex: e, initialized: t, params: i, el: r } = s, a = i.breakpoints if (!a || (a && Object.keys(a).length === 0)) return const f = s.getBreakpoint(a, s.params.breakpointsBase, s.el) if (!f || s.currentBreakpoint === f) return const n = (f in a ? a[f] : void 0) || s.originalParams, u = Je(s, i), o = Je(s, n), l = s.params.grabCursor, d = n.grabCursor, p = i.enabled u && !o ? (r.classList.remove( `${i.containerModifierClass}grid`, `${i.containerModifierClass}grid-column` ), s.emitContainerClasses()) : !u && o && (r.classList.add(`${i.containerModifierClass}grid`), ((n.grid.fill && n.grid.fill === 'column') || (!n.grid.fill && i.grid.fill === 'column')) && r.classList.add(`${i.containerModifierClass}grid-column`), s.emitContainerClasses()), l && !d ? s.unsetGrabCursor() : !l && d && s.setGrabCursor(), ['navigation', 'pagination', 'scrollbar'].forEach((m) => { if (typeof n[m] == 'undefined') return const b = i[m] && i[m].enabled, S = n[m] && n[m].enabled b && !S && s[m].disable(), !b && S && s[m].enable() }) const h = n.direction && n.direction !== i.direction, g = i.loop && (n.slidesPerView !== i.slidesPerView || h), w = i.loop h && t && s.changeDirection(), Q(s.params, n) const y = s.params.enabled, v = s.params.loop Object.assign(s, { allowTouchMove: s.params.allowTouchMove, allowSlideNext: s.params.allowSlideNext, allowSlidePrev: s.params.allowSlidePrev, }), p && !y ? s.disable() : !p && y && s.enable(), (s.currentBreakpoint = f), s.emit('_beforeBreakpoint', n), t && (g ? (s.loopDestroy(), s.loopCreate(e), s.updateSlides()) : !w && v ? (s.loopCreate(e), s.updateSlides()) : w && !v && s.loopDestroy()), s.emit('breakpoint', n) } function gs(s, e, t) { if ((e === void 0 && (e = 'window'), !s || (e === 'container' && !t))) return let i = !1 const r = X(), a = e === 'window' ? r.innerHeight : t.clientHeight, f = Object.keys(s).map((c) => { if (typeof c == 'string' && c.indexOf('@') === 0) { const n = parseFloat(c.substr(1)) return { value: a * n, point: c } } return { value: c, point: c } }) f.sort((c, n) => parseInt(c.value, 10) - parseInt(n.value, 10)) for (let c = 0; c < f.length; c += 1) { const { point: n, value: u } = f[c] e === 'window' ? r.matchMedia(`(min-width: ${u}px)`).matches && (i = n) : u <= t.clientWidth && (i = n) } return i || 'max' } var vs = { setBreakpoint: hs, getBreakpoint: gs } function ws(s, e) { const t = [] return ( s.forEach((i) => { typeof i == 'object' ? Object.keys(i).forEach((r) => { i[r] && t.push(e + r) }) : typeof i == 'string' && t.push(e + i) }), t ) } function ys() { const s = this, { classNames: e, params: t, rtl: i, el: r, device: a } = s, f = ws( [ 'initialized', t.direction, { 'free-mode': s.params.freeMode && t.freeMode.enabled }, { autoheight: t.autoHeight }, { rtl: i }, { grid: t.grid && t.grid.rows > 1 }, { 'grid-column': t.grid && t.grid.rows > 1 && t.grid.fill === 'column', }, { android: a.android }, { ios: a.ios }, { 'css-mode': t.cssMode }, { centered: t.cssMode && t.centeredSlides }, { 'watch-progress': t.watchSlidesProgress }, ], t.containerModifierClass ) e.push(...f), r.classList.add(...e), s.emitContainerClasses() } function bs() { const s = this, { el: e, classNames: t } = s !e || typeof e == 'string' || (e.classList.remove(...t), s.emitContainerClasses()) } var Ss = { addClasses: ys, removeClasses: bs } function Es() { const s = this, { isLocked: e, params: t } = s, { slidesOffsetBefore: i } = t if (i) { const r = s.slides.length - 1, a = s.slidesGrid[r] + s.slidesSizesGrid[r] + i * 2 s.isLocked = s.size > a } else s.isLocked = s.snapGrid.length === 1 t.allowSlideNext === !0 && (s.allowSlideNext = !s.isLocked), t.allowSlidePrev === !0 && (s.allowSlidePrev = !s.isLocked), e && e !== s.isLocked && (s.isEnd = !1), e !== s.isLocked && s.emit(s.isLocked ? 'lock' : 'unlock') } var xs = { checkOverflow: Es }, et = { init: !0, direction: 'horizontal', oneWayMovement: !1, swiperElementNodeName: 'SWIPER-CONTAINER', touchEventsTarget: 'wrapper', initialSlide: 0, speed: 300, cssMode: !1, updateOnWindowResize: !0, resizeObserver: !0, nested: !1, createElements: !1, eventsPrefix: 'swiper', enabled: !0, focusableElements: 'input, select, option, textarea, button, video, label', width: null, height: null, preventInteractionOnTransition: !1, userAgent: null, url: null, edgeSwipeDetection: !1, edgeSwipeThreshold: 20, autoHeight: !1, setWrapperSize: !1, virtualTranslate: !1, effect: 'slide', breakpoints: void 0, breakpointsBase: 'window', spaceBetween: 0, slidesPerView: 1, slidesPerGroup: 1, slidesPerGroupSkip: 0, slidesPerGroupAuto: !1, centeredSlides: !1, centeredSlidesBounds: !1, slidesOffsetBefore: 0, slidesOffsetAfter: 0, normalizeSlideIndex: !0, centerInsufficientSlides: !1, watchOverflow: !0, roundLengths: !1, touchRatio: 1, touchAngle: 45, simulateTouch: !0, shortSwipes: !0, longSwipes: !0, longSwipesRatio: 0.5, longSwipesMs: 300, followFinger: !0, allowTouchMove: !0, threshold: 5, touchMoveStopPropagation: !1, touchStartPreventDefault: !0, touchStartForcePreventDefault: !1, touchReleaseOnEdges: !1, uniqueNavElements: !0, resistance: !0, resistanceRatio: 0.85, watchSlidesProgress: !1, grabCursor: !1, preventClicks: !0, preventClicksPropagation: !0, slideToClickedSlide: !1, loop: !1, loopAddBlankSlides: !0, loopAdditionalSlides: 0, loopPreventsSliding: !0, rewind: !1, allowSlidePrev: !0, allowSlideNext: !0, swipeHandler: null, noSwiping: !0, noSwipingClass: 'swiper-no-swiping', noSwipingSelector: null, passiveListeners: !0, maxBackfaceHiddenSlides: 10, containerModifierClass: 'swiper-', slideClass: 'swiper-slide', slideBlankClass: 'swiper-slide-blank', slideActiveClass: 'swiper-slide-active', slideVisibleClass: 'swiper-slide-visible', slideFullyVisibleClass: 'swiper-slide-fully-visible', slideNextClass: 'swiper-slide-next', slidePrevClass: 'swiper-slide-prev', wrapperClass: 'swiper-wrapper', lazyPreloaderClass: 'swiper-lazy-preloader', lazyPreloadPrevNext: 0, runCallbacksOnInit: !0, _emitClasses: !1, } function Ts(s, e) { return function (i) { i === void 0 && (i = {}) const r = Object.keys(i)[0], a = i[r] if (typeof a != 'object' || a === null) { Q(e, i) return } if ( (s[r] === !0 && (s[r] = { enabled: !0 }), r === 'navigation' && s[r] && s[r].enabled && !s[r].prevEl && !s[r].nextEl && (s[r].auto = !0), ['pagination', 'scrollbar'].indexOf(r) >= 0 && s[r] && s[r].enabled && !s[r].el && (s[r].auto = !0), !(r in s && 'enabled' in a)) ) { Q(e, i) return } typeof s[r] == 'object' && !('enabled' in s[r]) && (s[r].enabled = !0), s[r] || (s[r] = { enabled: !1 }), Q(e, i) } } const Ve = { eventsEmitter: St, update: Dt, translate: Bt, transition: Rt, slide: Kt, loop: es, grabCursor: is, events: ms, breakpoints: vs, checkOverflow: xs, classes: Ss, }, Ge = {} class K { constructor() { let e, t for (var i = arguments.length, r = new Array(i), a = 0; a < i; a++) r[a] = arguments[a] r.length === 1 && r[0].constructor && Object.prototype.toString.call(r[0]).slice(8, -1) === 'Object' ? (t = r[0]) : ([e, t] = r), t || (t = {}), (t = Q({}, t)), e && !t.el && (t.el = e) const f = q() if ( t.el && typeof t.el == 'string' && f.querySelectorAll(t.el).length > 1 ) { const o = [] return ( f.querySelectorAll(t.el).forEach((l) => { const d = Q({}, t, { el: l }) o.push(new K(d)) }), o ) } const c = this ;(c.__swiper__ = !0), (c.support = We()), (c.device = _e({ userAgent: t.userAgent })), (c.browser = wt()), (c.eventsListeners = {}), (c.eventsAnyListeners = []), (c.modules = [...c.__modules__]), t.modules && Array.isArray(t.modules) && c.modules.push(...t.modules) const n = {} c.modules.forEach((o) => { o({ params: t, swiper: c, extendParams: Ts(t, n), on: c.on.bind(c), once: c.once.bind(c), off: c.off.bind(c), emit: c.emit.bind(c), }) }) const u = Q({}, et, n) return ( (c.params = Q({}, u, Ge, t)), (c.originalParams = Q({}, c.params)), (c.passedParams = Q({}, t)), c.params && c.params.on && Object.keys(c.params.on).forEach((o) => { c.on(o, c.params.on[o]) }), c.params && c.params.onAny && c.onAny(c.params.onAny), Object.assign(c, { enabled: c.params.enabled, el: e, classNames: [], slides: [], slidesGrid: [], snapGrid: [], slidesSizesGrid: [], isHorizontal() { return c.params.direction === 'horizontal' }, isVertical() { return c.params.direction === 'vertical' }, activeIndex: 0, realIndex: 0, isBeginning: !0, isEnd: !1, translate: 0, previousTranslate: 0, progress: 0, velocity: 0, animating: !1, cssOverflowAdjustment() { return Math.trunc(this.translate / 2 ** 23) * 2 ** 23 }, allowSlideNext: c.params.allowSlideNext, allowSlidePrev: c.params.allowSlidePrev, touchEventsData: { isTouched: void 0, isMoved: void 0, allowTouchCallbacks: void 0, touchStartTime: void 0, isScrolling: void 0, currentTranslate: void 0, startTranslate: void 0, allowThresholdMove: void 0, focusableElements: c.params.focusableElements, lastClickTime: 0, clickTimeout: void 0, velocities: [], allowMomentumBounce: void 0, startMoving: void 0, pointerId: null, touchId: null, }, allowClick: !0, allowTouchMove: c.params.allowTouchMove, touches: { startX: 0, startY: 0, currentX: 0, currentY: 0, diff: 0 }, imagesToLoad: [], imagesLoaded: 0, }), c.emit('_swiper'), c.params.init && c.init(), c ) } getDirectionLabel(e) { return this.isHorizontal() ? e : { width: 'height', 'margin-top': 'margin-left', 'margin-bottom ': 'margin-right', 'margin-left': 'margin-top', 'margin-right': 'margin-bottom', 'padding-left': 'padding-top', 'padding-right': 'padding-bottom', marginRight: 'marginBottom', }[e] } getSlideIndex(e) { const { slidesEl: t, params: i } = this, r = W(t, `.${i.slideClass}, swiper-slide`), a = me(r[0]) return me(e) - a } getSlideIndexByData(e) { return this.getSlideIndex( this.slides.filter( (t) => t.getAttribute('data-swiper-slide-index') * 1 === e )[0] ) } recalcSlides() { const e = this, { slidesEl: t, params: i } = e e.slides = W(t, `.${i.slideClass}, swiper-slide`) } enable() { const e = this e.enabled || ((e.enabled = !0), e.params.grabCursor && e.setGrabCursor(), e.emit('enable')) } disable() { const e = this !e.enabled || ((e.enabled = !1), e.params.grabCursor && e.unsetGrabCursor(), e.emit('disable')) } setProgress(e, t) { const i = this e = Math.min(Math.max(e, 0), 1) const r = i.minTranslate(), f = (i.maxTranslate() - r) * e + r i.translateTo(f, typeof t == 'undefined' ? 0 : t), i.updateActiveIndex(), i.updateSlidesClasses() } emitContainerClasses() { const e = this if (!e.params._emitClasses || !e.el) return const t = e.el.className .split(' ') .filter( (i) => i.indexOf('swiper') === 0 || i.indexOf(e.params.containerModifierClass) === 0 ) e.emit('_containerClasses', t.join(' ')) } getSlideClasses(e) { const t = this return t.destroyed ? '' : e.className .split(' ') .filter( (i) => i.indexOf('swiper-slide') === 0 || i.indexOf(t.params.slideClass) === 0 ) .join(' ') } emitSlidesClasses() { const e = this if (!e.params._emitClasses || !e.el) return const t = [] e.slides.forEach((i) => { const r = e.getSlideClasses(i) t.push({ slideEl: i, classNames: r }), e.emit('_slideClass', i, r) }), e.emit('_slideClasses', t) } slidesPerViewDynamic(e, t) { e === void 0 && (e = 'current'), t === void 0 && (t = !1) const i = this, { params: r, slides: a, slidesGrid: f, slidesSizesGrid: c, size: n, activeIndex: u, } = i let o = 1 if (typeof r.slidesPerView == 'number') return r.slidesPerView if (r.centeredSlides) { let l = a[u] ? Math.ceil(a[u].swiperSlideSize) : 0, d for (let p = u + 1; p < a.length; p += 1) a[p] && !d && ((l += Math.ceil(a[p].swiperSlideSize)), (o += 1), l > n && (d = !0)) for (let p = u - 1; p >= 0; p -= 1) a[p] && !d && ((l += a[p].swiperSlideSize), (o += 1), l > n && (d = !0)) } else if (e === 'current') for (let l = u + 1; l < a.length; l += 1) (t ? f[l] + c[l] - f[u] < n : f[l] - f[u] < n) && (o += 1) else for (let l = u - 1; l >= 0; l -= 1) f[u] - f[l] < n && (o += 1) return o } update() { const e = this if (!e || e.destroyed) return const { snapGrid: t, params: i } = e i.breakpoints && e.setBreakpoint(), [...e.el.querySelectorAll('[loading="lazy"]')].forEach((f) => { f.complete && Ee(e, f) }), e.updateSize(), e.updateSlides(), e.updateProgress(), e.updateSlidesClasses() function r() { const f = e.rtlTranslate ? e.translate * -1 : e.translate, c = Math.min(Math.max(f, e.maxTranslate()), e.minTranslate()) e.setTranslate(c), e.updateActiveIndex(), e.updateSlidesClasses() } let a if (i.freeMode && i.freeMode.enabled && !i.cssMode) r(), i.autoHeight && e.updateAutoHeight() else { if ( (i.slidesPerView === 'auto' || i.slidesPerView > 1) && e.isEnd && !i.centeredSlides ) { const f = e.virtual && i.virtual.enabled ? e.virtual.slides : e.slides a = e.slideTo(f.length - 1, 0, !1, !0) } else a = e.slideTo(e.activeIndex, 0, !1, !0) a || r() } i.watchOverflow && t !== e.snapGrid && e.checkOverflow(), e.emit('update') } changeDirection(e, t) { t === void 0 && (t = !0) const i = this, r = i.params.direction return ( e || (e = r === 'horizontal' ? 'vertical' : 'horizontal'), e === r || (e !== 'horizontal' && e !== 'vertical') || (i.el.classList.remove(`${i.params.containerModifierClass}${r}`), i.el.classList.add(`${i.params.containerModifierClass}${e}`), i.emitContainerClasses(), (i.params.direction = e), i.slides.forEach((a) => { e === 'vertical' ? (a.style.width = '') : (a.style.height = '') }), i.emit('changeDirection'), t && i.update()), i ) } changeLanguageDirection(e) { const t = this ;(t.rtl && e === 'rtl') || (!t.rtl && e === 'ltr') || ((t.rtl = e === 'rtl'), (t.rtlTranslate = t.params.direction === 'horizontal' && t.rtl), t.rtl ? (t.el.classList.add(`${t.params.containerModifierClass}rtl`), (t.el.dir = 'rtl')) : (t.el.classList.remove(`${t.params.containerModifierClass}rtl`), (t.el.dir = 'ltr')), t.update()) } mount(e) { const t = this if (t.mounted) return !0 let i = e || t.params.el if ((typeof i == 'string' && (i = document.querySelector(i)), !i)) return !1 ;(i.swiper = t), i.parentNode && i.parentNode.host && i.parentNode.host.nodeName === t.params.swiperElementNodeName.toUpperCase() && (t.isElement = !0) const r = () => `.${(t.params.wrapperClass || '').trim().split(' ').join('.')}` let f = (() => i && i.shadowRoot && i.shadowRoot.querySelector ? i.shadowRoot.querySelector(r()) : W(i, r())[0])() return ( !f && t.params.createElements && ((f = J('div', t.params.wrapperClass)), i.append(f), W(i, `.${t.params.slideClass}`).forEach((c) => { f.append(c) })), Object.assign(t, { el: i, wrapperEl: f, slidesEl: t.isElement && !i.parentNode.host.slideSlots ? i.parentNode.host : f, hostEl: t.isElement ? i.parentNode.host : i, mounted: !0, rtl: i.dir.toLowerCase() === 'rtl' || re(i, 'direction') === 'rtl', rtlTranslate: t.params.direction === 'horizontal' && (i.dir.toLowerCase() === 'rtl' || re(i, 'direction') === 'rtl'), wrongRTL: re(f, 'display') === '-webkit-box', }), !0 ) } init(e) { const t = this if (t.initialized || t.mount(e) === !1) return t t.emit('beforeInit'), t.params.breakpoints && t.setBreakpoint(), t.addClasses(), t.updateSize(), t.updateSlides(), t.params.watchOverflow && t.checkOverflow(), t.params.grabCursor && t.enabled && t.setGrabCursor(), t.params.loop && t.virtual && t.params.virtual.enabled ? t.slideTo( t.params.initialSlide + t.virtual.slidesBefore, 0, t.params.runCallbacksOnInit, !1, !0 ) : t.slideTo( t.params.initialSlide, 0, t.params.runCallbacksOnInit, !1, !0 ), t.params.loop && t.loopCreate(), t.attachEvents() const r = [...t.el.querySelectorAll('[loading="lazy"]')] return ( t.isElement && r.push(...t.hostEl.querySelectorAll('[loading="lazy"]')), r.forEach((a) => { a.complete ? Ee(t, a) : a.addEventListener('load', (f) => { Ee(t, f.target) }) }), ke(t), (t.initialized = !0), ke(t), t.emit('init'), t.emit('afterInit'), t ) } destroy(e, t) { e === void 0 && (e = !0), t === void 0 && (t = !0) const i = this, { params: r, el: a, wrapperEl: f, slides: c } = i return ( typeof i.params == 'undefined' || i.destroyed || (i.emit('beforeDestroy'), (i.initialized = !1), i.detachEvents(), r.loop && i.loopDestroy(), t && (i.removeClasses(), a && typeof a != 'string' && a.removeAttribute('style'), f && f.removeAttribute('style'), c && c.length && c.forEach((n) => { n.classList.remove( r.slideVisibleClass, r.slideFullyVisibleClass, r.slideActiveClass, r.slideNextClass, r.slidePrevClass ), n.removeAttribute('style'), n.removeAttribute('data-swiper-slide-index') })), i.emit('destroy'), Object.keys(i.eventsListeners).forEach((n) => { i.off(n) }), e !== !1 && (i.el && typeof i.el != 'string' && (i.el.swiper = null), dt(i)), (i.destroyed = !0)), null ) } static extendDefaults(e) { Q(Ge, e) } static get extendedDefaults() { return Ge } static get defaults() { return et } static installModule(e) { K.prototype.__modules__ || (K.prototype.__modules__ = []) const t = K.prototype.__modules__ typeof e == 'function' && t.indexOf(e) < 0 && t.push(e) } static use(e) { return Array.isArray(e) ? (e.forEach((t) => K.installModule(t)), K) : (K.installModule(e), K) } } Object.keys(Ve).forEach((s) => { Object.keys(Ve[s]).forEach((e) => { K.prototype[e] = Ve[s][e] }) }), K.use([yt, bt]) function Ms(s) { let { swiper: e, extendParams: t, on: i, emit: r } = s t({ virtual: { enabled: !1, slides: [], cache: !0, renderSlide: null, renderExternal: null, renderExternalUpdate: !0, addSlidesBefore: 0, addSlidesAfter: 0, }, }) let a const f = q() e.virtual = { cache: {}, from: void 0, to: void 0, slides: [], offset: 0, slidesGrid: [], } const c = f.createElement('div') function n(h, g) { const w = e.params.virtual if (w.cache && e.virtual.cache[g]) return e.virtual.cache[g] let y return ( w.renderSlide ? ((y = w.renderSlide.call(e, h, g)), typeof y == 'string' && ((c.innerHTML = y), (y = c.children[0]))) : e.isElement ? (y = J('swiper-slide')) : (y = J('div', e.params.slideClass)), y.setAttribute('data-swiper-slide-index', g), w.renderSlide || (y.innerHTML = h), w.cache && (e.virtual.cache[g] = y), y ) } function u(h, g) { const { slidesPerView: w, slidesPerGroup: y, centeredSlides: v, loop: m, initialSlide: b, } = e.params if (g && !m && b > 0) return const { addSlidesBefore: S, addSlidesAfter: A } = e.params.virtual, { from: O, to: z, slides: T, slidesGrid: P, offset: I } = e.virtual e.params.cssMode || e.updateActiveIndex() const C = e.activeIndex || 0 let E e.rtlTranslate ? (E = 'right') : (E = e.isHorizontal() ? 'left' : 'top') let x, D v ? ((x = Math.floor(w / 2) + y + A), (D = Math.floor(w / 2) + y + S)) : ((x = w + (y - 1) + A), (D = (m ? w : y) + S)) let G = C - D, M = C + x m || ((G = Math.max(G, 0)), (M = Math.min(M, T.length - 1))) let L = (e.slidesGrid[G] || 0) - (e.slidesGrid[0] || 0) m && C >= D ? ((G -= D), v || (L += e.slidesGrid[0])) : m && C < D && ((G = -D), v && (L += e.slidesGrid[0])), Object.assign(e.virtual, { from: G, to: M, offset: L, slidesGrid: e.slidesGrid, slidesBefore: D, slidesAfter: x, }) function V() { e.updateSlides(), e.updateProgress(), e.updateSlidesClasses(), r('virtualUpdate') } if (O === G && z === M && !h) { e.slidesGrid !== P && L !== I && e.slides.forEach((H) => { H.style[E] = `${L - Math.abs(e.cssOverflowAdjustment())}px` }), e.updateProgress(), r('virtualUpdate') return } if (e.params.virtual.renderExternal) { e.params.virtual.renderExternal.call(e, { offset: L, from: G, to: M, slides: (function () { const R = [] for (let U = G; U <= M; U += 1) R.push(T[U]) return R })(), }), e.params.virtual.renderExternalUpdate ? V() : r('virtualUpdate') return } const F = [], $ = [], k = (H) => { let R = H return ( H < 0 ? (R = T.length + H) : R >= T.length && (R = R - T.length), R ) } if (h) e.slides .filter((H) => H.matches(`.${e.params.slideClass}, swiper-slide`)) .forEach((H) => { H.remove() }) else for (let H = O; H <= z; H += 1) if (H < G || H > M) { const R = k(H) e.slides .filter((U) => U.matches( `.${e.params.slideClass}[data-swiper-slide-index="${R}"], swiper-slide[data-swiper-slide-index="${R}"]` ) ) .forEach((U) => { U.remove() }) } const B = m ? -T.length : 0, Y = m ? T.length * 2 : T.length for (let H = B; H < Y; H += 1) if (H >= G && H <= M) { const R = k(H) typeof z == 'undefined' || h ? $.push(R) : (H > z && $.push(R), H < O && F.push(R)) } if ( ($.forEach((H) => { e.slidesEl.append(n(T[H], H)) }), m) ) for (let H = F.length - 1; H >= 0; H -= 1) { const R = F[H] e.slidesEl.prepend(n(T[R], R)) } else F.sort((H, R) => R - H), F.forEach((H) => { e.slidesEl.prepend(n(T[H], H)) }) W(e.slidesEl, '.swiper-slide, swiper-slide').forEach((H) => { H.style[E] = `${L - Math.abs(e.cssOverflowAdjustment())}px` }), V() } function o(h) { if (typeof h == 'object' && 'length' in h) for (let g = 0; g < h.length; g += 1) h[g] && e.virtual.slides.push(h[g]) else e.virtual.slides.push(h) u(!0) } function l(h) { const g = e.activeIndex let w = g + 1, y = 1 if (Array.isArray(h)) { for (let v = 0; v < h.length; v += 1) h[v] && e.virtual.slides.unshift(h[v]) ;(w = g + h.length), (y = h.length) } else e.virtual.slides.unshift(h) if (e.params.virtual.cache) { const v = e.virtual.cache, m = {} Object.keys(v).forEach((b) => { const S = v[b], A = S.getAttribute('data-swiper-slide-index') A && S.setAttribute('data-swiper-slide-index', parseInt(A, 10) + y), (m[parseInt(b, 10) + y] = S) }), (e.virtual.cache = m) } u(!0), e.slideTo(w, 0) } function d(h) { if (typeof h == 'undefined' || h === null) return let g = e.activeIndex if (Array.isArray(h)) for (let w = h.length - 1; w >= 0; w -= 1) e.params.virtual.cache && (delete e.virtual.cache[h[w]], Object.keys(e.virtual.cache).forEach((y) => { y > h && ((e.virtual.cache[y - 1] = e.virtual.cache[y]), e.virtual.cache[y - 1].setAttribute( 'data-swiper-slide-index', y - 1 ), delete e.virtual.cache[y]) })), e.virtual.slides.splice(h[w], 1), h[w] < g && (g -= 1), (g = Math.max(g, 0)) else e.params.virtual.cache && (delete e.virtual.cache[h], Object.keys(e.virtual.cache).forEach((w) => { w > h && ((e.virtual.cache[w - 1] = e.virtual.cache[w]), e.virtual.cache[w - 1].setAttribute( 'data-swiper-slide-index', w - 1 ), delete e.virtual.cache[w]) })), e.virtual.slides.splice(h, 1), h < g && (g -= 1), (g = Math.max(g, 0)) u(!0), e.slideTo(g, 0) } function p() { ;(e.virtual.slides = []), e.params.virtual.cache && (e.virtual.cache = {}), u(!0), e.slideTo(0, 0) } i('beforeInit', () => { if (!e.params.virtual.enabled) return let h if (typeof e.passedParams.virtual.slides == 'undefined') { const g = [...e.slidesEl.children].filter((w) => w.matches(`.${e.params.slideClass}, swiper-slide`) ) g && g.length && ((e.virtual.slides = [...g]), (h = !0), g.forEach((w, y) => { w.setAttribute('data-swiper-slide-index', y), (e.virtual.cache[y] = w), w.remove() })) } h || (e.virtual.slides = e.params.virtual.slides), e.classNames.push(`${e.params.containerModifierClass}virtual`), (e.params.watchSlidesProgress = !0), (e.originalParams.watchSlidesProgress = !0), u(!1, !0) }), i('setTranslate', () => { !e.params.virtual.enabled || (e.params.cssMode && !e._immediateVirtual ? (clearTimeout(a), (a = setTimeout(() => { u() }, 100))) : u()) }), i('init update resize', () => { !e.params.virtual.enabled || (e.params.cssMode && pe(e.wrapperEl, '--swiper-virtual-size', `${e.virtualSize}px`)) }), Object.assign(e.virtual, { appendSlide: o, prependSlide: l, removeSlide: d, removeAllSlides: p, update: u, }) } function Cs(s) { let { swiper: e, extendParams: t, on: i, emit: r } = s const a = q(), f = X() ;(e.keyboard = { enabled: !1 }), t({ keyboard: { enabled: !1, onlyInViewport: !0, pageUpDown: !0 } }) function c(o) { if (!e.enabled) return const { rtlTranslate: l } = e let d = o d.originalEvent && (d = d.originalEvent) const p = d.keyCode || d.charCode, h = e.params.keyboard.pageUpDown, g = h && p === 33, w = h && p === 34, y = p === 37, v = p === 39, m = p === 38, b = p === 40 if ( (!e.allowSlideNext && ((e.isHorizontal() && v) || (e.isVertical() && b) || w)) || (!e.allowSlidePrev && ((e.isHorizontal() && y) || (e.isVertical() && m) || g)) ) return !1 if ( !(d.shiftKey || d.altKey || d.ctrlKey || d.metaKey) && !( a.activeElement && a.activeElement.nodeName && (a.activeElement.nodeName.toLowerCase() === 'input' || a.activeElement.nodeName.toLowerCase() === 'textarea') ) ) { if (e.params.keyboard.onlyInViewport && (g || w || y || v || m || b)) { let S = !1 if ( le(e.el, `.${e.params.slideClass}, swiper-slide`).length > 0 && le(e.el, `.${e.params.slideActiveClass}`).length === 0 ) return const A = e.el, O = A.clientWidth, z = A.clientHeight, T = f.innerWidth, P = f.innerHeight, I = be(A) l && (I.left -= A.scrollLeft) const C = [ [I.left, I.top], [I.left + O, I.top], [I.left, I.top + z], [I.left + O, I.top + z], ] for (let E = 0; E < C.length; E += 1) { const x = C[E] if (x[0] >= 0 && x[0] <= T && x[1] >= 0 && x[1] <= P) { if (x[0] === 0 && x[1] === 0) continue S = !0 } } if (!S) return } e.isHorizontal() ? ((g || w || y || v) && (d.preventDefault ? d.preventDefault() : (d.returnValue = !1)), (((w || v) && !l) || ((g || y) && l)) && e.slideNext(), (((g || y) && !l) || ((w || v) && l)) && e.slidePrev()) : ((g || w || m || b) && (d.preventDefault ? d.preventDefault() : (d.returnValue = !1)), (w || b) && e.slideNext(), (g || m) && e.slidePrev()), r('keyPress', p) } } function n() { e.keyboard.enabled || (a.addEventListener('keydown', c), (e.keyboard.enabled = !0)) } function u() { !e.keyboard.enabled || (a.removeEventListener('keydown', c), (e.keyboard.enabled = !1)) } i('init', () => { e.params.keyboard.enabled && n() }), i('destroy', () => { e.keyboard.enabled && u() }), Object.assign(e.keyboard, { enable: n, disable: u }) } function Ps(s) { let { swiper: e, extendParams: t, on: i, emit: r } = s const a = X() t({ mousewheel: { enabled: !1, releaseOnEdges: !1, invert: !1, forceToAxis: !1, sensitivity: 1, eventsTarget: 'container', thresholdDelta: null, thresholdTime: null, noMousewheelClass: 'swiper-no-mousewheel', }, }), (e.mousewheel = { enabled: !1 }) let f, c = ee(), n const u = [] function o(m) { const b = 10, S = 40, A = 800 let O = 0, z = 0, T = 0, P = 0 return ( 'detail' in m && (z = m.detail), 'wheelDelta' in m && (z = -m.wheelDelta / 120), 'wheelDeltaY' in m && (z = -m.wheelDeltaY / 120), 'wheelDeltaX' in m && (O = -m.wheelDeltaX / 120), 'axis' in m && m.axis === m.HORIZONTAL_AXIS && ((O = z), (z = 0)), (T = O * b), (P = z * b), 'deltaY' in m && (P = m.deltaY), 'deltaX' in m && (T = m.deltaX), m.shiftKey && !T && ((T = P), (P = 0)), (T || P) && m.deltaMode && (m.deltaMode === 1 ? ((T *= S), (P *= S)) : ((T *= A), (P *= A))), T && !O && (O = T < 1 ? -1 : 1), P && !z && (z = P < 1 ? -1 : 1), { spinX: O, spinY: z, pixelX: T, pixelY: P } ) } function l() { !e.enabled || (e.mouseEntered = !0) } function d() { !e.enabled || (e.mouseEntered = !1) } function p(m) { return (e.params.mousewheel.thresholdDelta && m.delta < e.params.mousewheel.thresholdDelta) || (e.params.mousewheel.thresholdTime && ee() - c < e.params.mousewheel.thresholdTime) ? !1 : m.delta >= 6 && ee() - c < 60 ? !0 : (m.direction < 0 ? (!e.isEnd || e.params.loop) && !e.animating && (e.slideNext(), r('scroll', m.raw)) : (!e.isBeginning || e.params.loop) && !e.animating && (e.slidePrev(), r('scroll', m.raw)), (c = new a.Date().getTime()), !1) } function h(m) { const b = e.params.mousewheel if (m.direction < 0) { if (e.isEnd && !e.params.loop && b.releaseOnEdges) return !0 } else if (e.isBeginning && !e.params.loop && b.releaseOnEdges) return !0 return !1 } function g(m) { let b = m, S = !0 if ( !e.enabled || m.target.closest(`.${e.params.mousewheel.noMousewheelClass}`) ) return const A = e.params.mousewheel e.params.cssMode && b.preventDefault() let O = e.el e.params.mousewheel.eventsTarget !== 'container' && (O = document.querySelector(e.params.mousewheel.eventsTarget)) const z = O && O.contains(b.target) if (!e.mouseEntered && !z && !A.releaseOnEdges) return !0 b.originalEvent && (b = b.originalEvent) let T = 0 const P = e.rtlTranslate ? -1 : 1, I = o(b) if (A.forceToAxis) if (e.isHorizontal()) if (Math.abs(I.pixelX) > Math.abs(I.pixelY)) T = -I.pixelX * P else return !0 else if (Math.abs(I.pixelY) > Math.abs(I.pixelX)) T = -I.pixelY else return !0 else T = Math.abs(I.pixelX) > Math.abs(I.pixelY) ? -I.pixelX * P : -I.pixelY if (T === 0) return !0 A.invert && (T = -T) let C = e.getTranslate() + T * A.sensitivity if ( (C >= e.minTranslate() && (C = e.minTranslate()), C <= e.maxTranslate() && (C = e.maxTranslate()), (S = e.params.loop ? !0 : !(C === e.minTranslate() || C === e.maxTranslate())), S && e.params.nested && b.stopPropagation(), !e.params.freeMode || !e.params.freeMode.enabled) ) { const E = { time: ee(), delta: Math.abs(T), direction: Math.sign(T), raw: m, } u.length >= 2 && u.shift() const x = u.length ? u[u.length - 1] : void 0 if ( (u.push(E), x ? (E.direction !== x.direction || E.delta > x.delta || E.time > x.time + 150) && p(E) : p(E), h(E)) ) return !0 } else { const E = { time: ee(), delta: Math.abs(T), direction: Math.sign(T) }, x = n && E.time < n.time + 500 && E.delta <= n.delta && E.direction === n.direction if (!x) { n = void 0 let D = e.getTranslate() + T * A.sensitivity const G = e.isBeginning, M = e.isEnd if ( (D >= e.minTranslate() && (D = e.minTranslate()), D <= e.maxTranslate() && (D = e.maxTranslate()), e.setTransition(0), e.setTranslate(D), e.updateProgress(), e.updateActiveIndex(), e.updateSlidesClasses(), ((!G && e.isBeginning) || (!M && e.isEnd)) && e.updateSlidesClasses(), e.params.loop && e.loopFix({ direction: E.direction < 0 ? 'next' : 'prev', byMousewheel: !0, }), e.params.freeMode.sticky) ) { clearTimeout(f), (f = void 0), u.length >= 15 && u.shift() const L = u.length ? u[u.length - 1] : void 0, V = u[0] if ( (u.push(E), L && (E.delta > L.delta || E.direction !== L.direction)) ) u.splice(0) else if ( u.length >= 15 && E.time - V.time < 500 && V.delta - E.delta >= 1 && E.delta <= 6 ) { const F = T > 0 ? 0.8 : 0.2 ;(n = E), u.splice(0), (f = ae(() => { e.destroyed || !e.params || e.slideToClosest(e.params.speed, !0, void 0, F) }, 0)) } f || (f = ae(() => { if (e.destroyed || !e.params) return const F = 0.5 ;(n = E), u.splice(0), e.slideToClosest(e.params.speed, !0, void 0, F) }, 500)) } if ( (x || r('scroll', b), e.params.autoplay && e.params.autoplayDisableOnInteraction && e.autoplay.stop(), A.releaseOnEdges && (D === e.minTranslate() || D === e.maxTranslate())) ) return !0 } } return b.preventDefault ? b.preventDefault() : (b.returnValue = !1), !1 } function w(m) { let b = e.el e.params.mousewheel.eventsTarget !== 'container' && (b = document.querySelector(e.params.mousewheel.eventsTarget)), b[m]('mouseenter', l), b[m]('mouseleave', d), b[m]('wheel', g) } function y() { return e.params.cssMode ? (e.wrapperEl.removeEventListener('wheel', g), !0) : e.mousewheel.enabled ? !1 : (w('addEventListener'), (e.mousewheel.enabled = !0), !0) } function v() { return e.params.cssMode ? (e.wrapperEl.addEventListener(event, g), !0) : e.mousewheel.enabled ? (w('removeEventListener'), (e.mousewheel.enabled = !1), !0) : !1 } i('init', () => { !e.params.mousewheel.enabled && e.params.cssMode && v(), e.params.mousewheel.enabled && y() }), i('destroy', () => { e.params.cssMode && y(), e.mousewheel.enabled && v() }), Object.assign(e.mousewheel, { enable: y, disable: v }) } function Be(s, e, t, i) { return ( s.params.createElements && Object.keys(i).forEach((r) => { if (!t[r] && t.auto === !0) { let a = W(s.el, `.${i[r]}`)[0] a || ((a = J('div', i[r])), (a.className = i[r]), s.el.append(a)), (t[r] = a), (e[r] = a) } }), t ) } function Ls(s) { let { swiper: e, extendParams: t, on: i, emit: r } = s t({ navigation: { nextEl: null, prevEl: null, hideOnClick: !1, disabledClass: 'swiper-button-disabled', hiddenClass: 'swiper-button-hidden', lockClass: 'swiper-button-lock', navigationDisabledClass: 'swiper-navigation-disabled', }, }), (e.navigation = { nextEl: null, prevEl: null }) function a(h) { let g return h && typeof h == 'string' && e.isElement && ((g = e.el.querySelector(h)), g) ? g : (h && (typeof h == 'string' && (g = [...document.querySelectorAll(h)]), e.params.uniqueNavElements && typeof h == 'string' && g && g.length > 1 && e.el.querySelectorAll(h).length === 1 ? (g = e.el.querySelector(h)) : g && g.length === 1 && (g = g[0])), h && !g ? h : g) } function f(h, g) { const w = e.params.navigation ;(h = N(h)), h.forEach((y) => { y && (y.classList[g ? 'add' : 'remove'](...w.disabledClass.split(' ')), y.tagName === 'BUTTON' && (y.disabled = g), e.params.watchOverflow && e.enabled && y.classList[e.isLocked ? 'add' : 'remove'](w.lockClass)) }) } function c() { const { nextEl: h, prevEl: g } = e.navigation if (e.params.loop) { f(g, !1), f(h, !1) return } f(g, e.isBeginning && !e.params.rewind), f(h, e.isEnd && !e.params.rewind) } function n(h) { h.preventDefault(), !(e.isBeginning && !e.params.loop && !e.params.rewind) && (e.slidePrev(), r('navigationPrev')) } function u(h) { h.preventDefault(), !(e.isEnd && !e.params.loop && !e.params.rewind) && (e.slideNext(), r('navigationNext')) } function o() { const h = e.params.navigation if ( ((e.params.navigation = Be( e, e.originalParams.navigation, e.params.navigation, { nextEl: 'swiper-button-next', prevEl: 'swiper-button-prev' } )), !(h.nextEl || h.prevEl)) ) return let g = a(h.nextEl), w = a(h.prevEl) Object.assign(e.navigation, { nextEl: g, prevEl: w }), (g = N(g)), (w = N(w)) const y = (v, m) => { v && v.addEventListener('click', m === 'next' ? u : n), !e.enabled && v && v.classList.add(...h.lockClass.split(' ')) } g.forEach((v) => y(v, 'next')), w.forEach((v) => y(v, 'prev')) } function l() { let { nextEl: h, prevEl: g } = e.navigation ;(h = N(h)), (g = N(g)) const w = (y, v) => { y.removeEventListener('click', v === 'next' ? u : n), y.classList.remove(...e.params.navigation.disabledClass.split(' ')) } h.forEach((y) => w(y, 'next')), g.forEach((y) => w(y, 'prev')) } i('init', () => { e.params.navigation.enabled === !1 ? p() : (o(), c()) }), i('toEdge fromEdge lock unlock', () => { c() }), i('destroy', () => { l() }), i('enable disable', () => { let { nextEl: h, prevEl: g } = e.navigation if (((h = N(h)), (g = N(g)), e.enabled)) { c() return } ;[...h, ...g] .filter((w) => !!w) .forEach((w) => w.classList.add(e.params.navigation.lockClass)) }), i('click', (h, g) => { let { nextEl: w, prevEl: y } = e.navigation ;(w = N(w)), (y = N(y)) const v = g.target let m = y.includes(v) || w.includes(v) if (e.isElement && !m) { const b = g.path || (g.composedPath && g.composedPath()) b && (m = b.find((S) => w.includes(S) || y.includes(S))) } if (e.params.navigation.hideOnClick && !m) { if ( e.pagination && e.params.pagination && e.params.pagination.clickable && (e.pagination.el === v || e.pagination.el.contains(v)) ) return let b w.length ? (b = w[0].classList.contains(e.params.navigation.hiddenClass)) : y.length && (b = y[0].classList.contains(e.params.navigation.hiddenClass)), r(b === !0 ? 'navigationShow' : 'navigationHide'), [...w, ...y] .filter((S) => !!S) .forEach((S) => S.classList.toggle(e.params.navigation.hiddenClass) ) } }) const d = () => { e.el.classList.remove( ...e.params.navigation.navigationDisabledClass.split(' ') ), o(), c() }, p = () => { e.el.classList.add( ...e.params.navigation.navigationDisabledClass.split(' ') ), l() } Object.assign(e.navigation, { enable: d, disable: p, update: c, init: o, destroy: l, }) } function te(s) { return ( s === void 0 && (s = ''), `.${s .trim() .replace(/([\.:!+\/])/g, '\\$1') .replace(/ /g, '.')}` ) } function Is(s) { let { swiper: e, extendParams: t, on: i, emit: r } = s const a = 'swiper-pagination' t({ 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: (v) => v, formatFractionTotal: (v) => v, bulletClass: `${a}-bullet`, bulletActiveClass: `${a}-bullet-active`, modifierClass: `${a}-`, currentClass: `${a}-current`, totalClass: `${a}-total`, hiddenClass: `${a}-hidden`, progressbarFillClass: `${a}-progressbar-fill`, progressbarOppositeClass: `${a}-progressbar-opposite`, clickableClass: `${a}-clickable`, lockClass: `${a}-lock`, horizontalClass: `${a}-horizontal`, verticalClass: `${a}-vertical`, paginationDisabledClass: `${a}-disabled`, }, }), (e.pagination = { el: null, bullets: [] }) let f, c = 0 function n() { return ( !e.params.pagination.el || !e.pagination.el || (Array.isArray(e.pagination.el) && e.pagination.el.length === 0) ) } function u(v, m) { const { bulletActiveClass: b } = e.params.pagination !v || ((v = v[`${m === 'prev' ? 'previous' : 'next'}ElementSibling`]), v && (v.classList.add(`${b}-${m}`), (v = v[`${m === 'prev' ? 'previous' : 'next'}ElementSibling`]), v && v.classList.add(`${b}-${m}-${m}`))) } function o(v, m, b) { if (((v = v % b), (m = m % b), m === v + 1)) return 'next' if (m === v - 1) return 'previous' } function l(v) { const m = v.target.closest(te(e.params.pagination.bulletClass)) if (!m) return v.preventDefault() const b = me(m) * e.params.slidesPerGroup if (e.params.loop) { if (e.realIndex === b) return const S = o(e.realIndex, b, e.slides.length) S === 'next' ? e.slideNext() : S === 'previous' ? e.slidePrev() : e.slideToLoop(b) } else e.slideTo(b) } function d() { const v = e.rtl, m = e.params.pagination if (n()) return let b = e.pagination.el b = N(b) let S, A const O = e.virtual && e.params.virtual.enabled ? e.virtual.slides.length : e.slides.length, z = e.params.loop ? Math.ceil(O / e.params.slidesPerGroup) : e.snapGrid.length if ( (e.params.loop ? ((A = e.previousRealIndex || 0), (S = e.params.slidesPerGroup > 1 ? Math.floor(e.realIndex / e.params.slidesPerGroup) : e.realIndex)) : typeof e.snapIndex != 'undefined' ? ((S = e.snapIndex), (A = e.previousSnapIndex)) : ((A = e.previousIndex || 0), (S = e.activeIndex || 0)), m.type === 'bullets' && e.pagination.bullets && e.pagination.bullets.length > 0) ) { const T = e.pagination.bullets let P, I, C if ( (m.dynamicBullets && ((f = Ie(T[0], e.isHorizontal() ? 'width' : 'height', !0)), b.forEach((E) => { E.style[e.isHorizontal() ? 'width' : 'height'] = `${ f * (m.dynamicMainBullets + 4) }px` }), m.dynamicMainBullets > 1 && A !== void 0 && ((c += S - (A || 0)), c > m.dynamicMainBullets - 1 ? (c = m.dynamicMainBullets - 1) : c < 0 && (c = 0)), (P = Math.max(S - c, 0)), (I = P + (Math.min(T.length, m.dynamicMainBullets) - 1)), (C = (I + P) / 2)), T.forEach((E) => { const x = [ ...[ '', '-next', '-next-next', '-prev', '-prev-prev', '-main', ].map((D) => `${m.bulletActiveClass}${D}`), ] .map((D) => typeof D == 'string' && D.includes(' ') ? D.split(' ') : D ) .flat() E.classList.remove(...x) }), b.length > 1) ) T.forEach((E) => { const x = me(E) x === S ? E.classList.add(...m.bulletActiveClass.split(' ')) : e.isElement && E.setAttribute('part', 'bullet'), m.dynamicBullets && (x >= P && x <= I && E.classList.add(...`${m.bulletActiveClass}-main`.split(' ')), x === P && u(E, 'prev'), x === I && u(E, 'next')) }) else { const E = T[S] if ( (E && E.classList.add(...m.bulletActiveClass.split(' ')), e.isElement && T.forEach((x, D) => { x.setAttribute('part', D === S ? 'bullet-active' : 'bullet') }), m.dynamicBullets) ) { const x = T[P], D = T[I] for (let G = P; G <= I; G += 1) T[G] && T[G].classList.add(...`${m.bulletActiveClass}-main`.split(' ')) u(x, 'prev'), u(D, 'next') } } if (m.dynamicBullets) { const E = Math.min(T.length, m.dynamicMainBullets + 4), x = (f * E - f) / 2 - C * f, D = v ? 'right' : 'left' T.forEach((G) => { G.style[e.isHorizontal() ? D : 'top'] = `${x}px` }) } } b.forEach((T, P) => { if ( (m.type === 'fraction' && (T.querySelectorAll(te(m.currentClass)).forEach((I) => { I.textContent = m.formatFractionCurrent(S + 1) }), T.querySelectorAll(te(m.totalClass)).forEach((I) => { I.textContent = m.formatFractionTotal(z) })), m.type === 'progressbar') ) { let I m.progressbarOpposite ? (I = e.isHorizontal() ? 'vertical' : 'horizontal') : (I = e.isHorizontal() ? 'horizontal' : 'vertical') const C = (S + 1) / z let E = 1, x = 1 I === 'horizontal' ? (E = C) : (x = C), T.querySelectorAll(te(m.progressbarFillClass)).forEach((D) => { ;(D.style.transform = `translate3d(0,0,0) scaleX(${E}) scaleY(${x})`), (D.style.transitionDuration = `${e.params.speed}ms`) }) } m.type === 'custom' && m.renderCustom ? ((T.innerHTML = m.renderCustom(e, S + 1, z)), P === 0 && r('paginationRender', T)) : (P === 0 && r('paginationRender', T), r('paginationUpdate', T)), e.params.watchOverflow && e.enabled && T.classList[e.isLocked ? 'add' : 'remove'](m.lockClass) }) } function p() { const v = e.params.pagination if (n()) return const m = e.virtual && e.params.virtual.enabled ? e.virtual.slides.length : e.grid && e.params.grid.rows > 1 ? e.slides.length / Math.ceil(e.params.grid.rows) : e.slides.length let b = e.pagination.el b = N(b) let S = '' if (v.type === 'bullets') { let A = e.params.loop ? Math.ceil(m / e.params.slidesPerGroup) : e.snapGrid.length e.params.freeMode && e.params.freeMode.enabled && A > m && (A = m) for (let O = 0; O < A; O += 1) v.renderBullet ? (S += v.renderBullet.call(e, O, v.bulletClass)) : (S += `<${v.bulletElement} ${ e.isElement ? 'part="bullet"' : '' } class="${v.bulletClass}"></${v.bulletElement}>`) } v.type === 'fraction' && (v.renderFraction ? (S = v.renderFraction.call(e, v.currentClass, v.totalClass)) : (S = `<span class="${v.currentClass}"></span> / <span class="${v.totalClass}"></span>`)), v.type === 'progressbar' && (v.renderProgressbar ? (S = v.renderProgressbar.call(e, v.progressbarFillClass)) : (S = `<span class="${v.progressbarFillClass}"></span>`)), (e.pagination.bullets = []), b.forEach((A) => { v.type !== 'custom' && (A.innerHTML = S || ''), v.type === 'bullets' && e.pagination.bullets.push( ...A.querySelectorAll(te(v.bulletClass)) ) }), v.type !== 'custom' && r('paginationRender', b[0]) } function h() { e.params.pagination = Be( e, e.originalParams.pagination, e.params.pagination, { el: 'swiper-pagination' } ) const v = e.params.pagination if (!v.el) return let m typeof v.el == 'string' && e.isElement && (m = e.el.querySelector(v.el)), !m && typeof v.el == 'string' && (m = [...document.querySelectorAll(v.el)]), m || (m = v.el), !(!m || m.length === 0) && (e.params.uniqueNavElements && typeof v.el == 'string' && Array.isArray(m) && m.length > 1 && ((m = [...e.el.querySelectorAll(v.el)]), m.length > 1 && (m = m.filter((b) => le(b, '.swiper')[0] === e.el)[0])), Array.isArray(m) && m.length === 1 && (m = m[0]), Object.assign(e.pagination, { el: m }), (m = N(m)), m.forEach((b) => { v.type === 'bullets' && v.clickable && b.classList.add(...(v.clickableClass || '').split(' ')), b.classList.add(v.modifierClass + v.type), b.classList.add( e.isHorizontal() ? v.horizontalClass : v.verticalClass ), v.type === 'bullets' && v.dynamicBullets && (b.classList.add(`${v.modifierClass}${v.type}-dynamic`), (c = 0), v.dynamicMainBullets < 1 && (v.dynamicMainBullets = 1)), v.type === 'progressbar' && v.progressbarOpposite && b.classList.add(v.progressbarOppositeClass), v.clickable && b.addEventListener('click', l), e.enabled || b.classList.add(v.lockClass) })) } function g() { const v = e.params.pagination if (n()) return let m = e.pagination.el m && ((m = N(m)), m.forEach((b) => { b.classList.remove(v.hiddenClass), b.classList.remove(v.modifierClass + v.type), b.classList.remove( e.isHorizontal() ? v.horizontalClass : v.verticalClass ), v.clickable && (b.classList.remove(...(v.clickableClass || '').split(' ')), b.removeEventListener('click', l)) })), e.pagination.bullets && e.pagination.bullets.forEach((b) => b.classList.remove(...v.bulletActiveClass.split(' ')) ) } i('changeDirection', () => { if (!e.pagination || !e.pagination.el) return const v = e.params.pagination let { el: m } = e.pagination ;(m = N(m)), m.forEach((b) => { b.classList.remove(v.horizontalClass, v.verticalClass), b.classList.add( e.isHorizontal() ? v.horizontalClass : v.verticalClass ) }) }), i('init', () => { e.params.pagination.enabled === !1 ? y() : (h(), p(), d()) }), i('activeIndexChange', () => { typeof e.snapIndex == 'undefined' && d() }), i('snapIndexChange', () => { d() }), i('snapGridLengthChange', () => { p(), d() }), i('destroy', () => { g() }), i('enable disable', () => { let { el: v } = e.pagination v && ((v = N(v)), v.forEach((m) => m.classList[e.enabled ? 'remove' : 'add']( e.params.pagination.lockClass ) )) }), i('lock unlock', () => { d() }), i('click', (v, m) => { const b = m.target, S = N(e.pagination.el) if ( e.params.pagination.el && e.params.pagination.hideOnClick && S && S.length > 0 && !b.classList.contains(e.params.pagination.bulletClass) ) { if ( e.navigation && ((e.navigation.nextEl && b === e.navigation.nextEl) || (e.navigation.prevEl && b === e.navigation.prevEl)) ) return const A = S[0].classList.contains(e.params.pagination.hiddenClass) r(A === !0 ? 'paginationShow' : 'paginationHide'), S.forEach((O) => O.classList.toggle(e.params.pagination.hiddenClass) ) } }) const w = () => { e.el.classList.remove(e.params.pagination.paginationDisabledClass) let { el: v } = e.pagination v && ((v = N(v)), v.forEach((m) => m.classList.remove(e.params.pagination.paginationDisabledClass) )), h(), p(), d() }, y = () => { e.el.classList.add(e.params.pagination.paginationDisabledClass) let { el: v } = e.pagination v && ((v = N(v)), v.forEach((m) => m.classList.add(e.params.pagination.paginationDisabledClass) )), g() } Object.assign(e.pagination, { enable: w, disable: y, render: p, update: d, init: h, destroy: g, }) } function As(s) { let { swiper: e, extendParams: t, on: i, emit: r } = s const a = q() let f = !1, c = null, n = null, u, o, l, d t({ scrollbar: { el: null, dragSize: 'auto', hide: !1, draggable: !1, snapOnRelease: !0, lockClass: 'swiper-scrollbar-lock', dragClass: 'swiper-scrollbar-drag', scrollbarDisabledClass: 'swiper-scrollbar-disabled', horizontalClass: 'swiper-scrollbar-horizontal', verticalClass: 'swiper-scrollbar-vertical', }, }), (e.scrollbar = { el: null, dragEl: null }) function p() { if (!e.params.scrollbar.el || !e.scrollbar.el) return const { scrollbar: C, rtlTranslate: E } = e, { dragEl: x, el: D } = C, G = e.params.scrollbar, M = e.params.loop ? e.progressLoop : e.progress let L = o, V = (l - o) * M E ? ((V = -V), V > 0 ? ((L = o - V), (V = 0)) : -V + o > l && (L = l + V)) : V < 0 ? ((L = o + V), (V = 0)) : V + o > l && (L = l - V), e.isHorizontal() ? ((x.style.transform = `translate3d(${V}px, 0, 0)`), (x.style.width = `${L}px`)) : ((x.style.transform = `translate3d(0px, ${V}px, 0)`), (x.style.height = `${L}px`)), G.hide && (clearTimeout(c), (D.style.opacity = 1), (c = setTimeout(() => { ;(D.style.opacity = 0), (D.style.transitionDuration = '400ms') }, 1e3))) } function h(C) { !e.params.scrollbar.el || !e.scrollbar.el || (e.scrollbar.dragEl.style.transitionDuration = `${C}ms`) } function g() { if (!e.params.scrollbar.el || !e.scrollbar.el) return const { scrollbar: C } = e, { dragEl: E, el: x } = C ;(E.style.width = ''), (E.style.height = ''), (l = e.isHorizontal() ? x.offsetWidth : x.offsetHeight), (d = e.size / (e.virtualSize + e.params.slidesOffsetBefore - (e.params.centeredSlides ? e.snapGrid[0] : 0))), e.params.scrollbar.dragSize === 'auto' ? (o = l * d) : (o = parseInt(e.params.scrollbar.dragSize, 10)), e.isHorizontal() ? (E.style.width = `${o}px`) : (E.style.height = `${o}px`), d >= 1 ? (x.style.display = 'none') : (x.style.display = ''), e.params.scrollbar.hide && (x.style.opacity = 0), e.params.watchOverflow && e.enabled && C.el.classList[e.isLocked ? 'add' : 'remove']( e.params.scrollbar.lockClass ) } function w(C) { return e.isHorizontal() ? C.clientX : C.clientY } function y(C) { const { scrollbar: E, rtlTranslate: x } = e, { el: D } = E let G ;(G = (w(C) - be(D)[e.isHorizontal() ? 'left' : 'top'] - (u !== null ? u : o / 2)) / (l - o)), (G = Math.max(Math.min(G, 1), 0)), x && (G = 1 - G) const M = e.minTranslate() + (e.maxTranslate() - e.minTranslate()) * G e.updateProgress(M), e.setTranslate(M), e.updateActiveIndex(), e.updateSlidesClasses() } function v(C) { const E = e.params.scrollbar, { scrollbar: x, wrapperEl: D } = e, { el: G, dragEl: M } = x ;(f = !0), (u = C.target === M ? w(C) - C.target.getBoundingClientRect()[ e.isHorizontal() ? 'left' : 'top' ] : null), C.preventDefault(), C.stopPropagation(), (D.style.transitionDuration = '100ms'), (M.style.transitionDuration = '100ms'), y(C), clearTimeout(n), (G.style.transitionDuration = '0ms'), E.hide && (G.style.opacity = 1), e.params.cssMode && (e.wrapperEl.style['scroll-snap-type'] = 'none'), r('scrollbarDragStart', C) } function m(C) { const { scrollbar: E, wrapperEl: x } = e, { el: D, dragEl: G } = E !f || (C.preventDefault && C.cancelable ? C.preventDefault() : (C.returnValue = !1), y(C), (x.style.transitionDuration = '0ms'), (D.style.transitionDuration = '0ms'), (G.style.transitionDuration = '0ms'), r('scrollbarDragMove', C)) } function b(C) { const E = e.params.scrollbar, { scrollbar: x, wrapperEl: D } = e, { el: G } = x !f || ((f = !1), e.params.cssMode && ((e.wrapperEl.style['scroll-snap-type'] = ''), (D.style.transitionDuration = '')), E.hide && (clearTimeout(n), (n = ae(() => { ;(G.style.opacity = 0), (G.style.transitionDuration = '400ms') }, 1e3))), r('scrollbarDragEnd', C), E.snapOnRelease && e.slideToClosest()) } function S(C) { const { scrollbar: E, params: x } = e, D = E.el if (!D) return const G = D, M = x.passiveListeners ? { passive: !1, capture: !1 } : !1, L = x.passiveListeners ? { passive: !0, capture: !1 } : !1 if (!G) return const V = C === 'on' ? 'addEventListener' : 'removeEventListener' G[V]('pointerdown', v, M), a[V]('pointermove', m, M), a[V]('pointerup', b, L) } function A() { !e.params.scrollbar.el || !e.scrollbar.el || S('on') } function O() { !e.params.scrollbar.el || !e.scrollbar.el || S('off') } function z() { const { scrollbar: C, el: E } = e e.params.scrollbar = Be( e, e.originalParams.scrollbar, e.params.scrollbar, { el: 'swiper-scrollbar' } ) const x = e.params.scrollbar if (!x.el) return let D if ( (typeof x.el == 'string' && e.isElement && (D = e.el.querySelector(x.el)), !D && typeof x.el == 'string') ) { if (((D = a.querySelectorAll(x.el)), !D.length)) return } else D || (D = x.el) e.params.uniqueNavElements && typeof x.el == 'string' && D.length > 1 && E.querySelectorAll(x.el).length === 1 && (D = E.querySelector(x.el)), D.length > 0 && (D = D[0]), D.classList.add(e.isHorizontal() ? x.horizontalClass : x.verticalClass) let G D && ((G = D.querySelector(te(e.params.scrollbar.dragClass))), G || ((G = J('div', e.params.scrollbar.dragClass)), D.append(G))), Object.assign(C, { el: D, dragEl: G }), x.draggable && A(), D && D.classList[e.enabled ? 'remove' : 'add']( ...ie(e.params.scrollbar.lockClass) ) } function T() { const C = e.params.scrollbar, E = e.scrollbar.el E && E.classList.remove( ...ie(e.isHorizontal() ? C.horizontalClass : C.verticalClass) ), O() } i('changeDirection', () => { if (!e.scrollbar || !e.scrollbar.el) return const C = e.params.scrollbar let { el: E } = e.scrollbar ;(E = N(E)), E.forEach((x) => { x.classList.remove(C.horizontalClass, C.verticalClass), x.classList.add( e.isHorizontal() ? C.horizontalClass : C.verticalClass ) }) }), i('init', () => { e.params.scrollbar.enabled === !1 ? I() : (z(), g(), p()) }), i('update resize observerUpdate lock unlock changeDirection', () => { g() }), i('setTranslate', () => { p() }), i('setTransition', (C, E) => { h(E) }), i('enable disable', () => { const { el: C } = e.scrollbar C && C.classList[e.enabled ? 'remove' : 'add']( ...ie(e.params.scrollbar.lockClass) ) }), i('destroy', () => { T() }) const P = () => { e.el.classList.remove(...ie(e.params.scrollbar.scrollbarDisabledClass)), e.scrollbar.el && e.scrollbar.el.classList.remove( ...ie(e.params.scrollbar.scrollbarDisabledClass) ), z(), g(), p() }, I = () => { e.el.classList.add(...ie(e.params.scrollbar.scrollbarDisabledClass)), e.scrollbar.el && e.scrollbar.el.classList.add( ...ie(e.params.scrollbar.scrollbarDisabledClass) ), T() } Object.assign(e.scrollbar, { enable: P, disable: I, updateSize: g, setTranslate: p, init: z, destroy: T, }) } function zs(s) { let { swiper: e, extendParams: t, on: i } = s t({ parallax: { enabled: !1 } }) const r = '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]', a = (n, u) => { const { rtl: o } = e, l = o ? -1 : 1, d = n.getAttribute('data-swiper-parallax') || '0' let p = n.getAttribute('data-swiper-parallax-x'), h = n.getAttribute('data-swiper-parallax-y') const g = n.getAttribute('data-swiper-parallax-scale'), w = n.getAttribute('data-swiper-parallax-opacity'), y = n.getAttribute('data-swiper-parallax-rotate') if ( (p || h ? ((p = p || '0'), (h = h || '0')) : e.isHorizontal() ? ((p = d), (h = '0')) : ((h = d), (p = '0')), p.indexOf('%') >= 0 ? (p = `${parseInt(p, 10) * u * l}%`) : (p = `${p * u * l}px`), h.indexOf('%') >= 0 ? (h = `${parseInt(h, 10) * u}%`) : (h = `${h * u}px`), typeof w != 'undefined' && w !== null) ) { const m = w - (w - 1) * (1 - Math.abs(u)) n.style.opacity = m } let v = `translate3d(${p}, ${h}, 0px)` typeof g != 'undefined' && g !== null && (v += ` scale(${g - (g - 1) * (1 - Math.abs(u))})`), y && typeof y != 'undefined' && y !== null && (v += ` rotate(${y * u * -1}deg)`), (n.style.transform = v) }, f = () => { const { el: n, slides: u, progress: o, snapGrid: l, isElement: d } = e, p = W(n, r) e.isElement && p.push(...W(e.hostEl, r)), p.forEach((h) => { a(h, o) }), u.forEach((h, g) => { let w = h.progress e.params.slidesPerGroup > 1 && e.params.slidesPerView !== 'auto' && (w += Math.ceil(g / 2) - o * (l.length - 1)), (w = Math.min(Math.max(w, -1), 1)), h .querySelectorAll(`${r}, [data-swiper-parallax-rotate]`) .forEach((y) => { a(y, w) }) }) }, c = function (n) { n === void 0 && (n = e.params.speed) const { el: u, hostEl: o } = e, l = [...u.querySelectorAll(r)] e.isElement && l.push(...o.querySelectorAll(r)), l.forEach((d) => { let p = parseInt(d.getAttribute('data-swiper-parallax-duration'), 10) || n n === 0 && (p = 0), (d.style.transitionDuration = `${p}ms`) }) } i('beforeInit', () => { !e.params.parallax.enabled || ((e.params.watchSlidesProgress = !0), (e.originalParams.watchSlidesProgress = !0)) }), i('init', () => { !e.params.parallax.enabled || f() }), i('setTranslate', () => { !e.params.parallax.enabled || f() }), i('setTransition', (n, u) => { !e.params.parallax.enabled || c(u) }) } function Ds(s) { let { swiper: e, extendParams: t, on: i, emit: r } = s const a = X() t({ zoom: { enabled: !1, limitToOriginalSize: !1, maxRatio: 3, minRatio: 1, toggle: !0, containerClass: 'swiper-zoom-container', zoomedSlideClass: 'swiper-slide-zoomed', }, }), (e.zoom = { enabled: !1 }) let f = 1, c = !1, n, u const o = [], l = { originX: 0, originY: 0, slideEl: void 0, slideWidth: void 0, slideHeight: void 0, imageEl: void 0, imageWrapEl: void 0, maxRatio: 3, }, d = { isTouched: void 0, isMoved: void 0, currentX: void 0, currentY: void 0, minX: void 0, minY: void 0, maxX: void 0, maxY: void 0, width: void 0, height: void 0, startX: void 0, startY: void 0, touchesStart: {}, touchesCurrent: {}, }, p = { x: void 0, y: void 0, prevPositionX: void 0, prevPositionY: void 0, prevTime: void 0, } let h = 1 Object.defineProperty(e.zoom, 'scale', { get() { return h }, set($) { if (h !== $) { const k = l.imageEl, B = l.slideEl r('zoomChange', $, k, B) } h = $ }, }) function g() { if (o.length < 2) return 1 const $ = o[0].pageX, k = o[0].pageY, B = o[1].pageX, Y = o[1].pageY return Math.sqrt((B - $) ** 2 + (Y - k) ** 2) } function w() { const $ = e.params.zoom, k = l.imageWrapEl.getAttribute('data-swiper-zoom') || $.maxRatio if ($.limitToOriginalSize && l.imageEl && l.imageEl.naturalWidth) { const B = l.imageEl.naturalWidth / l.imageEl.offsetWidth return Math.min(B, k) } return k } function y() { if (o.length < 2) return { x: null, y: null } const $ = l.imageEl.getBoundingClientRect() return [ (o[0].pageX + (o[1].pageX - o[0].pageX) / 2 - $.x - a.scrollX) / f, (o[0].pageY + (o[1].pageY - o[0].pageY) / 2 - $.y - a.scrollY) / f, ] } function v() { return e.isElement ? 'swiper-slide' : `.${e.params.slideClass}` } function m($) { const k = v() return !!( $.target.matches(k) || e.slides.filter((B) => B.contains($.target)).length > 0 ) } function b($) { const k = `.${e.params.zoom.containerClass}` return !!( $.target.matches(k) || [...e.hostEl.querySelectorAll(k)].filter((B) => B.contains($.target)) .length > 0 ) } function S($) { if (($.pointerType === 'mouse' && o.splice(0, o.length), !m($))) return const k = e.params.zoom if (((n = !1), (u = !1), o.push($), !(o.length < 2))) { if (((n = !0), (l.scaleStart = g()), !l.slideEl)) { ;(l.slideEl = $.target.closest( `.${e.params.slideClass}, swiper-slide` )), l.slideEl || (l.slideEl = e.slides[e.activeIndex]) let B = l.slideEl.querySelector(`.${k.containerClass}`) if ( (B && (B = B.querySelectorAll( 'picture, img, svg, canvas, .swiper-zoom-target' )[0]), (l.imageEl = B), B ? (l.imageWrapEl = le(l.imageEl, `.${k.containerClass}`)[0]) : (l.imageWrapEl = void 0), !l.imageWrapEl) ) { l.imageEl = void 0 return } l.maxRatio = w() } if (l.imageEl) { const [B, Y] = y() ;(l.originX = B), (l.originY = Y), (l.imageEl.style.transitionDuration = '0ms') } c = !0 } } function A($) { if (!m($)) return const k = e.params.zoom, B = e.zoom, Y = o.findIndex((H) => H.pointerId === $.pointerId) Y >= 0 && (o[Y] = $), !(o.length < 2) && ((u = !0), (l.scaleMove = g()), !!l.imageEl && ((B.scale = (l.scaleMove / l.scaleStart) * f), B.scale > l.maxRatio && (B.scale = l.maxRatio - 1 + (B.scale - l.maxRatio + 1) ** 0.5), B.scale < k.minRatio && (B.scale = k.minRatio + 1 - (k.minRatio - B.scale + 1) ** 0.5), (l.imageEl.style.transform = `translate3d(0,0,0) scale(${B.scale})`))) } function O($) { if (!m($) || ($.pointerType === 'mouse' && $.type === 'pointerout')) return const k = e.params.zoom, B = e.zoom, Y = o.findIndex((H) => H.pointerId === $.pointerId) Y >= 0 && o.splice(Y, 1), !(!n || !u) && ((n = !1), (u = !1), !!l.imageEl && ((B.scale = Math.max(Math.min(B.scale, l.maxRatio), k.minRatio)), (l.imageEl.style.transitionDuration = `${e.params.speed}ms`), (l.imageEl.style.transform = `translate3d(0,0,0) scale(${B.scale})`), (f = B.scale), (c = !1), B.scale > 1 && l.slideEl ? l.slideEl.classList.add(`${k.zoomedSlideClass}`) : B.scale <= 1 && l.slideEl && l.slideEl.classList.remove(`${k.zoomedSlideClass}`), B.scale === 1 && ((l.originX = 0), (l.originY = 0), (l.slideEl = void 0)))) } let z function T() { e.touchEventsData.preventTouchMoveFromPointerMove = !1 } function P() { clearTimeout(z), (e.touchEventsData.preventTouchMoveFromPointerMove = !0), (z = setTimeout(() => { T() })) } function I($) { const k = e.device if (!l.imageEl || d.isTouched) return k.android && $.cancelable && $.preventDefault(), (d.isTouched = !0) const B = o.length > 0 ? o[0] : $ ;(d.touchesStart.x = B.pageX), (d.touchesStart.y = B.pageY) } function C($) { if (!m($) || !b($)) return const k = e.zoom if (!l.imageEl || !d.isTouched || !l.slideEl) return d.isMoved || ((d.width = l.imageEl.offsetWidth || l.imageEl.clientWidth), (d.height = l.imageEl.offsetHeight || l.imageEl.clientHeight), (d.startX = Le(l.imageWrapEl, 'x') || 0), (d.startY = Le(l.imageWrapEl, 'y') || 0), (l.slideWidth = l.slideEl.offsetWidth), (l.slideHeight = l.slideEl.offsetHeight), (l.imageWrapEl.style.transitionDuration = '0ms')) const B = d.width * k.scale, Y = d.height * k.scale if ( ((d.minX = Math.min(l.slideWidth / 2 - B / 2, 0)), (d.maxX = -d.minX), (d.minY = Math.min(l.slideHeight / 2 - Y / 2, 0)), (d.maxY = -d.minY), (d.touchesCurrent.x = o.length > 0 ? o[0].pageX : $.pageX), (d.touchesCurrent.y = o.length > 0 ? o[0].pageY : $.pageY), Math.max( Math.abs(d.touchesCurrent.x - d.touchesStart.x), Math.abs(d.touchesCurrent.y - d.touchesStart.y) ) > 5 && (e.allowClick = !1), !d.isMoved && !c) ) { if ( e.isHorizontal() && ((Math.floor(d.minX) === Math.floor(d.startX) && d.touchesCurrent.x < d.touchesStart.x) || (Math.floor(d.maxX) === Math.floor(d.startX) && d.touchesCurrent.x > d.touchesStart.x)) ) { ;(d.isTouched = !1), T() return } if ( !e.isHorizontal() && ((Math.floor(d.minY) === Math.floor(d.startY) && d.touchesCurrent.y < d.touchesStart.y) || (Math.floor(d.maxY) === Math.floor(d.startY) && d.touchesCurrent.y > d.touchesStart.y)) ) { ;(d.isTouched = !1), T() return } } $.cancelable && $.preventDefault(), $.stopPropagation(), P(), (d.isMoved = !0) const R = (k.scale - f) / (l.maxRatio - e.params.zoom.minRatio), { originX: U, originY: fe } = l ;(d.currentX = d.touchesCurrent.x - d.touchesStart.x + d.startX + R * (d.width - U * 2)), (d.currentY = d.touchesCurrent.y - d.touchesStart.y + d.startY + R * (d.height - fe * 2)), d.currentX < d.minX && (d.currentX = d.minX + 1 - (d.minX - d.currentX + 1) ** 0.8), d.currentX > d.maxX && (d.currentX = d.maxX - 1 + (d.currentX - d.maxX + 1) ** 0.8), d.currentY < d.minY && (d.currentY = d.minY + 1 - (d.minY - d.currentY + 1) ** 0.8), d.currentY > d.maxY && (d.currentY = d.maxY - 1 + (d.currentY - d.maxY + 1) ** 0.8), p.prevPositionX || (p.prevPositionX = d.touchesCurrent.x), p.prevPositionY || (p.prevPositionY = d.touchesCurrent.y), p.prevTime || (p.prevTime = Date.now()), (p.x = (d.touchesCurrent.x - p.prevPositionX) / (Date.now() - p.prevTime) / 2), (p.y = (d.touchesCurrent.y - p.prevPositionY) / (Date.now() - p.prevTime) / 2), Math.abs(d.touchesCurrent.x - p.prevPositionX) < 2 && (p.x = 0), Math.abs(d.touchesCurrent.y - p.prevPositionY) < 2 && (p.y = 0), (p.prevPositionX = d.touchesCurrent.x), (p.prevPositionY = d.touchesCurrent.y), (p.prevTime = Date.now()), (l.imageWrapEl.style.transform = `translate3d(${d.currentX}px, ${d.currentY}px,0)`) } function E() { const $ = e.zoom if (!l.imageEl) return if (!d.isTouched || !d.isMoved) { ;(d.isTouched = !1), (d.isMoved = !1) return } ;(d.isTouched = !1), (d.isMoved = !1) let k = 300, B = 300 const Y = p.x * k, H = d.currentX + Y, R = p.y * B, U = d.currentY + R p.x !== 0 && (k = Math.abs((H - d.currentX) / p.x)), p.y !== 0 && (B = Math.abs((U - d.currentY) / p.y)) const fe = Math.max(k, B) ;(d.currentX = H), (d.currentY = U) const Me = d.width * $.scale, se = d.height * $.scale ;(d.minX = Math.min(l.slideWidth / 2 - Me / 2, 0)), (d.maxX = -d.minX), (d.minY = Math.min(l.slideHeight / 2 - se / 2, 0)), (d.maxY = -d.minY), (d.currentX = Math.max(Math.min(d.currentX, d.maxX), d.minX)), (d.currentY = Math.max(Math.min(d.currentY, d.maxY), d.minY)), (l.imageWrapEl.style.transitionDuration = `${fe}ms`), (l.imageWrapEl.style.transform = `translate3d(${d.currentX}px, ${d.currentY}px,0)`) } function x() { const $ = e.zoom l.slideEl && e.activeIndex !== e.slides.indexOf(l.slideEl) && (l.imageEl && (l.imageEl.style.transform = 'translate3d(0,0,0) scale(1)'), l.imageWrapEl && (l.imageWrapEl.style.transform = 'translate3d(0,0,0)'), l.slideEl.classList.remove(`${e.params.zoom.zoomedSlideClass}`), ($.scale = 1), (f = 1), (l.slideEl = void 0), (l.imageEl = void 0), (l.imageWrapEl = void 0), (l.originX = 0), (l.originY = 0)) } function D($) { const k = e.zoom, B = e.params.zoom if (!l.slideEl) { $ && $.target && (l.slideEl = $.target.closest( `.${e.params.slideClass}, swiper-slide` )), l.slideEl || (e.params.virtual && e.params.virtual.enabled && e.virtual ? (l.slideEl = W(e.slidesEl, `.${e.params.slideActiveClass}`)[0]) : (l.slideEl = e.slides[e.activeIndex])) let we = l.slideEl.querySelector(`.${B.containerClass}`) we && (we = we.querySelectorAll( 'picture, img, svg, canvas, .swiper-zoom-target' )[0]), (l.imageEl = we), we ? (l.imageWrapEl = le(l.imageEl, `.${B.containerClass}`)[0]) : (l.imageWrapEl = void 0) } if (!l.imageEl || !l.imageWrapEl) return e.params.cssMode && ((e.wrapperEl.style.overflow = 'hidden'), (e.wrapperEl.style.touchAction = 'none')), l.slideEl.classList.add(`${B.zoomedSlideClass}`) let Y, H, R, U, fe, Me, se, oe, tt, st, it, rt, Ce, Pe, He, Fe, Ne, Re typeof d.touchesStart.x == 'undefined' && $ ? ((Y = $.pageX), (H = $.pageY)) : ((Y = d.touchesStart.x), (H = d.touchesStart.y)) const ve = typeof $ == 'number' ? $ : null f === 1 && ve && ((Y = void 0), (H = void 0), (d.touchesStart.x = void 0), (d.touchesStart.y = void 0)) const at = w() ;(k.scale = ve || at), (f = ve || at), $ && !(f === 1 && ve) ? ((Ne = l.slideEl.offsetWidth), (Re = l.slideEl.offsetHeight), (R = be(l.slideEl).left + a.scrollX), (U = be(l.slideEl).top + a.scrollY), (fe = R + Ne / 2 - Y), (Me = U + Re / 2 - H), (tt = l.imageEl.offsetWidth || l.imageEl.clientWidth), (st = l.imageEl.offsetHeight || l.imageEl.clientHeight), (it = tt * k.scale), (rt = st * k.scale), (Ce = Math.min(Ne / 2 - it / 2, 0)), (Pe = Math.min(Re / 2 - rt / 2, 0)), (He = -Ce), (Fe = -Pe), (se = fe * k.scale), (oe = Me * k.scale), se < Ce && (se = Ce), se > He && (se = He), oe < Pe && (oe = Pe), oe > Fe && (oe = Fe)) : ((se = 0), (oe = 0)), ve && k.scale === 1 && ((l.originX = 0), (l.originY = 0)), (l.imageWrapEl.style.transitionDuration = '300ms'), (l.imageWrapEl.style.transform = `translate3d(${se}px, ${oe}px,0)`), (l.imageEl.style.transitionDuration = '300ms'), (l.imageEl.style.transform = `translate3d(0,0,0) scale(${k.scale})`) } function G() { const $ = e.zoom, k = e.params.zoom if (!l.slideEl) { e.params.virtual && e.params.virtual.enabled && e.virtual ? (l.slideEl = W(e.slidesEl, `.${e.params.slideActiveClass}`)[0]) : (l.slideEl = e.slides[e.activeIndex]) let B = l.slideEl.querySelector(`.${k.containerClass}`) B && (B = B.querySelectorAll( 'picture, img, svg, canvas, .swiper-zoom-target' )[0]), (l.imageEl = B), B ? (l.imageWrapEl = le(l.imageEl, `.${k.containerClass}`)[0]) : (l.imageWrapEl = void 0) } !l.imageEl || !l.imageWrapEl || (e.params.cssMode && ((e.wrapperEl.style.overflow = ''), (e.wrapperEl.style.touchAction = '')), ($.scale = 1), (f = 1), (d.touchesStart.x = void 0), (d.touchesStart.y = void 0), (l.imageWrapEl.style.transitionDuration = '300ms'), (l.imageWrapEl.style.transform = 'translate3d(0,0,0)'), (l.imageEl.style.transitionDuration = '300ms'), (l.imageEl.style.transform = 'translate3d(0,0,0) scale(1)'), l.slideEl.classList.remove(`${k.zoomedSlideClass}`), (l.slideEl = void 0), (l.originX = 0), (l.originY = 0)) } function M($) { const k = e.zoom k.scale && k.scale !== 1 ? G() : D($) } function L() { const $ = e.params.passiveListeners ? { passive: !0, capture: !1 } : !1, k = e.params.passiveListeners ? { passive: !1, capture: !0 } : !0 return { passiveListener: $, activeListenerWithCapture: k } } function V() { const $ = e.zoom if ($.enabled) return $.enabled = !0 const { passiveListener: k, activeListenerWithCapture: B } = L() e.wrapperEl.addEventListener('pointerdown', S, k), e.wrapperEl.addEventListener('pointermove', A, B), ['pointerup', 'pointercancel', 'pointerout'].forEach((Y) => { e.wrapperEl.addEventListener(Y, O, k) }), e.wrapperEl.addEventListener('pointermove', C, B) } function F() { const $ = e.zoom if (!$.enabled) return $.enabled = !1 const { passiveListener: k, activeListenerWithCapture: B } = L() e.wrapperEl.removeEventListener('pointerdown', S, k), e.wrapperEl.removeEventListener('pointermove', A, B), ['pointerup', 'pointercancel', 'pointerout'].forEach((Y) => { e.wrapperEl.removeEventListener(Y, O, k) }), e.wrapperEl.removeEventListener('pointermove', C, B) } i('init', () => { e.params.zoom.enabled && V() }), i('destroy', () => { F() }), i('touchStart', ($, k) => { !e.zoom.enabled || I(k) }), i('touchEnd', ($, k) => { !e.zoom.enabled || E() }), i('doubleTap', ($, k) => { !e.animating && e.params.zoom.enabled && e.zoom.enabled && e.params.zoom.toggle && M(k) }), i('transitionEnd', () => { e.zoom.enabled && e.params.zoom.enabled && x() }), i('slideChange', () => { e.zoom.enabled && e.params.zoom.enabled && e.params.cssMode && x() }), Object.assign(e.zoom, { enable: V, disable: F, in: D, out: G, toggle: M }) } function Os(s) { let { swiper: e, extendParams: t, on: i } = s t({ controller: { control: void 0, inverse: !1, by: 'slide' } }), (e.controller = { control: void 0 }) function r(u, o) { const l = (function () { let g, w, y return (v, m) => { for (w = -1, g = v.length; g - w > 1; ) (y = (g + w) >> 1), v[y] <= m ? (w = y) : (g = y) return g } })() ;(this.x = u), (this.y = o), (this.lastIndex = u.length - 1) let d, p return ( (this.interpolate = function (g) { return g ? ((p = l(this.x, g)), (d = p - 1), ((g - this.x[d]) * (this.y[p] - this.y[d])) / (this.x[p] - this.x[d]) + this.y[d]) : 0 }), this ) } function a(u) { e.controller.spline = e.params.loop ? new r(e.slidesGrid, u.slidesGrid) : new r(e.snapGrid, u.snapGrid) } function f(u, o) { const l = e.controller.control let d, p const h = e.constructor function g(w) { if (w.destroyed) return const y = e.rtlTranslate ? -e.translate : e.translate e.params.controller.by === 'slide' && (a(w), (p = -e.controller.spline.interpolate(-y))), (!p || e.params.controller.by === 'container') && ((d = (w.maxTranslate() - w.minTranslate()) / (e.maxTranslate() - e.minTranslate())), (Number.isNaN(d) || !Number.isFinite(d)) && (d = 1), (p = (y - e.minTranslate()) * d + w.minTranslate())), e.params.controller.inverse && (p = w.maxTranslate() - p), w.updateProgress(p), w.setTranslate(p, e), w.updateActiveIndex(), w.updateSlidesClasses() } if (Array.isArray(l)) for (let w = 0; w < l.length; w += 1) l[w] !== o && l[w] instanceof h && g(l[w]) else l instanceof h && o !== l && g(l) } function c(u, o) { const l = e.constructor, d = e.controller.control let p function h(g) { g.destroyed || (g.setTransition(u, e), u !== 0 && (g.transitionStart(), g.params.autoHeight && ae(() => { g.updateAutoHeight() }), he(g.wrapperEl, () => { !d || g.transitionEnd() }))) } if (Array.isArray(d)) for (p = 0; p < d.length; p += 1) d[p] !== o && d[p] instanceof l && h(d[p]) else d instanceof l && o !== d && h(d) } function n() { !e.controller.control || (e.controller.spline && ((e.controller.spline = void 0), delete e.controller.spline)) } i('beforeInit', () => { if ( typeof window != 'undefined' && (typeof e.params.controller.control == 'string' || e.params.controller.control instanceof HTMLElement) ) { ;(typeof e.params.controller.control == 'string' ? [...document.querySelectorAll(e.params.controller.control)] : [e.params.controller.control] ).forEach((o) => { if ( (e.controller.control || (e.controller.control = []), o && o.swiper) ) e.controller.control.push(o.swiper) else if (o) { const l = `${e.params.eventsPrefix}init`, d = (p) => { e.controller.control.push(p.detail[0]), e.update(), o.removeEventListener(l, d) } o.addEventListener(l, d) } }) return } e.controller.control = e.params.controller.control }), i('update', () => { n() }), i('resize', () => { n() }), i('observerUpdate', () => { n() }), i('setTranslate', (u, o, l) => { !e.controller.control || e.controller.control.destroyed || e.controller.setTranslate(o, l) }), i('setTransition', (u, o, l) => { !e.controller.control || e.controller.control.destroyed || e.controller.setTransition(o, l) }), Object.assign(e.controller, { setTranslate: f, setTransition: c }) } function $s(s) { let { swiper: e, extendParams: t, on: i } = s t({ a11y: { enabled: !0, notificationClass: 'swiper-notification', prevSlideMessage: 'Previous slide', nextSlideMessage: 'Next slide', firstSlideMessage: 'This is the first slide', lastSlideMessage: 'This is the last slide', paginationBulletMessage: 'Go to slide {{index}}', slideLabelMessage: '{{index}} / {{slidesLength}}', containerMessage: null, containerRoleDescriptionMessage: null, itemRoleDescriptionMessage: null, slideRole: 'group', id: null, scrollOnFocus: !0, }, }), (e.a11y = { clicked: !1 }) let r = null, a, f, c = new Date().getTime() function n(M) { const L = r L.length !== 0 && ((L.innerHTML = ''), (L.innerHTML = M)) } function u(M) { M === void 0 && (M = 16) const L = () => Math.round(16 * Math.random()).toString(16) return 'x'.repeat(M).replace(/x/g, L) } function o(M) { ;(M = N(M)), M.forEach((L) => { L.setAttribute('tabIndex', '0') }) } function l(M) { ;(M = N(M)), M.forEach((L) => { L.setAttribute('tabIndex', '-1') }) } function d(M, L) { ;(M = N(M)), M.forEach((V) => { V.setAttribute('role', L) }) } function p(M, L) { ;(M = N(M)), M.forEach((V) => { V.setAttribute('aria-roledescription', L) }) } function h(M, L) { ;(M = N(M)), M.forEach((V) => { V.setAttribute('aria-controls', L) }) } function g(M, L) { ;(M = N(M)), M.forEach((V) => { V.setAttribute('aria-label', L) }) } function w(M, L) { ;(M = N(M)), M.forEach((V) => { V.setAttribute('id', L) }) } function y(M, L) { ;(M = N(M)), M.forEach((V) => { V.setAttribute('aria-live', L) }) } function v(M) { ;(M = N(M)), M.forEach((L) => { L.setAttribute('aria-disabled', !0) }) } function m(M) { ;(M = N(M)), M.forEach((L) => { L.setAttribute('aria-disabled', !1) }) } function b(M) { if (M.keyCode !== 13 && M.keyCode !== 32) return const L = e.params.a11y, V = M.target if ( !( e.pagination && e.pagination.el && (V === e.pagination.el || e.pagination.el.contains(M.target)) && !M.target.matches(te(e.params.pagination.bulletClass)) ) ) { if (e.navigation && e.navigation.prevEl && e.navigation.nextEl) { const F = N(e.navigation.prevEl) N(e.navigation.nextEl).includes(V) && ((e.isEnd && !e.params.loop) || e.slideNext(), e.isEnd ? n(L.lastSlideMessage) : n(L.nextSlideMessage)), F.includes(V) && ((e.isBeginning && !e.params.loop) || e.slidePrev(), e.isBeginning ? n(L.firstSlideMessage) : n(L.prevSlideMessage)) } e.pagination && V.matches(te(e.params.pagination.bulletClass)) && V.click() } } function S() { if (e.params.loop || e.params.rewind || !e.navigation) return const { nextEl: M, prevEl: L } = e.navigation L && (e.isBeginning ? (v(L), l(L)) : (m(L), o(L))), M && (e.isEnd ? (v(M), l(M)) : (m(M), o(M))) } function A() { return e.pagination && e.pagination.bullets && e.pagination.bullets.length } function O() { return A() && e.params.pagination.clickable } function z() { const M = e.params.a11y !A() || e.pagination.bullets.forEach((L) => { e.params.pagination.clickable && (o(L), e.params.pagination.renderBullet || (d(L, 'button'), g( L, M.paginationBulletMessage.replace(/\{\{index\}\}/, me(L) + 1) ))), L.matches(te(e.params.pagination.bulletActiveClass)) ? L.setAttribute('aria-current', 'true') : L.removeAttribute('aria-current') }) } const T = (M, L, V) => { o(M), M.tagName !== 'BUTTON' && (d(M, 'button'), M.addEventListener('keydown', b)), g(M, V), h(M, L) }, P = (M) => { f && f !== M.target && !f.contains(M.target) && (a = !0), (e.a11y.clicked = !0) }, I = () => { ;(a = !1), requestAnimationFrame(() => { requestAnimationFrame(() => { e.destroyed || (e.a11y.clicked = !1) }) }) }, C = (M) => { c = new Date().getTime() }, E = (M) => { if ( e.a11y.clicked || !e.params.a11y.scrollOnFocus || new Date().getTime() - c < 100 ) return const L = M.target.closest(`.${e.params.slideClass}, swiper-slide`) if (!L || !e.slides.includes(L)) return f = L const V = e.slides.indexOf(L) === e.activeIndex, F = e.params.watchSlidesProgress && e.visibleSlides && e.visibleSlides.includes(L) V || F || (M.sourceCapabilities && M.sourceCapabilities.firesTouchEvents) || (e.isHorizontal() ? (e.el.scrollLeft = 0) : (e.el.scrollTop = 0), requestAnimationFrame(() => { a || (e.params.loop ? e.slideToLoop( parseInt(L.getAttribute('data-swiper-slide-index')), 0 ) : e.slideTo(e.slides.indexOf(L), 0), (a = !1)) })) }, x = () => { const M = e.params.a11y M.itemRoleDescriptionMessage && p(e.slides, M.itemRoleDescriptionMessage), M.slideRole && d(e.slides, M.slideRole) const L = e.slides.length M.slideLabelMessage && e.slides.forEach((V, F) => { const $ = e.params.loop ? parseInt(V.getAttribute('data-swiper-slide-index'), 10) : F, k = M.slideLabelMessage .replace(/\{\{index\}\}/, $ + 1) .replace(/\{\{slidesLength\}\}/, L) g(V, k) }) }, D = () => { const M = e.params.a11y e.el.append(r) const L = e.el M.containerRoleDescriptionMessage && p(L, M.containerRoleDescriptionMessage), M.containerMessage && g(L, M.containerMessage) const V = e.wrapperEl, F = M.id || V.getAttribute('id') || `swiper-wrapper-${u(16)}`, $ = e.params.autoplay && e.params.autoplay.enabled ? 'off' : 'polite' w(V, F), y(V, $), x() let { nextEl: k, prevEl: B } = e.navigation ? e.navigation : {} ;(k = N(k)), (B = N(B)), k && k.forEach((H) => T(H, F, M.nextSlideMessage)), B && B.forEach((H) => T(H, F, M.prevSlideMessage)), O() && N(e.pagination.el).forEach((R) => { R.addEventListener('keydown', b) }), q().addEventListener('visibilitychange', C), e.el.addEventListener('focus', E, !0), e.el.addEventListener('focus', E, !0), e.el.addEventListener('pointerdown', P, !0), e.el.addEventListener('pointerup', I, !0) } function G() { r && r.remove() let { nextEl: M, prevEl: L } = e.navigation ? e.navigation : {} ;(M = N(M)), (L = N(L)), M && M.forEach((F) => F.removeEventListener('keydown', b)), L && L.forEach((F) => F.removeEventListener('keydown', b)), O() && N(e.pagination.el).forEach(($) => { $.removeEventListener('keydown', b) }), q().removeEventListener('visibilitychange', C), e.el && typeof e.el != 'string' && (e.el.removeEventListener('focus', E, !0), e.el.removeEventListener('pointerdown', P, !0), e.el.removeEventListener('pointerup', I, !0)) } i('beforeInit', () => { ;(r = J('span', e.params.a11y.notificationClass)), r.setAttribute('aria-live', 'assertive'), r.setAttribute('aria-atomic', 'true') }), i('afterInit', () => { !e.params.a11y.enabled || D() }), i( 'slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => { !e.params.a11y.enabled || x() } ), i('fromEdge toEdge afterInit lock unlock', () => { !e.params.a11y.enabled || S() }), i('paginationUpdate', () => { !e.params.a11y.enabled || z() }), i('destroy', () => { !e.params.a11y.enabled || G() }) } function ks(s) { let { swiper: e, extendParams: t, on: i } = s t({ history: { enabled: !1, root: '', replaceState: !1, key: 'slides', keepQuery: !1, }, }) let r = !1, a = {} const f = (p) => p .toString() .replace(/\s+/g, '-') .replace(/[^\w-]+/g, '') .replace(/--+/g, '-') .replace(/^-+/, '') .replace(/-+$/, ''), c = (p) => { const h = X() let g p ? (g = new URL(p)) : (g = h.location) const w = g.pathname .slice(1) .split('/') .filter((b) => b !== ''), y = w.length, v = w[y - 2], m = w[y - 1] return { key: v, value: m } }, n = (p, h) => { const g = X() if (!r || !e.params.history.enabled) return let w e.params.url ? (w = new URL(e.params.url)) : (w = g.location) const y = e.virtual && e.params.virtual.enabled ? e.slidesEl.querySelector(`[data-swiper-slide-index="${h}"]`) : e.slides[h] let v = f(y.getAttribute('data-history')) if (e.params.history.root.length > 0) { let b = e.params.history.root b[b.length - 1] === '/' && (b = b.slice(0, b.length - 1)), (v = `${b}/${p ? `${p}/` : ''}${v}`) } else w.pathname.includes(p) || (v = `${p ? `${p}/` : ''}${v}`) e.params.history.keepQuery && (v += w.search) const m = g.history.state ;(m && m.value === v) || (e.params.history.replaceState ? g.history.replaceState({ value: v }, null, v) : g.history.pushState({ value: v }, null, v)) }, u = (p, h, g) => { if (h) for (let w = 0, y = e.slides.length; w < y; w += 1) { const v = e.slides[w] if (f(v.getAttribute('data-history')) === h) { const b = e.getSlideIndex(v) e.slideTo(b, p, g) } } else e.slideTo(0, p, g) }, o = () => { ;(a = c(e.params.url)), u(e.params.speed, a.value, !1) }, l = () => { const p = X() if (!!e.params.history) { if (!p.history || !p.history.pushState) { ;(e.params.history.enabled = !1), (e.params.hashNavigation.enabled = !0) return } if (((r = !0), (a = c(e.params.url)), !a.key && !a.value)) { e.params.history.replaceState || p.addEventListener('popstate', o) return } u(0, a.value, e.params.runCallbacksOnInit), e.params.history.replaceState || p.addEventListener('popstate', o) } }, d = () => { const p = X() e.params.history.replaceState || p.removeEventListener('popstate', o) } i('init', () => { e.params.history.enabled && l() }), i('destroy', () => { e.params.history.enabled && d() }), i('transitionEnd _freeModeNoMomentumRelease', () => { r && n(e.params.history.key, e.activeIndex) }), i('slideChange', () => { r && e.params.cssMode && n(e.params.history.key, e.activeIndex) }) } function Vs(s) { let { swiper: e, extendParams: t, emit: i, on: r } = s, a = !1 const f = q(), c = X() t({ hashNavigation: { enabled: !1, replaceState: !1, watchState: !1, getSlideIndex(d, p) { if (e.virtual && e.params.virtual.enabled) { const h = e.slides.filter( (w) => w.getAttribute('data-hash') === p )[0] return h ? parseInt(h.getAttribute('data-swiper-slide-index'), 10) : 0 } return e.getSlideIndex( W( e.slidesEl, `.${e.params.slideClass}[data-hash="${p}"], swiper-slide[data-hash="${p}"]` )[0] ) }, }, }) const n = () => { i('hashChange') const d = f.location.hash.replace('#', ''), p = e.virtual && e.params.virtual.enabled ? e.slidesEl.querySelector( `[data-swiper-slide-index="${e.activeIndex}"]` ) : e.slides[e.activeIndex], h = p ? p.getAttribute('data-hash') : '' if (d !== h) { const g = e.params.hashNavigation.getSlideIndex(e, d) if (typeof g == 'undefined' || Number.isNaN(g)) return e.slideTo(g) } }, u = () => { if (!a || !e.params.hashNavigation.enabled) return const d = e.virtual && e.params.virtual.enabled ? e.slidesEl.querySelector( `[data-swiper-slide-index="${e.activeIndex}"]` ) : e.slides[e.activeIndex], p = d ? d.getAttribute('data-hash') || d.getAttribute('data-history') : '' e.params.hashNavigation.replaceState && c.history && c.history.replaceState ? (c.history.replaceState(null, null, `#${p}` || ''), i('hashSet')) : ((f.location.hash = p || ''), i('hashSet')) }, o = () => { if ( !e.params.hashNavigation.enabled || (e.params.history && e.params.history.enabled) ) return a = !0 const d = f.location.hash.replace('#', '') if (d) { const p = 0, h = e.params.hashNavigation.getSlideIndex(e, d) e.slideTo(h || 0, p, e.params.runCallbacksOnInit, !0) } e.params.hashNavigation.watchState && c.addEventListener('hashchange', n) }, l = () => { e.params.hashNavigation.watchState && c.removeEventListener('hashchange', n) } r('init', () => { e.params.hashNavigation.enabled && o() }), r('destroy', () => { e.params.hashNavigation.enabled && l() }), r('transitionEnd _freeModeNoMomentumRelease', () => { a && u() }), r('slideChange', () => { a && e.params.cssMode && u() }) } function Gs(s) { let { swiper: e, extendParams: t, on: i, emit: r, params: a } = s ;(e.autoplay = { running: !1, paused: !1, timeLeft: 0 }), t({ autoplay: { enabled: !1, delay: 3e3, waitForTransition: !0, disableOnInteraction: !1, stopOnLastSlide: !1, reverseDirection: !1, pauseOnMouseEnter: !1, }, }) let f, c, n = a && a.autoplay ? a.autoplay.delay : 3e3, u = a && a.autoplay ? a.autoplay.delay : 3e3, o, l = new Date().getTime(), d, p, h, g, w, y, v function m(L) { !e || e.destroyed || !e.wrapperEl || (L.target === e.wrapperEl && (e.wrapperEl.removeEventListener('transitionend', m), !(v || (L.detail && L.detail.bySwiperTouchMove)) && P())) } const b = () => { if (e.destroyed || !e.autoplay.running) return e.autoplay.paused ? (d = !0) : d && ((u = o), (d = !1)) const L = e.autoplay.paused ? o : l + u - new Date().getTime() ;(e.autoplay.timeLeft = L), r('autoplayTimeLeft', L, L / n), (c = requestAnimationFrame(() => { b() })) }, S = () => { let L return ( e.virtual && e.params.virtual.enabled ? (L = e.slides.filter((F) => F.classList.contains('swiper-slide-active') )[0]) : (L = e.slides[e.activeIndex]), L ? parseInt(L.getAttribute('data-swiper-autoplay'), 10) : void 0 ) }, A = (L) => { if (e.destroyed || !e.autoplay.running) return cancelAnimationFrame(c), b() let V = typeof L == 'undefined' ? e.params.autoplay.delay : L ;(n = e.params.autoplay.delay), (u = e.params.autoplay.delay) const F = S() !Number.isNaN(F) && F > 0 && typeof L == 'undefined' && ((V = F), (n = F), (u = F)), (o = V) const $ = e.params.speed, k = () => { !e || e.destroyed || (e.params.autoplay.reverseDirection ? !e.isBeginning || e.params.loop || e.params.rewind ? (e.slidePrev($, !0, !0), r('autoplay')) : e.params.autoplay.stopOnLastSlide || (e.slideTo(e.slides.length - 1, $, !0, !0), r('autoplay')) : !e.isEnd || e.params.loop || e.params.rewind ? (e.slideNext($, !0, !0), r('autoplay')) : e.params.autoplay.stopOnLastSlide || (e.slideTo(0, $, !0, !0), r('autoplay')), e.params.cssMode && ((l = new Date().getTime()), requestAnimationFrame(() => { A() }))) } return ( V > 0 ? (clearTimeout(f), (f = setTimeout(() => { k() }, V))) : requestAnimationFrame(() => { k() }), V ) }, O = () => { ;(l = new Date().getTime()), (e.autoplay.running = !0), A(), r('autoplayStart') }, z = () => { ;(e.autoplay.running = !1), clearTimeout(f), cancelAnimationFrame(c), r('autoplayStop') }, T = (L, V) => { if (e.destroyed || !e.autoplay.running) return clearTimeout(f), L || (y = !0) const F = () => { r('autoplayPause'), e.params.autoplay.waitForTransition ? e.wrapperEl.addEventListener('transitionend', m) : P() } if (((e.autoplay.paused = !0), V)) { w && (o = e.params.autoplay.delay), (w = !1), F() return } ;(o = (o || e.params.autoplay.delay) - (new Date().getTime() - l)), !(e.isEnd && o < 0 && !e.params.loop) && (o < 0 && (o = 0), F()) }, P = () => { ;(e.isEnd && o < 0 && !e.params.loop) || e.destroyed || !e.autoplay.running || ((l = new Date().getTime()), y ? ((y = !1), A(o)) : A(), (e.autoplay.paused = !1), r('autoplayResume')) }, I = () => { if (e.destroyed || !e.autoplay.running) return const L = q() L.visibilityState === 'hidden' && ((y = !0), T(!0)), L.visibilityState === 'visible' && P() }, C = (L) => { L.pointerType === 'mouse' && ((y = !0), (v = !0), !(e.animating || e.autoplay.paused) && T(!0)) }, E = (L) => { L.pointerType === 'mouse' && ((v = !1), e.autoplay.paused && P()) }, x = () => { e.params.autoplay.pauseOnMouseEnter && (e.el.addEventListener('pointerenter', C), e.el.addEventListener('pointerleave', E)) }, D = () => { e.el && typeof e.el != 'string' && (e.el.removeEventListener('pointerenter', C), e.el.removeEventListener('pointerleave', E)) }, G = () => { q().addEventListener('visibilitychange', I) }, M = () => { q().removeEventListener('visibilitychange', I) } i('init', () => { e.params.autoplay.enabled && (x(), G(), O()) }), i('destroy', () => { D(), M(), e.autoplay.running && z() }), i('_freeModeStaticRelease', () => { ;(h || y) && P() }), i('_freeModeNoMomentumRelease', () => { e.params.autoplay.disableOnInteraction ? z() : T(!0, !0) }), i('beforeTransitionStart', (L, V, F) => { e.destroyed || !e.autoplay.running || (F || !e.params.autoplay.disableOnInteraction ? T(!0, !0) : z()) }), i('sliderFirstMove', () => { if (!(e.destroyed || !e.autoplay.running)) { if (e.params.autoplay.disableOnInteraction) { z() return } ;(p = !0), (h = !1), (y = !1), (g = setTimeout(() => { ;(y = !0), (h = !0), T(!0) }, 200)) } }), i('touchEnd', () => { if (!(e.destroyed || !e.autoplay.running || !p)) { if ( (clearTimeout(g), clearTimeout(f), e.params.autoplay.disableOnInteraction) ) { ;(h = !1), (p = !1) return } h && e.params.cssMode && P(), (h = !1), (p = !1) } }), i('slideChange', () => { e.destroyed || !e.autoplay.running || (w = !0) }), Object.assign(e.autoplay, { start: O, stop: z, pause: T, resume: P }) } function Bs(s) { let { swiper: e, extendParams: t, on: i } = s t({ thumbs: { swiper: null, multipleActiveThumbs: !0, autoScrollOffset: 0, slideThumbActiveClass: 'swiper-slide-thumb-active', thumbsContainerClass: 'swiper-thumbs', }, }) let r = !1, a = !1 e.thumbs = { swiper: null } function f() { const u = e.thumbs.swiper if (!u || u.destroyed) return const o = u.clickedIndex, l = u.clickedSlide if ( (l && l.classList.contains(e.params.thumbs.slideThumbActiveClass)) || typeof o == 'undefined' || o === null ) return let d u.params.loop ? (d = parseInt( u.clickedSlide.getAttribute('data-swiper-slide-index'), 10 )) : (d = o), e.params.loop ? e.slideToLoop(d) : e.slideTo(d) } function c() { const { thumbs: u } = e.params if (r) return !1 r = !0 const o = e.constructor if (u.swiper instanceof o) (e.thumbs.swiper = u.swiper), Object.assign(e.thumbs.swiper.originalParams, { watchSlidesProgress: !0, slideToClickedSlide: !1, }), Object.assign(e.thumbs.swiper.params, { watchSlidesProgress: !0, slideToClickedSlide: !1, }), e.thumbs.swiper.update() else if (ue(u.swiper)) { const l = Object.assign({}, u.swiper) Object.assign(l, { watchSlidesProgress: !0, slideToClickedSlide: !1 }), (e.thumbs.swiper = new o(l)), (a = !0) } return ( e.thumbs.swiper.el.classList.add(e.params.thumbs.thumbsContainerClass), e.thumbs.swiper.on('tap', f), !0 ) } function n(u) { const o = e.thumbs.swiper if (!o || o.destroyed) return const l = o.params.slidesPerView === 'auto' ? o.slidesPerViewDynamic() : o.params.slidesPerView let d = 1 const p = e.params.thumbs.slideThumbActiveClass if ( (e.params.slidesPerView > 1 && !e.params.centeredSlides && (d = e.params.slidesPerView), e.params.thumbs.multipleActiveThumbs || (d = 1), (d = Math.floor(d)), o.slides.forEach((w) => w.classList.remove(p)), o.params.loop || (o.params.virtual && o.params.virtual.enabled)) ) for (let w = 0; w < d; w += 1) W( o.slidesEl, `[data-swiper-slide-index="${e.realIndex + w}"]` ).forEach((y) => { y.classList.add(p) }) else for (let w = 0; w < d; w += 1) o.slides[e.realIndex + w] && o.slides[e.realIndex + w].classList.add(p) const h = e.params.thumbs.autoScrollOffset, g = h && !o.params.loop if (e.realIndex !== o.realIndex || g) { const w = o.activeIndex let y, v if (o.params.loop) { const m = o.slides.filter( (b) => b.getAttribute('data-swiper-slide-index') === `${e.realIndex}` )[0] ;(y = o.slides.indexOf(m)), (v = e.activeIndex > e.previousIndex ? 'next' : 'prev') } else (y = e.realIndex), (v = y > e.previousIndex ? 'next' : 'prev') g && (y += v === 'next' ? h : -1 * h), o.visibleSlidesIndexes && o.visibleSlidesIndexes.indexOf(y) < 0 && (o.params.centeredSlides ? y > w ? (y = y - Math.floor(l / 2) + 1) : (y = y + Math.floor(l / 2) - 1) : y > w && o.params.slidesPerGroup === 1, o.slideTo(y, u ? 0 : void 0)) } } i('beforeInit', () => { const { thumbs: u } = e.params if (!(!u || !u.swiper)) if (typeof u.swiper == 'string' || u.swiper instanceof HTMLElement) { const o = q(), l = () => { const p = typeof u.swiper == 'string' ? o.querySelector(u.swiper) : u.swiper if (p && p.swiper) (u.swiper = p.swiper), c(), n(!0) else if (p) { const h = `${e.params.eventsPrefix}init`, g = (w) => { ;(u.swiper = w.detail[0]), p.removeEventListener(h, g), c(), n(!0), u.swiper.update(), e.update() } p.addEventListener(h, g) } return p }, d = () => { if (e.destroyed) return l() || requestAnimationFrame(d) } requestAnimationFrame(d) } else c(), n(!0) }), i('slideChange update resize observerUpdate', () => { n() }), i('setTransition', (u, o) => { const l = e.thumbs.swiper !l || l.destroyed || l.setTransition(o) }), i('beforeDestroy', () => { const u = e.thumbs.swiper !u || u.destroyed || (a && u.destroy()) }), Object.assign(e.thumbs, { init: c, update: n }) } function Hs(s) { let { swiper: e, extendParams: t, emit: i, once: r } = s t({ freeMode: { enabled: !1, momentum: !0, momentumRatio: 1, momentumBounce: !0, momentumBounceRatio: 1, momentumVelocityRatio: 1, sticky: !1, minimumVelocity: 0.02, }, }) function a() { if (e.params.cssMode) return const n = e.getTranslate() e.setTranslate(n), e.setTransition(0), (e.touchEventsData.velocities.length = 0), e.freeMode.onTouchEnd({ currentPos: e.rtl ? e.translate : -e.translate, }) } function f() { if (e.params.cssMode) return const { touchEventsData: n, touches: u } = e n.velocities.length === 0 && n.velocities.push({ position: u[e.isHorizontal() ? 'startX' : 'startY'], time: n.touchStartTime, }), n.velocities.push({ position: u[e.isHorizontal() ? 'currentX' : 'currentY'], time: ee(), }) } function c(n) { let { currentPos: u } = n if (e.params.cssMode) return const { params: o, wrapperEl: l, rtlTranslate: d, snapGrid: p, touchEventsData: h, } = e, w = ee() - h.touchStartTime if (u < -e.minTranslate()) { e.slideTo(e.activeIndex) return } if (u > -e.maxTranslate()) { e.slides.length < p.length ? e.slideTo(p.length - 1) : e.slideTo(e.slides.length - 1) return } if (o.freeMode.momentum) { if (h.velocities.length > 1) { const z = h.velocities.pop(), T = h.velocities.pop(), P = z.position - T.position, I = z.time - T.time ;(e.velocity = P / I), (e.velocity /= 2), Math.abs(e.velocity) < o.freeMode.minimumVelocity && (e.velocity = 0), (I > 150 || ee() - z.time > 300) && (e.velocity = 0) } else e.velocity = 0 ;(e.velocity *= o.freeMode.momentumVelocityRatio), (h.velocities.length = 0) let y = 1e3 * o.freeMode.momentumRatio const v = e.velocity * y let m = e.translate + v d && (m = -m) let b = !1, S const A = Math.abs(e.velocity) * 20 * o.freeMode.momentumBounceRatio let O if (m < e.maxTranslate()) o.freeMode.momentumBounce ? (m + e.maxTranslate() < -A && (m = e.maxTranslate() - A), (S = e.maxTranslate()), (b = !0), (h.allowMomentumBounce = !0)) : (m = e.maxTranslate()), o.loop && o.centeredSlides && (O = !0) else if (m > e.minTranslate()) o.freeMode.momentumBounce ? (m - e.minTranslate() > A && (m = e.minTranslate() + A), (S = e.minTranslate()), (b = !0), (h.allowMomentumBounce = !0)) : (m = e.minTranslate()), o.loop && o.centeredSlides && (O = !0) else if (o.freeMode.sticky) { let z for (let T = 0; T < p.length; T += 1) if (p[T] > -m) { z = T break } Math.abs(p[z] - m) < Math.abs(p[z - 1] - m) || e.swipeDirection === 'next' ? (m = p[z]) : (m = p[z - 1]), (m = -m) } if ( (O && r('transitionEnd', () => { e.loopFix() }), e.velocity !== 0) ) { if ( (d ? (y = Math.abs((-m - e.translate) / e.velocity)) : (y = Math.abs((m - e.translate) / e.velocity)), o.freeMode.sticky) ) { const z = Math.abs((d ? -m : m) - e.translate), T = e.slidesSizesGrid[e.activeIndex] z < T ? (y = o.speed) : z < 2 * T ? (y = o.speed * 1.5) : (y = o.speed * 2.5) } } else if (o.freeMode.sticky) { e.slideToClosest() return } o.freeMode.momentumBounce && b ? (e.updateProgress(S), e.setTransition(y), e.setTranslate(m), e.transitionStart(!0, e.swipeDirection), (e.animating = !0), he(l, () => { !e || e.destroyed || !h.allowMomentumBounce || (i('momentumBounce'), e.setTransition(o.speed), setTimeout(() => { e.setTranslate(S), he(l, () => { !e || e.destroyed || e.transitionEnd() }) }, 0)) })) : e.velocity ? (i('_freeModeNoMomentumRelease'), e.updateProgress(m), e.setTransition(y), e.setTranslate(m), e.transitionStart(!0, e.swipeDirection), e.animating || ((e.animating = !0), he(l, () => { !e || e.destroyed || e.transitionEnd() }))) : e.updateProgress(m), e.updateActiveIndex(), e.updateSlidesClasses() } else if (o.freeMode.sticky) { e.slideToClosest() return } else o.freeMode && i('_freeModeNoMomentumRelease') ;(!o.freeMode.momentum || w >= o.longSwipesMs) && (i('_freeModeStaticRelease'), e.updateProgress(), e.updateActiveIndex(), e.updateSlidesClasses()) } Object.assign(e, { freeMode: { onTouchStart: a, onTouchMove: f, onTouchEnd: c }, }) } function Fs(s) { let { swiper: e, extendParams: t, on: i } = s t({ grid: { rows: 1, fill: 'column' } }) let r, a, f, c const n = () => { let g = e.params.spaceBetween return ( typeof g == 'string' && g.indexOf('%') >= 0 ? (g = (parseFloat(g.replace('%', '')) / 100) * e.size) : typeof g == 'string' && (g = parseFloat(g)), g ) }, u = (g) => { const { slidesPerView: w } = e.params, { rows: y, fill: v } = e.params.grid, m = e.virtual && e.params.virtual.enabled ? e.virtual.slides.length : g.length ;(f = Math.floor(m / y)), Math.floor(m / y) === m / y ? (r = m) : (r = Math.ceil(m / y) * y), w !== 'auto' && v === 'row' && (r = Math.max(r, w * y)), (a = r / y) }, o = () => { e.slides && e.slides.forEach((g) => { g.swiperSlideGridSet && ((g.style.height = ''), (g.style[e.getDirectionLabel('margin-top')] = '')) }) }, l = (g, w, y) => { const { slidesPerGroup: v } = e.params, m = n(), { rows: b, fill: S } = e.params.grid, A = e.virtual && e.params.virtual.enabled ? e.virtual.slides.length : y.length let O, z, T if (S === 'row' && v > 1) { const P = Math.floor(g / (v * b)), I = g - b * v * P, C = P === 0 ? v : Math.min(Math.ceil((A - P * b * v) / b), v) ;(T = Math.floor(I / C)), (z = I - T * C + P * v), (O = z + (T * r) / b), (w.style.order = O) } else S === 'column' ? ((z = Math.floor(g / b)), (T = g - z * b), (z > f || (z === f && T === b - 1)) && ((T += 1), T >= b && ((T = 0), (z += 1)))) : ((T = Math.floor(g / a)), (z = g - T * a)) ;(w.row = T), (w.column = z), (w.style.height = `calc((100% - ${(b - 1) * m}px) / ${b})`), (w.style[e.getDirectionLabel('margin-top')] = T !== 0 ? m && `${m}px` : ''), (w.swiperSlideGridSet = !0) }, d = (g, w) => { const { centeredSlides: y, roundLengths: v } = e.params, m = n(), { rows: b } = e.params.grid if ( ((e.virtualSize = (g + m) * r), (e.virtualSize = Math.ceil(e.virtualSize / b) - m), e.params.cssMode || (e.wrapperEl.style[e.getDirectionLabel('width')] = `${ e.virtualSize + m }px`), y) ) { const S = [] for (let A = 0; A < w.length; A += 1) { let O = w[A] v && (O = Math.floor(O)), w[A] < e.virtualSize + w[0] && S.push(O) } w.splice(0, w.length), w.push(...S) } }, p = () => { c = e.params.grid && e.params.grid.rows > 1 }, h = () => { const { params: g, el: w } = e, y = g.grid && g.grid.rows > 1 c && !y ? (w.classList.remove( `${g.containerModifierClass}grid`, `${g.containerModifierClass}grid-column` ), (f = 1), e.emitContainerClasses()) : !c && y && (w.classList.add(`${g.containerModifierClass}grid`), g.grid.fill === 'column' && w.classList.add(`${g.containerModifierClass}grid-column`), e.emitContainerClasses()), (c = y) } i('init', p), i('update', h), (e.grid = { initSlides: u, unsetSlides: o, updateSlide: l, updateWrapperSize: d, }) } function Ns(s) { const e = this, { params: t, slidesEl: i } = e t.loop && e.loopDestroy() const r = (a) => { if (typeof a == 'string') { const f = document.createElement('div') ;(f.innerHTML = a), i.append(f.children[0]), (f.innerHTML = '') } else i.append(a) } if (typeof s == 'object' && 'length' in s) for (let a = 0; a < s.length; a += 1) s[a] && r(s[a]) else r(s) e.recalcSlides(), t.loop && e.loopCreate(), (!t.observer || e.isElement) && e.update() } function Rs(s) { const e = this, { params: t, activeIndex: i, slidesEl: r } = e t.loop && e.loopDestroy() let a = i + 1 const f = (c) => { if (typeof c == 'string') { const n = document.createElement('div') ;(n.innerHTML = c), r.prepend(n.children[0]), (n.innerHTML = '') } else r.prepend(c) } if (typeof s == 'object' && 'length' in s) { for (let c = 0; c < s.length; c += 1) s[c] && f(s[c]) a = i + s.length } else f(s) e.recalcSlides(), t.loop && e.loopCreate(), (!t.observer || e.isElement) && e.update(), e.slideTo(a, 0, !1) } function Ys(s, e) { const t = this, { params: i, activeIndex: r, slidesEl: a } = t let f = r i.loop && ((f -= t.loopedSlides), t.loopDestroy(), t.recalcSlides()) const c = t.slides.length if (s <= 0) { t.prependSlide(e) return } if (s >= c) { t.appendSlide(e) return } let n = f > s ? f + 1 : f const u = [] for (let o = c - 1; o >= s; o -= 1) { const l = t.slides[o] l.remove(), u.unshift(l) } if (typeof e == 'object' && 'length' in e) { for (let o = 0; o < e.length; o += 1) e[o] && a.append(e[o]) n = f > s ? f + e.length : f } else a.append(e) for (let o = 0; o < u.length; o += 1) a.append(u[o]) t.recalcSlides(), i.loop && t.loopCreate(), (!i.observer || t.isElement) && t.update(), i.loop ? t.slideTo(n + t.loopedSlides, 0, !1) : t.slideTo(n, 0, !1) } function Xs(s) { const e = this, { params: t, activeIndex: i } = e let r = i t.loop && ((r -= e.loopedSlides), e.loopDestroy()) let a = r, f if (typeof s == 'object' && 'length' in s) { for (let c = 0; c < s.length; c += 1) (f = s[c]), e.slides[f] && e.slides[f].remove(), f < a && (a -= 1) a = Math.max(a, 0) } else (f = s), e.slides[f] && e.slides[f].remove(), f < a && (a -= 1), (a = Math.max(a, 0)) e.recalcSlides(), t.loop && e.loopCreate(), (!t.observer || e.isElement) && e.update(), t.loop ? e.slideTo(a + e.loopedSlides, 0, !1) : e.slideTo(a, 0, !1) } function qs() { const s = this, e = [] for (let t = 0; t < s.slides.length; t += 1) e.push(t) s.removeSlide(e) } function Ws(s) { let { swiper: e } = s Object.assign(e, { appendSlide: Ns.bind(e), prependSlide: Rs.bind(e), addSlide: Ys.bind(e), removeSlide: Xs.bind(e), removeAllSlides: qs.bind(e), }) } function de(s) { const { effect: e, swiper: t, on: i, setTranslate: r, setTransition: a, overwriteParams: f, perspective: c, recreateShadows: n, getEffectParams: u, } = s i('beforeInit', () => { if (t.params.effect !== e) return t.classNames.push(`${t.params.containerModifierClass}${e}`), c && c() && t.classNames.push(`${t.params.containerModifierClass}3d`) const l = f ? f() : {} Object.assign(t.params, l), Object.assign(t.originalParams, l) }), i('setTranslate', () => { t.params.effect === e && r() }), i('setTransition', (l, d) => { t.params.effect === e && a(d) }), i('transitionEnd', () => { if (t.params.effect === e && n) { if (!u || !u().slideShadows) return t.slides.forEach((l) => { l.querySelectorAll( '.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left' ).forEach((d) => d.remove()) }), n() } }) let o i('virtualUpdate', () => { t.params.effect === e && (t.slides.length || (o = !0), requestAnimationFrame(() => { o && t.slides && t.slides.length && (r(), (o = !1)) })) }) } function ge(s, e) { const t = ne(e) return ( t !== e && ((t.style.backfaceVisibility = 'hidden'), (t.style['-webkit-backface-visibility'] = 'hidden')), t ) } function xe(s) { let { swiper: e, duration: t, transformElements: i, allSlides: r } = s const { activeIndex: a } = e, f = (c) => c.parentElement ? c.parentElement : e.slides.filter( (u) => u.shadowRoot && u.shadowRoot === c.parentNode )[0] if (e.params.virtualTranslate && t !== 0) { let c = !1, n r ? (n = i) : (n = i.filter((u) => { const o = u.classList.contains('swiper-slide-transform') ? f(u) : u return e.getSlideIndex(o) === a })), n.forEach((u) => { he(u, () => { if (c || !e || e.destroyed) return ;(c = !0), (e.animating = !1) const o = new window.CustomEvent('transitionend', { bubbles: !0, cancelable: !0, }) e.wrapperEl.dispatchEvent(o) }) }) } } function _s(s) { let { swiper: e, extendParams: t, on: i } = s t({ fadeEffect: { crossFade: !1 } }), de({ effect: 'fade', swiper: e, on: i, setTranslate: () => { const { slides: f } = e, c = e.params.fadeEffect for (let n = 0; n < f.length; n += 1) { const u = e.slides[n] let l = -u.swiperSlideOffset e.params.virtualTranslate || (l -= e.translate) let d = 0 e.isHorizontal() || ((d = l), (l = 0)) const p = e.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(u.progress), 0) : 1 + Math.min(Math.max(u.progress, -1), 0), h = ge(c, u) ;(h.style.opacity = p), (h.style.transform = `translate3d(${l}px, ${d}px, 0px)`) } }, setTransition: (f) => { const c = e.slides.map((n) => ne(n)) c.forEach((n) => { n.style.transitionDuration = `${f}ms` }), xe({ swiper: e, duration: f, transformElements: c, allSlides: !0 }) }, overwriteParams: () => ({ slidesPerView: 1, slidesPerGroup: 1, watchSlidesProgress: !0, spaceBetween: 0, virtualTranslate: !e.params.cssMode, }), }) } function js(s) { let { swiper: e, extendParams: t, on: i } = s t({ cubeEffect: { slideShadows: !0, shadow: !0, shadowOffset: 20, shadowScale: 0.94, }, }) const r = (n, u, o) => { let l = o ? n.querySelector('.swiper-slide-shadow-left') : n.querySelector('.swiper-slide-shadow-top'), d = o ? n.querySelector('.swiper-slide-shadow-right') : n.querySelector('.swiper-slide-shadow-bottom') l || ((l = J( 'div', `swiper-slide-shadow-cube swiper-slide-shadow-${ o ? 'left' : 'top' }`.split(' ') )), n.append(l)), d || ((d = J( 'div', `swiper-slide-shadow-cube swiper-slide-shadow-${ o ? 'right' : 'bottom' }`.split(' ') )), n.append(d)), l && (l.style.opacity = Math.max(-u, 0)), d && (d.style.opacity = Math.max(u, 0)) } de({ effect: 'cube', swiper: e, on: i, setTranslate: () => { const { el: n, wrapperEl: u, slides: o, width: l, height: d, rtlTranslate: p, size: h, browser: g, } = e, w = Se(e), y = e.params.cubeEffect, v = e.isHorizontal(), m = e.virtual && e.params.virtual.enabled let b = 0, S y.shadow && (v ? ((S = e.wrapperEl.querySelector('.swiper-cube-shadow')), S || ((S = J('div', 'swiper-cube-shadow')), e.wrapperEl.append(S)), (S.style.height = `${l}px`)) : ((S = n.querySelector('.swiper-cube-shadow')), S || ((S = J('div', 'swiper-cube-shadow')), n.append(S)))) for (let O = 0; O < o.length; O += 1) { const z = o[O] let T = O m && (T = parseInt(z.getAttribute('data-swiper-slide-index'), 10)) let P = T * 90, I = Math.floor(P / 360) p && ((P = -P), (I = Math.floor(-P / 360))) const C = Math.max(Math.min(z.progress, 1), -1) let E = 0, x = 0, D = 0 T % 4 == 0 ? ((E = -I * 4 * h), (D = 0)) : (T - 1) % 4 == 0 ? ((E = 0), (D = -I * 4 * h)) : (T - 2) % 4 == 0 ? ((E = h + I * 4 * h), (D = h)) : (T - 3) % 4 == 0 && ((E = -h), (D = 3 * h + h * 4 * I)), p && (E = -E), v || ((x = E), (E = 0)) const G = `rotateX(${w(v ? 0 : -P)}deg) rotateY(${w( v ? P : 0 )}deg) translate3d(${E}px, ${x}px, ${D}px)` C <= 1 && C > -1 && ((b = T * 90 + C * 90), p && (b = -T * 90 - C * 90)), (z.style.transform = G), y.slideShadows && r(z, C, v) } if ( ((u.style.transformOrigin = `50% 50% -${h / 2}px`), (u.style['-webkit-transform-origin'] = `50% 50% -${h / 2}px`), y.shadow) ) if (v) S.style.transform = `translate3d(0px, ${ l / 2 + y.shadowOffset }px, ${-l / 2}px) rotateX(89.99deg) rotateZ(0deg) scale(${ y.shadowScale })` else { const O = Math.abs(b) - Math.floor(Math.abs(b) / 90) * 90, z = 1.5 - (Math.sin((O * 2 * Math.PI) / 360) / 2 + Math.cos((O * 2 * Math.PI) / 360) / 2), T = y.shadowScale, P = y.shadowScale / z, I = y.shadowOffset S.style.transform = `scale3d(${T}, 1, ${P}) translate3d(0px, ${ d / 2 + I }px, ${-d / 2 / P}px) rotateX(-89.99deg)` } const A = (g.isSafari || g.isWebView) && g.needPerspectiveFix ? -h / 2 : 0 ;(u.style.transform = `translate3d(0px,0,${A}px) rotateX(${w( e.isHorizontal() ? 0 : b )}deg) rotateY(${w(e.isHorizontal() ? -b : 0)}deg)`), u.style.setProperty('--swiper-cube-translate-z', `${A}px`) }, setTransition: (n) => { const { el: u, slides: o } = e if ( (o.forEach((l) => { ;(l.style.transitionDuration = `${n}ms`), l .querySelectorAll( '.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left' ) .forEach((d) => { d.style.transitionDuration = `${n}ms` }) }), e.params.cubeEffect.shadow && !e.isHorizontal()) ) { const l = u.querySelector('.swiper-cube-shadow') l && (l.style.transitionDuration = `${n}ms`) } }, recreateShadows: () => { const n = e.isHorizontal() e.slides.forEach((u) => { const o = Math.max(Math.min(u.progress, 1), -1) r(u, o, n) }) }, getEffectParams: () => e.params.cubeEffect, perspective: () => !0, overwriteParams: () => ({ slidesPerView: 1, slidesPerGroup: 1, watchSlidesProgress: !0, resistanceRatio: 0, spaceBetween: 0, centeredSlides: !1, virtualTranslate: !0, }), }) } function ce(s, e, t) { const i = `swiper-slide-shadow${t ? `-${t}` : ''}${ s ? ` swiper-slide-shadow-${s}` : '' }`, r = ne(e) let a = r.querySelector(`.${i.split(' ').join('.')}`) return a || ((a = J('div', i.split(' '))), r.append(a)), a } function Us(s) { let { swiper: e, extendParams: t, on: i } = s t({ flipEffect: { slideShadows: !0, limitRotation: !0 } }) const r = (n, u) => { let o = e.isHorizontal() ? n.querySelector('.swiper-slide-shadow-left') : n.querySelector('.swiper-slide-shadow-top'), l = e.isHorizontal() ? n.querySelector('.swiper-slide-shadow-right') : n.querySelector('.swiper-slide-shadow-bottom') o || (o = ce('flip', n, e.isHorizontal() ? 'left' : 'top')), l || (l = ce('flip', n, e.isHorizontal() ? 'right' : 'bottom')), o && (o.style.opacity = Math.max(-u, 0)), l && (l.style.opacity = Math.max(u, 0)) } de({ effect: 'flip', swiper: e, on: i, setTranslate: () => { const { slides: n, rtlTranslate: u } = e, o = e.params.flipEffect, l = Se(e) for (let d = 0; d < n.length; d += 1) { const p = n[d] let h = p.progress e.params.flipEffect.limitRotation && (h = Math.max(Math.min(p.progress, 1), -1)) const g = p.swiperSlideOffset let y = -180 * h, v = 0, m = e.params.cssMode ? -g - e.translate : -g, b = 0 e.isHorizontal() ? u && (y = -y) : ((b = m), (m = 0), (v = -y), (y = 0)), (p.style.zIndex = -Math.abs(Math.round(h)) + n.length), o.slideShadows && r(p, h) const S = `translate3d(${m}px, ${b}px, 0px) rotateX(${l( v )}deg) rotateY(${l(y)}deg)`, A = ge(o, p) A.style.transform = S } }, setTransition: (n) => { const u = e.slides.map((o) => ne(o)) u.forEach((o) => { ;(o.style.transitionDuration = `${n}ms`), o .querySelectorAll( '.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left' ) .forEach((l) => { l.style.transitionDuration = `${n}ms` }) }), xe({ swiper: e, duration: n, transformElements: u }) }, recreateShadows: () => { e.params.flipEffect, e.slides.forEach((n) => { let u = n.progress e.params.flipEffect.limitRotation && (u = Math.max(Math.min(n.progress, 1), -1)), r(n, u) }) }, getEffectParams: () => e.params.flipEffect, perspective: () => !0, overwriteParams: () => ({ slidesPerView: 1, slidesPerGroup: 1, watchSlidesProgress: !0, spaceBetween: 0, virtualTranslate: !e.params.cssMode, }), }) } function Ks(s) { let { swiper: e, extendParams: t, on: i } = s t({ coverflowEffect: { rotate: 50, stretch: 0, depth: 100, scale: 1, modifier: 1, slideShadows: !0, }, }), de({ effect: 'coverflow', swiper: e, on: i, setTranslate: () => { const { width: f, height: c, slides: n, slidesSizesGrid: u } = e, o = e.params.coverflowEffect, l = e.isHorizontal(), d = e.translate, p = l ? -d + f / 2 : -d + c / 2, h = l ? o.rotate : -o.rotate, g = o.depth, w = Se(e) for (let y = 0, v = n.length; y < v; y += 1) { const m = n[y], b = u[y], S = m.swiperSlideOffset, A = (p - S - b / 2) / b, O = typeof o.modifier == 'function' ? o.modifier(A) : A * o.modifier let z = l ? h * O : 0, T = l ? 0 : h * O, P = -g * Math.abs(O), I = o.stretch typeof I == 'string' && I.indexOf('%') !== -1 && (I = (parseFloat(o.stretch) / 100) * b) let C = l ? 0 : I * O, E = l ? I * O : 0, x = 1 - (1 - o.scale) * Math.abs(O) Math.abs(E) < 0.001 && (E = 0), Math.abs(C) < 0.001 && (C = 0), Math.abs(P) < 0.001 && (P = 0), Math.abs(z) < 0.001 && (z = 0), Math.abs(T) < 0.001 && (T = 0), Math.abs(x) < 0.001 && (x = 0) const D = `translate3d(${E}px,${C}px,${P}px) rotateX(${w( T )}deg) rotateY(${w(z)}deg) scale(${x})`, G = ge(o, m) if ( ((G.style.transform = D), (m.style.zIndex = -Math.abs(Math.round(O)) + 1), o.slideShadows) ) { let M = l ? m.querySelector('.swiper-slide-shadow-left') : m.querySelector('.swiper-slide-shadow-top'), L = l ? m.querySelector('.swiper-slide-shadow-right') : m.querySelector('.swiper-slide-shadow-bottom') M || (M = ce('coverflow', m, l ? 'left' : 'top')), L || (L = ce('coverflow', m, l ? 'right' : 'bottom')), M && (M.style.opacity = O > 0 ? O : 0), L && (L.style.opacity = -O > 0 ? -O : 0) } } }, setTransition: (f) => { e.slides .map((n) => ne(n)) .forEach((n) => { ;(n.style.transitionDuration = `${f}ms`), n .querySelectorAll( '.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left' ) .forEach((u) => { u.style.transitionDuration = `${f}ms` }) }) }, perspective: () => !0, overwriteParams: () => ({ watchSlidesProgress: !0 }), }) } function Zs(s) { let { swiper: e, extendParams: t, on: i } = s t({ creativeEffect: { limitProgress: 1, shadowPerProgress: !1, progressMultiplier: 1, perspective: !0, prev: { translate: [0, 0, 0], rotate: [0, 0, 0], opacity: 1, scale: 1 }, next: { translate: [0, 0, 0], rotate: [0, 0, 0], opacity: 1, scale: 1 }, }, }) const r = (c) => (typeof c == 'string' ? c : `${c}px`) de({ effect: 'creative', swiper: e, on: i, setTranslate: () => { const { slides: c, wrapperEl: n, slidesSizesGrid: u } = e, o = e.params.creativeEffect, { progressMultiplier: l } = o, d = e.params.centeredSlides, p = Se(e) if (d) { const h = u[0] / 2 - e.params.slidesOffsetBefore || 0 n.style.transform = `translateX(calc(50% - ${h}px))` } for (let h = 0; h < c.length; h += 1) { const g = c[h], w = g.progress, y = Math.min( Math.max(g.progress, -o.limitProgress), o.limitProgress ) let v = y d || (v = Math.min( Math.max(g.originalProgress, -o.limitProgress), o.limitProgress )) const m = g.swiperSlideOffset, b = [e.params.cssMode ? -m - e.translate : -m, 0, 0], S = [0, 0, 0] let A = !1 e.isHorizontal() || ((b[1] = b[0]), (b[0] = 0)) let O = { translate: [0, 0, 0], rotate: [0, 0, 0], scale: 1, opacity: 1, } y < 0 ? ((O = o.next), (A = !0)) : y > 0 && ((O = o.prev), (A = !0)), b.forEach((x, D) => { b[D] = `calc(${x}px + (${r(O.translate[D])} * ${Math.abs( y * l )}))` }), S.forEach((x, D) => { let G = O.rotate[D] * Math.abs(y * l) S[D] = G }), (g.style.zIndex = -Math.abs(Math.round(w)) + c.length) const z = b.join(', '), T = `rotateX(${p(S[0])}deg) rotateY(${p(S[1])}deg) rotateZ(${p( S[2] )}deg)`, P = v < 0 ? `scale(${1 + (1 - O.scale) * v * l})` : `scale(${1 - (1 - O.scale) * v * l})`, I = v < 0 ? 1 + (1 - O.opacity) * v * l : 1 - (1 - O.opacity) * v * l, C = `translate3d(${z}) ${T} ${P}` if ((A && O.shadow) || !A) { let x = g.querySelector('.swiper-slide-shadow') if ((!x && O.shadow && (x = ce('creative', g)), x)) { const D = o.shadowPerProgress ? y * (1 / o.limitProgress) : y x.style.opacity = Math.min(Math.max(Math.abs(D), 0), 1) } } const E = ge(o, g) ;(E.style.transform = C), (E.style.opacity = I), O.origin && (E.style.transformOrigin = O.origin) } }, setTransition: (c) => { const n = e.slides.map((u) => ne(u)) n.forEach((u) => { ;(u.style.transitionDuration = `${c}ms`), u.querySelectorAll('.swiper-slide-shadow').forEach((o) => { o.style.transitionDuration = `${c}ms` }) }), xe({ swiper: e, duration: c, transformElements: n, allSlides: !0 }) }, perspective: () => e.params.creativeEffect.perspective, overwriteParams: () => ({ watchSlidesProgress: !0, virtualTranslate: !e.params.cssMode, }), }) } function Qs(s) { let { swiper: e, extendParams: t, on: i } = s t({ cardsEffect: { slideShadows: !0, rotate: !0, perSlideRotate: 2, perSlideOffset: 8, }, }), de({ effect: 'cards', swiper: e, on: i, setTranslate: () => { const { slides: f, activeIndex: c, rtlTranslate: n } = e, u = e.params.cardsEffect, { startTranslate: o, isTouched: l } = e.touchEventsData, d = n ? -e.translate : e.translate for (let p = 0; p < f.length; p += 1) { const h = f[p], g = h.progress, w = Math.min(Math.max(g, -4), 4) let y = h.swiperSlideOffset e.params.centeredSlides && !e.params.cssMode && (e.wrapperEl.style.transform = `translateX(${e.minTranslate()}px)`), e.params.centeredSlides && e.params.cssMode && (y -= f[0].swiperSlideOffset) let v = e.params.cssMode ? -y - e.translate : -y, m = 0 const b = -100 * Math.abs(w) let S = 1, A = -u.perSlideRotate * w, O = u.perSlideOffset - Math.abs(w) * 0.75 const z = e.virtual && e.params.virtual.enabled ? e.virtual.from + p : p, T = (z === c || z === c - 1) && w > 0 && w < 1 && (l || e.params.cssMode) && d < o, P = (z === c || z === c + 1) && w < 0 && w > -1 && (l || e.params.cssMode) && d > o if (T || P) { const x = (1 - Math.abs((Math.abs(w) - 0.5) / 0.5)) ** 0.5 ;(A += -28 * w * x), (S += -0.5 * x), (O += 96 * x), (m = `${-25 * x * Math.abs(w)}%`) } if ( (w < 0 ? (v = `calc(${v}px ${n ? '-' : '+'} (${O * Math.abs(w)}%))`) : w > 0 ? (v = `calc(${v}px ${n ? '-' : '+'} (-${O * Math.abs(w)}%))`) : (v = `${v}px`), !e.isHorizontal()) ) { const x = m ;(m = v), (v = x) } const I = w < 0 ? `${1 + (1 - S) * w}` : `${1 - (1 - S) * w}`, C = ` translate3d(${v}, ${m}, ${b}px) rotateZ(${u.rotate ? (n ? -A : A) : 0}deg) scale(${I}) ` if (u.slideShadows) { let x = h.querySelector('.swiper-slide-shadow') x || (x = ce('cards', h)), x && (x.style.opacity = Math.min( Math.max((Math.abs(w) - 0.5) / 0.5, 0), 1 )) } h.style.zIndex = -Math.abs(Math.round(g)) + f.length const E = ge(u, h) E.style.transform = C } }, setTransition: (f) => { const c = e.slides.map((n) => ne(n)) c.forEach((n) => { ;(n.style.transitionDuration = `${f}ms`), n.querySelectorAll('.swiper-slide-shadow').forEach((u) => { u.style.transitionDuration = `${f}ms` }) }), xe({ swiper: e, duration: f, transformElements: c }) }, perspective: () => !0, overwriteParams: () => ({ watchSlidesProgress: !0, virtualTranslate: !e.params.cssMode, }), }) } const Js = [ Ms, Cs, Ps, Ls, Is, As, zs, Ds, Os, $s, ks, Vs, Gs, Bs, Hs, Fs, Ws, _s, js, Us, Ks, Zs, Qs, ] K.use(Js) var Te = function () { return ( (Te = Object.assign || function (s) { for (var e, t = 1, i = arguments.length; t < i; t++) for (var r in (e = arguments[t])) Object.prototype.hasOwnProperty.call(e, r) && (s[r] = e[r]) return s }), Te.apply(this, arguments) ) }, ei = (function () { function s(e, t, i) { var r = this ;(this.endVal = t), (this.options = i), (this.version = '2.8.0'), (this.defaults = { startVal: 0, decimalPlaces: 0, duration: 2, useEasing: !0, useGrouping: !0, useIndianSeparators: !1, smartEasingThreshold: 999, smartEasingAmount: 333, separator: ',', decimal: '.', prefix: '', suffix: '', enableScrollSpy: !1, scrollSpyDelay: 200, scrollSpyOnce: !1, }), (this.finalEndVal = null), (this.useEasing = !0), (this.countDown = !1), (this.error = ''), (this.startVal = 0), (this.paused = !0), (this.once = !1), (this.count = function (a) { r.startTime || (r.startTime = a) var f = a - r.startTime ;(r.remaining = r.duration - f), r.useEasing ? r.countDown ? (r.frameVal = r.startVal - r.easingFn(f, 0, r.startVal - r.endVal, r.duration)) : (r.frameVal = r.easingFn( f, r.startVal, r.endVal - r.startVal, r.duration )) : (r.frameVal = r.startVal + (r.endVal - r.startVal) * (f / r.duration)) var c = r.countDown ? r.frameVal < r.endVal : r.frameVal > r.endVal ;(r.frameVal = c ? r.endVal : r.frameVal), (r.frameVal = Number( r.frameVal.toFixed(r.options.decimalPlaces) )), r.printValue(r.frameVal), f < r.duration ? (r.rAF = requestAnimationFrame(r.count)) : r.finalEndVal !== null ? r.update(r.finalEndVal) : r.options.onCompleteCallback && r.options.onCompleteCallback() }), (this.formatNumber = function (a) { var f, c, n, u, o = a < 0 ? '-' : '' f = Math.abs(a).toFixed(r.options.decimalPlaces) var l = (f += '').split('.') if ( ((c = l[0]), (n = l.length > 1 ? r.options.decimal + l[1] : ''), r.options.useGrouping) ) { u = '' for (var d = 3, p = 0, h = 0, g = c.length; h < g; ++h) r.options.useIndianSeparators && h === 4 && ((d = 2), (p = 1)), h !== 0 && p % d == 0 && (u = r.options.separator + u), p++, (u = c[g - h - 1] + u) c = u } return ( r.options.numerals && r.options.numerals.length && ((c = c.replace(/[0-9]/g, function (w) { return r.options.numerals[+w] })), (n = n.replace(/[0-9]/g, function (w) { return r.options.numerals[+w] }))), o + r.options.prefix + c + n + r.options.suffix ) }), (this.easeOutExpo = function (a, f, c, n) { return (c * (1 - Math.pow(2, (-10 * a) / n)) * 1024) / 1023 + f }), (this.options = Te(Te({}, this.defaults), i)), (this.formattingFn = this.options.formattingFn ? this.options.formattingFn : this.formatNumber), (this.easingFn = this.options.easingFn ? this.options.easingFn : this.easeOutExpo), (this.startVal = this.validateValue(this.options.startVal)), (this.frameVal = this.startVal), (this.endVal = this.validateValue(t)), (this.options.decimalPlaces = Math.max(this.options.decimalPlaces)), this.resetDuration(), (this.options.separator = String(this.options.separator)), (this.useEasing = this.options.useEasing), this.options.separator === '' && (this.options.useGrouping = !1), (this.el = typeof e == 'string' ? document.getElementById(e) : e), this.el ? this.printValue(this.startVal) : (this.error = '[CountUp] target is null or undefined'), typeof window != 'undefined' && this.options.enableScrollSpy && (this.error ? console.error(this.error, e) : ((window.onScrollFns = window.onScrollFns || []), window.onScrollFns.push(function () { return r.handleScroll(r) }), (window.onscroll = function () { window.onScrollFns.forEach(function (a) { return a() }) }), this.handleScroll(this))) } return ( (s.prototype.handleScroll = function (e) { if (e && window && !e.once) { var t = window.innerHeight + window.scrollY, i = e.el.getBoundingClientRect(), r = i.top + window.pageYOffset, a = i.top + i.height + window.pageYOffset a < t && a > window.scrollY && e.paused ? ((e.paused = !1), setTimeout(function () { return e.start() }, e.options.scrollSpyDelay), e.options.scrollSpyOnce && (e.once = !0)) : (window.scrollY > a || r > t) && !e.paused && e.reset() } }), (s.prototype.determineDirectionAndSmartEasing = function () { var e = this.finalEndVal ? this.finalEndVal : this.endVal this.countDown = this.startVal > e var t = e - this.startVal if ( Math.abs(t) > this.options.smartEasingThreshold && this.options.useEasing ) { this.finalEndVal = e var i = this.countDown ? 1 : -1 ;(this.endVal = e + i * this.options.smartEasingAmount), (this.duration = this.duration / 2) } else (this.endVal = e), (this.finalEndVal = null) this.finalEndVal !== null ? (this.useEasing = !1) : (this.useEasing = this.options.useEasing) }), (s.prototype.start = function (e) { this.error || (this.options.onStartCallback && this.options.onStartCallback(), e && (this.options.onCompleteCallback = e), this.duration > 0 ? (this.determineDirectionAndSmartEasing(), (this.paused = !1), (this.rAF = requestAnimationFrame(this.count))) : this.printValue(this.endVal)) }), (s.prototype.pauseResume = function () { this.paused ? ((this.startTime = null), (this.duration = this.remaining), (this.startVal = this.frameVal), this.determineDirectionAndSmartEasing(), (this.rAF = requestAnimationFrame(this.count))) : cancelAnimationFrame(this.rAF), (this.paused = !this.paused) }), (s.prototype.reset = function () { cancelAnimationFrame(this.rAF), (this.paused = !0), this.resetDuration(), (this.startVal = this.validateValue(this.options.startVal)), (this.frameVal = this.startVal), this.printValue(this.startVal) }), (s.prototype.update = function (e) { cancelAnimationFrame(this.rAF), (this.startTime = null), (this.endVal = this.validateValue(e)), this.endVal !== this.frameVal && ((this.startVal = this.frameVal), this.finalEndVal == null && this.resetDuration(), (this.finalEndVal = null), this.determineDirectionAndSmartEasing(), (this.rAF = requestAnimationFrame(this.count))) }), (s.prototype.printValue = function (e) { var t if (this.el) { var i = this.formattingFn(e) ;( (t = this.options.plugin) === null || t === void 0 ? void 0 : t.render ) ? this.options.plugin.render(this.el, i) : this.el.tagName === 'INPUT' ? (this.el.value = i) : this.el.tagName === 'text' || this.el.tagName === 'tspan' ? (this.el.textContent = i) : (this.el.innerHTML = i) } }), (s.prototype.ensureNumber = function (e) { return typeof e == 'number' && !isNaN(e) }), (s.prototype.validateValue = function (e) { var t = Number(e) return this.ensureNumber(t) ? t : ((this.error = '[CountUp] invalid start or end value: '.concat( e )), null) }), (s.prototype.resetDuration = function () { ;(this.startTime = null), (this.duration = 1e3 * Number(this.options.duration)), (this.remaining = this.duration) }), s ) })() function ti() { const s = document.querySelector('.header') function e() { window.scrollY > 0 ? s.classList.add('fixed') : s.classList.remove('fixed') } e(), window.addEventListener('scroll', e) } function si() { document.querySelectorAll('.swiper-step').length && document.querySelectorAll('.swiper-step').forEach((s) => { new K(s, { loop: !1, slidesPerView: 'auto', spaceBetween: 15, scrollbar: { el: '.swiper-scrollbar', draggable: !0 }, breakpoints: { 768: { slidesPerView: 'auto', spaceBetween: 36 } }, }) }), document.querySelectorAll('.blog-swiper').length && document.querySelectorAll('.blog-swiper').forEach((s) => { const e = s.closest('.section-article'), t = e == null ? void 0 : e.querySelector('.swiper-prev'), i = e == null ? void 0 : e.querySelector('.swiper-next') new K(s, { loop: !0, slidesPerView: 1, spaceBetween: 15, breakpoints: { 768: { slidesPerView: 2, spaceBetween: 20 }, 1024: { slidesPerView: 3, spaceBetween: 20 }, 1200: { slidesPerView: 3, spaceBetween: 36 }, }, navigation: { nextEl: i, prevEl: t }, }) }) } function ii() { document.querySelectorAll('.tab-block').length && document.querySelectorAll('.tab-block').forEach((s) => { var c, n const e = s.querySelectorAll('.tab-link'), t = s.querySelectorAll('.tab'), i = s.querySelectorAll('.acc-drop'), r = s.querySelectorAll('.acc-link') let a = 0 ;(c = e[a]) == null || c.classList.add('active'), (n = t[a]) == null || n.classList.add('active') function f() { i.forEach((u) => { u.style.setProperty('--height', u.scrollHeight + 'px') }) } f(), window.addEventListener('resize', f), e.forEach((u, o) => { u.addEventListener('click', (l) => { var d, p l.preventDefault(), a != o && ((d = e[a]) == null || d.classList.remove('active'), (p = t[a]) == null || p.classList.remove('active')), (a = o), u.classList.add('active'), t[o].classList.add('active') }) }), r.forEach((u, o) => { u.addEventListener('click', (l) => { var d l.preventDefault(), a != o && ((d = t[a]) == null || d.classList.remove('acc-active')), (a = o), t[o].classList.toggle('acc-active') }) }) }) } function ri() { document.querySelectorAll('.acc-block').length && document.querySelectorAll('.acc-block').forEach((s) => { var f const e = s.querySelectorAll('.acc-item'), t = s.querySelectorAll('.acc-slide'), i = s.querySelectorAll('.acc-opener') let r = 0 ;(f = e[r]) == null || f.classList.add('active') function a() { t.forEach((c) => { c.style.setProperty('--height', c.scrollHeight + 'px') }) } a(), window.addEventListener('resize', a), i.forEach((c, n) => { c.addEventListener('click', (u) => { var o u.preventDefault(), r != n && ((o = e[r]) == null || o.classList.remove('acc-active')), (r = n), e[n].classList.toggle('acc-active') }) }) }) } function ai() { const s = document.querySelector('.nav-opener'), e = document.body s == null || s.addEventListener('click', (t) => { t.preventDefault(), e.classList.toggle('nav-active') }) } function ni() { document.querySelectorAll('.counterup').forEach((e) => { const t = new ei(e, e.innerText, { enableScrollSpy: !0, startVal: 0, scrollSpyOnce: !0, }) t.error ? console.error(t.error) : t.start() }) } document.addEventListener('DOMContentLoaded', function () { document.body.classList.add('loaded'), ii(), ri(), si(), ai(), ti(), ni(), li() }) function li() { jQuery('.error-block') && jQuery('.error-block').closest('.section').css('display', 'none'), jQuery('.paging').on('click', 'a', function () { const s = jQuery(this) setTimeout(function () { console.log(s.closest('.section').offset().top), jQuery('body, html').animate({ scrollTop: s.closest('.section').offset().top, }) }, 200) }) } })