Galaxy Watch5 Pro
Get a guaranteed £100 off when you trade in any smartwatch
BUY NOW
PRE-ORDER
PRE-REGISTRATION

*Image simulated for illustrative purpose. Galaxy Watch5 Pro has been tested under lab conditions by a third party for dust-resistance: 2kgs of talc powder (max. diameter of 0.05mm) per cubic meter was blown into a test chamber housing the device (air pressure within device kept below surrounding air) for 2 hours. Rated IP68. Dust-resistance may vary by actual usage conditions.
Galaxy Watch5 Pro
"If you want the best battery life, the Watch5 Pro could be the one to go for"
Techspurt
Chris Barraclough
08/2022
Galaxy Watch5 Pro
"Sapphire crystal increased the scratch-resistant level"
Sammobile
Benjamin Aboagye
08/2022
Galaxy Watch5
"It is the best Android watch you can buy right now"
CNET
Lexy Savvides
08/2022
Galaxy Watch5
"The benchmark for Android smartwatches"
PCMag
Angela Moscaritolo
08/2022
Reprinted with permission. © 2022 Ziff Davis, LLC. All Rights Reserved.
- Stay on track with Route Workout 1
- 2x tougher Sapphire crystal 2
- Biggest battery in our wearable series
- The smartwatch designed for adventurers
EXPLORATION
Your guide to adventure
ROUTE WORKOUT
Turn by turn
track your burn
The all-new Route Workout feature lets you import GPX format workout routes from your smartphone to your watch, syncing your route list. 1
Go the distance, then use Track Back to return right back where you started. Staying on track is easy thanks to voice or vibration-guided turn-by-turn navigation for cyclists and hikers.
BATTERY
Power through your workout
Go hard knowing that your watch can keep up, with the biggest battery capacity among our wearable series. 4, 5
590 mAh (typical) Battery
A Titanium Galaxy Watch5 Pro in black showing the time as '10:08', date as 'SAT 28', weather, and heart rate on the watch face.
HEALTH MONITORING
Ready. Set. Goals
BIOACTIVE SENSOR
Never miss a beat
The powerful 3-in-1 Samsung BioActive Sensor controls three health sensors effectively, Optical Heart Rate, Electrical Heart, and Bioelectrical Impedance Analysis.
Monitor your heart rate and track your cardiovascular health to detect unusual heart rates and blood pressure.
The BioActive Sensor can record your blood pressure, helping you manage high or low blood pressure. 6, 7
Let's see what you're made of
Manage your body from the inside out with body fat percentage (BIA) to skeletal muscle weight insights. All the personal feedback you need to stay on track. 6
FITNESS
Watch the
gains add up
Count steps, calories, and more. Your watch will detect physical activity to track your routines — supporting over 90 exercises. Then, check your progress on your device. 6
A Titan Galaxy Watch5 Pro showing duration, distance, speed, and heart rate on the watch face. There is a person mountain biking down a hill wearing the Watch5 Pro.
SLEEP TRACKING
Sleep tracking from A to Zzz
Our improved sleep tracking technology tracks your sleep stages to help you create healthier sleep habits and identify your sleep type via 8 animal sleep symbols. You'll also receive nightly sleep reports, so you can rest easy. 6, 8
A Titan Galaxy Watch5 Pro shows the sleep time and sleep score at first and then shows a sleep dashboard indicating the sleep stages: Awake, REM, Light, and Deep. After that, it shows the sleep time and calories burned.
PERFORMANCE
Born to Perform
DURABILITY
Stronger than your toughest workout
Sapphire Crystal
Titanium case
Water-resistant
A Galaxy Watch5 Pro with a Black Titanium case is displaying a cycling function on the watch face.
Now 2x tougher front display than Galaxy Watch4 thanks to Sapphire crystal. It even looks indestructible with Black Titanium or Gray Titanium body to take the big hits. 9, 10
WEAR OS
Tap into the power of Google
Everything you need in the palm of your hand - well, actually on your wrist. The stand-alone Wear OS makes installing applications like Google Maps or Youtube Music easy.
A Galaxy Watch5 Pro device displaying app logos on the watch face.
SMART SWITCH
New watch. Same data
Keep your previous Galaxy Watch4 series data.14
MAKE THE SWITCH
Two Galaxy Watches facing each other. At the top is a Black Galaxy Watch4 with a black band and a green time display. The bottom Gray Galaxy Watch5 Pro with a white time display. Between the two watches is the Smart Switch logo.
DESIGN
It's about
time
a watch looked this good
GO TO GALAXY WATCH5
COLOUR | MATERIAL
Perfect for a run or the runway
Forged with a premium Titanium body and a stunning Sapphire crystal. The Galaxy Watch5 Pro stuns with classic colours and premium styling for a timeless timepiece.
BESPOKE STUDIO
Get your way
Enter the studio and customise from a range of new bands and styles to match your unique look. Mix and match with different combinations only on samsung.com.
GO TO BESPOKE STUDIO
WATCH FACE
Face every challenge
Analog to digital, vintage to modern, select a watch face to help you face the day. Pick from the classic set or from the various watch faces.
Analog to digital, vintage to modern, select a watch face to help you face the day. Pick from the classic set or from the various watch faces.
COMPARE
It's time
to find
your watch
-
Galaxy Watch5
(Video) Samsung Galaxy Watch 5 PRO Review - Must Watch before you buy? - NEW Champion Crowned?Size
44mm | 40mm
Weight
33.5g | 28.7g
Display
Sapphire crystal
Material
Armor Aluminum
Battery(typical) 4, 5
410mAh | 284mAh
Sleep tracking
Body Composition
Route workout / Track back
Durability
5ATM+IP68/MIL-STD-810H
Fast charge 13
-
Galaxy Watch5 Pro
Size
45mm
Weight
46.5g
Display
Sapphire crystal
Material
Titanium
Battery(typical) 4, 5
590mAh
Sleep tracking
Body Composition
Route workout / Track back
Durability
5ATM+IP68/MIL-STD-810H
Fast charge 13
-
Galaxy Watch4
Size
44mm | 40mm
Weight
30.3g | 25.9g
Display
Corning® Gorilla® Glass with DX+
Material
Armor Aluminum
Battery(typical) 4
361mAh | 247mAh
Sleep tracking
Body Composition
Route workout / Track back
Durability
5ATM+IP68/MIL-STD-810H
Fast charge
(Video) Samsung Galaxy Watch5 Pro Review for Sports and Fitness // Is it “Pro?” -
Galaxy Watch4 Classic
Size
46mm | 42mm
Weight
52.0g | 46.5g
Display
Corning® Gorilla® Glass with DX+
Material
Stainless Steel
Battery(typical) 4
361mAh | 247mAh
Sleep tracking
Body Composition
Route workout / Track back
Durability
5ATM+IP68/MIL-STD-810H
Fast charge
Galaxy Watch5 Pro
Galaxy Watch5
Galaxy Watch4
Galaxy Watch4 Classic
Size
44mm | 40mm
Size
45mm
Size
44mm | 40mm
Size
46mm | 42mm
Weight
33.5g | 28.7g
Weight
46.5g
Weight
30.3g | 25.9g
Weight
52.0g | 46.5g
Display
Sapphire crystal
Display
Sapphire crystal
Display
Corning® Gorilla® Glass with DX+
Display
Corning® Gorilla® Glass with DX+
Material
Armor Aluminum
Material
Titanium
Material
Armor Aluminum
Material
Stainless Steel
Battery(typical) 4, 5
410mAh | 284mAh
Battery(typical) 4, 5
590mAh
Battery(typical) 4
361mAh | 247mAh
Battery(typical) 4
361mAh | 247mAh
Sleep tracking
Sleep tracking
Sleep tracking
Sleep tracking
Body Composition
Body Composition
Body Composition
Body Composition
Route workout / Track back
Route workout / Track back
Route workout / Track back
Route workout / Track back
Durability
5ATM+IP68/MIL-STD-810H
Durability
5ATM+IP68/MIL-STD-810H
Durability
5ATM+IP68/MIL-STD-810H
Durability
5ATM+IP68/MIL-STD-810H
Fast charge 13
Fast charge 13
Fast charge
Fast charge
ECOSYSTEM
The connected power of Samsung Galaxy
Galaxy Z Flip4
LEARN MORE
BUY NOW
Galaxy Z Fold4
LEARN MORE
BUY NOW
Galaxy Watch5
LEARN MORE
BUY NOW
Galaxy Buds2 Pro
BUY NOW
C C
- Provided when GPX format route file is imported for hiking and cycling and route is set as target under Samsung Health settings.
- Compared to Galaxy Watch4 based on Vickers hardness measured with constant load of 200fg.
- Track Back feature must be requires to be enabled during every hiking or cycling workout under Samsung Health settings.
- Actual battery life varies by network environment, features and applications used, frequency of calls and messages, number of times charged, and many other factors.
- The typical capacity has been tested under third party laboratory conditions. The typical capacity is the estimated average capacity considering the deviation in battery capacity among the battery samples tested under the IEC 61960-3 standard. The rated capacity is 573mAh for Galaxy Watch5 Pro, 398mAh for Galaxy Watch5 Large, and 276mAh for Galaxy Watch5 Small. Actual battery life may vary depending on the network environment, usage patterns, and other factors.
- Intended for general wellness and fitness purposes only. Not intended for use in detection, diagnosis, treatment, monitoring or management of any medical condition or disease. Any health-related information accessed through the device and/or application should not be treated as medical advice. Users should seek any medical advice from a physician. DO NOT measure your body composition if you are pregnant, have an implanted pacemaker or other implanted medical devices.
- ECG and BP feature only to be used by 22 years+. For accurate BP readings, a calibration is required every 4 weeks by BP monitor & arm cuff. Requires a Galaxy smartphone running Android 7.0 or above. Blood pressure feature is not intended for use in the diagnosis of disease or other conditions, or in the cure, mitigation, treatment or prevention of disease. Users should measure their blood pressure when at rest, as they would do with a traditional cuff, and refrain from measuring when they are working out, smoking, or drinking. ECG and blood pressure feature may vary by country or region. Due to country restrictions in obtaining approval/registration as a medical device, ECG and blood pressure only work on watches and smartphones purchased in the countries where service is currently available (however, service may be restricted when users travel to non-service countries).
- Requires Samsung Health application version 6.22.1 or later. Requires Samsung Galaxy Phone with Android 8.0 and a minimum 1.5GB RAM.
- Based on Vickers hardness measured with constant load of 200fg. Galaxy Watch5 has a water resistance rating of 50 meters under the ISO standard 22810:2010. It is not suitable for diving or high-pressure water activities. If the device or your hands are wet, they must be dried thoroughly prior to handling.
- The image above is a simulation of the compass feature for illustrative purposes. Screen configuration may vary depending on settings, SW version and is subject to change.
- Compatible with Galaxy Watch with Wear OS powered by Samsung.
- Availability of settings backup and restore options may vary based on installed applications.
- Testing conducted by Samsung using preproduction Galaxy Watch5 (BT & LTE), each paired with a Samsung phone; all devices tested with prerelease software, Galaxy Watch Magnetic Fast Charging USB-C Cable (EP-OR900), and Samsung 25W USB-C Power.
- Compatible with Galaxy Watch in Wear OS powered by Samsung. Requires pairing with smartphone with latest version of Smart Switch installed. Data and content available for transfer may vary by OS.
" ) return ( e.attr("data-swiper-slide-index") || e.attr("data-swiper-slide-index", t), i.cache && (this.virtual.cache[t] = e), e ) }, appendSlide: function (e) { if ("object" == typeof e && "length" in e) for (var t = 0; t < e.length; t += 1) e[t] && this.virtual.slides.push(e[t]) else this.virtual.slides.push(e) this.virtual.update(!0) }, prependSlide: function (e) { var s, a, t = this.activeIndex, i = t + 1, n = 1 if (Array.isArray(e)) { for (var o = 0; o < e.length; o += 1) e[o] && this.virtual.slides.unshift(e[o]) ;(i = t + e.length), (n = e.length) } else this.virtual.slides.unshift(e) this.params.virtual.cache && ((s = this.virtual.cache), (a = {}), Object.keys(s).forEach(function (e) { var t = s[e], i = t.attr("data-swiper-slide-index") i && t.attr("data-swiper-slide-index", parseInt(i, 10) + 1), (a[parseInt(e, 10) + n] = t) }), (this.virtual.cache = a)), this.virtual.update(!0), this.slideTo(i, 0) }, removeSlide: function (e) { if (null != e) { var t = this.activeIndex if (Array.isArray(e)) for (var i = e.length - 1; 0 <= i; --i) this.virtual.slides.splice(e[i], 1), this.params.virtual.cache && delete this.virtual.cache[e[i]], e[i] < t && --t, (t = Math.max(t, 0)) else this.virtual.slides.splice(e, 1), this.params.virtual.cache && delete this.virtual.cache[e], e < t && --t, (t = Math.max(t, 0)) this.virtual.update(!0), this.slideTo(t, 0) } }, removeAllSlides: function () { ;(this.virtual.slides = []), this.params.virtual.cache && (this.virtual.cache = {}), this.virtual.update(!0), this.slideTo(0, 0) }, }, b = { name: "virtual", params: { virtual: { enabled: !1, slides: [], cache: !0, renderSlide: null, renderExternal: null, addSlidesBefore: 0, addSlidesAfter: 0, }, }, create: function () { U.extend(this, { virtual: { update: w.update.bind(this), appendSlide: w.appendSlide.bind(this), prependSlide: w.prependSlide.bind(this), removeSlide: w.removeSlide.bind(this), removeAllSlides: w.removeAllSlides.bind(this), renderSlide: w.renderSlide.bind(this), slides: this.params.virtual.slides, cache: {}, }, }) }, on: { beforeInit: function () { var e this.params.virtual.enabled && (this.classNames.push( this.params.containerModifierClass + "virtual" ), U.extend(this.params, (e = { watchSlidesProgress: !0 })), U.extend(this.originalParams, e), this.params.initialSlide || this.virtual.update()) }, setTranslate: function () { this.params.virtual.enabled && this.virtual.update() }, }, }, K = { handle: function (e) { var t = this.rtlTranslate, i = (e = e.originalEvent ? e.originalEvent : e).keyCode || e.charCode if ( !this.allowSlideNext && ((this.isHorizontal() && 39 === i) || (this.isVertical() && 40 === i) || 34 === i) ) return !1 if ( !this.allowSlidePrev && ((this.isHorizontal() && 37 === i) || (this.isVertical() && 38 === i) || 33 === i) ) return !1 if ( !( e.shiftKey || e.altKey || e.ctrlKey || e.metaKey || (h.activeElement && h.activeElement.nodeName && ("input" === h.activeElement.nodeName.toLowerCase() || "textarea" === h.activeElement.nodeName.toLowerCase())) ) ) { if ( this.params.keyboard.onlyInViewport && (33 === i || 34 === i || 37 === i || 39 === i || 38 === i || 40 === i) ) { var s = !1 if ( 0 < this.$el.parents("." + this.params.slideClass).length && 0 === this.$el.parents("." + this.params.slideActiveClass).length ) return var a = j.innerWidth, n = j.innerHeight, o = this.$el.offset() t && (o.left -= this.$el[0].scrollLeft) for ( var r = [ [o.left, o.top], [o.left + this.width, o.top], [o.left, o.top + this.height], [o.left + this.width, o.top + this.height], ], l = 0; l < r.length; l += 1 ) { var c = r[l] 0 <= c[0] && c[0] <= a && 0 <= c[1] && c[1] <= n && (s = !0) } if (!s) return } this.isHorizontal() ? ((33 !== i && 34 !== i && 37 !== i && 39 !== i) || (e.preventDefault ? e.preventDefault() : (e.returnValue = !1)), (((34 !== i && 39 !== i) || t) && ((33 !== i && 37 !== i) || !t)) || this.slideNext(), (((33 !== i && 37 !== i) || t) && ((34 !== i && 39 !== i) || !t)) || this.slidePrev()) : ((33 !== i && 34 !== i && 38 !== i && 40 !== i) || (e.preventDefault ? e.preventDefault() : (e.returnValue = !1)), (34 !== i && 40 !== i) || this.slideNext(), (33 !== i && 38 !== i) || this.slidePrev()), this.emit("keyPress", i) } }, enable: function () { this.keyboard.enabled || (T(h).on("keydown", this.keyboard.handle), (this.keyboard.enabled = !0)) }, disable: function () { this.keyboard.enabled && (T(h).off("keydown", this.keyboard.handle), (this.keyboard.enabled = !1)) }, }, E = { name: "keyboard", params: { keyboard: { enabled: !1, onlyInViewport: !0 } }, create: function () { U.extend(this, { keyboard: { enabled: !1, enable: K.enable.bind(this), disable: K.disable.bind(this), handle: K.handle.bind(this), }, }) }, on: { init: function () { this.params.keyboard.enabled && this.keyboard.enable() }, destroy: function () { this.keyboard.enabled && this.keyboard.disable() }, }, } function S() { for (var i, e = [], t = arguments.length; t--; ) e[t] = arguments[t] ;(i = (i = 1 === e.length && e[0].constructor && e[0].constructor === Object ? e[0] : ((n = e[0]), e[1])) || {}), (i = U.extend({}, i)), n && !i.el && (i.el = n), d.call(this, i), Object.keys(G).forEach(function (t) { Object.keys(G[t]).forEach(function (e) { S.prototype[e] || (S.prototype[e] = G[t][e]) }) }) var s, a, n, o = this, r = (void 0 === o.modules && (o.modules = {}), Object.keys(o.modules).forEach(function (e) { var t, e = o.modules[e] e.params && ((t = Object.keys(e.params)[0]), "object" == typeof (e = e.params[t]) && null !== e && t in i && "enabled" in e && (!0 === i[t] && (i[t] = { enabled: !0 }), "object" != typeof i[t] || "enabled" in i[t] || (i[t].enabled = !0), i[t] || (i[t] = { enabled: !1 }))) }), U.extend({}, W)), l = (o.useModulesParams(r), (o.params = U.extend({}, r, F, i)), (o.originalParams = U.extend({}, o.params)), (o.passedParams = U.extend({}, i)), (o.$ = T)(o.params.el)) if ((n = l[0])) return 1 < l.length ? ((s = []), l.each(function (e, t) { t = U.extend({}, i, { el: t }) s.push(new S(t)) }), s) : ((n.swiper = o), l.data("swiper", o), n && n.shadowRoot && n.shadowRoot.querySelector ? ((a = T( n.shadowRoot.querySelector("." + o.params.wrapperClass) )).children = function (e) { return l.children(e) }) : (a = l.children("." + o.params.wrapperClass)), U.extend(o, { $el: l, el: n, $wrapperEl: a, wrapperEl: a[0], classNames: [], slides: T(), slidesGrid: [], snapGrid: [], slidesSizesGrid: [], isHorizontal: function () { return "horizontal" === o.params.direction }, isVertical: function () { return "vertical" === o.params.direction }, rtl: "rtl" === n.dir.toLowerCase() || "rtl" === l.css("direction"), rtlTranslate: "horizontal" === o.params.direction && ("rtl" === n.dir.toLowerCase() || "rtl" === l.css("direction")), wrongRTL: "-webkit-box" === a.css("display"), activeIndex: 0, realIndex: 0, isBeginning: !0, isEnd: !1, translate: 0, previousTranslate: 0, progress: 0, velocity: 0, animating: !1, allowSlideNext: o.params.allowSlideNext, allowSlidePrev: o.params.allowSlidePrev, touchEvents: ((r = y.pointerEvents ? ["pointerdown", "pointermove", "pointerup"] : ["mousedown", "mousemove", "mouseup"]), (o.touchEventsTouch = { start: (n = [ "touchstart", "touchmove", "touchend", "touchcancel", ])[0], move: n[1], end: n[2], cancel: n[3], }), (o.touchEventsDesktop = { start: r[0], move: r[1], end: r[2], }), y.touch || !o.params.simulateTouch ? o.touchEventsTouch : o.touchEventsDesktop), 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, formElements: "input, select, option, textarea, button, video", lastClickTime: U.now(), clickTimeout: void 0, velocities: [], allowMomentumBounce: void 0, isTouchEvent: void 0, startMoving: void 0, }, allowClick: !0, allowTouchMove: o.params.allowTouchMove, touches: { startX: 0, startY: 0, currentX: 0, currentY: 0, diff: 0, }, imagesToLoad: [], imagesLoaded: 0, }), o.useModules(), o.params.init && o.init(), o) } var C = { lastScrollTime: U.now(), lastEventBeforeSnap: void 0, recentWheelEvents: [], event: function () { return -1 < j.navigator.userAgent.indexOf("firefox") ? "DOMMouseScroll" : ((t = "onwheel" in h) || ((e = h.createElement("div")).setAttribute( "onwheel", "return;" ), (t = "function" == typeof e.onwheel)), (t = !t && h.implementation && h.implementation.hasFeature && !0 !== h.implementation.hasFeature("", "") ? h.implementation.hasFeature("Events.wheel", "3.0") : t) ? "wheel" : "mousewheel") var e, t }, normalize: function (e) { var t = 0, i = 0, s = 0, a = 0 return ( "detail" in e && (i = e.detail), "wheelDelta" in e && (i = -e.wheelDelta / 120), "wheelDeltaY" in e && (i = -e.wheelDeltaY / 120), "wheelDeltaX" in e && (t = -e.wheelDeltaX / 120), "axis" in e && e.axis === e.HORIZONTAL_AXIS && ((t = i), (i = 0)), (s = 10 * t), (a = 10 * i), "deltaY" in e && (a = e.deltaY), "deltaX" in e && (s = e.deltaX), e.shiftKey && !s && ((s = a), (a = 0)), (s || a) && e.deltaMode && (1 === e.deltaMode ? ((s *= 40), (a *= 40)) : ((s *= 800), (a *= 800))), { spinX: (t = s && !t ? (s < 1 ? -1 : 1) : t), spinY: (i = a && !i ? (a < 1 ? -1 : 1) : i), pixelX: s, pixelY: a, } ) }, handleMouseEnter: function () { this.mouseEntered = !0 }, handleMouseLeave: function () { this.mouseEntered = !1 }, handle: function (e) { var t = e, i = this, s = i.params.mousewheel if ( (i.params.cssMode && t.preventDefault(), !i.mouseEntered && !s.releaseOnEdges) ) return !0 t.originalEvent && (t = t.originalEvent) var a = 0, n = i.rtlTranslate ? -1 : 1, o = C.normalize(t) if (s.forceToAxis) if (i.isHorizontal()) { if (!(Math.abs(o.pixelX) > Math.abs(o.pixelY))) return !0 a = o.pixelX * n } else { if (!(Math.abs(o.pixelY) > Math.abs(o.pixelX))) return !0 a = o.pixelY } else a = Math.abs(o.pixelX) > Math.abs(o.pixelY) ? -o.pixelX * n : -o.pixelY if (0 === a) return !0 if ((s.invert && (a = -a), i.params.freeMode)) { var r = { time: U.now(), delta: Math.abs(a), direction: Math.sign(a), }, n = i.mousewheel.lastEventBeforeSnap, o = n && r.time < n.time + 500 && r.delta <= n.delta && r.direction === n.direction if (!o) { ;(i.mousewheel.lastEventBeforeSnap = void 0), i.params.loop && i.loopFix() var l, c, n = i.getTranslate() + a * s.sensitivity, s = i.isBeginning, d = i.isEnd if ( ((n = n >= i.minTranslate() ? i.minTranslate() : n) <= i.maxTranslate() && (n = i.maxTranslate()), i.setTransition(0), i.setTranslate(n), i.updateProgress(), i.updateActiveIndex(), i.updateSlidesClasses(), ((!s && i.isBeginning) || (!d && i.isEnd)) && i.updateSlidesClasses(), i.params.freeModeSticky && (clearTimeout(i.mousewheel.timeout), (i.mousewheel.timeout = void 0), 15 <= (l = i.mousewheel.recentWheelEvents).length && l.shift(), (s = l.length ? l[l.length - 1] : void 0), (d = l[0]), l.push(r), s && (r.delta > s.delta || r.direction !== s.direction) ? l.splice(0) : 15 <= l.length && r.time - d.time < 500 && 1 <= d.delta - r.delta && r.delta <= 6 && ((c = 0 < a ? 0.8 : 0.2), (i.mousewheel.lastEventBeforeSnap = r), l.splice(0), (i.mousewheel.timeout = U.nextTick(function () { i.slideToClosest(i.params.speed, !0, void 0, c) }, 0))), i.mousewheel.timeout || (i.mousewheel.timeout = U.nextTick(function () { ;(i.mousewheel.lastEventBeforeSnap = r), l.splice(0), i.slideToClosest(i.params.speed, !0, void 0, 0.5) }, 500))), o || i.emit("scroll", t), i.params.autoplay && i.params.autoplayDisableOnInteraction && i.autoplay.stop(), n === i.minTranslate() || n === i.maxTranslate()) ) return !0 } } else { ;(s = { time: U.now(), delta: Math.abs(a), direction: Math.sign(a), raw: e, }), (d = i.mousewheel.recentWheelEvents), (o = (2 <= d.length && d.shift(), d.length ? d[d.length - 1] : void 0)) if ( (d.push(s), (!o || s.direction !== o.direction || s.delta > o.delta) && i.mousewheel.animateSlider(s), i.mousewheel.releaseScroll(s)) ) return !0 } return ( t.preventDefault ? t.preventDefault() : (t.returnValue = !1), !1 ) }, animateSlider: function (e) { return ( (6 <= e.delta && U.now() - this.mousewheel.lastScrollTime < 60) || (e.direction < 0 ? (this.isEnd && !this.params.loop) || this.animating || (this.slideNext(), this.emit("scroll", e.raw)) : (this.isBeginning && !this.params.loop) || this.animating || (this.slidePrev(), this.emit("scroll", e.raw)), (this.mousewheel.lastScrollTime = new j.Date().getTime()), !1) ) }, releaseScroll: function (e) { var t = this.params.mousewheel if (e.direction < 0) { if (this.isEnd && !this.params.loop && t.releaseOnEdges) return !0 } else if ( this.isBeginning && !this.params.loop && t.releaseOnEdges ) return !0 return !1 }, enable: function () { var e = C.event() if (this.params.cssMode) return ( this.wrapperEl.removeEventListener(e, this.mousewheel.handle), !0 ) if (!e) return !1 if (this.mousewheel.enabled) return !1 var t = this.$el return ( (t = "container" !== this.params.mousewheel.eventsTarged ? T(this.params.mousewheel.eventsTarged) : t).on("mouseenter", this.mousewheel.handleMouseEnter), t.on("mouseleave", this.mousewheel.handleMouseLeave), t.on(e, this.mousewheel.handle), (this.mousewheel.enabled = !0) ) }, disable: function () { var e = C.event() if (this.params.cssMode) return ( this.wrapperEl.addEventListener(e, this.mousewheel.handle), !0 ) if (!e) return !1 if (!this.mousewheel.enabled) return !1 var t = this.$el return ( (t = "container" !== this.params.mousewheel.eventsTarged ? T(this.params.mousewheel.eventsTarged) : t).off(e, this.mousewheel.handle), !(this.mousewheel.enabled = !1) ) }, }, L = { update: function () { var e, t, i = this.params.navigation this.params.loop || ((e = (t = this.navigation).$nextEl), (t = t.$prevEl) && 0 < t.length && (this.isBeginning ? t.addClass(i.disabledClass) : t.removeClass(i.disabledClass), t[ this.params.watchOverflow && this.isLocked ? "addClass" : "removeClass" ](i.lockClass)), e && 0 < e.length && (this.isEnd ? e.addClass(i.disabledClass) : e.removeClass(i.disabledClass), e[ this.params.watchOverflow && this.isLocked ? "addClass" : "removeClass" ](i.lockClass))) }, onPrevClick: function (e) { e.preventDefault(), (this.isBeginning && !this.params.loop) || this.slidePrev() }, onNextClick: function (e) { e.preventDefault(), (this.isEnd && !this.params.loop) || this.slideNext() }, init: function () { var e, t, i = this.params.navigation ;(i.nextEl || i.prevEl) && (i.nextEl && ((e = T(i.nextEl)), this.params.uniqueNavElements && "string" == typeof i.nextEl && 1 < e.length && 1 === this.$el.find(i.nextEl).length && (e = this.$el.find(i.nextEl))), i.prevEl && ((t = T(i.prevEl)), this.params.uniqueNavElements && "string" == typeof i.prevEl && 1 < t.length && 1 === this.$el.find(i.prevEl).length && (t = this.$el.find(i.prevEl))), e && 0 < e.length && e.on("click", this.navigation.onNextClick), t && 0 < t.length && t.on("click", this.navigation.onPrevClick), U.extend(this.navigation, { $nextEl: e, nextEl: e && e[0], $prevEl: t, prevEl: t && t[0], })) }, destroy: function () { var e = this.navigation, t = e.$nextEl, e = e.$prevEl t && t.length && (t.off("click", this.navigation.onNextClick), t.removeClass(this.params.navigation.disabledClass)), e && e.length && (e.off("click", this.navigation.onPrevClick), e.removeClass(this.params.navigation.disabledClass)) }, }, k = { update: function () { var e = this.rtl, s = this.params.pagination if ( s.el && this.pagination.el && this.pagination.$el && 0 !== this.pagination.$el.length ) { var a, t = ( this.virtual && this.params.virtual.enabled ? this.virtual : this ).slides.length, i = this.pagination.$el, n = this.params.loop ? Math.ceil( (t - 2 * this.loopedSlides) / this.params.slidesPerGroup ) : this.snapGrid.length if ( (this.params.loop ? ((a = Math.ceil( (this.activeIndex - this.loopedSlides) / this.params.slidesPerGroup )) > t - 1 - 2 * this.loopedSlides && (a -= t - 2 * this.loopedSlides), n - 1 < a && (a -= n), a < 0 && "bullets" !== this.params.paginationType && (a = n + a)) : (a = void 0 !== this.snapIndex ? this.snapIndex : this.activeIndex || 0), "bullets" === s.type && this.pagination.bullets && 0 < this.pagination.bullets.length) ) { var o, r, l, c = this.pagination.bullets if ( (s.dynamicBullets && ((this.pagination.bulletSize = c .eq(0) [this.isHorizontal() ? "outerWidth" : "outerHeight"](!0)), i.css( this.isHorizontal() ? "width" : "height", this.pagination.bulletSize * (s.dynamicMainBullets + 4) + "px" ), 1 < s.dynamicMainBullets && void 0 !== this.previousIndex && ((this.pagination.dynamicBulletIndex += a - this.previousIndex), this.pagination.dynamicBulletIndex > s.dynamicMainBullets - 1 ? (this.pagination.dynamicBulletIndex = s.dynamicMainBullets - 1) : this.pagination.dynamicBulletIndex < 0 && (this.pagination.dynamicBulletIndex = 0)), (o = a - this.pagination.dynamicBulletIndex), (l = ((r = o + (Math.min(c.length, s.dynamicMainBullets) - 1)) + o) / 2)), c.removeClass( s.bulletActiveClass + " " + s.bulletActiveClass + "-next " + s.bulletActiveClass + "-next-next " + s.bulletActiveClass + "-prev " + s.bulletActiveClass + "-prev-prev " + s.bulletActiveClass + "-main" ), 1 < i.length) ) c.each(function (e, t) { var t = T(t), i = t.index() i === a && t.addClass(s.bulletActiveClass), s.dynamicBullets && (o <= i && i <= r && t.addClass(s.bulletActiveClass + "-main"), i === o && t .prev() .addClass(s.bulletActiveClass + "-prev") .prev() .addClass(s.bulletActiveClass + "-prev-prev"), i === r && t .next() .addClass(s.bulletActiveClass + "-next") .next() .addClass(s.bulletActiveClass + "-next-next")) }) else { var t = c.eq(a), d = t.index() if ((t.addClass(s.bulletActiveClass), s.dynamicBullets)) { for (var t = c.eq(o), h = c.eq(r), u = o; u <= r; u += 1) c.eq(u).addClass(s.bulletActiveClass + "-main") if (this.params.loop) if (d >= c.length - s.dynamicMainBullets) { for (var p = s.dynamicMainBullets; 0 <= p; --p) c.eq(c.length - p).addClass( s.bulletActiveClass + "-main" ) c.eq(c.length - s.dynamicMainBullets - 1).addClass( s.bulletActiveClass + "-prev" ) } else t .prev() .addClass(s.bulletActiveClass + "-prev") .prev() .addClass(s.bulletActiveClass + "-prev-prev"), h .next() .addClass(s.bulletActiveClass + "-next") .next() .addClass(s.bulletActiveClass + "-next-next") else t .prev() .addClass(s.bulletActiveClass + "-prev") .prev() .addClass(s.bulletActiveClass + "-prev-prev"), h .next() .addClass(s.bulletActiveClass + "-next") .next() .addClass(s.bulletActiveClass + "-next-next") } } s.dynamicBullets && ((d = Math.min(c.length, s.dynamicMainBullets + 4)), (t = (this.pagination.bulletSize * d - this.pagination.bulletSize) / 2 - l * this.pagination.bulletSize), (h = e ? "right" : "left"), c.css(this.isHorizontal() ? h : "top", t + "px")) } "fraction" === s.type && (i .find("." + s.currentClass) .text(s.formatFractionCurrent(a + 1)), i.find("." + s.totalClass).text(s.formatFractionTotal(n))), "progressbar" === s.type && ((d = s.progressbarOpposite ? this.isHorizontal() ? "vertical" : "horizontal" : this.isHorizontal() ? "horizontal" : "vertical"), (l = (a + 1) / n), (h = e = 1), "horizontal" == d ? (e = l) : (h = l), i .find("." + s.progressbarFillClass) .transform( "translate3d(0,0,0) scaleX(" + e + ") scaleY(" + h + ")" ) .transition(this.params.speed)), "custom" === s.type && s.renderCustom ? (i.html(s.renderCustom(this, a + 1, n)), this.emit("paginationRender", this, i[0])) : this.emit("paginationUpdate", this, i[0]), i[ this.params.watchOverflow && this.isLocked ? "addClass" : "removeClass" ](s.lockClass) } }, render: function () { var e = this.params.pagination if ( e.el && this.pagination.el && this.pagination.$el && 0 !== this.pagination.$el.length ) { var t = ( this.virtual && this.params.virtual.enabled ? this.virtual : this ).slides.length, i = this.pagination.$el, s = "" if ("bullets" === e.type) { for ( var a = this.params.loop ? Math.ceil( (t - 2 * this.loopedSlides) / this.params.slidesPerGroup ) : this.snapGrid.length, n = 0; n < a; n += 1 ) e.renderBullet ? (s += e.renderBullet.call(this, n, e.bulletClass)) : (s += "<" + e.bulletElement + ' class="' + e.bulletClass + '">' + e.bulletElement + ">") i.html(s), (this.pagination.bullets = i.find("." + e.bulletClass)) } "fraction" === e.type && ((s = e.renderFraction ? e.renderFraction.call(this, e.currentClass, e.totalClass) : ' / '), i.html(s)), "progressbar" === e.type && ((s = e.renderProgressbar ? e.renderProgressbar.call(this, e.progressbarFillClass) : ''), i.html(s)), "custom" !== e.type && this.emit("paginationRender", this.pagination.$el[0]) } }, init: function () { var e, t = this, i = t.params.pagination i.el && 0 !== (e = T(i.el)).length && (t.params.uniqueNavElements && "string" == typeof i.el && 1 < e.length && 1 === t.$el.find(i.el).length && (e = t.$el.find(i.el)), "bullets" === i.type && i.clickable && e.addClass(i.clickableClass), e.addClass(i.modifierClass + i.type), "bullets" === i.type && i.dynamicBullets && (e.addClass("" + i.modifierClass + i.type + "-dynamic"), (t.pagination.dynamicBulletIndex = 0), i.dynamicMainBullets < 1 && (i.dynamicMainBullets = 1)), "progressbar" === i.type && i.progressbarOpposite && e.addClass(i.progressbarOppositeClass), i.clickable && e.on("click", "." + i.bulletClass, function (e) { e.preventDefault() e = T(this).index() * t.params.slidesPerGroup t.params.loop && (e += t.loopedSlides), t.slideTo(e) }), U.extend(t.pagination, { $el: e, el: e[0] })) }, destroy: function () { var e, t = this.params.pagination t.el && this.pagination.el && this.pagination.$el && 0 !== this.pagination.$el.length && ((e = this.pagination.$el).removeClass(t.hiddenClass), e.removeClass(t.modifierClass + t.type), this.pagination.bullets && this.pagination.bullets.removeClass(t.bulletActiveClass), t.clickable && e.off("click", "." + t.bulletClass)) }, }, A = { setTranslate: function () { var e, t, i, s, a, n, o, r this.params.scrollbar.el && this.scrollbar.el && ((n = this.scrollbar), (e = this.rtlTranslate), (r = this.progress), (t = n.dragSize), (i = n.trackSize), (s = n.$dragEl), (a = n.$el), (n = this.params.scrollbar), (r = (i - (o = t)) * r), e ? 0 < (r = -r) ? ((o = t - r), (r = 0)) : i < -r + t && (o = i + r) : r < 0 ? ((o = t + r), (r = 0)) : i < r + t && (o = i - r), this.isHorizontal() ? (s.transform("translate3d(" + r + "px, 0, 0)"), (s[0].style.width = o + "px")) : (s.transform("translate3d(0px, " + r + "px, 0)"), (s[0].style.height = o + "px")), n.hide && (clearTimeout(this.scrollbar.timeout), (a[0].style.opacity = 1), (this.scrollbar.timeout = setTimeout(function () { ;(a[0].style.opacity = 0), a.transition(400) }, 1e3)))) }, setTransition: function (e) { this.params.scrollbar.el && this.scrollbar.el && this.scrollbar.$dragEl.transition(e) }, updateSize: function () { var e, t, i, s, a, n, o this.params.scrollbar.el && this.scrollbar.el && ((t = (e = this.scrollbar).$dragEl), (i = e.$el), (t[0].style.width = ""), (t[0].style.height = ""), (s = this.isHorizontal() ? i[0].offsetWidth : i[0].offsetHeight), (n = (a = this.size / this.virtualSize) * (s / this.size)), (o = "auto" === this.params.scrollbar.dragSize ? s * a : parseInt(this.params.scrollbar.dragSize, 10)), this.isHorizontal() ? (t[0].style.width = o + "px") : (t[0].style.height = o + "px"), (i[0].style.display = 1 <= a ? "none" : ""), this.params.scrollbar.hide && (i[0].style.opacity = 0), U.extend(e, { trackSize: s, divider: a, moveDivider: n, dragSize: o, }), e.$el[ this.params.watchOverflow && this.isLocked ? "addClass" : "removeClass" ](this.params.scrollbar.lockClass)) }, getPointerPosition: function (e) { return this.isHorizontal() ? ("touchstart" === e.type || "touchmove" === e.type ? e.targetTouches[0] : e ).clientX : ("touchstart" === e.type || "touchmove" === e.type ? e.targetTouches[0] : e ).clientY }, setDragPosition: function (e) { var t = this.scrollbar, i = this.rtlTranslate, s = t.$el, a = t.dragSize, n = t.trackSize, o = t.dragStartPos, t = (t.getPointerPosition(e) - s.offset()[this.isHorizontal() ? "left" : "top"] - (null !== o ? o : a / 2)) / (n - a), e = ((t = Math.max(Math.min(t, 1), 0)), i && (t = 1 - t), this.minTranslate() + (this.maxTranslate() - this.minTranslate()) * t) this.updateProgress(e), this.setTranslate(e), this.updateActiveIndex(), this.updateSlidesClasses() }, onDragStart: function (e) { var t = this.params.scrollbar, i = this.scrollbar, s = this.$wrapperEl, a = i.$el, n = i.$dragEl ;(this.scrollbar.isTouched = !0), (this.scrollbar.dragStartPos = e.target === n[0] || e.target === n ? i.getPointerPosition(e) - e.target.getBoundingClientRect()[ this.isHorizontal() ? "left" : "top" ] : null), e.preventDefault(), e.stopPropagation(), s.transition(100), n.transition(100), i.setDragPosition(e), clearTimeout(this.scrollbar.dragTimeout), a.transition(0), t.hide && a.css("opacity", 1), this.params.cssMode && this.$wrapperEl.css("scroll-snap-type", "none"), this.emit("scrollbarDragStart", e) }, onDragMove: function (e) { var t = this.scrollbar, i = this.$wrapperEl, s = t.$el, a = t.$dragEl this.scrollbar.isTouched && (e.preventDefault ? e.preventDefault() : (e.returnValue = !1), t.setDragPosition(e), i.transition(0), s.transition(0), a.transition(0), this.emit("scrollbarDragMove", e)) }, onDragEnd: function (e) { var t = this.params.scrollbar, i = this.scrollbar, s = this.$wrapperEl, a = i.$el this.scrollbar.isTouched && ((this.scrollbar.isTouched = !1), this.params.cssMode && (this.$wrapperEl.css("scroll-snap-type", ""), s.transition("")), t.hide && (clearTimeout(this.scrollbar.dragTimeout), (this.scrollbar.dragTimeout = U.nextTick(function () { a.css("opacity", 0), a.transition(400) }, 1e3))), this.emit("scrollbarDragEnd", e), t.snapOnRelease && this.slideToClosest()) }, enableDraggable: function () { var e, t, i, s, a this.params.scrollbar.el && ((i = this.scrollbar), (e = this.touchEventsTouch), (t = this.touchEventsDesktop), (a = this.params), (i = i.$el[0]), (s = !(!y.passiveListener || !a.passiveListeners) && { passive: !1, capture: !1, }), (a = !(!y.passiveListener || !a.passiveListeners) && { passive: !0, capture: !1, }), y.touch ? (i.addEventListener(e.start, this.scrollbar.onDragStart, s), i.addEventListener(e.move, this.scrollbar.onDragMove, s), i.addEventListener(e.end, this.scrollbar.onDragEnd, a)) : (i.addEventListener(t.start, this.scrollbar.onDragStart, s), h.addEventListener(t.move, this.scrollbar.onDragMove, s), h.addEventListener(t.end, this.scrollbar.onDragEnd, a))) }, disableDraggable: function () { var e, t, i, s, a this.params.scrollbar.el && ((i = this.scrollbar), (e = this.touchEventsTouch), (t = this.touchEventsDesktop), (a = this.params), (i = i.$el[0]), (s = !(!y.passiveListener || !a.passiveListeners) && { passive: !1, capture: !1, }), (a = !(!y.passiveListener || !a.passiveListeners) && { passive: !0, capture: !1, }), y.touch ? (i.removeEventListener( e.start, this.scrollbar.onDragStart, s ), i.removeEventListener(e.move, this.scrollbar.onDragMove, s), i.removeEventListener(e.end, this.scrollbar.onDragEnd, a)) : (i.removeEventListener( t.start, this.scrollbar.onDragStart, s ), h.removeEventListener(t.move, this.scrollbar.onDragMove, s), h.removeEventListener(t.end, this.scrollbar.onDragEnd, a))) }, init: function () { var e, t, i, s this.params.scrollbar.el && ((e = this.scrollbar), (s = this.$el), (i = T((t = this.params.scrollbar).el)), 0 === (s = (i = this.params.uniqueNavElements && "string" == typeof t.el && 1 < i.length && 1 === s.find(t.el).length ? s.find(t.el) : i).find("." + this.params.scrollbar.dragClass)).length && ((s = T( '
' )), i.append(s)), U.extend(e, { $el: i, el: i[0], $dragEl: s, dragEl: s[0] }), t.draggable && e.enableDraggable()) }, destroy: function () { this.scrollbar.disableDraggable() }, }, Q = { setTransform: function (e, t) { var i = this.rtl, e = T(e), i = i ? -1 : 1, s = e.attr("data-swiper-parallax") || "0", a = e.attr("data-swiper-parallax-x"), n = e.attr("data-swiper-parallax-y"), o = e.attr("data-swiper-parallax-scale"), r = e.attr("data-swiper-parallax-opacity") a || n ? ((a = a || "0"), (n = n || "0")) : this.isHorizontal() ? ((a = s), (n = "0")) : ((n = s), (a = "0")), (a = 0 <= a.indexOf("%") ? parseInt(a, 10) * t * i + "%" : a * t * i + "px"), (n = 0 <= n.indexOf("%") ? parseInt(n, 10) * t + "%" : n * t + "px"), null != r && ((s = r - (r - 1) * (1 - Math.abs(t))), (e[0].style.opacity = s)), null == o ? e.transform("translate3d(" + a + ", " + n + ", 0px)") : ((i = o - (o - 1) * (1 - Math.abs(t))), e.transform( "translate3d(" + a + ", " + n + ", 0px) scale(" + i + ")" )) }, setTranslate: function () { var s = this, e = s.$el, t = s.slides, a = s.progress, n = s.snapGrid e .children( "[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]" ) .each(function (e, t) { s.parallax.setTransform(t, a) }), t.each(function (e, t) { var i = t.progress 1 < s.params.slidesPerGroup && "auto" !== s.params.slidesPerView && (i += Math.ceil(e / 2) - a * (n.length - 1)), (i = Math.min(Math.max(i, -1), 1)), T(t) .find( "[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]" ) .each(function (e, t) { s.parallax.setTransform(t, i) }) }) }, setTransition: function (s) { void 0 === s && (s = this.params.speed), this.$el .find( "[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]" ) .each(function (e, t) { var t = T(t), i = parseInt(t.attr("data-swiper-parallax-duration"), 10) || s 0 === s && (i = 0), t.transition(i) }) }, }, Z = { getDistanceBetweenTouches: function (e) { if (e.targetTouches.length < 2) return 1 var t = e.targetTouches[0].pageX, i = e.targetTouches[0].pageY, s = e.targetTouches[1].pageX, e = e.targetTouches[1].pageY return Math.sqrt(Math.pow(s - t, 2) + Math.pow(e - i, 2)) }, onGestureStart: function (e) { var t = this.params.zoom, i = this.zoom, s = i.gesture if ( ((i.fakeGestureTouched = !1), (i.fakeGestureMoved = !1), !y.gestures) ) { if ( "touchstart" !== e.type || ("touchstart" === e.type && e.targetTouches.length < 2) ) return ;(i.fakeGestureTouched = !0), (s.scaleStart = Z.getDistanceBetweenTouches(e)) } ;(s.$slideEl && s.$slideEl.length) || ((s.$slideEl = T(e.target).closest(".swiper-slide")), 0 === s.$slideEl.length && (s.$slideEl = this.slides.eq(this.activeIndex)), (s.$imageEl = s.$slideEl.find("img, svg, canvas")), (s.$imageWrapEl = s.$imageEl.parent("." + t.containerClass)), (s.maxRatio = s.$imageWrapEl.attr("data-swiper-zoom") || t.maxRatio), 0 !== s.$imageWrapEl.length) ? (s.$imageEl.transition(0), (this.zoom.isScaling = !0)) : (s.$imageEl = void 0) }, onGestureChange: function (e) { var t = this.params.zoom, i = this.zoom, s = i.gesture if (!y.gestures) { if ( "touchmove" !== e.type || ("touchmove" === e.type && e.targetTouches.length < 2) ) return ;(i.fakeGestureMoved = !0), (s.scaleMove = Z.getDistanceBetweenTouches(e)) } s.$imageEl && 0 !== s.$imageEl.length && ((i.scale = y.gestures ? e.scale * i.currentScale : (s.scaleMove / s.scaleStart) * i.currentScale), i.scale > s.maxRatio && (i.scale = s.maxRatio - 1 + Math.pow(i.scale - s.maxRatio + 1, 0.5)), i.scale < t.minRatio && (i.scale = t.minRatio + 1 - Math.pow(t.minRatio - i.scale + 1, 0.5)), s.$imageEl.transform("translate3d(0,0,0) scale(" + i.scale + ")")) }, onGestureEnd: function (e) { var t = this.params.zoom, i = this.zoom, s = i.gesture if (!y.gestures) { if (!i.fakeGestureTouched || !i.fakeGestureMoved) return if ( "touchend" !== e.type || ("touchend" === e.type && e.changedTouches.length < 2 && !r.android) ) return ;(i.fakeGestureTouched = !1), (i.fakeGestureMoved = !1) } s.$imageEl && 0 !== s.$imageEl.length && ((i.scale = Math.max(Math.min(i.scale, s.maxRatio), t.minRatio)), s.$imageEl .transition(this.params.speed) .transform("translate3d(0,0,0) scale(" + i.scale + ")"), (i.currentScale = i.scale), (i.isScaling = !1), 1 === i.scale && (s.$slideEl = void 0)) }, onTouchStart: function (e) { var t = this.zoom, i = t.gesture, t = t.image i.$imageEl && 0 !== i.$imageEl.length && !t.isTouched && (r.android && e.preventDefault(), (t.isTouched = !0), (t.touchesStart.x = ( "touchstart" === e.type ? e.targetTouches[0] : e ).pageX), (t.touchesStart.y = ( "touchstart" === e.type ? e.targetTouches[0] : e ).pageY)) }, onTouchMove: function (e) { var t = this.zoom, i = t.gesture, s = t.image, a = t.velocity if ( i.$imageEl && 0 !== i.$imageEl.length && ((this.allowClick = !1), s.isTouched && i.$slideEl) ) { s.isMoved || ((s.width = i.$imageEl[0].offsetWidth), (s.height = i.$imageEl[0].offsetHeight), (s.startX = U.getTranslate(i.$imageWrapEl[0], "x") || 0), (s.startY = U.getTranslate(i.$imageWrapEl[0], "y") || 0), (i.slideWidth = i.$slideEl[0].offsetWidth), (i.slideHeight = i.$slideEl[0].offsetHeight), i.$imageWrapEl.transition(0), this.rtl && ((s.startX = -s.startX), (s.startY = -s.startY))) var n = s.width * t.scale, o = s.height * t.scale if (!(n < i.slideWidth && o < i.slideHeight)) { if ( ((s.minX = Math.min(i.slideWidth / 2 - n / 2, 0)), (s.maxX = -s.minX), (s.minY = Math.min(i.slideHeight / 2 - o / 2, 0)), (s.maxY = -s.minY), (s.touchesCurrent.x = ( "touchmove" === e.type ? e.targetTouches[0] : e ).pageX), (s.touchesCurrent.y = ( "touchmove" === e.type ? e.targetTouches[0] : e ).pageY), !s.isMoved && !t.isScaling) ) { if ( this.isHorizontal() && ((Math.floor(s.minX) === Math.floor(s.startX) && s.touchesCurrent.x < s.touchesStart.x) || (Math.floor(s.maxX) === Math.floor(s.startX) && s.touchesCurrent.x > s.touchesStart.x)) ) return void (s.isTouched = !1) if ( !this.isHorizontal() && ((Math.floor(s.minY) === Math.floor(s.startY) && s.touchesCurrent.y < s.touchesStart.y) || (Math.floor(s.maxY) === Math.floor(s.startY) && s.touchesCurrent.y > s.touchesStart.y)) ) return void (s.isTouched = !1) } e.preventDefault(), e.stopPropagation(), (s.isMoved = !0), (s.currentX = s.touchesCurrent.x - s.touchesStart.x + s.startX), (s.currentY = s.touchesCurrent.y - s.touchesStart.y + s.startY), s.currentX < s.minX && (s.currentX = s.minX + 1 - Math.pow(s.minX - s.currentX + 1, 0.8)), s.currentX > s.maxX && (s.currentX = s.maxX - 1 + Math.pow(s.currentX - s.maxX + 1, 0.8)), s.currentY < s.minY && (s.currentY = s.minY + 1 - Math.pow(s.minY - s.currentY + 1, 0.8)), s.currentY > s.maxY && (s.currentY = s.maxY - 1 + Math.pow(s.currentY - s.maxY + 1, 0.8)), a.prevPositionX || (a.prevPositionX = s.touchesCurrent.x), a.prevPositionY || (a.prevPositionY = s.touchesCurrent.y), a.prevTime || (a.prevTime = Date.now()), (a.x = (s.touchesCurrent.x - a.prevPositionX) / (Date.now() - a.prevTime) / 2), (a.y = (s.touchesCurrent.y - a.prevPositionY) / (Date.now() - a.prevTime) / 2), Math.abs(s.touchesCurrent.x - a.prevPositionX) < 2 && (a.x = 0), Math.abs(s.touchesCurrent.y - a.prevPositionY) < 2 && (a.y = 0), (a.prevPositionX = s.touchesCurrent.x), (a.prevPositionY = s.touchesCurrent.y), (a.prevTime = Date.now()), i.$imageWrapEl.transform( "translate3d(" + s.currentX + "px, " + s.currentY + "px,0)" ) } } }, onTouchEnd: function () { var e = this.zoom, t = e.gesture, i = e.image, s = e.velocity if (t.$imageEl && 0 !== t.$imageEl.length) { if (!i.isTouched || !i.isMoved) return (i.isTouched = !1), void (i.isMoved = !1) ;(i.isTouched = !1), (i.isMoved = !1) var a = 300, n = 300, o = s.x * a, o = i.currentX + o, r = s.y * n, r = i.currentY + r, s = (0 !== s.x && (a = Math.abs((o - i.currentX) / s.x)), 0 !== s.y && (n = Math.abs((r - i.currentY) / s.y)), Math.max(a, n)), a = ((i.currentX = o), (i.currentY = r), i.width * e.scale), n = i.height * e.scale ;(i.minX = Math.min(t.slideWidth / 2 - a / 2, 0)), (i.maxX = -i.minX), (i.minY = Math.min(t.slideHeight / 2 - n / 2, 0)), (i.maxY = -i.minY), (i.currentX = Math.max(Math.min(i.currentX, i.maxX), i.minX)), (i.currentY = Math.max(Math.min(i.currentY, i.maxY), i.minY)), t.$imageWrapEl .transition(s) .transform( "translate3d(" + i.currentX + "px, " + i.currentY + "px,0)" ) } }, onTransitionEnd: function () { var e = this.zoom, t = e.gesture t.$slideEl && this.previousIndex !== this.activeIndex && (t.$imageEl.transform("translate3d(0,0,0) scale(1)"), t.$imageWrapEl.transform("translate3d(0,0,0)"), (e.scale = 1), (e.currentScale = 1), (t.$slideEl = void 0), (t.$imageEl = void 0), (t.$imageWrapEl = void 0)) }, toggle: function (e) { var t = this.zoom t.scale && 1 !== t.scale ? t.out() : t.in(e) }, in: function (e) { var t, i, s, a, n = this.zoom, o = this.params.zoom, r = n.gesture, l = n.image r.$slideEl || ((r.$slideEl = this.clickedSlide ? T(this.clickedSlide) : this.slides.eq(this.activeIndex)), (r.$imageEl = r.$slideEl.find("img, svg, canvas")), (r.$imageWrapEl = r.$imageEl.parent("." + o.containerClass))), r.$imageEl && 0 !== r.$imageEl.length && (r.$slideEl.addClass("" + o.zoomedSlideClass), (l = void 0 === l.touchesStart.x && e ? ((t = ("touchend" === e.type ? e.changedTouches[0] : e) .pageX), ("touchend" === e.type ? e.changedTouches[0] : e).pageY) : ((t = l.touchesStart.x), l.touchesStart.y)), (n.scale = r.$imageWrapEl.attr("data-swiper-zoom") || o.maxRatio), (n.currentScale = r.$imageWrapEl.attr("data-swiper-zoom") || o.maxRatio), e ? ((o = r.$slideEl[0].offsetWidth), (e = r.$slideEl[0].offsetHeight), (t = r.$slideEl.offset().left + o / 2 - t), (l = r.$slideEl.offset().top + e / 2 - l), (s = r.$imageEl[0].offsetWidth), (a = r.$imageEl[0].offsetHeight), (s = s * n.scale), (a = a * n.scale), (s = -(o = Math.min(o / 2 - s / 2, 0))), (a = -(e = Math.min(e / 2 - a / 2, 0))), s < (i = (i = t * n.scale) < o ? o : i) && (i = s), a < (s = (s = l * n.scale) < e ? e : s) && (s = a)) : (s = i = 0), r.$imageWrapEl .transition(300) .transform("translate3d(" + i + "px, " + s + "px,0)"), r.$imageEl .transition(300) .transform("translate3d(0,0,0) scale(" + n.scale + ")")) }, out: function () { var e = this.zoom, t = this.params.zoom, i = e.gesture i.$slideEl || ((i.$slideEl = this.clickedSlide ? T(this.clickedSlide) : this.slides.eq(this.activeIndex)), (i.$imageEl = i.$slideEl.find("img, svg, canvas")), (i.$imageWrapEl = i.$imageEl.parent("." + t.containerClass))), i.$imageEl && 0 !== i.$imageEl.length && ((e.scale = 1), (e.currentScale = 1), i.$imageWrapEl.transition(300).transform("translate3d(0,0,0)"), i.$imageEl .transition(300) .transform("translate3d(0,0,0) scale(1)"), i.$slideEl.removeClass("" + t.zoomedSlideClass), (i.$slideEl = void 0)) }, enable: function () { var e, t, i = this.zoom i.enabled || ((i.enabled = !0), (e = !( "touchstart" !== this.touchEvents.start || !y.passiveListener || !this.params.passiveListeners ) && { passive: !0, capture: !1 }), (t = !y.passiveListener || { passive: !1, capture: !0 }), y.gestures ? (this.$wrapperEl.on( "gesturestart", ".swiper-slide", i.onGestureStart, e ), this.$wrapperEl.on( "gesturechange", ".swiper-slide", i.onGestureChange, e ), this.$wrapperEl.on( "gestureend", ".swiper-slide", i.onGestureEnd, e )) : "touchstart" === this.touchEvents.start && (this.$wrapperEl.on( this.touchEvents.start, ".swiper-slide", i.onGestureStart, e ), this.$wrapperEl.on( this.touchEvents.move, ".swiper-slide", i.onGestureChange, t ), this.$wrapperEl.on( this.touchEvents.end, ".swiper-slide", i.onGestureEnd, e ), this.touchEvents.cancel && this.$wrapperEl.on( this.touchEvents.cancel, ".swiper-slide", i.onGestureEnd, e )), this.$wrapperEl.on( this.touchEvents.move, "." + this.params.zoom.containerClass, i.onTouchMove, t )) }, disable: function () { var e, t, i = this.zoom i.enabled && ((this.zoom.enabled = !1), (e = !( "touchstart" !== this.touchEvents.start || !y.passiveListener || !this.params.passiveListeners ) && { passive: !0, capture: !1 }), (t = !y.passiveListener || { passive: !1, capture: !0 }), y.gestures ? (this.$wrapperEl.off( "gesturestart", ".swiper-slide", i.onGestureStart, e ), this.$wrapperEl.off( "gesturechange", ".swiper-slide", i.onGestureChange, e ), this.$wrapperEl.off( "gestureend", ".swiper-slide", i.onGestureEnd, e )) : "touchstart" === this.touchEvents.start && (this.$wrapperEl.off( this.touchEvents.start, ".swiper-slide", i.onGestureStart, e ), this.$wrapperEl.off( this.touchEvents.move, ".swiper-slide", i.onGestureChange, t ), this.$wrapperEl.off( this.touchEvents.end, ".swiper-slide", i.onGestureEnd, e ), this.touchEvents.cancel && this.$wrapperEl.off( this.touchEvents.cancel, ".swiper-slide", i.onGestureEnd, e )), this.$wrapperEl.off( this.touchEvents.move, "." + this.params.zoom.containerClass, i.onTouchMove, t )) }, }, J = { loadInSlide: function (e, r) { void 0 === r && (r = !0) var l, c = this, d = c.params.lazy void 0 !== e && 0 !== c.slides.length && ((e = (l = c.virtual && c.params.virtual.enabled ? c.$wrapperEl.children( "." + c.params.slideClass + '[data-swiper-slide-index="' + e + '"]' ) : c.slides.eq(e)).find( "." + d.elementClass + ":not(." + d.loadedClass + "):not(." + d.loadingClass + ")" )), 0 !== (e = !l.hasClass(d.elementClass) || l.hasClass(d.loadedClass) || l.hasClass(d.loadingClass) ? e : e.add(l[0])).length && e.each(function (e, t) { var i = T(t), s = (i.addClass(d.loadingClass), i.attr("data-background")), a = i.attr("data-src"), n = i.attr("data-srcset"), o = i.attr("data-sizes") c.loadImage(i[0], a || s, n, o, !1, function () { var e, t null == c || !c || (c && !c.params) || c.destroyed || (s ? (i.css("background-image", 'url("' + s + '")'), i.removeAttr("data-background")) : (n && (i.attr("srcset", n), i.removeAttr("data-srcset")), o && (i.attr("sizes", o), i.removeAttr("data-sizes")), a && (i.attr("src", a), i.removeAttr("data-src"))), i.addClass(d.loadedClass).removeClass(d.loadingClass), l.find("." + d.preloaderClass).remove(), c.params.loop && r && ((e = l.attr("data-swiper-slide-index")), l.hasClass(c.params.slideDuplicateClass) ? ((t = c.$wrapperEl.children( '[data-swiper-slide-index="' + e + '"]:not(.' + c.params.slideDuplicateClass + ")" )), c.lazy.loadInSlide(t.index(), !1)) : ((t = c.$wrapperEl.children( "." + c.params.slideDuplicateClass + '[data-swiper-slide-index="' + e + '"]' )), c.lazy.loadInSlide(t.index(), !1))), c.emit("lazyImageReady", l[0], i[0])) }), c.emit("lazyImageLoad", l[0], i[0]) })) }, load: function () { var i = this, t = i.$wrapperEl, s = i.params, a = i.slides, e = i.activeIndex, n = i.virtual && s.virtual.enabled, o = s.lazy, r = s.slidesPerView function l(e) { if (n) { if ( t.children( "." + s.slideClass + '[data-swiper-slide-index="' + e + '"]' ).length ) return 1 } else if (a[e]) return 1 } function c(e) { return n ? T(e).attr("data-swiper-slide-index") : T(e).index() } if ( ("auto" === r && (r = 0), i.lazy.initialImageLoaded || (i.lazy.initialImageLoaded = !0), i.params.watchSlidesVisibility) ) t.children("." + s.slideVisibleClass).each(function (e, t) { t = n ? T(t).attr("data-swiper-slide-index") : T(t).index() i.lazy.loadInSlide(t) }) else if (1 < r) for (var d = e; d < e + r; d += 1) l(d) && i.lazy.loadInSlide(d) else i.lazy.loadInSlide(e) if (o.loadPrevNext) if (1 < r || (o.loadPrevNextAmount && 1 < o.loadPrevNextAmount)) { for ( var o = o.loadPrevNextAmount, h = r, u = Math.min(e + h + Math.max(o, h), a.length), h = Math.max(e - Math.max(h, o), 0), p = e + r; p < u; p += 1 ) l(p) && i.lazy.loadInSlide(p) for (var m = h; m < e; m += 1) l(m) && i.lazy.loadInSlide(m) } else { ;(o = t.children("." + s.slideNextClass)), (h = (0 < o.length && i.lazy.loadInSlide(c(o)), t.children("." + s.slidePrevClass))) 0 < h.length && i.lazy.loadInSlide(c(h)) } }, }, I = { LinearSpline: function (e, t) { var i, s, a, n, o return ( (this.x = e), (this.y = t), (this.lastIndex = e.length - 1), (this.interpolate = function (e) { return e ? ((o = (function (e, t) { for (s = -1, i = e.length; 1 < i - s; ) e[(a = (i + s) >> 1)] <= t ? (s = a) : (i = a) return i })(this.x, e)), (n = o - 1), ((e - this.x[n]) * (this.y[o] - this.y[n])) / (this.x[o] - this.x[n]) + this.y[n]) : 0 }), this ) }, getInterpolateFunction: function (e) { this.controller.spline || (this.controller.spline = this.params.loop ? new I.LinearSpline(this.slidesGrid, e.slidesGrid) : new I.LinearSpline(this.snapGrid, e.snapGrid)) }, setTranslate: function (e, t) { var i, s, a = this, n = a.controller.control function o(e) { var t = a.rtlTranslate ? -a.translate : a.translate "slide" === a.params.controller.by && (a.controller.getInterpolateFunction(e), (s = -a.controller.spline.interpolate(-t))), (s && "container" !== a.params.controller.by) || ((i = (e.maxTranslate() - e.minTranslate()) / (a.maxTranslate() - a.minTranslate())), (s = (t - a.minTranslate()) * i + e.minTranslate())), a.params.controller.inverse && (s = e.maxTranslate() - s), e.updateProgress(s), e.setTranslate(s, a), e.updateActiveIndex(), e.updateSlidesClasses() } if (Array.isArray(n)) for (var r = 0; r < n.length; r += 1) n[r] !== t && n[r] instanceof p && o(n[r]) else n instanceof p && t !== n && o(n) }, setTransition: function (t, e) { var i, s = this, a = s.controller.control function n(e) { e.setTransition(t, s), 0 !== t && (e.transitionStart(), e.params.autoHeight && U.nextTick(function () { e.updateAutoHeight() }), e.$wrapperEl.transitionEnd(function () { a && (e.params.loop && "slide" === s.params.controller.by && e.loopFix(), e.transitionEnd()) })) } if (Array.isArray(a)) for (i = 0; i < a.length; i += 1) a[i] !== e && a[i] instanceof p && n(a[i]) else a instanceof p && e !== a && n(a) }, }, ee = { makeElFocusable: function (e) { return e.attr("tabIndex", "0"), e }, addElRole: function (e, t) { return e.attr("role", t), e }, addElLabel: function (e, t) { return e.attr("aria-label", t), e }, disableEl: function (e) { return e.attr("aria-disabled", !0), e }, enableEl: function (e) { return e.attr("aria-disabled", !1), e }, onEnterKey: function (e) { var t = this.params.a11y 13 === e.keyCode && ((e = T(e.target)), this.navigation && this.navigation.$nextEl && e.is(this.navigation.$nextEl) && ((this.isEnd && !this.params.loop) || this.slideNext(), this.isEnd ? this.a11y.notify(t.lastSlideMessage) : this.a11y.notify(t.nextSlideMessage)), this.navigation && this.navigation.$prevEl && e.is(this.navigation.$prevEl) && ((this.isBeginning && !this.params.loop) || this.slidePrev(), this.isBeginning ? this.a11y.notify(t.firstSlideMessage) : this.a11y.notify(t.prevSlideMessage)), this.pagination && e.is("." + this.params.pagination.bulletClass) && e[0].click()) }, notify: function (e) { var t = this.a11y.liveRegion 0 !== t.length && (t.html(""), t.html(e)) }, updateNavigation: function () { var e, t !this.params.loop && this.navigation && ((e = (t = this.navigation).$nextEl), (t = t.$prevEl) && 0 < t.length && (this.isBeginning ? this.a11y.disableEl(t) : this.a11y.enableEl(t)), e && 0 < e.length && (this.isEnd ? this.a11y.disableEl(e) : this.a11y.enableEl(e))) }, updatePagination: function () { var i = this, s = i.params.a11y i.pagination && i.params.pagination.clickable && i.pagination.bullets && i.pagination.bullets.length && i.pagination.bullets.each(function (e, t) { t = T(t) i.a11y.makeElFocusable(t), i.a11y.addElRole(t, "button"), i.a11y.addElLabel( t, s.paginationBulletMessage.replace( /{{index}}/, t.index() + 1 ) ) }) }, init: function () { this.$el.append(this.a11y.liveRegion) var e, t, i = this.params.a11y this.navigation && this.navigation.$nextEl && (e = this.navigation.$nextEl), this.navigation && this.navigation.$prevEl && (t = this.navigation.$prevEl), e && (this.a11y.makeElFocusable(e), this.a11y.addElRole(e, "button"), this.a11y.addElLabel(e, i.nextSlideMessage), e.on("keydown", this.a11y.onEnterKey)), t && (this.a11y.makeElFocusable(t), this.a11y.addElRole(t, "button"), this.a11y.addElLabel(t, i.prevSlideMessage), t.on("keydown", this.a11y.onEnterKey)), this.pagination && this.params.pagination.clickable && this.pagination.bullets && this.pagination.bullets.length && this.pagination.$el.on( "keydown", "." + this.params.pagination.bulletClass, this.a11y.onEnterKey ) }, destroy: function () { var e, t this.a11y.liveRegion && 0 < this.a11y.liveRegion.length && this.a11y.liveRegion.remove(), this.navigation && this.navigation.$nextEl && (e = this.navigation.$nextEl), this.navigation && this.navigation.$prevEl && (t = this.navigation.$prevEl), e && e.off("keydown", this.a11y.onEnterKey), t && t.off("keydown", this.a11y.onEnterKey), this.pagination && this.params.pagination.clickable && this.pagination.bullets && this.pagination.bullets.length && this.pagination.$el.off( "keydown", "." + this.params.pagination.bulletClass, this.a11y.onEnterKey ) }, }, M = { init: function () { if (this.params.history) { if (!j.history || !j.history.pushState) return ( (this.params.history.enabled = !1), void (this.params.hashNavigation.enabled = !0) ) var e = this.history ;(e.initialized = !0), (e.paths = M.getPathValues()), (e.paths.key || e.paths.value) && (e.scrollToSlide( 0, e.paths.value, this.params.runCallbacksOnInit ), this.params.history.replaceState || j.addEventListener( "popstate", this.history.setHistoryPopState )) } }, destroy: function () { this.params.history.replaceState || j.removeEventListener("popstate", this.history.setHistoryPopState) }, setHistoryPopState: function () { ;(this.history.paths = M.getPathValues()), this.history.scrollToSlide( this.params.speed, this.history.paths.value, !1 ) }, getPathValues: function () { var e = j.location.pathname .slice(1) .split("/") .filter(function (e) { return "" !== e }), t = e.length return { key: e[t - 2], value: e[t - 1] } }, setHistory: function (e, t) { this.history.initialized && this.params.history.enabled && ((t = this.slides.eq(t)), (t = M.slugify(t.attr("data-history"))), j.location.pathname.includes(e) || (t = e + "/" + t), ((e = j.history.state) && e.value === t) || (this.params.history.replaceState ? j.history.replaceState({ value: t }, null, t) : j.history.pushState({ value: t }, null, t))) }, slugify: function (e) { return e .toString() .replace(/\s+/g, "-") .replace(/[^\w-]+/g, "") .replace(/--+/g, "-") .replace(/^-+/, "") .replace(/-+$/, "") }, scrollToSlide: function (e, t, i) { if (t) for (var s = 0, a = this.slides.length; s < a; s += 1) { var n = this.slides.eq(s) M.slugify(n.attr("data-history")) !== t || n.hasClass(this.params.slideDuplicateClass) || ((n = n.index()), this.slideTo(n, e, i)) } else this.slideTo(0, e, i) }, }, P = { onHashCange: function () { var e = h.location.hash.replace("#", "") e !== this.slides.eq(this.activeIndex).attr("data-hash") && void 0 !== (e = this.$wrapperEl .children( "." + this.params.slideClass + '[data-hash="' + e + '"]' ) .index()) && this.slideTo(e) }, setHash: function () { var e this.hashNavigation.initialized && this.params.hashNavigation.enabled && (this.params.hashNavigation.replaceState && j.history && j.history.replaceState ? j.history.replaceState( null, null, "#" + this.slides.eq(this.activeIndex).attr("data-hash") || "" ) : ((e = (e = this.slides.eq(this.activeIndex)).attr("data-hash") || e.attr("data-history")), (h.location.hash = e || ""))) }, init: function () { if ( !( !this.params.hashNavigation.enabled || (this.params.history && this.params.history.enabled) ) ) { this.hashNavigation.initialized = !0 var e = h.location.hash.replace("#", "") if (e) for (var t = 0, i = this.slides.length; t < i; t += 1) { var s = this.slides.eq(t) ;(s.attr("data-hash") || s.attr("data-history")) !== e || s.hasClass(this.params.slideDuplicateClass) || ((s = s.index()), this.slideTo(s, 0, this.params.runCallbacksOnInit, !0)) } this.params.hashNavigation.watchState && T(j).on("hashchange", this.hashNavigation.onHashCange) } }, destroy: function () { this.params.hashNavigation.watchState && T(j).off("hashchange", this.hashNavigation.onHashCange) }, }, z = { run: function () { var e = this, t = e.slides.eq(e.activeIndex), i = e.params.autoplay.delay t.attr("data-swiper-autoplay") && (i = t.attr("data-swiper-autoplay") || e.params.autoplay.delay), clearTimeout(e.autoplay.timeout), (e.autoplay.timeout = U.nextTick(function () { e.params.autoplay.reverseDirection ? e.params.loop ? (e.loopFix(), e.slidePrev(e.params.speed, !0, !0), e.emit("autoplay")) : e.isBeginning ? e.params.autoplay.stopOnLastSlide ? e.autoplay.stop() : (e.slideTo(e.slides.length - 1, e.params.speed, !0, !0), e.emit("autoplay")) : (e.slidePrev(e.params.speed, !0, !0), e.emit("autoplay")) : e.params.loop ? (e.loopFix(), e.slideNext(e.params.speed, !0, !0), e.emit("autoplay")) : e.isEnd ? e.params.autoplay.stopOnLastSlide ? e.autoplay.stop() : (e.slideTo(0, e.params.speed, !0, !0), e.emit("autoplay")) : (e.slideNext(e.params.speed, !0, !0), e.emit("autoplay")), e.params.cssMode && e.autoplay.running && e.autoplay.run() }, i)) }, start: function () { return ( void 0 === this.autoplay.timeout && !this.autoplay.running && ((this.autoplay.running = !0), this.emit("autoplayStart"), this.autoplay.run(), !0) ) }, stop: function () { return ( !!this.autoplay.running && void 0 !== this.autoplay.timeout && (this.autoplay.timeout && (clearTimeout(this.autoplay.timeout), (this.autoplay.timeout = void 0)), (this.autoplay.running = !1), this.emit("autoplayStop"), !0) ) }, pause: function (e) { !this.autoplay.running || this.autoplay.paused || (this.autoplay.timeout && clearTimeout(this.autoplay.timeout), (this.autoplay.paused = !0), 0 !== e && this.params.autoplay.waitForTransition ? (this.$wrapperEl[0].addEventListener( "transitionend", this.autoplay.onTransitionEnd ), this.$wrapperEl[0].addEventListener( "webkitTransitionEnd", this.autoplay.onTransitionEnd )) : ((this.autoplay.paused = !1), this.autoplay.run())) }, }, te = { setTranslate: function () { for (var e = this.slides, t = 0; t < e.length; t += 1) { var i = this.slides.eq(t), s = -i[0].swiperSlideOffset, a = (this.params.virtualTranslate || (s -= this.translate), 0), n = (this.isHorizontal() || ((a = s), (s = 0)), this.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(i[0].progress), 0) : 1 + Math.min(Math.max(i[0].progress, -1), 0)) i.css({ opacity: n }).transform( "translate3d(" + s + "px, " + a + "px, 0px)" ) } }, setTransition: function (e) { var i, s = this, t = s.slides, a = s.$wrapperEl t.transition(e), s.params.virtualTranslate && 0 !== e && ((i = !1), t.transitionEnd(function () { if (!i && s && !s.destroyed) { ;(i = !0), (s.animating = !1) for ( var e = ["webkitTransitionEnd", "transitionend"], t = 0; t < e.length; t += 1 ) a.trigger(e[t]) } })) }, }, ie = { setTranslate: function () { var e, t = this.$el, i = this.$wrapperEl, s = this.slides, a = this.width, n = this.height, o = this.rtlTranslate, r = this.size, l = this.params.cubeEffect, c = this.isHorizontal(), d = this.virtual && this.params.virtual.enabled, h = 0 l.shadow && (c ? (0 === (e = i.find(".swiper-cube-shadow")).length && ((e = T('
')), i.append(e)), e.css({ height: a + "px" })) : 0 === (e = t.find(".swiper-cube-shadow")).length && ((e = T('
')), t.append(e))) for (var u, p = 0; p < s.length; p += 1) { var m = s.eq(p), f = p, v = 90 * (f = d ? parseInt(m.attr("data-swiper-slide-index"), 10) : f), g = Math.floor(v / 360), w = (o && ((v = -v), (g = Math.floor(-v / 360))), Math.max(Math.min(m[0].progress, 1), -1)), b = 0, y = 0, E = 0, g = (f % 4 == 0 ? ((b = 4 * -g * r), (E = 0)) : (f - 1) % 4 == 0 ? ((b = 0), (E = 4 * -g * r)) : (f - 2) % 4 == 0 ? ((b = r + 4 * g * r), (E = r)) : (f - 3) % 4 == 0 && ((b = -r), (E = 3 * r + 4 * r * g)), o && (b = -b), c || ((y = b), (b = 0)), "rotateX(" + (c ? 0 : -v) + "deg) rotateY(" + (c ? v : 0) + "deg) translate3d(" + b + "px, " + y + "px, " + E + "px)") w <= 1 && -1 < w && (h = o ? 90 * -f - 90 * w : 90 * f + 90 * w), m.transform(g), l.slideShadows && ((v = c ? m.find(".swiper-slide-shadow-left") : m.find(".swiper-slide-shadow-top")), (b = c ? m.find(".swiper-slide-shadow-right") : m.find(".swiper-slide-shadow-bottom")), 0 === v.length && ((v = T( '
' )), m.append(v)), 0 === b.length && ((b = T( '
' )), m.append(b)), v.length && (v[0].style.opacity = Math.max(-w, 0)), b.length && (b[0].style.opacity = Math.max(w, 0))) } i.css({ "-webkit-transform-origin": "50% 50% -" + r / 2 + "px", "-moz-transform-origin": "50% 50% -" + r / 2 + "px", "-ms-transform-origin": "50% 50% -" + r / 2 + "px", "transform-origin": "50% 50% -" + r / 2 + "px", }), l.shadow && (c ? e.transform( "translate3d(0px, " + (a / 2 + l.shadowOffset) + "px, " + -a / 2 + "px) rotateX(90deg) rotateZ(0deg) scale(" + l.shadowScale + ")" ) : ((t = Math.abs(h) - 90 * Math.floor(Math.abs(h) / 90)), (a = 1.5 - (Math.sin((2 * t * Math.PI) / 360) / 2 + Math.cos((2 * t * Math.PI) / 360) / 2)), (t = l.shadowScale), (a = l.shadowScale / a), (u = l.shadowOffset), e.transform( "scale3d(" + t + ", 1, " + a + ") translate3d(0px, " + (n / 2 + u) + "px, " + -n / 2 / a + "px) rotateX(-90deg)" ))), i.transform( "translate3d(0px,0," + (x.isSafari || x.isUiWebView ? -r / 2 : 0) + "px) rotateX(" + (this.isHorizontal() ? 0 : h) + "deg) rotateY(" + (this.isHorizontal() ? -h : 0) + "deg)" ) }, setTransition: function (e) { var t = this.$el this.slides .transition(e) .find( ".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left" ) .transition(e), this.params.cubeEffect.shadow && !this.isHorizontal() && t.find(".swiper-cube-shadow").transition(e) }, }, se = { setTranslate: function () { for ( var e = this.slides, t = this.rtlTranslate, i = 0; i < e.length; i += 1 ) { var s, a, n = e.eq(i), o = n[0].progress, r = -180 * (o = this.params.flipEffect.limitRotation ? Math.max(Math.min(n[0].progress, 1), -1) : o), l = 0, c = -n[0].swiperSlideOffset, d = 0 this.isHorizontal() ? t && (r = -r) : ((d = c), (l = -r), (r = c = 0)), (n[0].style.zIndex = -Math.abs(Math.round(o)) + e.length), this.params.flipEffect.slideShadows && ((s = this.isHorizontal() ? n.find(".swiper-slide-shadow-left") : n.find(".swiper-slide-shadow-top")), (a = this.isHorizontal() ? n.find(".swiper-slide-shadow-right") : n.find(".swiper-slide-shadow-bottom")), 0 === s.length && ((s = T( '
' )), n.append(s)), 0 === a.length && ((a = T( '
' )), n.append(a)), s.length && (s[0].style.opacity = Math.max(-o, 0)), a.length && (a[0].style.opacity = Math.max(o, 0))), n.transform( "translate3d(" + c + "px, " + d + "px, 0px) rotateX(" + l + "deg) rotateY(" + r + "deg)" ) } }, setTransition: function (e) { var i, s = this, t = s.slides, a = s.activeIndex, n = s.$wrapperEl t .transition(e) .find( ".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left" ) .transition(e), s.params.virtualTranslate && 0 !== e && ((i = !1), t.eq(a).transitionEnd(function () { if (!i && s && !s.destroyed) { ;(i = !0), (s.animating = !1) for ( var e = ["webkitTransitionEnd", "transitionend"], t = 0; t < e.length; t += 1 ) n.trigger(e[t]) } })) }, }, ae = { setTranslate: function () { for ( var e = this.width, t = this.height, i = this.slides, s = this.$wrapperEl, a = this.slidesSizesGrid, n = this.params.coverflowEffect, o = this.isHorizontal(), r = this.translate, l = o ? e / 2 - r : t / 2 - r, c = o ? n.rotate : -n.rotate, d = n.depth, h = 0, u = i.length; h < u; h += 1 ) { var p = i.eq(h), m = a[h], m = ((l - p[0].swiperSlideOffset - m / 2) / m) * n.modifier, f = o ? c * m : 0, v = o ? 0 : c * m, g = -d * Math.abs(m), w = o ? 0 : n.stretch * m, b = o ? n.stretch * m : 0, b = (Math.abs(b) < 0.001 && (b = 0), Math.abs(w) < 0.001 && (w = 0), Math.abs(g) < 0.001 && (g = 0), Math.abs(f) < 0.001 && (f = 0), "translate3d(" + b + "px," + w + "px," + g + "px) rotateX(" + (v = Math.abs(v) < 0.001 ? 0 : v) + "deg) rotateY(" + f + "deg)") p.transform(b), (p[0].style.zIndex = 1 - Math.abs(Math.round(m))), n.slideShadows && ((w = o ? p.find(".swiper-slide-shadow-left") : p.find(".swiper-slide-shadow-top")), (g = o ? p.find(".swiper-slide-shadow-right") : p.find(".swiper-slide-shadow-bottom")), 0 === w.length && ((w = T( '
' )), p.append(w)), 0 === g.length && ((g = T( '
' )), p.append(g)), w.length && (w[0].style.opacity = 0 < m ? m : 0), g.length && (g[0].style.opacity = 0 < -m ? -m : 0)) } ;(y.pointerEvents || y.prefixedPointerEvents) && (s[0].style.perspectiveOrigin = l + "px 50%") }, setTransition: function (e) { this.slides .transition(e) .find( ".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left" ) .transition(e) }, }, ne = { init: function () { var e = this.params.thumbs, t = this.constructor e.swiper instanceof t ? ((this.thumbs.swiper = e.swiper), U.extend(this.thumbs.swiper.originalParams, { watchSlidesProgress: !0, slideToClickedSlide: !1, }), U.extend(this.thumbs.swiper.params, { watchSlidesProgress: !0, slideToClickedSlide: !1, })) : U.isObject(e.swiper) && ((this.thumbs.swiper = new t( U.extend({}, e.swiper, { watchSlidesVisibility: !0, watchSlidesProgress: !0, slideToClickedSlide: !1, }) )), (this.thumbs.swiperCreated = !0)), this.thumbs.swiper.$el.addClass( this.params.thumbs.thumbsContainerClass ), this.thumbs.swiper.on("tap", this.thumbs.onThumbClick) }, onThumbClick: function () { var e, t, i, s = this.thumbs.swiper s && ((e = s.clickedIndex), ((i = s.clickedSlide) && T(i).hasClass(this.params.thumbs.slideThumbActiveClass)) || null == e || ((i = s.params.loop ? parseInt( T(s.clickedSlide).attr("data-swiper-slide-index"), 10 ) : e), this.params.loop && ((s = this.activeIndex), this.slides.eq(s).hasClass(this.params.slideDuplicateClass) && (this.loopFix(), (this._clientLeft = this.$wrapperEl[0].clientLeft), (s = this.activeIndex)), (e = this.slides .eq(s) .prevAll('[data-swiper-slide-index="' + i + '"]') .eq(0) .index()), (t = this.slides .eq(s) .nextAll('[data-swiper-slide-index="' + i + '"]') .eq(0) .index()), (i = void 0 === e || (void 0 !== t && t - s < s - e) ? t : e)), this.slideTo(i))) }, update: function (e) { var t = this.thumbs.swiper if (t) { var i, s, a, n = "auto" === t.params.slidesPerView ? t.slidesPerViewDynamic() : t.params.slidesPerView, o = (this.realIndex !== t.realIndex && ((i = t.activeIndex), (a = t.params.loop ? (t.slides .eq(i) .hasClass(t.params.slideDuplicateClass) && (t.loopFix(), (t._clientLeft = t.$wrapperEl[0].clientLeft), (i = t.activeIndex)), (s = t.slides .eq(i) .prevAll( '[data-swiper-slide-index="' + this.realIndex + '"]' ) .eq(0) .index()), (a = t.slides .eq(i) .nextAll( '[data-swiper-slide-index="' + this.realIndex + '"]' ) .eq(0) .index()), void 0 === s ? a : void 0 === a ? s : a - i == i - s ? i : a - i < i - s ? a : s) : this.realIndex), t.visibleSlidesIndexes && t.visibleSlidesIndexes.indexOf(a) < 0 && (t.params.centeredSlides ? (a = i < a ? a - Math.floor(n / 2) + 1 : a + Math.floor(n / 2) - 1) : i < a && (a = a - n + 1), t.slideTo(a, e ? 0 : void 0))), 1), r = this.params.thumbs.slideThumbActiveClass if ( (1 < this.params.slidesPerView && !this.params.centeredSlides && (o = this.params.slidesPerView), this.params.thumbs.multipleActiveThumbs || (o = 1), (o = Math.floor(o)), t.slides.removeClass(r), t.params.loop || (t.params.virtual && t.params.virtual.enabled)) ) for (var l = 0; l < o; l += 1) t.$wrapperEl .children( '[data-swiper-slide-index="' + (this.realIndex + l) + '"]' ) .addClass(r) else for (var c = 0; c < o; c += 1) t.slides.eq(this.realIndex + c).addClass(r) } }, }, O = [ m, Y, X, f, g, b, E, { name: "mousewheel", params: { mousewheel: { enabled: !1, releaseOnEdges: !1, invert: !1, forceToAxis: !1, sensitivity: 1, eventsTarged: "container", }, }, create: function () { U.extend(this, { mousewheel: { enabled: !1, enable: C.enable.bind(this), disable: C.disable.bind(this), handle: C.handle.bind(this), handleMouseEnter: C.handleMouseEnter.bind(this), handleMouseLeave: C.handleMouseLeave.bind(this), animateSlider: C.animateSlider.bind(this), releaseScroll: C.releaseScroll.bind(this), lastScrollTime: U.now(), lastEventBeforeSnap: void 0, recentWheelEvents: [], }, }) }, on: { init: function () { !this.params.mousewheel.enabled && this.params.cssMode && this.mousewheel.disable(), this.params.mousewheel.enabled && this.mousewheel.enable() }, destroy: function () { this.params.cssMode && this.mousewheel.enable(), this.mousewheel.enabled && this.mousewheel.disable() }, }, }, { name: "navigation", params: { navigation: { nextEl: null, prevEl: null, hideOnClick: !1, disabledClass: "swiper-button-disabled", hiddenClass: "swiper-button-hidden", lockClass: "swiper-button-lock", }, }, create: function () { U.extend(this, { navigation: { init: L.init.bind(this), update: L.update.bind(this), destroy: L.destroy.bind(this), onNextClick: L.onNextClick.bind(this), onPrevClick: L.onPrevClick.bind(this), }, }) }, on: { init: function () { this.navigation.init(), this.navigation.update() }, toEdge: function () { this.navigation.update() }, fromEdge: function () { this.navigation.update() }, destroy: function () { this.navigation.destroy() }, click: function (e) { var t, i = this.navigation, s = i.$nextEl, i = i.$prevEl !this.params.navigation.hideOnClick || T(e.target).is(i) || T(e.target).is(s) || (s ? (t = s.hasClass(this.params.navigation.hiddenClass)) : i && (t = i.hasClass(this.params.navigation.hiddenClass)), !0 === t ? this.emit("navigationShow", this) : this.emit("navigationHide", this), s && s.toggleClass(this.params.navigation.hiddenClass), i && i.toggleClass(this.params.navigation.hiddenClass)) }, }, }, { name: "pagination", params: { pagination: { el: null, bulletElement: "span", clickable: !1, hideOnClick: !1, renderBullet: null, renderProgressbar: null, renderFraction: null, renderCustom: null, progressbarOpposite: !1, type: "bullets", dynamicBullets: !1, dynamicMainBullets: 1, formatFractionCurrent: function (e) { return e }, formatFractionTotal: function (e) { return e }, bulletClass: "swiper-pagination-bullet", bulletActiveClass: "swiper-pagination-bullet-active", modifierClass: "swiper-pagination-", currentClass: "swiper-pagination-current", totalClass: "swiper-pagination-total", hiddenClass: "swiper-pagination-hidden", progressbarFillClass: "swiper-pagination-progressbar-fill", progressbarOppositeClass: "swiper-pagination-progressbar-opposite", clickableClass: "swiper-pagination-clickable", lockClass: "swiper-pagination-lock", }, }, create: function () { U.extend(this, { pagination: { init: k.init.bind(this), render: k.render.bind(this), update: k.update.bind(this), destroy: k.destroy.bind(this), dynamicBulletIndex: 0, }, }) }, on: { init: function () { this.pagination.init(), this.pagination.render(), this.pagination.update() }, activeIndexChange: function () { ;(!this.params.loop && void 0 !== this.snapIndex) || this.pagination.update() }, snapIndexChange: function () { this.params.loop || this.pagination.update() }, slidesLengthChange: function () { this.params.loop && (this.pagination.render(), this.pagination.update()) }, snapGridLengthChange: function () { this.params.loop || (this.pagination.render(), this.pagination.update()) }, destroy: function () { this.pagination.destroy() }, click: function (e) { this.params.pagination.el && this.params.pagination.hideOnClick && 0 < this.pagination.$el.length && !T(e.target).hasClass(this.params.pagination.bulletClass) && (!0 === this.pagination.$el.hasClass( this.params.pagination.hiddenClass ) ? this.emit("paginationShow", this) : this.emit("paginationHide", this), this.pagination.$el.toggleClass( this.params.pagination.hiddenClass )) }, }, }, { name: "scrollbar", params: { scrollbar: { el: null, dragSize: "auto", hide: !1, draggable: !1, snapOnRelease: !0, lockClass: "swiper-scrollbar-lock", dragClass: "swiper-scrollbar-drag", }, }, create: function () { U.extend(this, { scrollbar: { init: A.init.bind(this), destroy: A.destroy.bind(this), updateSize: A.updateSize.bind(this), setTranslate: A.setTranslate.bind(this), setTransition: A.setTransition.bind(this), enableDraggable: A.enableDraggable.bind(this), disableDraggable: A.disableDraggable.bind(this), setDragPosition: A.setDragPosition.bind(this), getPointerPosition: A.getPointerPosition.bind(this), onDragStart: A.onDragStart.bind(this), onDragMove: A.onDragMove.bind(this), onDragEnd: A.onDragEnd.bind(this), isTouched: !1, timeout: null, dragTimeout: null, }, }) }, on: { init: function () { this.scrollbar.init(), this.scrollbar.updateSize(), this.scrollbar.setTranslate() }, update: function () { this.scrollbar.updateSize() }, resize: function () { this.scrollbar.updateSize() }, observerUpdate: function () { this.scrollbar.updateSize() }, setTranslate: function () { this.scrollbar.setTranslate() }, setTransition: function (e) { this.scrollbar.setTransition(e) }, destroy: function () { this.scrollbar.destroy() }, }, }, { name: "parallax", params: { parallax: { enabled: !1 } }, create: function () { U.extend(this, { parallax: { setTransform: Q.setTransform.bind(this), setTranslate: Q.setTranslate.bind(this), setTransition: Q.setTransition.bind(this), }, }) }, on: { beforeInit: function () { this.params.parallax.enabled && ((this.params.watchSlidesProgress = !0), (this.originalParams.watchSlidesProgress = !0)) }, init: function () { this.params.parallax.enabled && this.parallax.setTranslate() }, setTranslate: function () { this.params.parallax.enabled && this.parallax.setTranslate() }, setTransition: function (e) { this.params.parallax.enabled && this.parallax.setTransition(e) }, }, }, { name: "zoom", params: { zoom: { enabled: !1, maxRatio: 3, minRatio: 1, toggle: !0, containerClass: "swiper-zoom-container", zoomedSlideClass: "swiper-slide-zoomed", }, }, create: function () { var s = this, t = { enabled: !1, scale: 1, currentScale: 1, isScaling: !1, gesture: { $slideEl: void 0, slideWidth: void 0, slideHeight: void 0, $imageEl: void 0, $imageWrapEl: void 0, maxRatio: 3, }, image: { 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: {}, }, velocity: { x: void 0, y: void 0, prevPositionX: void 0, prevPositionY: void 0, prevTime: void 0, }, }, a = ("onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out" .split(" ") .forEach(function (e) { t[e] = Z[e].bind(s) }), U.extend(s, { zoom: t }), 1) Object.defineProperty(s.zoom, "scale", { get: function () { return a }, set: function (e) { var t, i a !== e && ((t = s.zoom.gesture.$imageEl ? s.zoom.gesture.$imageEl[0] : void 0), (i = s.zoom.gesture.$slideEl ? s.zoom.gesture.$slideEl[0] : void 0), s.emit("zoomChange", e, t, i)), (a = e) }, }) }, on: { init: function () { this.params.zoom.enabled && this.zoom.enable() }, destroy: function () { this.zoom.disable() }, touchStart: function (e) { this.zoom.enabled && this.zoom.onTouchStart(e) }, touchEnd: function (e) { this.zoom.enabled && this.zoom.onTouchEnd(e) }, doubleTap: function (e) { this.params.zoom.enabled && this.zoom.enabled && this.params.zoom.toggle && this.zoom.toggle(e) }, transitionEnd: function () { this.zoom.enabled && this.params.zoom.enabled && this.zoom.onTransitionEnd() }, slideChange: function () { this.zoom.enabled && this.params.zoom.enabled && this.params.cssMode && this.zoom.onTransitionEnd() }, }, }, { name: "lazy", params: { lazy: { enabled: !1, loadPrevNext: !1, loadPrevNextAmount: 1, loadOnTransitionStart: !1, elementClass: "swiper-lazy", loadingClass: "swiper-lazy-loading", loadedClass: "swiper-lazy-loaded", preloaderClass: "swiper-lazy-preloader", }, }, create: function () { U.extend(this, { lazy: { initialImageLoaded: !1, load: J.load.bind(this), loadInSlide: J.loadInSlide.bind(this), }, }) }, on: { beforeInit: function () { this.params.lazy.enabled && this.params.preloadImages && (this.params.preloadImages = !1) }, init: function () { this.params.lazy.enabled && !this.params.loop && 0 === this.params.initialSlide && this.lazy.load() }, scroll: function () { this.params.freeMode && !this.params.freeModeSticky && this.lazy.load() }, resize: function () { this.params.lazy.enabled && this.lazy.load() }, scrollbarDragMove: function () { this.params.lazy.enabled && this.lazy.load() }, transitionStart: function () { this.params.lazy.enabled && (this.params.lazy.loadOnTransitionStart || (!this.params.lazy.loadOnTransitionStart && !this.lazy.initialImageLoaded)) && this.lazy.load() }, transitionEnd: function () { this.params.lazy.enabled && !this.params.lazy.loadOnTransitionStart && this.lazy.load() }, slideChange: function () { this.params.lazy.enabled && this.params.cssMode && this.lazy.load() }, }, }, { name: "controller", params: { controller: { control: void 0, inverse: !1, by: "slide" }, }, create: function () { U.extend(this, { controller: { control: this.params.controller.control, getInterpolateFunction: I.getInterpolateFunction.bind(this), setTranslate: I.setTranslate.bind(this), setTransition: I.setTransition.bind(this), }, }) }, on: { update: function () { this.controller.control && this.controller.spline && ((this.controller.spline = void 0), delete this.controller.spline) }, resize: function () { this.controller.control && this.controller.spline && ((this.controller.spline = void 0), delete this.controller.spline) }, observerUpdate: function () { this.controller.control && this.controller.spline && ((this.controller.spline = void 0), delete this.controller.spline) }, setTranslate: function (e, t) { this.controller.control && this.controller.setTranslate(e, t) }, setTransition: function (e, t) { this.controller.control && this.controller.setTransition(e, t) }, }, }, { name: "a11y", params: { 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}}", }, }, create: function () { var t = this U.extend(t, { a11y: { liveRegion: T( '' ), }, }), Object.keys(ee).forEach(function (e) { t.a11y[e] = ee[e].bind(t) }) }, on: { init: function () { this.params.a11y.enabled && (this.a11y.init(), this.a11y.updateNavigation()) }, toEdge: function () { this.params.a11y.enabled && this.a11y.updateNavigation() }, fromEdge: function () { this.params.a11y.enabled && this.a11y.updateNavigation() }, paginationUpdate: function () { this.params.a11y.enabled && this.a11y.updatePagination() }, destroy: function () { this.params.a11y.enabled && this.a11y.destroy() }, }, }, { name: "history", params: { history: { enabled: !1, replaceState: !1, key: "slides" }, }, create: function () { U.extend(this, { history: { init: M.init.bind(this), setHistory: M.setHistory.bind(this), setHistoryPopState: M.setHistoryPopState.bind(this), scrollToSlide: M.scrollToSlide.bind(this), destroy: M.destroy.bind(this), }, }) }, on: { init: function () { this.params.history.enabled && this.history.init() }, destroy: function () { this.params.history.enabled && this.history.destroy() }, transitionEnd: function () { this.history.initialized && this.history.setHistory( this.params.history.key, this.activeIndex ) }, slideChange: function () { this.history.initialized && this.params.cssMode && this.history.setHistory( this.params.history.key, this.activeIndex ) }, }, }, { name: "hash-navigation", params: { hashNavigation: { enabled: !1, replaceState: !1, watchState: !1 }, }, create: function () { U.extend(this, { hashNavigation: { initialized: !1, init: P.init.bind(this), destroy: P.destroy.bind(this), setHash: P.setHash.bind(this), onHashCange: P.onHashCange.bind(this), }, }) }, on: { init: function () { this.params.hashNavigation.enabled && this.hashNavigation.init() }, destroy: function () { this.params.hashNavigation.enabled && this.hashNavigation.destroy() }, transitionEnd: function () { this.hashNavigation.initialized && this.hashNavigation.setHash() }, slideChange: function () { this.hashNavigation.initialized && this.params.cssMode && this.hashNavigation.setHash() }, }, }, { name: "autoplay", params: { autoplay: { enabled: !1, delay: 3e3, waitForTransition: !0, disableOnInteraction: !0, stopOnLastSlide: !1, reverseDirection: !1, }, }, create: function () { var t = this U.extend(t, { autoplay: { running: !1, paused: !1, run: z.run.bind(t), start: z.start.bind(t), stop: z.stop.bind(t), pause: z.pause.bind(t), onVisibilityChange: function () { "hidden" === document.visibilityState && t.autoplay.running && t.autoplay.pause(), "visible" === document.visibilityState && t.autoplay.paused && (t.autoplay.run(), (t.autoplay.paused = !1)) }, onTransitionEnd: function (e) { t && !t.destroyed && t.$wrapperEl && e.target === this && (t.$wrapperEl[0].removeEventListener( "transitionend", t.autoplay.onTransitionEnd ), t.$wrapperEl[0].removeEventListener( "webkitTransitionEnd", t.autoplay.onTransitionEnd ), (t.autoplay.paused = !1), t.autoplay.running ? t.autoplay.run() : t.autoplay.stop()) }, }, }) }, on: { init: function () { this.params.autoplay.enabled && (this.autoplay.start(), document.addEventListener( "visibilitychange", this.autoplay.onVisibilityChange )) }, beforeTransitionStart: function (e, t) { this.autoplay.running && (t || !this.params.autoplay.disableOnInteraction ? this.autoplay.pause(e) : this.autoplay.stop()) }, sliderFirstMove: function () { this.autoplay.running && (this.params.autoplay.disableOnInteraction ? this.autoplay.stop() : this.autoplay.pause()) }, touchEnd: function () { this.params.cssMode && this.autoplay.paused && !this.params.autoplay.disableOnInteraction && this.autoplay.run() }, destroy: function () { this.autoplay.running && this.autoplay.stop(), document.removeEventListener( "visibilitychange", this.autoplay.onVisibilityChange ) }, }, }, { name: "effect-fade", params: { fadeEffect: { crossFade: !1 } }, create: function () { U.extend(this, { fadeEffect: { setTranslate: te.setTranslate.bind(this), setTransition: te.setTransition.bind(this), }, }) }, on: { beforeInit: function () { var e "fade" === this.params.effect && (this.classNames.push( this.params.containerModifierClass + "fade" ), U.extend( this.params, (e = { slidesPerView: 1, slidesPerColumn: 1, slidesPerGroup: 1, watchSlidesProgress: !0, spaceBetween: 0, virtualTranslate: !0, }) ), U.extend(this.originalParams, e)) }, setTranslate: function () { "fade" === this.params.effect && this.fadeEffect.setTranslate() }, setTransition: function (e) { "fade" === this.params.effect && this.fadeEffect.setTransition(e) }, }, }, { name: "effect-cube", params: { cubeEffect: { slideShadows: !0, shadow: !0, shadowOffset: 20, shadowScale: 0.94, }, }, create: function () { U.extend(this, { cubeEffect: { setTranslate: ie.setTranslate.bind(this), setTransition: ie.setTransition.bind(this), }, }) }, on: { beforeInit: function () { var e "cube" === this.params.effect && (this.classNames.push( this.params.containerModifierClass + "cube" ), this.classNames.push( this.params.containerModifierClass + "3d" ), U.extend( this.params, (e = { slidesPerView: 1, slidesPerColumn: 1, slidesPerGroup: 1, watchSlidesProgress: !0, resistanceRatio: 0, spaceBetween: 0, centeredSlides: !1, virtualTranslate: !0, }) ), U.extend(this.originalParams, e)) }, setTranslate: function () { "cube" === this.params.effect && this.cubeEffect.setTranslate() }, setTransition: function (e) { "cube" === this.params.effect && this.cubeEffect.setTransition(e) }, }, }, { name: "effect-flip", params: { flipEffect: { slideShadows: !0, limitRotation: !0 } }, create: function () { U.extend(this, { flipEffect: { setTranslate: se.setTranslate.bind(this), setTransition: se.setTransition.bind(this), }, }) }, on: { beforeInit: function () { var e "flip" === this.params.effect && (this.classNames.push( this.params.containerModifierClass + "flip" ), this.classNames.push( this.params.containerModifierClass + "3d" ), U.extend( this.params, (e = { slidesPerView: 1, slidesPerColumn: 1, slidesPerGroup: 1, watchSlidesProgress: !0, spaceBetween: 0, virtualTranslate: !0, }) ), U.extend(this.originalParams, e)) }, setTranslate: function () { "flip" === this.params.effect && this.flipEffect.setTranslate() }, setTransition: function (e) { "flip" === this.params.effect && this.flipEffect.setTransition(e) }, }, }, { name: "effect-coverflow", params: { coverflowEffect: { rotate: 50, stretch: 0, depth: 100, modifier: 1, slideShadows: !0, }, }, create: function () { U.extend(this, { coverflowEffect: { setTranslate: ae.setTranslate.bind(this), setTransition: ae.setTransition.bind(this), }, }) }, on: { beforeInit: function () { "coverflow" === this.params.effect && (this.classNames.push( this.params.containerModifierClass + "coverflow" ), this.classNames.push( this.params.containerModifierClass + "3d" ), (this.params.watchSlidesProgress = !0), (this.originalParams.watchSlidesProgress = !0)) }, setTranslate: function () { "coverflow" === this.params.effect && this.coverflowEffect.setTranslate() }, setTransition: function (e) { "coverflow" === this.params.effect && this.coverflowEffect.setTransition(e) }, }, }, { name: "thumbs", params: { thumbs: { multipleActiveThumbs: !0, swiper: null, slideThumbActiveClass: "swiper-slide-thumb-active", thumbsContainerClass: "swiper-container-thumbs", }, }, create: function () { U.extend(this, { thumbs: { swiper: null, init: ne.init.bind(this), update: ne.update.bind(this), onThumbClick: ne.onThumbClick.bind(this), }, }) }, on: { beforeInit: function () { var e = this.params.thumbs e && e.swiper && (this.thumbs.init(), this.thumbs.update(!0)) }, slideChange: function () { this.thumbs.swiper && this.thumbs.update() }, update: function () { this.thumbs.swiper && this.thumbs.update() }, resize: function () { this.thumbs.swiper && this.thumbs.update() }, observerUpdate: function () { this.thumbs.swiper && this.thumbs.update() }, setTransition: function (e) { var t = this.thumbs.swiper t && t.setTransition(e) }, beforeDestroy: function () { var e = this.thumbs.swiper e && this.thumbs.swiperCreated && e && e.destroy() }, }, }, ] return ( void 0 === p.use && ((p.use = p.Class.use), (p.installModule = p.Class.installModule)), p.use(O), p ) }), (function () { ;(window.watch5pro = window.watch5pro || {}), (window.watch5pro.common = window.watch5pro.common || {}) var e, o, t, i, s, a, n, r, l, c, d, h = { convertArray: function (e) { return Array.prototype.slice.call(e) }, getViewPort: function () { var e = window, t = "inner" return ( "innerWidth" in window || ((t = "client"), (e = document.documentElement || document.body)), { width: e[t + "Width"], height: e[t + "Height"] } ) }, getCurrentDevice: function () { var e = h.getViewPort().width return 1024 <= e ? "desktop" : e < 1024 && 768 <= e ? "tablet" : "mobile" }, isInVerticalViewPort: function (e) { e = e.getBoundingClientRect() return e.top - 200 <= h.getViewPort().height && 0 <= e.bottom }, isInHorizontalViewPort: function (e) { e = e.getBoundingClientRect() return e.left - 200 <= h.getViewPort().width && 0 <= e.right + 200 }, isVerticalVisible: function (e) { return ( h.isInVerticalViewPort(e) && !!(e.offsetWidth || e.offsetHeight || e.getClientRects().length) ) }, isHorizontalVisible: function (e) { return ( h.isInHorizontalViewPort(e) && !!(e.offsetWidth || e.offsetHeight || e.getClientRects().length) ) }, setCookie: function (e, t, i) { var s = new Date() s.setTime(s.getTime() + 60 * i * 60 * 24 * 1e3), (document.cookie = e + "=" + t + "; exprires=" + s.toUTCString() + "; path=/") }, getCookie: function (e) { e = document.cookie.match("(^|;) ?" + e + "=([^;]*)(;|$)") return e ? e[2] : null }, triggerEvent: function (e, t, i, s, a) { var n, i = i || null, s = s || !1, a = a || !0 null == i ? (n = document.createEvent("HTMLEvents")).initEvent(t, s, a) : (n = document.createEvent("CustomEvent")).initCustomEvent( t, s, a, i ), e.dispatchEvent(n) }, visibleScroll: function () { document.documentElement.classList.contains("isTouchDevice") || (!0 === this.scrollFlag && ((this.scrollFlag = !1), (document.body.style.position = ""), (document.body.style.width = ""), (document.body.style.top = ""), (document.body.style.boxSizing = ""), (document.body.style.paddingRight = ""), (document.documentElement.style.overflow = ""), null !== this.popupEl && ((this.popupEl.style.paddingRight = ""), (this.popupEl = null)), window.scrollTo(0, this.currentPos))) }, hiddenScroll: function (e) { var t document.documentElement.classList.contains("isTouchDevice") || ((this.popupEl = e || null), (this.scrollFlag = !0), (this.currentPos = window.pageYOffset || document.documentElement.scrollTop), (e = window.innerWidth - document.documentElement.clientWidth), (t = 0 < this.currentPos ? "-" + this.currentPos + "px" : 0), (document.body.style.position = "fixed"), (document.body.style.width = "100%"), (document.body.style.top = t), (document.body.style.boxSizing = "border-box"), (document.body.style.paddingRight = e + "px"), (document.documentElement.style.overflow = "hidden"), null !== this.popupEl && (this.popupEl.style.paddingRight = e + "px")) }, closest: function (e, t) { do { if (e == document.documentElement) return null if (e.matches ? e.matches(t) : e.msMatchesSelector(t)) return e } while ( null !== (e = e.parentElement || e.parentNode) || 1 === e.nodeType ) return null }, onAccessibility: function (e) { e.setAttribute("aria-hidden", !0), e.setAttribute("tabindex", -1) for ( var t = e.querySelectorAll("a, button, input, select"), i = 0; i < t.length; i++ ) { var s = t[i].getAttribute("data-prev-aria-hidden"), a = t[i].getAttribute("data-prev-tabindex") null != s ? t[i].setAttribute("aria-hidden", s) : t[i].setAttribute("aria-hidden", !0), null != a ? t[i].setAttribute("tabindex", a) : t[i].setAttribute("tabindex", -1), t[i].removeAttribute("data-prev-aria-hidden"), t[i].removeAttribute("data-prev-tabindex") } }, offAccessibility: function (e) { e.removeAttribute("aria-hidden"), e.removeAttribute("tabindex") for ( var t = e.querySelectorAll("a, button, input, select"), i = 0; i < t.length; i++ ) { var s = t[i].getAttribute("aria-hidden"), a = t[i].getAttribute("tabindex") null != s && t[i].setAttribute("data-prev-aria-hidden", s), null != a && t[i].setAttribute("data-prev-tabindex", a), t[i].removeAttribute("aria-hidden"), t[i].removeAttribute("tabindex") } }, extend: function (t, i) { return ( Object.keys(i).forEach(function (e) { t[e] = i[e] }), t ) }, getHeight: function (e) { var t, i, s return e ? ((t = (i = window.getComputedStyle(e)).display), (i = parseInt(i.maxHeight)), (s = 0), "none" != t && 0 != i ? e.offsetHeight : ((e.style.position = "absolute"), (e.style.visibility = "hidden"), (e.style.display = "block"), (s = e.offsetHeight), (e.style.display = ""), (e.style.position = ""), (e.style.visibility = ""), s)) : 0 }, setLastActiveItem: function (e) { this.lastActiveItem = e || null }, getLastActiveItem: function () { return null != this.lastActiveItem ? this.lastActiveItem : null }, isRTL: function () { return document.documentElement.classList.contains("rtl") }, checkRegion: function () { for ( var e = document.getElementsByTagName("meta"), t = "", i = 0; i < e.length; i++ ) if ("sitecode" == e[i].getAttribute("name")) return (t = e[i].getAttribute("content")) if ("" == t) return -1 < document.location.pathname.indexOf("global") ? "global" : "jp" }, isLowNetwork: function () { var e = "global" == h.checkRegion() || "jp" == h.checkRegion() ? "___GALAXY_SPEED" : "__COM_SPEED" return null == h.getCookie(e) || null == h.getCookie(e) ? null : "L" == h.getCookie(e) || ("H" != h.getCookie(e) && void 0) }, getNavHeight: function () { var e, t, i = 0, s = document.querySelector(".pd-g-header-navigation") || document.querySelector("#subnav") || document.querySelector(".sticky-menu") || document.querySelector(".pd-g-floating-nav") return (i = s ? s.classList.contains("pd-g-header-navigation") ? ((t = (e = s.querySelector( ".pd-header-navigation" )).querySelector(".pd-header-navigation__menu-wrap")), e.clientHeight + t.clientHeight) : s.clientHeight : i) }, getQueryString: function (e) { var t = (s = location.href).indexOf("?") + 1, i = -1 < s.indexOf("#") ? s.indexOf("#") + 1 : s.length if (0 == t) return "" for ( var s = (s = s.substring(t, i)).split("&"), a = "", n = 0; n < s.length; n++ ) { var o = s[n].split("=") if (2 != o.length) break o[0] == e && (a = o[1]) break } return a }, customParallax: function (e) { var t = e.mode || "center", i = e.delay || 0, s = e.ease || "Power0.easeNone", a = e.transZ || 0, n = e.duration || 0.3, o = e.distance || 0, r = e.correction || 0, l = e.windowCorrection ? window.innerHeight * e.windowCorrection : 0, c = e.direction || 1, d = e.activeElement, h = e.targetElement || d, u = e.wrapperElement || d, e = e.unit || "px", p = window.pageYOffset, m = window.pageYOffset + window.innerHeight, d = d.getBoundingClientRect(), f = p + u.getBoundingClientRect().top, u = f + u.getBoundingClientRect().height, v = window.innerHeight + d.height + 2 * l, g = "center" == t ? d.top - (window.innerHeight - d.height) / 2 : d.top - window.innerHeight "px" == e && (o = (d.height * o) / 100), f <= m + l && p - l <= u && TweenMax.to(h, n, { y: r + ((g * ("center" == t ? 2 * o : o)) / v) * c + e, z: a, ease: s, delay: i, }) }, isTouchDevice: ((u = "ontouchstart" in window || (window.DocumentTouch && document instanceof window.DocumentTouch)) ? document.documentElement.classList.add("isTouchDevice") : document.documentElement.classList.add("isNotTouchDevice"), u), isIosDevice: ((u = /iPad|iPhone|iPod/.test(navigator.userAgent)) ? document.documentElement.classList.add("isIosDevice") : document.documentElement.classList.add("isNotIosDevice"), u), isBrokenFixed: function () { var e = window.innerWidth, t = window.innerHeight, i = !1 return ( document.documentElement.classList.remove("is-broken-fixed"), (1440 <= e && t <= 540) || (e <= 810 && t / e < 0.5277) ? (document.documentElement.classList.add("is-broken-fixed"), (i = !0)) : document.documentElement.classList.remove( "is-broken-fixed" ), i ) }, isIEorEdge: (function () { var e, t = navigator.userAgent.toLowerCase() if ("Microsoft Internet Explorer" == navigator.appName) e = "msie " else if (-1 < t.search("trident")) e = "trident/.*rv:" else { if (!(-1 < t.search("edge/"))) return -1 e = "edge/" } return null != new RegExp(e + "([0-9]{1,})(\\.{0,}[0-9]{0,1})").exec(t) ? (document.documentElement.classList.add("isIEorEdge"), parseFloat(RegExp.$1 + RegExp.$2)) : -1 })(), checkGlobal: void (0 === location.pathname.indexOf("/global/galaxy") || !0 === window.IS_CAMPAIGN ? document.documentElement.classList.add("global") : document.documentElement.classList.add("dotcom")), checkOS: ((u = (u = navigator.appVersion.match(/(mac|win|linux)/i)) ? u[1].toLowerCase() : ""), void document.documentElement.classList.add(u)), isFireFox: void ( /firefox/i.test(navigator.userAgent) && document.documentElement.classList.add("firefox") ), isWebkit: void ( /applewebkit/i.test(navigator.userAgent) && document.documentElement.classList.add("webkit") ), isChrome: void ( /chrome/i.test(navigator.userAgent) && document.documentElement.classList.add("chrome") ), isOpera: void ( /opera/i.test(navigator.userAgent) && document.documentElement.classList.add("opera") ), isIos: void ( /ip(ad|hone|od)/i.test(navigator.userAgent) && document.documentElement.classList.add("ios") ), isCrIos: void ( /crios/i.test(navigator.userAgent) && document.documentElement.classList.add("crios") ), isAndroid: void ( /android/i.test(navigator.userAgent) && document.documentElement.classList.add("android") ), isSafari: ((u = /applewebkit/i.test(navigator.userAgent)), (e = /chrome/i.test(navigator.userAgent)), void ( u && !e && document.documentElement.classList.add("safari") )), isHuawei: void ( /HUAWEICLT/i.test(navigator.userAgent) && document.documentElement.classList.add("huawei") ), isUCBrowser: void ( /UCBrowser/i.test(navigator.userAgent) && document.documentElement.classList.add("ucbrowser") ), }, u = ((t = !(o = {})), (i = null), (s = function () { a(), n(), h.isLowNetwork() && document.documentElement.classList.add("low_network"), document.documentElement.classList.add("load"), window.removeEventListener("load", s) }), (a = function () { ;(t = 1024 <= window.innerWidth ? "desktop" : 768 <= window.innerWidth && window.innerWidth < 1024 ? "tablet" : "mobile"), clearTimeout(o.resizeTimeout), (o.resizeTimeout = setTimeout(function () { h.isBrokenFixed() }, 100)), t != i && (document.documentElement.classList.add(t), document.documentElement.classList.remove(i), (i = t)) }), (n = function () { for ( var e = window.pageYOffset, t = e + window.innerHeight, i = 0; i < o.allClickables.length; i++ ) { var s = o.allClickables[i], a = e + s.getBoundingClientRect().top, n = e + h.getNavHeight() n <= a && a <= t ? (s.isVisible = !0) : (a < n || t < a) && (s.isVisible = !1) } }), (r = function (e) { e.preventDefault() var t = this, e = parseFloat(this.innerText), i = document.querySelectorAll("#disclaimer-list li")[e - 1], s = i.innerText, a = ((i.innerHTML = '' + s + ""), function () { l.call(t), i.removeEventListener("focusin", a) }), n = function () { ;(i.innerHTML = s), i.removeAttribute("tabindex"), i.removeEventListener("focusout", n) } i.addEventListener("focusin", a), i.addEventListener("focusout", n), i.querySelector("a").focus() }), (l = function (e) { var s ;(!document.documentElement.classList.contains("ios") && e && null == e.relatedTarget) || ((s = this).isClicked || this.isVisible || c(this) || setTimeout(function () { var e = window.pageYOffset, t = s.getBoundingClientRect(), i = (window.innerHeight - h.getNavHeight()) / 2, e = e - h.getNavHeight() + t.top + t.height / 2 window.scrollTo(0, e - i) }, 10), (this.isClicked = !1)) }), (c = function (e) { var e = e.parentNode, t = e.getAttribute("id") return ( "contents" != t && e != document.body && (!( "subnav" != t && !e.classList.contains("sc-s22ultra-popup") ) || c(e)) ) }), (d = function () { this.isClicked = !0 }), { init: function () { ;(o.resizeTimeout = null), (o.supClicker = document.querySelectorAll("a.click_sup")), (o.contents = document.getElementById("contents") || document.getElementById("content")), (o.allClickables = o.contents.querySelectorAll( "a, button, input, select" )) var e = 0 for ( window.addEventListener("load", s), window.addEventListener("resize", a), window.addEventListener("scroll", n), e = 0; e < o.allClickables.length; e++ ) { var t = o.allClickables[e] ;(t.isClicked = !1), (t.isVisible = !1), t.addEventListener("focusin", l), t.addEventListener("mousedown", d) } for (e = 0; e < o.supClicker.length; e++) o.supClicker[e].addEventListener("click", r) var i = document.documentElement.classList "global" == h.checkRegion() || i.contains("mac") || i.contains("safari") || ANIUTIL.scrollController({ speed: 120, duration: 0.5 }) ANIUTIL && ANIUTIL.imageLoader({ lazyClass: ".js-img-src", responsiveClass: ".js-res-img", loadOption: [ { resolution: 1920, attribute: "data-src-pc" }, { resolution: 1080, attribute: "data-src-tablet" }, { resolution: 767, attribute: "data-src-mobile" }, { resolution: 360, attribute: "data-src-mobile-min" }, ], visiblePoint: 1, }) }, }) ;(window.watch5pro.common.utils = h), u.init() })(), (function () { var n, o, r, e, t, s ;(window.watch5pro = window.watch5pro || {}), (window.watch5pro.subnav = window.watch5pro.subnav || {}), (watch5pro.subnav = ((n = {}), (o = window.watch5pro.common.utils), (r = window.pageYOffset), (e = function () { t() }), (t = function () { r = window.pageYOffset var a = (window.innerHeight + o.getNavHeight()) / 2 n.visSections.forEach(function (e) { var i, t = e.getBoundingClientRect(), s = r + t.top, t = r + t.bottom s <= r + a && r + a <= t && ((i = e.dataset.visIndex), n.navItems.forEach(function (e, t) { t != i && e.parentNode.classList.contains("on") && e.parentNode.classList.remove("on") }), (s = n.navItems[i].parentNode).classList.contains("on") || (s.classList.add("on"), !n.section.classList.contains("hold") && s.classList.contains("on") && GALAXY.header && GALAXY.header.resetSubNav())) }) }), (s = function (e) { e.preventDefault() var t, i, s, a, e = this.parentNode n.section.classList.contains("hold") || e.classList.contains("on") || (n.navItems.forEach(function (e) { e.parentNode.classList.remove("on") }), e.classList.contains("on") || e.classList.add("on"), (e = this.dataset.navIndex), (t = (e = n.navDests[e]).getBoundingClientRect()), (i = parseInt(window.getComputedStyle(e).paddingTop)), (s = (window.innerHeight - (t.height - i) + o.getNavHeight()) / 2), (a = 0), (a = e.classList.contains("js-nav-center") ? r + t.top + i - s : r + t.top - o.getNavHeight()) < 150 && (a = 0), n.section.classList.add("hold"), GALAXY.setSmoothScrollTop(a, 1500, function () { n.section.classList.contains("hold") && n.section.classList.remove("hold"), GALAXY.header && GALAXY.header.resetSubNav() })) }), { init: function () { var i ;(n.section = document.getElementById("subnav")), n.section && ((n.navItems = o.convertArray( n.section.querySelectorAll("ul li>a") )), (n.navDests = document.querySelectorAll('[class*="js-nav-"]')), (n.visSections = o.convertArray( document.querySelectorAll(".js-visible") )), (n.visCount = -1), n.visSections.forEach(function (e) { e.dataset.visIndex = e.classList.contains("js-count") ? ++n.visCount : n.visCount }), t(), window.addEventListener("resize", e), window.addEventListener("scroll", t), (i = window.location.hash), n.navItems.forEach(function (e, t) { ;-1 < e.getAttribute("href").indexOf("#") && ((e.dataset.navIndex = t), e.addEventListener("click", s)), i && -1 < e.getAttribute("href").indexOf(i) && (e.parentNode.classList.remove("on"), e.click()) })) }, })) })(), (function () { var t, e, i, s, a, n, o, r ;(window.watch5pro = window.watch5pro || {}), (window.watch5pro.battery = window.watch5pro.battery || {}), (watch5pro.battery = ((t = {}), (e = window.watch5pro.common.utils), (i = !1), (s = null), (a = function () { n(), window.removeEventListener("load", a) }), (n = function () { ;(i = 1024 <= window.innerWidth ? "desktop" : 768 <= window.innerWidth && window.innerWidth < 1024 ? "tablet" : "mobile"), clearTimeout(t.resizeTimeout), (t.resizeTimeout = setTimeout(function () {}, 100)), i != s && (o(), (s = i)) }), (o = function () { ;(t.batteryBg.style.transform = ""), null != t.scroller && (t.scroller.destroy(), (t.scroller = null)) if (!e.isBrokenFixed() && null == t.scroller) t.scroller = SCROLLER({ trackElement: t.trackElement, fixedElement: t.fixedElement, useFixed: !(e.isIEorEdge < 0), useSticky: e.isIEorEdge < 0, useStrictMode: !1, trackHeight: 2, resize: !e.isTouchDevice, }) }), (r = function () { null != t.scroller && t.scroller.trackAnimation(function () { var e = ANIUTIL.calRange({ targetValue: "mobile" != i ? 81 : 63, progress: this.progress, startPoint: 0, endPoint: 100, }) TweenMax.to(t.batteryBg, 0.3, { x: 0, y: -e + "%" }) }) }), { init: function () { ;(t.section = document.querySelector(".sc-watch-battery")), t.section && ((t.scroller = null), (t.trackElement = t.section.querySelector( ".sc-watch-battery__track" )), (t.fixedElement = t.section.querySelector( ".sc-watch-battery__fixed" )), (t.battery = t.section.querySelector( ".sc-watch-battery__obj" )), (t.batteryBg = t.battery.querySelector( ".sc-watch-battery__obj-bg-inner" )), window.addEventListener("load", a), window.addEventListener("resize", n), window.addEventListener("scroll", r)) }, })) })(), (function () { var t, s, e, i, a, n, o, r, l, c, d ;(window.watch5pro = window.watch5pro || {}), (window.watch5pro.bespoke = window.watch5pro.bespoke || {}), (watch5pro.bespoke = ((t = {}), (s = window.watch5pro.common.utils), (e = !1), (i = null), (a = function () { n(), window.removeEventListener("load", a) }), (n = function () { ;(e = 1024 <= window.innerWidth ? "desktop" : 768 <= window.innerWidth && window.innerWidth < 1024 ? "tablet" : "mobile"), clearTimeout(t.resizeTimeout), (t.resizeTimeout = setTimeout(function () {}, 100)), e != i && (o(), (i = e)) }), (o = function () { null != t.swiper && (t.swiper.navigation.destroy(!0), t.swiper.destroy(!0), (t.swiper = null)) if (((t.isSwiperInit = !1), "mobile" == e && null == t.swiper)) (t.swiper = new Swiper(t.bespokeList, { init: !1, centeredSlides: !0, slidesPerView: "auto", navigation: { nextEl: t.nextArrow, prevEl: t.prevArrow }, pagination: { el: ".sc-watch-bespoke__list-progress", type: "progressbar", }, })), t.swiper.on("slideChange", function () { l(this.activeIndex), c(), imageLoader.setResponsiveImage([ t.prevArrow.querySelector("img"), t.nextArrow.querySelector("img"), ]) }), t.swiper.on("init", function () { l(this.activeIndex), c() var e = this.el.querySelector(".swiper-notification") e && this.el.removeChild(e), (t.isSwiperInit = !0) }), t.swiper.init() }), (r = function () {}), (l = function (i) { null != t.swiper && s.convertArray(t.swiper.slides).forEach(function (e, t) { t == i ? s.offAccessibility(e) : s.onAccessibility(e) }) }), (c = function () { null != t.swiper && (t.swiper.isBeginning && !t.swiper.isEnd ? (s.offAccessibility(t.nextArrow), s.onAccessibility(t.prevArrow), !s.isIosDevice && t.isSwiperInit && t.nextArrow.focus()) : !t.swiper.isBeginning && t.swiper.isEnd ? (s.offAccessibility(t.prevArrow), s.onAccessibility(t.nextArrow), !s.isIosDevice && t.isSwiperInit && t.prevArrow.focus()) : (s.offAccessibility(t.nextArrow), s.offAccessibility(t.prevArrow))) }), (d = function (e) { ;(("keydown" == e.type && 13 == e.keyCode) || "click" == e.type) && e.preventDefault() }), { init: function () { ;(t.section = document.querySelector(".sc-watch-bespoke")), t.section && ((t.swiper = null), (t.isSwiperInit = !1), (t.currentTabIndex = 0), (t.bespokeList = t.section.querySelector( ".sc-watch-bespoke__list" )), (t.bespokeItems = s.convertArray( t.section.querySelector(".sc-watch-bespoke__list-item") )), (t.nextArrow = t.section.querySelector( ".sc-watch-bespoke__list-arrow-next" )), (t.prevArrow = t.section.querySelector( ".sc-watch-bespoke__list-arrow-prev" )), window.addEventListener("load", a), window.addEventListener("resize", n), window.addEventListener("scroll", r), t.nextArrow.addEventListener("click", d), t.prevArrow.addEventListener("click", d), t.nextArrow.addEventListener("keydown", d), t.prevArrow.addEventListener("keydown", d)) }, })) })(), (function () { function t() { var e, t, i, s, a null != l.moTabSwiper && ((a = l.compareTabButtons[l.currentTabIndex].parentNode), (e = l.compareTabList.getBoundingClientRect()), (t = a.getBoundingClientRect()), l.compareTabButtons.forEach(function (e, t) { l.currentTabIndex == t ? (e.parentNode.classList.contains("is-active") || e.parentNode.classList.add("is-active"), e.setAttribute("title", "selected")) : (e.parentNode.classList.contains("is-active") && e.parentNode.classList.remove("is-active"), e.removeAttribute("title")) }), (i = parseInt(getComputedStyle(a).marginLeft)), (s = t.left - e.left - i), (a = 2 * i + a.clientWidth), TweenMax.to(l.compareTabHighlight, 0.3, { width: a + "px", left: s + "px", }), (a = 0 == l.currentTabIndex || l.currentTabIndex == l.compareTabButtons.length - 1 ? l.moTabSwiper.slidesGrid[l.currentTabIndex] > l.moTabSwiper.snapGrid[l.moTabSwiper.snapGrid.length - 1] ? l.moTabSwiper.snapGrid[l.moTabSwiper.snapGrid.length - 1] : l.moTabSwiper.slidesGrid[l.currentTabIndex] : (c.isRTL() ? e.right - t.right : t.left - e.left) - t.width / 2 - i * l.marginCount), TweenMax.to(l.compareTabList, 0.3, { x: a * (c.isRTL() ? 1 : -1) + "px", }), (l.compareTab.scrollLeft = 0)) } function o(t) { var i, s, a, e t ? ((i = []), c .convertArray( t.querySelectorAll(".sc-watch-compare__list-product-item") ) .forEach(function (e) { e.getAttribute("data-product") == y(t) ? (e.classList.contains("is-active") || e.classList.add("is-active"), c.offAccessibility(e)) : (e.classList.contains("is-active") && e.classList.remove("is-active"), c.onAccessibility(e)), c .convertArray(e.querySelectorAll("img")) .forEach(function (e) { e.classList.contains("load-complete") || i.push(e) }) }), (s = t.getAttribute("data-size")), c .convertArray( t.querySelectorAll(".sc-watch-compare__list-size-button") ) .forEach(function (e) { e.getAttribute("data-size") == s ? e.classList.contains("is-active") || e.classList.add("is-active") : e.classList.contains("is-active") && e.classList.remove("is-active"), c.offAccessibility(e) }), (a = t.getAttribute("data-color")), (e = t.querySelector( ".sc-watch-compare__list-colors" + (s ? ("small" == s ? "--small" : "--large") : "") )), c .convertArray(e.querySelectorAll(".sc-watch-compare__color")) .forEach(function (e) { e.getAttribute("data-color") == a ? e.classList.contains("is-active") || e.classList.add("is-active") : e.classList.contains("is-active") && e.classList.remove("is-active"), c.offAccessibility(e) }), 0 < i.length && imageLoader.setResponsiveImage(i)) : l.compareListItems.forEach(function (e) { v(e), m(e), g(e) }) } var l, c, d, e, i, s, a, n, r, h, u, p, m, f, v, g, w, b, y, E, T, x ;(window.watch5pro = window.watch5pro || {}), (window.watch5pro.compare = window.watch5pro.compare || {}), (watch5pro.compare = ((l = {}), (c = window.watch5pro.common.utils), (d = !1), (e = null), (i = function () { s(), window.removeEventListener("load", i) }), (s = function () { ;(d = 1024 <= window.innerWidth ? "desktop" : 768 <= window.innerWidth && window.innerWidth < 1024 ? "tablet" : "mobile"), clearTimeout(l.resizeTimeout), (l.resizeTimeout = setTimeout(function () { "mobile" != d && E(), u() }, 100)), d != e && (a(), (e = d)) }), (a = function () { null != l.swiper && (l.swiper.destroy(!0), (l.swiper = null), (l.isSwiperInit = !1)) null == l.swiper && ((l.swiper = new Swiper(l.compareContainer, { init: !1, initialSlide: "mobile" != d ? 0 : 1, allowTouchMove: !1, slidesPerView: "mobile" != d ? "auto" : 1, speed: 0, navigation: { nextEl: l.nextArrow, prevEl: l.prevArrow }, })), l.swiper.on("snapIndexChange", function () { var e l.isSwiperInit && T(this.snapIndex, !0), this.isBeginning && !this.isEnd ? x("begin") : !this.isBeginning && this.isEnd ? x("end") : this.isBeginning || this.isEnd || x("center"), "mobile" != d && ((e = this.snapGrid[this.snapIndex]), TweenMax.to(l.specTableWrap, 0, { x: e * (c.isRTL() ? 1 : -1), ease: "none", })) }), l.swiper.on("init", function () { this.isBeginning && !this.isEnd ? x("begin") : !this.isBeginning && this.isEnd ? x("end") : this.isBeginning || this.isEnd || x("center"), T(this.snapIndex, !1), (l.isSwiperInit = !0) var e = this.el.querySelector(".swiper-notification") e && this.el.removeChild(e) }), l.swiper.init()) o(), null != l.moTabSwiper && (l.moTabSwiper.destroy(!0), (l.moTabSwiper = null)) "mobile" != d ? (l.currentTabIndex = 0) : ((l.currentTabIndex = 1), setTimeout(function () { null == l.moTabSwiper && ((l.moTabSwiper = new Swiper(l.compareTab, { init: !1, slidesPerView: "auto", })), l.moTabSwiper.on("init", function () { var e = this.el.querySelector(".swiper-notification") e && this.el.removeChild(e) }), l.moTabSwiper.init()) l.compareSizeWraps.forEach(function (e) { e.style.height = "" }), l.compareColorWraps.forEach(function (e) { e.style.height = "" }), t() }, 200)) }), (n = function () {}), (r = function () { var e = l.compareTabButtons.indexOf(this) e != l.currentTabIndex && (null != l.swiper && (l.swiper.slideTo(e), o(l.compareListItems[e])), (l.currentTabIndex = e), t()) }), (h = function () { var e, t, i, s null != l.moTabSwiper && ((s = l.compareTabButtons.indexOf(this)), (i = l.compareTabButtons[s].parentNode), (e = l.compareTabList.getBoundingClientRect()), (t = i.getBoundingClientRect()), (i = parseInt(getComputedStyle(i).marginLeft)), (s = 0 == s || s == l.compareTabButtons.length - 1 ? l.moTabSwiper.slidesGrid[s] > l.moTabSwiper.snapGrid[l.moTabSwiper.snapGrid.length - 1] ? l.moTabSwiper.snapGrid[ l.moTabSwiper.snapGrid.length - 1 ] : l.moTabSwiper.slidesGrid[s] : (c.isRTL() ? e.right - t.right : t.left - e.left) - t.width / 2 - i * l.marginCount), TweenMax.to(l.compareTabList, 0.3, { x: s * (c.isRTL() ? 1 : -1) + "px", }), (l.compareTab.scrollLeft = 0)) }), (u = function () { var e, t, i, s, a null != l.moTabSwiper && ((a = l.compareTabButtons[l.currentTabIndex].parentNode), (e = l.compareTabList.getBoundingClientRect()), (t = a.getBoundingClientRect()), (a = 2 * (i = parseInt(getComputedStyle(a).marginLeft)) + a.clientWidth), (s = t.left - e.left - i), (l.compareTabHighlight.style.width = a + "px"), (l.compareTabHighlight.style.left = s + "px"), (a = 0 == l.currentTabIndex || l.currentTabIndex == l.compareTabButtons.length - 1 ? l.moTabSwiper.slidesGrid[l.currentTabIndex] > l.moTabSwiper.snapGrid[l.moTabSwiper.snapGrid.length - 1] ? l.moTabSwiper.snapGrid[ l.moTabSwiper.snapGrid.length - 1 ] : l.moTabSwiper.slidesGrid[l.currentTabIndex] : (c.isRTL() ? e.right - t.right : t.left - e.left) - t.width / 2 - i * l.marginCount), TweenMax.to(l.compareTabList, 0.3, { x: a * (c.isRTL() ? 1 : -1) + "px", }), (l.compareTab.scrollLeft = 0)) }), (p = function () { var i, e = c.closest(this, ".sc-watch-compare__list-item"), t = e.getAttribute("data-size"), s = e.getAttribute("data-color"), a = this.getAttribute("data-default-size"), n = this.getAttribute("data-color") s != n && (t != a && e.setAttribute("data-size", a), s != n && e.setAttribute("data-color", n), (t = c.convertArray( e.querySelectorAll(".sc-watch-compare__color") )), (i = t.indexOf(this)), t.forEach(function (e, t) { i == t ? (e.classList.contains("is-active") || e.classList.add("is-active"), e.setAttribute("title", "selected")) : (e.classList.contains("is-active") && e.classList.remove("is-active"), e.removeAttribute("title")) }), o(e), m(e), g(e)) }), (m = function (e) { var i = e.getAttribute("data-size") c.convertArray( e.querySelectorAll(".sc-watch-compare__list-size-button") ).forEach(function (e) { var t = e.getAttribute("data-size") i == t ? e.classList.contains("is-active") || e.classList.add("is-active") : e.classList.contains("is-active") && e.classList.remove("is-active") }) }), (f = function () { var i, e = c.closest(this, ".sc-watch-compare__list-item"), t = e.getAttribute("data-size"), s = e.getAttribute("data-color"), a = this.getAttribute("data-size"), n = this.getAttribute("data-default-color") t != a && (t != a && e.setAttribute("data-size", a), s != n && e.setAttribute("data-color", n), (t = c.convertArray( e.querySelectorAll(".sc-watch-compare__list-size-button") )), (i = t.indexOf(this)), t.forEach(function (e, t) { i == t ? (e.classList.contains("is-active") || e.classList.add("is-active"), e.setAttribute("title", "selected")) : (e.classList.contains("is-active") && e.classList.remove("is-active"), e.removeAttribute("title")) }), o(e), v(e), g(e)) }), (v = function (e) { var s = e.getAttribute("data-color"), a = e.getAttribute("data-size") c.convertArray( e.querySelectorAll(".sc-watch-compare__color") ).forEach(function (e) { var t = e.getAttribute("data-color"), i = e.getAttribute("data-default-size") s == t && a == i ? e.classList.contains("is-active") || e.classList.add("is-active") : e.classList.contains("is-active") && e.classList.remove("is-active") }) }), (g = function (e) { var t = e.getAttribute("data-size"), i = e.querySelector(".sc-watch-compare__list-colors--small"), e = e.querySelector(".sc-watch-compare__list-colors--large") "small" == t ? (i && !i.classList.contains("is-active") && (i.classList.add("is-active"), i.removeAttribute("tabindex"), i.removeAttribute("aria-hidden")), e && e.classList.contains("is-active") && (e.classList.remove("is-active"), e.setAttribute("tabindex", -1), e.setAttribute("aria-hidden", !0))) : (i && i.classList.contains("is-active") && (i.classList.remove("is-active"), i.setAttribute("tabindex", -1), i.setAttribute("aria-hidden", !0)), e && !e.classList.contains("is-active") && (e.classList.add("is-active"), e.removeAttribute("tabindex"), e.removeAttribute("aria-hidden"))) }), (w = function () { null != l.swiper && setTimeout(function () { !l.swiper.isBeginning && l.swiper.isEnd && l.prevArrow.focus() }, 50) }), (b = function () { null != l.swiper && setTimeout(function () { l.swiper.isBeginning && !l.swiper.isEnd && l.nextArrow.focus() }, 50) }), (y = function (e) { var t = "", i = e.getAttribute("data-product"), s = e.getAttribute("data-color"), e = e.getAttribute("data-size") return (t += i), s && (t += "-" + s), e && (t += "-" + e), t }), (E = function () { var t = [], i = (l.compareSizeWraps.forEach(function (e) { ;(e.style.height = ""), t.push(e.clientHeight) }), t.reduce(function (e, t) { return Math.max(e, t) })), s = (l.compareSizeWraps.forEach(function (e) { e.style.height = i + "px" }), []), a = (l.compareColorWraps.forEach(function (e) { ;(e.style.height = ""), s.push(e.clientHeight) }), s.reduce(function (e, t) { return Math.max(e, t) })) l.compareColorWraps.forEach(function (e) { e.style.height = a + "px" }) }), (T = function (n, o) { var r = [] l.compareListItems.forEach(function (t, e) { var i, s, a = c.convertArray( t.querySelectorAll(".sc-watch-compare__list-product-item") ) n <= e && e < n + ("mobile" != d ? 3 : 1) ? (c.offAccessibility(t), a.forEach(function (e) { e.getAttribute("data-product") == y(t) ? (e.classList.contains("is-active") || e.classList.add("is-active"), c.offAccessibility(e)) : (e.classList.contains("is-active") && e.classList.remove("is-active"), c.onAccessibility(e)), o && c .convertArray(e.querySelectorAll("img")) .forEach(function (e) { e.classList.contains("load-complete") || r.push(e) }) }), (i = t.getAttribute("data-size")), c .convertArray( t.querySelectorAll( ".sc-watch-compare__list-size-button" ) ) .forEach(function (e) { e.getAttribute("data-size") == i ? (e.classList.contains("is-active") || e.classList.add("is-active"), e.setAttribute("title", "selected")) : (e.classList.contains("is-active") && e.classList.remove("is-active"), e.removeAttribute("title")), c.offAccessibility(e) }), (s = t.getAttribute("data-color")), (e = t.querySelector( ".sc-watch-compare__list-colors" + (i ? ("small" == i ? "--small" : "--large") : "") )), c .convertArray( e.querySelectorAll(".sc-watch-compare__color") ) .forEach(function (e) { e.getAttribute("data-color") == s ? (e.classList.contains("is-active") || e.classList.add("is-active"), e.setAttribute("title", "selected")) : (e.classList.contains("is-active") && e.classList.remove("is-active"), e.removeAttribute("title")), c.offAccessibility(e) })) : (c.onAccessibility(t), a.forEach(function (e) { c.onAccessibility(e) })) }), "mobile" != d && l.specTableRows.forEach(function (e, t) { c.convertArray( e.querySelectorAll(".sc-watch-compare__column") ).forEach(function (e, t) { var i = l.specTableHeaders[t] n <= t && t < n + 3 ? (c.offAccessibility(i), c.offAccessibility(e)) : (c.onAccessibility(i), c.onAccessibility(e)) }) }), 0 < r.length && imageLoader.setResponsiveImage(r) }), (x = function (e) { null != l.swiper && ("begin" == e ? (c.offAccessibility(l.nextArrow), c.onAccessibility(l.prevArrow)) : ("end" == e ? c.onAccessibility(l.nextArrow) : c.offAccessibility(l.nextArrow), c.offAccessibility(l.prevArrow))) }), { init: function () { ;(l.section = document.querySelector(".sc-watch-compare")), l.section && ((l.isSwiperInit = !1), (l.moTabSwiper = null), (l.currentTabIndex = 0), (l.compareTab = l.section.querySelector( ".sc-watch-compare__tab" )), (l.compareTabList = l.compareTab.querySelector( ".sc-watch-compare__tab-list" )), (l.compareTabButtons = c.convertArray( l.compareTabList.querySelectorAll( ".sc-watch-compare__tab-button button" ) )), (l.compareTabHighlight = l.compareTab.querySelector( ".sc-watch-compare__tab-highlight" )), (l.swiper = null), (l.compareContainer = l.section.querySelector( ".sc-watch-compare__container" )), (l.compareListItems = c.convertArray( l.compareContainer.querySelectorAll( ".sc-watch-compare__list-item" ) )), (l.compareColorChips = c.convertArray( l.compareContainer.querySelectorAll( ".sc-watch-compare__list-item .sc-watch-compare__color" ) )), (l.compareSizeChips = c.convertArray( l.compareContainer.querySelectorAll( ".sc-watch-compare__list-item .sc-watch-compare__list-size-button" ) )), (l.compareColorWraps = c.convertArray( l.compareContainer.querySelectorAll( ".sc-watch-compare__list-colors" ) )), (l.compareSizeWraps = c.convertArray( l.compareContainer.querySelectorAll( ".sc-watch-compare__list-size" ) )), (l.specTableWrapper = l.section.querySelector( ".sc-watch-compare__table-wrapper" )), (l.specTableWrap = l.specTableWrapper.querySelector( ".sc-watch-compare__table-wrap" )), (l.specTableHeaders = c.convertArray( l.specTableWrap.querySelectorAll(".blind div") )), (l.specTableRows = c.convertArray( l.specTableWrap.querySelectorAll(".sc-watch-compare__row") )), (l.nextArrow = l.section.querySelector( ".swiper-button-next" )), (l.prevArrow = l.section.querySelector( ".swiper-button-prev" )), (l.marginCount = l.compareTabButtons.length - 2 + 0.5), window.addEventListener("load", i), window.addEventListener("resize", s), window.addEventListener("scroll", n), l.compareTabButtons.forEach(function (e) { e.addEventListener("click", r), e.addEventListener("focus", h) }), l.compareColorChips.forEach(function (e) { e.addEventListener("click", p) }), l.compareSizeChips.forEach(function (e) { e.addEventListener("click", f) }), l.nextArrow.addEventListener("click", w), l.prevArrow.addEventListener("click", b)) }, })) })(), (function () { function t() { var e = s.getCookie(i.cookieName) null != e && e.length && "1" == e ? (document.documentElement.classList.add("color_yb"), i.contrastBtn.setAttribute( "title", i.contrastBtnTitle + " selected" ), i.defaultBtn.setAttribute("title", i.defaultBtnTitle)) : (document.documentElement.classList.remove("color_yb"), i.contrastBtn.setAttribute("title", i.contrastBtnTitle), i.defaultBtn.setAttribute( "title", i.defaultBtnTitle + " selected" )) } var i, s, e, a, n ;(window.watch5pro = window.watch5pro || {}), (window.watch5pro.contrast = window.watch5pro.contrast || {}), (watch5pro.contrast = ((i = {}), (s = window.watch5pro.common.utils), (e = function () { t() }), (a = function (e) { e.preventDefault(), s.setCookie(i.cookieName, "0", 1), t() }), (n = function (e) { e.preventDefault(), s.setCookie(i.cookieName, "1", 1), t() }), { init: function () { if ( ((i.section = document.querySelector(".cp-high-contrast")), i.section) ) { if ( ((i.defaultBtn = i.section.querySelector(".type-default")), (i.defaultBtnTitle = i.defaultBtn .getAttribute("title") .trim()), (i.contrastBtn = i.section.querySelector(".type-contrast")), (i.contrastBtnTitle = i.contrastBtn .getAttribute("title") .trim()), (i.cookieName = "highContrastMode"), window.addEventListener("load", e), !!i.defaultBtn) ) i.defaultBtn.addEventListener("click", a) if (!!i.contrastBtn) i.contrastBtn.addEventListener("click", n) } }, })) })(), (function () { var e, t, i, s, a, n, o, r ;(window.watch5pro = window.watch5pro || {}), (window.watch5pro.durability = window.watch5pro.durability || {}), (watch5pro.durability = ((e = {}), (t = window.watch5pro.common.utils), (i = !1), (s = null), (a = function () { n(), window.removeEventListener("load", a) }), (n = function () { ;(i = 1024 <= window.innerWidth ? "desktop" : 768 <= window.innerWidth && window.innerWidth < 1024 ? "tablet" : "mobile"), clearTimeout(e.resizeTimeout), (e.resizeTimeout = setTimeout(function () {}, 100)), i != s && (o(), (s = i)) }), (o = function () { ANIUTIL.removeClass({ targetElement: e.section, classList: ["scene01", "scene02", "scene03"], }), null != e.scroller && (e.scroller.destroy(!0), (e.scroller = null)) if (!t.isBrokenFixed() && null == e.scroller) e.scroller = SCROLLER({ trackElement: e.trackElement, fixedElement: e.fixedElement, useFixed: !(t.isIEorEdge < 0), useSticky: t.isIEorEdge < 0, trackHeight: 4, resize: !t.isTouchDevice, }) }), (r = function () { null != e.scroller && e.scroller.trackAnimation(function () { this.progress < 16 ? ANIUTIL.removeClass({ targetElement: e.section, classList: ["scene01", "scene02", "scene03"], }) : 16 <= this.progress && this.progress < 38 ? (ANIUTIL.addClass({ targetElement: e.section, classList: ["scene01"], }), ANIUTIL.removeClass({ targetElement: e.section, classList: ["scene02", "scene03"], })) : 38 <= this.progress && this.progress < 65 ? (ANIUTIL.addClass({ targetElement: e.section, classList: ["scene01", "scene02"], }), ANIUTIL.removeClass({ targetElement: e.section, classList: ["scene03"], })) : 65 <= this.progress && this.progress < 100 && ANIUTIL.addClass({ targetElement: e.section, classList: ["scene01", "scene02", "scene03"], }) }) }), { init: function () { ;(e.section = document.querySelector(".sc-watch-durability")), e.section && ((e.scroller = null), (e.trackElement = e.section.querySelector( ".sc-watch-durability__track" )), (e.fixedElement = e.section.querySelector( ".sc-watch-durability__fixed" )), (e.durabilityText = e.section.querySelector( ".sc-watch-durability__text" )), (e.durabilityVisual = e.section.querySelector( ".sc-watch-durability__visual" )), window.addEventListener("load", a), window.addEventListener("resize", n), window.addEventListener("scroll", r)) }, })) })(), (function () { var o, r, e, t, i, s, a, n, l, c, d ;(window.watch5pro = window.watch5pro || {}), (window.watch5pro.ecosystem = window.watch5pro.ecosystem || {}), (watch5pro.ecosystem = ((o = {}), (r = window.watch5pro.common.utils), (e = !1), (t = null), (i = function () { o.ecoPopups.forEach(function (e, t) { t = o.ecoItemButtons[t] e.classList.contains("is-active") && e.classList.remove("is-active"), r.onAccessibility(e), r.offAccessibility(t) }), s(), window.removeEventListener("load", i) }), (s = function () { ;(e = 1024 <= window.innerWidth ? "desktop" : 768 <= window.innerWidth && window.innerWidth < 1024 ? "tablet" : "mobile"), clearTimeout(o.resizeTimeout), (o.resizeTimeout = setTimeout(function () {}, 100)), e != t && (a(), (t = e)) }), (a = function () {}), (n = function () { r.customParallax({ wrapperElement: o.section, activeElement: o.ecoItem01, distance: 10, direction: -1, }), r.customParallax({ wrapperElement: o.section, activeElement: o.ecoItem02, distance: 10, }), r.customParallax({ wrapperElement: o.section, activeElement: o.ecoItem03, distance: 5, direction: -1, }), r.customParallax({ wrapperElement: o.section, activeElement: o.ecoItem04, distance: 5, }) }), (l = function (e) { e.preventDefault() var a = o.ecoItemButtons.indexOf(this), n = [] o.ecoPopups.forEach(function (e, t) { var i = o.ecoItemButtons[t], s = e.querySelector(".sc-wearable-ecosystem__popup-close") a == t ? (e.classList.contains("is-active") || e.classList.add("is-active"), r.offAccessibility(e), r.onAccessibility(i), document.removeEventListener("click", d), setTimeout(function () { s.focus(), document.addEventListener("click", d) }, 400), r .convertArray(e.querySelectorAll("img")) .forEach(function (e) { e.classList.contains("load-complate") || n.push(e) })) : (e.classList.contains("is-active") && e.classList.remove("is-active"), r.onAccessibility(e), r.offAccessibility(i)) }), 0 < n.length && imageLoader.setResponsiveImage(n) }), (c = function () { o.ecoPopups.forEach(function (e, t) { t = o.ecoItemButtons[t] e.classList.contains("is-active") && e.classList.remove("is-active"), r.onAccessibility(e), r.offAccessibility(t) }) var e = r .closest(this, ".sc-wearable-ecosystem__item") .querySelector(".sc-wearable-ecosystem__item-cta-link") setTimeout(function () { e.focus(), document.removeEventListener("click", d) }, 400) }), (d = function (e) { null == r.closest(e.target, ".sc-wearable-ecosystem__popup") && (o.ecoPopups.forEach(function (e, t) { t = o.ecoItemButtons[t] e.classList.contains("is-active") && e.classList.remove("is-active"), r.onAccessibility(e), r.offAccessibility(t) }), document.removeEventListener("click", d)) }), { init: function () { ;(o.section = document.querySelector(".sc-wearable-ecosystem")), o.section && ((o.ecoContents = o.section.querySelector( ".sc-wearable-ecosystem__contents" )), (o.ecoItems = r.convertArray( o.ecoContents.querySelectorAll( ".sc-wearable-ecosystem__item" ) )), (o.ecoItemButtons = r.convertArray( o.ecoContents.querySelectorAll( ".sc-wearable-ecosystem__item-cta-link" ) )), (o.ecoPopups = r.convertArray( o.ecoContents.querySelectorAll( ".sc-wearable-ecosystem__popup" ) )), (o.ecoPopupCloseButtons = r.convertArray( o.ecoContents.querySelectorAll( ".sc-wearable-ecosystem__popup-close" ) )), (o.ecoItem01 = o.ecoContents.querySelector( ".sc-wearable-ecosystem__item--01 .sc-wearable-ecosystem__item-inner" )), (o.ecoItem02 = o.ecoContents.querySelector( ".sc-wearable-ecosystem__item--02 .sc-wearable-ecosystem__item-inner" )), (o.ecoItem03 = o.ecoContents.querySelector( ".sc-wearable-ecosystem__item--03 .sc-wearable-ecosystem__item-inner" )), (o.ecoItem04 = o.ecoContents.querySelector( ".sc-wearable-ecosystem__item--04 .sc-wearable-ecosystem__item-inner" )), window.addEventListener("load", i), window.addEventListener("resize", s), window.addEventListener("scroll", n), o.ecoItemButtons.forEach(function (e) { e.addEventListener("click", l) }), o.ecoPopupCloseButtons.forEach(function (e) { e.addEventListener("click", c) })) }, })) })(), (function () { var e, t, i, s, a, n, o ;(window.watch5pro = window.watch5pro || {}), (window.watch5pro.exploration = window.watch5pro.exploration || {}), (watch5pro.exploration = ((e = {}), window.watch5pro.common.utils, (t = !1), (i = null), (s = function () { a(), o(), window.removeEventListener("load", s) }), (a = function () { ;(t = 1024 <= window.innerWidth ? "desktop" : 768 <= window.innerWidth && window.innerWidth < 1024 ? "tablet" : "mobile"), clearTimeout(e.resizeTimeout), (e.resizeTimeout = setTimeout(function () { o() }, 100)), t != i && (n(), (i = t)) }), (n = function () { null != e.sequenceScroller && (e.sequenceScroller.destroy(), (e.sequenceScroller = null)) null != e.sequencePlayer && (e.sequenceCanvas.removeChild( e.sequenceCanvas.querySelector("canvas") ), (e.sequencePlayer = null)) null == e.sequenceScroller && (e.sequenceScroller = SCROLLER({ trackElement: e.sequenceCanvas, activeElement: e.section, activeType: "reverse", correction: 0.5, activeCallback: function () { null != e.sequencePlayer && (e.sequencePlayer.stop(), e.sequencePlayer.play()) }, endCallback: function () { null != e.sequencePlayer && e.sequencePlayer.stop() }, })) "undefined" != typeof __WATCH_SEQUENCE_URL && null != __WATCH_SEQUENCE_URL && null != __WATCH_SEQUENCE_URL && "" != __WATCH_SEQUENCE_URL ? (e.sequenceImagePath = __WATCH_SEQUENCE_URL + "/") : (e.sequenceImagePath = "/src/_galaxy-watch5-pro/images/") null == e.sequencePlayer && (e.sequencePlayer = SEQUENCEPLAYER({ targetElement: e.sequenceCanvas, startNum: 0, endNum: 43, path: e.sequenceImagePath, name: "mobile" != t ? "galaxy-watch5-pro-exploration-pc-sequence_" : "galaxy-watch5-pro-exploration-mo-sequence_", extension: "jpg", playTime: 1200, imageLoadOffset: 1, })) }), (o = function () { null != e.sequenceScroller && e.sequenceScroller.activeAnimation() }), { init: function () { ;(e.section = document.querySelector(".sc-watch-exploration")), e.section && ((e.sequenceScroller = null), (e.sequencePlayer = null), (e.sequenceImagePath = null), (e.sequenceCanvas = e.section.querySelector( ".sc-watch-exploration__visual-inner" )), window.addEventListener("load", s), window.addEventListener("resize", a), window.addEventListener("scroll", o)) }, })) })(), (function () { var r, l, e, t, o, c, i, d, h, u ;(window.watch5pro = window.watch5pro || {}), (window.watch5pro.face = window.watch5pro.face || {}), (watch5pro.face = ((r = {}), (l = window.watch5pro.common.utils), (e = !1), (t = null), (o = function () { c(), window.removeEventListener("load", o) }), (c = function () { ;(e = 1024 <= window.innerWidth ? "desktop" : 768 <= window.innerWidth && window.innerWidth < 1024 ? "tablet" : "mobile"), clearTimeout(r.resizeTimeout), (r.resizeTimeout = setTimeout(function () {}, 100)), e != t && (i(), (t = e)) }), (i = function () { null != r.swiper && (r.swiper.destroy(!0), (r.swiper = null)) if ("mobile" == e && null == r.swiper) (r.swiper = new Swiper(r.faceTab, { init: !1, slidesPerView: "auto", })), r.swiper.on("init", function () { var e = this.el.querySelector(".swiper-notification") e && this.el.removeChild(e) }), r.swiper.init() }), (d = function () {}), (h = function () { var e = r.faceTabItems.indexOf(this) if (e != r.currentTabIndex) { for (var t, i, s = 0; s < r.faceTabItems.length; s++) { var a = r.faceTabItems[s], n = r.faceVisualItems[s], o = r.faceTabButtons[s] e == s ? (a.classList.contains("is-active") || a.classList.add("is-active"), n.classList.contains("is-active") || n.classList.add("is-active"), o.setAttribute("title", "selected"), l.offAccessibility(n)) : (a.classList.contains("is-active") && a.classList.remove("is-active"), n.classList.contains("is-active") && n.classList.remove("is-active"), o.removeAttribute("title"), l.onAccessibility(n)) } null != r.swiper && ((i = r.faceTabList.getBoundingClientRect()), (t = r.faceTabItems[e].getBoundingClientRect()), (i = l.isRTL() ? i.right - t.right - (i.width - t.width) / 2 : t.left - i.left - (i.width - t.width) / 2) > r.swiper.snapGrid[r.swiper.snapGrid.length - 1] ? (i = r.swiper.snapGrid[r.swiper.snapGrid.length - 1]) : i < r.swiper.snapGrid[0] && (i = r.swiper.snapGrid[0]), TweenMax.to(r.faceTabList, 0.3, { x: i * (l.isRTL() ? 1 : -1) + "px", })), (r.currentTabIndex = e) } }), (u = function () { var e, t null != r.swiper && ((e = r.faceTabButtons.indexOf(this)), (t = r.faceTabList.getBoundingClientRect()), (e = r.faceTabItems[e].getBoundingClientRect()), (t = l.isRTL() ? t.right - e.right - (t.width - e.width) / 2 : e.left - t.left - (t.width - e.width) / 2) > r.swiper.snapGrid[r.swiper.snapGrid.length - 1] ? (t = r.swiper.snapGrid[r.swiper.snapGrid.length - 1]) : t < r.swiper.snapGrid[0] && (t = r.swiper.snapGrid[0]), TweenMax.to(r.faceTabList, 0.3, { x: t * (l.isRTL() ? 1 : -1) + "px", })) }), { init: function () { if ( ((r.section = document.querySelector(".sc-watch-face")), r.section) ) { ;(r.swiper = null), (r.currentTabIndex = 0), (r.faceContents = r.section.querySelector( ".sc-watch-face__contents" )), (r.faceTab = r.faceContents.querySelector( ".sc-watch-face__tab" )), (r.faceTabList = r.faceTab.querySelector( ".sc-watch-face__tab-list" )), (r.faceTabItems = l.convertArray( r.faceTabList.querySelectorAll(".sc-watch-face__tab-item") )), (r.faceTabButtons = l.convertArray( r.faceTabList.querySelectorAll( ".sc-watch-face__tab-button" ) )), (r.faceVisual = r.section.querySelector( ".sc-watch-face__visual" )), (r.faceVisualItems = l.convertArray( r.faceVisual.querySelectorAll( ".sc-watch-face__visual-item" ) )), window.addEventListener("load", o), window.addEventListener("resize", c), window.addEventListener("scroll", d) for (var e = 0; e < r.faceTabItems.length; e++) { r.faceTabItems[e].addEventListener("click", h) var t = r.faceTabItems[e].querySelector( ".sc-watch-face__tab-button" ) t.addEventListener("focus", u) } for (var i = 0; i < r.faceTabItems.length; i++) { var s = r.faceTabItems[i] var a = r.faceVisualItems[i] var n = r.faceTabButtons[i] if (r.currentTabIndex == i) { if (!s.classList.contains("is-active")) s.classList.add("is-active") if (!a.classList.contains("is-active")) a.classList.add("is-active") n.setAttribute("title", "selected") l.offAccessibility(a) } else { if (s.classList.contains("is-active")) s.classList.remove("is-active") if (a.classList.contains("is-active")) a.classList.remove("is-active") n.removeAttribute("title") l.onAccessibility(a) } } } }, })) })(), (function () { var t, e, i, s, a, n, o ;(window.watch5pro = window.watch5pro || {}), (window.watch5pro.fitness = window.watch5pro.fitness || {}), (watch5pro.fitness = ((t = {}), window.watch5pro.common.utils, (e = !1), (i = null), (s = function () { a(), window.removeEventListener("load", s) }), (a = function () { ;(e = 1024 <= window.innerWidth ? "desktop" : 768 <= window.innerWidth && window.innerWidth < 1024 ? "tablet" : "mobile"), clearTimeout(t.resizeTimeout), (t.resizeTimeout = setTimeout(function () {}, 100)), e != i && (n(), (i = e)) }), (n = function () { null != t.scroller && (t.scroller.destroy(!0), (t.scroller = null)) null == t.scroller && (t.scroller = SCROLLER({ trackElement: t.imageWrap, useFixed: !1, })) }), (o = function () { null != t.scroller && t.scroller.trackAnimation(function () { var e = ANIUTIL.calRange({ targetValue: 20, progress: this.progress, startPoint: 0, endPoint: 100, }) TweenMax.to(t.imageInner, 0.3, { y: 10 - e + "%" }) }) }), { init: function () { ;(t.section = document.querySelector(".sc-watch-fitness")), t.section && ((t.scroller = null), (t.imageWrap = t.section.querySelector( ".sc-watch-fitness__image-wrap" )), (t.imageInner = t.imageWrap.querySelector( ".sc-watch-fitness__image-item02 .sc-watch-fitness__image-inner" )), window.addEventListener("load", s), window.addEventListener("resize", a), window.addEventListener("scroll", o)) }, })) })(), (function () { var e ;(window.watch5pro = window.watch5pro || {}), (window.watch5pro.kv = window.watch5pro.kv || {}), (watch5pro.kv = ((e = {}), { init: function () { if ( ((e.section = document.querySelector(".sc-watch-kv")), e.section) ) if ( (e.section.classList.remove("is-use-buy"), e.section.classList.remove("is-use-regist"), e.section.classList.remove("is-use-order"), e.section.classList.remove("is-use-where"), e.section.classList.remove("is-use-off"), "undefined" != typeof __WATCH_USE_KV_CTA && null != __WATCH_USE_KV_CTA && null != __WATCH_USE_KV_CTA && "" != __WATCH_USE_KV_CTA) ) "buy-now" == __WATCH_USE_KV_CTA ? e.section.classList.add("is-use-buy") : "pre-order" == __WATCH_USE_KV_CTA ? e.section.classList.add("is-use-order") : "pre-registration" == __WATCH_USE_KV_CTA ? e.section.classList.add("is-use-regist") : "where-to-buy" == __WATCH_USE_KV_CTA ? e.section.classList.add("is-use-where") : "where-to-buy" == __WATCH_USE_KV_CTA && e.section.classList.add("is-use-off") else e.section.classList.add("is-use-buy") }, })) })(), (function () { var t, e, i, s, a, n, o ;(window.watch5pro = window.watch5pro || {}), (window.watch5pro.monitoring = window.watch5pro.monitoring || {}), (watch5pro.monitoring = ((t = {}), window.watch5pro.common.utils, (e = !1), (i = null), (s = function () { a(), o(), window.removeEventListener("load", s) }), (a = function () { ;(e = 1024 <= window.innerWidth ? "desktop" : 768 <= window.innerWidth && window.innerWidth < 1024 ? "tablet" : "mobile"), clearTimeout(t.resizeTimeout), (t.resizeTimeout = setTimeout(function () { o() }, 100)), e != i && (n(), (i = e)) }), (n = function () { null != t.scroller && (t.scroller.destroy(!0), (t.scroller = null)) null == t.scroller && (t.scroller = SCROLLER({ trackElement: t.bottomContent, useFixed: !1, })) }), (o = function () { null != t.scroller && t.scroller.trackAnimation(function () { var e = ANIUTIL.calRange({ targetValue: 20, progress: this.progress, startPoint: 0, endPoint: 100, }) TweenMax.to(t.monitoringImage, 0.3, { y: 10 - e + "%" }) }) }), { init: function () { ;(t.section = document.querySelector(".sc-watch-monitoring")), t.section && ((t.scroller = null), (t.bottomContent = t.section.querySelector( ".sc-watch-monitoring__content-bottom" )), (t.monitoringImage = t.bottomContent.querySelector( ".sc-watch-monitoring__visual-image" )), window.addEventListener("load", s), window.addEventListener("resize", a), window.addEventListener("scroll", o)) }, })) })(), (function () { var e, t, i, s, a, n, o, r ;(window.watch5pro = window.watch5pro || {}), (window.watch5pro.overview = window.watch5pro.overview || {}), (watch5pro.overview = ((e = {}), (t = window.watch5pro.common.utils), (i = !1), (s = null), (a = function () { n(), r(), window.removeEventListener("load", a) }), (n = function () { ;(i = 1024 <= window.innerWidth ? "desktop" : 768 <= window.innerWidth && window.innerWidth < 1024 ? "tablet" : "mobile"), clearTimeout(e.resizeTimeout), (e.resizeTimeout = setTimeout(function () {}, 100)), r(), i != s && (o(), (s = i)) }), (o = function () {}), (r = function () { var s = window.pageYOffset, a = s + t.getNavHeight() + (window.innerHeight - t.getNavHeight()) / 2 e.overviewItems.forEach(function (e) { var t = e.getBoundingClientRect(), i = s + t.top, t = s + t.bottom i <= a && a <= t ? e.classList.contains("is-active") || e.classList.add("is-active") : e.classList.contains("is-active") && e.classList.remove("is-active") }) }), { init: function () { ;(e.section = document.querySelector(".sc-watch-overview")), e.section && ((e.overviewList = e.section.querySelector( ".sc-watch-overview__list" )), (e.overviewItems = t.convertArray( e.overviewList.querySelectorAll( ".sc-watch-overview__item" ) )), window.addEventListener("load", a), window.addEventListener("resize", n), window.addEventListener("scroll", r)) }, })) })(), (function () { function e() { null == n.scroller && (n.scroller = SCROLLER({ trackElement: n.trackElement, fixedElement: n.fixedElement, useFixed: !(o.isIEorEdge < 0), useSticky: o.isIEorEdge < 0, useStrictMode: !1, trackHeight: 2, resize: !o.isTouchDevice, })) } function t() { null != n.scroller && (n.scroller.destroy(!0), (n.scroller = null)) } function i() { null == n.brokenScroller && (n.brokenScroller = SCROLLER({ trackElement: n.sleepObj, activeElement: n.sleepObj, correction: 0.3, activeCallback: function () { ;(n.brokenTimeout = setTimeout(function () { n.sleepObj.classList.add("step1") }, 200)), (n.brokenTimeout = setTimeout(function () { n.sleepObj.classList.add("step2") }, 1200)), (n.brokenTimeout = setTimeout(function () { n.sleepObj.classList.add("step3") }, 2200)) }, endCallback: function () { clearTimeout(n.brokenTimeout), n.sleepObj.classList.remove("step1"), n.sleepObj.classList.remove("step2"), n.sleepObj.classList.remove("step3") }, })) } function s() { null != n.brokenScroller && (n.brokenScroller.destroy(!0), (n.brokenScroller = null)) } function a() { ;(n.sleepMoon.style.transform = ""), (n.sleepMoon.style.opacity = ""), (n.sleepDisplayMain.style.opacity = ""), (n.sleepDisplay1.style.opacity = ""), (n.sleepDisplay2.style.opacity = ""), (n.sleepDisplay3.style.opacity = "") } var n, o, r, l, c, d, h, u, p ;(window.watch5pro = window.watch5pro || {}), (window.watch5pro.sleep = window.watch5pro.sleep || {}), (watch5pro.sleep = ((n = {}), (o = window.watch5pro.common.utils), (r = !1), (l = null), (c = function () { d(), p(), window.removeEventListener("load", c) }), (d = function () { ;(r = 1024 <= window.innerWidth ? "desktop" : 768 <= window.innerWidth && window.innerWidth < 1024 ? "tablet" : "mobile"), clearTimeout(n.resizeTimeout), (n.resizeTimeout = setTimeout(function () {}, 100)), r != l && (h(), (l = r)) }), (h = function () { t(), s(), a(), (o.isBrokenFixed() ? i : e)() }), (u = function () { setTimeout(function () { t(), s(), a(), (o.isBrokenFixed() ? i : e)() }, 150) }), (p = function () { null != n.scroller && n.scroller.trackAnimation(function () { var e = ANIUTIL.calRange({ targetValue: 1, progress: this.progress, startPoint: 0, endPoint: 30, }), e = (TweenMax.to(n.sleepMoon, 0.1, { x: 0, y: -e * ("mobile" != r ? 51.1 : 52.5) + "%", scale: 1 - e * ("mobile" != r ? 0.968 : 0.931), }), this.progress <= 35 ? (n.sleepMoon.style.opacity = e) : (n.sleepMoon.style.opacity = 0), ANIUTIL.calRange({ targetValue: 1, progress: this.progress, startPoint: 25, endPoint: 35, })), e = (TweenMax.to(n.sleepDisplay1, 0.1, { opacity: e }), ANIUTIL.calRange({ targetValue: 1, progress: this.progress, startPoint: 30, endPoint: 40, })), e = (TweenMax.to(n.sleepDisplayMain, 0.1, { opacity: e }), ANIUTIL.calRange({ targetValue: 1, progress: this.progress, startPoint: 50, endPoint: 60, })), e = (TweenMax.to(n.sleepDisplay2, 0.1, { opacity: e }), ANIUTIL.calRange({ targetValue: 1, progress: this.progress, startPoint: 70, endPoint: 80, })) TweenMax.to(n.sleepDisplay3, 0.1, { opacity: e }) }), null != n.brokenScroller && n.brokenScroller.activeAnimation() }), { init: function () { ;(n.section = document.querySelector(".sc-watch-sleep")), n.section && ((n.resizeTimeout = null), (n.scroller = null), (n.brokenTimeout = null), (n.brokenScroller = null), (n.trackElement = n.section.querySelector( ".sc-watch-sleep__track" )), (n.fixedElement = n.section.querySelector( ".sc-watch-sleep__fixed" )), (n.sleepObj = n.section.querySelector( ".sc-watch-sleep__obj" )), (n.sleepMoon = n.sleepObj.querySelector( ".sc-watch-sleep__obj-moon" )), (n.sleepDisplayMain = n.sleepObj.querySelector( ".sc-watch-sleep__obj-watches-main" )), (n.sleepDisplay1 = n.sleepObj.querySelector( ".sc-watch-sleep__obj-watches-display--1" )), (n.sleepDisplay2 = n.sleepObj.querySelector( ".sc-watch-sleep__obj-watches-display--2" )), (n.sleepDisplay3 = n.sleepObj.querySelector( ".sc-watch-sleep__obj-watches-display--3" )), window.addEventListener("load", c), window.addEventListener("resize", d), window.addEventListener("scroll", p), window.addEventListener("orientationchange", u)) }, })) })(), (function () { var i, s, e, t, a, n, o ;(window.watch5pro = window.watch5pro || {}), (window.watch5pro.tracking = window.watch5pro.tracking || {}), (watch5pro.tracking = ((i = {}), window.watch5pro.common.utils, (s = !1), (e = null), (t = function () { a(), window.removeEventListener("load", t) }), (a = function () { ;(s = 1024 <= window.innerWidth ? "desktop" : 768 <= window.innerWidth && window.innerWidth < 1024 ? "tablet" : "mobile"), clearTimeout(i.resizeTimeout), (i.resizeTimeout = setTimeout(function () {}, 100)), s != e && (n(), (e = s)) }), (n = function () { ;(i.trackingImage.style.transform = ""), null != i.scroller && (i.scroller.destroy(!0), (i.scroller = null)) null == i.scroller && (i.scroller = SCROLLER({ trackElement: i.topContent, useStrictMode: !1, useFixed: !1, })) }), (o = function () { null != i.scroller && i.scroller.trackAnimation(function () { var e, t "mobile" != s ? ((e = ANIUTIL.calRange({ targetValue: 10, progress: this.progress, startPoint: 0, endPoint: 80, })), (t = ANIUTIL.calRange({ targetValue: 0.5, progress: this.progress, startPoint: 20, endPoint: 50, })), TweenMax.to(i.trackingImage, 0.3, { y: -35 - e + "%" }), TweenMax.to(i.trackingVisual, 0.2, { y: 20 - 2 * e + "%", })) : ((e = ANIUTIL.calRange({ targetValue: 55, progress: this.progress, startPoint: 15, endPoint: 40, })), (t = ANIUTIL.calRange({ targetValue: 0.5, progress: this.progress, startPoint: 15, endPoint: 40, })), TweenMax.to(i.trackingVisual, 0.2, { y: 60 - e + "%" })), TweenMax.to(i.trackingDimmed, 0.8, { opacity: 0.8 - t }) }) }), { init: function () { ;(i.section = document.querySelector(".sc-watch-tracking")), i.section && ((i.scroller = null), (i.topContent = i.section.querySelector( ".sc-watch-tracking__content--top" )), (i.trackingVisual = i.topContent.querySelector( ".sc-watch-tracking__visual" )), (i.trackingDimmed = i.topContent.querySelector( ".sc-watch-tracking__visual-dimmed" )), (i.trackingImage = i.topContent.querySelector( ".sc-watch-tracking__visual-item img" )), window.addEventListener("load", t), window.addEventListener("resize", a), window.addEventListener("scroll", o)) }, })) })(), window.addEventListener("load", function () { setTimeout(function () { window.GALAXY && window.GALAXY.isGalaxy && watch5pro.subnav.init() }, 5) }), watch5pro.kv.init(), watch5pro.overview.init(), watch5pro.exploration.init(), watch5pro.tracking.init(), watch5pro.battery.init(), watch5pro.monitoring.init(), watch5pro.fitness.init(), watch5pro.sleep.init(), watch5pro.durability.init(), watch5pro.bespoke.init(), watch5pro.face.init(), watch5pro.compare.init(), watch5pro.ecosystem.init(), watch5pro.contrast.init() }) ;(function () { window.wearable = window.wearable || {} window.wearable.quote = window.wearable.quote || {} wearable.quote = (function () { var self = {} var currDevice = false, prevDevice = null var onAccessibility = function (el) { el.setAttribute("aria-hidden", true) el.setAttribute("tabindex", -1) var clickable = el.querySelectorAll("a, button, input, select, iframe") for (var i = 0; i < clickable.length; i++) { clickable[i].setAttribute("tabindex", -1) clickable[i].setAttribute("aria-hidden", true) } } var offAccessibility = function (el) { el.removeAttribute("aria-hidden") el.removeAttribute("tabindex") var clickable = el.querySelectorAll("a, button, input, select, iframe") for (var i = 0; i < clickable.length; i++) { clickable[i].removeAttribute("tabindex") clickable[i].removeAttribute("aria-hidden") } } var init = function () { self.section = document.querySelector(".sc-wearable-media-quote") if (!!self.section) { setElements() bindEvents() } } var setElements = function () { self.swiper = null self.slidesPerView = 3 self.itemArray = [] self.quoteWrap = self.section.querySelector( ".sc-wearable-media-quote__wrap" ) self.quoteContainer = self.section.querySelector( ".sc-wearable-media-quote__container" ) self.quoteList = self.section.querySelector( ".sc-wearable-media-quote__list" ) self.quoteListItems = self.quoteList.querySelectorAll( ".sc-wearable-media-quote__list-item" ) self.prevArrow = self.section.querySelector( ".sc-wearable-media-quote__arrow-prev" ) self.nextArrow = self.section.querySelector( ".sc-wearable-media-quote__arrow-next" ) self.quotePagination = self.section.querySelector( ".sc-wearable-media-quote__pagination" ) self.paginationTagging = { "data-omni-type": "microsite_pcontentinter", "data-omni": "galaxy-watch5-pro:highlights:media-quote:dot:", "ga-ca": "indication", "ga-ac": "carousel", "ga-la": "galaxy-watch5-pro:highlights:media-quote:dot:", } for (var i = 0; i < self.quoteListItems.length; i++) { self.itemArray.push(self.quoteListItems[i]) self.quoteList.removeChild(self.quoteListItems[i]) } } var bindEvents = function () { window.addEventListener("load", onLoadHandler) window.addEventListener("resize", onResizeHandler) } var onLoadHandler = function () { onResizeHandler() window.removeEventListener("load", onLoadHandler) } var onResizeHandler = function () { if (window.innerWidth >= 1024) currDevice = "desktop" else if (window.innerWidth >= 768 && window.innerWidth < 1024) currDevice = "tablet" else currDevice = "mobile" if (currDevice == "mobile") self.slidesPerView = 2 else self.slidesPerView = 4 if (currDevice != prevDevice) { onResponsiveChange() prevDevice = currDevice } } var onResponsiveChange = function () { destroySwiper() setSwiper() } var setSwiper = function () { self.quoteWrap.classList.remove("js-swiper-initialized") if ( self.swiper === null && self.itemArray.length > self.slidesPerView ) { setSwiperSlides() self.quoteWrap.classList.add("js-swiper-initialized") self.swiper = new Swiper(self.quoteContainer, { init: false, slidesPerView: 1, loop: true, loopFillGroupWithBlank: true, navigation: { nextEl: self.nextArrow, prevEl: self.prevArrow, }, pagination: { el: self.quotePagination, type: "bullets", renderBullet: function () { return '
' }, }, }) self.swiper.on("slideChange", function () { setSlidesAccessibility.call(this) setPaginationLabel.call(this) imageLoader.setResponsiveImage([ self.prevArrow.querySelector("img"), self.nextArrow.querySelector("img"), ]) }) self.swiper.on("init", function () { var _this = this var notification = this.el.querySelector(".swiper-notification") if (!!notification) this.el.removeChild(notification) setSlidesAccessibility.call(this) setPaginationTagging.call(this) setPaginationLabel.call(this) for (var i = 0; i < this.pagination.bullets.length; i++) { ;(function (idx) { _this.pagination.bullets[i].addEventListener( "click", function () { _this.slideToLoop(idx) } ) })(i) } }) self.swiper.init() } else { setListItems() } } var setSwiperSlides = function () { self.quoteList.innerHTML = "" var count = 0 var totalSlideArr = [] var partialSlideArr = [] for (var i = 0; i < self.itemArray.length; i++) { count++ partialSlideArr.push(self.itemArray[i]) if (count >= self.slidesPerView) { totalSlideArr.push(partialSlideArr) partialSlideArr = [] count = 0 } else if (i == self.itemArray.length - 1) { totalSlideArr.push(partialSlideArr) } } var totalHtml = [] for (var i = 0; i < totalSlideArr.length; i++) { totalHtml.push('
') for (var j = 0; j < totalSlideArr[i].length; j++) { totalHtml.push(totalSlideArr[i][j].outerHTML) } totalHtml.push("
") } self.quoteList.innerHTML = totalHtml.join("") } var setListItems = function () { self.quoteList.innerHTML = "" var totalHtml = [] for (var i = 0; i < self.itemArray.length; i++) { self.itemArray[i].setAttribute("role", "listitem") totalHtml.push(self.itemArray[i].outerHTML) self.itemArray[i].removeAttribute("role") } self.quoteList.innerHTML = totalHtml.join("") } var destroySwiper = function () { if (self.swiper != null) { self.swiper.pagination.destroy(true) self.swiper.navigation.destroy(true) self.swiper.destroy(true) self.swiper = null } } var setPaginationTagging = function () { var bullets = Array.prototype.slice.call(this.pagination.bullets) bullets.forEach(function (ele, idx) { Object.keys(self.paginationTagging).forEach(function (key) { if (key == "data-omni" || key == "ga-la") { ele.setAttribute(key, self.paginationTagging[key] + (idx + 1)) } else { ele.setAttribute(key, self.paginationTagging[key]) } }) }) } var setPaginationLabel = function () { var _this = this var slides = Array.prototype.slice.call(this.slides) var bullets = Array.prototype.slice.call(this.pagination.bullets) bullets.forEach(function (bullet, bulletIndex) { var authorArr = [] var authorEles = slides[bulletIndex + 1].querySelectorAll( ".sc-wearable-media-quote__media" ) authorEles = Array.prototype.slice.call(authorEles) authorEles.forEach(function (author) { authorArr.push(author.innerText) }) if (_this.realIndex == bulletIndex) { bullet.setAttribute( "aria-label", authorArr.join(", ") + " Selected" ) } else { bullet.setAttribute("aria-label", authorArr.join(", ")) } }) } var setSlidesAccessibility = function () { for (var i = 0; i < this.slides.length; i++) { if (i != this.snapIndex) { onAccessibility(this.slides[i]) } else { offAccessibility(this.slides[i]) } } } return { init: init, } })() wearable.quote.init() })() const overLayVideoplacement = (id, youtubeLink, title) => { document.getElementById(id).onclick = (e) => { e.preventDefault() var video = $(this).data("video") var overlay = $( '
' ) var iframe = $(`
Movie player Layer
`) overlay.append(iframe).appendTo("body").show().fadeIn("slow") document.querySelector(".c_btn_close-type1").onclick = () => { document.getElementById("layer-youtube").remove() } } } overLayVideoplacement( "custom-sc-tab-reviews__video", "https://www.youtube.com/embed/_KVs7DGTdto", "Galaxy Watch5 & Watch5 Pro: Expert Review Highlights | Samsung" ) overLayVideoplacement( "custom-sc-tab-reviews__video_duo", "https://www.youtube.com/embed/oIFMNNRPWAo", "How to use a GPX file for Route workout | Samsung" )