New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (2023)

Galaxy Watch5 Pro

Get a guaranteed £100 off when you trade in any smartwatch

BUY NOW

PRE-ORDER

PRE-REGISTRATION

New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (1)

*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.

Hear what the experts have to say

New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (2)

New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (3)

Galaxy Watch5 Pro: Export Review Highlights video

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.

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (4)

    • 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

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (5)

    ROUTE WORKOUT

    Turn by turn
    track your burn

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (6)

    The all-new Route Workout feature lets you import GPX format workout routes from your smartphone to your watch, syncing your route list. 1

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (7)

    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.

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (8)

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (9)

    How to use a GPX file for Route workout

    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

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (10)

    590 mAh (typical) Battery

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (11)

    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

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (12)

    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

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (13)

    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

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (14)

    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

    (Video) Galaxy Watch 5 Pro | Sports Watch | Samsung UK

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (15)

    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

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (16)

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (17)

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (18)

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (19)

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (20)

    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

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (21)

    DURABILITY

    Stronger than your toughest workout

    Sapphire Crystal

    Titanium case

    Water-resistant

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (22)

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (23)

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (24)

    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.

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (25)

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (26)

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (27)

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (28)

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (29)

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (30)

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (31)

    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

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (32)

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (33)

    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

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (34)

    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.

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (35)

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (36)

    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

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (37)

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (38)

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (39)

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (40)

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (41)

    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.

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (42)

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (43)

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (44)

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (45)

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (46)

    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

      New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (47)

      (Video) Samsung Galaxy Watch 5 PRO Review - Must Watch before you buy? - NEW Champion Crowned?

      New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (48)

      New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (49)

      New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (50)

      New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (51)

      New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (52)

      Size

      44mm | 40mm

      Weight

      33.5g | 28.7g

      Display

      Sapphire crystal

      Material

      Armor Aluminum

      Battery(typical) 4, 5

      410mAh | 284mAh

      Sleep tracking

      New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (53)

      Body Composition

      New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (54)

      Route workout / Track back

      New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (55)

      Durability

      5ATM+IP68/MIL-STD-810H

      Fast charge 13

      New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (56)

    • Galaxy Watch5 Pro

      New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (57)

      New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (58)

      Size

      45mm

      Weight

      46.5g

      Display

      Sapphire crystal

      Material

      Titanium

      Battery(typical) 4, 5

      590mAh

      Sleep tracking

      New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (59)

      Body Composition

      New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (60)

      Route workout / Track back

      New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (61)

      Durability

      5ATM+IP68/MIL-STD-810H

      Fast charge 13

      New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (62)

    • Galaxy Watch4

      New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (63)

      New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (64)

      New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (65)

      New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (66)

      New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (67)

      New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (68)

      Size

      44mm | 40mm

      Weight

      30.3g | 25.9g

      Display

      Corning® Gorilla® Glass with DX+

      Material

      Armor Aluminum

      Battery(typical) 4

      361mAh | 247mAh

      Sleep tracking

      New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (69)

      Body Composition

      New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (70)

      Route workout / Track back

      New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (71)

      Durability

      5ATM+IP68/MIL-STD-810H

      Fast charge

      (Video) Samsung Galaxy Watch5 Pro Review for Sports and Fitness // Is it “Pro?”

      New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (72)

    • Galaxy Watch4 Classic

      New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (73)

      New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (74)

      New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (75)

      New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (76)

      Size

      46mm | 42mm

      Weight

      52.0g | 46.5g

      Display

      Corning® Gorilla® Glass with DX+

      Material

      Stainless Steel

      Battery(typical) 4

      361mAh | 247mAh

      Sleep tracking

      New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (77)

      Body Composition

      New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (78)

      Route workout / Track back

      New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (79)

      Durability

      5ATM+IP68/MIL-STD-810H

      Fast charge

      New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (80)

    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

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (81)

    Sleep tracking

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (82)

    Sleep tracking

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (83)

    Sleep tracking

    (Video) Do This First! Galaxy Watch 5 Pro: First 15+ Things To Do

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (84)

    Body Composition

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (85)

    Body Composition

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (86)

    Body Composition

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (87)

    Body Composition

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (88)

    Route workout / Track back

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (89)

    Route workout / Track back

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (90)

    Route workout / Track back

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (91)

    Route workout / Track back

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (92)

    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

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (93)

    Fast charge 13

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (94)

    Fast charge

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (95)

    Fast charge

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (96)

    ECOSYSTEM

    The connected power of Samsung Galaxy

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (97)

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (98)

    Galaxy Z Flip4

    LEARN MORE

    BUY NOW

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (99)

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (100)

    Galaxy Z Fold4

    LEARN MORE

    BUY NOW

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (101)

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (102)

    Galaxy Watch5

    LEARN MORE

    BUY NOW

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (103)

    New Galaxy Watch 5 Pro Smartwatch | Specs | Samsung UK (104)

    Galaxy Buds2 Pro

    BUY NOW

    C C

    1. Provided when GPX format route file is imported for hiking and cycling and route is set as target under Samsung Health settings.
    2. Compared to Galaxy Watch4 based on Vickers hardness measured with constant load of 200fg.
    3. Track Back feature must be requires to be enabled during every hiking or cycling workout under Samsung Health settings.
    4. Actual battery life varies by network environment, features and applications used, frequency of calls and messages, number of times charged, and many other factors.
    5. 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.
    6. 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.
    7. 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).
    8. Requires Samsung Health application version 6.22.1 or later. Requires Samsung Galaxy Phone with Android 8.0 and a minimum 1.5GB RAM.
    9. 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.
    10. 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.
    11. Compatible with Galaxy Watch with Wear OS powered by Samsung.
    12. Availability of settings backup and restore options may vary based on installed applications.
    13. 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.
    14. 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

    (Video) Top 12 BEST Galaxy Watch 5 Pro & Galaxy Watch 5 Faces! - Watch Face Wars EP4!

    `) 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" )

  • Videos

    1. Samsung Galaxy Watch 5 Pro Review | Stellar battery life?
    (Tech Spurt)
    2. Galaxy Watch 5 PRO - Tips Tricks & Hidden Features!!!
    (Hayls World)
    3. Samsung Galaxy Watch 5/5 Pro Golf Edition Unboxing
    (Tekno Talks)
    4. Get ECG and Blood Pressure on Galaxy Watch 5 and Galaxy Watch 5 Pro [No PC - Easy Method]
    (SMARTWATCH SERIES)
    5. Samsung Watch5 Pro: The Early Review!
    (DC Rainmaker)
    6. Samsung Galaxy Watch 5 Pro - First 15 Things To Do!
    (WhatGear)
    Top Articles
    Latest Posts
    Article information

    Author: Stevie Stamm

    Last Updated: 06/21/2023

    Views: 6335

    Rating: 5 / 5 (80 voted)

    Reviews: 87% of readers found this page helpful

    Author information

    Name: Stevie Stamm

    Birthday: 1996-06-22

    Address: Apt. 419 4200 Sipes Estate, East Delmerview, WY 05617

    Phone: +342332224300

    Job: Future Advertising Analyst

    Hobby: Leather crafting, Puzzles, Leather crafting, scrapbook, Urban exploration, Cabaret, Skateboarding

    Introduction: My name is Stevie Stamm, I am a colorful, sparkling, splendid, vast, open, hilarious, tender person who loves writing and wants to share my knowledge and understanding with you.